⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grant_table.h

📁 xen 3.2.2 源码
💻 H
📖 第 1 页 / 共 2 页
字号:
    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 + -