kernel thread as real threads..

Peter Jeremy PeterJeremy at
Mon Jan 23 17:12:51 PST 2006

On Mon, 2006-Jan-23 16:02:01 -0800, Julian Elischer wrote:
>>And any others I don't remember.  We may find we need to perform an 
>>aio drain wait there if we switch to doing AIO in the process context.
>I don't think so..
>IO is really 2 stage:
>for read, data is read into the cache by standard async kernel code.
>then the thread wakes up and writes it to the user space.
>if the thread has died the async request is still allowed to complete.

Is this done as a one-off event, or will data be copied from kernel
to userland as the data arrives in the kernel?  The former implies
that the userland buffer is (pretty much) atomically updated - it is
unchanged until all the available data arrives, at which point it is
all copied into userland and the aio flagged as complete.  The latter
implies that parts of the userland buffer will update gradually.  The
difference primarily affects large requests (and the latter approach
implies that less kernel resources will be tied up by the I/O).

What about the write case?

Peter Jeremy

More information about the freebsd-current mailing list