sem_move.c
来自「虚地址空间基于文件OS内核源代码和文件」· C语言 代码 · 共 40 行
C
40 行
#include"kernel.h"
void move_semaphore(int semaphore_id,int destination_process)
{
int front,back;
struct process *p;
struct semaphore *s;
s=&(os->semaphore[semaphore_id]);
p=&(os->process[s->process]);
p->semaphore_number--;
if(p->semaphore_ring==semaphore_id)
p->semaphore_ring=s->back;
if(p->semaphore_ring==semaphore_id)
p->semaphore_ring=-1;
else{
front=s->front;
back=s->back;
os->semaphore[front].back=back;
os->semaphore[back].front=front;
}
p=&(os->process[destination_process]);
p->semaphore_number++;
if(p->semaphore_ring==-1){
p->semaphore_ring=semaphore_id;
s->front=semaphore_id;
s->back=semaphore_id;
}
else{
front=p->semaphore_ring;
back=os->semaphore[front].back;
os->semaphore[semaphore_id].front=front;
os->semaphore[semaphore_id].back=back;
os->semaphore[front].back=semaphore_id;
os->semaphore[back].front=semaphore_id;
}
s->process=destination_process;
return;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?