我是靠谱客的博主 会撒娇芹菜,这篇文章主要介绍linux那些事之SYSCALL_DEFINExSYSCALL_DEFINEx,现在分享给大家,希望可以做个参考。

SYSCALL_DEFINEx

内核代码中常常在查看系统调用宏时常常会看到使用SYSCALL_DEFINEX一系列宏定义来定义内核针对系统调用接口的定义

该宏位于includelinuxsyscalls.h文件中,针对系统调用的参数不同,使用了一系列的宏进行方便定义:

#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)

针对不同的参数个数,一般会使用不同的宏定义,例如open系统调用总共由三个参数,内核中针对open的系统调用为:

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
	return ksys_open(filename, flags, mode);
}

上述几个宏定义,最终都是调用SYSCALL_DEFINEx,</

最后

以上就是会撒娇芹菜最近收集整理的关于linux那些事之SYSCALL_DEFINExSYSCALL_DEFINEx的全部内容,更多相关linux那些事之SYSCALL_DEFINExSYSCALL_DEFINEx内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部