Project

General

Profile

Actions

Bug #1104

closed

lttng-sessiond's new notification subsystem uses eventfd() which is only available since Linux 2.6.22

Added by Jérémie Galarneau over 7 years ago. Updated almost 5 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Target version:
Start date:
05/11/2017
Due date:
% Done:

0%

Estimated time:

Description

lttng-sessiond's new notification subsystem uses eventfd() which is only available since Linux 2.6.22. A pipe-based (or better idea?) compatibility layer should be put in place to accommodate older, supported, kernels.

Actions #1

Updated by Jonathan Rajotte Julien over 7 years ago

Per the README.md file the needed version for the Linux kernel is >= 2.6.27 for epoll support, otherwise older kernel are not supported. Does using eventfd really a problem considering that we don't offer support for older kernel older 2.6.27?

Still, we have a problem related to the flag passed to eventfd.

handle->cmd_queue.event_fd = eventfd(0, EFD_CLOEXEC | EFD_SEMAPHORE);

From man eventfd:

 EFD_CLOEXEC (since Linux 2.6.27)
        Set the close-on-exec (FD_CLOEXEC) flag on the new file descrip‐
        tor.  See the description of the O_CLOEXEC flag in  open(2)  for
        reasons why this may be useful.

 EFD_NONBLOCK (since Linux 2.6.27)
        Set  the  O_NONBLOCK  file  status  flag  on  the  new open file
        description.  Using this flag saves extra calls to  fcntl(2)  to
        achieve the same result.

 EFD_SEMAPHORE (since Linux 2.6.30)
        Provide  semaphore-like  semantics  for  reads from the new file
        descriptor.  See below.

The use of EFD_SEMAPHORE seems to be more problematic here.

What do you think?

Actions #2

Updated by Jérémie Galarneau almost 5 years ago

  • Status changed from New to Resolved
Actions

Also available in: Atom PDF