original files of m241
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
/* moduleLibP.h - private module descriptor structure header */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998, 2004-2006, 2009-2010, 2013, 2016 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01r,31may16,jmp Imported modifications from VxWorks 7 for WB4 debug support:
|
||||
Added moduleIsLastModuleMatched and moduleSectionsCksumCompare
|
||||
prototypes.
|
||||
Added moduleCommonSymEach() & moduleUndefSymEach().
|
||||
Added moduleSectionsFileChecksumSet().
|
||||
01q,25jun13,elp Added moduleFlagsSet() (WIND00408631).
|
||||
01p,29apr10,pad Moved extern C statement after include statements.
|
||||
01o,23feb10,v_r Revert structure fields reorganization until we can update
|
||||
host side as well.
|
||||
01n,22feb10,v_r LP64 TODOS cleanup + structure reorganization.
|
||||
01m,25sep09,v_r Added library function pointers definitions.
|
||||
01l,16jun09,v_r LP64 adaptation: updated sections size and alignment to size_t.
|
||||
01k,30apr09,v_r LP64 adaptation (phase #1) : updated code following code
|
||||
adaptation guidelines (excepted FUNCPTR mods and struct reorg).
|
||||
01j,23oct06,dbt Added information in section descriptor.
|
||||
01i,18mar05,v_r Added moduleSectionChecksumSet() as needed by host side.
|
||||
01h,15feb05,v_r Fixed SPR #98274 (loader errno review). Added moduleIdVerify()
|
||||
as it's also used by host side now.
|
||||
01g,21oct04,x_p Added moduleDescDestroy prototype
|
||||
01f,21sep04,jn Final minor changes to allow code-sharing
|
||||
01e,18sep04,jn Move towards shared code between host and target
|
||||
01d,08jun04,x_p Added flags in MODULE_SEG_INFO
|
||||
01c,31may04,jn Make section related API's available
|
||||
01b,05apr04,jn Clean up - remove unused declarations and development-related
|
||||
comments
|
||||
01a,28oct98,pad Created based on AE version.
|
||||
*/
|
||||
|
||||
#ifndef __INCmoduleLibPh
|
||||
#define __INCmoduleLibPh
|
||||
|
||||
/* includes */
|
||||
|
||||
#ifdef HOST
|
||||
#include <host.h>
|
||||
#include <vmutex.h>
|
||||
#include <pdLib.h>
|
||||
#include <tgtmem.h>
|
||||
#include <objLib.h>
|
||||
#include <dllLib.h>
|
||||
#include <private/loadFileLibP.h>
|
||||
#else
|
||||
#include <vxWorks.h>
|
||||
#include <limits.h>
|
||||
#include <dllLib.h>
|
||||
#include <semLib.h>
|
||||
#include <memPartLib.h>
|
||||
#include <private/handleLibP.h>
|
||||
#include <private/loadFileLibP.h>
|
||||
#endif /* HOST */
|
||||
|
||||
#include <moduleLib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* typedefs */
|
||||
typedef struct modListDesc /* module list descriptor */
|
||||
{
|
||||
#ifdef HOST
|
||||
OBJ_CORE handle; /* handle management */
|
||||
#else
|
||||
HANDLE handle; /* handle management */
|
||||
#endif /* HOST */
|
||||
DL_LIST moduleList; /* list of loaded modules */
|
||||
SEM_ID moduleListSem; /* semaphore to protect moduleList */
|
||||
SEM_ID moduleSectionSem; /* semaphore to protect all scn lists */
|
||||
SEM_ID moduleSegmentSem; /* semaphore to protect all segment lists */
|
||||
DL_LIST moduleCreateHookList; /* list of associated create hooks */
|
||||
SEM_ID moduleCreateHookSem; /* semaphore to protect create hooks */
|
||||
BOOL moduleCreateHookInitialized; /* should be initialized to FALSE */
|
||||
PART_ID memPartId; /* dedicated memory partition ID */
|
||||
} MODLIST_DESC;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DL_NODE node;
|
||||
FUNCPTR func;
|
||||
} MODCREATE_HOOK;
|
||||
|
||||
/* Library function pointers */
|
||||
|
||||
extern MODULE_ID (* _func_moduleIdFigure)
|
||||
(
|
||||
void * moduleNameOrId /* module name or module ID */
|
||||
);
|
||||
|
||||
extern STATUS (* _func_moduleSegInfoGet)
|
||||
(
|
||||
MODULE_ID moduleId, /* module to query */
|
||||
MODULE_SEG_INFO * pModSegInfo /* ptr to module segment info struct */
|
||||
);
|
||||
|
||||
extern MODLIST_ID (* _func_kernelModuleListIdGet) (void);
|
||||
|
||||
/* defines */
|
||||
|
||||
#define MDLNODE_TO_ID(pNode) (pNode != NULL ? (MODULE_ID) ((char *) pNode - \
|
||||
offsetof (MODULE, moduleNode)) \
|
||||
: NULL)
|
||||
|
||||
#define SCNNODE_TO_ID(pNode) (pNode != NULL ? (SECTION_ID) ((char *) pNode - \
|
||||
offsetof(SECTION_DESC, sectionNode))\
|
||||
: NULL)
|
||||
|
||||
/* global var declarations */
|
||||
|
||||
extern MODLIST_ID kernelModuleListId;
|
||||
|
||||
/* Function declarations */
|
||||
|
||||
extern STATUS moduleDescDestroy(MODULE_ID moduleId, BOOL dealloc);
|
||||
extern STATUS moduleIdVerify(MODULE_ID moduleId);
|
||||
extern SECTION_ID moduleFirstSectionGet(MODULE_ID moduleId);
|
||||
extern SECTION_ID moduleNextSectionGet(SECTION_ID sectionId);
|
||||
#ifdef HOST
|
||||
extern int moduleSectionChecksumGet(SECTION_ID sectionId);
|
||||
#endif
|
||||
extern STATUS moduleSectionChecksumSet(SECTION_ID sectionId);
|
||||
extern STATUS moduleSectionsFileChecksumSet (SECTION_ID sectionId);
|
||||
extern STATUS moduleSectionDescFree(SECTION_ID sectionId);
|
||||
extern SECTION_ID moduleSectionDescGet(MODULE_ID moduleId);
|
||||
extern SECTION_ID moduleSectionRegister (MODULE_ID moduleId, char *name,
|
||||
SECTION_T type, void * location,
|
||||
size_t length, int flags,
|
||||
size_t alignment);
|
||||
extern STATUS moduleSegInfoGet(MODULE_ID moduleId,
|
||||
MODULE_SEG_INFO * pModSegInfo);
|
||||
extern STATUS moduleFlagsSet(MODULE_ID moduleId, int flags);
|
||||
extern STATUS moduleCommonSymEach (MODULE_ID moduleId,
|
||||
BOOL (*routine) (SYMBOL_ID symbolId,
|
||||
MODULE_ID moduleId,
|
||||
_Vx_usr_arg_t arg),
|
||||
_Vx_usr_arg_t routineArg,
|
||||
SYMBOL_ID * pLastSym);
|
||||
extern STATUS moduleUndefSymEach (MODULE_ID moduleId,
|
||||
BOOL (*routine) (char * name,
|
||||
MODULE_ID moduleId,
|
||||
_Vx_usr_arg_t arg),
|
||||
_Vx_usr_arg_t routineArg,
|
||||
char ** pLast);
|
||||
extern MODULE_ID moduleIsLastModuleMatched (char * moduleName);
|
||||
extern BOOL moduleSectionsCksumCompare (MODULE_ID module1Id,
|
||||
MODULE_ID module2Id);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __INCmoduleLibPh */
|
||||
|
||||
Reference in New Issue
Block a user