2
0

9p-marshal.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef QEMU_9P_MARSHAL_H
  2. #define QEMU_9P_MARSHAL_H
  3. #include "p9array.h"
  4. typedef struct V9fsString {
  5. uint16_t size;
  6. char *data;
  7. } V9fsString;
  8. P9ARRAY_DECLARE_TYPE(V9fsString);
  9. typedef struct V9fsQID {
  10. uint8_t type;
  11. uint32_t version;
  12. uint64_t path;
  13. } V9fsQID;
  14. typedef struct V9fsStat {
  15. int16_t size;
  16. int16_t type;
  17. int32_t dev;
  18. V9fsQID qid;
  19. int32_t mode;
  20. int32_t atime;
  21. int32_t mtime;
  22. int64_t length;
  23. V9fsString name;
  24. V9fsString uid;
  25. V9fsString gid;
  26. V9fsString muid;
  27. /* 9p2000.u */
  28. V9fsString extension;
  29. int32_t n_uid;
  30. int32_t n_gid;
  31. int32_t n_muid;
  32. } V9fsStat;
  33. typedef struct V9fsIattr {
  34. int32_t valid;
  35. int32_t mode;
  36. int32_t uid;
  37. int32_t gid;
  38. int64_t size;
  39. int64_t atime_sec;
  40. int64_t atime_nsec;
  41. int64_t mtime_sec;
  42. int64_t mtime_nsec;
  43. } V9fsIattr;
  44. typedef struct V9fsStatDotl {
  45. uint64_t st_result_mask;
  46. V9fsQID qid;
  47. uint32_t st_mode;
  48. uint32_t st_uid;
  49. uint32_t st_gid;
  50. uint64_t st_nlink;
  51. uint64_t st_rdev;
  52. uint64_t st_size;
  53. uint64_t st_blksize;
  54. uint64_t st_blocks;
  55. uint64_t st_atime_sec;
  56. uint64_t st_atime_nsec;
  57. uint64_t st_mtime_sec;
  58. uint64_t st_mtime_nsec;
  59. uint64_t st_ctime_sec;
  60. uint64_t st_ctime_nsec;
  61. uint64_t st_btime_sec;
  62. uint64_t st_btime_nsec;
  63. uint64_t st_gen;
  64. uint64_t st_data_version;
  65. } V9fsStatDotl;
  66. static inline void v9fs_string_init(V9fsString *str)
  67. {
  68. str->data = NULL;
  69. str->size = 0;
  70. }
  71. void v9fs_string_free(V9fsString *str);
  72. void v9fs_string_sprintf(V9fsString *str, const char *fmt, ...);
  73. void v9fs_string_copy(V9fsString *lhs, V9fsString *rhs);
  74. #endif