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

📄 inodemanage.c

📁 操作系统简单的登入程序
💻 C
字号:
#include <stdio.h>#include "filesys.h"void updateinodemap(unsigned short order , char flag);void updateinodetable(struct inode* ainode);struct inode* posinode(unsigned short nid){		struct inode* ainode=malloc(sizeof(struct inode));		fd=fopen("filesystem","r+");		fseek(fd,(3*BLOCKSIZE)+sizeof(struct inode)*nid,SEEK_SET);		fread(ainode,sizeof(struct inode),1,fd);		fclose(fd);		return ainode;	}/*ialloc function write the ainode to the filesys.o(ainode's address  is already allocated).change the super->s_pinode and ainode->i_ino.*/struct inode* ialloc(struct inode* ainode){	unsigned short number=0;	unsigned short i;		struct inode* pinode;	if(super->s_ninode==0)	{		printf("\n HAVE NO INODE LEFT!!!\n");		return  NULL;	}        number=super->s_pinode;				*(super->s_inode+number)='1';		updateinodemap(number,'1');	if(--super->s_ninode!=0)	{			for(i=0;i<INODENUMBER;i++)		{						if(*(super->s_inode +(super->s_pinode+i)%INODENUMBER)!='1')			{				super->s_pinode=(super->s_pinode+i)%INODENUMBER;					updatesys();								break;				}					}			}		ainode->i_ino=number;	updateinodetable(ainode);	return ainode;		}	int ifree(unsigned short pos){	if(super->s_ninode + 1 > BLOCKNUM)	{		printf("\nDisk Error!!!\n");		return  DISKFULL;		}	super->s_ninode++;	*(super->s_inode+pos)='0';	updateinodemap(pos,'0');		super->s_pinode=pos;		updatesys();	return DISKSUCCESS;}	void updateinodemap(unsigned short order , char flag){			fd=fopen("filesystem","r+");				fseek(fd,(2*BLOCKSIZE)+order,SEEK_SET);		fwrite(&flag,sizeof(char),1,fd);		fclose(fd);		}void updateinodetable(struct inode* ainode){		fd=fopen("filesystem","r+");		fseek(fd,(3*BLOCKSIZE)+sizeof(struct inode)*(ainode->i_ino),SEEK_SET);		fwrite(ainode,sizeof(struct inode),1,fd);		fclose(fd);		}void* fchmod(char* name,unsigned short mode){	unsigned short nid;		char* content;	struct  inode* pinode;	nid=map2inode(name);		if(nid==MAPERR)		return NULL;	pinode=(struct inode*)posinode(nid);	pinode->di_mode=mode;			updateinodetable(pinode);	return pinode;}

⌨️ 快捷键说明

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