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

📄 v32cftbl.h

📁 VRTX 商用嵌入式实时操作系统
💻 H
字号:
/***************************************************************************
*
*		Copyright (c) 1993 READY SYSTEMS CORPORATION.
*
*	All rights reserved. READY SYSTEMS' source code is an unpublished
*	work and the use of a copyright notice does not imply otherwise.
*	This source code contains confidential, trade secret material of
*	READY SYSTEMS. Any attempt or participation in deciphering, decoding,
*	reverse engineering or in any way altering the source code is
*	strictly prohibited, unless the prior written consent of
*	READY SYSTEMS is obtained.
*
*
*	Module Name:		%M%
*
*	Identification:		%Z% %I% %M%
*
*	Date:			%G%  %U%
*
****************************************************************************
*/

/* VRTX32 emulator configuration table */

/* This header file is an internal file of VRTXsa;
 * the external file intended to be used by SYSLIB, SYSINIT, etc.
 * is in rtl/include/vrtxvisi.h, type CFTBL.
 */

#ifndef _V32CFTBL_H
#define _V32CFTBL_H

#ifdef __cplusplus
extern "C" {
#endif

#include <ansiprot.h>

#ifdef INTELx86
typedef struct
{
        unsigned long  offset;
        unsigned short selector;
} CVT_PTR386;
#endif

/* Declare forward reference to VRTX32 emulator task control block */

struct v32_task;

struct v32_cvt {
    unsigned char ready_max;		/* highest Ready Systems component ID */
    unsigned char user_max;		/* highest use component ID */
    short reserved1;
#ifdef INTELx86
   unsigned long   reserved2[5];        /* reserved */
    struct {
        CVT_PTR386     code_address;
        CVT_PTR386     ws_address    ;
    } iox, fmx, rtl, component5, mpv, ifx, component8, component9, tnx;
#else
    long reserved2[3];
    struct {
	char *codespace;		/* component codespace address */
	char *workspace;		/* component workspace address */
    } iox, fmx, rtl, component5, mpv, ifx, component8, component9, tnx;
#endif
};


struct v32_config {
#ifdef I386
    unsigned short   cfwssel;            /* VRTX workspace selector */
    char             *cfwsaddr;		/* workspace address */
    unsigned cfwssize;                   /* VRTX workspace size     */
    unsigned short   cfsstksz;            /* system stack size per task */
    unsigned short   cfistksz;            /* interrupt stack size */
    unsigned short   cfcbcount;           /* maximum no. of control blks*/
    unsigned short   cfpartcount;       /* partition count */
					/* was reserved, must be zero */
    unsigned short   cfidle;              /* idle task stack size */
    unsigned short   cfquecount;		/* queue count */
    short            cfdislev;            /* Reserved, must be 0 */
    unsigned short   cfustksz;            /* user stack size per task */
    unsigned short   cfmaxtid;		/* maximum task ID */
    unsigned short   cftarget;		/* target type */
    unsigned short   cfutskct;            /* user task count */
    unsigned short   cfoptions;           /* configuration options */
    void (*cftxrdy)(_ANSIPROT1(int /*char*/));	/* txrdy driver address */
    unsigned short   cftxrdy_sel;	/* txrdy driver selector */
    void (*cftcreate)(_ANSIPROT2(struct v32_task *, struct v32_task *));
					/* hook routine address */
    unsigned short   cftcreate_sel;
    void (*cftdelete)(_ANSIPROT2(struct v32_task *, struct v32_task *));
					/* hook routine address */
    unsigned short   cftdelete_sel;
    void (*cftswitch)(_ANSIPROT2(struct v32_task *, struct v32_task *));
    unsigned short   cftswitch_sel;
    char             *cfcvtaddr;           /* component vector tbl ptr */
    unsigned short   cfcvtaddr_sel;
    void             (*cfdalo)(ANSIPROT0);    /* descriptor allocation routine
                                                                  pointer */
    unsigned short   cfdalo_sel;
                                                                 
#else
    char *cfwsaddr;			/* workspace address */
    unsigned cfwssize;			/* workspace size */
    unsigned short cfsstksz;		/* system stack size */
    unsigned short cfistksz;		/* interrupt stack size */
    unsigned short cfcbcount;		/* control block count */
    unsigned short cfpartcount;		/* partition count */
					/* was reserved, must be zero */
    unsigned short cfidle;		/* idle task stack size */
    unsigned short cfquecount;		/* queue count */
					/* was reserved, must be zero */
    short cfdislev;			/* component disable level */
    unsigned short cfustksz;		/* user stack size */
    unsigned short cfmaxtid;		/* maximum task ID */
    unsigned short cftarget;		/* target type */
    unsigned short cfutskct;		/* user task count */
    unsigned short cfoptions;		/* configuration options */
    void (*cftxrdy)(_ANSIPROT1(int /*char*/));	/* txrdy driver address */
    void (*cftcreate)(_ANSIPROT2(struct v32_task *, struct v32_task *));
					/* hook routine address */
    void (*cftdelete)(_ANSIPROT2(struct v32_task *, struct v32_task *));
					/* hook routine address */
    void (*cftswitch)(_ANSIPROT2(struct v32_task *, struct v32_task *));
					/* hook routine address */
    struct v32_cvt *cfcvtaddr;		/* component vector table address */
    short cfarsrvd;			/* ARTX reserved field */
    unsigned short cfentct;		/* ARTX number of entries allocated per task */
    unsigned short cfetbct;		/* ARTX number of tasks using entry tables */
    unsigned short cfmfrct;		/* ARTX master frame control block count */
#endif
};

/* Configuration options */

#define V32_OPTION_PUTC		1	/* strict sc_putc compatibility */
#define V32_OPTION_MULTIKERNEL	2	/* run in multiple kernel environment */
#define V32_OPTION_C_TXRDY	4	/* txrdy driver written in C */
#define V32_OPTION_C_HOOKS	8	/* task create, delete, switch hooks written in C */

/* Mask of all supported configuration options */

#define V32_OPTION_ALL	(V32_OPTION_PUTC|V32_OPTION_MULTIKERNEL|V32_OPTION_C_TXRDY|V32_OPTION_C_HOOKS)

#ifdef __cplusplus
}
#endif

#endif /* !_V32CFTBL_H */

⌨️ 快捷键说明

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