上一页 1 ··· 154 155 156 157 158 159 160 161 162 ··· 280 下一页
摘要: 一旦你有一个定义好的 read_proc 函数, 你应当连接它到 /proc 层次中的一个入口项. 使用一个 creat_proc_read_entry 调用: struct proc_dir_entry *create_proc_read_entry(const char *name,mode_t 阅读全文
posted @ 2019-07-06 08:48 樊伟胜 阅读(1620) 评论(0) 推荐(0) 编辑
摘要: 所有使用 /proc 的模块应当包含 <linux/proc_fs.h> 来定义正确的函数. 要创建一个只读 /proc 文件, 你的驱动必须实现一个函数来在文件被读时产生数据. 当 某个进程读文件时(使用 read 系统调用), 这个请求通过这个函数到达你的模块. 我们先 看看这个函数并在本章后面 阅读全文
posted @ 2019-07-06 08:45 樊伟胜 阅读(516) 评论(0) 推荐(0) 编辑
摘要: /proc 文件系统是一个特殊的软件创建的文件系统, 内核用来输出消息到外界. /proc 下 的每个文件都绑到一个内核函数上, 当文件被读的时候即时产生文件内容. 我们已经见到 一些这样的文件起作用; 例如, /proc/modules, 常常返回当前已加载的模块列表. /proc 在 Linux 阅读全文
posted @ 2019-07-06 08:44 樊伟胜 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 偶尔地, 当从一个驱动打印消息, 你会想打印与感兴趣的硬件相关联的设备号. 打印主次 编号不是特别难, 但是, 为一致性考虑, 内核提供了一些实用的宏定义( 在 <linux/kdev_t.h> 中定义)用于这个目的: int print_dev_t(char *buffer, dev_t dev) 阅读全文
posted @ 2019-07-06 08:39 樊伟胜 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 前面一节描述了 printk 是任何工作的以及怎样使用它. 没有谈到的是它的缺点. 大量使用 printk 能够显著地拖慢系统, 即便你降低 cosole_loglevel 来避免加载控制 台设备, 因为 syslogd 会不停地同步它的输出文件; 因此, 要打印的每一行都引起一次 磁盘操作. 从 阅读全文
posted @ 2019-07-06 08:39 樊伟胜 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 在驱动开发的早期, printk 非常有助于调试和测试新代码. 当你正式发行驱动时, 换句 话说, 你应当去掉, 或者至少关闭, 这些打印语句. 不幸的是, 你很可能会发现, 就在你 认为你不再需要这些消息并去掉它们时, 你要在驱动中实现一个新特性(或者有人发现了 一个 bug), 你想要至少再打开 阅读全文
posted @ 2019-07-06 08:38 樊伟胜 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 如果你不小心, 你会发现自己用 printk 产生了上千条消息, 压倒了控制台并且, 可能地, 使系统日志文件溢出. 当使用一个慢速控制台设备(例如, 一个串口), 过量的消息速率也 能拖慢系统或者只是使它不反应了. 非常难于着手于系统出错的地方, 当控制台不停地输 出数据. 因此, 你应当非常注意 阅读全文
posted @ 2019-07-06 08:38 樊伟胜 阅读(243) 评论(0) 推荐(0) 编辑
摘要: printk 函数将消息写入一个 LOG_BUF_LEN 字节长的环形缓存, 长度值从 4 KB 到 1 MB, 由配置内核时选择. 这个函数接着唤醒任何在等待消息的进程, 就是说, 任何在系统 调用中睡眠或者在读取 /proc/kmsg 的进程. 这 2 个日志引擎的接口几乎是等同的, 但 是注意 阅读全文
posted @ 2019-07-06 08:33 樊伟胜 阅读(181) 评论(0) 推荐(0) 编辑
摘要: Linux 在控制台记录策略上允许一些灵活性, 它允许你发送消息到一个指定的虚拟控制台 (如果你的控制台使用的是文本屏幕). 缺省地, 这个"控制台"是当前虚拟终端. 为了选择 一个不同地虚拟终端来接收消息, 你可对任何控制台设备调用 ioctl(TIOCLINUX). 下面 的程序, setcon 阅读全文
posted @ 2019-07-06 08:32 樊伟胜 阅读(690) 评论(0) 推荐(0) 编辑
摘要: Unix 系统已经长时间支持名为 readv 和 writev 的 2 个系统调用. 这些 read 和 write 的"矢量"版本使用一个结构数组, 每个包含一个缓存的指针和一个长度值. 一个 readv 调 用被期望来轮流读取指示的数量到每个缓存. 相反, writev 要收集每个缓存的内容到一 阅读全文
posted @ 2019-07-05 15:39 樊伟胜 阅读(1943) 评论(0) 推荐(0) 编辑
上一页 1 ··· 154 155 156 157 158 159 160 161 162 ··· 280 下一页