Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 93166
b: refs/heads/master
c: 87e27cf
h: refs/heads/master
v: v3
  • Loading branch information
Isaku Yamahata authored and Ingo Molnar committed Apr 24, 2008
1 parent 84a06ce commit 9c75229
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2eb6d5eb48fd6aedf5787b30e5c41693e8c91fa3
refs/heads/master: 87e27cf6288c6bf089ed34a72213d9ad16e82d84
2 changes: 1 addition & 1 deletion trunk/drivers/xen/grant-table.c
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ static int gnttab_map(unsigned int start_idx, unsigned int end_idx)

setup.dom = DOMID_SELF;
setup.nr_frames = nr_gframes;
setup.frame_list = frames;
set_xen_guest_handle(setup.frame_list, frames);

rc = HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1);
if (rc == -ENOSYS) {
Expand Down
24 changes: 24 additions & 0 deletions trunk/include/asm-x86/xen/interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,30 @@
#define DEFINE_GUEST_HANDLE(name) __DEFINE_GUEST_HANDLE(name, name)
#define GUEST_HANDLE(name) __guest_handle_ ## name

#ifdef __XEN__
#if defined(__i386__)
#define set_xen_guest_handle(hnd, val) \
do { \
if (sizeof(hnd) == 8) \
*(uint64_t *)&(hnd) = 0; \
(hnd).p = val; \
} while (0)
#elif defined(__x86_64__)
#define set_xen_guest_handle(hnd, val) do { (hnd).p = val; } while (0)
#endif
#else
#if defined(__i386__)
#define set_xen_guest_handle(hnd, val) \
do { \
if (sizeof(hnd) == 8) \
*(uint64_t *)&(hnd) = 0; \
(hnd) = val; \
} while (0)
#elif defined(__x86_64__)
#define set_xen_guest_handle(hnd, val) do { (hnd) = val; } while (0)
#endif
#endif

#ifndef __ASSEMBLY__
/* Guest handles for primitive C types. */
__DEFINE_GUEST_HANDLE(uchar, unsigned char);
Expand Down
11 changes: 8 additions & 3 deletions trunk/include/xen/interface/grant_table.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ struct gnttab_map_grant_ref {
grant_handle_t handle;
uint64_t dev_bus_addr;
};
DEFINE_GUEST_HANDLE_STRUCT(gnttab_map_grant_ref);

/*
* GNTTABOP_unmap_grant_ref: Destroy one or more grant-reference mappings
Expand All @@ -206,6 +207,7 @@ struct gnttab_unmap_grant_ref {
/* OUT parameters. */
int16_t status; /* GNTST_* */
};
DEFINE_GUEST_HANDLE_STRUCT(gnttab_unmap_grant_ref);

/*
* GNTTABOP_setup_table: Set up a grant table for <dom> comprising at least
Expand All @@ -223,8 +225,9 @@ struct gnttab_setup_table {
uint32_t nr_frames;
/* OUT parameters. */
int16_t status; /* GNTST_* */
ulong *frame_list;
GUEST_HANDLE(ulong) frame_list;
};
DEFINE_GUEST_HANDLE_STRUCT(gnttab_setup_table);

/*
* GNTTABOP_dump_table: Dump the contents of the grant table to the
Expand All @@ -237,6 +240,7 @@ struct gnttab_dump_table {
/* OUT parameters. */
int16_t status; /* GNTST_* */
};
DEFINE_GUEST_HANDLE_STRUCT(gnttab_dump_table);

/*
* GNTTABOP_transfer_grant_ref: Transfer <frame> to a foreign domain. The
Expand All @@ -255,7 +259,7 @@ struct gnttab_transfer {
/* OUT parameters. */
int16_t status;
};

DEFINE_GUEST_HANDLE_STRUCT(gnttab_transfer);

/*
* GNTTABOP_copy: Hypervisor based copy
Expand Down Expand Up @@ -296,6 +300,7 @@ struct gnttab_copy {
/* OUT parameters. */
int16_t status;
};
DEFINE_GUEST_HANDLE_STRUCT(gnttab_copy);

/*
* GNTTABOP_query_size: Query the current and maximum sizes of the shared
Expand All @@ -313,7 +318,7 @@ struct gnttab_query_size {
uint32_t max_nr_frames;
int16_t status; /* GNTST_* */
};

DEFINE_GUEST_HANDLE_STRUCT(gnttab_query_size);

/*
* Bitfield values for update_pin_status.flags.
Expand Down

0 comments on commit 9c75229

Please sign in to comment.