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

📄 file_system.c

📁 虚拟地址空间基于文件的操作系统
💻 C
字号:
#include"../include/os.h"

#define MAX_PAGE_SIZE  (61*PAGE_SIZE)

void delay(int sem_id)
{
	union system_call_parameter *par=get_kernel_parameter();
	struct thread_environment r;
	r.system_call=5;
	r.system_call_arg1=((sem_id<0)?sem_id:(0-sem_id));
	r.system_call_arg2=TRUE;
	r.system_call_arg3=TRUE;
	r.system_call_arg4=(-1);
	get_current_time(&(par->set_semaphore_time.first_time));
	TIME_INC(1,(par->set_semaphore_time.first_time));
	SET_MINIMAL_STEP(par->set_semaphore_time.step_time);
	RESET_CAPABILITY(par->set_semaphore_time.semaphore_capability);
/*
	call_kernel(&r);
*/
	return;
}

void file_system_call_deal(struct thread_environment *env)
{
	extern void test(void ),copy_os_data(int *);

	struct file_system_call_parameter *par;
	int sem_id=env->system_call_arg1;

	par=get_file_system_parameter();

	switch(par->command){
	case READ_FILE:
		if(par->parameter.read_write.begin_rw==0)
			copy_os_data((int *)test);
		else if(par->parameter.read_write.
			begin_rw<=MAX_PAGE_SIZE)
			copy_os_data((int *)(par->parameter.
				read_write.begin_rw-PAGE_SIZE));
		else
			copy_os_data((int *)MAX_PAGE_SIZE);
		break;
	default:
		break;
	}

	delay(sem_id);

	env->system_call_arg1=TRUE;
	env->system_call_arg2=1;

	return ;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -