aboutsummaryrefslogtreecommitdiffstats
path: root/fsdev/9p-marshal.h
diff options
context:
space:
mode:
Diffstat (limited to 'fsdev/9p-marshal.h')
-rw-r--r--fsdev/9p-marshal.h82
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