XINU
device
lfs
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
*/
11
devcall
lflinit
(
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
}
NULL
#define NULL
連結リスト用のNULLポインタ
Definition:
kernel.h:68
lflcblk::lfbyte
char * lfbyte
Definition:
lfilesys.h:161
lflcblk::lfdirptr
struct ldentry * lfdirptr
Definition:
lfilesys.h:147
Nlfl
#define Nlfl
Definition:
conf.h:70
semcreate
sid32 semcreate(int32)
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。
Definition:
semcreate.c:22
dentry::dvminor
int32 dvminor
Definition:
conf.h:8
xinu.h
全てのシステムヘッダファイルをインクルードする。
lflcblk
Definition:
lfilesys.h:142
LF_NAME_LEN
#define LF_NAME_LEN
Definition:
lfilesys.h:49
OK
#define OK
処理が成功した場合
Definition:
kernel.h:77
lflcblk::lfmutex
sid32 lfmutex
Definition:
lfilesys.h:146
lflcblk::lfiblock
struct lfiblk lfiblock
Definition:
lfilesys.h:155
LF_INULL
#define LF_INULL
Definition:
lfilesys.h:55
dentry
Definition:
conf.h:6
lfiblk
Definition:
lfilesys.h:71
lflcblk::lfname
char lfname[LF_NAME_LEN]
Definition:
lfilesys.h:152
lflcblk::lfinum
ibid32 lfinum
Definition:
lfilesys.h:153
lfltab
struct lflcblk lfltab[Nlfl]
Definition:
lflinit.c:5
LF_BLKSIZ
#define LF_BLKSIZ
Definition:
lfilesys.h:48
FALSE
#define FALSE
Boolean False(0)
Definition:
kernel.h:63
lflcblk::lfstate
byte lfstate
Definition:
lfilesys.h:144
ldentry
Definition:
lfilesys.h:96
lflcblk::lfdnum
dbid32 lfdnum
Definition:
lfilesys.h:157
lflcblk::lfdbdirty
bool8 lfdbdirty
Definition:
lfilesys.h:166
int32
int int32
符号あり32ビット整数(int)
Definition:
kernel.h:11
dentry::dvnum
int32 dvnum
Definition:
conf.h:7
memset
void * memset(void *, const int, int32)
指定のByteブロックに対して、同じ値をNバイト分書き込む。
Definition:
memset.c:13
LF_FREE
#define LF_FREE
Definition:
lfilesys.h:52
lflcblk::lfdev
did32 lfdev
Definition:
lfilesys.h:145
lflinit
devcall lflinit(struct dentry *devptr)
Definition:
lflinit.c:11
lflcblk::lfibdirty
bool8 lfibdirty
Definition:
lfilesys.h:165
lflcblk::lfpos
uint32 lfpos
Definition:
lfilesys.h:150
lflcblk::lfdblock
char lfdblock[LF_BLKSIZ]
Definition:
lfilesys.h:159
devcall
int32 devcall
デバイスコール関数 返り値の型
Definition:
kernel.h:49
NULLCH
#define NULLCH
NULL文字(NULL終端)
Definition:
kernel.h:70
Generated by
1.8.13