Re: [PATCH] test_rhashtable: remove semaphore usage
From: David Miller <davem@davemloft.net>
Date: 2018-12-11 01:29:15
Also in:
lkml
From: Arnd Bergmann <arnd@arndb.de> Date: Mon, 10 Dec 2018 22:17:20 +0100
This is one of only two files that initialize a semaphore to a negative value. We don't really need the two semaphores here at all, but can do the same thing in more conventional and more effient way, by using a single waitqueue and an atomic thread counter. This gets us a little bit closer to eliminating classic semaphores from the kernel. It also fixes a corner case where we fail to continue after one of the threads fails to start up. An alternative would be to use a split kthread_create()+wake_up_process() and completely eliminate the separate synchronization. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- This is part of a longer, untested, series to remove semaphores from the kernel, please review as such before applying.
This looks fine to me, although it seems kinda weird how the synchronization works in that the N - 1 child threads will be awoken two times, once when child N decrements the count to zero and once when the parent decrements the count to -1 which lets us past the wait_event_interruptibel(). Nevertheless it should work just fine and I have no problems with it. Want me to apply this to net-next? Thanks.