WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: RE: Re: RE: [Xen-devel] where is the location of definitionof"do_xen

To: <fanghaifeng@xxxxxxxxxx>
Subject: RE: RE: Re: RE: [Xen-devel] where is the location of definitionof"do_xen_version"?
From: "Shan, Haitao" <haitao.shan@xxxxxxxxx>
Date: Sat, 8 Mar 2008 12:01:55 +0800
Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Fri, 07 Mar 2008 20:05:03 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <200803081101310311830@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <200803071745311567155@xxxxxxxxxx>, <823A93EED437D048963A3697DB0E35DE0129BF3D@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>, <200803071849089534309@xxxxxxxxxx>, <200803071849318432359@xxxxxxxxxx>, <823A93EED437D048963A3697DB0E35DE0129BF5F@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <200803081101310311830@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AciAyOJFTu1YrWnlSJStIIbOZZXYfwAB4rEg
Thread-topic: RE: Re: RE: [Xen-devel] where is the location of definitionof"do_xen_version"?

You can see include/public/arch-x86/xen.h

/* Structural guest handles introduced in 0x00030201. */

#if __XEN_INTERFACE_VERSION__ >= 0x00030201

#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \

    typedef struct { type *p; } __guest_handle_ ## name

#else

#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \

    typedef type * __guest_handle_ ## name

#endif

 

#define __DEFINE_XEN_GUEST_HANDLE(name, type) \

    ___DEFINE_XEN_GUEST_HANDLE(name, type);   \

    ___DEFINE_XEN_GUEST_HANDLE(const_##name, const type)

#define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)

#define __XEN_GUEST_HANDLE(name)        __guest_handle_ ## name

#define XEN_GUEST_HANDLE(name)          __XEN_GUEST_HANDLE(name)

#define set_xen_guest_handle(hnd, val)  do { (hnd).p = val; } while (0)

#ifdef __XEN_TOOLS__

#define get_xen_guest_handle(val, hnd)  do { val = (hnd).p; } while (0)

#endif

 

But I do not know why they are in these forms. Maybe by doing this, compiler can do some sort of type checking during compiling to avoid unintended programming errors?  I think some big people in the maillist can answer. J

 

Best Regards

Shan Haitao

 


From: 房海峰 [mailto:fanghaifeng@xxxxxxxxxx]
Sent: 2008
38 11:02
To: Shan, Haitao
Cc: xen-devel
Subject: Re: RE: Re: RE: [Xen-devel] where is the location of definitionof"do_xen_version"?

 

thank you very much for your replying!

 

and can you tell why xen do it in this way?

 

and what is the "__guest_handle_ " ?

 

thanks again.

 

2008-03-08


房海峰


发件人: Shan, Haitao

发送时间: 2008-03-07  20:54:54

收件人: fanghaifeng@xxxxxxxxxx; xen-devel

抄送:

主题: RE: Re: RE: [Xen-devel] where is the location of definitionof"do_xen_version"?

Xen/common/kernel.c

#define DO(fn) long do_##fn

 

DO(xen_version) )(int cmd, XEN_GUEST_HANDLE(void) arg)

 


From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of 房海峰
Sent: 2008
37 18:50
To: xen-devel
Subject: Fw: Re: RE: [Xen-devel] where is the location of definitionof"do_xen_version"?

 

 

 

2008-03-07


房海峰


发件人: 房海峰

发送时间: 2008-03-07 18:49:08

收件人: Zheng, Shaohui

抄送:

主题: Re: RE: [Xen-devel] where is the location of definition of"do_xen_version"?

 

thanks for you!

but the function you found is running in the user-space.

what i need is the function as a hypercall.

 

 

2008-03-07


房海峰


发件人: Zheng, Shaohui

发送时间: 2008-03-07  17:46:52

收件人: fanghaifeng@xxxxxxxxxx; xen-devel

抄送:

主题: RE: [Xen-devel] where is the location of definition of"do_xen_version"?

tools/libxc/xc_private.h

the start line  is 88.

88 static inline int do_xen_version(int xc_handle, int cmd, void *dest)

 89 {

 90     DECLARE_HYPERCALL;

 91

 92     hypercall.op     = __HYPERVISOR_xen_version;

 93     hypercall.arg[0] = (unsigned long) cmd;

 94     hypercall.arg[1] = (unsigned long) dest;

 95

 96     return do_xen_hypercall(xc_handle, &hypercall);

 97 }

Ctags can help you find the definition a function.

Just run the following commands.

cd xen-src-dir

ctags -R

vim -t do_xen_version

then you got it.

--

Best Regards

Shaohui

________________________________________

From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of 房海峰

Sent: 200837 17:46

To: xen-devel

Subject: [Xen-devel] where is the location of definition of "do_xen_version"?

hi, my friends:

 

Currently, i am studying the way of hypercall's implementation.

i have already known the flow of hypercall's execuation, and i decided to add a new hypercall into the Xen.

first, i want to know the detail of one hypercall function, for example, "do_xen_version", but i can not find

the location of definition of "do_xen_version". who can help me?

 

i have get some resualts as follows:

 

[root@vt-0 xen-3.1.0-src]# find ./ -name "*.*" | xargs grep "do_xen_version"

./xen/include/xen/hypercall.h:do_xen_version(

Binary file ./xen/common/built_in.o matches

Binary file ./xen/common/kernel.o matches

./xen/arch/x86/x86_32/entry.S:        .long do_xen_version

./xen/arch/x86/x86_32/entry.S:        .byte 2 /* do_xen_version       */

Binary file ./xen/arch/x86/x86_32/built_in.o matches

Binary file ./xen/arch/x86/x86_32/entry.o matches

./xen/arch/x86/x86_64/entry.S:        .quad do_xen_version

./xen/arch/x86/x86_64/entry.S:        .byte 2 /* do_xen_version       */

Binary file ./xen/arch/x86/built_in.o matches

Binary file ./xen/arch/x86/hvm/hvm.o matches

Binary file ./xen/arch/x86/hvm/built_in.o matches

./xen/arch/ia64/linux-xen/entry.S:      data8 do_xen_version

./xen/arch/powerpc/powerpc64/hypercall_table.S:        .quad do_xen_version

Binary file ./dist/install/boot/xen-syms-3.1.0 matches

./tools/libxc/xc_private.c:    rc = do_xen_version(xc_handle, cmd, arg);

./tools/libxc/xc_private.h:static inline int do_xen_version(int xc_handle, int cmd, void *dest)

 

but the "do_xen_version" is not in those above.

 

thanks a lots.

 

www.ict.ac.cn

2008-03-07 

________________________________________

房海峰 

_______________________________________________

Xen-devel mailing list

Xen-devel@xxxxxxxxxxxxxxxxxxx

http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel