systemd/src
David Herrmann b63c8d4f03 sd-event: always call epoll_ctl() on mask-updates if edge-triggered
A call to sd_event_source_set_io_events() skipps calling into the kernel
if the new event-mask matches the old one. This is safe for
level-triggered sources as the kernel moves them onto the ready-list
automatically if events change. However, edge-triggered sources might not
be on the ready-list even though events are present.

A call to sd_event_source_set_io_events() with EPOLLET set might thus be
used to just move the io-source onto the ready-list so the next poll
will return it again. This is very useful to avoid starvation in
priority-based event queues.

Imagine a read() loop on an edge-triggered fd. If we cannot read data fast
enough to drain the receive queue, we might decide to skip reading for now
and schedule it for later. On edge-triggered io-sources we have to make
sure it's put on the ready-list so the next dispatch-round will return it
again if it's still the highest priority task. We could make sd-event
handle edge-triggered sources directly and allow marking them ready again.
However, it's much simpler to let the kernel do that for now via
EPOLL_CTL_MOD.
2014-07-11 16:43:53 +02:00
..
ac-power unit: add ConditionACPower= 2012-12-31 21:24:26 +01:00
activate activate: export make_socket_fd 2014-03-17 01:55:48 -04:00
analyze analyze/run: use bus_open_transport_systemd instead of bus_open_transport 2014-05-26 14:21:53 -04:00
ask-password Add more password agent information 2014-04-24 09:23:54 +02:00
backlight backlight: Do not clamp brightness for LEDs 2014-06-10 18:57:48 +02:00
binfmt shared: add root argument to search_and_fopen 2014-03-14 09:31:34 -04:00
boot make gcc shut up 2014-02-19 17:53:50 +01:00
bootchart bootchart: add assert 2014-06-19 00:18:05 +02:00
bus-proxyd sd-bus: support connecting to remote hosts, directly into containers 2014-07-03 01:17:26 +02:00
cgls consistently order cleanup attribute before type 2014-06-22 00:45:15 +02:00
cgroups-agent cgroups-agent: down-grade log level 2013-11-25 17:40:53 +01:00
cgtop make gcc shut up 2014-02-19 17:53:50 +01:00
compat-libs build-sys: build compat libs from sources, avoiding the not generally available ifunc wrapping 2014-02-22 21:28:55 +01:00
core load-fragment: ConditionFirstBoot wants a bool string, not a path 2014-07-08 17:22:34 +02:00
cryptsetup cryptsetup: allow x-systemd.device-timeout 2014-06-30 18:41:17 -04:00
dbus1-generator Remove unnecessary casts in printfs 2014-05-15 15:29:58 +02:00
debug-generator debug-generator: add new kernel cmdline option systemd.wants= to add units to the initial transaction 2014-06-20 13:36:28 +02:00
delta delta: draw arrows with draw_special_char() 2014-04-23 19:06:39 +02:00
detect-virt virt: make Virtualization an anonymous enum 2014-02-24 13:26:44 +01:00
efi-boot-generator efi-boot-generator: typo fix 2014-03-07 02:40:24 +01:00
escape escape: beef up new systemd-escape tool 2014-07-07 22:23:42 +02:00
firstboot firstboot: get rid of firstboot generator again, introduce ConditionFirstBoot= instead 2014-07-07 21:05:09 +02:00
fsck fsck: consider a fsck implementation linked to /bin/true non-existant 2014-06-25 10:04:36 +02:00
fstab-generator fstab-generator: fix trivial leak 2014-07-07 18:36:55 -04:00
getty-generator getty-generator: properly escape instance names 2014-06-19 22:04:29 -04:00
gpt-auto-generator stop complaining about unknown kernel cmdline options 2014-06-19 16:55:20 +02:00
gudev gudev: replace regex with sym file 2014-06-21 16:25:15 +02:00
hostname hostnamed: introduce new location machin-info field, too 2014-07-11 15:50:32 +02:00
initctl core: make sure PrivateDevices= makes /dev/log available 2014-06-04 16:59:13 +02:00
journal Fix build without any compression enabled 2014-07-11 10:42:27 -04:00
kernel-install build-sys: add missing Makefile link 2014-06-16 12:33:23 +02:00
libsystemd sd-event: always call epoll_ctl() on mask-updates if edge-triggered 2014-07-11 16:43:53 +02:00
libsystemd-network dhcp-network: make clear that we are ANDing Fragment offset field with mask 2014-07-07 15:59:13 +02:00
libudev libudev: queue - watch entire directory to allow the re-use of the watch descriptor 2014-06-27 19:56:31 +02:00
locale shared: make timezone and locale enumeration and validation generic 2014-07-07 15:25:55 +02:00
login logind: allow switching to unused VTs via SwitchTo() 2014-07-08 12:56:55 +02:00
machine machinectl: show network interface name for containers 2014-07-10 23:12:32 +02:00
machine-id-setup machine-id-setup: use path_kill_slashes and modernizations 2014-03-14 09:31:34 -04:00
modules-load shared: add root argument to search_and_fopen 2014-03-14 09:31:34 -04:00
network networkd: always prefer dhcp routes over ipv4ll routes 2014-07-10 21:32:44 +02:00
notify sd-daemon: introduce sd_pid_notify() and sd_pid_notifyf() 2014-06-05 17:05:18 +02:00
nspawn nspawn: register external network interface with machined 2014-07-10 22:48:30 +02:00
nss-myhostname nss-myhostname: simplify array building a bit 2014-07-11 15:35:22 +02:00
nss-mymachines nss-mymachines: add new NSS module for automatically resolving addresses of all local containers 2014-07-11 03:15:21 +02:00
path path: add new "systemd-path" utility for querying paths described in file-hierarchy(7) 2014-07-02 12:23:36 +02:00
python-systemd systemd-python: fix failing assert 2014-04-05 13:30:08 -04:00
quotacheck stop complaining about unknown kernel cmdline options 2014-06-19 16:55:20 +02:00
random-seed random-seed: improve debugging messages a bit 2013-11-15 22:53:14 -05:00
rc-local-generator rc-local: use access(X_OK) to check if files are executable 2013-10-29 19:34:59 +01:00
readahead readahead: avoid gcc warning about format 2014-06-22 15:30:19 -04:00
remount-fs Introduce _cleanup_endmntent_ 2013-10-03 22:13:55 -04:00
reply-password util: replace close_nointr_nofail() by a more useful safe_close() 2014-03-18 19:31:34 +01:00
resolve shared: split out in_addr related calls from socket-util.[ch] into its private in-addr-util.[ch] 2014-07-10 21:15:26 +02:00
rfkill rfkill: Avoid error when state restore is disabled 2013-12-06 16:44:38 +01:00
run analyze/run: use bus_open_transport_systemd instead of bus_open_transport 2014-05-26 14:21:53 -04:00
shared shared: fix coding-style for ring-buffer implementation 2014-07-11 16:43:53 +02:00
shutdownd Remove unnecessary casts in printfs 2014-05-15 15:29:58 +02:00
sleep firstboot: get rid of firstboot generator again, introduce ConditionFirstBoot= instead 2014-07-07 21:05:09 +02:00
socket-proxy fix warnings 2014-06-06 23:31:25 +02:00
sysctl sysctl: replaces some slashes with dots 2014-04-16 21:52:36 -04:00
system-update-generator system-update-generator: modernizations 2014-06-13 13:26:32 +02:00
systemctl systemctl: fix visual alignment for lines prefixed with color dots 2014-07-08 17:22:34 +02:00
systemd nss-mymachines: add new NSS module for automatically resolving addresses of all local containers 2014-07-11 03:15:21 +02:00
sysusers sysusers: allow overrides in /etc and /run 2014-07-10 22:51:41 -04:00
sysv-generator sysv-generator: fix incorect ordering of Wants 2014-06-26 00:37:26 +02:00
test shared: fix coding-style for ring-buffer implementation 2014-07-11 16:43:53 +02:00
timedate timedated: manage systemd-timesyncd directly instead of lists of alternatives 2014-07-09 17:04:11 +02:00
timesync resolved: make use of union in_addr_union in resolved, too 2014-07-07 23:11:48 +02:00
tmpfiles tmpfiles: copy/link /usr/share/factory/ files when the source argument is omitted 2014-06-20 15:57:43 +02:00
tty-ask-password-agent tty-ask-password-agent: Do tell what directory we failed to open 2014-06-01 08:06:16 +02:00
udev accelerometer: Don't wait for new data from the sensor 2014-07-08 18:36:53 +02:00
update-done update-done: add minimal tool to manage system updates for /etc and /var, if /usr has changed 2014-06-13 13:26:32 +02:00
update-utmp Remove unnecessary casts in printfs 2014-05-15 15:29:58 +02:00
vconsole vconsole-setup: fix inverted error messages 2014-07-07 08:55:58 -04:00
.gitignore Add test coverage and generate report with lcov 2013-07-13 21:56:33 -04:00
Makefile