📄 compintf.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 + -