📄 grant_table.h
字号:
int16_t status; /* GNTST_* */};typedef struct gnttab_unmap_grant_ref gnttab_unmap_grant_ref_t;DEFINE_XEN_GUEST_HANDLE(gnttab_unmap_grant_ref_t);/* * GNTTABOP_setup_table: Set up a grant table for <dom> comprising at least * <nr_frames> pages. The frame addresses are written to the <frame_list>. * Only <nr_frames> addresses are written, even if the table is larger. * NOTES: * 1. <dom> may be specified as DOMID_SELF. * 2. Only a sufficiently-privileged domain may specify <dom> != DOMID_SELF. * 3. Xen may not support more than a single grant-table page per domain. */#define GNTTABOP_setup_table 2struct gnttab_setup_table { /* IN parameters. */ domid_t dom; uint32_t nr_frames; /* OUT parameters. */ int16_t status; /* GNTST_* */ XEN_GUEST_HANDLE(ulong) frame_list;};typedef struct gnttab_setup_table gnttab_setup_table_t;DEFINE_XEN_GUEST_HANDLE(gnttab_setup_table_t);/* * GNTTABOP_dump_table: Dump the contents of the grant table to the * xen console. Debugging use only. */#define GNTTABOP_dump_table 3struct gnttab_dump_table { /* IN parameters. */ domid_t dom; /* OUT parameters. */ int16_t status; /* GNTST_* */};typedef struct gnttab_dump_table gnttab_dump_table_t;DEFINE_XEN_GUEST_HANDLE(gnttab_dump_table_t);/* * GNTTABOP_transfer_grant_ref: Transfer <frame> to a foreign domain. The * foreign domain has previously registered its interest in the transfer via * <domid, ref>. * * Note that, even if the transfer fails, the specified page no longer belongs * to the calling domain *unless* the error is GNTST_bad_page. */#define GNTTABOP_transfer 4struct gnttab_transfer { /* IN parameters. */ xen_pfn_t mfn; domid_t domid; grant_ref_t ref; /* OUT parameters. */ int16_t status;};typedef struct gnttab_transfer gnttab_transfer_t;DEFINE_XEN_GUEST_HANDLE(gnttab_transfer_t);/* * GNTTABOP_copy: Hypervisor based copy * source and destinations can be eithers MFNs or, for foreign domains, * grant references. the foreign domain has to grant read/write access * in its grant table. * * The flags specify what type source and destinations are (either MFN * or grant reference). * * Note that this can also be used to copy data between two domains * via a third party if the source and destination domains had previously * grant appropriate access to their pages to the third party. * * source_offset specifies an offset in the source frame, dest_offset * the offset in the target frame and len specifies the number of * bytes to be copied. */#define _GNTCOPY_source_gref (0)#define GNTCOPY_source_gref (1<<_GNTCOPY_source_gref)#define _GNTCOPY_dest_gref (1)#define GNTCOPY_dest_gref (1<<_GNTCOPY_dest_gref)#define GNTTABOP_copy 5typedef struct gnttab_copy { /* IN parameters. */ struct { union { grant_ref_t ref; xen_pfn_t gmfn; } u; domid_t domid; uint16_t offset; } source, dest; uint16_t len; uint16_t flags; /* GNTCOPY_* */ /* OUT parameters. */ int16_t status;} gnttab_copy_t;DEFINE_XEN_GUEST_HANDLE(gnttab_copy_t);/* * GNTTABOP_query_size: Query the current and maximum sizes of the shared * grant table. * NOTES: * 1. <dom> may be specified as DOMID_SELF. * 2. Only a sufficiently-privileged domain may specify <dom> != DOMID_SELF. */#define GNTTABOP_query_size 6struct gnttab_query_size { /* IN parameters. */ domid_t dom; /* OUT parameters. */ uint32_t nr_frames; uint32_t max_nr_frames; int16_t status; /* GNTST_* */};typedef struct gnttab_query_size gnttab_query_size_t;DEFINE_XEN_GUEST_HANDLE(gnttab_query_size_t);/* * GNTTABOP_unmap_and_replace: Destroy one or more grant-reference mappings * tracked by <handle> but atomically replace the page table entry with one * pointing to the machine address under <new_addr>. <new_addr> will be * redirected to the null entry. * NOTES: * 1. The call may fail in an undefined manner if either mapping is not * tracked by <handle>. * 2. After executing a batch of unmaps, it is guaranteed that no stale * mappings will remain in the device or host TLBs. */#define GNTTABOP_unmap_and_replace 7struct gnttab_unmap_and_replace { /* IN parameters. */ uint64_t host_addr; uint64_t new_addr; grant_handle_t handle; /* OUT parameters. */ int16_t status; /* GNTST_* */};typedef struct gnttab_unmap_and_replace gnttab_unmap_and_replace_t;DEFINE_XEN_GUEST_HANDLE(gnttab_unmap_and_replace_t);/* * Bitfield values for update_pin_status.flags. */ /* Map the grant entry for access by I/O devices. */#define _GNTMAP_device_map (0)#define GNTMAP_device_map (1<<_GNTMAP_device_map) /* Map the grant entry for access by host CPUs. */#define _GNTMAP_host_map (1)#define GNTMAP_host_map (1<<_GNTMAP_host_map) /* Accesses to the granted frame will be restricted to read-only access. */#define _GNTMAP_readonly (2)#define GNTMAP_readonly (1<<_GNTMAP_readonly) /* * GNTMAP_host_map subflag: * 0 => The host mapping is usable only by the guest OS. * 1 => The host mapping is usable by guest OS + current application. */#define _GNTMAP_application_map (3)#define GNTMAP_application_map (1<<_GNTMAP_application_map) /* * GNTMAP_contains_pte subflag: * 0 => This map request contains a host virtual address. * 1 => This map request contains the machine addess of the PTE to update. */#define _GNTMAP_contains_pte (4)#define GNTMAP_contains_pte (1<<_GNTMAP_contains_pte)/* * Values for error status returns. All errors are -ve. */#define GNTST_okay (0) /* Normal return. */#define GNTST_general_error (-1) /* General undefined error. */#define GNTST_bad_domain (-2) /* Unrecognsed domain id. */#define GNTST_bad_gntref (-3) /* Unrecognised or inappropriate gntref. */#define GNTST_bad_handle (-4) /* Unrecognised or inappropriate handle. */#define GNTST_bad_virt_addr (-5) /* Inappropriate virtual address to map. */#define GNTST_bad_dev_addr (-6) /* Inappropriate device address to unmap.*/#define GNTST_no_device_space (-7) /* Out of space in I/O MMU. */#define GNTST_permission_denied (-8) /* Not enough privilege for operation. */#define GNTST_bad_page (-9) /* Specified page was invalid for op. */#define GNTST_bad_copy_arg (-10) /* copy arguments cross page boundary. */#define GNTST_address_too_big (-11) /* transfer page address too large. */#define GNTTABOP_error_msgs { \ "okay", \ "undefined error", \ "unrecognised domain id", \ "invalid grant reference", \ "invalid mapping handle", \ "invalid virtual address", \ "invalid device address", \ "no spare translation slot in the I/O MMU", \ "permission denied", \ "bad page", \ "copy arguments cross page boundary", \ "page address size too large" \}#endif /* __XEN_PUBLIC_GRANT_TABLE_H__ *//* * Local variables: * mode: C * c-set-style: "BSD" * c-basic-offset: 4 * tab-width: 4 * indent-tabs-mode: nil * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -