细数Office 2007及2010中新的Open XML格式给办公文档带来的优势(细数你的罪恶)
1014
2022-05-29
2.3 在内核系统调用头文件中新增系统调用号
在内核系统调用头文件中新增系统调用号,如下所示,在third_party/musl/porting/liteos_a/kernel/include/bits/syscall.h文件中,__NR_new_syscall_sample为新增系统调用号。用户态代码和内核态代码增加系统调用号方式相同,编号相同。
/* OHOS customized syscalls, not compatible with ARM EABI */ #define __NR_OHOS_BEGIN 500 #define __NR_pthread_set_detach (__NR_OHOS_BEGIN + 0) ... #define __NR_sysconf (__NR_OHOS_BEGIN + 21) #define __NR_new_syscall_sample (__NR_OHOS_BEGIN + 22) /* 新增的系统调用号 __NR_new_syscall_sample:522 */ #define __NR_syscallend (__NR_OHOS_BEGIN + 23) ...
在kernel/liteos_a/syscall/syscall_lookup.h中,增加一行,如下。
... /* 当前现有的系统调用清单 */ SYSCALL_HAND_DEF(__NR_chown, SysChown, int, ARG_NUM_3) SYSCALL_HAND_DEF(__NR_chown32, SysChown, int, ARG_NUM_3) #ifdef LOSCFG_SECURITY_CAPABILITY SYSCALL_HAND_DEF(__NR_ohoscapget, SysCapGet, UINT32, ARG_NUM_2) SYSCALL_HAND_DEF(__NR_ohoscapset, SysCapSet, UINT32, ARG_NUM_1) #endif /* 新增系统调用 */ SYSCALL_HAND_DEF(__NR_new_syscall_sample, SysNewSyscallSample, void, ARG_NUM_1) ...
2.4 在内核中新增系统调用对应的处理函数
需要在内核中新增系统调用函数声明及函数实现,并加入编译构建文件。首先,如下所示,在kernel/liteos_a/syscall/los_syscall.h中,SysNewSyscallSample为新增系统调用的内核处理函数声明。
... /* 当前现有的系统调用内核处理函数声明清单 */ ... extern int SysTimerGettime64(timer_t timerID, struct itimerspec64 *value); ... /* 新增的系统调用内核处理函数声明 */ extern void SysNewSyscallSample(int num); ...
然后在kernel/liteos_a/syscall目录下新建个源文件syscall_demo.c,新增系统调用的内核处理函数实现如下。
#include "los_printf.h" /* 新增系统调用内核处理函数的实现 */ void SysNewSyscallSample(int num) { PRINTK("kernel mode: num = %d\n", num); return; }
最后,在文件kernel/liteos_a/syscall/BUILD.gn中增加对syscall_demo.c源文件的编译管理。
import("//kernel/liteos_a/liteos.gni") module_switch = defined(LOSCFG_KERNEL_SYSCALL) module_name = get_path_info(rebase_path("."), "name") kernel_module(module_name) { sources = [ "fs_syscall.c", ...... "syscall_demo.c" ] }
2.5 调用并验证
参考官网Hello World示例,修改示例applications/sample/camera/apps/src/helloworld.c,增加系统调用内容newSyscallSample(10)。
#include
在工程根目录,hb set选择产品ipcamera_hispark_taurus,然后hb build构建,使用Device Tool工具烧录Hi3516开发板,运行在串口得到输出结果如下。用户态接口与内核态接口均有输出,证明系统调用已使能。
3. 小结
本文学习小型系统内核开发-系统调用官网文档,并在Hi3516开发板上实际验证操作,通过动手更好的掌握了系统调用。感谢阅读,如有任何问题、建议,都可以博客下留言给我,谢谢。
4. 官网参考资料
小型系统内核开发-系统调用
快速入门-Hi3516开发板-运行Hello OHOS
【#开发板漂流计划#】
硬件开发 轻量级操作系统 LiteOS
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。