Linux内核--各种宏定义
来源:互联网 发布:c语言break和continue 编辑:程序博客网 时间:2024/05/16 14:33
1. asmlinkage宏
- #define asmlinkage __attribute__((regparm(0))).
跟asmlinkage相对应的是fastcall, fastcall宏是在include/asm-i386/linkage.h中定义的宏,它指导GCC连接时把fastcall修饰的函数的前三个参数用寄存器传递。asmlinkage和fastcall不能共存。
2. cond_syscall宏
- /*
- * "Conditional" syscalls
- *
- * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
- * but it doesn't work on all toolchains, so we just do it by hand
- */
- #ifndef cond_syscall
- #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
- #endif
解释:cond_syscall(sys_socketcall);
语句的意思是:如果存在sys_socketcall(),则声明这个函数,在程序链接的时候使用这个函数;如果不存在sys_socketcall()这个函数,就使用sys_ni_syscall()函数代替。
3. ALIGN宏
- #define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1)
- #define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask))
将x以a长度向上对齐;其中,a为2的整次幂; 其结果就是16;
4. weak_alias宏
- # define weak_alias(name, aliasname) _weak_alias (name, aliasname)
- # define _weak_alias(name, aliasname) \
- extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
为标号socket定义一个弱化别名__socket。仅当socket没有在其他任何地方定义时,连接器就会用__socket解析socket相关的符号。
0 0
- Linux内核--各种宏定义
- Linux内核--各种宏定义
- linux内核宏定义
- linux内核宏定义
- linux内核宏定义
- linux内核宏定义
- Linux 内核常见宏定义
- linux内核的宏操作定义之一
- linux内核源码中常见宏定义
- linux驱动 内核函数 变量 宏定义
- linux内核源码中常见宏定义
- linux内核container_of宏定义分析
- linux内核的container_of()宏定义分析
- linux内核container_of宏定义分析
- linux内核container_of宏定义分析
- linux内核container_of宏定义分析
- Linux内核 container_of 宏定义分析
- linux内核中两个常见宏定义
- The method lists() of type IUserDaoImpl must override a superclass method
- 超精简极速版VMware 5.51 19175
- git如何放弃working direcotry中未提交的本地修改
- angularjs cookie 操作
- PAT天梯赛练习题——L3-004. 肿瘤诊断(三维连通块并查集)
- Linux内核--各种宏定义
- SFTP上传文件详解
- git常用命令指导
- iOS 判断身份证号码
- LeetCode 140 Word Break II--In C++
- SQLServer 语句-创建索引
- Android 6.0 - 动态权限管理的解决方案
- 论文笔记 | SSD: Single Shot MultiBox Detector
- iOS 判断是否连接wifi