diff options
| author | bje <bje> | 1998-07-23 15:27:26 +0000 | 
|---|---|---|
| committer | bje <bje> | 1998-07-23 15:27:26 +0000 | 
| commit | 08445aa412d4399ca41da50082bcfe82a0e179a4 (patch) | |
| tree | effa7525cd237ad9c17675a91d7160de105c129b | |
| parent | 17c1d029397de6a700ea98df8650f4b0982af8b4 (diff) | |
1998-07-24  Ben Elliston  <bje@cygnus.com>
	* pthread.h (sched_param): Define this type.
	(pthread_attr_getschedparam): Add function prototype.
	(pthread_attr_setschedparam): Likewise.
	(pthread_setcancelstate): Likewise.
	(pthread_setcanceltype): Likewise.
	(sched_get_priority_min): Likewise.
	(sched_get_priority_max): Likewise.
	(pthread_mutexattr_setprotocol): Remove; not supported.
	(pthread_mutexattr_getprotocol): Likewise.
	(pthread_mutexattr_setprioceiling): Likewise.
	(pthread_mutexattr_getprioceiling): Likewise.
	(pthread_attr_t): Add canceltype member.  Update comments.
	(SCHED_OTHER): Define this scheduling policy constant.
	(SCHED_FIFO): Likewise.
	(SCHED_RR): Likewise.
	(SCHED_MIN): Define the lowest possible value for this constant.
	(SCHED_MAX): Likewise, the maximum possible value.
	(PTHREAD_CANCEL_ASYNCHRONOUS): Redefine.
	(PTHREAD_CANCEL_DEFERRED): Likewise.
| -rw-r--r-- | pthread.h | 69 | 
1 files changed, 47 insertions, 22 deletions
| @@ -31,13 +31,21 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  #undef _POSIX_THREAD_ATTR_STACKADDR  #endif +/* Thread scheduling policies */ + +#define SCHED_OTHER 0 +#define SCHED_FIFO  1 +#define SCHED_RR    2 + +#define SCHED_MIN   SCHED_OTHER +#define SCHED_MAX   SCHED_RR  /* Cancelability attributes */  #define PTHREAD_CANCEL_ENABLE       0x00  #define PTHREAD_CANCEL_DISABLE      0x01 -#define PTHREAD_CANCEL_ASYNCHRONOUS 0x02 -#define PTHREAD_CANCEL_DEFERRED     0x04 +#define PTHREAD_CANCEL_ASYNCHRONOUS 0x00 +#define PTHREAD_CANCEL_DEFERRED     0x01  typedef HANDLE pthread_t;  typedef CRITICAL_SECTION pthread_mutex_t; @@ -51,12 +59,21 @@ typedef struct {    size_t stacksize;                  /* PTHREAD_STACK_MIN */  #endif    int cancelability;                 /* PTHREAD_CANCEL_DISABLE -					PTHREAD_CANCEL_ENABLE -					PTHREAD_CANCEL_ASYNCHRONOUS -					PTHREAD_CANCEL_DEFERRED -					_PTHREAD_CANCEL_DEFAULTS */ +					PTHREAD_CANCEL_ENABLE */ + +  int canceltype;                    /* PTHREAD_CANCEL_ASYNCHRONOUS +					PTHREAD_CANCEL_DEFERRED */ + +  int priority;  } pthread_attr_t; +/* I don't know why this structure isn't in some kind of namespace. +   According to my O'Reilly book, this is what this struct is +   called. */ +struct sched_param { +  int sched_priority; +} +  typedef struct {    enum { SIGNAL, BROADCAST, NUM_EVENTS }; @@ -119,6 +136,30 @@ int pthread_attr_setstackaddr(pthread_attr_t *attr,  int pthread_attr_getstackaddr(const pthread_attr_t *attr,  			      void **stackaddr); +int pthread_attr_getschedparam(const pthread_attr_t *attr, +			       struct sched_param *param); + +int pthread_attr_setschedparam(pthread_attr_t *attr, +			       const struct sched_param *param); + +int pthread_setschedparam(pthread_t thread, +			  int policy, +			  const struct sched_param *param); + +int pthread_getschedparam(pthread_t thread, +			  int *policy, +			  struct sched_param *param); + +int sched_get_priority_min(int policy); + +int sched_get_priority_max(int policy); + +int pthread_setcancelstate(int state, +			   int *oldstate); + +int pthread_setcanceltype(int type, +			  int *oldtype); +  /* Functions for manipulating cond. var. attribute objects. */  int pthread_condattr_init(pthread_condattr_t *attr); @@ -174,22 +215,6 @@ int pthread_mutex_trylock(pthread_mutex_t *mutex);  int pthread_mutex_unlock(pthread_mutex_t *mutex); -/* These functions cannot be implemented in terms of the Win32 API. -   Fortunately they are optional.  Their implementation just returns -   the correct error number. */ - -int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr, -				  int protocol); - -int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *attr, -				  int *protocol); - -int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *attr, -				      int prioceiling); - -int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *attr, -				     int *ceiling); -  /* Primitives for thread-specific data (TSD). */  int pthread_key_create(pthread_key_t *key, | 
