频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Linux内核模块编程--替代printk系列

来源:yesky 作者:翻译:cherami 出处:巧巧读书 2005-12-07 进入讨论组
代替 printk
  在本书开始的时候,我说过 X 和内核模块编程不能混合。
在开发内核模块时那是对的,但在实际使用中你想可以向任何向模块发送命令的终端(Teletype, 最初是用于和Unix系统沟通的键盘和打印机的组合,而今天它是用于Unix程序的文本流的抽象,无论它是一个物理的终端、X显示器上的 xterm 还是用telnet网络连接,等等。)发送消息。这对在内核模块被释放后识别错误是很重要的,因为它将被所有模块使用。
  实现这个的一个办法是使用指向当前运行作业的指针 current得到当前作业的终端结构。然后我们在那个终端结构里面找指向字符串写函数的指针,我们可以用它向终端写字符串。

范例 printk.c

/* printk.c - 向你正在运行的终端输出文本,无论它是否通过 X11, telnet, 等等。 */


/* Copyright (C) 1998 by Ori Pomerantz */


/* 必要头文件 */

/* 标准头文件 */
#include /* 内核工作 */
#include /* 明确指定是模块 */

/* 处理 CONFIG_MODVERSIONS */
#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include
#endif

/* 必要的 */
#include /* 为了 current */
#include /* 为了终端声明 */


/* 向当前作业使用的终端打印字符串 */
void print_string(char *str)
{
struct tty_struct *my_tty;

/* 当前作业终端 */
my_tty = current->tty;

/* 如果 my_tty 为 NULL则意味着当前作用没有你可以打印的终端。
* (这是可能的,例如它是一个守护进程
* 在这中情况下我们不能做任何事。 */
if (my_tty != NULL) {

/* my_tty->driver 是包含终端函数的结构,它们中的一个(写)用于向终端写字符串。
* 它可以用于从用户内存段或内核内存段取字符串。
*
* 函数的第一个参数是要写向的终端,因为同一函数通常用于所有的属某种类型的终端。
* 第二个参数控制是从内核内存段(false,0)还是从用户内存段(true,非零)接收字符串。
* 第三个参数是指向字符串的指针,第四个是字符串的长度。
*/
(*(my_tty->driver).write)(
my_tty, /* 终端自己 */
0, /* 我们不从用户空间取字符串 */
str, /* 字符串 */
strlen(str)); /* 长度 */

/* 终端是最初的硬件设备,它(通常)严格的坚持 ASCII 标准。
* 根据 ASCII,换行需要两个字符,回车和走行。另一方面,在Unix 中,
* ASCII 走行符用于这两个目的-因此我们不能仅仅用 \n,因为它没有回车,
* 下一行将在上面那行后的走行符的右边的那列开始而非行首。
*
* 顺便说一下,这就是为什么 Unix 和 Windows的文本文件不同的原因。
* 在 CP/M 和它的派生产品,例如 MS-DOS 和 Windows, ASCII 被严格的坚持,因此
* 新行需要走行和回车。
*/
(*(my_tty->driver).write)(
my_tty,
0,
"\015\012",
2);
}
}

/* 初始化和清除模块 ****************** */

/* 初始化模块-登记 proc 文件 */
int init_module()
{
print_string("Module Inserted");

return 0;
}
/* 清除 - 从/proc中注销我们的文件 */
void cleanup_module()
{
print_string("Module Removed");
}文字:http://www.qqread.com/linux/y431145206.html 更多文章 更多内容请看Linux集群技术体验Linux的音影世界Linux驱动大全专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章