static ScmObj cv_allocate(ScmClass *klass, ScmObj initargs) { ScmConditionVariable *cv = SCM_NEW_INSTANCE(ScmConditionVariable, klass); SCM_INTERNAL_COND_INIT(cv->cv); Scm_RegisterFinalizer(SCM_OBJ(cv), cv_finalize, NULL); cv->name = SCM_FALSE; cv->specific = SCM_UNDEFINED; return SCM_OBJ(cv); }
static ScmObj mutex_allocate(ScmClass *klass, ScmObj initargs) { ScmMutex *mutex = SCM_NEW_INSTANCE(ScmMutex, klass); SCM_INTERNAL_MUTEX_INIT(mutex->mutex); SCM_INTERNAL_COND_INIT(mutex->cv); Scm_RegisterFinalizer(SCM_OBJ(mutex), mutex_finalize, NULL); mutex->name = SCM_FALSE; mutex->specific = SCM_UNDEFINED; mutex->locked = FALSE; mutex->owner = NULL; mutex->locker_proc = mutex->unlocker_proc = SCM_FALSE; return SCM_OBJ(mutex); }
ScmObj sigset_allocate(ScmClass *klass, ScmObj initargs) { ScmSysSigset *s = SCM_NEW_INSTANCE(ScmSysSigset, klass); sigemptyset(&s->set); return SCM_OBJ(s); }