X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fmypthread.h;h=a781c401c01cd49d025dfd8fac079a6b93ae63b9;hb=25d73096cfc14c655f94b01bb235cc5efd1d5696;hp=ae5810f664473e9f02c6b2fcb9bd0930ba9b6486;hpb=241f7577895a5c74aad14d9903b6c25ea02e217d;p=c11tester.git diff --git a/include/mypthread.h b/include/mypthread.h index ae5810f6..a781c401 100644 --- a/include/mypthread.h +++ b/include/mypthread.h @@ -9,6 +9,15 @@ #include #include +/* pthread mutex types + enum + { + PTHREAD_MUTEX_NORMAL + PTHREAD_MUTEX_RECURSIVE + PTHREAD_MUTEX_ERRORCHECK + PTHREAD_MUTEX_DEFAULT + };*/ + typedef void *(*pthread_start_t)(void *); struct pthread_params { @@ -16,83 +25,25 @@ struct pthread_params { void *arg; }; -extern "C" { +struct pthread_attr +{ + /* Scheduler parameters and priority. */ + struct sched_param schedparam; + int schedpolicy; + /* Various flags like detachstate, scope, etc. */ + int flags; + /* Size of guard area. */ + size_t guardsize; + /* Stack handling. */ + void *stackaddr; + size_t stacksize; + /* Affinity map. */ + cpu_set_t *cpuset; + size_t cpusetsize; +}; -pthread_t pthread_self(void); +extern "C" { int user_main(int, char**); - -// --- not implemented yet --- - -int pthread_attr_destroy(pthread_attr_t *); -int pthread_attr_getdetachstate(const pthread_attr_t *, int *); -int pthread_attr_getguardsize(const pthread_attr_t *, size_t *); -int pthread_attr_getinheritsched(const pthread_attr_t *, int *); -int pthread_attr_getschedparam(const pthread_attr_t *, - struct sched_param *); -int pthread_attr_getschedpolicy(const pthread_attr_t *, int *); -int pthread_attr_getscope(const pthread_attr_t *, int *); -int pthread_attr_getstackaddr(const pthread_attr_t *, void **); -int pthread_attr_getstacksize(const pthread_attr_t *, size_t *); -int pthread_attr_init(pthread_attr_t *); -int pthread_attr_setdetachstate(pthread_attr_t *, int); -int pthread_attr_setguardsize(pthread_attr_t *, size_t); -int pthread_attr_setinheritsched(pthread_attr_t *, int); -int pthread_attr_setschedparam(pthread_attr_t *, - const struct sched_param *); -int pthread_attr_setschedpolicy(pthread_attr_t *, int); -int pthread_attr_setscope(pthread_attr_t *, int); -int pthread_attr_setstackaddr(pthread_attr_t *, void *); -int pthread_attr_setstacksize(pthread_attr_t *, size_t); -int pthread_cancel(pthread_t); -int pthread_condattr_destroy(pthread_condattr_t *); -int pthread_condattr_getpshared(const pthread_condattr_t *, int *); -int pthread_condattr_init(pthread_condattr_t *); -int pthread_condattr_setpshared(pthread_condattr_t *, int); - -int pthread_detach(pthread_t); -int pthread_equal(pthread_t, pthread_t); -int pthread_getconcurrency(void); -int pthread_getschedparam(pthread_t, int *, struct sched_param *); -void *pthread_getspecific(pthread_key_t); -int pthread_key_create(pthread_key_t *, void (*)(void *)); -int pthread_key_delete(pthread_key_t); -int pthread_mutex_destroy(pthread_mutex_t *); -int pthread_mutex_getprioceiling(const pthread_mutex_t *, int *); -int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *); -int pthread_mutexattr_destroy(pthread_mutexattr_t *); -int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, - int *); -int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *); -int pthread_mutexattr_init(pthread_mutexattr_t *); -int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); -int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int); -int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); -int pthread_mutexattr_settype(pthread_mutexattr_t *, int); -int pthread_once(pthread_once_t *, void (*)(void)); -int pthread_rwlock_destroy(pthread_rwlock_t *); -int pthread_rwlock_init(pthread_rwlock_t *, - const pthread_rwlockattr_t *); -int pthread_rwlock_rdlock(pthread_rwlock_t *); -int pthread_rwlock_tryrdlock(pthread_rwlock_t *); -int pthread_rwlock_trywrlock(pthread_rwlock_t *); -int pthread_rwlock_unlock(pthread_rwlock_t *); -int pthread_rwlock_wrlock(pthread_rwlock_t *); -int pthread_rwlockattr_destroy(pthread_rwlockattr_t *); -int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, - int *); -int pthread_rwlockattr_init(pthread_rwlockattr_t *); -int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int); -int pthread_setcancelstate(int, int *); -int pthread_setcanceltype(int, int *); -int pthread_setconcurrency(int); -int pthread_setschedparam(pthread_t, int, - const struct sched_param *); -int pthread_setspecific(pthread_key_t, const void *); -void pthread_testcancel(void); - } -void check(); #endif