Hi, Thanks for your response.
(1) When a L4 thread which is runnig as a Linux task is scheduled by L4, is the Linux task ("task_struct" instance) corresponds to the L4 thread scheduled as "l4lx.cpu0" by Linux scheduler ? (Of course, "l4lx.cpu0" is not scheduled by L4 at this time.)
For example, there are two user processes A and B in Linux server now.
There are two threads (tasks) corresponds to A and B in L4, and there are two "task_struct" instances (both of them only execute the loop of "l4x_user_dispatcher") in Linux system.
When the L4 thread of A is running (scheduled by Fiasco), the context of "l4lx.cpu0" is "task_struct" of A.
If Fiasco switches the running thread from A to B, the context of "l4lx.cpu0" is changed to "task_struct" of B after ? (or no change ?)
In other words, are the active L4 thread of Linux process and the L4 thread the context of "l4lx.cpu0" corresponds to always the same ?
Fiasco can never switch from A to B directly as both are never ready at the same time. The switch order is always A -> Linux-server -> B. Besides that the active context of the Linux server always corresponds to the L4 thread currently active, as you already stated.
I have been able to confirm this mechanism for your help. Thanks a lot !
I attached my image of context switches in L4Linux system (correct ?).
When I execute two programs which does not cause any system call or exception (except at start and end of program), they seems to switch together at almost constant intervals. (Actually, other programs such as init, watchdog, pdflush also run at times.)
What is the trigger of this context switch ?
In other words, what is the [?] in (2) in my attachement ?
Is it a IPC message ? If so, what is the kind of this IPC ? And, what is the cause of it ?
Regards, Lin