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

[Xen-devel] Problem with Xen headerfiles



Hi all,
I'm trying to compile this program to map domu's page. But it returns errors that can't find headerfiles!

 gcc -c map_page.c -I/***/xen/xen-4.1.2/xen/include -lxenctrl  -o map_page.o
In file included from /home/ossl5/xen/xen-4.1.2original/xen/include/asm/smp.h:16:0,
                 from /home/ossl5/xen/xen-4.1.2original/xen/include/xen/smp.h:5,
                 from /home/ossl5/xen/xen-4.1.2original/xen/include/xen/sched.h:8,
                 from /usr/include/xenctrl.h:43,
                 from map_page.c:2:
/home/ossl5/xen/xen-4.1.2original/xen/include/asm-x86/mpspec.h:6:25: fatal error: mach_mpspec.h: No such file or directory
compilation terminated.


And as I see this file isn't really located in this directory. I modified the path included, and compile it again. This time returned error about not finding another headerfile and "previous declaration"!

 gcc -I/***/xen/xen-4.1.2original/xen/include -lxenctrl  map_page.c -o map_page.o
In file included from /***/xen/xen-4.1.2original/xen/include/xen/sched.h:9:0,
                 from /usr/include/xenctrl.h:43,
                 from map_page.c:2:
/***/xen/xen-4.1.2original/xen/include/xen/shared.h:13:3: error: conflicting types for ‘shared_info_t’
In file included from /usr/include/xenctrl.h:37:0,
                 from map_page.c:2:
/usr/include/xen/xen.h:537:28: note: previous declaration of ‘shared_info_t’ was here
In file included from /***/xen/xen-4.1.2original/xen/include/xen/sched.h:9:0,
                 from /usr/include/xenctrl.h:43,
                 from map_page.c:2:
/***/xen/xen-4.1.2original/xen/include/xen/shared.h:28:3: error: conflicting types for ‘vcpu_info_t’
In file included from /usr/include/xenctrl.h:37:0,
                 from map_page.c:2:
/usr/include/xen/xen.h:477:26: note: previous declaration of ‘vcpu_info_t’ was here
In file included from /***/xen/xen-4.1.2original/xen/include/xen/hvm/irq.h:28:0,
                 from /***/xen/xen-4.1.2original/xen/include/asm/hvm/irq.h:25,
                 from /***/xen/xen-4.1.2original/xen/include/asm/hvm/vpt.h:32,
                 from /***/xen/xen-4.1.2original/xen/include/asm/hvm/vlapic.h:27,
                 from /***/xen/xen-4.1.2original/xen/include/asm/hvm/vcpu.h:25,
                 from /***/xen/xen-4.1.2original/xen/include/asm/domain.h:6,
                 from /***/xen/xen-4.1.2original/xen/include/xen/domain.h:6,
                 from /***/xen/xen-4.1.2original/xen/include/xen/sched.h:19,
                 from /usr/include/xenctrl.h:43,
                 from map_page.c:2:
/***/xen/xen-4.1.2original/xen/include/asm/irq.h:10:25: fatal error: irq_vectors.h: No such file or directory
compilation terminated.


Am I compiling it in a wrong way that it couldn't find headerfiles?

Here is my program "map_page.c" located in xen directory.

#include <stdio.h>
#include <xenctrl.h>
#include <xs_api.h>
#include <asm-x86/current.h>
#include <xen/sched.h>


typedef unsigned long long guest_word_t;

int main()
{

    vcpu_guest_context_any_t *vcpu_ctx_any;
    int vcpu = 0;
    int ret = 0 ;
    xc_interface *xch = 0;
    char *domid = 0;
    char *buffer;
    guest_word_t virt;




    struct xs_handle *h = xs_daemon_open();
    xch = xc_interface_open(0,0,0);
     if (xc_handle < 0) {
                printf ("error : xc_interface_open");
                exit (-1);
            }

    domid = get_dom_domid (h);
    //typedef struct vcpu *current_vcpu = get_cpu_info()->current_vcpu;
    //vcpu = current_vcpu.vcpu_id;
    vcpu_setcontext (vcpu);
    buffer = (char)map_page(vcpu_ctx_any,vcpu,virt);


    xc_interface_close(xch);
    return(0);
}



static void *map_page(vcpu_guest_context_any_t *ctx, int vcpu, guest_word_t virt)
{
    static unsigned long previous_mfn = 0;
    static void *mapped = NULL;

    unsigned long mfn = xc_translate_foreign_address(xc_handle, domid, vcpu, virt);
    unsigned long offset = virt & ~XC_PAGE_MASK;

    if (mapped && mfn == previous_mfn)
        goto out;

    if (mapped)
        munmap(mapped, XC_PAGE_SIZE);

    previous_mfn = mfn;

    mapped = xc_map_foreign_range(xc_handle, domid, XC_PAGE_SIZE, 0, mfn);

    if (mapped == NULL) {
        fprintf(stderr, "failed to map page.\n");
        exit(-1);
    }

 out:
    return (void *)(mapped + offset);
}




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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