SoC: help with LISTs and killing procs

Divacky Roman xdivac02 at stud.fit.vutbr.cz
Thu Aug 10 15:16:24 UTC 2006


hi

I am doing this:

(pseudocode)
LIST_FOREACH_SAFE(em, &td_em->shared->threads, threads, tmp_em) {

	kill(em, SIGKILL);
}

kill(SIGKILL) calls exit() which calls my exit_hook()

my exit_hook() does LIST_REMOVE(em, threads).

the problem is that this is not synchronous so I am getting a panic by INVARIANTS
that "Bad link elm prev->next != elm". This is because I list 1st item in the list
I call kill on it, then process 2nd list, then scheduler preempts my code and calls
exit() on the first proc which removes the first entry and bad things happen. 

I see this possible solutions:

make this synchronous, it can be done by something like:

    ....
    kill(em, SIGKILL);
    wait_for_proc_to_vanish();

pls. tell me what do you think about this solution and if its correct what is the wait_for_proc_to_vanish()

maybe there's some better solution, pls tell me.

thnx a lot

roman

----------------------
www.liberalnistrana.cz


More information about the freebsd-hackers mailing list