易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux系统下 内核模块开发

 
1. modprobe 加载内核模块
 
a) 在 /etc/module.conf 中查找别名
b) 在 lib/modules/version/module.dep 中判断是否有依赖模块需要被提前加载(该文件被depmod-a建立)
 
2. 2.4内核中不一定非用init_module和cleanup_module做开始和结束的函数,但需要用module_init和
 
module_exit申明。
 
3. 宏 __init 和 __exit 可以使函数在运行完成后自动回收内存(限模块中),__initdata用于变量,
 
举例:
 
#include //需要包含的头文件
 
static int ntest __initdata = 3;
 
static int __init test_init(void) {...}
static void __exit test_exit(void) {...}
 
module_init(test_init); //申明放在实现函数后
module_exit(test_exit);
 
4. 一些模块说明的相关宏,可以用objdump可以查看相关信息。
MODULE_LICENSE() 说明代码许可类型
MODULE_DESCRIPTION() 模块描述
MODULE_AUTHOR() 作者
MODULE_SUPPORTED_DEVICE() 模块支持的设备
 
5. 参数传递使用宏 MODULE_PARM(变量名,类型)。
支持的类型有"b"比特 "h"短整 "i"整数 "l"长整 "s"字符串
 
static int myint = 9;
static char *mystr = "test"; //注意需要传递参数的默认值
 
MODULE_PARM(myint, "i");
MODULE_PARM(mystr, "s");
 
6. 多个文件编译成一个内核模块:
a) 需要在一个源程序中加入
#define __NO_VERSION__
#include
b) 编译同普通的单个内核文件
c) 连接:ld -m elf_i386 -r -o <1st src file.o> <2nd src file.o>
 
7. strace 查一个程序所用到的系统调用
 
8. 关于file_operations结构体定义在linux/fs.h文件中。
使用方式:
struct file_operations fops = {
read: device_read,
write: device_write,
open: device_open,
release: device_release
}
C99的使用方式:
struct file_operations fops = {
.read = device_read,
.write = device_write,
.open = device_open,
.release = device_release
}


相关文档:

Linux下用C语言API连接MySQL数据库

 像PHP和perl一样,MySQL也提供的C语言使用的API. C代码的API是随MySQL一起发布的。 它包含在mysqlclient库中, 可以使C程序来访问数据库。
    MySQL源码包中的许多客户端都是用C写的。 如果你正在找使用这些C API的例子, 可以看看客户端的写法。你可以在MySQL源码包的clients目录找到这些例子。
& ......

linux下dd命令详解


   名称: dd
使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file
使用方式:
dd [option]
如果你想要在线看 manual, 可以试试:
dd --help
或是
info dd
如果你想要看看这个版本如何:
dd --version
输入或输出
dd if=[STDIN] of=[STDOUT]
强迫输入或输出的Si ......

DBA要掌握的Linux 命令精通指南

高级 Linux 命令精通指南,第 3 部分:资源管理
作者:Arup Nanda
2009 年 1 月发表
在此部分中,了解用于监视物理组件的高级 Linux 命令
Linux 系统由若干主要物理组件组成,如 CPU、内存、网卡和存储设备。要有效地管理 Linux 环境,您应该能够以合理的精度测量这些资源的各种指标 — 每个组件处理多少资源、 ......

Linux系统下NFS服务器的配置

 
一、NFS服务器的安装
    检查linux系统中是否安装了nfs-utils和portmap两个软件包(RHEL4系统默认已经安装了这两个软件包)
    命令#rpm –q nfs-utils portmap
    二、查看NFS服务器是否启动
    命令#service nfs starus
   ......

Linux下动态库的生成及链接方法(1)

               Linux下动态库的生成及链接方法 (1)
      Linux 下动态库文件的扩展名为".so"(Shared Object)。按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号)。这样,线程函数库被称作 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号