INT $0x80
RET
+TEXT runtime·lwp_self(SB),7,$-4
+ MOVL $311, AX // sys__lwp_self
+ INT $0x80
+ RET
+
TEXT runtime·sysctl(SB),7,$28
LEAL arg0+0(FP), SI
LEAL 4(SP), DI
SYSCALL
RET
+TEXT runtime·lwp_self(SB),7,$0
+ MOVL $311, AX // sys__lwp_self
+ SYSCALL
+ RET
+
// Exit the entire program (like C exit)
TEXT runtime·exit(SB),7,$-8
MOVL 8(SP), DI // arg 1 - exit status
extern void runtime·lwp_mcontext_init(void *mc, void *stack, M *m, G *g, void (*fn)(void));
extern int32 runtime·lwp_park(Timespec *abstime, int32 unpark, void *hint, void *unparkhint);
extern int32 runtime·lwp_unpark(int32 lwp, void *hint);
+extern int32 runtime·lwp_self(void);
// From NetBSD's <sys/sysctl.h>
#define CTL_HW 6
runtime·osinit(void)
{
runtime·ncpu = getncpu();
-
- // Main thread is always LWP 1.
- m->procid = 1;
}
void
void
runtime·minit(void)
{
+ m->procid = runtime·lwp_self();
+
// Initialize signal handling
m->gsignal = runtime·malg(32*1024);
runtime·signalstack((byte*)m->gsignal->stackguard - StackGuard, 32*1024);