5e: fix _tos->pid / libthread bug
parent
5f7342a461
commit
cebce1be70
|
@ -35,3 +35,4 @@ void invalid(u32int);
|
||||||
void fpatransfer(u32int);
|
void fpatransfer(u32int);
|
||||||
void fpaoperation(u32int);
|
void fpaoperation(u32int);
|
||||||
void fparegtransfer(u32int);
|
void fparegtransfer(u32int);
|
||||||
|
void inittos(void);
|
||||||
|
|
|
@ -108,8 +108,16 @@ initstack(int argc, char **argv)
|
||||||
ap += len;
|
ap += len;
|
||||||
}
|
}
|
||||||
*(ulong *) vaddrnol(sp, 4) = 0;
|
*(ulong *) vaddrnol(sp, 4) = 0;
|
||||||
|
inittos();
|
||||||
|
}
|
||||||
|
|
||||||
((Tos *) vaddrnol(tos, sizeof(Tos)))->pid = getpid();
|
void
|
||||||
|
inittos(void)
|
||||||
|
{
|
||||||
|
ulong tos;
|
||||||
|
|
||||||
|
tos = mach->utop - sizeof(Tos) * 2;
|
||||||
|
((Tos *) vaddrnol(tos, sizeof(Tos)))->pid = P->pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -401,6 +401,7 @@ sysrfork(void)
|
||||||
P = p;
|
P = p;
|
||||||
atexit(cleanup);
|
atexit(cleanup);
|
||||||
P->pid = getpid();
|
P->pid = getpid();
|
||||||
|
inittos();
|
||||||
addproc(P);
|
addproc(P);
|
||||||
}
|
}
|
||||||
P->R[0] = rc;
|
P->R[0] = rc;
|
||||||
|
|
Loading…
Reference in New Issue