Generic I/O
michi1 at michaelblizek.twilightparadox.com
michi1 at michaelblizek.twilightparadox.com
Tue Nov 15 13:13:21 EST 2011
Hi!
On 12:15 Mon 14 Nov , Kai Meyer wrote:
...
> My
> caller function has an atomic_t value that I set equal to the number of
> bios I want to submit. Then I pass a pointer to that atomic_t around to
> each of the bios which decrement it in the endio function for that bio.
>
> Then the caller does this:
> while(atomic_read(numbios) > 0)
> msleep(1);
>
> I'm finding the msleep(1) is a really really really long time,
> relatively. It seems to work ok if I just have an empty loop, but it
> also seems to me like I'm re-inventing a wheel here.
...
You might want to take a look at wait queues (the kernel equivalent to pthread
"condidions"). Basically you instead of calling msleep(), you call
wait_event(). In the function which decrements numbios, you check whether it
is 0 and if so call wake_up().
-Michi
--
programing a layer 3+4 network protocol for mesh networks
see http://michaelblizek.twilightparadox.com
More information about the Kernelnewbies
mailing list