Index: src/untrusted/pthread/nc_semaphore.c |
diff --git a/src/untrusted/pthread/nc_semaphore.c b/src/untrusted/pthread/nc_semaphore.c |
index 635dc859bc5c5fe4ca1b0504951001d6e9418e6d..cb1973c7a70ba14ca284f34375977a062a9e1ade 100644 |
--- a/src/untrusted/pthread/nc_semaphore.c |
+++ b/src/untrusted/pthread/nc_semaphore.c |
@@ -90,6 +90,14 @@ int sem_wait(sem_t *sem) { |
return 0; |
} |
+int sem_trywait(sem_t *sem) { |
+ if (decrement_if_positive(&sem->count)) |
+ return 0; |
+ |
+ errno = EAGAIN; |
+ return -1; |
+} |
+ |
int sem_post(sem_t *sem) { |
/* Increment sem->count, checking for overflow. */ |
int old_value; |
@@ -114,3 +122,8 @@ int sem_post(sem_t *sem) { |
} |
return 0; |
} |
+ |
+int sem_getvalue(sem_t *sem, int *value) { |
+ *value = sem->count; |
+ return 0; |
+} |