insmod: não pode inserir './intrpt.ko': Função não implementada

1

Estou escrevendo um módulo do kernel que recebe interrupções para a placa mpc8308 (PowerPC). quando eu faço o código para o Ubuntu e minha versão atual do kernel ele funciona bem com a interrupção do teclado, mas quando eu o cruzo construo para o mpc8308 board (kernel 2.6.29.6) e eu quero carregá-lo no kernel com o comando insmod I obter erro:

insmod: cannot insert './intrpt.ko': Function not implemented

meu código é:

#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");

e saída de modinfo ./intrpt.ko é:

filename:       ./intrpt.ko
description:    A sample driver
author:          
license:        GPL
depends:        
vermagic:       2.6.29.6-rt23 mod_unload
    
por AVM 23.05.2016 / 10:16

1 resposta

0

Eu também enfrentei esse problema ao inserir o módulo no kernel. Digite sua versão atual do kernel, acesse corretamente o diretório cd / lib / modules / sua-kernel-versão-gereric / e verifique se o diretório de construção está presente ou não. Se estiver presente, você pode compilar diretamente seu módulo usando o comando abaixo

make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
    
por 23.05.2016 / 10:40