ballfre.c

来自「操作系统实验,文件系统,c语言实现的」· C语言 代码 · 共 50 行

C
50
字号
#include <stdio.h>
#include "filesys.h"

static unsigned int block_buf[BLOCKSIZ];
unsigned int balloc()
{
	unsigned int free_block,free_block_num;
	int i;
	if(filsys.s_nfree==0)
	{
		printf("\nDisk Full!!!\n");
		return  DISKFULL;
	};
	free_block=filsys.s_free[filsys.s_pfree];
	if(filsys.s_pfree==NICFREE-1)
	{
		printf("s_nfree=%d\n",filsys.s_nfree);
		fseek(fd,DATASTART+(562-filsys.s_nfree)*BLOCKSIZ,SEEK_SET);
		fread(block_buf,1,BLOCKSIZ,fd);
		free_block_num=block_buf[NICFREE]; /*the total block num in the group*/
		for(i=0;i<free_block_num;i++)
		{
			filsys.s_free[NICFREE-1-i]=block_buf[i];
		}
		filsys.s_pfree=NICFREE-free_block_num;
	}
	else filsys.s_pfree++;
	filsys.s_nfree--;
	filsys.s_fmod=SUPDATE;
	return free_block;
}
bfree(unsigned int block_num)
{
	int i;
	if(filsys.s_pfree==0)    /* s-free full */
	{
		block_buf[NICFREE]=NICFREE;
		for(i=0;i<NICFREE;i++)
		{
			block_buf[i]=filsys.s_free[NICFREE-1-i];
		}
		filsys.s_pfree=NICFREE-1;
    }
    fseek(fd,BLOCKSIZ,SEEK_SET); 
    fwrite(block_buf,1,BLOCKSIZ,fd);
    filsys.s_nfree++;
    filsys.s_fmod=SUPDATE;
}

⌨️ 快捷键说明

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