Re: how to export function from fs/dropcache.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks a lot to all of you, In the mean while I have also found the same reason due to the problem of EXPORT_SYMBOL , AND AFTER INCLUDING linux/module.h, it has resolved now .

Now my module is working fine.


You know now the entries in System.map file has also changed and there is no warning message in compilation.

Best Regards,
Krishna




On Tue, Jul 21, 2009 at 2:29 PM, Pei Lin <telent997@xxxxxxxxx> wrote:
^_^  I found the root cause of your issue. u forgot
"include<module.h>" in your fs/drop_caches.c .......

BRs,

Lin


2009/7/21 er krishna <erkrishna@xxxxxxxxx>:
>
> 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
>
>
> On Tue, Jul 21, 2009 at 10:30 AM, Mulyadi Santosa
> <mulyadi.santosa@xxxxxxxxx> wrote:
>>
>> On Mon, Jul 20, 2009 at 9:40 PM, er krishna<erkrishna@xxxxxxxxx> 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 ?
>
>
>
>>
>> Other than that, as Peter has suggested, are you sure you have
>> declared drop_slab() etc as "extern" function in your module?
>
>
> 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
>
>


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux