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

📄 compintf.h

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的操作系统pSOS。包括全部源码
💻 H
字号:
/* @(#) $Id: compintf.h,v 1.9 1999/02/16 20:44:40 vdeokar Exp $ *//************************************************************************//*									*//* FILE:	COMPINTF.H	    					*//* PRODUCT:	COMPONENT/POWERPC					*//* PURPOSE:	DEFINES MACHINE SPECIFIC STUFF FOR USE BY VARIOUS	*//*		COMPONENTS						*//*									*//*----------------------------------------------------------------------*//*									*//*	COPYRIGHT 1995, INTEGRATED SYSTEMS, INC.      			*//*		ALL RIGHTS RESERVED					*//*									*//*  THIS COMPUTER PROGRAM IS THE PROPERTY OF INTEGRATED SYSTEMS,	*//*  INC., SAN JOSE, CALIF., U.S.A. AND MAY NOT BE COPIED		*//*  IN ANY FORM OR BY ANY MEANS, WHETHER IN PART OR IN WHOLE,		*//*  EXCEPT UNDER LICENSE EXPRESSLY GRANTED BY INTEGRATED SYSTEMS,	*//*  INC.								*//*									*//*  ALL COPIES OF THIS PROGRAM, WHETHER IN PART OR IN WHOLE, AND	*//*  WHETHER MODIFIED OR NOT, MUST DISPLAY THES AND ALL OTHER		*//*  EMBEDDED COPYRIGHT AND OWNERSHIP NOTICES IN FULL.			*//*									*//************************************************************************/#ifndef _COMPINTF_H#define _COMPINTF_H#ifndef ENTRY_START_OFFSET#define ENTRY_START_OFFSET	0x40#endif#ifndef ENTRY_LENGTH#define ENTRY_LENGTH		0x08#endiftypedef struct baseregs{	unsigned long   r2;	unsigned long   r13;} BASEREGS;typedef unsigned long	(*LFUNCPTR)();#define SIZE_EMUCB	0x24typedef struct emucb {	char	dummy[SIZE_EMUCB];} EMUCB;#define SIZE_ECVCB	0x18typedef struct ecvcb {	char	dummy[SIZE_ECVCB];} ECVCB;typedef struct t_WaitQ {	void	*QHead;	void	*QTail;} WAITQ;typedef struct svcjtab{	LFUNCPTR	svc_fn;		/* Ptr to svc call function	*/	USHORT		stkarg_size;	/* Size of args on stack	*/	UCHAR		rsvd[2];	/* Reserved			*/} SVCJTAB;/************************************************************************//* The structure used by the component system anchor to export various	*//* entry points into the kernel.					*//************************************************************************/typedef struct cpintf{	LFUNCPTR	SlowEntry;	LFUNCPTR	*FastEntry;	LFUNCPTR	*DebugEntry;	LFUNCPTR	QuickSvcEntry;	LFUNCPTR	FastSMPEntry;	LFUNCPTR	FastSMVEntry;	LFUNCPTR	FastMULEntry;	LFUNCPTR	FastMUUEntry;	LFUNCPTR	FastCVSEntry;	LFUNCPTR	FastCVBEntry;} CPINTF;#define	CP_ANCHOR	((CPINTF *) cp_anchor)/************************************************************************//* The function codes for various services provided by the fast entry.	*//*									*//* NOTE: Kernel needs the function codes to initialize fast entry table	*//* So mirror changes made here to the function codes, into file const.h	*//************************************************************************/#define FEP_CP_NOPRE            0#define FEP_CP_WHO              1#define FEP_CP_RUNNER           2#define FEP_CP_EXTEN            3#define FEP_CP_SETERR           4#define FEP_CP_GETERR           5#define FEP_CP_DATA             6#define FEP_CP_SWREG            7#define FEP_CP_GETTICKS         8#define FEP_EMU_INIT            9#define FEP_ECV_INIT            10#define FEP_EMU_LOCK            11#define FEP_EMU_UNLOCK          12#define FEP_ECV_SIGNAL          13#define FEP_ECV_BROADCAST       14#define FEP_EIOJ_LOCK           15#define FEP_EIOJ_UNLOCK         16#define FEP_SC_REGISTER         17#define FEP_SC_UNREGISTER       18/************************************************************************//* The typedefs, defines, function prototypes and macros for various	*//* services provided by	the fep entry point.				*//************************************************************************/typedef ULONG (* fep_cp_nopre_t)(ULONG *);typedef ULONG (* fep_cp_who_t)(ULONG, void **);typedef ULONG (* fep_cp_runner_t)(ULONG, void **, void **, ULONG *);typedef ULONG (* fep_cp_exten_t)(ULONG, void *, void **, ULONG *);typedef ULONG (* fep_cp_seterr_t)(ULONG);typedef ULONG (* fep_cp_geterr_t)(ULONG *);typedef ULONG (* fep_cp_data_t)(ULONG, void **);typedef ULONG (* fep_cp_swreg_t)(ULONG, ULONG, ULONG, ULONG, ULONG *);typedef ULONG (* fep_cp_getticks_t)(ULONG *, ULONG *);typedef ULONG (* fep_emu_init_t)(EMUCB *, ULONG);typedef ULONG (* fep_ecv_init_t)(ECVCB *, ULONG);typedef ULONG (* fep_eioj_lock_t)(ULONG);typedef ULONG (* fep_eioj_unlock_t)(ULONG);typedef ULONG (* fep_emu_lock_t)(EMUCB *, ULONG, ULONG);typedef ULONG (* fep_emu_unlock_t)(EMUCB *);typedef ULONG (* fep_ecv_signal_t)(ECVCB *);typedef ULONG (* fep_ecv_broadcast_t)(ECVCB *);typedef ULONG (* fep_sc_register_t)(ULONG, ULONG, ULONG, ULONG, void *, ULONG (*)(BASEREGS *, void *), void *arg);typedef ULONG (* fep_sc_unregister_t)(ULONG, ULONG, ULONG);#define cp_nopre(oldmode)	\	(*(fep_cp_nopre_t)(CP_ANCHOR->FastEntry[FEP_CP_NOPRE]))(oldmode)#define cp_who(tid, tcbptr)	\	(*(fep_cp_who_t)(CP_ANCHOR->FastEntry[FEP_CP_WHO]))(tid, tcbptr)#define cp_runner(compno, tcbptr, extptr, tidptr) \	(*(fep_cp_runner_t)(CP_ANCHOR->FastEntry[FEP_CP_RUNNER]))(compno, tcbptr, extptr, tidptr)#define cp_exten(compno, tcb, extptr, tidptr) \	(*(fep_cp_exten_t)(CP_ANCHOR->FastEntry[FEP_CP_EXTEN]))(compno, tcb, extptr, tidptr)#define cp_seterr(error)	\	(*(fep_cp_seterr_t)(CP_ANCHOR->FastEntry[FEP_CP_SETERR]))(error)#define cp_geterr(errptr)	\	(*(fep_cp_geterr_t)(CP_ANCHOR->FastEntry[FEP_CP_GETERR]))(errptr)#define cp_data(comp, dptr)	\	(*(fep_cp_data_t)(CP_ANCHOR->FastEntry[FEP_CP_DATA]))(comp, dptr)#define cp_swreg(tid,ri,gs,nv,ovp) \	(*(fep_cp_swreg_t)(CP_ANCHOR->FastEntry[FEP_CP_SWREG]))(tid,ri,gs,nv,ovp)#define cp_getticks(tickshi, tickslo)	\	(*(fep_cp_getticks_t)(CP_ANCHOR->FastEntry[FEP_CP_GETTICKS]))(tickshi, tickslo)#define emu_init(mp, flags) \	(*(fep_emu_init_t)(CP_ANCHOR->FastEntry[FEP_EMU_INIT]))(mp, flags)#define ecv_init(cvp, flags) \	(*(fep_ecv_init_t)(CP_ANCHOR->FastEntry[FEP_ECV_INIT]))(cvp, flags)#define eioj_lock(major) \	(*(fep_eioj_lock_t)(CP_ANCHOR->FastEntry[FEP_EIOJ_LOCK]))(major)#define eioj_unlock(major) \	(*(fep_eioj_unlock_t)(CP_ANCHOR->FastEntry[FEP_EIOJ_UNLOCK])(major)#define emu_lock(mp, flags, timeout) \	(*(fep_emu_lock_t)(CP_ANCHOR->FastEntry[FEP_EMU_LOCK]))(mp, flags, timeout)#define emu_unlock(mp) \	(*(fep_emu_unlock_t)(CP_ANCHOR->FastEntry[FEP_EMU_UNLOCK]))(mp)#define ecv_signal(cvp) \	(*(fep_ecv_signal_t)(CP_ANCHOR->FastEntry[FEP_ECV_SIGNAL]))(cvp)#define ecv_broadcast(cvp) \	(*(fep_ecv_broadcast_t)(CP_ANCHOR->FastEntry[FEP_ECV_BROADCAST]))(cvp)#define sc_register(major, minor, flags, ncalls, svcjtab, initfn, arg) \	(*(fep_sc_register_t)(CP_ANCHOR->FastEntry[FEP_SC_REGISTER]))(major, minor, flags, ncalls, svcjtab, initfn, arg)#define sc_unregister(major, minor, flags) \	(*(fep_sc_unregister_t)(CP_ANCHOR->FastEntry[FEP_SC_UNREGISTER]))(major, minor, flags)/************************************************************************//* The function codes for various services provided by the slow entry.  *//************************************************************************/#define SEP_CP_PREEMPT          1#define SEP_CP_WAIT             2#define SEP_CP_WAKE             3#define SEP_EMU_DESTROY         4#define SEP_ECV_WAIT            5#define SEP_ECV_DESTROY         6/************************************************************************//* The typedefs, defines, function prototypes and macros for various    *//* services provided by the slow entry point.                           *//************************************************************************/extern ULONG cp_preempt(ULONG mode);extern ULONG cp_wait(WAITQ *qhead, ULONG timeout, ULONG mode);extern ULONG cp_wake(void *tcbptr);extern ULONG emu_destroy(EMUCB *mp);extern ULONG ecv_destroy(ECVCB *cvp);extern ULONG ecv_wait(ECVCB *cvp, EMUCB *mp, ULONG timeout);/************************************************************************//* Offsets of the various entry points in the pSOS+ header.		*//************************************************************************/#define PSOS_INIT_ENTRY		(ENTRY_START_OFFSET)#define PSOS_SVC_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH)#define PSOS_IO_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 2)#define PSOS_IRETURN_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 3)#define PSOS_IENTER_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 4)#define PSOS_ODEBUG_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 10)#define PSOS_ADA_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 11)#define PSOS_SLOW_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 12)#define PSOS_FAST_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 13)#define PSOS_DEBUG_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 14)#define PSOS_CONFMT_PTR		(ENTRY_START_OFFSET + ENTRY_LENGTH * 19)#define PSOS_VERNO_PTR		(ENTRY_START_OFFSET + ENTRY_LENGTH * 20)#define PSOS_QSVC_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 21)#define PSOS_QSMP_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 22)#define PSOS_QSMV_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 23)#define PSOS_QMUL_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 24)#define PSOS_QMUU_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 25)#define PSOS_QCVS_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 26)#define PSOS_QCVB_ENTRY         (ENTRY_START_OFFSET + ENTRY_LENGTH * 27)/************************************************************************//* Offsets of the various entry points in a component header.		*//************************************************************************/#define COMP_INIT_ENTRY		(ENTRY_START_OFFSET)#define COMP_SVC_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH)#define COMP_C2S_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 2)#define COMP_S2C_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 3)#define COMP_D2C_ENTRY		(ENTRY_START_OFFSET + ENTRY_LENGTH * 4)#define COMP_TCREATE_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 10)#define COMP_TRESTART_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 11)#define COMP_TDELETE_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 12)#define COMP_START_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 13)#define COMP_TSTART_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 14)#define COMP_CONFMT_PTR		(ENTRY_START_OFFSET + ENTRY_LENGTH * 19)#define COMP_VERNO_PTR		(ENTRY_START_OFFSET + ENTRY_LENGTH * 20)#define COMP_PREINIT_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 21)#define COMP_FERROR_ENTRY	(ENTRY_START_OFFSET + ENTRY_LENGTH * 22)#endif	/* _COMPINTF_H */

⌨️ 快捷键说明

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