📄 file_system.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 + -