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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章