[PATCH] 2.4.2 -- Process Aggregates

2001-03-07 Thread Sam Watters


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

2001-03-07 Thread Sam Watters


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