#include <xinu.h>
#include <ramdisk.h>
Go to the source code of this file.
◆ lfscreate()
Definition at line 10 of file lfscreate.c.
References close(), lfiblk::ib_next, LF_AREA_DIR, LF_BLKSIZ, LF_DNULL, LF_INULL, lfibclear(), lfibput(), LFS_ID, memset(), NULLCH, OK, SYSERR, and write().
34 ibsectors = (lfiblks+(ibpersector-1)) / ibpersector;
35 lfiblks = ibsectors * ibpersector;
36 if (ibsectors > sectors/2) {
46 dir.lfd_allones = 0xffffffff;
47 dir.lfd_revid = ((
LFS_ID>>24) & 0x000000ff) |
48 ((
LFS_ID>> 8) & 0x0000ff00) |
49 ((
LFS_ID<< 8) & 0x00ff0000) |
50 ((
LFS_ID<<24) & 0xff000000) ;
51 dbindex= (
dbid32)(ibsectors + 1);
52 dir.lfd_dfree = dbindex;
53 dblks = sectors - ibsectors - 1;
62 for (i=0; i<lfiblks-1; i++) {
63 iblock.ib_next = (
ibid32)(i + 1);
72 for (i=0; i<dblks-1; i++) {
73 dblock.lf_nextdb = dbindex + 1;
74 write(disk, (
char *)&dblock, dbindex);
78 write(disk, (
char *)&dblock, dbindex);
int32 dbid32
データブロックID(ファイルシステムで使用する)
int32 ibid32
ブロックIDのインデックス(ファイルシステムで使用する)
void lfibclear(struct lfiblk *, int32)
syscall write(did32, char *, uint32)
int int32
符号あり32ビット整数(int)
void * memset(void *, const int, int32)
指定のByteブロックに対して、同じ値をNバイト分書き込む。
unsigned int uint32
符号なし32ビット整数(unsigned int)
#define NULLCH
NULL文字(NULL終端)
status lfibput(did32, ibid32, struct lfiblk *)