main.c~

来自「参照MINIX3写的操作系统 用GCC+NASM+BOCHS开发」· C~ 代码 · 共 86 行

C~
86
字号
#include "../kernel.h"
#include "FileSystem.h"

extern LPBuffer GetPhysicalBlock(int Block ,int Device);
extern void FreeBufferBlock(LPBuffer pFileBuffer);
//extern void InitFileBuffer();
extern void Sysnc();

//extern void InitInodeBuffer();
extern LPInodeBuffer GetInode(unsigned long InodeNumber);
extern  void FreeInodeBuffer(LPInodeBuffer pInodeBuffer);
extern short GetBit(int Start,char Byte);
extern void SetBit(unsigned char *Byte,int Bit);
extern t_32 NewMallocPhysicalBlock(Super *Super,LPInode pInode,int EstimateSize);
extern t_32 SearachFreeBlock(t_8 Device,t_32 StartPosition,t_32 Count,t_8 Value);
extern t_32 OldMallocPhysicalBlock(LPSuper Super,LPInode pInode);
extern t_32 GetAddressFromIndirectBlock(t_8 Device,t_32 Block,t_32 NumberInOneBlock);
extern t_bool SetAddressToIndirectBlock(t_8 Device,t_32 Block,t_32 NumberInOneBlock,t_32 Address);
extern void PhysicalBlockToFileBlock(LPSuper Super,LPInode pInode,t_32 PhysicalBlock,t_8 Device);
extern t_32 FileBlockToPhysicalBlock(LPInode pInode,t_32 BlockNumber,t_8 Device);
extern t_32 WriteFile(LPSuper Super,LPInode pInode,t_32 Count,t_8 Mode,t_32 Dest);
extern t_32 ReadFile(LPInode pInode,t_32 StartPosition,t_32 Count,t_8 Mode,t_32 Dest); 
extern  void InitDirectoryBuffer();
//extern void IOWriteDirectory(t_32 FatherInodeNumber,t_32 Device ,LPDirectory pDirectory);
extern t_bool IOReadDirectory(t_32 FatherInodeNumber,char *srcName,
								  LPDirectoryBuffer pDirectoryBuffer,t_32 Device);
extern t_32 GetDirectory(t_32 FatherInodeNumber,char *Name);
extern t_bool AddDirectory(t_32 FatherInodeNumber,char *Name,t_32 ChildInodeNumber,t_32 Device);
extern LPBuffer GetPhysicalBlock(int Block ,int Device);
extern void CreateFileSystem();
extern LPSuper GetSuperFromDisk();
extern int CreateFile(char *Filename, t_8 Mode );
extern int open(char *Filename, t_8 Mode );
extern t_32 sysReadFile(int Handle,t_32 Buffer,t_32 Size);
extern t_32 sysWriteFile(int Handle,t_32 Buffer,t_32 Size);
extern t_32 sysSeek(int Handle,t_32 Offset);
extern void dump_hdr(Elf32_Ehdr *hdr_ptr);
extern void dump_phdr(Elf32_Phdr *phdr_ptr);
extern void copyELF(char *buf);
PUBLIC void initFS()
{
	LPSuper pSuper;
	LPBuffer pBlock;
	char buffer[10];
	int handle;
	int ret;
	int i;
	printk("***************Init FS*************\n");
	InitFileBuffer();	
    InitInodeBuffer();
    InitDirectoryBuffer();
/*	CreateFileSystem();*/
	GetSuperFromDisk();
	pSuper=GetSuper();
	clear();
	printk("pSuper->Magic %x\n",pSuper->Magic);
//	handle=createFile("/Tidus", 0 );
//	printk("handle %d\n",handle);
//	buffer=memAlloc(512);
	

  
	handle=open("/Tidus", 0 );
	printk("handle %d\n",handle);
	for(i=0;i<10;i++)
		buffer[i]=i;
	ret=sysWriteFile(handle,buffer,10);	
	for(i=0;i<10;i++)
		buffer[i]=0;
	ret=sysReadFile(handle,buffer,10);

	for(i=0;i<10;i++)
		printk("%d",buffer[i]);
	

//	memFree(buffer,512);
/*	for(i=0;i<5;i++)
	{
		pBlock=GetPhysicalBlock(3+i ,0);
		MemoryCopy((Buffer+1024*i),pBlock->Data,1024);
	}
*/

/*	copyELF(Buffer);*/
}

⌨️ 快捷键说明

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