summaryrefslogtreecommitdiff
path: root/sched.c
diff options
context:
space:
mode:
authorrpj <rpj>1998-12-28 23:01:00 +0000
committerrpj <rpj>1998-12-28 23:01:00 +0000
commit0749394433f301cccd22d280cee1dd760b72e876 (patch)
treea5084cfaea800cdc96c25bf71a179562e18c552c /sched.c
parent95aa0a376d93ee021a6c085c71418e9f16513e0a (diff)
With this update I'm able to build the library and build and run the
tsd1.c test successfully using buildlib.bat and build.bat scripts. I not convinced that I understand the relationships between "__cplusplus" and "_WIN32" and the MS compiler, particularly in pthread.h where pthread_cleanup_push etc is defined. In particular, I have assumed that the __try/__finally blocks are only available if _WIN32 and __cplusplus are defined. I suspect this is wrong. Tue Dec 29 13:11:16 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * implement.h: Move the following struct definitions to pthread.h: pthread_t_, pthread_attr_t_, pthread_mutex_t_, pthread_mutex_t_, pthread_mutexattr_t_, pthread_key_t_, pthread_cond_t_, pthread_condattr_t_, pthread_once_t_. * pthread.h: Add "_" prefix to pthread_push_cleanup and pthread_pop_cleanup internal routines, and associated struct and typedefs. * buildlib.bat: Add compile command for semaphore.c * pthread.def: Comment out pthread_atfork routine name. Now unimplemented. * tsd.c (pthread_setspecific): Rename tkAssocCreate to _pthread_tkAssocCreate. (pthread_key_delete): Rename tkAssocDestroy to _pthread_tkAssocDestroy. * sync.c (pthread_join): Rename threadDestroy to _pthread_threadDestroy * sched.c (is_attr): attr is now **attr (was *attr), so add extra NULL pointer test. (pthread_attr_setschedparam): Increase redirection for attr which is now a **. (pthread_attr_getschedparam): Ditto. (pthread_setschedparam): Change thread validation and rename "thread" Win32 thread Handle element name to match John Bossom's version. (pthread_getschedparam): Ditto. * private.c (_pthread_threadDestroy): Rename call to callUserDestroyRoutines() as _pthread_callUserDestroyRoutines() * misc.c: Add #include "implement.h". * dll.c: Remove defined(KLUDGE) wrapped code. * fork.c: Remove redefinition of ENOMEM. Remove pthread_atfork() and fork() with #if 0/#endif. * create.c (pthread_create): Rename threadStart and threadDestroy calls to _pthread_threadStart and _pthread_threadDestroy. * implement.h: Rename "detachedstate" to "detachstate". * attr.c: Rename "detachedstate" to "detachstate". Mon Dec 28 09:54:39 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * pthread.h (pthread_attr_t_): Change to *pthread_attr_t. * attr.c (pthread_attr_setstacksize): Merge with John Bossom's version. (pthread_attr_getstacksize): Merge with John Bossom's version. (pthread_attr_setstackaddr): Merge with John Bossom's version. (pthread_attr_getstackaddr): Merge with John Bossom's version. (pthread_attr_init): Merge with John Bossom's version. (pthread_attr_destroy): Merge with John Bossom's version. (pthread_attr_getdetachstate): Merge with John Bossom's version. (pthread_attr_setdetachstate): Merge with John Bossom's version. (is_attr): attr is now **attr (was *attr), so add extra NULL pointer test. * implement.h (pthread_attr_t_): Add and rename elements in JEB's version to correspond to original, so that it can be used with original attr routines. * pthread.h: Add #endif at end which was truncated in merging.
Diffstat (limited to 'sched.c')
-rw-r--r--sched.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/sched.c b/sched.c
index e3c3ae7..4680b8f 100644
--- a/sched.c
+++ b/sched.c
@@ -15,7 +15,9 @@
static int
is_attr(const pthread_attr_t *attr)
{
- return (attr == NULL || attr->valid != _PTHREAD_ATTR_VALID) ? 1 : 0;
+ return (attr == NULL ||
+ *attr == NULL ||
+ (*attr)->valid != _PTHREAD_ATTR_VALID) ? 1 : 0;
}
int
@@ -27,11 +29,12 @@ pthread_attr_setschedparam(pthread_attr_t *attr,
return EINVAL;
}
- attr->priority = param->sched_priority;
+ (*attr)->priority = param->sched_priority;
return 0;
}
-int pthread_attr_getschedparam(const pthread_attr_t *attr,
+int
+pthread_attr_getschedparam(const pthread_attr_t *attr,
struct sched_param *param)
{
if (is_attr(attr) != 0 || param == NULL)
@@ -39,7 +42,7 @@ int pthread_attr_getschedparam(const pthread_attr_t *attr,
return EINVAL;
}
- param->sched_priority = attr->priority;
+ param->sched_priority = (*attr)->priority;
return 0;
}
@@ -47,7 +50,7 @@ int pthread_setschedparam(pthread_t thread, int policy,
const struct sched_param *param)
{
/* Validate the thread id. */
- if (_PTHREAD_VALID(thread) < 0)
+ if (thread == NULL || thread->threadH == 0)
{
return EINVAL;
}
@@ -72,7 +75,8 @@ int pthread_setschedparam(pthread_t thread, int policy,
}
/* This is practically guaranteed to return TRUE. */
- (void) SetThreadPriority(thread->win32handle, param->sched_priority);
+ (void) SetThreadPriority(thread->threadH, param->sched_priority);
+
return 0;
}
@@ -82,7 +86,7 @@ int pthread_getschedparam(pthread_t thread, int *policy,
int prio;
/* Validate the thread id. */
- if (_PTHREAD_VALID(thread) != 0)
+ if (thread == NULL || thread->threadH == 0)
{
return EINVAL;
}
@@ -97,7 +101,7 @@ int pthread_getschedparam(pthread_t thread, int *policy,
*policy = SCHED_OTHER;
/* Fill out the sched_param structure. */
- prio = GetThreadPriority(thread->win32handle);
+ prio = GetThreadPriority(thread->threadH);
if (prio == THREAD_PRIORITY_ERROR_RETURN)
{
return EINVAL;