hi, my friends: recently, i am reading the source codes about hypercall. First, i study a simple hypercall, for example, the "do_xen_version". In "xen-3.1.0-src\xen\common\kernel.c", the definition of "do_xen_version" is: DO(xen_version) (int cmd, XEN_GUEST_HANDLE(void) arg) { .... } according to the " #define DO(fn) long do_##fn ", the expanded form is "do_xen_version (...)". then, in the "xen-3.1.0-src\xen\arch\x86\x86_32\entry.S", there is an item in the "hypercall_table", like this: ENTRY(hypercall_table) .... .long do_xen_version .... as we all known, for a symbol reference of function there need to be a header file contained, or a "global" declaration. By searching the header files, i found the file, "xen-3.1.0-src\xen\include\xen\hypercall.h" that declared the function in a form as follows: extern long do_xen_version( int cmd, XEN_GUEST_HANDLE(void) arg); But, i can not find where the file "hypercall.h" is contained in order to link it with the reference of "do_xen_version" in the "entry.S" So, please help me, or give me some advice. thanks advance. 2008-03-18 房海峰 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
hi, my friends: recently, i am reading the source codes about hypercall. First, i study a simple hypercall, for example, the "do_xen_version". In "xen-3.1.0-src\xen\common\kernel.c", the definition of "do_xen_version" is: DO(xen_version) (int cmd, XEN_GUEST_HANDLE(void) arg) { .... } according to the " #define DO(fn) long do_##fn ", the expanded form is "do_xen_version (...)". then, in the "xen-3.1.0-src\xen\arch\x86\x86_32\entry.S", there is an item in the "hypercall_table", like this: ENTRY(hypercall_table) .... .long do_xen_version .... as we all known, for a symbol reference of function there need to be a header file contained, or a "global" declaration. By searching the header files, i found the file, "xen-3.1.0-src\xen\include\xen\hypercall.h" that declared the function in a form as follows: extern long do_xen_version( int cmd, XEN_GUEST_HANDLE(void) arg); But, i can not find where the file "hypercall.h" is contained in order to link it with the reference of "do_xen_version" in the "entry.S" So, please help me, or give me some advice. thanks advance. 2008-03-18 房海峰 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
hi, my friends: recently, i am reading the source codes about hypercall. First, i study a simple hypercall, for example, the "do_xen_version". In "xen-3.1.0-src\xen\common\kernel.c", the definition of "do_xen_version" is: DO(xen_version) (int cmd, XEN_GUEST_HANDLE(void) arg) { .... } according to the " #define DO(fn) long do_##fn ", the expanded form is "do_xen_version (...)". then, in the "xen-3.1.0-src\xen\arch\x86\x86_32\entry.S", there is an item in the "hypercall_table", like this: ENTRY(hypercall_table) .... .long do_xen_version .... as we all known, for a symbol reference of function there need to be a header file contained, or a "global" declaration. By searching the header files, i found the file, "xen-3.1.0-src\xen\include\xen\hypercall.h" that declared the function in a form as follows: extern long do_xen_version( int cmd, XEN_GUEST_HANDLE(void) arg); But, i can not find where the file "hypercall.h" is contained in order to link it with the reference of "do_xen_version" in the "entry.S" So, please help me, or give me some advice. thanks advance. 2008-03-18 房海峰 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Zang Hongyong
2008-Mar-18 06:19 UTC
Re: [Xen-devel] A question related with symbol reference?
anyone can help? I'm confused too. ======== 2008-03-18 14:04:50 您在来信中写道: ======= hi, my friends: recently, i am reading the source codes about hypercall. First, i study a simple hypercall, for example, the "do_xen_version". In "xen-3.1.0-src\xen\common\kernel.c", the definition of "do_xen_version" is: DO(xen_version) (int cmd, XEN_GUEST_HANDLE(void) arg) { .... } according to the " #define DO(fn) long do_##fn ", the expanded form is "do_xen_version (...)". then, in the "xen-3.1.0-src\xen\arch\x86\x86_32\entry.S", there is an item in the "hypercall_table", like this: ENTRY(hypercall_table) .... .long do_xen_version .... as we all known, for a symbol reference of function there need to be a header file contained, or a "global" declaration. By searching the header files, i found the file, "xen-3.1.0-src\xen\include\xen\hypercall.h" that declared the function in a form as follows: extern long do_xen_version( int cmd, XEN_GUEST_HANDLE(void) arg); But, i can not find where the file "hypercall.h" is contained in order to link it with the reference of "do_xen_version" in the "entry.S" So, please help me, or give me some advice. thanks advance. 2008-03-18 房海峰 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2008-Mar-18 08:31 UTC
Re: [Xen-devel] A question related with symbol reference?
Assembly code does not need a function prototype or indeed any label declaration to be able to reference that function/label. -- Keir On 18/3/08 06:19, "Zang Hongyong" <zanghongyong@ncic.ac.cn> wrote:> anyone can help? > I''m confused too. > > ======== 2008-03-18 14:04:50 您在来信中写道: =======> > hi, my friends: > > recently, i am reading the source codes about hypercall. > > First, i study a simple hypercall, for example, the "do_xen_version". > > In "xen-3.1.0-src\xen\common\kernel.c", the definition of "do_xen_version" is: > > DO(xen_version) (int cmd, XEN_GUEST_HANDLE(void) arg) > { > .... > } > > according to the " #define DO(fn) long do_##fn ", the expanded form is > "do_xen_version (...)". > > then, in the "xen-3.1.0-src\xen\arch\x86\x86_32\entry.S", there is an item in > the "hypercall_table", like this: > > ENTRY(hypercall_table) > .... > .long do_xen_version > .... > > > as we all known, for a symbol reference of function there need to be a header > file contained, or a "global" declaration. > > By searching the header files, i found the file, > "xen-3.1.0-src\xen\include\xen\hypercall.h" that declared the function in a > form as follows: > > extern long > do_xen_version( > int cmd, > XEN_GUEST_HANDLE(void) arg); > > But, i can not find where the file "hypercall.h" is contained in order to link > it with the reference of "do_xen_version" in the "entry.S" > > So, please help me, or give me some advice. > > thanks advance. > > 2008-03-18 > > > > 房海峰 > > > _______________________________________________ > 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-18 08:49 UTC
Fw: Re: Re: [Xen-devel] A question related with symbol reference?
2008-03-18 房海峰 发件人: 房海峰 发送时间: 2008-03-18 16:49:06 收件人: Keir Fraser 抄送: 主题: Re: Re: [Xen-devel] A question related with symbol reference? I have been programmed assembly code with "nasm" language. in "nasm", when you refere to a function/label that come from another file, you should make a declaration of the function with "extern" keywords in advance. i don't know whether "at&t" assembly language is different with "nasm"? thanks again! 2008-03-18 房海峰 发件人: Keir Fraser 发送时间: 2008-03-18 16:12:41 收件人: Zang Hongyong; fanghaifeng@ncic.ac.cn; xen-devel 抄送: 主题: Re: [Xen-devel] A question related with symbol reference? Assembly code does not need a function prototype or indeed any label declaration to be able to reference that function/label. -- Keir On 18/3/08 06:19, "Zang Hongyong" <zanghongyong@ncic.ac.cn> wrote:> anyone can help? > I'm confused too. > > ======== 2008-03-18 14:04:50 您在来信中写道: =======> > hi, my friends: > > recently, i am reading the source codes about hypercall. > > First, i study a simple hypercall, for example, the "do_xen_version". > > In "xen-3.1.0-src\xen\common\kernel.c", the definition of "do_xen_version" is: > > DO(xen_version) (int cmd, XEN_GUEST_HANDLE(void) arg) > { > .... > } > > according to the " #define DO(fn) long do_##fn ", the expanded form is > "do_xen_version (...)". > > then, in the "xen-3.1.0-src\xen\arch\x86\x86_32\entry.S", there is an item in > the "hypercall_table", like this: > > ENTRY(hypercall_table) > .... > .long do_xen_version > .... > > > as we all known, for a symbol reference of function there need to be a header > file contained, or a "global" declaration. > > By searching the header files, i found the file, > "xen-3.1.0-src\xen\include\xen\hypercall.h" that declared the function in a > form as follows: > > extern long > do_xen_version( > int cmd, > XEN_GUEST_HANDLE(void) arg); > > But, i can not find where the file "hypercall.h" is contained in order to link > it with the reference of "do_xen_version" in the "entry.S" > > So, please help me, or give me some advice. > > thanks advance. > > 2008-03-18 > > > > 房海峰 > > > _______________________________________________ > 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
Keir Fraser
2008-Mar-18 08:53 UTC
Re: [Xen-devel] A question related with symbol reference?
The EXTERN directive is specific to nasm. -- Keir On 18/3/08 08:49, "房海峰" <fanghaifeng@ncic.ac.cn> wrote:> I have been programmed assembly code with "nasm" language. > in "nasm", when you refere to a function/label that come from another file, > you should make a declaration of the function with "extern" keywords in > advance. > > i don''t know whether "at&t" assembly language is different with "nasm"? > > thanks again!_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
maybe! i will study "at&t" indepth. thank you for your reply. 2008-03-18 房海峰 发件人: Keir Fraser 发送时间: 2008-03-18 16:35:27 收件人: fanghaifeng@ncic.ac.cn; xen-devel 抄送: 主题: Re: [Xen-devel] A question related with symbol reference? The EXTERN directive is specific to nasm. -- Keir On 18/3/08 08:49, "$BK<3$Jv(B" <fanghaifeng@ncic.ac.cn> wrote: I have been programmed assembly code with "nasm" language. in "nasm", when you refere to a function/label that come from another file, you should make a declaration of the function with "extern" keywords in advance. i don't know whether "at&t" assembly language is different with "nasm"? thanks again! _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel