`

【Linux 驱动】第七章 时间 延迟及延缓操作 (例子详解一)

 
阅读更多

本文所涉及实验为博文http://blog.csdn.net/tianshuai11/article/details/7465587中示例,请先阅读上述博文,然后消化以下例子

一,模块方法

jit.c


Makefile


测试:

root@ubuntu:~/桌面/jit# make

root@ubuntu:~/桌面/jit# insmod jit.ko

root@ubuntu:~/桌面/jit# lsmod //查询安装完毕

其中文件currentime,jitbusy,jitsched,jitqueue,jitschedto,jitimer,jitasklet,jitasklethi都是模块jit创建

root@ubuntu:~/桌面/jit#head -6 /proc/currentime //查询currentime 文件的前六行(currentime 为jit程序创建)

/*返回的值为:当前的 jiffies 和 jiffies_64 值, 以 16 进制数的形式.

如同 do_gettimeofday 返回的相同的当前时间.

由 current_kernel_time 返回的 timespec.*/


0x004e4a3e 0x00000001004e4a3e 1334565617.514572
1334565617.511113437
0x004e4a3e 0x00000001004e4a3e 1334565617.514575
1334565617.511113437
0x004e4a3e 0x00000001004e4a3e 1334565617.514576
1334565617.511113437


root@ubuntu:~/桌面/jit# dd bs=20 count=5 < /proc/jitbusy //dd 命令参见【补充1】
5183602 5183852
5183852 5184102
5184102 5184352
5184352 5184602
5184602 5184852
记录了5+0 的读入
记录了5+0 的写出
100字节(100 B)已复制,4.99935 秒,0.0 kB/秒

root@ubuntu:~/桌面/jit# dd bs=20 count=5 < /proc/jitsched
5198924 5199174
5199174 5199424
5199424 5199674
5199674 5199924
5199924 5200174
记录了5+0 的读入
记录了5+0 的写出
100字节(100 B)已复制,4.99645 秒,0.0 kB/秒

root@ubuntu:~/桌面/jit# dd bs=20 count=5 < /proc/jitqueue
5205914 5206164
5206164 5206414
5206414 5206664
5206664 5206914
5206914 5207164
记录了5+0 的读入
记录了5+0 的写出
100字节(100 B)已复制,4.99969 秒,0.0 kB/秒

root@ubuntu:~/桌面/jit# dd bs=20 count=5 < /proc/jitschedto
5212110 5212360
5212360 5212610
5212610 5212860
5212860 5213110
5213110 5213360
记录了5+0 的读入
记录了5+0 的写出
100字节(100 B)已复制,4.99915 秒,0.0 kB/秒

root@ubuntu:~/桌面/jit# cat /proc/jitimer //inirp有没有被中断
time delta inirq pid cpu command
5226700 0 0 4625 3 cat
5226710 10 1 0 3 kworker/0:1
5226720 10 1 0 3 kworker/0:1
5226730 10 1 0 3 kworker/0:1
5226740 10 1 0 3 kworker/0:1
5226750 10 1 0 3 kworker/0:1

root@ubuntu:~/桌面/jit# cat /proc/jitasklet
time delta inirq pid cpu command
5236006 0 0 4626 2 cat
5236006 0 1 13 2 ksoftirqd/2
5236006 0 1 13 2 ksoftirqd/2
5236006 0 1 13 2 ksoftirqd/2
5236006 0 1 13 2 ksoftirqd/2
5236006 0 1 13 2 ksoftirqd/2

root@ubuntu:~/桌面/jit# cat /proc/jitasklethi
time delta inirq pid cpu command
5241403 0 0 4627 2 cat
5241403 0 1 13 2 ksoftirqd/2
5241403 0 1 13 2 ksoftirqd/2
5241403 0 1 13 2 ksoftirqd/2
5241403 0 1 13 2 ksoftirqd/2
5241403 0 1 13 2 ksoftirqd/2


【补充1】dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 dd 的主要选项:

  指定数字的地方若以下列字符结尾乘以相应的数字:
  b=512, c=1, k=1024, w=2, xm=number m
  if=file 输入文件名,缺省为标准输入。
  of=file 输出文件名,缺省为标准输出。
  ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
  obs=bytes 一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
  bs=bytes 同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
  cbs=bytes 一次转换 bytes 个字节,即转换缓冲区大小。
  skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制。
  seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
  count=blocks 仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
  conv=conversion[,conversion...]
  用指定的参数转换文件。
  转换参数:
  ascii 转换 EBCDIC 为 ASCII。
  ebcdic 转换 ASCII 为 EBCDIC。
  ibm 转换 ASCII 为 alternate EBCDIC.
  block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
  unblock
  使每一行的长度都为 cbs ,不足部分用空格填充。
  lcase 把大写字符转换为小写字符。
  ucase 把小写字符转换为大写字符。
  swab 交换输入的每对字节。
  noerror出错时不停止。
  notrunc不截短输出文件。
  sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
  由于 dd 命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
  dd if=/dev/fd0 of=disk.img bs=1440k
  有趣的是,这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。再如把第一个硬盘的前 512 个字节存为一个文件:
  dd if=/dev/hda of=disk.mbr bs=512 count=1



分享到:
评论

相关推荐

    Linux设备驱动程序学习(10)-时间、延迟及延缓操作 - Linux设备驱动程序

    本篇文章将深入探讨Linux设备驱动程序中的时间、延迟及延缓操作,这些概念对于理解设备驱动的工作原理至关重要。 首先,我们要明白时间在设备驱动中的作用。在计算机系统中,时间是一个基本的抽象概念,用于衡量...

    Linux设备驱动程序学习(10)-时间、延迟及延缓操作.pdf

    在Linux系统中,设备驱动程序经常需要处理时间相关的任务,如等待、计时以及延缓操作。本节主要探讨Linux设备驱动程序中的时间管理机制,包括时间的度量、延迟和延缓操作。 首先,时间的度量在Linux内核中主要通过...

    LINUX设备驱动第三版_588及代码.rar

    第七章 时间、延迟及延缓操作 度量时间差 获取当前时间 延迟执行 内核定时器 tasklet 工作队列 快速参考 第八章 分配内存 kmalloc函数的内幕 后备高速缓存 get_free_page和相关函数 vmalloc及其辅助函数...

    Linux设备驱动程序学习

    ·Linux设备驱动程序学习(10)-时间、延迟及延缓操作 ·Linux设备驱动程序学习(11)-中断处理 ·Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区 ·Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介...

    linux设备驱动程序

    第七章 时间、延迟及延缓操作 度量时间差 获取当前时间 延迟执行 内核定时器 tasklet 工作队列 快速参考 ch08.第八章 分配内存 kmalloc函数的内幕 后备高速缓存 get—free—page和相关函数 vmalloc及其辅助函数 per-...

    Linux设备驱动程序学习总结

    Linux设备驱动程序学习总结: *字符设备驱动程序 *调试技术 *并发和竞态 *Linux中的循环缓冲区 *内核的数据类型 *分配内存 *与硬件通信 *时间、延迟及延缓操作 *中断处理 *Linux设备模型

    linux设备驱动书籍详细说明

    - **时间、延迟及延缓操作**:讲解了如何处理定时任务、延迟执行等。 - **中断处理**:讨论了中断机制及其在驱动程序中的应用。 - **循环缓冲区**:解释了循环缓冲区的概念及其在驱动程序中的作用。 - **Linux设备...

    Linux驱动学习开发笔记

    时间、延迟及延缓操作** - 学习如何在内核中处理时间相关的操作,如定时器、延时等。 **6. 中断处理** - 中断是驱动程序中非常关键的部分,需要掌握如何编写中断处理程序。 **7. 循环缓冲区** - 在某些情况下...

    Linux DeviceDrivers 3rd Edition

    第七章 时间、延迟及延缓操作 183 度量时间差 183 获取当前时间 188 延迟执行 190 内核定时器 196 tasklet 202 工作队列 204 快速参考 208 第八章 分配内存 213 kmalloc函数的内幕 213 后备高速缓存 217 ...

    linux驱动程序

    **5.2 时间、延迟及延缓操作** - **5.2.1 计时**:包括定时器、时钟等。 - **5.2.2 延迟**:如何让内核延时一段时间。 - **5.2.3 内核定时器**:使用定时器进行定时操作。 #### 六、内存和I/O访问 **6.1 LINUX...

    linux驱动基础试题.pdf

    3. Linux 设备驱动程序中,程序延缓执行的机制包括延迟函数、定时器、中断等。延迟函数用于延迟执行某个函数,定时器用于在将来的某个时刻执行某个函数,而中断则用于在事件发生时执行某个函数。 4. Linux 设备驱动...

    linux驱动基础试题.doc

    根据提供的文档信息,我们可以归纳出一系列关于Linux驱动基础的关键知识点,包括设备分类、设备节点管理、驱动程序组织、设备号分配、内存管理等核心概念及其实际应用。 ### 一、选择题解析 #### 1. 设备分类 - **...

    arm+linux.pdf

    - **内核定时器与延迟机制**:介绍内核中定时器的使用方法,以及如何实现延迟操作。 - **Linux内存管理及使用**:学习Linux内核如何管理内存资源,包括内存分配、释放等基本操作。 - **Linux内存映射**:讲解虚拟...

    时间延缓长度收缩.ppt

    时间延缓长度收缩是狭义相对论的基础概念之一,对于时间和空间的理解具有重要影响。以下是时间延缓长度收缩的相关知识点: 一、时间延缓 时间延缓是指在高速运动的参考系中,时间会被延缓的现象。根据狭义相对论,...

    三种常用的LED驱动电源详解

    什么是LED驱动电源 LED驱动电源就是把电源供应转换为特定的电压电流以驱动LED发光的电源转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出...

    爱因斯坦-高斯-贝内理论中小黑洞的引力子时间延迟和速度极限

    卡曼纽(Camanho),爱德斯坦(Edelstein),马尔达塞纳(Maldacena)和日博埃多夫(Zhiboedov)已证明,在爱因斯坦-高斯-邦内特理论中,引力子会经历负的夏皮罗时间延迟,即时间提前。 他们研究了以单一“冲击波”...

    Windows延缓写入失败

    1. **硬件故障**:硬盘驱动器的物理损坏是导致延缓写入失败的主要原因之一。这可能包括硬盘磁头故障、磁道损坏或其他硬件层面的问题。 2. **系统资源不足**:当系统内存或处理器资源紧张时,缓存机制可能无法正常...

    CMD命令行高级教程

    第七章 DOS编程高级技巧 一、界面设计 二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、...

    闵可夫斯基空间中时间延缓效应

    在物理学中,时间延缓效应是爱因斯坦相对论的核心概念之一,特别是在闵可夫斯基空间的框架下得以深入理解。闵可夫斯基空间是由德国数学家赫尔曼·闵可夫斯基提出的,它是一个四维的时空模型,其中包含了三维空间和一...

Global site tag (gtag.js) - Google Analytics