__pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock);
__pthread_unlock((struct _pthread_fastlock *) &sem->__sem_lock);
int sem_post(sem_t * sem){  pthread_descr self = thread_self();  pthread_descr th;  struct pthread_request request;  if (THREAD_GETMEM(self, p_in_sighandler) == NULL) {    __pthread_lock((struct _pthread_fastlock *) &sem->sem_lock, self);    if (sem->sem_waiting == NULL) {      if (sem->sem_value >= SEM_VALUE_MAX) {        /* Overflow */        errno = ERANGE;        __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock);        return -1;      }      sem->sem_value++;      __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock);    } else {      th = dequeue(&sem->sem_waiting);      __pthread_unlock((struct _pthread_fastlock *) &sem->sem_lock);      restart(th);    }  } else {    /* If we're in signal handler, delegate post operation to       the thread manager. */    if (__pthread_manager_request < 0) {      if (__pthread_initialize_manager() < 0) {        errno = EAGAIN;        return -1;      }    }    request.req_kind = REQ_POST;    request.req_args.post = sem;    __libc_write(__pthread_manager_request,                 (char *) &request, sizeof(request));  }  return 0;}