XINU
Functions | Variables
lflinit.c File Reference
#include <xinu.h>
Include dependency graph for lflinit.c:

Go to the source code of this file.

Functions

devcall lflinit (struct dentry *devptr)
 

Variables

struct lflcblk lfltab [Nlfl]
 

Function Documentation

◆ lflinit()

devcall lflinit ( struct dentry devptr)

Definition at line 11 of file lflinit.c.

References dentry::dvminor, dentry::dvnum, FALSE, LF_BLKSIZ, LF_FREE, LF_INULL, LF_NAME_LEN, lflcblk::lfbyte, lflcblk::lfdbdirty, lflcblk::lfdblock, lflcblk::lfdev, lflcblk::lfdirptr, lflcblk::lfdnum, lflcblk::lfibdirty, lflcblk::lfiblock, lflcblk::lfinum, lfltab, lflcblk::lfmutex, lflcblk::lfname, lflcblk::lfpos, lflcblk::lfstate, memset(), NULL, NULLCH, OK, and semcreate().

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
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
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
bool8 lfibdirty
Definition: lfilesys.h:165
uint32 lfpos
Definition: lfilesys.h:150
char lfdblock[LF_BLKSIZ]
Definition: lfilesys.h:159
#define NULLCH
NULL文字(NULL終端)
Definition: kernel.h:70
Here is the call graph for this function:

Variable Documentation

◆ lfltab

struct lflcblk lfltab[Nlfl]

Definition at line 5 of file lflinit.c.

Referenced by lflclose(), lflcontrol(), lflgetc(), lflinit(), lflputc(), lflseek(), and lfsopen().