file_system.c
来自「虚地址空间基于文件OS内核源代码和文件」· C语言 代码 · 共 57 行
C
57 行
#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 + =
减小字号Ctrl + -
显示快捷键?