]>
Commit | Line | Data |
---|---|---|
9db221ae | 1 | /* |
364031f1 | 2 | * 9p |
9db221ae AK |
3 | * |
4 | * Copyright IBM, Corp. 2011 | |
5 | * | |
6 | * Authors: | |
7 | * Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2. See | |
10 | * the COPYING file in the top-level directory. | |
11 | * | |
12 | */ | |
13 | ||
121d0712 MA |
14 | #ifndef QEMU_9P_SYNTH_H |
15 | #define QEMU_9P_SYNTH_H | |
9db221ae AK |
16 | |
17 | typedef struct V9fsSynthNode V9fsSynthNode; | |
18 | typedef ssize_t (*v9fs_synth_read)(void *buf, int len, off_t offset, | |
19 | void *arg); | |
20 | typedef ssize_t (*v9fs_synth_write)(void *buf, int len, off_t offset, | |
21 | void *arg); | |
22 | typedef struct V9fsSynthNodeAttr { | |
23 | int mode; | |
24 | int inode; | |
25 | int nlink; | |
26 | v9fs_synth_read read; | |
27 | v9fs_synth_write write; | |
28 | } V9fsSynthNodeAttr; | |
29 | ||
30 | struct V9fsSynthNode { | |
31 | QLIST_HEAD(, V9fsSynthNode) child; | |
32 | QLIST_ENTRY(V9fsSynthNode) sibling; | |
33 | char name[NAME_MAX]; | |
34 | V9fsSynthNodeAttr *attr; | |
35 | V9fsSynthNodeAttr actual_attr; | |
36 | void *private; | |
37 | int open_count; | |
38 | }; | |
39 | ||
40 | typedef struct V9fsSynthOpenState { | |
41 | off_t offset; | |
42 | V9fsSynthNode *node; | |
635324e8 | 43 | struct dirent dent; |
9db221ae AK |
44 | } V9fsSynthOpenState; |
45 | ||
bc70a592 GK |
46 | int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode, |
47 | const char *name, V9fsSynthNode **result); | |
48 | int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode, | |
49 | const char *name, v9fs_synth_read read, | |
50 | v9fs_synth_write write, void *arg); | |
cb9c377f | 51 | |
2893ddd5 GK |
52 | /* qtest stuff */ |
53 | ||
54 | #define QTEST_V9FS_SYNTH_WALK_FILE "WALK%d" | |
82469aae | 55 | #define QTEST_V9FS_SYNTH_LOPEN_FILE "LOPEN" |
354b86f8 | 56 | #define QTEST_V9FS_SYNTH_WRITE_FILE "WRITE" |
2893ddd5 | 57 | |
af46a3b2 CS |
58 | /* for READDIR test */ |
59 | #define QTEST_V9FS_SYNTH_READDIR_DIR "ReadDirDir" | |
60 | #define QTEST_V9FS_SYNTH_READDIR_FILE "ReadDirFile%d" | |
61 | #define QTEST_V9FS_SYNTH_READDIR_NFILES 100 | |
62 | ||
357e2f7f GK |
63 | /* Any write to the "FLUSH" file is handled one byte at a time by the |
64 | * backend. If the byte is zero, the backend returns success (ie, 1), | |
65 | * otherwise it forces the server to try again forever. Thus allowing | |
66 | * the client to cancel the request. | |
67 | */ | |
68 | #define QTEST_V9FS_SYNTH_FLUSH_FILE "FLUSH" | |
69 | ||
cb9c377f | 70 | #endif |