glib/gio/kqueue
Martin Pieuchot aa39a0557c kqueue: Multiple fixes and simplifications
- Stop using a custom thread for listening to kqueue(2) events.  Instead
   call kevent(2) in non blocking mode in a monitor callback.  Under the
   hood poll(2) is used to figure out if new events are available.

 - Do not use a socketpair with a custom protocol requiring 2 supplementary
   context switches per event to commicate between multiple threads.  Calling
   kevent(2), in non blocking mode, to add/remove events is fine from any
   context.

 - Add kqueue(2) events without the EV_ONESHOT flag.  This removes a race
   where some notifications were lost because events had to be re-added for
   every new notification.

 - Get rid of the global hash table and its associated lock and races.  Use
   the 'cookie' argument of kevent(2) to pass the associated descriptor when
   registering an event.

 - Fix _kh_file_appeared_cb() by properly passing a monitor instead of a
   source to g_file_monitor_emit_event().

 - Properly refcount sources.

 - Remove a lot of abstraction making it harder to fix the remaining issues.

https://bugzilla.gnome.org/show_bug.cgi?id=739424
2018-03-13 12:23:10 +00:00
..
dep-list.c Use 'dumb quotes' rather than `really dumb quotes' 2013-05-21 11:23:22 -03:00
dep-list.h GFileMonitor: Add kqueue(3) support to GIO 2012-11-15 08:13:30 +01:00
gkqueuefilemonitor.c kqueue: Multiple fixes and simplifications 2018-03-13 12:23:10 +00:00
kqueue-helper.c kqueue: Multiple fixes and simplifications 2018-03-13 12:23:10 +00:00
kqueue-helper.h kqueue: Multiple fixes and simplifications 2018-03-13 12:23:10 +00:00
kqueue-missing.c kqueue: Multiple fixes and simplifications 2018-03-13 12:23:10 +00:00
Makefile.am kqueue: Multiple fixes and simplifications 2018-03-13 12:23:10 +00:00
meson.build kqueue: Multiple fixes and simplifications 2018-03-13 12:23:10 +00:00