📄 nosys.h
字号:
/******************************************************************************
* 兪俬俿俼俷俶巇條俷俽 俶俷俼俿倝system撪晹掕媊僿僢僟 *
* *
* File name : nosys.h *
* Copyright (c) Miyazaki System Planning Office. 1991-1995 *
* *
* 91-10-25 TRCOM Version *
* 92-02-16 Ver1.00 *
* 92-08-20 Ver1.10 *
* 93-01-18 Ver1.11 *
* 93-02-17 Ver1.12 *
* 93-05-16 Ver1.13兝 *
* 94-01-05 Ver1.14 *
* 95-06-15 Ver1.20 *
* 95-09-12 Ver1.21 *
******************************************************************************/
#ifndef NOSYS_H
#define NOSYS_H
#ifndef NORTI_H
#include "norti.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* kenel撪晹偵access偡傞応崌偵 #include 偟偰偔偩偝偄丅 */
/* 偨偩偟丄偙偙偵掕媊偝傟偰偄傞撪梕偵偮偄偰偼丄version up偵傛傝屳姺惈 */
/* 偑懝傢傟傞壜擻惈偑偁傝傑偡丅 */
/* nocfg.h, noknl.c, nomon.c 偐傜 #include 偝傟偰偄傑偡丅 */
/************************************/
/* 俠俹倀偵埶懚偡傞掕悢摍偺掕媊 */
/************************************/
#ifdef NORTi86
/* 戅旔context偺峔憿乮noknl.c 偐傜偼 r0, pc 偺傒嶲徠乯*/
typedef struct
{
int stkhqq; /* MS-C偺stack娗棟曄悢 */
int es;
int ds;
int di;
int si;
int bp;
int sp;
int bx;
int dx;
int cx;
int r0; /* 栠抣register乮AX乯*/
int filler[2]; /* 嬻偒 */
TASKP pc; /* program counter乮CS:IP乯*/
int flag;
} T_CTX;
/* 峔憿懱size傪2偺椵忔偵惍偊傞掕悢 */
#define FLG_FILLER 2 /* event flag挷惍size */
#define SEM_FILLER 2 /* semaphore挷惍size */
#define MBX_FILLER 4 /* mailbox挷惍size */
#define RDQ_FILLER 0 /* ready queue僿僢僟挷惍size */
#endif
/* 86埲奜偺掕媊偺撉崬傒 */
#ifdef NORTi80
#include "norz80.h"
#endif
#ifdef NORTiZ80
#include "norz80.h"
#endif
#ifdef NORTi68K
#include "nor68k.h"
#endif
#ifdef NORTiH83
#include "norh83.h"
#endif
#ifdef NORTiPPC
#include "norppc.h"
#endif
/************************************/
/* object摍偺峔憿懱偺掕媊 */
/************************************/
/* 俿俠俛偺峔憿乮拲:ltime傑偱T_TMR偲摨偠峔憿乯 */
typedef packed struct t_tcb
{
struct t_tcb NEAR *next; /* 師偺俿俠俛/timer傊偺pointer */
struct t_tcb NEAR *prev; /* 慜偺俿俠俛/timer傊偺pointer */
void NEAR *que; /* 懸偪峴楍僿僢僟傊偺pointer */
TASKP ipc; /* task start address */
UINT sts; /* task 忬懺 flag */
ID tid; /* task 俬俢 */
UH ltime; /* 婲摦帪崗乮壓埵乯*/
TPRI pri; /* task 桪愭搙 */
TPRI ipri; /* task 弶婜桪愭搙 */
UINT waiptn; /* event flag懸偪pattern */
INT wupcnt; /* 婲彴梫媮count */
INT suscnt; /* 嫮惂懸偪梫媮count */
UINT FAR *arg; /* 戅旔堷悢 */
#ifdef NORTi86
int stktop; /* stack愭摢offset address 乮NORTi/86乯*/
#else
B FAR *stktop; /* stack愭摢 address 乮偦偺懠乯*/
#endif
T_CTX FAR *isp; /* 弶婜stack pointer */
T_CTX FAR *sp; /* 戅旔stack pointer */
} T_TCB;
/* timer偺峔憿 */
typedef packed struct t_tmr
{
struct t_tmr NEAR *next; /* 師偺俿俠俛/timer傊偺pointer */
struct t_tmr NEAR *prev; /* 慜偺俿俠俛/timer傊偺pointer */
void NEAR *que; /* 帪娫懸偪queue僿僢僟傊偺pointer */
TMRHDRP ipc; /* timer handler start address */
UINT sts; /* handler忬懺 flag */
ID tid; /* 枹巊梡(0) */
UH ltime; /* 婲摦帪崗乮壓埵乯*/
UH mtime; /* 婲摦帪崗乮拞埵乯*/
UH utime; /* 婲摦帪崗乮忋埵乯*/
UH defltime; /* 掕媊偝傟偨婲摦帪娫/帪崗乮壓埵乯*/
UH defmtime; /* 掕媊偝傟偨婲摦帪娫/帪崗乮拞埵乯*/
UH defutime; /* 掕媊偝傟偨婲摦帪娫/帪崗乮忋埵乯*/
} T_TMR;
/* event flag偺峔憿 */
typedef packed struct
{
T_TCB NEAR *head; /* 愭摢俿俠俛傊偺pointer */
INT qcnt; /* 懸偪task 悢 */
UINT ptn; /* flag pattern */
#if FLG_FILLER
VB filler[FLG_FILLER]; /* (size挷惍) */
#endif
} T_FLG;
/* semaphore偺峔憿 */
typedef packed struct
{
T_TCB NEAR *head; /* 愭摢俿俠俛傊偺pointer */
INT qcnt; /* 懸偪task 悢 */
INT cnt; /* semaphore count */
#if SEM_FILLER
VB filler[SEM_FILLER]; /* (size挷惍) */
#endif
} T_SEM;
/* mailbox偺峔憿 */
typedef packed struct
{
T_TCB NEAR *head; /* 愭摢俿俠俛傊偺pointer */
INT qcnt; /* 懸偪task 悢 */
#if MBX_FILLER
VB filler[MBX_FILLER]; /* (size挷惍) */
#endif
T_MSG FAR *top; /* 愭摢 message傊偺pointer */
T_MSG FAR *end; /* 枛旜 message傊偺pointer */
} T_MBX;
/* memory pool偺峔憿 */
typedef packed struct
{
T_TCB NEAR *head; /* 愭摢俿俠俛傊偺pointer */
INT qcnt; /* 懸偪task 悢 */
int frbcnt; /* 嬻偒僽儘僢僋悢 */
void FAR *top; /* 愭摢block傊偺pointer */
} T_MPL;
/* ready queue僿僢僟偺峔憿 */
typedef packed struct
{
T_TCB NEAR *head; /* 愭摢俿俠俛傊偺pointer */
INT qcnt; /* 懸偪task 悢 */
#if RDQ_FILLER
VB filler[RDQ_FILLER]; /* (size挷惍) */
#endif
} T_RDQ;
/************************************/
/* 掕悢偺掕媊 */
/************************************/
/* task / handler忬懺 flag 偺峔惉 */
#define S_HDR 0x80 /* timer handler */
#define S_ALM 0x08 /* alarm handler */
#define S_CYC 0x04 /* 廃婜婲摦 handler */
#define S_ACT 0x01 /* 廃婜婲摦 handler妶惈乮= TCY_ON乯 */
#define S_SLP 0x40 /* 扨弮懸婡乮slp_tsk乯 */
#define S_QUE 0x3f /* 壗傜偐偺懸偪峴楍偵宷偑傟偨忬懺 */
#define S_RDY 0x20 /* READY忬懺乮RUN傪娷傓乯*/
#define S_WAI 0x10 /* 帪娫懸偪乮wai_tsk乯*/
#define S_MPL 0x08 /* memory block懸偪乮get_blk乯*/
#define S_FLG 0x04 /* event flag懸偪乮wai_flg乯*/
#define S_ORW 0x02 /* OR懸偪(1)/AND懸偪(0)乮= TWF_ORW乯*/
#define S_CLR 0x01 /* clear 偁傝乮= TWF_CLR乯*/
#define S_SEM 0x02 /* semaphore懸偪乮wai_sem乯 */
#define S_MBX 0x01 /* message懸偪乮rcv_msg乯 */
#define S_DMT 0x00 /* DORMANT忬懺乮NON-EXISTENT傪娷傓乯*/
/************************************/
/* object偺掕媊 */
/************************************/
/* system梡object掕悢乮乣0乯*/
#define TSKID_MIN 0 /* task 俬俢壓尷 */
#define FLGID_MIN 0 /* event flag俬俢壓尷 */
#define SEMID_MIN 0 /* semaphore俬俢壓尷 */
#define MBXID_MIN 0 /* mailbox俬俢壓尷 */
#define MPLID_MIN 0 /* memory pool俬俢壓尷 */
#define CYHNO_MIN 0 /* 廃婜婲摦 handler斣崋壓尷 */
#define ALHNO_MIN 0 /* alarm handler斣崋壓尷 */
/* object */
/* MCC68K 嵟揔壔偺偨傔丄[2]偱攝楍愰尵 */
#ifndef NOCFG_H
extern T_TCB NEAR cdecl _TCB[2];
extern T_FLG NEAR cdecl _FLG[2];
extern T_SEM NEAR cdecl _SEM[2];
extern T_MBX NEAR cdecl _MBX[2];
extern T_MPL NEAR cdecl _MPL[2];
extern T_TMR NEAR cdecl _CYH[2];
extern T_TMR NEAR cdecl _ALH[2];
extern T_RDQ NEAR cdecl RDQ[2];
extern T_RDQ NEAR cdecl TMQ[256];
extern T_TCB NEAR * NEAR cdecl _pTCB[2];
extern T_MPL NEAR * NEAR cdecl _pMPL[2];
extern T_TMR NEAR * NEAR cdecl _pCYH[2];
extern T_TMR NEAR * NEAR cdecl _pALH[2];
#endif
/* 忋婰攝楍access梡macro */
#define TCB (_TCB-(TSKID_MIN))
#define FLG (_FLG-(FLGID_MIN))
#define SEM (_SEM-(SEMID_MIN))
#define MBX (_MBX-(MBXID_MIN))
#define MPL (_MPL-(MPLID_MIN))
#define CYH (_CYH-(CYHNO_MIN))
#define ALH (_ALH-(ALHNO_MIN))
#define pTCB (_pTCB-(TSKID_MIN))
#define pMPL (_pMPL-(MPLID_MIN))
#define pCYH (_pCYH-(CYHNO_MIN))
#define pALH (_pALH-(ALHNO_MIN))
/* count抣忋尷乮1乣UINT偺忋尷,-1偱嵟戝乯 */
#define WUPCNT_MAX (-1) /* 婲彴梫媮count抣忋尷 */
#define SUSCNT_MAX (-1) /* 嫮惂懸偪梫媮count抣忋尷 */
#define SEMCNT_MAX (-1) /* semaphore count抣忋尷 */
/************************************/
/* 偦偺懠kenel撪晹曄悢偺愰尵 */
/************************************/
extern T_VER FAR cdecl NORTI_VER; /* version */
extern T_TIME NEAR cdecl SYSCLK; /* system clock */
extern T_CTX NEAR cdecl CTX; /* 弶婜context */
extern UINT NEAR cdecl IMASK; /* 拞抐mask flag */
extern B NEAR cdecl INEST; /* 拞抐nest counter乮尭count乯*/
extern B NEAR cdecl DELAY; /* 抶墑dispatch 梫媮 flag */
extern TPRI NEAR cdecl NOWPRI; /* 尰嵼偺task 桪愭搙 */
extern UH NEAR cdecl IDLE_LOOP_CNT; /* idle loop counter */
extern ER NEAR cdecl SYSER; /* system error code */
extern B FAR * NEAR cdecl USP; /* user stack pointer抣 */
extern B FAR * NEAR cdecl ISP; /* 拞抐stack pointer弶婜抣 */
#ifdef NORTiH83
extern UW NEAR cdecl STKLEN; /* 巆傝stack挿乮NORTi/H83乯*/
#else
extern unsigned NEAR cdecl STKLEN; /* 巆傝stack挿乮偦偺懠乯*/
#endif
#ifdef OLDVER
extern INT near cdecl TSKCNT; /* 婲摦偝傟偨task 悢乮媽巇條乯*/
#endif
#ifdef __cplusplus
};
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -