📄 main.c
字号:
/* MShowTec - www.mshowtec.com
** msLinux main.c ver1.0
** 20051221 lmjx create limiao@mshowtec.com
**
*/
#define MSLINUX_MAIN_C
#include "Align.h"
#include "sched.h"
#include "align.h"
#include "fork.h"
#include "sys.h"
#include "sem.h"
#include "msg.h"
#include "kernel.h"
#include "dev.h"
#include "lcddrv.h"
#include "tty.h"
#define TASK0_STACK_SIZE (ALIGN4B(1025)-4+1)
DEFINE_TASK_STACK(stack0,TASK0_STACK_SIZE);
void init(void)
{
int pid,i;
printk("[ms-linux]:init \r\n");
if (!(pid=_sys_fork())){
WinMain();
sys_exit(0);
}
while(1){
if ((pid=_sys_fork())<0) {
printk("Fork failed in init\r\n");
continue;
}
if (!pid) {
sys_setsid();
CliMain();
sys_exit(0);
}
while (1)
if (pid == wait(&i))
break;
printk("\n\rchild %d died with code %04x\n\r",pid,i);
}
sys_exit(0); /* NOTE! _exit, not exit() */
}
void Task0(void)
{
printk("[ms-linux]:First task - task0 start\r\n");
mslinux_enable_irq();
if(!_sys_fork()){
init();
}
for(;;){
sys_pause();
}
}
/* void start_kernel(void)
** lmjx 051222 ver1.0
**/
void start_kernel(void)
{
mem_init();
trap_init();
time_init() ;
sched_init();
dev_init();
tty_register();
ioctrl(DEV_TTY,IOCTRL_INIT,0);
lcd_register();
ioctrl(DEV_LCD,IOCTRL_INIT,0);
printk("[ms-linux]:Start kernel %s\r\n",MSLINUX_KERNEL_VER);
mslinux_semaphore_init();
mslinux_message_init();
task0.stack.p_SP = (long)(task_stack0+TASK0_STACK_SIZE-1);
task0.stack.p_TopOfStack = (long)task_stack0;
task0.stack.L_Stack_SZ = TASK0_STACK_SIZE;
task_stack0[0] = 0x55;
move_to_user_mode(task0.stack.p_SP,Task0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -