control_file.c

来自「虚地址空间基于文件OS内核源代码和文件」· C语言 代码 · 共 43 行

C
43
字号
#include"../include/os.h"

#define WRONG_COMMAND		-1
#define WRONG_FILE_NUMBER	-2
#define WRONG_FILE_STATE	-3
#define WRONG_CAPABILITY	-4
#define WRONG_SEMAPHORE		-5
#define NO_FREE_BLOCK		-6

int control_file(int sleep_semaphore,int command,int file_window_number,
	union file_system_operation_parameter *parameter,
	struct capability *file_capability)
{
	int return_value;
	struct file_window *f;

	if(sleep_semaphore<=0)
		return WRONG_SEMAPHORE;
	if(file_window_number<0)
		return WRONG_FILE_NUMBER;
	if(file_window_number>=(*(memory_body->file_number)))
		return WRONG_FILE_NUMBER;
	f=memory_body->file_window+file_window_number;
	if(f->state!=FILE_OPEN)
		return WRONG_FILE_STATE;
	if(!KERNEL_COMPARE_CAPABILITY(
		(f->file.capability),(*file_capability)))
			return WRONG_CAPABILITY;
	switch(command){
	case OPEN_FILE:
	case CLOSE_FILE:
	case OPERATE_FILE:
		return_value=operate_file_system(command,
			sleep_semaphore,f,parameter,
			current.rt->physical_block.memory_id,
			current.rt->physical_block.block_id);
		break;
	default:
		return_value=WRONG_COMMAND;
	}
	return return_value;
}

⌨️ 快捷键说明

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