tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: swapcontext() around pthreads



Joerg Sonnenberger <joerg%britannica.bec.de@localhost> wrote:

> Is there a point? Our swapcontext is effectively a system call. 
> If it wasn't, it is still quite expensive for a routine that supposedly
> only changes %rsp followed by a call, at least for architectures that
> don't use a register window algorithm.

It does more than that: it has to swap CPU register, signal mask.

I observed an interesting thing: in my test case, pthread_self() reports
that we changed thread, but ktrace shows the same lwp id, therefore
swapcontext() would not preempt anything?

And looking at the code, pthread_self is just a CPU register (gs on
i386, fs on amd64). I suspect I can reach my goal by just not changing
that register on swapccontext. Unfortunately that would be a machine
dependant option.

-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index