1*2a6a4076SMarkus Armbruster #ifndef QEMU_9P_MARSHAL_H 2*2a6a4076SMarkus Armbruster #define QEMU_9P_MARSHAL_H 3829dd286SWei Liu 4829dd286SWei Liu typedef struct V9fsString 5829dd286SWei Liu { 6829dd286SWei Liu uint16_t size; 7829dd286SWei Liu char *data; 8829dd286SWei Liu } V9fsString; 9829dd286SWei Liu 10829dd286SWei Liu typedef struct V9fsQID 11829dd286SWei Liu { 12829dd286SWei Liu int8_t type; 13829dd286SWei Liu int32_t version; 14829dd286SWei Liu int64_t path; 15829dd286SWei Liu } V9fsQID; 16829dd286SWei Liu 17829dd286SWei Liu typedef struct V9fsStat 18829dd286SWei Liu { 19829dd286SWei Liu int16_t size; 20829dd286SWei Liu int16_t type; 21829dd286SWei Liu int32_t dev; 22829dd286SWei Liu V9fsQID qid; 23829dd286SWei Liu int32_t mode; 24829dd286SWei Liu int32_t atime; 25829dd286SWei Liu int32_t mtime; 26829dd286SWei Liu int64_t length; 27829dd286SWei Liu V9fsString name; 28829dd286SWei Liu V9fsString uid; 29829dd286SWei Liu V9fsString gid; 30829dd286SWei Liu V9fsString muid; 31829dd286SWei Liu /* 9p2000.u */ 32829dd286SWei Liu V9fsString extension; 33829dd286SWei Liu int32_t n_uid; 34829dd286SWei Liu int32_t n_gid; 35829dd286SWei Liu int32_t n_muid; 36829dd286SWei Liu } V9fsStat; 37829dd286SWei Liu 38829dd286SWei Liu typedef struct V9fsIattr 39829dd286SWei Liu { 40829dd286SWei Liu int32_t valid; 41829dd286SWei Liu int32_t mode; 42829dd286SWei Liu int32_t uid; 43829dd286SWei Liu int32_t gid; 44829dd286SWei Liu int64_t size; 45829dd286SWei Liu int64_t atime_sec; 46829dd286SWei Liu int64_t atime_nsec; 47829dd286SWei Liu int64_t mtime_sec; 48829dd286SWei Liu int64_t mtime_nsec; 49829dd286SWei Liu } V9fsIattr; 50829dd286SWei Liu 51829dd286SWei Liu typedef struct V9fsStatDotl { 52829dd286SWei Liu uint64_t st_result_mask; 53829dd286SWei Liu V9fsQID qid; 54829dd286SWei Liu uint32_t st_mode; 55829dd286SWei Liu uint32_t st_uid; 56829dd286SWei Liu uint32_t st_gid; 57829dd286SWei Liu uint64_t st_nlink; 58829dd286SWei Liu uint64_t st_rdev; 59829dd286SWei Liu uint64_t st_size; 60829dd286SWei Liu uint64_t st_blksize; 61829dd286SWei Liu uint64_t st_blocks; 62829dd286SWei Liu uint64_t st_atime_sec; 63829dd286SWei Liu uint64_t st_atime_nsec; 64829dd286SWei Liu uint64_t st_mtime_sec; 65829dd286SWei Liu uint64_t st_mtime_nsec; 66829dd286SWei Liu uint64_t st_ctime_sec; 67829dd286SWei Liu uint64_t st_ctime_nsec; 68829dd286SWei Liu uint64_t st_btime_sec; 69829dd286SWei Liu uint64_t st_btime_nsec; 70829dd286SWei Liu uint64_t st_gen; 71829dd286SWei Liu uint64_t st_data_version; 72829dd286SWei Liu } V9fsStatDotl; 73829dd286SWei Liu 74829dd286SWei Liu static inline void v9fs_string_init(V9fsString *str) 75829dd286SWei Liu { 76829dd286SWei Liu str->data = NULL; 77829dd286SWei Liu str->size = 0; 78829dd286SWei Liu } 79829dd286SWei Liu extern void v9fs_string_free(V9fsString *str); 80829dd286SWei Liu extern void v9fs_string_null(V9fsString *str); 81829dd286SWei Liu extern void v9fs_string_sprintf(V9fsString *str, const char *fmt, ...); 82829dd286SWei Liu extern void v9fs_string_copy(V9fsString *lhs, V9fsString *rhs); 83829dd286SWei Liu 84829dd286SWei Liu #endif 85