⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iallfre.c

📁 基于UNIX6的文件系统模拟程序
💻 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 + -