⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resource.c

📁 虚拟地址空间基于文件的操作系统
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -