touch_block.c

来自「虚拟地址空间基于文件的操作系统」· C语言 代码 · 共 28 行

C
28
字号
#include"memory.h"

int touch_block(int memory_process_number,int physical_block_number,
	int sleep_semaphore)
{
	struct physical_block *b;
	struct file_window *f;
	b=physical_block_number+memory_body->physical_block;
	for(;;)
	switch(b->state){
	case MODIFIED_BLOCK:
	case NOT_MODIFIED_BLOCK:
		f=memory_body->file_window+b->file_window;
		if(memory_set_tlb_item(f->file.memory_process,
			b->file_window,b->logic_block_number,
			b->physical_number,f->file.right)>=0)
				b->lock_number++;
		mark_accessed(physical_block_number);
		return 0;
	case READING_BLOCK:
	case WRITING_BLOCK:
		wait_block(physical_block_number,sleep_semaphore);
		return 0;
	default:
		return 0;
	}
}

⌨️ 快捷键说明

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