summaryrefslogtreecommitdiffstats
path: root/sys/sys/filedesc.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/sys/filedesc.h')
-rw-r--r--sys/sys/filedesc.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h
index e1d2363..ca980ef 100644
--- a/sys/sys/filedesc.h
+++ b/sys/sys/filedesc.h
@@ -38,6 +38,7 @@
#include <sys/event.h>
#include <sys/lock.h>
#include <sys/priority.h>
+#include <sys/seq.h>
#include <sys/sx.h>
#include <machine/_limits.h>
@@ -50,14 +51,16 @@ struct filecaps {
};
struct filedescent {
- struct file *fde_file; /* file structure for open file */
- struct filecaps fde_caps; /* per-descriptor rights */
- uint8_t fde_flags; /* per-process open file flags */
+ struct file *fde_file; /* file structure for open file */
+ struct filecaps fde_caps; /* per-descriptor rights */
+ uint8_t fde_flags; /* per-process open file flags */
+ seq_t fde_seq; /* keep file and caps in sync */
};
#define fde_rights fde_caps.fc_rights
#define fde_fcntls fde_caps.fc_fcntls
#define fde_ioctls fde_caps.fc_ioctls
#define fde_nioctls fde_caps.fc_nioctls
+#define fde_change_size (offsetof(struct filedescent, fde_seq))
/*
* This structure is used for the management of descriptors. It may be
@@ -82,6 +85,7 @@ struct filedesc {
int fd_holdleaderscount; /* block fdfree() for shared close() */
int fd_holdleaderswakeup; /* fdfree() needs wakeup */
};
+#define fd_seq(fdp, fd) (&(fdp)->fd_ofiles[(fd)].fde_seq)
/*
* Structure to keep track of (process leader, struct fildedesc) tuples.
OpenPOWER on IntegriCloud