| /* |
| * Virtio 9p |
| * |
| * Copyright IBM, Corp. 2011 |
| * |
| * Authors: |
| * Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> |
| * |
| * This work is licensed under the terms of the GNU GPL, version 2. See |
| * the COPYING file in the top-level directory. |
| * |
| */ |
| #ifndef HW_9PFS_VIRTIO9P_SYNTH_H |
| #define HW_9PFS_VIRTIO9P_SYNTH_H 1 |
| |
| #include <unistd.h> |
| #include <sys/types.h> |
| #include <limits.h> |
| |
| typedef struct V9fsSynthNode V9fsSynthNode; |
| typedef ssize_t (*v9fs_synth_read)(void *buf, int len, off_t offset, |
| void *arg); |
| typedef ssize_t (*v9fs_synth_write)(void *buf, int len, off_t offset, |
| void *arg); |
| typedef struct V9fsSynthNodeAttr { |
| int mode; |
| int inode; |
| int nlink; |
| v9fs_synth_read read; |
| v9fs_synth_write write; |
| } V9fsSynthNodeAttr; |
| |
| struct V9fsSynthNode { |
| QLIST_HEAD(, V9fsSynthNode) child; |
| QLIST_ENTRY(V9fsSynthNode) sibling; |
| char name[NAME_MAX]; |
| V9fsSynthNodeAttr *attr; |
| V9fsSynthNodeAttr actual_attr; |
| void *private; |
| int open_count; |
| }; |
| |
| typedef struct V9fsSynthOpenState { |
| off_t offset; |
| V9fsSynthNode *node; |
| } V9fsSynthOpenState; |
| |
| extern int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode, |
| const char *name, V9fsSynthNode **result); |
| extern int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode, |
| const char *name, v9fs_synth_read read, |
| v9fs_synth_write write, void *arg); |
| |
| #endif |