23 #if defined (VM_TRACE) && !defined(ACC_SAFE_QUEUE)
24 #define ACC_SAFE_QUEUE
28 #include <SimulatedBlock.hpp>
32 #define dbgWord32(ptr, ind, val)
74 #define ZCON_HEAD_SIZE 2
78 #define ZDOWN_LIMIT 12
80 #define ZSHIFT_MINUS 2
81 #define ZFREE_LIMIT 65
82 #define ZNO_CONTAINERS 64
83 #define ZELEM_HEAD_SIZE 1
87 #define ZPOS_PAGE_ID 0
88 #define ZPOS_PAGE_TYPE 1
89 #define ZPOS_PAGE_TYPE_BIT 14
90 #define ZPOS_EMPTY_LIST 1
91 #define ZPOS_ALLOC_CONTAINERS 2
92 #define ZPOS_CHECKSUM 3
93 #define ZPOS_OVERFLOWREC 4
94 #define ZPOS_NO_ELEM_IN_PAGE 2
95 #define ZPOS_FREE_AREA_IN_PAGE 5
96 #define ZPOS_LAST_INDEX 6
97 #define ZPOS_INSERT_INDEX 7
98 #define ZPOS_ARRAY_POS 8
99 #define ZPOS_NEXT_FREE_INDEX 9
100 #define ZPOS_NEXT_PAGE 10
101 #define ZPOS_PREV_PAGE 11
102 #define ZNORMAL_PAGE_TYPE 0
103 #define ZOVERFLOW_PAGE_TYPE 1
104 #define ZDEFAULT_LIST 3
105 #define ZWORDS_IN_PAGE 2048
108 #define ZDIRRANGESIZE 65
110 #define ZFRAGMENTSIZE 64
112 #define ZFS_CONNECTSIZE 300
113 #define ZFS_OPSIZE 100
114 #define ZKEYINKEYREQ 4
116 #define ZLOCALLOGFILE 2
118 #define ZMAXSCANSIGNALLEN 20
119 #define ZMAINKEYLEN 8
120 #define ZNO_OF_DISK_VERSION 3
121 #define ZNO_OF_OP_PER_SIGNAL 20
123 #define ZOP_HEAD_INFO_LN 3
124 #define ZOPRECSIZE 740
125 #define ZOVERFLOWRECSIZE 5
126 #define ZPAGE8_BASE_ADD 1
127 #define ZPAGESIZE 128
128 #define ZPARALLEL_QUEUE 1
129 #define ZPDIRECTORY 1
130 #define ZSCAN_MAX_LOCK 4
131 #define ZSERIAL_QUEUE 2
138 #define ZROOTFRAGMENTSIZE 32
139 #define ZSCAN_LOCK_ALL 3
144 #define ZSCAN_REC_SIZE 256
146 #define ZTABLESIZE 16
147 #define ZTABMAXINDEX 3
148 #define ZUNDEFINED_OP 6
154 #define ZINITIALISE_RECORDS 1
155 #define ZREL_ROOT_FRAG 5
162 #define ZLIMIT_OF_ERROR 600 // Limit check for error codes
163 #define ZCHECKROOT_ERROR 601 // Delete fragment error code
164 #define ZCONNECT_SIZE_ERROR 602 // ACC_SEIZEREF
165 #define ZDIR_RANGE_ERROR 603 // Add fragment error code
166 #define ZFULL_FRAGRECORD_ERROR 604 // Add fragment error code
167 #define ZFULL_ROOTFRAGRECORD_ERROR 605 // Add fragment error code
168 #define ZROOTFRAG_STATE_ERROR 606 // Add fragment
169 #define ZOVERTAB_REC_ERROR 607 // Add fragment
171 #define ZSCAN_REFACC_CONNECT_ERROR 608 // ACC_SCANREF
172 #define ZFOUR_ACTIVE_SCAN_ERROR 609 // ACC_SCANREF
173 #define ZNULL_SCAN_REC_ERROR 610 // ACC_SCANREF
175 #define ZDIRSIZE_ERROR 623
176 #define ZOVER_REC_ERROR 624 // Insufficient Space
177 #define ZPAGESIZE_ERROR 625
178 #define ZTUPLE_DELETED_ERROR 626
179 #define ZREAD_ERROR 626
180 #define ZWRITE_ERROR 630
181 #define ZTO_OP_STATE_ERROR 631
182 #define ZTOO_EARLY_ACCESS_ERROR 632
183 #define ZDIR_RANGE_FULL_ERROR 633 // on fragment
202 static bool getLocked(Uint32 data);
203 static bool getUnlocked(Uint32 data);
204 static Uint32 getScanBits(Uint32 data);
205 static Uint32 getHashValuePart(Uint32 data);
206 static Uint32 getOpPtrI(Uint32 data);
208 static Uint32 setLocked(Uint32 opPtrI);
209 static Uint32 setUnlocked(Uint32 hashValuePart, Uint32 scanBits);
210 static Uint32 setScanBit(Uint32 header, Uint32 scanBit);
211 static Uint32 clearScanBit(Uint32 header, Uint32 scanBit);
216 ElementHeader::getLocked(Uint32 data){
217 return (data & 1) == 0;
222 ElementHeader::getUnlocked(Uint32 data){
223 return (data & 1) == 1;
228 ElementHeader::getScanBits(Uint32 data){
229 assert(getUnlocked(data));
230 return (data >> 1) & ((1 << MAX_PARALLEL_SCANS_PER_FRAG) - 1);
235 ElementHeader::getHashValuePart(Uint32 data){
236 assert(getUnlocked(data));
242 ElementHeader::getOpPtrI(Uint32 data){
243 assert(getLocked(data));
249 ElementHeader::setLocked(Uint32 opPtrI){
250 return (opPtrI << 1) + 0;
254 ElementHeader::setUnlocked(Uint32 hashValue, Uint32 scanBits){
255 return (hashValue << 16) + (scanBits << 1) + 1;
260 ElementHeader::setScanBit(Uint32 header, Uint32 scanBit){
261 assert(getUnlocked(header));
262 return header | (scanBit << 1);
267 ElementHeader::clearScanBit(Uint32 header, Uint32 scanBit){
268 assert(getUnlocked(header));
269 return header & (~(scanBit << 1));
289 SCAN_WAIT_IN_QUEUE = 37,
292 WAIT_COMMIT_ABORT = 41,
301 DELETEFIRSTFRAG = 50,
302 DELETESECONDFRAG = 51,
312 Uint32 dirArray[256];
331 Uint32 scan[MAX_PARALLEL_SCANS_PER_FRAG];
340 Uint32 roothashcheck;
342 Uint32 m_commit_count;
350 Uint32 activeDataPage;
355 Uint32 expReceivePageptr;
356 Uint32 expReceiveIndex;
357 Uint32 expReceiveForward;
358 Uint32 expSenderDirIndex;
359 Uint32 expSenderDirptr;
360 Uint32 expSenderIndex;
361 Uint32 expSenderPageptr;
366 Uint32 lockOwnersList;
376 Uint32 lastOverIndex;
386 Uint32 firstOverflowRec;
387 Uint32 lastOverflowRec;
388 Uint32 firstFreeDirindexRec;
394 Uint32 expandCounter;
416 Uint32 maxloadfactor;
417 Uint32 minloadfactor;
433 Uint32 nextAllocPage;
438 Uint32 noOfExpectedPages;
493 Uint32 elementIsforward;
495 Uint32 elementPointer;
498 Uint32 hashvaluePart;
500 Uint32 nextLockOwnerOp;
502 Uint32 nextParallelQue;
504 Uint32 nextSerialQue;
505 Uint32 m_lock_owner_ptr_i;
508 Uint32 prevLockOwnerOp;
510 Uint32 prevParallelQue;
511 Uint32 m_lo_last_parallel_op_ptr_i;
514 Uint32 prevSerialQue;
515 Uint32 m_lo_last_serial_op_ptr_i;
521 Uint16 elementContainer;
523 Uint32 xfrmtupkeylen;
529 ,OP_LOCK_MODE = 0x00010
530 ,OP_ACC_LOCK_MODE = 0x00020
532 ,OP_LOCK_OWNER = 0x00040
533 ,OP_RUN_QUEUE = 0x00080
534 ,OP_DIRTY_READ = 0x00100
535 ,OP_LOCK_REQ = 0x00200
536 ,OP_COMMIT_DELETE_CHECK = 0x00400
537 ,OP_INSERT_IS_DONE = 0x00800
538 ,OP_ELEMENT_DISAPPEARED = 0x01000
540 ,OP_STATE_MASK = 0xF0000
541 ,OP_STATE_IDLE = 0xF0000
542 ,OP_STATE_WAITING = 0x00000
543 ,OP_STATE_RUNNING = 0x10000
544 ,OP_STATE_EXECUTED = 0x30000
546 ,OP_EXECUTED_DIRTY_READ = 0x3050F
547 ,OP_INITIAL = ~(Uint32)0
553 transId1 == op->transId1 && transId2 == op->transId2;
570 Uint32 nextfreeoverrec;
592 enum ScanBucketState {
597 Uint32 activeLocalFrag;
598 Uint32 nextBucketIndex;
599 Uint32 scanNextfreerec;
600 Uint32 scanFirstActiveOp;
601 Uint32 scanFirstLockedOp;
602 Uint32 scanLastLockedOp;
603 Uint32 scanFirstQueuedOp;
604 Uint32 scanLastQueuedOp;
608 Uint32 startNoOfBuckets;
609 Uint32 minBucketIndexToRescan;
610 Uint32 maxBucketIndexToRescan;
611 Uint32 scanOpsAllocated;
612 ScanBucketState scanBucketState;
615 Uint32 scanUserblockref;
618 Uint8 scanReadCommittedFlag;
628 Uint32 fragholder[MAX_FRAG_PER_NODE];
629 Uint32 fragptrholder[MAX_FRAG_PER_NODE];
631 BlockReference tabUserRef;
644 void execACCMINUPDATE(
Signal* signal);
645 void removerow(Uint32 op,
const Local_key*);
648 BLOCK_DEFINES(
Dbacc);
651 void execDEBUG_SIG(
Signal* signal);
652 void execCONTINUEB(
Signal* signal);
653 void execACC_CHECK_SCAN(
Signal* signal);
654 void execEXPANDCHECK2(
Signal* signal);
655 void execSHRINKCHECK2(
Signal* signal);
656 void execACC_OVER_REC(
Signal* signal);
657 void execNEXTOPERATION(
Signal* signal);
658 void execREAD_PSEUDO_REQ(
Signal* signal);
661 void execSTTOR(
Signal* signal);
662 void execACCKEYREQ(
Signal* signal);
663 void execACCSEIZEREQ(
Signal* signal);
664 void execACCFRAGREQ(
Signal* signal);
665 void execNEXT_SCANREQ(
Signal* signal);
666 void execACC_ABORTREQ(
Signal* signal);
667 void execACC_SCANREQ(
Signal* signal);
668 void execACC_COMMITREQ(
Signal* signal);
669 void execACC_TO_REQ(
Signal* signal);
670 void execACC_LOCKREQ(
Signal* signal);
671 void execNDB_STTOR(
Signal* signal);
672 void execDROP_TAB_REQ(
Signal* signal);
673 void execREAD_CONFIG_REQ(
Signal* signal);
674 void execDUMP_STATE_ORD(
Signal* signal);
676 void execDROP_FRAG_REQ(
Signal*);
678 void execDBINFO_SCANREQ(
Signal *signal);
681 void ACCKEY_error(Uint32 fromWhere);
683 void commitDeleteCheck();
686 typedef void * RootfragmentrecPtr;
692 void releaseFragResources(
Signal* signal, Uint32 fragIndex);
693 void releaseRootFragRecord(
Signal* signal, RootfragmentrecPtr rootPtr);
694 void releaseRootFragResources(
Signal* signal, Uint32 tableId);
695 void releaseDirResources(
Signal* signal,
699 void releaseDirectoryResources(
Signal* signal,
703 Uint32 directoryIndex);
707 void initScanFragmentPart(
Signal* signal);
708 Uint32 checkScanExpand(
Signal* signal);
709 Uint32 checkScanShrink(
Signal* signal);
710 void initialiseDirRec(
Signal* signal);
711 void initialiseDirRangeRec(
Signal* signal);
712 void initialiseFragRec(
Signal* signal);
713 void initialiseFsConnectionRec(
Signal* signal);
714 void initialiseFsOpRec(
Signal* signal);
715 void initialiseOperationRec(
Signal* signal);
716 void initialiseOverflowRec(
Signal* signal);
717 void initialisePageRec(
Signal* signal);
718 void initialiseRootfragRec(
Signal* signal);
719 void initialiseScanRec(
Signal* signal);
720 void initialiseTableRec(
Signal* signal);
721 bool addfragtotab(
Signal* signal, Uint32 rootIndex, Uint32 fragId);
722 void initOpRec(
Signal* signal);
723 void sendAcckeyconf(
Signal* signal);
727 Uint32 getNoParallelTransactionFull(
const Operationrec*);
729 #ifdef ACC_SAFE_QUEUE
738 void execACCKEY_ORD(
Signal* signal, Uint32 opPtrI);
742 Uint32 placeReadInLockQueue(OperationrecPtr lockOwnerPtr);
743 Uint32 placeWriteInLockQueue(OperationrecPtr lockOwnerPtr);
744 void placeSerialQueue(OperationrecPtr lockOwner, OperationrecPtr op);
745 void abortSerieQueueOperation(
Signal* signal, OperationrecPtr op);
746 void abortParallelQueueOperation(
Signal* signal, OperationrecPtr op);
748 void expandcontainer(
Signal* signal);
749 void shrinkcontainer(
Signal* signal);
750 void nextcontainerinfoExp(
Signal* signal);
751 void releaseAndCommitActiveOps(
Signal* signal);
752 void releaseAndCommitQueuedOps(
Signal* signal);
753 void releaseAndAbortLockedOps(
Signal* signal);
754 void containerinfo(
Signal* signal);
755 bool getScanElement(
Signal* signal);
756 void initScanOpRec(
Signal* signal);
757 void nextcontainerinfo(
Signal* signal);
758 void putActiveScanOp(
Signal* signal);
759 void putOpScanLockQue();
760 void putReadyScanQueue(
Signal* signal, Uint32 scanRecIndex);
761 void releaseScanBucket(
Signal* signal);
762 void releaseScanContainer(
Signal* signal);
763 void releaseScanRec(
Signal* signal);
764 bool searchScanContainer(
Signal* signal);
765 void sendNextScanConf(
Signal* signal);
766 void setlock(
Signal* signal);
767 void takeOutActiveScanOp(
Signal* signal);
768 void takeOutScanLockQueue(Uint32 scanRecIndex);
769 void takeOutReadyScanQueue(
Signal* signal);
770 void insertElement(
Signal* signal);
771 void insertContainer(
Signal* signal);
772 void addnewcontainer(
Signal* signal);
773 void getfreelist(
Signal* signal);
774 void increaselistcont(
Signal* signal);
775 void seizeLeftlist(
Signal* signal);
776 void seizeRightlist(
Signal* signal);
777 Uint32 readTablePk(Uint32 lkey1, Uint32 lkey2, Uint32 eh, OperationrecPtr);
778 Uint32 getElement(
Signal* signal, OperationrecPtr& lockOwner);
779 void getdirindex(
Signal* signal);
780 void commitdelete(
Signal* signal);
781 void deleteElement(
Signal* signal);
782 void getLastAndRemove(
Signal* signal);
783 void releaseLeftlist(
Signal* signal);
784 void releaseRightlist(
Signal* signal);
785 void checkoverfreelist(
Signal* signal);
786 void abortOperation(
Signal* signal);
787 void commitOperation(
Signal* signal);
788 void copyOpInfo(OperationrecPtr dst, OperationrecPtr src);
789 Uint32 executeNextOperation(
Signal* signal);
790 void releaselock(
Signal* signal);
791 void release_lockowner(
Signal* signal, OperationrecPtr,
bool commit);
792 void startNew(
Signal* signal, OperationrecPtr newOwner);
793 void abortWaitingOperation(
Signal*, OperationrecPtr);
794 void abortExecutedOperation(
Signal*, OperationrecPtr);
796 void takeOutFragWaitQue(
Signal* signal);
797 void check_lock_upgrade(
Signal* signal, OperationrecPtr release_op,
bool lo);
798 void check_lock_upgrade(
Signal* signal, OperationrecPtr lock_owner,
799 OperationrecPtr release_op);
800 void allocOverflowPage(
Signal* signal);
801 bool getfragmentrec(
Signal* signal, FragmentrecPtr&, Uint32 fragId);
802 void insertLockOwnersList(
Signal* signal,
const OperationrecPtr&);
803 void takeOutLockOwnersList(
Signal* signal,
const OperationrecPtr&);
805 void initFsOpRec(
Signal* signal);
806 void initOverpage(
Signal* signal);
807 void initPage(
Signal* signal);
808 void initRootfragrec(
Signal* signal);
809 void putOpInFragWaitQue(
Signal* signal);
810 void putOverflowRecInFrag(
Signal* signal);
811 void putRecInFreeOverdir(
Signal* signal);
812 void releaseDirectory(
Signal* signal);
813 void releaseDirrange(
Signal* signal);
814 void releaseFsConnRec(
Signal* signal);
815 void releaseFsOpRec(
Signal* signal);
816 void releaseOpRec(
Signal* signal);
817 void releaseOverflowRec(
Signal* signal);
818 void releaseOverpage(
Signal* signal);
819 void releasePage(
Signal* signal);
820 void releaseLogicalPage(Fragmentrec * fragP, Uint32 logicalPageId);
821 void seizeDirectory(
Signal* signal);
822 void seizeDirrange(
Signal* signal);
823 void seizeFragrec(
Signal* signal);
824 void seizeFsConnectRec(
Signal* signal);
825 void seizeFsOpRec(
Signal* signal);
826 void seizeOpRec(
Signal* signal);
827 void seizeOverRec(
Signal* signal);
828 void seizePage(
Signal* signal);
829 void seizeRootfragrec(
Signal* signal);
830 void seizeScanRec(
Signal* signal);
831 void sendSystemerror(
Signal* signal,
int line);
832 void takeRecOutOfFreeOverdir(
Signal* signal);
833 void takeRecOutOfFreeOverpage(
Signal* signal);
835 void addFragRefuse(
Signal* signal, Uint32 errorCode);
836 void ndbsttorryLab(
Signal* signal);
837 void acckeyref1Lab(
Signal* signal, Uint32 result_code);
838 void insertelementLab(
Signal* signal);
839 void checkNextFragmentLab(
Signal* signal);
840 void endofexpLab(
Signal* signal);
841 void endofshrinkbucketLab(
Signal* signal);
842 void senddatapagesLab(
Signal* signal);
843 void sttorrysignalLab(
Signal* signal);
844 void sendholdconfsignalLab(
Signal* signal);
845 void accIsLockedLab(
Signal* signal, OperationrecPtr lockOwnerPtr);
846 void insertExistElemLab(
Signal* signal, OperationrecPtr lockOwnerPtr);
847 void refaccConnectLab(
Signal* signal);
848 void releaseScanLab(
Signal* signal);
849 void ndbrestart1Lab(
Signal* signal);
850 void initialiseRecordsLab(
Signal* signal, Uint32 ref, Uint32 data);
851 void checkNextBucketLab(
Signal* signal);
852 void storeDataPageInDirectoryLab(
Signal* signal);
854 void zpagesize_error(
const char* where);
856 void reenable_expand_after_redo_log_exection_complete(
Signal*);
859 void xfrmKeyData(
Signal* signal);
866 void debug_lh_vars(
const char* where);
868 void debug_lh_vars(
const char* where) {}
876 DirRangePtr expDirRangePtr;
877 DirRangePtr gnsDirRangePtr;
878 DirRangePtr newDirRangePtr;
879 DirRangePtr rdDirRangePtr;
880 DirRangePtr nciOverflowrangeptr;
881 Uint32 cdirrangesize;
882 Uint32 cfirstfreeDirrange;
886 Directoryarray *directoryarray;
887 DirectoryarrayPtr expDirptr;
888 DirectoryarrayPtr rdDirptr;
889 DirectoryarrayPtr sdDirptr;
890 DirectoryarrayPtr nciOverflowDirptr;
891 Uint32 cdirarraysize;
893 Uint32 cfirstfreedir;
898 Fragmentrec *fragmentrec;
899 FragmentrecPtr fragrecptr;
900 Uint32 cfirstfreefrag;
901 Uint32 cfragmentsize;
902 RSS_OP_COUNTER(cnoOfFreeFragrec);
903 RSS_OP_SNAPSHOT(cnoOfFreeFragrec);
911 Operationrec *operationrec;
912 OperationrecPtr operationRecPtr;
913 OperationrecPtr idrOperationRecPtr;
914 OperationrecPtr mlpqOperPtr;
915 OperationrecPtr queOperPtr;
916 OperationrecPtr readWriteOpPtr;
922 OverflowRecord *overflowRecord;
923 OverflowRecordPtr iopOverflowRecPtr;
924 OverflowRecordPtr tfoOverflowRecPtr;
925 OverflowRecordPtr porOverflowRecPtr;
926 OverflowRecordPtr priOverflowRecPtr;
927 OverflowRecordPtr rorOverflowRecPtr;
928 OverflowRecordPtr sorOverflowRecPtr;
929 OverflowRecordPtr troOverflowRecPtr;
930 Uint32 cfirstfreeoverrec;
931 Uint32 coverflowrecsize;
941 Page8Ptr datapageptr;
952 Page8Ptr lastPageptr;
953 Page8Ptr lastPrevpageptr;
955 Page8Ptr lcnCopyPageptr;
957 Page8Ptr ciPageidptr;
958 Page8Ptr gsePageidptr;
960 Page8Ptr nciPageidptr;
961 Page8Ptr rsbPageidptr;
962 Page8Ptr rscPageidptr;
963 Page8Ptr slPageidptr;
964 Page8Ptr sscPageidptr;
971 Uint32 cfirstfreepage;
974 Uint32 cnoOfAllocatedPages;
975 Uint32 cnoOfAllocatedPagesMax;
990 Uint32 cfirstFreeScanRec;
997 Uint32 tgseElementptr;
998 Uint32 tgseContainerptr;
1003 Uint32 tlcnChecksum;
1004 Uint32 tlupElemIndex;
1009 Uint32 tancContainerptr;
1010 Uint32 tancPageindex;
1013 Uint32 tidrElemhead;
1015 Uint32 tidrPageindex;
1016 Uint32 tidrContainerptr;
1017 Uint32 tidrContainerhead;
1018 Uint32 tlastForward;
1019 Uint32 tlastPageindex;
1020 Uint32 tlastContainerlen;
1021 Uint32 tlastElementptr;
1022 Uint32 tlastContainerptr;
1023 Uint32 tlastContainerhead;
1024 Uint32 trlPageindex;
1025 Uint32 tdelContainerptr;
1026 Uint32 tdelElementptr;
1030 Uint32 tgeContainerptr;
1031 Uint32 tgeElementptr;
1033 Uint32 texpReceivedBucket;
1035 Uint32 texpDirRangeIndex;
1036 Uint32 texpDirPageIndex;
1038 Uint32 tcheckpointid;
1039 Uint32 tciContainerptr;
1040 Uint32 tnciContainerptr;
1041 Uint32 tisoContainerptr;
1042 Uint32 trscContainerptr;
1043 Uint32 tsscContainerptr;
1044 Uint32 tciContainerlen;
1045 Uint32 trscContainerlen;
1046 Uint32 tsscContainerlen;
1047 Uint32 tciContainerhead;
1048 Uint32 tnciContainerhead;
1049 Uint32 tslElementptr;
1050 Uint32 tisoElementptr;
1051 Uint32 tsscElementptr;
1055 Uint32 tgseIsforward;
1056 Uint32 tsscIsforward;
1057 Uint32 trscIsforward;
1058 Uint32 tciIsforward;
1059 Uint32 tnciIsforward;
1060 Uint32 tisoIsforward;
1061 Uint32 tgseIsLocked;
1062 Uint32 tsscIsLocked;
1069 Uint32 tgflPageindex;
1072 Uint32 tslPageindex;
1073 Uint32 tgsePageindex;
1074 Uint32 tnciNextSamePage;
1076 Uint32 tciPageindex;
1077 Uint32 trsbPageindex;
1078 Uint32 tnciPageindex;
1079 Uint32 tlastPrevconptr;
1081 Uint32 tslUpdateHeader;
1083 BlockReference tuserblockref;
1087 Uint32 tgdiPageindex;
1099 BlockReference clqhBlockRef;
1102 BlockReference cownBlockref;
1103 BlockReference cndbcntrRef;
1107 Uint32 cexcPageindex;
1108 Uint32 cexcContainerptr;
1109 Uint32 cexcContainerhead;
1110 Uint32 cexcContainerlen;
1111 Uint32 cexcElementptr;
1112 Uint32 cexcPrevconptr;
1113 Uint32 cexcMovedLen;
1114 Uint32 cexcPrevpageptr;
1115 Uint32 cexcPrevpageindex;
1116 Uint32 cexcPrevforward;
1117 Uint32 clocalkey[32];
1119 Uint32 ckeys[2048 * MAX_XFRM_MULTIPLY];
1123 Uint32 c_errorInsert3000_TableId;
1124 Uint32 c_memusage_report_frequency;