Added automatic generation of files.

This commit is contained in:
Joel Sherrill
1998-08-01 15:31:49 +00:00
parent 93e3b8a36e
commit 6c914e928c
9 changed files with 3478 additions and 1 deletions

View File

@@ -18,6 +18,8 @@ dirs:
COMMON_FILES=../common/cpright.texi
GENERATED_FILES=clock.texi
FILES= clock.texi cond.texi key.texi mutex.texi $(PROJECT).texi preface.texi \
sched.texi signal.texi thread.texi $(COMMON_FILES)
@@ -50,5 +52,44 @@ html: dirs
clean:
rm -f *.o $(PROG) *.txt core *.html
rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
rm -f $(PROJECT) $(PROJECT)-* _*
rm -f $(PROJECT) $(PROJECT)-* _* $(GENERATED_FILES)
preface.texi: preface.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
thread.texi: thread.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
signal.texi: signal.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
mutex.texi: mutex.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
cond.texi: cond.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
key.texi: key.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
clock.texi: clock.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t
sched.texi: sched.t Makefile
$(BMENU) -p "" \
-u "Top" \
-n "" ${*}.t

264
doc/new_chapters/clock.t Normal file
View File

@@ -0,0 +1,264 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Clock Manager, Clock Manager Introduction, pthread_getspecific, Top
@end ifinfo
@chapter Clock Manager
@ifinfo
@menu
* Clock Manager Introduction::
* Clock Manager Background::
* Clock Manager Operations::
* Clock Manager Directives::
@end menu
@end ifinfo
@ifinfo
@node Clock Manager Introduction, Clock Manager Background, Clock Manager, Clock Manager
@end ifinfo
@section Introduction
The clock manager ...
The directives provided by the clock manager are:
@itemize @bullet
@item @code{clock_gettime} -
@item @code{clock_settime} -
@item @code{clock_getres} -
@item @code{nanosleep} -
@item @code{time} -
@end itemize
@ifinfo
@node Clock Manager Background, Clock Manager Operations, Clock Manager Introduction, Clock Manager
@end ifinfo
@section Background
@ifinfo
@node Clock Manager Operations, Clock Manager Directives, Clock Manager Background, Clock Manager
@end ifinfo
@section Operations
@ifinfo
@node Clock Manager Directives, clock_gettime, Clock Manager Operations, Clock Manager
@end ifinfo
@section Directives
@ifinfo
@menu
* clock_gettime::
* clock_settime::
* clock_getres::
* sleep::
* nanosleep::
* time::
@end menu
@end ifinfo
This section details the clock 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.
@page
@ifinfo
@node clock_gettime, clock_settime, Clock Manager Directives, Clock Manager Directives
@end ifinfo
@subsection clock_gettime
@subheading CALLING SEQUENCE:
@example
#include <time.h>
int clock_gettime(
clockid_t clock_id,
struct timespec *tp
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EINVAL
The tp pointer parameter is invalid.
@item EINVAL
The clock_id specified is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node clock_settime, clock_getres, clock_gettime, Clock Manager Directives
@end ifinfo
@subsection clock_settime
@subheading CALLING SEQUENCE:
@example
#include <time.h>
int clock_settime(
clockid_t clock_id,
const struct timespec *tp
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EINVAL
The tp pointer parameter is invalid.
@item EINVAL
The clock_id specified is invalid.
@item EINVAL
The contents of the tp structure are invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node clock_getres, sleep, clock_settime, Clock Manager Directives
@end ifinfo
@subsection clock_getres
@subheading CALLING SEQUENCE:
@example
#include <time.h>
int clock_getres(
clockid_t clock_id,
struct timespec *res
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EINVAL
The res pointer parameter is invalid.
@item EINVAL
The clock_id specified is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
If res is NULL, then the resolution is not returned.
@page
@ifinfo
@node sleep, nanosleep, clock_getres, Clock Manager Directives
@end ifinfo
@subsection sleep
@subheading CALLING SEQUENCE:
@example
#include <time.h>
unsigned int sleep(
unsigned int seconds
);
@end example
@subheading STATUS CODES:
This routine returns the number of unslept seconds.
@subheading DESCRIPTION:
@subheading NOTES:
This call is interruptible by a signal.
@page
@ifinfo
@node nanosleep, time, sleep, Clock Manager Directives
@end ifinfo
@subsection nanosleep
@subheading CALLING SEQUENCE:
@example
#include <time.h>
int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EINTR
The routine was interrupted by a signal.
@item EAGAIN
The requested sleep period specified negative seconds or nanoseconds.
@item EINVAL
The requested sleep period specified an invalid number for the nanoseconds
field.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
This call is interruptible by a signal.
@page
@ifinfo
@node time, Scheduler Manager, nanosleep, Clock Manager Directives
@end ifinfo
@subsection nanosleep
@subheading CALLING SEQUENCE:
@example
#include <time.h>
int time(
time_t *tloc
);
@end example
@subheading STATUS CODES:
This routine returns the number of seconds since the Epoch.
@subheading DESCRIPTION:
@subheading NOTES:

386
doc/new_chapters/cond.t Normal file
View File

@@ -0,0 +1,386 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Condition Variable Manager, Condition Variable Manager Introduction, pthread_mutex_getprioceiling, Top
@end ifinfo
@chapter Condition Variable Manager
@ifinfo
@menu
* Condition Variable Manager Introduction::
* Condition Variable Manager Background::
* Condition Variable Manager Operations::
* Condition Variable Manager Directives::
@end menu
@end ifinfo
@ifinfo
@node Condition Variable Manager Introduction, Condition Variable Manager Background, Condition Variable Manager, Condition Variable Manager
@end ifinfo
@section Introduction
The condition variable manager ...
The directives provided by the condition variable manager are:
@itemize @bullet
@item @code{pthread_condattr_init} -
@item @code{pthread_condattr_destroy} -
@item @code{pthread_condattr_setpshared} -
@item @code{pthread_condattr_getpshared} -
@item @code{pthread_cond_init} -
@item @code{pthread_cond_destroy} -
@item @code{pthread_cond_signal} -
@item @code{pthread_cond_broadcast} -
@item @code{pthread_cond_wait} -
@item @code{pthread_cond_timedwait} -
@end itemize
@ifinfo
@node Condition Variable Manager Background, Condition Variable Manager Operations, Condition Variable Manager Introduction, Condition Variable Manager
@end ifinfo
@section Background
@ifinfo
@node Condition Variable Manager Operations, Condition Variable Manager Directives, Condition Variable Manager Background, Condition Variable Manager
@end ifinfo
@section Operations
@ifinfo
@node Condition Variable Manager Directives, pthread_condattr_init, Condition Variable Manager Operations, Condition Variable Manager
@end ifinfo
@section Directives
@ifinfo
@menu
* pthread_condattr_init::
* pthread_condattr_destroy::
* pthread_condattr_setpshared::
* pthread_condattr_getpshared::
* pthread_cond_init::
* pthread_cond_destroy::
* pthread_cond_signal::
* pthread_cond_broadcast::
* pthread_cond_wait::
* pthread_cond_timedwait::
@end menu
@end ifinfo
This section details the condition variable 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.
@page
@ifinfo
@node pthread_condattr_init, pthread_condattr_destroy, Condition Variable Manager Directives, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_condattr_init
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_condattr_init(
pthread_condattr_t *attr
);
@end example
@subheading STATUS CODES:
@table @b
@item ENOMEM
Insufficient memory is available to initialize the condition variable
attributes object.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_condattr_destroy, pthread_condattr_setpshared, pthread_condattr_init, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_condattr_destroy
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_condattr_destroy(
pthread_condattr_t *attr
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute object specified is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_condattr_setpshared, pthread_condattr_getpshared, pthread_condattr_destroy, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_condattr_setpshared
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_condattr_setpshared(
pthread_condattr_t *attr,
int pshared
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_condattr_getpshared, pthread_cond_init, pthread_condattr_setpshared, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_condattr_getpshared
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_condattr_getpshared(
const pthread_condattr_t *attr,
int *pshared
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_cond_init, pthread_cond_destroy, pthread_condattr_getpshared, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_cond_init
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_cond_init(
pthread_cond_t *cond,
const pthread_condattr_t *attr
);
@end example
@subheading STATUS CODES:
@table @b
@item EAGAIN
The system lacked a resource other than memory necessary to create the
initialize the condition variable object.
@item ENOMEM
Insufficient memory is available to initialize the condition variable object.
@item EBUSY
The specified condition variable has already been initialized.
@item EINVAL
The specified attribute value is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_cond_destroy, pthread_cond_signal, pthread_cond_init, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_cond_destroy
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_cond_destroy(
pthread_cond_t *cond
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified condition variable is invalid.
@item EBUSY
The specified condition variable is currently in use.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_cond_signal, pthread_cond_broadcast, pthread_cond_destroy, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_cond_signal
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_cond_signal(
pthread_cond_t *cond
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified condition variable is not valid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
This routine should not be invoked from a handler from an asynchronous signal
handler or an interrupt service routine.
@page
@ifinfo
@node pthread_cond_broadcast, pthread_cond_wait, pthread_cond_signal, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_cond_broadcast
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_cond_broadcast(
pthread_cond_t *cond
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified condition variable is not valid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
This routine should not be invoked from a handler from an asynchronous signal
handler or an interrupt service routine.
@page
@ifinfo
@node pthread_cond_wait, pthread_cond_timedwait, pthread_cond_broadcast, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_cond_wait
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_cond_wait(
pthread_cond_t *cond,
pthread_mutex_t *mutex
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified condition variable or mutex is not initialized OR different
mutexes were specified for concurrent pthread_cond_wait() and
pthread_cond_timedwait() operations on the same condition variable OR
the mutex was not owned by the current thread at the time of the call.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_cond_timedwait, Key Manager, pthread_cond_wait, Condition Variable Manager Directives
@end ifinfo
@subsection pthread_cond_timedwait
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_cond_timedwait(
pthread_cond_t *cond,
pthread_mutex_t *mutex,
const struct timespec *abstime
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified condition variable or mutex is not initialized OR different
mutexes were specified for concurrent pthread_cond_wait() and
pthread_cond_timedwait() operations on the same condition variable OR
the mutex was not owned by the current thread at the time of the call.
@item ETIMEDOUT
The specified time has elapsed without the condition variable being
satisfied.
@end table
@subheading DESCRIPTION:
@subheading NOTES:

179
doc/new_chapters/key.t Normal file
View File

@@ -0,0 +1,179 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Key Manager, Key Manager Introduction, pthread_cond_timedwait, Top
@end ifinfo
@chapter Key Manager
@ifinfo
@menu
* Key Manager Introduction::
* Key Manager Background::
* Key Manager Operations::
* Key Manager Directives::
@end menu
@end ifinfo
@ifinfo
@node Key Manager Introduction, Key Manager Background, Key Manager, Key Manager
@end ifinfo
@section Introduction
The key manager ...
The directives provided by the key manager are:
@itemize @bullet
@item @code{pthread_key_create} -
@item @code{pthread_key_delete} -
@item @code{pthread_setspecific} -
@item @code{pthread_getspecific} -
@end itemize
@ifinfo
@node Key Manager Background, Key Manager Operations, Key Manager Introduction, Key Manager
@end ifinfo
@section Background
@ifinfo
@node Key Manager Operations, Key Manager Directives, Key Manager Background, Key Manager
@end ifinfo
@section Operations
@ifinfo
@node Key Manager Directives, pthread_key_create, Key Manager Operations, Key Manager
@end ifinfo
@section Directives
@ifinfo
@menu
* pthread_key_create::
* pthread_key_delete::
* pthread_setspecific::
* pthread_getspecific::
@end menu
@end ifinfo
This section details the key 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.
@page
@ifinfo
@node pthread_key_create, pthread_key_delete, Key Manager Directives, Key Manager Directives
@end ifinfo
@subsection pthread_key_create
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_key_create(
pthread_key_t *key,
void (*destructor)( void * )
);
@end example
@subheading STATUS CODES:
@table @b
@item EAGAIN
There were not enough resources available to create another key.
@item ENOMEM
Insufficient memory exists to create the key.
@end table
@page
@ifinfo
@node pthread_key_delete, pthread_setspecific, pthread_key_create, Key Manager Directives
@end ifinfo
@subsection pthread_key_delete
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_key_delete(
pthread_key_t key,
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The key was invalid
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_setspecific, pthread_getspecific, pthread_key_delete, Key Manager Directives
@end ifinfo
@subsection pthread_setspecific
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_setspecific(
pthread_key_t key,
const void *value
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified key is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_getspecific, Clock Manager, pthread_setspecific, Key Manager Directives
@end ifinfo
@subsection pthread_getspecific
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
void *pthread_getspecific(
pthread_key_t key
);
@end example
@subheading STATUS CODES:
@table @b
@item NULL
There is no thread-specific data associated with the specified key.
@item non-NULL
The data associated with the specified key.
@end table
@subheading DESCRIPTION:
@subheading NOTES:

642
doc/new_chapters/mutex.t Normal file
View File

@@ -0,0 +1,642 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Mutex Manager, Mutex Manager Introduction, alarm, Top
@end ifinfo
@chapter Mutex Manager
@ifinfo
@menu
* Mutex Manager Introduction::
* Mutex Manager Background::
* Mutex Manager Operations::
* Mutex Manager Directives::
@end menu
@end ifinfo
@ifinfo
@node Mutex Manager Introduction, Mutex Manager Background, Mutex Manager, Mutex Manager
@end ifinfo
@section Introduction
The mutex manager ...
The directives provided by the mutex manager are:
@itemize @bullet
@item @code{pthread_mutexattr_init} -
@item @code{pthread_mutexattr_destroy} -
@item @code{pthread_mutexattr_setprotocol} -
@item @code{pthread_mutexattr_getprotocol} -
@item @code{pthread_mutexattr_setprioceiling} -
@item @code{pthread_mutexattr_getprioceiling} -
@item @code{pthread_mutexattr_setpshared} -
@item @code{pthread_mutexattr_getpshared} -
@item @code{pthread_mutex_init} -
@item @code{pthread_mutex_destroy} -
@item @code{pthread_mutex_lock} -
@item @code{pthread_mutex_trylock} -
@item @code{pthread_mutex_timedlock} -
@item @code{pthread_mutex_unlock} -
@item @code{pthread_mutex_setprioceiling} -
@item @code{pthread_mutex_getprioceiling} -
@end itemize
@ifinfo
@node Mutex Manager Background, Mutex Manager Operations, Mutex Manager Introduction, Mutex Manager
@end ifinfo
@section Background
@ifinfo
@node Mutex Manager Operations, Mutex Manager Directives, Mutex Manager Background, Mutex Manager
@end ifinfo
@section Operations
@ifinfo
@node Mutex Manager Directives, pthread_mutexattr_init, Mutex Manager Operations, Mutex Manager
@end ifinfo
@section Directives
@ifinfo
@menu
* pthread_mutexattr_init::
* pthread_mutexattr_destroy::
* pthread_mutexattr_setprotocol::
* pthread_mutexattr_getprotocol::
* pthread_mutexattr_setprioceiling::
* pthread_mutexattr_getprioceiling::
* pthread_mutexattr_setpshared::
* pthread_mutexattr_getpshared::
* pthread_mutex_init::
* pthread_mutex_destroy::
* pthread_mutex_lock::
* pthread_mutex_trylock::
* pthread_mutex_timedlock::
* pthread_mutex_unlock::
* pthread_mutex_setprioceiling::
* pthread_mutex_getprioceiling::
@end menu
@end ifinfo
This section details the mutex 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.
@page
@ifinfo
@node pthread_mutexattr_init, pthread_mutexattr_destroy, Mutex Manager Directives, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_init
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_init(
pthread_mutexattr_t *attr
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_destroy, pthread_mutexattr_setprotocol, pthread_mutexattr_init, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_destroy
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_destroy(
pthread_mutexattr_t *attr
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_setprotocol, pthread_mutexattr_getprotocol, pthread_mutexattr_destroy, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_setprotocol
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_setprotocol(
pthread_mutexattr_t *attr,
int protocol
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The protocol argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_getprotocol, pthread_mutexattr_setprioceiling, pthread_mutexattr_setprotocol, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_getprotocol
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_getprotocol(
pthread_mutexattr_t *attr,
int *protocol
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The protocol pointer argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling, pthread_mutexattr_getprotocol, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_setprioceiling
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_setprioceiling(
pthread_mutexattr_t *attr,
int prioceiling
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The prioceiling argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_getprioceiling, pthread_mutexattr_setpshared, pthread_mutexattr_setprioceiling, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_getprioceiling
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_getprioceiling(
const pthread_mutexattr_t *attr,
int *prioceiling
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The prioceiling pointer argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_setpshared, pthread_mutexattr_getpshared, pthread_mutexattr_getprioceiling, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_setpshared
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_setpshared(
pthread_mutexattr_t *attr,
int pshared
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The pshared argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutexattr_getpshared, pthread_mutex_init, pthread_mutexattr_setpshared, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutexattr_getpshared
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutexattr_getpshared(
const pthread_mutexattr_t *attr,
int *pshared
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute pointer argument is invalid.
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The pshared pointer argument is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_init, pthread_mutex_destroy, pthread_mutexattr_getpshared, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_init
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_init(
pthread_mutex_t *mutex,
const pthread_mutexattr_t *attr
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The attribute set is not initialized.
@item EINVAL
The specified protocol is invalid.
@item EAGAIN
The system lacked the necessary resources to initialize another mutex.
@item ENOMEM
Insufficient memory exists to initialize the mutex.
@item EBUSY
Attempted to reinialize the object reference by mutex, a previously
initialized, but not yet destroyed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_init, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_destroy
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_destroy(
pthread_mutex_t *mutex
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified mutex is invalid.
@item EBUSY
Attempted to destroy the object reference by mutex, while it is locked or
referenced by another thread.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_destroy, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_lock
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_lock(
pthread_mutex_t *mutex
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified mutex is invalid.
@item EINVAL
The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
priority of the calling thread is higher than the current priority
ceiling.
@item EDEADLK
The current thread already owns the mutex.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_trylock, pthread_mutex_timedlock, pthread_mutex_lock, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_trylock
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_trylock(
pthread_mutex_t *mutex
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified mutex is invalid.
@item EINVAL
The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
priority of the calling thread is higher than the current priority
ceiling.
@item EDEADLK
The current thread already owns the mutex.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_timedlock, pthread_mutex_unlock, pthread_mutex_trylock, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_timedlock
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
#include <time.h>
int pthread_mutex_timedlock(
pthread_mutex_t *mutex,
const struct timespec *timeout
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified mutex is invalid.
@item EINVAL
The nanoseconds field of timeout is invalid.
@item EINVAL
The mutex has the protocol attribute of PTHREAD_PRIO_PROTECT and the
priority of the calling thread is higher than the current priority
ceiling.
@item EDEADLK
The current thread already owns the mutex.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_unlock, pthread_mutex_setprioceiling, pthread_mutex_timedlock, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_unlock
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_unlock(
pthread_mutex_t *mutex
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The specified mutex is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_setprioceiling, pthread_mutex_getprioceiling, pthread_mutex_unlock, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_setprioceiling
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_setprioceiling(
pthread_mutex_t *mutex,
int prioceiling,
int *oldceiling
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The oldceiling pointer parameter is invalid.
@item EINVAL
The prioceiling parameter is an invalid priority.
@item EINVAL
The specified mutex is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_mutex_getprioceiling, Condition Variable Manager, pthread_mutex_setprioceiling, Mutex Manager Directives
@end ifinfo
@subsection pthread_mutex_getprioceiling
@subheading CALLING SEQUENCE:
@example
#include <pthread.h>
int pthread_mutex_getprioceiling(
pthread_mutex_t *mutex,
int *prioceiling
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
The prioceiling pointer parameter is invalid.
@item EINVAL
The specified mutex is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:

View File

@@ -0,0 +1,21 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Preface, Thread Manager, Top, Top
@end ifinfo
@unnumbered Preface
This is the user's guide for the POSIX API support for RTEMS.
At this point, this is just a basic shell of what this manual
should ultimately be.
Much of the POSIX API standard is actually implemented in the
newlib ANSI C Library. Please refer to documentation on
newlib for more information on what it supplies.

228
doc/new_chapters/sched.t Normal file
View File

@@ -0,0 +1,228 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Scheduler Manager, Scheduler Manager Introduction, time, Top
@end ifinfo
@chapter Scheduler Manager
@ifinfo
@menu
* Scheduler Manager Introduction::
* Scheduler Manager Background::
* Scheduler Manager Operations::
* Scheduler Manager Directives::
@end menu
@end ifinfo
@ifinfo
@node Scheduler Manager Introduction, Scheduler Manager Background, Scheduler Manager, Scheduler Manager
@end ifinfo
@section Introduction
The scheduler manager ...
The directives provided by the scheduler manager are:
@itemize @bullet
@item @code{sched_get_priority_min} -
@item @code{sched_get_priority_max} -
@item @code{sched_rr_get_interval} -
@item @code{sched_yield} -
@end itemize
@ifinfo
@node Scheduler Manager Background, Priority, Scheduler Manager Introduction, Scheduler Manager
@end ifinfo
@section Background
@ifinfo
@menu
* Priority::
* Scheduling Policies::
@end menu
@end ifinfo
@ifinfo
@node Priority, Scheduling Policies, Scheduler Manager Background, Scheduler Manager Background
@end ifinfo
@subsection Priority
In the RTEMS implementation of the POSIX API, the priorities range from
the low priority of sched_get_priority_min() to the highest priority of
sched_get_priority_max(). Numerically higher values represent higher
priorities.
@ifinfo
@node Scheduling Policies, Scheduler Manager Operations, Priority, Scheduler Manager Background
@end ifinfo
@subsection Scheduling Policies
The following scheduling policies are available:
@table @b
@item SCHED_FIFO
Priority-based, preemptive scheduling with no timeslicing. This is equivalent
to what is called "manual round-robin" scheduling.
@item SCHED_RR
Priority-based, preemptive scheduling with timeslicing. Time quantums are
maintained on a per-thread basis and are not reset at each context switch.
Thus, a thread which is preempted and subsequently resumes execution will
attempt to complete the unused portion of its time quantum.
@item SCHED_OTHER
Priority-based, preemptive scheduling with timeslicing. Time quantums are
maintained on a per-thread basis and are reset at each context switch.
@item SCHED_SPORADIC
Priority-based, preemptive scheduling utilizing three additional parameters:
budget, replenishment period, and low priority. Under this policy, the
thread is allowed to execute for "budget" amount of time before its priority
is lowered to "low priority". At the end of each replenishment period,
the thread resumes its initial priority and has its budget replenished.
@end table
@ifinfo
@node Scheduler Manager Operations, Scheduler Manager Directives, Scheduling Policies, Scheduler Manager
@end ifinfo
@section Operations
@ifinfo
@node Scheduler Manager Directives, sched_get_priority_min, Scheduler Manager Operations, Scheduler Manager
@end ifinfo
@section Directives
@ifinfo
@menu
* sched_get_priority_min::
* sched_get_priority_max::
* sched_rr_get_interval::
* sched_yield::
@end menu
@end ifinfo
This section details the scheduler 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.
@page
@ifinfo
@node sched_get_priority_min, sched_get_priority_max, Scheduler Manager Directives, Scheduler Manager Directives
@end ifinfo
@subsection sched_get_priority_min
@subheading CALLING SEQUENCE:
@example
#include <sched.h>
int sched_get_priority_min(
int policy
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EINVAL
The indicated policy is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sched_get_priority_max, sched_rr_get_interval, sched_get_priority_min, Scheduler Manager Directives
@end ifinfo
@subsection sched_get_priority_max
@subheading CALLING SEQUENCE:
@example
#include <sched.h>
int sched_get_priority_max(
int policy
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EINVAL
The indicated policy is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sched_rr_get_interval, sched_yield, sched_get_priority_max, Scheduler Manager Directives
@end ifinfo
@subsection sched_rr_get_interval
@subheading CALLING SEQUENCE:
@example
#include <sched.h>
int sched_rr_get_interval(
pid_t pid,
struct timespec *interval
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item ESRCH
The indicated process id is invalid.
@item EINVAL
The specified interval pointer parameter is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sched_yield, Command and Variable Index, sched_rr_get_interval, Scheduler Manager Directives
@end ifinfo
@subsection sched_yield
@subheading CALLING SEQUENCE:
@example
#include <sched.h>
int sched_yield( void );
@end example
@subheading STATUS CODES:
This routine always returns zero to indicate success.
@subheading DESCRIPTION:
@subheading NOTES:

691
doc/new_chapters/signal.t Normal file
View File

@@ -0,0 +1,691 @@
@c
@c COPYRIGHT (c) 1988-1998.
@c On-Line Applications Research Corporation (OAR).
@c All rights reserved.
@c
@c $Id$
@c
@ifinfo
@node Signal Manager, Signal Manager Introduction, pthread_getschedparam, Top
@end ifinfo
@chapter Signal Manager
@ifinfo
@menu
* Signal Manager Introduction::
* Signal Manager Background::
* Signal Manager Operations::
* Signal Manager Directives::
@end menu
@end ifinfo
@ifinfo
@node Signal Manager Introduction, Signal Manager Background, Signal Manager, Signal Manager
@end ifinfo
@section Introduction
The signal manager ...
The directives provided by the signal manager are:
@itemize @bullet
@item @code{sigaddset} -
@item @code{sigdelset} -
@item @code{sigfillset} -
@item @code{sigismember} -
@item @code{sigemptyset} -
@item @code{sigaction} -
@item @code{pthread_kill} -
@item @code{sigprocmask} -
@item @code{pthread_sigmask} -
@item @code{kill} -
@item @code{sigpending} -
@item @code{sigsuspend} -
@item @code{pause} -
@item @code{sigwait} -
@item @code{sigwaitinfo} -
@item @code{sigtimedwait} -
@item @code{sigqueue} -
@item @code{alarm} -
@end itemize
@ifinfo
@node Signal Manager Background, Signal Delivery, Signal Manager Introduction, Signal Manager
@end ifinfo
@section Background
@ifinfo
@menu
* Signal Delivery::
@end menu
@end ifinfo
@ifinfo
@node Signal Delivery, Signal Manager Operations, Signal Manager Background, Signal Manager Background
@end ifinfo
@subsection Signal Delivery
Signals directed at a thread are delivered to the specified thread.
Signals directed at a process are delivered to a thread which is selected
based on the following algorithm:
@enumerate
@item If the action for this signal is currently SIG_IGN, then the signal
is simply ignored.
@item If the currently executing thread has the signal unblocked, then
the signal is delivered to it.
@item If any threads are currently blocked waiting for this signal
(sigwait()), then the signal is delivered to the highest priority
thread waiting for this signal.
@item If any other threads are willing to accept delivery of the signal, then
the signal is delivered to the highest priority thread of this set. In the
event, multiple threads of the same priority are willing to accept this
signal, then priority is given first to ready threads, then to threads
blocked on calls which may be interrupted, and finally to threads blocked
on non-interruptible calls.
@item In the event the signal still can not be delivered, then it is left
pending. The first thread to unblock the signal (sigprocmask() or
pthread_sigprocmask()) or to wait for this signal (sigwait()) will be
the recipient of the signal.
@end enumerate
@ifinfo
@node Signal Manager Operations, Signal Manager Directives, Signal Delivery, Signal Manager
@end ifinfo
@section Operations
@ifinfo
@node Signal Manager Directives, sigaddset, Signal Manager Operations, Signal Manager
@end ifinfo
@section Directives
@ifinfo
@menu
* sigaddset::
* sigdelset::
* sigfillset::
* sigismember::
* sigemptyset::
* sigaction::
* pthread_kill::
* sigprocmask::
* pthread_sigmask::
* kill::
* sigpending::
* sigsuspend::
* pause::
* sigwait::
* sigwaitinfo::
* sigtimedwait::
* sigqueue::
* alarm::
@end menu
@end ifinfo
This section details the signal 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.
@page
@ifinfo
@node sigaddset, sigdelset, Signal Manager Directives, Signal Manager Directives
@end ifinfo
@subsection sigaddset
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigaddset(
sigset_t *set,
int signo
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigdelset, sigfillset, sigaddset, Signal Manager Directives
@end ifinfo
@subsection sigdelset
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigdelset(
sigset_t *set,
int signo
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigfillset, sigismember, sigdelset, Signal Manager Directives
@end ifinfo
@subsection sigfillset
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigfillset(
sigset_t *set
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigismember, sigemptyset, sigfillset, Signal Manager Directives
@end ifinfo
@subsection sigismember
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigismember(
const sigset_t *set,
int signo
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigemptyset, sigaction, sigismember, Signal Manager Directives
@end ifinfo
@subsection sigemptyset
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigemptyset(
sigset_t *set
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigaction, pthread_kill, sigemptyset, Signal Manager Directives
@end ifinfo
@subsection sigaction
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigaction(
int sig,
const struct sigaction *act,
struct sigaction *oact
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@item ENOTSUP
Realtime Signals Extension option not supported.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
The signal number cannot be SIGKILL.
@page
@ifinfo
@node pthread_kill, sigprocmask, sigaction, Signal Manager Directives
@end ifinfo
@subsection pthread_kill
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int pthread_kill(
pthread_t thread,
int sig
);
@end example
@subheading STATUS CODES:
@table @b
@item ESRCH
The thread indicated by the parameter thread is invalid.
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigprocmask, pthread_sigmask, pthread_kill, Signal Manager Directives
@end ifinfo
@subsection sigprocmask
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigprocmask(
int how,
const sigset_t *set,
sigset_t *oset
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pthread_sigmask, kill, sigprocmask, Signal Manager Directives
@end ifinfo
@subsection pthread_sigmask
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node kill, sigpending, pthread_sigmask, Signal Manager Directives
@end ifinfo
@subsection kill
@subheading CALLING SEQUENCE:
@example
#include <sys/types.h>
#include <signal.h>
int kill(
pid_t pid,
int sig
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@item EPERM
Process does not have permission to send the signal to any receiving process.
@item ESRCH
The process indicated by the parameter pid is invalid.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigpending, sigsuspend, kill, Signal Manager Directives
@end ifinfo
@subsection sigpending
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigpending(
const sigset_t *set
);
@end example
@subheading STATUS CODES:
On error, this routine returns -1 and sets errno to one of the following:
@table @b
@item EFAULT
Invalid address for set.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigsuspend, pause, sigpending, Signal Manager Directives
@end ifinfo
@subsection sigsuspend
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigsuspend(
const sigset_t *sigmask
);
@end example
@subheading STATUS CODES:
@table @b
Returns -1 and sets errno.
@item EINTR
Signal interrupted this function.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node pause, sigwait, sigsuspend, Signal Manager Directives
@end ifinfo
@subsection pause
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int pause( void );
@end example
@subheading STATUS CODES:
@table @b
Returns -1 and sets errno.
@item EINTR
Signal interrupted this function.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigwait, sigwaitinfo, pause, Signal Manager Directives
@end ifinfo
@subsection sigwait
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigwait(
const sigset_t *set,
int *sig
);
@end example
@subheading STATUS CODES:
@table @b
@item EINVAL
Invalid argument passed.
@item EINTR
Signal interrupted this function.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigwaitinfo, sigtimedwait, sigwait, Signal Manager Directives
@end ifinfo
@subsection sigwaitinfo
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigwaitinfo(
const sigset_t *set,
siginfo_t *info
);
@end example
@subheading STATUS CODES:
@table @b
@item EINTR
Signal interrupted this function.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node sigtimedwait, sigqueue, sigwaitinfo, Signal Manager Directives
@end ifinfo
@subsection sigtimedwait
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigtimedwait(
const sigset_t *set,
siginfo_t *info,
const struct timespec *timeout
);
@end example
@subheading STATUS CODES:
@table @b
@item EAGAIN
Timed out while waiting for the specified signal set.
@item EINVAL
Nanoseconds field of the timeout argument is invalid.
@item EINTR
Signal interrupted this function.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
If timeout is NULL, then the thread will wait forever for the specified
signal set.
@page
@ifinfo
@node sigqueue, alarm, sigtimedwait, Signal Manager Directives
@end ifinfo
@subsection sigqueue
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
int sigqueue(
pid_t pid,
int signo,
const union sigval value
);
@end example
@subheading STATUS CODES:
@table @b
@item EAGAIN
No resources available to queue the signal. The process has already
queued SIGQUEUE_MAX signals that are still pending at the receiver
or the systemwide resource limit has been exceeded.
@item EINVAL
The value of the signo argument is an invalid or unsupported signal
number.
@item EPERM
The process does not have the appropriate privilege to send the signal
to the receiving process.
@item ESRCH
The process pid does not exist.
@end table
@subheading DESCRIPTION:
@subheading NOTES:
@page
@ifinfo
@node alarm, Mutex Manager, sigqueue, Signal Manager Directives
@end ifinfo
@subsection alarm
@subheading CALLING SEQUENCE:
@example
#include <signal.h>
unsigned int alarm(
unsigned int seconds
);
@end example
@subheading STATUS CODES:
If there was a previous alarm() request with time remaining, then this routine
returns the number of seconds until that outstanding alarm would have fired.
If no previous alarm() request was outstanding, then zero is returned.
@subheading DESCRIPTION:
@subheading NOTES:

1025
doc/new_chapters/thread.t Normal file

File diff suppressed because it is too large Load Diff