Linux驱动:内核延时测试
来源:互联网 发布:北森测评软件 编辑:程序博客网 时间:2024/06/06 01:01
Linux驱动:内核延时测试
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
主机:Fedora12
目标板:MINI6410
目标板LINUX内核版本:2.6.38
实现功能:
延迟2S
方法1:利用系统全局变量jiffies
jiffies记录系统节拍,每一次节拍,内核时钟中断函数会将jiffies加1.
HZ在ARM中为100,表示1S被分为100份,系统每个节拍为10ms.
修改上篇《linux驱动编写:LED驱动测试》中的ioctl函数,测试延时
//功能:ioctl操作函数//返回值:成功返回0static long led_driver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg){unsigned int temp = 0;unsigned long t = 0;temp = readl(S3C64XX_GPKDAT);if (cmd == 0){temp &= ~(1 << (arg + 3));}else{temp |= 1 << (arg + 3);}//等待2St = jiffies;while (time_after(jiffies,t + 2 * HZ) != 1);writel(temp,S3C64XX_GPKDAT);printk (DEVICE_NAME"\tjdh:led_driver cmd=%d arg=%d jiffies = %d\n",cmd,arg,jiffies);return 0;}
这个方法会使内核忙等待,会影响系统效率.2.利用宏ndelay(n),延时ns
udelay(n),延时us
mdelay(n),延时ms
这个简单,不做介绍
3.利用内核进行延时
long sleep_on_timeout(wait_queue_head 8q,long time_out);
long interruptible_sleep_on_timeout(wait_queue_head 8q,long time_out);
第2个与第1个相比差别在于会被中断唤醒。调用这两个函数,内核会阻塞当前进程,将其放入等待队列,等待时间到。
代码:
//功能:ioctl操作函数//返回值:成功返回0static long led_driver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg){unsigned int temp = 0;//unsigned long t = 0;wait_queue_head_t wait;temp = readl(S3C64XX_GPKDAT);if (cmd == 0){temp &= ~(1 << (arg + 3));}else{temp |= 1 << (arg + 3);}//等待2S//t = jiffies;//while (time_after(jiffies,t + 2 * HZ) != 1);init_waitqueue_head(&wait);sleep_on_timeout(&wait,2 * HZ);writel(temp,S3C64XX_GPKDAT);printk (DEVICE_NAME"\tjdh:led_driver cmd=%d arg=%d jiffies = %d\n",cmd,arg,jiffies);return 0;}
- Linux驱动:内核延时测试
- Linux驱动:内核延时测试
- Linux内核驱动之延时
- 《Linux设备驱动开发详解》-- 内核延时
- linux内核编译 驱动测试
- linux内核延时
- Linux 内核延时函数
- Linux 内核延时函数
- Linux 内核延时
- Linux 内核延时
- Linux内核驱动模块测试 hello.ko
- 基于MPC8308的gpio管脚驱动测试linux2.6内核任务切换延时
- 【Linux开发】linux设备驱动归纳总结(七):1.时间管理与内核延时
- linux内核的延时机制
- linux中内核延时函数
- Linux kernel 内核延时函数
- linux驱动中的,时间, 延时
- linux驱动中实现延时
- ASP.NET图片盗链问题
- Ruby Gem命令详解
- 让jQuery与其他框架共存
- 时间控件
- 离线iOS应用的HTML 5制作指南
- Linux驱动:内核延时测试
- android java 初始化子窗口中的数据
- IOS开发之路中ing-
- android入门---环境搭建(配置环境变量)和基础知识
- 安装ORACLE 的信息生命周期管理工具(ILM assistant) .
- CListCtrl各种操作
- 年终总结要求
- java IO 应用(一)字符流
- jstl标签不起作用不管用,jstl标签直接输出表达式