Added filp_state for driver recovery and filp_select_flags to store select
state for character specials that use asynch I/O.
This commit is contained in:
parent
1d7d5aa629
commit
047cc090e4
2 changed files with 17 additions and 0 deletions
|
@ -5,6 +5,7 @@
|
||||||
EXTERN struct filp {
|
EXTERN struct filp {
|
||||||
mode_t filp_mode; /* RW bits, telling how file is opened */
|
mode_t filp_mode; /* RW bits, telling how file is opened */
|
||||||
int filp_flags; /* flags from open and fcntl */
|
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?*/
|
int filp_count; /* how many file descriptors share this slot?*/
|
||||||
/* struct inode *filp_ino;*/ /* pointer to the inode */
|
/* 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_selectors; /* select()ing processes blocking on this fd */
|
||||||
int filp_select_ops; /* interested in these SEL_* operations */
|
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() */
|
/* following are for fd-type-specific select() */
|
||||||
int filp_pipe_select_ops;
|
int filp_pipe_select_ops;
|
||||||
|
@ -24,4 +26,17 @@ EXTERN struct filp {
|
||||||
|
|
||||||
#define FILP_CLOSED 0 /* filp_mode: associated device closed */
|
#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 */
|
#define NIL_FILP (struct filp *) 0 /* indicates absence of a filp slot */
|
||||||
|
|
|
@ -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_select_ops = 0;
|
||||||
f->filp_pipe_select_ops = 0;
|
f->filp_pipe_select_ops = 0;
|
||||||
f->filp_flags = 0;
|
f->filp_flags = 0;
|
||||||
|
f->filp_state = FS_NORMAL;
|
||||||
|
f->filp_select_flags = 0;
|
||||||
*fpt = f;
|
*fpt = f;
|
||||||
return(OK);
|
return(OK);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue