Ошибка: Неизвестный символ в модуле?

Я написал простой модуль ядра Linux:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/reboot.h>

static int my_init(void)
{
    machine_power_off();
    return  0;
}

static void my_exit(void)
{
    return;
}

module_init(my_init);
module_exit(my_exit);

Исходник успешно скомпилирован, но после установки модуля (insmod) возникла следующая ошибка:

Error: could not insert module my_module.ko: Unknown symbol in module

Ошибка системного журнала:

Jun 25 21:50:00 my-virtual-machine kernel: [31625.207827] my_module: Unknown symbol machine_power_off (err 0)

Как решить эту ошибку?

машина_power_off:

http://lxr.free-electrons.com/ident?i=machine_power_off


person Amir Saniyan    schedule 25.06.2013    source источник
comment
Похоже, machine_power_off() не экспортируется ядром.   -  person Eugene    schedule 27.06.2013
comment
Из всех драйверов только драйверы Windfarm* для Macintosh используют его, но я не знаю, как им это удается.   -  person Eugene    schedule 27.06.2013


Ответы (1)


@Amir, просмотрел файлы в ядре Linux, w.r.t. все файлы архитектуры, в которых используется machine_power_off(), не экспортируются, поэтому их нельзя использовать в вашем модуле.

person Gautham Kantharaju    schedule 04.07.2013