📄 iallfre.c
字号:
#include <stdio.h>#include "filesys.h"static struct dinode block_buf[BLOCKSIZ/DINODESIZ];struct inode *ialloc(){ struct inode *temp_inode; unsigned int cur_di; int i,count,block_end_flag; if(filsys.s_pinode == NICINOD) /* s_inode empty */ { i = 0 ; count = 0; block_end_flag = 1; cur_di = filsys.s_rinode; while((count<NICINOD)||(count <= filsys.s_ninode)) { if(block_end_flag) { fseek(fd,DINODESTART + cur_di*DINODESIZ,SEEK_SET); fread(block_buf,1,BLOCKSIZ,fd); block_end_flag = 0; i = 0; } while(block_buf[i].di_mode == DIEMPTY) { cur_di++; i++; } if(i == NICINOD) block_end_flag = 1; else { filsys.s_inode[filsys.s_pinode--] = cur_di; count ++; } } filsys.s_rinode = cur_di; } temp_inode = iget(filsys.s_inode[filsys.s_pinode]); fseek(fd,DINODESTART+filsys.s_inode[filsys.s_pinode]*DINODESIZ,SEEK_SET); fwrite(&temp_inode->di_number,1,sizeof(struct dinode),fd); filsys.s_pinode++; filsys.s_ninode--; filsys.s_fmod = SUPDATE; return temp_inode;}ifree(dinodeid)unsigned dinodeid;{ filsys.s_ninode++; if(filsys.s_pinode != NICINOD) /* not full */ { filsys.s_inode[filsys.s_pinode] = dinodeid; filsys.s_pinode++; } else /* full */ { if(dinodeid < filsys.s_rinode) { filsys.s_inode[NICINOD] = dinodeid; filsys.s_rinode = dinodeid; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -