本文所涉及实验为博文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设备驱动程序中的时间、延迟及延缓操作,这些概念对于理解设备驱动的工作原理至关重要。 首先,我们要明白时间在设备驱动中的作用。在计算机系统中,时间是一个基本的抽象概念,用于衡量...
在Linux系统中,设备驱动程序经常需要处理时间相关的任务,如等待、计时以及延缓操作。本节主要探讨Linux设备驱动程序中的时间管理机制,包括时间的度量、延迟和延缓操作。 首先,时间的度量在Linux内核中主要通过...
第七章 时间、延迟及延缓操作 度量时间差 获取当前时间 延迟执行 内核定时器 tasklet 工作队列 快速参考 第八章 分配内存 kmalloc函数的内幕 后备高速缓存 get_free_page和相关函数 vmalloc及其辅助函数...
·Linux设备驱动程序学习(10)-时间、延迟及延缓操作 ·Linux设备驱动程序学习(11)-中断处理 ·Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区 ·Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介...
第七章 时间、延迟及延缓操作 度量时间差 获取当前时间 延迟执行 内核定时器 tasklet 工作队列 快速参考 ch08.第八章 分配内存 kmalloc函数的内幕 后备高速缓存 get—free—page和相关函数 vmalloc及其辅助函数 per-...
Linux设备驱动程序学习总结: *字符设备驱动程序 *调试技术 *并发和竞态 *Linux中的循环缓冲区 *内核的数据类型 *分配内存 *与硬件通信 *时间、延迟及延缓操作 *中断处理 *Linux设备模型
- **时间、延迟及延缓操作**:讲解了如何处理定时任务、延迟执行等。 - **中断处理**:讨论了中断机制及其在驱动程序中的应用。 - **循环缓冲区**:解释了循环缓冲区的概念及其在驱动程序中的作用。 - **Linux设备...
时间、延迟及延缓操作** - 学习如何在内核中处理时间相关的操作,如定时器、延时等。 **6. 中断处理** - 中断是驱动程序中非常关键的部分,需要掌握如何编写中断处理程序。 **7. 循环缓冲区** - 在某些情况下...
第七章 时间、延迟及延缓操作 183 度量时间差 183 获取当前时间 188 延迟执行 190 内核定时器 196 tasklet 202 工作队列 204 快速参考 208 第八章 分配内存 213 kmalloc函数的内幕 213 后备高速缓存 217 ...
**5.2 时间、延迟及延缓操作** - **5.2.1 计时**:包括定时器、时钟等。 - **5.2.2 延迟**:如何让内核延时一段时间。 - **5.2.3 内核定时器**:使用定时器进行定时操作。 #### 六、内存和I/O访问 **6.1 LINUX...
3. Linux 设备驱动程序中,程序延缓执行的机制包括延迟函数、定时器、中断等。延迟函数用于延迟执行某个函数,定时器用于在将来的某个时刻执行某个函数,而中断则用于在事件发生时执行某个函数。 4. Linux 设备驱动...
根据提供的文档信息,我们可以归纳出一系列关于Linux驱动基础的关键知识点,包括设备分类、设备节点管理、驱动程序组织、设备号分配、内存管理等核心概念及其实际应用。 ### 一、选择题解析 #### 1. 设备分类 - **...
- **内核定时器与延迟机制**:介绍内核中定时器的使用方法,以及如何实现延迟操作。 - **Linux内存管理及使用**:学习Linux内核如何管理内存资源,包括内存分配、释放等基本操作。 - **Linux内存映射**:讲解虚拟...
时间延缓长度收缩是狭义相对论的基础概念之一,对于时间和空间的理解具有重要影响。以下是时间延缓长度收缩的相关知识点: 一、时间延缓 时间延缓是指在高速运动的参考系中,时间会被延缓的现象。根据狭义相对论,...
什么是LED驱动电源 LED驱动电源就是把电源供应转换为特定的电压电流以驱动LED发光的电源转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出...
卡曼纽(Camanho),爱德斯坦(Edelstein),马尔达塞纳(Maldacena)和日博埃多夫(Zhiboedov)已证明,在爱因斯坦-高斯-邦内特理论中,引力子会经历负的夏皮罗时间延迟,即时间提前。 他们研究了以单一“冲击波”...
1. **硬件故障**:硬盘驱动器的物理损坏是导致延缓写入失败的主要原因之一。这可能包括硬盘磁头故障、磁道损坏或其他硬件层面的问题。 2. **系统资源不足**:当系统内存或处理器资源紧张时,缓存机制可能无法正常...
第七章 DOS编程高级技巧 一、界面设计 二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、...
在物理学中,时间延缓效应是爱因斯坦相对论的核心概念之一,特别是在闵可夫斯基空间的框架下得以深入理解。闵可夫斯基空间是由德国数学家赫尔曼·闵可夫斯基提出的,它是一个四维的时空模型,其中包含了三维空间和一...