vmLibP.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* vmLibP.h - private header for architecture independent mmu interface */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01g,13feb93,kdl  fixed test in VM_TEXT_PAGE_PROTECT macro.
  7. 01f,10feb93,rdc  added support for text page protection routine. 
  8. 01e,08oct92,rdc  fixed VM_TRANSLATE macro.
  9. 01d,22sep92,rrr  added support for c++
  10. 01c,30jul92,rdc  added pointer to vmTranslate routine to VM_LIB_INFO.
  11. 01b,27jul92,rdc  modified VM_LIB_INFO.
  12. 01a,10jul92,rdc  written.
  13. */
  14. #ifndef __INCvmLibPh
  15. #define __INCvmLibPh
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. #include "vxWorks.h"
  20. #include "memLib.h"
  21. #include "lstLib.h"
  22. #include "private/objLibP.h"
  23. #include "private/classLibP.h"
  24. #include "private/semLibP.h"
  25. #include "vmLib.h"
  26. #include "mmuLib.h"
  27. /* an instance of VM_LIB_INFO is defined in usrConfig.c and is initialized
  28.  * if vmLib has been installed. If the bundled version of vmLib.c is installed,
  29.  * only a subset of the routines will be available - if the pointers are null,
  30.  * then the routines are not available.
  31.  */
  32. typedef struct
  33.     {
  34.     BOOL vmLibInstalled;       /* full mmu support available */
  35.     BOOL vmBaseLibInstalled;   /* base mmu support available */
  36.     BOOL protectTextSegs;      /* TRUE == protext text segments */
  37.     FUNCPTR pVmStateSetRtn;    /* pointer to vmStateSet if vmLib included */
  38.     FUNCPTR pVmStateGetRtn;    /* pointer to vmStateGet if vmLib included */
  39.     FUNCPTR pVmEnableRtn;      /* pointer to vmEnable if vmLib included */
  40.     FUNCPTR pVmPageSizeGetRtn; /* ptr to vmPageSizeGet if vmLib included */
  41.     FUNCPTR pVmTranslateRtn;   /* ptr vmTranslate if vmLib included */
  42.     FUNCPTR pVmTextProtectRtn; /* ptr to vmTextLock routine if vmLib included */
  43.     } VM_LIB_INFO;
  44. #define VM_STATE_SET(context, pVirtual, len, stateMask, state) 
  45.     ((vmLibInfo.pVmStateSetRtn == NULL) ? 
  46.     (ERROR) : 
  47.     ((*vmLibInfo.pVmStateSetRtn) (context, pVirtual, len, stateMask, state)))
  48. #define VM_STATE_GET(context, pageAddr, pState) 
  49.     ((vmLibInfo.pVmStateGetRtn == NULL) ? 
  50.     (ERROR) : 
  51.     ((*vmLibInfo.pVmStateGetRtn) (context, pageAddr, pState)))
  52. #define VM_ENABLE(enable) 
  53.     ((vmLibInfo.pVmEnableRtn == NULL) ? 
  54.     (ERROR) : 
  55.     ((*vmLibInfo.pVmEnableRtn) (enable)))
  56. #define VM_PAGE_SIZE_GET() 
  57.     ((vmLibInfo.pVmPageSizeGetRtn == NULL) ? 
  58.     (ERROR) : 
  59.     ((*vmLibInfo.pVmPageSizeGetRtn) ()))
  60. #define VM_TRANSLATE(context, virtualAddr, physicalAddr) 
  61.     ((vmLibInfo.pVmTranslateRtn == NULL) ? 
  62.     (ERROR) : 
  63.     ((*vmLibInfo.pVmTranslateRtn) (context, virtualAddr, physicalAddr)))
  64. #define VM_TEXT_PAGE_PROTECT(addr, protect) 
  65.     ((vmLibInfo.pVmTextProtectRtn == NULL) ? 
  66.     (ERROR) : 
  67.     ((*vmLibInfo.pVmTextProtectRtn) (addr, protect)))
  68. IMPORT VM_LIB_INFO vmLibInfo;
  69. /* class definition */
  70. typedef struct vm_mem_mgr_class
  71.     {
  72.     OBJ_CLASS coreClass;
  73.     } VM_CONTEXT_CLASS;
  74. typedef VM_CONTEXT_CLASS *VM_CONTEXT_CLASS_ID;
  75. IMPORT VM_CONTEXT_CLASS_ID vmContextClassId;
  76. /* the following data structure in used internally in mmuLib to define
  77.  * the values for the architecture dependent states
  78.  */
  79. typedef struct
  80.     {
  81.     UINT archIndepMask;
  82.     UINT archDepMask;
  83.     UINT archIndepState;
  84.     UINT archDepState;
  85.     } STATE_TRANS_TUPLE;
  86. /* mmuLib sets up this structure to provide pointers to all its functions */
  87. typedef struct
  88.     {
  89.     FUNCPTR mmuLibInit;
  90.     MMU_TRANS_TBL_ID (*mmuTransTblCreate) ();
  91.     FUNCPTR mmuTransTblDelete;
  92.     FUNCPTR mmuEnable;
  93.     FUNCPTR mmuStateSet;
  94.     FUNCPTR mmuStateGet;
  95.     FUNCPTR mmuPageMap;
  96.     FUNCPTR mmuGlobalPageMap;
  97.     FUNCPTR mmuTranslate;
  98.     VOIDFUNCPTR mmuCurrentSet;
  99.     } MMU_LIB_FUNCS;
  100. #ifdef __cplusplus
  101. }
  102. #endif
  103. #endif /* __INCvmLibPh */