]> err.no Git - systemd/commit
[PATCH] udevd race conditions and performance, assorted cleanups
authorchris_friesen@sympatico.ca <chris_friesen@sympatico.ca>
Thu, 1 Apr 2004 07:03:07 +0000 (23:03 -0800)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:35:13 +0000 (21:35 -0700)
commitf27125f98f6487e881a957726da895aebd799f0d
tree7c4c9ed2f78dc37a338964b17940466b04d1fea3
parent7b9b18392182e5cfa5d731288e8592549bdf67df
[PATCH] udevd race conditions and performance, assorted cleanups

This patch covers a number of areas:

1) sysfs.h is fixed up to use the common dbg() macro.  This fixes the
case where DEBUG is defined but USE_LOG isn't.

2) udevstart.c is modified to include the proper headers, rather than
getting them indirectly which can break depending on Makefile flags

3) udevd.c gets some major changes:
a) I added a pipe from the signal handler.  This fixes the race
conditions that I mentioned earlier.  Basically, the point of the pipe
is to force the select() call to return immediately if a signal handler
fired before we actually started the select() call.  This then lets us
run the appropriate code based on flags set in the signal handler proper.
b) I added a number of flags to coalesce calls to common routines.  This
should make things slightly more efficient.
c) since most calls will tend to come in with a sequence number larger
than what has been received, I switched msg_queue_insert() to scan the
msg_list backwards to improve performance.

 filename="udevd.diff"
libsysfs/sysfs.h
udevd.c
udevstart.c