mirror of
https://github.com/golang/go
synced 2024-11-21 20:04:44 -07:00
darwin: bsdthread_create can fail; print good error
Fixes #549. R=adg CC=golang-dev https://golang.org/cl/1019042
This commit is contained in:
parent
7c77e450cc
commit
718da3339a
@ -130,8 +130,10 @@ TEXT bsdthread_create(SB),7,$32
|
||||
MOVL BX, 16(SP) // pthread
|
||||
MOVL $0x1000000, 20(SP) // flags = PTHREAD_START_CUSTOM
|
||||
INT $0x80
|
||||
JAE 2(PC)
|
||||
CALL notok(SB)
|
||||
JAE 3(PC)
|
||||
MOVL $-1, AX
|
||||
RET
|
||||
MOVL $0, AX
|
||||
RET
|
||||
|
||||
// The thread that bsdthread_create creates starts executing here,
|
||||
|
@ -116,8 +116,10 @@ TEXT bsdthread_create(SB),7,$0
|
||||
MOVQ $0, R9 // paranoia
|
||||
MOVQ $(0x2000000+360), AX // bsdthread_create
|
||||
SYSCALL
|
||||
JCC 2(PC)
|
||||
CALL notok(SB)
|
||||
JCC 3(PC)
|
||||
MOVL $-1, AX
|
||||
RET
|
||||
MOVL $0, AX
|
||||
RET
|
||||
|
||||
// The thread that bsdthread_create creates starts executing here,
|
||||
|
@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
void bsdthread_create(void*, M*, G*, void(*)(void));
|
||||
int32 bsdthread_create(void*, M*, G*, void(*)(void));
|
||||
void bsdthread_register(void);
|
||||
int32 mach_msg_trap(MachHeader*, int32, uint32, uint32, uint32, uint32, uint32);
|
||||
uint32 mach_reply_port(void);
|
||||
|
@ -157,7 +157,8 @@ newosproc(M *m, G *g, void *stk, void (*fn)(void))
|
||||
printf("newosproc stk=%p m=%p g=%p fn=%p id=%d/%d ostk=%p\n",
|
||||
stk, m, g, fn, m->id, m->tls[0], &m);
|
||||
}
|
||||
bsdthread_create(stk, m, g, fn);
|
||||
if(bsdthread_create(stk, m, g, fn) < 0)
|
||||
throw("cannot create new OS thread");
|
||||
}
|
||||
|
||||
// Called to initialize a new m (including the bootstrap m).
|
||||
|
Loading…
Reference in New Issue
Block a user