当前位置:  技术问答>linux和unix

如何编写和运行模块?

    来源: 互联网  发布时间:2015-12-24

    本文导语:  用VI写了一个hello.world的C程序.用gcc 编译OK后生成 hello.o 用root身份.终端下输入insmod hello.o 按照书上说的应该输出程序的结果. 但是系统提示 bash: insmod : command not found. 真是纳闷. 我是按照书上做的.与书上的结果...

用VI写了一个hello.world的C程序.用gcc 编译OK后生成 hello.o
用root身份.终端下输入insmod hello.o
按照书上说的应该输出程序的结果. 但是系统提示 bash: insmod : command not found.
真是纳闷. 我是按照书上做的.与书上的结果不一样.为什么?

|
#include
#include
#include
#include
#include
#include
#include

MODULE_LICENSE("GPL");

struct timer_list my_timer;
struct tty_driver *my_driver;
struct cdev *char_dev;
unsigned long led_seq = 1;

#define BLINK_DELAY HZ/5
#define LED_FIRST 0x02
#define LED_SECOND 0x04
#define LED_THIRD 0x01
#define LED_ALL 0x07

#define RESTORE_LEDS 0xFF
#define LED_LIGHT 0x01
#define LED_DARK 0x02

static void my_timer_func(unsigned long ptr)
{
        if(ptr == 1){
                (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,RESTORE_LEDS);
                (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,LED_FIRST);
                
          led_seq = 2;
          my_timer.data = led_seq;
          my_timer.expires = jiffies + BLINK_DELAY;
          add_timer(&my_timer); 
        }
        if(ptr == 2){
                (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,RESTORE_LEDS);
                (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,LED_SECOND);
                
          led_seq = 3;
          my_timer.data = led_seq;
          my_timer.expires = jiffies + BLINK_DELAY;
          add_timer(&my_timer); 
        }
        if(ptr == 3)
        {
                (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,RESTORE_LEDS);
                (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,LED_SECOND);
                
          led_seq = 1;
          my_timer.data = led_seq;
          my_timer.expires = jiffies + BLINK_DELAY;
          add_timer(&my_timer); 
        }
}

static int device_open(struct inode *inode,struct file *file)
{
        int i;
        for(i=0; ivc_tty->driver;
        
        init_timer(&my_timer);
        my_timer.fucction = my_timer_func;
        my_timer.data = led_seq;
        my_timer.expires = jiffies + BLINK_DELAY;
        add_timer(&my_timer);
        
        return 0;
}

static int device_release(struct inode *inode,struct file *file)
{
        del_timer(&my_timer);
        return 0;
}

static ssize_t device_read(struct file *file,char * buf,size_t count,loff_t *ppos)
{
        return 0;
}

static ssize_t device_write(struct file *file,char * buf,size_t count,loff_t *ppos)
{
        return 0;
}

static int device_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)
{
        switch(cmd){
                case LED_LIGHT:
                        (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,LED_ALL);
                        break;
                case LED_DARK:
                        (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,RESTORE_LEDS);
                        break;
                default:break;                        
        }
        return 0;
}

struct file_operations device_ops = {
                                                .owner = THIS_MODULE,
                                                .llseek = NULL,
                                                .read = device_read,
                                                .write = device_write,
                                                .readdir = NULL,
                                                .poll = NULL,
                                                .ioctl = device_ioctl,
                                                .mmap = NULL,
                                                .open = device_open,
                                                .flush = NULL,
                                                .release = device_release,
                                                .fsync = NULL,
                                                .fasync = NULL,
                                                .lock = NULL,
                                                .readv = NULL,
                                                .writev = NULL,
}

static int __init kbleds_init(void)
{
        int i,ret;
        int chardev_major;
        dev_t dev = 0;
        ret = alloc_chrdev_region(&dev,0,1,"char_dev");
        chardev_major = MAJOR(dev);
        if(ret driver;
        return 0;
}

static void __exit kbleds_cleanup(void)
{
        cdev_del(char_dev);
        unregister_chardev_region(dev,1);
        (my_driver->ioctl)(vc_cons[fg_console].d->vc_tty,NULL,KDSETLED,RESTORE_LEDS);
}

module_init(kbleds_init);
module_exit(kbleds_cleanup);

|
bash: insmod : command not found:
可能是权限不够,su到root.

|
"bash: insmod : command not found"
这时候的问题肯定是和你的INSMOD命令有关,可以换一台真正安装了
LINUX的机器试试.

|
你的系统当前不支持insmod命令,处去权限问题
应该是module工具的问题
你升级下module-init工具就可以了

|
路径的问题吧,
locate insmod 看看这个命令在哪里,
比如
/sbin/insmod xxx.o

    
 
 

您可能感兴趣的文章:

  • 怎么给内核加载自己编写的模块
  • 编写了一个简单的设备模块,但怎么测试通不过呢?
  • 我刚学编写模块,就碰到疑问
  • 如何用Eclipse编写内核模块程序?
  • 编译和使用自己编写的linux内核模块的问题
  • *** AIX 下如何编写内核驱动模块?或者哪位有相关资料? *****
  • 我要用Java编写一个通用权限管理模块,大伙有什么好的建议?
  • 在linux上怎么编写一个模块来提供某个中断的中断处理程序呢?而且有哪些中断可以自己添加中断处理程序呢?
  • 怎样编写Apache模块, 哪位兄弟给一个DEMO 或 资料, 谢谢~
  • 编写内核模块程序的makefile文件make错误
  • 调查一下:编写Linux内核模块 驱动程序各位高手所用的编辑环境和调试工具
  • 什么情况下自己编写的模块与内核中的相关功能不会冲突啊?
  • SHELL 编程时要求用分模块编写各应用程序,然后由主菜单程序调用各子程序模块。主菜单如何调用子程序的呢?
  • 关于编写内核模块导出符号的问题
  • ubuntu12.04使用c编写php扩展模块教程分享
  • 内核模块编写
  • Linux 钩子模块的编写
  • 【百度分享】基于内核模块的测试代码编写(一)
  • 【百度分享】基于内核模块的测试代码编写(三)
  • 【百度分享】基于内核模块的测试代码编写(二)
  • linux编写一个脚本判断程序是否在运行,如果没运行就重启这个软件。
  • java能不能编写单独运行的程序?
  • 请问java用什么工具编写?在哪里运行?我刚开始学,不太懂,谢谢了
  • Linux下如何编写脚本文件 iis7站长之家
  • 怎么运行一个我编写的小程序
  • 求助!我编写的程序如何运行?
  • 哪里有直接用Tomcat运行用Jbuilder编写的servlet程序?
  • 急问:怎样用shell编写脚本运行要输入密码的程序???
  • tomcat运行不行,是在编写完之后,view窗口中不能预览?
  • 关于linux下自己编写的程序运行问题!!!!!!!!!!!
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编写 linux shell 有什么好的编写工具呢?
  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 用Qt3.1.4编写的程序,如何加入自己编写的另外一个动态库呀?诚恳指教!!
  • 如图 scsi <---> scsi controller <---> pci <---> cpu 如果我想对scsi编写驱动我该对哪个部分编写?
  • 用什么工具编写JSP,可以象用InterDev编写ASP一样方便快捷?
  • 编写程序如编写人生,有人和我的意见相同吗?
  • 请问用jsp编写程序,非要编写代码么?有没有什么象fontpage2000那样的工具,能够生成一些固定模板的工具?就是说不用全部都写的工具。望
  • 用jsp编写web程序到底和java serverlet编写web程序有和区别
  • socket中,从client端(用java编写的)传到server端(用c编写的)的字符串为何总多一个ASCII码为10的字符呀?
  • 如何用java编写一个NT平台下的标准服务?
  • 关于用vj编写sniffer一问。
  • Linux下如何编写脚本文件
  • Linux有没有类似bat文件,如何编写。
  • 用JAVA编写COM组件
  • 关于版本和bug管理的rule(规则)的编写
  • 在windows下可以用Code::Blocks编写linux程序吗?
  • 函数互相调用时Makefile编写
  • linux下用java编写邮箱客户端程序与在windows下有什么不同??
  • AIX下如何编写批处理命令和计划任务
  • 怎么用JBuild编写java console程序


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3