9p-synth.h 1.5 KB
Newer Older
1
/*
2
 * 9p
3 4 5 6 7 8 9 10 11 12 13
 *
 * 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.
 *
 */

14 15
#ifndef QEMU_9P_SYNTH_H
#define QEMU_9P_SYNTH_H
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

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;
G
Greg Kurz 已提交
43
    struct dirent dent;
44 45
} V9fsSynthOpenState;

46 47 48 49 50
int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode,
                          const char *name, V9fsSynthNode **result);
int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode,
                             const char *name, v9fs_synth_read read,
                             v9fs_synth_write write, void *arg);
P
Paolo Bonzini 已提交
51

52 53 54
/* qtest stuff */

#define QTEST_V9FS_SYNTH_WALK_FILE "WALK%d"
55
#define QTEST_V9FS_SYNTH_LOPEN_FILE "LOPEN"
56
#define QTEST_V9FS_SYNTH_WRITE_FILE "WRITE"
57

P
Paolo Bonzini 已提交
58
#endif