房海峰
2008-Mar-07 09:45 UTC
[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@lists.xensource.com http://lists.xensource.com/xen-devel
Zheng, Shaohui
2008-Mar-07 09:55 UTC
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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@lists.xensource.com http://lists.xensource.com/xen-devel
房海峰
2008-Mar-07 10:49 UTC
Fw: Re: RE: [Xen-devel] where is the location of definition of"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@ncic.ac.cn; 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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@lists.xensource.com http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Daniel Stodden
2008-Mar-07 11:33 UTC
Re: Fw: Re: RE: [Xen-devel] where is the location of definition of"do_xen_version"?
On Fri, 2008-03-07 at 18:49 +0800, 房海峰 wrote: it got obfuscated a little lately DO(xen_version) lately. see common/kernel.c -- Daniel Stodden LRR - Lehrstuhl für Rechnertechnik und Rechnerorganisation Institut für Informatik der TU München D-85748 Garching http://www.lrr.in.tum.de/~stodden mailto:stodden@cs.tum.edu PGP Fingerprint: F5A4 1575 4C56 E26A 0B33 3D80 457E 82AE B0D8 735B _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Shan, Haitao
2008-Mar-07 13:07 UTC
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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@ncic.ac.cn; 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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@lists.xensource.com http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
房海峰
2008-Mar-08 03:01 UTC
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@ncic.ac.cn; 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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@ncic.ac.cn; 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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@lists.xensource.com http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Shan, Haitao
2008-Mar-08 04:01 UTC
RE: 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. :-) Best Regards Shan Haitao ________________________________ From: 房海峰 [mailto:fanghaifeng@ncic.ac.cn] Sent: 2008年3月8日 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@ncic.ac.cn; 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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@ncic.ac.cn; 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@lists.xensource.com [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of 房海峰 Sent: 2008年3月7日 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@lists.xensource.com http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel