📄 pg_task.h
字号:
///////////////////////////////////////////////////////////////
//
//
// PGOS : A Portable,Configable Embedded System Kernel
//
// Intel X86 Specific Code
//
// This is an open source project under GPL lincence
//
// Version 0.9.0 ---- Development Snopshot
//
// File name : pg_task.h : Task functions definition
// History :
//
// 2005-07-24 First build by X.K. @ PGOS Team
//
/////////////////////////////////////////////////////////////////
#ifndef PG_TASK
#define PG_TASK
#define MAX_DEF_TIME 5
#if PG_MSG_SUPPORT == 1
// PGOS Message Structure
typedef struct _pg_msg
{
WORD m_msg ; // master message
WORD s_msg ; // slave message
BYTE uflag ; // message update flag
BYTE rflag ; // message read flag
WORD From ;
WORD To ;
}pgMSG ;
#endif
//////////////////////////////////////////
// PGOS TASK Module
//
//
//////////////////////////////////////////
#if PG_TASK_BASIC_SUPPORT == 1
// TASK Structure
typedef struct _pg_task
{
REGSZ* pgSP ; // Switch To Or From
BYTE id ; // ID
BYTE prio ; // Prio
BYTE state ; // Task State
WORD delay ; // Delay time
#if PG_MSG_SUPPORT == 1
pgMSG* pgMessage ; // Message
#endif
#if PG_SCH_ROUNDROBIN == 1
DWORD runtime ;
#endif
}pgTASK ;
////////////////////////////////////////////
// PGOS Fast Task Search Support
//
////////////////////////////////////////////
typedef struct _pg_task_search
{
pgTASK* pTask ;
}pgTASKSEARCH ;
///////////////////////////////////////////
// PGOS Task List
//
///////////////////////////////////////////
typedef struct _pg_task_list
{
pgTASK* pTask ;
struct _pg_task_list* next ;
}pgTASKLIST ;
#endif // TASK_BASIC_SUPPORT
#if PG_TASK_BASIC_SUPPORT == 1
PGOS_STATUS pgos_tk_cre( VOID ( *task )(), BYTE prio, REGSZ* stk, BYTE* id ) ;
PGOS_STATUS pgos_tk_sleep( BYTE id, WORD time ) ;
PGOS_STATUS pgos_tk_wakeup( BYTE id ) ;
PGOS_STATUS pgos_tk_suspend( BYTE id ) ;
PGOS_STATUS pgos_tk_resume( BYTE id ) ;
PGOS_STATUS pgos_tk_remove( BYTE id ) ;
pgTASK* pgos_tk_lookup( BYTE id ) ;
REGSZ* pgos_tk_initstk( REGSZ* stk, VOID ( *task )() ) ;
pgTASK* pgos_tk_alloc() ;
pgTASKLIST* pgos_tk_listalloc() ;
PGOS_STATUS pgos_tk_initab( ) ;
pgTASKLIST* pgos_tk_inilist( ) ;
VOID pgos_tk_insert( pgTASK* pTask ) ;
VOID pgos_tk_switch() ;
#endif
#if PG_MSG_SUPPORT == 1
PGOS_STATUS pgos_tk_sendmsg( BYTE id, WORD m_msg, WORD s_msg ) ;
PGOS_STATUS pgos_tk_getmsg( WORD* m_msg, WORD* s_msg, WORD* Sender ) ;
BOOL pgos_tk_isnewmsg() ;
#endif
#if PG_TASK_ADV_SUPPORT == 1
BYTE pgos_tk_getnum() ;
BYTE pgos_tk_getkmax() ;
BYTE pgos_tk_getcurid( ) ;
VOID pgos_tk_resumeall() ;
VOID pgos_tk_sleep_sec( WORD sec ) ;
#endif
#if PG_SCH_ROUNDROBIN == 1
VOID pgos_tk_setruntime( DWORD time ) ;
#endif
// TASK Operations -- call by pgos
BOOL pgos_tk_basic() ;
BOOL pgos_tk_adv() ;
BOOL pgos_tk_msg() ;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -