graphene-sgx.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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_IOCTL_ENCLAVE_DESTROY _IOW('p', 0x04, struct gsgx_enclave_destroy)
  12. #define GSGX_ENCLAVE_CREATE_NO_ADDR ((unsigned long) -1)
  13. struct gsgx_enclave_create {
  14. void *secs;
  15. unsigned long addr;
  16. };
  17. #define GSGX_ENCLAVE_ADD_PAGES_SKIP_EEXTEND 0x1
  18. #define GSGX_ENCLAVE_ADD_PAGES_REPEAT_SRC 0x2
  19. struct gsgx_enclave_add_pages {
  20. unsigned int flags;
  21. unsigned long addr;
  22. unsigned long user_addr;
  23. unsigned long size;
  24. void *secinfo;
  25. };
  26. struct gsgx_enclave_init {
  27. unsigned long addr;
  28. void *sigstruct;
  29. void *einittoken;
  30. };
  31. struct gsgx_enclave_destroy {
  32. unsigned long addr;
  33. };
  34. #endif /* _X86_GSGX_USER_H */