?? 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 + -