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 + -
显示快捷键?