mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
hw/9pfs: Abstract open state of fid to V9fsFidOpenState
To implement synthetic file system in Qemu we may not really require file descriptor and Dir *. Make generic code use V9fsFidOpenState instead. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
parent
2c74c2cb4b
commit
cc720ddb54
8 changed files with 179 additions and 141 deletions
|
@ -78,6 +78,8 @@ typedef struct V9fsPath {
|
|||
char *data;
|
||||
} V9fsPath;
|
||||
|
||||
typedef union V9fsFidOpenState V9fsFidOpenState;
|
||||
|
||||
void cred_init(FsCred *);
|
||||
|
||||
typedef struct FileOperations
|
||||
|
@ -94,22 +96,26 @@ typedef struct FileOperations
|
|||
const char *, FsCred *);
|
||||
int (*link)(FsContext *, V9fsPath *, V9fsPath *, const char *);
|
||||
int (*setuid)(FsContext *, uid_t);
|
||||
int (*close)(FsContext *, int);
|
||||
int (*closedir)(FsContext *, DIR *);
|
||||
DIR *(*opendir)(FsContext *, V9fsPath *);
|
||||
int (*open)(FsContext *, V9fsPath *, int);
|
||||
int (*open2)(FsContext *, V9fsPath *, const char *, int, FsCred *);
|
||||
void (*rewinddir)(FsContext *, DIR *);
|
||||
off_t (*telldir)(FsContext *, DIR *);
|
||||
int (*readdir_r)(FsContext *, DIR *, struct dirent *, struct dirent **);
|
||||
void (*seekdir)(FsContext *, DIR *, off_t);
|
||||
ssize_t (*preadv)(FsContext *, int, const struct iovec *, int, off_t);
|
||||
ssize_t (*pwritev)(FsContext *, int, const struct iovec *, int, off_t);
|
||||
int (*close)(FsContext *, V9fsFidOpenState *);
|
||||
int (*closedir)(FsContext *, V9fsFidOpenState *);
|
||||
int (*opendir)(FsContext *, V9fsPath *, V9fsFidOpenState *);
|
||||
int (*open)(FsContext *, V9fsPath *, int, V9fsFidOpenState *);
|
||||
int (*open2)(FsContext *, V9fsPath *, const char *,
|
||||
int, FsCred *, V9fsFidOpenState *);
|
||||
void (*rewinddir)(FsContext *, V9fsFidOpenState *);
|
||||
off_t (*telldir)(FsContext *, V9fsFidOpenState *);
|
||||
int (*readdir_r)(FsContext *, V9fsFidOpenState *,
|
||||
struct dirent *, struct dirent **);
|
||||
void (*seekdir)(FsContext *, V9fsFidOpenState *, off_t);
|
||||
ssize_t (*preadv)(FsContext *, V9fsFidOpenState *,
|
||||
const struct iovec *, int, off_t);
|
||||
ssize_t (*pwritev)(FsContext *, V9fsFidOpenState *,
|
||||
const struct iovec *, int, off_t);
|
||||
int (*mkdir)(FsContext *, V9fsPath *, const char *, FsCred *);
|
||||
int (*fstat)(FsContext *, int, struct stat *);
|
||||
int (*fstat)(FsContext *, V9fsFidOpenState *, struct stat *);
|
||||
int (*rename)(FsContext *, const char *, const char *);
|
||||
int (*truncate)(FsContext *, V9fsPath *, off_t);
|
||||
int (*fsync)(FsContext *, int, int);
|
||||
int (*fsync)(FsContext *, V9fsFidOpenState *, int);
|
||||
int (*statfs)(FsContext *s, V9fsPath *path, struct statfs *stbuf);
|
||||
ssize_t (*lgetxattr)(FsContext *, V9fsPath *,
|
||||
const char *, void *, size_t);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue