From: Jeff D. <jd...@ad...> - 2006-03-25 03:17:31
|
On Sat, Mar 25, 2006 at 12:28:09AM +0100, Blaisorblade wrote: > BUT, this context switch at the thread born is special: the thread being > switched away switches to a new thread not in the body of the new thread's > call to switch_to_skas->switch_threads(), but in the body of thread_wait()! > At that point, we lose the call to arch_switch_to_skas()! Yuck yuck yuck. Nice spotting. There's an obvious one-line fix for this, but I wonder if we ought to try some restructuring to avoid this sort of thing in the future. > Questions and notes: > > *) Why does arch/um/os-Linux/skas/process.c has still one siglongjmp() call > and sigjmp_buf vars, and that has no comments? I'm tempted to say that I just missed the call somehow. I see no reason for that to be different, especially since it's preceded by a UML_SIGSETJMP. As for the sigjmp_buf variables, I don't get your point. Those haven't changed. > *) Also, why thread_wait and thread_switch are almost identical, yet they're > two different functions? switch_threads? In order to merge them, you'd have to pass in the 1 and the INIT_JMP_REMOVE_SIGSTACK, which I have conceptual problems with. First, that makes the callers know things that they probably shouldn't. Second, the 1 and the INIT_JMP_REMOVE_SIGSTACK have completely different meanings. One is a message to the initial thread that it has to do something. The 1 is a message to setjmp that is has been longjmp-ed to. > *) Btw, the naming sucks - if I find better names for new_thread, > new_thread_proc and such, would they be accepted? Sure, good names are always appreciated. Jeff |