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)

관련 정보