resource.c
来自「国内一位牛人自己开发的操作系统」· C语言 代码 · 共 70 行
C
70 行
#include"memory.h"
#define WRONG_MEMORY_BODY -1
#define WRONG_PROCESS_NUMBER -2
#define MEMORY_PROCESS_NOT_CREATED -3
#define WRONG_CAPABILITY -4
int query_memory_resource(struct memory_resource *r)
{
int x;
struct memory_process *p;
if((r->process_number<0)
||(r->process_number>=(*(memory_body->process_number))))
return WRONG_PROCESS_NUMBER;
p=memory_body->memory_process+r->process_number;
x=KERNEL_COMPARE_CAPABILITY((os->system_capability),(r->capability));
x=x||(KERNEL_COMPARE_CAPABILITY(
(p->capability),(r->capability)));
if(x){
r->file_number=p->file_number;
r->max_file_number=p->max_file_number;
r->max_block_number=p->max_block_number;
r->trigger_block_number=p->trigger_block_number;
r->block_number=p->block_number;
r->read_block_number=p->read_block_number;
r->write_block_number=p->write_block_number;
return 0;
}
return WRONG_CAPABILITY;
}
int allocate_memory_resource(struct memory_resource *r)
{
struct memory_process *p;
if(r->process_number<0)
return WRONG_PROCESS_NUMBER;
if(r->process_number>=(*(memory_body->process_number)))
return WRONG_PROCESS_NUMBER;
p=memory_body->memory_process+r->process_number;
if(r->max_file_number<1)
r->max_file_number=1;
if(r->max_block_number<1)
r->max_block_number=1;
if(r->trigger_block_number>=r->max_block_number)
r->trigger_block_number=r->max_block_number-1;
if(r->trigger_block_number<0)
r->trigger_block_number=0;
if(KERNEL_COMPARE_CAPABILITY(
(os->system_capability),(r->capability)))
{
p->max_file_number=r->max_file_number;
p->max_block_number=r->max_block_number;
p->trigger_block_number=r->trigger_block_number;
return 0;
}
if(KERNEL_COMPARE_CAPABILITY((p->capability),(r->capability))){
if(p->max_file_number>=r->max_file_number)
p->max_file_number=r->max_file_number;
if(p->max_block_number>=r->max_block_number)
p->max_block_number=r->max_block_number;
if(p->trigger_block_number>=r->trigger_block_number)
p->trigger_block_number=r->trigger_block_number;
return 0;
}
return WRONG_CAPABILITY;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?