Zircon中新增系统调用

zircon系统调用是有一个生成框架,类似于linux的SYSCALL_DEFINE宏。

系统调用号由系统调用在syscalls.abigen文件中的定义顺序决定,实际上是依次递增的。

在相关文件定义后,会自动申明zx_name的函数,用户之间使用的是这个zx_name的函数。

添加自定义系统调用
修改syscalls.abigen文件,增加自定义系统调用格式,包括系统调用名字,参数,返回值,格式
syscall wb_syscall blocking
(a: int, b:int)
returns (zx_status_t);

上面定义了一个系统调用,名字为wb_syscall ,接受2个int参数a和b,返回值是zx_status_t
系统调用号和该定义在syscalls.abigen文件中的顺序有关系,从1开始递增。
具体可以在out目录下的zx-syscall-numbers.h文件中查看
#define ZX_SYS_wb_syscall 147

这个和linux的 作用类似SYSCALL_DEFINE3

在zircon内核实现系统调用,比如在zircon/kernel/syacall/zircon.cpp中实现对应系统调用
zx_status_t sys_wb_syscall(int a,int b) {
printf(“sys_wb_syscall a %d b %d\n”,a,b);
return ZX_OK;
}

在程序中使用系统调用zx_wb_syscall(1,2);

你可能感兴趣的:(zircon)