Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void PCB::sleep(Time timeToSleep)
- {
- if(timeToSleep>0){
- PCB::running->state=Blocked;
- Sleep *s=new Sleep(PCB::running,timeToSleep);
- Sleep *temp=sleepHead, *old=0;
- while ((temp!=0)&&(s->time>=temp->time))
- {
- s->time-=temp->time;
- old=temp;
- temp=temp->next;
- }
- if ((sleepHead!=0) && (temp!=0) && (old!=0))
- {
- old->next=s;
- s->next=temp;
- temp->time-=s->time;
- }
- else if(sleepHead==0)
- {
- sleepHead=s;
- }
- else if(temp==0)
- {
- old->next=s;
- }
- else if(old==0)
- {
- temp->time-=s->time;
- s->next=sleepHead;
- sleepHead=s;
- }
- Timer::requested=1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement