Statistics
| Branch: | Revision:

root / hw / 9pfs / virtio-9p-synth.h @ a8aec295

History | View | Annotate | Download (1.5 kB)

1 9db221ae Aneesh Kumar K.V
/*
2 9db221ae Aneesh Kumar K.V
 * Virtio 9p
3 9db221ae Aneesh Kumar K.V
 *
4 9db221ae Aneesh Kumar K.V
 * Copyright IBM, Corp. 2011
5 9db221ae Aneesh Kumar K.V
 *
6 9db221ae Aneesh Kumar K.V
 * Authors:
7 9db221ae Aneesh Kumar K.V
 *  Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
8 9db221ae Aneesh Kumar K.V
 *
9 9db221ae Aneesh Kumar K.V
 * This work is licensed under the terms of the GNU GPL, version 2.  See
10 9db221ae Aneesh Kumar K.V
 * the COPYING file in the top-level directory.
11 9db221ae Aneesh Kumar K.V
 *
12 9db221ae Aneesh Kumar K.V
 */
13 cb9c377f Paolo Bonzini
#ifndef HW_9PFS_VIRTIO9P_SYNTH_H
14 cb9c377f Paolo Bonzini
#define HW_9PFS_VIRTIO9P_SYNTH_H 1
15 9db221ae Aneesh Kumar K.V
16 9db221ae Aneesh Kumar K.V
#include <unistd.h>
17 9db221ae Aneesh Kumar K.V
#include <sys/types.h>
18 9db221ae Aneesh Kumar K.V
#include <limits.h>
19 9db221ae Aneesh Kumar K.V
20 9db221ae Aneesh Kumar K.V
typedef struct V9fsSynthNode V9fsSynthNode;
21 9db221ae Aneesh Kumar K.V
typedef ssize_t (*v9fs_synth_read)(void *buf, int len, off_t offset,
22 9db221ae Aneesh Kumar K.V
                                   void *arg);
23 9db221ae Aneesh Kumar K.V
typedef ssize_t (*v9fs_synth_write)(void *buf, int len, off_t offset,
24 9db221ae Aneesh Kumar K.V
                                    void *arg);
25 9db221ae Aneesh Kumar K.V
typedef struct V9fsSynthNodeAttr {
26 9db221ae Aneesh Kumar K.V
    int mode;
27 9db221ae Aneesh Kumar K.V
    int inode;
28 9db221ae Aneesh Kumar K.V
    int nlink;
29 9db221ae Aneesh Kumar K.V
    v9fs_synth_read read;
30 9db221ae Aneesh Kumar K.V
    v9fs_synth_write write;
31 9db221ae Aneesh Kumar K.V
} V9fsSynthNodeAttr;
32 9db221ae Aneesh Kumar K.V
33 9db221ae Aneesh Kumar K.V
struct V9fsSynthNode {
34 9db221ae Aneesh Kumar K.V
    QLIST_HEAD(, V9fsSynthNode) child;
35 9db221ae Aneesh Kumar K.V
    QLIST_ENTRY(V9fsSynthNode) sibling;
36 9db221ae Aneesh Kumar K.V
    char name[NAME_MAX];
37 9db221ae Aneesh Kumar K.V
    V9fsSynthNodeAttr *attr;
38 9db221ae Aneesh Kumar K.V
    V9fsSynthNodeAttr actual_attr;
39 9db221ae Aneesh Kumar K.V
    void *private;
40 9db221ae Aneesh Kumar K.V
    int open_count;
41 9db221ae Aneesh Kumar K.V
};
42 9db221ae Aneesh Kumar K.V
43 9db221ae Aneesh Kumar K.V
typedef struct V9fsSynthOpenState {
44 9db221ae Aneesh Kumar K.V
    off_t offset;
45 9db221ae Aneesh Kumar K.V
    V9fsSynthNode *node;
46 9db221ae Aneesh Kumar K.V
} V9fsSynthOpenState;
47 9db221ae Aneesh Kumar K.V
48 9db221ae Aneesh Kumar K.V
extern int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode,
49 9db221ae Aneesh Kumar K.V
                                 const char *name, V9fsSynthNode **result);
50 9db221ae Aneesh Kumar K.V
extern int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode,
51 9db221ae Aneesh Kumar K.V
                                    const char *name, v9fs_synth_read read,
52 9db221ae Aneesh Kumar K.V
                                    v9fs_synth_write write, void *arg);
53 cb9c377f Paolo Bonzini
54 cb9c377f Paolo Bonzini
#endif