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

📄 resource.c

📁 国内一位牛人自己开发的操作系统
💻 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 + -