Я пытаюсь написать модуль ядра spi. Однако я получаю предупреждение о том, что не могу разрешить.
WARNING: "spi_register_board_info" undefined!
И всякий раз, когда я пытаюсь загрузить модуль, онотображает ошибку "Неизвестный символ в модуле". Даже если символ существует, когда я проверял / proc / kallsyms
Вывод cat / proc / kallsyms |grep spi_register_board_info
c09e58c8 T spi_register_board_info
функция инициализации:
#include "header.h"
#include "declaration.h"
#include "spiop.h"
MODULE_AUTHOR("Vijay");
MODULE_LICENSE("GPL");
static struct spi_driver Vijay_spi =
{
.driver=
{
.name="Vijay_spi_driver",
},
.id_table=myid_table,
.probe=spi_probe,
.remove=spi_remove
};
static struct spi_board_info myspi_board_info [] __initdata = {
{
.modalias="Vijay_spi",
.max_speed_hz=14000000,
.bus_num=0,
.chip_select=3,
.mode=SPI_MODE_0,
},
/* {
.modalias="spidev",
.chip_select=0,
.max_speed_hz=1*100*100,
.bus_num=1,
.mode=SPI_MODE_0,
},*/
};
struct spi_driver *mydriver;
static int __init init_func(void)
{
if(spi_register_board_info(myspi_board_info,ARRAY_SIZE(myspi_board_info)) == -1)
{
pr_err("spi_register_board_infofailed \n");
goto OUT;
}
#ifndef DEBUG
printk(KERN_INFO "%s: Begin \n",__func__);
#endif
mydriver=&Vijay_spi;
if(spi_register_driver(mydriver) == -1)
{
pr_err("spi_register_driver failed \n");
goto OUT;
}
#ifndef DEBUG
printk(KERN_INFO "%s: End \n",__func__);
#endif
return 0;
OUT:
return -1;
}
Содержимое header.h: -
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/slab.h>
#include<linux/spi/spi.h>
#include<linux/device.h>
#include<linux/types.h>
#include<linux/mutex.h>
#include<linux/mod_devicetable.h>
Может кто-нибудь пролить светпочему я получаю это предупреждение.