graphene-sgx.h 884 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef _X86_GSGX_USER_H
  2. #define _X86_GSGX_USER_H
  3. #include <linux/ioctl.h>
  4. #include <linux/stddef.h>
  5. #include <linux/types.h>
  6. #define GSGX_FILE "/dev/gsgx"
  7. #define GSGX_MINOR MISC_DYNAMIC_MINOR
  8. #define GSGX_IOCTL_ENCLAVE_CREATE _IOWR('p', 0x01, struct gsgx_enclave_create)
  9. #define GSGX_IOCTL_ENCLAVE_ADD_PAGES _IOW('p', 0x02, struct gsgx_enclave_add_pages)
  10. #define GSGX_IOCTL_ENCLAVE_INIT _IOW('p', 0x03, struct gsgx_enclave_init)
  11. #define GSGX_ENCLAVE_CREATE_NO_ADDR ((unsigned long) -1)
  12. struct gsgx_enclave_create {
  13. uint64_t src;
  14. };
  15. #define GSGX_ENCLAVE_ADD_PAGES_SKIP_EEXTEND 0x1
  16. #define GSGX_ENCLAVE_ADD_PAGES_REPEAT_SRC 0x2
  17. struct gsgx_enclave_add_pages {
  18. uint64_t flags;
  19. uint64_t addr;
  20. uint64_t user_addr;
  21. uint64_t size;
  22. uint64_t secinfo;
  23. };
  24. struct gsgx_enclave_init {
  25. uint64_t addr;
  26. uint64_t sigstruct;
  27. uint64_t einittoken;
  28. };
  29. #endif /* _X86_GSGX_USER_H */