diff options
Diffstat (limited to 'fsdev/9p-marshal.h')
-rw-r--r-- | fsdev/9p-marshal.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/fsdev/9p-marshal.h b/fsdev/9p-marshal.h new file mode 100644 index 000000000..f1abbe151 --- /dev/null +++ b/fsdev/9p-marshal.h @@ -0,0 +1,82 @@ +#ifndef QEMU_9P_MARSHAL_H +#define QEMU_9P_MARSHAL_H + +#include "p9array.h" + +typedef struct V9fsString { + uint16_t size; + char *data; +} V9fsString; +P9ARRAY_DECLARE_TYPE(V9fsString); + +typedef struct V9fsQID { + uint8_t type; + uint32_t version; + uint64_t path; +} V9fsQID; + +typedef struct V9fsStat { + int16_t size; + int16_t type; + int32_t dev; + V9fsQID qid; + int32_t mode; + int32_t atime; + int32_t mtime; + int64_t length; + V9fsString name; + V9fsString uid; + V9fsString gid; + V9fsString muid; + /* 9p2000.u */ + V9fsString extension; + int32_t n_uid; + int32_t n_gid; + int32_t n_muid; +} V9fsStat; + +typedef struct V9fsIattr { + int32_t valid; + int32_t mode; + int32_t uid; + int32_t gid; + int64_t size; + int64_t atime_sec; + int64_t atime_nsec; + int64_t mtime_sec; + int64_t mtime_nsec; +} V9fsIattr; + +typedef struct V9fsStatDotl { + uint64_t st_result_mask; + V9fsQID qid; + uint32_t st_mode; + uint32_t st_uid; + uint32_t st_gid; + uint64_t st_nlink; + uint64_t st_rdev; + uint64_t st_size; + uint64_t st_blksize; + uint64_t st_blocks; + uint64_t st_atime_sec; + uint64_t st_atime_nsec; + uint64_t st_mtime_sec; + uint64_t st_mtime_nsec; + uint64_t st_ctime_sec; + uint64_t st_ctime_nsec; + uint64_t st_btime_sec; + uint64_t st_btime_nsec; + uint64_t st_gen; + uint64_t st_data_version; +} V9fsStatDotl; + +static inline void v9fs_string_init(V9fsString *str) +{ + str->data = NULL; + str->size = 0; +} +void v9fs_string_free(V9fsString *str); +void v9fs_string_sprintf(V9fsString *str, const char *fmt, ...); +void v9fs_string_copy(V9fsString *lhs, V9fsString *rhs); + +#endif |