• Martin Pieuchot's avatar
    kqueue: Multiple fixes and simplifications · aa39a055
    Martin Pieuchot authored
     - 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
    aa39a055
Name
Last commit
Last update
..
completion Loading commit data...
fam Loading commit data...
gdbus-2.0/codegen Loading commit data...
gvdb Loading commit data...
inotify Loading commit data...
kqueue Loading commit data...
tests Loading commit data...
win32 Loading commit data...
xdgmime Loading commit data...
.gitignore Loading commit data...
ChangeLog Loading commit data...
Makefile.am Loading commit data...
data-to-c.py Loading commit data...
dbus-daemon.xml Loading commit data...
gaction.c Loading commit data...
gaction.h Loading commit data...
gactiongroup.c Loading commit data...
gactiongroup.h Loading commit data...
gactiongroupexporter.c Loading commit data...
gactiongroupexporter.h Loading commit data...
gactionmap.c Loading commit data...
gactionmap.h Loading commit data...
gappinfo.c Loading commit data...
gappinfo.h Loading commit data...
gappinfoprivate.h Loading commit data...
gapplication-tool.c Loading commit data...
gapplication.c Loading commit data...
gapplication.h Loading commit data...
gapplicationcommandline.c Loading commit data...
gapplicationcommandline.h Loading commit data...
gapplicationimpl-dbus.c Loading commit data...
gapplicationimpl.h Loading commit data...
gasynchelper.c Loading commit data...
gasynchelper.h Loading commit data...
gasyncinitable.c Loading commit data...
gasyncinitable.h Loading commit data...
gasyncresult.c Loading commit data...
gasyncresult.h Loading commit data...
gbufferedinputstream.c Loading commit data...
gbufferedinputstream.h Loading commit data...
gbufferedoutputstream.c Loading commit data...
gbufferedoutputstream.h Loading commit data...
gbytesicon.c Loading commit data...
gbytesicon.h Loading commit data...
gcancellable.c Loading commit data...
gcancellable.h Loading commit data...
gcharsetconverter.c Loading commit data...
gcharsetconverter.h Loading commit data...
gcocoanotificationbackend.c Loading commit data...
gcontenttype-win32.c Loading commit data...
gcontenttype.c Loading commit data...
gcontenttype.h Loading commit data...
gcontenttypeprivate.h Loading commit data...
gcontextspecificgroup.c Loading commit data...
gcontextspecificgroup.h Loading commit data...
gconverter.c Loading commit data...
gconverter.h Loading commit data...
gconverterinputstream.c Loading commit data...
gconverterinputstream.h Loading commit data...
gconverteroutputstream.c Loading commit data...
gconverteroutputstream.h Loading commit data...
gcredentials.c Loading commit data...
gcredentials.h Loading commit data...
gcredentialsprivate.h Loading commit data...
gdatagrambased.c Loading commit data...
gdatagrambased.h Loading commit data...
gdatainputstream.c Loading commit data...
gdatainputstream.h Loading commit data...
gdataoutputstream.c Loading commit data...
gdataoutputstream.h Loading commit data...
gdbus-tool.c Loading commit data...
gdbusactiongroup-private.h Loading commit data...
gdbusactiongroup.c Loading commit data...
gdbusactiongroup.h Loading commit data...
gdbusaddress.c Loading commit data...
gdbusaddress.h Loading commit data...
gdbusauth.c Loading commit data...
gdbusauth.h Loading commit data...
gdbusauthmechanism.c Loading commit data...
gdbusauthmechanism.h Loading commit data...
gdbusauthmechanismanon.c Loading commit data...
gdbusauthmechanismanon.h Loading commit data...
gdbusauthmechanismexternal.c Loading commit data...
gdbusauthmechanismexternal.h Loading commit data...
gdbusauthmechanismsha1.c Loading commit data...
gdbusauthmechanismsha1.h Loading commit data...
gdbusauthobserver.c Loading commit data...
gdbusauthobserver.h Loading commit data...
gdbusconnection.c Loading commit data...
gdbusconnection.h Loading commit data...
gdbusdaemon.c Loading commit data...
gdbusdaemon.h Loading commit data...
gdbuserror.c Loading commit data...
gdbuserror.h Loading commit data...
gdbusinterface.c Loading commit data...
gdbusinterface.h Loading commit data...
gdbusinterfaceskeleton.c Loading commit data...
gdbusinterfaceskeleton.h Loading commit data...
gdbusintrospection.c Loading commit data...
gdbusintrospection.h Loading commit data...
gdbusmenumodel.c Loading commit data...
gdbusmenumodel.h Loading commit data...
gdbusmessage.c Loading commit data...
gdbusmessage.h Loading commit data...
gdbusmethodinvocation.c Loading commit data...
gdbusmethodinvocation.h Loading commit data...
gdbusnameowning.c Loading commit data...
gdbusnameowning.h Loading commit data...
gdbusnamewatching.c Loading commit data...
gdbusnamewatching.h Loading commit data...
gdbusobject.c Loading commit data...
gdbusobject.h Loading commit data...
gdbusobjectmanager.c Loading commit data...
gdbusobjectmanager.h Loading commit data...
gdbusobjectmanagerclient.c Loading commit data...
gdbusobjectmanagerclient.h Loading commit data...
gdbusobjectmanagerserver.c Loading commit data...
gdbusobjectmanagerserver.h Loading commit data...
gdbusobjectproxy.c Loading commit data...
gdbusobjectproxy.h Loading commit data...
gdbusobjectskeleton.c Loading commit data...
gdbusobjectskeleton.h Loading commit data...
gdbusprivate.c Loading commit data...
gdbusprivate.h Loading commit data...
gdbusproxy.c Loading commit data...
gdbusproxy.h Loading commit data...
gdbusserver.c Loading commit data...
gdbusserver.h Loading commit data...
gdbusutils.c Loading commit data...
gdbusutils.h Loading commit data...
gdelayedsettingsbackend.c Loading commit data...
gdelayedsettingsbackend.h Loading commit data...
gdesktopappinfo.c Loading commit data...
gdesktopappinfo.h Loading commit data...
gdocumentportal.c Loading commit data...
gdocumentportal.h Loading commit data...
gdrive.c Loading commit data...
gdrive.h Loading commit data...
gdtlsclientconnection.c Loading commit data...
gdtlsclientconnection.h Loading commit data...
gdtlsconnection.c Loading commit data...
gdtlsconnection.h Loading commit data...
gdtlsserverconnection.c Loading commit data...
gdtlsserverconnection.h Loading commit data...
gdummyfile.c Loading commit data...
gdummyfile.h Loading commit data...
gdummyproxyresolver.c Loading commit data...
gdummyproxyresolver.h Loading commit data...
gdummytlsbackend.c Loading commit data...
gdummytlsbackend.h Loading commit data...
gemblem.c Loading commit data...
gemblem.h Loading commit data...
gemblemedicon.c Loading commit data...
gemblemedicon.h Loading commit data...
gfdonotificationbackend.c Loading commit data...
gfile.c Loading commit data...
gfile.h Loading commit data...
gfileattribute-priv.h Loading commit data...
gfileattribute.c Loading commit data...
gfileattribute.h Loading commit data...
gfiledescriptorbased.c Loading commit data...
gfiledescriptorbased.h Loading commit data...
gfileenumerator.c Loading commit data...
gfileenumerator.h Loading commit data...
gfileicon.c Loading commit data...
gfileicon.h Loading commit data...
gfileinfo-priv.h Loading commit data...
gfileinfo.c Loading commit data...
gfileinfo.h Loading commit data...
gfileinputstream.c Loading commit data...
gfileinputstream.h Loading commit data...
gfileiostream.c Loading commit data...
gfileiostream.h Loading commit data...
gfilemonitor.c Loading commit data...
gfilemonitor.h Loading commit data...
gfilenamecompleter.c Loading commit data...
gfilenamecompleter.h Loading commit data...
gfileoutputstream.c Loading commit data...
gfileoutputstream.h Loading commit data...
gfilterinputstream.c Loading commit data...
gfilterinputstream.h Loading commit data...
gfilteroutputstream.c Loading commit data...
gfilteroutputstream.h Loading commit data...
ggtknotificationbackend.c Loading commit data...
ghttpproxy.c Loading commit data...
ghttpproxy.h Loading commit data...
gicon.c Loading commit data...
gicon.h Loading commit data...
ginetaddress.c Loading commit data...
ginetaddress.h Loading commit data...
ginetaddressmask.c Loading commit data...
ginetaddressmask.h Loading commit data...
ginetsocketaddress.c Loading commit data...
ginetsocketaddress.h Loading commit data...
ginitable.c Loading commit data...
ginitable.h Loading commit data...
ginputstream.c Loading commit data...
ginputstream.h Loading commit data...
gio-autocleanups.h Loading commit data...
gio-querymodules.c Loading commit data...
gio-tool-cat.c Loading commit data...
gio-tool-copy.c Loading commit data...
gio-tool-info.c Loading commit data...
gio-tool-list.c Loading commit data...
gio-tool-mime.c Loading commit data...
gio-tool-mkdir.c Loading commit data...
gio-tool-monitor.c Loading commit data...
gio-tool-mount.c Loading commit data...
gio-tool-move.c Loading commit data...
gio-tool-open.c Loading commit data...
gio-tool-remove.c Loading commit data...
gio-tool-rename.c Loading commit data...
gio-tool-save.c Loading commit data...
gio-tool-set.c Loading commit data...
gio-tool-trash.c Loading commit data...
gio-tool-tree.c Loading commit data...
gio-tool.c Loading commit data...
gio-tool.h Loading commit data...
gio.h Loading commit data...
gio.rc.in Loading commit data...
gio.stp.in Loading commit data...
gio_probes.d Loading commit data...
gio_trace.h Loading commit data...
gioenums.h Loading commit data...
gioenumtypes.c.template Loading commit data...
gioenumtypes.h.template Loading commit data...
gioerror.c Loading commit data...
gioerror.h Loading commit data...
giomodule-priv.c Loading commit data...
giomodule-priv.h Loading commit data...
giomodule.c Loading commit data...
giomodule.h Loading commit data...
gioprivate.h Loading commit data...
gioscheduler.c Loading commit data...
gioscheduler.h Loading commit data...
giostream.c Loading commit data...
giostream.h Loading commit data...
giotypes.h Loading commit data...
giowin32-priv.h Loading commit data...
gkeyfilesettingsbackend.c Loading commit data...
glib-compile-resources.c Loading commit data...
glib-compile-schemas.c Loading commit data...
glistmodel.c Loading commit data...
glistmodel.h Loading commit data...
gliststore.c Loading commit data...
gliststore.h Loading commit data...
gloadableicon.c Loading commit data...
gloadableicon.h Loading commit data...
glocalfile.c Loading commit data...
glocalfile.h Loading commit data...
glocalfileenumerator.c Loading commit data...
glocalfileenumerator.h Loading commit data...
glocalfileinfo.c Loading commit data...
glocalfileinfo.h Loading commit data...
glocalfileinputstream.c Loading commit data...
glocalfileinputstream.h Loading commit data...
glocalfileiostream.c Loading commit data...
glocalfileiostream.h Loading commit data...
glocalfilemonitor.c Loading commit data...
glocalfilemonitor.h Loading commit data...
glocalfileoutputstream.c Loading commit data...
glocalfileoutputstream.h Loading commit data...
glocalfileprivate.h Loading commit data...
glocalvfs.c Loading commit data...
glocalvfs.h Loading commit data...
gmemoryinputstream.c Loading commit data...
gmemoryinputstream.h Loading commit data...
gmemoryoutputstream.c Loading commit data...
gmemoryoutputstream.h Loading commit data...
gmemorysettingsbackend.c Loading commit data...
gmenu.c Loading commit data...
gmenu.h Loading commit data...
gmenuexporter.c Loading commit data...
gmenuexporter.h Loading commit data...
gmenumodel.c Loading commit data...
gmenumodel.h Loading commit data...
gmount.c Loading commit data...
gmount.h Loading commit data...
gmountoperation.c Loading commit data...
gmountoperation.h Loading commit data...
gmountprivate.h Loading commit data...
gnativesocketaddress.c Loading commit data...
gnativesocketaddress.h Loading commit data...
gnativevolumemonitor.c Loading commit data...
gnativevolumemonitor.h Loading commit data...
gnetworkaddress.c Loading commit data...
gnetworkaddress.h Loading commit data...
gnetworking.c Loading commit data...
gnetworking.h.in Loading commit data...
gnetworking.h.win32 Loading commit data...
gnetworkingprivate.h Loading commit data...
gnetworkmonitor.c Loading commit data...
gnetworkmonitor.h Loading commit data...
gnetworkmonitorbase.c Loading commit data...
gnetworkmonitorbase.h Loading commit data...
gnetworkmonitornetlink.c Loading commit data...
gnetworkmonitornetlink.h Loading commit data...
gnetworkmonitornm.c Loading commit data...
gnetworkmonitornm.h Loading commit data...
gnetworkmonitorportal.c Loading commit data...
gnetworkmonitorportal.h Loading commit data...
gnetworkservice.c Loading commit data...
gnetworkservice.h Loading commit data...
gnextstepsettingsbackend.c Loading commit data...
gnotification-private.h Loading commit data...
gnotification.c Loading commit data...
gnotification.h Loading commit data...
gnotificationbackend.c Loading commit data...
gnotificationbackend.h Loading commit data...
gnullsettingsbackend.c Loading commit data...
gopenuriportal.c Loading commit data...
gopenuriportal.h Loading commit data...
gosxappinfo.c Loading commit data...
gosxappinfo.h Loading commit data...
gosxcontenttype.c Loading commit data...
goutputstream.c Loading commit data...
goutputstream.h Loading commit data...
gpermission.c Loading commit data...
gpermission.h Loading commit data...
gpollableinputstream.c Loading commit data...
gpollableinputstream.h Loading commit data...
gpollableoutputstream.c Loading commit data...
gpollableoutputstream.h Loading commit data...
gpollableutils.c Loading commit data...
gpollableutils.h Loading commit data...
gpollfilemonitor.c Loading commit data...
gpollfilemonitor.h Loading commit data...
gportalnotificationbackend.c Loading commit data...
gportalsupport.c Loading commit data...
gportalsupport.h Loading commit data...
gpropertyaction.c Loading commit data...
gpropertyaction.h Loading commit data...
gproxy.c Loading commit data...
gproxy.h Loading commit data...
gproxyaddress.c Loading commit data...
gproxyaddress.h Loading commit data...
gproxyaddressenumerator.c Loading commit data...
gproxyaddressenumerator.h Loading commit data...
gproxyresolver.c Loading commit data...
gproxyresolver.h Loading commit data...
gproxyresolverportal.c Loading commit data...
gproxyresolverportal.h Loading commit data...
gregistrysettingsbackend.c Loading commit data...
gregistrysettingsbackend.h Loading commit data...
gremoteactiongroup.c Loading commit data...
gremoteactiongroup.h Loading commit data...
gresolver.c Loading commit data...
gresolver.h Loading commit data...
gresource-tool.c Loading commit data...
gresource.c Loading commit data...
gresource.h Loading commit data...
gresourcefile.c Loading commit data...
gresourcefile.h Loading commit data...
gschema.dtd Loading commit data...
gschema.its Loading commit data...
gschema.loc Loading commit data...
gseekable.c Loading commit data...
gseekable.h Loading commit data...
gsettings-mapping.c Loading commit data...
gsettings-mapping.h Loading commit data...
gsettings-tool.c Loading commit data...
gsettings.c Loading commit data...
gsettings.h Loading commit data...
gsettingsbackend.c Loading commit data...
gsettingsbackend.h Loading commit data...
gsettingsbackendinternal.h Loading commit data...
gsettingsschema-internal.h Loading commit data...
gsettingsschema.c Loading commit data...
gsettingsschema.h Loading commit data...
gsimpleaction.c Loading commit data...
gsimpleaction.h Loading commit data...
gsimpleactiongroup.c Loading commit data...
gsimpleactiongroup.h Loading commit data...
gsimpleasyncresult.c Loading commit data...
gsimpleasyncresult.h Loading commit data...
gsimpleiostream.c Loading commit data...
gsimpleiostream.h Loading commit data...
gsimplepermission.c Loading commit data...
gsimplepermission.h Loading commit data...
gsimpleproxyresolver.c Loading commit data...
gsimpleproxyresolver.h Loading commit data...
gsocket.c Loading commit data...
gsocket.h Loading commit data...
gsocketaddress.c Loading commit data...
gsocketaddress.h Loading commit data...
gsocketaddressenumerator.c Loading commit data...
gsocketaddressenumerator.h Loading commit data...
gsocketclient.c Loading commit data...
gsocketclient.h Loading commit data...
gsocketconnectable.c Loading commit data...
gsocketconnectable.h Loading commit data...
gsocketconnection.c Loading commit data...
gsocketconnection.h Loading commit data...
gsocketcontrolmessage.c Loading commit data...
gsocketcontrolmessage.h Loading commit data...
gsocketinputstream.c Loading commit data...
gsocketinputstream.h Loading commit data...
gsocketlistener.c Loading commit data...
gsocketlistener.h Loading commit data...
gsocketoutputstream.c Loading commit data...
gsocketoutputstream.h Loading commit data...
gsocketservice.c Loading commit data...
gsocketservice.h Loading commit data...
gsocks4aproxy.c Loading commit data...
gsocks4aproxy.h Loading commit data...
gsocks4proxy.c Loading commit data...
gsocks4proxy.h Loading commit data...
gsocks5proxy.c Loading commit data...
gsocks5proxy.h Loading commit data...
gsrvtarget.c Loading commit data...
gsrvtarget.h Loading commit data...
gsubprocess.c Loading commit data...
gsubprocess.h Loading commit data...
gsubprocesslauncher-private.h Loading commit data...
gsubprocesslauncher.c Loading commit data...
gsubprocesslauncher.h Loading commit data...
gtask.c Loading commit data...
gtask.h Loading commit data...
gtcpconnection.c Loading commit data...
gtcpconnection.h Loading commit data...
gtcpwrapperconnection.c Loading commit data...
gtcpwrapperconnection.h Loading commit data...
gtestdbus.c Loading commit data...
gtestdbus.h Loading commit data...
gthemedicon.c Loading commit data...
gthemedicon.h Loading commit data...
gthreadedresolver.c Loading commit data...
gthreadedresolver.h Loading commit data...
gthreadedsocketservice.c Loading commit data...
gthreadedsocketservice.h Loading commit data...
gtlsbackend.c Loading commit data...
gtlsbackend.h Loading commit data...
gtlscertificate.c Loading commit data...
gtlscertificate.h Loading commit data...
gtlsclientconnection.c Loading commit data...
gtlsclientconnection.h Loading commit data...
gtlsconnection.c Loading commit data...
gtlsconnection.h Loading commit data...
gtlsdatabase.c Loading commit data...
gtlsdatabase.h Loading commit data...
gtlsfiledatabase.c Loading commit data...
gtlsfiledatabase.h Loading commit data...
gtlsinteraction.c Loading commit data...
gtlsinteraction.h Loading commit data...
gtlspassword.c Loading commit data...
gtlspassword.h Loading commit data...
gtlsserverconnection.c Loading commit data...
gtlsserverconnection.h Loading commit data...
gunionvolumemonitor.c Loading commit data...
gunionvolumemonitor.h Loading commit data...
gunixconnection.c Loading commit data...
gunixconnection.h Loading commit data...
gunixcredentialsmessage.c Loading commit data...
gunixcredentialsmessage.h Loading commit data...
gunixfdlist.c Loading commit data...
gunixfdlist.h Loading commit data...
gunixfdmessage.c Loading commit data...
gunixfdmessage.h Loading commit data...
gunixinputstream.c Loading commit data...
gunixinputstream.h Loading commit data...
gunixmount.c Loading commit data...
gunixmount.h Loading commit data...
gunixmounts.c Loading commit data...
gunixmounts.h Loading commit data...
gunixoutputstream.c Loading commit data...
gunixoutputstream.h Loading commit data...
gunixsocketaddress.c Loading commit data...
gunixsocketaddress.h Loading commit data...
gunixvolume.c Loading commit data...
gunixvolume.h Loading commit data...
gunixvolumemonitor.c Loading commit data...
gunixvolumemonitor.h Loading commit data...
gvfs.c Loading commit data...
gvfs.h Loading commit data...
gvolume.c Loading commit data...
gvolume.h Loading commit data...
gvolumemonitor.c Loading commit data...
gvolumemonitor.h Loading commit data...
gwin32appinfo.c Loading commit data...
gwin32appinfo.h Loading commit data...
gwin32inputstream.c Loading commit data...
gwin32inputstream.h Loading commit data...
gwin32mount.c Loading commit data...
gwin32mount.h Loading commit data...
gwin32networking.h Loading commit data...
gwin32networkmonitor.c Loading commit data...
gwin32networkmonitor.h Loading commit data...
gwin32outputstream.c Loading commit data...
gwin32outputstream.h Loading commit data...
gwin32registrykey.c Loading commit data...
gwin32registrykey.h Loading commit data...
gwin32volumemonitor.c Loading commit data...
gwin32volumemonitor.h Loading commit data...
gzlibcompressor.c Loading commit data...
gzlibcompressor.h Loading commit data...
gzlibdecompressor.c Loading commit data...
gzlibdecompressor.h Loading commit data...
meson.build Loading commit data...
org.freedesktop.portal.Documents.xml Loading commit data...
org.freedesktop.portal.NetworkMonitor.xml Loading commit data...
org.freedesktop.portal.OpenURI.xml Loading commit data...
org.freedesktop.portal.ProxyResolver.xml Loading commit data...
strinfo.c Loading commit data...
thumbnail-verify.c Loading commit data...
thumbnail-verify.h Loading commit data...