📄 swi.c
字号:
#include <swi.h>#include <serial.h>#include <sched.h>fn_ptr swi_table[] = { sys_exit,sys_sleep,sys_write };int do_exit(int error_code){ DPRINTK(KERNEL_DEBUG,"kernel:do_exit\n\r"); current->state = TASK_UNALLOCATE; schedule(); return 0;}int do_sleep(unsigned long time){ DPRINTK(KERNEL_DEBUG,"kernel:do_sleep\n\r"); current->state = TASK_SLEEPING; current->timer = time; schedule(); return 0;} int do_write(char *str){ return printk(str);}int exit(int error_code){ int ret; __asm__( "mov r0, %1\n" "swi %2\n" "mov %0, r0\n" :"=r"(ret) :"r"(error_code),"M"(__NR_exit) :"r0" ); return ret;}int sleep(int time){ int ret; __asm__( "mov r0, %1\n" "swi %2\n" "mov %0, r0\n" :"=r"(ret) :"r"(time),"M"(__NR_sleep) :"r0" ); return ret;}/*************************************************************** 返回输出的字节数***************************************************************/int write(char *str){ int ret; __asm__( "mov r0, %1\n" "swi %2\n" "mov %0, r0\n" :"=r"(ret) :"r"(str),"M"(__NR_write) :"r0" ); return ret;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -