diff options
author | rab <none@none> | 2006-01-06 10:19:31 -0800 |
---|---|---|
committer | rab <none@none> | 2006-01-06 10:19:31 -0800 |
commit | 0baeff3d96eae184e775c1064f1836090446a7bf (patch) | |
tree | 223a82fa3266e75588aace66980f22165d83fcff /usr/src/uts/common/os/fork.c | |
parent | d045b9872121ef87817d5d01968d80cc01574bc8 (diff) | |
download | illumos-joyent-0baeff3d96eae184e775c1064f1836090446a7bf.tar.gz |
6219276 need per-process equivalent of device context
6244042 x86 kernels do not need default LDTs
6308413 sysi86(SI86DSCR) rejects the first valid custom descriptor #6 with errno
6308413 contributed by Juergen Keil <jk@tools.de>
Diffstat (limited to 'usr/src/uts/common/os/fork.c')
-rw-r--r-- | usr/src/uts/common/os/fork.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/usr/src/uts/common/os/fork.c b/usr/src/uts/common/os/fork.c index 8c8a4e984a..4171c0b122 100644 --- a/usr/src/uts/common/os/fork.c +++ b/usr/src/uts/common/os/fork.c @@ -21,7 +21,7 @@ */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -407,12 +407,11 @@ cfork(int isvfork, int isfork1) corectl_path_hold(cp->p_corefile = p->p_corefile); corectl_content_hold(cp->p_content = p->p_content); -#if defined(__x86) /* - * Get the right ldt descr for the child. + * Duplicate process context ops, if any. */ - (void) ldt_dup(p, cp); -#endif + if (p->p_pctx) + forkpctx(p, cp); #ifdef __sparc utrap_dup(p, cp); @@ -796,10 +795,6 @@ newproc(void (*pc)(), caddr_t arg, id_t cid, int pri, struct contract **ct) p->p_as = &kas; -#if defined(__x86) - (void) ldt_dup(&p0, p); /* Get the default ldt descr */ -#endif - if ((lwp = lwp_create(pc, arg, 0, p, TS_STOPPED, pri, &curthread->t_hold, cid, 1)) == NULL) { task_t *tk; |