Hi Krishna,

On Tue, Jul 21, 2009 at 1:07 PM, er krishna <[email protected]> wrote:

>
>
> On Tue, Jul 21, 2009 at 12:45 PM, Siddu <[email protected]> wrote:
>
>>
>>
>> On Tue, Jul 21, 2009 at 11:13 AM, er krishna <[email protected]> wrote:
>>
>>>
>>> I am again repeating the steps, i found something interested,  when I am
>>> doing make after making EXPORT_SYMBOL entries in fs/drop_caches.c  ( during
>>> kernel compilation); I am getting following warning messages for each of the
>>> exported function from this file only, the messages are:
>>>
>>> data definition has no type or storage class
>>
>>
>>
>>>
>>>
>>> type defaults to 'int' in declaration of  'EXPORT_SYMBOL'
>>>
>>> parameter names (without types) in function declaration
>>>
>>> Although these are the warning messages, but why it is coming from
>>> fs/drop_caches file only. The function which I have exported from
>>> fs/buffer.c and block/genhd.c are easily exported and there is no warning
>>> messages against  any exported function from other than fs/drop_caches.c
>>
>> Could you tell what other functions were you able to export successfully
>> from buffer.c and genhd.c
>>
>
>
> [r...@centos2 linux-2.6.26]# grep myfunction System.map
> c0175a00 T myfunction
> c0177cad T myfunction2
> c02ac3a5 T myfunction3
> c063e178 r __ksymtab_myfunction2
> c063ea30 r __ksymtab_myfunction3
> c06492da r __kstrtab_myfunction2
> c064b00c r __kstrtab_myfunction3
> [r...@centos2 linux-2.6.26]#
>
>
>
> Check it out myfunctio2 & myfunction3 I am able 2 export from fs/buffer.c
> and block/genhd.c but I am not able to export any of the function from
> fs/dropcacahe.c
>
>
>
> & whenever I do make after doing the entry in dropcache.c I am always
> getting following error message :
>
>
>
> [r...@centos2 linux-2.6.26]# cat kk
> fs/drop_caches.c:85: warning: data definition has no type or storage class
> fs/drop_caches.c:85: warning: type defaults to ‘int’ in declaration of
> ‘EXPORT_SYMBOL’
> fs/drop_caches.c:85: warning: parameter names (without types) in function
> declaration
> fs/drop_caches.c:86: warning: data definition has no type or storage class
> fs/drop_caches.c:86: warning: type defaults to ‘int’ in declaration of
> ‘EXPORT_SYMBOL’
> fs/drop_caches.c:86: warning: parameter names (without types) in function
> declaration
> fs/drop_caches.c:87: warning: data definition has no type or storage class
> fs/drop_caches.c:87: warning: type defaults to ‘int’ in declaration of
> ‘EXPORT_SYMBOL’
> fs/drop_caches.c:87: warning: parameter names (without types) in function
> declaration
> fs/drop_caches.c:88: warning: data definition has no type or storage class
> fs/drop_caches.c:88: warning: type defaults to ‘int’ in declaration of
> ‘EXPORT_SYMBOL’
> fs/drop_caches.c:88: warning: parameter names (without types) in function
> declaration
> fs/drop_caches.c:89: warning: data definition has no type or storage class
> fs/drop_caches.c:89: warning: type defaults to ‘int’ in declaration of
> ‘EXPORT_SYMBOL’
> fs/drop_caches.c:89: warning: parameter names (without types) in function
> declaration
> make[2]: *** Deleting file `fs/configfs/inode.o'
> make[2]: *** [fs/configfs/inode.o] Interrupt
> make[1]: *** [fs/configfs] Interrupt
> make: *** [fs] Interrupt
> [r...@centos2 linux-2.6.26]#
>

Surely, the issue looks like you are not doing a #include<module.h>
Add it to fs/dropcache.c
You get this error in that case.



>
>
>
>
> So, these are the two clues, can anybody help me out.
>
>
> Peter , I have tried with extern optaion also , but the results are same.
>
>
> Thanks & Best regards,
> Krishna
>
>
>
>

Regards,
Sandeep.






“To learn is to change. Education is a process that changes the learner.”




>
>
>
>
>
>>
>>> On Tue, Jul 21, 2009 at 10:30 AM, Mulyadi Santosa <
>>> [email protected]> wrote:
>>>
>>>> On Mon, Jul 20, 2009 at 9:40 PM, er krishna<[email protected]> wrote:
>>>> > I have exported three functions from fs/dropcaches.c by making their
>>>> > function declaration in linux/mm.h, compiled the  corresponding 2.6.26
>>>> > kernel & got their entries in System.map file as follows:
>>>> >
>>>> >
>>>> > c0174d98 T drop_slab
>>>> > c0174db2 T drop_pagecache
>>>> > c0174ea7 T drop_caches_sysctl_handler
>>>>
>>>> Upper case T, according to "man nm" means it's a global symbol. In
>>>> other word, other function located in separate object file could
>>>> reference it. OK, seems you do correctly here in exporting symbol
>>>>
>>>> > These entries are quite different from the actual exported functions
>>>> from
>>>> > other files, it has only T option.
>>>>
>>>> What do you mean by the above paragraph?
>>>>
>>>
>>>
>>> Mylyadi, Actually when we do compilation, there are warning messages and
>>> when i do insmod there is error and in dmesg it shows that the above symbols
>>> are not resolved (it means there is a linking error) , I have exported some
>>> other function from other file and checked all those entries in
>>> /proc/kallsyms and in System.map file. These are different in nature. Thats
>>> why I asked ?
>>>
>>>> Please paste the relevant portion of /proc/kallsym and System.map so
>> that all of us can see in what way they differ
>>
>>>
>>>
>>> As I have declared their definition in linux/mm.h, I dont think that i
>>> have to do extern in my module coz i have included linux/mm.h after making
>>> proper declaration of these functions. But let me check with extern once
>>> more.
>>>
>>>
>>>
>>>
>>>
>>>>
>>>> And as far as I can see here, they are warning messages so there's a
>>>> chance the final kernel module can be successfully build. What happen
>>>> if you do "insmod -f"? Does it work as expected?
>>>>
>>>
>>> I will let you know after repeating the above steps, coz I am once again
>>> compiling the kernel.
>>>
>>>
>>>
>>>
>>>>
>>>> --
>>>> regards,
>>>>
>>>> Mulyadi Santosa
>>>> Freelance Linux trainer
>>>> blog: the-hydra.blogspot.com
>>>>
>>> Other than that, as Peter has suggested, are you sure you have
>>>> declared drop_slab() etc as "extern" function in your module?
>>>>
>>>
>>
>>
>>
>> --
>> Regards,
>> ~Sid~
>> http://sidsenclave.blogspot.com
>>
>
>

Reply via email to