| // Sleeping locks | |
| void | |
| initsleeplock(struct sleeplock *lk, char *name) | |
| { | |
| initlock(&lk->lk, "sleep lock"); | |
| lk->name = name; | |
| lk->locked = 0; | |
| lk->pid = 0; | |
| } | |
| void | |
| acquiresleep(struct sleeplock *lk) | |
| { | |
| acquire(&lk->lk); | |
| while (lk->locked) { | |
| sleep(lk, &lk->lk); | |
| } | |
| lk->locked = 1; | |
| lk->pid = myproc()->pid; | |
| release(&lk->lk); | |
| } | |
| void | |
| releasesleep(struct sleeplock *lk) | |
| { | |
| acquire(&lk->lk); | |
| lk->locked = 0; | |
| lk->pid = 0; | |
| wakeup(lk); | |
| release(&lk->lk); | |
| } | |
| int | |
| holdingsleep(struct sleeplock *lk) | |
| { | |
| int r; | |
| acquire(&lk->lk); | |
| r = lk->locked && (lk->pid == myproc()->pid); | |
| release(&lk->lk); | |
| return r; | |
| } | |
Xet Storage Details
- Size:
- 812 Bytes
- Xet hash:
- b0cee342b89070af9cbca9898f216cb5a36e8a57dc96acc92ad9e17262fa4f2e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.