无法使用命令行参数加载do-nothing模块

时间:2015-02-15 17:33:31

标签: module linux-kernel kernel fedora kernel-module

我们有一个非常简单的do-nothing模块,如图所示:

 #include "linux/kernel.h"
 #include "linux/module.h"

 static unsigned int hwmode = 0;    
 module_param(hwmode, uint, 0755); 

 static int __init sig_mc_hw_init(void) 
  {
   printk( " Inside init function, hwmode = %d\n", hwmode);
   return 0;
  }
 static void __exit sig_mc_hw_exit(void) 
  { 
   printk( " Inside exit function\n");
  }
  module_init(sig_mc_hw_init);
  module_exit(sig_mc_hw_exit);

我们可以对它进行modprobe,如图所示:

            modprobe sig_mc_hw.ko 

但是,当我们给出一个输入命令行参数时,我们得到一个seg错误:

            modprobe sig_mc_hw.ko hwmode=0

dmesg表明我们还没有到达init()。我们如何调试?

我们通过升级内核头文件从Fedora Linux版本2.6.34.10升级到2.6.34.15。为了做到这一点还需要哪些其他文件?

我们正在PowerPC上运行该模块。在声明参数时是否需要缓存对齐或任何其他方法?

        Thanks!
        Sarvani Chadalapaka
        HPC Systems Engineer
        Signalogic Inc

在编辑时添加:

这是Makefile

TARGET := sig_mc_hw
EXTRA_CFLAGS := -I/root/adsp2/usr/src/linux/include/linux 
KDIR = /root/adsp2/usr/src/linux
PWD  = $(shell pwd)
export ARCH=powerpc
export CROSS_COMPILE=ppc_e500v2-target-linux-gnu-
export LINUXROOT=/root/adsp2/usr/src/linux

obj-m += ${TARGET}.o 

all:

       make -C $(KDIR) ARCH=powerpc CROSS_COMPILE=$(CROSS_COMPILE) M=${PWD} EXTRA_CFLAGS="$(EXTRA_CFLAGS)" modules

uname -a命令显示以下内容:2.6.34.15-WR4.3.0.0_standard#1 SMP PREEMPT Tue Jan 20 14:47:40 CST 2015 ppc GNU / Linux

modprobe命令显示:

     ~# modprobe -v sig_mc_hw.ko 
     ~#
     ~# modprobe -v sig_mc_hw.ko hwmode=0
        Segmentation fault 

0 个答案:

没有答案