[comp.os.minix] identifying procs -- a proposal

Leisner.Henr@xerox.com (Marty) (05/12/88)

I really don't like the way the kernel is organized so tasks have proc numbers <
0, servers have proc #s between 0 and low user and user level procs have
proc_nrs above LOW_USER.  I'd much rather have fewer constraints be placed on
numbering/ordering.

It seems there is  area number places where proc pointers have to be converted
to proc numbers to determine what type of proc it is (i.e. for sending/receving
messages).    I'd also want to be able to install more server tasks after boot
time, so I don't have to munge build anymore than I have to.  

A field could be added into the kernel proc table entries to identify the type
of proc.  Something like enum { TASK, SERVER, USER }.  A setuid root User task
could install itself as a server by executing some magic call.  How user level
procs would get the ID of these other server procs for message passing is
another problem.

Something like:
if (caller >= LOW_USER && (dest != FS_PROC_NR && dest != MM_PROC_NR)
would be replaced by
if(caller_ptr->proctype != USER && dest_ptr->proctype != SERVER)
which seems more generic and extensible.

These would also allow some form of process to process communication using the
Minix message passing system.  Currently, user procs can't communicate with user
procs.

Comments?

marty
ARPA:	leisner.henr@xerox.com
GV:  leisner.henr
NS:  martin leisner:henr801c:xerox
UUCP:	nsc!nscimg!amps!marty
 

ncoverby@ndsuvax.UUCP (Glen Overby) (05/15/88)

In article <2509@louie.udel.EDU> Leisner.Henr@xerox.com (Marty) writes:
>I really don't like the way the kernel is organized so tasks have proc numbers <
>0, servers have proc #s between 0 and low user and user level procs have
>proc_nrs above LOW_USER.  I'd much rather have fewer constraints be placed on
>numbering/ordering.

>Comments?

I have a similar mutation in my system.  I added a byte to determine the type
of process (USER, SERVER, DEVICE), which is like what you describe. I went
one step further; I have a "message privilege" word which specifies:
	* restrictions for recieving messages
	* privilege for sending messages

If a process has restrictions on recieving messages, only processes which
are privileged for sending messages can send to them.  If it has no restriciton,
anybody can send to it.

My hacks of this aren't very well tested yet, and are intermixed with my bootup
changes.  The main intention of them is to remove "LOW_USER" so that more
server processes can be added.  I also didn't like the negative process-id
number requirement for device tasks.  
-- 
Glen Overby
Bitnet:  ncoverby@ndsuvax
UUCP: {uunet, ihnp4!umn-cs}!ndsuvax!ncoverby