what about implementing read-write semaphores?
> ideally the spinlock code (spin_lock and read_lock et al)
> would have debug versions that counted how many locks were
> held (in some per-cpu data structure), and have schedule()
> check that this number was zero before putting the process
> to sleep.
IMHO, several debug-checks should be added to the 2.3 kernels.
(everything based on CONFIG_??):
- count spinlocks
- every function that _could_ sleep should call schedule().
(copy_from_user, kmalloc(GFP_WAIT) etc.)
--> rare problems become frequent, easier to find.
- functions that assume that a certain spinlock is locked
should check that [eg. (current->lock_depth >= 0)].
--> missing synchronization can be detected immediately, and
a simple 'grep' finds these functions. Since the compiler
enforces the spelling, you don't need to 'grep "kernel.lock"',
'grep "kernel.flag"', ...
-- Manfred
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/