00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _EYEDBSM_KERN_H
00026 #define _EYEDBSM_KERN_H
00027
00028 #include <eyedbsm/eyedbsm.h>
00029 #include "xm_alloc.h"
00030
00031 namespace eyedbsm {
00032
00033 struct DbLocalHandle {
00034 int logfd;
00035 char *dbfile;
00036 int xid;
00037 };
00038
00039 extern Status
00040 ESM_dbOpen(const char *dbfile, int flags,
00041 const OpenHints *hints, int *id, void **pmutp,
00042 int create_mode, unsigned int xid,
00043 unsigned int *pversion, DbHandle **dbh),
00044 ESM_dbClose(const DbHandle *dbh),
00045 ESM_dbOpenLocal(const char *dbfile, int flags,
00046 int *id, unsigned int *xid,
00047 DbLocalHandle **dbh),
00048 ESM_dbCloseLocal(const DbLocalHandle *dbh),
00049
00050 ESM_dbSetuid(DbHandle *dbh, int uid),
00051
00052 ESM_guestUidGet(DbHandle const *dbh, int *uid),
00053 ESM_guestUidSet(DbHandle *dbh, int uid),
00054
00055 ESM_rootEntrySet(DbHandle const *dbh, char const *const key,
00056 void const *const data, unsigned int size, Boolean create),
00057 ESM_rootEntryGet(DbHandle const *dbh, char const *const key,
00058 void *data, int maxsize),
00059 ESM_rootEntryDelete(DbHandle const *dbh, char const *const key),
00060
00061 ESM_objectCreate(DbHandle const *dbh, void const *const object,
00062 unsigned int size, short dspid, Oid *oid, OPMode),
00063 ESM_objectCreate_x(DbHandle const *dbh, void const *const object,
00064 unsigned int size, short dspid, Oid *oid, OPMode,
00065 unsigned int create_flags),
00066 ESM_objectDelete(DbHandle const *dbh, Oid const *const oid,
00067 OPMode),
00068 ESM_objectWrite(DbHandle const *dbh, int start, int length,
00069 void const *const object, Oid const *const oid,
00070 OPMode),
00071 ESM_objectWriteCache(DbHandle const *dbh, int start,
00072 void const *const object, Oid const *const oid),
00073 ESM_objectRead(DbHandle const *dbh, int start, int length, void *object,
00074 LockMode lockmode, short *pdatid, unsigned int *psize,
00075 Oid const *const oid, OPMode),
00076 ESM_objectReadNoCopy(DbHandle const *dbh, int start, int length,
00077 void *object, LockMode lockmode, short *pdatid,
00078 unsigned int *psize, Oid const *const oid, OPMode),
00079 ESM_objectReadCache(DbHandle const *dbh, int start, void **object,
00080 LockMode lockmode, Oid const *const oid),
00081 ESM_objectValidate(DbHandle const *, Oid const *const),
00082
00083 #ifdef ESM_SERVER
00084 ESM_objectCreate_server(DbHandle const *dbh, void const *const object,
00085 unsigned int size, Oid *oid, rpc_ServerData *data,
00086 OPmode),
00087 ESM_objectWrite_server(DbHandle const *dbh, int start, int length,
00088 void const *const object, Oid const *const oid,
00089 rpc_ServerData *data, OPMode),
00090 ESM_objectRead_server(DbHandle const *dbh, int start, int length,
00091 void *object, Oid const *const oid, rpc_ServerData *data),
00092
00093 #endif
00094
00095 ESM_bornAgainEpilogue(DbHandle const *dbh, Oid const *const o_oid,
00096 Oid const *const n_oid, NS ns, short datid),
00097
00098 ESM_objectSizeGet(DbHandle const *dbh, unsigned int *size, LockMode lockmode,
00099 Oid const *const oid, OPMode),
00100
00101 ESM_objectSizeModify(DbHandle const *dbh, unsigned int size, Boolean,
00102 Oid const *const oid, OPMode),
00103
00104 ESM_objectCheckAccess(DbHandle const *dbh, Boolean write,
00105 Oid const *const oid, Boolean *access),
00106
00107 ESM_objectLocationGet(DbHandle const *dbh, const Oid *oid,
00108 ObjectLocation *objloc),
00109
00110 ESM_objectsLocationGet(DbHandle const *dbh, const Oid *oid,
00111 ObjectLocation *objloc, unsigned int oid_cnt),
00112
00113 ESM_registerStart(DbHandle const *dbh, unsigned int reg_mask),
00114 ESM_registerClear(DbHandle const *dbh),
00115 ESM_registerEnd(DbHandle const *dbh),
00116 ESM_registerGet(DbHandle const *dbh, Register **),
00117
00118 ESM_objectMoveDatDsp(DbHandle const *dbh, Oid const *const oid,
00119 short datid, short dspid, Boolean keepDatid,
00120 OPMode opmode),
00121
00122 ESM_objectsMoveDatDsp(DbHandle const *dbh, Oid const *const oid,
00123 unsigned int oid_cnt, short datid, short dspid,
00124 Boolean keepDatid, OPMode opmode),
00125
00126 ESM_firstOidDatGet(DbHandle const *dbh, short datid, Oid *oid,
00127 Boolean *found),
00128 ESM_nextOidDatGet(DbHandle const *dbh, short datid,
00129 Oid const *const baseoid, Oid *nextoid,
00130 Boolean *found),
00131
00132 ESM_firstOidGet_map(DbHandle const *dbh, short datid, Oid *oid,
00133 Boolean *found),
00134 ESM_nextOidGet_map(DbHandle const *dbh, short datid,
00135 Oid const *const baseoid, Oid *nextoid,
00136 Boolean *found),
00137
00138 ESM_firstOidGet_omp(DbHandle const *dbh, Oid *oid,
00139 Boolean *found),
00140 ESM_nextOidGet_omp(DbHandle const *dbh,
00141 Oid const *const baseoid, Oid *nextoid,
00142 Boolean *found),
00143
00144
00145
00146 ESM_suserUnset(DbHandle *dbh),
00147
00148 ESM_datCreate(DbHandle const *dbh, const char *file, const char *name,
00149 unsigned long long maxsize, MapType mtype, unsigned int sizeslot,
00150 DatType, mode_t file_mask, const char *file_group),
00151
00152 ESM_datMove(DbHandle const *dbh, const char *datfile,
00153 const char *newdatfile, Boolean force),
00154
00155 ESM_datDelete(DbHandle const *dbh, const char *datfile, Boolean force),
00156
00157 ESM_datResize(DbHandle const *dbh, const char *datfile,
00158 unsigned long long newmaxsize),
00159
00160 ESM_datCheck(DbHandle const *dbh, const char *datfile,
00161 short *datid, short *dspid),
00162
00163 ESM_datMoveObjects(DbHandle const *dbh, const char *dat_src,
00164 const char *dat_dest),
00165
00166 ESM_datResetCurSlot(DbHandle const *dbh, const char *datfile),
00167
00168 ESM_datDefragment(DbHandle const *dbh, const char *datfile, mode_t file_mask, const char *file_group),
00169
00170 ESM_datsCompress(DbHandle const *dbh),
00171
00172 ESM_datRename(DbHandle const *dbh, const char *datfile, const char *name),
00173
00174 ESM_datGetInfo(DbHandle const *dbh, const char *datfile,
00175 DatafileInfo *info),
00176
00177 ESM_datGetDspid(DbHandle const *dbh, short datid, short *dspid),
00178
00179 ESM_dspSetDefault(DbHandle const *dbh, const char *datafile,
00180 Boolean fromDbCreate),
00181
00182 ESM_dspGetDefault(DbHandle const *dbh, short *dspid),
00183
00184 ESM_dspCreate(DbHandle const *dbh, const char *dataspace,
00185 const char **datfiles, unsigned int datfile_cnt,
00186 Boolean fromDbCreate),
00187
00188 ESM_dspUpdate(DbHandle const *dbh, const char *dataspace,
00189 const char **datfiles, unsigned int datfile_cnt,
00190 short flags, short orphan_dspid),
00191
00192 ESM_dspDelete(DbHandle const *dbh, const char *dataspace),
00193 ESM_dspRename(DbHandle const *dbh, const char *dataspace,
00194 const char *dataspace_new),
00195
00196 ESM_dspCheck(DbHandle const *dbh, const char *dataspace, short *dspid,
00197 short datid[], unsigned int *ndat),
00198
00199 ESM_dspSetCurDat(DbHandle const *dbh, const char *dataspace, const char *),
00200 ESM_dspGetCurDat(DbHandle const *dbh, const char *dataspace, short *cur),
00201
00202 ESM_protectionCreate(DbHandle const *dbh,
00203 ProtectionDescription const *desc,
00204 Oid *oid),
00205
00206 ESM_protectionDelete(DbHandle const *dbh, Oid const *const oid),
00207
00208 ESM_protectionModify(DbHandle const *dbh,
00209 ProtectionDescription const *desc,
00210 Oid const *oid),
00211
00212 ESM_protectionGetByName(DbHandle const *dbh,
00213 char const *name,
00214 ProtectionDescription **desc,
00215 Oid *oid),
00216
00217 ESM_protectionGetByOid(DbHandle const *dbh,
00218 Oid const *oid,
00219 ProtectionDescription **desc),
00220
00221 ESM_protectionListGet(DbHandle const *dbh,
00222 Oid **oid, ProtectionDescription ***desc,
00223 unsigned int *nprot),
00224
00225 ESM_dbProtectionAdd(DbHandle const *dbh,
00226 DbProtectionDescription const *desc, int nprot),
00227
00228 ESM_dbProtectionGet(DbHandle const *dbh,
00229 DbProtectionDescription **desc, unsigned int *nprot),
00230
00231 ESM_objectProtectionSet(DbHandle const *dbh, Oid const *const oid,
00232 Oid const *const protoid, OPMode),
00233 ESM_objectProtectionGet(DbHandle const *dbh, Oid const *const oid,
00234 Oid *protoid),
00235
00236 ESM_protectionsVolatUpdate(DbHandle const *dbh),
00237
00238 ESM_objectRestore(DbHandle const *dbh, Oid const *const oid,
00239 NS ns, short datid),
00240 ESM_objectDeleteByOidLoc(DbHandle const *dbh, Oid const *const oid,
00241 NS ns, short datid);
00242
00243 extern int ESM_getOpenFlags(DbHandle const *dbh);
00244 extern unsigned int ESM_xidGet(DbHandle *dbh);
00245 extern void ESM_uidSet(DbHandle *dbh, int uid);
00246 extern int ESM_uidGet(DbHandle *dbh);
00247
00248 enum ESM_oidsTraceAction {
00249 ESM_allOids = 1,
00250 ESM_invalidOids,
00251 ESM_oidCount
00252 };
00253
00254 extern void
00255 ESM_oidsTrace(DbHandle const *const, ESM_oidsTraceAction, FILE *);
00256
00257 extern int
00258 ESM_dataBaseIdGet(DbHandle const *dbh);
00259
00260 extern const char *
00261 shmfileGet(const char *);
00262
00263 #define ESM_REGISTER(DBH, OP, X) do { \
00264 if ((DBH)->vd->reg && ((DBH)->vd->reg_mask & (OP))) X; \
00265 } while(0)
00266
00267 }
00268
00269 #endif