Skip to content

Commit

Permalink
Add pthread_rwlockattr_setpshared
Browse files Browse the repository at this point in the history
  • Loading branch information
shinh committed Mar 27, 2011
1 parent 615a374 commit 20f08bd
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 15 deletions.
19 changes: 13 additions & 6 deletions libmac/mac.c
Expand Up @@ -948,19 +948,26 @@ int __darwin_pthread_mutexattr_settype(pthread_mutexattr_t* attr, int kind) {


#define __DARWIN_PTHREAD_PROCESS_SHARED 1 #define __DARWIN_PTHREAD_PROCESS_SHARED 1
#define __DARWIN_PTHREAD_PROCESS_PRIVATE 2 #define __DARWIN_PTHREAD_PROCESS_PRIVATE 2
int __darwin_pthread_mutexattr_setpshared(pthread_mutexattr_t* attr, static int __translate_pshared(int pshared) {
int pshared) {
switch (pshared) { switch (pshared) {
case __DARWIN_PTHREAD_PROCESS_SHARED: case __DARWIN_PTHREAD_PROCESS_SHARED:
pshared = PTHREAD_PROCESS_SHARED; return PTHREAD_PROCESS_SHARED;
break;
case __DARWIN_PTHREAD_PROCESS_PRIVATE: case __DARWIN_PTHREAD_PROCESS_PRIVATE:
pshared = PTHREAD_PROCESS_PRIVATE; return PTHREAD_PROCESS_PRIVATE;
break;
default: default:
fprintf(stderr, "Unknown pthread_mutexattr_setpshared pshared: %d\n", fprintf(stderr, "Unknown pthread_mutexattr_setpshared pshared: %d\n",
pshared); pshared);
return pshared;
} }
}
int __darwin_pthread_mutexattr_setpshared(pthread_mutexattr_t* attr,
int pshared) {
pshared = __translate_pshared(pshared);
return pthread_mutexattr_setpshared(attr, pshared);
}
int __darwin_pthread_rwlockattr_setpshared(pthread_rwlockattr_t* attr,
int pshared) {
pshared = __translate_pshared(pshared);
return pthread_mutexattr_setpshared(attr, pshared); return pthread_mutexattr_setpshared(attr, pshared);
} }


Expand Down
28 changes: 20 additions & 8 deletions mach/pthread.c
Expand Up @@ -6,15 +6,27 @@
pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;


int main() { int main() {
pthread_mutexattr_t attr; {
if (pthread_mutexattr_init(&attr) != 0) { pthread_mutexattr_t attr;
abort(); if (pthread_mutexattr_init(&attr) != 0) {
} abort();
if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL) != 0) { }
abort(); if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL) != 0) {
abort();
}
if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_PRIVATE) != 0) {
abort();
}
} }
if (pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_PRIVATE) != 0) {
abort(); {
pthread_rwlockattr_t attr;
if (pthread_rwlockattr_init(&attr) != 0) {
abort();
}
if (pthread_rwlockattr_setpshared(&attr, PTHREAD_PROCESS_PRIVATE) != 0) {
abort();
}
} }


// TODO(hamaji): PTHREAD_MUTEX_INITIALIZER has a different implementation... // TODO(hamaji): PTHREAD_MUTEX_INITIALIZER has a different implementation...
Expand Down
3 changes: 2 additions & 1 deletion rename.tab
Expand Up @@ -120,6 +120,7 @@ RENAME(__moddi3, __modti3)
RENAME(__udivdi3, __udivti3) RENAME(__udivdi3, __udivti3)
RENAME(__umoddi3, __umodti3) RENAME(__umoddi3, __umodti3)
// TODO(hamaji): pthread_mutexattr_gettype and pthread_mutexattr_getpshared // TODO(hamaji): *attr_gettype and *attr_getpshared
WRAP(pthread_mutexattr_settype) WRAP(pthread_mutexattr_settype)
WRAP(pthread_mutexattr_setpshared) WRAP(pthread_mutexattr_setpshared)
WRAP(pthread_rwlockattr_setpshared)

0 comments on commit 20f08bd

Please sign in to comment.