/* @lastChanged: "1999-04-26  14:47"
 
 * @filename:   gbd02
 * @purpose:    "BD_object_constants_and_types"
 * @release:    7.1.0.0
 * @see:        "-.-"
 *
 * @copyright:  (c) 1998-2004 SAP AG"
 */
 
.tt 1 $SAP$LiveCache$Gbd02$
.tt 3 $$BD_object_constants_and_types$$$1999-04-26$
 
.nf
 
 
    ========== licence begin  GPL
    Copyright (c) 1998-2004 SAP AG
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    ========== licence end
 
.fo
***********************************************************
 
Module  : BD_object_constants_and_types
 
Define  :
 
.CM *-END-* define --------------------------------------
 
Use     :
 
.CM *-END-* use -----------------------------------------
 
Synonym :
 
.CM *-END-* synonym -------------------------------------
 
 
Release :      Date : 1999-04-26
 
***********************************************************
 
Specification:
 
.CM *-END-* specification -------------------------------
 
***********************************************************
 
Description:
 
.CM *-END-* description ---------------------------------
 
***********************************************************
 
Structure:
 
.CM *-END-* structure -----------------------------------
 
**********************************************************
 
.CM -lll-
Code    :
 
 
TYPE
      tbd02_SynchSvpAndTreeSplits =
            (synchNone_ebd02,
            synchCheckPreventSplit_ebd02,
            synchWait_ebd02,
            synchUpdateExclCbFlag_ebd02);
      (* *)
 
      tbd02_CachePageState = RECORD
            cpsFound_bd02                 : boolean;
            cpsDirty_bd02                 : boolean;
            cpsWaitForWrite_bd02          : boolean;
            cpsWaitForSvpEnd_bd02         : boolean;
            cpsIoDone_bd02                : boolean;
            cpsHaveToWaitForLock_bd02     : boolean;
            cpsIntendToWaitForLock_bd02   : boolean;
            cpsTaskRescheduled_bd02       : boolean;
            cpsSynchSvpAndTreeSplits_bd02 : tbd02_SynchSvpAndTreeSplits
      END;
 
      (* *)
      tbd02_ChangedState = (
            cstNone_ebd02,
            cstChanged_ebd02,
            cstSvpRelevant_ebd02);
      (* *)
      tbd02_DataIOState = (
            iosNone_ebd02,
            iosUserIO_ebd02,
            iosServerIO_ebd02,
            iosBlocked_ebd02);
      (* *)
      tbd02_SwapState = (
            swsIoDone_ebd02,
            swsTestIo_ebd02,
            swsDoIo_ebd02);
      (* *)
      tbd02_RecoveryMode = (
            rmNone_ebd02,
            rmTemp_ebd02,
            rmPermDynamic_ebd02,
            rmPermStatic_ebd02);
 
      tbd02_DataCBlockInit = RECORD
            dcbi_lru_next             : tsp00_BufAddr;
            dcbi_lru_prev             : tsp00_BufAddr;
            dcbi_io_next              : tsp00_BufAddr;
            dcbi_io_prev              : tsp00_BufAddr;
            dcbi_queue_occ            : tsp00_BufAddr;
            dcbi_queue_old_occ        : tsp00_BufAddr;
            dcbi_lock_req_head        : tsp00_BufAddr;
            dcbi_lock_req_tail        : tsp00_BufAddr;
            dcbi_occupant             : tsp00_PageNo;
            dcbi_OldOccupant_bd02     : tsp00_PageNo;
            dcbi_LastOwner_bd02       : tsp00_TaskId;
            dcbi_UsageCnt_bd02        : tsp00_Int2;
            dcbi_tfn                  : tgg00_Tfn;
            dcbi_lru_rechain          : boolean;
            dcbi_ChangedState_bd02    : tbd02_ChangedState;
            dcbi_io_state             : tbd02_DataIOState;
            dcbi_ExclusiveLocked_bd02 : boolean;
            dcbi_IsSourceOfACopy_bd02 : boolean;
            dcbi_OldRecMode_bd02      : tbd02_RecoveryMode;
            dcbi_copy_no              : tsp00_Uint1;
            dcbi_dw_io_area           : boolean;
            dcbi_RecMode_bd02         : tbd02_RecoveryMode;
      END;
 
      tbd02_TaskQueueReason = (
            tqrNil_ebd02,
            tqrShareLock_ebd02,
            tqrExclusiveLock_ebd02);
      (* *)
      tbd02_pTaskQueueItem = ^tbd02_TaskQueueItem;
 
      tbd02_TaskQueueItem = RECORD
            tqiTaskId_bd02    : tsp00_TaskId;
            tqiReason_bd02    : tbd02_TaskQueueReason;
            tqiFiller1_bd02   : boolean;
            tqiFiller2_bd02   : tsp00_Int2;
            tqiFixedNext_bd02 : tbd02_pTaskQueueItem;
            tqiVarNext_bd02   : tbd02_pTaskQueueItem;
      END;
 
      tbd02_pDataCBlock = ^tbd02_DataCBlock;
 
      tbd02_DataCBlock = RECORD (* 68 or 112 bytes (BIT64) *)
            dcb_FixedNext_bd02   : tbd02_pDataCBlock;
            dcb_pFrame_bd02      : tbd_nodeptr;
            dcb_VarNext_bd02     : tbd02_pDataCBlock;
&           if $OS = WIN32 AND NOT DEFINED BIT64
            dcb_AWE_BlockNo_bd02 : tsp00_Int4; (* only MS and not IA64 *)
&           endif
            CASE boolean OF
                false :
                    (dcb_lru_next            : tbd02_pDataCBlock;
                    dcb_lru_prev             : tbd02_pDataCBlock;
                    (* *)
                    dcb_io_next              : tbd02_pDataCBlock;
                    dcb_io_prev              : tbd02_pDataCBlock;
                    (* *)
                    dcb_queue_occ            : tbd02_pTaskQueueItem;
                    dcb_queue_old_occ        : tbd02_pTaskQueueItem;
                    (* *)
                    dcb_lock_req_head        : tbd02_pTaskQueueItem;
                    dcb_lock_req_tail        : tbd02_pTaskQueueItem;
                    (* *)
                    dcb_occupant             : tsp00_PageNo;
                    dcb_OldOccupant_bd02     : tsp00_PageNo;
                    (* *)
                    dcb_LastOwner_bd02       : tsp00_TaskId;
                    dcb_UsageCnt_bd02        : tsp00_Int2;
                    dcb_tfn                  : tgg00_Tfn;
                    dcb_lru_rechain          : boolean;
                    (* *)
                    dcb_ChangedState_bd02    : tbd02_ChangedState;
                    dcb_io_state             : tbd02_DataIOState;
                    dcb_ExclusiveLocked_bd02 : boolean;
                    dcb_IsSourceOfACopy_bd02 : boolean;
                    dcb_OldRecMode_bd02      : tbd02_RecoveryMode;
                    dcb_copy_no              : tsp00_Uint1;
                    dcb_dw_io_area           : boolean;
                    dcb_RecMode_bd02         : tbd02_RecoveryMode);
                true :
                    (dcb_Init_bd02 : tbd02_DataCBlockInit)
                END;
            (*ENDCASE*) 
 
 
      tbd2_data_cb_flush_list = RECORD
            cbl_pCBlock_bd02      : ARRAY [1..MAX_VF_BUFFERS_BD00] OF tbd02_pDataCBlock;
&           if $OS = WIN32 AND NOT DEFINED BIT64
            cbl_AuxBufUsed_bd02 : ARRAY [1..MAX_VF_BUFFERS_BD00] OF boolean;
&           endif
      END;
 
.CM *-END-* code ----------------------------------------
.SP 2 
***********************************************************
.PA 
