pg_sem.h

来自「一个移植到凌阳单片机spce061a上面的实时操作系统」· C头文件 代码 · 共 55 行

H
55
字号
// PGOS -- Semaphores Service Programme


#ifndef  PG_SEM
#define  PG_SEM

#define  MAXSEM  2
#define  MAXSEMWAIT 3

#define  TASK_SEM_USING  0x00
#define  TASK_SEM_SUSPEND  0xFF
#define  TASK_SEM_NOTUSE    0xF0

#define  SEM_USE  0x00
#define  SEM_NOTUSE 0x01

#define  TASK_FIRST     0x00
#define  TASK_APPEND  0xFF   

typedef  struct  _pg_sem
{
    BYTE  id ;
    BYTE  state ;
#if  PG_SEM_PRIO == 1
    BYTE   prio ;
#endif
} pgSEMTASK ;

typedef struct _pg_semtk_list
{
    pgSEMTASK*  pSem ;
    struct _pg_semtk_list*  next ;
}pgSEMTKLIST ;

typedef struct  _pg_sem_list
{
    WORD  Sem ;
    pgSEMTKLIST*  list ;
    BYTE    state ;
    BYTE    tasknum ;	
    struct  _pg_sem_list*  next ;	
}pgSEMLIST ;

// BASIC Semaphores Operations Support  
PGOS_STATUS  pgos_sem_init() ;
PGOS_STATUS  pgos_sem_cre( WORD SemNum ) ;
PGOS_STATUS  pgos_sem_wait( WORD SemNum ) ;
PGOS_STATUS  pgos_sem_post( WORD SemNum ) ;
// Functions call by PGOS Kernel
pgSEMTKLIST* pgos_sem_initklist() ;
pgSEMLIST*   pgos_sem_inilist() ;
pgSEMTASK*   pgos_sem_initk() ;
PGOS_STATUS  pgos_sem_addtask( pgSEMTKLIST* list, BYTE id, BYTE mode ) ;

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?