| void | |
| initprioritylock(struct prioritylock *lk, char *name) | |
| { | |
| initlock(&lk->lk, "priority lock"); | |
| lk->name = name; | |
| lk->locked = 0; | |
| lk->pid = 0; | |
| } | |
| void | |
| acquirepriority(struct prioritylock *lk) | |
| { | |
| acquire(&lk->lk); | |
| while (lk->locked) { | |
| sleep(lk, &lk->lk); | |
| } | |
| lk->locked = 1; | |
| lk->pid = myproc()->pid; | |
| release(&lk->lk); | |
| } | |
| void | |
| releasepriority(struct prioritylock *lk) | |
| { | |
| if (myproc()->pid != lk->pid) | |
| panic("release"); | |
| acquire(&lk->lk); | |
| lk->locked = 0; | |
| lk->pid = 0; | |
| wakeup2(lk); | |
| release(&lk->lk); | |
| } | |
| int | |
| holdingpriority(struct prioritylock *lk) | |
| { | |
| int r; | |
| acquire(&lk->lk); | |
| r = lk->locked && (lk->pid == myproc()->pid); | |
| release(&lk->lk); | |
| return r; | |
| } | |
Xet Storage Details
- Size:
- 881 Bytes
- Xet hash:
- 3e534a8ae4c55f649f8de198616257a828f8df87d56dd88d2c190a12eb36ed33
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.