insmod:無法插入“./intrpt.ko”:功能未實現

insmod:無法插入“./intrpt.ko”:功能未實現

我正在編寫一個接收 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)

相關內容