154 lines
5.0 KiB
C
154 lines
5.0 KiB
C
/* sdLibCommon.h - common shared data library header file */
|
|
|
|
/* Copyright 2003-2004 Wind River Systems, Inc. */
|
|
|
|
/*
|
|
modification history
|
|
--------------------
|
|
01j,24nov04,zl added text coherency option.
|
|
01i,14oct04,gls added SD_CACHE_COHERENCY and SD_CACHE_GUARDED
|
|
01h,11oct04,gls added include of objLibCommon.h
|
|
01g,28sep04,gls moved sdOpen and sdCreate definitions to sdLib.h
|
|
01f,24sep04,gls SD attribute maintenance
|
|
01e,19jul04,gls added hook add/delete routines (SPR #98361)
|
|
01d,06apr04,gls added support for sdInfoGet()
|
|
01c,29mar04,gls added include of vmLibCommon.h (SPR #95051)
|
|
01b,17feb04,gls cleaned up
|
|
01a,23jan04,gls created based on sdLib.h
|
|
*/
|
|
|
|
#ifndef __INCsdLibCommonh
|
|
#define __INCsdLibCommonh
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "vxWorks.h"
|
|
#include "vmLibCommon.h"
|
|
#include "objLibCommon.h"
|
|
#include "vwModNum.h"
|
|
|
|
/* errno values */
|
|
|
|
#define S_sdLib_NOT_IMPLEMENTED (M_sdLib | 1)
|
|
#define S_sdLib_NAME_NOT_VALID (M_sdLib | 2)
|
|
#define S_sdLib_VIRT_PAGES_NOT_AVAILABLE (M_sdLib | 3)
|
|
#define S_sdLib_PHYS_PAGES_NOT_AVAILABLE (M_sdLib | 4)
|
|
#define S_sdLib_ARG_LIST_IS_NULL (M_sdLib | 5)
|
|
#define S_sdLib_VIRT_ADDR_PTR_IS_NULL (M_sdLib | 6)
|
|
#define S_sdLib_SIZE_IS_NULL (M_sdLib | 7)
|
|
#define S_sdLib_INVALID_OPTIONS (M_sdLib | 8)
|
|
#define S_sdLib_INVALID_MMU_ATTR (M_sdLib | 9)
|
|
#define S_sdLib_NOT_MAPPED (M_sdLib | 10)
|
|
#define S_sdLib_ADDR_NOT_ALIGNED (M_sdLib | 11)
|
|
#define S_sdLib_CLIENT_COUNT_NOT_NULL (M_sdLib | 12)
|
|
#define S_sdLib_INVALID_SD_ID (M_sdLib | 13)
|
|
#define S_sdLib_SD_IS_PRIVATE (M_sdLib | 14)
|
|
#define S_sdLib_PHYS_ADDR_OUT_OF_RANGE (M_sdLib | 15)
|
|
|
|
/* defines */
|
|
|
|
#define VX_SD_NAME_LENGTH 31 /* max name length for diplay */
|
|
|
|
/* SD_ATTR definitions */
|
|
|
|
#define SD_ATTR_RW (MMU_ATTR_SUP_RW | MMU_ATTR_USR_RW | \
|
|
MMU_ATTR_VALID)
|
|
|
|
#define SD_ATTR_RO (MMU_ATTR_SUP_RO | MMU_ATTR_USR_RO | \
|
|
MMU_ATTR_VALID)
|
|
|
|
#define SD_ATTR_RWX (MMU_ATTR_SUP_RWX | MMU_ATTR_USR_RWX | \
|
|
MMU_ATTR_VALID)
|
|
|
|
#define SD_ATTR_RX (MMU_ATTR_SUP_EXE | MMU_ATTR_USR_EXE | \
|
|
MMU_ATTR_SUP_RO | MMU_ATTR_USR_RO | \
|
|
MMU_ATTR_VALID)
|
|
|
|
#define SD_CACHE_COPYBACK (MMU_ATTR_CACHE_COPYBACK)
|
|
#define SD_CACHE_WRITETHROUGH (MMU_ATTR_CACHE_WRITETHRU)
|
|
#define SD_CACHE_OFF (MMU_ATTR_CACHE_OFF)
|
|
#define SD_CACHE_DEFAULT (MMU_ATTR_CACHE_DEFAULT)
|
|
#define SD_CACHE_COHERENCY (MMU_ATTR_CACHE_COHERENCY)
|
|
#define SD_CACHE_GUARDED (MMU_ATTR_CACHE_GUARDED)
|
|
|
|
/* reserved attributes */
|
|
|
|
#define SD_CACHE_TEXT_UPDATE 0x80000000
|
|
|
|
/* Options */
|
|
|
|
#define SD_LINGER 0x00000001 /* SD stays after last client exits */
|
|
#define SD_PRIVATE 0x00000002 /* SD is private to an application */
|
|
|
|
|
|
typedef struct sd_desc /* SD_DESC - information structure */
|
|
{
|
|
char name[VX_SD_NAME_LENGTH+1]; /* name of SD */
|
|
int options; /* options, e.g. SD_LINGER, SD_PRIVATE */
|
|
MMU_ATTR defaultAttr; /* default attributes of SD */
|
|
MMU_ATTR currentAttr; /* current attributes of SD */
|
|
UINT size; /* size of SD */
|
|
VIRT_ADDR startAddr; /* start address of SD */
|
|
} SD_DESC;
|
|
|
|
/* typedefs for Shared Data hook functions */
|
|
|
|
typedef void (* SD_CREATE_HOOK) (const SD_ID);
|
|
typedef void (* SD_DELETE_HOOK) (const SD_ID);
|
|
typedef STATUS (* SD_GENERIC_HOOK) (void *, int);
|
|
|
|
typedef enum sd_routines {
|
|
SD_HOOK_TYPE_MSK = 0x00000001,
|
|
SD_HOOK_ID = 0x00000000,
|
|
SD_HOOK_NAME = 0x00000001,
|
|
SD_HOOK_ROUTINE_MSK = 0x0000000e,
|
|
SD_HOOK_CREATE = 0x00000002,
|
|
SD_HOOK_OPEN = 0x00000004,
|
|
SD_HOOK_DELETE = 0x00000006,
|
|
SD_HOOK_MAP = 0x00000008,
|
|
SD_HOOK_UNMAP = 0x0000000a,
|
|
SD_HOOK_PROTECT = 0x0000000c
|
|
} SD_HOOK_OPTIONS;
|
|
|
|
|
|
/* functional API to the library */
|
|
|
|
STATUS sdDelete (SD_ID sdId,
|
|
int options);
|
|
|
|
VIRT_ADDR sdMap (SD_ID sdId,
|
|
MMU_ATTR attr,
|
|
int options);
|
|
|
|
STATUS sdUnmap (SD_ID sdId,
|
|
int options);
|
|
|
|
STATUS sdProtect (SD_ID sdId,
|
|
MMU_ATTR attr);
|
|
|
|
STATUS sdInfoGet (SD_ID sdId,
|
|
SD_DESC * pSdStruct);
|
|
|
|
STATUS sdCreateHookAdd (SD_CREATE_HOOK sdCreateHook,
|
|
BOOL addToHead);
|
|
|
|
STATUS sdCreateHookDelete (SD_CREATE_HOOK sdCreateHook);
|
|
|
|
STATUS sdDeleteHookAdd (SD_DELETE_HOOK sdDeleteHook,
|
|
BOOL addToHead);
|
|
|
|
STATUS sdDeleteHookDelete (SD_DELETE_HOOK sdDeleteHook);
|
|
|
|
STATUS sdGenericHookAdd (SD_GENERIC_HOOK sdGenericHook,
|
|
BOOL addToHead);
|
|
|
|
STATUS sdGenericHookDelete (SD_GENERIC_HOOK sdGenericHook);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __INCsdLibCommonh */
|