Subject: Re: Behavior of calling System V shared memory functions if not in kernel
To: None <earle@isolar.tujunga.ca.us>
From: David S. Miller <davem@nadzieja.rutgers.edu>
List: current-users
Date: 12/02/1994 22:55:00
Cc: core@netbsd.org
Date: Fri, 02 Dec 1994 09:12:48 -0800
From: Greg Earle <earle@isolar.tujunga.ca.us>
Sender: owner-current-users@netbsd.org
Precedence: list
X-Loop: current-users@NetBSD.ORG
In 1.0, if one calls, e.g., "shmget()" et al. without having a kernel that was
built with "options SYSVSHM", the program is delivered a SIGSYS (Bad system
call) and it usually core dumps.
Is this the proper behavior? A program could catch SIGSYS and make some
appropriate assumptions ("Hmmn, I probably caught that SIGSYS because I tried
to do a shmget() and there must not be any support compiled into the kernel"),
but I should think that instead, "shmget()" and friends should return ENOSYS
if they can't call "symsys()", so that the program can react "normally" and
handle the error.
A possibly correct behavior is to make the sysv shared-memory code be
a loadable kernel-module. If the kernel gets called with a sysvshm
system call and it finds that support is not present it can
dynamically load the sysvshm module. Then if the code isn't used after
a period of time it can dynamically unload the module untill someone
else demands it's services and start the cycle again. I think UnixWare
implements such a scheme.
Later,
David S. Miller
davem@nadzieja.rutgers.edu