[PATCH] 2.4.2 -- Process Aggregates
Applies against the 2.4.2 kernel and supports i386 and ia64 systems. This patch provides the ability to register support for generic process groups. It does this by adding and entry in the task_struct to maintain a list of pagg (process aggregate) group attachments (or memberships). In addition, there are interfaces for modules to register as providing support for types of process aggregates. Changes were made to the fork and exit system calls so that child processes inherits group memberships from the parent process. PAGG features: - Child inherits attachment to the same PAGG containers as the parent. - PAGG Containers are updated when new processes are attached (eg. during process forks). - PAGG Containers are updated when a process is detached (eg. when a process exits). - System call for controlling linux kernel modules that implement PAGG containers. Another patch will follow that implements a job container using this pagg interface. The title for that patch will be: "[PATCH] 2.4.2 -- Linux Jobs". Since the pagg patch provides a generic feature, and jobs is just one implementation using that feature, the code was split into two patches. The pagg patch is useful by itself and does not require the job patch. This work was done so that we could provide a job accounting package (called CSA). For additional information about process aggregates & jobs, please go to the home page at: http://oss.sgi.com/projects/pagg At this site you can download these patches and the commands package (in RPM or tarball format). Also, there are additional patches for other 2.4.x kernels. For additional information about CSA job accounting, please consult the home page at: http://oss.sgicom/projects/csa patch follows (linux-2.4.2-pagg.patch): --- diff -Naur linux-2.4.2/Documentation/Configure.help linux-2.4.2-pagg/Documentation/Configure.help --- linux-2.4.2/Documentation/Configure.helpMon Feb 19 12:18:18 2001 +++ linux-2.4.2-pagg/Documentation/Configure.help Mon Mar 5 08:46:36 2001 @@ -14648,6 +14648,14 @@ keys are documented in Documentation/sysrq.txt. Don't say Y unless you really know what this hack does. +Process Aggregates support +CONFIG_PAGG + Say Y here if you will be loading modules which provide support + for process aggregate containers. Currently, this option is only + applicable to Intel (i386) architectures. Examples of such modules + include the Linux Jobs module and the Linux Array Sessions module. + If you will not be using such modules, say N. + ISDN subsystem CONFIG_ISDN ISDN ("Integrated Services Digital Networks", called RNIS in France) diff -Naur linux-2.4.2/Documentation/pagg.txt linux-2.4.2-pagg/Documentation/pagg.txt --- linux-2.4.2/Documentation/pagg.txt Wed Dec 31 18:00:00 1969 +++ linux-2.4.2-pagg/Documentation/pagg.txt Mon Mar 5 08:46:36 2001 @@ -0,0 +1,253 @@ +Linux Process Aggregates (PAGG) +--- + +Comments by: Sam Watters <[EMAIL PROTECTED]> +Last Update: 2001.01.30 + + +1. Description + +Borrowing the process aggregate concept found in IRIX 6.5 and implementing +that concept in the Linux kernel provides a generalized mechanism for +providing arbitrary process groups. The process aggregate or PAGG +consists of a series of functions for registering and unregistering +support for PAGG's with the kernel. This is similar to the support +currently provided within Linux that allows for dynamic support +of filesystems, block and character devices, symbol tables, network +devices, serial devices, and execution domains. Implementation of the +PAGG provides developers the basic hooks necessary to implement kernel +modules for specific process containers, such as the job container. + +The fork(2) system call was altered to support PAGGs. If a process is +attached to any PAGG containers and that process forks, the child process +will also be attached to the same PAGG containers. The PAGG containers +are be updated to indicate that a new process has been attached. +The update is accomplished via a callback function provided by the +PAGG module. + +The exit notification function in the kernel has also been altered. If a +process is attached to any PAGG containers and that process is exiting, +the PAGG containers are updated to indicate that a process has detached +from the container. The update is accomplished via a callback function +provided by the PAGG module. + + +2. Kernel Changes + +This section will describe files and data structures that need to be +modified to implement PAGGs. In addition, new files and data +structures will also be introduced. + +3.1. Modified Files + +The following files require changes to implement PAGGs: + +- Documentation/Configure.help +- arch/i386/config.in +- include/asm-i386/unistd.h +- include/linux/sched.h +- arch/i386/kernel/entry.S +- kernel/Makefile +- kernel/exit.c +-
[PATCH] 2.4.2 -- Process Aggregates
Applies against the 2.4.2 kernel and supports i386 and ia64 systems. This patch provides the ability to register support for generic process groups. It does this by adding and entry in the task_struct to maintain a list of pagg (process aggregate) group attachments (or memberships). In addition, there are interfaces for modules to register as providing support for types of process aggregates. Changes were made to the fork and exit system calls so that child processes inherits group memberships from the parent process. PAGG features: - Child inherits attachment to the same PAGG containers as the parent. - PAGG Containers are updated when new processes are attached (eg. during process forks). - PAGG Containers are updated when a process is detached (eg. when a process exits). - System call for controlling linux kernel modules that implement PAGG containers. Another patch will follow that implements a job container using this pagg interface. The title for that patch will be: "[PATCH] 2.4.2 -- Linux Jobs". Since the pagg patch provides a generic feature, and jobs is just one implementation using that feature, the code was split into two patches. The pagg patch is useful by itself and does not require the job patch. This work was done so that we could provide a job accounting package (called CSA). For additional information about process aggregates jobs, please go to the home page at: http://oss.sgi.com/projects/pagg At this site you can download these patches and the commands package (in RPM or tarball format). Also, there are additional patches for other 2.4.x kernels. For additional information about CSA job accounting, please consult the home page at: http://oss.sgicom/projects/csa patch follows (linux-2.4.2-pagg.patch): --- diff -Naur linux-2.4.2/Documentation/Configure.help linux-2.4.2-pagg/Documentation/Configure.help --- linux-2.4.2/Documentation/Configure.helpMon Feb 19 12:18:18 2001 +++ linux-2.4.2-pagg/Documentation/Configure.help Mon Mar 5 08:46:36 2001 @@ -14648,6 +14648,14 @@ keys are documented in Documentation/sysrq.txt. Don't say Y unless you really know what this hack does. +Process Aggregates support +CONFIG_PAGG + Say Y here if you will be loading modules which provide support + for process aggregate containers. Currently, this option is only + applicable to Intel (i386) architectures. Examples of such modules + include the Linux Jobs module and the Linux Array Sessions module. + If you will not be using such modules, say N. + ISDN subsystem CONFIG_ISDN ISDN ("Integrated Services Digital Networks", called RNIS in France) diff -Naur linux-2.4.2/Documentation/pagg.txt linux-2.4.2-pagg/Documentation/pagg.txt --- linux-2.4.2/Documentation/pagg.txt Wed Dec 31 18:00:00 1969 +++ linux-2.4.2-pagg/Documentation/pagg.txt Mon Mar 5 08:46:36 2001 @@ -0,0 +1,253 @@ +Linux Process Aggregates (PAGG) +--- + +Comments by: Sam Watters [EMAIL PROTECTED] +Last Update: 2001.01.30 + + +1. Description + +Borrowing the process aggregate concept found in IRIX 6.5 and implementing +that concept in the Linux kernel provides a generalized mechanism for +providing arbitrary process groups. The process aggregate or PAGG +consists of a series of functions for registering and unregistering +support for PAGG's with the kernel. This is similar to the support +currently provided within Linux that allows for dynamic support +of filesystems, block and character devices, symbol tables, network +devices, serial devices, and execution domains. Implementation of the +PAGG provides developers the basic hooks necessary to implement kernel +modules for specific process containers, such as the job container. + +The fork(2) system call was altered to support PAGGs. If a process is +attached to any PAGG containers and that process forks, the child process +will also be attached to the same PAGG containers. The PAGG containers +are be updated to indicate that a new process has been attached. +The update is accomplished via a callback function provided by the +PAGG module. + +The exit notification function in the kernel has also been altered. If a +process is attached to any PAGG containers and that process is exiting, +the PAGG containers are updated to indicate that a process has detached +from the container. The update is accomplished via a callback function +provided by the PAGG module. + + +2. Kernel Changes + +This section will describe files and data structures that need to be +modified to implement PAGGs. In addition, new files and data +structures will also be introduced. + +3.1. Modified Files + +The following files require changes to implement PAGGs: + +- Documentation/Configure.help +- arch/i386/config.in +- include/asm-i386/unistd.h +- include/linux/sched.h +- arch/i386/kernel/entry.S +- kernel/Makefile +- kernel/exit.c +-