Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.csd.uwm.edu!cs.utexas.edu!swrinde!ucsd!ucbvax!hplabs!pyramid!csg From: csg@pyramid.pyramid.com (Carl S. Gutekunst) Newsgroups: comp.sys.pyramid Subject: Re: universes in the kernel Message-ID: <83318@pyramid.pyramid.com> Date: 5 Sep 89 16:32:02 GMT References: <1989Sep4.220954.5497@tubsibr.uucp> Reply-To: csg@pyramid.pyramid.com (Carl S. Gutekunst) Organization: Pyramid Technology Corp., Mountain View, CA Lines: 35 In article <1989Sep4.220954.5497@tubsibr.uucp> petri@tubsibr.UUCP (Stefan Petri) writes: >As far as I can see out of these manuals, the only difference >between the universes is when following conditional links in the file system, >and this view-of-the-universe has worked fine for me so far, but now : There are two parts to the dualport. - Conditional symbolic links are evaluated at run time, based on the current "universe" of the process. The universe is a number in the process's u-area. - There are two complete and independent set of system calls -- a complete BSD set, and a complete System V set. (Look in /usr/include/syscalls.h.) System call numbers are coded into the libraries, and the libraries are of course bound to the program by ld. In other words, the universe in which a program is compiled (and loaded) will determine which system calls it uses. The runtime 'universe' will determine which file trees the program "sees." Examples: ucb cat /usr/include/stdio.h The Berkeley 'cat' lists the Berkeley stdio.h. ucb /.attbin/cat /usr/include/stdio.h The SVR3 'cat' lists the Berkeley stdio.h. att cat /usr/include/stdio.h The SVR3 'cat' lists the att stdio.h As far as kill(2) is concerned, the two calls are completely different inside the kernel, though I'm not really up to figuring out why.