[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Task server
Re: Task server
Thu, 08 Jul 2004 00:58:45 +0200
Wanderlust/2.10.1 (Watching The Wheels) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/21.3 (i386-pc-linux-gnu) MULE/5.0 (SAKAKI)
At Tue, 6 Jul 2004 14:37:30 +0200,
Bas Wijnen wrote:
> I think the task server has two main functions: wrap calls to wortel, and
> notify others of task termination. Calls to wrap are:
> - create new thread
> - destroy thread
> - stop thread
> - resume thread
You can't stop and resume threads from outside of the address space
the threads are running in. ExchangeRegister only allows to frob
> Thread ID's are not reused until all tasks that were notified have acknoledged
> the notification.
Thread Numbers are reused. Version numbers (== task ids) are not.
> For the capability server, there are several object classes:
> - thread creation. Probably needs one object only.
> - thread control. One object per thread.
I think it's bloat to have objects for threads, given that L4 imposes
so many limitations that there is virtually nothing the task server
can do with a thread.
> - termination notify. One object per thread.
task death notifications are handed out at the task level, not thread level.
You need two objects per task, one for control and one for
notifications (which I call "task info caps").
Maybe we need more caps later, a master for quota control etc, and
maybe stuff for the scheduler. I am not sure. Never thought that
> Now if I understood the code correctly, there is one thread which receives the
> capability related requests, and it passes them on to a worker thread to be
> handled. This means that any capability server must start some threads before
> it is operational.
True. I think there is also a single-threaded manager implementation,
but I am not sure if I really put it in, and even if it is in, I am
not sure it will work. In fact, I think I didn't put it in. Of
course, we want the task server to be multi-threaded, so it doesn't matter.
> The task server cannot start these threads the "normal" way, because that
> would mean sending a request to the task server (which isn't operational yet.
> This is not a big problem, it can just start its threads directly, just like
> it does for other tasks.
Yes. It can also get some initial threads from wortel, like physmem.