2000-12-11 Joel Sherrill <joel@OARcorp.com>
* Merge RTEMS specific .h files into main libc/include. * libc/sys/rtems/include/signal.h: Removed. * libc/sys/rtems/include/time.h: Removed. * libc/sys/rtems/sys/features.h: Removed. * libc/sys/rtems/sys/sched.h: Removed. * libc/sys/rtems/sys/siginfo.h: Removed. * libc/sys/rtems/sys/signal.h: Removed. * libc/sys/rtems/sys/time.h: Removed. * libc/sys/rtems/sys/times.h: Removed. definitions for time_t and clock_t since these are no longer in time.h. * libc/include/pthread.h: New file. * libc/include/sys/sched.h: New file. * libc/include/sys/features.h: New file. * libc/include/time.h: Removed duplicate definition of clock_t and time_t, get them from <sys/types.h> instead. Add prototypes for POSIX clock and timer functionality. * libc/sys/linux/sys/types.h: Changed to include * libc/include/machine/types.h: Add _CLOCKID_T_ and _TIMER_T_. * libc/include/sys/signal.h: Add more complete set of POSIX signal functionality including real-time and threaded signals. * libc/include/sys/types.h: Add clock_t, time_t, struct timespec, and struct itimerspec. Centralizing these makes things cleaner. RTEMS uses 64-bit dev_t. Added numerous primitive definitions for pthreads including macros, pthread_attr_t, pthread_mutexattr_t, pthread_condattr_t, pthread_key_t, pthread_once_t, and pthread_t. * libc/include/sys/unistd.h: Added getlogin_r() prototype. If RTEMS follow POSIX on read(), write() and sbrk() prototype. Feature flags removed and moved to new file <sys/features.h>. Full set of POSIX sysconf() constants
This commit is contained in:
parent
947411367d
commit
8fb3796385
|
@ -1,3 +1,38 @@
|
|||
2000-12-11 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* Merge RTEMS specific .h files into main libc/include.
|
||||
* libc/sys/rtems/include/signal.h: Removed.
|
||||
* libc/sys/rtems/include/time.h: Removed.
|
||||
* libc/sys/rtems/sys/features.h: Removed.
|
||||
* libc/sys/rtems/sys/sched.h: Removed.
|
||||
* libc/sys/rtems/sys/siginfo.h: Removed.
|
||||
* libc/sys/rtems/sys/signal.h: Removed.
|
||||
* libc/sys/rtems/sys/time.h: Removed.
|
||||
* libc/sys/rtems/sys/times.h: Removed.
|
||||
definitions for time_t and clock_t since these are
|
||||
no longer in time.h.
|
||||
* libc/include/pthread.h: New file.
|
||||
* libc/include/sys/sched.h: New file.
|
||||
* libc/include/sys/features.h: New file.
|
||||
* libc/include/time.h: Removed duplicate definition of clock_t
|
||||
and time_t, get them from <sys/types.h> instead. Add prototypes
|
||||
for POSIX clock and timer functionality.
|
||||
* libc/sys/linux/sys/types.h: Changed to include
|
||||
* libc/include/machine/types.h: Add _CLOCKID_T_ and _TIMER_T_.
|
||||
* libc/include/sys/signal.h: Add more complete set of POSIX
|
||||
signal functionality including real-time and threaded signals.
|
||||
* libc/include/sys/types.h: Add clock_t, time_t, struct
|
||||
timespec, and struct itimerspec. Centralizing these makes
|
||||
things cleaner. RTEMS uses 64-bit dev_t.
|
||||
Added numerous primitive definitions
|
||||
for pthreads including macros, pthread_attr_t,
|
||||
pthread_mutexattr_t, pthread_condattr_t, pthread_key_t,
|
||||
pthread_once_t, and pthread_t.
|
||||
* libc/include/sys/unistd.h: Added getlogin_r() prototype.
|
||||
If RTEMS follow POSIX on read(), write() and sbrk() prototype.
|
||||
Feature flags removed and moved to new file <sys/features.h>.
|
||||
Full set of POSIX sysconf() constants
|
||||
|
||||
2000-12-08 Werner Almesberger <Werner.Almesberger@epfl.ch>
|
||||
|
||||
* configure.host: Added x86 linux target.
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
|
||||
#define _CLOCK_T_ unsigned long /* clock() */
|
||||
#define _TIME_T_ long /* time() */
|
||||
#define _CLOCKID_T_ unsigned long
|
||||
#define _TIMER_T_ unsigned long
|
||||
|
||||
|
||||
#endif /* _MACHTYPES_H_ */
|
||||
|
||||
|
|
|
@ -0,0 +1,298 @@
|
|||
/* pthread.h
|
||||
*
|
||||
* Written by Joel Sherrill <joel@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2000.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __PTHREAD_h
|
||||
#define __PTHREAD_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
#include <sys/sched.h>
|
||||
|
||||
/* Register Fork Handlers, P1003.1c/Draft 10, P1003.1c/Draft 10, p. 27
|
||||
|
||||
If an OS does not support processes, then it falls under this provision
|
||||
and may not provide pthread_atfork():
|
||||
|
||||
"Either the implementation shall support the pthread_atfork() function
|
||||
as described above or the pthread_atfork() funciton shall not be
|
||||
provided."
|
||||
|
||||
NOTE: RTEMS does not provide pthread_atfork(). */
|
||||
|
||||
#if !defined(__rtems__)
|
||||
#warning "Add pthread_atfork() prototype"
|
||||
#endif
|
||||
|
||||
/* Mutex Initialization Attributes, P1003.1c/Draft 10, p. 81 */
|
||||
|
||||
int _EXFUN(pthread_mutexattr_init, (pthread_mutexattr_t *attr));
|
||||
int _EXFUN(pthread_mutexattr_destroy, (pthread_mutexattr_t *attr));
|
||||
int _EXFUN(pthread_mutexattr_getpshared,
|
||||
(const pthread_mutexattr_t *attr, int *pshared));
|
||||
int _EXFUN(pthread_mutexattr_setpshared,
|
||||
(pthread_mutexattr_t *attr, int pshared));
|
||||
|
||||
/* Initializing and Destroying a Mutex, P1003.1c/Draft 10, p. 87 */
|
||||
|
||||
int _EXFUN(pthread_mutex_init,
|
||||
(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr));
|
||||
int _EXFUN(pthread_mutex_destroy, (pthread_mutex_t *mutex));
|
||||
|
||||
/* This is used to statically initialize a pthread_mutex_t. Example:
|
||||
|
||||
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
*/
|
||||
|
||||
#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t) 0xFFFFFFFF)
|
||||
|
||||
/* Locking and Unlocking a Mutex, P1003.1c/Draft 10, p. 93
|
||||
NOTE: P1003.4b/D8 adds pthread_mutex_timedlock(), p. 29 */
|
||||
|
||||
int _EXFUN(pthread_mutex_lock, (pthread_mutex_t *mutex));
|
||||
int _EXFUN(pthread_mutex_trylock, (pthread_mutex_t *mutex));
|
||||
int _EXFUN(pthread_mutex_unlock, (pthread_mutex_t *mutex));
|
||||
|
||||
#if defined(_POSIX_TIMEOUTS)
|
||||
|
||||
int _EXFUN(pthread_mutex_timedlock,
|
||||
(pthread_mutex_t *mutex, const struct timespec *timeout));
|
||||
|
||||
#endif /* _POSIX_TIMEOUTS */
|
||||
|
||||
/* Condition Variable Initialization Attributes, P1003.1c/Draft 10, p. 96 */
|
||||
|
||||
int _EXFUN(pthread_condattr_init, (pthread_condattr_t *attr));
|
||||
int _EXFUN(pthread_condattr_destroy, (pthread_condattr_t *attr));
|
||||
int _EXFUN(pthread_condattr_getpshared,
|
||||
(const pthread_condattr_t *attr, int *pshared));
|
||||
int _EXFUN(pthread_condattr_setpshared,
|
||||
(pthread_condattr_t *attr, int pshared));
|
||||
|
||||
/* Initializing and Destroying a Condition Variable, P1003.1c/Draft 10, p. 87 */
|
||||
|
||||
int _EXFUN(pthread_cond_init,
|
||||
(pthread_cond_t *cond, const pthread_condattr_t *attr));
|
||||
int _EXFUN(pthread_cond_destroy, (pthread_cond_t *mutex));
|
||||
|
||||
/* This is used to statically initialize a pthread_cond_t. Example:
|
||||
|
||||
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
||||
*/
|
||||
|
||||
#define PTHREAD_COND_INITIALIZER ((pthread_mutex_t) 0xFFFFFFFF)
|
||||
|
||||
/* Broadcasting and Signaling a Condition, P1003.1c/Draft 10, p. 101 */
|
||||
|
||||
int _EXFUN(pthread_cond_signal, (pthread_cond_t *cond));
|
||||
int _EXFUN(pthread_cond_broadcast, (pthread_cond_t *cond));
|
||||
|
||||
/* Waiting on a Condition, P1003.1c/Draft 10, p. 105 */
|
||||
|
||||
int _EXFUN(pthread_cond_wait,
|
||||
(pthread_cond_t *cond, pthread_mutex_t *mutex));
|
||||
|
||||
int _EXFUN(pthread_cond_timedwait,
|
||||
(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
||||
const struct timespec *abstime));
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
|
||||
|
||||
/* Thread Creation Scheduling Attributes, P1003.1c/Draft 10, p. 120 */
|
||||
|
||||
int _EXFUN(pthread_attr_setscope,
|
||||
(pthread_attr_t *attr, int contentionscope));
|
||||
int _EXFUN(pthread_attr_getscope,
|
||||
(const pthread_attr_t *attr, int *contentionscope));
|
||||
int _EXFUN(pthread_attr_setinheritsched,
|
||||
(pthread_attr_t *attr, int inheritsched));
|
||||
int _EXFUN(pthread_attr_getinheritsched,
|
||||
(const pthread_attr_t *attr, int *inheritsched));
|
||||
int _EXFUN(pthread_attr_setschedpolicy, (pthread_attr_t *attr, int policy));
|
||||
int _EXFUN(pthread_attr_getschedpolicy,
|
||||
(const pthread_attr_t *attr, int *policy));
|
||||
|
||||
#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
|
||||
|
||||
int _EXFUN(pthread_attr_setschedparam,
|
||||
(pthread_attr_t *attr, const struct sched_param *param));
|
||||
int _EXFUN(pthread_attr_getschedparam,
|
||||
(const pthread_attr_t *attr, struct sched_param *param));
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
|
||||
|
||||
/* Dynamic Thread Scheduling Parameters Access, P1003.1c/Draft 10, p. 124 */
|
||||
|
||||
int _EXFUN(pthread_getschedparam,
|
||||
(pthread_t thread, int *policy, struct sched_param *param));
|
||||
int _EXFUN(pthread_setschedparam,
|
||||
(pthread_t thread, int policy, struct sched_param *param));
|
||||
|
||||
#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIO_INHERIT) || defined(_POSIX_THREAD_PRIO_PROTECT)
|
||||
|
||||
/* Mutex Initialization Scheduling Attributes, P1003.1c/Draft 10, p. 128 */
|
||||
|
||||
int _EXFUN(pthread_mutexattr_setprotocol,
|
||||
(pthread_mutexattr_t *attr, int protocol));
|
||||
int _EXFUN(pthread_mutexattr_getprotocol,
|
||||
(const pthread_mutexattr_t *attr, int *protocol));
|
||||
int _EXFUN(pthread_mutexattr_setprioceiling,
|
||||
(pthread_mutexattr_t *attr, int prioceiling));
|
||||
int _EXFUN(pthread_mutexattr_getprioceiling,
|
||||
(const pthread_mutexattr_t *attr, int *prioceiling));
|
||||
|
||||
#endif /* _POSIX_THREAD_PRIO_INHERIT || _POSIX_THREAD_PRIO_PROTECT */
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIO_PROTECT)
|
||||
|
||||
/* Change the Priority Ceiling of a Mutex, P1003.1c/Draft 10, p. 131 */
|
||||
|
||||
int _EXFUN(pthread_mutex_setprioceiling,
|
||||
(pthread_mutex_t *mutex, int prioceiling, int *old_ceiling));
|
||||
int _EXFUN(pthread_mutex_getprioceiling,
|
||||
(pthread_mutex_t *mutex, int *prioceiling));
|
||||
|
||||
#endif /* _POSIX_THREAD_PRIO_PROTECT */
|
||||
|
||||
/* Thread Creation Attributes, P1003.1c/Draft 10, p, 140 */
|
||||
|
||||
int _EXFUN(pthread_attr_init, (pthread_attr_t *attr));
|
||||
int _EXFUN(pthread_attr_destroy, (pthread_attr_t *attr));
|
||||
int _EXFUN(pthread_attr_getstacksize,
|
||||
(const pthread_attr_t *attr, size_t *stacksize));
|
||||
int _EXFUN(pthread_attr_setstacksize,
|
||||
(pthread_attr_t *attr, size_t stacksize));
|
||||
int _EXFUN(pthread_attr_getstackaddr,
|
||||
(const pthread_attr_t *attr, void **stackaddr));
|
||||
int _EXFUN(pthread_attr_setstackaddr,
|
||||
(pthread_attr_t *attr, void *stackaddr));
|
||||
int _EXFUN(pthread_attr_getdetachstate,
|
||||
(const pthread_attr_t *attr, int *detachstate));
|
||||
int _EXFUN(pthread_attr_setdetachstate,
|
||||
(pthread_attr_t *attr, int detachstate));
|
||||
|
||||
/* Thread Creation, P1003.1c/Draft 10, p. 144 */
|
||||
|
||||
int _EXFUN(pthread_create,
|
||||
(pthread_t *thread, const pthread_attr_t *attr,
|
||||
void *(*start_routine)( void * ), void *arg));
|
||||
|
||||
/* Wait for Thread Termination, P1003.1c/Draft 10, p. 147 */
|
||||
|
||||
int _EXFUN(pthread_join, (pthread_t thread, void **value_ptr));
|
||||
|
||||
/* Detaching a Thread, P1003.1c/Draft 10, p. 149 */
|
||||
|
||||
int _EXFUN(pthread_detach, (pthread_t thread));
|
||||
|
||||
/* Thread Termination, p1003.1c/Draft 10, p. 150 */
|
||||
|
||||
void _EXFUN(pthread_exit, (void *value_ptr));
|
||||
|
||||
/* Get Calling Thread's ID, p1003.1c/Draft 10, p. XXX */
|
||||
|
||||
pthread_t _EXFUN(pthread_self, (void));
|
||||
|
||||
/* Compare Thread IDs, p1003.1c/Draft 10, p. 153 */
|
||||
|
||||
int _EXFUN(pthread_equal, (pthread_t t1, pthread_t t2));
|
||||
|
||||
/* Dynamic Package Initialization */
|
||||
|
||||
/* This is used to statically initialize a pthread_once_t. Example:
|
||||
|
||||
pthread_once_t once = PTHREAD_ONCE_INIT;
|
||||
|
||||
NOTE: This is named inconsistently -- it should be INITIALIZER. */
|
||||
|
||||
#define PTHREAD_ONCE_INIT { 1, 0 } /* is initialized and not run */
|
||||
|
||||
int _EXFUN(pthread_once,
|
||||
(pthread_once_t *once_control, void (*init_routine)(void)));
|
||||
|
||||
/* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */
|
||||
|
||||
int _EXFUN(pthread_key_create,
|
||||
(pthread_key_t *key, void (*destructor)( void * )));
|
||||
|
||||
/* Thread-Specific Data Management, P1003.1c/Draft 10, p. 165 */
|
||||
|
||||
int _EXFUN(pthread_setspecific, (pthread_key_t key, const void *value));
|
||||
void * _EXFUN(pthread_getspecific, (pthread_key_t key));
|
||||
|
||||
/* Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167 */
|
||||
|
||||
int _EXFUN(pthread_key_delete, (pthread_key_t key));
|
||||
|
||||
/* Execution of a Thread, P1003.1c/Draft 10, p. 181 */
|
||||
|
||||
#define PTHREAD_CANCEL_ENABLE 0
|
||||
#define PTHREAD_CANCEL_DISABLE 1
|
||||
|
||||
#define PTHREAD_CANCEL_DEFERRED 0
|
||||
#define PTHREAD_CANCEL_ASYNCHRONOUS 1
|
||||
|
||||
int _EXFUN(pthread_cancel, (pthread_t thread));
|
||||
|
||||
/* Setting Cancelability State, P1003.1c/Draft 10, p. 183 */
|
||||
|
||||
int _EXFUN(pthread_setcancelstate, (int state, int *oldstate));
|
||||
int _EXFUN(pthread_setcanceltype, (int type, int *oldtype));
|
||||
void _EXFUN(pthread_testcancel, (void));
|
||||
|
||||
/* Establishing Cancellation Handlers, P1003.1c/Draft 10, p. 184 */
|
||||
|
||||
void _EXFUN(pthread_cleanup_push, (void (*routine)( void * ), void *arg));
|
||||
void _EXFUN(pthread_cleanup_pop, (int execute));
|
||||
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
|
||||
/* Accessing a Thread CPU-time Clock, P1003.4b/D8, p. 58 */
|
||||
|
||||
int _EXFUN(pthread_getcpuclockid,
|
||||
(pthread_t thread_id, clockid_t *clock_id));
|
||||
|
||||
/* CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59 */
|
||||
|
||||
int _EXFUN(pthread_attr_setcputime,
|
||||
(pthread_attr_t *attr, int clock_allowed));
|
||||
|
||||
int _EXFUN(pthread_attr_getcputime,
|
||||
(pthread_attr_t *attr, int *clock_allowed));
|
||||
|
||||
#endif /* defined(_POSIX_THREAD_CPUTIME) */
|
||||
|
||||
#endif /* defined(_POSIX_THREADS) */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* Written by Joel Sherrill <joel@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2000.
|
||||
*
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _SYS_FEATURES_H
|
||||
#define _SYS_FEATURES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* RTEMS adheres to POSIX -- 1003.1b with some features from annexes. */
|
||||
|
||||
#ifdef __rtems__
|
||||
#define _POSIX_JOB_CONTROL 1
|
||||
#define _POSIX_SAVED_IDS 1
|
||||
#define _POSIX_VERSION 199309L
|
||||
#define _POSIX_ASYNCHRONOUS_IO 1
|
||||
#define _POSIX_FSYNC 1
|
||||
#define _POSIX_MAPPED_FILES 1
|
||||
#define _POSIX_MEMLOCK 1
|
||||
#define _POSIX_MEMLOCK_RANGE 1
|
||||
#define _POSIX_MEMORY_PROTECTION 1
|
||||
#define _POSIX_MESSAGE_PASSING 1
|
||||
#define _POSIX_PRIORITIZED_IO 1
|
||||
#define _POSIX_PRIORITY_SCHEDULING 1
|
||||
#define _POSIX_REALTIME_SIGNALS 1
|
||||
#define _POSIX_SEMAPHORES 1
|
||||
#define _POSIX_SHARED_MEMORY_OBJECTS 1
|
||||
#define _POSIX_SYNCHRONIZED_IO 1
|
||||
#define _POSIX_TIMERS 1
|
||||
|
||||
|
||||
/* In P1003.1b but defined by drafts at least as early as P1003.1c/D10 */
|
||||
#define _POSIX_THREADS 1
|
||||
#define _POSIX_THREAD_ATTR_STACKADDR 1
|
||||
#define _POSIX_THREAD_ATTR_STACKSIZE 1
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING 1
|
||||
#define _POSIX_THREAD_PRIO_INHERIT 1
|
||||
#define _POSIX_THREAD_PRIO_PROTECT 1
|
||||
#define _POSIX_THREAD_PROCESS_SHARED 1
|
||||
#define _POSIX_THREAD_SAFE_FUNCTIONS 1
|
||||
|
||||
/* P1003.4b/D8 defines the constants below this comment. */
|
||||
#define _POSIX_SPAWN 1
|
||||
#define _POSIX_TIMEOUTS 1
|
||||
#define _POSIX_CPUTIME 1
|
||||
#define _POSIX_THREAD_CPUTIME 1
|
||||
#define _POSIX_SPORADIC_SERVER 1
|
||||
#define _POSIX_THREAD_SPORADIC_SERVER 1
|
||||
#define _POSIX_DEVICE_CONTROL 1
|
||||
#define _POSIX_DEVCTL_DIRECTION 1
|
||||
#define _POSIX_INTERRUPT_CONTROL 1
|
||||
#define _POSIX_ADVISORY_INFO 1
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __svr4__
|
||||
# define _POSIX_JOB_CONTROL 1
|
||||
# define _POSIX_SAVED_IDS 1
|
||||
# define _POSIX_VERSION 199009L
|
||||
#endif
|
||||
|
||||
#ifdef __CYGWIN32__
|
||||
# define _POSIX_JOB_CONTROL 1
|
||||
# define _POSIX_SAVED_IDS 0
|
||||
# define _POSIX_VERSION 199009L
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _SYS_FEATURES_H */
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Written by Joel Sherrill <joel@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2000.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __POSIX_SYS_SCHEDULING_h
|
||||
#define __POSIX_SYS_SCHEDULING_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/unistd.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
/* Scheduling Policies, P1003.1b-1993, p. 250
|
||||
NOTE: SCHED_SPORADIC added by P1003.4b/D8, p. 34. */
|
||||
|
||||
#define SCHED_OTHER 0
|
||||
#define SCHED_FIFO 1
|
||||
#define SCHED_RR 2
|
||||
|
||||
#if defined(_POSIX_SPORADIC_SERVER)
|
||||
#define SCHED_SPORADIC 3
|
||||
#endif
|
||||
|
||||
/* Scheduling Parameters, P1003.1b-1993, p. 249
|
||||
NOTE: Fields whose name begins with "ss_" added by P1003.4b/D8, p. 33. */
|
||||
|
||||
struct sched_param {
|
||||
int sched_priority; /* Process execution scheduling priority */
|
||||
|
||||
#if defined(_POSIX_SPORADIC_SERVER)
|
||||
int ss_low_priority; /* Low scheduling priority for sporadic */
|
||||
/* server */
|
||||
struct timespec ss_replenish_period;
|
||||
/* Replenishment period for sporadic server */
|
||||
struct timespec ss_initial_budget; /* Initial budget for sporadic server */
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
|
@ -8,16 +8,113 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <sys/features.h>
|
||||
|
||||
/* #ifndef __STRICT_ANSI__*/
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
#include <sys/types.h> /* for pthread data types */
|
||||
#endif
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
typedef unsigned long sigset_t;
|
||||
|
||||
#if defined(__rtems__)
|
||||
|
||||
#if defined(_POSIX_REALTIME_SIGNALS)
|
||||
|
||||
/* sigev_notify values
|
||||
NOTE: P1003.1c/D10, p. 34 adds SIGEV_THREAD. */
|
||||
|
||||
#define SIGEV_NONE 1 /* No asynchronous notification shall be delivered */
|
||||
/* when the event of interest occurs. */
|
||||
#define SIGEV_SIGNAL 2 /* A queued signal, with an application defined */
|
||||
/* value, shall be delivered when the event of */
|
||||
/* interest occurs. */
|
||||
#define SIGEV_THREAD 3 /* A notification function shall be called to */
|
||||
/* perform notification. */
|
||||
|
||||
/* Signal Generation and Delivery, P1003.1b-1993, p. 63
|
||||
NOTE: P1003.1c/D10, p. 34 adds sigev_notify_function and
|
||||
sigev_notify_attributes to the sigevent structure. */
|
||||
|
||||
union sigval {
|
||||
int sival_int; /* Integer signal value */
|
||||
void *sival_ptr; /* Pointer signal value */
|
||||
};
|
||||
|
||||
struct sigevent {
|
||||
int sigev_notify; /* Notification type */
|
||||
int sigev_signo; /* Signal number */
|
||||
union sigval sigev_value; /* Signal value */
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
void (*sigev_notify_function)( union sigval );
|
||||
/* Notification function */
|
||||
pthread_attr_t *sigev_notify_attributes; /* Notification Attributes */
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Signal Actions, P1003.1b-1993, p. 64 */
|
||||
/* si_code values, p. 66 */
|
||||
|
||||
#define SI_USER 1 /* Sent by a user. kill(), abort(), etc */
|
||||
#define SI_QUEUE 2 /* Sent by sigqueue() */
|
||||
#define SI_TIMER 3 /* Sent by expiration of a timer_settime() timer */
|
||||
#define SI_ASYNCIO 4 /* Indicates completion of asycnhronous IO */
|
||||
#define SI_MESGQ 5 /* Indicates arrival of a message at an empty queue */
|
||||
|
||||
typedef struct {
|
||||
int si_signo; /* Signal number */
|
||||
int si_code; /* Cause of the signal */
|
||||
union sigval si_value; /* Signal value */
|
||||
} siginfo_t;
|
||||
#endif
|
||||
|
||||
/* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 */
|
||||
|
||||
#define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children stop */
|
||||
#define SA_SIGINFO 2 /* Invoke the signal catching function with */
|
||||
/* three arguments instead of one. */
|
||||
|
||||
/* struct sigaction notes from POSIX:
|
||||
*
|
||||
* (1) Routines stored in sa_handler should take a single int as
|
||||
* there argument although the POSIX standard does not require this.
|
||||
* (2) The fields sa_handler and sa_sigaction may overlap, and a conforming
|
||||
* application should not use both simultaneously.
|
||||
*/
|
||||
|
||||
struct sigaction {
|
||||
int sa_flags; /* Special flags to affect behavior of signal */
|
||||
sigset_t sa_mask; /* Additional set of signals to be blocked */
|
||||
/* during execution of signal-catching */
|
||||
/* function. */
|
||||
union {
|
||||
void (*_handler)(); /* SIG_DFL, SIG_IGN, or pointer to a function */
|
||||
#if defined(_POSIX_REALTIME_SIGNALS)
|
||||
void (*_sigaction)( int, siginfo_t *, void * );
|
||||
#endif
|
||||
} _signal_handlers;
|
||||
};
|
||||
|
||||
#define sa_handler _signal_handlers._handler
|
||||
#if defined(_POSIX_REALTIME_SIGNALS)
|
||||
#define sa_sigaction _signal_handlers._sigaction
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
struct sigaction
|
||||
{
|
||||
void (*sa_handler)(int);
|
||||
sigset_t sa_mask;
|
||||
int sa_flags;
|
||||
};
|
||||
#define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */
|
||||
|
||||
#define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */
|
||||
|
||||
#endif /* defined(__rtems__) */
|
||||
|
||||
#define SIG_SETMASK 0 /* set mask with sigprocmask() */
|
||||
#define SIG_BLOCK 1 /* set of signals to block */
|
||||
#define SIG_UNBLOCK 2 /* set of signals to, well, unblock */
|
||||
|
@ -28,10 +125,14 @@ struct sigaction
|
|||
#define sigaddset(what,sig) (*(what) |= (1<<(sig)))
|
||||
#define sigemptyset(what) (*(what) = 0)
|
||||
|
||||
int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b);
|
||||
int _EXFUN(sigprocmask, (int how, const sigset_t *set, sigset_t *oset));
|
||||
|
||||
/* protos for functions found in winsup sources */
|
||||
#if defined(__CYGWIN__)
|
||||
#if defined(_POSIX_THREADS)
|
||||
int _EXFUN(pthread_sigmask, (int how, const sigset_t *set, sigset_t *oset));
|
||||
#endif
|
||||
|
||||
/* protos for functions found in winsup sources for CYGWIN */
|
||||
#if defined(__CYGWIN__) || defined(__rtems__)
|
||||
#undef sigaddset
|
||||
#undef sigemptyset
|
||||
/* The first argument to kill should be pid_t. Right now
|
||||
|
@ -48,9 +149,30 @@ int _EXFUN(sigemptyset, (sigset_t *));
|
|||
int _EXFUN(sigpending, (sigset_t *));
|
||||
int _EXFUN(sigsuspend, (const sigset_t *));
|
||||
int _EXFUN(sigpause, (int));
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
int _EXFUN(pthread_kill, (pthread_t thread, int sig));
|
||||
#endif
|
||||
|
||||
#endif /* __STRICT_ANSI__ */
|
||||
#if defined(_POSIX_REALTIME_SIGNALS)
|
||||
|
||||
/* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76
|
||||
NOTE: P1003.1c/D10, p. 39 adds sigwait(). */
|
||||
|
||||
int _EXFUN(sigwaitinfo, (const sigset_t *set, siginfo_t *info));
|
||||
int _EXFUN(sigtimedwait,
|
||||
(const sigset_t *set, siginfo_t *info, const struct timespec *timeout)
|
||||
);
|
||||
int _EXFUN(sigwait, (const sigset_t *set, int *sig));
|
||||
|
||||
/* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78 */
|
||||
int _EXFUN(sigqueue, (pid_t pid, int signo, const union sigval value));
|
||||
|
||||
#endif /* defined(_POSIX_REALTIME_SIGNALS) */
|
||||
|
||||
#endif /* defined(__CYGWIN32__) || defined(__rtems__) */
|
||||
|
||||
/* #endif __STRICT_ANSI__ */
|
||||
|
||||
#if defined(___AM29K__)
|
||||
/* These all need to be defined for ANSI C, but I don't think they are
|
||||
|
@ -139,7 +261,28 @@ int _EXFUN(sigpause, (int));
|
|||
#define SIGALRM 14 /* alarm clock */
|
||||
#define SIGTERM 15 /* software termination signal from kill */
|
||||
|
||||
#if defined(__svr4__)
|
||||
#if defined(__rtems__)
|
||||
#define SIGUSR1 16 /* reserved as application defined signal 1 */
|
||||
#define SIGUSR2 17 /* reserved as application defined signal 2 */
|
||||
|
||||
#define __SIGFIRSTNOTRT SIGHUP
|
||||
#define __SIGLASTNOTRT SIGUSR2
|
||||
|
||||
/* RTEMS does not support job control, hence no Job Control Signals are
|
||||
defined per P1003.1b-1993, p. 60-61.
|
||||
|
||||
RTEMS does not support memory protection, hence no Memory Protection
|
||||
Signals are defined per P1003.1b-1993, p. 60-61. */
|
||||
|
||||
/* Real-Time Signals Range, P1003.1b-1993, p. 61
|
||||
NOTE: By P1003.1b-1993, this should be at least RTSIG_MAX
|
||||
(which is a minimum of 8) signals.
|
||||
*/
|
||||
|
||||
#define SIGRTMIN 18
|
||||
#define SIGRTMAX 32
|
||||
|
||||
#elif defined(__svr4__)
|
||||
/* svr4 specifics. different signals above 15, and sigaction. */
|
||||
#define SIGUSR1 16
|
||||
#define SIGUSR2 17
|
||||
|
|
|
@ -60,9 +60,26 @@ typedef unsigned short ushort; /* System V compatibility */
|
|||
typedef unsigned int uint; /* System V compatibility */
|
||||
# endif /*!_POSIX_SOURCE */
|
||||
|
||||
#ifndef __clock_t_defined
|
||||
typedef _CLOCK_T_ clock_t;
|
||||
#define __clock_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __time_t_defined
|
||||
typedef _TIME_T_ time_t;
|
||||
#define __time_t_defined
|
||||
|
||||
/* Time Value Specification Structures, P1003.1b-1993, p. 261 */
|
||||
|
||||
struct timespec {
|
||||
time_t tv_sec; /* Seconds */
|
||||
long tv_nsec; /* Nanoseconds */
|
||||
};
|
||||
|
||||
struct itimerspec {
|
||||
struct timespec it_interval; /* Timer period */
|
||||
struct timespec it_value; /* Timer expiration */
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef long daddr_t;
|
||||
|
@ -102,7 +119,12 @@ typedef int32_t register_t;
|
|||
* how the file was compiled (e.g. -mint16 vs -mint32, etc.).
|
||||
*/
|
||||
|
||||
#if defined(__rtems__)
|
||||
/* device numbers are 32-bit major and and 32-bit minor */
|
||||
typedef unsigned long long dev_t;
|
||||
#else
|
||||
typedef short dev_t;
|
||||
#endif
|
||||
|
||||
typedef long off_t;
|
||||
|
||||
|
@ -176,4 +198,120 @@ typedef struct _types_fd_set {
|
|||
#undef __MS_types__
|
||||
#undef _ST_INT32
|
||||
|
||||
/* The following are actually standard POSIX 1003.1b-1993 threads, mutexes,
|
||||
condition variables, and keys. But since RTEMS is currently the only
|
||||
newlib user of these, the ifdef is just on RTEMS. */
|
||||
|
||||
#if defined(__rtems__)
|
||||
|
||||
#ifndef __clockid_t_defined
|
||||
typedef _CLOCKID_T_ clockid_t;
|
||||
#define __clockid_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __timer_t_defined
|
||||
typedef _TIMER_T_ timer_t;
|
||||
#define __timer_t_defined
|
||||
#endif
|
||||
|
||||
#include <sys/features.h>
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
|
||||
#include <sys/sched.h>
|
||||
|
||||
/*
|
||||
* 2.5 Primitive System Data Types, P1003.1c/D10, p. 19.
|
||||
*/
|
||||
|
||||
typedef __uint32_t pthread_t; /* identify a thread */
|
||||
|
||||
/* P1003.1c/D10, p. 118-119 */
|
||||
#define PTHREAD_SCOPE_PROCESS 0
|
||||
#define PTHREAD_SCOPE_SYSTEM 1
|
||||
|
||||
/* P1003.1c/D10, p. 111 */
|
||||
#define PTHREAD_INHERIT_SCHED 1 /* scheduling policy and associated */
|
||||
/* attributes are inherited from */
|
||||
/* the calling thread. */
|
||||
#define PTHREAD_EXPLICIT_SCHED 2 /* set from provided attribute object */
|
||||
|
||||
/* P1003.1c/D10, p. 141 */
|
||||
#define PTHREAD_CREATE_DETACHED 0
|
||||
#define PTHREAD_CREATE_JOINABLE 1
|
||||
|
||||
typedef struct {
|
||||
int is_initialized;
|
||||
void *stackaddr;
|
||||
int stacksize;
|
||||
int contentionscope;
|
||||
int inheritsched;
|
||||
int schedpolicy;
|
||||
struct sched_param schedparam;
|
||||
|
||||
/* P1003.4b/D8, p. 54 adds cputime_clock_allowed attribute. */
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
int cputime_clock_allowed; /* see time.h */
|
||||
#endif
|
||||
int detachstate;
|
||||
|
||||
} pthread_attr_t;
|
||||
|
||||
#if defined(_POSIX_THREAD_PROCESS_SHARED)
|
||||
/* NOTE: P1003.1c/D10, p. 81 defines following values for process_shared. */
|
||||
|
||||
#define PTHREAD_PROCESS_PRIVATE 0 /* visible within only the creating process */
|
||||
#define PTHREAD_PROCESS_SHARED 1 /* visible too all processes with access to */
|
||||
/* the memory where the resource is */
|
||||
/* located */
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIO_PROTECT)
|
||||
/* Mutexes */
|
||||
|
||||
/* Values for blocking protocol. */
|
||||
|
||||
#define PTHREAD_PRIO_NONE 0
|
||||
#define PTHREAD_PRIO_INHERIT 1
|
||||
#define PTHREAD_PRIO_PROTECT 2
|
||||
#endif
|
||||
|
||||
typedef __uint32_t pthread_mutex_t; /* identify a mutex */
|
||||
|
||||
typedef struct {
|
||||
int is_initialized;
|
||||
#if defined(_POSIX_THREAD_PROCESS_SHARED)
|
||||
int process_shared; /* allow mutex to be shared amongst processes */
|
||||
#endif
|
||||
#if defined(_POSIX_THREAD_PRIO_PROTECT)
|
||||
int prio_ceiling;
|
||||
int protocol;
|
||||
#endif
|
||||
int recursive;
|
||||
} pthread_mutexattr_t;
|
||||
|
||||
/* Condition Variables */
|
||||
|
||||
typedef __uint32_t pthread_cond_t; /* identify a condition variable */
|
||||
|
||||
typedef struct {
|
||||
int is_initialized;
|
||||
#if defined(_POSIX_THREAD_PROCESS_SHARED)
|
||||
int process_shared; /* allow this to be shared amongst processes */
|
||||
#endif
|
||||
} pthread_condattr_t; /* a condition attribute object */
|
||||
|
||||
/* Keys */
|
||||
|
||||
typedef __uint32_t pthread_key_t; /* thread-specific data keys */
|
||||
|
||||
typedef struct {
|
||||
int is_initialized; /* is this structure initialized? */
|
||||
int init_executed; /* has the initialization routine been run? */
|
||||
} pthread_once_t; /* dynamic package initialization */
|
||||
|
||||
#endif /* defined(_POSIX_THREADS) */
|
||||
|
||||
#endif /* defined(__rtems__) */
|
||||
|
||||
#endif /* _SYS_TYPES_H */
|
||||
|
|
|
@ -8,6 +8,7 @@ extern "C" {
|
|||
#include <_ansi.h>
|
||||
#include <sys/types.h>
|
||||
#define __need_size_t
|
||||
#define __need_ptrdiff_t
|
||||
#include <stddef.h>
|
||||
|
||||
extern char **environ;
|
||||
|
@ -41,6 +42,9 @@ uid_t _EXFUN(geteuid, (void ));
|
|||
gid_t _EXFUN(getgid, (void ));
|
||||
int _EXFUN(getgroups, (int __gidsetsize, gid_t __grouplist[] ));
|
||||
char _EXFUN(*getlogin, (void ));
|
||||
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS)
|
||||
int _EXFUN(getlogin_r, (char *name, size_t namesize) );
|
||||
#endif
|
||||
char _EXFUN(*getpass, (__const char *__prompt));
|
||||
size_t _EXFUN(getpagesize, (void));
|
||||
pid_t _EXFUN(getpgrp, (void ));
|
||||
|
@ -55,9 +59,18 @@ off_t _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
|
|||
long _EXFUN(pathconf, (const char *__path, int __name ));
|
||||
int _EXFUN(pause, (void ));
|
||||
int _EXFUN(pipe, (int __fildes[2] ));
|
||||
int _EXFUN(read, (int __fildes, void *__buf, size_t __nbyte ));
|
||||
/* POSIX 1003.1b-1993 says read() returns ssize_t */
|
||||
#if defined(__rtems__)
|
||||
ssize_t _EXFUN(read, (int __fildes, void *__buf, size_t __nbyte ));
|
||||
#else
|
||||
int _EXFUN(read, (int __fildes, void *__buf, size_t __nbyte ));
|
||||
#endif
|
||||
int _EXFUN(rmdir, (const char *__path ));
|
||||
void * _EXFUN(sbrk, (size_t __incr));
|
||||
#if defined(__rtems__)
|
||||
void * _EXFUN(sbrk, (ptrdiff_t __incr));
|
||||
#else
|
||||
void * _EXFUN(sbrk, (size_t __incr));
|
||||
#endif
|
||||
#if defined(__CYGWIN__)
|
||||
int _EXFUN(setegid, (gid_t __gid ));
|
||||
int _EXFUN(seteuid, (uid_t __uid ));
|
||||
|
@ -73,7 +86,12 @@ pid_t _EXFUN(tcgetpgrp, (int __fildes ));
|
|||
int _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
|
||||
char _EXFUN(*ttyname, (int __fildes ));
|
||||
int _EXFUN(unlink, (const char *__path ));
|
||||
/* POSIX 1003.1b-1993 says write() returns ssize_t */
|
||||
#if defined(__rtems__)
|
||||
ssize_t _EXFUN(write, (int __fildes, const void *__buf, size_t __nbyte ));
|
||||
#else
|
||||
int _EXFUN(write, (int __fildes, const void *__buf, size_t __nbyte ));
|
||||
#endif
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
pid_t _EXFUN(vfork, (void ));
|
||||
|
@ -114,33 +132,7 @@ int _EXFUN(symlink, (const char *__name1, const char *__name2));
|
|||
# define SEEK_CUR 1
|
||||
# define SEEK_END 2
|
||||
|
||||
/*
|
||||
* RTEMS adheres to a later version of POSIX -- 1003.1b.
|
||||
*
|
||||
* XXX this version string should change.
|
||||
*/
|
||||
|
||||
#ifdef __rtems__
|
||||
#ifndef _POSIX_JOB_CONTROL
|
||||
# define _POSIX_JOB_CONTROL 1
|
||||
#endif
|
||||
#ifndef _POSIX_SAVED_IDS
|
||||
# define _POSIX_SAVED_IDS 1
|
||||
#endif
|
||||
# define _POSIX_VERSION 199009L
|
||||
#else
|
||||
#ifdef __svr4__
|
||||
# define _POSIX_JOB_CONTROL 1
|
||||
# define _POSIX_SAVED_IDS 1
|
||||
# define _POSIX_VERSION 199009L
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
# define _POSIX_JOB_CONTROL 1
|
||||
# define _POSIX_SAVED_IDS 0
|
||||
# define _POSIX_VERSION 199009L
|
||||
#endif
|
||||
#include <sys/features.h>
|
||||
|
||||
#define STDIN_FILENO 0 /* standard input file descriptor */
|
||||
#define STDOUT_FILENO 1 /* standard output file descriptor */
|
||||
|
@ -148,21 +140,73 @@ int _EXFUN(symlink, (const char *__name1, const char *__name2));
|
|||
|
||||
long _EXFUN(sysconf, (int __name));
|
||||
|
||||
# define _SC_ARG_MAX 0
|
||||
# define _SC_CHILD_MAX 1
|
||||
# define _SC_CLK_TCK 2
|
||||
# define _SC_NGROUPS_MAX 3
|
||||
# define _SC_OPEN_MAX 4
|
||||
/* no _SC_STREAM_MAX */
|
||||
# define _SC_JOB_CONTROL 5
|
||||
# define _SC_SAVED_IDS 6
|
||||
# define _SC_VERSION 7
|
||||
# define _SC_PAGESIZE 8
|
||||
# define _SC_NPROCESSORS_CONF 9
|
||||
# define _SC_NPROCESSORS_ONLN 10
|
||||
# define _SC_PHYS_PAGES 11
|
||||
# define _SC_AVPHYS_PAGES 12
|
||||
/*
|
||||
* 4.8.1 Get Configurable System Variables, P1003.1b-1993, p. 96
|
||||
*
|
||||
* NOTE: Table 4-2, Configurable System Variables, p. 96
|
||||
*/
|
||||
|
||||
#define _SC_ARG_MAX 0
|
||||
#define _SC_CHILD_MAX 1
|
||||
#define _SC_CLK_TCK 2
|
||||
#define _SC_NGROUPS_MAX 3
|
||||
#define _SC_OPEN_MAX 4
|
||||
/* no _SC_STREAM_MAX */
|
||||
#define _SC_JOB_CONTROL 5
|
||||
#define _SC_SAVED_IDS 6
|
||||
#define _SC_VERSION 7
|
||||
#define _SC_PAGESIZE 8
|
||||
#define _SC_AIO_LISTIO_MAX 9
|
||||
#define _SC_AIO_MAX 10
|
||||
#define _SC_AIO_PRIO_DELTA_MAX 11
|
||||
#define _SC_DELAYTIMER_MAX 12
|
||||
#define _SC_MQ_OPEN_MAX 13
|
||||
#define _SC_MQ_PRIO_MAX 14
|
||||
#define _SC_RTSIG_MAX 15
|
||||
#define _SC_SEM_NSEMS_MAX 16
|
||||
#define _SC_SEM_VALUE_MAX 17
|
||||
#define _SC_SIGQUEUE_MAX 18
|
||||
#define _SC_TIMER_MAX 19
|
||||
#define _SC_TZNAME_MAX 20
|
||||
|
||||
#define _SC_ASYNCHRONOUS_IO 21
|
||||
#define _SC_FSYNC 22
|
||||
#define _SC_MAPPED_FILES 23
|
||||
#define _SC_MEMLOCK 24
|
||||
#define _SC_MEMLOCK_RANGE 25
|
||||
#define _SC_MEMORY_PROTECTION 26
|
||||
#define _SC_MESSAGE_PASSING 27
|
||||
#define _SC_PRIORITIZED_IO 28
|
||||
#define _SC_REALTIME_SIGNALS 29
|
||||
#define _SC_SEMAPHORES 30
|
||||
#define _SC_SHARED_MEMORY_OBJECTS 31
|
||||
#define _SC_SYNCHRONIZED_IO 32
|
||||
#define _SC_TIMERS 33
|
||||
|
||||
/*
|
||||
* P1003.1c/D10, p. 52 adds the following.
|
||||
*/
|
||||
|
||||
#define _SC_GETGR_R_SIZE_MAX 34
|
||||
#define _SC_GETPW_R_SIZE_MAX 35
|
||||
#define _SC_LOGIN_NAME_MAX 36
|
||||
#define _SC_THREAD_DESTRUCTOR_ITERATIONS 37
|
||||
#define _SC_THREAD_KEYS_MAX 38
|
||||
#define _SC_THREAD_STACK_MIN 39
|
||||
#define _SC_THREAD_THREADS_MAX 40
|
||||
#define _SC_TTY_NAME_MAX 41
|
||||
|
||||
#define _SC_THREADS 42
|
||||
#define _SC_THREAD_ATTR_STACKADDR 43
|
||||
#define _SC_THREAD_ATTR_STACKSIZE 44
|
||||
#define _SC_THREAD_PRIORITY_SCHEDULING 45
|
||||
#define _SC_THREAD_PRIO_INHERIT 46
|
||||
/* _SC_THREAD_PRIO_PROTECT was _SC_THREAD_PRIO_CEILING in early drafts */
|
||||
#define _SC_THREAD_PRIO_PROTECT 47
|
||||
#define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT
|
||||
#define _SC_THREAD_PROCESS_SHARED 48
|
||||
#define _SC_THREAD_SAFE_FUNCTIONS 49
|
||||
|
||||
# define _PC_LINK_MAX 0
|
||||
# define _PC_MAX_CANON 1
|
||||
# define _PC_MAX_INPUT 2
|
||||
|
|
|
@ -29,18 +29,7 @@ extern "C" {
|
|||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
/* Get _CLOCK_T_ and _TIME_T_. */
|
||||
#include <machine/types.h>
|
||||
|
||||
#ifndef __clock_t_defined
|
||||
typedef _CLOCK_T_ clock_t;
|
||||
#define __clock_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __time_t_defined
|
||||
typedef _TIME_T_ time_t;
|
||||
#define __time_t_defined
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
|
||||
struct tm
|
||||
{
|
||||
|
@ -83,6 +72,106 @@ void _EXFUN(tzset, (void));
|
|||
#endif
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
#include <sys/features.h>
|
||||
|
||||
|
||||
#if defined(_POSIX_TIMERS)
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
/* Clocks, P1003.1b-1993, p. 263 */
|
||||
|
||||
int _EXFUN(clock_settime, (clockid_t clock_id, const struct timespec *tp));
|
||||
int _EXFUN(clock_gettime, (clockid_t clock_id, struct timespec *tp));
|
||||
int _EXFUN(clock_getres, (clockid_t clock_id, struct timespec *res));
|
||||
|
||||
/* Create a Per-Process Timer, P1003.1b-1993, p. 264 */
|
||||
|
||||
int _EXFUN(timer_create,
|
||||
(clockid_t clock_id, struct sigevent *evp, timer_t *timerid));
|
||||
|
||||
/* Delete a Per_process Timer, P1003.1b-1993, p. 266 */
|
||||
|
||||
int _EXFUN(timer_delete, (timer_t timerid));
|
||||
|
||||
/* Per-Process Timers, P1003.1b-1993, p. 267 */
|
||||
|
||||
int _EXFUN(timer_settime,
|
||||
(timer_t timerid, int flags, const struct itimerspec *value,
|
||||
struct itimerspec *ovalue));
|
||||
int _EXFUN(timer_gettime, (timer_t timerid, struct itimerspec *value));
|
||||
int _EXFUN(timer_getoverrun, (timer_t timerid));
|
||||
|
||||
/* High Resolution Sleep, P1003.1b-1993, p. 269 */
|
||||
|
||||
int _EXFUN(nanosleep, (const struct timespec *rqtp, struct timespec *rmtp));
|
||||
|
||||
#endif /* _POSIX_TIMERS */
|
||||
|
||||
/* CPU-time Clock Attributes, P1003.4b/D8, p. 54 */
|
||||
|
||||
/* values for the clock enable attribute */
|
||||
|
||||
#define CLOCK_ENABLED 1 /* clock is enabled, i.e. counting execution time */
|
||||
#define CLOCK_DISABLED 0 /* clock is disabled */
|
||||
|
||||
/* values for the pthread cputime_clock_allowed attribute */
|
||||
|
||||
#define CLOCK_ALLOWED 1 /* If a thread is created with this value a */
|
||||
/* CPU-time clock attached to that thread */
|
||||
/* shall be accessible. */
|
||||
#define CLOCK_DISALLOWED 0 /* If a thread is created with this value, the */
|
||||
/* thread shall not have a CPU-time clock */
|
||||
/* accessible. */
|
||||
|
||||
/* Manifest Constants, P1003.1b-1993, p. 262 */
|
||||
|
||||
#define CLOCK_REALTIME (clockid_t)1
|
||||
|
||||
/* Flag indicating time is "absolute" with respect to the clock
|
||||
associated with a time. */
|
||||
|
||||
#define TIMER_ABSTIME 4
|
||||
|
||||
/* Manifest Constants, P1003.4b/D8, p. 55 */
|
||||
|
||||
#if defined(_POSIX_CPUTIME)
|
||||
|
||||
/* When used in a clock or timer function call, this is interpreted as
|
||||
the identifier of the CPU_time clock associated with the PROCESS
|
||||
making the function call. */
|
||||
|
||||
#define CLOCK_PROCESS_CPUTIME (clockid_t)2
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
|
||||
/* When used in a clock or timer function call, this is interpreted as
|
||||
the identifier of the CPU_time clock associated with the THREAD
|
||||
making the function call. */
|
||||
|
||||
#define CLOCK_THREAD_CPUTIME (clockid_t)3
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_CPUTIME)
|
||||
|
||||
/* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */
|
||||
|
||||
int _EXFUN(clock_getcpuclockid, (pid_t pid, clockid_t *clock_id));
|
||||
|
||||
#endif /* _POSIX_CPUTIME */
|
||||
|
||||
#if defined(_POSIX_CPUTIME) || defined(_POSIX_THREAD_CPUTIME)
|
||||
|
||||
/* CPU-time Clock Attribute Access, P1003.4b/D8, p. 56 */
|
||||
|
||||
int _EXFUN(clock_setenable_attr, (clockid_t clock_id, int attr));
|
||||
int _EXFUN(clock_getenable_attr, (clockid_t clock_id, int *attr));
|
||||
|
||||
#endif /* _POSIX_CPUTIME or _POSIX_THREAD_CPUTIME */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -6,22 +6,22 @@
|
|||
#ifndef _SYS_TYPES_H
|
||||
#define _SYS_TYPES_H
|
||||
|
||||
/*
|
||||
* Okay, newlib has its own time_t and clock_t in libc/include/time.h
|
||||
* Since they're equivalent but not identical, we'll just skip the kernel's
|
||||
* definitions.
|
||||
*/
|
||||
/* Newlib has it's own time_t and clock_t definitions in
|
||||
* libc/include/sys/types.h. Repeat those here and
|
||||
* skip the kernel's definitions. */
|
||||
|
||||
#ifdef __time_t_defined
|
||||
#include <machine/types.h>
|
||||
|
||||
#ifndef __time_t_defined
|
||||
#define _TIME_T
|
||||
#else
|
||||
#define __time_t_defined
|
||||
typedef _TIME_T_ time_t;
|
||||
#endif
|
||||
|
||||
#ifdef __clock_t_defined
|
||||
#ifndef __clock_t_defined
|
||||
#define _CLOCK_T
|
||||
#else
|
||||
#define __clock_t_defined
|
||||
typedef _CLOCK_T_ clock_t;
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
|
|
|
@ -1,142 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __POSIX_SIGNALS_h
|
||||
#define __POSIX_SIGNALS_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/features.h>
|
||||
#include "_ansi.h"
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <sys/siginfo.h>
|
||||
#include <reent.h> /* only for reentrant signal() and raise() */
|
||||
|
||||
/*
|
||||
* 7.7 Signal handling <signal.h>, ANSI C Standard.
|
||||
*/
|
||||
|
||||
typedef int sig_atomic_t;
|
||||
|
||||
/*
|
||||
* ANSI C Signal Handling Functions
|
||||
*/
|
||||
|
||||
typedef void (*_sig_func_ptr) ();
|
||||
|
||||
_sig_func_ptr _EXFUN(_signal_r, (struct _reent *, int, _sig_func_ptr));
|
||||
int _EXFUN(_raise_r, (struct _reent *, int));
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
_sig_func_ptr _EXFUN(signal, (int, _sig_func_ptr));
|
||||
int _EXFUN(raise, (int));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 3.3.2 Send a Signal to a Process, P1003.1b-1993, p. 68
|
||||
*
|
||||
* NOTE: Behavior of kill() depends on _POSIX_SAVED_IDS.
|
||||
*/
|
||||
|
||||
int _EXFUN(kill, (pid_t pid, int sig));
|
||||
|
||||
/*
|
||||
* 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69
|
||||
*/
|
||||
|
||||
int _EXFUN(sigemptyset, (sigset_t *set));
|
||||
int _EXFUN(sigfillset, (sigset_t *set));
|
||||
int _EXFUN(sigaddset, (sigset_t *set, int signo));
|
||||
int _EXFUN(sigdelset, (sigset_t *set, int signo));
|
||||
int _EXFUN(sigismember, (const sigset_t *set, int signo));
|
||||
|
||||
/*
|
||||
* 3.3.4 Examine and Change Signal Action, P1003.1b-1993, p. 70
|
||||
*/
|
||||
|
||||
int _EXFUN(sigaction,
|
||||
(int sig, const struct sigaction *act, struct sigaction *oact)
|
||||
);
|
||||
|
||||
/*
|
||||
* 3.3.5 Examine and Change Blocked Signals, P1003.1b-1993, p. 73
|
||||
*
|
||||
* NOTE: P1003.1c/D10, p. 37 adds pthread_sigmask().
|
||||
*/
|
||||
|
||||
/* values for how */
|
||||
|
||||
#define SIG_BLOCK 1 /* resulting_set = (current_set | set) */
|
||||
#define SIG_UNBLOCK 2 /* resulting_set = (current_set & ~set) */
|
||||
#define SIG_SETMASK 3 /* resulting_set = set */
|
||||
|
||||
int _EXFUN(sigprocmask, (int how, const sigset_t *set, sigset_t *oset));
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
int _EXFUN(pthread_sigmask, (int how, const sigset_t *set, sigset_t *oset));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 3.3.6 Examine Pending Signals, P1003.1b-1993, p. 75
|
||||
*/
|
||||
|
||||
int _EXFUN(sigpending, (sigset_t *set));
|
||||
|
||||
/*
|
||||
* 3.3.7 Wait for a Signal, P1003.1b-1993, p. 75
|
||||
*/
|
||||
|
||||
int _EXFUN(sigsuspend, (const sigset_t *sigmask));
|
||||
|
||||
#if defined(_POSIX_REALTIME_SIGNALS)
|
||||
|
||||
/*
|
||||
* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76
|
||||
*
|
||||
* NOTE: P1003.1c/D10, p. 39 adds sigwait().
|
||||
*/
|
||||
|
||||
int _EXFUN(sigwaitinfo, (const sigset_t *set, siginfo_t *info));
|
||||
int _EXFUN(sigtimedwait,
|
||||
(const sigset_t *set, siginfo_t *info, const struct timespec *timeout)
|
||||
);
|
||||
int _EXFUN(sigwait, (const sigset_t *set, int *sig));
|
||||
|
||||
/*
|
||||
* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78
|
||||
*/
|
||||
|
||||
int _EXFUN(sigqueue, (pid_t pid, int signo, const union sigval value));
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 3.3.10 Send a Signal to a Thread, P1003.1c/D10, p. 43
|
||||
*/
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
int _EXFUN(pthread_kill, (pthread_t thread, int sig));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 3.4.1 Schedule Alarm, P1003.1b-1993, p. 79
|
||||
*/
|
||||
|
||||
unsigned int _EXFUN(alarm, (unsigned int seconds));
|
||||
|
||||
/*
|
||||
* 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 80
|
||||
*/
|
||||
|
||||
int _EXFUN(pause, (void));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
|
@ -1,218 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __POSIX_TIME_h
|
||||
#define __POSIX_TIME_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/features.h>
|
||||
#include "_ansi.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/siginfo.h>
|
||||
|
||||
/*
|
||||
* 4.8.1.5 Special Symbol {CLK_TCK}, P1003.1b-1993, p. 97
|
||||
*/
|
||||
|
||||
#define CLK_TCK sysconf(_SC_CLK_TCK)
|
||||
|
||||
/*
|
||||
* Get size_t from the GNU C version of stddef.h
|
||||
*/
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
/*
|
||||
* ANSI C Time Conversion Structure
|
||||
*
|
||||
* XXX reference
|
||||
*/
|
||||
|
||||
struct tm
|
||||
{
|
||||
int tm_sec;
|
||||
int tm_min;
|
||||
int tm_hour;
|
||||
int tm_mday;
|
||||
int tm_mon;
|
||||
int tm_year;
|
||||
int tm_wday;
|
||||
int tm_yday;
|
||||
int tm_isdst;
|
||||
};
|
||||
|
||||
/*
|
||||
* ANSI C Time Conversion Routines
|
||||
*
|
||||
* XXX reference
|
||||
*/
|
||||
|
||||
clock_t _EXFUN(clock, (void));
|
||||
double _EXFUN(difftime, (time_t _time2, time_t _time1));
|
||||
time_t _EXFUN(mktime, (struct tm *_timeptr));
|
||||
time_t _EXFUN(time, (time_t *_timer));
|
||||
size_t _EXFUN(strftime,
|
||||
(char *_s, size_t _maxsize, const char *_fmt, const struct tm *_t));
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
char *_EXFUN(asctime, (const struct tm *_tblock));
|
||||
char *_EXFUN(ctime, (const time_t *_time));
|
||||
struct tm *_EXFUN(gmtime, (const time_t *_timer));
|
||||
struct tm *_EXFUN(localtime,(const time_t *_timer));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Added by 8.3.5 - 8.3.8, P1002.1c/D10, p. 66-69.
|
||||
*/
|
||||
|
||||
char *_EXFUN(asctime_r, (const struct tm *, char *));
|
||||
char *_EXFUN(ctime_r, (const time_t *, char *));
|
||||
struct tm *_EXFUN(gmtime_r, (const time_t *, struct tm *));
|
||||
struct tm *_EXFUN(localtime_r, (const time_t *, struct tm *));
|
||||
|
||||
/*
|
||||
* 4.5.1 Get System Time, P1003.1b-1993, p. 91
|
||||
*/
|
||||
|
||||
time_t _EXFUN(time, (time_t *tloc));
|
||||
|
||||
#if defined(_POSIX_TIMERS)
|
||||
|
||||
/*
|
||||
* 14.2.1 Clocks, P1003.1b-1993, p. 263
|
||||
*/
|
||||
|
||||
int _EXFUN(clock_settime, (clockid_t clock_id, const struct timespec *tp));
|
||||
int _EXFUN(clock_gettime, (clockid_t clock_id, struct timespec *tp));
|
||||
int _EXFUN(clock_getres, (clockid_t clock_id, struct timespec *res));
|
||||
|
||||
/*
|
||||
* 14.2.2 Create a Per-Process Timer, P1003.1b-1993, p. 264
|
||||
*/
|
||||
|
||||
int _EXFUN(timer_create,
|
||||
(clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
|
||||
);
|
||||
|
||||
/*
|
||||
* 14.2.3 Delete a Per_process Timer, P1003.1b-1993, p. 266
|
||||
*/
|
||||
|
||||
int _EXFUN(timer_delete, (timer_t timerid));
|
||||
|
||||
/*
|
||||
* 14.2.4 Per-Process Timers, P1003.1b-1993, p. 267
|
||||
*/
|
||||
|
||||
int _EXFUN(timer_settime,
|
||||
(timer_t timerid,
|
||||
int flags,
|
||||
const struct itimerspec *value,
|
||||
struct itimerspec *ovalue)
|
||||
);
|
||||
|
||||
int _EXFUN(timer_gettime, (timer_t timerid, struct itimerspec *value));
|
||||
int _EXFUN(timer_getoverrun, (timer_t timerid));
|
||||
|
||||
/*
|
||||
* 14.2.5 High Resolution Sleep, P1003.1b-1993, p. 269
|
||||
*/
|
||||
|
||||
int _EXFUN(nanosleep, (const struct timespec *rqtp, struct timespec *rmtp));
|
||||
|
||||
#endif /* _POSIX_TIMERS */
|
||||
|
||||
/*
|
||||
* 20.1.1 CPU-time Clock Attributes, P1003.4b/D8, p. 54
|
||||
*/
|
||||
|
||||
/* values for the clock enable attribute */
|
||||
|
||||
#define CLOCK_ENABLED 1 /* clock is enabled, i.e. counting execution time */
|
||||
#define CLOCK_DISABLED 0 /* clock is disabled */
|
||||
|
||||
/* values for the pthread cputime_clock_allowed attribute */
|
||||
|
||||
#define CLOCK_ALLOWED 1 /* If a thread is created with this value a */
|
||||
/* CPU-time clock attached to that thread */
|
||||
/* shall be accessible. */
|
||||
#define CLOCK_DISALLOWED 0 /* If a thread is created with this value, the */
|
||||
/* thread shall not have a CPU-time clock */
|
||||
/* accessible. */
|
||||
|
||||
/*
|
||||
* 14.1.3 Manifest Constants, P1003.1b-1993, p. 262
|
||||
*/
|
||||
|
||||
#define CLOCK_REALTIME (clockid_t)1
|
||||
|
||||
/*
|
||||
* Flag indicating time is "absolute" with respect to the clock
|
||||
* associated with a time
|
||||
*/
|
||||
|
||||
#define TIMER_ABSTIME 4
|
||||
|
||||
/*
|
||||
* 20.1.2 Manifest Constants, P1003.4b/D8, p. 55
|
||||
*/
|
||||
|
||||
#if defined(_POSIX_CPUTIME)
|
||||
|
||||
/*
|
||||
* When used in a clock or timer function call, this is interpreted as
|
||||
* the identifier of the CPU_time clock associated with the PROCESS
|
||||
* making the function call.
|
||||
*/
|
||||
|
||||
#define CLOCK_PROCESS_CPUTIME (clockid_t)2
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
|
||||
/*
|
||||
* When used in a clock or timer function call, this is interpreted as
|
||||
* the identifier of the CPU_time clock associated with the THREAD
|
||||
* making the function call.
|
||||
*/
|
||||
|
||||
#define CLOCK_THREAD_CPUTIME (clockid_t)3
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_CPUTIME)
|
||||
|
||||
/*
|
||||
* 20.1.3 Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55
|
||||
*/
|
||||
|
||||
int _EXFUN(clock_getcpuclockid, (pid_t pid, clockid_t *clock_id));
|
||||
|
||||
#endif /* _POSIX_CPUTIME */
|
||||
|
||||
#if defined(_POSIX_CPUTIME) || defined(_POSIX_THREAD_CPUTIME)
|
||||
|
||||
/*
|
||||
* 20.1.5 CPU-time Clock Attribute Access, P1003.4b/D8, p. 56
|
||||
*/
|
||||
|
||||
int _EXFUN(clock_setenable_attr, (clockid_t clock_id, int attr));
|
||||
|
||||
int _EXFUN(clock_getenable_attr, (clockid_t clock_id, int *attr));
|
||||
|
||||
#endif /* _POSIX_CPUTIME or _POSIX_THREAD_CPUTIME */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
|
@ -1,111 +0,0 @@
|
|||
/*
|
||||
* This file lists the symbols which may be defined to indicate
|
||||
* the presence of POSIX features subsets. If defined, the
|
||||
* feature must be supported.
|
||||
*
|
||||
* NOTE: This file lists all feature constants. The ones not supported
|
||||
* should be commented out.
|
||||
*
|
||||
* XXX: These are all "Compile-Time Symbolic Constants". Need to
|
||||
* address "Execution-Time" ones.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __RTEMS_POSIX_FEATURES_h
|
||||
#define __RTEMS_POSIX_FEATURES_h
|
||||
|
||||
/*
|
||||
* XXX: Temporary function so we can break when something that is
|
||||
* not implemented is invoked.
|
||||
*/
|
||||
|
||||
int POSIX_MP_NOT_IMPLEMENTED( void );
|
||||
int POSIX_NOT_IMPLEMENTED( void );
|
||||
int POSIX_BOTTOM_REACHED( void );
|
||||
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
* *
|
||||
* P1003.1b-1993 defines the constants below this comment. *
|
||||
* *
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
* Newlib may already have this set defined.
|
||||
*/
|
||||
|
||||
#ifndef _POSIX_JOB_CONTROL
|
||||
#define _POSIX_JOB_CONTROL
|
||||
#endif
|
||||
|
||||
#ifndef _POSIX_SAVED_IDS
|
||||
#define _POSIX_SAVED_IDS
|
||||
#endif
|
||||
|
||||
#define _POSIX_ASYNCHRONOUS_IO
|
||||
#define _POSIX_FSYNC
|
||||
#define _POSIX_MAPPED_FILES
|
||||
#define _POSIX_MEMLOCK
|
||||
#define _POSIX_MEMLOCK_RANGE
|
||||
#define _POSIX_MEMORY_PROTECTION
|
||||
#define _POSIX_MESSAGE_PASSING
|
||||
#define _POSIX_PRIORITIZED_IO
|
||||
#define _POSIX_PRIORITY_SCHEDULING
|
||||
#define _POSIX_REALTIME_SIGNALS
|
||||
#define _POSIX_SEMAPHORES
|
||||
#define _POSIX_SHARED_MEMORY_OBJECTS
|
||||
#define _POSIX_SYNCHRONIZED_IO
|
||||
#define _POSIX_TIMERS
|
||||
|
||||
/*
|
||||
* This indicates the version number of the POSIX standard we are
|
||||
* trying to be compliant with.
|
||||
*
|
||||
* NOTE: Newlib may already have this set defined.
|
||||
*/
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
#undef _POSIX_VERSION
|
||||
#define _POSIX_VERSION 199309L
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
* *
|
||||
* P1003.1c/D10 defines the constants below this comment. *
|
||||
* *
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
|
||||
#define _POSIX_THREADS
|
||||
#define _POSIX_THREAD_ATTR_STACKADDR
|
||||
#define _POSIX_THREAD_ATTR_STACKSIZE
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING
|
||||
#define _POSIX_THREAD_PRIO_INHERIT
|
||||
#define _POSIX_THREAD_PRIO_PROTECT
|
||||
#define _POSIX_THREAD_PROCESS_SHARED
|
||||
#define _POSIX_THREAD_SAFE_FUNCTIONS
|
||||
|
||||
/****************************************************************************
|
||||
****************************************************************************
|
||||
* *
|
||||
* P1003.4b/D8 defines the constants below this comment. *
|
||||
* *
|
||||
****************************************************************************
|
||||
****************************************************************************/
|
||||
|
||||
#define _POSIX_SPAWN
|
||||
#define _POSIX_TIMEOUTS
|
||||
#define _POSIX_CPUTIME
|
||||
#define _POSIX_THREAD_CPUTIME
|
||||
#define _POSIX_SPORADIC_SERVER
|
||||
#define _POSIX_THREAD_SPORADIC_SERVER
|
||||
#define _POSIX_DEVICE_CONTROL
|
||||
#define _POSIX_DEVCTL_DIRECTION
|
||||
#define _POSIX_INTERRUPT_CONTROL
|
||||
#define _POSIX_ADVISORY_INFO
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
|
@ -1,56 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __POSIX_SYS_SCHEDULING_h
|
||||
#define __POSIX_SYS_SCHEDULING_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/features.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
/*
|
||||
* 13.2 Scheduling Policies, P1003.1b-1993, p. 250
|
||||
*
|
||||
* NOTE: SCHED_SPORADIC added by P1003.4b/D8, p. 34.
|
||||
*/
|
||||
|
||||
#define SCHED_OTHER 0
|
||||
#define SCHED_FIFO 1
|
||||
#define SCHED_RR 2
|
||||
|
||||
#if defined(_POSIX_SPORADIC_SERVER)
|
||||
#define SCHED_SPORADIC 3
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 13.1 Scheduling Parameters, P1003.1b-1993, p. 249
|
||||
*
|
||||
* NOTE: Fields whose name begins with "ss_" added by P1003.4b/D8, p. 33.
|
||||
*/
|
||||
|
||||
struct sched_param {
|
||||
int sched_priority; /* Process execution scheduling priority */
|
||||
|
||||
#if defined(_POSIX_SPORADIC_SERVER)
|
||||
int ss_low_priority; /* Low scheduling priority for sporadic */
|
||||
/* server */
|
||||
struct timespec ss_replenish_period;
|
||||
/* Replenishment period for sporadic server */
|
||||
struct timespec ss_initial_budget; /* Initial budget for sporadic server */
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
|
@ -1,176 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __POSIX_SYS_SIGNAL_INFORMATION_h
|
||||
#define __POSIX_SYS_SIGNAL_INFORMATION_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 3.3 Signal Concepts, P1003.1b-1993, p. 60
|
||||
*/
|
||||
|
||||
typedef __uint32_t sigset_t;
|
||||
|
||||
#define SIG_DFL ((void (*)())0) /* Request for default signal handling */
|
||||
#define SIG_IGN ((void (*)())1) /* Request that signal be ignored */
|
||||
|
||||
#define SIG_ERR ((void (*)())-1) /* Returned by signal() on error */
|
||||
|
||||
/*
|
||||
* Required Signals.
|
||||
*
|
||||
* The default action is in parentheses and is one of the
|
||||
* following actions:
|
||||
*
|
||||
* (1) abnormal termination of process
|
||||
* (2) ignore the signal
|
||||
* (3) stop the process
|
||||
* (4) continue the process if it is currently stopped, otherwise
|
||||
* ignore the signal
|
||||
*/
|
||||
|
||||
#define SIGHUP 1 /* (1) hangup detected on controlling terminal */
|
||||
#define SIGINT 2 /* (1) interactive attention signal */
|
||||
#define SIGQUIT 3 /* (1) interactive termination signal */
|
||||
#define SIGILL 4 /* (1) illegal instruction */
|
||||
#define SIGTRAP 5 /* (1) trace trap (not reset) */
|
||||
#define SIGIOT 6 /* (1) IOT instruction */
|
||||
#define SIGABRT 6 /* (1) abnormal terminal signal */
|
||||
#define SIGEMT 7 /* (1) EMT instruction */
|
||||
#define SIGFPE 8 /* (1) erroneous arithmetic operation */
|
||||
#define SIGKILL 9 /* (1) termination signal */
|
||||
#define SIGBUS 10 /* (1) bus error */
|
||||
#define SIGSEGV 11 /* (1) invalid memory reference */
|
||||
#define SIGSYS 12 /* (1) bad argument to system call */
|
||||
#define SIGPIPE 13 /* (1) write on pipe with no readers */
|
||||
#define SIGALRM 14 /* (1) timeout signal, such as initiated by alarm() */
|
||||
#define SIGTERM 15 /* (1) termination signal */
|
||||
#define SIGUSR1 16 /* (1) reserved as application defined signal 1 */
|
||||
#define SIGUSR2 17 /* (1) reserved as application defined signal 2 */
|
||||
|
||||
#define __SIGFIRSTNOTRT SIGHUP
|
||||
#define __SIGLASTNOTRT SIGUSR2
|
||||
|
||||
/*
|
||||
* RTEMS does not support job control, hence no Job Control Signals are
|
||||
* defined per P1003.1b-1993, p. 60-61.
|
||||
*/
|
||||
|
||||
/*
|
||||
* RTEMS does not support memory protection, hence no Memory Protection
|
||||
* Signals are defined per P1003.1b-1993, p. 60-61.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Real-Time Signals Range, P1003.1b-1993, p. 61
|
||||
*
|
||||
* NOTE: This should be at least RTSIG_MAX (which is a minimum of 8) signals.
|
||||
*/
|
||||
|
||||
#define SIGRTMIN 18
|
||||
#define SIGRTMAX 32
|
||||
|
||||
/* sigev_notify values
|
||||
*
|
||||
* NOTE: P1003.1c/D10, p. 34 adds SIGEV_THREAD.
|
||||
*/
|
||||
|
||||
#define SIGEV_NONE 1 /* No asynchronous notification shall be delivered */
|
||||
/* when the event of interest occurs. */
|
||||
#define SIGEV_SIGNAL 2 /* A queued signal, with an application defined */
|
||||
/* value, shall be delivered when the event of */
|
||||
/* interest occurs. */
|
||||
#define SIGEV_THREAD 3 /* A notification function shall be called to */
|
||||
/* perform notification. */
|
||||
/*
|
||||
* 3.3.1.2 Signal Generation and Delivery, P1003.1b-1993, p. 63
|
||||
*
|
||||
* NOTE: P1003.1c/D10, p. 34 adds sigev_notify_function and
|
||||
* sigev_notify_attributes to the sigevent structure.
|
||||
*/
|
||||
|
||||
union sigval {
|
||||
int sival_int; /* Integer signal value */
|
||||
void *sival_ptr; /* Pointer signal value */
|
||||
};
|
||||
|
||||
struct sigevent {
|
||||
int sigev_notify; /* Notification type */
|
||||
int sigev_signo; /* Signal number */
|
||||
union sigval sigev_value; /* Signal value */
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
void (*sigev_notify_function)( union sigval );
|
||||
/* Notification function */
|
||||
pthread_attr_t *sigev_notify_attributes; /* Notification Attributes */
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* 3.3.1.3 Signal Actions, P1003.1b-1993, p. 64
|
||||
*/
|
||||
|
||||
/* si_code values, p. 66 */
|
||||
|
||||
#define SI_USER 1 /* Sent by a user. kill(), abort(), etc */
|
||||
#define SI_QUEUE 2 /* Sent by sigqueue() */
|
||||
#define SI_TIMER 3 /* Sent by expiration of a timer_settime() timer */
|
||||
#define SI_ASYNCIO 4 /* Indicates completion of asycnhronous IO */
|
||||
#define SI_MESGQ 5 /* Indicates arrival of a message at an empty queue */
|
||||
|
||||
typedef struct {
|
||||
int si_signo; /* Signal number */
|
||||
int si_code; /* Cause of the signal */
|
||||
union sigval si_value; /* Signal value */
|
||||
} siginfo_t;
|
||||
|
||||
/*
|
||||
* 3.3.4 Examine and Change Signal Action, P1003.1b-1993, p. 70
|
||||
*/
|
||||
|
||||
/* sa_flags values */
|
||||
|
||||
#define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children stop */
|
||||
#define SA_SIGINFO 2 /* Invoke the signal catching function with */
|
||||
/* three arguments instead of one. */
|
||||
|
||||
/*
|
||||
* Data Structure Notes:
|
||||
*
|
||||
* (1) Routines stored in sa_handler should take a single int as
|
||||
* there argument although the POSIX standard does not require this.
|
||||
* (2) The fields sa_handler and sa_sigaction may overlap, and a conforming
|
||||
* application should not use both simultaneously.
|
||||
*
|
||||
* NOTE: In this implementation, macros are provided to access into the
|
||||
* union.
|
||||
*/
|
||||
|
||||
struct sigaction {
|
||||
int sa_flags; /* Special flags to affect behavior of signal */
|
||||
sigset_t sa_mask; /* Additional set of signals to be blocked */
|
||||
/* during execution of signal-catching */
|
||||
/* function. */
|
||||
union {
|
||||
void (*_handler)(); /* SIG_DFL, SIG_IGN, or pointer to a function */
|
||||
void (*_sigaction)( int, siginfo_t *, void * );
|
||||
} _signal_handlers;
|
||||
};
|
||||
|
||||
#define sa_handler _signal_handlers._handler
|
||||
#define sa_sigaction _signal_handlers._sigaction
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
|
@ -1,6 +0,0 @@
|
|||
/*
|
||||
* Is <sys/signal.h> really necessary for RTEMS?
|
||||
*
|
||||
* For sure we want to keep newlib's default version out of the install
|
||||
* so this empty file helps out in that regards.
|
||||
*/
|
|
@ -1,100 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifndef __POSIX_SYS_TIME_h
|
||||
#define __POSIX_SYS_TIME_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Get the CPU dependent types for clock_t and time_t
|
||||
*
|
||||
* NOTE: These must be visible by including <time.h>.
|
||||
*/
|
||||
|
||||
/* Get _CLOCK_T_ and _TIME_T_. */
|
||||
#include <machine/types.h>
|
||||
|
||||
#ifndef __clock_t_defined
|
||||
typedef _CLOCK_T_ clock_t;
|
||||
#define __clock_t_defined
|
||||
#endif
|
||||
|
||||
#ifndef __time_t_defined
|
||||
typedef _TIME_T_ time_t;
|
||||
#define __time_t_defined
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 14.1.1 Time Value Specification Structures, P1003.1b-1993, p. 261
|
||||
*/
|
||||
|
||||
struct timespec {
|
||||
time_t tv_sec; /* Seconds */
|
||||
long tv_nsec; /* Nanoseconds */
|
||||
};
|
||||
|
||||
struct itimerspec {
|
||||
struct timespec it_interval; /* Timer period */
|
||||
struct timespec it_value; /* Timer expiration */
|
||||
};
|
||||
|
||||
/* XXX should really be ifdef'ed */
|
||||
|
||||
/*
|
||||
* BSD based stuff
|
||||
*/
|
||||
|
||||
struct timezone {
|
||||
int tz_minuteswest;
|
||||
int tz_dsttime;
|
||||
};
|
||||
|
||||
struct timeval {
|
||||
int tv_sec;
|
||||
int tv_usec;
|
||||
};
|
||||
|
||||
int gettimeofday(
|
||||
struct timeval *tp,
|
||||
struct timezone *tzp
|
||||
);
|
||||
|
||||
/* Convenience macros for operations on timevals.
|
||||
NOTE: `timercmp' does not work for >= or <=. */
|
||||
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
|
||||
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
|
||||
#define timercmp(a, b, CMP) \
|
||||
(((a)->tv_sec == (b)->tv_sec) ? \
|
||||
((a)->tv_usec CMP (b)->tv_usec) : \
|
||||
((a)->tv_sec CMP (b)->tv_sec))
|
||||
#define timeradd(a, b, result) \
|
||||
do { \
|
||||
(result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
|
||||
(result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
|
||||
if ((result)->tv_usec >= 1000000) \
|
||||
{ \
|
||||
++(result)->tv_sec; \
|
||||
(result)->tv_usec -= 1000000; \
|
||||
} \
|
||||
} while (0)
|
||||
#define timersub(a, b, result) \
|
||||
do { \
|
||||
(result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
|
||||
(result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
|
||||
if ((result)->tv_usec < 0) { \
|
||||
--(result)->tv_sec; \
|
||||
(result)->tv_usec += 1000000; \
|
||||
} \
|
||||
} while (0)
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include */
|
|
@ -1,31 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __POSIX_SYS_TIMES_h
|
||||
#define __POSIX_SYS_TIMES_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/*
|
||||
* 4.5.2 Get Process Times, P1003.1b-1993, p. 92
|
||||
*/
|
||||
|
||||
struct tms {
|
||||
clock_t tms_utime; /* User CPU time */
|
||||
clock_t tms_stime; /* System CPU time */
|
||||
clock_t tms_cutime; /* User CPU time of terminated child processes */
|
||||
clock_t tms_cstime; /* System CPU time of terminated child processes */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
Loading…
Reference in New Issue