From 87c5b2118efcee65eeda3f743d081ea9c2b866d9 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 15 Jan 2015 20:14:44 +0000 Subject: Move Unix domain utilities and access control utilites, as well as the accessrules library, from s6-networking to here --- doc/libftrig.html | 184 ------------------------------------------------------ 1 file changed, 184 deletions(-) delete mode 100644 doc/libftrig.html (limited to 'doc/libftrig.html') diff --git a/doc/libftrig.html b/doc/libftrig.html deleted file mode 100644 index da4c25b..0000000 --- a/doc/libftrig.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - s6: libftrig - - - - - - -

-s6
-Software
-skarnet.org -

- -

libftrig

- -

-libftrig is a portable Unix C programming interface allowing a -process (the subscriber or listener) to be instantly -notified when another process (the notifier or writer) -signals an event. -

- - -

What is notification ?

-
- -

Notification vs. polling

- -

- Process A is notified of an event E when it gets a instant -notice that event E has happened; the notice may disrupt A's execution -flow. Notification is the opposite of polling, where A has to -periodically (every T milliseconds) check whether E happened and has no -other way to be informed of it. -

- -

- Polling is generally considered bad practice - and is inferior to -notification in practically every case - for three reasons: -

- - - -

- Notification, on the other hand, is generally optimal: reaction time is -zero, and resource consumption is minimal - a process can sleep as soon as -it's not handling an event, and only wake up when needed. -

- -

- Of course, the problem of notification is that it's often more difficult -to implement. Notification frameworks are generally more complex, involving -lots of asynchronism; polling is widely used -because -it's easy. -

- -

Notifications and Unix

- -

- Unix provides several frameworks so that a process B (or the kernel) can -notify process A. -

- - - -

What we want

- -

- We need a general framework to: -

- - - -

- This requires a many-to-many approach that Unix does not provide natively, and -that is what libftrig does. -

- - -

That's what a bus is for. D-Bus already does all this.

-
- -

- Yes, a bus is a good many-to-many notification mechanism indeed. However, -a Unix bus can only be implemented via a daemon - you need a long-running -process, i.e. a service, to implement a bus. And s6 is a -supervision suite, i.e. a set of programs designed to manage -services; we would like to be able to use notifications in the supervision -suite, to be able to wait for a service to be up or down... without -relying on a particular service to be up. libftrig provides a notification -mechanism that does not need a bus service to be up, that's its -main advantage over a bus. -

- -

- If you are not concerned with supervision and can depend on a bus service, -though, then yes, by all means, use a bus for your notification needs. -There is a skabus -project in the making, which aims to be simpler, smaller and more -maintainable than D-Bus. -

- -

How to use libftrig

- -

- libftrig is really a part of libs6: all the functions -are implemented in the libs6.a archive, or the libs6.so -dynamic shared object. However, the interfaces are different for notifiers -and listeners: -

- - - - - -- cgit v1.2.3