DragonFly BSD
DragonFly kernel List (threaded) for 2005-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

CALL TO COMMITTERS! HELPING WITH SPL REMOVAL!


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 2 Jun 2005 10:07:37 -0700 (PDT)

    Ok, I spoke too soon.  There are over 500 files still using SPLs.

    In order to get this done in a reasonable length of time I would like
    to call on those committers with a few hours to burn to help me 
    remove SPLs!  To reduce overheads, I am only asking for people with a
    commit bit here, because in this case it's almost as much effort to
    make the changes as it would be to review a patch submission!

    Basically, SPL operations have to be replaced by critical section
    operations.  So, for example, code that does this:

	s = splblah(); 
	...
	splx(s);

    would become:

	[add #include <sys/thread2.h> if necessary]

	[remove the 'int s' declaration]
	crit_enter();
	...
	crit_exit();

    There are a few cases where SPLs are assymetric, such as this:

	s = splblah1();
	splblah2();
	...
	splx(s);

    SPLs can do that, critical sections cannot.  Critical sections must
    properly match up a crit_enter() to a crit_exit().  so that would become:
	
	crit_enter();
	...
	crit_exit();

    Critical sections CAN be nested, and CAN be held across a blocking 
    condition.

    Committers wishing to help out should email me and I will assign you a
    directory in /usr/src/sys.  Work on that directory, make sure your kernel
    still compiles and runs, then commit the work and I'll review it 
    from the commit message and do any followup commits if necessary.

    Originally I wanted to keep SPLs intact so I could tell which parts of
    the kernel need more involved SMP work, but frankly they are now just 
    getting in the way and they need to be replaced with critical sections.

						Thanks!

						-Matt




[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]