内核线程学习笔记

来源:互联网 发布:软件开发阶段任务 编辑:程序博客网 时间:2024/05/21 11:41

1,内核线程大部分操作和驱动模块一样,有init和exit,也使用insmod命令加载.ko文件,加载后内核线程自动执行,不受用户影响,具体情况以后再续

2,当我加载了一个ko文件后用ps查看,可见,多出来了一个mythread。

3,用top命令可以查看各个进程,相当于windows的任务管理器,cpu使用,内存使用等情况动态刷新

4,当运行一个试验版的内核线程且无其他特殊任务的时候,该线程占用了cpu99%的时间,可以说整个cpu就在跑这么一个线程了。当然如果开启了其他进程,比如播放视频,那就不一样了,相当于两者竞争使用cpu。

5,    while(!kthread_should_stop())
        {
//            key = (s3c2410_gpio_getpin(S3C2410_GPG(11)) && 0x800);
//            if(!key)
            leds_all_on();
 //           printk("SW7 = %d\n", key);
 //           printk("%s,leds ON\n",mydata);
            SLEEP_MILLI_SEC(1);
            leds_all_off();
 //           SLEEP_MILLI_SEC(500);
 //           printk("%s,leds OFF\n",mydata);
        }

如上,在线程内只做gpio翻转和sleep 1个ms,现象:gpio翻转周期约3us,占空比为50%;cpu几乎完全被占用,触屏等失效。痛苦的是我把它加到启动脚本了,这下又要刷机才能解决问题了,哭啊

6,

原创粉丝点击