#ifndef MPLIB1_BPO_INIT #define MPLIB1_BPO_INIT /* ******************************************************************************* * Copyright (c) 1996 Martin Poole * ******************************************************************************* ** ** WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! WARNING !! ** ** Any changes to be made to this file should first be checked with ** mplib1 source control for library integrity. ** ** mplib1 source control can be reached at mplib1@quatermass.co.uk ** * * $Source$ * $Author$ * $Date$ * $Revision$ * Purpose : * ******************************************************************************* * * Change History * * $Log$ * ******************************************************************************* */ #ident "$Header$" #ifdef CXREF #include #endif #ifndef MPLIB1_CONFIG #include #endif /* ------------------------------------------------------------------ defines ------------------------------------------------------------------ */ #define GOFF(base,obj) ((off_t)((const char *)(obj) - (const char *)(base))) #define GPTR(base,off) ((void *)((char *)(base) + off)) #define GRPTR(obj,off) (void *)((off)?(void *)((char *)(obj) - \ *((off_t *)(obj)) + (off_t)(off)):NULL) #ifndef BIT #define BIT(x) (1<<(x)) #endif #define SODB_USE_SHALLOC BIT(0) #define SODB_USE_RESOURCES BIT(0) #define SODB_USE_LIMIT BIT(1) #define SODB_ADD_HEADER BIT(2) #define SODB_BASE_NAME "SODB Base" #define CHECK_ALL_RESOURCES 0 #ifndef SODB_MMAP_PRIV #define SODB_MMAP_PRIV 0600 #endif #ifndef SODB_IPC_PRIV #define SODB_IPC_PRIV 0600 #endif #define SODB_RES_NO_ALLOC_NM BIT(0) #ifndef SODB_READ_CONFIG #define SODB_READ_CONFIG BIT(0) #endif typedef int (*Validate_Resource_t)( const char * res_name, off_t res_off, void *param1 ); typedef void (*Fetch_SODB_Resource_t)( void *); /* ------------------------------------------------------------------ structures ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ function definitions ------------------------------------------------------------------ */ extern void * Create_SODB_mmap( const char *use_name, const char *mmap_name, size_t msize, off_t moff, int flags ); extern void * Create_SODB_shm( const char *use_name, const char *fname, char id, size_t msize, int flags ); extern void * Create_SODB_mmap_priv( const char *use_name, const char *mmap_name, size_t msize, off_t moff, int flags, mode_t priv ); extern void * Create_SODB_shm_priv( const char *use_name, const char *fname, char id, size_t msize, int flags, mode_t priv ); extern int Detach_SODB_mmap( const void *hint ); extern int Detach_SODB_shm( const void *hint ); extern int Detach_SODB_lump( const void *hint ); extern void *Get_SODB_Pointer( const void *hint, off_t item_offset ); extern off_t Get_SODB_Offset( const void *vp ); extern mode_t Get_SODB_Privs( const void *vp ); extern void Do_SODB_Init( void ); extern void * Get_SODB_Base( const void *hint ); extern int SODB_in_Segment( const void *hint, const void *chk ); /* And the resource functions */ extern off_t Add_SODB_Resource( void *object, const char *res_name ); extern void * Find_SODB_Resource( const void *hint, const char *res_name ); extern void * Fetch_SODB_Resource( const void *hint, const char *name, size_t s_size, Fetch_SODB_Resource_t s_init ); /* and a resource list function */ extern int Validate_Resources( const void * hint, int p_which_procs, Validate_Resource_t disp, void *param1 ); /* For debugging use only, you have been warned ! */ extern void * Attach_SODB_image( const char *fname ); extern void * Attach_SODB_image_raw( const char *fname, off_t foff, size_t fsize ); #endif /* -- End of File -- */