void *man(void *v) { for(;;) { ls_lock(&lsMale, &empty); lock(&mpMale); printf("man: entering\n"); unlock(&mpMale); ls_unlock(&lsMale, &empty); } }
void *woman(void *v) { for (;;) { ls_lock(&lsFemale, &empty); lock(&mpFemale); printf("woman: entering\n"); unlock(&mpFemale); ls_unlock(&lsFemale, &empty); } }
/* * Sync locking in own lockspace */ int dlm_ls_lock_wait(dlm_lshandle_t ls, uint32_t mode, struct dlm_lksb *lksb, uint32_t flags, const void *name, unsigned int namelen, uint32_t parent, void *bastarg, void (*bastaddr) (void *bastarg), void *range) { return ls_lock(ls, mode, lksb, flags | LKF_WAIT, name, namelen, parent, NULL, bastarg, bastaddr, range); }
/* * Sync locking in the default lockspace */ int dlm_lock_wait(uint32_t mode, struct dlm_lksb *lksb, uint32_t flags, const void *name, unsigned int namelen, uint32_t parent, void *bastarg, void (*bastaddr) (void *bastarg), void *range) { if (open_default_lockspace()) return -1; return ls_lock(default_ls, mode, lksb, flags | LKF_WAIT, name, namelen, parent, NULL, bastarg, bastaddr, range); }