我是靠谱客的博主 会撒娇芹菜,最近开发中收集的这篇文章主要介绍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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部