1.SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) 2.#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) 3.#define SYSCALL_DEFINEx(x, sname, ...)\ __SYSCALL_DEFINEx(x, sname, __VA_ARGS__) 4.#define __SYSCALL_DEFINEx(x, name, ....
所以对函数定义 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 ...
Socket的创建是在用户空间调用socket系统函数完成的,创建一个Socket返回一个文件描述符fd,内核的系统调用接口为SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol),在net/socket.c文件中,下面我们看一下内核中的源码实现。 SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) { in...
函数名称:SYSCALL_DEFINE3 函数原型:SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value, struct itimerval __user *, ovalue) 返回类型: 参数:无342 如果value则343 error等于get_itimerval( & set_buffer, value) 344 如果error则返回:error 346...
SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) #define ... thinkwhat 0 358 Apple开发_宏定义详解 2018-12-19 22:09 − # 1、宏定义说明 - 宏定义是比较常用的预处理指令,即使用“标识符”来表示“替换列表”中的内容。标识符称为宏名,在预处理过程中,预处理器会把源程序中所有宏名,替换成宏...
SYSCALL_DEFINE3 http://blog.csdn.net/yueyingshaqiu01/article/details/48786961
所以对函数定义 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__)) ...
#define__SC_DECL3(t3,a3, ...)t3a3,__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__)) ...