![insmod:无法插入“./intrpt.ko”:功能未实现](https://linux22.com/image/88897/insmod%EF%BC%9A%E6%97%A0%E6%B3%95%E6%8F%92%E5%85%A5%E2%80%9C.%2Fintrpt.ko%E2%80%9D%EF%BC%9A%E5%8A%9F%E8%83%BD%E6%9C%AA%E5%AE%9E%E7%8E%B0.png)
我正在编写一个接收 mpc8308 (PowerPC) 板中断的内核模块。当我为 Ubuntu 和当前版本的内核编写代码时,它可以很好地处理键盘中断,但是当我为 mpc8308 板(2.6.29.6 内核)交叉构建它并且我想使用insmod
命令将其加载到内核中时,我收到错误:
insmod: cannot insert './intrpt.ko': Function not implemented
我的代码是:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#define DRIVER_AUTHOR "AVM"
#define DRIVER_DESC "A sample driver"
static irqreturn_t irq_handler(int irq, void *dev_id, struct pt_regs *regs)
{
printk(KERN_ALERT "Hello Interrupt world.\n");
return IRQ_HANDLED;
}
/*
* Initialize the module − register the IRQ handler
*/
int init_module()
{
free_irq(1, NULL);
return request_irq(1, irq_handler, IRQF_SHARED, "test_keyboard_irq_handler",
(void *)(irq_handler));
}
/*
* Cleanup
*/
void cleanup_module()
{
free_irq(1, NULL);
}
MODULE_LICENSE("GPL");
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_SUPPORTED_DEVICE("testdevice");
的输出modinfo ./intrpt.ko
是:
filename: ./intrpt.ko
description: A sample driver
author:
license: GPL
depends:
vermagic: 2.6.29.6-rt23 mod_unload
答案1
我在将模块插入内核时也遇到了这个问题。正确输入当前的内核版本,转到 cd /lib/modules/your-kernel-version-gereric/ 目录并检查构建目录是否存在。如果存在,那么您可以使用以下命令直接编译模块
make -C /lib/modules/$(shell uname -r)/build M=$(PWD)