tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: ucontext
On Tue Dec 15 2009 at 01:51:02 +0000, Sad Clouds wrote:
> On Tuesday 15 December 2009 00:32:21 Joerg Sonnenberger wrote:
> > On Mon, Dec 14, 2009 at 10:51:46PM +0000, Sad Clouds wrote:
> > > Can anyone tell me what ucontext(2) and related functions can be used
> > > for? Reading man pages it seems to suggest that you can get and set
> > > threads context. Would this be similar to creating a new thread with
> > > pthread_create()?
pthread threads are context + scheduling.
> Below is the extract from makecontext(3). Can anyone elaborate on that? What
> limitations and what would happen when calling makecontext from a threaded
> program?
>
> Due to limitations in the current pthread implementation, makecontext should
> not be used in programs which link against the pthread(3) library (whether
> threads are used or not).
You could simply try it out with a few-line program to be sure.
But here's what I recall:
libpthread expects to find pthread_t for a thread at the top of a stack.
makecontext() itself won't do anything, but when you swapcontext()
or setcontext() to the new context, your stack will change to somewhere
without a pthread_t at the top. When the program hits e.g. a libc routine
requiring locking, pthread_mutex is called (due to how libc mutexes are
implemented) and boom happens.
Home |
Main Index |
Thread Index |
Old Index