“静态int函数(.)

您所在的位置:网站首页 人脸识别lock是什么意思 “静态int函数(.)

“静态int函数(.)

2024-07-14 10:17| 来源: 网络整理| 查看: 265

不是以一对括号结尾的所有东西都是函数(调用)。在这种情况下,它们是参数化的宏展开。宏被定义为

代码语言:javascript复制#define __acquires(x) __attribute__((context(x,0,1))) #define __releases(x) __attribute__((context(x,1,0)))

在内核构建树中的include/linux/compiler.h文件中。

这些宏扩展为属性定义的目的是用函数将获得哪些锁定结构(即锁)和释放(即解锁)的信息对函数符号进行注释。具体而言,这些机制的目的是调试锁定机制( Linux内核包含一些允许它检测潜在死锁情况并报告此情况的代码)。

https://en.wikipedia.org/wiki/Sparse

__attribute__是GCC编译器特有的关键字,允许将属性分配给给定的符号http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function-Attributes。

由于宏是在文本级别展开的,编译器甚至在查看宏之前,实际编译器所看到的特定代码段的结果是

代码语言:javascript复制static int fb_mmap(struct file *file, struct vm_area_struct * vma) __attribute__((context(&info->lock,0,1))) __attribute__((context(&info->lock,1,0))) { … }

这些宏以双下划线__开头,表示它们是编译器环境的一部分。从一个或两个下划线开始的所有标识符都保留给编译器环境实现。在Linux内核中,因为Linux是一个操作系统内核,它不使用标准库(因为它根本不可用),所以它自然会定义它自己的编译器环境定义,私有于它。因此,这两个下划线表示,这是编译器环境/实现特定的内容。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3