|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Problem with Xen headerfiles
As you're writing a user space program you should only include public
headers installed in your system. Including internal header files of Xen
will not work.
Wei.
On Tue, Jul 02, 2013 at 12:09:41PM +0430, Mina Jafari wrote:
> 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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |