summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-event/sd-event.c
AgeCommit message (Collapse)Author
2014-08-14sd-event: drop _likely_()Tom Gundersen
This is not certain to be likely. Lennart says: a frequent usecase is invoking some function regularly in intervals in such a case every single iteration we'll have to rearm
2014-08-14sd-event: do not arm timers unnecessarilyTom Gundersen
Rather than recalculating the next timeout on every loop, we only do it when something changed.
2014-07-29time-util: add and use USEC/NSEC_INFINIYKay Sievers
2014-07-24sd-event: add support for CLOCK_BOOTTIMETom Gundersen
This requires a very recent kernel (3.15), so care should be taken when using this functionality.
2014-07-11sd-event: don't require a signal event source to be enabled for the child ↵Lennart Poettering
event source to work
2014-07-11sd-event: always call epoll_ctl() on mask-updates if edge-triggeredDavid Herrmann
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-06-05sd-event: restore correct timeout behaviourLennart Poettering
2014-05-15sd-resolve: add "floating" resolve queriesLennart Poettering
Same story as for sd-bus and sd-event: allow passing NULL to store query in in which case the query is freed automatically.
2014-05-15sd-event: introduce concept of "floating" event sourcesLennart Poettering
These are the counterpart of "floating" bus slots, i.e. event sources that are bound to the lifetime of the event object itself, and thus don't require an explicit reference to be kept.
2014-05-05sd-event: allow disabling event sources when an event object is dying anywayLennart Poettering
2014-05-05sd-event: make it easy to bind signal handling to event loop exitsLennart Poettering
By passing a NULL callback provide a simple way to make event loops exit on SIGTERM and other signals.
2014-03-27silence warningsThomas Hindoe Paaboel Andersen
2014-03-25sd-event: don't accidentally turn of watchdog timer event if we determine 0Lennart Poettering
2014-03-24sd-event: initialization perturbation value right before we use itLennart Poettering
That way, we don't forget to initialize it when the watchdog is initialized before all event sources.
2014-03-24networkd: fix a couple of memory leaksLennart Poettering
2014-03-24sd-event: rework API to support CLOCK_REALTIME_ALARM and ↵Lennart Poettering
CLOCK_BOOTTIME_ALARM, too
2014-03-18util: replace close_nointr_nofail() by a more useful safe_close()Lennart Poettering
safe_close() automatically becomes a NOP when a negative fd is passed, and returns -1 unconditionally. This makes it easy to write lines like this: fd = safe_close(fd); Which will close an fd if it is open, and reset the fd variable correctly. By making use of this new scheme we can drop a > 200 lines of code that was required to test for non-negative fds or to reset the closed fd variable afterwards.
2014-02-24Remove dead lines in various placesZbigniew Jędrzejewski-Szmek
As pointed-out by clang -Wunreachable-code. No behaviour changes.
2014-02-21event: add new kind of event source called "post"Lennart Poettering
This new event source is triggered by the dispatching of any non-post event source. It can thus be used to do clean-up or recheck work, triggered by any other event source having been executed. This is different from "defer" event source which are unconditionally triggered as long as they are enabled. A "defer" event source that does nothing will result in the event loop busy looping unless it is turned off eventually. This is different for "post" event sources that will be only triggered when some other non-post ran, and will thus not keep the event loop busy on its own.
2014-02-21sd-event: Fix systemd crash when using timer units.Thomas Bächler
There was a copy-paste error introduced in commit c2ba3ad6604ef2e189d7e0a36d6911116e84d3ab which causes the following error when using timer units: Assertion '(x->type == SOURCE_MONOTONIC && y->type == SOURCE_MONOTONIC) || (x->type == SOURCE_REALTIME && y->type == SOURCE_REALTIME)' failed at src/libsystemd/sd-event/sd-event.c:264, function latest_time_prioq_compare(). Aborting.
2014-02-20api: in constructor function calls, always put the returned object pointer ↵Lennart Poettering
first (or second) Previously the returned object of constructor functions where sometimes returned as last, sometimes as first and sometimes as second parameter. Let's clean this up a bit. Here are the new rules: 1. The object the new object is derived from is put first, if there is any 2. The object we are creating will be returned in the next arguments 3. This is followed by any additional arguments Rationale: For functions that operate on an object we always put that object first. Constructors should probably not be too different in this regard. Also, if the additional parameters might want to use varargs which suggests to put them last. Note that this new scheme only applies to constructor functions, not to all other functions. We do give a lot of freedom for those. Note that this commit only changes the order of the new functions we added, for old ones we accept the wrong order and leave it like that.
2014-02-19make gcc shut upLennart Poettering
If -flto is used then gcc will generate a lot more warnings than before, among them a number of use-without-initialization warnings. Most of them without are false positives, but let's make them go away, because it doesn't really matter.
2014-02-19event: fix crash on child-source state modificationsDavid Herrmann
Setting a child-source state to anything but SD_EVENT_OFF currently does nothing. The condition logic is flawed. Move the state update *below* the test for the previous state. Fixes a crash if you call: sd_event_source_set_enabled(source, SD_EVENT_ON); sd_event_source_unref(source); on a child-source in its own callback.
2014-01-21libsystemd: split up into subdirsTom Gundersen
We still only produce on .so, but let's keep the sources separate to make things a bit less messy.