universes in the kernel

Eric Bergan eric at pyramid.pyramid.com
Fri Sep 8 01:57:37 AEST 1989


In article <83318 at pyramid.pyramid.com> csg at pyramid.pyramid.com (Carl S. Gutekunst) writes:
>In article <1989Sep4.220954.5497 at tubsibr.uucp> petri at 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 :
>
>In other words, the universe in which a program is compiled (and loaded) will
>determine which system calls it uses.

	More fully, it is determined by the library (referenced through
the universe-dependent symbolic link) that has the universe specific
version of the system call in it. That is why extracting the kill.o from
the att library, and linking it into a "bsd" binary still results in
it calling the att kill system call.

>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.

	The main difference is that under att, you can deliver signals
to zombie's, which you can't under bsd. To maintain the proper semantics
in both universes, you need two different system calls.


	WARNING:

	After reading this, some of you will realize you can start trying
to pull att functionality into the bsd universe, or vice versa, by
yanking things out of libraries and building new ones. 

	THIS IS UNSUPPORTED.

	There are areas of problems.  For instance, trying to pull bsd
signals into the att universe can effect far more than you intend it to
(sleep, alarm, wait, ...) Cross universe linking of library functions
is definitely not supported - there are lots of pitfalls there -
different semantics between the universes (*printf, for instance), also
incompatabilities in structure definitions (FILE is different in the
two universes, hence stdio is different.) Most of all - do not try
something like 

	bsd cc -o foo foo.c /.attlib/libc.a

I.E. Trying to include the whole alternate universe libc. Almost
guarenteed to not work - particularly if you do anything with stdio.
Likewise for trying to do 

	att cc -o foo foo.c /.ucblib/libc.a

	We are aware that it would be nice if there were a "merged"
universe, or some way to access the "missing" functions from the other
universe, safely in all applications. We are studying the issues, but
are certainly not in a position to announce either a product, upgrade,
or product direction at this time.

-- 

					eric
					...!pyramid!eric



More information about the Comp.sys.pyramid mailing list