zoukankan      html  css  js  c++  java
  • linux 内核头文件及内核库文件

    与用户空间应用不同的是,内核不能调用标准C库或其它任何不属于内核的库。主要原因是,速度及大小的限制。

    标准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'
    ", str, i);

    printk() 与 printf() 一个显著的区别是,printk() 允许使用优先级标记。该优先级标志被 syslogd 进程用来决定在哪显示

    内核打印信息。如下例:

    printk(KERN_ERR "this is an error!
    ");

    注意,在优先级标记 KERN_ERR 后面没有逗号。

  • 相关阅读:
    ZeroMQ
    ps-lite源码解析
    RDMA
    MapReduce
    parameter server
    BytePS
    ELF程序头部及程序加载
    网络序与主机序
    CPU、CPU核与线程的关系
    chroot
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4404223.html
Copyright © 2011-2022 走看看