Re: Getting kernel symbols in kernel module (dynamically)

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

 



Yes, it is a function of the kernel. So you may need to export it before calling in your kernel module.

By the way, sys_clock_gettime is a system call. you can call clock_gettime directly in your kernel module without exporting sys_clock_gettime.


在 Wed, 25 Feb 2009 20:21:44 +0800,Ole Loots <ole@xxxxxxxxxxxxx> 写道:

But I wan't to call a function that is not part of my module... i want to call sys_clock_gettime - which is a function of the kernel.


----- Original Message ----- From: "Guo Hongruan" <camelguo@xxxxxxxxx>
To: "Ole Loots" <ole@xxxxxxxxxxxxx>
Sent: Wednesday, February 25, 2009 12:47 PM
Subject: Re: Getting kernel symbols in kernel module (dynamically)


If you want to call a symbol in kernel module, you need to make sure it is exported. Through the macro EXPORT_SYMBOL, you can export the kernel function or variables, so that you can call them in kernel module.

The following is an example:

EXPORT_SYMBOL(acpi_bus_get_device);

在 Wed, 25 Feb 2009 18:45:05 +0800,Ole Loots <ole@xxxxxxxxxxxxx> 写道:


Hello Guo,

I'm talking about kernel space. I want to get kernel space symbols when
running a kernel module... Or maybe the linker can link agains the kernel (so the addresses of the symbols are statically inserted into my module,
also), but that wouldn't be as good as getting the symbols dynamically.

On Wed, 25 Feb 2009 18:20:21 +0800, "Guo Hongruan" <camelguo@xxxxxxxxx>
wrote:
Too dangrous!!

In kernel space or userspace? If in userspace, you can only call
clock_gettime.

在 Wed, 25 Feb 2009 18:08:55 +0800,Ole Loots <ole@xxxxxxxxxxxxx>
写道:

Hello,

I want to call the kernel function sys_clock_gettime, but when I just
try to call it, the linker complains about the unknown symbol/function
sys_clock_gettime, so i have hard coded a function pointer in my
module...:

long (*p_sys_clock_gettime)(clockid_t, struct timespec *tp) =
0xc004373c;

That works fine for my system, but I know thats not the way to do it.
How is it done properly?

Regards,
Ole


--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ




-- Guo Hongruan, Embedded Linux Consultant
Mobile: +86-0-13484056007
Skype: camelguo
http://www.gulessoft.com



--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ




--
Guo Hongruan, Embedded Linux Consultant
Mobile: +86-0-13484056007
Skype: camelguo
http://www.gulessoft.com

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[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