📄 resource.c
字号:
#include "kernel.h"
#define WRONG_CAPABILITY -1
#define WRONG_PROCESS_NUMBER -2
#define WRONG_PROCESS_STATE -3
#define EXIST_RUN_THREAD -4
#define EXIST_USED_SEMAPHORE -5
int query_resource(struct process *process,int process_id)
{
struct process *p;
if((process_id<=0)||(process_id>=PROCESS_NUMBER))
return WRONG_PROCESS_NUMBER;
p=&(os->process[process_id]);
if(!KERNEL_COMPARE_CAPABILITY((p->capability),(process->capability)))
return WRONG_CAPABILITY;
COPY_PROCESS_ATTRIBUTE((*p),(*process));
return 0;
}
int allocate_resource(struct process *process,int process_id,
struct capability *system_capability)
{
struct process *p;
if((process_id<=0)||(process_id>=PROCESS_NUMBER))
return WRONG_PROCESS_NUMBER;
p=&(os->process[process_id]);
if(KERNEL_COMPARE_CAPABILITY((os->system_capability),
(*system_capability)))
p->driver=process->driver;
else{
if(!KERNEL_COMPARE_CAPABILITY((p->capability),
(*system_capability)))
return WRONG_CAPABILITY;
if(process->priority<p->priority)
process->priority=p->priority;
if(process->max_thread_number>p->max_thread_number)
process->max_thread_number=p->max_thread_number;
if(process->max_semaphore_number>
p->max_semaphore_number)
process->max_semaphore_number
=p->max_semaphore_number;
}
COPY_RUN_POINT((process->start_point),(p->start_point));
p->priority=process->priority;
p->semaphore=process->semaphore;
p->id=process->id;
p->max_thread_number=process->max_thread_number;
p->max_semaphore_number=process->max_semaphore_number;
COPY_CAPABILITY((process->capability),(p->capability));
return query_resource(process,process_id);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -