精华内容
下载资源
问答
  • Linux 端口字节输出函数 定义

    千次阅读 2011-03-07 16:50:00
    函数 outb_p(value,port) 位置/include/asm/io.h   jmp 1f的含义:延迟两个指令周期,防止数据传输的延迟 程序将会向前寻找跳转的标签,并且在下面第一个标签处跳转   <br />#...

    函数 outb_p(value,port)  位置/include/asm/io.h

     

    jmp 1f的含义:延迟两个指令周期,防止数据传输的延迟

    程序将会向前寻找跳转的标签,并且在下面第一个标签处跳转

     

    #define outb_p(value,port) /

    __asm__ ("outb %%al,%%dx/n" /

    "/tjmp 1f/n" /

    "1:/tjmp 1f/n" /

    "1:"::"a" (value),"d" (port))

    展开全文
  • linux驱动 内核函数 变量 定义

    千次阅读 2010-06-17 13:56:00
    读书笔记: 我们写驱动时接触到的内核函数, 变量, 定义, 和 /proc 文件. 它的用意是作为一个参考insmodmodprobe(自动检测 模块加载时需要的别的模块)rmmod 用户空间工具, 加载模块到运行中的...

    读书笔记:

    我们写驱动时接触到的内核函数, 变量, 宏定义, 和 /proc 文件. 它的用意是作为一个参考

    insmod
    modprobe(自动检测 模块加载时需要的别的模块)
    rmmod

    用户空间工具, 加载模块到运行中的内核以及去除它们.

    #include <linux/init.h>
    module_init(init_function);
    module_exit(cleanup_function);

    指定模块的初始化和清理函数的宏定义.

    __init
    __initdata
    __exit
    __exitdata

    函数( __init 和 __exit )和数据 (__initdata 和 __exitdata)的标记, 只用在模块初始化或者清理时间. 为初始化所标识的项可能会在初始化完成后丢弃; 退出的项可能被丢弃如果内核没有配置模块卸载. 这些标记通过使相关的目标在可执行文件的特定的 ELF 节里被替换来工作.

    #include <linux/sched.h>

    最重要的头文件中的一个. 这个文件包含很多驱动使用的内核 API 的定义, 包括睡眠函数和许多变量声明.

    struct task_struct *current;

    当前进程.

    current->pid
    current->comm

    进程 ID 和 当前进程的命令名.

    obj-m

    一个 makefile 符号, 内核建立系统时(编译时)用来决定当前目录下的哪个模块应当被建立.

    /sys/module
    /proc/modules

    /sys/module 是一个 sysfs 目录层次, 包含当前加载模块的信息. /proc/moudles 是旧式的, 那种信息的单个文件版本. 其中的条目包含了模块名, 每个模块占用的内存数量, 以及使用计数. 另外的字串追加到每行的末尾来指定标志, 对这个模块当前是活动的.

    vermagic.o

    来自内核源码目录的目标文件, 描述一个模块为之建立的环境.

    #include <linux/module.h>

    必需的头文件. 它必须在一个模块源码中包含.

    #include <linux/version.h>

    头文件, 包含建立的内核的版本信息.

    LINUX_VERSION_CODE

    整型宏定义, 对 #ifdef 版本依赖有用.

    EXPORT_SYMBOL (symbol);
    EXPORT_SYMBOL_GPL (symbol);

    宏定义, 用来输出一个符号给内核. 第 2 种形式输出没有版本信息, 第 3 种限制输出给 GPL 许可的模块.

    MODULE_AUTHOR(author);
    MODULE_DESCRIPTION(description);
    MODULE_VERSION(version_string);
    MODULE_DEVICE_TABLE(table_info);
    MODULE_ALIAS(alternate_name);

    放置文档(作者相关,模块版本信息)在目标文件的模块中.

    module_init(init_function);
    module_exit(exit_function);

    宏定义, 声明一个模块的初始化和清理函数.

    #include <linux/moduleparam.h>
    module_param(variable, type, perm);

    宏定义, 创建模块参数, 可以被用户在模块加载时调整( 或者在启动时间, 对于内嵌代码). 类型可以是 bool, charp, int, invbool, short, ushort, uint, ulong, 或者 intarray.

    #include <linux/kernel.h>
    int printk(const char * fmt, ...);

    内核代码的 printf 类似物.

    展开全文
  • linux驱动常用定义函数

    千次阅读 2015-06-23 19:26:36
    1、当前函数 __func__ 2、当前行  __LINE__

    1、当前函数

       __func__

    2、当前行

     

    __LINE__


    展开全文
  • Linux-linux系统函数

    千次阅读 2019-04-19 19:44:16
    1.Linux函数简述 Linux系统函数的用法必须结合Linux内核的工作原理 来理解,因为系统函数正是内核提供给应用程序的接口,而要理解内核的工作原理,必须熟练掌握C语言,因为内核也是用C语言写的。 我们在描述内核...

    linux系统函数

    1.Linux函数简述

    • Linux系统函数的用法必须结合Linux内核的工作原理 来理解,因为系统函数正是内核提供给应用程序的接口,而要理解内核的工作原理,必须熟练掌握C语言,因为内核也是用C语言写的。
    • 我们在描述内核工作原理时必然要用“指 针”、“结构体”、“链表”这些名词来组织语言,就像只有掌握了英语才能看懂英文书一样,只有学好了C语言才能看懂我描述的内核工作原理。

    2.文件I/O

    2.1-C标准库函数和系统函数的关系

    2.2文件描述符

    文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。

    一个进程默认打开3个文件描述符:

    STDIN_FILENO 0
    STDOUT_FILENO 1
    STDERR_FILENO 2
    

    标准输入(STDIN_FILENO)的文件描述符是 0
    标准输出(STDOUT_FILENO )的文件描述符是 1
    标准错误(STDERR_FILENO )的文件描述符是 2。

    • 新打开文件返回文件描述符表中未使用最小文件描述符。
    • 文件描述符的有效范围是0OPEN_MAX。一般来说,每个进程最多可以打开64个文件(0 — 63)。

    2.3-task_struct结构体

    • 为了管理进程,操作系统必须对每个进程所做的事情进行清楚的描述,为此,操作系统使用数据结构来代表处理不同的实体,这个数据结构就是通常所说的进程控制块PCB)。
    • linux操作系统下这就是task_struct结构体 ,所属的头文件#include <sched.h>每个进程都会被分配一个task_struct结构,它包含了这个进程的所有信息

    这个进程的主要信息

    • 1、与进程相关的唯一标识符:区别正在执行的进程和其他进程

    • 2、状态:描述进程的状态,因为进程有阻塞、挂起、运行等好几个状态,所以都有个表示符来记录进程的执行状态。

    • 3、优先级:如果有好几个进程正在执行,就涉及到进程的执行的先后顺序,这和进程的优先级这个标识符有关。

    • 4、程序计数器:程序中即将被执行指令的下一条地址。

    • 5、内存指针:程序代码和进程相关数据的指针。

    • 6、上下文数据:进程执行时处理器的寄存器中的数据。

    • 7、I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

    • 8、记账信息:包括处理机的时间总和,记账号等等

    2.4-files_struct结构体

    • files_struct结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 files_struct
    • 它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,files_struct的指针通常被命名为filefilp

    2.5-文件描述符、task_struct结构体(PBC)、files_struct结构体三者关系

    • 文件描述符fd只是一个小整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。·
    • 文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表,所有打开的文件都将通过此表中的文件描述符来引用;而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构函数可以看作是对fd直接操作的系统调用的封装, 它的优点是带有I/O缓存
    • 每个进程在PCB进程控制块中都保存着一份文件描述符表,文件描述符就是这个表的索引,文件描述表中每个表项都有一个指向已打开文件的指针,已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体

      2.6-open函数
    • open函数有两种形式,一种带两个参数,一种带三个参数
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    
    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode); 
    返回值:成功返回新分配的文件描述符,出错返回-1并设置errno
    

    pathname参数是要打开或创建的文件名,和fopen一样,pathname既可以是相对路径也可以是绝对路径flags参数有一系列常数值可供选择,可以同时选择多个常数用按位或运算符连接起来,所以这些常数的宏定义都以O_开头,表示or

    flag参数选项

    必选项:以下三个常数中必须指定一个,且仅允许指定一个。

    • O_RDONLY 只读打开
    • O_WRONLY 只写打开
    • O_RDWR 可读可写打开

    可选项:以下可选项可以同时指定0个或多个,和必选项按位或起来作为flags参数。可选项有很多, 这里只介绍一部分。

    • O_APPEND 表示追加。如果文件已有内容,这次打开文件所写的数据附加到文件的末尾 而不覆盖原来的内容。
    • O_CREAT 若此文件不存在则创建它。使用此选项时需要提供第三个参数mode,表示该 文件的访问权限。
    • O_EXCL 如果同时指定了O_CREAT,并且文件已存在,则出错返回。
    • O_TRUNC 如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断(Trun- cate)为0字节。
    • O_NONBLOCK对于设备文件,以O_NONBLOCK方式打开可以做非阻塞I/O(Nonblock I/ O)

    2.7-close函数
    close函数关闭一个已打开的文件:

    #include <unistd.h> int close(int fd);
    返回值:成功返回0,出错返回-1并设置errno
    

    参数fd是要关闭的文件描述符。需要说明的是,当一个进程终止时,内核对该进程所有尚未关闭的文件描述符调用close关闭,所以即使用户程序不调用close,在终止时内核也会 自动关闭它打开的所有文件。但是对于一个长年累月运行的程序(比如网络服务器),打开 的文件描述符一定要记得关闭,否则随着打开的文件越来越多,会占用大量文件描述符和系统资源。

    参考文章:
    https://www.cnblogs.com/pluslius/p/10088929.html
    https://blog.csdn.net/daboluo521/article/details/79598281
    https://www.cnblogs.com/hanxiaoyu/p/5677677.html

    展开全文
  • linux c中搜索 结构体 定义 关键字 #查找结构体 grep -Rn --include="*.h" --include="*.c" 'struct ether_header' /usr #查找定义 grep -Rn --include="*.h" --include="*.c" '#define PCAP_ERRBUF_SIZE' ...
  • Signal ()函数详细介绍 Linux函数

    万次阅读 多人点赞 2012-04-18 20:27:24
    signal()函数理解 在 这个头文件中。 signal(参数1,参数2); 参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的。 参数2:我们处理的方式(是...
  • 语言定义与预处理、函数函数库 目录 1、C语言预处理理论 2、C语言预处理代码实战 3、定义1 4、定义2 5、.函数的本质 6、.函数的基本使用 7、递归函数 8、函数库 9、字符串函数 10、数学库函数 11、自己制作...
  • 宏函数

    万次阅读 多人点赞 2018-08-22 17:48:32
    宏函数 宏函数在预处理的时候就会替换成相应的语句,十分像c++里面的模板。它的优点比正常函数更高效因为不用栈帧的开销,但是它的缺点就是1 没有类型检测 2 可能具有副作用 3可能导致代码量的增加这样会导致...
  • linux下可变参数及定义封装函数

    千次阅读 2016-03-18 13:42:00
    以下函数包含内容:a 使用封装可变参函数 b 可变参数。比较简单,无注释。   两个函数均可以打印出调用者的文件、函数、行号信息。需要参考该代码的,拿走不谢!   #include  #include  #include      #...
  • Linux 内核 time_after解析

    千次阅读 2019-08-27 07:38:52
    同学们留言回复答案看看可能很多老鸟对这样的Linux 内核已经见惯不怪了,但是作为新手的Linux内核开发者,我觉得非常有必要了解其中的原理和作用。jiffies 这个...
  • linux内核定义

    千次阅读 2011-04-21 15:06:00
    linux内核定义 1. gcc的__attribute__编绎属性 要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它
  • linux C函数之stat函数

    万次阅读 2013-09-14 23:09:05
    linuxC函数之stat函数1.函数功能:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中2.函数原型1)函数头文件#include #include 2)函数int stat(const char *file_name, struct stat *buf )3)返回...
  • linux open函数详解

    万次阅读 多人点赞 2018-06-15 10:28:15
    原文地址:https://blog.csdn.net/archyli/article/details/78937937一、open函数用来干什么open函数在...二、open函数的定义和参数我们首先来看下open函数Linux下的定义#include &lt;sys/types.h&gt; #i...
  • Linux函数可变参数va_args_##__VA_ARGS__
  • linux C下 利用宏函数打印调试信息

    千次阅读 2017-11-16 17:20:31
    /***************************************************** ...函数调试好以后可以注释掉此行使,程序打印调试信息的代码不编译进去 ******************************************************/ #inc
  • linux 函数库之 times

    万次阅读 2012-04-18 16:05:18
    函数名: times 头文件: #include 函数声明: clock_t times(struct tms *buf); man帮助查看: man 2 times 参数介绍: 1. clock_t typedef long int clock_t 2. tms struct tms {  clock_t tms_utime;...
  • 下面小编就为大家带来一篇linux kernel 打印函数指针对应的函数名方法。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
  • 函数定义

    千次阅读 2019-03-04 07:41:50
    原因在于在一些反复调用同一函数的场合,编译器可以用函数宏代替函数使之内嵌到程序里,进而避免了因反复调用函数而带来的保存、恢复现场的开支,使程序整体运行更快。 当然,有的同学会问:这确实是函数宏的一个...
  • Linux C 函数库参考手册 第1章 字符测试函数 第2章 数据转换函数 第3章 内存配置函数 第4章 时间函数 第5章 字符串处理函数 ...附录B 函数 附录C 不定参数 附录D Linux信号列表 附录E 常见错误代码及原因
  • 定义:  在内核源码中的位置:linux-2.6.30/include/linux/spinlock.h 定义格式:# define spin_lock_init(lock) \  do { *(lock) = SPIN_LOCK_UNLOCKED; } while
  • 第1章 字符测试函数 第2章 数据转换函数 第3章 内存配置函数 ...附录:编译程序,,不定参数,linux信号列表,常见错误代码及原因 pdf文档,400多页,函数大全,每个函数后面都有范例! 是学习linux程序的必备工具!
  • linux crypt函数

    万次阅读 2015-06-28 19:08:03
    linux crypt函数1. crypt定义 #define _XOPEN_SOURCE /* See feature_test_macros(7) */ #include <unistd.h > char *crypt(const char *key, const char *salt); 上面是man 3 crypt看到的crypt函数定义。 从...
  • linux C编程中EOF和feof函数的用法

    千次阅读 2012-04-12 22:55:13
    在c语言中经常用EOF和feof()来判断文件的结束,现将有关用法总结如下: ...feof() 用于测试流文件的结束,有函数两种定义: 定义: #define feof(_stream) ((_stream)->_flag & _IOEOF)
  • Linux rlimit 函数详解

    千次阅读 2019-03-25 16:33:48
    Linux系统中使用resource limit来表示,每个进程都可以设置不同的资源限制,当前进程和其以后fork的子进程会遵循此限制,而其他进程不受当前进程条件的影响。 ulimit命令 ulimit是一个shell内建的命令: ulimit 是 ...
  • linux C定义实现打印调试信息

    千次阅读 2016-02-28 13:56:44
    本文仅实现了三种定义调试  #define LOG(s) 日志显示(文件名:行号}+日志信息  #define ERROR(s) 错误信息位置(级别+文件名+函数名+行号+错误信息)  #define PrintArray2D(arr,m,n)
  • Linux延时函数

    2015-11-17 10:59:41
    每一个平台不太一样,最好自己定义一套跨平台的进行控制。 DOS: ...Linux:  sleep(1); //停留1秒  usleep(1000); //停留1毫秒  每一个平台不太一样,最好自己定义一套跨平台的进行控制 
  • chapter 1 字符测试函数 chapter 2 数据转换函数 chapter 3 内存配置函数 chapter 4 时间函数 ...APPENDIX B 函数 APPENDIX C 不定参数 APPENDIX D linux 信号列表 APPENDIX E 常见错误代码及原因
  • Linux C函数库参考手册PDF电子书下载: 目录: 第1章、字符测试函数 第2章、数据转换函数 第3章、内存配置函数 第4章、时间函数 ...附录B 函数 附录C 不定参数 附录D Linux信号列表 附录E 常见错误代码及原因
  • linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难。因此在程序中加入合理的打印信息,定位错误出现的文件名,函数名,行号等信息,能更高效的定位到问题的所在。 下面定义了,分别是WARNING,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,231
精华内容 50,492
关键字:

linux函数宏

linux 订阅