free_block.c
来自「虚地址空间基于文件OS内核源代码和文件」· C语言 代码 · 共 64 行
C
64 行
#include "memory.h"
void free_one_block(int physical_block_number)
{
int i,bn,front,back;
struct physical_block *b,*b_f,*b_b;
struct file_window *f;
struct memory_process *p;
struct memory_hash *h;
bn=physical_block_number;
b=memory_body->physical_block+bn;
f=(memory_body->file_window+b->file_window);
p=(memory_body->memory_process+f->file.memory_process);
front=b->buf_front;back=b->buf_back;
if(front==bn)
p->block_ring=-1;
else{
if(p->block_ring==bn)
p->block_ring=front;
b_f=memory_body->physical_block;
b_f=b_f+front;
b_b=memory_body->physical_block;
b_b=b_b+back;
b_f->buf_back=back;
b_b->buf_front=front;
};
front=b->file_front;back=b->file_back;
if(front==bn)
f->block_ring=-1;
else{
if(f->block_ring==bn)
f->block_ring=front;
b_f=memory_body->physical_block;
b_f=b_f+front;
b_b=memory_body->physical_block;
b_b=b_b+back;
b_f->file_back=back;
b_b->file_front=front;
};
front=b->hash_front;back=b->hash_back;
i=memory_body->hash_function
(b->file_window,b->logic_block_number);
h=&(memory_body->hash[i]);
if(front==bn)
h->hash_ring=-1;
else{
if(h->hash_ring==bn)
h->hash_ring=front;
b_f=memory_body->physical_block;
b_f=b_f+front;
b_b=memory_body->physical_block;
b_b=b_b+back;
b_f->hash_back=back;
b_b->hash_front=front;
};
free_free_block(f->file.memory_process,physical_block_number);
return;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?