XINU
device
lfs
lfflush.c
Go to the documentation of this file.
1
/* lfflush.c - lfflush */
2
3
#include <
xinu.h
>
4
5
/*------------------------------------------------------------------------
6
* lfflush - Flush directory, data block, and index block for an open
7
* file (assumes file mutex is held)
8
*------------------------------------------------------------------------
9
*/
10
status
lfflush
(
11
struct
lflcblk
*lfptr
/* Ptr to file pseudo device */
12
)
13
{
14
15
if
(lfptr->
lfstate
==
LF_FREE
) {
16
return
SYSERR
;
17
}
18
19
/* Write the directory if it has changed */
20
21
if
(
Lf_data
.
lf_dirdirty
) {
22
write
(
Lf_data
.
lf_dskdev
, (
char
*)&
Lf_data
.
lf_dir
,
23
LF_AREA_DIR
);
24
Lf_data
.
lf_dirdirty
=
FALSE
;
25
}
26
27
/* Write data block if it has changed */
28
29
if
(lfptr->
lfdbdirty
) {
30
write
(
Lf_data
.
lf_dskdev
, lfptr->
lfdblock
, lfptr->
lfdnum
);
31
lfptr->
lfdbdirty
=
FALSE
;
32
}
33
34
/* Write i-block if it has changed */
35
36
if
(lfptr->
lfibdirty
) {
37
lfibput
(
Lf_data
.
lf_dskdev
, lfptr->
lfinum
, &lfptr->
lfiblock
);
38
lfptr->
lfibdirty
=
FALSE
;
39
}
40
41
return
OK
;
42
}
xinu.h
全てのシステムヘッダファイルをインクルードする。
SYSERR
#define SYSERR
処理が失敗した場合
Definition:
kernel.h:79
lflcblk
Definition:
lfilesys.h:142
Lf_data
struct lfdata Lf_data
Definition:
lfsinit.c:5
lfdata::lf_dskdev
did32 lf_dskdev
Definition:
lfilesys.h:131
OK
#define OK
処理が成功した場合
Definition:
kernel.h:77
status
int32 status
ステータスを意味する返り値の型(OK/SYSERR)
Definition:
kernel.h:57
lflcblk::lfiblock
struct lfiblk lfiblock
Definition:
lfilesys.h:155
LF_AREA_DIR
#define LF_AREA_DIR
Definition:
lfilesys.h:67
lflcblk::lfinum
ibid32 lfinum
Definition:
lfilesys.h:153
write
syscall write(did32, char *, uint32)
Definition:
write.c:9
lfdata::lf_dir
struct lfdir lf_dir
Definition:
lfilesys.h:134
FALSE
#define FALSE
Boolean False(0)
Definition:
kernel.h:63
lflcblk::lfstate
byte lfstate
Definition:
lfilesys.h:144
lflcblk::lfdnum
dbid32 lfdnum
Definition:
lfilesys.h:157
lflcblk::lfdbdirty
bool8 lfdbdirty
Definition:
lfilesys.h:166
lfdata::lf_dirdirty
bool8 lf_dirdirty
Definition:
lfilesys.h:137
LF_FREE
#define LF_FREE
Definition:
lfilesys.h:52
lflcblk::lfibdirty
bool8 lfibdirty
Definition:
lfilesys.h:165
lfflush
status lfflush(struct lflcblk *lfptr)
Definition:
lfflush.c:10
lflcblk::lfdblock
char lfdblock[LF_BLKSIZ]
Definition:
lfilesys.h:159
lfibput
status lfibput(did32, ibid32, struct lfiblk *)
Definition:
lfibput.c:10
Generated by
1.8.13