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