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

Go to the source code of this file.

Functions

devcall lflcontrol (struct dentry *devptr, int32 func, int32 arg1, int32 arg2)
 

Function Documentation

◆ lflcontrol()

devcall lflcontrol ( struct dentry devptr,
int32  func,
int32  arg1,
int32  arg2 
)

Definition at line 9 of file lflcontrol.c.

References dentry::dvminor, kprintf(), LF_CTL_TRUNC, Lf_data, lfdata::lf_mutex, LF_USED, lfltab, lflcblk::lfmutex, lflcblk::lfstate, lftruncate(), signal(), SYSERR, and wait().

15 {
16  struct lflcblk *lfptr; /* Ptr to open file table entry */
17  int32 retval; /* Return value from func. call */
18 
19  /* Obtain exclusive use of the file */
20 
21  lfptr = &lfltab[devptr->dvminor];
22  wait(lfptr->lfmutex);
23 
24  /* If file is not open, return an error */
25 
26  if (lfptr->lfstate != LF_USED) {
27  signal(lfptr->lfmutex);
28  return SYSERR;
29  }
30 
31  switch (func) {
32 
33  /* Truncate a file */
34 
35  case LF_CTL_TRUNC:
37  retval = lftruncate(lfptr);
39  signal(lfptr->lfmutex);
40  return retval;
41 
42  default:
43  kprintf("lfcontrol: function %d not valid\n\r", func);
44  signal(lfptr->lfmutex);
45  return SYSERR;
46  }
47 }
syscall kprintf(char *fmt,...)
ポーリングI/Oを使用して、フォーマットされた文字列をコンソールに出力する。
Definition: kprintf.c:98
sid32 lf_mutex
Definition: lfilesys.h:132
int32 dvminor
Definition: conf.h:8
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
struct lfdata Lf_data
Definition: lfsinit.c:5
#define LF_USED
Definition: lfilesys.h:53
struct lflcblk lfltab[]
Definition: lflinit.c:5
sid32 lfmutex
Definition: lfilesys.h:146
#define LF_CTL_TRUNC
Definition: lfilesys.h:175
status lftruncate(struct lflcblk *)
Definition: lftruncate.c:10
byte lfstate
Definition: lfilesys.h:144
int int32
符号あり32ビット整数(int)
Definition: kernel.h:11
syscall wait(sid32)
Definition: wait.c:9
syscall signal(sid32)
セマフォにシグナルを送り、待機プロセスがある場合は解除する。
Definition: signal.c:18
Here is the call graph for this function: