diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index 0a438ce80..861dac3e7 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -14,7 +14,7 @@ details. */ Win32 puts some contraints on what can and cannot be implemented. Where possible we work around those contrainsts. Where we cannot work around the constraints we - either pretend to be conformant, or return an error code. + either pretend to be conformant, or return an error code. Some caveats: PROCESS_SHARED objects while they pretend to be process shared, may not actually work. Some test cases are needed to determine win32's behaviour. @@ -47,7 +47,7 @@ details. */ extern int threadsafe; -/* pthread_key_destructor_list class: to-be threadsafe single linked list +/* pthread_key_destructor_list class: to-be threadsafe single linked list * FIXME: Put me in a dedicated file, or a least a tools area ! */ @@ -304,7 +304,8 @@ MTinterface::Init (int forked) /* possible the atfork lists should be inited here as well */ - for (int i =0;i<256;i++)pshared_mutexs[i]=NULL; + for (int i = 0; i < 256; i++) + pshared_mutexs[i] = NULL; #if 0 item->function = NULL; @@ -357,7 +358,7 @@ pthread::create (void *(*func) (void *), pthread_attr * newattr, if (attr.inheritsched == PTHREAD_EXPLICIT_SCHED) { /* FIXME: set the scheduling settings for the new thread */ - /* sched_thread_setparam(win32_obj_id, attr.schedparam); */ + /* sched_thread_setparam (win32_obj_id, attr.schedparam); */ } ResumeThread (win32_obj_id); } @@ -391,7 +392,7 @@ pthread_cond::pthread_cond (pthread_condattr * attr):verifyable_object (PTHREAD_ this->win32_obj_id =::CreateEvent (&sec_none_nih, false, /* auto signal reset - which I think is pthreads like ? */ false, /* start non signaled */ - NULL /* no name */ ); + NULL /* no name */); if (!this->win32_obj_id) magic = 0; @@ -432,8 +433,8 @@ pthread_cond::TimedWait (DWORD dwMilliseconds) { // FIXME: race condition (potentially drop events // Possible solution (single process only) - place this in a critical section. - ReleaseMutex(mutex->win32_obj_id); - rv = WaitForSingleObject(win32_obj_id, dwMilliseconds); + ReleaseMutex (mutex->win32_obj_id); + rv = WaitForSingleObject (win32_obj_id, dwMilliseconds); } else rv = SignalObjectAndWait (mutex->win32_obj_id, win32_obj_id, dwMilliseconds, @@ -468,7 +469,7 @@ pthread_key::~pthread_key () if (pthread_key_destructor * dest = MT_INTERFACE->destructors.Remove (this)) delete dest; TlsFree (dwTlsIndex); -}; +} int pthread_key::set (const void *value) @@ -486,7 +487,7 @@ pthread_key::get () } #define SYS_BASE (unsigned char) 0xC0 -// Note: the order is important. This is an overloaded pthread_mutex_t from +// Note: the order is important. This is an overloaded pthread_mutex_t from // userland typedef struct _pshared_mutex { unsigned char id; @@ -521,23 +522,23 @@ pthread_mutex::pthread_mutex (unsigned short id):verifyable_object (PTHREAD_MUTE if (MT_INTERFACE->pshared_mutexs[id]) return; char stringbuf[29]; - snprintf(stringbuf, 29, "CYGWINMUTEX0x%0x", id & 0x000f); - system_printf("name of mutex to transparently open %s\n",stringbuf); + snprintf (stringbuf, 29, "CYGWINMUTEX0x%0x", id & 0x000f); + system_printf ("name of mutex to transparently open %s\n",stringbuf); this->win32_obj_id =::CreateMutex (&sec_none_nih, false, stringbuf); - if (win32_obj_id==0 || (win32_obj_id && GetLastError() != ERROR_ALREADY_EXISTS)) + if (win32_obj_id==0 || (win32_obj_id && GetLastError () != ERROR_ALREADY_EXISTS)) { - // the mutex has been deleted or we couldn't get access. + // the mutex has been deleted or we couldn't get access. // the error_already_exists test is because we are only opening an // existint mutex here - system_printf("couldn't get pshared mutex %x, %d\n",win32_obj_id, GetLastError()); - CloseHandle(win32_obj_id); - magic=0; - win32_obj_id=NULL; + system_printf ("couldn't get pshared mutex %x, %d\n",win32_obj_id, GetLastError ()); + CloseHandle (win32_obj_id); + magic = 0; + win32_obj_id = NULL; return; } pshared = PTHREAD_PROCESS_SHARED; - MT_INTERFACE->pshared_mutexs[id]=this; + MT_INTERFACE->pshared_mutexs[id] = this; } pthread_mutex::pthread_mutex (pthread_mutex_t *mutex, pthread_mutexattr * attr):verifyable_object (PTHREAD_MUTEX_MAGIC) @@ -549,27 +550,27 @@ pthread_mutex::pthread_mutex (pthread_mutex_t *mutex, pthread_mutexattr * attr): // This does open a D.O.S. - the name is guessable (if you are willing to run // thru all possible address values :] char stringbuf[29]; - unsigned short id=1; + unsigned short id = 1; while (id < 256) { - snprintf(stringbuf, 29, "CYGWINMUTEX0x%0x", id & 0x000f); - system_printf("name of mutex to create %s\n",stringbuf); + snprintf (stringbuf, 29, "CYGWINMUTEX0x%0x", id & 0x000f); + system_printf ("name of mutex to create %s\n",stringbuf); this->win32_obj_id =::CreateMutex (&sec_none_nih, false, stringbuf); - if (this->win32_obj_id && GetLastError() != ERROR_ALREADY_EXISTS) + if (this->win32_obj_id && GetLastError () != ERROR_ALREADY_EXISTS) { - MT_INTERFACE->pshared_mutexs[id]=this; + MT_INTERFACE->pshared_mutexs[id] = this; pshared_mutex *pmutex=(pshared_mutex *)(mutex); - pmutex->id=id; - pmutex->flags=SYS_BASE; - pshared=PTHREAD_PROCESS_SHARED; + pmutex->id = id; + pmutex->flags = SYS_BASE; + pshared = PTHREAD_PROCESS_SHARED; condwaits = 0; return; } id++; - CloseHandle(win32_obj_id); + CloseHandle (win32_obj_id); } - magic=0; - win32_obj_id=NULL; + magic = 0; + win32_obj_id = NULL; } else { @@ -593,7 +594,7 @@ pthread_mutex::pthread_mutex (pthread_mutexattr * attr):verifyable_object (PTHRE } this->win32_obj_id =::CreateMutex (&sec_none_nih, false, NULL); - + if (!win32_obj_id) magic = 0; condwaits = 0; @@ -604,7 +605,7 @@ pthread_mutex::~pthread_mutex () { if (win32_obj_id) CloseHandle (win32_obj_id); - win32_obj_id=NULL; + win32_obj_id = NULL; } int @@ -626,12 +627,12 @@ pthread_mutex::UnLock () } pthread_mutex ** -__pthread_mutex_getpshared(pthread_mutex_t *mutex) +__pthread_mutex_getpshared (pthread_mutex_t *mutex) { - if ((((pshared_mutex *)(mutex))->flags & SYS_BASE) != SYS_BASE ) - return (pthread_mutex **)mutex; + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE) != SYS_BASE) + return (pthread_mutex **) mutex; pshared_mutex *pmutex=(pshared_mutex *)(mutex); - if ((MT_INTERFACE->pshared_mutexs[pmutex->id]) != NULL ) + if ((MT_INTERFACE->pshared_mutexs[pmutex->id]) != NULL) return &(MT_INTERFACE->pshared_mutexs[pmutex->id]); /* attempt to get the existing mutex */ pthread_mutex * newmutex; @@ -639,9 +640,9 @@ __pthread_mutex_getpshared(pthread_mutex_t *mutex) if (!verifyable_object_isvalid (newmutex, PTHREAD_MUTEX_MAGIC)) { delete (newmutex); - MT_INTERFACE->pshared_mutexs[pmutex->id]=NULL; + MT_INTERFACE->pshared_mutexs[pmutex->id] = NULL; return &(MT_INTERFACE->pshared_mutexs[0]); - } + } return &(MT_INTERFACE->pshared_mutexs[pmutex->id]); } @@ -652,7 +653,7 @@ pshared (PTHREAD_PROCESS_PRIVATE), mutextype (PTHREAD_MUTEX_DEFAULT) pthread_mutexattr::~pthread_mutexattr () { -}; +} semaphore::semaphore (int pshared, unsigned int value):verifyable_object (SEM_MAGIC) { @@ -782,7 +783,7 @@ thread_init_wrapper (void *_arg) #if 0 // ??? This code only runs if the thread exits by returning. -// it's all now in __pthread_exit(); +// it's all now in __pthread_exit (); #endif /* never reached */ return 0; @@ -803,7 +804,7 @@ __pthread_create (pthread_t * thread, const pthread_attr_t * attr, *thread = NULL; return EAGAIN; } - InterlockedIncrement(&MT_INTERFACE->threadcount); + InterlockedIncrement (&MT_INTERFACE->threadcount); return 0; } @@ -815,8 +816,8 @@ __pthread_once (pthread_once_t * once_control, void (*init_routine) (void)) /* Here we must set a cancellation handler to unlock the mutex if needed */ /* but a cancellation handler is not the right thing. We need this in the thread * cleanup routine. Assumption: a thread can only be in one pthread_once routine - * at a time. Stote a mutex_t * in the pthread_structure. if that's non null unlock - * on pthread_exit(); + * at a time. Stote a mutex_t * in the pthread_structure. if that's non null unlock + * on pthread_exit (); */ if (once_control->state == 0) { @@ -846,7 +847,7 @@ __pthread_cancel (pthread_t thread) if (thread->cancelstate == PTHREAD_CANCEL_ENABLE) { #if 0 - /* once all the functions call testcancel(), we will do this */ + /* once all the functions call testcancel (), we will do this */ if (thread->canceltype == PTHREAD_CANCEL_DEFERRED) { } @@ -860,181 +861,181 @@ __pthread_cancel (pthread_t thread) } #endif } -/* return 0; +/* return 0; */ return ESRCH; /* - we return ESRCH until all the required functions call testcancel(); + we return ESRCH until all the required functions call testcancel (); this will give applications predictable behaviour. the required function list is: * indicates done, X indicates not present in cygwin. -aio_suspend() -*close() -*creat() -fcntl() -fsync() -getmsg() -getpmsg() -lockf() -mq_receive() -mq_send() -msgrcv() -msgsnd() -msync() -nanosleep() -open() -pause() -poll() -pread() -pthread_cond_timedwait() -pthread_cond_wait() -*pthread_join() -pthread_testcancel() -putmsg() -putpmsg() -pwrite() -read() -readv() -select() -sem_wait() -sigpause() -sigsuspend() -sigtimedwait() -sigwait() -sigwaitinfo() -*sleep() -system() -tcdrain() -*usleep() -wait() +aio_suspend () +*close () +*creat () +fcntl () +fsync () +getmsg () +getpmsg () +lockf () +mq_receive () +mq_send () +msgrcv () +msgsnd () +msync () +nanosleep () +open () +pause () +poll () +pread () +pthread_cond_timedwait () +pthread_cond_wait () +*pthread_join () +pthread_testcancel () +putmsg () +putpmsg () +pwrite () +read () +readv () +select () +sem_wait () +sigpause () +sigsuspend () +sigtimedwait () +sigwait () +sigwaitinfo () +*sleep () +system () +tcdrain () +*usleep () +wait () wait3() -waitid() -waitpid() -write() -writev() +waitid () +waitpid () +write () +writev () the optional list is: -catclose() -catgets() -catopen() -closedir() -closelog() -ctermid() -dbm_close() -dbm_delete() -dbm_fetch() -dbm_nextkey() -dbm_open() -dbm_store() -dlclose() -dlopen() -endgrent() -endpwent() -endutxent() -fclose() -fcntl() -fflush() -fgetc() -fgetpos() -fgets() -fgetwc() -fgetws() -fopen() -fprintf() -fputc() -fputs() -fputwc() -fputws() -fread() -freopen() -fscanf() -fseek() -fseeko() -fsetpos() -ftell() -ftello() -ftw() -fwprintf() -fwrite() -fwscanf() -getc() -getc_unlocked() -getchar() -getchar_unlocked() -getcwd() -getdate() -getgrent() -getgrgid() -getgrgid_r() -getgrnam() -getgrnam_r() -getlogin() -getlogin_r() -getpwent() -* getpwnam() -* getpwnam_r() -* getpwuid() -* getpwuid_r() -gets() -getutxent() -getutxid() -getutxline() -getw() -getwc() -getwchar() -getwd() -glob() -iconv_close() -iconv_open() -ioctl() -lseek() -mkstemp() -nftw() -opendir() -openlog() -pclose() -perror() -popen() -printf() -putc() -putc_unlocked() -putchar() -putchar_unlocked() -puts() -pututxline() -putw() -putwc() -putwchar() -readdir() -readdir_r() -remove() -rename() -rewind() -rewinddir() -scanf() -seekdir() -semop() -setgrent() -setpwent() -setutxent() -strerror() -syslog() -tmpfile() -tmpnam() -ttyname() -ttyname_r() -ungetc() -ungetwc() -unlink() -vfprintf() -vfwprintf() -vprintf() -vwprintf() -wprintf() -wscanf() +catclose () +catgets () +catopen () +closedir () +closelog () +ctermid () +dbm_close () +dbm_delete () +dbm_fetch () +dbm_nextkey () +dbm_open () +dbm_store () +dlclose () +dlopen () +endgrent () +endpwent () +endutxent () +fclose () +fcntl () +fflush () +fgetc () +fgetpos () +fgets () +fgetwc () +fgetws () +fopen () +fprintf () +fputc () +fputs () +fputwc () +fputws () +fread () +freopen () +fscanf () +fseek () +fseeko () +fsetpos () +ftell () +ftello () +ftw () +fwprintf () +fwrite () +fwscanf () +getc () +getc_unlocked () +getchar () +getchar_unlocked () +getcwd () +getdate () +getgrent () +getgrgid () +getgrgid_r () +getgrnam () +getgrnam_r () +getlogin () +getlogin_r () +getpwent () +* getpwnam () +* getpwnam_r () +* getpwuid () +* getpwuid_r () +gets () +getutxent () +getutxid () +getutxline () +getw () +getwc () +getwchar () +getwd () +glob () +iconv_close () +iconv_open () +ioctl () +lseek () +mkstemp () +nftw () +opendir () +openlog () +pclose () +perror () +popen () +printf () +putc () +putc_unlocked () +putchar () +putchar_unlocked () +puts () +pututxline () +putw () +putwc () +putwchar () +readdir () +readdir_r () +remove () +rename () +rewind () +rewinddir () +scanf () +seekdir () +semop () +setgrent () +setpwent () +setutxent () +strerror () +syslog () +tmpfile () +tmpnam () +ttyname () +ttyname_r () +ungetc () +ungetwc () +unlink () +vfprintf () +vfwprintf () +vprintf () +vwprintf () +wprintf () +wscanf () -Note, that for fcntl(), for any value of the cmd argument. +Note, that for fcntl (), for any value of the cmd argument. And we must not introduce cancellation points anywhere else that's part of the posix or opengroup specs. @@ -1077,52 +1078,52 @@ __pthread_testcancel (void) /* * Races in pthread_atfork: - * We are race safe in that any additions to the lists are made via + * We are race safe in that any additions to the lists are made via * InterlockedExchangePointer. * However, if the user application doesn't perform syncronisation of some sort - * It's not guaranteed that a near simultaneous call to pthread_atfork and fork + * It's not guaranteed that a near simultaneous call to pthread_atfork and fork * will result in the new atfork handlers being calls. - * More rigorous internal syncronisation isn't needed as the user program isn't - * guaranteeing their own state. + * More rigorous internal syncronisation isn't needed as the user program isn't + * guaranteeing their own state. * * as far as multiple calls to pthread_atfork, the worst case is simultaneous calls * will result in an indeterminate order for parent and child calls (what gets inserted * first isn't guaranteed.) * - * There is one potential race... Does the result of InterlockedExchangePointer + * There is one potential race... Does the result of InterlockedExchangePointer * get committed to the return location _before_ any context switches can occur? * If yes, we're safe, if no, we're not. */ void -__pthread_atforkprepare(void) +__pthread_atforkprepare (void) { - callback *cb=MT_INTERFACE->pthread_prepare; + callback *cb = MT_INTERFACE->pthread_prepare; while (cb) { - cb->cb(); - cb=cb->next; - } -} - -void -__pthread_atforkparent(void) -{ - callback *cb=MT_INTERFACE->pthread_parent; - while (cb) - { - cb->cb(); - cb=cb->next; + cb->cb (); + cb = cb->next; } } void -__pthread_atforkchild(void) +__pthread_atforkparent (void) { - callback *cb=MT_INTERFACE->pthread_child; + callback *cb = MT_INTERFACE->pthread_parent; while (cb) { - cb->cb(); - cb=cb->next; + cb->cb (); + cb = cb->next; + } +} + +void +__pthread_atforkchild (void) +{ + callback *cb = MT_INTERFACE->pthread_child; + while (cb) + { + cb->cb (); + cb = cb->next; } } @@ -1130,14 +1131,14 @@ __pthread_atforkchild(void) */ #define InterlockedExchangePointer InterlockedExchange -/* Register a set of functions to run before and after fork. +/* Register a set of functions to run before and after fork. * prepare calls are called in LI-FC order. * parent and child calls are called in FI-FC order. */ int -__pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void)) +__pthread_atfork (void (*prepare)(void), void (*parent)(void), void (*child)(void)) { - callback * prepcb=NULL, * parentcb=NULL, * childcb=NULL; + callback * prepcb = NULL, * parentcb = NULL, * childcb = NULL; if (prepare) { prepcb = new callback; @@ -1170,7 +1171,7 @@ __pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void if (prepcb) { prepcb->cb = prepare; - prepcb->next=(callback *)InterlockedExchangePointer((LONG *) &MT_INTERFACE->pthread_prepare, (long int) prepcb); + prepcb->next=(callback *)InterlockedExchangePointer ((LONG *) &MT_INTERFACE->pthread_prepare, (long int) prepcb); } if (parentcb) { @@ -1179,7 +1180,7 @@ __pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void while (*t) t = &(*t)->next; /* t = pointer to last next in the list */ - parentcb->next=(callback *)InterlockedExchangePointer((LONG *)t, (long int) parentcb); + parentcb->next=(callback *)InterlockedExchangePointer ((LONG *) t, (long int) parentcb); } if (childcb) { @@ -1188,7 +1189,7 @@ __pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void while (*t) t = &(*t)->next; /* t = pointer to last next in the list */ - childcb->next=(callback *)InterlockedExchangePointer((LONG *)t, (long int) childcb); + childcb->next=(callback *)InterlockedExchangePointer ((LONG *) t, (long int) childcb); } return 0; } @@ -1228,7 +1229,7 @@ __pthread_attr_getschedparam (const pthread_attr_t * attr, /* From a pure code point of view, this should call a helper in sched.cc, * to allow for someone adding scheduler policy changes to win32 in the future. - * However that's extremely unlikely, so short and sweet will do us + * However that's extremely unlikely, so short and sweet will do us */ int __pthread_attr_getschedpolicy (const pthread_attr_t * attr, int *policy) @@ -1312,7 +1313,7 @@ __pthread_attr_setscope (pthread_attr_t * attr, int contentionscope) if (contentionscope != PTHREAD_SCOPE_SYSTEM && contentionscope != PTHREAD_SCOPE_PROCESS) return EINVAL; - /* In future, we may be able to support system scope by escalating the thread + /* In future, we may be able to support system scope by escalating the thread * priority to exceed the priority class. For now we only support PROCESS scope. */ if (contentionscope != PTHREAD_SCOPE_PROCESS) return ENOTSUP; @@ -1356,7 +1357,7 @@ __pthread_exit (void *value_ptr) MT_INTERFACE->destructors.IterateNull (); thread->return_ptr = value_ptr; - if (InterlockedDecrement(&MT_INTERFACE->threadcount) == 0) + if (InterlockedDecrement (&MT_INTERFACE->threadcount) == 0) exit (0); else ExitThread (0); @@ -1383,7 +1384,7 @@ __pthread_join (pthread_t * thread, void **return_val) *return_val = (*thread)->return_ptr; } /* End if */ - pthread_testcancel(); + pthread_testcancel (); return 0; } @@ -1470,7 +1471,7 @@ int __pthread_key_create (pthread_key_t * key, void (*destructor) (void *)) { /* The opengroup docs don't define if we should check this or not, - * but creation is relatively rare.. + * but creation is relatively rare.. */ if (verifyable_object_isvalid (*key, PTHREAD_KEY_MAGIC)) return EBUSY; @@ -1496,7 +1497,7 @@ __pthread_key_delete (pthread_key_t key) return 0; } -/* provided for source level compatability. +/* provided for source level compatability. * See http://www.opengroup.org/onlinepubs/007908799/xsh/pthread_getconcurrency.html */ int @@ -1616,12 +1617,12 @@ __pthread_cond_timedwait (pthread_cond_t * cond, pthread_mutex_t * mutex, int rv; if (!abstime) return EINVAL; - pthread_mutex **themutex=NULL; + pthread_mutex **themutex = NULL; if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init (mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE )) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE)) // a pshared mutex - themutex = __pthread_mutex_getpshared(mutex); + themutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*themutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; @@ -1648,12 +1649,12 @@ int __pthread_cond_wait (pthread_cond_t * cond, pthread_mutex_t * mutex) { int rv; - pthread_mutex_t *themutex=mutex; + pthread_mutex_t *themutex = mutex; if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init (mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE )) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE)) // a pshared mutex - themutex = __pthread_mutex_getpshared(mutex); + themutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*themutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; if (!verifyable_object_isvalid (*cond, PTHREAD_COND_MAGIC)) @@ -1786,7 +1787,7 @@ int __pthread_mutex_init (pthread_mutex_t * mutex, const pthread_mutexattr_t * attr) { - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE )) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE)) // a pshared mutex return EBUSY; if (attr && !verifyable_object_isvalid (*attr, PTHREAD_MUTEXATTR_MAGIC)) @@ -1798,8 +1799,8 @@ __pthread_mutex_init (pthread_mutex_t * mutex, if (attr && (*attr)->pshared == PTHREAD_PROCESS_SHARED) { pthread_mutex_t throwaway = new pthread_mutex (mutex, (*attr)); - mutex = __pthread_mutex_getpshared((pthread_mutex_t *)mutex); - + mutex = __pthread_mutex_getpshared ((pthread_mutex_t *) mutex); + if (!verifyable_object_isvalid (*mutex, PTHREAD_MUTEX_MAGIC)) { delete throwaway; @@ -1822,19 +1823,19 @@ int __pthread_mutex_getprioceiling (const pthread_mutex_t * mutex, int *prioceiling) { - pthread_mutex_t *themutex=(pthread_mutex_t *)mutex; + pthread_mutex_t *themutex=(pthread_mutex_t *) mutex; if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init ((pthread_mutex_t *) mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE )) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE)) // a pshared mutex - themutex = __pthread_mutex_getpshared((pthread_mutex_t *)mutex); + themutex = __pthread_mutex_getpshared ((pthread_mutex_t *) mutex); if (!verifyable_object_isvalid (*themutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; /* We don't define _POSIX_THREAD_PRIO_PROTECT because we do't currently support * mutex priorities. * * We can support mutex priorities in the future though: - * Store a priority with each mutex. + * Store a priority with each mutex. * When the mutex is optained, set the thread priority as appropriate * When the mutex is released, reset the thre priority. */ @@ -1844,12 +1845,12 @@ __pthread_mutex_getprioceiling (const pthread_mutex_t * mutex, int __pthread_mutex_lock (pthread_mutex_t * mutex) { - pthread_mutex_t *themutex=mutex; + pthread_mutex_t *themutex = mutex; if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init (mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE ) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE) // a pshared mutex - themutex = __pthread_mutex_getpshared(mutex); + themutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*themutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; (*themutex)->Lock (); @@ -1859,12 +1860,12 @@ __pthread_mutex_lock (pthread_mutex_t * mutex) int __pthread_mutex_trylock (pthread_mutex_t * mutex) { - pthread_mutex_t *themutex=mutex; + pthread_mutex_t *themutex = mutex; if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init (mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE ) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE) // a pshared mutex - themutex = __pthread_mutex_getpshared(mutex); + themutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*themutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; if ((*themutex)->TryLock () == WAIT_TIMEOUT) @@ -1877,9 +1878,9 @@ __pthread_mutex_unlock (pthread_mutex_t * mutex) { if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init (mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE ) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE) // a pshared mutex - mutex = __pthread_mutex_getpshared(mutex); + mutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*mutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; (*mutex)->UnLock (); @@ -1891,9 +1892,9 @@ __pthread_mutex_destroy (pthread_mutex_t * mutex) { if (*mutex == PTHREAD_MUTEX_INITIALIZER) return 0; - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE ) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE) == SYS_BASE) // a pshared mutex - mutex = __pthread_mutex_getpshared(mutex); + mutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*mutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; @@ -1910,18 +1911,18 @@ int __pthread_mutex_setprioceiling (pthread_mutex_t * mutex, int prioceiling, int *old_ceiling) { - pthread_mutex_t *themutex=mutex; + pthread_mutex_t *themutex = mutex; if (*mutex == PTHREAD_MUTEX_INITIALIZER) __pthread_mutex_init (mutex, NULL); - if (( ((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE )) + if ((((pshared_mutex *)(mutex))->flags & SYS_BASE == SYS_BASE)) // a pshared mutex - themutex = __pthread_mutex_getpshared(mutex); + themutex = __pthread_mutex_getpshared (mutex); if (!verifyable_object_isvalid (*themutex, PTHREAD_MUTEX_MAGIC)) return EINVAL; return ENOSYS; } -/* Win32 doesn't support mutex priorities - see __pthread_mutex_getprioceiling +/* Win32 doesn't support mutex priorities - see __pthread_mutex_getprioceiling * for more detail */ int __pthread_mutexattr_getprotocol (const pthread_mutexattr_t * attr, @@ -1942,8 +1943,8 @@ __pthread_mutexattr_getpshared (const pthread_mutexattr_t * attr, return 0; } -/* Win32 mutex's are equivalent to posix RECURSIVE mutexs. - * We need to put glue in place to support other types of mutex's. We map +/* Win32 mutex's are equivalent to posix RECURSIVE mutexs. + * We need to put glue in place to support other types of mutex's. We map * PTHREAD_MUTEX_DEFAULT to PTHREAD_MUTEX_RECURSIVE and return EINVAL for other types. */ int @@ -2020,8 +2021,8 @@ __pthread_mutexattr_setpshared (pthread_mutexattr_t * attr, int pshared) { if (!verifyable_object_isvalid (*attr, PTHREAD_MUTEXATTR_MAGIC)) return EINVAL; - /* we don't use pshared for anything as yet. We need to test PROCESS_SHARED - * functionality + /* we don't use pshared for anything as yet. We need to test PROCESS_SHARED + * functionality */ if (pshared != PTHREAD_PROCESS_PRIVATE && pshared != PTHREAD_PROCESS_SHARED) return EINVAL;