linux 内核头文件及内核库文件
2015-04-08 21:57
162 查看
与用户空间应用不同的是,内核不能调用标准C库或其它任何不属于内核的库。主要原因是,速度及大小的限制。
标准C库对内核而言实在是太大了。
许多常用的的 libc 函数已经在内核中实现了。内核中的库文件是在内核的根目录下 lib 目录下存放。
如常用的字符串操作函数是在 lib/string.c 中定义的,调用时主需要将头文件 <linux/string.h>包含进即可。
关于内核的头文件,内核是不能包含内核之外的头文件的,如同内核不能调用内核之外的库一样。
1)基本的头文件放在内核的 include/ 目录下,比如以下引用的头文件
位于 include/linux/i2c.h
2)平台相关的头文件位于 arch/<architecture>/include/asm 下,在包含这些头文件时以 asm/ 为前缀,如下:
内核中不能调用 printf(), 但内核提供了 printk() 供我们使用。
printk() 与printf()的用法很相似,如下:
printk() 与 printf() 一个显著的区别是,printk() 允许使用优先级标记。该优先级标志被 syslogd 进程用来决定在哪显示
内核打印信息。如下例:
注意,在优先级标记 KERN_ERR 后面没有逗号。
标准C库对内核而言实在是太大了。
许多常用的的 libc 函数已经在内核中实现了。内核中的库文件是在内核的根目录下 lib 目录下存放。
如常用的字符串操作函数是在 lib/string.c 中定义的,调用时主需要将头文件 <linux/string.h>包含进即可。
关于内核的头文件,内核是不能包含内核之外的头文件的,如同内核不能调用内核之外的库一样。
1)基本的头文件放在内核的 include/ 目录下,比如以下引用的头文件
#include <linux/i2c.h>
位于 include/linux/i2c.h
2)平台相关的头文件位于 arch/<architecture>/include/asm 下,在包含这些头文件时以 asm/ 为前缀,如下:
#include <asm/ioctl.h>
内核中不能调用 printf(), 但内核提供了 printk() 供我们使用。
printk() 与printf()的用法很相似,如下:
printk("Hello world! A string '%s' and an integer '%d'\n", str, i);
printk() 与 printf() 一个显著的区别是,printk() 允许使用优先级标记。该优先级标志被 syslogd 进程用来决定在哪显示
内核打印信息。如下例:
printk(KERN_ERR "this is an error!\n");
注意,在优先级标记 KERN_ERR 后面没有逗号。
相关文章推荐
- Linux内核Makefile文件
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- 使用 /proc 文件系统来访问 Linux 内核的内容
- linux初学-内核编译以及文件系统3
- linux初学-内核编译以及文件系统2
- Linux内核文件offset指针敏感信息泄露漏洞
- 文件结构体struct file(Linux 2.6.23内核) (转)
- linux-2.6.24.4内核移植到s3c2440----使用busybox-1.9.2制作根文件系统
- Linux内核Makefile文件
- linux-2.6.18内核移植及根文件系统的制做(简易)
- 使用 /proc 文件系统来访问 Linux 内核的内容
- [IBM Developer]使用 /proc 文件系统来访问 Linux 内核的内容
- 实时管理Linux内核——使用 /proc 文件系统来控制系统
- Linux内核Makefile文件
- Linux系统内核文件Cache管理机制
- Linux内核Makefile文件
- linux 内核 文件到磁盘影射
- inotify -- Linux 2.6 内核中的文件系统变化通知机制
- linux初学-内核编译以及文件系统1
- linux内核与根文件系统的烧写