]> Zhao Yanbai Git Server - minix.git/commitdiff
Added filp_state for driver recovery and filp_select_flags to store select
authorPhilip Homburg <philip@cs.vu.nl>
Fri, 22 Feb 2008 14:19:23 +0000 (14:19 +0000)
committerPhilip Homburg <philip@cs.vu.nl>
Fri, 22 Feb 2008 14:19:23 +0000 (14:19 +0000)
state for character specials that use asynch I/O.

servers/vfs/file.h
servers/vfs/filedes.c

index 74552a58eaca3bc3adb1ceeacc852a15ad9f9423..fda94da934da197f5ac1ad1e7dac84cecdf8d81e 100644 (file)
@@ -5,6 +5,7 @@
 EXTERN struct filp {
   mode_t filp_mode;            /* RW bits, telling how file is opened */
   int filp_flags;              /* flags from open and fcntl */
+  int filp_state;              /* state for crash recovery */
   int filp_count;              /* how many file descriptors share this slot?*/
 /*  struct inode *filp_ino;*/  /* pointer to the inode */
 
@@ -17,6 +18,7 @@ EXTERN struct filp {
    */
   int filp_selectors;          /* select()ing processes blocking on this fd */
   int filp_select_ops;         /* interested in these SEL_* operations */
+  int filp_select_flags;       /* Select flags for the filp */
 
   /* following are for fd-type-specific select() */
   int filp_pipe_select_ops;
@@ -24,4 +26,17 @@ EXTERN struct filp {
 
 #define FILP_CLOSED    0       /* filp_mode: associated device closed */
 
+#define FS_NORMAL      0       /* file descriptor can be used normally */
+#define FS_NEEDS_REOPEN        1       /* file descriptor needs to be re-opened */
+
+#define FSF_UPDATE     1       /* The driver should be informed about new
+                                * state.
+                                */
+#define FSF_BUSY       2       /* Select operation sent to driver but no 
+                                * reply yet.
+                                */
+#define FSF_BLOCK      4       /* Request is blocking, the driver should 
+                                * keep state.
+                                */
+
 #define NIL_FILP (struct filp *) 0     /* indicates absence of a filp slot */
index f1fae581cbfab275ad1aa24b1a7ec574b8799039..332b379578551573e661e142f0cf1d2df18bfeb6 100644 (file)
@@ -53,6 +53,8 @@ PUBLIC int get_fd(int start, mode_t bits, int *k, struct filp **fpt)
                f->filp_select_ops = 0;
                f->filp_pipe_select_ops = 0;
                f->filp_flags = 0;
+               f->filp_state = FS_NORMAL;
+               f->filp_select_flags = 0;
                *fpt = f;
                return(OK);
        }