9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] another kernel question
@ 2008-08-12 23:13 Steve Simon
  2008-08-13  1:47 ` Russ Cox
  0 siblings, 1 reply; 3+ messages in thread
From: Steve Simon @ 2008-08-12 23:13 UTC (permalink / raw)
  To: 9fans

I have found another piece of code I don't understand in the kernel.

syscalls are all fed through a single trap, and the common code which
processes them performs a waserror():

	/sys/src/9/pc/trap.c:694

A few lines down this function (after the system call has been
executed up->nerrlab is checked to ensure we have matching
poperror()s for each waserror() during the execution of said call.

this is fine for most calls, however rfork() explicitly sets up->nerrlab
to zero rather than copying it and memmove()ing up->errlab from the parent
proc to the child:

	 /sys/src/9/port/sysproc.c:90

Surely this means that rfork will always fail with a "bad errstack [19]: -1 extra"
error?

Clearly this doesn't happen but I doin't understand how why it works.

anyone?

-Steve



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-08-13 18:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-12 23:13 [9fans] another kernel question Steve Simon
2008-08-13  1:47 ` Russ Cox
2008-08-13 18:38   ` Steve Simon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).