⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pg_task.h

📁 一个移植到凌阳单片机spce061a上面的实时操作系统
💻 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 + -