summaryrefslogtreecommitdiffstats
path: root/doc/posix_users/process.t
diff options
context:
space:
mode:
Diffstat (limited to 'doc/posix_users/process.t')
-rw-r--r--doc/posix_users/process.t496
1 files changed, 496 insertions, 0 deletions
diff --git a/doc/posix_users/process.t b/doc/posix_users/process.t
new file mode 100644
index 0000000000..7bb4bb12ad
--- /dev/null
+++ b/doc/posix_users/process.t
@@ -0,0 +1,496 @@
+@c
+@c COPYRIGHT (c) 1988-2002.
+@c On-Line Applications Research Corporation (OAR).
+@c All rights reserved.
+@c
+@c $Id$
+@c
+
+@chapter Process Creation and Execution Manager
+
+@section Introduction
+
+The process creation and execution manager provides the
+functionality associated with the creation and termination
+of processes.
+
+
+The directives provided by the process creation and execution manager are:
+
+@itemize @bullet
+@item @code{fork} - Create a Process
+@item @code{execl} - Execute a File
+@item @code{execv} - Execute a File
+@item @code{execle} - Execute a File
+@item @code{execve} - Execute a File
+@item @code{execlp} - Execute a File
+@item @code{execvp} - Execute a File
+@item @code{pthread_atfork} - Register Fork Handlers
+@item @code{wait} - Wait for Process Termination
+@item @code{waitpid} - Wait for Process Termination
+@item @code{_exit} - Terminate a Process
+@end itemize
+
+@section Background
+
+POSIX process functionality can not be completely
+supported by RTEMS. This is because RTEMS provides no memory
+protection and implements a @i{single process, multi-threaded
+execution model}. In this light, RTEMS provides none of the
+routines that are associated with the creation of new processes.
+However, since the entire RTEMS application (e.g. executable)
+is logically a single POSIX process, RTEMS is able to provide
+implementations of many operations on processes. The rule of
+thumb is that those routines provide a meaningful result.
+For example, @code{getpid()} returns the node number.
+
+@section Operations
+
+The only functionality method defined by this manager which is
+supported by RTEMS is the @code{_exit} service. The
+implementation of @code{_exit} shuts the application down and
+is equivalent to invoking either @code{exit} or
+@code{rtems_shutdown_executive}.
+
+@section Directives
+
+This section details the process creation and execution manager's directives.
+A subsection is dedicated to each of this manager's directives
+and describes the calling sequence, related constants, usage,
+and status codes.
+
+@c
+@c
+@c
+@page
+@subsection fork - Create a Process
+
+@findex fork
+@cindex create a process
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+#include <sys/types.h>
+
+int fork( void );
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection execl - Execute a File
+
+@findex execl
+@cindex execute a file
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int execl(
+ const char *path,
+ const char *arg,
+ ...
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection execv - Execute a File
+
+@findex execv
+@cindex execute a file
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int execv(
+ const char *path,
+ char const *argv[],
+ ...
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection execle - Execute a File
+
+@findex execle
+@cindex execute a file
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int execle(
+ const char *path,
+ const char *arg,
+ ...
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection execve - Execute a File
+
+@findex execve
+@cindex execute a file
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int execve(
+ const char *path,
+ char *const argv[],
+ char *const envp[]
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection execlp - Execute a File
+
+@findex execlp
+@cindex execute a file
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int execlp(
+ const char *file,
+ const char *arg,
+ ...
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection execvp - Execute a File
+
+@findex execvp
+@cindex execute a file
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int execvp(
+ const char *file,
+ char *const argv[]
+ ...
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection pthread_atfork - Register Fork Handlers
+
+@findex pthread_atfork
+@cindex register fork handlers
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+#include <sys/types.h>
+
+int pthread_atfork(
+ void (*prepare)(void),
+ void (*parent)(void),
+ void (*child)(void)
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection wait - Wait for Process Termination
+
+@findex wait
+@cindex wait for process termination
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+#include <sys/types.h>
+#include <sys/wait.h>
+
+int wait(
+ int *stat_loc
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection waitpid - Wait for Process Termination
+
+@findex waitpid
+@cindex wait for process termination
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+int wait(
+ pid_t pid,
+ int *stat_loc,
+ int options
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+@table @b
+@item ENOSYS
+This routine is not supported by RTEMS.
+
+@end table
+
+@subheading DESCRIPTION:
+
+This routine is not supported by RTEMS.
+
+@subheading NOTES:
+
+NONE
+
+@c
+@c
+@c
+@page
+@subsection _exit - Terminate a Process
+
+@findex _exit
+@cindex terminate a process
+
+@subheading CALLING SEQUENCE:
+
+@ifset is-C
+@example
+void _exit(
+ int status
+);
+@end example
+@end ifset
+
+@ifset is-Ada
+@end ifset
+
+@subheading STATUS CODES:
+
+NONE
+
+@subheading DESCRIPTION:
+
+The @code{_exit()} function terminates the calling process.
+
+@subheading NOTES:
+
+In RTEMS, a process is equivalent to the entire application on a single
+processor. Invoking this service terminates the application.