📄 a_misc.c
字号:
/*
===============================================================================
| Copyright (C) 2004 RuanHaiShen, All rights reserved.
| SUMMARY:
| Miscellaneous functions.
|
| DESCRIPTION:
| See http://www.01s.org for documentation, latest information, license
| and contact details.
| email:ruanhaishen@01s.org
=============================================================================*/
/*===========================================================================*/
#include "arch/arch.h"
#include "inc/queue.h"
#include "inc/kernel.h"
#include "inc/memory.h"
#include "inc/ipc.h"
#include "inc/kapi.h"
extern u32 _task_init_bkp;
struct reg_context
{
u32 bkp;
u16 ds;
u16 flags;
u32 pc;
u32 exit;
u32 arg;
u16 earg;
};
u8* __stack_init(entry_t entry, arg_t arg, sp_t ptos)
{
struct reg_context* regs;
regs = (struct reg_context*)
((u32)ptos - sizeof(struct reg_context));
regs->bkp = (u32)&_task_init_bkp;
regs->ds = _DS;
regs->flags = (u16)0x0202;
regs->pc = (u32)entry;
#if CFG_TASK_DEL_EN > 0
regs->exit = (u32)task_delete;
#endif
regs->arg = (u32)arg;
regs->earg = (u16)0xffff;
return (u8*)regs;
}
extern u8 _dos_tick_counter;
void __timer_interrupt()
{
register u8 flag;
__intr_enter();
if (--_dos_tick_counter == 0) {
_dos_tick_counter = 11;
__dos_tick();
} else {
__eoi_to_8259a();
}
flag = __do_tick();
__intr_exit(flag);
}
/*===========================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -