SYSCALL_DEFINE3 在何处定义?

#define SYSCALL_DEFINE3(name, ...)

SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)

#define SYSCALL_DEFINEx(x, sname, ...)                                /
        __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)

#define __SYSCALL_DEFINEx(x, name, ...)                                        /
        asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__))

include/linux/syscalls.h, line 228

#define __SYSCALL_DEFINEx
(x
, name
, ...)                                 /

asmlinkage
long sys
##name(__SC_DECL##x(__VA_ARGS__))

#define __SC_DECL3
(t3
, a3
, ...) t3
a3
, __SC_DECL2
(__VA_ARGS__)

所以对函数定义 SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) 就等于

SYSCALL_DEFINEx(3, _##socket, __VA_ARGS__)

= asmlinkage long sys_socket(__SC_DECL3(__VA_ARGS__))

= asmlinkage long sys_socket(int family, __SC_DECL2(__VA_ARGS__))

最终得到

asmlinkage long sys_socket(int family, int type, int protocol)

SYSCALL_DEFINE3 宏定义相关推荐

  1. Linux内核源码中使用宏定义的若干技巧

    在C中,宏定义的概念虽然简单,但是真要用好却并不那么容易,下面从Linux源码中抽取一些宏定义的使用方法,希望能从中得到点启发: 1. 类型检查 比如module_init的宏定义: 点击(此处)折叠 ...

  2. C++ #define(宏定义)的使用

    C++ 宏定义 #define命令是C++语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. 宏定义的一般形式 #define <宏名& ...

  3. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

  4. c 宏定义用法#define

    转自:https://blog.csdn.net/boring_wednesday/article/details/78756696 宏定义 语法     #define name Stuff #de ...

  5. C语言宏定义使用技巧

    写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H ...

  6. 【C语言】07-预处理指令;-宏定义

    预处理指令简介; 1,C在对源程序进行编译之前,会对一些特殊的预处理指令作解释,产生一个新的源程序,此过程叫做编译预处理.C在经过编译预处理之后才对新的源码进行通常的编译; 2,预处理以'#'开头,且 ...

  7. 巧用宏定义进行调试 (转)

    巧用宏定义进行调试 在进行程序设计时,有时我们往往不希望借住于调试工具(如:gdb, vc),而以输出调试信息的方式进行调试时,我们就可以借住于强大的宏定义来进行调试.    一.在GCC下的定义方法 ...

  8. python用海伦公式求面积_用带参数的宏定义,通过海伦公式求三角形的面积

    要求: 海伦公式: ,其中 ,a,b,c为三角形的三个边.定义两个带参数的宏,一个用来求p,另一个用来求s 题目分析: 首先,题目要求是通过输入三角形的三条边,输出三角形的面积.因为不是任意的三条边都 ...

  9. iOS 开发 高级:使用 宏定义macros (#,##,...,__VA_ARGS_)

    一直以来用宏定义#define也就是定义一些简单的常量,至多也就是定义一个函数,很少关注宏定义的用法.直到看到这样的代码: [cpp] view plaincopy #define PLAYSOUND ...

最新文章

  1. python 灰度图像_python库skimage 给灰度图像染色
  2. Apache、Nginx、Tomcat、PHP的区别
  3. Websphere设备、企业部署应用程序 【应用】
  4. BZOJ5286:[HNOI/AHOI2018]转盘——题解
  5. 博士哭诉自己入职深大7年,月薪不足3000开不起网课,望学校补助
  6. oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程
  7. qt代码中判断windows/linux/arm等系统
  8. 下行物理信道rs_这些CH结尾的LTE物理信道傻傻分不清楚?快来看这篇文章!
  9. vim 配置文件留存
  10. JAVA常见算法题(十九)
  11. linux 线程的基本知识
  12. c++ primer plus第六版复习题及答案
  13. [POJ3537]Crosses and Crosses
  14. oracle配置安全更新失败,安装Oracle11gR2先决条件检查失败的详细解决处理过程
  15. MIT牛人解说数学体系
  16. 轻松查询多个韵达快运最后物流中含有某个地方的单号
  17. Step Hero NFT奇幻主题游戏
  18. linux设置自己的网站,我是如何在Linux服务器部署自己的网站
  19. 将png图片背景色置为透明
  20. oracle原厂培,数据库Oracle 11g OCP 原厂培训完整课件PDF文档

热门文章

  1. RMAN的备份与恢复
  2. Matlab的bsxfun函数
  3. android Criteria
  4. 【技术点】数据结构(六) -- 哈希表
  5. release版本和debug版本
  6. LCD12864串行驱动程序
  7. 网上在线培训平台哪家好?
  8. python 创建虚拟环境报错
  9. linux coredump
  10. 树莓派配置无线网络(补充) 【for_wind】