libthr: thr_create(2): no kernel stack?
Mike Makonnen
mtm at identd.net
Sat May 31 20:48:19 PDT 2003
On Sat, 31 May 2003 00:22:59 -0700
Marcel Moolenaar <marcel at xcllnt.net> wrote:
> Gang,
>
> I'm porting libthr to ia64 and reached a point where I can actually
> do initial testing. I immediately hit upon a snafu in thr_create(2).
> The second bcopy (ie sys/kern/kern_thr.c:159) is panicing because
> the new thread (td0) does not have a frame (ie td_frame == NULL).
> Creating a frame is obviously the thing to do, but there's no kernel
> stack created for the new thread AFAICT. Without kernel thread.
> cpu_set_upcall() will also fail if we ever reach that point.
>
> Am I missing something here?
I just took a look at this and it _did_ look funny, but it seems to work on i386
so I did a little more digging and it seems that the stack frame is allocated in
the uma thread initialization routine thread_init(), which calls
cpu_thread_setup().
This is currently undefined for ia64: ia64/ia64/vm_machdep.c: line 110
Cheers.
--
Mike Makonnen | GPG-KEY: http://www.identd.net/~mtm/mtm.asc
mtm at identd.net | D228 1A6F C64E 120A A1C9 A3AA DAE1 E2AF DBCC 68B9
mtm at FreeBSD.Org| FreeBSD - The Power To Serve
More information about the freebsd-threads
mailing list