Commit graph

30 commits

Author SHA1 Message Date
Arun Thomas
1f9ce647cf Move archtypes.h, fpu.h, and stackframe.h
Move archtypes.h to include/ dir, since several servers require it. Move
fpu.h and stackframe.h to arch-specific header directory. Make source
files and makefiles aware of the new header locations.
2010-03-09 09:41:14 +00:00
Cristiano Giuffrida
f4574783dc Rewrite of boot process
KERNEL CHANGES:
- The kernel only knows about privileges of kernel tasks and the root system
process (now RS).
- Kernel tasks and the root system process are the only processes that are made
schedulable by the kernel at startup. All the other processes in the boot image
don't get their privileges set at startup and are inhibited from running by the
RTS_NO_PRIV flag.
- Removed the assumption on the ordering of processes in the boot image table.
System processes can now appear in any order in the boot image table.
- Privilege ids can now be assigned both statically or dynamically. The kernel
assigns static privilege ids to kernel tasks and the root system process. Each
id is directly derived from the process number.
- User processes now all share the static privilege id of the root user
process (now INIT).
- sys_privctl split: we have more calls now to let RS set privileges for system
processes. SYS_PRIV_ALLOW / SYS_PRIV_DISALLOW are only used to flip the
RTS_NO_PRIV flag and allow / disallow a process from running. SYS_PRIV_SET_SYS /
SYS_PRIV_SET_USER are used to set privileges for a system / user process.
- boot image table flags split: PROC_FULLVM is the only flag that has been
moved out of the privilege flags and is still maintained in the boot image
table. All the other privilege flags are out of the kernel now.

RS CHANGES:
- RS is the only user-space process who gets to run right after in-kernel
startup.
- RS uses the boot image table from the kernel and three additional boot image
info table (priv table, sys table, dev table) to complete the initialization
of the system.
- RS checks that the entries in the priv table match the entries in the boot
image table to make sure that every process in the boot image gets schedulable.
- RS only uses static privilege ids to set privileges for system services in
the boot image.
- RS includes basic memory management support to allocate the boot image buffer
dynamically during initialization. The buffer shall contain the executable
image of all the system services we would like to restart after a crash.
- First step towards decoupling between resource provisioning and resource
requirements in RS: RS must know what resources it needs to restart a process
and what resources it has currently available. This is useful to tradeoff
reliability and resource consumption. When required resources are missing, the
process cannot be restarted. In that case, in the future, a system flag will
tell RS what to do. For example, if CORE_PROC is set, RS should trigger a
system-wide panic because the system can no longer function correctly without
a core system process.

PM CHANGES:
- The process tree built at initialization time is changed to have INIT as root
with pid 0, RS child of INIT and all the system services children of RS. This
is required to make RS in control of all the system services.
- PM no longer registers labels for system services in the boot image. This is
now part of RS's initialization process.
2009-12-11 00:08:19 +00:00
Tomas Hruby
37a7e1b76b Use of isemptyp() macro instead of testing RTS_SLOT_FREE flag
- some code used to test if only this flag is set, some if also this flag is
  set. This change unifies the test
2009-11-12 08:35:26 +00:00
Tomas Hruby
a972f4bacc All macros defining rts flags are prefixed with RTS_
- macros used with RTS_SET group of macros to define struct proc p_rts_flags are
  now prefixed with RTS_ to make things clear
2009-11-10 09:11:13 +00:00
Tomas Hruby
ab6fc64984 ps fix
It removes the no more existing marcos (XPIPE XPOPEN XDOPEN XLOCK XSELECT) and
replaces them with the new ones from servers/vfs/const.h No more dependency on
NR_TASKS macro.
2009-09-24 16:00:59 +00:00
Erik van der Kouwe
789c8a6ee4 Fixed compilation errors in ps.c and rs/manager.c. The former was fixed by disabling code using no-longer-existant flags and the latter by removing the spurious parameter i from sys_privctl 2009-09-23 08:46:17 +00:00
Ben Gras
8beff61807 get fproc table. don't print size as that doesn't say much in VM mode.
this restores ps.
2008-12-15 13:05:52 +00:00
Ben Gras
4c1ac39678 Changes so the HZ constant isn't needed any more. 2008-12-11 14:27:18 +00:00
Ben Gras
c078ec0331 Basic VM and other minor improvements.
Not complete, probably not fully debugged or optimized.
2008-11-19 12:26:10 +00:00
Philip Homburg
41efa40ad2 Added XDOPEN. 2008-02-25 12:12:07 +00:00
Ben Gras
6f77685609 Split of architecture-dependent and -independent functions for i386,
mainly in the kernel and headers. This split based on work by
Ingmar Alting <iaalting@cs.vu.nl> done for his Minix PowerPC architecture
port.

 . kernel does not program the interrupt controller directly, do any
   other architecture-dependent operations, or contain assembly any more,
   but uses architecture-dependent functions in arch/$(ARCH)/.
 . architecture-dependent constants and types defined in arch/$(ARCH)/include.
 . <ibm/portio.h> moved to <minix/portio.h>, as they have become, for now,
   architecture-independent functions.
 . int86, sdevio, readbios, and iopenable are now i386-specific kernel calls
   and live in arch/i386/do_* now.
 . i386 arch now supports even less 86 code; e.g. mpx86.s and klib86.s have
   gone, and 'machine.protected' is gone (and always taken to be 1 in i386).
   If 86 support is to return, it should be a new architecture.
 . prototypes for the architecture-dependent functions defined in
   kernel/arch/$(ARCH)/*.c but used in kernel/ are in kernel/proto.h
 . /etc/make.conf included in makefiles and shell scripts that need to
   know the building architecture; it defines ARCH=<arch>, currently only
   i386.
 . some basic per-architecture build support outside of the kernel (lib)
 . in clock.c, only dequeue a process if it was ready
 . fixes for new include files

files deleted:
 . mpx/klib.s - only for choosing between mpx/klib86 and -386
 . klib86.s - only for 86

i386-specific files files moved (or arch-dependent stuff moved) to arch/i386/:
 . mpx386.s (entry point)
 . klib386.s
 . sconst.h
 . exception.c
 . protect.c
 . protect.h
 . i8269.c
2006-12-22 15:22:27 +00:00
Ben Gras
fa0ba56bc9 Merge of VFS by Balasz Gerofi with Minix trunk. 2006-10-25 13:40:36 +00:00
Ben Gras
4a6cd8f878 Make ps suid root instead of sguid kmem. This makes getsysinfo
work for it.
2006-07-26 11:34:26 +00:00
Ben Gras
777dbbe3f7 Everyone's endpoint number 2006-06-23 12:16:22 +00:00
Ben Gras
3ffa1684ae New option -E for ps that prints endpoint numbers instead of pids. 2006-06-23 11:59:20 +00:00
Ben Gras
df361e818e Endpoint-enabled fix 2006-03-08 13:10:35 +00:00
Ben Gras
d1d4b5ae4d *** empty log message *** 2006-03-03 10:22:35 +00:00
Ben Gras
edb541fb98 Display "select" blocking status correctly, and add check for wrong
blocking process number
2005-11-02 17:43:19 +00:00
Ben Gras
7c2b94fd56 Make ps compile even if source tree isn't /usr/src 2005-10-03 11:01:21 +00:00
Ben Gras
c42fb551b8 ast@'s build files for easypack. 2005-09-19 13:15:15 +00:00
Ben Gras
693c7abe2a ps was looking for INIT as first user process, but INIT has become init.
There are still some checks in ps that presume there are only system
processes before INIT and all others are user processes..
2005-08-04 08:25:10 +00:00
Ben Gras
8f07525484 format prettifictions; better task/server/user process detection logic 2005-07-04 09:19:15 +00:00
Jorrit Herder
4fda4bbcb6 *** empty log message *** 2005-06-30 15:56:19 +00:00
Jorrit Herder
f336ce29bb Changed kernel process table format affected ps.
New mkdep.sh script and affected Makefile.
2005-06-24 16:19:21 +00:00
Ben Gras
5e17902a0d Connected ps to build 2005-06-20 09:23:55 +00:00
Jorrit Herder
7279bb68ef Applied MINIX 2.0.4 pathes provides by Al Woodhull. 2005-06-17 13:00:04 +00:00
Jorrit Herder
2f74381dcc Fixed 'ps' utility: now get process table addresses with getsysinfo() calls.
To be done: get copies of process tables instead of using /dev/(k)mem.
2005-06-06 13:51:50 +00:00
Ben Gras
7dfa3c595b mm -> pm fixes 2005-05-04 09:27:47 +00:00
Ben Gras
efa2322895 . Moved sysenv to /bin (as well), used to read some boot parameters
in /etc/rc before /usr is mounted
. fixed ps.c compile breakage (MM_PROC_NR rename)
. made setup.sh a little less floppy-centric (cosmetic)
. removed ps binary from cvs (whoops!)
2005-05-03 08:58:18 +00:00
Ben Gras
9865aeaa79 Initial revision 2005-04-21 14:53:53 +00:00