Statistics
| Branch: | Revision:

root / fsdev / virtio-9p-marshal.h @ 57c83dac

History | View | Annotate | Download (2 kB)

1
#ifndef _QEMU_VIRTIO_9P_MARSHAL_H
2
#define _QEMU_VIRTIO_9P_MARSHAL_H
3

    
4
typedef struct V9fsString
5
{
6
    uint16_t size;
7
    char *data;
8
} V9fsString;
9

    
10
typedef struct V9fsQID
11
{
12
    int8_t type;
13
    int32_t version;
14
    int64_t path;
15
} V9fsQID;
16

    
17
typedef struct V9fsStat
18
{
19
    int16_t size;
20
    int16_t type;
21
    int32_t dev;
22
    V9fsQID qid;
23
    int32_t mode;
24
    int32_t atime;
25
    int32_t mtime;
26
    int64_t length;
27
    V9fsString name;
28
    V9fsString uid;
29
    V9fsString gid;
30
    V9fsString muid;
31
    /* 9p2000.u */
32
    V9fsString extension;
33
   int32_t n_uid;
34
    int32_t n_gid;
35
    int32_t n_muid;
36
} V9fsStat;
37

    
38
typedef struct V9fsIattr
39
{
40
    int32_t valid;
41
    int32_t mode;
42
    int32_t uid;
43
    int32_t gid;
44
    int64_t size;
45
    int64_t atime_sec;
46
    int64_t atime_nsec;
47
    int64_t mtime_sec;
48
    int64_t mtime_nsec;
49
} V9fsIattr;
50

    
51
typedef struct V9fsStatDotl {
52
    uint64_t st_result_mask;
53
    V9fsQID qid;
54
    uint32_t st_mode;
55
    uint32_t st_uid;
56
    uint32_t st_gid;
57
    uint64_t st_nlink;
58
    uint64_t st_rdev;
59
    uint64_t st_size;
60
    uint64_t st_blksize;
61
    uint64_t st_blocks;
62
    uint64_t st_atime_sec;
63
    uint64_t st_atime_nsec;
64
    uint64_t st_mtime_sec;
65
    uint64_t st_mtime_nsec;
66
    uint64_t st_ctime_sec;
67
    uint64_t st_ctime_nsec;
68
    uint64_t st_btime_sec;
69
    uint64_t st_btime_nsec;
70
    uint64_t st_gen;
71
    uint64_t st_data_version;
72
} V9fsStatDotl;
73

    
74
static inline void v9fs_string_init(V9fsString *str)
75
{
76
    str->data = NULL;
77
    str->size = 0;
78
}
79
extern void v9fs_string_free(V9fsString *str);
80
extern void v9fs_string_null(V9fsString *str);
81
extern void v9fs_string_sprintf(V9fsString *str, const char *fmt, ...);
82
extern void v9fs_string_copy(V9fsString *lhs, V9fsString *rhs);
83

    
84
ssize_t v9fs_pack(struct iovec *in_sg, int in_num, size_t offset,
85
                  const void *src, size_t size);
86
ssize_t v9fs_unmarshal(struct iovec *out_sg, int out_num, size_t offset,
87
                       int bswap, const char *fmt, ...);
88
ssize_t v9fs_marshal(struct iovec *in_sg, int in_num, size_t offset,
89
                     int bswap, const char *fmt, ...);
90
#endif