Пример #1
0
/*+-----------------------------------------------------------------------+*
~MFM             Memory Manager Xmem BlkHdr
 *+-----------------------------------------------------------------------+*/
boolean    Mem_MakeXmemChunks 
                         (indextype     AllocQty,  indextype     ExtendQty,
                          ft F,lt Z,zz *Status)
{
/* Create The VirtualFile ChunkChunks                                      */

   if (MemMakeChunk   (sizeof(indextype),      AllocQty, 
                       ExtendQty,              0,
                       McStat,                &XmemBlkDirChunk))
   if (MemPutStackPtr (XmemBlkDirChunk,        1,                   McStat))
   if (MemMakeChunk   (sizeof(blktkntype),     AllocQty, 
                       ExtendQty,              0,
                       McStat,                &XmemBlkTknChunk))
   if (MemPutStackPtr (XmemBlkTknChunk,        1,                   McStat))

   if (MemMakeChunk   (sizeof(bytessize ),     AllocQty,
                       ExtendQty,              0,
                       McStat,                &XmemBlkSizeChunk))
   if (MemPutStackPtr (XmemBlkSizeChunk,       1,                   McStat))
   {
      XmemSize         = 0;

      MemBlkFile       = XmemFilePtr;

      MemBlkDirChunk   = XmemBlkDirChunk;
      MemBlkTknChunk   = XmemBlkTknChunk;
      MemBlkSizeChunk  = XmemBlkSizeChunk;

      XmemHeadFreeVbns = 
       MemHeadFreeVbns = 0;

      XmemHeadFreeBlks =
       MemHeadFreeBlks = 0;

      XmemHeadNullBlks =
       MemHeadNullBlks = 0;

      XmemBlkDir       =
       MemBlkDir       = (indextype  *)Theory->ChunkAddr[XmemBlkDirChunk];

      XmemBlkTkn       =
       MemBlkTkn       = (blktkntype *)Theory->ChunkAddr[XmemBlkTknChunk];

      XmemBlkSize      =
       MemBlkSize      = (bytessize  *)Theory->ChunkAddr[XmemBlkSizeChunk];
   }

   if (DeBug)
      DumpChunkChunk (1, XmemBlkDirChunk);

TRACK(TrackBak,"  strcpy (Mem_MakeXmemChunks\n");
return (STAT);
}
Пример #2
0
Файл: fm.c Проект: palmerc/lab
boolean FileGetZeroedChunk (vbntype       VbnBlk,    blkhdrtype *BlkHdr, 
                            boolean       Release,   
                            ft F,lt Z,zz *Status,    numtype    *Chunk)  
{
bytessize   UnitSize     = 0;
indextype   UnitCount    = 0;
bytessize   ChunkSize    = 0;
vbntype     ChunkRefVbn  = VbnBlk;
chunkstruc  ChunkRef; 
chunkstruc *ChunkRefPtr  = &ChunkRef;
addrtype    ChunkAddr    = NullPtr;

  /* Load Chunk Struc Into Core                                            */
  if (FileInBlk ((addrtype *)&ChunkRefPtr,              sizeof(chunkstruc),
                 BlkHdr,      Release,     McStat,     &ChunkRefVbn))
  {
     UnitSize  = ChunkRefPtr->UnitSize;
     UnitCount = ChunkRefPtr->UnitCount;
     ChunkSize = UnitCount * UnitSize;

     if (!*Chunk)
        MemMakeChunk (UnitSize,  UnitCount, ChunkRef.ExtendQty,
                      DbmDbId,   McStat,    Chunk);

     if (Normal(*Status))
        MemPutStackPtr (*Chunk, ChunkRef.StackPtr, McStat);


     if (!ChunkSize)
     if (sprintf (Msg, TraceStr(43),
/* "    ZERO BLOCK [%3u] ZERO Chunk[%4u](%2u * %2u)\n" */
                  VbnBlk, *Chunk, UnitCount, UnitSize))
        TraceMsg (0, Msg);

     if (MemGetChunkAddr (*Chunk,     McStat,      &ChunkAddr))
        memset           (ChunkAddr,  NULL,    (size_t )ChunkSize);
  }

  if (Normal(*Status))
  if (DeBug)
      MemDumpChunk   (0,                 *Chunk,         McStat);

TRACK(TrackBak,"FileGetZeroedChunk\n");
return(STAT);
}
Пример #3
0
Файл: vdbm.c Проект: palmerc/lab
boolean    DbmGetVchunkTkn (tokentype    *Token,
                            ft F,lt Z,zz *Status,  vchunktkntype *VchunkTkn)
{
dbheader      *CoreDb       = NullPtr;
grpheader     *GrpHdr       = NullPtr;
vchunktkntype *VchunkDir    = NullPtr;
numtype        RgnNum       = 0;
indextype      LocalIndex   = 0;
numtype        Chunk        = 0;
indextype      StackPtr     = 0;

  if (!Token->Handle)
     *Status = Oa_VchunkNotExist;

  if (TmGetCoreDb     (Token, McStat,    &CoreDb))
  if ((GrpHdr = CoreDb->VchunkGrpHdr) == NullPtr)
  {
     if (GrpGetPacket    (Token,      CoreDb->VchunkGrpNum,     
                          McStat,    &CoreDb->VchunkGrpHdr))
     {
        GrpHdr   = CoreDb->VchunkGrpHdr;
        StackPtr = GrpHdr->EntryCount + 1;
     }

     if (Normal(*Status))
     if (DbmBug)
        Grp_DumpStruct   (Token, CoreDb->VchunkGrpNum,  McStat);

#ifdef   __FREEZE_VCHUNKS__
     if (Normal(*Status)) 
     if (CoreDb->DbId   > WenvId)
     if (MemNewBitChunk  (StackPtr,             CoreDb->DbId,
                          McStat,              &(CoreDb->VchunkCommitDir)))

     if (MemMakeChunk    (sizeof(vbntype),   StackPtr,      2000,
                          CoreDb->DbId,   McStat, &(CoreDb->VchunkSwapDir)))
         MemPutStackPtr  (CoreDb->VchunkSwapDir,  StackPtr,       McStat);

#endif /* __FREEZE_VCHUNKS__  */
  }

  if (Normal(*Status))
  {
     if (Token->Handle < GrpHdr->BaseIndex)
     {
        RgnNum     = 0;
        LocalIndex = Token->Handle;
     } else {
        RgnNum     = (Token->Handle - GrpHdr->BaseIndex)
                    / GrpHdr->RegionEntrys;
        if (GrpHdr->BaseIndex)
           RgnNum++;
        LocalIndex = (Token->Handle - GrpHdr->BaseIndex)
                    % GrpHdr->RegionEntrys;
     }

     if (GrpGetRegion (CoreDb,     GrpHdr,                         RgnNum,     
                       McStat,    &Chunk,          (addrtype *)&VchunkDir))
       *VchunkTkn    = VchunkDir[LocalIndex];
     if ( RgnNum == 0 )
	GrpHdr->BaseRegion = Chunk ;


     if (VchunkTkn->InCore == 0
     &&  VchunkTkn->OnDisk == 0)
     if (MemGetChunkNum  (GrpHdr->RegionChunkDir, RgnNum, McStat, &Chunk))
     if (Chunk)
         DumpChunkChunk  (0, Chunk);
     
  }

TRACK(TrackBak,"DbmGetVchunkTkn\n");
return (STAT);
}
Пример #4
0
Файл: vdbm.c Проект: palmerc/lab
boolean DbmNewVchunk     (tokentype    *Anchor,    sizetype     UnitSize,
                          indextype     UnitCount, indextype    ExtendQty, 
                          ft F,lt Z,zz *Status,  
                          indextype    *Vchunk,    addrtype    *ChunkAddr)
{
       dbheader     *CoreDb       = NullPtr;
       vchunktkntype VchunkToken;
       grpheader    *GrpHdr       = NullPtr;
static sizetype      EntrySize    = sizeof (vchunktkntype);
static numtype       AllocRgns    = 0;
static numtype       RgnEntrys    = 125;
static numtype       AllocXs      = 1000;
static numtype       BaseIndex    = 2;
static accesstype    AccessType   = Read_Write;
static boolean       DiskCache    = False;
static numtype       CacheLimit   = 0;
static numtype       CacheLoad    = 0;
static numtype       NumBuffRgns  = 0;
       numtype       GrpNum       = 0;
       numtype       BaseRegion   = 0;

  DiskCache    = False;
  AllocRgns    = (Alloc_Handles/125) + 22;
  NumBuffRgns  = AllocRgns;
  CacheLimit   = AllocRgns;
  CacheLoad    = 100;
  VchunkToken.OnDisk = 0;
  VchunkToken.InCore = 0;

  if (TmGetCoreDb      (Anchor,  McStat,           &CoreDb))
  if (CoreDb->VchunkGrpNum == 0)
  {
     if (GrpNewPacket   (Anchor,    EntrySize,   AllocRgns,   RgnEntrys,
                         AllocXs,   BaseIndex,   AccessType,  DiskCache,
                         CacheLimit,CacheLoad,   NumBuffRgns,
                         McStat,   &GrpNum,     &GrpHdr,     &BaseRegion))
     if (GrpNewEntry    (Anchor,    GrpNum, 
                         McStat,    Vchunk,       (addrtype )&VchunkToken))
        GrpHdr->EnvObjType    = UnitChunk_AttrNum;

     CoreDb->VchunkGrpNum  = GrpNum;
     CoreDb->VchunkGrpHdr  = GrpHdr;

     if (Normal(*Status))
     if (Anchor->DbId > WenvId)
     if (CoreDb->VchunkCommitDir  == 0)
     if (MemNewBitChunk (10000,      Anchor->DbId,
                         McStat,                  &(CoreDb->VchunkCommitDir)))
     if (MemMakeChunk   (sizeof(vbntype),   10000,    2000,
                         Anchor->DbId,      McStat, &(CoreDb->VchunkSwapDir)))
         MemPutStackPtr (CoreDb->VchunkSwapDir,  1,           McStat);
  }

  if (Normal(*Status))
  if (MemMakeChunk    (UnitSize,  UnitCount,  ExtendQty,  Anchor->DbId,
                       McStat,                           &VchunkToken.InCore))
      GrpPutNewEntry  (Anchor,    CoreDb->VchunkGrpNum, 
                       (addrtype )&VchunkToken,
                       McStat,                            Vchunk);
  if (Normal(*Status))
      MemGetChunkAddr (VchunkToken.InCore,    McStat,     ChunkAddr);

#ifdef   __FREEZE_VCHUNKS__
  if (Normal(*Status))
  if (Anchor->DbId > WenvId)
  if (CoreDb->VchunkCommitDir)
  if (MemPutBit       (CoreDb->VchunkCommitDir,  *Vchunk, 1, 
                       McStat))
      MemPutVbn       (CoreDb->VchunkSwapDir,    *Vchunk, 0, 
                       McStat);
#endif /* __FREEZE_VCHUNKS__  */

TRACK(TrackBak,"DbmNewVchunk\n");
return (STAT);
}
/*+-----------------------------------------------------------------------+*/
boolean DbmFileInBlkHdr  (dbheader     *DbHdr,    ft F,lt Z,zz *Status)
{
chunkstruc    CS;
farlongtype   Offset      = sizeof (chunkstruc);
addrtype      ChunkAddr   = NullPtr;

/* Create The DbFile Blk Chunks                                            */

  if (DeBug >= 0 || DbmBug)
  if (sprintf (Msg, "    DB BlkDirOffset      : @%8x\n", DbHdr->BlkDirOffset))
     TraceMsg (0, Msg);

  if (FileGetSomeBytes (&DbHdr->BlkHdr,          DbHdr->BlkDirOffset,
                        (unsigned )sizeof (chunkstruc),
                        McStat,                 (addrtype )&CS))
  if (MemMakeChunk     (CS.UnitSize,            CS.UnitCount, 
                        CS.ExtendQty,           DbHdr->DbId,
                        McStat,                &DbHdr->BlkHdr.BlkDirChunk))

  if (MemGetChunkAddr  (DbHdr->BlkHdr.BlkDirChunk,   McStat, &ChunkAddr))

  if (FileGetSomeBytes (&DbHdr->BlkHdr,          DbHdr->BlkDirOffset + Offset,
                        (unsigned )(CS.UnitSize * CS.UnitCount),
                        McStat,                  ChunkAddr))
      MemPutStackPtr   (DbHdr->BlkHdr.BlkDirChunk, CS.StackPtr,  McStat);

  if (DeBug >= 0 || DbmBug)
  if (sprintf (Msg, "    DB BlkDirChunk       : Chunk[%4u] AT Vbn[%3u]\n",
              DbHdr->BlkHdr.BlkDirChunk,   DbHdr->BlkDirVbn))
  if (TraceMsg (0, Msg))
      MemDumpChunkStruc(&CS,                     McStat);


  if (Normal(*Status))
  if (FileGetSomeBytes (&DbHdr->BlkHdr,          DbHdr->BlkTknOffset,
                        (unsigned )sizeof (chunkstruc),
                        McStat,                 (addrtype )&CS))
  if (MemMakeChunk     (CS.UnitSize,            CS.UnitCount, 
                        CS.ExtendQty,           0,
                        McStat,                &DbHdr->BlkHdr.BlkTknChunk))
  if (MemGetChunkAddr  (DbHdr->BlkHdr.BlkTknChunk,   McStat, &ChunkAddr))

  if (FileGetSomeBytes (&DbHdr->BlkHdr,          DbHdr->BlkTknOffset + Offset,
                        (unsigned )(CS.UnitSize * CS.UnitCount),
                        McStat,                  ChunkAddr))
  if (MemPutStackPtr   (DbHdr->BlkHdr.BlkTknChunk, CS.StackPtr,  McStat))

  if (DeBug >= 0 || DbmBug)
  if (sprintf (Msg, "    DB BlkTknChunk       : Chunk[%4u] AT Vbn[%3u]\n",
              DbHdr->BlkHdr.BlkTknChunk,   DbHdr->BlkTknVbn))
  if (TraceMsg (0, Msg))
      MemDumpChunkStruc(&CS,                     McStat);

  if (Normal(*Status))
  if (FileGetSomeBytes (&DbHdr->BlkHdr,          DbHdr->BlkSizeOffset,
                        (unsigned )sizeof (chunkstruc),
                        McStat,                 (addrtype )&CS))
  if (MemMakeChunk     (CS.UnitSize,            CS.UnitCount, 
                        CS.ExtendQty,           0,
                        McStat,                &DbHdr->BlkHdr.BlkSizeChunk))
  if (MemGetChunkAddr  (DbHdr->BlkHdr.BlkSizeChunk,  McStat, &ChunkAddr))

  if (FileGetSomeBytes (&DbHdr->BlkHdr,          DbHdr->BlkSizeOffset+ Offset,
                        (unsigned )(CS.UnitSize * CS.UnitCount),
                        McStat,                  ChunkAddr))
  if (MemPutStackPtr   (DbHdr->BlkHdr.BlkSizeChunk, CS.StackPtr,  McStat))

  if (DeBug >= 0 || DbmBug)
  if (sprintf (Msg, "    DB BlkSizeChunk      : Chunk[%4u] AT Vbn[%3u]\n",
              DbHdr->BlkHdr.BlkSizeChunk,   DbHdr->BlkSizeVbn))
  if (TraceMsg (0, Msg))
      MemDumpChunkStruc(&CS,                     McStat);

TRACK(TrackBak,"DbmFileInBlkHdr\n");
return(STAT);
}
boolean DbmLoadDbHdr    (tokentype    *DbToken,   char      *LoadFileName,
                         ft F,lt Z,zz *Status,    dbheader **CoreDb)
{
boolean     TmpWriteHdr  = WriteHdr;
boolean     TmpSwapBug   = SwapBug;
int         TmpDeBug     = DeBug;
boolean     TmpDbmBug    = DbmBug;
vbntype     DbHdrVbn     = 0;
boolean     Release      = False;    
dbheader   *DbHdr        = *CoreDb;
indextype   HndlUnits    = 0;
numtype     AllocGroups  = 0;

  sprintf (Msg, "\n OPEN File %s \n", LoadFileName);
  TraceMsg (0, Msg);
  if (!DbmBug  && !SwapBug)
     WriteHdr    = True;

/*DbmBug         = True; */

  /* Reserve space for the NEW DbHeader */
  if (*CoreDb)
  {
     WriteHdr               = TmpWriteHdr;

     sprintf (Msg, "\n CoreDb ALREADY LOADED @%x\n\n", *CoreDb);
     TraceMsg (0, Msg);

     return (STAT);
  }

  if (LoadFileName == NullPtr)
     *Status = File_NoName;

  else  if (!strlen (LoadFileName))
     *Status = File_NoName;

  else
     DiskFilePtr = fopen (LoadFileName, "r+b");

  if (DiskFilePtr == NULL)
  {
#ifdef _WIN32
    int err = errno;
    unsigned long lasterr = GetLastError();
#endif
     SendMsg (0, " DbmLoadDbHdr:: Null File Name\n");
    *Status = File_WontOpen;
  } 
#ifdef NO_DISKCACHE
    else
      setvbuf (DiskFilePtr, NULL, _IONBF, 1024); 
/*    setvbuf (DiskFilePtr, NULL, _IOFBF, 1024);  */
#endif

#ifdef __DISPLAY_MESSAGE__
  if (Normal(*Status) || DbmBug)
  if (sprintf (Msg, " LOAD DBHDR FilePtr = %x; CoreDb @%8x\n",
               DiskFilePtr, *CoreDb))
     TraceMsg (0, Msg);
#endif /* __DISPLAY_MESSAGE__ */

/*  LastBlkOffset[DbHdr->DbId]  = 0;
    fseek (DbHdr->BlkHdr.BlkFile, LastBlkOffset[DbHdr->DbId], SEEK_SET);
*/
  if (Normal(*Status))
  {
     CoreMoreCore (sizeof (dbheader),  McStat,   (addrtype *)&DbHdr);
#ifdef __DISPLAY_MESSAGE__
     sprintf (Msg, " CoreDb[%4u] Located @%x\n", DbToken->DbId, DbHdr);
     TraceMsg (0, Msg);
#endif /* __DISPLAY_MESSAGE__ */
  }

  if (Normal(*Status))
  {
     *Status = Env_Normal;
      if (sprintf (Msg, "    *Status            =%4d\n", *Status))
         TraceMsg (0, Msg);
      DbHdr->BlkHdr.BlkFile     = DiskFilePtr;
      if (FileGetSomeBytes  (&DbHdr->BlkHdr,              (farlongtype )0,
                             (unsigned )sizeof (dbheader),
                             McStat,                      (addrtype )DbHdr))
      {
/*
         BlkDir_Vbn            = DbHdr->BlkDirVbn;
         BlkDir_Units          = DbHdr->BlkDirUnits;
         BlkDir_Offset         = DbHdr->BlkDirOffset;

         BlkTkn_Vbn            = DbHdr->BlkTknVbn;
         BlkTkn_Units          = DbHdr->BlkTknUnits;
         BlkTkn_Offset         = DbHdr->BlkTknOffset;

         BlkSize_Vbn           = DbHdr->BlkSizeVbn;
         BlkSize_Offset        = DbHdr->BlkSizeOffset;
*/
         sprintf (Msg, "   DB HDR restored from FileVbn[%3u]\n", DbHdrVbn);
         TraceMsg (0, Msg);
      }
  } 

  if (Normal(*Status))
  {
     DbHdr->GrpHdrDir          = 0;
     DbHdr->GrpVbnDir          = 0;
     DbHdr->ObjectIndexDir     = 0;
     DbHdr->ObjectAddrDir      = 0;
     DbHdr->ObjectMemLocDir    = 0;
     DbHdr->ObjectMemRefDir    = 0;
     DbHdr->LocalObjNumDir     = 0;

     DbHdr->LocalObjNumMap     = 0;
     DbHdr->ObjHandleDir       = 0;
     DbHdr->ObjNumMap          = 0;
     DbHdr->ObjTimeStampDir    = 0;

     DbHdr->ObjHdrDir          = 0;
     DbHdr->ObjVbnDir          = 0;

     DbHdr->VchunkCommitDir    = 0;
     DbHdr->VchunkSwapDir      = 0;

     DbHdr->VbnDeleteDir       = 0;

     DbHdr->VchunkGrpHdr       = NullPtr;
     DbHdr->NewHandles         = 0;
     DbHdr->FreeRegionDir      = 0;
     DbHdr->FreeRegionLengths  = 0;

     DbHdr->BlkHdr.BlkFile     = DiskFilePtr;
     DbHdr->BlkHdr.BlkDirChunk = 0;
     DbHdr->BlkHdr.BlkTknChunk = 0;
     DbHdr->BlkHdr.BlkSizeChunk= 0;

     DbHdr->LocalAttrNumMap    = 0;
     DbHdr->AttrHandleDir      = 0;
     DbHdr->AttrNumMap         = 0;
     DbHdr->LocalAttrSizeTbl   = 0;
     DbHdr->TextTokenDir       = 0;
     DbHdr->FreeTxtTknStack    = 0;

     if (DbHdr->DbId == RenvId && SwapHandles)
     {
        CoreHandles               = DbHdr->HandleCount;
        if (sprintf (Msg, "  1st %u Handles Of Renv are NonPutable\n",
                       CoreHandles))
          TraceMsg (0, Msg);
     }
  }


#ifdef   __FREEZE_VCHUNKS__
     if (Normal(*Status)) 
     if (DbHdr->DbId  > WenvId)
     if (MemMakeChunk      (sizeof(vbntype), 5000,      2000,
                            DbHdr->DbId,    McStat, &(DbHdr->VbnDeleteDir)))
        MemPutStackPtr     (DbHdr->VbnDeleteDir,   0,            McStat);

#endif /* __FREEZE_VCHUNKS__  */

  if (Normal(*Status)) 
  if (DbHdr->ObjectAddrDir == 0)
  if (DbHdr->HandleUnits)
  {
     if (MemMakeChunk   (sizeof(addr),  
                         DbHdr->HandleUnits,          Extend_Handles,
                         DbHdr->DbId,    McStat,    &(DbHdr->ObjectAddrDir)))
         MemPutStackPtr (DbHdr->ObjectAddrDir, DbHdr->HandleCount, McStat);
     HndlUnits = DbHdr->HandleUnits;
  }

  if (Normal(*Status)) 
  if (DbHdr->HandleUnits)
      MemNewBitChunk    (HndlUnits,                  DbHdr->DbId,
                         McStat,                    &(DbHdr->ObjectMemLocDir));

  if (Normal(*Status)) 
  if (DbHdr->HandleUnits)
  if (DbHdr->DbId      > WenvId)
  if (MemMakeChunk      (sizeof(shorttype),  
                         DbHdr->HandleUnits,         Extend_Handles,
                         DbHdr->DbId,   McStat,    &(DbHdr->ObjectMemRefDir)))
      MemPutStackPtr    (DbHdr->ObjectMemRefDir, DbHdr->HandleCount, McStat);

  if (Normal(*Status)) 
  if (DbmFileInBlkHdr    (DbHdr,    McStat))

  if (DbmFileInDbHdr     (DbHdr,    Release,     McStat))
  if (DbHdr->GrpCount == 0 )  
     AllocGroups = Alloc_Grps ;
  else
     AllocGroups = DbHdr->GrpCount + Extend_Grps ;
  if (Normal(*Status)) 
  if (MemMakeChunk      (sizeof(addrtype),  
                         AllocGroups ,         Extend_Grps,
                         DbHdr->DbId,   McStat,    &(DbHdr->GrpHdrDir)))
  if (MemPutStackPtr    (DbHdr->GrpHdrDir, DbHdr->GrpCount+1, McStat))
  if (MemGetChunkAddr(DbHdr->GrpHdrDir,McStat,(addrtype *) &DbHdr->GrpHdrs))
  if (MemMakeChunk      (sizeof(addrtype),  
                         DbHdr->LastEnvObjCount+1 ,         Extend_DbObjs,
                         DbHdr->DbId,   McStat,    &(DbHdr->ObjHdrDir)))
  if (MemPutStackPtr    (DbHdr->ObjHdrDir, DbHdr->LocalObjCount+2, McStat))

  if (DeBug || DbmBug)
  if (sprintf (Msg, "    DB ObjHdrDir         : Chunk[%4u] AT Vbn[%3u]\n",
              DbHdr->ObjHdrDir,  DbHdr->ObjHdrDirVbn))
     TraceMsg (0, Msg);
 
  if (Normal(*Status))
  {
     *CoreDb = DbHdr;
      sprintf (Msg, "\n  DB[%2u] LOADED;  Handles= %u\n",
               DbHdr->DbId, DbHdr->HandleCount);
      TraceMsg (0, Msg);
/*
      sprintf (Msg, "  DB[%2u] Header LOADED @ %x Handles= %u\n",
               DbHdr->DbId, DbHdr, DbHdr->HandleCount);
      TraceMsg (0, Msg);
*/
  }

  if (Normal(*Status))
  if (DbHdr->DbId  == WenvId)
  {
        CoreDbCount  = 100;
/*      CoreDbs[WenvId] = DbHdr;
        KernelGetAttr   (&WenvTkn,       DbCount_AttrNum,
                         McStat,        (addrtype )&CoreDbCount);
*/
  }
  SwapBug                = TmpSwapBug;
  DbmBug                 = TmpDbmBug;
  DeBug                  = TmpDeBug;
  WriteHdr               = TmpWriteHdr;


TRACK(TrackBak,"DbmLoadDbHdr\n");
return(STAT);
}