hab_ioctl.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
  2. /*
  3. * Copyright (c) 2016-2018, 2021, The Linux Foundation. All rights reserved.
  4. * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  5. */
  6. #ifndef _HAB_IOCTL_H
  7. #define _HAB_IOCTL_H
  8. #include <linux/types.h>
  9. struct hab_send {
  10. __u64 data;
  11. __s32 vcid;
  12. __u32 sizebytes;
  13. __u32 flags;
  14. };
  15. struct hab_recv {
  16. __u64 data;
  17. __s32 vcid;
  18. __u32 sizebytes;
  19. __u32 timeout;
  20. __u32 flags;
  21. };
  22. struct hab_open {
  23. __s32 vcid;
  24. __u32 mmid;
  25. __u32 timeout;
  26. __u32 flags;
  27. };
  28. struct hab_close {
  29. __s32 vcid;
  30. __u32 flags;
  31. };
  32. struct hab_export {
  33. __u64 buffer;
  34. __s32 vcid;
  35. __u32 sizebytes;
  36. __u32 exportid;
  37. __u32 flags;
  38. };
  39. struct hab_import {
  40. __u64 index;
  41. __u64 kva;
  42. __s32 vcid;
  43. __u32 sizebytes;
  44. __u32 exportid;
  45. __u32 flags;
  46. };
  47. struct hab_unexport {
  48. __s32 vcid;
  49. __u32 exportid;
  50. __u32 flags;
  51. };
  52. struct hab_unimport {
  53. __s32 vcid;
  54. __u32 exportid;
  55. __u64 kva;
  56. __u32 flags;
  57. };
  58. struct hab_info {
  59. __s32 vcid;
  60. __u64 ids; /* high part remote; low part local */
  61. __u64 names;
  62. __u32 namesize; /* single name length */
  63. __u32 flags;
  64. };
  65. struct vhost_hab_config {
  66. __u8 vm_name[32];
  67. };
  68. #define HAB_IOC_TYPE 0x0A
  69. #define IOCTL_HAB_SEND \
  70. _IOW(HAB_IOC_TYPE, 0x2, struct hab_send)
  71. #define IOCTL_HAB_RECV \
  72. _IOWR(HAB_IOC_TYPE, 0x3, struct hab_recv)
  73. #define IOCTL_HAB_VC_OPEN \
  74. _IOWR(HAB_IOC_TYPE, 0x4, struct hab_open)
  75. #define IOCTL_HAB_VC_CLOSE \
  76. _IOW(HAB_IOC_TYPE, 0x5, struct hab_close)
  77. #define IOCTL_HAB_VC_EXPORT \
  78. _IOWR(HAB_IOC_TYPE, 0x6, struct hab_export)
  79. #define IOCTL_HAB_VC_IMPORT \
  80. _IOWR(HAB_IOC_TYPE, 0x7, struct hab_import)
  81. #define IOCTL_HAB_VC_UNEXPORT \
  82. _IOW(HAB_IOC_TYPE, 0x8, struct hab_unexport)
  83. #define IOCTL_HAB_VC_UNIMPORT \
  84. _IOW(HAB_IOC_TYPE, 0x9, struct hab_unimport)
  85. #define IOCTL_HAB_VC_QUERY \
  86. _IOWR(HAB_IOC_TYPE, 0xA, struct hab_info)
  87. #define HAB_MMID_MAP_NODE(mmid) ( \
  88. {\
  89. const char *__mptr = NULL;\
  90. int __mmid = (mmid) / 100;\
  91. switch (__mmid) {\
  92. case 0:\
  93. __mptr = "hab";\
  94. break;\
  95. case 1:\
  96. __mptr = "hab-aud";\
  97. break;\
  98. case 2:\
  99. __mptr = "hab-cam";\
  100. break;\
  101. case 3:\
  102. __mptr = "hab-disp";\
  103. break;\
  104. case 4:\
  105. __mptr = "hab-ogles";\
  106. break;\
  107. case 5:\
  108. __mptr = "hab-vid";\
  109. break;\
  110. case 6:\
  111. __mptr = "hab-misc";\
  112. break;\
  113. case 7:\
  114. __mptr = "hab-qcpe";\
  115. break;\
  116. case 8:\
  117. __mptr = "hab-clock";\
  118. break;\
  119. case 9:\
  120. __mptr = "hab-fde";\
  121. break;\
  122. case 10:\
  123. __mptr = "hab-bufferq";\
  124. break;\
  125. case 11:\
  126. __mptr = "hab-network";\
  127. break;\
  128. case 12:\
  129. __mptr = "hab-hsi2s";\
  130. break;\
  131. case 13:\
  132. __mptr = "hab-xvm";\
  133. break;\
  134. case 14:\
  135. __mptr = "hab-vnw";\
  136. break;\
  137. case 15:\
  138. __mptr = "hab-ext";\
  139. break;\
  140. case 16:\
  141. __mptr = "hab-gpce";\
  142. break;\
  143. default:\
  144. __mptr = NULL;\
  145. } \
  146. __mptr;\
  147. } \
  148. )
  149. #endif /* _HAB_IOCTL_H */