Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3
Date: Thu Feb 22 2007 - 07:38:43 EST
May I just say, that this is f***ing brilliant.
It completely separates the threadlet/fibril core from the (contentious)
completion notification debate, and allows you to use whatever mechanism
you like. (fd, signal, kevent, futex, ...)
You can also add a "macro syscall" like the original syslet idea,
and it can be independent of the threadlet mechanism but provide the
If the macros can be designed to always exit when donew, a guarantee
never to return to user space, then you can always recycle the stack
after threadlet_exec() returns, whether it blocked in the syscall or not,
and you have your original design.
May I just suggest, however, that the interface be:
tid = threadlet_exec(...)
Where tid < 0 means error, tid == 0 means completed synchronously,
and tod > 0 identifies the child so it can be waited for?
Anyway, this is a really excellent user-space API. (You might add some
sort of "am I synchronous?" query, or maybe you could just use gettid()
for the purpose.)
The one interesting question is, can you nest threadlet_exec() calls?
I think it's implementable, and I can definitely see the attraction
of being able to call libraries that use it internally (to do async
read-ahead or whatever) from a threadlet function.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/