房海峰
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