static int NaClDescMutexUnlock(struct NaClDesc         *vself) {
  struct NaClDescMutex *self = (struct NaClDescMutex *) vself;

  NaClSyncStatus status = NaClIntrMutexUnlock(&self->mu);

  return -NaClXlateNaClSyncStatus(status);
}
示例#2
0
int NaClDescMutexLock(struct NaClDesc         *vself,
                      struct NaClDescEffector *effp) {
  struct NaClDescMutex *self = (struct NaClDescMutex *) vself;

  NaClSyncStatus status = NaClIntrMutexLock(&self->mu);

  UNREFERENCED_PARAMETER(effp);
  return -NaClXlateNaClSyncStatus(status);
}
示例#3
0
static int NaClDescCondVarWait(struct NaClDesc         *vself,
                               struct NaClDesc         *mutex) {
  struct NaClDescCondVar  *self = (struct NaClDescCondVar *) vself;
  struct NaClDescMutex    *mutex_desc;
  NaClSyncStatus          status;

  if (((struct NaClDescVtbl const *) mutex->base.vtbl)->
      typeTag != NACL_DESC_MUTEX) {
    return -NACL_ABI_EINVAL;
  }
  mutex_desc = (struct NaClDescMutex *)mutex;
  status = NaClIntrCondVarWait(&self->cv,
                               &mutex_desc->mu,
                               NULL);
  return -NaClXlateNaClSyncStatus(status);
}
示例#4
0
static int NaClDescCondVarBroadcast(struct NaClDesc          *vself) {
  struct NaClDescCondVar *self = (struct NaClDescCondVar *) vself;
  NaClSyncStatus status = NaClIntrCondVarBroadcast(&self->cv);

  return -NaClXlateNaClSyncStatus(status);
}