XINU
lflinit.c
Go to the documentation of this file.
1 /* lflinit.c - lflinit */
2 
3 #include <xinu.h>
4 
5 struct lflcblk lfltab[Nlfl]; /* Pseudo-device control blocks */
6 
7 /*------------------------------------------------------------------------
8  * lflinit - Initialize control blocks for local file pseudo-devices
9  *------------------------------------------------------------------------
10  */
12  struct dentry *devptr /* Entry in device switch table */
13  )
14 {
15  struct lflcblk *lfptr; /* Ptr. to control block entry */
16  int32 i; /* Walks through name array */
17 
18  lfptr = &lfltab[ devptr->dvminor ];
19 
20  /* Initialize control block entry */
21 
22  lfptr->lfstate = LF_FREE; /* Device is currently unused */
23  lfptr->lfdev = devptr->dvnum; /* Set device ID */
24  lfptr->lfmutex = semcreate(1); /* Create the mutex semaphore */
25 
26  /* Initialize the directory and file position */
27 
28  lfptr->lfdirptr = (struct ldentry *) NULL;
29  lfptr->lfpos = 0;
30  for (i=0; i<LF_NAME_LEN; i++) {
31  lfptr->lfname[i] = NULLCH;
32  }
33 
34  /* Zero the in-memory index block and data block */
35 
36  lfptr->lfinum = LF_INULL;
37  memset((char *) &lfptr->lfiblock, NULLCH, sizeof(struct lfiblk));
38  lfptr->lfdnum = 0;
39  memset((char *) &lfptr->lfdblock, NULLCH, LF_BLKSIZ);
40 
41  /* Start with the byte beyond the current data block */
42 
43  lfptr->lfbyte = &lfptr->lfdblock[LF_BLKSIZ];
44  lfptr->lfibdirty = lfptr->lfdbdirty = FALSE;
45  return OK;
46 }
#define NULL
連結リスト用のNULLポインタ
Definition: kernel.h:68
char * lfbyte
Definition: lfilesys.h:161
struct ldentry * lfdirptr
Definition: lfilesys.h:147
#define Nlfl
Definition: conf.h:70
sid32 semcreate(int32)
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。
Definition: semcreate.c:22
int32 dvminor
Definition: conf.h:8
全てのシステムヘッダファイルをインクルードする。
#define LF_NAME_LEN
Definition: lfilesys.h:49
#define OK
処理が成功した場合
Definition: kernel.h:77
sid32 lfmutex
Definition: lfilesys.h:146
struct lfiblk lfiblock
Definition: lfilesys.h:155
#define LF_INULL
Definition: lfilesys.h:55
Definition: conf.h:6
char lfname[LF_NAME_LEN]
Definition: lfilesys.h:152
ibid32 lfinum
Definition: lfilesys.h:153
struct lflcblk lfltab[Nlfl]
Definition: lflinit.c:5
#define LF_BLKSIZ
Definition: lfilesys.h:48
#define FALSE
Boolean False(0)
Definition: kernel.h:63
byte lfstate
Definition: lfilesys.h:144
dbid32 lfdnum
Definition: lfilesys.h:157
bool8 lfdbdirty
Definition: lfilesys.h:166
int int32
符号あり32ビット整数(int)
Definition: kernel.h:11
int32 dvnum
Definition: conf.h:7
void * memset(void *, const int, int32)
指定のByteブロックに対して、同じ値をNバイト分書き込む。
Definition: memset.c:13
#define LF_FREE
Definition: lfilesys.h:52
did32 lfdev
Definition: lfilesys.h:145
devcall lflinit(struct dentry *devptr)
Definition: lflinit.c:11
bool8 lfibdirty
Definition: lfilesys.h:165
uint32 lfpos
Definition: lfilesys.h:150
char lfdblock[LF_BLKSIZ]
Definition: lfilesys.h:159
int32 devcall
デバイスコール関数 返り値の型
Definition: kernel.h:49
#define NULLCH
NULL文字(NULL終端)
Definition: kernel.h:70