[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Grant tables

Mark Williamson wrote, on the 05/04/2008 23.14:
> Take a look in the Xen Linux tree at the drivers/xen/blkfront/ for some creation of grant references. As Samuel says, searching for grant table functions under drivers/xen/ is going to find you some interesting examples in various places.
I studied the suggested code and I wrote something to test my understanding. It compiles and run fine, but I've got a problem: when I read the value of the shared structure it's not right.

This is the function, contained in a module, that creates the grant:

static void offer_page()
    int code;
    struct foo foo_struct;

    foo_struct.numero = 5;

if ( ( code = gnttab_grant_foreign_access(0, virt_to_mfn(&foo_struct), 0)) == -1) {
        printk(KERN_INFO "grant error\n");

In userspace I use the following code to read the granted page:

void grant(int xcg_handle, int domid)
    struct foo *foo_struct;
    void *buf;
    int i;

buf = xc_gnttab_map_grant_ref(xcg_handle, domid, 851, PROT_READ); // yes, ugly hardcoded value

    if (buf != NULL) {
        foo_struct = (struct foo *) buf;
        printf("numero = %d\n", foo_struct->numero);

I'd expect it to print five, but it always write zero. What am I doing wrong here?

> hope that helps,
> Cheers,
> Mark

È molto più bello sapere qualcosa di tutto, che sapere tutto di una cosa.

Blaise Pascal

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.