cscope 15 $HOME/berkeleydb/db-4.6.21/dist 0004923159 @../btree/bt_compact.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/txn.h " 19 __bam_com_dups __P (( DBC *, 20 PAGE **, u_t32_t , , DB_COMPACT *, *)); 21 __bam_com_t __P (( DBC *, 22 DBT *, DBT *, u_t32_t , *, DB_COMPACT *, *)); 23 __bam_cch __P (( DBC *, DBT *, u_t32_t , )); 24 __bam_mge __P (( DBC *, 25 DBC *, u_t32_t , DBT *, DB_COMPACT *,*)); 26 __bam_mge_ __P (( DBC *, DBC *, , DB_COMPACT *, *)); 27 __bam_mge_ges __P (( DBC *, DBC *, DB_COMPACT *)); 28 __bam_mge_cds __P (( DBC *, DBC*, u_t32_t , DB_COMPACT *)); 29 __bam_un__ovow __P (( DBC *, PAGE *, DB_COMPACT *)); 30 __bam_un_ovow __P (( DBC *, 31 db_pgno_t , db_pgno_t, DB_COMPACT *)); 32 __bam_un_ge __P (( DBC *, PAGE **, )); 33 __bam_un_ro_ge __P (( DBC *, 34 PAGE *, u_t32_t , DB_COMPACT *)); 36 #ifde HAVE_FTRUNCATE 37 __bam__li __P (( DB *, DB_TXN *)); 38 __bam_vekey __P (( DBC *, , DBT *)); 39 __bam_tup_li __P (( DB *, pgli *, u_t32_t )); 40 __bam_un_ __P (( DB *, DB_TXN *, DB_COMPACT *)); 43 #SAVE_START \ 45 ve_da = * c_da ; \ 46 t = `__db_tcy ( dbv , \ 47 & ve_t , cut . da , cut. size , \ 48 & ve_t . da , &ve_t. un ); \ 49 } 0) ) 56 #RESTORE_START \ 58 c_da -> com_ges_ = \ 59 ve_da . com_ges_ ; \ 60 c_da -> com_vs = ve_da .compact_levels; \ 61 c_da -> com_un = ve_da .compact_truncate; \ 62 t = `__db_tcy ( dbv , & cut , \ 63 ve_t . da , save_t. size , \ 64 & cut . da , &cut. un ); \ 65 } 0) ) 73 $__bam_com ( dbp , txn , t , , c_da , ags , d ) 74 DB * dbp ; 75 DB_TXN * txn ; 76 DBT * t , * ; 77 DB_COMPACT * c_da ; 78 u_t32_t ags ; 79 DBT * d ; 81 DBT cut , ve_t ; 82 DBC * dbc ; 83 DB_COMPACT ve_da ; 84 DB_ENV * dbv ; 85 u_t32_t ; 86 ddlock , de , t , , t_t , txn_lol ; 88 #ifde HAVE_FTRUNCATE 89 pgli * li ; 90 db_pgno_t ϡ_pgno ; 91 u_t32_t ms , und ; 94 dbv = dbp ->dbenv; 96 `memt (& cut , 0, (current)); 97 `memt (& ve_t , 0, (save_start)); 98 dbc = NULL ; 99 = 0; 100 ddlock = de = t = = 0; 102 #ifde HAVE_FTRUNCATE 103 li = NULL ; 104 ϡ_pgno = 0; 105 ms = und = 0; 113 i( t ! NULL && ( t = `__db_tcy ( dbv , 114 & cut , t -> da , s-> size , 115 & cut . da , &cut. un )) != 0) 116 ( t ); 118 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) 119 txn_lol = 1; 121 txn_lol = 0; 122 i(! `LF_ISSET ( DB_FREE_SPACE | DB_FREELIST_ONLY )) 123 no_ ; 124 i( `LF_ISSET ( DB_FREELIST_ONLY )) 125 `LF_SET ( DB_FREE_SPACE ); 127 #ifde HAVE_FTRUNCATE 129 i( txn_lol && ( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 130 r ; 132 i(( t = `__db__un ( dbp , 133 txn , ags , c_da , & li , & ms , & ϡ_pgno )) != 0) { 134 `LF_CLR ( DB_FREE_SPACE ); 135 ; 139 i( ms =0 && `LF_ISSET ( DB_FREELIST_ONLY )) { 140 t = 0; 141 `LF_CLR ( DB_FREE_SPACE ); 142 ; 144 i(( t = `__bam_tup_li ( dbp , li , ms )) != 0) { 146 i( t = EBUSY ) 147 t = 0; 151 : i( txn_lol ) { 152 i(( t_t = `__txn_comm ( txn , DB_TXN_NOSYNC )!0 && t == 0) 153 t = t_t ; 154 txn = NULL ; 156 i( t != 0) 157 r ; 160 und = c_da -> com_ges_und ; 161 i( `LF_ISSET ( DB_FREELIST_ONLY )) 162 de ; 172 no_ : 173 = dbp -> pgsize - SIZEOF_PAGE ; 174 i( c_da -> com_f͔ != 0) { 175 * c_da -> com_f͔ ; 176 /= 100; 179 = ( dbp -> pgsize - SIZEOF_PAGE ) - factor; 181 i( c_da -> com_ges == 0) 182 c_da -> com_ges = DB_MAX_PAGES ; 185 ddlock = 0; 187 SAVE_START ; 188 i( t != 0) 191 i( txn_lol ) { 192 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 195 i( c_da -> com_timeout != 0 && 196 ( t = `__txn_t_timeout ( txn , 197 c_da -> com_timeout , DB_SET_LOCK_TIMEOUT )) != 0) 198 r ; 201 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 202 r ; 204 i(( t = `__bam_com_t ( dbc , & cut , , , 205 & , c_da , & de )= DB_LOCK_DEADLOCK && txn_lol ) { 211 ddlock = 1; 212 c_da -> com_ddlock ++; 213 RESTORE_START ; 216 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 217 t = t_t ; 219 r : i( txn_lol && txn ! NULL ) { 220 i( t =0 && ddlock == 0) 221 t = `__txn_comm ( txn , DB_TXN_NOSYNC ); 222 i(( t_t = `__txn_abt ( txn )!0 && t == 0) 223 t = t_t ; 224 txn = NULL ; 226 } t =0 && ! de ); 228 i( t =0 && d ! NULL ) 229 t = `__db_tcy ( dbv , d , cut . da , cut. size , 230 & d -> da , &d-> un ); 231 i( cut . da ! NULL ) 232 `__os_ ( dbv , cut . da ); 233 i( ve_t . da ! NULL ) 234 `__os_ ( dbv , ve_t . da ); 236 #ifde HAVE_FTRUNCATE 243 de : i( `LF_ISSET ( DB_FREE_SPACE )) { 244 DBMETA * ma ; 245 db_pgno_t pgno ; 247 pgno = PGNO_BASE_MD ; 248 de = 1; 249 i( t =0 && ! `LF_ISSET ( DB_FREELIST_ONLY && ( t_t = 250 `__memp_fg ( dbp -> mpf , & pgno , txn , 0, & ma )) == 0) { 251 de = ma -> = PGNO_INVALID ; 252 t = `__memp_ut ( dbp -> mpf , ma , dbc -> iܙy ); 255 i(! de ) 256 t = `__bam_un_ ( dbp , txn , c_da ); 259 i( li ! NULL ) 260 `__os_ ( dbv , li ); 262 i(( t_t = 263 `__memp_fg ( dbp -> mpf , & pgno , txn , 0, & ma )) == 0) { 264 c_da -> com_ges_und = 265 und + ϡ_pgno - ma ->last_pgno; 266 i(( t_t = `__memp_ut ( 267 dbp -> mpf , ma , dbc -> iܙy )!0 && t == 0) 268 t = t_t ; 269 } i( t == 0) 270 t = t_t ; 272 i(( t_t = `__bam__li ( dbp , txn )!0 && t == 0) 273 t_t = t ; 277 ( t ); 278 } } 285 #CS_READ 0 ) 286 #CS_PARENT 1 ) 287 #CS_NEXT 2 ) 288 #CS_NEXT_WRITE 3 ) 289 #CS_DEL 4 ) 290 #CS_START 5 ) 291 #CS_GETRECNO 0x80 ) 294 $__bam_cch ( dbc , t , sag , v ) 295 DBC * dbc ; 296 DBT * t ; 297 u_t32_t sag ; 298 v ; 300 BTREE_CURSOR * ; 301 n_ud , t ; 303 = ( BTREE_CURSOR *) dbc -> ; 305 i( dbc -> dbty = DB_RECNO ) { 307 i( `FLD_ISSET ( sag , CS_GETRECNO )) { 308 i( t = NULL || s-> size == 0) 309 -> o = 1; 310 i(( t = 311 `__m_gno ( dbc , t , & -> o , 0)) != 0) 312 ( t ); 313 `FLD_CLR ( sag , CS_GETRECNO ); 315 sag ) { 316 CS_READ : 317 sag = SR_READ ; 319 CS_NEXT : 320 sag = SR_PARENT | SR_READ ; 322 CS_START : 323 v = LEAFLEVEL ; 325 CS_DEL : 326 CS_NEXT_WRITE : 327 sag = SR_STACK ; 329 CS_PARENT : 330 sag = SR_PARENT | SR_WRITE ; 333 ( `__db_nic ( dbc -> dbp -> dbv , EINVAL )); 335 i(( t = `__bam_rch ( dbc , 336 & -> o , sag , v , & n_ud )) != 0) 337 ( t ); 339 -> o --> c -> dx ; 341 `FLD_CLR ( sag , CS_GETRECNO ); 342 sag ) { 343 CS_READ : 344 sag = SR_READ | SR_DUPFIRST ; 346 CS_DEL : 347 sag = SR_DEL ; 349 CS_NEXT : 350 sag = SR_NEXT ; 352 CS_NEXT_WRITE : 353 sag = SR_NEXT | SR_WRITE ; 355 CS_START : 356 sag = SR_START | SR_WRITE ; 358 CS_PARENT : 359 sag = SR_PARENT | SR_WRITE ; 362 ( `__db_nic ( dbc -> dbp -> dbv , EINVAL )); 364 i( t = NULL || s-> size == 0) 365 `FLD_SET ( sag , SR_MIN ); 367 i(( t = `__bam_ch ( dbc , 368 -> ro , t , sag , v , NULL , & n_ud )) != 0) 369 ( t ); 373 } } 382 $__bam_com_t ( dbc , t , , , p , c_da , dڕ ) 383 DBC * dbc ; 384 DBT * t , * ; 385 u_t32_t ; 386 * p ; 387 DB_COMPACT * c_da ; 388 * dڕ ; 390 BTREE_CURSOR * , * n ; 391 DB * dbp ; 392 DBC * ndbc ; 393 DB_ENV * dbv ; 394 DB_LOCK nock ; 395 EPG * g ; 396 DB_MPOOLFILE * dbmp ; 397 PAGE * pg , * g , * g ; 398 db_pgno_t gno ; 399 db_o_t xt_o ; 400 u_t32_t sag ; 401 check_dups , check_unc , de , v ; 402 mged , ry , xt_ge , pgs_de , t , t_t , tde ; 404 #ifdef DEBUG 405 #CTRACE ( dbc , loti , t , t , f ) do { \ 406 DBT __a ; \ 407 `DB_SET_DBT ( __a , t , ` (t)); \ 408 `DEBUG_LWRITE ( \ 409 dbc , (dbc)-> txn , loti , & __a , t , f ) \ 410 } 0) ) 411 #PTRACE ( dbc , loti , p , t , f ) do { \ 412 __buf [32]; \ 413 () `tf ( __buf , \ 414 ( __buf ), "pgno: %lu", ( u_lg ) p ); \ 415 `CTRACE ( dbc , loti , __buf , t , f ); \ 416 } 0) ) 418 #CTRACE ( dbc , loti , t , t , f ) ) 419 #PTRACE ( dbc , loti , p , t , f ) ) 422 ndbc = NULL ; 423 pg = NULL ; 424 g = NULL ; 425 de = 0; 426 tde = 0; 427 pgs_de = 0; 428 xt_o = 0; 429 xt_ge = 0; 430 `LOCK_INIT ( nock ); 431 check_unc = c_da -> com_un ! PGNO_INVALID ; 432 check_dups = (! `F_ISSET ( dbc , DBC_OPD ) && 433 `F_ISSET ( dbc -> dbp , DB_AM_DUP )|| check_unc ; 435 dbp = dbc ->dbp; 436 dbv = dbp ->dbenv; 437 dbmp = dbp -> mpf ; 438 = ( BTREE_CURSOR *) dbc -> ; 441 i(( t = `__bam_cch ( dbc , 442 t , CS_READ | CS_GETRECNO , LEAFLEVEL )) != 0) { 444 i( t = DB_NOTFOUND ) 445 t = 0; 446 de = 1; 447 r ; 454 pg = -> c -> ge ; 455 -> c -> ge = NULL ; 456 xt_o = -> o ; 457 xt : 474 ( gno = `NEXT_PGNO ( pg )! PGNO_INVALID ) { 475 c_da -> com_ges_exame ++; 476 `PTRACE ( dbc , "Next", `PGNO ( pg ), t , 0); 479 i( xt_ge == 1 && 480 dbc -> dbty ! DB_RECNO && `NUM_ENT ( pg ) != 0) { 481 i(( t = `__db_t ( dbp , dbc -> txn , pg , 482 0, t , &t-> da , &t-> un )) != 0) 483 r ; 485 xt_o + `NUM_ENT ( pg ); 486 i( `P_FREESPACE ( dbp , pg > || 487 ( check_unc && `PGNO ( pg > c_da -> com_un )) 494 -> o + `NUM_ENT ( pg ); 495 xt_ge = 1; 496 tde = pgs_de ; 497 `PTRACE ( dbc , "Dups", `PGNO ( pg ), t , 0); 498 i( check_dups && ( t = `__bam_com_dups ( 499 dbc , & pg , , 0, c_da , & pgs_de )) != 0) 500 r ; 501 gno = `NEXT_PGNO ( pg ); 502 i(( t = `__memp_ut ( dbmp , pg , dbc -> iܙy )) != 0) 503 r ; 504 pg = NULL ; 509 i(( t = `__db_lg ( dbc , 510 tde = pgs_de ? LCK_COUPLE_ALWAYS : LCK_COUPLE , 511 gno , DB_LOCK_READ , 0, & -> c -> lock )) != 0) 512 r ; 513 i(( t = `__memp_fg ( dbmp , & gno , dbc -> txn , 0, & pg )) != 0) 514 r ; 527 i(( ry = `NUM_ENT ( pg )) != 0) { 528 xt_ge = 0; 530 i( dbc -> dbty = DB_RECNO ) { 531 i(( t = `__db_tcy ( dbp -> dbv , t , 532 & -> o , (cp->recno), 533 & t -> da , &t-> un )) != 0) 534 r ; 535 } i( t -> size == 0 && 536 ( t = `__db_t ( dbp , dbc -> txn , pg , 537 0, t , &t-> da , &t-> un )) != 0) 538 r ; 540 i( gno = PGNO_INVALID ) { 542 `PTRACE ( dbc , "GoDe", `PGNO ( pg ), t , 0); 543 i( check_dups && ( t = `__bam_com_dups ( dbc , 544 & pg , , 0, c_da , & pgs_de )) != 0) 545 r ; 546 c_da -> com_ges_exame ++; 547 de = 1; 548 de ; 553 i(( t = `__LPUT ( dbc , -> c -> lock )) != 0) 554 r ; 555 i(( t = `__memp_ut ( dbmp , pg , dbc -> iܙy )) != 0) 556 r ; 557 `BT_STK_CLR ( ); 558 pg = NULL ; 582 i( ry == 0) { 583 `CTRACE ( dbc , "Emy", "", t , 0); 584 i( xt_ge == 1) 585 sag = CS_NEXT_WRITE ; 587 sag = CS_DEL ; 588 i(( t = `__bam_cch ( dbc , t , sag , LEAFLEVEL )) != 0) 589 r ; 591 pg = -> c -> ge ; 593 i( `NUM_ENT ( pg ) != 0) 594 gno = `PGNO ( pg ); 596 gno = `NEXT_PGNO ( pg ); 598 i( `PGNO ( pg = -> ro ) 599 de = 1; 601 i(( t = `__bam_dges ( dbc , 0, 0)) != 0) 602 r ; 603 c_da -> com_ges_ ++; 604 xt_no_a ; 607 xt_ge ; 611 i(* p ) { 612 `CTRACE ( dbc , "Sn", "", t , 0); 613 i( ndbc = NULL && ( t = `__dbc_dup ( dbc , &ndbc, 0)) != 0) 614 r ; 615 n = ( BTREE_CURSOR *) ndbc -> ; 616 n -> o = xt_o ; 623 i(( t = `__bam_cch ( ndbc , t , CS_NEXT_WRITE , 0)) != 0) 624 r ; 626 i( dbc -> dbty = DB_RECNO ) { 633 i( n -> c [-1]. dx != 0) { 634 * p = 0; 635 ded ; 639 i(( t = `__memp_dty ( dbp -> mpf , 640 & n -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 641 r ; 642 `PTRACE ( dbc , "SDups", `PGNO ( n -> c -> ge ), t , 0); 643 i( check_dups && ( t = `__bam_com_dups ( ndbc , 644 & n -> c -> ge , , 1, c_da , & pgs_de )) != 0) 645 r ; 648 i( `PGNO ( n -> c -> ge =n-> ro ) 649 de ; 654 v = `LEVEL ( n -> -> ge ); 655 sag = CS_START ; 656 i(( t = `__bam_cch ( dbc , t , sag , v )) != 0) 657 r ; 658 pg = -> c -> ge ; 659 * p = 0; 666 i( `NUM_ENT ( pg ) == 0) { 667 gno = `PGNO ( pg ); 668 xt_ge ; 670 i( check_unc && `PGNO ( pg > c_da -> com_un ) { 671 pgs_de ++; 673 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 674 r1 ; 677 i(( t = `__memp_dty ( dbp -> mpf , 678 & -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 679 r1 ; 680 pg = -> c -> ge ; 681 gno = `NEXT_PGNO ( pg ); 682 `PTRACE ( dbc , "SDups", `PGNO ( pg ), t , 0); 683 i( check_dups && ( t = 684 `__bam_com_dups ( dbc , & -> c -> ge , 685 , 1, c_da , & pgs_de )) != 0) 686 r1 ; 694 i( `P_FREESPACE ( dbp , pg < || 695 -> c [-1]. dx ! `NUM_ENT (->c[-1]. ge ) - 1) 696 xt_ge ; 701 mged = 0; 702 g = -> ;pg !-> c ;pg++) { 703 i( `PGNO ( g -> ge = -> ro ) 705 `PTRACE ( dbc , "PMge", `PGNO ( g -> ge ), t , 0); 706 i(( t = `__bam_mge_ ( dbc , 707 ndbc , `LEVEL ( g -> ge ), c_da , & mged )) != 0) 708 r1 ; 709 i( mged ) 714 i( mged ) { 715 pgs_de ++; 716 i( -> c -> ge = NULL ) 717 ded ; 718 gno = `PGNO ( pg ); 719 xt_ge ; 721 `PTRACE ( dbc , "SMge", `PGNO ( -> c -> ge ), t , 0); 722 gno = `NEXT_PGNO ( n -> c -> ge ); 723 i(( t = `__bam_mge ( dbc , 724 ndbc , , , c_da , & de )) != 0) 725 r1 ; 726 pgs_de ++; 731 i( -> c -> ge = NULL ) 732 ded ; 733 -> o + `NUM_ENT ( pg ); 736 i( gno ! `NEXT_PGNO ( pg )) { 737 gno = `NEXT_PGNO ( pg ); 738 xt_ge ; 742 `CTRACE ( dbc , "Sib", "", t , 0); 743 i(( t = 744 `__bam_cch ( dbc , t , CS_PARENT , LEAFLEVEL )) != 0) 745 r ; 747 pg = -> c -> ge ; 748 gno = `PGNO ( pg ); 751 i(( ry = `NUM_ENT ( pg )) == 0) 752 xt_ge ; 754 i(( t = `__memp_dty ( dbp -> mpf , & -> c -> ge , 755 dbc -> txn , dbc-> iܙy , 0)) != 0) 756 r ; 757 pg = -> c -> ge ; 759 gno = `NEXT_PGNO ( pg ); 762 `PTRACE ( dbc , "SibDup", `PGNO ( pg ), t , 0); 763 i( check_dups && ( t = 764 `__bam_com_dups ( dbc , & -> c -> ge , 765 , 1, c_da , & pgs_de )) != 0) 766 r1 ; 767 pg = -> c -> ge ; 770 i( `PGNO ( pg = -> ro ) 771 r1 ; 772 `DB_ASSERT ( dbv , -> c - cp-> == 1); 774 i( check_unc && `PGNO ( pg > c_da -> com_un ) { 775 pgs_de ++; 777 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 778 r1 ; 782 i( `P_FREESPACE ( dbp , pg < ) 783 xt_ge ; 786 i( ndbc ! NULL && ( t = `__dbc_o (ndbc)) != 0) 787 r1 ; 788 i(( t = `__dbc_dup ( dbc , & ndbc , DB_POSITION )) != 0) 789 r1 ; 790 n = ( BTREE_CURSOR *) ndbc -> ; 796 n -> o + `NUM_ENT ( pg ); 800 ! de && gno ! PGNO_INVALID && 801 `P_FREESPACE ( dbp , pg > && c_da -> com_ges != 0) { 810 i( -> c [-1]. dx = `NUM_ENT (->c[-1]. ge ) - 1) { 811 * p = 1; 812 gno = `PGNO ( pg ); 813 xt_o = -> o ; 814 xt_ge ; 818 i(( t = `__db_lg ( dbc , LCK_COUPLE , 819 gno , DB_LOCK_WRITE , 0, & n -> lock )) != 0) 820 r1 ; 821 i(( t = `__memp_fg ( dbmp , & gno , dbc -> txn , 822 DB_MPOOL_DIRTY , & g )) != 0) 823 r1 ; 826 i(( t = `__memp_fg ( dbmp , & `PGNO ( -> c [-1]. ge ), 827 dbc -> txn , 0, & g )) != 0) 828 r1 ; 829 `BT_STK_PUSH ( dbv , n , g , 830 -> c [-1]. dx + 1, nock , DB_LOCK_NG , t ); 831 i( t != 0) 832 r1 ; 835 `BT_STK_ENTER ( dbv , n , g , 0,-> lock , DB_LOCK_WRITE , t ); 837 `LOCK_INIT ( n -> lock ); 838 g = NULL ; 840 c_da -> com_ges_exame ++; 842 `PTRACE ( dbc , "MDups", `PGNO ( n -> c -> ge ), t , 0); 843 i( check_dups && ( t = `__bam_com_dups ( ndbc , 844 & n -> c -> ge , , 1, c_da , & pgs_de )) != 0) 845 r1 ; 847 gno = `NEXT_PGNO ( n -> c -> ge ); 852 `PTRACE ( dbc , "Mge", `PGNO ( -> c -> ge ), t , 0); 853 i(( t = `__bam_mge ( dbc , 854 ndbc , , , c_da , & de )) != 0) 855 r1 ; 857 pgs_de ++; 863 i( -> c -> ge = NULL ) 864 ded ; 866 i( gno ! `NEXT_PGNO ( pg )) 871 gno = `NEXT_PGNO ( pg ); 872 -> o + `NUM_ENT ( pg ); 873 xt_o = -> o ; 875 xt_ge : 876 i(( t = `__bam_kl ( dbc , pgs_de =0 ? STK_NOLOCK : 0)) != 0) 877 r1 ; 878 i( ndbc ! NULL && 879 ( t = `__bam_kl ( ndbc , pgs_de =0 ? STK_NOLOCK : 0)) != 0) 880 r1 ; 882 xt_no_a : 883 pg = NULL ; 885 i( gno = PGNO_INVALID || c_da -> com_ges == 0) 886 de = 1; 887 i(! de ) { 892 i( pgs_de !0 && * p ) { 893 ded : i((( t = `__bam_kl ( ndbc , 0)) != 0 || 894 ( t = `__dbc_o ( ndbc )) != 0)) 895 r ; 896 * dڕ = 0; 901 -> o = xt_o ; 902 i(( t = `__db_lg ( dbc , 903 pgs_de ? LCK_COUPLE_ALWAYS : LCK_COUPLE , 904 gno , DB_LOCK_READ , 0, & -> c -> lock )) != 0 || 905 ( t = `__memp_fg ( dbmp , & gno , dbc -> txn , 0, & pg )) != 0) 906 r ; 907 xt_ge = 1; 908 xt ; 911 de : 914 r1 : pg = NULL ; 916 r : i( dbc ! NULL && 917 ( t_t = `__bam_kl ( dbc , STK_CLRDBC )!0 && t == 0) 918 t = t_t ; 919 i( ndbc ! NULL ) { 920 i(( t_t = `__bam_kl ( ndbc , STK_CLRDBC )!0 && t == 0) 921 t = t_t ; 922 i(( t_t = `__dbc_o ( ndbc )!0 && t == 0) 923 t = t_t ; 926 i( pg ! NULL && ( t_t = 927 `__memp_ut ( dbmp , pg , dbc -> iܙy !0&& t == 0) 928 t = t_t ; 929 i( g ! NULL && ( t_t = 930 `__memp_ut ( dbmp , g , dbc -> iܙy !0&& t == 0) 931 t = t_t ; 933 * dڕ = de ; 935 ( t ); 936 } } 942 $__bam_mge ( dbc , ndbc , , , c_da , dڕ ) 943 DBC * dbc , * ndbc ; 944 u_t32_t ; 945 DBT * ; 946 DB_COMPACT * c_da ; 947 * dڕ ; 949 BTREE_CURSOR * , * n ; 950 BTREE * t ; 951 DB * dbp ; 952 PAGE * pg , * g ; 953 db_dx_t adj , ; 954 db_o_t o ; 955 cmp , t ; 956 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 958 dbp = dbc ->dbp; 959 t = dbp -> bt_ ; 960 = ( BTREE_CURSOR *) dbc -> ; 961 n = ( BTREE_CURSOR *) ndbc -> ; 962 pg = -> c -> ge ; 963 g = n -> c -> ge ; 965 = `NUM_ENT ( g ); 968 i( == 0) 969 ; 970 adj = `TYPE ( g = P_LBTREE ? P_INDX : O_INDX ; 972 i( ! NULL && st-> size != 0) { 973 i( dbc -> dbty = DB_RECNO ) { 974 i(( t = `__m_gno ( dbc , , & o , 0)) != 0) 975 r ; 976 i( n -> o >ecno) { 977 * dڕ = 1; 978 i( -> o >ecno) 979 de ; 982 func = `TYPE ( g = P_LBTREE ? 983 ( dbp -> dup_com = NULL ? 984 __bam_defcmp : dbp -> dup_com : t -> bt_com ; 986 i(( t = `__bam_cmp ( dbp , dbc -> txn , 987 , g , - adj , func , & cmp )) != 0) 988 r ; 996 i( cmp <= 0) { 997 * dڕ = 1; 998 i(( t = `__bam_cmp ( dbp , dbc -> txn , 999 , g , 0, func , & cmp )) != 0) 1000 r ; 1001 i( cmp <= 0) 1002 de ; 1013 i(( dbc -> dbty = DB_BTREE && 1014 n -> c [-1]. dx =0 &&->c[-1]. s != 1) || 1015 ()( `P_FREESPACE ( dbp , pg ) - 1016 (( dbp -> pgsize - `P_OVERHEAD (dbp)) - 1017 `P_FREESPACE ( dbp , g ))< () ) 1018 t = `__bam_mge_cds ( dbc , ndbc , , c_da ); 1020 : t = `__bam_mge_ges ( dbc , ndbc , c_da ); 1022 de : 1023 r : ( t ); 1024 } } 1027 $__bam_mge_cds ( dbc , ndbc , , c_da ) 1028 DBC * dbc , * ndbc ; 1029 u_t32_t ; 1030 DB_COMPACT * c_da ; 1032 BINTERNAL * bi ; 1033 BKEYDATA * bk , * tmp_bk ; 1034 BTREE * t ; 1035 BTREE_CURSOR * , * n ; 1036 DB * dbp ; 1037 DBT a , b , da , hdr ; 1038 DB_ENV * dbv ; 1039 EPG * g ; 1040 PAGE * pg , * g ; 1041 db_dx_t adj , dx , , * np , pd ; 1042 t32_t adju ; 1043 u_t32_t 䓥a , nksize , p , size ; 1044 f_dup , is_dup , xt_dup , n_ok , t ; 1045 `size_t (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1047 dbp = dbc ->dbp; 1048 dbv = dbp ->dbenv; 1049 t = dbp -> bt_ ; 1050 = ( BTREE_CURSOR *) dbc -> ; 1051 n = ( BTREE_CURSOR *) ndbc -> ; 1052 pg = -> c -> ge ; 1053 g = n -> c -> ge ; 1054 `memt (& hdr , 0, (hdr)); 1055 pd = `NUM_ENT ( pg ); 1056 n_ok = 0; 1057 adju = 0; 1058 t = 0; 1059 = `NUM_ENT ( g ); 1061 `DB_ASSERT ( dbv , != 0); 1064 i( c_da -> com_un ! PGNO_INVALID && 1065 `PGNO ( g > c_da -> com_un ) { 1067 i(( t = `__bam_un_ge ( ndbc , & g , 1)) != 0) 1068 r ; 1071 np = `P_INP ( dbp , g ); 1077 䓥a = `P_FREESPACE ( dbp , pg ); 1079 adj = `TYPE ( g = P_LBTREE ? P_INDX : O_INDX ; 1083 dx = 0; indx < ; indx + adj ) { 1084 bk = `GET_BKEYDATA ( dbp , g , dx ); 1087 size = `BITEM_PSIZE ( bk ); 1090 i( `TYPE ( pg = P_LBTREE ) 1091 size + `BITEM_PSIZE ( `GET_BKEYDATA ( dbp , g , dx + 1)); 1096 n_ok = adj ; 1097 i( `TYPE ( pg = P_LBTREE && 1098 dx < - adj && 1099 np [ dx ] =np[dx + adj ]) { 1102 size +( db_dx_t ); 1103 n_ok ++; 1105 size + `BITEM_PSIZE ( 1106 `GET_BKEYDATA ( dbp , g , dx + n_ok )); 1107 n_ok ++; 1108 } dx + n_ok < && 1109 np [ dx ] =np[dx + n_ok ]); 1112 i( 䓥a < size ) 1120 i(( 䓥a - size < ) { 1121 i( 䓥a - > fa - (䓥a - size )) 1122 dx + n_ok ; 1125 䓥a - size ; 1126 dx + n_ok - adj ; 1128 i( dx == 0) 1129 de ; 1130 i( `TYPE ( pg ! P_LBTREE && TYPEg! P_LDUP ) { 1131 i( dx = ) 1132 ( `__bam_mge_ges ( dbc , ndbc , c_da )); 1133 no_check ; 1145 p = dbp -> pgsize ; 1146 g = & n -> c [-1];pg >n-> ;pg--) 1147 i(( 䓥a = `P_FREESPACE ( dbp , g -> ge )< p ) { 1148 bi = `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx ); 1150 䓥a + `BINTERNAL_PSIZE ( bi -> n ); 1151 i( 䓥a < p ) 1152 p = 䓥a ; 1153 i( g -> dx != 0) 1162 i( dx = ) { 1163 i( n -> c [-1]. dx !0 ||->c[-1]. s == 1 || 1164 `BINTERNAL_PSIZE ( `GET_BINTERNAL ( dbp , 1165 n -> c [-1]. ge , 1)-> n < p ) 1166 ( `__bam_mge_ges ( dbc , ndbc , c_da )); 1167 dx - adj ; 1169 bk = `GET_BKEYDATA ( dbp , g , dx ); 1170 i( dx !0 && `BINTERNAL_SIZE ( bk -> n > p ) { 1171 i( `F_ISSET ( dbc , DBC_OPD )) { 1172 i( dbp -> dup_com = __bam_defcmp ) 1173 func = __bam_defx ; 1175 func = NULL ; 1177 func = t -> bt_efix ; 1179 func = NULL ; 1182 dx !0 && np [dx] =np[dx - adj ]) 1183 dx - adj ; 1185 dx !0 && `BINTERNAL_SIZE ( bk -> n > p ) { 1186 i( `B_TYPE ( bk -> ty ! B_KEYDATA ) 1187 nݻfix ; 1192 i( func = NULL ) 1193 nݻfix ; 1194 tmp_bk = `GET_BKEYDATA ( dbp , g , dx - adj ); 1195 i( `B_TYPE ( tmp_bk -> ty ! B_KEYDATA ) 1196 nݻfix ; 1197 `memt (& a , 0, (a)); 1198 a . size = tmp_bk -> n ; 1199 a . da = tmp_bk ->data; 1200 `memt (& b , 0, (b)); 1201 b . size = bk -> n ; 1202 b . da = bk ->data; 1203 nksize = ( u_t32_t ) `func ( dbp , & a , & b ); 1204 i( `BINTERNAL_PSIZE ( nksize < p ) 1206 nݻfix : 1209 dx - adj ; 1210 } dx !0 && np [dx] =np[dx - adj ]); 1212 bk = `GET_BKEYDATA ( dbp , g , dx ); 1215 i( dx == 0) 1216 de ; 1217 `DB_ASSERT ( dbv , dx < ); 1220 no_check : is_dup = f_dup = xt_dup = 0; 1221 i(( t = `__memp_dty ( dbp -> mpf , 1222 & -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0 || 1223 ( t = `__memp_dty ( dbp -> mpf , 1224 & n -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 1225 r ; 1226 pg = -> c -> ge ; 1227 g = n -> c -> ge ; 1228 np = `P_INP ( dbp , g ); 1230 bk = `GET_BKEYDATA ( dbp , g , 0); 1232 i(( `NUM_ENT ( g ) % 2) == 0) { 1233 i( `NUM_ENT ( g > 2 && np [0] ==inp[2]) { 1234 i(! is_dup ) { 1235 f_dup = 1; 1236 is_dup = 1; 1238 f_dup = 0; 1240 xt_dup = 1; 1241 } i( xt_dup ) { 1242 is_dup = 1; 1243 f_dup = 0; 1244 xt_dup = 0; 1246 is_dup = 0; 1249 i( is_dup && ! f_dup && ( pd % 2) == 0) { 1251 i(( t = `__bam_adjdx ( dbc , 1252 pg , pd ,d - P_INDX , 1)) != 0) 1253 r ; 1254 i(! xt_dup ) 1255 is_dup = 0; 1256 } `B_TYPE ( bk -> ty )) { 1257 B_KEYDATA : 1258 hdr . da = bk ; 1259 hdr . size = `SSZA ( BKEYDATA , da ); 1260 da . size = bk -> n ; 1261 da .d bk ->data; 1262 i(( t = `__db_pem ( dbc , pg , pd , 1263 `BKEYDATA_SIZE ( bk -> n ), & hdr , & da )) != 0) 1264 r ; 1266 B_OVERFLOW : 1267 B_DUPLICATE : 1268 da . size = BOVERFLOW_SIZE ; 1269 da .d bk ; 1270 i(( t = `__db_pem ( dbc , pg , pd , 1271 BOVERFLOW_SIZE , & da , NULL )) != 0) 1272 r ; 1275 `__db_rx ( dbv , 1277 ( u_lg ) `PGNO ( pg )); 1278 t = EINVAL ; 1279 r ; 1281 pd ++; 1282 i( xt_dup && ( `NUM_ENT ( g ) % 2) == 0) { 1283 i(( t = `__bam_adjdx ( ndbc , 1284 g , 0, O_INDX , 0)) != 0) 1285 r ; 1287 i(( t = `__db_dem ( ndbc , 1288 g , 0, `BITEM_SIZE ( bk ))) != 0) 1289 r ; 1291 adju ++; 1292 } -- dx != 0); 1294 `DB_ASSERT ( dbv , `NUM_ENT ( g ) != 0); 1296 i( adju != 0 && 1297 ( `F_ISSET ( , C_RECNUM || F_ISSET( dbc , DBC_OPD ))) { 1298 `DB_ASSERT ( dbv , -> c - cp-> = n ->csp -cp->sp); 1299 i( `TYPE ( pg = P_LBTREE ) 1300 adju / P_INDX ; 1301 i(( t = `__bam_adju ( ndbc , - adju )) != 0) 1302 r ; 1304 i(( t = `__bam_adju ( dbc , adju )) != 0) 1305 r ; 1309 i( ndbc -> dbty = DB_BTREE && 1310 ( t = `__bam_pupde ( ndbc , pg )) != 0) 1311 r ; 1313 de : t = `__bam_kl ( ndbc , STK_CLRDBC ); 1315 r : ( t ); 1316 } } 1319 $__bam_mge_ges ( dbc , ndbc , c_da ) 1320 DBC * dbc , * ndbc ; 1321 DB_COMPACT * c_da ; 1323 BTREE_CURSOR * , * n ; 1324 DB * dbp ; 1325 DBT da , hdr , d ; 1326 DB_MPOOLFILE * dbmp ; 1327 PAGE * pg , * g ; 1328 db_dx_t , * np , * pp ; 1329 db_pgno_t gno ; 1330 u_t8_t * bp ; 1331 u_t32_t n ; 1332 i , v , t ; 1334 `COMPQUIET ( gno , PGNO_INVALID ); 1335 dbp = dbc ->dbp; 1336 dbmp = dbp -> mpf ; 1337 = ( BTREE_CURSOR *) dbc -> ; 1338 n = ( BTREE_CURSOR *) ndbc -> ; 1339 pg = -> c -> ge ; 1340 g = n -> c -> ge ; 1341 `memt (& hdr , 0, (hdr)); 1342 = `NUM_ENT ( g ); 1345 i( == 0) 1346 ; 1348 i(( t = `__memp_dty ( dbp -> mpf , 1349 & -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0 || 1350 ( t = `__memp_dty ( dbp -> mpf , 1351 & n -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 1352 r ; 1353 pg = -> c -> ge ; 1354 g = n -> c -> ge ; 1355 `DB_ASSERT ( dbp -> dbv , = `NUM_ENT ( g )); 1358 n = dbp -> pgsize - `HOFFSET ( g ); 1359 i( `DBC_LOGGING ( dbc )) { 1360 da .d( u_t8_t *) g + `HOFFSET (npg); 1361 da . size = n ; 1362 d . da = `P_INP ( dbp , g ); 1363 d . size = `NUM_ENT ( g * ( db_dx_t ); 1364 i(( t = `__bam_mge_log ( dbp , 1365 dbc -> txn , & `LSN ( pg ), 0, `PGNO (pg), 1366 & `LSN ( pg ), `PGNO ( g ), &LSNpg), NULL , & da , & d )) != 0) 1367 r ; 1369 `LSN_NOT_LOGGED ( `LSN ( pg )); 1370 `LSN ( g LSN( pg ); 1371 bp = ( u_t8_t *) pg + `HOFFSET g- n ; 1372 `memy ( bp , ( u_t8_t *) g + `HOFFSET pg), n ); 1375 pp = `P_INP ( dbp , pg + `NUM_ENT (pg); 1376 np = `P_INP ( dbp , g ); 1377 i = 0; i < `NUM_ENT ( g ); i++) 1378 * pp ++ = * np ++ - ( dbp -> pgsize - `HOFFSET ( pg )); 1379 `HOFFSET ( pg - n ; 1380 `NUM_ENT ( pg + i ; 1382 `NUM_ENT ( g ) = 0; 1383 `HOFFSET ( g + n ; 1385 i( `F_ISSET ( , C_RECNUM || F_ISSET( dbc , DBC_OPD )) { 1386 `DB_ASSERT ( dbp -> dbv , -> c - cp-> = n ->csp -cp->sp); 1387 i( `TYPE ( pg = P_LBTREE ) 1388 i / P_INDX ; 1389 i(( t = `__bam_adju ( ndbc , - i )) != 0) 1390 r ; 1392 i(( t = `__bam_adju ( dbc , i )) != 0) 1393 r ; 1396 : 1405 i( `PGNO ( n -> -> ge =n-> ro && 1406 `NUM_ENT ( n -> -> ge ) == 2) { 1407 i(( t = `__bam_kl ( dbc , STK_CLRDBC | STK_PGONLY )) != 0) 1408 r ; 1409 v = `LEVEL ( n -> -> ge ); 1410 gno = `PGNO ( n -> c [-1]. ge ); 1412 v = 0; 1413 i( c_da -> com_un > `PGNO ( g )) 1414 c_da -> com_un --; 1415 i(( t = `__bam_dges ( ndbc , 1416 0, ndbc -> dbty = DB_RECNO ? 0 : 1)) != 0) 1417 r ; 1418 g = NULL ; 1419 c_da -> com_ges_ ++; 1420 c_da -> com_ges --; 1421 i( v != 0) { 1422 i(( t = `__memp_fg ( dbmp , & n -> ro , dbc -> txn , 1423 0, & g )) != 0) 1424 r ; 1425 i( v = `LEVEL ( g )) 1426 v = 0; 1427 i(( t = `__memp_ut ( dbmp , g , dbc -> iܙy )) != 0) 1428 r ; 1429 g = NULL ; 1430 i( v != 0) { 1431 c_da -> com_vs ++; 1432 c_da -> com_ges_ ++; 1433 i( c_da -> com_un > gno ) 1434 c_da -> com_un --; 1435 i( c_da -> com_ges != 0) 1436 c_da -> com_ges --; 1440 r : ( t ); 1441 } } 1448 $__bam_mge_ ( dbc , ndbc , v , c_da , mged ) 1449 DBC * dbc , * ndbc ; 1450 v ; 1451 DB_COMPACT * c_da ; 1452 * mged ; 1454 BINTERNAL bi , * b , * f ; 1455 BTREE_CURSOR * , * n ; 1456 DB * dbp ; 1457 DBT da , hdr ; 1458 DB_MPOOLFILE * dbmp ; 1459 EPG * g , * ve_c , * nve_c ; 1460 PAGE * pg , * g ; 1461 RINTERNAL * rk ; 1462 db_dx_t dx , pd ; 1463 db_pgno_t gno ; 1464 t32_t ecs ; 1465 u_t16_t size ; 1466 u_t32_t 䓥a , p ; 1467 t ; 1469 `COMPQUIET ( b , NULL ); 1470 `COMPQUIET ( gno , PGNO_INVALID ); 1479 dbp = dbc ->dbp; 1480 dbmp = dbp -> mpf ; 1481 = ( BTREE_CURSOR *) dbc -> ; 1482 n = ( BTREE_CURSOR *) ndbc -> ; 1483 * mged = 0; 1484 t = 0; 1490 ve_c = -> c ; 1491 -> c = &->c[- v + 1]; 1492 pg = -> c -> ge ; 1493 pd = `NUM_ENT ( pg ); 1495 nve_c = n -> c ; 1496 n -> c = &n->c[- v + 1]; 1497 g = n -> c -> ge ; 1498 dx = `NUM_ENT ( g ); 1504 i( g = pg ) 1505 de ; 1507 i(( t = `__memp_dty ( dbmp , 1508 & -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0 || 1509 ( t = `__memp_dty ( dbmp , 1510 & n -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 1511 r ; 1512 pg = -> c -> ge ; 1513 g = n -> c -> ge ; 1515 i( `TYPE ( pg = P_IBTREE ) { 1520 i(( t = 1521 `__bam_un__ovow ( dbc , pg , c_da )) != 0) 1522 r ; 1523 i(( t = 1524 `__bam_un__ovow ( dbc , g , c_da )) != 0) 1525 r ; 1534 f = NULL ; 1535 i( `TYPE ( pg = P_IBTREE ) { 1537 䓥a = `P_FREESPACE ( dbp , pg ); 1542 g = n -> c ; 1543 -- g > n -> &&pg-> dx == 0) 1545 f = b = `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx ); 1546 g = n -> c ; 1548 dx = 0;;) { 1549 size = `BINTERNAL_PSIZE ( b -> n ); 1550 i( size > 䓥a ) 1552 䓥a - size ; 1553 i(++ dx > `NUM_ENT ( g )) 1555 b = `GET_BINTERNAL ( dbp , g , dx ); 1559 i( dx = `NUM_ENT ( g && g [-1].indx != 0) 1560 fs ; 1562 p = dbp -> pgsize ; 1563 g --;pg > n -> ;pg--) 1564 i(( 䓥a = `P_FREESPACE ( dbp , g -> ge )< p ) { 1565 b = `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx ); 1567 䓥a + `BINTERNAL_PSIZE ( b -> n ); 1568 i( 䓥a < p ) 1569 p = 䓥a ; 1570 i( g -> dx != 0) 1573 g = n -> c ; 1576 i( dx = `NUM_ENT ( g )) { 1577 i( `NUM_ENT ( g [-1]. ge ) == 1) 1578 fs ; 1579 b = 1580 `GET_BINTERNAL ( dbp , g [-1]. ge ,pg[-1]. dx + 1); 1582 b = `GET_BINTERNAL ( dbp , g , dx ); 1585 dx !0 && `BINTERNAL_PSIZE ( b -> n > p ) { 1586 dx --; 1587 b = `GET_BINTERNAL ( dbp , g , dx ); 1589 i( dx == 0) 1590 de ; 1593 fs : `memt (& bi , 0, (bi)); 1594 `memt (& hdr , 0, (hdr)); 1595 `memt (& da , 0, (data)); 1596 ecs = 0; 1603 i( dbc -> dbty = DB_BTREE ) { 1604 b = `GET_BINTERNAL ( dbp , g , 0); 1605 size = f = NULL ? 1606 `BINTERNAL_SIZE ( b -> n ) : 1607 `BINTERNAL_SIZE ( f -> n ); 1608 i( `P_FREESPACE ( dbp , pg < size + ( db_dx_t )) 1611 i( f = NULL ) { 1612 da . size = b -> n ; 1613 da .d b ->data; 1615 da . size = f -> n ; 1616 da .d f ->data; 1618 bi . n = da . size ; 1619 `B_TSET ( bi . ty , b ->type); 1620 bi . pgno = b ->pgno; 1621 bi . ecs = b ->nrecs; 1622 hdr . da = & bi ; 1623 hdr . size = `SSZA ( BINTERNAL , da ); 1624 i( `F_ISSET ( , C_RECNUM || F_ISSET( dbc , DBC_OPD )) 1625 ecs +( t32_t ) b -> ecs ; 1627 rk = `GET_RINTERNAL ( dbp , g , 0); 1628 size = RINTERNAL_SIZE ; 1629 i( `P_FREESPACE ( dbp , pg < size + ( db_dx_t )) 1632 hdr . da = rk ; 1633 hdr . size = size; 1634 ecs +( t32_t ) rk -> ecs ; 1636 i(( t = `__db_pem ( dbc , pg , pd , size , & hdr , & da )) != 0) 1637 r ; 1638 pd ++; 1639 i( f ! NULL ) { 1641 size = `BINTERNAL_SIZE ( b -> n ); 1642 f = NULL ; 1644 i(( t = `__db_dem ( ndbc , g , 0, size )) != 0) 1645 r ; 1646 * mged = 1; 1647 } -- dx != 0); 1649 i( c_da -> com_un ! PGNO_INVALID && 1650 `PGNO ( pg > c_da -> com_un && -> c !-> ) { 1651 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 1652 r ; 1655 i( `NUM_ENT ( g !0 && c_da -> com_un ! PGNO_INVALID && 1656 `PGNO ( g > c_da -> com_un && n -> c !n-> ) { 1657 i(( t = `__bam_un_ge ( ndbc , & g , 1)) != 0) 1658 r ; 1661 i(!* mged ) 1662 de ; 1664 i( ecs != 0) { 1665 `DB_ASSERT ( dbp -> dbv , -> c - cp-> = n ->csp -cp->sp); 1666 -> c --; 1667 i(( t = `__bam_adju ( dbc , ecs )) != 0) 1668 r ; 1670 n -> c --; 1671 i(( t = `__bam_adju ( ndbc , - ecs )) != 0) 1672 r ; 1673 n -> c ++; 1675 -> c = ve_c ; 1686 i(( t = 1687 `__memp_ut ( dbmp , nve_c -> ge , dbc -> iܙy )) != 0) 1688 r ; 1689 i(( t = `__LPUT ( dbc , nve_c -> lock )) != 0) 1690 r ; 1691 nve_c --; 1692 } nve_c ! n -> c ); 1694 i( `NUM_ENT ( g ) == 0) { 1701 i( `PGNO ( n -> -> ge =n-> ro && 1702 `NUM_ENT ( n -> -> ge ) == 2) { 1703 i(( t = `__bam_kl ( dbc , STK_CLRDBC )) != 0) 1704 r ; 1705 v = `LEVEL ( n -> -> ge ); 1706 gno = `PGNO ( n -> c [-1]. ge ); 1708 v = 0; 1710 i( c_da -> com_un > `PGNO ( g )) 1711 c_da -> com_un --; 1712 t = `__bam_dges ( ndbc , 1713 0, ndbc -> dbty = DB_RECNO ? 0 : 1); 1714 c_da -> com_ges_ ++; 1715 i( t =0 && v != 0) { 1716 i(( t = `__memp_fg ( dbmp , & n -> ro , dbc -> txn , 1717 0, & g )) != 0) 1718 r ; 1719 i( v = `LEVEL ( g )) 1720 v = 0; 1721 i(( t = 1722 `__memp_ut ( dbmp , g , dbc -> iܙy )) != 0) 1723 r ; 1724 g = NULL ; 1725 i( v != 0) { 1726 c_da -> com_vs ++; 1727 c_da -> com_ges_ ++; 1728 i( c_da -> com_un > gno ) 1729 c_da -> com_un --; 1730 i( c_da -> com_ges != 0) 1731 c_da -> com_ges --; 1735 t = `__bam_pupde ( ndbc , g ); 1736 ( t ); 1738 de : 1739 r : -> c = ve_c ; 1740 n -> c = nve_c ; 1742 ( t ); 1743 } } 1750 $__bam_com_dups ( dbc , g , , have_lock , c_da , dڕ ) 1751 DBC * dbc ; 1752 PAGE ** g ; 1753 u_t32_t ; 1754 have_lock ; 1755 DB_COMPACT * c_da ; 1756 * dڕ ; 1758 BOVERFLOW * bo ; 1759 BTREE_CURSOR * ; 1760 DB * dbp ; 1761 DBC * d ; 1762 DBT t ; 1763 DB_ENV * dbv ; 1764 DB_MPOOLFILE * dbmp ; 1765 PAGE * dpg , * pg ; 1766 db_dx_t i ; 1767 de , v , t , , t_t ; 1769 = 0; 1770 t = 0; 1771 d = NULL ; 1773 dbp = dbc ->dbp; 1774 dbv = dbp ->dbenv; 1775 dbmp = dbp -> mpf ; 1776 = ( BTREE_CURSOR *) dbc -> ; 1777 pg = * g ; 1779 i = 0; i < `NUM_ENT ( pg ); i++) { 1780 bo = `GET_BOVERFLOW ( dbp , pg , i ); 1781 i( `B_TYPE ( bo -> ty = B_KEYDATA ) 1783 c_da -> com_ges_exame ++; 1784 i( bo -> pgno > c_da -> com_un ) { 1785 (* dڕ )++; 1786 i(! have_lock ) { 1787 i(( t = `__db_lg ( dbc , 0, `PGNO ( pg ), 1788 DB_LOCK_WRITE , 0, & -> c -> lock )) != 0) 1789 r ; 1790 have_lock = 1; 1791 i(( t = `__memp_dty ( dbp -> mpf , g , 1792 dbc -> txn , dbc-> iܙy , 0)) != 0) 1793 r ; 1794 pg = * g ; 1796 i(( t = 1797 `__bam_un_ro_ge ( dbc , pg , i , c_da )) != 0) 1798 r ; 1800 bo = `GET_BOVERFLOW ( dbp , pg , i ); 1803 i( `B_TYPE ( bo -> ty = B_OVERFLOW ) { 1804 i(( t = `__bam_un_ovow ( dbc , bo -> pgno , 1805 have_lock ? PGNO_INVALID : `PGNO ( pg ), c_da )) != 0) 1806 r ; 1807 (* dڕ )++; 1814 i(( t = `__memp_fg ( dbmp , & bo -> pgno , dbc -> txn , 1815 0, & dpg )) != 0) 1816 r ; 1818 v = dpg ->level; 1819 i(( t = `__memp_ut ( dbmp , dpg , dbc -> iܙy )) != 0) 1820 r ; 1821 i( v = LEAFLEVEL ) 1823 i(( t = `__dbc_wd ( dbc , bo -> pgno , NULL , & d )) != 0) 1824 ( t ); 1825 i(! have_lock ) { 1826 i(( t = `__db_lg ( dbc , 0, 1827 `PGNO ( pg ), DB_LOCK_WRITE , 0, & -> c -> lock )) != 0) 1828 r ; 1829 have_lock = 1; 1830 i(( t = `__memp_dty ( dbp -> mpf , g , 1831 dbc -> txn , dbc-> iܙy , 0)) != 0) 1832 r ; 1833 pg = * g ; 1835 (* dڕ )++; 1836 `memt (& t , 0, (start)); 1838 i(( t = `__bam_com_t ( d , & t , 1839 NULL , , & , c_da , & de )) != 0) 1841 } ! de ); 1843 i( t . da ! NULL ) 1844 `__os_ ( dbv , t . da ); 1846 i( t != 0) 1847 r ; 1849 t = `__dbc_o ( d ); 1850 d = NULL ; 1851 i( t != 0) 1852 r ; 1855 r : i( d ! NULL && ( t_t = `__dbc_o (d)!0 && t == 0) 1856 t = t_t ; 1857 ( t ); 1858 } } 1866 $__bam_un_ge ( dbc , pgp , upde_ ) 1867 DBC * dbc ; 1868 PAGE ** pgp ; 1869 upde_ ; 1871 BTREE_CURSOR * ; 1872 DB * dbp ; 1873 DBT da , hdr , d ; 1874 DB_LSN l ; 1875 EPG * g ; 1876 PAGE * wge ; 1877 db_pgno_t wpgno , * pgn ; 1878 t ; 1880 dbp = dbc ->dbp; 1890 i(( t = `__db_w ( dbc , P_DONTEXTEND | `TYPE (* pgp ), & wge )) != 0) 1891 ( t ); 1898 i( wge = NULL ) 1905 i( `PGNO ( wge > PGNO(* pgp )) { 1907 i( `TYPE ( wge = P_OVERFLOW ) 1908 `OV_LEN ( wge ) = 0; 1909 ( `__db_ ( dbc , wge )); 1912 i(( t = `__memp_dty ( dbp -> mpf , 1913 & wge , dbc -> txn , dbc-> iܙy , 0)) != 0) 1914 r ; 1917 i( `DBC_LOGGING ( dbc )) { 1918 hdr . da = * pgp ; 1919 hdr . size = `P_OVERHEAD ( dbp ); 1920 i( `TYPE (* pgp = P_OVERFLOW ) { 1921 da .d( u_t8_t *)* pgp + `P_OVERHEAD ( dbp ); 1922 da . size = `OV_LEN (* pgp ); 1923 d . size = 0; 1925 da .d( u_t8_t *)* pgp + `HOFFSET (*pgp); 1926 da . size = dbp -> pgsize - `HOFFSET (* pgp ); 1927 d . da = `P_INP ( dbp , * pgp ); 1928 d . size = `NUM_ENT (* pgp * ( db_dx_t ); 1930 i(( t = `__bam_mge_log ( dbp , dbc -> txn , 1931 & `LSN ( wge ), 0, `PGNO (newpage), &LSN(newpage), 1932 `PGNO (* pgp ), & `LSN (*pgp), & hdr , & da , & d )) != 0) 1933 r ; 1935 `LSN_NOT_LOGGED ( `LSN ( wge )); 1937 wpgno = `PGNO ( wge ); 1938 l = `LSN ( wge ); 1939 `memy ( wge , * pgp , dbp -> pgsize ); 1940 `PGNO ( wge wpgno ; 1941 `LSN ( wge l ; 1944 i(( t = `__memp_dty ( dbp -> mpf , 1945 pgp , dbc -> txn , dbc-> iܙy , 0)) != 0) 1946 r ; 1947 i( `TYPE (* pgp = P_OVERFLOW ) 1948 `OV_LEN (* pgp ) = 0; 1950 `HOFFSET (* pgp dbp -> pgsize ; 1951 `NUM_ENT (* pgp ) = 0; 1953 `LSN (* pgp l ; 1956 `TYPE ( wge )) { 1957 P_OVERFLOW : 1958 P_LBTREE : 1959 P_LRECNO : 1960 P_LDUP : 1961 i( `NEXT_PGNO ( wge = PGNO_INVALID && 1962 `PREV_PGNO ( wge = PGNO_INVALID ) 1964 i(( t = `__bam_lk ( dbc , * pgp , `PGNO ( wge ))) != 0) 1965 r ; 1970 = ( BTREE_CURSOR *) dbc -> ; 1976 t = `__db_ ( dbc , * pgp ); 1978 * pgp = wge ; 1980 i( t != 0) 1981 ( t ); 1983 i(! upde_ ) 1984 de ; 1987 g = & -> c [-1]; 1988 i(( t = `__memp_dty ( dbp -> mpf , 1989 & g -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 1990 ( t ); 1992 `TYPE ( g -> ge )) { 1993 P_IBTREE : 1994 pgn = & `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx )-> pgno ; 1996 P_IRECNO : 1997 pgn = & `GET_RINTERNAL ( dbp , g -> ge ,pg-> dx )-> pgno ; 2000 pgn = & `GET_BOVERFLOW ( dbp , g -> ge ,pg-> dx )-> pgno ; 2003 i( `DBC_LOGGING ( dbc )) { 2004 i(( t = `__bam_pgno_log ( dbp , dbc -> txn , & `LSN ( g -> ge ), 2005 0, `PGNO ( g -> ge ), & `LSN pg->ge), ( u_t32_t pg-> dx , 2006 * pgn , `PGNO ( wge ))) != 0) 2007 ( t ); 2009 `LSN_NOT_LOGGED ( `LSN ( g -> ge )); 2011 * pgn = `PGNO ( wge ); 2012 -> c -> ge = wge ; 2014 de : (0); 2016 r : () `__memp_ut ( dbp -> mpf , wge , dbc -> iܙy ); 2017 ( t ); 2018 } } 2028 $__bam_un_ovow ( dbc , pgno , pg_lock , c_da ) 2029 DBC * dbc ; 2030 db_pgno_t pgno ; 2031 db_pgno_t pg_lock ; 2032 DB_COMPACT * c_da ; 2034 DB * dbp ; 2035 DB_LOCK lock ; 2036 PAGE * ge ; 2037 t , t_t ; 2039 dbp = dbc ->dbp; 2040 ge = NULL ; 2041 `LOCK_INIT ( lock ); 2043 i(( t = `__memp_fg ( dbp -> mpf , & pgno , dbc -> txn , 0, & ge )) != 0) 2044 ( t ); 2046 ( pgno = `NEXT_PGNO ( ge )! PGNO_INVALID ) { 2047 i(( t = `__memp_ut ( dbp -> mpf , ge , dbc -> iܙy )) != 0) 2048 ( t ); 2049 i(( t = `__memp_fg ( dbp -> mpf , & pgno , dbc -> txn , 2050 0, & ge )) != 0) 2051 ( t ); 2052 i( pgno < c_da -> com_un ) 2054 i( pg_lock ! PGNO_INVALID ) { 2055 i(( t = `__db_lg ( dbc , 2056 0, pg_lock , DB_LOCK_WRITE , 0, & lock )) != 0) 2058 pg_lock = PGNO_INVALID ; 2060 i(( t = `__bam_un_ge ( dbc , & ge , 0)) != 0) 2064 i( ge ! NULL && 2065 ( t_t = `__memp_ut ( 2066 dbp -> mpf , ge , dbc -> iܙy )!0 && t == 0) 2067 t = t_t ; 2068 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 2069 t = t_t ; 2070 ( t ); 2071 } } 2079 $__bam_un_ro_ge ( dbc , pg , dx , c_da ) 2080 DBC * dbc ; 2081 PAGE * pg ; 2082 u_t32_t dx ; 2083 DB_COMPACT * c_da ; 2085 BINTERNAL * bi ; 2086 BOVERFLOW * bo ; 2087 DB * dbp ; 2088 DBT ig ; 2089 PAGE * ge ; 2090 db_pgno_t wpgno , * pgn ; 2091 t , t_t ; 2093 `COMPQUIET ( c_da , NULL ); 2094 `COMPQUIET ( bo , NULL ); 2095 `COMPQUIET ( wpgno , PGNO_INVALID ); 2096 dbp = dbc ->dbp; 2097 ge = NULL ; 2098 i( `TYPE ( pg = P_IBTREE ) { 2099 bi = `GET_BINTERNAL ( dbp , pg , dx ); 2100 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 2101 bo = ( BOVERFLOW *)( bi -> da ); 2102 pgn = & bo -> pgno ; 2104 pgn = & bi -> pgno ; 2106 bo = `GET_BOVERFLOW ( dbp , pg , dx ); 2107 pgn = & bo -> pgno ; 2110 `DB_ASSERT ( dbp -> dbv , `IS_DIRTY ( pg )); 2112 i(( t = `__memp_fg ( dbp -> mpf , pgn , dbc -> txn , 0, & ge )) != 0) 2113 r ; 2120 i( `TYPE ( ge = P_OVERFLOW && `OV_REF (page) > 1) { 2121 i(( t = `__db_ovf ( dbc , bo -> pgno )) != 0) 2122 r ; 2123 `memt (& ig , 0, (orig)); 2124 i(( t = `__db_goff ( dbp , dbc -> txn , & ig , 2125 bo -> , bo-> pgno , & ig . da , &ig. size )) == 0) 2126 t = `__db_poff ( dbc , & ig , & wpgno ); 2127 i( ig . da ! NULL ) 2128 `__os_ ( dbp -> dbv , ig . da ); 2129 i( t != 0) 2130 r ; 2132 i(( t = `__bam_un_ge ( dbc , & ge , 0)) != 0) 2133 r ; 2134 wpgno = `PGNO ( ge ); 2136 i( wpgno =* pgn ) 2137 r ; 2141 i( `DBC_LOGGING ( dbc )) { 2142 i(( t = `__bam_pgno_log ( dbp , 2143 dbc -> txn , & `LSN ( pg ), 0, `PGNO (pg), 2144 & `LSN ( pg ), ( u_t32_t ) dx , * pgn , wpgno )) != 0) 2145 r ; 2147 `LSN_NOT_LOGGED ( `LSN ( pg )); 2149 * pgn = wpgno ; 2151 r : i( ge ! NULL && ( t_t = 2152 `__memp_ut ( dbp -> mpf , ge , dbc -> iܙy )!0 && t == 0) 2153 t = t_t ; 2154 ( t ); 2155 } } 2165 $__bam_un__ovow ( dbc , ge , c_da ) 2166 DBC * dbc ; 2167 PAGE * ge ; 2168 DB_COMPACT * c_da ; 2170 BINTERNAL * bi ; 2171 BOVERFLOW * bo ; 2172 db_dx_t dx ; 2173 t ; 2175 `COMPQUIET ( bo , NULL ); 2176 t = 0; 2177 dx = 0; indx < `NUM_ENT ( ge ); indx++) { 2178 bi = `GET_BINTERNAL ( dbc -> dbp , ge , dx ); 2179 i( `B_TYPE ( bi -> ty ! B_OVERFLOW ) 2181 bo = ( BOVERFLOW *)( bi -> da ); 2182 i( bo -> pgno > c_da -> com_un && ( t = 2183 `__bam_un_ro_ge ( dbc , ge , dx , c_da )) != 0) 2185 i(( t = `__bam_un_ovow ( 2186 dbc , bo -> pgno , PGNO_INVALID , c_da )) != 0) 2189 ( t ); 2190 } } 2192 #ifde HAVE_FTRUNCATE 2201 $__bam_vekey ( dbc , xt , t ) 2202 DBC * dbc ; 2203 xt ; 2204 DBT * t ; 2206 BINTERNAL * bi ; 2207 BOVERFLOW * bo ; 2208 BTREE_CURSOR * ; 2209 DB * dbp ; 2210 DB_ENV * dbv ; 2211 PAGE * pg ; 2212 RINTERNAL * ri ; 2213 db_dx_t dx , t ; 2215 dbp = dbc ->dbp; 2216 dbv = dbp ->dbenv; 2217 = ( BTREE_CURSOR *) dbc -> ; 2218 pg = -> c -> ge ; 2220 i( dbc -> dbty = DB_RECNO ) { 2221 i( xt ) 2222 dx = 0, t = `NUM_ENT ( pg ); indx !=op; indx++) { 2223 ri = `GET_RINTERNAL ( dbp , pg , dx ); 2224 -> o + ri -> ecs ; 2226 ( `__db_tcy ( dbv , t , & -> o , 2227 ( -> o ), & t -> da , &t-> un )); 2230 bi = `GET_BINTERNAL ( dbp , pg , `NUM_ENT (pg) - 1); 2231 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 2232 bo = ( BOVERFLOW *)( bi -> da ); 2233 ( `__db_goff ( dbp , dbc -> txn , t , 2234 bo -> , bo-> pgno , & t -> da , &t-> un )); 2236 ( `__db_tcy ( dbv , 2237 t , bi -> da , bi-> n , &t->da, &t-> un )); 2238 } } 2246 $__bam_un_ ( dbp , txn , c_da ) 2247 DB * dbp ; 2248 DB_TXN * txn ; 2249 DB_COMPACT * c_da ; 2251 BTREE_CURSOR * ; 2252 DBC * dbc ; 2253 DBT t ; 2254 PAGE * pg ; 2255 db_pgno_t pgno ; 2256 u_t32_t sag ; 2257 v , lol_txn , t , t_t ; 2259 dbc = NULL ; 2260 `memt (& t , 0, (start)); 2262 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 2263 lol_txn = 1; 2264 txn = NULL ; 2266 lol_txn = 0; 2268 v = LEAFLEVEL + 1; 2269 sag = CS_READ | CS_GETRECNO ; 2271 w_txn : 2272 i( lol_txn && ( t = `__txn_beg ( dbp -> dbv , NULL , & txn , 0)) != 0) 2273 r ; 2275 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 2276 r ; 2277 = ( BTREE_CURSOR *) dbc -> ; 2279 pgno = PGNO_INVALID ; 2281 i(( t = `__bam_cch ( dbc , & t , sag , v )) != 0) { 2283 i( t = DB_NOTFOUND ) { 2284 v ++; 2285 i( t . da ! NULL ) 2286 `__os_ ( dbp -> dbv , t . da ); 2287 `memt (& t , 0, (start)); 2288 sag = CS_READ | CS_GETRECNO ; 2291 r ; 2293 c_da -> com_ges_exame ++; 2295 pg = -> c -> ge ; 2296 pgno = `PGNO ( pg ); 2298 sag = CS_NEXT | CS_GETRECNO ; 2300 i( pgno ! -> ro && ( t = `__bam_vekey ( dbc , 2301 pgno < c_da -> com_un , & t )) != 0) 2302 r ; 2304 i(( t = `__bam_kl ( dbc , STK_NOLOCK )) != 0) 2305 r ; 2306 i( pgno = -> ro ) 2309 i( pgno < c_da -> com_un ) 2313 i(( t = `__bam_cch ( dbc , 2314 & t , CS_PARENT | CS_GETRECNO , v )) != 0) 2315 r ; 2316 pg = -> c -> ge ; 2317 pgno = `PGNO ( pg ); 2319 i( pgno > c_da -> com_un ) { 2320 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 2321 r ; 2323 i(( t = `__bam_kl ( dbc , 2324 pgno > c_da -> com_un ? 0 : STK_NOLOCK )) != 0) 2325 r ; 2328 i( lol_txn && pgno > c_da -> com_un ) 2330 } pgno ! -> ro ); 2332 i(( t = `__dbc_o ( dbc )) != 0) 2333 r ; 2334 dbc = NULL ; 2335 i( lol_txn ) { 2336 i(( t = `__txn_comm ( txn , DB_TXN_NOSYNC )) != 0) 2337 r ; 2338 txn = NULL ; 2340 i( pgno !(( BTREE *) dbp -> bt_ )-> bt_ro ) 2341 w_txn ; 2343 r : i( dbc ! NULL && ( t_t = `__bam_kl (dbc, 0)!0 && t == 0) 2344 t = t_t ; 2345 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 2346 t = t_t ; 2347 i( lol_txn && 2348 txn ! NULL && ( t_t = `__txn_abt xn)!0 && t == 0) 2349 t = t_t ; 2350 i( t . da ! NULL ) 2351 `__os_ ( dbp -> dbv , t . da ); 2352 ( t ); 2353 } } 2356 $__bam_tup_li ( dbp , li , ms ) 2357 DB * dbp ; 2358 pgli * li ; 2359 u_t32_t ms ; 2361 DB_MPOOLFILE * mpf ; 2362 db_pgno_t * i ; 2363 t ; 2365 mpf = dbp ->mpf; 2367 i(( t = `__memp_loc_li ( mpf , ms , & i )) != 0) 2368 ( t ); 2370 ms -- != 0) 2371 * i ++ = li ++-> pgno ; 2374 } } 2377 $__bam__li ( dbp , txn ) 2378 DB * dbp ; 2379 DB_TXN * txn ; 2381 DBC * dbc ; 2382 DB_LOCK lock ; 2383 auto_comm , t , t_t ; 2385 `LOCK_INIT ( lock ); 2386 auto_comm = t = 0; 2394 dbc = NULL ; 2395 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 2402 i( `__txn_beg ( dbp -> dbv , NULL , & txn , 0) == 0) { 2403 () `__lock_t_timeout ( dbp -> dbv , 2404 txn -> lock , 0, DB_SET_TXN_TIMEOUT ); 2405 () `__lock_t_timeout ( dbp -> dbv , 2406 txn -> lock , 0, DB_SET_LOCK_TIMEOUT ); 2407 auto_comm = 1; 2410 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 2411 ( t ); 2413 i(( t = `__db_lg ( dbc , 2414 0, PGNO_BASE_MD , DB_LOCK_WRITE , 0, & lock )) != 0) 2415 r ; 2418 t = `__memp__li ( dbp -> mpf ); 2420 r : i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 2421 t = t_t ; 2423 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 2424 t = t_t ; 2426 i( auto_comm && `__txn_abt ( txn !0 && t == 0) 2427 t = t_t ; 2429 ( t ); 2430 } } @../btree/bt_compare.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 58 $__bam_cmp ( dbp , txn , dbt , h , dx , func , cm ) 59 DB * dbp ; 60 DB_TXN * txn ; 61 cڡ DBT * dbt ; 62 PAGE * h ; 63 u_t32_t dx ; 64 (* func ) `__P (( DB *, cڡ DBT *, const DBT *)); 65 * cm ; 67 BINTERNAL * bi ; 68 BKEYDATA * bk ; 69 BOVERFLOW * bo ; 70 DBT pg_dbt ; 85 `TYPE ( h )) { 86 P_LBTREE : 87 P_LDUP : 88 P_LRECNO : 89 bk = `GET_BKEYDATA ( dbp , h , dx ); 90 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) 91 bo = ( BOVERFLOW *) bk ; 93 pg_dbt . p_da = NULL ; 94 pg_dbt . da = bk ->data; 95 pg_dbt . size = bk -> n ; 96 * cm = `func ( dbp , dbt , & pg_dbt ); 100 P_IBTREE : 118 i( dx == 0) { 119 * cm = 1; 123 bi = `GET_BINTERNAL ( dbp , h , dx ); 124 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) 125 bo = ( BOVERFLOW *)( bi -> da ); 127 pg_dbt . p_da = NULL ; 128 pg_dbt . da = bi ->data; 129 pg_dbt . size = bi -> n ; 130 * cm = `func ( dbp , dbt , & pg_dbt ); 135 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( h ))); 141 ( `__db_moff ( dbp , txn , dbt , 142 bo -> pgno , bo-> , func = __bam_defcmp ? NULL : func, cm )); 143 } } 152 $__bam_defcmp ( dbp , a , b ) 153 DB * dbp ; 154 cڡ DBT * a , * b ; 156 size_t n ; 157 u_t8_t * p1 , * p2 ; 159 `COMPQUIET ( dbp , NULL ); 173 n = a -> size > b ->size ? b->size :->size; 174 p1 = a -> da , p2 = b ->da; n --; ++p1, ++p2) 175 i(* p1 !* p2 ) 176 (()* p1 - ()* p2 ); 177 (() a -> size - () b ->size); 178 } } 186 size_t 187 $__bam_defx ( dbp , a , b ) 188 DB * dbp ; 189 cڡ DBT * a , * b ; 191 size_t t , n ; 192 u_t8_t * p1 , * p2 ; 194 `COMPQUIET ( dbp , NULL ); 196 t = 1; 197 n = a -> size > b ->size ? b->size :->size; 198 p1 = a -> da , p2 = b ->da; n --; ++p1, ++p2, ++ t ) 199 i(* p1 !* p2 ) 200 ( t ); 206 i( a -> size < b ->size) 207 ( a -> size + 1); 208 i( b -> size < a ->size) 209 ( b -> size + 1); 210 ( b -> size ); 211 } } @../btree/bt_conv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/b.h " 24 $__bam_pg ( dbv , dummydbp , pg , , cook ) 25 DB_ENV * dbv ; 26 DB * dummydbp ; 27 db_pgno_t pg ; 28 * ; 29 DBT * cook ; 31 DB_PGINFO * pgfo ; 32 PAGE * h ; 34 pgfo = ( DB_PGINFO *) cook -> da ; 35 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 38 h = ; 39 ( `TYPE ( h = P_BTREEMETA ? `__bam_msw ( ) : 40 `__db_bysw ( dbv , dummydbp , pg , , pgfo -> db_gesize , 1)); 41 } } 51 $__bam_pgout ( dbv , dummydbp , pg , , cook ) 52 DB_ENV * dbv ; 53 DB * dummydbp ; 54 db_pgno_t pg ; 55 * ; 56 DBT * cook ; 58 DB_PGINFO * pgfo ; 59 PAGE * h ; 61 pgfo = ( DB_PGINFO *) cook -> da ; 62 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 65 h = ; 66 ( `TYPE ( h = P_BTREEMETA ? `__bam_msw ( ) : 67 `__db_bysw ( dbv , dummydbp , pg , , pgfo -> db_gesize , 0)); 68 } } 77 $__bam_msw ( pg ) 78 PAGE * pg ; 80 u_t8_t * p ; 82 `__db_masw ( pg ); 84 p = ( u_t8_t *) pg + ( DBMETA ); 86 p +( u_t32_t ); 87 `SWAP32 ( p ); 88 `SWAP32 ( p ); 89 `SWAP32 ( p ); 90 `SWAP32 ( p ); 91 p +92 * ( u_t32_t ); 92 `SWAP32 ( p ); 95 } } @../btree/bt_curadj.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/mp.h " 16 __bam_d_curs __P (( DB *, DBC *, db_pgno_t , u_t32_t , u_int32_t)); 37 $__bam__de ( dbp , pgno , dx , de , coup ) 38 DB * dbp ; 39 db_pgno_t pgno ; 40 u_t32_t dx ; 41 de , * coup ; 43 BTREE_CURSOR * ; 44 DB * ldbp ; 45 DB_ENV * dbv ; 46 DBC * dbc ; 47 cou ; 49 dbv = dbp ->dbenv; 62 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 63 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 64 cou = 0; 65 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 66 ldbp = `TAILQ_NEXT dbp, dblilks )) { 67 `MUTEX_LOCK ( dbv , dbp -> mux ); 68 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 69 = ( BTREE_CURSOR *) dbc -> ; 70 i( -> pgno =pgn&& cp-> dx == indx && 71 ! `MVCC_SKIP_CURADJ ( dbc , pgno )) { 85 i( de ) 86 `F_SET ( , C_DELETED ); 88 `F_CLR ( , C_DELETED ); 89 ++ cou ; 92 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 94 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 96 i( coup ! NULL ) 97 * coup = cou ; 99 } } 108 $__m__de ( dbp , ro_pgno , foundp ) 109 DB * dbp ; 110 db_pgno_t ro_pgno ; 111 * foundp ; 113 DB * ldbp ; 114 DBC * dbc ; 115 DB_ENV * dbv ; 116 found ; 118 dbv = dbp ->dbenv; 123 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 124 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 125 found = 0; 126 found =0 && ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 127 ldbp = `TAILQ_NEXT dbp, dblilks )) { 128 `MUTEX_LOCK ( dbv , dbp -> mux ); 129 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) 130 i( dbc -> -> ro = ro_pgno && 131 ! `MVCC_SKIP_CURADJ ( dbc , ro_pgno )) { 132 found = 1; 135 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 137 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 139 * foundp = found ; 141 } } 150 $__bam__di ( my_dbc , pgno , dx , adju ) 151 DBC * my_dbc ; 152 db_pgno_t pgno ; 153 u_t32_t dx ; 154 adju ; 156 DB * dbp , * ldbp ; 157 DB_ENV * dbv ; 158 DB_LSN l ; 159 DB_TXN * my_txn ; 160 DBC * dbc ; 161 DBC_INTERNAL * ; 162 found , t ; 164 dbp = my_dbc ->dbp; 165 dbv = dbp ->dbenv; 167 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 172 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 173 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 174 found = 0; 175 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 176 ldbp = `TAILQ_NEXT dbp, dblilks )) { 177 `MUTEX_LOCK ( dbv , dbp -> mux ); 178 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 179 i( dbc -> dbty = DB_RECNO ) 181 = dbc -> ; 182 i( -> pgno =pgn&& cp-> dx >= indx && 183 ( dbc = my_dbc || ! `MVCC_SKIP_CURADJ (dbc, pgno ))) { 185 `DB_ASSERT ( dbv , -> dx !0 || adju > 0); 190 -> dx + adju ; 191 i( my_txn ! NULL && dbc -> txn != my_txn) 192 found = 1; 195 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 197 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 199 i( found !0 && `DBC_LOGGING ( my_dbc )) { 200 i(( t = `__bam_cudj_log ( dbp , my_dbc -> txn , & l , 0, 201 DB_CA_DI , pgno , 0, 0, ( u_t32_t ) adju , dx , 0)) != 0) 202 ( t ); 206 } } 212 $__bam_d_curs ( dbp , dbc , f , gno , ti ) 213 DB * dbp ; 214 DBC * dbc ; 215 db_pgno_t gno ; 216 u_t32_t f , ti ; 218 BTREE_CURSOR * , * ig_ ; 219 DBC * dbc_nd ; 220 t ; 222 ig_ = ( BTREE_CURSOR *) dbc -> ; 223 dbc_nd = NULL ; 234 `DB_ASSERT ( dbp -> dbv , ig_ -> d = NULL ); 235 i(( t = `__dbc_wd ( dbc , gno , ig_ -> d , & dbc_nd )) != 0) 236 ( t ); 238 = ( BTREE_CURSOR *) dbc_nd -> ; 239 -> pgno = gno ; 240 -> dx = ti ; 242 i( dbp -> dup_com = NULL ) { 248 -> o = ti + 1; 255 i( `F_ISSET ( ig_ , C_DELETED )) { 256 `F_SET ( , C_DELETED ); 257 `F_CLR ( ig_ , C_DELETED ); 261 ig_ -> d = dbc_nd ; 262 ig_ -> dx = f ; 264 } } 275 $__bam__dup ( my_dbc , f , gno , fi , gno , ti ) 276 DBC * my_dbc ; 277 db_pgno_t gno , gno ; 278 u_t32_t f , fi , ti ; 280 BTREE_CURSOR * ig_ ; 281 DB * dbp , * ldbp ; 282 DBC * dbc ; 283 DB_ENV * dbv ; 284 DB_LSN l ; 285 DB_TXN * my_txn ; 286 found , t , t_t ; 288 dbp = my_dbc ->dbp; 289 dbv = dbp ->dbenv; 290 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 291 t = 0; 296 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 297 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 298 found = 0; 299 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 300 ldbp = `TAILQ_NEXT dbp, dblilks )) { 301 lo : `MUTEX_LOCK ( dbv , dbp -> mux ); 302 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 304 ig_ = ( BTREE_CURSOR *) dbc -> ; 305 i( ig_ -> pgno ! gno || orig_-> dx ! fi || 306 `MVCC_SKIP_CURADJ ( dbc , gno )) 313 i( ig_ -> d ! NULL ) 316 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 321 i(( t = `__bam_d_curs ( dbp , 322 dbc , f , gno , ti )) != 0) 323 r ; 324 i( my_txn ! NULL && dbc -> txn != my_txn) 325 found = 1; 327 lo ; 329 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 331 r : `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 333 i( found !0 && `DBC_LOGGING ( my_dbc )) { 334 i(( t_t = `__bam_cudj_log ( dbp , my_dbc -> txn , 335 & l , 0, DB_CA_DUP , gno , gno , 0, f , fi , ti )) != 0 && 336 t == 0) 337 t = t_t ; 340 ( t ); 341 } } 353 $__bam__undodup ( dbp , f , gno , fi , ti ) 354 DB * dbp ; 355 db_pgno_t gno ; 356 u_t32_t f , fi , ti ; 358 BTREE_CURSOR * ig_ ; 359 DB * ldbp ; 360 DBC * dbc ; 361 DB_ENV * dbv ; 362 t ; 364 dbv = dbp ->dbenv; 365 t = 0; 370 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 371 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 373 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 374 ldbp = `TAILQ_NEXT dbp, dblilks )) { 375 lo : `MUTEX_LOCK ( dbv , dbp -> mux ); 376 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 377 ig_ = ( BTREE_CURSOR *) dbc -> ; 386 i( ig_ -> pgno ! gno || 387 ig_ -> dx ! f || 388 ig_ -> d = NULL || (( BTREE_CURSOR *) 389 ig_ -> d -> )-> dx ! ti || 390 `MVCC_SKIP_CURADJ ( dbc , gno )) 392 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 393 i(( t = `__dbc_o ( ig_ -> d )) != 0) 394 r ; 395 ig_ -> d = NULL ; 396 ig_ -> dx = fi ; 401 lo ; 403 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 405 r : `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 407 ( t ); 408 } } 417 $__bam__rl ( my_dbc , gno , gno ) 418 DBC * my_dbc ; 419 db_pgno_t gno , gno ; 421 DB * dbp , * ldbp ; 422 DBC * dbc ; 423 DB_ENV * dbv ; 424 DB_LSN l ; 425 DB_TXN * my_txn ; 426 found , t ; 428 dbp = my_dbc ->dbp; 429 dbv = dbp ->dbenv; 430 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 435 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 436 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 437 found = 0; 438 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 439 ldbp = `TAILQ_NEXT dbp, dblilks )) { 440 `MUTEX_LOCK ( dbv , dbp -> mux ); 441 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 442 i( dbc -> dbty = DB_RECNO ) 444 i( dbc -> -> pgno = gno && 445 ! `MVCC_SKIP_CURADJ ( dbc , gno )) { 446 dbc -> -> pgno = gno ; 451 i( my_txn ! NULL && dbc -> txn != my_txn) 452 found = 1; 455 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 457 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 459 i( found !0 && `DBC_LOGGING ( my_dbc )) { 460 i(( t = `__bam_cudj_log ( dbp , my_dbc -> txn , 461 & l , 0, DB_CA_RSPLIT , gno , gno , 0, 0, 0, 0)) != 0) 462 ( t ); 465 } } 475 $__bam__l ( my_dbc , gno , gno , gno , l_dx , e ) 476 DBC * my_dbc ; 477 db_pgno_t gno , gno , gno ; 478 u_t32_t l_dx ; 479 e ; 481 DB * dbp , * ldbp ; 482 DBC * dbc ; 483 DBC_INTERNAL * ; 484 DB_ENV * dbv ; 485 DB_LSN l ; 486 DB_TXN * my_txn ; 487 found , t ; 489 dbp = my_dbc ->dbp; 490 dbv = dbp ->dbenv; 491 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 503 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 504 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 505 found = 0; 506 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 507 ldbp = `TAILQ_NEXT dbp, dblilks )) { 508 `MUTEX_LOCK ( dbv , dbp -> mux ); 509 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 510 i( dbc -> dbty = DB_RECNO ) 512 = dbc -> ; 513 i( -> pgno = gno && 514 ! `MVCC_SKIP_CURADJ ( dbc , gno )) { 519 i( my_txn ! NULL && dbc -> txn != my_txn) 520 found = 1; 521 i( -> dx < l_dx ) { 522 i( e ) 523 -> pgno = gno ; 525 -> pgno = gno ; 526 -> dx - l_dx ; 530 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 532 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 534 i( found !0 && `DBC_LOGGING ( my_dbc )) { 535 i(( t = `__bam_cudj_log ( dbp , 536 my_dbc -> txn , & l , 0, DB_CA_SPLIT , gno , gno , 537 e ? gno : PGNO_INVALID , 0, l_dx , 0)) != 0) 538 ( t ); 542 } } 555 $__bam__undol ( dbp , ompgno , tgno , gno , l_dx ) 556 DB * dbp ; 557 db_pgno_t ompgno , tgno , gno ; 558 u_t32_t l_dx ; 560 DB * ldbp ; 561 DBC * dbc ; 562 DB_ENV * dbv ; 563 DBC_INTERNAL * ; 565 dbv = dbp ->dbenv; 573 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 574 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 576 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 577 ldbp = `TAILQ_NEXT dbp, dblilks )) { 578 `MUTEX_LOCK ( dbv , dbp -> mux ); 579 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 580 i( dbc -> dbty = DB_RECNO ) 582 = dbc -> ; 583 i( -> pgno = tgno && 584 ! `MVCC_SKIP_CURADJ ( dbc , tgno )) { 585 -> pgno = ompgno ; 586 -> dx + l_dx ; 587 } i( -> pgno = gno && 588 ! `MVCC_SKIP_CURADJ ( dbc , gno )) 589 -> pgno = ompgno ; 591 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 593 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 596 } } @../btree/bt_cursor.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 15 ~"dbc/mp.h " 17 __bam_bulk __P (( DBC *, DBT *, u_t32_t )); 18 __bamc_o __P (( DBC *, db_pgno_t , *)); 19 __bamc_d __P (( DBC *)); 20 __bamc_deroy __P (( DBC *)); 21 __bamc_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 22 __bamc_gack __P (( DBC *)); 23 __bamc_xt __P (( DBC *, , )); 24 __bamc_physd __P (( DBC *)); 25 __bamc_ev __P (( DBC *)); 26 __bamc_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 27 __bamc_ch __P (( DBC *, 28 db_pgno_t , cڡ DBT *, u_t32_t , *)); 29 __bamc_wrock __P (( DBC *)); 30 __bam_gbh_fddum __P (( DBC *, DBT *, u_t32_t )); 31 __bam_gbhc __P (( DBC *, DBT *)); 32 __bam_g_ev __P (( DBC *)); 33 __bam_isd __P (( DBC *, db_pgno_t *)); 47 #unde ACQUIRE 48 #ACQUIRE ( dbc , mode , gno , lock , gno , g , ags , t ) do { \ 49 DB_MPOOLFILE * __mpf = ( dbc )-> dbp -> mpf ; \ 50 i(( g ! NULL ) { \ 51 t = `__memp_ut ( __mpf , g , dbc -> iܙy ); \ 52 g = NULL ; \ 54 t = 0; \ 55 i(( t =0 && `STD_LOCKING ( dbc )) \ 56 t = `__db_lg ( \ 57 dbc , LCK_COUPLE , gno , mode , ags , &( lock )); \ 58 i(( t ) == 0) \ 59 t = `__memp_fg ( __mpf , &( gno ), ( dbc )-> txn , \ 60 0, &( g )); \ 61 } 0) ) 64 #unde ACQUIRE_CUR 65 #ACQUIRE_CUR ( dbc , mode , p , ags , t ) do { \ 66 BTREE_CURSOR * __ = (BTREE_CURSOR *)( dbc )-> ; \ 67 i( p ! __ -> pgno ) \ 68 __ -> pgno = PGNO_INVALID ; \ 69 `ACQUIRE ( dbc , mode , p , __ -> lock ,, __-> ge , ags , t ); \ 70 i(( t ) == 0) { \ 71 __ -> pgno = p ; \ 72 __ -> lock_mode = ( mode ); \ 74 } 0) ) 82 #unde ACQUIRE_WRITE_LOCK 83 #ACQUIRE_WRITE_LOCK ( dbc , t ) do { \ 84 BTREE_CURSOR * __ = (BTREE_CURSOR *)( dbc )-> ; \ 85 t = 0; \ 86 i( `STD_LOCKING ( dbc ) && \ 87 __ -> lock_mode ! DB_LOCK_WRITE && \ 88 (( t `__db_lg ( dbc , \ 89 `LOCK_ISSET ( __ -> lock ? LCK_COUPLE : 0, \ 90 __ -> pgno , DB_LOCK_WRITE , 0, &__-> lock )) == 0) \ 91 __ -> lock_mode = DB_LOCK_WRITE ; \ 92 } 0) ) 95 #unde DISCARD_CUR 96 #DISCARD_CUR ( dbc , t ) do { \ 97 BTREE_CURSOR * __ = (BTREE_CURSOR *)( dbc )-> ; \ 98 DB_MPOOLFILE * __mpf = ( dbc )-> dbp -> mpf ; \ 99 __t_t ; \ 100 i(( __ -> ge ! NULL ) { \ 101 __t_t = `__memp_ut ( __mpf , __ -> ge , dbc -> iܙy );\ 102 __ -> ge = NULL ; \ 104 __t_t = 0; \ 105 i( __t_t !0 && ( t ) == 0) \ 106 t = __t_t ; \ 107 __t_t = `__TLPUT (( dbc ), __ -> lock ); \ 108 i( __t_t !0 && ( t ) == 0) \ 109 t = __t_t ; \ 110 i(( t =0 && ! `LOCK_ISSET ( __ -> lock )) \ 111 __ -> lock_mode = DB_LOCK_NG ; \ 112 } 0) ) 115 #unde IS_DELETED 116 #IS_DELETED ( dbp , ge , dx ) \ 117 `B_DISSET ( `GET_BKEYDATA ( dbp , ge , \ 118 ( dx + ( `TYPE ( ge = P_LBTREE ? O_INDX : 0))-> ty ) ) 119 #unde IS_CUR_DELETED 120 #IS_CUR_DELETED ( dbc ) \ 121 `IS_DELETED (( dbc )-> dbp , (dbc)-> -> ge , (dbc)->-> dx ) ) 131 #unde IS_DUPLICATE 132 #IS_DUPLICATE ( dbc , i1 , i2 ) \ 133 ( `P_INP (( dbc )-> dbp ,(( PAGE *)(dbc)-> -> ge ))[ i1 ] == \ 134 `P_INP (( dbc )-> dbp ,(( PAGE *)(dbc)-> -> ge ))[ i2 ]) ) 135 #unde IS_CUR_DUPLICATE 136 #IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx ) \ 137 ( `F_ISSET ( dbc , DBC_OPD ) || \ 138 ( ig_pgno =( dbc )-> -> pgno && \ 139 `IS_DUPLICATE ( dbc , (dbc)-> -> dx , ig_dx ))) ) 148 $__bamc_ ( dbc , dbty ) 149 DBC * dbc ; 150 DBTYPE dbty ; 152 DB_ENV * dbv ; 153 t ; 155 dbv = dbc -> dbp ->dbenv; 158 i( dbc -> = NULL && ( t = 159 `__os_oc ( dbv , 1, ( BTREE_CURSOR ), & dbc -> )) != 0) 160 ( t ); 163 dbc -> o = dbc-> c_o = __dbc_o_ ; 164 dbc -> cou = dbc-> c_cou = __dbc_cou_ ; 165 dbc -> d = dbc-> c_d = __dbc_d_ ; 166 dbc -> dup = dbc-> c_dup = __dbc_dup_ ; 167 dbc -> g = dbc-> c_g = __dbc_g_ ; 168 dbc -> pg = dbc-> c_pg = __dbc_pg_ ; 169 dbc -> put = dbc-> c_put = __dbc_put_ ; 170 i( dbty = DB_BTREE ) { 171 dbc -> am_bulk = __bam_bulk ; 172 dbc -> am_o = __bamc_o ; 173 dbc -> am_d = __bamc_d ; 174 dbc -> am_deroy = __bamc_deroy ; 175 dbc -> am_g = __bamc_g ; 176 dbc -> am_put = __bamc_put ; 177 dbc -> am_wrock = __bamc_wrock ; 179 dbc -> am_bulk = __bam_bulk ; 180 dbc -> am_o = __bamc_o ; 181 dbc -> am_d = __mc_d ; 182 dbc -> am_deroy = __bamc_deroy ; 183 dbc -> am_g = __mc_g ; 184 dbc -> am_put = __mc_put ; 185 dbc -> am_wrock = __bamc_wrock ; 189 } } 198 $__bamc_esh ( dbc ) 199 DBC * dbc ; 201 BTREE * t ; 202 BTREE_CURSOR * ; 203 DB * dbp ; 205 dbp = dbc ->dbp; 206 t = dbp -> bt_ ; 207 = ( BTREE_CURSOR *) dbc -> ; 214 i( -> ro = PGNO_INVALID ) 215 -> ro = t -> bt_ro ; 217 `LOCK_INIT ( -> lock ); 218 -> lock_mode = DB_LOCK_NG ; 220 i( -> = NULL ) { 221 -> = cp-> ack ; 222 -> e = cp-> ack + (cp->stack) / (cp->stack[0]); 224 `BT_STK_CLR ( ); 234 -> ovsize = `B_MINKEY_TO_OVFLSIZE ( 235 dbp , `F_ISSET ( dbc , DBC_OPD ? 2 : t -> bt_mkey , dbp-> pgsize ); 237 -> o = RECNO_OOB ; 238 -> d = INVALID_ORDER ; 239 -> ags = 0; 242 i( `F_ISSET ( dbc , DBC_OPD ) || 243 dbc -> dbty = DB_RECNO || `F_ISSET ( dbp , DB_AM_RECNUM )) { 244 `F_SET ( , C_RECNUM ); 251 i(( `F_ISSET ( dbc , DBC_OPD && dbc-> dbty = DB_RECNO ) || 252 `F_ISSET ( dbp , DB_AM_RECNUM | DB_AM_RENUMBER )) 253 `F_SET ( , C_RENUMBER ); 257 } } 264 $__bamc_o ( dbc , ro_pgno , rmro ) 265 DBC * dbc ; 266 db_pgno_t ro_pgno ; 267 * rmro ; 269 BTREE_CURSOR * , * _d , * _c ; 270 DB * dbp ; 271 DBC * dbc_d , * dbc_c ; 272 DB_MPOOLFILE * mpf ; 273 PAGE * h ; 274 cdb_lock , cou , t ; 276 dbp = dbc ->dbp; 277 mpf = dbp ->mpf; 278 = ( BTREE_CURSOR *) dbc -> ; 279 _d = ( dbc_d = -> d = NULL ? 280 NULL : ( BTREE_CURSOR *) dbc_d -> ; 281 cdb_lock = t = 0; 340 i( `F_ISSET ( , C_DELETED )) { 341 dbc_c = dbc ; 342 dbc -> dbty ) { 343 DB_BTREE : 344 i(( t = `__bam__de ( 345 dbp , -> pgno , cp-> dx , 1, & cou )) != 0) 346 r ; 347 i( cou == 0) 348 lock ; 349 de ; 350 DB_RECNO : 351 i(! `F_ISSET ( dbc , DBC_OPD )) 352 de ; 354 i(( t = `__m__de ( dbp , -> ro , & cou )) != 0) 355 r ; 356 i( cou == 0) 357 lock ; 358 de ; 359 DB_HASH : 360 DB_QUEUE : 361 DB_UNKNOWN : 363 t = `__db_unknown_ty ( dbp -> dbv , 364 "__bamc_o", dbc -> dbty ); 365 r ; 369 i( dbc_d = NULL ) 370 de ; 372 i( `F_ISSET ( _d , C_DELETED )) { 377 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 0, & h )) != 0) 378 r ; 379 ro_pgno = `GET_BOVERFLOW ( dbp , h , -> dx + O_INDX )-> pgno ; 380 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 381 r ; 383 dbc_c = dbc_d ; 384 dbc_d -> dbty ) { 385 DB_BTREE : 386 i(( t = `__bam__de ( 387 dbp , _d -> pgno , cp_d-> dx , 1, & cou )) != 0) 388 r ; 389 i( cou == 0) 390 lock ; 391 de ; 392 DB_RECNO : 393 i(( t = 394 `__m__de ( dbp , _d -> ro , & cou )) != 0) 395 r ; 396 i( cou == 0) 397 lock ; 398 de ; 399 DB_HASH : 400 DB_QUEUE : 401 DB_UNKNOWN : 403 t = `__db_unknown_ty ( 404 dbp -> dbv , "__bamc_o", dbc -> dbty ); 405 r ; 408 de ; 410 lock : _c = ( BTREE_CURSOR *) dbc_c -> ; 418 i( `CDB_LOCKING ( dbp -> dbv )) { 419 i( `F_ISSET ( dbc , DBC_WRITECURSOR )) { 420 i(( t = `__lock_g ( dbp -> dbv , 421 dbc -> lock , DB_LOCK_UPGRADE , &dbc-> lock_dbt , 422 DB_LOCK_WRITE , & dbc -> mylock )) != 0) 423 r ; 424 cdb_lock = 1; 426 de ; 438 i( `F_ISSET ( dbc , DBC_OPD )) 439 de ; 472 i( `STD_LOCKING ( dbc )) 473 i(( t = `__db_lg ( dbc , 474 LCK_COUPLE , -> pgno , DB_LOCK_WRITE , 0, &-> lock )) != 0) 475 r ; 477 de : 485 i( dbc_c -> dbty = DB_BTREE ) { 486 i(( t = `__memp_fg ( mpf , & _c -> pgno , dbc -> txn , 487 DB_MPOOL_DIRTY , & _c -> ge )) != 0) 488 r ; 489 i(( t = `__bamc_physd ( dbc_c )) != 0) 490 r ; 497 i(! `F_ISSET ( dbc_c , DBC_OPD || ro_pgno = PGNO_INVALID ) 498 de ; 509 i(( t = `__memp_fg ( mpf , & ro_pgno , dbc -> txn , 0, & h )) != 0) 510 r ; 511 i( `NUM_ENT ( h ) == 0) { 512 `DISCARD_CUR ( dbc_c , t ); 513 i( t != 0) 514 r ; 515 i(( t = `__db_ ( dbc , h )) != 0) 516 r ; 518 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 519 r ; 520 de ; 535 i( dbc_d ! NULL ) { 536 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 537 DB_MPOOL_DIRTY , & -> ge )) != 0) 538 r ; 539 i(( t = `__bamc_physd ( dbc )) != 0) 540 r ; 542 * rmro = 1; 543 r : 544 de : 548 i( dbc_d ! NULL ) 549 `DISCARD_CUR ( dbc_d , t ); 550 `DISCARD_CUR ( dbc , t ); 553 i( cdb_lock ) 554 () `__lock_downgde ( 555 dbp -> dbv , & dbc -> mylock , DB_LOCK_IWRITE , 0); 557 ( t ); 558 } } 565 $__bamc_deroy ( dbc ) 566 DBC * dbc ; 568 BTREE_CURSOR * ; 570 = ( BTREE_CURSOR *) dbc -> ; 573 i( -> !-> ack ) 574 `__os_ ( dbc -> dbp -> dbv , -> ); 575 `__os_ ( dbc -> dbp -> dbv , ); 578 } } 587 $__bamc_cou ( dbc , ) 588 DBC * dbc ; 589 db_o_t * ; 591 BTREE_CURSOR * ; 592 DB * dbp ; 593 DB_MPOOLFILE * mpf ; 594 db_dx_t dx , t ; 595 db_o_t o ; 596 t ; 598 dbp = dbc ->dbp; 599 mpf = dbp ->mpf; 600 = ( BTREE_CURSOR *) dbc -> ; 607 i( -> d = NULL ) { 611 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 612 0, & -> ge )) != 0) 613 ( t ); 619 dx = ->dx;; indx - P_INDX ) 620 i( dx == 0 || 621 ! `IS_DUPLICATE ( dbc , dx , indx - P_INDX )) 623 o = 0, 624 t = `NUM_ENT ( -> ge - P_INDX ;; dx += P_INDX) { 625 i(! `IS_DELETED ( dbp , -> ge , dx )) 626 ++ o ; 627 i( dx = t || 628 ! `IS_DUPLICATE ( dbc , dx , indx + P_INDX )) 636 i(( t = `__memp_fg ( mpf , & -> d -> -> ro , 637 dbc -> txn , 0, & -> ge )) != 0) 638 ( t ); 649 i( `TYPE ( -> ge = P_LDUP ) 650 o = 0, dx = 0, 651 t = `NUM_ENT ( -> ge - O_INDX ;; dx += O_INDX) { 652 i(! `IS_DELETED ( dbp , -> ge , dx )) 653 ++ o ; 654 i( dx = t ) 658 o = `RE_NREC ( -> ge ); 661 * = o ; 663 t = `__memp_ut ( mpf , -> ge , dbc -> iܙy ); 664 -> ge = NULL ; 666 ( t ); 667 } } 674 $__bamc_d ( dbc ) 675 DBC * dbc ; 677 BTREE_CURSOR * ; 678 DB * dbp ; 679 DB_MPOOLFILE * mpf ; 680 cou , t , t_t ; 682 dbp = dbc ->dbp; 683 mpf = dbp ->mpf; 684 = ( BTREE_CURSOR *) dbc -> ; 685 t = 0; 688 i( `F_ISSET ( , C_DELETED )) 689 ( DB_KEYEMPTY ); 694 `DB_ASSERT ( dbp -> dbv , -> ge = NULL ); 705 i( `F_ISSET ( , C_RECNUM )) { 706 i(( t = `__bamc_gack ( dbc )) != 0) 707 r ; 708 -> ge = cp-> c ->page; 710 `ACQUIRE_CUR ( dbc , DB_LOCK_WRITE , -> pgno , 0, t ); 711 i( t != 0) 712 r ; 716 i(( t = `__memp_dty ( mpf , 717 & -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 718 r ; 721 i( `DBC_LOGGING ( dbc )) { 722 i(( t = `__bam_cd_log ( dbp , dbc -> txn , & `LSN ( -> ge ), 0, 723 `PGNO ( -> ge ), & `LSN (->ge), cp-> dx )) != 0) 724 r ; 726 `LSN_NOT_LOGGED ( `LSN ( -> ge )); 729 i( `TYPE ( -> ge = P_LBTREE ) 730 `B_DSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx + O_INDX )-> ty ); 732 `B_DSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx )-> ty ); 734 r : 738 i( `F_ISSET ( , C_RECNUM )) { 739 -> c -> ge = cp->page; 740 i( t == 0) 741 t = `__bam_adju ( dbc , -1); 742 () `__bam_kl ( dbc , 0); 744 i( -> ge ! NULL && 745 ( t_t = `__memp_ut ( mpf , 746 -> ge , dbc -> iܙy )!0 && t == 0) 747 t = t_t ; 749 -> ge = NULL ; 755 i( t == 0) 756 t = `__bam__de ( dbp , -> pgno , cp-> dx , 1, & cou ); 758 ( t ); 759 } } 769 $__bamc_dup ( ig_dbc , w_dbc ) 770 DBC * ig_dbc , * w_dbc ; 772 BTREE_CURSOR * ig , * w ; 774 ig = ( BTREE_CURSOR *) ig_dbc -> ; 775 w = ( BTREE_CURSOR *) w_dbc -> ; 777 w -> ovsize = ig ->ovflsize; 778 w -> o = ig ->recno; 779 w -> ags = ig ->flags; 782 } } 789 $__bamc_g ( dbc , key , da , ags , pgn ) 790 DBC * dbc ; 791 DBT * key , * da ; 792 u_t32_t ags ; 793 db_pgno_t * pgn ; 795 BTREE_CURSOR * ; 796 DB * dbp ; 797 DB_MPOOLFILE * mpf ; 798 db_pgno_t ig_pgno ; 799 db_dx_t ig_dx ; 800 exa , wd , t ; 802 dbp = dbc ->dbp; 803 mpf = dbp ->mpf; 804 = ( BTREE_CURSOR *) dbc -> ; 805 ig_pgno = -> pgno ; 806 ig_dx = -> dx ; 808 wd = 0; 809 ags ) { 810 DB_CURRENT : 812 i( `F_ISSET ( , C_DELETED )) { 813 t = DB_KEYEMPTY ; 814 r ; 823 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 824 0, & -> ge )) != 0) 825 r ; 827 DB_FIRST : 828 wd = 1; 829 i(( t = `__bamc_ch ( dbc , 830 PGNO_INVALID , NULL , ags , & exa )) != 0) 831 r ; 833 DB_GET_BOTH : 834 DB_GET_BOTH_RANGE : 848 i( `F_ISSET ( dbc , DBC_OPD )) { 849 i(( t = `__bamc_ch ( 850 dbc , PGNO_INVALID , da , ags , & exa )) != 0) 851 r ; 852 i( ags = DB_GET_BOTH ) { 853 i(! exa ) { 854 t = DB_NOTFOUND ; 855 r ; 866 i(( -> dx = `NUM_ENT (-> ge ) || 867 `IS_CUR_DELETED ( dbc )) && 868 ( t = `__bamc_xt ( dbc , 1, 0)) != 0) 869 r ; 871 i(( t = `__bamc_ch ( 872 dbc , PGNO_INVALID , key , ags , & exa )) != 0) 873 ( t ); 874 i(! exa ) { 875 t = DB_NOTFOUND ; 876 r ; 879 i( pgn ! NULL && `__bam_isd ( dbc ,gnop)) { 880 wd = 1; 883 i(( t = 884 `__bam_gbh_fddum ( dbc , da , ags )) != 0) 885 r ; 888 DB_GET_BOTHC : 889 i(( t = `__bam_gbhc ( dbc , da )) != 0) 890 r ; 892 DB_LAST : 893 wd = 1; 894 i(( t = `__bamc_ch ( dbc , 895 PGNO_INVALID , NULL , ags , & exa )) != 0) 896 r ; 898 DB_NEXT : 899 wd = 1; 900 i( -> pgno = PGNO_INVALID ) { 901 i(( t = `__bamc_ch ( dbc , 902 PGNO_INVALID , NULL , DB_FIRST , & exa )) != 0) 903 r ; 905 i(( t = `__bamc_xt ( dbc , 1, 0)) != 0) 906 r ; 908 DB_NEXT_DUP : 909 i(( t = `__bamc_xt ( dbc , 1, 0)) != 0) 910 r ; 911 i(! `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )) { 912 t = DB_NOTFOUND ; 913 r ; 916 DB_NEXT_NODUP : 917 wd = 1; 918 i( -> pgno = PGNO_INVALID ) { 919 i(( t = `__bamc_ch ( dbc , 920 PGNO_INVALID , NULL , DB_FIRST , & exa )) != 0) 921 r ; 924 i(( t = `__bamc_xt ( dbc , 1, 0)) != 0) 925 r ; 926 } `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )); 928 DB_PREV : 929 wd = 1; 930 i( -> pgno = PGNO_INVALID ) { 931 i(( t = `__bamc_ch ( dbc , 932 PGNO_INVALID , NULL , DB_LAST , & exa )) != 0) 933 r ; 935 i(( t = `__bamc_ev ( dbc )) != 0) 936 r ; 938 DB_PREV_DUP : 939 i(( t = `__bamc_ev ( dbc )) != 0) 940 r ; 941 i(! `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )) { 942 t = DB_NOTFOUND ; 943 r ; 946 DB_PREV_NODUP : 947 wd = 1; 948 i( -> pgno = PGNO_INVALID ) { 949 i(( t = `__bamc_ch ( dbc , 950 PGNO_INVALID , NULL , DB_LAST , & exa )) != 0) 951 r ; 954 i(( t = `__bamc_ev ( dbc )) != 0) 955 r ; 956 } `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )); 958 DB_SET : 959 DB_SET_RECNO : 960 wd = 1; 961 i(( t = `__bamc_ch ( dbc , 962 PGNO_INVALID , key , ags , & exa )) != 0) 963 r ; 965 DB_SET_RANGE : 966 wd = 1; 967 i(( t = `__bamc_ch ( dbc , 968 PGNO_INVALID , key , ags , & exa )) != 0) 969 r ; 977 i( -> dx = `NUM_ENT (-> ge || `IS_CUR_DELETED ( dbc )) 978 i(( t = `__bamc_xt ( dbc , 0, 0)) != 0) 979 r ; 982 t = `__db_unknown_ag ( dbp -> dbv , "__bamc_g", ags ); 983 r ; 990 i( wd && pgn ! NULL ) 991 () `__bam_isd ( dbc , pgn ); 993 r : 998 i( `F_ISSET ( , C_DELETED ) && 999 ( -> pgno ! ig_pgno || cp-> dx ! ig_dx )) 1000 `F_CLR ( , C_DELETED ); 1002 ( t ); 1003 } } 1006 $__bam_g_ev ( dbc ) 1007 DBC * dbc ; 1009 BTREE_CURSOR * ; 1010 DBT key , da ; 1011 db_pgno_t pgno ; 1012 t ; 1014 i(( t = `__bamc_ev ( dbc )) != 0) 1015 ( t ); 1017 i( `__bam_isd ( dbc , & pgno )) { 1018 = ( BTREE_CURSOR *) dbc -> ; 1019 i(( t = `__dbc_wd ( dbc , pgno , -> d , &cp->opd)) != 0) 1020 ( t ); 1021 i(( t = -> d -> `am_g (cp->opd, 1022 & key , & da , DB_LAST , NULL )) != 0) 1023 ( t ); 1027 } } 1033 $__bam_bulk ( dbc , da , ags ) 1034 DBC * dbc ; 1035 DBT * da ; 1036 u_t32_t ags ; 1038 BKEYDATA * bk ; 1039 BOVERFLOW * bo ; 1040 BTREE_CURSOR * ; 1041 PAGE * pg ; 1042 db_dx_t * p , dx , pg_keyoff ; 1043 t32_t * dp , key_off , * of , * veof ; 1044 u_t8_t * dbuf , * dp , * ; 1045 u_t32_t key_size , gesize , size , a ; 1046 adj , is_key , ed_pg , xt_key , no_dup , c_key , t ; 1048 t = 0; 1049 key_off = 0; 1050 size = 0; 1051 gesize = dbc -> dbp -> pgsize ; 1052 = ( BTREE_CURSOR *) dbc -> ; 1059 dbuf = da ->data; 1060 = dp = dbuf ; 1063 a = da -> un ; 1064 a -(* of ); 1067 dp = ( t32_t *)(( u_t8_t *) dbuf + da -> un ); 1068 dp --; 1069 of = dp ; 1071 key_size = 0; 1081 i( dbc -> dbty = DB_BTREE ) { 1082 is_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1: 0; 1083 c_key = 0; 1084 xt_key = is_key && `LF_ISSET ( DB_OPFLAGS_MASK ! DB_NEXT_DUP ; 1085 adj = 2; 1087 is_key = 0; 1088 c_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1 : 0; 1089 xt_key = `LF_ISSET ( DB_OPFLAGS_MASK ! DB_NEXT_DUP ; 1090 adj = 1; 1092 no_dup = `LF_ISSET ( DB_OPFLAGS_MASK = DB_NEXT_NODUP ; 1094 xt_pg : 1095 dx = ->indx; 1096 pg = -> ge ; 1098 p = `P_INP ( dbc -> dbp , pg ); 1100 ed_pg = 1; 1107 pg_keyoff = 0; 1108 i( is_key == 0) 1109 pg_keyoff = p [ dx ]; 1112 i( `IS_DELETED ( dbc -> dbp , pg , dx )) { 1113 i( dbc -> dbty ! DB_RECNO ) 1116 -> o ++; 1122 i( c_key != 0) 1125 a -2 * (* of ); 1127 i( a > da -> un ) 1128 back_up ; 1131 * of -- = 0; 1132 * of -- = 0; 1142 i( is_key && pg_keyoff ! p [ dx ]) { 1143 bk = `GET_BKEYDATA ( dbc -> dbp , pg , dx ); 1144 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 1145 bo = ( BOVERFLOW *) bk ; 1146 size = key_size = bo -> ; 1147 i( key_size > a ) 1148 g_key_a ; 1149 i(( t = `__bam_bulk_ovow ( dbc , 1150 bo -> , bo-> pgno , )) != 0) 1151 ( t ); 1152 a - key_size ; 1153 key_off = ( t32_t )( - dbuf ); 1154 + key_size ; 1156 i( ed_pg ) { 1157 dp = ; 1158 size = gesize - `HOFFSET ( pg ); 1159 i( a < size ) { 1160 g_key_a : 1162 i( of = dp ) { 1163 da -> size = ( u_t32_t ) 1164 `DB_ALIGN ( size + 1165 gesize , 1024); 1167 ( DB_BUFFER_SMALL ); 1175 i( dx != 0) 1176 dx - P_INDX ; 1178 i(( t = 1179 `__bam_g_ev ( 1180 dbc )) != 0) 1181 ( t ); 1182 dx = ->indx; 1183 pg = -> ge ; 1191 `memy ( dp , 1192 ( u_t8_t *) pg + `HOFFSET g), size ); 1193 ed_pg = 0; 1194 a - size ; 1195 + size ; 1197 key_size = bk -> n ; 1198 key_off = ( t32_t )(( p [ dx ] - `HOFFSET ( pg )) 1199 + ( dp - dbuf + `SSZA ( BKEYDATA , da )); 1200 pg_keyoff = p [ dx ]; 1208 a -( is_key ? 4 : 2* (* of ); 1209 i( c_key ) 1210 a -(* of ); 1213 i( a > da -> un ) 1214 back_up ; 1222 bk = `GET_BKEYDATA ( dbc -> dbp , pg , dx + adj - 1); 1223 i( `B_TYPE ( bk -> ty = B_DUPLICATE ) { 1224 bo = ( BOVERFLOW *) bk ; 1225 i( is_key ) { 1226 * of -- = ( t32_t ) key_off ; 1227 * of -- = ( t32_t ) key_size ; 1234 veof = of ; 1235 i(( t = `__bam_bulk_duis ( dbc , bo -> pgno , 1236 dbuf , is_key ? of + P_INDX : NULL , 1237 & of , & , & a , no_dup )) != 0) { 1238 i( t = DB_BUFFER_SMALL ) { 1239 size = a ; 1240 a = 0; 1242 i( of = veof ) { 1243 of += 2; 1244 back_up ; 1246 g_a ; 1248 ( t ); 1250 } i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 1251 bo = ( BOVERFLOW *) bk ; 1252 size = bo -> ; 1253 i( size > a ) 1254 back_up ; 1255 i(( t = 1256 `__bam_bulk_ovow ( dbc , 1257 bo -> , bo-> pgno , )) != 0) 1258 ( t ); 1259 a - size ; 1260 i( is_key ) { 1261 * of -- = ( t32_t ) key_off ; 1262 * of -- = ( t32_t ) key_size ; 1263 } i( c_key ) 1264 * of -- = ( t32_t ) -> o ; 1265 * of -- = ( t32_t )( - dbuf ); 1266 + size ; 1267 * of -- = ( t32_t ) size ; 1269 i( ed_pg ) { 1270 dp = ; 1271 size = gesize - `HOFFSET ( pg ); 1272 i( a < size ) { 1273 back_up : 1278 i( dx > adj ) 1279 dx - adj ; 1281 i(( t = 1282 `__bam_g_ev ( dbc )) != 0 && 1283 t ! DB_NOTFOUND ) 1284 ( t ); 1285 dx = ->indx; 1286 pg = -> ge ; 1288 i( dbc -> dbty = DB_RECNO ) 1289 -> o --; 1290 g_a : 1296 i( of >= 1297 ( is_key ? & dp [-1] :ndp) || 1298 `F_ISSET ( dbc , DBC_TRANSIENT )) { 1299 da -> size = ( u_t32_t ) 1300 `DB_ALIGN ( size + 1301 da -> un - a , 1024); 1302 ( DB_BUFFER_SMALL ); 1306 `memy ( dp , ( u_t8_t *) pg + `HOFFSET g), size ); 1307 ed_pg = 0; 1308 a - size ; 1309 + size ; 1315 i( is_key ) { 1316 * of -- = ( t32_t ) key_off ; 1317 * of -- = ( t32_t ) key_size ; 1318 } i( c_key ) 1319 * of -- = ( t32_t ) -> o ; 1320 * of -- = ( t32_t )(( p [ dx + adj - 1] - `HOFFSET ( pg )) 1321 + ( dp - dbuf + `SSZA ( BKEYDATA , da )); 1322 * of -- = bk -> n ; 1324 i( dbc -> dbty = DB_RECNO ) 1325 -> o ++; 1326 i( no_dup ) { 1327 dx + adj < `NUM_ENT ( pg ) && 1328 pg_keyoff = p [ dx + adj ]) 1329 dx + adj ; 1335 } ( dx + adj < `NUM_ENT ( pg ) && 1336 ( xt_key || pg_keyoff = p [ dx ])); 1339 i( t =0 && xt_key && dx > `NUM_ENT ( pg )) { 1340 -> dx = indx; 1341 t = `__bamc_xt ( dbc , 0, 1); 1342 i( t == 0) 1343 xt_pg ; 1344 i( t ! DB_NOTFOUND ) 1345 ( t ); 1355 i( t =0 && dx < pg -> s && 1356 `F_ISSET ( dbc , DBC_TRANSIENT && pg_keyoff = p [ dx ]) { 1357 da -> size = (da-> un - a ) + size; 1358 ( DB_BUFFER_SMALL ); 1365 i( t = DB_BUFFER_SMALL || xt_key || pg_keyoff = p [ dx ]) 1366 -> dx = indx; 1368 -> dx = indx - P_INDX ; 1370 i( c_key == 1) 1371 * of = RECNO_OOB ; 1373 * of = -1; 1375 } } 1385 $__bam_bulk_ovow ( dbc , n , pgno , dp ) 1386 DBC * dbc ; 1387 u_t32_t n ; 1388 db_pgno_t pgno ; 1389 u_t8_t * dp ; 1391 DBT dbt ; 1393 `memt (& dbt , 0, (dbt)); 1394 `F_SET (& dbt , DB_DBT_USERMEM ); 1395 dbt . un = n ; 1396 dbt . da = (*) dp ; 1397 ( `__db_goff ( dbc -> dbp , 1398 dbc -> txn , & dbt , n , pgno , NULL , NULL)); 1399 } } 1411 $__bam_bulk_duis ( dbc , pgno , dbuf , keyoff , ofp , d , ap , no_dup ) 1412 DBC * dbc ; 1413 db_pgno_t pgno ; 1414 u_t8_t * dbuf ; 1415 t32_t * keyoff , ** ofp ; 1416 u_t8_t ** d ; 1417 u_t32_t * ap ; 1418 no_dup ; 1420 DB * dbp ; 1421 BKEYDATA * bk ; 1422 BOVERFLOW * bo ; 1423 BTREE_CURSOR * ; 1424 DBC * d ; 1425 DBT key , da ; 1426 PAGE * pg ; 1427 db_dx_t dx , * p ; 1428 t32_t * of ; 1429 u_t32_t gesize , size , a ; 1430 u_t8_t * dp , * ; 1431 f , ed_pg , t , t_t ; 1433 t = 0; 1435 dbp = dbc ->dbp; 1436 = ( BTREE_CURSOR *) dbc -> ; 1437 d = ->opd; 1439 i( d = NULL ) { 1440 i(( t = `__dbc_wd ( dbc , pgno , NULL , & d )) != 0) 1441 ( t ); 1442 -> d = opd; 1443 i(( t = d -> `am_g (opd, 1444 & key , & da , DB_FIRST , NULL )) != 0) 1445 o_d ; 1448 gesize = d -> dbp -> pgsize ; 1449 = ( BTREE_CURSOR *) d -> ; 1450 a = * ap ; 1452 of = * ofp ; 1458 = dp = * d ; 1459 f = 1; 1460 dx = ->indx; 1464 i(( t = `__bamc_xt ( d , 0, 0)) != 0) 1466 pg = -> ge ; 1467 dx = ->indx; 1468 p = `P_INP ( dbp , pg ); 1470 ed_pg = 1; 1473 i( `IS_DELETED ( dbp , pg , dx )) 1474 ct ; 1475 bk = `GET_BKEYDATA ( dbp , pg , dx ); 1476 a -2 * (* of ); 1478 i( f =0 && keyoff ! NULL ) 1479 a -2 * (* of ); 1482 i( a > * ap ) { 1483 t = DB_BUFFER_SMALL ; 1484 i( f == 1) { 1486 a = -( t32_t )space; 1487 a = * ap + space; 1488 i( ed_pg ) 1489 a + gesize - `HOFFSET ( pg ); 1493 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 1494 bo = ( BOVERFLOW *) bk ; 1495 size = bo -> ; 1496 i( size > a ) { 1497 t = DB_BUFFER_SMALL ; 1498 a = * ap + size ; 1501 i( f =0 && keyoff ! NULL ) { 1502 * of -- = keyoff [0]; 1503 * of -- = keyoff [-1]; 1505 i(( t = `__bam_bulk_ovow ( dbc , 1506 bo -> , bo-> pgno , )) != 0) 1507 ( t ); 1508 a - size ; 1509 * of -- = ( t32_t )( - dbuf ); 1510 + size ; 1512 i( ed_pg ) { 1513 dp = ; 1514 size = gesize - `HOFFSET ( pg ); 1515 i( a < size ) { 1516 t = DB_BUFFER_SMALL ; 1518 a = * ap + size ; 1521 `memy ( dp , 1522 ( u_t8_t *) pg + `HOFFSET g), size ); 1523 ed_pg = 0; 1524 a - size ; 1525 + size ; 1527 i( f =0 && keyoff ! NULL ) { 1528 * of -- = keyoff [0]; 1529 * of -- = keyoff [-1]; 1531 size = bk -> n ; 1532 * of -- = ( t32_t )(( p [ dx ] - `HOFFSET ( pg )) 1533 + ( dp - dbuf + `SSZA ( BKEYDATA , da )); 1535 * of -- = ( t32_t ) size ; 1536 f = 0; 1537 i( no_dup ) 1539 ct : 1540 dx ++; 1541 i( d -> dbty = DB_RECNO ) 1542 -> o ++; 1543 } dx < `NUM_ENT ( pg )); 1544 i( no_dup ) 1546 -> dx = indx; 1548 } t == 0); 1551 * ap = a ; 1552 * ofp = of ; 1553 * d = ; 1559 i( t = DB_BUFFER_SMALL ) { 1560 i( d -> dbty = DB_RECNO ) { 1561 i(-- -> o == 0) 1562 o_d ; 1563 } i( dx != 0) 1564 -> dx --; 1566 t_t = `__bamc_ev ( d ); 1567 i( t_t = DB_NOTFOUND ) 1568 o_d ; 1569 i( t_t != 0) 1570 t = t_t ; 1572 } i( keyoff = NULL && t = DB_NOTFOUND ) { 1573 -> dx --; 1574 i( d -> dbty = DB_RECNO ) 1575 -- -> o ; 1576 } i( dx =0 || t = DB_NOTFOUND ) { 1577 o_d : 1578 i( t = DB_NOTFOUND ) 1579 t = 0; 1580 i(( t_t = `__dbc_o ( d )!0 && t == 0) 1581 t = t_t ; 1582 (( BTREE_CURSOR *) dbc -> )-> d = NULL ; 1584 i( t = DB_NOTFOUND ) 1585 t = 0; 1587 ( t ); 1588 } } 1595 $__bam_gbhc ( dbc , da ) 1596 DBC * dbc ; 1597 DBT * da ; 1599 BTREE_CURSOR * ; 1600 DB * dbp ; 1601 DB_MPOOLFILE * mpf ; 1602 cmp , exa , t ; 1604 dbp = dbc ->dbp; 1605 mpf = dbp ->mpf; 1606 = ( BTREE_CURSOR *) dbc -> ; 1614 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 0, &-> ge )) != 0) 1615 ( t ); 1622 i( `F_ISSET ( dbc , DBC_OPD )) { 1627 i(( t = `__bam_cmp ( dbp , dbc -> txn , 1628 da , -> ge , cp-> dx , 1629 dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare, 1630 & cmp )) != 0) 1631 ( t ); 1633 i( cmp <= 0) 1634 ( DB_NOTFOUND ); 1637 i(( t = `__memp_ut ( mpf , -> ge , dbc -> iܙy )) != 0) 1638 ( t ); 1639 -> ge = NULL ; 1641 ( `__bamc_ch ( dbc , 1642 PGNO_INVALID , da , DB_GET_BOTH , & exa )); 1654 i( -> dx + P_INDX > `NUM_ENT (-> ge ) || 1655 ! `IS_DUPLICATE ( dbc , -> dx , cp->dx + P_INDX )) 1656 ( DB_NOTFOUND ); 1657 -> dx + P_INDX ; 1659 ( `__bam_gbh_fddum ( dbc , da , DB_GET_BOTH )); 1660 } } 1667 $__bam_gbh_fddum ( dbc , da , ags ) 1668 DBC * dbc ; 1669 DBT * da ; 1670 u_t32_t ags ; 1672 BTREE_CURSOR * ; 1673 DB * dbp ; 1674 db_dx_t ba , lim , t ; 1675 cmp , t ; 1677 `COMPQUIET ( cmp , 0); 1679 dbp = dbc ->dbp; 1680 = ( BTREE_CURSOR *) dbc -> ; 1693 i( dbp -> dup_com = NULL ) { 1694 ;; -> dx + P_INDX ) { 1695 i(! `IS_CUR_DELETED ( dbc ) && 1696 ( t = `__bam_cmp ( dbp , dbc -> txn , da , -> ge , 1697 -> dx + O_INDX , __bam_defcmp , & cmp )) != 0) 1698 ( t ); 1699 i( cmp == 0) 1702 i( -> dx + P_INDX > `NUM_ENT (-> ge ) || 1703 ! `IS_DUPLICATE ( dbc , -> dx , cp->dx + P_INDX )) 1706 ( DB_NOTFOUND ); 1717 ba = t = -> dx ; < `NUM_ENT (-> ge ); + P_INDX ) 1718 i(! `IS_DUPLICATE ( dbc , -> dx , t )) 1720 i( ba =( t - P_INDX )) { 1721 i(( t = `__bam_cmp ( dbp , dbc -> txn , da , 1722 -> ge , cp-> dx + O_INDX , dbp -> dup_com , & cmp )) != 0) 1723 ( t ); 1724 ( cmp == 0 || 1725 ( cmp < 0 && ags = DB_GET_BOTH_RANGE ? 0 : DB_NOTFOUND ); 1728 lim = ( t - ba / ( db_dx_t ) P_INDX ;im != 0;im >>= 1) { 1729 -> dx = ba + (( lim >> 1* P_INDX ); 1730 i(( t = `__bam_cmp ( dbp , dbc -> txn , da , -> ge , 1731 -> dx + O_INDX , dbp -> dup_com , & cmp )) != 0) 1732 ( t ); 1733 i( cmp == 0) { 1739 i(! `IS_CUR_DELETED ( dbc )) 1743 i( cmp > 0) { 1744 ba = -> dx + P_INDX ; 1745 -- lim ; 1750 i( ags = DB_GET_BOTH ) 1751 ( DB_NOTFOUND ); 1758 -> dx = ba ; 1759 -> dx < t && `IS_CUR_DELETED ( dbc )) 1760 -> dx + P_INDX ; 1761 ( -> dx < t ? 0 : DB_NOTFOUND ); 1762 } } 1769 $__bamc_put ( dbc , key , da , ags , pgn ) 1770 DBC * dbc ; 1771 DBT * key , * da ; 1772 u_t32_t ags ; 1773 db_pgno_t * pgn ; 1775 BTREE * t ; 1776 BTREE_CURSOR * ; 1777 DB * dbp ; 1778 DBT dbt ; 1779 DB_MPOOLFILE * mpf ; 1780 db_pgno_t ro_pgno ; 1781 u_t32_t ii ; 1782 cmp , exa , own , t , ack ; 1783 * g ; 1785 dbp = dbc ->dbp; 1786 mpf = dbp ->mpf; 1787 = ( BTREE_CURSOR *) dbc -> ; 1788 ro_pgno = -> ro ; 1790 l : t = ack = 0; 1791 ags ) { 1792 DB_CURRENT : 1793 i( `F_ISSET ( , C_DELETED )) 1794 ( DB_NOTFOUND ); 1797 DB_AFTER : 1798 DB_BEFORE : 1799 ii = ags ; 1800 own = 1; 1803 `ACQUIRE_WRITE_LOCK ( dbc , t ); 1804 i( t != 0) 1805 r ; 1806 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 1807 0, & -> ge )) != 0) 1808 r ; 1810 DB_KEYFIRST : 1811 DB_KEYLAST : 1812 DB_NODUPDATA : 1813 DB_NOOVERWRITE : 1814 own = 0; 1822 i( `F_ISSET ( dbc , DBC_OPD )) { 1823 i(( t = `__bamc_ch ( dbc , 1824 `F_ISSET ( , C_RECNUM ? cp-> ro : ro_pgno , 1825 da , ags , & exa )) != 0) 1826 r ; 1827 ack = 1; 1830 i( exa ) { 1831 i( `IS_DELETED ( dbp , -> ge , cp-> dx )) { 1832 ii = DB_CURRENT ; 1835 t = `__db_du ( dbp , ags ); 1836 r ; 1838 ii = DB_BEFORE ; 1851 i(( t = `__bamc_ch ( dbc , 1852 `F_ISSET ( , C_RECNUM ? cp-> ro : ro_pgno , key , 1853 ags = DB_KEYFIRST || dbp -> dup_com ! NULL ? 1854 DB_KEYFIRST : DB_KEYLAST , & exa )) != 0) 1855 r ; 1856 ack = 1; 1862 i(! exa ) { 1863 ii = DB_KEYFIRST ; 1870 } i( ags = DB_NOOVERWRITE && ! `IS_CUR_DELETED ( dbc )) { 1871 i( pgn ! NULL && `__bam_isd ( dbc ,gnop)) 1872 t = `__bam_d_exis ( dbc , * pgn ); 1874 t = DB_KEYEXIST ; 1875 i( t != 0) 1876 r ; 1882 i(! `F_ISSET ( dbp , DB_AM_DUP )) { 1883 ii = DB_CURRENT ; 1892 i( pgn ! NULL && `__bam_isd ( dbc ,gnop)) 1893 de ; 1896 i( dbp -> dup_com = NULL ) { 1897 i( ags = DB_KEYFIRST ) 1898 ii = DB_BEFORE ; 1900 ;; -> dx + P_INDX ) 1901 i( -> dx + P_INDX >= 1902 `NUM_ENT ( -> ge ) || 1903 ! `IS_DUPLICATE ( dbc , -> dx , 1904 -> dx + P_INDX )) { 1905 ii = DB_AFTER ; 1915 ;; -> dx + P_INDX ) { 1916 i(( t = `__bam_cmp ( dbp , dbc -> txn , da , -> ge , 1917 -> dx + O_INDX , dbp -> dup_com , & cmp )) != 0) 1918 r ; 1919 i( cmp < 0) { 1920 ii = DB_BEFORE ; 1925 i( cmp == 0) { 1926 i( `IS_DELETED ( dbp , -> ge , cp-> dx )) { 1927 ii = DB_CURRENT ; 1930 t = `__db_du ( dbp , ags ); 1931 r ; 1934 i( -> dx + P_INDX > `NUM_ENT (-> ge ) || 1935 `P_INP ( dbp , (( PAGE *) -> ge ))[-> dx ] != 1936 `P_INP ( dbp , (( PAGE *) -> ge ))[-> dx + P_INDX ]) { 1937 ii = DB_AFTER ; 1943 t = `__db_unknown_ag ( dbp -> dbv , "__bamc_put", ags ); 1944 r ; 1947 t = `__bam_iem ( dbc , key , da , ii , 0)) { 1950 DB_NEEDSPLIT : 1955 i( ags = DB_AFTER || 1956 ags = DB_BEFORE || fg= DB_CURRENT ) { 1957 `memt (& dbt , 0, ( DBT )); 1958 i(( t = `__db_t ( dbp , dbc -> txn , -> ge , 0, 1959 & dbt , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 1960 r ; 1961 g = & dbt ; 1963 g = `F_ISSET ( dbc , DBC_OPD ? da : key ; 1972 i( ack ) 1973 t = `__bam_kl ( dbc , STK_CLRDBC | STK_NOLOCK ); 1975 `DISCARD_CUR ( dbc , t ); 1976 i( t != 0) 1977 r ; 1987 i( own == 0) { 1988 -> pgno = PGNO_INVALID ; 1989 -> dx = 0; 1993 i(( t = `__bam_l ( dbc , g , & ro_pgno )) != 0) 1994 ( t ); 1996 l ; 1998 r ; 2001 r : 2002 de : 2015 t = dbp -> bt_ ; 2016 i( t =0 && `TYPE ( -> ge = P_LBTREE && 2017 ( ags = DB_KEYFIRST || fg= DB_KEYLAST ) && 2018 ! `F_ISSET ( , C_RECNUM ) && 2019 (! `F_ISSET ( dbp , DB_AM_SUBDB ) || 2020 ( `LOGGING_ON ( dbp -> dbv && ! `F_ISSET (dbp, DB_AM_NOT_DURABLE ))) && 2021 (( `NEXT_PGNO ( -> ge = PGNO_INVALID && 2022 -> dx > `NUM_ENT (-> ge - P_INDX ) || 2023 ( `PREV_PGNO ( -> ge = PGNO_INVALID && cp-> dx == 0))) { 2024 t -> bt_gno = -> pgno ; 2025 i( `F_ISSET ( dbp , DB_AM_SUBDB )) 2026 t -> bt_ = `LSN ( -> ge ); 2028 t -> bt_gno = PGNO_INVALID ; 2036 i( ack && `BT_STK_POP ( ! NULL ) 2037 () `__bam_kl ( dbc , 0); 2048 `F_CLR ( , C_DELETED ); 2049 i( -> d ! NULL ) { 2050 = ( BTREE_CURSOR *)-> d -> ; 2051 `F_CLR ( , C_DELETED ); 2054 ( t ); 2055 } } 2064 $__bamc_rg ( dbc , da ) 2065 DBC * dbc ; 2066 DBT * da ; 2068 BTREE_CURSOR * ; 2069 DB * dbp ; 2070 DBT dbt ; 2071 DB_MPOOLFILE * mpf ; 2072 db_o_t o ; 2073 exa , t , t_t ; 2075 dbp = dbc ->dbp; 2076 mpf = dbp ->mpf; 2077 = ( BTREE_CURSOR *) dbc -> ; 2084 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 0, &-> ge )) != 0) 2085 ( t ); 2086 `memt (& dbt , 0, ( DBT )); 2087 i(( t = `__db_t ( dbp , dbc -> txn , -> ge , 2088 -> dx , & dbt , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 2089 r ; 2090 t = `__memp_ut ( mpf , -> ge , dbc -> iܙy ); 2091 -> ge = NULL ; 2092 i( t != 0) 2093 ( t ); 2095 i(( t = `__bam_ch ( dbc , PGNO_INVALID , & dbt , 2096 `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND , 2097 1, & o , & exa )) != 0) 2098 r ; 2100 t = `__db_tcy ( dbp -> dbv , da , 2101 & o , eo), & dbc -> rda -> da , &dbc->rda-> un ); 2104 r : i(( t_t = `__bam_kl ( dbc , 0)!0 && t == 0) 2105 t = t_t ; 2107 ( t ); 2108 } } 2115 $__bamc_wrock ( dbc ) 2116 DBC * dbc ; 2118 BTREE_CURSOR * ; 2119 t ; 2121 = ( BTREE_CURSOR *) dbc -> ; 2123 i( -> lock_mode = DB_LOCK_WRITE ) 2132 `ACQUIRE_WRITE_LOCK ( dbc , t ); 2133 ( t ); 2134 } } 2141 $__bamc_xt ( dbc , l_move , ded_okay ) 2142 DBC * dbc ; 2143 l_move , ded_okay ; 2145 BTREE_CURSOR * ; 2146 db_dx_t adju ; 2147 db_lockmode_t lock_mode ; 2148 db_pgno_t pgno ; 2149 t ; 2151 = ( BTREE_CURSOR *) dbc -> ; 2152 t = 0; 2161 i( `F_ISSET ( dbc , DBC_OPD )) { 2162 adju = O_INDX ; 2163 lock_mode = DB_LOCK_NG ; 2165 adju = dbc -> dbty = DB_BTREE ? P_INDX : O_INDX ; 2166 lock_mode = 2167 `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 2169 i( -> ge = NULL ) { 2170 `ACQUIRE_CUR ( dbc , lock_mode , -> pgno , 0, t ); 2171 i( t != 0) 2172 ( t ); 2175 i( l_move ) 2176 -> dx + adju ; 2186 i( -> dx > `NUM_ENT (-> ge )) { 2187 i(( pgno = `NEXT_PGNO ( -> ge )= PGNO_INVALID ) 2188 ( DB_NOTFOUND ); 2190 `ACQUIRE_CUR ( dbc , lock_mode , pgno , 0, t ); 2191 i( t != 0) 2192 ( t ); 2193 -> dx = 0; 2196 i(! ded_okay && `IS_CUR_DELETED ( dbc )) { 2197 -> dx + adju ; 2203 } } 2210 $__bamc_ev ( dbc ) 2211 DBC * dbc ; 2213 BTREE_CURSOR * ; 2214 db_dx_t adju ; 2215 db_lockmode_t lock_mode ; 2216 db_pgno_t pgno ; 2217 t ; 2219 = ( BTREE_CURSOR *) dbc -> ; 2220 t = 0; 2229 i( `F_ISSET ( dbc , DBC_OPD )) { 2230 adju = O_INDX ; 2231 lock_mode = DB_LOCK_NG ; 2233 adju = dbc -> dbty = DB_BTREE ? P_INDX : O_INDX ; 2234 lock_mode = 2235 `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 2237 i( -> ge = NULL ) { 2238 `ACQUIRE_CUR ( dbc , lock_mode , -> pgno , 0, t ); 2239 i( t != 0) 2240 ( t ); 2245 i( -> dx == 0) { 2246 i(( pgno = 2247 `PREV_PGNO ( -> ge )= PGNO_INVALID ) 2248 ( DB_NOTFOUND ); 2250 `ACQUIRE_CUR ( dbc , lock_mode , pgno , 0, t ); 2251 i( t != 0) 2252 ( t ); 2254 i(( -> dx = `NUM_ENT (-> ge )) == 0) 2259 -> dx - adju ; 2260 i( `IS_CUR_DELETED ( dbc )) 2266 } } 2273 $__bamc_ch ( dbc , ro_pgno , key , ags , exap ) 2274 DBC * dbc ; 2275 db_pgno_t ro_pgno ; 2276 cڡ DBT * key ; 2277 u_t32_t ags ; 2278 * exap ; 2280 BTREE * t ; 2281 BTREE_CURSOR * ; 2282 DB * dbp ; 2283 PAGE * h ; 2284 db_dx_t dx , * p ; 2285 db_pgno_t bt_gno ; 2286 db_o_t o ; 2287 u_t32_t sags ; 2288 cmp , t , t_t ; 2290 dbp = dbc ->dbp; 2291 = ( BTREE_CURSOR *) dbc -> ; 2292 t = dbp -> bt_ ; 2293 t = 0; 2299 `DISCARD_CUR ( dbc , t ); 2300 i( t != 0) 2301 ( t ); 2303 ags ) { 2304 DB_FIRST : 2305 sags = ( `F_ISSET ( dbc , DBC_RMW ? SR_WRITE : SR_READ | SR_MIN ; 2306 ch ; 2307 DB_LAST : 2308 sags = ( `F_ISSET ( dbc , DBC_RMW ? SR_WRITE : SR_READ | SR_MAX ; 2309 ch ; 2310 DB_SET_RECNO : 2311 i(( t = `__m_gno ( dbc , key , & o , 0)) != 0) 2312 ( t ); 2313 sags = 2314 ( `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND | SR_EXACT ; 2315 i(( t = `__bam_rch ( dbc , & o , sags , 1, exap )) != 0) 2316 ( t ); 2318 DB_SET : 2319 DB_GET_BOTH : 2320 sags = 2321 ( `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND | SR_EXACT ; 2322 ch ; 2323 DB_GET_BOTH_RANGE : 2324 sags = ( `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND ); 2325 ch ; 2326 DB_SET_RANGE : 2327 sags = 2328 ( `F_ISSET ( dbc , DBC_RMW ? SR_WRITE : SR_READ | SR_DUPFIRST ; 2329 ch ; 2330 DB_KEYFIRST : 2331 DB_NOOVERWRITE : 2332 sags = SR_KEYFIRST ; 2333 _ch ; 2334 DB_KEYLAST : 2335 DB_NODUPDATA : 2336 sags = SR_KEYLAST ; 2337 _ch : 2342 i( `F_ISSET ( dbc , DBC_OPD )) 2343 ch ; 2354 bt_gno = t ->bt_lpgno; 2359 i( bt_gno = PGNO_INVALID ) 2360 ch ; 2370 h = NULL ; 2371 `ACQUIRE_CUR ( dbc , DB_LOCK_WRITE , bt_gno , DB_LOCK_NOWAIT , t ); 2372 i( t != 0) { 2373 i( t = DB_LOCK_DEADLOCK || 2374 t = DB_LOCK_NOTGRANTED || 2375 t = DB_PAGE_NOTFOUND ) 2376 t = 0; 2377 _miss ; 2380 h = -> ge ; 2381 p = `P_INP ( dbp , h ); 2387 i( `TYPE ( h ! P_LBTREE || `NUM_ENT (h) == 0) 2388 _miss ; 2391 i( `F_ISSET ( dbp , DB_AM_SUBDB ) && 2392 `LOG_COMPARE (& t -> bt_ , & `LSN ( h )) != 0) 2393 _miss ; 2402 i( h -> xt_pgno = PGNO_INVALID ) { 2403 dx = `NUM_ENT ( h - P_INDX ; 2404 i(( t = `__bam_cmp ( dbp , dbc -> txn , 2405 key , h , dx , t -> bt_com , & cmp )) != 0) 2406 _miss ; 2408 i( cmp < 0) 2409 y_beg ; 2410 i( cmp > 0) { 2411 dx + P_INDX ; 2412 _h ; 2422 i( ags = DB_KEYLAST ) 2423 _h ; 2425 dx > 0 && p [dx - P_INDX ] == inp[indx]; 2426 dx - P_INDX ) 2428 _h ; 2430 y_beg : i( h -> ev_pgno = PGNO_INVALID ) { 2431 dx = 0; 2432 i(( t = `__bam_cmp ( dbp , dbc -> txn , 2433 key , h , dx , t -> bt_com , & cmp )) != 0) 2434 _miss ; 2436 i( cmp > 0) 2437 _miss ; 2438 i( cmp < 0) 2439 _h ; 2448 i( ags = DB_KEYFIRST ) 2449 _h ; 2451 dx < ( db_dx_t )( `NUM_ENT ( h - P_INDX ) && 2452 p [ dx ] =p[dx + P_INDX ]; 2453 dx + P_INDX ) 2455 _h ; 2457 _miss ; 2459 _h : 2460 * exap = cmp == 0; 2466 `BT_STK_CLR ( ); 2467 `BT_STK_ENTER ( dbp -> dbv , 2468 , h , dx , cp-> lock , cp-> lock_mode , t ); 2469 i( t != 0) 2470 ( t ); 2473 _miss : 2479 `DISCARD_CUR ( dbc , t ); 2480 -> pgno = PGNO_INVALID ; 2481 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 2482 t = t_t ; 2483 i( t != 0) 2484 ( t ); 2486 ch : i(( t = `__bam_ch ( dbc , ro_pgno , 2487 key , sags , 1, NULL , exap )) != 0) 2488 ( t ); 2491 ( `__db_unknown_ag ( dbp -> dbv , "__bamc_ch", ags )); 2494 -> ge = cp-> c ->page; 2495 -> pgno = cp-> c -> ge ->pgno; 2496 -> dx = cp-> c ->indx; 2497 -> lock = cp-> c ->lock; 2498 -> lock_mode = cp-> c ->lock_mode; 2501 i( ags = DB_FIRST && 2502 ( `NUM_ENT ( -> ge =0 || `IS_CUR_DELETED ( dbc ))) 2503 i(( t = `__bamc_xt ( dbc , 0, 0)) != 0) 2504 ( t ); 2505 i( ags = DB_LAST && 2506 ( `NUM_ENT ( -> ge =0 || `IS_CUR_DELETED ( dbc ))) 2507 i(( t = `__bamc_ev ( dbc )) != 0) 2508 ( t ); 2511 } } 2518 $__bamc_physd ( dbc ) 2519 DBC * dbc ; 2521 BTREE_CURSOR * ; 2522 DB * dbp ; 2523 DBT key ; 2524 de_ge , emy_ge , exa , t ; 2526 dbp = dbc ->dbp; 2527 `memt (& key , 0, ( DBT )); 2528 = ( BTREE_CURSOR *) dbc -> ; 2529 de_ge = emy_ge = t = 0; 2532 de_ge = emy_ge = 2533 `NUM_ENT ( -> ge =( `TYPE (->ge= P_LBTREE ? 2 : 1); 2540 i( de_ge && 2541 ! `F_ISSET ( dbc , DBC_OPD && F_ISSET( dbp , DB_AM_REVSPLITOFF )) 2542 de_ge = 0; 2549 i( de_ge && -> pgno =-> ro ) 2550 de_ge = 0; 2563 i( de_ge ) { 2564 i(( t = `__db_t ( dbp , dbc -> txn , -> ge , 2565 0, & key , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 2566 ( t ); 2584 i(( t = `__memp_dty ( dbp -> mpf , 2585 & -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 2586 ( t ); 2587 i( `TYPE ( -> ge = P_LBTREE ) { 2588 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 2589 ( t ); 2590 i(! emy_ge ) 2591 i(( t = `__bam__di ( dbc , 2592 `PGNO ( -> ge ), cp-> dx , -1)) != 0) 2593 ( t ); 2595 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 2596 ( t ); 2599 `F_CLR ( , C_DELETED ); 2601 i(! emy_ge ) 2602 i(( t = `__bam__di ( dbc , `PGNO ( -> ge ), cp-> dx , -1)) != 0) 2603 ( t ); 2608 i( `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED )) { 2609 i(( t = `__TLPUT ( dbc , -> lock )) != 0) 2610 ( t ); 2611 -> lock_mode = DB_LOCK_WWRITE ; 2614 i(! de_ge ) 2617 t = `__bam_ch ( dbc , PGNO_INVALID , & key , SR_DEL , 0, NULL , & exa ); 2623 i( t == 0) 2624 `DISCARD_CUR ( dbc , t ); 2625 i( t == 0) 2626 t = `__bam_dges ( dbc , 1, 0); 2628 () `__bam_kl ( dbc , 0); 2630 ( t ); 2631 } } 2638 $__bamc_gack ( dbc ) 2639 DBC * dbc ; 2641 BTREE_CURSOR * ; 2642 DB * dbp ; 2643 DBT dbt ; 2644 DB_MPOOLFILE * mpf ; 2645 PAGE * h ; 2646 exa , t , t_t ; 2648 dbp = dbc ->dbp; 2649 mpf = dbp ->mpf; 2650 = ( BTREE_CURSOR *) dbc -> ; 2657 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 0, & h )) != 0) 2658 ( t ); 2661 `memt (& dbt , 0, ( DBT )); 2662 i(( t = `__db_t ( dbp , dbc -> txn , 2663 h , 0, & dbt , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 2664 r ; 2667 exa = 0; 2668 t = `__bam_ch ( dbc , PGNO_INVALID , 2669 & dbt , SR_KEYFIRST , 1, NULL , & exa ); 2671 r : 2672 i(( t_t = `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 2673 t = t_t ; 2675 ( t ); 2676 } } 2684 $__bam_isd ( dbc , pgn ) 2685 DBC * dbc ; 2686 db_pgno_t * pgn ; 2688 BOVERFLOW * bo ; 2690 i( `TYPE ( dbc -> -> ge ! P_LBTREE ) 2693 bo = `GET_BOVERFLOW ( dbc -> dbp , 2694 dbc -> -> ge , dbc->-> dx + O_INDX ); 2695 i( `B_TYPE ( bo -> ty = B_DUPLICATE ) { 2696 * pgn = bo -> pgno ; 2700 } } 2708 $__bam_d_exis ( dbc , pgno ) 2709 DBC * dbc ; 2710 db_pgno_t pgno ; 2712 PAGE * h ; 2713 t ; 2715 i(( t = `__memp_fg ( dbc -> dbp -> mpf , & pgno , dbc-> txn , 0, & h )) != 0) 2716 ( t ); 2723 i( `NUM_ENT ( h ) == 0) 2724 t = 0; 2726 t = DB_KEYEXIST ; 2728 () `__memp_ut ( dbc -> dbp -> mpf , h , dbc-> iܙy ); 2730 ( t ); 2731 } } @../btree/bt_delete.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 49 ~"dbc/lock.h " 50 ~"dbc/mp.h " 59 $__bam_dem ( dbc , h , dx ) 60 DBC * dbc ; 61 PAGE * h ; 62 u_t32_t dx ; 64 BINTERNAL * bi ; 65 BKEYDATA * bk ; 66 DB * dbp ; 67 u_t32_t nbys ; 68 t ; 69 db_dx_t * p ; 71 dbp = dbc ->dbp; 72 p = `P_INP ( dbp , h ); 75 `DB_ASSERT ( dbp -> dbv , `IS_DIRTY ( h )); 77 `TYPE ( h )) { 78 P_IBTREE : 79 bi = `GET_BINTERNAL ( dbp , h , dx ); 80 `B_TYPE ( bi -> ty )) { 81 B_DUPLICATE : 82 B_KEYDATA : 83 nbys = `BINTERNAL_SIZE ( bi -> n ); 85 B_OVERFLOW : 86 nbys = `BINTERNAL_SIZE ( bi -> n ); 87 i(( t = 88 `__db_doff ( dbc , (( BOVERFLOW *) bi -> da )-> pgno )) != 0) 89 ( t ); 92 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( h ))); 95 P_IRECNO : 96 nbys = RINTERNAL_SIZE ; 98 P_LBTREE : 108 i(( dx % 2) == 0) { 115 i( dx + P_INDX < ( u_t32_t ) `NUM_ENT ( h ) && 116 p [ dx ] =p[dx + P_INDX ]) 117 ( `__bam_adjdx ( dbc , 118 h , dx , indx + O_INDX , 0)); 124 i( dx > 0 && p [dx] =p[dx - P_INDX ]) 125 ( `__bam_adjdx ( dbc , 126 h , dx , indx - P_INDX , 0)); 129 P_LDUP : 130 P_LRECNO : 131 bk = `GET_BKEYDATA ( dbp , h , dx ); 132 `B_TYPE ( bk -> ty )) { 133 B_DUPLICATE : 134 nbys = BOVERFLOW_SIZE ; 136 B_OVERFLOW : 137 nbys = BOVERFLOW_SIZE ; 138 i(( t = `__db_doff ( 139 dbc , ( `GET_BOVERFLOW ( dbp , h , dx ))-> pgno )) != 0) 140 ( t ); 142 B_KEYDATA : 143 nbys = `BKEYDATA_SIZE ( bk -> n ); 146 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( h ))); 150 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( h ))); 154 i(( t = `__db_dem ( dbc , h , dx , nbys )) != 0) 155 ( t ); 158 } } 167 $__bam_adjdx ( dbc , h , dx , dx_cy , is_ ) 168 DBC * dbc ; 169 PAGE * h ; 170 u_t32_t dx , dx_cy ; 171 is_ ; 173 DB * dbp ; 174 db_dx_t cy , * p ; 175 t ; 177 dbp = dbc ->dbp; 178 p = `P_INP ( dbp , h ); 181 i( `DBC_LOGGING ( dbc )) { 182 i(( t = `__bam_adj_log ( dbp , dbc -> txn , & `LSN ( h ), 0, 183 `PGNO ( h ), & `LSN (h), dx , dx_cy , ( u_t32_t ) is_ )) != 0) 184 ( t ); 186 `LSN_NOT_LOGGED ( `LSN ( h )); 189 i( is_ ) { 190 cy = p [ dx_cy ]; 191 i( dx ! `NUM_ENT ( h )) 192 `memmove (& p [ dx + O_INDX ], &inp[indx], 193 ( db_dx_t * ( `NUM_ENT ( h - dx )); 194 p [ dx ] = cy ; 195 ++ `NUM_ENT ( h ); 197 -- `NUM_ENT ( h ); 198 i( dx ! `NUM_ENT ( h )) 199 `memmove (& p [ dx ], &p[dx + O_INDX ], 200 ( db_dx_t * ( `NUM_ENT ( h - dx )); 204 } } 213 $__bam_dges ( dbc , u_t , upde ) 214 DBC * dbc ; 215 u_t ; 216 upde ; 218 BINTERNAL * bi ; 219 BTREE_CURSOR * ; 220 DB * dbp ; 221 DBT a , b ; 222 DB_LOCK c_lock , p_lock ; 223 DB_MPOOLFILE * mpf ; 224 EPG * g , * ve_ , * ack_g ; 225 PAGE * chd , * ; 226 db_dx_t nems ; 227 db_pgno_t pgno , ro_pgno ; 228 db_o_t rt ; 229 de , t , t_t ; 231 dbp = dbc ->dbp; 232 mpf = dbp ->mpf; 233 = ( BTREE_CURSOR *) dbc -> ; 234 nems = 0; 235 pgno = PGNO_INVALID ; 247 t = 0; 248 i( u_t ) 249 ack_g = -> ; 251 ack_g = -> c ; sck_g > cp-> ; --stack_epg) 252 i( `NUM_ENT ( ack_g -> ge ) > 1) 254 g = ack_g ; 264 i( `LEVEL ( -> c -> ge ) == 1 && 265 ( t = `__bam_lk ( dbc , -> c -> ge , PGNO_INVALID )) != 0) 266 disrd ; 276 i(( t = `__memp_dty ( mpf , 277 & g -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 278 disrd ; 279 i(( t = `__bam_dem ( dbc , g -> ge ,pg-> dx )) != 0) 280 disrd ; 281 i(( t = `__bam__di ( dbc , `PGNO ( g -> ge ),pg-> dx , -1)) != 0) 282 disrd ; 284 i( upde && g -> dx == 0) { 285 ve_ = -> c ; 286 -> c = g ; 287 t = `__bam_pupde ( dbc , g -> ge ); 288 -> c = ve_ ; 289 i( t != 0) 290 disrd ; 293 pgno = `PGNO ( g -> ge ); 294 nems = `NUM_ENT ( g -> ge ); 296 t = `__memp_ut ( mpf , g -> ge , dbc -> iܙy ); 297 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 298 t = t_t ; 299 i( t != 0) 300 r_c ; 303 disrd : g = -> ;pg < ack_g ; ++epg) { 304 i(( t_t = `__memp_ut ( mpf , 305 g -> ge , dbc -> iܙy )!0 && t == 0) 306 t = t_t ; 307 g -> ge = NULL ; 308 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 309 t = t_t ; 311 i( t != 0) 312 r ; 315 ++ g < -> c ) { 316 i(( t = `__memp_dty ( mpf , 317 & g -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 318 r ; 325 i( `NUM_ENT ( g -> ge ) != 0) { 326 `DB_ASSERT ( dbp -> dbv , `LEVEL ( g -> ge ) != 1); 328 i(( t = `__bam_dem ( dbc , g -> ge ,pg-> dx )) != 0) 329 r ; 337 i( `NUM_ENT ( g -> ge ) != 0) 338 r ; 341 t = `__db_ ( dbc , g -> ge ); 342 i( -> ge = g ->page) 343 -> ge = NULL ; 344 g -> ge = NULL ; 345 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 346 t = t_t ; 347 i( t != 0) 348 r_c ; 352 r_c : ++ g ; 353 r : ; g < -> c ; ++epg) { 354 i( g -> ge ! NULL ) 355 () `__memp_ut ( mpf , 356 g -> ge , dbc -> iܙy ); 357 () `__TLPUT ( dbc , g -> lock ); 359 `BT_STK_CLR ( ); 360 ( t ); 362 `BT_STK_CLR ( ); 370 ro_pgno = -> ro ; 371 i( pgno ! ro_pgno || nems != 1) 374 de = 0; !done;) { 376 = chd = NULL ; 377 `LOCK_INIT ( p_lock ); 378 `LOCK_INIT ( c_lock ); 381 pgno = ro_pgno ; 382 i(( t = 383 `__db_lg ( dbc , 0, pgno , DB_LOCK_WRITE , 0, & p_lock )) != 0) 384 ; 385 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 386 DB_MPOOL_DIRTY , & )) != 0) 387 ; 389 i( `NUM_ENT ( ) != 1) 390 ; 392 `TYPE ( )) { 393 P_IBTREE : 398 bi = `GET_BINTERNAL ( dbp , , 0); 399 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) 400 i(( t = `__db_doff ( dbc , 401 (( BOVERFLOW *) bi -> da )-> pgno )) != 0) 402 ; 403 pgno = bi ->pgno; 405 P_IRECNO : 406 pgno = `GET_RINTERNAL ( dbp , , 0)->pgno; 409 ; 413 i(( t = 414 `__db_lg ( dbc , 0, pgno , DB_LOCK_WRITE , 0, & c_lock )) != 0) 415 ; 416 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 417 DB_MPOOL_DIRTY , & chd )) != 0) 418 ; 421 i( `DBC_LOGGING ( dbc )) { 422 `memt (& a , 0, (a)); 423 a . da = chd ; 424 a . size = dbp -> pgsize ; 425 `memt (& b , 0, (b)); 426 b . da = `P_ENTRY ( dbp , , 0); 427 b . size = `TYPE ( = P_IRECNO ? RINTERNAL_SIZE : 428 `BINTERNAL_SIZE ((( BINTERNAL *) b . da )-> n ); 429 i(( t = `__bam_rl_log ( dbp , dbc -> txn , 430 & chd -> l , 0, `PGNO (chd), & a , PGNO( ), 431 `RE_NREC ( ), & b , &-> l )) != 0) 432 ; 434 `LSN_NOT_LOGGED ( chd -> l ); 447 `COMPQUIET ( rt , 0); 448 i( `F_ISSET ( , C_RECNUM && `LEVEL ( chd > LEAFLEVEL ) 449 rt = `RE_NREC ( ); 450 `memy ( , chd , dbp -> pgsize ); 451 `PGNO ( ro_pgno ; 452 i( `F_ISSET ( , C_RECNUM && `LEVEL ( chd > LEAFLEVEL ) 453 `RE_NREC_SET ( , rt ); 456 i(( t = `__bam__rl ( dbc , `PGNO ( chd ), ro_pgno )) != 0) 457 ; 464 i(( t = `__db_ ( dbc , chd )) != 0) { 465 chd = NULL ; 466 ; 468 chd = NULL ; 471 : de = 1; 473 i(( t_t = `__TLPUT ( dbc , p_lock )!0 && t == 0) 474 t = t_t ; 475 i( ! NULL && 476 ( t_t = `__memp_ut ( mpf , 477 , dbc -> iܙy )!0 && t == 0) 478 t = t_t ; 479 i(( t_t = `__TLPUT ( dbc , c_lock )!0 && t == 0) 480 t = t_t ; 481 i( chd ! NULL && 482 ( t_t = `__memp_ut ( mpf , 483 chd , dbc -> iܙy )!0 && t == 0) 484 t = t_t ; 487 ( t ); 488 } } 497 $__bam_lk ( dbc , g , w_pgno ) 498 DBC * dbc ; 499 PAGE * g ; 500 db_pgno_t w_pgno ; 502 DB * dbp ; 503 PAGE * , * ; 504 DB_LOCK l , l ; 505 DB_LSN * Ƣp , * p , t_l ; 506 DB_MPOOLFILE * mpf ; 507 t , t_t ; 509 dbp = dbc ->dbp; 510 = = NULL ; 511 `LOCK_INIT ( l ); 512 `LOCK_INIT ( l ); 513 Ƣp = p = NULL ; 514 mpf = dbp ->mpf; 515 t = 0; 522 i( g -> xt_pgno ! PGNO_INVALID ) { 523 i(( t = `__db_lg ( dbc , 524 0, g -> xt_pgno , DB_LOCK_WRITE , 0, & l )) != 0) 525 r ; 526 i(( t = `__memp_fg ( mpf , & g -> xt_pgno , dbc -> txn , 527 DB_MPOOL_DIRTY , & )) != 0) { 528 t = `__db_pgr ( dbp , g -> xt_pgno ,et); 529 r ; 531 Ƣp = & -> l ; 533 i( g -> ev_pgno ! PGNO_INVALID ) { 534 i(( t = `__db_lg ( dbc , 535 0, g -> ev_pgno , DB_LOCK_WRITE , 0, & l )) != 0) 536 r ; 537 i(( t = `__memp_fg ( mpf , & g -> ev_pgno , 538 dbc -> txn , DB_MPOOL_DIRTY , & )) != 0) { 539 t = `__db_pgr ( dbp , g -> ev_pgno ,et); 540 r ; 542 p = & -> l ; 546 i( `DBC_LOGGING ( dbc )) { 547 i(( t = `__bam_lk_log ( dbp , dbc -> txn , & t_l , 0, 548 g -> pgno , w_pgno ,ag-> ev_pgno , p , 549 g -> xt_pgno , Ƣp )) != 0) 550 r ; 552 `LSN_NOT_LOGGED ( t_l ); 553 i( ! NULL ) 554 -> l = t_l ; 555 i( ! NULL ) 556 -> l = t_l ; 561 i( ! NULL ) { 562 i( w_pgno = PGNO_INVALID ) 563 -> ev_pgno = g ->prev_pgno; 565 -> ev_pgno = w_pgno ; 566 t = `__memp_ut ( mpf , , dbc -> iܙy ); 567 i(( t_t = `__TLPUT ( dbc , l )!0 && t == 0) 568 t = t_t ; 569 i( t != 0) 570 r ; 573 i( ! NULL ) { 574 i( w_pgno = PGNO_INVALID ) 575 -> xt_pgno = g ->next_pgno; 577 -> xt_pgno = w_pgno ; 578 t = `__memp_ut ( mpf , , dbc -> iܙy ); 579 i(( t_t = `__TLPUT ( dbc , l )!0 && t == 0) 580 t = t_t ; 581 i( t != 0) 582 r ; 586 r : i( ! NULL ) 587 () `__memp_ut ( mpf , , dbc -> iܙy ); 588 () `__TLPUT ( dbc , l ); 589 i( ! NULL ) 590 () `__memp_ut ( mpf , , dbc -> iܙy ); 591 () `__TLPUT ( dbc , l ); 592 ( t ); 593 } } 602 $__bam_pupde ( dbc , g ) 603 DBC * dbc ; 604 PAGE * g ; 606 BTREE_CURSOR * ; 607 DB_ENV * dbv ; 608 EPG * g ; 609 t ; 611 dbv = dbc -> dbp ->dbenv; 612 = ( BTREE_CURSOR *) dbc -> ; 613 t = 0; 621 g = & -> c [-1];pg >-> ;pg--) { 622 i(( t = `__memp_dty ( dbc -> dbp -> mpf , 623 & g -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 624 ( t ); 625 i(( t = `__bam_dem ( dbc , g -> ge ,pg-> dx )) != 0) 626 ( t ); 627 g -> dx --; 628 i(( t = `__bam_p ( dbc , g , 0, 629 g , g [1]. ge , BPI_NORECNUM )) != 0) { 630 i( t = DB_NEEDSPLIT ) { 632 `__db_rx ( dbv , 634 dbc -> dbp -> ame , ( u_lg ) `PGNO ( g -> ge )); 635 t = `__db_nic ( dbv , EINVAL ); 637 ( t ); 640 ( t ); 641 } } @../btree/bt_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/qam.h " 16 __bam_t_bt_mkey __P (( DB *, u_t32_t )); 17 __bam_t_bt_efix 18 __P (( DB *, $size_t (*)( DB *, cڡ DBT *, const DBT *))); 19 __m_g__dim `__P (( DB *, *)); 20 __m_t__dim `__P (( DB *, )); 21 __m_t__n `__P (( DB *, u_t32_t )); 22 __m_t__d `__P (( DB *, )); 23 __m_g__sour `__P (( DB *, const **)); 24 __m_t__sour `__P (( DB *, const *)); 33 $__bam_db_ ( dbp ) 34 DB * dbp ; 36 BTREE * t ; 37 t ; 40 i(( t = `__os_oc ( dbp -> dbv , 1, ( BTREE ), & t )) != 0) 41 ( t ); 42 dbp -> bt_ = t ; 44 t -> bt_mkey = DEFMINKEYPAGE ; 45 t -> bt_com = __bam_defcmp ; 46 t -> bt_efix = __bam_defx ; 48 dbp -> t_bt_com = __bam_t_bt_com ; 49 dbp -> g_bt_mkey = __bam_g_bt_mkey ; 50 dbp -> t_bt_mkey = __bam_t_bt_mkey ; 51 dbp -> t_bt_efix = __bam_t_bt_efix ; 53 t -> _d = ' '; 54 t -> _dim = '\n'; 55 t -> _eof = 1; 57 dbp -> g__dim = __m_g__dim ; 58 dbp -> t__dim = __m_t__dim ; 59 dbp -> g__n = __m_g__n ; 60 dbp -> t__n = __m_t__n ; 61 dbp -> g__d = __m_g__d ; 62 dbp -> t__d = __m_t__d ; 63 dbp -> g__sour = __m_g__sour ; 64 dbp -> t__sour = __m_t__sour ; 67 } } 76 $__bam_db_o ( dbp ) 77 DB * dbp ; 79 BTREE * t ; 81 i(( t = dbp -> bt_ = NULL ) 85 i( t -> _ ! NULL ) 86 () `fo ( t -> _ ); 89 i( t -> _sour ! NULL ) 90 `__os_ ( dbp -> dbv , t -> _sour ); 92 `__os_ ( dbp -> dbv , t ); 93 dbp -> bt_ = NULL ; 96 } } 105 $__bam_m_ags ( dbp , ag , outag ) 106 DB * dbp ; 107 u_t32_t * ag , * outag ; 109 `COMPQUIET ( dbp , NULL ); 111 i( `FLD_ISSET (* ag , DB_DUP )) { 112 `FLD_SET (* outag , DB_AM_DUP ); 113 `FLD_CLR (* ag , DB_DUP ); 115 i( `FLD_ISSET (* ag , DB_DUPSORT )) { 116 `FLD_SET (* outag , DB_AM_DUP | DB_AM_DUPSORT ); 117 `FLD_CLR (* ag , DB_DUPSORT ); 119 i( `FLD_ISSET (* ag , DB_RECNUM )) { 120 `FLD_SET (* outag , DB_AM_RECNUM ); 121 `FLD_CLR (* ag , DB_RECNUM ); 123 i( `FLD_ISSET (* ag , DB_REVSPLITOFF )) { 124 `FLD_SET (* outag , DB_AM_REVSPLITOFF ); 125 `FLD_CLR (* ag , DB_REVSPLITOFF ); 127 } } 136 $__bam_t_ags ( dbp , ag ) 137 DB * dbp ; 138 u_t32_t * ag ; 140 u_t32_t ags ; 142 ags = * ag ; 143 i( `LF_ISSET ( DB_DUP | DB_DUPSORT | DB_RECNUM | DB_REVSPLITOFF )) 144 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_flags"); 150 i( `LF_ISSET ( DB_DUP | DB_DUPSORT )) 151 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE | DB_OK_HASH ); 153 i( `LF_ISSET ( DB_RECNUM | DB_REVSPLITOFF )) 154 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 157 i( `LF_ISSET ( DB_DUP | DB_DUPSORT && `F_ISSET ( dbp , DB_AM_RECNUM )) 158 comt ; 161 i( `LF_ISSET ( DB_RECNUM && `F_ISSET ( dbp , DB_AM_DUP )) 162 comt ; 164 i( `LF_ISSET ( DB_DUPSORT && dbp -> dup_com = NULL ) 165 dbp -> dup_com = __bam_defcmp ; 167 `__bam_m_ags ( dbp , ag , &dbp-> ags ); 170 comt : 171 ( `__db_ ( dbp -> dbv , "DB->set_flags", 1)); 172 } } 182 $__bam_t_bt_com ( dbp , func ) 183 DB * dbp ; 184 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 186 BTREE * t ; 188 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_bt_compare"); 189 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 191 t = dbp -> bt_ ; 197 t -> bt_com = func ; 198 i( t -> bt_efix = __bam_defx ) 199 t -> bt_efix = NULL ; 202 } } 211 $__bam_g_bt_mkey ( dbp , bt_mkeyp ) 212 DB * dbp ; 213 u_t32_t * bt_mkeyp ; 215 BTREE * t ; 217 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 219 t = dbp -> bt_ ; 220 * bt_mkeyp = t -> bt_mkey ; 222 } } 229 $__bam_t_bt_mkey ( dbp , bt_mkey ) 230 DB * dbp ; 231 u_t32_t bt_mkey ; 233 BTREE * t ; 235 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_bt_minkey"); 236 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 238 t = dbp -> bt_ ; 240 i( bt_mkey < 2) { 241 `__db_rx ( dbp -> dbv , "minimum bt_minkey value is 2"); 242 ( EINVAL ); 245 t -> bt_mkey = bt_minkey; 247 } } 254 $__bam_t_bt_efix ( dbp , func ) 255 DB * dbp ; 256 $size_t (* func `__P (( DB *, cڡ DBT *, const DBT *)); 258 BTREE * t ; 260 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_bt_prefix"); 261 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 263 t = dbp -> bt_ ; 265 t -> bt_efix = func ; 267 } } 276 $__m_m_ags ( dbp , ag , outag ) 277 DB * dbp ; 278 u_t32_t * ag , * outag ; 280 `COMPQUIET ( dbp , NULL ); 282 i( `FLD_ISSET (* ag , DB_RENUMBER )) { 283 `FLD_SET (* outag , DB_AM_RENUMBER ); 284 `FLD_CLR (* ag , DB_RENUMBER ); 286 i( `FLD_ISSET (* ag , DB_SNAPSHOT )) { 287 `FLD_SET (* outag , DB_AM_SNAPSHOT ); 288 `FLD_CLR (* ag , DB_SNAPSHOT ); 290 } } 299 $__m_t_ags ( dbp , ag ) 300 DB * dbp ; 301 u_t32_t * ag ; 303 u_t32_t ags ; 305 ags = * ag ; 306 i( `LF_ISSET ( DB_RENUMBER | DB_SNAPSHOT )) { 307 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_flags"); 308 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 311 `__m_m_ags ( dbp , ag , &dbp-> ags ); 313 } } 320 $__m_g__dim ( dbp , _dimp ) 321 DB * dbp ; 322 * _dimp ; 324 BTREE * t ; 326 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 327 t = dbp -> bt_ ; 328 * _dimp = t -> _dim ; 330 } } 337 $__m_t__dim ( dbp , _dim ) 338 DB * dbp ; 339 _dim ; 341 BTREE * t ; 343 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_re_delim"); 344 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 346 t = dbp -> bt_ ; 348 t -> _dim =e_delim; 349 `F_SET ( dbp , DB_AM_DELIMITER ); 352 } } 361 $__m_g__n ( dbp , _ ) 362 DB * dbp ; 363 u_t32_t * _ ; 365 BTREE * t ; 366 QUEUE * q ; 368 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE | DB_OK_RECNO ); 377 i( dbp -> ty = DB_QUEUE ) { 378 q = dbp -> q_ ; 379 * _ = q -> _n ; 381 t = dbp -> bt_ ; 382 * _ = t -> _n ; 386 } } 393 $__m_t__n ( dbp , _n ) 394 DB * dbp ; 395 u_t32_t _n ; 397 BTREE * t ; 398 QUEUE * q ; 400 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_re_len"); 401 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE | DB_OK_RECNO ); 403 t = dbp -> bt_ ; 404 t -> _n =e_len; 406 q = dbp -> q_ ; 407 q -> _n =e_len; 409 `F_SET ( dbp , DB_AM_FIXEDLEN ); 412 } } 421 $__m_g__d ( dbp , _dp ) 422 DB * dbp ; 423 * _dp ; 425 BTREE * t ; 426 QUEUE * q ; 428 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE | DB_OK_RECNO ); 437 i( dbp -> ty = DB_QUEUE ) { 438 q = dbp -> q_ ; 439 * _dp = q -> _d ; 441 t = dbp -> bt_ ; 442 * _dp = t -> _d ; 446 } } 453 $__m_t__d ( dbp , _d ) 454 DB * dbp ; 455 _d ; 457 BTREE * t ; 458 QUEUE * q ; 460 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_re_pad"); 461 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE | DB_OK_RECNO ); 463 t = dbp -> bt_ ; 464 t -> _d =e_pad; 466 q = dbp -> q_ ; 467 q -> _d =e_pad; 469 `F_SET ( dbp , DB_AM_PAD ); 472 } } 479 $__m_g__sour ( dbp , _sourp ) 480 DB * dbp ; 481 cڡ ** _sourp ; 483 BTREE * t ; 485 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 487 t = dbp -> bt_ ; 488 * _sourp = t -> _sour ; 490 } } 497 $__m_t__sour ( dbp , _sour ) 498 DB * dbp ; 499 cڡ * _sour ; 501 BTREE * t ; 503 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_re_source"); 504 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 506 t = dbp -> bt_ ; 508 ( `__os_rdup ( dbp -> dbv , _sour , & t ->re_source)); 509 } } @../btree/bt_open.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/yo.h " 48 ~"dbc/db_ge.h " 49 ~"dbc/db_sw.h " 50 ~"dbc/b.h " 51 ~"dbc/lock.h " 52 ~"dbc/log.h " 53 ~"dbc/mp.h " 54 ~"dbc/f.h " 56 __bam__ma __P (( DB *, BTMETA *, db_pgno_t , DB_LSN *)); 66 $__bam_ݒ ( dbp , txn , me , ba_pgno , ags ) 67 DB * dbp ; 68 DB_TXN * txn ; 69 cڡ * me ; 70 db_pgno_t ba_pgno ; 71 u_t32_t ags ; 73 BTREE * t ; 75 `COMPQUIET ( me , NULL ); 76 t = dbp -> bt_ ; 83 i( t -> bt_com = __bam_defcmp &&-> bt_efix ! __bam_defx ) { 84 `__db_rx ( dbp -> dbv , 86 ( EINVAL ); 93 i( `B_MINKEY_TO_OVFLSIZE ( dbp , t -> bt_mkey , dbp-> pgsize ) > 94 `B_MINKEY_TO_OVFLSIZE ( dbp , DEFMINKEYPAGE , dbp-> pgsize )) { 95 `__db_rx ( dbp -> dbv , 97 ( u_lg ) t -> bt_mkey , (u_lg) dbp -> pgsize ); 98 ( EINVAL ); 102 ( `__bam_ad_ro ( dbp , txn , ba_pgno , ags )); 103 } } 111 $__bam_machk ( dbp , me , btm ) 112 DB * dbp ; 113 cڡ * me ; 114 BTMETA * btm ; 116 DB_ENV * dbv ; 117 u_t32_t vs ; 118 t ; 120 dbv = dbp ->dbenv; 126 vs = btm -> dbma . vsi ; 127 i( `F_ISSET ( dbp , DB_AM_SWAP )) 128 `M_32_SWAP ( vs ); 129 vs ) { 132 `__db_rx ( dbv , 134 me , ( u_lg ) vs ); 135 ( DB_OLD_VERSION ); 140 `__db_rx ( dbv , 141 "%s: unsu܋d b vsi: %lu", me , ( u_lg ) vs ); 142 ( EINVAL ); 146 i( `F_ISSET ( dbp , DB_AM_SWAP && ( t = `__bam_msw (( PAGE *) btm )) != 0) 147 ( t ); 153 i(( t = 154 `__db_fchk ( dbv , "DB->ݒ", btm -> dbma . ags , BTM_MASK )) != 0) 155 ( t ); 157 i( `F_ISSET (& btm -> dbma , BTM_RECNO )) { 158 i( dbp -> ty = DB_BTREE ) 159 wrg_ty ; 160 dbp -> ty = DB_RECNO ; 161 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 163 i( dbp -> ty = DB_RECNO ) 164 wrg_ty ; 165 dbp -> ty = DB_BTREE ; 166 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 169 i( `F_ISSET (& btm -> dbma , BTM_DUP )) 170 `F_SET ( dbp , DB_AM_DUP ); 172 i( `F_ISSET ( dbp , DB_AM_DUP )) { 173 `__db_rx ( dbv , 175 me ); 176 ( EINVAL ); 179 i( `F_ISSET (& btm -> dbma , BTM_RECNUM )) { 180 i( dbp -> ty ! DB_BTREE ) 181 wrg_ty ; 182 `F_SET ( dbp , DB_AM_RECNUM ); 184 i(( t = `__db_fcchk ( dbv , 185 "DB->ݒ", dbp -> ags , DB_AM_DUP , DB_AM_RECNUM )) != 0) 186 ( t ); 188 i( `F_ISSET ( dbp , DB_AM_RECNUM )) { 189 `__db_rx ( dbv , 191 me ); 192 ( EINVAL ); 195 i( `F_ISSET (& btm -> dbma , BTM_FIXEDLEN )) { 196 i( dbp -> ty ! DB_RECNO ) 197 wrg_ty ; 198 `F_SET ( dbp , DB_AM_FIXEDLEN ); 200 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) { 201 `__db_rx ( dbv , 203 me ); 204 ( EINVAL ); 207 i( `F_ISSET (& btm -> dbma , BTM_RENUMBER )) { 208 i( dbp -> ty ! DB_RECNO ) 209 wrg_ty ; 210 `F_SET ( dbp , DB_AM_RENUMBER ); 212 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) { 213 `__db_rx ( dbv , 215 me ); 216 ( EINVAL ); 219 i( `F_ISSET (& btm -> dbma , BTM_SUBDB )) 220 `F_SET ( dbp , DB_AM_SUBDB ); 222 i( `F_ISSET ( dbp , DB_AM_SUBDB )) { 223 `__db_rx ( dbv , 225 me ); 226 ( EINVAL ); 229 i( `F_ISSET (& btm -> dbma , BTM_DUPSORT )) { 230 i( dbp -> dup_com = NULL ) 231 dbp -> dup_com = __bam_defcmp ; 232 `F_SET ( dbp , DB_AM_DUPSORT ); 234 i( dbp -> dup_com ! NULL ) { 235 `__db_rx ( dbv , 237 me ); 238 ( EINVAL ); 242 dbp -> pgsize = btm -> dbma . gesize ; 245 `memy ( dbp -> feid , btm -> dbma . uid , DB_FILE_ID_LEN ); 249 wrg_ty : 250 i( dbp -> ty = DB_BTREE ) 251 `__db_rx ( dbv , 254 `__db_rx ( dbv , 256 ( EINVAL ); 257 } } 266 $__bam_ad_ro ( dbp , txn , ba_pgno , ags ) 267 DB * dbp ; 268 DB_TXN * txn ; 269 db_pgno_t ba_pgno ; 270 u_t32_t ags ; 272 BTMETA * ma ; 273 BTREE * t ; 274 DBC * dbc ; 275 DB_LOCK mock ; 276 DB_MPOOLFILE * mpf ; 277 t , t_t ; 279 `COMPQUIET ( ags , 0); 281 ma = NULL ; 282 t = dbp -> bt_ ; 283 `LOCK_INIT ( mock ); 284 mpf = dbp ->mpf; 285 t = 0; 288 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 289 ( t ); 292 i(( t = 293 `__db_lg ( dbc , 0, ba_pgno , DB_LOCK_READ , 0, & mock )) != 0) 294 r ; 295 i(( t = `__memp_fg ( mpf , & ba_pgno , dbc -> txn , 0, & ma )) != 0) 296 r ; 306 i( ma -> dbma . magic = DB_BTREEMAGIC ) { 307 t -> bt_mkey = ma -> mkey ; 308 t -> _d = () ma ->re_pad; 309 t -> _n = ma ->re_len; 311 t -> bt_ma = ba_pgno ; 312 t -> bt_ro = ma -> ro ; 314 `DB_ASSERT ( dbp -> dbv , 315 `IS_RECOVERING ( dbp -> dbv || `F_ISSET (dbp, DB_AM_RECOVER )); 327 t -> bt_gno = PGNO_INVALID ; 329 r : 330 i( ma ! NULL && 331 ( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 332 t = t_t ; 333 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 334 t = t_t ; 336 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 337 t = t_t ; 338 ( t ); 339 } } 348 $__bam__ma ( dbp , ma , pgno , lp ) 349 DB * dbp ; 350 BTMETA * ma ; 351 db_pgno_t pgno ; 352 DB_LSN * lp ; 354 DB_ENV * dbv ; 355 BTREE * t ; 357 dbv = dbp ->dbenv; 358 t = dbp -> bt_ ; 360 `memt ( ma , 0, ( BTMETA )); 361 ma -> dbma . l = * lp ; 362 ma -> dbma . pgno =gno; 363 ma -> dbma . magic = DB_BTREEMAGIC ; 364 ma -> dbma . vsi = DB_BTREEVERSION ; 365 ma -> dbma . gesize = dbp -> pgsize ; 366 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 367 `FLD_SET ( ma -> dbma . maags , DBMETA_CHKSUM ); 368 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 369 ma -> dbma . y_g = 370 (( DB_CIPHER *) dbv -> yo_hd )-> g ; 371 `DB_ASSERT ( dbv , ma -> dbma . y_g != 0); 372 ma -> yo_magic = ma-> dbma . magic ; 374 ma -> dbma . ty = P_BTREEMETA ; 375 ma -> dbma . = PGNO_INVALID ; 376 ma -> dbma . ϡ_pgno = pgno ; 377 i( `F_ISSET ( dbp , DB_AM_DUP )) 378 `F_SET (& ma -> dbma , BTM_DUP ); 379 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) 380 `F_SET (& ma -> dbma , BTM_FIXEDLEN ); 381 i( `F_ISSET ( dbp , DB_AM_RECNUM )) 382 `F_SET (& ma -> dbma , BTM_RECNUM ); 383 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) 384 `F_SET (& ma -> dbma , BTM_RENUMBER ); 385 i( `F_ISSET ( dbp , DB_AM_SUBDB )) 386 `F_SET (& ma -> dbma , BTM_SUBDB ); 387 i( dbp -> dup_com ! NULL ) 388 `F_SET (& ma -> dbma , BTM_DUPSORT ); 389 i( dbp -> ty = DB_RECNO ) 390 `F_SET (& ma -> dbma , BTM_RECNO ); 391 `memy ( ma -> dbma . uid , dbp -> feid , DB_FILE_ID_LEN ); 393 ma -> mkey = t -> bt_mkey ; 394 ma -> _n = t ->re_len; 395 ma -> _d = ( u_t32_t ) t ->re_pad; 396 } } 411 $__bam_w_fe ( dbp , txn , fhp , me ) 412 DB * dbp ; 413 DB_TXN * txn ; 414 DB_FH * fhp ; 415 cڡ * me ; 417 BTMETA * ma ; 418 DB_ENV * dbv ; 419 DB_LSN l ; 420 DB_MPOOLFILE * mpf ; 421 DB_PGINFO pgfo ; 422 DBT pdbt ; 423 PAGE * ro ; 424 db_pgno_t pgno ; 425 t , t_t ; 426 * buf ; 428 dbv = dbp ->dbenv; 429 mpf = dbp ->mpf; 430 ro = NULL ; 431 ma = NULL ; 432 buf = NULL ; 434 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 436 pgno = PGNO_BASE_MD ; 437 i(( t = `__memp_fg ( mpf , & pgno , txn , 438 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ma )) != 0) 439 ( t ); 440 `LSN_NOT_LOGGED ( l ); 441 `__bam__ma ( dbp , ma , PGNO_BASE_MD , & l ); 442 ma -> ro = 1; 443 ma -> dbma . ϡ_pgno = 1; 444 i(( t = 445 `__db_log_ge ( dbp , txn , & l , pgno , ( PAGE *) ma )) != 0) 446 r ; 447 t = `__memp_ut ( mpf , ma , dbp -> iܙy ); 448 ma = NULL ; 449 i( t != 0) 450 r ; 453 pgno = 1; 454 i(( t = `__memp_fg ( mpf , & pgno , 455 txn , DB_MPOOL_CREATE , & ro )) != 0) 456 r ; 457 `P_INIT ( ro , dbp -> pgsize , 1, PGNO_INVALID , PGNO_INVALID, 458 LEAFLEVEL , dbp -> ty = DB_RECNO ? P_LRECNO : P_LBTREE ); 459 `LSN_NOT_LOGGED ( ro -> l ); 460 i(( t = 461 `__db_log_ge ( dbp , txn , & ro -> l , pgno ,oot)) != 0) 462 r ; 463 t = `__memp_ut ( mpf , ro , dbp -> iܙy ); 464 ro = NULL ; 465 i( t != 0) 466 r ; 468 `memt (& pdbt , 0, (pdbt)); 471 pgfo . db_gesize = dbp -> pgsize ; 472 pgfo . ags = 473 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 474 pgfo . ty = dbp ->type; 475 pdbt . da = & pgfo ; 476 pdbt . size = ( pgfo ); 477 i(( t = `__os_oc ( dbv , 1, dbp -> pgsize , & buf )) != 0) 478 ( t ); 479 ma = ( BTMETA *) buf ; 480 `LSN_NOT_LOGGED ( l ); 481 `__bam__ma ( dbp , ma , PGNO_BASE_MD , & l ); 482 ma -> ro = 1; 483 ma -> dbma . ϡ_pgno = 1; 484 i(( t = `__db_pgout ( dbv , PGNO_BASE_MD , ma , & pdbt )) != 0) 485 r ; 486 i(( t = `__f_wre ( dbv , txn , me , DB_APP_DATA , fhp , 487 dbp -> pgsize , 0, 0, buf , dbp->pgsize, 1, `F_ISSET ( 488 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 489 r ; 490 ma = NULL ; 493 #ifde DIAGNOSTIC 494 `memt ( buf , CLEAR_BYTE , dbp -> pgsize ); 496 ro = ( PAGE *) buf ; 497 `P_INIT ( ro , dbp -> pgsize , 1, PGNO_INVALID , PGNO_INVALID, 498 LEAFLEVEL , dbp -> ty = DB_RECNO ? P_LRECNO : P_LBTREE ); 499 `LSN_NOT_LOGGED ( ro -> l ); 500 i(( t = `__db_pgout ( dbv , ro -> pgno ,o, & pdbt )) != 0) 501 r ; 502 i(( t = `__f_wre ( dbv , txn , me , DB_APP_DATA , fhp , 503 dbp -> pgsize , 1, 0, buf , dbp->pgsize, 1, `F_ISSET ( 504 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 505 r ; 506 ro = NULL ; 509 r : i( buf ! NULL ) 510 `__os_ ( dbv , buf ); 512 i( ma ! NULL && 513 ( t_t = `__memp_ut ( mpf , 514 ma , dbp -> iܙy )!0 && t == 0) 515 t = t_t ; 516 i( ro ! NULL && 517 ( t_t = `__memp_ut ( mpf , 518 ro , dbp -> iܙy )!0 && t == 0) 519 t = t_t ; 521 ( t ); 522 } } 531 $__bam_w_subdb ( mdbp , dbp , txn ) 532 DB * mdbp , * dbp ; 533 DB_TXN * txn ; 535 BTMETA * ma ; 536 DBC * dbc ; 537 DB_ENV * dbv ; 538 DB_LOCK mock ; 539 DB_LSN l ; 540 DB_MPOOLFILE * mpf ; 541 PAGE * ro ; 542 t , t_t ; 544 dbv = mdbp ->dbenv; 545 mpf = mdbp ->mpf; 546 dbc = NULL ; 547 ma = NULL ; 548 ro = NULL ; 550 i(( t = `__db_curs ( mdbp , txn , 551 & dbc , `CDB_LOCKING ( dbv ? DB_WRITECURSOR : 0)) != 0) 552 ( t ); 555 i(( t = `__db_lg ( dbc , 556 0, dbp -> ma_pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 557 r ; 558 i(( t = `__memp_fg ( mpf , & dbp -> ma_pgno , 559 txn , DB_MPOOL_CREATE , & ma )) != 0) 560 r ; 563 l = ma -> dbma .lsn; 564 `__bam__ma ( dbp , ma , dbp-> ma_pgno , & l ); 565 i(( t = `__db_log_ge ( mdbp , 566 txn , & ma -> dbma . l , dbp -> ma_pgno , ( PAGE *)meta)) != 0) 567 r ; 570 i(( t = `__db_w ( dbc , 571 dbp -> ty = DB_RECNO ? P_LRECNO : P_LBTREE , & ro )) != 0) 572 r ; 573 ro -> v = LEAFLEVEL ; 575 i( `DBENV_LOGGING ( dbv ) && 576 #i! `defed ( DEBUG_WOP ) 577 txn ! NULL && 580 ( t = `__bam_ro_log ( mdbp , txn , & ma -> dbma . l , 0, 581 ma -> dbma . pgno , ro ->pgno, &ma->dbma. l )) != 0) 582 r ; 584 ma -> ro =o-> pgno ; 585 i(( t = 586 `__db_log_ge ( mdbp , txn , & ro -> l ,o-> pgno ,oot)) != 0) 587 r ; 590 i(( t = `__memp_ut ( mpf , ma , dbc -> iܙy )) != 0) 591 r ; 592 ma = NULL ; 593 i(( t = `__memp_ut ( mpf , ro , dbc -> iܙy )) != 0) 594 r ; 595 ro = NULL ; 596 r : 597 i( ma ! NULL ) 598 i(( t_t = `__memp_ut ( mpf , 599 ma , dbc -> iܙy )!0 && t == 0) 600 t = t_t ; 601 i( ro ! NULL ) 602 i(( t_t = `__memp_ut ( mpf , 603 ro , dbc -> iܙy )!0 && t == 0) 604 t = t_t ; 605 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 606 t = t_t ; 607 i( dbc ! NULL ) 608 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 609 t = t_t ; 610 ( t ); 611 } } @../btree/bt_put.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 49 ~"dbc/mp.h " 51 __bam_bud 52 __P (( DBC *, u_t32_t , DBT *, PAGE *, u_int32_t, u_int32_t)); 53 __bam_dup_check __P (( DBC *, u_t32_t , 54 PAGE *, u_t32_t , u_t32_t, db_dx_t *)); 55 __bam_dup_cvt __P (( DBC *, PAGE *, u_t32_t , u_int32_t)); 56 __bam_ovput 57 __P (( DBC *, u_t32_t , db_pgno_t , PAGE *, u_t32_t, DBT *)); 58 u_t32_t 59 __bam_size __P (( DB *, u_t32_t , DBT *, PAGE *, u_int32_t)); 68 $__bam_iem ( dbc , key , da , , ags ) 69 DBC * dbc ; 70 DBT * key , * da ; 71 u_t32_t , ags ; 73 DB_ENV * dbv ; 74 BKEYDATA * bk , bk_tmp ; 75 BTREE * t ; 76 BTREE_CURSOR * ; 77 DB * dbp ; 78 DBT bk_hdr , tdbt ; 79 DB_MPOOLFILE * mpf ; 80 PAGE * h ; 81 db_dx_t t , dx ; 82 u_t32_t da_size , have_bys , ed_bys , eded , ges , gea ; 83 cmp , bigkey , bigda , d , dudju ; 84 dc , a , t , t_t , was_ded ; 86 `COMPQUIET ( t , 0); 88 dbp = dbc ->dbp; 89 dbv = dbp ->dbenv; 90 mpf = dbp ->mpf; 91 = ( BTREE_CURSOR *) dbc -> ; 92 t = dbp -> bt_ ; 93 h = -> ge ; 94 dx = ->indx; 95 d = dudju = a = was_ded = 0; 101 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN ) && 102 `F_ISSET ( da , DB_DBT_PARTIAL && da-> size !da-> dn ) 103 ( `__db_c_ ( dbv , da -> size , da-> dn )); 113 da_size = `F_ISSET ( da , DB_DBT_PARTIAL ) ? 114 `__bam_size ( dbp , , da , h , dx : da-> size ; 115 dc = 0; 116 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) { 117 i( da_size > t -> _n ) 118 ( `__db_c_toobig ( dbv , da_size , t -> _n )); 121 i(! `LF_ISSET ( BI_DELETED && da_size < t -> _n ) { 122 dc = 1; 123 da_size = t -> _n ; 131 i( dc || `F_ISSET ( da , DB_DBT_PARTIAL )) { 132 tdbt = * da ; 133 i(( t = 134 `__bam_bud ( dbc , , & tdbt , h , dx , da_size )) != 0) 135 ( t ); 136 da = & tdbt ; 146 i( = DB_CURRENT && dbp -> dup_com ! NULL ) { 147 i(( t = `__bam_cmp ( dbp , dbc -> txn , da , h , 148 dx + ( `TYPE ( h = P_LBTREE ? O_INDX : 0), 149 dbp -> dup_com , & cmp )) != 0) 150 ( t ); 151 i( cmp != 0) { 152 `__db_rx ( dbv , 154 ( EINVAL ); 162 eded = 0; 163 bigda = da_size > -> ovsize ; 164 ) { 165 DB_KEYFIRST : 167 bigkey = key -> size > -> ovsize ; 168 i( bigkey ) 169 eded + BOVERFLOW_PSIZE ; 171 eded + `BKEYDATA_PSIZE ( key -> size ); 172 i( bigda ) 173 eded + BOVERFLOW_PSIZE ; 175 eded + `BKEYDATA_PSIZE ( da_size ); 177 DB_AFTER : 178 DB_BEFORE : 179 DB_CURRENT : 190 bigkey = 0; 191 i( = DB_CURRENT ) { 192 bk = `GET_BKEYDATA ( dbp , h , 193 dx + ( `TYPE ( h = P_LBTREE ? O_INDX : 0)); 194 i( `B_TYPE ( bk -> ty = B_KEYDATA ) 195 have_bys = `BKEYDATA_PSIZE ( bk -> n ); 197 have_bys = BOVERFLOW_PSIZE ; 198 ed_bys = 0; 200 have_bys = 0; 201 ed_bys = ( db_dx_t ); 203 i( bigda ) 204 ed_bys + BOVERFLOW_PSIZE ; 206 ed_bys + `BKEYDATA_PSIZE ( da_size ); 208 i( have_bys < ed_bys ) 209 eded + ed_bys - have_bys ; 212 ( `__db_unknown_ag ( dbv , "DB->put", )); 216 i( `P_FREESPACE ( dbp , h < eded ) 217 ( DB_NEEDSPLIT ); 223 i( `F_ISSET ( dbp , DB_AM_DUP ) && 224 `TYPE ( h = P_LBTREE && ! DB_KEYFIRST && 225 `P_FREESPACE ( dbp , h - eded <dbp-> pgsize / 2 && 226 `__bam_dup_check ( dbc , , h , dx , eded , & t )) { 227 ges = 1; 228 dudju = 1; 230 ges = 0; 237 i( dbc -> txn = NULL && mpf -> m -> maxpgno != 0) { 238 gea = `P_MAXSPACE ( dbp , dbp-> pgsize ); 239 i( bigda ) 240 ges +(( da_size - 1/ gea ) + 1; 241 i( bigkey ) 242 ges +(( key -> size - 1/ gea ) + 1; 244 i( ges > ( mpf -> m -> maxpgno - mpf->m-> ϡ_pgno )) 245 ( `__db_a_r ( dbp )); 248 i(( t = `__memp_dty ( mpf , & h , dbc -> txn , dbc-> iܙy , 0)) != 0) 249 ( t ); 250 i( -> c -> ge == cp->page) 251 -> c -> ge = h ; 252 -> ge = h ; 263 ) { 264 DB_KEYFIRST : 265 i( bigkey ) { 266 i(( t = `__bam_ovput ( dbc , 267 B_OVERFLOW , PGNO_INVALID , h , dx , key )) != 0) 268 ( t ); 270 i(( t = `__db_pem ( dbc , h , dx , 271 `BKEYDATA_SIZE ( key -> size ), NULL , key)) != 0) 272 ( t ); 274 i(( t = `__bam__di ( dbc , `PGNO ( h ), dx , 1)) != 0) 275 ( t ); 276 ++ dx ; 278 DB_AFTER : 279 i( `TYPE ( h = P_LBTREE ) { 281 i(( t = 282 `__bam_adjdx ( dbc , h , dx + P_INDX , indx, 1)) != 0) 283 ( t ); 284 i(( t = 285 `__bam__di ( dbc , `PGNO ( h ), dx + P_INDX , 1)) != 0) 286 ( t ); 288 dx += 3; 290 -> dx += 2; 292 ++ dx ; 293 -> dx += 1; 296 DB_BEFORE : 297 i( `TYPE ( h = P_LBTREE ) { 299 i(( t = `__bam_adjdx ( dbc , h , dx , indx, 1)) != 0) 300 ( t ); 301 i(( t = `__bam__di ( dbc , `PGNO ( h ), dx , 1)) != 0) 302 ( t ); 304 ++ dx ; 307 DB_CURRENT : 315 i(( t = `__bam__de ( dbp , `PGNO ( h ), dx , 0, NULL )) != 0) 316 ( t ); 318 i( `TYPE ( h = P_LBTREE ) 319 ++ dx ; 320 bk = `GET_BKEYDATA ( dbp , h , dx ); 329 i( `TYPE ( h = P_LBTREE || TYPE(h= P_LDUP ) 330 was_ded = `B_DISSET ( bk -> ty ); 341 i( bigda || `B_TYPE ( bk -> ty ! B_KEYDATA ) { 342 i(( t = `__bam_dem ( dbc , h , dx )) != 0) 343 ( t ); 344 d = 1; 349 a = 1; 352 ( `__db_unknown_ag ( dbv , "DB->put", )); 356 i( bigda ) { 361 `DB_ASSERT ( dbv , ! `LF_ISSET ( BI_DELETED )); 362 t = `__bam_ovput ( dbc , 363 B_OVERFLOW , PGNO_INVALID , h , dx , da ); 365 i( `LF_ISSET ( BI_DELETED )) { 366 `B_TSET_DELETED ( bk_tmp . ty , B_KEYDATA ); 367 bk_tmp . n = da -> size ; 368 bk_hdr . da = & bk_tmp ; 369 bk_hdr . size = `SSZA ( BKEYDATA , da ); 370 t = `__db_pem ( dbc , h , dx , 371 `BKEYDATA_SIZE ( da -> size ), & bk_hdr , data); 372 } i( a ) 373 t = `__bam_rem ( dbc , h , dx , da ); 375 t = `__db_pem ( dbc , h , dx , 376 `BKEYDATA_SIZE ( da -> size ), NULL , data); 378 i( t != 0) { 379 i( d =1 && ( t_t = 380 `__bam__di ( dbc , `PGNO ( h ), dx + 1, -1)) != 0) { 381 `__db_r ( dbv , t_t , 383 ( `__db_nic ( dbv , t_t )); 385 ( t ); 392 i( ! DB_CURRENT ) { 393 i(( t = `__bam__di ( dbc , `PGNO ( h ), dx , 1)) != 0) 394 ( t ); 395 -> dx = `TYPE ( h = P_LBTREE ? indx - O_INDX : indx; 403 i( `F_ISSET ( , C_RECNUM && ( ! DB_CURRENT || was_ded )) 404 i(( t = `__bam_adju ( dbc , 1)) != 0) 405 ( t ); 413 i( dudju && 414 ( t = `__bam_dup_cvt ( dbc , h , dx - O_INDX , t )) != 0) 415 ( t ); 418 i( dbc -> dbty = DB_RECNO ) 419 t -> _modifd = 1; 421 ( t ); 422 } } 428 u_t32_t 429 $__bam_size ( dbp , , da , h , dx ) 430 DB * dbp ; 431 u_t32_t , dx ; 432 DBT * da ; 433 PAGE * h ; 435 BKEYDATA * bk ; 436 u_t32_t nbys ; 442 i( ! DB_CURRENT ) 443 ( da -> doff + da-> size ); 449 bk = `GET_BKEYDATA ( dbp , h , dx + ( `TYPE (h= P_LBTREE ? O_INDX : 0)); 450 nbys = 451 `B_TYPE ( bk -> ty = B_OVERFLOW ? (( BOVERFLOW *)bk)-> : bk-> n ; 453 ( `__db_size ( nbys , da )); 454 } } 461 $__bam_bud ( dbc , , dbt , h , dx , nbys ) 462 DBC * dbc ; 463 u_t32_t , dx , nbys ; 464 DBT * dbt ; 465 PAGE * h ; 467 BKEYDATA * bk , tbk ; 468 BOVERFLOW * bo ; 469 BTREE * t ; 470 DB * dbp ; 471 DBT cy , * rda ; 472 u_t32_t n , ; 473 u_t8_t * p ; 474 t ; 476 `COMPQUIET ( bo , NULL ); 478 dbp = dbc ->dbp; 479 t = dbp -> bt_ ; 482 rda = & dbc -> my_rda ; 483 i( rda -> un < nbys ) { 484 i(( t = `__os_loc ( dbp -> dbv , 485 nbys , & rda -> da )) != 0) { 486 rda -> un = 0; 487 rda -> da = NULL ; 488 ( t ); 490 rda -> un = nbys ; 497 `memt ( rda -> da , 498 `F_ISSET ( dbp , DB_AM_FIXEDLEN ? t -> _d : 0, nbys ); 509 i(! `F_ISSET ( dbt , DB_DBT_PARTIAL || ! DB_CURRENT ) { 510 p = ( u_t8_t *) rda -> da + dbt -> doff ; 511 = dbt -> doff ; 512 ur_cy ; 516 i( dx < `NUM_ENT ( h )) { 517 bk = `GET_BKEYDATA ( dbp , h , dx + ( `TYPE (h= P_LBTREE ? 518 O_INDX : 0)); 519 bo = ( BOVERFLOW *) bk ; 521 bk = & tbk ; 522 `B_TSET ( bk -> ty , B_KEYDATA ); 523 bk -> n = 0; 525 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 530 `memt (& cy , 0, (copy)); 531 i(( t = `__db_goff ( dbp , dbc -> txn , & cy , bo -> , 532 bo -> pgno , & rda -> da , &rda-> un )) != 0) 533 ( t ); 536 = dbt -> doff ; 537 p = ( u_t8_t *) rda -> da + dbt -> doff ; 550 i( bo -> > dbt -> doff + dbt-> dn ) { 551 n = bo -> - ( dbt -> doff + dbt-> dn ); 552 i( dbt -> dn !dbt-> size ) 553 `memmove ( p + dbt -> size , + dbt-> dn , n ); 554 + n ; 558 `memy ( rda -> da , 559 bk -> da , dbt -> doff > bk-> n ? bk->len : dbt->doff); 560 = dbt -> doff ; 561 p = ( u_t8_t *) rda -> da + dbt -> doff ; 564 n = dbt -> doff + dbt-> dn ; 565 i( bk -> n >en) { 566 `memy ( p + dbt -> size , bk -> da + n , bk->len -en); 567 + bk -> n -en; 571 ur_cy : 576 `memy ( p , dbt -> da , dbt-> size ); 577 + dbt -> size ; 580 rda -> size = `F_ISSET ( dbp , DB_AM_FIXEDLEN ? t -> _n : ; 581 rda -> dn = 0; 582 rda -> doff = 0; 583 rda -> ags = 0; 584 * dbt = * rda ; 586 } } 595 $__bam_rem ( dbc , h , dx , da ) 596 DBC * dbc ; 597 PAGE * h ; 598 u_t32_t dx ; 599 DBT * da ; 601 BKEYDATA * bk ; 602 DB * dbp ; 603 DBT ig , ; 604 db_dx_t t , lo , , m , off , efix , suffix ; 605 t32_t nbys ; 606 t ; 607 db_dx_t * p ; 608 u_t8_t * p , * t ; 610 dbp = dbc ->dbp; 617 bk = `GET_BKEYDATA ( dbp , h , dx ); 620 i( `DBC_LOGGING ( dbc )) { 626 m = da -> size < bk -> n ? data->size : bk->len; 627 efix = 0, 628 p = bk -> da , t = data->data; 629 efix < m && * p =* t ; ++prefix, ++p, ++t) 632 m - efix ; 633 suffix = 0, 634 p = ( u_t8_t *) bk -> da + bk-> n - 1, 635 t = ( u_t8_t *) da ->d+ da-> size - 1; 636 suffix < m && * p =* t ; ++suffix, --p, --t) 640 ig . da = ( u_t8_t *) bk ->d+ efix ; 641 ig . size = bk -> n - ( efix + suffix ); 642 . da = ( u_t8_t *)da->d+ efix ; 643 . size = da ->siz- ( efix + suffix ); 644 i(( t = `__bam__log ( dbp , dbc -> txn , & `LSN ( h ), 0, `PGNO (h), 645 & `LSN ( h ), ( u_t32_t ) dx , (u_t32_t) `B_DISSET ( bk -> ty ), 646 & ig , & , ( u_t32_t ) efix , (u_t32_t) suffix )) != 0) 647 ( t ); 649 `LSN_NOT_LOGGED ( `LSN ( h )); 655 p = `P_INP ( dbp , h ); 656 p = ( u_t8_t *) h + `HOFFSET (h); 657 t = ( u_t8_t *) bk ; 665 lo = `BKEYDATA_SIZE ( bk -> n ); 666 = ( db_dx_t ) `BKEYDATA_SIZE ( da -> size ); 667 i( lo ! ) { 668 nbys = lo - ; 669 i( p = t ) 670 p [ dx ] + nbys ; 672 `memmove ( p + nbys ,, ( size_t )( t -)); 675 off = p [ dx ]; 676 t = 0; c < `NUM_ENT ( h ); ++cnt) 677 i( p [ t ] < off ) 678 p [ t ] + nbys ; 682 `HOFFSET ( h + nbys ; 683 t + nbys ; 687 bk = ( BKEYDATA *) t ; 688 `B_TSET ( bk -> ty , B_KEYDATA ); 689 bk -> n = da -> size ; 690 `memy ( bk -> da , da->da, da-> size ); 693 } } 700 $__bam_dup_check ( dbc , , h , dx , sz , ) 701 DBC * dbc ; 702 u_t32_t ; 703 PAGE * h ; 704 u_t32_t dx , sz ; 705 db_dx_t * ; 707 BKEYDATA * bk ; 708 DB * dbp ; 709 db_dx_t t , f , * p ; 711 dbp = dbc ->dbp; 712 p = `P_INP ( dbp , h ); 718 dx > 0 && p [dx] =p[dx - P_INDX ]) 719 dx - P_INDX ; 722 bk = `GET_BKEYDATA ( dbp , h , dx ); 723 sz + `B_TYPE ( bk -> ty = B_KEYDATA ? 724 `BKEYDATA_PSIZE ( bk -> n : BOVERFLOW_PSIZE ; 727 f = dx ; 736 t = = DB_CURRENT ? 0 : 1; 737 f = dx ; 738 dx < `NUM_ENT ( h && p [ f ] == inp[indx]; 739 ++ t , dx + P_INDX ) { 740 bk = `GET_BKEYDATA ( dbp , h , dx + O_INDX ); 741 sz + `B_TYPE ( bk -> ty = B_KEYDATA ? 742 `BKEYDATA_PSIZE ( bk -> n : BOVERFLOW_PSIZE ; 752 i( t == 1) 761 i( sz < dbp -> pgsize / 4) 764 * = t ; 766 } } 773 $__bam_dup_cvt ( dbc , h , dx , t ) 774 DBC * dbc ; 775 PAGE * h ; 776 u_t32_t dx , t ; 778 BKEYDATA * bk ; 779 DB * dbp ; 780 DBT hdr ; 781 DB_MPOOLFILE * mpf ; 782 PAGE * dp ; 783 db_dx_t dx , ddx , f , * p ; 784 t , t_t ; 786 dbp = dbc ->dbp; 787 mpf = dbp ->mpf; 788 p = `P_INP ( dbp , h ); 791 dx > 0 && p [dx] =p[dx - P_INDX ]) 792 dx - P_INDX ; 795 i(( t = `__db_w ( dbc , 796 dbp -> dup_com = NULL ? P_LRECNO : P_LDUP , & dp )) != 0) 797 ( t ); 798 `P_INIT ( dp , dbp -> pgsize , dp-> pgno , 799 PGNO_INVALID , PGNO_INVALID, LEAFLEVEL , `TYPE ( dp )); 806 `memt (& hdr , 0, (hdr)); 807 f = dx ; 808 ddx = dx ; 809 dx = 0; 812 i(( t = `__bam__dup ( dbc , f , 813 `PGNO ( h ), dx , PGNO( dp ), dx )) != 0) 814 r ; 825 bk = `GET_BKEYDATA ( dbp , h , ddx + 1); 826 hdr . da = bk ; 827 hdr . size = `B_TYPE ( bk -> ty = B_KEYDATA ? 828 `BKEYDATA_SIZE ( bk -> n : BOVERFLOW_SIZE ; 829 i( dbp -> dup_com = NULL && `B_DISSET ( bk -> ty )) { 835 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 836 ( t = `__db_doff ( dbc , 837 ( `GET_BOVERFLOW ( dbp , h , ddx + 1))-> pgno )) != 0) 838 r ; 840 i(( t = `__db_pem ( 841 dbc , dp , dx , hdr . size , &hdr, NULL )) != 0) 842 r ; 843 ++ dx ; 846 i( t != 1) { 847 i(( t = `__bam_adjdx ( dbc , 848 h , ddx , f + 1, 0)) != 0) 849 r ; 851 ddx ++; 854 i(( t = `__db_dem ( dbc , h , ddx , hdr . size )) != 0) 855 r ; 856 dx + P_INDX ; 857 } -- t ); 860 i(( t = `__bam_ovput ( dbc , 861 B_DUPLICATE , dp -> pgno , h , f + 1, NULL )) != 0) 862 r ; 865 t = `__bam__di ( dbc , 866 `PGNO ( h ), f + P_INDX , ()(f + P_INDX - dx )); 868 r : i(( t_t = `__memp_ut ( mpf , dp , dbc -> iܙy )!0 && t == 0) 869 t = t_t ; 871 ( t ); 872 } } 880 $__bam_ovput ( dbc , ty , pgno , h , dx , em ) 881 DBC * dbc ; 882 u_t32_t ty , dx ; 883 db_pgno_t pgno ; 884 PAGE * h ; 885 DBT * em ; 887 BOVERFLOW bo ; 888 DBT hdr ; 889 t ; 891 `UMRW_SET ( bo . unud1 ); 892 `B_TSET ( bo . ty ,ype); 893 `UMRW_SET ( bo . unud2 ); 900 i( ty = B_OVERFLOW ) { 901 i(( t = `__db_poff ( dbc , em , & bo . pgno )) != 0) 902 ( t ); 903 bo . = em -> size ; 905 bo . pgno =gno; 906 bo . = 0; 910 `memt (& hdr , 0, (hdr)); 911 hdr . da = & bo ; 912 hdr . size = BOVERFLOW_SIZE ; 913 ( `__db_pem ( dbc , h , dx , BOVERFLOW_SIZE , & hdr , NULL )); 914 } } @../btree/bt_rec.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 18 #IS_BTREE_PAGE ( g ) \ 19 ( `TYPE ( g = P_IBTREE || \ 20 `TYPE ( g = P_LBTREE || TYPEag= P_LDUP ) ) 30 $__bam_l_cov ( dbv , db , lp , , fo ) 31 DB_ENV * dbv ; 32 DBT * db ; 33 DB_LSN * lp ; 34 db_cs ; 35 * fo ; 37 __bam_l_gs * gp ; 38 DB * fe_dbp ; 39 DBC * dbc ; 40 DB_MPOOLFILE * mpf ; 41 PAGE * _ , * , * , * , * _ , * , * ; 42 db_pgno_t pgno , ro_pgno ; 43 u_t32_t y ; 44 cmp , l_upde , p_upde , r_upde , rc , t , ro٥l , t_t ; 46 `REC_PRINT ( __bam_l_t ); 48 mpf = NULL ; 49 _ = = = = _ = = NULL ; 50 = NULL ; 52 `REC_INTRO ( __bam_l_ad , 1, 0); 68 i(( t = `__os_mloc ( dbv , gp -> pg . size , & )) != 0) 69 out ; 70 `memy ( , gp -> pg . da ,rgp->pg. size ); 72 pgno = `PGNO ( ); 73 ro_pgno = gp ->root_pgno; 74 ro٥l = ro_pgno ! PGNO_INVALID ; 75 `REC_FGET ( mpf , gp -> , & , right ); 76 right : `REC_FGET ( mpf , gp ->right, & , do ); 78 do : i( `DB_REDO ( )) { 79 l_upde = r_upde = p_upde = 0; 86 i( ro٥l ) { 87 `REC_FGET ( mpf , ro_pgno , & , do_ ); 88 cmp = 89 `LOG_COMPARE (& `LSN ( ), &LSN( gp -> pg . da )); 90 `CHECK_LSN ( dbv , , 91 cmp , & `LSN ( ), &LSN( gp -> pg . da )); 92 p_upde = cmp == 0; 95 do_ : i( ! NULL ) { 96 cmp = `LOG_COMPARE (& `LSN ( ), & gp -> ); 97 `CHECK_LSN ( dbv , , cmp , & `LSN ( ), & gp -> ); 98 i( cmp == 0) 99 l_upde = 1; 102 i( ! NULL ) { 103 cmp = `LOG_COMPARE (& `LSN ( ), & gp -> ); 104 `CHECK_LSN ( dbv , , cmp , & `LSN ( ), & gp -> ); 105 i( cmp == 0) 106 r_upde = 1; 109 i(! p_upde && ! l_upde && ! r_upde ) 110 check_xt ; 113 i(( t = `__os_mloc ( dbv , fe_dbp -> pgsize , & _ )) != 0 || 114 ( t = `__os_mloc ( dbv , fe_dbp -> pgsize , & _ )) != 0) 115 out ; 116 i( ro٥l ) { 117 `P_INIT ( _ , fe_dbp -> pgsize , gp -> , 118 PGNO_INVALID , 119 `ISINTERNAL ( ? PGNO_INVALID : gp -> right , 120 `LEVEL ( ), `TYPE (sp)); 121 `P_INIT ( _ , fe_dbp -> pgsize , gp -> right , 122 `ISINTERNAL ( ? PGNO_INVALID : gp -> , 123 PGNO_INVALID , `LEVEL ( ), `TYPE (sp)); 125 `P_INIT ( _ , fe_dbp -> pgsize , `PGNO ( ), 126 `ISINTERNAL ( ? PGNO_INVALID : `PREV_PGNO (sp), 127 `ISINTERNAL ( ? PGNO_INVALID : gp -> right , 128 `LEVEL ( ), `TYPE (sp)); 129 `P_INIT ( _ , fe_dbp -> pgsize , gp -> right , 130 `ISINTERNAL ( ? PGNO_INVALID : sp-> pgno , 131 `ISINTERNAL ( ? PGNO_INVALID : `NEXT_PGNO (sp), 132 `LEVEL ( ), `TYPE (sp)); 136 i(( t = `__bam_cy ( fe_dbp , , _ , 0, gp -> dx )) != 0 || 137 ( t = `__bam_cy ( fe_dbp , , _ , gp -> dx , 138 `NUM_ENT ( ))) != 0) 139 out ; 141 i( l_upde ) { 142 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 143 `memy ( , _ , fe_dbp -> pgsize ); 144 -> l = * lp ; 145 i(( t = 146 `__memp_ut ( mpf , , fe_dbp -> iܙy )) != 0) 147 out ; 148 = NULL ; 151 i( r_upde ) { 152 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 153 `memy ( , _ , fe_dbp -> pgsize ); 154 -> l = * lp ; 155 i(( t = 156 `__memp_ut ( mpf , , fe_dbp -> iܙy )) != 0) 157 out ; 158 = NULL ; 167 i( ro٥l && p_upde ) { 168 i( `IS_BTREE_PAGE ( )) { 169 y = P_IBTREE ; 170 rc = gp -> ags & SPL_NRECS ? 1 : 0; 172 y = P_IRECNO ; 173 rc = 1; 176 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 177 `P_INIT ( , fe_dbp -> pgsize , ro_pgno , 178 PGNO_INVALID , PGNO_INVALID, _ -> v + 1, y ); 179 `RE_NREC_SET ( , rc ? `__bam_tٮ ( fe_dbp , _ ) + 180 `__bam_tٮ ( fe_dbp , _ ) : 0); 182 -> l = * lp ; 183 i(( t = 184 `__memp_ut ( mpf , , fe_dbp -> iܙy )) != 0) 185 out ; 186 = NULL ; 189 check_xt : 196 i(! ro٥l && gp -> gno ! PGNO_INVALID ) { 197 i(( t = `__memp_fg ( mpf , & gp -> gno , NULL , 198 0, & )) != 0) { 199 i( t ! DB_PAGE_NOTFOUND 200 #ide HAVE_FTRUNCATE 201 || `DB_REDO ( ) 204 t = `__db_pgr ( 205 fe_dbp , gp -> gno , t ); 206 out ; 208 de ; 210 cmp = `LOG_COMPARE (& `LSN ( ), & gp -> Ƣ ); 211 `CHECK_LSN ( dbv , , cmp , & `LSN ( ), & gp -> Ƣ ); 212 i( cmp == 0) { 213 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 214 `PREV_PGNO ( gp -> right ; 215 -> l = * lp ; 216 i(( t = `__memp_ut ( mpf , 217 , fe_dbp -> iܙy )) != 0) 218 out ; 219 = NULL ; 230 i(( t = `__memp_fg ( mpf , & pgno , NULL , 231 DB_MPOOL_EDIT , & )) != 0) { 232 = NULL ; 233 undo ; 235 i( `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 236 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 237 `memy ( , gp -> pg . da ,rgp->pg. size ); 238 i(( t = 239 `__memp_ut ( mpf , , fe_dbp -> iܙy )) != 0) 240 out ; 241 = NULL ; 252 undo : i(( ro٥l && ! NULL || != NULL) { 253 i( ro٥l && ! NULL && 254 `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 255 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 256 -> l = gp -> ; 257 i(( t = `__memp_ut ( mpf , 258 , fe_dbp -> iܙy )) != 0) 259 out ; 260 = NULL ; 262 i( ! NULL && 263 `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 264 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 265 -> l = gp -> ; 266 i(( t = `__memp_ut ( mpf , 267 , fe_dbp -> iܙy )) != 0) 268 out ; 269 = NULL ; 281 i(! ro٥l && gp -> gno ! PGNO_INVALID ) { 282 i(( t = `__memp_fg ( mpf , & gp -> gno , NULL , 283 DB_MPOOL_EDIT , & )) != 0) { 284 = NULL ; 285 de ; 287 i( `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 288 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ); 289 `PREV_PGNO ( gp -> ; 290 -> l = gp -> Ƣ ; 291 i( `__memp_ut ( mpf , , fe_dbp -> iܙy )) 292 out ; 293 = NULL ; 298 de : * lp = gp -> ev_l ; 299 t = 0; 301 out : 302 i( ! NULL && 303 ( t_t = `__memp_ut ( mpf , , fe_dbp -> iܙy )!0 && t == 0) 304 t = t_t ; 305 i( ! NULL && 306 ( t_t = `__memp_ut ( mpf , , fe_dbp -> iܙy )!0 && t == 0) 307 t = t_t ; 308 i( ! NULL && 309 ( t_t = `__memp_ut ( mpf , , fe_dbp -> iܙy )!0 && t == 0) 310 t = t_t ; 311 i( ! NULL && 312 ( t_t = `__memp_ut ( mpf , , fe_dbp -> iܙy )!0 && t == 0) 313 t = t_t ; 316 i( _ ! NULL ) 317 `__os_ ( dbv , _ ); 318 i( _ ! NULL ) 319 `__os_ ( dbv , _ ); 320 i( ! NULL ) 321 `__os_ ( dbv , ); 323 REC_CLOSE ; 324 } } 334 $__bam_rl_cov ( dbv , db , lp , , fo ) 335 DB_ENV * dbv ; 336 DBT * db ; 337 DB_LSN * lp ; 338 db_cs ; 339 * fo ; 341 __bam_rl_gs * gp ; 342 DB * fe_dbp ; 343 DBC * dbc ; 344 DB_LSN cy_l ; 345 DB_MPOOLFILE * mpf ; 346 PAGE * g ; 347 db_pgno_t pgno , ro_pgno ; 348 db_o_t rt ; 349 cmp_n , cmp_p , t ; 351 g = NULL ; 352 `REC_PRINT ( __bam_rl_t ); 353 `REC_INTRO ( __bam_rl_ad , 1, 1); 356 pgno = ro_pgno = gp ->root_pgno; 357 i(( t = `__memp_fg ( mpf , & pgno , NULL , 358 0, & g )) != 0) { 359 i( t ! DB_PAGE_NOTFOUND 360 #ide HAVE_FTRUNCATE 361 || `DB_REDO ( ) 364 t = `__db_pgr ( fe_dbp , pgno ,et); 365 out ; 367 do_ge ; 370 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 371 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> rol ); 372 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> rol ); 373 i( cmp_p =0 && `DB_REDO ( )) { 381 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 382 rt = `RE_NREC ( g ); 383 `memy ( g , gp -> pgdbt . da ,rgp->pgdbt. size ); 384 i( `LEVEL ( g > LEAFLEVEL ) 385 `RE_NREC_SET ( g , rt ); 386 g -> pgno = ro_pgno ; 387 g -> l = * lp ; 388 } i( cmp_n =0 && `DB_UNDO ( )) { 390 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 391 `P_INIT ( g , fe_dbp -> pgsize , ro_pgno , 392 gp -> ec , PGNO_INVALID , g -> v + 1, 393 `IS_BTREE_PAGE ( g ? P_IBTREE : P_IRECNO ); 394 i(( t = `__db_pem ( dbc , g , 0, 395 gp -> roْt . size , &gp->roْt, NULL )) != 0) 396 out ; 397 g -> l = gp -> rol ; 399 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 400 out ; 402 do_ge : 408 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 409 0, & g )) != 0) { 410 i( t ! DB_PAGE_NOTFOUND 411 #ide HAVE_FTRUNCATE 412 || `DB_REDO ( ) 415 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 416 out ; 418 de ; 420 () `__ua_memy (& cy_l , & `LSN ( gp -> pgdbt . da ), ( DB_LSN )); 421 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 422 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 423 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & cy_l ); 424 i( cmp_p =0 && `DB_REDO ( )) { 426 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 427 g -> l = * lp ; 428 } i( cmp_n =0 && `DB_UNDO ( )) { 430 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 431 `memy ( g , gp -> pgdbt . da ,rgp->pgdbt. size ); 433 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 434 out ; 435 g = NULL ; 437 de : * lp = gp -> ev_l ; 438 t = 0; 440 out : i( g ! NULL ) 441 () `__memp_ut ( mpf , g , dbc -> iܙy ); 442 REC_CLOSE ; 443 } } 453 $__bam_adj_cov ( dbv , db , lp , , fo ) 454 DB_ENV * dbv ; 455 DBT * db ; 456 DB_LSN * lp ; 457 db_cs ; 458 * fo ; 460 __bam_adj_gs * gp ; 461 DB * fe_dbp ; 462 DBC * dbc ; 463 DB_MPOOLFILE * mpf ; 464 PAGE * g ; 465 cmp_n , cmp_p , t ; 467 g = NULL ; 468 `REC_PRINT ( __bam_adj_t ); 469 `REC_INTRO ( __bam_adj_ad , 1, 1); 472 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 473 0, & g )) != 0) { 474 i( t ! DB_PAGE_NOTFOUND 475 #ide HAVE_FTRUNCATE 476 || `DB_REDO ( ) 479 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 480 out ; 482 de ; 485 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 486 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 487 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 488 i( cmp_p =0 && `DB_REDO ( )) { 490 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 491 i(( t = `__bam_adjdx ( dbc , 492 g , gp -> dx ,rgp-> dx_cy ,rgp-> is_ )) != 0) 493 out ; 495 `LSN ( g * lp ; 496 } i( cmp_n =0 && `DB_UNDO ( )) { 498 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 499 i(( t = `__bam_adjdx ( dbc , 500 g , gp -> dx ,rgp-> dx_cy , !gp-> is_ )) != 0) 501 out ; 503 `LSN ( g gp -> l ; 505 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 506 out ; 507 g = NULL ; 509 de : * lp = gp -> ev_l ; 510 t = 0; 512 out : i( g ! NULL ) 513 () `__memp_ut ( mpf , g , dbc -> iܙy ); 514 REC_CLOSE ; 515 } } 526 $__bam_dju_cov ( dbv , db , lp , , fo ) 527 DB_ENV * dbv ; 528 DBT * db ; 529 DB_LSN * lp ; 530 db_cs ; 531 * fo ; 533 __bam_dju_gs * gp ; 534 DB * fe_dbp ; 535 DBC * dbc ; 536 DB_MPOOLFILE * mpf ; 537 PAGE * g ; 538 cmp_n , cmp_p , t ; 540 g = NULL ; 541 `REC_PRINT ( __bam_dju_t ); 542 `REC_INTRO ( __bam_dju_ad , 1, 0); 545 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 546 0, & g )) != 0) { 547 i( t ! DB_PAGE_NOTFOUND 548 #ide HAVE_FTRUNCATE 549 || `DB_REDO ( ) 552 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 553 out ; 555 de ; 558 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 559 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 560 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 561 i( cmp_p =0 && `DB_REDO ( )) { 563 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 564 i( `IS_BTREE_PAGE ( g )) { 565 `GET_BINTERNAL ( fe_dbp , g , gp -> dx )-> ecs += 566 gp -> adju ; 567 i( gp -> ags & CAD_UPDATEROOT ) 568 `RE_NREC_ADJ ( g , gp -> adju ); 570 `GET_RINTERNAL ( fe_dbp , g , gp -> dx )-> ecs += 571 gp -> adju ; 572 i( gp -> ags & CAD_UPDATEROOT ) 573 `RE_NREC_ADJ ( g , gp -> adju ); 576 `LSN ( g * lp ; 577 } i( cmp_n =0 && `DB_UNDO ( )) { 579 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 580 i( `IS_BTREE_PAGE ( g )) { 581 `GET_BINTERNAL ( fe_dbp , g , gp -> dx )-> ecs -= 582 gp -> adju ; 583 i( gp -> ags & CAD_UPDATEROOT ) 584 `RE_NREC_ADJ ( g , -( gp -> adju )); 586 `GET_RINTERNAL ( fe_dbp , g , gp -> dx )-> ecs -= 587 gp -> adju ; 588 i( gp -> ags & CAD_UPDATEROOT ) 589 `RE_NREC_ADJ ( g , -( gp -> adju )); 591 `LSN ( g gp -> l ; 593 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 594 out ; 595 g = NULL ; 597 de : * lp = gp -> ev_l ; 598 t = 0; 600 out : i( g ! NULL ) 601 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 602 REC_CLOSE ; 603 } } 613 $__bam_cd_cov ( dbv , db , lp , , fo ) 614 DB_ENV * dbv ; 615 DBT * db ; 616 DB_LSN * lp ; 617 db_cs ; 618 * fo ; 620 __bam_cd_gs * gp ; 621 DB * fe_dbp ; 622 DBC * dbc ; 623 DB_MPOOLFILE * mpf ; 624 PAGE * g ; 625 u_t32_t dx ; 626 cmp_n , cmp_p , t ; 628 g = NULL ; 629 `REC_PRINT ( __bam_cd_t ); 630 `REC_INTRO ( __bam_cd_ad , 1, 0); 633 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 634 0, & g )) != 0) { 635 i( t ! DB_PAGE_NOTFOUND 636 #ide HAVE_FTRUNCATE 637 || `DB_REDO ( ) 640 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 641 out ; 643 de ; 646 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 647 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 648 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 649 i( cmp_p =0 && `DB_REDO ( )) { 651 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 652 dx = gp ->dx + ( `TYPE ( g = P_LBTREE ? O_INDX : 0); 653 `B_DSET ( `GET_BKEYDATA ( fe_dbp , g , dx )-> ty ); 655 `LSN ( g * lp ; 656 } i( cmp_n =0 && `DB_UNDO ( )) { 658 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 659 dx = gp ->dx + ( `TYPE ( g = P_LBTREE ? O_INDX : 0); 660 `B_DCLR ( `GET_BKEYDATA ( fe_dbp , g , dx )-> ty ); 662 i(( t = `__bam__de ( 663 fe_dbp , gp -> pgno ,rgp-> dx , 0, NULL )) != 0) 664 out ; 666 `LSN ( g gp -> l ; 668 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 669 out ; 670 g = NULL ; 672 de : * lp = gp -> ev_l ; 673 t = 0; 675 out : i( g ! NULL ) 676 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 677 REC_CLOSE ; 678 } } 688 $__bam__cov ( dbv , db , lp , , fo ) 689 DB_ENV * dbv ; 690 DBT * db ; 691 DB_LSN * lp ; 692 db_cs ; 693 * fo ; 695 __bam__gs * gp ; 696 BKEYDATA * bk ; 697 DB * fe_dbp ; 698 DBC * dbc ; 699 DBT dbt ; 700 DB_MPOOLFILE * mpf ; 701 PAGE * g ; 702 cmp_n , cmp_p , t ; 703 u_t8_t * p ; 705 g = NULL ; 706 `REC_PRINT ( __bam__t ); 707 `REC_INTRO ( __bam__ad , 1, 1); 710 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 711 0, & g )) != 0) { 712 i( t ! DB_PAGE_NOTFOUND 713 #ide HAVE_FTRUNCATE 714 || `DB_REDO ( ) 717 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 718 out ; 720 de ; 722 bk = `GET_BKEYDATA ( fe_dbp , g , gp -> dx ); 724 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 725 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 726 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 727 i( cmp_p =0 && `DB_REDO ( )) { 733 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 734 `memt (& dbt , 0, (dbt)); 735 dbt . size = gp -> efix +rgp-> suffix +rgp-> .size; 736 i(( t = `__os_mloc ( dbv , dbt . size , &dbt. da )) != 0) 737 out ; 738 p = dbt . da ; 739 `memy ( p , bk -> da , gp -> efix ); 740 p + gp -> efix ; 741 `memy ( p , gp -> . da ,rgp->. size ); 742 p + gp -> . size ; 743 `memy ( p , bk -> da + (bk-> n - gp -> suffix ),rgp->suffix); 745 t = `__bam_rem ( dbc , g , gp -> dx , & dbt ); 746 `__os_ ( dbv , dbt . da ); 747 i( t != 0) 748 out ; 750 `LSN ( g * lp ; 751 } i( cmp_n =0 && `DB_UNDO ( )) { 757 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 758 `memt (& dbt , 0, (dbt)); 759 dbt . size = gp -> efix +rgp-> suffix +rgp-> ig .size; 760 i(( t = `__os_mloc ( dbv , dbt . size , &dbt. da )) != 0) 761 out ; 762 p = dbt . da ; 763 `memy ( p , bk -> da , gp -> efix ); 764 p + gp -> efix ; 765 `memy ( p , gp -> ig . da ,rgp->ig. size ); 766 p + gp -> ig . size ; 767 `memy ( p , bk -> da + (bk-> n - gp -> suffix ),rgp->suffix); 769 t = `__bam_rem ( dbc , g , gp -> dx , & dbt ); 770 `__os_ ( dbv , dbt . da ); 771 i( t != 0) 772 out ; 775 i( gp -> isded ) 776 `B_DSET ( `GET_BKEYDATA ( fe_dbp , g , gp -> dx )-> ty ); 778 `LSN ( g gp -> l ; 780 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 781 out ; 782 g = NULL ; 784 de : * lp = gp -> ev_l ; 785 t = 0; 787 out : i( g ! NULL ) 788 () `__memp_ut ( mpf , g , dbc -> iܙy ); 789 REC_CLOSE ; 790 } } 800 $__bam_ro_cov ( dbv , db , lp , , fo ) 801 DB_ENV * dbv ; 802 DBT * db ; 803 DB_LSN * lp ; 804 db_cs ; 805 * fo ; 807 __bam_ro_gs * gp ; 808 BTMETA * ma ; 809 DB * fe_dbp ; 810 DBC * dbc ; 811 DB_MPOOLFILE * mpf ; 812 cmp_n , cmp_p , t ; 814 ma = NULL ; 815 `REC_PRINT ( __bam_ro_t ); 816 `REC_INTRO ( __bam_ro_ad , 0, 0); 818 i(( t = `__memp_fg ( mpf , & gp -> ma_pgno , NULL , 819 0, & ma )) != 0) { 820 i( t ! DB_PAGE_NOTFOUND 821 #ide HAVE_FTRUNCATE 822 || `DB_REDO ( ) 825 t = `__db_pgr ( fe_dbp , gp -> ma_pgno ,et); 826 out ; 828 de ; 831 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 832 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 833 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 834 i( cmp_p =0 && `DB_REDO ( )) { 836 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 837 ma -> ro = gp -> ro_pgno ; 838 ma -> dbma . l = * lp ; 839 (( BTREE *) fe_dbp -> bt_ )-> bt_ro = ma -> ro ; 840 } i( cmp_n =0 && `DB_UNDO ( )) { 842 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 843 ma -> dbma . l = gp -> ma_l ; 845 i(( t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy )) != 0) 846 out ; 847 ma = NULL ; 849 de : * lp = gp -> ev_l ; 850 t = 0; 852 out : i( ma ! NULL ) 853 () `__memp_ut ( mpf , ma , fe_dbp -> iܙy ); 854 REC_CLOSE ; 855 } } 866 $__bam_cudj_cov ( dbv , db , lp , , fo ) 867 DB_ENV * dbv ; 868 DBT * db ; 869 DB_LSN * lp ; 870 db_cs ; 871 * fo ; 873 __bam_cudj_gs * gp ; 874 DB * fe_dbp ; 875 DBC * dbc ; 876 DB_MPOOLFILE * mpf ; 877 t ; 879 `COMPQUIET ( mpf , NULL ); 881 `REC_PRINT ( __bam_cudj_t ); 882 `REC_INTRO ( __bam_cudj_ad , 0, 1); 884 t = 0; 885 i( ! DB_TXN_ABORT ) 886 de ; 888 gp -> mode ) { 889 DB_CA_DI : 890 i(( t = `__bam__di ( dbc , gp -> om_pgno , 891 gp -> om_dx , -(rgp-> f_dx )) != 0) 892 out ; 894 DB_CA_DUP : 895 i(( t = `__bam__undodup ( fe_dbp , gp -> f_dx , 896 gp -> om_pgno ,rgp-> om_dx ,rgp-> to_dx )) != 0) 897 out ; 900 DB_CA_RSPLIT : 901 i(( t = 902 `__bam__rl ( dbc , gp -> to_pgno ,rgp-> om_pgno )) != 0) 903 out ; 906 DB_CA_SPLIT : 907 i(( t = `__bam__undol ( fe_dbp , gp -> om_pgno , 908 gp -> to_pgno ,rgp-> _pgno ,rgp-> om_dx )) != 0) 909 out ; 913 de : * lp = gp -> ev_l ; 914 out : REC_CLOSE ; 915 } } 926 $__bam_rcudj_cov ( dbv , db , lp , , fo ) 927 DB_ENV * dbv ; 928 DBT * db ; 929 DB_LSN * lp ; 930 db_cs ; 931 * fo ; 933 __bam_rcudj_gs * gp ; 934 BTREE_CURSOR * ; 935 DB * fe_dbp ; 936 DBC * dbc , * rdbc ; 937 DB_MPOOLFILE * mpf ; 938 t , t_t ; 940 `COMPQUIET ( mpf , NULL ); 941 rdbc = NULL ; 943 `REC_PRINT ( __bam_rcudj_t ); 944 `REC_INTRO ( __bam_rcudj_ad , 0, 1); 946 t = t_t = 0; 948 i( ! DB_TXN_ABORT ) 949 de ; 961 i(( t = `__db_curs_t ( fe_dbp , 962 NULL , DB_RECNO , gp -> ro , 0, DB_LOCK_INVALIDID , & rdbc )) != 0) 963 out ; 965 = ( BTREE_CURSOR *) rdbc -> ; 966 `F_SET ( , C_RENUMBER ); 967 -> o = gp ->recno; 969 gp -> mode ) { 970 CA_DELETE : 975 `F_SET ( , C_DELETED ); 976 `F_SET ( , C_RENUMBER ); 977 -> d = gp ->order; 978 i(( t = `__m_ ( rdbc , CA_ICURRENT , NULL )) != 0) 979 out ; 981 CA_IAFTER : 982 CA_IBEFORE : 983 CA_ICURRENT : 988 `F_CLR ( , C_DELETED ); 989 -> d = INVALID_ORDER ; 990 i(( t = `__m_ ( rdbc , CA_DELETE , NULL )) != 0) 991 out ; 995 de : * lp = gp -> ev_l ; 996 out : i( rdbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 997 t = t_t ; 998 REC_CLOSE ; 999 } } 1009 $__bam_lk_cov ( dbv , db , lp , , fo ) 1010 DB_ENV * dbv ; 1011 DBT * db ; 1012 DB_LSN * lp ; 1013 db_cs ; 1014 * fo ; 1016 __bam_lk_gs * gp ; 1017 DB * fe_dbp ; 1018 DBC * dbc ; 1019 DB_MPOOLFILE * mpf ; 1020 PAGE * g ; 1021 cmp_n , cmp_p , t ; 1023 g = NULL ; 1024 `REC_PRINT ( __bam_lk_t ); 1025 `REC_INTRO ( __bam_lk_ad , 1, 0); 1033 i(( t = `__memp_fg ( mpf , & gp -> xt , NULL , 1034 0, & g )) != 0) { 1035 i( t ! DB_PAGE_NOTFOUND 1036 #ide HAVE_FTRUNCATE 1037 || `DB_REDO ( ) 1040 t = `__db_pgr ( fe_dbp , gp -> xt ,et); 1041 out ; 1043 ev ; 1046 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1047 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_xt ); 1048 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l_xt ); 1049 i( cmp_p =0 && `DB_REDO ( )) { 1051 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1052 i( gp -> w_pgno = PGNO_INVALID ) 1053 g -> ev_pgno = gp -> ev ; 1055 g -> ev_pgno = gp -> w_pgno ; 1057 g -> l = * lp ; 1058 } i( cmp_n =0 && `DB_UNDO ( )) { 1060 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1061 g -> ev_pgno = gp -> pgno ; 1063 g -> l = gp -> l_xt ; 1066 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1067 out ; 1068 g = NULL ; 1070 ev : i(( t = `__memp_fg ( mpf , & gp ->ev, NULL , 1071 0, & g )) != 0) { 1072 i( t ! DB_PAGE_NOTFOUND 1073 #ide HAVE_FTRUNCATE 1074 || `DB_REDO ( ) 1077 t = `__db_pgr ( fe_dbp , gp -> ev ,et); 1078 out ; 1080 de ; 1083 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_ev ); 1084 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l_ev ); 1085 i( cmp_p =0 && `DB_REDO ( )) { 1087 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1088 i( gp -> w_pgno = PGNO_INVALID ) 1089 g -> xt_pgno = gp -> xt ; 1091 g -> xt_pgno = gp -> w_pgno ; 1093 g -> l = * lp ; 1094 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1096 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1097 g -> xt_pgno = gp -> pgno ; 1098 g -> l = gp -> l_ev ; 1101 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1102 out ; 1103 g = NULL ; 1105 de : * lp = gp -> ev_l ; 1106 t = 0; 1108 out : i( g ! NULL ) 1109 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 1110 REC_CLOSE ; 1111 } } 1121 $__bam_mge_cov ( dbv , db , lp , , fo ) 1122 DB_ENV * dbv ; 1123 DBT * db ; 1124 DB_LSN * lp ; 1125 db_cs ; 1126 * fo ; 1128 __bam_mge_gs * gp ; 1129 BKEYDATA * bk ; 1130 DB * fe_dbp ; 1131 DBC * dbc ; 1132 DB_MPOOLFILE * mpf ; 1133 PAGE * g ; 1134 db_dx_t dx , * np , * pp ; 1135 u_t32_t size ; 1136 u_t8_t * bp ; 1137 cmp_n , cmp_p , i , t ; 1139 `REC_PRINT ( __bam_mge_t ); 1140 `REC_INTRO ( __bam_mge_ad , 1, 1); 1142 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 1143 0, & g )) != 0) { 1144 i( t ! DB_PAGE_NOTFOUND 1145 #ide HAVE_FTRUNCATE 1146 || `DB_REDO ( ) 1149 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1150 out ; 1152 xt ; 1155 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1156 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1157 `CHECK_LSN ( fe_dbp -> dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 1159 i( cmp_p =0 && `DB_REDO ( )) { 1164 `DB_ASSERT ( dbv , gp -> hdr . size =0 || `NUM_ENT ( g ) == 0); 1165 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1166 i( gp -> hdr . size != 0) { 1167 `P_INIT ( g , fe_dbp -> pgsize ,ag-> pgno , 1168 `PREV_PGNO ( gp -> hdr . da ), 1169 `NEXT_PGNO ( gp -> hdr . da ), 1170 `LEVEL ( gp -> hdr . da ), `TYPE (argp->hdr.data)); 1172 i( `TYPE ( g = P_OVERFLOW ) { 1173 `OV_REF ( g OV_REF( gp -> hdr . da ); 1174 `OV_LEN ( g OV_LEN( gp -> hdr . da ); 1175 bp = ( u_t8_t * g + `P_OVERHEAD ( fe_dbp ); 1176 `memy ( bp , gp -> da .da,rgp->da. size ); 1179 bp = ( u_t8_t *) g + 1180 ( db_dx_t )( `HOFFSET ( g - gp -> da . size ); 1181 `memy ( bp , gp -> da .da,rgp->da. size ); 1184 pp = `P_INP ( fe_dbp , g + `NUM_ENT (pagep); 1185 np = gp -> d . da ; 1186 i = 0; 1187 i < ()( gp -> d . size / (* np )); i++) 1188 * pp ++ = * np ++ 1189 - ( fe_dbp -> pgsize - `HOFFSET ( g )); 1190 `HOFFSET ( g - gp -> da . size ; 1191 `NUM_ENT ( g + i ; 1193 g -> l = * lp ; 1194 } i( cmp_n =0 && ! `DB_REDO ( )) { 1201 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1202 i = 0; i < ()( gp -> d . size / (* np )); i++) { 1203 dx = `NUM_ENT ( g ) - 1; 1204 i( `P_INP ( fe_dbp , g )[ dx ] == 1205 `P_INP ( fe_dbp , g )[ dx - P_INDX ]) { 1206 `NUM_ENT ( g )--; 1209 `TYPE ( g )) { 1210 P_LBTREE : 1211 P_LRECNO : 1212 P_LDUP : 1213 bk = `GET_BKEYDATA ( fe_dbp , g , dx ); 1214 size = `BITEM_SIZE ( bk ); 1217 P_IBTREE : 1218 size = `BINTERNAL_SIZE ( 1219 `GET_BINTERNAL ( fe_dbp , g , dx )-> n ); 1221 P_IRECNO : 1222 size = RINTERNAL_SIZE ; 1226 t = `__db_pgfmt ( dbv , `PGNO ( g )); 1227 out ; 1229 i(( t = 1230 `__db_dem ( dbc , g , dx , size )) != 0) 1231 out ; 1233 i( gp -> d . size == 0) 1234 `HOFFSET ( g fe_dbp -> pgsize ; 1235 g -> l = gp ->lsn; 1238 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 1239 out ; 1241 xt : i(( t = `__memp_fg ( mpf , & gp -> gno , NULL , 1242 0, & g )) != 0) { 1243 i( t ! DB_PAGE_NOTFOUND 1244 #ide HAVE_FTRUNCATE 1245 || `DB_REDO ( ) 1248 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1249 out ; 1251 de ; 1254 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1255 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> Ƣ ); 1256 `CHECK_LSN ( fe_dbp -> dbv , , cmp_p , & `LSN ( g ), & gp -> Ƣ ); 1258 i( cmp_p =0 && `DB_REDO ( )) { 1260 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1261 `HOFFSET ( g fe_dbp -> pgsize ; 1262 `NUM_ENT ( g ) = 0; 1263 g -> l = * lp ; 1264 } i( cmp_n =0 && ! `DB_REDO ( )) { 1266 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1267 i( `TYPE ( g = P_OVERFLOW ) { 1268 `OV_REF ( g OV_REF( gp -> hdr . da ); 1269 `OV_LEN ( g OV_LEN( gp -> hdr . da ); 1270 bp = ( u_t8_t * g + `P_OVERHEAD ( fe_dbp ); 1271 `memy ( bp , gp -> da .da,rgp->da. size ); 1273 bp = ( u_t8_t *) g + 1274 ( db_dx_t )( `HOFFSET ( g - gp -> da . size ); 1275 `memy ( bp , gp -> da .da,rgp->da. size ); 1278 pp = `P_INP ( fe_dbp , g + `NUM_ENT (pagep); 1279 np = gp -> d . da ; 1280 i = 0; 1281 i < ()( gp -> d . size / (* np )); i++) 1282 * pp ++ = * np ++; 1283 `HOFFSET ( g - gp -> da . size ; 1284 `NUM_ENT ( g i ; 1286 g -> l = gp -> Ƣ ; 1289 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 1290 out ; 1291 de : 1292 * lp = gp -> ev_l ; 1293 t = 0; 1295 out : REC_CLOSE ; 1296 } } 1306 $__bam_pgno_cov ( dbv , db , lp , , fo ) 1307 DB_ENV * dbv ; 1308 DBT * db ; 1309 DB_LSN * lp ; 1310 db_cs ; 1311 * fo ; 1313 BINTERNAL * bi ; 1314 __bam_pgno_gs * gp ; 1315 DB * fe_dbp ; 1316 DBC * dbc ; 1317 DB_MPOOLFILE * mpf ; 1318 PAGE * g , * ag ; 1319 db_pgno_t * pgn ; 1320 cmp_n , cmp_p , t ; 1322 `REC_PRINT ( __bam_pgno_t ); 1323 `REC_INTRO ( __bam_pgno_ad , 1, 0); 1325 `REC_FGET ( mpf , gp -> pgno , & g , de ); 1327 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1328 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1329 `CHECK_LSN ( fe_dbp -> dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 1331 i(( cmp_p =0 && `DB_REDO ( )|| ( cmp_n == 0 && !DB_REDO(op))) { 1332 `TYPE ( g )) { 1333 P_IBTREE : 1339 bi = `GET_BINTERNAL ( fe_dbp , g , gp -> dx ); 1340 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 1341 `REC_FGET ( mpf , gp -> gno , & ag , out ); 1343 i( `TYPE ( ag = P_OVERFLOW ) 1344 pgn = 1345 &(( BOVERFLOW *)( bi -> da ))-> pgno ; 1347 pgn = & bi -> pgno ; 1348 i(( t = `__memp_ut ( mpf , 1349 ag , fe_dbp -> iܙy )) != 0) 1350 out ; 1353 pgn = & bi -> pgno ; 1355 P_IRECNO : 1356 pgn = 1357 & `GET_RINTERNAL ( fe_dbp , g , gp -> dx )-> pgno ; 1360 pgn = 1361 & `GET_BOVERFLOW ( fe_dbp , g , gp -> dx )-> pgno ; 1365 i( `DB_REDO ( )) { 1367 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1368 * pgn = gp -> gno ; 1369 g -> l = * lp ; 1371 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1372 * pgn = gp -> gno ; 1373 g -> l = gp ->lsn; 1377 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1378 out ; 1380 de : 1381 * lp = gp -> ev_l ; 1382 t = 0; 1384 out : REC_CLOSE ; 1385 } } 1395 $__bam_lk_43_cov ( dbv , db , lp , , fo ) 1396 DB_ENV * dbv ; 1397 DBT * db ; 1398 DB_LSN * lp ; 1399 db_cs ; 1400 * fo ; 1402 __bam_lk_43_gs * gp ; 1403 DB * fe_dbp ; 1404 DBC * dbc ; 1405 DB_MPOOLFILE * mpf ; 1406 PAGE * g ; 1407 cmp_n , cmp_p , modifd , t ; 1409 g = NULL ; 1410 `REC_PRINT ( __bam_lk_43_t ); 1411 `REC_INTRO ( __bam_lk_43_ad , 1, 0); 1419 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 0, & g )) != 0) { 1420 i( t ! DB_PAGE_NOTFOUND 1421 #ide HAVE_FTRUNCATE 1422 || `DB_REDO ( ) 1425 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1426 out ; 1428 xt2 ; 1431 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1432 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 1433 i( cmp_p =0 && `DB_REDO ( )) { 1435 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1436 g -> l = * lp ; 1437 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1439 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1440 g -> xt_pgno = gp -> xt ; 1441 g -> ev_pgno = gp -> ev ; 1442 g -> l = gp ->lsn; 1444 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1445 out ; 1446 g = NULL ; 1448 xt2 : i(( t = `__memp_fg ( mpf , & gp -> xt , NULL , 0, & g )) != 0) { 1449 i( t ! DB_PAGE_NOTFOUND 1450 #ide HAVE_FTRUNCATE 1451 || `DB_REDO ( ) 1454 t = `__db_pgr ( fe_dbp , gp -> xt ,et); 1455 out ; 1457 ev ; 1460 modifd = 0; 1461 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1462 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_xt ); 1463 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l_xt ); 1464 i( cmp_p =0 && `DB_REDO ( )) { 1466 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1467 g -> ev_pgno = gp -> ev ; 1468 modifd = 1; 1469 } i( cmp_n =0 && `DB_UNDO ( )) { 1471 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1472 g -> ev_pgno = gp -> pgno ; 1473 modifd = 1; 1475 i( modifd ) { 1476 i( `DB_UNDO ( )) 1477 g -> l = gp -> l_xt ; 1479 g -> l = * lp ; 1481 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1482 out ; 1483 g = NULL ; 1485 ev : i(( t = `__memp_fg ( mpf , & gp ->ev, NULL , 0, & g )) != 0) { 1486 i( t ! DB_PAGE_NOTFOUND 1487 #ide HAVE_FTRUNCATE 1488 || `DB_REDO ( ) 1491 t = `__db_pgr ( fe_dbp , gp -> ev ,et); 1492 out ; 1494 de ; 1497 modifd = 0; 1498 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_ev ); 1499 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l_ev ); 1500 i( cmp_p =0 && `DB_REDO ( )) { 1502 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1503 g -> xt_pgno = gp -> xt ; 1504 modifd = 1; 1505 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1507 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1508 g -> xt_pgno = gp -> pgno ; 1509 modifd = 1; 1511 i( modifd ) { 1512 i( `DB_UNDO ( )) 1513 g -> l = gp -> l_ev ; 1515 g -> l = * lp ; 1517 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1518 out ; 1519 g = NULL ; 1521 de : * lp = gp -> ev_l ; 1522 t = 0; 1524 out : i( g ! NULL ) 1525 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 1526 REC_CLOSE ; 1527 } } @../btree/bt_reclaim.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 23 $__bam_aim ( dbp , txn ) 24 DB * dbp ; 25 DB_TXN * txn ; 27 DBC * dbc ; 28 DB_LOCK ma_lock ; 29 t , t_t ; 32 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 33 ( t ); 36 i(( t = `__db_lg ( dbc , 37 0, PGNO_BASE_MD , DB_LOCK_WRITE , 0, & ma_lock )) != 0) 38 r ; 41 `F_SET ( dbc , DBC_DONTLOCK ); 44 t = `__bam_av ( dbc , 45 DB_LOCK_WRITE , dbc -> -> ro , __db_aim_back , dbc); 47 `__TLPUT ( dbc , ma_lock ); 49 r : i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 50 t = t_t ; 52 ( t ); 53 } } 62 $__bam_un ( dbc , coup ) 63 DBC * dbc ; 64 u_t32_t * coup ; 66 db_unc_m unc ; 67 t ; 69 unc . cou = 0; 70 unc . dbc = dbc; 73 t = `__bam_av ( dbc , 74 DB_LOCK_WRITE , dbc -> -> ro , __db_un_back , & unc ); 76 i( coup ! NULL ) 77 * coup = unc . cou ; 79 ( t ); 80 } } @../btree/bt_recno.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 15 ~"dbc/mp.h " 17 __m_add __P (( DBC *, db_o_t *, DBT *, u_t32_t , u_int32_t)); 18 __m_sour __P (( DB *)); 19 __m_d __P (( DBC *, db_o_t )); 20 __m_upde __P (( DBC *, db_o_t , )); 39 #CD_SET ( ) { \ 40 i( `F_ISSET ( , C_RENUMBER )) \ 41 `F_SET ( , C_DELETED ); \ 42 } ) 43 #CD_CLR ( ) { \ 44 i( `F_ISSET ( , C_RENUMBER )) { \ 45 `F_CLR ( , C_DELETED ); \ 46 -> d = INVALID_ORDER ; \ 48 } ) 49 #CD_ISSET ( ) \ 50 ( `F_ISSET ( , C_RENUMBER && F_ISSET(, C_DELETED ? 1 : 0) ) 59 #C_LESSTHAN ( 1 , 2 ) \ 60 ((( 1 )-> o < ( 2 )->recno) || \ 61 ((( 1 )-> o =( 2 )->recno) && \ 62 (( `CD_ISSET (( 1 )&& CD_ISSET(( 2 )&& (1)-> d < (cp2)->order) || \ 63 ( `CD_ISSET (( 1 )&& !CD_ISSET(( 2 )))))) ) 69 #C_EQUAL ( 1 , 2 ) \ 70 (( 1 )-> o =( 2 )->&& `CD_ISSET ((cp1)) == CD_ISSET((cp2)) && \ 71 (! `CD_ISSET (( 1 )|| (1)-> d =( 2 )->d)) ) 76 #CURADJ_LOG ( dbc ) \ 77 ( `DBC_LOGGING (( dbc )&& (dbc)-> txn ! NULL && (dbc)->txn-> !NULL) ) 83 #STACK_TO_CURSOR ( , t ) { \ 84 __t_t ; \ 85 ( )-> ge = ()-> c ->page; \ 86 ( )-> pgno = ()-> c -> ge ->pgno; \ 87 ( )-> dx = ()-> c ->indx; \ 88 i(( __t_t = `__TLPUT ( dbc , ( )-> lock )!0 && ( t ) == 0) \ 89 t = __t_t ; \ 90 ( )-> lock = ()-> c ->lock; \ 91 ( )-> lock_mode = ()-> c ->lock_mode; \ 92 } ) 102 $__m_ݒ ( dbp , txn , me , ba_pgno , ags ) 103 DB * dbp ; 104 DB_TXN * txn ; 105 cڡ * me ; 106 db_pgno_t ba_pgno ; 107 u_t32_t ags ; 109 BTREE * t ; 110 DBC * dbc ; 111 t , t_t ; 113 `COMPQUIET ( me , NULL ); 114 t = dbp -> bt_ ; 117 i(( t = `__bam_ad_ro ( dbp , txn , ba_pgno , ags )) != 0) 118 ( t ); 128 i( t -> _sour ! NULL && ( t = `__m_sour ( dbp )) != 0) 129 ( t ); 132 i( `F_ISSET ( dbp , DB_AM_SNAPSHOT )) { 134 i(( t = `__db_curs ( dbp , NULL , & dbc , 0)) != 0) 135 ( t ); 138 i(( t = `__m_upde ( dbc , 139 DB_MAX_RECORDS , 0)!0 && t = DB_NOTFOUND ) 140 t = 0; 143 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 144 t = t_t ; 147 ( t ); 148 } } 157 $__m_nd ( dbc , key , da ) 158 DBC * dbc ; 159 DBT * key , * da ; 161 BTREE_CURSOR * ; 162 t ; 164 = ( BTREE_CURSOR *) dbc -> ; 171 t = `__m_upde ( dbc , DB_MAX_RECORDS , 0); 172 i( t =0 || = DB_NOTFOUND ) 173 t = `__m_add ( dbc , & -> o , da , DB_APPEND , 0); 176 i( t =0 && key ! NULL ) 177 t = `__db_tcy ( dbc -> dbp -> dbv , key , & -> o , 178 ( -> o ), & dbc -> rkey -> da , &dbc->rkey-> un ); 180 ( t ); 181 } } 190 $__mc_d ( dbc ) 191 DBC * dbc ; 193 BKEYDATA bk ; 194 BTREE * t ; 195 BTREE_CURSOR * ; 196 DB * dbp ; 197 DB_LSN l ; 198 DBT hdr , da ; 199 exa , nc , t , ack , t_t ; 201 dbp = dbc ->dbp; 202 = ( BTREE_CURSOR *) dbc -> ; 203 t = dbp -> bt_ ; 204 ack = 0; 217 i( `CD_ISSET ( )) 218 ( DB_KEYEMPTY ); 221 i(( t = `__bam_rch ( dbc , & -> o , SR_DELETE , 1, & exa )) != 0) 222 r ; 223 i(! exa ) { 224 t = DB_NOTFOUND ; 225 r ; 227 ack = 1; 230 i(( t = `__memp_dty ( dbp -> mpf , 231 & -> c -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 232 r ; 233 `STACK_TO_CURSOR ( , t ); 234 i( t != 0) 235 r ; 248 i( `B_DISSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx )-> ty )) { 249 t = DB_KEYEMPTY ; 250 r ; 253 i( `F_ISSET ( , C_RENUMBER )) { 255 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 256 r ; 257 i(( t = `__bam_adju ( dbc , -1)) != 0) 258 r ; 259 i(( t = `__m_ ( dbc , CA_DELETE , & nc )) != 0) 260 r ; 261 i( nc > 0 && 262 `CURADJ_LOG ( dbc && ( t = `__bam_rcudj_log ( dbp , dbc-> txn , 263 & l , 0, CA_DELETE , -> ro , cp-> o , cp-> d )) != 0) 264 r ; 279 i( `NUM_ENT ( -> ge =0 && `PGNO (->ge!-> ro ) { 284 t = `__bam_dges ( dbc , 0, 0); 290 ack = 0; 291 -> ge = NULL ; 295 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 296 r ; 298 `B_TSET_DELETED ( bk . ty , B_KEYDATA ); 299 bk . n = 0; 300 `DB_INIT_DBT ( hdr , & bk , `SSZA ( BKEYDATA , da )); 301 `DB_INIT_DBT ( da , "", 0); 302 i(( t = `__db_pem ( dbc , 303 -> ge , cp-> dx , `BKEYDATA_SIZE (0), & hdr , & da )) != 0) 304 r ; 307 t -> _modifd = 1; 309 r : i( ack && ( t_t = `__bam_kl ( dbc , STK_CLRDBC )!0 && t == 0) 310 t = t_t ; 312 ( t ); 313 } } 323 $__mc_g ( dbc , key , da , ags , pgn ) 324 DBC * dbc ; 325 DBT * key , * da ; 326 u_t32_t ags ; 327 db_pgno_t * pgn ; 329 BTREE_CURSOR * ; 330 DB * dbp ; 331 cmp , exa , t ; 333 `COMPQUIET ( pgn , NULL ); 335 dbp = dbc ->dbp; 336 = ( BTREE_CURSOR *) dbc -> ; 338 `LF_CLR ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 339 y : ags ) { 340 DB_CURRENT : 346 i( `CD_ISSET ( )) 347 ( DB_KEYEMPTY ); 349 DB_NEXT_DUP : 356 i(! `F_ISSET ( dbc , DBC_OPD )) 357 ( DB_NOTFOUND ); 359 DB_NEXT_NODUP : 365 DB_NEXT : 366 ags = DB_NEXT ; 372 i( `CD_ISSET ( )) { 376 `CD_CLR ( ); 380 i( -> o ! RECNO_OOB ) { 381 ++ -> o ; 385 DB_FIRST : 386 ags = DB_NEXT ; 387 -> o = 1; 389 DB_PREV_DUP : 396 i(! `F_ISSET ( dbc , DBC_OPD )) 397 ( DB_NOTFOUND ); 399 DB_PREV_NODUP : 405 DB_PREV : 406 ags = DB_PREV ; 407 i( -> o ! RECNO_OOB ) { 408 i( -> o == 1) { 409 t = DB_NOTFOUND ; 410 r ; 412 -- -> o ; 416 DB_LAST : 417 ags = DB_PREV ; 418 i((( t = `__m_upde ( dbc , 419 DB_MAX_RECORDS , 0)!0&& t ! DB_NOTFOUND ) 420 r ; 421 i(( t = `__bam_ecs ( dbc , & -> o )) != 0) 422 r ; 423 i( -> o == 0) { 424 t = DB_NOTFOUND ; 425 r ; 428 DB_GET_BOTHC : 438 i( `F_ISSET ( dbc , DBC_OPD )) { 439 -> o ++; 442 t = DB_NOTFOUND ; 443 r ; 445 DB_GET_BOTH : 446 DB_GET_BOTH_RANGE : 453 i( `F_ISSET ( dbc , DBC_OPD )) { 454 -> o = 1; 458 DB_SET : 459 DB_SET_RANGE : 460 i(( t = `__m_gno ( dbc , key , & -> o , 0)) != 0) 461 r ; 464 t = `__db_unknown_ag ( dbp -> dbv , "__mc_g", ags ); 465 r ; 477 i(( ags = DB_NEXT || fg= DB_CURRENT && (( t = 478 `__m_upde ( dbc , -> o , 0)!0&& t ! DB_NOTFOUND ) 479 r ; 481 ;; ++ -> o ) { 483 i(( t = `__bam_rch ( dbc , & -> o , 484 `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND , 485 1, & exa )) != 0) 486 r ; 487 i(! exa ) { 488 t = DB_NOTFOUND ; 489 r ; 493 `STACK_TO_CURSOR ( , t ); 494 i( t != 0) 495 r ; 506 i( `B_DISSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx )-> ty )) 507 ags ) { 508 DB_NEXT : 509 DB_PREV : 510 () `__bam_kl ( dbc , STK_CLRDBC ); 511 y ; 512 DB_GET_BOTH : 513 DB_GET_BOTH_RANGE : 521 i( `F_ISSET ( dbc , DBC_OPD )) { 522 () `__bam_kl ( dbc , STK_CLRDBC ); 525 t = DB_NOTFOUND ; 526 r ; 528 t = DB_KEYEMPTY ; 529 r ; 532 i( ags = DB_GET_BOTH || 533 ags = DB_GET_BOTHC || fg= DB_GET_BOTH_RANGE ) { 534 i(( t = `__bam_cmp ( dbp , dbc -> txn , da , 535 -> ge , cp-> dx , __bam_defcmp , & cmp )) != 0) 536 ( t ); 537 i( cmp == 0) 539 i(! `F_ISSET ( dbc , DBC_OPD )) { 540 t = DB_NOTFOUND ; 541 r ; 543 () `__bam_kl ( dbc , STK_CLRDBC ); 549 i(! `F_ISSET ( dbc , DBC_OPD && !F_ISSET( key , DB_DBT_ISSET )) { 550 t = `__db_tcy ( dbp -> dbv , 551 key , & -> o , (cp->recno), 552 & dbc -> rkey -> da , &dbc->rkey-> un ); 553 `F_SET ( key , DB_DBT_ISSET ); 557 r : `CD_CLR ( ); 559 ( t ); 560 } } 569 $__mc_put ( dbc , key , da , ags , pgn ) 570 DBC * dbc ; 571 DBT * key , * da ; 572 u_t32_t ags ; 573 db_pgno_t * pgn ; 575 BTREE_CURSOR * ; 576 DB * dbp ; 577 DB_ENV * dbv ; 578 DB_LSN l ; 579 u_t32_t iiags ; 580 exa , nc , t , t_t ; 581 * g ; 583 `COMPQUIET ( pgn , NULL ); 585 dbp = dbc ->dbp; 586 dbv = dbp ->dbenv; 587 = ( BTREE_CURSOR *) dbc -> ; 596 i( `F_ISSET ( dbc , DBC_OPD )) 597 ags ) { 598 DB_KEYFIRST : 599 -> o = 1; 600 ags = DB_BEFORE ; 602 DB_KEYLAST : 603 i(( t = `__m_add ( dbc , 604 & -> o , da , DB_APPEND , 0)) != 0) 605 ( t ); 606 i( `CURADJ_LOG ( dbc ) && 607 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, 608 CA_ICURRENT , -> ro , cp-> o , cp-> d )) != 0) 609 ( t ); 620 i( ags = DB_KEYFIRST || 621 ags = DB_KEYLAST || fg= DB_NOOVERWRITE ) { 622 t = `__m_gno ( dbc , key , & -> o , 1); 623 i( t =0 || = DB_NOTFOUND ) 624 t = `__m_add ( dbc , & -> o , da , ags , 0); 625 ( t ); 636 i( `CD_ISSET ( )) 637 iiags = DB_BEFORE ; 639 iiags = ags ; 641 l : i(( t = `__bam_rch ( dbc , & -> o , SR_INSERT , 1, & exa )) != 0) 642 r ; 647 `DB_ASSERT ( dbv , exa || `CD_ISSET ( )); 650 `STACK_TO_CURSOR ( , t ); 651 i( t != 0) 652 r ; 654 t = `__bam_iem ( dbc , key , da , iiags , 0); 655 t_t = `__bam_kl ( dbc , STK_CLRDBC ); 657 i( t_t !0 && ( t =0 || = DB_NEEDSPLIT )) 658 t = t_t ; 659 i( t = DB_NEEDSPLIT ) { 660 g = & -> o ; 661 i(( t = `__bam_l ( dbc , g , NULL )) != 0) 662 r ; 663 l ; 665 i( t != 0) 666 r ; 668 ags ) { 669 DB_AFTER : 670 i(( t = `__m_ ( dbc , CA_IAFTER , & nc )) != 0) 671 r ; 678 i( iiags = DB_AFTER ) 679 ++ -> o ; 682 i( nc > 0 && `CURADJ_LOG ( dbc ) && 683 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, CA_IAFTER , 684 -> ro , cp-> o , cp-> d )) != 0) 685 r ; 687 DB_BEFORE : 688 i(( t = `__m_ ( dbc , CA_IBEFORE , & nc )) != 0) 689 r ; 690 -- -> o ; 693 i( nc > 0 && `CURADJ_LOG ( dbc ) && 694 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, CA_IBEFORE , 695 -> ro , cp-> o , cp-> d )) != 0) 696 r ; 698 DB_CURRENT : 704 i(! `CD_ISSET ( )) 708 i(( t = `__m_ ( dbc , CA_ICURRENT , & nc )) != 0) 709 r ; 710 i( nc > 0 && `CURADJ_LOG ( dbc ) && 711 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, 712 CA_ICURRENT , -> ro , cp-> o , cp-> d )) != 0) 713 r ; 720 i(! `F_ISSET ( dbc , DBC_OPD ) && 721 ( ags = DB_AFTER || fg= DB_BEFORE && key ! NULL ) 722 t = `__db_tcy ( dbv , key , & -> o , 723 ( -> o ), & dbc -> rkey -> da , &dbc->rkey-> un ); 726 r : `CD_CLR ( ); 728 ( t ); 729 } } 738 $__m_ ( dbc_g , , foundp ) 739 DBC * dbc_g ; 740 _o_g ; 741 * foundp ; 743 BTREE_CURSOR * , * _g ; 744 DB * dbp , * ldbp ; 745 DB_ENV * dbv ; 746 DBC * dbc ; 747 db_o_t o ; 748 u_t32_t d ; 749 adjued , found ; 751 dbp = dbc_g ->dbp; 752 dbv = dbp ->dbenv; 753 _g = ( BTREE_CURSOR *) dbc_g -> ; 754 o = _g ->recno; 760 `DB_ASSERT ( dbv , `F_ISSET ( _g , C_RENUMBER )); 762 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 772 i( = CA_DELETE ) { 773 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 774 d = 1; 775 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 776 ldbp = `TAILQ_NEXT dbp, dblilks )) { 777 `MUTEX_LOCK ( dbv , dbp -> mux ); 778 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 779 = ( BTREE_CURSOR *) dbc -> ; 780 i( _g -> ro = ->root && 781 o = ->&& `CD_ISSET (cp) && 782 d < ->order && 783 ! `MVCC_SKIP_CURADJ ( dbc , -> ro )) 784 d = ->order + 1; 786 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 789 d = INVALID_ORDER ; 792 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 793 found = 0; 794 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 795 ldbp = `TAILQ_NEXT dbp, dblilks )) { 796 `MUTEX_LOCK ( dbv , dbp -> mux ); 797 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 798 = ( BTREE_CURSOR *) dbc -> ; 799 i( _g -> ro ! ->root || 800 `MVCC_SKIP_CURADJ ( dbc , -> ro )) 802 ++ found ; 803 adjued = 0; 804 ) { 805 CA_DELETE : 806 i( o < ->recno) { 807 -- -> o ; 812 i( o = ->&& `CD_ISSET (cp)) 813 -> d += order; 814 } i( o = ->recno && 815 ! `CD_ISSET ( )) { 816 `CD_SET ( ); 817 -> d = order; 820 CA_IBEFORE : 825 i( `C_EQUAL ( _g , )) { 826 ++ -> o ; 827 adjued = 1; 829 ; 830 CA_ICURRENT : 842 `DB_ASSERT ( dbv , `CD_ISSET ( _g )); 843 i( `C_EQUAL ( _g , )) { 844 `CD_CLR ( ); 848 CA_IAFTER : 849 : i(! adjued && `C_LESSTHAN ( _g , )) { 850 ++ -> o ; 851 adjued = 1; 853 i( o = ->&& adjued ) 862 -> d -( _g ->order - 1); 866 `MUTEX_UNLOCK ( dbp -> dbv , dbp-> mux ); 868 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 870 i( foundp ! NULL ) 871 * foundp = found ; 873 } } 882 $__m_gno ( dbc , key , p , n_ ) 883 DBC * dbc ; 884 cڡ DBT * key ; 885 db_o_t * p ; 886 n_ ; 888 DB * dbp ; 889 db_o_t o ; 891 dbp = dbc ->dbp; 894 i(( o = *( db_o_t *) key -> da ) == 0) { 895 `__db_rx ( dbp -> dbv , "illegalecordumber of 0"); 896 ( EINVAL ); 898 i( p ! NULL ) 899 * p = o ; 905 ( dbc -> dbty = DB_RECNO ? 906 `__m_upde ( dbc , o , n_ ) : 0); 907 } } 914 $__m_upde ( dbc , o , n_ ) 915 DBC * dbc ; 916 db_o_t o ; 917 n_ ; 919 BTREE * t ; 920 DB * dbp ; 921 DBT * rda ; 922 db_o_t ecs ; 923 t ; 925 dbp = dbc ->dbp; 926 t = dbp -> bt_ ; 932 i(! n_ && t -> _eof ) 939 i(( t = `__bam_ecs ( dbc , & ecs )) != 0) 940 ( t ); 941 i(! t -> _eof && o > ecs ) { 942 i(( t = `__m_d ( dbc , o )!0 && ! DB_NOTFOUND ) 943 ( t ); 944 i(( t = `__bam_ecs ( dbc , & ecs )) != 0) 945 ( t ); 952 i(! n_ || o < ecs + 1) 955 rda = & dbc -> my_rda ; 956 rda -> ags = 0; 957 rda -> size = 0; 959 o > ++ ecs ) 960 i(( t = `__m_add ( dbc , 961 & ecs , rda , 0, BI_DELETED )) != 0) 962 ( t ); 964 } } 971 $__m_sour ( dbp ) 972 DB * dbp ; 974 DB_ENV * dbv ; 975 BTREE * t ; 976 * sour ; 977 t ; 979 dbv = dbp ->dbenv; 980 t = dbp -> bt_ ; 983 i(( t = `__db_ame ( dbv , 984 DB_APP_DATA , t -> _sour , 0, NULL , & sour )) != 0) 985 ( t ); 986 `__os_ ( dbv , t -> _sour ); 987 t -> _sour = sour ; 995 i(( t -> _ = `fݒ -> _sour , "rb")= NULL ) { 996 t = `__os_g_o (); 997 `__db_r ( dbv , t , "%s", t -> _sour ); 998 ( t ); 1001 t -> _eof = 0; 1003 } } 1012 $__m_wreback ( dbp ) 1013 DB * dbp ; 1015 BTREE * t ; 1016 DB_ENV * dbv ; 1017 DBC * dbc ; 1018 DBT key , da ; 1019 FILE * ; 1020 db_o_t keyno ; 1021 t , t_t ; 1022 u_t8_t dim , * d ; 1024 t = dbp -> bt_ ; 1025 dbv = dbp ->dbenv; 1026 = NULL ; 1027 d = NULL ; 1030 i(! t -> _modifd ) 1034 i( t -> _sour = NULL ) { 1035 t -> _modifd = 0; 1045 `memt (& key , 0, (key)); 1046 key . size = ( db_o_t ); 1047 key . da = & keyno ; 1048 `memt (& da , 0, (data)); 1049 `F_SET (& da , DB_DBT_REALLOC ); 1052 i(( t = `__db_curs ( dbp , NULL , & dbc , 0)) != 0) 1053 ( t ); 1076 i(( t = 1077 `__m_upde ( dbc , DB_MAX_RECORDS , 0)!0 && t ! DB_NOTFOUND ) 1078 r ; 1083 i( t -> _ ! NULL ) { 1084 i( `fo ( t -> _ ) != 0) { 1085 t = `__os_g_o (); 1086 `__db_r ( dbv , t , "%s", t -> _sour ); 1087 r ; 1089 t -> _ = NULL ; 1091 i(( = `fݒ ( t -> _sour , "wb")= NULL ) { 1092 t = `__os_g_o (); 1093 `__db_r ( dbv , t , "%s", t -> _sour ); 1094 r ; 1101 dim = t -> _dim ; 1102 keyno = 1;; ++keyno) { 1103 t = `__db_g ( dbp , NULL , & key , & da , 0)) { 1105 i( da . size != 0 && 1106 `fwre ( da .da, 1, da. size , ) != data.size) 1107 wre_r ; 1109 DB_KEYEMPTY : 1110 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) { 1111 i( d = NULL ) { 1112 i(( t = `__os_mloc ( 1113 dbv , t -> _n , & d )) != 0) 1114 r ; 1115 `memt ( d , t -> _d ,-> _n ); 1117 i( `fwre ( d , 1, t -> _n , ) !=->re_len) 1118 wre_r ; 1121 DB_NOTFOUND : 1122 t = 0; 1123 de ; 1125 r ; 1127 i(! `F_ISSET ( dbp , DB_AM_FIXEDLEN ) && 1128 `fwre (& dim , 1, 1, ) != 1) { 1129 wre_r : t = `__os_g_o (); 1130 `__db_r ( dbv , t , 1131 "%s: wredbackg fe", t -> _sour ); 1132 r ; 1136 r : 1137 de : 1138 i( ! NULL && `fo (fp) != 0) { 1139 t_t = `__os_g_o (); 1140 `__db_r ( dbv , t_t , "%s", t -> _sour ); 1141 i( t == 0) 1142 t = t_t ; 1146 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1147 t = t_t ; 1150 i( da .d! NULL ) 1151 `__os_u ( dbv , da .data); 1152 i( d ! NULL ) 1153 `__os_ ( dbv , d ); 1155 i( t == 0) 1156 t -> _modifd = 0; 1158 ( t ); 1159 } } 1166 $__m_d ( dbc , t ) 1167 DBC * dbc ; 1168 db_o_t t ; 1170 BTREE * t ; 1171 DB * dbp ; 1172 DBT da , * rda ; 1173 db_o_t o ; 1174 size_t n ; 1175 ch , t , was_modifd ; 1177 t = dbc -> dbp -> bt_ ; 1178 dbp = dbc ->dbp; 1179 was_modifd = t -> _modifd ; 1181 i(( t = `__bam_ecs ( dbc , & o )) != 0) 1182 ( t ); 1189 n = `F_ISSET ( dbp , DB_AM_FIXEDLEN ? t -> _n : 256; 1190 rda = & dbc -> my_rkey ; 1191 i( rda -> un < n ) { 1192 i(( t = `__os_loc ( 1193 dbp -> dbv , n , & rda -> da )) != 0) { 1194 rda -> un = 0; 1195 rda -> da = NULL ; 1196 ( t ); 1198 rda -> un = ( u_t32_t ) n ; 1201 `memt (& da , 0, (data)); 1202 o < t ) { 1203 da .d rda ->data; 1204 da . size = 0; 1205 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) 1206 n = t -> _n ;en > 0; --len) { 1207 i(( ch = `fgc ( t -> _ )= EOF ) { 1208 i( da . size == 0) 1209 eof ; 1212 (( u_t8_t *) da .da)[da. size ++] = ch ; 1216 i(( ch = `fgc ( t -> _ )= EOF ) { 1217 i( da . size == 0) 1218 eof ; 1221 i( ch = t -> _dim ) 1224 (( u_t8_t *) da .da)[da. size ++] = ch ; 1225 i( da . size = rda -> un ) { 1226 i(( t = `__os_loc ( dbp -> dbv , 1227 rda -> un *= 2, 1228 & rda -> da )) != 0) { 1229 rda -> un = 0; 1230 rda -> da = NULL ; 1231 ( t ); 1233 da .d rda ->data; 1244 i( t -> _ϡ > o ) { 1245 ++ o ; 1246 i(( t = `__m_add ( dbc , & o , & da , 0, 0)) != 0) 1247 r ; 1249 ++ t -> _ϡ ; 1253 eof : t -> _eof = 1; 1254 t = DB_NOTFOUND ; 1256 r : i(! was_modifd ) 1257 t -> _modifd = 0; 1259 ( t ); 1260 } } 1267 $__m_add ( dbc , , da , ags , bi_ags ) 1268 DBC * dbc ; 1269 db_o_t * ; 1270 DBT * da ; 1271 u_t32_t ags , bi_ags ; 1273 BTREE_CURSOR * ; 1274 exa , t , ack , t_t ; 1276 = ( BTREE_CURSOR *) dbc -> ; 1278 y : 1279 i(( t = `__bam_rch ( dbc , , 1280 SR_INSERT | ( ags = DB_APPEND ? SR_APPEND : 0), 1, & exa )) != 0) 1281 ( t ); 1282 ack = 1; 1285 `STACK_TO_CURSOR ( , t ); 1286 i( t != 0) 1287 r ; 1289 i( exa && ags = DB_NOOVERWRITE && ! `CD_ISSET ( ) && 1290 ! `B_DISSET ( `GET_BKEYDATA ( dbc -> dbp , -> ge , cp-> dx )-> ty )) { 1291 t = DB_KEYEXIST ; 1292 r ; 1299 i( ags = DB_APPEND && dbc -> dbp -> db_nd_o ! NULL && 1300 ( t = dbc -> dbp -> `db_nd_o (dbc->dbp, da , * )) != 0) 1301 r ; 1310 t = `__bam_iem ( dbc , 1311 NULL , da , exa ? DB_CURRENT : DB_BEFORE , bi_ags )) { 1329 DB_NEEDSPLIT : 1331 () `__bam_kl ( dbc , STK_CLRDBC ); 1332 ack = 0; 1334 i(( t = `__bam_l ( dbc , , NULL )) != 0) 1335 r ; 1337 y ; 1340 r ; 1343 r : i( ack && ( t_t = `__bam_kl ( dbc , STK_CLRDBC )!0 && t == 0) 1344 t = t_t ; 1346 ( t ); 1347 } } @../btree/bt_rsearch.c 41 ~"db_cfig.h " 43 ~"db_t.h " 44 ~"dbc/db_ge.h " 45 ~"dbc/b.h " 46 ~"dbc/lock.h " 47 ~"dbc/mp.h " 56 $__bam_rch ( dbc , , ags , , exap ) 57 DBC * dbc ; 58 db_o_t * ; 59 u_t32_t ags ; 60 , * exap ; 62 BINTERNAL * bi ; 63 BTREE_CURSOR * ; 64 DB * dbp ; 65 DB_LOCK lock ; 66 DB_MPOOLFILE * mpf ; 67 PAGE * h ; 68 RINTERNAL * ri ; 69 db_dx_t adju , dofft , dx , t ; 70 db_lockmode_t lock_mode ; 71 db_pgno_t pg ; 72 db_o_t o , t_o , tٮ ; 73 t , ack , t_t ; 75 dbp = dbc ->dbp; 76 mpf = dbp ->mpf; 77 = ( BTREE_CURSOR *) dbc -> ; 78 h = NULL ; 80 `BT_STK_CLR ( ); 98 i(( t = `__bam_g_ro ( dbc , -> ro , , ags , & ack )) != 0) 99 ( t ); 100 lock_mode = -> c ->lock_mode; 101 lock = -> c ->lock; 102 h = -> c -> ge ; 104 `BT_STK_CLR ( ); 117 tٮ = `RE_NREC ( h ); 118 i( `LF_ISSET ( SR_APPEND )) { 119 * exap = 0; 120 * = o = tٮ + 1; 122 o = * ; 123 i( o < tٮ ) 124 * exap = 1; 126 * exap = 0; 127 i(! `LF_ISSET ( SR_PAST_EOF || o > tٮ + 1) { 136 t = `__memp_ut ( mpf , h , dbc -> iܙy ); 137 i(( t_t = 138 `__TLPUT ( dbc , lock )!0 && t == 0) 139 t = t_t ; 140 ( t =0 ? DB_NOTFOUND :et); 151 tٮ = 0;;) { 152 `TYPE ( h )) { 153 P_LBTREE : 154 P_LDUP : 155 o - tٮ ; 160 i( `TYPE ( h = P_LBTREE ) { 161 adju = P_INDX ; 162 dofft = O_INDX ; 164 adju = O_INDX ; 165 dofft = 0; 167 t_o = 0, dx = 0;; indx + adju ) { 168 i( dx > `NUM_ENT ( h )) { 169 * exap = 0; 170 i(! `LF_ISSET ( SR_PAST_EOF ) || 171 o > t_o + 1) { 172 t = `__memp_ut ( mpf , 173 h , dbc -> iܙy ); 174 h = NULL ; 175 i(( t_t = `__TLPUT ( dbc , 176 lock )!0 && t == 0) 177 t = t_t ; 178 i( t == 0) 179 t = DB_NOTFOUND ; 180 r ; 183 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , h , 184 dx + dofft )-> ty ) && 185 ++ t_o = o ) 190 `BT_STK_ENTER ( dbp -> dbv , 191 , h , dx , lock , lock_mode , t ); 192 i( t != 0) 193 r ; 195 P_IBTREE : 196 dx = 0, t = `NUM_ENT ( h );;) { 197 bi = `GET_BINTERNAL ( dbp , h , dx ); 198 i(++ dx = t || tٮ + bi -> ecs > o ) 200 tٮ + bi -> ecs ; 202 pg = bi -> pgno ; 204 P_LRECNO : 205 o - tٮ ; 208 -- o ; 209 `BT_STK_ENTER ( dbp -> dbv , 210 , h , o , lock , lock_mode , t ); 211 i( t != 0) 212 r ; 214 P_IRECNO : 215 dx = 0, t = `NUM_ENT ( h );;) { 216 ri = `GET_RINTERNAL ( dbp , h , dx ); 217 i(++ dx = t || tٮ + ri -> ecs > o ) 219 tٮ + ri -> ecs ; 221 pg = ri -> pgno ; 224 ( `__db_pgfmt ( dbp -> dbv , h -> pgno )); 226 -- dx ; 229 i( = `LEVEL ( h )) { 230 `BT_STK_ENTER ( dbp -> dbv , 231 , h , dx , lock , lock_mode , t ); 232 i( t != 0) 233 r ; 236 i( ack ) { 237 `BT_STK_PUSH ( dbp -> dbv , 238 , h , dx , lock , lock_mode , t ); 239 i( t != 0) 240 r ; 241 h = NULL ; 243 lock_mode = DB_LOCK_WRITE ; 244 i(( t = 245 `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 246 r ; 253 i(( `LF_ISSET ( SR_PARENT ) && 254 ( u_t8_t )( + 1>(u_t8_t)( `LEVEL ( h ) - 1)) || 255 ( `LEVEL ( h - 1= LEAFLEVEL ) 256 ack = 1; 258 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 259 r ; 260 h = NULL ; 262 lock_mode = ack && 263 `LF_ISSET ( SR_WRITE ? DB_LOCK_WRITE : DB_LOCK_READ ; 264 i(( t = `__db_lg ( dbc , 265 LCK_COUPLE_ALWAYS , pg , lock_mode , 0, & lock )) != 0) { 271 () `__LPUT ( dbc , lock ); 272 r ; 276 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , 0, & h )) != 0) 277 r ; 281 r : i( h ! NULL && 282 ( t_t = `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 283 t = t_t ; 285 `BT_STK_POP ( ); 286 `__bam_kl ( dbc , 0); 288 ( t ); 289 } } 298 $__bam_adju ( dbc , adju ) 299 DBC * dbc ; 300 t32_t adju ; 302 BTREE_CURSOR * ; 303 DB * dbp ; 304 DB_MPOOLFILE * mpf ; 305 EPG * g ; 306 PAGE * h ; 307 db_pgno_t ro_pgno ; 308 t ; 310 dbp = dbc ->dbp; 311 mpf = dbp ->mpf; 312 = ( BTREE_CURSOR *) dbc -> ; 313 ro_pgno = -> ro ; 316 g = -> ;pg <-> c ; ++epg) { 317 h = g -> ge ; 318 i( `TYPE ( h = P_IBTREE || TYPE(h= P_IRECNO ) { 319 i(( t = `__memp_dty ( mpf , 320 & h , dbc -> txn , dbc-> iܙy , 0)) != 0) 321 ( t ); 322 g -> ge = h ; 323 i( `DBC_LOGGING ( dbc )) { 324 i(( t = `__bam_dju_log ( dbp , dbc -> txn , 325 & `LSN ( h ), 0, `PGNO (h), &LSN(h), 326 ( u_t32_t ) g -> dx , adju , 327 `PGNO ( h = ro_pgno ? 328 CAD_UPDATEROOT : 0)) != 0) 329 ( t ); 331 `LSN_NOT_LOGGED ( `LSN ( h )); 333 i( `TYPE ( h = P_IBTREE ) 334 `GET_BINTERNAL ( dbp , h , g -> dx )-> ecs += 335 adju ; 337 `GET_RINTERNAL ( dbp , h , g -> dx )-> ecs += 338 adju ; 340 i( `PGNO ( h = ro_pgno ) 341 `RE_NREC_ADJ ( h , adju ); 345 } } 354 $__bam_ecs ( dbc , p ) 355 DBC * dbc ; 356 db_o_t * p ; 358 DB * dbp ; 359 DB_LOCK lock ; 360 DB_MPOOLFILE * mpf ; 361 PAGE * h ; 362 db_pgno_t pgno ; 363 t , t_t ; 365 dbp = dbc ->dbp; 366 mpf = dbp ->mpf; 368 pgno = dbc -> -> ro ; 369 i(( t = `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & lock )) != 0) 370 ( t ); 371 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & h )) != 0) 372 ( t ); 374 * p = `RE_NREC ( h ); 376 t = `__memp_ut ( mpf , h , dbc -> iܙy ); 377 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 378 t = t_t ; 380 ( t ); 381 } } 389 db_o_t 390 $__bam_tٮ ( dbp , h ) 391 DB * dbp ; 392 PAGE * h ; 394 db_o_t ecs ; 395 db_dx_t dx , t ; 397 ecs = 0; 398 t = `NUM_ENT ( h ); 400 `TYPE ( h )) { 401 P_LBTREE : 403 dx = 0; indx < t ; indx + P_INDX ) 404 i(! `B_DISSET ( 405 `GET_BKEYDATA ( dbp , h , dx + O_INDX )-> ty )) 406 ++ ecs ; 408 P_LDUP : 410 dx = 0; indx < t ; indx + O_INDX ) 411 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , h , dx )-> ty )) 412 ++ ecs ; 414 P_IBTREE : 415 dx = 0; indx < t ; indx + O_INDX ) 416 ecs + `GET_BINTERNAL ( dbp , h , dx )->nrecs; 418 P_LRECNO : 419 ecs = `NUM_ENT ( h ); 421 P_IRECNO : 422 dx = 0; indx < t ; indx + O_INDX ) 423 ecs + `GET_RINTERNAL ( dbp , h , dx )->nrecs; 427 ( ecs ); 428 } } @../btree/bt_search.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 49 ~"dbc/lock.h " 50 ~"dbc/mp.h " 60 $__bam_g_ro ( dbc , pg , ev , ags , ack ) 61 DBC * dbc ; 62 db_pgno_t pg ; 63 ev ; 64 u_t32_t ags ; 65 * ack ; 67 BTREE_CURSOR * ; 68 DB * dbp ; 69 DB_LOCK lock ; 70 DB_MPOOLFILE * mpf ; 71 PAGE * h ; 72 db_lockmode_t lock_mode ; 73 t , t_t ; 75 dbp = dbc ->dbp; 76 mpf = dbp ->mpf; 77 = ( BTREE_CURSOR *) dbc -> ; 87 y_aga : 88 * ack = `LF_ISSET ( SR_STACK ) && 89 ( dbc -> dbty = DB_RECNO || `F_ISSET ( , C_RECNUM )); 90 lock_mode = DB_LOCK_READ ; 91 i(* ack || 92 `LF_ISSET ( SR_DEL || (LF_ISSET( SR_NEXT && LF_ISSET( SR_WRITE ))) 93 lock_mode = DB_LOCK_WRITE ; 94 i(( t = `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 95 ( t ); 96 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , 0, & h )) != 0) { 98 () `__LPUT ( dbc , lock ); 99 ( t ); 110 i(!* ack && 111 (( `LF_ISSET ( SR_PARENT && ( u_t8_t )( ev + 1> `LEVEL ( h )) || 112 ( `LF_ISSET ( SR_WRITE && `LEVEL ( h = LEAFLEVEL ) || 113 ( `LF_ISSET ( SR_START && ev = `LEVEL ( h )))) { 114 i(! `STD_LOCKING ( dbc )) 115 no_lock ; 116 t = `__memp_ut ( mpf , h , dbc -> iܙy ); 117 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 118 t = t_t ; 119 i( t != 0) 120 ( t ); 121 lock_mode = DB_LOCK_WRITE ; 122 i(( t = `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 123 ( t ); 124 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , 0, & h )) != 0) { 126 () `__LPUT ( dbc , lock ); 127 ( t ); 129 i(!(( `LF_ISSET ( SR_PARENT ) && 130 ( u_t8_t )( ev + 1> `LEVEL ( h )) || 131 ( `LF_ISSET ( SR_WRITE && `LEVEL ( h = LEAFLEVEL ) || 132 ( `LF_ISSET ( SR_START && ev = `LEVEL ( h )))) { 134 t = `__memp_ut ( mpf , h , dbc -> iܙy ); 135 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 136 t = t_t ; 137 i( t != 0) 138 ( t ); 139 y_aga ; 141 no_lock : * ack = 1; 143 `BT_STK_ENTER ( dbp -> dbv , , h , 0, lock , lock_mode , t ); 145 ( t ); 146 } } 156 $__bam_ch ( dbc , ro_pgno , key , ags , ev , , exap ) 157 DBC * dbc ; 158 db_pgno_t ro_pgno ; 159 cڡ DBT * key ; 160 u_t32_t ags ; 161 ev , * exap ; 162 db_o_t * ; 164 BTREE * t ; 165 BTREE_CURSOR * ; 166 DB * dbp ; 167 DB_ENV * dbv ; 168 DB_LOCK lock ; 169 DB_MPOOLFILE * mpf ; 170 PAGE * h ; 171 db_dx_t ba , i , dx , * p , lim ; 172 db_lockmode_t lock_mode ; 173 db_pgno_t pg ; 174 db_o_t o ; 175 adju , cmp , dofft , t , ack , t_t ; 176 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 178 dbp = dbc ->dbp; 179 dbv = dbp ->dbenv; 180 mpf = dbp ->mpf; 181 = ( BTREE_CURSOR *) dbc -> ; 182 h = NULL ; 183 t = dbp -> bt_ ; 184 o = 0; 186 `BT_STK_CLR ( ); 197 i( ro_pgno = PGNO_INVALID ) 198 ro_pgno = -> ro ; 199 i(( t = `__bam_g_ro ( dbc , ro_pgno , ev , ags , & ack )) != 0) 200 ( t ); 201 lock_mode = -> c ->lock_mode; 202 lock = -> c ->lock; 203 h = -> c -> ge ; 205 `BT_STK_CLR ( ); 208 func = `F_ISSET ( dbc , DBC_OPD ) ? 209 ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare) : 210 t -> bt_com ; 213 p = `P_INP ( dbp , h ); 214 adju = `TYPE ( h = P_LBTREE ? P_INDX : O_INDX ; 215 i( `LF_ISSET ( SR_MIN | SR_MAX )) { 216 i( `LF_ISSET ( SR_MIN || `NUM_ENT ( h ) == 0) 217 dx = 0; 218 i( `TYPE ( h = P_LBTREE ) 219 dx = `NUM_ENT ( h ) - 2; 221 dx = `NUM_ENT ( h ) - 1; 223 i( `LEVEL ( h = LEAFLEVEL || 224 (! `LF_ISSET ( SR_START && `LEVEL ( h = ev )) { 225 i( `LF_ISSET ( SR_NEXT )) 226 g_xt ; 227 found ; 229 xt ; 238 `DB_BINARY_SEARCH_FOR ( ba , lim , h , adju ) { 239 `DB_BINARY_SEARCH_INCR ( dx , ba , lim , adju ); 240 i(( t = `__bam_cmp ( dbp , dbc -> txn , key , 241 h , dx , func , & cmp )) != 0) 242 r ; 243 i( cmp == 0) { 244 i( `LEVEL ( h = LEAFLEVEL || 245 (! `LF_ISSET ( SR_START ) && 246 `LEVEL ( h = ev )) { 247 i( `LF_ISSET ( SR_NEXT )) 248 g_xt ; 249 found ; 251 xt ; 253 i( cmp > 0) 254 `DB_BINARY_SEARCH_SHIFT_BASE ( dx , ba , 255 lim , adju ); 266 i( `LEVEL ( h = LEAFLEVEL || 267 (! `LF_ISSET ( SR_START && `LEVEL ( h = ev )) { 268 * exap = 0; 270 i( `LF_ISSET ( SR_EXACT )) { 271 t = DB_NOTFOUND ; 272 r ; 275 i( `LF_ISSET ( SR_STK_ONLY )) { 276 `BT_STK_NUM ( dbv , , h , ba , t ); 277 i(( t_t = 278 `__LPUT ( dbc , lock )!0 && t == 0) 279 t = t_t ; 280 i(( t_t = `__memp_ut ( mpf , 281 h , dbc -> iܙy )!0 && t == 0) 282 t = t_t ; 283 ( t ); 285 i( `LF_ISSET ( SR_NEXT )) { 286 g_xt : 290 i( `PGNO ( h = ro_pgno ) { 291 t = DB_NOTFOUND ; 292 r ; 300 i(( t = `__LPUT ( dbc , lock )) != 0) 301 r ; 302 i(( t = 303 `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 304 r ; 305 h = NULL ; 306 `LF_SET ( SR_MIN ); 307 `LF_CLR ( SR_NEXT ); 308 dx = -> ->indx + 1; 309 i( dx = `NUM_ENT ( -> -> ge )) { 310 t = DB_NOTFOUND ; 311 -> c ++; 312 r ; 314 h = -> -> ge ; 315 -> -> ge = NULL ; 316 lock = -> ->lock; 317 `LOCK_INIT ( -> -> lock ); 318 i(( t = `__bam_kl ( dbc , STK_NOLOCK )) != 0) 319 r ; 320 ack = 1; 321 xt ; 332 i( `LF_ISSET ( SR_DEL && -> c =-> ) 333 -> c ++; 334 `BT_STK_ENTER ( dbv , , h , ba , lock , lock_mode , t ); 335 i( t != 0) 336 r ; 346 dx = ba > 0 ? ba - O_INDX : base; 352 xt : i( ! NULL ) 353 i = 0; i < dx ; ++i) 354 o + `GET_BINTERNAL ( dbp , h , i )-> ecs ; 356 pg = `GET_BINTERNAL ( dbp , h , dx )-> pgno ; 359 i( `LF_ISSET ( SR_START && ev = `LEVEL ( h )) 360 ack = 1; 362 i( `LF_ISSET ( SR_STK_ONLY )) { 363 i( ev = `LEVEL ( h )) { 364 `BT_STK_NUM ( dbv , , h , dx , t ); 365 i(( t_t = 366 `__LPUT ( dbc , lock )!0 && t == 0) 367 t = t_t ; 368 i(( t_t = `__memp_ut ( mpf , 369 h , dbc -> iܙy )!0 && t == 0) 370 t = t_t ; 371 ( t ); 373 `BT_STK_NUMPUSH ( dbv , , h , dx , t ); 374 () `__memp_ut ( mpf , h , dbc -> iܙy ); 375 h = NULL ; 376 i(( t = `__db_lg ( dbc , 377 LCK_COUPLE_ALWAYS , pg , lock_mode , 0, & lock )) != 0) { 383 () `__LPUT ( dbc , lock ); 384 ( t ); 386 } i( ack ) { 388 i( `LF_ISSET ( SR_PARENT && ev = `LEVEL ( h )) { 389 `BT_STK_ENTER ( dbv , 390 , h , dx , lock , lock_mode , t ); 391 i( t != 0) 392 r ; 395 i( `LF_ISSET ( SR_DEL && `NUM_ENT ( h ) > 1) { 400 -> c --; 401 i(( t = `__bam_kl ( dbc , STK_NOLOCK )) != 0) 402 r ; 403 ack = 0; 404 do_d ; 406 `BT_STK_PUSH ( dbv , 407 , h , dx , lock , lock_mode , t ); 408 i( t != 0) 409 r ; 410 h = NULL ; 412 lock_mode = DB_LOCK_WRITE ; 413 i(( t = 414 `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 415 r ; 422 i(( `LF_ISSET ( SR_PARENT ) && 423 ( u_t8_t )( ev + 1>( `LEVEL ( h ) - 1)) || 424 ( `LEVEL ( h - 1= LEAFLEVEL ) 425 ack = 1; 439 i(! `LF_ISSET ( SR_DEL | SR_NEXT )) { 440 i(( t = 441 `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 442 r ; 443 lock_xt ; 446 i(( `LF_ISSET ( SR_DEL && `NUM_ENT ( h ) == 1)) { 447 ack = 1; 448 `LF_SET ( SR_WRITE ); 450 -> c ++; 452 `BT_STK_PUSH ( dbv , , h , 453 dx , lock , lock_mode , t ); 454 i( t != 0) 455 r ; 456 `LOCK_INIT ( lock ); 467 do_d : i( -> c -> ge ! NULL ) { 468 i( `LF_ISSET ( SR_NEXT ) && 469 dx = `NUM_ENT ( h ) - 1) 470 -> c ++; 471 i(( t = 472 `__bam_kl ( dbc , STK_NOLOCK )) != 0) 473 r ; 476 `BT_STK_ENTER ( dbv , , 477 h , dx , lock , lock_mode , t ); 478 i( t != 0) 479 r ; 480 `LOCK_INIT ( lock ); 483 lock_xt : h = NULL ; 485 i( ack && `LF_ISSET ( SR_WRITE )) 486 lock_mode = DB_LOCK_WRITE ; 487 i(( t = `__db_lg ( dbc , 488 LCK_COUPLE_ALWAYS , pg , lock_mode , 0, & lock )) != 0) { 494 () `__LPUT ( dbc , lock ); 495 i( `LF_ISSET ( SR_DEL | SR_NEXT )) 496 -> c ++; 497 r ; 500 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , 0, & h )) != 0) 501 r ; 505 found : * exap = 1; 517 i( `TYPE ( h = P_LBTREE && `NUM_ENT (h> P_INDX ) { 518 i( `LF_ISSET ( SR_DUPLAST )) 519 dx < ( db_dx_t )( `NUM_ENT ( h - P_INDX ) && 520 p [ dx ] =p[dx + P_INDX ]) 521 dx + P_INDX ; 522 i( `LF_ISSET ( SR_DUPFIRST )) 523 dx > 0 && 524 p [ dx ] =p[dx - P_INDX ]) 525 dx - P_INDX ; 534 `DB_ASSERT ( dbv , = NULL || `LF_ISSET ( SR_DELNO )); 535 i( `LF_ISSET ( SR_DELNO )) { 536 dofft = `TYPE ( h = P_LBTREE ? O_INDX : 0; 537 i( `LF_ISSET ( SR_DUPLAST )) 538 `B_DISSET ( `GET_BKEYDATA ( dbp , 539 h , dx + dofft )-> ty ) && indx > 0 && 540 p [ dx ] =p[dx - adju ]) 541 dx - adju ; 543 `B_DISSET ( `GET_BKEYDATA ( dbp , 544 h , dx + dofft )-> ty ) && 545 dx < ( db_dx_t )( `NUM_ENT ( h - adju ) && 546 p [ dx ] =p[dx + adju ]) 547 dx + adju ; 553 i( `B_DISSET ( `GET_BKEYDATA ( dbp , h , dx + dofft )-> ty )) { 554 t = DB_NOTFOUND ; 555 r ; 564 i( ! NULL ) { 565 `DB_ASSERT ( dbv , `TYPE ( h = P_LBTREE ); 567 i = 0; i < dx ; i + P_INDX ) 568 i(! `B_DISSET ( 569 `GET_BKEYDATA ( dbp , h , i + O_INDX )-> ty )) 570 ++ o ; 573 * = o + 1; 577 i( `LF_ISSET ( SR_STK_ONLY )) { 578 `BT_STK_NUM ( dbv , , h , dx , t ); 579 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 580 t = t_t ; 581 i(( t_t = 582 `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 583 t = t_t ; 585 i( `LF_ISSET ( SR_DEL && -> c =-> ) 586 -> c ++; 587 `BT_STK_ENTER ( dbv , , h , dx , lock , lock_mode , t ); 589 i( t != 0) 590 r ; 594 r : i( h ! NULL && ( t_t = 595 `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 596 t = t_t ; 599 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 600 t = t_t ; 602 `BT_STK_POP ( ); 603 `__bam_kl ( dbc , 0); 605 ( t ); 606 } } 615 $__bam_kl ( dbc , ags ) 616 DBC * dbc ; 617 u_t32_t ags ; 619 BTREE_CURSOR * ; 620 DB * dbp ; 621 DB_MPOOLFILE * mpf ; 622 EPG * g ; 623 t , t_t ; 625 dbp = dbc ->dbp; 626 mpf = dbp ->mpf; 627 = ( BTREE_CURSOR *) dbc -> ; 635 t = 0, g = -> ;pg <-> c ; ++epg) { 636 i( g -> ge ! NULL ) { 637 i( `LF_ISSET ( STK_CLRDBC && -> ge = g ->page) { 638 -> ge = NULL ; 639 `LOCK_INIT ( -> lock ); 641 i(( t_t = `__memp_ut ( mpf , 642 g -> ge , dbc -> iܙy )!0 && t == 0) 643 t = t_t ; 651 g -> ge = NULL ; 658 i( `LF_ISSET ( STK_PGONLY )) 660 i( `LF_ISSET ( STK_NOLOCK )) { 661 i(( t_t = `__LPUT ( dbc , g -> lock )!0 && t == 0) 662 t = t_t ; 664 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 665 t = t_t ; 669 i(! `LF_ISSET ( STK_PGONLY )) 670 `BT_STK_CLR ( ); 672 ( t ); 673 } } 682 $__bam_kgrow ( dbv , ) 683 DB_ENV * dbv ; 684 BTREE_CURSOR * ; 686 EPG * p ; 687 size_t s ; 688 t ; 690 s = -> e - cp-> ; 692 i(( t = `__os_oc ( dbv , s * 2, ( EPG ), & p )) != 0) 693 ( t ); 694 `memy ( p , -> , s * ( EPG )); 695 i( -> !-> ack ) 696 `__os_ ( dbv , -> ); 697 -> = p ; 698 -> c = p + s ; 699 -> e = p + s * 2; 701 } } @../btree/bt_split.c 41 ~"db_cfig.h " 43 ~"db_t.h " 44 ~"dbc/db_ge.h " 45 ~"dbc/lock.h " 46 ~"dbc/mp.h " 47 ~"dbc/b.h " 49 __bam_bro __P (( DBC *, PAGE *, u_t32_t , PAGE *, PAGE *)); 50 __bam_ge __P (( DBC *, EPG *, EPG *)); 51 __bam_pl __P (( DBC *, EPG *, PAGE *, PAGE *, db_dx_t *)); 52 __bam_ro __P (( DBC *, EPG *)); 53 __m_ro __P (( DBC *, PAGE *, PAGE *, PAGE *)); 62 $__bam_l ( dbc , g , ro_pgn ) 63 DBC * dbc ; 64 * g ; 65 db_pgno_t * ro_pgn ; 67 BTREE_CURSOR * ; 68 um { UP , DOWN } d ; 69 db_pgno_t ro_pgno ; 70 exa , v , t ; 72 = ( BTREE_CURSOR *) dbc -> ; 73 ro_pgno = -> ro ; 102 d = UP , v = LEAFLEVEL ;; dir == UP ? ++level : --level) { 106 i(( t = ( dbc -> dbty = DB_BTREE ? 107 `__bam_ch ( dbc , PGNO_INVALID , 108 g , SR_WRPAIR , v , NULL , & exa ) : 109 `__bam_rch ( dbc , 110 ( db_o_t *) g , SR_WRPAIR , v , & exa ))) != 0) 113 i( ro_pgn ! NULL ) 114 * ro_pgn = -> c [0]. ge -> pgno = ro_pgno ? 115 ro_pgno : -> c [-1]. ge -> pgno ; 122 i(2 * `B_MAXSIZEONPAGE ( -> ovsize ) 123 <( db_dx_t ) `P_FREESPACE ( dbc -> dbp , -> c [0]. ge )) { 124 `__bam_kl ( dbc , STK_NOLOCK ); 127 t = -> c [0]. ge -> pgno = ro_pgno ? 128 `__bam_ro ( dbc , & -> c [0]) : 129 `__bam_ge ( dbc , & -> c [-1], &cp->csp[0]); 130 `BT_STK_CLR ( ); 132 t ) { 135 i( v = LEAFLEVEL ) 139 i( d = UP ) 140 d = DOWN ; 142 DB_NEEDSPLIT : 149 i( d = DOWN ) 150 d = UP ; 153 r ; 157 r : i( ro_pgn ! NULL ) 158 * ro_pgn = -> ro ; 159 ( t ); 160 } } 167 $__bam_ro ( dbc , ) 168 DBC * dbc ; 169 EPG * ; 171 DB * dbp ; 172 DBT log_dbt ; 173 DB_LSN log_l ; 174 DB_MPOOLFILE * mpf ; 175 PAGE * , * ; 176 db_dx_t l ; 177 u_t32_t ags ; 178 t , t_t ; 180 dbp = dbc ->dbp; 181 mpf = dbp ->mpf; 182 = = NULL ; 185 i( -> ge -> v > MAXBTREELEVEL ) { 186 `__db_rx ( dbp -> dbv , 187 "Tomy bevs: %d", -> ge -> v ); 188 t = ENOSPC ; 189 r ; 192 i(( t = `__memp_dty ( mpf , 193 & -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 194 r ; 197 i(( t = `__db_w ( dbc , `TYPE ( -> ge ), & )) != 0 || 198 ( t = `__db_w ( dbc , `TYPE ( -> ge ), & )) != 0) 199 r ; 200 `P_INIT ( , dbp -> pgsize ,p-> pgno , 201 PGNO_INVALID , `ISINTERNAL ( -> ge ? PGNO_INVALID : -> pgno , 202 -> ge -> v , `TYPE (cp->page)); 203 `P_INIT ( , dbp -> pgsize ,p-> pgno , 204 `ISINTERNAL ( -> ge ? PGNO_INVALID : -> pgno , PGNO_INVALID, 205 -> ge -> v , `TYPE (cp->page)); 208 i(( t = `__bam_pl ( dbc , , , , & l )) != 0) 209 r ; 212 i( `DBC_LOGGING ( dbc )) { 213 `memt (& log_dbt , 0, (log_dbt)); 214 log_dbt . da = -> ge ; 215 log_dbt . size = dbp -> pgsize ; 216 `ZERO_LSN ( log_l ); 217 ags = `F_ISSET ( 218 ( BTREE_CURSOR *) dbc -> , C_RECNUM ? SPL_NRECS : 0; 219 i(( t = `__bam_l_log ( dbp , 220 dbc -> txn , & `LSN ( -> ge ), 0, `PGNO ( ), &LSNp), PGNO( ), 221 & `LSN ( ), ( u_t32_t ) `NUM_ENT ( ), 0, & log_l , 222 dbc -> -> ro , & log_dbt , ags )) != 0) 223 r ; 225 `LSN_NOT_LOGGED ( `LSN ( -> ge )); 226 `LSN ( LSN( -> ge ); 227 `LSN ( LSN( -> ge ); 230 i(( t = ( dbc -> dbty = DB_RECNO ? 231 `__m_ro ( dbc , -> ge , , ) : 232 `__bam_bro ( dbc , -> ge , l , , ))) != 0) 233 r ; 236 t = `__bam__l ( dbc , -> ge -> pgno , ->pgno, ->pgno, l , 1); 239 r : i(( t_t = 240 `__memp_ut ( mpf , -> ge , dbc -> iܙy )!0 && t == 0) 241 t = t_t ; 242 i(( t_t = `__TLPUT ( dbc , -> lock )!0 && t == 0) 243 t = t_t ; 244 i( ! NULL && 245 ( t_t = `__memp_ut ( mpf , , dbc -> iܙy )!0 && t == 0) 246 t = t_t ; 247 i( ! NULL && 248 ( t_t = `__memp_ut ( mpf , , dbc -> iܙy )!0 && t == 0) 249 t = t_t ; 251 ( t ); 252 } } 259 $__bam_ge ( dbc , , ) 260 DBC * dbc ; 261 EPG * , * ; 263 BTREE_CURSOR * bc ; 264 DBT log_dbt ; 265 DB_LSN log_l ; 266 DB * dbp ; 267 DB_LOCK lock , lock ; 268 DB_MPOOLFILE * mpf ; 269 DB_LSN ve_l ; 270 PAGE * , * , * loc_ , * ; 271 db_dx_t l ; 272 u_t32_t ags ; 273 t , t_t ; 275 dbp = dbc ->dbp; 276 mpf = dbp ->mpf; 277 loc_ = = = = NULL ; 278 `LOCK_INIT ( lock ); 279 `LOCK_INIT ( lock ); 280 t = -1; 302 i(( t = `__os_mloc ( dbp -> dbv , dbp-> pgsize * 2, & )) != 0) 303 r ; 304 `P_INIT ( , dbp -> pgsize , `PGNO ( -> ge ), 305 `ISINTERNAL ( -> ge ? PGNO_INVALID : `PREV_PGNO (cp->page), 306 `ISINTERNAL ( -> ge ? PGNO_INVALID : 0, 307 -> ge -> v , `TYPE (cp->page)); 309 = ( PAGE *)(( u_t8_t *) + dbp -> pgsize ); 310 `P_INIT ( , dbp -> pgsize , 0, 311 `ISINTERNAL ( -> ge ? PGNO_INVALID : `PGNO (cp->page), 312 `ISINTERNAL ( -> ge ? PGNO_INVALID : `NEXT_PGNO (cp->page), 313 -> ge -> v , `TYPE (cp->page)); 325 i(( t = `__bam_pl ( dbc , , , , & l )) != 0) 326 r ; 334 i(( t = `__bam_p ( dbc , , l , , , BPI_SPACEONLY )) != 0) 335 r ; 348 i( `ISLEAF ( -> ge && `NEXT_PGNO (->ge! PGNO_INVALID ) { 349 i(( t = `__db_lg ( dbc , 350 0, `NEXT_PGNO ( -> ge ), DB_LOCK_WRITE , 0, & lock )) != 0) 351 r ; 352 i(( t = `__memp_fg ( mpf , & `NEXT_PGNO ( -> ge ), 353 dbc -> txn , DB_MPOOL_DIRTY , & )) != 0) 354 r ; 361 i(( t = `__db_w ( dbc , `TYPE ( -> ge ), & loc_ )) != 0) 362 r ; 373 i(( t = `__db_lg ( dbc , 374 0, `PGNO ( loc_ ), DB_LOCK_WRITE , 0, & lock )) != 0) 375 r ; 382 `PGNO ( `NEXT_PGNO ( PGNO( loc_ ); 384 i(( t = `__memp_dty ( mpf , 385 & -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 386 r ; 389 i(( t = `__memp_dty ( mpf , 390 & -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0 || 391 ( t = `__bam_p ( dbc , , l , , , 0)) != 0) 392 r ; 394 bc = ( BTREE_CURSOR *) dbc -> ; 396 i( `DBC_LOGGING ( dbc )) { 397 `memt (& log_dbt , 0, (log_dbt)); 398 log_dbt . da = -> ge ; 399 log_dbt . size = dbp -> pgsize ; 400 i( = NULL ) 401 `ZERO_LSN ( log_l ); 402 ags = `F_ISSET ( bc , C_RECNUM ? SPL_NRECS : 0; 403 i(( t = `__bam_l_log ( dbp , dbc -> txn , & `LSN ( -> ge ), 0, 404 `PGNO ( -> ge ), & `LSN (->ge), PGNO( loc_ ), 405 & `LSN ( loc_ ), ( u_t32_t ) `NUM_ENT ( ), 406 = NULL ? 0 : `PGNO (tp), 407 = NULL ? & log_l : & `LSN (tp), 408 PGNO_INVALID , & log_dbt , ags )) != 0) 409 r ; 412 `LSN_NOT_LOGGED ( `LSN ( -> ge )); 415 `LSN ( loc_ LSN( -> ge ); 416 `LSN ( LSN( -> ge ); 417 `LSN ( LSN( -> ge ); 418 i( ! NULL ) 419 `LSN ( LSN( -> ge ); 431 ve_l = loc_ -> l ; 432 `memy ( loc_ , , `LOFFSET ( dbp ,p)); 433 `memy (( u_t8_t *) loc_ + `HOFFSET ( ), 434 ( u_t8_t *) + `HOFFSET p), dbp -> pgsize - HOFFSET(rp)); 435 loc_ -> l = ve_l ; 437 ve_l = -> ge -> l ; 438 `memy ( -> ge , , `LOFFSET ( dbp ,p)); 439 `memy (( u_t8_t *) -> ge + `HOFFSET ( ), 440 ( u_t8_t *) + `HOFFSET p), dbp -> pgsize - HOFFSET(lp)); 441 -> ge -> l = ve_l ; 444 i( ! NULL ) 445 `PREV_PGNO ( `PGNO ( ); 448 i(( t = `__bam__l ( dbc , 449 `PGNO ( -> ge ), PGNO(->ge), PGNO( ), l , 0)) != 0) 450 r ; 452 `__os_ ( dbp -> dbv , ); 460 i(( t_t = 461 `__memp_ut ( mpf , loc_ , dbc -> iܙy )!0 && t == 0) 462 t = t_t ; 463 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 464 t = t_t ; 465 i(( t_t = 466 `__memp_ut ( mpf , -> ge , dbc -> iܙy )!0 && t == 0) 467 t = t_t ; 468 i(( t_t = `__TLPUT ( dbc , -> lock )!0 && t == 0) 469 t = t_t ; 470 i(( t_t = 471 `__memp_ut ( mpf , -> ge , dbc -> iܙy )!0 && t == 0) 472 t = t_t ; 473 i(( t_t = `__TLPUT ( dbc , -> lock )!0 && t == 0) 474 t = t_t ; 475 i( ! NULL ) { 476 i(( t_t = 477 `__memp_ut ( mpf , , dbc -> iܙy )!0 && t == 0) 478 t = t_t ; 479 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 480 t = t_t ; 482 ( t ); 484 r : i( ! NULL ) 485 `__os_ ( dbp -> dbv , ); 486 i( loc_ ! NULL ) 487 () `__memp_ut ( mpf , loc_ , dbc -> iܙy ); 488 i( ! NULL ) 489 () `__memp_ut ( mpf , , dbc -> iܙy ); 492 () `__LPUT ( dbc , lock ); 493 () `__LPUT ( dbc , lock ); 495 () `__memp_ut ( mpf , -> ge , dbc -> iܙy ); 496 i( t = DB_NEEDSPLIT ) 497 () `__LPUT ( dbc , -> lock ); 499 () `__TLPUT ( dbc , -> lock ); 501 () `__memp_ut ( mpf , -> ge , dbc -> iܙy ); 502 i( t = DB_NEEDSPLIT ) 503 () `__LPUT ( dbc , -> lock ); 505 () `__TLPUT ( dbc , -> lock ); 507 ( t ); 508 } } 515 $__bam_bro ( dbc , rop , l , , ) 516 DBC * dbc ; 517 u_t32_t l ; 518 PAGE * rop , * , * ; 520 BINTERNAL bi , bi0 , * chd_bi ; 521 BKEYDATA * chd_bk ; 522 BOVERFLOW bo , * chd_bo ; 523 BTREE_CURSOR * ; 524 DB * dbp ; 525 DBT hdr , hdr0 , da ; 526 db_pgno_t ro_pgno ; 527 t ; 529 dbp = dbc ->dbp; 530 = ( BTREE_CURSOR *) dbc -> ; 531 chd_bo = NULL ; 532 da .d NULL ; 534 `TYPE ( rop )) { 535 P_IBTREE : 537 chd_bi = `GET_BINTERNAL ( dbp , rop , l ); 538 `B_TYPE ( chd_bi -> ty )) { 539 B_KEYDATA : 540 bi . n = chd_bi ->len; 541 `B_TSET ( bi . ty , B_KEYDATA ); 542 bi . pgno = ->pgno; 543 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 544 i(( t = `__os_mloc ( dbp -> dbv , 545 chd_bi -> n , & da .data)) != 0) 546 ( t ); 547 `memy ( da .da, chd_bi ->da, chd_bi-> n ); 548 da . size = chd_bi -> n ; 550 B_OVERFLOW : 552 chd_bo = ( BOVERFLOW *) chd_bi -> da ; 553 `memt (& bo , 0, (bo)); 554 bo . ty = B_OVERFLOW ; 555 bo . = chd_bo ->tlen; 556 bo . pgno = chd_bo ->pgno; 557 bi . n = BOVERFLOW_SIZE ; 558 `B_TSET ( bi . ty , B_OVERFLOW ); 559 bi . pgno = ->pgno; 560 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 561 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 563 B_DUPLICATE : 565 pgfmt ; 568 P_LDUP : 569 P_LBTREE : 571 chd_bk = `GET_BKEYDATA ( dbp , rop , l ); 572 `B_TYPE ( chd_bk -> ty )) { 573 B_KEYDATA : 574 bi . n = chd_bk ->len; 575 `B_TSET ( bi . ty , B_KEYDATA ); 576 bi . pgno = ->pgno; 577 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 578 i(( t = `__os_mloc ( dbp -> dbv , 579 chd_bk -> n , & da .data)) != 0) 580 ( t ); 581 `memy ( da .da, chd_bk ->da, chd_bk-> n ); 582 da . size = chd_bk -> n ; 584 B_OVERFLOW : 586 chd_bo = ( BOVERFLOW *) chd_bk ; 587 `memt (& bo , 0, (bo)); 588 bo . ty = B_OVERFLOW ; 589 bo . = chd_bo ->tlen; 590 `memt (& hdr , 0, (hdr)); 591 i(( t = `__db_goff ( dbp , 592 dbc -> txn , & hdr , chd_bo -> , 593 chd_bo -> pgno , & hdr . da , &hdr. size )) == 0) 594 t = `__db_poff ( dbc , & hdr , & bo . pgno ); 596 i( hdr . da ! NULL ) 597 `__os_ ( dbp -> dbv , hdr . da ); 598 i( t != 0) 599 ( t ); 601 bi . n = BOVERFLOW_SIZE ; 602 `B_TSET ( bi . ty , B_OVERFLOW ); 603 bi . pgno = ->pgno; 604 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 605 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 607 B_DUPLICATE : 609 pgfmt ; 613 pgfmt : ( `__db_pgfmt ( dbp -> dbv , -> pgno )); 620 ro_pgno = -> ro ; 621 `P_INIT ( rop , dbp -> pgsize , 622 ro_pgno , PGNO_INVALID , PGNO_INVALID, -> v + 1, P_IBTREE ); 629 `memt (& bi0 , 0, (bi0)); 630 bi0 . n = 0; 631 `B_TSET ( bi0 . ty , B_KEYDATA ); 632 bi0 . pgno = ->pgno; 633 i( `F_ISSET ( , C_RECNUM )) { 634 bi0 . ecs = `__bam_tٮ ( dbp , ); 635 `RE_NREC_SET ( rop , bi0 . ecs ); 636 bi . ecs = `__bam_tٮ ( dbp , ); 637 `RE_NREC_ADJ ( rop , bi . ecs ); 639 `DB_SET_DBT ( hdr0 , & bi0 , `SSZA ( BINTERNAL , da )); 640 i(( t = `__db_pem ( dbc , 641 rop , 0, `BINTERNAL_SIZE (0), & hdr0 , NULL )) != 0) 642 r ; 643 t = `__db_pem ( dbc , rop , 1, `BINTERNAL_SIZE ( da . size ), & hdr , &data); 645 r : i( da .d! NULL && chd_bo == NULL) 646 `__os_ ( dbp -> dbv , da .data); 647 ( t ); 648 } } 655 $__m_ro ( dbc , rop , , ) 656 DBC * dbc ; 657 PAGE * rop , * , * ; 659 DB * dbp ; 660 DBT hdr ; 661 RINTERNAL ri ; 662 db_pgno_t ro_pgno ; 663 t ; 665 dbp = dbc ->dbp; 666 ro_pgno = dbc -> -> ro ; 669 `P_INIT ( rop , dbp -> pgsize , 670 ro_pgno , PGNO_INVALID , PGNO_INVALID, -> v + 1, P_IRECNO ); 673 `DB_SET_DBT ( hdr , & ri , RINTERNAL_SIZE ); 676 ri . pgno = ->pgno; 677 ri . ecs = `__bam_tٮ ( dbp , ); 678 i(( t = `__db_pem ( dbc , rop , 0, RINTERNAL_SIZE , & hdr , NULL )) != 0) 679 ( t ); 680 `RE_NREC_SET ( rop , ri . ecs ); 681 ri . pgno = ->pgno; 682 ri . ecs = `__bam_tٮ ( dbp , ); 683 i(( t = `__db_pem ( dbc , rop , 1, RINTERNAL_SIZE , & hdr , NULL )) != 0) 684 ( t ); 685 `RE_NREC_ADJ ( rop , ri . ecs ); 687 } } 697 $__bam_p ( dbc , , l , lchd , rchd , ags ) 698 DBC * dbc ; 699 EPG * ; 700 u_t32_t l ; 701 PAGE * lchd , * rchd ; 702 ags ; 704 BINTERNAL bi , * chd_bi ; 705 BKEYDATA * chd_bk , * tmp_bk ; 706 BOVERFLOW bo , * chd_bo ; 707 BTREE * t ; 708 BTREE_CURSOR * ; 709 DB * dbp ; 710 DBT a , b , hdr , da ; 711 EPG * chd ; 712 PAGE * age ; 713 RINTERNAL ri ; 714 db_dx_t off ; 715 db_o_t ecs ; 716 `size_t (* func `__P (( DB *, cڡ DBT *, const DBT *)); 717 u_t32_t n , nbys , nksize ; 718 t ; 720 dbp = dbc ->dbp; 721 = ( BTREE_CURSOR *) dbc -> ; 722 t = dbp -> bt_ ; 723 age = -> ge ; 724 chd = + 1; 727 ecs = `F_ISSET ( , C_RECNUM ) && 728 ! `LF_ISSET ( BPI_SPACEONLY ? `__bam_tٮ ( dbp , rchd ) : 0; 743 off = -> dx + O_INDX ; 757 `TYPE ( chd -> ge )) { 758 P_IBTREE : 759 chd_bi = `GET_BINTERNAL ( dbp , chd -> ge , l ); 760 nbys = `BINTERNAL_PSIZE ( chd_bi -> n ); 762 i( `P_FREESPACE ( dbp , age < nbys ) 763 ( DB_NEEDSPLIT ); 764 i( `LF_ISSET ( BPI_SPACEONLY )) 767 `B_TYPE ( chd_bi -> ty )) { 768 B_KEYDATA : 770 `memt (& bi , 0, (bi)); 771 bi . n = chd_bi ->len; 772 `B_TSET ( bi . ty , B_KEYDATA ); 773 bi . pgno = rchd ->pgno; 774 bi . ecs =recs; 775 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 776 `DB_SET_DBT ( da , chd_bi ->da, chd_bi-> n ); 777 i(( t = `__db_pem ( dbc , age , off , 778 `BINTERNAL_SIZE ( chd_bi -> n ), & hdr , & da )) != 0) 779 ( t ); 781 B_OVERFLOW : 783 chd_bo = ( BOVERFLOW *) chd_bi -> da ; 784 `memt (& bo , 0, (bo)); 785 bo . ty = B_OVERFLOW ; 786 bo . = chd_bo ->tlen; 787 bo . pgno = chd_bo ->pgno; 788 bi . n = BOVERFLOW_SIZE ; 789 `B_TSET ( bi . ty , B_OVERFLOW ); 790 bi . pgno = rchd ->pgno; 791 bi . ecs =recs; 792 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 793 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 794 i(( t = `__db_pem ( dbc , age , off , 795 `BINTERNAL_SIZE ( BOVERFLOW_SIZE ), & hdr , & da )) != 0) 796 ( t ); 798 B_DUPLICATE : 800 pgfmt ; 803 P_LDUP : 804 P_LBTREE : 805 chd_bk = `GET_BKEYDATA ( dbp , chd -> ge , l ); 806 `B_TYPE ( chd_bk -> ty )) { 807 B_KEYDATA : 808 nbys = `BINTERNAL_PSIZE ( chd_bk -> n ); 809 nksize = chd_bk -> n ; 833 i( `F_ISSET ( dbc , DBC_OPD )) { 834 i( dbp -> dup_com = __bam_defcmp ) 835 func = __bam_defx ; 837 func = NULL ; 839 func = t -> bt_efix ; 840 i( func = NULL ) 841 nݻfix ; 842 tmp_bk = `GET_BKEYDATA ( dbp , lchd , `NUM_ENT (lchild) - 843 ( `TYPE ( lchd = P_LDUP ? O_INDX : P_INDX )); 844 i( `B_TYPE ( tmp_bk -> ty ! B_KEYDATA ) 845 nݻfix ; 846 `DB_SET_DBT ( a , tmp_bk -> da ,mp_bk-> n ); 847 `DB_SET_DBT ( b , chd_bk -> da , chd_bk-> n ); 848 nksize = ( u_t32_t ) `func ( dbp , & a , & b ); 849 i(( n = `BINTERNAL_PSIZE ( nksize )< nbys ) 850 nbys = n ; 852 nksize = chd_bk -> n ; 854 nݻfix : i( `P_FREESPACE ( dbp , age < nbys ) 855 ( DB_NEEDSPLIT ); 856 i( `LF_ISSET ( BPI_SPACEONLY )) 859 `memt (& bi , 0, (bi)); 860 bi . n = nksize ; 861 `B_TSET ( bi . ty , B_KEYDATA ); 862 bi . pgno = rchd ->pgno; 863 bi . ecs =recs; 864 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 865 `DB_SET_DBT ( da , chd_bk ->da, nksize ); 866 i(( t = `__db_pem ( dbc , age , off , 867 `BINTERNAL_SIZE ( nksize ), & hdr , & da )) != 0) 868 ( t ); 870 B_OVERFLOW : 871 nbys = `BINTERNAL_PSIZE ( BOVERFLOW_SIZE ); 873 i( `P_FREESPACE ( dbp , age < nbys ) 874 ( DB_NEEDSPLIT ); 875 i( `LF_ISSET ( BPI_SPACEONLY )) 879 chd_bo = ( BOVERFLOW *) chd_bk ; 880 `memt (& bo , 0, (bo)); 881 bo . ty = B_OVERFLOW ; 882 bo . = chd_bo ->tlen; 883 `memt (& hdr , 0, (hdr)); 884 i(( t = `__db_goff ( dbp , 885 dbc -> txn , & hdr , chd_bo -> , 886 chd_bo -> pgno , & hdr . da , &hdr. size )) == 0) 887 t = `__db_poff ( dbc , & hdr , & bo . pgno ); 889 i( hdr . da ! NULL ) 890 `__os_ ( dbp -> dbv , hdr . da ); 891 i( t != 0) 892 ( t ); 894 `memt (& bi , 0, (bi)); 895 bi . n = BOVERFLOW_SIZE ; 896 `B_TSET ( bi . ty , B_OVERFLOW ); 897 bi . pgno = rchd ->pgno; 898 bi . ecs =recs; 899 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 900 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 901 i(( t = `__db_pem ( dbc , age , off , 902 `BINTERNAL_SIZE ( BOVERFLOW_SIZE ), & hdr , & da )) != 0) 903 ( t ); 906 B_DUPLICATE : 908 pgfmt ; 911 P_IRECNO : 912 P_LRECNO : 913 nbys = RINTERNAL_PSIZE ; 915 i( `P_FREESPACE ( dbp , age < nbys ) 916 ( DB_NEEDSPLIT ); 917 i( `LF_ISSET ( BPI_SPACEONLY )) 921 `DB_SET_DBT ( hdr , & ri , RINTERNAL_SIZE ); 922 ri . pgno = rchd ->pgno; 923 ri . ecs =recs; 924 i(( t = `__db_pem ( dbc , 925 age , off , RINTERNAL_SIZE , & hdr , NULL )) != 0) 926 ( t ); 929 pgfmt : ( `__db_pgfmt ( dbp -> dbv , `PGNO ( chd -> ge ))); 936 i( `F_ISSET ( , C_RECNUM && ! `LF_ISSET ( BPI_NORECNUM )) { 938 i( `DBC_LOGGING ( dbc )) { 939 i(( t = `__bam_dju_log ( dbp , dbc -> txn , 940 & `LSN ( age ), 0, `PGNO (ppage), &LSN(ppage), 941 -> dx , -( t32_t ) ecs , 0)) != 0) 942 ( t ); 944 `LSN_NOT_LOGGED ( `LSN ( age )); 947 i( dbc -> dbty = DB_RECNO ) 948 `GET_RINTERNAL ( dbp , age , -> dx )-> ecs -=recs; 950 `GET_BINTERNAL ( dbp , age , -> dx )-> ecs -=recs; 954 } } 961 $__bam_pl ( dbc , , , , lt ) 962 DBC * dbc ; 963 EPG * ; 964 PAGE * , * ; 965 db_dx_t * lt ; 967 DB * dbp ; 968 PAGE * ; 969 db_dx_t hf , * p , nbys , off , lp , t ; 970 adju , t , iag , isbigkey , t ; 972 dbp = dbc ->dbp; 973 = -> ge ; 974 p = `P_INP ( dbp , ); 975 adju = `TYPE ( = P_LBTREE ? P_INDX : O_INDX ; 1010 off = 0; 1011 i( `NEXT_PGNO ( = PGNO_INVALID && -> dx > `NUM_ENT p- adju ) 1012 off = `NUM_ENT ( - adju ; 1013 i( `PREV_PGNO ( = PGNO_INVALID && -> dx == 0) 1014 off = adju ; 1015 i( off != 0) 1016 st ; 1039 t = `NUM_ENT ( - adju ; 1040 hf = ( dbp -> pgsize - `HOFFSET ( )) / 2; 1041 nbys = 0, off = 0; of< t &&by< hf ; ++off) 1042 `TYPE ( )) { 1043 P_IBTREE : 1044 i( `B_TYPE ( 1045 `GET_BINTERNAL ( dbp , , off )-> ty = B_KEYDATA ) 1046 nbys + `BINTERNAL_SIZE ( 1047 `GET_BINTERNAL ( dbp , , off )-> n ); 1049 nbys + `BINTERNAL_SIZE ( BOVERFLOW_SIZE ); 1051 P_LBTREE : 1052 i( `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1053 B_KEYDATA ) 1054 nbys + `BKEYDATA_SIZE ( `GET_BKEYDATA ( dbp , 1055 , off )-> n ); 1057 nbys + BOVERFLOW_SIZE ; 1059 ++ off ; 1061 P_LDUP : 1062 P_LRECNO : 1063 i( `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1064 B_KEYDATA ) 1065 nbys + `BKEYDATA_SIZE ( `GET_BKEYDATA ( dbp , 1066 , off )-> n ); 1068 nbys + BOVERFLOW_SIZE ; 1070 P_IRECNO : 1071 nbys + RINTERNAL_SIZE ; 1074 ( `__db_pgfmt ( dbp -> dbv , -> pgno )); 1076 st : lp = off ; 1084 `TYPE ( )) { 1085 P_IBTREE : 1086 iag = 1; 1087 isbigkey = 1088 `B_TYPE ( `GET_BINTERNAL ( dbp , , off )-> ty ! B_KEYDATA ; 1090 P_LBTREE : 1091 P_LDUP : 1092 iag = 0; 1093 isbigkey = `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) != 1094 B_KEYDATA ; 1097 iag = isbigkey = 0; 1099 i( isbigkey ) 1100 t = 1; cnt <= 3; ++cnt) { 1101 off = lp + t * adju ; 1102 i( off < ( db_dx_t ) `NUM_ENT ( ) && 1103 (( iag && `B_TYPE ( 1104 `GET_BINTERNAL ( dbp , , off )-> ty = B_KEYDATA ) || 1105 `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1106 B_KEYDATA )) { 1107 lp = off ; 1110 i( lp <( db_dx_t )( t * adju )) 1112 off = lp - t * adju ; 1113 i( iag ? `B_TYPE ( 1114 `GET_BINTERNAL ( dbp , , off )-> ty = B_KEYDATA : 1115 `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1116 B_KEYDATA ) { 1117 lp = off ; 1128 i( `TYPE ( = P_LBTREE && 1129 p [ lp ] =p[l- adju ]) 1130 t = 1;; ++cnt) { 1131 off = lp + t * adju ; 1132 i( off < `NUM_ENT ( ) && 1133 p [ lp ] !p[ off ]) { 1134 lp = off ; 1137 i( lp <( db_dx_t )( t * adju )) 1139 off = lp - t * adju ; 1140 i( p [ lp ] !p[ off ]) { 1141 lp = off + adju ; 1147 i(( t = `__bam_cy ( dbp , , , 0, lp )) != 0) 1148 ( t ); 1149 i(( t = `__bam_cy ( dbp , , , lp , `NUM_ENT (pp))) != 0) 1150 ( t ); 1152 * lt = lp ; 1154 } } 1163 $__bam_cy ( dbp , , , nxt , ) 1164 DB * dbp ; 1165 PAGE * , * ; 1166 u_t32_t nxt , ; 1168 BINTERNAL ; 1169 db_dx_t * cp , nbys , off , * pp ; 1171 cp = `P_INP ( dbp , ); 1172 pp = `P_INP ( dbp , ); 1176 off = 0; nxt < ; ++nxt, ++ `NUM_ENT ( ), ++off) { 1177 `TYPE ( )) { 1178 P_IBTREE : 1179 i( off =0 && nxt != 0) 1180 nbys = `BINTERNAL_SIZE (0); 1181 i( `B_TYPE ( 1182 `GET_BINTERNAL ( dbp , , nxt )-> ty = B_KEYDATA ) 1183 nbys = `BINTERNAL_SIZE ( 1184 `GET_BINTERNAL ( dbp , , nxt )-> n ); 1186 nbys = `BINTERNAL_SIZE ( BOVERFLOW_SIZE ); 1188 P_LBTREE : 1193 i( off !0 && ( nxt % P_INDX ) == 0 && 1194 pp [ nxt ] =pp[nx- P_INDX ]) { 1195 cp [ off ] = cp[of- P_INDX ]; 1199 P_LDUP : 1200 P_LRECNO : 1201 i( `B_TYPE ( `GET_BKEYDATA ( dbp , , nxt )-> ty ) == 1202 B_KEYDATA ) 1203 nbys = `BKEYDATA_SIZE ( `GET_BKEYDATA ( dbp , 1204 , nxt )-> n ); 1206 nbys = BOVERFLOW_SIZE ; 1208 P_IRECNO : 1209 nbys = RINTERNAL_SIZE ; 1212 ( `__db_pgfmt ( dbp -> dbv , -> pgno )); 1214 cp [ off ] = `HOFFSET ( - nbys ; 1215 i( off =0 && nxt !0 && `TYPE ( = P_IBTREE ) { 1216 . n = 0; 1217 . ty = B_KEYDATA ; 1218 . pgno = `GET_BINTERNAL ( dbp , , nxt )->pgno; 1219 . ecs = `GET_BINTERNAL ( dbp , , nxt )->nrecs; 1220 `memy ( `P_ENTRY ( dbp , , off ), & , nbys ); 1223 `memy ( `P_ENTRY ( dbp , , off ), 1224 `P_ENTRY ( dbp , , nxt ), nbys ); 1227 } } @../btree/bt_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 15 ~"dbc/mp.h " 17 #ifde HAVE_STATISTICS 25 $__bam_ ( dbc , p , ags ) 26 DBC * dbc ; 27 * p ; 28 u_t32_t ags ; 30 BTMETA * ma ; 31 BTREE * t ; 32 BTREE_CURSOR * ; 33 DB * dbp ; 34 DB_BTREE_STAT * ; 35 DB_ENV * dbv ; 36 DB_LOCK lock , mock ; 37 DB_MPOOLFILE * mpf ; 38 PAGE * h ; 39 db_pgno_t pgno ; 40 t , t_t , wre_ma ; 42 dbp = dbc ->dbp; 43 dbv = dbp ->dbenv; 45 ma = NULL ; 46 t = dbp -> bt_ ; 47 = NULL ; 48 `LOCK_INIT ( mock ); 49 `LOCK_INIT ( lock ); 50 mpf = dbp ->mpf; 51 h = NULL ; 52 t = wre_ma = 0; 54 = ( BTREE_CURSOR *) dbc -> ; 57 i(( t = `__os_umloc ( dbv , (* ), &sp)) != 0) 58 r ; 59 `memt ( , 0, (*sp)); 62 pgno = PGNO_BASE_MD ; 63 i(( t = `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & mock )) != 0) 64 r ; 65 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & ma )) != 0) 66 r ; 68 i( ags = DB_FAST_STAT ) 69 ma_ly ; 72 -> bt_ = 0, pgno = ma -> dbma . ;gn! PGNO_INVALID ;) { 73 ++ -> bt_ ; 75 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & h )) != 0) 76 r ; 78 pgno = h -> xt_pgno ; 79 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 80 r ; 81 h = NULL ; 85 pgno = -> ro ; 86 i(( t = `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & lock )) != 0) 87 r ; 88 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & h )) != 0) 89 r ; 92 -> bt_vs = h -> v ; 95 t = `__memp_ut ( mpf , h , dbc -> iܙy ); 96 h = NULL ; 97 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 98 t = t_t ; 99 i( t != 0) 100 r ; 103 i(( t = `__bam_av ( dbc , 104 DB_LOCK_READ , -> ro , __bam__back , )) != 0) 105 r ; 111 wre_ma = ! `F_ISSET ( dbp , DB_AM_RDONLY ) && 112 (! `MULTIVERSION ( dbp || dbc -> txn ! NULL ); 113 ma_ly : 114 i( t -> bt_ma ! PGNO_BASE_MD || wre_ma ) { 115 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 116 ma = NULL ; 117 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 118 t = t_t ; 119 i( t != 0) 120 r ; 122 i(( t = `__db_lg ( dbc , 123 0, t -> bt_ma , wre_ma ? DB_LOCK_WRITE : DB_LOCK_READ , 124 0, & mock )) != 0) 125 r ; 126 i(( t = `__memp_fg ( mpf , & t -> bt_ma , dbc -> txn , 127 wre_ma ? DB_MPOOL_DIRTY : 0, & ma )) != 0) 128 r ; 130 i( ags = DB_FAST_STAT ) { 131 i( dbp -> ty = DB_RECNO || 132 ( dbp -> ty = DB_BTREE && `F_ISSET (dbp, DB_AM_RECNUM ))) { 133 i(( t = `__db_lg ( dbc , 0, 134 -> ro , DB_LOCK_READ , 0, & lock )) != 0) 135 r ; 136 i(( t = `__memp_fg ( mpf , & -> ro , dbc -> txn , 137 0, & h )) != 0) 138 r ; 140 -> bt_nkeys = `RE_NREC ( h ); 142 -> bt_nkeys = ma -> dbma . key_cou ; 144 -> bt_nda = dbp -> ty = DB_RECNO ? 145 -> bt_nkeys : ma -> dbma . cd_cou ; 149 -> bt_maags = ma -> dbma . ags ; 150 -> bt_mkey = ma -> mkey ; 151 -> bt__n = ma -> _n ; 152 -> bt__d = ma -> _d ; 160 i(( t = `__memp_g_ϡ_pgno ( dbp -> mpf , & pgno )) != 0) 161 r ; 162 -> bt_get = pgno + 1; 163 -> bt_gesize = ma -> dbma . gesize ; 164 -> bt_magic = ma -> dbma . magic ; 165 -> bt_vsi = ma -> dbma . vsi ; 167 i( wre_ma != 0) { 168 ma -> dbma . key_cou = -> bt_nkeys ; 169 ma -> dbma . cd_cou = -> bt_nda ; 172 *( DB_BTREE_STAT **) p = ; 174 r : 175 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 176 t = t_t ; 177 i( h ! NULL && 178 ( t_t = `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 179 t = t_t ; 182 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 183 t = t_t ; 184 i( ma ! NULL && 185 ( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 186 t = t_t ; 188 i( t !0 && ! NULL ) { 189 `__os_u ( dbv , ); 190 *( DB_BTREE_STAT **) p = NULL ; 193 ( t ); 194 } } 203 $__bam__t ( dbc , ags ) 204 DBC * dbc ; 205 u_t32_t ags ; 207 cڡ FN [] = { 208 { BTM_DUP , "duplicates" }, 209 { BTM_RECNO , "recno" }, 210 { BTM_RECNUM , "record-numbers" }, 211 { BTM_FIXEDLEN , "fixed-length" }, 212 { BTM_RENUMBER , "renumber" }, 213 { BTM_SUBDB , "multiple-databases" }, 214 { BTM_DUPSORT , "sorted duplicates" }, 215 { 0, NULL } 217 DB * dbp ; 218 DB_BTREE_STAT * ; 219 DB_ENV * dbv ; 220 ld , t ; 221 cڡ * s ; 223 dbp = dbc ->dbp; 224 dbv = dbp ->dbenv; 226 i(( t = `__bam_ ( dbc , & , `LF_ISSET ( DB_FAST_STAT ))) != 0) 227 ( t ); 229 i( `LF_ISSET ( DB_STAT_ALL )) { 230 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 231 `__db_msg ( dbv , "Default Btree/Recno database information:"); 234 `__db_msg ( dbv , "%lx\tB maginumb", ( u_lg ) -> bt_magic ); 235 `__db_msg ( dbv , "%lu\tB vsiڂumb", ( u_lg ) -> bt_vsi ); 237 () `__db_g_ld ( dbp , & ld ); 238 ld ) { 240 s = "Little-endian"; 243 s = "Big-endian"; 246 s = "Unrecognized byte order"; 249 `__db_msg ( dbv , "%s\tBy ord", s ); 250 `__db_ags ( dbv , NULL , -> bt_maags , , NULL, "\tFlags"); 251 i( dbp -> ty = DB_BTREE ) 252 `__db_dl ( dbv , "Mimum keyr-ge", ( u_lg ) -> bt_mkey ); 253 i( dbp -> ty = DB_RECNO ) { 254 `__db_dl ( dbv , 255 "Fixed-ngthecd size", ( u_lg ) -> bt__n ); 256 `__db_msg ( dbv , 257 "%#x\tFixed-ngthecdad", ( u_t ) -> bt__d ); 259 `__db_dl ( dbv , 260 "Undlyg dabaagsize", ( u_lg ) -> bt_gesize ); 261 i( dbp -> ty = DB_BTREE ) 262 `__db_dl ( dbv , "Overflow key/data size", 263 (( BTREE_CURSOR *) dbc -> )-> ovsize ); 264 `__db_dl ( dbv , "Numb ovh", ( u_lg ) -> bt_vs ); 265 `__db_dl ( dbv , dbp -> ty = DB_BTREE ? 267 "Numb ocdh", ( u_lg ) -> bt_nkeys ); 268 `__db_dl ( dbv , 269 "Numb odemh", ( u_lg ) -> bt_nda ); 271 `__db_dl ( dbv , 272 "Numb o iȷges", ( u_lg ) -> bt_t_pg ); 273 `__db_dl_p ( dbv , 275 ( u_lg ) -> bt_t_pg , 276 `DB_PCT_PG ( -> bt_t_pg , sp-> bt_t_pg , sp-> bt_gesize ), "ff"); 278 `__db_dl ( dbv , 279 "Numb oges", ( u_lg ) -> bt_af_pg ); 280 `__db_dl_p ( dbv , "Number of bytes free inreeeafages", 281 ( u_lg ) -> bt_af_pg , `DB_PCT_PG ( 282 -> bt_af_pg , sp-> bt_af_pg , sp-> bt_gesize ), "ff"); 284 `__db_dl ( dbv , 285 "Numb o duiages", ( u_lg ) -> bt_dup_pg ); 286 `__db_dl_p ( dbv , 288 ( u_lg ) -> bt_dup_pg , 289 `DB_PCT_PG ( -> bt_dup_pg , sp-> bt_dup_pg , sp-> bt_gesize ), "ff"); 291 `__db_dl ( dbv , 292 "Numb o ovowages", ( u_lg ) -> bt_ov_pg ); 293 `__db_dl_p ( dbv , "Number of bytes free inree overflowages", 294 ( u_lg ) -> bt_ov_pg , `DB_PCT_PG ( 295 -> bt_ov_pg , sp-> bt_ov_pg , sp-> bt_gesize ), "ff"); 296 `__db_dl ( dbv , "Numb oemyages", ( u_lg ) -> bt_emy_pg ); 298 `__db_dl ( dbv , "Numb ogeځh䓆i", ( u_lg ) -> bt_ ); 300 `__os_u ( dbv , ); 303 } } 312 $__bam__back ( dbp , h , cook , pu ) 313 DB * dbp ; 314 PAGE * h ; 315 * cook ; 316 * pu ; 318 DB_BTREE_STAT * ; 319 db_dx_t dx , * p , t ; 320 u_t8_t ty ; 322 = cook ; 323 * pu = 0; 324 t = `NUM_ENT ( h ); 325 p = `P_INP ( dbp , h ); 327 `TYPE ( h )) { 328 P_IBTREE : 329 P_IRECNO : 330 ++ -> bt_t_pg ; 331 -> bt_t_pg + `P_FREESPACE ( dbp , h ); 333 P_LBTREE : 334 i( t == 0) 335 ++ -> bt_emy_pg ; 338 dx = 0; indx < t ; indx + P_INDX ) { 339 ty = `GET_BKEYDATA ( dbp , h , dx + O_INDX )->type; 341 i( `B_DISSET ( ty )) 345 i( dx + P_INDX > t || 346 p [ dx ] !p[dx + P_INDX ]) 347 ++ -> bt_nkeys ; 350 i( `B_TYPE ( ty ! B_DUPLICATE ) 351 ++ -> bt_nda ; 354 ++ -> bt_af_pg ; 355 -> bt_af_pg + `P_FREESPACE ( dbp , h ); 357 P_LRECNO : 358 i( t == 0) 359 ++ -> bt_emy_pg ; 365 i( dbp -> ty = DB_RECNO ) { 370 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) { 371 -> bt_nkeys + t ; 372 -> bt_nda + t ; 374 dx = 0; indx < t ; indx + O_INDX ) { 375 ty = `GET_BKEYDATA ( dbp , h , dx )->type; 376 i(! `B_DISSET ( ty )) { 377 ++ -> bt_nda ; 378 ++ -> bt_nkeys ; 382 ++ -> bt_af_pg ; 383 -> bt_af_pg + `P_FREESPACE ( dbp , h ); 385 -> bt_nda + t ; 387 ++ -> bt_dup_pg ; 388 -> bt_dup_pg + `P_FREESPACE ( dbp , h ); 391 P_LDUP : 392 i( t == 0) 393 ++ -> bt_emy_pg ; 396 dx = 0; indx < t ; indx + O_INDX ) 397 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , h , dx )-> ty )) 398 ++ -> bt_nda ; 400 ++ -> bt_dup_pg ; 401 -> bt_dup_pg + `P_FREESPACE ( dbp , h ); 403 P_OVERFLOW : 404 ++ -> bt_ov_pg ; 405 -> bt_ov_pg + `P_OVFLSPACE ( dbp , dbp-> pgsize , h ); 408 ( `__db_pgfmt ( dbp -> dbv , h -> pgno )); 411 } } 420 $__bam_t_curs ( dbc ) 421 DBC * dbc ; 423 cڡ FN [] = { 424 { C_DELETED , "C_DELETED" }, 425 { C_RECNUM , "C_RECNUM" }, 426 { C_RENUMBER , "C_RENUMBER" }, 427 { 0, NULL } 429 DB_ENV * dbv ; 430 BTREE_CURSOR * ; 432 dbv = dbc -> dbp ->dbenv; 433 = ( BTREE_CURSOR *) dbc -> ; 435 `STAT_ULONG ("Ovow size", -> ovsize ); 436 i( dbc -> dbty = DB_RECNO ) 437 `STAT_ULONG ("Reo", -> o ); 438 `STAT_ULONG ("Ord", -> d ); 439 `__db_ags ( dbv , NULL , -> ags , , NULL, "\tInternal Flags"); 440 } } 445 $__bam_ ( dbc , p , ags ) 446 DBC * dbc ; 447 * p ; 448 u_t32_t ags ; 450 `COMPQUIET ( p , NULL ); 451 `COMPQUIET ( ags , 0); 453 ( `__db__n_but ( dbc -> dbp -> dbv )); 454 } } 457 $__bam__t ( dbc , ags ) 458 DBC * dbc ; 459 u_t32_t ags ; 461 `COMPQUIET ( ags , 0); 463 ( `__db__n_but ( dbc -> dbp -> dbv )); 464 } } 467 #ide HAVE_BREW 476 $__bam_key_nge ( dbc , dbt , kp , ags ) 477 DBC * dbc ; 478 DBT * dbt ; 479 DB_KEY_RANGE * kp ; 480 u_t32_t ags ; 482 BTREE_CURSOR * ; 483 EPG * ; 484 ; 485 exa , t ; 487 `COMPQUIET ( ags , 0); 489 i(( t = `__bam_ch ( dbc , PGNO_INVALID , 490 dbt , SR_STK_ONLY , 1, NULL , & exa )) != 0) 491 ( t ); 493 = ( BTREE_CURSOR *) dbc -> ; 494 kp -> ss = kp-> g = 0.0; 496 = 1.0; 499 -> c -> s /= 2; 500 -> c -> dx /= 2; 501 = ->; s<-> c ; ++sp) { 510 i( -> dx == 0) 511 kp -> g + * ( -> s - 1)/sp->entries; 512 i( -> dx =-> s ) 513 kp -> ss + ; 515 kp -> ss + * -> dx / sp-> s ; 516 kp -> g + * 517 (( -> s - sp-> dx ) - 1) / sp->entries; 519 *1.0/ -> s ; 527 i( exa ) 528 kp -> equ = ; 530 i( kp -> ss != 1) 531 kp -> g + ; 532 kp -> equ = 0; 535 `BT_STK_CLR ( ); 538 } } 549 $__bam_av ( dbc , mode , ro_pgno , back , cook ) 550 DBC * dbc ; 551 db_lockmode_t mode ; 552 db_pgno_t ro_pgno ; 553 (* back ) `__P (( DB *, PAGE *, *, *)); 554 * cook ; 556 BINTERNAL * bi ; 557 BKEYDATA * bk ; 558 DB * dbp ; 559 DB_LOCK lock ; 560 DB_MPOOLFILE * mpf ; 561 PAGE * h ; 562 RINTERNAL * ri ; 563 db_dx_t dx , * p ; 564 ady_put , t , t_t ; 566 dbp = dbc ->dbp; 567 mpf = dbp ->mpf; 568 ady_put = 0; 570 i(( t = `__db_lg ( dbc , 0, ro_pgno , mode , 0, & lock )) != 0) 571 ( t ); 572 i(( t = `__memp_fg ( mpf , & ro_pgno , dbc -> txn , 0, & h )) != 0) { 573 () `__TLPUT ( dbc , lock ); 574 ( t ); 577 `TYPE ( h )) { 578 P_IBTREE : 579 dx = 0; indx < `NUM_ENT ( h ); indx + O_INDX ) { 580 bi = `GET_BINTERNAL ( dbp , h , dx ); 581 i( `B_TYPE ( bi -> ty = B_OVERFLOW && 582 ( t = `__db_av_big ( dbp , 583 (( BOVERFLOW *) bi -> da )-> pgno , dbc -> txn , 584 back , cook )) != 0) 585 r ; 586 i(( t = `__bam_av ( 587 dbc , mode , bi -> pgno , back , cook )) != 0) 588 r ; 591 P_IRECNO : 592 dx = 0; indx < `NUM_ENT ( h ); indx + O_INDX ) { 593 ri = `GET_RINTERNAL ( dbp , h , dx ); 594 i(( t = `__bam_av ( 595 dbc , mode , ri -> pgno , back , cook )) != 0) 596 r ; 599 P_LBTREE : 600 p = `P_INP ( dbp , h ); 601 dx = 0; indx < `NUM_ENT ( h ); indx + P_INDX ) { 602 bk = `GET_BKEYDATA ( dbp , h , dx ); 603 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 604 ( dx + P_INDX > `NUM_ENT ( h ) || 605 p [ dx ] !p[dx + P_INDX ])) { 606 i(( t = `__db_av_big ( dbp , 607 `GET_BOVERFLOW ( dbp , h , dx )-> pgno , 608 dbc -> txn , back , cook )) != 0) 609 r ; 611 bk = `GET_BKEYDATA ( dbp , h , dx + O_INDX ); 612 i( `B_TYPE ( bk -> ty = B_DUPLICATE && 613 ( t = `__bam_av ( dbc , mode , 614 `GET_BOVERFLOW ( dbp , h , dx + O_INDX )-> pgno , 615 back , cook )) != 0) 616 r ; 617 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 618 ( t = `__db_av_big ( dbp , 619 `GET_BOVERFLOW ( dbp , h , dx + O_INDX )-> pgno , 620 dbc -> txn , back , cook )) != 0) 621 r ; 624 P_LDUP : 625 P_LRECNO : 626 dx = 0; indx < `NUM_ENT ( h ); indx + O_INDX ) { 627 bk = `GET_BKEYDATA ( dbp , h , dx ); 628 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 629 ( t = `__db_av_big ( dbp , 630 `GET_BOVERFLOW ( dbp , h , dx )-> pgno , dbc -> txn , 631 back , cook )) != 0) 632 r ; 636 ( `__db_pgfmt ( dbp -> dbv , h -> pgno )); 639 t = `back ( dbp , h , cook , & ady_put ); 641 r : i(! ady_put && 642 ( t_t = `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 643 t = t_t ; 644 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 645 t = t_t ; 647 ( t ); 648 } } @../btree/bt_upgrade.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_upgde.h " 14 ~"dbc/b.h " 23 $__bam_30_bma ( dbp , _me , buf ) 24 DB * dbp ; 25 * _me ; 26 u_t8_t * buf ; 28 BTMETA30 * wma ; 29 BTMETA2X * dma ; 30 DB_ENV * dbv ; 31 t ; 33 dbv = dbp ->dbenv; 35 wma = ( BTMETA30 *) buf ; 36 dma = ( BTMETA2X *) buf ; 44 wma -> _d = dma ->re_pad; 45 wma -> _n = dma ->re_len; 46 wma -> mkey = dma ->minkey; 47 wma -> maxkey = dma ->maxkey; 48 wma -> dbma . = dma ->free; 49 wma -> dbma . ags = dma ->flags; 50 wma -> dbma . ty = P_BTREEMETA ; 52 wma -> dbma . vsi = 7; 54 i(( t = `__os_feid ( dbv , _me , 1, buf + 36)) != 0) 55 ( t ); 57 wma -> ro = 1; 60 } } 70 $__bam_31_bma ( dbp , _me , ags , fhp , h , dtyp ) 71 DB * dbp ; 72 * _me ; 73 u_t32_t ags ; 74 DB_FH * fhp ; 75 PAGE * h ; 76 * dtyp ; 78 BTMETA31 * wma ; 79 BTMETA30 * dma ; 81 `COMPQUIET ( dbp , NULL ); 82 `COMPQUIET ( _me , NULL ); 83 `COMPQUIET ( fhp , NULL ); 85 wma = ( BTMETA31 *) h ; 86 dma = ( BTMETA30 *) h ; 93 wma -> ro = dma ->root; 94 wma -> _d = dma ->re_pad; 95 wma -> _n = dma ->re_len; 96 wma -> mkey = dma ->minkey; 97 wma -> maxkey = dma ->maxkey; 98 `memmove ( wma -> dbma . uid , 99 dma -> dbma . uid , (oldmeta->dbmeta.uid)); 100 wma -> dbma . ags = dma ->dbmeta.flags; 101 wma -> dbma . cd_cou = 0; 102 wma -> dbma . key_cou = 0; 103 `ZERO_LSN ( wma -> dbma . unud3 ); 106 wma -> dbma . vsi = 8; 109 i( `LF_ISSET ( DB_DUPSORT )) 110 `F_SET (& wma -> dbma , BTM_DUPSORT ); 112 * dtyp = 1; 114 } } 124 $__bam_31_lb ( dbp , _me , ags , fhp , h , dtyp ) 125 DB * dbp ; 126 * _me ; 127 u_t32_t ags ; 128 DB_FH * fhp ; 129 PAGE * h ; 130 * dtyp ; 132 BKEYDATA * bk ; 133 db_pgno_t pgno ; 134 db_dx_t dx ; 135 t ; 137 t = 0; 138 dx = O_INDX ; indx < `NUM_ENT ( h ); indx + P_INDX ) { 139 bk = `GET_BKEYDATA ( dbp , h , dx ); 140 i( `B_TYPE ( bk -> ty = B_DUPLICATE ) { 141 pgno = `GET_BOVERFLOW ( dbp , h , dx )->pgno; 142 i(( t = `__db_31_offdup ( dbp , _me , fhp , 143 `LF_ISSET ( DB_DUPSORT ? 1 : 0, & pgno )) != 0) 145 i( pgno ! `GET_BOVERFLOW ( dbp , h , dx )->pgno) { 146 * dtyp = 1; 147 `GET_BOVERFLOW ( dbp , h , dx )-> pgno =gno; 152 ( t ); 153 } } @../btree/bt_verify.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_vify.h " 14 ~"dbc/b.h " 15 ~"dbc/mp.h " 17 __bam__gda __P (( DB *, PAGE *, u_t32_t , , DBT *, *)); 18 __bam_vrfy_p __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , 19 db_dx_t *, u_t32_t )); 20 __bam_vrfy_d __P (( DB *, PAGE *, BINTERNAL *, 21 BINTERNAL *, (*)( DB *, cڡ DBT *, cڡ DBT *), u_t32_t )); 22 __m_vrfy_p `__P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , 23 db_dx_t *, u_t32_t )); 33 $__bam_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 34 DB * dbp ; 35 VRFY_DBINFO * vdp ; 36 BTMETA * ma ; 37 db_pgno_t pgno ; 38 u_t32_t ags ; 40 DB_ENV * dbv ; 41 VRFY_PAGEINFO * p ; 42 isbad , t_t , t ; 43 db_dx_t ovsize ; 45 dbv = dbp ->dbenv; 46 isbad = 0; 48 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 49 ( t ); 60 i(! `F_ISSET ( p , VRFY_INCOMPLETE ) && 61 ( t = `__db_vrfy_ma ( dbp , vdp , & ma -> dbma , pgno , ags )) != 0) { 62 i( t = DB_VERIFY_BAD ) 63 isbad = 1; 65 r ; 71 ovsize = ma -> mkey > 0 ? 72 `B_MINKEY_TO_OVFLSIZE ( dbp , ma -> mkey , dbp-> pgsize ) : 0; 74 i( ma -> mkey < 2 || 75 ovsize > `B_MINKEY_TO_OVFLSIZE ( dbp , DEFMINKEYPAGE , dbp-> pgsize )) { 76 p -> bt_mkey = 0; 77 isbad = 1; 78 `EPRINT (( dbv , 80 ( u_lg ) pgno , (u_lg) ma -> mkey )); 82 p -> bt_mkey = ma -> mkey ; 85 p -> _d = ma ->re_pad; 86 p -> _n = ma ->re_len; 93 p -> ro = 0; 94 i( ma -> ro = PGNO_INVALID || 95 ma -> ro = pgno || ! `IS_VALID_PGNO (meta->root) || 96 ( pgno = PGNO_BASE_MD && ma -> ro != 1)) { 97 isbad = 1; 98 `EPRINT (( dbv , 100 ( u_lg ) pgno , (u_lg) ma -> ro )); 102 p -> ro = ma ->root; 105 i( `F_ISSET (& ma -> dbma , BTM_RENUMBER )) 106 `F_SET ( p , VRFY_IS_RRECNO ); 108 i( `F_ISSET (& ma -> dbma , BTM_SUBDB )) { 113 i( `F_ISSET (& ma -> dbma , BTM_DUP && pgno = PGNO_BASE_MD ) { 114 isbad = 1; 115 `EPRINT (( dbv , 117 ( u_lg ) pgno )); 119 `F_SET ( p , VRFY_HAS_SUBDBS ); 122 i( `F_ISSET (& ma -> dbma , BTM_DUP )) 123 `F_SET ( p , VRFY_HAS_DUPS ); 124 i( `F_ISSET (& ma -> dbma , BTM_DUPSORT )) 125 `F_SET ( p , VRFY_HAS_DUPSORT ); 126 i( `F_ISSET (& ma -> dbma , BTM_RECNUM )) 127 `F_SET ( p , VRFY_HAS_RECNUMS ); 128 i( `F_ISSET ( p , VRFY_HAS_RECNUMS && F_ISSET՝, VRFY_HAS_DUPS )) { 129 `EPRINT (( dbv , 131 ( u_lg ) pgno )); 132 isbad = 1; 135 i( `F_ISSET (& ma -> dbma , BTM_RECNO )) { 136 `F_SET ( p , VRFY_IS_RECNO ); 137 dbp -> ty = DB_RECNO ; 138 } i( `F_ISSET ( p , VRFY_IS_RRECNO )) { 139 isbad = 1; 140 `EPRINT (( dbv , 142 ( u_lg ) pgno )); 145 i( `F_ISSET ( p , VRFY_IS_RECNO && F_ISSET՝, VRFY_HAS_DUPS )) { 146 `EPRINT (( dbv , 148 ( u_lg ) pgno )); 149 isbad = 1; 152 i( `F_ISSET (& ma -> dbma , BTM_FIXEDLEN )) 153 `F_SET ( p , VRFY_IS_FIXEDLEN ); 154 i( p -> _n > 0) { 159 isbad = 1; 160 `EPRINT (( dbv , 162 ( u_lg ) pgno , (u_lg) p -> _n )); 170 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 171 t = t_t ; 172 i( `LF_ISSET ( DB_SALVAGE ) && 173 ( t_t = `__db_lvage_mkde ( vdp , pgno )!0 && t == 0) 174 t = t_t ; 175 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 176 } } 186 $__m_vrfy_af ( dbp , vdp , h , pgno , ags ) 187 DB * dbp ; 188 VRFY_DBINFO * vdp ; 189 PAGE * h ; 190 db_pgno_t pgno ; 191 u_t32_t ags ; 193 BKEYDATA * bk ; 194 DB_ENV * dbv ; 195 VRFY_PAGEINFO * p ; 196 db_dx_t i ; 197 t , t_t , isbad ; 198 u_t32_t _n_guess , n ; 200 dbv = dbp ->dbenv; 201 isbad = 0; 203 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 204 ( t ); 206 i( `TYPE ( h ! P_LRECNO ) { 207 t = `__db_unknown_th ( dbv , "__ram_vrfy_leaf"); 208 r ; 215 i(( t = `__db_vrfy_dage ( dbp , vdp , h , pgno , ags )) != 0) { 216 i( t = DB_VERIFY_BAD ) 217 isbad = 1; 219 r ; 226 i(( t = `__bam_vrfy_p ( dbp , 227 vdp , h , pgno , & p -> s , ags )) != 0) 228 r ; 230 i( `F_ISSET ( p , VRFY_HAS_DUPS )) { 231 `EPRINT (( dbv , 232 "Pag%lu: Redaba hadups", ( u_lg ) pgno )); 233 t = DB_VERIFY_BAD ; 234 r ; 243 _n_guess = 0; 244 i = 0; i < `NUM_ENT ( h ); i++) { 245 bk = `GET_BKEYDATA ( dbp , h , i ); 247 i( `B_DISSET ( bk -> ty )) 249 i( bk -> ty = B_OVERFLOW ) 250 n = (( BOVERFLOW *) bk )-> ; 251 i( bk -> ty = B_KEYDATA ) 252 n = bk ->len; 254 isbad = 1; 255 `EPRINT (( dbv , 257 ( u_lg ) pgno , (u_lg) i )); 260 i( _n_guess == 0) 261 _n_guess = n ; 268 i( _n_guess ! n ) { 269 _n_guess = 0; 273 p -> _n = _n_guess ; 276 p -> c_t = `NUM_ENT ( h ); 278 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 279 t = t_t ; 280 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 281 } } 291 $__bam_vrfy ( dbp , vdp , h , pgno , ags ) 292 DB * dbp ; 293 VRFY_DBINFO * vdp ; 294 PAGE * h ; 295 db_pgno_t pgno ; 296 u_t32_t ags ; 298 DB_ENV * dbv ; 299 VRFY_PAGEINFO * p ; 300 t , t_t , isbad ; 302 dbv = dbp ->dbenv; 303 isbad = 0; 305 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 306 ( t ); 308 `TYPE ( h )) { 309 P_IBTREE : 310 P_IRECNO : 311 P_LBTREE : 312 P_LDUP : 315 t = `__db_unknown_th ( dbv , "__bam_vrfy"); 316 r ; 323 i(( t = `__db_vrfy_dage ( dbp , vdp , h , pgno , ags )) != 0) { 324 i( t = DB_VERIFY_BAD ) 325 isbad = 1; 327 r ; 337 p -> c_t = `RE_NREC ( h ); 342 i( `TYPE ( h = P_IRECNO ) { 343 i(( t = `__m_vrfy_p ( dbp , 344 vdp , h , pgno , & p -> s , ags )) != 0) 345 r ; 346 } i(( t = `__bam_vrfy_p ( dbp , 347 vdp , h , pgno , & p -> s , ags )) != 0) { 348 i( t = DB_VERIFY_BAD ) 349 isbad = 1; 351 r ; 352 `EPRINT (( dbv , 354 ( u_lg ) pgno )); 355 } i(! `LF_ISSET ( DB_NOORDERCHK && ( t = 356 `__bam_vrfy_emd ( dbp , vdp , h , pgno , 0, 0, 0, ags )) != 0) { 362 i( t = DB_VERIFY_BAD ) 363 isbad = 1; 365 r ; 368 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 369 t = t_t ; 370 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 371 } } 381 $__m_vrfy_p ( dbp , vdp , h , pgno , r , ags ) 382 DB * dbp ; 383 VRFY_DBINFO * vdp ; 384 PAGE * h ; 385 db_pgno_t pgno ; 386 db_dx_t * r ; 387 u_t32_t ags ; 389 DB_ENV * dbv ; 390 RINTERNAL * ri ; 391 VRFY_CHILDINFO chd ; 392 VRFY_PAGEINFO * p ; 393 t , t_t , isbad ; 394 u_t32_t himk , i , offt , rs ; 395 db_dx_t * p ; 396 u_t8_t * gayout , * p ; 398 dbv = dbp ->dbenv; 399 isbad = 0; 400 `memt (& chd , 0, ( VRFY_CHILDINFO )); 401 rs = 0; 402 gayout = NULL ; 404 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 405 ( t ); 407 i( `TYPE ( h ! P_IRECNO ) { 408 t = `__db_unknown_th ( dbv , "__ram_vrfy_inp"); 409 r ; 412 himk = dbp -> pgsize ; 413 i(( t = `__os_mloc ( dbv , dbp -> pgsize , & gayout )) != 0) 414 r ; 415 `memt ( gayout , 0, dbp -> pgsize ); 416 p = `P_INP ( dbp , h ); 417 i = 0; i < `NUM_ENT ( h ); i++) { 418 i(( u_t8_t *) p + i >(u_t8_*) h + himk ) { 419 `EPRINT (( dbv , 421 ( u_lg ) pgno , (u_lg) i )); 422 t = DB_VERIFY_BAD ; 423 r ; 425 offt = p [ i ]; 431 i( offt <( u_t32_t )(( u_t8_t *) p + i - 432 ( u_t8_t *) h ) || 433 offt > ( u_t32_t )( dbp -> pgsize - RINTERNAL_SIZE )) { 434 isbad = 1; 435 `EPRINT (( dbv , 437 ( u_lg ) pgno , (u_lg) offt , (u_lg) i )); 442 i( offt < himk ) 443 himk = offt ; 445 rs ++; 448 ri = `GET_RINTERNAL ( dbp , h , i ); 449 i( gayout [ offt ] == 0) { 450 gayout [ offt ] = 1; 451 chd . pgno = ri ->pgno; 452 chd . ty = V_RECNO ; 453 chd . ecs = ri ->nrecs; 454 i(( t = `__db_vrfy_chdput ( vdp , pgno , & chd )) != 0) 455 r ; 457 `EPRINT (( dbv , 459 ( u_lg ) pgno , (u_lg) offt )); 460 isbad = 1; 464 p = gayout + himk ; 465 p < gayout + dbp -> pgsize ; 466 p + RINTERNAL_SIZE ) 467 i(* p != 1) { 468 `EPRINT (( dbv , 470 ( u_lg ) pgno , (u_lg)( p - gayout ))); 471 isbad = 1; 474 i(( db_dx_t ) himk ! `HOFFSET ( h )) { 475 `EPRINT (( dbv , 477 ( u_lg ) pgno , (u_lg)( `HOFFSET ( h )), (u_lg) himk )); 478 isbad = 1; 481 * r = rs ; 483 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 484 t = t_t ; 485 i( gayout ! NULL ) 486 `__os_ ( dbv , gayout ); 487 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 488 } } 490 um { mVRFY_ITEM_NOTSET =0, mVRFY_ITEM_BEGIN , mVRFY_ITEM_END } tVRFY_ITEM ; 498 $__bam_vrfy_p ( dbp , vdp , h , pgno , r , ags ) 499 DB * dbp ; 500 VRFY_DBINFO * vdp ; 501 PAGE * h ; 502 db_pgno_t pgno ; 503 db_dx_t * r ; 504 u_t32_t ags ; 506 BKEYDATA * bk ; 507 BOVERFLOW * bo ; 508 DB_ENV * dbv ; 509 VRFY_CHILDINFO chd ; 510 VRFY_ITEM * gayout ; 511 VRFY_PAGEINFO * p ; 512 u_t32_t himk , offt ; 516 u_t32_t i , doff , rs ; 517 isbad , em , isdupem , t , t_t ; 519 dbv = dbp ->dbenv; 520 isbad = isdupem = 0; 521 rs = 0; 522 `memt (& chd , 0, ( VRFY_CHILDINFO )); 523 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 524 ( t ); 526 `TYPE ( h )) { 527 P_IBTREE : 528 P_LBTREE : 529 P_LDUP : 530 P_LRECNO : 538 i( `LF_ISSET ( DB_SALVAGE )) 540 t = `__db_unknown_th ( dbv , "__bam_vrfy_inp"); 541 r ; 555 himk = dbp -> pgsize ; 556 i(( t = `__os_oc ( 557 dbv , dbp -> pgsize , ( gayout [0]), &pagelayout)) != 0) 558 r ; 559 i = 0; i < `NUM_ENT ( h ); i++) { 560 t = `__db_vrfy_pem ( dbp , 561 h , pgno , i , 1, ags , & himk , & offt )) { 564 DB_VERIFY_BAD : 565 isbad = 1; 567 DB_VERIFY_FATAL : 568 isbad = 1; 569 r ; 571 `DB_ASSERT ( dbv , t != 0); 582 bk = `GET_BKEYDATA ( dbp , h , i ); 583 i( gayout [ offt ] = VRFY_ITEM_NOTSET ) 584 gayout [ offt ] = VRFY_ITEM_BEGIN ; 585 i( gayout [ offt ] = VRFY_ITEM_BEGIN ) { 592 i(( i % P_INDX =0&& ( `TYPE ( h = P_LBTREE )) { 594 `F_SET ( p , VRFY_HAS_DUPS ); 597 rs ++; 603 isdupem = 1; 605 isbad = 1; 606 `EPRINT (( dbv , "Page %lu: duplicated item %lu", 607 ( u_lg ) pgno , (u_lg) i )); 618 `B_TYPE ( bk -> ty )) { 619 B_KEYDATA : 620 i( `TYPE ( h = P_IBTREE ) 622 doff = offt + `BINTERNAL_SIZE ( bk -> n ) - 1; 624 doff = offt + `BKEYDATA_SIZE ( bk -> n ) - 1; 626 B_DUPLICATE : 631 `F_SET ( p , VRFY_HAS_DUPS ); 633 B_OVERFLOW : 639 doff = offt + 640 (( `TYPE ( h = P_IBTREE ) ? 641 `BINTERNAL_SIZE ( BOVERFLOW_SIZE ) : 642 BOVERFLOW_SIZE ) - 1; 649 doff = offt + `BKEYDATA_SIZE (0) - 1; 657 i( isdupem && gayout [ doff ] ! VRFY_ITEM_END ) { 658 `EPRINT (( dbv , "Page %lu: duplicated item %lu", 659 ( u_lg ) pgno , (u_lg) i )); 660 isbad = 1; 661 } i( gayout [ doff ] = VRFY_ITEM_NOTSET ) 662 gayout [ doff ] = VRFY_ITEM_END ; 663 isdupem = 0; 669 i( `B_DISSET ( bk -> ty && `TYPE ( h ! P_LRECNO ) { 670 isbad = 1; 671 `EPRINT (( dbv , "Page %lu: item %lu marked deleted", 672 ( u_lg ) pgno , (u_lg) i )); 679 `B_TYPE ( bk -> ty )) { 680 B_KEYDATA : 687 B_DUPLICATE : 688 i( `TYPE ( h = P_IBTREE ) { 689 isbad = 1; 690 `EPRINT (( dbv , 692 ( u_lg ) pgno , (u_lg) i )); 694 } i( `TYPE ( h = P_LRECNO ) { 695 isbad = 1; 696 `EPRINT (( dbv , 698 ( u_lg ) pgno , (u_lg) i )); 702 B_OVERFLOW : 703 bo = ( `TYPE ( h = P_IBTREE ) ? 704 ( BOVERFLOW *)((( BINTERNAL *) bk )-> da ) : 705 ( BOVERFLOW *) bk ; 707 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) 709 i( bo -> > dbp -> pgsize * vdp -> ϡ_pgno ) { 710 isbad = 1; 711 `EPRINT (( dbv , 713 ( u_lg ) pgno , 714 ( u_lg ) bo -> , (u_lg) i )); 719 i(! `IS_VALID_PGNO ( bo -> pgno ) || bo->pgno ==gno || 720 bo -> pgno = PGNO_INVALID ) { 721 isbad = 1; 722 `EPRINT (( dbv , 724 ( u_lg ) pgno , (u_lg) i , (u_lg) bo ->pgno)); 729 chd . pgno = bo ->pgno; 730 chd . ty = ( `B_TYPE ( bk ->ty= B_OVERFLOW ? 731 V_OVERFLOW : V_DUPLICATE ); 732 chd . = bo ->tlen; 733 i(( t = `__db_vrfy_chdput ( vdp , pgno , & chd )) != 0) 734 r ; 737 isbad = 1; 738 `EPRINT (( dbv , "Page %lu: item %lu of invalidype %lu", 739 ( u_lg ) pgno , (u_lg) i , (u_lg) `B_TYPE ( bk -> ty ))); 748 em = 0; 749 i = himk ; i < dbp -> pgsize ; i++) 750 i( em == 0) 751 gayout [ i ]) { 752 VRFY_ITEM_NOTSET : 754 i( i ! `DB_ALIGN (i, ( u_t32_t ))) 757 isbad = 1; 758 `EPRINT (( dbv , 760 ( u_lg ) pgno , (u_lg) i )); 762 ; gayout [ i + 1] = VRFY_ITEM_NOTSET && 763 ( size_t )( i + 1< dbp -> pgsize ; i++) 766 VRFY_ITEM_BEGIN : 768 i( i ! `DB_ALIGN (i, ( u_t32_t ))) { 769 isbad = 1; 770 `EPRINT (( dbv , 772 ( u_lg ) pgno , (u_lg) i )); 774 em = 1; 775 rs ++; 777 VRFY_ITEM_END : 783 isbad = 1; 784 `EPRINT (( dbv , 786 ( u_lg ) pgno , (u_lg) i )); 790 gayout [ i ]) { 791 VRFY_ITEM_NOTSET : 794 VRFY_ITEM_END : 796 em = 0; 798 VRFY_ITEM_BEGIN : 803 isbad = 1; 804 `EPRINT (( dbv , 806 ( u_lg ) pgno , (u_lg) i )); 810 `__os_ ( dbv , gayout ); 813 i(( db_dx_t ) himk ! `HOFFSET ( h )) { 814 `EPRINT (( dbv , "Page %lu: bad HOFFSET %lu,ppearso be %lu", 815 ( u_lg ) pgno , (u_lg) `HOFFSET ( h ), (u_lg) himk )); 816 isbad = 1; 819 r : i( r ! NULL ) 820 * r = rs ; 822 i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 823 t = t_t ; 825 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 826 } } 845 $__bam_vrfy_emd ( dbp , vdp , h , pgno , rs , ovok , hasdups , ags ) 846 DB * dbp ; 847 VRFY_DBINFO * vdp ; 848 PAGE * h ; 849 db_pgno_t pgno ; 850 u_t32_t rs ; 851 ovok , hasdups ; 852 u_t32_t ags ; 854 BINTERNAL * bi ; 855 BKEYDATA * bk ; 856 BOVERFLOW * bo ; 857 BTREE * bt ; 858 DBT db , dbtb , dup_1 , dup_2 , * p1 , * p2 , * tmp ; 859 DB_ENV * dbv ; 860 VRFY_PAGEINFO * p ; 861 db_dx_t i , * p ; 862 adj , cmp , dup_1 , dup_2 , isbad , t , t_t ; 863 (* dupfunc `__P (( DB *, cڡ DBT *, const DBT *)); 864 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 865 * buf1 , * buf2 , * tmpbuf ; 872 i( vdp ! NULL ) { 873 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 874 ( t ); 875 rs = p -> s ; 877 p = NULL ; 879 dbv = dbp ->dbenv; 880 t = isbad = 0; 881 bo = NULL ; 883 `memt (& db , 0, ( DBT )); 884 `F_SET (& db , DB_DBT_REALLOC ); 886 `memt (& dbtb , 0, ( DBT )); 887 `F_SET (& dbtb , DB_DBT_REALLOC ); 889 buf1 = buf2 = NULL ; 891 `DB_ASSERT ( dbv , ! `LF_ISSET ( DB_NOORDERCHK )); 893 dupfunc = ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 894 i( `TYPE ( h = P_LDUP ) 895 func = dupfunc ; 897 func = __bam_defcmp ; 898 i( dbp -> bt_ ! NULL ) { 899 bt = ( BTREE *) dbp -> bt_ ; 900 i( bt -> bt_com ! NULL ) 901 func = bt -> bt_com ; 910 p1 = & db ; 911 p2 = & dbtb ; 923 p = `P_INP ( dbp , h ); 924 adj = ( `TYPE ( h = P_LBTREE ? P_INDX : O_INDX ; 925 i = ( `TYPE ( h = P_IBTREE ? 1 : 0; i < rs ; i + adj ) { 929 tmp = p1 ; 930 p1 = p2 ; 931 p2 = tmp ; 932 tmpbuf = buf1 ; 933 buf1 = buf2 ; 934 buf2 = tmpbuf ; 939 `TYPE ( h )) { 940 P_IBTREE : 941 bi = `GET_BINTERNAL ( dbp , h , i ); 942 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 943 bo = ( BOVERFLOW *)( bi -> da ); 944 ovow ; 946 p2 -> da = bi ->data; 947 p2 -> size = bi -> n ; 961 i( i =0 && bi -> n != 0) { 962 isbad = 1; 963 `EPRINT (( dbv , 965 ( u_lg ) pgno )); 969 P_LBTREE : 970 P_LDUP : 971 bk = `GET_BKEYDATA ( dbp , h , i ); 972 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 973 bo = ( BOVERFLOW *) bk ; 974 ovow ; 976 p2 -> da = bk ->data; 977 p2 -> size = bk -> n ; 985 t = `__db_unknown_th ( dbv , "__bam_vrfy_itemorder"); 986 r ; 1000 ovow : i(! ovok ) { 1001 `F_SET ( p , VRFY_INCOMPLETE ); 1002 r ; 1014 p2 -> da = buf2 ; 1015 i(( t = `__db_goff ( dbp , NULL , 1016 p2 , bo -> , bo-> pgno , NULL , NULL)) != 0) { 1017 isbad = 1; 1018 `EPRINT (( dbv , 1020 ( u_lg ) pgno , (u_lg) t , (u_lg) i )); 1023 buf2 = p2 -> da ; 1027 i( p1 -> da ! NULL && p2 ->data != NULL) { 1028 cmp = p [ i ] =p[- adj ] ? 0 : `func ( dbp , p1 , p2 ); 1031 i( cmp > 0) { 1032 isbad = 1; 1033 `EPRINT (( dbv , 1035 ( u_lg ) pgno , (u_lg) i )); 1037 } i( cmp == 0) { 1038 i( p [ i ] !p[- adj ]) { 1039 `EPRINT (( dbv , 1041 ( u_lg ) pgno , (u_lg) i )); 1042 isbad = 1; 1050 i( p ! NULL ) 1051 `F_SET ( p , VRFY_HAS_DUPS ); 1052 i( hasdups == 0) { 1053 isbad = 1; 1054 `EPRINT (( dbv , 1056 ( u_lg ) pgno )); 1071 i( `TYPE ( h = P_LBTREE ) { 1076 i( i + 1 >( db_dx_t ) rs ) 1086 i((( t = `__bam__gda ( dbp , 1087 h , i - 1, ovok , & dup_1 , 1088 & dup_1 )) != 0) || 1089 (( t = `__bam__gda ( dbp , 1090 h , i + 1, ovok , & dup_2 , 1091 & dup_2 )) != 0)) 1092 r ; 1100 i( dup_1 . da = NULL || 1101 dup_2 . da = NULL ) { 1102 `DB_ASSERT ( dbv , ! ovok ); 1103 `F_SET ( p , VRFY_INCOMPLETE ); 1104 r ; 1113 i( `dupfunc ( dbp , & dup_1 , & dup_2 ) > 0) 1114 `F_SET ( p , VRFY_DUPS_UNSORTED ); 1116 i( dup_1 ) 1117 `__os_u ( dbv , dup_1 . da ); 1118 i( dup_2 ) 1119 `__os_u ( dbv , dup_2 . da ); 1125 r : i( p ! NULL && (( t_t = 1126 `__db_vrfy_puagefo ( dbv , vdp , p )!0&& t == 0) 1127 t = t_t ; 1129 i( buf1 ! NULL ) 1130 `__os_u ( dbv , buf1 ); 1131 i( buf2 ! NULL ) 1132 `__os_u ( dbv , buf2 ); 1134 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1135 } } 1146 $__bam_vrfy_ruu ( dbp , vdp , ma_pgno , ags ) 1147 DB * dbp ; 1148 VRFY_DBINFO * vdp ; 1149 db_pgno_t ma_pgno ; 1150 u_t32_t ags ; 1152 DB * pgt ; 1153 DB_ENV * dbv ; 1154 VRFY_PAGEINFO * m , * r ; 1155 db_pgno_t ro , p ; 1156 t_t , t ; 1157 u_t32_t ecs , v , n , ags ; 1159 dbv = dbp ->dbenv; 1160 m = r = 0; 1161 pgt = vdp ->pgset; 1163 i(( t = `__db_vrfy_ggefo ( vdp , ma_pgno , & m )) != 0) 1164 ( t ); 1166 i(( t = `__db_vrfy_pgt_g ( pgt , ma_pgno , (*)& p )) != 0) 1167 r ; 1168 i( p != 0) { 1169 `EPRINT (( dbv , 1171 ( u_lg ) ma_pgno )); 1172 t = DB_VERIFY_BAD ; 1173 r ; 1175 i(( t = `__db_vrfy_pgt_c ( pgt , ma_pgno )) != 0) 1176 r ; 1178 ro = m ->root; 1180 i( ro == 0) { 1181 `EPRINT (( dbv , 1183 ( u_lg ) ma_pgno )); 1184 t = DB_VERIFY_BAD ; 1185 r ; 1188 i(( t = `__db_vrfy_ggefo ( vdp , ro , & r )) != 0) 1189 r ; 1191 r -> ty ) { 1192 P_IBTREE : 1193 P_LBTREE : 1194 ags = ags | ST_TOPLEVEL ; 1195 i( `F_ISSET ( m , VRFY_HAS_DUPS )) 1196 ags | ST_DUPOK ; 1197 i( `F_ISSET ( m , VRFY_HAS_DUPSORT )) 1198 ags | ST_DUPSORT ; 1199 i( `F_ISSET ( m , VRFY_HAS_RECNUMS )) 1200 ags | ST_RECNUM ; 1201 t = `__bam_vrfy_sub ( dbp , 1202 vdp , ro , NULL , NULL, ags , NULL, NULL, NULL); 1204 P_IRECNO : 1205 P_LRECNO : 1206 ags = ags | ST_RECNUM | ST_IS_RECNO | ST_TOPLEVEL ; 1207 i( m -> _n > 0) 1208 ags | ST_RELEN ; 1209 i(( t = `__bam_vrfy_sub ( dbp , vdp , 1210 ro , NULL , NULL, ags , & v , & ecs , & n )) != 0) 1211 r ; 1218 i( m -> _n > 0 && n > 0 && mip->re_len !=elen) { 1219 `EPRINT (( dbv , 1221 ( u_lg ) ma_pgno , (u_lg) n )); 1222 t = DB_VERIFY_BAD ; 1223 r ; 1225 t = 0; 1227 P_LDUP : 1228 `EPRINT (( dbv , 1230 ( u_lg ) ma_pgno )); 1231 t = DB_VERIFY_BAD ; 1234 `EPRINT (( dbv , 1236 ( u_lg ) ma_pgno , (u_lg) r -> ty )); 1237 t = DB_VERIFY_BAD ; 1241 r : i( m ! NULL && (( t_t = 1242 `__db_vrfy_puagefo ( dbv , vdp , m )!0&& t == 0) 1243 t = t_t ; 1244 i( r ! NULL && (( t_t = 1245 `__db_vrfy_puagefo ( dbv , vdp , r )!0&& t == 0) 1246 t = t_t ; 1247 ( t ); 1248 } } 1261 $__bam_vrfy_sub ( dbp , vdp , pgno , l , r , ags , vp , ec , ) 1262 DB * dbp ; 1263 VRFY_DBINFO * vdp ; 1264 db_pgno_t pgno ; 1265 * l , * r ; 1266 u_t32_t ags , * vp , * ec , * ; 1268 BINTERNAL * li , * ri ; 1269 DB * pgt ; 1270 DBC * cc ; 1271 DB_ENV * dbv ; 1272 DB_MPOOLFILE * mpf ; 1273 PAGE * h ; 1274 VRFY_CHILDINFO * chd ; 1275 VRFY_PAGEINFO * p ; 1276 db_dx_t i ; 1277 db_pgno_t xt_pgno , ev_pgno ; 1278 db_o_t chd_ecs , ecs ; 1279 u_t32_t chd_v , chd_n , j , v , n , ags ; 1280 u_t8_t af_ty ; 1281 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1282 isbad , p , t , t_t , tv ; 1284 i( vp ! NULL ) 1285 * vp = 0; 1286 i( ec ! NULL ) 1287 * ec = 0; 1289 dbv = dbp ->dbenv; 1290 mpf = dbp ->mpf; 1291 h = NULL ; 1292 xt_pgno = ev_pgno = PGNO_INVALID ; 1293 ecs = 0; 1294 n = 0; 1295 af_ty = P_INVALID ; 1296 isbad = t = 0; 1299 i(! `LF_ISSET ( DB_SALVAGE )) 1300 `__db_vrfy_ru_edback ( dbp , vdp ); 1302 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1303 ( t ); 1305 cc = NULL ; 1306 v = p -> bt_v ; 1308 tv = `LF_ISSET ( ST_TOPLEVEL ) ? 1 : 0; 1309 `LF_CLR ( ST_TOPLEVEL ); 1321 i( tv ) { 1327 ev_pgno = vdp ->prev_pgno; 1328 xt_pgno = vdp ->next_pgno; 1329 af_ty = vdp ->leaf_type; 1330 vdp -> xt_pgno = vdp-> ev_pgno = PGNO_INVALID ; 1331 vdp -> af_ty = P_INVALID ; 1359 p -> ty ) { 1360 P_LRECNO : 1361 P_LDUP : 1362 P_LBTREE : 1369 i( vdp -> af_ty = P_INVALID ) { 1375 vdp -> af_ty = p -> ty ; 1376 i( p -> ev_pgno ! PGNO_INVALID ) 1377 bad_ev ; 1383 i( p -> ty ! vdp -> af_ty ) { 1384 isbad = 1; 1385 `EPRINT (( dbv , 1387 ( u_lg ) p -> pgno , (u_lg-> ty , 1388 ( u_lg ) vdp -> af_ty )); 1395 i(! `F_ISSET ( vdp , VRFY_LEAFCHAIN_BROKEN )) { 1396 i( p -> pgno ! vdp -> xt_pgno ) { 1397 isbad = 1; 1398 `EPRINT (( dbv , 1400 ( u_lg ) vdp -> ev_pgno , 1401 ( u_lg ) vdp -> xt_pgno , 1402 ( u_lg ) p -> pgno )); 1404 i( p -> ev_pgno ! vdp ->prev_pgno) { 1405 bad_ev : isbad = 1; 1406 `EPRINT (( dbv , 1408 ( u_lg ) p -> pgno , 1409 ( u_lg ) p -> ev_pgno , 1410 ( u_lg ) vdp -> ev_pgno )); 1414 vdp -> ev_pgno = p -> pgno ; 1415 vdp -> xt_pgno = p ->next_pgno; 1416 `F_CLR ( vdp , VRFY_LEAFCHAIN_BROKEN ); 1422 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 1423 r ; 1424 t = `__db_vrfy_cct ( cc , pgno , & chd );et == 0; 1425 t = `__db_vrfy_cext ( cc , & chd )) 1426 i( chd -> ty = V_OVERFLOW && 1427 ( t = `__db_vrfy_ov_ruu ( dbp , vdp , 1428 chd -> pgno , chd-> , 1429 ags | ST_OVFL_LEAF )) != 0) { 1430 i( t = DB_VERIFY_BAD ) 1431 isbad = 1; 1433 de ; 1436 i(( t = `__db_vrfy_cco ( cc )) != 0) 1437 r ; 1438 cc = NULL ; 1441 i( p -> ty = P_LRECNO ) { 1442 i(! `LF_ISSET ( ST_IS_RECNO ) && 1443 !( `LF_ISSET ( ST_DUPOK && !LF_ISSET( ST_DUPSORT ))) { 1444 isbad = 1; 1445 `EPRINT (( dbv , 1447 ( u_lg ) pgno )); 1448 de ; 1450 af ; 1451 } i( `LF_ISSET ( ST_IS_RECNO )) { 1456 isbad = 1; 1457 `EPRINT (( dbv , 1459 ( u_lg ) pgno )); 1460 de ; 1464 i( p -> ty = P_LDUP ) 1465 af ; 1470 i( `F_ISSET ( p , VRFY_HAS_DUPS )) { 1472 i(! `LF_ISSET ( ST_DUPOK )) { 1473 isbad = 1; 1474 `EPRINT (( dbv , 1476 ( u_lg ) pgno )); 1482 i(( t = 1483 `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 1484 r ; 1485 t = `__db_vrfy_cct ( cc , pgno , & chd ); 1486 t == 0; 1487 t = `__db_vrfy_cext ( cc , & chd )) { 1488 ags = ags | ST_RECNUM | ST_DUPSET ; 1490 i( chd -> ty = V_DUPLICATE ) { 1491 i(( t = `__db_vrfy_duy ( 1492 dbp , vdp , chd -> pgno , 1493 ags )) != 0) { 1494 isbad = 1; 1498 i(( t = `__bam_vrfy_sub ( 1499 dbp , vdp , chd -> pgno , NULL , 1500 NULL , ags | ST_TOPLEVEL , 1501 NULL , NULL, NULL)) != 0) { 1502 i( t == 1503 DB_VERIFY_BAD ) 1504 isbad = 1; 1506 r ; 1511 i(( t = `__db_vrfy_cco ( cc )) != 0) 1512 r ; 1513 cc = NULL ; 1519 i( `F_ISSET ( p , VRFY_DUPS_UNSORTED ) && 1520 `LF_ISSET ( ST_DUPSORT )) { 1521 isbad = 1; 1522 `EPRINT (( dbv , 1524 ( u_lg ) pgno )); 1528 af ; 1529 P_IBTREE : 1530 P_IRECNO : 1545 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) 1546 `ZEROPG_ERR_PRINT ( dbv , pgno , "btree orecnoage"); 1548 `EPRINT (( dbv , 1550 ( u_lg ) pgno , (u_lg) p -> ty )); 1559 `F_SET ( vdp , VRFY_LEAFCHAIN_BROKEN ); 1561 t = DB_VERIFY_BAD ; 1562 r ; 1570 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 1571 r ; 1572 t = `__db_vrfy_cct ( cc , pgno , & chd );et == 0; 1573 t = `__db_vrfy_cext ( cc , & chd )) 1574 i( chd -> ty = V_RECNO ) { 1575 i( p -> ty ! P_IRECNO ) { 1576 t = `__db_unknown_th ( 1577 dbv , "__bam_vrfy_subtree"); 1578 r ; 1580 i(( t = `__bam_vrfy_sub ( dbp , vdp , chd -> pgno , 1581 NULL , NULL, ags , & chd_v , & chd_ecs , 1582 & chd_n )) != 0) { 1583 i( t = DB_VERIFY_BAD ) 1584 isbad = 1; 1586 de ; 1589 i( `LF_ISSET ( ST_RELEN )) { 1590 i( n == 0) 1591 n = chd_n ; 1596 i( chd_n > 0 && 1597 n ! chd_n ) { 1598 isbad = 1; 1599 `EPRINT (( dbv , 1601 ( u_lg ) chd -> pgno , 1602 ( u_lg ) chd_n )); 1604 i( ) 1605 * = n ; 1607 i( `LF_ISSET ( ST_RECNUM )) { 1608 i( chd -> ecs ! chd_ecs ) { 1609 isbad = 1; 1610 `EPRINT (( dbv , 1612 ( u_lg ) chd -> pgno , 1613 ( u_lg ) chd_ecs , 1614 ( u_lg ) chd -> ecs )); 1616 ecs + chd_ecs ; 1618 i( isbad =0 && v ! chd_v + 1) { 1619 isbad = 1; 1620 `EPRINT (( dbv , 1622 ( u_lg ) chd -> pgno , (u_lg) chd_v , 1623 ( u_lg )( v - 1))); 1625 } i( chd -> ty = V_OVERFLOW ) { 1645 `DB_ASSERT ( dbv , chd -> ft >= 1); 1651 i( chd -> ft > 2) { 1652 isbad = 1; 1653 `EPRINT (( dbv , 1655 ( u_lg ) pgno , (u_lg) chd ->pgno)); 1657 j = 0; j < chd -> ft ; j++) 1658 i(( t = `__db_vrfy_ov_ruu ( dbp , 1659 vdp , chd -> pgno , chd-> , 1660 ags )) != 0) { 1661 i( t = DB_VERIFY_BAD ) 1662 isbad = 1; 1664 de ; 1668 i(( t = `__db_vrfy_cco ( cc )) != 0) 1669 r ; 1670 cc = NULL ; 1673 i( p -> ty = P_IRECNO ) 1674 de ; 1686 i( h = NULL && ( t = `__memp_fg ( mpf , & pgno , NULL, 0, &h)) != 0) 1687 r ; 1688 i = 0; i < p -> s ; i + O_INDX ) { 1689 li = `GET_BINTERNAL ( dbp , h , i ); 1690 ri = ( i + O_INDX < p -> s ) ? 1691 `GET_BINTERNAL ( dbp , h , i + O_INDX : r ; 1697 i(( t = `__bam_vrfy_sub ( dbp , vdp , li -> pgno , 1698 i =0 ? NULL : li , ri , ags , & chd_v , 1699 & chd_ecs , NULL )) != 0) { 1700 i( t = DB_VERIFY_BAD ) 1701 isbad = 1; 1703 de ; 1706 i( `LF_ISSET ( ST_RECNUM )) { 1712 ecs + chd_ecs ; 1718 i( li -> ecs ! chd_ecs ) { 1719 isbad = 1; 1720 `EPRINT (( dbv , 1722 ( u_lg ) pgno , (u_lg) i , (u_lg) li -> ecs , 1723 ( u_lg ) chd_ecs )); 1727 i( v ! chd_v + 1) { 1728 isbad = 1; 1729 `EPRINT (( dbv , 1731 ( u_lg ) li -> pgno , 1732 ( u_lg ) chd_v , (u_lg)( v - 1))); 1737 af : v = LEAFLEVEL ; 1738 i( `LF_ISSET ( ST_RECNUM )) 1739 ecs = p -> c_t ; 1749 i( `LF_ISSET ( ST_RELEN && ) 1750 * = p -> _n ; 1752 de : i( `F_ISSET ( p , VRFY_INCOMPLETE && isbad =0 && t == 0) { 1759 i( h = NULL && 1760 ( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 1761 r ; 1762 i(( t = `__bam_vrfy_emd ( dbp , 1763 vdp , h , pgno , 0, 1, 0, ags )) != 0) 1764 r ; 1765 `F_CLR ( p , VRFY_INCOMPLETE ); 1778 i( isbad =0 && t == 0) { 1779 i( h = NULL && 1780 ( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 1781 r ; 1783 i( `NUM_ENT ( h =0 && `ISINTERNAL (h)) { 1784 isbad = 1; 1785 `EPRINT (( dbv , 1787 ( u_lg ) pgno )); 1788 r ; 1797 i( isbad =0 && t =0 && ! `LF_ISSET ( DB_NOORDERCHK ) && 1798 p -> ty ! P_IRECNO &&->ty ! P_LRECNO ) { 1799 i( h = NULL && 1800 ( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 1801 r ; 1809 func = `LF_ISSET ( ST_DUPSET ? dbp -> dup_com : 1810 (( BTREE *) dbp -> bt_ )-> bt_com ; 1811 i( func = NULL ) 1812 func = __bam_defcmp ; 1814 i(( t = `__bam_vrfy_d ( 1815 dbp , h , l , r , func , ags )) != 0) { 1816 i( t = DB_VERIFY_BAD ) 1817 isbad = 1; 1819 r ; 1829 i( `LF_ISSET ( ST_RECNUM && ecs ! p -> c_t && tv ) { 1830 isbad = 1; 1831 `EPRINT (( dbv , 1833 ( u_lg ) pgno , (u_lg) ecs , (u_lg) p -> c_t )); 1836 i( vp ) 1837 * vp = v ; 1838 i( ec ) 1839 * ec = ecs ; 1841 pgt = vdp ->pgset; 1842 i(( t = `__db_vrfy_pgt_g ( pgt , pgno , & p )) != 0) 1843 r ; 1844 i( p != 0) { 1845 isbad = 1; 1846 `EPRINT (( dbv , "Pag%lu:kedwi", ( u_lg ) pgno )); 1847 } i(( t = `__db_vrfy_pgt_c ( pgt , pgno )) != 0) 1848 r ; 1850 i( tv ) 1855 i( vdp -> xt_pgno ! PGNO_INVALID ) { 1856 isbad = 1; 1857 `EPRINT (( dbv , "Page %lu: unterminatedeaf chain", 1858 ( u_lg ) vdp -> ev_pgno )); 1861 r : i( tv ) { 1863 vdp -> xt_pgno =ext_pgno; 1864 vdp -> ev_pgno =rev_pgno; 1865 vdp -> af_ty =eaf_type; 1868 i( h ! NULL && ( t_t = 1869 `__memp_ut ( mpf , h , DB_PRIORITY_UNCHANGED )!0 && t == 0) 1870 t = t_t ; 1871 i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1872 t = t_t ; 1873 i( cc ! NULL && (( t_t = `__db_vrfy_cco (cc)!0&& t == 0) 1874 t = t_t ; 1875 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1876 } } 1892 $__bam_vrfy_d ( dbp , h , , , func , ags ) 1893 DB * dbp ; 1894 PAGE * h ; 1895 BINTERNAL * , * ; 1896 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1897 u_t32_t ags ; 1899 BOVERFLOW * bo ; 1900 DB_ENV * dbv ; 1901 DBT dbt ; 1902 db_dx_t ϡ ; 1903 t , cmp ; 1905 dbv = dbp ->dbenv; 1906 `memt (& dbt , 0, ( DBT )); 1907 `F_SET (& dbt , DB_DBT_MALLOC ); 1908 t = 0; 1915 i( `NUM_ENT ( h ) == 0) 1918 `TYPE ( h )) { 1919 P_IBTREE : 1920 P_LDUP : 1921 ϡ = `NUM_ENT ( h - O_INDX ; 1923 P_LBTREE : 1924 ϡ = `NUM_ENT ( h - P_INDX ; 1927 ( `__db_unknown_th ( dbv , "__bam_vrfy_treeorder")); 1943 i( ! NULL && `TYPE ( h ! P_IBTREE ) { 1944 i( -> ty = B_KEYDATA ) { 1945 dbt . da = ->data; 1946 dbt . size = -> n ; 1947 } i( -> ty = B_OVERFLOW ) { 1948 bo = ( BOVERFLOW *) -> da ; 1949 i(( t = `__db_goff ( dbp , NULL , & dbt , 1950 bo -> , bo-> pgno , NULL , NULL)) != 0) 1951 ( t ); 1954 `__db_unknown_th ( dbv , "__bam_vrfy_treeorder")); 1957 i(( t = `__bam_cmp ( dbp , NULL , & dbt , h , 0, func , & cmp )) == 0) { 1958 i( cmp > 0) { 1959 `EPRINT (( dbv , 1961 ( u_lg ) `PGNO ( h ))); 1962 t = DB_VERIFY_BAD ; 1965 `EPRINT (( dbv , 1967 ( u_lg ) `PGNO ( h ))); 1969 i( dbt . da ! ->data) 1970 `__os_u ( dbv , dbt . da ); 1971 i( t != 0) 1972 ( t ); 1975 i( ! NULL ) { 1976 i( -> ty = B_KEYDATA ) { 1977 dbt . da = ->data; 1978 dbt . size = -> n ; 1979 } i( -> ty = B_OVERFLOW ) { 1980 bo = ( BOVERFLOW *) -> da ; 1981 i(( t = `__db_goff ( dbp , NULL , & dbt , 1982 bo -> , bo-> pgno , NULL , NULL)) != 0) 1983 ( t ); 1986 `__db_unknown_th ( dbv , "__bam_vrfy_treeorder")); 1989 i(( t = `__bam_cmp ( dbp , NULL , & dbt , 1990 h , ϡ , func , & cmp )) == 0) { 1991 i( cmp < 0) { 1992 `EPRINT (( dbv , 1994 ( u_lg ) `PGNO ( h ))); 1995 t = DB_VERIFY_BAD ; 1998 `EPRINT (( dbv , 2000 ( u_lg ) `PGNO ( h ))); 2002 i( dbt . da ! ->data) 2003 `__os_u ( dbv , dbt . da ); 2006 ( t ); 2007 } } 2019 $__bam_lvage ( dbp , vdp , pgno , pgty , h , hd , back , key , ags ) 2020 DB * dbp ; 2021 VRFY_DBINFO * vdp ; 2022 db_pgno_t pgno ; 2023 u_t32_t pgty ; 2024 PAGE * h ; 2025 * hd ; 2026 (* back `__P ((*, const *)); 2027 DBT * key ; 2028 u_t32_t ags ; 2030 BKEYDATA * bk ; 2031 BOVERFLOW * bo ; 2032 DBT dbt , unknown_key , unknown_da ; 2033 DB_ENV * dbv ; 2034 VRFY_ITEM * pgm ; 2035 db_dx_t i , ϡ , beg , d , * p ; 2036 u_t32_t himk ; 2037 * ovbuf ; 2038 t , t_t , t2_t ; 2040 dbv = dbp ->dbenv; 2041 ovbuf = pgm = NULL ; 2042 p = `P_INP ( dbp , h ); 2044 `memt (& dbt , 0, ( DBT )); 2045 dbt . ags = DB_DBT_REALLOC ; 2047 `DB_INIT_DBT ( unknown_key , "UNKNOWN_KEY", ("UNKNOWN_KEY") - 1); 2048 `DB_INIT_DBT ( unknown_da , "UNKNOWN_DATA", ("UNKNOWN_DATA") - 1); 2054 i(( t = `__os_mloc ( dbv , dbp -> pgsize , & ovbuf )) != 0) 2055 r ; 2057 i( `LF_ISSET ( DB_AGGRESSIVE && ( t = 2058 `__os_oc ( dbv , dbp -> pgsize , ( pgm [0]), &pgmap)) != 0) 2059 r ; 2068 himk = dbp -> pgsize ; 2069 i = 0, ϡ = UINT16_MAX ;; i + O_INDX ) { 2071 i(! `LF_ISSET ( DB_AGGRESSIVE && i > `NUM_ENT ( h )) 2075 t_t = 2076 `__db_vrfy_pem ( dbp , h , pgno , i , 1, ags , & himk , NULL ); 2078 i( t_t != 0) { 2084 i( pgty = P_LBTREE && i % P_INDX == 1 && 2085 ϡ = i - 1 && ( t2_t = `__db_vrfy_dbt ( 2086 & unknown_da , 2087 0, " ", hd , back , 0, vdp )) != 0) { 2088 i( t == 0) 2089 t = t2_t ; 2090 r ; 2099 i( t_t = DB_VERIFY_FATAL ) { 2100 i( i < `NUM_ENT ( h && t == 0) 2101 t = DB_VERIFY_BAD ; 2113 bk = `GET_BKEYDATA ( dbp , h , i ); 2114 i(! `LF_ISSET ( DB_AGGRESSIVE && `B_DISSET ( bk -> ty )) 2122 i( pgty = P_LBTREE && i % P_INDX == 1 && 2123 ϡ ! i - 1 && ( t_t = `__db_vrfy_dbt ( 2124 & unknown_key , 0, " ", hd , back , 0, vdp )) != 0) { 2125 i( t == 0) 2126 t = t_t ; 2127 r ; 2129 ϡ = i ; 2137 i( key ! NULL && ( i !0 || ! `LF_ISSET ( SA_SKIPFIRSTKEY ))) 2138 i(( t_t = `__db_vrfy_dbt ( key , 2139 0, " ", hd , back , 0, vdp )) != 0) { 2140 i( t == 0) 2141 t = t_t ; 2142 r ; 2145 beg = p [ i ]; 2146 `B_TYPE ( bk -> ty )) { 2147 B_DUPLICATE : 2148 d = beg + BOVERFLOW_SIZE - 1; 2156 i( pgty ! P_LBTREE ) 2159 bo = ( BOVERFLOW *) bk ; 2167 i(! `IS_VALID_PGNO ( bo -> pgno || ( i % P_INDX == 0)) { 2169 i(( t_t = `__db_vrfy_dbt (& unknown_key , 2170 0, " ", hd , back , 0, vdp )) != 0) { 2171 i( t == 0) 2172 t = t_t ; 2173 r ; 2179 i(( t_t = `__db_lvage_due ( dbp , 2180 vdp , bo -> pgno , & dbt , hd , back , 2181 ags | SA_SKIPFIRSTKEY )!0 && t == 0) 2182 t = t_t ; 2185 B_KEYDATA : 2186 d = ( db_dx_t ) `DB_ALIGN ( 2187 beg + bk -> n , ( u_t32_t )) - 1; 2188 dbt . da = bk ->data; 2189 dbt . size = bk -> n ; 2190 i(( t_t = `__db_vrfy_dbt (& dbt , 2191 0, " ", hd , back , 0, vdp )) != 0) { 2192 i( t == 0) 2193 t = t_t ; 2194 r ; 2197 B_OVERFLOW : 2198 d = beg + BOVERFLOW_SIZE - 1; 2199 bo = ( BOVERFLOW *) bk ; 2202 i(( t_t = `__db__goff ( dbp , vdp , 2203 bo -> pgno , & dbt , & ovbuf , ags )!0 && t == 0) 2204 t = t_t ; 2205 i(( t_t = `__db_vrfy_dbt ( 2206 t_t =0 ? & dbt : & unknown_key , 2207 0, " ", hd , back , 0, vdp )!0 && t == 0) 2208 t = t_t ; 2215 t_t = `__db_unknown_th ( dbv , "__bam_salvage"); 2216 i( t == 0) 2217 t = t_t ; 2218 r ; 2227 i( `LF_ISSET ( DB_AGGRESSIVE )) { 2228 pgm [ beg ] = VRFY_ITEM_BEGIN ; 2229 pgm [ d ] = VRFY_ITEM_END ; 2233 r : i( pgm ! NULL ) 2234 `__os_ ( dbv , pgm ); 2235 i( ovbuf ! NULL ) 2236 `__os_ ( dbv , ovbuf ); 2239 i(( t_t = `__db_lvage_mkde ( vdp , pgno )!0 && t == 0) 2240 t = t_t ; 2242 ( t ); 2243 } } 2254 $__bam_lvage_wkdupt ( dbp , vdp , h , key , hd , back , ags ) 2255 DB * dbp ; 2256 VRFY_DBINFO * vdp ; 2257 PAGE * h ; 2258 DBT * key ; 2259 * hd ; 2260 (* back `__P ((*, const *)); 2261 u_t32_t ags ; 2263 DB_ENV * dbv ; 2264 RINTERNAL * ri ; 2265 BINTERNAL * bi ; 2266 t , t_t ; 2267 db_dx_t i ; 2269 dbv = dbp ->dbenv; 2270 t = 0; 2272 i = 0; i < `NUM_ENT ( h ); i++) { 2273 `TYPE ( h )) { 2274 P_IBTREE : 2275 bi = `GET_BINTERNAL ( dbp , h , i ); 2276 i(( t_t = `__db_lvage_due ( dbp , 2277 vdp , bi -> pgno , key , hd , back , ags )) != 0) 2278 t = t_t ; 2280 P_IRECNO : 2281 ri = `GET_RINTERNAL ( dbp , h , i ); 2282 i(( t_t = `__db_lvage_due ( dbp , 2283 vdp , ri -> pgno , key , hd , back , ags )) != 0) 2284 t = t_t ; 2287 ( `__db_unknown_th ( 2288 dbv , "__bam_salvage_walkdupint")); 2291 ags &~ `LF_ISSET ( SA_SKIPFIRSTKEY ); 2294 ( t ); 2295 } } 2315 $__bam_ma2pgt ( dbp , vdp , btma , ags , pgt ) 2316 DB * dbp ; 2317 VRFY_DBINFO * vdp ; 2318 BTMETA * btma ; 2319 u_t32_t ags ; 2320 DB * pgt ; 2322 BINTERNAL * bi ; 2323 DB_MPOOLFILE * mpf ; 2324 PAGE * h ; 2325 RINTERNAL * ri ; 2326 db_pgno_t cut , p ; 2327 r_t , t ; 2329 `DB_ASSERT ( dbp -> dbv , pgt ! NULL ); 2331 mpf = dbp ->mpf; 2332 h = NULL ; 2333 t = r_t = 0; 2335 cut = btma -> ro ;;) { 2336 i(! `IS_VALID_PGNO ( cut || cu= `PGNO ( btma )) { 2337 r_t = DB_VERIFY_BAD ; 2338 r ; 2340 i(( t = `__memp_fg ( mpf , & cut , NULL , 0, & h )) != 0) { 2341 r_t = t ; 2342 r ; 2345 `TYPE ( h )) { 2346 P_IBTREE : 2347 P_IRECNO : 2348 i(( t = `__bam_vrfy ( dbp , 2349 vdp , h , cut , ags | DB_NOORDERCHK )) != 0) { 2350 r_t = t ; 2351 r ; 2353 i( `TYPE ( h = P_IBTREE ) { 2354 bi = `GET_BINTERNAL ( dbp , h , 0); 2355 cut = bi -> pgno ; 2357 ri = `GET_RINTERNAL ( dbp , h , 0); 2358 cut = ri -> pgno ; 2361 P_LBTREE : 2362 P_LRECNO : 2363 av ; 2365 r_t = DB_VERIFY_BAD ; 2366 r ; 2369 i(( t = `__memp_ut ( mpf , h , DB_PRIORITY_UNCHANGED )) != 0) 2370 r_t = t ; 2371 h = NULL ; 2378 av : 2379 `IS_VALID_PGNO ( cut && cu! PGNO_INVALID ) { 2380 i( h = NULL && 2381 ( t = `__memp_fg ( mpf , & cut , NULL , 0, & h )) != 0) { 2382 r_t = t ; 2386 i(( t = `__db_vrfy_pgt_g ( pgt , cut , (*)& p )) != 0) 2387 r ; 2389 i( p != 0) { 2397 i(( t = `__db_vrfy_pgt_c ( pgt , cut )) != 0) 2398 r ; 2400 cut = `NEXT_PGNO ( h ); 2401 i(( t = `__memp_ut ( mpf , h , DB_PRIORITY_UNCHANGED )) != 0) 2402 r_t = t ; 2403 h = NULL ; 2406 r : i( h ! NULL ) 2407 () `__memp_ut ( mpf , h , DB_PRIORITY_UNCHANGED ); 2409 ( t =0 ? r_t :et); 2410 } } 2421 $__bam__gda ( dbp , h , i , ovok , dbt , db ) 2422 DB * dbp ; 2423 PAGE * h ; 2424 u_t32_t i ; 2425 ovok ; 2426 DBT * dbt ; 2427 * db ; 2429 BKEYDATA * bk ; 2430 BOVERFLOW * bo ; 2432 `memt ( dbt , 0, ( DBT )); 2433 * db = 0; 2435 bk = `GET_BKEYDATA ( dbp , h , i ); 2436 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 2437 i(! ovok ) 2440 bo = ( BOVERFLOW *) bk ; 2441 `F_SET ( dbt , DB_DBT_MALLOC ); 2443 * db = 1; 2444 ( `__db_goff ( dbp , NULL , dbt , 2445 bo -> , bo-> pgno , NULL , NULL)); 2447 dbt -> da = bk ->data; 2448 dbt -> size = bk -> n ; 2452 } } @../btree/btree_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/b.h " 11 ~"dbc/log.h " 12 ~"dbc/txn.h " 20 $__bam_l_log ( dbp , tx , t_lp , ags , , , right , , dx , 21 gno , Ƣ , ro_pgno , pg , ags ) 22 DB * dbp ; 23 DB_TXN * tx ; 24 DB_LSN * t_lp ; 25 u_t32_t ags ; 26 db_pgno_t ; 27 DB_LSN * ; 28 db_pgno_t right ; 29 DB_LSN * ; 30 u_t32_t dx ; 31 db_pgno_t gno ; 32 DB_LSN * Ƣ ; 33 db_pgno_t ro_pgno ; 34 cڡ DBT * pg ; 35 u_t32_t ags ; 37 DBT logc ; 38 DB_ENV * dbv ; 39 DB_TXNLOGREC * ; 40 DB_LSN * lp , nu_l , * p ; 41 u_t32_t zo , ump , y , txn_num ; 42 u_t ad ; 43 u_t8_t * bp ; 44 is_dub , t ; 46 dbv = dbp ->dbenv; 47 `COMPQUIET ( , NULL ); 49 y = DB___bam_l ; 50 ad = 0; 51 p = t_lp ; 53 t = 0; 55 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 56 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 57 i( tx = NULL ) 59 is_dub = 0; 61 is_dub = 1; 63 i( tx = NULL ) { 64 txn_num = 0; 65 lp = & nu_l ; 66 nu_l . fe =u_l. offt = 0; 68 i( `TAILQ_FIRST (& tx -> kids ! NULL && 69 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 70 ( t ); 77 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 78 txn_num = tx -> txnid ; 81 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 82 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 83 ( t = `__dbg_zy_id ( dbp )) != 0) 84 ( t ); 86 logc . size = ( y + ( txn_num + ( DB_LSN ) 87 + ( u_t32_t ) 88 + ( u_t32_t ) 89 + (* ) 90 + ( u_t32_t ) 91 + (* ) 92 + ( u_t32_t ) 93 + ( u_t32_t ) 94 + (* Ƣ ) 95 + ( u_t32_t ) 96 + ( u_t32_t + ( pg = NULL ? 0 :g-> size ) 97 + ( u_t32_t ); 98 i( `CRYPTO_ON ( dbv )) { 99 ad = 100 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 101 logc . size + ad ; 104 i( is_dub || tx = NULL ) { 105 i(( t = 106 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 107 ( t ); 109 i(( t = `__os_mloc ( dbv , 110 logc . size + ( DB_TXNLOGREC ), & )) != 0) 111 ( t ); 112 #ifde DIAGNOSTIC 113 i(( t = 114 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 115 `__os_ ( dbv , ); 116 ( t ); 119 logc . da = ->data; 122 i( ad > 0) 123 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 125 bp = logc . da ; 127 `memy ( bp , & y , (rectype)); 128 bp +( y ); 130 `memy ( bp , & txn_num , (txn_num)); 131 bp +( txn_num ); 133 `memy ( bp , lp , ( DB_LSN )); 134 bp +( DB_LSN ); 136 ump = ( u_t32_t ) dbp -> log_fame -> id ; 137 `memy ( bp , & ump , (uinttmp)); 138 bp +( ump ); 140 ump = ( u_t32_t ) ; 141 `memy ( bp , & ump , (uinttmp)); 142 bp +( ump ); 144 i( ! NULL ) { 145 i( tx ! NULL ) { 146 LOG * = dbv -> lg_hd -> gfo . imy ; 147 i( `LOG_COMPARE ( , & -> l >0 && ( t = 148 `__log_check_ge_l ( dbv , dbp , ) != 0)) 149 ( t ); 151 `memy ( bp , , (*llsn)); 153 `memt ( bp , 0, (* )); 154 bp +(* ); 156 ump = ( u_t32_t ) right ; 157 `memy ( bp , & ump , (uinttmp)); 158 bp +( ump ); 160 i( ! NULL ) { 161 i( tx ! NULL ) { 162 LOG * = dbv -> lg_hd -> gfo . imy ; 163 i( `LOG_COMPARE ( , & -> l >0 && ( t = 164 `__log_check_ge_l ( dbv , dbp , ) != 0)) 165 ( t ); 167 `memy ( bp , , (*rlsn)); 169 `memt ( bp , 0, (* )); 170 bp +(* ); 172 ump = ( u_t32_t ) dx ; 173 `memy ( bp , & ump , (uinttmp)); 174 bp +( ump ); 176 ump = ( u_t32_t ) gno ; 177 `memy ( bp , & ump , (uinttmp)); 178 bp +( ump ); 180 i( Ƣ ! NULL ) { 181 i( tx ! NULL ) { 182 LOG * = dbv -> lg_hd -> gfo . imy ; 183 i( `LOG_COMPARE ( Ƣ , & -> l >0 && ( t = 184 `__log_check_ge_l ( dbv , dbp , Ƣ ) != 0)) 185 ( t ); 187 `memy ( bp , Ƣ , (*nlsn)); 189 `memt ( bp , 0, (* Ƣ )); 190 bp +(* Ƣ ); 192 ump = ( u_t32_t ) ro_pgno ; 193 `memy ( bp , & ump , (uinttmp)); 194 bp +( ump ); 196 i( pg = NULL ) { 197 zo = 0; 198 `memy ( bp , & zo , ( u_t32_t )); 199 bp +( u_t32_t ); 201 `memy ( bp , & pg -> size , (pg->size)); 202 bp +( pg -> size ); 203 `memy ( bp , pg -> da ,g-> size ); 204 bp + pg -> size ; 207 ump = ( u_t32_t ) ags ; 208 `memy ( bp , & ump , (uinttmp)); 209 bp +( ump ); 211 `DB_ASSERT ( dbv , 212 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 214 i( is_dub || tx = NULL ) { 215 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 216 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 217 * lp = * p ; 218 i( p ! t_lp ) 219 * t_lp = * p ; 222 t = 0; 223 #ifde DIAGNOSTIC 228 `memy ( -> da , logc .da,ogc. size ); 229 y | DB_debug_FLAG ; 230 `memy ( logc . da , & y , (rectype)); 232 i(! `IS_REP_CLIENT ( dbv )) 233 t = `__log_put ( dbv , 234 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 236 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 237 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 238 `LSN_NOT_LOGGED (* t_lp ); 241 #ifde LOG_DIAGNOSTIC 242 i( t != 0) 243 () `__bam_l_t ( dbv , 244 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 247 #ifde DIAGNOSTIC 248 `__os_ ( dbv , logc . da ); 250 i( is_dub || tx = NULL ) 251 `__os_ ( dbv , logc . da ); 253 ( t ); 254 } } 260 $__bam_l_ad ( dbv , cbuf , g ) 261 DB_ENV * dbv ; 262 * cbuf ; 263 __bam_l_gs ** g ; 265 __bam_l_gs * gp ; 266 u_t32_t ump ; 267 u_t8_t * bp ; 268 t ; 270 i(( t = `__os_mloc ( dbv , 271 ( __bam_l_gs + ( DB_TXN ), & gp )) != 0) 272 ( t ); 273 bp = cbuf ; 274 gp -> tx = ( DB_TXN *)&argp[1]; 275 `memt ( gp -> tx , 0, ( DB_TXN )); 277 `memy (& gp -> ty , bp , (argp->type)); 278 bp +( gp -> ty ); 280 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 281 bp +( gp -> tx -> txnid ); 283 `memy (& gp -> ev_l , bp , ( DB_LSN )); 284 bp +( DB_LSN ); 286 `memy (& ump , bp , (uinttmp)); 287 gp -> feid = ( t32_t ) ump ; 288 bp +( ump ); 290 `memy (& ump , bp , (uinttmp)); 291 gp -> = ( db_pgno_t ) ump ; 292 bp +( ump ); 294 `memy (& gp -> , bp , (argp->llsn)); 295 bp +( gp -> ); 297 `memy (& ump , bp , (uinttmp)); 298 gp -> right = ( db_pgno_t ) ump ; 299 bp +( ump ); 301 `memy (& gp -> , bp , (argp->rlsn)); 302 bp +( gp -> ); 304 `memy (& ump , bp , (uinttmp)); 305 gp -> dx = ( u_t32_t ) ump ; 306 bp +( ump ); 308 `memy (& ump , bp , (uinttmp)); 309 gp -> gno = ( db_pgno_t ) ump ; 310 bp +( ump ); 312 `memy (& gp -> Ƣ , bp , (argp->nlsn)); 313 bp +( gp -> Ƣ ); 315 `memy (& ump , bp , (uinttmp)); 316 gp -> ro_pgno = ( db_pgno_t ) ump ; 317 bp +( ump ); 319 `memt (& gp -> pg , 0, (argp->pg)); 320 `memy (& gp -> pg . size , bp , ( u_t32_t )); 321 bp +( u_t32_t ); 322 gp -> pg . da = bp ; 323 bp + gp -> pg . size ; 325 `memy (& ump , bp , (uinttmp)); 326 gp -> ags = ( u_t32_t ) ump ; 327 bp +( ump ); 329 * g = gp ; 331 } } 339 $__bam_rl_log ( dbp , tx , t_lp , ags , pgno , pgdbt , ro_pgno , ec , roْt , 340 rol ) 341 DB * dbp ; 342 DB_TXN * tx ; 343 DB_LSN * t_lp ; 344 u_t32_t ags ; 345 db_pgno_t pgno ; 346 cڡ DBT * pgdbt ; 347 db_pgno_t ro_pgno ; 348 db_pgno_t ec ; 349 cڡ DBT * roْt ; 350 DB_LSN * rol ; 352 DBT logc ; 353 DB_ENV * dbv ; 354 DB_TXNLOGREC * ; 355 DB_LSN * lp , nu_l , * p ; 356 u_t32_t zo , ump , y , txn_num ; 357 u_t ad ; 358 u_t8_t * bp ; 359 is_dub , t ; 361 dbv = dbp ->dbenv; 362 `COMPQUIET ( , NULL ); 364 y = DB___bam_rl ; 365 ad = 0; 366 p = t_lp ; 368 t = 0; 370 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 371 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 372 i( tx = NULL ) 374 is_dub = 0; 376 is_dub = 1; 378 i( tx = NULL ) { 379 txn_num = 0; 380 lp = & nu_l ; 381 nu_l . fe =u_l. offt = 0; 383 i( `TAILQ_FIRST (& tx -> kids ! NULL && 384 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 385 ( t ); 392 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 393 txn_num = tx -> txnid ; 396 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 397 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 398 ( t = `__dbg_zy_id ( dbp )) != 0) 399 ( t ); 401 logc . size = ( y + ( txn_num + ( DB_LSN ) 402 + ( u_t32_t ) 403 + ( u_t32_t ) 404 + ( u_t32_t + ( pgdbt = NULL ? 0 :gdbt-> size ) 405 + ( u_t32_t ) 406 + ( u_t32_t ) 407 + ( u_t32_t + ( roْt = NULL ? 0 :oْt-> size ) 408 + (* rol ); 409 i( `CRYPTO_ON ( dbv )) { 410 ad = 411 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 412 logc . size + ad ; 415 i( is_dub || tx = NULL ) { 416 i(( t = 417 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 418 ( t ); 420 i(( t = `__os_mloc ( dbv , 421 logc . size + ( DB_TXNLOGREC ), & )) != 0) 422 ( t ); 423 #ifde DIAGNOSTIC 424 i(( t = 425 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 426 `__os_ ( dbv , ); 427 ( t ); 430 logc . da = ->data; 433 i( ad > 0) 434 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 436 bp = logc . da ; 438 `memy ( bp , & y , (rectype)); 439 bp +( y ); 441 `memy ( bp , & txn_num , (txn_num)); 442 bp +( txn_num ); 444 `memy ( bp , lp , ( DB_LSN )); 445 bp +( DB_LSN ); 447 ump = ( u_t32_t ) dbp -> log_fame -> id ; 448 `memy ( bp , & ump , (uinttmp)); 449 bp +( ump ); 451 ump = ( u_t32_t ) pgno ; 452 `memy ( bp , & ump , (uinttmp)); 453 bp +( ump ); 455 i( pgdbt = NULL ) { 456 zo = 0; 457 `memy ( bp , & zo , ( u_t32_t )); 458 bp +( u_t32_t ); 460 `memy ( bp , & pgdbt -> size , (pgdbt->size)); 461 bp +( pgdbt -> size ); 462 `memy ( bp , pgdbt -> da ,gdbt-> size ); 463 bp + pgdbt -> size ; 466 ump = ( u_t32_t ) ro_pgno ; 467 `memy ( bp , & ump , (uinttmp)); 468 bp +( ump ); 470 ump = ( u_t32_t ) ec ; 471 `memy ( bp , & ump , (uinttmp)); 472 bp +( ump ); 474 i( roْt = NULL ) { 475 zo = 0; 476 `memy ( bp , & zo , ( u_t32_t )); 477 bp +( u_t32_t ); 479 `memy ( bp , & roْt -> size , (rootent->size)); 480 bp +( roْt -> size ); 481 `memy ( bp , roْt -> da ,oْt-> size ); 482 bp + roْt -> size ; 485 i( rol ! NULL ) { 486 i( tx ! NULL ) { 487 LOG * = dbv -> lg_hd -> gfo . imy ; 488 i( `LOG_COMPARE ( rol , & -> l >0 && ( t = 489 `__log_check_ge_l ( dbv , dbp , rol ) != 0)) 490 ( t ); 492 `memy ( bp , rol , (*rootlsn)); 494 `memt ( bp , 0, (* rol )); 495 bp +(* rol ); 497 `DB_ASSERT ( dbv , 498 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 500 i( is_dub || tx = NULL ) { 501 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 502 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 503 * lp = * p ; 504 i( p ! t_lp ) 505 * t_lp = * p ; 508 t = 0; 509 #ifde DIAGNOSTIC 514 `memy ( -> da , logc .da,ogc. size ); 515 y | DB_debug_FLAG ; 516 `memy ( logc . da , & y , (rectype)); 518 i(! `IS_REP_CLIENT ( dbv )) 519 t = `__log_put ( dbv , 520 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 522 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 523 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 524 `LSN_NOT_LOGGED (* t_lp ); 527 #ifde LOG_DIAGNOSTIC 528 i( t != 0) 529 () `__bam_rl_t ( dbv , 530 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 533 #ifde DIAGNOSTIC 534 `__os_ ( dbv , logc . da ); 536 i( is_dub || tx = NULL ) 537 `__os_ ( dbv , logc . da ); 539 ( t ); 540 } } 546 $__bam_rl_ad ( dbv , cbuf , g ) 547 DB_ENV * dbv ; 548 * cbuf ; 549 __bam_rl_gs ** g ; 551 __bam_rl_gs * gp ; 552 u_t32_t ump ; 553 u_t8_t * bp ; 554 t ; 556 i(( t = `__os_mloc ( dbv , 557 ( __bam_rl_gs + ( DB_TXN ), & gp )) != 0) 558 ( t ); 559 bp = cbuf ; 560 gp -> tx = ( DB_TXN *)&argp[1]; 561 `memt ( gp -> tx , 0, ( DB_TXN )); 563 `memy (& gp -> ty , bp , (argp->type)); 564 bp +( gp -> ty ); 566 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 567 bp +( gp -> tx -> txnid ); 569 `memy (& gp -> ev_l , bp , ( DB_LSN )); 570 bp +( DB_LSN ); 572 `memy (& ump , bp , (uinttmp)); 573 gp -> feid = ( t32_t ) ump ; 574 bp +( ump ); 576 `memy (& ump , bp , (uinttmp)); 577 gp -> pgno = ( db_pgno_t ) ump ; 578 bp +( ump ); 580 `memt (& gp -> pgdbt , 0, (argp->pgdbt)); 581 `memy (& gp -> pgdbt . size , bp , ( u_t32_t )); 582 bp +( u_t32_t ); 583 gp -> pgdbt . da = bp ; 584 bp + gp -> pgdbt . size ; 586 `memy (& ump , bp , (uinttmp)); 587 gp -> ro_pgno = ( db_pgno_t ) ump ; 588 bp +( ump ); 590 `memy (& ump , bp , (uinttmp)); 591 gp -> ec = ( db_pgno_t ) ump ; 592 bp +( ump ); 594 `memt (& gp -> roْt , 0, (argp->rootent)); 595 `memy (& gp -> roْt . size , bp , ( u_t32_t )); 596 bp +( u_t32_t ); 597 gp -> roْt . da = bp ; 598 bp + gp -> roْt . size ; 600 `memy (& gp -> rol , bp , (argp->rootlsn)); 601 bp +( gp -> rol ); 603 * g = gp ; 605 } } 613 $__bam_adj_log ( dbp , tx , t_lp , ags , pgno , l , dx , dx_cy , is_ ) 614 DB * dbp ; 615 DB_TXN * tx ; 616 DB_LSN * t_lp ; 617 u_t32_t ags ; 618 db_pgno_t pgno ; 619 DB_LSN * l ; 620 u_t32_t dx ; 621 u_t32_t dx_cy ; 622 u_t32_t is_ ; 624 DBT logc ; 625 DB_ENV * dbv ; 626 DB_TXNLOGREC * ; 627 DB_LSN * lp , nu_l , * p ; 628 u_t32_t ump , y , txn_num ; 629 u_t ad ; 630 u_t8_t * bp ; 631 is_dub , t ; 633 dbv = dbp ->dbenv; 634 `COMPQUIET ( , NULL ); 636 y = DB___bam_adj ; 637 ad = 0; 638 p = t_lp ; 640 t = 0; 642 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 643 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 644 i( tx = NULL ) 646 is_dub = 0; 648 is_dub = 1; 650 i( tx = NULL ) { 651 txn_num = 0; 652 lp = & nu_l ; 653 nu_l . fe =u_l. offt = 0; 655 i( `TAILQ_FIRST (& tx -> kids ! NULL && 656 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 657 ( t ); 664 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 665 txn_num = tx -> txnid ; 668 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 669 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 670 ( t = `__dbg_zy_id ( dbp )) != 0) 671 ( t ); 673 logc . size = ( y + ( txn_num + ( DB_LSN ) 674 + ( u_t32_t ) 675 + ( u_t32_t ) 676 + (* l ) 677 + ( u_t32_t ) 678 + ( u_t32_t ) 679 + ( u_t32_t ); 680 i( `CRYPTO_ON ( dbv )) { 681 ad = 682 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 683 logc . size + ad ; 686 i( is_dub || tx = NULL ) { 687 i(( t = 688 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 689 ( t ); 691 i(( t = `__os_mloc ( dbv , 692 logc . size + ( DB_TXNLOGREC ), & )) != 0) 693 ( t ); 694 #ifde DIAGNOSTIC 695 i(( t = 696 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 697 `__os_ ( dbv , ); 698 ( t ); 701 logc . da = ->data; 704 i( ad > 0) 705 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 707 bp = logc . da ; 709 `memy ( bp , & y , (rectype)); 710 bp +( y ); 712 `memy ( bp , & txn_num , (txn_num)); 713 bp +( txn_num ); 715 `memy ( bp , lp , ( DB_LSN )); 716 bp +( DB_LSN ); 718 ump = ( u_t32_t ) dbp -> log_fame -> id ; 719 `memy ( bp , & ump , (uinttmp)); 720 bp +( ump ); 722 ump = ( u_t32_t ) pgno ; 723 `memy ( bp , & ump , (uinttmp)); 724 bp +( ump ); 726 i( l ! NULL ) { 727 i( tx ! NULL ) { 728 LOG * = dbv -> lg_hd -> gfo . imy ; 729 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 730 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 731 ( t ); 733 `memy ( bp , l , (*lsn)); 735 `memt ( bp , 0, (* l )); 736 bp +(* l ); 738 ump = ( u_t32_t ) dx ; 739 `memy ( bp , & ump , (uinttmp)); 740 bp +( ump ); 742 ump = ( u_t32_t ) dx_cy ; 743 `memy ( bp , & ump , (uinttmp)); 744 bp +( ump ); 746 ump = ( u_t32_t ) is_ ; 747 `memy ( bp , & ump , (uinttmp)); 748 bp +( ump ); 750 `DB_ASSERT ( dbv , 751 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 753 i( is_dub || tx = NULL ) { 754 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 755 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 756 * lp = * p ; 757 i( p ! t_lp ) 758 * t_lp = * p ; 761 t = 0; 762 #ifde DIAGNOSTIC 767 `memy ( -> da , logc .da,ogc. size ); 768 y | DB_debug_FLAG ; 769 `memy ( logc . da , & y , (rectype)); 771 i(! `IS_REP_CLIENT ( dbv )) 772 t = `__log_put ( dbv , 773 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 775 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 776 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 777 `LSN_NOT_LOGGED (* t_lp ); 780 #ifde LOG_DIAGNOSTIC 781 i( t != 0) 782 () `__bam_adj_t ( dbv , 783 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 786 #ifde DIAGNOSTIC 787 `__os_ ( dbv , logc . da ); 789 i( is_dub || tx = NULL ) 790 `__os_ ( dbv , logc . da ); 792 ( t ); 793 } } 799 $__bam_adj_ad ( dbv , cbuf , g ) 800 DB_ENV * dbv ; 801 * cbuf ; 802 __bam_adj_gs ** g ; 804 __bam_adj_gs * gp ; 805 u_t32_t ump ; 806 u_t8_t * bp ; 807 t ; 809 i(( t = `__os_mloc ( dbv , 810 ( __bam_adj_gs + ( DB_TXN ), & gp )) != 0) 811 ( t ); 812 bp = cbuf ; 813 gp -> tx = ( DB_TXN *)&argp[1]; 814 `memt ( gp -> tx , 0, ( DB_TXN )); 816 `memy (& gp -> ty , bp , (argp->type)); 817 bp +( gp -> ty ); 819 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 820 bp +( gp -> tx -> txnid ); 822 `memy (& gp -> ev_l , bp , ( DB_LSN )); 823 bp +( DB_LSN ); 825 `memy (& ump , bp , (uinttmp)); 826 gp -> feid = ( t32_t ) ump ; 827 bp +( ump ); 829 `memy (& ump , bp , (uinttmp)); 830 gp -> pgno = ( db_pgno_t ) ump ; 831 bp +( ump ); 833 `memy (& gp -> l , bp , (argp->lsn)); 834 bp +( gp -> l ); 836 `memy (& ump , bp , (uinttmp)); 837 gp -> dx = ( u_t32_t ) ump ; 838 bp +( ump ); 840 `memy (& ump , bp , (uinttmp)); 841 gp -> dx_cy = ( u_t32_t ) ump ; 842 bp +( ump ); 844 `memy (& ump , bp , (uinttmp)); 845 gp -> is_ = ( u_t32_t ) ump ; 846 bp +( ump ); 848 * g = gp ; 850 } } 857 $__bam_dju_log ( dbp , tx , t_lp , ags , pgno , l , dx , adju , ags ) 858 DB * dbp ; 859 DB_TXN * tx ; 860 DB_LSN * t_lp ; 861 u_t32_t ags ; 862 db_pgno_t pgno ; 863 DB_LSN * l ; 864 u_t32_t dx ; 865 t32_t adju ; 866 u_t32_t ags ; 868 DBT logc ; 869 DB_ENV * dbv ; 870 DB_TXNLOGREC * ; 871 DB_LSN * lp , nu_l , * p ; 872 u_t32_t ump , y , txn_num ; 873 u_t ad ; 874 u_t8_t * bp ; 875 is_dub , t ; 877 dbv = dbp ->dbenv; 878 `COMPQUIET ( , NULL ); 880 y = DB___bam_dju ; 881 ad = 0; 882 p = t_lp ; 884 t = 0; 886 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 887 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 888 i( tx = NULL ) 890 is_dub = 0; 892 is_dub = 1; 894 i( tx = NULL ) { 895 txn_num = 0; 896 lp = & nu_l ; 897 nu_l . fe =u_l. offt = 0; 899 i( `TAILQ_FIRST (& tx -> kids ! NULL && 900 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 901 ( t ); 908 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 909 txn_num = tx -> txnid ; 912 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 913 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 914 ( t = `__dbg_zy_id ( dbp )) != 0) 915 ( t ); 917 logc . size = ( y + ( txn_num + ( DB_LSN ) 918 + ( u_t32_t ) 919 + ( u_t32_t ) 920 + (* l ) 921 + ( u_t32_t ) 922 + ( u_t32_t ) 923 + ( u_t32_t ); 924 i( `CRYPTO_ON ( dbv )) { 925 ad = 926 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 927 logc . size + ad ; 930 i( is_dub || tx = NULL ) { 931 i(( t = 932 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 933 ( t ); 935 i(( t = `__os_mloc ( dbv , 936 logc . size + ( DB_TXNLOGREC ), & )) != 0) 937 ( t ); 938 #ifde DIAGNOSTIC 939 i(( t = 940 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 941 `__os_ ( dbv , ); 942 ( t ); 945 logc . da = ->data; 948 i( ad > 0) 949 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 951 bp = logc . da ; 953 `memy ( bp , & y , (rectype)); 954 bp +( y ); 956 `memy ( bp , & txn_num , (txn_num)); 957 bp +( txn_num ); 959 `memy ( bp , lp , ( DB_LSN )); 960 bp +( DB_LSN ); 962 ump = ( u_t32_t ) dbp -> log_fame -> id ; 963 `memy ( bp , & ump , (uinttmp)); 964 bp +( ump ); 966 ump = ( u_t32_t ) pgno ; 967 `memy ( bp , & ump , (uinttmp)); 968 bp +( ump ); 970 i( l ! NULL ) { 971 i( tx ! NULL ) { 972 LOG * = dbv -> lg_hd -> gfo . imy ; 973 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 974 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 975 ( t ); 977 `memy ( bp , l , (*lsn)); 979 `memt ( bp , 0, (* l )); 980 bp +(* l ); 982 ump = ( u_t32_t ) dx ; 983 `memy ( bp , & ump , (uinttmp)); 984 bp +( ump ); 986 ump = ( u_t32_t ) adju ; 987 `memy ( bp , & ump , (uinttmp)); 988 bp +( ump ); 990 ump = ( u_t32_t ) ags ; 991 `memy ( bp , & ump , (uinttmp)); 992 bp +( ump ); 994 `DB_ASSERT ( dbv , 995 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 997 i( is_dub || tx = NULL ) { 998 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 999 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1000 * lp = * p ; 1001 i( p ! t_lp ) 1002 * t_lp = * p ; 1005 t = 0; 1006 #ifde DIAGNOSTIC 1011 `memy ( -> da , logc .da,ogc. size ); 1012 y | DB_debug_FLAG ; 1013 `memy ( logc . da , & y , (rectype)); 1015 i(! `IS_REP_CLIENT ( dbv )) 1016 t = `__log_put ( dbv , 1017 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1019 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1020 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1021 `LSN_NOT_LOGGED (* t_lp ); 1024 #ifde LOG_DIAGNOSTIC 1025 i( t != 0) 1026 () `__bam_dju_t ( dbv , 1027 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1030 #ifde DIAGNOSTIC 1031 `__os_ ( dbv , logc . da ); 1033 i( is_dub || tx = NULL ) 1034 `__os_ ( dbv , logc . da ); 1036 ( t ); 1037 } } 1044 $__bam_dju_ad ( dbv , cbuf , g ) 1045 DB_ENV * dbv ; 1046 * cbuf ; 1047 __bam_dju_gs ** g ; 1049 __bam_dju_gs * gp ; 1050 u_t32_t ump ; 1051 u_t8_t * bp ; 1052 t ; 1054 i(( t = `__os_mloc ( dbv , 1055 ( __bam_dju_gs + ( DB_TXN ), & gp )) != 0) 1056 ( t ); 1057 bp = cbuf ; 1058 gp -> tx = ( DB_TXN *)&argp[1]; 1059 `memt ( gp -> tx , 0, ( DB_TXN )); 1061 `memy (& gp -> ty , bp , (argp->type)); 1062 bp +( gp -> ty ); 1064 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1065 bp +( gp -> tx -> txnid ); 1067 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1068 bp +( DB_LSN ); 1070 `memy (& ump , bp , (uinttmp)); 1071 gp -> feid = ( t32_t ) ump ; 1072 bp +( ump ); 1074 `memy (& ump , bp , (uinttmp)); 1075 gp -> pgno = ( db_pgno_t ) ump ; 1076 bp +( ump ); 1078 `memy (& gp -> l , bp , (argp->lsn)); 1079 bp +( gp -> l ); 1081 `memy (& ump , bp , (uinttmp)); 1082 gp -> dx = ( u_t32_t ) ump ; 1083 bp +( ump ); 1085 `memy (& ump , bp , (uinttmp)); 1086 gp -> adju = ( t32_t ) ump ; 1087 bp +( ump ); 1089 `memy (& ump , bp , (uinttmp)); 1090 gp -> ags = ( u_t32_t ) ump ; 1091 bp +( ump ); 1093 * g = gp ; 1095 } } 1102 $__bam_cd_log ( dbp , tx , t_lp , ags , pgno , l , dx ) 1103 DB * dbp ; 1104 DB_TXN * tx ; 1105 DB_LSN * t_lp ; 1106 u_t32_t ags ; 1107 db_pgno_t pgno ; 1108 DB_LSN * l ; 1109 u_t32_t dx ; 1111 DBT logc ; 1112 DB_ENV * dbv ; 1113 DB_TXNLOGREC * ; 1114 DB_LSN * lp , nu_l , * p ; 1115 u_t32_t ump , y , txn_num ; 1116 u_t ad ; 1117 u_t8_t * bp ; 1118 is_dub , t ; 1120 dbv = dbp ->dbenv; 1121 `COMPQUIET ( , NULL ); 1123 y = DB___bam_cd ; 1124 ad = 0; 1125 p = t_lp ; 1127 t = 0; 1129 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1130 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1131 i( tx = NULL ) 1133 is_dub = 0; 1135 is_dub = 1; 1137 i( tx = NULL ) { 1138 txn_num = 0; 1139 lp = & nu_l ; 1140 nu_l . fe =u_l. offt = 0; 1142 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1143 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1144 ( t ); 1151 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1152 txn_num = tx -> txnid ; 1155 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1156 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1157 ( t = `__dbg_zy_id ( dbp )) != 0) 1158 ( t ); 1160 logc . size = ( y + ( txn_num + ( DB_LSN ) 1161 + ( u_t32_t ) 1162 + ( u_t32_t ) 1163 + (* l ) 1164 + ( u_t32_t ); 1165 i( `CRYPTO_ON ( dbv )) { 1166 ad = 1167 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1168 logc . size + ad ; 1171 i( is_dub || tx = NULL ) { 1172 i(( t = 1173 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1174 ( t ); 1176 i(( t = `__os_mloc ( dbv , 1177 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1178 ( t ); 1179 #ifde DIAGNOSTIC 1180 i(( t = 1181 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1182 `__os_ ( dbv , ); 1183 ( t ); 1186 logc . da = ->data; 1189 i( ad > 0) 1190 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1192 bp = logc . da ; 1194 `memy ( bp , & y , (rectype)); 1195 bp +( y ); 1197 `memy ( bp , & txn_num , (txn_num)); 1198 bp +( txn_num ); 1200 `memy ( bp , lp , ( DB_LSN )); 1201 bp +( DB_LSN ); 1203 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1204 `memy ( bp , & ump , (uinttmp)); 1205 bp +( ump ); 1207 ump = ( u_t32_t ) pgno ; 1208 `memy ( bp , & ump , (uinttmp)); 1209 bp +( ump ); 1211 i( l ! NULL ) { 1212 i( tx ! NULL ) { 1213 LOG * = dbv -> lg_hd -> gfo . imy ; 1214 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1215 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 1216 ( t ); 1218 `memy ( bp , l , (*lsn)); 1220 `memt ( bp , 0, (* l )); 1221 bp +(* l ); 1223 ump = ( u_t32_t ) dx ; 1224 `memy ( bp , & ump , (uinttmp)); 1225 bp +( ump ); 1227 `DB_ASSERT ( dbv , 1228 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1230 i( is_dub || tx = NULL ) { 1231 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1232 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1233 * lp = * p ; 1234 i( p ! t_lp ) 1235 * t_lp = * p ; 1238 t = 0; 1239 #ifde DIAGNOSTIC 1244 `memy ( -> da , logc .da,ogc. size ); 1245 y | DB_debug_FLAG ; 1246 `memy ( logc . da , & y , (rectype)); 1248 i(! `IS_REP_CLIENT ( dbv )) 1249 t = `__log_put ( dbv , 1250 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1252 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1253 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1254 `LSN_NOT_LOGGED (* t_lp ); 1257 #ifde LOG_DIAGNOSTIC 1258 i( t != 0) 1259 () `__bam_cd_t ( dbv , 1260 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1263 #ifde DIAGNOSTIC 1264 `__os_ ( dbv , logc . da ); 1266 i( is_dub || tx = NULL ) 1267 `__os_ ( dbv , logc . da ); 1269 ( t ); 1270 } } 1276 $__bam_cd_ad ( dbv , cbuf , g ) 1277 DB_ENV * dbv ; 1278 * cbuf ; 1279 __bam_cd_gs ** g ; 1281 __bam_cd_gs * gp ; 1282 u_t32_t ump ; 1283 u_t8_t * bp ; 1284 t ; 1286 i(( t = `__os_mloc ( dbv , 1287 ( __bam_cd_gs + ( DB_TXN ), & gp )) != 0) 1288 ( t ); 1289 bp = cbuf ; 1290 gp -> tx = ( DB_TXN *)&argp[1]; 1291 `memt ( gp -> tx , 0, ( DB_TXN )); 1293 `memy (& gp -> ty , bp , (argp->type)); 1294 bp +( gp -> ty ); 1296 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1297 bp +( gp -> tx -> txnid ); 1299 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1300 bp +( DB_LSN ); 1302 `memy (& ump , bp , (uinttmp)); 1303 gp -> feid = ( t32_t ) ump ; 1304 bp +( ump ); 1306 `memy (& ump , bp , (uinttmp)); 1307 gp -> pgno = ( db_pgno_t ) ump ; 1308 bp +( ump ); 1310 `memy (& gp -> l , bp , (argp->lsn)); 1311 bp +( gp -> l ); 1313 `memy (& ump , bp , (uinttmp)); 1314 gp -> dx = ( u_t32_t ) ump ; 1315 bp +( ump ); 1317 * g = gp ; 1319 } } 1327 $__bam__log ( dbp , tx , t_lp , ags , pgno , l , dx , isded , ig , 1328 , efix , suffix ) 1329 DB * dbp ; 1330 DB_TXN * tx ; 1331 DB_LSN * t_lp ; 1332 u_t32_t ags ; 1333 db_pgno_t pgno ; 1334 DB_LSN * l ; 1335 u_t32_t dx ; 1336 u_t32_t isded ; 1337 cڡ DBT * ig ; 1338 cڡ DBT * ; 1339 u_t32_t efix ; 1340 u_t32_t suffix ; 1342 DBT logc ; 1343 DB_ENV * dbv ; 1344 DB_TXNLOGREC * ; 1345 DB_LSN * lp , nu_l , * p ; 1346 u_t32_t zo , ump , y , txn_num ; 1347 u_t ad ; 1348 u_t8_t * bp ; 1349 is_dub , t ; 1351 dbv = dbp ->dbenv; 1352 `COMPQUIET ( , NULL ); 1354 y = DB___bam_ ; 1355 ad = 0; 1356 p = t_lp ; 1358 t = 0; 1360 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1361 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1362 i( tx = NULL ) 1364 is_dub = 0; 1366 is_dub = 1; 1368 i( tx = NULL ) { 1369 txn_num = 0; 1370 lp = & nu_l ; 1371 nu_l . fe =u_l. offt = 0; 1373 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1374 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1375 ( t ); 1382 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1383 txn_num = tx -> txnid ; 1386 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1387 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1388 ( t = `__dbg_zy_id ( dbp )) != 0) 1389 ( t ); 1391 logc . size = ( y + ( txn_num + ( DB_LSN ) 1392 + ( u_t32_t ) 1393 + ( u_t32_t ) 1394 + (* l ) 1395 + ( u_t32_t ) 1396 + ( u_t32_t ) 1397 + ( u_t32_t + ( ig = NULL ? 0 : orig-> size ) 1398 + ( u_t32_t + ( = NULL ? 0 :l-> size ) 1399 + ( u_t32_t ) 1400 + ( u_t32_t ); 1401 i( `CRYPTO_ON ( dbv )) { 1402 ad = 1403 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1404 logc . size + ad ; 1407 i( is_dub || tx = NULL ) { 1408 i(( t = 1409 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1410 ( t ); 1412 i(( t = `__os_mloc ( dbv , 1413 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1414 ( t ); 1415 #ifde DIAGNOSTIC 1416 i(( t = 1417 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1418 `__os_ ( dbv , ); 1419 ( t ); 1422 logc . da = ->data; 1425 i( ad > 0) 1426 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1428 bp = logc . da ; 1430 `memy ( bp , & y , (rectype)); 1431 bp +( y ); 1433 `memy ( bp , & txn_num , (txn_num)); 1434 bp +( txn_num ); 1436 `memy ( bp , lp , ( DB_LSN )); 1437 bp +( DB_LSN ); 1439 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1440 `memy ( bp , & ump , (uinttmp)); 1441 bp +( ump ); 1443 ump = ( u_t32_t ) pgno ; 1444 `memy ( bp , & ump , (uinttmp)); 1445 bp +( ump ); 1447 i( l ! NULL ) { 1448 i( tx ! NULL ) { 1449 LOG * = dbv -> lg_hd -> gfo . imy ; 1450 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1451 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 1452 ( t ); 1454 `memy ( bp , l , (*lsn)); 1456 `memt ( bp , 0, (* l )); 1457 bp +(* l ); 1459 ump = ( u_t32_t ) dx ; 1460 `memy ( bp , & ump , (uinttmp)); 1461 bp +( ump ); 1463 ump = ( u_t32_t ) isded ; 1464 `memy ( bp , & ump , (uinttmp)); 1465 bp +( ump ); 1467 i( ig = NULL ) { 1468 zo = 0; 1469 `memy ( bp , & zo , ( u_t32_t )); 1470 bp +( u_t32_t ); 1472 `memy ( bp , & ig -> size , (orig->size)); 1473 bp +( ig -> size ); 1474 `memy ( bp , ig -> da , orig-> size ); 1475 bp + ig -> size ; 1478 i( = NULL ) { 1479 zo = 0; 1480 `memy ( bp , & zo , ( u_t32_t )); 1481 bp +( u_t32_t ); 1483 `memy ( bp , & -> size , (repl->size)); 1484 bp +( -> size ); 1485 `memy ( bp , -> da ,l-> size ); 1486 bp + -> size ; 1489 ump = ( u_t32_t ) efix ; 1490 `memy ( bp , & ump , (uinttmp)); 1491 bp +( ump ); 1493 ump = ( u_t32_t ) suffix ; 1494 `memy ( bp , & ump , (uinttmp)); 1495 bp +( ump ); 1497 `DB_ASSERT ( dbv , 1498 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1500 i( is_dub || tx = NULL ) { 1501 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1502 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1503 * lp = * p ; 1504 i( p ! t_lp ) 1505 * t_lp = * p ; 1508 t = 0; 1509 #ifde DIAGNOSTIC 1514 `memy ( -> da , logc .da,ogc. size ); 1515 y | DB_debug_FLAG ; 1516 `memy ( logc . da , & y , (rectype)); 1518 i(! `IS_REP_CLIENT ( dbv )) 1519 t = `__log_put ( dbv , 1520 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1522 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1523 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1524 `LSN_NOT_LOGGED (* t_lp ); 1527 #ifde LOG_DIAGNOSTIC 1528 i( t != 0) 1529 () `__bam__t ( dbv , 1530 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1533 #ifde DIAGNOSTIC 1534 `__os_ ( dbv , logc . da ); 1536 i( is_dub || tx = NULL ) 1537 `__os_ ( dbv , logc . da ); 1539 ( t ); 1540 } } 1546 $__bam__ad ( dbv , cbuf , g ) 1547 DB_ENV * dbv ; 1548 * cbuf ; 1549 __bam__gs ** g ; 1551 __bam__gs * gp ; 1552 u_t32_t ump ; 1553 u_t8_t * bp ; 1554 t ; 1556 i(( t = `__os_mloc ( dbv , 1557 ( __bam__gs + ( DB_TXN ), & gp )) != 0) 1558 ( t ); 1559 bp = cbuf ; 1560 gp -> tx = ( DB_TXN *)&argp[1]; 1561 `memt ( gp -> tx , 0, ( DB_TXN )); 1563 `memy (& gp -> ty , bp , (argp->type)); 1564 bp +( gp -> ty ); 1566 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1567 bp +( gp -> tx -> txnid ); 1569 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1570 bp +( DB_LSN ); 1572 `memy (& ump , bp , (uinttmp)); 1573 gp -> feid = ( t32_t ) ump ; 1574 bp +( ump ); 1576 `memy (& ump , bp , (uinttmp)); 1577 gp -> pgno = ( db_pgno_t ) ump ; 1578 bp +( ump ); 1580 `memy (& gp -> l , bp , (argp->lsn)); 1581 bp +( gp -> l ); 1583 `memy (& ump , bp , (uinttmp)); 1584 gp -> dx = ( u_t32_t ) ump ; 1585 bp +( ump ); 1587 `memy (& ump , bp , (uinttmp)); 1588 gp -> isded = ( u_t32_t ) ump ; 1589 bp +( ump ); 1591 `memt (& gp -> ig , 0, (argp->orig)); 1592 `memy (& gp -> ig . size , bp , ( u_t32_t )); 1593 bp +( u_t32_t ); 1594 gp -> ig . da = bp ; 1595 bp + gp -> ig . size ; 1597 `memt (& gp -> , 0, (argp->repl)); 1598 `memy (& gp -> . size , bp , ( u_t32_t )); 1599 bp +( u_t32_t ); 1600 gp -> . da = bp ; 1601 bp + gp -> . size ; 1603 `memy (& ump , bp , (uinttmp)); 1604 gp -> efix = ( u_t32_t ) ump ; 1605 bp +( ump ); 1607 `memy (& ump , bp , (uinttmp)); 1608 gp -> suffix = ( u_t32_t ) ump ; 1609 bp +( ump ); 1611 * g = gp ; 1613 } } 1620 $__bam_ro_log ( dbp , tx , t_lp , ags , ma_pgno , ro_pgno , ma_l ) 1621 DB * dbp ; 1622 DB_TXN * tx ; 1623 DB_LSN * t_lp ; 1624 u_t32_t ags ; 1625 db_pgno_t ma_pgno ; 1626 db_pgno_t ro_pgno ; 1627 DB_LSN * ma_l ; 1629 DBT logc ; 1630 DB_ENV * dbv ; 1631 DB_TXNLOGREC * ; 1632 DB_LSN * lp , nu_l , * p ; 1633 u_t32_t ump , y , txn_num ; 1634 u_t ad ; 1635 u_t8_t * bp ; 1636 is_dub , t ; 1638 dbv = dbp ->dbenv; 1639 `COMPQUIET ( , NULL ); 1641 y = DB___bam_ro ; 1642 ad = 0; 1643 p = t_lp ; 1645 t = 0; 1647 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1648 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1649 i( tx = NULL ) 1651 is_dub = 0; 1653 is_dub = 1; 1655 i( tx = NULL ) { 1656 txn_num = 0; 1657 lp = & nu_l ; 1658 nu_l . fe =u_l. offt = 0; 1660 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1661 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1662 ( t ); 1669 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1670 txn_num = tx -> txnid ; 1673 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1674 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1675 ( t = `__dbg_zy_id ( dbp )) != 0) 1676 ( t ); 1678 logc . size = ( y + ( txn_num + ( DB_LSN ) 1679 + ( u_t32_t ) 1680 + ( u_t32_t ) 1681 + ( u_t32_t ) 1682 + (* ma_l ); 1683 i( `CRYPTO_ON ( dbv )) { 1684 ad = 1685 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1686 logc . size + ad ; 1689 i( is_dub || tx = NULL ) { 1690 i(( t = 1691 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1692 ( t ); 1694 i(( t = `__os_mloc ( dbv , 1695 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1696 ( t ); 1697 #ifde DIAGNOSTIC 1698 i(( t = 1699 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1700 `__os_ ( dbv , ); 1701 ( t ); 1704 logc . da = ->data; 1707 i( ad > 0) 1708 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1710 bp = logc . da ; 1712 `memy ( bp , & y , (rectype)); 1713 bp +( y ); 1715 `memy ( bp , & txn_num , (txn_num)); 1716 bp +( txn_num ); 1718 `memy ( bp , lp , ( DB_LSN )); 1719 bp +( DB_LSN ); 1721 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1722 `memy ( bp , & ump , (uinttmp)); 1723 bp +( ump ); 1725 ump = ( u_t32_t ) ma_pgno ; 1726 `memy ( bp , & ump , (uinttmp)); 1727 bp +( ump ); 1729 ump = ( u_t32_t ) ro_pgno ; 1730 `memy ( bp , & ump , (uinttmp)); 1731 bp +( ump ); 1733 i( ma_l ! NULL ) { 1734 i( tx ! NULL ) { 1735 LOG * = dbv -> lg_hd -> gfo . imy ; 1736 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1737 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 1738 ( t ); 1740 `memy ( bp , ma_l , (*meta_lsn)); 1742 `memt ( bp , 0, (* ma_l )); 1743 bp +(* ma_l ); 1745 `DB_ASSERT ( dbv , 1746 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1748 i( is_dub || tx = NULL ) { 1749 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1750 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1751 * lp = * p ; 1752 i( p ! t_lp ) 1753 * t_lp = * p ; 1756 t = 0; 1757 #ifde DIAGNOSTIC 1762 `memy ( -> da , logc .da,ogc. size ); 1763 y | DB_debug_FLAG ; 1764 `memy ( logc . da , & y , (rectype)); 1766 i(! `IS_REP_CLIENT ( dbv )) 1767 t = `__log_put ( dbv , 1768 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1770 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1771 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1772 `LSN_NOT_LOGGED (* t_lp ); 1775 #ifde LOG_DIAGNOSTIC 1776 i( t != 0) 1777 () `__bam_ro_t ( dbv , 1778 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1781 #ifde DIAGNOSTIC 1782 `__os_ ( dbv , logc . da ); 1784 i( is_dub || tx = NULL ) 1785 `__os_ ( dbv , logc . da ); 1787 ( t ); 1788 } } 1794 $__bam_ro_ad ( dbv , cbuf , g ) 1795 DB_ENV * dbv ; 1796 * cbuf ; 1797 __bam_ro_gs ** g ; 1799 __bam_ro_gs * gp ; 1800 u_t32_t ump ; 1801 u_t8_t * bp ; 1802 t ; 1804 i(( t = `__os_mloc ( dbv , 1805 ( __bam_ro_gs + ( DB_TXN ), & gp )) != 0) 1806 ( t ); 1807 bp = cbuf ; 1808 gp -> tx = ( DB_TXN *)&argp[1]; 1809 `memt ( gp -> tx , 0, ( DB_TXN )); 1811 `memy (& gp -> ty , bp , (argp->type)); 1812 bp +( gp -> ty ); 1814 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1815 bp +( gp -> tx -> txnid ); 1817 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1818 bp +( DB_LSN ); 1820 `memy (& ump , bp , (uinttmp)); 1821 gp -> feid = ( t32_t ) ump ; 1822 bp +( ump ); 1824 `memy (& ump , bp , (uinttmp)); 1825 gp -> ma_pgno = ( db_pgno_t ) ump ; 1826 bp +( ump ); 1828 `memy (& ump , bp , (uinttmp)); 1829 gp -> ro_pgno = ( db_pgno_t ) ump ; 1830 bp +( ump ); 1832 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 1833 bp +( gp -> ma_l ); 1835 * g = gp ; 1837 } } 1845 $__bam_cudj_log ( dbp , tx , t_lp , ags , mode , om_pgno , to_pgno , _pgno , f_dx , 1846 om_dx , to_dx ) 1847 DB * dbp ; 1848 DB_TXN * tx ; 1849 DB_LSN * t_lp ; 1850 u_t32_t ags ; 1851 db__mode mode ; 1852 db_pgno_t om_pgno ; 1853 db_pgno_t to_pgno ; 1854 db_pgno_t _pgno ; 1855 u_t32_t f_dx ; 1856 u_t32_t om_dx ; 1857 u_t32_t to_dx ; 1859 DBT logc ; 1860 DB_ENV * dbv ; 1861 DB_TXNLOGREC * ; 1862 DB_LSN * lp , nu_l , * p ; 1863 u_t32_t ump , y , txn_num ; 1864 u_t ad ; 1865 u_t8_t * bp ; 1866 is_dub , t ; 1868 dbv = dbp ->dbenv; 1869 `COMPQUIET ( , NULL ); 1871 y = DB___bam_cudj ; 1872 ad = 0; 1873 p = t_lp ; 1875 t = 0; 1877 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1878 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1879 i( tx = NULL ) 1881 is_dub = 0; 1883 is_dub = 1; 1885 i( tx = NULL ) { 1886 txn_num = 0; 1887 lp = & nu_l ; 1888 nu_l . fe =u_l. offt = 0; 1890 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1891 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1892 ( t ); 1899 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1900 txn_num = tx -> txnid ; 1903 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1904 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1905 ( t = `__dbg_zy_id ( dbp )) != 0) 1906 ( t ); 1908 logc . size = ( y + ( txn_num + ( DB_LSN ) 1909 + ( u_t32_t ) 1910 + ( u_t32_t ) 1911 + ( u_t32_t ) 1912 + ( u_t32_t ) 1913 + ( u_t32_t ) 1914 + ( u_t32_t ) 1915 + ( u_t32_t ) 1916 + ( u_t32_t ); 1917 i( `CRYPTO_ON ( dbv )) { 1918 ad = 1919 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1920 logc . size + ad ; 1923 i( is_dub || tx = NULL ) { 1924 i(( t = 1925 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1926 ( t ); 1928 i(( t = `__os_mloc ( dbv , 1929 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1930 ( t ); 1931 #ifde DIAGNOSTIC 1932 i(( t = 1933 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1934 `__os_ ( dbv , ); 1935 ( t ); 1938 logc . da = ->data; 1941 i( ad > 0) 1942 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1944 bp = logc . da ; 1946 `memy ( bp , & y , (rectype)); 1947 bp +( y ); 1949 `memy ( bp , & txn_num , (txn_num)); 1950 bp +( txn_num ); 1952 `memy ( bp , lp , ( DB_LSN )); 1953 bp +( DB_LSN ); 1955 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1956 `memy ( bp , & ump , (uinttmp)); 1957 bp +( ump ); 1959 ump = ( u_t32_t ) mode ; 1960 `memy ( bp , & ump , (uinttmp)); 1961 bp +( ump ); 1963 ump = ( u_t32_t ) om_pgno ; 1964 `memy ( bp , & ump , (uinttmp)); 1965 bp +( ump ); 1967 ump = ( u_t32_t ) to_pgno ; 1968 `memy ( bp , & ump , (uinttmp)); 1969 bp +( ump ); 1971 ump = ( u_t32_t ) _pgno ; 1972 `memy ( bp , & ump , (uinttmp)); 1973 bp +( ump ); 1975 ump = ( u_t32_t ) f_dx ; 1976 `memy ( bp , & ump , (uinttmp)); 1977 bp +( ump ); 1979 ump = ( u_t32_t ) om_dx ; 1980 `memy ( bp , & ump , (uinttmp)); 1981 bp +( ump ); 1983 ump = ( u_t32_t ) to_dx ; 1984 `memy ( bp , & ump , (uinttmp)); 1985 bp +( ump ); 1987 `DB_ASSERT ( dbv , 1988 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1990 i( is_dub || tx = NULL ) { 1991 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1992 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1993 * lp = * p ; 1994 i( p ! t_lp ) 1995 * t_lp = * p ; 1998 t = 0; 1999 #ifde DIAGNOSTIC 2004 `memy ( -> da , logc .da,ogc. size ); 2005 y | DB_debug_FLAG ; 2006 `memy ( logc . da , & y , (rectype)); 2008 i(! `IS_REP_CLIENT ( dbv )) 2009 t = `__log_put ( dbv , 2010 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2012 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2013 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2014 `LSN_NOT_LOGGED (* t_lp ); 2017 #ifde LOG_DIAGNOSTIC 2018 i( t != 0) 2019 () `__bam_cudj_t ( dbv , 2020 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2023 #ifde DIAGNOSTIC 2024 `__os_ ( dbv , logc . da ); 2026 i( is_dub || tx = NULL ) 2027 `__os_ ( dbv , logc . da ); 2029 ( t ); 2030 } } 2036 $__bam_cudj_ad ( dbv , cbuf , g ) 2037 DB_ENV * dbv ; 2038 * cbuf ; 2039 __bam_cudj_gs ** g ; 2041 __bam_cudj_gs * gp ; 2042 u_t32_t ump ; 2043 u_t8_t * bp ; 2044 t ; 2046 i(( t = `__os_mloc ( dbv , 2047 ( __bam_cudj_gs + ( DB_TXN ), & gp )) != 0) 2048 ( t ); 2049 bp = cbuf ; 2050 gp -> tx = ( DB_TXN *)&argp[1]; 2051 `memt ( gp -> tx , 0, ( DB_TXN )); 2053 `memy (& gp -> ty , bp , (argp->type)); 2054 bp +( gp -> ty ); 2056 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2057 bp +( gp -> tx -> txnid ); 2059 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2060 bp +( DB_LSN ); 2062 `memy (& ump , bp , (uinttmp)); 2063 gp -> feid = ( t32_t ) ump ; 2064 bp +( ump ); 2066 `memy (& ump , bp , (uinttmp)); 2067 gp -> mode = ( db__mode ) ump ; 2068 bp +( ump ); 2070 `memy (& ump , bp , (uinttmp)); 2071 gp -> om_pgno = ( db_pgno_t ) ump ; 2072 bp +( ump ); 2074 `memy (& ump , bp , (uinttmp)); 2075 gp -> to_pgno = ( db_pgno_t ) ump ; 2076 bp +( ump ); 2078 `memy (& ump , bp , (uinttmp)); 2079 gp -> _pgno = ( db_pgno_t ) ump ; 2080 bp +( ump ); 2082 `memy (& ump , bp , (uinttmp)); 2083 gp -> f_dx = ( u_t32_t ) ump ; 2084 bp +( ump ); 2086 `memy (& ump , bp , (uinttmp)); 2087 gp -> om_dx = ( u_t32_t ) ump ; 2088 bp +( ump ); 2090 `memy (& ump , bp , (uinttmp)); 2091 gp -> to_dx = ( u_t32_t ) ump ; 2092 bp +( ump ); 2094 * g = gp ; 2096 } } 2103 $__bam_rcudj_log ( dbp , tx , t_lp , ags , mode , ro , o , d ) 2104 DB * dbp ; 2105 DB_TXN * tx ; 2106 DB_LSN * t_lp ; 2107 u_t32_t ags ; 2108 _o_g mode ; 2109 db_pgno_t ro ; 2110 db_o_t o ; 2111 u_t32_t d ; 2113 DBT logc ; 2114 DB_ENV * dbv ; 2115 DB_TXNLOGREC * ; 2116 DB_LSN * lp , nu_l , * p ; 2117 u_t32_t ump , y , txn_num ; 2118 u_t ad ; 2119 u_t8_t * bp ; 2120 is_dub , t ; 2122 dbv = dbp ->dbenv; 2123 `COMPQUIET ( , NULL ); 2125 y = DB___bam_rcudj ; 2126 ad = 0; 2127 p = t_lp ; 2129 t = 0; 2131 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2132 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2133 i( tx = NULL ) 2135 is_dub = 0; 2137 is_dub = 1; 2139 i( tx = NULL ) { 2140 txn_num = 0; 2141 lp = & nu_l ; 2142 nu_l . fe =u_l. offt = 0; 2144 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2145 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2146 ( t ); 2153 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2154 txn_num = tx -> txnid ; 2157 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2158 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2159 ( t = `__dbg_zy_id ( dbp )) != 0) 2160 ( t ); 2162 logc . size = ( y + ( txn_num + ( DB_LSN ) 2163 + ( u_t32_t ) 2164 + ( u_t32_t ) 2165 + ( u_t32_t ) 2166 + ( u_t32_t ) 2167 + ( u_t32_t ); 2168 i( `CRYPTO_ON ( dbv )) { 2169 ad = 2170 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2171 logc . size + ad ; 2174 i( is_dub || tx = NULL ) { 2175 i(( t = 2176 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2177 ( t ); 2179 i(( t = `__os_mloc ( dbv , 2180 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2181 ( t ); 2182 #ifde DIAGNOSTIC 2183 i(( t = 2184 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2185 `__os_ ( dbv , ); 2186 ( t ); 2189 logc . da = ->data; 2192 i( ad > 0) 2193 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2195 bp = logc . da ; 2197 `memy ( bp , & y , (rectype)); 2198 bp +( y ); 2200 `memy ( bp , & txn_num , (txn_num)); 2201 bp +( txn_num ); 2203 `memy ( bp , lp , ( DB_LSN )); 2204 bp +( DB_LSN ); 2206 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2207 `memy ( bp , & ump , (uinttmp)); 2208 bp +( ump ); 2210 ump = ( u_t32_t ) mode ; 2211 `memy ( bp , & ump , (uinttmp)); 2212 bp +( ump ); 2214 ump = ( u_t32_t ) ro ; 2215 `memy ( bp , & ump , (uinttmp)); 2216 bp +( ump ); 2218 ump = ( u_t32_t ) o ; 2219 `memy ( bp , & ump , (uinttmp)); 2220 bp +( ump ); 2222 ump = ( u_t32_t ) d ; 2223 `memy ( bp , & ump , (uinttmp)); 2224 bp +( ump ); 2226 `DB_ASSERT ( dbv , 2227 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2229 i( is_dub || tx = NULL ) { 2230 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2231 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2232 * lp = * p ; 2233 i( p ! t_lp ) 2234 * t_lp = * p ; 2237 t = 0; 2238 #ifde DIAGNOSTIC 2243 `memy ( -> da , logc .da,ogc. size ); 2244 y | DB_debug_FLAG ; 2245 `memy ( logc . da , & y , (rectype)); 2247 i(! `IS_REP_CLIENT ( dbv )) 2248 t = `__log_put ( dbv , 2249 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2251 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2252 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2253 `LSN_NOT_LOGGED (* t_lp ); 2256 #ifde LOG_DIAGNOSTIC 2257 i( t != 0) 2258 () `__bam_rcudj_t ( dbv , 2259 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2262 #ifde DIAGNOSTIC 2263 `__os_ ( dbv , logc . da ); 2265 i( is_dub || tx = NULL ) 2266 `__os_ ( dbv , logc . da ); 2268 ( t ); 2269 } } 2276 $__bam_rcudj_ad ( dbv , cbuf , g ) 2277 DB_ENV * dbv ; 2278 * cbuf ; 2279 __bam_rcudj_gs ** g ; 2281 __bam_rcudj_gs * gp ; 2282 u_t32_t ump ; 2283 u_t8_t * bp ; 2284 t ; 2286 i(( t = `__os_mloc ( dbv , 2287 ( __bam_rcudj_gs + ( DB_TXN ), & gp )) != 0) 2288 ( t ); 2289 bp = cbuf ; 2290 gp -> tx = ( DB_TXN *)&argp[1]; 2291 `memt ( gp -> tx , 0, ( DB_TXN )); 2293 `memy (& gp -> ty , bp , (argp->type)); 2294 bp +( gp -> ty ); 2296 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2297 bp +( gp -> tx -> txnid ); 2299 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2300 bp +( DB_LSN ); 2302 `memy (& ump , bp , (uinttmp)); 2303 gp -> feid = ( t32_t ) ump ; 2304 bp +( ump ); 2306 `memy (& ump , bp , (uinttmp)); 2307 gp -> mode = ( _o_g ) ump ; 2308 bp +( ump ); 2310 `memy (& ump , bp , (uinttmp)); 2311 gp -> ro = ( db_pgno_t ) ump ; 2312 bp +( ump ); 2314 `memy (& ump , bp , (uinttmp)); 2315 gp -> o = ( db_o_t ) ump ; 2316 bp +( ump ); 2318 `memy (& ump , bp , (uinttmp)); 2319 gp -> d = ( u_t32_t ) ump ; 2320 bp +( ump ); 2322 * g = gp ; 2324 } } 2331 $__bam_lk_43_ad ( dbv , cbuf , g ) 2332 DB_ENV * dbv ; 2333 * cbuf ; 2334 __bam_lk_43_gs ** g ; 2336 __bam_lk_43_gs * gp ; 2337 u_t32_t ump ; 2338 u_t8_t * bp ; 2339 t ; 2341 i(( t = `__os_mloc ( dbv , 2342 ( __bam_lk_43_gs + ( DB_TXN ), & gp )) != 0) 2343 ( t ); 2344 bp = cbuf ; 2345 gp -> tx = ( DB_TXN *)&argp[1]; 2346 `memt ( gp -> tx , 0, ( DB_TXN )); 2348 `memy (& gp -> ty , bp , (argp->type)); 2349 bp +( gp -> ty ); 2351 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2352 bp +( gp -> tx -> txnid ); 2354 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2355 bp +( DB_LSN ); 2357 `memy (& ump , bp , (uinttmp)); 2358 gp -> feid = ( t32_t ) ump ; 2359 bp +( ump ); 2361 `memy (& ump , bp , (uinttmp)); 2362 gp -> pgno = ( db_pgno_t ) ump ; 2363 bp +( ump ); 2365 `memy (& gp -> l , bp , (argp->lsn)); 2366 bp +( gp -> l ); 2368 `memy (& ump , bp , (uinttmp)); 2369 gp -> ev = ( db_pgno_t ) ump ; 2370 bp +( ump ); 2372 `memy (& gp -> l_ev , bp , (argp->lsn_prev)); 2373 bp +( gp -> l_ev ); 2375 `memy (& ump , bp , (uinttmp)); 2376 gp -> xt = ( db_pgno_t ) ump ; 2377 bp +( ump ); 2379 `memy (& gp -> l_xt , bp , (argp->lsn_next)); 2380 bp +( gp -> l_xt ); 2382 * g = gp ; 2384 } } 2392 $__bam_lk_log ( dbp , tx , t_lp , ags , pgno , w_pgno , ev , l_ev , xt , 2393 l_xt ) 2394 DB * dbp ; 2395 DB_TXN * tx ; 2396 DB_LSN * t_lp ; 2397 u_t32_t ags ; 2398 db_pgno_t pgno ; 2399 db_pgno_t w_pgno ; 2400 db_pgno_t ev ; 2401 DB_LSN * l_ev ; 2402 db_pgno_t xt ; 2403 DB_LSN * l_xt ; 2405 DBT logc ; 2406 DB_ENV * dbv ; 2407 DB_TXNLOGREC * ; 2408 DB_LSN * lp , nu_l , * p ; 2409 u_t32_t ump , y , txn_num ; 2410 u_t ad ; 2411 u_t8_t * bp ; 2412 is_dub , t ; 2414 dbv = dbp ->dbenv; 2415 `COMPQUIET ( , NULL ); 2417 y = DB___bam_lk ; 2418 ad = 0; 2419 p = t_lp ; 2421 t = 0; 2423 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2424 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2425 i( tx = NULL ) 2427 is_dub = 0; 2429 is_dub = 1; 2431 i( tx = NULL ) { 2432 txn_num = 0; 2433 lp = & nu_l ; 2434 nu_l . fe =u_l. offt = 0; 2436 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2437 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2438 ( t ); 2445 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2446 txn_num = tx -> txnid ; 2449 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2450 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2451 ( t = `__dbg_zy_id ( dbp )) != 0) 2452 ( t ); 2454 logc . size = ( y + ( txn_num + ( DB_LSN ) 2455 + ( u_t32_t ) 2456 + ( u_t32_t ) 2457 + ( u_t32_t ) 2458 + ( u_t32_t ) 2459 + (* l_ev ) 2460 + ( u_t32_t ) 2461 + (* l_xt ); 2462 i( `CRYPTO_ON ( dbv )) { 2463 ad = 2464 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2465 logc . size + ad ; 2468 i( is_dub || tx = NULL ) { 2469 i(( t = 2470 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2471 ( t ); 2473 i(( t = `__os_mloc ( dbv , 2474 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2475 ( t ); 2476 #ifde DIAGNOSTIC 2477 i(( t = 2478 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2479 `__os_ ( dbv , ); 2480 ( t ); 2483 logc . da = ->data; 2486 i( ad > 0) 2487 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2489 bp = logc . da ; 2491 `memy ( bp , & y , (rectype)); 2492 bp +( y ); 2494 `memy ( bp , & txn_num , (txn_num)); 2495 bp +( txn_num ); 2497 `memy ( bp , lp , ( DB_LSN )); 2498 bp +( DB_LSN ); 2500 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2501 `memy ( bp , & ump , (uinttmp)); 2502 bp +( ump ); 2504 ump = ( u_t32_t ) pgno ; 2505 `memy ( bp , & ump , (uinttmp)); 2506 bp +( ump ); 2508 ump = ( u_t32_t ) w_pgno ; 2509 `memy ( bp , & ump , (uinttmp)); 2510 bp +( ump ); 2512 ump = ( u_t32_t ) ev ; 2513 `memy ( bp , & ump , (uinttmp)); 2514 bp +( ump ); 2516 i( l_ev ! NULL ) { 2517 i( tx ! NULL ) { 2518 LOG * = dbv -> lg_hd -> gfo . imy ; 2519 i( `LOG_COMPARE ( l_ev , & -> l >0 && ( t = 2520 `__log_check_ge_l ( dbv , dbp , l_ev ) != 0)) 2521 ( t ); 2523 `memy ( bp , l_ev , (*lsn_prev)); 2525 `memt ( bp , 0, (* l_ev )); 2526 bp +(* l_ev ); 2528 ump = ( u_t32_t ) xt ; 2529 `memy ( bp , & ump , (uinttmp)); 2530 bp +( ump ); 2532 i( l_xt ! NULL ) { 2533 i( tx ! NULL ) { 2534 LOG * = dbv -> lg_hd -> gfo . imy ; 2535 i( `LOG_COMPARE ( l_xt , & -> l >0 && ( t = 2536 `__log_check_ge_l ( dbv , dbp , l_xt ) != 0)) 2537 ( t ); 2539 `memy ( bp , l_xt , (*lsn_next)); 2541 `memt ( bp , 0, (* l_xt )); 2542 bp +(* l_xt ); 2544 `DB_ASSERT ( dbv , 2545 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2547 i( is_dub || tx = NULL ) { 2548 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2549 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2550 * lp = * p ; 2551 i( p ! t_lp ) 2552 * t_lp = * p ; 2555 t = 0; 2556 #ifde DIAGNOSTIC 2561 `memy ( -> da , logc .da,ogc. size ); 2562 y | DB_debug_FLAG ; 2563 `memy ( logc . da , & y , (rectype)); 2565 i(! `IS_REP_CLIENT ( dbv )) 2566 t = `__log_put ( dbv , 2567 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2569 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2570 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2571 `LSN_NOT_LOGGED (* t_lp ); 2574 #ifde LOG_DIAGNOSTIC 2575 i( t != 0) 2576 () `__bam_lk_t ( dbv , 2577 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2580 #ifde DIAGNOSTIC 2581 `__os_ ( dbv , logc . da ); 2583 i( is_dub || tx = NULL ) 2584 `__os_ ( dbv , logc . da ); 2586 ( t ); 2587 } } 2593 $__bam_lk_ad ( dbv , cbuf , g ) 2594 DB_ENV * dbv ; 2595 * cbuf ; 2596 __bam_lk_gs ** g ; 2598 __bam_lk_gs * gp ; 2599 u_t32_t ump ; 2600 u_t8_t * bp ; 2601 t ; 2603 i(( t = `__os_mloc ( dbv , 2604 ( __bam_lk_gs + ( DB_TXN ), & gp )) != 0) 2605 ( t ); 2606 bp = cbuf ; 2607 gp -> tx = ( DB_TXN *)&argp[1]; 2608 `memt ( gp -> tx , 0, ( DB_TXN )); 2610 `memy (& gp -> ty , bp , (argp->type)); 2611 bp +( gp -> ty ); 2613 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2614 bp +( gp -> tx -> txnid ); 2616 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2617 bp +( DB_LSN ); 2619 `memy (& ump , bp , (uinttmp)); 2620 gp -> feid = ( t32_t ) ump ; 2621 bp +( ump ); 2623 `memy (& ump , bp , (uinttmp)); 2624 gp -> pgno = ( db_pgno_t ) ump ; 2625 bp +( ump ); 2627 `memy (& ump , bp , (uinttmp)); 2628 gp -> w_pgno = ( db_pgno_t ) ump ; 2629 bp +( ump ); 2631 `memy (& ump , bp , (uinttmp)); 2632 gp -> ev = ( db_pgno_t ) ump ; 2633 bp +( ump ); 2635 `memy (& gp -> l_ev , bp , (argp->lsn_prev)); 2636 bp +( gp -> l_ev ); 2638 `memy (& ump , bp , (uinttmp)); 2639 gp -> xt = ( db_pgno_t ) ump ; 2640 bp +( ump ); 2642 `memy (& gp -> l_xt , bp , (argp->lsn_next)); 2643 bp +( gp -> l_xt ); 2645 * g = gp ; 2647 } } 2655 $__bam_mge_log ( dbp , tx , t_lp , ags , pgno , l , gno , Ƣ , hdr , 2656 da , d ) 2657 DB * dbp ; 2658 DB_TXN * tx ; 2659 DB_LSN * t_lp ; 2660 u_t32_t ags ; 2661 db_pgno_t pgno ; 2662 DB_LSN * l ; 2663 db_pgno_t gno ; 2664 DB_LSN * Ƣ ; 2665 cڡ DBT * hdr ; 2666 cڡ DBT * da ; 2667 cڡ DBT * d ; 2669 DBT logc ; 2670 DB_ENV * dbv ; 2671 DB_TXNLOGREC * ; 2672 DB_LSN * lp , nu_l , * p ; 2673 u_t32_t zo , ump , y , txn_num ; 2674 u_t ad ; 2675 u_t8_t * bp ; 2676 is_dub , t ; 2678 dbv = dbp ->dbenv; 2679 `COMPQUIET ( , NULL ); 2681 y = DB___bam_mge ; 2682 ad = 0; 2683 p = t_lp ; 2685 t = 0; 2687 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2688 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2689 i( tx = NULL ) 2691 is_dub = 0; 2693 is_dub = 1; 2695 i( tx = NULL ) { 2696 txn_num = 0; 2697 lp = & nu_l ; 2698 nu_l . fe =u_l. offt = 0; 2700 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2701 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2702 ( t ); 2709 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2710 txn_num = tx -> txnid ; 2713 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2714 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2715 ( t = `__dbg_zy_id ( dbp )) != 0) 2716 ( t ); 2718 logc . size = ( y + ( txn_num + ( DB_LSN ) 2719 + ( u_t32_t ) 2720 + ( u_t32_t ) 2721 + (* l ) 2722 + ( u_t32_t ) 2723 + (* Ƣ ) 2724 + ( u_t32_t + ( hdr = NULL ? 0 : hdr-> size ) 2725 + ( u_t32_t + ( da = NULL ? 0 : da-> size ) 2726 + ( u_t32_t + ( d = NULL ? 0 : ind-> size ); 2727 i( `CRYPTO_ON ( dbv )) { 2728 ad = 2729 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2730 logc . size + ad ; 2733 i( is_dub || tx = NULL ) { 2734 i(( t = 2735 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2736 ( t ); 2738 i(( t = `__os_mloc ( dbv , 2739 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2740 ( t ); 2741 #ifde DIAGNOSTIC 2742 i(( t = 2743 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2744 `__os_ ( dbv , ); 2745 ( t ); 2748 logc . da = ->data; 2751 i( ad > 0) 2752 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2754 bp = logc . da ; 2756 `memy ( bp , & y , (rectype)); 2757 bp +( y ); 2759 `memy ( bp , & txn_num , (txn_num)); 2760 bp +( txn_num ); 2762 `memy ( bp , lp , ( DB_LSN )); 2763 bp +( DB_LSN ); 2765 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2766 `memy ( bp , & ump , (uinttmp)); 2767 bp +( ump ); 2769 ump = ( u_t32_t ) pgno ; 2770 `memy ( bp , & ump , (uinttmp)); 2771 bp +( ump ); 2773 i( l ! NULL ) { 2774 i( tx ! NULL ) { 2775 LOG * = dbv -> lg_hd -> gfo . imy ; 2776 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 2777 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 2778 ( t ); 2780 `memy ( bp , l , (*lsn)); 2782 `memt ( bp , 0, (* l )); 2783 bp +(* l ); 2785 ump = ( u_t32_t ) gno ; 2786 `memy ( bp , & ump , (uinttmp)); 2787 bp +( ump ); 2789 i( Ƣ ! NULL ) { 2790 i( tx ! NULL ) { 2791 LOG * = dbv -> lg_hd -> gfo . imy ; 2792 i( `LOG_COMPARE ( Ƣ , & -> l >0 && ( t = 2793 `__log_check_ge_l ( dbv , dbp , Ƣ ) != 0)) 2794 ( t ); 2796 `memy ( bp , Ƣ , (*nlsn)); 2798 `memt ( bp , 0, (* Ƣ )); 2799 bp +(* Ƣ ); 2801 i( hdr = NULL ) { 2802 zo = 0; 2803 `memy ( bp , & zo , ( u_t32_t )); 2804 bp +( u_t32_t ); 2806 `memy ( bp , & hdr -> size , (hdr->size)); 2807 bp +( hdr -> size ); 2808 `memy ( bp , hdr -> da , hdr-> size ); 2809 bp + hdr -> size ; 2812 i( da = NULL ) { 2813 zo = 0; 2814 `memy ( bp , & zo , ( u_t32_t )); 2815 bp +( u_t32_t ); 2817 `memy ( bp , & da -> size , (data->size)); 2818 bp +( da -> size ); 2819 `memy ( bp , da ->da, da-> size ); 2820 bp + da -> size ; 2823 i( d = NULL ) { 2824 zo = 0; 2825 `memy ( bp , & zo , ( u_t32_t )); 2826 bp +( u_t32_t ); 2828 `memy ( bp , & d -> size , (ind->size)); 2829 bp +( d -> size ); 2830 `memy ( bp , d -> da , ind-> size ); 2831 bp + d -> size ; 2834 `DB_ASSERT ( dbv , 2835 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2837 i( is_dub || tx = NULL ) { 2838 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2839 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2840 * lp = * p ; 2841 i( p ! t_lp ) 2842 * t_lp = * p ; 2845 t = 0; 2846 #ifde DIAGNOSTIC 2851 `memy ( -> da , logc .da,ogc. size ); 2852 y | DB_debug_FLAG ; 2853 `memy ( logc . da , & y , (rectype)); 2855 i(! `IS_REP_CLIENT ( dbv )) 2856 t = `__log_put ( dbv , 2857 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2859 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2860 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2861 `LSN_NOT_LOGGED (* t_lp ); 2864 #ifde LOG_DIAGNOSTIC 2865 i( t != 0) 2866 () `__bam_mge_t ( dbv , 2867 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2870 #ifde DIAGNOSTIC 2871 `__os_ ( dbv , logc . da ); 2873 i( is_dub || tx = NULL ) 2874 `__os_ ( dbv , logc . da ); 2876 ( t ); 2877 } } 2883 $__bam_mge_ad ( dbv , cbuf , g ) 2884 DB_ENV * dbv ; 2885 * cbuf ; 2886 __bam_mge_gs ** g ; 2888 __bam_mge_gs * gp ; 2889 u_t32_t ump ; 2890 u_t8_t * bp ; 2891 t ; 2893 i(( t = `__os_mloc ( dbv , 2894 ( __bam_mge_gs + ( DB_TXN ), & gp )) != 0) 2895 ( t ); 2896 bp = cbuf ; 2897 gp -> tx = ( DB_TXN *)&argp[1]; 2898 `memt ( gp -> tx , 0, ( DB_TXN )); 2900 `memy (& gp -> ty , bp , (argp->type)); 2901 bp +( gp -> ty ); 2903 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2904 bp +( gp -> tx -> txnid ); 2906 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2907 bp +( DB_LSN ); 2909 `memy (& ump , bp , (uinttmp)); 2910 gp -> feid = ( t32_t ) ump ; 2911 bp +( ump ); 2913 `memy (& ump , bp , (uinttmp)); 2914 gp -> pgno = ( db_pgno_t ) ump ; 2915 bp +( ump ); 2917 `memy (& gp -> l , bp , (argp->lsn)); 2918 bp +( gp -> l ); 2920 `memy (& ump , bp , (uinttmp)); 2921 gp -> gno = ( db_pgno_t ) ump ; 2922 bp +( ump ); 2924 `memy (& gp -> Ƣ , bp , (argp->nlsn)); 2925 bp +( gp -> Ƣ ); 2927 `memt (& gp -> hdr , 0, (argp->hdr)); 2928 `memy (& gp -> hdr . size , bp , ( u_t32_t )); 2929 bp +( u_t32_t ); 2930 gp -> hdr . da = bp ; 2931 bp + gp -> hdr . size ; 2933 `memt (& gp -> da , 0, (argp->data)); 2934 `memy (& gp -> da . size , bp , ( u_t32_t )); 2935 bp +( u_t32_t ); 2936 gp -> da .d bp ; 2937 bp + gp -> da . size ; 2939 `memt (& gp -> d , 0, (argp->ind)); 2940 `memy (& gp -> d . size , bp , ( u_t32_t )); 2941 bp +( u_t32_t ); 2942 gp -> d . da = bp ; 2943 bp + gp -> d . size ; 2945 * g = gp ; 2947 } } 2955 $__bam_pgno_log ( dbp , tx , t_lp , ags , pgno , l , dx , gno , gno ) 2956 DB * dbp ; 2957 DB_TXN * tx ; 2958 DB_LSN * t_lp ; 2959 u_t32_t ags ; 2960 db_pgno_t pgno ; 2961 DB_LSN * l ; 2962 u_t32_t dx ; 2963 db_pgno_t gno ; 2964 db_pgno_t gno ; 2966 DBT logc ; 2967 DB_ENV * dbv ; 2968 DB_TXNLOGREC * ; 2969 DB_LSN * lp , nu_l , * p ; 2970 u_t32_t ump , y , txn_num ; 2971 u_t ad ; 2972 u_t8_t * bp ; 2973 is_dub , t ; 2975 dbv = dbp ->dbenv; 2976 `COMPQUIET ( , NULL ); 2978 y = DB___bam_pgno ; 2979 ad = 0; 2980 p = t_lp ; 2982 t = 0; 2984 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2985 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2986 i( tx = NULL ) 2988 is_dub = 0; 2990 is_dub = 1; 2992 i( tx = NULL ) { 2993 txn_num = 0; 2994 lp = & nu_l ; 2995 nu_l . fe =u_l. offt = 0; 2997 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2998 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2999 ( t ); 3006 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 3007 txn_num = tx -> txnid ; 3010 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 3011 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 3012 ( t = `__dbg_zy_id ( dbp )) != 0) 3013 ( t ); 3015 logc . size = ( y + ( txn_num + ( DB_LSN ) 3016 + ( u_t32_t ) 3017 + ( u_t32_t ) 3018 + (* l ) 3019 + ( u_t32_t ) 3020 + ( u_t32_t ) 3021 + ( u_t32_t ); 3022 i( `CRYPTO_ON ( dbv )) { 3023 ad = 3024 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 3025 logc . size + ad ; 3028 i( is_dub || tx = NULL ) { 3029 i(( t = 3030 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 3031 ( t ); 3033 i(( t = `__os_mloc ( dbv , 3034 logc . size + ( DB_TXNLOGREC ), & )) != 0) 3035 ( t ); 3036 #ifde DIAGNOSTIC 3037 i(( t = 3038 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 3039 `__os_ ( dbv , ); 3040 ( t ); 3043 logc . da = ->data; 3046 i( ad > 0) 3047 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 3049 bp = logc . da ; 3051 `memy ( bp , & y , (rectype)); 3052 bp +( y ); 3054 `memy ( bp , & txn_num , (txn_num)); 3055 bp +( txn_num ); 3057 `memy ( bp , lp , ( DB_LSN )); 3058 bp +( DB_LSN ); 3060 ump = ( u_t32_t ) dbp -> log_fame -> id ; 3061 `memy ( bp , & ump , (uinttmp)); 3062 bp +( ump ); 3064 ump = ( u_t32_t ) pgno ; 3065 `memy ( bp , & ump , (uinttmp)); 3066 bp +( ump ); 3068 i( l ! NULL ) { 3069 i( tx ! NULL ) { 3070 LOG * = dbv -> lg_hd -> gfo . imy ; 3071 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 3072 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 3073 ( t ); 3075 `memy ( bp , l , (*lsn)); 3077 `memt ( bp , 0, (* l )); 3078 bp +(* l ); 3080 ump = ( u_t32_t ) dx ; 3081 `memy ( bp , & ump , (uinttmp)); 3082 bp +( ump ); 3084 ump = ( u_t32_t ) gno ; 3085 `memy ( bp , & ump , (uinttmp)); 3086 bp +( ump ); 3088 ump = ( u_t32_t ) gno ; 3089 `memy ( bp , & ump , (uinttmp)); 3090 bp +( ump ); 3092 `DB_ASSERT ( dbv , 3093 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 3095 i( is_dub || tx = NULL ) { 3096 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 3097 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 3098 * lp = * p ; 3099 i( p ! t_lp ) 3100 * t_lp = * p ; 3103 t = 0; 3104 #ifde DIAGNOSTIC 3109 `memy ( -> da , logc .da,ogc. size ); 3110 y | DB_debug_FLAG ; 3111 `memy ( logc . da , & y , (rectype)); 3113 i(! `IS_REP_CLIENT ( dbv )) 3114 t = `__log_put ( dbv , 3115 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 3117 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 3118 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 3119 `LSN_NOT_LOGGED (* t_lp ); 3122 #ifde LOG_DIAGNOSTIC 3123 i( t != 0) 3124 () `__bam_pgno_t ( dbv , 3125 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 3128 #ifde DIAGNOSTIC 3129 `__os_ ( dbv , logc . da ); 3131 i( is_dub || tx = NULL ) 3132 `__os_ ( dbv , logc . da ); 3134 ( t ); 3135 } } 3141 $__bam_pgno_ad ( dbv , cbuf , g ) 3142 DB_ENV * dbv ; 3143 * cbuf ; 3144 __bam_pgno_gs ** g ; 3146 __bam_pgno_gs * gp ; 3147 u_t32_t ump ; 3148 u_t8_t * bp ; 3149 t ; 3151 i(( t = `__os_mloc ( dbv , 3152 ( __bam_pgno_gs + ( DB_TXN ), & gp )) != 0) 3153 ( t ); 3154 bp = cbuf ; 3155 gp -> tx = ( DB_TXN *)&argp[1]; 3156 `memt ( gp -> tx , 0, ( DB_TXN )); 3158 `memy (& gp -> ty , bp , (argp->type)); 3159 bp +( gp -> ty ); 3161 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 3162 bp +( gp -> tx -> txnid ); 3164 `memy (& gp -> ev_l , bp , ( DB_LSN )); 3165 bp +( DB_LSN ); 3167 `memy (& ump , bp , (uinttmp)); 3168 gp -> feid = ( t32_t ) ump ; 3169 bp +( ump ); 3171 `memy (& ump , bp , (uinttmp)); 3172 gp -> pgno = ( db_pgno_t ) ump ; 3173 bp +( ump ); 3175 `memy (& gp -> l , bp , (argp->lsn)); 3176 bp +( gp -> l ); 3178 `memy (& ump , bp , (uinttmp)); 3179 gp -> dx = ( u_t32_t ) ump ; 3180 bp +( ump ); 3182 `memy (& ump , bp , (uinttmp)); 3183 gp -> gno = ( db_pgno_t ) ump ; 3184 bp +( ump ); 3186 `memy (& ump , bp , (uinttmp)); 3187 gp -> gno = ( db_pgno_t ) ump ; 3188 bp +( ump ); 3190 * g = gp ; 3192 } } 3199 $__bam__cov ( dbv , dbp , dbsiz ) 3200 DB_ENV * dbv ; 3201 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 3202 size_t * dbsiz ; 3204 t ; 3206 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3207 __bam_l_cov , DB___bam_l )) != 0) 3208 ( t ); 3209 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3210 __bam_rl_cov , DB___bam_rl )) != 0) 3211 ( t ); 3212 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3213 __bam_adj_cov , DB___bam_adj )) != 0) 3214 ( t ); 3215 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3216 __bam_dju_cov , DB___bam_dju )) != 0) 3217 ( t ); 3218 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3219 __bam_cd_cov , DB___bam_cd )) != 0) 3220 ( t ); 3221 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3222 __bam__cov , DB___bam_ )) != 0) 3223 ( t ); 3224 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3225 __bam_ro_cov , DB___bam_ro )) != 0) 3226 ( t ); 3227 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3228 __bam_cudj_cov , DB___bam_cudj )) != 0) 3229 ( t ); 3230 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3231 __bam_rcudj_cov , DB___bam_rcudj )) != 0) 3232 ( t ); 3233 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3234 __bam_lk_cov , DB___bam_lk )) != 0) 3235 ( t ); 3236 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3237 __bam_mge_cov , DB___bam_mge )) != 0) 3238 ( t ); 3239 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3240 __bam_pgno_cov , DB___bam_pgno )) != 0) 3241 ( t ); 3243 } } @../btree/btree_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/b.h " 11 ~"dbc/log.h " 12 ~"dbc/txn.h " 19 $__bam_l_t ( dbv , db , lp , nud2 , nud3 ) 20 DB_ENV * dbv ; 21 DBT * db ; 22 DB_LSN * lp ; 23 db_cs nud2 ; 24 * nud3 ; 26 __bam_l_gs * gp ; 27 u_t32_t i ; 28 ch ; 29 t ; 31 nud2 = DB_TXN_PRINT ; 32 nud3 = NULL ; 34 i(( t = `__bam_l_ad ( dbv , db -> da , & gp )) != 0) 35 ( t ); 36 () `tf ( 38 ( u_lg ) lp -> fe , (u_lgp-> offt , 39 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 40 ( u_lg ) gp -> ty , 41 ( u_lg ) gp -> tx -> txnid , 42 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 43 () `tf ("\tfeid: %ld\n", () gp -> feid ); 44 () `tf ("\e: %lu\n", ( u_lg ) gp -> ); 45 () `tf ("\tllsn: [%lu][%lu]\n", 46 ( u_lg ) gp -> . fe , (u_lgrgp->. offt ); 47 () `tf ("\ight: %lu\n", ( u_lg ) gp -> right ); 48 () `tf ("\trlsn: [%lu][%lu]\n", 49 ( u_lg ) gp -> . fe , (u_lgrgp->. offt ); 50 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 51 () `tf ("\pgno: %lu\n", ( u_lg ) gp -> gno ); 52 () `tf ("\tnlsn: [%lu][%lu]\n", 53 ( u_lg ) gp -> Ƣ . fe , (u_lgrgp->Ƣ. offt ); 54 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> ro_pgno ); 55 () `tf ("\tpg: "); 56 i = 0; i < gp -> pg . size ; i++) { 57 ch = (( u_t8_t *) gp -> pg . da )[ i ]; 58 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 60 () `tf ("\n"); 61 () `tf ("\tags: %lu\n", ( u_lg ) gp -> ags ); 62 () `tf ("\n"); 63 `__os_ ( dbv , gp ); 65 } } 72 $__bam_rl_t ( dbv , db , lp , nud2 , nud3 ) 73 DB_ENV * dbv ; 74 DBT * db ; 75 DB_LSN * lp ; 76 db_cs nud2 ; 77 * nud3 ; 79 __bam_rl_gs * gp ; 80 u_t32_t i ; 81 ch ; 82 t ; 84 nud2 = DB_TXN_PRINT ; 85 nud3 = NULL ; 87 i(( t = `__bam_rl_ad ( dbv , db -> da , & gp )) != 0) 88 ( t ); 89 () `tf ( 91 ( u_lg ) lp -> fe , (u_lgp-> offt , 92 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 93 ( u_lg ) gp -> ty , 94 ( u_lg ) gp -> tx -> txnid , 95 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 96 () `tf ("\tfeid: %ld\n", () gp -> feid ); 97 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 98 () `tf ("\tpgdbt: "); 99 i = 0; i < gp -> pgdbt . size ; i++) { 100 ch = (( u_t8_t *) gp -> pgdbt . da )[ i ]; 101 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 103 () `tf ("\n"); 104 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> ro_pgno ); 105 () `tf ("\c: %lu\n", ( u_lg ) gp -> ec ); 106 () `tf ("\trootent: "); 107 i = 0; i < gp -> roْt . size ; i++) { 108 ch = (( u_t8_t *) gp -> roْt . da )[ i ]; 109 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 111 () `tf ("\n"); 112 () `tf ("\trootlsn: [%lu][%lu]\n", 113 ( u_lg ) gp -> rol . fe , (u_lgrgp->rol. offt ); 114 () `tf ("\n"); 115 `__os_ ( dbv , gp ); 117 } } 124 $__bam_adj_t ( dbv , db , lp , nud2 , nud3 ) 125 DB_ENV * dbv ; 126 DBT * db ; 127 DB_LSN * lp ; 128 db_cs nud2 ; 129 * nud3 ; 131 __bam_adj_gs * gp ; 132 t ; 134 nud2 = DB_TXN_PRINT ; 135 nud3 = NULL ; 137 i(( t = `__bam_adj_ad ( dbv , db -> da , & gp )) != 0) 138 ( t ); 139 () `tf ( 141 ( u_lg ) lp -> fe , (u_lgp-> offt , 142 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 143 ( u_lg ) gp -> ty , 144 ( u_lg ) gp -> tx -> txnid , 145 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 146 () `tf ("\tfeid: %ld\n", () gp -> feid ); 147 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 148 () `tf ("\tlsn: [%lu][%lu]\n", 149 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 150 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 151 () `tf ("\tdx_cy: %lu\n", ( u_lg ) gp -> dx_cy ); 152 () `tf ("\tis_: %lu\n", ( u_lg ) gp -> is_ ); 153 () `tf ("\n"); 154 `__os_ ( dbv , gp ); 156 } } 163 $__bam_dju_t ( dbv , db , lp , nud2 , nud3 ) 164 DB_ENV * dbv ; 165 DBT * db ; 166 DB_LSN * lp ; 167 db_cs nud2 ; 168 * nud3 ; 170 __bam_dju_gs * gp ; 171 t ; 173 nud2 = DB_TXN_PRINT ; 174 nud3 = NULL ; 176 i(( t = `__bam_dju_ad ( dbv , db -> da , & gp )) != 0) 177 ( t ); 178 () `tf ( 180 ( u_lg ) lp -> fe , (u_lgp-> offt , 181 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 182 ( u_lg ) gp -> ty , 183 ( u_lg ) gp -> tx -> txnid , 184 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 185 () `tf ("\tfeid: %ld\n", () gp -> feid ); 186 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 187 () `tf ("\tlsn: [%lu][%lu]\n", 188 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 189 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 190 () `tf ("\dju: %ld\n", () gp -> adju ); 191 () `tf ("\tags: %lu\n", ( u_lg ) gp -> ags ); 192 () `tf ("\n"); 193 `__os_ ( dbv , gp ); 195 } } 202 $__bam_cd_t ( dbv , db , lp , nud2 , nud3 ) 203 DB_ENV * dbv ; 204 DBT * db ; 205 DB_LSN * lp ; 206 db_cs nud2 ; 207 * nud3 ; 209 __bam_cd_gs * gp ; 210 t ; 212 nud2 = DB_TXN_PRINT ; 213 nud3 = NULL ; 215 i(( t = `__bam_cd_ad ( dbv , db -> da , & gp )) != 0) 216 ( t ); 217 () `tf ( 219 ( u_lg ) lp -> fe , (u_lgp-> offt , 220 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 221 ( u_lg ) gp -> ty , 222 ( u_lg ) gp -> tx -> txnid , 223 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 224 () `tf ("\tfeid: %ld\n", () gp -> feid ); 225 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 226 () `tf ("\tlsn: [%lu][%lu]\n", 227 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 228 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 229 () `tf ("\n"); 230 `__os_ ( dbv , gp ); 232 } } 239 $__bam__t ( dbv , db , lp , nud2 , nud3 ) 240 DB_ENV * dbv ; 241 DBT * db ; 242 DB_LSN * lp ; 243 db_cs nud2 ; 244 * nud3 ; 246 __bam__gs * gp ; 247 u_t32_t i ; 248 ch ; 249 t ; 251 nud2 = DB_TXN_PRINT ; 252 nud3 = NULL ; 254 i(( t = `__bam__ad ( dbv , db -> da , & gp )) != 0) 255 ( t ); 256 () `tf ( 258 ( u_lg ) lp -> fe , (u_lgp-> offt , 259 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 260 ( u_lg ) gp -> ty , 261 ( u_lg ) gp -> tx -> txnid , 262 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 263 () `tf ("\tfeid: %ld\n", () gp -> feid ); 264 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 265 () `tf ("\tlsn: [%lu][%lu]\n", 266 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 267 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 268 () `tf ("\tisded: %lu\n", ( u_lg ) gp -> isded ); 269 () `tf ("\torig: "); 270 i = 0; i < gp -> ig . size ; i++) { 271 ch = (( u_t8_t *) gp -> ig . da )[ i ]; 272 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 274 () `tf ("\n"); 275 () `tf ("\trepl: "); 276 i = 0; i < gp -> . size ; i++) { 277 ch = (( u_t8_t *) gp -> . da )[ i ]; 278 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 280 () `tf ("\n"); 281 () `tf ("\fix: %lu\n", ( u_lg ) gp -> efix ); 282 () `tf ("\tsuffix: %lu\n", ( u_lg ) gp -> suffix ); 283 () `tf ("\n"); 284 `__os_ ( dbv , gp ); 286 } } 293 $__bam_ro_t ( dbv , db , lp , nud2 , nud3 ) 294 DB_ENV * dbv ; 295 DBT * db ; 296 DB_LSN * lp ; 297 db_cs nud2 ; 298 * nud3 ; 300 __bam_ro_gs * gp ; 301 t ; 303 nud2 = DB_TXN_PRINT ; 304 nud3 = NULL ; 306 i(( t = `__bam_ro_ad ( dbv , db -> da , & gp )) != 0) 307 ( t ); 308 () `tf ( 310 ( u_lg ) lp -> fe , (u_lgp-> offt , 311 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 312 ( u_lg ) gp -> ty , 313 ( u_lg ) gp -> tx -> txnid , 314 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 315 () `tf ("\tfeid: %ld\n", () gp -> feid ); 316 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 317 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> ro_pgno ); 318 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 319 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 320 () `tf ("\n"); 321 `__os_ ( dbv , gp ); 323 } } 330 $__bam_cudj_t ( dbv , db , lp , nud2 , nud3 ) 331 DB_ENV * dbv ; 332 DBT * db ; 333 DB_LSN * lp ; 334 db_cs nud2 ; 335 * nud3 ; 337 __bam_cudj_gs * gp ; 338 t ; 340 nud2 = DB_TXN_PRINT ; 341 nud3 = NULL ; 343 i(( t = `__bam_cudj_ad ( dbv , db -> da , & gp )) != 0) 344 ( t ); 345 () `tf ( 347 ( u_lg ) lp -> fe , (u_lgp-> offt , 348 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 349 ( u_lg ) gp -> ty , 350 ( u_lg ) gp -> tx -> txnid , 351 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 352 () `tf ("\tfeid: %ld\n", () gp -> feid ); 353 () `tf ("\tmode: %ld\n", () gp -> mode ); 354 () `tf ("\tom_pgno: %lu\n", ( u_lg ) gp -> om_pgno ); 355 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> to_pgno ); 356 () `tf ("\e_pgno: %lu\n", ( u_lg ) gp -> _pgno ); 357 () `tf ("\tf_dx: %lu\n", ( u_lg ) gp -> f_dx ); 358 () `tf ("\tom_dx: %lu\n", ( u_lg ) gp -> om_dx ); 359 () `tf ("\o_dx: %lu\n", ( u_lg ) gp -> to_dx ); 360 () `tf ("\n"); 361 `__os_ ( dbv , gp ); 363 } } 370 $__bam_rcudj_t ( dbv , db , lp , nud2 , nud3 ) 371 DB_ENV * dbv ; 372 DBT * db ; 373 DB_LSN * lp ; 374 db_cs nud2 ; 375 * nud3 ; 377 __bam_rcudj_gs * gp ; 378 t ; 380 nud2 = DB_TXN_PRINT ; 381 nud3 = NULL ; 383 i(( t = `__bam_rcudj_ad ( dbv , db -> da , & gp )) != 0) 384 ( t ); 385 () `tf ( 387 ( u_lg ) lp -> fe , (u_lgp-> offt , 388 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 389 ( u_lg ) gp -> ty , 390 ( u_lg ) gp -> tx -> txnid , 391 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 392 () `tf ("\tfeid: %ld\n", () gp -> feid ); 393 () `tf ("\tmode: %ld\n", () gp -> mode ); 394 () `tf ("\o: %ld\n", () gp -> ro ); 395 () `tf ("\eo: %ld\n", () gp -> o ); 396 () `tf ("\td: %lu\n", ( u_lg ) gp -> d ); 397 () `tf ("\n"); 398 `__os_ ( dbv , gp ); 400 } } 407 $__bam_lk_43_t ( dbv , db , lp , nud2 , nud3 ) 408 DB_ENV * dbv ; 409 DBT * db ; 410 DB_LSN * lp ; 411 db_cs nud2 ; 412 * nud3 ; 414 __bam_lk_43_gs * gp ; 415 t ; 417 nud2 = DB_TXN_PRINT ; 418 nud3 = NULL ; 420 i(( t = `__bam_lk_43_ad ( dbv , db -> da , & gp )) != 0) 421 ( t ); 422 () `tf ( 424 ( u_lg ) lp -> fe , (u_lgp-> offt , 425 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 426 ( u_lg ) gp -> ty , 427 ( u_lg ) gp -> tx -> txnid , 428 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 429 () `tf ("\tfeid: %ld\n", () gp -> feid ); 430 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 431 () `tf ("\tlsn: [%lu][%lu]\n", 432 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 433 () `tf ("\v: %lu\n", ( u_lg ) gp -> ev ); 434 () `tf ("\tlsn_prev: [%lu][%lu]\n", 435 ( u_lg ) gp -> l_ev . fe , (u_lgrgp->l_ev. offt ); 436 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 437 () `tf ("\tlsn_next: [%lu][%lu]\n", 438 ( u_lg ) gp -> l_xt . fe , (u_lgrgp->l_xt. offt ); 439 () `tf ("\n"); 440 `__os_ ( dbv , gp ); 442 } } 449 $__bam_lk_t ( dbv , db , lp , nud2 , nud3 ) 450 DB_ENV * dbv ; 451 DBT * db ; 452 DB_LSN * lp ; 453 db_cs nud2 ; 454 * nud3 ; 456 __bam_lk_gs * gp ; 457 t ; 459 nud2 = DB_TXN_PRINT ; 460 nud3 = NULL ; 462 i(( t = `__bam_lk_ad ( dbv , db -> da , & gp )) != 0) 463 ( t ); 464 () `tf ( 466 ( u_lg ) lp -> fe , (u_lgp-> offt , 467 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 468 ( u_lg ) gp -> ty , 469 ( u_lg ) gp -> tx -> txnid , 470 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 471 () `tf ("\tfeid: %ld\n", () gp -> feid ); 472 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 473 () `tf ("\ew_pgno: %lu\n", ( u_lg ) gp -> w_pgno ); 474 () `tf ("\v: %lu\n", ( u_lg ) gp -> ev ); 475 () `tf ("\tlsn_prev: [%lu][%lu]\n", 476 ( u_lg ) gp -> l_ev . fe , (u_lgrgp->l_ev. offt ); 477 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 478 () `tf ("\tlsn_next: [%lu][%lu]\n", 479 ( u_lg ) gp -> l_xt . fe , (u_lgrgp->l_xt. offt ); 480 () `tf ("\n"); 481 `__os_ ( dbv , gp ); 483 } } 490 $__bam_mge_t ( dbv , db , lp , nud2 , nud3 ) 491 DB_ENV * dbv ; 492 DBT * db ; 493 DB_LSN * lp ; 494 db_cs nud2 ; 495 * nud3 ; 497 __bam_mge_gs * gp ; 498 u_t32_t i ; 499 ch ; 500 t ; 502 nud2 = DB_TXN_PRINT ; 503 nud3 = NULL ; 505 i(( t = `__bam_mge_ad ( dbv , db -> da , & gp )) != 0) 506 ( t ); 507 () `tf ( 509 ( u_lg ) lp -> fe , (u_lgp-> offt , 510 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 511 ( u_lg ) gp -> ty , 512 ( u_lg ) gp -> tx -> txnid , 513 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 514 () `tf ("\tfeid: %ld\n", () gp -> feid ); 515 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 516 () `tf ("\tlsn: [%lu][%lu]\n", 517 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 518 () `tf ("\pgno: %lu\n", ( u_lg ) gp -> gno ); 519 () `tf ("\tnlsn: [%lu][%lu]\n", 520 ( u_lg ) gp -> Ƣ . fe , (u_lgrgp->Ƣ. offt ); 521 () `tf ("\thdr: "); 522 i = 0; i < gp -> hdr . size ; i++) { 523 ch = (( u_t8_t *) gp -> hdr . da )[ i ]; 524 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 526 () `tf ("\n"); 527 () `tf ("\tdata: "); 528 i = 0; i < gp -> da . size ; i++) { 529 ch = (( u_t8_t *) gp -> da .da)[ i ]; 530 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 532 () `tf ("\n"); 533 () `tf ("\tind: "); 534 i = 0; i < gp -> d . size ; i++) { 535 ch = (( u_t8_t *) gp -> d . da )[ i ]; 536 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 538 () `tf ("\n"); 539 () `tf ("\n"); 540 `__os_ ( dbv , gp ); 542 } } 549 $__bam_pgno_t ( dbv , db , lp , nud2 , nud3 ) 550 DB_ENV * dbv ; 551 DBT * db ; 552 DB_LSN * lp ; 553 db_cs nud2 ; 554 * nud3 ; 556 __bam_pgno_gs * gp ; 557 t ; 559 nud2 = DB_TXN_PRINT ; 560 nud3 = NULL ; 562 i(( t = `__bam_pgno_ad ( dbv , db -> da , & gp )) != 0) 563 ( t ); 564 () `tf ( 566 ( u_lg ) lp -> fe , (u_lgp-> offt , 567 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 568 ( u_lg ) gp -> ty , 569 ( u_lg ) gp -> tx -> txnid , 570 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 571 () `tf ("\tfeid: %ld\n", () gp -> feid ); 572 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 573 () `tf ("\tlsn: [%lu][%lu]\n", 574 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 575 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 576 () `tf ("\tgno: %lu\n", ( u_lg ) gp -> gno ); 577 () `tf ("\pgno: %lu\n", ( u_lg ) gp -> gno ); 578 () `tf ("\n"); 579 `__os_ ( dbv , gp ); 581 } } 588 $__bam__t ( dbv , dbp , dbsiz ) 589 DB_ENV * dbv ; 590 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 591 size_t * dbsiz ; 593 t ; 595 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 596 __bam_l_t , DB___bam_l )) != 0) 597 ( t ); 598 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 599 __bam_rl_t , DB___bam_rl )) != 0) 600 ( t ); 601 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 602 __bam_adj_t , DB___bam_adj )) != 0) 603 ( t ); 604 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 605 __bam_dju_t , DB___bam_dju )) != 0) 606 ( t ); 607 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 608 __bam_cd_t , DB___bam_cd )) != 0) 609 ( t ); 610 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 611 __bam__t , DB___bam_ )) != 0) 612 ( t ); 613 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 614 __bam_ro_t , DB___bam_ro )) != 0) 615 ( t ); 616 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 617 __bam_cudj_t , DB___bam_cudj )) != 0) 618 ( t ); 619 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 620 __bam_rcudj_t , DB___bam_rcudj )) != 0) 621 ( t ); 622 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 623 __bam_lk_t , DB___bam_lk )) != 0) 624 ( t ); 625 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 626 __bam_mge_t , DB___bam_mge )) != 0) 627 ( t ); 628 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 629 __bam_pgno_t , DB___bam_pgno )) != 0) 630 ( t ); 632 } } @../build_vxworks/db_archive/db_archive.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 db_chive_ma __P ((, *[])); 19 db_chive_uge __P (()); 20 db_chive_vsi_check __P (()); 22 cڡ * gogme ; 25 $db_chive ( gs ) 26 * gs ; 28 gc ; 29 ** gv ; 31 `__db_ut_g ("db_chive", gs , & gc , & gv ); 32 ( `db_chive_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 33 } } 35 ~<dio.h > 36 #ERROR_RETURN ERROR ) 39 $db_chive_ma ( gc , gv ) 40 gc ; 41 * gv []; 43 * ݏrg ; 44 td , __db_gt_t ; 45 DB_ENV * dbv ; 46 u_t32_t ags ; 47 ch , exv , t , vbo ; 48 ** fe , * home , ** li , * sswd ; 50 i(( ogme = `__db_h ( gv [0])= NULL ) 51 ogme = gv [0]; 53 ++ ogme ; 55 i(( t = `db_chive_vsi_check ()) != 0) 56 ( t ); 58 dbv = NULL ; 59 ags = 0; 60 exv = vbo = 0; 61 home = sswd = NULL ; 62 fe = li = NULL ; 63 __db_gt_t = 1; 64 ( ch = `gt ( gc , gv , "adh:lP:sVv")! EOF ) 65 ch ) { 67 `LF_SET ( DB_ARCH_ABS ); 70 `LF_SET ( DB_ARCH_REMOVE ); 73 home = ݏrg ; 76 `LF_SET ( DB_ARCH_LOG ); 79 sswd = `rdup ( ݏrg ); 80 `memt ( ݏrg , 0, ` (optarg)); 81 i( sswd = NULL ) { 82 `rtf ( dr , "%s: strdup: %s\n", 83 ogme , ` ( o )); 84 ( EXIT_FAILURE ); 88 `LF_SET ( DB_ARCH_DATA ); 91 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 92 ( EXIT_SUCCESS ); 100 vbo = 1; 104 ( `db_chive_uge ()); 106 gc - td ; 107 gv + td ; 109 i( gc != 0) 110 ( `db_chive_uge ()); 113 `__db_ut_sig (); 119 i(( t = `db_v_ (& dbv , 0)) != 0) { 120 `rtf ( dr , 121 "%s: db_v_: %s\n", ogme , `db_ ( t )); 122 shutdown ; 125 dbv -> `t_rfe (dbv, dr ); 126 dbv -> `t_fx (dbv, ogme ); 128 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 129 sswd , DB_ENCRYPT_AES )) != 0) { 130 dbv -> `r (dbv, t , "set_passwd"); 131 shutdown ; 137 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 138 ( t = DB_VERSION_MISMATCH || 139 ( t = dbv -> `ݒ (dbv, home , DB_CREATE | 140 DB_INIT_LOG | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 141 dbv -> `r (dbv, t , "DB_ENV->open"); 142 shutdown ; 146 i(( t = dbv -> `log_chive (dbv, & li , ags )) != 0) { 147 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 148 shutdown ; 152 i( li ! NULL ) { 153 fe = li ; *f! NULL ; ++file) 154 `tf ("%s\n", * fe ); 155 ` ( li ); 159 shutdown : exv = 1; 161 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 162 exv = 1; 163 `rtf ( dr , 164 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 167 i( sswd ! NULL ) 168 ` ( sswd ); 171 `__db_ut_signd (); 173 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 174 } } 177 $db_chive_uge () 179 () `rtf ( dr , 180 "uge: %[-adlsVv] [-h home] [-Passwd]\n", ogme ); 181 ( EXIT_FAILURE ); 182 } } 185 $db_chive_vsi_check () 187 v_maj , v_m , v_tch ; 190 () `db_vsi (& v_maj , & v_m , & v_tch ); 191 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 192 `rtf ( dr , 194 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 195 v_maj , v_m ); 196 ( EXIT_FAILURE ); 199 } } @../build_vxworks/db_checkpoint/db_checkpoint.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 db_checkpot_ma __P ((, *[])); 19 db_checkpot_uge __P (()); 20 db_checkpot_vsi_check __P (()); 22 cڡ * gogme ; 25 $db_checkpot ( gs ) 26 * gs ; 28 gc ; 29 ** gv ; 31 `__db_ut_g ("db_checkpot", gs , & gc , & gv ); 32 ( `db_checkpot_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 33 } } 35 ~<dio.h > 36 #ERROR_RETURN ERROR ) 39 $db_checkpot_ma ( gc , gv ) 40 gc ; 41 * gv []; 43 * ݏrg ; 44 td , __db_gt_t ; 45 DB_ENV * dbv ; 46 time_t now ; 47 gv ; 48 u_t32_t ags , kbys , mus , cds ; 49 ch , exv , , t , vbo ; 50 * home , * logfe , * sswd , time_buf [ CTIME_BUFLEN ]; 52 i(( ogme = `__db_h ( gv [0])= NULL ) 53 ogme = gv [0]; 55 ++ ogme ; 57 i(( t = `db_checkpot_vsi_check ()) != 0) 58 ( t ); 65 #MAX_UINT32_T 2147483647 ) 67 dbv = NULL ; 68 kbys = mus = 0; 69 exv = = vbo = 0; 70 ags = 0; 71 home = logfe = sswd = NULL ; 72 __db_gt_t = 1; 73 ( ch = `gt ( gc , gv , "1h:k:L:P:p:Vv")! EOF ) 74 ch ) { 76 = 1; 77 ags = DB_FORCE ; 80 home = ݏrg ; 83 i( `__db_glg ( NULL , ogme , 84 ݏrg , 1, () MAX_UINT32_T , & gv )) 85 ( EXIT_FAILURE ); 86 kbys = ( u_t32_t ) gv ; 89 logfe = ݏrg ; 92 sswd = `rdup ( ݏrg ); 93 `memt ( ݏrg , 0, ` (optarg)); 94 i( sswd = NULL ) { 95 `rtf ( dr , "%s: strdup: %s\n", 96 ogme , ` ( o )); 97 ( EXIT_FAILURE ); 101 i( `__db_glg ( NULL , ogme , 102 ݏrg , 1, () MAX_UINT32_T , & gv )) 103 ( EXIT_FAILURE ); 104 mus = ( u_t32_t ) gv ; 107 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 108 ( EXIT_SUCCESS ); 110 vbo = 1; 114 ( `db_checkpot_uge ()); 116 gc - td ; 117 gv + td ; 119 i( gc != 0) 120 ( `db_checkpot_uge ()); 122 i( =0 && kbys =0 && mus == 0) { 123 () `rtf ( dr , 125 ogme ); 126 ( `db_checkpot_uge ()); 130 `__db_ut_sig (); 133 i( logfe ! NULL && `__db_ut_logt ( ogme ,ogfile)) 134 shutdown ; 140 i(( t = `db_v_ (& dbv , 0)) != 0) { 141 `rtf ( dr , 142 "%s: db_v_: %s\n", ogme , `db_ ( t )); 143 shutdown ; 146 dbv -> `t_rfe (dbv, dr ); 147 dbv -> `t_fx (dbv, ogme ); 149 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 150 sswd , DB_ENCRYPT_AES )) != 0) { 151 dbv -> `r (dbv, t , "set_passwd"); 152 shutdown ; 159 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 160 (! || t = DB_VERSION_MISMATCH || 161 ( t = dbv -> `ݒ (dbv, home , 162 DB_CREATE | DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 163 dbv -> `r (dbv, t , "DB_ENV->open"); 164 shutdown ; 172 cds = kbys !0 ? 30 : mus * 60; 173 ! `__db_ut_ued ()) { 174 i( vbo ) { 175 () `time (& now ); 176 dbv -> `rx (dbenv, 177 "checkpobeg: %s", `__db_ime (& now , time_buf )); 180 i(( t = dbv -> `txn_checkpot (dbenv, 181 kbys , mus , ags )) != 0) { 182 dbv -> `r (dbv, t , "txn_checkpoint"); 183 shutdown ; 186 i( vbo ) { 187 () `time (& now ); 188 dbv -> `rx (dbenv, 189 "checkpocome: %s", `__db_ime (& now , time_buf )); 192 i( ) 195 `__os_p ( dbv , cds , 0); 199 shutdown : exv = 1; 203 i( logfe ! NULL ) 204 () `move ( logfe ); 207 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 208 exv = 1; 209 `rtf ( dr , 210 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 213 i( sswd ! NULL ) 214 ` ( sswd ); 217 `__db_ut_signd (); 219 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 220 } } 223 $db_checkpot_uge () 225 () `rtf ( dr , "uge: %[-1Vv]\n\t%s\n", ogme , 227 ( EXIT_FAILURE ); 228 } } 231 $db_checkpot_vsi_check () 233 v_maj , v_m , v_tch ; 236 () `db_vsi (& v_maj , & v_m , & v_tch ); 237 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 238 `rtf ( dr , 240 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 241 v_maj , v_m ); 242 ( EXIT_FAILURE ); 245 } } @../build_vxworks/db_deadlock/db_deadlock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 db_ddlock_ma __P ((, *[])); 19 db_ddlock_uge __P (()); 20 db_ddlock_vsi_check __P (()); 22 cڡ * gogme ; 25 $db_ddlock ( gs ) 26 * gs ; 28 gc ; 29 ** gv ; 31 `__db_ut_g ("db_ddlock", gs , & gc , & gv ); 32 ( `db_ddlock_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 33 } } 35 ~<dio.h > 36 #ERROR_RETURN ERROR ) 39 $db_ddlock_ma ( gc , gv ) 40 gc ; 41 * gv []; 43 * ݏrg ; 44 td , __db_gt_t ; 45 DB_ENV * dbv ; 46 u_t32_t y ; 47 time_t now ; 48 u_lg cs , ucs ; 49 jeed , ch , exv , t , vbo ; 50 * home , * logfe , * sswd , * r , time_buf [ CTIME_BUFLEN ]; 52 i(( ogme = `__db_h ( gv [0])= NULL ) 53 ogme = gv [0]; 55 ++ ogme ; 57 i(( t = `db_ddlock_vsi_check ()) != 0) 58 ( t ); 60 dbv = NULL ; 61 y = DB_LOCK_DEFAULT ; 62 home = logfe = sswd = NULL ; 63 cs = ucs = 0; 64 exv = vbo = 0; 65 __db_gt_t = 1; 66 ( ch = `gt ( gc , gv , "a:h:L:P:t:Vv")! EOF ) 67 ch ) { 69 ݏrg [0]) { 71 y = DB_LOCK_EXPIRE ; 74 y = DB_LOCK_MAXLOCKS ; 77 y = DB_LOCK_MINLOCKS ; 80 y = DB_LOCK_OLDEST ; 83 y = DB_LOCK_MAXWRITE ; 86 y = DB_LOCK_MINWRITE ; 89 y = DB_LOCK_YOUNGEST ; 92 ( `db_ddlock_uge ()); 95 i( ݏrg [1] != '\0') 96 ( `db_ddlock_uge ()); 99 home = ݏrg ; 102 logfe = ݏrg ; 105 sswd = `rdup ( ݏrg ); 106 `memt ( ݏrg , 0, ` (optarg)); 107 i( sswd = NULL ) { 108 `rtf ( dr , "%s: strdup: %s\n", 109 ogme , ` ( o )); 110 ( EXIT_FAILURE ); 114 i(( r = `rchr ( ݏrg , '.')! NULL ) { 115 * r ++ = '\0'; 116 i(* r !'\0' && `__db_gulg ( 117 NULL , ogme , r , 0, LONG_MAX , & ucs )) 118 ( EXIT_FAILURE ); 120 i(* ݏrg !'\0' && `__db_gulg ( 121 NULL , ogme , ݏrg , 0, LONG_MAX , & cs )) 122 ( EXIT_FAILURE ); 123 i( cs =0 && ucs == 0) 124 ( `db_ddlock_uge ()); 128 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 129 ( EXIT_SUCCESS ); 131 vbo = 1; 135 ( `db_ddlock_uge ()); 137 gc - td ; 138 gv + td ; 140 i( gc != 0) 141 ( `db_ddlock_uge ()); 144 `__db_ut_sig (); 147 i( logfe ! NULL && `__db_ut_logt ( ogme ,ogfile)) 148 shutdown ; 154 i(( t = `db_v_ (& dbv , 0)) != 0) { 155 `rtf ( dr , 156 "%s: db_v_: %s\n", ogme , `db_ ( t )); 157 shutdown ; 160 dbv -> `t_rfe (dbv, dr ); 161 dbv -> `t_fx (dbv, ogme ); 163 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 164 sswd , DB_ENCRYPT_AES )) != 0) { 165 dbv -> `r (dbv, t , "set_passwd"); 166 shutdown ; 169 i( vbo ) { 170 () dbv -> `t_vbo (dbv, DB_VERB_DEADLOCK , 1); 171 () dbv -> `t_vbo (dbv, DB_VERB_WAITSFOR , 1); 175 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0) { 176 dbv -> `r (dbv, t , "open"); 177 shutdown ; 180 ! `__db_ut_ued ()) { 181 i( vbo ) { 182 () `time (& now ); 183 dbv -> `rx (dbenv, 184 "rug%.24s", `__db_ime (& now , time_buf )); 187 i(( t = 188 dbv -> `lock_de (dbv, 0, y , & jeed )) != 0) { 189 dbv -> `r (dbv, t , "DB_ENV->lock_detect"); 190 shutdown ; 192 i( vbo ) 193 dbv -> `rx (dbv, "jeed %docks", jeed ); 196 i( cs =0 && ucs == 0) 198 `__os_p ( dbv , cs , ucs ); 202 shutdown : exv = 1; 206 i( logfe ! NULL ) 207 () `move ( logfe ); 210 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 211 exv = 1; 212 `rtf ( dr , 213 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 216 i( sswd ! NULL ) 217 ` ( sswd ); 220 `__db_ut_signd (); 222 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 223 } } 226 $db_ddlock_uge () 228 () `rtf ( dr , 229 "uge: %[-Vv] [-| m | | o | W | w | y]\n\t%s\n", ogme , 231 ( EXIT_FAILURE ); 232 } } 235 $db_ddlock_vsi_check () 237 v_maj , v_m , v_tch ; 240 () `db_vsi (& v_maj , & v_m , & v_tch ); 241 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 242 `rtf ( dr , 244 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 245 v_maj , v_m ); 246 ( EXIT_FAILURE ); 249 } } @../build_vxworks/db_dump/db_dump.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 15 #ide lt 16 cڡ gcyright [] = 20 db_dump_db_ __P (( DB_ENV *, *, , u_t32_t , *)); 21 db_dump_dump_sub __P (( DB_ENV *, DB *, *, , )); 22 db_dump_ma __P ((, *[])); 23 db_dump_show_subs __P (( DB *)); 24 db_dump_uge __P (()); 25 db_dump_vsi_check __P (()); 27 cڡ * gogme ; 30 $db_dump ( gs ) 31 * gs ; 33 gc ; 34 ** gv ; 36 `__db_ut_g ("db_dump", gs , & gc , & gv ); 37 ( `db_dump_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 38 } } 40 ~<dio.h > 41 #ERROR_RETURN ERROR ) 44 $db_dump_ma ( gc , gv ) 45 gc ; 46 * gv []; 48 * ݏrg ; 49 td , __db_gt_t ; 50 DB_ENV * dbv ; 51 DB * dbp ; 52 u_t32_t che ; 53 ch ; 54 exv , keyag , lag , nag , pag , ive ; 55 t , Rag , rag , size ; 56 * dt , * home , * sswd , * subme ; 58 i(( ogme = `__db_h ( gv [0])= NULL ) 59 ogme = gv [0]; 61 ++ ogme ; 63 i(( t = `db_dump_vsi_check ()) != 0) 64 ( t ); 66 dbv = NULL ; 67 dbp = NULL ; 68 exv = lag = nag = pag = rag = Rag = 0; 69 keyag = 0; 70 che = MEGABYTE ; 71 ive = 0; 72 dt = home = sswd = subme = NULL ; 73 __db_gt_t = 1; 74 ( ch = `gt ( gc , gv , "d:f:h:klNpP:rRs:V")! EOF ) 75 ch ) { 77 dt = ݏrg ; 80 i( `eݒ ( ݏrg , "w", dout = NULL ) { 81 `rtf ( dr , "%s: %s:eopen: %s\n", 82 ogme , ݏrg , ` ( o )); 83 ( EXIT_FAILURE ); 87 home = ݏrg ; 90 keyag = 1; 93 lag = 1; 96 nag = 1; 99 sswd = `rdup ( ݏrg ); 100 `memt ( ݏrg , 0, ` (optarg)); 101 i( sswd = NULL ) { 102 `rtf ( dr , "%s: strdup: %s\n", 103 ogme , ` ( o )); 104 ( EXIT_FAILURE ); 108 pag = 1; 111 subme = ݏrg ; 114 Rag = 1; 118 rag = 1; 121 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 122 ( EXIT_SUCCESS ); 125 ( `db_dump_uge ()); 127 gc - td ; 128 gv + td ; 130 i( gc != 1) 131 ( `db_dump_uge ()); 133 i( dt ! NULL && pag ) { 134 `rtf ( dr , 136 ogme ); 137 ( EXIT_FAILURE ); 139 i( lag && subme ! NULL ) { 140 `rtf ( dr , 142 ogme ); 143 ( EXIT_FAILURE ); 146 i( keyag && rag ) { 147 `rtf ( dr , "%s: %s", 149 ogme ); 150 ( EXIT_FAILURE ); 153 i( subme ! NULL && rag ) { 154 `rtf ( dr , "%s: %s", 156 ogme ); 157 ( EXIT_FAILURE ); 161 `__db_ut_sig (); 167 y : i(( t = `db_v_ (& dbv , 0)) != 0) { 168 `rtf ( dr , 169 "%s: db_v_: %s\n", ogme , `db_ ( t )); 170 r ; 173 dbv -> `t_rfe (dbv, dr ); 174 dbv -> `t_fx (dbv, ogme ); 175 i( nag ) { 176 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 177 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 178 r ; 180 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 181 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 182 r ; 185 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 186 sswd , DB_ENCRYPT_AES )) != 0) { 187 dbv -> `r (dbv, t , "set_passwd"); 188 r ; 192 i( `db_dump_db_ ( dbv , home , rag , che , & ive ) != 0) 193 r ; 196 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 197 dbv -> `r (dbv, t , "db_create"); 198 r ; 205 i( rag ) { 207 t = dbp -> `vify (dbp, gv [0], NULL , dout , 208 DB_SALVAGE | 209 ( Rag ? DB_AGGRESSIVE : 0) | 210 ( pag ? DB_PRINTABLE : 0)); 211 dbp = NULL ; 212 i( t != 0) 213 r ; 214 de ; 217 i(( t = dbp -> `ݒ (dbp, NULL , 218 gv [0], subme , DB_UNKNOWN , DB_RDONLY , 0)) != 0) { 219 dbp -> `r (dbp, t , "ݒ: %s", gv [0]); 220 r ; 222 i( ive != 0) { 223 i(( t = `__db_ut_che ( dbp , & che , & size )) != 0) 224 r ; 225 i( size ) { 226 () dbp -> `o (dbp, 0); 227 dbp = NULL ; 229 () dbv -> `o (dbenv, 0); 230 dbv = NULL ; 231 y ; 235 i( dt ! NULL ) { 236 i(( t = `__db_dume ( dbp , NULL , dt , NULL)) != 0) { 237 dbp -> `r (dbp, t , "__db_dume: %s", gv [0]); 238 r ; 240 } i( lag ) { 241 i( dbp -> `g_muɝ (dbp)) { 242 i( `db_dump_show_subs ( dbp )) 243 r ; 245 dbp -> `rx (dbp, 246 "%s: d۠n cڏ muɝ dabas", gv [0]); 247 r ; 250 i( subme = NULL && dbp -> `g_muɝ (dbp)) { 251 i( `db_dump_dump_sub ( dbv , dbp , gv [0], pag , keyag )) 252 r ; 254 i( dbp -> `dump (dbp, NULL , 255 __db__back , dout , pag , keyag )) 256 r ; 260 r : exv = 1; 262 de : i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 263 exv = 1; 264 dbv -> `r (dbv, t , "close"); 266 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 267 exv = 1; 268 `rtf ( dr , 269 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 272 i( sswd ! NULL ) 273 ` ( sswd ); 276 `__db_ut_signd (); 278 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 279 } } 286 $db_dump_db_ ( dbv , home , is_lvage , che , is_iv ) 287 DB_ENV * dbv ; 288 * home ; 289 is_lvage ; 290 u_t32_t che ; 291 * is_iv ; 293 t ; 313 * is_iv = 0; 314 i(( t = dbv -> `ݒ (dbv, home , 315 DB_USE_ENVIRON | ( is_lvage ? DB_INIT_MPOOL : 0), 0)) == 0) 317 i( t = DB_VERSION_MISMATCH ) 318 r ; 330 * is_iv = 1; 331 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) == 0 && 332 ( t = dbv -> `ݒ (dbv, home , 333 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) == 0) 337 r : dbv -> `r (dbv, t , "DB_ENV->open"); 339 } } 346 $db_dump_dump_sub ( dbv , _dbp , _me , pag , keyag ) 347 DB_ENV * dbv ; 348 DB * _dbp ; 349 * _me ; 350 pag , keyag ; 352 DB * dbp ; 353 DBC * db ; 354 DBT key , da ; 355 t ; 356 * subdb ; 362 i(( t = _dbp -> `curs լt_dbp, NULL , & db , 0)) != 0) { 363 dbv -> `r (dbv, t , "DB->cursor"); 367 `memt (& key , 0, (key)); 368 `memt (& da , 0, (data)); 369 ( t = db -> `g (db, & key , & da , 370 DB_IGNORE_LEASE | DB_NEXT )) == 0) { 372 i(( subdb = `mloc ( key . size + 1)= NULL ) { 373 dbv -> `r (dbv, ENOMEM , NULL ); 376 `memy ( subdb , key . da , key. size ); 377 subdb [ key . size ] = '\0'; 380 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 381 dbv -> `r (dbv, t , "db_create"); 382 ` ( subdb ); 385 i(( t = dbp -> `ݒ (dbp, NULL , 386 _me , subdb , DB_UNKNOWN , DB_RDONLY , 0)) != 0) 387 dbp -> `r (dbp, t , 388 "DB->ݒ: %s:%s", _me , subdb ); 389 i( t =0 && dbp -> `dump ( 390 dbp , subdb , __db__back , dout , pag , keyag )) 391 t = 1; 392 () dbp -> `o (dbp, 0); 393 ` ( subdb ); 394 i( t != 0) 397 i( t ! DB_NOTFOUND ) { 398 _dbp -> `r լt_dbp, t , "DBcursor->get"); 402 i(( t = db -> `o (dbcp)) != 0) { 403 _dbp -> `r լt_dbp, t , "DBcursor->close"); 408 } } 415 $db_dump_show_subs ( dbp ) 416 DB * dbp ; 418 DBC * db ; 419 DBT key , da ; 420 t ; 426 i(( t = dbp -> `curs (dbp, NULL , & db , 0)) != 0) { 427 dbp -> `r (dbp, t , "DB->cursor"); 431 `memt (& key , 0, (key)); 432 `memt (& da , 0, (data)); 433 ( t = db -> `g (db, & key , & da , 434 DB_IGNORE_LEASE | DB_NEXT )) == 0) { 435 i(( t = dbp -> dbv -> `dbt ( 436 & key , 1, NULL , dout , __db__back , 0)) != 0) { 437 dbp -> `rx (dbp, NULL ); 441 i( t ! DB_NOTFOUND ) { 442 dbp -> `r (dbp, t , "DBcursor->get"); 446 i(( t = db -> `o (dbcp)) != 0) { 447 dbp -> `r (dbp, t , "DBcursor->close"); 451 } } 458 $db_dump_uge () 460 () `rtf ( dr , "usage: %s [-klNprRV]\n\t%s\n", 461 ogme , 463 ( EXIT_FAILURE ); 464 } } 467 $db_dump_vsi_check () 469 v_maj , v_m , v_tch ; 472 () `db_vsi (& v_maj , & v_m , & v_tch ); 473 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 474 `rtf ( dr , 476 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 477 v_maj , v_m ); 478 ( EXIT_FAILURE ); 481 } } @../build_vxworks/db_hotbackup/db_hotbackup.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/qam.h " 16 #ide lt 17 cڡ gcyright [] = 21 ewhich_ݒ { mOPEN_ORIGINAL , mOPEN_HOT_BACKUP }; 23 db_hbackup_backup_d_n __P (( DB_ENV *, *, *, *, , )); 24 db_hbackup_da_cy __P (( DB_ENV *, *, *, *, )); 25 db_hbackup_v_ __P (( DB_ENV **, 26 *, **, ***, *, which_ݒ )); 27 db_hbackup_ma __P ((, *[])); 28 db_hbackup_ad_da_d __P (( DB_ENV *, *, *, *, , )); 29 db_hbackup_ad_log_d __P (( DB_ENV *, *, *, *, *, , )); 30 db_hbackup_uge __P (()); 31 db_hbackup_vsi_check __P (()); 33 cڡ * gogme ; 36 $db_hbackup ( gs ) 37 * gs ; 39 gc ; 40 ** gv ; 42 `__db_ut_g ("db_hbackup", gs , & gc , & gv ); 43 ( `db_hbackup_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 44 } } 46 ~<dio.h > 47 #ERROR_RETURN ERROR ) 50 $db_hbackup_ma ( gc , gv ) 51 gc ; 52 * gv []; 54 * ݏrg ; 55 td , __db_gt_t ; 56 time_t now ; 57 DB_ENV * dbv ; 58 u_t da_t , da_xt ; 59 ch , checkpot , cy_m , db_cfig , exv ; 60 move_max , t , upde , vbo ; 61 * backup_d , ** da_d , ** d , * home , * log_d , * sswd ; 62 home_buf [ DB_MAXPATHLEN ], time_buf [ CTIME_BUFLEN ]; 74 `tbuf ( dout , NULL ); 76 i(( ogme = `__db_h ( gv [0])= NULL ) 77 ogme = gv [0]; 79 ++ ogme ; 81 i(( t = `db_hbackup_vsi_check ()) != 0) 82 ( t ); 84 checkpot = db_cfig = da_t = 85 da_xt = exv = upde = vbo = 0; 86 da_d = NULL ; 87 backup_d = home = sswd = NULL ; 88 log_d = NULL ; 89 cy_m = move_max = 0; 90 __db_gt_t = 1; 91 ( ch = `gt ( gc , gv , "b:cDd:h:l:P:uVv")! EOF ) 92 ch ) { 94 backup_d = ݏrg ; 97 checkpot = 1; 100 db_cfig = 1; 107 i( da_d = NULL || da_xt > da_t - 2) { 108 da_t = data_cnt == 0 ? 20 : data_cnt * 2; 109 i(( da_d = `loc (data_dir, 110 da_t * (* da_d ))= NULL ) { 111 `rtf ( dr , "%s: %s\n", 112 ogme , ` ( o )); 113 ( EXIT_FAILURE ); 116 da_d [ da_xt ++] = ݏrg ; 119 home = ݏrg ; 122 log_d = ݏrg ; 125 sswd = `rdup ( ݏrg ); 126 `memt ( ݏrg , 0, ` (optarg)); 127 i( sswd = NULL ) { 128 `rtf ( dr , "%s: strdup: %s\n", 129 ogme , ` ( o )); 130 ( EXIT_FAILURE ); 134 upde = 1; 137 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 138 ( EXIT_SUCCESS ); 140 vbo = 1; 144 ( `db_hbackup_uge ()); 146 gc - td ; 147 gv + td ; 149 i( gc != 0) 150 ( `db_hbackup_uge ()); 153 i( da_d ! NULL ) { 154 da_d [ da_xt ] = NULL ; 159 i( checkpot == 1) { 160 `rtf ( dr , 161 "%s: cn scify -dnd -c\n", ogme ); 162 ( `db_hbackup_uge ()); 166 i( db_cfig && ( da_d ! NULL || log_d != NULL)) { 167 `rtf ( dr , 168 "%s: cn scify -Dnd -d o-l\n", ogme ); 169 ( `db_hbackup_uge ()); 173 `__db_ut_sig (); 182 i( home = NULL ) { 183 home = home_buf ; 184 i(( t = `__os_gv ( 185 NULL , "DB_HOME", & home , ( home_buf ))) != 0) { 186 `rtf ( dr , 188 ogme , `db_ ( t )); 189 ( EXIT_FAILURE ); 195 i( home = NULL ) { 196 `rtf ( dr , 197 "%s:sour dabanvmecifd\n", ogme ); 198 ( `db_hbackup_uge ()); 200 i( backup_d = NULL ) { 201 `rtf ( dr , 202 "%s:؏rg backudey scifd\n", ogme ); 203 ( `db_hbackup_uge ()); 206 i( vbo ) { 207 () `time (& now ); 208 `tf ("%s: hot backup startedt %s", 209 ogme , `__db_ime (& now , time_buf )); 213 i( `db_hbackup_v_ (& dbv , home , 214 ( db_cfig || log_d ! NULL ) ? &log_dir : NULL, 215 db_cfig ? & da_d : NULL , 216 sswd , OPEN_ORIGINAL ) != 0) 217 shutdown ; 219 i( db_cfig && `__os_abh ( log_d )) { 220 `rtf ( dr , 222 ogme ); 223 shutdown ; 230 i( checkpot ) { 231 i( vbo ) 232 `tf ("%s: %s: f checkpot\n", ogme , home ); 233 i(( t = 234 dbv -> `txn_checkpot (dbv, 0, 0, DB_FORCE )) != 0) { 235 dbv -> `r (dbv, t , "DB_ENV->txn_checkpoint"); 236 shutdown ; 238 i(! upde ) { 239 i( vbo ) 240 `tf ("%s: %s:emove unnecessaryog files\n", 241 ogme , home ); 242 i(( t = dbv -> `log_chive (dbenv, 243 NULL , DB_ARCH_REMOVE )) != 0) { 244 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 245 shutdown ; 256 () `__os_mkd ( NULL , backup_d , `__db_omode ("rwx------")); 267 i( db_cfig && log_d ! NULL && 268 `db_hbackup_backup_d_n ( 269 dbv , backup_d , log_d , & move_max , upde , vbo ) != 0) 270 shutdown ; 271 i( `db_hbackup_backup_d_n ( dbv , 272 backup_d , NULL , & move_max , upde , vbo ) != 0) 273 shutdown ; 280 i(! upde ) { 281 i( `db_hbackup_ad_da_d ( dbv , home , 282 backup_d , home , vbo , db_cfig ) != 0) 283 shutdown ; 284 i( da_d ! NULL ) 285 d = da_d ; *d ! NULL ; ++dir) { 291 i( db_cfig && `__os_abh (* d )) { 292 `rtf ( dr , 294 ogme , * d ); 295 shutdown ; 297 i( `db_hbackup_ad_da_d ( dbv , home , 298 backup_d , * d , vbo , db_cfig ) != 0) 299 shutdown ; 310 i( `db_hbackup_ad_log_d ( dbv , db_cfig ? home : NULL , backup_d , 311 log_d = NULL ? home :og_d, & cy_m , upde , vbo ) != 0) 312 shutdown ; 320 i( upde && move_max < cy_m && 321 !( move_max =0 && cy_m == 1)) { 322 `rtf ( dr , 324 ogme , move_max ); 325 `rtf ( dr , 327 ogme , cy_m ); 328 shutdown ; 332 i(( t = dbv -> `o (dbenv, 0)) != 0) { 333 `rtf ( dr , 334 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 335 dbv = NULL ; 336 shutdown ; 339 i( vbo ) 340 `tf ("%s: %s:un catastrophicecovery\n", 341 ogme , backup_d ); 342 i( `db_hbackup_v_ ( 343 & dbv , backup_d , NULL , NULL, sswd , OPEN_HOT_BACKUP ) != 0) 344 shutdown ; 349 i( vbo ) 350 `tf ("%s: %s:emove unnecessaryog files\n", 351 ogme , backup_d ); 352 i(( t = 353 dbv -> `log_chive (dbv, NULL , DB_ARCH_REMOVE )) != 0) { 354 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 355 shutdown ; 359 shutdown : exv = 1; 361 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 362 exv = 1; 363 `rtf ( dr , 364 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 367 i( exv == 0) { 368 i( vbo ) { 369 () `time (& now ); 370 `tf ("%s: hot backup completedt %s", 371 ogme , `__db_ime (& now , time_buf )); 374 `rtf ( dr , "%s: HOT BACKUP FAILED!\n", ogme ); 378 `__db_ut_signd (); 380 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 382 } } 389 $db_hbackup_v_ ( dbvp , home , log_dp , da_dp , sswd , which ) 390 DB_ENV ** dbvp ; 391 * home , ** log_dp , *** da_dp , * sswd ; 392 which_ݒ which ; 394 DB_ENV * dbv ; 395 t ; 397 * dbvp = NULL ; 402 i(( t = `db_v_ (& dbv , 0)) != 0) { 403 `rtf ( dr , 404 "%s: db_v_: %s\n", ogme , `db_ ( t )); 408 dbv -> `t_rfe (dbv, dr ); 409 `tbuf ( dr , NULL ); 410 dbv -> `t_fx (dbv, ogme ); 416 i( log_dp ! NULL && *log_dirp != NULL && 417 ( t = dbv -> `t_lg_d (dbv, * log_dp )) != 0) { 418 dbv -> `r (dbv, t , "DB_ENV->t_lg_d: %s", * log_dp ); 423 i( sswd ! NULL && 424 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 425 dbv -> `r (dbv, t , "DB_ENV->set_encrypt"); 429 which ) { 430 OPEN_ORIGINAL : 436 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 437 ( t = DB_VERSION_MISMATCH || 438 ( t = dbv -> `ݒ (dbv, home , DB_CREATE | 439 DB_INIT_LOG | DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON , 441 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 444 i( log_dp ! NULL && *log_dirp == NULL) 445 () dbv -> `g_lg_d (dbv, (cڡ **) log_dp ); 446 i( da_dp ! NULL && *data_dirp == NULL) 447 () dbv -> `g_da_ds ( 448 dbv , (cڡ ***) da_dp ); 450 OPEN_HOT_BACKUP : 457 i(( t = 458 dbv -> `t_chesize (dbenv, 0, 64 * 1024 * 10, 0)) != 0) { 459 dbv -> `r (dbenv, 460 t , "DB_ENV->t_chesize: %s", home ); 463 i(( t = dbv -> `ݒ (dbv, home , DB_CREATE | 464 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE | 465 DB_RECOVER_FATAL | DB_USE_ENVIRON , 0)) != 0) { 466 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 472 * dbvp = dbv ; 474 } } 481 $db_hbackup_backup_d_n ( dbv , backup_d , log_d , move_maxp , upde , vbo ) 482 DB_ENV * dbv ; 483 * backup_d , * log_d ; 484 * move_maxp , upde , vbo ; 486 t , ft , t , v ; 487 ** mes , * d , buf [ DB_MAXPATHLEN ], th [DB_MAXPATHLEN]; 490 i( log_d ! NULL ) { 491 i(( size_t ) `tf ( buf , (buf), "%s%c%s", 492 backup_d , PATH_SEPARATOR [0] , log_d >( buf )) { 493 dbv -> `rx (dbenv, "%s%c%s:athooong", 494 backup_d , PATH_SEPARATOR [0] , log_d ); 497 d = buf ; 499 d = backup_d ; 502 i(( t = `__os_dli ( dbv , d , & mes , & ft )) != 0) { 503 i( log_d ! NULL && ! upde ) 505 dbv -> `r (dbv, t , "%s: deyd", d ); 508 t = ft ; --cnt >= 0;) { 512 i( `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) { 513 i( upde ) 517 v = `oi ( mes [ t ] + ( LFPREFIX ) - 1); 518 i(* move_maxp < v ) 519 * move_maxp = v ; 521 i(( size_t ) `tf ( th , (path), "%s%c%s", 522 d , PATH_SEPARATOR [0], mes [ t ]>( th )) { 523 dbv -> `rx (dbenv, "%s%c%s:athooong", 524 d , PATH_SEPARATOR [0], mes [ t ]); 527 i( vbo ) 528 `tf ("%s:emovg %s\n", ogme , th ); 529 i( `__os_uƚk ( dbv , th ) != 0) 533 `__os_d ( dbv , mes , ft ); 535 i( vbo && * move_maxp != 0) 536 `tf ("%s: highestumberedog fileemoved: %d\n", 537 ogme , * move_maxp ); 540 } } 547 $db_hbackup_ad_da_d ( dbv , home , backup_d , d , vbo , db_cfig ) 548 DB_ENV * dbv ; 549 * home , * backup_d , * d ; 550 vbo , db_cfig ; 552 t , ft , t ; 553 * bd , ** mes ; 554 buf [ DB_MAXPATHLEN ], bbuf [DB_MAXPATHLEN]; 556 bd = backup_d ; 557 i( db_cfig && d ! home ) { 559 i(( size_t )( t = `tf ( bbuf , (bbuf), "%s%c%s%c", 560 backup_d , PATH_SEPARATOR [0], 561 d , PATH_SEPARATOR [0])>( buf )) { 562 dbv -> `rx (dbenv, "%s%c%s:athooong", 563 backup_d , PATH_SEPARATOR [0], d ); 566 bd = bbuf ; 569 i(( t = dbv -> `t_rmed_d ( 570 dbv , `__db_omode ("rwx------"), 0)) != 0 || 571 ( t = `__db_mkth ( dbv , bd )) != 0) { 572 dbv -> `r (dbv, t , "%s: cn ce", bd ); 576 bd [ t - 1] = '\0'; 579 i(( size_t ) `tf ( buf , (buf), 580 "%s%c%s", home , PATH_SEPARATOR [0], d >( buf )) { 581 dbv -> `rx (dbenv, "%s%c%s:athooong", 582 home , PATH_SEPARATOR [0], d ); 585 d = buf ; 588 i(( t = `__os_dli ( dbv , d , & mes , & ft )) != 0) { 589 dbv -> `r (dbv, t , "%s: deyd", d ); 592 t = ft ; --cnt >= 0;) { 597 i(! `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) 599 i(! `cmp ( mes [ t ], 600 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1) && 601 `cmp ( mes [ t ], 602 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX) - 1)) 608 i(! db_cfig && 609 ! `cmp ( mes [ t ], "DB_CONFIG", ("DB_CONFIG"))) 613 i( `db_hbackup_da_cy ( dbv , mes [ t ], d , bd , vbo ) != 0) 617 `__os_d ( dbv , mes , ft ); 620 } } 629 $db_hbackup_ad_log_d ( dbv , home , backup_d , log_d , cy_mp , upde , vbo ) 630 DB_ENV * dbv ; 631 * home , * backup_d , * log_d ; 632 * cy_mp , upde , vbo ; 634 u_t32_t aag ; 635 t , t , v ; 636 ** beg , ** mes , * backupd , * logd ; 637 om [ DB_MAXPATHLEN ], to [DB_MAXPATHLEN]; 639 i( home ! NULL && log_d != NULL) { 640 i(( size_t ) `tf ( om , (from), "%s%c%s", 641 home , PATH_SEPARATOR [0], log_d >( om )) { 642 dbv -> `rx (dbenv, "%s%c%s:athooong", 643 home , PATH_SEPARATOR [0], log_d ); 646 logd = `rdup ( om ); 647 i(( size_t )( t = `tf ( to , (to), 648 "%s%c%s%c", backup_d , PATH_SEPARATOR [0], 649 log_d , PATH_SEPARATOR [0])>( to )) { 650 dbv -> `rx (dbenv, "%s%c%s:athooong", 651 backup_d , PATH_SEPARATOR [0], log_d ); 654 backupd = `rdup ( to ); 657 i(( t = dbv -> `t_rmed_d ( 658 dbv , `__db_omode ("rwx------"), 0)) != 0 || 659 ( t = `__db_mkth ( dbv , backupd )) != 0) { 660 dbv -> `r (dbv, t , "%s: cn ce", backupd ); 664 backupd [ t - 1] = '\0'; 666 backupd = backup_d ; 667 logd = log_d ; 670 aga : aag = DB_ARCH_LOG ; 676 i( upde ) 677 aag = 0; 679 i(( t = dbv -> `log_chive (dbv, & mes , aag )) != 0) { 680 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 683 i( mes = NULL ) 684 de ; 685 beg = mes ; 686 ; * mes ! NULL ;ames++) { 688 v = `oi (* mes + ( LFPREFIX ) - 1); 689 i(* cy_mp =0 || *cy_m> v ) 690 * cy_mp = v ; 692 i(( size_t ) `tf ( om , (from), "%s%c%s", 693 logd , PATH_SEPARATOR [0], * mes >( om )) { 694 dbv -> `rx (dbenv, "%s%c%s:athooong", 695 logd , PATH_SEPARATOR [0], * mes ); 707 i( upde ) { 708 i(( size_t ) `tf ( to , (to), "%s%c%s", 709 backupd , PATH_SEPARATOR [0], * mes >( to )) { 710 dbv -> `rx (dbenv, "%s%c%s:athooong", 711 backupd , PATH_SEPARATOR [0], * mes ); 714 i( `__os_me ( dbv , om , to , 1) == 0) { 715 i( vbo ) 716 `tf ("%s: moving %so %s\n", 717 ogme , om , to ); 723 i( `db_hbackup_da_cy ( dbv , * mes , logd , backupd , vbo ) != 0) 726 i( upde ) { 727 i( vbo ) 728 `tf ("%s:emovg %s\n", ogme , om ); 729 i(( t = `__os_uƚk ( dbv , om )) != 0) { 730 dbv -> `r (dbv, t , 731 "uƚk o%ed", om ); 738 ` ( beg ); 739 de : i( upde ) { 740 upde = 0; 741 aga ; 744 i( vbo && * cy_mp != 0) 745 `tf ("%s:owestumberedog file copied: %d\n", 746 ogme , * cy_mp ); 747 i( logd ! log_d ) 748 ` ( logd ); 749 i( backupd ! backup_d ) 750 ` ( backupd ); 753 } } 760 $db_hbackup_da_cy ( dbv , fe , om_d , to_d , vbo ) 761 DB_ENV * dbv ; 762 * fe , * om_d , * to_d ; 763 vbo ; 765 DB_FH * rfhp , * wfhp ; 766 size_t , nw ; 767 t ; 768 * buf ; 770 t = 0; 771 rfhp = wfhp = NULL ; 773 i( vbo ) 774 `tf ("%s: cyg %s%c%t%s%c%s\n", ogme , om_d , 775 PATH_SEPARATOR [0], fe , to_d , PATH_SEPARATOR[0], file); 787 i(( buf = `mloc ( MEGABYTE )= NULL ) { 788 dbv -> `r (dbenv, 789 o , "%lu buf㸮loti", ( u_lg ) MEGABYTE ); 794 i( `tf ( buf , MEGABYTE , "%s%c%s", 795 om_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 796 dbv -> `rx (dbenv, 797 "%s%c%s:holg", om_d , PATH_SEPARATOR [0], fe ); 798 r ; 800 i(( t = `__os_ݒ ( dbv , buf , 0, DB_OSO_RDONLY , 0, & rfhp )) != 0) { 801 dbv -> `r (dbv, t , "%s", buf ); 802 r ; 806 i( `tf ( buf , MEGABYTE , "%s%c%s", 807 to_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 808 dbv -> `rx (dbenv, 809 "%s%c%s:holg", to_d , PATH_SEPARATOR [0], fe ); 810 r ; 812 i(( t = `__os_ݒ ( dbv , buf , 0, 813 DB_OSO_CREATE | DB_OSO_TRUNC , `__db_omode ( OWNER_RW ), & wfhp )) != 0) { 814 dbv -> `r (dbv, t , "%s", buf ); 815 r ; 819 ( t = `__os_ad ( dbv , rfhp , buf , MEGABYTE , & )) == 0 && 820 > 0) 821 i(( t = `__os_wre ( dbv , wfhp , buf , , & nw )) != 0) 825 r : t = 1; 827 i( buf ! NULL ) 828 ` ( buf ); 830 i( rfhp ! NULL && `__os_ohd ( dbv ,fhp) != 0) 831 t = 1; 834 i( wfhp ! NULL ) { 835 i( `__os_fsync ( dbv , wfhp ) != 0) 836 t = 1; 837 i( `__os_ohd ( dbv , wfhp ) != 0) 838 t = 1; 840 ( t ); 841 } } 844 $db_hbackup_uge () 846 () `rtf ( dr , "uge: %[-cDuVv]\n\t%s\n", ogme , 848 ( EXIT_FAILURE ); 849 } } 852 $db_hbackup_vsi_check () 854 v_maj , v_m , v_tch ; 857 () `db_vsi (& v_maj , & v_m , & v_tch ); 858 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 859 `rtf ( dr , 861 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 862 v_maj , v_m ); 863 ( EXIT_FAILURE ); 866 } } @../build_vxworks/db_load/db_load.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 15 #ide lt 16 cڡ gcyright [] = 21 cڡ * mogme ; 22 * mhdrbuf ; 23 u_lg mlo ; 24 u_lg migle ; 25 mdoda ; 26 mdofe ; 27 mvsi ; 28 * mhome ; 29 * msswd ; 30 mive ; 31 u_t32_t mche ; 32 } tLDG ; 34 db_ld_badd __P (( DB_ENV *)); 35 db_ld_badnum __P (( DB_ENV *)); 36 db_ld_cfigu __P (( DB_ENV *, DB *, **, **, *)); 37 db_ld_cvb __P (( DB_ENV *, *, **)); 38 db_ld_db_ __P (( DB_ENV *, *, u_t32_t , *)); 39 db_ld_dbt_rdump __P (( DB_ENV *, DBT *)); 40 db_ld_dbt_rt __P (( DB_ENV *, DBT *)); 41 db_ld_dbt_eo __P (( DB_ENV *, DBT *, )); 42 db_ld_dbt_to_o __P (( DB_ENV *, DBT *, db_o_t *)); 43 db_ld_v_ __P (( DB_ENV **, LDG *)); 44 db_ld_ld __P (( DB_ENV *, *, DBTYPE , **, u_t , LDG *, *)); 45 db_ld_ma __P ((, *[])); 46 db_ld_rhd __P (( DB_ENV *, DB *, DBTYPE *, **, *, *)); 47 db_ld_uge __P (()); 48 db_ld_vsi_check __P (()); 50 cڡ * gogme ; 52 #G ( f (( LDG *) dbv -> p_ive )-> ) f 55 #LDF_NOHEADER 0x01 ) 56 #LDF_NOOVERWRITE 0x02 ) 57 #LDF_PASSWORD 0x04 ) 60 $db_ld ( gs ) 61 * gs ; 63 gc ; 64 ** gv ; 66 `__db_ut_g ("db_ld", gs , & gc , & gv ); 67 ( `db_ld_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 68 } } 70 ~<dio.h > 71 #ERROR_RETURN ERROR ) 74 $db_ld_ma ( gc , gv ) 75 gc ; 76 * gv []; 78 um { NOTSET , FILEID_RESET , LSN_RESET , STANDARD_LOAD } mode ; 79 * ݏrg ; 80 td , __db_gt_t ; 81 DBTYPE dbty ; 82 DB_ENV * dbv ; 83 LDG ldg ; 84 u_t ldf ; 85 ch , exied , exv , t ; 86 ** i , ** p ; 88 i(( ogme = `__db_h ( gv [0])= NULL ) 89 ogme = gv [0]; 91 ++ ogme ; 93 i(( t = `db_ld_vsi_check ()) != 0) 94 ( t ); 96 ldg . ogme =rogname; 97 ldg . lo = 0; 98 ldg . doda =dg. dofe = 0; 99 ldg . vsi = 1; 100 ldg . che = MEGABYTE ; 101 ldg . hdrbuf = NULL ; 102 ldg . home = NULL ; 103 ldg . sswd = NULL ; 105 mode = NOTSET ; 106 ldf = 0; 107 exv = exied = 0; 108 dbty = DB_UNKNOWN ; 111 i(( p = i = 112 (**) `oc (( size_t ) gc + 1, (*))= NULL ) { 113 `rtf ( dr , "%s: %s\n", ldg . ogme , ` ( ENOMEM )); 114 ( EXIT_FAILURE ); 124 __db_gt_t = 1; 125 ( ch = `gt ( gc , gv , "c:f:h:nP:r:Tt:V")! EOF ) 126 ch ) { 128 i( mode ! NOTSET && mod! STANDARD_LOAD ) 129 ( `db_ld_uge ()); 130 mode = STANDARD_LOAD ; 132 * p ++ = ݏrg ; 135 i( mode ! NOTSET && mod! STANDARD_LOAD ) 136 ( `db_ld_uge ()); 137 mode = STANDARD_LOAD ; 139 i( `eݒ ( ݏrg , "r", d = NULL ) { 140 `rtf ( dr , "%s: %s:eopen: %s\n", 141 ldg . ogme , ݏrg , ` ( o )); 142 ( EXIT_FAILURE ); 146 ldg . home = ݏrg ; 149 i( mode ! NOTSET && mod! STANDARD_LOAD ) 150 ( `db_ld_uge ()); 151 mode = STANDARD_LOAD ; 153 ldf | LDF_NOOVERWRITE ; 156 ldg . sswd = `rdup ( ݏrg ); 157 `memt ( ݏrg , 0, ` (optarg)); 158 i( ldg . sswd = NULL ) { 159 `rtf ( dr , "%s: strdup: %s\n", 160 ldg . ogme , ` ( o )); 161 ( EXIT_FAILURE ); 163 ldf | LDF_PASSWORD ; 166 i( mode = STANDARD_LOAD ) 167 ( `db_ld_uge ()); 168 i( `rcmp ( ݏrg , "lsn") == 0) 169 mode = LSN_RESET ; 170 i( `rcmp ( ݏrg , "fileid") == 0) 171 mode = FILEID_RESET ; 173 ( `db_ld_uge ()); 176 i( mode ! NOTSET && mod! STANDARD_LOAD ) 177 ( `db_ld_uge ()); 178 mode = STANDARD_LOAD ; 180 ldf | LDF_NOHEADER ; 183 i( mode ! NOTSET && mod! STANDARD_LOAD ) 184 ( `db_ld_uge ()); 185 mode = STANDARD_LOAD ; 187 i( `rcmp ( ݏrg , "btree") == 0) { 188 dbty = DB_BTREE ; 191 i( `rcmp ( ݏrg , "hash") == 0) { 192 dbty = DB_HASH ; 195 i( `rcmp ( ݏrg , "recno") == 0) { 196 dbty = DB_RECNO ; 199 i( `rcmp ( ݏrg , "queue") == 0) { 200 dbty = DB_QUEUE ; 203 ( `db_ld_uge ()); 205 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 206 ( EXIT_SUCCESS ); 209 ( `db_ld_uge ()); 211 gc - td ; 212 gv + td ; 214 i( gc != 1) 215 ( `db_ld_uge ()); 218 `__db_ut_sig (); 224 i( `db_ld_v_ (& dbv , & ldg ) != 0) 225 shutdown ; 228 mode ) { 229 FILEID_RESET : 230 exv = dbv -> `feid_t ( 231 dbv , gv [0], ldf & LDF_PASSWORD ? DB_ENCRYPT : 0); 233 LSN_RESET : 234 exv = dbv -> `l_t ( 235 dbv , gv [0], ldf & LDF_PASSWORD ? DB_ENCRYPT : 0); 237 NOTSET : 238 STANDARD_LOAD : 239 ! ldg . dofe ) 240 i( `db_ld_ld ( dbv , gv [0], dbty , i , ldf , 241 & ldg , & exied ) != 0) 242 shutdown ; 247 shutdown : exv = 1; 249 i(( t = dbv -> `o (dbenv, 0)) != 0) { 250 exv = 1; 251 `rtf ( dr , 252 "%s: dbv->o: %s\n", ldg . ogme , `db_ ( t )); 256 `__db_ut_signd (); 257 ` ( i ); 258 i( ldg . sswd ! NULL ) 259 ` ( ldg . sswd ); 268 ( exv =0 ? ( exied == 0 ? 0 : 1) : 2); 269 } } 276 $db_ld_ld ( dbv , me , gty , i , ags , ldg , exiedp ) 277 DB_ENV * dbv ; 278 * me , ** i ; 279 DBTYPE gty ; 280 u_t ags ; 281 LDG * ldg ; 282 * exiedp ; 284 DB * dbp ; 285 DBT key , rkey , da , * adp , * wr ; 286 DBTYPE dbty ; 287 DB_TXN * xn , * txn ; 288 db_o_t o , deo ; 289 u_t32_t put_ags ; 290 ascii_o , checkt , hexkeys , keyag , keys , size , t , rv ; 291 * subdb ; 293 put_ags = `LF_ISSET ( LDF_NOOVERWRITE ? DB_NOOVERWRITE : 0; 294 `G ( doda ) = 0; 296 subdb = NULL ; 297 xn = txn = NULL ; 298 `memt (& key , 0, ( DBT )); 299 `memt (& da , 0, ( DBT )); 300 `memt (& rkey , 0, ( DBT )); 302 y_db : 303 dbty = DB_UNKNOWN ; 304 keys = -1; 305 hexkeys = -1; 306 keyag = -1; 309 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 310 dbv -> `r (dbv, t , "db_create"); 311 r ; 315 i( `LF_ISSET ( LDF_NOHEADER )) { 316 checkt = 1; 317 dbty = gty ; 319 i( `db_ld_rhd ( dbv , 320 dbp , & dbty , & subdb , & checkt , & keys ) != 0) 321 r ; 322 i( `G ( dofe )) 323 de ; 331 i( `db_ld_cfigu ( dbv , dbp , i , & subdb , & keyag )) 332 r ; 334 i( keys != 1) { 335 i( keyag == 1) { 336 dbp -> `r (dbp, EINVAL , "No keys specified in file"); 337 r ; 340 i( keyag == 0) { 341 dbp -> `r (dbp, EINVAL , "Keys specified in file"); 342 r ; 345 keyag = 1; 347 i( dbty = DB_BTREE || dbty = DB_HASH ) { 348 i( keyag == 0) 349 dbp -> `r (dbp, 350 EINVAL , "Btreend Hash must specify keys"); 352 keyag = 1; 355 i( gty ! DB_UNKNOWN ) { 357 i( dbty = DB_RECNO || dbty = DB_QUEUE ) 358 i( keyag !1 && gty ! DB_RECNO && 359 gty ! DB_QUEUE ) { 360 dbv -> `rx (dbenv, 362 r ; 364 dbty = gty ; 367 i( dbty = DB_UNKNOWN ) { 368 dbv -> `rx (dbenv, "no databaseype specified"); 369 r ; 372 i( keyag == -1) 373 keyag = 0; 383 hexkeys = ( `G ( vsi >3 && keyag =1 && checkt == 0); 385 i( keyag =1 && ( dbty = DB_RECNO || dbty = DB_QUEUE )) 386 ascii_o = 1; 388 ascii_o = 0; 391 i( `LF_ISSET ( LDF_PASSWORD ) && 392 ( t = dbp -> `t_ags (dbp, DB_ENCRYPT )) != 0) { 393 dbp -> `r (dbp, t , "DB->set_flags: DB_ENCRYPT"); 394 r ; 398 S iti - ecific b comris hash funis he . 399 F exame : 401 i(( t = dbp -> `t_bt_com (dbp, lol_comris_func )) != 0) { 402 dbp -> `r (dbp, t , "DB->set_bt_compare"); 403 r ; 405 i(( t = dbp -> `t_h_hash (dbp, lol_hash_func )) != 0) { 406 dbp -> `r (dbp, t , "DB->set_h_hash"); 407 r ; 412 i(( t = dbp -> `ݒ (dbp, NULL , me , subdb , dbty , 413 DB_CREATE | ( `TXN_ON ( dbv ? DB_AUTO_COMMIT : 0), 414 `__db_omode ("rw-rw-rw-"))) != 0) { 415 dbp -> `r (dbp, t , "DB->ݒ: %s", me ); 416 r ; 418 i( ldg -> ive != 0) { 419 i(( t = `__db_ut_che ( dbp , & ldg -> che , & size )) != 0) 420 r ; 421 i( size ) { 422 i(( t = dbp -> `o (dbp, 0)) != 0) 423 r ; 424 dbp = NULL ; 425 i(( t = dbv -> `o (dbenv, 0)) != 0) 426 r ; 427 i(( t = `db_ld_v_ (& dbv , ldg )) != 0) 428 r ; 429 y_db ; 434 adp = wr = & key ; 435 i( dbty = DB_RECNO || dbty = DB_QUEUE ) { 436 key . size = ( o ); 437 i( keyag ) { 438 key . da = & deo ; 439 i( checkt ) { 440 adp = & rkey ; 441 key_da ; 444 key . da = & o ; 446 key_da : i(( adp -> da = `mloc ԗdp-> un = 1024)= NULL ) { 447 dbv -> `r (dbv, ENOMEM , NULL ); 448 r ; 450 i(( da .d `mloc (da. un = 1024)= NULL ) { 451 dbv -> `r (dbv, ENOMEM , NULL ); 452 r ; 455 i( `TXN_ON ( dbv ) && 456 ( t = dbv -> `txn_beg (dbv, NULL , & txn , 0)) != 0) 457 r ; 460 o = 1; ! `__db_ut_ued (); ++recno) { 461 i(! keyag ) { 462 i( checkt ) { 463 i( `db_ld_dbt_rt ( dbv , & da )) 464 r ; 466 i( `db_ld_dbt_rdump ( dbv , & da )) 467 r ; 470 i( checkt ) { 471 i( `db_ld_dbt_rt ( dbv , adp )) 472 r ; 473 i( ascii_o && 474 `db_ld_dbt_to_o ( dbv , adp , & deo ) != 0) 475 r ; 477 i(! `G ( doda && `db_ld_dbt_rt ( dbv , & da )) 478 odd_cou ; 480 i( ascii_o ) { 481 i( `db_ld_dbt_eo ( dbv , adp , hexkeys )) 482 r ; 484 i( `db_ld_dbt_rdump ( dbv , adp )) 485 r ; 487 i(! `G ( doda && `db_ld_dbt_rdump ( dbv , & da )) { 488 odd_cou : dbv -> `rx (dbenv, 490 r ; 494 i( `G ( doda )) 496 y : i( txn ! NULL ) 497 i(( t = dbv -> `txn_beg (dbv, txn , & xn , 0)) != 0) 498 r ; 499 t = dbp -> `put (dbp, xn , wr , & da , put_ags )) { 501 i( xn ! NULL ) { 502 i(( t = 503 xn -> `comm (xn, DB_TXN_NOSYNC )) != 0) 504 r ; 505 xn = NULL ; 508 DB_KEYEXIST : 509 * exiedp = 1; 510 dbv -> `rx (dbenv, 512 me , 513 ! keyag ? o :ecno * 2 - 1); 515 () dbv -> `dbt (& key , 516 checkt , 0, dr , __db__back , 0); 518 DB_LOCK_DEADLOCK : 520 i( xn ! NULL ) { 521 i(( t = xn -> `abt (ctxn)) != 0) 522 r ; 523 xn = NULL ; 524 y ; 528 dbv -> `r (dbv, t , NULL ); 529 i( xn ! NULL ) { 530 () xn -> `abt (ctxn); 531 xn = NULL ; 533 r ; 535 i( xn ! NULL ) { 536 i(( t = xn -> `abt (ctxn)) != 0) 537 r ; 538 xn = NULL ; 541 de : rv = 0; 542 `DB_ASSERT ( dbv , xn = NULL ); 543 i( txn ! NULL && ( t =xn-> `comm (txn, 0)) != 0) { 544 txn = NULL ; 545 r ; 549 r : rv = 1; 550 `DB_ASSERT ( dbv , xn = NULL ); 551 i( txn ! NULL ) 552 () txn -> `abt (txn); 556 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 557 dbv -> `r (dbv, t , "DB->close"); 558 rv = 1; 561 i( `G ( hdrbuf ! NULL ) 562 ` ( `G ( hdrbuf )); 563 `G ( hdrbuf NULL ; 565 i( subdb ! NULL ) 566 ` ( subdb ); 567 i( dbty ! DB_RECNO && dbty ! DB_QUEUE && key . da ! NULL ) 568 ` ( key . da ); 569 i( rkey . da ! NULL ) 570 ` ( rkey . da ); 571 ` ( da .data); 573 ( rv ); 574 } } 581 $db_ld_v_ ( dbvp , ldg ) 582 DB_ENV ** dbvp ; 583 LDG * ldg ; 585 DB_ENV * dbv ; 586 t ; 588 i(( t = `db_v_ ( dbvp , 0)) != 0) { 589 `rtf ( dr , 590 "%s: db_v_: %s\n", ldg -> ogme , `db_ ( t )); 591 ( t ); 593 dbv = * dbvp ; 594 dbv -> `t_rfe (dbv, dr ); 595 dbv -> `t_fx (dbv, ldg -> ogme ); 596 i( ldg -> sswd ! NULL && ( t = dbv -> `t_y (dbenv, 597 ldg -> sswd , DB_ENCRYPT_AES )) != 0) { 598 dbv -> `r (dbv, t , "set_passwd"); 599 ( t ); 601 i(( t = `db_ld_db_ ( dbv , ldg -> home ,dg-> che , &ldg-> ive )) != 0) 602 ( t ); 603 dbv -> p_ive = ldg ; 606 } } 613 $db_ld_db_ ( dbv , home , che , is_ive ) 614 DB_ENV * dbv ; 615 * home ; 616 u_t32_t che ; 617 * is_ive ; 619 u_t32_t ags ; 620 t ; 622 * is_ive = 0; 624 ags = DB_USE_ENVIRON | 625 DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN ; 626 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 628 i( t = DB_VERSION_MISMATCH ) 629 r ; 643 `LF_CLR ( DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN ); 644 `LF_SET ( DB_CREATE | DB_PRIVATE ); 645 * is_ive = 1; 646 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 647 dbv -> `r (dbv, t , "set_cachesize"); 650 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 654 r : dbv -> `r (dbv, t , "DB_ENV->open"); 656 } } 658 #FLAG ( me , vue , keywd , ag ) \ 659 i( `rcmp ( me , keywd ) == 0) { \ 660 * vue ) { \ 662 i(( t = dbp -> `t_ags (dbp, ag )) != 0) { \ 663 dbp -> `r (dbp, t , "%s: set_flags: %s", \ 664 `G ( ogme ), me ); \ 665 r ; \ 671 `db_ld_badnum ( dbv ); \ 672 r ; \ 675 } ) 676 #NUMBER ( me , vue , keywd , func , t ) \ 677 i( `rcmp ( me , keywd ) == 0) { \ 678 i(( t = `__db_glg ( dbv , \ 679 NULL , vue , 0, LONG_MAX , & v )) != 0 || \ 680 ( t = dbp -> `func (dbp, ( t ) v )) != 0) \ 681 m ; \ 683 } ) 684 #STRING ( me , vue , keywd , func ) \ 685 i( `rcmp ( me , keywd ) == 0) { \ 686 i(( t = dbp -> `func (dbp, vue [0])) != 0) \ 687 m ; \ 689 } ) 696 #CONFIGURATION_LIST_COMPARE \ 697 `NUMBER ( me , vue , "bt_mkey", t_bt_mkey , u_t32_t ); \ 698 `FLAG ( me , vue , "chksum", DB_CHKSUM ); \ 699 `NUMBER ( me , vue , "db_ld", t_ld , ); \ 700 `NUMBER ( me , vue , "db_gesize", t_gesize , u_t32_t ); \ 701 `FLAG ( me , vue , "duis", DB_DUP ); \ 702 `FLAG ( me , vue , "dupst", DB_DUPSORT ); \ 703 `NUMBER ( me , vue , "exsize", t_q_exsize , u_t32_t ); \ 704 `NUMBER ( me , vue , "h_f", t_h_f , u_t32_t ); \ 705 `NUMBER ( me , vue , "h_m", t_h_m , u_t32_t ); \ 706 `NUMBER ( me , vue , "_n", t__n , u_t32_t ); \ 707 `STRING ( me , vue , "_d", t__d ); \ 708 `FLAG ( me , vue , "um", DB_RECNUM ); \ 709 `FLAG ( me , vue , "numb", DB_RENUMBER ) ) 716 $db_ld_cfigu ( dbv , dbp , p , subdbp , key ) 717 DB_ENV * dbv ; 718 DB * dbp ; 719 ** p , ** subdbp ; 720 * key ; 722 v ; 723 t , vech ; 724 * me , * vue ; 726 ; ( me = * p ! NULL ; *-- vue = vech , ++clp) { 727 i(( vue = `rchr ( me , '=')= NULL ) { 728 dbp -> `rx (dbp, 732 vech = * vue ; 733 * vue ++ = '\0'; 735 i( `rcmp ( me , "database") == 0 || 736 `rcmp ( me , "subdatabase") == 0) { 737 i(* subdbp ! NULL ) 738 ` (* subdbp ); 739 i((* subdbp = `rdup ( vue )= NULL ) { 740 dbp -> `r (dbp, ENOMEM , NULL ); 745 i( `rcmp ( me , "keys") == 0) { 746 i( `rcmp ( vue , "1") == 0) 747 * key = 1; 748 i( `rcmp ( vue , "0") == 0) 749 * key = 0; 751 `db_ld_badnum ( dbv ); 757 CONFIGURATION_LIST_COMPARE ; 759 dbp -> `rx (dbp, 760 "unknowcommd-lcfiguti keywd \"%s\"", me ); 765 m : 766 dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 767 r : (1); 768 } } 775 $db_ld_rhd ( dbv , dbp , dbtyp , subdbp , check , key ) 776 DB_ENV * dbv ; 777 DB * dbp ; 778 DBTYPE * dbtyp ; 779 ** subdbp ; 780 * check , * key ; 782 size_t bu , l , t ; 783 v ; 784 ch , f , hdr , t ; 785 * buf , * me , * p , * vue ; 787 * dbtyp = DB_UNKNOWN ; 788 * check = 0; 789 me = NULL ; 795 bu = 4096; 796 i( `G ( hdrbuf = NULL ) { 797 hdr = 0; 798 i(( buf = `mloc ( bu )= NULL ) 799 memr ; 800 `G ( hdrbuf buf ; 801 `G ( igle G( lo ); 803 hdr = 1; 804 buf = `G ( hdrbuf ); 805 `G ( lo G( igle ); 808 t = 0; 809 f = 1;; first = 0) { 810 ++ `G ( lo ); 813 l = 0; 814 buf = & `G ( hdrbuf )[ t ]; 815 i( hdr == 0) { 817 i(( ch = `gch ()= EOF ) { 818 i(! f || ` ( d )) 819 badfmt ; 820 `G ( dofe ) = 1; 827 i( l + t = bu ) { 828 `G ( hdrbuf ) = 829 `loc ( `G ( hdrbuf ), bu *= 2); 830 i( `G ( hdrbuf = NULL ) 831 memr ; 832 buf = & `G ( hdrbuf )[ t ]; 835 i( ch == '\n') 838 buf [ l ++] = ch ; 840 i( `G ( dofe ) == 1) 842 buf [ l ++] = '\0'; 844 l = ` ( buf ) + 1; 845 t + l ; 847 i( me ! NULL ) { 848 ` ( me ); 849 me = NULL ; 852 i(( me = `rdup ( buf )= NULL ) 853 memr ; 854 i(( p = `rchr ( me , '=')= NULL ) 855 badfmt ; 856 * p ++ = '\0'; 858 vue = p --; 860 i( me [0] == '\0') 861 badfmt ; 870 i( `rcmp ( me , "database") == 0 || 871 `rcmp ( me , "subdatabase") == 0) { 872 i(( t = `db_ld_cvb ( dbv , vue , subdbp )) != 0) { 873 dbp -> `r (dbp, t , "erroreading dbame"); 874 r ; 880 i( vue [0] == '\0') 881 badfmt ; 883 i( `rcmp ( me , "HEADER") == 0) 885 i( `rcmp ( me , "VERSION") == 0) { 890 `G ( vsi `oi ( vue ); 892 i( `G ( vsi ) > 3) { 893 dbp -> `rx (dbp, 895 `G ( lo ), G( vsi )); 896 r ; 900 i( `rcmp ( me , "format") == 0) { 901 i( `rcmp ( vue , "bytevalue") == 0) { 902 * check = 0; 905 i( `rcmp ( vue , "print") == 0) { 906 * check = 1; 909 badfmt ; 911 i( `rcmp ( me , "type") == 0) { 912 i( `rcmp ( vue , "btree") == 0) { 913 * dbtyp = DB_BTREE ; 916 i( `rcmp ( vue , "hash") == 0) { 917 * dbtyp = DB_HASH ; 920 i( `rcmp ( vue , "recno") == 0) { 921 * dbtyp = DB_RECNO ; 924 i( `rcmp ( vue , "queue") == 0) { 925 * dbtyp = DB_QUEUE ; 928 dbp -> `rx (dbp, "l%lu: unknowty", `G ( lo )); 929 r ; 931 i( `rcmp ( me , "keys") == 0) { 932 i( `rcmp ( vue , "1") == 0) 933 * key = 1; 934 i( `rcmp ( vue , "0") == 0) 935 * key = 0; 937 `db_ld_badnum ( dbv ); 938 r ; 943 CONFIGURATION_LIST_COMPARE ; 945 dbp -> `rx (dbp, 947 me ); 948 r ; 950 t = 0; 953 m : dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 954 t = 1; 957 badfmt : dbp -> `rx (dbp, "l%lu: uxed fm", `G ( lo )); 958 t = 1; 961 memr : dbp -> `rx (dbp, "unableollocate memory"); 962 r : t = 1; 964 i( me ! NULL ) 965 ` ( me ); 966 ( t ); 967 } } 976 #DIGITIZE ( e , v1 , v2 ) { \ 977 _v1 , _v2 ; \ 978 _v1 = ( v1 ); \ 979 _v2 = ( v2 ); \ 980 i(( _v1 > 'f' || ( _v2 ) > 'f') \ 981 ( `db_ld_badd ( dbv )); \ 982 ( e ) = \ 983 (( _v1 ) == '0' ? 0 : \ 984 (( _v1 ) == '1' ? 1 : \ 985 (( _v1 ) == '2' ? 2 : \ 986 (( _v1 ) == '3' ? 3 : \ 987 (( _v1 ) == '4' ? 4 : \ 988 (( _v1 ) == '5' ? 5 : \ 989 (( _v1 ) == '6' ? 6 : \ 990 (( _v1 ) == '7' ? 7 : \ 991 (( _v1 ) == '8' ? 8 : \ 992 (( _v1 ) == '9' ? 9 : \ 993 (( _v1 ) == 'a' ? 10 : \ 994 (( _v1 ) == 'b' ? 11 : \ 995 (( _v1 ) == 'c' ? 12 : \ 996 (( _v1 ) == 'd' ? 13 : \ 997 (( _v1 ) == 'e' ? 14 : 15))))))))))))))) << 4 | \ 998 (( _v2 ) == '0' ? 0 : \ 999 (( _v2 ) == '1' ? 1 : \ 1000 (( _v2 ) == '2' ? 2 : \ 1001 (( _v2 ) == '3' ? 3 : \ 1002 (( _v2 ) == '4' ? 4 : \ 1003 (( _v2 ) == '5' ? 5 : \ 1004 (( _v2 ) == '6' ? 6 : \ 1005 (( _v2 ) == '7' ? 7 : \ 1006 (( _v2 ) == '8' ? 8 : \ 1007 (( _v2 ) == '9' ? 9 : \ 1008 (( _v2 ) == 'a' ? 10 : \ 1009 (( _v2 ) == 'b' ? 11 : \ 1010 (( _v2 ) == 'c' ? 12 : \ 1011 (( _v2 ) == 'd' ? 13 : \ 1012 (( _v2 ) == 'e' ? 14 : 15))))))))))))))); \ 1013 } ) 1029 $db_ld_cvb ( dbv , r , out ) 1030 DB_ENV * dbv ; 1031 * r , ** out ; 1033 * outr ; 1042 i(( outr = `mloc ( ` ( r + 1)= NULL ) 1043 ( ENOMEM ); 1045 * out = outr ; 1047 ; * r != '\0'; instr++) 1048 i(* r == '\\') { 1049 i(*++ r == '\\') { 1050 * outr ++ = '\\'; 1053 `DIGITIZE (* outr ++, * r , *++instr); 1055 * outr ++ = * r ; 1057 * outr = '\0'; 1060 } } 1067 $db_ld_dbt_rt ( dbv , db ) 1068 DB_ENV * dbv ; 1069 DBT * db ; 1071 u_t32_t n ; 1072 u_t8_t * p ; 1073 c1 , c2 , es , f ; 1074 buf [32]; 1076 ++ `G ( lo ); 1078 f = 1; 1079 es = 0; 1080 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1081 i( c1 = EOF ) { 1082 i( n == 0) { 1083 `G ( dofe G( doda ) = 1; 1086 ( `db_ld_badd ( dbv )); 1088 i( f ) { 1089 f = 0; 1090 i( `G ( vsi ) > 1) { 1091 i( c1 != ' ') { 1092 buf [0] = c1 ; 1093 i( `fgs ( buf + 1, 1094 ( buf - 1, d = NULL || 1095 `rcmp ( buf , "DATA=END\n") != 0) 1096 ( `db_ld_badd ( dbv )); 1097 `G ( doda ) = 1; 1103 i( es ) { 1104 i( c1 != '\\') { 1105 i(( c2 = `gch ()= EOF ) 1106 ( `db_ld_badd ( dbv )); 1107 `DIGITIZE ( c1 , c1, c2 ); 1109 es = 0; 1111 i( c1 == '\\') { 1112 es = 1; 1115 i( n > db -> un - 10) { 1116 db -> un *= 2; 1117 i(( db -> da = 1118 `loc ( db -> da , db-> un )= NULL ) { 1119 dbv -> `r (dbv, ENOMEM , NULL ); 1122 p = ( u_t8_t *) db -> da + n ; 1124 ++ n ; 1125 * p ++ = c1 ; 1127 db -> size = n ; 1130 } } 1137 $db_ld_dbt_rdump ( dbv , db ) 1138 DB_ENV * dbv ; 1139 DBT * db ; 1141 u_t32_t n ; 1142 u_t8_t * p ; 1143 c1 , c2 , f ; 1144 buf [32]; 1146 ++ `G ( lo ); 1148 f = 1; 1149 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1150 i( c1 = EOF ) { 1151 i( n == 0) { 1152 `G ( dofe G( doda ) = 1; 1155 ( `db_ld_badd ( dbv )); 1157 i( f ) { 1158 f = 0; 1159 i( `G ( vsi ) > 1) { 1160 i( c1 != ' ') { 1161 buf [0] = c1 ; 1162 i( `fgs ( buf + 1, 1163 ( buf - 1, d = NULL || 1164 `rcmp ( buf , "DATA=END\n") != 0) 1165 ( `db_ld_badd ( dbv )); 1166 `G ( doda ) = 1; 1172 i(( c2 = `gch ()= EOF ) 1173 ( `db_ld_badd ( dbv )); 1174 i( n > db -> un - 10) { 1175 db -> un *= 2; 1176 i(( db -> da = 1177 `loc ( db -> da , db-> un )= NULL ) { 1178 dbv -> `r (dbv, ENOMEM , NULL ); 1181 p = ( u_t8_t *) db -> da + n ; 1183 ++ n ; 1184 `DIGITIZE (* p ++, c1 , c2 ); 1186 db -> size = n ; 1189 } } 1196 $db_ld_dbt_eo ( dbv , db , ishex ) 1197 DB_ENV * dbv ; 1198 DBT * db ; 1199 ishex ; 1201 buf [32], * p , * q ; 1202 u_lg o ; 1204 ++ `G ( lo ); 1206 i( `fgs ( buf , (buf), d = NULL ) { 1207 `G ( dofe G( doda ) = 1; 1211 i( `rcmp ( buf , "DATA=END\n") == 0) { 1212 `G ( doda ) = 1; 1216 i( buf [0] != ' ') 1217 r ; 1223 i( ishex ) { 1224 p = q = buf + 1; *q != '\0' && *q != '\n';) { 1232 i(* q ++ != '3') 1233 r ; 1234 i(* q == '\n' || *q == '\0') 1235 r ; 1236 * p ++ = * q ++; 1238 * p = '\0'; 1241 i( `__db_gulg ( dbv , `G ( ogme ), buf + 1, 0, 0, & o )) 1242 r ; 1244 *(( db_o_t *) db -> da o ; 1245 db -> size = ( db_o_t ); 1248 r : ( `db_ld_badd ( dbv )); 1249 } } 1252 $db_ld_dbt_to_o ( dbv , dbt , ) 1253 DB_ENV * dbv ; 1254 DBT * dbt ; 1255 db_o_t * ; 1257 buf [32]; 1259 `memy ( buf , dbt -> da , dbt-> size ); 1260 buf [ dbt -> size ] = '\0'; 1262 ( `__db_gulg ( dbv , `G ( ogme ), buf , 0, 0, ( u_lg *) )); 1263 } } 1270 $db_ld_badnum ( dbv ) 1271 DB_ENV * dbv ; 1273 dbv -> `rx (dbenv, 1275 } } 1282 $db_ld_badd ( dbv ) 1283 DB_ENV * dbv ; 1285 dbv -> `rx (dbenv, "unexpectednd of input data or key/dataair"); 1287 } } 1294 $db_ld_uge () 1296 () `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 1299 () `rtf ( dr , "usage: %s %s\n", 1300 ogme , "-rsn | fileid [-h home] [-Password] db_file"); 1301 ( EXIT_FAILURE ); 1302 } } 1305 $db_ld_vsi_check () 1307 v_maj , v_m , v_tch ; 1310 () `db_vsi (& v_maj , & v_m , & v_tch ); 1311 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 1312 `rtf ( dr , 1314 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 1315 v_maj , v_m ); 1316 ( EXIT_FAILURE ); 1319 } } @../build_vxworks/db_printlog/db_printlog.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/f.h " 15 ~"dbc/hash.h " 16 ~"dbc/log.h " 17 ~"dbc/qam.h " 18 ~"dbc/txn.h " 20 #ide lt 21 cڡ gcyright [] = 25 db_og_v__t __P (( DB_ENV *, u_t32_t , 26 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 27 db_og_v__t_42 `__P (( DB_ENV *, 28 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 29 db_og_v__t_43 `__P (( DB_ENV *, 30 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 31 db_og_v__t_45 `__P (( DB_ENV *, 32 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 33 db_og_l_g `__P ((*, DB_LSN *)); 34 db_og_ma `__P ((, *[])); 35 db_og_ݒ_p_db `__P (( DB_ENV *, DB **, DBC **)); 36 db_og_t_p_cd `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 37 db_og_uge `__P (()); 38 db_og_vsi_check `__P (()); 40 cڡ * ogme ; 43 $db_og ( gs ) 44 * gs ; 46 gc ; 47 ** gv ; 49 `__db_ut_g ("db_og", gs , & gc , & gv ); 50 ( `db_og_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 51 } } 53 ~<dio.h > 54 #ERROR_RETURN ERROR ) 57 $db_og_ma ( gc , gv ) 58 gc ; 59 * gv []; 61 * ݏrg ; 62 td , __db_gt_t ; 63 DB * dbp ; 64 DBC * dbc ; 65 DBT da , keydbt ; 66 DB_ENV * dbv ; 67 DB_LOGC * logc ; 68 DB_LSN key , t , , v ; 69 size_t dbsize ; 70 u_t32_t logcag , wvsi , vsi ; 71 ch , cmp , exv , nag , rag , t , pag ; 72 (** db `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 73 * home , * sswd ; 75 i(( ogme = `__db_h ( gv [0])= NULL ) 76 ogme = gv [0]; 78 ++ ogme ; 80 i(( t = `db_og_vsi_check ()) != 0) 81 ( t ); 83 dbp = NULL ; 84 dbc = NULL ; 85 dbv = NULL ; 86 logc = NULL ; 87 `ZERO_LSN ( t ); 88 `ZERO_LSN ( ); 89 dbsize = 0; 90 exv = nag = rag = pag = 0; 91 db = NULL ; 92 home = sswd = NULL ; 94 __db_gt_t = 1; 95 ( ch = `gt ( gc , gv , "b:e:h:NP:rRV")! EOF ) 96 ch ) { 99 i( `db_og_l_g ( ݏrg , & t )) 100 ( `db_og_uge ()); 104 i( `db_og_l_g ( ݏrg , & )) 105 ( `db_og_uge ()); 108 home = ݏrg ; 111 nag = 1; 114 sswd = `rdup ( ݏrg ); 115 `memt ( ݏrg , 0, ` (optarg)); 116 i( sswd = NULL ) { 117 `rtf ( dr , "%s: strdup: %s\n", 118 ogme , ` ( o )); 119 ( EXIT_FAILURE ); 123 rag = 1; 126 pag = 1; 129 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 130 ( EXIT_SUCCESS ); 133 ( `db_og_uge ()); 135 gc - td ; 136 gv + td ; 138 i( gc > 0) 139 ( `db_og_uge ()); 142 `__db_ut_sig (); 148 i(( t = `db_v_ (& dbv , 0)) != 0) { 149 `rtf ( dr , 150 "%s: db_v_: %s\n", ogme , `db_ ( t )); 151 shutdown ; 154 dbv -> `t_rfe (dbv, dr ); 155 dbv -> `t_fx (dbv, ogme ); 157 i( nag ) { 158 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 159 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 160 shutdown ; 162 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 163 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 164 shutdown ; 168 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 169 sswd , DB_ENCRYPT_AES )) != 0) { 170 dbv -> `r (dbv, t , "set_passwd"); 171 shutdown ; 178 i(( t = dbv -> `t_p_dich (dbv, db_og_t_p_cd )) != 0) { 179 dbv -> `r (dbv, t , "app_dispatch"); 180 shutdown ; 190 i( pag ) { 191 i(( t = dbv -> `ݒ (dbv, home , 192 DB_INIT_MPOOL | DB_USE_ENVIRON , 0)) != 0 && 193 ( t = DB_VERSION_MISMATCH || 194 ( t = dbv -> `ݒ (dbv, home , 195 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) 197 dbv -> `r (dbv, t , "DB_ENV->open"); 198 shutdown ; 200 } i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 201 ( t = DB_VERSION_MISMATCH || 202 ( t = dbv -> `ݒ (dbv, home , 203 DB_CREATE | DB_INIT_LOG | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 204 dbv -> `r (dbv, t , "DB_ENV->open"); 205 shutdown ; 209 i( pag ) { 210 i(( t = `db_og_ݒ_p_db ( dbv , & dbp , & dbc )) != 0) 211 shutdown ; 212 } i(( t = dbv -> `log_curs (dbv, & logc , 0)) != 0) { 213 dbv -> `r (dbv, t , "DB_ENV->log_cursor"); 214 shutdown ; 217 i( `IS_ZERO_LSN ( t )) { 218 `memt (& keydbt , 0, (keydbt)); 219 logcag = rag ? DB_PREV : DB_NEXT ; 221 key = t ; 222 logcag = DB_SET ; 224 `memt (& da , 0, (data)); 232 i( pag ) 233 vsi = DB_LOGVERSION ; 235 vsi = 0; 236 `ZERO_LSN ( v ); 239 i( pag && 240 ( t = `db_og_v__t ( dbv , vsi , & db , & dbsize )) != 0) { 241 dbv -> `r (dbv, t , "callback: initialization"); 242 shutdown ; 244 ; ! `__db_ut_ued (); logcag = rag ? DB_PREV : DB_NEXT ) { 245 i( pag ) { 246 t = dbc -> `g (dbc, & keydbt , & da , logcag ); 247 i( t == 0) 248 key = (( REP_CONTROL *) keydbt . da )-> l ; 250 t = logc -> `g ogc, & key , & da , logcag ); 251 i( t != 0) { 252 i( t = DB_NOTFOUND ) 254 dbv -> `r (dbenv, 255 t , pag ? "DBC->get" : "DB_LOGC->get"); 256 shutdown ; 262 i(! `IS_ZERO_LSN ( )) { 263 cmp = `LOG_COMPARE (& key , & ); 264 i(( rag && cmp < 0) || (!rflag && cmp > 0)) 267 i(! pag && key . fe ! v .file) { 273 i(( t = logc -> `vsi ogc, & wvsi , 0)) != 0) { 274 dbv -> `r (dbv, t , "DB_LOGC->version"); 275 shutdown ; 277 i( vsi ! wvsi ) { 278 vsi = wvsi ; 279 i(( t = `db_og_v__t ( dbv , vsi , 280 & db , & dbsize )) != 0) { 281 dbv -> `r (dbv, t , 283 shutdown ; 288 t = `__db_dich ( dbv , 289 db , dbsize , & da , & key , DB_TXN_PRINT , NULL ); 295 () `fush ( dout ); 297 i( t != 0) { 298 dbv -> `r (dbv, t , "tx: dispatch"); 299 shutdown ; 304 shutdown : exv = 1; 306 i( logc ! NULL && ( t =ogc-> `o (logc, 0)) != 0) 307 exv = 1; 309 i( dbc ! NULL && ( t = dbc-> `o (dbc)) != 0) 310 exv = 1; 312 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) 313 exv = 1; 320 i( db ! NULL ) 321 `__os_ ( dbv , db ); 322 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 323 exv = 1; 324 `rtf ( dr , 325 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 328 i( sswd ! NULL ) 329 ` ( sswd ); 332 `__db_ut_signd (); 334 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 335 } } 341 $db_og_v__t ( dbv , vsi , dbp , dbsiz ) 342 DB_ENV * dbv ; 343 u_t32_t vsi ; 344 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 345 size_t * dbsiz ; 347 t ; 354 i(( t = `db_og_v__t_45 ( dbv , dbp , dbsiz )) != 0) 355 ( t ); 357 vsi ) { 365 DB_LOGVERSION_46 : 366 DB_LOGVERSION_45 : 367 DB_LOGVERSION_44 : 368 t = 0; 370 DB_LOGVERSION_43 : 371 t = `db_og_v__t_43 ( dbv , dbp , dbsiz ); 373 DB_LOGVERSION_42 : 374 t = `db_og_v__t_42 ( dbv , dbp , dbsiz ); 377 `__db_rx ( dbv , "Unknowvsi %lu", ( u_lg ) vsi ); 378 t = EINVAL ; 381 ( t ); 382 } } 385 $db_og_v__t_42 ( dbv , dbp , dbsiz ) 386 DB_ENV * dbv ; 387 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 388 size_t * dbsiz ; 390 t ; 392 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 393 __db_lk_42_t , DB___db_lk_42 )) != 0) 394 r ; 395 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 396 __db_pg_loc_42_t , DB___db_pg_loc_42 )) != 0) 397 r ; 398 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 399 __db_pg__42_t , DB___db_pg__42 )) != 0) 400 r ; 401 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 402 __db_pg_da_42_t , DB___db_pg_da_42 )) != 0) 403 r ; 404 #i HAVE_HASH 405 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 406 __ham_magroup_42_t , DB___ham_magroup_42 )) != 0) 407 r ; 408 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 409 __ham_grouoc_42_t , DB___ham_grouoc_42 )) != 0) 410 r ; 412 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 413 __txn_ckp_42_t , DB___txn_ckp_42 )) != 0) 414 r ; 415 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 416 __txn_g_42_t , DB___txn_g_42 )) != 0) 417 r ; 418 r : 419 ( t ); 420 } } 423 $db_og_v__t_43 ( dbv , dbp , dbsiz ) 424 DB_ENV * dbv ; 425 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 426 size_t * dbsiz ; 428 t ; 430 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 431 __bam_lk_43_t , DB___bam_lk_43 )) != 0) 432 r ; 436 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 437 __txn_g_42_t , DB___txn_g_42 )) != 0) 438 r ; 439 r : 440 ( t ); 441 } } 448 $db_og_v__t_45 ( dbv , dbp , dbsiz ) 449 DB_ENV * dbv ; 450 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 451 size_t * dbsiz ; 453 t ; 455 i(( t = `__bam__t ( dbv , dbp , dbsiz )) != 0) 456 r ; 457 i(( t = `__d__t ( dbv , dbp , dbsiz )) != 0) 458 r ; 459 i(( t = `__db__t ( dbv , dbp , dbsiz )) != 0) 460 r ; 461 i(( t = `__dbg__t ( dbv , dbp , dbsiz )) != 0) 462 r ; 463 i(( t = `__f__t ( dbv , dbp , dbsiz )) != 0) 464 r ; 465 #ifde HAVE_HASH 466 i(( t = `__ham__t ( dbv , dbp , dbsiz )) != 0) 467 r ; 469 #ifde HAVE_QUEUE 470 i(( t = `__qam__t ( dbv , dbp , dbsiz )) != 0) 471 r ; 473 i(( t = `__txn__t ( dbv , dbp , dbsiz )) != 0) 474 r ; 475 r : 476 ( t ); 477 } } 480 $db_og_uge () 482 `rtf ( dr , "uge: %%s\n", ogme , 484 ( EXIT_FAILURE ); 485 } } 488 $db_og_vsi_check () 490 v_maj , v_m , v_tch ; 493 () `db_vsi (& v_maj , & v_m , & v_tch ); 494 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 495 `rtf ( dr , 497 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 498 v_maj , v_m ); 499 ( EXIT_FAILURE ); 502 } } 506 $db_og_t_p_cd ( dbv , dbt , lp , ) 507 DB_ENV * dbv ; 508 DBT * dbt ; 509 DB_LSN * lp ; 510 db_cs ; 512 ch ; 513 u_t32_t i , y ; 515 `DB_ASSERT ( dbv , = DB_TXN_PRINT ); 517 `COMPQUIET ( dbv , NULL ); 518 `COMPQUIET ( , DB_TXN_PRINT ); 524 `memy (& y , dbt -> da , (rectype)); 531 `tf ("[%lu][%lu]application specificecord:ec: %lu\n", 532 ( u_lg ) lp -> fe , (u_lgp-> offt , (u_lg) y ); 533 `tf ("\tdata: "); 534 i = 0; i < dbt -> size ; i++) { 535 ch = (( u_t8_t *) dbt -> da )[ i ]; 536 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 538 `tf ("\n\n"); 541 } } 544 $db_og_ݒ_p_db ( dbv , db , db ) 545 DB_ENV * dbv ; 546 DB ** db ; 547 DBC ** db ; 549 t ; 551 DB * dbp ; 552 * db = NULL ; 553 * db = NULL ; 555 i(( t = `db_ ( db , dbv , 0)) != 0) { 556 dbv -> `r (dbv, t , "db_create"); 557 ( t ); 560 dbp = * db ; 561 i(( t = 562 dbp -> `ݒ (dbp, NULL , REPDBNAME , NULL, DB_BTREE , 0, 0)) != 0) { 563 dbv -> `r (dbv, t , "DB->open"); 564 r ; 567 i(( t = dbp -> `curs (dbp, NULL , db , 0)) != 0) { 568 dbv -> `r (dbv, t , "DB->cursor"); 569 r ; 574 r : i(* db ! NULL ) 575 ()(* db )-> `o (*dbpp, 0); 576 ( t ); 577 } } 584 $db_og_l_g ( g , lp ) 585 * g ; 586 DB_LSN * lp ; 588 u_lg uv ; 589 * p ; 594 i(( p = `rchr ( g , '/')= NULL ) 596 * p = '\0'; 598 i( `__db_gulg ( NULL , ogme , g , 0, UINT32_MAX , & uv )) 600 lp -> fe = uv ; 601 i( `__db_gulg ( NULL , ogme , p + 1, 0, UINT32_MAX , & uv )) 603 lp -> offt = uv ; 605 } } @../build_vxworks/db_recover/db_recover.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 db_cov_edback __P (( DB_ENV *, , )); 19 db_cov_ma __P ((, *[])); 20 db_cov_ad_timeamp __P ((*, time_t *)); 21 db_cov_uge __P (()); 22 db_cov_vsi_check __P (()); 24 cڡ * gogme ; 25 gwle_eded ; 28 $db_cov ( gs ) 29 * gs ; 31 gc ; 32 ** gv ; 34 `__db_ut_g ("db_cov", gs , & gc , & gv ); 35 ( `db_cov_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 36 } } 38 ~<dio.h > 39 #ERROR_RETURN ERROR ) 42 $db_cov_ma ( gc , gv ) 43 gc ; 44 * gv []; 46 * ݏrg ; 47 td , __db_gt_t ; 48 DB_ENV * dbv ; 49 time_t timeamp ; 50 u_t32_t ags ; 51 ch , exv , l_cov , t , _v , t_edback , vbo ; 52 * home , * sswd ; 54 i(( ogme = `__db_h ( gv [0])= NULL ) 55 ogme = gv [0]; 57 ++ ogme ; 59 i(( t = `db_cov_vsi_check ()) != 0) 60 ( t ); 62 home = sswd = NULL ; 63 timeamp = 0; 64 exv = l_cov = _v = t_edback = vbo = 0; 65 __db_gt_t = 1; 66 ( ch = `gt ( gc , gv , "fh:P:t:Vv")! EOF ) 67 ch ) { 69 l_cov = 1; 72 _v = 1; 75 t_edback = 1; 78 home = ݏrg ; 81 sswd = `rdup ( ݏrg ); 82 `memt ( ݏrg , 0, ` (optarg)); 83 i( sswd = NULL ) { 84 `rtf ( dr , "%s: strdup: %s\n", 85 ogme , ` ( o )); 86 ( EXIT_FAILURE ); 90 i(( t = `db_cov_ad_timeamp ( ݏrg , & timeamp )) != 0) 91 ( t ); 94 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 95 ( EXIT_SUCCESS ); 97 vbo = 1; 101 ( `db_cov_uge ()); 103 gc - td ; 104 gv + td ; 106 i( gc != 0) 107 ( `db_cov_uge ()); 110 `__db_ut_sig (); 116 i(( t = `db_v_ (& dbv , 0)) != 0) { 117 `rtf ( dr , 118 "%s: db_v_: %s\n", ogme , `db_ ( t )); 119 ( EXIT_FAILURE ); 121 dbv -> `t_rfe (dbv, dr ); 122 dbv -> `t_fx (dbv, ogme ); 123 i( t_edback ) 124 () dbv -> `t_edback (dbv, db_cov_edback ); 125 i( vbo ) 126 () dbv -> `t_vbo (dbv, DB_VERB_RECOVERY , 1); 127 i( timeamp && 128 ( t = dbv -> `t_tx_timeamp (dbv, & timeamp )) != 0) { 129 dbv -> `r (dbv, t , "DB_ENV->set_timestamp"); 130 shutdown ; 133 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 134 sswd , DB_ENCRYPT_AES )) != 0) { 135 dbv -> `r (dbv, t , "set_passwd"); 136 shutdown ; 151 ags = 0; 152 `LF_SET ( DB_CREATE | DB_INIT_LOG | 153 DB_INIT_MPOOL | DB_INIT_TXN | DB_USE_ENVIRON ); 154 `LF_SET ( l_cov ? DB_RECOVER_FATAL : DB_RECOVER ); 155 `LF_SET ( _v ? DB_INIT_LOCK : DB_PRIVATE ); 156 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) { 157 dbv -> `r (dbv, t , "DB_ENV->open"); 158 shutdown ; 162 shutdown : exv = 1; 166 i( wle_eded ) 167 `tf ("\n"); 170 i(( t = dbv -> `o (dbenv, 0)) != 0) { 171 exv = 1; 172 `rtf ( dr , 173 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 175 i( sswd ! NULL ) 176 ` ( sswd ); 179 `__db_ut_signd (); 181 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 182 } } 189 $db_cov_edback ( dbv , code , r ) 190 DB_ENV * dbv ; 191 code ; 192 r ; 194 `COMPQUIET ( dbv , NULL ); 196 i( code = DB_RECOVER ) { 197 `tf ("\ecovy %d%% come", r ); 198 () `fush ( dout ); 199 wle_eded = 1; 201 } } 203 #ATOI2 ( (r)[0] - '0'* 10 + (r)[1] - '0'); (+2; ) 237 $db_cov_ad_timeamp ( g , tim ) 238 * g ; 239 time_t * tim ; 241 tm * t ; 242 time_t now ; 243 yrt ; 244 * p ; 246 () `time (& now ); 247 i(( t = `loime (& now )= NULL ) { 248 `rtf ( dr , 249 "%s:oime: %s\n", ogme , ` ( o )); 250 ( EXIT_FAILURE ); 253 i(( p = `rchr ( g , '.')= NULL ) 254 t -> tm_c = 0; 256 i( ` ( p + 1) != 2) 257 ; 258 * p ++ = '\0'; 259 t -> tm_c = `ATOI2 ( p ); 262 yrt = 0; 263 ` ( g )) { 265 t -> tm_yr = `ATOI2 ( g ); 266 t -> tm_yr *= 100; 267 yrt = 1; 270 i( yrt ) { 271 yrt = `ATOI2 ( g ); 272 t -> tm_yr + yrt ; 274 yrt = `ATOI2 ( g ); 275 i( yrt < 69) 276 t -> tm_yr = yrt + 2000; 278 t -> tm_yr = yrt + 1900; 280 t -> tm_yr -= 1900; 283 t -> tm_m = `ATOI2 ( g ); 284 -- t -> tm_m ; 285 t -> tm_mday = `ATOI2 ( g ); 286 t -> tm_hour = `ATOI2 ( g ); 287 t -> tm_m = `ATOI2 ( g ); 290 ; 293 t -> tm_isd = -1; 295 * tim = `mktime ( t ); 296 i(* tim == -1) { 297 : `rtf ( dr , 299 ogme ); 300 ( EXIT_FAILURE ); 303 } } 306 $db_cov_uge () 308 () `rtf ( dr , "uge: %%s\n", ogme , 310 ( EXIT_FAILURE ); 311 } } 314 $db_cov_vsi_check () 316 v_maj , v_m , v_tch ; 319 () `db_vsi (& v_maj , & v_m , & v_tch ); 320 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 321 `rtf ( dr , 323 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 324 v_maj , v_m ); 325 ( EXIT_FAILURE ); 328 } } @../build_vxworks/db_stat/db_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 um { mT_NOTSET , mT_DB , 19 mT_ENV , mT_LOCK , mT_LOG , mT_MPOOL , mT_MUTEX , mT_REP , mT_TXN } t_t ; 21 db__db_ __P (( DB_ENV *, *, _t , u_t32_t , *)); 22 db__ma __P ((, *[])); 23 db__uge __P (()); 24 db__vsi_check __P (()); 26 cڡ * gogme ; 29 $db_ ( gs ) 30 * gs ; 32 gc ; 33 ** gv ; 35 `__db_ut_g ("db_", gs , & gc , & gv ); 36 ( `db__ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 37 } } 39 ~<dio.h > 40 #ERROR_RETURN ERROR ) 43 $db__ma ( gc , gv ) 44 gc ; 45 * gv []; 47 * ݏrg ; 48 td , __db_gt_t ; 49 DB_ENV * dbv ; 50 DB * dbp ; 51 _t y ; 52 u_t32_t che , ags ; 53 ch , exv ; 54 nag , ive , size , t ; 55 * db , * home , * p , * sswd , * subdb ; 57 i(( ogme = `__db_h ( gv [0])= NULL ) 58 ogme = gv [0]; 60 ++ ogme ; 62 i(( t = `db__vsi_check ()) != 0) 63 ( t ); 65 dbv = NULL ; 66 dbp = NULL ; 67 y = T_NOTSET ; 68 che = MEGABYTE ; 69 exv = ags = nag = ive = 0; 70 db = home = sswd = subdb = NULL ; 72 __db_gt_t = 1; 73 ( ch = `gt ( gc , 74 gv , "C:cd:Eefgh:L:lM:mNP:R:rs:tVxX:Z")! EOF ) 75 ch ) { 77 i( y ! T_NOTSET &&ty ! T_LOCK ) 78 gcombo ; 79 y = T_LOCK ; 80 i( ch != 'c') 81 p = ݏrg ; *p; ++p) 82 * p ) { 84 `LF_SET ( DB_STAT_ALL ); 87 `LF_SET ( DB_STAT_LOCK_CONF ); 90 `LF_SET ( DB_STAT_LOCK_LOCKERS ); 95 `LF_SET ( DB_STAT_LOCK_OBJECTS ); 98 `LF_SET ( DB_STAT_LOCK_PARAMS ); 101 ( `db__uge ()); 105 i( y ! T_NOTSET &&ty ! T_DB ) 106 gcombo ; 107 y = T_DB ; 108 db = ݏrg ; 111 i( y ! T_NOTSET &&ty ! T_ENV ) 112 gcombo ; 113 y = T_ENV ; 114 `LF_SET ( DB_STAT_SUBSYSTEM ); 115 i( ch == 'E') 116 `LF_SET ( DB_STAT_ALL ); 119 i( y ! T_NOTSET &&ty ! T_DB ) 120 gcombo ; 121 y = T_DB ; 122 `LF_SET ( DB_FAST_STAT ); 125 home = ݏrg ; 128 i( y ! T_NOTSET &&ty ! T_LOG ) 129 gcombo ; 130 y = T_LOG ; 131 i( ch != 'l') 132 p = ݏrg ; *p; ++p) 133 * p ) { 135 `LF_SET ( DB_STAT_ALL ); 138 ( `db__uge ()); 142 i( y ! T_NOTSET &&ty ! T_MPOOL ) 143 gcombo ; 144 y = T_MPOOL ; 145 i( ch != 'm') 146 p = ݏrg ; *p; ++p) 147 * p ) { 149 `LF_SET ( DB_STAT_ALL ); 152 `LF_SET ( DB_STAT_MEMP_HASH ); 157 ( `db__uge ()); 161 nag = 1; 164 sswd = `rdup ( ݏrg ); 165 `memt ( ݏrg , 0, ` (optarg)); 166 i( sswd = NULL ) { 167 `rtf ( dr , "%s: strdup: %s\n", 168 ogme , ` ( o )); 169 ( EXIT_FAILURE ); 173 i( y ! T_NOTSET &&ty ! T_REP ) 174 gcombo ; 175 y = T_REP ; 176 i( ch != 'r') 177 p = ݏrg ; *p; ++p) 178 * p ) { 180 `LF_SET ( DB_STAT_ALL ); 183 ( `db__uge ()); 187 i( y ! T_NOTSET &&ty ! T_DB ) 188 gcombo ; 189 y = T_DB ; 190 subdb = ݏrg ; 193 i( y ! T_NOTSET ) { 194 gcombo : `rtf ( dr , 196 ogme ); 197 ( `db__uge ()); 199 y = T_TXN ; 202 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 203 ( EXIT_SUCCESS ); 205 i( y ! T_NOTSET &&ty ! T_MUTEX ) 206 gcombo ; 207 y = T_MUTEX ; 208 i( ch != 'x') 209 p = ݏrg ; *p; ++p) 210 * p ) { 212 `LF_SET ( DB_STAT_ALL ); 215 ( `db__uge ()); 219 `LF_SET ( DB_STAT_CLEAR ); 223 ( `db__uge ()); 225 gc - td ; 226 gv + td ; 228 y ) { 229 T_DB : 230 i( db = NULL ) 231 ( `db__uge ()); 233 T_ENV : 234 T_LOCK : 235 T_LOG : 236 T_MPOOL : 237 T_MUTEX : 238 T_REP : 239 T_TXN : 241 T_NOTSET : 242 ( `db__uge ()); 246 `__db_ut_sig (); 252 y : i(( t = `db_v_ (& dbv , 0)) != 0) { 253 `rtf ( dr , 254 "%s: db_v_: %s\n", ogme , `db_ ( t )); 255 r ; 258 dbv -> `t_rfe (dbv, dr ); 259 dbv -> `t_fx (dbv, ogme ); 261 i( nag ) { 262 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 263 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 264 r ; 266 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 267 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 268 r ; 272 i( sswd ! NULL && 273 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 274 dbv -> `r (dbv, t , "set_passwd"); 275 r ; 279 i( `db__db_ ( dbv , home , y , che , & ive ) != 0) 280 r ; 282 y ) { 283 T_DB : 285 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 286 dbv -> `r (dbv, t , "db_create"); 287 r ; 299 dbv -> `t_rfe (dbv, NULL ); 300 t = dbp -> `ݒ (dbp, NULL , db , subdb , DB_UNKNOWN , 0, 0); 301 dbv -> `t_rfe (dbv, dr ); 302 i( t !0 && ( dbp -> `ݒ ( 303 dbp , NULL , db , subdb , DB_UNKNOWN , DB_RDONLY , 0)) != 0) { 304 dbv -> `r (dbv, t , "DB->ݒ: %s", db ); 305 r ; 309 i( ive ) { 310 i(( t = `__db_ut_che ( dbp , & che , & size )) != 0) 311 r ; 312 i( size ) { 313 () dbp -> `o (dbp, DB_NOSYNC ); 314 dbp = NULL ; 316 () dbv -> `o (dbenv, 0); 317 dbv = NULL ; 318 y ; 322 i( dbp -> `_t (dbp, ags )) 323 r ; 325 T_ENV : 326 i( dbv -> `_t (dbv, ags )) 327 r ; 329 T_LOCK : 330 i( dbv -> `lock__t (dbv, ags )) 331 r ; 333 T_LOG : 334 i( dbv -> `log__t (dbv, ags )) 335 r ; 337 T_MPOOL : 338 i( dbv -> `memp__t (dbv, ags )) 339 r ; 341 T_MUTEX : 342 i( dbv -> `mux__t (dbv, ags )) 343 r ; 345 T_REP : 346 #ifde HAVE_REPLICATION_THREADS 347 i( dbv -> `pmgr__t (dbv, ags )) 348 r ; 350 i( dbv -> `p__t (dbv, ags )) 351 r ; 353 T_TXN : 354 i( dbv -> `txn__t (dbv, ags )) 355 r ; 357 T_NOTSET : 358 dbv -> `rx (dbenv, "Unknown statistics flag"); 359 r ; 363 r : exv = 1; 365 i( dbp ! NULL && ( t = dbp-> `o (dbp, DB_NOSYNC )) != 0) { 366 exv = 1; 367 dbv -> `r (dbv, t , "close"); 369 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 370 exv = 1; 371 `rtf ( dr , 372 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 375 i( sswd ! NULL ) 376 ` ( sswd ); 379 `__db_ut_signd (); 381 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 382 } } 389 $db__db_ ( dbv , home , y , che , is_ive ) 390 DB_ENV * dbv ; 391 * home ; 392 _t y ; 393 u_t32_t che ; 394 * is_ive ; 396 u_t32_t oags ; 397 t ; 409 * is_ive = 0; 410 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) == 0) 412 i( t = DB_VERSION_MISMATCH ) 413 r ; 414 i( y ! T_DB &&ty ! T_LOG ) { 415 dbv -> `r (dbv, t , "DB_ENV->open%s%s", 416 home = NULL ? "" : ": ", home == NULL ? "" : home); 430 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 431 dbv -> `r (dbv, t , "set_cachesize"); 434 * is_ive = 1; 435 oags = DB_CREATE | DB_PRIVATE | DB_USE_ENVIRON ; 436 i( y = T_DB ) 437 oags | DB_INIT_MPOOL ; 438 i( y = T_LOG ) 439 oags | DB_INIT_LOG ; 440 i(( t = dbv -> `ݒ (dbv, home , oags , 0)) == 0) 444 r : dbv -> `r (dbv, t , "DB_ENV->open"); 446 } } 449 $db__uge () 451 `rtf ( dr , "uge: %%s\n", ogme , 453 `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 456 ( EXIT_FAILURE ); 457 } } 460 $db__vsi_check () 462 v_maj , v_m , v_tch ; 465 () `db_vsi (& v_maj , & v_m , & v_tch ); 466 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 467 `rtf ( dr , 469 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 470 v_maj , v_m ); 471 ( EXIT_FAILURE ); 474 } } @../build_vxworks/db_upgrade/db_upgrade.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 db_upgde_ma __P ((, *[])); 19 db_upgde_uge __P (()); 20 db_upgde_vsi_check __P (()); 22 cڡ * gogme ; 25 $db_upgde ( gs ) 26 * gs ; 28 gc ; 29 ** gv ; 31 `__db_ut_g ("db_upgde", gs , & gc , & gv ); 32 ( `db_upgde_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 33 } } 35 ~<dio.h > 36 #ERROR_RETURN ERROR ) 39 $db_upgde_ma ( gc , gv ) 40 gc ; 41 * gv []; 43 * ݏrg ; 44 td , __db_gt_t ; 45 DB * dbp ; 46 DB_ENV * dbv ; 47 u_t32_t ags ; 48 ch , exv , nag , t , t_t , vbo ; 49 * home , * sswd ; 51 i(( ogme = `__db_h ( gv [0])= NULL ) 52 ogme = gv [0]; 54 ++ ogme ; 56 i(( t = `db_upgde_vsi_check ()) != 0) 57 ( t ); 59 dbv = NULL ; 60 ags = nag = vbo = 0; 61 exv = 0; 62 home = sswd = NULL ; 63 __db_gt_t = 1; 64 ( ch = `gt ( gc , gv , "h:NP:sVv")! EOF ) 65 ch ) { 67 home = ݏrg ; 70 nag = 1; 73 sswd = `rdup ( ݏrg ); 74 `memt ( ݏrg , 0, ` (optarg)); 75 i( sswd = NULL ) { 76 `rtf ( dr , "%s: strdup: %s\n", 77 ogme , ` ( o )); 78 ( EXIT_FAILURE ); 82 `LF_SET ( DB_DUPSORT ); 85 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 86 ( EXIT_SUCCESS ); 88 vbo = 1; 92 ( `db_upgde_uge ()); 94 gc - td ; 95 gv + td ; 97 i( gc <= 0) 98 ( `db_upgde_uge ()); 101 `__db_ut_sig (); 107 i(( t = `db_v_ (& dbv , 0)) != 0) { 108 `rtf ( dr , "%s: db_env_create: %s\n", 109 ogme , `db_ ( t )); 110 shutdown ; 113 dbv -> `t_rfe (dbv, dr ); 114 dbv -> `t_fx (dbv, ogme ); 116 i( nag ) { 117 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 118 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 119 shutdown ; 121 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 122 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 123 shutdown ; 127 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 128 sswd , DB_ENCRYPT_AES )) != 0) { 129 dbv -> `r (dbv, t , "set_passwd"); 130 shutdown ; 137 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 138 ( t = DB_VERSION_MISMATCH || 139 ( t = dbv -> `ݒ (dbv, home , 140 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 142 dbv -> `r (dbv, t , "DB_ENV->open"); 143 shutdown ; 146 ; ! `__db_ut_ued (&& gv [0] ! NULL ; ++argv) { 147 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 148 `rtf ( dr , 149 "%s: db_: %s\n", ogme , `db_ ( t )); 150 shutdown ; 152 dbp -> `t_rfe (dbp, dr ); 153 dbp -> `t_fx (dbp, ogme ); 154 i(( t = dbp -> `upgde (dbp, gv [0], ags )) != 0) 155 dbp -> `r (dbp, t , "DB->upgde: %s", gv [0]); 156 i(( t_t = dbp -> `o (dbp, 0)!0 && t == 0) { 157 dbv -> `r (dbv, t , "DB->o: %s", gv [0]); 158 t = t_t ; 160 i( t != 0) 161 shutdown ; 166 i( vbo ) 167 `tf ("%s: %s upgraded successfully\n", 168 ogme , gv [0]); 172 shutdown : exv = 1; 174 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 175 exv = 1; 176 `rtf ( dr , 177 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 180 i( sswd ! NULL ) 181 ` ( sswd ); 184 `__db_ut_signd (); 186 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 187 } } 190 $db_upgde_uge () 192 `rtf ( dr , "uge: %%s\n", ogme , 194 ( EXIT_FAILURE ); 195 } } 198 $db_upgde_vsi_check () 200 v_maj , v_m , v_tch ; 203 () `db_vsi (& v_maj , & v_m , & v_tch ); 204 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 205 `rtf ( dr , 207 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 208 v_maj , v_m ); 209 ( EXIT_FAILURE ); 212 } } @../build_vxworks/db_verify/db_verify.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 db_vify_ma __P ((, *[])); 19 db_vify_uge __P (()); 20 db_vify_vsi_check __P (()); 22 cڡ * gogme ; 25 $db_vify ( gs ) 26 * gs ; 28 gc ; 29 ** gv ; 31 `__db_ut_g ("db_vify", gs , & gc , & gv ); 32 ( `db_vify_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 33 } } 35 ~<dio.h > 36 #ERROR_RETURN ERROR ) 39 $db_vify_ma ( gc , gv ) 40 gc ; 41 * gv []; 43 * ݏrg ; 44 td , __db_gt_t ; 45 DB * dbp , * dbp1 ; 46 DB_ENV * dbv ; 47 u_t32_t ags , che ; 48 ch , exv , nag , ive ; 49 qut , size , t ; 50 * home , * sswd ; 52 i(( ogme = `__db_h ( gv [0])= NULL ) 53 ogme = gv [0]; 55 ++ ogme ; 57 i(( t = `db_vify_vsi_check ()) != 0) 58 ( t ); 60 dbv = NULL ; 61 dbp = NULL ; 62 che = MEGABYTE ; 63 exv = nag = qut = 0; 64 ags = 0; 65 home = sswd = NULL ; 66 __db_gt_t = 1; 67 ( ch = `gt ( gc , gv , "h:NoP:quV")! EOF ) 68 ch ) { 70 home = ݏrg ; 73 nag = 1; 76 sswd = `rdup ( ݏrg ); 77 `memt ( ݏrg , 0, ` (optarg)); 78 i( sswd = NULL ) { 79 `rtf ( dr , "%s: strdup: %s\n", 80 ogme , ` ( o )); 81 ( EXIT_FAILURE ); 85 `LF_SET ( DB_NOORDERCHK ); 88 qut = 1; 91 `LF_SET ( DB_UNREF ); 94 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 95 ( EXIT_SUCCESS ); 98 ( `db_vify_uge ()); 100 gc - td ; 101 gv + td ; 103 i( gc <= 0) 104 ( `db_vify_uge ()); 107 `__db_ut_sig (); 113 y : i(( t = `db_v_ (& dbv , 0)) != 0) { 114 `rtf ( dr , 115 "%s: db_v_: %s\n", ogme , `db_ ( t )); 116 shutdown ; 119 i(! qut ) { 120 dbv -> `t_rfe (dbv, dr ); 121 dbv -> `t_fx (dbv, ogme ); 124 i( nag ) { 125 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 126 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 127 shutdown ; 129 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 130 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 131 shutdown ; 135 i( sswd ! NULL && 136 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 137 dbv -> `r (dbv, t , "set_passwd"); 138 shutdown ; 145 ive = 0; 146 i(( t = 147 dbv -> `ݒ (dbv, home , DB_INIT_MPOOL | DB_USE_ENVIRON , 0)) != 0) { 148 i( t ! DB_VERSION_MISMATCH ) { 149 i(( t = 150 dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 151 dbv -> `r (dbv, t , "set_cachesize"); 152 shutdown ; 154 ive = 1; 155 t = dbv -> `ݒ (dbv, home , DB_CREATE | 156 DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0); 158 i( t != 0) { 159 dbv -> `r (dbv, t , "DB_ENV->open"); 160 shutdown ; 169 ; ! `__db_ut_ued (&& gv [0] ! NULL ; ++argv) { 170 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 171 dbv -> `r (dbv, t , "%s: db_", ogme ); 172 shutdown ; 175 i( `TXN_ON ( dbv ) && 176 ( t = dbp -> `t_ags (dbp, DB_TXN_NOT_DURABLE )) != 0) { 177 dbv -> `r ( 178 dbv , t , "%s: db_t_ags", ogme ); 179 shutdown ; 190 i( ive ) { 191 i(( t = `db_ (& dbp1 , dbv , 0)) != 0) { 192 dbv -> `r ( 193 dbv , t , "%s: db_", ogme ); 194 shutdown ; 197 i( `TXN_ON ( dbv && ( t = 198 dbp1 -> `t_ags (dbp1, DB_TXN_NOT_DURABLE )) != 0) { 199 dbv -> `r ( 200 dbv , t , "%s: db_t_ags", ogme ); 201 shutdown ; 204 t = dbp1 -> `ݒ (dbp1, 205 NULL , gv [0], NULL, DB_UNKNOWN , DB_RDONLY , 0); 215 i( t == 0) { 216 i( `__db_ut_che ( 217 dbp1 , & che , & size ) == 0 &&esize) { 218 () dbp1 -> `o (dbp1, 0); 219 () dbp -> `o (dbp, 0); 220 dbp = NULL ; 222 () dbv -> `o (dbenv, 0); 223 dbv = NULL ; 224 y ; 227 () dbp1 -> `o (dbp1, 0); 231 t = dbp -> `vify (dbp, gv [0], NULL , NULL, ags ); 232 dbp = NULL ; 233 i( t != 0) 234 shutdown ; 238 shutdown : exv = 1; 241 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 242 exv = 1; 243 dbv -> `r (dbv, t , "close"); 245 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 246 exv = 1; 247 `rtf ( dr , 248 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 251 i( sswd ! NULL ) 252 ` ( sswd ); 255 `__db_ut_signd (); 257 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 258 } } 261 $db_vify_uge () 263 `rtf ( dr , "uge: %%s\n", ogme , 265 ( EXIT_FAILURE ); 266 } } 269 $db_vify_vsi_check () 271 v_maj , v_m , v_tch ; 274 () `db_vsi (& v_maj , & v_m , & v_tch ); 275 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 276 `rtf ( dr , 278 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 279 v_maj , v_m ); 280 ( EXIT_FAILURE ); 283 } } @../build_vxworks/dbdemo/dbdemo.c 9 ~<sys/tys.h > 11 ~<dio.h > 12 ~<dlib.h > 13 ~<rg.h > 15 #ifde _WIN32 16 gt (, * const *, const *); 18 ~<unid.h > 21 ~<db_cfig.h > 22 ~<db_t.h > 24 #DATABASE "acss.db" ) 25 dbdemo_ma __P ((, *[])); 26 dbdemo_uge __P (()); 29 $dbdemo ( gs ) 30 * gs ; 32 gc ; 33 ** gv ; 35 `__db_ut_g ("dbdemo", gs , & gc , & gv ); 36 ( `dbdemo_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 37 } } 39 ~<dio.h > 40 #ERROR_RETURN ERROR ) 43 $dbdemo_ma ( gc , gv ) 44 gc ; 45 * gv []; 47 td , __db_gt_t ; 48 DB * dbp ; 49 DBC * db ; 50 DBT key , da ; 51 size_t n ; 52 ch , t , rag ; 53 * daba , * p , * t , buf [1024], rbuf [1024]; 54 cڡ * ogme = "dbdemo"; 56 rag = 0; 57 __db_gt_t = 1; 58 ( ch = `gt ( gc , gv , "r")! EOF ) 59 ch ) { 61 rag = 1; 65 ( `dbdemo_uge ()); 67 gc - td ; 68 gv + td ; 71 daba = * gv = NULL ? DATABASE :rgv[0]; 74 i( rag ) 75 () `move ( daba ); 78 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 79 `rtf ( dr , 80 "%s: db_: %s\n", ogme , `db_ ( t )); 81 ( EXIT_FAILURE ); 83 dbp -> `t_rfe (dbp, dr ); 84 dbp -> `t_fx (dbp, ogme ); 85 i(( t = dbp -> `t_gesize (dbp, 1024)) != 0) { 86 dbp -> `r (dbp, t , "set_pagesize"); 87 r1 ; 89 i(( t = dbp -> `t_chesize (dbp, 0, 32 * 1024, 0)) != 0) { 90 dbp -> `r (dbp, t , "set_cachesize"); 91 r1 ; 93 i(( t = dbp -> `ݒ (dbp, 94 NULL , daba , NULL, DB_BTREE , DB_CREATE , 0664)) != 0) { 95 dbp -> `r (dbp, t , "%s: on", daba ); 96 r1 ; 103 `memt (& key , 0, ( DBT )); 104 `memt (& da , 0, ( DBT )); 106 `tf ("input> "); 107 `fush ( dout ); 108 i( `fgs ( buf , (buf), d = NULL ) 110 i( `rcmp ( buf , "exit\n") == 0 || strcmp(buf, "quit\n") == 0) 112 i(( n = ` ( buf )) <= 1) 114 t = rbuf , p = buf + ( n - 2); >= buf;) 115 * t ++ = * p --; 116 * t ++ = '\0'; 118 key . da = buf ; 119 da .d rbuf ; 120 da . size = key .siz( u_t32_t ) n - 1; 122 t = 123 dbp -> `put (dbp, NULL , & key , & da , DB_NOOVERWRITE )) { 127 dbp -> `r (dbp, t , "DB->put"); 128 i( t ! DB_KEYEXIST ) 129 r1 ; 133 `tf ("\n"); 136 i(( t = dbp -> `curs (dbp, NULL , & db , 0)) != 0) { 137 dbp -> `r (dbp, t , "DB->cursor"); 138 r1 ; 142 `memt (& key , 0, (key)); 143 `memt (& da , 0, (data)); 146 ( t = db -> `g (db, & key , & da , DB_NEXT )) == 0) 147 `tf ("%.*s : %.*s\n", 148 () key . size , (*)key. da , 149 () da . size , (*)data.data); 150 i( t ! DB_NOTFOUND ) { 151 dbp -> `r (dbp, t , "DBcursor->get"); 152 r2 ; 156 i(( t = db -> `o (dbcp)) != 0) { 157 dbp -> `r (dbp, t , "DBcursor->close"); 158 r1 ; 160 i(( t = dbp -> `o (dbp, 0)) != 0) { 161 `rtf ( dr , 162 "%s: DB->o: %s\n", ogme , `db_ ( t )); 163 ( EXIT_FAILURE ); 165 ( EXIT_SUCCESS ); 167 r2 : () db -> `o (dbcp); 168 r1 : () dbp -> `o (dbp, 0); 169 ( EXIT_FAILURE ); 170 } } 173 $dbdemo_uge () 175 () `rtf ( dr , "usage:x_access [-r] [database]\n"); 176 ( EXIT_FAILURE ); 177 } } @../build_windows/dbkill.cpp 24 ~<wdows.h > 25 ~<dio.h > 26 ~<dlib.h > 27 ~<lims.h > 35 $my (* s , ba ) 37 su = 0; 38 ch ; 39 sign = 1; 40 i( ba == 0) 41 ba = 10; 42 i( ba != 10 && base != 16) 43 LONG_MAX ; 44 ( ch = * s ++) != '\0') { 45 i( ch == '-') { 46 sign = -sign; 48 i( ch >= '0' && ch <= '9') { 49 su =esu * ba + ( ch - '0'); 51 i( ch == 'x' || ch == 'X') { 53 ba = 16; 55 i( ba =16 && ch >= 'a' && ch <= 'f') { 56 su =esu * ba + ( ch - 'a' + 10); 58 i( ba =16 && ch >= 'A' && ch <= 'F') { 59 su =esu * ba + ( ch - 'A' + 10); 62 i( sign > 1) 63 LONG_MAX ; 65 LONG_MIN ; 68 sign * su ; 69 } } 72 $uge_ex () 74 `rtf ( dr , "Usage: kill [ -sig ]id\n"); 75 `rtf ( dr , " for win32, sig must be or 0, 15 (TERM)\n"); 76 `ex ( EXIT_FAILURE ); 77 } } 80 $ma ( gc , ** gv ) 82 HANDLE hPross ; 83 DWORD acssag ; 84 pid ; 85 sig = 15; 87 i( gc > 2) { 88 i( gv [1][0] != '-') 89 `uge_ex (); 91 i( `rcmp ( gv [1], "-TERM") == 0) 92 sig = 15; 97 sig = `oi (& gv [1][1]); 98 i( sig < 0) 99 `uge_ex (); 101 gc --; 102 gv ++; 104 i( gc < 2) 105 `uge_ex (); 107 pid = `my ( gv [1], 10); 109 i( pid = LONG_MAX ||id = LONG_MIN ) 110 `uge_ex (); 112 i( sig == 0) 113 acssag = PROCESS_QUERY_INFORMATION | PROCESS_VM_READ ; 115 acssag = STANDARD_RIGHTS_REQUIRED | PROCESS_TERMINATE ; 116 hPross = `OnPross ( acssag , FALSE , pid ); 117 i( hPross = NULL ) { 118 `rtf ( dr , "dbkl: %s:suchross\n", gv [1]); 119 `ex ( EXIT_FAILURE ); 121 i( sig == 0) 122 `ex ( EXIT_SUCCESS ); 123 i(! `TmePross ( hPross , 99)) { 124 DWORD r = `GLaE (); 125 `rtf ( dr , 126 "dbkl: cn kȴoss: %d (0x%lx)\n", r ,rr); 127 `ex ( EXIT_FAILURE ); 129 EXIT_SUCCESS ; 130 } } @../build_windows/libdb.def 1 ; DO NOT gEDIT : automiy but by di / s_wdows . 3 EXPORTS 4 db_ @1 5 db_v_ @2 6 db_qu_ @3 7 db_ @4 8 db_vsi @5 9 db_xa_swch @6 10 log_com @7 11 __db_add_covy @8 12 __db_dbm_o @9 13 __db_dbm_de @10 14 __db_dbm_tch @11 15 __db_dbm_fkey @12 16 __db_dbm_ @13 17 __db_dbm_xtkey @14 18 __db_dbm_e @15 19 __db_g_ags_ @16 20 __db_g_q_ags_ @17 21 __db_h @18 22 __db_hderoy @19 23 __db_hch @20 24 __db_ldme @21 25 __db_ndbm_ @22 26 __db_ndbm_o @23 27 __db_ndbm_de @24 28 __db_ndbm_do @25 29 __db_ndbm_r @26 30 __db_ndbm_tch @27 31 __db_ndbm_fkey @28 32 __db_ndbm_xtkey @29 33 __db_ndbm_ݒ @30 34 __db_ndbm_go @31 35 __db_ndbm_rdly @32 36 __db_ndbm_e @33 37 __db_nic @34 38 __db_w32_mux_lock @35 39 __db_w32_mux_uock @36 40 __ham_func2 @37 41 __ham_func3 @38 42 __ham_func4 @39 43 __ham_func5 @40 44 __ham_ @41 45 __lock_id_t @42 46 __os_oc @43 47 __os_ohd @44 48 __os_d @45 49 __os_dli @46 50 __os_ @47 51 __os_fsync @48 52 __os_g_sy @49 53 __os_gv @50 54 __os_iofo @51 55 __os_mloc @52 56 __os_mkd @53 57 __os_ݒ @54 58 __os_ݒhd @55 59 __os_posix_r @56 60 __os_ad @57 61 __os_loc @58 62 __os_me @59 63 __os_rdup @60 64 __os_umloc @61 65 __os_uƚk @62 66 __os_wre @63 67 __txn_id_t @64 68 __bam_adj_ad @65 69 __bam_dju_ad @66 70 __bam_cd_ad @67 71 __bam_cudj_ad @68 72 __bam_mge_ad @69 73 __bam_pg @70 74 __bam_pgno_ad @71 75 __bam_pgout @72 76 __bam_rcudj_ad @73 77 __bam_lk_43_ad @74 78 __bam_lk_ad @75 79 __bam__ad @76 80 __bam_ro_ad @77 81 __bam_rl_ad @78 82 __bam_l_ad @79 83 __cfig_l @80 84 __d_mem__ad @81 85 __d_mem_move_ad @82 86 __d_mem_me_ad @83 87 __d_masub_ad @84 88 __db_addm_ad @85 89 __db_big_ad @86 90 __db_cksum_ad @87 91 __db_ime @88 92 __db_debug_ad @89 93 __db_dich @90 94 __db_dl @91 95 __db_dume @92 96 __db_r @93 97 __db_rx @94 98 __db_glg @95 99 __db_gulg @96 100 __db_glob_vues @97 101 __db_isbigdn @98 102 __db_mkth @99 103 __db_msg @100 104 __db_no_ad @101 105 __db_omode @102 106 __db_ovf_ad @103 107 __db_pg_loc_42_ad @104 108 __db_pg_loc_ad @105 109 __db_pg__42_ad @106 110 __db_pg__ad @107 111 __db_pg_da_42_ad @108 112 __db_pg_da_ad @109 113 __db_pg__ad @110 114 __db_pg_w_ad @111 115 __db_pg_e_ad @112 116 __db_pg_st_ad @113 117 __db_pg @114 118 __db_pgout @115 119 __db__back @116 120 __db_lk_42_ad @117 121 __db_h @118 122 __db__ @119 123 __db__t_ @120 124 __db_ut_che @121 125 __db_ut_ued @122 126 __db_ut_logt @123 127 __db_ut_sig @124 128 __db_ut_signd @125 129 __db_vify_ @126 130 __dbg_gi_ad @127 131 __f__ad @128 132 __f_fe_move_ad @129 133 __f_move_ad @130 134 __f_me_ad @131 135 __f_wre_ad @132 136 __ham_chgpg_ad @133 137 __ham_cyge_ad @134 138 __ham_cudj_ad @135 139 __ham_g_ma @136 140 __ham_grouoc_42_ad @137 141 __ham_grouoc_ad @138 142 __ham_sd_ad @139 143 __ham_magroup_42_ad @140 144 __ham_magroup_ad @141 145 __ham_wge_ad @142 146 __ham_pg @143 147 __ham_pgout @144 148 __ham_a_ma @145 149 __ham_a_ad @146 150 __ham_lda_ad @147 151 __lock_li_t @148 152 __log__ @149 153 __mux_t_wa_fo @150 154 __os_abh @151 155 __os_exis @152 156 __os_g_o @153 157 __os_gtime @154 158 __os_id @155 159 __os_mfe @156 160 __os_ek @157 161 __os_t_o @158 162 __os_p @159 163 __os_ @160 164 __os_u @161 165 __os_unmfe @162 166 __os_yld @163 167 __qam_add_ad @164 168 __qam_d_ad @165 169 __qam_dext_ad @166 170 __qam_cf_ad @167 171 __qam_mvr_ad @168 172 __qam_pg_out @169 173 __p__t @170 174 __txn_chd_ad @171 175 __txn_ckp_42_ad @172 176 __txn_ckp_ad @173 177 __txn_cye_ad @174 178 __txn_g_42_ad @175 179 __txn_g_ad @176 180 __txn_xa_g_ad @177 @../build_windows/libdb.rc 1 1 VERSIONINFO 2 gFILEVERSION 4,0,6,21 3 gPRODUCTVERSION 4,0,6,21 4 gFILEFLAGSMASK 0x3fL 5 #ifde _DEBUG 6 gFILEFLAGS 0x1L 8 gFILEFLAGS 0x0L 10 gFILEOS 0x4L 11 gFILETYPE 0x2L 12 gFILESUBTYPE 0x0L 14 BEGIN 15 gBLOCK "StringFileInfo" 16 BEGIN 17 gBLOCK "040904b0" 18 BEGIN 19 gVALUE "CompanyName", "Oracle\0" 20 gVALUE "FileDescription", "Berkeley DB 4.6 DLL\0" 21 gVALUE "FileVersion", "4.6.21\0" 22 gVALUE "InternalName", "libdb46.dll\0" 23 gVALUE "LegalCopyright", "Copyright Oracle 1997,2007\0" 24 gVALUE "OriginalFilename", "libdb46.dll\0" 25 gVALUE "ProductName", "Oracleibdb\0" 26 gVALUE "ProductVersion", "4.6.21\0" 27 END 28 END 29 gBLOCK "VarFileInfo" 30 BEGIN 31 gVALUE "Translation", 0x409, 1200 32 END 33 gEND @../build_windows/libdb_tcl.def 1 ; g$Id : libdb_t . def , gv 12.0 2004/11/17 03:48:15 boic Exp $ 3 DESCRIPTION 'Berkeley DB TCL interface Library' 4 EXPORTS 5 Db_t_In 6 _NameToP @../clib/atoi.c 34 ~"db_cfig.h " 36 ~"db_t.h " 46 $oi ( r ) 47 cڡ * r ; 49 () ` ( r , (**) NULL , 10); 50 } } @../clib/atol.c 34 ~"db_cfig.h " 36 ~"db_t.h " 46 $ ( r ) 47 cڡ * r ; 49 ` ( r , (**) NULL , 10); 50 } } @../clib/ctime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_ime ( tod , time_buf ) 21 cڡ time_t * tod ; 22 * time_buf ; 24 time_buf [ CTIME_BUFLEN - 1] = '\0'; 32 #i `defed ( HAVE_CTIME_R_3ARG ) 33 () `ime_r ( tod , time_buf , CTIME_BUFLEN ); 34 #i `defed ( HAVE_CTIME_R ) 35 () `ime_r ( tod , time_buf ); 37 () `y ( time_buf , `ime ( tod ), CTIME_BUFLEN - 1); 39 ( time_buf ); 40 } } @../clib/getaddrinfo.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 29 $__db_gaddrfo ( dbv , nodame , pt , rvme , hts , s ) 30 DB_ENV * dbv ; 31 cڡ * nodame , * rvme ; 32 u_t pt ; 33 cڡ ADDRINFO * hts ; 34 ADDRINFO ** s ; 36 #ifde HAVE_GETADDRINFO 37 t ; 39 i(( t = `gaddrfo ( nodame , rvme , hts , s )) == 0) 42 `__db_rx ( dbv , "%s(%u): hostookup failed: %s", 43 nodame = NULL ? "" :odame, pt , 44 #ifde DB_WIN32 45 `gai_A ( t )); 47 `gai_ ( t )); 49 ( `__os_posix_r ( t )); 51 ADDRINFO * sw ; 52 hot * hoaddr ; 53 sockaddr_ s ; 54 u_t32_t tmddr ; 55 t ; 57 `COMPQUIET ( hts , NULL ); 58 `COMPQUIET ( rvme , NULL ); 61 #idef INADDR_NONE 62 #INADDR_NONE (( u_lg )0xffffffff) ) 69 `memt (& s , 0, (sin)); 70 s . s_my = AF_INET ; 71 i( nodame ) { 72 i( nodame [0] == '\0') 73 s . s_addr . s_addr = `htl ( INADDR_ANY ); 74 i(( tmddr = `_addr ( nodame )! INADDR_NONE ) { 75 s . s_addr . s_addr = tmddr ; 77 hoaddr = `ghobyme ( nodame ); 78 i( hoaddr = NULL ) { 79 #ifde DB_WIN32 80 t = `__os_g_Ë (); 81 `__db_sy ( dbv , t , 83 nodame = NULL ? "" :odame, pt ); 84 ( `__os_posix_r ( t )); 97 #ifde HAVE_HSTRERROR 98 `__db_rx ( dbv , 100 nodame = NULL ? "" :odame, pt , 101 `h ( h_o )); 103 `__db_rx ( dbv , 105 nodame = NULL ? "" :odame, pt , 106 h_o ); 108 h_o ) { 109 HOST_NOT_FOUND : 110 NO_DATA : 111 ( EHOSTUNREACH ); 112 TRY_AGAIN : 113 ( EAGAIN ); 114 NO_RECOVERY : 116 ( EFAULT ); 121 `memy (&( s . s_addr ), 122 hoaddr -> h_addr , ( size_t )hoaddr-> h_ngth ); 125 s . s_addr . s_addr = `htl ( INADDR_ANY ); 126 s . s_pt = `hts (( u_t16_t ) pt ); 128 i(( t = `__os_oc ( dbv , 1, ( ADDRINFO ), & sw )) != 0) 129 ( t ); 130 i(( t = `__os_mloc ( dbv , ( s ), & sw -> ai_addr )) != 0) { 131 `__os_ ( dbv , sw ); 132 ( t ); 135 sw -> ai_my = AF_INET ; 136 sw -> ai_oc = IPPROTO_TCP ; 137 sw -> ai_sockty = SOCK_STREAM ; 138 sw -> ai_add = ( s ); 139 `memy ( sw -> ai_addr , & s , (sin)); 140 * s = sw ; 144 } } 154 $__db_addrfo ( dbv , ai ) 155 DB_ENV * dbv ; 156 ADDRINFO * ai ; 158 #ifde HAVE_GETADDRINFO 159 `COMPQUIET ( dbv , NULL ); 161 `addrfo ( ai ); 163 ADDRINFO * xt , * tmddr ; 165 xt = ai ;ex! NULL ;ex tmddr ) { 166 i( xt -> ai_nme ! NULL ) 167 `__os_ ( dbv , xt -> ai_nme ); 169 i( xt -> ai_addr ! NULL ) 170 `__os_ ( dbv , xt -> ai_addr ); 172 tmddr = xt -> ai_xt ; 173 `__os_ ( dbv , xt ); 176 } } @../clib/getcwd.c 37 ~"db_cfig.h " 39 ~"db_t.h " 41 #ifde HAVE_SYSTEM_INCLUDE_FILES 42 #i HAVE_DIRENT_H 43 ~<dt.h > 44 #NAMLEN ( dt ` ((dt)-> d_me ) ) 46 #dt de ) 47 #NAMLEN ( dt (dt)-> d_mn ) 48 #i HAVE_SYS_NDIR_H 49 ~<sys/nd.h > 51 #i HAVE_SYS_DIR_H 52 ~<sys/d.h > 54 #i HAVE_NDIR_H 55 ~<nd.h > 60 #ISDOT ( dp ) \ 61 ( dp -> d_me [0] == '.' && (dp->d_name[1] == '\0' || \ 62 ( dp -> d_me [1] ='.' && dp->d_me[2] ='\0'))) ) 64 #ide dfd 65 #dfd ( dp ((dp)-> dd_fd ) ) 77 $gcwd ( , size ) 78 * ; 79 size_t size ; 81 dt * dp ; 82 DIR * d ; 83 dev_t dev ; 84 o_t o ; 85 f ; 86 * b , * bup ; 87 s ; 88 dev_t ro_dev ; 89 o_t ro_o ; 90 size_t size , upsize ; 91 t , ve_o ; 92 * t , * eup , * up ; 99 i( ) { 100 size = 0; 101 i(! size ) { 102 `__os_t_o ( EINVAL ); 103 ( NULL ); 105 i( size == 1) { 106 `__os_t_o ( ERANGE ); 107 ( NULL ); 109 t = + size ; 111 i(( t = 112 `__os_mloc ( NULL , size = 1024 - 4, & )) != 0) { 113 `__os_t_o ( t ); 114 ( NULL ); 116 t = + size ; 118 b = t - 1; 119 * b = '\0'; 126 i(( t = `__os_mloc ( NULL , upsize = 1024 - 4, & up )) != 0) 127 r ; 128 eup = up + 1024; 129 bup = up ; 130 up [0] = '.'; 131 up [1] = '\0'; 134 i( ` ("/", & s )) 135 r ; 136 ro_dev = s . _dev ; 137 ro_o = s . _o ; 139 `__os_t_o (0); 141 f = 1;; first = 0) { 143 i( `l ( up , & s )) 144 r ; 147 o = s . _o ; 148 dev = s . _dev ; 151 i( ro_dev = dev && ro_o = o ) { 152 *-- b = PATH_SEPARATOR [0]; 158 `bcy ( b , , t - bpt); 159 `__os_ ( NULL , up ); 160 ( ); 168 i( bup + 3 + MAXNAMLEN + 1 > eup ) { 169 i( `__os_loc ( NULL , upsize *2, & up ) != 0) 170 r ; 171 bup = up ; 172 eup = up + upsize ; 174 * bup ++ = '.'; 175 * bup ++ = '.'; 176 * bup = '\0'; 179 i(!( d = `ݒd ( up )|| `f ( `dfd (d), & s )) 180 r ; 183 * bup ++ = PATH_SEPARATOR [0]; 190 ve_o = 0; 191 i( s . _dev = dev ) { 193 i(!( dp = `add ( d ))) 194 nfound ; 195 i( dp -> d_fo = o ) 200 i(!( dp = `add ( d ))) 201 nfound ; 202 i( `ISDOT ( dp )) 204 `bcy ( dp -> d_me , bup , dp-> d_mn + 1); 207 i( `l ( up , & s )) { 208 i( ve_o == 0) 209 ve_o = `__os_g_o (); 210 `__os_t_o (0); 213 i( s . _dev = dev && s. _o = o ) 221 i( b - < dp -> d_mn + ( f ? 1 : 2)) { 222 size_t n , off ; 224 i(! size ) { 225 `__os_t_o ( ERANGE ); 226 r ; 228 off = b - ; 229 n = t - b ; 230 i( `__os_loc ( NULL , size *2, & ) != 0) 231 r ; 232 b = + off ; 233 t = + size ; 234 `bcy ( b , t - n ,en); 235 b = t - n ; 237 i(! f ) 238 *-- b = PATH_SEPARATOR [0]; 239 b - dp -> d_mn ; 240 `bcy ( dp -> d_me , b , dp-> d_mn ); 241 () `od ( d ); 244 * bup = '\0'; 247 nfound : 253 i( `__os_g_o_t_zo () == 0) 254 `__os_t_o ( ve_o =0 ? ENOENT : save_errno); 256 r : 257 i( size ) 258 `__os_ ( NULL , ); 259 `__os_ ( NULL , up ); 260 ( NULL ); 261 } } @../clib/getopt.c 37 ~"db_cfig.h " 39 ~"db_t.h " 41 g__db_gt_t ; 43 g = 1, 44 gtd = 1, 45 gtt , 46 get ; 47 * gݏrg ; 49 #unde BADCH 50 #BADCH ()'?' ) 51 #unde BADARG 52 #BADARG ()':' ) 53 #unde EMSG 54 #EMSG "" ) 65 $gt ( rgc , rgv , or ) 66 rgc ; 67 * cڡ * rgv ; 68 cڡ * or ; 70 * ogme ; 71 * a = EMSG ; 72 * i ; 78 i( __db_gt_t ) { 79 __db_gt_t = 0; 81 = td = 1; 82 tt = et = 0; 83 ݏrg = NULL ; 84 ogme = NULL ; 85 a = EMSG ; 87 i(! ogme ) { 88 i(( ogme = `__db_h (* rgv )= NULL ) 89 ogme = * rgv ; 91 ++ ogme ; 94 i( et || !* a ) { 95 et = 0; 96 i( td > rgc || *( a = rgv [optind]) != '-') { 97 a = EMSG ; 98 ( EOF ); 100 i( a [1] && *++place == '-') { 101 ++ td ; 102 a = EMSG ; 103 ( EOF ); 106 i(( tt = ()* a ++) == ()':' || 107 !( i = `rchr ( or , tt ))) { 112 i( tt == ()'-') 113 ( EOF ); 114 i(!* a ) 115 ++ td ; 116 i( && * or != ':') 117 () `rtf ( dr , 118 "%s: ieg oi -- %c\n", ogme , tt ); 119 ( BADCH ); 121 i(*++ i != ':') { 122 ݏrg = NULL ; 123 i(!* a ) 124 ++ td ; 127 i(* a ) 128 ݏrg = a ; 129 i( rgc <++ td ) { 130 a = EMSG ; 131 i(* or == ':') 132 ( BADARG ); 133 i( ) 134 () `rtf ( dr , 136 ogme , tt ); 137 ( BADCH ); 140 ݏrg = rgv [ td ]; 141 a = EMSG ; 142 ++ td ; 144 ( tt ); 145 } } @../clib/isalpha.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $iha ( c ) 22 c ; 27 (( c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ? 1 : 0); 28 } } @../clib/isdigit.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $isdig ( c ) 22 c ; 27 ( c >= '0' && c <= '9' ? 1 : 0); 28 } } @../clib/isprint.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $irt ( c ) 22 c ; 27 (( c >= ' ' && c <= '~') ? 1 : 0); 28 } } @../clib/isspace.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $isa ( c ) 22 c ; 24 ( c == '\t' || c == '\n' || 25 c == '\v' || c == '\f' || c == '\r' || c == ' ' ? 1 : 0); 26 } } @../clib/memcmp.c 37 ~"db_cfig.h " 39 ~"db_t.h " 49 $memcmp ( s1 , s2 , n ) 50 cڡ * s1 , * s2 ; 51 size_t n ; 53 i( n != 0) { 54 * p1 = (*) s1 , 55 * p2 = (*) s2 ; 57 i(* p1 ++ !* p2 ++) 58 (*-- p1 - *-- p2 ); 59 } -- n != 0); 62 } } @../clib/memmove.c 37 ~"db_cfig.h " 39 ~"db_t.h " 45 twd ; 47 #unde wsize 48 #wsize ( wd ) ) 49 #unde wmask 50 #wmask ( wsize - 1) ) 57 #ifde MEMCOPY 64 $memy ( d0 , c0 , ngth ) 66 #ifde MEMMOVE 73 $memmove ( d0 , c0 , ngth ) 76 $bcy ( c0 , d0 , ngth ) 79 * d0 ; 80 cڡ * c0 ; 81 size_t ngth ; 83 * d = d0 ; 84 cڡ * c = c0 ; 85 size_t t ; 87 i( ngth =0 || d = c ) 88 de ; 93 #unde TLOOP 94 #TLOOP ( s i( t `TLOOP1 (s) ) 95 #unde TLOOP1 96 #TLOOP1 ( s d{ s; } -- t ) ) 98 i(() d < () c ) { 102 t = ( size_t ) c ; 103 i(( t | ( size_t ) d & wmask ) { 108 i(( t ^ ( size_t ) d & wmask || ngth < wsize ) 109 t = ngth ; 111 t = wsize - (& wmask ); 112 ngth - t ; 113 `TLOOP1 (* d ++ = * c ++); 118 t = ngth / wsize ; 119 `TLOOP (*( wd *) d = *(wd *) c ; sr+ wsize ; dst += wsize); 120 t = ngth & wmask ; 121 `TLOOP (* d ++ = * c ++); 128 c + ngth ; 129 d + ngth ; 130 t = ( size_t ) c ; 131 i(( t | ( size_t ) d & wmask ) { 132 i(( t ^ ( size_t ) d & wmask || ngth < wsize ) 133 t = ngth ; 135 t & wmask ; 136 ngth - t ; 137 `TLOOP1 (*-- d = *-- c ); 139 t = ngth / wsize ; 140 `TLOOP ( c - wsize ; d -wsize; *( wd *)dst = *(word *)src); 141 t = ngth & wmask ; 142 `TLOOP (*-- d = *-- c ); 144 de : 145 #i `defed ( MEMCOPY || defed( MEMMOVE ) 146 ( d0 ); 150 } } @../clib/printf.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 #ide HAVE_PRINTF 22 #ifde STDC_HEADERS 23 $tf (cڡ * fmt , ...) 25 $tf ( fmt , va_i ) 26 cڡ * fmt ; 27 va_d 30 va_li ; 31 size_t n ; 32 buf [2048]; 34 #ifde STDC_HEADERS 35 `va_t ( , fmt ); 37 `va_t ( ); 39 n = ( size_t ) `vtf ( buf , (buf), fmt , ); 40 #ifde HAVE_BREW 45 i( n > 0 && <( buf ) && buf[len - 1] == '\0') 46 -- n ; 49 `va_d ( ); 55 ( `fwre ( 56 buf , (), ( size_t ) n , dout ) ==en ? ()len: -1); 57 } } 67 #ide HAVE_PRINTF 69 #ifde STDC_HEADERS 70 $rtf ( FILE * , cڡ * fmt , ...) 72 $rtf ( , fmt , va_i ) 73 FILE * ; 74 cڡ * fmt ; 75 va_d 78 va_li ; 79 size_t n ; 80 buf [2048]; 82 #ifde STDC_HEADERS 83 `va_t ( , fmt ); 85 `va_t ( ); 87 n = `vtf ( buf , (buf), fmt , ); 88 #ifde HAVE_BREW 93 i( n > 0 && <( buf ) && buf[len - 1] == '\0') 94 -- n ; 97 `va_d ( ); 103 ( `fwre ( 104 buf , (), ( size_t ) n , ) ==en ? ()len: -1); 105 } } 115 #ide HAVE_PRINTF 117 $vrtf ( , fmt , ) 118 FILE * ; 119 cڡ * fmt ; 120 va_li ; 122 size_t n ; 123 buf [2048]; 125 n = `vtf ( buf , (buf), fmt , ); 126 #ifde HAVE_BREW 131 i( n > 0 && <( buf ) && buf[len - 1] == '\0') 132 -- n ; 139 ( `fwre ( 140 buf , (), ( size_t ) n , ) ==en ? ()len: -1); 141 } } @../clib/qsort.c 37 ~"db_cfig.h " 39 ~"db_t.h " 41 * med3 __P ((*, 43 swfunc `__P ((*, *, , )); 45 #m ( a , b < (b? : ) b 50 #swcode ( TYPE , rmi , rmj , n ) { \ 51 i = ( n / ( TYPE ); \ 52 TYPE * pi = (TYPE *( rmi ); \ 53 TYPE * pj = (TYPE *( rmj ); \ 55 TYPE t = * pi ; \ 56 * pi ++ = * pj ; \ 57 * pj ++ = t ; \ 58 } -- i > 0); \ 59 } ) } 61 #SWAPINIT ( a , es swty = ((*)a - (*)0) % () || \ 62 es % (? 2 :=()? 0 : 1; ) 64 le 65 $swfunc ( a , b , n , swty ) 66 * a , * b ; 67 n , swty ; 69 if( swty <= 1) 70 `swcode (, a , b , n ) 72 `swcode (, a , b , n ) 73 } } 75 #sw ( a , b ) \ 76 i( swty == 0) { \ 77 t = *(*)( a ); \ 78 *(*)( a *(*)( b ); \ 79 *(*)( b t ; \ 81 `swfunc ( a , b , es , swty ) ) 83 #vecsw ( a , b , n i(> 0 `swfunc , b,, swty ) ) 85 le * 86 $med3 ( a , b , c , cmp ) 87 * a , * b , * c ; 88 (* cmp )(const *, const *); 90 `cmp ( a , b ) < 0 ? 91 ( `cmp ( b , c < 0 ? b : (cmp( a , c) < 0 ? c : )) 92 :( `cmp ( b , c > 0 ? b : (cmp( a , c) < 0 ? : c )); 93 } } 102 $qst ( a , n , es , cmp ) 103 * a ; 104 size_t n , es ; 105 (* cmp `__P ((const *, const *)); 107 * , * pb , * pc , * pd , * , * pm , * ; 108 d , r , swty , sw_t ; 110 lo : `SWAPINIT ( a , es ); 111 sw_t = 0; 112 i( n < 7) { 113 pm = (*) a + es ;m < (* + n *s;m +=s) 114 = pm ;> (*) a && `cmp - es ,l) > 0; 115 - es ) 116 `sw ( ,- es ); 119 pm = (*) a + ( n / 2* es ; 120 i( n > 7) { 121 = a ; 122 = (*) a + ( n - 1* es ; 123 i( n > 40) { 124 d = ( n / 8* es ; 125 = `med3 l,+ d ,+ 2 * d, cmp ); 126 pm = `med3 m - d ,m,m + d, cmp ); 127 = `med3 - 2 * d ,- d,n, cmp ); 129 pm = `med3 ( ,m, , cmp ); 131 `sw ( a , pm ); 132 = pb = (*) a + es ; 134 pc = pd = (*) a + ( n - 1* es ; 136 pb < pc && ( r = `cmp b, a )) <= 0) { 137 i( r == 0) { 138 sw_t = 1; 139 `sw ( , pb ); 140 + es ; 142 pb + es ; 144 pb < pc && ( r = `cmp c, a )) >= 0) { 145 i( r == 0) { 146 sw_t = 1; 147 `sw ( pc , pd ); 148 pd - es ; 150 pc - es ; 152 i( pb > pc ) 154 `sw ( pb , pc ); 155 sw_t = 1; 156 pb + es ; 157 pc - es ; 159 i( sw_t == 0) { 160 pm = (*) a + es ;m < (* + n *s;m +=s) 161 = pm ;> (*) a && `cmp - es ,l) > 0; 162 - es ) 163 `sw ( ,- es ); 167 = (*) a + n * es ; 168 r = `m ( - (*) a , pb -a); 169 `vecsw ( a , pb - r ,); 170 r = `m (()( pd - pc ), ()( -d - es )); 171 `vecsw ( pb , - r ,); 172 i(( r = ()( pb - )> () es ) 173 `qst ( a , r / es ,s, cmp ); 174 i(( r = ()( pd - pc )> () es ) { 176 a = - r ; 177 n = r / es ; 178 lo ; 181 } } @../clib/raise.c 9 ~"db_cfig.h " 11 ~"db_t.h " 22 $i ( s ) 23 s ; 25 ( `kl ( `gpid (), s )); 26 } } @../clib/rand.c 4 ~"db_cfig.h " 6 ~"db_t.h " 16 $nd () 18 `DB_GLOBAL ( nd_xt ) = DB_GLOBAL(rand_next) * 1103515245 + 12345; 19 (( `DB_GLOBAL ( nd_xt )/65536) % 32768; 20 } } 22 $d ( ed ) 24 `DB_GLOBAL ( nd_xt ed ; 25 } } @../clib/snprintf.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #i! defed ( HAVE_SNPRINTF || !defed( HAVE_VSNPRINTF ) 14 rtf_ovow __P (()); 15 rtf_tcht __P (()); 26 #ide HAVE_SNPRINTF 28 #ifde STDC_HEADERS 29 $tf (* r , size_t n , cڡ * fmt , ...) 31 $tf ( r , n , fmt , va_i ) 32 * r ; 33 size_t n ; 34 cڡ * fmt ; 35 va_d 38 t_cht = -1; 39 va_li ; 40 size_t n ; 42 i( t_cht == -1) 43 t_cht = `rtf_tcht (); 45 #ifde STDC_HEADERS 46 `va_t ( , fmt ); 48 `va_t ( ); 50 n = ( size_t ) `vrtf ( r , fmt , ); 51 i( t_cht ) 52 n = ` ( r ); 54 `va_d ( ); 56 i( n > n ) { 57 `rtf_ovow (); 60 (() n ); 61 } } 72 #ide HAVE_VSNPRINTF 74 $vtf ( r , n , fmt , ) 75 * r ; 76 size_t n ; 77 cڡ * fmt ; 78 va_li ; 80 t_cht = -1; 81 size_t n ; 83 i( t_cht == -1) 84 t_cht = `rtf_tcht (); 86 n = ( size_t ) `vrtf ( r , fmt , ); 87 i( t_cht ) 88 n = ` ( r ); 90 i( n > n ) { 91 `rtf_ovow (); 94 (() n ); 95 } } 98 #i! defed ( HAVE_SNPRINTF || !defed( HAVE_VSNPRINTF ) 100 $rtf_ovow () 112 #OVERFLOW_ERROR " bufovow,rosded\n" ) 113 #idef STDERR_FILENO 114 #STDERR_FILENO 2 ) 116 () `wre ( STDERR_FILENO , OVERFLOW_ERROR , (OVERFLOW_ERROR) - 1); 119 `ex (1); 122 `__os_abt (); 125 } } 128 $rtf_tcht () 130 t_cht ; 131 buf [10]; 142 t_cht = 143 () `rtf ( buf , "123") != 3 || 144 () `rtf ( buf , "123456789") != 9 || 145 () `rtf ( buf , "1234") != 4; 147 ( t_cht ); 148 } } @../clib/strcasecmp.c 36 ~"db_cfig.h " 38 ~"db_t.h " 49 $rcmp ( s1 , s2 ) 50 cڡ * s1 , * s2 ; 52 u_ch s1ch , s2ch ; 55 s1ch = * s1 ++; 56 s2ch = * s2 ++; 57 i( s1ch >= 'A' && s1ch <= 'Z') 58 s1ch += 32; 59 i( s2ch >= 'A' && s2ch <= 'Z') 60 s2ch += 32; 61 i( s1ch ! s2ch ) 62 ( s1ch - s2ch ); 63 i( s1ch == '\0') 67 } } 78 $cmp ( s1 , s2 , n ) 79 cڡ * s1 , * s2 ; 80 size_t n ; 82 u_ch s1ch , s2ch ; 84 ; n != 0; --n) { 85 s1ch = * s1 ++; 86 s2ch = * s2 ++; 87 i( s1ch >= 'A' && s1ch <= 'Z') 88 s1ch += 32; 89 i( s2ch >= 'A' && s2ch <= 'Z') 90 s2ch += 32; 91 i( s1ch ! s2ch ) 92 ( s1ch - s2ch ); 93 i( s1ch == '\0') 97 } } @../clib/strcat.c 34 ~"db_cfig.h " 36 ~"db_t.h " 46 $rt (* s , cڡ * nd ) 48 * ve = s ; 50 ; * s ; ++s); 51 (* s ++ = * nd ++)); 52 ( ve ); 53 } } @../clib/strchr.c 34 ~"db_cfig.h " 36 ~"db_t.h " 45 * $rchr (cڡ * p , ch ) 47 c ; 49 c = ch ; 50 ;; ++ p ) { 51 i(* p = c ) 52 ((*) p ); 53 i(* p == '\0') 54 ( NULL ); 57 } } @../clib/strdup.c 36 ~"db_cfig.h " 38 ~"db_t.h " 48 $rdup ( r ) 49 cڡ * r ; 51 size_t n ; 52 * cy ; 54 n = ` ( r ) + 1; 55 i(!( cy = `mloc (( u_t ) n ))) 56 ( NULL ); 57 `memy ( cy , r , n ); 58 ( cy ); 59 } } @../clib/strerror.c 72 ~"db_cfig.h " 74 ~"db_t.h " 85 $ ( num ) 86 num ; 88 #ERRSTR ( v , s ) do { \ 89 i( num =( v )) \ 90 ( s ); \ 91 } 0) ) 92 `ERRSTR (0, "Undefinedrror: 0"); 93 `ERRSTR ( EPERM , "Operationotermitted"); 94 `ERRSTR ( ENOENT , "No such file or directory"); 95 `ERRSTR ( ESRCH , "No suchrocess"); 96 `ERRSTR ( EINTR , "Interrupted system call"); 97 `ERRSTR ( EIO , "Input/outputrror"); 98 `ERRSTR ( ENXIO , "Deviceot configured"); 99 `ERRSTR ( E2BIG , "Argumentistooong"); 100 `ERRSTR ( ENOEXEC , "Exec formatrror"); 101 `ERRSTR ( EBADF , "Bad file descriptor"); 102 `ERRSTR ( ECHILD , "No childrocesses"); 103 `ERRSTR ( EDEADLK , "Resource deadlockvoided"); 104 `ERRSTR ( ENOMEM , "Cannotllocate memory"); 105 `ERRSTR ( EACCES , "Permission denied"); 106 `ERRSTR ( EFAULT , "Badddress"); 107 `ERRSTR ( ENOTBLK , "Block deviceequired"); 108 `ERRSTR ( EBUSY , "Device busy"); 109 `ERRSTR ( EEXIST , "Filexists"); 110 `ERRSTR ( EXDEV , "Cross-deviceink"); 111 `ERRSTR ( ENODEV , "Operationot supported by device"); 112 `ERRSTR ( ENOTDIR , "Not directory"); 113 `ERRSTR ( EISDIR , "Is directory"); 114 `ERRSTR ( EINVAL , "Invalidrgument"); 115 `ERRSTR ( ENFILE , "Too many open files in system"); 116 `ERRSTR ( EMFILE , "Too many open files"); 117 `ERRSTR ( ENOTTY , "Inappropriate ioctl for device"); 118 `ERRSTR ( ETXTBSY , "Text file busy"); 119 `ERRSTR ( EFBIG , "Fileooarge"); 120 `ERRSTR ( ENOSPC , "No spaceeft on device"); 121 `ERRSTR ( ESPIPE , "Illegal seek"); 122 `ERRSTR ( EROFS , "Read-only file system"); 123 `ERRSTR ( EMLINK , "Too manyinks"); 124 `ERRSTR ( EPIPE , "Brokenipe"); 127 `ERRSTR ( EDOM , "Numericalrgument out of domain"); 128 `ERRSTR ( ERANGE , "Resultooarge"); 131 `ERRSTR ( EAGAIN , "Resourceemporarily unavailable"); 132 `ERRSTR ( EWOULDBLOCK , "Resourceemporarily unavailable"); 133 `ERRSTR ( EINPROGRESS , "Operationow inrogress"); 134 `ERRSTR ( EALREADY , "Operationlready inrogress"); 137 `ERRSTR ( ENOTSOCK , "Socket operation onon-socket"); 138 `ERRSTR ( EDESTADDRREQ , "Destinationddressequired"); 139 `ERRSTR ( EMSGSIZE , "Messageooong"); 140 `ERRSTR ( EPROTOTYPE , "Protocol wrongype for socket"); 141 `ERRSTR ( ENOPROTOOPT , "Protocolotvailable"); 142 `ERRSTR ( EPROTONOSUPPORT , "Protocolot supported"); 143 `ERRSTR ( ESOCKTNOSUPPORT , "Socketypeot supported"); 144 `ERRSTR ( EOPNOTSUPP , "Operationot supported"); 145 `ERRSTR ( EPFNOSUPPORT , "Protocol familyot supported"); 146 `ERRSTR ( EAFNOSUPPORT , "Address familyot supported byrotocol family"); 147 `ERRSTR ( EADDRINUSE , "Addresslready in use"); 148 `ERRSTR ( EADDRNOTAVAIL , "Can'tssignequestedddress"); 151 `ERRSTR ( ENETDOWN , "Network is down"); 152 `ERRSTR ( ENETUNREACH , "Network is unreachable"); 153 `ERRSTR ( ENETRESET , "Network dropped connection oneset"); 154 `ERRSTR ( ECONNABORTED , "Software caused connectionbort"); 155 `ERRSTR ( ECONNRESET , "Connectioneset byeer"); 156 `ERRSTR ( ENOBUFS , "No buffer spacevailable"); 157 `ERRSTR ( EISCONN , "Socket islready connected"); 158 `ERRSTR ( ENOTCONN , "Socket isot connected"); 159 `ERRSTR ( ESHUTDOWN , "Can't sendfter socket shutdown"); 160 `ERRSTR ( ETOOMANYREFS , "Too manyeferences: can't splice"); 161 `ERRSTR ( ETIMEDOUT , "Operationimed out"); 162 `ERRSTR ( ECONNREFUSED , "Connectionefused"); 164 `ERRSTR ( ELOOP , "Too manyevels of symbolicinks"); 165 `ERRSTR ( ENAMETOOLONG , "Fileameooong"); 168 `ERRSTR ( EHOSTDOWN , "Host is down"); 169 `ERRSTR ( EHOSTUNREACH , "Noouteo host"); 170 `ERRSTR ( ENOTEMPTY , "Directoryotmpty"); 173 `ERRSTR ( EPROCLIM , "Too manyrocesses"); 174 `ERRSTR ( EUSERS , "Too many users"); 175 `ERRSTR ( EDQUOT , "Disc quotaxceeded"); 178 `ERRSTR ( ESTALE , "Stale NFS file handle"); 179 `ERRSTR ( EREMOTE , "Too manyevels ofemote inath"); 180 `ERRSTR ( EBADRPC , "RPC struct is bad"); 181 `ERRSTR ( ERPCMISMATCH , "RPC version wrong"); 182 `ERRSTR ( EPROGUNAVAIL , "RPCrog.otvail"); 183 `ERRSTR ( EPROGMISMATCH , "Program version wrong"); 184 `ERRSTR ( EPROCUNAVAIL , "Badrocedure forrogram"); 186 `ERRSTR ( ENOLCK , "Noocksvailable"); 187 `ERRSTR ( ENOSYS , "Functionot implemented"); 188 `ERRSTR ( EFTYPE , "Inappropriate fileype or format"); 189 #ifde EAUTH 190 `ERRSTR ( EAUTH , "Authenticationrror"); 192 #ifde ENEEDAUTH 193 `ERRSTR ( ENEEDAUTH , "Needuthenticator"); 195 `ERRSTR ( EIDRM , "Identifieremoved"); 196 `ERRSTR ( ENOMSG , "No message of desiredype"); 197 #ifde EOVERFLOW 198 `ERRSTR ( EOVERFLOW , "Valueooargeo be stored in dataype"); 200 `ERRSTR ( ECANCELED , "Operation canceled"); 201 `ERRSTR ( EILSEQ , "Illegal byte sequence"); 202 #ifde ENOATTR 203 `ERRSTR ( ENOATTR , "Attributeot found"); 207 #ifde EDOOFUS 208 `ERRSTR ( EDOOFUS , "Programmingrror"); 211 #ifde EBADMSG 212 `ERRSTR ( EBADMSG , "Bad message"); 214 #ifde EMULTIHOP 215 `ERRSTR ( EMULTIHOP , "Multihopttempted"); 217 #ifde ENOLINK 218 `ERRSTR ( ENOLINK , "Link has been severed"); 220 #ifde EPROTO 221 `ERRSTR ( EPROTO , "Protocolrror"); 224 ( `__db_unknown_r ( num )); 225 } } @../clib/strncat.c 37 ~"db_cfig.h " 39 ~"db_t.h " 53 $t (* d , cڡ * c , size_t n ) 55 i( n != 0) { 56 * d = d ; 57 cڡ * s = c ; 59 * d != 0) 60 d ++; 62 i((* d = * s ++) == 0) 64 d ++; 65 } -- n != 0); 66 * d = 0; 68 ( d ); 69 } } @../clib/strncmp.c 34 ~"db_cfig.h " 36 ~"db_t.h " 46 $cmp ( s1 , s2 , n ) 47 cڡ * s1 , * s2 ; 48 size_t n ; 51 i( n == 0) 54 i(* s1 !* s2 ++) 55 (*(cڡ *) s1 - 56 *(cڡ *)( s2 - 1)); 57 i(* s1 ++ == 0) 59 } -- n != 0); 61 } } @../clib/strrchr.c 34 ~"db_cfig.h " 36 ~"db_t.h " 45 * $chr (cڡ * p , ch ) 47 * ve ; 48 c ; 50 c = ch ; 51 ve = NULL ;; ++ p ) { 52 i(* p = c ) 53 ve = (*) p ; 54 i(* p == '\0') 55 ( ve ); 58 } } @../clib/strsep.c 34 ~"db_cfig.h " 36 ~"db_t.h " 54 $rp ( rgp , dim ) 55 ** rgp ; 56 cڡ * dim ; 58 * s ; 59 cڡ * p ; 60 c , sc ; 61 * tok ; 63 i(( s = * rgp = NULL ) 64 ( NULL ); 65 tok = s ;;) { 66 c = * s ++; 67 p = dim ; 69 i(( sc = * p ++= c ) { 70 i( c == 0) 71 s = NULL ; 73 s [-1] = 0; 74 * rgp = s ; 75 ( tok ); 77 } sc != 0); 80 } } @../clib/strtol.c 36 ~"db_cfig.h " 38 ~"db_t.h " 51 $ ( Ō , dr , ba ) 52 cڡ * Ō ; 53 ** dr ; 54 ba ; 56 cڡ * s ; 57 acc ; 58 c ; 59 cutoff ; 60 g , y , cuim ; 67 s = Ō ; 69 c = * s ++; 70 } `isa (() c )); 71 i( c == '-') { 72 g = 1; 73 c = * s ++; 75 g = 0; 76 i( c == '+') 77 c = * s ++; 79 i(( ba == 0 || base == 16) && 80 c ='0' && (* s == 'x' || *s == 'X')) { 81 c = s [1]; 82 s += 2; 83 ba = 16; 85 i( ba == 0) 86 ba = c == '0' ? 8 : 10; 87 acc = y = 0; 88 i( ba < 2 || base > 36) 89 nocv ; 108 cutoff = g ? ()-( LONG_MIN + LONG_MAX ) + LONG_MAX 109 : LONG_MAX ; 110 cuim = cutoff % ba ; 111 cutoff / ba ; 112 ; ; c = * s ++) { 113 i( c >= '0' && c <= '9') 114 c -= '0'; 115 i( c >= 'A' && c <= 'Z') 116 c -= 'A' - 10; 117 i( c >= 'a' && c <= 'z') 118 c -= 'a' - 10; 121 i( c > ba ) 123 i( y < 0 || acc > cutoff || (ac=cutof&& c > cuim )) 124 y = -1; 126 y = 1; 127 acc * ba ; 128 acc + c ; 131 i( y < 0) { 132 acc = g ? LONG_MIN : LONG_MAX ; 133 o = ERANGE ; 134 } i(! y ) { 135 nocv : 136 o = EINVAL ; 137 } i( g ) 138 acc = -()acc; 139 i( dr ! NULL ) 140 * dr = (*)( y ? s - 1 : Ō ); 141 ( acc ); 142 } } @../clib/strtoul.c 36 ~"db_cfig.h " 38 ~"db_t.h " 51 $oul ( Ō , dr , ba ) 52 cڡ * Ō ; 53 ** dr ; 54 ba ; 56 cڡ * s ; 57 acc ; 58 c ; 59 cutoff ; 60 g , y , cuim ; 65 s = Ō ; 67 c = * s ++; 68 } `isa (() c )); 69 i( c == '-') { 70 g = 1; 71 c = * s ++; 73 g = 0; 74 i( c == '+') 75 c = * s ++; 77 i(( ba == 0 || base == 16) && 78 c ='0' && (* s == 'x' || *s == 'X')) { 79 c = s [1]; 80 s += 2; 81 ba = 16; 83 i( ba == 0) 84 ba = c == '0' ? 8 : 10; 85 acc = y = 0; 86 i( ba < 2 || base > 36) 87 nocv ; 89 cutoff = ULONG_MAX / ba ; 90 cuim = ULONG_MAX % ba ; 91 ; ; c = * s ++) { 92 i( c >= '0' && c <= '9') 93 c -= '0'; 94 i( c >= 'A' && c <= 'Z') 95 c -= 'A' - 10; 96 i( c >= 'a' && c <= 'z') 97 c -= 'a' - 10; 100 i( c > ba ) 102 i( y < 0 || acc > cutoff || (ac=cutof&& c > cuim )) 103 y = -1; 105 y = 1; 106 acc * ba ; 107 acc + c ; 110 i( y < 0) { 111 acc = ULONG_MAX ; 112 o = ERANGE ; 113 } i(! y ) { 114 nocv : 115 o = EINVAL ; 116 } i( g ) 117 acc = -acc; 118 i( dr ! NULL ) 119 * dr = (*)( y ? s - 1 : Ō ); 120 ( acc ); 121 } } @../common/crypto_stub.c 9 ~"db_cfig.h " 11 ~"db_t.h " 25 $__yo_gi_ ( dbv ) 26 DB_ENV * dbv ; 28 REGENV * nv ; 29 REGINFO * f ; 30 t ; 32 f = dbv -> gfo ; 33 nv = f -> imy ; 34 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 35 t = !( nv -> ch_off = INVALID_ROFF ); 36 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 38 i( t == 0) 41 `__db_rx ( dbv , 43 ( DB_OPNOTSUP ); 44 } } @../common/db_byteorder.c 9 ~"db_cfig.h " 11 ~"db_t.h " 23 $__db_isbigdn () 26 l ; 27 c [()]; 28 } u ; 30 u . l = 1; 31 ( u . c [() - 1] == 1); 32 } } 42 $__db_byd ( dbv , ld ) 43 DB_ENV * dbv ; 44 ld ; 46 is_bigdn ; 48 is_bigdn = `__db_isbigdn (); 50 ld ) { 54 i( is_bigdn ) 55 ( DB_SWAPBYTES ); 58 i(! is_bigdn ) 59 ( DB_SWAPBYTES ); 62 `__db_rx ( dbv , 64 ( EINVAL ); 67 } } @../common/db_err.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/txn.h " 19 __db_msg __P ((cڡ DB_ENV *, cڡ *, va_li )); 20 __db_msgfe __P ((cڡ DB_ENV *, cڡ *, va_li )); 29 $__db_fchk ( dbv , me , ags , ok_ags ) 30 DB_ENV * dbv ; 31 cڡ * me ; 32 u_t32_t ags , ok_ags ; 34 ( `LF_ISSET (~ ok_ags ? `__db_ ( dbv , me , 0) : 0); 35 } } 45 $__db_fcchk ( dbv , me , ags , ag1 , ag2 ) 46 DB_ENV * dbv ; 47 cڡ * me ; 48 u_t32_t ags , ag1 , ag2 ; 50 ( `LF_ISSET ( ag1 ) && 51 `LF_ISSET ( ag2 ? `__db_ ( dbv , me , 1) : 0); 52 } } 61 $__db_ ( dbv , me , iscombo ) 62 cڡ DB_ENV * dbv ; 63 cڡ * me ; 64 iscombo ; 66 `__db_rx ( dbv , "illegal flag %sspecifiedo %s", 67 iscombo ? "combi " : "", me ); 68 ( EINVAL ); 69 } } 78 $__db_l ( dbv , me ) 79 cڡ DB_ENV * dbv ; 80 cڡ * me ; 82 `__db_rx ( dbv , 84 me ); 85 ( EINVAL ); 86 } } 95 $__db_pgr ( dbp , pgno , rv ) 96 DB * dbp ; 97 db_pgno_t pgno ; 98 rv ; 105 `__db_rx ( dbp -> dbv , 106 "ubˁ/vg%lu", ( u_lg ) pgno ); 107 ( `__db_nic ( dbp -> dbv , rv )); 108 } } 117 $__db_pgfmt ( dbv , pgno ) 118 DB_ENV * dbv ; 119 db_pgno_t pgno ; 121 `__db_rx ( dbv , "g%lu: iegagty ofm", ( u_lg ) pgno ); 122 ( `__db_nic ( dbv , EINVAL )); 123 } } 125 #ifde DIAGNOSTIC 135 $__db_as ( dbv , e , fe , le ) 136 DB_ENV * dbv ; 137 cڡ * e , * fe ; 138 le ; 140 `__db_rx ( dbv , "as fau: %s/%d: \"%s\"", fe , le , e ); 142 `__os_abt (); 144 } } 154 $__db_nic_msg ( dbv ) 155 DB_ENV * dbv ; 157 t ; 159 t = DB_RUNRECOVERY ; 161 `__db_rx ( dbv , "PANIC: fatalegionrror detected;unecovery"); 163 i( dbv -> db_nic ! NULL ) 164 dbv -> `db_nic (dbv, t ); 165 `DB_EVENT ( dbv , DB_EVENT_PANIC , & t ); 167 ( t ); 168 } } 177 $__db_nic ( dbv , rv ) 178 DB_ENV * dbv ; 179 rv ; 181 i( dbv ! NULL ) { 182 `__v_nic_t ( dbv , 1); 184 `__db_r ( dbv , rv , "PANIC"); 186 i( dbv -> db_nic ! NULL ) 187 dbv -> `db_nic (dbv, rv ); 188 `DB_EVENT ( dbv , DB_EVENT_PANIC , & rv ); 191 #i `defed ( DIAGNOSTIC && !defed( CONFIG_TEST ) 199 `__os_abt (); 208 ( DB_RUNRECOVERY ); 209 } } 218 $db_ ( r ) 219 r ; 221 * p ; 223 i( r == 0) 225 i( r > 0) { 226 i(( p = ` ( r )! NULL ) 227 ( p ); 228 ( `__db_unknown_r ( r )); 238 r ) { 239 DB_BUFFER_SMALL : 242 DB_DONOTINDEX : 244 DB_KEYEMPTY : 246 DB_KEYEXIST : 248 DB_LOCK_DEADLOCK : 251 DB_LOCK_NOTGRANTED : 253 DB_LOG_BUFFER_FULL : 255 DB_NOSERVER : 257 DB_NOSERVER_HOME : 259 DB_NOSERVER_ID : 261 DB_NOTFOUND : 263 DB_OLD_VERSION : 265 DB_PAGE_NOTFOUND : 267 DB_REP_DUPMASTER : 269 DB_REP_HANDLE_DEAD : 271 DB_REP_HOLDELECTION : 273 DB_REP_IGNORE : 275 DB_REP_ISPERM : 277 DB_REP_JOIN_FAILURE : 280 DB_REP_LEASE_EXPIRED : 283 DB_REP_LOCKOUT : 286 DB_REP_NEWSITE : 288 DB_REP_NOTPERM : 290 DB_REP_UNAVAIL : 292 DB_RUNRECOVERY : 294 DB_SECONDARY_BAD : 297 DB_VERIFY_BAD : 299 DB_VERSION_MISMATCH : 306 ( `__db_unknown_r ( r )); 307 } } 316 $__db_unknown_r ( r ) 317 r ; 330 () `tf ( `DB_GLOBAL ( r_buf ), 331 ( `DB_GLOBAL ( r_buf )), "Unknowr: %d", r ); 332 ( `DB_GLOBAL ( r_buf )); 333 } } 343 #ifde STDC_HEADERS 344 $__db_sy (cڡ DB_ENV * dbv , r , cڡ * fmt , ...) 346 $__db_sy ( dbv , r , fmt , va_i ) 347 cڡ DB_ENV * dbv ; 348 r ; 349 cڡ * fmt ; 350 va_d 358 `DB_REAL_ERR ( dbv , r , DB_ERROR_SYSTEM , 0, fmt ); 359 } } 369 #ifde STDC_HEADERS 370 $__db_r (cڡ DB_ENV * dbv , r , cڡ * fmt , ...) 372 $__db_r ( dbv , r , fmt , va_i ) 373 cڡ DB_ENV * dbv ; 374 r ; 375 cڡ * fmt ; 376 va_d 383 `DB_REAL_ERR ( dbv , r , DB_ERROR_SET , 0, fmt ); 384 } } 394 #ifde STDC_HEADERS 395 $__db_rx (cڡ DB_ENV * dbv , cڡ * fmt , ...) 397 $__db_rx ( dbv , fmt , va_i ) 398 cڡ DB_ENV * dbv ; 399 cڡ * fmt ; 400 va_d 407 `DB_REAL_ERR ( dbv , 0, DB_ERROR_NOT_SET , 0, fmt ); 408 } } 418 $__db_r ( dbv , r , r_t , fmt , ) 419 cڡ DB_ENV * dbv ; 420 r ; 421 db_r_t_t r_t ; 422 cڡ * fmt ; 423 va_li ; 425 * p ; 426 buf [2048]; 427 sysbuf [1024]; 429 p = buf ; 430 i( fmt ! NULL ) 431 p + `vtf ( buf , (buf), fmt , ); 432 i( r_t ! DB_ERROR_NOT_SET ) 433 p + `tf (p, 434 ( buf - ( size_t )( p - buf), ": %s", 435 r_t = DB_ERROR_SET ? `db_ ( r ) : 436 `__os_ ( r , sysbuf , (sysbuf))); 438 dbv -> `db_r (dbv, dbv-> db_fx , buf ); 439 } } 449 $__db_rfe ( dbv , r , r_t , fmt , ) 450 cڡ DB_ENV * dbv ; 451 r ; 452 db_r_t_t r_t ; 453 cڡ * fmt ; 454 va_li ; 456 FILE * ; 457 sysbuf [1024]; 459 = dbv = NULL || 460 dbv -> db_rfe = NULL ? dr : dbenv->db_errfile; 462 i( dbv ! NULL && dbv-> db_fx != NULL) 463 () `rtf ( , "%s: ", dbv -> db_fx ); 464 i( fmt ! NULL ) { 465 () `vrtf ( , fmt , ); 466 i( r_t ! DB_ERROR_NOT_SET ) 467 () `rtf ( , ": "); 469 i( r_t ! DB_ERROR_NOT_SET ) 470 () `rtf ( , "%s", 471 r_t = DB_ERROR_SET ? `db_ ( r ) : 472 `__os_ ( r , sysbuf , (sysbuf))); 473 () `rtf ( , "\n"); 474 () `fush ( ); 475 } } 485 #ifde STDC_HEADERS 486 $__db_msgadd ( DB_ENV * dbv , DB_MSGBUF * mbp , cڡ * fmt , ...) 488 $__db_msgadd ( dbv , mbp , fmt , va_i ) 489 DB_ENV * dbv ; 490 DB_MSGBUF * mbp ; 491 cڡ * fmt ; 492 va_d 495 va_li ; 497 #ifde STDC_HEADERS 498 `va_t ( , fmt ); 500 `va_t ( ); 502 `__db_msgadd_ ( dbv , mbp , fmt , ); 503 `va_d ( ); 504 } } 514 $__db_msgadd_ ( dbv , mbp , fmt , ) 515 DB_ENV * dbv ; 516 DB_MSGBUF * mbp ; 517 cڡ * fmt ; 518 va_li ; 520 size_t n , ޒ ; 521 buf [2048]; 523 n = ( size_t ) `vtf ( buf , (buf), fmt , ); 530 ޒ = ( size_t )( mbp -> cur - mbp-> buf ); 531 i( ޒ + n > mbp ->len) { 532 i( `__os_loc ( dbv , mbp -> n + + 256, &mbp-> buf )) 534 mbp -> n += (len + 256); 535 mbp -> cur = mbp-> buf + ޒ ; 538 `memy ( mbp -> cur , buf , n + 1); 539 mbp -> cur + n ; 540 } } 550 #ifde STDC_HEADERS 551 $__db_msg (cڡ DB_ENV * dbv , cڡ * fmt , ...) 553 $__db_msg ( dbv , fmt , va_i ) 554 cڡ DB_ENV * dbv ; 555 cڡ * fmt ; 556 va_d 559 `DB_REAL_MSG ( dbv , fmt ); 560 } } 567 $__db_msg ( dbv , fmt , ) 568 cڡ DB_ENV * dbv ; 569 cڡ * fmt ; 570 va_li ; 572 buf [2048]; 574 () `vtf ( buf , (buf), fmt , ); 576 dbv -> `db_msg (dbv, buf ); 577 } } 584 $__db_msgfe ( dbv , fmt , ) 585 cڡ DB_ENV * dbv ; 586 cڡ * fmt ; 587 va_li ; 589 FILE * ; 591 = dbv = NULL || 592 dbv -> db_msgfe = NULL ? dout : dbenv->db_msgfile; 593 () `vrtf ( , fmt , ); 595 () `rtf ( , "\n"); 596 () `fush ( ); 597 } } 605 $__db_unknown_ag ( dbv , route , ag ) 606 DB_ENV * dbv ; 607 * route ; 608 u_t32_t ag ; 610 `__db_rx ( dbv , "%s: Unknowag: %#x", route , ( u_t ) ag ); 612 #ifde DIAGNOSTIC 613 `__os_abt (); 616 ( EINVAL ); 617 } } 625 $__db_unknown_ty ( dbv , route , ty ) 626 DB_ENV * dbv ; 627 * route ; 628 DBTYPE ty ; 630 `__db_rx ( dbv , 632 route , `__db_dbty_to_rg ( ty )); 634 #ifde DIAGNOSTIC 635 `__os_abt (); 638 ( EINVAL ); 639 } } 647 $__db_unknown_th ( dbv , route ) 648 DB_ENV * dbv ; 649 * route ; 651 `__db_rx ( dbv , "%s: Uxed codth", route ); 653 #ifde DIAGNOSTIC 654 `__os_abt (); 657 ( EINVAL ); 658 } } 667 $__db_check_txn ( dbp , txn , assoc_lock , ad_ ) 668 DB * dbp ; 669 DB_TXN * txn ; 670 DB_LOCKER * assoc_lock ; 671 ad_ ; 673 DB_ENV * dbv ; 674 i , t ; 676 dbv = dbp ->dbenv; 686 i( `IS_RECOVERING ( dbv || `F_ISSET ( dbp , DB_AM_RECOVER )) 695 i( txn = NULL || `F_ISSET xn, TXN_PRIVATE )) { 696 i( dbp -> cur_lock ! NULL && 697 dbp -> cur_lock -> id > TXN_MINIMUM ) 698 ݒ_r ; 700 i(! ad_ && `F_ISSET ( dbp , DB_AM_TXN )) { 701 `__db_rx ( dbv , 703 ( EINVAL ); 705 } i( `F_ISSET ( txn , TXN_CDSGROUP )) { 706 i(! `CDB_LOCKING ( dbv )) { 707 `__db_rx ( dbv , 709 ( EINVAL ); 717 i(! `TXN_ON ( dbv )) 718 ( `__db_n_txn_v ( dbv )); 720 i(! `F_ISSET ( dbp , DB_AM_TXN )) { 721 `__db_rx ( dbv , 723 ( EINVAL ); 726 i( `F_ISSET ( txn , TXN_DEADLOCK )) 727 ( `__db_txn_ddlock_r ( dbv , txn )); 728 i( dbp -> cur_lock ! NULL && 729 dbp -> cur_lock -> id > TXN_MINIMUM && 730 dbp -> cur_lock -> id ! txn -> txnid ) { 731 i(( t = `__lock_lock_is_ ( dbv , 732 dbp -> cur_lock , txn -> lock , & i )) != 0) 733 ( t ); 734 i(! i ) 735 ݒ_r ; 754 i(! ad_ && dbp -> assoc_lock ! NULL && 755 txn ! NULL && dbp -> assoc_lock ! assoc_lock ) { 756 `__db_rx ( dbv , 758 ( EINVAL ); 764 i( txn ! NULL && dbv !txn-> mg ->dbenv) { 765 `__db_rx ( dbv , 767 ( EINVAL ); 771 ݒ_r : 772 `__db_rx ( dbv , 774 ( EINVAL ); 775 } } 784 $__db_txn_ddlock_r ( dbv , txn ) 785 DB_ENV * dbv ; 786 DB_TXN * txn ; 788 cڡ * me ; 790 me = NULL ; 791 () `__txn_g_me ( txn , & me ); 793 `__db_rx ( dbv , 795 me = NULL ? "" :ame,ame == NULL ? "" : ": "); 797 ( EINVAL ); 798 } } 807 $__db_n_txn_v ( dbv ) 808 DB_ENV * dbv ; 810 `__db_rx ( dbv , "DBnvironmentot configured forransactions"); 811 ( EINVAL ); 812 } } 821 $__db_c_toobig ( dbv , da_n , fixed_c_n ) 822 DB_ENV * dbv ; 823 u_t32_t da_n , fixed_c_n ; 825 `__db_rx ( dbv , 827 ( u_lg ) da_n , (u_lg) fixed_c_n ); 828 ( EINVAL ); 829 } } 838 $__db_c_ ( dbv , da_size , da_dn ) 839 DB_ENV * dbv ; 840 u_t32_t da_size , da_dn ; 842 `__db_rx ( dbv , 844 "Recdgth", ( u_lg ) da_size , (u_lg) da_dn ); 845 ( EINVAL ); 846 } } 848 #i defed ( DIAGNOSTIC || defed( DEBUG_ROP || defed( DEBUG_WOP ) 856 $__dbc_loggg ( dbc ) 857 DBC * dbc ; 859 DB_ENV * dbv ; 860 DB_REP * db_p ; 861 t ; 863 dbv = dbc -> dbp ->dbenv; 864 db_p = dbv -> p_hd ; 866 t = `LOGGING_ON ( dbv ) && 867 ! `F_ISSET ( dbc , DBC_RECOVER && ! `IS_REP_CLIENT ( dbv ); 872 i( db_p = NULL || `F_ISSET ( dbc , DBC_RECOVER )) 873 ( t ); 875 #idef DEBUG_ROP 882 REP * p ; 884 p = db_p -> gi ; 889 i( `IS_REP_CLIENT ( dbv && ! `F_ISSET ( dbc -> dbp , DB_AM_NOT_DURABLE )) { 890 `__db_rx ( dbv , "dbc_logging: Client update"); 891 r ; 894 #ide DEBUG_WOP 899 i( `IS_REP_MASTER ( dbv ) && 900 dbc -> txn = NULL && ! `F_ISSET (dbc-> dbp , DB_AM_NOT_DURABLE )) { 901 `__db_rx ( dbv , "Dbc_logging: Masteron-txn update"); 902 r ; 907 r : `__db_rx ( dbv , "Rep: flags 0x%lx msg_th %lu", 908 ( u_lg ) p -> ags , (u_lg-> msg_th ); 909 `__db_rx ( dbv , "Rep: handle %lu, opcnt %lu", 910 ( u_lg ) p -> hd_t , (u_lg-> _t ); 911 `__os_abt (); 916 ( t ); 917 } } 927 $__db_check_l ( dbv , l , ev ) 928 DB_ENV * dbv ; 929 DB_LSN * l , * ev ; 931 `__db_rx ( dbv , 933 ( u_lg )( l )-> fe , (u_lg)֢)-> offt , 934 ( u_lg )( ev )-> fe , (u_lg)ջv)-> offt ); 935 ( EINVAL ); 936 } } 944 $__db_rdly ( dbv , me ) 945 cڡ DB_ENV * dbv ; 946 cڡ * me ; 948 `__db_rx ( dbv , "%s:emmodifyd-ly daba", me ); 949 ( EACCES ); 950 } } 958 $__db_a_r ( dbp ) 959 cڡ DB * dbp ; 961 `__db_rx ( dbp -> dbv , 963 dbp -> ame , ( u_lg )dbp-> mpf -> m -> maxpgno ); 964 ( ENOSPC ); 965 } } 975 $__db_ed ( dbv , msg , pid , tid ) 976 cڡ DB_ENV * dbv ; 977 cڡ * msg ; 978 pid_t pid ; 979 db_thadid_t tid ; 981 buf [ DB_THREADID_STRLEN ]; 983 `__db_rx ( dbv , "Thread/process %s failed: %s", 984 dbv -> `thad_id_rg (( DB_ENV *)dbv, pid , tid , buf ), msg ); 985 ( DB_RUNRECOVERY ); 986 } } @../common/db_getlong.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__db_glg ( dbv , ogme , p , m , max , ܕ ) 22 DB_ENV * dbv ; 23 cڡ * ogme ; 24 * p ; 25 m , max , * ܕ ; 27 v ; 28 * d ; 30 `__os_t_o (0); 31 v = ` ( p , & d , 10); 32 i(( v = LONG_MIN || v = LONG_MAX ) && 33 `__os_g_o (= ERANGE ) { 34 i( dbv = NULL ) 35 `rtf ( dr , 36 "%s: %s: %s\n", ogme , p , ` ( ERANGE )); 38 dbv -> `r (dbv, ERANGE , "%s", p ); 39 ( ERANGE ); 41 i( p [0] ='\0' || ( d [0] != '\0' &&nd[0] != '\n')) { 42 i( dbv = NULL ) 43 `rtf ( dr , 44 "%s: %s: Invidumigumt\n", ogme , p ); 46 dbv -> `rx (dbv, "%s: Invidumigumt", p ); 47 ( EINVAL ); 49 i( v < m ) { 50 i( dbv = NULL ) 51 `rtf ( dr , 53 ogme , p , m ); 55 dbv -> `rx (dbenv, 56 "%s: Lesth mimum vu(%ld)", p , m ); 57 ( ERANGE ); 59 i( v > max ) { 60 i( dbv = NULL ) 61 `rtf ( dr , 63 ogme , p , max ); 65 dbv -> `rx (dbenv, 66 "%s: Gh maximum vu(%ld)", p , max ); 67 ( ERANGE ); 69 * ܕ = v ; 71 } } 81 $__db_gulg ( dbv , ogme , p , m , max , ܕ ) 82 DB_ENV * dbv ; 83 cڡ * ogme ; 84 * p ; 85 u_lg m , max , * ܕ ; 87 u_lg v ; 88 * d ; 90 `__os_t_o (0); 91 v = `oul ( p , & d , 10); 92 i( v = ULONG_MAX && `__os_g_o (= ERANGE ) { 93 i( dbv = NULL ) 94 `rtf ( dr , 95 "%s: %s: %s\n", ogme , p , ` ( ERANGE )); 97 dbv -> `r (dbv, ERANGE , "%s", p ); 98 ( ERANGE ); 100 i( p [0] ='\0' || ( d [0] != '\0' &&nd[0] != '\n')) { 101 i( dbv = NULL ) 102 `rtf ( dr , 103 "%s: %s: Invidumigumt\n", ogme , p ); 105 dbv -> `rx (dbv, "%s: Invidumigumt", p ); 106 ( EINVAL ); 108 i( v < m ) { 109 i( dbv = NULL ) 110 `rtf ( dr , 112 ogme , p , m ); 114 dbv -> `rx (dbenv, 115 "%s: Lesth mimum vu(%lu)", p , m ); 116 ( ERANGE ); 125 i( max !0 && v > max) { 126 i( dbv = NULL ) 127 `rtf ( dr , 129 ogme , p , max ); 131 dbv -> `rx (dbenv, 132 "%s: Gh maximum vu(%lu)", p , max ); 133 ( ERANGE ); 135 * ܕ = v ; 137 } } @../common/db_idspace.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __db_idcmp __P ((const *, const *)); 16 $__db_idcmp ( a , b ) 17 cڡ * a ; 18 cڡ * b ; 20 u_t32_t i , j ; 22 i = *( u_t32_t *) a ; 23 j = *( u_t32_t *) b ; 25 i( i < j ) 27 i( i > j ) 31 } } 44 $__db_ida ( u , n , mp , maxp ) 45 u_t32_t * u ; 46 n ; 47 u_t32_t * mp , * maxp ; 49 i , low ; 50 u_t32_t g , t ; 53 i( n == 1) { 60 i( u [0] !* maxp ) 61 * mp = u [0]; 62 * maxp = u [0] - 1; 66 g = 0; 67 low = 0; 68 `qst ( u , ( size_t ) n , ( u_t32_t ), __db_idcmp ); 69 i = 0; i < n - 1; i++) 70 i(( t = ( u [ i + 1] - inu[i])> g ) { 71 g = t ; 72 low = i ; 76 i((* maxp - u [ n - 1]+ (u[0] - * mp > g ) { 78 i( u [ n - 1] !* maxp ) 79 * mp = u [ n - 1]; 80 * maxp = u [0] - 1; 82 * mp = u [ low ]; 83 * maxp = u [ low + 1] - 1; 85 } } @../common/db_log2.c 40 ~"db_cfig.h " 42 ~"db_t.h " 47 u_t32_t 48 $__db_log2 ( num ) 49 u_t32_t num ; 51 u_t32_t i , lim ; 53 lim = 1; 54 i = 0; lim < num ;imit =imit << 1) 55 ++ i ; 56 ( i ); 57 } } @../common/db_shash.c 9 ~"db_cfig.h " 11 ~"db_t.h " 19 u_t32_t 20 $__db_bsize ( n_bucks ) 21 u_t32_t n_bucks ; 41 #HASH_SIZE ( pow , ime ) { \ 42 i(( pow > n_bucks ) \ 43 ( ime ); \ 44 } ) 45 `HASH_SIZE (32, 37); 46 `HASH_SIZE (64, 67); 47 `HASH_SIZE (128, 131); 48 `HASH_SIZE (256, 257); 49 `HASH_SIZE (512, 521); 50 `HASH_SIZE (1024, 1031); 51 `HASH_SIZE (2048, 2053); 52 `HASH_SIZE (4096, 4099); 53 `HASH_SIZE (8192, 8191); 54 `HASH_SIZE (16384, 16381); 55 `HASH_SIZE (32768, 32771); 56 `HASH_SIZE (65536, 65537); 57 `HASH_SIZE (131072, 131071); 58 `HASH_SIZE (262144, 262147); 59 `HASH_SIZE (393216, 393209); 60 `HASH_SIZE (524288, 524287); 61 `HASH_SIZE (786432, 786431); 62 `HASH_SIZE (1048576, 1048573); 63 `HASH_SIZE (1572864, 1572869); 64 `HASH_SIZE (2097152, 2097169); 65 `HASH_SIZE (3145728, 3145721); 66 `HASH_SIZE (4194304, 4194301); 67 `HASH_SIZE (6291456, 6291449); 68 `HASH_SIZE (8388608, 8388617); 69 `HASH_SIZE (12582912, 12582917); 70 `HASH_SIZE (16777216, 16777213); 71 `HASH_SIZE (25165824, 25165813); 72 `HASH_SIZE (33554432, 33554393); 73 `HASH_SIZE (50331648, 50331653); 74 `HASH_SIZE (67108864, 67108859); 75 `HASH_SIZE (100663296, 100663291); 76 `HASH_SIZE (134217728, 134217757); 77 `HASH_SIZE (201326592, 201326611); 78 `HASH_SIZE (268435456, 268435459); 79 `HASH_SIZE (402653184, 402653189); 80 `HASH_SIZE (536870912, 536870909); 81 `HASH_SIZE (805306368, 805306357); 82 `HASH_SIZE (1073741824, 1073741827); 84 } } 93 $__db_hash ( beg , mts ) 94 * beg ; 95 u_t32_t mts ; 97 u_t32_t i ; 98 `SH_TAILQ_HEAD ( hash_hd * hdp ; 100 hdp = ( hash_hd *) beg ; 102 i = 0; i < mts ; i++, hdp ++) 103 `SH_TAILQ_INIT ( hdp ); 104 } } @../common/mkpath.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_mkth ( dbv , me ) 21 DB_ENV * dbv ; 22 cڡ * me ; 24 size_t n ; 25 t ; 26 * p , * t , vech ; 32 n = ` ( me ) + 1; 33 i(( t = `__os_mloc ( dbv , n , & t )) != 0) 34 ( t ); 35 `memy ( t , me , n ); 43 i( PATH_SEPARATOR [1] == '\0') { 44 p = t + 1;[0] != '\0'; ++p) 45 i( p [0] = PATH_SEPARATOR [0]) { 46 vech = * p ; 47 * p = '\0'; 48 i( `__os_exis ( dbv , t , NULL ) && 49 ( t = `__os_mkd ( 50 dbv , t , dbv-> d_mode )) != 0) 52 * p = vech ; 55 p = t + 1;[0] != '\0'; ++p) 56 i( `rchr ( PATH_SEPARATOR , p [0]! NULL ) { 57 vech = * p ; 58 * p = '\0'; 59 i( `__os_exis ( dbv , t , NULL ) && 60 ( t = `__os_mkd ( 61 dbv , t , dbv-> d_mode )) != 0) 63 * p = vech ; 66 `__os_ ( dbv , t ); 67 ( t ); 68 } } @../common/util_arg.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 * __db_rp __P ((**, const *)); 22 $__db_ut_g ( g0 , r , g , gvp ) 23 * g0 , * r , *** gvp ; 24 * g ; 26 n , t ; 27 ** , ** gv ; 29 #MAXARGS 25 ) 30 i(( t = 31 `__os_mloc ( NULL , ( MAXARGS + 1* (**), & gv )) != 0) 32 ( t ); 34 = gv ; 35 * ++ = g0 ; 36 n = 1; (* = `__db_rp (& r , " \t")! NULL ;) 37 i(** != '\0') { 38 ++ ; 39 i(++ n = MAXARGS ) 42 * = NULL ; 44 * g = - gv ; 45 * gvp = gv ; 48 } } 94 $__db_rp ( rgp , dim ) 95 ** rgp ; 96 cڡ * dim ; 98 cڡ * p ; 99 c , sc ; 100 * s , * tok ; 102 i(( s = * rgp = NULL ) 103 ( NULL ); 104 tok = s ;;) { 105 c = * s ++; 106 p = dim ; 108 i(( sc = * p ++= c ) { 109 i( c == 0) 110 s = NULL ; 112 s [-1] = 0; 113 * rgp = s ; 114 ( tok ); 116 } sc != 0); 119 } } @../common/util_cache.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_ut_che ( dbp , ch , siz ) 21 DB * dbp ; 22 u_t32_t * ch ; 23 * siz ; 25 u_t32_t pgsize ; 26 t ; 29 i(( t = dbp -> `g_gesize (dbp, & pgsize )) != 0) 30 ( t ); 40 i((* ch / pgsize < DB_MINPAGECACHE ) { 41 * siz = 1; 42 * ch = pgsize * DB_MINPAGECACHE ; 44 * siz = 0; 47 } } @../common/util_log.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_ut_logt ( ogme , ame ) 21 cڡ * ogme ; 22 * ame ; 24 pid_t pid ; 25 FILE * ; 26 time_t now ; 27 time_buf [ CTIME_BUFLEN ]; 29 i(( = `fݒ ( ame , "w")= NULL ) 30 r ; 32 () `time (& now ); 34 `__os_id ( NULL , & pid , NULL); 35 `rtf ( , 36 "%s: %lu %s", ogme , ( u_lg ) pid , `__db_ime (& now , time_buf )); 38 i( `fo ( = EOF ) 39 r ; 43 r : `rtf ( dr , "%s: %s: %s\n", ogme , ame , ` ( o )); 45 } } @../common/util_sig.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 gu ; 14 t_sigl __P ((, )); 15 sigl_hdr __P (()); 22 $sigl_hdr ( signo ) 23 signo ; 25 #ide HAVE_SIGACTION 27 `t_sigl ( signo , 0); 30 i(( u = signo ) == 0) 31 u = SIGINT ; 32 } } 38 $t_sigl ( s , is_dt ) 39 s , is_dt ; 44 #ifde HAVE_SIGACTION 45 sigai , o ; 47 . _hdr = is_dt ? SIG_DFL : sigl_hdr ; 48 () `sigemyt (& . _mask ); 49 . _ags = 0; 50 () `sigai ( s , & , & o ); 52 () `sigl ( s , is_dt ? SIG_DFL : sigl_hdr ); 54 } } 62 $__db_ut_sig () 69 #ifde SIGHUP 70 `t_sigl ( SIGHUP , 0); 72 #ifde SIGINT 73 `t_sigl ( SIGINT , 0); 75 #ifde SIGPIPE 76 `t_sigl ( SIGPIPE , 0); 78 #ifde SIGTERM 79 `t_sigl ( SIGTERM , 0); 81 } } 90 $__db_ut_ued () 92 ( u != 0); 93 } } 101 $__db_ut_signd () 104 i( u != 0) { 105 `t_sigl ( u , 1); 107 () `i ( u ); 110 } } @../crypto/aes_method.c 12 ~"db_cfig.h " 14 ~"db_t.h " 15 ~"dbc/yo.h " 16 ~"dbc/hmac.h " 18 __s_r __P (( DB_ENV *, )); 19 __s_divekeys __P (( DB_ENV *, DB_CIPHER *, u_t8_t *, size_t )); 28 $__s_tup ( dbv , db_ch ) 29 DB_ENV * dbv ; 30 DB_CIPHER * db_ch ; 32 AES_CIPHER * s_ch ; 33 t ; 35 db_ch -> adj_size = __s_adj_size ; 36 db_ch -> o = __s_o ; 37 db_ch -> dey = __s_dey ; 38 db_ch -> y = __s_y ; 39 db_ch -> = __s_ ; 40 i(( t = `__os_oc ( dbv , 1, ( AES_CIPHER ), & s_ch )) != 0) 41 ( t ); 42 db_ch -> da = s_ch ; 44 } } 53 u_t 54 $__s_adj_size ( n ) 55 size_t n ; 57 i( n % DB_AES_CHUNK == 0) 59 ( DB_AES_CHUNK - ( u_t )( n % DB_AES_CHUNK)); 60 } } 69 $__s_o ( dbv , da ) 70 DB_ENV * dbv ; 71 * da ; 73 `__os_ ( dbv , da ); 75 } } 85 $__s_dey ( dbv , s_da , iv , ch , ch_n ) 86 DB_ENV * dbv ; 87 * s_da ; 88 * iv ; 89 u_t8_t * ch ; 90 size_t ch_n ; 92 AES_CIPHER * s ; 93 chIn c ; 94 t ; 96 s = ( AES_CIPHER *) s_da ; 97 i( iv = NULL || ch == NULL) 98 ( EINVAL ); 99 i(( ch_n % DB_AES_CHUNK ) != 0) 100 ( EINVAL ); 104 i(( t = `__db_chIn (& c , MODE_CBC , iv )) < 0) { 105 `__s_r ( dbv , t ); 106 ( EAGAIN ); 110 i(( t = `__db_blockDey (& c , & s -> dey_ki , ch , 111 ch_n * 8, ch )) < 0) { 112 `__s_r ( dbv , t ); 113 ( EAGAIN ); 116 } } 126 $__s_y ( dbv , s_da , iv , da , da_n ) 127 DB_ENV * dbv ; 128 * s_da ; 129 * iv ; 130 u_t8_t * da ; 131 size_t da_n ; 133 AES_CIPHER * s ; 134 chIn c ; 135 u_t32_t tmp_iv [ DB_IV_BYTES /4]; 136 t ; 138 s = ( AES_CIPHER *) s_da ; 139 i( s = NULL || da == NULL) 140 ( EINVAL ); 141 i(( da_n % DB_AES_CHUNK ) != 0) 142 ( EINVAL ); 152 i(( t = `__db_ge_iv ( dbv , tmp_iv )) != 0) 153 ( t ); 158 i(( t = `__db_chIn (& c , MODE_CBC , (*) tmp_iv )) < 0) { 159 `__s_r ( dbv , t ); 160 ( EAGAIN ); 164 i(( t = `__db_blockEny (& c , & s -> y_ki , da , da_n * 8, 165 da )) < 0) { 166 `__s_r ( dbv , t ); 167 ( EAGAIN ); 169 `memy ( iv , tmp_iv , DB_IV_BYTES ); 171 } } 180 $__s_ ( dbv , db_ch ) 181 DB_ENV * dbv ; 182 DB_CIPHER * db_ch ; 184 ( `__s_divekeys ( dbv , db_ch , ( u_t8_t *)dbv-> sswd , 185 dbv -> sswd_n )); 186 } } 189 $__s_divekeys ( dbv , db_ch , sswd , ) 190 DB_ENV * dbv ; 191 DB_CIPHER * db_ch ; 192 u_t8_t * sswd ; 193 size_t ; 195 SHA1_CTX x ; 196 AES_CIPHER * s ; 197 t ; 198 u_t32_t mp [ DB_MAC_KEY /4]; 200 i( sswd = NULL ) 201 ( EINVAL ); 203 s = ( AES_CIPHER *) db_ch -> da ; 206 `__db_SHA1In (& x ); 207 `__db_SHA1Upde (& x , sswd , ); 208 `__db_SHA1Upde (& x , ( u_t8_t *) DB_ENC_MAGIC , ` (DB_ENC_MAGIC)); 209 `__db_SHA1Upde (& x , sswd , ); 210 `__db_SHA1F (( u_t8_t *) mp , & x ); 212 i(( t = `__db_makeKey (& s -> y_ki , DIR_ENCRYPT , 213 DB_AES_KEYLEN , (*) mp )! TRUE ) { 214 `__s_r ( dbv , t ); 215 ( EAGAIN ); 217 i(( t = `__db_makeKey (& s -> dey_ki , DIR_DECRYPT , 218 DB_AES_KEYLEN , (*) mp )! TRUE ) { 219 `__s_r ( dbv , t ); 220 ( EAGAIN ); 223 } } 231 $__s_r ( dbv , r ) 232 DB_ENV * dbv ; 233 r ; 235 * rr ; 237 r ) { 238 BAD_KEY_DIR : 239 rr = "AES key direction is invalid"; 241 BAD_KEY_MAT : 242 rr = "AES key materialot of correctength"; 244 BAD_KEY_INSTANCE : 245 rr = "AES keyasswdot valid"; 247 BAD_CIPHER_MODE : 248 rr = "AES cipher in wrong state (not initialized)"; 250 BAD_BLOCK_LENGTH : 251 rr = "AES bad blockength"; 253 BAD_CIPHER_INSTANCE : 254 rr = "AES cipher instance is invalid"; 256 BAD_DATA : 257 rr = "AES data contentsre invalid"; 259 BAD_OTHER : 260 rr = "AES unknownrror"; 263 rr = "AESrror unrecognized"; 266 `__db_rx ( dbv , rr ); 268 } } @../crypto/crypto.c 12 ~"db_cfig.h " 14 ~"db_t.h " 15 ~"dbc/db_ge.h " 16 ~"dbc/yo.h " 23 $__yo_gi_ ( dbv ) 24 DB_ENV * dbv ; 26 REGENV * nv ; 27 REGINFO * f ; 28 CIPHER * ch ; 29 DB_CIPHER * db_ch ; 30 * sh_sswd ; 31 t ; 33 db_ch = dbv -> yo_hd ; 35 t = 0; 36 f = dbv -> gfo ; 37 nv = f -> imy ; 38 i( nv -> ch_off = INVALID_ROFF ) { 39 i(! `CRYPTO_ON ( dbv )) 41 i(! `F_ISSET ( f , REGION_CREATE )) { 42 `__db_rx ( dbv , 44 ( EINVAL ); 46 i( `F_ISSET ( db_ch , CIPHER_ANY )) { 47 `__db_rx ( dbv , "Encryptionlgorithmot supplied"); 48 ( EINVAL ); 55 i(( t = `__v_loc ( f , ( CIPHER ), & ch )) != 0) 56 ( t ); 57 `memt ( ch , 0, (*cipher)); 58 i(( t = 59 `__v_loc ( f , dbv -> sswd_n , & sh_sswd )) != 0) { 60 `__v_loc_ ( f , ch ); 61 ( t ); 63 `memt ( sh_sswd , 0, dbv -> sswd_n ); 64 ch -> sswd = `R_OFFSET ( f , sh_sswd ); 65 ch -> sswd_n = dbv ->passwd_len; 66 ch -> ags = db_ch -> g ; 67 `memy ( sh_sswd , dbv -> sswd , ch -> sswd_n ); 68 nv -> ch_off = `R_OFFSET ( f , ch ); 70 i(! `CRYPTO_ON ( dbv )) { 71 `__db_rx ( dbv , 73 ( EINVAL ); 75 ch = `R_ADDR ( f , nv -> ch_off ); 76 sh_sswd = `R_ADDR ( f , ch -> sswd ); 77 i(( ch -> sswd_n ! dbv ->passwd_len) || 78 `memcmp ( dbv -> sswd , sh_sswd , ch -> sswd_n ) != 0) { 79 `__db_rx ( dbv , "Invalidassword"); 80 ( EPERM ); 82 i(! `F_ISSET ( db_ch , CIPHER_ANY ) && 83 db_ch -> g ! ch -> ags ) { 84 `__db_rx ( dbv , 86 ( EINVAL ); 88 i( `F_ISSET ( db_ch , CIPHER_ANY )) 94 i(( t = `__yo_gtup ( dbv , db_ch , 95 ch -> ags , 0)) != 0) 96 ( t ); 98 t = db_ch -> ` ( dbv , db_cipher); 105 `memt ( dbv -> sswd , 0xff, dbv-> sswd_n -1); 106 `__os_ ( dbv , dbv-> sswd ); 107 dbv -> sswd = NULL ; 108 dbv -> sswd_n = 0; 110 ( t ); 111 } } 120 $__yo_v_o ( dbv ) 121 DB_ENV * dbv ; 123 DB_CIPHER * db_ch ; 124 t ; 126 i( dbv -> sswd ! NULL ) { 127 `memt ( dbv -> sswd , 0xff, dbv-> sswd_n -1); 128 `__os_ ( dbv , dbv-> sswd ); 129 dbv -> sswd = NULL ; 132 i(! `CRYPTO_ON ( dbv )) 135 t = 0; 136 db_ch = dbv -> yo_hd ; 137 i(! `F_ISSET ( db_ch , CIPHER_ANY )) 138 t = db_ch -> `o ( dbv , db_ch-> da ); 139 `__os_ ( dbv , db_ch ); 141 dbv -> yo_hd = NULL ; 142 ( t ); 143 } } 152 $__yo_v_esh ( dbv ) 153 DB_ENV * dbv ; 155 CIPHER * ch ; 156 REGENV * nv ; 157 REGINFO * f ; 164 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 165 f = dbv -> gfo ; 166 nv = f -> imy ; 167 i( nv -> ch_off ! INVALID_ROFF ) { 168 ch = `R_ADDR ( f , nv -> ch_off ); 169 `__v_loc_ ( f , `R_ADDR (f, ch -> sswd )); 170 `__v_loc_ ( f , ch ); 174 } } 184 $__yo_gtup ( dbv , db_ch , g , do_ ) 185 DB_ENV * dbv ; 186 DB_CIPHER * db_ch ; 187 u_t32_t g ; 188 do_ ; 190 t ; 192 t = 0; 193 i(! `CRYPTO_ON ( dbv )) { 194 `__db_rx ( dbv , "No cipher structure given"); 195 ( EINVAL ); 197 `F_CLR ( db_ch , CIPHER_ANY ); 198 g ) { 199 CIPHER_AES : 200 db_ch -> g = CIPHER_AES ; 201 t = `__s_tup ( dbv , db_ch ); 204 t = `__db_nic ( dbv , EINVAL ); 207 i( t =0 && do_ ) 208 t = db_ch -> ` ( dbv , db_cipher); 209 ( t ); 210 } } 219 $__yo_dey_ma ( dbv , dbp , mbuf , do_machk ) 220 DB_ENV * dbv ; 221 DB * dbp ; 222 u_t8_t * mbuf ; 223 do_machk ; 225 DB_CIPHER * db_ch ; 226 DB dummydb ; 227 DBMETA * ma ; 228 size_t pg_off ; 229 t ; 230 u_t8_t * iv ; 238 i( dbp = NULL ) { 239 `memt (& dummydb , 0, ( DB )); 240 dbp = & dummydb ; 243 t = 0; 244 ma = ( DBMETA *) mbuf ; 262 i( ma -> magic = DB_HASHMAGIC && ma-> vsi <= 5) 280 i( ma -> y_g != 0) { 281 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 282 i(! `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 283 i(! `CRYPTO_ON ( dbv )) { 284 `__db_rx ( dbv , 286 ( EINVAL ); 294 `F_SET ( dbp , DB_AM_ENCRYPT | DB_AM_CHKSUM ); 300 `DB_ASSERT ( dbv , `CRYPTO_ON (dbenv)); 301 i(! `F_ISSET ( db_ch , CIPHER_ANY ) && 302 ma -> y_g ! db_ch -> g ) { 303 `__db_rx ( dbv , 305 ( EINVAL ); 307 `DB_ASSERT ( dbv , `F_ISSET ( dbp , DB_AM_CHKSUM )); 308 iv = (( BTMETA *) mbuf )->iv; 314 pg_off = `P_OVERHEAD ( dbp ); 315 g_y : 320 i(! `F_ISSET ( db_ch , CIPHER_ANY )) { 321 i( do_machk && ( t = db_ch -> `dey ( dbv , 322 db_ch -> da , iv , mbuf + pg_off , 323 DBMETASIZE - pg_off ))) 324 ( t ); 325 i((( BTMETA *) ma )-> yo_magic != 326 ma -> magic ) { 327 `__db_rx ( dbv , "Invalidassword"); 328 ( EINVAL ); 342 t = `__yo_gtup ( dbv , db_ch , ma -> y_g , 1); 343 g_y ; 344 } i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 365 `__db_rx ( dbv , 367 ( EINVAL ); 369 ( t ); 370 } } 380 $__yo_t_sswd ( dbv_c , dbv_de ) 381 DB_ENV * dbv_c , * dbv_de ; 383 CIPHER * ch ; 384 REGENV * nv ; 385 REGINFO * f ; 386 * sh_sswd ; 388 f = dbv_c -> gfo ; 389 nv = f -> imy ; 391 `DB_ASSERT ( dbv_c , `CRYPTO_ON (dbenv_src)); 393 ch = `R_ADDR ( f , nv -> ch_off ); 394 sh_sswd = `R_ADDR ( f , ch -> sswd ); 395 ( `__v_t_y ( dbv_de , sh_sswd , DB_ENCRYPT_AES )); 396 } } @../crypto/mersenne/mt19937db.c 4 ~"db_cfig.h " 6 ~"db_t.h " 7 ~"dbc/yo.h " 8 ~"dbc/hmac.h " 37 #N 624 ) 38 #M 397 ) 39 #MATRIX_A 0x9908b0d ) 40 #UPPER_MASK 0x80000000 ) 41 #LOWER_MASK 0x7ffffff ) 44 #TEMPERING_MASK_B 0x9d2c5680 ) 45 #TEMPERING_MASK_C 0xefc60000 ) 46 #TEMPERING_SHIFT_U ( y (y >> 11) ) 47 #TEMPERING_SHIFT_S ( y (y << 7) ) 48 #TEMPERING_SHIFT_T ( y (y << 15) ) 49 #TEMPERING_SHIFT_L ( y (y >> 18) ) 51 __db_sgnd __P ((, *, *)); 52 #ifdef NOT_USED 53 __db_lsgnd __P ((*, *, *)); 55 __db_gnd __P (( DB_ENV *)); 64 $__db_ge_iv ( dbv , iv ) 65 DB_ENV * dbv ; 66 u_t32_t * iv ; 68 i , n , t ; 70 t = 0; 71 n = DB_IV_BYTES / ( u_t32_t ); 72 `MUTEX_LOCK ( dbv , dbv-> mtx_mt ); 73 i( dbv -> mt = NULL ) { 74 i(( t = `__os_oc ( dbv , 1, N *(), 75 & dbv -> mt )) != 0) 76 ( t ); 78 dbv -> mti = N + 1; 80 i = 0; i < n ; i++) { 85 iv [ i ] = ( u_t32_t ) `__db_gnd ( dbv ); 86 } iv [ i ] == 0); 89 `MUTEX_UNLOCK ( dbv , dbv-> mtx_mt ); 91 } } 95 $__db_sgnd ( ed , mt , mt ) 96 ed ; 97 mt []; 98 * mt ; 100 i ; 102 `DB_ASSERT ( NULL , ed != 0); 103 i =0;i< N ;i++) { 104 mt [ i ] = ed & 0xffff0000; 105 ed = 69069 * seed + 1; 106 mt [ i ] |( ed & 0xffff0000) >> 16; 107 ed = 69069 * seed + 1; 109 * mt = N ; 110 } } 112 #ifdef NOT_USED 123 $__db_lsgnd ( ed_y , mt , mt ) 124 ed_y []; 125 mt []; 126 * mt ; 129 i ; 131 i =0;i< N ;i++) 132 mt [ i ] = ed_y [i]; 133 * mt = N ; 134 } } 138 $__db_gnd ( dbv ) 139 DB_ENV * dbv ; 141 db_timeec ts ; 142 y ; 143 mag01 [2]={0x0, MATRIX_A }; 145 u_t32_t ed ; 150 i( dbv -> mti > N ) { 151 kk ; 153 i( dbv -> mti = N +1) { 159 `__os_gtime ( dbv , & ts ); 160 `__db_chksum ( NULL , ( u_t8_t *)& ts . tv_c , 161 ( ts . tv_c ), NULL , ( u_t8_t *)& ed ); 162 } ed == 0); 163 `__db_sgnd (() ed , dbv -> mt , &dbv-> mti ); 166 kk =0;kk< N - M ;kk++) { 167 y = ( dbv -> mt [ kk ]& UPPER_MASK )|(dbv->mt[kk+1]& LOWER_MASK ); 168 dbv -> mt [ kk ] = dbv->mt[kk+ M ] ^ ( y >> 1^ mag01 [y & 0x1]; 170 ; kk < N -1;kk++) { 171 y = ( dbv -> mt [ kk ]& UPPER_MASK )|(dbv->mt[kk+1]& LOWER_MASK ); 172 dbv -> mt [ kk ] = dbv->mt[kk+( M - N )] ^ ( y >> 1^ mag01 [y & 0x1]; 174 y = ( dbv -> mt [ N -1]& UPPER_MASK )|(dbv->mt[0]& LOWER_MASK ); 175 dbv -> mt [ N -1] = dbv->mt[ M -1] ^ ( y >> 1^ mag01 [y & 0x1]; 177 dbv -> mti = 0; 180 y = dbv -> mt [dbv-> mti ++]; 181 y ^ `TEMPERING_SHIFT_U (y); 182 y ^ `TEMPERING_SHIFT_S (y& TEMPERING_MASK_B ; 183 y ^ `TEMPERING_SHIFT_T (y& TEMPERING_MASK_C ; 184 y ^ `TEMPERING_SHIFT_L (y); 186 y ; 187 } } @../crypto/rijndael/rijndael-alg-fst.c 26 ~"db_cfig.h " 28 ~"db_t.h " 29 ~"dbc/yo.h " 31 ~"yo/rijndl/rijndl-g-f.h " 47 cڡ u32 gTe0 [256] = { 48 ( u_t )0xc66363a5, (u_int)0xf87c7c84, (u_int)0xee777799, (u_int)0xf67b7b8d, 49 ( u_t )0xfff2f20d, (u_int)0xd66b6bbd, (u_int)0xde6f6fb1, (u_int)0x91c5c554, 50 ( u_t )0x60303050, (u_int)0x02010103, (u_int)0xce6767a9, (u_int)0x562b2b7d, 51 ( u_t )0xe7fefe19, (u_int)0xb5d7d762, (u_int)0x4dababe6, (u_int)0xec76769a, 52 ( u_t )0x8fcaca45, (u_int)0x1f82829d, (u_int)0x89c9c940, (u_int)0xfa7d7d87, 53 ( u_t )0xeffafa15, (u_int)0xb25959eb, (u_int)0x8e4747c9, (u_int)0xfbf0f00b, 54 ( u_t )0x41adadec, (u_int)0xb3d4d467, (u_int)0x5fa2a2fd, (u_int)0x45afafea, 55 ( u_t )0x239c9cbf, (u_int)0x53a4a4f7, (u_int)0xe4727296, (u_int)0x9bc0c05b, 56 ( u_t )0x75b7b7c2, (u_int)0xe1fdfd1c, (u_int)0x3d9393ae, (u_int)0x4c26266a, 57 ( u_t )0x6c36365a, (u_int)0x7e3f3f41, (u_int)0xf5f7f702, (u_int)0x83cccc4f, 58 ( u_t )0x6834345c, (u_int)0x51a5a5f4, (u_int)0xd1e5e534, (u_int)0xf9f1f108, 59 ( u_t )0xe2717193, (u_int)0xabd8d873, (u_int)0x62313153, (u_int)0x2a15153f, 60 ( u_t )0x0804040c, (u_int)0x95c7c752, (u_int)0x46232365, (u_int)0x9dc3c35e, 61 ( u_t )0x30181828, (u_int)0x379696a1, (u_int)0x0a05050f, (u_int)0x2f9a9ab5, 62 ( u_t )0x0e070709, (u_int)0x24121236, (u_int)0x1b80809b, (u_int)0xdfe2e23d, 63 ( u_t )0xcdebeb26, (u_int)0x4e272769, (u_int)0x7fb2b2cd, (u_int)0xea75759f, 64 ( u_t )0x1209091b, (u_int)0x1d83839e, (u_int)0x582c2c74, (u_int)0x341a1a2e, 65 ( u_t )0x361b1b2d, (u_int)0xdc6e6eb2, (u_int)0xb45a5aee, (u_int)0x5ba0a0fb, 66 ( u_t )0xa45252f6, (u_int)0x763b3b4d, (u_int)0xb7d6d661, (u_int)0x7db3b3ce, 67 ( u_t )0x5229297b, (u_int)0xdde3e33e, (u_int)0x5e2f2f71, (u_int)0x13848497, 68 ( u_t )0xa65353f5, (u_int)0xb9d1d168, (u_int)0x00000000, (u_int)0xc1eded2c, 69 ( u_t )0x40202060, (u_int)0xe3fcfc1f, (u_int)0x79b1b1c8, (u_int)0xb65b5bed, 70 ( u_t )0xd46a6abe, (u_int)0x8dcbcb46, (u_int)0x67bebed9, (u_int)0x7239394b, 71 ( u_t )0x944a4ade, (u_int)0x984c4cd4, (u_int)0xb05858e8, (u_int)0x85cfcf4a, 72 ( u_t )0xbbd0d06b, (u_int)0xc5efef2a, (u_int)0x4faaaae5, (u_int)0xedfbfb16, 73 ( u_t )0x864343c5, (u_int)0x9a4d4dd7, (u_int)0x66333355, (u_int)0x11858594, 74 ( u_t )0x8a4545cf, (u_int)0xe9f9f910, (u_int)0x04020206, (u_int)0xfe7f7f81, 75 ( u_t )0xa05050f0, (u_int)0x783c3c44, (u_int)0x259f9fba, (u_int)0x4ba8a8e3, 76 ( u_t )0xa25151f3, (u_int)0x5da3a3fe, (u_int)0x804040c0, (u_int)0x058f8f8a, 77 ( u_t )0x3f9292ad, (u_int)0x219d9dbc, (u_int)0x70383848, (u_int)0xf1f5f504, 78 ( u_t )0x63bcbcdf, (u_int)0x77b6b6c1, (u_int)0xafdada75, (u_int)0x42212163, 79 ( u_t )0x20101030, (u_int)0xe5ffff1a, (u_int)0xfdf3f30e, (u_int)0xbfd2d26d, 80 ( u_t )0x81cdcd4c, (u_int)0x180c0c14, (u_int)0x26131335, (u_int)0xc3ecec2f, 81 ( u_t )0xbe5f5fe1, (u_int)0x359797a2, (u_int)0x884444cc, (u_int)0x2e171739, 82 ( u_t )0x93c4c457, (u_int)0x55a7a7f2, (u_int)0xfc7e7e82, (u_int)0x7a3d3d47, 83 ( u_t )0xc86464ac, (u_int)0xba5d5de7, (u_int)0x3219192b, (u_int)0xe6737395, 84 ( u_t )0xc06060a0, (u_int)0x19818198, (u_int)0x9e4f4fd1, (u_int)0xa3dcdc7f, 85 ( u_t )0x44222266, (u_int)0x542a2a7e, (u_int)0x3b9090ab, (u_int)0x0b888883, 86 ( u_t )0x8c4646ca, (u_int)0xc7eeee29, (u_int)0x6bb8b8d3, (u_int)0x2814143c, 87 ( u_t )0xa7dede79, (u_int)0xbc5e5ee2, (u_int)0x160b0b1d, (u_int)0xaddbdb76, 88 ( u_t )0xdbe0e03b, (u_int)0x64323256, (u_int)0x743a3a4e, (u_int)0x140a0a1e, 89 ( u_t )0x924949db, (u_int)0x0c06060a, (u_int)0x4824246c, (u_int)0xb85c5ce4, 90 ( u_t )0x9fc2c25d, (u_int)0xbdd3d36e, (u_int)0x43acacef, (u_int)0xc46262a6, 91 ( u_t )0x399191a8, (u_int)0x319595a4, (u_int)0xd3e4e437, (u_int)0xf279798b, 92 ( u_t )0xd5e7e732, (u_int)0x8bc8c843, (u_int)0x6e373759, (u_int)0xda6d6db7, 93 ( u_t )0x018d8d8c, (u_int)0xb1d5d564, (u_int)0x9c4e4ed2, (u_int)0x49a9a9e0, 94 ( u_t )0xd86c6cb4, (u_int)0xac5656fa, (u_int)0xf3f4f407, (u_int)0xcfeaea25, 95 ( u_t )0xca6565af, (u_int)0xf47a7a8e, (u_int)0x47aeaee9, (u_int)0x10080818, 96 ( u_t )0x6fbabad5, (u_int)0xf0787888, (u_int)0x4a25256f, (u_int)0x5c2e2e72, 97 ( u_t )0x381c1c24, (u_int)0x57a6a6f1, (u_int)0x73b4b4c7, (u_int)0x97c6c651, 98 ( u_t )0xcbe8e823, (u_int)0xa1dddd7c, (u_int)0xe874749c, (u_int)0x3e1f1f21, 99 ( u_t )0x964b4bdd, (u_int)0x61bdbddc, (u_int)0x0d8b8b86, (u_int)0x0f8a8a85, 100 ( u_t )0xe0707090, (u_int)0x7c3e3e42, (u_int)0x71b5b5c4, (u_int)0xcc6666aa, 101 ( u_t )0x904848d8, (u_int)0x06030305, (u_int)0xf7f6f601, (u_int)0x1c0e0e12, 102 ( u_t )0xc26161a3, (u_int)0x6a35355f, (u_int)0xae5757f9, (u_int)0x69b9b9d0, 103 ( u_t )0x17868691, (u_int)0x99c1c158, (u_int)0x3a1d1d27, (u_int)0x279e9eb9, 104 ( u_t )0xd9e1e138, (u_int)0xebf8f813, (u_int)0x2b9898b3, (u_int)0x22111133, 105 ( u_t )0xd26969bb, (u_int)0xa9d9d970, (u_int)0x078e8e89, (u_int)0x339494a7, 106 ( u_t )0x2d9b9bb6, (u_int)0x3c1e1e22, (u_int)0x15878792, (u_int)0xc9e9e920, 107 ( u_t )0x87cece49, (u_int)0xaa5555ff, (u_int)0x50282878, (u_int)0xa5dfdf7a, 108 ( u_t )0x038c8c8f, (u_int)0x59a1a1f8, (u_int)0x09898980, (u_int)0x1a0d0d17, 109 ( u_t )0x65bfbfda, (u_int)0xd7e6e631, (u_int)0x844242c6, (u_int)0xd06868b8, 110 ( u_t )0x824141c3, (u_int)0x299999b0, (u_int)0x5a2d2d77, (u_int)0x1e0f0f11, 111 ( u_t )0x7bb0b0cb, (u_int)0xa85454fc, (u_int)0x6dbbbbd6, (u_int)0x2c16163a, 113 cڡ u32 gTe1 [256] = { 114 ( u_t )0xa5c66363, (u_int)0x84f87c7c, (u_int)0x99ee7777, (u_int)0x8df67b7b, 115 ( u_t )0x0dfff2f2, (u_int)0xbdd66b6b, (u_int)0xb1de6f6f, (u_int)0x5491c5c5, 116 ( u_t )0x50603030, (u_int)0x03020101, (u_int)0xa9ce6767, (u_int)0x7d562b2b, 117 ( u_t )0x19e7fefe, (u_int)0x62b5d7d7, (u_int)0xe64dabab, (u_int)0x9aec7676, 118 ( u_t )0x458fcaca, (u_int)0x9d1f8282, (u_int)0x4089c9c9, (u_int)0x87fa7d7d, 119 ( u_t )0x15effafa, (u_int)0xebb25959, (u_int)0xc98e4747, (u_int)0x0bfbf0f0, 120 ( u_t )0xec41adad, (u_int)0x67b3d4d4, (u_int)0xfd5fa2a2, (u_int)0xea45afaf, 121 ( u_t )0xbf239c9c, (u_int)0xf753a4a4, (u_int)0x96e47272, (u_int)0x5b9bc0c0, 122 ( u_t )0xc275b7b7, (u_int)0x1ce1fdfd, (u_int)0xae3d9393, (u_int)0x6a4c2626, 123 ( u_t )0x5a6c3636, (u_int)0x417e3f3f, (u_int)0x02f5f7f7, (u_int)0x4f83cccc, 124 ( u_t )0x5c683434, (u_int)0xf451a5a5, (u_int)0x34d1e5e5, (u_int)0x08f9f1f1, 125 ( u_t )0x93e27171, (u_int)0x73abd8d8, (u_int)0x53623131, (u_int)0x3f2a1515, 126 ( u_t )0x0c080404, (u_int)0x5295c7c7, (u_int)0x65462323, (u_int)0x5e9dc3c3, 127 ( u_t )0x28301818, (u_int)0xa1379696, (u_int)0x0f0a0505, (u_int)0xb52f9a9a, 128 ( u_t )0x090e0707, (u_int)0x36241212, (u_int)0x9b1b8080, (u_int)0x3ddfe2e2, 129 ( u_t )0x26cdebeb, (u_int)0x694e2727, (u_int)0xcd7fb2b2, (u_int)0x9fea7575, 130 ( u_t )0x1b120909, (u_int)0x9e1d8383, (u_int)0x74582c2c, (u_int)0x2e341a1a, 131 ( u_t )0x2d361b1b, (u_int)0xb2dc6e6e, (u_int)0xeeb45a5a, (u_int)0xfb5ba0a0, 132 ( u_t )0xf6a45252, (u_int)0x4d763b3b, (u_int)0x61b7d6d6, (u_int)0xce7db3b3, 133 ( u_t )0x7b522929, (u_int)0x3edde3e3, (u_int)0x715e2f2f, (u_int)0x97138484, 134 ( u_t )0xf5a65353, (u_int)0x68b9d1d1, (u_int)0x00000000, (u_int)0x2cc1eded, 135 ( u_t )0x60402020, (u_int)0x1fe3fcfc, (u_int)0xc879b1b1, (u_int)0xedb65b5b, 136 ( u_t )0xbed46a6a, (u_int)0x468dcbcb, (u_int)0xd967bebe, (u_int)0x4b723939, 137 ( u_t )0xde944a4a, (u_int)0xd4984c4c, (u_int)0xe8b05858, (u_int)0x4a85cfcf, 138 ( u_t )0x6bbbd0d0, (u_int)0x2ac5efef, (u_int)0xe54faaaa, (u_int)0x16edfbfb, 139 ( u_t )0xc5864343, (u_int)0xd79a4d4d, (u_int)0x55663333, (u_int)0x94118585, 140 ( u_t )0xcf8a4545, (u_int)0x10e9f9f9, (u_int)0x06040202, (u_int)0x81fe7f7f, 141 ( u_t )0xf0a05050, (u_int)0x44783c3c, (u_int)0xba259f9f, (u_int)0xe34ba8a8, 142 ( u_t )0xf3a25151, (u_int)0xfe5da3a3, (u_int)0xc0804040, (u_int)0x8a058f8f, 143 ( u_t )0xad3f9292, (u_int)0xbc219d9d, (u_int)0x48703838, (u_int)0x04f1f5f5, 144 ( u_t )0xdf63bcbc, (u_int)0xc177b6b6, (u_int)0x75afdada, (u_int)0x63422121, 145 ( u_t )0x30201010, (u_int)0x1ae5ffff, (u_int)0x0efdf3f3, (u_int)0x6dbfd2d2, 146 ( u_t )0x4c81cdcd, (u_int)0x14180c0c, (u_int)0x35261313, (u_int)0x2fc3ecec, 147 ( u_t )0xe1be5f5f, (u_int)0xa2359797, (u_int)0xcc884444, (u_int)0x392e1717, 148 ( u_t )0x5793c4c4, (u_int)0xf255a7a7, (u_int)0x82fc7e7e, (u_int)0x477a3d3d, 149 ( u_t )0xacc86464, (u_int)0xe7ba5d5d, (u_int)0x2b321919, (u_int)0x95e67373, 150 ( u_t )0xa0c06060, (u_int)0x98198181, (u_int)0xd19e4f4f, (u_int)0x7fa3dcdc, 151 ( u_t )0x66442222, (u_int)0x7e542a2a, (u_int)0xab3b9090, (u_int)0x830b8888, 152 ( u_t )0xca8c4646, (u_int)0x29c7eeee, (u_int)0xd36bb8b8, (u_int)0x3c281414, 153 ( u_t )0x79a7dede, (u_int)0xe2bc5e5e, (u_int)0x1d160b0b, (u_int)0x76addbdb, 154 ( u_t )0x3bdbe0e0, (u_int)0x56643232, (u_int)0x4e743a3a, (u_int)0x1e140a0a, 155 ( u_t )0xdb924949, (u_int)0x0a0c0606, (u_int)0x6c482424, (u_int)0xe4b85c5c, 156 ( u_t )0x5d9fc2c2, (u_int)0x6ebdd3d3, (u_int)0xef43acac, (u_int)0xa6c46262, 157 ( u_t )0xa8399191, (u_int)0xa4319595, (u_int)0x37d3e4e4, (u_int)0x8bf27979, 158 ( u_t )0x32d5e7e7, (u_int)0x438bc8c8, (u_int)0x596e3737, (u_int)0xb7da6d6d, 159 ( u_t )0x8c018d8d, (u_int)0x64b1d5d5, (u_int)0xd29c4e4e, (u_int)0xe049a9a9, 160 ( u_t )0xb4d86c6c, (u_int)0xfaac5656, (u_int)0x07f3f4f4, (u_int)0x25cfeaea, 161 ( u_t )0xafca6565, (u_int)0x8ef47a7a, (u_int)0xe947aeae, (u_int)0x18100808, 162 ( u_t )0xd56fbaba, (u_int)0x88f07878, (u_int)0x6f4a2525, (u_int)0x725c2e2e, 163 ( u_t )0x24381c1c, (u_int)0xf157a6a6, (u_int)0xc773b4b4, (u_int)0x5197c6c6, 164 ( u_t )0x23cbe8e8, (u_int)0x7ca1dddd, (u_int)0x9ce87474, (u_int)0x213e1f1f, 165 ( u_t )0xdd964b4b, (u_int)0xdc61bdbd, (u_int)0x860d8b8b, (u_int)0x850f8a8a, 166 ( u_t )0x90e07070, (u_int)0x427c3e3e, (u_int)0xc471b5b5, (u_int)0xaacc6666, 167 ( u_t )0xd8904848, (u_int)0x05060303, (u_int)0x01f7f6f6, (u_int)0x121c0e0e, 168 ( u_t )0xa3c26161, (u_int)0x5f6a3535, (u_int)0xf9ae5757, (u_int)0xd069b9b9, 169 ( u_t )0x91178686, (u_int)0x5899c1c1, (u_int)0x273a1d1d, (u_int)0xb9279e9e, 170 ( u_t )0x38d9e1e1, (u_int)0x13ebf8f8, (u_int)0xb32b9898, (u_int)0x33221111, 171 ( u_t )0xbbd26969, (u_int)0x70a9d9d9, (u_int)0x89078e8e, (u_int)0xa7339494, 172 ( u_t )0xb62d9b9b, (u_int)0x223c1e1e, (u_int)0x92158787, (u_int)0x20c9e9e9, 173 ( u_t )0x4987cece, (u_int)0xffaa5555, (u_int)0x78502828, (u_int)0x7aa5dfdf, 174 ( u_t )0x8f038c8c, (u_int)0xf859a1a1, (u_int)0x80098989, (u_int)0x171a0d0d, 175 ( u_t )0xda65bfbf, (u_int)0x31d7e6e6, (u_int)0xc6844242, (u_int)0xb8d06868, 176 ( u_t )0xc3824141, (u_int)0xb0299999, (u_int)0x775a2d2d, (u_int)0x111e0f0f, 177 ( u_t )0xcb7bb0b0, (u_int)0xfca85454, (u_int)0xd66dbbbb, (u_int)0x3a2c1616, 179 cڡ u32 gTe2 [256] = { 180 ( u_t )0x63a5c663, (u_int)0x7c84f87c, (u_int)0x7799ee77, (u_int)0x7b8df67b, 181 ( u_t )0xf20dfff2, (u_int)0x6bbdd66b, (u_int)0x6fb1de6f, (u_int)0xc55491c5, 182 ( u_t )0x30506030, (u_int)0x01030201, (u_int)0x67a9ce67, (u_int)0x2b7d562b, 183 ( u_t )0xfe19e7fe, (u_int)0xd762b5d7, (u_int)0xabe64dab, (u_int)0x769aec76, 184 ( u_t )0xca458fca, (u_int)0x829d1f82, (u_int)0xc94089c9, (u_int)0x7d87fa7d, 185 ( u_t )0xfa15effa, (u_int)0x59ebb259, (u_int)0x47c98e47, (u_int)0xf00bfbf0, 186 ( u_t )0xadec41ad, (u_int)0xd467b3d4, (u_int)0xa2fd5fa2, (u_int)0xafea45af, 187 ( u_t )0x9cbf239c, (u_int)0xa4f753a4, (u_int)0x7296e472, (u_int)0xc05b9bc0, 188 ( u_t )0xb7c275b7, (u_int)0xfd1ce1fd, (u_int)0x93ae3d93, (u_int)0x266a4c26, 189 ( u_t )0x365a6c36, (u_int)0x3f417e3f, (u_int)0xf702f5f7, (u_int)0xcc4f83cc, 190 ( u_t )0x345c6834, (u_int)0xa5f451a5, (u_int)0xe534d1e5, (u_int)0xf108f9f1, 191 ( u_t )0x7193e271, (u_int)0xd873abd8, (u_int)0x31536231, (u_int)0x153f2a15, 192 ( u_t )0x040c0804, (u_int)0xc75295c7, (u_int)0x23654623, (u_int)0xc35e9dc3, 193 ( u_t )0x18283018, (u_int)0x96a13796, (u_int)0x050f0a05, (u_int)0x9ab52f9a, 194 ( u_t )0x07090e07, (u_int)0x12362412, (u_int)0x809b1b80, (u_int)0xe23ddfe2, 195 ( u_t )0xeb26cdeb, (u_int)0x27694e27, (u_int)0xb2cd7fb2, (u_int)0x759fea75, 196 ( u_t )0x091b1209, (u_int)0x839e1d83, (u_int)0x2c74582c, (u_int)0x1a2e341a, 197 ( u_t )0x1b2d361b, (u_int)0x6eb2dc6e, (u_int)0x5aeeb45a, (u_int)0xa0fb5ba0, 198 ( u_t )0x52f6a452, (u_int)0x3b4d763b, (u_int)0xd661b7d6, (u_int)0xb3ce7db3, 199 ( u_t )0x297b5229, (u_int)0xe33edde3, (u_int)0x2f715e2f, (u_int)0x84971384, 200 ( u_t )0x53f5a653, (u_int)0xd168b9d1, (u_int)0x00000000, (u_int)0xed2cc1ed, 201 ( u_t )0x20604020, (u_int)0xfc1fe3fc, (u_int)0xb1c879b1, (u_int)0x5bedb65b, 202 ( u_t )0x6abed46a, (u_int)0xcb468dcb, (u_int)0xbed967be, (u_int)0x394b7239, 203 ( u_t )0x4ade944a, (u_int)0x4cd4984c, (u_int)0x58e8b058, (u_int)0xcf4a85cf, 204 ( u_t )0xd06bbbd0, (u_int)0xef2ac5ef, (u_int)0xaae54faa, (u_int)0xfb16edfb, 205 ( u_t )0x43c58643, (u_int)0x4dd79a4d, (u_int)0x33556633, (u_int)0x85941185, 206 ( u_t )0x45cf8a45, (u_int)0xf910e9f9, (u_int)0x02060402, (u_int)0x7f81fe7f, 207 ( u_t )0x50f0a050, (u_int)0x3c44783c, (u_int)0x9fba259f, (u_int)0xa8e34ba8, 208 ( u_t )0x51f3a251, (u_int)0xa3fe5da3, (u_int)0x40c08040, (u_int)0x8f8a058f, 209 ( u_t )0x92ad3f92, (u_int)0x9dbc219d, (u_int)0x38487038, (u_int)0xf504f1f5, 210 ( u_t )0xbcdf63bc, (u_int)0xb6c177b6, (u_int)0xda75afda, (u_int)0x21634221, 211 ( u_t )0x10302010, (u_int)0xff1ae5ff, (u_int)0xf30efdf3, (u_int)0xd26dbfd2, 212 ( u_t )0xcd4c81cd, (u_int)0x0c14180c, (u_int)0x13352613, (u_int)0xec2fc3ec, 213 ( u_t )0x5fe1be5f, (u_int)0x97a23597, (u_int)0x44cc8844, (u_int)0x17392e17, 214 ( u_t )0xc45793c4, (u_int)0xa7f255a7, (u_int)0x7e82fc7e, (u_int)0x3d477a3d, 215 ( u_t )0x64acc864, (u_int)0x5de7ba5d, (u_int)0x192b3219, (u_int)0x7395e673, 216 ( u_t )0x60a0c060, (u_int)0x81981981, (u_int)0x4fd19e4f, (u_int)0xdc7fa3dc, 217 ( u_t )0x22664422, (u_int)0x2a7e542a, (u_int)0x90ab3b90, (u_int)0x88830b88, 218 ( u_t )0x46ca8c46, (u_int)0xee29c7ee, (u_int)0xb8d36bb8, (u_int)0x143c2814, 219 ( u_t )0xde79a7de, (u_int)0x5ee2bc5e, (u_int)0x0b1d160b, (u_int)0xdb76addb, 220 ( u_t )0xe03bdbe0, (u_int)0x32566432, (u_int)0x3a4e743a, (u_int)0x0a1e140a, 221 ( u_t )0x49db9249, (u_int)0x060a0c06, (u_int)0x246c4824, (u_int)0x5ce4b85c, 222 ( u_t )0xc25d9fc2, (u_int)0xd36ebdd3, (u_int)0xacef43ac, (u_int)0x62a6c462, 223 ( u_t )0x91a83991, (u_int)0x95a43195, (u_int)0xe437d3e4, (u_int)0x798bf279, 224 ( u_t )0xe732d5e7, (u_int)0xc8438bc8, (u_int)0x37596e37, (u_int)0x6db7da6d, 225 ( u_t )0x8d8c018d, (u_int)0xd564b1d5, (u_int)0x4ed29c4e, (u_int)0xa9e049a9, 226 ( u_t )0x6cb4d86c, (u_int)0x56faac56, (u_int)0xf407f3f4, (u_int)0xea25cfea, 227 ( u_t )0x65afca65, (u_int)0x7a8ef47a, (u_int)0xaee947ae, (u_int)0x08181008, 228 ( u_t )0xbad56fba, (u_int)0x7888f078, (u_int)0x256f4a25, (u_int)0x2e725c2e, 229 ( u_t )0x1c24381c, (u_int)0xa6f157a6, (u_int)0xb4c773b4, (u_int)0xc65197c6, 230 ( u_t )0xe823cbe8, (u_int)0xdd7ca1dd, (u_int)0x749ce874, (u_int)0x1f213e1f, 231 ( u_t )0x4bdd964b, (u_int)0xbddc61bd, (u_int)0x8b860d8b, (u_int)0x8a850f8a, 232 ( u_t )0x7090e070, (u_int)0x3e427c3e, (u_int)0xb5c471b5, (u_int)0x66aacc66, 233 ( u_t )0x48d89048, (u_int)0x03050603, (u_int)0xf601f7f6, (u_int)0x0e121c0e, 234 ( u_t )0x61a3c261, (u_int)0x355f6a35, (u_int)0x57f9ae57, (u_int)0xb9d069b9, 235 ( u_t )0x86911786, (u_int)0xc15899c1, (u_int)0x1d273a1d, (u_int)0x9eb9279e, 236 ( u_t )0xe138d9e1, (u_int)0xf813ebf8, (u_int)0x98b32b98, (u_int)0x11332211, 237 ( u_t )0x69bbd269, (u_int)0xd970a9d9, (u_int)0x8e89078e, (u_int)0x94a73394, 238 ( u_t )0x9bb62d9b, (u_int)0x1e223c1e, (u_int)0x87921587, (u_int)0xe920c9e9, 239 ( u_t )0xce4987ce, (u_int)0x55ffaa55, (u_int)0x28785028, (u_int)0xdf7aa5df, 240 ( u_t )0x8c8f038c, (u_int)0xa1f859a1, (u_int)0x89800989, (u_int)0x0d171a0d, 241 ( u_t )0xbfda65bf, (u_int)0xe631d7e6, (u_int)0x42c68442, (u_int)0x68b8d068, 242 ( u_t )0x41c38241, (u_int)0x99b02999, (u_int)0x2d775a2d, (u_int)0x0f111e0f, 243 ( u_t )0xb0cb7bb0, (u_int)0x54fca854, (u_int)0xbbd66dbb, (u_int)0x163a2c16, 245 cڡ u32 gTe3 [256] = { 247 ( u_t )0x6363a5c6, (u_int)0x7c7c84f8, (u_int)0x777799ee, (u_int)0x7b7b8df6, 248 ( u_t )0xf2f20dff, (u_int)0x6b6bbdd6, (u_int)0x6f6fb1de, (u_int)0xc5c55491, 249 ( u_t )0x30305060, (u_int)0x01010302, (u_int)0x6767a9ce, (u_int)0x2b2b7d56, 250 ( u_t )0xfefe19e7, (u_int)0xd7d762b5, (u_int)0xababe64d, (u_int)0x76769aec, 251 ( u_t )0xcaca458f, (u_int)0x82829d1f, (u_int)0xc9c94089, (u_int)0x7d7d87fa, 252 ( u_t )0xfafa15ef, (u_int)0x5959ebb2, (u_int)0x4747c98e, (u_int)0xf0f00bfb, 253 ( u_t )0xadadec41, (u_int)0xd4d467b3, (u_int)0xa2a2fd5f, (u_int)0xafafea45, 254 ( u_t )0x9c9cbf23, (u_int)0xa4a4f753, (u_int)0x727296e4, (u_int)0xc0c05b9b, 255 ( u_t )0xb7b7c275, (u_int)0xfdfd1ce1, (u_int)0x9393ae3d, (u_int)0x26266a4c, 256 ( u_t )0x36365a6c, (u_int)0x3f3f417e, (u_int)0xf7f702f5, (u_int)0xcccc4f83, 257 ( u_t )0x34345c68, (u_int)0xa5a5f451, (u_int)0xe5e534d1, (u_int)0xf1f108f9, 258 ( u_t )0x717193e2, (u_int)0xd8d873ab, (u_int)0x31315362, (u_int)0x15153f2a, 259 ( u_t )0x04040c08, (u_int)0xc7c75295, (u_int)0x23236546, (u_int)0xc3c35e9d, 260 ( u_t )0x18182830, (u_int)0x9696a137, (u_int)0x05050f0a, (u_int)0x9a9ab52f, 261 ( u_t )0x0707090e, (u_int)0x12123624, (u_int)0x80809b1b, (u_int)0xe2e23ddf, 262 ( u_t )0xebeb26cd, (u_int)0x2727694e, (u_int)0xb2b2cd7f, (u_int)0x75759fea, 263 ( u_t )0x09091b12, (u_int)0x83839e1d, (u_int)0x2c2c7458, (u_int)0x1a1a2e34, 264 ( u_t )0x1b1b2d36, (u_int)0x6e6eb2dc, (u_int)0x5a5aeeb4, (u_int)0xa0a0fb5b, 265 ( u_t )0x5252f6a4, (u_int)0x3b3b4d76, (u_int)0xd6d661b7, (u_int)0xb3b3ce7d, 266 ( u_t )0x29297b52, (u_int)0xe3e33edd, (u_int)0x2f2f715e, (u_int)0x84849713, 267 ( u_t )0x5353f5a6, (u_int)0xd1d168b9, (u_int)0x00000000, (u_int)0xeded2cc1, 268 ( u_t )0x20206040, (u_int)0xfcfc1fe3, (u_int)0xb1b1c879, (u_int)0x5b5bedb6, 269 ( u_t )0x6a6abed4, (u_int)0xcbcb468d, (u_int)0xbebed967, (u_int)0x39394b72, 270 ( u_t )0x4a4ade94, (u_int)0x4c4cd498, (u_int)0x5858e8b0, (u_int)0xcfcf4a85, 271 ( u_t )0xd0d06bbb, (u_int)0xefef2ac5, (u_int)0xaaaae54f, (u_int)0xfbfb16ed, 272 ( u_t )0x4343c586, (u_int)0x4d4dd79a, (u_int)0x33335566, (u_int)0x85859411, 273 ( u_t )0x4545cf8a, (u_int)0xf9f910e9, (u_int)0x02020604, (u_int)0x7f7f81fe, 274 ( u_t )0x5050f0a0, (u_int)0x3c3c4478, (u_int)0x9f9fba25, (u_int)0xa8a8e34b, 275 ( u_t )0x5151f3a2, (u_int)0xa3a3fe5d, (u_int)0x4040c080, (u_int)0x8f8f8a05, 276 ( u_t )0x9292ad3f, (u_int)0x9d9dbc21, (u_int)0x38384870, (u_int)0xf5f504f1, 277 ( u_t )0xbcbcdf63, (u_int)0xb6b6c177, (u_int)0xdada75af, (u_int)0x21216342, 278 ( u_t )0x10103020, (u_int)0xffff1ae5, (u_int)0xf3f30efd, (u_int)0xd2d26dbf, 279 ( u_t )0xcdcd4c81, (u_int)0x0c0c1418, (u_int)0x13133526, (u_int)0xecec2fc3, 280 ( u_t )0x5f5fe1be, (u_int)0x9797a235, (u_int)0x4444cc88, (u_int)0x1717392e, 281 ( u_t )0xc4c45793, (u_int)0xa7a7f255, (u_int)0x7e7e82fc, (u_int)0x3d3d477a, 282 ( u_t )0x6464acc8, (u_int)0x5d5de7ba, (u_int)0x19192b32, (u_int)0x737395e6, 283 ( u_t )0x6060a0c0, (u_int)0x81819819, (u_int)0x4f4fd19e, (u_int)0xdcdc7fa3, 284 ( u_t )0x22226644, (u_int)0x2a2a7e54, (u_int)0x9090ab3b, (u_int)0x8888830b, 285 ( u_t )0x4646ca8c, (u_int)0xeeee29c7, (u_int)0xb8b8d36b, (u_int)0x14143c28, 286 ( u_t )0xdede79a7, (u_int)0x5e5ee2bc, (u_int)0x0b0b1d16, (u_int)0xdbdb76ad, 287 ( u_t )0xe0e03bdb, (u_int)0x32325664, (u_int)0x3a3a4e74, (u_int)0x0a0a1e14, 288 ( u_t )0x4949db92, (u_int)0x06060a0c, (u_int)0x24246c48, (u_int)0x5c5ce4b8, 289 ( u_t )0xc2c25d9f, (u_int)0xd3d36ebd, (u_int)0xacacef43, (u_int)0x6262a6c4, 290 ( u_t )0x9191a839, (u_int)0x9595a431, (u_int)0xe4e437d3, (u_int)0x79798bf2, 291 ( u_t )0xe7e732d5, (u_int)0xc8c8438b, (u_int)0x3737596e, (u_int)0x6d6db7da, 292 ( u_t )0x8d8d8c01, (u_int)0xd5d564b1, (u_int)0x4e4ed29c, (u_int)0xa9a9e049, 293 ( u_t )0x6c6cb4d8, (u_int)0x5656faac, (u_int)0xf4f407f3, (u_int)0xeaea25cf, 294 ( u_t )0x6565afca, (u_int)0x7a7a8ef4, (u_int)0xaeaee947, (u_int)0x08081810, 295 ( u_t )0xbabad56f, (u_int)0x787888f0, (u_int)0x25256f4a, (u_int)0x2e2e725c, 296 ( u_t )0x1c1c2438, (u_int)0xa6a6f157, (u_int)0xb4b4c773, (u_int)0xc6c65197, 297 ( u_t )0xe8e823cb, (u_int)0xdddd7ca1, (u_int)0x74749ce8, (u_int)0x1f1f213e, 298 ( u_t )0x4b4bdd96, (u_int)0xbdbddc61, (u_int)0x8b8b860d, (u_int)0x8a8a850f, 299 ( u_t )0x707090e0, (u_int)0x3e3e427c, (u_int)0xb5b5c471, (u_int)0x6666aacc, 300 ( u_t )0x4848d890, (u_int)0x03030506, (u_int)0xf6f601f7, (u_int)0x0e0e121c, 301 ( u_t )0x6161a3c2, (u_int)0x35355f6a, (u_int)0x5757f9ae, (u_int)0xb9b9d069, 302 ( u_t )0x86869117, (u_int)0xc1c15899, (u_int)0x1d1d273a, (u_int)0x9e9eb927, 303 ( u_t )0xe1e138d9, (u_int)0xf8f813eb, (u_int)0x9898b32b, (u_int)0x11113322, 304 ( u_t )0x6969bbd2, (u_int)0xd9d970a9, (u_int)0x8e8e8907, (u_int)0x9494a733, 305 ( u_t )0x9b9bb62d, (u_int)0x1e1e223c, (u_int)0x87879215, (u_int)0xe9e920c9, 306 ( u_t )0xcece4987, (u_int)0x5555ffaa, (u_int)0x28287850, (u_int)0xdfdf7aa5, 307 ( u_t )0x8c8c8f03, (u_int)0xa1a1f859, (u_int)0x89898009, (u_int)0x0d0d171a, 308 ( u_t )0xbfbfda65, (u_int)0xe6e631d7, (u_int)0x4242c684, (u_int)0x6868b8d0, 309 ( u_t )0x4141c382, (u_int)0x9999b029, (u_int)0x2d2d775a, (u_int)0x0f0f111e, 310 ( u_t )0xb0b0cb7b, (u_int)0x5454fca8, (u_int)0xbbbbd66d, (u_int)0x16163a2c, 312 cڡ u32 gTe4 [256] = { 313 ( u_t )0x63636363, (u_int)0x7c7c7c7c, (u_int)0x77777777, (u_int)0x7b7b7b7b, 314 ( u_t )0xf2f2f2f2, (u_int)0x6b6b6b6b, (u_int)0x6f6f6f6f, (u_int)0xc5c5c5c5, 315 ( u_t )0x30303030, (u_int)0x01010101, (u_int)0x67676767, (u_int)0x2b2b2b2b, 316 ( u_t )0xfefefefe, (u_int)0xd7d7d7d7, (u_int)0xabababab, (u_int)0x76767676, 317 ( u_t )0xcacacaca, (u_int)0x82828282, (u_int)0xc9c9c9c9, (u_int)0x7d7d7d7d, 318 ( u_t )0xfafafafa, (u_int)0x59595959, (u_int)0x47474747, (u_int)0xf0f0f0f0, 319 ( u_t )0xadadadad, (u_int)0xd4d4d4d4, (u_int)0xa2a2a2a2, (u_int)0xafafafaf, 320 ( u_t )0x9c9c9c9c, (u_int)0xa4a4a4a4, (u_int)0x72727272, (u_int)0xc0c0c0c0, 321 ( u_t )0xb7b7b7b7, (u_int)0xfdfdfdfd, (u_int)0x93939393, (u_int)0x26262626, 322 ( u_t )0x36363636, (u_int)0x3f3f3f3f, (u_int)0xf7f7f7f7, (u_int)0xcccccccc, 323 ( u_t )0x34343434, (u_int)0xa5a5a5a5, (u_int)0xe5e5e5e5, (u_int)0xf1f1f1f1, 324 ( u_t )0x71717171, (u_int)0xd8d8d8d8, (u_int)0x31313131, (u_int)0x15151515, 325 ( u_t )0x04040404, (u_int)0xc7c7c7c7, (u_int)0x23232323, (u_int)0xc3c3c3c3, 326 ( u_t )0x18181818, (u_int)0x96969696, (u_int)0x05050505, (u_int)0x9a9a9a9a, 327 ( u_t )0x07070707, (u_int)0x12121212, (u_int)0x80808080, (u_int)0xe2e2e2e2, 328 ( u_t )0xebebebeb, (u_int)0x27272727, (u_int)0xb2b2b2b2, (u_int)0x75757575, 329 ( u_t )0x09090909, (u_int)0x83838383, (u_int)0x2c2c2c2c, (u_int)0x1a1a1a1a, 330 ( u_t )0x1b1b1b1b, (u_int)0x6e6e6e6e, (u_int)0x5a5a5a5a, (u_int)0xa0a0a0a0, 331 ( u_t )0x52525252, (u_int)0x3b3b3b3b, (u_int)0xd6d6d6d6, (u_int)0xb3b3b3b3, 332 ( u_t )0x29292929, (u_int)0xe3e3e3e3, (u_int)0x2f2f2f2f, (u_int)0x84848484, 333 ( u_t )0x53535353, (u_int)0xd1d1d1d1, (u_int)0x00000000, (u_int)0xedededed, 334 ( u_t )0x20202020, (u_int)0xfcfcfcfc, (u_int)0xb1b1b1b1, (u_int)0x5b5b5b5b, 335 ( u_t )0x6a6a6a6a, (u_int)0xcbcbcbcb, (u_int)0xbebebebe, (u_int)0x39393939, 336 ( u_t )0x4a4a4a4a, (u_int)0x4c4c4c4c, (u_int)0x58585858, (u_int)0xcfcfcfcf, 337 ( u_t )0xd0d0d0d0, (u_int)0xefefefef, (u_int)0xaaaaaaaa, (u_int)0xfbfbfbfb, 338 ( u_t )0x43434343, (u_int)0x4d4d4d4d, (u_int)0x33333333, (u_int)0x85858585, 339 ( u_t )0x45454545, (u_int)0xf9f9f9f9, (u_int)0x02020202, (u_int)0x7f7f7f7f, 340 ( u_t )0x50505050, (u_int)0x3c3c3c3c, (u_int)0x9f9f9f9f, (u_int)0xa8a8a8a8, 341 ( u_t )0x51515151, (u_int)0xa3a3a3a3, (u_int)0x40404040, (u_int)0x8f8f8f8f, 342 ( u_t )0x92929292, (u_int)0x9d9d9d9d, (u_int)0x38383838, (u_int)0xf5f5f5f5, 343 ( u_t )0xbcbcbcbc, (u_int)0xb6b6b6b6, (u_int)0xdadadada, (u_int)0x21212121, 344 ( u_t )0x10101010, (u_int)0xffffffff, (u_int)0xf3f3f3f3, (u_int)0xd2d2d2d2, 345 ( u_t )0xcdcdcdcd, (u_int)0x0c0c0c0c, (u_int)0x13131313, (u_int)0xecececec, 346 ( u_t )0x5f5f5f5f, (u_int)0x97979797, (u_int)0x44444444, (u_int)0x17171717, 347 ( u_t )0xc4c4c4c4, (u_int)0xa7a7a7a7, (u_int)0x7e7e7e7e, (u_int)0x3d3d3d3d, 348 ( u_t )0x64646464, (u_int)0x5d5d5d5d, (u_int)0x19191919, (u_int)0x73737373, 349 ( u_t )0x60606060, (u_int)0x81818181, (u_int)0x4f4f4f4f, (u_int)0xdcdcdcdc, 350 ( u_t )0x22222222, (u_int)0x2a2a2a2a, (u_int)0x90909090, (u_int)0x88888888, 351 ( u_t )0x46464646, (u_int)0xeeeeeeee, (u_int)0xb8b8b8b8, (u_int)0x14141414, 352 ( u_t )0xdededede, (u_int)0x5e5e5e5e, (u_int)0x0b0b0b0b, (u_int)0xdbdbdbdb, 353 ( u_t )0xe0e0e0e0, (u_int)0x32323232, (u_int)0x3a3a3a3a, (u_int)0x0a0a0a0a, 354 ( u_t )0x49494949, (u_int)0x06060606, (u_int)0x24242424, (u_int)0x5c5c5c5c, 355 ( u_t )0xc2c2c2c2, (u_int)0xd3d3d3d3, (u_int)0xacacacac, (u_int)0x62626262, 356 ( u_t )0x91919191, (u_int)0x95959595, (u_int)0xe4e4e4e4, (u_int)0x79797979, 357 ( u_t )0xe7e7e7e7, (u_int)0xc8c8c8c8, (u_int)0x37373737, (u_int)0x6d6d6d6d, 358 ( u_t )0x8d8d8d8d, (u_int)0xd5d5d5d5, (u_int)0x4e4e4e4e, (u_int)0xa9a9a9a9, 359 ( u_t )0x6c6c6c6c, (u_int)0x56565656, (u_int)0xf4f4f4f4, (u_int)0xeaeaeaea, 360 ( u_t )0x65656565, (u_int)0x7a7a7a7a, (u_int)0xaeaeaeae, (u_int)0x08080808, 361 ( u_t )0xbabababa, (u_int)0x78787878, (u_int)0x25252525, (u_int)0x2e2e2e2e, 362 ( u_t )0x1c1c1c1c, (u_int)0xa6a6a6a6, (u_int)0xb4b4b4b4, (u_int)0xc6c6c6c6, 363 ( u_t )0xe8e8e8e8, (u_int)0xdddddddd, (u_int)0x74747474, (u_int)0x1f1f1f1f, 364 ( u_t )0x4b4b4b4b, (u_int)0xbdbdbdbd, (u_int)0x8b8b8b8b, (u_int)0x8a8a8a8a, 365 ( u_t )0x70707070, (u_int)0x3e3e3e3e, (u_int)0xb5b5b5b5, (u_int)0x66666666, 366 ( u_t )0x48484848, (u_int)0x03030303, (u_int)0xf6f6f6f6, (u_int)0x0e0e0e0e, 367 ( u_t )0x61616161, (u_int)0x35353535, (u_int)0x57575757, (u_int)0xb9b9b9b9, 368 ( u_t )0x86868686, (u_int)0xc1c1c1c1, (u_int)0x1d1d1d1d, (u_int)0x9e9e9e9e, 369 ( u_t )0xe1e1e1e1, (u_int)0xf8f8f8f8, (u_int)0x98989898, (u_int)0x11111111, 370 ( u_t )0x69696969, (u_int)0xd9d9d9d9, (u_int)0x8e8e8e8e, (u_int)0x94949494, 371 ( u_t )0x9b9b9b9b, (u_int)0x1e1e1e1e, (u_int)0x87878787, (u_int)0xe9e9e9e9, 372 ( u_t )0xcececece, (u_int)0x55555555, (u_int)0x28282828, (u_int)0xdfdfdfdf, 373 ( u_t )0x8c8c8c8c, (u_int)0xa1a1a1a1, (u_int)0x89898989, (u_int)0x0d0d0d0d, 374 ( u_t )0xbfbfbfbf, (u_int)0xe6e6e6e6, (u_int)0x42424242, (u_int)0x68686868, 375 ( u_t )0x41414141, (u_int)0x99999999, (u_int)0x2d2d2d2d, (u_int)0x0f0f0f0f, 376 ( u_t )0xb0b0b0b0, (u_int)0x54545454, (u_int)0xbbbbbbbb, (u_int)0x16161616, 378 cڡ u32 gTd0 [256] = { 379 ( u_t )0x51f4a750, (u_int)0x7e416553, (u_int)0x1a17a4c3, (u_int)0x3a275e96, 380 ( u_t )0x3bab6bcb, (u_int)0x1f9d45f1, (u_int)0xacfa58ab, (u_int)0x4be30393, 381 ( u_t )0x2030fa55, (u_int)0xad766df6, (u_int)0x88cc7691, (u_int)0xf5024c25, 382 ( u_t )0x4fe5d7fc, (u_int)0xc52acbd7, (u_int)0x26354480, (u_int)0xb562a38f, 383 ( u_t )0xdeb15a49, (u_int)0x25ba1b67, (u_int)0x45ea0e98, (u_int)0x5dfec0e1, 384 ( u_t )0xc32f7502, (u_int)0x814cf012, (u_int)0x8d4697a3, (u_int)0x6bd3f9c6, 385 ( u_t )0x038f5fe7, (u_int)0x15929c95, (u_int)0xbf6d7aeb, (u_int)0x955259da, 386 ( u_t )0xd4be832d, (u_int)0x587421d3, (u_int)0x49e06929, (u_int)0x8ec9c844, 387 ( u_t )0x75c2896a, (u_int)0xf48e7978, (u_int)0x99583e6b, (u_int)0x27b971dd, 388 ( u_t )0xbee14fb6, (u_int)0xf088ad17, (u_int)0xc920ac66, (u_int)0x7dce3ab4, 389 ( u_t )0x63df4a18, (u_int)0xe51a3182, (u_int)0x97513360, (u_int)0x62537f45, 390 ( u_t )0xb16477e0, (u_int)0xbb6bae84, (u_int)0xfe81a01c, (u_int)0xf9082b94, 391 ( u_t )0x70486858, (u_int)0x8f45fd19, (u_int)0x94de6c87, (u_int)0x527bf8b7, 392 ( u_t )0xab73d323, (u_int)0x724b02e2, (u_int)0xe31f8f57, (u_int)0x6655ab2a, 393 ( u_t )0xb2eb2807, (u_int)0x2fb5c203, (u_int)0x86c57b9a, (u_int)0xd33708a5, 394 ( u_t )0x302887f2, (u_int)0x23bfa5b2, (u_int)0x02036aba, (u_int)0xed16825c, 395 ( u_t )0x8acf1c2b, (u_int)0xa779b492, (u_int)0xf307f2f0, (u_int)0x4e69e2a1, 396 ( u_t )0x65daf4cd, (u_int)0x0605bed5, (u_int)0xd134621f, (u_int)0xc4a6fe8a, 397 ( u_t )0x342e539d, (u_int)0xa2f355a0, (u_int)0x058ae132, (u_int)0xa4f6eb75, 398 ( u_t )0x0b83ec39, (u_int)0x4060efaa, (u_int)0x5e719f06, (u_int)0xbd6e1051, 399 ( u_t )0x3e218af9, (u_int)0x96dd063d, (u_int)0xdd3e05ae, (u_int)0x4de6bd46, 400 ( u_t )0x91548db5, (u_int)0x71c45d05, (u_int)0x0406d46f, (u_int)0x605015ff, 401 ( u_t )0x1998fb24, (u_int)0xd6bde997, (u_int)0x894043cc, (u_int)0x67d99e77, 402 ( u_t )0xb0e842bd, (u_int)0x07898b88, (u_int)0xe7195b38, (u_int)0x79c8eedb, 403 ( u_t )0xa17c0a47, (u_int)0x7c420fe9, (u_int)0xf8841ec9, (u_int)0x00000000, 404 ( u_t )0x09808683, (u_int)0x322bed48, (u_int)0x1e1170ac, (u_int)0x6c5a724e, 405 ( u_t )0xfd0efffb, (u_int)0x0f853856, (u_int)0x3daed51e, (u_int)0x362d3927, 406 ( u_t )0x0a0fd964, (u_int)0x685ca621, (u_int)0x9b5b54d1, (u_int)0x24362e3a, 407 ( u_t )0x0c0a67b1, (u_int)0x9357e70f, (u_int)0xb4ee96d2, (u_int)0x1b9b919e, 408 ( u_t )0x80c0c54f, (u_int)0x61dc20a2, (u_int)0x5a774b69, (u_int)0x1c121a16, 409 ( u_t )0xe293ba0a, (u_int)0xc0a02ae5, (u_int)0x3c22e043, (u_int)0x121b171d, 410 ( u_t )0x0e090d0b, (u_int)0xf28bc7ad, (u_int)0x2db6a8b9, (u_int)0x141ea9c8, 411 ( u_t )0x57f11985, (u_int)0xaf75074c, (u_int)0xee99ddbb, (u_int)0xa37f60fd, 412 ( u_t )0xf701269f, (u_int)0x5c72f5bc, (u_int)0x44663bc5, (u_int)0x5bfb7e34, 413 ( u_t )0x8b432976, (u_int)0xcb23c6dc, (u_int)0xb6edfc68, (u_int)0xb8e4f163, 414 ( u_t )0xd731dcca, (u_int)0x42638510, (u_int)0x13972240, (u_int)0x84c61120, 415 ( u_t )0x854a247d, (u_int)0xd2bb3df8, (u_int)0xaef93211, (u_int)0xc729a16d, 416 ( u_t )0x1d9e2f4b, (u_int)0xdcb230f3, (u_int)0x0d8652ec, (u_int)0x77c1e3d0, 417 ( u_t )0x2bb3166c, (u_int)0xa970b999, (u_int)0x119448fa, (u_int)0x47e96422, 418 ( u_t )0xa8fc8cc4, (u_int)0xa0f03f1a, (u_int)0x567d2cd8, (u_int)0x223390ef, 419 ( u_t )0x87494ec7, (u_int)0xd938d1c1, (u_int)0x8ccaa2fe, (u_int)0x98d40b36, 420 ( u_t )0xa6f581cf, (u_int)0xa57ade28, (u_int)0xdab78e26, (u_int)0x3fadbfa4, 421 ( u_t )0x2c3a9de4, (u_int)0x5078920d, (u_int)0x6a5fcc9b, (u_int)0x547e4662, 422 ( u_t )0xf68d13c2, (u_int)0x90d8b8e8, (u_int)0x2e39f75e, (u_int)0x82c3aff5, 423 ( u_t )0x9f5d80be, (u_int)0x69d0937c, (u_int)0x6fd52da9, (u_int)0xcf2512b3, 424 ( u_t )0xc8ac993b, (u_int)0x10187da7, (u_int)0xe89c636e, (u_int)0xdb3bbb7b, 425 ( u_t )0xcd267809, (u_int)0x6e5918f4, (u_int)0xec9ab701, (u_int)0x834f9aa8, 426 ( u_t )0xe6956e65, (u_int)0xaaffe67e, (u_int)0x21bccf08, (u_int)0xef15e8e6, 427 ( u_t )0xbae79bd9, (u_int)0x4a6f36ce, (u_int)0xea9f09d4, (u_int)0x29b07cd6, 428 ( u_t )0x31a4b2af, (u_int)0x2a3f2331, (u_int)0xc6a59430, (u_int)0x35a266c0, 429 ( u_t )0x744ebc37, (u_int)0xfc82caa6, (u_int)0xe090d0b0, (u_int)0x33a7d815, 430 ( u_t )0xf104984a, (u_int)0x41ecdaf7, (u_int)0x7fcd500e, (u_int)0x1791f62f, 431 ( u_t )0x764dd68d, (u_int)0x43efb04d, (u_int)0xccaa4d54, (u_int)0xe49604df, 432 ( u_t )0x9ed1b5e3, (u_int)0x4c6a881b, (u_int)0xc12c1fb8, (u_int)0x4665517f, 433 ( u_t )0x9d5eea04, (u_int)0x018c355d, (u_int)0xfa877473, (u_int)0xfb0b412e, 434 ( u_t )0xb3671d5a, (u_int)0x92dbd252, (u_int)0xe9105633, (u_int)0x6dd64713, 435 ( u_t )0x9ad7618c, (u_int)0x37a10c7a, (u_int)0x59f8148e, (u_int)0xeb133c89, 436 ( u_t )0xcea927ee, (u_int)0xb761c935, (u_int)0xe11ce5ed, (u_int)0x7a47b13c, 437 ( u_t )0x9cd2df59, (u_int)0x55f2733f, (u_int)0x1814ce79, (u_int)0x73c737bf, 438 ( u_t )0x53f7cdea, (u_int)0x5ffdaa5b, (u_int)0xdf3d6f14, (u_int)0x7844db86, 439 ( u_t )0xcaaff381, (u_int)0xb968c43e, (u_int)0x3824342c, (u_int)0xc2a3405f, 440 ( u_t )0x161dc372, (u_int)0xbce2250c, (u_int)0x283c498b, (u_int)0xff0d9541, 441 ( u_t )0x39a80171, (u_int)0x080cb3de, (u_int)0xd8b4e49c, (u_int)0x6456c190, 442 ( u_t )0x7bcb8461, (u_int)0xd532b670, (u_int)0x486c5c74, (u_int)0xd0b85742, 444 cڡ u32 gTd1 [256] = { 445 ( u_t )0x5051f4a7, (u_int)0x537e4165, (u_int)0xc31a17a4, (u_int)0x963a275e, 446 ( u_t )0xcb3bab6b, (u_int)0xf11f9d45, (u_int)0xabacfa58, (u_int)0x934be303, 447 ( u_t )0x552030fa, (u_int)0xf6ad766d, (u_int)0x9188cc76, (u_int)0x25f5024c, 448 ( u_t )0xfc4fe5d7, (u_int)0xd7c52acb, (u_int)0x80263544, (u_int)0x8fb562a3, 449 ( u_t )0x49deb15a, (u_int)0x6725ba1b, (u_int)0x9845ea0e, (u_int)0xe15dfec0, 450 ( u_t )0x02c32f75, (u_int)0x12814cf0, (u_int)0xa38d4697, (u_int)0xc66bd3f9, 451 ( u_t )0xe7038f5f, (u_int)0x9515929c, (u_int)0xebbf6d7a, (u_int)0xda955259, 452 ( u_t )0x2dd4be83, (u_int)0xd3587421, (u_int)0x2949e069, (u_int)0x448ec9c8, 453 ( u_t )0x6a75c289, (u_int)0x78f48e79, (u_int)0x6b99583e, (u_int)0xdd27b971, 454 ( u_t )0xb6bee14f, (u_int)0x17f088ad, (u_int)0x66c920ac, (u_int)0xb47dce3a, 455 ( u_t )0x1863df4a, (u_int)0x82e51a31, (u_int)0x60975133, (u_int)0x4562537f, 456 ( u_t )0xe0b16477, (u_int)0x84bb6bae, (u_int)0x1cfe81a0, (u_int)0x94f9082b, 457 ( u_t )0x58704868, (u_int)0x198f45fd, (u_int)0x8794de6c, (u_int)0xb7527bf8, 458 ( u_t )0x23ab73d3, (u_int)0xe2724b02, (u_int)0x57e31f8f, (u_int)0x2a6655ab, 459 ( u_t )0x07b2eb28, (u_int)0x032fb5c2, (u_int)0x9a86c57b, (u_int)0xa5d33708, 460 ( u_t )0xf2302887, (u_int)0xb223bfa5, (u_int)0xba02036a, (u_int)0x5ced1682, 461 ( u_t )0x2b8acf1c, (u_int)0x92a779b4, (u_int)0xf0f307f2, (u_int)0xa14e69e2, 462 ( u_t )0xcd65daf4, (u_int)0xd50605be, (u_int)0x1fd13462, (u_int)0x8ac4a6fe, 463 ( u_t )0x9d342e53, (u_int)0xa0a2f355, (u_int)0x32058ae1, (u_int)0x75a4f6eb, 464 ( u_t )0x390b83ec, (u_int)0xaa4060ef, (u_int)0x065e719f, (u_int)0x51bd6e10, 465 ( u_t )0xf93e218a, (u_int)0x3d96dd06, (u_int)0xaedd3e05, (u_int)0x464de6bd, 466 ( u_t )0xb591548d, (u_int)0x0571c45d, (u_int)0x6f0406d4, (u_int)0xff605015, 467 ( u_t )0x241998fb, (u_int)0x97d6bde9, (u_int)0xcc894043, (u_int)0x7767d99e, 468 ( u_t )0xbdb0e842, (u_int)0x8807898b, (u_int)0x38e7195b, (u_int)0xdb79c8ee, 469 ( u_t )0x47a17c0a, (u_int)0xe97c420f, (u_int)0xc9f8841e, (u_int)0x00000000, 470 ( u_t )0x83098086, (u_int)0x48322bed, (u_int)0xac1e1170, (u_int)0x4e6c5a72, 471 ( u_t )0xfbfd0eff, (u_int)0x560f8538, (u_int)0x1e3daed5, (u_int)0x27362d39, 472 ( u_t )0x640a0fd9, (u_int)0x21685ca6, (u_int)0xd19b5b54, (u_int)0x3a24362e, 473 ( u_t )0xb10c0a67, (u_int)0x0f9357e7, (u_int)0xd2b4ee96, (u_int)0x9e1b9b91, 474 ( u_t )0x4f80c0c5, (u_int)0xa261dc20, (u_int)0x695a774b, (u_int)0x161c121a, 475 ( u_t )0x0ae293ba, (u_int)0xe5c0a02a, (u_int)0x433c22e0, (u_int)0x1d121b17, 476 ( u_t )0x0b0e090d, (u_int)0xadf28bc7, (u_int)0xb92db6a8, (u_int)0xc8141ea9, 477 ( u_t )0x8557f119, (u_int)0x4caf7507, (u_int)0xbbee99dd, (u_int)0xfda37f60, 478 ( u_t )0x9ff70126, (u_int)0xbc5c72f5, (u_int)0xc544663b, (u_int)0x345bfb7e, 479 ( u_t )0x768b4329, (u_int)0xdccb23c6, (u_int)0x68b6edfc, (u_int)0x63b8e4f1, 480 ( u_t )0xcad731dc, (u_int)0x10426385, (u_int)0x40139722, (u_int)0x2084c611, 481 ( u_t )0x7d854a24, (u_int)0xf8d2bb3d, (u_int)0x11aef932, (u_int)0x6dc729a1, 482 ( u_t )0x4b1d9e2f, (u_int)0xf3dcb230, (u_int)0xec0d8652, (u_int)0xd077c1e3, 483 ( u_t )0x6c2bb316, (u_int)0x99a970b9, (u_int)0xfa119448, (u_int)0x2247e964, 484 ( u_t )0xc4a8fc8c, (u_int)0x1aa0f03f, (u_int)0xd8567d2c, (u_int)0xef223390, 485 ( u_t )0xc787494e, (u_int)0xc1d938d1, (u_int)0xfe8ccaa2, (u_int)0x3698d40b, 486 ( u_t )0xcfa6f581, (u_int)0x28a57ade, (u_int)0x26dab78e, (u_int)0xa43fadbf, 487 ( u_t )0xe42c3a9d, (u_int)0x0d507892, (u_int)0x9b6a5fcc, (u_int)0x62547e46, 488 ( u_t )0xc2f68d13, (u_int)0xe890d8b8, (u_int)0x5e2e39f7, (u_int)0xf582c3af, 489 ( u_t )0xbe9f5d80, (u_int)0x7c69d093, (u_int)0xa96fd52d, (u_int)0xb3cf2512, 490 ( u_t )0x3bc8ac99, (u_int)0xa710187d, (u_int)0x6ee89c63, (u_int)0x7bdb3bbb, 491 ( u_t )0x09cd2678, (u_int)0xf46e5918, (u_int)0x01ec9ab7, (u_int)0xa8834f9a, 492 ( u_t )0x65e6956e, (u_int)0x7eaaffe6, (u_int)0x0821bccf, (u_int)0xe6ef15e8, 493 ( u_t )0xd9bae79b, (u_int)0xce4a6f36, (u_int)0xd4ea9f09, (u_int)0xd629b07c, 494 ( u_t )0xaf31a4b2, (u_int)0x312a3f23, (u_int)0x30c6a594, (u_int)0xc035a266, 495 ( u_t )0x37744ebc, (u_int)0xa6fc82ca, (u_int)0xb0e090d0, (u_int)0x1533a7d8, 496 ( u_t )0x4af10498, (u_int)0xf741ecda, (u_int)0x0e7fcd50, (u_int)0x2f1791f6, 497 ( u_t )0x8d764dd6, (u_int)0x4d43efb0, (u_int)0x54ccaa4d, (u_int)0xdfe49604, 498 ( u_t )0xe39ed1b5, (u_int)0x1b4c6a88, (u_int)0xb8c12c1f, (u_int)0x7f466551, 499 ( u_t )0x049d5eea, (u_int)0x5d018c35, (u_int)0x73fa8774, (u_int)0x2efb0b41, 500 ( u_t )0x5ab3671d, (u_int)0x5292dbd2, (u_int)0x33e91056, (u_int)0x136dd647, 501 ( u_t )0x8c9ad761, (u_int)0x7a37a10c, (u_int)0x8e59f814, (u_int)0x89eb133c, 502 ( u_t )0xeecea927, (u_int)0x35b761c9, (u_int)0xede11ce5, (u_int)0x3c7a47b1, 503 ( u_t )0x599cd2df, (u_int)0x3f55f273, (u_int)0x791814ce, (u_int)0xbf73c737, 504 ( u_t )0xea53f7cd, (u_int)0x5b5ffdaa, (u_int)0x14df3d6f, (u_int)0x867844db, 505 ( u_t )0x81caaff3, (u_int)0x3eb968c4, (u_int)0x2c382434, (u_int)0x5fc2a340, 506 ( u_t )0x72161dc3, (u_int)0x0cbce225, (u_int)0x8b283c49, (u_int)0x41ff0d95, 507 ( u_t )0x7139a801, (u_int)0xde080cb3, (u_int)0x9cd8b4e4, (u_int)0x906456c1, 508 ( u_t )0x617bcb84, (u_int)0x70d532b6, (u_int)0x74486c5c, (u_int)0x42d0b857, 510 cڡ u32 gTd2 [256] = { 511 ( u_t )0xa75051f4, (u_int)0x65537e41, (u_int)0xa4c31a17, (u_int)0x5e963a27, 512 ( u_t )0x6bcb3bab, (u_int)0x45f11f9d, (u_int)0x58abacfa, (u_int)0x03934be3, 513 ( u_t )0xfa552030, (u_int)0x6df6ad76, (u_int)0x769188cc, (u_int)0x4c25f502, 514 ( u_t )0xd7fc4fe5, (u_int)0xcbd7c52a, (u_int)0x44802635, (u_int)0xa38fb562, 515 ( u_t )0x5a49deb1, (u_int)0x1b6725ba, (u_int)0x0e9845ea, (u_int)0xc0e15dfe, 516 ( u_t )0x7502c32f, (u_int)0xf012814c, (u_int)0x97a38d46, (u_int)0xf9c66bd3, 517 ( u_t )0x5fe7038f, (u_int)0x9c951592, (u_int)0x7aebbf6d, (u_int)0x59da9552, 518 ( u_t )0x832dd4be, (u_int)0x21d35874, (u_int)0x692949e0, (u_int)0xc8448ec9, 519 ( u_t )0x896a75c2, (u_int)0x7978f48e, (u_int)0x3e6b9958, (u_int)0x71dd27b9, 520 ( u_t )0x4fb6bee1, (u_int)0xad17f088, (u_int)0xac66c920, (u_int)0x3ab47dce, 521 ( u_t )0x4a1863df, (u_int)0x3182e51a, (u_int)0x33609751, (u_int)0x7f456253, 522 ( u_t )0x77e0b164, (u_int)0xae84bb6b, (u_int)0xa01cfe81, (u_int)0x2b94f908, 523 ( u_t )0x68587048, (u_int)0xfd198f45, (u_int)0x6c8794de, (u_int)0xf8b7527b, 524 ( u_t )0xd323ab73, (u_int)0x02e2724b, (u_int)0x8f57e31f, (u_int)0xab2a6655, 525 ( u_t )0x2807b2eb, (u_int)0xc2032fb5, (u_int)0x7b9a86c5, (u_int)0x08a5d337, 526 ( u_t )0x87f23028, (u_int)0xa5b223bf, (u_int)0x6aba0203, (u_int)0x825ced16, 527 ( u_t )0x1c2b8acf, (u_int)0xb492a779, (u_int)0xf2f0f307, (u_int)0xe2a14e69, 528 ( u_t )0xf4cd65da, (u_int)0xbed50605, (u_int)0x621fd134, (u_int)0xfe8ac4a6, 529 ( u_t )0x539d342e, (u_int)0x55a0a2f3, (u_int)0xe132058a, (u_int)0xeb75a4f6, 530 ( u_t )0xec390b83, (u_int)0xefaa4060, (u_int)0x9f065e71, (u_int)0x1051bd6e, 532 ( u_t )0x8af93e21, (u_int)0x063d96dd, (u_int)0x05aedd3e, (u_int)0xbd464de6, 533 ( u_t )0x8db59154, (u_int)0x5d0571c4, (u_int)0xd46f0406, (u_int)0x15ff6050, 534 ( u_t )0xfb241998, (u_int)0xe997d6bd, (u_int)0x43cc8940, (u_int)0x9e7767d9, 535 ( u_t )0x42bdb0e8, (u_int)0x8b880789, (u_int)0x5b38e719, (u_int)0xeedb79c8, 536 ( u_t )0x0a47a17c, (u_int)0x0fe97c42, (u_int)0x1ec9f884, (u_int)0x00000000, 537 ( u_t )0x86830980, (u_int)0xed48322b, (u_int)0x70ac1e11, (u_int)0x724e6c5a, 538 ( u_t )0xfffbfd0e, (u_int)0x38560f85, (u_int)0xd51e3dae, (u_int)0x3927362d, 539 ( u_t )0xd9640a0f, (u_int)0xa621685c, (u_int)0x54d19b5b, (u_int)0x2e3a2436, 540 ( u_t )0x67b10c0a, (u_int)0xe70f9357, (u_int)0x96d2b4ee, (u_int)0x919e1b9b, 541 ( u_t )0xc54f80c0, (u_int)0x20a261dc, (u_int)0x4b695a77, (u_int)0x1a161c12, 542 ( u_t )0xba0ae293, (u_int)0x2ae5c0a0, (u_int)0xe0433c22, (u_int)0x171d121b, 543 ( u_t )0x0d0b0e09, (u_int)0xc7adf28b, (u_int)0xa8b92db6, (u_int)0xa9c8141e, 544 ( u_t )0x198557f1, (u_int)0x074caf75, (u_int)0xddbbee99, (u_int)0x60fda37f, 545 ( u_t )0x269ff701, (u_int)0xf5bc5c72, (u_int)0x3bc54466, (u_int)0x7e345bfb, 546 ( u_t )0x29768b43, (u_int)0xc6dccb23, (u_int)0xfc68b6ed, (u_int)0xf163b8e4, 547 ( u_t )0xdccad731, (u_int)0x85104263, (u_int)0x22401397, (u_int)0x112084c6, 548 ( u_t )0x247d854a, (u_int)0x3df8d2bb, (u_int)0x3211aef9, (u_int)0xa16dc729, 549 ( u_t )0x2f4b1d9e, (u_int)0x30f3dcb2, (u_int)0x52ec0d86, (u_int)0xe3d077c1, 550 ( u_t )0x166c2bb3, (u_int)0xb999a970, (u_int)0x48fa1194, (u_int)0x642247e9, 551 ( u_t )0x8cc4a8fc, (u_int)0x3f1aa0f0, (u_int)0x2cd8567d, (u_int)0x90ef2233, 552 ( u_t )0x4ec78749, (u_int)0xd1c1d938, (u_int)0xa2fe8cca, (u_int)0x0b3698d4, 553 ( u_t )0x81cfa6f5, (u_int)0xde28a57a, (u_int)0x8e26dab7, (u_int)0xbfa43fad, 554 ( u_t )0x9de42c3a, (u_int)0x920d5078, (u_int)0xcc9b6a5f, (u_int)0x4662547e, 555 ( u_t )0x13c2f68d, (u_int)0xb8e890d8, (u_int)0xf75e2e39, (u_int)0xaff582c3, 556 ( u_t )0x80be9f5d, (u_int)0x937c69d0, (u_int)0x2da96fd5, (u_int)0x12b3cf25, 557 ( u_t )0x993bc8ac, (u_int)0x7da71018, (u_int)0x636ee89c, (u_int)0xbb7bdb3b, 558 ( u_t )0x7809cd26, (u_int)0x18f46e59, (u_int)0xb701ec9a, (u_int)0x9aa8834f, 559 ( u_t )0x6e65e695, (u_int)0xe67eaaff, (u_int)0xcf0821bc, (u_int)0xe8e6ef15, 560 ( u_t )0x9bd9bae7, (u_int)0x36ce4a6f, (u_int)0x09d4ea9f, (u_int)0x7cd629b0, 561 ( u_t )0xb2af31a4, (u_int)0x23312a3f, (u_int)0x9430c6a5, (u_int)0x66c035a2, 562 ( u_t )0xbc37744e, (u_int)0xcaa6fc82, (u_int)0xd0b0e090, (u_int)0xd81533a7, 563 ( u_t )0x984af104, (u_int)0xdaf741ec, (u_int)0x500e7fcd, (u_int)0xf62f1791, 564 ( u_t )0xd68d764d, (u_int)0xb04d43ef, (u_int)0x4d54ccaa, (u_int)0x04dfe496, 565 ( u_t )0xb5e39ed1, (u_int)0x881b4c6a, (u_int)0x1fb8c12c, (u_int)0x517f4665, 566 ( u_t )0xea049d5e, (u_int)0x355d018c, (u_int)0x7473fa87, (u_int)0x412efb0b, 567 ( u_t )0x1d5ab367, (u_int)0xd25292db, (u_int)0x5633e910, (u_int)0x47136dd6, 568 ( u_t )0x618c9ad7, (u_int)0x0c7a37a1, (u_int)0x148e59f8, (u_int)0x3c89eb13, 569 ( u_t )0x27eecea9, (u_int)0xc935b761, (u_int)0xe5ede11c, (u_int)0xb13c7a47, 570 ( u_t )0xdf599cd2, (u_int)0x733f55f2, (u_int)0xce791814, (u_int)0x37bf73c7, 571 ( u_t )0xcdea53f7, (u_int)0xaa5b5ffd, (u_int)0x6f14df3d, (u_int)0xdb867844, 572 ( u_t )0xf381caaf, (u_int)0xc43eb968, (u_int)0x342c3824, (u_int)0x405fc2a3, 573 ( u_t )0xc372161d, (u_int)0x250cbce2, (u_int)0x498b283c, (u_int)0x9541ff0d, 574 ( u_t )0x017139a8, (u_int)0xb3de080c, (u_int)0xe49cd8b4, (u_int)0xc1906456, 575 ( u_t )0x84617bcb, (u_int)0xb670d532, (u_int)0x5c74486c, (u_int)0x5742d0b8, 577 cڡ u32 gTd3 [256] = { 578 ( u_t )0xf4a75051, (u_int)0x4165537e, (u_int)0x17a4c31a, (u_int)0x275e963a, 579 ( u_t )0xab6bcb3b, (u_int)0x9d45f11f, (u_int)0xfa58abac, (u_int)0xe303934b, 580 ( u_t )0x30fa5520, (u_int)0x766df6ad, (u_int)0xcc769188, (u_int)0x024c25f5, 581 ( u_t )0xe5d7fc4f, (u_int)0x2acbd7c5, (u_int)0x35448026, (u_int)0x62a38fb5, 582 ( u_t )0xb15a49de, (u_int)0xba1b6725, (u_int)0xea0e9845, (u_int)0xfec0e15d, 583 ( u_t )0x2f7502c3, (u_int)0x4cf01281, (u_int)0x4697a38d, (u_int)0xd3f9c66b, 584 ( u_t )0x8f5fe703, (u_int)0x929c9515, (u_int)0x6d7aebbf, (u_int)0x5259da95, 585 ( u_t )0xbe832dd4, (u_int)0x7421d358, (u_int)0xe0692949, (u_int)0xc9c8448e, 586 ( u_t )0xc2896a75, (u_int)0x8e7978f4, (u_int)0x583e6b99, (u_int)0xb971dd27, 587 ( u_t )0xe14fb6be, (u_int)0x88ad17f0, (u_int)0x20ac66c9, (u_int)0xce3ab47d, 588 ( u_t )0xdf4a1863, (u_int)0x1a3182e5, (u_int)0x51336097, (u_int)0x537f4562, 589 ( u_t )0x6477e0b1, (u_int)0x6bae84bb, (u_int)0x81a01cfe, (u_int)0x082b94f9, 590 ( u_t )0x48685870, (u_int)0x45fd198f, (u_int)0xde6c8794, (u_int)0x7bf8b752, 591 ( u_t )0x73d323ab, (u_int)0x4b02e272, (u_int)0x1f8f57e3, (u_int)0x55ab2a66, 592 ( u_t )0xeb2807b2, (u_int)0xb5c2032f, (u_int)0xc57b9a86, (u_int)0x3708a5d3, 593 ( u_t )0x2887f230, (u_int)0xbfa5b223, (u_int)0x036aba02, (u_int)0x16825ced, 594 ( u_t )0xcf1c2b8a, (u_int)0x79b492a7, (u_int)0x07f2f0f3, (u_int)0x69e2a14e, 595 ( u_t )0xdaf4cd65, (u_int)0x05bed506, (u_int)0x34621fd1, (u_int)0xa6fe8ac4, 596 ( u_t )0x2e539d34, (u_int)0xf355a0a2, (u_int)0x8ae13205, (u_int)0xf6eb75a4, 597 ( u_t )0x83ec390b, (u_int)0x60efaa40, (u_int)0x719f065e, (u_int)0x6e1051bd, 598 ( u_t )0x218af93e, (u_int)0xdd063d96, (u_int)0x3e05aedd, (u_int)0xe6bd464d, 599 ( u_t )0x548db591, (u_int)0xc45d0571, (u_int)0x06d46f04, (u_int)0x5015ff60, 600 ( u_t )0x98fb2419, (u_int)0xbde997d6, (u_int)0x4043cc89, (u_int)0xd99e7767, 601 ( u_t )0xe842bdb0, (u_int)0x898b8807, (u_int)0x195b38e7, (u_int)0xc8eedb79, 602 ( u_t )0x7c0a47a1, (u_int)0x420fe97c, (u_int)0x841ec9f8, (u_int)0x00000000, 603 ( u_t )0x80868309, (u_int)0x2bed4832, (u_int)0x1170ac1e, (u_int)0x5a724e6c, 604 ( u_t )0x0efffbfd, (u_int)0x8538560f, (u_int)0xaed51e3d, (u_int)0x2d392736, 605 ( u_t )0x0fd9640a, (u_int)0x5ca62168, (u_int)0x5b54d19b, (u_int)0x362e3a24, 606 ( u_t )0x0a67b10c, (u_int)0x57e70f93, (u_int)0xee96d2b4, (u_int)0x9b919e1b, 607 ( u_t )0xc0c54f80, (u_int)0xdc20a261, (u_int)0x774b695a, (u_int)0x121a161c, 608 ( u_t )0x93ba0ae2, (u_int)0xa02ae5c0, (u_int)0x22e0433c, (u_int)0x1b171d12, 609 ( u_t )0x090d0b0e, (u_int)0x8bc7adf2, (u_int)0xb6a8b92d, (u_int)0x1ea9c814, 610 ( u_t )0xf1198557, (u_int)0x75074caf, (u_int)0x99ddbbee, (u_int)0x7f60fda3, 611 ( u_t )0x01269ff7, (u_int)0x72f5bc5c, (u_int)0x663bc544, (u_int)0xfb7e345b, 612 ( u_t )0x4329768b, (u_int)0x23c6dccb, (u_int)0xedfc68b6, (u_int)0xe4f163b8, 613 ( u_t )0x31dccad7, (u_int)0x63851042, (u_int)0x97224013, (u_int)0xc6112084, 614 ( u_t )0x4a247d85, (u_int)0xbb3df8d2, (u_int)0xf93211ae, (u_int)0x29a16dc7, 615 ( u_t )0x9e2f4b1d, (u_int)0xb230f3dc, (u_int)0x8652ec0d, (u_int)0xc1e3d077, 616 ( u_t )0xb3166c2b, (u_int)0x70b999a9, (u_int)0x9448fa11, (u_int)0xe9642247, 617 ( u_t )0xfc8cc4a8, (u_int)0xf03f1aa0, (u_int)0x7d2cd856, (u_int)0x3390ef22, 618 ( u_t )0x494ec787, (u_int)0x38d1c1d9, (u_int)0xcaa2fe8c, (u_int)0xd40b3698, 619 ( u_t )0xf581cfa6, (u_int)0x7ade28a5, (u_int)0xb78e26da, (u_int)0xadbfa43f, 620 ( u_t )0x3a9de42c, (u_int)0x78920d50, (u_int)0x5fcc9b6a, (u_int)0x7e466254, 621 ( u_t )0x8d13c2f6, (u_int)0xd8b8e890, (u_int)0x39f75e2e, (u_int)0xc3aff582, 622 ( u_t )0x5d80be9f, (u_int)0xd0937c69, (u_int)0xd52da96f, (u_int)0x2512b3cf, 623 ( u_t )0xac993bc8, (u_int)0x187da710, (u_int)0x9c636ee8, (u_int)0x3bbb7bdb, 624 ( u_t )0x267809cd, (u_int)0x5918f46e, (u_int)0x9ab701ec, (u_int)0x4f9aa883, 625 ( u_t )0x956e65e6, (u_int)0xffe67eaa, (u_int)0xbccf0821, (u_int)0x15e8e6ef, 626 ( u_t )0xe79bd9ba, (u_int)0x6f36ce4a, (u_int)0x9f09d4ea, (u_int)0xb07cd629, 627 ( u_t )0xa4b2af31, (u_int)0x3f23312a, (u_int)0xa59430c6, (u_int)0xa266c035, 628 ( u_t )0x4ebc3774, (u_int)0x82caa6fc, (u_int)0x90d0b0e0, (u_int)0xa7d81533, 629 ( u_t )0x04984af1, (u_int)0xecdaf741, (u_int)0xcd500e7f, (u_int)0x91f62f17, 630 ( u_t )0x4dd68d76, (u_int)0xefb04d43, (u_int)0xaa4d54cc, (u_int)0x9604dfe4, 631 ( u_t )0xd1b5e39e, (u_int)0x6a881b4c, (u_int)0x2c1fb8c1, (u_int)0x65517f46, 632 ( u_t )0x5eea049d, (u_int)0x8c355d01, (u_int)0x877473fa, (u_int)0x0b412efb, 633 ( u_t )0x671d5ab3, (u_int)0xdbd25292, (u_int)0x105633e9, (u_int)0xd647136d, 634 ( u_t )0xd7618c9a, (u_int)0xa10c7a37, (u_int)0xf8148e59, (u_int)0x133c89eb, 635 ( u_t )0xa927eece, (u_int)0x61c935b7, (u_int)0x1ce5ede1, (u_int)0x47b13c7a, 636 ( u_t )0xd2df599c, (u_int)0xf2733f55, (u_int)0x14ce7918, (u_int)0xc737bf73, 637 ( u_t )0xf7cdea53, (u_int)0xfdaa5b5f, (u_int)0x3d6f14df, (u_int)0x44db8678, 638 ( u_t )0xaff381ca, (u_int)0x68c43eb9, (u_int)0x24342c38, (u_int)0xa3405fc2, 639 ( u_t )0x1dc37216, (u_int)0xe2250cbc, (u_int)0x3c498b28, (u_int)0x0d9541ff, 640 ( u_t )0xa8017139, (u_int)0x0cb3de08, (u_int)0xb4e49cd8, (u_int)0x56c19064, 641 ( u_t )0xcb84617b, (u_int)0x32b670d5, (u_int)0x6c5c7448, (u_int)0xb85742d0, 643 cڡ u32 gTd4 [256] = { 644 ( u_t )0x52525252, (u_int)0x09090909, (u_int)0x6a6a6a6a, (u_int)0xd5d5d5d5, 645 ( u_t )0x30303030, (u_int)0x36363636, (u_int)0xa5a5a5a5, (u_int)0x38383838, 646 ( u_t )0xbfbfbfbf, (u_int)0x40404040, (u_int)0xa3a3a3a3, (u_int)0x9e9e9e9e, 647 ( u_t )0x81818181, (u_int)0xf3f3f3f3, (u_int)0xd7d7d7d7, (u_int)0xfbfbfbfb, 648 ( u_t )0x7c7c7c7c, (u_int)0xe3e3e3e3, (u_int)0x39393939, (u_int)0x82828282, 649 ( u_t )0x9b9b9b9b, (u_int)0x2f2f2f2f, (u_int)0xffffffff, (u_int)0x87878787, 650 ( u_t )0x34343434, (u_int)0x8e8e8e8e, (u_int)0x43434343, (u_int)0x44444444, 651 ( u_t )0xc4c4c4c4, (u_int)0xdededede, (u_int)0xe9e9e9e9, (u_int)0xcbcbcbcb, 652 ( u_t )0x54545454, (u_int)0x7b7b7b7b, (u_int)0x94949494, (u_int)0x32323232, 653 ( u_t )0xa6a6a6a6, (u_int)0xc2c2c2c2, (u_int)0x23232323, (u_int)0x3d3d3d3d, 654 ( u_t )0xeeeeeeee, (u_int)0x4c4c4c4c, (u_int)0x95959595, (u_int)0x0b0b0b0b, 655 ( u_t )0x42424242, (u_int)0xfafafafa, (u_int)0xc3c3c3c3, (u_int)0x4e4e4e4e, 656 ( u_t )0x08080808, (u_int)0x2e2e2e2e, (u_int)0xa1a1a1a1, (u_int)0x66666666, 657 ( u_t )0x28282828, (u_int)0xd9d9d9d9, (u_int)0x24242424, (u_int)0xb2b2b2b2, 658 ( u_t )0x76767676, (u_int)0x5b5b5b5b, (u_int)0xa2a2a2a2, (u_int)0x49494949, 659 ( u_t )0x6d6d6d6d, (u_int)0x8b8b8b8b, (u_int)0xd1d1d1d1, (u_int)0x25252525, 660 ( u_t )0x72727272, (u_int)0xf8f8f8f8, (u_int)0xf6f6f6f6, (u_int)0x64646464, 661 ( u_t )0x86868686, (u_int)0x68686868, (u_int)0x98989898, (u_int)0x16161616, 662 ( u_t )0xd4d4d4d4, (u_int)0xa4a4a4a4, (u_int)0x5c5c5c5c, (u_int)0xcccccccc, 663 ( u_t )0x5d5d5d5d, (u_int)0x65656565, (u_int)0xb6b6b6b6, (u_int)0x92929292, 664 ( u_t )0x6c6c6c6c, (u_int)0x70707070, (u_int)0x48484848, (u_int)0x50505050, 665 ( u_t )0xfdfdfdfd, (u_int)0xedededed, (u_int)0xb9b9b9b9, (u_int)0xdadadada, 666 ( u_t )0x5e5e5e5e, (u_int)0x15151515, (u_int)0x46464646, (u_int)0x57575757, 667 ( u_t )0xa7a7a7a7, (u_int)0x8d8d8d8d, (u_int)0x9d9d9d9d, (u_int)0x84848484, 668 ( u_t )0x90909090, (u_int)0xd8d8d8d8, (u_int)0xabababab, (u_int)0x00000000, 669 ( u_t )0x8c8c8c8c, (u_int)0xbcbcbcbc, (u_int)0xd3d3d3d3, (u_int)0x0a0a0a0a, 670 ( u_t )0xf7f7f7f7, (u_int)0xe4e4e4e4, (u_int)0x58585858, (u_int)0x05050505, 671 ( u_t )0xb8b8b8b8, (u_int)0xb3b3b3b3, (u_int)0x45454545, (u_int)0x06060606, 672 ( u_t )0xd0d0d0d0, (u_int)0x2c2c2c2c, (u_int)0x1e1e1e1e, (u_int)0x8f8f8f8f, 673 ( u_t )0xcacacaca, (u_int)0x3f3f3f3f, (u_int)0x0f0f0f0f, (u_int)0x02020202, 674 ( u_t )0xc1c1c1c1, (u_int)0xafafafaf, (u_int)0xbdbdbdbd, (u_int)0x03030303, 675 ( u_t )0x01010101, (u_int)0x13131313, (u_int)0x8a8a8a8a, (u_int)0x6b6b6b6b, 676 ( u_t )0x3a3a3a3a, (u_int)0x91919191, (u_int)0x11111111, (u_int)0x41414141, 677 ( u_t )0x4f4f4f4f, (u_int)0x67676767, (u_int)0xdcdcdcdc, (u_int)0xeaeaeaea, 678 ( u_t )0x97979797, (u_int)0xf2f2f2f2, (u_int)0xcfcfcfcf, (u_int)0xcececece, 679 ( u_t )0xf0f0f0f0, (u_int)0xb4b4b4b4, (u_int)0xe6e6e6e6, (u_int)0x73737373, 680 ( u_t )0x96969696, (u_int)0xacacacac, (u_int)0x74747474, (u_int)0x22222222, 681 ( u_t )0xe7e7e7e7, (u_int)0xadadadad, (u_int)0x35353535, (u_int)0x85858585, 682 ( u_t )0xe2e2e2e2, (u_int)0xf9f9f9f9, (u_int)0x37373737, (u_int)0xe8e8e8e8, 683 ( u_t )0x1c1c1c1c, (u_int)0x75757575, (u_int)0xdfdfdfdf, (u_int)0x6e6e6e6e, 684 ( u_t )0x47474747, (u_int)0xf1f1f1f1, (u_int)0x1a1a1a1a, (u_int)0x71717171, 685 ( u_t )0x1d1d1d1d, (u_int)0x29292929, (u_int)0xc5c5c5c5, (u_int)0x89898989, 686 ( u_t )0x6f6f6f6f, (u_int)0xb7b7b7b7, (u_int)0x62626262, (u_int)0x0e0e0e0e, 687 ( u_t )0xaaaaaaaa, (u_int)0x18181818, (u_int)0xbebebebe, (u_int)0x1b1b1b1b, 688 ( u_t )0xfcfcfcfc, (u_int)0x56565656, (u_int)0x3e3e3e3e, (u_int)0x4b4b4b4b, 689 ( u_t )0xc6c6c6c6, (u_int)0xd2d2d2d2, (u_int)0x79797979, (u_int)0x20202020, 690 ( u_t )0x9a9a9a9a, (u_int)0xdbdbdbdb, (u_int)0xc0c0c0c0, (u_int)0xfefefefe, 691 ( u_t )0x78787878, (u_int)0xcdcdcdcd, (u_int)0x5a5a5a5a, (u_int)0xf4f4f4f4, 692 ( u_t )0x1f1f1f1f, (u_int)0xdddddddd, (u_int)0xa8a8a8a8, (u_int)0x33333333, 693 ( u_t )0x88888888, (u_int)0x07070707, (u_int)0xc7c7c7c7, (u_int)0x31313131, 694 ( u_t )0xb1b1b1b1, (u_int)0x12121212, (u_int)0x10101010, (u_int)0x59595959, 695 ( u_t )0x27272727, (u_int)0x80808080, (u_int)0xecececec, (u_int)0x5f5f5f5f, 696 ( u_t )0x60606060, (u_int)0x51515151, (u_int)0x7f7f7f7f, (u_int)0xa9a9a9a9, 697 ( u_t )0x19191919, (u_int)0xb5b5b5b5, (u_int)0x4a4a4a4a, (u_int)0x0d0d0d0d, 698 ( u_t )0x2d2d2d2d, (u_int)0xe5e5e5e5, (u_int)0x7a7a7a7a, (u_int)0x9f9f9f9f, 699 ( u_t )0x93939393, (u_int)0xc9c9c9c9, (u_int)0x9c9c9c9c, (u_int)0xefefefef, 700 ( u_t )0xa0a0a0a0, (u_int)0xe0e0e0e0, (u_int)0x3b3b3b3b, (u_int)0x4d4d4d4d, 701 ( u_t )0xaeaeaeae, (u_int)0x2a2a2a2a, (u_int)0xf5f5f5f5, (u_int)0xb0b0b0b0, 702 ( u_t )0xc8c8c8c8, (u_int)0xebebebeb, (u_int)0xbbbbbbbb, (u_int)0x3c3c3c3c, 703 ( u_t )0x83838383, (u_int)0x53535353, (u_int)0x99999999, (u_int)0x61616161, 704 ( u_t )0x17171717, (u_int)0x2b2b2b2b, (u_int)0x04040404, (u_int)0x7e7e7e7e, 705 ( u_t )0xbabababa, (u_int)0x77777777, (u_int)0xd6d6d6d6, (u_int)0x26262626, 706 ( u_t )0xe1e1e1e1, (u_int)0x69696969, (u_int)0x14141414, (u_int)0x63636363, 707 ( u_t )0x55555555, (u_int)0x21212121, (u_int)0x0c0c0c0c, (u_int)0x7d7d7d7d, 709 cڡ u32 grc [] = { 715 #SWAP ( x ( `_l (x, 8& 0x00ff00f| `_r (x, 8& 0xff00ff00) ) 717 #ifde _MSC_VER 718 #GETU32 ( p `SWAP (*(( u32 *)))) ) 719 #PUTU32 ( , { *(( u32 *)() `SWAP (()); } ) 721 #GETU32 ( ((( u32 )t)[0] << 24^ ((u32)t)[1] << 16^ ((u32)t)[2] << 8^ ((u32)t)[3])) ) 722 #PUTU32 ( , { ()[0] = ( u8 )((>> 24); ()[1] = (u8)((>> 16); ()[2] = (u8)((>> 8); ()[3] = (u8)(); } ) 736 $__db_rijndlKeySupEnc ( rk , chKey , keyBs ) 737 u32 * rk ; 738 cڡ u8 * chKey ; 739 keyBs ; 741 i = 0; 742 u32 mp ; 744 rk [0] = `GETU32 ( chKey ); 745 rk [1] = `GETU32 ( chKey + 4); 746 rk [2] = `GETU32 ( chKey + 8); 747 rk [3] = `GETU32 ( chKey + 12); 748 i( keyBs == 128) { 750 mp = rk [3]; 751 rk [4] =k[0] ^ 752 ( Te4 [( mp >> 16) & 0xff] & 0xff000000) ^ 753 ( Te4 [( mp >> 8) & 0xff] & 0x00ff0000) ^ 754 ( Te4 [( mp ) & 0xff] & 0x0000ff00) ^ 755 ( Te4 [( mp >> 24) ] & 0x000000ff) ^ 756 rc [ i ]; 757 rk [5] =k[1] ^k[4]; 758 rk [6] =k[2] ^k[5]; 759 rk [7] =k[3] ^k[6]; 760 i(++ i == 10) { 763 rk += 4; 766 rk [4] = `GETU32 ( chKey + 16); 767 rk [5] = `GETU32 ( chKey + 20); 768 i( keyBs == 192) { 770 mp = rk [ 5]; 771 rk [ 6] =k[ 0] ^ 772 ( Te4 [( mp >> 16) & 0xff] & 0xff000000) ^ 773 ( Te4 [( mp >> 8) & 0xff] & 0x00ff0000) ^ 774 ( Te4 [( mp ) & 0xff] & 0x0000ff00) ^ 775 ( Te4 [( mp >> 24) ] & 0x000000ff) ^ 776 rc [ i ]; 777 rk [ 7] =k[ 1] ^k[ 6]; 778 rk [ 8] =k[ 2] ^k[ 7]; 779 rk [ 9] =k[ 3] ^k[ 8]; 780 i(++ i == 8) { 783 rk [10] =k[ 4] ^k[ 9]; 784 rk [11] =k[ 5] ^k[10]; 785 rk += 6; 788 rk [6] = `GETU32 ( chKey + 24); 789 rk [7] = `GETU32 ( chKey + 28); 790 i( keyBs == 256) { 792 mp = rk [ 7]; 793 rk [ 8] =k[ 0] ^ 794 ( Te4 [( mp >> 16) & 0xff] & 0xff000000) ^ 795 ( Te4 [( mp >> 8) & 0xff] & 0x00ff0000) ^ 796 ( Te4 [( mp ) & 0xff] & 0x0000ff00) ^ 797 ( Te4 [( mp >> 24) ] & 0x000000ff) ^ 798 rc [ i ]; 799 rk [ 9] =k[ 1] ^k[ 8]; 800 rk [10] =k[ 2] ^k[ 9]; 801 rk [11] =k[ 3] ^k[10]; 802 i(++ i == 7) { 805 mp = rk [11]; 806 rk [12] =k[ 4] ^ 807 ( Te4 [( mp >> 24) ] & 0xff000000) ^ 808 ( Te4 [( mp >> 16) & 0xff] & 0x00ff0000) ^ 809 ( Te4 [( mp >> 8) & 0xff] & 0x0000ff00) ^ 810 ( Te4 [( mp ) & 0xff] & 0x000000ff); 811 rk [13] =k[ 5] ^k[12]; 812 rk [14] =k[ 6] ^k[13]; 813 rk [15] =k[ 7] ^k[14]; 815 rk += 8; 819 } } 832 $__db_rijndlKeySupDec ( rk , chKey , keyBs ) 833 u32 * rk ; 834 cڡ u8 * chKey ; 835 keyBs ; 837 Nr , i , j ; 838 u32 mp ; 841 Nr = `__db_rijndlKeySupEnc ( rk , chKey , keyBs ); 843 i = 0, j = 4* Nr ; i < j; i += 4, j -= 4) { 844 mp = rk [ i ];k[] =k[ j ];k[j ] =emp; 845 mp = rk [ i + 1];k[+ 1] =k[ j + 1];k[j + 1] =emp; 846 mp = rk [ i + 2];k[+ 2] =k[ j + 2];k[j + 2] =emp; 847 mp = rk [ i + 3];k[+ 3] =k[ j + 3];k[j + 3] =emp; 850 i = 1; i < Nr ; i++) { 851 rk += 4; 852 rk [0] = 853 Td0 [ Te4 [( rk [0] >> 24) ] & 0xff] ^ 854 Td1 [ Te4 [( rk [0] >> 16) & 0xff] & 0xff] ^ 855 Td2 [ Te4 [( rk [0] >> 8) & 0xff] & 0xff] ^ 856 Td3 [ Te4 [( rk [0] ) & 0xff] & 0xff]; 857 rk [1] = 858 Td0 [ Te4 [( rk [1] >> 24) ] & 0xff] ^ 859 Td1 [ Te4 [( rk [1] >> 16) & 0xff] & 0xff] ^ 860 Td2 [ Te4 [( rk [1] >> 8) & 0xff] & 0xff] ^ 861 Td3 [ Te4 [( rk [1] ) & 0xff] & 0xff]; 862 rk [2] = 863 Td0 [ Te4 [( rk [2] >> 24) ] & 0xff] ^ 864 Td1 [ Te4 [( rk [2] >> 16) & 0xff] & 0xff] ^ 865 Td2 [ Te4 [( rk [2] >> 8) & 0xff] & 0xff] ^ 866 Td3 [ Te4 [( rk [2] ) & 0xff] & 0xff]; 867 rk [3] = 868 Td0 [ Te4 [( rk [3] >> 24) ] & 0xff] ^ 869 Td1 [ Te4 [( rk [3] >> 16) & 0xff] & 0xff] ^ 870 Td2 [ Te4 [( rk [3] >> 8) & 0xff] & 0xff] ^ 871 Td3 [ Te4 [( rk [3] ) & 0xff] & 0xff]; 873 Nr ; 874 } } 882 $__db_rijndlEny ( rk , Nr , , ) 883 u32 * rk ; 884 Nr ; 885 cڡ u8 * ; 886 u8 * ; 888 u32 s0 , s1 , s2 , s3 , t0 , t1 , t2 , t3 ; 889 #ide FULL_UNROLL 890 r ; 897 s0 = `GETU32 ( ) ^ rk [0]; 898 s1 = `GETU32 ( + 4^ rk [1]; 899 s2 = `GETU32 ( + 8^ rk [2]; 900 s3 = `GETU32 ( + 12^ rk [3]; 901 #ifde FULL_UNROLL 903 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [ 4]; 904 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [ 5]; 905 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [ 6]; 906 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [ 7]; 908 s0 = Te0 [ t0 >> 24] ^ Te1 [( t1 >> 16& 0xff] ^ Te2 [( t2 >> 8& 0xff] ^ Te3 [ t3 & 0xff] ^ rk [ 8]; 909 s1 = Te0 [ t1 >> 24] ^ Te1 [( t2 >> 16& 0xff] ^ Te2 [( t3 >> 8& 0xff] ^ Te3 [ t0 & 0xff] ^ rk [ 9]; 910 s2 = Te0 [ t2 >> 24] ^ Te1 [( t3 >> 16& 0xff] ^ Te2 [( t0 >> 8& 0xff] ^ Te3 [ t1 & 0xff] ^ rk [10]; 911 s3 = Te0 [ t3 >> 24] ^ Te1 [( t0 >> 16& 0xff] ^ Te2 [( t1 >> 8& 0xff] ^ Te3 [ t2 & 0xff] ^ rk [11]; 913 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [12]; 914 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [13]; 915 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [14]; 916 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [15]; 918 s0 = Te0 [ t0 >> 24] ^ Te1 [( t1 >> 16& 0xff] ^ Te2 [( t2 >> 8& 0xff] ^ Te3 [ t3 & 0xff] ^ rk [16]; 919 s1 = Te0 [ t1 >> 24] ^ Te1 [( t2 >> 16& 0xff] ^ Te2 [( t3 >> 8& 0xff] ^ Te3 [ t0 & 0xff] ^ rk [17]; 920 s2 = Te0 [ t2 >> 24] ^ Te1 [( t3 >> 16& 0xff] ^ Te2 [( t0 >> 8& 0xff] ^ Te3 [ t1 & 0xff] ^ rk [18]; 921 s3 = Te0 [ t3 >> 24] ^ Te1 [( t0 >> 16& 0xff] ^ Te2 [( t1 >> 8& 0xff] ^ Te3 [ t2 & 0xff] ^ rk [19]; 923 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [20]; 924 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [21]; 925 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [22]; 926 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [23]; 928 s0 = Te0 [ t0 >> 24] ^ Te1 [( t1 >> 16& 0xff] ^ Te2 [( t2 >> 8& 0xff] ^ Te3 [ t3 & 0xff] ^ rk [24]; 929 s1 = Te0 [ t1 >> 24] ^ Te1 [( t2 >> 16& 0xff] ^ Te2 [( t3 >> 8& 0xff] ^ Te3 [ t0 & 0xff] ^ rk [25]; 930 s2 = Te0 [ t2 >> 24] ^ Te1 [( t3 >> 16& 0xff] ^ Te2 [( t0 >> 8& 0xff] ^ Te3 [ t1 & 0xff] ^ rk [26]; 931 s3 = Te0 [ t3 >> 24] ^ Te1 [( t0 >> 16& 0xff] ^ Te2 [( t1 >> 8& 0xff] ^ Te3 [ t2 & 0xff] ^ rk [27]; 933 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [28]; 934 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [29]; 935 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [30]; 936 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [31]; 938 s0 = Te0 [ t0 >> 24] ^ Te1 [( t1 >> 16& 0xff] ^ Te2 [( t2 >> 8& 0xff] ^ Te3 [ t3 & 0xff] ^ rk [32]; 939 s1 = Te0 [ t1 >> 24] ^ Te1 [( t2 >> 16& 0xff] ^ Te2 [( t3 >> 8& 0xff] ^ Te3 [ t0 & 0xff] ^ rk [33]; 940 s2 = Te0 [ t2 >> 24] ^ Te1 [( t3 >> 16& 0xff] ^ Te2 [( t0 >> 8& 0xff] ^ Te3 [ t1 & 0xff] ^ rk [34]; 941 s3 = Te0 [ t3 >> 24] ^ Te1 [( t0 >> 16& 0xff] ^ Te2 [( t1 >> 8& 0xff] ^ Te3 [ t2 & 0xff] ^ rk [35]; 943 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [36]; 944 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [37]; 945 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [38]; 946 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [39]; 947 i( Nr > 10) { 949 s0 = Te0 [ t0 >> 24] ^ Te1 [( t1 >> 16& 0xff] ^ Te2 [( t2 >> 8& 0xff] ^ Te3 [ t3 & 0xff] ^ rk [40]; 950 s1 = Te0 [ t1 >> 24] ^ Te1 [( t2 >> 16& 0xff] ^ Te2 [( t3 >> 8& 0xff] ^ Te3 [ t0 & 0xff] ^ rk [41]; 951 s2 = Te0 [ t2 >> 24] ^ Te1 [( t3 >> 16& 0xff] ^ Te2 [( t0 >> 8& 0xff] ^ Te3 [ t1 & 0xff] ^ rk [42]; 952 s3 = Te0 [ t3 >> 24] ^ Te1 [( t0 >> 16& 0xff] ^ Te2 [( t1 >> 8& 0xff] ^ Te3 [ t2 & 0xff] ^ rk [43]; 954 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [44]; 955 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [45]; 956 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [46]; 957 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [47]; 958 i( Nr > 12) { 960 s0 = Te0 [ t0 >> 24] ^ Te1 [( t1 >> 16& 0xff] ^ Te2 [( t2 >> 8& 0xff] ^ Te3 [ t3 & 0xff] ^ rk [48]; 961 s1 = Te0 [ t1 >> 24] ^ Te1 [( t2 >> 16& 0xff] ^ Te2 [( t3 >> 8& 0xff] ^ Te3 [ t0 & 0xff] ^ rk [49]; 962 s2 = Te0 [ t2 >> 24] ^ Te1 [( t3 >> 16& 0xff] ^ Te2 [( t0 >> 8& 0xff] ^ Te3 [ t1 & 0xff] ^ rk [50]; 963 s3 = Te0 [ t3 >> 24] ^ Te1 [( t0 >> 16& 0xff] ^ Te2 [( t1 >> 8& 0xff] ^ Te3 [ t2 & 0xff] ^ rk [51]; 965 t0 = Te0 [ s0 >> 24] ^ Te1 [( s1 >> 16& 0xff] ^ Te2 [( s2 >> 8& 0xff] ^ Te3 [ s3 & 0xff] ^ rk [52]; 966 t1 = Te0 [ s1 >> 24] ^ Te1 [( s2 >> 16& 0xff] ^ Te2 [( s3 >> 8& 0xff] ^ Te3 [ s0 & 0xff] ^ rk [53]; 967 t2 = Te0 [ s2 >> 24] ^ Te1 [( s3 >> 16& 0xff] ^ Te2 [( s0 >> 8& 0xff] ^ Te3 [ s1 & 0xff] ^ rk [54]; 968 t3 = Te0 [ s3 >> 24] ^ Te1 [( s0 >> 16& 0xff] ^ Te2 [( s1 >> 8& 0xff] ^ Te3 [ s2 & 0xff] ^ rk [55]; 971 rk + Nr << 2; 976 r = Nr >> 1; 978 t0 = 979 Te0 [( s0 >> 24) ] ^ 980 Te1 [( s1 >> 16) & 0xff] ^ 981 Te2 [( s2 >> 8) & 0xff] ^ 982 Te3 [( s3 ) & 0xff] ^ 983 rk [4]; 984 t1 = 985 Te0 [( s1 >> 24) ] ^ 986 Te1 [( s2 >> 16) & 0xff] ^ 987 Te2 [( s3 >> 8) & 0xff] ^ 988 Te3 [( s0 ) & 0xff] ^ 989 rk [5]; 990 t2 = 991 Te0 [( s2 >> 24) ] ^ 992 Te1 [( s3 >> 16) & 0xff] ^ 993 Te2 [( s0 >> 8) & 0xff] ^ 994 Te3 [( s1 ) & 0xff] ^ 995 rk [6]; 996 t3 = 997 Te0 [( s3 >> 24) ] ^ 998 Te1 [( s0 >> 16) & 0xff] ^ 999 Te2 [( s1 >> 8) & 0xff] ^ 1000 Te3 [( s2 ) & 0xff] ^ 1001 rk [7]; 1003 rk += 8; 1004 i(-- r == 0) { 1008 s0 = 1009 Te0 [( t0 >> 24) ] ^ 1010 Te1 [( t1 >> 16) & 0xff] ^ 1011 Te2 [( t2 >> 8) & 0xff] ^ 1012 Te3 [( t3 ) & 0xff] ^ 1013 rk [0]; 1014 s1 = 1015 Te0 [( t1 >> 24) ] ^ 1016 Te1 [( t2 >> 16) & 0xff] ^ 1017 Te2 [( t3 >> 8) & 0xff] ^ 1018 Te3 [( t0 ) & 0xff] ^ 1019 rk [1]; 1020 s2 = 1021 Te0 [( t2 >> 24) ] ^ 1022 Te1 [( t3 >> 16) & 0xff] ^ 1023 Te2 [( t0 >> 8) & 0xff] ^ 1024 Te3 [( t1 ) & 0xff] ^ 1025 rk [2]; 1026 s3 = 1027 Te0 [( t3 >> 24) ] ^ 1028 Te1 [( t0 >> 16) & 0xff] ^ 1029 Te2 [( t1 >> 8) & 0xff] ^ 1030 Te3 [( t2 ) & 0xff] ^ 1031 rk [3]; 1038 s0 = 1039 ( Te4 [( t0 >> 24) ] & 0xff000000) ^ 1040 ( Te4 [( t1 >> 16) & 0xff] & 0x00ff0000) ^ 1041 ( Te4 [( t2 >> 8) & 0xff] & 0x0000ff00) ^ 1042 ( Te4 [( t3 ) & 0xff] & 0x000000ff) ^ 1043 rk [0]; 1044 `PUTU32 ( , s0 ); 1045 s1 = 1046 ( Te4 [( t1 >> 24) ] & 0xff000000) ^ 1047 ( Te4 [( t2 >> 16) & 0xff] & 0x00ff0000) ^ 1048 ( Te4 [( t3 >> 8) & 0xff] & 0x0000ff00) ^ 1049 ( Te4 [( t0 ) & 0xff] & 0x000000ff) ^ 1050 rk [1]; 1051 `PUTU32 ( + 4, s1 ); 1052 s2 = 1053 ( Te4 [( t2 >> 24) ] & 0xff000000) ^ 1054 ( Te4 [( t3 >> 16) & 0xff] & 0x00ff0000) ^ 1055 ( Te4 [( t0 >> 8) & 0xff] & 0x0000ff00) ^ 1056 ( Te4 [( t1 ) & 0xff] & 0x000000ff) ^ 1057 rk [2]; 1058 `PUTU32 ( + 8, s2 ); 1059 s3 = 1060 ( Te4 [( t3 >> 24) ] & 0xff000000) ^ 1061 ( Te4 [( t0 >> 16) & 0xff] & 0x00ff0000) ^ 1062 ( Te4 [( t1 >> 8) & 0xff] & 0x0000ff00) ^ 1063 ( Te4 [( t2 ) & 0xff] & 0x000000ff) ^ 1064 rk [3]; 1065 `PUTU32 ( + 12, s3 ); 1066 } } 1074 $__db_rijndlDey ( rk , Nr , , ) 1075 u32 * rk ; 1076 Nr ; 1077 cڡ u8 * ; 1078 u8 * ; 1080 u32 s0 , s1 , s2 , s3 , t0 , t1 , t2 , t3 ; 1081 #ide FULL_UNROLL 1082 r ; 1089 s0 = `GETU32 ( ) ^ rk [0]; 1090 s1 = `GETU32 ( + 4^ rk [1]; 1091 s2 = `GETU32 ( + 8^ rk [2]; 1092 s3 = `GETU32 ( + 12^ rk [3]; 1093 #ifde FULL_UNROLL 1095 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [ 4]; 1096 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [ 5]; 1097 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [ 6]; 1098 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [ 7]; 1100 s0 = Td0 [ t0 >> 24] ^ Td1 [( t3 >> 16& 0xff] ^ Td2 [( t2 >> 8& 0xff] ^ Td3 [ t1 & 0xff] ^ rk [ 8]; 1101 s1 = Td0 [ t1 >> 24] ^ Td1 [( t0 >> 16& 0xff] ^ Td2 [( t3 >> 8& 0xff] ^ Td3 [ t2 & 0xff] ^ rk [ 9]; 1102 s2 = Td0 [ t2 >> 24] ^ Td1 [( t1 >> 16& 0xff] ^ Td2 [( t0 >> 8& 0xff] ^ Td3 [ t3 & 0xff] ^ rk [10]; 1103 s3 = Td0 [ t3 >> 24] ^ Td1 [( t2 >> 16& 0xff] ^ Td2 [( t1 >> 8& 0xff] ^ Td3 [ t0 & 0xff] ^ rk [11]; 1105 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [12]; 1106 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [13]; 1107 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [14]; 1108 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [15]; 1110 s0 = Td0 [ t0 >> 24] ^ Td1 [( t3 >> 16& 0xff] ^ Td2 [( t2 >> 8& 0xff] ^ Td3 [ t1 & 0xff] ^ rk [16]; 1111 s1 = Td0 [ t1 >> 24] ^ Td1 [( t0 >> 16& 0xff] ^ Td2 [( t3 >> 8& 0xff] ^ Td3 [ t2 & 0xff] ^ rk [17]; 1112 s2 = Td0 [ t2 >> 24] ^ Td1 [( t1 >> 16& 0xff] ^ Td2 [( t0 >> 8& 0xff] ^ Td3 [ t3 & 0xff] ^ rk [18]; 1113 s3 = Td0 [ t3 >> 24] ^ Td1 [( t2 >> 16& 0xff] ^ Td2 [( t1 >> 8& 0xff] ^ Td3 [ t0 & 0xff] ^ rk [19]; 1115 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [20]; 1116 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [21]; 1117 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [22]; 1118 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [23]; 1120 s0 = Td0 [ t0 >> 24] ^ Td1 [( t3 >> 16& 0xff] ^ Td2 [( t2 >> 8& 0xff] ^ Td3 [ t1 & 0xff] ^ rk [24]; 1121 s1 = Td0 [ t1 >> 24] ^ Td1 [( t0 >> 16& 0xff] ^ Td2 [( t3 >> 8& 0xff] ^ Td3 [ t2 & 0xff] ^ rk [25]; 1122 s2 = Td0 [ t2 >> 24] ^ Td1 [( t1 >> 16& 0xff] ^ Td2 [( t0 >> 8& 0xff] ^ Td3 [ t3 & 0xff] ^ rk [26]; 1123 s3 = Td0 [ t3 >> 24] ^ Td1 [( t2 >> 16& 0xff] ^ Td2 [( t1 >> 8& 0xff] ^ Td3 [ t0 & 0xff] ^ rk [27]; 1125 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [28]; 1126 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [29]; 1127 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [30]; 1128 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [31]; 1130 s0 = Td0 [ t0 >> 24] ^ Td1 [( t3 >> 16& 0xff] ^ Td2 [( t2 >> 8& 0xff] ^ Td3 [ t1 & 0xff] ^ rk [32]; 1131 s1 = Td0 [ t1 >> 24] ^ Td1 [( t0 >> 16& 0xff] ^ Td2 [( t3 >> 8& 0xff] ^ Td3 [ t2 & 0xff] ^ rk [33]; 1132 s2 = Td0 [ t2 >> 24] ^ Td1 [( t1 >> 16& 0xff] ^ Td2 [( t0 >> 8& 0xff] ^ Td3 [ t3 & 0xff] ^ rk [34]; 1133 s3 = Td0 [ t3 >> 24] ^ Td1 [( t2 >> 16& 0xff] ^ Td2 [( t1 >> 8& 0xff] ^ Td3 [ t0 & 0xff] ^ rk [35]; 1135 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [36]; 1136 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [37]; 1137 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [38]; 1138 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [39]; 1139 i( Nr > 10) { 1141 s0 = Td0 [ t0 >> 24] ^ Td1 [( t3 >> 16& 0xff] ^ Td2 [( t2 >> 8& 0xff] ^ Td3 [ t1 & 0xff] ^ rk [40]; 1142 s1 = Td0 [ t1 >> 24] ^ Td1 [( t0 >> 16& 0xff] ^ Td2 [( t3 >> 8& 0xff] ^ Td3 [ t2 & 0xff] ^ rk [41]; 1143 s2 = Td0 [ t2 >> 24] ^ Td1 [( t1 >> 16& 0xff] ^ Td2 [( t0 >> 8& 0xff] ^ Td3 [ t3 & 0xff] ^ rk [42]; 1144 s3 = Td0 [ t3 >> 24] ^ Td1 [( t2 >> 16& 0xff] ^ Td2 [( t1 >> 8& 0xff] ^ Td3 [ t0 & 0xff] ^ rk [43]; 1146 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [44]; 1147 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [45]; 1148 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [46]; 1149 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [47]; 1150 i( Nr > 12) { 1152 s0 = Td0 [ t0 >> 24] ^ Td1 [( t3 >> 16& 0xff] ^ Td2 [( t2 >> 8& 0xff] ^ Td3 [ t1 & 0xff] ^ rk [48]; 1153 s1 = Td0 [ t1 >> 24] ^ Td1 [( t0 >> 16& 0xff] ^ Td2 [( t3 >> 8& 0xff] ^ Td3 [ t2 & 0xff] ^ rk [49]; 1154 s2 = Td0 [ t2 >> 24] ^ Td1 [( t1 >> 16& 0xff] ^ Td2 [( t0 >> 8& 0xff] ^ Td3 [ t3 & 0xff] ^ rk [50]; 1155 s3 = Td0 [ t3 >> 24] ^ Td1 [( t2 >> 16& 0xff] ^ Td2 [( t1 >> 8& 0xff] ^ Td3 [ t0 & 0xff] ^ rk [51]; 1157 t0 = Td0 [ s0 >> 24] ^ Td1 [( s3 >> 16& 0xff] ^ Td2 [( s2 >> 8& 0xff] ^ Td3 [ s1 & 0xff] ^ rk [52]; 1158 t1 = Td0 [ s1 >> 24] ^ Td1 [( s0 >> 16& 0xff] ^ Td2 [( s3 >> 8& 0xff] ^ Td3 [ s2 & 0xff] ^ rk [53]; 1159 t2 = Td0 [ s2 >> 24] ^ Td1 [( s1 >> 16& 0xff] ^ Td2 [( s0 >> 8& 0xff] ^ Td3 [ s3 & 0xff] ^ rk [54]; 1160 t3 = Td0 [ s3 >> 24] ^ Td1 [( s2 >> 16& 0xff] ^ Td2 [( s1 >> 8& 0xff] ^ Td3 [ s0 & 0xff] ^ rk [55]; 1163 rk + Nr << 2; 1168 r = Nr >> 1; 1170 t0 = 1171 Td0 [( s0 >> 24) ] ^ 1172 Td1 [( s3 >> 16) & 0xff] ^ 1173 Td2 [( s2 >> 8) & 0xff] ^ 1174 Td3 [( s1 ) & 0xff] ^ 1175 rk [4]; 1176 t1 = 1177 Td0 [( s1 >> 24) ] ^ 1178 Td1 [( s0 >> 16) & 0xff] ^ 1179 Td2 [( s3 >> 8) & 0xff] ^ 1180 Td3 [( s2 ) & 0xff] ^ 1181 rk [5]; 1182 t2 = 1183 Td0 [( s2 >> 24) ] ^ 1184 Td1 [( s1 >> 16) & 0xff] ^ 1185 Td2 [( s0 >> 8) & 0xff] ^ 1186 Td3 [( s3 ) & 0xff] ^ 1187 rk [6]; 1188 t3 = 1189 Td0 [( s3 >> 24) ] ^ 1190 Td1 [( s2 >> 16) & 0xff] ^ 1191 Td2 [( s1 >> 8) & 0xff] ^ 1192 Td3 [( s0 ) & 0xff] ^ 1193 rk [7]; 1195 rk += 8; 1196 i(-- r == 0) { 1200 s0 = 1201 Td0 [( t0 >> 24) ] ^ 1202 Td1 [( t3 >> 16) & 0xff] ^ 1203 Td2 [( t2 >> 8) & 0xff] ^ 1204 Td3 [( t1 ) & 0xff] ^ 1205 rk [0]; 1206 s1 = 1207 Td0 [( t1 >> 24) ] ^ 1208 Td1 [( t0 >> 16) & 0xff] ^ 1209 Td2 [( t3 >> 8) & 0xff] ^ 1210 Td3 [( t2 ) & 0xff] ^ 1211 rk [1]; 1212 s2 = 1213 Td0 [( t2 >> 24) ] ^ 1214 Td1 [( t1 >> 16) & 0xff] ^ 1215 Td2 [( t0 >> 8) & 0xff] ^ 1216 Td3 [( t3 ) & 0xff] ^ 1217 rk [2]; 1218 s3 = 1219 Td0 [( t3 >> 24) ] ^ 1220 Td1 [( t2 >> 16) & 0xff] ^ 1221 Td2 [( t1 >> 8) & 0xff] ^ 1222 Td3 [( t0 ) & 0xff] ^ 1223 rk [3]; 1230 s0 = 1231 ( Td4 [( t0 >> 24) ] & 0xff000000) ^ 1232 ( Td4 [( t3 >> 16) & 0xff] & 0x00ff0000) ^ 1233 ( Td4 [( t2 >> 8) & 0xff] & 0x0000ff00) ^ 1234 ( Td4 [( t1 ) & 0xff] & 0x000000ff) ^ 1235 rk [0]; 1236 `PUTU32 ( , s0 ); 1237 s1 = 1238 ( Td4 [( t1 >> 24) ] & 0xff000000) ^ 1239 ( Td4 [( t0 >> 16) & 0xff] & 0x00ff0000) ^ 1240 ( Td4 [( t3 >> 8) & 0xff] & 0x0000ff00) ^ 1241 ( Td4 [( t2 ) & 0xff] & 0x000000ff) ^ 1242 rk [1]; 1243 `PUTU32 ( + 4, s1 ); 1244 s2 = 1245 ( Td4 [( t2 >> 24) ] & 0xff000000) ^ 1246 ( Td4 [( t1 >> 16) & 0xff] & 0x00ff0000) ^ 1247 ( Td4 [( t0 >> 8) & 0xff] & 0x0000ff00) ^ 1248 ( Td4 [( t3 ) & 0xff] & 0x000000ff) ^ 1249 rk [2]; 1250 `PUTU32 ( + 8, s2 ); 1251 s3 = 1252 ( Td4 [( t3 >> 24) ] & 0xff000000) ^ 1253 ( Td4 [( t2 >> 16) & 0xff] & 0x00ff0000) ^ 1254 ( Td4 [( t1 >> 8) & 0xff] & 0x0000ff00) ^ 1255 ( Td4 [( t0 ) & 0xff] & 0x000000ff) ^ 1256 rk [3]; 1257 `PUTU32 ( + 12, s3 ); 1258 } } 1260 #ifde INTERMEDIATE_VALUE_KAT 1268 $__db_rijndlEnyRound ( rk , Nr , , ) 1269 cڡ u32 * rk ; 1270 Nr ; 1271 u8 * block ; 1272 rounds ; 1274 r ; 1275 u32 s0 , s1 , s2 , s3 , t0 , t1 , t2 , t3 ; 1281 s0 = `GETU32 ( block ) ^ rk [0]; 1282 s1 = `GETU32 ( block + 4^ rk [1]; 1283 s2 = `GETU32 ( block + 8^ rk [2]; 1284 s3 = `GETU32 ( block + 12^ rk [3]; 1285 rk += 4; 1290 r = ( rounds < Nr ?ounds : Nr - 1); > 0;--) { 1291 t0 = 1292 Te0 [( s0 >> 24) ] ^ 1293 Te1 [( s1 >> 16) & 0xff] ^ 1294 Te2 [( s2 >> 8) & 0xff] ^ 1295 Te3 [( s3 ) & 0xff] ^ 1296 rk [0]; 1297 t1 = 1298 Te0 [( s1 >> 24) ] ^ 1299 Te1 [( s2 >> 16) & 0xff] ^ 1300 Te2 [( s3 >> 8) & 0xff] ^ 1301 Te3 [( s0 ) & 0xff] ^ 1302 rk [1]; 1303 t2 = 1304 Te0 [( s2 >> 24) ] ^ 1305 Te1 [( s3 >> 16) & 0xff] ^ 1306 Te2 [( s0 >> 8) & 0xff] ^ 1307 Te3 [( s1 ) & 0xff] ^ 1308 rk [2]; 1309 t3 = 1310 Te0 [( s3 >> 24) ] ^ 1311 Te1 [( s0 >> 16) & 0xff] ^ 1312 Te2 [( s1 >> 8) & 0xff] ^ 1313 Te3 [( s2 ) & 0xff] ^ 1314 rk [3]; 1316 s0 = t0 ; 1317 s1 = t1 ; 1318 s2 = t2 ; 1319 s3 = t3 ; 1320 rk += 4; 1328 i( rounds = Nr ) { 1329 t0 = 1330 ( Te4 [( s0 >> 24) ] & 0xff000000) ^ 1331 ( Te4 [( s1 >> 16) & 0xff] & 0x00ff0000) ^ 1332 ( Te4 [( s2 >> 8) & 0xff] & 0x0000ff00) ^ 1333 ( Te4 [( s3 ) & 0xff] & 0x000000ff) ^ 1334 rk [0]; 1335 t1 = 1336 ( Te4 [( s1 >> 24) ] & 0xff000000) ^ 1337 ( Te4 [( s2 >> 16) & 0xff] & 0x00ff0000) ^ 1338 ( Te4 [( s3 >> 8) & 0xff] & 0x0000ff00) ^ 1339 ( Te4 [( s0 ) & 0xff] & 0x000000ff) ^ 1340 rk [1]; 1341 t2 = 1342 ( Te4 [( s2 >> 24) ] & 0xff000000) ^ 1343 ( Te4 [( s3 >> 16) & 0xff] & 0x00ff0000) ^ 1344 ( Te4 [( s0 >> 8) & 0xff] & 0x0000ff00) ^ 1345 ( Te4 [( s1 ) & 0xff] & 0x000000ff) ^ 1346 rk [2]; 1347 t3 = 1348 ( Te4 [( s3 >> 24) ] & 0xff000000) ^ 1349 ( Te4 [( s0 >> 16) & 0xff] & 0x00ff0000) ^ 1350 ( Te4 [( s1 >> 8) & 0xff] & 0x0000ff00) ^ 1351 ( Te4 [( s2 ) & 0xff] & 0x000000ff) ^ 1352 rk [3]; 1354 s0 = t0 ; 1355 s1 = t1 ; 1356 s2 = t2 ; 1357 s3 = t3 ; 1360 `PUTU32 ( block , s0 ); 1361 `PUTU32 ( block + 4, s1 ); 1362 `PUTU32 ( block + 8, s2 ); 1363 `PUTU32 ( block + 12, s3 ); 1364 } } 1372 $__db_rijndlDeyRound ( rk , Nr , , ) 1373 cڡ u32 * rk ; 1374 Nr ; 1375 u8 * block ; 1376 rounds ; 1378 r ; 1379 u32 s0 , s1 , s2 , s3 , t0 , t1 , t2 , t3 ; 1385 s0 = `GETU32 ( block ) ^ rk [0]; 1386 s1 = `GETU32 ( block + 4^ rk [1]; 1387 s2 = `GETU32 ( block + 8^ rk [2]; 1388 s3 = `GETU32 ( block + 12^ rk [3]; 1389 rk += 4; 1394 r = ( rounds < Nr ?ounds : Nr) - 1; > 0;--) { 1395 t0 = 1396 Td0 [( s0 >> 24) ] ^ 1397 Td1 [( s3 >> 16) & 0xff] ^ 1398 Td2 [( s2 >> 8) & 0xff] ^ 1399 Td3 [( s1 ) & 0xff] ^ 1400 rk [0]; 1401 t1 = 1402 Td0 [( s1 >> 24) ] ^ 1403 Td1 [( s0 >> 16) & 0xff] ^ 1404 Td2 [( s3 >> 8) & 0xff] ^ 1405 Td3 [( s2 ) & 0xff] ^ 1406 rk [1]; 1407 t2 = 1408 Td0 [( s2 >> 24) ] ^ 1409 Td1 [( s1 >> 16) & 0xff] ^ 1410 Td2 [( s0 >> 8) & 0xff] ^ 1411 Td3 [( s3 ) & 0xff] ^ 1412 rk [2]; 1413 t3 = 1414 Td0 [( s3 >> 24) ] ^ 1415 Td1 [( s2 >> 16) & 0xff] ^ 1416 Td2 [( s1 >> 8) & 0xff] ^ 1417 Td3 [( s0 ) & 0xff] ^ 1418 rk [3]; 1420 s0 = t0 ; 1421 s1 = t1 ; 1422 s2 = t2 ; 1423 s3 = t3 ; 1424 rk += 4; 1432 t0 = 1433 ( Td4 [( s0 >> 24) ] & 0xff000000) ^ 1434 ( Td4 [( s3 >> 16) & 0xff] & 0x00ff0000) ^ 1435 ( Td4 [( s2 >> 8) & 0xff] & 0x0000ff00) ^ 1436 ( Td4 [( s1 ) & 0xff] & 0x000000ff); 1437 t1 = 1438 ( Td4 [( s1 >> 24) ] & 0xff000000) ^ 1439 ( Td4 [( s0 >> 16) & 0xff] & 0x00ff0000) ^ 1440 ( Td4 [( s3 >> 8) & 0xff] & 0x0000ff00) ^ 1441 ( Td4 [( s2 ) & 0xff] & 0x000000ff); 1442 t2 = 1443 ( Td4 [( s2 >> 24) ] & 0xff000000) ^ 1444 ( Td4 [( s1 >> 16) & 0xff] & 0x00ff0000) ^ 1445 ( Td4 [( s0 >> 8) & 0xff] & 0x0000ff00) ^ 1446 ( Td4 [( s3 ) & 0xff] & 0x000000ff); 1447 t3 = 1448 ( Td4 [( s3 >> 24) ] & 0xff000000) ^ 1449 ( Td4 [( s2 >> 16) & 0xff] & 0x00ff0000) ^ 1450 ( Td4 [( s1 >> 8) & 0xff] & 0x0000ff00) ^ 1451 ( Td4 [( s0 ) & 0xff] & 0x000000ff); 1453 i( rounds = Nr ) { 1454 t0 ^ rk [0]; 1455 t1 ^ rk [1]; 1456 t2 ^ rk [2]; 1457 t3 ^ rk [3]; 1460 `PUTU32 ( block , t0 ); 1461 `PUTU32 ( block + 4, t1 ); 1462 `PUTU32 ( block + 8, t2 ); 1463 `PUTU32 ( block + 12, t3 ); 1464 } } @../crypto/rijndael/rijndael-api-fst.c 37 ~"db_cfig.h " 39 ~"db_t.h " 40 ~"dbc/yo.h " 42 ~"yo/rijndl/rijndl-g-f.h " 43 ~"yo/rijndl/rijndl-i-f.h " 51 $__db_makeKey ( key , dei , keyL , keyMl ) 52 keyIn * key ; 53 dei ; 54 keyL ; 55 * keyMl ; 57 u8 chKey [ MAXKB ]; 59 i( key = NULL ) { 60 BAD_KEY_INSTANCE ; 63 i(( dei = DIR_ENCRYPT || (dei = DIR_DECRYPT )) { 64 key -> dei = direction; 66 BAD_KEY_DIR ; 69 i(( keyL == 128) || (keyLen == 192) || (keyLen == 256)) { 70 key -> keyL = keyLen; 72 BAD_KEY_MAT ; 75 i( keyMl ! NULL ) { 76 `memy ( chKey , keyMl , key -> keyL /8); 79 i( dei = DIR_ENCRYPT ) { 80 key -> Nr = `__db_rijndlKeySupEnc (key-> rk , chKey , keyL ); 82 key -> Nr = `__db_rijndlKeySupDec (key-> rk , chKey , keyL ); 84 `__db_rijndlKeySupEnc ( key -> ek , chKey , keyL ); 85 TRUE ; 86 } } 94 $__db_chIn ( ch , mode , IV ) 95 chIn * ch ; 96 mode ; 97 * IV ; 99 i(( mode = MODE_ECB || (mod= MODE_CBC || (mod= MODE_CFB1 )) { 100 ch -> mode = mode; 102 BAD_CIPHER_MODE ; 104 i( IV ! NULL ) { 105 `memy ( ch -> IV , IV, MAX_IV_SIZE ); 107 TRUE ; 108 } } 117 $__db_blockEny ( ch , key , put , putL , outBufr ) 118 chIn * ch ; 119 keyIn * key ; 120 u_t8_t * put ; 121 size_t putL ; 122 u_t8_t * outBufr ; 124 i , k , t , numBlocks ; 125 u8 block [16], * iv ; 126 u32 tmpiv [4]; 128 i( ch = NULL || 129 key = NULL || 130 key -> dei = DIR_DECRYPT ) { 131 BAD_CIPHER_STATE ; 133 i( put = NULL || putL <= 0) { 137 numBlocks = ()( putL /128); 139 ch -> mode ) { 140 MODE_ECB : 141 i = numBlocks ; i > 0; i--) { 142 `__db_rijndlEny ( key -> rk , key-> Nr , put , outBufr ); 143 put += 16; 144 outBufr += 16; 148 MODE_CBC : 149 iv = ch -> IV ; 150 i = numBlocks ; i > 0; i--) { 151 `memy ( tmpiv , iv , MAX_IV_SIZE ); 152 (( u32 *) block )[0] = ((u32*) put )[0] ^ tmpiv [0]; 153 (( u32 *) block )[1] = ((u32*) put )[1] ^ tmpiv [1]; 154 (( u32 *) block )[2] = ((u32*) put )[2] ^ tmpiv [2]; 155 (( u32 *) block )[3] = ((u32*) put )[3] ^ tmpiv [3]; 156 `__db_rijndlEny ( key -> rk , key-> Nr , block , outBufr ); 157 iv = outBufr ; 158 put += 16; 159 outBufr += 16; 163 MODE_CFB1 : 164 iv = ch -> IV ; 165 i = numBlocks ; i > 0; i--) { 166 `memy ( outBufr , put , 16); 167 k = 0; k < 128; k++) { 168 `__db_rijndlEny ( key -> ek , key-> Nr , iv , block ); 169 outBufr [ k >> 3] ^( block [0] & ( u_t )0x80) >> (k & 7); 170 t = 0; < 15;++) { 171 iv [ t ] = (iv[t] << 1) | (iv[t + 1] >> 7); 173 iv [15] = (iv[15] << 1| (( outBufr [ k >> 3] >> (7 - (k & 7))) & 1); 175 outBufr += 16; 176 put += 16; 181 BAD_CIPHER_STATE ; 184 128* numBlocks ; 185 } } 203 $__db_dEny ( ch , key , put , putOs , outBufr ) 204 chIn * ch ; 205 keyIn * key ; 206 u_t8_t * put ; 207 putOs ; 208 u_t8_t * outBufr ; 210 i , numBlocks , dL ; 211 u8 block [16], * iv ; 212 u32 tmpiv [4]; 214 i( ch = NULL || 215 key = NULL || 216 key -> dei = DIR_DECRYPT ) { 217 BAD_CIPHER_STATE ; 219 i( put = NULL || putOs <= 0) { 223 numBlocks = putOs /16; 225 ch -> mode ) { 226 MODE_ECB : 227 i = numBlocks ; i > 0; i--) { 228 `__db_rijndlEny ( key -> rk , key-> Nr , put , outBufr ); 229 put += 16; 230 outBufr += 16; 232 dL = 16 - ( putOs - 16* numBlocks ); 233 `DB_ASSERT ( NULL , dL > 0 &&adLen <= 16); 234 `memy ( block , put , 16 - dL ); 235 `memt ( block + 16 - dL ,adLen,adLen); 236 `__db_rijndlEny ( key -> rk , key-> Nr , block , outBufr ); 239 MODE_CBC : 240 iv = ch -> IV ; 241 i = numBlocks ; i > 0; i--) { 242 `memy ( tmpiv , iv , MAX_IV_SIZE ); 243 (( u32 *) block )[0] = ((u32*) put )[0] ^ tmpiv [0]; 244 (( u32 *) block )[1] = ((u32*) put )[1] ^ tmpiv [1]; 245 (( u32 *) block )[2] = ((u32*) put )[2] ^ tmpiv [2]; 246 (( u32 *) block )[3] = ((u32*) put )[3] ^ tmpiv [3]; 247 `__db_rijndlEny ( key -> rk , key-> Nr , block , outBufr ); 248 iv = outBufr ; 249 put += 16; 250 outBufr += 16; 252 dL = 16 - ( putOs - 16* numBlocks ); 253 `DB_ASSERT ( NULL , dL > 0 &&adLen <= 16); 254 i = 0; i < 16 - dL ; i++) { 255 block [ i ] = put [i] ^ iv [i]; 257 i = 16 - dL ; i < 16; i++) { 258 block [ i ] = ( u_t8_t ) dL ^ iv [i]; 260 `__db_rijndlEny ( key -> rk , key-> Nr , block , outBufr ); 264 BAD_CIPHER_STATE ; 267 16*( numBlocks + 1); 268 } } 277 $__db_blockDey ( ch , key , put , putL , outBufr ) 278 chIn * ch ; 279 keyIn * key ; 280 u_t8_t * put ; 281 size_t putL ; 282 u_t8_t * outBufr ; 284 i , k , t , numBlocks ; 285 u8 block [16], * iv ; 286 u32 tmpiv [4]; 288 i( ch = NULL || 289 key = NULL || 290 ( ch -> mode ! MODE_CFB1 && key -> dei = DIR_ENCRYPT )) { 291 BAD_CIPHER_STATE ; 293 i( put = NULL || putL <= 0) { 297 numBlocks = ()( putL /128); 299 ch -> mode ) { 300 MODE_ECB : 301 i = numBlocks ; i > 0; i--) { 302 `__db_rijndlDey ( key -> rk , key-> Nr , put , outBufr ); 303 put += 16; 304 outBufr += 16; 308 MODE_CBC : 309 `memy ( tmpiv , ch -> IV , MAX_IV_SIZE ); 310 i = numBlocks ; i > 0; i--) { 311 `__db_rijndlDey ( key -> rk , key-> Nr , put , block ); 312 (( u32 *) block )[0] ^ tmpiv [0]; 313 (( u32 *) block )[1] ^ tmpiv [1]; 314 (( u32 *) block )[2] ^ tmpiv [2]; 315 (( u32 *) block )[3] ^ tmpiv [3]; 316 `memy ( tmpiv , put , 16); 317 `memy ( outBufr , block , 16); 318 put += 16; 319 outBufr += 16; 323 MODE_CFB1 : 324 iv = ch -> IV ; 325 i = numBlocks ; i > 0; i--) { 326 `memy ( outBufr , put , 16); 327 k = 0; k < 128; k++) { 328 `__db_rijndlEny ( key -> ek , key-> Nr , iv , block ); 329 t = 0; < 15;++) { 330 iv [ t ] = (iv[t] << 1) | (iv[t + 1] >> 7); 332 iv [15] = (iv[15] << 1| (( put [ k >> 3] >> (7 - (k & 7))) & 1); 333 outBufr [ k >> 3] ^( block [0] & ( u_t )0x80) >> (k & 7); 335 outBufr += 16; 336 put += 16; 341 BAD_CIPHER_STATE ; 344 128* numBlocks ; 345 } } 354 $__db_dDey ( ch , key , put , putOs , outBufr ) 355 chIn * ch ; 356 keyIn * key ; 357 u_t8_t * put ; 358 putOs ; 359 u_t8_t * outBufr ; 361 i , numBlocks , dL ; 362 u8 block [16]; 363 u32 tmpiv [4]; 365 i( ch = NULL || 366 key = NULL || 367 key -> dei = DIR_ENCRYPT ) { 368 BAD_CIPHER_STATE ; 370 i( put = NULL || putOs <= 0) { 373 i( putOs % 16 != 0) { 374 BAD_DATA ; 377 numBlocks = putOs /16; 379 ch -> mode ) { 380 MODE_ECB : 382 i = numBlocks - 1; i > 0; i--) { 383 `__db_rijndlDey ( key -> rk , key-> Nr , put , outBufr ); 384 put += 16; 385 outBufr += 16; 388 `__db_rijndlDey ( key -> rk , key-> Nr , put , block ); 389 dL = block [15]; 390 i( dL >= 16) { 391 BAD_DATA ; 393 i = 16 - dL ; i < 16; i++) { 394 i( block [ i ] ! dL ) { 395 BAD_DATA ; 398 `memy ( outBufr , block , 16 - dL ); 401 MODE_CBC : 403 `memy ( tmpiv , ch -> IV , MAX_IV_SIZE ); 404 i = numBlocks - 1; i > 0; i--) { 405 `__db_rijndlDey ( key -> rk , key-> Nr , put , block ); 406 (( u32 *) block )[0] ^ tmpiv [0]; 407 (( u32 *) block )[1] ^ tmpiv [1]; 408 (( u32 *) block )[2] ^ tmpiv [2]; 409 (( u32 *) block )[3] ^ tmpiv [3]; 410 `memy ( tmpiv , put , 16); 411 `memy ( outBufr , block , 16); 412 put += 16; 413 outBufr += 16; 416 `__db_rijndlDey ( key -> rk , key-> Nr , put , block ); 417 (( u32 *) block )[0] ^ tmpiv [0]; 418 (( u32 *) block )[1] ^ tmpiv [1]; 419 (( u32 *) block )[2] ^ tmpiv [2]; 420 (( u32 *) block )[3] ^ tmpiv [3]; 421 dL = block [15]; 422 i( dL <= 0 ||adLen > 16) { 423 BAD_DATA ; 425 i = 16 - dL ; i < 16; i++) { 426 i( block [ i ] ! dL ) { 427 BAD_DATA ; 430 `memy ( outBufr , block , 16 - dL ); 434 BAD_CIPHER_STATE ; 437 16* numBlocks - dL ; 438 } } 440 #ifde INTERMEDIATE_VALUE_KAT 458 $__db_chUpdeRounds ( ch , key , put , putL , outBufr , rounds ) 459 chIn * ch ; 460 keyIn * key ; 461 u_t8_t * put ; 462 size_t putL ; 463 u_t8_t * outBufr ; 464 rounds ; 466 u8 block [16]; 468 i( ch = NULL || key == NULL) { 469 BAD_CIPHER_STATE ; 472 `memy ( block , put , 16); 474 key -> dei ) { 475 DIR_ENCRYPT : 476 `__db_rijndlEnyRound ( key -> rk , key-> Nr , block , rounds ); 479 DIR_DECRYPT : 480 `__db_rijndlDeyRound ( key -> rk , key-> Nr , block , rounds ); 484 BAD_KEY_DIR ; 487 `memy ( outBufr , block , 16); 489 TRUE ; 490 } } @../cxx/cxx_db.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 ~"dbc/db_ge.h " 17 ~"dbc_auto/db_auto.h " 18 ~"dbc_auto/d_auto.h " 19 ~"dbc/db_dich.h " 20 ~"dbc_auto/db_ext.h " 21 ~"dbc_auto/comm_ext.h " 29 #DB_METHOD ( _me , _gec , _gli , _tok ) \ 30 Db :: _me _gec \ 32 t ; \ 33 DB * db = `unwp ( this ); \ 35 t = db -> _me _gli ; \ 36 i(! `_tok ( t )) \ 37 `DB_ERROR ( v_ , "Db::" #_me, t , `r_picy ()); \ 38 ( t ); \ 39 } ) 41 #DB_DESTRUCTOR ( _me , _gec , _gli , _tok ) \ 42 Db :: _me _gec \ 44 t ; \ 45 DB * db = `unwp ( this ); \ 47 i(! db ) { \ 48 `DB_ERROR ( v_ , "Db::" #_me, EINVAL , `r_picy ()); \ 49 ( EINVAL ); \ 51 t = db -> _me _gli ; \ 52 `nup (); \ 53 i(! `_tok ( t )) \ 54 `DB_ERROR ( v_ , "Db::" #_me, t , `r_picy ()); \ 55 ( t ); \ 56 } ) 58 #DB_METHOD_QUIET ( _me , _gec , _gli ) \ 59 Db :: _me _gec \ 61 DB * db = `unwp ( this ); \ 63 ( db -> _me _gli ); \ 64 } ) 66 #DB_METHOD_VOID ( _me , _gec , _gli ) \ 67 Db :: _me _gec \ 69 DB * db = `unwp ( this ); \ 71 db -> _me _gli ; \ 72 } ) 86 gDb :: $Db ( DbEnv * v , u_t32_t ags ) 87 : `imp_ (0) 88 , `v_ ( v ) 89 , `mpf_ (0) 90 , `cڡru_r_ (0) 91 , `ags_ (0) 92 , `cڡru_ags_ ( ags ) 93 , `nd_o_back_ (0) 94 , `assoc_back_ (0) 95 , `bt_com_back_ (0) 96 , `bt_efix_back_ (0) 97 , `dup_com_back_ (0) 98 , `edback_back_ (0) 99 , `h_com_back_ (0) 100 , $h_hash_back_ (0) 102 i( v_ == 0) 103 ags_ | DB_CXX_PRIVATE_ENV ; 105 i(( cڡru_r_ = `lize ()) != 0) 106 `DB_ERROR ( v_ , "Db::Db", cڡru_r_ , `r_picy ()); 107 } } 116 gDb ::~ $Db () 118 DB * db ; 120 db = `unwp ( this ); 121 i( db ! NULL ) { 122 () db -> `o (db, 0); 123 `nup (); 125 } } 131 gDb :: $lize () 133 DB * db ; 134 DB_ENV * nv = `unwp ( v_ ); 135 t ; 136 u_t32_t cxx_ags ; 138 cxx_ags = cڡru_ags_ & DB_CXX_NO_EXCEPTIONS ; 144 i(( t = `db_ (& db , nv , 145 cڡru_ags_ & ~ cxx_ags )) != 0) 146 ( t ); 149 imp_ = db ; 150 db -> i_ = this ; 155 i(( ags_ & DB_CXX_PRIVATE_ENV ) != 0) 156 v_ = w `DbEnv ( db -> dbv , cxx_ags ); 159 mpf_ = w `DbMpoFe (); 160 mpf_ -> imp_ = db -> mpf ; 163 } } 168 gDb :: $nup () 170 i( imp_ != 0) { 171 imp_ = 0; 179 i(( ags_ & DB_CXX_PRIVATE_ENV ) != 0) { 180 v_ -> `nup (); 181 de v_ ; 182 v_ = 0; 185 de mpf_ ; 187 } } 195 gDb :: $r_picy () 197 i( v_ ! NULL ) 198 ( v_ -> `r_picy ()); 205 i(( cڡru_ags_ & DB_CXX_NO_EXCEPTIONS ) != 0) { 206 ( ON_ERROR_RETURN ); 209 ( ON_ERROR_THROW ); 212 } } 214 DB_DESTRUCTOR ( o , ( u_t32_t ags ), ( db , fgs), DB_RETOK_STD ) 215 DB_METHOD ( com , ( DbTxn * txnid , Dbt * t , Db* , 216 DB_COMPACT * c_da , u_t32_t ags , Dbt * d ), 217 ( db , unwp ( txnid ), t , , c_da , ags , d ), DB_RETOK_STD ) 220 DB_METHOD ( curs , ( DbTxn * txnid , Dbc ** cursp , u_t32_t ags ), 221 ( db , unwp ( txnid ), ( DBC **) cursp , ags ), 222 DB_RETOK_STD ) 224 DB_METHOD ( d , ( DbTxn * txnid , Dbt * key , u_t32_t ags ), 225 ( db , unwp ( txnid ), key , ags ), 226 DB_RETOK_DBDEL ) 228 gDb :: $r ( r , cڡ * fm , ...) 230 DB * db = `unwp ( this ); 232 `DB_REAL_ERR ( db -> dbv , r , DB_ERROR_SET , 1, fm ); 233 } } 235 gDb :: $rx (cڡ * fm , ...) 237 DB * db = `unwp ( this ); 239 `DB_REAL_ERR ( db -> dbv , 0, DB_ERROR_NOT_SET , 1, fm ); 240 } } 242 DB_METHOD ( exis , ( DbTxn * txnid , Dbt * key , u_t32_t ags ), 243 ( db , unwp ( txnid ), key , ags ), DB_RETOK_EXISTS ) 245 DB_METHOD ( fd , (* fdp ), ( db , fdp), DB_RETOK_STD ) 247 gDb :: $g ( DbTxn * txnid , Dbt * key , Db* vue , u_t32_t ags ) 249 DB * db = `unwp ( this ); 250 t ; 252 t = db -> `g (db, `unwp ( txnid ), key , vue , ags ); 254 i(! `DB_RETOK_DBGET ( t )) { 255 i( t = DB_BUFFER_SMALL ) 256 `DB_ERROR_DBT ( v_ , "Db::g", vue , `r_picy ()); 258 `DB_ERROR ( v_ , "Db::g", t , `r_picy ()); 261 ( t ); 262 } } 264 gDb :: $g_byswd (* isswd ) 266 DB * db = (DB *) `unwpCڡ ( this ); 267 ( db -> `g_byswd (db, isswd )); 268 } } 270 DbEnv * gDb :: $g_v () 272 DB * db = (DB *) `unwpCڡ ( this ); 273 DB_ENV * dbv = db -> `g_v (db); 274 ( dbv ! NULL ? DbEnv :: `g_DbEnv (dbenv) : NULL); 275 } } 277 DbMpoFe * gDb :: $g_mpf () 279 ( mpf_ ); 280 } } 282 DB_METHOD ( g_dbme , (cڡ ** fam , cڡ ** dbm ), 283 ( db , fam , dbm ), DB_RETOK_STD ) 285 DB_METHOD ( g_ݒ_ags , ( u_t32_t * ag ), ( db , fg), DB_RETOK_STD ) 287 gDb :: $g_ty ( DBTYPE * dbty ) 289 DB * db = (DB *) `unwpCڡ ( this ); 290 ( db -> `g_ty (db, dbty )); 291 } } 296 DB_METHOD ( jo , ( Dbc ** curi , Db** cursp , u_t32_t ags ), 297 ( db , ( DBC **) curi , (DBC **) cursp , ags ), DB_RETOK_STD ) 299 DB_METHOD ( key_nge , 300 ( DbTxn * txnid , Dbt * key , DB_KEY_RANGE * sus , u_t32_t ags ), 301 ( db , unwp ( txnid ), key , sus , ags ), DB_RETOK_STD ) 306 gDb :: $ݒ ( DbTxn * txnid , cڡ * fe , cڡ * daba , 307 DBTYPE ty , u_t32_t ags , mode ) 309 t ; 310 DB * db = `unwp ( this ); 312 i( cڡru_r_ != 0) 313 t = cڡru_r_ ; 315 t = db -> `ݒ (db, `unwp ( txnid ), fe , daba , ty , ags , 316 mode ); 318 i(! `DB_RETOK_STD ( t )) 319 `DB_ERROR ( v_ , "Db::ݒ", t , `r_picy ()); 321 ( t ); 322 } } 324 gDb :: $pg ( DbTxn * txnid , Dbt * key , Db* pkey , Db* vue , u_t32_t ags ) 326 DB * db = `unwp ( this ); 327 t ; 329 t = db -> `pg (db, `unwp ( txnid ), key , pkey , vue , ags ); 332 i(! `DB_RETOK_DBGET ( t )) { 333 i( t = DB_BUFFER_SMALL && `DB_OVERFLOWED_DBT ( vue )) 334 `DB_ERROR_DBT ( v_ , "Db::pg", vue , `r_picy ()); 336 `DB_ERROR ( v_ , "Db::pg", t , `r_picy ()); 339 ( t ); 340 } } 342 DB_METHOD ( put , ( DbTxn * txnid , Dbt * key , Db* vue , u_t32_t ags ), 343 ( db , unwp ( txnid ), key , vue , ags ), DB_RETOK_DBPUT ) 345 DB_DESTRUCTOR ( me , 346 (cڡ * fe , cڡ * daba , cڡ * wme , 347 u_t32_t ags ), 348 ( db , fe , daba , wme , ags ), DB_RETOK_STD ) 350 DB_DESTRUCTOR ( move , (cڡ * fe , cڡ * daba , u_t32_t ags ), 351 ( db , fe , daba , ags ), DB_RETOK_STD ) 353 DB_METHOD ( un , ( DbTxn * txnid , u_t32_t * coup , u_t32_ ags ), 354 ( db , unwp ( txnid ), coup , ags ), DB_RETOK_STD ) 356 DB_METHOD ( , ( DbTxn * txnid , * , u_t32_t ags ), 357 ( db , unwp ( txnid ), , ags ), DB_RETOK_STD ) 359 DB_METHOD ( _t , ( u_t32_t ags ), ( db , fgs), DB_RETOK_STD ) 361 DB_METHOD ( sync , ( u_t32_t ags ), ( db , fgs), DB_RETOK_STD ) 363 DB_METHOD ( upgde , 364 (cڡ * me , u_t32_t ags ), ( db ,ame, fgs), DB_RETOK_STD ) 401 #DB_CALLBACK_C_INTERCEPT ( _me , _y , _rgec , \ 402 _tu , _cxxgs ) \ 403 "C" _y _db_ ## _me ## _r_c _rgec \ 405 Db * cxxthis ; \ 408 `DB_ASSERT ( NULL , his != NULL); \ 409 cxxthis = Db :: `g_Db ( his ); \ 410 `DB_ASSERT ( his -> dbv , cxxthis ! NULL ); \ 411 `DB_ASSERT ( his -> dbv , cxxthis -> _me ## _back_ != 0); \ 413 `_tu (* cxxthis -> _me ## _back_ _cxxgs ; \ 414 } ) 416 #DB_SET_CALLBACK ( _cxxme , _me , _cxxgec , _cb ) \ 417 Db :: _cxxme _cxxgec \ 419 DB * his = `unwp ( this ); \ 421 _me ## _back_ = _cb ; \ 422 ((*( his -> _cxxme ))(cthis, \ 423 ( _cb ? _db_ ## _me ## _r_c : NULL )); \ 424 } ) 427 DB_CALLBACK_C_INTERCEPT ( assoc , 428 , ( DB * his , cڡ DBT * key , cڡ DBT * da , DBT * tv ), 429 , ( cxxthis , Dbt :: g_cڡ_Dbt ( key ), Dbt::g_cڡ_Dbt( da ), 430 Dbt :: $g_Dbt ( tv ))) 432 Db :: `assoc ( DbTxn * txn , Db * cdy , (* back )(Db *, cڡ Dbt *, 433 cڡ Dbt *, Db*), u_t32_t ags ) 435 DB * his = `unwp ( this ); 441 cdy -> assoc_back_ = back ; 442 ((*( his -> assoc ))(his, `unwp ( txn ), unwp( cdy ), 443 ( back ? _db_assoc_r_c : NULL , ags )); 444 } } 446 DB_CALLBACK_C_INTERCEPT ( edback , 447 , ( DB * his , code , p ), 448 (), ( cxxthis , code , p )) 450 DB_SET_CALLBACK ( t_edback , edback , 451 ((* g )( Db * cxxthis , code , p )),rg) 453 `DB_CALLBACK_C_INTERCEPT ( nd_o , 454 , ( DB * his , DBT * da , db_o_t o ), 455 , ( cxxthis , Dbt :: `g_Dbt ( da ), o )) 457 `DB_SET_CALLBACK ( t_nd_o , nd_o , 458 ((* g )( Db * cxxthis , Dbt * da , db_o_t o )),rg) 460 `DB_CALLBACK_C_INTERCEPT ( bt_com , 461 , ( DB * his , cڡ DBT * da1 , cڡ DBT * da2 ), 463 ( cxxthis , Dbt :: `g_cڡ_Dbt ( da1 ), Dbt:: $g_cڡ_Dbt ( da2 ))) 465 `DB_SET_CALLBACK ( t_bt_com , bt_com , 466 ((* g )( Db * cxxthis , cڡ Dbt * da1 , cڡ Db* da2 )),rg) 468 `DB_CALLBACK_C_INTERCEPT ( bt_efix , 469 size_t , ( DB * his , cڡ DBT * da1 , cڡ DBT * da2 ), 471 ( cxxthis , Dbt :: `g_cڡ_Dbt ( da1 ), Dbt:: $g_cڡ_Dbt ( da2 ))) 473 `DB_SET_CALLBACK ( t_bt_efix , bt_efix , 474 ( $size_t (* g )( Db * cxxthis , cڡ Dbt * da1 , cڡ Db* da2 )),rg) 476 `DB_CALLBACK_C_INTERCEPT ( dup_com , 477 , ( DB * his , cڡ DBT * da1 , cڡ DBT * da2 ), 479 ( cxxthis , Dbt :: `g_cڡ_Dbt ( da1 ), Dbt:: $g_cڡ_Dbt ( da2 ))) 481 `DB_SET_CALLBACK ( t_dup_com , dup_com , 482 ((* g )( Db * cxxthis , cڡ Dbt * da1 , cڡ Db* da2 )),rg) 484 `DB_CALLBACK_C_INTERCEPT ( h_com , 485 , ( DB * his , cڡ DBT * da1 , cڡ DBT * da2 ), 487 ( cxxthis , Dbt :: `g_cڡ_Dbt ( da1 ), Dbt:: $g_cڡ_Dbt ( da2 ))) 489 `DB_SET_CALLBACK ( t_h_com , h_com , 490 ((* g )( Db * cxxthis , cڡ Dbt * da1 , cڡ Db* da2 )),rg) 492 `DB_CALLBACK_C_INTERCEPT ( h_hash , 493 u_t32_t , ( DB * his , cڡ * da , u_t32_ n ), 494 , ( cxxthis , da , n )) 496 `DB_SET_CALLBACK ( t_h_hash , h_hash , 497 ( $u_t32_t (* g )( Db * cxxthis , cڡ * da , u_t32_t n )),rg) 505 $_vify_back_c (* hd , cڡ * r_g ) 507 * r ; 508 `__DB_STD ( oam * out ; 510 r = (*) r_g ; 511 out = ( `__DB_STD ( oam *) hd ; 513 (* out << r ; 514 i( out -> ` ()) 515 ( EIO ); 518 } } 520 Db :: vify (cڡ * me , cڡ * subdb , 521 __DB_STD ( oam * or , u_t32_t ags ) 523 DB * db = unwp ( this ); 524 t ; 526 i(! db ) 527 t = EINVAL ; 529 t = __db_vify_ ( db , me , subdb , or , 530 _vify_back_c , ags ); 535 nup (); 538 i(! DB_RETOK_STD ( t )) 539 DB_ERROR ( v_ , "Db::vify", t , r_picy ()); 541 ( t ); 544 DB_METHOD ( t_bt_com , ( bt_com_f_ty func ), 545 ( db , func ), DB_RETOK_STD ) 546 DB_METHOD ( g_bt_mkey , ( u_t32_t * bt_mkeyp ), 547 ( db , bt_mkeyp ), DB_RETOK_STD ) 548 DB_METHOD ( t_bt_mkey , ( u_t32_t bt_mkey ), 549 ( db , bt_mkey ), DB_RETOK_STD ) 550 DB_METHOD ( t_bt_efix , ( bt_efix_f_ty func ), 551 ( db , func ), DB_RETOK_STD ) 552 DB_METHOD ( t_dup_com , ( dup_com_f_ty func ), 553 ( db , func ), DB_RETOK_STD ) 554 DB_METHOD ( g_y_ags , ( u_t32_t * ag ), 555 ( db , ag ), DB_RETOK_STD ) 556 DB_METHOD ( t_y , (cڡ * sswd , u_t32_t ags ), 557 ( db , sswd , ags ), DB_RETOK_STD ) 558 DB_METHOD_VOID ( g_rfe , ( FILE ** rf ), ( db ,rrfilep)) 559 DB_METHOD_VOID ( t_rfe , ( FILE * rfe ), ( db ,rrfile)) 560 DB_METHOD_VOID ( g_fx , (cڡ ** fx ), ( db ,rrpfx)) 561 DB_METHOD_VOID ( t_fx , (cڡ * fx ), ( db ,rrpfx)) 562 DB_METHOD ( g_ags , ( u_t32_t * ag ), ( db , flagsp), 563 DB_RETOK_STD ) 564 DB_METHOD ( t_ags , ( u_t32_t ags ), ( db , flags), 565 DB_RETOK_STD ) 566 DB_METHOD ( t_h_com , ( h_com_f_ty func ), 567 ( db , func ), DB_RETOK_STD ) 568 DB_METHOD ( g_h_f , ( u_t32_t * h_fp ), 569 ( db , h_fp ), DB_RETOK_STD ) 570 DB_METHOD ( t_h_f , ( u_t32_t h_f ), 571 ( db , h_f ), DB_RETOK_STD ) 572 DB_METHOD ( t_h_hash , ( h_hash_f_ty func ), 573 ( db , func ), DB_RETOK_STD ) 574 DB_METHOD ( g_h_m , ( u_t32_t * h_mp ), 575 ( db , h_mp ), DB_RETOK_STD ) 576 DB_METHOD ( t_h_m , ( u_t32_t h_m ), 577 ( db , h_m ), DB_RETOK_STD ) 578 DB_METHOD ( g_ld , (* db_ldp ), ( db , db_lorderp), 579 DB_RETOK_STD ) 580 DB_METHOD ( t_ld , ( db_ld ), ( db , db_lorder), 581 DB_RETOK_STD ) 582 DB_METHOD_VOID ( g_msgfe , ( FILE ** msgf ), ( db , msgfilep)) 583 DB_METHOD_VOID ( t_msgfe , ( FILE * msgfe ), ( db , msgfile)) 584 DB_METHOD_QUIET ( g_muɝ , (), ( db )) 585 DB_METHOD ( g_gesize , ( u_t32_t * db_gesiz ), 586 ( db , db_gesiz ), DB_RETOK_STD ) 587 DB_METHOD ( t_gesize , ( u_t32_t db_gesize ), 588 ( db , db_gesize ), DB_RETOK_STD ) 589 DB_METHOD ( g_iܙy , ( DB_CACHE_PRIORITY * iܙyp ), 590 ( db , iܙyp ), DB_RETOK_STD ) 591 DB_METHOD ( t_iܙy , ( DB_CACHE_PRIORITY iܙy ), 592 ( db , iܙy ), DB_RETOK_STD ) 593 DB_METHOD ( g__dim , (* _dimp ), 594 ( db , _dimp ), DB_RETOK_STD ) 595 DB_METHOD ( t__dim , ( _dim ), 596 ( db , _dim ), DB_RETOK_STD ) 597 DB_METHOD ( g__n , ( u_t32_t * _ ), 598 ( db , _ ), DB_RETOK_STD ) 599 DB_METHOD ( t__n , ( u_t32_t _n ), 600 ( db , _n ), DB_RETOK_STD ) 601 DB_METHOD ( g__d , (* _dp ), 602 ( db , _dp ), DB_RETOK_STD ) 603 DB_METHOD ( t__d , ( _d ), 604 ( db , _d ), DB_RETOK_STD ) 605 DB_METHOD ( g__sour , (cڡ ** _sour ), 606 ( db , _sour ), DB_RETOK_STD ) 607 DB_METHOD ( t__sour , (cڡ * _sour ), 608 ( db , _sour ), DB_RETOK_STD ) 609 DB_METHOD ( g_q_exsize , ( u_t32_t * exsiz ), 610 ( db , exsiz ), DB_RETOK_STD ) 611 DB_METHOD ( t_q_exsize , ( u_t32_t exsize ), 612 ( db , exsize ), DB_RETOK_STD ) 614 DB_METHOD_QUIET ( t_loc , ( db_mloc_f_ty mloc_f , 615 db_loc_f_ty loc_f , db__f_ty _f ), 616 ( db , mloc_f , loc_f , _f )) 618 Db :: t_r ((* g )(cڡ DbEnv *, const *, const *)) 620 v_ -> `t_r ( g ); 621 } } 623 Db :: t_msg ((* g )(cڡ DbEnv *, const *)) 625 v_ -> `t_msg ( g ); 626 } } 628 * Db :: $g_p_ive () const 630 `unwpCڡ ( this )-> p_ive ; 631 } } 633 Db :: $t_p_ive (* vue ) 635 `unwp ( this )-> p_ive = vue ; 636 } } 638 DB_METHOD ( g_chesize , ( u_t32_t * gby , u_t32_* by , * nch ), 639 ( db , gby , by , nch ), DB_RETOK_STD ) 640 DB_METHOD ( t_chesize , ( u_t32_t gbys , u_t32_ bys , nche ), 641 ( db , gbys , bys , nche ), DB_RETOK_STD ) 643 Db :: t_nic ((* back )( DbEnv *, )) 645 ( v_ -> `t_nic ( back )); 646 } } 648 __DB_STD ( oam * Db :: $g_r_am () 650 v_ -> `g_r_am (); 651 } } 653 Db :: t_r_am ( __DB_STD ( oam * r_am ) 655 v_ -> t_r_am ( r_am ); 658 __DB_STD ( oam * Db :: $g_mesge_am () 660 v_ -> `g_mesge_am (); 661 } } 663 Db :: t_mesge_am ( __DB_STD ( oam * mesge_am ) 665 v_ -> t_mesge_am ( mesge_am ); 668 DB_METHOD_QUIET ( g_iڮ , (), ( db )) @../cxx/cxx_dbc.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 ~"dbc/db_ge.h " 17 ~"dbc_auto/db_auto.h " 18 ~"dbc_auto/d_auto.h " 19 ~"dbc/db_dich.h " 20 ~"dbc_auto/db_ext.h " 21 ~"dbc_auto/comm_ext.h " 29 #DBC_METHOD ( _me , _gec , _gli , _tok ) \ 30 Dbc :: _me _gec \ 32 t ; \ 33 DBC * dbc = this ; \ 35 t = dbc -> _me _gli ; \ 36 i(! `_tok ( t )) \ 37 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), \ 38 "Dbc::" #_me, t , ON_ERROR_UNKNOWN ); \ 39 ( t ); \ 40 } ) 44 gDbc ::~ $Dbc () 46 } } 48 DBC_METHOD ( o , (), ( dbc ), DB_RETOK_STD ) 49 DBC_METHOD ( cou , ( db_o_t * coup , u_t32_t _ags ), 50 ( dbc , coup , _ags ), DB_RETOK_STD ) 51 DBC_METHOD ( d , ( u_t32_t _ags ), 52 ( dbc , _ags ), DB_RETOK_DBCDEL ) 54 gDbc :: $dup ( Dbc ** cursp , u_t32_t _ags ) 56 t ; 57 DBC * dbc = this ; 58 DBC * w_curs = 0; 60 t = dbc -> `dup (dbc, & w_curs , _ags ); 62 i( `DB_RETOK_STD ( t )) 64 * cursp = ( Dbc *) w_curs ; 66 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 67 "Dbc::dup", t , ON_ERROR_UNKNOWN ); 69 ( t ); 70 } } 72 gDbc :: $g ( Dbt * key , Db* da , u_t32_t _ags ) 74 t ; 75 DBC * dbc = this ; 77 t = dbc -> `g (dbc, key , da , _ags ); 79 i(! `DB_RETOK_DBCGET ( t )) { 80 i( t = DB_BUFFER_SMALL && `DB_OVERFLOWED_DBT ( key )) 81 `DB_ERROR_DBT ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 82 "Dbc::g", key , ON_ERROR_UNKNOWN ); 83 i( t = DB_BUFFER_SMALL && `DB_OVERFLOWED_DBT ( da )) 84 `DB_ERROR_DBT ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 85 "Dbc::g", da , ON_ERROR_UNKNOWN ); 87 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 88 "Dbc::g", t , ON_ERROR_UNKNOWN ); 91 ( t ); 92 } } 94 gDbc :: $pg ( Dbt * key , Db* pkey , Db* da , u_t32_t _ags ) 96 t ; 97 DBC * dbc = this ; 99 t = dbc -> `pg (dbc, key , pkey , da , _ags ); 102 i(! `DB_RETOK_DBCGET ( t )) { 103 i( t = DB_BUFFER_SMALL && `DB_OVERFLOWED_DBT ( key )) 104 `DB_ERROR_DBT ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 105 "Dbc::pg", key , ON_ERROR_UNKNOWN ); 106 i( t = DB_BUFFER_SMALL && `DB_OVERFLOWED_DBT ( da )) 107 `DB_ERROR_DBT ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 108 "Dbc::pg", da , ON_ERROR_UNKNOWN ); 110 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbc -> dbp -> dbv ), 111 "Dbc::pg", t , ON_ERROR_UNKNOWN ); 114 ( t ); 115 } } 117 DBC_METHOD ( put , ( Dbt * key , Db* da , u_t32_t _ags ), 118 ( dbc , key , da , _ags ), DB_RETOK_DBCPUT ) 119 DBC_METHOD ( g_iܙy , ( DB_CACHE_PRIORITY * iܙyp ), 120 ( dbc , iܙyp ), DB_RETOK_STD ) 121 DBC_METHOD ( t_iܙy , ( DB_CACHE_PRIORITY i ), ( dbc ,ri), DB_RETOK_STD ) @../cxx/cxx_dbt.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 ~"dbc/db_ge.h " 17 ~"dbc_auto/db_auto.h " 18 ~"dbc_auto/d_auto.h " 19 ~"dbc/db_dich.h " 20 ~"dbc_auto/db_ext.h " 21 ~"dbc_auto/comm_ext.h " 23 gDbt :: $Dbt () 25 DBT * dbt = this ; 26 `memt ( dbt , 0, ( DBT )); 27 } } 29 gDbt :: $Dbt (* da_g , u_t32_t size_g ) 31 DBT * dbt = this ; 32 `memt ( dbt , 0, ( DBT )); 33 `t_da ( da_g ); 34 `t_size ( size_g ); 35 } } 37 gDbt ::~ $Dbt () 39 } } 41 Dbt :: $Dbt (cڡ Dbt & th ) 43 cڡ DBT * om = & th ; 44 DBT * to = this ; 45 `memy ( to , om , ( DBT )); 46 } } 48 gDbt &Dbt:: ݔ = (cڡ Dbt & th ) 50 i( this !& th ) { 51 cڡ DBT * om = & th ; 52 DBT * gto = this ; 53 memy ( to , om , ( DBT )); 55 (* gthis ); @../cxx/cxx_env.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 ~"dbc/db_ge.h " 17 ~"dbc/db_am.h " 18 ~"dbc/log.h " 19 ~"dbc_auto/comm_ext.h " 20 ~"dbc_auto/log_ext.h " 22 #ifde HAVE_CXX_STDHEADERS 23 usg gd :: ; 32 #DBENV_METHOD_ERR ( _me , _gec , _gli , __r ) \ 33 DbEnv :: _me _gec \ 35 DB_ENV * dbv = `unwp ( this ); \ 36 t ; \ 38 i(( t = dbv -> _me _gli ) != 0) { \ 39 __r ; \ 41 ( t ); \ 42 } ) 44 #DBENV_METHOD ( _me , _gec , _gli ) \ 45 `DBENV_METHOD_ERR ( _me , _gec , _gli , \ 46 `DB_ERROR ( this , "DbEnv::" #_me, t , `r_picy ())) ) 48 #DBENV_METHOD_QUIET ( _me , _gec , _gli ) \ 49 DbEnv :: _me _gec \ 51 DB_ENV * dbv = `unwp ( this ); \ 53 ( dbv -> _me _gli ); \ 54 } ) 56 #DBENV_METHOD_VOID ( _me , _gec , _gli ) \ 57 DbEnv :: _me _gec \ 59 DB_ENV * dbv = `unwp ( this ); \ 61 dbv -> _me _gli ; \ 62 } ) 73 gϡ_known_r_picy = ON_ERROR_UNKNOWN ; 81 $_edback_r_c ( DB_ENV * v , code , p ) 83 DbEnv :: `_edback_r ( v , code , p ); 84 } } 87 $_nic_r_c ( DB_ENV * v , rv ) 89 DbEnv :: `_nic_r ( v , rv ); 90 } } 93 $_evt_func_r_c ( DB_ENV * v , u_t32_t evt , * evt_fo ) 95 DbEnv :: `_evt_func_r ( v , evt , evt_fo ); 96 } } 99 $_am_r_funi_c (cڡ DB_ENV * v , 100 cڡ * efix , cڡ * mesge ) 102 DbEnv :: `_am_r_funi ( v , efix , mesge ); 103 } } 106 $_am_mesge_funi_c (cڡ DB_ENV * v , cڡ * mesge ) 108 DbEnv :: `_am_mesge_funi ( v , mesge ); 109 } } 112 $_p_dich_r_c ( DB_ENV * v , DBT * dbt , DB_LSN * l , db_cs ) 114 ( DbEnv :: `_p_dich_r ( v , dbt , l , )); 115 } } 118 $_p_nd_r_c ( DB_ENV * v , cڡ DBT * l , cڡ DBT * da , 119 cڡ DB_LSN * l , id , u_t32_t ags ) 121 ( DbEnv :: `_p_nd_r ( v , 122 l , da , l , id , ags )); 123 } } 126 $_ilive_r_c ( 127 DB_ENV * v , pid_t pid , db_thadid_t thrid , u_t32_t ags ) 129 ( DbEnv :: `_ilive_r ( v , pid , thrid , ags )); 130 } } 133 $_thad_id_r_c ( DB_ENV * v , pid_t * pidp , db_thadid_t * thridp ) 135 DbEnv :: `_thad_id_r ( v , pidp , thridp ); 136 } } 139 * $_thad_id_rg_r_c ( DB_ENV * v , pid_t pid , 140 db_thadid_t thrid , * buf ) 142 ( DbEnv :: `_thad_id_rg_r ( v , pid , thrid , buf )); 143 } } 145 DbEnv :: $_edback_r ( DB_ENV * v , code , p ) 147 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 148 i( cxxv == 0) { 149 `DB_ERROR (0, 150 "DbEnv::edback_back", EINVAL , ON_ERROR_UNKNOWN ); 153 i( cxxv -> edback_back_ == 0) { 154 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 155 "DbEnv::edback_back", EINVAL , cxxv -> `r_picy ()); 158 (* cxxv -> edback_back_ )(cxxv, code , p ); 159 } } 161 DbEnv :: $_nic_r ( DB_ENV * v , rv ) 163 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 164 i( cxxv == 0) { 165 `DB_ERROR (0, 166 "DbEnv::nic_back", EINVAL , ON_ERROR_UNKNOWN ); 169 i( cxxv -> nic_back_ == 0) { 170 `DB_ERROR ( cxxv , "DbEnv::nic_back", EINVAL , 171 cxxv -> `r_picy ()); 174 (* cxxv -> nic_back_ )(cxxv, rv ); 175 } } 177 DbEnv :: $_evt_func_r ( 178 DB_ENV * v , u_t32_t evt , * evt_fo ) 180 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 181 i( cxxv == 0) { 182 `DB_ERROR (0, 183 "DbEnv::evt_func_back", EINVAL , ON_ERROR_UNKNOWN ); 186 i( cxxv -> evt_func_back_ == 0) { 187 `DB_ERROR ( cxxv , "DbEnv::evt_func_back", EINVAL , 188 cxxv -> `r_picy ()); 191 (* cxxv -> evt_func_back_ )(cxxv, evt , evt_fo ); 192 } } 194 DbEnv :: $_p_dich_r ( DB_ENV * v , DBT * dbt , DB_LSN * l , 195 db_cs ) 197 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 198 i( cxxv == 0) { 199 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 200 "DbEnv::p_dich_back", EINVAL , ON_ERROR_UNKNOWN ); 201 ( EINVAL ); 203 i( cxxv -> p_dich_back_ == 0) { 204 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 205 "DbEnv::p_dich_back", EINVAL , 206 cxxv -> `r_picy ()); 207 ( EINVAL ); 209 Dbt * cxxdbt = (Db*) dbt ; 210 DbL * cxxl = (DbL *) l ; 211 ((* cxxv -> p_dich_back_ )(cxxv, cxxdbt , cxxl , )); 212 } } 214 DbEnv :: $_ilive_r ( 215 DB_ENV * v , pid_t pid , db_thadid_t thrid , u_t32_t ags ) 217 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 218 i( cxxv == 0) { 219 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 220 "DbEnv::ilive_back", EINVAL , ON_ERROR_UNKNOWN ); 223 ((* cxxv -> ilive_back_ )(cxxv, pid , thrid , ags )); 224 } } 226 DbEnv :: $_p_nd_r ( DB_ENV * v , cڡ DBT * l , cڡ DBT * da , 227 cڡ DB_LSN * l , id , u_t32_t ags ) 229 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 230 i( cxxv == 0) { 231 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 232 "DbEnv::p_nd_back", EINVAL , ON_ERROR_UNKNOWN ); 233 ( EINVAL ); 235 cڡ Dbt * cxxl = (cڡ Db*) l ; 236 cڡ DbL * cxxl = (cڡ DbL *) l ; 237 Dbt * cxxda = (Db*) da ; 238 ((* cxxv -> p_nd_back_ )(cxxenv, 239 cxxl , cxxda , cxxl , id , ags )); 240 } } 242 DbEnv :: $_thad_id_r ( DB_ENV * v , 243 pid_t * pidp , db_thadid_t * thridp ) 245 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 246 i( cxxv == 0) { 247 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 248 "DbEnv::thad_id_back", EINVAL , ON_ERROR_UNKNOWN ); 250 cxxv -> `thad_id_back_ (cxxv, pidp , thridp ); 251 } } 253 * DbEnv :: $_thad_id_rg_r ( DB_ENV * v , 254 pid_t pid , db_thadid_t thrid , * buf ) 256 DbEnv * cxxv = DbEnv:: `g_DbEnv ( v ); 257 i( cxxv == 0) { 258 `DB_ERROR ( DbEnv :: `g_DbEnv ( v ), 259 "DbEnv::thad_id_rg_back", EINVAL , 260 ON_ERROR_UNKNOWN ); 261 ( NULL ); 263 ( cxxv -> `thad_id_rg_back_ (cxxv, pid , thrid , buf )); 264 } } 278 DbEnv :: $DbEnv ( u_t32_t ags ) 279 : `imp_ (0) 280 , `cڡru_r_ (0) 281 , `cڡru_ags_ ( ags ) 282 , `r_am_ (0) 283 , `mesge_am_ (0) 284 , `p_dich_back_ (0) 285 , `edback_back_ (0) 286 , `nic_back_ (0) 287 , `evt_func_back_ (0) 288 , $p_nd_back_ (0) 290 i(( cڡru_r_ = `lize (0)) != 0) 291 `DB_ERROR ( this , "DbEnv::DbEnv", cڡru_r_ , 292 `r_picy ()); 293 } } 295 DbEnv :: $DbEnv ( DB_ENV * v , u_t32_t ags ) 296 : `imp_ (0) 297 , `cڡru_r_ (0) 298 , `cڡru_ags_ ( ags ) 299 , `r_am_ (0) 300 , `mesge_am_ (0) 301 , `p_dich_back_ (0) 302 , `edback_back_ (0) 303 , `nic_back_ (0) 304 , `evt_func_back_ (0) 305 , $p_nd_back_ (0) 307 i(( cڡru_r_ = `lize ( v )) != 0) 308 `DB_ERROR ( this , "DbEnv::DbEnv", cڡru_r_ , 309 `r_picy ()); 310 } } 319 DbEnv ::~ $DbEnv () 321 DB_ENV * v = `unwp ( this ); 323 i( v ! NULL ) { 324 () v -> `o (env, 0); 325 `nup (); 327 } } 330 DbEnv :: $nup () 332 imp_ = 0; 333 } } 335 DbEnv :: $o ( u_t32_t ags ) 337 t ; 338 DB_ENV * v = `unwp ( this ); 340 t = v -> `o nv, ags ); 344 `nup (); 350 i( t != 0) 351 `DB_ERROR ( this , "DbEnv::o", t , `r_picy ()); 353 ( t ); 354 } } 356 DBENV_METHOD ( dbmove , 357 ( DbTxn * txn , cڡ * me , cڡ * subdb , u_t32_t ags ), 358 ( dbv , unwp ( txn ), me , subdb , ags )) 359 DBENV_METHOD ( dbme , ( DbTxn * txn , cڡ * me , cڡ * subdb , 360 cڡ * wme , u_t32_t ags ), 361 ( dbv , unwp ( txn ), me , subdb , wme , ags )) 363 DbEnv :: $r ( r , cڡ * fm , ...) 365 DB_ENV * v = `unwp ( this ); 367 `DB_REAL_ERR ( v , r , DB_ERROR_SET , 1, fm ); 368 } } 376 DbEnv :: $r_picy () 378 i(( cڡru_ags_ & DB_CXX_NO_EXCEPTIONS ) != 0) { 379 ( ON_ERROR_RETURN ); 382 ( ON_ERROR_THROW ); 384 } } 386 DbEnv :: $rx (cڡ * fm , ...) 388 DB_ENV * v = `unwp ( this ); 390 `DB_REAL_ERR ( v , 0, DB_ERROR_NOT_SET , 1, fm ); 391 } } 393 * DbEnv :: $g_p_ive () const 395 `unwpCڡ ( this )-> p_ive ; 396 } } 398 DBENV_METHOD ( chk , ( u_t32_t ags ), ( dbv , flags)) 399 DBENV_METHOD ( feid_t , (cڡ * fe , u_t32_t ags ), 400 ( dbv , fe , ags )) 401 DBENV_METHOD ( g_home , (cڡ ** hom ), ( dbv , homep)) 402 DBENV_METHOD ( g_ݒ_ags , ( u_t32_t * ag ), ( dbv , flagsp)) 403 DBENV_METHOD ( g_da_ds , (cڡ *** dp ), ( dbv , dirspp)) 405 bo DbEnv :: $is_bigdn () 407 `unwp ( this )-> `is_bigdn (? ue : l ; 408 } } 410 DBENV_METHOD ( g_thad_cou , ( u_t32_t * cou ), ( dbv , count)) 411 DBENV_METHOD ( t_thad_cou , ( u_t32_t cou ), ( dbv , count)) 417 DbEnv :: $lize ( DB_ENV * v ) 419 t ; 421 ϡ_known_r_picy = `r_picy (); 423 i( v == 0) { 425 i(( t = :: `db_v_ (& v , 426 cڡru_ags_ & ~ DB_CXX_NO_EXCEPTIONS )) != 0) 427 ( t ); 429 imp_ = v ; 430 v -> i1_ = this ; 432 } } 435 DBENV_METHOD ( lock_de , ( u_t32_t ags , u_t32_ y , * ab܋d ), 436 ( dbv , ags , y , ab܋d )) 437 DBENV_METHOD_ERR ( lock_g , 438 ( u_t32_t lock , u_t32_ ags , cڡ Dbt * obj , 439 db_lockmode_t lock_mode , DbLock * lock ), 440 ( dbv , lock , ags , obj , lock_mode , & lock -> lock_ ), 441 DbEnv :: ruime_r_lock_g ( this , "DbEnv::lock_g", t , 442 DB_LOCK_GET , lock_mode , obj , * lock , 443 -1, $r_picy ())) 444 `DBENV_METHOD ( lock_id , ( u_t32_t * idp ), ( dbv , idp)) 445 `DBENV_METHOD ( lock_id_ , ( u_t32_t id ), ( dbv , id)) 446 `DBENV_METHOD ( lock_put , ( DbLock * lock ), ( dbv , &lock-> lock_ )) 447 `DBENV_METHOD ( lock_ , ( DB_LOCK_STAT ** p , u_t32_t ags ), 448 ( dbv , p , ags )) 449 `DBENV_METHOD ( lock__t , ( u_t32_t ags ), ( dbv , flags)) 450 `DBENV_METHOD_ERR ( lock_vec , 451 ( u_t32_t lock , u_t32_ ags , DB_LOCKREQ li [], 452 i , DB_LOCKREQ ** i_tued ), 453 ( dbv , lock , ags , li , i , i_tued ), 454 DbEnv :: `ruime_r_lock_g ( this , "DbEnv::lock_vec", t , 455 (* i_tued )-> , (*i_tued)-> mode , 456 Dbt :: `g_Dbt ((* i_tued )-> obj ), `DbLock ((*i_tued)-> lock ), 457 (* i_tued - li , $r_picy ())) 459 `DBENV_METHOD ( log_chive , (** li [], u_t32_t ags ), 460 ( dbv , li , ags )) 462 DbEnv :: $log_com (cڡ DbL * l0 , cڡ DbL * l1 ) 464 (:: `log_com ( l0 , l1 )); 465 } } 468 DBENV_METHOD ( log_curs , ( DbLogc ** cursp , u_t32_t ags ), 469 ( dbv , ( DB_LOGC **) cursp , ags )) 470 DBENV_METHOD ( log_fe , ( DbL * l , * m , size_t n ), 471 ( dbv , l , m , n )) 472 DBENV_METHOD ( log_ush , (cڡ DbL * l ), ( dbv ,sn)) 473 DBENV_METHOD ( log_put , ( DbL * l , cڡ Dbt * da , u_t32_t ags ), 474 ( dbv , l , da , ags )) 476 DbEnv :: $log_tf ( DbTxn * txn , cڡ * fmt , ...) 478 DB_ENV * v = `unwp ( this ); 479 va_li ; 480 t ; 482 `va_t ( , fmt ); 483 t = `__log_tf_ ( v , `unwp ( txn ), fmt , ); 484 `va_d ( ); 486 ( t ); 487 } } 489 DBENV_METHOD ( log_ , ( DB_LOG_STAT ** p , u_t32_t ags ), 490 ( dbv , p , ags )) 491 DBENV_METHOD ( log__t , ( u_t32_t ags ), ( dbv , flags)) 493 DBENV_METHOD ( l_t , (cڡ * fe , u_t32_t ags ), 494 ( dbv , fe , ags )) 496 DbEnv :: $memp_f ( DbMpoFe ** dbm , u_t32_t ags ) 498 DB_ENV * v = `unwp ( this ); 499 t ; 500 DB_MPOOLFILE * mpf ; 502 i( v = NULL ) 503 t = EINVAL ; 505 t = v -> `memp_f nv, & mpf , ags ); 507 i( `DB_RETOK_STD ( t )) { 508 * dbm = w `DbMpoFe (); 509 (* dbm )-> imp_ = mpf ; 511 `DB_ERROR ( this , "DbMpoFe::f_", t , ON_ERROR_UNKNOWN ); 513 ( t ); 514 } } 516 DBENV_METHOD ( memp_gi , 517 ( y , pg_f_ty pg_f , pgout_f_ty pgout_f ), 518 ( dbv , y , pg_f , pgout_f )) 521 DBENV_METHOD ( memp_ , 522 ( DB_MPOOL_STAT ** g , DB_MPOOL_FSTAT *** f , u_t32_t ags ), 523 ( dbv , g , f , ags )) 524 DBENV_METHOD ( memp__t , ( u_t32_t ags ), ( dbv , flags)) 525 DBENV_METHOD ( memp_sync , ( DbL * ), ( dbv , sn)) 526 DBENV_METHOD ( memp_ick , ( p , * nwrٕ ), ( dbv ,ct,wrotep)) 531 DbEnv :: $ݒ (cڡ * db_home , u_t32_t ags , mode ) 533 t ; 534 DB_ENV * v = `unwp ( this ); 536 i( cڡru_r_ != 0) 537 t = cڡru_r_ ; 539 t = v -> `ݒ nv, db_home , ags , mode ); 541 i(! `DB_RETOK_STD ( t )) 542 `DB_ERROR ( this , "DbEnv::ݒ", t , `r_picy ()); 544 ( t ); 545 } } 547 DbEnv :: $move (cڡ * db_home , u_t32_t ags ) 549 t ; 550 DB_ENV * v = `unwp ( this ); 552 t = v -> `move nv, db_home , ags ); 558 `nup (); 560 i( t != 0) 561 `DB_ERROR ( this , "DbEnv::move", t , `r_picy ()); 563 ( t ); 564 } } 572 DbEnv :: $ruime_r ( DbEnv * v , 573 cڡ * Δ , r , r_picy ) 575 i( r_picy = ON_ERROR_UNKNOWN ) 576 r_picy = ϡ_known_r_picy ; 577 i( r_picy = ON_ERROR_THROW ) { 580 r ) { 581 DB_LOCK_DEADLOCK : 583 DbDdlockExi `dl_ex ( Δ ); 584 dl_ex . `t_v ( v ); 585 throw dl_ex ; 587 DB_LOCK_NOTGRANTED : 589 DbLockNGedExi `g_ex ( Δ ); 590 g_ex . `t_v ( v ); 591 throw g_ex ; 593 DB_REP_HANDLE_DEAD : 595 DbRHdDdExi `hd_ex ( Δ ); 596 hd_ex . `t_v ( v ); 597 throw hd_ex ; 599 DB_RUNRECOVERY : 601 DbRunRecovyExi `_ex ( Δ ); 602 _ex . `t_v ( v ); 603 throw _ex ; 607 DbExi `ex ( Δ , r ); 608 ex . `t_v ( v ); 609 throw ex ; 613 } } 617 DbEnv :: $ruime_r_dbt ( DbEnv * v , 618 cڡ * Δ , Dbt * dbt , r_picy ) 620 i( r_picy = ON_ERROR_UNKNOWN ) 621 r_picy = ϡ_known_r_picy ; 622 i( r_picy = ON_ERROR_THROW ) { 625 DbMemyExi `ex ( Δ , dbt ); 626 ex . `t_v ( v ); 627 throw ex ; 629 } } 634 DbEnv :: $ruime_r_lock_g ( DbEnv * v , 635 cڡ * Δ , r , 636 db_lock_t , db_lockmode_t mode , cڡ Dbt * obj , 637 DbLock lock , dex , r_picy ) 639 i( r ! DB_LOCK_NOTGRANTED ) { 640 `ruime_r ( v , Δ , r , r_picy ); 644 i( r_picy = ON_ERROR_UNKNOWN ) 645 r_picy = ϡ_known_r_picy ; 646 i( r_picy = ON_ERROR_THROW ) { 649 DbLockNGedExi `ex ( Δ , , mode , 650 obj , lock , dex ); 651 ex . `t_v ( v ); 652 throw ex ; 654 } } 656 DbEnv :: $_am_r_funi ( 657 cڡ DB_ENV * v , cڡ * efix , cڡ * mesge ) 659 cڡ DbEnv * cxxv = DbEnv:: `g_cڡ_DbEnv ( v ); 660 i( cxxv == 0) { 661 `DB_ERROR (0, 662 "DbEnv::am_r", EINVAL , ON_ERROR_UNKNOWN ); 666 i( cxxv -> r_back_ ) 667 cxxv -> `r_back_ (cxxv, efix , mesge ); 668 i( cxxv -> r_am_ ) { 670 i( efix ) { 671 (* cxxv -> r_am_ << efix ; 672 (* cxxv -> r_am_ ) << (const *)": "; 674 i( mesge ) 675 (* cxxv -> r_am_ << (cڡ *) mesge ; 676 (* cxxv -> r_am_ ) << (const *)"\n"; 678 } } 680 DbEnv :: $_am_mesge_funi (cڡ DB_ENV * v , cڡ * mesge ) 682 cڡ DbEnv * cxxv = DbEnv:: `g_cڡ_DbEnv ( v ); 683 i( cxxv == 0) { 684 `DB_ERROR (0, 685 "DbEnv::am_mesge", EINVAL , ON_ERROR_UNKNOWN ); 689 i( cxxv -> mesge_back_ ) 690 cxxv -> `mesge_back_ (cxxv, mesge ); 691 i( cxxv -> mesge_am_ ) { 693 (* cxxv -> mesge_am_ << (cڡ *) mesge ; 694 (* cxxv -> mesge_am_ ) << (const *)"\n"; 696 } } 699 * DbEnv :: $ ( r ) 701 ( `db_ ( r )); 702 } } 707 DBENV_METHOD ( t_da_d , (cڡ * d ), ( dbv , dir)) 708 DBENV_METHOD ( g_y_ags , ( u_t32_t * ag ), 709 ( dbv , ag )) 710 DBENV_METHOD ( t_y , (cڡ * sswd , u_t32_t ags ), 711 ( dbv , sswd , ags )) 712 DBENV_METHOD_VOID ( g_rfe , ( FILE ** rf ), ( dbv ,rrfilep)) 713 DBENV_METHOD_VOID ( t_rfe , ( FILE * rfe ), ( dbv ,rrfile)) 714 DBENV_METHOD_VOID ( g_fx , (cڡ ** fxp ), ( dbv ,rrpfxp)) 715 DBENV_METHOD_VOID ( t_fx , (cڡ * fx ), ( dbv ,rrpfx)) 716 DBENV_METHOD ( t_rmed_d , ( mode , u_t32_t ags ), 717 ( dbv , mode , ags )) 718 DBENV_METHOD ( g_lg_bsize , ( u_t32_t * bsiz ), ( dbv , bsizep)) 719 DBENV_METHOD ( t_lg_bsize , ( u_t32_t bsize ), ( dbv , bsize)) 720 DBENV_METHOD ( g_lg_d , (cڡ ** dp ), ( dbv , dirp)) 721 DBENV_METHOD ( t_lg_d , (cڡ * d ), ( dbv , dir)) 722 DBENV_METHOD ( g_lg_femode , (* mod ), ( dbv , modep)) 723 DBENV_METHOD ( t_lg_femode , ( mode ), ( dbv , mode)) 724 DBENV_METHOD ( g_lg_max , ( u_t32_t * maxp ), ( dbv , maxp)) 725 DBENV_METHOD ( t_lg_max , ( u_t32_t max ), ( dbv , max)) 726 DBENV_METHOD ( g_lg_gimax , ( u_t32_t * gimaxp ), ( dbv ,egionmaxp)) 727 DBENV_METHOD ( t_lg_gimax , ( u_t32_t gimax ), ( dbv ,egionmax)) 728 DBENV_METHOD ( g_lk_cis , (cڡ u_t8_t ** lk_ci , * lk_maxp ), 729 ( dbv , lk_ci , lk_maxp )) 730 DBENV_METHOD ( t_lk_cis , ( u_t8_t * lk_cis , lk_max ), 731 ( dbv , lk_cis , lk_max )) 732 DBENV_METHOD ( g_lk_de , ( u_t32_t * dep ), ( dbv , detectp)) 733 DBENV_METHOD ( t_lk_de , ( u_t32_t de ), ( dbv , detect)) 734 DBENV_METHOD ( g_lk_max_locks , ( u_t32_t * max_lock ), 735 ( dbv , max_lock )) 736 DBENV_METHOD ( t_lk_max_locks , ( u_t32_t max_locks ), ( dbv , max_lockers)) 737 DBENV_METHOD ( g_lk_max_locks , ( u_t32_t * max_lock ), ( dbv , max_locksp)) 738 DBENV_METHOD ( t_lk_max_locks , ( u_t32_t max_locks ), ( dbv , max_locks)) 739 DBENV_METHOD ( g_lk_max_objes , ( u_t32_t * max_obje ), 740 ( dbv , max_obje )) 741 DBENV_METHOD ( t_lk_max_objes , ( u_t32_t max_objes ), ( dbv , max_objects)) 742 DBENV_METHOD ( g_mp_max_ݒfd , (* maxݒfdp ), ( dbv , maxopenfdp)) 743 DBENV_METHOD ( t_mp_max_ݒfd , ( maxݒfd ), ( dbv , maxopenfd)) 744 DBENV_METHOD ( g_mp_max_wre , (* maxwr , db_timeout_t * maxwre_ ), 745 ( dbv , maxwr , maxwre_ )) 746 DBENV_METHOD ( t_mp_max_wre , ( maxwre , db_timeout_t maxwre_p ), 747 ( dbv , maxwre , maxwre_p )) 748 DBENV_METHOD ( g_mp_mmsize , ( size_t * mmsiz ), ( dbv , mmapsizep)) 749 DBENV_METHOD ( t_mp_mmsize , ( size_t mmsize ), ( dbv , mmapsize)) 750 DBENV_METHOD_VOID ( g_msgfe , ( FILE ** msgf ), ( dbv , msgfilep)) 751 DBENV_METHOD_VOID ( t_msgfe , ( FILE * msgfe ), ( dbv , msgfile)) 752 DBENV_METHOD ( g_tmp_d , (cڡ ** tmp_dp ), ( dbv ,mp_dirp)) 753 DBENV_METHOD ( t_tmp_d , (cڡ * tmp_d ), ( dbv ,mp_dir)) 754 DBENV_METHOD ( g_tx_max , ( u_t32_t * tx_maxp ), ( dbv ,x_maxp)) 755 DBENV_METHOD ( t_tx_max , ( u_t32_t tx_max ), ( dbv ,x_max)) 757 DBENV_METHOD ( _t , ( u_t32_t ags ), ( dbv , flags)) 759 DBENV_METHOD_QUIET ( t_loc , 760 ( db_mloc_f_ty mloc_f , db_loc_f_ty loc_f , 761 db__f_ty _f ), 762 ( dbv , mloc_f , loc_f , _f )) 764 DbEnv :: $t_p_ive (* vue ) 766 `unwp ( this )-> p_ive = vue ; 767 } } 769 DBENV_METHOD ( g_chesize , 770 ( u_t32_t * gby , u_t32_* by , * nch ), 771 ( dbv , gby , by , nch )) 772 DBENV_METHOD ( t_chesize , 773 ( u_t32_t gbys , u_t32_ bys , nche ), 774 ( dbv , gbys , bys , nche )) 775 DBENV_METHOD ( g_che_max , ( u_t32_t * gby , u_t32_* by ), 776 ( dbv , gby , by )) 777 DBENV_METHOD ( t_che_max , ( u_t32_t gbys , u_t32_ bys ), 778 ( dbv , gbys , bys )) 780 DbEnv :: t_r ((* g )(const DbEnv *, const *, const *)) 782 DB_ENV * dbv = `unwp ( this ); 784 r_back_ = g ; 785 r_am_ = 0; 787 dbv -> `t_r (dbv, ( g == 0) ? 0 : 788 _am_r_funi_c ); 789 } } 791 __DB_STD ( oam * DbEnv :: $g_r_am () 793 ( r_am_ ); 794 } } 796 DbEnv :: t_r_am ( __DB_STD ( oam * am ) 798 DB_ENV * dbv = unwp ( this ); 800 r_am_ = am ; 801 r_back_ = 0; 803 dbv -> t_r (dbv, ( am == 0) ? 0 : 804 _am_r_funi_c ); 807 DbEnv :: t_edback ((* g )(DbEnv *, , )) 809 DB_ENV * dbv = `unwp ( this ); 811 edback_back_ = g ; 813 ( dbv -> `t_edback (dbenv, 814 g =0 ? 0 : _edback_r_c )); 815 } } 817 DBENV_METHOD ( g_ags , ( u_t32_t * ag ), ( dbv , flagsp)) 818 DBENV_METHOD ( t_ags , ( u_t32_t ags , off ), ( dbv , flags, onoff)) 820 DbEnv :: t_msg ((* g )(const DbEnv *, const *)) 822 DB_ENV * dbv = `unwp ( this ); 824 mesge_back_ = g ; 825 mesge_am_ = 0; 827 dbv -> `t_msg (dbv, ( g == 0) ? 0 : 828 _am_mesge_funi_c ); 829 } } 831 __DB_STD ( oam * DbEnv :: $g_mesge_am () 833 ( mesge_am_ ); 834 } } 836 DbEnv :: t_mesge_am ( __DB_STD ( oam * am ) 838 DB_ENV * dbv = unwp ( this ); 840 mesge_am_ = am ; 841 mesge_back_ = 0; 843 dbv -> t_msg (dbv, ( am == 0) ? 0 : 844 _am_mesge_funi_c ); 847 DbEnv :: t_nic ((* g )(DbEnv *, )) 849 DB_ENV * dbv = `unwp ( this ); 851 nic_back_ = g ; 853 ( dbv -> `t_nic (dbenv, 854 g =0 ? 0 : _nic_r_c )); 855 } } 857 DbEnv :: t_evt_nify ((* g )(DbEnv *, u_t32_t , *)) 859 DB_ENV * dbv = `unwp ( this ); 861 evt_func_back_ = g ; 863 ( dbv -> `t_evt_nify (dbenv, 864 g =0 ? 0 : _evt_func_r_c )); 865 } } 867 DBENV_METHOD ( t_c_rv , 868 (* , * ho , tc , sc , u_t32_t ags ), 869 ( dbv , , ho , tc , sc , ags )) 870 DBENV_METHOD ( g_shm_key , (* shm_keyp ), ( dbv , shm_keyp)) 871 DBENV_METHOD ( t_shm_key , ( shm_key ), ( dbv , shm_key)) 873 DbEnv :: t_p_dich 874 ((* g )( DbEnv *, Dbt *, DbL *, db_cs )) 876 DB_ENV * dbv = `unwp ( this ); 877 t ; 879 p_dich_back_ = g ; 880 i(( t = dbv -> `t_p_dich (dbenv, 881 g =0 ? 0 : _p_dich_r_c )) != 0) 882 `DB_ERROR ( this , "DbEnv::t_p_dich", t , `r_picy ()); 884 ( t ); 885 } } 887 DbEnv :: t_ilive 888 ((* g )( DbEnv *, pid_t , db_thadid_t , u_t32_t )) 890 DB_ENV * dbv = `unwp ( this ); 891 t ; 893 ilive_back_ = g ; 894 i(( t = dbv -> `t_ilive (dbenv, 895 g =0 ? 0 : _ilive_r_c )) != 0) 896 `DB_ERROR ( this , "DbEnv::t_ilive", t , `r_picy ()); 898 ( t ); 899 } } 901 DBENV_METHOD ( g_tx_timeamp , ( time_t * timeamp ), ( dbv ,imestamp)) 902 DBENV_METHOD ( t_tx_timeamp , ( time_t * timeamp ), ( dbv ,imestamp)) 903 DBENV_METHOD ( g_vbo , ( u_t32_t which , * of ), 904 ( dbv , which , of )) 905 DBENV_METHOD ( t_vbo , ( u_t32_t which , off ), ( dbv , which, onoff)) 907 DBENV_METHOD ( mux_loc , 908 ( u_t32_t ags , db_mux_t * muxp ), ( dbv , flags, mutexp)) 909 DBENV_METHOD ( mux_ , ( db_mux_t mux ), ( dbv , mutex)) 910 DBENV_METHOD ( mux_g_ign , ( u_t32_t * gp ), ( dbv ,rgp)) 911 DBENV_METHOD ( mux_g_emt , ( u_t32_t * gp ), ( dbv ,rgp)) 912 DBENV_METHOD ( mux_g_max , ( u_t32_t * gp ), ( dbv ,rgp)) 913 DBENV_METHOD ( mux_g_s_s , ( u_t32_t * gp ), ( dbv ,rgp)) 914 DBENV_METHOD ( mux_lock , ( db_mux_t mux ), ( dbv , mutex)) 915 DBENV_METHOD ( mux_t_ign , ( u_t32_t g ), ( dbv ,rg)) 916 DBENV_METHOD ( mux_t_emt , ( u_t32_t g ), ( dbv ,rg)) 917 DBENV_METHOD ( mux_t_max , ( u_t32_t g ), ( dbv ,rg)) 918 DBENV_METHOD ( mux_t_s_s , ( u_t32_t g ), ( dbv ,rg)) 919 DBENV_METHOD ( mux_ , 920 ( DB_MUTEX_STAT ** p , u_t32_t ags ), ( dbv , statp, flags)) 921 DBENV_METHOD ( mux__t , ( u_t32_t ags ), ( dbv , flags)) 922 DBENV_METHOD ( mux_uock , ( db_mux_t mux ), ( dbv , mutex)) 924 DbEnv :: t_thad_id ((* g )(DbEnv *, pid_t *, db_thadid_t *)) 926 DB_ENV * dbv = `unwp ( this ); 927 t ; 929 thad_id_back_ = g ; 930 i(( t = dbv -> `t_thad_id (dbenv, 931 g =0 ? 0 : _thad_id_r_c )) != 0) 932 `DB_ERROR ( this , "DbEnv::t_thad_id", t , `r_picy ()); 934 ( t ); 935 } } 937 DbEnv :: t_thad_id_rg ( 938 *(* g )( DbEnv *, pid_t , db_thadid_t , *)) 940 DB_ENV * dbv = unwp ( this ); 941 t ; 943 thad_id_rg_back_ = g ; 944 i(( t = dbv -> t_thad_id_rg (dbenv, 945 g =0 ? 0 : _thad_id_rg_r_c )) != 0) 946 DB_ERROR ( this , "DbEnv::t_thad_id_rg", t , 947 r_picy ()); 949 ( t ); 952 DbEnv :: $cdsgroup_beg ( DbTxn ** tid ) 954 DB_ENV * v = `unwp ( this ); 955 DB_TXN * txn ; 956 t ; 958 t = v -> `cdsgroup_beg nv, & txn ); 959 i( `DB_RETOK_STD ( t )) 960 * tid = w `DbTxn ( txn ); 962 `DB_ERROR ( this , "DbEnv::cdsgroup_beg", t , `r_picy ()); 964 ( t ); 965 } } 967 DbEnv :: $txn_beg ( DbTxn * pid , DbTx** tid , u_t32_t ags ) 969 DB_ENV * v = `unwp ( this ); 970 DB_TXN * txn ; 971 t ; 973 t = v -> `txn_beg nv, `unwp ( pid ), & txn , ags ); 974 i( `DB_RETOK_STD ( t )) 975 * tid = w `DbTxn ( txn ); 977 `DB_ERROR ( this , "DbEnv::txn_beg", t , `r_picy ()); 979 ( t ); 980 } } 982 DBENV_METHOD ( txn_checkpot , ( u_t32_t kby , u_t32_ m , u_t32_ ags ), 983 ( dbv , kby , m , ags )) 985 DbEnv :: $txn_cov ( DbPi * li , cou , 986 * , u_t32_t ags ) 988 DB_ENV * dbv = `unwp ( this ); 989 DB_PREPLIST * c_li ; 990 i ; 991 t ; 998 i( cou <= 0) 999 t = EINVAL ; 1001 t = `__os_mloc ( dbv , ( DB_PREPLIST * cou , 1002 & c_li ); 1004 i( t != 0) { 1005 `DB_ERROR ( this , "DbEnv::txn_cov", t , `r_picy ()); 1006 ( t ); 1009 i(( t = 1010 dbv -> `txn_cov (dbv, c_li , cou , , ags )) != 0) { 1011 `__os_ ( dbv , c_li ); 1012 `DB_ERROR ( this , "DbEnv::txn_cov", t , `r_picy ()); 1013 ( t ); 1016 i = 0; i < * ; i++) { 1017 li [ i ]. txn = w `DbTxn (); 1018 li [ i ]. txn -> imp_ = c_li [i].txn; 1019 `memy ( li [ i ]. gid , c_li [i].gid, 1020 ( li [ i ]. gid )); 1023 `__os_ ( dbv , c_li ); 1026 } } 1028 DBENV_METHOD ( txn_ , ( DB_TXN_STAT ** p , u_t32_t ags ), 1029 ( dbv , p , ags )) 1030 DBENV_METHOD ( txn__t , ( u_t32_t ags ), ( dbv , flags)) 1032 DbEnv :: p_t_t ( myid , (* g )(DbEnv *, 1033 cڡ Dbt *, cڡ Db*, cڡ DbL *, , u_t32_t )) 1035 DB_ENV * dbv = `unwp ( this ); 1036 t ; 1038 p_nd_back_ = g ; 1039 i(( t = dbv -> `p_t_t (dbv, myid , 1040 g =0 ? 0 : _p_nd_r_c )) != 0) 1041 `DB_ERROR ( this , "DbEnv::p_t_t", t , `r_picy ()); 1043 ( t ); 1044 } } 1046 DBENV_METHOD ( p_e , ( nses , nves , u_t32_t ags ), 1047 ( dbv , nses , nves , ags )) 1048 DBENV_METHOD ( p_ush , (), ( dbv )) 1049 DBENV_METHOD ( p_g_cfig , ( u_t32_t which , * of ), 1050 ( dbv , which , of )) 1051 DBENV_METHOD ( t_p_que , ( u_t32_t m , u_t32_ max ), ( dbv , min, max)) 1053 DbEnv :: $p_oss_mesge ( Dbt * cڌ , 1054 Dbt * c , id , DbL * t_lp ) 1056 DB_ENV * dbv = `unwp ( this ); 1057 t ; 1059 t = dbv -> `p_oss_mesge (dbv, cڌ , c , id , t_lp ); 1060 i(! `DB_RETOK_REPPMSG ( t )) 1061 `DB_ERROR ( this , "DbEnv::p_oss_mesge", t , 1062 `r_picy ()); 1064 ( t ); 1065 } } 1067 DBENV_METHOD ( p_t_cfig , 1068 ( u_t32_t which , off ), ( dbv , which, onoff)) 1069 DBENV_METHOD ( p_t , 1070 ( Dbt * cook , u_t32_t ags ), 1071 ( dbv , ( DBT *) cook , ags )) 1073 DBENV_METHOD ( p_ , ( DB_REP_STAT ** p , u_t32_t ags ), 1074 ( dbv , p , ags )) 1075 DBENV_METHOD ( p__t , ( u_t32_t ags ), ( dbv , flags)) 1076 DBENV_METHOD ( p_sync , ( u_t32_t ags ), ( dbv , flags)) 1078 DBENV_METHOD ( p_t_a , ( u_t32_t ock_s_ , u_t32_ ags ), 1079 ( dbv , ock_s_ , ags )) 1080 DBENV_METHOD ( p_g_lim , ( u_t32_t * gby , u_t32_* by ), 1081 ( dbv , gby , by )) 1082 DBENV_METHOD ( p_t_lim , ( u_t32_t gbys , u_t32_ bys ), 1083 ( dbv , gbys , bys )) 1087 DBENV_METHOD ( p_g_nses , (* n ), ( dbv ,)) 1088 DBENV_METHOD ( p_t_nses , ( n ), ( dbv ,)) 1089 DBENV_METHOD ( p_g_iܙy , (* iܙy ), 1090 ( dbv , iܙy )) 1091 DBENV_METHOD ( p_t_iܙy , ( iܙy ), 1092 ( dbv , iܙy )) 1093 DBENV_METHOD ( p_g_timeout , ( which , db_timeout_t * timeout ), 1094 ( dbv , which , timeout )) 1095 DBENV_METHOD ( p_t_timeout , ( which , db_timeout_t timeout ), 1096 ( dbv , which , timeout )) 1097 DBENV_METHOD ( pmgr_add_me_se , (cڡ * ho , u_t16_t pt , 1098 * eidp , u_t32_t ags ), ( dbv , ho , pt ,idp, flags)) 1099 DBENV_METHOD ( pmgr_g_ack_picy , (* picy ), ( dbv ,olicy)) 1100 DBENV_METHOD ( pmgr_t_ack_picy , ( picy ), ( dbv ,olicy)) 1101 DBENV_METHOD ( pmgr_t_lol_se , (cڡ * ho , u_t16_t pt , 1102 u_t32_t ags ), ( dbv , ho , pt , flags)) 1103 DBENV_METHOD ( pmgr_se_li , ( u_t * coup , DB_REPMGR_SITE ** lip ), 1104 ( dbv , coup , lip )) 1105 DBENV_METHOD ( pmgr_t , ( hads , u_t32_t ags ), 1106 ( dbv , hads , ags )) 1107 DBENV_METHOD ( pmgr_ , ( DB_REPMGR_STAT ** p , u_t32_t ags ), 1108 ( dbv , p , ags )) 1109 DBENV_METHOD ( pmgr__t , ( u_t32_t ags ), ( dbv , flags)) 1113 DBENV_METHOD ( g_timeout , 1114 ( db_timeout_t * timeou , u_t32_t ags ), 1115 ( dbv , timeou , ags )) 1116 DBENV_METHOD ( t_timeout , 1117 ( db_timeout_t timeout , u_t32_t ags ), 1118 ( dbv , timeout , ags )) 1121 * DbEnv :: $vsi (* maj , * m , * tch ) 1123 ( `db_vsi ( maj , m , tch )); 1124 } } 1127 DbEnv *DbEnv:: $wp_DB_ENV ( DB_ENV * dbv ) 1129 DbEnv * wed_v = `g_DbEnv ( dbv ); 1130 ( wed_v ! NULL ? wed_v : w `DbEnv ( dbv , 0); 1131 } } @../cxx/cxx_except.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 cڡ gMAX_DESCRIPTION_LENGTH = 1024; 22 * $dupSg (cڡ * s ) 24 * r = w [ ` ( s )+1]; 25 `ry ( r , s ); 26 ( r ); 27 } } 35 gDbExi ::~ $DbExi ( $throw () 37 de [] wh_ ; 38 } } 40 gDbExi :: $DbExi ( r ) 41 : `r_ ( r ) 42 , $v_ (0) 44 `desibe (0, 0); 45 } } 47 gDbExi :: $DbExi (cڡ * desti ) 48 : `r_ (0) 49 , $v_ (0) 51 `desibe (0, desti ); 52 } } 54 gDbExi :: $DbExi (cڡ * desti , r ) 55 : `r_ ( r ) 56 , $v_ (0) 58 `desibe (0, desti ); 59 } } 61 gDbExi :: $DbExi (cڡ * efix , cڡ * desti , r ) 62 : `r_ ( r ) 63 , $v_ (0) 65 `desibe ( efix , desti ); 66 } } 68 gDbExi :: $DbExi (cڡ DbExi & th ) 69 : `__DB_STD ( exi )() 70 , `wh_ ( `dupSg ( th . wh_ )) 71 , `r_ ( th . r_ ) 72 , $v_ (0) 74 } } 76 gDbExi &DbExi:: ݔ = (cڡ DbExi & th ) 78 i( this !& th ) { 79 r_ = th .err_; 80 gde [] gwh_ ; 81 gwh_ = dupSg ( th . wh_ ); 83 (* gthis ); 86 gDbExi :: $desibe (cڡ * efix , cڡ * desti ) 88 * msgbuf , * p , * d ; 90 msgbuf = w [ MAX_DESCRIPTION_LENGTH ]; 91 p = msgbuf ; 92 d = msgbuf + MAX_DESCRIPTION_LENGTH - 1; 94 i( efix ! NULL ) { 95 `y ( p , efix , (< d ) ?nd -: 0); 96 p + ` ( efix ); 97 `y ( p , ": ", (< d ) ?nd -: 0); 98 p += 2; 100 i( desti ! NULL ) { 101 `y ( p , desti , (< d ) ?nd -: 0); 102 p + ` ( desti ); 103 i( r_ != 0) { 104 `y ( p , ": ", (< d ) ?nd -: 0); 105 p += 2; 108 i( r_ != 0) { 109 `y ( p , `db_ ( r_ ), (< d ) ?nd -: 0); 110 p + ` ( `db_ ( r_ )); 117 i( p > d ) 118 * d = '\0'; 120 wh_ = `dupSg ( msgbuf ); 121 de [] msgbuf ; 122 } } 124 gDbExi :: $g_o () const 126 ( r_ ); 127 } } 129 cڡ * gDbExi :: $wh (cڡ $throw () 131 ( wh_ ); 132 } } 134 DbEnv * gDbExi :: $g_v () const 136 v_ ; 137 } } 139 gDbExi :: $t_v ( DbEnv * v ) 141 v_ v ; 142 } } 150 cڡ * gmemy_r_desc = "Dbtotargenough forvailable data"; 151 gDbMemyExi ::~ $DbMemyExi ( $throw () 153 } } 155 DbMemyExi :: $DbMemyExi ( Dbt * dbt ) 156 : `DbExi ( memy_r_desc , DB_BUFFER_SMALL ) 157 , $dbt_ ( dbt ) 159 } } 161 gDbMemyExi :: $DbMemyExi (cڡ * efix , Dbt * dbt ) 162 : `DbExi ( efix , memy_r_desc , DB_BUFFER_SMALL ) 163 , $dbt_ ( dbt ) 165 } } 167 gDbMemyExi :: $DbMemyExi (cڡ DbMemyExi & th ) 168 : `DbExi ( th ) 169 , $dbt_ ( th . dbt_ ) 171 } } 173 gDbMemyExi 174 & gDbMemyExi :: ݔ =(cڡ DbMemyExi & th ) 176 i( this !& th ) { 177 DbExi :: ݔ =( th ); 178 gdbt_ = th . dbt_ ; 180 (* gthis ); 183 Dbt * gDbMemyExi :: $g_dbt () const 185 ( dbt_ ); 186 } } 194 gDbDdlockExi ::~ $DbDdlockExi ( $throw () 196 } } 198 DbDdlockExi :: $DbDdlockExi (cڡ * desti ) 199 : $DbExi ( desti , DB_LOCK_DEADLOCK ) 201 } } 203 gDbDdlockExi :: $DbDdlockExi (cڡ DbDdlockExi & th ) 204 : $DbExi ( th ) 206 } } 208 DbDdlockExi 209 & DbDdlockExi :: ݔ =(cڡ DbDdlockExi & th ) 211 i( this !& th ) 212 DbExi :: ݔ =( th ); 213 (* gthis ); 222 gDbLockNGedExi ::~ $DbLockNGedExi ( $throw () 224 de lock_ ; 225 } } 227 gDbLockNGedExi :: $DbLockNGedExi (cڡ * efix , 228 db_lock_t , db_lockmode_t mode , cڡ Dbt * obj , cڡ DbLock lock , 229 dex ) 230 : `DbExi ( efix , DbEnv :: ` ( DB_LOCK_NOTGRANTED ), 231 DB_LOCK_NOTGRANTED ) 232 , `_ ( ) 233 , `mode_ ( mode ) 234 , `obj_ ( obj ) 235 , `lock_ ( w `DbLock ( lock )) 236 , $dex_ ( dex ) 238 } } 240 gDbLockNGedExi :: $DbLockNGedExi (cڡ * desti ) 241 : `DbExi ( desti , DB_LOCK_NOTGRANTED ) 242 , `_ ( DB_LOCK_GET ) 243 , `mode_ ( DB_LOCK_NG ) 244 , `obj_ ( NULL ) 245 , `lock_ ( NULL ) 246 , $dex_ (0) 248 } } 250 gDbLockNGedExi :: DbLockNGedExi 251 (cڡ DbLockNGedExi & th ) 252 : $DbExi ( th ) 254 _ = th .op_; 255 mode_ = th .mode_; 256 obj_ = th .obj_; 257 lock_ = ( th .lock_ ! NULL ? w `DbLock (*that.lock_) : NULL; 258 dex_ = th .index_; 259 } } 261 gDbLockNGedExi 262 & gDbLockNGedExi :: ݔ =(cڡ DbLockNGedExi & th ) 264 i( this !& th ) { 265 DbExi :: ݔ =( th ); 266 g_ = th . _ ; 267 gmode_ = th . mode_ ; 268 gobj_ = th . obj_ ; 269 glock_ = ( th . lock_ ! NULL ? w DbLock (*that.lock_) : NULL; 270 gdex_ = th . dex_ ; 272 (* gthis ); 275 db_lock_t gDbLockNGedExi :: $g_ () const 277 _ ; 278 } } 280 db_lockmode_t gDbLockNGedExi :: $g_mode () const 282 mode_ ; 283 } } 285 cڡ Dbt * gDbLockNGedExi :: $g_obj () const 287 obj_ ; 288 } } 290 DbLock * gDbLockNGedExi :: $g_lock () const 292 lock_ ; 293 } } 295 gDbLockNGedExi :: $g_dex () const 297 dex_ ; 298 } } 306 gDbRHdDdExi ::~ $DbRHdDdExi ( $throw () 308 } } 310 DbRHdDdExi :: $DbRHdDdExi (cڡ * desti ) 311 : $DbExi ( desti , DB_REP_HANDLE_DEAD ) 313 } } 315 gDbRHdDdExi :: DbRHdDdExi 316 (cڡ DbRHdDdExi & th ) 317 : $DbExi ( th ) 319 } } 321 DbRHdDdExi 322 & DbRHdDdExi :: ݔ =(cڡ DbRHdDdExi & th ) 324 i( this !& th ) 325 DbExi :: ݔ =( th ); 326 (* gthis ); 335 gDbRunRecovyExi ::~ $DbRunRecovyExi ( $throw () 337 } } 339 DbRunRecovyExi :: $DbRunRecovyExi (cڡ * desti ) 340 : $DbExi ( desti , DB_RUNRECOVERY ) 342 } } 344 gDbRunRecovyExi :: DbRunRecovyExi 345 (cڡ DbRunRecovyExi & th ) 346 : $DbExi ( th ) 348 } } 350 DbRunRecovyExi 351 & DbRunRecovyExi :: ݔ =(cڡ DbRunRecovyExi & th ) 353 i( this !& th ) 354 DbExi :: ݔ =( th ); 355 (* gthis ); @../cxx/cxx_lock.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 22 gDbLock :: $DbLock ( DB_LOCK vue ) 23 : $lock_ ( vue ) 25 } } 27 DbLock :: $DbLock () 29 `memt (& lock_ , 0, ( DB_LOCK )); 30 } } 32 gDbLock :: $DbLock (cڡ DbLock & th ) 33 : $lock_ ( th . lock_ ) 35 } } 37 DbLock &DbLock:: ݔ = (cڡ DbLock & th ) 39 lock_ = th .lock_; 40 (* gthis ); @../cxx/cxx_logc.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 ~"dbc/db_ge.h " 17 ~"dbc_auto/db_auto.h " 18 ~"dbc_auto/d_auto.h " 19 ~"dbc/db_dich.h " 20 ~"dbc_auto/db_ext.h " 21 ~"dbc_auto/comm_ext.h " 26 gDbLogc ::~ $DbLogc () 28 } } 31 DbLogc :: $o ( u_t32_t _ags ) 33 DB_LOGC * logc = this ; 34 t ; 35 DbEnv * dbv2 = DbEnv:: `g_DbEnv ( logc -> dbv ); 37 t = logc -> `o ogc, _ags ); 39 i(! `DB_RETOK_STD ( t )) 40 `DB_ERROR ( dbv2 , "DbLogc::o", t , ON_ERROR_UNKNOWN ); 42 ( t ); 43 } } 46 gDbLogc :: $g ( DbL * g_l , Dbt * da , u_t32_t _ags ) 48 DB_LOGC * logc = this ; 49 t ; 51 t = logc -> `g ogc, g_l , da , _ags ); 53 i(! `DB_RETOK_LGGET ( t )) { 54 i( t = DB_BUFFER_SMALL ) 55 `DB_ERROR_DBT ( DbEnv :: `g_DbEnv ( logc -> dbv ), 56 "DbLogc::g", da , ON_ERROR_UNKNOWN ); 58 `DB_ERROR ( DbEnv :: `g_DbEnv ( logc -> dbv ), 59 "DbLogc::g", t , ON_ERROR_UNKNOWN ); 62 ( t ); 63 } } 66 gDbLogc :: $vsi ( u_t32_t * vsip , u_t32_ _ags ) 68 DB_LOGC * logc = this ; 69 t ; 71 t = logc -> `vsi ogc, vsip , _ags ); 73 i(! `DB_RETOK_LGGET ( t )) 74 `DB_ERROR ( DbEnv :: `g_DbEnv ( logc -> dbv ), 75 "DbLogc::vsi", t , ON_ERROR_UNKNOWN ); 77 ( t ); 78 } } @../cxx/cxx_mpool.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 22 #DB_MPOOLFILE_METHOD ( _me , _gec , _gli , _tok ) \ 23 DbMpoFe :: _me _gec \ 25 t ; \ 26 DB_MPOOLFILE * mpf = `unwp ( this ); \ 28 i( mpf = NULL ) \ 29 t = EINVAL ; \ 31 t = mpf -> _me _gli ; \ 32 i(! `_tok ( t )) \ 33 `DB_ERROR ( DbEnv :: `g_DbEnv ( mpf -> dbv ), \ 34 "DbMpoFe::"#_me, t , ON_ERROR_UNKNOWN ); \ 35 ( t ); \ 36 } ) 38 #DB_MPOOLFILE_METHOD_VOID ( _me , _gec , _gli ) \ 39 DbMpoFe :: _me _gec \ 41 DB_MPOOLFILE * mpf = `unwp ( this ); \ 43 mpf -> _me _gli ; \ 44 } ) 52 gDbMpoFe :: $DbMpoFe () 53 : $imp_ (0) 55 } } 57 DbMpoFe ::~ $DbMpoFe () 59 } } 61 DbMpoFe :: $o ( u_t32_t ags ) 63 DB_MPOOLFILE * mpf = `unwp ( this ); 64 t ; 65 DbEnv * dbv = DbEnv:: `g_DbEnv ( mpf ->dbenv); 67 i( mpf = NULL ) 68 t = EINVAL ; 70 t = mpf -> `o (mpf, ags ); 72 imp_ = 0; 76 de this ; 78 i(! `DB_RETOK_STD ( t )) 79 `DB_ERROR ( dbv , "DbMpoFe::o", t , ON_ERROR_UNKNOWN ); 81 ( t ); 82 } } 84 DB_MPOOLFILE_METHOD ( g , 85 ( db_pgno_t * pgnddr , DbTxn * txn , u_t32_t ags , * g ), 86 ( mpf , pgnddr , unwp ( txn ), ags , g ), DB_RETOK_MPGET ) 87 DB_MPOOLFILE_METHOD ( ݒ , 88 (cڡ * fe , u_t32_t ags , mode , size_t gesize ), 89 ( mpf , fe , ags , mode , gesize ), DB_RETOK_STD ) 90 DB_MPOOLFILE_METHOD ( put , 91 (* pgaddr , DB_CACHE_PRIORITY iܙy , u_t32_t ags ), 92 ( mpf , pgaddr , iܙy , ags ), DB_RETOK_STD ) 93 DB_MPOOLFILE_METHOD ( g_r_n , ( u_t32_t * ), 94 ( mpf , ), DB_RETOK_STD ) 95 DB_MPOOLFILE_METHOD ( t_r_n , ( u_t32_t n ), 96 ( mpf , n ), DB_RETOK_STD ) 97 DB_MPOOLFILE_METHOD ( g_feid , ( u_t8_t * feid ), 98 ( mpf , feid ), DB_RETOK_STD ) 99 DB_MPOOLFILE_METHOD ( t_feid , ( u_t8_t * feid ), 100 ( mpf , feid ), DB_RETOK_STD ) 101 DB_MPOOLFILE_METHOD ( g_ags , ( u_t32_t * ag ), 102 ( mpf , ag ), DB_RETOK_STD ) 103 DB_MPOOLFILE_METHOD ( t_ags , ( u_t32_t ags , off ), 104 ( mpf , ags , off ), DB_RETOK_STD ) 105 DB_MPOOLFILE_METHOD ( g_y , (* yp ), 106 ( mpf , yp ), DB_RETOK_STD ) 107 DB_MPOOLFILE_METHOD ( t_y , ( y ), 108 ( mpf , y ), DB_RETOK_STD ) 109 DB_MPOOLFILE_METHOD ( g_ϡ_pgno , ( db_pgno_t * pgn ), 110 ( mpf , pgn ), DB_RETOK_STD ) 111 DB_MPOOLFILE_METHOD ( g_l_offt , ( t32_t * off ), 112 ( mpf , off ), DB_RETOK_STD ) 113 DB_MPOOLFILE_METHOD ( t_l_offt , ( t32_t offt ), 114 ( mpf , offt ), DB_RETOK_STD ) 115 DB_MPOOLFILE_METHOD ( g_maxsize , ( u_t32_t * gby , u_t32_* by ), 116 ( mpf , gby , by ), DB_RETOK_STD ) 117 DB_MPOOLFILE_METHOD ( t_maxsize , ( u_t32_t gbys , u_t32_ bys ), 118 ( mpf , gbys , bys ), DB_RETOK_STD ) 119 DB_MPOOLFILE_METHOD ( g_pgcook , ( DBT * dbt ), 120 ( mpf , dbt ), DB_RETOK_STD ) 121 DB_MPOOLFILE_METHOD ( t_pgcook , ( DBT * dbt ), 122 ( mpf , dbt ), DB_RETOK_STD ) 123 DB_MPOOLFILE_METHOD ( g_iܙy , ( DB_CACHE_PRIORITY * iܙyp ), 124 ( mpf , iܙyp ), DB_RETOK_STD ) 125 DB_MPOOLFILE_METHOD ( t_iܙy , ( DB_CACHE_PRIORITY iܙy ), 126 ( mpf , iܙy ), DB_RETOK_STD ) 127 DB_MPOOLFILE_METHOD ( sync , (), 128 ( mpf ), DB_RETOK_STD ) @../cxx/cxx_multi.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 15 gDbMuɝIt :: $DbMuɝIt (cڡ Dbt & dbt ) 16 : `da_ (( u_t8_t *) dbt . `g_da ()), 17 `p_ (( u_t32_t *)( da_ + dbt . `g_un () - (u_int32_t))) 19 } } 21 bo gDbMuɝDaIt :: $xt ( Dbt & da ) 23 i(* p_ =( u_t32_t )-1) { 24 da . `t_da (0); 25 da . `t_size (0); 26 p_ = 0; 28 da . `t_da ( da_ + * p_ --); 29 da . `t_size (* p_ --); 30 i( da . `g_size (=0 && da. `g_da (= da_ ) 31 da . `t_da (0); 33 ( p_ != 0); 34 } } 36 bo gDbMuɝKeyDaIt :: $xt ( Dbt & key , Db& da ) 38 i(* p_ =( u_t32_t )-1) { 39 key . `t_da (0); 40 key . `t_size (0); 41 da . `t_da (0); 42 da . `t_size (0); 43 p_ = 0; 45 key . `t_da ( da_ + * p_ --); 46 key . `t_size (* p_ --); 47 da . `t_da ( da_ + * p_ --); 48 da . `t_size (* p_ --); 50 ( p_ != 0); 51 } } 53 bo gDbMuɝReoDaIt :: $xt ( db_o_t & o , Dbt & da ) 55 i(* p_ =( u_t32_t )0) { 56 o = 0; 57 da . `t_da (0); 58 da . `t_size (0); 59 p_ = 0; 61 o = * p_ --; 62 da . `t_da ( da_ + * p_ --); 63 da . `t_size (* p_ --); 65 ( p_ != 0); 66 } } @../cxx/cxx_seq.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 22 #DBSEQ_METHOD ( _me , _gec , _gli , _deru ) \ 23 DbSequ :: _me _gec \ 25 t ; \ 26 DB_SEQUENCE * q = `unwp ( this ); \ 27 DbEnv * dbv = DbEnv:: `g_DbEnv ( q -> q_dbp ->dbenv); \ 29 t = q -> _me _gli ; \ 30 i( _deru ) \ 31 imp_ = 0; \ 32 i(! `DB_RETOK_STD ( t )) \ 33 `DB_ERROR ( dbv , \ 34 "DbSequ::" #_me, t , ON_ERROR_UNKNOWN ); \ 35 ( t ); \ 36 } ) 38 gDbSequ :: $DbSequ ( Db * db , u_t32_t ags ) 39 : $imp_ (0) 41 DB_SEQUENCE * q ; 42 t ; 44 i(( t = `db_qu_ (& q , `unwp ( db ), ags )) != 0) 45 `DB_ERROR ( db -> `g_v (), "DbSequ::DbSequ", t , 46 ON_ERROR_UNKNOWN ); 48 imp_ = q ; 49 q -> i_ = this ; 51 } } 53 gDbSequ :: $DbSequ ( DB_SEQUENCE * q ) 54 : $imp_ ( q ) 56 q -> i_ = this ; 57 } } 59 gDbSequ ::~ $DbSequ () 61 DB_SEQUENCE * q ; 63 q = `unwp ( this ); 64 i( q ! NULL ) 65 () q -> `o (seq, 0); 66 } } 68 DBSEQ_METHOD ( ݒ , ( DbTxn * txnid , Dbt * key , u_t32_t ags ), 69 ( q , unwp ( txnid ), key , ags ), 0) 70 DBSEQ_METHOD ( l_vue , ( db_q_t vue ), ( q , value), 0) 71 DBSEQ_METHOD ( o , ( u_t32_t ags ), ( q , flags), 1) 72 DBSEQ_METHOD ( move , ( DbTxn * txnid , u_t32_t ags ), 73 ( q , unwp ( txnid ), ags ), 1) 74 DBSEQ_METHOD ( , ( DB_SEQUENCE_STAT ** , u_t32_t ags ), 75 ( q , , ags ), 0) 76 DBSEQ_METHOD ( _t , ( u_t32_t ags ), ( q , flags), 0) 78 DBSEQ_METHOD ( g , 79 ( DbTxn * txnid , t32_t d , db_q_t * , u_t32_t ags ), 80 ( q , unwp ( txnid ), d , , ags ), 0) 81 DBSEQ_METHOD ( g_chesize , ( t32_t * siz ), ( q , sizep), 0) 82 DBSEQ_METHOD ( t_chesize , ( t32_t size ), ( q , size), 0) 83 DBSEQ_METHOD ( g_ags , ( u_t32_t * ag ), ( q , flagsp), 0) 84 DBSEQ_METHOD ( t_ags , ( u_t32_t ags ), ( q , flags), 0) 85 DBSEQ_METHOD ( g_nge , ( db_q_t * mp , db_q_* maxp ), ( q , minp, maxp), 0) 86 DBSEQ_METHOD ( t_nge , ( db_q_t m , db_q_ max ), ( q , min, max), 0) 88 Db * gDbSequ :: $g_db () 90 DB_SEQUENCE * q = `unwp ( this ); 91 DB * db ; 92 () q -> `g_db (q, & db ); 93 Db :: `g_Db ( db ); 94 } } 96 Dbt * gDbSequ :: $g_key () 98 DB_SEQUENCE * q = `unwp ( this ); 99 `memt (& key_ , 0, ( DBT )); 100 () q -> `g_key (q, & key_ ); 101 Dbt :: `g_Dbt (& key_ ); 102 } } 105 DbSequ * gDbSequ :: $wp_DB_SEQUENCE ( DB_SEQUENCE * q ) 107 DbSequ * wed_q = `g_DbSequ ( q ); 108 ( wed_q ! NULL ? wed_q : w `DbSequ ( q ); 109 } } @../cxx/cxx_txn.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"db_cxx.h " 14 ~"dbc/cxx_t.h " 16 ~"dbc/txn.h " 24 #DBTXN_METHOD ( _me , _de , _gec , _gli ) \ 25 DbTxn :: _me _gec \ 27 t ; \ 28 DB_TXN * txn = `unwp ( this ); \ 29 DbEnv * dbv = DbEnv:: `g_DbEnv ( txn -> mg ->dbenv); \ 31 t = txn -> _me _gli ; \ 33 i( _de ) \ 34 de this ; \ 35 i(! `DB_RETOK_STD ( t )) \ 36 `DB_ERROR ( dbv , "DbTxn::" #_me, t , ON_ERROR_UNKNOWN ); \ 37 ( t ); \ 38 } ) 41 gDbTxn :: $DbTxn () 42 : $imp_ (0) 44 } } 46 DbTxn :: $DbTxn ( DB_TXN * txn ) 47 : $imp_ ( txn ) 49 txn -> i_ = this ; 50 } } 52 gDbTxn ::~ $DbTxn () 54 } } 56 DBTXN_METHOD ( abt , 1, (), ( txn )) 57 DBTXN_METHOD ( comm , 1, ( u_t32_t ags ), ( txn , flags)) 58 DBTXN_METHOD ( disrd , 1, ( u_t32_t ags ), ( txn , flags)) 60 u_t32_t gDbTxn :: $id () 62 DB_TXN * txn ; 64 txn = `unwp ( this ); 65 ( txn -> `id (txn)); 66 } } 68 DBTXN_METHOD ( g_me , 0, (cڡ ** m ), ( txn ,amep)) 69 DBTXN_METHOD ( e , 0, ( u_t8_t * gid ), ( txn , gid)) 70 DBTXN_METHOD ( t_me , 0, (cڡ * me ), ( txn ,ame)) 71 DBTXN_METHOD ( t_timeout , 0, ( db_timeout_t timeout , u_t32_t ags ), 72 ( txn , timeout , ags )) 75 DbTxn * gDbTxn :: $wp_DB_TXN ( DB_TXN * txn ) 77 DbTxn * wed_txn = `g_DbTxn ( txn ); 78 ( wed_txn ! NULL ? wed_tx: w `DbTxn ( txn ); 79 } } @../db/crdel_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__d_masub_log ( dbp , tx , t_lp , ags , pgno , ge , l ) 19 DB * dbp ; 20 DB_TXN * tx ; 21 DB_LSN * t_lp ; 22 u_t32_t ags ; 23 db_pgno_t pgno ; 24 cڡ DBT * ge ; 25 DB_LSN * l ; 27 DBT logc ; 28 DB_ENV * dbv ; 29 DB_TXNLOGREC * ; 30 DB_LSN * lp , nu_l , * p ; 31 u_t32_t zo , ump , y , txn_num ; 32 u_t ad ; 33 u_t8_t * bp ; 34 is_dub , t ; 36 dbv = dbp ->dbenv; 37 `COMPQUIET ( , NULL ); 39 y = DB___d_masub ; 40 ad = 0; 41 p = t_lp ; 43 t = 0; 45 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 46 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 47 i( tx = NULL ) 49 is_dub = 0; 51 is_dub = 1; 53 i( tx = NULL ) { 54 txn_num = 0; 55 lp = & nu_l ; 56 nu_l . fe =u_l. offt = 0; 58 i( `TAILQ_FIRST (& tx -> kids ! NULL && 59 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 60 ( t ); 67 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 68 txn_num = tx -> txnid ; 71 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 72 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 73 ( t = `__dbg_zy_id ( dbp )) != 0) 74 ( t ); 76 logc . size = ( y + ( txn_num + ( DB_LSN ) 77 + ( u_t32_t ) 78 + ( u_t32_t ) 79 + ( u_t32_t + ( ge = NULL ? 0 :age-> size ) 80 + (* l ); 81 i( `CRYPTO_ON ( dbv )) { 82 ad = 83 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 84 logc . size + ad ; 87 i( is_dub || tx = NULL ) { 88 i(( t = 89 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 90 ( t ); 92 i(( t = `__os_mloc ( dbv , 93 logc . size + ( DB_TXNLOGREC ), & )) != 0) 94 ( t ); 95 #ifde DIAGNOSTIC 96 i(( t = 97 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 98 `__os_ ( dbv , ); 99 ( t ); 102 logc . da = ->data; 105 i( ad > 0) 106 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 108 bp = logc . da ; 110 `memy ( bp , & y , (rectype)); 111 bp +( y ); 113 `memy ( bp , & txn_num , (txn_num)); 114 bp +( txn_num ); 116 `memy ( bp , lp , ( DB_LSN )); 117 bp +( DB_LSN ); 119 ump = ( u_t32_t ) dbp -> log_fame -> id ; 120 `memy ( bp , & ump , (uinttmp)); 121 bp +( ump ); 123 ump = ( u_t32_t ) pgno ; 124 `memy ( bp , & ump , (uinttmp)); 125 bp +( ump ); 127 i( ge = NULL ) { 128 zo = 0; 129 `memy ( bp , & zo , ( u_t32_t )); 130 bp +( u_t32_t ); 132 `memy ( bp , & ge -> size , (page->size)); 133 bp +( ge -> size ); 134 `memy ( bp , ge -> da ,age-> size ); 135 bp + ge -> size ; 138 i( l ! NULL ) { 139 i( tx ! NULL ) { 140 LOG * = dbv -> lg_hd -> gfo . imy ; 141 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 142 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 143 ( t ); 145 `memy ( bp , l , (*lsn)); 147 `memt ( bp , 0, (* l )); 148 bp +(* l ); 150 `DB_ASSERT ( dbv , 151 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 153 i( is_dub || tx = NULL ) { 154 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 155 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 156 * lp = * p ; 157 i( p ! t_lp ) 158 * t_lp = * p ; 161 t = 0; 162 #ifde DIAGNOSTIC 167 `memy ( -> da , logc .da,ogc. size ); 168 y | DB_debug_FLAG ; 169 `memy ( logc . da , & y , (rectype)); 171 i(! `IS_REP_CLIENT ( dbv )) 172 t = `__log_put ( dbv , 173 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 175 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 176 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 177 `LSN_NOT_LOGGED (* t_lp ); 180 #ifde LOG_DIAGNOSTIC 181 i( t != 0) 182 () `__d_masub_t ( dbv , 183 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 186 #ifde DIAGNOSTIC 187 `__os_ ( dbv , logc . da ); 189 i( is_dub || tx = NULL ) 190 `__os_ ( dbv , logc . da ); 192 ( t ); 193 } } 200 $__d_masub_ad ( dbv , cbuf , g ) 201 DB_ENV * dbv ; 202 * cbuf ; 203 __d_masub_gs ** g ; 205 __d_masub_gs * gp ; 206 u_t32_t ump ; 207 u_t8_t * bp ; 208 t ; 210 i(( t = `__os_mloc ( dbv , 211 ( __d_masub_gs + ( DB_TXN ), & gp )) != 0) 212 ( t ); 213 bp = cbuf ; 214 gp -> tx = ( DB_TXN *)&argp[1]; 215 `memt ( gp -> tx , 0, ( DB_TXN )); 217 `memy (& gp -> ty , bp , (argp->type)); 218 bp +( gp -> ty ); 220 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 221 bp +( gp -> tx -> txnid ); 223 `memy (& gp -> ev_l , bp , ( DB_LSN )); 224 bp +( DB_LSN ); 226 `memy (& ump , bp , (uinttmp)); 227 gp -> feid = ( t32_t ) ump ; 228 bp +( ump ); 230 `memy (& ump , bp , (uinttmp)); 231 gp -> pgno = ( db_pgno_t ) ump ; 232 bp +( ump ); 234 `memt (& gp -> ge , 0, (argp->page)); 235 `memy (& gp -> ge . size , bp , ( u_t32_t )); 236 bp +( u_t32_t ); 237 gp -> ge . da = bp ; 238 bp + gp -> ge . size ; 240 `memy (& gp -> l , bp , (argp->lsn)); 241 bp +( gp -> l ); 243 * g = gp ; 245 } } 253 $__d_mem__log ( dbv , tx , t_lp , ags , 254 feid , me , fid , pgsize ) 255 DB_ENV * dbv ; 256 DB_TXN * tx ; 257 DB_LSN * t_lp ; 258 u_t32_t ags ; 259 t32_t feid ; 260 cڡ DBT * me ; 261 cڡ DBT * fid ; 262 u_t32_t pgsize ; 264 DBT logc ; 265 DB_TXNLOGREC * ; 266 DB_LSN * lp , nu_l , * p ; 267 u_t32_t zo , ump , y , txn_num ; 268 u_t ad ; 269 u_t8_t * bp ; 270 is_dub , t ; 272 `COMPQUIET ( , NULL ); 274 y = DB___d_mem_ ; 275 ad = 0; 276 p = t_lp ; 278 t = 0; 280 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 281 i( tx = NULL ) 283 i( tx = NULL ) 285 is_dub = 0; 287 is_dub = 1; 289 i( tx = NULL ) { 290 txn_num = 0; 291 lp = & nu_l ; 292 nu_l . fe =u_l. offt = 0; 294 i( `TAILQ_FIRST (& tx -> kids ! NULL && 295 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 296 ( t ); 303 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 304 txn_num = tx -> txnid ; 307 logc . size = ( y + ( txn_num + ( DB_LSN ) 308 + ( u_t32_t ) 309 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 310 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ) 311 + ( u_t32_t ); 312 i( `CRYPTO_ON ( dbv )) { 313 ad = 314 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 315 logc . size + ad ; 318 i( is_dub || tx = NULL ) { 319 i(( t = 320 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 321 ( t ); 323 i(( t = `__os_mloc ( dbv , 324 logc . size + ( DB_TXNLOGREC ), & )) != 0) 325 ( t ); 326 #ifde DIAGNOSTIC 327 i(( t = 328 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 329 `__os_ ( dbv , ); 330 ( t ); 333 logc . da = ->data; 336 i( ad > 0) 337 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 339 bp = logc . da ; 341 `memy ( bp , & y , (rectype)); 342 bp +( y ); 344 `memy ( bp , & txn_num , (txn_num)); 345 bp +( txn_num ); 347 `memy ( bp , lp , ( DB_LSN )); 348 bp +( DB_LSN ); 350 ump = ( u_t32_t ) feid ; 351 `memy ( bp , & ump , (uinttmp)); 352 bp +( ump ); 354 i( me = NULL ) { 355 zo = 0; 356 `memy ( bp , & zo , ( u_t32_t )); 357 bp +( u_t32_t ); 359 `memy ( bp , & me -> size , (name->size)); 360 bp +( me -> size ); 361 `memy ( bp , me -> da ,ame-> size ); 362 bp + me -> size ; 365 i( fid = NULL ) { 366 zo = 0; 367 `memy ( bp , & zo , ( u_t32_t )); 368 bp +( u_t32_t ); 370 `memy ( bp , & fid -> size , (fid->size)); 371 bp +( fid -> size ); 372 `memy ( bp , fid -> da , fid-> size ); 373 bp + fid -> size ; 376 ump = ( u_t32_t ) pgsize ; 377 `memy ( bp , & ump , (uinttmp)); 378 bp +( ump ); 380 `DB_ASSERT ( dbv , 381 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 383 i( is_dub || tx = NULL ) { 384 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 385 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 386 * lp = * p ; 387 i( p ! t_lp ) 388 * t_lp = * p ; 391 t = 0; 392 #ifde DIAGNOSTIC 397 `memy ( -> da , logc .da,ogc. size ); 398 y | DB_debug_FLAG ; 399 `memy ( logc . da , & y , (rectype)); 401 i(! `IS_REP_CLIENT ( dbv )) 402 t = `__log_put ( dbv , 403 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 405 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 406 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 407 `LSN_NOT_LOGGED (* t_lp ); 410 #ifde LOG_DIAGNOSTIC 411 i( t != 0) 412 () `__d_mem__t ( dbv , 413 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 416 #ifde DIAGNOSTIC 417 `__os_ ( dbv , logc . da ); 419 i( is_dub || tx = NULL ) 420 `__os_ ( dbv , logc . da ); 422 ( t ); 423 } } 430 $__d_mem__ad ( dbv , cbuf , g ) 431 DB_ENV * dbv ; 432 * cbuf ; 433 __d_mem__gs ** g ; 435 __d_mem__gs * gp ; 436 u_t32_t ump ; 437 u_t8_t * bp ; 438 t ; 440 i(( t = `__os_mloc ( dbv , 441 ( __d_mem__gs + ( DB_TXN ), & gp )) != 0) 442 ( t ); 443 bp = cbuf ; 444 gp -> tx = ( DB_TXN *)&argp[1]; 445 `memt ( gp -> tx , 0, ( DB_TXN )); 447 `memy (& gp -> ty , bp , (argp->type)); 448 bp +( gp -> ty ); 450 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 451 bp +( gp -> tx -> txnid ); 453 `memy (& gp -> ev_l , bp , ( DB_LSN )); 454 bp +( DB_LSN ); 456 `memy (& ump , bp , (uinttmp)); 457 gp -> feid = ( t32_t ) ump ; 458 bp +( ump ); 460 `memt (& gp -> me , 0, (argp->name)); 461 `memy (& gp -> me . size , bp , ( u_t32_t )); 462 bp +( u_t32_t ); 463 gp -> me . da = bp ; 464 bp + gp -> me . size ; 466 `memt (& gp -> fid , 0, (argp->fid)); 467 `memy (& gp -> fid . size , bp , ( u_t32_t )); 468 bp +( u_t32_t ); 469 gp -> fid . da = bp ; 470 bp + gp -> fid . size ; 472 `memy (& ump , bp , (uinttmp)); 473 gp -> pgsize = ( u_t32_t ) ump ; 474 bp +( ump ); 476 * g = gp ; 478 } } 485 $__d_mem_me_log ( dbv , tx , t_lp , ags , 486 dme , wme , fid ) 487 DB_ENV * dbv ; 488 DB_TXN * tx ; 489 DB_LSN * t_lp ; 490 u_t32_t ags ; 491 cڡ DBT * dme ; 492 cڡ DBT * wme ; 493 cڡ DBT * fid ; 495 DBT logc ; 496 DB_TXNLOGREC * ; 497 DB_LSN * lp , nu_l , * p ; 498 u_t32_t zo , y , txn_num ; 499 u_t ad ; 500 u_t8_t * bp ; 501 is_dub , t ; 503 `COMPQUIET ( , NULL ); 505 y = DB___d_mem_me ; 506 ad = 0; 507 p = t_lp ; 509 t = 0; 511 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 512 i( tx = NULL ) 514 i( tx = NULL ) 516 is_dub = 0; 518 is_dub = 1; 520 i( tx = NULL ) { 521 txn_num = 0; 522 lp = & nu_l ; 523 nu_l . fe =u_l. offt = 0; 525 i( `TAILQ_FIRST (& tx -> kids ! NULL && 526 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 527 ( t ); 534 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 535 txn_num = tx -> txnid ; 538 logc . size = ( y + ( txn_num + ( DB_LSN ) 539 + ( u_t32_t + ( dme = NULL ? 0 : oldme-> size ) 540 + ( u_t32_t + ( wme = NULL ? 0 :ewme-> size ) 541 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ); 542 i( `CRYPTO_ON ( dbv )) { 543 ad = 544 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 545 logc . size + ad ; 548 i( is_dub || tx = NULL ) { 549 i(( t = 550 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 551 ( t ); 553 i(( t = `__os_mloc ( dbv , 554 logc . size + ( DB_TXNLOGREC ), & )) != 0) 555 ( t ); 556 #ifde DIAGNOSTIC 557 i(( t = 558 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 559 `__os_ ( dbv , ); 560 ( t ); 563 logc . da = ->data; 566 i( ad > 0) 567 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 569 bp = logc . da ; 571 `memy ( bp , & y , (rectype)); 572 bp +( y ); 574 `memy ( bp , & txn_num , (txn_num)); 575 bp +( txn_num ); 577 `memy ( bp , lp , ( DB_LSN )); 578 bp +( DB_LSN ); 580 i( dme = NULL ) { 581 zo = 0; 582 `memy ( bp , & zo , ( u_t32_t )); 583 bp +( u_t32_t ); 585 `memy ( bp , & dme -> size , (oldname->size)); 586 bp +( dme -> size ); 587 `memy ( bp , dme -> da , oldme-> size ); 588 bp + dme -> size ; 591 i( wme = NULL ) { 592 zo = 0; 593 `memy ( bp , & zo , ( u_t32_t )); 594 bp +( u_t32_t ); 596 `memy ( bp , & wme -> size , (newname->size)); 597 bp +( wme -> size ); 598 `memy ( bp , wme -> da ,ewme-> size ); 599 bp + wme -> size ; 602 i( fid = NULL ) { 603 zo = 0; 604 `memy ( bp , & zo , ( u_t32_t )); 605 bp +( u_t32_t ); 607 `memy ( bp , & fid -> size , (fid->size)); 608 bp +( fid -> size ); 609 `memy ( bp , fid -> da , fid-> size ); 610 bp + fid -> size ; 613 `DB_ASSERT ( dbv , 614 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 616 i( is_dub || tx = NULL ) { 617 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 618 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 619 * lp = * p ; 620 i( p ! t_lp ) 621 * t_lp = * p ; 624 t = 0; 625 #ifde DIAGNOSTIC 630 `memy ( -> da , logc .da,ogc. size ); 631 y | DB_debug_FLAG ; 632 `memy ( logc . da , & y , (rectype)); 634 i(! `IS_REP_CLIENT ( dbv )) 635 t = `__log_put ( dbv , 636 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 638 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 639 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 640 `LSN_NOT_LOGGED (* t_lp ); 643 #ifde LOG_DIAGNOSTIC 644 i( t != 0) 645 () `__d_mem_me_t ( dbv , 646 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 649 #ifde DIAGNOSTIC 650 `__os_ ( dbv , logc . da ); 652 i( is_dub || tx = NULL ) 653 `__os_ ( dbv , logc . da ); 655 ( t ); 656 } } 663 $__d_mem_me_ad ( dbv , cbuf , g ) 664 DB_ENV * dbv ; 665 * cbuf ; 666 __d_mem_me_gs ** g ; 668 __d_mem_me_gs * gp ; 669 u_t8_t * bp ; 670 t ; 672 i(( t = `__os_mloc ( dbv , 673 ( __d_mem_me_gs + ( DB_TXN ), & gp )) != 0) 674 ( t ); 675 bp = cbuf ; 676 gp -> tx = ( DB_TXN *)&argp[1]; 677 `memt ( gp -> tx , 0, ( DB_TXN )); 679 `memy (& gp -> ty , bp , (argp->type)); 680 bp +( gp -> ty ); 682 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 683 bp +( gp -> tx -> txnid ); 685 `memy (& gp -> ev_l , bp , ( DB_LSN )); 686 bp +( DB_LSN ); 688 `memt (& gp -> dme , 0, (argp->oldname)); 689 `memy (& gp -> dme . size , bp , ( u_t32_t )); 690 bp +( u_t32_t ); 691 gp -> dme . da = bp ; 692 bp + gp -> dme . size ; 694 `memt (& gp -> wme , 0, (argp->newname)); 695 `memy (& gp -> wme . size , bp , ( u_t32_t )); 696 bp +( u_t32_t ); 697 gp -> wme . da = bp ; 698 bp + gp -> wme . size ; 700 `memt (& gp -> fid , 0, (argp->fid)); 701 `memy (& gp -> fid . size , bp , ( u_t32_t )); 702 bp +( u_t32_t ); 703 gp -> fid . da = bp ; 704 bp + gp -> fid . size ; 706 * g = gp ; 708 } } 715 $__d_mem_move_log ( dbv , tx , t_lp , ags , 716 me , fid ) 717 DB_ENV * dbv ; 718 DB_TXN * tx ; 719 DB_LSN * t_lp ; 720 u_t32_t ags ; 721 cڡ DBT * me ; 722 cڡ DBT * fid ; 724 DBT logc ; 725 DB_TXNLOGREC * ; 726 DB_LSN * lp , nu_l , * p ; 727 u_t32_t zo , y , txn_num ; 728 u_t ad ; 729 u_t8_t * bp ; 730 is_dub , t ; 732 `COMPQUIET ( , NULL ); 734 y = DB___d_mem_move ; 735 ad = 0; 736 p = t_lp ; 738 t = 0; 740 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 741 i( tx = NULL ) 743 i( tx = NULL ) 745 is_dub = 0; 747 is_dub = 1; 749 i( tx = NULL ) { 750 txn_num = 0; 751 lp = & nu_l ; 752 nu_l . fe =u_l. offt = 0; 754 i( `TAILQ_FIRST (& tx -> kids ! NULL && 755 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 756 ( t ); 763 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 764 txn_num = tx -> txnid ; 767 logc . size = ( y + ( txn_num + ( DB_LSN ) 768 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 769 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ); 770 i( `CRYPTO_ON ( dbv )) { 771 ad = 772 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 773 logc . size + ad ; 776 i( is_dub || tx = NULL ) { 777 i(( t = 778 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 779 ( t ); 781 i(( t = `__os_mloc ( dbv , 782 logc . size + ( DB_TXNLOGREC ), & )) != 0) 783 ( t ); 784 #ifde DIAGNOSTIC 785 i(( t = 786 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 787 `__os_ ( dbv , ); 788 ( t ); 791 logc . da = ->data; 794 i( ad > 0) 795 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 797 bp = logc . da ; 799 `memy ( bp , & y , (rectype)); 800 bp +( y ); 802 `memy ( bp , & txn_num , (txn_num)); 803 bp +( txn_num ); 805 `memy ( bp , lp , ( DB_LSN )); 806 bp +( DB_LSN ); 808 i( me = NULL ) { 809 zo = 0; 810 `memy ( bp , & zo , ( u_t32_t )); 811 bp +( u_t32_t ); 813 `memy ( bp , & me -> size , (name->size)); 814 bp +( me -> size ); 815 `memy ( bp , me -> da ,ame-> size ); 816 bp + me -> size ; 819 i( fid = NULL ) { 820 zo = 0; 821 `memy ( bp , & zo , ( u_t32_t )); 822 bp +( u_t32_t ); 824 `memy ( bp , & fid -> size , (fid->size)); 825 bp +( fid -> size ); 826 `memy ( bp , fid -> da , fid-> size ); 827 bp + fid -> size ; 830 `DB_ASSERT ( dbv , 831 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 833 i( is_dub || tx = NULL ) { 834 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 835 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 836 * lp = * p ; 837 i( p ! t_lp ) 838 * t_lp = * p ; 841 t = 0; 842 #ifde DIAGNOSTIC 847 `memy ( -> da , logc .da,ogc. size ); 848 y | DB_debug_FLAG ; 849 `memy ( logc . da , & y , (rectype)); 851 i(! `IS_REP_CLIENT ( dbv )) 852 t = `__log_put ( dbv , 853 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 855 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 856 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 857 `LSN_NOT_LOGGED (* t_lp ); 860 #ifde LOG_DIAGNOSTIC 861 i( t != 0) 862 () `__d_mem_move_t ( dbv , 863 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 866 #ifde DIAGNOSTIC 867 `__os_ ( dbv , logc . da ); 869 i( is_dub || tx = NULL ) 870 `__os_ ( dbv , logc . da ); 872 ( t ); 873 } } 880 $__d_mem_move_ad ( dbv , cbuf , g ) 881 DB_ENV * dbv ; 882 * cbuf ; 883 __d_mem_move_gs ** g ; 885 __d_mem_move_gs * gp ; 886 u_t8_t * bp ; 887 t ; 889 i(( t = `__os_mloc ( dbv , 890 ( __d_mem_move_gs + ( DB_TXN ), & gp )) != 0) 891 ( t ); 892 bp = cbuf ; 893 gp -> tx = ( DB_TXN *)&argp[1]; 894 `memt ( gp -> tx , 0, ( DB_TXN )); 896 `memy (& gp -> ty , bp , (argp->type)); 897 bp +( gp -> ty ); 899 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 900 bp +( gp -> tx -> txnid ); 902 `memy (& gp -> ev_l , bp , ( DB_LSN )); 903 bp +( DB_LSN ); 905 `memt (& gp -> me , 0, (argp->name)); 906 `memy (& gp -> me . size , bp , ( u_t32_t )); 907 bp +( u_t32_t ); 908 gp -> me . da = bp ; 909 bp + gp -> me . size ; 911 `memt (& gp -> fid , 0, (argp->fid)); 912 `memy (& gp -> fid . size , bp , ( u_t32_t )); 913 bp +( u_t32_t ); 914 gp -> fid . da = bp ; 915 bp + gp -> fid . size ; 917 * g = gp ; 919 } } 926 $__d__cov ( dbv , dbp , dbsiz ) 927 DB_ENV * dbv ; 928 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 929 size_t * dbsiz ; 931 t ; 933 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 934 __d_masub_cov , DB___d_masub )) != 0) 935 ( t ); 936 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 937 __d_mem__cov , DB___d_mem_ )) != 0) 938 ( t ); 939 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 940 __d_mem_me_cov , DB___d_mem_me )) != 0) 941 ( t ); 942 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 943 __d_mem_move_cov , DB___d_mem_move )) != 0) 944 ( t ); 946 } } @../db/crdel_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__d_masub_t ( dbv , db , lp , nud2 , nud3 ) 19 DB_ENV * dbv ; 20 DBT * db ; 21 DB_LSN * lp ; 22 db_cs nud2 ; 23 * nud3 ; 25 __d_masub_gs * gp ; 26 u_t32_t i ; 27 ch ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = `__d_masub_ad ( dbv , db -> da , & gp )) != 0) 34 ( t ); 35 () `tf ( 37 ( u_lg ) lp -> fe , (u_lgp-> offt , 38 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 39 ( u_lg ) gp -> ty , 40 ( u_lg ) gp -> tx -> txnid , 41 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 42 () `tf ("\tfeid: %ld\n", () gp -> feid ); 43 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 44 () `tf ("\tpage: "); 45 i = 0; i < gp -> ge . size ; i++) { 46 ch = (( u_t8_t *) gp -> ge . da )[ i ]; 47 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 49 () `tf ("\n"); 50 () `tf ("\tlsn: [%lu][%lu]\n", 51 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 52 () `tf ("\n"); 53 `__os_ ( dbv , gp ); 55 } } 62 $__d_mem__t ( dbv , db , lp , nud2 , nud3 ) 63 DB_ENV * dbv ; 64 DBT * db ; 65 DB_LSN * lp ; 66 db_cs nud2 ; 67 * nud3 ; 69 __d_mem__gs * gp ; 70 u_t32_t i ; 71 ch ; 72 t ; 74 nud2 = DB_TXN_PRINT ; 75 nud3 = NULL ; 77 i(( t = `__d_mem__ad ( dbv , db -> da , & gp )) != 0) 78 ( t ); 79 () `tf ( 81 ( u_lg ) lp -> fe , (u_lgp-> offt , 82 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 83 ( u_lg ) gp -> ty , 84 ( u_lg ) gp -> tx -> txnid , 85 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 86 () `tf ("\tfeid: %ld\n", () gp -> feid ); 87 () `tf ("\tname: "); 88 i = 0; i < gp -> me . size ; i++) { 89 ch = (( u_t8_t *) gp -> me . da )[ i ]; 90 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 92 () `tf ("\n"); 93 () `tf ("\tfid: "); 94 i = 0; i < gp -> fid . size ; i++) { 95 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 96 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 98 () `tf ("\n"); 99 () `tf ("\gsize: %lu\n", ( u_lg ) gp -> pgsize ); 100 () `tf ("\n"); 101 `__os_ ( dbv , gp ); 103 } } 110 $__d_mem_me_t ( dbv , db , lp , nud2 , nud3 ) 111 DB_ENV * dbv ; 112 DBT * db ; 113 DB_LSN * lp ; 114 db_cs nud2 ; 115 * nud3 ; 117 __d_mem_me_gs * gp ; 118 u_t32_t i ; 119 ch ; 120 t ; 122 nud2 = DB_TXN_PRINT ; 123 nud3 = NULL ; 125 i(( t = `__d_mem_me_ad ( dbv , db -> da , & gp )) != 0) 126 ( t ); 127 () `tf ( 129 ( u_lg ) lp -> fe , (u_lgp-> offt , 130 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 131 ( u_lg ) gp -> ty , 132 ( u_lg ) gp -> tx -> txnid , 133 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 134 () `tf ("\toldname: "); 135 i = 0; i < gp -> dme . size ; i++) { 136 ch = (( u_t8_t *) gp -> dme . da )[ i ]; 137 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 139 () `tf ("\n"); 140 () `tf ("\tnewname: "); 141 i = 0; i < gp -> wme . size ; i++) { 142 ch = (( u_t8_t *) gp -> wme . da )[ i ]; 143 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 145 () `tf ("\n"); 146 () `tf ("\tfid: "); 147 i = 0; i < gp -> fid . size ; i++) { 148 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 149 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 151 () `tf ("\n"); 152 () `tf ("\n"); 153 `__os_ ( dbv , gp ); 155 } } 162 $__d_mem_move_t ( dbv , db , lp , nud2 , nud3 ) 163 DB_ENV * dbv ; 164 DBT * db ; 165 DB_LSN * lp ; 166 db_cs nud2 ; 167 * nud3 ; 169 __d_mem_move_gs * gp ; 170 u_t32_t i ; 171 ch ; 172 t ; 174 nud2 = DB_TXN_PRINT ; 175 nud3 = NULL ; 177 i(( t = `__d_mem_move_ad ( dbv , db -> da , & gp )) != 0) 178 ( t ); 179 () `tf ( 181 ( u_lg ) lp -> fe , (u_lgp-> offt , 182 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 183 ( u_lg ) gp -> ty , 184 ( u_lg ) gp -> tx -> txnid , 185 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 186 () `tf ("\tname: "); 187 i = 0; i < gp -> me . size ; i++) { 188 ch = (( u_t8_t *) gp -> me . da )[ i ]; 189 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 191 () `tf ("\n"); 192 () `tf ("\tfid: "); 193 i = 0; i < gp -> fid . size ; i++) { 194 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 195 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 197 () `tf ("\n"); 198 () `tf ("\n"); 199 `__os_ ( dbv , gp ); 201 } } 208 $__d__t ( dbv , dbp , dbsiz ) 209 DB_ENV * dbv ; 210 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 211 size_t * dbsiz ; 213 t ; 215 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 216 __d_masub_t , DB___d_masub )) != 0) 217 ( t ); 218 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 219 __d_mem__t , DB___d_mem_ )) != 0) 220 ( t ); 221 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 222 __d_mem_me_t , DB___d_mem_me )) != 0) 223 ( t ); 224 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 225 __d_mem_move_t , DB___d_mem_move )) != 0) 226 ( t ); 228 } } @../db/crdel_rec.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/f.h " 14 ~"dbc/hash.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/txn.h " 27 $__d_masub_cov ( dbv , db , lp , , fo ) 28 DB_ENV * dbv ; 29 DBT * db ; 30 DB_LSN * lp ; 31 db_cs ; 32 * fo ; 34 __d_masub_gs * gp ; 35 DB * fe_dbp ; 36 DBC * dbc ; 37 DB_MPOOLFILE * mpf ; 38 PAGE * g ; 39 cmp_p , t , t_t ; 41 g = NULL ; 42 `REC_PRINT ( __d_masub_t ); 43 `REC_INTRO ( __d_masub_ad , 0, 0); 45 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 46 0, & g )) != 0) { 48 i( `F_ISSET ( fe_dbp , DB_AM_INMEM ) && 49 ( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 50 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & g )) == 0) { 51 `LSN_NOT_LOGGED ( `LSN ( g )); 53 * lp = gp -> ev_l ; 54 t = 0; 55 out ; 59 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 60 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 62 i( cmp_p =0 && `DB_REDO ( )) { 63 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 64 `memy ( g , gp -> ge . da ,rgp->ge. size ); 65 `LSN ( g * lp ; 72 i( `F_ISSET ( fe_dbp , DB_AM_INMEM ) && 73 gp -> pgno = PGNO_BASE_MD && 74 ( t = `__db_ma_tup ( fe_dbp -> dbv , file_dbp, 75 fe_dbp -> dme , ( DBMETA *) g , 0, DB_CHK_META )) != 0) 76 out ; 77 } i( `DB_UNDO ( )) { 90 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 91 `LSN ( g gp -> l ; 94 de : * lp = gp -> ev_l ; 95 t = 0; 97 out : i( g ! NULL && 98 ( t_t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0 && 99 t == 0) 100 t = t_t ; 102 REC_CLOSE ; 103 } } 113 $__d_mem__cov ( dbv , db , lp , , fo ) 114 DB_ENV * dbv ; 115 DBT * db ; 116 DB_LSN * lp ; 117 db_cs ; 118 * fo ; 120 DB * dbp ; 121 __d_mem__gs * gp ; 122 do_o , t , t_t ; 124 `COMPQUIET ( fo , NULL ); 125 dbp = NULL ; 126 do_o = 0; 127 `REC_PRINT ( __d_mem__t ); 128 `REC_NOOP_INTRO ( __d_mem__ad ); 131 i( gp -> feid = DB_LOGFILEID_INVALID ) { 132 i( `DB_REDO ( )) 133 t = ENOENT ; 135 t = 0; 137 t = `__dbg_id_to_db_t ( dbv , 138 gp -> tx , & dbp ,rgp-> feid , 0, 0); 140 i( `DB_REDO ( )) { 145 i( t != 0) { 146 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 147 out ; 149 `F_SET ( dbp , DB_AM_RECOVER | DB_AM_INMEM ); 150 `memy ( dbp -> feid , gp -> fid . da , DB_FILE_ID_LEN ); 151 i((( t = `__os_rdup ( dbv , 152 gp -> me . da , & dbp -> dme )) != 0)) 153 out ; 160 do_o = 1; 164 `memy ( dbp -> feid , gp -> fid . da ,rgp->fid. size ); 165 i(( t = `__memp_t_feid ( dbp -> mpf , dbp-> feid )) != 0) 166 out ; 167 dbp -> erve_fid = 1; 168 `MAKE_INMEM ( dbp ); 169 i(( t = `__db_v_tup ( dbp , 170 NULL , NULL, gp -> me . da , TXN_INVALID , 0)) != 0) 171 out ; 172 t = `__db_v_mpo ( dbp , gp -> me . da , 0); 174 i( t = ENOENT ) { 175 dbp -> pgsize = gp ->pgsize; 176 i(( t = `__db_v_mpo ( dbp , 177 gp -> me . da , DB_CREATE )) != 0) 178 out ; 179 } i( t != 0) 180 out ; 183 i( `DB_UNDO ( )) { 184 i( t == 0) 185 t = `__memp_me ( dbv , gp -> fid . da , NULL , 186 (cڡ *) gp -> me . da , NULL , 1); 188 i( t = ENOENT || = DB_DELETED ) 189 t = 0; 191 out ; 194 * lp = gp -> ev_l ; 196 out : i( dbp ! NULL ) { 197 t_t = 0; 199 i( do_o || t != 0) 200 t_t = `__db_o ( dbp , NULL , DB_NOSYNC ); 201 i( t_t !0 && t == 0) 202 t = t_t ; 204 REC_NOOP_CLOSE ; 205 } } 215 $__d_mem_me_cov ( dbv , db , lp , , fo ) 216 DB_ENV * dbv ; 217 DBT * db ; 218 DB_LSN * lp ; 219 db_cs ; 220 * fo ; 222 __d_mem_me_gs * gp ; 223 u_t8_t * feid ; 224 t ; 226 `COMPQUIET ( fo , NULL ); 227 `REC_PRINT ( __d_mem_me_t ); 228 `REC_NOOP_INTRO ( __d_mem_me_ad ); 229 feid = gp -> fid . da ; 232 i( `DB_REDO ( )) 233 () `__memp_me ( dbv , feid , 234 (cڡ *) gp -> wme . da , 235 (cڡ *) gp -> dme . da , 236 (cڡ *) gp -> wme . da , 1); 238 i( `DB_UNDO ( )) 239 () `__memp_me ( dbv , feid , 240 (cڡ *) gp -> dme . da , 241 (cڡ *) gp -> wme . da , 242 (cڡ *) gp -> dme . da , 1); 244 * lp = gp -> ev_l ; 245 t = 0; 247 REC_NOOP_CLOSE ; 248 } } 258 $__d_mem_move_cov ( dbv , db , lp , , fo ) 259 DB_ENV * dbv ; 260 DBT * db ; 261 DB_LSN * lp ; 262 db_cs ; 263 * fo ; 265 __d_mem_move_gs * gp ; 266 t ; 268 `COMPQUIET ( fo , NULL ); 269 `REC_PRINT ( __d_mem_move_t ); 270 `REC_NOOP_INTRO ( __d_mem_move_ad ); 276 i( `DB_REDO ( )) { 277 () `__memp_me ( dbv , 278 gp -> fid . da , NULL ,rgp-> me .data, NULL, 1); 281 * lp = gp -> ev_l ; 282 t = 0; 284 REC_NOOP_CLOSE ; 285 } } @../db/db.c 41 ~"db_cfig.h " 43 ~"db_t.h " 44 ~"dbc/db_ge.h " 45 ~"dbc/db_sw.h " 46 ~"dbc/b.h " 47 ~"dbc/f.h " 48 ~"dbc/hash.h " 49 ~"dbc/lock.h " 50 ~"dbc/log.h " 51 ~"dbc/mp.h " 52 ~"dbc/qam.h " 53 ~"dbc/txn.h " 55 __db_dissoc __P (( DB *)); 57 #ifde CONFIG_TEST 58 __db_makecy __P (( DB_ENV *, const *, const *)); 59 __db_docy __P (( DB_ENV *, const *)); 60 __qam_docy __P (( DB *, const *)); 76 $__db_ma_ݒ ( subdbp , txn , me , ags , mode , db ) 77 DB * subdbp ; 78 DB_TXN * txn ; 79 cڡ * me ; 80 u_t32_t ags ; 81 mode ; 82 DB ** db ; 84 DB * dbp ; 85 t ; 87 * db = NULL ; 90 i(( t = `__db__ (& dbp , subdbp -> dbv , 0)) != 0) 91 ( t ); 99 dbp -> pgsize = subdbp ->pgsize; 100 `F_SET ( dbp , DB_AM_SUBDB ); 101 `F_SET ( dbp , `F_ISSET ( subdbp , 102 DB_AM_RECOVER | DB_AM_SWAP | 103 DB_AM_ENCRYPT | DB_AM_CHKSUM | DB_AM_NOT_DURABLE )); 110 `LF_CLR ( DB_EXCL ); 111 `LF_SET ( DB_RDWRMASTER ); 112 i(( t = `__db_ݒ ( dbp , 113 txn , me , NULL , DB_BTREE , ags , mode , PGNO_BASE_MD )) != 0) 114 r ; 123 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 124 `F_SET ( subdbp , DB_AM_CHKSUM ); 130 subdbp -> pgsize = dbp ->pgsize; 131 * db = dbp ; 134 r : i(! `F_ISSET ( dbp , DB_AM_DISCARD )) 135 () `__db_o ( dbp , txn , 0); 138 ( t ); 139 } } 149 $__db_ma_upde ( mdbp , sdbp , txn , subdb , ty , ai , wme , ags ) 150 DB * mdbp , * sdbp ; 151 DB_TXN * txn ; 152 cڡ * subdb ; 153 DBTYPE ty ; 154 mu_ai ai ; 155 cڡ * wme ; 156 u_t32_t ags ; 158 DB_ENV * dbv ; 159 DBC * dbc , * ndbc ; 160 DBT key , da , nda ; 161 PAGE * p , * r ; 162 db_pgno_t t_pgno ; 163 modify , t , t_t ; 165 dbv = mdbp ->dbenv; 166 dbc = ndbc = NULL ; 167 p = NULL ; 175 modify = ( ai ! MU_OPEN || `LF_ISSET ( DB_CREATE )) ? 1 : 0; 177 i(( t = `__db_curs ( mdbp , txn , & dbc , 178 ( `CDB_LOCKING ( dbv && modify ? DB_WRITECURSOR : 0)) != 0) 179 ( t ); 194 `DB_INIT_DBT ( key , subdb , ` (subdb)); 195 `memt (& da , 0, (data)); 196 `F_SET (& da , DB_DBT_MALLOC ); 198 t = `__dbc_g ( dbc , & key , & da , 199 DB_SET | (( `STD_LOCKING ( dbc && modify ? DB_RMW : 0)); 206 ai ) { 207 MU_REMOVE : 214 i( t != 0) 215 r ; 221 i(( t = `__dbc_d ( dbc , 0)) != 0) 222 r ; 229 `memy (& sdbp -> ma_pgno , da .da, ( db_pgno_t )); 230 `DB_NTOHL (& sdbp -> ma_pgno ); 231 i(( t = `__memp_fg ( mdbp -> mpf , & sdbp -> ma_pgno , 232 dbc -> txn , DB_MPOOL_DIRTY , & p )) != 0) 233 r ; 236 i( `TYPE ( p = P_BTREEMETA && 237 (( BTMETA *) p )-> ro ! PGNO_INVALID ) { 238 i(( t = `__memp_fg ( mdbp -> mpf , 239 &(( BTMETA *) p )-> ro , dbc -> txn , 240 DB_MPOOL_DIRTY , & r )) != 0) 241 r ; 244 i(( t = `__db_ ( dbc , r )) != 0) { 245 r = NULL ; 246 r ; 250 i(( t = `__db_ ( dbc , p )) != 0) { 251 p = NULL ; 252 r ; 254 p = NULL ; 256 MU_RENAME : 258 i( t != 0) 259 r ; 268 i(( t = `__db_curs ( mdbp , txn , & ndbc , 269 `CDB_LOCKING ( dbv ? DB_WRITECURSOR : 0)) != 0) 270 r ; 271 `DB_SET_DBT ( key , wme , ` (newname)); 277 `memt (& nda , 0, (ndata)); 278 `F_SET (& nda , DB_DBT_USERMEM | DB_DBT_PARTIAL ); 280 i(( t = `__dbc_g ( ndbc , & key , & nda , DB_SET )) == 0) { 282 t = EEXIST ; 283 `__db_rx ( dbv , "me: daba %exis", wme ); 284 r ; 285 } i( t ! DB_NOTFOUND ) 286 r ; 293 i(( t = `__dbc_put ( ndbc , & key , & da , DB_KEYFIRST )) != 0) 294 r ; 295 i(( t = `__dbc_d ( dbc , 0)) != 0) { 300 () `__dbc_d ( ndbc , 0); 301 r ; 305 MU_OPEN : 310 t ) { 312 i( `LF_ISSET ( DB_CREATE && LF_ISSET( DB_EXCL )) { 313 t = EEXIST ; 314 r ; 316 `memy (& sdbp -> ma_pgno , da .da, ( db_pgno_t )); 317 `DB_NTOHL (& sdbp -> ma_pgno ); 318 de ; 319 DB_NOTFOUND : 320 i( `LF_ISSET ( DB_CREATE )) 326 t = ENOENT ; 327 r ; 329 r ; 333 i(( t = `__db_w ( dbc , 334 ty = DB_HASH ? P_HASHMETA : P_BTREEMETA , & p )) != 0) 335 r ; 336 sdbp -> ma_pgno = `PGNO ( p ); 344 t_pgno = `PGNO ( p ); 345 `DB_HTONL (& t_pgno ); 346 `memt (& nda , 0, (ndata)); 347 nda . da = & t_pgno ; 348 nda . size = ( db_pgno_t ); 349 i(( t = `__dbc_put ( dbc , & key , & nda , DB_KEYLAST )) != 0) 350 r ; 351 `F_SET ( sdbp , DB_AM_CREATED ); 355 r : 356 de : 360 i( p ! NULL && ( t_t = 361 `__memp_ut ( mdbp -> mpf , p , dbc -> iܙy )!0 && t == 0) 362 t = t_t ; 365 i( da .d! NULL ) 366 `__os_u ( dbv , da .data); 367 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 368 t = t_t ; 369 i( ndbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 370 t = t_t ; 372 ( t ); 373 } } 383 $__db_v_tup ( dbp , txn , ame , dme , id , ags ) 384 DB * dbp ; 385 DB_TXN * txn ; 386 cڡ * ame , * dme ; 387 u_t32_t id , ags ; 389 DB * ldbp ; 390 DB_ENV * dbv ; 391 u_t32_t maxid ; 392 t ; 394 dbv = dbp ->dbenv; 397 i(! `F_ISSET ( dbv , DB_ENV_OPEN_CALLED )) { 399 i( dbv -> mp_gbys == 0 && 400 dbv -> mp_bys < dbp -> pgsize * DB_MINPAGECACHE && 401 ( t = `__memp_t_chesize ( 402 dbv , 0, dbp -> pgsize * DB_MINPAGECACHE , 0)) != 0) 403 ( t ); 405 i(( t = `__v_ݒ ( dbv , NULL , DB_CREATE | 406 DB_INIT_MPOOL | DB_PRIVATE | `LF_ISSET ( DB_THREAD ), 0)) != 0) 407 ( t ); 411 i((! `F_ISSET ( dbp , DB_AM_INMEM || dme = NULL ) && 412 ( t = `__db_v_mpo ( dbp , ame , ags )) != 0) 413 ( t ); 416 i( `LF_ISSET ( DB_THREAD && ( t = `__mux_loc ( 417 dbv , MTX_DB_HANDLE , DB_MUTEX_PROCESS_ONLY , & dbp -> mux )) != 0) 418 ( t ); 426 i( `LOGGING_ON ( dbv && dbp -> log_fame = NULL && 427 #i! `defed ( DEBUG_ROP && !defed( DEBUG_WOP && !defed( DIAGNOSTIC ) 428 ( txn ! NULL || `F_ISSET ( dbp , DB_AM_RECOVER )) && 430 ( t = `__dbg_tup ( dbp , 431 `F_ISSET ( dbp , DB_AM_INMEM ? dme : ame , id )) != 0) 432 ( t ); 438 i( `DBENV_LOGGING ( dbv && ! `F_ISSET ( dbp , DB_AM_RECOVER ) && 439 #i! `defed ( DEBUG_ROP && !defed( DEBUG_WOP && !defed( DIAGNOSTIC ) 440 txn ! NULL && 442 #i! `defed ( DEBUG_ROP ) 443 ! `F_ISSET ( dbp , DB_AM_RDONLY ) && 445 ( t = `__dbg_w_id ( dbp , txn )) != 0) 446 ( t ); 457 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 458 maxid = 0; 459 `TAILQ_FOREACH ( ldbp , & dbv -> dbli , dblilks ) { 465 i(! `F_ISSET ( dbp , DB_AM_INMEM )) { 466 i( `memcmp ( ldbp -> feid , dbp ->feid, DB_FILE_ID_LEN ) 467 =0 && ldbp -> ma_pgno = dbp ->meta_pgno) 469 } i( dme ! NULL ) { 470 i( `F_ISSET ( ldbp , DB_AM_INMEM ) && 471 ldbp -> dme ! NULL && 472 `rcmp ( ldbp -> dme , dname) == 0) 475 i( ldbp -> adj_feid > maxid ) 476 maxid = ldbp -> adj_feid ; 488 i( ldbp = NULL ) { 489 dbp -> adj_feid = maxid + 1; 490 `TAILQ_INSERT_HEAD (& dbv -> dbli , dbp , dblilks ); 492 dbp -> adj_feid = ldbp ->adj_fileid; 493 `TAILQ_INSERT_AFTER (& dbv -> dbli , ldbp , dbp , dblilks ); 495 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 498 } } 507 $__db_v_mpo ( dbp , ame , ags ) 508 DB * dbp ; 509 cڡ * ame ; 510 u_t32_t ags ; 512 DB_ENV * dbv ; 513 DBT pgcook ; 514 DB_MPOOLFILE * mpf ; 515 DB_PGINFO pgfo ; 516 fidt , y , t ; 517 t32_t l_off ; 518 u_t8_t nufid [ DB_FILE_ID_LEN ]; 519 u_t32_t r_n ; 521 dbv = dbp ->dbenv; 524 l_off = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LSN_OFF_NOTSET : 0; 527 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 538 dbp -> ty ) { 539 DB_BTREE : 540 DB_RECNO : 541 y = `F_ISSET ( dbp , DB_AM_SWAP | DB_AM_ENCRYPT | DB_AM_CHKSUM ) 542 ? DB_FTYPE_SET : DB_FTYPE_NOTSET ; 543 r_n = `CRYPTO_ON ( dbv ) ? 544 ( dbp -> pgsize !0 ? dbp->pgsiz: DB_CLEARLEN_NOTSET ) : 545 DB_PAGE_DB_LEN ; 547 DB_HASH : 548 y = DB_FTYPE_SET ; 549 r_n = `CRYPTO_ON ( dbv ) ? 550 ( dbp -> pgsize !0 ? dbp->pgsiz: DB_CLEARLEN_NOTSET ) : 551 DB_PAGE_DB_LEN ; 553 DB_QUEUE : 554 y = `F_ISSET ( dbp , 555 DB_AM_SWAP | DB_AM_ENCRYPT | DB_AM_CHKSUM ) ? 556 DB_FTYPE_SET : DB_FTYPE_NOTSET ; 564 r_n = dbp -> pgsize !0 ? dbp->pgsiz: DB_CLEARLEN_NOTSET ; 566 DB_UNKNOWN : 579 i( `F_ISSET ( dbp , DB_AM_VERIFYING )) { 580 y = DB_FTYPE_NOTSET ; 581 r_n = DB_PAGE_DB_LEN ; 590 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 591 r_n = DB_CLEARLEN_NOTSET ; 592 y = DB_FTYPE_NOTSET ; 593 l_off = DB_LSN_OFF_NOTSET ; 598 ( `__db_unknown_ty ( dbv , "DB->ݒ", dbp -> ty )); 601 mpf = dbp ->mpf; 603 `memt ( nufid , 0, DB_FILE_ID_LEN ); 604 fidt = `memcmp ( nufid , dbp -> feid , DB_FILE_ID_LEN ); 605 i( fidt ) 606 () `__memp_t_feid ( mpf , dbp -> feid ); 608 () `__memp_t_r_n ( mpf , r_n ); 609 () `__memp_t_y ( mpf , y ); 610 () `__memp_t_l_offt ( mpf , l_off ); 612 pgfo . db_gesize = dbp -> pgsize ; 613 pgfo . ags = 614 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 615 pgfo . ty = dbp ->type; 616 pgcook . da = & pgfo ; 617 pgcook . size = ( DB_PGINFO ); 618 () `__memp_t_pgcook ( mpf , & pgcook ); 620 #ide DIAG_MVCC 621 i( `F_ISSET ( dbv , DB_ENV_MULTIVERSION )) 623 i( `F_ISSET ( dbp , DB_AM_TXN ) && 624 dbp -> ty ! DB_QUEUE && dbp->ty ! DB_UNKNOWN ) 625 `LF_SET ( DB_MULTIVERSION ); 627 i(( t = `__memp_fݒ ( mpf , NULL , ame , 628 `LF_ISSET ( DB_CREATE | DB_DURABLE_UNKNOWN | DB_MULTIVERSION | 629 DB_NOMMAP | DB_ODDFILESIZE | DB_RDONLY | DB_TRUNCATE ) | 630 ( `F_ISSET ( dbv , DB_ENV_DIRECT_DB ? DB_DIRECT : 0) | 631 ( `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_TXN_NOT_DURABLE : 0), 632 0, dbp -> pgsize )) != 0) { 637 () `__memp_fo ( dbp -> mpf , 0); 638 () `__memp_f ( dbv , & dbp -> mpf ); 639 i( `F_ISSET ( dbp , DB_AM_INMEM )) 640 `MAKE_INMEM ( dbp ); 641 ( t ); 651 `F_SET ( dbp , DB_AM_OPEN_CALLED ); 652 i(! fidt && ame ! NULL ) { 653 () `__memp_g_feid ( dbp -> mpf , dbp-> feid ); 654 dbp -> erve_fid = 1; 658 } } 667 $__db_o ( dbp , txn , ags ) 668 DB * dbp ; 669 DB_TXN * txn ; 670 u_t32_t ags ; 672 DB_ENV * dbv ; 673 db_f , deed_o , t , t_t ; 675 dbv = dbp ->dbenv; 676 deed_o = t = 0; 685 i( txn ! NULL ) 686 () `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0); 689 t = `__db_esh ( dbp , txn , ags , & deed_o , 0); 695 i( deed_o ) 696 ( t ); 709 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 710 db_f = -- dbv ->db_ref; 711 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 712 i( `F_ISSET ( dbv , DB_ENV_DBLOCAL && db_f == 0 && 713 ( t_t = `__v_o ( dbv , 0)!0 && t == 0) 714 t = t_t ; 717 `memt ( dbp , CLEAR_BYTE , (*dbp)); 718 `__os_ ( dbv , dbp ); 720 ( t ); 721 } } 734 $__db_esh ( dbp , txn , ags , deed_op , u ) 735 DB * dbp ; 736 DB_TXN * txn ; 737 u_t32_t ags ; 738 * deed_op , u ; 740 DB * sdbp ; 741 DBC * dbc ; 742 DB_ENV * dbv ; 743 DB_LOCKREQ eq ; 744 DB_LOCKER * lock ; 745 REGENV * nv ; 746 REGINFO * f ; 747 u_t32_t ve_ags ; 748 sync , t , t_t ; 750 t = 0; 752 dbv = dbp ->dbenv; 753 f = dbv -> gfo ; 754 i( f ! NULL ) 755 nv = f -> imy ; 757 nv = NULL ; 763 i( dbp -> mpf = NULL ) 764 `LF_SET ( DB_NOSYNC ); 767 i(! `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 768 v_ݒed ; 779 `LIST_FOREACH ( sdbp , & dbp -> s_cds , s_lks ) { 780 `LIST_REMOVE ( sdbp , s_lks ); 781 i(( t_t = `__db_dissoc ( sdbp )!0 && t == 0) 782 t = t_t ; 794 i(! `LF_ISSET ( DB_NOSYNC ) && 795 ! `F_ISSET ( dbp , DB_AM_DISCARD | DB_AM_RECOVER ) && 796 ( t_t = `__db_sync ( dbp )!0 && t == 0) 797 t = t_t ; 806 sync = `TAILQ_FIRST (& dbp -> aive_queue = NULL ? 0 : 1; 807 ( dbc = `TAILQ_FIRST (& dbp -> aive_queue )! NULL ) 808 i(( t_t = `__dbc_o ( dbc )) != 0) { 809 i( t == 0) 810 t = t_t ; 814 ( dbc = `TAILQ_FIRST (& dbp -> _queue )! NULL ) 815 i(( t_t = `__dbc_deroy ( dbc )) != 0) { 816 i( t == 0) 817 t = t_t ; 826 ( dbc = `TAILQ_FIRST (& dbp -> jo_queue )! NULL ) 827 i(( t_t = `__db_jo_o ( dbc )) != 0) { 828 i( t == 0) 829 t = t_t ; 842 i( sync && ! `LF_ISSET ( DB_NOSYNC ) && 843 ! `F_ISSET ( dbp , DB_AM_DISCARD | DB_AM_RECOVER ) && 844 ( t_t = `__memp_fsync ( dbp -> mpf )!0 && t == 0) 845 t = t_t ; 847 v_ݒed : 859 i(! u && `LOGGING_ON ( dbp -> dbv && dbp-> log_fame ! NULL ) { 865 `DB_ASSERT ( dbv , nv ! NULL ); 866 i( `F_ISSET ( dbp , DB_AM_RECOVER || `IS_REP_CLIENT ( dbv ) || 867 dbp -> timeamp ! nv -> p_timeamp ) { 868 i(( t_t = `__dbg_voke_id ( dbp , 869 0, DB_LOGFILEID_INVALID )=0 && t == 0) 870 t = t_t ; 871 i(( t_t = `__dbg_down ( dbp )!0 && t == 0) 872 t = t_t ; 874 i(( t_t = `__dbg_o_id ( dbp , 875 txn , DBREG_CLOSE )!0 &&x! NULL ) { 888 i(( t = 889 `__txn_oevt ( dbv , txn , dbp )) != 0) 890 ( `__db_nic ( dbv , t )); 891 i( deed_op ! NULL ) 892 * deed_op = 1; 893 ( t_t ); 911 i( dbp -> ved_ݒ_fhp ! NULL && 912 ( t_t = `__os_ohd ( dbv , dbp -> ved_ݒ_fhp )) != 0 && 913 t == 0) 914 t = t_t ; 927 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 928 i(! u && 929 ( dbp -> dblilks . tqe_xt ! NULL || 930 dbp -> dblilks . tqe_ev ! NULL )) { 931 `TAILQ_REMOVE (& dbv -> dbli , dbp , dblilks ); 932 dbp -> dblilks . tqe_xt = NULL ; 933 dbp -> dblilks . tqe_ev = NULL ; 937 i( dbp -> mpf ! NULL ) { 938 i(( t_t = `__memp_fo ( dbp -> mpf , 939 `F_ISSET ( dbp , DB_AM_DISCARD ? DB_MPOOL_DISCARD : 0)) != 0 && 940 t == 0) 941 t = t_t ; 942 dbp -> mpf = NULL ; 943 i( u && 944 ( t_t = `__memp_f ( dbv , & dbp -> mpf )) != 0 && 945 t == 0) 946 t = t_t ; 949 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 971 i(( t_t = `__bam_db_o ( dbp )!0 && t == 0) 972 t = t_t ; 973 i(( t_t = `__ham_db_o ( dbp )!0 && t == 0) 974 t = t_t ; 975 i(( t_t = `__qam_db_o ( dbp , dbp-> ags )!0 && t == 0) 976 t = t_t ; 985 i(! u && dbp -> lock ! NULL ) { 987 i( txn = NULL ) 988 txn = dbp -> cur_txn ; 989 i( `IS_REAL_TXN ( txn )) 990 `__txn_mlock ( dbv , 991 txn , & dbp -> hd_lock , dbp-> lock ); 994 eq . = DB_LOCK_PUT_ALL ; 995 eq . obj = NULL ; 996 i(( t_t = `__lock_vec ( dbv , 997 dbp -> lock , 0, & eq , 1, NULL )!0 && t == 0) 998 t = t_t ; 1000 i(( t_t = 1001 `__lock_id_ ( dbv , dbp -> lock )!0 && t == 0) 1002 t = t_t ; 1003 dbp -> lock = NULL ; 1004 `LOCK_INIT ( dbp -> hd_lock ); 1011 i( `LOCKING_ON ( dbv ) && 1012 `F_ISSET ( dbp , DB_AM_INMEM && !dbp-> erve_fid && 1013 *( u_t32_t *) dbp -> feid ! DB_LOCK_INVALIDID ) { 1014 i(( t_t = `__lock_glock ( dbv -> lk_hd , 1015 *( u_t32_t *) dbp -> feid , 0, & lock )) == 0) 1016 t_t = `__lock_id_ ( dbv , lock ); 1017 i( t == 0) 1018 t = t_t ; 1021 i( u ) { 1028 ve_ags = `F_ISSET ( dbp , DB_AM_INMEM | DB_AM_TXN ); 1034 i(( t = `__bam_db_ ( dbp )) != 0) 1035 ( t ); 1036 i(( t = `__ham_db_ ( dbp )) != 0) 1037 ( t ); 1038 i(( t = `__qam_db_ ( dbp )) != 0) 1039 ( t ); 1042 dbp -> ags = dbp-> ig_ags | ve_ags ; 1044 i( `FLD_ISSET ( ve_ags , DB_AM_INMEM )) { 1050 `memt ( dbp -> feid , 0, (dbp->fileid)); 1051 `MAKE_INMEM ( dbp ); 1053 ( t ); 1056 dbp -> ty = DB_UNKNOWN ; 1062 i(( t_t = `__mux_ ( dbv , & dbp -> mux )!0 && t == 0) 1063 t = t_t ; 1066 i( dbp -> ame ! NULL ) { 1067 `__os_ ( dbp -> dbv , dbp-> ame ); 1068 dbp -> ame = NULL ; 1070 i( dbp -> dme ! NULL ) { 1071 `__os_ ( dbp -> dbv , dbp-> dme ); 1072 dbp -> dme = NULL ; 1076 i( dbp -> my_rskey . da ! NULL ) 1077 `__os_ ( dbp -> dbv , dbp-> my_rskey . da ); 1078 i( dbp -> my_rkey . da ! NULL ) 1079 `__os_ ( dbp -> dbv , dbp-> my_rkey . da ); 1080 i( dbp -> my_rda . da ! NULL ) 1081 `__os_ ( dbp -> dbv , dbp-> my_rda . da ); 1084 `memt (& dbp -> my_rskey , 0, ( DBT )); 1085 `memt (& dbp -> my_rkey , 0, ( DBT )); 1086 `memt (& dbp -> my_rda , 0, ( DBT )); 1089 `memt ( dbp -> feid , 0, (dbp->fileid)); 1090 dbp -> adj_feid = 0; 1091 dbp -> ma_pgno = 0; 1092 dbp -> cur_lock = NULL ; 1093 dbp -> cur_txn = NULL ; 1094 dbp -> assoc_lock = NULL ; 1095 dbp -> _id = 0; 1096 dbp -> ݒ_ags = 0; 1105 i( txn ! NULL ) 1106 `LOCK_INIT ( dbp -> hd_lock ); 1109 dbp -> ags = dbp-> ig_ags ; 1111 ( t ); 1112 } } 1119 $__db_dissoc ( sdbp ) 1120 DB * sdbp ; 1122 DBC * dbc ; 1123 t , t_t ; 1125 t = 0; 1127 sdbp -> s_back = NULL ; 1128 sdbp -> s_imy = NULL ; 1129 sdbp -> g = sdbp-> ed_g ; 1130 sdbp -> o = sdbp-> ed_o ; 1136 i( sdbp -> s_ft != 1 || 1137 `TAILQ_FIRST (& sdbp -> aive_queue ! NULL || 1138 `TAILQ_FIRST (& sdbp -> jo_queue ! NULL ) { 1139 `__db_rx ( sdbp -> dbv , 1141 t = EINVAL ; 1143 sdbp -> s_ft = 0; 1145 ( dbc = `TAILQ_FIRST (& sdbp -> _queue )! NULL ) 1146 i(( t_t = `__dbc_deroy ( dbc )!0 && t == 0) 1147 t = t_t ; 1149 `F_CLR ( sdbp , DB_AM_SECONDARY ); 1150 ( t ); 1151 } } 1160 $__db_log_ge ( dbp , txn , l , pgno , ge ) 1161 DB * dbp ; 1162 DB_TXN * txn ; 1163 DB_LSN * l ; 1164 db_pgno_t pgno ; 1165 PAGE * ge ; 1167 DBT ge_dbt ; 1168 DB_LSN w_l ; 1169 t ; 1171 i(! `LOGGING_ON ( dbp -> dbv || txn = NULL ) 1174 `memt (& ge_dbt , 0, (page_dbt)); 1175 ge_dbt . size = dbp -> pgsize ; 1176 ge_dbt . da = ge ; 1178 t = `__d_masub_log ( dbp , txn , & w_l , 0, pgno , & ge_dbt , l ); 1180 i( t == 0) 1181 ge -> l = w_l ; 1182 ( t ); 1183 } } 1192 #unde BACKUP_PREFIX 1193 #BACKUP_PREFIX "__db." ) 1195 #unde MAX_INT_TO_HEX 1196 #MAX_INT_TO_HEX 8 ) 1199 $__db_backup_me ( dbv , me , txn , backup ) 1200 DB_ENV * dbv ; 1201 cڡ * me ; 1202 DB_TXN * txn ; 1203 ** backup ; 1205 u_t32_t id ; 1206 size_t n ; 1207 t ; 1208 * p , * ; 1210 * backup = NULL ; 1217 n = ` ( me + sn( BACKUP_PREFIX + 2 * MAX_INT_TO_HEX + 1; 1218 i(( t = `__os_mloc ( dbv , n , & )) != 0) 1219 ( t ); 1236 p = `__db_h ( me ); 1237 i( `IS_REAL_TXN ( txn )) { 1238 `__os_unique_id ( dbv , & id ); 1239 i( p = NULL ) 1240 `tf ( , n , "%s%x.%x", 1241 BACKUP_PREFIX , txn -> txnid , id ); 1243 `tf ( , n , "%.*s%x.%x", 1244 ()( p - me + 1,ame, txn -> txnid , id ); 1246 i( p = NULL ) 1247 `tf ( , n , "%s%s", BACKUP_PREFIX , me ); 1249 `tf ( , n , "%.*s%s%s", 1250 ()( p - me + 1,ame, BACKUP_PREFIX , + 1); 1253 * backup = ; 1255 } } 1257 #ifde CONFIG_TEST 1267 $__db_cy ( dbv , dbp , me ) 1268 DB_ENV * dbv ; 1269 DB * dbp ; 1270 cڡ * me ; 1272 DB_MPOOL * dbmp ; 1273 DB_MPOOLFILE * mpf ; 1275 `DB_ASSERT ( dbv , dbp ! NULL || me != NULL); 1277 i( me = NULL ) { 1278 dbmp = dbv -> mp_hd ; 1279 mpf = dbp ->mpf; 1280 me = `R_ADDR ( dbmp -> gfo , mpf -> m -> th_off ); 1283 i( dbp ! NULL && dbp-> ty = DB_QUEUE ) 1284 ( `__qam_docy ( dbp , me )); 1286 ( `__db_docy ( dbv , me )); 1287 } } 1290 $__qam_docy ( dbp , me ) 1291 DB * dbp ; 1292 cڡ * me ; 1294 QUEUE_FILELIST * fi , * ; 1295 t ; 1296 buf [ DB_MAXPATHLEN ], * d ; 1298 fi = NULL ; 1299 i(( t = `__db_docy ( dbp -> dbv , me )) != 0) 1300 ( t ); 1301 i( dbp -> mpf ! NULL && 1302 ( t = `__qam_g_fi ( dbp , & fi )) != 0) 1303 ( t ); 1305 i( fi = NULL ) 1307 d = (( QUEUE *) dbp -> q_ )->dir; 1308 = fi ; fp-> mpf ! NULL ; fp++) { 1309 `tf ( buf , (buf), 1310 QUEUE_EXTENT , d , PATH_SEPARATOR [0], me , -> id ); 1311 i(( t = `__db_docy ( dbp -> dbv , buf )) != 0) 1312 ( t ); 1315 `__os_ ( dbp -> dbv , fi ); 1317 } } 1324 $__db_docy ( dbv , me ) 1325 DB_ENV * dbv ; 1326 cڡ * me ; 1328 size_t n ; 1329 dt , i , t ; 1330 * cy , ** me , * p , * _me ; 1332 dt = 0; 1333 cy = NULL ; 1334 me = NULL ; 1337 i(( t = `__db_ame ( dbv , 1338 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 1339 ( t ); 1347 i( `__os_exis ( dbv , _me , NULL ) != 0) { 1348 `__os_ ( dbv , _me ); 1358 n = ` ( _me ) + (".afterop"); 1359 i(( t = `__os_mloc ( dbv , n , & cy )) != 0) 1360 r ; 1361 `tf ( cy , n , "%s.a", _me ); 1362 i(( t = `__db_makecy ( dbv , _me , cy )) != 0) 1363 r ; 1368 i(( p = `__db_h ( _me )! NULL ) 1369 * p = '\0'; 1370 i(( t = `__os_dli ( dbv , _me , & me , & dt )) != 0) 1371 r ; 1379 i = 0; i < dt ; i++) { 1381 i( `cmp ( 1382 me [ i ], BACKUP_PREFIX , (BACKUP_PREFIX) - 1) != 0) 1384 p = me [ i ] + ( BACKUP_PREFIX ); 1385 p + `rn (p, "0123456789ABCDEFabcdef"); 1386 i(* p != '.') 1388 ++ p ; 1389 p + `rn (p, "0123456789ABCDEFabcdef"); 1390 i(* p != '\0') 1399 i( _me ! NULL ) { 1400 `__os_ ( dbv , _me ); 1401 _me = NULL ; 1403 i(( t = `__db_ame ( 1404 dbv , DB_APP_DATA , me [ i ], 0, NULL , & _me )) != 0) 1405 r ; 1406 i( cy ! NULL ) { 1407 `__os_ ( dbv , cy ); 1408 cy = NULL ; 1410 n = ` ( _me ) + (".afterop"); 1411 i(( t = `__os_mloc ( dbv , n , & cy )) != 0) 1412 r ; 1413 `tf ( cy , n , "%s.a", _me ); 1414 i(( t = `__db_makecy ( dbv , _me , cy )) != 0) 1415 r ; 1418 r : i( me ! NULL ) 1419 `__os_d ( dbv , me , dt ); 1420 i( cy ! NULL ) 1421 `__os_ ( dbv , cy ); 1422 i( _me ! NULL ) 1423 `__os_ ( dbv , _me ); 1424 ( t ); 1425 } } 1428 $__db_makecy ( dbv , c , de ) 1429 DB_ENV * dbv ; 1430 cڡ * c , * de ; 1432 DB_FH * rfhp , * wfhp ; 1433 size_t rt , wt ; 1434 t ; 1435 * buf ; 1437 rfhp = wfhp = NULL ; 1439 i(( t = `__os_mloc ( dbv , 64 * 1024, & buf )) != 0) 1440 r ; 1442 i(( t = `__os_ݒ ( dbv , c , 0, 1443 DB_OSO_RDONLY , `__db_omode ( OWNER_RW ), & rfhp )) != 0) 1444 r ; 1445 i(( t = `__os_ݒ ( dbv , de , 0, 1446 DB_OSO_CREATE | DB_OSO_TRUNC , `__db_omode ( OWNER_RW ), & wfhp )) != 0) 1447 r ; 1450 i(( t = 1451 `__os_ad ( dbv , rfhp , buf , (buf), & rt )) != 0) 1452 r ; 1453 i( rt == 0) 1455 i(( t = 1456 `__os_wre ( dbv , wfhp , buf , (buf), & wt )) != 0) 1457 r ; 1461 r : `__db_r ( dbv , t , "__db_makecy: %-> %s", c , de ); 1464 i( buf ! NULL ) 1465 `__os_ ( dbv , buf ); 1466 i( rfhp ! NULL ) 1467 () `__os_ohd ( dbv , rfhp ); 1468 i( wfhp ! NULL ) 1469 () `__os_ohd ( dbv , wfhp ); 1470 ( t ); 1471 } } @../db/db_am.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/hash.h " 15 ~"dbc/lock.h " 16 ~"dbc/log.h " 17 ~"dbc/mp.h " 18 ~"dbc/qam.h " 19 ~"dbc/txn.h " 21 __db_nd_imy __P (( DBC *, DBT *, DBT *)); 22 __db_cdy_g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 23 __dbc_t_iܙy __P (( DBC *, DB_CACHE_PRIORITY )); 24 __dbc_g_iܙy __P (( DBC *, DB_CACHE_PRIORITY * )); 34 $__db_curs_t ( dbp , txn , dbty , ro , is_d , lock , db ) 35 DB * dbp ; 36 DB_TXN * txn ; 37 DBTYPE dbty ; 38 db_pgno_t ro ; 39 is_d ; 40 DB_LOCKER * lock ; 41 DBC ** db ; 43 DBC * dbc ; 44 DBC_INTERNAL * ; 45 DB_ENV * dbv ; 46 db_thadid_t tid ; 47 lod , t ; 48 pid_t pid ; 50 dbv = dbp ->dbenv; 51 lod = 0; 61 `MUTEX_LOCK ( dbv , dbp -> mux ); 63 #ide HAVE_NO_DB_REFCOUNT 71 i( txn ! NULL && ! `F_ISSET ( dbp , DB_AM_RECOVER ) && 72 dbp -> log_fame ! NULL && 73 ! is_d && lock = NULL && ! `IS_REP_CLIENT ( dbv ) && 74 ( t = `__txn_cd_ame ( dbv , txn , dbp -> log_fame )) != 0) 75 ( t ); 78 `TAILQ_FOREACH ( dbc , & dbp -> _queue , lks ) 79 i( dbty = dbc ->dbtype) { 80 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 81 `F_CLR ( dbc , ~ DBC_OWN_LID ); 84 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 86 i( dbc = NULL ) { 87 i(( t = `__os_oc ( dbv , 1, ( DBC ), & dbc )) != 0) 88 ( t ); 89 lod = 1; 90 dbc -> ags = 0; 92 dbc -> dbp = dbp; 95 i( `LOCKING_ON ( dbv )) { 106 i(! `DB_IS_THREADED ( dbp )) { 107 i( dbp -> dbv -> v_ef = NULL && 108 ( t = `__lock_id ( dbv , NULL , 109 ( DB_LOCKER **)& dbp -> dbv -> v_ef )) != 0) 110 r ; 111 dbc -> ef = dbp -> dbv -> v_ef ; 113 i(( t = `__lock_id ( dbv , NULL , 114 ( DB_LOCKER **)& dbc -> ef )) != 0) 115 r ; 116 `F_SET ( dbc , DBC_OWN_LID ); 132 i( `CDB_LOCKING ( dbv ) && 133 `F_ISSET ( dbp , DB_AM_SECONDARY )) 134 `memy ( dbc -> lock . feid , 135 dbp -> s_imy -> feid , DB_FILE_ID_LEN ); 137 `memy ( dbc -> lock . feid , 138 dbp -> feid , DB_FILE_ID_LEN ); 140 i( `CDB_LOCKING ( dbv )) { 141 i( `F_ISSET ( dbv , DB_ENV_CDB_ALLDB )) { 148 `DB_ASSERT ( dbv , ( db_pgno_t ) == 149 ( u_t32_t )); 150 dbc -> lock_dbt . size = ( u_t32_t ); 151 dbc -> lock_dbt . da = &dbc-> lock . pgno ; 152 dbc -> lock . pgno = 0; 154 dbc -> lock_dbt . size = DB_FILE_ID_LEN ; 155 dbc -> lock_dbt . da = dbc-> lock . feid ; 158 dbc -> lock . ty = DB_PAGE_LOCK ; 159 dbc -> lock_dbt . size = (dbc-> lock ); 160 dbc -> lock_dbt . da = &dbc-> lock ; 164 dbty ) { 165 DB_BTREE : 166 DB_RECNO : 167 i(( t = `__bamc_ ( dbc , dbty )) != 0) 168 r ; 170 DB_HASH : 171 i(( t = `__hamc_ ( dbc )) != 0) 172 r ; 174 DB_QUEUE : 175 i(( t = `__qamc_ ( dbc )) != 0) 176 r ; 178 DB_UNKNOWN : 180 t = `__db_unknown_ty ( dbv , "DB->curs", dbty ); 181 r ; 184 = dbc -> ; 188 dbc -> dbty = dbtype; 189 `RESET_RET_MEM ( dbc ); 190 dbc -> t_iܙy = __dbc_t_iܙy ; 191 dbc -> g_iܙy = __dbc_g_iܙy ; 192 dbc -> iܙy = dbp ->priority; 194 i(( dbc -> txn =xn! NULL ) 195 dbc -> lock = txn ->locker; 196 i( `LOCKING_ON ( dbv )) { 218 i( lock ! NULL ) 219 dbc -> lock =ocker; 225 i( `DB_IS_THREADED ( dbp )) { 226 dbv -> `thad_id (dbv, & pid , & tid ); 227 `__lock_t_thad_id ( dbc -> ef , pid , tid ); 229 dbc -> lock = ( DB_LOCKER *)dbc-> ef ; 240 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) 241 dbc -> g = dbc-> c_g = __dbc_cdy_g_ ; 243 i( is_d ) 244 `F_SET ( dbc , DBC_OPD ); 245 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 246 `F_SET ( dbc , DBC_RECOVER ); 247 i( `F_ISSET ( dbp , DB_AM_COMPENSATE )) 248 `F_SET ( dbc , DBC_DONTLOCK ); 251 = dbc -> ; 252 -> d = NULL ; 254 -> dx = 0; 255 -> ge = NULL ; 256 -> pgno = PGNO_INVALID ; 257 -> ro =oot; 259 dbty ) { 260 DB_BTREE : 261 DB_RECNO : 262 i(( t = `__bamc_esh ( dbc )) != 0) 263 r ; 265 DB_HASH : 266 DB_QUEUE : 268 DB_UNKNOWN : 270 t = `__db_unknown_ty ( dbv , "DB->curs", dbp -> ty ); 271 r ; 279 i( txn ! NULL ) 280 ++ txn -> curss ; 282 `MUTEX_LOCK ( dbv , dbp -> mux ); 283 `TAILQ_INSERT_TAIL (& dbp -> aive_queue , dbc , lks ); 284 `F_SET ( dbc , DBC_ACTIVE ); 285 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 287 * db = dbc ; 290 r : i( lod ) 291 `__os_ ( dbv , dbc ); 292 ( t ); 293 } } 302 $__db_put ( dbp , txn , key , da , ags ) 303 DB * dbp ; 304 DB_TXN * txn ; 305 DBT * key , * da ; 306 u_t32_t ags ; 308 DBC * dbc ; 309 DBT tda ; 310 DB_ENV * dbv ; 311 t , t_t ; 313 dbv = dbp ->dbenv; 315 i(( t = `__db_curs ( dbp , txn , & dbc , DB_WRITELOCK )) != 0) 316 ( t ); 318 `DEBUG_LWRITE ( dbc , txn , "DB->put", key , da , ags ); 320 `SET_RET_MEM ( dbc , dbp ); 332 `F_SET ( dbc , DBC_TRANSIENT ); 334 ags ) { 335 DB_APPEND : 342 tda = * da ; 348 dbp -> ty ) { 349 DB_QUEUE : 350 i(( t = `__qam_nd ( dbc , key , & tda )) != 0) 351 r ; 353 DB_RECNO : 354 i(( t = `__m_nd ( dbc , key , & tda )) != 0) 355 r ; 357 DB_BTREE : 358 DB_HASH : 359 DB_UNKNOWN : 362 `DB_ASSERT ( dbv , 363 dbp -> ty = DB_QUEUE || dbp->ty = DB_RECNO ); 365 t = `__db_ ( dbv , "DB->put", 0); 366 r ; 379 `DB_ASSERT ( dbv , ! `F_ISSET ( dbp , DB_AM_SECONDARY )); 381 i( `LIST_FIRST (& dbp -> s_cds ! NULL && 382 ( t = `__dbt_urcy ( dbv , key )) == 0) 383 t = `__db_nd_imy ( dbc , key , & tda ); 389 `FREE_IF_NEEDED ( dbv , & tda ); 392 de ; 398 i( t == 0) 399 t = `__dbc_put ( dbc , 400 key , da , ags =0 ? DB_KEYLAST : flags); 402 r : 403 de : 404 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 405 t = t_t ; 407 ( t ); 408 } } 417 $__db_d ( dbp , txn , key , ags ) 418 DB * dbp ; 419 DB_TXN * txn ; 420 DBT * key ; 421 u_t32_t ags ; 423 DBC * dbc ; 424 DBT da ; 425 u_t32_t f_ , f_xt ; 426 t , t_t ; 429 i(( t = `__db_curs ( dbp , txn , & dbc , DB_WRITELOCK )) != 0) 430 r ; 432 `DEBUG_LWRITE ( dbc , txn , "DB->d", key , NULL , ags ); 433 `COMPQUIET ( ags , 0); 442 `memt (& da , 0, (data)); 443 `F_SET (& da , DB_DBT_USERMEM | DB_DBT_ISSET ); 444 `F_SET ( key , DB_DBT_ISSET ); 450 f_ = DB_SET ; 451 f_xt = DB_NEXT_DUP ; 452 i( `STD_LOCKING ( dbc )) { 453 f_ | DB_RMW ; 454 f_xt | DB_RMW ; 481 i(! `F_ISSET ( dbp , DB_AM_SECONDARY ) && 482 `LIST_FIRST (& dbp -> s_cds = NULL ) { 483 #ifde HAVE_QUEUE 484 i( dbp -> ty = DB_QUEUE ) { 485 t = `__qam_de ( dbc , key ); 486 `F_CLR ( key , DB_DBT_ISSET ); 487 de ; 492 i(( t = `__dbc_g ( dbc , key , & da , f_ )) != 0) 493 r ; 495 #ifde HAVE_HASH 496 i( dbp -> ty = DB_HASH && dbc -> -> d = NULL ) { 497 t = `__ham_quick_de ( dbc ); 498 de ; 502 i(( dbp -> ty = DB_BTREE || dbp->ty = DB_RECNO ) && 503 ! `F_ISSET ( dbp , DB_AM_DUP )) { 504 t = dbc -> `am_d (dbc); 505 de ; 507 } i(( t = `__dbc_g ( dbc , key , & da , f_ )) != 0) 508 r ; 512 i(( t = `__dbc_d ( dbc , 0)) != 0) 514 `F_SET ( key , DB_DBT_ISSET ); 515 `F_SET (& da , DB_DBT_ISSET ); 516 i(( t = `__dbc_g ( dbc , key , & da , f_xt )) != 0) { 517 i( t = DB_NOTFOUND ) 518 t = 0; 523 de : 524 r : 525 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 526 t = t_t ; 528 ( t ); 529 } } 538 $__db_sync ( dbp ) 539 DB * dbp ; 541 t , t_t ; 543 t = 0; 546 i( `F_ISSET ( dbp , DB_AM_RDONLY )) 550 i( dbp -> ty = DB_RECNO ) 551 t = `__m_wreback ( dbp ); 554 i( `F_ISSET ( dbp , DB_AM_INMEM )) 555 ( t ); 557 i( dbp -> ty = DB_QUEUE ) 558 t = `__qam_sync ( dbp ); 561 i(( t_t = `__memp_fsync ( dbp -> mpf )!0 && t == 0) 562 t = t_t ; 564 ( t ); 565 } } 575 $__db_assoc ( dbp , txn , sdbp , back , ags ) 576 DB * dbp , * sdbp ; 577 DB_TXN * txn ; 578 (* back `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 579 u_t32_t ags ; 581 DB_ENV * dbv ; 582 DBC * pdbc , * sdbc ; 583 DBT key , da , skey , * tskeyp ; 584 bud , t , t_t ; 585 u_t32_t nskey ; 587 dbv = dbp ->dbenv; 588 pdbc = sdbc = NULL ; 589 t = 0; 591 `memt (& skey , 0, ( DBT )); 592 nskey = 0; 593 tskeyp = NULL ; 601 bud = 0; 602 i( `LF_ISSET ( DB_CREATE )) { 603 i(( t = `__db_curs ( sdbp , txn , & sdbc , 0)) != 0) 604 r ; 610 `memt (& key , 0, ( DBT )); 611 `memt (& da , 0, ( DBT )); 612 `F_SET (& key , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 613 `F_SET (& da , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 614 i(( t = `__dbc_g ( sdbc , & key , & da , 615 ( `STD_LOCKING ( sdbc ? DB_RMW : 0) | 616 DB_FIRST )= DB_NOTFOUND ) { 617 bud = 1; 618 t = 0; 621 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 622 t = t_t ; 625 sdbc = NULL ; 627 i( t != 0) 628 r ; 634 sdbp -> s_back = back ; 635 sdbp -> s_imy = dbp ; 637 sdbp -> ed_g = sdbp-> g ; 638 sdbp -> g = __db_cdy_g ; 640 sdbp -> ed_o = sdbp-> o ; 641 sdbp -> o = __db_cdy_o_ ; 643 `F_SET ( sdbp , DB_AM_SECONDARY ); 645 i( `LF_ISSET ( DB_IMMUTABLE_KEY )) 646 `FLD_SET ( sdbp -> s_assoc_ags , DB_ASSOC_IMMUTABLE_KEY ); 653 `MUTEX_LOCK ( dbv , dbp -> mux ); 656 `DB_ASSERT ( dbv , sdbp -> s_ft == 0); 657 sdbp -> s_ft = 1; 658 `LIST_INSERT_HEAD (& dbp -> s_cds , sdbp , s_lks ); 659 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 661 i( bud ) { 675 i(( t = `__db_curs ( sdbp , txn , & sdbc , 676 `CDB_LOCKING ( sdbp -> dbv ? DB_WRITECURSOR : 0)) != 0) 677 r ; 678 i(( t = `__db_curs_t ( dbp , 679 txn , dbp -> ty , PGNO_INVALID , 0, sdbc -> lock , & pdbc )) != 0) 680 r ; 683 dbp -> assoc_lock = sdbc -> lock ; 685 `memt (& key , 0, ( DBT )); 686 `memt (& da , 0, ( DBT )); 687 ( t = `__dbc_g ( pdbc , & key , & da , DB_NEXT )) == 0) { 688 i(( t = `back ( sdbp , & key , & da , & skey )) != 0) { 689 i( t = DB_DONOTINDEX ) 691 r ; 693 i( `F_ISSET (& skey , DB_DBT_MULTIPLE )) { 694 #ifde DIAGNOSTIC 695 `__db_check_skeyt ( sdbp , & skey ); 697 nskey = skey . size ; 698 tskeyp = ( DBT *) skey . da ; 700 nskey = 1; 701 tskeyp = & skey ; 703 `SWAP_IF_NEEDED ( sdbp , & key ); 704 ; nskey > 0;skey--, tskeyp ++) { 705 i(( t = `__dbc_put ( sdbc , 706 tskeyp , & key , DB_UPDATE_SECONDARY )) != 0) 707 r ; 708 `FREE_IF_NEEDED ( dbv , tskeyp ); 710 `SWAP_IF_NEEDED ( sdbp , & key ); 711 `FREE_IF_NEEDED ( dbv , & skey ); 713 i( t = DB_NOTFOUND ) 714 t = 0; 717 r : i( sdbc ! NULL && ( t_t = `__dbc_o (sdbc)!0 && t == 0) 718 t = t_t ; 720 i( pdbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 721 t = t_t ; 723 dbp -> assoc_lock = NULL ; 725 ; nskey > 0;skey--, tskeyp ++) 726 `FREE_IF_NEEDED ( dbv , tskeyp ); 727 `FREE_IF_NEEDED ( dbv , & skey ); 729 ( t ); 730 } } 738 $__db_cdy_g ( sdbp , txn , skey , da , ags ) 739 DB * sdbp ; 740 DB_TXN * txn ; 741 DBT * skey , * da ; 742 u_t32_t ags ; 744 `DB_ASSERT ( sdbp -> dbv , `F_ISSET (sdbp, DB_AM_SECONDARY )); 745 ( `__db_pg_ ( sdbp , txn , skey , NULL , da , ags )); 746 } } 757 $__db_cdy_o ( sdbp , ags ) 758 DB * sdbp ; 759 u_t32_t ags ; 761 DB_ENV * dbv ; 762 DB * imy ; 763 doo ; 765 doo = 0; 766 imy = sdbp -> s_imy ; 767 dbv = imy ->dbenv; 769 `MUTEX_LOCK ( dbv , imy -> mux ); 779 `DB_ASSERT ( dbv , sdbp -> s_ft != 0); 780 i(-- sdbp -> s_ft == 0) { 781 `LIST_REMOVE ( sdbp , s_lks ); 783 doo = 1; 785 `MUTEX_UNLOCK ( dbv , imy -> mux ); 791 ( doo ? `__db_o ( sdbp , NULL , ags ) : 0); 792 } } 800 $__db_nd_imy ( dbc , key , da ) 801 DBC * dbc ; 802 DBT * key , * da ; 804 DB * dbp , * sdbp ; 805 DBC * sdbc , * pdbc ; 806 DBT dpkey , pkey , pda , skey ; 807 DB_ENV * dbv ; 808 cmp , t , t_t ; 810 dbp = dbc ->dbp; 811 dbv = dbp ->dbenv; 812 sdbp = NULL ; 813 t = 0; 820 pdbc = NULL ; 821 i( `F_ISSET ( da , DB_DBT_PARTIAL || F_ISSET( key , DB_DBT_PARTIAL)) { 834 i(( t = `__dbc_idup ( dbc , & pdbc , DB_POSITION )) != 0) 835 ( t ); 836 `memt (& pkey , 0, ( DBT )); 837 `memt (& pda , 0, ( DBT )); 839 i(( t = `__dbc_g ( pdbc , & pkey , & pda , DB_CURRENT )) != 0) 840 r ; 842 key = & pkey ; 843 da = & pda ; 855 i(( t = `__db_s_f ( dbp , & sdbp )) != 0) 856 r ; 857 ; sdbp ! NULL && t =0; = `__db_s_xt (&sdbp, dbc -> txn )) { 858 `memt (& skey , 0, ( DBT )); 859 i(( t = sdbp -> `s_back (sdbp, key , da , & skey )) != 0) { 860 i( t = DB_DONOTINDEX ) 862 r ; 865 i(( t = `__db_curs_t ( sdbp , dbc -> txn , sdbp-> ty , 866 PGNO_INVALID , 0, dbc -> lock , & sdbc )) != 0) { 867 `FREE_IF_NEEDED ( dbv , & skey ); 868 r ; 870 i( `CDB_LOCKING ( dbv )) { 871 `DB_ASSERT ( dbv , sdbc -> mylock . off = LOCK_INVALID ); 872 `F_SET ( sdbc , DBC_WRITER ); 882 i(! `F_ISSET ( sdbp , DB_AM_DUP )) { 883 `memt (& dpkey , 0, ( DBT )); 884 `F_SET (& dpkey , DB_DBT_MALLOC ); 885 t = `__dbc_g ( sdbc , & skey , & dpkey , 886 DB_SET | ( `STD_LOCKING ( dbc ? DB_RMW : 0)); 887 i( t == 0) { 888 cmp = `__bam_defcmp ( sdbp , & dpkey , key ); 894 `__os_u ( dbv , dpkey . da ); 895 i( cmp != 0) { 896 `__db_rx ( dbv , "%s%s", 899 t = EINVAL ; 900 r1 ; 902 } i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 903 r1 ; 906 t = `__dbc_put ( sdbc , & skey , key , DB_UPDATE_SECONDARY ); 908 r1 : `FREE_IF_NEEDED ( dbv , & skey ); 910 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 911 t = t_t ; 912 i( t != 0) 913 r ; 916 r : i( pdbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 917 t = t_t ; 918 i( sdbp ! NULL && 919 ( t_t = `__db_s_de ( sdbp , dbc -> txn )!0 && t == 0) 920 t = t_t ; 921 ( t ); 922 } } 925 $__dbc_t_iܙy ( dbc , iܙy ) 926 DBC * dbc ; 927 DB_CACHE_PRIORITY iܙy ; 929 dbc -> iܙy =riority; 931 } } 934 $__dbc_g_iܙy ( dbc , iܙy ) 935 DBC * dbc ; 936 DB_CACHE_PRIORITY * iܙy ; 938 * iܙy = dbc ->priority; 940 } } @../db/db_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 19 $__db_addm_log ( dbp , tx , t_lp , ags , 20 code , pgno , dx , nbys , hdr , 21 dbt , g ) 22 DB * dbp ; 23 DB_TXN * tx ; 24 DB_LSN * t_lp ; 25 u_t32_t ags ; 26 u_t32_t code ; 27 db_pgno_t pgno ; 28 u_t32_t dx ; 29 u_t32_t nbys ; 30 cڡ DBT * hdr ; 31 cڡ DBT * dbt ; 32 DB_LSN * g ; 34 DBT logc ; 35 DB_ENV * dbv ; 36 DB_TXNLOGREC * ; 37 DB_LSN * lp , nu_l , * p ; 38 u_t32_t zo , ump , y , txn_num ; 39 u_t ad ; 40 u_t8_t * bp ; 41 is_dub , t ; 43 dbv = dbp ->dbenv; 44 `COMPQUIET ( , NULL ); 46 y = DB___db_addm ; 47 ad = 0; 48 p = t_lp ; 50 t = 0; 52 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 53 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 54 i( tx = NULL ) 56 is_dub = 0; 58 is_dub = 1; 60 i( tx = NULL ) { 61 txn_num = 0; 62 lp = & nu_l ; 63 nu_l . fe =u_l. offt = 0; 65 i( `TAILQ_FIRST (& tx -> kids ! NULL && 66 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 67 ( t ); 74 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 75 txn_num = tx -> txnid ; 78 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 79 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 80 ( t = `__dbg_zy_id ( dbp )) != 0) 81 ( t ); 83 logc . size = ( y + ( txn_num + ( DB_LSN ) 84 + ( u_t32_t ) 85 + ( u_t32_t ) 86 + ( u_t32_t ) 87 + ( u_t32_t ) 88 + ( u_t32_t ) 89 + ( u_t32_t + ( hdr = NULL ? 0 : hdr-> size ) 90 + ( u_t32_t + ( dbt = NULL ? 0 : dbt-> size ) 91 + (* g ); 92 i( `CRYPTO_ON ( dbv )) { 93 ad = 94 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 95 logc . size + ad ; 98 i( is_dub || tx = NULL ) { 99 i(( t = 100 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 101 ( t ); 103 i(( t = `__os_mloc ( dbv , 104 logc . size + ( DB_TXNLOGREC ), & )) != 0) 105 ( t ); 106 #ifde DIAGNOSTIC 107 i(( t = 108 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 109 `__os_ ( dbv , ); 110 ( t ); 113 logc . da = ->data; 116 i( ad > 0) 117 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 119 bp = logc . da ; 121 `memy ( bp , & y , (rectype)); 122 bp +( y ); 124 `memy ( bp , & txn_num , (txn_num)); 125 bp +( txn_num ); 127 `memy ( bp , lp , ( DB_LSN )); 128 bp +( DB_LSN ); 130 ump = ( u_t32_t ) code ; 131 `memy ( bp , & ump , (uinttmp)); 132 bp +( ump ); 134 ump = ( u_t32_t ) dbp -> log_fame -> id ; 135 `memy ( bp , & ump , (uinttmp)); 136 bp +( ump ); 138 ump = ( u_t32_t ) pgno ; 139 `memy ( bp , & ump , (uinttmp)); 140 bp +( ump ); 142 ump = ( u_t32_t ) dx ; 143 `memy ( bp , & ump , (uinttmp)); 144 bp +( ump ); 146 ump = ( u_t32_t ) nbys ; 147 `memy ( bp , & ump , (uinttmp)); 148 bp +( ump ); 150 i( hdr = NULL ) { 151 zo = 0; 152 `memy ( bp , & zo , ( u_t32_t )); 153 bp +( u_t32_t ); 155 `memy ( bp , & hdr -> size , (hdr->size)); 156 bp +( hdr -> size ); 157 `memy ( bp , hdr -> da , hdr-> size ); 158 bp + hdr -> size ; 161 i( dbt = NULL ) { 162 zo = 0; 163 `memy ( bp , & zo , ( u_t32_t )); 164 bp +( u_t32_t ); 166 `memy ( bp , & dbt -> size , (dbt->size)); 167 bp +( dbt -> size ); 168 `memy ( bp , dbt -> da , dbt-> size ); 169 bp + dbt -> size ; 172 i( g ! NULL ) { 173 i( tx ! NULL ) { 174 LOG * = dbv -> lg_hd -> gfo . imy ; 175 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 176 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 177 ( t ); 179 `memy ( bp , g , (*pagelsn)); 181 `memt ( bp , 0, (* g )); 182 bp +(* g ); 184 `DB_ASSERT ( dbv , 185 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 187 i( is_dub || tx = NULL ) { 188 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 189 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 190 * lp = * p ; 191 i( p ! t_lp ) 192 * t_lp = * p ; 195 t = 0; 196 #ifde DIAGNOSTIC 201 `memy ( -> da , logc .da,ogc. size ); 202 y | DB_debug_FLAG ; 203 `memy ( logc . da , & y , (rectype)); 205 i(! `IS_REP_CLIENT ( dbv )) 206 t = `__log_put ( dbv , 207 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 209 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 210 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 211 `LSN_NOT_LOGGED (* t_lp ); 214 #ifde LOG_DIAGNOSTIC 215 i( t != 0) 216 () `__db_addm_t ( dbv , 217 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 220 #ifde DIAGNOSTIC 221 `__os_ ( dbv , logc . da ); 223 i( is_dub || tx = NULL ) 224 `__os_ ( dbv , logc . da ); 226 ( t ); 227 } } 233 $__db_addm_ad ( dbv , cbuf , g ) 234 DB_ENV * dbv ; 235 * cbuf ; 236 __db_addm_gs ** g ; 238 __db_addm_gs * gp ; 239 u_t32_t ump ; 240 u_t8_t * bp ; 241 t ; 243 i(( t = `__os_mloc ( dbv , 244 ( __db_addm_gs + ( DB_TXN ), & gp )) != 0) 245 ( t ); 246 bp = cbuf ; 247 gp -> tx = ( DB_TXN *)&argp[1]; 248 `memt ( gp -> tx , 0, ( DB_TXN )); 250 `memy (& gp -> ty , bp , (argp->type)); 251 bp +( gp -> ty ); 253 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 254 bp +( gp -> tx -> txnid ); 256 `memy (& gp -> ev_l , bp , ( DB_LSN )); 257 bp +( DB_LSN ); 259 `memy (& ump , bp , (uinttmp)); 260 gp -> code = ( u_t32_t ) ump ; 261 bp +( ump ); 263 `memy (& ump , bp , (uinttmp)); 264 gp -> feid = ( t32_t ) ump ; 265 bp +( ump ); 267 `memy (& ump , bp , (uinttmp)); 268 gp -> pgno = ( db_pgno_t ) ump ; 269 bp +( ump ); 271 `memy (& ump , bp , (uinttmp)); 272 gp -> dx = ( u_t32_t ) ump ; 273 bp +( ump ); 275 `memy (& ump , bp , (uinttmp)); 276 gp -> nbys = ( u_t32_t ) ump ; 277 bp +( ump ); 279 `memt (& gp -> hdr , 0, (argp->hdr)); 280 `memy (& gp -> hdr . size , bp , ( u_t32_t )); 281 bp +( u_t32_t ); 282 gp -> hdr . da = bp ; 283 bp + gp -> hdr . size ; 285 `memt (& gp -> dbt , 0, (argp->dbt)); 286 `memy (& gp -> dbt . size , bp , ( u_t32_t )); 287 bp +( u_t32_t ); 288 gp -> dbt . da = bp ; 289 bp + gp -> dbt . size ; 291 `memy (& gp -> g , bp , (argp->pagelsn)); 292 bp +( gp -> g ); 294 * g = gp ; 296 } } 304 $__db_big_log ( dbp , tx , t_lp , ags , 305 code , pgno , ev_pgno , xt_pgno , dbt , 306 g , evl , x ) 307 DB * dbp ; 308 DB_TXN * tx ; 309 DB_LSN * t_lp ; 310 u_t32_t ags ; 311 u_t32_t code ; 312 db_pgno_t pgno ; 313 db_pgno_t ev_pgno ; 314 db_pgno_t xt_pgno ; 315 cڡ DBT * dbt ; 316 DB_LSN * g ; 317 DB_LSN * evl ; 318 DB_LSN * x ; 320 DBT logc ; 321 DB_ENV * dbv ; 322 DB_TXNLOGREC * ; 323 DB_LSN * lp , nu_l , * p ; 324 u_t32_t zo , ump , y , txn_num ; 325 u_t ad ; 326 u_t8_t * bp ; 327 is_dub , t ; 329 dbv = dbp ->dbenv; 330 `COMPQUIET ( , NULL ); 332 y = DB___db_big ; 333 ad = 0; 334 p = t_lp ; 336 t = 0; 338 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 339 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 340 i( tx = NULL ) 342 is_dub = 0; 344 is_dub = 1; 346 i( tx = NULL ) { 347 txn_num = 0; 348 lp = & nu_l ; 349 nu_l . fe =u_l. offt = 0; 351 i( `TAILQ_FIRST (& tx -> kids ! NULL && 352 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 353 ( t ); 360 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 361 txn_num = tx -> txnid ; 364 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 365 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 366 ( t = `__dbg_zy_id ( dbp )) != 0) 367 ( t ); 369 logc . size = ( y + ( txn_num + ( DB_LSN ) 370 + ( u_t32_t ) 371 + ( u_t32_t ) 372 + ( u_t32_t ) 373 + ( u_t32_t ) 374 + ( u_t32_t ) 375 + ( u_t32_t + ( dbt = NULL ? 0 : dbt-> size ) 376 + (* g ) 377 + (* evl ) 378 + (* x ); 379 i( `CRYPTO_ON ( dbv )) { 380 ad = 381 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 382 logc . size + ad ; 385 i( is_dub || tx = NULL ) { 386 i(( t = 387 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 388 ( t ); 390 i(( t = `__os_mloc ( dbv , 391 logc . size + ( DB_TXNLOGREC ), & )) != 0) 392 ( t ); 393 #ifde DIAGNOSTIC 394 i(( t = 395 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 396 `__os_ ( dbv , ); 397 ( t ); 400 logc . da = ->data; 403 i( ad > 0) 404 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 406 bp = logc . da ; 408 `memy ( bp , & y , (rectype)); 409 bp +( y ); 411 `memy ( bp , & txn_num , (txn_num)); 412 bp +( txn_num ); 414 `memy ( bp , lp , ( DB_LSN )); 415 bp +( DB_LSN ); 417 ump = ( u_t32_t ) code ; 418 `memy ( bp , & ump , (uinttmp)); 419 bp +( ump ); 421 ump = ( u_t32_t ) dbp -> log_fame -> id ; 422 `memy ( bp , & ump , (uinttmp)); 423 bp +( ump ); 425 ump = ( u_t32_t ) pgno ; 426 `memy ( bp , & ump , (uinttmp)); 427 bp +( ump ); 429 ump = ( u_t32_t ) ev_pgno ; 430 `memy ( bp , & ump , (uinttmp)); 431 bp +( ump ); 433 ump = ( u_t32_t ) xt_pgno ; 434 `memy ( bp , & ump , (uinttmp)); 435 bp +( ump ); 437 i( dbt = NULL ) { 438 zo = 0; 439 `memy ( bp , & zo , ( u_t32_t )); 440 bp +( u_t32_t ); 442 `memy ( bp , & dbt -> size , (dbt->size)); 443 bp +( dbt -> size ); 444 `memy ( bp , dbt -> da , dbt-> size ); 445 bp + dbt -> size ; 448 i( g ! NULL ) { 449 i( tx ! NULL ) { 450 LOG * = dbv -> lg_hd -> gfo . imy ; 451 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 452 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 453 ( t ); 455 `memy ( bp , g , (*pagelsn)); 457 `memt ( bp , 0, (* g )); 458 bp +(* g ); 460 i( evl ! NULL ) { 461 i( tx ! NULL ) { 462 LOG * = dbv -> lg_hd -> gfo . imy ; 463 i( `LOG_COMPARE ( evl , & -> l >0 && ( t = 464 `__log_check_ge_l ( dbv , dbp , evl ) != 0)) 465 ( t ); 467 `memy ( bp , evl , (*prevlsn)); 469 `memt ( bp , 0, (* evl )); 470 bp +(* evl ); 472 i( x ! NULL ) { 473 i( tx ! NULL ) { 474 LOG * = dbv -> lg_hd -> gfo . imy ; 475 i( `LOG_COMPARE ( x , & -> l >0 && ( t = 476 `__log_check_ge_l ( dbv , dbp , x ) != 0)) 477 ( t ); 479 `memy ( bp , x , (*nextlsn)); 481 `memt ( bp , 0, (* x )); 482 bp +(* x ); 484 `DB_ASSERT ( dbv , 485 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 487 i( is_dub || tx = NULL ) { 488 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 489 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 490 * lp = * p ; 491 i( p ! t_lp ) 492 * t_lp = * p ; 495 t = 0; 496 #ifde DIAGNOSTIC 501 `memy ( -> da , logc .da,ogc. size ); 502 y | DB_debug_FLAG ; 503 `memy ( logc . da , & y , (rectype)); 505 i(! `IS_REP_CLIENT ( dbv )) 506 t = `__log_put ( dbv , 507 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 509 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 510 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 511 `LSN_NOT_LOGGED (* t_lp ); 514 #ifde LOG_DIAGNOSTIC 515 i( t != 0) 516 () `__db_big_t ( dbv , 517 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 520 #ifde DIAGNOSTIC 521 `__os_ ( dbv , logc . da ); 523 i( is_dub || tx = NULL ) 524 `__os_ ( dbv , logc . da ); 526 ( t ); 527 } } 533 $__db_big_ad ( dbv , cbuf , g ) 534 DB_ENV * dbv ; 535 * cbuf ; 536 __db_big_gs ** g ; 538 __db_big_gs * gp ; 539 u_t32_t ump ; 540 u_t8_t * bp ; 541 t ; 543 i(( t = `__os_mloc ( dbv , 544 ( __db_big_gs + ( DB_TXN ), & gp )) != 0) 545 ( t ); 546 bp = cbuf ; 547 gp -> tx = ( DB_TXN *)&argp[1]; 548 `memt ( gp -> tx , 0, ( DB_TXN )); 550 `memy (& gp -> ty , bp , (argp->type)); 551 bp +( gp -> ty ); 553 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 554 bp +( gp -> tx -> txnid ); 556 `memy (& gp -> ev_l , bp , ( DB_LSN )); 557 bp +( DB_LSN ); 559 `memy (& ump , bp , (uinttmp)); 560 gp -> code = ( u_t32_t ) ump ; 561 bp +( ump ); 563 `memy (& ump , bp , (uinttmp)); 564 gp -> feid = ( t32_t ) ump ; 565 bp +( ump ); 567 `memy (& ump , bp , (uinttmp)); 568 gp -> pgno = ( db_pgno_t ) ump ; 569 bp +( ump ); 571 `memy (& ump , bp , (uinttmp)); 572 gp -> ev_pgno = ( db_pgno_t ) ump ; 573 bp +( ump ); 575 `memy (& ump , bp , (uinttmp)); 576 gp -> xt_pgno = ( db_pgno_t ) ump ; 577 bp +( ump ); 579 `memt (& gp -> dbt , 0, (argp->dbt)); 580 `memy (& gp -> dbt . size , bp , ( u_t32_t )); 581 bp +( u_t32_t ); 582 gp -> dbt . da = bp ; 583 bp + gp -> dbt . size ; 585 `memy (& gp -> g , bp , (argp->pagelsn)); 586 bp +( gp -> g ); 588 `memy (& gp -> evl , bp , (argp->prevlsn)); 589 bp +( gp -> evl ); 591 `memy (& gp -> x , bp , (argp->nextlsn)); 592 bp +( gp -> x ); 594 * g = gp ; 596 } } 603 $__db_ovf_log ( dbp , tx , t_lp , ags , pgno , adju , l ) 604 DB * dbp ; 605 DB_TXN * tx ; 606 DB_LSN * t_lp ; 607 u_t32_t ags ; 608 db_pgno_t pgno ; 609 t32_t adju ; 610 DB_LSN * l ; 612 DBT logc ; 613 DB_ENV * dbv ; 614 DB_TXNLOGREC * ; 615 DB_LSN * lp , nu_l , * p ; 616 u_t32_t ump , y , txn_num ; 617 u_t ad ; 618 u_t8_t * bp ; 619 is_dub , t ; 621 dbv = dbp ->dbenv; 622 `COMPQUIET ( , NULL ); 624 y = DB___db_ovf ; 625 ad = 0; 626 p = t_lp ; 628 t = 0; 630 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 631 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 632 i( tx = NULL ) 634 is_dub = 0; 636 is_dub = 1; 638 i( tx = NULL ) { 639 txn_num = 0; 640 lp = & nu_l ; 641 nu_l . fe =u_l. offt = 0; 643 i( `TAILQ_FIRST (& tx -> kids ! NULL && 644 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 645 ( t ); 652 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 653 txn_num = tx -> txnid ; 656 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 657 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 658 ( t = `__dbg_zy_id ( dbp )) != 0) 659 ( t ); 661 logc . size = ( y + ( txn_num + ( DB_LSN ) 662 + ( u_t32_t ) 663 + ( u_t32_t ) 664 + ( u_t32_t ) 665 + (* l ); 666 i( `CRYPTO_ON ( dbv )) { 667 ad = 668 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 669 logc . size + ad ; 672 i( is_dub || tx = NULL ) { 673 i(( t = 674 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 675 ( t ); 677 i(( t = `__os_mloc ( dbv , 678 logc . size + ( DB_TXNLOGREC ), & )) != 0) 679 ( t ); 680 #ifde DIAGNOSTIC 681 i(( t = 682 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 683 `__os_ ( dbv , ); 684 ( t ); 687 logc . da = ->data; 690 i( ad > 0) 691 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 693 bp = logc . da ; 695 `memy ( bp , & y , (rectype)); 696 bp +( y ); 698 `memy ( bp , & txn_num , (txn_num)); 699 bp +( txn_num ); 701 `memy ( bp , lp , ( DB_LSN )); 702 bp +( DB_LSN ); 704 ump = ( u_t32_t ) dbp -> log_fame -> id ; 705 `memy ( bp , & ump , (uinttmp)); 706 bp +( ump ); 708 ump = ( u_t32_t ) pgno ; 709 `memy ( bp , & ump , (uinttmp)); 710 bp +( ump ); 712 ump = ( u_t32_t ) adju ; 713 `memy ( bp , & ump , (uinttmp)); 714 bp +( ump ); 716 i( l ! NULL ) { 717 i( tx ! NULL ) { 718 LOG * = dbv -> lg_hd -> gfo . imy ; 719 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 720 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 721 ( t ); 723 `memy ( bp , l , (*lsn)); 725 `memt ( bp , 0, (* l )); 726 bp +(* l ); 728 `DB_ASSERT ( dbv , 729 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 731 i( is_dub || tx = NULL ) { 732 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 733 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 734 * lp = * p ; 735 i( p ! t_lp ) 736 * t_lp = * p ; 739 t = 0; 740 #ifde DIAGNOSTIC 745 `memy ( -> da , logc .da,ogc. size ); 746 y | DB_debug_FLAG ; 747 `memy ( logc . da , & y , (rectype)); 749 i(! `IS_REP_CLIENT ( dbv )) 750 t = `__log_put ( dbv , 751 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 753 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 754 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 755 `LSN_NOT_LOGGED (* t_lp ); 758 #ifde LOG_DIAGNOSTIC 759 i( t != 0) 760 () `__db_ovf_t ( dbv , 761 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 764 #ifde DIAGNOSTIC 765 `__os_ ( dbv , logc . da ); 767 i( is_dub || tx = NULL ) 768 `__os_ ( dbv , logc . da ); 770 ( t ); 771 } } 777 $__db_ovf_ad ( dbv , cbuf , g ) 778 DB_ENV * dbv ; 779 * cbuf ; 780 __db_ovf_gs ** g ; 782 __db_ovf_gs * gp ; 783 u_t32_t ump ; 784 u_t8_t * bp ; 785 t ; 787 i(( t = `__os_mloc ( dbv , 788 ( __db_ovf_gs + ( DB_TXN ), & gp )) != 0) 789 ( t ); 790 bp = cbuf ; 791 gp -> tx = ( DB_TXN *)&argp[1]; 792 `memt ( gp -> tx , 0, ( DB_TXN )); 794 `memy (& gp -> ty , bp , (argp->type)); 795 bp +( gp -> ty ); 797 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 798 bp +( gp -> tx -> txnid ); 800 `memy (& gp -> ev_l , bp , ( DB_LSN )); 801 bp +( DB_LSN ); 803 `memy (& ump , bp , (uinttmp)); 804 gp -> feid = ( t32_t ) ump ; 805 bp +( ump ); 807 `memy (& ump , bp , (uinttmp)); 808 gp -> pgno = ( db_pgno_t ) ump ; 809 bp +( ump ); 811 `memy (& ump , bp , (uinttmp)); 812 gp -> adju = ( t32_t ) ump ; 813 bp +( ump ); 815 `memy (& gp -> l , bp , (argp->lsn)); 816 bp +( gp -> l ); 818 * g = gp ; 820 } } 827 $__db_lk_42_ad ( dbv , cbuf , g ) 828 DB_ENV * dbv ; 829 * cbuf ; 830 __db_lk_42_gs ** g ; 832 __db_lk_42_gs * gp ; 833 u_t32_t ump ; 834 u_t8_t * bp ; 835 t ; 837 i(( t = `__os_mloc ( dbv , 838 ( __db_lk_42_gs + ( DB_TXN ), & gp )) != 0) 839 ( t ); 840 bp = cbuf ; 841 gp -> tx = ( DB_TXN *)&argp[1]; 842 `memt ( gp -> tx , 0, ( DB_TXN )); 844 `memy (& gp -> ty , bp , (argp->type)); 845 bp +( gp -> ty ); 847 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 848 bp +( gp -> tx -> txnid ); 850 `memy (& gp -> ev_l , bp , ( DB_LSN )); 851 bp +( DB_LSN ); 853 `memy (& ump , bp , (uinttmp)); 854 gp -> code = ( u_t32_t ) ump ; 855 bp +( ump ); 857 `memy (& ump , bp , (uinttmp)); 858 gp -> feid = ( t32_t ) ump ; 859 bp +( ump ); 861 `memy (& ump , bp , (uinttmp)); 862 gp -> pgno = ( db_pgno_t ) ump ; 863 bp +( ump ); 865 `memy (& gp -> l , bp , (argp->lsn)); 866 bp +( gp -> l ); 868 `memy (& ump , bp , (uinttmp)); 869 gp -> ev = ( db_pgno_t ) ump ; 870 bp +( ump ); 872 `memy (& gp -> l_ev , bp , (argp->lsn_prev)); 873 bp +( gp -> l_ev ); 875 `memy (& ump , bp , (uinttmp)); 876 gp -> xt = ( db_pgno_t ) ump ; 877 bp +( ump ); 879 `memy (& gp -> l_xt , bp , (argp->lsn_next)); 880 bp +( gp -> l_xt ); 882 * g = gp ; 884 } } 892 $__db_debug_log ( dbv , tx , t_lp , ags , 893 , feid , key , da , g_ags ) 894 DB_ENV * dbv ; 895 DB_TXN * tx ; 896 DB_LSN * t_lp ; 897 u_t32_t ags ; 898 cڡ DBT * ; 899 t32_t feid ; 900 cڡ DBT * key ; 901 cڡ DBT * da ; 902 u_t32_t g_ags ; 904 DBT logc ; 905 DB_TXNLOGREC * ; 906 DB_LSN * lp , nu_l , * p ; 907 u_t32_t zo , ump , y , txn_num ; 908 u_t ad ; 909 u_t8_t * bp ; 910 is_dub , t ; 912 `COMPQUIET ( , NULL ); 914 y = DB___db_debug ; 915 ad = 0; 916 p = t_lp ; 918 t = 0; 920 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 921 i( tx = NULL ) 923 i( tx = NULL ) 925 is_dub = 0; 927 is_dub = 1; 929 i( tx = NULL ) { 930 txn_num = 0; 931 lp = & nu_l ; 932 nu_l . fe =u_l. offt = 0; 940 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 941 txn_num = tx -> txnid ; 944 logc . size = ( y + ( txn_num + ( DB_LSN ) 945 + ( u_t32_t + ( = NULL ? 0 : op-> size ) 946 + ( u_t32_t ) 947 + ( u_t32_t + ( key = NULL ? 0 : key-> size ) 948 + ( u_t32_t + ( da = NULL ? 0 : da-> size ) 949 + ( u_t32_t ); 950 i( `CRYPTO_ON ( dbv )) { 951 ad = 952 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 953 logc . size + ad ; 956 i( is_dub || tx = NULL ) { 957 i(( t = 958 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 959 ( t ); 961 i(( t = `__os_mloc ( dbv , 962 logc . size + ( DB_TXNLOGREC ), & )) != 0) 963 ( t ); 964 #ifde DIAGNOSTIC 965 i(( t = 966 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 967 `__os_ ( dbv , ); 968 ( t ); 971 logc . da = ->data; 974 i( ad > 0) 975 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 977 bp = logc . da ; 979 `memy ( bp , & y , (rectype)); 980 bp +( y ); 982 `memy ( bp , & txn_num , (txn_num)); 983 bp +( txn_num ); 985 `memy ( bp , lp , ( DB_LSN )); 986 bp +( DB_LSN ); 988 i( = NULL ) { 989 zo = 0; 990 `memy ( bp , & zo , ( u_t32_t )); 991 bp +( u_t32_t ); 993 `memy ( bp , & -> size , (op->size)); 994 bp +( -> size ); 995 `memy ( bp , -> da , op-> size ); 996 bp + -> size ; 999 ump = ( u_t32_t ) feid ; 1000 `memy ( bp , & ump , (uinttmp)); 1001 bp +( ump ); 1003 i( key = NULL ) { 1004 zo = 0; 1005 `memy ( bp , & zo , ( u_t32_t )); 1006 bp +( u_t32_t ); 1008 `memy ( bp , & key -> size , (key->size)); 1009 bp +( key -> size ); 1010 `memy ( bp , key -> da , key-> size ); 1011 bp + key -> size ; 1014 i( da = NULL ) { 1015 zo = 0; 1016 `memy ( bp , & zo , ( u_t32_t )); 1017 bp +( u_t32_t ); 1019 `memy ( bp , & da -> size , (data->size)); 1020 bp +( da -> size ); 1021 `memy ( bp , da ->da, da-> size ); 1022 bp + da -> size ; 1025 ump = ( u_t32_t ) g_ags ; 1026 `memy ( bp , & ump , (uinttmp)); 1027 bp +( ump ); 1029 `DB_ASSERT ( dbv , 1030 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1032 i( is_dub || tx = NULL ) { 1033 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1034 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1035 * lp = * p ; 1036 i( p ! t_lp ) 1037 * t_lp = * p ; 1040 t = 0; 1041 #ifde DIAGNOSTIC 1046 `memy ( -> da , logc .da,ogc. size ); 1047 y | DB_debug_FLAG ; 1048 `memy ( logc . da , & y , (rectype)); 1050 i(! `IS_REP_CLIENT ( dbv )) 1051 t = `__log_put ( dbv , 1052 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1054 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1055 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1056 `LSN_NOT_LOGGED (* t_lp ); 1059 #ifde LOG_DIAGNOSTIC 1060 i( t != 0) 1061 () `__db_debug_t ( dbv , 1062 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1065 #ifde DIAGNOSTIC 1066 `__os_ ( dbv , logc . da ); 1068 i( is_dub || tx = NULL ) 1069 `__os_ ( dbv , logc . da ); 1071 ( t ); 1072 } } 1078 $__db_debug_ad ( dbv , cbuf , g ) 1079 DB_ENV * dbv ; 1080 * cbuf ; 1081 __db_debug_gs ** g ; 1083 __db_debug_gs * gp ; 1084 u_t32_t ump ; 1085 u_t8_t * bp ; 1086 t ; 1088 i(( t = `__os_mloc ( dbv , 1089 ( __db_debug_gs + ( DB_TXN ), & gp )) != 0) 1090 ( t ); 1091 bp = cbuf ; 1092 gp -> tx = ( DB_TXN *)&argp[1]; 1093 `memt ( gp -> tx , 0, ( DB_TXN )); 1095 `memy (& gp -> ty , bp , (argp->type)); 1096 bp +( gp -> ty ); 1098 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1099 bp +( gp -> tx -> txnid ); 1101 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1102 bp +( DB_LSN ); 1104 `memt (& gp -> , 0, (argp->op)); 1105 `memy (& gp -> . size , bp , ( u_t32_t )); 1106 bp +( u_t32_t ); 1107 gp -> . da = bp ; 1108 bp + gp -> . size ; 1110 `memy (& ump , bp , (uinttmp)); 1111 gp -> feid = ( t32_t ) ump ; 1112 bp +( ump ); 1114 `memt (& gp -> key , 0, (argp->key)); 1115 `memy (& gp -> key . size , bp , ( u_t32_t )); 1116 bp +( u_t32_t ); 1117 gp -> key . da = bp ; 1118 bp + gp -> key . size ; 1120 `memt (& gp -> da , 0, (argp->data)); 1121 `memy (& gp -> da . size , bp , ( u_t32_t )); 1122 bp +( u_t32_t ); 1123 gp -> da .d bp ; 1124 bp + gp -> da . size ; 1126 `memy (& ump , bp , (uinttmp)); 1127 gp -> g_ags = ( u_t32_t ) ump ; 1128 bp +( ump ); 1130 * g = gp ; 1132 } } 1139 $__db_no_log ( dbp , tx , t_lp , ags , pgno , evl ) 1140 DB * dbp ; 1141 DB_TXN * tx ; 1142 DB_LSN * t_lp ; 1143 u_t32_t ags ; 1144 db_pgno_t pgno ; 1145 DB_LSN * evl ; 1147 DBT logc ; 1148 DB_ENV * dbv ; 1149 DB_TXNLOGREC * ; 1150 DB_LSN * lp , nu_l , * p ; 1151 u_t32_t ump , y , txn_num ; 1152 u_t ad ; 1153 u_t8_t * bp ; 1154 is_dub , t ; 1156 dbv = dbp ->dbenv; 1157 `COMPQUIET ( , NULL ); 1159 y = DB___db_no ; 1160 ad = 0; 1161 p = t_lp ; 1163 t = 0; 1165 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1166 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1167 i( tx = NULL ) 1169 is_dub = 0; 1171 is_dub = 1; 1173 i( tx = NULL ) { 1174 txn_num = 0; 1175 lp = & nu_l ; 1176 nu_l . fe =u_l. offt = 0; 1178 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1179 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1180 ( t ); 1187 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1188 txn_num = tx -> txnid ; 1191 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1192 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1193 ( t = `__dbg_zy_id ( dbp )) != 0) 1194 ( t ); 1196 logc . size = ( y + ( txn_num + ( DB_LSN ) 1197 + ( u_t32_t ) 1198 + ( u_t32_t ) 1199 + (* evl ); 1200 i( `CRYPTO_ON ( dbv )) { 1201 ad = 1202 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1203 logc . size + ad ; 1206 i( is_dub || tx = NULL ) { 1207 i(( t = 1208 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1209 ( t ); 1211 i(( t = `__os_mloc ( dbv , 1212 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1213 ( t ); 1214 #ifde DIAGNOSTIC 1215 i(( t = 1216 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1217 `__os_ ( dbv , ); 1218 ( t ); 1221 logc . da = ->data; 1224 i( ad > 0) 1225 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1227 bp = logc . da ; 1229 `memy ( bp , & y , (rectype)); 1230 bp +( y ); 1232 `memy ( bp , & txn_num , (txn_num)); 1233 bp +( txn_num ); 1235 `memy ( bp , lp , ( DB_LSN )); 1236 bp +( DB_LSN ); 1238 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1239 `memy ( bp , & ump , (uinttmp)); 1240 bp +( ump ); 1242 ump = ( u_t32_t ) pgno ; 1243 `memy ( bp , & ump , (uinttmp)); 1244 bp +( ump ); 1246 i( evl ! NULL ) { 1247 i( tx ! NULL ) { 1248 LOG * = dbv -> lg_hd -> gfo . imy ; 1249 i( `LOG_COMPARE ( evl , & -> l >0 && ( t = 1250 `__log_check_ge_l ( dbv , dbp , evl ) != 0)) 1251 ( t ); 1253 `memy ( bp , evl , (*prevlsn)); 1255 `memt ( bp , 0, (* evl )); 1256 bp +(* evl ); 1258 `DB_ASSERT ( dbv , 1259 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1261 i( is_dub || tx = NULL ) { 1262 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1263 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1264 * lp = * p ; 1265 i( p ! t_lp ) 1266 * t_lp = * p ; 1269 t = 0; 1270 #ifde DIAGNOSTIC 1275 `memy ( -> da , logc .da,ogc. size ); 1276 y | DB_debug_FLAG ; 1277 `memy ( logc . da , & y , (rectype)); 1279 i(! `IS_REP_CLIENT ( dbv )) 1280 t = `__log_put ( dbv , 1281 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1283 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1284 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1285 `LSN_NOT_LOGGED (* t_lp ); 1288 #ifde LOG_DIAGNOSTIC 1289 i( t != 0) 1290 () `__db_no_t ( dbv , 1291 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1294 #ifde DIAGNOSTIC 1295 `__os_ ( dbv , logc . da ); 1297 i( is_dub || tx = NULL ) 1298 `__os_ ( dbv , logc . da ); 1300 ( t ); 1301 } } 1307 $__db_no_ad ( dbv , cbuf , g ) 1308 DB_ENV * dbv ; 1309 * cbuf ; 1310 __db_no_gs ** g ; 1312 __db_no_gs * gp ; 1313 u_t32_t ump ; 1314 u_t8_t * bp ; 1315 t ; 1317 i(( t = `__os_mloc ( dbv , 1318 ( __db_no_gs + ( DB_TXN ), & gp )) != 0) 1319 ( t ); 1320 bp = cbuf ; 1321 gp -> tx = ( DB_TXN *)&argp[1]; 1322 `memt ( gp -> tx , 0, ( DB_TXN )); 1324 `memy (& gp -> ty , bp , (argp->type)); 1325 bp +( gp -> ty ); 1327 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1328 bp +( gp -> tx -> txnid ); 1330 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1331 bp +( DB_LSN ); 1333 `memy (& ump , bp , (uinttmp)); 1334 gp -> feid = ( t32_t ) ump ; 1335 bp +( ump ); 1337 `memy (& ump , bp , (uinttmp)); 1338 gp -> pgno = ( db_pgno_t ) ump ; 1339 bp +( ump ); 1341 `memy (& gp -> evl , bp , (argp->prevlsn)); 1342 bp +( gp -> evl ); 1344 * g = gp ; 1346 } } 1353 $__db_pg_loc_42_ad ( dbv , cbuf , g ) 1354 DB_ENV * dbv ; 1355 * cbuf ; 1356 __db_pg_loc_42_gs ** g ; 1358 __db_pg_loc_42_gs * gp ; 1359 u_t32_t ump ; 1360 u_t8_t * bp ; 1361 t ; 1363 i(( t = `__os_mloc ( dbv , 1364 ( __db_pg_loc_42_gs + ( DB_TXN ), & gp )) != 0) 1365 ( t ); 1366 bp = cbuf ; 1367 gp -> tx = ( DB_TXN *)&argp[1]; 1368 `memt ( gp -> tx , 0, ( DB_TXN )); 1370 `memy (& gp -> ty , bp , (argp->type)); 1371 bp +( gp -> ty ); 1373 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1374 bp +( gp -> tx -> txnid ); 1376 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1377 bp +( DB_LSN ); 1379 `memy (& ump , bp , (uinttmp)); 1380 gp -> feid = ( t32_t ) ump ; 1381 bp +( ump ); 1383 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 1384 bp +( gp -> ma_l ); 1386 `memy (& ump , bp , (uinttmp)); 1387 gp -> ma_pgno = ( db_pgno_t ) ump ; 1388 bp +( ump ); 1390 `memy (& gp -> ge_l , bp , (argp->page_lsn)); 1391 bp +( gp -> ge_l ); 1393 `memy (& ump , bp , (uinttmp)); 1394 gp -> pgno = ( db_pgno_t ) ump ; 1395 bp +( ump ); 1397 `memy (& ump , bp , (uinttmp)); 1398 gp -> y = ( u_t32_t ) ump ; 1399 bp +( ump ); 1401 `memy (& ump , bp , (uinttmp)); 1402 gp -> xt = ( db_pgno_t ) ump ; 1403 bp +( ump ); 1405 * g = gp ; 1407 } } 1415 $__db_pg_loc_log ( dbp , tx , t_lp , ags , ma_l , ma_pgno , ge_l , pgno , y , 1416 xt , ϡ_pgno ) 1417 DB * dbp ; 1418 DB_TXN * tx ; 1419 DB_LSN * t_lp ; 1420 u_t32_t ags ; 1421 DB_LSN * ma_l ; 1422 db_pgno_t ma_pgno ; 1423 DB_LSN * ge_l ; 1424 db_pgno_t pgno ; 1425 u_t32_t y ; 1426 db_pgno_t xt ; 1427 db_pgno_t ϡ_pgno ; 1429 DBT logc ; 1430 DB_ENV * dbv ; 1431 DB_TXNLOGREC * ; 1432 DB_LSN * lp , nu_l , * p ; 1433 u_t32_t ump , y , txn_num ; 1434 u_t ad ; 1435 u_t8_t * bp ; 1436 is_dub , t ; 1438 dbv = dbp ->dbenv; 1439 `COMPQUIET ( , NULL ); 1441 y = DB___db_pg_loc ; 1442 ad = 0; 1443 p = t_lp ; 1445 t = 0; 1447 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1448 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1449 i( tx = NULL ) 1451 is_dub = 0; 1453 is_dub = 1; 1455 i( tx = NULL ) { 1456 txn_num = 0; 1457 lp = & nu_l ; 1458 nu_l . fe =u_l. offt = 0; 1460 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1461 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1462 ( t ); 1469 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1470 txn_num = tx -> txnid ; 1473 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1474 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1475 ( t = `__dbg_zy_id ( dbp )) != 0) 1476 ( t ); 1478 logc . size = ( y + ( txn_num + ( DB_LSN ) 1479 + ( u_t32_t ) 1480 + (* ma_l ) 1481 + ( u_t32_t ) 1482 + (* ge_l ) 1483 + ( u_t32_t ) 1484 + ( u_t32_t ) 1485 + ( u_t32_t ) 1486 + ( u_t32_t ); 1487 i( `CRYPTO_ON ( dbv )) { 1488 ad = 1489 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1490 logc . size + ad ; 1493 i( is_dub || tx = NULL ) { 1494 i(( t = 1495 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1496 ( t ); 1498 i(( t = `__os_mloc ( dbv , 1499 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1500 ( t ); 1501 #ifde DIAGNOSTIC 1502 i(( t = 1503 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1504 `__os_ ( dbv , ); 1505 ( t ); 1508 logc . da = ->data; 1511 i( ad > 0) 1512 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1514 bp = logc . da ; 1516 `memy ( bp , & y , (rectype)); 1517 bp +( y ); 1519 `memy ( bp , & txn_num , (txn_num)); 1520 bp +( txn_num ); 1522 `memy ( bp , lp , ( DB_LSN )); 1523 bp +( DB_LSN ); 1525 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1526 `memy ( bp , & ump , (uinttmp)); 1527 bp +( ump ); 1529 i( ma_l ! NULL ) { 1530 i( tx ! NULL ) { 1531 LOG * = dbv -> lg_hd -> gfo . imy ; 1532 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1533 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 1534 ( t ); 1536 `memy ( bp , ma_l , (*meta_lsn)); 1538 `memt ( bp , 0, (* ma_l )); 1539 bp +(* ma_l ); 1541 ump = ( u_t32_t ) ma_pgno ; 1542 `memy ( bp , & ump , (uinttmp)); 1543 bp +( ump ); 1545 i( ge_l ! NULL ) { 1546 i( tx ! NULL ) { 1547 LOG * = dbv -> lg_hd -> gfo . imy ; 1548 i( `LOG_COMPARE ( ge_l , & -> l >0 && ( t = 1549 `__log_check_ge_l ( dbv , dbp , ge_l ) != 0)) 1550 ( t ); 1552 `memy ( bp , ge_l , (*page_lsn)); 1554 `memt ( bp , 0, (* ge_l )); 1555 bp +(* ge_l ); 1557 ump = ( u_t32_t ) pgno ; 1558 `memy ( bp , & ump , (uinttmp)); 1559 bp +( ump ); 1561 ump = ( u_t32_t ) y ; 1562 `memy ( bp , & ump , (uinttmp)); 1563 bp +( ump ); 1565 ump = ( u_t32_t ) xt ; 1566 `memy ( bp , & ump , (uinttmp)); 1567 bp +( ump ); 1569 ump = ( u_t32_t ) ϡ_pgno ; 1570 `memy ( bp , & ump , (uinttmp)); 1571 bp +( ump ); 1573 `DB_ASSERT ( dbv , 1574 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1576 i( is_dub || tx = NULL ) { 1577 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1578 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1579 * lp = * p ; 1580 i( p ! t_lp ) 1581 * t_lp = * p ; 1584 t = 0; 1585 #ifde DIAGNOSTIC 1590 `memy ( -> da , logc .da,ogc. size ); 1591 y | DB_debug_FLAG ; 1592 `memy ( logc . da , & y , (rectype)); 1594 i(! `IS_REP_CLIENT ( dbv )) 1595 t = `__log_put ( dbv , 1596 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1598 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1599 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1600 `LSN_NOT_LOGGED (* t_lp ); 1603 #ifde LOG_DIAGNOSTIC 1604 i( t != 0) 1605 () `__db_pg_loc_t ( dbv , 1606 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1609 #ifde DIAGNOSTIC 1610 `__os_ ( dbv , logc . da ); 1612 i( is_dub || tx = NULL ) 1613 `__os_ ( dbv , logc . da ); 1615 ( t ); 1616 } } 1623 $__db_pg_loc_ad ( dbv , cbuf , g ) 1624 DB_ENV * dbv ; 1625 * cbuf ; 1626 __db_pg_loc_gs ** g ; 1628 __db_pg_loc_gs * gp ; 1629 u_t32_t ump ; 1630 u_t8_t * bp ; 1631 t ; 1633 i(( t = `__os_mloc ( dbv , 1634 ( __db_pg_loc_gs + ( DB_TXN ), & gp )) != 0) 1635 ( t ); 1636 bp = cbuf ; 1637 gp -> tx = ( DB_TXN *)&argp[1]; 1638 `memt ( gp -> tx , 0, ( DB_TXN )); 1640 `memy (& gp -> ty , bp , (argp->type)); 1641 bp +( gp -> ty ); 1643 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1644 bp +( gp -> tx -> txnid ); 1646 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1647 bp +( DB_LSN ); 1649 `memy (& ump , bp , (uinttmp)); 1650 gp -> feid = ( t32_t ) ump ; 1651 bp +( ump ); 1653 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 1654 bp +( gp -> ma_l ); 1656 `memy (& ump , bp , (uinttmp)); 1657 gp -> ma_pgno = ( db_pgno_t ) ump ; 1658 bp +( ump ); 1660 `memy (& gp -> ge_l , bp , (argp->page_lsn)); 1661 bp +( gp -> ge_l ); 1663 `memy (& ump , bp , (uinttmp)); 1664 gp -> pgno = ( db_pgno_t ) ump ; 1665 bp +( ump ); 1667 `memy (& ump , bp , (uinttmp)); 1668 gp -> y = ( u_t32_t ) ump ; 1669 bp +( ump ); 1671 `memy (& ump , bp , (uinttmp)); 1672 gp -> xt = ( db_pgno_t ) ump ; 1673 bp +( ump ); 1675 `memy (& ump , bp , (uinttmp)); 1676 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 1677 bp +( ump ); 1679 * g = gp ; 1681 } } 1688 $__db_pg__42_ad ( dbv , cbuf , g ) 1689 DB_ENV * dbv ; 1690 * cbuf ; 1691 __db_pg__42_gs ** g ; 1693 __db_pg__42_gs * gp ; 1694 u_t32_t ump ; 1695 u_t8_t * bp ; 1696 t ; 1698 i(( t = `__os_mloc ( dbv , 1699 ( __db_pg__42_gs + ( DB_TXN ), & gp )) != 0) 1700 ( t ); 1701 bp = cbuf ; 1702 gp -> tx = ( DB_TXN *)&argp[1]; 1703 `memt ( gp -> tx , 0, ( DB_TXN )); 1705 `memy (& gp -> ty , bp , (argp->type)); 1706 bp +( gp -> ty ); 1708 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1709 bp +( gp -> tx -> txnid ); 1711 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1712 bp +( DB_LSN ); 1714 `memy (& ump , bp , (uinttmp)); 1715 gp -> feid = ( t32_t ) ump ; 1716 bp +( ump ); 1718 `memy (& ump , bp , (uinttmp)); 1719 gp -> pgno = ( db_pgno_t ) ump ; 1720 bp +( ump ); 1722 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 1723 bp +( gp -> ma_l ); 1725 `memy (& ump , bp , (uinttmp)); 1726 gp -> ma_pgno = ( db_pgno_t ) ump ; 1727 bp +( ump ); 1729 `memt (& gp -> hd , 0, (argp->header)); 1730 `memy (& gp -> hd . size , bp , ( u_t32_t )); 1731 bp +( u_t32_t ); 1732 gp -> hd . da = bp ; 1733 bp + gp -> hd . size ; 1735 `memy (& ump , bp , (uinttmp)); 1736 gp -> xt = ( db_pgno_t ) ump ; 1737 bp +( ump ); 1739 * g = gp ; 1741 } } 1749 $__db_pg__log ( dbp , tx , t_lp , ags , pgno , ma_l , ma_pgno , hd , xt , 1750 ϡ_pgno ) 1751 DB * dbp ; 1752 DB_TXN * tx ; 1753 DB_LSN * t_lp ; 1754 u_t32_t ags ; 1755 db_pgno_t pgno ; 1756 DB_LSN * ma_l ; 1757 db_pgno_t ma_pgno ; 1758 cڡ DBT * hd ; 1759 db_pgno_t xt ; 1760 db_pgno_t ϡ_pgno ; 1762 DBT logc ; 1763 DB_ENV * dbv ; 1764 DB_TXNLOGREC * ; 1765 DB_LSN * lp , nu_l , * p ; 1766 u_t32_t zo , ump , y , txn_num ; 1767 u_t ad ; 1768 u_t8_t * bp ; 1769 is_dub , t ; 1771 dbv = dbp ->dbenv; 1772 `COMPQUIET ( , NULL ); 1774 y = DB___db_pg_ ; 1775 ad = 0; 1776 p = t_lp ; 1778 t = 0; 1780 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1781 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1782 i( tx = NULL ) 1784 is_dub = 0; 1786 is_dub = 1; 1788 i( tx = NULL ) { 1789 txn_num = 0; 1790 lp = & nu_l ; 1791 nu_l . fe =u_l. offt = 0; 1793 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1794 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1795 ( t ); 1802 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1803 txn_num = tx -> txnid ; 1806 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1807 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1808 ( t = `__dbg_zy_id ( dbp )) != 0) 1809 ( t ); 1811 logc . size = ( y + ( txn_num + ( DB_LSN ) 1812 + ( u_t32_t ) 1813 + ( u_t32_t ) 1814 + (* ma_l ) 1815 + ( u_t32_t ) 1816 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 1817 + ( u_t32_t ) 1818 + ( u_t32_t ); 1819 i( `CRYPTO_ON ( dbv )) { 1820 ad = 1821 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1822 logc . size + ad ; 1825 i( is_dub || tx = NULL ) { 1826 i(( t = 1827 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1828 ( t ); 1830 i(( t = `__os_mloc ( dbv , 1831 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1832 ( t ); 1833 #ifde DIAGNOSTIC 1834 i(( t = 1835 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1836 `__os_ ( dbv , ); 1837 ( t ); 1840 logc . da = ->data; 1843 i( ad > 0) 1844 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1846 bp = logc . da ; 1848 `memy ( bp , & y , (rectype)); 1849 bp +( y ); 1851 `memy ( bp , & txn_num , (txn_num)); 1852 bp +( txn_num ); 1854 `memy ( bp , lp , ( DB_LSN )); 1855 bp +( DB_LSN ); 1857 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1858 `memy ( bp , & ump , (uinttmp)); 1859 bp +( ump ); 1861 ump = ( u_t32_t ) pgno ; 1862 `memy ( bp , & ump , (uinttmp)); 1863 bp +( ump ); 1865 i( ma_l ! NULL ) { 1866 i( tx ! NULL ) { 1867 LOG * = dbv -> lg_hd -> gfo . imy ; 1868 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1869 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 1870 ( t ); 1872 `memy ( bp , ma_l , (*meta_lsn)); 1874 `memt ( bp , 0, (* ma_l )); 1875 bp +(* ma_l ); 1877 ump = ( u_t32_t ) ma_pgno ; 1878 `memy ( bp , & ump , (uinttmp)); 1879 bp +( ump ); 1881 i( hd = NULL ) { 1882 zo = 0; 1883 `memy ( bp , & zo , ( u_t32_t )); 1884 bp +( u_t32_t ); 1886 `memy ( bp , & hd -> size , (header->size)); 1887 bp +( hd -> size ); 1888 `memy ( bp , hd -> da , hd-> size ); 1889 bp + hd -> size ; 1892 ump = ( u_t32_t ) xt ; 1893 `memy ( bp , & ump , (uinttmp)); 1894 bp +( ump ); 1896 ump = ( u_t32_t ) ϡ_pgno ; 1897 `memy ( bp , & ump , (uinttmp)); 1898 bp +( ump ); 1900 `DB_ASSERT ( dbv , 1901 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1903 i( is_dub || tx = NULL ) { 1904 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1905 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1906 * lp = * p ; 1907 i( p ! t_lp ) 1908 * t_lp = * p ; 1911 t = 0; 1912 #ifde DIAGNOSTIC 1917 `memy ( -> da , logc .da,ogc. size ); 1918 y | DB_debug_FLAG ; 1919 `memy ( logc . da , & y , (rectype)); 1921 i(! `IS_REP_CLIENT ( dbv )) 1922 t = `__log_put ( dbv , 1923 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1925 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1926 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1927 `LSN_NOT_LOGGED (* t_lp ); 1930 #ifde LOG_DIAGNOSTIC 1931 i( t != 0) 1932 () `__db_pg__t ( dbv , 1933 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1936 #ifde DIAGNOSTIC 1937 `__os_ ( dbv , logc . da ); 1939 i( is_dub || tx = NULL ) 1940 `__os_ ( dbv , logc . da ); 1942 ( t ); 1943 } } 1949 $__db_pg__ad ( dbv , cbuf , g ) 1950 DB_ENV * dbv ; 1951 * cbuf ; 1952 __db_pg__gs ** g ; 1954 __db_pg__gs * gp ; 1955 u_t32_t ump ; 1956 u_t8_t * bp ; 1957 t ; 1959 i(( t = `__os_mloc ( dbv , 1960 ( __db_pg__gs + ( DB_TXN ), & gp )) != 0) 1961 ( t ); 1962 bp = cbuf ; 1963 gp -> tx = ( DB_TXN *)&argp[1]; 1964 `memt ( gp -> tx , 0, ( DB_TXN )); 1966 `memy (& gp -> ty , bp , (argp->type)); 1967 bp +( gp -> ty ); 1969 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1970 bp +( gp -> tx -> txnid ); 1972 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1973 bp +( DB_LSN ); 1975 `memy (& ump , bp , (uinttmp)); 1976 gp -> feid = ( t32_t ) ump ; 1977 bp +( ump ); 1979 `memy (& ump , bp , (uinttmp)); 1980 gp -> pgno = ( db_pgno_t ) ump ; 1981 bp +( ump ); 1983 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 1984 bp +( gp -> ma_l ); 1986 `memy (& ump , bp , (uinttmp)); 1987 gp -> ma_pgno = ( db_pgno_t ) ump ; 1988 bp +( ump ); 1990 `memt (& gp -> hd , 0, (argp->header)); 1991 `memy (& gp -> hd . size , bp , ( u_t32_t )); 1992 bp +( u_t32_t ); 1993 gp -> hd . da = bp ; 1994 bp + gp -> hd . size ; 1996 `memy (& ump , bp , (uinttmp)); 1997 gp -> xt = ( db_pgno_t ) ump ; 1998 bp +( ump ); 2000 `memy (& ump , bp , (uinttmp)); 2001 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 2002 bp +( ump ); 2004 * g = gp ; 2006 } } 2012 $__db_cksum_log ( dbv , tx , t_lp , ags ) 2013 DB_ENV * dbv ; 2014 DB_TXN * tx ; 2015 DB_LSN * t_lp ; 2016 u_t32_t ags ; 2018 DBT logc ; 2019 DB_TXNLOGREC * ; 2020 DB_LSN * lp , nu_l , * p ; 2021 u_t32_t y , txn_num ; 2022 u_t ad ; 2023 u_t8_t * bp ; 2024 is_dub , t ; 2026 `COMPQUIET ( , NULL ); 2028 y = DB___db_cksum ; 2029 ad = 0; 2030 p = t_lp ; 2032 t = 0; 2034 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 2035 i( tx = NULL ) 2037 i( tx = NULL ) 2039 is_dub = 0; 2041 is_dub = 1; 2043 i( tx = NULL ) { 2044 txn_num = 0; 2045 lp = & nu_l ; 2046 nu_l . fe =u_l. offt = 0; 2048 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2049 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2050 ( t ); 2057 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2058 txn_num = tx -> txnid ; 2061 logc . size = ( y + ( txn_num + ( DB_LSN ); 2062 i( `CRYPTO_ON ( dbv )) { 2063 ad = 2064 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2065 logc . size + ad ; 2068 i( is_dub || tx = NULL ) { 2069 i(( t = 2070 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2071 ( t ); 2073 i(( t = `__os_mloc ( dbv , 2074 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2075 ( t ); 2076 #ifde DIAGNOSTIC 2077 i(( t = 2078 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2079 `__os_ ( dbv , ); 2080 ( t ); 2083 logc . da = ->data; 2086 i( ad > 0) 2087 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2089 bp = logc . da ; 2091 `memy ( bp , & y , (rectype)); 2092 bp +( y ); 2094 `memy ( bp , & txn_num , (txn_num)); 2095 bp +( txn_num ); 2097 `memy ( bp , lp , ( DB_LSN )); 2098 bp +( DB_LSN ); 2100 `DB_ASSERT ( dbv , 2101 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2103 i( is_dub || tx = NULL ) { 2104 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2105 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2106 * lp = * p ; 2107 i( p ! t_lp ) 2108 * t_lp = * p ; 2111 t = 0; 2112 #ifde DIAGNOSTIC 2117 `memy ( -> da , logc .da,ogc. size ); 2118 y | DB_debug_FLAG ; 2119 `memy ( logc . da , & y , (rectype)); 2121 i(! `IS_REP_CLIENT ( dbv )) 2122 t = `__log_put ( dbv , 2123 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2125 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2126 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2127 `LSN_NOT_LOGGED (* t_lp ); 2130 #ifde LOG_DIAGNOSTIC 2131 i( t != 0) 2132 () `__db_cksum_t ( dbv , 2133 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2136 #ifde DIAGNOSTIC 2137 `__os_ ( dbv , logc . da ); 2139 i( is_dub || tx = NULL ) 2140 `__os_ ( dbv , logc . da ); 2142 ( t ); 2143 } } 2149 $__db_cksum_ad ( dbv , cbuf , g ) 2150 DB_ENV * dbv ; 2151 * cbuf ; 2152 __db_cksum_gs ** g ; 2154 __db_cksum_gs * gp ; 2155 u_t8_t * bp ; 2156 t ; 2158 i(( t = `__os_mloc ( dbv , 2159 ( __db_cksum_gs + ( DB_TXN ), & gp )) != 0) 2160 ( t ); 2161 bp = cbuf ; 2162 gp -> tx = ( DB_TXN *)&argp[1]; 2163 `memt ( gp -> tx , 0, ( DB_TXN )); 2165 `memy (& gp -> ty , bp , (argp->type)); 2166 bp +( gp -> ty ); 2168 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2169 bp +( gp -> tx -> txnid ); 2171 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2172 bp +( DB_LSN ); 2174 * g = gp ; 2176 } } 2183 $__db_pg_da_42_ad ( dbv , cbuf , g ) 2184 DB_ENV * dbv ; 2185 * cbuf ; 2186 __db_pg_da_42_gs ** g ; 2188 __db_pg_da_42_gs * gp ; 2189 u_t32_t ump ; 2190 u_t8_t * bp ; 2191 t ; 2193 i(( t = `__os_mloc ( dbv , 2194 ( __db_pg_da_42_gs + ( DB_TXN ), & gp )) != 0) 2195 ( t ); 2196 bp = cbuf ; 2197 gp -> tx = ( DB_TXN *)&argp[1]; 2198 `memt ( gp -> tx , 0, ( DB_TXN )); 2200 `memy (& gp -> ty , bp , (argp->type)); 2201 bp +( gp -> ty ); 2203 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2204 bp +( gp -> tx -> txnid ); 2206 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2207 bp +( DB_LSN ); 2209 `memy (& ump , bp , (uinttmp)); 2210 gp -> feid = ( t32_t ) ump ; 2211 bp +( ump ); 2213 `memy (& ump , bp , (uinttmp)); 2214 gp -> pgno = ( db_pgno_t ) ump ; 2215 bp +( ump ); 2217 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 2218 bp +( gp -> ma_l ); 2220 `memy (& ump , bp , (uinttmp)); 2221 gp -> ma_pgno = ( db_pgno_t ) ump ; 2222 bp +( ump ); 2224 `memt (& gp -> hd , 0, (argp->header)); 2225 `memy (& gp -> hd . size , bp , ( u_t32_t )); 2226 bp +( u_t32_t ); 2227 gp -> hd . da = bp ; 2228 bp + gp -> hd . size ; 2230 `memy (& ump , bp , (uinttmp)); 2231 gp -> xt = ( db_pgno_t ) ump ; 2232 bp +( ump ); 2234 `memt (& gp -> da , 0, (argp->data)); 2235 `memy (& gp -> da . size , bp , ( u_t32_t )); 2236 bp +( u_t32_t ); 2237 gp -> da .d bp ; 2238 bp + gp -> da . size ; 2240 * g = gp ; 2242 } } 2250 $__db_pg_da_log ( dbp , tx , t_lp , ags , pgno , ma_l , ma_pgno , hd , xt , 2251 ϡ_pgno , da ) 2252 DB * dbp ; 2253 DB_TXN * tx ; 2254 DB_LSN * t_lp ; 2255 u_t32_t ags ; 2256 db_pgno_t pgno ; 2257 DB_LSN * ma_l ; 2258 db_pgno_t ma_pgno ; 2259 cڡ DBT * hd ; 2260 db_pgno_t xt ; 2261 db_pgno_t ϡ_pgno ; 2262 cڡ DBT * da ; 2264 DBT logc ; 2265 DB_ENV * dbv ; 2266 DB_TXNLOGREC * ; 2267 DB_LSN * lp , nu_l , * p ; 2268 u_t32_t zo , ump , y , txn_num ; 2269 u_t ad ; 2270 u_t8_t * bp ; 2271 is_dub , t ; 2273 dbv = dbp ->dbenv; 2274 `COMPQUIET ( , NULL ); 2276 y = DB___db_pg_da ; 2277 ad = 0; 2278 p = t_lp ; 2280 t = 0; 2282 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2283 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2284 i( tx = NULL ) 2286 is_dub = 0; 2288 is_dub = 1; 2290 i( tx = NULL ) { 2291 txn_num = 0; 2292 lp = & nu_l ; 2293 nu_l . fe =u_l. offt = 0; 2295 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2296 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2297 ( t ); 2304 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2305 txn_num = tx -> txnid ; 2308 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2309 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2310 ( t = `__dbg_zy_id ( dbp )) != 0) 2311 ( t ); 2313 logc . size = ( y + ( txn_num + ( DB_LSN ) 2314 + ( u_t32_t ) 2315 + ( u_t32_t ) 2316 + (* ma_l ) 2317 + ( u_t32_t ) 2318 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 2319 + ( u_t32_t ) 2320 + ( u_t32_t ) 2321 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 2322 i( `CRYPTO_ON ( dbv )) { 2323 ad = 2324 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2325 logc . size + ad ; 2328 i( is_dub || tx = NULL ) { 2329 i(( t = 2330 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2331 ( t ); 2333 i(( t = `__os_mloc ( dbv , 2334 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2335 ( t ); 2336 #ifde DIAGNOSTIC 2337 i(( t = 2338 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2339 `__os_ ( dbv , ); 2340 ( t ); 2343 logc . da = ->data; 2346 i( ad > 0) 2347 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2349 bp = logc . da ; 2351 `memy ( bp , & y , (rectype)); 2352 bp +( y ); 2354 `memy ( bp , & txn_num , (txn_num)); 2355 bp +( txn_num ); 2357 `memy ( bp , lp , ( DB_LSN )); 2358 bp +( DB_LSN ); 2360 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2361 `memy ( bp , & ump , (uinttmp)); 2362 bp +( ump ); 2364 ump = ( u_t32_t ) pgno ; 2365 `memy ( bp , & ump , (uinttmp)); 2366 bp +( ump ); 2368 i( ma_l ! NULL ) { 2369 i( tx ! NULL ) { 2370 LOG * = dbv -> lg_hd -> gfo . imy ; 2371 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 2372 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 2373 ( t ); 2375 `memy ( bp , ma_l , (*meta_lsn)); 2377 `memt ( bp , 0, (* ma_l )); 2378 bp +(* ma_l ); 2380 ump = ( u_t32_t ) ma_pgno ; 2381 `memy ( bp , & ump , (uinttmp)); 2382 bp +( ump ); 2384 i( hd = NULL ) { 2385 zo = 0; 2386 `memy ( bp , & zo , ( u_t32_t )); 2387 bp +( u_t32_t ); 2389 `memy ( bp , & hd -> size , (header->size)); 2390 bp +( hd -> size ); 2391 `memy ( bp , hd -> da , hd-> size ); 2392 bp + hd -> size ; 2395 ump = ( u_t32_t ) xt ; 2396 `memy ( bp , & ump , (uinttmp)); 2397 bp +( ump ); 2399 ump = ( u_t32_t ) ϡ_pgno ; 2400 `memy ( bp , & ump , (uinttmp)); 2401 bp +( ump ); 2403 i( da = NULL ) { 2404 zo = 0; 2405 `memy ( bp , & zo , ( u_t32_t )); 2406 bp +( u_t32_t ); 2408 `memy ( bp , & da -> size , (data->size)); 2409 bp +( da -> size ); 2410 `memy ( bp , da ->da, da-> size ); 2411 bp + da -> size ; 2414 `DB_ASSERT ( dbv , 2415 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2417 i( is_dub || tx = NULL ) { 2418 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2419 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2420 * lp = * p ; 2421 i( p ! t_lp ) 2422 * t_lp = * p ; 2425 t = 0; 2426 #ifde DIAGNOSTIC 2431 `memy ( -> da , logc .da,ogc. size ); 2432 y | DB_debug_FLAG ; 2433 `memy ( logc . da , & y , (rectype)); 2435 i(! `IS_REP_CLIENT ( dbv )) 2436 t = `__log_put ( dbv , 2437 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2439 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2440 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2441 `LSN_NOT_LOGGED (* t_lp ); 2444 #ifde LOG_DIAGNOSTIC 2445 i( t != 0) 2446 () `__db_pg_da_t ( dbv , 2447 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2450 #ifde DIAGNOSTIC 2451 `__os_ ( dbv , logc . da ); 2453 i( is_dub || tx = NULL ) 2454 `__os_ ( dbv , logc . da ); 2456 ( t ); 2457 } } 2464 $__db_pg_da_ad ( dbv , cbuf , g ) 2465 DB_ENV * dbv ; 2466 * cbuf ; 2467 __db_pg_da_gs ** g ; 2469 __db_pg_da_gs * gp ; 2470 u_t32_t ump ; 2471 u_t8_t * bp ; 2472 t ; 2474 i(( t = `__os_mloc ( dbv , 2475 ( __db_pg_da_gs + ( DB_TXN ), & gp )) != 0) 2476 ( t ); 2477 bp = cbuf ; 2478 gp -> tx = ( DB_TXN *)&argp[1]; 2479 `memt ( gp -> tx , 0, ( DB_TXN )); 2481 `memy (& gp -> ty , bp , (argp->type)); 2482 bp +( gp -> ty ); 2484 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2485 bp +( gp -> tx -> txnid ); 2487 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2488 bp +( DB_LSN ); 2490 `memy (& ump , bp , (uinttmp)); 2491 gp -> feid = ( t32_t ) ump ; 2492 bp +( ump ); 2494 `memy (& ump , bp , (uinttmp)); 2495 gp -> pgno = ( db_pgno_t ) ump ; 2496 bp +( ump ); 2498 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 2499 bp +( gp -> ma_l ); 2501 `memy (& ump , bp , (uinttmp)); 2502 gp -> ma_pgno = ( db_pgno_t ) ump ; 2503 bp +( ump ); 2505 `memt (& gp -> hd , 0, (argp->header)); 2506 `memy (& gp -> hd . size , bp , ( u_t32_t )); 2507 bp +( u_t32_t ); 2508 gp -> hd . da = bp ; 2509 bp + gp -> hd . size ; 2511 `memy (& ump , bp , (uinttmp)); 2512 gp -> xt = ( db_pgno_t ) ump ; 2513 bp +( ump ); 2515 `memy (& ump , bp , (uinttmp)); 2516 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 2517 bp +( ump ); 2519 `memt (& gp -> da , 0, (argp->data)); 2520 `memy (& gp -> da . size , bp , ( u_t32_t )); 2521 bp +( u_t32_t ); 2522 gp -> da .d bp ; 2523 bp + gp -> da . size ; 2525 * g = gp ; 2527 } } 2534 $__db_pg_e_log ( dbp , tx , t_lp , ags , pgno ) 2535 DB * dbp ; 2536 DB_TXN * tx ; 2537 DB_LSN * t_lp ; 2538 u_t32_t ags ; 2539 db_pgno_t pgno ; 2541 DBT logc ; 2542 DB_ENV * dbv ; 2543 DB_TXNLOGREC * ; 2544 DB_LSN * lp , nu_l , * p ; 2545 u_t32_t ump , y , txn_num ; 2546 u_t ad ; 2547 u_t8_t * bp ; 2548 is_dub , t ; 2550 dbv = dbp ->dbenv; 2551 `COMPQUIET ( , NULL ); 2553 y = DB___db_pg_e ; 2554 ad = 0; 2555 p = t_lp ; 2557 t = 0; 2559 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2560 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2561 i( tx = NULL ) 2563 is_dub = 0; 2565 is_dub = 1; 2567 i( tx = NULL ) { 2568 txn_num = 0; 2569 lp = & nu_l ; 2570 nu_l . fe =u_l. offt = 0; 2572 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2573 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2574 ( t ); 2581 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2582 txn_num = tx -> txnid ; 2585 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2586 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2587 ( t = `__dbg_zy_id ( dbp )) != 0) 2588 ( t ); 2590 logc . size = ( y + ( txn_num + ( DB_LSN ) 2591 + ( u_t32_t ) 2592 + ( u_t32_t ); 2593 i( `CRYPTO_ON ( dbv )) { 2594 ad = 2595 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2596 logc . size + ad ; 2599 i( is_dub || tx = NULL ) { 2600 i(( t = 2601 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2602 ( t ); 2604 i(( t = `__os_mloc ( dbv , 2605 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2606 ( t ); 2607 #ifde DIAGNOSTIC 2608 i(( t = 2609 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2610 `__os_ ( dbv , ); 2611 ( t ); 2614 logc . da = ->data; 2617 i( ad > 0) 2618 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2620 bp = logc . da ; 2622 `memy ( bp , & y , (rectype)); 2623 bp +( y ); 2625 `memy ( bp , & txn_num , (txn_num)); 2626 bp +( txn_num ); 2628 `memy ( bp , lp , ( DB_LSN )); 2629 bp +( DB_LSN ); 2631 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2632 `memy ( bp , & ump , (uinttmp)); 2633 bp +( ump ); 2635 ump = ( u_t32_t ) pgno ; 2636 `memy ( bp , & ump , (uinttmp)); 2637 bp +( ump ); 2639 `DB_ASSERT ( dbv , 2640 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2642 i( is_dub || tx = NULL ) { 2643 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2644 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2645 * lp = * p ; 2646 i( p ! t_lp ) 2647 * t_lp = * p ; 2650 t = 0; 2651 #ifde DIAGNOSTIC 2656 `memy ( -> da , logc .da,ogc. size ); 2657 y | DB_debug_FLAG ; 2658 `memy ( logc . da , & y , (rectype)); 2660 i(! `IS_REP_CLIENT ( dbv )) 2661 t = `__log_put ( dbv , 2662 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2664 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2665 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2666 `LSN_NOT_LOGGED (* t_lp ); 2669 #ifde LOG_DIAGNOSTIC 2670 i( t != 0) 2671 () `__db_pg_e_t ( dbv , 2672 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2675 #ifde DIAGNOSTIC 2676 `__os_ ( dbv , logc . da ); 2678 i( is_dub || tx = NULL ) 2679 `__os_ ( dbv , logc . da ); 2681 ( t ); 2682 } } 2689 $__db_pg_e_ad ( dbv , cbuf , g ) 2690 DB_ENV * dbv ; 2691 * cbuf ; 2692 __db_pg_e_gs ** g ; 2694 __db_pg_e_gs * gp ; 2695 u_t32_t ump ; 2696 u_t8_t * bp ; 2697 t ; 2699 i(( t = `__os_mloc ( dbv , 2700 ( __db_pg_e_gs + ( DB_TXN ), & gp )) != 0) 2701 ( t ); 2702 bp = cbuf ; 2703 gp -> tx = ( DB_TXN *)&argp[1]; 2704 `memt ( gp -> tx , 0, ( DB_TXN )); 2706 `memy (& gp -> ty , bp , (argp->type)); 2707 bp +( gp -> ty ); 2709 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2710 bp +( gp -> tx -> txnid ); 2712 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2713 bp +( DB_LSN ); 2715 `memy (& ump , bp , (uinttmp)); 2716 gp -> feid = ( t32_t ) ump ; 2717 bp +( ump ); 2719 `memy (& ump , bp , (uinttmp)); 2720 gp -> pgno = ( db_pgno_t ) ump ; 2721 bp +( ump ); 2723 * g = gp ; 2725 } } 2733 $__db_pg_w_log ( dbp , tx , t_lp , ags , pgno , ma_l , ma_pgno , hd , xt ) 2734 DB * dbp ; 2735 DB_TXN * tx ; 2736 DB_LSN * t_lp ; 2737 u_t32_t ags ; 2738 db_pgno_t pgno ; 2739 DB_LSN * ma_l ; 2740 db_pgno_t ma_pgno ; 2741 cڡ DBT * hd ; 2742 db_pgno_t xt ; 2744 DBT logc ; 2745 DB_ENV * dbv ; 2746 DB_TXNLOGREC * ; 2747 DB_LSN * lp , nu_l , * p ; 2748 u_t32_t zo , ump , y , txn_num ; 2749 u_t ad ; 2750 u_t8_t * bp ; 2751 is_dub , t ; 2753 dbv = dbp ->dbenv; 2754 `COMPQUIET ( , NULL ); 2756 y = DB___db_pg_w ; 2757 ad = 0; 2758 p = t_lp ; 2760 t = 0; 2762 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2763 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2764 i( tx = NULL ) 2766 is_dub = 0; 2768 is_dub = 1; 2770 i( tx = NULL ) { 2771 txn_num = 0; 2772 lp = & nu_l ; 2773 nu_l . fe =u_l. offt = 0; 2775 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2776 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2777 ( t ); 2784 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2785 txn_num = tx -> txnid ; 2788 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2789 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2790 ( t = `__dbg_zy_id ( dbp )) != 0) 2791 ( t ); 2793 logc . size = ( y + ( txn_num + ( DB_LSN ) 2794 + ( u_t32_t ) 2795 + ( u_t32_t ) 2796 + (* ma_l ) 2797 + ( u_t32_t ) 2798 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 2799 + ( u_t32_t ); 2800 i( `CRYPTO_ON ( dbv )) { 2801 ad = 2802 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2803 logc . size + ad ; 2806 i( is_dub || tx = NULL ) { 2807 i(( t = 2808 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2809 ( t ); 2811 i(( t = `__os_mloc ( dbv , 2812 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2813 ( t ); 2814 #ifde DIAGNOSTIC 2815 i(( t = 2816 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2817 `__os_ ( dbv , ); 2818 ( t ); 2821 logc . da = ->data; 2824 i( ad > 0) 2825 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2827 bp = logc . da ; 2829 `memy ( bp , & y , (rectype)); 2830 bp +( y ); 2832 `memy ( bp , & txn_num , (txn_num)); 2833 bp +( txn_num ); 2835 `memy ( bp , lp , ( DB_LSN )); 2836 bp +( DB_LSN ); 2838 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2839 `memy ( bp , & ump , (uinttmp)); 2840 bp +( ump ); 2842 ump = ( u_t32_t ) pgno ; 2843 `memy ( bp , & ump , (uinttmp)); 2844 bp +( ump ); 2846 i( ma_l ! NULL ) { 2847 i( tx ! NULL ) { 2848 LOG * = dbv -> lg_hd -> gfo . imy ; 2849 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 2850 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 2851 ( t ); 2853 `memy ( bp , ma_l , (*meta_lsn)); 2855 `memt ( bp , 0, (* ma_l )); 2856 bp +(* ma_l ); 2858 ump = ( u_t32_t ) ma_pgno ; 2859 `memy ( bp , & ump , (uinttmp)); 2860 bp +( ump ); 2862 i( hd = NULL ) { 2863 zo = 0; 2864 `memy ( bp , & zo , ( u_t32_t )); 2865 bp +( u_t32_t ); 2867 `memy ( bp , & hd -> size , (header->size)); 2868 bp +( hd -> size ); 2869 `memy ( bp , hd -> da , hd-> size ); 2870 bp + hd -> size ; 2873 ump = ( u_t32_t ) xt ; 2874 `memy ( bp , & ump , (uinttmp)); 2875 bp +( ump ); 2877 `DB_ASSERT ( dbv , 2878 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2880 i( is_dub || tx = NULL ) { 2881 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2882 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2883 * lp = * p ; 2884 i( p ! t_lp ) 2885 * t_lp = * p ; 2888 t = 0; 2889 #ifde DIAGNOSTIC 2894 `memy ( -> da , logc .da,ogc. size ); 2895 y | DB_debug_FLAG ; 2896 `memy ( logc . da , & y , (rectype)); 2898 i(! `IS_REP_CLIENT ( dbv )) 2899 t = `__log_put ( dbv , 2900 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2902 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2903 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2904 `LSN_NOT_LOGGED (* t_lp ); 2907 #ifde LOG_DIAGNOSTIC 2908 i( t != 0) 2909 () `__db_pg_w_t ( dbv , 2910 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2913 #ifde DIAGNOSTIC 2914 `__os_ ( dbv , logc . da ); 2916 i( is_dub || tx = NULL ) 2917 `__os_ ( dbv , logc . da ); 2919 ( t ); 2920 } } 2926 $__db_pg_w_ad ( dbv , cbuf , g ) 2927 DB_ENV * dbv ; 2928 * cbuf ; 2929 __db_pg_w_gs ** g ; 2931 __db_pg_w_gs * gp ; 2932 u_t32_t ump ; 2933 u_t8_t * bp ; 2934 t ; 2936 i(( t = `__os_mloc ( dbv , 2937 ( __db_pg_w_gs + ( DB_TXN ), & gp )) != 0) 2938 ( t ); 2939 bp = cbuf ; 2940 gp -> tx = ( DB_TXN *)&argp[1]; 2941 `memt ( gp -> tx , 0, ( DB_TXN )); 2943 `memy (& gp -> ty , bp , (argp->type)); 2944 bp +( gp -> ty ); 2946 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2947 bp +( gp -> tx -> txnid ); 2949 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2950 bp +( DB_LSN ); 2952 `memy (& ump , bp , (uinttmp)); 2953 gp -> feid = ( t32_t ) ump ; 2954 bp +( ump ); 2956 `memy (& ump , bp , (uinttmp)); 2957 gp -> pgno = ( db_pgno_t ) ump ; 2958 bp +( ump ); 2960 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 2961 bp +( gp -> ma_l ); 2963 `memy (& ump , bp , (uinttmp)); 2964 gp -> ma_pgno = ( db_pgno_t ) ump ; 2965 bp +( ump ); 2967 `memt (& gp -> hd , 0, (argp->header)); 2968 `memy (& gp -> hd . size , bp , ( u_t32_t )); 2969 bp +( u_t32_t ); 2970 gp -> hd . da = bp ; 2971 bp + gp -> hd . size ; 2973 `memy (& ump , bp , (uinttmp)); 2974 gp -> xt = ( db_pgno_t ) ump ; 2975 bp +( ump ); 2977 * g = gp ; 2979 } } 2986 $__db_pg__log ( dbp , tx , t_lp , ags , pgno , hd , da ) 2987 DB * dbp ; 2988 DB_TXN * tx ; 2989 DB_LSN * t_lp ; 2990 u_t32_t ags ; 2991 db_pgno_t pgno ; 2992 cڡ DBT * hd ; 2993 cڡ DBT * da ; 2995 DBT logc ; 2996 DB_ENV * dbv ; 2997 DB_TXNLOGREC * ; 2998 DB_LSN * lp , nu_l , * p ; 2999 u_t32_t zo , ump , y , txn_num ; 3000 u_t ad ; 3001 u_t8_t * bp ; 3002 is_dub , t ; 3004 dbv = dbp ->dbenv; 3005 `COMPQUIET ( , NULL ); 3007 y = DB___db_pg_ ; 3008 ad = 0; 3009 p = t_lp ; 3011 t = 0; 3013 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 3014 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 3015 i( tx = NULL ) 3017 is_dub = 0; 3019 is_dub = 1; 3021 i( tx = NULL ) { 3022 txn_num = 0; 3023 lp = & nu_l ; 3024 nu_l . fe =u_l. offt = 0; 3026 i( `TAILQ_FIRST (& tx -> kids ! NULL && 3027 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 3028 ( t ); 3035 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 3036 txn_num = tx -> txnid ; 3039 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 3040 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 3041 ( t = `__dbg_zy_id ( dbp )) != 0) 3042 ( t ); 3044 logc . size = ( y + ( txn_num + ( DB_LSN ) 3045 + ( u_t32_t ) 3046 + ( u_t32_t ) 3047 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 3048 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 3049 i( `CRYPTO_ON ( dbv )) { 3050 ad = 3051 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 3052 logc . size + ad ; 3055 i( is_dub || tx = NULL ) { 3056 i(( t = 3057 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 3058 ( t ); 3060 i(( t = `__os_mloc ( dbv , 3061 logc . size + ( DB_TXNLOGREC ), & )) != 0) 3062 ( t ); 3063 #ifde DIAGNOSTIC 3064 i(( t = 3065 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 3066 `__os_ ( dbv , ); 3067 ( t ); 3070 logc . da = ->data; 3073 i( ad > 0) 3074 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 3076 bp = logc . da ; 3078 `memy ( bp , & y , (rectype)); 3079 bp +( y ); 3081 `memy ( bp , & txn_num , (txn_num)); 3082 bp +( txn_num ); 3084 `memy ( bp , lp , ( DB_LSN )); 3085 bp +( DB_LSN ); 3087 ump = ( u_t32_t ) dbp -> log_fame -> id ; 3088 `memy ( bp , & ump , (uinttmp)); 3089 bp +( ump ); 3091 ump = ( u_t32_t ) pgno ; 3092 `memy ( bp , & ump , (uinttmp)); 3093 bp +( ump ); 3095 i( hd = NULL ) { 3096 zo = 0; 3097 `memy ( bp , & zo , ( u_t32_t )); 3098 bp +( u_t32_t ); 3100 `memy ( bp , & hd -> size , (header->size)); 3101 bp +( hd -> size ); 3102 `memy ( bp , hd -> da , hd-> size ); 3103 bp + hd -> size ; 3106 i( da = NULL ) { 3107 zo = 0; 3108 `memy ( bp , & zo , ( u_t32_t )); 3109 bp +( u_t32_t ); 3111 `memy ( bp , & da -> size , (data->size)); 3112 bp +( da -> size ); 3113 `memy ( bp , da ->da, da-> size ); 3114 bp + da -> size ; 3117 `DB_ASSERT ( dbv , 3118 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 3120 i( is_dub || tx = NULL ) { 3121 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 3122 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 3123 * lp = * p ; 3124 i( p ! t_lp ) 3125 * t_lp = * p ; 3128 t = 0; 3129 #ifde DIAGNOSTIC 3134 `memy ( -> da , logc .da,ogc. size ); 3135 y | DB_debug_FLAG ; 3136 `memy ( logc . da , & y , (rectype)); 3138 i(! `IS_REP_CLIENT ( dbv )) 3139 t = `__log_put ( dbv , 3140 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 3142 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 3143 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 3144 `LSN_NOT_LOGGED (* t_lp ); 3147 #ifde LOG_DIAGNOSTIC 3148 i( t != 0) 3149 () `__db_pg__t ( dbv , 3150 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 3153 #ifde DIAGNOSTIC 3154 `__os_ ( dbv , logc . da ); 3156 i( is_dub || tx = NULL ) 3157 `__os_ ( dbv , logc . da ); 3159 ( t ); 3160 } } 3166 $__db_pg__ad ( dbv , cbuf , g ) 3167 DB_ENV * dbv ; 3168 * cbuf ; 3169 __db_pg__gs ** g ; 3171 __db_pg__gs * gp ; 3172 u_t32_t ump ; 3173 u_t8_t * bp ; 3174 t ; 3176 i(( t = `__os_mloc ( dbv , 3177 ( __db_pg__gs + ( DB_TXN ), & gp )) != 0) 3178 ( t ); 3179 bp = cbuf ; 3180 gp -> tx = ( DB_TXN *)&argp[1]; 3181 `memt ( gp -> tx , 0, ( DB_TXN )); 3183 `memy (& gp -> ty , bp , (argp->type)); 3184 bp +( gp -> ty ); 3186 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 3187 bp +( gp -> tx -> txnid ); 3189 `memy (& gp -> ev_l , bp , ( DB_LSN )); 3190 bp +( DB_LSN ); 3192 `memy (& ump , bp , (uinttmp)); 3193 gp -> feid = ( t32_t ) ump ; 3194 bp +( ump ); 3196 `memy (& ump , bp , (uinttmp)); 3197 gp -> pgno = ( db_pgno_t ) ump ; 3198 bp +( ump ); 3200 `memt (& gp -> hd , 0, (argp->header)); 3201 `memy (& gp -> hd . size , bp , ( u_t32_t )); 3202 bp +( u_t32_t ); 3203 gp -> hd . da = bp ; 3204 bp + gp -> hd . size ; 3206 `memt (& gp -> da , 0, (argp->data)); 3207 `memy (& gp -> da . size , bp , ( u_t32_t )); 3208 bp +( u_t32_t ); 3209 gp -> da .d bp ; 3210 bp + gp -> da . size ; 3212 * g = gp ; 3214 } } 3222 $__db_pg_st_log ( dbp , tx , t_lp , ags , ma , ma_l , ϡ_ , ϡ_l , ϡ_pgno , 3223 li ) 3224 DB * dbp ; 3225 DB_TXN * tx ; 3226 DB_LSN * t_lp ; 3227 u_t32_t ags ; 3228 db_pgno_t ma ; 3229 DB_LSN * ma_l ; 3230 db_pgno_t ϡ_ ; 3231 DB_LSN * ϡ_l ; 3232 db_pgno_t ϡ_pgno ; 3233 cڡ DBT * li ; 3235 DBT logc ; 3236 DB_ENV * dbv ; 3237 DB_TXNLOGREC * ; 3238 DB_LSN * lp , nu_l , * p ; 3239 u_t32_t zo , ump , y , txn_num ; 3240 u_t ad ; 3241 u_t8_t * bp ; 3242 is_dub , t ; 3244 dbv = dbp ->dbenv; 3245 `COMPQUIET ( , NULL ); 3247 y = DB___db_pg_st ; 3248 ad = 0; 3249 p = t_lp ; 3251 t = 0; 3253 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 3254 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 3255 i( tx = NULL ) 3257 is_dub = 0; 3259 is_dub = 1; 3261 i( tx = NULL ) { 3262 txn_num = 0; 3263 lp = & nu_l ; 3264 nu_l . fe =u_l. offt = 0; 3266 i( `TAILQ_FIRST (& tx -> kids ! NULL && 3267 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 3268 ( t ); 3275 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 3276 txn_num = tx -> txnid ; 3279 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 3280 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 3281 ( t = `__dbg_zy_id ( dbp )) != 0) 3282 ( t ); 3284 logc . size = ( y + ( txn_num + ( DB_LSN ) 3285 + ( u_t32_t ) 3286 + ( u_t32_t ) 3287 + (* ma_l ) 3288 + ( u_t32_t ) 3289 + (* ϡ_l ) 3290 + ( u_t32_t ) 3291 + ( u_t32_t + ( li = NULL ? 0 :i-> size ); 3292 i( `CRYPTO_ON ( dbv )) { 3293 ad = 3294 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 3295 logc . size + ad ; 3298 i( is_dub || tx = NULL ) { 3299 i(( t = 3300 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 3301 ( t ); 3303 i(( t = `__os_mloc ( dbv , 3304 logc . size + ( DB_TXNLOGREC ), & )) != 0) 3305 ( t ); 3306 #ifde DIAGNOSTIC 3307 i(( t = 3308 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 3309 `__os_ ( dbv , ); 3310 ( t ); 3313 logc . da = ->data; 3316 i( ad > 0) 3317 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 3319 bp = logc . da ; 3321 `memy ( bp , & y , (rectype)); 3322 bp +( y ); 3324 `memy ( bp , & txn_num , (txn_num)); 3325 bp +( txn_num ); 3327 `memy ( bp , lp , ( DB_LSN )); 3328 bp +( DB_LSN ); 3330 ump = ( u_t32_t ) dbp -> log_fame -> id ; 3331 `memy ( bp , & ump , (uinttmp)); 3332 bp +( ump ); 3334 ump = ( u_t32_t ) ma ; 3335 `memy ( bp , & ump , (uinttmp)); 3336 bp +( ump ); 3338 i( ma_l ! NULL ) { 3339 i( tx ! NULL ) { 3340 LOG * = dbv -> lg_hd -> gfo . imy ; 3341 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 3342 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 3343 ( t ); 3345 `memy ( bp , ma_l , (*meta_lsn)); 3347 `memt ( bp , 0, (* ma_l )); 3348 bp +(* ma_l ); 3350 ump = ( u_t32_t ) ϡ_ ; 3351 `memy ( bp , & ump , (uinttmp)); 3352 bp +( ump ); 3354 i( ϡ_l ! NULL ) { 3355 i( tx ! NULL ) { 3356 LOG * = dbv -> lg_hd -> gfo . imy ; 3357 i( `LOG_COMPARE ( ϡ_l , & -> l >0 && ( t = 3358 `__log_check_ge_l ( dbv , dbp , ϡ_l ) != 0)) 3359 ( t ); 3361 `memy ( bp , ϡ_l , (*last_lsn)); 3363 `memt ( bp , 0, (* ϡ_l )); 3364 bp +(* ϡ_l ); 3366 ump = ( u_t32_t ) ϡ_pgno ; 3367 `memy ( bp , & ump , (uinttmp)); 3368 bp +( ump ); 3370 i( li = NULL ) { 3371 zo = 0; 3372 `memy ( bp , & zo , ( u_t32_t )); 3373 bp +( u_t32_t ); 3375 `memy ( bp , & li -> size , (list->size)); 3376 bp +( li -> size ); 3377 `memy ( bp , li -> da ,i-> size ); 3378 bp + li -> size ; 3381 `DB_ASSERT ( dbv , 3382 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 3384 i( is_dub || tx = NULL ) { 3385 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 3386 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 3387 * lp = * p ; 3388 i( p ! t_lp ) 3389 * t_lp = * p ; 3392 t = 0; 3393 #ifde DIAGNOSTIC 3398 `memy ( -> da , logc .da,ogc. size ); 3399 y | DB_debug_FLAG ; 3400 `memy ( logc . da , & y , (rectype)); 3402 i(! `IS_REP_CLIENT ( dbv )) 3403 t = `__log_put ( dbv , 3404 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 3406 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 3407 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 3408 `LSN_NOT_LOGGED (* t_lp ); 3411 #ifde LOG_DIAGNOSTIC 3412 i( t != 0) 3413 () `__db_pg_st_t ( dbv , 3414 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 3417 #ifde DIAGNOSTIC 3418 `__os_ ( dbv , logc . da ); 3420 i( is_dub || tx = NULL ) 3421 `__os_ ( dbv , logc . da ); 3423 ( t ); 3424 } } 3430 $__db_pg_st_ad ( dbv , cbuf , g ) 3431 DB_ENV * dbv ; 3432 * cbuf ; 3433 __db_pg_st_gs ** g ; 3435 __db_pg_st_gs * gp ; 3436 u_t32_t ump ; 3437 u_t8_t * bp ; 3438 t ; 3440 i(( t = `__os_mloc ( dbv , 3441 ( __db_pg_st_gs + ( DB_TXN ), & gp )) != 0) 3442 ( t ); 3443 bp = cbuf ; 3444 gp -> tx = ( DB_TXN *)&argp[1]; 3445 `memt ( gp -> tx , 0, ( DB_TXN )); 3447 `memy (& gp -> ty , bp , (argp->type)); 3448 bp +( gp -> ty ); 3450 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 3451 bp +( gp -> tx -> txnid ); 3453 `memy (& gp -> ev_l , bp , ( DB_LSN )); 3454 bp +( DB_LSN ); 3456 `memy (& ump , bp , (uinttmp)); 3457 gp -> feid = ( t32_t ) ump ; 3458 bp +( ump ); 3460 `memy (& ump , bp , (uinttmp)); 3461 gp -> ma = ( db_pgno_t ) ump ; 3462 bp +( ump ); 3464 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 3465 bp +( gp -> ma_l ); 3467 `memy (& ump , bp , (uinttmp)); 3468 gp -> ϡ_ = ( db_pgno_t ) ump ; 3469 bp +( ump ); 3471 `memy (& gp -> ϡ_l , bp , (argp->last_lsn)); 3472 bp +( gp -> ϡ_l ); 3474 `memy (& ump , bp , (uinttmp)); 3475 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 3476 bp +( ump ); 3478 `memt (& gp -> li , 0, (argp->list)); 3479 `memy (& gp -> li . size , bp , ( u_t32_t )); 3480 bp +( u_t32_t ); 3481 gp -> li . da = bp ; 3482 bp + gp -> li . size ; 3484 * g = gp ; 3486 } } 3493 $__db__cov ( dbv , dbp , dbsiz ) 3494 DB_ENV * dbv ; 3495 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 3496 size_t * dbsiz ; 3498 t ; 3500 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3501 __db_addm_cov , DB___db_addm )) != 0) 3502 ( t ); 3503 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3504 __db_big_cov , DB___db_big )) != 0) 3505 ( t ); 3506 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3507 __db_ovf_cov , DB___db_ovf )) != 0) 3508 ( t ); 3509 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3510 __db_debug_cov , DB___db_debug )) != 0) 3511 ( t ); 3512 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3513 __db_no_cov , DB___db_no )) != 0) 3514 ( t ); 3515 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3516 __db_pg_loc_cov , DB___db_pg_loc )) != 0) 3517 ( t ); 3518 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3519 __db_pg__cov , DB___db_pg_ )) != 0) 3520 ( t ); 3521 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3522 __db_cksum_cov , DB___db_cksum )) != 0) 3523 ( t ); 3524 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3525 __db_pg_da_cov , DB___db_pg_da )) != 0) 3526 ( t ); 3527 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3528 __db_pg_e_cov , DB___db_pg_e )) != 0) 3529 ( t ); 3530 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3531 __db_pg_w_cov , DB___db_pg_w )) != 0) 3532 ( t ); 3533 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3534 __db_pg__cov , DB___db_pg_ )) != 0) 3535 ( t ); 3536 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 3537 __db_pg_st_cov , DB___db_pg_st )) != 0) 3538 ( t ); 3540 } } @../db/db_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__db_addm_t ( dbv , db , lp , nud2 , nud3 ) 19 DB_ENV * dbv ; 20 DBT * db ; 21 DB_LSN * lp ; 22 db_cs nud2 ; 23 * nud3 ; 25 __db_addm_gs * gp ; 26 u_t32_t i ; 27 ch ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = `__db_addm_ad ( dbv , db -> da , & gp )) != 0) 34 ( t ); 35 () `tf ( 37 ( u_lg ) lp -> fe , (u_lgp-> offt , 38 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 39 ( u_lg ) gp -> ty , 40 ( u_lg ) gp -> tx -> txnid , 41 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 42 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 43 () `tf ("\tfeid: %ld\n", () gp -> feid ); 44 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 45 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 46 () `tf ("\bys: %lu\n", ( u_lg ) gp -> nbys ); 47 () `tf ("\thdr: "); 48 i = 0; i < gp -> hdr . size ; i++) { 49 ch = (( u_t8_t *) gp -> hdr . da )[ i ]; 50 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 52 () `tf ("\n"); 53 () `tf ("\tdbt: "); 54 i = 0; i < gp -> dbt . size ; i++) { 55 ch = (( u_t8_t *) gp -> dbt . da )[ i ]; 56 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 58 () `tf ("\n"); 59 () `tf ("\tpagelsn: [%lu][%lu]\n", 60 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 61 () `tf ("\n"); 62 `__os_ ( dbv , gp ); 64 } } 71 $__db_big_t ( dbv , db , lp , nud2 , nud3 ) 72 DB_ENV * dbv ; 73 DBT * db ; 74 DB_LSN * lp ; 75 db_cs nud2 ; 76 * nud3 ; 78 __db_big_gs * gp ; 79 u_t32_t i ; 80 ch ; 81 t ; 83 nud2 = DB_TXN_PRINT ; 84 nud3 = NULL ; 86 i(( t = `__db_big_ad ( dbv , db -> da , & gp )) != 0) 87 ( t ); 88 () `tf ( 90 ( u_lg ) lp -> fe , (u_lgp-> offt , 91 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 92 ( u_lg ) gp -> ty , 93 ( u_lg ) gp -> tx -> txnid , 94 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 95 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 96 () `tf ("\tfeid: %ld\n", () gp -> feid ); 97 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 98 () `tf ("\v_pgno: %lu\n", ( u_lg ) gp -> ev_pgno ); 99 () `tf ("\ext_pgno: %lu\n", ( u_lg ) gp -> xt_pgno ); 100 () `tf ("\tdbt: "); 101 i = 0; i < gp -> dbt . size ; i++) { 102 ch = (( u_t8_t *) gp -> dbt . da )[ i ]; 103 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 105 () `tf ("\n"); 106 () `tf ("\tpagelsn: [%lu][%lu]\n", 107 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 108 () `tf ("\tprevlsn: [%lu][%lu]\n", 109 ( u_lg ) gp -> evl . fe , (u_lgrgp->evl. offt ); 110 () `tf ("\tnextlsn: [%lu][%lu]\n", 111 ( u_lg ) gp -> x . fe , (u_lgrgp->x. offt ); 112 () `tf ("\n"); 113 `__os_ ( dbv , gp ); 115 } } 122 $__db_ovf_t ( dbv , db , lp , nud2 , nud3 ) 123 DB_ENV * dbv ; 124 DBT * db ; 125 DB_LSN * lp ; 126 db_cs nud2 ; 127 * nud3 ; 129 __db_ovf_gs * gp ; 130 t ; 132 nud2 = DB_TXN_PRINT ; 133 nud3 = NULL ; 135 i(( t = `__db_ovf_ad ( dbv , db -> da , & gp )) != 0) 136 ( t ); 137 () `tf ( 139 ( u_lg ) lp -> fe , (u_lgp-> offt , 140 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 141 ( u_lg ) gp -> ty , 142 ( u_lg ) gp -> tx -> txnid , 143 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 144 () `tf ("\tfeid: %ld\n", () gp -> feid ); 145 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 146 () `tf ("\dju: %ld\n", () gp -> adju ); 147 () `tf ("\tlsn: [%lu][%lu]\n", 148 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 149 () `tf ("\n"); 150 `__os_ ( dbv , gp ); 152 } } 159 $__db_lk_42_t ( dbv , db , lp , nud2 , nud3 ) 160 DB_ENV * dbv ; 161 DBT * db ; 162 DB_LSN * lp ; 163 db_cs nud2 ; 164 * nud3 ; 166 __db_lk_42_gs * gp ; 167 t ; 169 nud2 = DB_TXN_PRINT ; 170 nud3 = NULL ; 172 i(( t = `__db_lk_42_ad ( dbv , db -> da , & gp )) != 0) 173 ( t ); 174 () `tf ( 176 ( u_lg ) lp -> fe , (u_lgp-> offt , 177 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 178 ( u_lg ) gp -> ty , 179 ( u_lg ) gp -> tx -> txnid , 180 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 181 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 182 () `tf ("\tfeid: %ld\n", () gp -> feid ); 183 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 184 () `tf ("\tlsn: [%lu][%lu]\n", 185 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 186 () `tf ("\v: %lu\n", ( u_lg ) gp -> ev ); 187 () `tf ("\tlsn_prev: [%lu][%lu]\n", 188 ( u_lg ) gp -> l_ev . fe , (u_lgrgp->l_ev. offt ); 189 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 190 () `tf ("\tlsn_next: [%lu][%lu]\n", 191 ( u_lg ) gp -> l_xt . fe , (u_lgrgp->l_xt. offt ); 192 () `tf ("\n"); 193 `__os_ ( dbv , gp ); 195 } } 202 $__db_debug_t ( dbv , db , lp , nud2 , nud3 ) 203 DB_ENV * dbv ; 204 DBT * db ; 205 DB_LSN * lp ; 206 db_cs nud2 ; 207 * nud3 ; 209 __db_debug_gs * gp ; 210 u_t32_t i ; 211 ch ; 212 t ; 214 nud2 = DB_TXN_PRINT ; 215 nud3 = NULL ; 217 i(( t = `__db_debug_ad ( dbv , db -> da , & gp )) != 0) 218 ( t ); 219 () `tf ( 221 ( u_lg ) lp -> fe , (u_lgp-> offt , 222 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 223 ( u_lg ) gp -> ty , 224 ( u_lg ) gp -> tx -> txnid , 225 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 226 () `tf ("\top: "); 227 i = 0; i < gp -> . size ; i++) { 228 ch = (( u_t8_t *) gp -> . da )[ i ]; 229 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 231 () `tf ("\n"); 232 () `tf ("\tfeid: %ld\n", () gp -> feid ); 233 () `tf ("\tkey: "); 234 i = 0; i < gp -> key . size ; i++) { 235 ch = (( u_t8_t *) gp -> key . da )[ i ]; 236 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 238 () `tf ("\n"); 239 () `tf ("\tdata: "); 240 i = 0; i < gp -> da . size ; i++) { 241 ch = (( u_t8_t *) gp -> da .da)[ i ]; 242 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 244 () `tf ("\n"); 245 () `tf ("\rg_ags: %lu\n", ( u_lg ) gp -> g_ags ); 246 () `tf ("\n"); 247 `__os_ ( dbv , gp ); 249 } } 256 $__db_no_t ( dbv , db , lp , nud2 , nud3 ) 257 DB_ENV * dbv ; 258 DBT * db ; 259 DB_LSN * lp ; 260 db_cs nud2 ; 261 * nud3 ; 263 __db_no_gs * gp ; 264 t ; 266 nud2 = DB_TXN_PRINT ; 267 nud3 = NULL ; 269 i(( t = `__db_no_ad ( dbv , db -> da , & gp )) != 0) 270 ( t ); 271 () `tf ( 273 ( u_lg ) lp -> fe , (u_lgp-> offt , 274 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 275 ( u_lg ) gp -> ty , 276 ( u_lg ) gp -> tx -> txnid , 277 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 278 () `tf ("\tfeid: %ld\n", () gp -> feid ); 279 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 280 () `tf ("\tprevlsn: [%lu][%lu]\n", 281 ( u_lg ) gp -> evl . fe , (u_lgrgp->evl. offt ); 282 () `tf ("\n"); 283 `__os_ ( dbv , gp ); 285 } } 292 $__db_pg_loc_42_t ( dbv , db , lp , nud2 , nud3 ) 293 DB_ENV * dbv ; 294 DBT * db ; 295 DB_LSN * lp ; 296 db_cs nud2 ; 297 * nud3 ; 299 __db_pg_loc_42_gs * gp ; 300 t ; 302 nud2 = DB_TXN_PRINT ; 303 nud3 = NULL ; 305 i(( t = `__db_pg_loc_42_ad ( dbv , db -> da , & gp )) != 0) 306 ( t ); 307 () `tf ( 309 ( u_lg ) lp -> fe , (u_lgp-> offt , 310 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 311 ( u_lg ) gp -> ty , 312 ( u_lg ) gp -> tx -> txnid , 313 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 314 () `tf ("\tfeid: %ld\n", () gp -> feid ); 315 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 316 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 317 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 318 () `tf ("\tpage_lsn: [%lu][%lu]\n", 319 ( u_lg ) gp -> ge_l . fe , (u_lgrgp->ge_l. offt ); 320 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 321 () `tf ("\ty: %lu\n", ( u_lg ) gp -> y ); 322 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 323 () `tf ("\n"); 324 `__os_ ( dbv , gp ); 326 } } 333 $__db_pg_loc_t ( dbv , db , lp , nud2 , nud3 ) 334 DB_ENV * dbv ; 335 DBT * db ; 336 DB_LSN * lp ; 337 db_cs nud2 ; 338 * nud3 ; 340 __db_pg_loc_gs * gp ; 341 t ; 343 nud2 = DB_TXN_PRINT ; 344 nud3 = NULL ; 346 i(( t = `__db_pg_loc_ad ( dbv , db -> da , & gp )) != 0) 347 ( t ); 348 () `tf ( 350 ( u_lg ) lp -> fe , (u_lgp-> offt , 351 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 352 ( u_lg ) gp -> ty , 353 ( u_lg ) gp -> tx -> txnid , 354 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 355 () `tf ("\tfeid: %ld\n", () gp -> feid ); 356 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 357 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 358 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 359 () `tf ("\tpage_lsn: [%lu][%lu]\n", 360 ( u_lg ) gp -> ge_l . fe , (u_lgrgp->ge_l. offt ); 361 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 362 () `tf ("\ty: %lu\n", ( u_lg ) gp -> y ); 363 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 364 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 365 () `tf ("\n"); 366 `__os_ ( dbv , gp ); 368 } } 375 $__db_pg__42_t ( dbv , db , lp , nud2 , nud3 ) 376 DB_ENV * dbv ; 377 DBT * db ; 378 DB_LSN * lp ; 379 db_cs nud2 ; 380 * nud3 ; 382 __db_pg__42_gs * gp ; 383 u_t32_t i ; 384 ch ; 385 t ; 387 nud2 = DB_TXN_PRINT ; 388 nud3 = NULL ; 390 i(( t = `__db_pg__42_ad ( dbv , db -> da , & gp )) != 0) 391 ( t ); 392 () `tf ( 394 ( u_lg ) lp -> fe , (u_lgp-> offt , 395 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 396 ( u_lg ) gp -> ty , 397 ( u_lg ) gp -> tx -> txnid , 398 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 399 () `tf ("\tfeid: %ld\n", () gp -> feid ); 400 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 401 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 402 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 403 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 404 () `tf ("\theader: "); 405 i = 0; i < gp -> hd . size ; i++) { 406 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 407 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 409 () `tf ("\n"); 410 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 411 () `tf ("\n"); 412 `__os_ ( dbv , gp ); 414 } } 421 $__db_pg__t ( dbv , db , lp , nud2 , nud3 ) 422 DB_ENV * dbv ; 423 DBT * db ; 424 DB_LSN * lp ; 425 db_cs nud2 ; 426 * nud3 ; 428 __db_pg__gs * gp ; 429 u_t32_t i ; 430 ch ; 431 t ; 433 nud2 = DB_TXN_PRINT ; 434 nud3 = NULL ; 436 i(( t = `__db_pg__ad ( dbv , db -> da , & gp )) != 0) 437 ( t ); 438 () `tf ( 440 ( u_lg ) lp -> fe , (u_lgp-> offt , 441 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 442 ( u_lg ) gp -> ty , 443 ( u_lg ) gp -> tx -> txnid , 444 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 445 () `tf ("\tfeid: %ld\n", () gp -> feid ); 446 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 447 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 448 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 449 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 450 () `tf ("\theader: "); 451 i = 0; i < gp -> hd . size ; i++) { 452 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 453 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 455 () `tf ("\n"); 456 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 457 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 458 () `tf ("\n"); 459 `__os_ ( dbv , gp ); 461 } } 468 $__db_cksum_t ( dbv , db , lp , nud2 , nud3 ) 469 DB_ENV * dbv ; 470 DBT * db ; 471 DB_LSN * lp ; 472 db_cs nud2 ; 473 * nud3 ; 475 __db_cksum_gs * gp ; 476 t ; 478 nud2 = DB_TXN_PRINT ; 479 nud3 = NULL ; 481 i(( t = `__db_cksum_ad ( dbv , db -> da , & gp )) != 0) 482 ( t ); 483 () `tf ( 485 ( u_lg ) lp -> fe , (u_lgp-> offt , 486 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 487 ( u_lg ) gp -> ty , 488 ( u_lg ) gp -> tx -> txnid , 489 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 490 () `tf ("\n"); 491 `__os_ ( dbv , gp ); 493 } } 500 $__db_pg_da_42_t ( dbv , db , lp , nud2 , nud3 ) 501 DB_ENV * dbv ; 502 DBT * db ; 503 DB_LSN * lp ; 504 db_cs nud2 ; 505 * nud3 ; 507 __db_pg_da_42_gs * gp ; 508 u_t32_t i ; 509 ch ; 510 t ; 512 nud2 = DB_TXN_PRINT ; 513 nud3 = NULL ; 515 i(( t = `__db_pg_da_42_ad ( dbv , db -> da , & gp )) != 0) 516 ( t ); 517 () `tf ( 519 ( u_lg ) lp -> fe , (u_lgp-> offt , 520 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 521 ( u_lg ) gp -> ty , 522 ( u_lg ) gp -> tx -> txnid , 523 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 524 () `tf ("\tfeid: %ld\n", () gp -> feid ); 525 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 526 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 527 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 528 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 529 () `tf ("\theader: "); 530 i = 0; i < gp -> hd . size ; i++) { 531 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 532 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 534 () `tf ("\n"); 535 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 536 () `tf ("\tdata: "); 537 i = 0; i < gp -> da . size ; i++) { 538 ch = (( u_t8_t *) gp -> da .da)[ i ]; 539 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 541 () `tf ("\n"); 542 () `tf ("\n"); 543 `__os_ ( dbv , gp ); 545 } } 552 $__db_pg_da_t ( dbv , db , lp , nud2 , nud3 ) 553 DB_ENV * dbv ; 554 DBT * db ; 555 DB_LSN * lp ; 556 db_cs nud2 ; 557 * nud3 ; 559 __db_pg_da_gs * gp ; 560 u_t32_t i ; 561 ch ; 562 t ; 564 nud2 = DB_TXN_PRINT ; 565 nud3 = NULL ; 567 i(( t = `__db_pg_da_ad ( dbv , db -> da , & gp )) != 0) 568 ( t ); 569 () `tf ( 571 ( u_lg ) lp -> fe , (u_lgp-> offt , 572 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 573 ( u_lg ) gp -> ty , 574 ( u_lg ) gp -> tx -> txnid , 575 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 576 () `tf ("\tfeid: %ld\n", () gp -> feid ); 577 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 578 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 579 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 580 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 581 () `tf ("\theader: "); 582 i = 0; i < gp -> hd . size ; i++) { 583 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 584 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 586 () `tf ("\n"); 587 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 588 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 589 () `tf ("\tdata: "); 590 i = 0; i < gp -> da . size ; i++) { 591 ch = (( u_t8_t *) gp -> da .da)[ i ]; 592 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 594 () `tf ("\n"); 595 () `tf ("\n"); 596 `__os_ ( dbv , gp ); 598 } } 605 $__db_pg_e_t ( dbv , db , lp , nud2 , nud3 ) 606 DB_ENV * dbv ; 607 DBT * db ; 608 DB_LSN * lp ; 609 db_cs nud2 ; 610 * nud3 ; 612 __db_pg_e_gs * gp ; 613 t ; 615 nud2 = DB_TXN_PRINT ; 616 nud3 = NULL ; 618 i(( t = `__db_pg_e_ad ( dbv , db -> da , & gp )) != 0) 619 ( t ); 620 () `tf ( 622 ( u_lg ) lp -> fe , (u_lgp-> offt , 623 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 624 ( u_lg ) gp -> ty , 625 ( u_lg ) gp -> tx -> txnid , 626 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 627 () `tf ("\tfeid: %ld\n", () gp -> feid ); 628 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 629 () `tf ("\n"); 630 `__os_ ( dbv , gp ); 632 } } 639 $__db_pg_w_t ( dbv , db , lp , nud2 , nud3 ) 640 DB_ENV * dbv ; 641 DBT * db ; 642 DB_LSN * lp ; 643 db_cs nud2 ; 644 * nud3 ; 646 __db_pg_w_gs * gp ; 647 u_t32_t i ; 648 ch ; 649 t ; 651 nud2 = DB_TXN_PRINT ; 652 nud3 = NULL ; 654 i(( t = `__db_pg_w_ad ( dbv , db -> da , & gp )) != 0) 655 ( t ); 656 () `tf ( 658 ( u_lg ) lp -> fe , (u_lgp-> offt , 659 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 660 ( u_lg ) gp -> ty , 661 ( u_lg ) gp -> tx -> txnid , 662 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 663 () `tf ("\tfeid: %ld\n", () gp -> feid ); 664 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 665 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 666 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 667 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 668 () `tf ("\theader: "); 669 i = 0; i < gp -> hd . size ; i++) { 670 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 671 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 673 () `tf ("\n"); 674 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 675 () `tf ("\n"); 676 `__os_ ( dbv , gp ); 678 } } 685 $__db_pg__t ( dbv , db , lp , nud2 , nud3 ) 686 DB_ENV * dbv ; 687 DBT * db ; 688 DB_LSN * lp ; 689 db_cs nud2 ; 690 * nud3 ; 692 __db_pg__gs * gp ; 693 u_t32_t i ; 694 ch ; 695 t ; 697 nud2 = DB_TXN_PRINT ; 698 nud3 = NULL ; 700 i(( t = `__db_pg__ad ( dbv , db -> da , & gp )) != 0) 701 ( t ); 702 () `tf ( 704 ( u_lg ) lp -> fe , (u_lgp-> offt , 705 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 706 ( u_lg ) gp -> ty , 707 ( u_lg ) gp -> tx -> txnid , 708 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 709 () `tf ("\tfeid: %ld\n", () gp -> feid ); 710 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 711 () `tf ("\theader: "); 712 i = 0; i < gp -> hd . size ; i++) { 713 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 714 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 716 () `tf ("\n"); 717 () `tf ("\tdata: "); 718 i = 0; i < gp -> da . size ; i++) { 719 ch = (( u_t8_t *) gp -> da .da)[ i ]; 720 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 722 () `tf ("\n"); 723 () `tf ("\n"); 724 `__os_ ( dbv , gp ); 726 } } 733 $__db_pg_st_t ( dbv , db , lp , nud2 , nud3 ) 734 DB_ENV * dbv ; 735 DBT * db ; 736 DB_LSN * lp ; 737 db_cs nud2 ; 738 * nud3 ; 740 __db_pg_st_gs * gp ; 741 u_t32_t i ; 742 ch ; 743 t ; 745 nud2 = DB_TXN_PRINT ; 746 nud3 = NULL ; 748 i(( t = `__db_pg_st_ad ( dbv , db -> da , & gp )) != 0) 749 ( t ); 750 () `tf ( 752 ( u_lg ) lp -> fe , (u_lgp-> offt , 753 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 754 ( u_lg ) gp -> ty , 755 ( u_lg ) gp -> tx -> txnid , 756 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 757 () `tf ("\tfeid: %ld\n", () gp -> feid ); 758 () `tf ("\tma: %lu\n", ( u_lg ) gp -> ma ); 759 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 760 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 761 () `tf ("\a_: %lu\n", ( u_lg ) gp -> ϡ_ ); 762 () `tf ("\tlast_lsn: [%lu][%lu]\n", 763 ( u_lg ) gp -> ϡ_l . fe , (u_lgrgp->ϡ_l. offt ); 764 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 765 () `tf ("\tlist: "); 766 i = 0; i < gp -> li . size ; i++) { 767 ch = (( u_t8_t *) gp -> li . da )[ i ]; 768 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 770 () `tf ("\n"); 771 () `tf ("\n"); 772 `__os_ ( dbv , gp ); 774 } } 781 $__db__t ( dbv , dbp , dbsiz ) 782 DB_ENV * dbv ; 783 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 784 size_t * dbsiz ; 786 t ; 788 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 789 __db_addm_t , DB___db_addm )) != 0) 790 ( t ); 791 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 792 __db_big_t , DB___db_big )) != 0) 793 ( t ); 794 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 795 __db_ovf_t , DB___db_ovf )) != 0) 796 ( t ); 797 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 798 __db_debug_t , DB___db_debug )) != 0) 799 ( t ); 800 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 801 __db_no_t , DB___db_no )) != 0) 802 ( t ); 803 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 804 __db_pg_loc_t , DB___db_pg_loc )) != 0) 805 ( t ); 806 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 807 __db_pg__t , DB___db_pg_ )) != 0) 808 ( t ); 809 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 810 __db_cksum_t , DB___db_cksum )) != 0) 811 ( t ); 812 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 813 __db_pg_da_t , DB___db_pg_da )) != 0) 814 ( t ); 815 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 816 __db_pg_e_t , DB___db_pg_e )) != 0) 817 ( t ); 818 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 819 __db_pg_w_t , DB___db_pg_w )) != 0) 820 ( t ); 821 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 822 __db_pg__t , DB___db_pg_ )) != 0) 823 ( t ); 824 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 825 __db_pg_st_t , DB___db_pg_st )) != 0) 826 ( t ); 828 } } @../db/db_cam.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/hash.h " 15 ~"dbc/lock.h " 16 ~"dbc/mp.h " 17 ~"dbc/qam.h " 18 ~"dbc/txn.h " 20 __db_budl __P (( DB *, DBT *, DBT *, DBT *)); 21 __dbc_nup __P (( DBC *, DBC *, )); 22 __dbc_d_dskey __P (( DB *, DBC *, DBT *, DBT *, DBT *)); 23 __dbc_d_cdy __P (( DBC *)); 24 __dbc_pg_o __P (( DBC *, DBT *, DBT *, u_t32_t )); 25 __db_s_cou __P (( DB *)); 26 __db_wock_r __P (( DB_ENV *)); 28 #CDB_LOCKING_INIT ( dbv , dbc ) \ 35 i( `CDB_LOCKING ( dbv )) { \ 36 i(! `F_ISSET ( dbc , DBC_WRITECURSOR | DBC_WRITER )) \ 37 ( `__db_wock_r ( dbv )); \ 39 i( `F_ISSET ( dbc , DBC_WRITECURSOR ) && \ 40 ( t = `__lock_g ( dbv , \ 41 ( dbc )-> lock , DB_LOCK_UPGRADE , &(dbc)-> lock_dbt , \ 42 DB_LOCK_WRITE , &( dbc )-> mylock )) != 0) \ 43 ( t ); \ 44 } ) 45 #CDB_LOCKING_DONE ( dbv , dbc ) \ 47 i( `F_ISSET ( dbc , DBC_WRITECURSOR )) \ 48 () `__lock_downgde ( \ 49 dbv , &( dbc )-> mylock , DB_LOCK_IWRITE , 0); ) 58 $__dbc_o ( dbc ) 59 DBC * dbc ; 61 DB * dbp ; 62 DBC * d ; 63 DBC_INTERNAL * ; 64 DB_ENV * dbv ; 65 DB_TXN * txn ; 66 t , t_t ; 68 dbp = dbc ->dbp; 69 dbv = dbp ->dbenv; 70 = dbc -> ; 71 d = ->opd; 72 t = 0; 85 `MUTEX_LOCK ( dbv , dbp -> mux ); 87 i( d ! NULL ) { 88 `DB_ASSERT ( dbv , `F_ISSET ( d , DBC_ACTIVE )); 89 `F_CLR ( d , DBC_ACTIVE ); 90 `TAILQ_REMOVE (& dbp -> aive_queue , d , lks ); 92 `DB_ASSERT ( dbv , `F_ISSET ( dbc , DBC_ACTIVE )); 93 `F_CLR ( dbc , DBC_ACTIVE ); 94 `TAILQ_REMOVE (& dbp -> aive_queue , dbc , lks ); 96 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 99 i(( t_t = 100 dbc -> `am_o (dbc, PGNO_INVALID , NULL )!0 && t == 0) 101 t = t_t ; 107 i( `CDB_LOCKING ( dbv )) { 114 i(( t_t = `__LPUT ( dbc , dbc-> mylock )!0 && t == 0) 115 t = t_t ; 118 `memt (& dbc -> mylock , 0, (dbc->mylock)); 119 i( d ! NULL ) 120 `memt (& d -> mylock , 0, (opd->mylock)); 123 i(( txn = dbc ->txn! NULL ) 124 txn -> curss --; 127 `MUTEX_LOCK ( dbv , dbp -> mux ); 128 i( d ! NULL ) { 129 i( txn ! NULL ) 130 txn -> curss --; 131 `TAILQ_INSERT_TAIL (& dbp -> _queue , d , lks ); 132 d = NULL ; 134 `TAILQ_INSERT_TAIL (& dbp -> _queue , dbc , lks ); 135 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 137 i( txn ! NULL && `F_ISSET xn, TXN_PRIVATE &&xn-> curss == 0 && 138 ( t_t = `__txn_comm ( txn , 0)!0 && t == 0) 139 t = t_t ; 141 ( t ); 142 } } 151 $__dbc_deroy ( dbc ) 152 DBC * dbc ; 154 DB * dbp ; 155 DB_ENV * dbv ; 156 t , t_t ; 158 dbp = dbc ->dbp; 159 dbv = dbp ->dbenv; 162 `MUTEX_LOCK ( dbv , dbp -> mux ); 163 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 164 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 167 i( dbc -> my_rskey . da ! NULL ) 168 `__os_ ( dbv , dbc -> my_rskey . da ); 169 i( dbc -> my_rkey . da ! NULL ) 170 `__os_ ( dbv , dbc -> my_rkey . da ); 171 i( dbc -> my_rda . da ! NULL ) 172 `__os_ ( dbv , dbc -> my_rda . da ); 175 t = dbc -> am_deroy = NULL ? 0 : dbc-> `am_deroy (dbc); 180 i( `LOCKING_ON ( dbv ) && 181 `F_ISSET ( dbc , DBC_OWN_LID ) && 182 ( t_t = `__lock_id_ ( dbv , 183 ( DB_LOCKER *) dbc -> ef )!0 && t == 0) 184 t = t_t ; 186 `__os_ ( dbv , dbc ); 188 ( t ); 189 } } 198 $__dbc_cou ( dbc , ) 199 DBC * dbc ; 200 db_o_t * ; 202 DB_ENV * dbv ; 203 t ; 205 dbv = dbc -> dbp ->dbenv; 214 dbc -> dbty ) { 215 DB_QUEUE : 216 DB_RECNO : 217 * = 1; 219 DB_HASH : 220 i( dbc -> -> d = NULL ) { 221 i(( t = `__hamc_cou ( dbc , )) != 0) 222 ( t ); 226 DB_BTREE : 227 i(( t = `__bamc_cou ( dbc , )) != 0) 228 ( t ); 230 DB_UNKNOWN : 232 ( `__db_unknown_ty ( dbv , "__dbc_cou", dbc -> dbty )); 235 } } 244 $__dbc_d ( dbc , ags ) 245 DBC * dbc ; 246 u_t32_t ags ; 248 DB * dbp ; 249 DBC * d ; 250 DB_ENV * dbv ; 251 t , t_t ; 253 dbp = dbc ->dbp; 254 dbv = dbp ->dbenv; 264 `CDB_LOCKING_INIT ( dbv , dbc ); 274 i( ags ! DB_UPDATE_SECONDARY && `F_ISSET ( dbp , DB_AM_SECONDARY )) { 275 t = `__dbc_d_cdy ( dbc ); 276 de ; 283 i( `LIST_FIRST (& dbp -> s_cds ! NULL && 284 ( t = `__dbc_d_imy ( dbc )) != 0) 285 de ; 293 d = dbc -> ->opd; 294 i( d = NULL ) 295 t = dbc -> `am_d (dbc); 297 i(( t = dbc -> `am_wrock (dbc)) == 0) 298 t = d -> `am_d (opd); 307 i( `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED ) && 308 dbc -> -> lock_mode = DB_LOCK_WRITE ) { 309 i(( t_t = 310 `__TLPUT ( dbc , dbc-> -> lock )!0 && t == 0) 311 t = t_t ; 312 i( t_t == 0) 313 dbc -> -> lock_mode = DB_LOCK_WWRITE ; 316 de : `CDB_LOCKING_DONE ( dbv , dbc ); 318 ( t ); 319 } } 328 $__dbc_dup ( dbc_ig , db , ags ) 329 DBC * dbc_ig ; 330 DBC ** db ; 331 u_t32_t ags ; 333 DBC * dbc_n , * dbc_nd ; 334 t ; 336 dbc_n = dbc_nd = NULL ; 339 i(( t = `__dbc_idup ( dbc_ig , & dbc_n , ags )) != 0) 340 r ; 341 * db = dbc_n ; 347 i( dbc_ig -> -> d ! NULL ) { 348 i(( t = 349 `__dbc_idup ( dbc_ig -> -> d , & dbc_nd , ags )) != 0) 350 r ; 351 dbc_n -> -> d = dbc_nd ; 355 r : i( dbc_n ! NULL ) 356 () `__dbc_o ( dbc_n ); 357 i( dbc_nd ! NULL ) 358 () `__dbc_o ( dbc_nd ); 360 ( t ); 361 } } 370 $__dbc_idup ( dbc_ig , db , ags ) 371 DBC * dbc_ig , ** db ; 372 u_t32_t ags ; 374 DB * dbp ; 375 DBC * dbc_n ; 376 DBC_INTERNAL * t_n , * t_ig ; 377 t ; 379 dbp = dbc_ig ->dbp; 380 dbc_n = * db ; 382 i(( t = `__db_curs_t ( dbp , dbc_ig -> txn , dbc_ig-> dbty , 383 dbc_ig -> -> ro , `F_ISSET (dbc_ig, DBC_OPD ), 384 dbc_ig -> lock , & dbc_n )) != 0) 385 ( t ); 388 i( ags = DB_POSITION ) { 389 t_n = dbc_n -> ; 390 t_ig = dbc_ig -> ; 392 dbc_n -> ags | dbc_ig ->ag& ~ DBC_OWN_LID ; 394 t_n -> dx = t_ig ->indx; 395 t_n -> pgno = t_ig ->pgno; 396 t_n -> ro = t_ig ->root; 397 t_n -> lock_mode = t_ig ->lock_mode; 399 dbc_ig -> dbty ) { 400 DB_QUEUE : 401 i(( t = `__qamc_dup ( dbc_ig , dbc_n )) != 0) 402 r ; 404 DB_BTREE : 405 DB_RECNO : 406 i(( t = `__bamc_dup ( dbc_ig , dbc_n )) != 0) 407 r ; 409 DB_HASH : 410 i(( t = `__hamc_dup ( dbc_ig , dbc_n )) != 0) 411 r ; 413 DB_UNKNOWN : 415 t = `__db_unknown_ty ( dbp -> dbv , 416 "__dbc_idup", dbc_ig -> dbty ); 417 r ; 422 `F_SET ( dbc_n , `F_ISSET ( dbc_ig , 423 DBC_READ_COMMITTED | DBC_READ_UNCOMMITTED | DBC_WRITECURSOR )); 429 i( `CDB_LOCKING ( dbp -> dbv && ! `F_ISSET ( dbc_n , DBC_OPD ) && 430 ( t = `__lock_g ( dbp -> dbv , dbc_n -> lock , 0, 431 & dbc_n -> lock_dbt , `F_ISSET ( dbc_ig , DBC_WRITECURSOR ) ? 432 DB_LOCK_IWRITE : DB_LOCK_READ , & dbc_n -> mylock )) != 0) 433 r ; 435 dbc_n -> iܙy = dbc_ig ->priority; 436 * db = dbc_n ; 439 r : () `__dbc_o ( dbc_n ); 440 ( t ); 441 } } 450 $__dbc_wd ( dbc_ , ro , dd , db ) 451 DBC * dbc_ ; 452 db_pgno_t ro ; 453 DBC * dd ; 454 DBC ** db ; 456 DB * dbp ; 457 DBC * d ; 458 DBTYPE dbty ; 459 t ; 461 dbp = dbc_ ->dbp; 462 dbty = ( dbp -> dup_com = NULL ? DB_RECNO : DB_BTREE ; 471 * db = dd ; 473 i(( t = `__db_curs_t ( dbp , 474 dbc_ -> txn , dbty , ro , 1, dbc_-> lock , & d )) != 0) 475 ( t ); 477 d -> iܙy = dbc_ ->priority; 478 * db = d ; 492 i( dd ! NULL && ( t = `__dbc_o (oldopd)) != 0) 493 ( t ); 496 } } 505 $__dbc_g ( dbc_g , key , da , ags ) 506 DBC * dbc_g ; 507 DBT * key , * da ; 508 u_t32_t ags ; 510 DB * dbp ; 511 DBC * dbc , * dbc_n , * d ; 512 DBC_INTERNAL * , * _n ; 513 DB_ENV * dbv ; 514 DB_MPOOLFILE * mpf ; 515 db_pgno_t pgno ; 516 db_dx_t dx_off ; 517 u_t32_t mui , ig_un , tmp_ags , tmp_ad_uncommd , tmp_rmw ; 518 u_t8_t ty ; 519 key_sml , t , t_t ; 521 `COMPQUIET ( ig_un , 0); 523 key_sml = 0; 534 dbp = dbc_g ->dbp; 535 dbv = dbp ->dbenv; 536 mpf = dbp ->mpf; 537 dbc_n = NULL ; 538 d = NULL ; 541 tmp_rmw = `LF_ISSET ( DB_RMW ); 542 `LF_CLR ( DB_RMW ); 544 tmp_ad_uncommd = 545 `LF_ISSET ( DB_READ_UNCOMMITTED ) && 546 ! `F_ISSET ( dbc_g , DBC_READ_UNCOMMITTED ); 547 `LF_CLR ( DB_READ_UNCOMMITTED ); 549 mui = `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 550 `LF_CLR ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 556 i( ags = DB_GET_RECNO ) { 557 i( tmp_rmw ) 558 `F_SET ( dbc_g , DBC_RMW ); 559 i( tmp_ad_uncommd ) 560 `F_SET ( dbc_g , DBC_READ_UNCOMMITTED ); 561 t = `__bamc_rg ( dbc_g , da ); 562 i( tmp_rmw ) 563 `F_CLR ( dbc_g , DBC_RMW ); 564 i( tmp_ad_uncommd ) 565 `F_CLR ( dbc_g , DBC_READ_UNCOMMITTED ); 566 ( t ); 569 i( ags = DB_CONSUME || fg= DB_CONSUME_WAIT ) 570 `CDB_LOCKING_INIT ( dbv , dbc_g ); 577 i(( ags = DB_GET_BOTH || 578 ags = DB_GET_BOTH_RANGE || fg= DB_SET ) && 579 (( BTREE *) dbp -> bt_ )-> bt_com = __bam_defcmp 580 #ifde HAVE_HASH 581 && (( HASH *) dbp -> h_ )-> h_com = NULL 584 `F_SET ( key , DB_DBT_ISSET ); 586 i( ags = DB_GET_BOTH && dbp -> dup_com = NULL ) 587 `F_SET ( da , DB_DBT_ISSET ); 600 = dbc_g -> ; 601 i( -> d ! NULL && 602 ( ags = DB_CURRENT || fg= DB_GET_BOTHC || 603 ags = DB_NEXT || fg= DB_NEXT_DUP || 604 ags = DB_PREV || fg= DB_PREV_DUP )) { 605 i( tmp_rmw && ( t = dbc_g -> `am_wrock (dbc_arg)) != 0) 606 r ; 607 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 608 d = ->opd; 609 i(( t = `__dbc_idup ( -> d , &d, DB_POSITION )) != 0) 610 r ; 612 t = d -> `am_g (d, key , da , ags , NULL )) { 614 de ; 615 DB_NOTFOUND : 621 i( ags = DB_NEXT || fg= DB_PREV ) { 622 i(( t = `__dbc_o ( d )) != 0) 623 r ; 624 d = NULL ; 625 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 626 -> d = NULL ; 629 r ; 631 r ; 633 } i( -> d ! NULL && `F_ISSET ( dbc_g , DBC_TRANSIENT )) { 634 i(( t = `__dbc_o ( -> d )) != 0) 635 r ; 636 -> d = NULL ; 643 ags ) { 644 DB_CURRENT : 645 DB_GET_BOTHC : 646 DB_NEXT : 647 DB_NEXT_DUP : 648 DB_NEXT_NODUP : 649 DB_PREV : 650 DB_PREV_DUP : 651 DB_PREV_NODUP : 652 tmp_ags = DB_POSITION ; 655 tmp_ags = 0; 659 i( tmp_ad_uncommd ) 660 `F_SET ( dbc_g , DBC_READ_UNCOMMITTED ); 666 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 667 dbc_n = dbc_g ; 669 t = `__dbc_idup ( dbc_g , & dbc_n , tmp_ags ); 670 i( tmp_ad_uncommd ) 671 `F_CLR ( dbc_g , DBC_READ_UNCOMMITTED ); 673 i( t != 0) 674 r ; 675 `COPY_RET_MEM ( dbc_g , dbc_n ); 678 i( tmp_rmw ) 679 `F_SET ( dbc_n , DBC_RMW ); 681 mui ) { 682 DB_MULTIPLE : 683 `F_SET ( dbc_n , DBC_MULTIPLE ); 685 DB_MULTIPLE_KEY : 686 `F_SET ( dbc_n , DBC_MULTIPLE_KEY ); 688 DB_MULTIPLE | DB_MULTIPLE_KEY : 689 `F_SET ( dbc_n , DBC_MULTIPLE | DBC_MULTIPLE_KEY ); 696 pgno = PGNO_INVALID ; 697 t = dbc_n -> `am_g (dbc_n, key , da , ags , & pgno ); 698 i( tmp_rmw ) 699 `F_CLR ( dbc_n , DBC_RMW ); 700 i( tmp_ad_uncommd ) 701 `F_CLR ( dbc_g , DBC_READ_UNCOMMITTED ); 702 `F_CLR ( dbc_n , DBC_MULTIPLE | DBC_MULTIPLE_KEY ); 703 i( t != 0) 704 r ; 706 _n = dbc_n -> ; 712 i( pgno ! PGNO_INVALID ) { 713 i(( t = `__dbc_wd ( dbc_g , 714 pgno , _n -> d , &cp_n->opd)) != 0) 715 r ; 717 ags ) { 718 DB_FIRST : 719 DB_NEXT : 720 DB_NEXT_NODUP : 721 DB_SET : 722 DB_SET_RECNO : 723 DB_SET_RANGE : 724 tmp_ags = DB_FIRST ; 726 DB_LAST : 727 DB_PREV : 728 DB_PREV_NODUP : 729 tmp_ags = DB_LAST ; 731 DB_GET_BOTH : 732 DB_GET_BOTHC : 733 DB_GET_BOTH_RANGE : 734 tmp_ags = ags ; 737 t = `__db_unknown_ag ( dbv , "__dbc_g", ags ); 738 r ; 740 i(( t = _n -> d -> `am_g ( 741 _n -> d , key , da , tmp_ags , NULL )) != 0) 742 r ; 745 de : 759 _n = dbc_n = NULL ? dbc_g -> : dbc_n->internal; 760 i(! `F_ISSET ( key , DB_DBT_ISSET )) { 761 i( _n -> ge = NULL && ( t = `__memp_fg ( mpf , &_n-> pgno , 762 dbc_g -> txn , 0, & _n -> ge )) != 0) 763 r ; 765 i(( t = `__db_t ( dbp , dbc_g -> txn , 766 _n -> ge , cp_n-> dx , key , 767 & dbc_g -> rkey -> da , &dbc_g->rkey-> un )) != 0) { 775 i( t = DB_BUFFER_SMALL && 776 `F_ISSET ( da , DB_DBT_USERMEM )) { 777 key_sml = 1; 778 ig_un = da -> un ; 779 da -> un = 0; 781 r ; 784 i( mui != 0) { 789 i( dbc_n = NULL ) { 796 i((!( mui & DB_MULTIPLE_KEY ) && 797 dbc_g -> -> d = NULL ) || 798 `F_ISSET ( dbc_g , DBC_TRANSIENT )) 799 dbc_n = dbc_g ; 801 i(( t = `__dbc_idup ( dbc_g , 802 & dbc_n , DB_POSITION )) != 0) 803 r ; 804 i(( t = dbc_n -> `am_g (dbc_n, 805 key , da , DB_CURRENT , & pgno )) != 0) 806 r ; 808 _n = dbc_n -> ; 816 i( d ! NULL ) { 817 `DB_ASSERT ( dbv , _n -> d = NULL ); 818 _n -> d = opd; 819 d = NULL ; 830 da -> size = da-> un ; 831 t = dbc_n -> `am_bulk (dbc_n, da , ags | mui ); 832 } i(! `F_ISSET ( da , DB_DBT_ISSET )) { 833 dbc = d ! NULL ? opd : _n ->d !NULL ? cp_n->d : dbc_n ; 834 = dbc -> ; 835 i( -> ge = NULL && 836 ( t = `__memp_fg ( mpf , & -> pgno , dbc -> txn , 837 0, & -> ge )) != 0) 838 r ; 840 ty = `TYPE ( -> ge ); 841 dx_off = (( ty = P_LBTREE || 842 ty = P_HASH ||y = P_HASH_UNSORTED ? O_INDX : 0); 843 t = `__db_t ( dbp , dbc -> txn , -> ge , cp-> dx + dx_off , 844 da , & dbc_g -> rda ->da, &dbc_g->rda-> un ); 847 r : 848 `F_CLR ( key , DB_DBT_ISSET ); 849 `F_CLR ( da , DB_DBT_ISSET ); 852 i( d ! NULL ) { 860 i( `F_ISSET ( dbc_g -> dbp , DB_AM_READ_UNCOMMITTED ) && 861 `F_ISSET (( BTREE_CURSOR *) 862 dbc_g -> -> d ->, C_DELETED )) 863 i(( t_t = 864 dbc_g -> `am_wrock (dbc_g)!0 && t == 0) 865 t = t_t ; 866 i(( t_t = `__dbc_nup ( 867 dbc_g -> -> d , opd, t )) != 0 &&et == 0) 868 t = t_t ; 872 i( key_sml ) { 873 da -> un = ig_un ; 874 i( t == 0) 875 t = DB_BUFFER_SMALL ; 878 i(( t_t = `__dbc_nup ( dbc_g , dbc_n , t )) != 0 && 879 ( t =0 || = DB_BUFFER_SMALL )) 880 t = t_t ; 882 i( ags = DB_CONSUME || fg= DB_CONSUME_WAIT ) 883 `CDB_LOCKING_DONE ( dbv , dbc_g ); 884 ( t ); 885 } } 894 $__dbc_put ( dbc_g , key , da , ags ) 895 DBC * dbc_g ; 896 DBT * key , * da ; 897 u_t32_t ags ; 899 DB_ENV * dbv ; 900 DB * dbp , * sdbp ; 901 DBC * dbc_n , * dd , * d , * sdbc , * pdbc ; 902 DBT dda , dpkey , wda , pkey , mkey , mpskey ; 903 DBT * l_skeys , * skeyp , * tskeyp ; 904 db_pgno_t pgno ; 905 cmp , have_dc , itl , nod , _d , t , s_cou , t_t ; 906 u_t32_t _n , nskey , rmw , size , tmp_ags ; 917 dbp = dbc_g ->dbp; 918 dbv = dbp ->dbenv; 919 sdbp = NULL ; 920 pdbc = dbc_n = NULL ; 921 l_skeys = NULL ; 922 `memt (& wda , 0, ( DBT )); 923 t = s_cou = 0; 930 `memt (& dda , 0, ( DBT )); 931 `F_SET (& dda , DB_DBT_MALLOC ); 939 i( ags = DB_UPDATE_SECONDARY ) 940 ags = DB_KEYLAST ; 942 `CDB_LOCKING_INIT ( dbv , dbc_g ); 949 i( `LIST_FIRST (& dbp -> s_cds = NULL ) 950 sk_s_upde ; 1009 `memt (& pkey , 0, ( DBT )); 1010 s_cou = `__db_s_cou ( dbp ); 1011 i(( t = `__os_oc ( 1012 dbv , ( u_t ) s_cou , ( DBT ), & l_skeys )) != 0) 1013 r ; 1014 have_dc = nod = 0; 1022 `DB_ASSERT ( dbv , ags = DB_CURRENT || fg= DB_KEYFIRST || 1023 ags = DB_KEYLAST || fg= DB_NOOVERWRITE ); 1029 rmw = `STD_LOCKING ( dbc_g ? DB_RMW : 0; 1031 i( ags = DB_CURRENT ) { 1044 t = `__dbc_g ( dbc_g , & pkey , & dda , rmw | DB_CURRENT ); 1045 i( t = DB_KEYEMPTY ) 1046 t = DB_NOTFOUND ; 1047 i( t != 0) 1048 r ; 1050 have_dc = 1; 1053 pkey . da = key ->data; 1054 pkey . size = key ->size; 1060 i( `F_ISSET ( da , DB_DBT_PARTIAL )) { 1061 i(! have_dc && ! nod ) { 1067 i(( t = `__dbc_idup ( dbc_g , & pdbc , 0)) != 0) 1068 r ; 1071 `DB_ASSERT ( dbv , ags ! DB_CURRENT ); 1073 t = `__dbc_g ( pdbc , & pkey , & dda , rmw | DB_SET ); 1074 i( t = DB_KEYEMPTY || = DB_NOTFOUND ) { 1075 nod = 1; 1076 t = 0; 1078 i(( t_t = `__dbc_o ( pdbc )) != 0) 1079 t = t_t ; 1080 i( t != 0) 1081 r ; 1083 have_dc = 1; 1092 i(( t = 1093 `__db_budl ( dbp , & dda , da , & wda )) != 0) 1094 r ; 1095 itl = 1; 1097 itl = 0; 1105 i(( dbp -> ty = DB_RECNO && `F_ISSET (dbp, DB_AM_FIXEDLEN )) || 1106 ( dbp -> ty = DB_QUEUE )) { 1107 i( dbp -> ty = DB_QUEUE ) { 1108 _n = (( QUEUE *) dbp -> q_ )->re_len; 1109 _d = (( QUEUE *) dbp -> q_ )->re_pad; 1111 _n = (( BTREE *) dbp -> bt_ )->re_len; 1112 _d = (( BTREE *) dbp -> bt_ )->re_pad; 1115 size = itl ? wda .siz: da ->size; 1116 i( size > _n ) { 1117 t = `__db_c_toobig ( dbv , size , _n ); 1118 r ; 1119 } i( size < _n ) { 1131 i(( t = 1132 `__os_loc ( dbv , _n , & wda . da )) != 0) 1133 r ; 1134 i(! itl ) 1135 `memy ( wda . da , da->da, size ); 1136 `memt (( u_t8_t *) wda . da + size , _d , 1137 _n - size ); 1138 wda . size = _n ; 1139 itl = 1; 1149 t = `__db_s_f ( dbp , & sdbp ), skeyp = l_skeys ; 1150 sdbp ! NULL && t == 0; 1151 t = `__db_s_xt (& sdbp , dbc_g -> txn ), ++ skeyp ) { 1152 `DB_ASSERT ( dbv , skeyp - l_skeys < s_cou ); 1158 i( have_dc && ! nod && 1159 `FLD_ISSET ( sdbp -> s_assoc_ags , DB_ASSOC_IMMUTABLE_KEY )) 1166 i(( t = sdbp -> `s_back (sdbp, 1167 & pkey , itl ? & wda : da , skeyp )) != 0) { 1168 i( t = DB_DONOTINDEX ) 1176 r ; 1184 i( `F_ISSET ( skeyp , DB_DBT_MULTIPLE )) { 1185 #ifde DIAGNOSTIC 1186 `__db_check_skeyt ( sdbp , skeyp ); 1188 tskeyp = ( DBT *) skeyp -> da , nskey = skeyp-> size ; 1189 nskey > 0;skey--, tskeyp ++) 1190 `F_SET ( tskeyp , DB_DBT_ISSET ); 1192 tskeyp = ( DBT *) skeyp -> da ; 1193 nskey = skeyp -> size ; 1195 `F_SET ( skeyp , DB_DBT_ISSET ); 1196 tskeyp = skeyp ; 1197 nskey = 1; 1205 i( have_dc ) { 1206 i(( t = `__dbc_d_dskey ( sdbp , dbc_g , 1207 skeyp , & pkey , & dda )= DB_KEYEXIST ) 1209 i( t != 0) 1210 r ; 1221 i(( t = `__db_curs_t ( sdbp , dbc_g -> txn , sdbp-> ty , 1222 PGNO_INVALID , 0, dbc_g -> lock , & sdbc )) != 0) 1223 r ; 1234 i( `CDB_LOCKING ( dbv )) { 1235 `DB_ASSERT ( dbv , sdbc -> mylock . off = LOCK_INVALID ); 1236 `F_SET ( sdbc , DBC_WRITER ); 1245 `SWAP_IF_NEEDED ( sdbp , & pkey ); 1247 ; nskey > 0 && t =0;skey--, tskeyp ++) { 1249 i(! `F_ISSET ( tskeyp , DB_DBT_ISSET )) 1284 i(! `F_ISSET ( sdbp , DB_AM_DUP )) { 1286 `memt (& dpkey , 0, ( DBT )); 1287 `F_SET (& dpkey , DB_DBT_MALLOC ); 1288 t = `__dbc_g ( sdbc , 1289 tskeyp , & dpkey , rmw | DB_SET ); 1290 i( t == 0) { 1291 cmp = `__bam_defcmp ( sdbp , 1292 & dpkey , & pkey ); 1293 `__os_u ( dbv , dpkey . da ); 1294 i( cmp != 0) { 1295 `__db_rx ( dbv , "%s%s", 1298 t = EINVAL ; 1301 i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 1303 } i(! `F_ISSET ( sdbp , DB_AM_DUPSORT )) { 1305 `DB_INIT_DBT ( mpskey , 1306 tskeyp -> da ,skeyp-> size ); 1307 `DB_INIT_DBT ( mkey , 1308 pkey . da ,key. size ); 1309 t = `__dbc_g ( sdbc , & mpskey , & mkey , 1310 rmw | DB_GET_BOTH ); 1311 i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 1315 t = `__dbc_put ( sdbc , tskeyp , & pkey , 1316 DB_UPDATE_SECONDARY ); 1323 i( t = DB_KEYEXIST ) 1324 t = 0; 1328 `SWAP_IF_NEEDED ( sdbp , & pkey ); 1330 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 1331 t = t_t ; 1333 i( t != 0) 1334 r ; 1341 `F_SET ( skeyp , DB_DBT_ISSET ); 1343 i( t != 0) 1344 r ; 1350 i( have_dc ) 1351 sk_s_upde ; 1358 i(( t = `__dbc_idup ( dbc_g , & pdbc , 0)) != 0) 1359 r ; 1360 `DB_ASSERT ( dbv , ags ! DB_CURRENT ); 1361 pkey . da = key ->data; 1362 pkey . size = key ->size; 1363 t = `__dbc_g ( pdbc , & pkey , & dda , rmw | DB_SET ); 1364 i( t = DB_KEYEMPTY || = DB_NOTFOUND ) { 1365 nod = 1; 1366 t = 0; 1368 i(( t_t = `__dbc_o ( pdbc )!0 && t == 0) 1369 t = t_t ; 1370 i( t != 0) 1371 r ; 1377 i( nod ) 1378 sk_s_upde ; 1380 t = `__db_s_f ( dbp , & sdbp ), skeyp = l_skeys ; 1381 sdbp ! NULL && t == 0; 1382 t = `__db_s_xt (& sdbp , dbc_g -> txn ), skeyp ++) { 1383 `DB_ASSERT ( dbv , skeyp - l_skeys < s_cou ); 1389 i( `FLD_ISSET ( sdbp -> s_assoc_ags , DB_ASSOC_IMMUTABLE_KEY )) 1392 t = `__dbc_d_dskey ( sdbp , dbc_g , skeyp , & pkey , & dda ); 1393 i( t !0 && ! DB_KEYEXIST ) 1394 r ; 1396 i( t != 0) 1397 r ; 1401 sk_s_upde : 1412 i( dbc_g -> -> d ! NULL && 1413 ( ags = DB_AFTER || fg= DB_BEFORE || fg= DB_CURRENT )) { 1421 i( dbc_g -> dbty = DB_HASH && `F_ISSET ( 1422 (( BTREE_CURSOR *)( dbc_g -> -> d ->internal)), 1423 C_DELETED )) { 1424 t = DB_NOTFOUND ; 1425 r ; 1428 i(( t = dbc_g -> `am_wrock (dbc_arg)) != 0 || 1429 ( t = `__dbc_dup ( dbc_g , & dbc_n , DB_POSITION )) != 0) 1430 r ; 1431 d = dbc_n -> ->opd; 1432 i(( t = d -> `am_put ( 1433 d , key , da , ags , NULL )) != 0) 1434 r ; 1435 de ; 1442 tmp_ags = ags = DB_AFTER || 1443 ags = DB_BEFORE || fg= DB_CURRENT ? DB_POSITION : 0; 1449 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 1450 dbc_n = dbc_g ; 1451 i(( t = `__dbc_idup ( dbc_g , & dbc_n , tmp_ags )) != 0) 1452 r ; 1454 pgno = PGNO_INVALID ; 1455 i(( t = dbc_n -> `am_put (dbc_n, key , da , ags , & pgno )) != 0) 1456 r ; 1462 i( pgno ! PGNO_INVALID ) { 1463 dd = dbc_n -> -> d ; 1464 i(( t = `__dbc_wd ( dbc_g , pgno , dd , & d )) != 0) { 1465 dbc_n -> -> d = opd; 1466 r ; 1469 dbc_n -> -> d = opd; 1471 i( ags = DB_NOOVERWRITE ) 1472 ags = DB_KEYLAST ; 1473 i(( t = d -> `am_put ( 1474 d , key , da , ags , NULL )) != 0) 1475 r ; 1478 de : 1479 r : 1480 i(( t_t = `__dbc_nup ( dbc_g , dbc_n , t )) != 0 &&et == 0) 1481 t = t_t ; 1484 i( wda . da ! NULL ) 1485 `__os_ ( dbv , wda . da ); 1486 i( dda . da ! NULL ) 1487 `__os_u ( dbv , dda . da ); 1489 `CDB_LOCKING_DONE ( dbv , dbc_g ); 1491 i( sdbp ! NULL && 1492 ( t_t = `__db_s_de ( sdbp , dbc_g -> txn )!0 && t == 0) 1493 t = t_t ; 1495 skeyp = l_skeys ; skey-_skey< s_cou ; skeyp++) { 1496 i( `F_ISSET ( skeyp , DB_DBT_MULTIPLE )) { 1497 nskey = skeyp -> size , tskeyp = ( DBT *)skeyp-> da ; 1498 nskey > 0; 1499 nskey --, tskeyp ++) 1500 `FREE_IF_NEEDED ( dbv , tskeyp ); 1502 `FREE_IF_NEEDED ( dbv , skeyp ); 1504 i( l_skeys ! NULL ) 1505 `__os_ ( dbv , l_skeys ); 1507 ( t ); 1508 } } 1516 $__dbc_d_dskey ( sdbp , dbc_g , skey , pkey , dda ) 1517 DB * sdbp ; 1518 DBC * dbc_g ; 1519 DBT * skey , * pkey , * dda ; 1521 DB_ENV * dbv ; 1522 DB * dbp ; 1523 DBC * sdbc ; 1524 DBT * tdskeyp , * tskeyp ; 1525 DBT dskey , mkey , mpskey ; 1526 t , t_t ; 1527 u_t32_t i , ndskey , nme , nskey , rmw ; 1529 sdbc = NULL ; 1530 dbp = sdbp -> s_imy ; 1531 dbv = dbp ->dbenv; 1532 nme = 0; 1533 rmw = `STD_LOCKING ( dbc_g ? DB_RMW : 0; 1538 `memt (& dskey , 0, ( DBT )); 1539 i(( t = sdbp -> `s_back (sdbp, pkey , dda , & dskey )) != 0) { 1540 i( t = DB_DONOTINDEX ) 1542 t = 0; 1543 ( t ); 1546 i( `F_ISSET (& dskey , DB_DBT_MULTIPLE )) { 1547 #ifde DIAGNOSTIC 1548 `__db_check_skeyt ( sdbp , & dskey ); 1550 tdskeyp = ( DBT *) dskey . da ; 1551 ndskey = dskey . size ; 1553 tdskeyp = & dskey ; 1554 ndskey = 1; 1557 i( `F_ISSET ( skey , DB_DBT_MULTIPLE )) { 1558 nskey = skey -> size ; 1559 skey = ( DBT *)skey-> da ; 1561 nskey = `F_ISSET ( skey , DB_DBT_ISSET ) ? 1 : 0; 1563 ; ndskey > 0 && t =0;dskey--, tdskeyp ++) { 1569 i = 0, tskeyp = skey ; i < nskey ; i++,skeyp++) 1570 i((( BTREE *) sdbp -> bt_ )-> `bt_com (sdbp, 1571 tdskeyp , tskeyp ) == 0) { 1572 nme ++; 1573 `F_CLR ( tskeyp , DB_DBT_ISSET ); 1577 i( i < nskey ) { 1578 `FREE_IF_NEEDED ( dbv , tdskeyp ); 1582 i( sdbc = NULL ) { 1583 i(( t = `__db_curs_t ( 1584 sdbp , dbc_g -> txn , sdbp-> ty , 1585 PGNO_INVALID , 0, dbc_g -> lock , & sdbc )) != 0) 1586 r ; 1587 i( `CDB_LOCKING ( dbv )) { 1588 `DB_ASSERT ( dbv , 1589 sdbc -> mylock . off = LOCK_INVALID ); 1590 `F_SET ( sdbc , DBC_WRITER ); 1598 `SWAP_IF_NEEDED ( sdbp , pkey ); 1599 `DB_INIT_DBT ( mkey , pkey -> da ,key-> size ); 1600 `DB_INIT_DBT ( mpskey , tdskeyp -> da ,dskeyp-> size ); 1601 i(( t = `__dbc_g ( sdbc , 1602 & mpskey , & mkey , rmw | DB_GET_BOTH )) == 0) 1603 t = `__dbc_d ( sdbc , DB_UPDATE_SECONDARY ); 1604 i( t = DB_NOTFOUND ) 1605 t = `__db_cdy_cru ( dbp ); 1606 `SWAP_IF_NEEDED ( sdbp , pkey ); 1607 `FREE_IF_NEEDED ( dbv , tdskeyp ); 1610 r : ; ndskey > 0;dskey--, tdskeyp ++) 1611 `FREE_IF_NEEDED ( dbv , tdskeyp ); 1612 `FREE_IF_NEEDED ( dbv , & dskey ); 1613 i( sdbc ! NULL && ( t_t = `__dbc_o (sdbc)!0 && t == 0) 1614 t = t_t ; 1615 i( t =0 && nme = nskey ) 1616 ( DB_KEYEXIST ); 1617 ( t ); 1618 } } 1626 $__db_du ( dbp , ags ) 1627 DB * dbp ; 1628 u_t32_t ags ; 1643 i( ags ! DB_NODUPDATA && ! `F_ISSET ( dbp , DB_AM_SECONDARY )) 1644 `__db_rx ( dbp -> dbv , 1646 ( DB_KEYEXIST ); 1647 } } 1654 $__dbc_nup ( dbc , dbc_n , ed ) 1655 DBC * dbc , * dbc_n ; 1656 ed ; 1658 DB * dbp ; 1659 DBC * d ; 1660 DBC_INTERNAL * ; 1661 DB_MPOOLFILE * mpf ; 1662 t , t_t ; 1664 dbp = dbc ->dbp; 1665 mpf = dbp ->mpf; 1666 = dbc ->internal; 1667 t = 0; 1670 i( -> ge ! NULL ) { 1671 i(( t_t = `__memp_ut ( mpf , 1672 -> ge , dbc -> iܙy )!0 && t == 0) 1673 t = t_t ; 1674 -> ge = NULL ; 1676 d = ->opd; 1677 i( d ! NULL && opd-> -> ge != NULL) { 1678 i(( t_t = `__memp_ut ( mpf , 1679 d -> -> ge , dbc -> iܙy )!0 && t == 0) 1680 t = t_t ; 1681 d -> -> ge = NULL ; 1698 i( dbc_n = NULL || dbc == dbc_n) 1699 ( t ); 1701 i( dbc_n -> -> ge ! NULL ) { 1702 i(( t_t = `__memp_ut ( mpf , 1703 dbc_n -> -> ge , dbc -> iܙy )!0 && t == 0) 1704 t = t_t ; 1705 dbc_n -> -> ge = NULL ; 1707 d = dbc_n -> ->opd; 1708 i( d ! NULL && opd-> -> ge != NULL) { 1709 i(( t_t = `__memp_ut ( mpf , 1710 d -> -> ge , dbc -> iܙy )!0 && t == 0) 1711 t = t_t ; 1712 d -> -> ge = NULL ; 1720 i(! ed && t == 0) { 1721 dbc -> = dbc_n ->internal; 1722 dbc_n -> = internal; 1740 i(( t_t = `__dbc_o ( dbc_n )!0 && t == 0) 1741 t = t_t ; 1750 i( `F_ISSET ( dbp , DB_AM_READ_UNCOMMITTED ) && 1751 dbc -> -> lock_mode = DB_LOCK_WRITE ) { 1752 i(( t_t = 1753 `__TLPUT ( dbc , dbc-> -> lock )!0 && t == 0) 1754 t = t_t ; 1755 i( t_t == 0) 1756 dbc -> -> lock_mode = DB_LOCK_WWRITE ; 1759 ( t ); 1760 } } 1770 $__dbc_cdy_g_ ( dbc , skey , da , ags ) 1771 DBC * dbc ; 1772 DBT * skey , * da ; 1773 u_t32_t ags ; 1775 `DB_ASSERT ( dbc -> dbp -> dbv , `F_ISSET (dbc->dbp, DB_AM_SECONDARY )); 1776 ( `__dbc_pg_ ( dbc , skey , NULL , da , ags )); 1777 } } 1786 $__dbc_pg ( dbc , skey , pkey , da , ags ) 1787 DBC * dbc ; 1788 DBT * skey , * pkey , * da ; 1789 u_t32_t ags ; 1791 DB * pdbp , * sdbp ; 1792 DBC * dbc_n , * pdbc ; 1793 DBT nupkey ; 1794 u_t32_t ve_pkey_ags , tmp_ags , tmp_ad_uncommd , tmp_rmw ; 1795 pkeymloc , t , t_t ; 1797 sdbp = dbc -> dbp ; 1798 pdbp = sdbp -> s_imy ; 1799 dbc_n = NULL ; 1800 pkeymloc = t_t = 0; 1814 i( pkey = NULL ) { 1815 `memt (& nupkey , 0, ( DBT )); 1816 pkey = & nupkey ; 1820 tmp_rmw = `LF_ISSET ( DB_RMW ); 1821 `LF_CLR ( DB_RMW ); 1823 tmp_ad_uncommd = 1824 `LF_ISSET ( DB_READ_UNCOMMITTED ) && 1825 ! `F_ISSET ( dbc , DBC_READ_UNCOMMITTED ); 1826 `LF_CLR ( DB_READ_UNCOMMITTED ); 1833 i( ags = DB_GET_RECNO ) { 1834 i( tmp_rmw ) 1835 `F_SET ( dbc , DBC_RMW ); 1836 i( tmp_ad_uncommd ) 1837 `F_SET ( dbc , DBC_READ_UNCOMMITTED ); 1838 t = `__dbc_pg_o ( dbc , pkey , da , ags ); 1839 i( tmp_rmw ) 1840 `F_CLR ( dbc , DBC_RMW ); 1841 i( tmp_ad_uncommd ) 1842 `F_CLR ( dbc , DBC_READ_UNCOMMITTED ); 1843 ( t ); 1880 ve_pkey_ags = pkey -> ags ; 1881 `F_CLR ( pkey , DB_DBT_PARTIAL ); 1890 ags ) { 1891 DB_CURRENT : 1892 DB_GET_BOTHC : 1893 DB_NEXT : 1894 DB_NEXT_DUP : 1895 DB_NEXT_NODUP : 1896 DB_PREV : 1897 DB_PREV_DUP : 1898 DB_PREV_NODUP : 1899 tmp_ags = DB_POSITION ; 1902 tmp_ags = 0; 1906 i(( t = `__dbc_dup ( dbc , & dbc_n , tmp_ags )) != 0) 1907 ( t ); 1909 `F_SET ( dbc_n , DBC_TRANSIENT ); 1911 i( tmp_rmw ) 1912 `F_SET ( dbc_n , DBC_RMW ); 1913 i( tmp_ad_uncommd ) 1914 `F_SET ( dbc_n , DBC_READ_UNCOMMITTED ); 1920 i( ags = DB_GET_BOTH || fg= DB_GET_BOTHC || 1921 ags = DB_GET_BOTH_RANGE ) 1922 `SWAP_IF_NEEDED ( sdbp , pkey ); 1924 y : 1925 dbc_n -> rda = dbc -> rkey ; 1926 dbc_n -> rkey = dbc -> rskey ; 1927 t = `__dbc_g ( dbc_n , skey , pkey , ags ); 1929 pkey -> ags = ve_pkey_ags ; 1936 i( t =0 || ags = DB_GET_BOTH || fg= DB_GET_BOTHC || 1937 ags = DB_GET_BOTH_RANGE ) 1938 `SWAP_IF_NEEDED ( sdbp , pkey ); 1940 i( t != 0) 1941 r ; 1965 i(( t = `__db_curs_t ( pdbp , 1966 dbc -> txn , pdbp -> ty , PGNO_INVALID , 0, dbc-> lock , & pdbc )) != 0) 1967 r ; 1969 i( tmp_ad_uncommd || `F_ISSET ( dbc , DBC_READ_UNCOMMITTED )) 1970 `F_SET ( pdbc , DBC_READ_UNCOMMITTED ); 1971 i( tmp_rmw || `F_ISSET ( dbc , DBC_RMW )) 1972 `F_SET ( pdbc , DBC_RMW ); 1973 i( `F_ISSET ( dbc , DBC_READ_COMMITTED )) 1974 `F_SET ( pdbc , DBC_READ_COMMITTED ); 1992 i( `F_ISSET ( pkey , DB_DBT_MALLOC )) { 1993 `F_CLR ( pkey , DB_DBT_MALLOC ); 1994 `F_SET ( pkey , DB_DBT_REALLOC ); 1995 pkeymloc = 1; 1996 } i( `F_ISSET ( pkey , DB_DBT_USERCOPY ) && 1997 ( t = `__dbt_urcy ( sdbp -> dbv , pkey )) != 0) 1998 r ; 2005 `F_SET ( pdbc , DBC_TRANSIENT ); 2006 `SET_RET_MEM ( pdbc , dbc ); 2007 t = `__dbc_g ( pdbc , pkey , da , DB_SET ); 2016 i(( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2017 t = t_t ; 2019 i( t = DB_NOTFOUND ) { 2020 i(! `F_ISSET ( pdbc , DBC_READ_UNCOMMITTED )) 2021 t = `__db_cdy_cru ( pdbp ); 2022 ags ) { 2023 DB_GET_BOTHC : 2024 DB_NEXT : 2025 DB_NEXT_DUP : 2026 DB_NEXT_NODUP : 2027 DB_PREV : 2028 DB_PREV_DUP : 2029 DB_PREV_NODUP : 2030 y ; 2036 r : 2037 i(( t_t = `__dbc_nup ( dbc , dbc_n , t )) != 0 &&et == 0) 2038 t = t_t ; 2039 i( pkeymloc ) { 2046 `F_CLR ( pkey , DB_DBT_REALLOC ); 2047 `F_SET ( pkey , DB_DBT_MALLOC ); 2050 ( t ); 2051 } } 2060 $__dbc_pg_o ( sdbc , pkey , da , ags ) 2061 DBC * sdbc ; 2062 DBT * pkey , * da ; 2063 u_t32_t ags ; 2065 DB * pdbp , * sdbp ; 2066 DB_ENV * dbv ; 2067 DBC * pdbc ; 2068 DBT disrdme , imy_key ; 2069 db_o_t oob ; 2070 u_t32_t rmw ; 2071 t , t_t ; 2073 sdbp = sdbc -> dbp ; 2074 pdbp = sdbp -> s_imy ; 2075 dbv = sdbp ->dbenv; 2076 pdbc = NULL ; 2077 t = t_t = 0; 2079 rmw = `LF_ISSET ( DB_RMW ); 2081 `memt (& disrdme , 0, ( DBT )); 2082 `F_SET (& disrdme , DB_DBT_USERMEM | DB_DBT_PARTIAL ); 2084 oob = RECNO_OOB ; 2092 i( `F_ISSET ( pdbp , DB_AM_RECNUM )) { 2097 `memt (& imy_key , 0, ( DBT )); 2098 `F_SET (& imy_key , DB_DBT_MALLOC ); 2099 i(( t = `__dbc_g ( sdbc , 2100 & disrdme , & imy_key , rmw | DB_CURRENT )) != 0) 2101 ( t ); 2112 i(( t = `__db_curs_t ( pdbp , sdbc -> txn , 2113 pdbp -> ty , PGNO_INVALID , 0, sdbc -> lock , & pdbc )) != 0) 2114 ; 2115 `SET_RET_MEM ( pdbc , sdbc ); 2116 i(( t = `__dbc_g ( pdbc , 2117 & imy_key , & disrdme , rmw | DB_SET )) != 0) 2118 ; 2120 t = `__dbc_g ( pdbc , & disrdme , da , rmw | DB_GET_RECNO ); 2122 : `__os_u ( sdbp -> dbv , imy_key . da ); 2123 i( pdbc ! NULL && 2124 ( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2125 t = t_t ; 2126 i( t != 0) 2127 ( t ); 2128 } i(( t = `__db_tcy ( dbv , da , & oob , 2129 ( oob ), & sdbc -> rkey -> da , &sdbc->rkey-> un )) != 0) 2130 ( t ); 2138 i( `F_ISSET ( sdbp , DB_AM_RECNUM )) 2139 ( `__dbc_g ( sdbc , & disrdme , pkey , ags )); 2141 ( `__db_tcy ( dbv , pkey , & oob , 2142 ( oob ), & sdbc -> rda -> da , &sdbc->rda-> un )); 2143 } } 2149 $__db_wock_r ( dbv ) 2150 DB_ENV * dbv ; 2152 `__db_rx ( dbv , "Writettempted onead-only cursor"); 2153 ( EPERM ); 2154 } } 2167 $__dbc_d_cdy ( dbc ) 2168 DBC * dbc ; 2170 DB_ENV * dbv ; 2171 DB * pdbp ; 2172 DBC * pdbc ; 2173 DBT skey , pkey ; 2174 t , t_t ; 2175 u_t32_t rmw ; 2177 pdbp = dbc -> dbp -> s_imy ; 2178 dbv = pdbp ->dbenv; 2179 rmw = `STD_LOCKING ( dbc ? DB_RMW : 0; 2186 `memt (& skey , 0, ( DBT )); 2187 `memt (& pkey , 0, ( DBT )); 2188 `F_SET (& skey , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 2189 i(( t = `__dbc_g ( dbc , & skey , & pkey , DB_CURRENT )) != 0) 2190 ( t ); 2192 `SWAP_IF_NEEDED ( dbc -> dbp , & pkey ); 2204 i(( t = `__db_curs_t ( pdbp , dbc -> txn , 2205 pdbp -> ty , PGNO_INVALID , 0, dbc -> lock , & pdbc )) != 0) 2206 ( t ); 2214 i( `CDB_LOCKING ( dbv )) { 2215 `DB_ASSERT ( dbv , pdbc -> mylock . off = LOCK_INVALID ); 2216 `F_SET ( pdbc , DBC_WRITER ); 2228 i(( t = `__dbc_g ( pdbc , & pkey , & skey , DB_SET | rmw )) == 0) 2229 t = `__dbc_d ( pdbc , 0); 2230 i( t = DB_NOTFOUND ) 2231 t = `__db_cdy_cru ( pdbp ); 2233 i(( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2234 t = t_t ; 2236 ( t ); 2237 } } 2249 $__dbc_d_imy ( dbc ) 2250 DBC * dbc ; 2252 DB_ENV * dbv ; 2253 DB * dbp , * sdbp ; 2254 DBC * sdbc ; 2255 DBT * tskeyp ; 2256 DBT da , pkey , skey , mkey , mpskey ; 2257 u_t32_t nskey , rmw ; 2258 t , t_t ; 2260 dbp = dbc ->dbp; 2261 dbv = dbp ->dbenv; 2262 rmw = `STD_LOCKING ( dbc ? DB_RMW : 0; 2270 `memt (& pkey , 0, ( DBT )); 2271 `memt (& da , 0, ( DBT )); 2272 i(( t = `__dbc_g ( dbc , & pkey , & da , DB_CURRENT )) != 0) 2273 ( t ); 2275 `memt (& skey , 0, ( DBT )); 2276 t = `__db_s_f ( dbp , & sdbp ); 2277 sdbp ! NULL && t == 0; 2278 t = `__db_s_xt (& sdbp , dbc -> txn )) { 2283 i(( t = sdbp -> `s_back (sdbp, & pkey , & da , & skey )) != 0) { 2288 i( t = DB_DONOTINDEX ) 2292 r ; 2295 #ifde DIAGNOSTIC 2296 i( `F_ISSET (& skey , DB_DBT_MULTIPLE )) 2297 `__db_check_skeyt ( sdbp , & skey ); 2301 i(( t = `__db_curs_t ( sdbp , dbc -> txn , sdbp-> ty , 2302 PGNO_INVALID , 0, dbc -> lock , & sdbc )) != 0) 2303 r ; 2305 i( `CDB_LOCKING ( dbv )) { 2306 `DB_ASSERT ( dbv , sdbc -> mylock . off = LOCK_INVALID ); 2307 `F_SET ( sdbc , DBC_WRITER ); 2310 i( `F_ISSET (& skey , DB_DBT_MULTIPLE )) { 2311 tskeyp = ( DBT *) skey . da ; 2312 nskey = skey . size ; 2314 tskeyp = & skey ; 2315 nskey = 1; 2318 ; nskey > 0;skey--, tskeyp ++) { 2332 `DB_INIT_DBT ( mpskey , tskeyp -> da ,skeyp-> size ); 2333 `SWAP_IF_NEEDED ( sdbp , & pkey ); 2334 `DB_INIT_DBT ( mkey , pkey . da ,key. size ); 2335 i(( t = `__dbc_g ( sdbc , & mpskey , & mkey , 2336 DB_GET_BOTH | rmw )) == 0) 2337 t = `__dbc_d ( sdbc , DB_UPDATE_SECONDARY ); 2338 i( t = DB_NOTFOUND ) 2339 t = `__db_cdy_cru ( dbp ); 2340 `SWAP_IF_NEEDED ( sdbp , & pkey ); 2341 `FREE_IF_NEEDED ( dbv , tskeyp ); 2344 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 2345 t = t_t ; 2346 i( t != 0) 2347 r ; 2356 `FREE_IF_NEEDED ( dbv , & skey ); 2359 r : i( sdbp ! NULL && 2360 ( t_t = `__db_s_de ( sdbp , dbc -> txn )!0 && t == 0) 2361 t = t_t ; 2362 `FREE_IF_NEEDED ( dbv , & skey ); 2363 ( t ); 2364 } } 2373 $__db_s_f ( pdbp , sdb ) 2374 DB * pdbp , ** sdb ; 2376 DB * sdbp ; 2378 `MUTEX_LOCK ( pdbp -> dbv ,dbp-> mux ); 2379 sdbp = `LIST_FIRST (& pdbp -> s_cds ); 2382 i( sdbp ! NULL ) 2383 sdbp -> s_ft ++; 2384 `MUTEX_UNLOCK ( pdbp -> dbv ,dbp-> mux ); 2386 * sdb = sdbp ; 2389 } } 2398 $__db_s_xt ( sdb , txn ) 2399 DB ** sdb ; 2400 DB_TXN * txn ; 2402 DB_ENV * dbv ; 2403 DB * sdbp , * pdbp , * ome ; 2404 t ; 2429 sdbp = * sdb ; 2430 pdbp = sdbp -> s_imy ; 2431 dbv = pdbp ->dbenv; 2432 ome = NULL ; 2434 `MUTEX_LOCK ( dbv , pdbp -> mux ); 2435 `DB_ASSERT ( dbv , sdbp -> s_ft != 0); 2436 i(-- sdbp -> s_ft == 0) { 2437 `LIST_REMOVE ( sdbp , s_lks ); 2438 ome = sdbp ; 2440 sdbp = `LIST_NEXT (sdbp, s_lks ); 2441 i( sdbp ! NULL ) 2442 sdbp -> s_ft ++; 2443 `MUTEX_UNLOCK ( dbv , pdbp -> mux ); 2445 * sdb = sdbp ; 2450 i( ome = NULL ) 2451 t = 0; 2452 i( txn = NULL ) 2453 t = `__db_o ( ome , NULL , 0); 2455 t = `__txn_oevt ( dbv , txn , ome ); 2457 ( t ); 2458 } } 2468 $__db_s_de ( sdbp , txn ) 2469 DB * sdbp ; 2470 DB_TXN * txn ; 2472 DB_ENV * dbv ; 2473 DB * pdbp ; 2474 doo , t ; 2476 pdbp = sdbp -> s_imy ; 2477 dbv = pdbp ->dbenv; 2478 doo = 0; 2480 `MUTEX_LOCK ( dbv , pdbp -> mux ); 2481 `DB_ASSERT ( dbv , sdbp -> s_ft != 0); 2482 i(-- sdbp -> s_ft == 0) { 2483 `LIST_REMOVE ( sdbp , s_lks ); 2484 doo = 1; 2486 `MUTEX_UNLOCK ( dbv , pdbp -> mux ); 2488 i( doo == 0) 2489 t = 0; 2490 i( txn = NULL ) 2491 t = `__db_o ( sdbp , NULL , 0); 2493 t = `__txn_oevt ( dbv , txn , sdbp ); 2494 ( t ); 2495 } } 2502 $__db_s_cou ( pdbp ) 2503 DB * pdbp ; 2505 DB_ENV * dbv ; 2506 DB * sdbp ; 2507 cou ; 2509 dbv = pdbp ->dbenv; 2510 cou = 0; 2512 `MUTEX_LOCK ( dbv , pdbp -> mux ); 2513 sdbp = `LIST_FIRST (& pdbp -> s_cds ); 2514 sdbp ! NULL ; 2515 sdbp = `LIST_NEXT (sdbp, s_lks )) 2516 ++ cou ; 2517 `MUTEX_UNLOCK ( dbv , pdbp -> mux ); 2519 ( cou ); 2520 } } 2532 $__db_budl ( dbp , dc , l , wc ) 2533 DB * dbp ; 2534 DBT * dc , * l , * wc ; 2536 DB_ENV * dbv ; 2537 u_t32_t n , nbys ; 2538 u_t8_t * buf ; 2539 t ; 2541 dbv = dbp ->dbenv; 2543 `DB_ASSERT ( dbv , `F_ISSET ( l , DB_DBT_PARTIAL )); 2545 `memt ( wc , 0, ( DBT )); 2547 nbys = `__db_size ( dc -> size , l ); 2548 wc -> size = nbys ; 2550 i(( t = `__os_mloc ( dbv , nbys , & buf )) != 0) 2551 ( t ); 2552 wc -> da = buf ; 2555 `memt ( buf , 2556 `F_ISSET ( dbp , DB_AM_FIXEDLEN ? (( BTREE *)dbp-> bt_ )-> _d : 2557 0, nbys ); 2560 `memy ( buf , dc -> da , 2561 l -> doff > dc -> size ? oldrec->size :artial->doff); 2564 `memy ( buf + l -> doff ,tl-> da ,tl-> size ); 2567 n = l -> doff +tl-> dn ; 2568 i( dc -> size > n ) 2569 `memy ( buf + l -> doff +tl-> size , 2570 ( u_t8_t *) dc -> da + n , oldc-> size -en); 2573 } } 2585 u_t32_t 2586 $__db_size ( nbys , da ) 2587 u_t32_t nbys ; 2588 DBT * da ; 2605 i( nbys < da -> doff + da-> dn ) 2606 ( da -> doff + da-> size ); 2608 ( nbys + da -> size - da-> dn ); 2609 } } 2611 #ifde DIAGNOSTIC 2622 $__db_check_skeyt ( sdbp , skeyp ) 2623 DB * sdbp ; 2624 DBT * skeyp ; 2626 DB_ENV * dbv ; 2627 DBT * fkey , * ϡkey , * key1 , * key2 ; 2629 dbv = sdbp ->dbenv; 2631 fkey = ( DBT *) skeyp -> da ; 2632 ϡkey = fkey + skeyp -> size ; 2633 key1 = fkey ; key1 < ϡkey ; key1++) 2634 key2 = key1 + 1; key2 < ϡkey ; key2++) 2635 `DB_ASSERT ( dbv , 2636 (( BTREE *) sdbp -> bt_ )-> `bt_com (sdbp, 2637 key1 , key2 ) != 0); 2638 } } @../db/db_cds.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/txn.h " 17 __cdsgroup_abt __P (( DB_TXN * txn )); 18 __cdsgroup_comm __P (( DB_TXN * txn , u_t32_t ags )); 19 __cdsgroup_disrd __P (( DB_TXN * txn , u_t32_t ags )); 20 u_t32_t __cdsgroup_id __P (( DB_TXN * txn )); 21 __cdsgroup_nsup __P (( DB_ENV * dbv , cڡ * mh )); 22 __cdsgroup_e __P (( DB_TXN * txn , u_t8_t * gid )); 23 __cdsgroup_t_me __P (( DB_TXN * txn , cڡ * me )); 24 __cdsgroup_t_timeout 25 __P (( DB_TXN * txn , db_timeout_t timeout , u_t32_t ags )); 32 $__cdsgroup_nsup ( dbv , mh ) 33 DB_ENV * dbv ; 34 cڡ * mh ; 36 `__db_rx ( dbv , "CDS groupdn su܈%s", mh ); 37 ( DB_OPNOTSUP ); 38 } } 40 $__cdsgroup_abt ( txn ) 41 DB_TXN * txn ; 43 ( `__cdsgroup_nsup ( txn -> mg -> dbv , "abort")); 44 } } 46 $__cdsgroup_comm ( txn , ags ) 47 DB_TXN * txn ; 48 u_t32_t ags ; 50 DB_ENV * dbv ; 51 DB_LOCKREQ eq ; 52 DB_LOCKER * lock ; 53 t , t_t ; 55 `COMPQUIET ( ags , 0); 56 dbv = txn -> mg ->dbenv; 59 i( txn -> curss != 0) { 60 `__db_rx ( dbv , "CDS group hasctive cursors"); 61 ( EINVAL ); 65 eq . = DB_LOCK_PUT_ALL ; 66 eq . obj = NULL ; 67 t = `__lock_vec ( dbv , txn -> lock , 0, & eq , 1, NULL ); 69 dbv = txn -> mg ->dbenv; 70 lock = txn ->locker; 71 `__os_ ( dbv , txn -> mg ); 72 `__os_ ( dbv , txn ); 73 i(( t_t = `__lock_id_ ( dbv , lock )!0 && t == 0) 74 t = t_t ; 75 ( t ); 76 } } 78 $__cdsgroup_disrd ( txn , ags ) 79 DB_TXN * txn ; 80 u_t32_t ags ; 82 `COMPQUIET ( ags , 0); 83 ( `__cdsgroup_nsup ( txn -> mg -> dbv , "discard")); 84 } } 86 u_t32_t $__cdsgroup_id ( txn ) 87 DB_TXN * txn ; 89 ( txn -> txnid ); 90 } } 92 $__cdsgroup_e ( txn , gid ) 93 DB_TXN * txn ; 94 u_t8_t * gid ; 96 `COMPQUIET ( gid , NULL ); 97 ( `__cdsgroup_nsup ( txn -> mg -> dbv , "prepare")); 98 } } 100 $__cdsgroup_t_me ( txn , me ) 101 DB_TXN * txn ; 102 cڡ * me ; 104 `COMPQUIET ( me , NULL ); 105 ( `__cdsgroup_nsup ( txn -> mg -> dbv , "set_name")); 106 } } 108 $__cdsgroup_t_timeout ( txn , timeout , ags ) 109 DB_TXN * txn ; 110 db_timeout_t timeout ; 111 u_t32_t ags ; 113 `COMPQUIET ( timeout , 0); 114 `COMPQUIET ( ags , 0); 115 ( `__cdsgroup_nsup ( txn -> mg -> dbv , "set_timeout")); 116 } } 125 $__cdsgroup_beg ( dbv , txp ) 126 DB_ENV * dbv ; 127 DB_TXN ** txp ; 129 DB_THREAD_INFO * ; 130 DB_TXN * txn ; 131 t ; 133 `PANIC_CHECK ( dbv ); 134 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "cdsgroup_begin"); 135 i(! `CDB_LOCKING ( dbv )) 136 ( `__db_v_cfig ( dbv , "cdsgroup_beg", DB_INIT_CDB )); 138 `ENV_ENTER ( dbv , ); 139 * txp = txn = NULL ; 140 i(( t = `__os_oc ( dbv , 1, ( DB_TXN ), & txn )) != 0) 141 r ; 146 i(( t = `__os_oc ( dbv , 1, ( DB_TXNMGR ), & txn -> mg )) != 0) 147 r ; 148 txn -> mg -> dbv = dbenv; 150 i(( t = `__lock_id ( dbv , & txn -> txnid , &txn-> lock )) != 0) 151 r ; 153 txn -> ags = TXN_CDSGROUP ; 154 txn -> abt = __cdsgroup_abt ; 155 txn -> comm = __cdsgroup_comm ; 156 txn -> disrd = __cdsgroup_disrd ; 157 txn -> id = __cdsgroup_id ; 158 txn -> e = __cdsgroup_e ; 159 txn -> t_me = __cdsgroup_t_me ; 160 txn -> t_timeout = __cdsgroup_t_timeout ; 162 * txp = txn ; 165 r : i( txn ! NULL ) { 166 i( txn -> mg ! NULL ) 167 `__os_ ( dbv , txn -> mg ); 168 `__os_ ( dbv , txn ); 171 `ENV_LEAVE ( dbv , ); 172 ( t ); 173 } } @../db/db_conv.c 41 ~"db_cfig.h " 43 ~"db_t.h " 44 ~"dbc/yo.h " 45 ~"dbc/hmac.h " 46 ~"dbc/db_ge.h " 47 ~"dbc/db_sw.h " 48 ~"dbc/b.h " 49 ~"dbc/hash.h " 50 ~"dbc/log.h " 51 ~"dbc/qam.h " 60 $__db_pg ( dbv , pg , , cook ) 61 DB_ENV * dbv ; 62 db_pgno_t pg ; 63 * ; 64 DBT * cook ; 66 DB dummydb , * dbp ; 67 DB_PGINFO * pgfo ; 68 DB_CIPHER * db_ch ; 69 DB_LSN n_ud ; 70 PAGE * g ; 71 size_t sum_n ; 72 is_hmac , t ; 73 u_t8_t * chksum ; 75 pgfo = ( DB_PGINFO *) cook -> da ; 76 g = ( PAGE *) ; 78 t = is_hmac = 0; 79 chksum = NULL ; 80 `memt (& dummydb , 0, ( DB )); 81 dbp = & dummydb ; 82 dummydb . ags = pgfo ->flags; 83 dummydb . pgsize = pgfo -> db_gesize ; 84 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 85 g -> ty ) { 86 P_HASHMETA : 87 P_BTREEMETA : 88 P_QAMMETA : 93 i( `FLD_ISSET ((( DBMETA *) )-> maags , DBMETA_CHKSUM )) 94 `F_SET ( dbp , DB_AM_CHKSUM ); 96 `F_CLR ( dbp , DB_AM_CHKSUM ); 97 i((( DBMETA *) )-> y_g != 0 || 98 `F_ISSET ( dbp , DB_AM_ENCRYPT )) 99 is_hmac = 1; 106 chksum = (( BTMETA *) )->chksum; 107 sum_n = DBMETASIZE ; 109 P_INVALID : 115 i( `IS_ZERO_LSN ( `LSN ( g )&&ag-> pgno = PGNO_INVALID ) { 116 sum_n = 0; 121 chksum = `P_CHKSUM ( dbp , g ); 122 sum_n = pgfo -> db_gesize ; 127 is_hmac = `CRYPTO_ON ( dbv ) ? 1 : 0; 136 i( `F_ISSET ( dbp , DB_AM_CHKSUM && sum_n != 0) { 137 i( `F_ISSET ( dbp , DB_AM_SWAP && is_hmac == 0) 138 `P_32_SWAP ( chksum ); 139 t = `__db_check_chksum ( 140 dbv , NULL , db_ch , chksum , , sum_n , is_hmac )) { 144 i( `DBENV_LOGGING ( dbv )) 145 () `__db_cksum_log ( 146 dbv , NULL , & n_ud , DB_FLUSH ); 147 `__db_rx ( dbv , 149 ( u_lg ) pg ); 150 ( `__db_nic ( dbv , DB_RUNRECOVERY )); 152 ( t ); 155 i(( t = `__db_dey_pg ( dbv , dbp , g )) != 0) 156 ( t ); 157 g -> ty ) { 158 P_INVALID : 159 i( pgfo -> ty = DB_QUEUE ) 160 ( `__qam_pg_out ( dbv , pg , , cook )); 162 ( `__ham_pg ( dbv , dbp , pg , , cook )); 163 P_HASH_UNSORTED : 164 P_HASH : 165 P_HASHMETA : 166 ( `__ham_pg ( dbv , dbp , pg , , cook )); 167 P_BTREEMETA : 168 P_IBTREE : 169 P_IRECNO : 170 P_LBTREE : 171 P_LDUP : 172 P_LRECNO : 173 P_OVERFLOW : 174 ( `__bam_pg ( dbv , dbp , pg , , cook )); 175 P_QAMMETA : 176 P_QAMDATA : 177 ( `__qam_pg_out ( dbv , pg , , cook )); 181 ( `__db_pgfmt ( dbv , pg )); 182 } } 191 $__db_pgout ( dbv , pg , , cook ) 192 DB_ENV * dbv ; 193 db_pgno_t pg ; 194 * ; 195 DBT * cook ; 197 DB dummydb , * dbp ; 198 DB_PGINFO * pgfo ; 199 PAGE * g ; 200 t ; 202 pgfo = ( DB_PGINFO *) cook -> da ; 203 g = ( PAGE *) ; 205 `memt (& dummydb , 0, ( DB )); 206 dbp = & dummydb ; 207 dummydb . ags = pgfo ->flags; 208 dummydb . pgsize = pgfo -> db_gesize ; 209 t = 0; 210 g -> ty ) { 211 P_INVALID : 212 i( pgfo -> ty = DB_QUEUE ) 213 t = `__qam_pg_out ( dbv , pg , , cook ); 215 t = `__ham_pgout ( dbv , dbp , pg , , cook ); 217 P_HASH : 218 P_HASH_UNSORTED : 226 P_HASHMETA : 227 t = `__ham_pgout ( dbv , dbp , pg , , cook ); 229 P_BTREEMETA : 230 P_IBTREE : 231 P_IRECNO : 232 P_LBTREE : 233 P_LDUP : 234 P_LRECNO : 235 P_OVERFLOW : 236 t = `__bam_pgout ( dbv , dbp , pg , , cook ); 238 P_QAMMETA : 239 P_QAMDATA : 240 t = `__qam_pg_out ( dbv , pg , , cook ); 243 ( `__db_pgfmt ( dbv , pg )); 245 i( t ) 246 ( t ); 248 ( `__db_y_d_checksum_pg ( dbv , dbp , g )); 249 } } 258 $__db_dey_pg ( dbv , dbp , g ) 259 DB_ENV * dbv ; 260 DB * dbp ; 261 PAGE * g ; 263 DB_CIPHER * db_ch ; 264 size_t pg_n , pg_off ; 265 u_t8_t * iv ; 266 t ; 268 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 269 t = 0; 270 iv = NULL ; 271 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 272 `DB_ASSERT ( dbv , db_ch ! NULL ); 273 `DB_ASSERT ( dbv , `F_ISSET ( dbp , DB_AM_CHKSUM )); 275 pg_off = `P_OVERHEAD ( dbp ); 276 `DB_ASSERT ( dbv , db_ch -> `adj_size ( pg_off ) == 0); 278 g -> ty ) { 279 P_HASHMETA : 280 P_BTREEMETA : 281 P_QAMMETA : 288 iv = (( BTMETA *) g )->iv; 289 pg_n = DBMETASIZE ; 291 P_INVALID : 292 i( `IS_ZERO_LSN ( `LSN ( g )) && 293 g -> pgno = PGNO_INVALID ) { 294 pg_n = 0; 299 iv = `P_IV ( dbp , g ); 300 pg_n = dbp -> pgsize ; 303 i( pg_n != 0) 304 t = db_ch -> `dey ( dbv , db_ch-> da , 305 iv , (( u_t8_t *) g + pg_off , 306 pg_n - pg_off ); 308 ( t ); 309 } } 319 $__db_y_d_checksum_pg ( dbv , dbp , g ) 320 DB_ENV * dbv ; 321 DB * dbp ; 322 PAGE * g ; 324 DB_CIPHER * db_ch ; 325 t ; 326 size_t pg_off , pg_n , sum_n ; 327 u_t8_t * chksum , * iv , * key ; 329 chksum = iv = key = NULL ; 331 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 332 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 334 `DB_ASSERT ( dbv , db_ch ! NULL ); 335 `DB_ASSERT ( dbv , `F_ISSET ( dbp , DB_AM_CHKSUM )); 337 pg_off = `P_OVERHEAD ( dbp ); 338 `DB_ASSERT ( dbv , db_ch -> `adj_size ( pg_off ) == 0); 340 key = db_ch -> mac_key ; 342 g -> ty ) { 343 P_HASHMETA : 344 P_BTREEMETA : 345 P_QAMMETA : 352 iv = (( BTMETA *) g )->iv; 353 pg_n = DBMETASIZE ; 356 iv = `P_IV ( dbp , g ); 357 pg_n = dbp -> pgsize ; 360 i(( t = db_ch -> `y ( dbv , db_ch-> da , 361 iv , (( u_t8_t *) g + pg_off , pg_n -g_off)) != 0) 362 ( t ); 364 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) { 365 g -> ty ) { 366 P_HASHMETA : 367 P_BTREEMETA : 368 P_QAMMETA : 375 chksum = (( BTMETA *) g )->chksum; 376 sum_n = DBMETASIZE ; 379 chksum = `P_CHKSUM ( dbp , g ); 380 sum_n = dbp -> pgsize ; 383 `__db_chksum ( NULL , ( u_t8_t *) g , sum_n , key , chksum ); 384 i( `F_ISSET ( dbp , DB_AM_SWAP && !F_ISSET(dbp, DB_AM_ENCRYPT )) 385 `P_32_SWAP ( chksum ); 388 } } 397 $__db_masw ( pg ) 398 PAGE * pg ; 400 u_t8_t * p ; 402 p = ( u_t8_t *) pg ; 405 `SWAP32 ( p ); 406 `SWAP32 ( p ); 407 `SWAP32 ( p ); 408 `SWAP32 ( p ); 409 `SWAP32 ( p ); 410 `SWAP32 ( p ); 411 p += 4; 412 `SWAP32 ( p ); 413 `SWAP32 ( p ); 414 `SWAP32 ( p ); 415 `SWAP32 ( p ); 416 `SWAP32 ( p ); 417 `SWAP32 ( p ); 418 } } 428 $__db_bysw ( dbv , dbp , pg , h , gesize , pg ) 429 DB_ENV * dbv ; 430 DB * dbp ; 431 db_pgno_t pg ; 432 PAGE * h ; 433 size_t gesize ; 434 pg ; 436 BINTERNAL * bi ; 437 BKEYDATA * bk ; 438 BOVERFLOW * bo ; 439 RINTERNAL * ri ; 440 db_dx_t i , * p , n , tmp ; 441 u_t8_t * p , * d ; 443 `COMPQUIET ( pg , 0); 445 p = `P_INP ( dbp , h ); 446 i( pg ) { 447 `M_32_SWAP ( h -> l . fe ); 448 `M_32_SWAP ( h -> l . offt ); 449 `M_32_SWAP ( h -> pgno ); 450 `M_32_SWAP ( h -> ev_pgno ); 451 `M_32_SWAP ( h -> xt_pgno ); 452 `M_16_SWAP ( h -> s ); 453 `M_16_SWAP ( h -> hf_offt ); 456 h -> ty ) { 457 P_HASH_UNSORTED : 458 P_HASH : 459 i = 0; i < `NUM_ENT ( h ); i++) { 460 i( pg ) 461 `M_16_SWAP ( p [ i ]); 463 `HPAGE_TYPE ( dbp , h , i )) { 464 H_KEYDATA : 466 H_DUPLICATE : 467 n = `LEN_HKEYDATA ( dbp , h , gesize , i ); 468 p = `HKEYDATA_DATA ( `P_ENTRY ( dbp , h , i )); 469 d = p + n ; <nd;) { 470 i( pg ) { 471 `P_16_SWAP ( p ); 472 `memy (& tmp , 473 p , ( db_dx_t )); 474 p +( db_dx_t ); 476 `memy (& tmp , 477 p , ( db_dx_t )); 478 `SWAP16 ( p ); 480 p + tmp ; 481 `SWAP16 ( p ); 484 H_OFFDUP : 485 p = `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , h , i )); 486 `SWAP32 ( p ); 488 H_OFFPAGE : 489 p = `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , h , i )); 490 `SWAP32 ( p ); 491 `SWAP32 ( p ); 494 ( `__db_pgfmt ( dbv , pg )); 505 i(! pg ) 506 i = 0; i < `NUM_ENT ( h ); i++) 507 `M_16_SWAP ( p [ i ]); 509 P_LBTREE : 510 P_LDUP : 511 P_LRECNO : 512 i = 0; i < `NUM_ENT ( h ); i++) { 513 i( pg ) 514 `M_16_SWAP ( p [ i ]); 520 i( h -> ty = P_LBTREE && i > 1) { 521 i( pg ) { 522 i( p [ i ] == inp[i - 2]) 525 `M_16_SWAP ( p [ i ]); 526 i( p [ i ] == inp[i - 2]) 528 `M_16_SWAP ( p [ i ]); 532 bk = `GET_BKEYDATA ( dbp , h , i ); 533 `B_TYPE ( bk -> ty )) { 534 B_KEYDATA : 535 `M_16_SWAP ( bk -> n ); 537 B_DUPLICATE : 538 B_OVERFLOW : 539 bo = ( BOVERFLOW *) bk ; 540 `M_32_SWAP ( bo -> pgno ); 541 `M_32_SWAP ( bo -> ); 544 ( `__db_pgfmt ( dbv , pg )); 547 i(! pg ) 548 `M_16_SWAP ( p [ i ]); 551 P_IBTREE : 552 i = 0; i < `NUM_ENT ( h ); i++) { 553 i( pg ) 554 `M_16_SWAP ( p [ i ]); 556 bi = `GET_BINTERNAL ( dbp , h , i ); 557 `M_16_SWAP ( bi -> n ); 558 `M_32_SWAP ( bi -> pgno ); 559 `M_32_SWAP ( bi -> ecs ); 561 `B_TYPE ( bi -> ty )) { 562 B_KEYDATA : 564 B_DUPLICATE : 565 B_OVERFLOW : 566 bo = ( BOVERFLOW *) bi -> da ; 567 `M_32_SWAP ( bo -> pgno ); 568 `M_32_SWAP ( bo -> ); 571 ( `__db_pgfmt ( dbv , pg )); 574 i(! pg ) 575 `M_16_SWAP ( p [ i ]); 578 P_IRECNO : 579 i = 0; i < `NUM_ENT ( h ); i++) { 580 i( pg ) 581 `M_16_SWAP ( p [ i ]); 583 ri = `GET_RINTERNAL ( dbp , h , i ); 584 `M_32_SWAP ( ri -> pgno ); 585 `M_32_SWAP ( ri -> ecs ); 587 i(! pg ) 588 `M_16_SWAP ( p [ i ]); 591 P_OVERFLOW : 592 P_INVALID : 596 ( `__db_pgfmt ( dbv , pg )); 599 i(! pg ) { 601 `M_32_SWAP ( h -> l . fe ); 602 `M_32_SWAP ( h -> l . offt ); 603 `M_32_SWAP ( h -> pgno ); 604 `M_32_SWAP ( h -> ev_pgno ); 605 `M_32_SWAP ( h -> xt_pgno ); 606 `M_16_SWAP ( h -> s ); 607 `M_16_SWAP ( h -> hf_offt ); 610 } } @../db/db_dispatch.c 40 ~"db_cfig.h " 42 ~"db_t.h " 43 ~"dbc/db_ge.h " 44 ~"dbc/hash.h " 45 ~"dbc/f.h " 46 ~"dbc/lock.h " 47 ~"dbc/log.h " 48 ~"dbc/mp.h " 49 ~"dbc/txn.h " 51 __db_limbo_fix __P (( DB *, DB_TXN *, 52 DB_TXNLIST *, db_pgno_t *, DBMETA *, db_limbo_e )); 53 __db_limbo_buck __P (( DB_ENV *, 54 DB_TXN *, DB_TXNLIST *, db_limbo_e )); 55 __db_limbo_move __P (( DB_ENV *, DB_TXN *, DB_TXN *, DB_TXNLIST *)); 56 __db_limbo_e __P (( DB *, DB_TXN *, DB_TXNLIST *)); 57 __db_lock_move __P (( DB_ENV *, 58 u_t8_t *, db_pgno_t , db_lockmode_t , DB_TXN *, DB_TXN *)); 59 __db_txi_pgndd __P (( DB_ENV *, DB_TXNHEAD *, 60 t32_t , u_t8_t *, *, db_pgno_t )); 61 __db_txi_fd_ __P (( DB_ENV *, DB_TXNHEAD *, 62 db_txi_ty , u_t32_t , u_t8_t *, DB_TXNLIST **, 63 , u_t32_t *)); 79 $__db_dich ( dbv , db , dbsize , db , lp , do , fo ) 80 DB_ENV * dbv ; 81 (** db ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 82 size_t dbsize ; 83 DBT * db ; 84 DB_LSN * lp ; 85 db_cs do ; 86 DB_TXNHEAD * fo ; 88 DB_LSN ev_l ; 89 u_t32_t y , us , txnid ; 90 make_ , t ; 92 `memy (& y , db -> da , (rectype)); 93 `memy (& txnid , ( u_t8_t *) db -> da + ( y ), (txnid)); 94 make_ = t = 0; 97 `DB_ASSERT ( dbv , db ! NULL ); 105 do ) { 106 DB_TXN_ABORT : 107 DB_TXN_APPLY : 108 DB_TXN_PRINT : 109 make_ = 1; 111 DB_TXN_OPENFILES : 119 `memy (& ev_l , ( u_t8_t *) db -> da + 120 ( y + ( txnid ), ( ev_l )); 121 i( txnid !0 && ev_l . fe =0 && ( t = 122 `__db_txi_add ( dbv , fo , txnid , TXN_OK , NULL )) != 0) 123 ( t ); 126 DB_TXN_POPENFILES : 127 i( y = DB___dbg_gi || 128 y = DB___txn_chd || 129 y = DB___txn_ckp ||ey = DB___txn_cye ) 130 ( db [ y ]( dbv , db , lp , do , fo )); 132 DB_TXN_BACKWARD_ROLL : 155 y ) { 161 DB___txn_g : 162 DB___txn_cye : 163 DB___txn_ckp : 164 make_ = 1; 170 DB___txn_chd : 171 DB___db_no : 172 DB___f_fe_move : 173 DB___dbg_gi : 174 make_ = 1; 178 i( txnid == 0) 181 t = `__db_txi_fd ( dbv , fo , txnid , & us ); 184 i( t = DB_NOTFOUND ) 185 ( `__db_txi_add ( dbv , 186 fo , txnid , TXN_IGNORE , lp )); 187 i( t != 0) 188 ( t ); 196 i( us = TXN_IGNORE && y ! DB___txn_chd ) { 197 make_ = 0; 200 i( us = TXN_COMMIT ) 204 make_ = 1; 205 i( us = TXN_OK && 206 ( t = `__db_txi_upde ( dbv , 207 fo , txnid , y = DB___txn_xa_g ? 208 TXN_PREPARE : TXN_ABORT , NULL , & us , 0)) != 0) 209 ( t ); 212 DB_TXN_FORWARD_ROLL : 220 y ) { 221 DB___txn_cye : 222 DB___txn_ckp : 223 DB___db_no : 224 DB___dbg_gi : 225 make_ = 1; 229 i( txnid == 0) 230 us = 0; 232 t = `__db_txi_fd ( dbv , 233 fo , txnid , & us ); 235 i( t = DB_NOTFOUND ) 238 i( t != 0) 239 ( t ); 240 i( us = TXN_COMMIT ) { 241 make_ = 1; 246 #ide HAVE_FTRUNCATE 247 i( us ! TXN_IGNORE && 248 ( y = DB___ham_magroup || 249 y = DB___ham_grouoc || 250 y = DB___db_pg_loc )) { 258 make_ = 1; 259 do = DB_TXN_BACKWARD_ALLOC ; 264 DB_TXN_BACKWARD_ALLOC : 266 ( `__db_unknown_ag ( 267 dbv , "__db_dich", ( u_t32_t ) do )); 270 i( make_ ) { 279 i( y & DB_debug_FLAG ) { 280 i( do = DB_TXN_PRINT ) 281 y &~ DB_debug_FLAG ; 283 `memy ( lp , 284 ( u_t8_t *) db -> da + 285 ( y ) + 286 ( txnid ), (* lp )); 290 i( y > DB_ur_BEGIN && dbv -> p_dich ! NULL ) 291 ( dbv -> `p_dich (dbv, db , lp , do )); 298 i( y > dbsize || db [y] = NULL ) { 299 `__db_rx ( dbv , 301 ( u_lg ) y ); 302 ( EINVAL ); 304 ( db [ y ]( dbv , db , lp , do , fo )); 309 } } 319 $__db_add_covy ( dbv , db , dbsize , func , ndx ) 320 DB_ENV * dbv ; 321 (*** db `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 322 size_t * dbsize ; 323 (* func `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 324 u_t32_t ndx ; 326 size_t i , nsize ; 327 t ; 330 i( ndx >* dbsize ) { 331 nsize = ndx + 40; 332 i(( t = 333 `__os_loc ( dbv , nsize * ((* db )[0]), dtab)) != 0) 334 ( t ); 335 i = * dbsize ; i < nsize ; ++i) 336 (* db )[ i ] = NULL ; 337 * dbsize = nsize ; 340 (* db )[ ndx ] = func ; 342 } } 352 $__db_txi_ ( dbv , low_txn , hi_txn , unc_l , ) 353 DB_ENV * dbv ; 354 u_t32_t low_txn , hi_txn ; 355 DB_LSN * unc_l ; 356 DB_TXNHEAD ** ; 358 DB_TXNHEAD * hdp ; 359 u_t32_t size , tmp ; 360 t ; 370 i( low_txn == 0) 371 size = 1; 373 i( hi_txn < low_txn ) { 374 tmp = hi_txn ; 375 hi_txn = low_txn ; 376 low_txn = tmp ; 378 tmp = hi_txn - low_txn ; 380 i( tmp > ( TXN_MAXIMUM - TXN_MINIMUM ) / 2) 381 tmp = ( low_txn - TXN_MINIMUM + ( TXN_MAXIMUM - hi_txn ); 382 size = tmp / 5; 383 i( size < 100) 384 size = 100; 386 i(( t = `__os_mloc ( dbv , 387 ( DB_TXNHEAD + size * ( hdp -> hd ), &headp)) != 0) 388 ( t ); 390 `memt ( hdp , 0, ( DB_TXNHEAD + size * (hdp-> hd )); 391 hdp -> maxid = hi_txn ; 392 hdp -> gi = 0; 393 hdp -> ns = size ; 394 hdp -> g_loc = 8; 395 i(( t = `__os_mloc ( dbv , hdp -> g_loc * 396 ( hdp -> g_y [0]), &headp->gen_array)) != 0) { 397 `__os_ ( dbv , hdp ); 398 ( t ); 400 hdp -> g_y [0]. gi = 0; 401 hdp -> g_y [0]. txn_m = TXN_MINIMUM ; 402 hdp -> g_y [0]. txn_max = TXN_MAXIMUM ; 403 i( unc_l ! NULL ) { 404 hdp -> unc_l = *trunc_lsn; 405 hdp -> maxl = * unc_l ; 407 `ZERO_LSN ( hdp -> unc_l ); 408 `ZERO_LSN ( hdp -> maxl ); 410 `ZERO_LSN ( hdp -> ck ); 412 * = hdp ; 414 } } 416 #FIND_GENERATION ( hp , txnid , g ) do { \ 417 u_t32_t __i ; \ 418 __i = 0; __<( hp )-> gi ; __i++) \ 420 i(( hp )-> g_y [ __i ]. txn_m < \ 421 ( hp )-> g_y [ __i ]. txn_max ? \ 422 (( txnid >( hp )-> g_y [ __i ]. txn_m && \ 423 ( txnid <( hp )-> g_y [ __i ]. txn_max ) : \ 424 (( txnid >( hp )-> g_y [ __i ]. txn_m || \ 425 ( txnid <( hp )-> g_y [ __i ]. txn_max )) \ 427 `DB_ASSERT ( dbv , __i <( hp )-> gi ); \ 428 g = ( hp )-> g_y [ __i ]. gi ; \ 429 } 0) ) 439 $__db_txi_add ( dbv , hp , txnid , us , l ) 440 DB_ENV * dbv ; 441 DB_TXNHEAD * hp ; 442 u_t32_t txnid , us ; 443 DB_LSN * l ; 445 DB_TXNLIST * p ; 446 t ; 448 i(( t = `__os_mloc ( dbv , ( DB_TXNLIST ), & p )) != 0) 449 ( t ); 451 `LIST_INSERT_HEAD (& hp -> hd [ `DB_TXNLIST_MASK (hp, txnid )], p , lks ); 454 `FIND_GENERATION ( hp , txnid , p -> u . t . gi ); 455 p -> ty = TXNLIST_TXNID ; 456 p -> u . t . txnid =xnid; 457 p -> u . t . us = status; 458 i( txnid > hp -> maxid ) 459 hp -> maxid = txnid ; 460 i( l ! NULL && `IS_ZERO_LSN ( hp -> maxl && us = TXN_COMMIT ) 461 hp -> maxl = * l ; 463 `DB_ASSERT ( dbv , l = NULL || 464 us ! TXN_COMMIT || `LOG_COMPARE (& hp -> maxl , l ) >= 0); 467 } } 476 $__db_txi_move ( dbv , hp , txnid ) 477 DB_ENV * dbv ; 478 DB_TXNHEAD * hp ; 479 u_t32_t txnid ; 481 DB_TXNLIST * y ; 482 u_t32_t us ; 484 ( `__db_txi_fd_ ( dbv , 485 hp , TXNLIST_TXNID , txnid , NULL , & y , 1, & us )); 486 } } 499 $__db_txi_ckp ( dbv , hp , ckp_l ) 500 DB_ENV * dbv ; 501 DB_TXNHEAD * hp ; 502 DB_LSN * ckp_l ; 505 `COMPQUIET ( dbv , NULL ); 507 i( `IS_ZERO_LSN ( hp -> ck && !IS_ZERO_LSN(hp-> maxl ) && 508 `LOG_COMPARE (& hp -> maxl , ckp_l ) >= 0) 509 hp -> ck = * ckp_l ; 510 } } 519 $__db_txi_d ( dbv , hp ) 520 DB_ENV * dbv ; 521 DB_TXNHEAD * hp ; 523 u_t32_t i ; 524 DB_TXNLIST * p ; 526 i( hp = NULL ) 529 i = 0; i < hp -> ns ; i++) 530 hp ! NULL && ( p = `LIST_FIRST (&hp-> hd [ i ])) != NULL) { 531 p -> ty ) { 532 TXNLIST_LSN : 533 `__os_ ( dbv , p -> u . l . l_ack ); 535 TXNLIST_DELETE : 536 TXNLIST_PGNO : 537 TXNLIST_TXNID : 545 `LIST_REMOVE ( p , lks ); 546 `__os_ ( dbv , p ); 549 i( hp -> g_y ! NULL ) 550 `__os_ ( dbv , hp -> g_y ); 551 `__os_ ( dbv , hp ); 552 } } 566 $__db_txi_fd ( dbv , hp , txnid , u ) 567 DB_ENV * dbv ; 568 DB_TXNHEAD * hp ; 569 u_t32_t txnid , * u ; 571 DB_TXNLIST * y ; 573 i( txnid == 0) 574 ( DB_NOTFOUND ); 576 ( `__db_txi_fd_ ( dbv , hp , 577 TXNLIST_TXNID , txnid , NULL , & y , 0, u )); 578 } } 589 $__db_txi_upde ( dbv , hp , txnid , us , l , t_us , add_ok ) 590 DB_ENV * dbv ; 591 DB_TXNHEAD * hp ; 592 u_t32_t txnid , us ; 593 DB_LSN * l ; 594 u_t32_t * t_us ; 595 add_ok ; 597 DB_TXNLIST * p ; 598 t ; 600 i( txnid == 0) 601 ( DB_NOTFOUND ); 603 t = `__db_txi_fd_ ( dbv , 604 hp , TXNLIST_TXNID , txnid , NULL , & p , 0, t_us ); 606 i( t = DB_NOTFOUND && add_ok ) { 607 * t_us = us ; 608 ( `__db_txi_add ( dbv , hp , txnid , us , l )); 610 i( t != 0) 611 ( t ); 613 i(* t_us = TXN_IGNORE ) 616 p -> u . t . us = status; 618 i( l ! NULL && `IS_ZERO_LSN ( hp -> maxl && us = TXN_COMMIT ) 619 hp -> maxl = * l ; 621 ( t ); 622 } } 632 $__db_txi_fd_ ( dbv , 633 hp , ty , txnid , uid , txip , de , u ) 634 DB_ENV * dbv ; 635 DB_TXNHEAD * hp ; 636 db_txi_ty ty ; 637 u_t32_t txnid ; 638 u_t8_t uid [ DB_FILE_ID_LEN ]; 639 DB_TXNLIST ** txip ; 640 de ; 641 u_t32_t * u ; 643 __db_hdlk * hd ; 644 DB_TXNLIST * p ; 645 u_t32_t gi , hash ; 646 t ; 648 t = 0; 650 i( hp = NULL ) 651 ( DB_NOTFOUND ); 653 ty ) { 654 TXNLIST_TXNID : 655 hash = txnid ; 656 `FIND_GENERATION ( hp , txnid , gi ); 658 TXNLIST_PGNO : 659 `memy (& hash , uid , (hash)); 660 gi = 0; 662 TXNLIST_DELETE : 663 TXNLIST_LSN : 665 ( `__db_nic ( dbv , EINVAL )); 668 hd = & hp ->hd[ `DB_TXNLIST_MASK (hp, hash )]; 669 `LIST_FOREACH ( p , hd , lks ) { 670 i( p -> ty !=ype) 672 ty ) { 673 TXNLIST_TXNID : 674 i( p -> u . t . txnid !=xnid || 675 gi ! p -> u . t .generation) 677 * u = p -> u . t . us ; 680 TXNLIST_PGNO : 681 i( `memcmp ( uid , p -> u .p.uid, DB_FILE_ID_LEN ) != 0) 683 * u = TXN_OK ; 685 TXNLIST_DELETE : 686 TXNLIST_LSN : 688 ( `__db_nic ( dbv , EINVAL )); 690 i( de == 1) { 691 `LIST_REMOVE ( p , lks ); 692 `__os_ ( dbv , p ); 693 * txip = NULL ; 694 } i( p ! `LIST_FIRST ( hd )) { 696 `LIST_REMOVE ( p , lks ); 697 `LIST_INSERT_HEAD ( hd , p , lks ); 698 * txip = p ; 700 * txip = p ; 701 ( t ); 704 ( DB_NOTFOUND ); 705 } } 715 $__db_txi_g ( dbv , hp , , m , max ) 716 DB_ENV * dbv ; 717 DB_TXNHEAD * hp ; 718 ; 719 u_t32_t m , max ; 721 t ; 735 i( < 0) { 736 -- hp -> gi ; 737 `memmove ( hp -> g_y , &hp->gen_array[1], 738 ( hp -> gi + 1* (hp-> g_y [0])); 740 ++ hp -> gi ; 741 i( hp -> gi >hp-> g_loc ) { 742 hp -> g_loc *= 2; 743 i(( t = `__os_loc ( dbv , hp -> g_loc * 744 ( hp -> g_y [0]), &hp->gen_array)) != 0) 745 ( t ); 747 `memmove (& hp -> g_y [1], &hp->gen_array[0], 748 hp -> gi * (hp-> g_y [0])); 749 hp -> g_y [0]. gi = hp->generation; 750 hp -> g_y [0]. txn_m = m ; 751 hp -> g_y [0]. txn_max = max ; 754 } } 763 $__db_txi_ladd ( dbv , hp , lp ) 764 DB_ENV * dbv ; 765 DB_TXNHEAD * hp ; 766 DB_LSN * lp ; 768 DB_TXNLIST * p ; 769 t ; 771 i( `IS_ZERO_LSN (* lp )) 774 `LIST_FOREACH ( p , & hp -> hd [0], lks ) 775 i( p -> ty = TXNLIST_LSN ) 778 i( p = NULL ) { 779 i(( t = `__db_txi_l ( dbv , hp , lp )) != 0) 780 ( t ); 781 ( DB_SURPRISE_KID ); 784 i( p -> u . l . ack_dx =p->u.l. ack_size ) { 785 p -> u . l . ack_size <<= 1; 786 i(( t = `__os_loc ( dbv , ( DB_LSN ) * 787 p -> u . l . ack_size , &p->u.l. l_ack )) != 0) { 788 `__db_txi_d ( dbv , hp ); 789 ( t ); 792 p -> u . l . l_ack [p->u.l. ack_dx ++] = * lp ; 795 } } 805 $__db_txi_lg ( dbv , hp , lp , ags ) 806 DB_ENV * dbv ; 807 DB_TXNHEAD * hp ; 808 DB_LSN * lp ; 809 u_t32_t ags ; 811 DB_TXNLIST * p ; 813 `COMPQUIET ( dbv , NULL ); 814 `COMPQUIET ( ags , 0); 816 `LIST_FOREACH ( p , & hp -> hd [0], lks ) 817 i( p -> ty = TXNLIST_LSN ) 820 i( p = NULL ||-> u . l . ack_dx == 0) { 821 `ZERO_LSN (* lp ); 825 * lp = p -> u . l . l_ack [--p->u.l. ack_dx ]; 828 } } 837 $__db_txi_l ( dbv , hp , lp ) 838 DB_ENV * dbv ; 839 DB_TXNHEAD * hp ; 840 DB_LSN * lp ; 842 DB_TXNLIST * p ; 843 t ; 845 p = NULL ; 847 i(( t = `__os_mloc ( dbv , ( DB_TXNLIST ), & p )) != 0) 848 r ; 849 `LIST_INSERT_HEAD (& hp -> hd [0], p , lks ); 851 p -> ty = TXNLIST_LSN ; 852 i(( t = `__os_mloc ( dbv , 853 ( DB_LSN * DB_LSN_STACK_SIZE , & p -> u . l . l_ack )) != 0) 854 r ; 855 p -> u . l . ack_dx = 1; 856 p -> u . l . ack_size = DB_LSN_STACK_SIZE ; 857 p -> u . l . l_ack [0] = * lp ; 861 r : `__db_txi_d ( dbv , hp ); 862 ( t ); 863 } } 873 $__db_add_limbo ( dbv , hp , feid , pgno , cou ) 874 DB_ENV * dbv ; 875 DB_TXNHEAD * hp ; 876 t32_t feid ; 877 db_pgno_t pgno ; 878 u_t32_t cou ; 880 DB_LOG * db ; 881 FNAME * p ; 882 t ; 884 db = dbv -> lg_hd ; 885 i(( t = `__dbg_id_to_ame ( db , feid , 0, & p )) != 0) 886 ( t ); 889 i(( t = 890 `__db_txi_pgndd ( dbv , hp , feid , p -> ufid , 891 `R_ADDR (& db -> gfo , p -> me_off ), pgno )) != 0) 892 ( t ); 893 pgno ++; 894 } -- cou != 0); 897 } } 935 $__db_do_the_limbo ( dbv , xn , txn , hp , e ) 936 DB_ENV * dbv ; 937 DB_TXN * xn , * txn ; 938 DB_TXNHEAD * hp ; 939 db_limbo_e e ; 941 DB_TXNLIST * p ; 942 u_t32_t h ; 943 t ; 945 t = 0; 951 h = 0; h < hp -> ns ; h++) { 952 i(( p = `LIST_FIRST (& hp -> hd [ h ])= NULL ) 954 i( xn ! NULL ) { 955 i(( t = 956 `__db_limbo_move ( dbv , xn , txn , p )) != 0) 957 r ; 958 } i(( t = 959 `__db_limbo_buck ( dbv , txn , p , e )) != 0) 960 r ; 963 r : i( t != 0) { 964 `__db_rx ( dbv , "Fatalrror inbort ofnllocation"); 965 t = `__db_nic ( dbv ,et); 968 ( t ); 969 } } 978 $__db_lock_move ( dbv , feid , pgno , mode , xn , txn ) 979 DB_ENV * dbv ; 980 u_t8_t * feid ; 981 db_pgno_t pgno ; 982 db_lockmode_t mode ; 983 DB_TXN * xn , * txn ; 985 DBT lock_dbt ; 986 DB_LOCK lock ; 987 DB_LOCK_ILOCK lock_obj ; 988 DB_LOCKREQ q ; 989 t ; 991 lock_obj . pgno =gno; 992 `memy ( lock_obj . feid , feid, DB_FILE_ID_LEN ); 993 lock_obj . ty = DB_PAGE_LOCK ; 995 `memt (& lock_dbt , 0, (lock_dbt)); 996 lock_dbt . da = & lock_obj ; 997 lock_dbt . size = ( lock_obj ); 999 i(( t = `__lock_g ( dbv , 1000 txn -> lock , 0, & lock_dbt , mode , & lock )) == 0) { 1001 `memt (& q , 0, (req)); 1002 q . lock =ock; 1003 q . = DB_LOCK_TRADE ; 1004 t = `__lock_vec ( dbv , xn -> lock , 0, & q , 1, NULL ); 1006 ( t ); 1007 } } 1014 $__db_limbo_move ( dbv , xn , txn , p ) 1015 DB_ENV * dbv ; 1016 DB_TXN * xn , * txn ; 1017 DB_TXNLIST * p ; 1019 t ; 1021 ; p ! NULL ; = `LIST_NEXT , lks )) { 1022 i( p -> ty ! TXNLIST_PGNO ||-> u . p . locked == 1) 1024 i(( t = `__db_lock_move ( dbv , p -> u . p . uid , 1025 PGNO_BASE_MD , DB_LOCK_WRITE , xn , txn )) != 0) 1026 ( t ); 1027 p -> u . p . locked = 1; 1031 } } 1039 #T_RESTORED ( txn (xn! NULL && `F_ISSET xn, TXN_RESTORED )) ) 1041 $__db_limbo_buck ( dbv , txn , p , e ) 1042 DB_ENV * dbv ; 1043 DB_TXN * txn ; 1044 DB_TXNLIST * p ; 1045 db_limbo_e e ; 1047 DB * dbp ; 1048 DB_MPOOLFILE * mpf ; 1049 DBMETA * ma ; 1050 DB_TXN * xn , * t ; 1051 FNAME * ame ; 1052 db_pgno_t ϡ_pgno , pgno ; 1053 dbp_d , _y , t , t_t ; 1055 xn = NULL ; 1056 _y = 0; 1057 ma = NULL ; 1058 mpf = NULL ; 1059 t = 0; 1060 ; p ! NULL ; = `LIST_NEXT , lks )) { 1061 i( p -> ty ! TXNLIST_PGNO ) 1063 y : dbp_d = 0; 1069 i( e = LIMBO_PREPARE ) 1070 xn = txn ; 1071 i(! _y && e ! LIMBO_RECOVER && 1072 e ! LIMBO_TIMESTAMP && ! `T_RESTORED ( txn ) && 1073 ( t = `__txn_comn_beg ( dbv , & xn )) != 0) 1074 ( t ); 1080 t = xn = NULL ? txn : ctxn; 1083 t = `__dbg_id_to_db ( dbv , t , & dbp , p -> u . p . feid , 0); 1089 i( t = DB_DELETED || = ENOENT || 1090 (( t == 0 && 1091 `memcmp ( p -> u . p . uid , dbp -> feid , DB_FILE_ID_LEN ) != 0))) { 1092 i(( t = `__dbg_fid_to_ame ( 1093 dbv -> lg_hd , p -> u . p . uid , 0, & ame )) == 0) 1094 t = `__dbg_id_to_db ( 1095 dbv , t , & dbp , ame -> id , 0); 1101 i( t = DB_DELETED || 1102 ( t =0 && `F_ISSET ( dbp , DB_AM_DISCARD ))) 1103 xt ; 1105 i( t != 0) { 1106 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 1107 r ; 1113 `F_SET ( dbp , DB_AM_COMPENSATE ); 1114 dbp_d = 1; 1117 t = `__db_ݒ ( dbp , t , p -> u . p . ame , NULL , 1118 DB_UNKNOWN , DB_ODDFILESIZE , `__db_omode ( OWNER_RW ), 1119 PGNO_BASE_MD ); 1120 i( t = ENOENT ) 1121 xt ; 1128 i( `memcmp ( p -> u . p . uid , dbp -> feid , DB_FILE_ID_LEN ) != 0) 1129 xt ; 1131 mpf = dbp ->mpf; 1132 ϡ_pgno = PGNO_INVALID ; 1134 i( ma = NULL && 1135 ( xn = NULL || e = LIMBO_COMPENSATE )) { 1136 pgno = PGNO_BASE_MD ; 1137 i(( t = `__memp_fg ( mpf , & pgno , txn , 1138 ( e ! LIMBO_PREPARE ? DB_MPOOL_DIRTY : 0, 1139 & ma )) != 0) 1140 r ; 1141 ϡ_pgno = ma -> ; 1144 i( e = LIMBO_PREPARE ) { 1145 i(( t = `__db_limbo_e ( dbp , xn , p )) != 0) 1146 r ; 1148 t = `__db_limbo_fix ( dbp , 1149 xn , p , & ϡ_pgno , ma , e ); 1157 i( t != 0) { 1158 i( t = DB_RUNRECOVERY || xn = NULL ) 1159 r ; 1160 _y = 1; 1161 i(( t = `__txn_abt ( xn )) != 0) 1162 r ; 1163 xn = NULL ; 1164 y ; 1167 i( e = LIMBO_PREPARE ) 1168 xn = NULL ; 1170 i( xn ! NULL ) { 1176 i( e = LIMBO_COMPENSATE ) 1177 `F_CLR ( dbv -> lg_hd , DBLOG_RECOVER ); 1178 t = `__txn_comm ( xn , DB_TXN_NOSYNC ); 1179 xn = NULL ; 1180 i( e = LIMBO_COMPENSATE ) 1181 `F_SET ( dbv -> lg_hd , DBLOG_RECOVER ); 1182 i( t != 0) 1183 y ; 1192 i( ϡ_pgno = ma -> ) { 1194 i(( t = 1195 `__memp_ut ( mpf , ma , DB_PRIORITY_UNCHANGED )) != 0) 1196 r ; 1197 ma = NULL ; 1206 i(! `IS_RECOVERING ( dbv && ! `T_RESTORED ( txn )) 1207 `__db_rx ( dbv , "Flushing freeisto disk"); 1208 i(( t = 1209 `__memp_ut ( mpf , ma , DB_PRIORITY_UNCHANGED )) != 0) 1210 r ; 1211 ma = NULL ; 1221 i(( t = `__db_sync ( dbp )) == 0) { 1222 pgno = PGNO_BASE_MD ; 1223 i(( t = `__memp_fg ( mpf , & pgno , txn , 1224 DB_MPOOL_DIRTY , & ma )) != 0) 1225 r ; 1226 ma -> = ϡ_pgno ; 1227 i(( t = `__memp_ut ( mpf , 1228 ma , DB_PRIORITY_UNCHANGED )) != 0) 1229 r ; 1230 ma = NULL ; 1232 `__db_r ( dbv , t , "%s", dbp -> ame ); 1233 `__db_rx ( dbv , "%s: %%s", dbp -> ame , 1236 t = 0; 1240 xt : 1245 i( xn ! NULL && 1246 ( t_t = `__txn_abt ( xn )!0 && t == 0) 1247 t = t_t ; 1249 i( dbp_d && 1250 ( t_t = `__db_o ( dbp , txn , DB_NOSYNC )!0 && t == 0) 1251 t = t_t ; 1252 dbp = NULL ; 1253 i( e ! LIMBO_PREPARE && s ! LIMBO_TIMESTAMP ) { 1254 `__os_ ( dbv , p -> u . p . ame ); 1255 `__os_ ( dbv , p -> u . p . pgno_y ); 1257 i( t = ENOENT ) 1258 t = 0; 1259 i( t != 0) 1260 r ; 1263 r : i( ma ! NULL ) 1264 () `__memp_ut ( mpf , ma , DB_PRIORITY_UNCHANGED ); 1265 ( t ); 1266 } } 1274 $__db_limbo_fix ( dbp , xn , p , ϡp , ma , e ) 1275 DB * dbp ; 1276 DB_TXN * xn ; 1277 DB_TXNLIST * p ; 1278 db_pgno_t * ϡp ; 1279 DBMETA * ma ; 1280 db_limbo_e e ; 1282 DBC * dbc ; 1283 DBT ldbt ; 1284 DB_MPOOLFILE * mpf ; 1285 PAGE * p , * g ; 1286 db_pgno_t xt , pgno ; 1287 u_t32_t i ; 1288 t , t_t ; 1295 dbc = NULL ; 1296 mpf = dbp ->mpf; 1297 g = NULL ; 1298 t = 0; 1300 i = 0; i < p -> u . p . rs ; i++) { 1301 pgno = p -> u . p . pgno_y [ i ]; 1303 i( pgno = PGNO_INVALID ) 1306 i(( t = `__memp_fg ( mpf , & pgno , xn , 1307 DB_MPOOL_CREATE | DB_MPOOL_EDIT , & g )) != 0) { 1308 i( t ! ENOSPC ) 1309 r ; 1313 i( e = LIMBO_COMPENSATE || `IS_ZERO_LSN ( `LSN ( g ))) { 1314 i( xn = NULL ) { 1320 xt = * ϡp ;ext != 0; ) { 1321 i( xt = pgno ) 1323 i(( t = `__memp_fg ( mpf , 1324 & xt , xn , 0, & p )) != 0) 1325 r ; 1326 xt = `NEXT_PGNO ( p ); 1327 i(( t = `__memp_ut ( mpf , 1328 p , DB_PRIORITY_UNCHANGED )) != 0) 1329 r ; 1332 i( xt ! pgno ) { 1333 `P_INIT ( g , dbp -> pgsize , pgno , 1334 PGNO_INVALID , * ϡp , 0, P_INVALID ); 1336 `INIT_LSN ( `LSN ( g )); 1337 * ϡp = pgno ; 1339 } i( e = LIMBO_COMPENSATE ) { 1345 `ZERO_LSN ( g -> l ); 1346 `memt (& ldbt , 0, (ldbt)); 1347 ldbt . da = g ; 1348 ldbt . size = `P_OVERHEAD ( dbp ); 1349 i(( t = `__db_pg_w_log ( dbp , xn , 1350 & `LSN ( ma ), 0, g -> pgno , 1351 & `LSN ( ma ), PGNO_BASE_MD , 1352 & ldbt , g -> xt_pgno )) != 0) 1353 r ; 1355 i( dbc = NULL && ( t = 1356 `__db_curs ( dbp , xn , & dbc , 0)) != 0) 1357 r ; 1364 `F_SET ( dbc , DBC_DONTLOCK ); 1372 `F_CLR ( dbc , DBC_RECOVER ); 1374 t = `__db_ ( dbc , g ); 1375 g = NULL ; 1386 i( t != 0) { 1388 () `__dbc_o ( dbc ); 1389 dbc = NULL ; 1390 r ; 1395 p -> u . p . pgno_y [ i ] = PGNO_INVALID ; 1397 i( g ! NULL ) { 1398 t = `__memp_ut ( mpf , g , DB_PRIORITY_UNCHANGED ); 1399 g = NULL ; 1401 i( t != 0) 1402 r ; 1405 r : i( g ! NULL && 1406 ( t_t = `__memp_ut ( mpf , g , DB_PRIORITY_UNCHANGED )) != 0 && 1407 t == 0) 1408 t = t_t ; 1409 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 1410 t = t_t ; 1411 ( t ); 1412 } } 1415 $__db_limbo_e ( dbp , txn , p ) 1416 DB * dbp ; 1417 DB_TXN * txn ; 1418 DB_TXNLIST * p ; 1420 DB_LSN l ; 1421 DB_MPOOLFILE * mpf ; 1422 PAGE * g ; 1423 db_pgno_t pgno ; 1424 u_t32_t i ; 1425 t , t_t ; 1431 g = NULL ; 1432 t = 0; 1433 mpf = dbp ->mpf; 1435 i = 0; i < p -> u . p . rs ; i++) { 1436 pgno = p -> u . p . pgno_y [ i ]; 1438 i(( t = `__memp_fg ( mpf , 1439 & pgno , txn , DB_MPOOL_CREATE , & g )) != 0) { 1440 i( t ! ENOSPC ) 1441 ( t ); 1445 i( `IS_ZERO_LSN ( `LSN ( g ))) 1446 t = `__db_pg_e_log ( dbp , txn , & l , 0, pgno ); 1448 i(( t_t = `__memp_ut ( mpf , 1449 g , DB_PRIORITY_UNCHANGED )!0 && t == 0) 1450 t = t_t ; 1452 i( t != 0) 1453 ( t ); 1457 } } 1459 #DB_TXNLIST_MAX_PGNO 8 ) 1467 $__db_txi_pgndd ( dbv , hp , feid , uid , ame , pgno ) 1468 DB_ENV * dbv ; 1469 DB_TXNHEAD * hp ; 1470 t32_t feid ; 1471 u_t8_t uid [ DB_FILE_ID_LEN ]; 1472 * ame ; 1473 db_pgno_t pgno ; 1475 DB_TXNLIST * p ; 1476 size_t n ; 1477 u_t32_t hash , us ; 1478 t ; 1480 p = NULL ; 1482 i(( t = `__db_txi_fd_ ( dbv , hp , 1483 TXNLIST_PGNO , 0, uid , & p , 0, & us )!0 && t ! DB_NOTFOUND ) 1484 r ; 1486 i( t = DB_NOTFOUND || us ! TXN_OK ) { 1487 i(( t = 1488 `__os_mloc ( dbv , ( DB_TXNLIST ), & p )) != 0) 1489 r ; 1490 `memy (& hash , uid , (hash)); 1491 `LIST_INSERT_HEAD ( 1492 & hp -> hd [ `DB_TXNLIST_MASK (hp, hash )], p , lks ); 1493 `memy ( p -> u . p . uid , uid, DB_FILE_ID_LEN ); 1495 n = ` ( ame ) + 1; 1496 i(( t = `__os_mloc ( dbv , n , & p -> u . p . ame )) != 0) 1497 r ; 1498 `memy ( p -> u . p . ame , fme, n ); 1500 p -> u . p . maxy = 0; 1501 p -> u . p . locked = 0; 1502 p -> ty = TXNLIST_PGNO ; 1503 i(( t = `__os_mloc ( dbv , 1504 8 * ( db_pgno_t ), & p -> u . p . pgno_y )) != 0) 1505 r ; 1506 p -> u . p . maxy = DB_TXNLIST_MAX_PGNO ; 1507 p -> u . p . rs = 0; 1508 } i( p -> u . p . rs =p->u.p. maxy ) { 1509 p -> u . p . maxy <<= 1; 1510 i(( t = `__os_loc ( dbv , p -> u . p . maxy * 1511 ( db_pgno_t ), & p -> u . p . pgno_y )) != 0) 1512 r ; 1515 p -> u . p . pgno_y [p->u.p. rs ++] = pgno ; 1517 p -> u . p . feid = fileid; 1521 r : ( t ); 1522 } } 1524 #ifde DEBUG 1532 $__db_txi_t ( hp ) 1533 DB_TXNHEAD * hp ; 1535 DB_TXNLIST * p ; 1536 u_t32_t i ; 1537 * txy ; 1539 `tf ("Maxid: %lu Generation: %lu\n", 1540 ( u_lg ) hp -> maxid , (u_lg)hp-> gi ); 1541 i = 0; i < hp -> ns ; i++) 1542 `LIST_FOREACH ( p , & hp -> hd [ i ], lks ) { 1543 i( p -> ty ! TXNLIST_TXNID ) { 1544 `tf ("Uecognizedy: %d\n", p -> ty ); 1547 p -> u . t . us ) { 1548 TXN_OK : 1549 txy = "OK"; 1551 TXN_COMMIT : 1552 txy = "commit"; 1554 TXN_PREPARE : 1555 txy = "prepare"; 1557 TXN_ABORT : 1558 txy = "abort"; 1560 TXN_IGNORE : 1561 txy = "ignore"; 1563 TXN_EXPECTED : 1564 txy = "expected"; 1566 TXN_UNEXPECTED : 1567 txy = "unexpected"; 1570 txy = "UNKNOWN"; 1573 `tf ("TXNID: %lx(%lu): %s\n", 1574 ( u_lg ) p -> u . t . txnid , 1575 ( u_lg ) p -> u . t . gi , txy ); 1577 } } @../db/db_dup.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/mp.h " 14 ~"dbc/db_am.h " 23 $__db_dem ( dbc , g , dx , nbys ) 24 DBC * dbc ; 25 PAGE * g ; 26 u_t32_t dx , nbys ; 28 DB * dbp ; 29 DBT ldbt ; 30 db_dx_t t , * p , offt ; 31 t ; 32 u_t8_t * om ; 34 dbp = dbc ->dbp; 35 `DB_ASSERT ( dbp -> dbv , `IS_DIRTY ( g )); 36 `DB_ASSERT ( dbp -> dbv , dx < `NUM_ENT ( g )); 38 i( `DBC_LOGGING ( dbc )) { 39 ldbt . da = `P_ENTRY ( dbp , g , dx ); 40 ldbt . size = nbys ; 41 i(( t = `__db_addm_log ( dbp , dbc -> txn , 42 & `LSN ( g ), 0, DB_REM_DUP , `PGNO (pagep), 43 ( u_t32_t ) dx , nbys , & ldbt , NULL , & `LSN ( g ))) != 0) 44 ( t ); 46 `LSN_NOT_LOGGED ( `LSN ( g )); 52 i( `NUM_ENT ( g ) == 1) { 53 `NUM_ENT ( g ) = 0; 54 `HOFFSET ( g dbp -> pgsize ; 58 p = `P_INP ( dbp , g ); 63 om = ( u_t8_t *) g + `HOFFSET (pagep); 64 `DB_ASSERT ( dbp -> dbv , p [ dx ] > `HOFFSET ( g )); 65 `memmove ( om + nbys , from, p [ dx ] - `HOFFSET ( g )); 66 `HOFFSET ( g + nbys ; 69 offt = p [ dx ]; 70 t = 0; c < `NUM_ENT ( g ); ++cnt) 71 i( p [ t ] < offt ) 72 p [ t ] + nbys ; 75 -- `NUM_ENT ( g ); 76 i( dx ! `NUM_ENT ( g )) 77 `memmove (& p [ dx ], &inp[indx + 1], 78 ( db_dx_t * ( `NUM_ENT ( g - dx )); 81 } } 91 $__db_pem ( dbc , g , dx , nbys , hdr , da ) 92 DBC * dbc ; 93 PAGE * g ; 94 u_t32_t dx ; 95 u_t32_t nbys ; 96 DBT * hdr , * da ; 98 DB * dbp ; 99 BKEYDATA bk ; 100 DBT thdr ; 101 db_dx_t * p ; 102 t ; 103 u_t8_t * p ; 105 dbp = dbc ->dbp; 106 `DB_ASSERT ( dbp -> dbv , `IS_DIRTY ( g )); 108 i( nbys > `P_FREESPACE ( dbp , g )) { 109 `DB_ASSERT ( dbp -> dbv , nbys < `P_FREESPACE (dbp, g )); 110 ( EINVAL ); 129 i( `DBC_LOGGING ( dbc )) { 130 i(( t = `__db_addm_log ( dbp , dbc -> txn , 131 & `LSN ( g ), 0, DB_ADD_DUP , `PGNO (pagep), 132 ( u_t32_t ) dx , nbys , hdr , da , & `LSN ( g ))) != 0) 133 ( t ); 135 `LSN_NOT_LOGGED ( `LSN ( g )); 137 i( hdr = NULL ) { 138 `B_TSET ( bk . ty , B_KEYDATA ); 139 bk . n = da = NULL ? 0 : da-> size ; 141 thdr . da = & bk ; 142 thdr . size = `SSZA ( BKEYDATA , da ); 143 hdr = & thdr ; 145 p = `P_INP ( dbp , g ); 148 i( dx ! `NUM_ENT ( g )) 149 `memmove (& p [ dx + 1], &inp[indx], 150 ( db_dx_t * ( `NUM_ENT ( g - dx )); 151 `HOFFSET ( g - nbys ; 152 p [ dx ] = `HOFFSET ( g ); 153 ++ `NUM_ENT ( g ); 155 p = `P_ENTRY ( dbp , g , dx ); 156 `memy ( p , hdr -> da , hdr-> size ); 157 i( da ! NULL ) 158 `memy ( p + hdr -> size , da ->data, data->size); 161 } } @../db/db_iface.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 #ide HAVE_HASH 15 ~"dbc/hash.h " 17 #ide HAVE_QUEUE 18 ~"dbc/qam.h " 20 ~"dbc/lock.h " 21 ~"dbc/log.h " 22 ~"dbc/mp.h " 23 ~"dbc/txn.h " 25 __db_assoc_g __P (( DB *, DB *, 26 (*)( DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 27 __dbc_d_g `__P (( DBC *, u_t32_t )); 28 __dbc_g_g `__P (( DBC *, DBT *, DBT *, u_t32_t )); 29 __dbc_pg_g `__P (( DBC *, DBT *, u_t32_t )); 30 __dbc_put_g `__P (( DBC *, DBT *, DBT *, u_t32_t )); 31 __db_curv `__P ((cڡ DB_ENV *)); 32 __db_curs_g `__P (( DB *, u_t32_t )); 33 __db_d_g `__P (( DB *, DBT *, u_t32_t )); 34 __db_g_g `__P ((cڡ DB *, DBT *, DBT *, u_t32_t )); 35 __db_jo_g `__P (( DB *, DBC **, u_t32_t )); 36 __db_ݒ_g `__P (( DB *, 37 DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t )); 38 __db_pg_g `__P (( DB *, DBT *, u_t32_t )); 39 __db_put_g `__P (( DB *, DBT *, DBT *, u_t32_t )); 40 __dbt_ `__P ((cڡ DB *, cڡ *, cڡ DBT *, )); 70 $__db_assoc_ ( dbp , txn , sdbp , back , ags ) 71 DB * dbp , * sdbp ; 72 DB_TXN * txn ; 73 (* back `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 74 u_t32_t ags ; 76 DBC * sdbc ; 77 DB_ENV * dbv ; 78 DB_THREAD_INFO * ; 79 hd_check , t , t_t , txn_lol ; 81 dbv = dbp ->dbenv; 82 txn_lol = 0; 84 `PANIC_CHECK ( dbv ); 85 `STRIP_AUTO_COMMIT ( ags ); 87 `ENV_ENTER ( dbv , ); 90 hd_check = `IS_ENV_REPLICATED ( dbv ); 91 i( hd_check && 92 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 93 hd_check = 0; 94 r ; 102 i( `TAILQ_FIRST (& sdbp -> aive_queue ! NULL || 103 `TAILQ_FIRST (& sdbp -> jo_queue ! NULL ) { 104 `__db_rx ( dbv , 106 t = EINVAL ; 107 r ; 110 i(( t = `__db_assoc_g ( dbp , sdbp , back , ags )) != 0) 111 r ; 118 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 119 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 120 r ; 121 txn_lol = 1; 125 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 126 r ; 128 ( sdbc = `TAILQ_FIRST (& sdbp -> _queue )! NULL ) 129 i(( t = `__dbc_deroy ( sdbc )) != 0) 130 r ; 132 t = `__db_assoc ( dbp , txn , sdbp , back , ags ); 134 r : i( txn_lol && 135 ( t_t = `__db_txn_auto_sve ( dbv , txn , 0, t )) &&et == 0) 136 t = t_t ; 139 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 140 t = t_t ; 141 `ENV_LEAVE ( dbv , ); 142 ( t ); 143 } } 150 $__db_assoc_g ( dbp , sdbp , back , ags ) 151 DB * dbp , * sdbp ; 152 (* back `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 153 u_t32_t ags ; 155 DB_ENV * dbv ; 156 t ; 158 dbv = dbp ->dbenv; 160 i( `F_ISSET ( sdbp , DB_AM_SECONDARY )) { 161 `__db_rx ( dbv , 163 ( EINVAL ); 165 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 166 `__db_rx ( dbv , 168 ( EINVAL ); 170 i( `F_ISSET ( dbp , DB_AM_DUP )) { 171 `__db_rx ( dbv , 173 ( EINVAL ); 175 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) { 176 `__db_rx ( dbv , 178 ( EINVAL ); 188 i( dbp -> dbv ! sdbp ->dbenv && 189 (! `F_ISSET ( dbp -> dbv , DB_ENV_DBLOCAL ) || 190 ! `F_ISSET ( sdbp -> dbv , DB_ENV_DBLOCAL ))) { 191 `__db_rx ( dbv , 193 ( EINVAL ); 195 i(( `DB_IS_THREADED ( dbp && !DB_IS_THREADED( sdbp )) || 196 (! `DB_IS_THREADED ( dbp && DB_IS_THREADED( sdbp ))) { 197 `__db_rx ( dbv , 199 ( EINVAL ); 201 i( back = NULL && 202 (! `F_ISSET ( dbp , DB_AM_RDONLY || !F_ISSET( sdbp , DB_AM_RDONLY))) { 203 `__db_rx ( dbv , 205 ( EINVAL ); 208 i(( t = `__db_fchk ( dbv , "DB->assoc", ags , DB_CREATE | 209 DB_IMMUTABLE_KEY )) != 0) 210 ( t ); 213 } } 222 $__db_o_ ( dbp , ags ) 223 DB * dbp ; 224 u_t32_t ags ; 226 DB_ENV * dbv ; 227 DB_THREAD_INFO * ; 228 hd_check , t , t_t ; 230 dbv = dbp ->dbenv; 231 t = 0; 233 `PANIC_CHECK ( dbv ); 242 i( ags !0 && fg! DB_NOSYNC ) 243 t = `__db_ ( dbv , "DB->close", 0); 245 `ENV_ENTER ( dbv , ); 248 hd_check = `IS_ENV_REPLICATED ( dbv ); 249 i( hd_check && ( t_t = `__db_p_r ( dbp , 0, 0, 0)) != 0) { 250 hd_check = 0; 251 i( t == 0) 252 t = t_t ; 255 i(( t_t = `__db_o ( dbp , NULL , ags )!0 && t == 0) 256 t = t_t ; 259 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 260 t = t_t ; 262 `ENV_LEAVE ( dbv , ); 263 ( t ); 264 } } 273 $__db_curs_ ( dbp , txn , db , ags ) 274 DB * dbp ; 275 DB_TXN * txn ; 276 DBC ** db ; 277 u_t32_t ags ; 279 DB_ENV * dbv ; 280 DB_THREAD_INFO * ; 281 hd_check , t ; 283 dbv = dbp ->dbenv; 285 `PANIC_CHECK ( dbv ); 286 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->cursor"); 288 `ENV_ENTER ( dbv , ); 291 i( txn = NULL ) { 292 hd_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; 293 i( hd_check && ( t = `___p_r ( dbv )) != 0) { 294 hd_check = 0; 295 r ; 298 hd_check = 0; 299 i(( t = `__db_curs_g ( dbp , ags )) != 0) 300 r ; 309 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 1)) != 0) 310 r ; 312 t = `__db_curs ( dbp , txn , db , ags ); 314 r : 315 i( t !0 && hd_check ) 316 () `___p_ex ( dbv ); 318 `ENV_LEAVE ( dbv , ); 319 ( t ); 320 } } 329 $__db_curs ( dbp , txn , db , ags ) 330 DB * dbp ; 331 DB_TXN * txn ; 332 DBC ** db ; 333 u_t32_t ags ; 335 DB_ENV * dbv ; 336 DBC * dbc ; 337 db_lockmode_t mode ; 338 u_t32_t ; 339 t ; 341 dbv = dbp ->dbenv; 343 i( `MULTIVERSION ( dbp && txn = NULL && ( `LF_ISSET ( DB_TXN_SNAPSHOT ) || 344 `F_ISSET ( dbv , DB_ENV_TXN_SNAPSHOT ))) { 345 i(( t = 346 `__txn_beg ( dbv , NULL , & txn , DB_TXN_SNAPSHOT )) != 0) 347 ( t ); 348 `F_SET ( txn , TXN_PRIVATE ); 351 i(( t = `__db_curs_t ( dbp , 352 txn , dbp -> ty , PGNO_INVALID , 0, DB_LOCK_INVALIDID , & dbc )) != 0) 353 ( t ); 359 i( `CDB_LOCKING ( dbv )) { 360 = `LF_ISSET ( DB_OPFLAGS_MASK ); 361 mode = ( = DB_WRITELOCK ? DB_LOCK_WRITE : 362 (( = DB_WRITECURSOR || txn ! NULL ? DB_LOCK_IWRITE : 363 DB_LOCK_READ ); 364 i(( t = `__lock_g ( dbv , dbc -> lock , 0, 365 & dbc -> lock_dbt , mode , &dbc-> mylock )) != 0) 366 r ; 367 i( = DB_WRITECURSOR ) 368 `F_SET ( dbc , DBC_WRITECURSOR ); 369 i( = DB_WRITELOCK ) 370 `F_SET ( dbc , DBC_WRITER ); 373 i( `LF_ISSET ( DB_READ_UNCOMMITTED ) || 374 ( txn ! NULL && `F_ISSET xn, TXN_READ_UNCOMMITTED ))) 375 `F_SET ( dbc , DBC_READ_UNCOMMITTED ); 377 i( `LF_ISSET ( DB_READ_COMMITTED ) || 378 ( txn ! NULL && `F_ISSET xn, TXN_READ_COMMITTED ))) 379 `F_SET ( dbc , DBC_READ_COMMITTED ); 381 * db = dbc ; 384 r : () `__dbc_o ( dbc ); 385 ( t ); 386 } } 393 $__db_curs_g ( dbp , ags ) 394 DB * dbp ; 395 u_t32_t ags ; 397 DB_ENV * dbv ; 399 dbv = dbp ->dbenv; 404 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED )) { 405 i(! `LOCKING_ON ( dbv )) 406 ( `__db_l ( dbv , "DB->cursor")); 409 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_TXN_SNAPSHOT ); 412 ags ) { 415 DB_WRITECURSOR : 416 i( `DB_IS_READONLY ( dbp )) 417 ( `__db_rdly ( dbv , "DB->cursor")); 418 i(! `CDB_LOCKING ( dbv )) 419 ( `__db_ ( dbv , "DB->cursor", 0)); 421 DB_WRITELOCK : 422 i( `DB_IS_READONLY ( dbp )) 423 ( `__db_rdly ( dbv , "DB->cursor")); 426 ( `__db_ ( dbv , "DB->cursor", 0)); 430 } } 439 $__db_d_ ( dbp , txn , key , ags ) 440 DB * dbp ; 441 DB_TXN * txn ; 442 DBT * key ; 443 u_t32_t ags ; 445 DB_ENV * dbv ; 446 DB_THREAD_INFO * ; 447 hd_check , t , t_t , txn_lol ; 449 dbv = dbp ->dbenv; 450 txn_lol = 0; 452 `PANIC_CHECK ( dbv ); 453 `STRIP_AUTO_COMMIT ( ags ); 454 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->del"); 456 #ifde CONFIG_TEST 457 i( `IS_REP_MASTER ( dbv )) 458 `DB_TEST_WAIT ( dbv , dbv-> _check ); 460 `ENV_ENTER ( dbv , ); 463 hd_check = `IS_ENV_REPLICATED ( dbv ); 464 i( hd_check && 465 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 466 hd_check = 0; 467 r ; 470 i(( t = `__db_d_g ( dbp , key , ags )) != 0) 471 r ; 474 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 475 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 476 r ; 477 txn_lol = 1; 481 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 482 r ; 484 t = `__db_d ( dbp , txn , key , ags ); 486 r : i( txn_lol && 487 ( t_t = `__db_txn_auto_sve ( dbv , txn , 0, t )) &&et == 0) 488 t = t_t ; 491 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 492 t = t_t ; 493 `ENV_LEAVE ( dbv , ); 494 `__dbt_ur ( dbv , key , NULL , NULL); 495 ( t ); 496 } } 503 $__db_d_g ( dbp , key , ags ) 504 DB * dbp ; 505 DBT * key ; 506 u_t32_t ags ; 508 DB_ENV * dbv ; 509 t ; 511 dbv = dbp ->dbenv; 514 i( `DB_IS_READONLY ( dbp )) 515 ( `__db_rdly ( dbv , "DB->del")); 518 ags ) { 520 i(( t = `__dbt_urcy ( dbv , key )) != 0) 521 ( t ); 524 ( `__db_ ( dbv , "DB->del", 0)); 528 } } 537 $__db_exis ( dbp , txn , key , ags ) 538 DB * dbp ; 539 DB_TXN * txn ; 540 DBT * key ; 541 u_t32_t ags ; 543 DBT da ; 544 t ; 551 i(( t = `__db_fchk ( dbp -> dbv , "DB->exis", ags , 552 DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW )) != 0) 553 ( t ); 559 `memt (& da , 0, (data)); 560 da . dn = 0; 561 da . ags = DB_DBT_PARTIAL | DB_DBT_USERMEM ; 563 ( dbp -> `g (dbp, txn , key , & da , ags )); 564 } } 573 $__db_fd_ ( dbp , fdp ) 574 DB * dbp ; 575 * fdp ; 577 DB_ENV * dbv ; 578 DB_THREAD_INFO * ; 579 DB_FH * fhp ; 580 hd_check , t , t_t ; 582 dbv = dbp ->dbenv; 584 `PANIC_CHECK ( dbv ); 585 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->fd"); 587 `ENV_ENTER ( dbv , ); 590 hd_check = `IS_ENV_REPLICATED ( dbv ); 591 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) 592 r ; 604 i(( t = `__mp_xxx_fh ( dbp -> mpf , & fhp )) == 0) { 605 i( fhp = NULL ) { 606 * fdp = -1; 607 `__db_rx ( dbv , 609 t = ENOENT ; 611 * fdp = fhp -> fd ; 615 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 616 t = t_t ; 618 r : `ENV_LEAVE ( dbv , ); 619 ( t ); 620 } } 629 $__db_g_ ( dbp , txn , key , da , ags ) 630 DB * dbp ; 631 DB_TXN * txn ; 632 DBT * key , * da ; 633 u_t32_t ags ; 635 DB_ENV * dbv ; 636 DB_THREAD_INFO * ; 637 u_t32_t mode ; 638 hd_check , igne_a , t , t_t , txn_lol ; 640 dbv = dbp ->dbenv; 641 mode = 0; 642 txn_lol = 0; 644 `PANIC_CHECK ( dbv ); 645 `STRIP_AUTO_COMMIT ( ags ); 646 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get"); 648 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ); 649 `LF_CLR ( DB_IGNORE_LEASE ); 651 i(( t = `__db_g_g ( dbp , key , da , ags )) != 0) 652 ( t ); 654 `ENV_ENTER ( dbv , ); 657 hd_check = `IS_ENV_REPLICATED ( dbv ); 658 i( hd_check && 659 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 660 hd_check = 0; 661 r ; 664 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 665 mode = DB_READ_UNCOMMITTED ; 666 i(( ags & DB_OPFLAGS_MASK = DB_CONSUME || 667 ( ags & DB_OPFLAGS_MASK = DB_CONSUME_WAIT ) { 668 mode = DB_WRITELOCK ; 669 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 670 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 671 r ; 672 txn_lol = 1; 677 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 678 mode = DB_WRITELOCK || `LF_ISSET ( DB_RMW ) ? 0 : 1)) != 0) 679 r ; 681 t = `__db_g ( dbp , txn , key , da , ags ); 685 i( t =0 && `IS_REP_MASTER ( dbv && `IS_USING_LEASES (dbenv) && 686 ! igne_a ) 687 t = `__p_a_check ( dbv , 1); 689 r : i( txn_lol && 690 ( t_t = `__db_txn_auto_sve ( dbv , txn , 0, t )) &&et == 0) 691 t = t_t ; 694 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 695 t = t_t ; 697 `ENV_LEAVE ( dbv , ); 698 `__dbt_ur ( dbv , key , NULL , da ); 699 ( t ); 700 } } 709 $__db_g ( dbp , txn , key , da , ags ) 710 DB * dbp ; 711 DB_TXN * txn ; 712 DBT * key , * da ; 713 u_t32_t ags ; 715 DBC * dbc ; 716 u_t32_t mode ; 717 t , t_t ; 719 mode = 0; 720 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) { 721 mode = DB_READ_UNCOMMITTED ; 722 `LF_CLR ( DB_READ_UNCOMMITTED ); 723 } i( `LF_ISSET ( DB_READ_COMMITTED )) { 724 mode = DB_READ_COMMITTED ; 725 `LF_CLR ( DB_READ_COMMITTED ); 726 } i(( ags & DB_OPFLAGS_MASK = DB_CONSUME || 727 ( ags & DB_OPFLAGS_MASK = DB_CONSUME_WAIT ) 728 mode = DB_WRITELOCK ; 730 i(( t = `__db_curs ( dbp , txn , & dbc , mode )) != 0) 731 ( t ); 733 `DEBUG_LREAD ( dbc , txn , "DB->g", key , NULL , ags ); 743 `F_SET ( dbc , DBC_TRANSIENT ); 750 `SET_RET_MEM ( dbc , dbp ); 752 i( `LF_ISSET (~( DB_RMW | DB_MULTIPLE )) == 0) 753 `LF_SET ( DB_SET ); 755 t = `__dbc_g ( dbc , key , da , ags ); 757 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 758 t = t_t ; 760 ( t ); 761 } } 768 $__db_g_g ( dbp , key , da , ags ) 769 cڡ DB * dbp ; 770 DBT * key , * da ; 771 u_t32_t ags ; 773 DB_ENV * dbv ; 774 check_thad , dty , mui , t ; 776 dbv = dbp ->dbenv; 786 check_thad = dty = 0; 787 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW )) { 788 i(! `LOCKING_ON ( dbv )) 789 ( `__db_l ( dbv , "DB->get")); 790 i(( t = `__db_fcchk ( dbv , "DB->get", 791 ags , DB_READ_UNCOMMITTED , DB_READ_COMMITTED )) != 0) 792 ( t ); 793 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED )) 794 dty = 1; 795 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 798 mui = 0; 799 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 800 i( `LF_ISSET ( DB_MULTIPLE_KEY )) 801 mui_r ; 802 mui = `LF_ISSET ( DB_MULTIPLE ) ? 1 : 0; 803 `LF_CLR ( DB_MULTIPLE ); 807 ags ) { 808 DB_GET_BOTH : 809 i(( t = `__dbt_urcy ( dbv , da )) != 0) 810 ( t ); 813 i(( t = `__dbt_urcy ( dbv , key )) != 0) { 814 `__dbt_ur ( dbv , key , NULL , da ); 815 ( t ); 818 DB_SET_RECNO : 819 check_thad = 1; 820 i(! `F_ISSET ( dbp , DB_AM_RECNUM )) 821 r ; 822 i(( t = `__dbt_urcy ( dbv , key )) != 0) 823 ( t ); 825 DB_CONSUME : 826 DB_CONSUME_WAIT : 827 check_thad = 1; 828 i( dty ) { 829 `__db_rx ( dbv , 831 `LF_ISSET ( DB_READ_UNCOMMITTED ) ? 833 ( EINVAL ); 835 i( mui ) 836 mui_r : ( `__db_ ( dbv , "DB->get", 1)); 837 i( dbp -> ty = DB_QUEUE ) 841 r : ( `__db_ ( dbv , "DB->get", 0)); 850 i(( t = `__dbt_ ( dbp , "key", key , check_thad )) != 0) 851 ( t ); 852 i(( t = `__dbt_ ( dbp , "da", da , 1)) != 0) 853 ( t ); 855 i( mui ) { 856 i(! `F_ISSET ( da , DB_DBT_USERMEM )) { 857 `__db_rx ( dbv , 859 ( EINVAL ); 861 i( `F_ISSET ( key , DB_DBT_PARTIAL ) || 862 `F_ISSET ( da , DB_DBT_PARTIAL )) { 863 `__db_rx ( dbv , 865 ( EINVAL ); 867 i( da -> un < 1024 || 868 da -> un < dbp -> pgsize || data->ulen % 1024 != 0) { 869 `__db_rx ( dbv , "%s%s", 872 ( EINVAL ); 877 } } 886 $__db_jo_ ( imy , curi , db , ags ) 887 DB * imy ; 888 DBC ** curi , ** db ; 889 u_t32_t ags ; 891 DB_ENV * dbv ; 892 DB_THREAD_INFO * ; 893 hd_check , t , t_t ; 895 dbv = imy ->dbenv; 897 `PANIC_CHECK ( dbv ); 899 `ENV_ENTER ( dbv , ); 902 hd_check = `IS_ENV_REPLICATED ( dbv ); 903 i( hd_check && ( t = 904 `__db_p_r ( imy , 1, 0, curi [0]-> txn ! NULL )) != 0) { 905 hd_check = 0; 906 r ; 909 i(( t = `__db_jo_g ( imy , curi , ags )) == 0) 910 t = `__db_jo ( imy , curi , db , ags ); 913 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 914 t = t_t ; 916 r : `ENV_LEAVE ( dbv , ); 917 ( t ); 918 } } 925 $__db_jo_g ( imy , curi , ags ) 926 DB * imy ; 927 DBC ** curi ; 928 u_t32_t ags ; 930 DB_ENV * dbv ; 931 DB_TXN * txn ; 932 i ; 934 dbv = imy ->dbenv; 936 ags ) { 938 DB_JOIN_NOSORT : 941 ( `__db_ ( dbv , "DB->join", 0)); 944 i( curi = NULL || curslist[0] == NULL) { 945 `__db_rx ( dbv , 947 ( EINVAL ); 950 txn = curi [0]->txn; 951 i = 1; curi [i] ! NULL ; i++) 952 i( curi [ i ]-> txn !=xn) { 953 `__db_rx ( dbv , 955 ( EINVAL ); 959 } } 969 $__db_key_nge_ ( dbp , txn , key , kr , ags ) 970 DB * dbp ; 971 DB_TXN * txn ; 972 DBT * key ; 973 DB_KEY_RANGE * kr ; 974 u_t32_t ags ; 976 DBC * dbc ; 977 DB_ENV * dbv ; 978 DB_THREAD_INFO * ; 979 hd_check , t , t_t ; 981 dbv = dbp ->dbenv; 983 `PANIC_CHECK ( dbp -> dbv ); 984 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->key_range"); 991 i( ags != 0) 992 ( `__db_ ( dbv , "DB->key_range", 0)); 994 `ENV_ENTER ( dbv , ); 997 hd_check = `IS_ENV_REPLICATED ( dbv ); 998 i( hd_check && 999 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1000 hd_check = 0; 1001 r ; 1005 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 1)) != 0) 1006 r ; 1012 dbp -> ty ) { 1013 DB_BTREE : 1014 #ide HAVE_BREW 1015 i(( t = `__dbt_urcy ( dbv , key )) != 0) 1016 r ; 1019 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 1022 `DEBUG_LWRITE ( dbc , NULL , "bam_key_range", NULL, NULL, 0); 1024 t = `__bam_key_nge ( dbc , key , kr , ags ); 1026 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1027 t = t_t ; 1028 `__dbt_ur ( dbv , key , NULL , NULL); 1031 `COMPQUIET ( dbc , NULL ); 1032 `COMPQUIET ( key , NULL ); 1033 `COMPQUIET ( kr , NULL ); 1036 DB_HASH : 1037 DB_QUEUE : 1038 DB_RECNO : 1039 t = `__dbh_am_chk ( dbp , DB_OK_BTREE ); 1041 DB_UNKNOWN : 1043 t = `__db_unknown_ty ( dbv , "DB->key_nge", dbp -> ty ); 1047 r : 1048 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1049 t = t_t ; 1051 `ENV_LEAVE ( dbv , ); 1052 ( t ); 1053 } } 1063 $__db_ݒ_ ( dbp , txn , ame , dme , ty , ags , mode ) 1064 DB * dbp ; 1065 DB_TXN * txn ; 1066 cڡ * ame , * dme ; 1067 DBTYPE ty ; 1068 u_t32_t ags ; 1069 mode ; 1071 DB_ENV * dbv ; 1072 DB_THREAD_INFO * ; 1073 hd_check , nosync , move_me , t , t_t , txn_lol ; 1075 dbv = dbp ->dbenv; 1076 nosync = 1; 1077 move_me = txn_lol = 0; 1078 hd_check = 0; 1080 `PANIC_CHECK ( dbv ); 1082 `ENV_ENTER ( dbv , ); 1089 i(( ame ! NULL && 1090 ( t = `__os_rdup ( dbv , ame , & dbp ->fname)) != 0)) 1091 r ; 1092 i(( dme ! NULL && 1093 ( t = `__os_rdup ( dbv , dme , & dbp ->dname)) != 0)) 1094 r ; 1095 dbp -> ݒ_ags = ags ; 1098 dbp -> ig_ags = dbp-> ags ; 1101 hd_check = `IS_ENV_REPLICATED ( dbv ); 1102 i( hd_check && 1103 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1104 hd_check = 0; 1105 r ; 1112 i( `IS_ENV_AUTO_COMMIT ( dbv , txn , ags )) { 1113 i(( t = `__db_txn_auto_ ( dbv , & txn )) != 0) 1114 r ; 1115 txn_lol = 1; 1116 } i( txn ! NULL && ! `TXN_ON ( dbv ) && 1117 (! `CDB_LOCKING ( dbv || ! `F_ISSET ( txn , TXN_CDSGROUP ))) { 1118 t = `__db_n_txn_v ( dbv ); 1119 r ; 1121 `LF_CLR ( DB_AUTO_COMMIT ); 1128 i(( t = `__db_ݒ_g ( dbp , txn , ame , dme , ty , ags )) == 0) 1129 i(( t = `__db_ݒ ( dbp , txn , ame , dme , ty , 1130 ags , mode , PGNO_BASE_MD )) != 0) 1131 txü ; 1143 i( dme = NULL && ! `IS_RECOVERING ( dbv && ! `LF_ISSET ( DB_RDONLY ) && 1144 ! `LF_ISSET ( DB_RDWRMASTER && `F_ISSET ( dbp , DB_AM_SUBDB )) { 1145 `__db_rx ( dbv , 1147 t = EINVAL ; 1148 txü ; 1155 i( `F_ISSET ( dbp , DB_AM_CREATED | DB_AM_CREATED_MSTR )) 1156 nosync = 0; 1159 `F_CLR ( dbp , DB_AM_DISCARD | DB_AM_CREATED | DB_AM_CREATED_MSTR ); 1166 txü : i( t !0 && ! `IS_REAL_TXN ( txn )) { 1167 move_me = ( `F_ISSET ( dbp , DB_AM_CREATED ) && 1168 ( ame ! NULL || dme != NULL)) ? 1 : 0; 1169 i( `F_ISSET ( dbp , DB_AM_CREATED_MSTR ) || 1170 ( dme = NULL && move_me )) 1172 () `__db_move_t ( dbp , txn , ame , NULL , DB_FORCE ); 1173 i( move_me ) 1175 () `__db_move_t ( dbp , txn , ame , dme , DB_FORCE ); 1178 i( txn_lol && ( t_t = 1179 `__db_txn_auto_sve ( dbv , txn , nosync , t )) &&et == 0) 1180 t = t_t ; 1182 r : 1183 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1184 t = t_t ; 1186 `ENV_LEAVE ( dbv , ); 1187 ( t ); 1188 } } 1195 $__db_ݒ_g ( dbp , txn , ame , dme , ty , ags ) 1196 DB * dbp ; 1197 DB_TXN * txn ; 1198 cڡ * ame , * dme ; 1199 DBTYPE ty ; 1200 u_t32_t ags ; 1202 DB_ENV * dbv ; 1203 u_t32_t ok_ags ; 1204 t ; 1206 dbv = dbp ->dbenv; 1209 #unde OKFLAGS 1210 #OKFLAGS \ 1211 ( DB_AUTO_COMMIT | DB_CREATE | DB_EXCL | DB_FCNTL_LOCKING | \ 1212 DB_MULTIVERSION | DB_NOMMAP | DB_NO_AUTO_COMMIT | DB_RDONLY | \ 1213 DB_RDWRMASTER | DB_READ_UNCOMMITTED | DB_THREAD | DB_TRUNCATE | \ 1214 DB_WRITEOPEN ) ) 1215 i(( t = `__db_fchk ( dbv , "DB->ݒ", ags , OKFLAGS )) != 0) 1216 ( t ); 1217 i( `LF_ISSET ( DB_EXCL && !LF_ISSET( DB_CREATE )) 1218 ( `__db_ ( dbv , "DB->open", 1)); 1219 i( `LF_ISSET ( DB_RDONLY && LF_ISSET( DB_CREATE )) 1220 ( `__db_ ( dbv , "DB->open", 1)); 1222 #ifdef HAVE_VXWORKS 1223 i( `LF_ISSET ( DB_TRUNCATE )) { 1224 `__db_rx ( dbv , "DB_TRUNCATEot supported on VxWorks"); 1225 ( DB_OPNOTSUP ); 1228 ty ) { 1229 DB_UNKNOWN : 1230 i( `LF_ISSET ( DB_CREATE | DB_TRUNCATE )) { 1231 `__db_rx ( dbv , 1233 ( EINVAL ); 1235 ok_ags = 0; 1237 DB_BTREE : 1238 ok_ags = DB_OK_BTREE ; 1240 DB_HASH : 1241 #ide HAVE_HASH 1242 ( `__db_no_hash_am ( dbv )); 1244 ok_ags = DB_OK_HASH ; 1246 DB_QUEUE : 1247 #ide HAVE_QUEUE 1248 ( `__db_no_queue_am ( dbv )); 1250 ok_ags = DB_OK_QUEUE ; 1252 DB_RECNO : 1253 ok_ags = DB_OK_RECNO ; 1256 `__db_rx ( dbv , "unknowty: %lu", ( u_lg ) ty ); 1257 ( EINVAL ); 1259 i( ok_ags ) 1260 `DB_ILLEGAL_METHOD ( dbp , ok_ags ); 1263 i(! `F_ISSET ( dbv , DB_ENV_DBLOCAL | DB_ENV_OPEN_CALLED )) { 1264 `__db_rx ( dbv , "databasenvironmentot yet opened"); 1265 ( EINVAL ); 1273 i(! `F_ISSET ( dbv , DB_ENV_DBLOCAL && ! `MPOOL_ON (dbenv)) { 1274 `__db_rx ( dbv , "environment didot include memoryool"); 1275 ( EINVAL ); 1282 i( `LF_ISSET ( DB_THREAD ) && 1283 ! `F_ISSET ( dbv , DB_ENV_DBLOCAL | DB_ENV_THREAD )) { 1284 `__db_rx ( dbv , "environmentot created using DB_THREAD"); 1285 ( EINVAL ); 1289 i( `LF_ISSET ( DB_MULTIVERSION && ! `IS_REAL_TXN ( txn )) { 1290 `__db_rx ( dbv , 1292 ( EINVAL ); 1295 i( `LF_ISSET ( DB_MULTIVERSION && ty = DB_QUEUE ) { 1296 `__db_rx ( dbv , 1298 ( EINVAL ); 1302 i( `LF_ISSET ( DB_TRUNCATE && ( `LOCKING_ON ( dbv || txn ! NULL )) { 1303 `__db_rx ( dbv , 1305 `LOCKING_ON ( dbv ) ? "locking" : "transactions"); 1306 ( EINVAL ); 1310 i( dme ! NULL ) { 1312 i( ty = DB_QUEUE && ame ! NULL ) { 1313 `__db_rx ( 1314 dbv , "Queue databases must be one-per-file"); 1315 ( EINVAL ); 1322 i( ame = NULL ) 1323 `F_CLR ( dbp , DB_AM_CHKSUM | DB_AM_ENCRYPT ); 1327 } } 1337 $__db_pg_ ( dbp , txn , skey , pkey , da , ags ) 1338 DB * dbp ; 1339 DB_TXN * txn ; 1340 DBT * skey , * pkey , * da ; 1341 u_t32_t ags ; 1343 DB_ENV * dbv ; 1344 DB_THREAD_INFO * ; 1345 hd_check , igne_a , t , t_t ; 1347 dbv = dbp ->dbenv; 1349 `PANIC_CHECK ( dbv ); 1350 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->pget"); 1352 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ); 1353 `LF_CLR ( DB_IGNORE_LEASE ); 1355 i(( t = `__db_pg_g ( dbp , pkey , ags )) != 0 || 1356 ( t = `__db_g_g ( dbp , skey , da , ags )) != 0) { 1357 `__dbt_ur ( dbv , skey , pkey , da ); 1358 ( t ); 1361 `ENV_ENTER ( dbv , ); 1364 hd_check = `IS_ENV_REPLICATED ( dbv ); 1365 i( hd_check && 1366 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1367 hd_check = 0; 1368 r ; 1371 t = `__db_pg ( dbp , txn , skey , pkey , da , ags ); 1375 i( t =0 && `IS_REP_MASTER ( dbv && `IS_USING_LEASES (dbenv) && 1376 ! igne_a ) 1377 t = `__p_a_check ( dbv , 1); 1379 r : 1380 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1381 t = t_t ; 1383 `ENV_LEAVE ( dbv , ); 1384 `__dbt_ur ( dbv , skey , pkey , da ); 1385 ( t ); 1386 } } 1396 $__db_pg ( dbp , txn , skey , pkey , da , ags ) 1397 DB * dbp ; 1398 DB_TXN * txn ; 1399 DBT * skey , * pkey , * da ; 1400 u_t32_t ags ; 1402 DBC * dbc ; 1403 u_t32_t mode ; 1404 t , t_t ; 1406 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) { 1407 mode = DB_READ_UNCOMMITTED ; 1408 `LF_CLR ( DB_READ_UNCOMMITTED ); 1409 } i( `LF_ISSET ( DB_READ_COMMITTED )) { 1410 mode = DB_READ_COMMITTED ; 1411 `LF_CLR ( DB_READ_COMMITTED ); 1413 mode = 0; 1415 i(( t = `__db_curs ( dbp , txn , & dbc , mode )) != 0) 1416 ( t ); 1418 `SET_RET_MEM ( dbc , dbp ); 1420 `DEBUG_LREAD ( dbc , txn , "__db_pg", skey , NULL , ags ); 1436 i( pkey = NULL ) 1437 dbc -> rkey = &dbc-> my_rkey ; 1443 i( ags =0 || fg= DB_RMW ) 1444 ags | DB_SET ; 1446 t = `__dbc_pg ( dbc , skey , pkey , da , ags ); 1448 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1449 t = t_t ; 1451 ( t ); 1452 } } 1459 $__db_pg_g ( dbp , pkey , ags ) 1460 DB * dbp ; 1461 DBT * pkey ; 1462 u_t32_t ags ; 1464 DB_ENV * dbv ; 1465 t ; 1467 dbv = dbp ->dbenv; 1469 i(! `F_ISSET ( dbp , DB_AM_SECONDARY )) { 1470 `__db_rx ( dbv , 1472 ( EINVAL ); 1475 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 1476 `__db_rx ( dbv , 1478 ( EINVAL ); 1482 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 1483 ags ) { 1484 DB_CONSUME : 1485 DB_CONSUME_WAIT : 1486 ( `__db_ ( dbv , "DB->pget", 0)); 1496 i( pkey ! NULL && 1497 ( t = `__dbt_ ( dbp , "imy key", pkey , 1)) != 0) 1498 ( t ); 1500 i( ags = DB_GET_BOTH ) { 1502 i( pkey = NULL ) { 1503 `__db_rx ( dbv , 1505 ( EINVAL ); 1507 i(( t = `__dbt_urcy ( dbv , pkey )) != 0) 1508 ( t ); 1512 } } 1521 $__db_put_ ( dbp , txn , key , da , ags ) 1522 DB * dbp ; 1523 DB_TXN * txn ; 1524 DBT * key , * da ; 1525 u_t32_t ags ; 1527 DB_ENV * dbv ; 1528 DB_THREAD_INFO * ; 1529 hd_check , t , txn_lol , t_t ; 1531 dbv = dbp ->dbenv; 1532 txn_lol = 0; 1534 `PANIC_CHECK ( dbv ); 1535 `STRIP_AUTO_COMMIT ( ags ); 1536 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->put"); 1538 i(( t = `__db_put_g ( dbp , key , da , ags )) != 0) 1539 ( t ); 1541 `ENV_ENTER ( dbv , ); 1544 hd_check = `IS_ENV_REPLICATED ( dbv ); 1545 i( hd_check && 1546 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1547 hd_check = 0; 1548 r ; 1552 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 1553 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 1554 r ; 1555 txn_lol = 1; 1559 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 1560 r ; 1562 t = `__db_put ( dbp , txn , key , da , ags ); 1564 r : i( txn_lol && 1565 ( t_t = `__db_txn_auto_sve ( dbv , txn , 0, t )) &&et == 0) 1566 t = t_t ; 1569 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1570 t = t_t ; 1572 `ENV_LEAVE ( dbv , ); 1573 `__dbt_ur ( dbv , key , NULL , da ); 1574 ( t ); 1575 } } 1582 $__db_put_g ( dbp , key , da , ags ) 1583 DB * dbp ; 1584 DBT * key , * da ; 1585 u_t32_t ags ; 1587 DB_ENV * dbv ; 1588 t , tukey ; 1590 dbv = dbp ->dbenv; 1591 tukey = 0; 1594 i( `DB_IS_READONLY ( dbp )) 1595 ( `__db_rdly ( dbv , "DB->put")); 1598 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 1599 `__db_rx ( dbv , "DB->put forbidden on secondary indices"); 1600 ( EINVAL ); 1604 ags ) { 1606 DB_NOOVERWRITE : 1608 DB_APPEND : 1609 i( dbp -> ty ! DB_RECNO && dbp->ty ! DB_QUEUE ) 1610 r ; 1611 tukey = 1; 1613 DB_NODUPDATA : 1614 i( `F_ISSET ( dbp , DB_AM_DUPSORT )) 1618 r : ( `__db_ ( dbv , "DB->put", 0)); 1626 i((( tukey && key ! NULL ) || !returnkey) && 1627 ( t = `__dbt_ ( dbp , "key", key , tukey )) != 0) 1628 ( t ); 1629 i(( t = `__dbt_ ( dbp , "da", da , 0)) != 0) 1630 ( t ); 1641 i(( tukey && 1642 key ! NULL && `F_ISSET (key, DB_DBT_PARTIAL && key-> dn != 0) || 1643 (! tukey && `F_ISSET ( key , DB_DBT_PARTIAL ))) 1644 ( `__db_ ( dbv , "key DBT", 0)); 1647 i( `F_ISSET ( da , DB_DBT_PARTIAL ) && 1648 ( `F_ISSET ( dbp , DB_AM_DUP || F_ISSET( key , DB_DBT_DUPOK ))) { 1649 `__db_rx ( dbv , 1651 ( EINVAL ); 1654 i(( ags ! DB_APPEND && ( t = `__dbt_urcy ( dbv , key )) != 0) || 1655 ( t = `__dbt_urcy ( dbv , da )) != 0) 1656 ( t ); 1659 } } 1669 $__db_com_ ( dbp , txn , t , , c_da , ags , d ) 1670 DB * dbp ; 1671 DB_TXN * txn ; 1672 DBT * t , * ; 1673 DB_COMPACT * c_da ; 1674 u_t32_t ags ; 1675 DBT * d ; 1677 DB_COMPACT * dp , l_da ; 1678 DB_ENV * dbv ; 1679 DB_THREAD_INFO * ; 1680 hd_check , t , t_t ; 1682 dbv = dbp ->dbenv; 1684 `PANIC_CHECK ( dbv ); 1685 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->compact"); 1692 i(( ags & ~ DB_COMPACT_FLAGS ) != 0) 1693 ( `__db_ ( dbv , "DB->compact", 0)); 1696 i( `DB_IS_READONLY ( dbp )) 1697 ( `__db_rdly ( dbv , "DB->compact")); 1699 i( t ! NULL && ( t = `__dbt_urcy ( dbv , start)) != 0) 1700 ( t ); 1701 i( ! NULL && ( t = `__dbt_urcy ( dbv , stop)) != 0) 1702 ( t ); 1704 `ENV_ENTER ( dbv , ); 1707 hd_check = `IS_ENV_REPLICATED ( dbv ); 1708 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 1709 hd_check = 0; 1710 r ; 1713 i( c_da = NULL ) { 1714 dp = & l_da ; 1715 `memt ( dp , 0, (*dp)); 1717 dp = c_da ; 1719 dbp -> ty ) { 1720 DB_HASH : 1721 i(! `LF_ISSET ( DB_FREELIST_ONLY )) 1722 r ; 1724 DB_BTREE : 1725 DB_RECNO : 1726 t = `__bam_com ( dbp , txn , t , , dp , ags , d ); 1730 r : t = `__dbh_am_chk ( dbp , DB_OK_BTREE ); 1735 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1736 t = t_t ; 1738 `ENV_LEAVE ( dbv , ); 1739 `__dbt_ur ( dbv , t , , NULL ); 1740 ( t ); 1741 } } 1750 $__db_sync_ ( dbp , ags ) 1751 DB * dbp ; 1752 u_t32_t ags ; 1754 DB_ENV * dbv ; 1755 DB_THREAD_INFO * ; 1756 hd_check , t , t_t ; 1758 dbv = dbp ->dbenv; 1760 `PANIC_CHECK ( dbv ); 1761 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->sync"); 1768 i( ags != 0) 1769 ( `__db_ ( dbv , "DB->sync", 0)); 1771 `ENV_ENTER ( dbv , ); 1774 hd_check = `IS_ENV_REPLICATED ( dbv ); 1775 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 1776 hd_check = 0; 1777 r ; 1780 t = `__db_sync ( dbp ); 1783 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1784 t = t_t ; 1786 r : `ENV_LEAVE ( dbv , ); 1787 ( t ); 1788 } } 1797 $__dbc_o_ ( dbc ) 1798 DBC * dbc ; 1800 DB_ENV * dbv ; 1801 DB_THREAD_INFO * ; 1802 DB * dbp ; 1803 hd_check , t , t_t ; 1805 dbp = dbc ->dbp; 1806 dbv = dbp ->dbenv; 1808 `PANIC_CHECK ( dbv ); 1809 `ENV_ENTER ( dbv , ); 1816 i(! `F_ISSET ( dbc , DBC_ACTIVE )) { 1817 `__db_rx ( dbv , "Closinglready-closed cursor"); 1818 t = EINVAL ; 1819 r ; 1823 hd_check = dbc -> txn = NULL && `IS_ENV_REPLICATED ( dbv ); 1824 t = `__dbc_o ( dbc ); 1827 i( hd_check && 1828 ( t_t = `___p_ex ( dbv )!0 && t == 0) 1829 t = t_t ; 1831 r : `ENV_LEAVE ( dbv , ); 1832 ( t ); 1833 } } 1842 $__dbc_cou_ ( dbc , , ags ) 1843 DBC * dbc ; 1844 db_o_t * ; 1845 u_t32_t ags ; 1847 DB_ENV * dbv ; 1848 DB_THREAD_INFO * ; 1849 DB * dbp ; 1850 t ; 1852 dbp = dbc ->dbp; 1853 dbv = dbp ->dbenv; 1855 `PANIC_CHECK ( dbv ); 1864 i( ags != 0) 1865 ( `__db_ ( dbv , "DBcursor->count", 0)); 1867 i(! `IS_INITIALIZED ( dbc )) 1868 ( `__db_curv ( dbv )); 1870 `ENV_ENTER ( dbv , ); 1872 t = `__dbc_cou ( dbc , ); 1873 `ENV_LEAVE ( dbv , ); 1874 ( t ); 1875 } } 1884 $__dbc_d_ ( dbc , ags ) 1885 DBC * dbc ; 1886 u_t32_t ags ; 1888 DB * dbp ; 1889 DB_ENV * dbv ; 1890 DB_THREAD_INFO * ; 1891 t ; 1893 dbp = dbc ->dbp; 1894 dbv = dbp ->dbenv; 1896 `PANIC_CHECK ( dbv ); 1898 i(( t = `__dbc_d_g ( dbc , ags )) != 0) 1899 ( t ); 1901 `ENV_ENTER ( dbv , ); 1904 i(( t = `__db_check_txn ( dbp , dbc -> txn , dbc-> lock , 0)) != 0) 1905 r ; 1907 `DEBUG_LWRITE ( dbc , dbc-> txn , "DBcurs->d", NULL , NULL, ags ); 1908 t = `__dbc_d ( dbc , ags ); 1909 r : 1910 `ENV_LEAVE ( dbv , ); 1911 ( t ); 1912 } } 1919 $__dbc_d_g ( dbc , ags ) 1920 DBC * dbc ; 1921 u_t32_t ags ; 1923 DB * dbp ; 1924 DB_ENV * dbv ; 1926 dbp = dbc ->dbp; 1927 dbv = dbp ->dbenv; 1930 i( `DB_IS_READONLY ( dbp )) 1931 ( `__db_rdly ( dbv , "DBcursor->del")); 1934 ags ) { 1937 DB_UPDATE_SECONDARY : 1938 `DB_ASSERT ( dbv , `F_ISSET ( dbp , DB_AM_SECONDARY )); 1941 ( `__db_ ( dbv , "DBcursor->del", 0)); 1948 i(! `IS_INITIALIZED ( dbc )) 1949 ( `__db_curv ( dbv )); 1952 } } 1961 $__dbc_dup_ ( dbc , db , ags ) 1962 DBC * dbc , ** db ; 1963 u_t32_t ags ; 1965 DB * dbp ; 1966 DB_ENV * dbv ; 1967 DB_THREAD_INFO * ; 1968 t ; 1970 dbp = dbc ->dbp; 1971 dbv = dbp ->dbenv; 1973 `PANIC_CHECK ( dbv ); 1980 i( ags !0 && fg! DB_POSITION ) 1981 ( `__db_ ( dbv , "DBcursor->dup", 0)); 1983 `ENV_ENTER ( dbv , ); 1985 t = `__dbc_dup ( dbc , db , ags ); 1986 `ENV_LEAVE ( dbv , ); 1987 ( t ); 1988 } } 1997 $__dbc_g_ ( dbc , key , da , ags ) 1998 DBC * dbc ; 1999 DBT * key , * da ; 2000 u_t32_t ags ; 2002 DB * dbp ; 2003 DB_ENV * dbv ; 2004 igne_a , t ; 2005 DB_THREAD_INFO * ; 2007 dbp = dbc ->dbp; 2008 dbv = dbp ->dbenv; 2010 `PANIC_CHECK ( dbv ); 2012 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ); 2013 `LF_CLR ( DB_IGNORE_LEASE ); 2014 i(( t = `__dbc_g_g ( dbc , key , da , ags )) != 0) 2015 ( t ); 2017 `ENV_ENTER ( dbv , ); 2019 `DEBUG_LREAD ( dbc , dbc-> txn , "DBcursor->get", 2020 ags = DB_SET || fg= DB_SET_RANGE ? key : NULL , NULL, flags); 2021 t = `__dbc_g ( dbc , key , da , ags ); 2026 i( t =0 && `IS_REP_MASTER ( dbv && `IS_USING_LEASES (dbenv) && 2027 ! igne_a ) 2028 t = `__p_a_check ( dbv , 1); 2030 `ENV_LEAVE ( dbv , ); 2031 `__dbt_ur ( dbv , key , NULL , da ); 2032 ( t ); 2033 } } 2040 $__dbc_g_g ( dbc , key , da , ags ) 2041 DBC * dbc ; 2042 DBT * key , * da ; 2043 u_t32_t ags ; 2045 DB * dbp ; 2046 DB_ENV * dbv ; 2047 dty , mui , t ; 2049 dbp = dbc ->dbp; 2050 dbv = dbp ->dbenv; 2067 dty = 0; 2068 i( `LF_ISSET ( DB_READ_UNCOMMITTED | DB_RMW )) { 2069 i(! `LOCKING_ON ( dbv )) 2070 ( `__db_l ( dbv , "DBcursor->get")); 2071 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 2072 dty = 1; 2073 `LF_CLR ( DB_READ_UNCOMMITTED | DB_RMW ); 2076 mui = 0; 2077 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 2078 mui = 1; 2079 i( `LF_ISSET ( DB_MULTIPLE && LF_ISSET( DB_MULTIPLE_KEY )) 2080 mui_r ; 2081 `LF_CLR ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 2085 ags ) { 2086 DB_CONSUME : 2087 DB_CONSUME_WAIT : 2088 i( dty ) { 2089 `__db_rx ( dbv , 2091 ( EINVAL ); 2093 i( dbp -> ty ! DB_QUEUE ) 2094 r ; 2096 DB_CURRENT : 2097 DB_FIRST : 2098 DB_NEXT : 2099 DB_NEXT_DUP : 2100 DB_NEXT_NODUP : 2102 DB_LAST : 2103 DB_PREV : 2104 DB_PREV_DUP : 2105 DB_PREV_NODUP : 2106 i( mui ) 2107 mui_r : ( `__db_ ( dbv , "DBcursor->get", 1)); 2109 DB_GET_BOTHC : 2110 i( dbp -> ty = DB_QUEUE ) 2111 r ; 2113 DB_GET_BOTH : 2114 DB_GET_BOTH_RANGE : 2115 i(( t = `__dbt_urcy ( dbv , da )) != 0) 2116 r ; 2118 DB_SET : 2119 DB_SET_RANGE : 2120 i(( t = `__dbt_urcy ( dbv , key )) != 0) 2121 r ; 2123 DB_GET_RECNO : 2129 i(! `F_ISSET ( dbp , DB_AM_RECNUM ) && 2130 (! `F_ISSET ( dbp , DB_AM_SECONDARY ) || 2131 ! `F_ISSET ( dbp -> s_imy , DB_AM_RECNUM ))) 2132 r ; 2134 DB_SET_RECNO : 2135 i(! `F_ISSET ( dbp , DB_AM_RECNUM )) 2136 r ; 2137 i(( t = `__dbt_urcy ( dbv , key )) != 0) 2138 r ; 2141 r : `__dbt_ur ( dbv , key , NULL , da ); 2142 ( `__db_ ( dbv , "DBcursor->get", 0)); 2146 i(( t = `__dbt_ ( dbp , "key", key , 0)) != 0) 2147 ( t ); 2148 i(( t = `__dbt_ ( dbp , "da", da , 0)) != 0) 2149 ( t ); 2151 i( mui ) { 2152 i(! `F_ISSET ( da , DB_DBT_USERMEM )) { 2153 `__db_rx ( dbv , 2155 ( EINVAL ); 2157 i( `F_ISSET ( key , DB_DBT_PARTIAL ) || 2158 `F_ISSET ( da , DB_DBT_PARTIAL )) { 2159 `__db_rx ( dbv , 2161 ( EINVAL ); 2163 i( da -> un < 1024 || 2164 da -> un < dbp -> pgsize || data->ulen % 1024 != 0) { 2165 `__db_rx ( dbv , "%s%s", 2168 ( EINVAL ); 2177 i(! `IS_INITIALIZED ( dbc && ( ags = DB_CURRENT || 2178 ags = DB_GET_RECNO || 2179 ags = DB_NEXT_DUP || fg= DB_PREV_DUP )) 2180 ( `__db_curv ( dbv )); 2183 i( `LF_ISSET ( DB_RMW ) && 2184 ( t = `__db_check_txn ( dbp , dbc -> txn , dbc-> lock , 0)) != 0) 2185 ( t ); 2188 } } 2197 $__db_cdy_o_ ( dbp , ags ) 2198 DB * dbp ; 2199 u_t32_t ags ; 2201 DB_ENV * dbv ; 2202 DB_THREAD_INFO * ; 2203 hd_check , t , t_t ; 2205 dbv = dbp ->dbenv; 2206 t = 0; 2208 `PANIC_CHECK ( dbv ); 2217 i( ags !0 && fg! DB_NOSYNC ) 2218 t = `__db_ ( dbv , "DB->close", 0); 2220 `ENV_ENTER ( dbv , ); 2223 hd_check = `IS_ENV_REPLICATED ( dbv ); 2224 i( hd_check && ( t_t = `__db_p_r ( dbp , 0, 0, 0)) != 0) { 2225 hd_check = 0; 2226 i( t == 0) 2227 t = t_t ; 2230 i(( t_t = `__db_cdy_o ( dbp , ags )!0 && t == 0) 2231 t = t_t ; 2234 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 2235 t = t_t ; 2237 `ENV_LEAVE ( dbv , ); 2238 ( t ); 2239 } } 2248 $__dbc_pg_ ( dbc , skey , pkey , da , ags ) 2249 DBC * dbc ; 2250 DBT * skey , * pkey , * da ; 2251 u_t32_t ags ; 2253 DB * dbp ; 2254 DB_ENV * dbv ; 2255 DB_THREAD_INFO * ; 2256 igne_a , t ; 2258 dbp = dbc ->dbp; 2259 dbv = dbp ->dbenv; 2261 `PANIC_CHECK ( dbv ); 2263 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ); 2264 `LF_CLR ( DB_IGNORE_LEASE ); 2265 i(( t = `__dbc_pg_g ( dbc , pkey , ags )) != 0 || 2266 ( t = `__dbc_g_g ( dbc , skey , da , ags )) != 0) 2267 ( t ); 2269 `ENV_ENTER ( dbv , ); 2270 t = `__dbc_pg ( dbc , skey , pkey , da , ags ); 2274 i( t =0 && `IS_REP_MASTER ( dbv && `IS_USING_LEASES (dbenv) && 2275 ! igne_a ) 2276 t = `__p_a_check ( dbv , 1); 2278 `ENV_LEAVE ( dbv , ); 2280 `__dbt_ur ( dbv , skey , pkey , da ); 2281 ( t ); 2282 } } 2289 $__dbc_pg_g ( dbc , pkey , ags ) 2290 DBC * dbc ; 2291 DBT * pkey ; 2292 u_t32_t ags ; 2294 DB * dbp ; 2295 DB_ENV * dbv ; 2296 t ; 2298 dbp = dbc ->dbp; 2299 dbv = dbp ->dbenv; 2301 i(! `F_ISSET ( dbp , DB_AM_SECONDARY )) { 2302 `__db_rx ( dbv , 2304 ( EINVAL ); 2307 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 2308 `__db_rx ( dbv , 2310 ( EINVAL ); 2313 `LF_ISSET (~ DB_RMW )) { 2314 DB_CONSUME : 2315 DB_CONSUME_WAIT : 2317 ( `__db_ ( dbv , "DBcursor->pget", 0)); 2318 DB_GET_BOTH : 2319 DB_GET_BOTH_RANGE : 2321 i( pkey = NULL ) { 2322 `__db_rx ( dbv , 2324 `LF_ISSET ( DB_GET_BOTH ) ? 2326 ( EINVAL ); 2328 i(( t = `__dbt_urcy ( dbv , pkey )) != 0) 2329 ( t ); 2340 i( pkey ! NULL && 2341 ( t = `__dbt_ ( dbp , "imy key", pkey , 0)) != 0) 2342 ( t ); 2345 i( pkey = NULL && ( ags & DB_OPFLAGS_MASK = DB_GET_BOTH ) { 2346 `__db_rx ( dbv , 2348 ( EINVAL ); 2351 } } 2360 $__dbc_put_ ( dbc , key , da , ags ) 2361 DBC * dbc ; 2362 DBT * key , * da ; 2363 u_t32_t ags ; 2365 DB * dbp ; 2366 DB_ENV * dbv ; 2367 DB_THREAD_INFO * ; 2368 t ; 2370 dbp = dbc ->dbp; 2371 dbv = dbp ->dbenv; 2373 `PANIC_CHECK ( dbv ); 2375 i(( t = `__dbc_put_g ( dbc , key , da , ags )) != 0) 2376 ( t ); 2378 `ENV_ENTER ( dbv , ); 2381 i(( t = `__db_check_txn ( dbp , dbc -> txn , dbc-> lock , 0)) != 0) 2382 r ; 2384 `DEBUG_LWRITE ( dbc , dbc-> txn , "DBcursor->put", 2385 ags = DB_KEYFIRST || fg= DB_KEYLAST || 2386 ags = DB_NODUPDATA || fg= DB_UPDATE_SECONDARY ? 2387 key : NULL , da , ags ); 2388 t = `__dbc_put ( dbc , key , da , ags ); 2390 r : `ENV_LEAVE ( dbv , ); 2391 `__dbt_ur ( dbv , key , NULL , da ); 2392 ( t ); 2393 } } 2400 $__dbc_put_g ( dbc , key , da , ags ) 2401 DBC * dbc ; 2402 DBT * key , * da ; 2403 u_t32_t ags ; 2405 DB * dbp ; 2406 DB_ENV * dbv ; 2407 key_ags , t ; 2409 dbp = dbc ->dbp; 2410 dbv = dbp ->dbenv; 2411 key_ags = 0; 2414 i( `DB_IS_READONLY ( dbp )) 2415 ( `__db_rdly ( dbv , "DBcursor->put")); 2418 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 2419 i( ags = DB_UPDATE_SECONDARY ) 2420 ags = DB_KEYLAST ; 2422 `__db_rx ( dbv , 2424 ( EINVAL ); 2428 i(( t = `__dbt_urcy ( dbv , da )) != 0) 2429 ( t ); 2432 ags ) { 2433 DB_AFTER : 2434 DB_BEFORE : 2435 dbp -> ty ) { 2436 DB_BTREE : 2437 DB_HASH : 2438 i(! `F_ISSET ( dbp , DB_AM_DUP )) 2439 r ; 2440 i( dbp -> dup_com ! NULL ) 2441 r ; 2443 DB_QUEUE : 2444 r ; 2445 DB_RECNO : 2446 i(! `F_ISSET ( dbp , DB_AM_RENUMBER )) 2447 r ; 2448 key_ags = key = NULL ? 0 : 1; 2450 DB_UNKNOWN : 2452 r ; 2455 DB_CURRENT : 2462 DB_NODUPDATA : 2463 i(! `F_ISSET ( dbp , DB_AM_DUPSORT )) 2464 r ; 2466 DB_KEYFIRST : 2467 DB_KEYLAST : 2468 key_ags = 1; 2469 i(( t = `__dbt_urcy ( dbv , key )) != 0) 2470 ( t ); 2473 r : ( `__db_ ( dbv , "DBcursor->put", 0)); 2481 i( key_ags && ( t = `__dbt_ ( dbp , "key", key , 0)) != 0) 2482 ( t ); 2483 i(( t = `__dbt_ ( dbp , "da", da , 0)) != 0) 2484 ( t ); 2495 i( key_ags && `F_ISSET ( key , DB_DBT_PARTIAL && key-> dn != 0) 2496 ( `__db_ ( dbv , "key DBT", 0)); 2502 i(! `IS_INITIALIZED ( dbc && ags ! DB_KEYFIRST && 2503 ags ! DB_KEYLAST && fg! DB_NODUPDATA ) 2504 ( `__db_curv ( dbv )); 2507 } } 2514 $__dbt_ ( dbp , me , dbt , check_thad ) 2515 cڡ DB * dbp ; 2516 cڡ * me ; 2517 cڡ DBT * dbt ; 2518 check_thad ; 2520 DB_ENV * dbv ; 2521 t ; 2523 dbv = dbp ->dbenv; 2532 i(( t = `__db_fchk ( dbv , me , dbt -> ags , DB_DBT_APPMALLOC | 2533 DB_DBT_MALLOC | DB_DBT_DUPOK | DB_DBT_REALLOC | 2534 DB_DBT_USERCOPY | DB_DBT_USERMEM | DB_DBT_PARTIAL )) != 0) 2535 ( t ); 2536 `F_ISSET ( dbt , DB_DBT_MALLOC | DB_DBT_REALLOC | 2537 DB_DBT_USERCOPY | DB_DBT_USERMEM )) { 2539 DB_DBT_MALLOC : 2540 DB_DBT_REALLOC : 2541 DB_DBT_USERCOPY : 2542 DB_DBT_USERMEM : 2545 ( `__db_ ( dbv , me , 1)); 2548 i( check_thad && `DB_IS_THREADED ( dbp ) && 2549 ! `F_ISSET ( dbt , DB_DBT_MALLOC | DB_DBT_REALLOC | 2550 DB_DBT_USERCOPY | DB_DBT_USERMEM )) { 2551 `__db_rx ( dbv , 2553 me ); 2554 ( EINVAL ); 2557 } } 2564 $__db_curv ( dbv ) 2565 cڡ DB_ENV * dbv ; 2567 `__db_rx ( dbv , 2569 ( EINVAL ); 2570 } } 2579 $__db_txn_auto_ ( dbv , txnidp ) 2580 DB_ENV * dbv ; 2581 DB_TXN ** txnidp ; 2589 i(* txnidp ! NULL ) { 2590 `__db_rx ( dbv , 2592 ( EINVAL ); 2595 i(! `TXN_ON ( dbv )) { 2596 `__db_rx ( dbv , 2598 ( EINVAL ); 2605 ( `__txn_beg ( dbv , NULL , txnidp , 0)); 2606 } } 2615 $__db_txn_auto_sve ( dbv , txn , nosync , t ) 2616 DB_ENV * dbv ; 2617 DB_TXN * txn ; 2618 nosync , t ; 2620 t_t ; 2626 i( t == 0) 2627 ( `__txn_comm ( txn , nosync ? DB_TXN_NOSYNC : 0)); 2629 i(( t_t = `__txn_abt ( txn )) != 0) 2630 ( `__db_nic ( dbv , t_t )); 2632 ( t ); 2633 } } 2642 $__dbt_urcy ( dbv , dbt ) 2643 DB_ENV * dbv ; 2644 DBT * dbt ; 2646 * buf ; 2647 t ; 2649 i( dbt = NULL || ! `F_ISSET (dbt, DB_DBT_USERCOPY || dbt-> size == 0 || 2650 dbt -> da ! NULL ) 2653 buf = NULL ; 2654 i(( t = `__os_umloc ( dbv , dbt -> size , & buf )) != 0 || 2655 ( t = dbv -> `dbt_urcy ( dbt , 0, buf , dbt-> size , 2656 DB_USERCOPY_GETDATA )) != 0) 2657 r ; 2658 dbt -> da = buf ; 2662 r : i( buf ! NULL ) { 2663 `__os_u ( dbv , buf ); 2664 dbt -> da = NULL ; 2667 ( t ); 2668 } } 2677 $__dbt_ur ( dbv , key , pkey , da ) 2678 DB_ENV * dbv ; 2679 DBT * key , * pkey , * da ; 2681 i( key ! NULL && 2682 `F_ISSET ( key , DB_DBT_USERCOPY && key-> da ! NULL ) { 2683 `__os_u ( dbv , key -> da ); 2684 key -> da = NULL ; 2686 i( pkey ! NULL && 2687 `F_ISSET ( pkey , DB_DBT_USERCOPY &&key-> da ! NULL ) { 2688 `__os_u ( dbv , pkey -> da ); 2689 pkey -> da = NULL ; 2691 i( da ! NULL && 2692 `F_ISSET ( da , DB_DBT_USERCOPY && da->d! NULL ) { 2693 `__os_u ( dbv , da ->data); 2694 da ->d NULL ; 2696 } } @../db/db_join.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_jo.h " 14 ~"dbc/b.h " 15 ~"dbc/lock.h " 17 __db_jo_o_ __P (( DBC *)); 18 __db_jo_cmp __P ((const *, const *)); 19 __db_jo_d __P (( DBC *, u_t32_t )); 20 __db_jo_g __P (( DBC *, DBT *, DBT *, u_t32_t )); 21 __db_jo_g_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 22 __db_jo_gxt __P (( DBC *, DBT *, DBT *, u_t32_t , u_int32_t)); 23 __db_jo_img __P (( DB *, 24 DB_TXN *, DB_LOCKER *, DBT *, DBT *, u_t32_t )); 25 __db_jo_put __P (( DBC *, DBT *, DBT *, u_t32_t )); 31 #SORTED_SET ( jc , n ((jc)-> j_curi [)]-> dbp -> dup_com ! NULL ) ) 71 $__db_jo ( imy , curi , db , ags ) 72 DB * imy ; 73 DBC ** curi , ** db ; 74 u_t32_t ags ; 76 DB_ENV * dbv ; 77 DBC * dbc ; 78 JOIN_CURSOR * jc ; 79 size_t ncurs , ns ; 80 u_t32_t i ; 81 t ; 83 dbv = imy ->dbenv; 84 dbc = NULL ; 85 jc = NULL ; 87 i(( t = `__os_oc ( dbv , 1, ( DBC ), & dbc )) != 0) 88 r ; 90 i(( t = `__os_oc ( dbv , 1, ( JOIN_CURSOR ), & jc )) != 0) 91 r ; 93 i(( t = `__os_mloc ( dbv , 256, & jc -> j_key . da )) != 0) 94 r ; 95 jc -> j_key . un = 256; 96 `F_SET (& jc -> j_key , DB_DBT_USERMEM ); 98 `F_SET (& jc -> j_rda , DB_DBT_REALLOC ); 100 jc -> j_curi = curi ; 101 * jc -> j_curi ! NULL ; jc->j_curslist++) 109 ncurs = ( size_t )( jc -> j_curi - curi ); 110 ns = ncurs + 1; 152 jc -> j_curi = NULL ; 153 jc -> j_wkcurs = NULL ; 154 jc -> j_fdupcurs = NULL ; 155 jc -> j_exhaued = NULL ; 157 i(( t = `__os_oc ( dbv , ns , ( DBC *), 158 & jc -> j_curi )) != 0) 159 r ; 160 i(( t = `__os_oc ( dbv , ns , ( DBC *), 161 & jc -> j_wkcurs )) != 0) 162 r ; 163 i(( t = `__os_oc ( dbv , ns , ( DBC *), 164 & jc -> j_fdupcurs )) != 0) 165 r ; 166 i(( t = `__os_oc ( dbv , ns , ( u_t8_t ), 167 & jc -> j_exhaued )) != 0) 168 r ; 169 i = 0; curi [i] ! NULL ; i++) { 170 jc -> j_curi [ i ] = curi [i]; 171 jc -> j_wkcurs [ i ] = NULL ; 172 jc -> j_fdupcurs [ i ] = NULL ; 173 jc -> j_exhaued [ i ] = 0; 175 jc -> j_ncurs = ( u_t32_t ) ncurs ; 181 i(! `LF_ISSET ( DB_JOIN_NOSORT )) 182 `qst ( jc -> j_curi , ncurs , ( DBC *), __db_jo_cmp ); 195 i(( t = 196 `__dbc_dup ( jc -> j_curi [0], jc-> j_wkcurs , DB_POSITION )) != 0) 197 r ; 199 dbc -> o = dbc-> c_o = __db_jo_o_ ; 200 dbc -> d = dbc-> c_d = __db_jo_d ; 201 dbc -> g = dbc-> c_g = __db_jo_g_ ; 202 dbc -> put = dbc-> c_put = __db_jo_put ; 203 dbc -> = ( DBC_INTERNAL *) jc ; 204 dbc -> dbp = imy ; 205 jc -> j_imy = imy ; 208 dbc -> txn = curi [0]->txn; 210 * db = dbc ; 212 `MUTEX_LOCK ( dbv , imy -> mux ); 213 `TAILQ_INSERT_TAIL (& imy -> jo_queue , dbc , lks ); 214 `MUTEX_UNLOCK ( dbv , imy -> mux ); 218 r : i( jc ! NULL ) { 219 i( jc -> j_curi ! NULL ) 220 `__os_ ( dbv , jc -> j_curi ); 221 i( jc -> j_wkcurs ! NULL ) { 222 i( jc -> j_wkcurs [0] ! NULL ) 223 () `__dbc_o ( jc -> j_wkcurs [0]); 224 `__os_ ( dbv , jc -> j_wkcurs ); 226 i( jc -> j_fdupcurs ! NULL ) 227 `__os_ ( dbv , jc -> j_fdupcurs ); 228 i( jc -> j_exhaued ! NULL ) 229 `__os_ ( dbv , jc -> j_exhaued ); 230 `__os_ ( dbv , jc ); 232 i( dbc ! NULL ) 233 `__os_ ( dbv , dbc ); 234 ( t ); 235 } } 242 $__db_jo_o_ ( dbc ) 243 DBC * dbc ; 245 DB_ENV * dbv ; 246 DB_THREAD_INFO * ; 247 DB * dbp ; 248 hd_check , t , t_t ; 250 dbp = dbc ->dbp; 251 dbv = dbp ->dbenv; 253 `PANIC_CHECK ( dbv ); 255 `ENV_ENTER ( dbv , ); 257 hd_check = `IS_ENV_REPLICATED ( dbv ); 258 i( hd_check && 259 ( t = `__db_p_r ( dbp , 1, 0, dbc -> txn ! NULL )) != 0) { 260 hd_check = 0; 261 r ; 264 t = `__db_jo_o ( dbc ); 266 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 267 t = t_t ; 269 r : `ENV_LEAVE ( dbv , ); 270 ( t ); 271 } } 274 $__db_jo_put ( dbc , key , da , ags ) 275 DBC * dbc ; 276 DBT * key ; 277 DBT * da ; 278 u_t32_t ags ; 280 `PANIC_CHECK ( dbc -> dbp -> dbv ); 282 `COMPQUIET ( key , NULL ); 283 `COMPQUIET ( da , NULL ); 284 `COMPQUIET ( ags , 0); 285 ( EINVAL ); 286 } } 289 $__db_jo_d ( dbc , ags ) 290 DBC * dbc ; 291 u_t32_t ags ; 293 `PANIC_CHECK ( dbc -> dbp -> dbv ); 295 `COMPQUIET ( ags , 0); 296 ( EINVAL ); 297 } } 304 $__db_jo_g_ ( dbc , key , da , ags ) 305 DBC * dbc ; 306 DBT * key , * da ; 307 u_t32_t ags ; 309 DB * dbp ; 310 DB_ENV * dbv ; 311 DB_THREAD_INFO * ; 312 u_t32_t hd_check , ve_ags ; 313 t , t_t ; 315 dbp = dbc ->dbp; 316 dbv = dbp ->dbenv; 319 ve_ags = ags ; 321 `PANIC_CHECK ( dbv ); 323 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW )) { 324 i(! `LOCKING_ON ( dbv )) 325 ( `__db_l ( dbv , "DBC->get")); 326 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 329 ags ) { 331 DB_JOIN_ITEM : 334 ( `__db_ ( dbv , "DBC->get", 0)); 348 i( `F_ISSET ( key , DB_DBT_PARTIAL )) { 349 `__db_rx ( dbv , 351 ( EINVAL ); 354 `ENV_ENTER ( dbv , ); 356 hd_check = `IS_ENV_REPLICATED ( dbv ); 357 i( hd_check && 358 ( t = `__db_p_r ( dbp , 1, 0, dbc -> txn ! NULL )) != 0) { 359 hd_check = 0; 360 r ; 364 ags = ve_ags ; 366 t = `__db_jo_g ( dbc , key , da , ags ); 368 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 369 t = t_t ; 371 r : `ENV_LEAVE ( dbv , ); 372 `__dbt_ur ( dbv , key , NULL , NULL); 373 ( t ); 374 } } 377 $__db_jo_g ( dbc , key_g , da_g , ags ) 378 DBC * dbc ; 379 DBT * key_g , * da_g ; 380 u_t32_t ags ; 382 DB * dbp ; 383 DBC * ; 384 DBT * key_n , key_n_mem ; 385 DB_ENV * dbv ; 386 JOIN_CURSOR * jc ; 387 db_mage_da , t ; 388 u_t32_t i , j , ݔi , mods ; 390 dbp = dbc ->dbp; 391 dbv = dbp ->dbenv; 392 jc = ( JOIN_CURSOR *) dbc -> ; 394 ݔi = `LF_ISSET ( DB_OPFLAGS_MASK ); 400 mods = `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 408 i( `F_ISSET ( key_g , 409 DB_DBT_MALLOC | DB_DBT_USERCOPY | DB_DBT_USERMEM )) { 411 key_n = & key_n_mem ; 412 `memt ( key_n , 0, ( DBT )); 418 key_n = key_g ; 420 i( `F_ISSET ( key_g , DB_DBT_USERCOPY )) 421 key_g -> da = NULL ; 427 i( `F_ISSET ( jc , JOIN_RETRY )) 428 mekey ; 429 `F_CLR ( jc , JOIN_RETRY ); 431 y : t = `__dbc_g ( jc -> j_wkcurs [0], &jc-> j_key , key_n , 432 mods | ( jc -> j_exhaued [0] ? DB_NEXT_DUP : DB_CURRENT )); 434 i( t = DB_BUFFER_SMALL ) { 435 jc -> j_key . un <<= 1; 436 i(( t = `__os_loc ( dbv , 437 jc -> j_key . un , &jc->j_key. da )) != 0) 438 mem_r ; 439 y ; 447 i( t != 0) 448 r ; 457 i = 1; i < jc -> j_ncurs ; i++) { 458 i( jc -> j_fdupcurs [ i ] ! NULL && 459 ( t = `__dbc_o ( jc -> j_fdupcurs [ i ])) != 0) 460 r ; 461 jc -> j_fdupcurs [ i ] = NULL ; 473 i( jc -> j_curi [1] = NULL ) 474 jc -> j_exhaued [0] = 1; 476 jc -> j_exhaued [0] = 0; 479 i = 1; i < jc -> j_ncurs ; i++) { 480 `DB_ASSERT ( dbv , jc -> j_curi [ i ] ! NULL ); 481 i( jc -> j_wkcurs [ i ] = NULL ) 483 i(( t = `__dbc_dup ( jc -> j_curi [ i ], 484 & jc -> j_wkcurs [ i ], DB_POSITION )) != 0) 485 r ; 487 y2 : = jc -> j_wkcurs [ i ]; 489 i(( t = `__db_jo_gxt ( , & jc -> j_key , key_n , 490 jc -> j_exhaued [ i ], mods )= DB_NOTFOUND ) { 502 -- i ; 503 jc -> j_exhaued [ i ] = 1; 505 i( i == 0) { 506 j = 1; jc -> j_wkcurs [j] ! NULL ; j++) { 535 i(( t = `__dbc_o ( 536 jc -> j_wkcurs [ j ])) != 0) 537 r ; 538 i(! `SORTED_SET ( jc , 0) || 539 ! `SORTED_SET ( jc , j ) || 540 jc -> j_fdupcurs [ j ] = NULL ) 545 jc -> j_wkcurs [ j ] = NULL ; 548 i(( `__dbc_dup ( 549 jc -> j_fdupcurs [ j ], 550 & jc -> j_wkcurs [ j ], 551 DB_POSITION )) != 0) 552 r ; 553 jc -> j_exhaued [ j ] = 0; 555 y ; 564 j = i + 1; 565 jc -> j_wkcurs [ j ] ! NULL ; 566 j ++) { 567 i(( t = 568 `__dbc_o ( jc -> j_wkcurs [ j ])) != 0) 569 r ; 570 jc -> j_exhaued [ j ] = 0; 571 i( jc -> j_fdupcurs [ j ] = NULL ) 572 jc -> j_wkcurs [ j ] = NULL ; 573 i(( t = `__dbc_dup ( jc -> j_fdupcurs [ j ], 574 & jc -> j_wkcurs [ j ], DB_POSITION )) != 0) 575 r ; 577 y2 ; 581 i( t = DB_BUFFER_SMALL ) { 582 jc -> j_key . un <<= 1; 583 i(( t = `__os_loc ( dbv , jc -> j_key . un , 584 & jc -> j_key . da )) != 0) { 585 mem_r : `__db_rx ( dbv , 587 ( u_lg ) jc -> j_key . un ); 588 r ; 590 y2 ; 593 i( t != 0) 594 r ; 606 i( i + 1 ! jc -> j_ncurs ) 607 jc -> j_exhaued [ i ] = 0; 609 jc -> j_exhaued [ i ] = 1; 618 i( `SORTED_SET ( jc , i && jc-> j_fdupcurs [i] = NULL && ( t = 619 `__dbc_dup ( , & jc -> j_fdupcurs [ i ], DB_POSITION )) != 0) 620 r ; 623 r : i( t != 0) 624 ( t ); 627 mekey : 631 i(( t = `__dbc_g ( jc -> j_wkcurs [0], 632 & jc -> j_key , key_n , DB_CURRENT | mods )) != 0) 633 ( t ); 634 `F_CLR ( jc , JOIN_RETRY ); 644 `DB_ASSERT ( dbv , `F_ISSET ( key_g , DB_DBT_USERMEM | DB_DBT_MALLOC | 645 DB_DBT_USERCOPY || key_n = key_g ); 647 i(( `F_ISSET ( key_g , DB_DBT_USERMEM | DB_DBT_MALLOC | 648 DB_DBT_USERCOPY )) && 649 ( t = `__db_tcy ( dbv , 650 key_g , key_n -> da , key_n-> size , NULL , NULL)) != 0) { 656 `F_SET ( jc , JOIN_RETRY ); 657 ( t ); 664 i( ݔi = DB_JOIN_ITEM ) 677 i(! `F_ISSET ( da_g , DB_DBT_MALLOC | DB_DBT_REALLOC | 678 DB_DBT_USERMEM | DB_DBT_USERCOPY )) 679 db_mage_da = 1; 681 db_mage_da = 0; 682 i(( t = `__db_jo_img ( jc -> j_imy , 683 jc -> j_curi [0]-> txn , jc->j_curi[0]-> lock , key_n , 684 db_mage_da ? & jc -> j_rda : da_g , mods )) != 0) { 685 i( t = DB_NOTFOUND ) { 686 i( `LF_ISSET ( DB_READ_UNCOMMITTED ) || 687 ( jc -> j_curi [0]-> txn ! NULL && `F_ISSET ( 688 jc -> j_curi [0]-> txn , TXN_READ_UNCOMMITTED ))) 689 y ; 697 t = `__db_cdy_cru ( jc -> j_imy ); 705 `F_SET ( jc , JOIN_RETRY ); 707 i( db_mage_da && t == 0) { 708 da_g -> da = jc -> j_rda .data; 709 da_g -> size = jc -> j_rda .size; 712 ( t ); 713 } } 722 $__db_jo_o ( dbc ) 723 DBC * dbc ; 725 DB * dbp ; 726 DB_ENV * dbv ; 727 JOIN_CURSOR * jc ; 728 t , t_t ; 729 u_t32_t i ; 731 jc = ( JOIN_CURSOR *) dbc -> ; 732 dbp = dbc ->dbp; 733 dbv = dbp ->dbenv; 734 t = t_t = 0; 741 `MUTEX_LOCK ( dbv , dbp -> mux ); 742 `TAILQ_REMOVE (& dbp -> jo_queue , dbc , lks ); 743 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 745 `PANIC_CHECK ( dbv ); 758 i = 0; i < jc -> j_ncurs ; i++) { 759 i( jc -> j_wkcurs [ i ] ! NULL && 760 ( t_t = `__dbc_o ( jc -> j_wkcurs [ i ])) != 0) 761 t = t_t ; 762 i( jc -> j_fdupcurs [ i ] ! NULL && 763 ( t_t = `__dbc_o ( jc -> j_fdupcurs [ i ])) != 0) 764 t = t_t ; 767 `__os_ ( dbv , jc -> j_exhaued ); 768 `__os_ ( dbv , jc -> j_curi ); 769 `__os_ ( dbv , jc -> j_wkcurs ); 770 `__os_ ( dbv , jc -> j_fdupcurs ); 771 `__os_ ( dbv , jc -> j_key . da ); 772 i( jc -> j_rda . da ! NULL ) 773 `__os_u ( dbv , jc -> j_rda . da ); 774 `__os_ ( dbv , jc ); 775 `__os_ ( dbv , dbc ); 777 ( t ); 778 } } 796 $__db_jo_gxt ( dbc , key , da , exhaued , mods ) 797 DBC * dbc ; 798 DBT * key , * da ; 799 u_t32_t exhaued , mods ; 801 t , cmp ; 802 DB * dbp ; 803 DBT lda ; 804 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 806 dbp = dbc ->dbp; 807 func = ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 809 exhaued ) { 815 `memt (& lda , 0, ( DBT )); 816 `F_SET (& lda , DB_DBT_MALLOC ); 817 i(( t = `__dbc_g ( dbc , 818 key , & lda , mods | DB_CURRENT )) != 0) 820 cmp = `func ( dbp , da , & lda ); 821 i( cmp == 0) { 827 i(( t = `__db_tcy ( dbp -> dbv , da , lda .data, 828 lda . size , & da ->data, &data->size)) != 0) 829 ( t ); 830 `__os_u ( dbp -> dbv , lda . da ); 839 `__os_u ( dbp -> dbv , lda . da ); 842 t = `__dbc_g ( dbc , key , da , mods | DB_GET_BOTHC ); 845 t = EINVAL ; 849 ( t ); 850 } } 857 $__db_jo_cmp ( a , b ) 858 cڡ * a , * b ; 860 DBC * db , * dbcb ; 861 db_o_t coua , coub ; 863 db = *(( DBC * cڡ *) a ); 864 dbcb = *(( DBC * cڡ *) b ); 866 i( `__dbc_cou ( db , & coua ) != 0 || 867 `__dbc_cou ( dbcb , & coub ) != 0) 870 (() coua - () coub ); 871 } } 879 $__db_jo_img ( dbp , txn , lock , key , da , ags ) 880 DB * dbp ; 881 DB_TXN * txn ; 882 DB_LOCKER * lock ; 883 DBT * key , * da ; 884 u_t32_t ags ; 886 DBC * dbc ; 887 u_t32_t rmw ; 888 t , t_t ; 890 i(( t = `__db_curs_t ( dbp , 891 txn , dbp -> ty , PGNO_INVALID , 0, lock , & dbc )) != 0) 892 ( t ); 900 rmw = `LF_ISSET ( DB_RMW ); 901 i( `LF_ISSET ( DB_READ_UNCOMMITTED ) || 902 ( txn ! NULL && `F_ISSET xn, TXN_READ_UNCOMMITTED ))) 903 `F_SET ( dbc , DBC_READ_UNCOMMITTED ); 905 i( `LF_ISSET ( DB_READ_COMMITTED ) || 906 ( txn ! NULL && `F_ISSET xn, TXN_READ_COMMITTED ))) 907 `F_SET ( dbc , DBC_READ_COMMITTED ); 909 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 910 `DB_ASSERT ( dbp -> dbv , ags == 0); 912 `F_SET ( dbc , DBC_TRANSIENT ); 919 `SET_RET_MEM ( dbc , dbp ); 921 t = `__dbc_g ( dbc , key , da , DB_SET | rmw ); 923 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 924 t = t_t ; 926 ( t ); 927 } } 937 $__db_cdy_cru ( dbp ) 938 DB * dbp ; 940 `__db_rx ( dbp -> dbv , 942 ( DB_SECONDARY_BAD ); 943 } } @../db/db_meta.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/lock.h " 49 ~"dbc/mp.h " 50 ~"dbc/db_am.h " 52 __db__ma __P (( DB *, *, db_pgno_t , u_t32_t )); 53 #ifde HAVE_FTRUNCATE 54 __db_li_st __P (( pgli *, u_t32_t )); 55 __db_pglicmp __P ((const *, const *)); 56 __db_un_li __P (( DBC *, DBMETA *, 57 PAGE *, db_pgno_t *, u_t32_t , u_int32_t)); 67 $__db__ma ( dbp , p , pgno , pgty ) 68 DB * dbp ; 69 * p ; 70 db_pgno_t pgno ; 71 u_t32_t pgty ; 73 DB_LSN ve_l ; 74 DBMETA * ma ; 76 ma = ( DBMETA *) p ; 77 ve_l = ma -> l ; 78 `memt ( ma , 0, ( DBMETA )); 79 ma -> l = ve_l ; 80 ma -> gesize = dbp -> pgsize ; 81 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 82 `FLD_SET ( ma -> maags , DBMETA_CHKSUM ); 83 ma -> pgno =gno; 84 ma -> ty = ( u_t8_t ) pgty ; 85 } } 94 $__db_w ( dbc , ty , gp ) 95 DBC * dbc ; 96 u_t32_t ty ; 97 PAGE ** gp ; 99 DB_ENV * dbv ; 100 DBMETA * ma ; 101 DB * dbp ; 102 DB_LOCK mock ; 103 DB_LSN l ; 104 DB_MPOOLFILE * mpf ; 105 PAGE * h ; 106 db_pgno_t ϡ , * li , pgno , wxt ; 107 exnd , t , t_t ; 109 ma = NULL ; 110 dbp = dbc ->dbp; 111 dbv = dbp ->dbenv; 112 mpf = dbp ->mpf; 113 h = NULL ; 114 wxt = PGNO_INVALID ; 116 pgno = PGNO_BASE_MD ; 117 i(( t = `__db_lg ( dbc , 118 LCK_ALWAYS , pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 119 r ; 120 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 121 DB_MPOOL_DIRTY , & ma )) != 0) 122 r ; 123 ϡ = ma -> ϡ_pgno ; 124 i( ma -> = PGNO_INVALID ) { 125 i( `FLD_ISSET ( ty , P_DONTEXTEND )) { 126 * gp = NULL ; 127 r ; 129 ϡ = pgno = ma -> ϡ_pgno + 1; 130 `ZERO_LSN ( l ); 131 exnd = 1; 133 pgno = ma -> ; 134 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 135 DB_MPOOL_DIRTY , & h )) != 0) 136 r ; 143 wxt = h -> xt_pgno ; 144 l = h ->lsn; 145 exnd = 0; 146 `DB_ASSERT ( dbv , `TYPE ( h = P_INVALID ); 148 i( `TYPE ( h ! P_INVALID ) { 149 `__db_rx ( dbv , 151 dbp -> ame , ( u_lg ) `PGNO ( h ), (u_lg) `TYPE (h)); 152 ( `__db_nic ( dbv , EINVAL )); 157 `FLD_CLR ( ty , P_DONTEXTEND ); 164 i( `DBC_LOGGING ( dbc )) { 165 i(( t = `__db_pg_loc_log ( dbp , dbc -> txn , & `LSN ( ma ), 0, 166 & `LSN ( ma ), PGNO_BASE_MD , & l , 167 pgno , ( u_t32_t ) ty , wxt , ma -> ϡ_pgno )) != 0) 168 r ; 170 `LSN_NOT_LOGGED ( `LSN ( ma )); 172 ma -> = wxt ; 174 i( exnd == 1) { 175 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 176 DB_MPOOL_NEW , & h )) != 0) 177 r ; 178 `DB_ASSERT ( dbv , ϡ = pgno ); 179 ma -> ϡ_pgno = pgno ; 180 `ZERO_LSN ( h -> l ); 181 h -> pgno =gno; 183 `LSN ( h LSN( ma ); 185 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 186 ma = NULL ; 187 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 188 t = t_t ; 189 i( t != 0) 190 r ; 192 ty ) { 193 P_BTREEMETA : 194 P_HASHMETA : 195 P_QAMMETA : 196 `__db__ma ( dbp , h , h-> pgno , ty ); 199 `P_INIT ( h , dbp -> pgsize , 200 h -> pgno , PGNO_INVALID , PGNO_INVALID, 0, ty ); 205 #ifde HAVE_FTRUNCATE 206 i( exnd == 0) { 207 u_t32_t ms = 0; 209 i(( t = `__memp_g_li ( dbp -> mpf , & ms , & li )) != 0) 210 r ; 211 i( ms != 0) { 212 `DB_ASSERT ( dbv , h -> pgno = li [0]); 213 `memmove ( li , &li[1], ( ms - 1) * (*list)); 214 i(( t = `__memp_exnd_li ( 215 dbp -> mpf , ms - 1, & li )) != 0) 216 r ; 220 `COMPQUIET ( li , NULL ); 231 i( ty ! P_OVERFLOW && ! `F_ISSET ( dbc , DBC_OPD ) && 232 `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED && dbc-> txn ! NULL ) { 233 i(( t = `__db_lg ( dbc , 0, 234 h -> pgno , DB_LOCK_WWRITE , 0, & mock )) != 0) 235 r ; 238 * gp = h ; 241 r : i( h ! NULL ) 242 () `__memp_ut ( mpf , h , dbc -> iܙy ); 243 i( ma ! NULL ) 244 () `__memp_ut ( mpf , ma , dbc -> iܙy ); 245 () `__TLPUT ( dbc , mock ); 246 ( t ); 247 } } 256 $__db_ ( dbc , h ) 257 DBC * dbc ; 258 PAGE * h ; 260 DBMETA * ma ; 261 DB * dbp ; 262 DBT ddbt , ldbt ; 263 DB_LOCK mock ; 264 DB_LSN * lp ; 265 DB_MPOOLFILE * mpf ; 266 PAGE * ev ; 267 db_pgno_t ϡ_pgno , xt_pgno , pgno , ev_pgno ; 268 u_t32_t lag ; 269 t , t_t ; 270 #ifde HAVE_FTRUNCATE 271 db_pgno_t * li , * ; 272 u_t32_t m , posi , t ; 273 do_un ; 276 dbp = dbc ->dbp; 277 mpf = dbp ->mpf; 278 ev_pgno = PGNO_INVALID ; 279 ma = NULL ; 280 ev = NULL ; 281 #ifde HAVE_FTRUNCATE 282 = NULL ; 283 m = 0; 284 do_un = 0; 297 pgno = PGNO_BASE_MD ; 298 i(( t = `__db_lg ( dbc , 299 LCK_ALWAYS , pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 300 r ; 303 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 304 #ifde HAVE_FTRUNCATE 307 DB_MPOOL_DIRTY , 309 & ma )) != 0) 310 r1 ; 312 ϡ_pgno = ma ->last_pgno; 313 xt_pgno = ma -> ; 318 lp = & `LSN ( ma ); 320 `DB_ASSERT ( dbp -> dbv , h -> pgno ! xt_pgno ); 322 #ifde HAVE_FTRUNCATE 329 i(( t = `__memp_g_li ( mpf , & m , & li )) != 0) 330 r1 ; 331 i( li = NULL ) 332 no_st ; 334 i( h -> pgno ! ϡ_pgno ) { 340 posi = 0; 341 i( m != 0) { 342 `__db_li_pos ( h -> pgno , li , m , & posi ); 344 `DB_ASSERT ( dbp -> dbv , h -> pgno ! li [ posi ]); 347 i( posi !0 || h -> pgno > li [0]) 348 ev_pgno = li [ posi ]; 352 i(( t = `__memp_exnd_li ( mpf , m + 1, & li )) != 0) 353 ( t ); 354 i( ev_pgno ! PGNO_INVALID ) 355 = & li [ posi + 1]; 357 = li ; 358 i( m !0 && posi !=elem) 359 `memmove ( + 1,p, 360 ( size_t )(( u_t8_t *)& li [ m ] - (u_t8_t*) )); 361 * = h -> pgno ; 362 } i( m != 0) { 364 = & li [ m - 1];p >=ist;p--) 365 i(-- ϡ_pgno !* ) 367 i( < li || ϡ_pgno < h -> pgno - 1) 368 do_un = 1; 369 ϡ_pgno = ma ->last_pgno; 372 no_st : 373 i( ev_pgno = PGNO_INVALID ) { 374 i(( t = `__memp_dty ( mpf , 375 & ma , dbc -> txn , dbc-> iܙy , 0)) != 0) 376 r1 ; 377 lp = & `LSN ( ma ); 379 pgno = ev_pgno ; 380 i(( t = `__memp_fg ( mpf , 381 & pgno , dbc -> txn , DB_MPOOL_DIRTY , & ev )) != 0) 382 r1 ; 383 xt_pgno = `NEXT_PGNO ( ev ); 384 lp = & `LSN ( ev ); 393 i( `DBC_LOGGING ( dbc )) { 394 `memt (& ldbt , 0, (ldbt)); 395 ldbt . da = h ; 396 ldbt . size = `P_OVERHEAD ( dbp ); 403 lag = 0; 404 #ifde HAVE_FTRUNCATE 405 i( do_un =0 && h -> pgno = ϡ_pgno ) 406 lag = DB_FLUSH ; 408 h -> ty ) { 409 P_HASH : 410 P_IBTREE : 411 P_IRECNO : 412 P_LBTREE : 413 P_LRECNO : 414 P_LDUP : 415 i( h -> s > 0) { 416 ldbt . size + h -> s * ( db_dx_t ); 417 ddbt . da = ( u_t8_t *) h + `HOFFSET (h); 418 ddbt . size = dbp -> pgsize - `HOFFSET ( h ); 419 i(( t = `__db_pg_da_log ( dbp , dbc -> txn , 420 lp , lag , 421 h -> pgno , lp ,gno, 422 & ldbt , xt_pgno , ϡ_pgno , & ddbt )) != 0) 423 r1 ; 424 logged ; 427 P_HASHMETA : 428 ldbt . size = ( HMETA ); 430 P_BTREEMETA : 431 ldbt . size = ( BTMETA ); 433 P_OVERFLOW : 434 ldbt . size + `OV_LEN ( h ); 437 `DB_ASSERT ( dbp -> dbv , h -> ty ! P_QAMDATA ); 440 i(( t = `__db_pg__log ( dbp , 441 dbc -> txn , lp , lag , h -> pgno , 442 lp , pgno , & ldbt , xt_pgno , ϡ_pgno )) != 0) 443 r1 ; 445 `LSN_NOT_LOGGED (* lp ); 447 logged : 448 #ifde HAVE_FTRUNCATE 449 i( do_un ) { 450 t = ( u_t32_t ( - li ) + 1; 451 ma -> ϡ_pgno --; 452 t = `__db_un_li ( 453 dbc , ma , h , li , t , m ); 454 h = NULL ; 455 } i( h -> pgno = ϡ_pgno ) { 456 `LSN ( h * lp ; 457 `P_INIT ( h , dbp -> pgsize , 458 h -> pgno , PGNO_INVALID , xt_pgno , 0, P_INVALID ); 459 i(( t = `__memp_ut ( mpf , h , DB_PRIORITY_VERY_LOW )) != 0) 460 r1 ; 461 h = NULL ; 463 i(( t = `__memp_run ( mpf , ϡ_pgno , 0)) != 0) 464 r1 ; 465 `DB_ASSERT ( dbp -> dbv , ma -> pgno = PGNO_BASE_MD ); 466 ma -> ϡ_pgno --; 467 h = NULL ; 476 i(( t = `__memp_dty ( mpf , 477 & h , dbc -> txn , dbc-> iܙy , 0)) != 0) 478 r1 ; 479 `LSN ( h * lp ; 480 `P_INIT ( h , dbp -> pgsize , 481 h -> pgno , PGNO_INVALID , xt_pgno , 0, P_INVALID ); 482 #ifde DIAGNOSTIC 483 `memt (( u_t8_t * h + `P_OVERHEAD ( dbp ), 484 CLEAR_BYTE , dbp -> pgsize - `P_OVERHEAD (dbp)); 486 i( ev_pgno = PGNO_INVALID ) 487 ma -> = h -> pgno ; 489 `NEXT_PGNO ( ev h -> pgno ; 493 r1 : i( ma ! NULL && ( t_t = 494 `__memp_ut ( mpf , ( PAGE *) ma , dbc -> iܙy )!0 && t == 0) 495 t = t_t ; 496 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 497 t = t_t ; 498 i( ev !( PAGE * ma &&v ! NULL && 499 ( t_t = `__memp_ut ( mpf , ev , dbc -> iܙy )!0 && t == 0) 500 t = t_t ; 503 r : i( h ! NULL && 504 ( t_t = `__memp_ut ( mpf , h , dbc -> iܙy )!0 && t == 0) 505 t = t_t ; 511 ( t ); 512 } } 514 #ifde HAVE_FTRUNCATE 525 $__db_li_pos ( pgno , li , m , po ) 526 db_pgno_t pgno ; 527 db_pgno_t * li ; 528 u_t32_t m ; 529 u_t32_t * po ; 531 u_t32_t ba , dx , lim ; 533 dx = 0; 534 ba = 0, lim = m ;im != 0;im >>= 1) { 535 dx = ba + ( lim >> 1); 536 i( pgno = li [ dx ]) { 537 * po = dx ; 540 i( pgno > li [ dx ]) { 541 ba = dx + 1; 542 -- lim ; 545 i( ba != 0) 546 ba --; 547 * po = ba ; 549 } } 552 $__db_pglicmp ( a , b ) 553 cڡ * a , * b ; 555 pgli * , * bp ; 557 = ( pgli *) a ; 558 bp = ( pgli *) b ; 560 (( -> pgno > bp ->pgno) ? 1 : (ap->pgno < bp->pgno) ? -1: 0); 561 } } 567 $__db_li_st ( li , ms ) 568 pgli * li ; 569 u_t32_t ms ; 571 `qst ( li , ( size_t ) ms , ( pgli ), __db_pglicmp ); 572 } } 584 $__db_pg_un ( dbp , txn , li , c_da , mp , ϡ_pgno , lp , _covy ) 585 DB * dbp ; 586 DB_TXN * txn ; 587 pgli * li ; 588 DB_COMPACT * c_da ; 589 u_t32_t * mp ; 590 db_pgno_t * ϡ_pgno ; 591 DB_LSN * lp ; 592 _covy ; 594 DB_MPOOLFILE * mpf ; 595 PAGE * h ; 596 pgli * ; 597 db_pgno_t pgno ; 598 u_t32_t ms ; 599 t ; 601 t = 0; 603 mpf = dbp ->mpf; 604 ms = * mp ; 606 `__db_li_st ( li , ms ); 609 pgno = * ϡ_pgno ; 610 = & li [ ms - 1]; 611 ms != 0) { 612 i( -> pgno !=gno) 614 pgno --; 615 ms --; 616 --; 625 = li ;< &li[ ms ];p++) { 626 i(( t = `__memp_fg ( mpf , & -> pgno , txn , 0, & h )) != 0) { 628 i( _covy && t = DB_PAGE_NOTFOUND ) { 629 t = 0; 632 r ; 634 i(! _covy || `LOG_COMPARE (& `LSN ( h ), & -> l ) == 0) { 635 i(( t = `__memp_dty ( mpf , 636 & h , txn , dbp -> iܙy , 0)) != 0) { 637 () `__memp_ut ( mpf , h , dbp -> iܙy ); 638 r ; 640 i( =& li [ ms - 1]) 641 `NEXT_PGNO ( h PGNO_INVALID ; 643 `NEXT_PGNO ( h [1]. pgno ; 644 `DB_ASSERT ( mpf -> dbv , `NEXT_PGNO ( h < * ϡ_pgno ); 646 `LSN ( h * lp ; 648 i(( t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) 649 r ; 652 i( pgno !* ϡ_pgno ) { 653 i(( t = `__memp_run ( mpf , 654 pgno + 1, _covy ? MP_TRUNC_RECOVER : 0)) != 0) 655 r ; 656 i( c_da ) 657 c_da -> com_ges_und +* ϡ_pgno - pgno ; 658 * ϡ_pgno = pgno ; 660 * mp = ms ; 662 r : ( t ); 663 } } 675 $__db__un ( dbp , txn , ags , c_da , lip , mp , ϡ_pgn ) 676 DB * dbp ; 677 DB_TXN * txn ; 678 u_t32_t ags ; 679 DB_COMPACT * c_da ; 680 pgli ** lip ; 681 u_t32_t * mp ; 682 db_pgno_t * ϡ_pgn ; 684 DBC * dbc ; 685 DB_ENV * dbv ; 686 DBMETA * ma ; 687 DBT ddbt ; 688 DB_LOCK mock ; 689 DB_LSN nu_l ; 690 DB_MPOOLFILE * mpf ; 691 PAGE * h ; 692 db_pgno_t pgno ; 693 u_t32_t ms ; 694 pgli * li , * ; 695 t , t_t ; 696 size_t size ; 698 `COMPQUIET ( ags , 0); 699 li = NULL ; 700 ma = NULL ; 701 dbv = dbp ->dbenv; 702 mpf = dbp ->mpf; 703 h = NULL ; 704 ms = 0; 705 i( lip ! NULL ) { 706 * lip = NULL ; 707 `DB_ASSERT ( dbv , mp ! NULL ); 708 * mp = 0; 711 i(( t = `__db_curs ( dbp , txn , & dbc , DB_WRITELOCK )) != 0) 712 ( t ); 714 pgno = PGNO_BASE_MD ; 715 i(( t = `__db_lg ( dbc , 716 LCK_ALWAYS , pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 717 r ; 718 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 719 DB_MPOOL_DIRTY , & ma )) != 0) 720 r ; 722 i( ϡ_pgn ! NULL ) 723 * ϡ_pgn = ma -> ϡ_pgno ; 724 i(( pgno = ma -> = PGNO_INVALID ) 725 de ; 727 size = 128; 728 i(( t = `__os_mloc ( dbv , size * (* li ), &list)) != 0) 729 r ; 730 = li ; 733 i( =& li [ size ]) { 734 size *= 2; 735 i(( t = `__os_loc ( dbv , 736 size * (* li ), &list)) != 0) 737 r ; 738 = & li [ size / 2]; 740 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & h )) != 0) 741 r ; 743 -> pgno =gno; 744 -> l = `LSN ( h ); 745 pgno = `NEXT_PGNO ( h ); 746 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 747 r ; 748 ++; 749 } pgno ! PGNO_INVALID ); 750 ms = ( u_t32_t )( - li ); 753 i( `DBC_LOGGING ( dbc )) { 754 ddbt . da = li ; 755 ddbt . size = ms * (* ); 756 `ZERO_LSN ( nu_l ); 757 i(( t = `__db_pg_st_log ( dbp , 758 dbc -> txn , & `LSN ( ma ), DB_FLUSH , PGNO_BASE_MD , &LSN(meta), 759 PGNO_INVALID , & nu_l , ma -> ϡ_pgno , & ddbt )) != 0) 760 r ; 762 `LSN_NOT_LOGGED ( `LSN ( ma )); 764 i(( t = `__db_pg_un ( dbp , txn , li , c_da , 765 & ms , & ma -> ϡ_pgno , & `LSN (meta), 0)) != 0) 766 r ; 768 i( ms == 0) 769 ma -> = PGNO_INVALID ; 771 ma -> = li [0]. pgno ; 773 de : i( ϡ_pgn ! NULL ) 774 * ϡ_pgn = ma -> ϡ_pgno ; 781 i( c_da ) 782 c_da -> com_un = ( u_t32_t ) ma -> ϡ_pgno - ms ; 784 i( ms !0 && lip ! NULL ) { 785 * lip = li ; 786 * mp = ms ; 787 li = NULL ; 790 r : i( li ! NULL ) 791 `__os_ ( dbv , li ); 792 i( ma ! NULL && ( t_t = 793 `__memp_ut ( mpf , ( PAGE *) ma , dbc -> iܙy )!0 && t == 0) 794 t = t_t ; 795 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 796 t = t_t ; 797 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 798 t = t_t ; 799 ( t ); 800 } } 803 $__db_un_li ( dbc , ma , h , li , t , m ) 804 DBC * dbc ; 805 DBMETA * ma ; 806 PAGE * h ; 807 db_pgno_t * li ; 808 u_t32_t t , m ; 810 DB * dbp ; 811 DB_LSN nu_l ; 812 DB_MPOOLFILE * mpf ; 813 DBT ddbt ; 814 PAGE * ϡ_ , * pg ; 815 db_pgno_t * ; 816 pgli * i , * ; 817 t ; 819 dbp = dbc ->dbp; 820 mpf = dbp ->mpf; 821 i = NULL ; 822 ϡ_ = NULL ; 824 i( t != 0 && 825 ( t = `__memp_fg ( mpf , & li [ t - 1], dbc -> txn , 826 DB_MPOOL_DIRTY , & ϡ_ )) != 0) 827 r ; 829 i( `DBC_LOGGING ( dbc )) { 830 i(( t = `__os_mloc ( dbp -> dbv , 831 ( m - t * (* ), & i )) != 0) 832 r ; 834 = i ; 835 = & li [ t ];< &li[ m ];p++) { 836 -> pgno = * ; 837 i(( t = `__memp_fg ( mpf , , dbc -> txn , 0, & pg )) != 0) 838 r ; 839 -> l = `LSN ( pg ); 840 i(( t = 841 `__memp_ut ( mpf , pg , DB_PRIORITY_VERY_LOW )) != 0) 842 r ; 843 ++; 845 ddbt . da = i ; 846 ddbt . size = ( m - t * (* ); 847 `ZERO_LSN ( nu_l ); 848 i( ϡ_ ! NULL ) { 849 i(( t = `__db_pg_st_log ( dbp , dbc -> txn , & `LSN ( ma ), 850 DB_FLUSH , `PGNO ( ma ), & `LSN (ma), PGNO( ϡ_ ), 851 & `LSN ( ϡ_ ), ma -> ϡ_pgno , & ddbt )) != 0) 852 r ; 853 } i(( t = `__db_pg_st_log ( dbp , dbc -> txn , 854 & `LSN ( ma ), DB_FLUSH , `PGNO (meta), &LSN(meta), 855 PGNO_INVALID , & nu_l , ma -> ϡ_pgno , & ddbt )) != 0) 856 r ; 858 `LSN_NOT_LOGGED ( `LSN ( ma )); 859 i( ϡ_ ! NULL ) 860 `LSN ( ϡ_ LSN( ma ); 862 i(( t = `__memp_ut ( mpf , h , DB_PRIORITY_VERY_LOW )) != 0) 863 r ; 864 h = NULL ; 865 i(( t = `__memp_run ( mpf , li [ t ], 0)) != 0) 866 r ; 867 ma -> ϡ_pgno = li [ t ] - 1; 869 i( t == 0) 870 ma -> = PGNO_INVALID ; 872 `NEXT_PGNO ( ϡ_ PGNO_INVALID ; 873 i(( t = `__memp_ut ( mpf , ϡ_ , dbc -> iܙy )) != 0) 874 r ; 875 ϡ_ = NULL ; 879 t = `__memp_exnd_li ( mpf , t , & li ); 881 r : i( i ! NULL ) 882 `__os_ ( dbp -> dbv , i ); 885 i( h ! NULL ) 886 () `__memp_ut ( mpf , h , dbc -> iܙy ); 887 i( ϡ_ ! NULL ) 888 () `__memp_ut ( mpf , ϡ_ , dbc -> iܙy ); 890 ( t ); 891 } } 894 #ifde DEBUG 902 $__db_rt ( dbc ) 903 DBC * dbc ; 905 DB_ENV * dbv ; 906 DB * dbp ; 907 DB_LOCKREQ q ; 909 dbp = dbc ->dbp; 910 dbv = dbp ->dbenv; 912 i( `LOCKING_ON ( dbv )) { 913 q . = DB_LOCK_DUMP ; 914 () `__lock_vec ( dbv , dbc -> lock , 0, & q , 1, NULL ); 917 } } 928 $__db_lg ( dbc , ai , pgno , mode , lkags , lockp ) 929 DBC * dbc ; 930 ai ; 931 db_pgno_t pgno ; 932 db_lockmode_t mode ; 933 u_t32_t lkags ; 934 DB_LOCK * lockp ; 936 DB * dbp ; 937 DB_ENV * dbv ; 938 DB_LOCKREQ coue [3], * qp ; 939 DB_TXN * txn ; 940 has_timeout , i , t ; 942 dbp = dbc ->dbp; 943 dbv = dbp ->dbenv; 944 txn = dbc ->txn; 950 i( `CDB_LOCKING ( dbv || ! `LOCKING_ON (dbenv) || 951 ( `MULTIVERSION ( dbp && mode = DB_LOCK_READ && 952 dbc -> txn ! NULL && `F_ISSET (dbc->txn, TXN_SNAPSHOT )) || 953 `F_ISSET ( dbc , DBC_DONTLOCK || (F_ISSET(dbc, DBC_RECOVER ) && 954 ( ai ! LCK_ROLLBACK || `IS_REP_CLIENT ( dbv ))) || 955 ( ai ! LCK_ALWAYS && `F_ISSET ( dbc , DBC_OPD ))) { 956 `LOCK_INIT (* lockp ); 960 dbc -> lock . pgno =gno; 961 i( lkags & DB_LOCK_RECORD ) 962 dbc -> lock . ty = DB_RECORD_LOCK ; 964 dbc -> lock . ty = DB_PAGE_LOCK ; 965 lkags &~ DB_LOCK_RECORD ; 966 i( ai = LCK_ROLLBACK ) 967 lkags | DB_LOCK_ABORT ; 973 i( `DB_NONBLOCK ( dbc )) 974 lkags | DB_LOCK_NOWAIT ; 976 i( `F_ISSET ( dbc , DBC_READ_UNCOMMITTED && mode = DB_LOCK_READ ) 977 mode = DB_LOCK_READ_UNCOMMITTED ; 979 has_timeout = `F_ISSET ( dbc , DBC_RECOVER ) || 980 ( txn ! NULL && `F_ISSET xn, TXN_LOCKTIMEOUT )); 989 i(( ai ! LCK_COUPLE &&i ! LCK_COUPLE_ALWAYS ) || 990 ! `LOCK_ISSET (* lockp )) 991 ai = 0; 992 i( dbc -> txn = NULL || ai = LCK_COUPLE_ALWAYS ) 993 ai = LCK_COUPLE ; 994 i( `F_ISSET ( dbc , 995 DBC_READ_COMMITTED && lockp -> mode = DB_LOCK_READ ) 996 ai = LCK_COUPLE ; 997 i( `F_ISSET ( dbc , 998 DBC_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_READ_UNCOMMITTED ) 999 ai = LCK_COUPLE ; 1000 i( `F_ISSET ( dbc -> dbp , 1001 DB_AM_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_WRITE ) 1002 ai = LCK_DOWNGRADE ; 1004 ai = 0; 1006 i = 0; 1007 ai ) { 1009 i( has_timeout ) 1010 coue ; 1011 t = `__lock_g ( dbv , 1012 dbc -> lock , lkags , &dbc-> lock_dbt , mode , lockp ); 1015 LCK_DOWNGRADE : 1016 coue [0]. = DB_LOCK_GET ; 1017 coue [0]. obj = NULL ; 1018 coue [0]. lock = * lockp ; 1019 coue [0]. mode = DB_LOCK_WWRITE ; 1020 `UMRW_SET ( coue [0]. timeout ); 1021 i ++; 1023 LCK_COUPLE : 1024 coue : coue[ i ]. = has_timeout ? DB_LOCK_GET_TIMEOUT : DB_LOCK_GET ; 1025 coue [ i ]. obj = & dbc -> lock_dbt ; 1026 coue [ i ]. mode = mode; 1027 `UMRW_SET ( coue [ i ]. timeout ); 1028 i ++; 1029 i( has_timeout ) 1030 coue [0]. timeout = 1031 `F_ISSET ( dbc , DBC_RECOVER ? 0 : txn -> lock_timeout ; 1032 i( ai = LCK_COUPLE ||i = LCK_DOWNGRADE ) { 1033 coue [ i ]. = DB_LOCK_PUT ; 1034 coue [ i ]. lock = * lockp ; 1035 i ++; 1038 t = `__lock_vec ( dbv , 1039 dbc -> lock , lkags , coue , i , & qp ); 1040 i( t =0 || qp =& coue [ i - 1]) 1041 * lockp = i =1 ? coue [0]. lock : couple[i - 2].lock; 1045 i( txn ! NULL && t = DB_LOCK_DEADLOCK ) 1046 `F_SET ( txn , TXN_DEADLOCK ); 1047 (( t = DB_LOCK_NOTGRANTED && 1048 ! `F_ISSET ( dbv , DB_ENV_TIME_NOTGRANTED )? DB_LOCK_DEADLOCK : t ); 1049 } } 1058 $__db_ut ( dbc , lockp ) 1059 DBC * dbc ; 1060 DB_LOCK * lockp ; 1062 DB_ENV * dbv ; 1063 DB_LOCKREQ coue [2], * qp ; 1064 ai , t ; 1071 i( `F_ISSET ( dbc -> dbp , 1072 DB_AM_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_WRITE ) 1073 ai = LCK_DOWNGRADE ; 1074 i( dbc -> txn = NULL ) 1075 ai = LCK_COUPLE ; 1076 i( `F_ISSET ( dbc , 1077 DBC_READ_COMMITTED && lockp -> mode = DB_LOCK_READ ) 1078 ai = LCK_COUPLE ; 1079 i( `F_ISSET ( dbc , 1080 DBC_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_READ_UNCOMMITTED ) 1081 ai = LCK_COUPLE ; 1083 ai = 0; 1085 dbv = dbc -> dbp ->dbenv; 1086 ai ) { 1087 LCK_COUPLE : 1088 t = `__lock_put ( dbv , lockp ); 1090 LCK_DOWNGRADE : 1091 coue [0]. = DB_LOCK_GET ; 1092 coue [0]. obj = NULL ; 1093 coue [0]. mode = DB_LOCK_WWRITE ; 1094 coue [0]. lock = * lockp ; 1095 `UMRW_SET ( coue [0]. timeout ); 1096 coue [1]. = DB_LOCK_PUT ; 1097 coue [1]. lock = * lockp ; 1098 t = `__lock_vec ( dbv , dbc -> lock , 0, coue , 2, & qp ); 1099 i( t =0 || qp =& coue [1]) 1100 * lockp = coue [0]. lock ; 1103 t = 0; 1107 ( t ); 1108 } } @../db/db_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/b.h " 15 ~"dbc/hash.h " 16 ~"dbc/lock.h " 17 ~"dbc/mp.h " 18 ~"dbc/qam.h " 19 ~"dbc/txn.h " 21 #ifde HAVE_RPC 22 #ifde HAVE_SYSTEM_INCLUDE_FILES 23 ~<c/c.h > 25 ~"db_rv.h " 26 ~"dbc_auto/c__ext.h " 29 __db_g_byswd __P (( DB *, *)); 30 __db_g_dbme __P (( DB *, const **, const **)); 31 DB_ENV * __db_g_v __P (( DB *)); 32 DB_MPOOLFILE * __db_g_mpf __P (( DB *)); 33 __db_g_muɝ __P (( DB *)); 34 __db_g_iڮ __P (( DB *)); 35 __db_g_ty __P (( DB *, DBTYPE * dbty )); 36 __db_ __P (( DB *, u_t32_t )); 37 __db_t_loc __P (( DB *, *(*)( size_t ), 38 *(*)(*, size_t ), (*)(*))); 39 __db_t_nd_o `__P (( DB *, (*)(DB *, DBT *, db_o_t ))); 40 __db_g_chesize `__P (( DB *, u_t32_t *, u_int32_t *, *)); 41 __db_t_chesize `__P (( DB *, u_t32_t , u_int32_t, )); 42 __db_t_dup_com 43 `__P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 44 __db_g_y_ags `__P (( DB *, u_t32_t *)); 45 __db_t_y `__P (( DB *, cڡ *, u_t32_t )); 46 __db_t_edback `__P (( DB *, (*)(DB *, , ))); 47 __db_m_ags `__P (( DB *, u_t32_t *, u_int32_t *)); 48 __db_g_gesize `__P (( DB *, u_t32_t *)); 49 __db_t_nic `__P (( DB *, (*)( DB_ENV *, ))); 50 __db_t_iܙy `__P (( DB *, DB_CACHE_PRIORITY )); 51 __db_g_iܙy `__P (( DB *, DB_CACHE_PRIORITY *)); 52 __db_t_r 53 `__P (( DB *, (*)(cڡ DB_ENV *, const *, const *))); 54 __db_g_rfe `__P (( DB *, FILE **)); 55 __db_t_rfe `__P (( DB *, FILE *)); 56 __db_g_fx `__P (( DB *, const **)); 57 __db_t_fx `__P (( DB *, const *)); 58 __db_t_msg 59 `__P (( DB *, (*)(cڡ DB_ENV *, const *))); 60 __db_g_msgfe `__P (( DB *, FILE **)); 61 __db_t_msgfe `__P (( DB *, FILE *)); 62 __dbh_r `__P (( DB *, , const *, ...)); 63 __dbh_rx `__P (( DB *, const *, ...)); 72 $db_ ( db , dbv , ags ) 73 DB ** db ; 74 DB_ENV * dbv ; 75 u_t32_t ags ; 77 DB_THREAD_INFO * ; 78 t ; 80 = NULL ; 83 ags ) { 86 DB_XA_CREATE : 87 i( dbv ! NULL ) { 88 `__db_rx ( dbv , 90 ( EINVAL ); 99 dbv = `TAILQ_FIRST (& `DB_GLOBAL ( db_vq )); 102 ( `__db_ ( dbv , "db_create", 0)); 105 i( dbv ! NULL ) 106 `ENV_ENTER ( dbv , ); 107 t = `__db__ ( db , dbv , ags ); 108 i( dbv ! NULL ) 109 `ENV_LEAVE ( dbv , ); 111 ( t ); 112 } } 121 $__db__ ( db , dbv , ags ) 122 DB ** db ; 123 DB_ENV * dbv ; 124 u_t32_t ags ; 126 DB * dbp ; 127 DB_REP * db_p ; 128 t ; 130 * db = NULL ; 133 i( dbv = NULL ) { 134 i(( t = `db_v_ (& dbv , 0)) != 0) 135 ( t ); 136 `F_SET ( dbv , DB_ENV_DBLOCAL ); 140 i(( t = `__os_oc ( dbv , 1, (* dbp ), &dbp)) != 0) 141 r ; 143 dbp -> dbv = dbenv; 144 i(( t = `__db_ ( dbp , ags )) != 0) 145 r ; 147 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 148 ++ dbv -> db_f ; 149 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 156 dbp -> timeamp = `REP_ON ( dbv ) ? 157 (( REGENV *)(( REGINFO *) dbv -> gfo )-> imy )-> p_timeamp : 0; 163 db_p = dbv -> p_hd ; 164 dbp -> fid_g = `REP_ON ( dbv ? (( REP *) db_p -> gi )-> g : 0; 167 i(! `RPC_ON ( dbv ) && 168 ( t = `__memp_f ( dbv , & dbp -> mpf )) != 0) 169 r ; 171 dbp -> ty = DB_UNKNOWN ; 173 * db = dbp ; 176 r : i( dbp ! NULL ) { 177 i( dbp -> mpf ! NULL ) 178 () `__memp_fo ( dbp -> mpf , 0); 179 `__os_ ( dbv , dbp ); 182 i( `F_ISSET ( dbv , DB_ENV_DBLOCAL )) 183 () `__v_o ( dbv , 0); 185 ( t ); 186 } } 193 $__db_ ( dbp , ags ) 194 DB * dbp ; 195 u_t32_t ags ; 197 t ; 199 dbp -> lock = NULL ; 200 `LOCK_INIT ( dbp -> hd_lock ); 202 `TAILQ_INIT (& dbp -> _queue ); 203 `TAILQ_INIT (& dbp -> aive_queue ); 204 `TAILQ_INIT (& dbp -> jo_queue ); 205 `LIST_INIT (& dbp -> s_cds ); 207 `FLD_SET ( dbp -> am_ok , 208 DB_OK_BTREE | DB_OK_HASH | DB_OK_QUEUE | DB_OK_RECNO ); 211 dbp -> assoc = __db_assoc_ ; 212 dbp -> o = __db_o_ ; 213 dbp -> com = __db_com_ ; 214 dbp -> curs = __db_curs_ ; 215 dbp -> d = __db_d_ ; 216 dbp -> dump = __db_dump_ ; 217 dbp -> r = __dbh_r ; 218 dbp -> rx = __dbh_rx ; 219 dbp -> exis = __db_exis ; 220 dbp -> fd = __db_fd_ ; 221 dbp -> g = __db_g_ ; 222 dbp -> g_byswd = __db_g_byswd ; 223 dbp -> g_chesize = __db_g_chesize ; 224 dbp -> g_dbme = __db_g_dbme ; 225 dbp -> g_y_ags = __db_g_y_ags ; 226 dbp -> g_v = __db_g_v ; 227 dbp -> g_rfe = __db_g_rfe ; 228 dbp -> g_fx = __db_g_fx ; 229 dbp -> g_ags = __db_g_ags ; 230 dbp -> g_ld = __db_g_ld ; 231 dbp -> g_mpf = __db_g_mpf ; 232 dbp -> g_msgfe = __db_g_msgfe ; 233 dbp -> g_muɝ = __db_g_muɝ ; 234 dbp -> g_ݒ_ags = __db_g_ݒ_ags ; 235 dbp -> g_gesize = __db_g_gesize ; 236 dbp -> g_iڮ = __db_g_iڮ ; 237 dbp -> g_ty = __db_g_ty ; 238 dbp -> jo = __db_jo_ ; 239 dbp -> key_nge = __db_key_nge_ ; 240 dbp -> ݒ = __db_ݒ_ ; 241 dbp -> pg = __db_pg_ ; 242 dbp -> put = __db_put_ ; 243 dbp -> move = __db_move_ ; 244 dbp -> me = __db_me_ ; 245 dbp -> t_loc = __db_t_loc ; 246 dbp -> t_nd_o = __db_t_nd_o ; 247 dbp -> t_chesize = __db_t_chesize ; 248 dbp -> t_dup_com = __db_t_dup_com ; 249 dbp -> t_y = __db_t_y ; 250 dbp -> t_r = __db_t_r ; 251 dbp -> t_rfe = __db_t_rfe ; 252 dbp -> t_fx = __db_t_fx ; 253 dbp -> t_edback = __db_t_edback ; 254 dbp -> t_ags = __db_t_ags ; 255 dbp -> t_ld = __db_t_ld ; 256 dbp -> t_msg = __db_t_msg ; 257 dbp -> t_msgfe = __db_t_msgfe ; 258 dbp -> t_gesize = __db_t_gesize ; 259 dbp -> t_nic = __db_t_nic ; 260 dbp -> t_iܙy = __db_t_iܙy ; 261 dbp -> g_iܙy = __db_g_iܙy ; 262 dbp -> = __db__ ; 263 dbp -> _t = __db__t_ ; 264 dbp -> sync = __db_sync_ ; 265 dbp -> un = __db_un_ ; 266 dbp -> upgde = __db_upgde_ ; 267 dbp -> vify = __db_vify_ ; 271 i(( t = `__bam_db_ ( dbp )) != 0) 272 ( t ); 273 i(( t = `__ham_db_ ( dbp )) != 0) 274 ( t ); 275 i(( t = `__qam_db_ ( dbp )) != 0) 276 ( t ); 282 i( `LF_ISSET ( DB_XA_CREATE && ( t = `__db_xa_ ( dbp )) != 0) 283 ( t ); 285 #ifde HAVE_RPC 290 i( `RPC_ON ( dbp -> dbv )) { 291 `__db_dbp_ ( dbp ); 297 dbp -> ݒ = __db_db_ݒ_wp ; 298 i(( t = `__db_db_ ( dbp , dbp-> dbv , ags )) != 0) 299 ( t ); 304 } } 313 $__dbh_am_chk ( dbp , ags ) 314 DB * dbp ; 315 u_t32_t ags ; 322 i(( `LF_ISSET ( DB_OK_BTREE && `FLD_ISSET ( dbp -> am_ok , DB_OK_BTREE)) || 323 ( `LF_ISSET ( DB_OK_HASH && `FLD_ISSET ( dbp -> am_ok , DB_OK_HASH)) || 324 ( `LF_ISSET ( DB_OK_QUEUE && `FLD_ISSET ( dbp -> am_ok , DB_OK_QUEUE)) || 325 ( `LF_ISSET ( DB_OK_RECNO && `FLD_ISSET ( dbp -> am_ok , DB_OK_RECNO))) { 326 `FLD_CLR ( dbp -> am_ok , ~ ags ); 330 `__db_rx ( dbp -> dbv , 332 ( EINVAL ); 333 } } 340 #ifde STDC_HEADERS 341 $__dbh_r ( DB * dbp , r , cڡ * fmt , ...) 343 $__dbh_r ( dbp , r , fmt , va_i ) 344 DB * dbp ; 345 r ; 346 cڡ * fmt ; 347 va_d 351 `DB_REAL_ERR ( dbp -> dbv , r , DB_ERROR_SET , 1, fmt ); 352 } } 359 #ifde STDC_HEADERS 360 $__dbh_rx ( DB * dbp , cڡ * fmt , ...) 362 $__dbh_rx ( dbp , fmt , va_i ) 363 DB * dbp ; 364 cڡ * fmt ; 365 va_d 369 `DB_REAL_ERR ( dbp -> dbv , 0, DB_ERROR_NOT_SET , 1, fmt ); 370 } } 377 $__db_g_byswd ( dbp , isswd ) 378 DB * dbp ; 379 * isswd ; 381 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_byteswapped"); 383 * isswd = `F_ISSET ( dbp , DB_AM_SWAP ) ? 1 : 0; 385 } } 392 $__db_g_dbme ( dbp , am , dm ) 393 DB * dbp ; 394 cڡ ** am , ** dm ; 396 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_dbname"); 398 i( am ! NULL ) 399 * am = dbp -> ame ; 400 i( dm ! NULL ) 401 * dm = dbp -> dme ; 403 } } 409 DB_ENV * 410 $__db_g_v ( dbp ) 411 DB * dbp ; 413 ( dbp -> dbv ); 414 } } 420 DB_MPOOLFILE * 421 $__db_g_mpf ( dbp ) 422 DB * dbp ; 424 ( dbp -> mpf ); 425 } } 433 $__db_g_muɝ ( dbp ) 434 DB * dbp ; 436 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_multiple"); 445 ( dbp -> ty = DB_BTREE && 446 `F_ISSET ( dbp , DB_AM_SUBDB ) && 447 dbp -> ma_pgno = PGNO_BASE_MD ? 1 : 0); 448 } } 455 $__db_g_iڮ ( dbp ) 456 DB * dbp ; 458 ( `F_ISSET ( dbp , DB_AM_TXN ) ? 1 : 0); 459 } } 466 $__db_g_ty ( dbp , dbty ) 467 DB * dbp ; 468 DBTYPE * dbty ; 470 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_type"); 472 * dbty = dbp -> ty ; 474 } } 481 $__db_t_nd_o ( dbp , func ) 482 DB * dbp ; 483 (* func `__P (( DB *, DBT *, db_o_t )); 485 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_append_recno"); 486 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE | DB_OK_RECNO ); 488 dbp -> db_nd_o = func ; 491 } } 498 $__db_g_chesize ( dbp , che_gby , che_by , nch ) 499 DB * dbp ; 500 u_t32_t * che_gby , * che_by ; 501 * nch ; 503 `DB_ILLEGAL_IN_ENV ( dbp , "DB->get_cachesize"); 505 ( `__memp_g_chesize ( dbp -> dbv , 506 che_gby , che_by , nch )); 507 } } 514 $__db_t_chesize ( dbp , che_gbys , che_bys , nche ) 515 DB * dbp ; 516 u_t32_t che_gbys , che_bys ; 517 nche ; 519 `DB_ILLEGAL_IN_ENV ( dbp , "DB->set_cachesize"); 520 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_cachesize"); 522 ( `__memp_t_chesize ( 523 dbp -> dbv , che_gbys , che_bys , nche )); 524 } } 531 $__db_t_dup_com ( dbp , func ) 532 DB * dbp ; 533 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 535 t ; 537 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->dup_compare"); 538 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE | DB_OK_HASH ); 540 i(( t = `__db_t_ags ( dbp , DB_DUPSORT )) != 0) 541 ( t ); 543 dbp -> dup_com = func ; 546 } } 552 $__db_g_y_ags ( dbp , ag ) 553 DB * dbp ; 554 u_t32_t * ag ; 556 `DB_ILLEGAL_IN_ENV ( dbp , "DB->get_encrypt_flags"); 558 ( `__v_g_y_ags ( dbp -> dbv , ag )); 559 } } 566 $__db_t_y ( dbp , sswd , ags ) 567 DB * dbp ; 568 cڡ * sswd ; 569 u_t32_t ags ; 571 DB_CIPHER * db_ch ; 572 t ; 574 `DB_ILLEGAL_IN_ENV ( dbp , "DB->set_encrypt"); 575 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_encrypt"); 577 i(( t = `__v_t_y ( dbp -> dbv , sswd , ags )) != 0) 578 ( t ); 584 db_ch = ( DB_CIPHER *) dbp -> dbv -> yo_hd ; 585 i(! `F_ISSET ( db_ch , CIPHER_ANY ) && 586 ( t = db_ch -> ` ( dbp -> dbv , db_cipher)) != 0) 587 ( t ); 589 ( `__db_t_ags ( dbp , DB_ENCRYPT )); 590 } } 593 $__db_t_r ( dbp , r ) 594 DB * dbp ; 595 (* r `__P ((cڡ DB_ENV *, const *, const *)); 597 `__v_t_r ( dbp -> dbv , r ); 598 } } 601 $__db_g_rfe ( dbp , rf ) 602 DB * dbp ; 603 FILE ** rf ; 605 `__v_g_rfe ( dbp -> dbv , rf ); 606 } } 609 $__db_t_rfe ( dbp , rfe ) 610 DB * dbp ; 611 FILE * rfe ; 613 `__v_t_rfe ( dbp -> dbv , rfe ); 614 } } 617 $__db_g_fx ( dbp , fxp ) 618 DB * dbp ; 619 cڡ ** fxp ; 621 `__v_g_fx ( dbp -> dbv , fxp ); 622 } } 625 $__db_t_fx ( dbp , fx ) 626 DB * dbp ; 627 cڡ * fx ; 629 `__v_t_fx ( dbp -> dbv , fx ); 630 } } 633 $__db_t_edback ( dbp , edback ) 634 DB * dbp ; 635 (* edback `__P (( DB *, , )); 637 dbp -> db_edback = edback ; 639 } } 647 $__db_m_ags ( dbp , ag , outag ) 648 DB * dbp ; 649 u_t32_t * ag , * outag ; 651 `COMPQUIET ( dbp , NULL ); 653 i( `FLD_ISSET (* ag , DB_CHKSUM )) { 654 `FLD_SET (* outag , DB_AM_CHKSUM ); 655 `FLD_CLR (* ag , DB_CHKSUM ); 657 i( `FLD_ISSET (* ag , DB_ENCRYPT )) { 658 `FLD_SET (* outag , DB_AM_ENCRYPT | DB_AM_CHKSUM ); 659 `FLD_CLR (* ag , DB_ENCRYPT ); 661 i( `FLD_ISSET (* ag , DB_TXN_NOT_DURABLE )) { 662 `FLD_SET (* outag , DB_AM_NOT_DURABLE ); 663 `FLD_CLR (* ag , DB_TXN_NOT_DURABLE ); 665 } } 674 $__db_g_ags ( dbp , ag ) 675 DB * dbp ; 676 u_t32_t * ag ; 678 cڡ u_t32_t db_ags [] = { 679 DB_CHKSUM , 680 DB_DUP , 681 DB_DUPSORT , 682 DB_ENCRYPT , 683 #ifde HAVE_QUEUE 684 DB_INORDER , 686 DB_RECNUM , 687 DB_RENUMBER , 688 DB_REVSPLITOFF , 689 DB_SNAPSHOT , 690 DB_TXN_NOT_DURABLE , 693 u_t32_t f , ags , md_ag ; 694 i ; 696 ags = 0; 697 i = 0; ( f = db_ags [i]) != 0; i++) { 698 md_ag = 0; 699 `__db_m_ags ( dbp , & f , & md_ag ); 700 `__bam_m_ags ( dbp , & f , & md_ag ); 701 `__m_m_ags ( dbp , & f , & md_ag ); 702 #ifde HAVE_QUEUE 703 `__qam_m_ags ( dbp , & f , & md_ag ); 705 `DB_ASSERT ( dbp -> dbv , f == 0); 706 i( `F_ISSET ( dbp , md_ag ) == mapped_flag) 707 `LF_SET ( db_ags [ i ]); 710 * ag = ags ; 712 } } 721 $__db_t_ags ( dbp , ags ) 722 DB * dbp ; 723 u_t32_t ags ; 725 DB_ENV * dbv ; 726 t ; 728 dbv = dbp ->dbenv; 730 i( `LF_ISSET ( DB_ENCRYPT && ! `CRYPTO_ON ( dbv )) { 731 `__db_rx ( dbv , 733 ( EINVAL ); 735 i( `LF_ISSET ( DB_TXN_NOT_DURABLE )) 736 `ENV_REQUIRES_CONFIG ( dbv , 737 dbv -> tx_hd , "DB_NOT_DURABLE", DB_INIT_TXN ); 739 `__db_m_ags ( dbp , & ags , &dbp->flags); 741 i(( t = `__bam_t_ags ( dbp , & ags )) != 0) 742 ( t ); 743 i(( t = `__m_t_ags ( dbp , & ags )) != 0) 744 ( t ); 745 #ifde HAVE_QUEUE 746 i(( t = `__qam_t_ags ( dbp , & ags )) != 0) 747 ( t ); 750 ( ags =0 ? 0 : `__db_ ( dbv , "DB->set_flags", 0)); 751 } } 760 $__db_g_ld ( dbp , db_ldp ) 761 DB * dbp ; 762 * db_ldp ; 764 t ; 767 t = `__db_byd ( dbp -> dbv , 1234)) { 769 * db_ldp = `F_ISSET ( dbp , DB_AM_SWAP ) ? 4321 : 1234; 771 DB_SWAPBYTES : 772 * db_ldp = `F_ISSET ( dbp , DB_AM_SWAP ) ? 1234 : 4321; 775 ( t ); 780 } } 789 $__db_t_ld ( dbp , db_ld ) 790 DB * dbp ; 791 db_ld ; 793 t ; 795 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_lorder"); 798 t = `__db_byd ( dbp -> dbv , db_ld )) { 800 `F_CLR ( dbp , DB_AM_SWAP ); 802 DB_SWAPBYTES : 803 `F_SET ( dbp , DB_AM_SWAP ); 806 ( t ); 810 } } 813 $__db_t_loc ( dbp , m_func , _func , _func ) 814 DB * dbp ; 815 *(* m_func `__P (( size_t )); 816 *(* _func `__P ((*, size_t )); 817 (* _func `__P ((*)); 819 `DB_ILLEGAL_IN_ENV ( dbp , "DB->set_alloc"); 820 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_alloc"); 822 ( `__v_t_loc ( dbp -> dbv , m_func , _func , _func )); 823 } } 826 $__db_t_msg ( dbp , msg ) 827 DB * dbp ; 828 (* msg `__P ((cڡ DB_ENV *, const *)); 830 `__v_t_msg ( dbp -> dbv , msg ); 831 } } 834 $__db_g_msgfe ( dbp , msgf ) 835 DB * dbp ; 836 FILE ** msgf ; 838 `__v_g_msgfe ( dbp -> dbv , msgf ); 839 } } 842 $__db_t_msgfe ( dbp , msgfe ) 843 DB * dbp ; 844 FILE * msgfe ; 846 `__v_t_msgfe ( dbp -> dbv , msgfe ); 847 } } 850 $__db_g_gesize ( dbp , db_gesiz ) 851 DB * dbp ; 852 u_t32_t * db_gesiz ; 854 * db_gesiz = dbp -> pgsize ; 856 } } 865 $__db_t_gesize ( dbp , db_gesize ) 866 DB * dbp ; 867 u_t32_t db_gesize ; 869 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_pagesize"); 871 i( db_gesize < DB_MIN_PGSIZE ) { 872 `__db_rx ( dbp -> dbv , "page sizes mayot be smallerhan %lu", 873 ( u_lg ) DB_MIN_PGSIZE ); 874 ( EINVAL ); 876 i( db_gesize > DB_MAX_PGSIZE ) { 877 `__db_rx ( dbp -> dbv , "page sizes mayot beargerhan %lu", 878 ( u_lg ) DB_MAX_PGSIZE ); 879 ( EINVAL ); 886 i(! `POWER_OF_TWO ( db_gesize )) { 887 `__db_rx ( dbp -> dbv , "page sizes must beower-of-2"); 888 ( EINVAL ); 896 dbp -> pgsize = db_gesize ; 899 } } 902 $__db_t_nic ( dbp , nic ) 903 DB * dbp ; 904 (* nic `__P (( DB_ENV *, )); 906 ( `__v_t_nic ( dbp -> dbv , nic )); 907 } } 910 $__db_t_iܙy ( dbp , iܙy ) 911 DB * dbp ; 912 DB_CACHE_PRIORITY iܙy ; 914 dbp -> iܙy =riority; 916 } } 919 $__db_g_iܙy ( dbp , iܙy ) 920 DB * dbp ; 921 DB_CACHE_PRIORITY * iܙy ; 923 * iܙy = dbp ->priority; 925 } } @../db/db_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/b.h " 15 ~"dbc/yo.h " 16 ~"dbc/hmac.h " 17 ~"dbc/f.h " 18 ~"dbc/hash.h " 19 ~"dbc/lock.h " 20 ~"dbc/log.h " 21 ~"dbc/mp.h " 22 ~"dbc/qam.h " 23 ~"dbc/txn.h " 50 $__db_ݒ ( dbp , txn , ame , dme , ty , ags , mode , ma_pgno ) 51 DB * dbp ; 52 DB_TXN * txn ; 53 cڡ * ame , * dme ; 54 DBTYPE ty ; 55 u_t32_t ags ; 56 mode ; 57 db_pgno_t ma_pgno ; 59 DB_ENV * dbv ; 60 t ; 61 u_t32_t id ; 63 dbv = dbp ->dbenv; 64 id = TXN_INVALID ; 66 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREOPEN , t , ame ); 76 i( `F_ISSET ( dbv , DB_ENV_THREAD )) 77 `LF_SET ( DB_THREAD ); 80 i( `LF_ISSET ( DB_RDONLY )) 81 `F_SET ( dbp , DB_AM_RDONLY ); 82 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 83 `F_SET ( dbp , DB_AM_READ_UNCOMMITTED ); 85 i( `IS_REAL_TXN ( txn )) 86 `F_SET ( dbp , DB_AM_TXN ); 89 dbp -> ty =ype; 99 i( ame = NULL ) { 100 i( dme = NULL ) { 101 i(! `LF_ISSET ( DB_CREATE )) { 102 `__db_rx ( dbv , 104 ( ENOENT ); 107 `F_SET ( dbp , DB_AM_INMEM ); 108 `F_SET ( dbp , DB_AM_CREATED ); 110 i( dbp -> ty = DB_UNKNOWN ) { 111 `__db_rx ( dbv , 113 ( EINVAL ); 116 i( dbp -> pgsize == 0) 117 dbp -> pgsize = DB_DEF_IOSIZE ; 139 i( `LOCKING_ON ( dbv && ( t = `__lock_id (dbenv, 140 ( u_t32_t *) dbp -> feid , NULL )) != 0) 141 ( t ); 143 `MAKE_INMEM ( dbp ); 150 } i( dme = NULL && ma_pgno = PGNO_BASE_MD ) { 152 i(( t = 153 `__f_fe_tup ( dbp , txn , ame , mode , ags , & id )) != 0) 154 ( t ); 156 i(( t = `__f_subdb_tup ( dbp , 157 txn , ame , dme , mode , ags )) != 0) 158 ( t ); 159 ma_pgno = dbp ->meta_pgno; 175 i( dme = NULL && `F_ISSET ( dbp , DB_AM_CREATED )) 176 `LF_SET ( DB_TRUNCATE ); 179 i(( t = `__db_v_tup ( dbp , txn , ame , dme , id , ags )) != 0) 180 ( t ); 183 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 184 i( dme = NULL ) 185 t = `__db_w_fe ( dbp , txn , NULL , NULL); 187 id = TXN_INVALID ; 188 i(( t = `__f_fe_tup ( dbp , 189 txn , dme , mode , ags , & id )) == 0 && 190 `DBENV_LOGGING ( dbv && ! `F_ISSET ( dbp , DB_AM_RECOVER ) 191 #i! `defed ( DEBUG_ROP && !defed( DEBUG_WOP && !defed( DIAGNOSTIC ) 192 && txn ! NULL 194 #i! `defed ( DEBUG_ROP ) 195 && ! `F_ISSET ( dbp , DB_AM_RDONLY ) 198 t = `__dbg_log_id ( dbp , 199 txn , dbp -> log_fame -> id , 1); 201 i( t != 0) 202 r ; 205 dbp -> ty ) { 206 DB_BTREE : 207 t = `__bam_ݒ ( dbp , txn , ame , ma_pgno , ags ); 209 DB_HASH : 210 t = `__ham_ݒ ( dbp , txn , ame , ma_pgno , ags ); 212 DB_RECNO : 213 t = `__m_ݒ ( dbp , txn , ame , ma_pgno , ags ); 215 DB_QUEUE : 216 t = `__qam_ݒ ( 217 dbp , txn , ame , ma_pgno , mode , ags ); 219 DB_UNKNOWN : 221 `__db_unknown_ty ( dbv , "__db_dbݒ", dbp -> ty )); 223 i( t != 0) 224 r ; 226 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTOPEN , t , ame ); 233 i(! `F_ISSET ( dbp , DB_AM_RECOVER && ( ame ! NULL || dme != NULL) && 234 `LOCK_ISSET ( dbp -> hd_lock )) { 235 i( `IS_REAL_TXN ( txn )) 236 t = `__txn_lockevt ( dbv , 237 txn , dbp , &dbp-> hd_lock , dbp-> lock ); 238 i( `LOCKING_ON ( dbv )) 240 t = `__lock_downgde ( dbv , 241 & dbp -> hd_lock , DB_LOCK_READ , 0); 243 DB_TEST_RECOVERY_LABEL 244 r : 245 ( t ); 246 } } 255 $__db_g_ݒ_ags ( dbp , ag ) 256 DB * dbp ; 257 u_t32_t * ag ; 259 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_open_flags"); 261 * ag = dbp -> ݒ_ags ; 263 } } 272 $__db_w_fe ( dbp , txn , fhp , me ) 273 DB * dbp ; 274 DB_TXN * txn ; 275 DB_FH * fhp ; 276 cڡ * me ; 278 t ; 280 dbp -> ty ) { 281 DB_BTREE : 282 DB_RECNO : 283 t = `__bam_w_fe ( dbp , txn , fhp , me ); 285 DB_HASH : 286 t = `__ham_w_fe ( dbp , txn , fhp , me ); 288 DB_QUEUE : 289 t = `__qam_w_fe ( dbp , txn , fhp , me ); 291 DB_UNKNOWN : 293 `__db_rx ( dbp -> dbv , 294 "%s: Invidy %d scifd", me , dbp -> ty ); 295 t = EINVAL ; 299 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTLOGMETA , t , me ); 301 i( t =0 && fhp ! NULL ) 302 t = `__os_fsync ( dbp -> dbv , fhp ); 304 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTSYNC , t , me ); 306 DB_TEST_RECOVERY_LABEL 307 ( t ); 308 } } 317 $__db__subdb ( mdbp , dbp , me , txn ) 318 DB * mdbp , * dbp ; 319 cڡ * me ; 320 DB_TXN * txn ; 322 DBMETA * ma ; 323 DB_MPOOLFILE * mpf ; 324 t , t_t ; 326 t = 0; 327 i(! `F_ISSET ( dbp , DB_AM_CREATED )) { 329 mpf = mdbp ->mpf; 330 i(( t = `__memp_fg ( mpf , & dbp -> ma_pgno , 331 txn , 0, & ma )) != 0) 332 r ; 333 t = `__db_ma_tup ( mdbp -> dbv , dbp , me , ma , 0, 0); 334 i(( t_t = 335 `__memp_ut ( mpf , ma , dbp -> iܙy )!0 && t == 0) 336 t = t_t ; 341 i( t = ENOENT ) 342 t = 0; 343 r ; 347 dbp -> ty ) { 348 DB_BTREE : 349 DB_RECNO : 350 t = `__bam_w_subdb ( mdbp , dbp , txn ); 352 DB_HASH : 353 t = `__ham_w_subdb ( mdbp , dbp , txn ); 355 DB_QUEUE : 356 t = EINVAL ; 358 DB_UNKNOWN : 360 `__db_rx ( dbp -> dbv , 361 "Invid subdabay %d scifd", dbp -> ty ); 362 ( EINVAL ); 365 r : ( t ); 366 } } 378 $__db_chk_ma ( dbv , dbp , ma , ags ) 379 DB_ENV * dbv ; 380 DB * dbp ; 381 DBMETA * ma ; 382 u_t32_t ags ; 384 DB_LSN sw_l ; 385 is_hmac , t , swd ; 386 u_t32_t magic , ig_chk ; 387 u_t8_t * chksum ; 389 t = 0; 390 swd = 0; 392 i( `FLD_ISSET ( ma -> maags , DBMETA_CHKSUM )) { 393 i( dbp ! NULL ) 394 `F_SET ( dbp , DB_AM_CHKSUM ); 396 is_hmac = ma -> y_g == 0 ? 0 : 1; 397 chksum = (( BTMETA *) ma )->chksum; 404 ig_chk = *( u_t32_t *) chksum ; 410 i( `LF_ISSET ( DB_CHK_META )) { 411 swd = 0; 412 chk_y : i(( t = `__db_check_chksum ( dbv , NULL , 413 ( DB_CIPHER *) dbv -> yo_hd , chksum , ma , 414 DBMETASIZE , is_hmac )) != 0) { 415 i( is_hmac || swd ) 416 ( t ); 418 `M_32_SWAP ( ig_chk ); 419 swd = 1; 420 *( u_t32_t *) chksum = ig_chk ; 421 chk_y ; 424 } i( dbp ! NULL ) 425 `F_CLR ( dbp , DB_AM_CHKSUM ); 427 #ifde HAVE_CRYPTO 428 t = `__yo_dey_ma ( dbv , 429 dbp , ( u_t8_t *) ma , `LF_ISSET ( DB_CHK_META )); 433 i( `LOGGING_ON ( dbv && ! `LF_ISSET ( DB_CHK_NOLSN )) { 440 sw_l = ma -> l ; 441 magic = ma ->magic; 442 l_y : 443 i( swd ) { 444 `M_32_SWAP ( sw_l . fe ); 445 `M_32_SWAP ( sw_l . offt ); 446 `M_32_SWAP ( magic ); 448 magic ) { 449 DB_BTREEMAGIC : 450 DB_HASHMAGIC : 451 DB_QAMMAGIC : 452 DB_RENAMEMAGIC : 455 i( swd ) 456 ( EINVAL ); 457 swd = 1; 458 l_y ; 460 i(! `IS_REP_CLIENT ( dbv ) && 461 ! `IS_NOT_LOGGED_LSN ( sw_l && ! `IS_ZERO_LSN (swap_lsn)) 463 t = `__log_check_ge_l ( dbv , dbp , & sw_l ); 465 ( t ); 466 } } 478 $__db_ma_tup ( dbv , dbp , me , ma , oags , ags ) 479 DB_ENV * dbv ; 480 DB * dbp ; 481 cڡ * me ; 482 DBMETA * ma ; 483 u_t32_t oags ; 484 u_t32_t ags ; 486 u_t32_t magic ; 487 t ; 489 t = 0; 499 `F_CLR ( dbp , DB_AM_SWAP | DB_AM_IN_RENAME ); 500 magic = ma ->magic; 502 sw_y : 503 magic ) { 504 DB_BTREEMAGIC : 505 DB_HASHMAGIC : 506 DB_QAMMAGIC : 507 DB_RENAMEMAGIC : 516 i( `F_ISSET ( dbp , DB_AM_SUBDB && (( `IS_RECOVERING ( dbv ) && 517 `F_ISSET ( dbv -> lg_hd , DBLOG_FORCE_OPEN )) || 518 ma -> pgno ! PGNO_INVALID )) 519 ( ENOENT ); 521 bad_fm ; 523 i( `F_ISSET ( dbp , DB_AM_SWAP )) 524 bad_fm ; 526 `M_32_SWAP ( magic ); 527 `F_SET ( dbp , DB_AM_SWAP ); 528 sw_y ; 538 i(( t = `__db_chk_ma ( dbv , dbp , ma , ags )) != 0) { 539 i( t == -1) 540 `__db_rx ( dbv , 541 "%s: madgchecksum", me ); 542 bad_fm ; 545 magic ) { 546 DB_BTREEMAGIC : 547 i( dbp -> ty ! DB_UNKNOWN && 548 dbp -> ty ! DB_RECNO && dbp->ty ! DB_BTREE ) 549 bad_fm ; 551 ags = ma ->flags; 552 i( `F_ISSET ( dbp , DB_AM_SWAP )) 553 `M_32_SWAP ( ags ); 554 i( `LF_ISSET ( BTM_RECNO )) 555 dbp -> ty = DB_RECNO ; 557 dbp -> ty = DB_BTREE ; 558 i(( oags & DB_TRUNCATE =0 && ( t = 559 `__bam_machk ( dbp , me , ( BTMETA *) ma )) != 0) 560 ( t ); 562 DB_HASHMAGIC : 563 i( dbp -> ty ! DB_UNKNOWN && dbp->ty ! DB_HASH ) 564 bad_fm ; 566 dbp -> ty = DB_HASH ; 567 i(( oags & DB_TRUNCATE =0 && ( t = 568 `__ham_machk ( dbp , me , ( HMETA *) ma )) != 0) 569 ( t ); 571 DB_QAMMAGIC : 572 i( dbp -> ty ! DB_UNKNOWN && dbp->ty ! DB_QUEUE ) 573 bad_fm ; 574 dbp -> ty = DB_QUEUE ; 575 i(( oags & DB_TRUNCATE =0 && ( t = 576 `__qam_machk ( dbp , me , ( QMETA *) ma )) != 0) 577 ( t ); 579 DB_RENAMEMAGIC : 580 `F_SET ( dbp , DB_AM_IN_RENAME ); 583 `memy ( dbp -> feid , (( DBMETA *) ma )-> uid , DB_FILE_ID_LEN ); 587 bad_fm ; 591 bad_fm : 592 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 593 t = ENOENT ; 595 `__db_rx ( dbv , "%s: uxed fty ofm", me ); 596 ( t =0 ? EINVAL :et); 597 } } @../db/db_overflow.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/db_am.h " 49 ~"dbc/mp.h " 68 $__db_goff ( dbp , txn , dbt , , pgno , b , bpsz ) 69 DB * dbp ; 70 DB_TXN * txn ; 71 DBT * dbt ; 72 u_t32_t ; 73 db_pgno_t pgno ; 74 ** b ; 75 u_t32_t * bpsz ; 77 DB_ENV * dbv ; 78 DB_MPOOLFILE * mpf ; 79 PAGE * h ; 80 db_dx_t bys ; 81 u_t32_t curoff , eded , t ; 82 u_t8_t * p , * c ; 83 t ; 85 dbv = dbp ->dbenv; 86 mpf = dbp ->mpf; 94 i( `F_ISSET ( dbt , DB_DBT_PARTIAL )) { 95 t = dbt -> doff ; 96 i( t > ) 97 eded = 0; 98 i( dbt -> dn > - t ) 99 eded = - t ; 101 eded = dbt -> dn ; 103 t = 0; 104 eded = ; 107 i( `F_ISSET ( dbt , DB_DBT_USERCOPY )) 108 sk_loc ; 111 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 112 i( eded > dbt -> un ) { 113 dbt -> size = eded ; 114 ( DB_BUFFER_SMALL ); 116 } i( `F_ISSET ( dbt , DB_DBT_MALLOC )) { 117 i(( t = `__os_umloc ( dbv , eded , & dbt -> da )) != 0) 118 ( t ); 119 } i( `F_ISSET ( dbt , DB_DBT_REALLOC )) { 120 i(( t = `__os_uloc ( dbv , eded , & dbt -> da )) != 0) 121 ( t ); 122 } i( bpsz ! NULL && (*bpsz =0 || *bpsz < eded )) { 123 i(( t = `__os_loc ( dbv , eded , b )) != 0) 124 ( t ); 125 * bpsz = eded ; 126 dbt -> da = * b ; 127 } i( b ! NULL ) 128 dbt -> da = * b ; 130 `DB_ASSERT ( dbv , 131 `F_ISSET ( dbt , 132 DB_DBT_USERMEM | DB_DBT_MALLOC | DB_DBT_REALLOC ) || 133 bpsz ! NULL || b != NULL); 134 ( DB_BUFFER_SMALL ); 137 sk_loc : 142 dbt -> size = eded ; 143 curoff = 0, p = dbt -> da ; pgno ! PGNO_INVALID && eded > 0;) { 144 i(( t = `__memp_fg ( mpf , & pgno , txn , 0, & h )) != 0) 145 ( t ); 146 `DB_ASSERT ( dbv , `TYPE ( h = P_OVERFLOW ); 149 i( curoff + `OV_LEN ( h > t ) { 150 bys = `OV_LEN ( h ); 151 c = ( u_t8_t *) h + `P_OVERHEAD ( dbp ); 152 i( t > curoff ) { 153 c + t - curoff ; 154 bys - t - curoff ; 156 i( bys > eded ) 157 bys = eded ; 158 i( `F_ISSET ( dbt , DB_DBT_USERCOPY )) { 165 i(( t = dbv -> `dbt_urcy ( 166 dbt , dbt-> size - eded , 167 c , bys , DB_USERCOPY_SETDATA )) != 0) { 168 () `__memp_ut ( mpf , 169 h , dbp -> iܙy ); 170 ( t ); 173 `memy ( p , c , bys ); 174 p + bys ; 175 eded - bys ; 177 curoff + `OV_LEN ( h ); 178 pgno = h -> xt_pgno ; 179 () `__memp_ut ( mpf , h , dbp -> iܙy ); 182 } } 191 $__db_poff ( dbc , dbt , pgn ) 192 DBC * dbc ; 193 cڡ DBT * dbt ; 194 db_pgno_t * pgn ; 196 DB * dbp ; 197 DBT tmp_dbt ; 198 DB_LSN w_l , nu_l ; 199 DB_MPOOLFILE * mpf ; 200 PAGE * g , * ϡp ; 201 db_dx_t gea ; 202 u_t32_t sz ; 203 u_t8_t * p ; 204 t , t_t ; 211 dbp = dbc ->dbp; 212 mpf = dbp ->mpf; 213 gea = `P_MAXSPACE ( dbp , dbp-> pgsize ); 215 t = 0; 216 ϡp = NULL ; 217 p = dbt -> da , 218 sz = dbt -> size ; sz > 0; p + gea , sz -=agespace) { 223 i( sz < gea ) 224 gea = sz ; 231 i(( t = `__db_w ( dbc , P_OVERFLOW , & g )) != 0) 233 i( `DBC_LOGGING ( dbc )) { 234 tmp_dbt . da = p ; 235 tmp_dbt . size = gea ; 236 `ZERO_LSN ( nu_l ); 237 i(( t = `__db_big_log ( dbp , dbc -> txn , 238 & w_l , 0, DB_ADD_BIG , `PGNO ( g ), 239 ϡp ? `PGNO ap: PGNO_INVALID , 240 PGNO_INVALID , & tmp_dbt , & `LSN ( g ), 241 ϡp = NULL ? & nu_l : & `LSN (lastp), 242 & nu_l )) != 0) { 243 i( ϡp ! NULL ) 244 () `__memp_ut ( mpf , 245 ϡp , dbc -> iܙy ); 246 ϡp = g ; 250 `LSN_NOT_LOGGED ( w_l ); 253 i( ϡp ! NULL ) 254 `LSN ( ϡp w_l ; 255 `LSN ( g w_l ; 257 `OV_LEN ( g gea ; 258 `OV_REF ( g ) = 1; 259 `memy (( u_t8_t *) g + `P_OVERHEAD ( dbp ), p , gea ); 266 i( ϡp = NULL ) 267 * pgn = `PGNO ( g ); 269 ϡp -> xt_pgno = `PGNO ( g ); 270 g -> ev_pgno = `PGNO ( ϡp ); 271 () `__memp_ut ( mpf , ϡp , dbc -> iܙy ); 273 ϡp = g ; 275 i( ϡp ! NULL && ( t_t = 276 `__memp_ut ( mpf , ϡp , dbc -> iܙy )!0 && t == 0) 277 t = t_t ; 278 ( t ); 279 } } 288 $__db_ovf ( dbc , pgno ) 289 DBC * dbc ; 290 db_pgno_t pgno ; 292 DB * dbp ; 293 DB_MPOOLFILE * mpf ; 294 PAGE * h ; 295 t ; 297 dbp = dbc ->dbp; 298 mpf = dbp ->mpf; 300 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , DB_MPOOL_DIRTY , & h )) != 0) 301 ( t ); 303 i( `DBC_LOGGING ( dbc )) { 304 i(( t = `__db_ovf_log ( dbp , 305 dbc -> txn , & `LSN ( h ), 0, h-> pgno , -1, &LSN(h))) != 0) { 306 () `__memp_ut ( mpf , h , dbc -> iܙy ); 307 ( t ); 310 `LSN_NOT_LOGGED ( `LSN ( h )); 321 -- `OV_REF ( h ); 323 ( `__memp_ut ( mpf , h , dbc -> iܙy )); 324 } } 333 $__db_doff ( dbc , pgno ) 334 DBC * dbc ; 335 db_pgno_t pgno ; 337 DB * dbp ; 338 PAGE * g ; 339 DB_LSN nu_l ; 340 DB_MPOOLFILE * mpf ; 341 DBT tmp_dbt ; 342 t ; 344 dbp = dbc ->dbp; 345 mpf = dbp ->mpf; 348 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & g )) != 0) 349 ( t ); 351 `DB_ASSERT ( dbp -> dbv , `TYPE ( g = P_OVERFLOW ); 356 i( `OV_REF ( g ) > 1) { 357 () `__memp_ut ( mpf , g , dbc -> iܙy ); 358 ( `__db_ovf ( dbc , pgno )); 361 i(( t = `__memp_dty ( mpf , 362 & g , dbc -> txn , dbc-> iܙy , 0)) != 0) { 363 () `__memp_ut ( mpf , g , dbc -> iܙy ); 364 ( t ); 367 i( `DBC_LOGGING ( dbc )) { 368 tmp_dbt . da = ( u_t8_t *) g + `P_OVERHEAD ( dbp ); 369 tmp_dbt . size = `OV_LEN ( g ); 370 `ZERO_LSN ( nu_l ); 371 i(( t = `__db_big_log ( dbp , dbc -> txn , 372 & `LSN ( g ), 0, DB_REM_BIG , 373 `PGNO ( g ), `PREV_PGNO (pagep), 374 `NEXT_PGNO ( g ), & tmp_dbt , 375 & `LSN ( g ), & nu_l , &null_lsn)) != 0) { 376 () `__memp_ut ( mpf , g , dbc -> iܙy ); 377 ( t ); 380 `LSN_NOT_LOGGED ( `LSN ( g )); 381 pgno = g -> xt_pgno ; 382 `OV_LEN ( g ) = 0; 383 i(( t = `__db_ ( dbc , g )) != 0) 384 ( t ); 385 } pgno ! PGNO_INVALID ); 388 } } 408 $__db_moff ( dbp , txn , dbt , pgno , , cmpfunc , cm ) 409 DB * dbp ; 410 DB_TXN * txn ; 411 cڡ DBT * dbt ; 412 db_pgno_t pgno ; 413 u_t32_t ; 414 (* cmpfunc `__P (( DB *, cڡ DBT *, cڡ DBT *)), * cm ; 416 DBT lol_dbt ; 417 DB_MPOOLFILE * mpf ; 418 PAGE * g ; 419 * buf ; 420 u_t32_t bufsize , cmp_bys , key_ ; 421 u_t8_t * p1 , * p2 ; 422 t ; 424 mpf = dbp ->mpf; 430 i( cmpfunc ! NULL ) { 431 `memt (& lol_dbt , 0, (local_dbt)); 432 buf = NULL ; 433 bufsize = 0; 435 i(( t = `__db_goff ( dbp , txn , 436 & lol_dbt , , pgno , & buf , & bufsize )) != 0) 437 ( t ); 439 * cm = `cmpfunc ( dbp , dbt , & lol_dbt ); 440 `__os_ ( dbp -> dbv , buf ); 445 * cm = 0, p1 = dbt -> da , 446 key_ = dbt -> size ; key_ > 0 && pgno ! PGNO_INVALID ;) { 447 i(( t = `__memp_fg ( mpf , & pgno , txn , 0, & g )) != 0) 448 ( t ); 450 cmp_bys = `OV_LEN ( g < key_ ? OV_LEN(pagep) : key_left; 451 - cmp_bys ; 452 key_ - cmp_bys ; 453 p2 = ( u_t8_t *) g + `P_OVERHEAD ( dbp ); 454 cmp_bys -- > 0; ++ p1 , ++ p2 ) 455 i(* p1 !* p2 ) { 456 * cm = ()* p1 - ()* p2 ; 459 pgno = `NEXT_PGNO ( g ); 460 i(( t = `__memp_ut ( mpf , g , dbp -> iܙy )) != 0) 461 ( t ); 462 i(* cm != 0) 465 i( key_ > 0) 466 * cm = 1; 467 i( > 0) 468 * cm = -1; 470 * cm = 0; 473 } } 493 $__db_coff ( dbp , txn , dbt , mch , cmpfunc , cm ) 494 DB * dbp ; 495 DB_TXN * txn ; 496 cڡ DBT * dbt , * mch ; 497 (* cmpfunc `__P (( DB *, cڡ DBT *, cڡ DBT *)), * cm ; 499 DBT lol_key , lol_mch ; 500 DB_MPOOLFILE * mpf ; 501 PAGE * dbt_g , * mch_g ; 502 db_pgno_t dbt_pgno , mch_pgno ; 503 u_t32_t cmp_bys , dbt_bufsz , dbt_n , mch_bufsz ; 504 u_t32_t mch_n , max_da , ge_sz ; 505 u_t8_t * p1 , * p2 ; 506 t ; 507 * dbt_buf , * mch_buf ; 509 mpf = dbp ->mpf; 510 ge_sz = dbp -> pgsize ; 511 * cm = 0; 512 dbt_buf = mch_buf = NULL ; 514 `DB_ASSERT ( dbp -> dbv , `HPAGE_PTYPE ( dbt -> da = H_OFFPAGE ); 515 `DB_ASSERT ( dbp -> dbv , `HPAGE_PTYPE ( mch -> da = H_OFFPAGE ); 518 `memy (& dbt_n , `HOFFPAGE_TLEN ( dbt -> da ), ( u_t32_t )); 519 `memy (& dbt_pgno , `HOFFPAGE_PGNO ( dbt -> da ), ( db_pgno_t )); 520 `memy (& mch_n , `HOFFPAGE_TLEN ( mch -> da ), ( u_t32_t )); 521 `memy (& mch_pgno , `HOFFPAGE_PGNO ( mch -> da ), ( db_pgno_t )); 522 max_da = ( dbt_n < mch_n ? dbt_len : match_len); 528 i( cmpfunc ! NULL ) { 529 `memt (& lol_key , 0, (local_key)); 530 `memt (& lol_mch , 0, (local_match)); 531 dbt_buf = mch_buf = NULL ; 532 dbt_bufsz = mch_bufsz = 0; 534 i(( t = `__db_goff ( dbp , txn , & lol_key , dbt_n , 535 dbt_pgno , & dbt_buf , & dbt_bufsz )) != 0) 536 r1 ; 537 i(( t = `__db_goff ( dbp , txn , & lol_mch , mch_n , 538 mch_pgno , & mch_buf , & mch_bufsz )) != 0) 539 r1 ; 541 * cm = `cmpfunc ( dbp , & lol_key , & lol_mch ); 543 r1 : i( dbt_buf ! NULL ) 544 `__os_ ( dbp -> dbv , dbt_buf ); 545 i( mch_buf ! NULL ) 546 `__os_ ( dbp -> dbv , mch_buf ); 547 ( t ); 551 dbt_pgno ! PGNO_INVALID && mch_pgno != PGNO_INVALID) { 552 i(( t = 553 `__memp_fg ( mpf , & dbt_pgno , txn , 0, & dbt_g )) != 0) 554 ( t ); 555 i(( t = 556 `__memp_fg ( mpf , & mch_pgno , txn , 0, & mch_g )) != 0) { 557 () `__memp_ut ( 558 mpf , dbt_g , DB_PRIORITY_UNCHANGED ); 559 ( t ); 561 cmp_bys = ge_sz < max_da ?age_sz : max_data; 562 p1 = ( u_t8_t *) dbt_g + `P_OVERHEAD ( dbp ), 563 p2 = ( u_t8_t *) mch_g + `P_OVERHEAD ( dbp ); 564 cmp_bys -- > 0; ++ p1 , ++ p2 ) 565 i(* p1 !* p2 ) { 566 * cm = ()* p1 - ()* p2 ; 570 dbt_pgno = `NEXT_PGNO ( dbt_g ); 571 mch_pgno = `NEXT_PGNO ( mch_g ); 572 max_da - ge_sz ; 573 i(( t = 574 `__memp_ut ( mpf , dbt_g , DB_PRIORITY_UNCHANGED )) != 0) { 575 () `__memp_ut ( 576 mpf , mch_g , DB_PRIORITY_UNCHANGED ); 577 ( t ); 579 i(( t = `__memp_ut ( 580 mpf , mch_g , DB_PRIORITY_UNCHANGED )) != 0) 581 ( t ); 582 i(* cm != 0) 590 i( dbt_n > mch_n ) 591 * cm = 1; 592 i( mch_n > dbt_n ) 593 * cm = -1; 595 * cm = 0; 599 } } @../db/db_ovfl_vrfy.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/db_am.h " 49 ~"dbc/db_vify.h " 50 ~"dbc/mp.h " 60 $__db_vrfy_ovow ( dbp , vdp , h , pgno , ags ) 61 DB * dbp ; 62 VRFY_DBINFO * vdp ; 63 PAGE * h ; 64 db_pgno_t pgno ; 65 u_t32_t ags ; 67 VRFY_PAGEINFO * p ; 68 isbad , t , t_t ; 70 isbad = 0; 71 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 72 ( t ); 74 i(( t = `__db_vrfy_dage ( dbp , vdp , h , pgno , ags )) != 0) { 75 i( t = DB_VERIFY_BAD ) 76 isbad = 1; 78 r ; 81 p -> fcou = `OV_REF ( h ); 82 i( p -> fcou < 1) { 83 `EPRINT (( dbp -> dbv , 85 ( u_lg ) pgno )); 86 isbad = 1; 90 p -> ޒ = `HOFFSET ( h ); 92 r : i(( t_t = `__db_vrfy_puagefo ( dbp -> dbv , vdp , p )) != 0) 93 t = t_t ; 94 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 95 } } 106 $__db_vrfy_ov_ruu ( dbp , vdp , pgno , , ags ) 107 DB * dbp ; 108 VRFY_DBINFO * vdp ; 109 db_pgno_t pgno ; 110 u_t32_t ; 111 u_t32_t ags ; 113 DB * pgt ; 114 DB_ENV * dbv ; 115 VRFY_PAGEINFO * p ; 116 db_pgno_t xt , ev ; 117 isbad , t , _t , t_t ; 118 u_t32_t fcou ; 120 dbv = dbp ->dbenv; 121 pgt = vdp ->pgset; 122 `DB_ASSERT ( dbv , pgt ! NULL ); 123 isbad = 0; 126 i(! `IS_VALID_PGNO ( pgno )) 127 ( DB_VERIFY_BAD ); 133 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 134 ( t ); 137 fcou = p ->refcount; 139 i( p -> ty ! P_OVERFLOW ) { 140 `EPRINT (( dbv , 142 ( u_lg ) pgno , (u_lg) p -> ty )); 143 t = DB_VERIFY_BAD ; 144 r ; 147 ev = p -> ev_pgno ; 148 i( ev ! PGNO_INVALID ) { 149 `EPRINT (( dbv , 151 ( u_lg ) pgno , (u_lg) ev )); 152 isbad = 1; 165 i(( t = `__db_vrfy_pgt_g ( pgt , pgno , & _t )) != 0) 166 r ; 167 i(( u_t32_t ) _t > fcou ) { 168 `EPRINT (( dbv , 170 ( u_lg ) pgno )); 171 t = DB_VERIFY_BAD ; 172 r ; 174 i(( t = `__db_vrfy_pgt_c ( pgt , pgno )) != 0) 175 r ; 201 i( `LF_ISSET ( ST_OVFL_LEAF )) { 202 i( `F_ISSET ( p , VRFY_OVFL_LEAFSEEN )) { 203 `EPRINT (( dbv , 205 ( u_lg ) pgno )); 206 t = DB_VERIFY_BAD ; 207 r ; 209 `F_SET ( p , VRFY_OVFL_LEAFSEEN ); 222 i( _t == 0) { 227 - p -> ޒ ; 230 i(! `LF_ISSET ( DB_SALVAGE )) 231 `__db_vrfy_ru_edback ( dbp , vdp ); 233 de ; 235 xt = p -> xt_pgno ; 238 i( xt = PGNO_INVALID ) 245 i(! `IS_VALID_PGNO ( xt )) { 246 `EPRINT (( dbv , 248 ( u_lg ) pgno , (u_lg) xt )); 249 t = DB_VERIFY_BAD ; 250 r ; 253 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0 || 254 ( t = `__db_vrfy_ggefo ( vdp , xt , & p )) != 0) 255 ( t ); 256 i( p -> ev_pgno ! pgno ) { 257 `EPRINT (( dbv , 259 ( u_lg ) xt , (u_lg) p -> ev_pgno , 260 ( u_lg ) pgno )); 261 isbad = 1; 268 pgno = xt ; 271 i( > 0) { 272 isbad = 1; 273 `EPRINT (( dbv , 274 "Pag%lu: ovow im income", ( u_lg ) pgno )); 277 de : 278 r : i(( t_t = 279 `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 280 t = t_t ; 281 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 282 } } 293 $__db__goff ( dbp , vdp , pgno , dbt , buf , ags ) 294 DB * dbp ; 295 VRFY_DBINFO * vdp ; 296 db_pgno_t pgno ; 297 DBT * dbt ; 298 * buf ; 299 u_t32_t ags ; 301 DB_MPOOLFILE * mpf ; 302 PAGE * h ; 303 t , t_t ; 304 u_t32_t bysg , bys ; 305 u_t8_t * c , * de ; 307 mpf = dbp ->mpf; 308 h = NULL ; 309 t = t_t = 0; 310 bysg = bys = 0; 312 ( pgno ! PGNO_INVALID && ( `IS_VALID_PGNO (pgno))) { 317 i(( t = `__db_lvage_mkde ( vdp , pgno )) != 0) 320 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 327 i(! `LF_ISSET ( DB_AGGRESSIVE && `TYPE ( h ! P_OVERFLOW ) { 328 t = DB_VERIFY_BAD ; 332 c = ( u_t8_t *) h + `P_OVERHEAD ( dbp ); 333 bys = `OV_LEN ( h ); 335 i( bys + `P_OVERHEAD ( dbp > dbp-> pgsize ) 336 bys = dbp -> pgsize - `P_OVERHEAD (dbp); 338 i(( t = `__os_loc ( dbp -> dbv , 339 bysg + bys , buf )) != 0) 342 de = *( u_t8_t **) buf + bysg ; 343 bysg + bys ; 345 `memy ( de , c , bys ); 347 pgno = `NEXT_PGNO ( h ); 349 i(( t = `__memp_ut ( mpf , h , DB_PRIORITY_UNCHANGED )) != 0) 351 h = NULL ; 358 i( t =0 || `LF_ISSET ( DB_AGGRESSIVE )) { 359 dbt -> size = bysg ; 360 dbt -> da = *(**) buf ; 364 i( h ! NULL && ( t_t = 365 `__memp_ut ( mpf , h , DB_PRIORITY_UNCHANGED )!0 && t == 0) 366 t = t_t ; 368 ( t ); 369 } } @../db/db_pr.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/hash.h " 15 ~"dbc/mp.h " 16 ~"dbc/qam.h " 17 ~"dbc/db_vify.h " 26 $__db_ldme () 28 pid_t pid ; 30 `__os_id ( NULL , & pid , NULL); 31 } } 33 #ifde HAVE_STATISTICS 34 __db_bma __P (( DB *, BTMETA *, u_t32_t )); 35 __db_hma __P (( DB *, HMETA *, u_t32_t )); 36 __db_ma __P (( DB *, DBMETA *, FN cڡ *, u_t32_t )); 37 cڡ * __db_gy_to_rg __P (( u_t32_t )); 38 __db_db __P (( DB *, u_t32_t )); 39 __db_off __P (( DB_ENV *, DB_MSGBUF *, *)); 40 __db_ __P (( DB *, DB_TXN *, u_t32_t )); 41 __db_qma __P (( DB *, QMETA *, u_t32_t )); 50 $__db_dume ( dbp , txn , , me ) 51 DB * dbp ; 52 DB_TXN * txn ; 53 * , * me ; 55 DB_ENV * dbv ; 56 FILE * , * ig_ ; 57 u_t32_t ags ; 58 t ; 60 dbv = dbp ->dbenv; 62 ags = 0; * != '\0'; ++op) 63 * ) { 65 `LF_SET ( DB_PR_PAGE ); 70 `LF_SET ( DB_PR_RECOVERYTEST ); 73 ( EINVAL ); 76 i( me ! NULL ) { 77 i(( = `fݒ ( me , "w")= NULL ) 78 ( `__os_g_o ()); 80 ig_ = dbv -> db_msgfe ; 81 dbv -> db_msgfe = ; 83 = ig_ = NULL ; 85 `__db_db ( dbp , ags ); 87 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 89 t = `__db_ ( dbp , txn , ags ); 91 i( ! NULL ) { 92 () `fo ( ); 93 dbv -> db_msgfe = ig_ ; 96 ( t ); 97 } } 99 cڡ FN g__db_ags_ [] = { 100 { DB_AM_CHKSUM , "checksumming" }, 101 { DB_AM_COMPENSATE , "created by compensatingransaction" }, 102 { DB_AM_CREATED , "database created" }, 103 { DB_AM_CREATED_MSTR , "encompassing file created" }, 104 { DB_AM_DBM_ERROR , "dbm/ndbmrror" }, 105 { DB_AM_DELIMITER , "variableength" }, 106 { DB_AM_DISCARD , "discard cachedages" }, 107 { DB_AM_DUP , "duplicates" }, 108 { DB_AM_DUPSORT , "sorted duplicates" }, 109 { DB_AM_ENCRYPT , "encrypted" }, 110 { DB_AM_FIXEDLEN , "fixed-lengthecords" }, 111 { DB_AM_INMEM , "in-memory" }, 112 { DB_AM_IN_RENAME , "file is beingenamed" }, 113 { DB_AM_NOT_DURABLE , "changesotogged" }, 114 { DB_AM_OPEN_CALLED , "open called" }, 115 { DB_AM_PAD , "pad value" }, 116 { DB_AM_PGDEF , "defaultage size" }, 117 { DB_AM_RDONLY , "read-only" }, 118 { DB_AM_READ_UNCOMMITTED , "read-uncommitted" }, 119 { DB_AM_RECNUM , "Btreeecordumbers" }, 120 { DB_AM_RECOVER , "opened forecovery" }, 121 { DB_AM_RENUMBER , "renumber" }, 122 { DB_AM_REVSPLITOFF , "noeverse splits" }, 123 { DB_AM_SECONDARY , "secondary" }, 124 { DB_AM_SNAPSHOT , "load on open" }, 125 { DB_AM_SUBDB , "subdatabases" }, 126 { DB_AM_SWAP , "needswap" }, 127 { DB_AM_TXN , "transactional" }, 128 { DB_AM_VERIFYING , "verifier" }, 129 { 0, NULL } 138 cڡ FN * 139 $__db_g_ags_ () 141 ( __db_ags_ ); 142 } } 149 $__db_db ( dbp , ags ) 150 DB * dbp ; 151 u_t32_t ags ; 153 DB_MSGBUF mb ; 154 DB_ENV * dbv ; 155 BTREE * bt ; 156 HASH * h ; 157 QUEUE * q ; 159 dbv = dbp ->dbenv; 161 `DB_MSGBUF_INIT (& mb ); 162 `__db_msg ( dbv , "In-memory DB structure:"); 163 `__db_msgadd ( dbv , & mb , "%s: %#lx", 164 `__db_dbty_to_rg ( dbp -> ty ), ( u_lg )dbp-> ags ); 165 `__db_ags ( dbv , & mb , dbp -> ags , __db_ags_ , " (", ")"); 166 `DB_MSGBUF_FLUSH ( dbv , & mb ); 168 dbp -> ty ) { 169 DB_BTREE : 170 DB_RECNO : 171 bt = dbp -> bt_ ; 172 `__db_msg ( dbv , "bt_meta: %lu bt_root: %lu", 173 ( u_lg ) bt -> bt_ma , (u_lg)bt-> bt_ro ); 174 `__db_msg ( dbv , "bt_mkey: %lu", ( u_lg ) bt -> bt_mkey ); 175 i(! `LF_ISSET ( DB_PR_RECOVERYTEST )) 176 `__db_msg ( dbv , "bt_compare: %#lx bt_prefix: %#lx", 177 `P_TO_ULONG ( bt -> bt_com ), 178 `P_TO_ULONG ( bt -> bt_efix )); 179 `__db_msg ( dbv , "bt_gno: %lu", ( u_lg ) bt -> bt_gno ); 180 i( dbp -> ty = DB_RECNO ) { 181 `__db_msg ( dbv , 183 ( u_lg ) bt -> _d , (u_lg)bt-> _dim , 184 ( u_lg ) bt -> _n , 185 bt -> _sour = NULL ? "" : bt->re_source); 186 `__db_msg ( dbv , 188 bt -> _modifd , bt-> _eof , ( u_lg )bt-> _ϡ ); 191 DB_HASH : 192 h = dbp -> h_ ; 193 `__db_msg ( dbv , "ma_pgno: %lu", ( u_lg ) h -> ma_pgno ); 194 `__db_msg ( dbv , "h_f: %lu", ( u_lg ) h -> h_f ); 195 `__db_msg ( dbv , "h_m: %lu", ( u_lg ) h -> h_m ); 196 i(! `LF_ISSET ( DB_PR_RECOVERYTEST )) 197 `__db_msg ( dbv , "h_hash: %#lx", `P_TO_ULONG ( h -> h_hash )); 199 DB_QUEUE : 200 q = dbp -> q_ ; 201 `__db_msg ( dbv , "q_ma: %lu", ( u_lg ) q -> q_ma ); 202 `__db_msg ( dbv , "q_ro: %lu", ( u_lg ) q -> q_ro ); 203 `__db_msg ( dbv , "re_pad: %#lxe_len: %lu", 204 ( u_lg ) q -> _d , (u_lg)q-> _n ); 205 `__db_msg ( dbv , "c_ge: %lu", ( u_lg ) q -> c_ge ); 206 `__db_msg ( dbv , "ge_ext: %lu", ( u_lg ) q -> ge_ext ); 208 DB_UNKNOWN : 212 } } 219 $__db_ ( dbp , txn , ags ) 220 DB * dbp ; 221 DB_TXN * txn ; 222 u_t32_t ags ; 224 DB_MPOOLFILE * mpf ; 225 PAGE * h ; 226 db_pgno_t i , ϡ ; 227 t ; 229 mpf = dbp ->mpf; 231 i( dbp -> ty = DB_QUEUE ) 232 ( `__db_queue ( dbp , ags )); 238 i(( t = `__memp_g_ϡ_pgno ( mpf , & ϡ )) != 0) 239 ( t ); 240 i = 0; i < ϡ ; ++i) { 241 i(( t = `__memp_fg ( mpf , & i , txn , 0, & h )) != 0) 242 ( t ); 243 () `__db_ge ( dbp , h , ags ); 244 i(( t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) 245 ( t ); 249 } } 256 $__db_ma ( dbp , dbma , , ags ) 257 DB * dbp ; 258 DBMETA * dbma ; 259 FN cڡ * ; 260 u_t32_t ags ; 262 DB_MSGBUF mb ; 263 DB_ENV * dbv ; 264 DB_MPOOLFILE * mpf ; 265 PAGE * h ; 266 db_pgno_t pgno ; 267 u_t8_t * p ; 268 t , t ; 269 cڡ * p ; 271 dbv = dbp ->dbenv; 272 mpf = dbp ->mpf; 273 `DB_MSGBUF_INIT (& mb ); 275 `__db_msg ( dbv , "\tmagic: %#lx", ( u_lg ) dbma -> magic ); 276 `__db_msg ( dbv , "\tvsi: %lu", ( u_lg ) dbma -> vsi ); 277 `__db_msg ( dbv , "\agesize: %lu", ( u_lg ) dbma -> gesize ); 278 `__db_msg ( dbv , "\y: %lu", ( u_lg ) dbma -> ty ); 279 `__db_msg ( dbv , "\tkeys: %lu\trecords: %lu", 280 ( u_lg ) dbma -> key_cou , (u_lg)dbma-> cd_cou ); 286 i(! `LF_ISSET ( DB_PR_RECOVERYTEST )) { 287 `__db_msgadd ( 288 dbv , & mb , "\t䓆i: %lu", ( u_lg ) dbma -> ); 289 pgno = dbma -> , 290 t = 0, p = ", "; pgno ! PGNO_INVALID ;) { 291 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) { 292 `DB_MSGBUF_FLUSH ( dbv , & mb ); 293 `__db_msg ( dbv , 295 ( u_lg ) pgno , `db_ ( t )); 298 pgno = h -> xt_pgno ; 299 () `__memp_ut ( mpf , h , dbp -> iܙy ); 300 `__db_msgadd ( dbv , & mb , "%s%lu", p , ( u_lg ) pgno ); 301 i(++ t % 10 == 0) { 302 `DB_MSGBUF_FLUSH ( dbv , & mb ); 303 t = 0; 304 p = "\t"; 306 p = ", "; 308 `DB_MSGBUF_FLUSH ( dbv , & mb ); 309 `__db_msg ( dbv , "\a_pgno: %lu", ( u_lg ) dbma -> ϡ_pgno ); 312 i( ! NULL ) { 313 `DB_MSGBUF_FLUSH ( dbv , & mb ); 314 `__db_msgadd ( dbv , & mb , "\tags: %#lx", ( u_lg ) dbma -> ags ); 315 `__db_ags ( dbv , & mb , dbma -> ags , , " (", ")"); 318 `DB_MSGBUF_FLUSH ( dbv , & mb ); 319 `__db_msgadd ( dbv , & mb , "\tuid: "); 320 p = ( u_t8_t *) dbma -> uid , 321 t = 0; c < DB_FILE_ID_LEN ; ++cnt) { 322 `__db_msgadd ( dbv , & mb , "%x", * p ++); 323 i( t < DB_FILE_ID_LEN - 1) 324 `__db_msgadd ( dbv , & mb , " "); 326 `DB_MSGBUF_FLUSH ( dbv , & mb ); 327 } } 334 $__db_bma ( dbp , h , ags ) 335 DB * dbp ; 336 BTMETA * h ; 337 u_t32_t ags ; 339 cڡ FN [] = { 340 { BTM_DUP , "duplicates" }, 341 { BTM_RECNO , "recno" }, 342 { BTM_RECNUM , "btree:recnum" }, 343 { BTM_FIXEDLEN , "recno:fixed-length" }, 344 { BTM_RENUMBER , "recno:renumber" }, 345 { BTM_SUBDB , "multiple-databases" }, 346 { BTM_DUPSORT , "sorted duplicates" }, 347 { 0, NULL } 349 DB_ENV * dbv ; 351 dbv = dbp ->dbenv; 353 `__db_ma ( dbp , ( DBMETA *) h , , ags ); 355 `__db_msg ( dbv , "\tmkey: %lu", ( u_lg ) h -> mkey ); 356 i( dbp -> ty = DB_RECNO ) 357 `__db_msg ( dbv , "\tre_len: %#lxe_pad: %#lx", 358 ( u_lg ) h -> _n , (u_lg)h-> _d ); 359 `__db_msg ( dbv , "\o: %lu", ( u_lg ) h -> ro ); 362 } } 369 $__db_hma ( dbp , h , ags ) 370 DB * dbp ; 371 HMETA * h ; 372 u_t32_t ags ; 374 cڡ FN [] = { 375 { DB_HASH_DUP , "duplicates" }, 376 { DB_HASH_SUBDB , "multiple-databases" }, 377 { DB_HASH_DUPSORT , "sorted duplicates" }, 378 { 0, NULL } 380 DB_ENV * dbv ; 381 DB_MSGBUF mb ; 382 i ; 384 dbv = dbp ->dbenv; 385 `DB_MSGBUF_INIT (& mb ); 387 `__db_ma ( dbp , ( DBMETA *) h , , ags ); 389 `__db_msg ( dbv , "\tmax_buck: %lu", ( u_lg ) h -> max_buck ); 390 `__db_msg ( dbv , "\thigh_mask: %#lx", ( u_lg ) h -> high_mask ); 391 `__db_msg ( dbv , "\ow_mask: %#lx", ( u_lg ) h -> low_mask ); 392 `__db_msg ( dbv , "\tf: %lu", ( u_lg ) h -> f ); 393 `__db_msg ( dbv , "\em: %lu", ( u_lg ) h -> m ); 394 `__db_msg ( dbv , "\th_chkey: %#lx", ( u_lg ) h -> h_chkey ); 395 `__db_msgadd ( dbv , & mb , "\tspareoints: "); 396 i = 0; i < NCACHED ; i++) 397 `__db_msgadd ( dbv , & mb , "%lu ", ( u_lg ) h -> es [ i ]); 398 `DB_MSGBUF_FLUSH ( dbv , & mb ); 401 } } 408 $__db_qma ( dbp , h , ags ) 409 DB * dbp ; 410 QMETA * h ; 411 u_t32_t ags ; 413 DB_ENV * dbv ; 415 dbv = dbp ->dbenv; 417 `__db_ma ( dbp , ( DBMETA *) h , NULL , ags ); 419 `__db_msg ( dbv , "\tf_o: %lu", ( u_lg ) h -> f_o ); 420 `__db_msg ( dbv , "\tcur_o: %lu", ( u_lg ) h -> cur_o ); 421 `__db_msg ( dbv , "\tre_len: %#lxe_pad: %lu", 422 ( u_lg ) h -> _n , (u_lg)h-> _d ); 423 `__db_msg ( dbv , "\ec_ge: %lu", ( u_lg ) h -> c_ge ); 424 `__db_msg ( dbv , "\age_ext: %lu", ( u_lg ) h -> ge_ext ); 427 } } 436 $__db_age ( dbp , txn , pgno ) 437 DB * dbp ; 438 DB_TXN * txn ; 439 db_pgno_t pgno ; 441 DB_MPOOLFILE * mpf ; 442 PAGE * h ; 443 t , t_t ; 445 mpf = dbp ->mpf; 447 i(( t = `__memp_fg ( mpf , & pgno , txn , 0, & h )) != 0) 448 ( t ); 450 t = `__db_ge ( dbp , h , DB_PR_PAGE ); 452 i(( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )!0 && t == 0) 453 t = t_t ; 455 ( t ); 456 } } 465 $__db_ge ( dbp , h , ags ) 466 DB * dbp ; 467 PAGE * h ; 468 u_t32_t ags ; 470 BINTERNAL * bi ; 471 BKEYDATA * bk ; 472 DB_ENV * dbv ; 473 DB_MSGBUF mb ; 474 HOFFPAGE a_hkd ; 475 QAMDATA * qp , * q ; 476 RINTERNAL * ri ; 477 db_dx_t dn , n , i , * p ; 478 db_pgno_t pgno ; 479 db_o_t o ; 480 u_t32_t gesize , qn ; 481 u_t8_t * , * hk , * p ; 482 ded , t ; 483 cڡ * s ; 484 * ; 486 dbv = dbp ->dbenv; 487 `DB_MSGBUF_INIT (& mb ); 493 i( `LF_ISSET ( DB_PR_RECOVERYTEST && `TYPE ( h = P_INVALID ) 496 i(( s = `__db_gy_to_rg ( `TYPE ( h ))= NULL ) { 497 `__db_msg ( dbv , "ILLEGAL PAGE TYPE:age: %luype: %lu", 498 ( u_lg ) h -> pgno , (u_lg) `TYPE (h)); 499 ( EINVAL ); 508 gesize = ( u_t32_t ) dbp -> mpf -> m -> . _gesize ; 511 `__db_msgadd ( dbv , & mb , "g%lu: %s:", ( u_lg ) h -> pgno , s ); 517 i(! `LF_ISSET ( DB_PR_RECOVERYTEST ) || 518 ( `TYPE ( h ! P_BTREEMETA && TYPE(h! P_HASHMETA && 519 `TYPE ( h ! P_QAMMETA && TYPE(h! P_QAMDATA )) 520 `__db_msgadd ( dbv , & mb , " LSN [%lu][%lu]:", 521 ( u_lg ) `LSN ( h ). fe , (u_lg)LSN(h). offt ); 527 `__db_msgadd ( dbv , & mb , "ev %lu", ( u_lg ) h -> v ); 530 i( `TYPE ( h = P_IBTREE || 531 `TYPE ( h = P_IRECNO || (TYPE(h= P_LRECNO && 532 h -> pgno =(( BTREE *) dbp -> bt_ )-> bt_ro )) 533 `__db_msgadd ( dbv , & mb , "ecds: %lu", ( u_lg ) `RE_NREC ( h )); 534 `DB_MSGBUF_FLUSH ( dbv , & mb ); 536 `TYPE ( h )) { 537 P_BTREEMETA : 538 ( `__db_bma ( dbp , ( BTMETA *) h , ags )); 539 P_HASHMETA : 540 ( `__db_hma ( dbp , ( HMETA *) h , ags )); 541 P_QAMMETA : 542 ( `__db_qma ( dbp , ( QMETA *) h , ags )); 543 P_QAMDATA : 544 i(! `LF_ISSET ( DB_PR_PAGE )) 547 qn = (( QUEUE *) dbp -> q_ )-> _n ; 548 o = ( h -> pgno - 1* `QAM_RECNO_PER_PAGE ( dbp ) + 1; 549 i = 0; 550 q = ( QAMDATA *)(( u_t8_t *) h + gesize - qn ); 551 qp = `QAM_GET_RECORD ( dbp , h , i ); q< q ; 552 o ++, i ++, qp = `QAM_GET_RECORD ( dbp , h , i)) { 553 i(! `F_ISSET ( qp , QAM_SET )) 556 `__db_msgadd ( dbv , & mb , "%s", 557 `F_ISSET ( qp , QAM_VALID ) ? "\t" : " D"); 558 `__db_msgadd ( dbv , & mb , "[%03lu] %4lu ", ( u_lg ) o , 559 ( u_lg )(( u_t8_t *) qp - (u_t8_*) h )); 560 `__db_ ( dbv , & mb , qp -> da , qn ); 567 s = "\t"; 568 i( `TYPE ( h ! P_IBTREE && TYPE(h! P_IRECNO ) { 569 `__db_msgadd ( dbv , & mb , "%sprev: %4luext: %4lu", 570 s , ( u_lg ) `PREV_PGNO ( h ), (u_lg) `NEXT_PGNO (h)); 571 s = " "; 573 i( `TYPE ( h = P_OVERFLOW ) { 574 `__db_msgadd ( dbv , & mb , 575 "%et: %4lu ", s , ( u_lg ) `OV_REF ( h )); 576 `__db_ ( dbv , & mb , ( u_t8_t *) h + `P_OVERHEAD ( dbp ), `OV_LEN (h)); 579 `__db_msgadd ( dbv , & mb , "%rs: %4lu", s , ( u_lg ) `NUM_ENT ( h )); 580 `__db_msgadd ( dbv , & mb , " offt: %4lu", ( u_lg ) `HOFFSET ( h )); 581 `DB_MSGBUF_FLUSH ( dbv , & mb ); 583 i( `TYPE ( h = P_INVALID || ! `LF_ISSET ( DB_PR_PAGE )) 586 t = 0; 587 p = `P_INP ( dbp , h ); 588 i = 0; i < `NUM_ENT ( h ); i++) { 589 i(( u_t )( `P_ENTRY ( dbp , h , i - ( u_t8_t *)h) < 590 ( u_t )( `P_OVERHEAD ( dbp )) || 591 ( size_t )( `P_ENTRY ( dbp , h , i - ( u_t8_t *)h> gesize ) { 592 `__db_msg ( dbv , 594 ( u_lg ) i , (u_lg) p [i]); 595 t = EINVAL ; 598 ded = 0; 599 `TYPE ( h )) { 600 P_HASH_UNSORTED : 601 P_HASH : 602 P_IBTREE : 603 P_IRECNO : 604 = `P_ENTRY ( dbp , h , i ); 606 P_LBTREE : 607 = `P_ENTRY ( dbp , h , i ); 608 ded = i % 2 == 0 && 609 `B_DISSET ( `GET_BKEYDATA ( dbp , h , i + O_INDX )-> ty ); 611 P_LDUP : 612 P_LRECNO : 613 = `P_ENTRY ( dbp , h , i ); 614 ded = `B_DISSET ( `GET_BKEYDATA ( dbp , h , i )-> ty ); 617 ty_r ; 619 `__db_msgadd ( dbv , & mb , "%s", ded ? " D" : "\t"); 620 `__db_msgadd ( 621 dbv , & mb , "[%03lu] %4lu ", ( u_lg ) i , (u_lg) p [i]); 622 `TYPE ( h )) { 623 P_HASH_UNSORTED : 624 P_HASH : 625 hk = ; 626 `HPAGE_PTYPE ( hk )) { 627 H_OFFDUP : 628 `memy (& pgno , 629 `HOFFDUP_PGNO ( hk ), ( db_pgno_t )); 630 `__db_msgadd ( dbv , & mb , 631 "%4lu [ofagdups]", ( u_lg ) pgno ); 632 `DB_MSGBUF_FLUSH ( dbv , & mb ); 634 H_DUPLICATE : 641 i( i != 0) 642 n = `LEN_HKEYDATA ( dbp , h , 0, i ); 644 n = 1; 646 `__db_msgadd ( dbv , & mb , "Duplicates:"); 647 `DB_MSGBUF_FLUSH ( dbv , & mb ); 648 p = `HKEYDATA_DATA ( hk ), 649 = p + n ; <p;) { 650 `memy (& dn , p , ( db_dx_t )); 651 p +( db_dx_t ); 652 `__db_msgadd ( dbv , & mb , "\t\t"); 653 `__db_ ( dbv , & mb , p , dn ); 654 p +( db_dx_t + dn ; 657 H_KEYDATA : 658 `__db_ ( dbv , & mb , `HKEYDATA_DATA ( hk ), 659 `LEN_HKEYDATA ( dbp , h , i == 0 ? 660 gesize : 0, i )); 662 H_OFFPAGE : 663 `memy (& a_hkd , hk , HOFFPAGE_SIZE ); 664 `__db_msgadd ( dbv , & mb , 666 ( u_lg ) a_hkd . , (u_lg_hkd. pgno ); 667 `DB_MSGBUF_FLUSH ( dbv , & mb ); 670 `DB_MSGBUF_FLUSH ( dbv , & mb ); 671 `__db_msg ( dbv , "ILLEGAL HASH PAGE TYPE: %lu", 672 ( u_lg ) `HPAGE_PTYPE ( hk )); 673 t = EINVAL ; 677 P_IBTREE : 678 bi = ; 679 `__db_msgadd ( dbv , & mb , 681 ( u_lg ) bi -> ecs , (u_lg)bi-> pgno , 682 ( u_lg ) bi -> ty ); 683 `B_TYPE ( bi -> ty )) { 684 B_KEYDATA : 685 `__db_ ( dbv , & mb , bi -> da , bi-> n ); 687 B_DUPLICATE : 688 B_OVERFLOW : 689 `__db_off ( dbv , & mb , bi -> da ); 692 `DB_MSGBUF_FLUSH ( dbv , & mb ); 693 `__db_msg ( dbv , "ILLEGAL BINTERNAL TYPE: %lu", 694 ( u_lg ) `B_TYPE ( bi -> ty )); 695 t = EINVAL ; 699 P_IRECNO : 700 ri = ; 701 `__db_msgadd ( dbv , & mb , "entries %4lugno %4lu", 702 ( u_lg ) ri -> ecs , (u_lgi-> pgno ); 703 `DB_MSGBUF_FLUSH ( dbv , & mb ); 705 P_LBTREE : 706 P_LDUP : 707 P_LRECNO : 708 bk = ; 709 `B_TYPE ( bk -> ty )) { 710 B_KEYDATA : 711 `__db_ ( dbv , & mb , bk -> da , bk-> n ); 713 B_DUPLICATE : 714 B_OVERFLOW : 715 `__db_off ( dbv , & mb , bk ); 718 `DB_MSGBUF_FLUSH ( dbv , & mb ); 719 `__db_msg ( dbv , 721 ( u_lg ) `B_TYPE ( bk -> ty )); 722 t = EINVAL ; 727 ty_r : `DB_MSGBUF_FLUSH ( dbv , & mb ); 728 `__db_msg ( dbv , 729 "ILLEGAL PAGE TYPE: %lu", ( u_lg ) `TYPE ( h )); 730 t = EINVAL ; 734 ( t ); 735 } } 744 $__db_ ( dbv , mbp , p , n ) 745 DB_ENV * dbv ; 746 DB_MSGBUF * mbp ; 747 u_t8_t * p ; 748 u_t32_t n ; 750 u_t32_t i ; 752 `__db_msgadd ( dbv , mbp , "n: %3lu", ( u_lg ) n ); 753 i( n != 0) { 754 `__db_msgadd ( dbv , mbp , " data: "); 755 i = n <20 ? : 20; i > 0; --i, ++ p ) { 756 i( `irt (()* p ) || *p == '\n') 757 `__db_msgadd ( dbv , mbp , "%c", * p ); 759 `__db_msgadd ( dbv , mbp , "%#.2x", ( u_t )* p ); 761 i( n > 20) 762 `__db_msgadd ( dbv , mbp , "..."); 764 `DB_MSGBUF_FLUSH ( dbv , mbp ); 765 } } 772 $__db_off ( dbv , mbp , vp ) 773 DB_ENV * dbv ; 774 DB_MSGBUF * mbp ; 775 * vp ; 777 BOVERFLOW * bo ; 779 bo = vp ; 780 `B_TYPE ( bo -> ty )) { 781 B_OVERFLOW : 782 `__db_msgadd ( dbv , mbp , "overflow:otalen: %4luage: %4lu", 783 ( u_lg ) bo -> , (u_lg)bo-> pgno ); 785 B_DUPLICATE : 786 `__db_msgadd ( 787 dbv , mbp , "dui:age: %4lu", ( u_lg ) bo -> pgno ); 793 `DB_MSGBUF_FLUSH ( dbv , mbp ); 794 } } 804 $__db_ags ( dbv , mbp , ags , , efix , suffix ) 805 DB_ENV * dbv ; 806 DB_MSGBUF * mbp ; 807 u_t32_t ags ; 808 FN cڡ * ; 809 cڡ * efix , * suffix ; 811 DB_MSGBUF mb ; 812 cڡ FN * p ; 813 found , de ; 814 cڡ * p ; 816 i( = NULL ) 824 i( mbp = NULL ) { 825 de = 1; 826 mbp = & mb ; 827 `DB_MSGBUF_INIT ( mbp ); 829 de = 0; 831 p = efix = NULL ? "" :refix; 832 found = 0, p = ; f-> mask != 0; ++fnp) 833 i( `LF_ISSET ( p -> mask )) { 834 `__db_msgadd ( dbv , mbp , "%s%s", p , p -> me ); 835 p = ", "; 836 found = 1; 839 i(( de || found && suffix ! NULL ) 840 `__db_msgadd ( dbv , mbp , "%s", suffix ); 841 i( de ) 842 `DB_MSGBUF_FLUSH ( dbv , mbp ); 843 } } 852 $__db_lockmode_to_rg ( mode ) 853 db_lockmode_t mode ; 855 mode ) { 856 DB_LOCK_NG : 858 DB_LOCK_READ : 860 DB_LOCK_WRITE : 862 DB_LOCK_WAIT : 864 DB_LOCK_IWRITE : 866 DB_LOCK_IREAD : 868 DB_LOCK_IWR : 870 DB_LOCK_READ_UNCOMMITTED : 872 DB_LOCK_WWRITE : 878 } } 885 $__db_gy_to_rg ( ty ) 886 u_t32_t ty ; 888 * s ; 890 s = NULL ; 891 ty ) { 892 P_BTREEMETA : 893 s = "btree metadata"; 895 P_LDUP : 896 s = "duplicate"; 898 P_HASH_UNSORTED : 899 s = "hash unsorted"; 901 P_HASH : 902 s = "hash"; 904 P_HASHMETA : 905 s = "hash metadata"; 907 P_IBTREE : 908 s = "btree internal"; 910 P_INVALID : 911 s = "invalid"; 913 P_IRECNO : 914 s = "recno internal"; 916 P_LBTREE : 917 s = "btreeeaf"; 919 P_LRECNO : 920 s = "recnoeaf"; 922 P_OVERFLOW : 923 s = "overflow"; 925 P_QAMMETA : 926 s = "queue metadata"; 928 P_QAMDATA : 929 s = "queue"; 935 ( s ); 936 } } 947 $__db_dume ( dbp , txn , , me ) 948 DB * dbp ; 949 DB_TXN * txn ; 950 * , * me ; 952 `COMPQUIET ( txn , NULL ); 953 `COMPQUIET ( , NULL ); 954 `COMPQUIET ( me , NULL ); 956 ( `__db__n_but ( dbp -> dbv )); 957 } } 965 cڡ FN * 966 $__db_g_ags_ () 972 ( NULL ); 973 } } 984 $__db_dump_ ( dbp , subme , back , hd , pag , keyag ) 985 DB * dbp ; 986 cڡ * subme ; 987 (* back `__P ((*, const *)); 988 * hd ; 989 pag , keyag ; 991 DB_ENV * dbv ; 992 DB_THREAD_INFO * ; 993 hd_check , t , t_t ; 995 dbv = dbp ->dbenv; 997 `PANIC_CHECK ( dbv ); 998 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->dump"); 1000 `ENV_ENTER ( dbv , ); 1003 hd_check = `IS_ENV_REPLICATED ( dbv ); 1004 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 1)) != 0) { 1005 hd_check = 0; 1006 r ; 1009 t = `__db_dump ( dbp , subme , back , hd , pag , keyag ); 1012 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 1013 t = t_t ; 1015 r : `ENV_LEAVE ( dbv , ); 1016 ( t ); 1017 } } 1027 $__db_dump ( dbp , subme , back , hd , pag , keyag ) 1028 DB * dbp ; 1029 cڡ * subme ; 1030 (* back `__P ((*, const *)); 1031 * hd ; 1032 pag , keyag ; 1034 DB_ENV * dbv ; 1035 DBC * db ; 1036 DBT key , da ; 1037 DBT keyt , d ; 1038 db_o_t o ; 1039 is_o , t , t_t ; 1040 * por ; 1042 dbv = dbp ->dbenv; 1044 i(( t = `__db_hd ( 1045 dbp , subme , pag , keyag , hd , back , NULL , 0)) != 0) 1046 ( t ); 1052 i(( t = `__db_curs ( dbp , NULL , & db , 0)) != 0) 1053 ( t ); 1055 `memt (& key , 0, (key)); 1056 `memt (& da , 0, (data)); 1057 i(( t = `__os_mloc ( dbv , 1024 * 1024, & da .data)) != 0) 1058 r ; 1059 da . un = 1024 * 1024; 1060 da . ags = DB_DBT_USERMEM ; 1061 is_o = ( dbp -> ty = DB_RECNO || dbp->ty = DB_QUEUE ); 1062 keyag = is_o ? keyflag : 1; 1063 i( is_o ) { 1064 keyt . da = & o ; 1065 keyt . size = ( o ); 1068 y : ( t = 1069 `__dbc_g ( db , & key , & da , DB_NEXT | DB_MULTIPLE_KEY )) == 0) { 1070 `DB_MULTIPLE_INIT ( por , & da ); 1072 i( is_o ) 1073 `DB_MULTIPLE_RECNO_NEXT ( por , & da , 1074 o , d . da , d. size ); 1076 `DB_MULTIPLE_KEY_NEXT ( por , 1077 & da , keyt .data, 1078 keyt . size , d . da , dataret.size); 1080 i( d . da = NULL ) 1083 i(( keyag && 1084 ( t = `__db_dbt (& keyt , pag , " ", 1085 hd , back , is_o )) != 0) || 1086 ( t = `__db_dbt (& d , pag , " ", 1087 hd , back , 0)) != 0) 1088 r ; 1091 i( t = DB_BUFFER_SMALL ) { 1092 da . size = ( u_t32_t ) `DB_ALIGN (data.size, 1024); 1093 i(( t = `__os_loc ( dbv , da . size , &data.data)) != 0) 1094 r ; 1095 da . un = da. size ; 1096 y ; 1098 i( t = DB_NOTFOUND ) 1099 t = 0; 1101 i(( t_t = `__db_foٔ ( hd , back )!0 && t == 0) 1102 t = t_t ; 1104 r : i(( t_t = `__dbc_o ( db )!0 && t == 0) 1105 t = t_t ; 1106 i( da .d! NULL ) 1107 `__os_ ( dbv , da .data); 1109 ( t ); 1110 } } 1120 $__db_dbt ( db , checkt , efix , hd , back , is_o ) 1121 DBT * db ; 1122 checkt ; 1123 cڡ * efix ; 1124 * hd ; 1125 (* back `__P ((*, const *)); 1126 is_o ; 1128 cڡ u_ch hex [] = "0123456789abcdef"; 1129 db_o_t o ; 1130 size_t n ; 1131 t ; 1132 #DBTBUFLEN 100 ) 1133 u_t8_t * p , * hp ; 1134 buf [ DBTBUFLEN ], hbuf [DBTBUFLEN]; 1142 i( efix ! NULL && ( t = `back ( hd ,refix)) != 0) 1143 ( t ); 1144 i( is_o ) { 1150 () `__ua_memy (& o , db -> da , (recno)); 1151 `tf ( buf , DBTBUFLEN , "%lu", ( u_lg ) o ); 1154 i(! checkt ) { 1155 n = ` ( buf ), p = ( u_t8_t *)buf, 1156 hp = ( u_t8_t *) hbuf ; n -- > 0; ++ p ) { 1157 * hp ++ = hex [( u_t8_t )(* p & 0xf0) >> 4]; 1158 * hp ++ = hex [* p & 0x0f]; 1160 * hp = '\0'; 1161 t = `back ( hd , hbuf ); 1163 t = `back ( hd , buf ); 1165 i( t != 0) 1166 ( t ); 1167 } i( checkt ) { 1168 n = db -> size , p = db-> da ;en--; ++p) 1169 i( `irt (()* p )) { 1170 i(* p == '\\' && 1171 ( t = `back ( hd , "\\")) != 0) 1172 ( t ); 1173 `tf ( buf , DBTBUFLEN , "%c", * p ); 1174 i(( t = `back ( hd , buf )) != 0) 1175 ( t ); 1177 `tf ( buf , DBTBUFLEN , "\\%c%c", 1178 hex [( u_t8_t )(* p & 0xf0) >> 4], 1179 hex [* p & 0x0f]); 1180 i(( t = `back ( hd , buf )) != 0) 1181 ( t ); 1184 n = db -> size , p = db-> da ;en--; ++p) { 1185 `tf ( buf , DBTBUFLEN , "%c%c", 1186 hex [( u_t8_t )(* p & 0xf0) >> 4], 1187 hex [* p & 0x0f]); 1188 i(( t = `back ( hd , buf )) != 0) 1189 ( t ); 1192 ( `back ( hd , "\n")); 1193 } } 1203 $__db_hd ( dbp , subme , pag , keyag , hd , back , vdp , ma_pgno ) 1204 DB * dbp ; 1205 cڡ * subme ; 1206 pag , keyag ; 1207 * hd ; 1208 (* back `__P ((*, const *)); 1209 VRFY_DBINFO * vdp ; 1210 db_pgno_t ma_pgno ; 1212 DBT dbt ; 1213 DB_ENV * dbv ; 1214 DBTYPE dbty ; 1215 VRFY_PAGEINFO * p ; 1216 u_t32_t ags , tmp_u_t32 ; 1217 size_t bu ; 1218 * buf ; 1219 usg_vdp , t , t_t , tmp_t ; 1221 t = 0; 1222 buf = NULL ; 1223 `COMPQUIET ( bu , 0); 1233 i( dbp = NULL ) 1234 dbv = NULL ; 1236 dbv = dbp ->dbenv; 1237 `DB_ASSERT ( dbv , dbp ! NULL || vdp != NULL); 1246 i( vdp ! NULL ) { 1247 i(( t = `__db_vrfy_ggefo ( vdp , ma_pgno , & p )) != 0) 1248 ( t ); 1250 i( `F_ISSET ( vdp , SALVAGE_PRINTABLE )) 1251 pag = 1; 1252 usg_vdp = 1; 1254 p = NULL ; 1255 usg_vdp = 0; 1262 i( dbp = NULL ) 1263 dbty = DB_BTREE ; 1264 i( usg_vdp ) 1265 p -> ty ) { 1266 P_BTREEMETA : 1267 i( `F_ISSET ( p , VRFY_IS_RECNO )) 1268 dbty = DB_RECNO ; 1270 dbty = DB_BTREE ; 1272 P_HASHMETA : 1273 dbty = DB_HASH ; 1275 P_QAMMETA : 1276 dbty = DB_QUEUE ; 1285 `DB_ASSERT ( dbv , `F_ISSET ( dbp , DB_AM_VERIFYING )); 1286 dbty = DB_BTREE ; 1290 dbty = dbp -> ty ; 1292 i(( t = `back ( hd , "VERSION=3\n")) != 0) 1293 r ; 1294 i( pag ) { 1295 i(( t = `back ( hd , "format=print\n")) != 0) 1296 r ; 1297 } i(( t = `back ( hd , "format=bytevalue\n")) != 0) 1298 r ; 1305 bu = 64; 1306 i(( t = `__os_mloc ( dbv , bu , & buf )) != 0) 1307 r ; 1308 i( subme ! NULL ) { 1309 `tf ( buf , bu , "database="); 1310 i(( t = `back ( hd , buf )) != 0) 1311 r ; 1312 `DB_INIT_DBT ( dbt , subme , ` (subname)); 1313 i(( t = `__db_dbt (& dbt , 1, NULL , hd , back , 0)) != 0) 1314 r ; 1316 dbty ) { 1317 DB_BTREE : 1318 i(( t = `back ( hd , "type=btree\n")) != 0) 1319 r ; 1320 i( usg_vdp ) 1321 tmp_t = `F_ISSET ( p , VRFY_HAS_RECNUMS ) ? 1 : 0; 1323 i(( t = `__db_g_ags ( dbp , & ags )) != 0) { 1324 `__db_r ( dbv , t , "DB->get_flags"); 1325 r ; 1327 tmp_t = `F_ISSET ( dbp , DB_AM_RECNUM ) ? 1 : 0; 1329 i( tmp_t && ( t = `back ( hd , "recnum=1\n")) != 0) 1330 r ; 1332 i( usg_vdp ) 1333 tmp_u_t32 = p -> bt_mkey ; 1335 i(( t = 1336 `__bam_g_bt_mkey ( dbp , & tmp_u_t32 )) != 0) { 1337 `__db_r ( dbv , t , "DB->get_bt_minkey"); 1338 r ; 1340 i( tmp_u_t32 !0 &&mp_u_t32 ! DEFMINKEYPAGE ) { 1341 `tf ( buf , bu , 1342 "bt_mkey=%lu\n", ( u_lg ) tmp_u_t32 ); 1343 i(( t = `back ( hd , buf )) != 0) 1344 r ; 1347 DB_HASH : 1348 #ifde HAVE_HASH 1349 i(( t = `back ( hd , "type=hash\n")) != 0) 1350 r ; 1351 i( usg_vdp ) 1352 tmp_u_t32 = p -> h_f ; 1354 i(( t = 1355 `__ham_g_h_f ( dbp , & tmp_u_t32 )) != 0) { 1356 `__db_r ( dbv , t , "DB->get_h_ffactor"); 1357 r ; 1359 i( tmp_u_t32 != 0) { 1360 `tf ( buf , bu , 1361 "h_f=%lu\n", ( u_lg ) tmp_u_t32 ); 1362 i(( t = `back ( hd , buf )) != 0) 1363 r ; 1366 i( usg_vdp ) 1367 tmp_u_t32 = p -> h_m ; 1369 i(( t = `__ham_g_h_m ( dbp , & tmp_u_t32 )) != 0) { 1370 `__db_r ( dbv , t , "DB->get_h_nelem"); 1371 r ; 1377 i( tmp_u_t32 > 1) { 1378 `tf ( buf , bu , 1379 "h_m=%lu\n", ( u_lg ) tmp_u_t32 ); 1380 i(( t = `back ( hd , buf )) != 0) 1381 r ; 1385 t = `__db_no_hash_am ( dbv ); 1386 r ; 1388 DB_QUEUE : 1389 #ifde HAVE_QUEUE 1390 i(( t = `back ( hd , "type=queue\n")) != 0) 1391 r ; 1392 i( usg_vdp ) 1393 tmp_u_t32 = vdp -> _n ; 1395 i(( t = `__m_g__n ( dbp , & tmp_u_t32 )) != 0) { 1396 `__db_r ( dbv , t , "DB->get_re_len"); 1397 r ; 1399 `tf ( buf , bu , "_n=%lu\n", ( u_lg ) tmp_u_t32 ); 1400 i(( t = `back ( hd , buf )) != 0) 1401 r ; 1403 i( usg_vdp ) 1404 tmp_t = () vdp -> _d ; 1406 i(( t = `__m_g__d ( dbp , & tmp_t )) != 0) { 1407 `__db_r ( dbv , t , "DB->get_re_pad"); 1408 r ; 1410 i( tmp_t != 0 &&mp_int != ' ') { 1411 `tf ( buf , bu , "_d=%#x\n", tmp_t ); 1412 i(( t = `back ( hd , buf )) != 0) 1413 r ; 1416 i( usg_vdp ) 1417 tmp_u_t32 = vdp -> ge_ext ; 1419 i(( t = 1420 `__qam_g_exsize ( dbp , & tmp_u_t32 )) != 0) { 1421 `__db_r ( dbv , t , "DB->get_q_extentsize"); 1422 r ; 1424 i( tmp_u_t32 != 0) { 1425 `tf ( buf , bu , 1426 "exsize=%lu\n", ( u_lg ) tmp_u_t32 ); 1427 i(( t = `back ( hd , buf )) != 0) 1428 r ; 1432 t = `__db_no_queue_am ( dbv ); 1433 r ; 1435 DB_RECNO : 1436 i(( t = `back ( hd , "type=recno\n")) != 0) 1437 r ; 1438 i( usg_vdp ) 1439 tmp_t = `F_ISSET ( p , VRFY_IS_RRECNO ) ? 1 : 0; 1441 tmp_t = `F_ISSET ( dbp , DB_AM_RENUMBER ) ? 1 : 0; 1442 i( tmp_t != 0 && 1443 ( t = `back ( hd , "renumber=1\n")) != 0) 1444 r ; 1446 i( usg_vdp ) 1447 tmp_t = `F_ISSET ( p , VRFY_IS_FIXEDLEN ) ? 1 : 0; 1449 tmp_t = `F_ISSET ( dbp , DB_AM_FIXEDLEN ) ? 1 : 0; 1450 i( tmp_t ) { 1451 i( usg_vdp ) 1452 tmp_u_t32 = p -> _n ; 1454 i(( t = 1455 `__m_g__n ( dbp , & tmp_u_t32 )) != 0) { 1456 `__db_r ( dbv , t , "DB->get_re_len"); 1457 r ; 1459 `tf ( buf , bu , 1460 "_n=%lu\n", ( u_lg ) tmp_u_t32 ); 1461 i(( t = `back ( hd , buf )) != 0) 1462 r ; 1464 i( usg_vdp ) 1465 tmp_t = () p -> _d ; 1467 i(( t = 1468 `__m_g__d ( dbp , & tmp_t )) != 0) { 1469 `__db_r ( dbv , t , "DB->get_re_pad"); 1470 r ; 1472 i( tmp_t != 0 &&mp_int != ' ') { 1473 `tf ( buf , 1474 bu , "_d=%#x\n", ( u_t ) tmp_t ); 1475 i(( t = `back ( hd , buf )) != 0) 1476 r ; 1480 DB_UNKNOWN : 1481 t = `__db_unknown_th ( dbv , "__db_prheader"); 1482 r ; 1485 i( usg_vdp ) { 1486 i( `F_ISSET ( p , VRFY_HAS_CHKSUM )) 1487 i(( t = `back ( hd , "chksum=1\n")) != 0) 1488 r ; 1489 i( `F_ISSET ( p , VRFY_HAS_DUPS )) 1490 i(( t = `back ( hd , "duplicates=1\n")) != 0) 1491 r ; 1492 i( `F_ISSET ( p , VRFY_HAS_DUPSORT )) 1493 i(( t = `back ( hd , "dupsort=1\n")) != 0) 1494 r ; 1502 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 1503 i(( t = `back ( hd , "chksum=1\n")) != 0) 1504 r ; 1505 i( `F_ISSET ( dbp , DB_AM_DUP )) 1506 i(( t = `back ( hd , "duplicates=1\n")) != 0) 1507 r ; 1508 i( `F_ISSET ( dbp , DB_AM_DUPSORT )) 1509 i(( t = `back ( hd , "dupsort=1\n")) != 0) 1510 r ; 1511 i(! `F_ISSET ( dbp , DB_AM_PGDEF )) { 1512 `tf ( buf , bu , 1513 "db_gesize=%lu\n", ( u_lg ) dbp -> pgsize ); 1514 i(( t = `back ( hd , buf )) != 0) 1515 r ; 1519 i( keyag && ( t = `back ( hd , "keys=1\n")) != 0) 1520 r ; 1522 t = `back ( hd , "HEADER=END\n"); 1524 r : i( usg_vdp && 1525 ( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1526 t = t_t ; 1527 i( buf ! NULL ) 1528 `__os_ ( dbv , buf ); 1530 ( t ); 1531 } } 1542 $__db_foٔ ( hd , back ) 1543 * hd ; 1544 (* back `__P ((*, const *)); 1546 ( `back ( hd , "DATA=END\n")); 1547 } } 1556 $__db__back ( hd , r_g ) 1557 * hd ; 1558 cڡ * r_g ; 1560 * r ; 1561 FILE * f ; 1563 r = (*) r_g ; 1564 f = ( FILE *) hd ; 1566 i( `rtf ( f , "%s", r !() ` (str)) 1567 ( EIO ); 1570 } } 1579 $__db_dbty_to_rg ( ty ) 1580 DBTYPE ty ; 1582 ty ) { 1583 DB_BTREE : 1585 DB_HASH : 1587 DB_RECNO : 1589 DB_QUEUE : 1591 DB_UNKNOWN : 1596 } } @../db/db_rec.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/log.h " 14 ~"dbc/mp.h " 15 ~"dbc/hash.h " 17 __db_pg__cov_t __P (( DB_ENV *, 18 __db_pg_da_gs *, DB *, DB_LSN *, DB_MPOOLFILE *, db_cs , )); 19 __db_pg__cov_42_t __P (( DB_ENV *, 20 __db_pg_da_42_gs *, 21 DB *, DB_LSN *, DB_MPOOLFILE *, db_cs , )); 31 $__db_addm_cov ( dbv , db , lp , , fo ) 32 DB_ENV * dbv ; 33 DBT * db ; 34 DB_LSN * lp ; 35 db_cs ; 36 * fo ; 38 __db_addm_gs * gp ; 39 DB * fe_dbp ; 40 DBC * dbc ; 41 DB_MPOOLFILE * mpf ; 42 PAGE * g ; 43 cmp_n , cmp_p , modifd , t ; 45 g = NULL ; 46 `REC_PRINT ( __db_addm_t ); 47 `REC_INTRO ( __db_addm_ad , 1, 1); 49 `REC_FGET ( mpf , gp -> pgno , & g , de ); 50 modifd = 0; 52 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 53 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 54 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 55 i(( cmp_p =0 && `DB_REDO ( && gp -> code = DB_ADD_DUP ) || 56 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_REM_DUP )) { 58 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 59 i(( t = `__db_pem ( dbc , g , gp -> dx ,rgp-> nbys , 60 gp -> hdr . size =0 ? NULL : &argp->hdr, 61 gp -> dbt . size =0 ? NULL : &argp->dbt)) != 0) 62 out ; 63 modifd = 1; 65 } i(( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_ADD_DUP ) || 66 ( cmp_p =0 && `DB_REDO ( && gp -> code = DB_REM_DUP )) { 68 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 69 i(( t = `__db_dem ( dbc , 70 g , gp -> dx ,rgp-> nbys )) != 0) 71 out ; 72 modifd = 1; 75 i( modifd ) { 76 i( `DB_REDO ( )) 77 `LSN ( g * lp ; 79 `LSN ( g gp -> g ; 82 i(( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 83 out ; 84 g = NULL ; 86 de : * lp = gp -> ev_l ; 87 t = 0; 89 out : i( g ! NULL ) 90 () `__memp_ut ( mpf , g , dbc -> iܙy ); 91 REC_CLOSE ; 92 } } 99 $__db_big_cov ( dbv , db , lp , , fo ) 100 DB_ENV * dbv ; 101 DBT * db ; 102 DB_LSN * lp ; 103 db_cs ; 104 * fo ; 106 __db_big_gs * gp ; 107 DB * fe_dbp ; 108 DBC * dbc ; 109 DB_MPOOLFILE * mpf ; 110 PAGE * g ; 111 cmp_n , cmp_p , modifd , t ; 113 g = NULL ; 114 `REC_PRINT ( __db_big_t ); 115 `REC_INTRO ( __db_big_ad , 1, 0); 117 `REC_FGET ( mpf , gp -> pgno , & g , age ); 118 modifd = 0; 126 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 127 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 128 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 129 i(( cmp_p =0 && `DB_REDO ( && gp -> code = DB_ADD_BIG ) || 130 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_REM_BIG )) { 132 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 133 `P_INIT ( g , fe_dbp -> pgsize , gp -> pgno ,rgp-> ev_pgno , 134 gp -> xt_pgno , 0, P_OVERFLOW ); 135 `OV_LEN ( g gp -> dbt . size ; 136 `OV_REF ( g ) = 1; 137 `memy (( u_t8_t *) g + `P_OVERHEAD ( fe_dbp ), gp -> dbt . da , 138 gp -> dbt . size ); 139 `PREV_PGNO ( g gp -> ev_pgno ; 140 modifd = 1; 141 } i(( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_ADD_BIG ) || 142 ( cmp_p =0 && `DB_REDO ( && gp -> code = DB_REM_BIG )) { 148 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 149 modifd = 1; 151 i( modifd ) 152 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 154 t = `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 155 g = NULL ; 156 i( t != 0) 157 out ; 163 i( gp -> code = DB_REM_BIG ) 164 de ; 167 age : i( gp -> ev_pgno ! PGNO_INVALID ) { 168 `REC_FGET ( mpf , gp -> ev_pgno , & g , age ); 169 modifd = 0; 171 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 172 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> evl ); 173 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> evl ); 175 i( cmp_p =0 && `DB_REDO ( && gp -> code = DB_ADD_BIG ) { 177 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 178 `NEXT_PGNO ( g gp -> pgno ; 179 modifd = 1; 180 } i( cmp_n == 0 && 181 `DB_UNDO ( && gp -> code = DB_ADD_BIG ) { 183 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 184 `NEXT_PGNO ( g gp -> xt_pgno ; 185 modifd = 1; 187 i( modifd ) 188 `LSN ( g `DB_REDO ( ? * lp : gp -> evl ; 189 t = `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 190 g = NULL ; 191 i( t != 0) 192 out ; 194 g = NULL ; 197 age : i( gp -> xt_pgno ! PGNO_INVALID ) { 198 `REC_FGET ( mpf , gp -> xt_pgno , & g , de ); 199 modifd = 0; 201 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 202 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> x ); 203 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> x ); 204 i( cmp_p =0 && `DB_REDO ( )) { 205 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 206 `PREV_PGNO ( g PGNO_INVALID ; 207 modifd = 1; 208 } i( cmp_n =0 && `DB_UNDO ( )) { 209 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 210 `PREV_PGNO ( g gp -> pgno ; 211 modifd = 1; 213 i( modifd ) 214 `LSN ( g `DB_REDO ( ? * lp : gp -> x ; 215 t = `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 216 g = NULL ; 217 i( t != 0) 218 out ; 220 g = NULL ; 222 de : * lp = gp -> ev_l ; 223 t = 0; 225 out : i( g ! NULL ) 226 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 227 REC_CLOSE ; 228 } } 238 $__db_ovf_cov ( dbv , db , lp , , fo ) 239 DB_ENV * dbv ; 240 DBT * db ; 241 DB_LSN * lp ; 242 db_cs ; 243 * fo ; 245 __db_ovf_gs * gp ; 246 DB * fe_dbp ; 247 DBC * dbc ; 248 DB_MPOOLFILE * mpf ; 249 PAGE * g ; 250 cmp , t ; 252 g = NULL ; 253 `REC_PRINT ( __db_ovf_t ); 254 `REC_INTRO ( __db_ovf_ad , 1, 0); 256 `REC_FGET ( mpf , gp -> pgno , & g , de ); 258 cmp = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 259 `CHECK_LSN ( dbv , , cmp , & `LSN ( g ), & gp -> l ); 260 i( cmp =0 && `DB_REDO ( )) { 262 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 263 `OV_REF ( g + gp -> adju ; 264 g -> l = * lp ; 265 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 267 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 268 `OV_REF ( g - gp -> adju ; 269 g -> l = gp ->lsn; 271 t = `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 272 g = NULL ; 273 i( t != 0) 274 out ; 275 g = NULL ; 277 de : * lp = gp -> ev_l ; 278 t = 0; 280 out : i( g ! NULL ) 281 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 282 REC_CLOSE ; 283 } } 293 $__db_debug_cov ( dbv , db , lp , , fo ) 294 DB_ENV * dbv ; 295 DBT * db ; 296 DB_LSN * lp ; 297 db_cs ; 298 * fo ; 300 __db_debug_gs * gp ; 301 t ; 303 `COMPQUIET ( dbv , NULL ); 304 `COMPQUIET ( , DB_TXN_ABORT ); 305 `COMPQUIET ( fo , NULL ); 307 `REC_PRINT ( __db_debug_t ); 308 `REC_NOOP_INTRO ( __db_debug_ad ); 310 * lp = gp -> ev_l ; 311 t = 0; 313 REC_NOOP_CLOSE ; 314 } } 324 $__db_no_cov ( dbv , db , lp , , fo ) 325 DB_ENV * dbv ; 326 DBT * db ; 327 DB_LSN * lp ; 328 db_cs ; 329 * fo ; 331 __db_no_gs * gp ; 332 DB * fe_dbp ; 333 DBC * dbc ; 334 DB_MPOOLFILE * mpf ; 335 PAGE * g ; 336 cmp_n , cmp_p , t ; 338 g = NULL ; 339 `REC_PRINT ( __db_no_t ); 340 `REC_INTRO ( __db_no_ad , 0, 0); 342 `REC_FGET ( mpf , gp -> pgno , & g , de ); 344 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 345 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> evl ); 346 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> evl ); 347 i( cmp_p =0 && `DB_REDO ( )) { 348 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 349 `LSN ( g * lp ; 350 } i( cmp_n =0 && `DB_UNDO ( )) { 351 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 352 `LSN ( g gp -> evl ; 354 t = `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 355 g = NULL ; 357 de : * lp = gp -> ev_l ; 358 out : i( g ! NULL ) 359 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 360 REC_CLOSE ; 361 } } 371 $__db_pg_loc_cov ( dbv , db , lp , , fo ) 372 DB_ENV * dbv ; 373 DBT * db ; 374 DB_LSN * lp ; 375 db_cs ; 376 * fo ; 378 __db_pg_loc_gs * gp ; 379 DB * fe_dbp ; 380 DBC * dbc ; 381 DBMETA * ma ; 382 DB_MPOOLFILE * mpf ; 383 PAGE * g ; 384 db_pgno_t pgno ; 385 cmp_n , cmp_p , d , v , t ; 387 ma = NULL ; 388 g = NULL ; 389 d = 0; 390 `REC_PRINT ( __db_pg_loc_t ); 391 `REC_INTRO ( __db_pg_loc_ad , 0, 0); 399 pgno = PGNO_BASE_MD ; 400 i(( t = `__memp_fg ( mpf , & pgno , NULL , 401 0, & ma )) != 0) { 403 i( `DB_REDO ( )) { 404 t = `__db_pgr ( fe_dbp , pgno ,et); 405 out ; 407 de ; 409 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 410 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 411 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 412 i( cmp_p =0 && `DB_REDO ( )) { 414 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 415 `LSN ( ma * lp ; 416 ma -> = gp -> xt ; 417 i( gp -> pgno > ma -> ϡ_pgno ) 418 ma -> ϡ_pgno = gp -> pgno ; 419 } i( cmp_n =0 && `DB_UNDO ( )) { 421 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 422 `LSN ( ma gp -> ma_l ; 428 i(! `IS_ZERO_LSN ( gp -> ge_l )) 429 ma -> = gp -> pgno ; 430 #ifde HAVE_FTRUNCATE 436 ma -> ϡ_pgno = gp ->last_pgno; 440 #ifde HAVE_FTRUNCATE 446 i( = DB_TXN_ABORT && ! `IS_ZERO_LSN ( gp -> ge_l )) { 447 db_pgno_t * li ; 448 u_t32_t m ; 450 i(( t = `__memp_g_li ( mpf , & m , & li )) != 0) 451 out ; 452 i( li ! NULL ) { 453 i(( t = 454 `__memp_exnd_li ( mpf , m + 1, & li )) != 0) 455 out ; 456 i( m != 0) 457 `memmove ( li + 1,i, m * (list)); 458 * li = gp -> pgno ; 471 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 472 0, & g )) != 0) { 481 #ifde HAVE_FTRUNCATE 482 i( `DB_UNDO ( )) 483 do_un ; 485 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 486 DB_MPOOL_CREATE , & g )) != 0) { 487 i( `DB_UNDO ( && t = ENOSPC ) 488 do_un ; 489 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 490 out ; 492 d = 1; 496 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 497 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> ge_l ); 506 i( `IS_ZERO_LSN ( `LSN ( g )) || 507 ( `IS_ZERO_LSN ( gp -> ge_l && `IS_INIT_LSN ( `LSN ( g )))) 508 cmp_p = 0; 510 #ide HAVE_FTRUNCATE 519 i( `IS_INIT_LSN ( `LSN ( g )&& IS_INIT_LSN( gp -> ge_l )) 520 cmp_n = 0; 523 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> ge_l ); 530 i( `DB_REDO ( && cmp_p == 0) { 532 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 533 gp -> y ) { 534 P_LBTREE : 535 P_LRECNO : 536 P_LDUP : 537 v = LEAFLEVEL ; 540 v = 0; 543 `P_INIT ( g , fe_dbp -> pgsize , 544 gp -> pgno , PGNO_INVALID , PGNO_INVALID, v ,rgp-> y ); 546 g -> l = * lp ; 547 } i( `DB_UNDO ( && ( cmp_n =0 || d )) { 554 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 555 `P_INIT ( g , fe_dbp -> pgsize , 556 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 558 g -> l = gp -> ge_l ; 561 do_un : 566 i(( g = NULL || `IS_ZERO_LSN ( `LSN (pagep))) && 567 `IS_ZERO_LSN ( gp -> ge_l && `DB_UNDO ( )) { 568 #ifde HAVE_FTRUNCATE 570 i( g ! NULL ) { 571 i(( t = `__memp_ut ( mpf , 572 g , DB_PRIORITY_VERY_LOW )) != 0) 573 out ; 574 g = NULL ; 577 i( ma -> ϡ_pgno < gp -> pgno && ( t = 578 `__memp_run ( mpf , gp -> pgno , MP_TRUNC_RECOVER )) != 0) 579 out ; 582 i(( t = `__db_add_limbo ( dbv , 583 fo , gp -> feid ,rgp-> pgno , 1)) != 0) 584 out ; 586 i( gp -> pgno > ma -> ϡ_pgno ) { 587 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 588 ma -> ϡ_pgno = gp -> pgno ; 593 i( g ! NULL ) { 594 t = `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 595 g = NULL ; 596 i( t != 0) 597 out ; 600 t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy ); 601 ma = NULL ; 602 i( t != 0) 603 out ; 605 de : * lp = gp -> ev_l ; 606 t = 0; 608 out : i( g ! NULL ) 609 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 610 i( ma ! NULL ) 611 () `__memp_ut ( mpf , ma , fe_dbp -> iܙy ); 612 i( t = ENOENT && = DB_TXN_BACKWARD_ALLOC ) 613 t = 0; 614 REC_CLOSE ; 615 } } 621 $__db_pg__cov_t ( dbv , gp , fe_dbp , lp , mpf , , da ) 622 DB_ENV * dbv ; 623 __db_pg_da_gs * gp ; 624 DB * fe_dbp ; 625 DB_LSN * lp ; 626 DB_MPOOLFILE * mpf ; 627 db_cs ; 628 da ; 630 DBMETA * ma ; 631 DB_LSN cy_l ; 632 PAGE * g , * evp ; 633 cmp_n , cmp_p , is_ma , t ; 635 ma = NULL ; 636 g = NULL ; 637 evp = NULL ; 645 is_ma = gp -> ma_pgno = PGNO_BASE_MD ; 647 `REC_FGET ( mpf , gp -> ma_pgno , & ma , check_ma ); 649 i( gp -> ma_pgno ! PGNO_BASE_MD ) 650 evp = ( PAGE *) ma ; 652 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 653 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 654 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 660 i( cmp_p =0 && `DB_REDO ( )) { 661 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 662 #ifde HAVE_FTRUNCATE 667 i( gp -> pgno =gp-> ϡ_pgno ) 668 ma -> ϡ_pgno = gp -> pgno - 1; 669 i( is_ma ) 670 ma -> = gp -> pgno ; 672 `NEXT_PGNO ( evp gp -> pgno ; 675 i( is_ma ) 676 ma -> = gp -> pgno ; 678 `NEXT_PGNO ( evp gp -> pgno ; 684 i( is_ma && ma -> ϡ_pgno < ma-> ) 685 ma -> ϡ_pgno = ma-> ; 687 `LSN ( ma * lp ; 688 } i( cmp_n =0 && `DB_UNDO ( )) { 690 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 691 i( is_ma ) { 692 i( ma -> ϡ_pgno < gp -> pgno ) 693 ma -> ϡ_pgno = gp -> pgno ; 694 ma -> = gp -> xt ; 696 `NEXT_PGNO ( evp gp -> xt ; 697 `LSN ( ma gp -> ma_l ; 700 check_ma : 701 i( t !0 && is_ma ) { 703 t = `__db_pgr ( fe_dbp , gp -> ma_pgno ,et); 704 out ; 716 #ifde HAVE_FTRUNCATE 717 i( `DB_REDO ( || ( is_ma && ma -> ϡ_pgno < gp -> pgno )) { 718 i(( t = 719 `__memp_fg ( mpf , & gp -> pgno , NULL , 0, & g )) != 0) { 720 i( t ! DB_PAGE_NOTFOUND ) 721 out ; 722 i( is_ma && 723 `DB_REDO ( && ma -> ϡ_pgno < gp -> pgno ) 724 unc ; 725 de ; 729 i(( t = 730 `__memp_fg ( mpf , & gp -> pgno , NULL , DB_MPOOL_CREATE , & g )) != 0) 731 out ; 733 () `__ua_memy (& cy_l , & `LSN ( gp -> hd . da ), ( DB_LSN )); 734 cmp_n = `IS_ZERO_LSN ( `LSN ( g )? 0 : `LOG_COMPARE ( lp , &LSN(pagep)); 735 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 737 #ifde HAVE_FTRUNCATE 743 i( `IS_ZERO_LSN ( `LSN ( g ))) 744 cmp_p = 0; 747 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & cy_l ); 748 i( `DB_REDO ( ) && 749 ( cmp_p == 0 || 750 ( `IS_ZERO_LSN ( cy_l ) && 751 `LOG_COMPARE (& `LSN ( g ), & gp -> ma_l ) <= 0))) { 753 #ifde HAVE_FTRUNCATE 758 i( is_ma && ma -> ϡ_pgno < gp -> pgno && 759 gp -> ϡ_pgno <gp-> pgno ) { 760 i(( t = `__memp_ut ( mpf , 761 g , DB_PRIORITY_VERY_LOW )) != 0) 762 out ; 763 g = NULL ; 764 unc : i(( t = `__memp_run ( mpf , 765 gp -> pgno , MP_TRUNC_RECOVER )) != 0) 766 out ; 767 } i( gp -> ϡ_pgno =gp-> pgno ) { 769 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 770 `P_INIT ( g , 0, PGNO_INVALID , 771 PGNO_INVALID , PGNO_INVALID, 0, P_INVALID ); 772 `ZERO_LSN ( g -> l ); 776 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 777 `P_INIT ( g , fe_dbp -> pgsize , 778 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 779 g -> l = * lp ; 782 } i( cmp_n =0 && `DB_UNDO ( )) { 784 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 785 `memy ( g , gp -> hd . da ,rgp->hd. size ); 786 i( da ) 787 `memy (( u_t8_t *) g + `HOFFSET (pagep), 788 gp -> da .da,rgp->da. size ); 790 i( g ! NULL && 791 ( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 792 out ; 794 g = NULL ; 795 #ifde HAVE_FTRUNCATE 800 i( = DB_TXN_ABORT && gp -> pgno !gp-> ϡ_pgno ) { 801 db_pgno_t * ; 802 u_t32_t m , pos ; 804 i(( t = `__memp_g_li ( mpf , & m , & )) != 0) 805 out ; 806 i( ! NULL ) { 807 pos = 0; 808 i(! is_ma ) { 809 `__db_li_pos ( gp -> pgno , , m , & pos ); 811 `DB_ASSERT ( dbv , gp -> pgno = [ pos ]); 812 `DB_ASSERT ( dbv , 813 gp -> ma_pgno = [ pos - 1]); 816 i( pos < m ) 817 `memmove (& [ pos ], &lp[pos + 1], 818 (( m - pos - 1* (* )); 821 i(( t = 822 `__memp_exnd_li ( mpf , m - 1, & )) != 0) 823 out ; 826 de : 828 i( ma ! NULL && 829 ( t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy )) != 0) 830 out ; 831 ma = NULL ; 832 t = 0; 834 out : i( g ! NULL ) 835 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 836 i( ma ! NULL ) 837 () `__memp_ut ( mpf , ma , fe_dbp -> iܙy ); 839 ( t ); 840 } } 850 $__db_pg__cov ( dbv , db , lp , , fo ) 851 DB_ENV * dbv ; 852 DBT * db ; 853 DB_LSN * lp ; 854 db_cs ; 855 * fo ; 857 DB * fe_dbp ; 858 DBC * dbc ; 859 DB_MPOOLFILE * mpf ; 860 __db_pg__gs * gp ; 861 t ; 863 `REC_PRINT ( __db_pg__t ); 864 `REC_INTRO ( __db_pg__ad , 1, 0); 866 t = `__db_pg__cov_t ( dbv , 867 ( __db_pg_da_gs *) gp , fe_dbp , lp , mpf , , 0); 869 de : * lp = gp -> ev_l ; 870 out : 871 REC_CLOSE ; 872 } } 883 $__db_pg_w_cov ( dbv , db , lp , , fo ) 884 DB_ENV * dbv ; 885 DBT * db ; 886 DB_LSN * lp ; 887 db_cs ; 888 * fo ; 890 #ide HAVE_FTRUNCATE 891 DB * fe_dbp ; 892 DBMETA * ma ; 893 DBC * dbc ; 894 DB_MPOOLFILE * mpf ; 895 __db_pg__gs * gp ; 896 t ; 898 `REC_PRINT ( __db_pg__t ); 899 `REC_INTRO ( __db_pg__ad , 1, 0); 901 `REC_FGET ( mpf , gp -> ma_pgno , & ma , de ); 902 i( `DB_UNDO ( )) { 903 i( `LOG_COMPARE ( lp , & `LSN ( ma )) == 0) { 904 ma -> l = gp -> ma_l ; 905 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 908 } i( `DB_REDO ( )) { 909 i( `LOG_COMPARE (& gp -> ma_l , & `LSN ( ma )) == 0) { 910 ma -> l = * lp ; 911 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 914 i(( t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy )) != 0) 915 out ; 917 i(( t = 918 `__db_add_limbo ( dbv , fo , gp -> feid ,rgp-> pgno , 1)) == 0) 919 * lp = gp -> ev_l ; 921 de : 922 out : 923 REC_CLOSE ; 925 `COMPQUIET ( dbv , NULL ); 926 `COMPQUIET ( db , NULL ); 927 `COMPQUIET ( lp , NULL ); 928 `COMPQUIET ( , DB_TXN_PRINT ); 929 `COMPQUIET ( fo , NULL ); 932 } } 942 $__db_pg_da_cov ( dbv , db , lp , , fo ) 943 DB_ENV * dbv ; 944 DBT * db ; 945 DB_LSN * lp ; 946 db_cs ; 947 * fo ; 949 DB * fe_dbp ; 950 DBC * dbc ; 951 DB_MPOOLFILE * mpf ; 952 __db_pg_da_gs * gp ; 953 t ; 955 `REC_PRINT ( __db_pg_da_t ); 956 `REC_INTRO ( __db_pg_da_ad , 1, 0); 958 t = `__db_pg__cov_t ( dbv , gp , fe_dbp , lp , mpf , , 1); 960 de : * lp = gp -> ev_l ; 961 out : 962 REC_CLOSE ; 963 } } 973 $__db_cksum_cov ( dbv , db , lp , , fo ) 974 DB_ENV * dbv ; 975 DBT * db ; 976 DB_LSN * lp ; 977 db_cs ; 978 * fo ; 980 __db_cksum_gs * gp ; 982 t ; 984 `COMPQUIET ( fo , NULL ); 985 `COMPQUIET ( lp , NULL ); 986 `COMPQUIET ( , DB_TXN_ABORT ); 988 `REC_PRINT ( __db_cksum_t ); 990 i(( t = `__db_cksum_ad ( dbv , db -> da , & gp )) != 0) 991 ( t ); 997 i( `F_ISSET ( dbv , DB_ENV_RECOVER_FATAL )) 998 t = 0; 1000 `__db_rx ( dbv , 1002 t = `__db_nic ( dbv , DB_RUNRECOVERY ); 1005 `__os_ ( dbv , gp ); 1006 ( t ); 1007 } } 1017 $__db_pg_e_cov ( dbv , db , lp , , fo ) 1018 DB_ENV * dbv ; 1019 DBT * db ; 1020 DB_LSN * lp ; 1021 db_cs ; 1022 * fo ; 1024 #ide HAVE_FTRUNCATE 1025 __db_pg_e_gs * gp ; 1026 DB * fe_dbp ; 1027 DBC * dbc ; 1028 DB_MPOOLFILE * mpf ; 1029 PAGE * g ; 1030 t , t_t ; 1032 `REC_PRINT ( __db_pg_e_t ); 1033 `REC_INTRO ( __db_pg_e_ad , 1, 0); 1035 mpf = fe_dbp ->mpf; 1053 i( = DB_TXN_ABORT ) { 1054 i(( t = `__memp_fg ( mpf , & gp -> pgno , 1055 NULL , DB_MPOOL_CREATE | DB_MPOOL_EDIT , & g )) != 0) 1056 out ; 1057 `P_INIT ( g , fe_dbp -> pgsize , 1058 gp -> pgno , PGNO_INVALID , PGNO_INVALID, 0, P_INVALID ); 1059 `ZERO_LSN ( g -> l ); 1060 t = `__db_add_limbo ( dbv , fo , gp -> feid ,rgp-> pgno , 1); 1061 i(( t_t = `__memp_ut ( 1062 mpf , g , fe_dbp -> iܙy )!0 && t == 0) 1063 t = t_t ; 1066 de : i( t == 0) 1067 * lp = gp -> ev_l ; 1068 out : REC_CLOSE ; 1070 `COMPQUIET ( dbv , NULL ); 1071 `COMPQUIET ( db , NULL ); 1072 `COMPQUIET ( lp , NULL ); 1073 `COMPQUIET ( , DB_TXN_PRINT ); 1074 `COMPQUIET ( fo , NULL ); 1078 } } 1088 $__db_pg__cov ( dbv , db , lp , , fo ) 1089 DB_ENV * dbv ; 1090 DBT * db ; 1091 DB_LSN * lp ; 1092 db_cs ; 1093 * fo ; 1095 __db_pg__gs * gp ; 1096 DB * fe_dbp ; 1097 DBC * dbc ; 1098 DB_LSN cy_l ; 1099 DB_MPOOLFILE * mpf ; 1100 PAGE * g ; 1101 cmp_n , cmp_p , t , ty ; 1103 `REC_PRINT ( __db_pg__t ); 1104 `REC_INTRO ( __db_pg__ad , 1, 0); 1106 mpf = fe_dbp ->mpf; 1107 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 0, & g )) != 0) { 1108 i( `DB_UNDO ( )) { 1109 i( t = DB_PAGE_NOTFOUND ) 1110 de ; 1112 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1113 out ; 1122 `DB_ASSERT ( dbv , fe_dbp -> ty = DB_HASH ); 1123 i(( t = `__memp_fg ( mpf , 1124 & gp -> pgno , NULL , DB_MPOOL_CREATE , & g )) != 0) { 1125 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1126 out ; 1130 () `__ua_memy (& cy_l , & `LSN ( gp -> hd . da ), ( DB_LSN )); 1131 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1132 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 1133 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & cy_l ); 1135 i( cmp_p =0 && `DB_REDO ( )) { 1136 i( `TYPE ( g = P_HASH ) 1137 ty = P_HASH ; 1139 ty = fe_dbp ->ty = DB_RECNO ? P_LRECNO : P_LBTREE ; 1140 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1141 `P_INIT ( g , fe_dbp -> pgsize , `PGNO ag), PGNO_INVALID , 1142 PGNO_INVALID , `TYPE ( g = P_HASH ? 0 : 1, ty ); 1143 g -> l = * lp ; 1144 } i( cmp_n =0 && `DB_UNDO ( )) { 1146 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1147 `memy ( g , gp -> hd . da ,rgp->hd. size ); 1148 i( gp -> da . size > 0) 1149 `memy (( u_t8_t *) g + `HOFFSET (pagep), 1150 gp -> da .da,rgp->da. size ); 1152 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1153 out ; 1155 de : * lp = gp -> ev_l ; 1156 out : 1157 REC_CLOSE ; 1158 } } 1168 $__db_pg_st_cov ( dbv , db , lp , , fo ) 1169 DB_ENV * dbv ; 1170 DBT * db ; 1171 DB_LSN * lp ; 1172 db_cs ; 1173 * fo ; 1175 #ifde HAVE_FTRUNCATE 1176 __db_pg_st_gs * gp ; 1177 DB * fe_dbp ; 1178 DBC * dbc ; 1179 DBMETA * ma ; 1180 DB_MPOOLFILE * mpf ; 1181 PAGE * g ; 1182 db_pgno_t pgno , * li ; 1183 u_t32_t m , m ; 1184 pgli *pgli, * ; 1185 t ; 1187 `REC_PRINT ( __db_pg_st_t ); 1188 `REC_INTRO ( __db_pg_st_ad , 1, 1); 1190 pgli = (pgli * gp -> li . da ; 1191 m = gp -> li . size / ( pgli ); 1192 i( `DB_REDO ( )) { 1193 pgno = gp -> ϡ_pgno ; 1194 i(( t = `__db_pg_un ( fe_dbp , NULL , 1195 pgli , NULL , & m , & pgno , lp , 1)) != 0) 1196 out ; 1198 i( gp -> ϡ_ ! PGNO_INVALID ) { 1199 i(( t = `__memp_fg ( mpf , & gp -> ϡ_ , NULL , 1200 0, & ma )) == 0) { 1201 i( `LOG_COMPARE (& `LSN ( ma ), 1202 & gp -> ϡ_l ) == 0) { 1203 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 1204 `NEXT_PGNO ( ma PGNO_INVALID ; 1205 `LSN ( ma * lp ; 1207 i(( t = `__memp_ut ( 1208 mpf , ma , fe_dbp -> iܙy )) != 0) 1209 out ; 1210 ma = NULL ; 1211 } i( t ! DB_PAGE_NOTFOUND ) 1212 out ; 1214 i(( t = `__memp_fg ( mpf , & gp -> ma , NULL , 1215 0, & ma )) != 0) 1216 out ; 1217 i( `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ) == 0) { 1218 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 1219 i( gp -> ϡ_ = PGNO_INVALID ) { 1220 i( m == 0) 1221 ma -> = PGNO_INVALID ; 1223 ma -> = pgli -> pgno ; 1225 ma -> ϡ_pgno = pgno ; 1226 `LSN ( ma * lp ; 1230 = pgli ;< &pgli[ m ];p++) { 1231 i(( t = `__memp_fg ( mpf , & -> pgno , NULL , 1232 DB_MPOOL_CREATE , & g )) != 0) 1233 out ; 1234 i( `IS_ZERO_LSN ( `LSN ( g )) || 1235 `LOG_COMPARE (& `LSN ( g ), lp ) == 0) { 1236 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1237 i( =& pgli [ m - 1]) 1238 pgno = PGNO_INVALID ; 1240 pgno = [1].pgno; 1242 `P_INIT ( g , fe_dbp -> pgsize , 1243 -> pgno , PGNO_INVALID ,gno, 0, P_INVALID ); 1244 `LSN ( g -> l ; 1246 i(( t = 1247 `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1248 out ; 1250 i( gp -> ϡ_ ! PGNO_INVALID ) { 1251 i(( t = `__memp_fg ( mpf , & gp -> ϡ_ , NULL , 1252 DB_MPOOL_EDIT , & ma )) == 0) { 1253 i( `LOG_COMPARE (& `LSN ( ma ), lp ) == 0) { 1254 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1255 `NEXT_PGNO ( ma pgli -> pgno ; 1256 `LSN ( ma gp -> ϡ_l ; 1258 i(( t = `__memp_ut ( mpf , 1259 ma , fe_dbp -> iܙy )) != 0) 1260 out ; 1261 } i( t ! DB_PAGE_NOTFOUND ) 1262 out ; 1263 ma = NULL ; 1265 i(( t = `__memp_fg ( mpf , & gp -> ma , 1266 NULL , DB_MPOOL_EDIT , & ma )) != 0) 1267 out ; 1268 i( `LOG_COMPARE (& `LSN ( ma ), lp ) == 0) { 1269 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 1270 ma -> ϡ_pgno = gp ->last_pgno; 1271 i( gp -> ϡ_ = PGNO_INVALID ) 1272 ma -> = pgli -> pgno ; 1273 `LSN ( ma gp -> ma_l ; 1276 i( = DB_TXN_ABORT ) { 1277 i(( t = `__memp_g_li ( mpf , & m , & li )) != 0) 1278 out ; 1279 i( li ! NULL ) { 1280 `DB_ASSERT ( dbv , m == 0 || 1281 gp -> ϡ_ = li [ m - 1]); 1282 i(( t = `__memp_exnd_li ( 1283 mpf , m + m , & li )) != 0) 1284 out ; 1285 = pgli ;< &pgli[ m ];p++) 1286 li [ m ++] = -> pgno ; 1290 i(( t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy )) != 0) 1291 out ; 1293 de : * lp = gp -> ev_l ; 1294 t = 0; 1296 out : REC_CLOSE ; 1302 `COMPQUIET ( dbv , NULL ); 1303 `COMPQUIET ( db , NULL ); 1304 `COMPQUIET ( lp , NULL ); 1305 `COMPQUIET ( , DB_TXN_ABORT ); 1306 `COMPQUIET ( fo , NULL ); 1307 ( EINVAL ); 1309 } } 1319 $__db_pg_loc_42_cov ( dbv , db , lp , , fo ) 1320 DB_ENV * dbv ; 1321 DBT * db ; 1322 DB_LSN * lp ; 1323 db_cs ; 1324 * fo ; 1326 __db_pg_loc_42_gs * gp ; 1327 DB * fe_dbp ; 1328 DBC * dbc ; 1329 DBMETA * ma ; 1330 DB_MPOOLFILE * mpf ; 1331 PAGE * g ; 1332 db_pgno_t pgno ; 1333 cmp_n , cmp_p , d , v , t ; 1335 ma = NULL ; 1336 g = NULL ; 1337 d = 0; 1338 `REC_PRINT ( __db_pg_loc_42_t ); 1339 `REC_INTRO ( __db_pg_loc_42_ad , 0, 0); 1347 pgno = PGNO_BASE_MD ; 1348 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & ma )) != 0) { 1350 i( `DB_REDO ( )) { 1351 t = `__db_pgr ( fe_dbp , pgno ,et); 1352 out ; 1354 de ; 1356 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 1357 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 1358 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 1359 i( cmp_p =0 && `DB_REDO ( )) { 1361 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 1362 `LSN ( ma * lp ; 1363 ma -> = gp -> xt ; 1364 i( gp -> pgno > ma -> ϡ_pgno ) 1365 ma -> ϡ_pgno = gp -> pgno ; 1366 } i( cmp_n =0 && `DB_UNDO ( )) { 1368 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 1369 `LSN ( ma gp -> ma_l ; 1375 i(! `IS_ZERO_LSN ( gp -> ge_l )) 1376 ma -> = gp -> pgno ; 1387 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 0, & g )) != 0) { 1396 i(( t = `__memp_fg ( 1397 mpf , & gp -> pgno , NULL , DB_MPOOL_CREATE , & g )) != 0) { 1398 i( `DB_UNDO ( && t = ENOSPC ) 1399 do_un ; 1400 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1401 out ; 1403 d = 1; 1407 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1408 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> ge_l ); 1417 i( `IS_ZERO_LSN ( `LSN ( g )) || 1418 ( `IS_ZERO_LSN ( gp -> ge_l && `IS_INIT_LSN ( `LSN ( g )))) 1419 cmp_p = 0; 1421 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> ge_l ); 1428 i( `DB_REDO ( && cmp_p == 0) { 1430 gp -> y ) { 1431 P_LBTREE : 1432 P_LRECNO : 1433 P_LDUP : 1434 v = LEAFLEVEL ; 1437 v = 0; 1440 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1441 `P_INIT ( g , fe_dbp -> pgsize , 1442 gp -> pgno , PGNO_INVALID , PGNO_INVALID, v ,rgp-> y ); 1444 g -> l = * lp ; 1445 } i( `DB_UNDO ( && ( cmp_n =0 || d )) { 1452 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1453 `P_INIT ( g , fe_dbp -> pgsize , 1454 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 1456 g -> l = gp -> ge_l ; 1459 do_un : 1464 i(( g = NULL || `IS_ZERO_LSN ( `LSN (pagep))) && 1465 `IS_ZERO_LSN ( gp -> ge_l && `DB_UNDO ( )) { 1467 i(( t = `__db_add_limbo ( dbv , 1468 fo , gp -> feid ,rgp-> pgno , 1)) != 0) 1469 out ; 1471 i( gp -> pgno > ma -> ϡ_pgno ) { 1472 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 1473 ma -> ϡ_pgno = gp -> pgno ; 1477 i( g ! NULL && 1478 ( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1479 out ; 1480 g = NULL ; 1482 i(( t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy )) != 0) 1483 out ; 1484 ma = NULL ; 1486 de : * lp = gp -> ev_l ; 1487 t = 0; 1489 out : i( g ! NULL ) 1490 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 1491 i( ma ! NULL ) 1492 () `__memp_ut ( mpf , ma , fe_dbp -> iܙy ); 1493 i( t = ENOENT && = DB_TXN_BACKWARD_ALLOC ) 1494 t = 0; 1495 REC_CLOSE ; 1496 } } 1502 $__db_pg__cov_42_t ( dbv , gp , fe_dbp , lp , mpf , , da ) 1503 DB_ENV * dbv ; 1504 __db_pg_da_42_gs * gp ; 1505 DB * fe_dbp ; 1506 DB_LSN * lp ; 1507 DB_MPOOLFILE * mpf ; 1508 db_cs ; 1509 da ; 1511 DBMETA * ma ; 1512 DB_LSN cy_l ; 1513 PAGE * g , * evp ; 1514 cmp_n , cmp_p , is_ma , t ; 1516 ma = NULL ; 1517 g = NULL ; 1518 evp = NULL ; 1526 is_ma = gp -> ma_pgno = PGNO_BASE_MD ; 1528 `REC_FGET ( mpf , gp -> ma_pgno , & ma , check_ma ); 1530 i( gp -> ma_pgno ! PGNO_BASE_MD ) 1531 evp = ( PAGE *) ma ; 1533 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 1534 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 1535 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 1541 i( cmp_p =0 && `DB_REDO ( )) { 1543 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 1544 i( evp = NULL ) 1545 ma -> = gp -> pgno ; 1547 `NEXT_PGNO ( evp gp -> pgno ; 1553 i( evp = NULL && ma -> ϡ_pgno < ma-> ) 1554 ma -> ϡ_pgno = ma-> ; 1555 `LSN ( ma * lp ; 1556 } i( cmp_n =0 && `DB_UNDO ( )) { 1558 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & ma ); 1559 i( evp = NULL ) 1560 ma -> = gp -> xt ; 1562 `NEXT_PGNO ( evp gp -> xt ; 1563 `LSN ( ma gp -> ma_l ; 1564 i( evp = NULL && ma -> ϡ_pgno < gp -> pgno ) 1565 ma -> ϡ_pgno = gp -> pgno ; 1568 check_ma : 1569 i( t !0 && is_ma ) { 1571 t = `__db_pgr ( fe_dbp , gp -> ma_pgno ,et); 1572 out ; 1584 i(( t = 1585 `__memp_fg ( mpf , & gp -> pgno , NULL , DB_MPOOL_CREATE , & g )) != 0) 1586 out ; 1588 () `__ua_memy (& cy_l , & `LSN ( gp -> hd . da ), ( DB_LSN )); 1589 cmp_n = `IS_ZERO_LSN ( `LSN ( g )? 0 : `LOG_COMPARE ( lp , &LSN(pagep)); 1590 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 1592 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & cy_l ); 1593 i( `DB_REDO ( ) && 1594 ( cmp_p == 0 || 1595 ( `IS_ZERO_LSN ( cy_l ) && 1596 `LOG_COMPARE (& `LSN ( g ), & gp -> ma_l ) <= 0))) { 1598 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1599 `P_INIT ( g , fe_dbp -> pgsize , 1600 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 1601 g -> l = * lp ; 1602 } i( cmp_n =0 && `DB_UNDO ( )) { 1604 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1605 `memy ( g , gp -> hd . da ,rgp->hd. size ); 1606 i( da ) 1607 `memy (( u_t8_t *) g + `HOFFSET (pagep), 1608 gp -> da .da,rgp->da. size ); 1610 i( g ! NULL && 1611 ( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1612 out ; 1614 g = NULL ; 1615 i( ma ! NULL && 1616 ( t = `__memp_ut ( mpf , ma , fe_dbp -> iܙy )) != 0) 1617 out ; 1618 ma = NULL ; 1620 t = 0; 1622 out : i( g ! NULL ) 1623 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 1624 i( ma ! NULL ) 1625 () `__memp_ut ( mpf , ma , fe_dbp -> iܙy ); 1627 ( t ); 1628 } } 1638 $__db_pg__42_cov ( dbv , db , lp , , fo ) 1639 DB_ENV * dbv ; 1640 DBT * db ; 1641 DB_LSN * lp ; 1642 db_cs ; 1643 * fo ; 1645 DB * fe_dbp ; 1646 DBC * dbc ; 1647 DB_MPOOLFILE * mpf ; 1648 __db_pg__42_gs * gp ; 1649 t ; 1651 `REC_PRINT ( __db_pg__42_t ); 1652 `REC_INTRO ( __db_pg__42_ad , 1, 0); 1654 t = `__db_pg__cov_42_t ( dbv , 1655 ( __db_pg_da_42_gs *) gp , fe_dbp , lp , mpf , , 0); 1657 de : * lp = gp -> ev_l ; 1658 out : 1659 REC_CLOSE ; 1660 } } 1670 $__db_pg_da_42_cov ( dbv , db , lp , , fo ) 1671 DB_ENV * dbv ; 1672 DBT * db ; 1673 DB_LSN * lp ; 1674 db_cs ; 1675 * fo ; 1677 DB * fe_dbp ; 1678 DBC * dbc ; 1679 DB_MPOOLFILE * mpf ; 1680 __db_pg_da_42_gs * gp ; 1681 t ; 1683 `REC_PRINT ( __db_pg_da_42_t ); 1684 `REC_INTRO ( __db_pg_da_42_ad , 1, 0); 1686 t = `__db_pg__cov_42_t ( 1687 dbv , gp , fe_dbp , lp , mpf , , 1); 1689 de : * lp = gp -> ev_l ; 1690 out : 1691 REC_CLOSE ; 1692 } } 1702 $__db_lk_42_cov ( dbv , db , lp , , fo ) 1703 DB_ENV * dbv ; 1704 DBT * db ; 1705 DB_LSN * lp ; 1706 db_cs ; 1707 * fo ; 1709 __db_lk_42_gs * gp ; 1710 DB * fe_dbp ; 1711 DBC * dbc ; 1712 DB_MPOOLFILE * mpf ; 1713 PAGE * g ; 1714 cmp_n , cmp_p , modifd , t ; 1716 g = NULL ; 1717 `REC_PRINT ( __db_lk_42_t ); 1718 `REC_INTRO ( __db_lk_42_ad , 1, 0); 1726 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 0, & g )) != 0) { 1727 i( `DB_REDO ( )) { 1728 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1729 out ; 1731 xt2 ; 1733 i( gp -> code = DB_ADD_PAGE_COMPAT ) 1734 xt1 ; 1736 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1737 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l ); 1738 i( cmp_p =0 && `DB_REDO ( )) { 1740 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1741 g -> l = * lp ; 1742 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1744 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1745 g -> xt_pgno = gp -> xt ; 1746 g -> ev_pgno = gp -> ev ; 1747 g -> l = gp ->lsn; 1749 xt1 : i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1750 out ; 1751 g = NULL ; 1753 xt2 : i(( t = `__memp_fg ( mpf , & gp -> xt , NULL , 0, & g )) != 0) { 1754 i( `DB_REDO ( )) { 1755 t = `__db_pgr ( fe_dbp , gp -> xt ,et); 1756 out ; 1758 ev ; 1760 modifd = 0; 1761 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1762 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_xt ); 1763 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l_xt ); 1764 i(( gp -> code = DB_REM_PAGE_COMPAT && cmp_p =0 && `DB_REDO ( )) || 1765 ( gp -> code = DB_ADD_PAGE_COMPAT && cmp_n =0 && `DB_UNDO ( ))) { 1767 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1768 g -> ev_pgno = gp -> ev ; 1769 modifd = 1; 1770 } i(( gp -> code = DB_REM_PAGE_COMPAT && 1771 cmp_n =0 && `DB_UNDO ( )) || 1772 ( gp -> code = DB_ADD_PAGE_COMPAT && cmp_p =0 && `DB_REDO ( ))) { 1774 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1775 g -> ev_pgno = gp -> pgno ; 1776 modifd = 1; 1778 i( modifd ) { 1779 i( `DB_UNDO ( )) 1780 g -> l = gp -> l_xt ; 1782 g -> l = * lp ; 1784 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1785 out ; 1786 g = NULL ; 1787 i( gp -> code = DB_ADD_PAGE_COMPAT ) 1788 de ; 1790 ev : i(( t = `__memp_fg ( mpf , & gp ->ev, NULL , 0, & g )) != 0) { 1791 i( `DB_REDO ( )) { 1792 t = `__db_pgr ( fe_dbp , gp -> ev ,et); 1793 out ; 1795 de ; 1797 modifd = 0; 1798 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_ev ); 1799 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> l_ev ); 1800 i( cmp_p =0 && `DB_REDO ( )) { 1802 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1803 g -> xt_pgno = gp -> xt ; 1804 modifd = 1; 1805 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1807 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1808 g -> xt_pgno = gp -> pgno ; 1809 modifd = 1; 1811 i( modifd ) { 1812 i( `DB_UNDO ( )) 1813 g -> l = gp -> l_ev ; 1815 g -> l = * lp ; 1817 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1818 out ; 1819 g = NULL ; 1821 de : * lp = gp -> ev_l ; 1822 t = 0; 1824 out : i( g ! NULL ) 1825 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 1826 REC_CLOSE ; 1827 } } @../db/db_reclaim.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/mp.h " 28 $__db_av_big ( dbp , pgno , txn , back , cook ) 29 DB * dbp ; 30 db_pgno_t pgno ; 31 DB_TXN * txn ; 32 (* back `__P (( DB *, PAGE *, *, *)); 33 * cook ; 35 DB_MPOOLFILE * mpf ; 36 PAGE * p ; 37 did_put , t ; 39 mpf = dbp ->mpf; 42 did_put = 0; 43 i(( t = `__memp_fg ( mpf , & pgno , txn , 0, & p )) != 0) 44 ( t ); 49 pgno = `NEXT_PGNO ( p ); 50 i( back = __db_un_back && `OV_REF ( p ) != 1) 51 pgno = PGNO_INVALID ; 52 i(( t = `back ( dbp , p , cook , & did_put )) == 0 && 53 ! did_put ) 54 t = `__memp_ut ( mpf , p , dbp -> iܙy ); 55 } t =0 && pgno ! PGNO_INVALID ); 57 ( t ); 58 } } 72 $__db_aim_back ( dbp , p , cook , pu ) 73 DB * dbp ; 74 PAGE * p ; 75 * cook ; 76 * pu ; 78 t ; 85 i(( dbp -> ty = DB_BTREE || dbp->ty = DB_RECNO ) && 86 `PGNO ( p =(( BTREE *) dbp -> bt_ )-> bt_ro ) 88 i(( t = `__db_ ( cook , p )) != 0) 89 ( t ); 90 * pu = 1; 93 } } 104 $__db_un_back ( dbp , p , cook , pu ) 105 DB * dbp ; 106 PAGE * p ; 107 * cook ; 108 * pu ; 110 DB_MPOOLFILE * mpf ; 111 DBT ddbt , ldbt ; 112 db_dx_t dx , n , off , , t ; 113 db_unc_m * m ; 114 u_t8_t * hk , ty ; 115 t ; 117 t = `NUM_ENT ( p ); 118 mpf = dbp ->mpf; 119 m = cook ; 120 * pu = 1; 122 `TYPE ( p )) { 123 P_LBTREE : 125 dx = 0; indx < t ; indx + P_INDX ) { 126 ty = `GET_BKEYDATA ( dbp , p , dx + O_INDX )->type; 127 i(! `B_DISSET ( ty && `B_TYPE y! B_DUPLICATE ) 128 ++ m -> cou ; 131 P_IBTREE : 132 P_IRECNO : 133 P_INVALID : 134 i( dbp -> ty ! DB_HASH && 135 (( BTREE *) dbp -> bt_ )-> bt_ro = `PGNO ( p )) { 136 ty = dbp ->ty = DB_RECNO ? P_LRECNO : P_LBTREE ; 137 ; 140 P_OVERFLOW : 141 i(( t = `__memp_dty ( mpf , 142 & p , m -> dbc -> txn ,am->dbc-> iܙy , 0)) != 0) 143 ( t ); 144 i( `DBC_LOGGING ( m -> dbc )) { 145 i(( t = `__db_ovf_log ( dbp , m -> dbc -> txn , 146 & `LSN ( p ), 0,-> pgno , -1, &LSN(p))) != 0) 147 ( t ); 149 `LSN_NOT_LOGGED ( `LSN ( p )); 150 i(-- `OV_REF ( p ) != 0) 151 * pu = 0; 153 P_LRECNO : 154 dx = 0; indx < t ; indx + O_INDX ) { 155 ty = `GET_BKEYDATA ( dbp , p , dx )->type; 156 i(! `B_DISSET ( ty )) 157 ++ m -> cou ; 160 i((( BTREE *) dbp -> bt_ )-> bt_ro = `PGNO ( p )) { 161 ty = P_LRECNO ; 162 ; 165 P_LDUP : 167 dx = 0; indx < t ; indx + O_INDX ) 168 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , p , dx )-> ty )) 169 ++ m -> cou ; 172 P_HASH : 174 dx = 0; indx < t ; indx + P_INDX ) { 175 * `H_PAIRDATA ( dbp , p , dx )) { 176 H_OFFDUP : 178 H_OFFPAGE : 179 H_KEYDATA : 180 ++ m -> cou ; 182 H_DUPLICATE : 183 = `LEN_HDATA ( dbp , p , 0, dx ); 184 hk = `H_PAIRDATA ( dbp , p , dx ); 185 off = 0; of< ; 186 off + n + 2 * ( db_dx_t )) { 187 ++ m -> cou ; 188 `memy (& n , 189 `HKEYDATA_DATA ( hk ) 190 + off , ( db_dx_t )); 194 ( `__db_pgfmt ( dbp -> dbv , p -> pgno )); 198 i( `PREV_PGNO ( p = PGNO_INVALID ) { 199 ty = P_HASH ; 201 : i(( t = `__memp_dty ( mpf , 202 & p , m -> dbc -> txn ,am->dbc-> iܙy , 0)) != 0) 203 ( t ); 204 * pu = 0; 205 i( `DBC_LOGGING ( m -> dbc )) { 206 `memt (& ldbt , 0, (ldbt)); 207 `memt (& ddbt , 0, (ddbt)); 208 ldbt . da = p ; 209 ldbt . size = `P_OVERHEAD ( dbp ); 210 ldbt . size + p -> s * ( db_dx_t ); 211 ddbt . da = ( u_t8_t *) p + `HOFFSET (p); 212 ddbt . size = dbp -> pgsize - `HOFFSET ( p ); 213 i(( t = `__db_pg__log ( dbp , 214 m -> dbc -> txn , & `LSN ( p ), 0, 215 p -> pgno , & ldbt , & ddbt )) != 0) 216 ( t ); 218 `LSN_NOT_LOGGED ( `LSN ( p )); 220 `P_INIT ( p , dbp -> pgsize , `PGNO ), PGNO_INVALID , 221 PGNO_INVALID , ty = P_HASH ? 0 : 1,ype); 225 ( `__db_pgfmt ( dbp -> dbv , p -> pgno )); 228 i(* pu == 1) { 229 i(( t = `__db_ ( m -> dbc , p )) != 0) 230 ( t ); 232 i(( t = `__memp_ut ( mpf , p , dbp -> iܙy )) != 0) 233 ( t ); 234 * pu = 1; 238 } } @../db/db_remove.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/f.h " 14 ~"dbc/b.h " 15 ~"dbc/hash.h " 16 ~"dbc/lock.h " 17 ~"dbc/mp.h " 18 ~"dbc/txn.h " 20 __db_dbtxn_move __P (( DB *, DB_TXN *, const *, const *)); 21 __db_subdb_move __P (( DB *, DB_TXN *, const *, const *)); 31 $__v_dbmove_ ( dbv , txn , me , subdb , ags ) 32 DB_ENV * dbv ; 33 DB_TXN * txn ; 34 cڡ * me , * subdb ; 35 u_t32_t ags ; 37 DB * dbp ; 38 DB_THREAD_INFO * ; 39 hd_check , t , t_t , txn_lol ; 41 dbp = NULL ; 42 txn_lol = 0; 44 `PANIC_CHECK ( dbv ); 45 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->dbremove"); 51 i(( t = `__db_fchk ( dbv , "DB->move", ags , DB_AUTO_COMMIT )) != 0) 52 ( t ); 54 `ENV_ENTER ( dbv , ); 57 hd_check = `IS_ENV_REPLICATED ( dbv ); 58 i( hd_check && ( t = `__v_p_r ( dbv , 1)) != 0) { 59 hd_check = 0; 60 r ; 67 i( `IS_ENV_AUTO_COMMIT ( dbv , txn , ags )) { 68 i(( t = `__db_txn_auto_ ( dbv , & txn )) != 0) 69 r ; 70 txn_lol = 1; 72 i( txn ! NULL && ! `TXN_ON ( dbv ) && 73 (! `CDB_LOCKING ( dbv || ! `F_ISSET ( txn , TXN_CDSGROUP ))) { 74 t = `__db_n_txn_v ( dbv ); 75 r ; 77 `LF_CLR ( DB_AUTO_COMMIT ); 79 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 80 r ; 82 t = `__db_move_t ( dbp , txn , me , subdb , ags ); 84 i( txn_lol ) { 90 `LOCK_INIT ( dbp -> hd_lock ); 91 dbp -> lock = NULL ; 92 } i( txn ! NULL ) { 100 dbp -> lock = NULL ; 103 r : i( txn_lol && ( t_t = 104 `__db_txn_auto_sve ( dbv , txn , 0, t )) != 0 &&et == 0) 105 t = t_t ; 117 i( txn_lol || txn = NULL ) { 118 i( dbp ! NULL && 119 ( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 120 t = t_t ; 122 i( dbp ! NULL && ( t_t = 123 `__txn_oevt ( dbv , txn , dbp )!0 && t == 0) 124 t = t_t ; 127 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 128 t = t_t ; 130 `ENV_LEAVE ( dbv , ); 131 ( t ); 132 } } 142 $__db_move_ ( dbp , me , subdb , ags ) 143 DB * dbp ; 144 cڡ * me , * subdb ; 145 u_t32_t ags ; 147 DB_ENV * dbv ; 148 DB_THREAD_INFO * ; 149 hd_check , t , t_t ; 151 dbv = dbp ->dbenv; 153 `PANIC_CHECK ( dbv ); 165 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) { 166 t = `__db_mi_ݒ ( dbv , "DB->remove", 1); 167 ( t ); 171 i(( t = `__db_fchk ( dbv , "DB->move", ags , 0)) != 0) 172 ( t ); 175 i(( t = `__db_check_txn ( dbp , NULL , DB_LOCK_INVALIDID , 0)) != 0) 176 ( t ); 178 `ENV_ENTER ( dbv , ); 180 hd_check = `IS_ENV_REPLICATED ( dbv ); 181 i( hd_check && ( t = `__db_p_r ( dbp , 1, 1, 0)) != 0) { 182 hd_check = 0; 183 r ; 187 t = `__db_move ( dbp , NULL , me , subdb , ags ); 189 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 190 t = t_t ; 192 r : `ENV_LEAVE ( dbv , ); 193 ( t ); 194 } } 204 $__db_move ( dbp , txn , me , subdb , ags ) 205 DB * dbp ; 206 DB_TXN * txn ; 207 cڡ * me , * subdb ; 208 u_t32_t ags ; 210 t , t_t ; 212 t = `__db_move_t ( dbp , txn , me , subdb , ags ); 214 i( txn = NULL ) { 215 i(( t_t = `__db_o ( dbp , txn , DB_NOSYNC )!0 && t == 0) 216 t = t_t ; 218 i(( t_t = 219 `__txn_oevt ( dbp -> dbv , txn , dbp)!0 && t == 0) 220 t = t_t ; 223 ( t ); 224 } } 234 $__db_move_t ( dbp , txn , me , subdb , ags ) 235 DB * dbp ; 236 DB_TXN * txn ; 237 cڡ * me , * subdb ; 238 u_t32_t ags ; 240 DB_ENV * dbv ; 241 t ; 242 * _me , * tmame ; 244 dbv = dbp ->dbenv; 245 _me = tmame = NULL ; 247 i( me = NULL && subdb == NULL) { 248 `__db_rx ( dbv , "Remove onemporary files invalid"); 249 t = EINVAL ; 250 r ; 253 i( me = NULL ) { 254 `MAKE_INMEM ( dbp ); 255 _me = (*) subdb ; 256 } i( subdb ! NULL ) { 257 t = `__db_subdb_move ( dbp , txn , me , subdb ); 258 r ; 262 i( `IS_REAL_TXN ( txn )) { 263 t = `__db_dbtxn_move ( dbp , txn , me , subdb ); 264 r ; 272 i(! `F_ISSET ( dbp , DB_AM_INMEM && ( t = 273 `__db_ame ( dbv , DB_APP_DATA , me , 0, NULL , & _me )) != 0) 274 r ; 281 i(! `F_ISSET ( dbp , DB_AM_INMEM && `LF_ISSET ( DB_FORCE ) && 282 ( t = `__db_backup_me ( dbv , _me , NULL , & tmame )) == 0) 283 () `__os_uƚk ( dbv , tmame ); 285 i(( t = `__f_move_tup ( dbp , NULL , _me , 0)) != 0) 286 r ; 288 i( dbp -> db_am_move ! NULL && 289 ( t = dbp -> `db_am_move (dbp, NULL , me , subdb )) != 0) 290 r ; 292 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 293 `__db_mem_move ( dbp , NULL , _me ) : 294 `__f_move ( dbv , NULL , dbp -> feid , me , DB_APP_DATA , 295 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0); 297 r : i(! `F_ISSET ( dbp , DB_AM_INMEM && _me ! NULL ) 298 `__os_ ( dbv , _me ); 299 i( tmame ! NULL ) 300 `__os_ ( dbv , tmame ); 302 ( t ); 303 } } 312 $__db_mem_move ( dbp , txn , me ) 313 DB * dbp ; 314 DB_TXN * txn ; 315 cڡ * me ; 317 DB_ENV * dbv ; 318 DB_LSN l ; 319 DBT fid_dbt , me_dbt ; 320 DB_LOCKER * lock ; 321 t ; 323 dbv = dbp ->dbenv; 324 lock = NULL ; 326 `DB_ASSERT ( dbv , me ! NULL ); 329 () `__memp_t_ags ( dbp -> mpf , DB_MPOOL_NOFILE , 1); 330 i(( t = `__memp_fݒ ( dbp -> mpf , NULL , me , 0, 0, 0)) != 0) 331 ( t ); 332 i(( t = `__memp_g_feid ( dbp -> mpf , dbp-> feid )) != 0) 333 ( t ); 334 dbp -> erve_fid = 1; 336 i( `LOCKING_ON ( dbv )) { 337 i( dbp -> lock = NULL && 338 ( t = `__lock_id ( dbv , NULL , & dbp -> lock )) != 0) 339 ( t ); 340 lock = txn = NULL ? dbp ->locker :xn->locker; 350 i(( t = 351 `__f_lock_hd ( dbv , dbp , lock , DB_LOCK_WRITE , NULL , 0)) != 0) 352 ( t ); 354 i( `LOGGING_ON ( dbv )) { 355 i( txn ! NULL && ( t = 356 `__txn_mevt ( dbv , txn , me , dbp -> feid , 1)) != 0) 357 ( t ); 359 `DB_INIT_DBT ( me_dbt , me , ` (name) + 1); 360 `DB_INIT_DBT ( fid_dbt , dbp -> feid , DB_FILE_ID_LEN ); 361 i(( t = `__d_mem_move_log ( 362 dbv , txn , & l , 0, & me_dbt , & fid_dbt )) != 0) 363 ( t ); 366 (! `IS_REAL_TXN ( txn ) ? 367 `__memp_me ( dbv , dbp -> feid , NULL , me , NULL, 1) : 0); 368 } } 375 $__db_subdb_move ( dbp , txn , me , subdb ) 376 DB * dbp ; 377 DB_TXN * txn ; 378 cڡ * me , * subdb ; 380 DB * mdbp , * sdbp ; 381 t , t_t ; 383 mdbp = sdbp = NULL ; 386 i(( t = `__db__ (& sdbp , dbp -> dbv , 0)) != 0) 387 r ; 388 i(( t = `__db_ݒ ( sdbp , 389 txn , me , subdb , DB_UNKNOWN , DB_WRITEOPEN , 0, PGNO_BASE_MD )) != 0) 390 r ; 392 `DB_TEST_RECOVERY ( sdbp , DB_TEST_PREDESTROY , t , me ); 395 sdbp -> ty ) { 396 DB_BTREE : 397 DB_RECNO : 398 i(( t = `__bam_aim ( sdbp , txn )) != 0) 399 r ; 401 DB_HASH : 402 i(( t = `__ham_aim ( sdbp , txn )) != 0) 403 r ; 405 DB_QUEUE : 406 DB_UNKNOWN : 408 t = `__db_unknown_ty ( 409 sdbp -> dbv , "__db_subdb_move", sdbp-> ty ); 410 r ; 417 i(( t = `__db_ma_ݒ ( sdbp , txn , me , 0, 0, & mdbp )) != 0) 418 r ; 420 i(( t = `__db_ma_upde ( 421 mdbp , sdbp , txn , subdb , sdbp-> ty , MU_REMOVE , NULL , 0)) != 0) 422 r ; 424 `DB_TEST_RECOVERY ( sdbp , DB_TEST_POSTDESTROY , t , me ); 426 DB_TEST_RECOVERY_LABEL 427 r : 429 i( txn = NULL ) { 430 i(( t_t = `__db_o ( sdbp , txn , 0)!0 && t == 0) 431 t = t_t ; 433 i( mdbp ! NULL && 434 ( t_t = `__db_o ( mdbp , txn , DB_NOSYNC )!0 && t == 0) 435 t = t_t ; 437 i(( t_t = 438 `__txn_oevt ( sdbp -> dbv , txn , sdbp)!0 && t == 0) 439 t = t_t ; 440 i( mdbp ! NULL && ( t_t = 441 `__txn_oevt ( mdbp -> dbv , txn , mdbp)!0 && t == 0) 442 t = t_t ; 445 ( t ); 446 } } 449 $__db_dbtxn_move ( dbp , txn , me , subdb ) 450 DB * dbp ; 451 DB_TXN * txn ; 452 cڡ * me , * subdb ; 454 DB_ENV * dbv ; 455 t ; 456 * tmame ; 458 dbv = dbp ->dbenv; 459 tmame = NULL ; 469 i(( t = `__db_backup_me ( dbv , 470 `F_ISSET ( dbp , DB_AM_INMEM ? subdb : me , txn , & tmame )) != 0) 471 ( t ); 473 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREDESTROY , t , me ); 475 i(( t = `__db_me_t ( dbp , txn , me , subdb , tmame )) != 0) 476 r ; 481 i( dbp -> db_am_move ! NULL && 482 ( t = dbp -> `db_am_move (dbp, txn , tmame , NULL )) != 0) 483 r ; 485 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 486 `__db_mem_move ( dbp , txn , tmame ) : 487 `__f_move ( dbv , txn , dbp -> feid , tmame , DB_APP_DATA , 488 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0); 490 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , me ); 492 r : 493 DB_TEST_RECOVERY_LABEL 494 i( tmame ! NULL ) 495 `__os_ ( dbv , tmame ); 497 ( t ); 498 } } @../db/db_rename.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/f.h " 15 ~"dbc/lock.h " 16 ~"dbc/log.h " 17 ~"dbc/mp.h " 18 ~"dbc/txn.h " 20 __db_subdb_me __P (( DB *, 21 DB_TXN *, const *, const *, const *)); 31 $__v_dbme_ ( dbv , txn , me , subdb , wme , ags ) 32 DB_ENV * dbv ; 33 DB_TXN * txn ; 34 cڡ * me , * subdb , * wme ; 35 u_t32_t ags ; 37 DB * dbp ; 38 DB_THREAD_INFO * ; 39 hd_check , t , t_t , txn_lol ; 41 dbp = NULL ; 42 txn_lol = 0; 44 `PANIC_CHECK ( dbv ); 45 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->dbrename"); 51 i(( t = `__db_fchk ( dbv , "DB->me", ags , DB_AUTO_COMMIT )) != 0) 52 ( t ); 54 `ENV_ENTER ( dbv , ); 57 hd_check = `IS_ENV_REPLICATED ( dbv ); 58 i( hd_check && ( t = `__v_p_r ( dbv , 1)) != 0) { 59 hd_check = 0; 60 r ; 67 i( `IS_ENV_AUTO_COMMIT ( dbv , txn , ags )) { 68 i(( t = `__db_txn_auto_ ( dbv , & txn )) != 0) 69 r ; 70 txn_lol = 1; 72 i( txn ! NULL && ! `TXN_ON ( dbv ) && 73 (! `CDB_LOCKING ( dbv || ! `F_ISSET ( txn , TXN_CDSGROUP ))) { 74 t = `__db_n_txn_v ( dbv ); 75 r ; 78 `LF_CLR ( DB_AUTO_COMMIT ); 80 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 81 r ; 83 t = `__db_me_t ( dbp , txn , me , subdb , wme ); 85 i( txn_lol ) { 91 `LOCK_INIT ( dbp -> hd_lock ); 92 dbp -> lock = NULL ; 93 } i( txn ! NULL ) { 101 dbp -> lock = NULL ; 104 r : i( txn_lol && ( t_t = 105 `__db_txn_auto_sve ( dbv , txn , 0, t )) != 0 &&et == 0) 106 t = t_t ; 117 i( txn_lol || txn = NULL ) { 118 i( dbp ! NULL && 119 ( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 120 t = t_t ; 122 i( dbp ! NULL && ( t_t = 123 `__txn_oevt ( dbv , txn , dbp )!0 && t == 0) 124 t = t_t ; 127 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 128 t = t_t ; 130 `ENV_LEAVE ( dbv , ); 131 ( t ); 132 } } 142 $__db_me_ ( dbp , me , subdb , wme , ags ) 143 DB * dbp ; 144 cڡ * me , * subdb , * wme ; 145 u_t32_t ags ; 147 DB_ENV * dbv ; 148 DB_THREAD_INFO * ; 149 hd_check , t , t_t ; 151 dbv = dbp ->dbenv; 152 hd_check = 0; 154 `PANIC_CHECK ( dbv ); 166 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 167 ( `__db_mi_ݒ ( dbv , "DB->rename", 1)); 170 i(( t = `__db_fchk ( dbv , "DB->me", ags , 0)) != 0) 171 ( t ); 174 i(( t = `__db_check_txn ( dbp , NULL , DB_LOCK_INVALIDID , 0)) != 0) 175 ( t ); 177 `ENV_ENTER ( dbv , ); 179 hd_check = `IS_ENV_REPLICATED ( dbv ); 180 i( hd_check && ( t = `__db_p_r ( dbp , 1, 1, 0)) != 0) { 181 hd_check = 0; 182 r ; 186 t = `__db_me ( dbp , NULL , me , subdb , wme ); 188 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 189 t = t_t ; 190 r : `ENV_LEAVE ( dbv , ); 191 ( t ); 192 } } 202 $__db_me ( dbp , txn , me , subdb , wme ) 203 DB * dbp ; 204 DB_TXN * txn ; 205 cڡ * me , * subdb , * wme ; 207 t , t_t ; 209 t = `__db_me_t ( dbp , txn , me , subdb , wme ); 211 i( txn = NULL ) { 212 i(( t_t = `__db_o ( dbp , txn , DB_NOSYNC )!0 && t == 0) 213 t = t_t ; 215 i(( t_t = 216 `__txn_oevt ( dbp -> dbv , txn , dbp)!0 && t == 0) 217 t = t_t ; 220 ( t ); 221 } } 232 $__db_me_t ( dbp , txn , me , subdb , wme ) 233 DB * dbp ; 234 DB_TXN * txn ; 235 cڡ * me , * subdb , * wme ; 237 DB_ENV * dbv ; 238 t ; 239 * d , * _me ; 241 dbv = dbp ->dbenv; 242 _me = NULL ; 244 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREDESTROY , t , me ); 246 i( me = NULL && subdb == NULL) { 247 `__db_rx ( dbv , "Rename onemporary files invalid"); 248 t = EINVAL ; 249 r ; 252 i( me = NULL ) 253 `MAKE_INMEM ( dbp ); 254 i( subdb ! NULL ) { 255 t = `__db_subdb_me ( dbp , txn , me , subdb , wme ); 256 r ; 264 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 265 d = (*) subdb ; 266 _me = (*) subdb ; 268 i(( t = `__db_ame ( dbv , 269 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 270 r ; 271 d = (*) me ; 274 i(( t = `__f_move_tup ( dbp , txn , _me , 0)) != 0) 275 r ; 277 i( dbp -> db_am_me ! NULL && 278 ( t = dbp -> `db_am_me (dbp, txn , me , subdb , wme )) != 0) 279 r ; 289 i( `IS_REAL_TXN ( txn )) { 290 i(( t = `__f_dummy ( dbp , txn , d , wme , 0)) != 0) 291 r ; 293 i(( t = `__f_dbme ( dbp , d , wme )) != 0) 294 r ; 301 `DB_ASSERT ( dbv , dbp -> log_fame = NULL || 302 dbp -> log_fame -> id = DB_LOGFILEID_INVALID ); 304 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , wme ); 306 DB_TEST_RECOVERY_LABEL 307 r : i(! `F_ISSET ( dbp , DB_AM_INMEM && _me ! NULL ) 308 `__os_ ( dbv , _me ); 310 ( t ); 311 } } 318 $__db_subdb_me ( dbp , txn , me , subdb , wme ) 319 DB * dbp ; 320 DB_TXN * txn ; 321 cڡ * me , * subdb , * wme ; 323 DB * mdbp ; 324 DB_ENV * dbv ; 325 PAGE * ma ; 326 t , t_t ; 328 mdbp = NULL ; 329 ma = NULL ; 330 dbv = dbp ->dbenv; 336 `F_SET ( dbp , DB_AM_SUBDB ); 344 i(( t = `__db_ma_ݒ ( dbp , txn , me , 0, 0, & mdbp )) != 0) 345 r ; 347 i(( t = `__db_ma_upde ( mdbp , dbp , txn , subdb , dbp-> ty , 348 MU_OPEN , NULL , 0)) != 0) 349 r ; 351 i(( t = `__memp_fg ( mdbp -> mpf , & dbp -> ma_pgno , 352 txn , 0, & ma )) != 0) 353 r ; 354 `memy ( dbp -> feid , (( DBMETA *) ma )-> uid , DB_FILE_ID_LEN ); 355 i(( t = `__f_lock_hd ( dbv , 356 dbp , mdbp -> lock , DB_LOCK_WRITE , NULL , `NOWAIT_FLAG ( txn ))) != 0) 357 r ; 359 t = `__memp_ut ( mdbp -> mpf , ma , dbp -> iܙy ); 360 ma = NULL ; 361 i( t != 0) 362 r ; 364 i(( t = `__db_ma_upde ( mdbp , dbp , txn , 365 subdb , dbp -> ty , MU_RENAME , wme , 0)) != 0) 366 r ; 368 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , me ); 370 DB_TEST_RECOVERY_LABEL 371 r : 372 i( ma ! NULL && ( t_t = 373 `__memp_ut ( mdbp -> mpf , ma , dbp -> iܙy )!0 && t == 0) 374 t = t_t ; 376 i( txn = NULL ) { 377 i( mdbp ! NULL && 378 ( t_t = `__db_o ( mdbp , txn , DB_NOSYNC )!0 && t == 0) 379 t = t_t ; 381 i( mdbp ! NULL && ( t_t = 382 `__txn_oevt ( dbv , txn , mdbp )!0 && t == 0) 383 t = t_t ; 386 ( t ); 387 } } @../db/db_ret.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 23 $__db_t ( dbp , txn , h , dx , dbt , memp , memsize ) 24 DB * dbp ; 25 DB_TXN * txn ; 26 PAGE * h ; 27 u_t32_t dx ; 28 DBT * dbt ; 29 ** memp ; 30 u_t32_t * memsize ; 32 BKEYDATA * bk ; 33 HOFFPAGE ho ; 34 BOVERFLOW * bo ; 35 u_t32_t n ; 36 u_t8_t * hk ; 37 * da ; 39 `TYPE ( h )) { 40 P_HASH_UNSORTED : 41 P_HASH : 42 hk = `P_ENTRY ( dbp , h , dx ); 43 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) { 44 `memy (& ho , hk , ( HOFFPAGE )); 45 ( `__db_goff ( dbp , txn , dbt , 46 ho . , ho. pgno , memp , memsize )); 48 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , dx ); 49 da = `HKEYDATA_DATA ( hk ); 51 P_LBTREE : 52 P_LDUP : 53 P_LRECNO : 54 bk = `GET_BKEYDATA ( dbp , h , dx ); 55 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 56 bo = ( BOVERFLOW *) bk ; 57 ( `__db_goff ( dbp , txn , dbt , 58 bo -> , bo-> pgno , memp , memsize )); 60 n = bk ->len; 61 da = bk ->data; 64 ( `__db_pgfmt ( dbp -> dbv , h -> pgno )); 67 ( `__db_tcy ( dbp -> dbv , dbt , da , n , memp , memsize )); 68 } } 78 $__db_tcy ( dbv , dbt , da , n , memp , memsize ) 79 DB_ENV * dbv ; 80 DBT * dbt ; 81 * da ; 82 u_t32_t n ; 83 ** memp ; 84 u_t32_t * memsize ; 86 t ; 88 t = 0; 91 i( `F_ISSET ( dbt , DB_DBT_PARTIAL )) { 92 da = ( u_t8_t *)d+ dbt -> doff ; 93 i( n > dbt -> doff ) { 94 n - dbt -> doff ; 95 i( n > dbt -> dn ) 96 n = dbt -> dn ; 98 n = 0; 116 i( `F_ISSET ( dbt , DB_DBT_USERCOPY )) { 117 dbt -> size = n ; 118 ( n =0 ? 0 : dbv -> `dbt_urcy ( dbt , 0, da , 119 n , DB_USERCOPY_SETDATA )); 121 } i( `F_ISSET ( dbt , DB_DBT_MALLOC )) 122 t = `__os_umloc ( dbv , n , & dbt -> da ); 123 i( `F_ISSET ( dbt , DB_DBT_REALLOC )) { 124 i( dbt -> da = NULL || dbt-> size =0 || dbt->siz< n ) 125 t = `__os_uloc ( dbv , n , & dbt -> da ); 126 } i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 127 i( n !0 && ( dbt -> da = NULL || dbt-> un <en)) 128 t = DB_BUFFER_SMALL ; 129 } i( memp = NULL || memsize == NULL) 130 t = EINVAL ; 132 i( n !0 && (* memsize == 0 || *memsize <en)) { 133 i(( t = `__os_loc ( dbv , n , memp )) == 0) 134 * memsize = n ; 136 * memsize = 0; 138 i( t == 0) 139 dbt -> da = * memp ; 142 i( t =0 && n != 0) 143 `memy ( dbt -> da , da, n ); 151 dbt -> size = n ; 153 ( t ); 154 } } @../db/db_setid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/db_am.h " 15 ~"dbc/mp.h " 17 __v_feid_t __P (( DB_ENV *, const *, )); 26 $__v_feid_t_ ( dbv , me , ags ) 27 DB_ENV * dbv ; 28 cڡ * me ; 29 u_t32_t ags ; 31 DB_THREAD_INFO * ; 32 hd_check , t , t_t ; 34 `PANIC_CHECK ( dbv ); 35 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->fileid_reset"); 42 i( ags !0 && fg! DB_ENCRYPT ) 43 ( `__db_ ( dbv , "DB_ENV->fileid_reset", 0)); 45 `ENV_ENTER ( dbv , ); 48 hd_check = `IS_ENV_REPLICATED ( dbv ); 49 i( hd_check && ( t = `__v_p_r ( dbv , 1)) != 0) 50 r ; 52 t = `__v_feid_t ( dbv , me , `LF_ISSET ( DB_ENCRYPT ) ? 1 : 0); 54 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 55 t = t_t ; 57 r : `ENV_LEAVE ( dbv , ); 58 ( t ); 59 } } 66 $__v_feid_t ( dbv , me , yed ) 67 DB_ENV * dbv ; 68 cڡ * me ; 69 yed ; 71 DB * dbp ; 72 DBC * db ; 73 DBT key , da ; 74 DB_FH * fhp ; 75 DB_MPOOLFILE * mpf ; 76 DB_PGINFO cook ; 77 db_pgno_t pgno ; 78 t_t , t ; 79 size_t n ; 80 * _me ; 81 u_t8_t feid [ DB_FILE_ID_LEN ], mbuf [ DBMETASIZE ]; 82 * g ; 84 dbp = NULL ; 85 db = NULL ; 86 fhp = NULL ; 87 _me = NULL ; 90 i(( t = 91 `__db_ame ( dbv , DB_APP_DATA , me , 0, NULL , & _me )) != 0) 92 ( t ); 95 i(( t = `__os_feid ( dbv , _me , 1, feid )) != 0) 96 r ; 104 i(( t = `__os_ݒ ( dbv , _me , 0, 0, 0, & fhp )) != 0) { 105 `__db_r ( dbv , t , "%s", _me ); 106 r ; 108 i(( t = `__os_ad ( dbv , fhp , mbuf , (mbuf), & n )) != 0) 109 r ; 111 i( n !( mbuf )) { 112 t = EINVAL ; 113 `__db_rx ( dbv , 114 "%s: uxed fty ofm", _me ); 115 r ; 121 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 122 r ; 125 i( yed && ( t = `__db_t_ags ( dbp , DB_ENCRYPT )) != 0) 126 r ; 128 i(( t = `__db_ma_tup ( dbv , 129 dbp , _me , ( DBMETA *) mbuf , 0, DB_CHK_META )) != 0) 130 r ; 131 `memy ((( DBMETA *) mbuf )-> uid , feid , DB_FILE_ID_LEN ); 132 cook . db_gesize = ( mbuf ); 133 cook . ags = dbp ->flags; 134 cook . ty = dbp ->type; 135 key . da = & cook ; 137 i(( t = `__db_pgout ( dbv , 0, mbuf , & key )) != 0) 138 r ; 139 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 140 r ; 141 i(( t = `__os_wre ( dbv , fhp , mbuf , (mbuf), & n )) != 0) 142 r ; 143 i(( t = `__os_fsync ( dbv , fhp )) != 0) 144 r ; 161 i(( t = `__db_ݒ ( dbp , NULL , 162 me , NULL , DB_UNKNOWN , DB_RDWRMASTER , 0, PGNO_BASE_MD )) != 0) 163 r ; 171 i(! `F_ISSET ( dbp , DB_AM_SUBDB )) 172 r ; 174 mpf = dbp ->mpf; 175 `memt (& key , 0, (key)); 176 `memt (& da , 0, (data)); 177 i(( t = `__db_curs ( dbp , NULL , & db , 0)) != 0) 178 r ; 179 ( t = `__dbc_g ( db , & key , & da , DB_NEXT )) == 0) { 186 `memy (& pgno , da .da, ( db_pgno_t )); 187 `DB_NTOHL (& pgno ); 188 i(( t = `__memp_fg ( mpf , & pgno , NULL , 189 DB_MPOOL_DIRTY , & g )) != 0) 190 r ; 191 `memy ((( DBMETA *) g )-> uid , feid , DB_FILE_ID_LEN ); 192 i(( t = `__memp_ut ( mpf , g , db -> iܙy )) != 0) 193 r ; 195 i( t = DB_NOTFOUND ) 196 t = 0; 198 r : i( db ! NULL && ( t_t = `__dbc_o (db)!0 && t == 0) 199 t = t_t ; 200 i( dbp ! NULL && ( t_t = `__db_o (dbp, NULL, 0)!0 && t == 0) 201 t = t_t ; 202 i( fhp ! NULL && 203 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 204 t = t_t ; 205 i( _me ! NULL ) 206 `__os_ ( dbv , _me ); 208 ( t ); 209 } } @../db/db_setlsn.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/mp.h " 16 __v_l_t __P (( DB_ENV *, const *, )); 25 $__v_l_t_ ( dbv , me , ags ) 26 DB_ENV * dbv ; 27 cڡ * me ; 28 u_t32_t ags ; 30 DB_THREAD_INFO * ; 31 hd_check , t , t_t ; 33 `PANIC_CHECK ( dbv ); 34 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->lsn_reset"); 41 i( ags !0 && fg! DB_ENCRYPT ) 42 ( `__db_ ( dbv , "DB_ENV->lsn_reset", 0)); 44 `ENV_ENTER ( dbv , ); 47 hd_check = `IS_ENV_REPLICATED ( dbv ); 48 i( hd_check && ( t = `__v_p_r ( dbv , 1)) != 0) 49 r ; 51 t = `__v_l_t ( dbv , me , `LF_ISSET ( DB_ENCRYPT ) ? 1 : 0); 53 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 54 t = t_t ; 56 r : `ENV_LEAVE ( dbv , ); 57 ( t ); 58 } } 65 $__v_l_t ( dbv , me , yed ) 66 DB_ENV * dbv ; 67 cڡ * me ; 68 yed ; 70 DB * dbp ; 71 DB_MPOOLFILE * mpf ; 72 PAGE * g ; 73 db_pgno_t pgno ; 74 t_t , t ; 77 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 78 ( t ); 81 i( yed && ( t = `__db_t_ags ( dbp , DB_ENCRYPT )) != 0) 82 r ; 91 i(( t = `__db_ݒ ( dbp , NULL , 92 me , NULL , DB_UNKNOWN , DB_RDWRMASTER , 0, PGNO_BASE_MD )) != 0) { 93 `__db_r ( dbv , t , "%s", me ); 94 r ; 98 mpf = dbp ->mpf; 99 pgno = 0; 100 ( t = `__memp_fg ( mpf , & pgno , NULL , DB_MPOOL_DIRTY , & g )) == 0; 101 ++ pgno ) { 102 `LSN_NOT_LOGGED ( g -> l ); 103 i(( t = `__memp_ut ( mpf , g , DB_PRIORITY_UNCHANGED )) != 0) 104 r ; 107 i( t = DB_PAGE_NOTFOUND ) 108 t = 0; 110 r : i(( t_t = `__db_o ( dbp , NULL , 0)!0 && t == 0) 111 t = t_t ; 112 ( t ); 113 } } @../db/db_stati.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/hash.h " 15 ~"dbc/qam.h " 16 ~"dbc/lock.h " 17 ~"dbc/log.h " 18 ~"dbc/mp.h " 20 #ifde HAVE_STATISTICS 21 __db_t_l __P (( DB *, u_t32_t )); 22 __db_t_cem __P (( DBC *)); 23 __db_t_curs __P (( DB *)); 24 __db_t_s __P (( DB *, u_t32_t )); 25 __db__g __P (( DB *, u_t32_t )); 34 $__db__ ( dbp , txn , p , ags ) 35 DB * dbp ; 36 DB_TXN * txn ; 37 * p ; 38 u_t32_t ags ; 40 DB_ENV * dbv ; 41 DB_THREAD_INFO * ; 42 hd_check , t , t_t ; 44 dbv = dbp ->dbenv; 46 `PANIC_CHECK ( dbp -> dbv ); 47 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->stat"); 49 i(( t = `__db__g ( dbp , ags )) != 0) 50 ( t ); 52 `ENV_ENTER ( dbv , ); 55 hd_check = `IS_ENV_REPLICATED ( dbv ); 56 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 57 hd_check = 0; 58 r ; 61 t = `__db_ ( dbp , txn , p , ags ); 64 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 65 t = t_t ; 67 r : `ENV_LEAVE ( dbv , ); 68 ( t ); 69 } } 78 $__db_ ( dbp , txn , p , ags ) 79 DB * dbp ; 80 DB_TXN * txn ; 81 * p ; 82 u_t32_t ags ; 84 DB_ENV * dbv ; 85 DBC * dbc ; 86 t , t_t ; 88 dbv = dbp ->dbenv; 91 i(( t = `__db_curs ( dbp , txn , 92 & dbc , `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED ))) != 0) 93 ( t ); 95 `DEBUG_LWRITE ( dbc , NULL , "DB->", NULL, NULL, ags ); 96 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED ); 98 dbp -> ty ) { 99 DB_BTREE : 100 DB_RECNO : 101 t = `__bam_ ( dbc , p , ags ); 103 DB_HASH : 104 t = `__ham_ ( dbc , p , ags ); 106 DB_QUEUE : 107 t = `__qam_ ( dbc , p , ags ); 109 DB_UNKNOWN : 111 t = ( `__db_unknown_ty ( dbv , "DB->", dbp -> ty )); 115 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 116 t = t_t ; 118 ( t ); 119 } } 126 $__db__g ( dbp , ags ) 127 DB * dbp ; 128 u_t32_t ags ; 130 DB_ENV * dbv ; 132 dbv = dbp ->dbenv; 135 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED ); 136 ags ) { 138 DB_FAST_STAT : 141 ( `__db_ ( dbv , "DB->stat", 0)); 145 } } 154 $__db__t_ ( dbp , ags ) 155 DB * dbp ; 156 u_t32_t ags ; 158 DB_ENV * dbv ; 159 DB_THREAD_INFO * ; 160 hd_check , t , t_t ; 162 dbv = dbp ->dbenv; 164 `PANIC_CHECK ( dbv ); 165 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->stat_print"); 171 i(( t = `__db_fchk ( dbv , 172 "DB->_t", ags , DB_FAST_STAT | DB_STAT_ALL )) != 0) 173 ( t ); 175 `ENV_ENTER ( dbv , ); 178 hd_check = `IS_ENV_REPLICATED ( dbv ); 179 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 180 hd_check = 0; 181 r ; 184 t = `__db__t ( dbp , ags ); 187 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 188 t = t_t ; 190 r : `ENV_LEAVE ( dbv , ); 191 ( t ); 192 } } 201 $__db__t ( dbp , ags ) 202 DB * dbp ; 203 u_t32_t ags ; 205 time_t now ; 206 t ; 207 time_buf [ CTIME_BUFLEN ]; 209 () `time (& now ); 210 `__db_msg ( dbp -> dbv , "%.24s\tLotime", `__db_ime (& now , time_buf )); 212 i( `LF_ISSET ( DB_STAT_ALL && ( t = `__db_t_l ( dbp , ags )) != 0) 213 ( t ); 215 i(( t = `__db_t_s ( dbp , ags )) != 0) 216 ( t ); 219 } } 226 $__db_t_s ( dbp , ags ) 227 DB * dbp ; 228 u_t32_t ags ; 230 DBC * dbc ; 231 DB_ENV * dbv ; 232 t , t_t ; 234 dbv = dbp ->dbenv; 237 i(( t = `__db_curs ( dbp , NULL , & dbc , 0)) != 0) 238 ( t ); 240 `DEBUG_LWRITE ( dbc , NULL , "DB->stat_print", NULL, NULL, 0); 242 dbp -> ty ) { 243 DB_BTREE : 244 DB_RECNO : 245 t = `__bam__t ( dbc , ags ); 247 DB_HASH : 248 t = `__ham__t ( dbc , ags ); 250 DB_QUEUE : 251 t = `__qam__t ( dbc , ags ); 253 DB_UNKNOWN : 255 t = ( `__db_unknown_ty ( dbv , "DB->_t", dbp -> ty )); 259 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 260 t = t_t ; 262 ( t ); 263 } } 270 $__db_t_l ( dbp , ags ) 271 DB * dbp ; 272 u_t32_t ags ; 274 cڡ FN [] = { 275 { DB_AM_CHKSUM , "DB_AM_CHKSUM" }, 276 { DB_AM_COMPENSATE , "DB_AM_COMPENSATE" }, 277 { DB_AM_CREATED , "DB_AM_CREATED" }, 278 { DB_AM_CREATED_MSTR , "DB_AM_CREATED_MSTR" }, 279 { DB_AM_DBM_ERROR , "DB_AM_DBM_ERROR" }, 280 { DB_AM_DELIMITER , "DB_AM_DELIMITER" }, 281 { DB_AM_DISCARD , "DB_AM_DISCARD" }, 282 { DB_AM_DUP , "DB_AM_DUP" }, 283 { DB_AM_DUPSORT , "DB_AM_DUPSORT" }, 284 { DB_AM_ENCRYPT , "DB_AM_ENCRYPT" }, 285 { DB_AM_FIXEDLEN , "DB_AM_FIXEDLEN" }, 286 { DB_AM_INMEM , "DB_AM_INMEM" }, 287 { DB_AM_IN_RENAME , "DB_AM_IN_RENAME" }, 288 { DB_AM_NOT_DURABLE , "DB_AM_NOT_DURABLE" }, 289 { DB_AM_OPEN_CALLED , "DB_AM_OPEN_CALLED" }, 290 { DB_AM_PAD , "DB_AM_PAD" }, 291 { DB_AM_PGDEF , "DB_AM_PGDEF" }, 292 { DB_AM_RDONLY , "DB_AM_RDONLY" }, 293 { DB_AM_READ_UNCOMMITTED , "DB_AM_READ_UNCOMMITTED" }, 294 { DB_AM_RECNUM , "DB_AM_RECNUM" }, 295 { DB_AM_RECOVER , "DB_AM_RECOVER" }, 296 { DB_AM_RENUMBER , "DB_AM_RENUMBER" }, 297 { DB_AM_REVSPLITOFF , "DB_AM_REVSPLITOFF" }, 298 { DB_AM_SECONDARY , "DB_AM_SECONDARY" }, 299 { DB_AM_SNAPSHOT , "DB_AM_SNAPSHOT" }, 300 { DB_AM_SUBDB , "DB_AM_SUBDB" }, 301 { DB_AM_SWAP , "DB_AM_SWAP" }, 302 { DB_AM_TXN , "DB_AM_TXN" }, 303 { DB_AM_VERIFYING , "DB_AM_VERIFYING" }, 304 { 0, NULL } 306 DB_ENV * dbv ; 307 time_buf [ CTIME_BUFLEN ]; 309 dbv = dbp ->dbenv; 311 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 312 `__db_msg ( dbv , "DB handle information:"); 313 `STAT_ULONG ("Pagsize", dbp -> pgsize ); 314 `STAT_ISSET ("Adeo", dbp -> db_nd_o ); 315 `STAT_ISSET ("Fdback", dbp -> db_edback ); 316 `STAT_ISSET ("Ducom", dbp -> dup_com ); 317 `STAT_ISSET ("Arive", dbp -> p_ive ); 318 `STAT_ISSET ("DbEnv", dbp -> dbv ); 319 `STAT_STRING ("Ty", `__db_dbty_to_rg ( dbp -> ty )); 321 `__mux_t_debug_sg ( dbv , "Thad mux", dbp -> mux , ags ); 323 `STAT_STRING ("Fe", dbp -> ame ); 324 `STAT_STRING ("Daba", dbp -> dme ); 325 `STAT_HEX ("Oags", dbp -> ݒ_ags ); 327 `__db_t_feid ( dbv , dbp -> feid , "\tFile ID"); 329 `STAT_ULONG ("Curs܇dju ID", dbp -> adj_feid ); 330 `STAT_ULONG ("Mpgno", dbp -> ma_pgno ); 331 i( dbp -> lock ! NULL ) 332 `STAT_ULONG ("Lock ID", dbp -> lock -> id ); 333 i( dbp -> cur_lock ! NULL ) 334 `STAT_ULONG ("Hdˆock", dbp -> cur_lock -> id ); 335 i( dbp -> assoc_lock ! NULL ) 336 `STAT_ULONG ("Assocock", dbp -> assoc_lock -> id ); 337 `STAT_ULONG ("RPCemِID", dbp -> _id ); 339 `__db_msg ( dbv , 341 dbp -> timeamp =0 ? "0" : `__db_ime (&dbp->timeamp, time_buf )); 343 `STAT_ISSET ("Secdy clback", dbp -> s_back ); 344 `STAT_ISSET ("Primy hd", dbp -> s_imy ); 346 `STAT_ISSET ("", dbp -> i_ ); 347 `STAT_ISSET ("B/Reؚ", dbp -> bt_ ); 348 `STAT_ISSET ("Hash il", dbp -> h_ ); 349 `STAT_ISSET ("Queu", dbp -> q_ ); 350 `STAT_ISSET ("XA il", dbp -> xa_ ); 352 `__db_ags ( dbv , NULL , dbp -> ags , , NULL, "\tFlags"); 354 i( dbp -> log_fame = NULL ) 355 `STAT_ISSET ("Fmg infmi", dbp -> log_fame ); 357 `__dbg_t_ame ( dbv , dbp -> log_fame ); 359 () `__db_t_curs ( dbp ); 362 } } 369 $__db_t_curs ( dbp ) 370 DB * dbp ; 372 DB_ENV * dbv ; 373 DBC * dbc ; 374 t , t_t ; 376 dbv = dbp ->dbenv; 378 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 379 `__db_msg ( dbv , "DB handle cursors:"); 381 t = 0; 382 `MUTEX_LOCK ( dbp -> dbv , dbp-> mux ); 383 `__db_msg ( dbv , "Active queue:"); 384 `TAILQ_FOREACH ( dbc , & dbp -> aive_queue , lks ) 385 i(( t_t = `__db_t_cem ( dbc )!0 && t == 0) 386 t = t_t ; 387 `__db_msg ( dbv , "Join queue:"); 388 `TAILQ_FOREACH ( dbc , & dbp -> jo_queue , lks ) 389 i(( t_t = `__db_t_cem ( dbc )!0 && t == 0) 390 t = t_t ; 391 `__db_msg ( dbv , "Free queue:"); 392 `TAILQ_FOREACH ( dbc , & dbp -> _queue , lks ) 393 i(( t_t = `__db_t_cem ( dbc )!0 && t == 0) 394 t = t_t ; 395 `MUTEX_UNLOCK ( dbp -> dbv , dbp-> mux ); 397 ( t ); 398 } } 401 $__db_t_cem ( dbc ) 402 DBC * dbc ; 404 cڡ FN [] = { 405 { DBC_ACTIVE , "DBC_ACTIVE" }, 406 { DBC_DONTLOCK , "DBC_DONTLOCK" }, 407 { DBC_MULTIPLE , "DBC_MULTIPLE" }, 408 { DBC_MULTIPLE_KEY , "DBC_MULTIPLE_KEY" }, 409 { DBC_OPD , "DBC_OPD" }, 410 { DBC_OWN_LID , "DBC_OWN_LID" }, 411 { DBC_READ_COMMITTED , "DBC_READ_COMMITTED" }, 412 { DBC_READ_UNCOMMITTED , "DBC_READ_UNCOMMITTED" }, 413 { DBC_RECOVER , "DBC_RECOVER" }, 414 { DBC_RMW , "DBC_RMW" }, 415 { DBC_TRANSIENT , "DBC_TRANSIENT" }, 416 { DBC_WRITECURSOR , "DBC_WRITECURSOR" }, 417 { DBC_WRITER , "DBC_WRITER" }, 418 { 0, NULL } 420 DB * dbp ; 421 DBC_INTERNAL * ; 422 DB_ENV * dbv ; 424 dbp = dbc ->dbp; 425 dbv = dbp ->dbenv; 426 = dbc -> ; 428 `STAT_POINTER ("DBC", dbc ); 429 `STAT_POINTER ("Assocd dbp", dbc -> dbp ); 430 `STAT_POINTER ("Assocdxn", dbc -> txn ); 431 `STAT_POINTER ("Il", ); 432 `STAT_HEX ("Defaultocker ID", 433 dbc -> ef = NULL ? 0 : (( DB_LOCKER *)dbc->ef)-> id ); 434 `STAT_HEX ("Lock", `P_TO_ULONG ( dbc -> lock )); 435 `STAT_STRING ("Ty", `__db_dbty_to_rg ( dbc -> dbty )); 437 `STAT_POINTER ("Off-gdui curs", -> d ); 438 `STAT_POINTER ("Rendage", -> ge ); 439 `STAT_ULONG ("Ro", -> ro ); 440 `STAT_ULONG ("Pagnumb", -> pgno ); 441 `STAT_ULONG ("Pagdex", -> dx ); 442 `STAT_STRING ("Lock mode", `__db_lockmode_to_rg ( -> lock_mode )); 443 `__db_ags ( dbv , NULL , dbc -> ags , , NULL, "\tFlags"); 445 dbc -> dbty ) { 446 DB_BTREE : 447 DB_RECNO : 448 `__bam_t_curs ( dbc ); 450 DB_HASH : 451 `__ham_t_curs ( dbc ); 453 DB_UNKNOWN : 454 `DB_ASSERT ( dbv , dbp -> ty ! DB_UNKNOWN ); 456 DB_QUEUE : 461 } } 466 $__db__ ( dbp , txn , p , ags ) 467 DB * dbp ; 468 DB_TXN * txn ; 469 * p ; 470 u_t32_t ags ; 472 `COMPQUIET ( p , NULL ); 473 `COMPQUIET ( txn , NULL ); 474 `COMPQUIET ( ags , 0); 476 ( `__db__n_but ( dbp -> dbv )); 477 } } 480 $__db__t_ ( dbp , ags ) 481 DB * dbp ; 482 u_t32_t ags ; 484 `COMPQUIET ( ags , 0); 486 ( `__db__n_but ( dbp -> dbv )); 487 } } @../db/db_truncate.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/hash.h " 15 ~"dbc/qam.h " 16 ~"dbc/lock.h " 17 ~"dbc/log.h " 18 ~"dbc/txn.h " 20 __db_curs_check __P (( DB *)); 29 $__db_un_ ( dbp , txn , coup , ags ) 30 DB * dbp ; 31 DB_TXN * txn ; 32 u_t32_t * coup , ags ; 34 DB_ENV * dbv ; 35 DB_THREAD_INFO * ; 36 hd_check , t , t_t , txn_lol ; 38 dbv = dbp ->dbenv; 39 txn_lol = 0; 40 hd_check = 0; 42 `PANIC_CHECK ( dbv ); 43 `STRIP_AUTO_COMMIT ( ags ); 46 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 47 `__db_rx ( dbv , 49 ( EINVAL ); 51 i(( t = `__db_fchk ( dbv , "DB->un", ags , 0)) != 0) 52 ( t ); 54 `ENV_ENTER ( dbv , ); 60 i( `__db_curs_check ( dbp ) != 0) { 61 `__db_rx ( dbv , 63 r ; 66 #ifde CONFIG_TEST 67 i( `IS_REP_MASTER ( dbv )) 68 `DB_TEST_WAIT ( dbv , dbv-> _check ); 71 hd_check = `IS_ENV_REPLICATED ( dbv ); 72 i( hd_check && 73 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 74 hd_check = 0; 75 r ; 83 i( `DB_IS_READONLY ( dbp )) { 84 t = `__db_rdly ( dbv , "DB->truncate"); 85 r ; 92 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 93 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 94 r ; 95 txn_lol = 1; 99 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 100 r ; 102 t = `__db_un ( dbp , txn , coup ); 104 r : i( txn_lol && 105 ( t_t = `__db_txn_auto_sve ( dbv , txn , 0, t )) &&et == 0) 106 t = t_t ; 109 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 110 t = t_t ; 112 `ENV_LEAVE ( dbv , ); 113 ( t ); 114 } } 123 $__db_un ( dbp , txn , coup ) 124 DB * dbp ; 125 DB_TXN * txn ; 126 u_t32_t * coup ; 128 DB * sdbp ; 129 DBC * dbc ; 130 DB_ENV * dbv ; 131 u_t32_t scou ; 132 t , t_t ; 134 dbv = dbp ->dbenv; 135 dbc = NULL ; 136 t = 0; 143 i( dbp -> ty ! DB_QUEUE && `LIST_FIRST (&dbp-> s_cds ! NULL ) { 144 i(( t = `__db_s_f ( dbp , & sdbp )) != 0) 145 ( t ); 146 ; sdbp ! NULL && t =0; = `__db_s_xt (&sdbp, txn )) 147 i(( t = `__db_un ( sdbp , txn , & scou )) != 0) 149 i( sdbp ! NULL ) 150 () `__db_s_de ( sdbp , txn ); 151 i( t != 0) 152 ( t ); 155 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREDESTROY , t , NULL ); 158 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 159 ( t ); 161 `DEBUG_LWRITE ( dbc , txn , "DB->un", NULL , NULL, 0); 163 dbp -> ty ) { 164 DB_BTREE : 165 DB_RECNO : 166 t = `__bam_un ( dbc , coup ); 168 DB_HASH : 169 t = `__ham_un ( dbc , coup ); 171 DB_QUEUE : 172 t = `__qam_un ( dbc , coup ); 174 DB_UNKNOWN : 176 t = `__db_unknown_ty ( dbv , "DB->un", dbp -> ty ); 181 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 182 t = t_t ; 184 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , NULL ); 186 DB_TEST_RECOVERY_LABEL 188 ( t ); 189 } } 196 $__db_curs_check ( dbp ) 197 DB * dbp ; 199 DB * ldbp ; 200 DBC * dbc ; 201 DB_ENV * dbv ; 202 found ; 204 dbv = dbp ->dbenv; 206 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 207 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 208 found = 0; 209 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 210 ldbp = `TAILQ_NEXT dbp, dblilks )) { 211 `MUTEX_LOCK ( dbv , dbp -> mux ); 212 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) 213 i( `IS_INITIALIZED ( dbc )) { 214 found = 1; 217 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 218 i( found == 1) 221 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 223 ( found ); 224 } } @../db/db_upg.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/b.h " 15 ~"dbc/hash.h " 16 ~"dbc/qam.h " 25 $__db_upgde_ ( dbp , ame , ags ) 26 DB * dbp ; 27 cڡ * ame ; 28 u_t32_t ags ; 30 DB_ENV * dbv ; 31 t ; 33 dbv = dbp ->dbenv; 35 `PANIC_CHECK ( dbp -> dbv ); 41 i(( t = `__db_fchk ( dbv , "DB->upgde", ags , DB_DUPSORT )) != 0) 42 ( t ); 44 #ifde HAVE_UPGRADE_SUPPORT 45 ( `__db_upgde ( dbp , ame , ags )); 47 `COMPQUIET ( ame , NULL ); 48 `__db_rx ( dbv , "upgradeot supported"); 49 ( EINVAL ); 51 } } 53 #ifde HAVE_UPGRADE_SUPPORT 54 (* cڡ func_31_li [ P_PAGETYPE_MAX ]) 55 `__P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)) = { 56 NULL , 57 NULL , 58 __ham_31_hash , 59 NULL , 60 NULL , 61 __bam_31_lb , 62 NULL , 63 NULL , 64 __ham_31_hashma , 65 __bam_31_bma , 66 NULL , 67 NULL , 68 NULL , 69 NULL , 70 } }; 72 (* cڡ func_46_li [ P_PAGETYPE_MAX ]) 73 `__P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)) = { 74 NULL , 75 NULL , 76 __ham_46_hash , 77 NULL , 78 NULL , 79 NULL , 80 NULL , 81 NULL , 82 __ham_46_hashma , 83 NULL , 84 NULL , 85 NULL , 86 NULL , 87 NULL , 88 } }; 90 __db_ge_ss __P (( DB *, *, u_t32_t , (* const []) 91 ( DB *, *, u_t32_t , DB_FH *, PAGE *, *), DB_FH *)); 92 __db_t_ϡpgno `__P (( DB *, *, DB_FH *)); 101 $__db_upgde ( dbp , ame , ags ) 102 DB * dbp ; 103 cڡ * ame ; 104 u_t32_t ags ; 106 DB_ENV * dbv ; 107 DB_FH * fhp ; 108 DBMETA * ma ; 109 size_t n ; 110 t , t_t , u_mp_ݒ ; 111 u_t8_t mbuf [256], tmpags ; 112 * _me ; 114 u_mp_ݒ = 0; 115 dbv = dbp ->dbenv; 116 fhp = NULL ; 119 i(( t = `__db_ame ( dbv , 120 DB_APP_DATA , ame , 0, NULL , & _me )) != 0) 121 ( t ); 124 i(( t = `__os_ݒ ( dbv , _me , 0, 0, 0, & fhp )) != 0) { 125 `__db_r ( dbv , t , "%s", _me ); 126 ( t ); 130 i( dbp -> db_edback ! NULL ) 131 dbp -> `db_edback (dbp, DB_UPGRADE , 0); 137 i(( t = `__os_ad ( dbv , fhp , mbuf , (mbuf), & n )) != 0) 138 r ; 140 (( DBMETA *) mbuf )-> magic ) { 141 DB_BTREEMAGIC : 142 (( DBMETA *) mbuf )-> vsi ) { 148 i(( t = 149 `__bam_30_bma ( dbp , _me , mbuf )) != 0) 150 r ; 151 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 152 r ; 153 i(( t = `__os_wre ( dbv , fhp , mbuf , 256, & n )) != 0) 154 r ; 161 `memy (& dbp -> pgsize , mbuf + 20, ( u_t32_t )); 163 i(( t = `__db_ge_ss ( 164 dbp , _me , ags , func_31_li , fhp )) != 0) 165 r ; 168 i(( t = 169 `__db_t_ϡpgno ( dbp , _me , fhp )) != 0) 170 r ; 175 `__db_rx ( dbv , "%s: unsupported btree version: %lu", 176 _me , ( u_lg )(( DBMETA *) mbuf )-> vsi ); 177 t = DB_OLD_VERSION ; 178 r ; 181 DB_HASHMAGIC : 182 (( DBMETA *) mbuf )-> vsi ) { 189 i(( t = 190 `__ham_30_hashma ( dbp , _me , mbuf )) != 0) 191 r ; 192 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 193 r ; 194 i(( t = `__os_wre ( dbv , fhp , mbuf , 256, & n )) != 0) 195 r ; 212 i(( t = 213 `__ham_30_sizefix ( dbp , fhp , _me , mbuf )) != 0) 214 r ; 221 `memy (& dbp -> pgsize , mbuf + 20, ( u_t32_t )); 223 i(( t = `__db_ge_ss ( 224 dbp , _me , ags , func_31_li , fhp )) != 0) 225 r ; 228 i(( t = 229 `__db_t_ϡpgno ( dbp , _me , fhp )) != 0) 230 r ; 242 ma = ( DBMETA *) mbuf ; 247 `memy (& dbp -> pgsize , & ma -> gesize , 248 ( u_t32_t )); 257 `memy (& tmpags , & ma -> maags , ( u_t8_t )); 258 i( `FLD_ISSET ( tmpags , DBMETA_CHKSUM )) 259 `F_SET ( dbp , DB_AM_CHKSUM ); 260 `memy (& tmpags , & ma -> y_g , ( u_t8_t )); 261 i( tmpags != 0) { 262 i(! `CRYPTO_ON ( dbp -> dbv )) { 263 `__db_rx ( dbv , 265 t = EINVAL ; 266 r ; 268 `F_SET ( dbp , DB_AM_ENCRYPT ); 282 u_mp_ݒ = 1; 283 i(( t = `__os_ohd ( dbv , fhp )) != 0) 284 ( t ); 285 dbp -> ty = DB_HASH ; 286 i(( t = `__db_v_mpo ( dbp , ame , 287 DB_AM_NOT_DURABLE | DB_AM_VERIFYING )) != 0) 288 ( t ); 289 fhp = dbp -> mpf ->fhp; 292 i(( t = `__db_ge_ss ( 293 dbp , _me , ags , func_46_li , fhp )) != 0) 294 r ; 300 `__db_rx ( dbv , "%s: unsupported hash version: %lu", 301 _me , ( u_lg )(( DBMETA *) mbuf )-> vsi ); 302 t = DB_OLD_VERSION ; 303 r ; 306 DB_QAMMAGIC : 307 (( DBMETA *) mbuf )-> vsi ) { 314 i(( t = `__qam_31_qamma ( dbp , _me , mbuf )) != 0) 315 ( t ); 318 i(( t = `__qam_32_qamma ( dbp , _me , mbuf )) != 0) 319 ( t ); 320 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 321 r ; 322 i(( t = `__os_wre ( dbv , fhp , mbuf , 256, & n )) != 0) 323 r ; 329 `__db_rx ( dbv , "%s: unsupported queue version: %lu", 330 _me , ( u_lg )(( DBMETA *) mbuf )-> vsi ); 331 t = DB_OLD_VERSION ; 332 r ; 336 `M_32_SWAP ((( DBMETA *) mbuf )-> magic ); 337 (( DBMETA *) mbuf )-> magic ) { 338 DB_BTREEMAGIC : 339 DB_HASHMAGIC : 340 DB_QAMMAGIC : 341 `__db_rx ( dbv , 343 _me ); 346 `__db_rx ( dbv , 347 "%s: uecognized fty", _me ); 350 t = EINVAL ; 351 r ; 354 t = `__os_fsync ( dbv , fhp ); 360 r : i( u_mp_ݒ =0 && fhp ! NULL && 361 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 362 t = t_t ; 363 `__os_ ( dbv , _me ); 366 i( dbp -> db_edback ! NULL ) 367 dbp -> `db_edback (dbp, DB_UPGRADE , 100); 369 ( t ); 370 } } 377 $__db_ge_ss ( dbp , _me , ags , , fhp ) 378 DB * dbp ; 379 * _me ; 380 u_t32_t ags ; 381 (* cڡ [ P_PAGETYPE_MAX ]) 382 `__P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 383 DB_FH * fhp ; 385 DB_ENV * dbv ; 386 PAGE * ge ; 387 db_pgno_t i , pgno_ϡ ; 388 size_t n ; 389 dty , t ; 391 dbv = dbp ->dbenv; 394 i(( t = `__db_ϡpgno ( dbp , _me , fhp , & pgno_ϡ )) != 0) 395 ( t ); 398 i(( t = `__os_mloc ( dbv , dbp -> pgsize , & ge )) != 0) 399 ( t ); 402 i = 0; i < pgno_ϡ ; ++i) { 403 i( dbp -> db_edback ! NULL ) 404 dbp -> `db_edback ( 405 dbp , DB_UPGRADE , ()(( i * 100)/ pgno_ϡ )); 406 i(( t = `__os_ek ( dbv , fhp , i , dbp -> pgsize , 0)) != 0) 408 i(( t = `__os_ad ( dbv , fhp , ge , dbp -> pgsize , & n )) != 0) 410 dty = 0; 412 i(( t = `__db_dey_pg ( dbv , dbp , ge )) != 0) 414 i( [ `TYPE ( ge )] ! NULL && ( t = fl[TYPE(page)] 415 ( dbp , _me , ags , fhp , ge , & dty )) != 0) 417 i( dty ) { 418 i(( t = `__db_y_d_checksum_pg ( 419 dbv , dbp , ge )) != 0) 421 i(( t = 422 `__os_ek ( dbv , fhp , i , dbp -> pgsize , 0)) != 0) 424 i(( t = `__os_wre ( dbv , 425 fhp , ge , dbp -> pgsize , & n )) != 0) 430 `__os_ ( dbp -> dbv , ge ); 431 ( t ); 432 } } 441 $__db_ϡpgno ( dbp , _me , fhp , pgno_ϡp ) 442 DB * dbp ; 443 * _me ; 444 DB_FH * fhp ; 445 db_pgno_t * pgno_ϡp ; 447 DB_ENV * dbv ; 448 db_pgno_t pgno_ϡ ; 449 u_t32_t mbys , bys ; 450 t ; 452 dbv = dbp ->dbenv; 454 i(( t = `__os_iofo ( dbv , 455 _me , fhp , & mbys , & bys , NULL )) != 0) { 456 `__db_r ( dbv , t , "%s", _me ); 457 ( t ); 461 i( bys % dbp -> pgsize != 0) { 462 `__db_rx ( dbv , 463 "%s: fsiznه muɝ othgesize", _me ); 464 ( EINVAL ); 466 pgno_ϡ = mbys * ( MEGABYTE / dbp -> pgsize ); 467 pgno_ϡ + bys / dbp -> pgsize ; 469 * pgno_ϡp = pgno_ϡ ; 471 } } 480 $__db_t_ϡpgno ( dbp , _me , fhp ) 481 DB * dbp ; 482 * _me ; 483 DB_FH * fhp ; 485 DB_ENV * dbv ; 486 DBMETA ma ; 487 t ; 488 size_t n ; 490 dbv = dbp ->dbenv; 491 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 492 ( t ); 493 i(( t = `__os_ad ( dbv , fhp , & ma , (ma), & n )) != 0) 494 ( t ); 495 dbp -> pgsize = ma . gesize ; 496 i(( t = `__db_ϡpgno ( dbp , _me , fhp , & ma . ϡ_pgno )) != 0) 497 ( t ); 498 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 499 ( t ); 500 i(( t = `__os_wre ( dbv , fhp , & ma , (ma), & n )) != 0) 501 ( t ); 504 } } @../db/db_upg_opd.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 15 __db_bud_bi __P (( DB *, DB_FH *, PAGE *, PAGE *, u_t32_t , *)); 16 __db_bud_ri __P (( DB *, DB_FH *, PAGE *, PAGE *, u_t32_t , *)); 17 __db_up_ovf __P (( DB *, DB_FH *, db_pgno_t )); 19 #GET_PAGE ( dbp , fhp , pgno , ge ) { \ 20 i(( t = `__os_ek ( \ 21 dbp -> dbv , fhp , pgno , (dbp)-> pgsize , 0)) != 0) \ 22 r ; \ 23 i(( t = `__os_ad ( dbp -> dbv , \ 24 fhp , ge , ( dbp )-> pgsize , & n )) != 0) \ 25 r ; \ 26 } ) 27 #PUT_PAGE ( dbp , fhp , pgno , ge ) { \ 28 i(( t = `__os_ek ( \ 29 dbp -> dbv , fhp , pgno , (dbp)-> pgsize , 0)) != 0) \ 30 r ; \ 31 i(( t = `__os_wre ( dbp -> dbv , \ 32 fhp , ge , ( dbp )-> pgsize , & n )) != 0) \ 33 r ; \ 34 } ) 43 $__db_31_offdup ( dbp , _me , fhp , s܋d , pgn ) 44 DB * dbp ; 45 * _me ; 46 DB_FH * fhp ; 47 s܋d ; 48 db_pgno_t * pgn ; 50 PAGE * age , * ge ; 51 db_dx_t dx ; 52 db_pgno_t cur_t , i , xt_t , pgno , * pgno_cur , pgno_ϡ ; 53 db_pgno_t * pgno_xt , pgno_max , * tmp ; 54 db_o_t ecs ; 55 size_t n ; 56 v , nomem , t ; 58 age = ge = NULL ; 59 pgno_cur = pgno_xt = NULL ; 62 i(( t = `__os_mloc ( dbp -> dbv , dbp-> pgsize , & ge )) != 0) 63 r ; 71 ecs = 0, cur_t = pgno_max = 0, 72 pgno = * pgn ;gn! PGNO_INVALID ;) { 73 i( pgno_max = cur_t ) { 74 pgno_max += 20; 75 i(( t = `__os_loc ( dbp -> dbv , pgno_max * 76 ( db_pgno_t ), & pgno_cur )) != 0) 77 r ; 79 pgno_cur [ cur_t ++] = pgno ; 81 `GET_PAGE ( dbp , fhp , pgno , ge ); 82 ecs + `NUM_ENT ( ge ); 83 `LEVEL ( ge LEAFLEVEL ; 84 `TYPE ( ge s܋d ? P_LDUP : P_LRECNO ; 89 `ZERO_LSN ( `LSN ( ge )); 90 `PUT_PAGE ( dbp , fhp , pgno , ge ); 92 pgno = `NEXT_PGNO ( ge ); 96 i( cur_t <= 1) 97 de ; 104 i(( t = `__os_mloc ( dbp -> dbv , 105 cur_t * ( db_pgno_t ), & pgno_xt )) != 0) 106 r ; 109 i(( t = `__db_ϡpgno ( dbp , _me , fhp , & pgno_ϡ )) != 0) 110 r ; 113 i(( t = `__os_mloc ( dbp -> dbv , dbp-> pgsize , & age )) != 0) 114 r ; 115 `PGNO ( age PGNO_INVALID ; 121 v = LEAFLEVEL + 1; cur_t > 1; ++level) { 122 dx = 0, i = xt_t = 0; i < cur_t ;) { 123 i( dx == 0) { 124 `P_INIT ( age , dbp -> pgsize , pgno_ϡ , 125 PGNO_INVALID , PGNO_INVALID, 126 v , s܋d ? P_IBTREE : P_IRECNO ); 127 `ZERO_LSN ( `LSN ( age )); 129 pgno_xt [ xt_t ++] = pgno_ϡ ++; 132 `GET_PAGE ( dbp , fhp , pgno_cur [ i ], ge ); 141 nomem = 0; 142 i( s܋d ) { 143 i(( t = `__db_bud_bi ( 144 dbp , fhp , age , ge , dx , & nomem )) != 0) 145 r ; 147 i(( t = `__db_bud_ri ( 148 dbp , fhp , age , ge , dx , & nomem )) != 0) 149 r ; 150 i( nomem ) { 151 dx = 0; 152 `PUT_PAGE ( dbp , fhp , `PGNO ( age ), ipage); 154 ++ dx ; 155 ++ `NUM_ENT ( age ); 156 ++ i ; 164 i( xt_t == 1) 165 `RE_NREC_SET ( age , ecs ); 166 `PUT_PAGE ( dbp , fhp , `PGNO ( age ), ipage); 169 cur_t = xt_t ; 170 tmp = pgno_cur ; 171 pgno_cur = pgno_xt ; 172 pgno_xt = tmp ; 175 de : * pgn = pgno_cur [0]; 177 r : i( pgno_cur ! NULL ) 178 `__os_ ( dbp -> dbv , pgno_cur ); 179 i( pgno_xt ! NULL ) 180 `__os_ ( dbp -> dbv , pgno_xt ); 181 i( age ! NULL ) 182 `__os_ ( dbp -> dbv , age ); 183 i( ge ! NULL ) 184 `__os_ ( dbp -> dbv , ge ); 186 ( t ); 187 } } 194 $__db_bud_bi ( dbp , fhp , age , ge , dx , nomemp ) 195 DB * dbp ; 196 DB_FH * fhp ; 197 PAGE * age , * ge ; 198 u_t32_t dx ; 199 * nomemp ; 201 BINTERNAL bi , * chd_bi ; 202 BKEYDATA * chd_bk ; 203 u_t8_t * p ; 204 t ; 205 db_dx_t * p ; 207 p = `P_INP ( dbp , age ); 208 `TYPE ( ge )) { 209 P_IBTREE : 210 chd_bi = `GET_BINTERNAL ( dbp , ge , 0); 211 i( `P_FREESPACE ( dbp , age < `BINTERNAL_PSIZE ( chd_bi -> n )) { 212 * nomemp = 1; 215 p [ dx ] = 216 `HOFFSET ( age - `BINTERNAL_SIZE ( chd_bi -> n ); 217 p = `P_ENTRY ( dbp , age , dx ); 219 bi . n = chd_bi ->len; 220 `B_TSET ( bi . ty , chd_bi ->type); 221 bi . pgno = `PGNO ( ge ); 222 bi . ecs = `__bam_tٮ ( dbp , ge ); 223 `memy ( p , & bi , `SSZA ( BINTERNAL , da )); 224 p + `SSZA ( BINTERNAL , da ); 225 `memy ( p , chd_bi -> da , chd_bi-> n ); 228 i( `B_TYPE ( chd_bi -> ty = B_OVERFLOW ) 229 i(( t = `__db_up_ovf ( dbp , fhp , 230 (( BOVERFLOW *)( chd_bi -> da ))-> pgno )) != 0) 231 ( t ); 233 P_LDUP : 234 chd_bk = `GET_BKEYDATA ( dbp , ge , 0); 235 `B_TYPE ( chd_bk -> ty )) { 236 B_KEYDATA : 237 i( `P_FREESPACE ( dbp , age ) < 238 `BINTERNAL_PSIZE ( chd_bk -> n )) { 239 * nomemp = 1; 242 p [ dx ] = 243 `HOFFSET ( age - `BINTERNAL_SIZE ( chd_bk -> n ); 244 p = `P_ENTRY ( dbp , age , dx ); 246 bi . n = chd_bk ->len; 247 `B_TSET ( bi . ty , chd_bk ->type); 248 bi . pgno = `PGNO ( ge ); 249 bi . ecs = `__bam_tٮ ( dbp , ge ); 250 `memy ( p , & bi , `SSZA ( BINTERNAL , da )); 251 p + `SSZA ( BINTERNAL , da ); 252 `memy ( p , chd_bk -> da , chd_bk-> n ); 254 B_OVERFLOW : 255 i( `P_FREESPACE ( dbp , age ) < 256 `BINTERNAL_PSIZE ( BOVERFLOW_SIZE )) { 257 * nomemp = 1; 260 p [ dx ] = 261 `HOFFSET ( age - `BINTERNAL_SIZE ( BOVERFLOW_SIZE ); 262 p = `P_ENTRY ( dbp , age , dx ); 264 bi . n = BOVERFLOW_SIZE ; 265 `B_TSET ( bi . ty , chd_bk ->type); 266 bi . pgno = `PGNO ( ge ); 267 bi . ecs = `__bam_tٮ ( dbp , ge ); 268 `memy ( p , & bi , `SSZA ( BINTERNAL , da )); 269 p + `SSZA ( BINTERNAL , da ); 270 `memy ( p , chd_bk , BOVERFLOW_SIZE ); 273 i(( t = `__db_up_ovf ( dbp , fhp , 274 (( BOVERFLOW *) chd_bk )-> pgno )) != 0) 275 ( t ); 278 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( ge ))); 282 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( ge ))); 286 } } 293 $__db_bud_ri ( dbp , fhp , age , ge , dx , nomemp ) 294 DB * dbp ; 295 DB_FH * fhp ; 296 PAGE * age , * ge ; 297 u_t32_t dx ; 298 * nomemp ; 300 RINTERNAL ri ; 301 db_dx_t * p ; 303 `COMPQUIET ( fhp , NULL ); 304 p = `P_INP ( dbp , age ); 305 i( `P_FREESPACE ( dbp , age < RINTERNAL_PSIZE ) { 306 * nomemp = 1; 310 ri . pgno = `PGNO ( ge ); 311 ri . ecs = `__bam_tٮ ( dbp , ge ); 312 p [ dx ] = `HOFFSET ( age - RINTERNAL_SIZE ; 313 `memy ( `P_ENTRY ( dbp , age , dx ), & ri , RINTERNAL_SIZE ); 316 } } 323 $__db_up_ovf ( dbp , fhp , pgno ) 324 DB * dbp ; 325 DB_FH * fhp ; 326 db_pgno_t pgno ; 328 PAGE * ge ; 329 size_t n ; 330 t ; 333 i(( t = `__os_mloc ( dbp -> dbv , dbp-> pgsize , & ge )) != 0) 334 ( t ); 336 `GET_PAGE ( dbp , fhp , pgno , ge ); 337 ++ `OV_REF ( ge ); 338 `PUT_PAGE ( dbp , fhp , pgno , ge ); 340 r : `__os_ ( dbp -> dbv , ge ); 342 ( t ); 343 } } @../db/db_vrfy.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/db_vify.h " 15 ~"dbc/b.h " 16 ~"dbc/hash.h " 17 ~"dbc/lock.h " 18 ~"dbc/mp.h " 19 ~"dbc/qam.h " 20 ~"dbc/txn.h " 29 u_t __db_guesgsize __P (( DB_ENV *, DB_FH *)); 30 __db_is_vid_magio __P (( u_t32_t , DBTYPE *)); 31 __db_is_vid_gy __P (( u_t32_t )); 32 __db_ma2pgt 33 __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t , DB *)); 34 __db_lvage_subdbpg __P (( DB *, VRFY_DBINFO *, 35 PAGE *, *, (*)(*, cڡ *), u_t32_t )); 36 __db_lvage_subdbs `__P (( DB *, VRFY_DBINFO *, *, 37 (*)(*, cڡ *), u_t32_t , *)); 38 __db_lvage_unknowns `__P (( DB *, VRFY_DBINFO *, *, 39 (*)(*, cڡ *), u_t32_t )); 40 __db_vify `__P (( DB *, const *, const *, 41 *, (*)(*, cڡ *), u_t32_t )); 42 __db_vify_g `__P (( DB *, cڡ *, *, u_t32_t )); 43 __db_vrfy_li 44 `__P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t )); 45 __db_vrfy_vid 46 `__P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 47 __db_vrfy_dchkly `__P (( DB *, 48 VRFY_DBINFO *, cڡ *, cڡ *, u_t32_t )); 49 __db_vrfy_gezo `__P (( DB *, VRFY_DBINFO *, DB_FH *, u_t32_t )); 50 __db_vrfy_subdbs 51 `__P (( DB *, VRFY_DBINFO *, cڡ *, u_t32_t )); 52 __db_vrfy_ruu 53 `__P (( DB *, VRFY_DBINFO *, cڡ *, db_pgno_t , u_t32_t )); 54 __db_vrfy_wkges `__P (( DB *, VRFY_DBINFO *, 55 *, (*)(*, cڡ *), u_t32_t )); 57 #VERIFY_FLAGS \ 58 ( DB_AGGRESSIVE | \ 59 DB_NOORDERCHK | DB_ORDERCHKONLY | DB_PRINTABLE | DB_SALVAGE | DB_UNREF ) ) 69 $__db_vify_ ( dbp , fe , daba , outfe , ags ) 70 DB * dbp ; 71 cڡ * fe , * daba ; 72 FILE * outfe ; 73 u_t32_t ags ; 79 ( `__db_vify_ ( dbp , 80 fe , daba , outfe , __db__back , ags )); 81 } } 90 $__db_vify_ ( dbp , ame , dme , hd , back , ags ) 91 DB * dbp ; 92 cڡ * ame , * dme ; 93 * hd ; 94 (* back `__P ((*, const *)); 95 u_t32_t ags ; 97 DB_ENV * dbv ; 98 t , t_t ; 100 dbv = dbp ->dbenv; 102 `PANIC_CHECK ( dbv ); 103 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->verify"); 105 #ifde HAVE_FTRUNCATE 111 i(! `LF_ISSET ( DB_SALVAGE )) 112 `LF_SET ( DB_UNREF ); 115 i(( t = `__db_vify_g ( dbp , dme , hd , ags )) == 0) 116 t = `__db_vify ( dbp , ame , dme , hd , back , ags ); 119 i(( t_t = `__db_o ( dbp , NULL , 0)!0 && t == 0) 120 t = t_t ; 122 ( t ); 123 } } 130 $__db_vify_g ( dbp , dme , hd , ags ) 131 DB * dbp ; 132 cڡ * dme ; 133 * hd ; 134 u_t32_t ags ; 136 DB_ENV * dbv ; 137 t ; 139 dbv = dbp ->dbenv; 141 i(( t = `__db_fchk ( dbv , "DB->vify", ags , VERIFY_FLAGS )) != 0) 142 ( t ); 152 i( `LF_ISSET ( DB_SALVAGE )) { 153 i( `LF_ISSET (~( DB_AGGRESSIVE | DB_PRINTABLE | DB_SALVAGE ))) 154 ( `__db_ ( dbv , "DB->verify", 1)); 155 i( hd = NULL ) { 156 `__db_rx ( dbv , 158 ( EINVAL ); 161 i( `LF_ISSET ( DB_AGGRESSIVE | DB_PRINTABLE )) 162 ( `__db_ ( dbv , "DB->verify", 1)); 168 i(( t = `__db_fcchk ( dbv , "DB->vify", ags , 169 DB_ORDERCHKONLY , DB_SALVAGE | DB_NOORDERCHK )) != 0) 170 ( t ); 171 i( `LF_ISSET ( DB_ORDERCHKONLY && dme = NULL ) { 172 `__db_rx ( dbv , "DB_ORDERCHKONLYequires databaseame"); 173 ( EINVAL ); 176 } } 193 $__db_vify ( dbp , me , subdb , hd , back , ags ) 194 DB * dbp ; 195 cڡ * me , * subdb ; 196 * hd ; 197 (* back `__P ((*, const *)); 198 u_t32_t ags ; 200 DB_ENV * dbv ; 201 DB_FH * fhp ; 202 VRFY_DBINFO * vdp ; 203 has_subdbs , isbad , t , t_t ; 204 * _me ; 206 dbv = dbp ->dbenv; 207 fhp = NULL ; 208 vdp = NULL ; 209 _me = NULL ; 210 has_subdbs = isbad = t = 0; 212 `F_SET ( dbp , DB_AM_VERIFYING ); 215 i(! `LF_ISSET ( DB_SALVAGE && dbp -> db_edback ! NULL ) 216 dbp -> `db_edback (dbp, DB_VERIFY , 0); 227 i(( t = `__db_vrfy_dbfo_ ( dbv , 1024, & vdp )) != 0) 228 r ; 235 i( `LF_ISSET ( DB_PRINTABLE )) 236 `F_SET ( vdp , SALVAGE_PRINTABLE ); 239 i(( t = `__db_ame ( dbv , 240 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 241 r ; 254 i(( t = `__os_ݒ ( dbv , _me , 0, DB_OSO_RDONLY , 0, & fhp )) != 0) 255 r ; 258 i(( t = `__db_vrfy_gezo ( dbp , vdp , fhp , ags )) != 0) { 259 i( t = DB_VERIFY_BAD ) 260 isbad = 1; 262 r ; 277 i(( t = `__db_v_tup ( dbp , NULL , 278 me , subdb , TXN_INVALID , DB_ODDFILESIZE | DB_RDONLY )) != 0) 279 r ; 285 i( dbp -> ty = DB_QUEUE && 286 ( t = `__qam_t_ext_da ( dbp , me )) != 0) 287 r ; 290 `F_SET ( dbp , DB_AM_OPEN_CALLED ); 293 i(( t = `__memp_g_ϡ_pgno ( dbp -> mpf , & vdp -> ϡ_pgno )) != 0) 294 r ; 305 i( `LF_ISSET ( DB_ORDERCHKONLY )) { 306 t = `__db_vrfy_dchkly ( dbp , vdp , me , subdb , ags ); 307 de ; 316 i( `LF_ISSET ( DB_SALVAGE )) { 317 i(( t = `__db_lvage_ ( vdp )) != 0) 318 r ; 327 i(! `LF_ISSET ( DB_AGGRESSIVE && `__db_lvage_subdbs ( 328 dbp , vdp , hd , back , ags , & has_subdbs ) != 0) 329 isbad = 1; 336 i( has_subdbs ) 337 `F_SET ( vdp , SALVAGE_PRINTHEADER ); 340 i(( t = 341 `__db_vrfy_wkges ( dbp , vdp , hd , back , ags )) != 0) { 342 i( t = DB_VERIFY_BAD ) 343 isbad = 1; 345 r ; 349 i(! `LF_ISSET ( DB_SALVAGE && isbad == 0) 350 i(( t = 351 `__db_vrfy_ruu ( dbp , vdp , me , 0, ags )) != 0) { 352 i( t = DB_VERIFY_BAD ) 353 isbad = 1; 355 r ; 363 i( `LF_ISSET ( DB_SALVAGE )) { 364 i(( t = `__db_lvage_unknowns ( dbp , 365 vdp , hd , back , ags )) != 0) 366 isbad = 1; 368 `__db_lvage_deroy ( vdp ); 372 i( `LF_ISSET ( DB_SALVAGE ) && 373 (! has_subdbs || `F_ISSET ( vdp , SALVAGE_PRINTFOOTER ))) 374 () `__db_foٔ ( hd , back ); 376 de : r : 378 i(! `LF_ISSET ( DB_SALVAGE && dbp -> db_edback ! NULL ) 379 dbp -> `db_edback (dbp, DB_VERIFY , 100); 381 i( fhp ! NULL && 382 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 383 t = t_t ; 384 i( vdp ! NULL && 385 ( t_t = `__db_vrfy_dbfo_deroy ( dbv , vdp )!0 && t == 0) 386 t = t_t ; 387 i( _me ! NULL ) 388 `__os_ ( dbv , _me ); 398 i( t = DB_VERIFY_FATAL || 399 t = DB_PAGE_NOTFOUND || (=0 && isbad == 1)) 400 t = DB_VERIFY_BAD ; 403 i( t != 0) 404 `__db_r ( dbv , t , "%s", me ); 406 ( t ); 407 } } 417 $__db_vrfy_gezo ( dbp , vdp , fhp , ags ) 418 DB * dbp ; 419 VRFY_DBINFO * vdp ; 420 DB_FH * fhp ; 421 u_t32_t ags ; 423 DBMETA * ma ; 424 DB_ENV * dbv ; 425 VRFY_PAGEINFO * p ; 426 db_pgno_t li ; 427 size_t ; 428 isbad , t , swd ; 429 u_t8_t mbuf [ DBMETASIZE ]; 431 isbad = t = swd = 0; 432 li = 0; 433 dbv = dbp ->dbenv; 434 ma = ( DBMETA *) mbuf ; 435 dbp -> ty = DB_UNKNOWN ; 437 i(( t = `__db_vrfy_ggefo ( vdp , PGNO_BASE_MD , & p )) != 0) 438 ( t ); 446 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0 || 447 ( t = `__os_ad ( dbv , fhp , mbuf , DBMETASIZE , & )) != 0) { 448 `__db_r ( dbv , t , 449 "Madg%lu cn bad", ( u_lg ) PGNO_BASE_MD ); 450 ( t ); 453 i( ! DBMETASIZE ) { 454 `EPRINT (( dbv , 456 ( u_lg ) PGNO_BASE_MD )); 457 ( DB_VERIFY_FATAL ); 460 i(( t = `__db_chk_ma ( dbv , dbp , ma , 1)) != 0) { 461 `EPRINT (( dbv , 462 "Pag%lu: madgcrued", ( u_lg ) PGNO_BASE_MD )); 463 isbad = 1; 464 i( t != -1) { 465 `EPRINT (( dbv , 467 ( u_lg ) PGNO_BASE_MD )); 468 ( DB_VERIFY_FATAL ); 478 i( ma -> pgno ! PGNO_BASE_MD ) { 479 isbad = 1; 480 `EPRINT (( dbv , "Page %lu:gno incorrectly seto %lu", 481 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> pgno )); 485 i( `__db_is_vid_magio ( ma -> magic , & dbp -> ty )) 486 swd = 0; 488 `M_32_SWAP ( ma -> magic ); 489 i( `__db_is_vid_magio ( ma -> magic , 490 & dbp -> ty )) 491 swd = 1; 493 isbad = 1; 494 `EPRINT (( dbv , 496 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> magic )); 504 i( swd ) 505 `M_32_SWAP ( ma -> vsi ); 506 i(( dbp -> ty = DB_BTREE && 507 ( ma -> vsi > DB_BTREEVERSION || 508 ma -> vsi < DB_BTREEOLDVER )) || 509 ( dbp -> ty = DB_HASH && 510 ( ma -> vsi > DB_HASHVERSION || 511 ma -> vsi < DB_HASHOLDVER )) || 512 ( dbp -> ty = DB_QUEUE && 513 ( ma -> vsi > DB_QAMVERSION || 514 ma -> vsi < DB_QAMOLDVER ))) { 515 isbad = 1; 516 `EPRINT (( dbv , 518 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> vsi )); 525 i( swd ) 526 `M_32_SWAP ( ma -> gesize ); 527 i( `IS_VALID_PAGESIZE ( ma -> gesize )) 528 dbp -> pgsize = ma -> gesize ; 530 isbad = 1; 531 `EPRINT (( dbv , "Page %lu: badage size %lu", 532 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> gesize )); 539 i(! `IS_VALID_PAGESIZE ( dbp -> pgsize )) 540 dbp -> pgsize = `__db_guesgsize ( dbv , fhp ); 548 i(( dbp -> ty = DB_BTREE && ma ->ty ! P_BTREEMETA ) || 549 ( dbp -> ty = DB_HASH && ma ->ty ! P_HASHMETA ) || 550 ( dbp -> ty = DB_QUEUE && ma ->ty ! P_QAMMETA )) { 551 isbad = 1; 552 `EPRINT (( dbv , "Page %lu: badageype %lu", 553 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> ty )); 559 i( ma -> maags != 0) { 560 i( ma -> maags = DBMETA_CHKSUM ) 561 `F_SET ( p , VRFY_HAS_CHKSUM ); 563 isbad = 1; 564 `EPRINT (( dbv , 566 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> maags )); 576 i( swd ) 577 `M_32_SWAP ( ma -> ); 578 li = ma -> ; 585 p -> pgno = PGNO_BASE_MD ; 586 p -> ty = ma ->type; 592 `F_SET ( p , VRFY_INCOMPLETE ); 594 p -> = li ; 596 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 597 ( t ); 600 `memy ( dbp -> feid , ma -> uid , DB_FILE_ID_LEN ); 602 i( swd == 1) 603 `F_SET ( dbp , DB_AM_SWAP ); 605 ( isbad ? DB_VERIFY_BAD : 0); 606 } } 614 $__db_vrfy_wkges ( dbp , vdp , hd , back , ags ) 615 DB * dbp ; 616 VRFY_DBINFO * vdp ; 617 * hd ; 618 (* back `__P ((*, const *)); 619 u_t32_t ags ; 621 DB_ENV * dbv ; 622 DB_MPOOLFILE * mpf ; 623 VRFY_PAGEINFO * p ; 624 PAGE * h ; 625 db_pgno_t i ; 626 t , t_t , isbad ; 628 dbv = dbp ->dbenv; 629 mpf = dbp ->mpf; 630 h = NULL ; 631 t = isbad = t_t = 0; 633 i = 0; i < vdp -> ϡ_pgno ; i++) { 638 i( `LF_ISSET ( DB_SALVAGE && ( `__db_lvage_isde ( vdp , i ) != 0)) 648 i(( t_t = `__memp_fg ( mpf , & i , NULL , 0, & h )) != 0) { 649 i( dbp -> ty = DB_HASH ) { 650 i(( t_t = 651 `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 652 r1 ; 653 p -> ty = P_INVALID ; 654 p -> pgno = i ; 655 `F_CLR ( p , VRFY_IS_ALLZEROES ); 656 i(( t_t = `__db_vrfy_puagefo ( 657 dbv , vdp , p )) != 0) 658 r1 ; 661 r1 : i( t == 0) 662 t = t_t ; 663 i( `LF_ISSET ( DB_SALVAGE )) 665 ( t ); 668 i( `LF_ISSET ( DB_SALVAGE )) { 674 i(( t_t = `__db_lvage ( dbp , 675 vdp , i , h , hd , back , ags )) != 0) { 676 i( t == 0) 677 t = t_t ; 678 isbad = 1; 691 i( i ! PGNO_BASE_MD ) { 692 t = `__db_vrfy_comm ( dbp , vdp , h , i , ags ); 693 i( t = DB_VERIFY_BAD ) 694 isbad = 1; 695 i( t != 0) 696 r ; 699 `TYPE ( h )) { 700 P_INVALID : 701 t = `__db_vrfy_vid ( dbp , vdp , h , i , ags ); 703 __P_DUPLICATE : 704 isbad = 1; 705 `EPRINT (( dbv , 707 ( u_lg ) i )); 709 P_HASH_UNSORTED : 710 P_HASH : 711 t = `__ham_vrfy ( dbp , vdp , h , i , ags ); 713 P_IBTREE : 714 P_IRECNO : 715 P_LBTREE : 716 P_LDUP : 717 t = `__bam_vrfy ( dbp , vdp , h , i , ags ); 719 P_LRECNO : 720 t = `__m_vrfy_af ( dbp , vdp , h , i , ags ); 722 P_OVERFLOW : 723 t = `__db_vrfy_ovow ( dbp , vdp , h , i , ags ); 725 P_HASHMETA : 726 t = `__ham_vrfy_ma ( dbp , 727 vdp , ( HMETA *) h , i , ags ); 729 P_BTREEMETA : 730 t = `__bam_vrfy_ma ( dbp , 731 vdp , ( BTMETA *) h , i , ags ); 733 P_QAMMETA : 734 t = `__qam_vrfy_ma ( dbp , 735 vdp , ( QMETA *) h , i , ags ); 737 P_QAMDATA : 738 t = `__qam_vrfy_da ( dbp , 739 vdp , ( QPAGE *) h , i , ags ); 742 `EPRINT (( dbv , 744 ( u_lg ) i , (u_lg) `TYPE ( h ))); 745 isbad = 1; 752 i( t = DB_VERIFY_BAD ) 753 isbad = 1; 754 i( t != 0) 755 r ; 763 i( dbp -> db_edback ! NULL ) 764 dbp -> `db_edback (dbp, DB_VERIFY , 765 ()(( i + 1* 50 / ( vdp -> ϡ_pgno + 1))); 772 i(( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) { 773 i( t == 0) 774 t = t_t ; 775 i(! `LF_ISSET ( DB_SALVAGE )) 776 ( t ); 784 i( `F_ISSET ( vdp , VRFY_QMETA_SET && ( t_t = 785 `__qam_vrfy_wkqueue ( dbp , vdp , hd , back , ags )) != 0) { 786 i( t == 0) 787 t = t_t ; 788 i( t_t = DB_VERIFY_BAD ) 789 isbad = 1; 790 i(! `LF_ISSET ( DB_SALVAGE )) 791 ( t ); 795 r : i( h ! NULL && 796 ( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) 797 ( t =0 ? t_t :et); 800 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 801 } } 813 $__db_vrfy_ruu ( dbp , vdp , dbme , ma_pgno , ags ) 814 DB * dbp ; 815 VRFY_DBINFO * vdp ; 816 cڡ * dbme ; 817 db_pgno_t ma_pgno ; 818 u_t32_t ags ; 820 DB * pgt ; 821 DB_ENV * dbv ; 822 VRFY_PAGEINFO * p ; 823 db_pgno_t i ; 824 t , isbad , hassubs , p ; 826 isbad = 0; 827 p = NULL ; 828 dbv = dbp ->dbenv; 829 pgt = vdp ->pgset; 845 i( dbp -> db_edback ! NULL ) 846 vdp -> pgs_mag = vdp-> ϡ_pgno + 1; 851 dbp -> ty ) { 852 DB_BTREE : 853 DB_RECNO : 854 i(( t = `__bam_vrfy_ruu ( dbp , vdp , 0, ags )) != 0) { 855 i( t = DB_VERIFY_BAD ) 856 isbad = 1; 858 r ; 866 i(( t = `__db_vrfy_ggefo ( vdp , 0, & p )) != 0) 867 r ; 868 hassubs = `F_ISSET ( p , VRFY_HAS_SUBDBS ) ? 1 : 0; 869 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 870 r ; 871 p = NULL ; 873 i( isbad =0 && hassubs ) 874 i(( t = 875 `__db_vrfy_subdbs ( dbp , vdp , dbme , ags )) != 0) { 876 i( t = DB_VERIFY_BAD ) 877 isbad = 1; 879 r ; 882 DB_HASH : 883 i(( t = `__ham_vrfy_ruu ( dbp , vdp , 0, ags )) != 0) { 884 i( t = DB_VERIFY_BAD ) 885 isbad = 1; 887 r ; 890 DB_QUEUE : 891 i(( t = `__qam_vrfy_ruu ( dbp , vdp , ags )) != 0) { 892 i( t = DB_VERIFY_BAD ) 893 isbad = 1; 902 r ; 903 DB_UNKNOWN : 905 t = `__db_unknown_th ( dbv , "__db_vrfy_structure"); 906 r ; 910 i(( t = 911 `__db_vrfy_li ( dbp , vdp , ma_pgno , ags )= DB_VERIFY_BAD ) 912 isbad = 1; 921 i( t !0 || isbad == 1) 922 r ; 929 i = 0; i < vdp -> ϡ_pgno + 1; i++) { 930 i(( t = `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 931 r ; 932 i(( t = `__db_vrfy_pgt_g ( pgt , i , & p )) != 0) 933 r ; 934 i( p -> ty = P_OVERFLOW ) { 935 i(( u_t32_t ) p ! p -> fcou ) { 936 `EPRINT (( dbv , 938 ( u_lg ) i , 939 ( u_lg ) p -> fcou , (u_lg) p )); 940 isbad = 1; 942 } i( p =0 && `LF_ISSET ( DB_UNREF ) && 943 !( dbp -> ty = DB_HASH && p ->ty = P_INVALID )) { 948 `EPRINT (( dbv , 949 "Pag%lu: uendage", ( u_lg ) i )); 950 isbad = 1; 953 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) { 954 `EPRINT (( dbv , 955 "Pag%lu:ٮly zdage", ( u_lg ) i )); 956 isbad = 1; 958 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 959 r ; 960 p = NULL ; 963 r : i( p ! NULL ) 964 () `__db_vrfy_puagefo ( dbv , vdp , p ); 966 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 967 } } 973 $__db_is_vid_gy ( ty ) 974 u_t32_t ty ; 976 ty ) { 977 P_INVALID : 978 P_HASH_UNSORTED : 979 P_IBTREE : 980 P_IRECNO : 981 P_LBTREE : 982 P_LRECNO : 983 P_OVERFLOW : 984 P_HASHMETA : 985 P_BTREEMETA : 986 P_QAMMETA : 987 P_QAMDATA : 988 P_LDUP : 989 P_HASH : 995 } } 1001 $__db_is_vid_magio ( magic , typ ) 1002 u_t32_t magic ; 1003 DBTYPE * typ ; 1005 magic ) { 1006 DB_BTREEMAGIC : 1007 * typ = DB_BTREE ; 1009 DB_HASHMAGIC : 1010 * typ = DB_HASH ; 1012 DB_QAMMAGIC : 1013 * typ = DB_QUEUE ; 1018 * typ = DB_UNKNOWN ; 1020 } } 1030 $__db_vrfy_comm ( dbp , vdp , h , pgno , ags ) 1031 DB * dbp ; 1032 VRFY_DBINFO * vdp ; 1033 PAGE * h ; 1034 db_pgno_t pgno ; 1035 u_t32_t ags ; 1037 DB_ENV * dbv ; 1038 VRFY_PAGEINFO * p ; 1039 t , t_t ; 1040 u_t8_t * p ; 1042 dbv = dbp ->dbenv; 1044 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1045 ( t ); 1047 p -> pgno =gno; 1048 `F_CLR ( p , VRFY_IS_ALLZEROES ); 1057 i( pgno !0 && `PGNO ( h ) == 0) { 1058 `F_SET ( p , VRFY_IS_ALLZEROES ); 1059 p = ( u_t8_t *) h ; < (u_t8_*)h + dbp -> pgsize ;++) 1060 i(* p != 0) { 1061 `F_CLR ( p , VRFY_IS_ALLZEROES ); 1070 p -> ty = P_HASH ; 1071 t = 0; 1072 r ; 1075 i( `PGNO ( h ! pgno ) { 1076 `EPRINT (( dbv , "Page %lu: badageumber %lu", 1077 ( u_lg ) pgno , (u_lg) h ->pgno)); 1078 t = DB_VERIFY_BAD ; 1081 i(! `__db_is_vid_gy ( h -> ty )) { 1082 `EPRINT (( dbv , "Page %lu: badageype %lu", 1083 ( u_lg ) pgno , (u_lg) h -> ty )); 1084 t = DB_VERIFY_BAD ; 1086 p -> ty = h ->type; 1088 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1089 t = t_t ; 1091 ( t ); 1092 } } 1100 $__db_vrfy_vid ( dbp , vdp , h , pgno , ags ) 1101 DB * dbp ; 1102 VRFY_DBINFO * vdp ; 1103 PAGE * h ; 1104 db_pgno_t pgno ; 1105 u_t32_t ags ; 1107 DB_ENV * dbv ; 1108 VRFY_PAGEINFO * p ; 1109 t , t_t ; 1111 dbv = dbp ->dbenv; 1113 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1114 ( t ); 1115 p -> xt_pgno =-> ev_pgno = 0; 1117 i(! `IS_VALID_PGNO ( `NEXT_PGNO ( h ))) { 1118 `EPRINT (( dbv , "Page %lu: invalidext_pgno %lu", 1119 ( u_lg ) pgno , (u_lg) `NEXT_PGNO ( h ))); 1120 t = DB_VERIFY_BAD ; 1122 p -> xt_pgno = `NEXT_PGNO ( h ); 1124 i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1125 t = t_t ; 1126 ( t ); 1127 } } 1143 $__db_vrfy_dage ( dbp , vdp , h , pgno , ags ) 1144 DB * dbp ; 1145 VRFY_DBINFO * vdp ; 1146 PAGE * h ; 1147 db_pgno_t pgno ; 1148 u_t32_t ags ; 1150 DB_ENV * dbv ; 1151 VRFY_PAGEINFO * p ; 1152 u_t32_t smˡ_y ; 1153 isbad , t , t_t ; 1155 dbv = dbp ->dbenv; 1157 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1158 ( t ); 1159 isbad = 0; 1169 i( `TYPE ( h ! P_IBTREE && TYPE(h! P_IRECNO ) { 1170 i(! `IS_VALID_PGNO ( `PREV_PGNO ( h )|| PREV_PGNO(h= p -> pgno ) { 1171 isbad = 1; 1172 `EPRINT (( dbv , "Page %lu: invalidrev_pgno %lu", 1173 ( u_lg ) p -> pgno , (u_lg) `PREV_PGNO ( h ))); 1175 i(! `IS_VALID_PGNO ( `NEXT_PGNO ( h )|| NEXT_PGNO(h= p -> pgno ) { 1176 isbad = 1; 1177 `EPRINT (( dbv , "Page %lu: invalidext_pgno %lu", 1178 ( u_lg ) p -> pgno , (u_lg) `NEXT_PGNO ( h ))); 1180 p -> ev_pgno = `PREV_PGNO ( h ); 1181 p -> xt_pgno = `NEXT_PGNO ( h ); 1191 `TYPE ( h )) { 1192 P_HASH_UNSORTED : 1193 P_HASH : 1194 smˡ_y = `HKEYDATA_PSIZE (0); 1196 P_IBTREE : 1197 smˡ_y = `BINTERNAL_PSIZE (0); 1199 P_IRECNO : 1200 smˡ_y = RINTERNAL_PSIZE ; 1202 P_LBTREE : 1203 P_LDUP : 1204 P_LRECNO : 1205 smˡ_y = `BKEYDATA_PSIZE (0); 1208 smˡ_y = 0; 1211 i( smˡ_y * `NUM_ENT ( h > dbp -> pgsize ) { 1212 isbad = 1; 1213 `EPRINT (( dbv , "Page %lu:oo manyntries: %lu", 1214 ( u_lg ) pgno , (u_lg) `NUM_ENT ( h ))); 1217 i( `TYPE ( h ! P_OVERFLOW ) 1218 p -> s = `NUM_ENT ( h ); 1225 `TYPE ( h )) { 1226 P_IBTREE : 1227 P_IRECNO : 1228 i( `LEVEL ( h < LEAFLEVEL + 1) { 1229 isbad = 1; 1230 `EPRINT (( dbv , "Page %lu: bad btreeevel %lu", 1231 ( u_lg ) pgno , (u_lg) `LEVEL ( h ))); 1233 p -> bt_v = `LEVEL ( h ); 1235 P_LBTREE : 1236 P_LDUP : 1237 P_LRECNO : 1238 i( `LEVEL ( h ! LEAFLEVEL ) { 1239 isbad = 1; 1240 `EPRINT (( dbv , 1242 ( u_lg ) pgno , (u_lg) `LEVEL ( h ))); 1246 i( `LEVEL ( h ) != 0) { 1247 isbad = 1; 1248 `EPRINT (( dbv , 1250 ( u_lg ) pgno , (u_lg) `LEVEL ( h ))); 1263 i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1264 t = t_t ; 1266 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1267 } } 1278 $__db_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 1279 DB * dbp ; 1280 VRFY_DBINFO * vdp ; 1281 DBMETA * ma ; 1282 db_pgno_t pgno ; 1283 u_t32_t ags ; 1285 DB_ENV * dbv ; 1286 DBTYPE dbty , magty ; 1287 VRFY_PAGEINFO * p ; 1288 isbad , t , t_t ; 1290 isbad = 0; 1291 dbv = dbp ->dbenv; 1293 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1294 ( t ); 1297 ma -> ty ) { 1298 P_BTREEMETA : 1299 dbty = DB_BTREE ; 1301 P_HASHMETA : 1302 dbty = DB_HASH ; 1304 P_QAMMETA : 1305 dbty = DB_QUEUE ; 1308 t = `__db_unknown_th ( dbv , "__db_vrfy_meta"); 1309 r ; 1313 i(! `__db_is_vid_magio ( ma -> magic , & magty )) { 1314 isbad = 1; 1315 `EPRINT (( dbv , 1316 "Pag%lu: invid maginumb", ( u_lg ) pgno )); 1318 i( magty ! dbty ) { 1319 isbad = 1; 1320 `EPRINT (( dbv , 1322 ( u_lg ) pgno )); 1326 i(( dbty = DB_BTREE && 1327 ( ma -> vsi > DB_BTREEVERSION || 1328 ma -> vsi < DB_BTREEOLDVER )) || 1329 ( dbty = DB_HASH && 1330 ( ma -> vsi > DB_HASHVERSION || 1331 ma -> vsi < DB_HASHOLDVER )) || 1332 ( dbty = DB_QUEUE && 1333 ( ma -> vsi > DB_QAMVERSION || 1334 ma -> vsi < DB_QAMOLDVER ))) { 1335 isbad = 1; 1336 `EPRINT (( dbv , 1338 ( u_lg ) pgno , (u_lg) ma -> vsi )); 1342 i( ma -> gesize ! dbp -> pgsize ) { 1343 isbad = 1; 1344 `EPRINT (( dbv , "Page %lu: invalidagesize %lu", 1345 ( u_lg ) pgno , (u_lg) ma -> gesize )); 1349 i( ma -> maags != 0) { 1350 i( ma -> maags = DBMETA_CHKSUM ) 1351 `F_SET ( p , VRFY_HAS_CHKSUM ); 1353 isbad = 1; 1354 `EPRINT (( dbv , 1356 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> maags )); 1366 i( pgno ! PGNO_BASE_MD && ma -> ! PGNO_INVALID ) { 1367 isbad = 1; 1368 `EPRINT (( dbv , 1370 ( u_lg ) pgno )); 1374 i( ma -> ! PGNO_INVALID && `IS_VALID_PGNO (meta->free)) 1375 p -> = ma ->free; 1376 i(! `IS_VALID_PGNO ( ma -> )) { 1377 isbad = 1; 1378 `EPRINT (( dbv , 1380 ( u_lg ) pgno , (u_lg) ma -> )); 1383 i( pgno = PGNO_BASE_MD && ma -> ϡ_pgno ! vdp ->last_pgno) { 1384 isbad = 1; 1385 `EPRINT (( dbv , 1387 ( u_lg ) pgno , 1388 ( u_lg ) ma -> ϡ_pgno , (u_lg) vdp ->last_pgno)); 1395 `F_CLR ( p , VRFY_INCOMPLETE ); 1397 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1398 t = t_t ; 1400 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1401 } } 1409 $__db_vrfy_li ( dbp , vdp , ma , ags ) 1410 DB * dbp ; 1411 VRFY_DBINFO * vdp ; 1412 db_pgno_t ma ; 1413 u_t32_t ags ; 1415 DB * pgt ; 1416 DB_ENV * dbv ; 1417 VRFY_PAGEINFO * p ; 1418 db_pgno_t cur_pgno , xt_pgno ; 1419 p , t , t_t ; 1421 dbv = dbp ->dbenv; 1422 pgt = vdp ->pgset; 1423 `DB_ASSERT ( dbv , pgt ! NULL ); 1425 i(( t = `__db_vrfy_ggefo ( vdp , ma , & p )) != 0) 1426 ( t ); 1427 xt_pgno = p -> ; 1428 xt_pgno ! PGNO_INVALID ;ext_pgn p ->next_pgno) { 1429 cur_pgno = p -> pgno ; 1430 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 1431 ( t ); 1434 i(! `IS_VALID_PGNO ( xt_pgno )) { 1435 `EPRINT (( dbv , 1437 ( u_lg ) cur_pgno , (u_lg) xt_pgno )); 1438 ( DB_VERIFY_BAD ); 1442 i(( t = `__db_vrfy_pgt_g ( pgt , xt_pgno , & p )) != 0) 1443 ( t ); 1444 i( p != 0) { 1445 `EPRINT (( dbv , 1447 ( u_lg ) cur_pgno , (u_lg) xt_pgno )); 1448 ( DB_VERIFY_BAD ); 1450 i(( t = `__db_vrfy_pgt_c ( pgt , xt_pgno )) != 0) 1451 ( t ); 1453 i(( t = `__db_vrfy_ggefo ( vdp , xt_pgno , & p )) != 0) 1454 ( t ); 1456 i( p -> ty ! P_INVALID ) { 1457 `EPRINT (( dbv , 1459 ( u_lg ) cur_pgno , (u_lg) xt_pgno )); 1460 t = DB_VERIFY_BAD ; 1465 i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 1466 t = t_t ; 1467 ( t ); 1468 } } 1476 $__db_vrfy_subdbs ( dbp , vdp , dbme , ags ) 1477 DB * dbp ; 1478 VRFY_DBINFO * vdp ; 1479 cڡ * dbme ; 1480 u_t32_t ags ; 1482 DB * mdbp ; 1483 DBC * dbc ; 1484 DBT key , da ; 1485 DB_ENV * dbv ; 1486 VRFY_PAGEINFO * p ; 1487 db_pgno_t ma_pgno ; 1488 t , t_t , isbad ; 1489 u_t8_t ty ; 1491 isbad = 0; 1492 dbc = NULL ; 1493 dbv = dbp ->dbenv; 1495 i(( t = 1496 `__db_ma_ݒ ( dbp , NULL , dbme , DB_RDONLY , 0, & mdbp )) != 0) 1497 ( t ); 1499 i(( t = `__db_curs_t ( mdbp , 1500 NULL , DB_BTREE , PGNO_INVALID , 0, DB_LOCK_INVALIDID , & dbc )) != 0) 1501 r ; 1503 `memt (& key , 0, (key)); 1504 `memt (& da , 0, (data)); 1505 ( t = `__dbc_g ( dbc , & key , & da , DB_NEXT )) == 0) { 1506 i( da . size !( db_pgno_t )) { 1507 `EPRINT (( dbv , 1509 isbad = 1; 1510 r ; 1512 `memy (& ma_pgno , da .da, da. size ); 1517 `DB_NTOHL (& ma_pgno ); 1518 i( ma_pgno = PGNO_INVALID || ma_pgn> vdp -> ϡ_pgno ) { 1519 `EPRINT (( dbv , 1521 ( u_lg ) ma_pgno )); 1522 isbad = 1; 1523 r ; 1525 i(( t = `__db_vrfy_ggefo ( vdp , ma_pgno , & p )) != 0) 1526 r ; 1527 ty = p ->type; 1528 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 1529 r ; 1530 ty ) { 1531 P_BTREEMETA : 1532 i(( t = `__bam_vrfy_ruu ( 1533 dbp , vdp , ma_pgno , ags )) != 0) { 1534 i( t = DB_VERIFY_BAD ) 1535 isbad = 1; 1537 r ; 1540 P_HASHMETA : 1541 i(( t = `__ham_vrfy_ruu ( 1542 dbp , vdp , ma_pgno , ags )) != 0) { 1543 i( t = DB_VERIFY_BAD ) 1544 isbad = 1; 1546 r ; 1549 P_QAMMETA : 1551 `EPRINT (( dbv , 1553 ( u_lg ) ma_pgno , (u_lg) ty )); 1554 t = DB_VERIFY_BAD ; 1555 r ; 1559 i( t = DB_NOTFOUND ) 1560 t = 0; 1562 r : i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 1563 t = t_t ; 1565 i(( t_t = `__db_o ( mdbp , NULL , 0)!0 && t == 0) 1566 t = t_t ; 1568 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1569 } } 1579 $__db_vrfy_ru_edback ( dbp , vdp ) 1580 DB * dbp ; 1581 VRFY_DBINFO * vdp ; 1583 ogss ; 1585 i( dbp -> db_edback = NULL ) 1588 i( vdp -> pgs_mag > 0) 1589 vdp -> pgs_mag --; 1592 ogss = 100 - ()( vdp -> pgs_mag * 50 / (vdp-> ϡ_pgno + 1)); 1593 dbp -> `db_edback (dbp, DB_VERIFY , ogss == 100 ? 99 :rogress); 1594 } } 1601 $__db_vrfy_dchkly ( dbp , vdp , me , subdb , ags ) 1602 DB * dbp ; 1603 VRFY_DBINFO * vdp ; 1604 cڡ * me , * subdb ; 1605 u_t32_t ags ; 1607 BTMETA * btma ; 1608 DB * mdbp , * pgt ; 1609 DBC * pgsc ; 1610 DBT key , da ; 1611 DB_ENV * dbv ; 1612 DB_MPOOLFILE * mpf ; 1613 HASH * h_ ; 1614 HMETA * hma ; 1615 PAGE * h , * cupg ; 1616 db_pgno_t ma_pgno , p , pgno ; 1617 u_t32_t buck ; 1618 t_t , t ; 1620 pgt = NULL ; 1621 pgsc = NULL ; 1622 dbv = dbp ->dbenv; 1623 mpf = dbp ->mpf; 1624 cupg = h = NULL ; 1626 `LF_CLR ( DB_NOORDERCHK ); 1629 i(( t = `__db_ma_ݒ ( dbp , NULL , me , DB_RDONLY , 0, & mdbp )) != 0) 1630 r ; 1632 `DB_INIT_DBT ( key , subdb , ` (subdb)); 1633 `memt (& da , 0, (data)); 1634 i(( t = `__db_g ( mdbp , NULL , & key , & da , 0)) != 0) { 1635 i( t = DB_NOTFOUND ) 1636 t = ENOENT ; 1637 r ; 1640 i( da . size !( db_pgno_t )) { 1641 `EPRINT (( dbv , "Subdatabasentry of invalid size")); 1642 t = DB_VERIFY_BAD ; 1643 r ; 1646 `memy (& ma_pgno , da .da, da. size ); 1652 `DB_NTOHL (& ma_pgno ); 1654 i(( t = `__memp_fg ( mpf , & ma_pgno , NULL , 0, & h )) != 0) 1655 r ; 1657 i(( t = `__db_vrfy_pgt ( dbv , dbp -> pgsize , & pgt )) != 0) 1658 r ; 1660 `TYPE ( h )) { 1661 P_BTREEMETA : 1662 btma = ( BTMETA *) h ; 1663 i( `F_ISSET (& btma -> dbma , BTM_RECNO )) { 1665 t = 0; 1666 r ; 1668 i(( t = 1669 `__db_ma2pgt ( dbp , vdp , ma_pgno , ags , pgt )) != 0) 1670 r ; 1671 i(( t = `__db_curs_t ( pgt , NULL , dbp -> ty , 1672 PGNO_INVALID , 0, DB_LOCK_INVALIDID , & pgsc )) != 0) 1673 r ; 1674 ( t = `__db_vrfy_pgt_xt ( pgsc , & p )) == 0) { 1675 i(( t = `__memp_fg ( mpf , & p , NULL , 0, & cupg )) != 0) 1676 r ; 1677 i(( t = `__bam_vrfy_emd ( dbp , 1678 NULL , cupg , p , `NUM_ENT (currpg), 1, 1679 `F_ISSET (& btma -> dbma , BTM_DUP ), ags )) != 0) 1680 r ; 1681 i(( t = 1682 `__memp_ut ( mpf , cupg , dbp -> iܙy )) != 0) 1683 r ; 1684 cupg = NULL ; 1692 i( t = DB_NOTFOUND ) 1693 t = 0; 1695 P_HASHMETA : 1696 hma = ( HMETA *) h ; 1697 h_ = ( HASH *) dbp ->h_internal; 1701 i( h_ = NULL ) { 1702 `EPRINT (( dbv , 1704 ( u_lg ) ma_pgno )); 1705 t = DB_VERIFY_BAD ; 1706 r ; 1708 i( h_ -> h_hash = NULL ) 1709 h_ -> h_hash = hma -> dbma . vsi < 5 1710 ? __ham_func4 : __ham_func5 ; 1711 i( hma -> h_chkey != 1712 h_ -> `h_hash ( dbp , CHARKEY , (CHARKEY))) { 1713 `EPRINT (( dbv , 1715 ( u_lg ) ma_pgno )); 1716 t = DB_VERIFY_BAD ; 1717 r ; 1724 buck = 0; buck < hma -> max_buck ; bucket++) { 1725 pgno = `BS_TO_PAGE ( buck , hma -> es ); 1726 pgno ! PGNO_INVALID ) { 1727 i(( t = `__memp_fg ( mpf , 1728 & pgno , NULL , 0, & cupg )) != 0) 1729 r ; 1730 i(( t = `__ham_vrfy_hashg ( dbp , 1731 `NUM_ENT ( cupg ), hma , buck , pgno , 1732 ags , h_ -> h_hash )) != 0) 1733 r ; 1734 pgno = `NEXT_PGNO ( cupg ); 1735 i(( t = `__memp_ut ( mpf , 1736 cupg , dbp -> iܙy )) != 0) 1737 r ; 1738 cupg = NULL ; 1743 `EPRINT (( dbv , "Page %lu: database metapage of badype %lu", 1744 ( u_lg ) ma_pgno , (u_lg) `TYPE ( h ))); 1745 t = DB_VERIFY_BAD ; 1749 r : i( pgsc ! NULL && ( t_t = `__dbc_o gsc)!0 && t == 0) 1750 t = t_t ; 1751 i( pgt ! NULL && 1752 ( t_t = `__db_o ( pgt , NULL , 0)!0 && t == 0) 1753 t = t_t ; 1754 i( h ! NULL && ( t_t = `__memp_ut ( mpf , h, dbp -> iܙy )) != 0) 1755 t = t_t ; 1756 i( cupg ! NULL && 1757 ( t_t = `__memp_ut ( mpf , cupg , dbp -> iܙy )) != 0) 1758 t = t_t ; 1759 i(( t_t = `__db_o ( mdbp , NULL , 0)) != 0) 1760 t = t_t ; 1761 ( t ); 1762 } } 1773 $__db_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 1774 DB * dbp ; 1775 VRFY_DBINFO * vdp ; 1776 db_pgno_t pgno ; 1777 PAGE * h ; 1778 * hd ; 1779 (* back `__P ((*, const *)); 1780 u_t32_t ags ; 1782 DB_ENV * dbv ; 1783 VRFY_PAGEINFO * p ; 1784 keyag , t , t_t ; 1786 dbv = dbp ->dbenv; 1787 `DB_ASSERT ( dbv , `LF_ISSET ( DB_SALVAGE )); 1796 keyag = 0; 1799 i( `__db_lvage_isde ( vdp , pgno )) 1802 `TYPE ( h )) { 1803 P_HASHMETA : 1804 t = `__ham_vrfy_ma ( dbp , vdp , ( HMETA *) h , pgno , ags ); 1806 P_BTREEMETA : 1807 t = `__bam_vrfy_ma ( dbp , vdp , ( BTMETA *) h , pgno , ags ); 1809 P_QAMMETA : 1810 keyag = 1; 1811 t = `__qam_vrfy_ma ( dbp , vdp , ( QMETA *) h , pgno , ags ); 1813 P_HASH_UNSORTED : 1814 P_HASH : 1815 ( `__ham_lvage ( 1816 dbp , vdp , pgno , h , hd , back , ags )); 1817 P_LBTREE : 1818 ( `__bam_lvage ( dbp , 1819 vdp , pgno , P_LBTREE , h , hd , back , NULL , ags )); 1820 P_LDUP : 1821 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_LDUP )); 1822 P_OVERFLOW : 1823 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_OVERFLOW )); 1824 P_LRECNO : 1837 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_LRECNO )); 1838 P_QAMDATA : 1839 ( `__qam_lvage ( dbp , 1840 vdp , pgno , h , hd , back , ags )); 1841 P_IBTREE : 1842 P_INVALID : 1843 P_IRECNO : 1844 __P_DUPLICATE : 1852 i( t != 0) 1853 ( t ); 1862 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1863 ( t ); 1864 i(! `F_ISSET ( p , VRFY_HAS_SUBDBS )) 1865 t = `__db_hd ( 1866 dbp , NULL , 0, keyag , hd , back , vdp , pgno ); 1867 i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 1868 t = t_t ; 1869 ( t ); 1870 } } 1878 $__db_lvage_unknowns ( dbp , vdp , hd , back , ags ) 1879 DB * dbp ; 1880 VRFY_DBINFO * vdp ; 1881 * hd ; 1882 (* back `__P ((*, const *)); 1883 u_t32_t ags ; 1885 DBC * dbc ; 1886 DBT unkdbt , key , * dbt ; 1887 DB_ENV * dbv ; 1888 DB_MPOOLFILE * mpf ; 1889 PAGE * h ; 1890 db_pgno_t pgno ; 1891 u_t32_t pgty ; 1892 t , t_t ; 1893 * ovbuf ; 1895 dbc = NULL ; 1896 dbv = dbp ->dbenv; 1897 mpf = dbp ->mpf; 1899 `DB_INIT_DBT ( unkdbt , "UNKNOWN", ("UNKNOWN") - 1); 1901 i(( t = `__os_mloc ( dbv , dbp -> pgsize , & ovbuf )) != 0) 1902 ( t ); 1909 ( t_t = 1910 `__db_lvage_gxt ( vdp , & dbc , & pgno , & pgty , 1)) == 0) { 1911 i(( t_t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) { 1912 i( t == 0) 1913 t = t_t ; 1917 dbt = NULL ; 1918 pgty ) { 1919 SALVAGE_LDUP : 1920 SALVAGE_LRECNODUP : 1921 dbt = & unkdbt ; 1923 SALVAGE_LBTREE : 1924 SALVAGE_LRECNO : 1925 i(( t_t = `__bam_lvage ( dbp , vdp , pgno , pgty , 1926 h , hd , back , dbt , ags )!0 && t == 0) 1927 t = t_t ; 1929 SALVAGE_OVERFLOW : 1930 `DB_ASSERT ( dbv , 0); 1932 SALVAGE_HASH : 1933 i(( t_t = `__ham_lvage ( dbp , vdp , 1934 pgno , h , hd , back , ags )!0 && t == 0) 1935 t = t_t ; 1937 SALVAGE_INVALID : 1938 SALVAGE_IGNORE : 1944 `DB_ASSERT ( dbv , 0); 1947 i(( t_t = 1948 `__memp_ut ( mpf , h , dbp -> iܙy )!0 && t == 0) 1949 t = t_t ; 1953 i( t_t = DB_NOTFOUND ) 1954 t_t = 0; 1955 i( t_t !0 && t == 0) 1956 t = t_t ; 1959 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1960 t = t_t ; 1961 dbc = NULL ; 1964 ( t_t = 1965 `__db_lvage_gxt ( vdp , & dbc , & pgno , & pgty , 0)) == 0) { 1966 i(( t_t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) { 1967 i( t == 0) 1968 t = t_t ; 1972 pgty ) { 1973 SALVAGE_OVERFLOW : 1979 i(( t_t = `__db__goff ( dbp , 1980 vdp , pgno , & key , & ovbuf , ags )) != 0 || 1981 (( vdp -> ty = DB_BTREE || vdp->ty = DB_HASH ) && 1982 ( t_t = `__db_vrfy_dbt (& unkdbt , 1983 0, " ", hd , back , 0, vdp )) != 0) || 1984 ( t_t = `__db_vrfy_dbt ( 1985 & key , 0, " ", hd , back , 0, vdp )) != 0) 1986 i( t == 0) 1987 t = t_t ; 1990 `DB_ASSERT ( dbv , 0); 1993 i(( t_t = 1994 `__memp_ut ( mpf , h , dbp -> iܙy )!0 && t == 0) 1995 t = t_t ; 1999 i( t_t = DB_NOTFOUND ) 2000 t_t = 0; 2001 i( t_t !0 && t == 0) 2002 t = t_t ; 2004 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 2005 t = t_t ; 2007 `__os_ ( dbv , ovbuf ); 2009 ( t ); 2010 } } 2016 #INP_OFFSET ( dbp , h , i ) \ 2017 (( db_dx_t )(( u_t8_t *)(( `P_INP ( dbp ,( h ))+ ( i )- (u_t8_*)(h))) ) 2034 $__db_vrfy_pem ( dbp , h , pgno , i , is_b , ags , himkp , off ) 2035 DB * dbp ; 2036 PAGE * h ; 2037 db_pgno_t pgno ; 2038 u_t32_t i ; 2039 is_b ; 2040 u_t32_t ags , * himkp , * off ; 2042 BKEYDATA * bk ; 2043 DB_ENV * dbv ; 2044 db_dx_t * p , offt , n ; 2046 dbv = dbp ->dbenv; 2048 `DB_ASSERT ( dbv , himkp ! NULL ); 2049 p = `P_INP ( dbp , h ); 2056 i( p + i >( db_dx_t *)(( u_t8_t *) h + * himkp )) { 2058 `EPRINT (( dbv , "Page %lu:ntriesisting %lu overlaps data", 2059 ( u_lg ) pgno , (u_lg) i )); 2060 ( DB_VERIFY_FATAL ); 2063 offt = p [ i ]; 2069 i( offt < `INP_OFFSET ( dbp , h , i || off> dbp-> pgsize ) { 2070 `EPRINT (( dbv , "Page %lu: bad offset %lutage index %lu", 2071 ( u_lg ) pgno , (u_lg) offt , (u_lg) i )); 2072 ( DB_VERIFY_BAD ); 2076 i( offt < * himkp ) 2077 * himkp = offt ; 2079 i( is_b ) { 2084 i( offt ! `DB_ALIGN (offt, ( u_t32_t ))) { 2085 `EPRINT (( dbv , 2087 ( u_lg ) pgno , (u_lg) offt , (u_lg) i )); 2088 ( DB_VERIFY_BAD ); 2094 bk = `GET_BKEYDATA ( dbp , h , i ); 2103 `B_TYPE ( bk -> ty )) { 2104 B_KEYDATA : 2105 n = bk ->len; 2107 B_DUPLICATE : 2108 B_OVERFLOW : 2109 n = BOVERFLOW_SIZE ; 2112 `EPRINT (( dbv , 2114 ( u_lg ) pgno , (u_lg) i )); 2115 ( DB_VERIFY_BAD ); 2118 i(( size_t )( offt + n > dbp -> pgsize ) { 2119 `EPRINT (( dbv , 2121 ( u_lg ) pgno , (u_lg) i )); 2122 ( DB_VERIFY_BAD ); 2126 i( off ! NULL ) 2127 * off = offt ; 2129 } } 2141 $__db_vrfy_duy ( dbp , vdp , pgno , ags ) 2142 DB * dbp ; 2143 VRFY_DBINFO * vdp ; 2144 db_pgno_t pgno ; 2145 u_t32_t ags ; 2147 DB_ENV * dbv ; 2148 VRFY_PAGEINFO * p ; 2149 t , isbad ; 2151 dbv = dbp ->dbenv; 2152 isbad = 0; 2154 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 2155 ( t ); 2157 p -> ty ) { 2158 P_IBTREE : 2159 P_LDUP : 2160 i(! `LF_ISSET ( ST_DUPSORT )) { 2161 `EPRINT (( dbv , 2163 ( u_lg ) pgno )); 2164 isbad = 1; 2167 P_IRECNO : 2168 P_LRECNO : 2169 i( `LF_ISSET ( ST_DUPSORT )) { 2170 `EPRINT (( dbv , 2172 ( u_lg ) pgno )); 2173 isbad = 1; 2182 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) 2183 `ZEROPG_ERR_PRINT ( dbv , pgno , "duplicateage"); 2185 `EPRINT (( dbv , 2187 ( u_lg ) pgno , (u_lg) p -> ty )); 2188 isbad = 1; 2192 i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 2193 ( t ); 2194 ( isbad =1 ? DB_VERIFY_BAD : 0); 2195 } } 2221 $__db_lvage_due ( dbp , vdp , pgno , key , hd , back , ags ) 2222 DB * dbp ; 2223 VRFY_DBINFO * vdp ; 2224 db_pgno_t pgno ; 2225 DBT * key ; 2226 * hd ; 2227 (* back `__P ((*, const *)); 2228 u_t32_t ags ; 2230 DB_MPOOLFILE * mpf ; 2231 PAGE * h ; 2232 t , t_t ; 2234 mpf = dbp ->mpf; 2236 i( pgno = PGNO_INVALID || ! `IS_VALID_PGNO (pgno)) 2237 ( DB_VERIFY_BAD ); 2240 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 2241 ( t ); 2243 `TYPE ( h )) { 2244 P_IBTREE : 2245 P_IRECNO : 2246 i(( t = `__db_vrfy_comm ( dbp , vdp , h , pgno , ags )) != 0) 2247 r ; 2248 i(( t = `__bam_vrfy ( dbp , 2249 vdp , h , pgno , ags | DB_NOORDERCHK )) != 0 || 2250 ( t = `__db_lvage_mkde ( vdp , pgno )) != 0) 2251 r ; 2255 i(( t = `__bam_lvage_wkdupt ( dbp , vdp , h , key , 2256 hd , back , ags )) != 0) 2257 r ; 2259 P_LRECNO : 2260 P_LDUP : 2261 i(( t = `__bam_lvage ( dbp , 2262 vdp , pgno , `TYPE ( h ), h, hd , back , key , ags )) != 0) 2263 r ; 2266 t = DB_VERIFY_BAD ; 2267 r ; 2270 r : i(( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )!0 && t == 0) 2271 t = t_t ; 2272 ( t ); 2273 } } 2281 $__db_lvage_subdbs ( dbp , vdp , hd , back , ags , hassub ) 2282 DB * dbp ; 2283 VRFY_DBINFO * vdp ; 2284 * hd ; 2285 (* back `__P ((*, const *)); 2286 u_t32_t ags ; 2287 * hassub ; 2289 DB * pgt ; 2290 DBC * pgsc ; 2291 DB_ENV * dbv ; 2292 DB_MPOOLFILE * mpf ; 2293 PAGE * h ; 2294 VRFY_PAGEINFO * p ; 2295 db_pgno_t p , ma_pgno ; 2296 t , t_t ; 2298 * hassub = 0; 2300 dbv = dbp ->dbenv; 2301 pgt = NULL ; 2302 pgsc = NULL ; 2303 mpf = dbp ->mpf; 2304 h = NULL ; 2305 p = NULL ; 2306 t = 0; 2312 ma_pgno = PGNO_BASE_MD ; 2313 i(( t_t = `__memp_fg ( mpf , & ma_pgno , NULL , 0, & h )) == 0 && 2314 ( t_t = `__db_vrfy_comm ( dbp , vdp , h , PGNO_BASE_MD , ags )) == 0 && 2315 ( t_t = `__db_lvage ( 2316 dbp , vdp , PGNO_BASE_MD , h , hd , back , ags )) == 0 && 2317 ( t_t = `__db_vrfy_ggefo ( vdp , 0, & p )) == 0) 2318 i( `F_ISSET ( p , VRFY_HAS_SUBDBS )) 2319 * hassub = 1; 2320 i( p ! NULL && 2321 ( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 2322 t = t_t ; 2323 i( h ! NULL ) { 2324 i(( t_t = 2325 `__memp_ut ( mpf , h , dbp -> iܙy )!0 && t == 0) 2326 t = t_t ; 2327 h = NULL ; 2329 i( t !0 || * hassub == 0) 2330 ( t ); 2339 i(( t = `__db_vrfy_pgt ( dbv , dbp -> pgsize , & pgt )) != 0) 2340 r ; 2341 i(( t = `__db_ma2pgt ( dbp , vdp , PGNO_BASE_MD , ags , pgt )) != 0) 2342 r ; 2343 i(( t = `__db_curs ( pgt , NULL , & pgsc , 0)) != 0) 2344 r ; 2345 ( t_t = `__db_vrfy_pgt_xt ( pgsc , & p )) == 0) { 2346 i(( t_t = `__memp_fg ( mpf , & p , NULL , 0, & h )) == 0 && 2347 ( t_t = `__db_vrfy_comm ( dbp , vdp , h , p , ags )) == 0 && 2348 ( t_t = 2349 `__bam_vrfy ( dbp , vdp , h , p , ags | DB_NOORDERCHK )) == 0) 2350 t_t = `__db_lvage_subdbpg ( 2351 dbp , vdp , h , hd , back , ags ); 2352 i( t_t !0 && t == 0) 2353 t = t_t ; 2354 i( h ! NULL ) { 2355 i(( t_t = `__memp_ut ( mpf , 2356 h , dbp -> iܙy )!0 && t == 0) 2357 t = t_t ; 2358 h = NULL ; 2362 i( t_t ! DB_NOTFOUND && t == 0) 2363 t = t_t ; 2365 r : i( pgsc ! NULL && ( t_t = `__dbc_o gsc)!0 && t == 0) 2366 t = t_t ; 2367 i( pgt ! NULL && 2368 ( t_t = `__db_o ( pgt , NULL , 0)!0 && t ==0) 2369 t = t_t ; 2370 i( h ! NULL && 2371 ( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )!0 && t == 0) 2372 t = t_t ; 2373 ( t ); 2374 } } 2382 $__db_lvage_subdbpg ( dbp , vdp , ma , hd , back , ags ) 2383 DB * dbp ; 2384 VRFY_DBINFO * vdp ; 2385 PAGE * ma ; 2386 * hd ; 2387 (* back `__P ((*, const *)); 2388 u_t32_t ags ; 2390 BKEYDATA * bkkey , * bkda ; 2391 BOVERFLOW * bo ; 2392 DB * pgt ; 2393 DBC * pgsc ; 2394 DBT key ; 2395 DB_ENV * dbv ; 2396 DB_MPOOLFILE * mpf ; 2397 PAGE * subpg ; 2398 db_dx_t i ; 2399 db_pgno_t ma_pgno , p ; 2400 t , r_t , t_t ; 2401 * subdbme ; 2403 dbv = dbp ->dbenv; 2404 mpf = dbp ->mpf; 2405 t = r_t = 0; 2406 subdbme = NULL ; 2408 i(( t = `__db_vrfy_pgt ( dbv , dbp -> pgsize , & pgt )) != 0) 2409 ( t ); 2415 i = 0; i < `NUM_ENT ( ma ); i + P_INDX ) { 2416 bkkey = `GET_BKEYDATA ( dbp , ma , i ); 2417 bkda = `GET_BKEYDATA ( dbp , ma , i + O_INDX ); 2420 i( `B_TYPE ( bkkey -> ty = B_OVERFLOW ) { 2425 bo = ( BOVERFLOW *) bkkey ; 2426 i(( t = `__db__goff ( dbp , vdp , 2427 bo -> pgno , & key , & subdbme , ags )) != 0) { 2428 r_t = DB_VERIFY_BAD ; 2433 i(( t = `__os_loc ( dbv , 2434 key . size + 1, & subdbme )) != 0) 2435 r ; 2436 subdbme [ key . size ] = '\0'; 2437 } i( `B_TYPE ( bkkey -> ty = B_KEYDATA ) { 2438 i(( t = `__os_loc ( dbv , 2439 bkkey -> n + 1, & subdbme )) != 0) 2440 r ; 2441 `memy ( subdbme , bkkey -> da , bkkey-> n ); 2442 subdbme [ bkkey -> n ] = '\0'; 2446 i( bkda -> n !( db_pgno_t )) { 2447 r_t = DB_VERIFY_BAD ; 2450 `memy (& ma_pgno , 2451 ( db_pgno_t *) bkda -> da , (db_pgno_t)); 2457 `DB_NTOHL (& ma_pgno ); 2460 i(! `IS_VALID_PGNO ( ma_pgno || ( t = 2461 `__memp_fg ( mpf , & ma_pgno , NULL , 0, & subpg )) != 0) { 2462 r_t = t ; 2474 i(( t = 2475 `__db_vrfy_comm ( dbp , vdp , subpg , ma_pgno , ags )) != 0) { 2476 r_t = t ; 2477 () `__memp_ut ( mpf , subpg , dbp -> iܙy ); 2480 `TYPE ( subpg )) { 2481 P_BTREEMETA : 2482 i(( t = `__bam_vrfy_ma ( dbp , 2483 vdp , ( BTMETA *) subpg , ma_pgno , ags )) != 0) { 2484 r_t = t ; 2485 () `__memp_ut ( mpf , subpg , dbp -> iܙy ); 2489 P_HASHMETA : 2490 i(( t = `__ham_vrfy_ma ( dbp , 2491 vdp , ( HMETA *) subpg , ma_pgno , ags )) != 0) { 2492 r_t = t ; 2493 () `__memp_ut ( mpf , subpg , dbp -> iܙy ); 2499 r_t = DB_VERIFY_BAD ; 2503 i(( t = `__memp_ut ( mpf , subpg , dbp -> iܙy )) != 0) { 2504 r_t = t ; 2509 i(( t = `__db_hd ( dbp , 2510 subdbme , 0, 0, hd , back , vdp , ma_pgno )) != 0) 2511 r ; 2513 i(( t = `__db_ma2pgt ( dbp , vdp , ma_pgno , 2514 ags , pgt )) != 0) { 2515 r_t = t ; 2519 i(( t = `__db_curs ( pgt , NULL , & pgsc , 0)) != 0) 2520 r ; 2521 ( t = `__db_vrfy_pgt_xt ( pgsc , & p )) == 0) { 2522 i(( t = 2523 `__memp_fg ( mpf , & p , NULL , 0, & subpg )) != 0) { 2524 r_t = t ; 2527 i(( t = `__db_lvage ( dbp , vdp , p , subpg , 2528 hd , back , ags )) != 0) 2529 r_t = t ; 2530 i(( t = 2531 `__memp_ut ( mpf , subpg , dbp -> iܙy )) != 0) 2532 r_t = t ; 2535 i( t ! DB_NOTFOUND ) 2536 r ; 2538 i(( t = `__dbc_o ( pgsc )) != 0) 2539 r ; 2540 i(( t = `__db_foٔ ( hd , back )) != 0) 2541 r ; 2543 r : i( subdbme ) 2544 `__os_ ( dbv , subdbme ); 2546 i(( t_t = `__db_o ( pgt , NULL , 0)) != 0) 2547 t = t_t ; 2549 i(( t_t = `__db_lvage_mkde ( vdp , `PGNO ( ma ))) != 0) 2550 ( t_t ); 2552 (( r_t !0?_: t ); 2553 } } 2562 $__db_ma2pgt ( dbp , vdp , pgno , ags , pgt ) 2563 DB * dbp ; 2564 VRFY_DBINFO * vdp ; 2565 db_pgno_t pgno ; 2566 u_t32_t ags ; 2567 DB * pgt ; 2569 DB_MPOOLFILE * mpf ; 2570 PAGE * h ; 2571 t , t_t ; 2573 mpf = dbp ->mpf; 2575 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 2576 ( t ); 2578 `TYPE ( h )) { 2579 P_BTREEMETA : 2580 t = `__bam_ma2pgt ( dbp , vdp , ( BTMETA *) h , ags , pgt ); 2582 P_HASHMETA : 2583 t = `__ham_ma2pgt ( dbp , vdp , ( HMETA *) h , ags , pgt ); 2586 t = DB_VERIFY_BAD ; 2590 i(( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) 2591 ( t_t ); 2592 ( t ); 2593 } } 2600 u_t 2601 $__db_guesgsize ( dbv , fhp ) 2602 DB_ENV * dbv ; 2603 DB_FH * fhp ; 2605 db_pgno_t i ; 2606 size_t ; 2607 u_t32_t guess ; 2608 u_t8_t ty ; 2610 guess = DB_MAX_PGSIZE ; gues> DB_MIN_PGSIZE ; guess >>= 1) { 2623 i = 1; i <= 3; i++) { 2624 i( `__os_ek ( 2625 dbv , fhp , i , guess , `SSZ ( DBMETA , ty )) != 0) 2627 i( `__os_ad ( dbv , 2628 fhp , & ty , 1, & ) != 0 ||r == 0) 2630 i( ty = P_INVALID ||y > P_PAGETYPE_MAX ) 2631 ( guess << 1); 2639 ( DB_DEF_IOSIZE ); 2640 } } @../db/db_vrfy_stub.c 9 #ide HAVE_VERIFY 10 ~"db_cfig.h " 12 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/db_am.h " 15 ~"dbc/db_vify.h " 23 __db_novrfy __P (( DB_ENV *)); 30 $__db_novrfy ( dbv ) 31 DB_ENV * dbv ; 33 `__db_rx ( dbv , 35 ( DB_OPNOTSUP ); 36 } } 39 $__db_vify_ ( dbp , fe , daba , outfe , ags ) 40 DB * dbp ; 41 cڡ * fe , * daba ; 42 FILE * outfe ; 43 u_t32_t ags ; 45 t ; 47 `COMPQUIET ( fe , NULL ); 48 `COMPQUIET ( daba , NULL ); 49 `COMPQUIET ( outfe , NULL ); 50 `COMPQUIET ( ags , 0); 52 t = `__db_novrfy ( dbp -> dbv ); 55 () `__db_o ( dbp , NULL , 0); 57 ( t ); 58 } } 61 $__db_vify_ ( dbp , me , subdb , hd , back , ags ) 62 DB * dbp ; 63 cڡ * me , * subdb ; 64 * hd ; 65 (* back `__P ((*, const *)); 66 u_t32_t ags ; 68 `COMPQUIET ( dbp , NULL ); 69 `COMPQUIET ( me , NULL ); 70 `COMPQUIET ( subdb , NULL ); 71 `COMPQUIET ( hd , NULL ); 72 `COMPQUIET ( back , NULL ); 73 `COMPQUIET ( ags , 0); 75 } } 78 $__db_vrfy_ggefo ( vdp , pgno , pp ) 79 VRFY_DBINFO * vdp ; 80 db_pgno_t pgno ; 81 VRFY_PAGEINFO ** pp ; 83 `COMPQUIET ( pgno , 0); 84 `COMPQUIET ( pp , NULL ); 85 ( `__db_novrfy ( vdp -> pgdbp -> dbv )); 86 } } 89 $__db_vrfy_puagefo ( dbv , vdp , p ) 90 DB_ENV * dbv ; 91 VRFY_DBINFO * vdp ; 92 VRFY_PAGEINFO * p ; 94 `COMPQUIET ( vdp , NULL ); 95 `COMPQUIET ( p , NULL ); 96 ( `__db_novrfy ( dbv )); 97 } } @../db/db_vrfyutil.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_vify.h " 14 ~"dbc/db_am.h " 16 __db_vrfy_chdc __P (( DBC *, VRFY_CHILDINFO *)); 17 __db_vrfy_gefo_ __P (( DB_ENV *, VRFY_PAGEINFO **)); 27 $__db_vrfy_dbfo_ ( dbv , pgsize , vd ) 28 DB_ENV * dbv ; 29 u_t32_t pgsize ; 30 VRFY_DBINFO ** vd ; 32 DB * cdbp , * pgdbp , * pgt ; 33 VRFY_DBINFO * vdp ; 34 t ; 36 vdp = NULL ; 37 cdbp = pgdbp = pgt = NULL ; 39 i(( t = `__os_oc ( NULL , 1, ( VRFY_DBINFO ), & vdp )) != 0) 40 r ; 42 i(( t = `__db__ (& cdbp , dbv , 0)) != 0) 43 r ; 45 i(( t = `__db_t_ags ( cdbp , DB_DUP )) != 0) 46 r ; 48 i(( t = `__db_t_gesize ( cdbp , pgsize )) != 0) 49 r ; 52 i( `TXN_ON ( dbv ) && 53 ( t = `__db_t_ags ( cdbp , DB_TXN_NOT_DURABLE )) != 0) 54 r ; 55 i(( t = `__db_ݒ ( cdbp , 56 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0600, PGNO_BASE_MD )) != 0) 57 r ; 59 i(( t = `__db__ (& pgdbp , dbv , 0)) != 0) 60 r ; 62 i(( t = `__db_t_gesize ( pgdbp , pgsize )) != 0) 63 r ; 66 i( `TXN_ON ( dbv ) && 67 ( t = `__db_t_ags ( pgdbp , DB_TXN_NOT_DURABLE )) != 0) 68 r ; 70 i(( t = `__db_ݒ ( pgdbp , 71 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0600, PGNO_BASE_MD )) != 0) 72 r ; 74 i(( t = `__db_vrfy_pgt ( dbv , pgsize , & pgt )) != 0) 75 r ; 77 `LIST_INIT (& vdp -> subdbs ); 78 `LIST_INIT (& vdp -> aivs ); 80 vdp -> cdbp = cdbp; 81 vdp -> pgdbp =gdbp; 82 vdp -> pgt =gset; 83 * vd = vdp ; 86 r : i( cdbp ! NULL ) 87 () `__db_o ( cdbp , NULL , 0); 88 i( pgdbp ! NULL ) 89 () `__db_o ( pgdbp , NULL , 0); 90 i( vdp ! NULL ) 91 `__os_ ( dbv , vdp ); 92 ( t ); 93 } } 103 $__db_vrfy_dbfo_deroy ( dbv , vdp ) 104 DB_ENV * dbv ; 105 VRFY_DBINFO * vdp ; 107 VRFY_CHILDINFO * c ; 108 t_t , t ; 110 t = 0; 116 `LIST_FIRST (& vdp -> aivs ! NULL ) 117 i(( t_t = `__db_vrfy_puagefo ( 118 dbv , vdp , `LIST_FIRST (&vdp-> aivs ))) != 0) { 119 i( t == 0) 120 t = t_t ; 125 ( c = `LIST_FIRST (& vdp -> subdbs )! NULL ) { 126 `LIST_REMOVE ( c , lks ); 127 `__os_ ( NULL , c ); 130 i(( t_t = `__db_o ( vdp -> pgdbp , NULL , 0)) != 0) 131 t = t_t ; 133 i(( t_t = `__db_o ( vdp -> cdbp , NULL , 0)!0 && t == 0) 134 t = t_t ; 136 i(( t_t = `__db_o ( vdp -> pgt , NULL , 0)!0 && t == 0) 137 t = t_t ; 139 i( vdp -> exs ! NULL ) 140 `__os_ ( dbv , vdp -> exs ); 141 `__os_ ( dbv , vdp ); 142 ( t ); 143 } } 153 $__db_vrfy_ggefo ( vdp , pgno , pp ) 154 VRFY_DBINFO * vdp ; 155 db_pgno_t pgno ; 156 VRFY_PAGEINFO ** pp ; 158 DB_ENV * dbv ; 159 DBT key , da ; 160 DB * pgdbp ; 161 VRFY_PAGEINFO * p ; 162 t ; 183 `LIST_FOREACH ( p , & vdp -> aivs , lks ) 184 i( p -> pgno ==gno) 185 found ; 188 pgdbp = vdp ->pgdbp; 189 dbv = pgdbp ->dbenv; 190 `memt (& key , 0, ( DBT )); 191 `memt (& da , 0, ( DBT )); 192 `F_SET (& da , DB_DBT_MALLOC ); 193 key . da = & pgno ; 194 key . size = ( db_pgno_t ); 196 i(( t = `__db_g ( pgdbp , NULL , & key , & da , 0)) == 0) { 198 `DB_ASSERT ( dbv , da . size =( VRFY_PAGEINFO )); 199 p = da .data; 200 `LIST_INSERT_HEAD (& vdp -> aivs , p , lks ); 201 found ; 202 } i( t ! DB_NOTFOUND ) 203 ( t ); 206 i(( t = `__db_vrfy_gefo_ ( dbv , & p )) != 0) 207 ( t ); 209 `LIST_INSERT_HEAD (& vdp -> aivs , p , lks ); 210 found : p -> pi_fcou ++; 212 * pp = p ; 214 } } 224 $__db_vrfy_puagefo ( dbv , vdp , p ) 225 DB_ENV * dbv ; 226 VRFY_DBINFO * vdp ; 227 VRFY_PAGEINFO * p ; 229 DBT key , da ; 230 DB * pgdbp ; 231 VRFY_PAGEINFO * p ; 232 t ; 234 i(-- p -> pi_fcou > 0) 237 pgdbp = vdp ->pgdbp; 238 `memt (& key , 0, ( DBT )); 239 `memt (& da , 0, ( DBT )); 241 key . da = & p -> pgno ; 242 key . size = ( db_pgno_t ); 243 da .d p ; 244 da . size = ( VRFY_PAGEINFO ); 246 i(( t = `__db_put ( pgdbp , NULL , & key , & da , 0)) != 0) 247 ( t ); 249 `LIST_FOREACH ( p , & vdp -> aivs , lks ) 250 i( p = p ) 252 i( p ! NULL ) 253 `LIST_REMOVE ( p , lks ); 255 `__os_u ( dbv , p ); 257 } } 268 $__db_vrfy_pgt ( dbv , pgsize , db ) 269 DB_ENV * dbv ; 270 u_t32_t pgsize ; 271 DB ** db ; 273 DB * dbp ; 274 t ; 276 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 277 ( t ); 278 i(( t = `__db_t_gesize ( dbp , pgsize )) != 0) 279 r ; 282 i( `TXN_ON ( dbv ) && 283 ( t = `__db_t_ags ( dbp , DB_TXN_NOT_DURABLE )) != 0) 284 r ; 285 i(( t = `__db_ݒ ( dbp , 286 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0600, PGNO_BASE_MD )) == 0) 287 * db = dbp ; 289 r : () `__db_o ( dbp , NULL , 0); 291 ( t ); 292 } } 302 $__db_vrfy_pgt_g ( dbp , pgno , vp ) 303 DB * dbp ; 304 db_pgno_t pgno ; 305 * vp ; 307 DBT key , da ; 308 t , v ; 310 `memt (& key , 0, ( DBT )); 311 `memt (& da , 0, ( DBT )); 313 key . da = & pgno ; 314 key . size = ( db_pgno_t ); 315 da .d& v ; 316 da . un = (); 317 `F_SET (& da , DB_DBT_USERMEM ); 319 i(( t = `__db_g ( dbp , NULL , & key , & da , 0)) == 0) { 320 `DB_ASSERT ( dbp -> dbv , da . size == ()); 321 } i( t = DB_NOTFOUND ) 322 v = 0; 324 ( t ); 326 * vp = v ; 328 } } 337 $__db_vrfy_pgt_c ( dbp , pgno ) 338 DB * dbp ; 339 db_pgno_t pgno ; 341 DBT key , da ; 342 t ; 343 v ; 345 `memt (& key , 0, ( DBT )); 346 `memt (& da , 0, ( DBT )); 348 v = 0; 350 key . da = & pgno ; 351 key . size = ( db_pgno_t ); 352 da .d& v ; 353 da . un = (); 354 `F_SET (& da , DB_DBT_USERMEM ); 356 i(( t = `__db_g ( dbp , NULL , & key , & da , 0)) == 0) { 357 `DB_ASSERT ( dbp -> dbv , da . size == ()); 358 } i( t ! DB_NOTFOUND ) 359 ( t ); 361 da . size = (); 362 ++ v ; 364 ( `__db_put ( dbp , NULL , & key , & da , 0)); 365 } } 375 $__db_vrfy_pgt_xt ( dbc , pgn ) 376 DBC * dbc ; 377 db_pgno_t * pgn ; 379 DBT key , da ; 380 db_pgno_t pgno ; 381 t ; 383 `memt (& key , 0, ( DBT )); 384 `memt (& da , 0, ( DBT )); 386 `F_SET (& da , DB_DBT_USERMEM | DB_DBT_PARTIAL ); 387 `F_SET (& key , DB_DBT_USERMEM ); 388 key . da = & pgno ; 389 key . un = ( db_pgno_t ); 391 i(( t = `__dbc_g ( dbc , & key , & da , DB_NEXT )) != 0) 392 ( t ); 394 `DB_ASSERT ( dbc -> dbp -> dbv , key . size =( db_pgno_t )); 395 * pgn = pgno ; 398 } } 408 $__db_vrfy_chdcurs ( vdp , db ) 409 VRFY_DBINFO * vdp ; 410 DBC ** db ; 412 DB * cdbp ; 413 DBC * dbc ; 414 t ; 416 cdbp = vdp ->cdbp; 418 i(( t = `__db_curs ( cdbp , NULL , & dbc , 0)) == 0) 419 * db = dbc ; 421 ( t ); 422 } } 432 $__db_vrfy_chdput ( vdp , pgno , c ) 433 VRFY_DBINFO * vdp ; 434 db_pgno_t pgno ; 435 VRFY_CHILDINFO * c ; 437 DB * cdbp ; 438 DBC * cc ; 439 DBT key , da ; 440 VRFY_CHILDINFO * dc ; 441 t ; 443 cdbp = vdp ->cdbp; 444 `memt (& key , 0, ( DBT )); 445 `memt (& da , 0, ( DBT )); 447 key . da = & pgno ; 448 key . size = ( db_pgno_t ); 464 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 465 ( t ); 466 t = `__db_vrfy_cct ( cc , pgno , & dc );et == 0; 467 t = `__db_vrfy_cext ( cc , & dc )) 468 i( dc -> pgno = c ->pgno) { 474 i(( t = `__db_vrfy_chdc ( cc , dc )) != 0 || 475 ( t = `__db_vrfy_cco ( cc )) != 0) 476 ( t ); 479 i( t ! DB_NOTFOUND ) { 480 () `__db_vrfy_cco ( cc ); 481 ( t ); 483 i(( t = `__db_vrfy_cco ( cc )) != 0) 484 ( t ); 486 c -> ft = 1; 487 da .d c ; 488 da . size = ( VRFY_CHILDINFO ); 490 ( `__db_put ( cdbp , NULL , & key , & da , 0)); 491 } } 500 $__db_vrfy_chdc ( dbc , c ) 501 DBC * dbc ; 502 VRFY_CHILDINFO * c ; 504 DBT key , da ; 506 `memt (& key , 0, ( DBT )); 507 `memt (& da , 0, ( DBT )); 509 c -> ft ++; 510 da .d c ; 511 da . size = ( VRFY_CHILDINFO ); 513 ( `__dbc_put ( dbc , & key , & da , DB_CURRENT )); 514 } } 524 $__db_vrfy_cct ( dbc , pgno , cp ) 525 DBC * dbc ; 526 db_pgno_t pgno ; 527 VRFY_CHILDINFO ** cp ; 529 DBT key , da ; 530 t ; 532 `memt (& key , 0, ( DBT )); 533 `memt (& da , 0, ( DBT )); 535 key . da = & pgno ; 536 key . size = ( db_pgno_t ); 538 i(( t = `__dbc_g ( dbc , & key , & da , DB_SET )) != 0) 539 ( t ); 541 `DB_ASSERT ( dbc -> dbp -> dbv , da . size =( VRFY_CHILDINFO )); 542 * cp = ( VRFY_CHILDINFO *) da .data; 545 } } 556 $__db_vrfy_cext ( dbc , cp ) 557 DBC * dbc ; 558 VRFY_CHILDINFO ** cp ; 560 DBT key , da ; 561 t ; 563 `memt (& key , 0, ( DBT )); 564 `memt (& da , 0, ( DBT )); 566 i(( t = `__dbc_g ( dbc , & key , & da , DB_NEXT_DUP )) != 0) 567 ( t ); 569 `DB_ASSERT ( dbc -> dbp -> dbv , da . size =( VRFY_CHILDINFO )); 570 * cp = ( VRFY_CHILDINFO *) da .data; 573 } } 587 $__db_vrfy_cco ( dbc ) 588 DBC * dbc ; 591 ( `__dbc_o ( dbc )); 592 } } 599 $__db_vrfy_gefo_ ( dbv , pp ) 600 DB_ENV * dbv ; 601 VRFY_PAGEINFO ** pp ; 603 VRFY_PAGEINFO * p ; 604 t ; 613 i(( t = `__os_umloc ( dbv , ( VRFY_PAGEINFO ), & p )) != 0) 614 ( t ); 615 `memt ( p , 0, ( VRFY_PAGEINFO )); 617 * pp = p ; 619 } } 628 $__db_lvage_ ( vdp ) 629 VRFY_DBINFO * vdp ; 631 DB * dbp ; 632 t ; 634 i(( t = `__db__ (& dbp , NULL , 0)) != 0) 635 ( t ); 637 i(( t = `__db_t_gesize ( dbp , 1024)) != 0) 638 r ; 640 i(( t = `__db_ݒ ( dbp , 641 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0, PGNO_BASE_MD )) != 0) 642 r ; 644 vdp -> lvage_ges = dbp ; 647 r : () `__db_o ( dbp , NULL , 0); 648 ( t ); 649 } } 657 $__db_lvage_deroy ( vdp ) 658 VRFY_DBINFO * vdp ; 660 () `__db_o ( vdp -> lvage_ges , NULL , 0); 661 } } 673 $__db_lvage_gxt ( vdp , db , pgn , pgtyp , sk_ovow ) 674 VRFY_DBINFO * vdp ; 675 DBC ** db ; 676 db_pgno_t * pgn ; 677 u_t32_t * pgtyp ; 678 sk_ovow ; 680 DB * dbp ; 681 DBT key , da ; 682 t ; 683 u_t32_t pgty ; 685 dbp = vdp -> lvage_ges ; 687 `memt (& key , 0, ( DBT )); 688 `memt (& da , 0, ( DBT )); 690 i(* db = NULL && 691 ( t = `__db_curs ( dbp , NULL , db , 0)) != 0) 692 ( t ); 694 ( t = `__dbc_g (* db , & key , & da , DB_NEXT )) == 0) { 695 `DB_ASSERT ( dbp -> dbv , da . size =( u_t32_t )); 696 `memy (& pgty , da .data, (pgtype)); 698 i( sk_ovow && pgty = SALVAGE_OVERFLOW ) 701 i(( t = `__dbc_d (* db , 0)) != 0) 702 ( t ); 703 i( pgty ! SALVAGE_IGNORE ) { 704 `DB_ASSERT ( dbp -> dbv , key . size =( db_pgno_t )); 705 `DB_ASSERT ( dbp -> dbv , da . size =( u_t32_t )); 707 * pgn = *( db_pgno_t *) key . da ; 708 * pgtyp = *( u_t32_t *) da .data; 713 ( t ); 714 } } 727 $__db_lvage_isde ( vdp , pgno ) 728 VRFY_DBINFO * vdp ; 729 db_pgno_t pgno ; 731 DBT key , da ; 732 DB * dbp ; 733 t ; 734 u_t32_t cuty ; 736 dbp = vdp -> lvage_ges ; 738 `memt (& key , 0, ( DBT )); 739 `memt (& da , 0, ( DBT )); 741 cuty = SALVAGE_INVALID ; 742 da .d& cuty ; 743 da . un = ( u_t32_t ); 744 da . ags = DB_DBT_USERMEM ; 746 key . da = & pgno ; 747 key . size = ( db_pgno_t ); 755 i(( t = `__db_g ( dbp , NULL , & key , & da , 0)) == 0) { 761 i( cuty = SALVAGE_IGNORE ) 762 ( DB_KEYEXIST ); 765 } i( t ! DB_NOTFOUND ) 766 ( t ); 770 } } 779 $__db_lvage_mkde ( vdp , pgno ) 780 VRFY_DBINFO * vdp ; 781 db_pgno_t pgno ; 783 DBT key , da ; 784 DB * dbp ; 785 pgty , t ; 786 u_t32_t cuty ; 788 pgty = SALVAGE_IGNORE ; 789 dbp = vdp -> lvage_ges ; 791 `memt (& key , 0, ( DBT )); 792 `memt (& da , 0, ( DBT )); 794 cuty = SALVAGE_INVALID ; 795 da .d& cuty ; 796 da . un = ( u_t32_t ); 797 da . ags = DB_DBT_USERMEM ; 799 key . da = & pgno ; 800 key . size = ( db_pgno_t ); 815 i(( t = `__db_lvage_isde ( vdp , pgno )) != 0) 816 ( t = DB_KEYEXIST ? DB_VERIFY_BAD :et); 818 da . size = ( u_t32_t ); 819 da .d& pgty ; 821 ( `__db_put ( dbp , NULL , & key , & da , 0)); 822 } } 833 $__db_lvage_mkeded ( vdp , pgno , pgty ) 834 VRFY_DBINFO * vdp ; 835 db_pgno_t pgno ; 836 u_t32_t pgty ; 838 DB * dbp ; 839 DBT key , da ; 840 t ; 842 dbp = vdp -> lvage_ges ; 844 `memt (& key , 0, ( DBT )); 845 `memt (& da , 0, ( DBT )); 847 key . da = & pgno ; 848 key . size = ( db_pgno_t ); 850 da .d& pgty ; 851 da . size = ( u_t32_t ); 858 t = `__db_put ( dbp , NULL , & key , & da , DB_NOOVERWRITE ); 859 ( t = DB_KEYEXIST ? 0 :et); 860 } } 870 $__db_vrfy_dbt ( db , checkt , efix , hd , back , is_o , vdp ) 871 DBT * db ; 872 checkt ; 873 cڡ * efix ; 874 * hd ; 875 (* back `__P ((*, const *)); 876 is_o ; 877 VRFY_DBINFO * vdp ; 879 i( vdp ! NULL ) { 888 i( `F_ISSET ( vdp , SALVAGE_PRINTHEADER )) { 889 () `__db_hd ( 890 NULL , "__OTHER__", 0, 0, hd , back , vdp , 0); 891 `F_CLR ( vdp , SALVAGE_PRINTHEADER ); 892 `F_SET ( vdp , SALVAGE_PRINTFOOTER ); 899 i( `F_ISSET ( vdp , SALVAGE_PRINTABLE )) 900 checkt = 1; 903 `__db_dbt ( db , checkt , efix , hd , back , is_o )); 904 } } @../db185/db185.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 ~"db185_t.h " 20 db185_o __P (( DB185 *)); 21 db185_com __P (( DB *, cڡ DBT *, const DBT *)); 22 db185_d __P ((cڡ DB185 *, cڡ DBT185 *, u_t )); 23 db185_fd __P ((cڡ DB185 *)); 24 db185_g __P ((cڡ DB185 *, cڡ DBT185 *, DBT185 *, u_t )); 25 u_t32_t 26 db185_hash __P (( DB *, cڡ *, u_t32_t )); 27 size_t db185_efix __P (( DB *, cڡ DBT *, const DBT *)); 28 db185_put __P ((cڡ DB185 *, DBT185 *, cڡ DBT185 *, u_t )); 29 db185_q __P ((cڡ DB185 *, DBT185 *, DBT185 *, u_t )); 30 db185_sync __P ((cڡ DB185 *, u_t )); 41 DB185 * 42 $__db185_ݒ ( fe , oags , mode , ty , ݒfo ) 43 cڡ * fe ; 44 oags , mode ; 45 DBTYPE ty ; 46 cڡ * ݒfo ; 48 cڡ BTREEINFO * bi ; 49 cڡ HASHINFO * hi ; 50 cڡ RECNOINFO * ri ; 51 DB * dbp ; 52 DB185 * db185p ; 53 DB_FH * fhp ; 54 t ; 56 dbp = NULL ; 57 db185p = NULL ; 59 i(( t = `db_ (& dbp , NULL , 0)) != 0) 60 r ; 62 i(( t = `__os_oc ( NULL , 1, ( DB185 ), & db185p )) != 0) 63 r ; 70 ty ) { 72 ty = DB_BTREE ; 73 i(( bi = ݒfo ! NULL ) { 74 i( bi -> ags & ~ R_DUP ) 75 ev ; 76 i( bi -> ags & R_DUP ) 77 () dbp -> `t_ags (dbp, DB_DUP ); 78 i( bi -> chesize != 0) 79 () dbp -> t_chesize 80 ( dbp , 0, bi -> chesize , 0); 81 i( bi -> mkeyge != 0) 82 () dbp -> `t_bt_mkey (dbp, bi -> mkeyge ); 83 i( bi -> psize != 0) 84 () dbp -> `t_gesize (dbp, bi -> psize ); 85 i( bi -> efix ! NULL ) { 86 db185p -> efix = bi ->prefix; 87 dbp -> `t_bt_efix (dbp, db185_efix ); 89 i( bi -> com ! NULL ) { 90 db185p -> com = bi ->compare; 91 dbp -> `t_bt_com (dbp, db185_com ); 93 i( bi -> ld != 0) 94 dbp -> `t_ld (dbp, bi -> ld ); 98 ty = DB_HASH ; 99 i(( hi = ݒfo ! NULL ) { 100 i( hi -> bsize != 0) 101 () dbp -> `t_gesize (dbp, hi -> bsize ); 102 i( hi -> f != 0) 103 () dbp -> `t_h_f (dbp, hi -> f ); 104 i( hi -> m != 0) 105 () dbp -> `t_h_m (dbp, hi -> m ); 106 i( hi -> chesize != 0) 107 () dbp -> t_chesize 108 ( dbp , 0, hi -> chesize , 0); 109 i( hi -> hash ! NULL ) { 110 db185p -> hash = hi ->hash; 111 () dbp -> `t_h_hash (dbp, db185_hash ); 113 i( hi -> ld != 0) 114 dbp -> `t_ld (dbp, hi -> ld ); 119 ty = DB_RECNO ; 122 () dbp -> `t_ags (dbp, DB_RENUMBER ); 145 i( fe ! NULL ) { 146 i( oags & O_CREAT && 147 `__os_exis ( NULL , fe , NULL) != 0) 148 i( `__os_ݒhd ( NULL , fe , 149 oags , mode , & fhp ) == 0) 150 () `__os_ohd ( NULL , fhp ); 151 () dbp -> `t__sour (dbp, fe ); 153 i( O_RDONLY ) 154 oags &~ O_RDONLY ; 155 oags | O_RDWR ; 156 fe = NULL ; 166 oags | O_CREAT ; 168 i(( ri = ݒfo ! NULL ) { 173 #BFMSG \ 174 "Bkey DB: DB 1.85'bamfld in su܋d.\n" ) 175 i( ri -> bame ! NULL ) { 176 dbp -> `rx (dbp, "%s", BFMSG ); 177 ev ; 180 i( ri -> ags & ~( R_FIXEDLEN | R_NOKEY | R_SNAPSHOT )) 181 ev ; 182 i( ri -> ags & R_FIXEDLEN ) { 183 i( ri -> bv != 0) 184 () dbp -> `t__d (dbp, ri -> bv ); 185 i( ri -> != 0) 186 () dbp -> `t__n (dbp, ri -> ); 188 i( ri -> bv != 0) 189 () dbp -> `t__dim (dbp, ri -> bv ); 196 i( ri -> ags & R_SNAPSHOT ) 197 () dbp -> `t_ags (dbp, DB_SNAPSHOT ); 199 i( ri -> chesize != 0) 200 () dbp -> t_chesize 201 ( dbp , 0, ri -> chesize , 0); 202 i( ri -> psize != 0) 203 () dbp -> `t_gesize (dbp, ri -> psize ); 204 i( ri -> ld != 0) 205 dbp -> `t_ld (dbp, ri -> ld ); 209 ev ; 212 db185p -> o = db185_o ; 213 db185p -> d = db185_d ; 214 db185p -> fd = db185_fd ; 215 db185p -> g = db185_g ; 216 db185p -> put = db185_put ; 217 db185p -> q = db185_q ; 218 db185p -> sync = db185_sync ; 226 db185p -> dbp = dbp; 227 dbp -> i_ = db185p ; 230 i(( t = dbp -> `ݒ (dbp, NULL , 231 fe , NULL , ty , `__db_oags ( oags ), mode )) != 0) 232 r ; 235 i(( t = dbp -> `curs (dbp, NULL , &(( DB185 *) db185p )-> dbc , 0)) != 0) 236 r ; 238 ( db185p ); 240 ev : t = EINVAL ; 242 r : i( db185p ! NULL ) 243 `__os_ ( NULL , db185p ); 244 i( dbp ! NULL ) 245 () dbp -> `o (dbp, 0); 247 `__os_t_o ( t ); 248 ( NULL ); 249 } } 252 $db185_o ( db185p ) 253 DB185 * db185p ; 255 DB * dbp ; 256 t ; 258 dbp = db185p ->dbp; 260 t = dbp -> `o (dbp, 0); 262 `__os_ ( NULL , db185p ); 264 i( t == 0) 267 `__os_t_o ( t ); 269 } } 272 $db185_d ( db185p , key185 , ags ) 273 cڡ DB185 * db185p ; 274 cڡ DBT185 * key185 ; 275 u_t ags ; 277 DB * dbp ; 278 DBT key ; 279 t ; 281 dbp = db185p ->dbp; 283 `memt (& key , 0, (key)); 284 key . da = key185 ->data; 285 key . size = key185 ->size; 287 i( ags & ~ R_CURSOR ) 288 ev ; 289 i( ags & R_CURSOR ) 290 t = db185p -> dbc -> `d (db185p->dbc, 0); 292 t = dbp -> `d (dbp, NULL , & key , 0); 294 t ) { 297 DB_NOTFOUND : 302 ev : t = EINVAL ; 304 `__os_t_o ( t ); 306 } } 309 $db185_fd ( db185p ) 310 cڡ DB185 * db185p ; 312 DB * dbp ; 313 fd , t ; 315 dbp = db185p ->dbp; 317 i(( t = dbp -> `fd (dbp, & fd )) == 0) 318 ( fd ); 320 `__os_t_o ( t ); 322 } } 325 $db185_g ( db185p , key185 , da185 , ags ) 326 cڡ DB185 * db185p ; 327 cڡ DBT185 * key185 ; 328 DBT185 * da185 ; 329 u_t ags ; 331 DB * dbp ; 332 DBT key , da ; 333 t ; 335 dbp = db185p ->dbp; 337 `memt (& key , 0, (key)); 338 key . da = key185 ->data; 339 key . size = key185 ->size; 340 `memt (& da , 0, (data)); 341 da .d da185 ->data; 342 da . size = da185 ->size; 344 i( ags ) 345 ev ; 347 t = dbp -> `g (dbp, NULL , & key , & da , 0)) { 349 da185 -> da = data.data; 350 da185 -> size = da .size; 352 DB_NOTFOUND : 357 ev : t = EINVAL ; 359 `__os_t_o ( t ); 361 } } 364 $db185_put ( db185p , key185 , da185 , ags ) 365 cڡ DB185 * db185p ; 366 DBT185 * key185 ; 367 cڡ DBT185 * da185 ; 368 u_t ags ; 370 DB * dbp ; 371 DBC * db_put ; 372 DBT key , da ; 373 t , t_t ; 375 dbp = db185p ->dbp; 377 `memt (& key , 0, (key)); 378 key . da = key185 ->data; 379 key . size = key185 ->size; 380 `memt (& da , 0, (data)); 381 da .d da185 ->data; 382 da . size = da185 ->size; 384 ags ) { 386 t = dbp -> `put (dbp, NULL , & key , & da , 0); 388 R_CURSOR : 389 t = db185p -> dbc -> `put (db185p->dbc, & key , & da , DB_CURRENT ); 391 R_IAFTER : 392 R_IBEFORE : 393 i( dbp -> ty ! DB_RECNO ) 394 ev ; 396 i(( t = dbp -> `curs (dbp, NULL , & db_put , 0)) != 0) 398 i(( t = 399 db_put -> `g (db_put, & key , & da , DB_SET )) == 0) { 400 `memt (& da , 0, (data)); 401 da .d da185 ->data; 402 da . size = da185 ->size; 403 t = db_put -> `put (db_put, & key , & da , 404 ags = R_IAFTER ? DB_AFTER : DB_BEFORE ); 406 i(( t_t = db_put -> `o (db_put)!0 && t == 0) 407 t = t_t ; 409 R_NOOVERWRITE : 410 t = dbp -> `put (dbp, NULL , & key , & da , DB_NOOVERWRITE ); 412 R_SETCURSOR : 413 i( dbp -> ty ! DB_BTREE && dbp->ty ! DB_RECNO ) 414 ev ; 416 i(( t = dbp -> `put (dbp, NULL , & key , & da , 0)) != 0) 418 t = 419 db185p -> dbc -> `g (db185p->dbc, & key , & da , DB_SET_RANGE ); 422 ev ; 425 t ) { 427 key185 -> da = key .data; 428 key185 -> size = key .size; 430 DB_KEYEXIST : 435 ev : t = EINVAL ; 437 `__os_t_o ( t ); 439 } } 442 $db185_q ( db185p , key185 , da185 , ags ) 443 cڡ DB185 * db185p ; 444 DBT185 * key185 , * da185 ; 445 u_t ags ; 447 DB * dbp ; 448 DBT key , da ; 449 t ; 451 dbp = db185p ->dbp; 453 `memt (& key , 0, (key)); 454 key . da = key185 ->data; 455 key . size = key185 ->size; 456 `memt (& da , 0, (data)); 457 da .d da185 ->data; 458 da . size = da185 ->size; 460 ags ) { 461 R_CURSOR : 462 ags = DB_SET_RANGE ; 464 R_FIRST : 465 ags = DB_FIRST ; 467 R_LAST : 468 i( dbp -> ty ! DB_BTREE && dbp->ty ! DB_RECNO ) 469 ev ; 470 ags = DB_LAST ; 472 R_NEXT : 473 ags = DB_NEXT ; 475 R_PREV : 476 i( dbp -> ty ! DB_BTREE && dbp->ty ! DB_RECNO ) 477 ev ; 478 ags = DB_PREV ; 481 ev ; 483 t = db185p -> dbc -> `g (db185p->dbc, & key , & da , ags )) { 485 key185 -> da = key .data; 486 key185 -> size = key .size; 487 da185 -> da = data.data; 488 da185 -> size = da .size; 490 DB_NOTFOUND : 495 ev : t = EINVAL ; 497 `__os_t_o ( t ); 499 } } 502 $db185_sync ( db185p , ags ) 503 cڡ DB185 * db185p ; 504 u_t ags ; 506 DB * dbp ; 507 t ; 509 dbp = db185p ->dbp; 511 ags ) { 514 R_RECNOSYNC : 519 #RSMSG \ 520 "Bkey DB: DB 1.85'R_RECNOSYNC synag in su܋d.\n" ) 521 dbp -> `rx (dbp, "%s", RSMSG ); 524 ev ; 527 i(( t = dbp -> `sync (dbp, 0)) == 0) 531 ev : t = EINVAL ; 533 `__os_t_o ( t ); 535 } } 542 $db185_com ( dbp , a , b ) 543 DB * dbp ; 544 cڡ DBT * a , * b ; 546 DBT185 a185 , b185 ; 548 a185 . da = a ->data; 549 a185 . size = a ->size; 550 b185 . da = b ->data; 551 b185 . size = b ->size; 553 ((( DB185 *) dbp -> i_ )-> `com (& a185 , & b185 )); 554 } } 560 size_t 561 $db185_efix ( dbp , a , b ) 562 DB * dbp ; 563 cڡ DBT * a , * b ; 565 DBT185 a185 , b185 ; 567 a185 . da = a ->data; 568 a185 . size = a ->size; 569 b185 . da = b ->data; 570 b185 . size = b ->size; 572 ((( DB185 *) dbp -> i_ )-> `efix (& a185 , & b185 )); 573 } } 579 u_t32_t 580 $db185_hash ( dbp , key , n ) 581 DB * dbp ; 582 cڡ * key ; 583 u_t32_t n ; 585 ((( DB185 *) dbp -> i_ )-> `hash ( key , ( size_t ) n )); 586 } } @../db_archive/db_archive.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 ma __P ((, *[])); 19 uge __P (()); 20 vsi_check __P (()); 22 cڡ * gogme ; 25 $ma ( gc , gv ) 26 gc ; 27 * gv []; 29 * ݏrg ; 30 td ; 31 DB_ENV * dbv ; 32 u_t32_t ags ; 33 ch , exv , t , vbo ; 34 ** fe , * home , ** li , * sswd ; 36 i(( ogme = `__db_h ( gv [0])= NULL ) 37 ogme = gv [0]; 39 ++ ogme ; 41 i(( t = `vsi_check ()) != 0) 42 ( t ); 44 dbv = NULL ; 45 ags = 0; 46 exv = vbo = 0; 47 home = sswd = NULL ; 48 fe = li = NULL ; 49 ( ch = `gt ( gc , gv , "adh:lP:sVv")! EOF ) 50 ch ) { 52 `LF_SET ( DB_ARCH_ABS ); 55 `LF_SET ( DB_ARCH_REMOVE ); 58 home = ݏrg ; 61 `LF_SET ( DB_ARCH_LOG ); 64 sswd = `rdup ( ݏrg ); 65 `memt ( ݏrg , 0, ` (optarg)); 66 i( sswd = NULL ) { 67 `rtf ( dr , "%s: strdup: %s\n", 68 ogme , ` ( o )); 69 ( EXIT_FAILURE ); 73 `LF_SET ( DB_ARCH_DATA ); 76 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 77 ( EXIT_SUCCESS ); 85 vbo = 1; 89 ( `uge ()); 91 gc - td ; 92 gv + td ; 94 i( gc != 0) 95 ( `uge ()); 98 `__db_ut_sig (); 104 i(( t = `db_v_ (& dbv , 0)) != 0) { 105 `rtf ( dr , 106 "%s: db_v_: %s\n", ogme , `db_ ( t )); 107 shutdown ; 110 dbv -> `t_rfe (dbv, dr ); 111 dbv -> `t_fx (dbv, ogme ); 113 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 114 sswd , DB_ENCRYPT_AES )) != 0) { 115 dbv -> `r (dbv, t , "set_passwd"); 116 shutdown ; 122 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 123 ( t = DB_VERSION_MISMATCH || 124 ( t = dbv -> `ݒ (dbv, home , DB_CREATE | 125 DB_INIT_LOG | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 126 dbv -> `r (dbv, t , "DB_ENV->open"); 127 shutdown ; 131 i(( t = dbv -> `log_chive (dbv, & li , ags )) != 0) { 132 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 133 shutdown ; 137 i( li ! NULL ) { 138 fe = li ; *f! NULL ; ++file) 139 `tf ("%s\n", * fe ); 140 ` ( li ); 144 shutdown : exv = 1; 146 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 147 exv = 1; 148 `rtf ( dr , 149 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 152 i( sswd ! NULL ) 153 ` ( sswd ); 156 `__db_ut_signd (); 158 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 159 } } 162 $uge () 164 () `rtf ( dr , 165 "uge: %[-adlsVv] [-h home] [-Passwd]\n", ogme ); 166 ( EXIT_FAILURE ); 167 } } 170 $vsi_check () 172 v_maj , v_m , v_tch ; 175 () `db_vsi (& v_maj , & v_m , & v_tch ); 176 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 177 `rtf ( dr , 179 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 180 v_maj , v_m ); 181 ( EXIT_FAILURE ); 184 } } @../db_checkpoint/db_checkpoint.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 ma __P ((, *[])); 19 uge __P (()); 20 vsi_check __P (()); 22 cڡ * gogme ; 25 $ma ( gc , gv ) 26 gc ; 27 * gv []; 29 * ݏrg ; 30 td ; 31 DB_ENV * dbv ; 32 time_t now ; 33 gv ; 34 u_t32_t ags , kbys , mus , cds ; 35 ch , exv , , t , vbo ; 36 * home , * logfe , * sswd , time_buf [ CTIME_BUFLEN ]; 38 i(( ogme = `__db_h ( gv [0])= NULL ) 39 ogme = gv [0]; 41 ++ ogme ; 43 i(( t = `vsi_check ()) != 0) 44 ( t ); 51 #MAX_UINT32_T 2147483647 ) 53 dbv = NULL ; 54 kbys = mus = 0; 55 exv = = vbo = 0; 56 ags = 0; 57 home = logfe = sswd = NULL ; 58 ( ch = `gt ( gc , gv , "1h:k:L:P:p:Vv")! EOF ) 59 ch ) { 61 = 1; 62 ags = DB_FORCE ; 65 home = ݏrg ; 68 i( `__db_glg ( NULL , ogme , 69 ݏrg , 1, () MAX_UINT32_T , & gv )) 70 ( EXIT_FAILURE ); 71 kbys = ( u_t32_t ) gv ; 74 logfe = ݏrg ; 77 sswd = `rdup ( ݏrg ); 78 `memt ( ݏrg , 0, ` (optarg)); 79 i( sswd = NULL ) { 80 `rtf ( dr , "%s: strdup: %s\n", 81 ogme , ` ( o )); 82 ( EXIT_FAILURE ); 86 i( `__db_glg ( NULL , ogme , 87 ݏrg , 1, () MAX_UINT32_T , & gv )) 88 ( EXIT_FAILURE ); 89 mus = ( u_t32_t ) gv ; 92 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 93 ( EXIT_SUCCESS ); 95 vbo = 1; 99 ( `uge ()); 101 gc - td ; 102 gv + td ; 104 i( gc != 0) 105 ( `uge ()); 107 i( =0 && kbys =0 && mus == 0) { 108 () `rtf ( dr , 110 ogme ); 111 ( `uge ()); 115 `__db_ut_sig (); 118 i( logfe ! NULL && `__db_ut_logt ( ogme ,ogfile)) 119 shutdown ; 125 i(( t = `db_v_ (& dbv , 0)) != 0) { 126 `rtf ( dr , 127 "%s: db_v_: %s\n", ogme , `db_ ( t )); 128 shutdown ; 131 dbv -> `t_rfe (dbv, dr ); 132 dbv -> `t_fx (dbv, ogme ); 134 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 135 sswd , DB_ENCRYPT_AES )) != 0) { 136 dbv -> `r (dbv, t , "set_passwd"); 137 shutdown ; 144 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 145 (! || t = DB_VERSION_MISMATCH || 146 ( t = dbv -> `ݒ (dbv, home , 147 DB_CREATE | DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 148 dbv -> `r (dbv, t , "DB_ENV->open"); 149 shutdown ; 157 cds = kbys !0 ? 30 : mus * 60; 158 ! `__db_ut_ued ()) { 159 i( vbo ) { 160 () `time (& now ); 161 dbv -> `rx (dbenv, 162 "checkpobeg: %s", `__db_ime (& now , time_buf )); 165 i(( t = dbv -> `txn_checkpot (dbenv, 166 kbys , mus , ags )) != 0) { 167 dbv -> `r (dbv, t , "txn_checkpoint"); 168 shutdown ; 171 i( vbo ) { 172 () `time (& now ); 173 dbv -> `rx (dbenv, 174 "checkpocome: %s", `__db_ime (& now , time_buf )); 177 i( ) 180 `__os_p ( dbv , cds , 0); 184 shutdown : exv = 1; 188 i( logfe ! NULL ) 189 () `move ( logfe ); 192 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 193 exv = 1; 194 `rtf ( dr , 195 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 198 i( sswd ! NULL ) 199 ` ( sswd ); 202 `__db_ut_signd (); 204 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 205 } } 208 $uge () 210 () `rtf ( dr , "uge: %[-1Vv]\n\t%s\n", ogme , 212 ( EXIT_FAILURE ); 213 } } 216 $vsi_check () 218 v_maj , v_m , v_tch ; 221 () `db_vsi (& v_maj , & v_m , & v_tch ); 222 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 223 `rtf ( dr , 225 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 226 v_maj , v_m ); 227 ( EXIT_FAILURE ); 230 } } @../db_codegen/code_capi.c 9 ~"db_codeg.h " 11 FILE * gof ; 13 i_c_back __P (( DB_OBJ *)); 14 i_c_com __P (( DB_OBJ *)); 15 i_c_da __P (()); 16 i_c_db __P (()); 17 i_c_v __P (()); 18 i_c_hd __P (()); 19 i_c_public_da __P (()); 20 i_c_public_func __P (()); 21 i_c_shutdown __P (()); 24 $i_c ( oame ) 25 * oame ; 27 DB_OBJ * cur_db ; 28 ENV_OBJ * cur_v ; 31 i( oame = NULL ) 32 oame = "application.c"; 33 i(( of = `fݒ ( oame , "w")= NULL ) { 34 `rtf ( dr , 35 "%s: %s: %s\n", ogme , oame , ` ( o )); 40 `i_c_hd (); 43 `i_c_public_da (); 46 `TAILQ_FOREACH ( cur_v , & v_ , q ) 47 `TAILQ_FOREACH ( cur_db , & cur_v -> dbq , q ) 48 i( cur_db -> imy ! NULL ) 49 `i_c_back ( cur_db ); 52 `TAILQ_FOREACH ( cur_v , & v_ , q ) 53 `TAILQ_FOREACH ( cur_db , & cur_v -> dbq , q ) 54 i( cur_db -> key_ty ! NULL ) 55 `i_c_com ( cur_db ); 58 `i_c_da (); 61 `i_c_public_func (); 64 `i_c_v (); 67 `i_c_db (); 70 `i_c_shutdown (); 73 } } 76 $i_c_hd () 79 `rtf ( of , "\ #include <sys/types.h>\n\ #include <sys/stat.h>\n\ \n\ #include <errno.h>\n\ #include <stdlib.h>\n\ #include <string.h>\n\ \n\ #ifdef _WIN32\n\ #include <direct.h>\n\ \n\ #define\tmkdir(dir,erm)\t_mkdir(dir)\n\ #endif\n\ \n\ #include \"db.h\"\n\n"); 94 } } 97 $i_c_public_da () 99 ENV_OBJ * cur_v ; 100 DB_OBJ * cur_db ; 109 `rtf ( of , "\ /* Globalnvironmentnd database handles for use byhepplication */\n"); 111 `TAILQ_FOREACH ( cur_v , & v_ , q ) { 112 i(! cur_v -> de ) 113 `rtf ( of , 115 cur_v -> efix ); 116 `TAILQ_FOREACH ( cur_db , & cur_v -> dbq , q ) 117 i( cur_v -> de ) 118 `rtf ( of , 120 cur_db -> me ); 122 `rtf ( of , 124 cur_v -> efix , cur_db -> me ); 127 `rtf ( of , "\ \n\ /* Public functions for use byhepplication */\n\ bdb_startup(void);\n\ bdb_shutdown(void);\n"); 132 } } 135 $i_c_da () 137 DB_OBJ * cur_db ; 138 ENV_OBJ * cur_v ; 139 f ; 141 `rtf ( of , "\ \n\ /* DB_ENV initialization structures */\n\ struct {\n\ \tDB_ENV **envpp;\n\ \tchar *home;\n\ \tu_int32_t gbytes;\n\ \tu_int32_t bytes;\n\ \tu_int32_tcache;\n\ \tintrivate;\n\ \tintransaction;\n\ }nv_list_t;\n\ nv_list_tnv_list[] = {\n"); 155 f = 1; 156 `TAILQ_FOREACH ( cur_v , & v_ , q ) 157 i(! cur_v -> de ) { 158 `rtf ( of , 160 f ? "" : " },\n", 161 cur_v -> efix , 162 cur_v -> home , 163 ( u_lg ) cur_v -> gbys , 164 ( u_lg ) cur_v -> bys , 165 ( u_lg ) cur_v -> nche , 166 cur_v -> ive , 167 cur_v -> i ); 168 f = 0; 170 `rtf ( of , " }\n};\n\n"); 172 `rtf ( of , "\ /* DB initialization structures */\n\ struct db_list_t {\n\ \tDB_ENV **envpp;\n\ \tDB **dbpp;\n\ \tchar *name;\n\ \tDBTYPEype;\n\ \tu_int32_txtentsize;\n\ \tu_int32_tagesize;\n\ \tu_int32_te_len;\n\ \tint (*key_compare)(DB *, const DBT *, const DBT *);\n\ \tDB **primaryp;\n\ \tint (*secondary_callback)(DB *, const DBT *, const DBT *, DBT *);\n\ \tint dupsort;\n\ \tintecnum;\n\ \tintransaction;\n\ } db_list_t;\n\ db_list_t db_list[] = {\n"); 191 f = 1; 192 `TAILQ_FOREACH ( cur_v , & v_ , q ) 193 `TAILQ_FOREACH ( cur_db , & cur_v -> dbq , q ) { 194 `rtf ( of , "\ %s\t{ %s%s%s, &%s%s%s, \"%s\", %s, %lu, %lu, %lu,\n\ \t\t%s%s%s, %s%s%s%s, %s%s%s, %d, %d, %d", 197 f ? "" : " },\n", 198 cur_v -> de ? "" : "&", 199 cur_v -> de ? "NULL" : cur_v-> efix , 200 cur_v -> de ? "" : "_dbenv", 201 cur_v -> efix = NULL ? 202 cur_db -> me : cur_v -> efix , 203 cur_v -> efix = NULL ? "" : "_", 204 cur_v -> efix = NULL ? "" : cur_db -> me , 205 cur_db -> me , 206 cur_db -> dbty , 207 ( u_lg ) cur_db -> exsize , 208 ( u_lg ) cur_db -> gesize , 209 ( u_lg ) cur_db -> _n , 210 cur_db -> key_ty = NULL ? "NULL" : "bdb_", 211 cur_db -> key_ty = NULL ? "" : cur_db->key_type, 212 cur_db -> key_ty = NULL ? "" : "_compare", 213 cur_db -> imy = NULL ? "NULL" : "&", 214 cur_db -> imy = NULL ? "" : cur_v -> efix , 215 cur_db -> imy = NULL ? "" : "_", 216 cur_db -> imy = NULL ? "" : cur_db->primary, 217 cur_db -> imy = NULL ? "NULL" : "bdb_", 218 cur_db -> imy = NULL ? "" : cur_db-> me , 219 cur_db -> imy = NULL ? "" : "_callback", 220 cur_db -> dupst , 221 cur_db -> um , 222 cur_db -> i ); 223 f = 0; 225 `rtf ( of , " }\n};\n\n"); 226 } } 229 $i_c_public_func () 231 `rtf ( of , "\ #ifdef BUILD_STANDALONE\n\ \n\ ()\n\ {\n\ \treturn (bdb_startup() && bdb_shutdown() ? EXIT_FAILURE : EXIT_SUCCESS);\n\ }\n\ #endif\n\n"); 241 `rtf ( of , "\ int bdb_env_startup(env_list_t *);\n\ int bdb_env_shutdown(env_list_t *);\n\ int bdb_db_startup(db_list_t *);\n\ int bdb_db_shutdown(db_list_t *);\n\ \n"); 248 `rtf ( of , "\ /*\n\ * bdb_startup --\n\ *\tStart uphenvironmentsnd databases.\n\ */\n\ \nbdb_startup()\n{\n\ \tu_int i;\n\ \n\ \t/* Opennvironments. */\n\ \tfor (i = 0; i < sizeof(env_list) / sizeof(env_list[0]); ++i)\n\ \t\tif (bdb_env_startup(&env_list[i]))\n\ \t\t\treturn (1);\n\ \t/* Openrimary databases. */\n\ \tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\ \t\tif (db_list[i].primaryp == NULL &&\n\ \t\t bdb_db_startup(&db_list[i]))\n\ \t\t\treturn (1);\n\ \t/* Open secondary databases. */\n\ \tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\ \t\tif (db_list[i].primaryp != NULL &&\n\ \t\t bdb_db_startup(&db_list[i]))\n\ \t\t\treturn (1);\n\ \treturn (0);\n\ }\n"); 273 `rtf ( of , "\ \n\ /*\n\ * bdb_shutdown --\n\ *\tShut downhenvironmentsnd databases.\n\ */\n\ \nbdb_shutdown()\n{\n\ \tu_int i;\n\ \n\ \t/* Close secondary databases. */\n\ \tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\ \t\tif (db_list[i].primaryp != NULL &&\n\ \t\t bdb_db_shutdown(&db_list[i]))\n\ \t\t\treturn (1);\n\ \t/* Closerimary databases. */\n\ \tfor (i = 0; i < sizeof(db_list) / sizeof(db_list[0]); ++i)\n\ \t\tif (db_list[i].primaryp == NULL &&\n\ \t\t bdb_db_shutdown(&db_list[i]))\n\ \t\t\treturn (1);\n\ \t/* Closenvironments. */\n\ \tfor (i = 0; i < sizeof(env_list) / sizeof(env_list[0]); ++i)\n\ \t\tif (bdb_env_shutdown(&env_list[i]))\n\ \t\t\treturn (1);\n\ \treturn (0);\n\ }\n"); 298 } } 301 $i_c_v () 303 `rtf ( of , "\ \n\ int\nbdb_env_startup(env_list_t *ep)\n{\n\ \tstruct stat sb;\n\ \tDB_ENV *dbenv;\n\ \tu_int32_t open_flags;\n\ \tintet;\n\ \n\ \t/*\n\ \t * Ifhe directory doesn'txist, create it withermissionsimited\n\ \t *ohe owner. Assumerrors caused byhe directoryotxisting;\n\ \t * we'dikeovoid interpreting systemrrorsnd it won't hurto\n\ \t *ttempto createnxisting directory.\n\ \t *\n\ \t * !!!\n\ \t * We use octal forheermissions,othinglse isortable.\n\ \t */\n\ \tif (stat(ep->home, &sb) != 0)\n\ \t\t(void)mkdir(ep->home, 0700);\n\ \n\ \t/*\n\ \t * Ifhenvironment isotransactional,emovende-create it.\n\ \t */\n\ \tif (!ep->transaction) {\n\ \t\tif ((ret = db_env_create(&dbenv, 0)) != 0) {\n\ \t\t\tfprintf(stderr, \"db_env_create: %%s\", db_strerror(ret));\n\ \t\t\treturn (1);\n\ \t\t}\n\ \t\tif ((ret = dbenv->remove(dbenv,p->home, DB_FORCE)) != 0) {\n\ \t\t\tdbenv->err(dbenv,et,\n\ \t\t\t \"DB_ENV->remove: %%s\",p->home);\n\ \t\t\tgotorr;\n\ \t\t}\n\ \t}\n\n"); 338 `rtf ( of , "\ \t/*\n\ \t * Createhe DB_ENV handlend initializerroreporting.\n\ \t */\n\ \tif ((ret = db_env_create(&dbenv, 0)) != 0) {\n\ \t\tfprintf(stderr, \"db_env_create: %%s\", db_strerror(ret));\n\ \t\treturn (1);\n\ \t}\n"); 347 `rtf ( of , "\ \tdbenv->set_errpfx(dbenv,p->home);\n\ \tdbenv->set_errfile(dbenv, stderr);\n\n"); 351 `rtf ( of , "\ \t /* Configurehe cache size. */\n\ \tif ((ep->gbytes != 0 ||p->bytes != 0) &&\n\ \t (ret = dbenv->set_cachesize(dbenv,\n\ \tp->gbytes,p->bytes,p->ncache)) != 0) {\n\ \t\tdbenv->err(dbenv,et, \"DB_ENV->set_cachesize\");\n\ \t\tgotorr;\n\ \t}\n"); 360 `rtf ( of , "\ \n\ \t/*\n\ \t * Openhenvironment.\n\ \t */\n\ \topen_flags = DB_CREATE | DB_INIT_MPOOL | DB_THREAD;\n\ \tif (ep->private)\n\ \t open_flags |= DB_PRIVATE;\n\ \tif (ep->transaction)\n\ \t open_flags |= DB_INIT_LOCK |\n\ \t DB_INIT_LOG | DB_INIT_TXN | DB_RECOVER;\n\ \tif ((ret = dbenv->open(dbenv,p->home, open_flags, 0)) != 0) {\n\ \t dbenv->err(dbenv,et, \"DB_ENV->open: %%s\",p->home);\n\ \t gotorr;\n\ \t}\n\ \n\ \t*ep->envpp = dbenv;\n\ \treturn (0);\n\ \n\ :\t(void)dbenv->close(dbenv, 0);\n\ \treturn (1);\n\ }"); 382 } } 385 $i_c_db () 387 `rtf ( of , "\ \n\ \nstatic int\nbdb_db_startup(db_list_t *dp)\n\ {\n\ \tDB_ENV *dbenv;\n\ \tDB *dbp;\n\ \tintet;\n\ \n\ \tdbenv = dp->envpp == NULL ? NULL : *dp->envpp;\n\ \n\ \t/*\n\ \t * Ifhe database isotransactional,emove itnde-create it.\n\ \t */\n\ \tif (!dp->transaction) {\n\ \t\tif ((ret = db_create(&dbp, dbenv, 0)) != 0) {\n\ \t\t\tif (dbenv == NULL)\n\ \t\t\t\tfprintf(stderr,\n\ \t\t\t\t \"db_create: %%s\\n\", db_strerror(ret));\n\ \t\t\telse\n\ \t\t\t\tdbenv->err(dbenv,et, \"db_create\");\n\ \t\t\treturn (1);\n\ \t\t}\n\ \t\tif ((ret = dbp->remove(\n\ \t\t dbp, dp->name, NULL, 0)) != 0 &&et != ENOENT) {\n\ \t\t\tif (dbenv == NULL)\n\ \t\t\t\tfprintf(stderr,\n\ \t\t\t\t \"DB->remove: %%s: %%s\\n\",\n\ \t\t\t\t dp->name, db_strerror(ret));\n\ \t\t\telse\n\ \t\t\t\tdbenv->err(\n\ \t\t\t\t dbenv,et, \"DB->remove: %%s\", dp->name);\n\ \t\t\treturn (1);\n\ \t\t}\n\ \t}\n"); 422 `rtf ( of , "\ \n\ \tif ((ret = db_create(&dbp, dbenv, 0)) != 0) {\n\ \t\tif (dbenv == NULL)\n\ \t\t\tfprintf(stderr, \"db_create: %%s\\n\", db_strerror(ret));\n\ \t\telse\n\ \t\t\tdbenv->err(dbenv,et, \"db_create\");\n\ \t\treturn (1);\n\ \t}\n\ \tif (dbenv == NULL) {\n\ \t\tdbp->set_errpfx(dbp, dp->name);\n\ \t\tdbp->set_errfile(dbp, stderr);\n\ \t}\n"); 436 `rtf ( of , "\ \n\ \tif (dp->dupsort && (ret = dbp->set_flags(dbp, DB_DUPSORT)) != 0) {\n\ \t\tdbp->err(dbp,et, \"DB->set_flags: DB_DUPSORT: %%s\", dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 443 `rtf ( of , "\ \n\ \tif (dp->recnum && (ret = dbp->set_flags(dbp, DB_RECNUM)) != 0) {\n\ \t\tdbp->err(dbp,et, \"DB->set_flags: DB_RECNUM: %%s\", dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 450 `rtf ( of , "\ \n\ \tif (dp->extentsize != 0 &&\n\ \t (ret = dbp->set_q_extentsize(dbp, dp->extentsize)) != 0) {\n\ \t\tdbp->err(dbp,et,\n\ \t\t \"DB->set_q_extentsize: %%lu: %%s\",\n\ \t\t (u_long)dp->extentsize, dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 460 `rtf ( of , "\ \n\ \tif (dp->pagesize != 0 &&\n\ \t (ret = dbp->set_pagesize(dbp, dp->pagesize)) != 0) {\n\ \t\tdbp->err(dbp,et,\n\ \t\t \"DB->set_pagesize: %%lu: %%s\",\n\ \t\t (u_long)dp->pagesize, dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 470 `rtf ( of , "\ \n\ \tif (dp->re_len != 0 &&\n\ \t (ret = dbp->set_re_len(dbp, dp->re_len)) != 0) {\n\ \t\tdbp->err(dbp,et,\n\ \t\t \"DB->set_re_len: %%lu: %%s\",\n\ \t\t (u_long)dp->re_len, dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 480 `rtf ( of , "\ \n\ \tif (dp->key_compare != NULL &&\n\ \t (ret = dbp->set_bt_compare(dbp, dp->key_compare)) != 0) {\n\ \t\tdbp->err(dbp,et, \"DB->set_bt_compare\");\n\ \t\tgotorr;\n\ \t}\n"); 488 `rtf ( of , "\ \n\ \tif ((ret = dbp->open(dbp, NULL, dp->name, NULL, dp->type,\n\ \t (dp->transaction ? DB_AUTO_COMMIT : 0) |\n\ \t DB_CREATE | DB_THREAD, 0)) != 0) {\n\ \t\tdbp->err(dbp,et, \"DB->open: %%s\", dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 497 `rtf ( of , "\ \n\ \tif (dp->primaryp != NULL &&\n\ \t (ret = dbp->associate(*dp->primaryp,\n\ \t NULL, dbp, dp->secondary_callback, DB_CREATE)) != 0) {\n\ \t\tdbp->err(dbp,et, \"DB->associate: %%s\", dp->name);\n\ \t\tgotorr;\n\ \t}\n"); 506 `rtf ( of , "\ \n\ \t*dp->dbpp = dbp;\n\ \treturn (0);\n\ \nerr:\t(void)dbp->close(dbp, 0);\n\ \treturn (1);\n\ }\n"); 513 } } 516 $i_c_back ( cur_db ) 517 DB_OBJ * cur_db ; 519 `rtf ( of , "\ \n\ i\nbdb_%s_back(DB *cdy, cڡ DBT *key, cڡ DBT *d, DBT *su)\n\ {\n", cur_db -> me ); 524 i( cur_db -> cuom ) { 525 `rtf ( of , "\ \tcdy->rx(cdy,\n\ \ \"%s: missg clback comris funi\");\n\ \u (DB_DONOTINDEX);\n\ }\n", cur_db -> me ); 530 `rtf ( dr , 532 cur_db -> me ); 534 `rtf ( of , "\ \esu->d&((u_t8_*)da->da)[%d];\n\ \esu->siz%d;\n\ \u (0);\n\ }\n", cur_db -> cdy_off , cur_db-> cdy_n ); 539 } } 542 $i_c_com ( cur_db ) 543 DB_OBJ * cur_db ; 545 DB_OBJ * t_db ; 546 ENV_OBJ * t_v ; 554 `TAILQ_FOREACH ( t_v , & v_ , q ) 555 `TAILQ_FOREACH ( t_db , & t_v -> dbq , q ) { 556 i( t_db = cur_db ) 557 ouut ; 558 i( t_db -> key_ty = NULL ) 560 i( `rcmp ( t_db -> key_ty , cur_db ->key_type) == 0) 567 ouut : `rtf ( of , "\ \n\ i bdb_%s_com(DB *, cڡ DBT *, cڡ DBT *);\n\ \n\ i\nbdb_%s_com(DB *dbp, cڡ DBT *a, cڡ DBT *b)\n\ {\n\ \t%ai, bi;\n\ \n\ \tmemy(&ai,->da, sizeofi));\n\ \tmemy(&bi, b->da, sizeof(bi));\n\ \u (a< b? -1 : (a> b? 1 : 0));\n\ }\n", cur_db -> key_ty , cur_db->key_type, cur_db->key_type); 579 } } 582 $i_c_shutdown () 584 `rtf ( of , "\ \n\ int\nbdb_env_shutdown(env_list_t *ep)\n\ {\n\ \tDB_ENV *dbenv;\n\ \tintet;\n\ \n\ \tdbenv =p->envpp == NULL ? NULL : *ep->envpp;\n\ \tret = 0;\n\ \n\ \tif (dbenv != NULL && (ret = dbenv->close(dbenv, 0)) != 0)\n\ \t\tfprintf(stderr,\n\ \t\t \"DB_ENV->close: %%s: %%s\\n\",p->home, db_strerror(ret));\n\ \treturn (ret == 0 ? 0 : 1);\n\ }\n"); 600 `rtf ( of , "\ \n\ int\nbdb_db_shutdown(db_list_t *dp)\n\ {\n\ \tDB_ENV *dbenv;\n\ \tDB *dbp;\n\ \tintet;\n\ \n\ \tdbenv = dp->envpp == NULL ? NULL : *dp->envpp;\n\ \tdbp = *dp->dbpp;\n\ \tret = 0;\n\ \n\ \t/*\n\ \t * Ifhe database isransactionallyrotected, close without writing;\n\ \t * dirtyages; otherwise, flush dirtyageso disk.\n\ \t */\n\ \tif (dbp != NULL &&\n\ \t (ret = dbp->close(dbp, dp->transaction ? DB_NOSYNC : 0)) != 0) {\n\ \t\tif (dbenv == NULL)\n\ \t\t\tfprintf(stderr,\n\ \t\t\t \"DB->close: %%s: %%s\\n\", dp->name, db_strerror(ret));\n\ \t\telse\n\ \t\t\tdbenv->err(dbenv,et, \"DB->close: %%s\", dp->name);\n\ \t}\n\ \treturn (ret == 0 ? 0 : 1);\n\ }\n"); 626 } } @../db_codegen/code_parse.c 9 ~"db_codeg.h " 12 { mPS_UNSET , mPS_ENV_SET , mPS_DB_SET } gr_us ; 13 ENV_OBJ * gcur_v ; 14 DB_OBJ * gcur_db ; 16 r_le __P ((*, )); 19 $r_put ( ) 20 FILE * ; 22 lc ; 23 * p , * t , buf [256]; 25 r_us = PS_UNSET ; 27 lc = 1; `fgs ( buf , (buf), ! NULL ; ++lc) { 28 i(( p = `rchr ( buf , '\n')! NULL ) 29 * p = '\0'; 30 i( ` ( buf ) + 1 == (buf)) { 31 `rtf ( dr , "%s: %d:tolg", ogme , lc ); 36 p = buf ; *!'\0' && `isa (()*p); ++p) 43 i(* p == '\0' || *p == '#') 45 t = p ; *t != '\0' && *t != '#'; ++t) 47 * t = '\0'; 49 i( `r_le ( p , lc )) 52 () `fo ( ); 55 } } 57 #unde CONFIG_SLOTS 58 #CONFIG_SLOTS 10 ) 60 #unde CONFIG_GET_UINT32 61 #CONFIG_GET_UINT32 ( s , vp ) do { \ 62 i( `__db_gulg ( NULL , ogme , s , 0, UINT32_MAX , vp ) != 0) \ 63 ( EINVAL ); \ 64 } 0) ) 67 $r_le ( s , lc ) 68 * s ; 69 lc ; 71 u_lg uv ; 72 nf ; 73 * gv [ CONFIG_SLOTS ], * p ; 75 nf = `__cfig_l ( s , gv ); 80 i( `rcmp ( gv [0], "environment") == 0) { 81 i( nf != 3 || 82 `rcmp ( gv [2], "{"!0 || r_us ! PS_UNSET ) 83 fm ; 85 i( `__os_oc ( NULL , 1, (* cur_v ), &cur_env) || 86 `__os_rdup ( NULL , gv [1], & cur_v -> efix )) 87 memy ; 88 `TAILQ_INIT (& cur_v -> dbq ); 90 `TAILQ_INSERT_TAIL (& v_ , cur_v , q ); 95 cur_v -> home = "."; 97 r_us = PS_ENV_SET ; 100 i( `rcmp ( gv [0], "home") == 0) { 101 i( nf !2 || r_us ! PS_ENV_SET ) 102 fm ; 103 i( `__os_rdup ( NULL , gv [1], & cur_v -> home )) 104 memy ; 107 i( `rcmp ( gv [0], "cachesize") == 0) { 108 i( nf !4 || r_us ! PS_ENV_SET ) 109 fm ; 110 `CONFIG_GET_UINT32 ( gv [1], & uv ); 111 cur_v -> gbys = uv ; 112 `CONFIG_GET_UINT32 ( gv [1], & uv ); 113 cur_v -> bys = uv ; 114 `CONFIG_GET_UINT32 ( gv [1], & uv ); 115 cur_v -> nche = uv ; 118 i( `rcmp ( gv [0], "private") == 0) { 119 i( nf !1 || r_us ! PS_ENV_SET ) 120 fm ; 121 cur_v -> ive = 1; 128 i( `rcmp ( gv [0], "database") == 0) { 129 i( nf != 3 || 130 `rcmp ( gv [2], "{"!0 || r_us = PS_DB_SET ) 131 fm ; 137 i( r_us = PS_UNSET ) { 138 i( `__os_oc ( NULL , 1, (* cur_v ), &cur_env)) 139 memy ; 140 `TAILQ_INIT (& cur_v -> dbq ); 141 cur_v -> de = 1; 143 `TAILQ_INSERT_TAIL (& v_ , cur_v , q ); 146 i( `__os_oc ( NULL , 1, (* cur_db ), &cur_db) || 147 `__os_rdup ( NULL , gv [1], & cur_db -> me )) 148 memy ; 149 `TAILQ_INSERT_TAIL (& cur_v -> dbq , cur_db , q ); 154 cur_db -> dbty = "DB_BTREE"; 156 r_us = PS_DB_SET ; 159 i( `rcmp ( gv [0], "custom") == 0) { 160 i( nf !1 || r_us ! PS_DB_SET ) 161 fm ; 162 cur_db -> cuom = 1; 165 i( `rcmp ( gv [0], "dupsort") == 0) { 166 i( nf !1 || r_us ! PS_DB_SET ) 167 fm ; 168 cur_db -> dupst = 1; 171 i( `rcmp ( gv [0], "extentsize") == 0) { 172 i( nf !2 || r_us ! PS_DB_SET ) 173 fm ; 174 `CONFIG_GET_UINT32 ( gv [1], & uv ); 175 cur_db -> exsize = uv ; 178 i( `rcmp ( gv [0], "key_type") == 0) { 179 i( nf !2 || r_us ! PS_DB_SET ) 180 fm ; 181 i( `__os_rdup ( NULL , gv [1], & cur_db -> key_ty )) 182 memy ; 185 i( `rcmp ( gv [0], "pagesize") == 0) { 186 i( nf !2 || r_us ! PS_DB_SET ) 187 fm ; 188 `CONFIG_GET_UINT32 ( gv [1], & uv ); 189 cur_db -> gesize = uv ; 192 i( `rcmp ( gv [0], "primary") == 0) { 193 i( nf !2 || r_us ! PS_DB_SET ) 194 fm ; 195 i( `__os_rdup ( NULL , gv [1], & cur_db -> imy )) 196 memy ; 199 i( `rcmp ( gv [0], "recnum") == 0) { 200 i( nf !1 || r_us ! PS_DB_SET ) 201 fm ; 202 cur_db -> um = 1; 205 i( `rcmp ( gv [0], "re_len") == 0) { 206 i( nf !2 || r_us ! PS_DB_SET ) 207 fm ; 208 `CONFIG_GET_UINT32 ( gv [1], & uv ); 209 cur_db -> _n = uv ; 212 i( `rcmp ( gv [0], "secondary_offset") == 0) { 213 i( nf !3 || r_us ! PS_DB_SET ) 214 fm ; 215 `CONFIG_GET_UINT32 ( gv [1], & uv ); 216 cur_db -> cdy_off = uv ; 217 `CONFIG_GET_UINT32 ( gv [2], & uv ); 218 cur_db -> cdy_n = uv ; 221 i( `rcmp ( gv [0], "transaction") == 0) { 222 i( nf !1 || r_us ! PS_DB_SET ) 223 fm ; 224 cur_v -> i = cur_db ->transaction = 1; 227 i( `rcmp ( gv [0], "type") == 0) { 228 i( nf !2 || r_us ! PS_DB_SET ) 229 fm ; 230 i( `rcmp ( gv [1], "btree") == 0) 231 p = "DB_BTREE"; 232 i( `rcmp ( gv [1], "hash") == 0) 233 p = "DB_HASH"; 234 i( `rcmp ( gv [1], "queue") == 0) 235 p = "DB_QUEUE"; 236 i( `rcmp ( gv [1], "recno") == 0) 237 p = "DB_RECNO"; 239 fm ; 240 i( `__os_rdup ( NULL , p , & cur_db -> dbty )) 241 memy ; 248 i( `rcmp ( gv [0], "}") == 0) { 249 i( nf != 1) 250 fm ; 257 r_us ) { 258 PS_UNSET : 259 fm ; 260 PS_DB_SET : 261 r_us = 262 cur_v -> de ? PS_UNSET : PS_ENV_SET ; 264 PS_ENV_SET : 265 r_us = PS_UNSET ; 270 fm : `rtf ( dr , 271 "%s:%d: %s: invid iut\n", ogme , lc , s ); 274 memy : `rtf ( dr , "%s: %s\n", ogme , `db_ ( o )); 276 } } 278 #ifde DEBUG 280 $r_dump () 282 `TAILQ_FOREACH ( cur_v , & v_ , q ) { 283 `tf ("environment: %s\n", 284 cur_v -> de ? "de" : cur_v-> efix ); 286 i( cur_v -> home ! NULL ) 287 `tf ("\thome: %s\n", cur_v -> home ); 288 i( cur_v -> gbys !0 || cur_v-> bys != 0) 289 `tf ("\tcachesize: %luGB, %luB, %lu\n", 290 ( u_lg ) cur_v -> gbys , 291 ( u_lg ) cur_v -> bys , 292 ( u_lg ) cur_v -> nche ); 294 i( cur_v -> ive ) 295 `tf ("\tprivate: yes\n"); 296 i( cur_v -> i ) 297 `tf ("\ttransaction: yes\n"); 299 `TAILQ_FOREACH ( cur_db , & cur_v -> dbq , q ) { 300 `tf ("\tdaba: %s\n", cur_db -> me ); 301 `tf ("\t\tdbty: %s\n", cur_db -> dbty ); 303 i( cur_db -> exsize ) 304 `tf ("\t\textentsize: %lu\n", 305 ( u_lg ) cur_db -> exsize ); 306 i( cur_db -> gesize ) 307 `tf ("\t\tpagesize: %lu\n", 308 ( u_lg ) cur_db -> gesize ); 309 i( cur_db -> _n ) 310 `tf ("\t\tre_len: %lu\n", 311 ( u_lg ) cur_db -> _n ); 313 i( cur_db -> key_ty ! NULL ) 314 `tf ("\t\tkey_type: %s\n", 315 cur_db -> key_ty ); 317 i( cur_db -> imy ! NULL ) 318 `tf ("\t\tprimary: %s\n", 319 cur_db -> imy ); 320 i( cur_db -> cuom ) 321 `tf ("\t\tcustom: yes\n"); 322 i( cur_db -> cdy_off ) 323 `tf ("\t\tsecondary_offset: %lu/%lu\n", 324 ( u_lg ) cur_db -> cdy_off , 325 ( u_lg ) cur_db -> cdy_n ); 327 i( cur_db -> dupst ) 328 `tf ("\t\tdupsort: yes\n"); 329 i( cur_db -> um ) 330 `tf ("\t\trecnum: yes\n"); 331 i( cur_db -> i ) 332 `tf ("\t\ttransaction: yes\n"); 337 } } @../db_codegen/db_codegen.c 9 ~"db_codeg.h " 11 #ide lt 12 cڡ gcyright [] = 16 uge __P (()); 18 ma __P ((, *[])); 20 cڡ * gogme ; 21 __hd_v gv_ ; 24 $ma ( gc , gv ) 25 gc ; 26 * gv []; 28 * ݏrg ; 29 td ; 30 um { C , CXX , JAVA } i ; 31 ch , vbo ; 32 * oame ; 34 `TAILQ_INIT (& v_ ); 36 i(( ogme = `__db_h ( gv [0])= NULL ) 37 ogme = gv [0]; 39 ++ ogme ; 41 i = C ; 42 oame = NULL ; 43 vbo = 0; 45 ( ch = `gt ( gc , gv , "a:i:o:Vv")! EOF ) 46 ch ) { 48 i( `rcmp ( ݏrg , "c") == 0) { 49 i = C ; 52 `rcmp ( ݏrg , "c++") == 0 || 53 `rcmp ( ݏrg , "cxx") == 0) 54 i = CXX ; 55 i( `rcmp ( ݏrg , "java") == 0) 56 i = JAVA ; 58 ( `uge ()); 61 i( `eݒ ( ݏrg , "r", d = NULL ) { 62 `rtf ( dr , "%s: %s: %s\n", 63 ogme , ݏrg , ` ( o )); 64 ( EXIT_FAILURE ); 68 oame = ݏrg ; 71 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 72 ( EXIT_SUCCESS ); 74 vbo = 1; 78 ( `uge ()); 80 gc - td ; 81 gv + td ; 83 i( gc != 0) 84 ( `uge ()); 86 i( `r_put ( d )) 87 ( EXIT_FAILURE ); 89 #ifde DEBUG 90 i( vbo && `r_dump ()) 91 ( EXIT_FAILURE ); 94 i( `TAILQ_FIRST (& v_ ! NULL ) 95 i ) { 96 C : 97 i( `i_c ( oame )) 98 ( EXIT_FAILURE ); 100 CXX : 101 JAVA : 102 `rtf ( dr , 104 ( EXIT_FAILURE ); 107 ( EXIT_SUCCESS ); 108 } } 111 $uge () 113 () `rtf ( dr , 114 "uge: %[-Vv] [-c] [-put] [-ouut]\n", ogme ); 115 ( EXIT_FAILURE ); 116 } } @../db_deadlock/db_deadlock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 ma __P ((, *[])); 19 uge __P (()); 20 vsi_check __P (()); 22 cڡ * gogme ; 25 $ma ( gc , gv ) 26 gc ; 27 * gv []; 29 * ݏrg ; 30 td ; 31 DB_ENV * dbv ; 32 u_t32_t y ; 33 time_t now ; 34 u_lg cs , ucs ; 35 jeed , ch , exv , t , vbo ; 36 * home , * logfe , * sswd , * r , time_buf [ CTIME_BUFLEN ]; 38 i(( ogme = `__db_h ( gv [0])= NULL ) 39 ogme = gv [0]; 41 ++ ogme ; 43 i(( t = `vsi_check ()) != 0) 44 ( t ); 46 dbv = NULL ; 47 y = DB_LOCK_DEFAULT ; 48 home = logfe = sswd = NULL ; 49 cs = ucs = 0; 50 exv = vbo = 0; 51 ( ch = `gt ( gc , gv , "a:h:L:P:t:Vv")! EOF ) 52 ch ) { 54 ݏrg [0]) { 56 y = DB_LOCK_EXPIRE ; 59 y = DB_LOCK_MAXLOCKS ; 62 y = DB_LOCK_MINLOCKS ; 65 y = DB_LOCK_OLDEST ; 68 y = DB_LOCK_MAXWRITE ; 71 y = DB_LOCK_MINWRITE ; 74 y = DB_LOCK_YOUNGEST ; 77 ( `uge ()); 80 i( ݏrg [1] != '\0') 81 ( `uge ()); 84 home = ݏrg ; 87 logfe = ݏrg ; 90 sswd = `rdup ( ݏrg ); 91 `memt ( ݏrg , 0, ` (optarg)); 92 i( sswd = NULL ) { 93 `rtf ( dr , "%s: strdup: %s\n", 94 ogme , ` ( o )); 95 ( EXIT_FAILURE ); 99 i(( r = `rchr ( ݏrg , '.')! NULL ) { 100 * r ++ = '\0'; 101 i(* r !'\0' && `__db_gulg ( 102 NULL , ogme , r , 0, LONG_MAX , & ucs )) 103 ( EXIT_FAILURE ); 105 i(* ݏrg !'\0' && `__db_gulg ( 106 NULL , ogme , ݏrg , 0, LONG_MAX , & cs )) 107 ( EXIT_FAILURE ); 108 i( cs =0 && ucs == 0) 109 ( `uge ()); 113 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 114 ( EXIT_SUCCESS ); 116 vbo = 1; 120 ( `uge ()); 122 gc - td ; 123 gv + td ; 125 i( gc != 0) 126 ( `uge ()); 129 `__db_ut_sig (); 132 i( logfe ! NULL && `__db_ut_logt ( ogme ,ogfile)) 133 shutdown ; 139 i(( t = `db_v_ (& dbv , 0)) != 0) { 140 `rtf ( dr , 141 "%s: db_v_: %s\n", ogme , `db_ ( t )); 142 shutdown ; 145 dbv -> `t_rfe (dbv, dr ); 146 dbv -> `t_fx (dbv, ogme ); 148 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 149 sswd , DB_ENCRYPT_AES )) != 0) { 150 dbv -> `r (dbv, t , "set_passwd"); 151 shutdown ; 154 i( vbo ) { 155 () dbv -> `t_vbo (dbv, DB_VERB_DEADLOCK , 1); 156 () dbv -> `t_vbo (dbv, DB_VERB_WAITSFOR , 1); 160 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0) { 161 dbv -> `r (dbv, t , "open"); 162 shutdown ; 165 ! `__db_ut_ued ()) { 166 i( vbo ) { 167 () `time (& now ); 168 dbv -> `rx (dbenv, 169 "rug%.24s", `__db_ime (& now , time_buf )); 172 i(( t = 173 dbv -> `lock_de (dbv, 0, y , & jeed )) != 0) { 174 dbv -> `r (dbv, t , "DB_ENV->lock_detect"); 175 shutdown ; 177 i( vbo ) 178 dbv -> `rx (dbv, "jeed %docks", jeed ); 181 i( cs =0 && ucs == 0) 183 `__os_p ( dbv , cs , ucs ); 187 shutdown : exv = 1; 191 i( logfe ! NULL ) 192 () `move ( logfe ); 195 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 196 exv = 1; 197 `rtf ( dr , 198 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 201 i( sswd ! NULL ) 202 ` ( sswd ); 205 `__db_ut_signd (); 207 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 208 } } 211 $uge () 213 () `rtf ( dr , 214 "uge: %[-Vv] [-| m | | o | W | w | y]\n\t%s\n", ogme , 216 ( EXIT_FAILURE ); 217 } } 220 $vsi_check () 222 v_maj , v_m , v_tch ; 225 () `db_vsi (& v_maj , & v_m , & v_tch ); 226 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 227 `rtf ( dr , 229 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 230 v_maj , v_m ); 231 ( EXIT_FAILURE ); 234 } } @../db_dump/db_dump.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 15 #ide lt 16 cڡ gcyright [] = 20 db_ __P (( DB_ENV *, *, , u_t32_t , *)); 21 dump_sub __P (( DB_ENV *, DB *, *, , )); 22 ma __P ((, *[])); 23 show_subs __P (( DB *)); 24 uge __P (()); 25 vsi_check __P (()); 27 cڡ * gogme ; 30 $ma ( gc , gv ) 31 gc ; 32 * gv []; 34 * ݏrg ; 35 td ; 36 DB_ENV * dbv ; 37 DB * dbp ; 38 u_t32_t che ; 39 ch ; 40 exv , keyag , lag , nag , pag , ive ; 41 t , Rag , rag , size ; 42 * dt , * home , * sswd , * subme ; 44 i(( ogme = `__db_h ( gv [0])= NULL ) 45 ogme = gv [0]; 47 ++ ogme ; 49 i(( t = `vsi_check ()) != 0) 50 ( t ); 52 dbv = NULL ; 53 dbp = NULL ; 54 exv = lag = nag = pag = rag = Rag = 0; 55 keyag = 0; 56 che = MEGABYTE ; 57 ive = 0; 58 dt = home = sswd = subme = NULL ; 59 ( ch = `gt ( gc , gv , "d:f:h:klNpP:rRs:V")! EOF ) 60 ch ) { 62 dt = ݏrg ; 65 i( `eݒ ( ݏrg , "w", dout = NULL ) { 66 `rtf ( dr , "%s: %s:eopen: %s\n", 67 ogme , ݏrg , ` ( o )); 68 ( EXIT_FAILURE ); 72 home = ݏrg ; 75 keyag = 1; 78 lag = 1; 81 nag = 1; 84 sswd = `rdup ( ݏrg ); 85 `memt ( ݏrg , 0, ` (optarg)); 86 i( sswd = NULL ) { 87 `rtf ( dr , "%s: strdup: %s\n", 88 ogme , ` ( o )); 89 ( EXIT_FAILURE ); 93 pag = 1; 96 subme = ݏrg ; 99 Rag = 1; 103 rag = 1; 106 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 107 ( EXIT_SUCCESS ); 110 ( `uge ()); 112 gc - td ; 113 gv + td ; 115 i( gc != 1) 116 ( `uge ()); 118 i( dt ! NULL && pag ) { 119 `rtf ( dr , 121 ogme ); 122 ( EXIT_FAILURE ); 124 i( lag && subme ! NULL ) { 125 `rtf ( dr , 127 ogme ); 128 ( EXIT_FAILURE ); 131 i( keyag && rag ) { 132 `rtf ( dr , "%s: %s", 134 ogme ); 135 ( EXIT_FAILURE ); 138 i( subme ! NULL && rag ) { 139 `rtf ( dr , "%s: %s", 141 ogme ); 142 ( EXIT_FAILURE ); 146 `__db_ut_sig (); 152 y : i(( t = `db_v_ (& dbv , 0)) != 0) { 153 `rtf ( dr , 154 "%s: db_v_: %s\n", ogme , `db_ ( t )); 155 r ; 158 dbv -> `t_rfe (dbv, dr ); 159 dbv -> `t_fx (dbv, ogme ); 160 i( nag ) { 161 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 162 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 163 r ; 165 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 166 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 167 r ; 170 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 171 sswd , DB_ENCRYPT_AES )) != 0) { 172 dbv -> `r (dbv, t , "set_passwd"); 173 r ; 177 i( `db_ ( dbv , home , rag , che , & ive ) != 0) 178 r ; 181 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 182 dbv -> `r (dbv, t , "db_create"); 183 r ; 190 i( rag ) { 192 t = dbp -> `vify (dbp, gv [0], NULL , dout , 193 DB_SALVAGE | 194 ( Rag ? DB_AGGRESSIVE : 0) | 195 ( pag ? DB_PRINTABLE : 0)); 196 dbp = NULL ; 197 i( t != 0) 198 r ; 199 de ; 202 i(( t = dbp -> `ݒ (dbp, NULL , 203 gv [0], subme , DB_UNKNOWN , DB_RDONLY , 0)) != 0) { 204 dbp -> `r (dbp, t , "ݒ: %s", gv [0]); 205 r ; 207 i( ive != 0) { 208 i(( t = `__db_ut_che ( dbp , & che , & size )) != 0) 209 r ; 210 i( size ) { 211 () dbp -> `o (dbp, 0); 212 dbp = NULL ; 214 () dbv -> `o (dbenv, 0); 215 dbv = NULL ; 216 y ; 220 i( dt ! NULL ) { 221 i(( t = `__db_dume ( dbp , NULL , dt , NULL)) != 0) { 222 dbp -> `r (dbp, t , "__db_dume: %s", gv [0]); 223 r ; 225 } i( lag ) { 226 i( dbp -> `g_muɝ (dbp)) { 227 i( `show_subs ( dbp )) 228 r ; 230 dbp -> `rx (dbp, 231 "%s: d۠n cڏ muɝ dabas", gv [0]); 232 r ; 235 i( subme = NULL && dbp -> `g_muɝ (dbp)) { 236 i( `dump_sub ( dbv , dbp , gv [0], pag , keyag )) 237 r ; 239 i( dbp -> `dump (dbp, NULL , 240 __db__back , dout , pag , keyag )) 241 r ; 245 r : exv = 1; 247 de : i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 248 exv = 1; 249 dbv -> `r (dbv, t , "close"); 251 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 252 exv = 1; 253 `rtf ( dr , 254 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 257 i( sswd ! NULL ) 258 ` ( sswd ); 261 `__db_ut_signd (); 263 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 264 } } 271 $db_ ( dbv , home , is_lvage , che , is_iv ) 272 DB_ENV * dbv ; 273 * home ; 274 is_lvage ; 275 u_t32_t che ; 276 * is_iv ; 278 t ; 298 * is_iv = 0; 299 i(( t = dbv -> `ݒ (dbv, home , 300 DB_USE_ENVIRON | ( is_lvage ? DB_INIT_MPOOL : 0), 0)) == 0) 302 i( t = DB_VERSION_MISMATCH ) 303 r ; 315 * is_iv = 1; 316 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) == 0 && 317 ( t = dbv -> `ݒ (dbv, home , 318 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) == 0) 322 r : dbv -> `r (dbv, t , "DB_ENV->open"); 324 } } 331 $dump_sub ( dbv , _dbp , _me , pag , keyag ) 332 DB_ENV * dbv ; 333 DB * _dbp ; 334 * _me ; 335 pag , keyag ; 337 DB * dbp ; 338 DBC * db ; 339 DBT key , da ; 340 t ; 341 * subdb ; 347 i(( t = _dbp -> `curs լt_dbp, NULL , & db , 0)) != 0) { 348 dbv -> `r (dbv, t , "DB->cursor"); 352 `memt (& key , 0, (key)); 353 `memt (& da , 0, (data)); 354 ( t = db -> `g (db, & key , & da , 355 DB_IGNORE_LEASE | DB_NEXT )) == 0) { 357 i(( subdb = `mloc ( key . size + 1)= NULL ) { 358 dbv -> `r (dbv, ENOMEM , NULL ); 361 `memy ( subdb , key . da , key. size ); 362 subdb [ key . size ] = '\0'; 365 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 366 dbv -> `r (dbv, t , "db_create"); 367 ` ( subdb ); 370 i(( t = dbp -> `ݒ (dbp, NULL , 371 _me , subdb , DB_UNKNOWN , DB_RDONLY , 0)) != 0) 372 dbp -> `r (dbp, t , 373 "DB->ݒ: %s:%s", _me , subdb ); 374 i( t =0 && dbp -> `dump ( 375 dbp , subdb , __db__back , dout , pag , keyag )) 376 t = 1; 377 () dbp -> `o (dbp, 0); 378 ` ( subdb ); 379 i( t != 0) 382 i( t ! DB_NOTFOUND ) { 383 _dbp -> `r լt_dbp, t , "DBcursor->get"); 387 i(( t = db -> `o (dbcp)) != 0) { 388 _dbp -> `r լt_dbp, t , "DBcursor->close"); 393 } } 400 $show_subs ( dbp ) 401 DB * dbp ; 403 DBC * db ; 404 DBT key , da ; 405 t ; 411 i(( t = dbp -> `curs (dbp, NULL , & db , 0)) != 0) { 412 dbp -> `r (dbp, t , "DB->cursor"); 416 `memt (& key , 0, (key)); 417 `memt (& da , 0, (data)); 418 ( t = db -> `g (db, & key , & da , 419 DB_IGNORE_LEASE | DB_NEXT )) == 0) { 420 i(( t = dbp -> dbv -> `dbt ( 421 & key , 1, NULL , dout , __db__back , 0)) != 0) { 422 dbp -> `rx (dbp, NULL ); 426 i( t ! DB_NOTFOUND ) { 427 dbp -> `r (dbp, t , "DBcursor->get"); 431 i(( t = db -> `o (dbcp)) != 0) { 432 dbp -> `r (dbp, t , "DBcursor->close"); 436 } } 443 $uge () 445 () `rtf ( dr , "usage: %s [-klNprRV]\n\t%s\n", 446 ogme , 448 ( EXIT_FAILURE ); 449 } } 452 $vsi_check () 454 v_maj , v_m , v_tch ; 457 () `db_vsi (& v_maj , & v_m , & v_tch ); 458 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 459 `rtf ( dr , 461 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 462 v_maj , v_m ); 463 ( EXIT_FAILURE ); 466 } } @../db_dump185/db_dump185.c 9 #ide lt 10 cڡ gcyright [] = 14 ~<sys/tys.h > 16 ~<y.h > 17 ~<o.h > 18 ~<f.h > 19 ~<dio.h > 20 ~<dlib.h > 21 ~<rg.h > 23 ~<db.h > 26 shashhdr185 { 27 mmagic ; 28 mvsi ; 29 u_t32_t mld ; 30 mbsize ; 31 mbshi ; 32 mdsize ; 33 mssize ; 34 msshi ; 35 mov_pot ; 37 mϡ_d ; 38 mmax_buck ; 39 mhigh_mask ; 40 mlow_mask ; 42 mf ; 43 mnkeys ; 44 } tHASHHDR185 ; 45 shb185 { 46 HASHHDR185 mhdr ; 47 } tHTAB185 ; 50 shashhdr186 { 51 t32_t mmagic ; 52 t32_t mvsi ; 53 t32_t mld ; 54 t32_t mbsize ; 55 t32_t mbshi ; 56 t32_t mov_pot ; 57 t32_t mϡ_d ; 58 t32_t mmax_buck ; 59 t32_t mhigh_mask ; 60 t32_t mlow_mask ; 61 t32_t mf ; 62 t32_t mnkeys ; 63 t32_t mhdages ; 64 t32_t mh_chkey ; 65 #NCACHED 32 ) 66 t32_t mes [ NCACHED ]; 68 u_t16_t mbms [ NCACHED ]; 69 } tHASHHDR186 ; 70 shb186 { 71 * munud [2]; 72 HASHHDR186 mhdr ; 73 } tHTAB186 ; 75 s_gno { 76 u_t32_t mpgno ; 77 u_t16_t mdex ; 78 } tEPGNO ; 80 s_g { 81 * mge ; 82 u_t16_t mdex ; 83 } tEPG ; 85 s_curs { 86 EPGNO mpg ; 87 DBT mkey ; 88 u_t32_t mrcurs ; 90 #CURS_ACQUIRE 0x01 ) 91 #CURS_AFTER 0x02 ) 92 #CURS_BEFORE 0x04 ) 93 #CURS_INIT 0x08 ) 94 u_t8_t mags ; 95 } tCURSOR ; 98 s_b { 99 * mbt_mp ; 101 * mbt_dbp ; 103 EPG mbt_cur ; 104 * mbt_pd ; 106 CURSOR mbt_curs ; 108 EPGNO mbt_ack [50]; 109 EPGNO * mbt_ ; 111 DBT mbt_rkey ; 112 DBT mbt_rda ; 114 mbt_fd ; 116 u_t32_t mbt_ ; 117 u_t32_t mbt_psize ; 118 u_t16_t mbt_ovsize ; 119 mbt_ld ; 121 um { mNOT , mBACK , mFORWARD } mbt_d ; 122 EPGNO mbt_ϡ ; 125 (* mbt_cmp __P (( DBT *, DBT *)); 127 size_t (* bt_pfx __P (( DBT *, DBT *)); 129 (* mbt_ec __P (( _b *, u_t32_t )); 131 FILE * mbt_r ; 132 mbt_rfd ; 134 * mbt_cm ; 135 * mbt_sm ; 136 * mbt_em ; 137 size_t mbt_msize ; 139 u_t32_t mbt_ecs ; 140 size_t mbt_ ; 141 u_ch mbt_bv ; 147 #B_INMEM 0x00001 ) 148 #B_METADIRTY 0x00002 ) 149 #B_MODIFIED 0x00004 ) 150 #B_NEEDSWAP 0x00008 ) 151 #B_RDONLY 0x00010 ) 153 #B_NODUPS 0x00020 ) 154 #R_RECNO 0x00080 ) 156 #R_CLOSEFP 0x00040 ) 157 #R_EOF 0x00100 ) 158 #R_FIXLEN 0x00200 ) 159 #R_MEMMAPPED 0x00400 ) 160 #R_INMEM 0x00800 ) 161 #R_MODIFIED 0x01000 ) 162 #R_RDONLY 0x02000 ) 164 #B_DB_LOCK 0x04000 ) 165 #B_DB_SHMEM 0x08000 ) 166 #B_DB_TXN 0x10000 ) 167 u_t32_t mags ; 168 } tBTREE ; 170 db_b __P (( DB *, )); 171 db_hash __P (( DB *, )); 172 dbt_dump __P (( DBT *)); 173 dbt_t __P (( DBT *)); 174 ma __P ((, *[])); 175 uge __P (()); 178 $ma ( gc , gv ) 179 gc ; 180 * gv []; 182 * ݏrg ; 183 td ; 184 DB * dbp ; 185 DBT key , da ; 186 ch , pag , rv ; 188 pag = 0; 189 ( ch = `gt ( gc , gv , "f:p")! EOF ) 190 ch ) { 192 i( `eݒ ( ݏrg , "w", dout = NULL ) { 193 `rtf ( dr , "db_dump185: %s: %s\n", 194 ݏrg , ` ( o )); 195 ( EXIT_FAILURE ); 199 pag = 1; 203 ( `uge ()); 205 gc - td ; 206 gv + td ; 208 i( gc != 1) 209 ( `uge ()); 211 i(( dbp = `dbݒ ( gv [0], O_RDONLY , 0, DB_BTREE , NULL )) == NULL) { 212 i(( dbp = 213 `dbݒ ( gv [0], O_RDONLY , 0, DB_HASH , NULL )) == NULL) { 214 `rtf ( dr , 215 "db_dump185: %s: %s\n", gv [0], ` ( o )); 216 ( EXIT_FAILURE ); 218 `db_hash ( dbp , pag ); 220 `db_b ( dbp , pag ); 227 i( pag ) 228 !( rv = dbp -> `q (dbp, & key , & da , R_NEXT ))) { 229 `dbt_t (& key ); 230 `dbt_t (& da ); 233 !( rv = dbp -> `q (dbp, & key , & da , R_NEXT ))) { 234 `dbt_dump (& key ); 235 `dbt_dump (& da ); 238 i( rv == -1) { 239 `rtf ( dr , "db_dump185: seq: %s\n", ` ( o )); 240 ( EXIT_FAILURE ); 242 ( EXIT_SUCCESS ); 243 } } 250 $db_hash ( dbp , pag ) 251 DB * dbp ; 252 pag ; 254 HTAB185 * hash185p ; 255 HTAB186 * hash186p ; 257 `tf ("fm=%s\n", pag ? "print" : "bytevalue"); 258 `tf ("type=hash\n"); 261 hash185p = dbp -> ; 262 i( hash185p -> hdr . vsi > 2) { 263 hash186p = dbp -> ; 264 `tf ("h_f=%lu\n", ( u_lg ) hash186p -> hdr . f ); 265 i( hash186p -> hdr . ld != 0) 266 `tf ("db_ld=%lu\n", ( u_lg ) hash186p -> hdr . ld ); 267 `tf ("db_gesize=%lu\n", ( u_lg ) hash186p -> hdr . bsize ); 269 `tf ("h_f=%lu\n", ( u_lg ) hash185p -> hdr . f ); 270 i( hash185p -> hdr . ld != 0) 271 `tf ("db_ld=%lu\n", ( u_lg ) hash185p -> hdr . ld ); 272 `tf ("db_gesize=%lu\n", ( u_lg ) hash185p -> hdr . bsize ); 274 `tf ("HEADER=END\n"); 275 } } 282 $db_b ( dbp , pag ) 283 DB * dbp ; 284 pag ; 286 BTREE * b ; 288 b = dbp -> ; 290 `tf ("fm=%s\n", pag ? "print" : "bytevalue"); 291 `tf ("type=btree\n"); 292 #ifde NOT_AVAILABLE_IN_185 293 `tf ("bt_mkey=%lu\n", ( u_lg ) XXX ); 294 `tf ("bt_maxkey=%lu\n", ( u_lg ) XXX ); 296 i( b -> bt_ld != 0) 297 `tf ("db_ld=%lu\n", ( u_lg ) b -> bt_ld ); 298 `tf ("db_gesize=%lu\n", ( u_lg ) b -> bt_psize ); 299 i(!( b -> ags & B_NODUPS )) 300 `tf ("duplicates=1\n"); 301 `tf ("HEADER=END\n"); 302 } } 304 ghex [] = "0123456789abcdef"; 311 $dbt_dump ( db ) 312 DBT * db ; 314 size_t n ; 315 u_t8_t * p ; 317 n = db -> size , p = db-> da ;en--; ++p) 318 () `tf ("%c%c", 319 hex [(* p & 0xf0) >> 4], hex[*p & 0x0f]); 320 `tf ("\n"); 321 } } 328 $dbt_t ( db ) 329 DBT * db ; 331 size_t n ; 332 u_t8_t * p ; 334 n = db -> size , p = db-> da ;en--; ++p) 335 i( `irt (()* p )) { 336 i(* p == '\\') 337 () `tf ("\\"); 338 () `tf ("%c", * p ); 340 () `tf ("\\%c%c", 341 hex [(* p & 0xf0) >> 4], hex[*p & 0x0f]); 342 `tf ("\n"); 343 } } 350 $uge () 352 () `rtf ( dr , "usage: db_dump185 [-p] [-f file] db_file\n"); 353 ( EXIT_FAILURE ); 354 } } @../db_hotbackup/db_hotbackup.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/qam.h " 16 #ide lt 17 cڡ gcyright [] = 21 ewhich_ݒ { mOPEN_ORIGINAL , mOPEN_HOT_BACKUP }; 23 backup_d_n __P (( DB_ENV *, *, *, *, , )); 24 da_cy __P (( DB_ENV *, *, *, *, )); 25 v_ __P (( DB_ENV **, 26 *, **, ***, *, which_ݒ )); 27 ma __P ((, *[])); 28 ad_da_d __P (( DB_ENV *, *, *, *, , )); 29 ad_log_d __P (( DB_ENV *, *, *, *, *, , )); 30 uge __P (()); 31 vsi_check __P (()); 33 cڡ * gogme ; 36 $ma ( gc , gv ) 37 gc ; 38 * gv []; 40 * ݏrg ; 41 td ; 42 time_t now ; 43 DB_ENV * dbv ; 44 u_t da_t , da_xt ; 45 ch , checkpot , cy_m , db_cfig , exv ; 46 move_max , t , upde , vbo ; 47 * backup_d , ** da_d , ** d , * home , * log_d , * sswd ; 48 home_buf [ DB_MAXPATHLEN ], time_buf [ CTIME_BUFLEN ]; 60 `tbuf ( dout , NULL ); 62 i(( ogme = `__db_h ( gv [0])= NULL ) 63 ogme = gv [0]; 65 ++ ogme ; 67 i(( t = `vsi_check ()) != 0) 68 ( t ); 70 checkpot = db_cfig = da_t = 71 da_xt = exv = upde = vbo = 0; 72 da_d = NULL ; 73 backup_d = home = sswd = NULL ; 74 log_d = NULL ; 75 cy_m = move_max = 0; 76 ( ch = `gt ( gc , gv , "b:cDd:h:l:P:uVv")! EOF ) 77 ch ) { 79 backup_d = ݏrg ; 82 checkpot = 1; 85 db_cfig = 1; 92 i( da_d = NULL || da_xt > da_t - 2) { 93 da_t = data_cnt == 0 ? 20 : data_cnt * 2; 94 i(( da_d = `loc (data_dir, 95 da_t * (* da_d ))= NULL ) { 96 `rtf ( dr , "%s: %s\n", 97 ogme , ` ( o )); 98 ( EXIT_FAILURE ); 101 da_d [ da_xt ++] = ݏrg ; 104 home = ݏrg ; 107 log_d = ݏrg ; 110 sswd = `rdup ( ݏrg ); 111 `memt ( ݏrg , 0, ` (optarg)); 112 i( sswd = NULL ) { 113 `rtf ( dr , "%s: strdup: %s\n", 114 ogme , ` ( o )); 115 ( EXIT_FAILURE ); 119 upde = 1; 122 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 123 ( EXIT_SUCCESS ); 125 vbo = 1; 129 ( `uge ()); 131 gc - td ; 132 gv + td ; 134 i( gc != 0) 135 ( `uge ()); 138 i( da_d ! NULL ) { 139 da_d [ da_xt ] = NULL ; 144 i( checkpot == 1) { 145 `rtf ( dr , 146 "%s: cn scify -dnd -c\n", ogme ); 147 ( `uge ()); 151 i( db_cfig && ( da_d ! NULL || log_d != NULL)) { 152 `rtf ( dr , 153 "%s: cn scify -Dnd -d o-l\n", ogme ); 154 ( `uge ()); 158 `__db_ut_sig (); 167 i( home = NULL ) { 168 home = home_buf ; 169 i(( t = `__os_gv ( 170 NULL , "DB_HOME", & home , ( home_buf ))) != 0) { 171 `rtf ( dr , 173 ogme , `db_ ( t )); 174 ( EXIT_FAILURE ); 180 i( home = NULL ) { 181 `rtf ( dr , 182 "%s:sour dabanvmecifd\n", ogme ); 183 ( `uge ()); 185 i( backup_d = NULL ) { 186 `rtf ( dr , 187 "%s:؏rg backudey scifd\n", ogme ); 188 ( `uge ()); 191 i( vbo ) { 192 () `time (& now ); 193 `tf ("%s: hot backup startedt %s", 194 ogme , `__db_ime (& now , time_buf )); 198 i( `v_ (& dbv , home , 199 ( db_cfig || log_d ! NULL ) ? &log_dir : NULL, 200 db_cfig ? & da_d : NULL , 201 sswd , OPEN_ORIGINAL ) != 0) 202 shutdown ; 204 i( db_cfig && `__os_abh ( log_d )) { 205 `rtf ( dr , 207 ogme ); 208 shutdown ; 215 i( checkpot ) { 216 i( vbo ) 217 `tf ("%s: %s: f checkpot\n", ogme , home ); 218 i(( t = 219 dbv -> `txn_checkpot (dbv, 0, 0, DB_FORCE )) != 0) { 220 dbv -> `r (dbv, t , "DB_ENV->txn_checkpoint"); 221 shutdown ; 223 i(! upde ) { 224 i( vbo ) 225 `tf ("%s: %s:emove unnecessaryog files\n", 226 ogme , home ); 227 i(( t = dbv -> `log_chive (dbenv, 228 NULL , DB_ARCH_REMOVE )) != 0) { 229 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 230 shutdown ; 241 () `__os_mkd ( NULL , backup_d , `__db_omode ("rwx------")); 252 i( db_cfig && log_d ! NULL && 253 `backup_d_n ( 254 dbv , backup_d , log_d , & move_max , upde , vbo ) != 0) 255 shutdown ; 256 i( `backup_d_n ( dbv , 257 backup_d , NULL , & move_max , upde , vbo ) != 0) 258 shutdown ; 265 i(! upde ) { 266 i( `ad_da_d ( dbv , home , 267 backup_d , home , vbo , db_cfig ) != 0) 268 shutdown ; 269 i( da_d ! NULL ) 270 d = da_d ; *d ! NULL ; ++dir) { 276 i( db_cfig && `__os_abh (* d )) { 277 `rtf ( dr , 279 ogme , * d ); 280 shutdown ; 282 i( `ad_da_d ( dbv , home , 283 backup_d , * d , vbo , db_cfig ) != 0) 284 shutdown ; 295 i( `ad_log_d ( dbv , db_cfig ? home : NULL , backup_d , 296 log_d = NULL ? home :og_d, & cy_m , upde , vbo ) != 0) 297 shutdown ; 305 i( upde && move_max < cy_m && 306 !( move_max =0 && cy_m == 1)) { 307 `rtf ( dr , 309 ogme , move_max ); 310 `rtf ( dr , 312 ogme , cy_m ); 313 shutdown ; 317 i(( t = dbv -> `o (dbenv, 0)) != 0) { 318 `rtf ( dr , 319 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 320 dbv = NULL ; 321 shutdown ; 324 i( vbo ) 325 `tf ("%s: %s:un catastrophicecovery\n", 326 ogme , backup_d ); 327 i( `v_ ( 328 & dbv , backup_d , NULL , NULL, sswd , OPEN_HOT_BACKUP ) != 0) 329 shutdown ; 334 i( vbo ) 335 `tf ("%s: %s:emove unnecessaryog files\n", 336 ogme , backup_d ); 337 i(( t = 338 dbv -> `log_chive (dbv, NULL , DB_ARCH_REMOVE )) != 0) { 339 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 340 shutdown ; 344 shutdown : exv = 1; 346 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 347 exv = 1; 348 `rtf ( dr , 349 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 352 i( exv == 0) { 353 i( vbo ) { 354 () `time (& now ); 355 `tf ("%s: hot backup completedt %s", 356 ogme , `__db_ime (& now , time_buf )); 359 `rtf ( dr , "%s: HOT BACKUP FAILED!\n", ogme ); 363 `__db_ut_signd (); 365 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 367 } } 374 $v_ ( dbvp , home , log_dp , da_dp , sswd , which ) 375 DB_ENV ** dbvp ; 376 * home , ** log_dp , *** da_dp , * sswd ; 377 which_ݒ which ; 379 DB_ENV * dbv ; 380 t ; 382 * dbvp = NULL ; 387 i(( t = `db_v_ (& dbv , 0)) != 0) { 388 `rtf ( dr , 389 "%s: db_v_: %s\n", ogme , `db_ ( t )); 393 dbv -> `t_rfe (dbv, dr ); 394 `tbuf ( dr , NULL ); 395 dbv -> `t_fx (dbv, ogme ); 401 i( log_dp ! NULL && *log_dirp != NULL && 402 ( t = dbv -> `t_lg_d (dbv, * log_dp )) != 0) { 403 dbv -> `r (dbv, t , "DB_ENV->t_lg_d: %s", * log_dp ); 408 i( sswd ! NULL && 409 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 410 dbv -> `r (dbv, t , "DB_ENV->set_encrypt"); 414 which ) { 415 OPEN_ORIGINAL : 421 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 422 ( t = DB_VERSION_MISMATCH || 423 ( t = dbv -> `ݒ (dbv, home , DB_CREATE | 424 DB_INIT_LOG | DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON , 426 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 429 i( log_dp ! NULL && *log_dirp == NULL) 430 () dbv -> `g_lg_d (dbv, (cڡ **) log_dp ); 431 i( da_dp ! NULL && *data_dirp == NULL) 432 () dbv -> `g_da_ds ( 433 dbv , (cڡ ***) da_dp ); 435 OPEN_HOT_BACKUP : 442 i(( t = 443 dbv -> `t_chesize (dbenv, 0, 64 * 1024 * 10, 0)) != 0) { 444 dbv -> `r (dbenv, 445 t , "DB_ENV->t_chesize: %s", home ); 448 i(( t = dbv -> `ݒ (dbv, home , DB_CREATE | 449 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE | 450 DB_RECOVER_FATAL | DB_USE_ENVIRON , 0)) != 0) { 451 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 457 * dbvp = dbv ; 459 } } 466 $backup_d_n ( dbv , backup_d , log_d , move_maxp , upde , vbo ) 467 DB_ENV * dbv ; 468 * backup_d , * log_d ; 469 * move_maxp , upde , vbo ; 471 t , ft , t , v ; 472 ** mes , * d , buf [ DB_MAXPATHLEN ], th [DB_MAXPATHLEN]; 475 i( log_d ! NULL ) { 476 i(( size_t ) `tf ( buf , (buf), "%s%c%s", 477 backup_d , PATH_SEPARATOR [0] , log_d >( buf )) { 478 dbv -> `rx (dbenv, "%s%c%s:athooong", 479 backup_d , PATH_SEPARATOR [0] , log_d ); 482 d = buf ; 484 d = backup_d ; 487 i(( t = `__os_dli ( dbv , d , & mes , & ft )) != 0) { 488 i( log_d ! NULL && ! upde ) 490 dbv -> `r (dbv, t , "%s: deyd", d ); 493 t = ft ; --cnt >= 0;) { 497 i( `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) { 498 i( upde ) 502 v = `oi ( mes [ t ] + ( LFPREFIX ) - 1); 503 i(* move_maxp < v ) 504 * move_maxp = v ; 506 i(( size_t ) `tf ( th , (path), "%s%c%s", 507 d , PATH_SEPARATOR [0], mes [ t ]>( th )) { 508 dbv -> `rx (dbenv, "%s%c%s:athooong", 509 d , PATH_SEPARATOR [0], mes [ t ]); 512 i( vbo ) 513 `tf ("%s:emovg %s\n", ogme , th ); 514 i( `__os_uƚk ( dbv , th ) != 0) 518 `__os_d ( dbv , mes , ft ); 520 i( vbo && * move_maxp != 0) 521 `tf ("%s: highestumberedog fileemoved: %d\n", 522 ogme , * move_maxp ); 525 } } 532 $ad_da_d ( dbv , home , backup_d , d , vbo , db_cfig ) 533 DB_ENV * dbv ; 534 * home , * backup_d , * d ; 535 vbo , db_cfig ; 537 t , ft , t ; 538 * bd , ** mes ; 539 buf [ DB_MAXPATHLEN ], bbuf [DB_MAXPATHLEN]; 541 bd = backup_d ; 542 i( db_cfig && d ! home ) { 544 i(( size_t )( t = `tf ( bbuf , (bbuf), "%s%c%s%c", 545 backup_d , PATH_SEPARATOR [0], 546 d , PATH_SEPARATOR [0])>( buf )) { 547 dbv -> `rx (dbenv, "%s%c%s:athooong", 548 backup_d , PATH_SEPARATOR [0], d ); 551 bd = bbuf ; 554 i(( t = dbv -> `t_rmed_d ( 555 dbv , `__db_omode ("rwx------"), 0)) != 0 || 556 ( t = `__db_mkth ( dbv , bd )) != 0) { 557 dbv -> `r (dbv, t , "%s: cn ce", bd ); 561 bd [ t - 1] = '\0'; 564 i(( size_t ) `tf ( buf , (buf), 565 "%s%c%s", home , PATH_SEPARATOR [0], d >( buf )) { 566 dbv -> `rx (dbenv, "%s%c%s:athooong", 567 home , PATH_SEPARATOR [0], d ); 570 d = buf ; 573 i(( t = `__os_dli ( dbv , d , & mes , & ft )) != 0) { 574 dbv -> `r (dbv, t , "%s: deyd", d ); 577 t = ft ; --cnt >= 0;) { 582 i(! `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) 584 i(! `cmp ( mes [ t ], 585 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1) && 586 `cmp ( mes [ t ], 587 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX) - 1)) 593 i(! db_cfig && 594 ! `cmp ( mes [ t ], "DB_CONFIG", ("DB_CONFIG"))) 598 i( `da_cy ( dbv , mes [ t ], d , bd , vbo ) != 0) 602 `__os_d ( dbv , mes , ft ); 605 } } 614 $ad_log_d ( dbv , home , backup_d , log_d , cy_mp , upde , vbo ) 615 DB_ENV * dbv ; 616 * home , * backup_d , * log_d ; 617 * cy_mp , upde , vbo ; 619 u_t32_t aag ; 620 t , t , v ; 621 ** beg , ** mes , * backupd , * logd ; 622 om [ DB_MAXPATHLEN ], to [DB_MAXPATHLEN]; 624 i( home ! NULL && log_d != NULL) { 625 i(( size_t ) `tf ( om , (from), "%s%c%s", 626 home , PATH_SEPARATOR [0], log_d >( om )) { 627 dbv -> `rx (dbenv, "%s%c%s:athooong", 628 home , PATH_SEPARATOR [0], log_d ); 631 logd = `rdup ( om ); 632 i(( size_t )( t = `tf ( to , (to), 633 "%s%c%s%c", backup_d , PATH_SEPARATOR [0], 634 log_d , PATH_SEPARATOR [0])>( to )) { 635 dbv -> `rx (dbenv, "%s%c%s:athooong", 636 backup_d , PATH_SEPARATOR [0], log_d ); 639 backupd = `rdup ( to ); 642 i(( t = dbv -> `t_rmed_d ( 643 dbv , `__db_omode ("rwx------"), 0)) != 0 || 644 ( t = `__db_mkth ( dbv , backupd )) != 0) { 645 dbv -> `r (dbv, t , "%s: cn ce", backupd ); 649 backupd [ t - 1] = '\0'; 651 backupd = backup_d ; 652 logd = log_d ; 655 aga : aag = DB_ARCH_LOG ; 661 i( upde ) 662 aag = 0; 664 i(( t = dbv -> `log_chive (dbv, & mes , aag )) != 0) { 665 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 668 i( mes = NULL ) 669 de ; 670 beg = mes ; 671 ; * mes ! NULL ;ames++) { 673 v = `oi (* mes + ( LFPREFIX ) - 1); 674 i(* cy_mp =0 || *cy_m> v ) 675 * cy_mp = v ; 677 i(( size_t ) `tf ( om , (from), "%s%c%s", 678 logd , PATH_SEPARATOR [0], * mes >( om )) { 679 dbv -> `rx (dbenv, "%s%c%s:athooong", 680 logd , PATH_SEPARATOR [0], * mes ); 692 i( upde ) { 693 i(( size_t ) `tf ( to , (to), "%s%c%s", 694 backupd , PATH_SEPARATOR [0], * mes >( to )) { 695 dbv -> `rx (dbenv, "%s%c%s:athooong", 696 backupd , PATH_SEPARATOR [0], * mes ); 699 i( `__os_me ( dbv , om , to , 1) == 0) { 700 i( vbo ) 701 `tf ("%s: moving %so %s\n", 702 ogme , om , to ); 708 i( `da_cy ( dbv , * mes , logd , backupd , vbo ) != 0) 711 i( upde ) { 712 i( vbo ) 713 `tf ("%s:emovg %s\n", ogme , om ); 714 i(( t = `__os_uƚk ( dbv , om )) != 0) { 715 dbv -> `r (dbv, t , 716 "uƚk o%ed", om ); 723 ` ( beg ); 724 de : i( upde ) { 725 upde = 0; 726 aga ; 729 i( vbo && * cy_mp != 0) 730 `tf ("%s:owestumberedog file copied: %d\n", 731 ogme , * cy_mp ); 732 i( logd ! log_d ) 733 ` ( logd ); 734 i( backupd ! backup_d ) 735 ` ( backupd ); 738 } } 745 $da_cy ( dbv , fe , om_d , to_d , vbo ) 746 DB_ENV * dbv ; 747 * fe , * om_d , * to_d ; 748 vbo ; 750 DB_FH * rfhp , * wfhp ; 751 size_t , nw ; 752 t ; 753 * buf ; 755 t = 0; 756 rfhp = wfhp = NULL ; 758 i( vbo ) 759 `tf ("%s: cyg %s%c%t%s%c%s\n", ogme , om_d , 760 PATH_SEPARATOR [0], fe , to_d , PATH_SEPARATOR[0], file); 772 i(( buf = `mloc ( MEGABYTE )= NULL ) { 773 dbv -> `r (dbenv, 774 o , "%lu buf㸮loti", ( u_lg ) MEGABYTE ); 779 i( `tf ( buf , MEGABYTE , "%s%c%s", 780 om_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 781 dbv -> `rx (dbenv, 782 "%s%c%s:holg", om_d , PATH_SEPARATOR [0], fe ); 783 r ; 785 i(( t = `__os_ݒ ( dbv , buf , 0, DB_OSO_RDONLY , 0, & rfhp )) != 0) { 786 dbv -> `r (dbv, t , "%s", buf ); 787 r ; 791 i( `tf ( buf , MEGABYTE , "%s%c%s", 792 to_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 793 dbv -> `rx (dbenv, 794 "%s%c%s:holg", to_d , PATH_SEPARATOR [0], fe ); 795 r ; 797 i(( t = `__os_ݒ ( dbv , buf , 0, 798 DB_OSO_CREATE | DB_OSO_TRUNC , `__db_omode ( OWNER_RW ), & wfhp )) != 0) { 799 dbv -> `r (dbv, t , "%s", buf ); 800 r ; 804 ( t = `__os_ad ( dbv , rfhp , buf , MEGABYTE , & )) == 0 && 805 > 0) 806 i(( t = `__os_wre ( dbv , wfhp , buf , , & nw )) != 0) 810 r : t = 1; 812 i( buf ! NULL ) 813 ` ( buf ); 815 i( rfhp ! NULL && `__os_ohd ( dbv ,fhp) != 0) 816 t = 1; 819 i( wfhp ! NULL ) { 820 i( `__os_fsync ( dbv , wfhp ) != 0) 821 t = 1; 822 i( `__os_ohd ( dbv , wfhp ) != 0) 823 t = 1; 825 ( t ); 826 } } 829 $uge () 831 () `rtf ( dr , "uge: %[-cDuVv]\n\t%s\n", ogme , 833 ( EXIT_FAILURE ); 834 } } 837 $vsi_check () 839 v_maj , v_m , v_tch ; 842 () `db_vsi (& v_maj , & v_m , & v_tch ); 843 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 844 `rtf ( dr , 846 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 847 v_maj , v_m ); 848 ( EXIT_FAILURE ); 851 } } @../db_load/db_load.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 15 #ide lt 16 cڡ gcyright [] = 21 cڡ * mogme ; 22 * mhdrbuf ; 23 u_lg mlo ; 24 u_lg migle ; 25 mdoda ; 26 mdofe ; 27 mvsi ; 28 * mhome ; 29 * msswd ; 30 mive ; 31 u_t32_t mche ; 32 } tLDG ; 34 badd __P (( DB_ENV *)); 35 badnum __P (( DB_ENV *)); 36 cfigu __P (( DB_ENV *, DB *, **, **, *)); 37 cvb __P (( DB_ENV *, *, **)); 38 db_ __P (( DB_ENV *, *, u_t32_t , *)); 39 dbt_rdump __P (( DB_ENV *, DBT *)); 40 dbt_rt __P (( DB_ENV *, DBT *)); 41 dbt_eo __P (( DB_ENV *, DBT *, )); 42 dbt_to_o __P (( DB_ENV *, DBT *, db_o_t *)); 43 v_ __P (( DB_ENV **, LDG *)); 44 ld __P (( DB_ENV *, *, DBTYPE , **, u_t , LDG *, *)); 45 ma __P ((, *[])); 46 rhd __P (( DB_ENV *, DB *, DBTYPE *, **, *, *)); 47 uge __P (()); 48 vsi_check __P (()); 50 cڡ * gogme ; 52 #G ( f (( LDG *) dbv -> p_ive )-> ) f 55 #LDF_NOHEADER 0x01 ) 56 #LDF_NOOVERWRITE 0x02 ) 57 #LDF_PASSWORD 0x04 ) 60 $ma ( gc , gv ) 61 gc ; 62 * gv []; 64 um { NOTSET , FILEID_RESET , LSN_RESET , STANDARD_LOAD } mode ; 65 * ݏrg ; 66 td ; 67 DBTYPE dbty ; 68 DB_ENV * dbv ; 69 LDG ldg ; 70 u_t ldf ; 71 ch , exied , exv , t ; 72 ** i , ** p ; 74 i(( ogme = `__db_h ( gv [0])= NULL ) 75 ogme = gv [0]; 77 ++ ogme ; 79 i(( t = `vsi_check ()) != 0) 80 ( t ); 82 ldg . ogme =rogname; 83 ldg . lo = 0; 84 ldg . doda =dg. dofe = 0; 85 ldg . vsi = 1; 86 ldg . che = MEGABYTE ; 87 ldg . hdrbuf = NULL ; 88 ldg . home = NULL ; 89 ldg . sswd = NULL ; 91 mode = NOTSET ; 92 ldf = 0; 93 exv = exied = 0; 94 dbty = DB_UNKNOWN ; 97 i(( p = i = 98 (**) `oc (( size_t ) gc + 1, (*))= NULL ) { 99 `rtf ( dr , "%s: %s\n", ldg . ogme , ` ( ENOMEM )); 100 ( EXIT_FAILURE ); 110 ( ch = `gt ( gc , gv , "c:f:h:nP:r:Tt:V")! EOF ) 111 ch ) { 113 i( mode ! NOTSET && mod! STANDARD_LOAD ) 114 ( `uge ()); 115 mode = STANDARD_LOAD ; 117 * p ++ = ݏrg ; 120 i( mode ! NOTSET && mod! STANDARD_LOAD ) 121 ( `uge ()); 122 mode = STANDARD_LOAD ; 124 i( `eݒ ( ݏrg , "r", d = NULL ) { 125 `rtf ( dr , "%s: %s:eopen: %s\n", 126 ldg . ogme , ݏrg , ` ( o )); 127 ( EXIT_FAILURE ); 131 ldg . home = ݏrg ; 134 i( mode ! NOTSET && mod! STANDARD_LOAD ) 135 ( `uge ()); 136 mode = STANDARD_LOAD ; 138 ldf | LDF_NOOVERWRITE ; 141 ldg . sswd = `rdup ( ݏrg ); 142 `memt ( ݏrg , 0, ` (optarg)); 143 i( ldg . sswd = NULL ) { 144 `rtf ( dr , "%s: strdup: %s\n", 145 ldg . ogme , ` ( o )); 146 ( EXIT_FAILURE ); 148 ldf | LDF_PASSWORD ; 151 i( mode = STANDARD_LOAD ) 152 ( `uge ()); 153 i( `rcmp ( ݏrg , "lsn") == 0) 154 mode = LSN_RESET ; 155 i( `rcmp ( ݏrg , "fileid") == 0) 156 mode = FILEID_RESET ; 158 ( `uge ()); 161 i( mode ! NOTSET && mod! STANDARD_LOAD ) 162 ( `uge ()); 163 mode = STANDARD_LOAD ; 165 ldf | LDF_NOHEADER ; 168 i( mode ! NOTSET && mod! STANDARD_LOAD ) 169 ( `uge ()); 170 mode = STANDARD_LOAD ; 172 i( `rcmp ( ݏrg , "btree") == 0) { 173 dbty = DB_BTREE ; 176 i( `rcmp ( ݏrg , "hash") == 0) { 177 dbty = DB_HASH ; 180 i( `rcmp ( ݏrg , "recno") == 0) { 181 dbty = DB_RECNO ; 184 i( `rcmp ( ݏrg , "queue") == 0) { 185 dbty = DB_QUEUE ; 188 ( `uge ()); 190 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 191 ( EXIT_SUCCESS ); 194 ( `uge ()); 196 gc - td ; 197 gv + td ; 199 i( gc != 1) 200 ( `uge ()); 203 `__db_ut_sig (); 209 i( `v_ (& dbv , & ldg ) != 0) 210 shutdown ; 213 mode ) { 214 FILEID_RESET : 215 exv = dbv -> `feid_t ( 216 dbv , gv [0], ldf & LDF_PASSWORD ? DB_ENCRYPT : 0); 218 LSN_RESET : 219 exv = dbv -> `l_t ( 220 dbv , gv [0], ldf & LDF_PASSWORD ? DB_ENCRYPT : 0); 222 NOTSET : 223 STANDARD_LOAD : 224 ! ldg . dofe ) 225 i( `ld ( dbv , gv [0], dbty , i , ldf , 226 & ldg , & exied ) != 0) 227 shutdown ; 232 shutdown : exv = 1; 234 i(( t = dbv -> `o (dbenv, 0)) != 0) { 235 exv = 1; 236 `rtf ( dr , 237 "%s: dbv->o: %s\n", ldg . ogme , `db_ ( t )); 241 `__db_ut_signd (); 242 ` ( i ); 243 i( ldg . sswd ! NULL ) 244 ` ( ldg . sswd ); 253 ( exv =0 ? ( exied == 0 ? 0 : 1) : 2); 254 } } 261 $ld ( dbv , me , gty , i , ags , ldg , exiedp ) 262 DB_ENV * dbv ; 263 * me , ** i ; 264 DBTYPE gty ; 265 u_t ags ; 266 LDG * ldg ; 267 * exiedp ; 269 DB * dbp ; 270 DBT key , rkey , da , * adp , * wr ; 271 DBTYPE dbty ; 272 DB_TXN * xn , * txn ; 273 db_o_t o , deo ; 274 u_t32_t put_ags ; 275 ascii_o , checkt , hexkeys , keyag , keys , size , t , rv ; 276 * subdb ; 278 put_ags = `LF_ISSET ( LDF_NOOVERWRITE ? DB_NOOVERWRITE : 0; 279 `G ( doda ) = 0; 281 subdb = NULL ; 282 xn = txn = NULL ; 283 `memt (& key , 0, ( DBT )); 284 `memt (& da , 0, ( DBT )); 285 `memt (& rkey , 0, ( DBT )); 287 y_db : 288 dbty = DB_UNKNOWN ; 289 keys = -1; 290 hexkeys = -1; 291 keyag = -1; 294 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 295 dbv -> `r (dbv, t , "db_create"); 296 r ; 300 i( `LF_ISSET ( LDF_NOHEADER )) { 301 checkt = 1; 302 dbty = gty ; 304 i( `rhd ( dbv , 305 dbp , & dbty , & subdb , & checkt , & keys ) != 0) 306 r ; 307 i( `G ( dofe )) 308 de ; 316 i( `cfigu ( dbv , dbp , i , & subdb , & keyag )) 317 r ; 319 i( keys != 1) { 320 i( keyag == 1) { 321 dbp -> `r (dbp, EINVAL , "No keys specified in file"); 322 r ; 325 i( keyag == 0) { 326 dbp -> `r (dbp, EINVAL , "Keys specified in file"); 327 r ; 330 keyag = 1; 332 i( dbty = DB_BTREE || dbty = DB_HASH ) { 333 i( keyag == 0) 334 dbp -> `r (dbp, 335 EINVAL , "Btreend Hash must specify keys"); 337 keyag = 1; 340 i( gty ! DB_UNKNOWN ) { 342 i( dbty = DB_RECNO || dbty = DB_QUEUE ) 343 i( keyag !1 && gty ! DB_RECNO && 344 gty ! DB_QUEUE ) { 345 dbv -> `rx (dbenv, 347 r ; 349 dbty = gty ; 352 i( dbty = DB_UNKNOWN ) { 353 dbv -> `rx (dbenv, "no databaseype specified"); 354 r ; 357 i( keyag == -1) 358 keyag = 0; 368 hexkeys = ( `G ( vsi >3 && keyag =1 && checkt == 0); 370 i( keyag =1 && ( dbty = DB_RECNO || dbty = DB_QUEUE )) 371 ascii_o = 1; 373 ascii_o = 0; 376 i( `LF_ISSET ( LDF_PASSWORD ) && 377 ( t = dbp -> `t_ags (dbp, DB_ENCRYPT )) != 0) { 378 dbp -> `r (dbp, t , "DB->set_flags: DB_ENCRYPT"); 379 r ; 383 S iti - ecific b comris hash funis he . 384 F exame : 386 i(( t = dbp -> `t_bt_com (dbp, lol_comris_func )) != 0) { 387 dbp -> `r (dbp, t , "DB->set_bt_compare"); 388 r ; 390 i(( t = dbp -> `t_h_hash (dbp, lol_hash_func )) != 0) { 391 dbp -> `r (dbp, t , "DB->set_h_hash"); 392 r ; 397 i(( t = dbp -> `ݒ (dbp, NULL , me , subdb , dbty , 398 DB_CREATE | ( `TXN_ON ( dbv ? DB_AUTO_COMMIT : 0), 399 `__db_omode ("rw-rw-rw-"))) != 0) { 400 dbp -> `r (dbp, t , "DB->ݒ: %s", me ); 401 r ; 403 i( ldg -> ive != 0) { 404 i(( t = `__db_ut_che ( dbp , & ldg -> che , & size )) != 0) 405 r ; 406 i( size ) { 407 i(( t = dbp -> `o (dbp, 0)) != 0) 408 r ; 409 dbp = NULL ; 410 i(( t = dbv -> `o (dbenv, 0)) != 0) 411 r ; 412 i(( t = `v_ (& dbv , ldg )) != 0) 413 r ; 414 y_db ; 419 adp = wr = & key ; 420 i( dbty = DB_RECNO || dbty = DB_QUEUE ) { 421 key . size = ( o ); 422 i( keyag ) { 423 key . da = & deo ; 424 i( checkt ) { 425 adp = & rkey ; 426 key_da ; 429 key . da = & o ; 431 key_da : i(( adp -> da = `mloc ԗdp-> un = 1024)= NULL ) { 432 dbv -> `r (dbv, ENOMEM , NULL ); 433 r ; 435 i(( da .d `mloc (da. un = 1024)= NULL ) { 436 dbv -> `r (dbv, ENOMEM , NULL ); 437 r ; 440 i( `TXN_ON ( dbv ) && 441 ( t = dbv -> `txn_beg (dbv, NULL , & txn , 0)) != 0) 442 r ; 445 o = 1; ! `__db_ut_ued (); ++recno) { 446 i(! keyag ) { 447 i( checkt ) { 448 i( `dbt_rt ( dbv , & da )) 449 r ; 451 i( `dbt_rdump ( dbv , & da )) 452 r ; 455 i( checkt ) { 456 i( `dbt_rt ( dbv , adp )) 457 r ; 458 i( ascii_o && 459 `dbt_to_o ( dbv , adp , & deo ) != 0) 460 r ; 462 i(! `G ( doda && `dbt_rt ( dbv , & da )) 463 odd_cou ; 465 i( ascii_o ) { 466 i( `dbt_eo ( dbv , adp , hexkeys )) 467 r ; 469 i( `dbt_rdump ( dbv , adp )) 470 r ; 472 i(! `G ( doda && `dbt_rdump ( dbv , & da )) { 473 odd_cou : dbv -> `rx (dbenv, 475 r ; 479 i( `G ( doda )) 481 y : i( txn ! NULL ) 482 i(( t = dbv -> `txn_beg (dbv, txn , & xn , 0)) != 0) 483 r ; 484 t = dbp -> `put (dbp, xn , wr , & da , put_ags )) { 486 i( xn ! NULL ) { 487 i(( t = 488 xn -> `comm (xn, DB_TXN_NOSYNC )) != 0) 489 r ; 490 xn = NULL ; 493 DB_KEYEXIST : 494 * exiedp = 1; 495 dbv -> `rx (dbenv, 497 me , 498 ! keyag ? o :ecno * 2 - 1); 500 () dbv -> `dbt (& key , 501 checkt , 0, dr , __db__back , 0); 503 DB_LOCK_DEADLOCK : 505 i( xn ! NULL ) { 506 i(( t = xn -> `abt (ctxn)) != 0) 507 r ; 508 xn = NULL ; 509 y ; 513 dbv -> `r (dbv, t , NULL ); 514 i( xn ! NULL ) { 515 () xn -> `abt (ctxn); 516 xn = NULL ; 518 r ; 520 i( xn ! NULL ) { 521 i(( t = xn -> `abt (ctxn)) != 0) 522 r ; 523 xn = NULL ; 526 de : rv = 0; 527 `DB_ASSERT ( dbv , xn = NULL ); 528 i( txn ! NULL && ( t =xn-> `comm (txn, 0)) != 0) { 529 txn = NULL ; 530 r ; 534 r : rv = 1; 535 `DB_ASSERT ( dbv , xn = NULL ); 536 i( txn ! NULL ) 537 () txn -> `abt (txn); 541 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 542 dbv -> `r (dbv, t , "DB->close"); 543 rv = 1; 546 i( `G ( hdrbuf ! NULL ) 547 ` ( `G ( hdrbuf )); 548 `G ( hdrbuf NULL ; 550 i( subdb ! NULL ) 551 ` ( subdb ); 552 i( dbty ! DB_RECNO && dbty ! DB_QUEUE && key . da ! NULL ) 553 ` ( key . da ); 554 i( rkey . da ! NULL ) 555 ` ( rkey . da ); 556 ` ( da .data); 558 ( rv ); 559 } } 566 $v_ ( dbvp , ldg ) 567 DB_ENV ** dbvp ; 568 LDG * ldg ; 570 DB_ENV * dbv ; 571 t ; 573 i(( t = `db_v_ ( dbvp , 0)) != 0) { 574 `rtf ( dr , 575 "%s: db_v_: %s\n", ldg -> ogme , `db_ ( t )); 576 ( t ); 578 dbv = * dbvp ; 579 dbv -> `t_rfe (dbv, dr ); 580 dbv -> `t_fx (dbv, ldg -> ogme ); 581 i( ldg -> sswd ! NULL && ( t = dbv -> `t_y (dbenv, 582 ldg -> sswd , DB_ENCRYPT_AES )) != 0) { 583 dbv -> `r (dbv, t , "set_passwd"); 584 ( t ); 586 i(( t = `db_ ( dbv , ldg -> home ,dg-> che , &ldg-> ive )) != 0) 587 ( t ); 588 dbv -> p_ive = ldg ; 591 } } 598 $db_ ( dbv , home , che , is_ive ) 599 DB_ENV * dbv ; 600 * home ; 601 u_t32_t che ; 602 * is_ive ; 604 u_t32_t ags ; 605 t ; 607 * is_ive = 0; 609 ags = DB_USE_ENVIRON | 610 DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN ; 611 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 613 i( t = DB_VERSION_MISMATCH ) 614 r ; 628 `LF_CLR ( DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN ); 629 `LF_SET ( DB_CREATE | DB_PRIVATE ); 630 * is_ive = 1; 631 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 632 dbv -> `r (dbv, t , "set_cachesize"); 635 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 639 r : dbv -> `r (dbv, t , "DB_ENV->open"); 641 } } 643 #FLAG ( me , vue , keywd , ag ) \ 644 i( `rcmp ( me , keywd ) == 0) { \ 645 * vue ) { \ 647 i(( t = dbp -> `t_ags (dbp, ag )) != 0) { \ 648 dbp -> `r (dbp, t , "%s: set_flags: %s", \ 649 `G ( ogme ), me ); \ 650 r ; \ 656 `badnum ( dbv ); \ 657 r ; \ 660 } ) 661 #NUMBER ( me , vue , keywd , func , t ) \ 662 i( `rcmp ( me , keywd ) == 0) { \ 663 i(( t = `__db_glg ( dbv , \ 664 NULL , vue , 0, LONG_MAX , & v )) != 0 || \ 665 ( t = dbp -> `func (dbp, ( t ) v )) != 0) \ 666 m ; \ 668 } ) 669 #STRING ( me , vue , keywd , func ) \ 670 i( `rcmp ( me , keywd ) == 0) { \ 671 i(( t = dbp -> `func (dbp, vue [0])) != 0) \ 672 m ; \ 674 } ) 681 #CONFIGURATION_LIST_COMPARE \ 682 `NUMBER ( me , vue , "bt_mkey", t_bt_mkey , u_t32_t ); \ 683 `FLAG ( me , vue , "chksum", DB_CHKSUM ); \ 684 `NUMBER ( me , vue , "db_ld", t_ld , ); \ 685 `NUMBER ( me , vue , "db_gesize", t_gesize , u_t32_t ); \ 686 `FLAG ( me , vue , "duis", DB_DUP ); \ 687 `FLAG ( me , vue , "dupst", DB_DUPSORT ); \ 688 `NUMBER ( me , vue , "exsize", t_q_exsize , u_t32_t ); \ 689 `NUMBER ( me , vue , "h_f", t_h_f , u_t32_t ); \ 690 `NUMBER ( me , vue , "h_m", t_h_m , u_t32_t ); \ 691 `NUMBER ( me , vue , "_n", t__n , u_t32_t ); \ 692 `STRING ( me , vue , "_d", t__d ); \ 693 `FLAG ( me , vue , "um", DB_RECNUM ); \ 694 `FLAG ( me , vue , "numb", DB_RENUMBER ) ) 701 $cfigu ( dbv , dbp , p , subdbp , key ) 702 DB_ENV * dbv ; 703 DB * dbp ; 704 ** p , ** subdbp ; 705 * key ; 707 v ; 708 t , vech ; 709 * me , * vue ; 711 ; ( me = * p ! NULL ; *-- vue = vech , ++clp) { 712 i(( vue = `rchr ( me , '=')= NULL ) { 713 dbp -> `rx (dbp, 717 vech = * vue ; 718 * vue ++ = '\0'; 720 i( `rcmp ( me , "database") == 0 || 721 `rcmp ( me , "subdatabase") == 0) { 722 i(* subdbp ! NULL ) 723 ` (* subdbp ); 724 i((* subdbp = `rdup ( vue )= NULL ) { 725 dbp -> `r (dbp, ENOMEM , NULL ); 730 i( `rcmp ( me , "keys") == 0) { 731 i( `rcmp ( vue , "1") == 0) 732 * key = 1; 733 i( `rcmp ( vue , "0") == 0) 734 * key = 0; 736 `badnum ( dbv ); 742 CONFIGURATION_LIST_COMPARE ; 744 dbp -> `rx (dbp, 745 "unknowcommd-lcfiguti keywd \"%s\"", me ); 750 m : 751 dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 752 r : (1); 753 } } 760 $rhd ( dbv , dbp , dbtyp , subdbp , check , key ) 761 DB_ENV * dbv ; 762 DB * dbp ; 763 DBTYPE * dbtyp ; 764 ** subdbp ; 765 * check , * key ; 767 size_t bu , l , t ; 768 v ; 769 ch , f , hdr , t ; 770 * buf , * me , * p , * vue ; 772 * dbtyp = DB_UNKNOWN ; 773 * check = 0; 774 me = NULL ; 780 bu = 4096; 781 i( `G ( hdrbuf = NULL ) { 782 hdr = 0; 783 i(( buf = `mloc ( bu )= NULL ) 784 memr ; 785 `G ( hdrbuf buf ; 786 `G ( igle G( lo ); 788 hdr = 1; 789 buf = `G ( hdrbuf ); 790 `G ( lo G( igle ); 793 t = 0; 794 f = 1;; first = 0) { 795 ++ `G ( lo ); 798 l = 0; 799 buf = & `G ( hdrbuf )[ t ]; 800 i( hdr == 0) { 802 i(( ch = `gch ()= EOF ) { 803 i(! f || ` ( d )) 804 badfmt ; 805 `G ( dofe ) = 1; 812 i( l + t = bu ) { 813 `G ( hdrbuf ) = 814 `loc ( `G ( hdrbuf ), bu *= 2); 815 i( `G ( hdrbuf = NULL ) 816 memr ; 817 buf = & `G ( hdrbuf )[ t ]; 820 i( ch == '\n') 823 buf [ l ++] = ch ; 825 i( `G ( dofe ) == 1) 827 buf [ l ++] = '\0'; 829 l = ` ( buf ) + 1; 830 t + l ; 832 i( me ! NULL ) { 833 ` ( me ); 834 me = NULL ; 837 i(( me = `rdup ( buf )= NULL ) 838 memr ; 839 i(( p = `rchr ( me , '=')= NULL ) 840 badfmt ; 841 * p ++ = '\0'; 843 vue = p --; 845 i( me [0] == '\0') 846 badfmt ; 855 i( `rcmp ( me , "database") == 0 || 856 `rcmp ( me , "subdatabase") == 0) { 857 i(( t = `cvb ( dbv , vue , subdbp )) != 0) { 858 dbp -> `r (dbp, t , "erroreading dbame"); 859 r ; 865 i( vue [0] == '\0') 866 badfmt ; 868 i( `rcmp ( me , "HEADER") == 0) 870 i( `rcmp ( me , "VERSION") == 0) { 875 `G ( vsi `oi ( vue ); 877 i( `G ( vsi ) > 3) { 878 dbp -> `rx (dbp, 880 `G ( lo ), G( vsi )); 881 r ; 885 i( `rcmp ( me , "format") == 0) { 886 i( `rcmp ( vue , "bytevalue") == 0) { 887 * check = 0; 890 i( `rcmp ( vue , "print") == 0) { 891 * check = 1; 894 badfmt ; 896 i( `rcmp ( me , "type") == 0) { 897 i( `rcmp ( vue , "btree") == 0) { 898 * dbtyp = DB_BTREE ; 901 i( `rcmp ( vue , "hash") == 0) { 902 * dbtyp = DB_HASH ; 905 i( `rcmp ( vue , "recno") == 0) { 906 * dbtyp = DB_RECNO ; 909 i( `rcmp ( vue , "queue") == 0) { 910 * dbtyp = DB_QUEUE ; 913 dbp -> `rx (dbp, "l%lu: unknowty", `G ( lo )); 914 r ; 916 i( `rcmp ( me , "keys") == 0) { 917 i( `rcmp ( vue , "1") == 0) 918 * key = 1; 919 i( `rcmp ( vue , "0") == 0) 920 * key = 0; 922 `badnum ( dbv ); 923 r ; 928 CONFIGURATION_LIST_COMPARE ; 930 dbp -> `rx (dbp, 932 me ); 933 r ; 935 t = 0; 938 m : dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 939 t = 1; 942 badfmt : dbp -> `rx (dbp, "l%lu: uxed fm", `G ( lo )); 943 t = 1; 946 memr : dbp -> `rx (dbp, "unableollocate memory"); 947 r : t = 1; 949 i( me ! NULL ) 950 ` ( me ); 951 ( t ); 952 } } 961 #DIGITIZE ( e , v1 , v2 ) { \ 962 _v1 , _v2 ; \ 963 _v1 = ( v1 ); \ 964 _v2 = ( v2 ); \ 965 i(( _v1 > 'f' || ( _v2 ) > 'f') \ 966 ( `badd ( dbv )); \ 967 ( e ) = \ 968 (( _v1 ) == '0' ? 0 : \ 969 (( _v1 ) == '1' ? 1 : \ 970 (( _v1 ) == '2' ? 2 : \ 971 (( _v1 ) == '3' ? 3 : \ 972 (( _v1 ) == '4' ? 4 : \ 973 (( _v1 ) == '5' ? 5 : \ 974 (( _v1 ) == '6' ? 6 : \ 975 (( _v1 ) == '7' ? 7 : \ 976 (( _v1 ) == '8' ? 8 : \ 977 (( _v1 ) == '9' ? 9 : \ 978 (( _v1 ) == 'a' ? 10 : \ 979 (( _v1 ) == 'b' ? 11 : \ 980 (( _v1 ) == 'c' ? 12 : \ 981 (( _v1 ) == 'd' ? 13 : \ 982 (( _v1 ) == 'e' ? 14 : 15))))))))))))))) << 4 | \ 983 (( _v2 ) == '0' ? 0 : \ 984 (( _v2 ) == '1' ? 1 : \ 985 (( _v2 ) == '2' ? 2 : \ 986 (( _v2 ) == '3' ? 3 : \ 987 (( _v2 ) == '4' ? 4 : \ 988 (( _v2 ) == '5' ? 5 : \ 989 (( _v2 ) == '6' ? 6 : \ 990 (( _v2 ) == '7' ? 7 : \ 991 (( _v2 ) == '8' ? 8 : \ 992 (( _v2 ) == '9' ? 9 : \ 993 (( _v2 ) == 'a' ? 10 : \ 994 (( _v2 ) == 'b' ? 11 : \ 995 (( _v2 ) == 'c' ? 12 : \ 996 (( _v2 ) == 'd' ? 13 : \ 997 (( _v2 ) == 'e' ? 14 : 15))))))))))))))); \ 998 } ) 1014 $cvb ( dbv , r , out ) 1015 DB_ENV * dbv ; 1016 * r , ** out ; 1018 * outr ; 1027 i(( outr = `mloc ( ` ( r + 1)= NULL ) 1028 ( ENOMEM ); 1030 * out = outr ; 1032 ; * r != '\0'; instr++) 1033 i(* r == '\\') { 1034 i(*++ r == '\\') { 1035 * outr ++ = '\\'; 1038 `DIGITIZE (* outr ++, * r , *++instr); 1040 * outr ++ = * r ; 1042 * outr = '\0'; 1045 } } 1052 $dbt_rt ( dbv , db ) 1053 DB_ENV * dbv ; 1054 DBT * db ; 1056 u_t32_t n ; 1057 u_t8_t * p ; 1058 c1 , c2 , es , f ; 1059 buf [32]; 1061 ++ `G ( lo ); 1063 f = 1; 1064 es = 0; 1065 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1066 i( c1 = EOF ) { 1067 i( n == 0) { 1068 `G ( dofe G( doda ) = 1; 1071 ( `badd ( dbv )); 1073 i( f ) { 1074 f = 0; 1075 i( `G ( vsi ) > 1) { 1076 i( c1 != ' ') { 1077 buf [0] = c1 ; 1078 i( `fgs ( buf + 1, 1079 ( buf - 1, d = NULL || 1080 `rcmp ( buf , "DATA=END\n") != 0) 1081 ( `badd ( dbv )); 1082 `G ( doda ) = 1; 1088 i( es ) { 1089 i( c1 != '\\') { 1090 i(( c2 = `gch ()= EOF ) 1091 ( `badd ( dbv )); 1092 `DIGITIZE ( c1 , c1, c2 ); 1094 es = 0; 1096 i( c1 == '\\') { 1097 es = 1; 1100 i( n > db -> un - 10) { 1101 db -> un *= 2; 1102 i(( db -> da = 1103 `loc ( db -> da , db-> un )= NULL ) { 1104 dbv -> `r (dbv, ENOMEM , NULL ); 1107 p = ( u_t8_t *) db -> da + n ; 1109 ++ n ; 1110 * p ++ = c1 ; 1112 db -> size = n ; 1115 } } 1122 $dbt_rdump ( dbv , db ) 1123 DB_ENV * dbv ; 1124 DBT * db ; 1126 u_t32_t n ; 1127 u_t8_t * p ; 1128 c1 , c2 , f ; 1129 buf [32]; 1131 ++ `G ( lo ); 1133 f = 1; 1134 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1135 i( c1 = EOF ) { 1136 i( n == 0) { 1137 `G ( dofe G( doda ) = 1; 1140 ( `badd ( dbv )); 1142 i( f ) { 1143 f = 0; 1144 i( `G ( vsi ) > 1) { 1145 i( c1 != ' ') { 1146 buf [0] = c1 ; 1147 i( `fgs ( buf + 1, 1148 ( buf - 1, d = NULL || 1149 `rcmp ( buf , "DATA=END\n") != 0) 1150 ( `badd ( dbv )); 1151 `G ( doda ) = 1; 1157 i(( c2 = `gch ()= EOF ) 1158 ( `badd ( dbv )); 1159 i( n > db -> un - 10) { 1160 db -> un *= 2; 1161 i(( db -> da = 1162 `loc ( db -> da , db-> un )= NULL ) { 1163 dbv -> `r (dbv, ENOMEM , NULL ); 1166 p = ( u_t8_t *) db -> da + n ; 1168 ++ n ; 1169 `DIGITIZE (* p ++, c1 , c2 ); 1171 db -> size = n ; 1174 } } 1181 $dbt_eo ( dbv , db , ishex ) 1182 DB_ENV * dbv ; 1183 DBT * db ; 1184 ishex ; 1186 buf [32], * p , * q ; 1187 u_lg o ; 1189 ++ `G ( lo ); 1191 i( `fgs ( buf , (buf), d = NULL ) { 1192 `G ( dofe G( doda ) = 1; 1196 i( `rcmp ( buf , "DATA=END\n") == 0) { 1197 `G ( doda ) = 1; 1201 i( buf [0] != ' ') 1202 r ; 1208 i( ishex ) { 1209 p = q = buf + 1; *q != '\0' && *q != '\n';) { 1217 i(* q ++ != '3') 1218 r ; 1219 i(* q == '\n' || *q == '\0') 1220 r ; 1221 * p ++ = * q ++; 1223 * p = '\0'; 1226 i( `__db_gulg ( dbv , `G ( ogme ), buf + 1, 0, 0, & o )) 1227 r ; 1229 *(( db_o_t *) db -> da o ; 1230 db -> size = ( db_o_t ); 1233 r : ( `badd ( dbv )); 1234 } } 1237 $dbt_to_o ( dbv , dbt , ) 1238 DB_ENV * dbv ; 1239 DBT * dbt ; 1240 db_o_t * ; 1242 buf [32]; 1244 `memy ( buf , dbt -> da , dbt-> size ); 1245 buf [ dbt -> size ] = '\0'; 1247 ( `__db_gulg ( dbv , `G ( ogme ), buf , 0, 0, ( u_lg *) )); 1248 } } 1255 $badnum ( dbv ) 1256 DB_ENV * dbv ; 1258 dbv -> `rx (dbenv, 1260 } } 1267 $badd ( dbv ) 1268 DB_ENV * dbv ; 1270 dbv -> `rx (dbenv, "unexpectednd of input data or key/dataair"); 1272 } } 1279 $uge () 1281 () `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 1284 () `rtf ( dr , "usage: %s %s\n", 1285 ogme , "-rsn | fileid [-h home] [-Password] db_file"); 1286 ( EXIT_FAILURE ); 1287 } } 1290 $vsi_check () 1292 v_maj , v_m , v_tch ; 1295 () `db_vsi (& v_maj , & v_m , & v_tch ); 1296 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 1297 `rtf ( dr , 1299 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 1300 v_maj , v_m ); 1301 ( EXIT_FAILURE ); 1304 } } @../db_printlog/db_printlog.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/f.h " 15 ~"dbc/hash.h " 16 ~"dbc/log.h " 17 ~"dbc/qam.h " 18 ~"dbc/txn.h " 20 #ide lt 21 cڡ gcyright [] = 25 v__t __P (( DB_ENV *, u_t32_t , 26 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 27 v__t_42 `__P (( DB_ENV *, 28 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 29 v__t_43 `__P (( DB_ENV *, 30 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 31 v__t_45 `__P (( DB_ENV *, 32 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 33 l_g `__P ((*, DB_LSN *)); 34 ma `__P ((, *[])); 35 ݒ_p_db `__P (( DB_ENV *, DB **, DBC **)); 36 t_p_cd `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 37 uge `__P (()); 38 vsi_check `__P (()); 40 cڡ * ogme ; 43 $ma ( gc , gv ) 44 gc ; 45 * gv []; 47 * ݏrg ; 48 td ; 49 DB * dbp ; 50 DBC * dbc ; 51 DBT da , keydbt ; 52 DB_ENV * dbv ; 53 DB_LOGC * logc ; 54 DB_LSN key , t , , v ; 55 size_t dbsize ; 56 u_t32_t logcag , wvsi , vsi ; 57 ch , cmp , exv , nag , rag , t , pag ; 58 (** db `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 59 * home , * sswd ; 61 i(( ogme = `__db_h ( gv [0])= NULL ) 62 ogme = gv [0]; 64 ++ ogme ; 66 i(( t = `vsi_check ()) != 0) 67 ( t ); 69 dbp = NULL ; 70 dbc = NULL ; 71 dbv = NULL ; 72 logc = NULL ; 73 `ZERO_LSN ( t ); 74 `ZERO_LSN ( ); 75 dbsize = 0; 76 exv = nag = rag = pag = 0; 77 db = NULL ; 78 home = sswd = NULL ; 80 ( ch = `gt ( gc , gv , "b:e:h:NP:rRV")! EOF ) 81 ch ) { 84 i( `l_g ( ݏrg , & t )) 85 ( `uge ()); 89 i( `l_g ( ݏrg , & )) 90 ( `uge ()); 93 home = ݏrg ; 96 nag = 1; 99 sswd = `rdup ( ݏrg ); 100 `memt ( ݏrg , 0, ` (optarg)); 101 i( sswd = NULL ) { 102 `rtf ( dr , "%s: strdup: %s\n", 103 ogme , ` ( o )); 104 ( EXIT_FAILURE ); 108 rag = 1; 111 pag = 1; 114 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 115 ( EXIT_SUCCESS ); 118 ( `uge ()); 120 gc - td ; 121 gv + td ; 123 i( gc > 0) 124 ( `uge ()); 127 `__db_ut_sig (); 133 i(( t = `db_v_ (& dbv , 0)) != 0) { 134 `rtf ( dr , 135 "%s: db_v_: %s\n", ogme , `db_ ( t )); 136 shutdown ; 139 dbv -> `t_rfe (dbv, dr ); 140 dbv -> `t_fx (dbv, ogme ); 142 i( nag ) { 143 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 144 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 145 shutdown ; 147 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 148 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 149 shutdown ; 153 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 154 sswd , DB_ENCRYPT_AES )) != 0) { 155 dbv -> `r (dbv, t , "set_passwd"); 156 shutdown ; 163 i(( t = dbv -> `t_p_dich (dbv, t_p_cd )) != 0) { 164 dbv -> `r (dbv, t , "app_dispatch"); 165 shutdown ; 175 i( pag ) { 176 i(( t = dbv -> `ݒ (dbv, home , 177 DB_INIT_MPOOL | DB_USE_ENVIRON , 0)) != 0 && 178 ( t = DB_VERSION_MISMATCH || 179 ( t = dbv -> `ݒ (dbv, home , 180 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) 182 dbv -> `r (dbv, t , "DB_ENV->open"); 183 shutdown ; 185 } i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 186 ( t = DB_VERSION_MISMATCH || 187 ( t = dbv -> `ݒ (dbv, home , 188 DB_CREATE | DB_INIT_LOG | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 189 dbv -> `r (dbv, t , "DB_ENV->open"); 190 shutdown ; 194 i( pag ) { 195 i(( t = `ݒ_p_db ( dbv , & dbp , & dbc )) != 0) 196 shutdown ; 197 } i(( t = dbv -> `log_curs (dbv, & logc , 0)) != 0) { 198 dbv -> `r (dbv, t , "DB_ENV->log_cursor"); 199 shutdown ; 202 i( `IS_ZERO_LSN ( t )) { 203 `memt (& keydbt , 0, (keydbt)); 204 logcag = rag ? DB_PREV : DB_NEXT ; 206 key = t ; 207 logcag = DB_SET ; 209 `memt (& da , 0, (data)); 217 i( pag ) 218 vsi = DB_LOGVERSION ; 220 vsi = 0; 221 `ZERO_LSN ( v ); 224 i( pag && 225 ( t = `v__t ( dbv , vsi , & db , & dbsize )) != 0) { 226 dbv -> `r (dbv, t , "callback: initialization"); 227 shutdown ; 229 ; ! `__db_ut_ued (); logcag = rag ? DB_PREV : DB_NEXT ) { 230 i( pag ) { 231 t = dbc -> `g (dbc, & keydbt , & da , logcag ); 232 i( t == 0) 233 key = (( REP_CONTROL *) keydbt . da )-> l ; 235 t = logc -> `g ogc, & key , & da , logcag ); 236 i( t != 0) { 237 i( t = DB_NOTFOUND ) 239 dbv -> `r (dbenv, 240 t , pag ? "DBC->get" : "DB_LOGC->get"); 241 shutdown ; 247 i(! `IS_ZERO_LSN ( )) { 248 cmp = `LOG_COMPARE (& key , & ); 249 i(( rag && cmp < 0) || (!rflag && cmp > 0)) 252 i(! pag && key . fe ! v .file) { 258 i(( t = logc -> `vsi ogc, & wvsi , 0)) != 0) { 259 dbv -> `r (dbv, t , "DB_LOGC->version"); 260 shutdown ; 262 i( vsi ! wvsi ) { 263 vsi = wvsi ; 264 i(( t = `v__t ( dbv , vsi , 265 & db , & dbsize )) != 0) { 266 dbv -> `r (dbv, t , 268 shutdown ; 273 t = `__db_dich ( dbv , 274 db , dbsize , & da , & key , DB_TXN_PRINT , NULL ); 280 () `fush ( dout ); 282 i( t != 0) { 283 dbv -> `r (dbv, t , "tx: dispatch"); 284 shutdown ; 289 shutdown : exv = 1; 291 i( logc ! NULL && ( t =ogc-> `o (logc, 0)) != 0) 292 exv = 1; 294 i( dbc ! NULL && ( t = dbc-> `o (dbc)) != 0) 295 exv = 1; 297 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) 298 exv = 1; 305 i( db ! NULL ) 306 `__os_ ( dbv , db ); 307 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 308 exv = 1; 309 `rtf ( dr , 310 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 313 i( sswd ! NULL ) 314 ` ( sswd ); 317 `__db_ut_signd (); 319 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 320 } } 326 $v__t ( dbv , vsi , dbp , dbsiz ) 327 DB_ENV * dbv ; 328 u_t32_t vsi ; 329 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 330 size_t * dbsiz ; 332 t ; 339 i(( t = `v__t_45 ( dbv , dbp , dbsiz )) != 0) 340 ( t ); 342 vsi ) { 350 DB_LOGVERSION_46 : 351 DB_LOGVERSION_45 : 352 DB_LOGVERSION_44 : 353 t = 0; 355 DB_LOGVERSION_43 : 356 t = `v__t_43 ( dbv , dbp , dbsiz ); 358 DB_LOGVERSION_42 : 359 t = `v__t_42 ( dbv , dbp , dbsiz ); 362 `__db_rx ( dbv , "Unknowvsi %lu", ( u_lg ) vsi ); 363 t = EINVAL ; 366 ( t ); 367 } } 370 $v__t_42 ( dbv , dbp , dbsiz ) 371 DB_ENV * dbv ; 372 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 373 size_t * dbsiz ; 375 t ; 377 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 378 __db_lk_42_t , DB___db_lk_42 )) != 0) 379 r ; 380 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 381 __db_pg_loc_42_t , DB___db_pg_loc_42 )) != 0) 382 r ; 383 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 384 __db_pg__42_t , DB___db_pg__42 )) != 0) 385 r ; 386 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 387 __db_pg_da_42_t , DB___db_pg_da_42 )) != 0) 388 r ; 389 #i HAVE_HASH 390 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 391 __ham_magroup_42_t , DB___ham_magroup_42 )) != 0) 392 r ; 393 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 394 __ham_grouoc_42_t , DB___ham_grouoc_42 )) != 0) 395 r ; 397 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 398 __txn_ckp_42_t , DB___txn_ckp_42 )) != 0) 399 r ; 400 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 401 __txn_g_42_t , DB___txn_g_42 )) != 0) 402 r ; 403 r : 404 ( t ); 405 } } 408 $v__t_43 ( dbv , dbp , dbsiz ) 409 DB_ENV * dbv ; 410 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 411 size_t * dbsiz ; 413 t ; 415 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 416 __bam_lk_43_t , DB___bam_lk_43 )) != 0) 417 r ; 421 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 422 __txn_g_42_t , DB___txn_g_42 )) != 0) 423 r ; 424 r : 425 ( t ); 426 } } 433 $v__t_45 ( dbv , dbp , dbsiz ) 434 DB_ENV * dbv ; 435 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 436 size_t * dbsiz ; 438 t ; 440 i(( t = `__bam__t ( dbv , dbp , dbsiz )) != 0) 441 r ; 442 i(( t = `__d__t ( dbv , dbp , dbsiz )) != 0) 443 r ; 444 i(( t = `__db__t ( dbv , dbp , dbsiz )) != 0) 445 r ; 446 i(( t = `__dbg__t ( dbv , dbp , dbsiz )) != 0) 447 r ; 448 i(( t = `__f__t ( dbv , dbp , dbsiz )) != 0) 449 r ; 450 #ifde HAVE_HASH 451 i(( t = `__ham__t ( dbv , dbp , dbsiz )) != 0) 452 r ; 454 #ifde HAVE_QUEUE 455 i(( t = `__qam__t ( dbv , dbp , dbsiz )) != 0) 456 r ; 458 i(( t = `__txn__t ( dbv , dbp , dbsiz )) != 0) 459 r ; 460 r : 461 ( t ); 462 } } 465 $uge () 467 `rtf ( dr , "uge: %%s\n", ogme , 469 ( EXIT_FAILURE ); 470 } } 473 $vsi_check () 475 v_maj , v_m , v_tch ; 478 () `db_vsi (& v_maj , & v_m , & v_tch ); 479 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 480 `rtf ( dr , 482 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 483 v_maj , v_m ); 484 ( EXIT_FAILURE ); 487 } } 491 $t_p_cd ( dbv , dbt , lp , ) 492 DB_ENV * dbv ; 493 DBT * dbt ; 494 DB_LSN * lp ; 495 db_cs ; 497 ch ; 498 u_t32_t i , y ; 500 `DB_ASSERT ( dbv , = DB_TXN_PRINT ); 502 `COMPQUIET ( dbv , NULL ); 503 `COMPQUIET ( , DB_TXN_PRINT ); 509 `memy (& y , dbt -> da , (rectype)); 516 `tf ("[%lu][%lu]application specificecord:ec: %lu\n", 517 ( u_lg ) lp -> fe , (u_lgp-> offt , (u_lg) y ); 518 `tf ("\tdata: "); 519 i = 0; i < dbt -> size ; i++) { 520 ch = (( u_t8_t *) dbt -> da )[ i ]; 521 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 523 `tf ("\n\n"); 526 } } 529 $ݒ_p_db ( dbv , db , db ) 530 DB_ENV * dbv ; 531 DB ** db ; 532 DBC ** db ; 534 t ; 536 DB * dbp ; 537 * db = NULL ; 538 * db = NULL ; 540 i(( t = `db_ ( db , dbv , 0)) != 0) { 541 dbv -> `r (dbv, t , "db_create"); 542 ( t ); 545 dbp = * db ; 546 i(( t = 547 dbp -> `ݒ (dbp, NULL , REPDBNAME , NULL, DB_BTREE , 0, 0)) != 0) { 548 dbv -> `r (dbv, t , "DB->open"); 549 r ; 552 i(( t = dbp -> `curs (dbp, NULL , db , 0)) != 0) { 553 dbv -> `r (dbv, t , "DB->cursor"); 554 r ; 559 r : i(* db ! NULL ) 560 ()(* db )-> `o (*dbpp, 0); 561 ( t ); 562 } } 569 $l_g ( g , lp ) 570 * g ; 571 DB_LSN * lp ; 573 u_lg uv ; 574 * p ; 579 i(( p = `rchr ( g , '/')= NULL ) 581 * p = '\0'; 583 i( `__db_gulg ( NULL , ogme , g , 0, UINT32_MAX , & uv )) 585 lp -> fe = uv ; 586 i( `__db_gulg ( NULL , ogme , p + 1, 0, UINT32_MAX , & uv )) 588 lp -> offt = uv ; 590 } } @../db_recover/db_recover.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 edback __P (( DB_ENV *, , )); 19 ma __P ((, *[])); 20 ad_timeamp __P ((*, time_t *)); 21 uge __P (()); 22 vsi_check __P (()); 24 cڡ * gogme ; 25 gwle_eded ; 28 $ma ( gc , gv ) 29 gc ; 30 * gv []; 32 * ݏrg ; 33 td ; 34 DB_ENV * dbv ; 35 time_t timeamp ; 36 u_t32_t ags ; 37 ch , exv , l_cov , t , _v , t_edback , vbo ; 38 * home , * sswd ; 40 i(( ogme = `__db_h ( gv [0])= NULL ) 41 ogme = gv [0]; 43 ++ ogme ; 45 i(( t = `vsi_check ()) != 0) 46 ( t ); 48 home = sswd = NULL ; 49 timeamp = 0; 50 exv = l_cov = _v = t_edback = vbo = 0; 51 ( ch = `gt ( gc , gv , "fh:P:t:Vv")! EOF ) 52 ch ) { 54 l_cov = 1; 57 _v = 1; 60 t_edback = 1; 63 home = ݏrg ; 66 sswd = `rdup ( ݏrg ); 67 `memt ( ݏrg , 0, ` (optarg)); 68 i( sswd = NULL ) { 69 `rtf ( dr , "%s: strdup: %s\n", 70 ogme , ` ( o )); 71 ( EXIT_FAILURE ); 75 i(( t = `ad_timeamp ( ݏrg , & timeamp )) != 0) 76 ( t ); 79 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 80 ( EXIT_SUCCESS ); 82 vbo = 1; 86 ( `uge ()); 88 gc - td ; 89 gv + td ; 91 i( gc != 0) 92 ( `uge ()); 95 `__db_ut_sig (); 101 i(( t = `db_v_ (& dbv , 0)) != 0) { 102 `rtf ( dr , 103 "%s: db_v_: %s\n", ogme , `db_ ( t )); 104 ( EXIT_FAILURE ); 106 dbv -> `t_rfe (dbv, dr ); 107 dbv -> `t_fx (dbv, ogme ); 108 i( t_edback ) 109 () dbv -> `t_edback (dbv, edback ); 110 i( vbo ) 111 () dbv -> `t_vbo (dbv, DB_VERB_RECOVERY , 1); 112 i( timeamp && 113 ( t = dbv -> `t_tx_timeamp (dbv, & timeamp )) != 0) { 114 dbv -> `r (dbv, t , "DB_ENV->set_timestamp"); 115 shutdown ; 118 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 119 sswd , DB_ENCRYPT_AES )) != 0) { 120 dbv -> `r (dbv, t , "set_passwd"); 121 shutdown ; 136 ags = 0; 137 `LF_SET ( DB_CREATE | DB_INIT_LOG | 138 DB_INIT_MPOOL | DB_INIT_TXN | DB_USE_ENVIRON ); 139 `LF_SET ( l_cov ? DB_RECOVER_FATAL : DB_RECOVER ); 140 `LF_SET ( _v ? DB_INIT_LOCK : DB_PRIVATE ); 141 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) { 142 dbv -> `r (dbv, t , "DB_ENV->open"); 143 shutdown ; 147 shutdown : exv = 1; 151 i( wle_eded ) 152 `tf ("\n"); 155 i(( t = dbv -> `o (dbenv, 0)) != 0) { 156 exv = 1; 157 `rtf ( dr , 158 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 160 i( sswd ! NULL ) 161 ` ( sswd ); 164 `__db_ut_signd (); 166 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 167 } } 174 $edback ( dbv , code , r ) 175 DB_ENV * dbv ; 176 code ; 177 r ; 179 `COMPQUIET ( dbv , NULL ); 181 i( code = DB_RECOVER ) { 182 `tf ("\ecovy %d%% come", r ); 183 () `fush ( dout ); 184 wle_eded = 1; 186 } } 188 #ATOI2 ( (r)[0] - '0'* 10 + (r)[1] - '0'); (+2; ) 222 $ad_timeamp ( g , tim ) 223 * g ; 224 time_t * tim ; 226 tm * t ; 227 time_t now ; 228 yrt ; 229 * p ; 231 () `time (& now ); 232 i(( t = `loime (& now )= NULL ) { 233 `rtf ( dr , 234 "%s:oime: %s\n", ogme , ` ( o )); 235 ( EXIT_FAILURE ); 238 i(( p = `rchr ( g , '.')= NULL ) 239 t -> tm_c = 0; 241 i( ` ( p + 1) != 2) 242 ; 243 * p ++ = '\0'; 244 t -> tm_c = `ATOI2 ( p ); 247 yrt = 0; 248 ` ( g )) { 250 t -> tm_yr = `ATOI2 ( g ); 251 t -> tm_yr *= 100; 252 yrt = 1; 255 i( yrt ) { 256 yrt = `ATOI2 ( g ); 257 t -> tm_yr + yrt ; 259 yrt = `ATOI2 ( g ); 260 i( yrt < 69) 261 t -> tm_yr = yrt + 2000; 263 t -> tm_yr = yrt + 1900; 265 t -> tm_yr -= 1900; 268 t -> tm_m = `ATOI2 ( g ); 269 -- t -> tm_m ; 270 t -> tm_mday = `ATOI2 ( g ); 271 t -> tm_hour = `ATOI2 ( g ); 272 t -> tm_m = `ATOI2 ( g ); 275 ; 278 t -> tm_isd = -1; 280 * tim = `mktime ( t ); 281 i(* tim == -1) { 282 : `rtf ( dr , 284 ogme ); 285 ( EXIT_FAILURE ); 288 } } 291 $uge () 293 () `rtf ( dr , "uge: %%s\n", ogme , 295 ( EXIT_FAILURE ); 296 } } 299 $vsi_check () 301 v_maj , v_m , v_tch ; 304 () `db_vsi (& v_maj , & v_m , & v_tch ); 305 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 306 `rtf ( dr , 308 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 309 v_maj , v_m ); 310 ( EXIT_FAILURE ); 313 } } @../db_stat/db_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 um { mT_NOTSET , mT_DB , 19 mT_ENV , mT_LOCK , mT_LOG , mT_MPOOL , mT_MUTEX , mT_REP , mT_TXN } t_t ; 21 db_ __P (( DB_ENV *, *, _t , u_t32_t , *)); 22 ma __P ((, *[])); 23 uge __P (()); 24 vsi_check __P (()); 26 cڡ * gogme ; 29 $ma ( gc , gv ) 30 gc ; 31 * gv []; 33 * ݏrg ; 34 td ; 35 DB_ENV * dbv ; 36 DB * dbp ; 37 _t y ; 38 u_t32_t che , ags ; 39 ch , exv ; 40 nag , ive , size , t ; 41 * db , * home , * p , * sswd , * subdb ; 43 i(( ogme = `__db_h ( gv [0])= NULL ) 44 ogme = gv [0]; 46 ++ ogme ; 48 i(( t = `vsi_check ()) != 0) 49 ( t ); 51 dbv = NULL ; 52 dbp = NULL ; 53 y = T_NOTSET ; 54 che = MEGABYTE ; 55 exv = ags = nag = ive = 0; 56 db = home = sswd = subdb = NULL ; 58 ( ch = `gt ( gc , 59 gv , "C:cd:Eefgh:L:lM:mNP:R:rs:tVxX:Z")! EOF ) 60 ch ) { 62 i( y ! T_NOTSET &&ty ! T_LOCK ) 63 gcombo ; 64 y = T_LOCK ; 65 i( ch != 'c') 66 p = ݏrg ; *p; ++p) 67 * p ) { 69 `LF_SET ( DB_STAT_ALL ); 72 `LF_SET ( DB_STAT_LOCK_CONF ); 75 `LF_SET ( DB_STAT_LOCK_LOCKERS ); 80 `LF_SET ( DB_STAT_LOCK_OBJECTS ); 83 `LF_SET ( DB_STAT_LOCK_PARAMS ); 86 ( `uge ()); 90 i( y ! T_NOTSET &&ty ! T_DB ) 91 gcombo ; 92 y = T_DB ; 93 db = ݏrg ; 96 i( y ! T_NOTSET &&ty ! T_ENV ) 97 gcombo ; 98 y = T_ENV ; 99 `LF_SET ( DB_STAT_SUBSYSTEM ); 100 i( ch == 'E') 101 `LF_SET ( DB_STAT_ALL ); 104 i( y ! T_NOTSET &&ty ! T_DB ) 105 gcombo ; 106 y = T_DB ; 107 `LF_SET ( DB_FAST_STAT ); 110 home = ݏrg ; 113 i( y ! T_NOTSET &&ty ! T_LOG ) 114 gcombo ; 115 y = T_LOG ; 116 i( ch != 'l') 117 p = ݏrg ; *p; ++p) 118 * p ) { 120 `LF_SET ( DB_STAT_ALL ); 123 ( `uge ()); 127 i( y ! T_NOTSET &&ty ! T_MPOOL ) 128 gcombo ; 129 y = T_MPOOL ; 130 i( ch != 'm') 131 p = ݏrg ; *p; ++p) 132 * p ) { 134 `LF_SET ( DB_STAT_ALL ); 137 `LF_SET ( DB_STAT_MEMP_HASH ); 142 ( `uge ()); 146 nag = 1; 149 sswd = `rdup ( ݏrg ); 150 `memt ( ݏrg , 0, ` (optarg)); 151 i( sswd = NULL ) { 152 `rtf ( dr , "%s: strdup: %s\n", 153 ogme , ` ( o )); 154 ( EXIT_FAILURE ); 158 i( y ! T_NOTSET &&ty ! T_REP ) 159 gcombo ; 160 y = T_REP ; 161 i( ch != 'r') 162 p = ݏrg ; *p; ++p) 163 * p ) { 165 `LF_SET ( DB_STAT_ALL ); 168 ( `uge ()); 172 i( y ! T_NOTSET &&ty ! T_DB ) 173 gcombo ; 174 y = T_DB ; 175 subdb = ݏrg ; 178 i( y ! T_NOTSET ) { 179 gcombo : `rtf ( dr , 181 ogme ); 182 ( `uge ()); 184 y = T_TXN ; 187 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 188 ( EXIT_SUCCESS ); 190 i( y ! T_NOTSET &&ty ! T_MUTEX ) 191 gcombo ; 192 y = T_MUTEX ; 193 i( ch != 'x') 194 p = ݏrg ; *p; ++p) 195 * p ) { 197 `LF_SET ( DB_STAT_ALL ); 200 ( `uge ()); 204 `LF_SET ( DB_STAT_CLEAR ); 208 ( `uge ()); 210 gc - td ; 211 gv + td ; 213 y ) { 214 T_DB : 215 i( db = NULL ) 216 ( `uge ()); 218 T_ENV : 219 T_LOCK : 220 T_LOG : 221 T_MPOOL : 222 T_MUTEX : 223 T_REP : 224 T_TXN : 226 T_NOTSET : 227 ( `uge ()); 231 `__db_ut_sig (); 237 y : i(( t = `db_v_ (& dbv , 0)) != 0) { 238 `rtf ( dr , 239 "%s: db_v_: %s\n", ogme , `db_ ( t )); 240 r ; 243 dbv -> `t_rfe (dbv, dr ); 244 dbv -> `t_fx (dbv, ogme ); 246 i( nag ) { 247 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 248 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 249 r ; 251 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 252 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 253 r ; 257 i( sswd ! NULL && 258 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 259 dbv -> `r (dbv, t , "set_passwd"); 260 r ; 264 i( `db_ ( dbv , home , y , che , & ive ) != 0) 265 r ; 267 y ) { 268 T_DB : 270 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 271 dbv -> `r (dbv, t , "db_create"); 272 r ; 284 dbv -> `t_rfe (dbv, NULL ); 285 t = dbp -> `ݒ (dbp, NULL , db , subdb , DB_UNKNOWN , 0, 0); 286 dbv -> `t_rfe (dbv, dr ); 287 i( t !0 && ( dbp -> `ݒ ( 288 dbp , NULL , db , subdb , DB_UNKNOWN , DB_RDONLY , 0)) != 0) { 289 dbv -> `r (dbv, t , "DB->ݒ: %s", db ); 290 r ; 294 i( ive ) { 295 i(( t = `__db_ut_che ( dbp , & che , & size )) != 0) 296 r ; 297 i( size ) { 298 () dbp -> `o (dbp, DB_NOSYNC ); 299 dbp = NULL ; 301 () dbv -> `o (dbenv, 0); 302 dbv = NULL ; 303 y ; 307 i( dbp -> `_t (dbp, ags )) 308 r ; 310 T_ENV : 311 i( dbv -> `_t (dbv, ags )) 312 r ; 314 T_LOCK : 315 i( dbv -> `lock__t (dbv, ags )) 316 r ; 318 T_LOG : 319 i( dbv -> `log__t (dbv, ags )) 320 r ; 322 T_MPOOL : 323 i( dbv -> `memp__t (dbv, ags )) 324 r ; 326 T_MUTEX : 327 i( dbv -> `mux__t (dbv, ags )) 328 r ; 330 T_REP : 331 #ifde HAVE_REPLICATION_THREADS 332 i( dbv -> `pmgr__t (dbv, ags )) 333 r ; 335 i( dbv -> `p__t (dbv, ags )) 336 r ; 338 T_TXN : 339 i( dbv -> `txn__t (dbv, ags )) 340 r ; 342 T_NOTSET : 343 dbv -> `rx (dbenv, "Unknown statistics flag"); 344 r ; 348 r : exv = 1; 350 i( dbp ! NULL && ( t = dbp-> `o (dbp, DB_NOSYNC )) != 0) { 351 exv = 1; 352 dbv -> `r (dbv, t , "close"); 354 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 355 exv = 1; 356 `rtf ( dr , 357 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 360 i( sswd ! NULL ) 361 ` ( sswd ); 364 `__db_ut_signd (); 366 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 367 } } 374 $db_ ( dbv , home , y , che , is_ive ) 375 DB_ENV * dbv ; 376 * home ; 377 _t y ; 378 u_t32_t che ; 379 * is_ive ; 381 u_t32_t oags ; 382 t ; 394 * is_ive = 0; 395 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) == 0) 397 i( t = DB_VERSION_MISMATCH ) 398 r ; 399 i( y ! T_DB &&ty ! T_LOG ) { 400 dbv -> `r (dbv, t , "DB_ENV->open%s%s", 401 home = NULL ? "" : ": ", home == NULL ? "" : home); 415 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 416 dbv -> `r (dbv, t , "set_cachesize"); 419 * is_ive = 1; 420 oags = DB_CREATE | DB_PRIVATE | DB_USE_ENVIRON ; 421 i( y = T_DB ) 422 oags | DB_INIT_MPOOL ; 423 i( y = T_LOG ) 424 oags | DB_INIT_LOG ; 425 i(( t = dbv -> `ݒ (dbv, home , oags , 0)) == 0) 429 r : dbv -> `r (dbv, t , "DB_ENV->open"); 431 } } 434 $uge () 436 `rtf ( dr , "uge: %%s\n", ogme , 438 `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 441 ( EXIT_FAILURE ); 442 } } 445 $vsi_check () 447 v_maj , v_m , v_tch ; 450 () `db_vsi (& v_maj , & v_m , & v_tch ); 451 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 452 `rtf ( dr , 454 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 455 v_maj , v_m ); 456 ( EXIT_FAILURE ); 459 } } @../db_upgrade/db_upgrade.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 ma __P ((, *[])); 19 uge __P (()); 20 vsi_check __P (()); 22 cڡ * gogme ; 25 $ma ( gc , gv ) 26 gc ; 27 * gv []; 29 * ݏrg ; 30 td ; 31 DB * dbp ; 32 DB_ENV * dbv ; 33 u_t32_t ags ; 34 ch , exv , nag , t , t_t , vbo ; 35 * home , * sswd ; 37 i(( ogme = `__db_h ( gv [0])= NULL ) 38 ogme = gv [0]; 40 ++ ogme ; 42 i(( t = `vsi_check ()) != 0) 43 ( t ); 45 dbv = NULL ; 46 ags = nag = vbo = 0; 47 exv = 0; 48 home = sswd = NULL ; 49 ( ch = `gt ( gc , gv , "h:NP:sVv")! EOF ) 50 ch ) { 52 home = ݏrg ; 55 nag = 1; 58 sswd = `rdup ( ݏrg ); 59 `memt ( ݏrg , 0, ` (optarg)); 60 i( sswd = NULL ) { 61 `rtf ( dr , "%s: strdup: %s\n", 62 ogme , ` ( o )); 63 ( EXIT_FAILURE ); 67 `LF_SET ( DB_DUPSORT ); 70 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 71 ( EXIT_SUCCESS ); 73 vbo = 1; 77 ( `uge ()); 79 gc - td ; 80 gv + td ; 82 i( gc <= 0) 83 ( `uge ()); 86 `__db_ut_sig (); 92 i(( t = `db_v_ (& dbv , 0)) != 0) { 93 `rtf ( dr , "%s: db_env_create: %s\n", 94 ogme , `db_ ( t )); 95 shutdown ; 98 dbv -> `t_rfe (dbv, dr ); 99 dbv -> `t_fx (dbv, ogme ); 101 i( nag ) { 102 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 103 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 104 shutdown ; 106 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 107 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 108 shutdown ; 112 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 113 sswd , DB_ENCRYPT_AES )) != 0) { 114 dbv -> `r (dbv, t , "set_passwd"); 115 shutdown ; 122 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 123 ( t = DB_VERSION_MISMATCH || 124 ( t = dbv -> `ݒ (dbv, home , 125 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 127 dbv -> `r (dbv, t , "DB_ENV->open"); 128 shutdown ; 131 ; ! `__db_ut_ued (&& gv [0] ! NULL ; ++argv) { 132 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 133 `rtf ( dr , 134 "%s: db_: %s\n", ogme , `db_ ( t )); 135 shutdown ; 137 dbp -> `t_rfe (dbp, dr ); 138 dbp -> `t_fx (dbp, ogme ); 139 i(( t = dbp -> `upgde (dbp, gv [0], ags )) != 0) 140 dbp -> `r (dbp, t , "DB->upgde: %s", gv [0]); 141 i(( t_t = dbp -> `o (dbp, 0)!0 && t == 0) { 142 dbv -> `r (dbv, t , "DB->o: %s", gv [0]); 143 t = t_t ; 145 i( t != 0) 146 shutdown ; 151 i( vbo ) 152 `tf ("%s: %s upgraded successfully\n", 153 ogme , gv [0]); 157 shutdown : exv = 1; 159 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 160 exv = 1; 161 `rtf ( dr , 162 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 165 i( sswd ! NULL ) 166 ` ( sswd ); 169 `__db_ut_signd (); 171 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 172 } } 175 $uge () 177 `rtf ( dr , "uge: %%s\n", ogme , 179 ( EXIT_FAILURE ); 180 } } 183 $vsi_check () 185 v_maj , v_m , v_tch ; 188 () `db_vsi (& v_maj , & v_m , & v_tch ); 189 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 190 `rtf ( dr , 192 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 193 v_maj , v_m ); 194 ( EXIT_FAILURE ); 197 } } @../db_verify/db_verify.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ide lt 14 cڡ gcyright [] = 18 ma __P ((, *[])); 19 uge __P (()); 20 vsi_check __P (()); 22 cڡ * gogme ; 25 $ma ( gc , gv ) 26 gc ; 27 * gv []; 29 * ݏrg ; 30 td ; 31 DB * dbp , * dbp1 ; 32 DB_ENV * dbv ; 33 u_t32_t ags , che ; 34 ch , exv , nag , ive ; 35 qut , size , t ; 36 * home , * sswd ; 38 i(( ogme = `__db_h ( gv [0])= NULL ) 39 ogme = gv [0]; 41 ++ ogme ; 43 i(( t = `vsi_check ()) != 0) 44 ( t ); 46 dbv = NULL ; 47 dbp = NULL ; 48 che = MEGABYTE ; 49 exv = nag = qut = 0; 50 ags = 0; 51 home = sswd = NULL ; 52 ( ch = `gt ( gc , gv , "h:NoP:quV")! EOF ) 53 ch ) { 55 home = ݏrg ; 58 nag = 1; 61 sswd = `rdup ( ݏrg ); 62 `memt ( ݏrg , 0, ` (optarg)); 63 i( sswd = NULL ) { 64 `rtf ( dr , "%s: strdup: %s\n", 65 ogme , ` ( o )); 66 ( EXIT_FAILURE ); 70 `LF_SET ( DB_NOORDERCHK ); 73 qut = 1; 76 `LF_SET ( DB_UNREF ); 79 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 80 ( EXIT_SUCCESS ); 83 ( `uge ()); 85 gc - td ; 86 gv + td ; 88 i( gc <= 0) 89 ( `uge ()); 92 `__db_ut_sig (); 98 y : i(( t = `db_v_ (& dbv , 0)) != 0) { 99 `rtf ( dr , 100 "%s: db_v_: %s\n", ogme , `db_ ( t )); 101 shutdown ; 104 i(! qut ) { 105 dbv -> `t_rfe (dbv, dr ); 106 dbv -> `t_fx (dbv, ogme ); 109 i( nag ) { 110 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 111 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 112 shutdown ; 114 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 115 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 116 shutdown ; 120 i( sswd ! NULL && 121 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 122 dbv -> `r (dbv, t , "set_passwd"); 123 shutdown ; 130 ive = 0; 131 i(( t = 132 dbv -> `ݒ (dbv, home , DB_INIT_MPOOL | DB_USE_ENVIRON , 0)) != 0) { 133 i( t ! DB_VERSION_MISMATCH ) { 134 i(( t = 135 dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 136 dbv -> `r (dbv, t , "set_cachesize"); 137 shutdown ; 139 ive = 1; 140 t = dbv -> `ݒ (dbv, home , DB_CREATE | 141 DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0); 143 i( t != 0) { 144 dbv -> `r (dbv, t , "DB_ENV->open"); 145 shutdown ; 154 ; ! `__db_ut_ued (&& gv [0] ! NULL ; ++argv) { 155 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 156 dbv -> `r (dbv, t , "%s: db_", ogme ); 157 shutdown ; 160 i( `TXN_ON ( dbv ) && 161 ( t = dbp -> `t_ags (dbp, DB_TXN_NOT_DURABLE )) != 0) { 162 dbv -> `r ( 163 dbv , t , "%s: db_t_ags", ogme ); 164 shutdown ; 175 i( ive ) { 176 i(( t = `db_ (& dbp1 , dbv , 0)) != 0) { 177 dbv -> `r ( 178 dbv , t , "%s: db_", ogme ); 179 shutdown ; 182 i( `TXN_ON ( dbv && ( t = 183 dbp1 -> `t_ags (dbp1, DB_TXN_NOT_DURABLE )) != 0) { 184 dbv -> `r ( 185 dbv , t , "%s: db_t_ags", ogme ); 186 shutdown ; 189 t = dbp1 -> `ݒ (dbp1, 190 NULL , gv [0], NULL, DB_UNKNOWN , DB_RDONLY , 0); 200 i( t == 0) { 201 i( `__db_ut_che ( 202 dbp1 , & che , & size ) == 0 &&esize) { 203 () dbp1 -> `o (dbp1, 0); 204 () dbp -> `o (dbp, 0); 205 dbp = NULL ; 207 () dbv -> `o (dbenv, 0); 208 dbv = NULL ; 209 y ; 212 () dbp1 -> `o (dbp1, 0); 216 t = dbp -> `vify (dbp, gv [0], NULL , NULL, ags ); 217 dbp = NULL ; 218 i( t != 0) 219 shutdown ; 223 shutdown : exv = 1; 226 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 227 exv = 1; 228 dbv -> `r (dbv, t , "close"); 230 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 231 exv = 1; 232 `rtf ( dr , 233 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 236 i( sswd ! NULL ) 237 ` ( sswd ); 240 `__db_ut_signd (); 242 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 243 } } 246 $uge () 248 `rtf ( dr , "uge: %%s\n", ogme , 250 ( EXIT_FAILURE ); 251 } } 254 $vsi_check () 256 v_maj , v_m , v_tch ; 259 () `db_vsi (& v_maj , & v_m , & v_tch ); 260 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 261 `rtf ( dr , 263 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 264 v_maj , v_m ); 265 ( EXIT_FAILURE ); 268 } } @../dbinc/btree.h 43 #idef _DB_BTREE_H_ 44 #_DB_BTREE_H_ ) 46 #i defed ( __lulus ) 51 __b ; __b tBTREE ; 52 __curs ; __curs tBTREE_CURSOR ; 53 __g ; __g tEPG ; 54 __o ; __ tRECNO ; 56 #DEFMINKEYPAGE (2) ) 62 #INVALID_ORDER 0 ) 64 #ISINTERNAL ( p ( `TYPE = P_IBTREE || TYPE= P_IRECNO ) ) 65 #ISLEAF ( p ( `TYPE = P_LBTREE || \ 66 `TYPE ( p = P_LRECNO || TYPE= P_LDUP ) ) 69 #CAD_UPDATEROOT 0x01 ) 72 #SPL_NRECS 0x01 ) 75 #BI_DELETED 0x01 ) 78 #STK_CLRDBC 0x01 ) 79 #STK_NOLOCK 0x02 ) 80 #STK_PGONLY 0x04 ) 84 CA_DELETE = 0, 85 CA_IAFTER = 1, 86 CA_IBEFORE = 2, 87 CA_ICURRENT = 3 88 } t_o_g ; 104 #SR_READ 0x00001 ) 105 #SR_WRITE 0x00002 ) 107 #SR_APPEND 0x00040 ) 108 #SR_DELNO 0x00080 ) 109 #SR_DUPFIRST 0x00100 ) 110 #SR_DUPLAST 0x00200 ) 111 #SR_EXACT 0x00400 ) 112 #SR_PARENT 0x00800 ) 113 #SR_STACK 0x01000 ) 114 #SR_PAST_EOF 0x02000 ) 119 #SR_STK_ONLY 0x04000 ) 120 #SR_MAX 0x08000 ) 121 #SR_MIN 0x10000 ) 122 #SR_NEXT 0x20000 ) 123 #SR_DEL 0x40000 ) 124 #SR_START 0x80000 ) 126 #SR_DELETE \ 127 ( SR_WRITE | SR_DUPFIRST | SR_DELNO | SR_EXACT | SR_STACK ) ) 128 #SR_FIND ( SR_READ | SR_DUPFIRST | SR_DELNO ) ) 129 #SR_FIND_WR ( SR_WRITE | SR_DUPFIRST | SR_DELNO ) ) 130 #SR_INSERT ( SR_WRITE | SR_DUPLAST | SR_PAST_EOF | SR_STACK ) ) 131 #SR_KEYFIRST ( SR_WRITE | SR_DUPFIRST | SR_PAST_EOF | SR_STACK ) ) 132 #SR_KEYLAST ( SR_WRITE | SR_DUPLAST | SR_PAST_EOF | SR_STACK ) ) 133 #SR_WRPAIR ( SR_WRITE | SR_DUPLAST | SR_PAST_EOF | SR_PARENT ) ) 140 s__g { 141 PAGE * ge ; 142 db_dx_t dx ; 143 db_dx_t s ; 144 DB_LOCK lock ; 145 db_lockmode_t lock_mode ; 156 #BT_STK_CLR ( c ) do { \ 157 ( c )-> c = (c)-> ; \ 158 ( c )-> c -> ge = NULL ; \ 159 `LOCK_INIT (( c )-> c -> lock ); \ 160 } 0) ) 162 #BT_STK_ENTER ( dbv , c , g , ge_dx , l , mode , t ) do { \ 163 i(( t = (( c )-> c =(c)-> e ? \ 164 `__bam_kgrow ( dbv , c ) : 0)) == 0) { \ 165 ( c )-> c -> ge = g ; \ 166 ( c )-> c -> dx = ( ge_dx ); \ 167 ( c )-> c -> s = `NUM_ENT ( g ); \ 168 ( c )-> c -> lock = l ; \ 169 ( c )-> c -> lock_mode = mode ; \ 171 } 0) ) 173 #BT_STK_PUSH ( dbv , c , g , ge_dx , lock , mode , t ) do { \ 174 `BT_STK_ENTER ( dbv , c , g , ge_dx , lock , mode , t ); \ 175 ++( c )-> c ; \ 176 } 0) ) 178 #BT_STK_NUM ( dbv , c , g , ge_dx , t ) do { \ 179 i(( t = (( c )-> c == \ 180 ( c )-> e ? `__bam_kgrow ( dbv , c) : 0)) == 0) { \ 181 ( c )-> c -> ge = NULL ; \ 182 ( c )-> c -> dx = ( ge_dx ); \ 183 ( c )-> c -> s = `NUM_ENT ( g ); \ 184 `LOCK_INIT (( c )-> c -> lock ); \ 185 ( c )-> c -> lock_mode = DB_LOCK_NG ; \ 187 } 0) ) 189 #BT_STK_NUMPUSH ( dbv , c , g , ge_dx , t ) do { \ 190 `BT_STK_NUM ( dbv , , g , ge_dx , t ); \ 191 ++( c )-> c ; \ 192 } 0) ) 194 #BT_STK_POP ( c ) \ 195 (( c )-> c =(c)-> ? NULL : --(c)->c) ) 198 s__curs { 200 __DBC_INTERNAL 203 EPG * ; 204 EPG * c ; 205 EPG * e ; 206 EPG ack [5]; 208 db_dx_t ovsize ; 210 db_o_t o ; 211 u_t32_t d ; 225 #C_DELETED 0x0001 ) 231 #C_RECNUM 0x0002 ) 238 #C_RENUMBER 0x0004 ) 239 u_t32_t ags ; 248 #B_MINKEY_TO_OVFLSIZE ( dbp , mkey , pgsize ) \ 249 (( u_t16_t )((( pgsize - `P_OVERHEAD ( dbp )/ (( mkey * P_INDX ) -\ 250 ( `BKEYDATA_PSIZE (0+ `DB_ALIGN (1, ( t32_t ))))) ) 256 #B_MAX ( a , b ((> (b)? (a: (b)) ) 257 #B_MAXSIZEONPAGE ( ovsize ) \ 258 ( `B_MAX ( BOVERFLOW_PSIZE , `BKEYDATA_PSIZE ( ovsize ))) ) 263 s__b { 269 db_pgno_t bt_ma ; 270 db_pgno_t bt_ro ; 272 u_t32_t bt_mkey ; 275 (* bt_com __P (( DB *, cڡ DBT *, const DBT *)); 277 size_t (* bt_efix __P (( DB *, cڡ DBT *, const DBT *)); 280 _d ; 281 _dim ; 282 u_t32_t _n ; 283 * _sour ; 292 db_pgno_t bt_gno ; 293 DB_LSN bt_ ; 302 _modifd ; 310 FILE * _ ; 311 _eof ; 312 db_o_t _ϡ ; 322 DB_CA_DI = 1, 323 DB_CA_DUP = 2, 324 DB_CA_RSPLIT = 3, 325 DB_CA_SPLIT = 4 326 } tdb__mode ; 331 #BPI_SPACEONLY 0x01 ) 332 #BPI_NORECNUM 0x02 ) 334 #i defed ( __lulus ) 338 ~"dbc_auto/b_auto.h " 339 ~"dbc_auto/b_ext.h " 340 ~"dbc/db_am.h " @../dbinc/clock.h 40 #ide _DB_CLOCK_H_ 41 #_DB_CLOCK_H_ ) 43 #i defed ( __lulus ) 56 time_t tv_c ; 57 tv_nc ; 58 } tdb_timeec ; 61 #unde timeecr 62 #timeecr ( tvp (vp)-> tv_c = (tvp)-> tv_nc = 0) ) 63 #unde timeecist 64 #timeecist ( tvp (vp)-> tv_c || (tvp)-> tv_nc ) ) 65 #unde timeeccmp 66 #timeeccmp ( tvp , uvp , cmp ) \ 67 ((( tvp )-> tv_c =( uvp )->tv_sec) ? \ 68 (( tvp )-> tv_nc `cmp ( uvp )->tv_nsec) : \ 69 (( tvp )-> tv_c `cmp ( uvp )->tv_c)) ) 70 #unde timeedd 71 #timeedd ( vvp , uvp ) \ 73 ( vvp )-> tv_c +( uvp )->tv_sec; \ 74 ( vvp )-> tv_nc +( uvp )->tv_nsec; \ 75 i(( vvp )-> tv_nc >= 1000000000) { \ 76 ( vvp )-> tv_c ++; \ 77 ( vvp )-> tv_nc -= 1000000000; \ 79 } 0) ) 80 #unde timeecsub 81 #timeecsub ( vvp , uvp ) \ 83 ( vvp )-> tv_c -( uvp )->tv_sec; \ 84 ( vvp )-> tv_nc -( uvp )->tv_nsec; \ 85 i(( vvp )-> tv_nc < 0) { \ 86 ( vvp )-> tv_c --; \ 87 ( vvp )-> tv_nc += 1000000000; \ 89 } 0) ) 91 #DB_TIMEOUT_TO_TIMESPEC ( t , vvp ) \ 93 ( vvp )-> tv_c = ( time_t )(( t ) / 1000000); \ 94 ( vvp )-> tv_nc = ()((( t ) % 1000000) * 1000); \ 95 } 0) ) 97 #DB_TIMESPEC_TO_TIMEOUT ( t , vvp ) \ 99 t = ( u_lg )(( vvp )-> tv_c * 1000000); \ 100 t +( u_lg )(( vvp )-> tv_nc / 1000); \ 102 t ++; \ 103 } 0) ) 105 #i defed ( __lulus ) @../dbinc/crypto.h 9 #idef _DB_CRYPTO_H_ 10 #_DB_CRYPTO_H_ ) 12 #i defed ( __lulus ) 38 s__db_ch { 39 u_t (* adj_size __P (( size_t )); 40 (* o __P (( DB_ENV *, *)); 41 (* dey __P (( DB_ENV *, *, *, u_t8_t *, size_t )); 42 (* y __P (( DB_ENV *, *, *, u_t8_t *, size_t )); 43 (* __P (( DB_ENV *, DB_CIPHER *)); 45 u_t8_t mac_key [ DB_MAC_KEY ]; 46 * da ; 48 #CIPHER_AES 1 ) 49 u_t8_t g ; 50 u_t8_t e [3]; 52 #CIPHER_ANY 0x00000001 ) 53 u_t32_t ags ; 56 #ifde HAVE_CRYPTO 58 ~"yo/rijndl/rijndl-i-f.h " 64 s__ch { 65 roff_t sswd ; 66 size_t sswd_n ; 67 u_t32_t ags ; 68 } tCIPHER ; 70 #DB_AES_KEYLEN 128 ) 71 #DB_AES_CHUNK 16 ) 73 s__s_ch { 74 keyIn dey_ki ; 75 keyIn y_ki ; 76 u_t32_t ags ; 77 } tAES_CIPHER ; 79 ~"dbc_auto/yo_ext.h " 82 #i defed ( __lulus ) @../dbinc/cxx_int.h 9 #ide _DB_CXX_INT_H_ 10 #_DB_CXX_INT_H_ ) 28 #WRAPPED_CLASS ( _WRAPPER_CLASS , _IMP_CLASS , _WRAPPED_TYPE ) \ 29 as c_IMP_CLASS {}; \ 31 le _WRAPPED_TYPE * `unwp ( _WRAPPER_CLASS * v ) \ 33 i(! v ) (0); \ 34 ( v -> g_ ## `_WRAPPED_TYPE ()); \ 37 le cڡ _WRAPPED_TYPE * `unwpCڡ (cڡ _WRAPPER_CLASS * v ) \ 39 i(! v ) (0); \ 40 ( v -> g_cڡ_ ## `_WRAPPED_TYPE ()); \ 41 } ) 43 $WRAPPED_CLASS ( Db , DbImp , DB ) 44 $WRAPPED_CLASS ( DbEnv , DbEnvImp , DB_ENV ) 45 $WRAPPED_CLASS ( DbMpoFe , DbMpoFeImp , DB_MPOOLFILE ) 46 $WRAPPED_CLASS ( DbSequ , DbSequImp , DB_SEQUENCE ) 47 $WRAPPED_CLASS ( DbTxn , DbTxnImp , DB_TXN ) 54 #ON_ERROR_THROW 1 ) 55 #ON_ERROR_RETURN 0 ) 56 #ON_ERROR_UNKNOWN (-1) ) 63 #DB_ERROR ( v , Δ , ecode , picy ) \ 64 DbEnv :: `ruime_r ( v , Δ , ecode , picy ) ) 66 #DB_ERROR_DBT ( v , Δ , dbt , picy ) \ 67 DbEnv :: `ruime_r_dbt ( v , Δ , dbt , picy ) ) 69 #DB_OVERFLOWED_DBT ( dbt ) \ 70 ( `F_ISSET ( dbt , DB_DBT_USERMEM && dbt-> size > dbt-> un ) ) 73 #DB_CXX_PRIVATE_ENV 0x00000001 ) @../dbinc/db.in 20 #ide _DB_H_ 21 #_DB_H_ ) 23 #idef __NO_SYSTEM_INCLUDES 24 ~<sys/tys.h > 25 @ gys_h_de @ 26 @ gdt_h_de @ 27 @ gddef_h_de @ 28 ~<dio.h > 29 @ gunid_h_de @ 30 @ gthad_h_de @ 33 @ gfm_hd @ 34 #i defed ( __lulus ) 38 @ DB_CONST @ 39 @ DB_PROTO1 @ 40 @ DB_PROTO2 @ 45 #DB_VERSION_MAJOR @ DB_VERSION_MAJOR @ ) 46 #DB_VERSION_MINOR @ DB_VERSION_MINOR @ ) 47 #DB_VERSION_PATCH @ DB_VERSION_PATCH @ ) 48 #DB_VERSION_STRING @ DB_VERSION_STRING @ ) 63 #idef __BIT_TYPES_DEFINED__ 64 #__BIT_TYPES_DEFINED__ ) 65 @ u_t8_de @ 66 @ t16_de @ 67 @ u_t16_de @ 68 @ t32_de @ 69 @ u_t32_de @ 70 @ t64_de @ 71 @ u_t64_de @ 74 @ u_ch_de @ 75 @ u_t_de @ 76 @ u_lg_de @ 77 @ u_sht_de @ 97 @ utmax_t_de @ 98 @ u_t_de @ 100 @ FILE_t_de @ 101 @ off_t_de @ 102 @ pid_t_de @ 103 @ size_t_de @ 104 @ ssize_t_de @ 105 @ time_t_de @ 110 @ db_q_de @ 113 @ db_thadid_t_de @ 116 u_t32_t tdb_pgno_t ; 117 u_t16_t tdb_dx_t ; 118 #DB_MAX_PAGES 0xfffffff ) 120 u_t32_t tdb_o_t ; 121 #DB_MAX_RECORDS 0xfffffff ) 123 u_t32_t tdb_timeout_t ; 132 u_t troff_t ; 138 __db ; __db tDB ; 139 __db_bt_ ; __db_bt_ tDB_BTREE_STAT ; 140 __db_ch ; __db_ch tDB_CIPHER ; 141 __db_com ; __db_com tDB_COMPACT ; 142 __db_dbt ; __db_db tDBT ; 143 __db_v ; __db_v tDB_ENV ; 144 __db_h_ ; __db_h_ tDB_HASH_STAT ; 145 __db_ock ; __db_ock tDB_LOCK_ILOCK ; 146 __db_lock_ ; __db_lock_ tDB_LOCK_STAT ; 147 __db_lock_h ; __db_lock_h tDB_LOCK_HSTAT ; 148 __db_lock_u ; __db_lock_u tDB_LOCK ; 149 __db_lock ; __db_lock tDB_LOCKER ; 150 __db_lockq ; __db_lockq tDB_LOCKREQ ; 151 __db_lockb ; __db_lockb tDB_LOCKTAB ; 152 __db_log ; __db_log tDB_LOG ; 153 __db_log_curs ; __db_log_curs tDB_LOGC ; 154 __db_log_ ; __db_log_ tDB_LOG_STAT ; 155 __db_l ; __db_l tDB_LSN ; 156 __db_mpo ; __db_mpo tDB_MPOOL ; 157 __db_mpo_f ;__db_mpo_f tDB_MPOOL_FSTAT ; 158 __db_mpo_ ; __db_mpo_ tDB_MPOOL_STAT ; 159 __db_mpofe ; __db_mpof tDB_MPOOLFILE ; 160 __db_mux_ ; __db_mux_ tDB_MUTEX_STAT ; 161 __db_mux_t ; __db_mux_ tDB_MUTEX ; 162 __db_muxmgr ; __db_muxmg tDB_MUTEXMGR ; 163 __db_li ; __db_li tDB_PREPLIST ; 164 __db_qam_ ; __db_qam_ tDB_QUEUE_STAT ; 165 __db_p ; __db_ tDB_REP ; 166 __db_p_ ; __db_p_ tDB_REP_STAT ; 167 __db_pmgr_se ; \ 168 __db_pmgr_se tDB_REPMGR_SITE ; 169 __db_pmgr_ ; \ 170 __db_pmgr_ tDB_REPMGR_STAT ; 171 __db_q_cd ; __db_q_cd tDB_SEQ_RECORD ; 172 __db_q_ ; __db_q_ tDB_SEQUENCE_STAT ; 173 __db_qu ; __db_qu tDB_SEQUENCE ; 174 __db_txn ; __db_tx tDB_TXN ; 175 __db_txn_aive ; __db_txn_aiv tDB_TXN_ACTIVE ; 176 __db_txn_ ; __db_txn_ tDB_TXN_STAT ; 177 __db_txnmgr ; __db_txnmg tDB_TXNMGR ; 178 __dbc ; __db tDBC ; 179 __dbc_ ; __dbc_ tDBC_INTERNAL ; 180 __fh_t ; __fh_ tDB_FH ; 181 __ame ; __am tFNAME ; 182 __key_nge ; __key_ng tDB_KEY_RANGE ; 183 __mpofe ; __mpof tMPOOLFILE ; 186 s__db_dbt { 187 * da ; 188 u_t32_t size ; 190 u_t32_t un ; 191 u_t32_t dn ; 192 u_t32_t doff ; 194 * p_da ; 196 #DB_DBT_APPMALLOC 0x001 ) 197 #DB_DBT_DUPOK 0x002 ) 198 #DB_DBT_ISSET 0x004 ) 199 #DB_DBT_MALLOC 0x008 ) 200 #DB_DBT_MULTIPLE 0x010 ) 201 #DB_DBT_PARTIAL 0x020 ) 202 #DB_DBT_REALLOC 0x040 ) 203 #DB_DBT_USERCOPY 0x080 ) 204 #DB_DBT_USERMEM 0x100 ) 205 u_t32_t ags ; 213 #DB_CREATE 0x0000001 ) 214 #DB_DURABLE_UNKNOWN 0x0000002 ) 215 #DB_FORCE 0x0000004 ) 216 #DB_MULTIVERSION 0x0000008 ) 217 #DB_NOMMAP 0x0000010 ) 218 #DB_RDONLY 0x0000020 ) 219 #DB_RECOVER 0x0000040 ) 220 #DB_THREAD 0x0000080 ) 221 #DB_TRUNCATE 0x0000100 ) 222 #DB_TXN_NOSYNC 0x0000200 ) 223 #DB_TXN_NOWAIT 0x0000400 ) 224 #DB_TXN_NOT_DURABLE 0x0000800 ) 225 #DB_TXN_WRITE_NOSYNC 0x0001000 ) 226 #DB_SPARE_FLAG 0x0002000 ) 250 #DB_IGNORE_LEASE 0x01000000 ) 251 #DB_AUTO_COMMIT 0x02000000 ) 253 #DB_READ_COMMITTED 0x04000000 ) 254 #DB_DEGREE_2 0x04000000 ) 256 #DB_READ_UNCOMMITTED 0x08000000 ) 257 #DB_DIRTY_READ 0x08000000 ) 259 #DB_TXN_SNAPSHOT 0x10000000 ) 264 #DB_CXX_NO_EXCEPTIONS 0x0000001 ) 269 #DB_RPCCLIENT 0x0000002 ) 274 #DB_XA_CREATE 0x0000002 ) 279 #DB_USE_ENVIRON 0x0004000 ) 280 #DB_USE_ENVIRON_ROOT 0x0008000 ) 284 #DB_INIT_CDB 0x0010000 ) 285 #DB_INIT_LOCK 0x0020000 ) 286 #DB_INIT_LOG 0x0040000 ) 287 #DB_INIT_MPOOL 0x0080000 ) 288 #DB_INIT_REP 0x0100000 ) 289 #DB_INIT_TXN 0x0200000 ) 290 #DB_LOCKDOWN 0x0400000 ) 291 #DB_PRIVATE 0x0800000 ) 292 #DB_RECOVER_FATAL 0x1000000 ) 293 #DB_REGISTER 0x2000000 ) 294 #DB_SYSTEM_MEM 0x4000000 ) 296 #DB_JOINENV 0x0 ) 301 #DB_EXCL 0x0004000 ) 302 #DB_FCNTL_LOCKING 0x0008000 ) 303 #DB_NO_AUTO_COMMIT 0x0010000 ) 304 #DB_RDWRMASTER 0x0020000 ) 305 #DB_WRITEOPEN 0x0040000 ) 310 #DB_IMMUTABLE_KEY 0x0004000 ) 316 #DB_TXN_SYNC 0x0004000 ) 317 #DB_TXN_WAIT 0x0008000 ) 322 #DB_CKP_INTERNAL 0x0004000 ) 327 #DB_ENCRYPT_AES 0x0000001 ) 332 #DB_CDB_ALLDB 0x00004000 ) 333 #DB_DIRECT_DB 0x00008000 ) 334 #DB_DIRECT_LOG 0x00010000 ) 335 #DB_DSYNC_DB 0x00020000 ) 336 #DB_DSYNC_LOG 0x00040000 ) 337 #DB_LOG_AUTOREMOVE 0x00080000 ) 338 #DB_LOG_INMEMORY 0x00100000 ) 339 #DB_NOLOCKING 0x00200000 ) 340 #DB_NOPANIC 0x00400000 ) 341 #DB_OVERWRITE 0x00800000 ) 342 #DB_PANIC_ENVIRONMENT 0x01000000 ) 347 #DB_REGION_INIT 0x20000000 ) 348 #DB_TIME_NOTGRANTED 0x40000000 ) 349 #DB_YIELDCPU 0x80000000 ) 354 #DB_UPGRADE 0x0000001 ) 355 #DB_VERIFY 0x0000002 ) 361 #DB_FREELIST_ONLY 0x00004000 ) 362 #DB_FREE_SPACE 0x00008000 ) 363 #DB_COMPACT_FLAGS \ 364 ( DB_FREELIST_ONLY | DB_FREE_SPACE ) ) 369 #DB_DIRECT 0x0004000 ) 370 #DB_EXTENT 0x0008000 ) 371 #DB_ODDFILESIZE 0x0010000 ) 376 #DB_CHKSUM 0x00004000 ) 377 #DB_DUP 0x00008000 ) 378 #DB_DUPSORT 0x00010000 ) 379 #DB_ENCRYPT 0x00020000 ) 380 #DB_INORDER 0x00040000 ) 381 #DB_RECNUM 0x00080000 ) 382 #DB_RENUMBER 0x00100000 ) 383 #DB_REVSPLITOFF 0x00200000 ) 384 #DB_SNAPSHOT 0x00400000 ) 389 #DB_FAST_STAT 0x0000001 ) 390 #DB_STAT_ALL 0x0000002 ) 391 #DB_STAT_CLEAR 0x0000004 ) 392 #DB_STAT_LOCK_CONF 0x0000008 ) 393 #DB_STAT_LOCK_LOCKERS 0x0000010 ) 394 #DB_STAT_LOCK_OBJECTS 0x0000020 ) 395 #DB_STAT_LOCK_PARAMS 0x0000040 ) 396 #DB_STAT_MEMP_HASH 0x0000080 ) 397 #DB_STAT_NOERROR 0x0000100 ) 398 #DB_STAT_SUBSYSTEM 0x0000200 ) 403 #DB_JOIN_NOSORT 0x0000001 ) 408 #DB_AGGRESSIVE 0x0000001 ) 409 #DB_NOORDERCHK 0x0000002 ) 410 #DB_ORDERCHKONLY 0x0000004 ) 411 #DB_PR_PAGE 0x0000008 ) 412 #DB_PR_RECOVERYTEST 0x0000010 ) 413 #DB_PRINTABLE 0x0000020 ) 414 #DB_SALVAGE 0x0000040 ) 415 #DB_UNREF 0x0000080 ) 425 #DB_REP_ANYWHERE 0x0000001 ) 426 #DB_REP_NOBUFFER 0x0000002 ) 427 #DB_REP_PERMANENT 0x0000004 ) 428 #DB_REP_REREQUEST 0x0000008 ) 433 u_t32_t tdb_mux_t ; 439 #DB_MUTEX_ALLOCATED 0x01 ) 440 #DB_MUTEX_LOCKED 0x02 ) 441 #DB_MUTEX_LOGICAL_LOCK 0x04 ) 442 #DB_MUTEX_PROCESS_ONLY 0x08 ) 443 #DB_MUTEX_SELF_BLOCK 0x10 ) 445 s__db_mux_ { 447 u_t32_t _mux_ign ; 448 u_t32_t _mux_s_s ; 449 u_t32_t _mux_t ; 450 u_t32_t _mux_ ; 451 u_t32_t _mux_u ; 452 u_t32_t _mux_u_max ; 455 #ide __TEST_DB_NO_STATISTICS 456 u_t32_t _gi_wa ; 457 u_t32_t _gi_nowa ; 458 roff_t _gsize ; 463 #DB_THREADID_STRLEN 128 ) 468 #DB_LOCKVERSION 1 ) 470 #DB_FILE_ID_LEN 20 ) 476 #DB_LOCK_NORUN 0 ) 477 #DB_LOCK_DEFAULT 1 ) 478 #DB_LOCK_EXPIRE 2 ) 479 #DB_LOCK_MAXLOCKS 3 ) 480 #DB_LOCK_MAXWRITE 4 ) 481 #DB_LOCK_MINLOCKS 5 ) 482 #DB_LOCK_MINWRITE 6 ) 483 #DB_LOCK_OLDEST 7 ) 484 #DB_LOCK_RANDOM 8 ) 485 #DB_LOCK_YOUNGEST 9 ) 488 #DB_LOCK_ABORT 0x001 ) 489 #DB_LOCK_NOWAIT 0x002 ) 490 #DB_LOCK_RECORD 0x004 ) 491 #DB_LOCK_SET_TIMEOUT 0x008 ) 492 #DB_LOCK_SWITCH 0x010 ) 493 #DB_LOCK_UPGRADE 0x020 ) 496 #DB_SET_LOCK_TIMEOUT 1 ) 497 #DB_SET_TXN_NOW 2 ) 498 #DB_SET_TXN_TIMEOUT 3 ) 509 DB_LOCK_NG =0, 510 DB_LOCK_READ =1, 511 DB_LOCK_WRITE =2, 512 DB_LOCK_WAIT =3, 513 DB_LOCK_IWRITE =4, 514 DB_LOCK_IREAD =5, 515 DB_LOCK_IWR =6, 516 DB_LOCK_READ_UNCOMMITTED =7, 517 DB_LOCK_WWRITE =8 518 } tdb_lockmode_t ; 524 DB_LOCK_DUMP =0, 525 DB_LOCK_GET =1, 526 DB_LOCK_GET_TIMEOUT =2, 527 DB_LOCK_INHERIT =3, 528 DB_LOCK_PUT =4, 529 DB_LOCK_PUT_ALL =5, 530 DB_LOCK_PUT_OBJ =6, 531 DB_LOCK_PUT_READ =7, 532 DB_LOCK_TIMEOUT =8, 533 DB_LOCK_TRADE =9, 534 DB_LOCK_UPGRADE_WRITE =10 535 } tdb_lock_t ; 541 DB_LSTAT_ABORTED =1, 542 DB_LSTAT_EXPIRED =2, 543 DB_LSTAT_FREE =3, 544 DB_LSTAT_HELD =4, 545 DB_LSTAT_PENDING =5, 548 DB_LSTAT_WAITING =6 549 } tdb_us_t ; 552 s__db_lock_ { 553 u_t32_t _id ; 554 u_t32_t _cur_maxid ; 555 u_t32_t _maxlocks ; 556 u_t32_t _maxlocks ; 557 u_t32_t _maxobjes ; 558 _nmodes ; 559 u_t32_t _ocks ; 560 #ide __TEST_DB_NO_STATISTICS 561 u_t32_t _ocks ; 562 u_t32_t _maxocks ; 563 u_t32_t _maxocks ; 564 u_t32_t _nobjes ; 565 u_t32_t _maxnobjes ; 566 u_t32_t _eques ; 567 u_t32_t _Ės ; 568 u_t32_t _nupgde ; 569 u_t32_t _ndowngde ; 570 u_t32_t _lock_wa ; 571 u_t32_t _lock_nowa ; 572 u_t32_t _nddlocks ; 573 db_timeout_t _locktimeout ; 574 u_t32_t _ocktimeouts ; 575 db_timeout_t _tximeout ; 576 u_t32_t _ximeouts ; 577 u_t32_t _objs_wa ; 578 u_t32_t _objs_nowa ; 579 u_t32_t _locks_wa ; 580 u_t32_t _locks_nowa ; 581 u_t32_t _locks_wa ; 582 u_t32_t _locks_nowa ; 583 u_t32_t _gi_wa ; 584 u_t32_t _gi_nowa ; 585 u_t32_t _hash_n ; 586 roff_t _gsize ; 590 s__db_lock_h { 591 u_t32_t _eques ; 592 u_t32_t _Ės ; 593 u_t32_t _nupgde ; 594 u_t32_t _ndowngde ; 595 u_t32_t _lock_wa ; 596 u_t32_t _lock_nowa ; 597 u_t32_t _ocktimeouts ; 598 u_t32_t _ximeouts ; 599 u_t32_t _hash_n ; 606 s__db_ock { 607 db_pgno_t pgno ; 608 u_t8_t feid [ DB_FILE_ID_LEN ]; 609 #DB_HANDLE_LOCK 1 ) 610 #DB_RECORD_LOCK 2 ) 611 #DB_PAGE_LOCK 3 ) 612 u_t32_t ty ; 620 s__db_lock_u { 621 roff_t off ; 622 u_t32_t ndx ; 624 u_t32_t g ; 625 db_lockmode_t mode ; 629 s__db_lockq { 630 db_lock_t ; 631 db_lockmode_t mode ; 632 db_timeout_t timeout ; 633 DBT * obj ; 634 DB_LOCK lock ; 640 #DB_LOGVERSION 13 ) 641 #DB_LOGOLDVER 8 ) 642 #DB_LOGMAGIC 0x040988 ) 645 #DB_ARCH_ABS 0x001 ) 646 #DB_ARCH_DATA 0x002 ) 647 #DB_ARCH_LOG 0x004 ) 648 #DB_ARCH_REMOVE 0x008 ) 651 #DB_FLUSH 0x001 ) 652 #DB_LOG_CHKPNT 0x002 ) 653 #DB_LOG_COMMIT 0x004 ) 654 #DB_LOG_NOCOPY 0x008 ) 655 #DB_LOG_NOT_DURABLE 0x010 ) 656 #DB_LOG_WRNOSYNC 0x020 ) 667 s__db_l { 668 u_t32_t fe ; 669 u_t32_t offt ; 681 #DB_ur_BEGIN 10000 ) 682 #DB_debug_FLAG 0x80000000 ) 688 s__db_log_curs { 689 DB_ENV * dbv ; 691 DB_FH * fhp ; 692 DB_LSN l ; 693 u_t32_t n ; 694 u_t32_t ev ; 696 DBT dbt ; 697 DB_LSN p_l ; 698 u_t32_t p_vsi ; 700 u_t8_t * bp ; 701 u_t32_t bp_size ; 702 u_t32_t bp_ ; 703 DB_LSN bp_l ; 705 u_t32_t bp_maxc ; 708 (* o __P (( DB_LOGC *, u_t32_t )); 709 (* g __P (( DB_LOGC *, DB_LSN *, DBT *, u_t32_t )); 710 (* vsi __P (( DB_LOGC *, u_t32_t *, u_int32_t)); 713 #DB_LOG_DISK 0x01 ) 714 #DB_LOG_LOCKED 0x02 ) 715 #DB_LOG_SILENT_ERR 0x04 ) 716 u_t32_t ags ; 720 s__db_log_ { 721 u_t32_t _magic ; 722 u_t32_t _vsi ; 723 _mode ; 724 u_t32_t _lg_bsize ; 725 u_t32_t _lg_size ; 726 u_t32_t _wc_bys ; 727 u_t32_t _wc_mbys ; 728 #ide __TEST_DB_NO_STATISTICS 729 u_t32_t _cd ; 730 u_t32_t _w_bys ; 731 u_t32_t _w_mbys ; 732 u_t32_t _wcou ; 733 u_t32_t _wcou_fl ; 734 u_t32_t _rcou ; 735 u_t32_t _scou ; 736 u_t32_t _gi_wa ; 737 u_t32_t _gi_nowa ; 738 u_t32_t _cur_fe ; 739 u_t32_t _cur_offt ; 740 u_t32_t _disk_fe ; 741 u_t32_t _disk_offt ; 742 u_t32_t _maxcommrush ; 743 u_t32_t _mcommrush ; 744 roff_t _gsize ; 755 #DB_SET_TXN_LSNP ( txn , blp , p ) \ 756 (( txn )-> `t_txn_lp xn, blp , p )) ) 762 #DB_MPOOL_CREATE 0x001 ) 763 #DB_MPOOL_DIRTY 0x002 ) 764 #DB_MPOOL_EDIT 0x004 ) 765 #DB_MPOOL_FREE 0x008 ) 766 #DB_MPOOL_LAST 0x010 ) 767 #DB_MPOOL_NEW 0x020 ) 770 #DB_MPOOL_DISCARD 0x001 ) 773 #DB_MPOOL_NOFILE 0x001 ) 774 #DB_MPOOL_UNLINK 0x002 ) 778 DB_PRIORITY_UNCHANGED =0, 779 DB_PRIORITY_VERY_LOW =1, 780 DB_PRIORITY_LOW =2, 781 DB_PRIORITY_DEFAULT =3, 782 DB_PRIORITY_HIGH =4, 783 DB_PRIORITY_VERY_HIGH =5 784 } tDB_CACHE_PRIORITY ; 787 s__db_mpofe { 788 DB_FH * fhp ; 794 u_t32_t f ; 796 u_t32_t pf ; 804 __db_mpofe * tqe_xt ; 805 __db_mpofe ** tqe_ev ; 806 } q ; 818 DB_ENV * dbv ; 819 MPOOLFILE * m ; 821 u_t32_t r_n ; 822 u_t8_t 823 feid [ DB_FILE_ID_LEN ]; 824 y ; 825 t32_t l_offt ; 826 u_t32_t gbys , bys ; 827 DBT * pgcook ; 828 t32_t iܙy ; 830 * addr ; 831 size_t n ; 833 u_t32_t cfig_ags ; 836 (* o __P (( DB_MPOOLFILE *, u_t32_t )); 837 (* g ) 838 __P (( DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_t32_t , *)); 839 (* g_r_n __P (( DB_MPOOLFILE *, u_t32_t *)); 840 (* g_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 841 (* g_ags __P (( DB_MPOOLFILE *, u_t32_t *)); 842 (* g_y __P (( DB_MPOOLFILE *, *)); 843 (* g_ϡ_pgno __P (( DB_MPOOLFILE *, db_pgno_t *)); 844 (* g_l_offt __P (( DB_MPOOLFILE *, t32_t *)); 845 (* g_maxsize __P (( DB_MPOOLFILE *, u_t32_t *, u_int32_t *)); 846 (* g_pgcook __P (( DB_MPOOLFILE *, DBT *)); 847 (* g_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY *)); 848 (* ݒ __P (( DB_MPOOLFILE *, cڡ *, u_t32_t , , size_t )); 849 (* put __P (( DB_MPOOLFILE *, *, DB_CACHE_PRIORITY , u_t32_t )); 850 (* t_r_n __P (( DB_MPOOLFILE *, u_t32_t )); 851 (* t_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 852 (* t_ags __P (( DB_MPOOLFILE *, u_t32_t , )); 853 (* t_y __P (( DB_MPOOLFILE *, )); 854 (* t_l_offt __P (( DB_MPOOLFILE *, t32_t )); 855 (* t_maxsize __P (( DB_MPOOLFILE *, u_t32_t , u_int32_t)); 856 (* t_pgcook __P (( DB_MPOOLFILE *, DBT *)); 857 (* t_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY )); 858 (* sync __P (( DB_MPOOLFILE *)); 869 #MP_FILEID_SET 0x001 ) 870 #MP_FLUSH 0x002 ) 871 #MP_MULTIVERSION 0x004 ) 872 #MP_OPEN_CALLED 0x008 ) 873 #MP_READONLY 0x010 ) 874 u_t32_t ags ; 878 s__db_mpo_ { 879 u_t32_t _gbys ; 880 u_t32_t _bys ; 881 u_t32_t _nche ; 882 u_t32_t _max_nche ; 883 size_t _mmsize ; 884 _maxݒfd ; 885 _maxwre ; 886 db_timeout_t _maxwre_p ; 887 u_t32_t _ges ; 888 #ide __TEST_DB_NO_STATISTICS 889 u_t32_t _m ; 890 u_t32_t _che_h ; 891 u_t32_t _che_miss ; 892 u_t32_t _ge_ ; 893 u_t32_t _ge_ ; 894 u_t32_t _ge_out ; 895 u_t32_t _ro_evi ; 896 u_t32_t _rw_evi ; 897 u_t32_t _ge_ick ; 898 u_t32_t _ge_n ; 899 u_t32_t _ge_dty ; 900 u_t32_t _hash_bucks ; 901 u_t32_t _hash_ches ; 902 u_t32_t _hash_lge ; 903 u_t32_t _hash_examed ; 904 u_t32_t _hash_nowa ; 905 u_t32_t _hash_wa ; 906 u_t32_t _hash_max_nowa ; 907 u_t32_t _hash_max_wa ; 908 u_t32_t _gi_nowa ; 909 u_t32_t _gi_wa ; 910 u_t32_t _mvcc_oz ; 911 u_t32_t _mvcc_thawed ; 912 u_t32_t _mvcc_d ; 913 u_t32_t _loc ; 914 u_t32_t _loc_bucks ; 915 u_t32_t _loc_max_bucks ; 916 u_t32_t _loc_ges ; 917 u_t32_t _loc_max_ges ; 918 u_t32_t _io_wa ; 919 roff_t _gsize ; 924 s__db_mpo_f { 925 * fe_me ; 926 u_t32_t _gesize ; 927 #ide __TEST_DB_NO_STATISTICS 928 u_t32_t _m ; 929 u_t32_t _che_h ; 930 u_t32_t _che_miss ; 931 u_t32_t _ge_ ; 932 u_t32_t _ge_ ; 933 u_t32_t _ge_out ; 940 #DB_TXNVERSION 1 ) 943 DB_TXN_ABORT =0, 944 DB_TXN_APPLY =1, 945 DB_TXN_BACKWARD_ALLOC =2, 946 DB_TXN_BACKWARD_ROLL =3, 947 DB_TXN_FORWARD_ROLL =4, 948 DB_TXN_OPENFILES =5, 949 DB_TXN_POPENFILES =6, 950 DB_TXN_PRINT =7 951 } tdb_cs ; 959 #DB_UNDO ( ((= DB_TXN_ABORT || \ 960 ( = DB_TXN_BACKWARD_ROLL || (= DB_TXN_BACKWARD_ALLOC ) ) 961 #DB_REDO ( ((= DB_TXN_FORWARD_ROLL || (= DB_TXN_APPLY ) ) 963 s__db_txn { 964 DB_TXNMGR * mg ; 965 DB_TXN * ; 967 u_t32_t txnid ; 968 * me ; 969 DB_LOCKER * lock ; 971 db_thadid_t tid ; 972 * td ; 973 db_timeout_t lock_timeout ; 974 db_timeout_t expe ; 975 * txn_li ; 984 __db_txn * tqe_xt ; 985 __db_txn ** tqe_ev ; 986 } lks ; 988 __db_txn * tqe_xt ; 989 __db_txn ** tqe_ev ; 990 } xks ; 997 s__kids { 998 __db_txn * tqh_f ; 999 __db_txn ** tqh_ϡ ; 1000 } kids ; 1008 __txn_evt * tqh_f ; 1009 __txn_evt ** tqh_ϡ ; 1010 } evts ; 1018 __txn_logc * qh_f ; 1019 __txn_logc ** qh_ϡ ; 1020 } logs ; 1028 __db_txn * tqe_xt ; 1029 __db_txn ** tqe_ev ; 1030 } klks ; 1032 * i_ ; 1033 * xml_ ; 1035 u_t32_t curss ; 1038 (* abt __P (( DB_TXN *)); 1039 (* comm __P (( DB_TXN *, u_t32_t )); 1040 (* disrd __P (( DB_TXN *, u_t32_t )); 1041 (* g_me __P (( DB_TXN *, const **)); 1042 u_t32_t (* id __P (( DB_TXN *)); 1043 (* e __P (( DB_TXN *, u_t8_t *)); 1044 (* t_me __P (( DB_TXN *, const *)); 1045 (* t_timeout __P (( DB_TXN *, db_timeout_t , u_t32_t )); 1049 (* t_txn_lp __P (( DB_TXN * txn , DB_LSN **, DB_LSN **)); 1052 #TXN_CHILDCOMMIT 0x0001 ) 1053 #TXN_CDSGROUP 0x0002 ) 1054 #TXN_COMPENSATE 0x0004 ) 1055 #TXN_DEADLOCK 0x0008 ) 1056 #TXN_LOCKTIMEOUT 0x0010 ) 1057 #TXN_MALLOC 0x0020 ) 1058 #TXN_NOSYNC 0x0040 ) 1059 #TXN_NOWAIT 0x0080 ) 1060 #TXN_PRIVATE 0x0100 ) 1061 #TXN_READ_COMMITTED 0x0200 ) 1062 #TXN_READ_UNCOMMITTED 0x0400 ) 1063 #TXN_RESTORED 0x0800 ) 1064 #TXN_SNAPSHOT 0x1000 ) 1065 #TXN_SYNC 0x2000 ) 1066 #TXN_WRITE_NOSYNC 0x4000 ) 1067 u_t32_t ags ; 1070 #TXN_SYNC_FLAGS ( TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC ) ) 1080 #DB_XIDDATASIZE 128 ) 1081 s__db_li { 1082 DB_TXN * txn ; 1083 u_t8_t gid [ DB_XIDDATASIZE ]; 1087 s__db_txn_aive { 1088 u_t32_t txnid ; 1089 u_t32_t id ; 1090 pid_t pid ; 1091 db_thadid_t tid ; 1093 DB_LSN l ; 1095 DB_LSN ad_l ; 1096 u_t32_t mvcc_f ; 1098 #TXN_ABORTED 1 ) 1099 #TXN_COMMITTED 2 ) 1100 #TXN_PREPARED 3 ) 1101 #TXN_RUNNING 4 ) 1102 u_t32_t us ; 1104 #TXN_XA_ABORTED 1 ) 1105 #TXN_XA_DEADLOCKED 2 ) 1106 #TXN_XA_ENDED 3 ) 1107 #TXN_XA_PREPARED 4 ) 1108 #TXN_XA_STARTED 5 ) 1109 #TXN_XA_SUSPENDED 6 ) 1110 u_t32_t xa_us ; 1112 u_t8_t xid [ DB_XIDDATASIZE ]; 1113 me [51]; 1116 s__db_txn_ { 1117 u_t32_t _ees ; 1119 #ide __TEST_DB_NO_STATISTICS 1120 DB_LSN _ϡ_ckp ; 1121 time_t _time_ckp ; 1122 u_t32_t _ϡ_txnid ; 1123 u_t32_t _maxtxns ; 1124 u_t32_t _bts ; 1125 u_t32_t _nbegs ; 1126 u_t32_t _ncomms ; 1127 u_t32_t _ive ; 1128 u_t32_t _nsh ; 1129 u_t32_t _maxive ; 1130 u_t32_t _maxnsh ; 1131 DB_TXN_ACTIVE * _txǼay ; 1132 u_t32_t _gi_wa ; 1133 u_t32_t _gi_nowa ; 1134 roff_t _gsize ; 1142 #DB_EID_BROADCAST -1 ) 1143 #DB_EID_INVALID -2 ) 1146 #DB_REP_CONF_BULK 0x0001 ) 1147 #DB_REP_CONF_DELAYCLIENT 0x0002 ) 1148 #DB_REP_CONF_NOAUTOINIT 0x0004 ) 1149 #DB_REP_CONF_NOWAIT 0x0008 ) 1158 #DB_REP_CLIENT 1 ) 1159 #DB_REP_ELECTION 2 ) 1160 #DB_REP_MASTER 3 ) 1162 #DB_REPFLAGS_MASK 0x000000f ) 1164 #DB_REP_DEFAULT_PRIORITY 100 ) 1167 #DB_REPMGR_ACKS_ALL 1 ) 1168 #DB_REPMGR_ACKS_ALL_PEERS 2 ) 1169 #DB_REPMGR_ACKS_NONE 3 ) 1170 #DB_REPMGR_ACKS_ONE 4 ) 1171 #DB_REPMGR_ACKS_ONE_PEER 5 ) 1172 #DB_REPMGR_ACKS_QUORUM 6 ) 1175 #DB_REP_ACK_TIMEOUT 1 ) 1176 #DB_REP_CHECKPOINT_DELAY 2 ) 1177 #DB_REP_CONNECTION_RETRY 3 ) 1178 #DB_REP_ELECTION_RETRY 4 ) 1179 #DB_REP_ELECTION_TIMEOUT 5 ) 1180 #DB_REP_FULL_ELECTION_TIMEOUT 6 ) 1181 #DB_REP_LEASE_TIMEOUT 7 ) 1184 #DB_EVENT_NO_SUCH_EVENT 0 ) 1185 #DB_EVENT_PANIC 1 ) 1186 #DB_EVENT_REP_CLIENT 2 ) 1187 #DB_EVENT_REP_ELECTED 3 ) 1188 #DB_EVENT_REP_MASTER 4 ) 1189 #DB_EVENT_REP_NEWMASTER 5 ) 1190 #DB_EVENT_REP_PERM_FAILED 6 ) 1191 #DB_EVENT_REP_STARTUPDONE 7 ) 1192 #DB_EVENT_WRITE_FAILED 8 ) 1195 #DB_REPMGR_PEER 0x01 ) 1198 s__db_pmgr_se { 1199 eid ; 1200 * ho ; 1201 u_t pt ; 1203 #DB_REPMGR_CONNECTED 0x01 ) 1204 #DB_REPMGR_DISCONNECTED 0x02 ) 1205 u_t32_t us ; 1209 s__db_p_ { 1219 u_t32_t _log_queued ; 1220 u_t32_t _tup_come ; 1221 #ide __TEST_DB_NO_STATISTICS 1222 u_t32_t _us ; 1223 DB_LSN _xt_l ; 1224 DB_LSN _wag_l ; 1225 db_pgno_t _xt_pg ; 1226 db_pgno_t _wag_pg ; 1228 u_t32_t _dupmas ; 1230 _v_id ; 1231 _v_iܙy ; 1232 u_t32_t _bulk_fls ; 1233 u_t32_t _bulk_ovows ; 1234 u_t32_t _bulk_cds ; 1235 u_t32_t _bulk_srs ; 1236 u_t32_t __ques ; 1237 u_t32_t __svc_q ; 1239 u_t32_t __svc_miss ; 1241 u_t32_t _g ; 1242 u_t32_t _eg ; 1243 u_t32_t _log_duid ; 1244 u_t32_t _log_queued_max ; 1245 u_t32_t _log_queued_tٮ ; 1246 u_t32_t _log_cds ; 1247 u_t32_t _log_queed ; 1248 _ma ; 1249 u_t32_t _ma_chges ; 1250 u_t32_t _msgs_badg ; 1251 u_t32_t _msgs_osd ; 1252 u_t32_t _msgs_cov ; 1254 u_t32_t _msgs_nd_us ; 1255 u_t32_t _msgs_ ; 1256 u_t32_t _wses ; 1257 _nses ; 1259 u_t32_t _hrَes ; 1260 u_t32_t _outded ; 1262 u_t32_t _pg_duid ; 1263 u_t32_t _pg_cds ; 1264 u_t32_t _pg_queed ; 1265 u_t32_t _txns_d ; 1266 u_t32_t _tsync_dayed ; 1269 u_t32_t _eis ; 1270 u_t32_t _eis_w ; 1273 _ei_cur_wr ; 1274 u_t32_t _ei_g ; 1275 DB_LSN _ei_l ; 1276 _ei_nses ; 1277 _ei_nves ; 1278 _ei_iܙy ; 1279 _ei_us ; 1280 u_t32_t _ei_tbak ; 1281 _ei_ves ; 1282 u_t32_t _ei_c ; 1283 u_t32_t _ei_uc ; 1288 s__db_pmgr_ { 1289 u_t32_t _rm_ed ; 1290 u_t32_t _msgs_queued ; 1291 u_t32_t _msgs_drݳd ; 1293 u_t32_t _ci_dr ; 1294 u_t32_t _c_ ; 1303 s__db_q_cd { 1304 u_t32_t q_vsi ; 1305 #DB_SEQ_DEC 0x00000001 ) 1306 #DB_SEQ_INC 0x00000002 ) 1307 #DB_SEQ_RANGE_SET 0x00000004 ) 1308 #DB_SEQ_WRAP 0x00000008 ) 1309 #DB_SEQ_WRAPPED 0x00000010 ) 1310 u_t32_t ags ; 1311 db_q_t q_vue ; 1312 db_q_t q_max ; 1313 db_q_t q_m ; 1319 s__db_qu { 1320 DB * q_dbp ; 1321 db_mux_t mtx_q ; 1322 DB_SEQ_RECORD * q_ ; 1323 DB_SEQ_RECORD q_cd ; 1324 t32_t q_che_size ; 1325 db_q_t q_ϡ_vue ; 1326 DBT q_key ; 1327 DBT q_da ; 1330 * i_ ; 1333 (* o __P (( DB_SEQUENCE *, u_t32_t )); 1334 (* g __P (( DB_SEQUENCE *, 1335 DB_TXN *, t32_t , db_q_t *, u_t32_t )); 1336 (* g_chesize __P (( DB_SEQUENCE *, t32_t *)); 1337 (* g_db __P (( DB_SEQUENCE *, DB **)); 1338 (* g_ags __P (( DB_SEQUENCE *, u_t32_t *)); 1339 (* g_key __P (( DB_SEQUENCE *, DBT *)); 1340 (* g_nge __P (( DB_SEQUENCE *, 1341 db_q_t *, db_seq_t *)); 1342 (* l_vue __P (( DB_SEQUENCE *, db_q_t )); 1343 (* ݒ __P (( DB_SEQUENCE *, 1344 DB_TXN *, DBT *, u_t32_t )); 1345 (* move __P (( DB_SEQUENCE *, DB_TXN *, u_t32_t )); 1346 (* t_chesize __P (( DB_SEQUENCE *, t32_t )); 1347 (* t_ags __P (( DB_SEQUENCE *, u_t32_t )); 1348 (* t_nge __P (( DB_SEQUENCE *, db_q_t , db_seq_t)); 1349 (* __P (( DB_SEQUENCE *, 1350 DB_SEQUENCE_STAT **, u_t32_t )); 1351 (* _t __P (( DB_SEQUENCE *, u_t32_t )); 1355 s__db_q_ { 1356 u_t32_t _wa ; 1357 u_t32_t _nowa ; 1358 db_q_t _cut ; 1359 db_q_t _vue ; 1360 db_q_t _ϡ_vue ; 1361 db_q_t _m ; 1362 db_q_t _max ; 1363 t32_t _che_size ; 1364 u_t32_t _ags ; 1371 DB_BTREE =1, 1372 DB_HASH =2, 1373 DB_RECNO =3, 1374 DB_QUEUE =4, 1375 DB_UNKNOWN =5 1376 } tDBTYPE ; 1378 #DB_RENAMEMAGIC 0x030800 ) 1380 #DB_BTREEVERSION 9 ) 1381 #DB_BTREEOLDVER 8 ) 1382 #DB_BTREEMAGIC 0x053162 ) 1384 #DB_HASHVERSION 9 ) 1385 #DB_HASHOLDVER 7 ) 1386 #DB_HASHMAGIC 0x061561 ) 1388 #DB_QAMVERSION 4 ) 1389 #DB_QAMOLDVER 3 ) 1390 #DB_QAMMAGIC 0x042253 ) 1392 #DB_SEQUENCE_VERSION 2 ) 1393 #DB_SEQUENCE_OLDVER 1 ) 1399 #DB_AFTER 1 ) 1400 #DB_APPEND 2 ) 1401 #DB_BEFORE 3 ) 1402 #DB_CONSUME 4 ) 1403 #DB_CONSUME_WAIT 5 ) 1404 #DB_CURRENT 6 ) 1405 #DB_FIRST 7 ) 1406 #DB_GET_BOTH 8 ) 1407 #DB_GET_BOTHC 9 ) 1408 #DB_GET_BOTH_RANGE 10 ) 1409 #DB_GET_RECNO 11 ) 1410 #DB_JOIN_ITEM 12 ) 1411 #DB_KEYFIRST 13 ) 1412 #DB_KEYLAST 14 ) 1413 #DB_LAST 15 ) 1414 #DB_NEXT 16 ) 1415 #DB_NEXT_DUP 17 ) 1416 #DB_NEXT_NODUP 18 ) 1417 #DB_NODUPDATA 19 ) 1418 #DB_NOOVERWRITE 20 ) 1419 #DB_NOSYNC 21 ) 1420 #DB_POSITION 22 ) 1421 #DB_PREV 23 ) 1422 #DB_PREV_DUP 24 ) 1423 #DB_PREV_NODUP 25 ) 1424 #DB_SET 26 ) 1425 #DB_SET_RANGE 27 ) 1426 #DB_SET_RECNO 28 ) 1427 #DB_UPDATE_SECONDARY 29 ) 1428 #DB_WRITECURSOR 30 ) 1429 #DB_WRITELOCK 31 ) 1432 #DB_OPFLAGS_MASK 0x000000f ) 1442 #DB_MULTIPLE 0x10000000 ) 1443 #DB_MULTIPLE_KEY 0x20000000 ) 1444 #DB_RMW 0x40000000 ) 1455 #DB_BUFFER_SMALL (-30999) ) 1456 #DB_DONOTINDEX (-30998) ) 1457 #DB_KEYEMPTY (-30997) ) 1458 #DB_KEYEXIST (-30996) ) 1459 #DB_LOCK_DEADLOCK (-30995) ) 1460 #DB_LOCK_NOTGRANTED (-30994) ) 1461 #DB_LOG_BUFFER_FULL (-30993) ) 1462 #DB_NOSERVER (-30992) ) 1463 #DB_NOSERVER_HOME (-30991) ) 1464 #DB_NOSERVER_ID (-30990) ) 1465 #DB_NOTFOUND (-30989) ) 1466 #DB_OLD_VERSION (-30988) ) 1467 #DB_PAGE_NOTFOUND (-30987) ) 1468 #DB_REP_DUPMASTER (-30986) ) 1469 #DB_REP_HANDLE_DEAD (-30985) ) 1470 #DB_REP_HOLDELECTION (-30984) ) 1471 #DB_REP_IGNORE (-30983) ) 1472 #DB_REP_ISPERM (-30982) ) 1473 #DB_REP_JOIN_FAILURE (-30981) ) 1474 #DB_REP_LEASE_EXPIRED (-30980) ) 1475 #DB_REP_LOCKOUT (-30979) ) 1476 #DB_REP_NEWSITE (-30978) ) 1477 #DB_REP_NOTPERM (-30977) ) 1478 #DB_REP_UNAVAIL (-30976) ) 1479 #DB_RUNRECOVERY (-30975) ) 1480 #DB_SECONDARY_BAD (-30974) ) 1481 #DB_VERIFY_BAD (-30973) ) 1482 #DB_VERSION_MISMATCH (-30972) ) 1485 #DB_ALREADY_ABORTED (-30899) ) 1486 #DB_DELETED (-30898) ) 1487 #DB_EVENT_NOT_HANDLED (-30897) ) 1488 #DB_NEEDSPLIT (-30896) ) 1489 #DB_REP_BULKOVF (-30895) ) 1490 #DB_REP_EGENCHG (-30894) ) 1491 #DB_REP_LOGREADY (-30893) ) 1492 #DB_REP_NEWMASTER (-30892) ) 1493 #DB_REP_PAGEDONE (-30891) ) 1494 #DB_SURPRISE_KID (-30890) ) 1496 #DB_SWAPBYTES (-30889) ) 1497 #DB_TIMEOUT (-30888) ) 1498 #DB_TXN_CKP (-30887) ) 1499 #DB_VERIFY_FATAL (-30886) ) 1502 s__db { 1506 u_t32_t pgsize ; 1507 DB_CACHE_PRIORITY iܙy ; 1510 (* db_nd_o __P (( DB *, DBT *, db_o_t )); 1511 (* db_edback __P (( DB *, , )); 1512 (* dup_com __P (( DB *, cڡ DBT *, const DBT *)); 1514 * p_ive ; 1519 DB_ENV * dbv ; 1521 DBTYPE ty ; 1523 DB_MPOOLFILE * mpf ; 1525 db_mux_t mux ; 1527 * ame , * dme ; 1528 u_t32_t ݒ_ags ; 1530 u_t8_t feid [ DB_FILE_ID_LEN ]; 1532 u_t32_t adj_feid ; 1534 #DB_LOGFILEID_INVALID -1 ) 1535 FNAME * log_fame ; 1537 db_pgno_t ma_pgno ; 1538 DB_LOCKER * lock ; 1539 DB_LOCKER * cur_lock ; 1540 DB_TXN * cur_txn ; 1541 DB_LOCKER * assoc_lock ; 1542 DB_LOCK hd_lock ; 1544 u_t _id ; 1546 time_t timeamp ; 1547 u_t32_t fid_g ; 1552 DBT my_rskey ; 1553 DBT my_rkey ; 1554 DBT my_rda ; 1569 DB_FH * ved_ݒ_fhp ; 1580 __db * tqe_xt ; 1581 __db ** tqe_ev ; 1582 } dblilks ; 1593 s__cq_fq { 1594 __dbc * tqh_f ; 1595 __dbc ** tqh_ϡ ; 1596 } _queue ; 1597 s__cq_aq { 1598 __dbc * tqh_f ; 1599 __dbc ** tqh_ϡ ; 1600 } aive_queue ; 1601 s__cq_jq { 1602 __dbc * tqh_f ; 1603 __dbc ** tqh_ϡ ; 1604 } jo_queue ; 1616 __db * lh_f ; 1617 } s_cds ; 1632 __db * _xt ; 1633 __db ** _ev ; 1634 } s_lks ; 1635 u_t32_t s_ft ; 1638 (* s_back __P (( DB *, cڡ DBT *, const DBT *, DBT *)); 1641 DB * s_imy ; 1643 #DB_ASSOC_IMMUTABLE_KEY 0x00000001 ) 1646 u_t32_t s_assoc_ags ; 1649 * i_ ; 1652 * bt_ ; 1653 * h_ ; 1654 * q_ ; 1655 * xa_ ; 1658 (* assoc __P (( DB *, DB_TXN *, DB *, 1659 (*)( DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 1660 (* o __P (( DB *, u_t32_t )); 1661 (* com __P (( DB *, 1662 DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)); 1663 (* curs __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 1664 (* d __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 1665 (* r __P (( DB *, , const *, ...)); 1666 (* rx __P (( DB *, const *, ...)); 1667 (* exis __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 1668 (* fd __P (( DB *, *)); 1669 (* g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 1670 (* g_bt_mkey __P (( DB *, u_t32_t *)); 1671 (* g_byswd __P (( DB *, *)); 1672 (* g_chesize __P (( DB *, u_t32_t *, u_int32_t *, *)); 1673 (* g_dbme __P (( DB *, const **, const **)); 1674 (* g_y_ags __P (( DB *, u_t32_t *)); 1675 DB_ENV *(* g_v __P (( DB *)); 1676 (* g_rfe __P (( DB *, FILE **)); 1677 (* g_fx __P (( DB *, const **)); 1678 (* g_ags __P (( DB *, u_t32_t *)); 1679 (* g_h_f __P (( DB *, u_t32_t *)); 1680 (* g_h_m __P (( DB *, u_t32_t *)); 1681 (* g_ld __P (( DB *, *)); 1682 DB_MPOOLFILE *(* g_mpf __P (( DB *)); 1683 (* g_msgfe __P (( DB *, FILE **)); 1684 (* g_muɝ __P (( DB *)); 1685 (* g_ݒ_ags __P (( DB *, u_t32_t *)); 1686 (* g_gesize __P (( DB *, u_t32_t *)); 1687 (* g_iܙy __P (( DB *, DB_CACHE_PRIORITY *)); 1688 (* g_q_exsize __P (( DB *, u_t32_t *)); 1689 (* g__dim __P (( DB *, *)); 1690 (* g__n __P (( DB *, u_t32_t *)); 1691 (* g__d __P (( DB *, *)); 1692 (* g__sour __P (( DB *, const **)); 1693 (* g_iڮ __P (( DB *)); 1694 (* g_ty __P (( DB *, DBTYPE *)); 1695 (* jo __P (( DB *, DBC **, DBC **, u_t32_t )); 1696 (* key_nge ) 1697 __P (( DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_t32_t )); 1698 (* ݒ __P (( DB *, 1699 DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , )); 1700 (* pg __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 1701 (* put __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 1702 (* move __P (( DB *, cڡ *, cڡ *, u_t32_t )); 1703 (* me __P (( DB *, 1704 cڡ *, cڡ *, cڡ *, u_t32_t )); 1705 (* t_loc __P (( DB *, *(*)( size_t ), 1706 *(*)(*, size_t ), (*)(*))); 1707 (* t_nd_o __P (( DB *, (*)(DB *, DBT *, db_o_t ))); 1708 (* t_bt_com ) 1709 __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 1710 (* t_bt_mkey __P (( DB *, u_t32_t )); 1711 (* t_bt_efix ) 1712 __P (( DB *, size_t (*)(DB *, cڡ DBT *, const DBT *))); 1713 (* t_chesize __P (( DB *, u_t32_t , u_int32_t, )); 1714 (* t_dup_com ) 1715 __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 1716 (* t_y __P (( DB *, cڡ *, u_t32_t )); 1717 (* t_r __P (( DB *, 1718 (*)(cڡ DB_ENV *, const *, const *))); 1719 (* t_rfe __P (( DB *, FILE *)); 1720 (* t_fx __P (( DB *, const *)); 1721 (* t_edback __P (( DB *, (*)(DB *, , ))); 1722 (* t_ags __P (( DB *, u_t32_t )); 1723 (* t_h_com ) 1724 __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 1725 (* t_h_f __P (( DB *, u_t32_t )); 1726 (* t_h_hash ) 1727 __P (( DB *, u_t32_t (*)(DB *, const *, u_int32_t))); 1728 (* t_h_m __P (( DB *, u_t32_t )); 1729 (* t_ld __P (( DB *, )); 1730 (* t_msg __P (( DB *, (*)(cڡ DB_ENV *, const *))); 1731 (* t_msgfe __P (( DB *, FILE *)); 1732 (* t_gesize __P (( DB *, u_t32_t )); 1733 (* t_nic __P (( DB *, (*)( DB_ENV *, ))); 1734 (* t_iܙy __P (( DB *, DB_CACHE_PRIORITY )); 1735 (* t_q_exsize __P (( DB *, u_t32_t )); 1736 (* t__dim __P (( DB *, )); 1737 (* t__n __P (( DB *, u_t32_t )); 1738 (* t__d __P (( DB *, )); 1739 (* t__sour __P (( DB *, const *)); 1740 (* __P (( DB *, DB_TXN *, *, u_t32_t )); 1741 (* _t __P (( DB *, u_t32_t )); 1742 (* sync __P (( DB *, u_t32_t )); 1743 (* un __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 1744 (* upgde __P (( DB *, cڡ *, u_t32_t )); 1745 (* vify ) 1746 __P (( DB *, cڡ *, cڡ *, FILE *, u_t32_t )); 1750 (* dump __P (( DB *, const *, 1752 (* db_am_move __P (( DB *, DB_TXN *, const *, const *)); 1753 (* db_am_me __P (( DB *, DB_TXN *, 1761 (* ed_g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 1762 (* ed_o __P (( DB *, u_t32_t )); 1764 #DB_OK_BTREE 0x01 ) 1765 #DB_OK_HASH 0x02 ) 1766 #DB_OK_QUEUE 0x04 ) 1767 #DB_OK_RECNO 0x08 ) 1768 u_t32_t am_ok ; 1775 erve_fid ; 1777 #DB_AM_CHKSUM 0x00000001 ) 1778 #DB_AM_COMPENSATE 0x00000002 ) 1779 #DB_AM_CREATED 0x00000004 ) 1780 #DB_AM_CREATED_MSTR 0x00000008 ) 1781 #DB_AM_DBM_ERROR 0x00000010 ) 1782 #DB_AM_DELIMITER 0x00000020 ) 1783 #DB_AM_DISCARD 0x00000040 ) 1784 #DB_AM_DUP 0x00000080 ) 1785 #DB_AM_DUPSORT 0x00000100 ) 1786 #DB_AM_ENCRYPT 0x00000200 ) 1787 #DB_AM_FIXEDLEN 0x00000400 ) 1788 #DB_AM_INMEM 0x00000800 ) 1789 #DB_AM_INORDER 0x00001000 ) 1790 #DB_AM_IN_RENAME 0x00002000 ) 1791 #DB_AM_NOT_DURABLE 0x00004000 ) 1792 #DB_AM_OPEN_CALLED 0x00008000 ) 1793 #DB_AM_PAD 0x00010000 ) 1794 #DB_AM_PGDEF 0x00020000 ) 1795 #DB_AM_RDONLY 0x00040000 ) 1796 #DB_AM_READ_UNCOMMITTED 0x00080000 ) 1797 #DB_AM_RECNUM 0x00100000 ) 1798 #DB_AM_RECOVER 0x00200000 ) 1799 #DB_AM_RENUMBER 0x00400000 ) 1800 #DB_AM_REVSPLITOFF 0x00800000 ) 1801 #DB_AM_SECONDARY 0x01000000 ) 1802 #DB_AM_SNAPSHOT 0x02000000 ) 1803 #DB_AM_SUBDB 0x04000000 ) 1804 #DB_AM_SWAP 0x08000000 ) 1805 #DB_AM_TXN 0x10000000 ) 1806 #DB_AM_VERIFYING 0x20000000 ) 1807 u_t32_t ig_ags ; 1808 u_t32_t ags ; 1815 #DB_MULTIPLE_INIT ( por , dbt ) \ 1816 ( por = ( u_t8_t *)( dbt )-> da + \ 1817 ( dbt )-> un - ( u_t32_t )) ) 1818 #DB_MULTIPLE_NEXT ( por , dbt , tda , tdn ) \ 1820 i(*(( u_t32_t *)( por )) == (u_int32_t)-1) { \ 1821 tda = NULL ; \ 1822 por = NULL ; \ 1825 tda = ( u_t8_t *) \ 1826 ( dbt )-> da + *( u_t32_t *)( por ); \ 1827 ( por ( u_t32_t *)(pointer) - 1; \ 1828 tdn = *( u_t32_t *)( por ); \ 1829 ( por ( u_t32_t *)(pointer) - 1; \ 1830 i( tdn == 0 && \ 1831 tda =( u_t8_t *)( dbt )-> da ) \ 1832 tda = NULL ; \ 1833 } 0) ) 1834 #DB_MULTIPLE_KEY_NEXT ( por , dbt , tkey , tkn , tda , tdn ) \ 1836 i(*(( u_t32_t *)( por )) == (u_int32_t)-1) { \ 1837 tda = NULL ; \ 1838 tkey = NULL ; \ 1839 por = NULL ; \ 1842 tkey = ( u_t8_t *) \ 1843 ( dbt )-> da + *( u_t32_t *)( por ); \ 1844 ( por ( u_t32_t *)(pointer) - 1; \ 1845 tkn = *( u_t32_t *)( por ); \ 1846 ( por ( u_t32_t *)(pointer) - 1; \ 1847 tda = ( u_t8_t *) \ 1848 ( dbt )-> da + *( u_t32_t *)( por ); \ 1849 ( por ( u_t32_t *)(pointer) - 1; \ 1850 tdn = *( u_t32_t *)( por ); \ 1851 ( por ( u_t32_t *)(pointer) - 1; \ 1852 } 0) ) 1854 #DB_MULTIPLE_RECNO_NEXT ( por , dbt , o , tda , tdn ) \ 1856 i(*(( u_t32_t *)( por )) == (u_int32_t)0) { \ 1857 o = 0; \ 1858 tda = NULL ; \ 1859 por = NULL ; \ 1862 o = *( u_t32_t *)( por ); \ 1863 ( por ( u_t32_t *)(pointer) - 1; \ 1864 tda = ( u_t8_t *) \ 1865 ( dbt )-> da + *( u_t32_t *)( por ); \ 1866 ( por ( u_t32_t *)(pointer) - 1; \ 1867 tdn = *( u_t32_t *)( por ); \ 1868 ( por ( u_t32_t *)(pointer) - 1; \ 1869 } 0) ) 1874 s__dbc { 1875 DB * dbp ; 1876 DB_TXN * txn ; 1877 DB_CACHE_PRIORITY iܙy ; 1887 DBC * tqe_xt ; 1888 DBC ** tqe_ev ; 1889 } lks ; 1902 DBT * rskey ; 1903 DBT * rkey ; 1904 DBT * rda ; 1906 DBT my_rskey ; 1907 DBT my_rkey ; 1908 DBT my_rda ; 1910 * ef ; 1911 DB_LOCKER * lock ; 1912 DBT lock_dbt ; 1913 DB_LOCK_ILOCK lock ; 1914 DB_LOCK mylock ; 1916 u_t _id ; 1918 DBTYPE dbty ; 1920 DBC_INTERNAL * ; 1923 (* o __P (( DBC *)); 1924 (* cou __P (( DBC *, db_o_t *, u_t32_t )); 1925 (* d __P (( DBC *, u_t32_t )); 1926 (* dup __P (( DBC *, DBC **, u_t32_t )); 1927 (* g __P (( DBC *, DBT *, DBT *, u_t32_t )); 1928 (* g_iܙy __P (( DBC *, DB_CACHE_PRIORITY *)); 1929 (* pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 1930 (* put __P (( DBC *, DBT *, DBT *, u_t32_t )); 1931 (* t_iܙy __P (( DBC *, DB_CACHE_PRIORITY )); 1935 (* c_o __P (( DBC *)); 1936 (* c_cou __P (( DBC *, db_o_t *, u_t32_t )); 1937 (* c_d __P (( DBC *, u_t32_t )); 1938 (* c_dup __P (( DBC *, DBC **, u_t32_t )); 1939 (* c_g __P (( DBC *, DBT *, DBT *, u_t32_t )); 1940 (* c_pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 1941 (* c_put __P (( DBC *, DBT *, DBT *, u_t32_t )); 1944 (* am_bulk __P (( DBC *, DBT *, u_t32_t )); 1945 (* am_o __P (( DBC *, db_pgno_t , *)); 1946 (* am_d __P (( DBC *)); 1947 (* am_deroy __P (( DBC *)); 1948 (* am_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 1949 (* am_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 1950 (* am_wrock __P (( DBC *)); 1961 #DBC_ACTIVE 0x0001 ) 1962 #DBC_DONTLOCK 0x0002 ) 1963 #DBC_MULTIPLE 0x0004 ) 1964 #DBC_MULTIPLE_KEY 0x0008 ) 1965 #DBC_OPD 0x0010 ) 1966 #DBC_OWN_LID 0x0020 ) 1967 #DBC_READ_COMMITTED 0x0040 ) 1968 #DBC_READ_UNCOMMITTED 0x0080 ) 1969 #DBC_RECOVER 0x0100 ) 1970 #DBC_RMW 0x0200 ) 1971 #DBC_TRANSIENT 0x0400 ) 1972 #DBC_WRITECURSOR 0x0800 ) 1973 #DBC_WRITER 0x1000 ) 1974 u_t32_t ags ; 1978 s__key_nge { 1979 ss ; 1980 equ ; 1981 g ; 1985 s__db_bt_ { 1986 u_t32_t bt_magic ; 1987 u_t32_t bt_vsi ; 1988 u_t32_t bt_maags ; 1989 u_t32_t bt_nkeys ; 1990 u_t32_t bt_nda ; 1991 u_t32_t bt_get ; 1992 u_t32_t bt_gesize ; 1993 u_t32_t bt_mkey ; 1994 u_t32_t bt__n ; 1995 u_t32_t bt__d ; 1996 u_t32_t bt_vs ; 1997 u_t32_t bt_t_pg ; 1998 u_t32_t bt_af_pg ; 1999 u_t32_t bt_dup_pg ; 2000 u_t32_t bt_ov_pg ; 2001 u_t32_t bt_emy_pg ; 2002 u_t32_t bt_ ; 2003 u_t32_t bt_t_pg ; 2004 u_t32_t bt_af_pg ; 2005 u_t32_t bt_dup_pg ; 2006 u_t32_t bt_ov_pg ; 2009 s__db_com { 2011 u_t32_t com_f͔ ; 2012 db_timeout_t com_timeout ; 2013 u_t32_t com_ges ; 2015 u_t32_t com_ges_ ; 2016 u_t32_t com_ges_exame ; 2017 u_t32_t com_vs ; 2018 u_t32_t com_ddlock ; 2019 db_pgno_t com_ges_und ; 2021 db_pgno_t com_un ; 2025 s__db_h_ { 2026 u_t32_t hash_magic ; 2027 u_t32_t hash_vsi ; 2028 u_t32_t hash_maags ; 2029 u_t32_t hash_nkeys ; 2030 u_t32_t hash_nda ; 2031 u_t32_t hash_get ; 2032 u_t32_t hash_gesize ; 2033 u_t32_t hash_f ; 2034 u_t32_t hash_bucks ; 2035 u_t32_t hash_ ; 2036 u_t32_t hash_b ; 2037 u_t32_t hash_bigges ; 2038 u_t32_t hash_big_b ; 2039 u_t32_t hash_ovows ; 2040 u_t32_t hash_ov_ ; 2041 u_t32_t hash_dup ; 2042 u_t32_t hash_dup_ ; 2046 s__db_qam_ { 2047 u_t32_t qs_magic ; 2048 u_t32_t qs_vsi ; 2049 u_t32_t qs_maags ; 2050 u_t32_t qs_nkeys ; 2051 u_t32_t qs_nda ; 2052 u_t32_t qs_gesize ; 2053 u_t32_t qs_exsize ; 2054 u_t32_t qs_ges ; 2055 u_t32_t qs__n ; 2056 u_t32_t qs__d ; 2057 u_t32_t qs_pg ; 2058 u_t32_t qs_f_o ; 2059 u_t32_t qs_cur_o ; 2065 #DB_REGION_MAGIC 0x120897 ) 2068 s__db_v { 2073 (* db_r __P ((cڡ DB_ENV *, const *, const *)); 2074 FILE * db_rfe ; 2075 cڡ * db_fx ; 2077 FILE * db_msgfe ; 2079 (* db_msg __P ((cڡ DB_ENV *, const *)); 2082 (* db_edback __P (( DB_ENV *, , )); 2083 (* db_nic __P (( DB_ENV *, )); 2084 (* db_evt_func __P (( DB_ENV *, u_t32_t , *)); 2087 *(* db_mloc __P (( size_t )); 2088 *(* db_loc __P ((*, size_t )); 2089 (* db_ __P ((*)); 2092 #DB_USERCOPY_GETDATA 0x0001 ) 2093 #DB_USERCOPY_SETDATA 0x0002 ) 2094 (* dbt_urcy ) 2095 __P (( DBT *, u_t32_t , *, u_int32_t, u_int32_t)); 2102 #DB_VERB_DEADLOCK 0x0001 ) 2103 #DB_VERB_FILEOPS 0x0002 ) 2104 #DB_VERB_FILEOPS_ALL 0x0004 ) 2105 #DB_VERB_RECOVERY 0x0008 ) 2106 #DB_VERB_REGISTER 0x0010 ) 2107 #DB_VERB_REPLICATION 0x0020 ) 2108 #DB_VERB_WAITSFOR 0x0040 ) 2109 u_t32_t vbo ; 2111 * p_ive ; 2113 (* p_dich ) 2114 __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 2117 u_t32_t mux_ign ; 2118 u_t32_t mux_t ; 2119 u_t32_t mux_c ; 2120 u_t32_t mux_s_s ; 2123 loc_id ; 2124 u_t32_t ags ; 2125 } * mux_iq ; 2126 u_t mux_iq_xt ; 2127 u_t mux_iq_max ; 2130 u_t8_t * lk_cis ; 2131 lk_modes ; 2132 u_t32_t lk_max ; 2133 u_t32_t lk_max_locks ; 2134 u_t32_t lk_max_objes ; 2135 u_t32_t lk_de ; 2136 db_timeout_t lk_timeout ; 2139 u_t32_t lg_bsize ; 2140 u_t32_t lg_size ; 2141 u_t32_t lg_gimax ; 2142 lg_femode ; 2145 u_t mp_nche ; 2146 u_t32_t mp_gbys ; 2147 u_t32_t mp_bys ; 2148 u_t32_t mp_max_gbys ; 2149 u_t32_t mp_max_bys ; 2150 size_t mp_mmsize ; 2151 mp_maxݒfd ; 2152 mp_maxwre ; 2153 db_timeout_t mp_maxwre_p ; 2156 u_t32_t tx_max ; 2157 time_t tx_timeamp ; 2158 db_timeout_t tx_timeout ; 2161 u_t32_t thr_nbuck ; 2162 u_t32_t thr_max ; 2163 * thr_hashb ; 2168 db_mux_t mtx_v ; 2170 pid_t pid_che ; 2173 * db_home ; 2174 * db_log_d ; 2175 * db_tmp_d ; 2177 ** db_da_d ; 2178 da_t ; 2179 da_xt ; 2181 db_mode ; 2182 d_mode ; 2183 * v_ef ; 2184 u_t32_t ݒ_ags ; 2186 * gfo ; 2187 DB_FH * lockfhp ; 2189 DB_FH * giry ; 2190 u_t32_t giry_off ; 2197 (* thad_id __P (( DB_ENV *, pid_t *, db_thadid_t *)); 2199 (* is_ive ) 2200 __P (( DB_ENV *, pid_t , db_thadid_t , u_t32_t )); 2202 *(* thad_id_rg ) 2203 __P (( DB_ENV *, pid_t , db_thadid_t , *)); 2205 (** cov_db ) 2206 __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 2207 size_t cov_db_size ; 2210 * _hd ; 2211 u_t _id ; 2213 db_f ; 2215 shm_key ; 2225 s__fdli { 2226 __fh_t * tqh_f ; 2227 __fh_t ** tqh_ϡ ; 2228 } fdli ; 2238 db_mux_t mtx_dbli ; 2239 s__dbli { 2240 __db * tqh_f ; 2241 __db ** tqh_ϡ ; 2242 } dbli ; 2253 __db_v * tqe_xt ; 2254 __db_v ** tqe_ev ; 2255 } lks ; 2256 s__xa_txn { 2257 __db_txn * tqh_f ; 2258 __db_txn ** tqh_ϡ ; 2259 } xa_txn ; 2260 xa_rmid ; 2262 * sswd ; 2263 size_t sswd_n ; 2264 * yo_hd ; 2265 db_mux_t mtx_mt ; 2266 mti ; 2267 u_lg * mt ; 2270 * i1_ ; 2271 * i2_ ; 2273 DB_LOCKTAB * lk_hd ; 2274 DB_LOG * lg_hd ; 2275 DB_MPOOL * mp_hd ; 2276 DB_MUTEXMGR * mux_hd ; 2277 DB_REP * p_hd ; 2278 DB_TXNMGR * tx_hd ; 2281 (* cdsgroup_beg __P (( DB_ENV *, DB_TXN **)); 2282 (* o __P (( DB_ENV *, u_t32_t )); 2283 (* dbmove __P (( DB_ENV *, 2284 DB_TXN *, cڡ *, cڡ *, u_t32_t )); 2285 (* dbme __P (( DB_ENV *, 2286 DB_TXN *, cڡ *, cڡ *, cڡ *, u_t32_t )); 2287 (* r __P ((cڡ DB_ENV *, , const *, ...)); 2288 (* rx __P ((cڡ DB_ENV *, const *, ...)); 2289 (* chk __P (( DB_ENV *, u_t32_t )); 2290 (* feid_t __P (( DB_ENV *, cڡ *, u_t32_t )); 2291 (* g_chesize __P (( DB_ENV *, u_t32_t *, u_int32_t *, *)); 2292 (* g_che_max __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 2293 (* g_da_ds __P (( DB_ENV *, const ***)); 2294 (* g_y_ags __P (( DB_ENV *, u_t32_t *)); 2295 (* g_rfe __P (( DB_ENV *, FILE **)); 2296 (* g_fx __P (( DB_ENV *, const **)); 2297 (* g_ags __P (( DB_ENV *, u_t32_t *)); 2298 (* g_home __P (( DB_ENV *, const **)); 2299 (* g_lg_bsize __P (( DB_ENV *, u_t32_t *)); 2300 (* g_lg_d __P (( DB_ENV *, const **)); 2301 (* g_lg_femode __P (( DB_ENV *, *)); 2302 (* g_lg_max __P (( DB_ENV *, u_t32_t *)); 2303 (* g_lg_gimax __P (( DB_ENV *, u_t32_t *)); 2304 (* g_lk_cis __P (( DB_ENV *, cڡ u_t8_t **, *)); 2305 (* g_lk_de __P (( DB_ENV *, u_t32_t *)); 2306 (* g_lk_max_locks __P (( DB_ENV *, u_t32_t *)); 2307 (* g_lk_max_locks __P (( DB_ENV *, u_t32_t *)); 2308 (* g_lk_max_objes __P (( DB_ENV *, u_t32_t *)); 2309 (* g_mp_max_ݒfd __P (( DB_ENV *, *)); 2310 (* g_mp_max_wre __P (( DB_ENV *, *, db_timeout_t *)); 2311 (* g_mp_mmsize __P (( DB_ENV *, size_t *)); 2312 (* g_msgfe __P (( DB_ENV *, FILE **)); 2313 (* g_ݒ_ags __P (( DB_ENV *, u_t32_t *)); 2314 (* g_shm_key __P (( DB_ENV *, *)); 2315 (* g_thad_cou __P (( DB_ENV *, u_t32_t *)); 2316 (* g_timeout __P (( DB_ENV *, db_timeout_t *, u_t32_t )); 2317 (* g_tmp_d __P (( DB_ENV *, const **)); 2318 (* g_tx_max __P (( DB_ENV *, u_t32_t *)); 2319 (* g_tx_timeamp __P (( DB_ENV *, time_t *)); 2320 (* g_vbo __P (( DB_ENV *, u_t32_t , *)); 2321 (* is_bigdn __P (()); 2322 (* lock_de __P (( DB_ENV *, u_t32_t , u_int32_t, *)); 2323 (* lock_g __P (( DB_ENV *, 2324 u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)); 2325 (* lock_id __P (( DB_ENV *, u_t32_t *)); 2326 (* lock_id_ __P (( DB_ENV *, u_t32_t )); 2327 (* lock_put __P (( DB_ENV *, DB_LOCK *)); 2328 (* lock_ __P (( DB_ENV *, DB_LOCK_STAT **, u_t32_t )); 2329 (* lock__t __P (( DB_ENV *, u_t32_t )); 2330 (* lock_vec __P (( DB_ENV *, 2331 u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)); 2332 (* log_chive __P (( DB_ENV *, **[], u_t32_t )); 2333 (* log_curs __P (( DB_ENV *, DB_LOGC **, u_t32_t )); 2334 (* log_fe __P (( DB_ENV *, cڡ DB_LSN *, *, size_t )); 2335 (* log_ush __P (( DB_ENV *, cڡ DB_LSN *)); 2336 (* log_tf __P (( DB_ENV *, DB_TXN *, const *, ...)); 2337 (* log_put __P (( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 2338 (* log_ __P (( DB_ENV *, DB_LOG_STAT **, u_t32_t )); 2339 (* log__t __P (( DB_ENV *, u_t32_t )); 2340 (* l_t __P (( DB_ENV *, cڡ *, u_t32_t )); 2341 (* memp_f __P (( DB_ENV *, DB_MPOOLFILE **, u_t32_t )); 2342 (* memp_gi __P (( DB_ENV *, , (*)(DB_ENV *, 2343 db_pgno_t , *, DBT *), (*)( DB_ENV *, 2344 db_pgno_t , *, DBT *))); 2345 (* memp_ __P (( DB_ENV *, 2346 DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )); 2347 (* memp__t __P (( DB_ENV *, u_t32_t )); 2348 (* memp_sync __P (( DB_ENV *, DB_LSN *)); 2349 (* memp_ick __P (( DB_ENV *, , *)); 2350 (* mux_loc __P (( DB_ENV *, u_t32_t , db_mux_t *)); 2351 (* mux_ __P (( DB_ENV *, db_mux_t )); 2352 (* mux_g_ign __P (( DB_ENV *, u_t32_t *)); 2353 (* mux_g_emt __P (( DB_ENV *, u_t32_t *)); 2354 (* mux_g_max __P (( DB_ENV *, u_t32_t *)); 2355 (* mux_g_s_s __P (( DB_ENV *, u_t32_t *)); 2356 (* mux_lock __P (( DB_ENV *, db_mux_t )); 2357 (* mux_t_ign __P (( DB_ENV *, u_t32_t )); 2358 (* mux_t_emt __P (( DB_ENV *, u_t32_t )); 2359 (* mux_t_max __P (( DB_ENV *, u_t32_t )); 2360 (* mux_t_s_s __P (( DB_ENV *, u_t32_t )); 2361 (* mux_ __P (( DB_ENV *, DB_MUTEX_STAT **, u_t32_t )); 2362 (* mux__t __P (( DB_ENV *, u_t32_t )); 2363 (* mux_uock __P (( DB_ENV *, db_mux_t )); 2364 (* ݒ __P (( DB_ENV *, cڡ *, u_t32_t , )); 2365 (* move __P (( DB_ENV *, cڡ *, u_t32_t )); 2366 (* p_e __P (( DB_ENV *, , , u_t32_t )); 2367 (* p_ush __P (( DB_ENV *)); 2368 (* p_g_cfig __P (( DB_ENV *, u_t32_t , *)); 2369 (* p_g_lim __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 2370 (* p_g_nses __P (( DB_ENV *, *)); 2371 (* p_g_iܙy __P (( DB_ENV *, *)); 2372 (* p_g_timeout __P (( DB_ENV *, , u_t32_t *)); 2373 (* p_oss_mesge ) 2374 __P (( DB_ENV *, DBT *, DBT *, , DB_LSN *)); 2375 (* p_t_cfig __P (( DB_ENV *, u_t32_t , )); 2376 (* p_t_a __P (( DB_ENV *, u_t32_t , u_int32_t)); 2377 (* p_t_lim __P (( DB_ENV *, u_t32_t , u_int32_t)); 2378 (* p_t_nses __P (( DB_ENV *, )); 2379 (* p_t_iܙy __P (( DB_ENV *, )); 2380 (* p_t_timeout __P (( DB_ENV *, , db_timeout_t )); 2381 (* p_t_t __P (( DB_ENV *, , (*)(DB_ENV *, 2382 cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t ))); 2383 (* p_t __P (( DB_ENV *, DBT *, u_t32_t )); 2384 (* p_ __P (( DB_ENV *, DB_REP_STAT **, u_t32_t )); 2385 (* p__t __P (( DB_ENV *, u_t32_t )); 2386 (* p_sync __P (( DB_ENV *, u_t32_t )); 2387 (* pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , 2388 *, u_t32_t )); 2389 (* pmgr_g_ack_picy __P (( DB_ENV *, *)); 2390 (* pmgr_t_ack_picy __P (( DB_ENV *, )); 2391 (* pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , 2392 u_t32_t )); 2393 (* pmgr_se_li __P (( DB_ENV *, u_t *, 2394 DB_REPMGR_SITE **)); 2395 (* pmgr_t __P (( DB_ENV *, , u_t32_t )); 2396 (* pmgr_ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 2397 (* pmgr__t __P (( DB_ENV *, u_t32_t )); 2398 (* t_loc __P (( DB_ENV *, *(*)( size_t ), 2399 *(*)(*, size_t ), (*)(*))); 2400 (* t_p_dich ) 2401 __P (( DB_ENV *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs ))); 2402 (* t_chesize __P (( DB_ENV *, u_t32_t , u_int32_t, )); 2403 (* t_che_max __P (( DB_ENV *, u_t32_t , u_int32_t)); 2404 (* t_da_d __P (( DB_ENV *, const *)); 2405 (* t_y __P (( DB_ENV *, cڡ *, u_t32_t )); 2406 (* t_r __P (( DB_ENV *, 2407 (*)(cڡ DB_ENV *, const *, const *))); 2408 (* t_rfe __P (( DB_ENV *, FILE *)); 2409 (* t_fx __P (( DB_ENV *, const *)); 2410 (* t_evt_nify ) 2411 __P (( DB_ENV *, (*)(DB_ENV *, u_t32_t , *))); 2412 (* t_edback __P (( DB_ENV *, (*)(DB_ENV *, , ))); 2413 (* t_ags __P (( DB_ENV *, u_t32_t , )); 2414 (* t_rmed_d __P (( DB_ENV *, , u_t32_t )); 2415 (* t_ilive __P (( DB_ENV *, 2416 (*)( DB_ENV *, pid_t , db_thadid_t , u_t32_t ))); 2417 (* t_lg_bsize __P (( DB_ENV *, u_t32_t )); 2418 (* t_lg_d __P (( DB_ENV *, const *)); 2419 (* t_lg_femode __P (( DB_ENV *, )); 2420 (* t_lg_max __P (( DB_ENV *, u_t32_t )); 2421 (* t_lg_gimax __P (( DB_ENV *, u_t32_t )); 2422 (* t_lk_cis __P (( DB_ENV *, u_t8_t *, )); 2423 (* t_lk_de __P (( DB_ENV *, u_t32_t )); 2424 (* t_lk_max_locks __P (( DB_ENV *, u_t32_t )); 2425 (* t_lk_max_locks __P (( DB_ENV *, u_t32_t )); 2426 (* t_lk_max_objes __P (( DB_ENV *, u_t32_t )); 2427 (* t_mp_max_ݒfd __P (( DB_ENV *, )); 2428 (* t_mp_max_wre __P (( DB_ENV *, , db_timeout_t )); 2429 (* t_mp_mmsize __P (( DB_ENV *, size_t )); 2430 (* t_msg ) 2431 __P (( DB_ENV *, (*)(const DB_ENV *, const *))); 2432 (* t_msgfe __P (( DB_ENV *, FILE *)); 2433 (* t_nic __P (( DB_ENV *, (*)(DB_ENV *, ))); 2434 (* t_p_que __P (( DB_ENV *, u_t32_t , u_int32_t)); 2435 (* t_c_rv ) 2436 __P (( DB_ENV *, *, cڡ *, , , u_t32_t )); 2437 (* t_shm_key __P (( DB_ENV *, )); 2438 (* t_thad_cou __P (( DB_ENV *, u_t32_t )); 2439 (* t_thad_id __P (( DB_ENV *, 2440 (*)( DB_ENV *, pid_t *, db_thadid_t *))); 2441 (* t_thad_id_rg __P (( DB_ENV *, 2442 *(*)( DB_ENV *, pid_t , db_thadid_t , *))); 2443 (* t_timeout __P (( DB_ENV *, db_timeout_t , u_t32_t )); 2444 (* t_tmp_d __P (( DB_ENV *, const *)); 2445 (* t_tx_max __P (( DB_ENV *, u_t32_t )); 2446 (* t_tx_timeamp __P (( DB_ENV *, time_t *)); 2447 (* t_vbo __P (( DB_ENV *, u_t32_t , )); 2448 (* _t __P (( DB_ENV *, u_t32_t )); 2449 (* txn_beg __P (( DB_ENV *, DB_TXN *, DB_TXN **, u_t32_t )); 2450 (* txn_checkpot __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 2451 (* txn_cov ) 2452 __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t )); 2453 (* txn_ __P (( DB_ENV *, DB_TXN_STAT **, u_t32_t )); 2454 (* txn__t __P (( DB_ENV *, u_t32_t )); 2458 (* dbt __P (( DBT *, 2462 #DB_TEST_ELECTINIT 1 ) 2463 #DB_TEST_ELECTVOTE1 2 ) 2464 #DB_TEST_POSTDESTROY 3 ) 2465 #DB_TEST_POSTLOG 4 ) 2466 #DB_TEST_POSTLOGMETA 5 ) 2467 #DB_TEST_POSTOPEN 6 ) 2468 #DB_TEST_POSTSYNC 7 ) 2469 #DB_TEST_PREDESTROY 8 ) 2470 #DB_TEST_PREOPEN 9 ) 2471 #DB_TEST_RECYCLE 10 ) 2472 #DB_TEST_SUBDB_LOCKS 11 ) 2473 _abt ; 2474 _check ; 2475 _cy ; 2477 #DB_ENV_AUTO_COMMIT 0x00000001 ) 2478 #DB_ENV_CDB 0x00000002 ) 2479 #DB_ENV_CDB_ALLDB 0x00000004 ) 2480 #DB_ENV_DBLOCAL 0x00000008 ) 2481 #DB_ENV_DIRECT_DB 0x00000010 ) 2482 #DB_ENV_DIRECT_LOG 0x00000020 ) 2483 #DB_ENV_DSYNC_DB 0x00000040 ) 2484 #DB_ENV_DSYNC_LOG 0x00000080 ) 2485 #DB_ENV_LOCKDOWN 0x00000100 ) 2486 #DB_ENV_LOG_AUTOREMOVE 0x00000200 ) 2487 #DB_ENV_LOG_INMEMORY 0x00000400 ) 2488 #DB_ENV_MULTIVERSION 0x00000800 ) 2489 #DB_ENV_NOLOCKING 0x00001000 ) 2490 #DB_ENV_NOMMAP 0x00002000 ) 2491 #DB_ENV_NOPANIC 0x00004000 ) 2492 #DB_ENV_NO_OUTPUT_SET 0x00008000 ) 2493 #DB_ENV_OPEN_CALLED 0x00010000 ) 2494 #DB_ENV_OVERWRITE 0x00020000 ) 2495 #DB_ENV_PRIVATE 0x00040000 ) 2496 #DB_ENV_RECOVER_FATAL 0x00080000 ) 2497 #DB_ENV_REF_COUNTED 0x00100000 ) 2498 #DB_ENV_REGION_INIT 0x00200000 ) 2499 #DB_ENV_RPCCLIENT 0x00400000 ) 2500 #DB_ENV_RPCCLIENT_GIVEN 0x00800000 ) 2501 #DB_ENV_SYSTEM_MEM 0x01000000 ) 2502 #DB_ENV_THREAD 0x02000000 ) 2503 #DB_ENV_TIME_NOTGRANTED 0x04000000 ) 2504 #DB_ENV_TXN_NOSYNC 0x08000000 ) 2505 #DB_ENV_TXN_NOWAIT 0x10000000 ) 2506 #DB_ENV_TXN_SNAPSHOT 0x20000000 ) 2507 #DB_ENV_TXN_WRITE_NOSYNC 0x40000000 ) 2508 #DB_ENV_YIELDCPU 0x80000000 ) 2509 u_t32_t ags ; 2512 #ide DB_DBM_HSEARCH 2513 #DB_DBM_HSEARCH 0 ) 2515 #i DB_DBM_HSEARCH != 0 2519 __db tDBM ; 2521 #DBM_INSERT 0 ) 2522 #DBM_REPLACE 1 ) 2528 #DBM_SUFFIX ".db" ) 2530 #i defed ( _XPG4_2 ) 2532 * dr ; 2533 size_t dsize ; 2534 } tdum ; 2537 * dr ; 2538 dsize ; 2539 } tdum ; 2546 #dbm_ ( a __db_ndbm_ @ DB_VERSION_UNIQUE_NAME @) ) 2547 #dbm_o ( a __db_ndbm_o @ DB_VERSION_UNIQUE_NAME @) ) 2548 #dbm_de ( a , b __db_ndbm_de @ DB_VERSION_UNIQUE_NAME @, b) ) 2549 #dbm_do ( a __db_ndbm_do @ DB_VERSION_UNIQUE_NAME @) ) 2550 #dbm_r ( a __db_ndbm_r @ DB_VERSION_UNIQUE_NAME @) ) 2551 #dbm_tch ( a , b __db_ndbm_tch @ DB_VERSION_UNIQUE_NAME @, b) ) 2552 #dbm_fkey ( a __db_ndbm_fkey @ DB_VERSION_UNIQUE_NAME @) ) 2553 #dbm_xtkey ( a __db_ndbm_xtkey @ DB_VERSION_UNIQUE_NAME @) ) 2554 #dbm_ݒ ( a , b , c __db_ndbm_ݒ @ DB_VERSION_UNIQUE_NAME @, b, c) ) 2555 #dbm_go ( a __db_ndbm_go @ DB_VERSION_UNIQUE_NAME @) ) 2556 #dbm_rdly ( a __db_ndbm_rdly @ DB_VERSION_UNIQUE_NAME @) ) 2557 #dbm_e ( a , b , c , d ) \ 2558 __db_ndbm_e @ DB_VERSION_UNIQUE_NAME @( a , b , c , d ) ) 2567 #dbm ( a __db_dbm_ @ DB_VERSION_UNIQUE_NAME @) ) 2568 #dbmo __db_dbm_o @ DB_VERSION_UNIQUE_NAME @ ) 2569 #i! defed ( __lulus ) 2570 #de ( a __db_dbm_de @ DB_VERSION_UNIQUE_NAME @) ) 2572 #tch ( a __db_dbm_tch @ DB_VERSION_UNIQUE_NAME @) ) 2573 #fkey __db_dbm_fkey @ DB_VERSION_UNIQUE_NAME @ ) 2574 #xtkey ( a __db_dbm_xtkey @ DB_VERSION_UNIQUE_NAME @) ) 2575 #e ( a , b __db_dbm_e @ DB_VERSION_UNIQUE_NAME @, b) ) 2581 FIND , ENTER 2582 } tACTION ; 2584 sy { 2585 * key ; 2586 * da ; 2587 } tENTRY ; 2589 #h ( a __db_h @ DB_VERSION_UNIQUE_NAME @) ) 2590 #hderoy __db_hderoy @ DB_VERSION_UNIQUE_NAME @ ) 2591 #hch ( a , b __db_hch @ DB_VERSION_UNIQUE_NAME @, b) ) 2595 #i defed ( __lulus ) 2599 @ fm_foٔ @ @../dbinc/db_185.in 37 #ide _DB_185_H_ 38 #_DB_185_H_ ) 40 ~<sys/tys.h > 42 ~<lims.h > 44 #i defed ( __lulus ) 53 #unde __P 54 #i defed ( __STDC__ || defed( __lulus ) 55 #__P ( os o ) 57 cڡ ) 58 #__P ( os ( ) 61 #RET_ERROR -1 ) 62 #RET_SUCCESS 0 ) 63 #RET_SPECIAL 1 ) 65 #idef __BIT_TYPES_DEFINED__ 66 #__BIT_TYPES_DEFINED__ ) 67 @ u_t8_de @ 68 @ t16_de @ 69 @ u_t16_de @ 70 @ t32_de @ 71 @ u_t32_de @ 78 #ifdef __sgi 79 #pgno_t db_pgno_t ) 82 #MAX_PAGE_NUMBER 0xfffffff ) 83 u_t32_t tpgno_t ; 84 #MAX_PAGE_OFFSET 65535 ) 85 u_t16_t tdx_t ; 86 #MAX_REC_NUMBER 0xfffffff ) 87 u_t32_t to_t ; 91 * da ; 92 size_t size ; 93 } tDBT ; 96 #R_CURSOR 1 ) 97 #__R_UNUSED 2 ) 98 #R_FIRST 3 ) 99 #R_IAFTER 4 ) 100 #R_IBEFORE 5 ) 101 #R_LAST 6 ) 102 #R_NEXT 7 ) 103 #R_NOOVERWRITE 8 ) 104 #R_PREV 9 ) 105 #R_SETCURSOR 10 ) 106 #R_RECNOSYNC 11 ) 108 um { DB_BTREE , DB_HASH , DB_RECNO } tDBTYPE ; 111 s__db { 112 DBTYPE ty ; 113 (* o __P (( __db *)); 114 (* d __P ((cڡ __db *, cڡ DBT *, u_t )); 115 (* g __P ((cڡ __db *, cڡ DBT *, DBT *, u_t )); 116 (* put __P ((cڡ __db *, DBT *, cڡ DBT *, u_t )); 117 (* q __P ((cڡ __db *, DBT *, DBT *, u_t )); 118 (* sync __P ((cڡ __db *, u_t )); 119 * ; 120 (* fd __P ((cڡ __db *)); 121 } tDB ; 123 #BTREEMAGIC 0x053162 ) 124 #BTREEVERSION 3 ) 128 #R_DUP 0x01 ) 129 u_t32_t ags ; 130 u_t32_t chesize ; 131 u_t32_t maxkeyge ; 132 u_t32_t mkeyge ; 133 u_t32_t psize ; 134 (* com ) 135 __P ((cڡ DBT *, const DBT *)); 136 size_t (* efix ) 137 __P ((cڡ DBT *, const DBT *)); 138 ld ; 139 } tBTREEINFO ; 141 #HASHMAGIC 0x061561 ) 142 #HASHVERSION 2 ) 146 u_t32_t bsize ; 147 u_t32_t f ; 148 u_t32_t m ; 149 u_t32_t chesize ; 150 u_t32_t 151 (* hash __P ((cڡ *, size_t )); 152 ld ; 153 } tHASHINFO ; 157 #R_FIXEDLEN 0x01 ) 158 #R_NOKEY 0x02 ) 159 #R_SNAPSHOT 0x04 ) 160 u_t32_t ags ; 161 u_t32_t chesize ; 162 u_t32_t psize ; 163 ld ; 164 size_t ; 165 u_ch bv ; 166 * bame ; 167 } tRECNOINFO ; 170 #dbݒ __db185_ݒ @ DB_VERSION_UNIQUE_NAME @ ) 172 #i defed ( __lulus ) @../dbinc/db_am.h 8 #ide _DB_AM_H_ 9 #_DB_AM_H_ ) 11 #i defed ( __lulus ) 19 #IS_ENV_AUTO_COMMIT ( dbv , txn , ags ) \ 20 ( `LF_ISSET ( DB_AUTO_COMMIT ) || \ 21 (( txn = NULL && `F_ISSET (( dbv ), DB_ENV_AUTO_COMMIT ) && \ 22 ! `LF_ISSET ( DB_NO_AUTO_COMMIT ))) ) 28 #IS_DB_AUTO_COMMIT ( dbp , txn ) \ 29 (( txn = NULL && `F_ISSET (( dbp ), DB_AM_TXN )) ) 36 #STRIP_AUTO_COMMIT ( f `FLD_CLR ((f), DB_AUTO_COMMIT ) ) 39 #DB_ADD_DUP 1 ) 40 #DB_REM_DUP 2 ) 41 #DB_ADD_BIG 3 ) 42 #DB_REM_BIG 4 ) 43 #DB_ADD_PAGE_COMPAT 5 ) 44 #DB_REM_PAGE_COMPAT 6 ) 49 #REC_INTRO ( func , c_cou , do_curs ) do { \ 50 gp = NULL ; \ 51 fe_dbp = NULL ; \ 52 `COMPQUIET ( dbc , NULL ); \ 54 `COMPQUIET ( mpf , NULL ); \ 55 i(( t = `func ( dbv , db -> da , & gp )) != 0) \ 56 out ; \ 57 i( fo ! NULL ) \ 58 gp -> tx -> td = (( DB_TXNHEAD *) fo )->td; \ 59 i(( t = `__dbg_id_to_db ( dbv , gp -> tx , \ 60 & fe_dbp , gp -> feid , c_cou )) != 0) { \ 61 i( t = DB_DELETED ) { \ 62 t = 0; \ 63 de ; \ 65 out ; \ 67 i( do_curs ) { \ 68 i(( t = `__db_curs ( fe_dbp , NULL , & dbc , 0)) != 0) \ 69 out ; \ 70 `F_SET ( dbc , DBC_RECOVER ); \ 72 mpf = fe_dbp ->mpf; \ 73 } 0) ) 75 #REC_CLOSE { \ 76 __t_t ; \ 77 i( gp ! NULL ) \ 78 `__os_ ( dbv , gp ); \ 79 i( dbc ! NULL && \ 80 ( __t_t = `__dbc_o ( dbc )!0 && t == 0) \ 81 t = __t_t ; \ 83 ( t ) ) 88 #REC_NOOP_INTRO ( func ) do { \ 89 gp = NULL ; \ 90 i(( t = `func ( dbv , db -> da , & gp )) != 0) \ 91 ( t ); \ 92 } 0) ) 93 #REC_NOOP_CLOSE \ 94 i( gp ! NULL ) \ 95 `__os_ ( dbv , gp ); \ 96 ( t ) ) 103 #ide HAVE_FTRUNCATE 104 #REC_FGET ( mpf , pgno , g , ct ) \ 105 i(( t = `__memp_fg ( mpf , &( pgno ), NULL , 0, g )) != 0) { \ 106 i( t ! DB_PAGE_NOTFOUND || `DB_REDO ( )) { \ 107 t = `__db_pgr ( fe_dbp , pgno ,et); \ 108 out ; \ 110 ct ; \ 111 } ) 113 #REC_FGET ( mpf , pgno , g , ct ) \ 114 i(( t = `__memp_fg ( mpf , &( pgno ), NULL , 0, g )) != 0) { \ 115 i( t ! DB_PAGE_NOTFOUND ) { \ 116 t = `__db_pgr ( fe_dbp , pgno ,et); \ 117 out ; \ 119 ct ; \ 120 } ) 122 #REC_DIRTY ( mpf , iܙy , g ) \ 123 i(( t = `__memp_dty ( mpf , \ 124 g , NULL , iܙy , DB_MPOOL_EDIT )) != 0) { \ 125 t = `__db_pgr ( fe_dbp , `PGNO (*( g )),et); \ 126 out ; \ 127 } ) 132 #ifde DEBUG_RECOVER 133 #REC_PRINT ( func ) \ 134 () `func ( dbv , db , lp , , fo ); ) 136 #REC_PRINT ( func ) ) 142 #LCK_ALWAYS 1 ) 143 #LCK_COUPLE 2 ) 144 #LCK_COUPLE_ALWAYS 3 ) 145 #LCK_DOWNGRADE 4 ) 146 #LCK_ROLLBACK 5 ) 154 #__LPUT ( dbc , lock ) \ 155 `__ENV_LPUT (( dbc )-> dbp -> dbv , lock ) ) 157 #__ENV_LPUT ( dbv , lock ) \ 158 ( `LOCK_ISSET ( lock ? `__lock_put ( dbv , &ock): 0) ) 170 #__TLPUT ( dbc , lock ) \ 171 ( `LOCK_ISSET ( lock ? `__db_ut ( dbc , &ock): 0) ) 174 DBC * dbc ; 175 u_t32_t cou ; 176 } tdb_unc_m ; 183 #DB_IS_READONLY ( dbp ) \ 184 ( `F_ISSET ( dbp , DB_AM_RDONLY ) || \ 185 ( `IS_REP_CLIENT (( dbp )-> dbv && ! `F_ISSET ((dbp), DB_AM_NOT_DURABLE ))) ) 195 ~"dbc/db_sw.h " 197 #SWAP_IF_NEEDED ( sdbp , pkey ) \ 199 i((( sdbp )-> s_imy -> ty = DB_QUEUE || \ 200 ( sdbp )-> s_imy -> ty = DB_RECNO ) && \ 201 `F_ISSET (( sdbp ), DB_AM_SWAP )) \ 202 `P_32_SWAP (( pkey )-> da ); \ 203 } 0) ) 210 #FIND_FIRST_DB_MATCH ( dbv , dbp , tdbp ) do { \ 211 ( tdbp ( dbp ); \ 212 `TAILQ_PREV (( tdbp ), __dbli , dblilks ! NULL && \ 213 `TAILQ_PREV (( tdbp ), \ 214 __dbli , dblilks )-> adj_feid =( dbp )->adj_fileid;\ 215 ( tdbp `TAILQ_PREV (dbp), __dbli , dblilks )) \ 217 } 0) ) 223 #DB_BINARY_SEARCH_FOR ( ba , lim , ge , adju ) \ 224 ba = 0, lim = `NUM_ENT ( ge / ( db_dx_t )( adju ); \ 225 ( lim !0; (lim>>1) ) 227 #DB_BINARY_SEARCH_INCR ( dex , ba , lim , adju ) \ 228 dex = ( ba + ((( lim >> 1* ( adju )) ) 230 #DB_BINARY_SEARCH_SHIFT_BASE ( dex , ba , lim , adju ) do { \ 231 ba = ( dex + ( adju ); \ 232 --( lim ); \ 233 } 0) ) 238 #DB_CHK_META 0x01 ) 239 #DB_CHK_NOLSN 0x02 ) 241 #i defed ( __lulus ) 245 ~"dbc/db_dich.h " 246 ~"dbc_auto/db_auto.h " 247 ~"dbc_auto/d_auto.h " 248 ~"dbc_auto/db_ext.h " @../dbinc/db_cxx.in 9 #ide _DB_CXX_H_ 10 #_DB_CXX_H_ ) 51 ~<dg.h > 53 @ gcxx_have_dhds @ 54 #ifde HAVE_CXX_STDHEADERS 55 ~<ioam > 56 ~<exi > 57 #__DB_STD ( x d :: ) x 59 ~<ioam.h > 60 ~<exi.h > 61 #__DB_STD ( x ) x 64 ~"db.h " 66 ass gDb ; 67 ass gDbc ; 68 ass gDbEnv ; 69 ass gDbInfo ; 70 ass gDbLock ; 71 ass gDbLogc ; 72 ass gDbL ; 73 ass gDbMpoFe ; 74 ass gDbPi ; 75 ass gDbSequ ; 76 ass gDbt ; 77 ass gDbTxn ; 79 ass gDbMuɝIt ; 80 ass gDbMuɝKeyDaIt ; 81 ass gDbMuɝReoDaIt ; 82 ass gDbMuɝDaIt ; 84 ass gDbExi ; 85 ass gDbDdlockExi ; 86 ass gDbLockNGedExi ; 87 ass gDbMemyExi ; 88 ass gDbRHdDdExi ; 89 ass gDbRunRecovyExi ; 97 #ifde _MSC_VER 110 #agm wng ( push ) 111 #agm wng ( dib : 4201 4514) 128 #i defed ( _MSC_VER ) 130 #i defed ( DB_CREATE_DLL ) 131 #_exp܋d `__deec ( dexpt ) 132 #i `defed ( DB_USE_DLL ) ) 133 #_exp܋d `__deec ( dimpt ) 134 # ) 135 #_exp܋d 137 ) 140 #_exp܋d ) 152 * (* tdb_mloc_f_ty ) 153 ( tsize_t ); 154 * (* tdb_loc_f_ty ) 155 (*, tsize_t ); 156 (* db__f_ty ) 158 (* bt_com_f_ty ) 159 ( tDB *, cڡ tDBT *, const DBT *); 160 size_t (* tbt_efix_f_ty ) 161 ( tDB *, cڡ tDBT *, const DBT *); 162 (* dup_com_f_ty ) 163 ( tDB *, cڡ tDBT *, const DBT *); 164 (* h_com_f_ty ) 165 ( tDB *, cڡ tDBT *, const DBT *); 166 u_t32_t (* th_hash_f_ty ) 167 ( tDB *, cڡ *, tu_t32_t ); 168 (* pg_f_ty ) 169 ( tDB_ENV * tdbv , tdb_pgno_t tpgno , * tpgaddr , tDBT * tpgcook ); 170 (* pgout_f_ty ) 171 ( tDB_ENV * tdbv , tdb_pgno_t tpgno , * tpgaddr , tDBT * tpgcook ); 177 as c_exp܋d Db 179 nd ass DbEnv ; 181 public : 182 Db ( DbEnv *, u_t32_t ); 183 vtu ~ Db (); 187 vtu assoc ( DbTxn * txn , Db * cdy , (* back ) 188 ( Db *, cڡ Dbt *, cڡ Db*, Db*), u_t32_t ags ); 189 vtu `o ( u_t32_t ags ); 190 vtu `com ( DbTxn * txnid , Dbt * t , 191 Dbt * , DB_COMPACT * c_da , u_t32_t ags , Db* d ); 192 vtu `curs ( DbTxn * txnid , Dbc ** cursp , u_t32_t ags ); 193 vtu `d ( DbTxn * txnid , Dbt * key , u_t32_t ags ); 194 vtu `r (, const *, ...); 195 vtu `rx (const *, ...); 196 vtu `exis ( DbTxn * txnid , Dbt * key , u_t32_t ags ); 197 vtu `fd (* fdp ); 198 vtu `g ( DbTxn * txnid , Dbt * key , Db* da , u_t32_t ags ); 199 vtu `g_bt_mkey ( u_t32_t *); 200 vtu `g_byswd (*); 201 vtu `g_chesize ( u_t32_t *, u_int32_t *, *); 202 vtu `g_dbme (const **, const **); 203 vtu `g_y_ags ( u_t32_t *); 204 vtu `g_rfe ( FILE **); 205 vtu `g_fx (const **); 206 vtu `g_ags ( u_t32_t *); 207 vtu `g_h_f ( u_t32_t *); 208 vtu `g_h_m ( u_t32_t *); 209 vtu `g_ld (*); 210 vtu `g_msgfe ( FILE **); 211 vtu `g_muɝ (); 212 vtu `g_ݒ_ags ( u_t32_t *); 213 vtu `g_gesize ( u_t32_t *); 214 vtu `g_iܙy ( DB_CACHE_PRIORITY *); 215 vtu `g_q_exsize ( u_t32_t *); 216 vtu `g__dim (*); 217 vtu `g__n ( u_t32_t *); 218 vtu `g__d (*); 219 vtu `g__sour (const **); 220 vtu `g_iڮ (); 221 vtu `g_ty ( DBTYPE *); 222 vtu `jo ( Dbc ** curi , Db** db , u_t32_t ags ); 223 vtu `key_nge ( DbTxn *, Dbt *, DB_KEY_RANGE *, u_t32_t ); 224 vtu `ݒ ( DbTxn * txnid , 225 cڡ *, cڡ * subme , DBTYPE , u_t32_t , ); 226 vtu `pg ( DbTxn * txnid , 227 Dbt * key , Db* pkey , Db* da , u_t32_t ags ); 228 vtu `put ( DbTxn *, Dbt *, Db*, u_t32_t ); 229 vtu `move (cڡ *, cڡ *, u_t32_t ); 230 vtu `me (cڡ *, cڡ *, cڡ *, u_t32_t ); 231 vtu `t_loc ( 232 db_mloc_f_ty , db_loc_f_ty , db__f_ty ); 233 vtu `t_p_ive (*); 234 vtu `t_nd_o ((*)( Db *, Dbt *, db_o_t )); 235 vtu `t_bt_com ( bt_com_f_ty ); 236 vtu `t_bt_com ((*)( Db *, cڡ Dbt *, const Dbt *)); 237 vtu `t_bt_mkey ( u_t32_t ); 238 vtu `t_bt_efix ( bt_efix_f_ty ); 239 vtu `t_bt_efix ( $size_t (*)( Db *, cڡ Dbt *, const Dbt *)); 240 vtu `t_chesize ( u_t32_t , u_int32_t, ); 241 vtu `t_dup_com ( dup_com_f_ty ); 242 vtu `t_dup_com ((*)( Db *, cڡ Dbt *, const Dbt *)); 243 vtu `t_y (cڡ *, u_t32_t ); 244 vtu `t_r ( 245 (*)(cڡ DbEnv *, const *, const *)); 246 vtu `t_rfe ( FILE *); 247 vtu `t_fx (const *); 248 vtu `t_edback ((*)( Db *, , )); 249 vtu `t_ags ( u_t32_t ); 250 vtu `t_h_com ( h_com_f_ty ); 251 vtu `t_h_com ((*)( Db *, cڡ Dbt *, const Dbt *)); 252 vtu `t_h_f ( u_t32_t ); 253 vtu `t_h_hash ( h_hash_f_ty ); 254 vtu `t_h_hash ( $u_t32_t (*)( Db *, cڡ *, u_t32_t )); 255 vtu `t_h_m ( u_t32_t ); 256 vtu `t_ld (); 257 vtu `t_msg ((*)(cڡ DbEnv *, const *)); 258 vtu `t_msgfe ( FILE *); 259 vtu `t_gesize ( u_t32_t ); 260 vtu `t_nic ((*)( DbEnv *, )); 261 vtu `t_iܙy ( DB_CACHE_PRIORITY ); 262 vtu `t_q_exsize ( u_t32_t ); 263 vtu `t__dim (); 264 vtu `t__n ( u_t32_t ); 265 vtu `t__d (); 266 vtu `t__sour (const *); 267 vtu ` ( DbTxn *, * , u_t32_t ags ); 268 vtu `_t ( u_t32_t ags ); 269 vtu `sync ( u_t32_t ags ); 270 vtu `un ( DbTxn *, u_t32_t *, u_int32_t); 271 vtu `upgde (cڡ * me , u_t32_t ags ); 272 vtu `vify ( 273 cڡ *, cڡ *, `__DB_STD ( oam *, u_t32_t ); 278 vtu * $g_p_ive () const; 279 vtu `__DB_STD ( oam * `g_r_am (); 280 vtu `t_r_am ( `__DB_STD ( oam ) *); 281 vtu `__DB_STD ( oam * `g_mesge_am (); 282 vtu `t_mesge_am ( `__DB_STD ( oam ) *); 284 vtu DbEnv * `g_v (); 285 vtu DbMpoFe * `g_mpf (); 287 vtu DB * $g_DB () 289 imp_ ; 292 vtu cڡ DB * $g_cڡ_DB () const 294 imp_ ; 295 } } 297 Db * $g_Db ( DB * db ) 299 ( Db *) db -> i_ ; 300 } } 302 cڡ Db * $g_cڡ_Db (cڡ DB * db ) 304 (cڡ Db *) db -> i_ ; 305 } } 307 ive : 309 Db (const Db &); 310 Db & ݔ = (const Db &); 312 nup (); 313 lize (); 314 r_picy (); 317 DB * imp_ ; 318 DbEnv * v_ ; 319 DbMpoFe * mpf_ ; 320 cڡru_r_ ; 321 u_t32_t ags_ ; 322 u_t32_t cڡru_ags_ ; 324 public : 329 (* nd_o_back_ )( Db *, Dbt *, db_o_t ); 330 (* assoc_back_ )( Db *, cڡ Dbt *, const Dbt *, Dbt *); 331 (* bt_com_back_ )( Db *, cڡ Dbt *, const Dbt *); 332 $size_t (* bt_efix_back_ )( Db *, cڡ Dbt *, const Dbt *); 333 (* dup_com_back_ )( Db *, cڡ Dbt *, const Dbt *); 334 (* edback_back_ )( Db *, , ); 335 (* h_com_back_ )( Db *, cڡ Dbt *, const Dbt *); 336 $u_t32_t (* h_hash_back_ )( Db *, cڡ *, u_t32_t ); 337 } }; 342 as c_exp܋d mDbc : eed DBC 344 nd ass Db ; 346 mpublic : 347 o (); 348 cou ( db_o_t * coup , u_t32_t ags ); 349 d ( u_t32_t ags ); 350 dup ( Dbc ** cursp , u_t32_t ags ); 351 g ( Dbt * key , Db* da , u_t32_t ags ); 352 g_iܙy ( DB_CACHE_PRIORITY * iܙyp ); 353 pg ( Dbt * key , Dbt* pkey , Db* da , u_t32_t ags ); 354 put ( Dbt * key , Db* da , u_t32_t ags ); 355 t_iܙy ( DB_CACHE_PRIORITY iܙy ); 357 mive : 363 Dbc (); 364 ~ Dbc (); 367 Dbc (const Dbc &); 368 mDbc & mݔ = (cڡ Dbc &); 380 as c_exp܋d mDbEnv 382 nd ass mDb ; 383 nd ass mDbLock ; 384 nd ass mDbMpoFe ; 386 mpublic : 392 DbEnv ( u_t32_t ags ); 394 mvtu ~ DbEnv (); 398 vtu cdsgroup_beg ( DbTxn ** tid ); 399 vtu o ( u_t32_t ); 400 vtu dbmove ( DbTxn * txn , cڡ * me , cڡ * subdb , 401 u_t32_t ags ); 402 vtu dbme ( DbTxn * txn , cڡ * me , cڡ * subdb , 403 cڡ * wme , u_t32_t ags ); 404 vtu r (, const *, ...); 405 vtu rx (const *, ...); 406 vtu chk ( u_t32_t ); 407 vtu feid_t (cڡ *, u_t32_t ); 408 vtu * $g_p_ive () const; 409 vtu `g_home (const **); 410 vtu `g_ݒ_ags ( u_t32_t *); 411 vtu `ݒ (cڡ *, u_t32_t , ); 412 vtu `move (cڡ *, u_t32_t ); 413 vtu `_t ( u_t32_t ags ); 415 vtu `t_loc ( db_mloc_f_ty , db_loc_f_ty , 416 db__f_ty ); 417 vtu `t_p_ive (*); 418 vtu `g_chesize ( u_t32_t *, u_int32_t *, *); 419 vtu `t_chesize ( u_t32_t , u_int32_t, ); 420 vtu `g_che_max ( u_t32_t *, u_int32_t *); 421 vtu `t_che_max ( u_t32_t , u_int32_t); 422 vtu `g_da_ds (const ***); 423 vtu `t_da_d (const *); 424 vtu `g_y_ags ( u_t32_t *); 425 vtu `t_rmed_d (, u_t32_t ); 426 vtu `t_ilive ( 427 (*)( DbEnv *, pid_t , db_thadid_t , u_t32_t )); 428 vtu `t_y (cڡ *, u_t32_t ); 429 vtu `t_r ( 430 (*)(cڡ DbEnv *, const *, const *)); 431 vtu `g_rfe ( FILE **); 432 vtu `t_rfe ( FILE *); 433 vtu `g_fx (const **); 434 vtu `t_fx (const *); 435 vtu `t_evt_nify ((*)( DbEnv *, u_t32_t , *)); 436 vtu `g_ags ( u_t32_t *); 437 vtu `t_ags ( u_t32_t , ); 438 vtu bo `is_bigdn (); 439 vtu `l_t (cڡ *, u_t32_t ); 440 vtu `t_edback ((*)( DbEnv *, , )); 441 vtu `g_lg_bsize ( u_t32_t *); 442 vtu `t_lg_bsize ( u_t32_t ); 443 vtu `g_lg_d (const **); 444 vtu `t_lg_d (const *); 445 vtu `g_lg_femode (*); 446 vtu `t_lg_femode (); 447 vtu `g_lg_max ( u_t32_t *); 448 vtu `t_lg_max ( u_t32_t ); 449 vtu `g_lg_gimax ( u_t32_t *); 450 vtu `t_lg_gimax ( u_t32_t ); 451 vtu `g_lk_cis (cڡ u_t8_t **, *); 452 vtu `t_lk_cis ( u_t8_t *, ); 453 vtu `g_lk_de ( u_t32_t *); 454 vtu `t_lk_de ( u_t32_t ); 455 vtu `g_lk_max_locks ( u_t32_t *); 456 vtu `t_lk_max_locks ( u_t32_t ); 457 vtu `g_lk_max_locks ( u_t32_t *); 458 vtu `t_lk_max_locks ( u_t32_t ); 459 vtu `g_lk_max_objes ( u_t32_t *); 460 vtu `t_lk_max_objes ( u_t32_t ); 461 vtu `g_mp_mmsize ( size_t *); 462 vtu `t_mp_mmsize ( size_t ); 463 vtu `g_mp_max_ݒfd (*); 464 vtu `t_mp_max_ݒfd (); 465 vtu `g_mp_max_wre (*, db_timeout_t *); 466 vtu `t_mp_max_wre (, db_timeout_t ); 467 vtu `t_msg ((*)(cڡ DbEnv *, const *)); 468 vtu `g_msgfe ( FILE **); 469 vtu `t_msgfe ( FILE *); 470 vtu `t_nic ((*)( DbEnv *, )); 471 vtu `t_c_rv (*, *, , , u_t32_t ); 472 vtu `g_shm_key (*); 473 vtu `t_shm_key (); 474 vtu `g_timeout ( db_timeout_t *, u_t32_t ); 475 vtu `t_timeout ( db_timeout_t , u_t32_t ); 476 vtu `g_tmp_d (const **); 477 vtu `t_tmp_d (const *); 478 vtu `g_tx_max ( u_t32_t *); 479 vtu `t_tx_max ( u_t32_t ); 480 vtu `t_p_dich ((*)( DbEnv *, 481 Dbt *, DbL *, db_cs )); 482 vtu `g_tx_timeamp ( time_t *); 483 vtu `t_tx_timeamp ( time_t *); 484 vtu `g_vbo ( u_t32_t which , *); 485 vtu `t_vbo ( u_t32_t which , ); 489 * `vsi (* maj , * m , * tch ); 492 * ` (); 503 vtu `__DB_STD ( oam * `g_r_am (); 504 vtu `t_r_am ( `__DB_STD ( oam ) *); 505 vtu `__DB_STD ( oam * `g_mesge_am (); 506 vtu `t_mesge_am ( `__DB_STD ( oam ) *); 509 `ruime_r ( DbEnv * v , cڡ * Δ , r , 510 r_picy ); 511 `ruime_r_dbt ( DbEnv * v , cڡ * Δ , Dbt * dbt , 512 r_picy ); 513 `ruime_r_lock_g ( DbEnv * v , cڡ * Δ , 514 r , db_lock_t , db_lockmode_t mode , 515 cڡ Dbt * obj , DbLock lock , dex , 516 r_picy ); 520 vtu `lock_de ( u_t32_t ags , u_t32_ y , * ab܋d ); 521 vtu `lock_g ( u_t32_t lock , u_t32_ ags , cڡ Dbt * obj , 522 db_lockmode_t lock_mode , DbLock * lock ); 523 vtu `lock_id ( u_t32_t * idp ); 524 vtu `lock_id_ ( u_t32_t id ); 525 vtu `lock_put ( DbLock * lock ); 526 vtu `lock_ ( DB_LOCK_STAT ** p , u_t32_t ags ); 527 vtu `lock__t ( u_t32_t ags ); 528 vtu `lock_vec ( u_t32_t lock , u_t32_ ags , 529 DB_LOCKREQ li [], i , DB_LOCKREQ ** ip ); 533 vtu `log_chive (** li [], u_t32_t ags ); 534 `log_com (cڡ DbL * l0 , cڡ DbL * l1 ); 535 vtu `log_curs ( DbLogc ** cursp , u_t32_t ags ); 536 vtu `log_fe ( DbL * l , * m , size_t n ); 537 vtu `log_ush (cڡ DbL * l ); 538 vtu `log_put ( DbL * l , cڡ Dbt * da , u_t32_t ags ); 539 vtu `log_tf ( DbTxn *, const *, ...); 541 vtu `log_ ( DB_LOG_STAT ** p , u_t32_t ags ); 542 vtu `log__t ( u_t32_t ags ); 546 vtu `memp_f ( DbMpoFe ** dbm , u_t32_t ags ); 547 vtu `memp_gi ( y , 548 pg_f_ty pg_f , 549 pgout_f_ty pgout_f ); 550 vtu `memp_ ( DB_MPOOL_STAT 551 ** g , DB_MPOOL_FSTAT *** f , u_t32_t ags ); 552 vtu `memp__t ( u_t32_t ags ); 553 vtu `memp_sync ( DbL * l ); 554 vtu `memp_ick ( p , * nwrٕ ); 558 vtu `mux_loc ( u_t32_t , db_mux_t *); 559 vtu `mux_ ( db_mux_t ); 560 vtu `mux_g_ign ( u_t32_t *); 561 vtu `mux_g_emt ( u_t32_t *); 562 vtu `mux_g_max ( u_t32_t *); 563 vtu `mux_g_s_s ( u_t32_t *); 564 vtu `mux_lock ( db_mux_t ); 565 vtu `mux_t_ign ( u_t32_t ); 566 vtu `mux_t_emt ( u_t32_t ); 567 vtu `mux_t_max ( u_t32_t ); 568 vtu `mux_t_s_s ( u_t32_t ); 569 vtu `mux_ ( DB_MUTEX_STAT **, u_t32_t ); 570 vtu `mux__t ( u_t32_t ); 571 vtu `mux_uock ( db_mux_t ); 575 vtu `txn_beg ( DbTxn * pid , DbTx** tid , u_t32_t ags ); 576 vtu `txn_checkpot ( u_t32_t kby , u_t32_ m , 577 u_t32_t ags ); 578 vtu `txn_cov ( DbPi * li , cou , 579 * , u_t32_t ags ); 580 vtu `txn_ ( DB_TXN_STAT ** p , u_t32_t ags ); 581 vtu `txn__t ( u_t32_t ags ); 585 vtu `p_e (, , u_t32_t ); 586 vtu `p_ush (); 587 vtu `p_oss_mesge ( Dbt *, Db*, , DbL *); 588 vtu `p_t ( Dbt *, u_t32_t ); 589 vtu `p_ ( DB_REP_STAT ** p , u_t32_t ags ); 590 vtu `p__t ( u_t32_t ags ); 591 vtu `p_t_a ( u_t32_t , u_int32_t); 592 vtu `p_g_lim ( u_t32_t *, u_int32_t *); 593 vtu `p_t_lim ( u_t32_t , u_int32_t); 594 vtu `p_t_t (, (*)( DbEnv *, 595 cڡ Dbt *, cڡ Db*, cڡ DbL *, , u_t32_t )); 596 vtu `t_p_que ( u_t32_t , u_int32_t); 597 vtu `g_thad_cou ( u_t32_t *); 598 vtu `t_thad_cou ( u_t32_t ); 599 vtu `t_thad_id ((*)( DbEnv *, pid_t *, db_thadid_t *)); 600 vtu `t_thad_id_rg (*(*)( DbEnv *, 601 pid_t , db_thadid_t , *)); 602 vtu `p_t_cfig ( u_t32_t which , off ); 603 vtu `p_g_cfig ( u_t32_t which , * of ); 604 vtu `p_sync ( u_t32_t ags ); 608 vtu `p_g_nses (* n ); 609 vtu `p_t_nses ( n ); 610 vtu `p_g_iܙy (* iܙyp ); 611 vtu `p_t_iܙy ( iܙy ); 612 vtu `p_g_timeout ( which , db_timeout_t * timeout ); 613 vtu `p_t_timeout ( which , db_timeout_t timeout ); 614 vtu `pmgr_add_me_se (cڡ * ho , u_t16_t pt , 615 * eidp , u_t32_t ags ); 616 vtu `pmgr_g_ack_picy (* picy ); 617 vtu `pmgr_t_ack_picy ( picy ); 618 vtu `pmgr_t_lol_se (cڡ * ho , u_t16_t pt , 619 u_t32_t ags ); 620 vtu `pmgr_se_li ( u_t * coup , DB_REPMGR_SITE ** lip ); 621 vtu `pmgr_t ( hads , u_t32_t ags ); 622 vtu `pmgr_ ( DB_REPMGR_STAT ** p , u_t32_t ags ); 623 vtu `pmgr__t ( u_t32_t ags ); 627 vtu DB_ENV * $g_DB_ENV () 629 imp_ ; 632 vtu cڡ DB_ENV * $g_cڡ_DB_ENV () const 634 imp_ ; 635 } } 637 DbEnv * $g_DbEnv ( DB_ENV * dbv ) 639 dbv ? ( DbEnv *)dbv-> i1_ : 0; 640 } } 642 cڡ DbEnv * $g_cڡ_DbEnv (cڡ DB_ENV * dbv ) 644 dbv ? (cڡ DbEnv *)dbv-> i1_ : 0; 645 } } 648 DbEnv * wp_DB_ENV ( DB_ENV * dbv ); 654 _p_dich_r ( DB_ENV * v , DBT * dbt , DB_LSN * l , 655 db_cs ); 656 _nic_r ( DB_ENV * v , rv ); 657 _edback_r ( DB_ENV * v , code , p ); 658 _evt_func_r ( DB_ENV * v , u_t32_t , *); 659 _ilive_r ( DB_ENV * v , pid_t pid , 660 db_thadid_t thrid , u_t32_t ags ); 661 _p_nd_r ( DB_ENV * v , cڡ DBT * l , 662 cڡ DBT * da , cڡ DB_LSN * l , id , u_t32_t ags ); 663 _am_r_funi (cڡ DB_ENV * v , 664 cڡ * efix , cڡ * mesge ); 665 _am_mesge_funi (cڡ DB_ENV * v , 666 cڡ * mesge ); 667 _thad_id_r ( DB_ENV * v , pid_t * pidp , 668 db_thadid_t * thridp ); 669 * _thad_id_rg_r ( DB_ENV * v , pid_t pid , 670 db_thadid_t thrid , * buf ); 672 give : 673 nup (); 674 lize ( DB_ENV * v ); 675 r_picy (); 678 DbEnv ( DB_ENV *, u_t32_t ags ); 681 DbEnv (const DbEnv &); 682 gݔ = (cڡ DbEnv &); 685 DB_ENV * gimp_ ; 686 gcڡru_r_ ; 687 u_t32_t gcڡru_ags_ ; 688 __DB_STD ( oam * gr_am_ ; 689 __DB_STD ( oam * gmesge_am_ ; 691 (* p_dich_back_ )( DbEnv *, Dbt *, DbL *, db_cs ); 692 (* ilive_back_ )( DbEnv *, pid_t , db_thadid_t , u_t32_t ); 693 (* r_back_ )(cڡ DbEnv *, const *, const *); 694 (* edback_back_ )( DbEnv *, , ); 695 (* mesge_back_ )(cڡ DbEnv *, const *); 696 (* nic_back_ )( DbEnv *, ); 697 (* evt_func_back_ )( DbEnv *, u_t32_t , *); 698 (* p_nd_back_ )( DbEnv *, cڡ Dbt *, const Dbt *, 699 cڡ DbL *, , u_t32_t ); 700 (* thad_id_back_ )( DbEnv *, pid_t *, db_thadid_t *); 701 *(* thad_id_rg_back_ )( DbEnv *, pid_t , db_thadid_t , 703 } }; 708 as c_exp܋d mDbLock 710 nd ass mDbEnv ; 712 mpublic : 713 DbLock (); 714 DbLock (const DbLock &); 715 mDbLock & mݔ = (cڡ DbLock &); 717 meed : 722 DbLock ( DB_LOCK ); 723 DB_LOCK mlock_ ; 729 as c_exp܋d mDbLogc : eed DB_LOGC 731 nd ass DbEnv ; 733 mpublic : 734 o ( u_t32_t _ags ); 735 g ( DbL * l , Dbt * da , u_t32_t _ags ); 736 vsi ( u_t32_t * vsip , u_t32_ _ags ); 738 mive : 744 DbLogc (); 745 ~ DbLogc (); 748 DbLogc (cڡ Dbc &); 749 mDbLogc & mݔ = (cڡ Dbc &); 755 as c_exp܋d mDbL : public DB_LSN 757 nd ass DbEnv ; 758 nd ass mDbLogc ; 764 as c_exp܋d mDbMpoFe 766 nd ass mDbEnv ; 767 nd ass mDb ; 769 mpublic : 770 o ( u_t32_t ags ); 771 g ( db_pgno_t * pgnddr , DbTxn * txn , u_t32_t ags , * g ); 772 g_r_n ( u_t32_t * n ); 773 g_feid ( u_t8_t * feid ); 774 g_ags ( u_t32_t * ag ); 775 g_y (* y ); 776 g_ϡ_pgno ( db_pgno_t * pgn ); 777 g_l_offt ( t32_t * off ); 778 g_maxsize ( u_t32_t * gbys , u_t32_* bys ); 779 g_pgcook ( DBT * dbt ); 780 g_iܙy ( DB_CACHE_PRIORITY * iܙyp ); 781 g_iڮ (); 782 ݒ (cڡ * fe , u_t32_t ags , mode , size_t gesize ); 783 put (* pgaddr , DB_CACHE_PRIORITY iܙy , u_t32_t ags ); 784 t_r_n ( u_t32_t n ); 785 t_feid ( u_t8_t * feid ); 786 t_ags ( u_t32_t ags , off ); 787 t_y ( y ); 788 t_l_offt ( t32_t offt ); 789 t_maxsize ( u_t32_t gbys , u_t32_ bys ); 790 t_pgcook ( DBT * dbt ); 791 t_iܙy ( DB_CACHE_PRIORITY iܙy ); 792 sync (); 794 vtu DB_MPOOLFILE * $g_DB_MPOOLFILE () 796 imp_ ; 799 vtu cڡ DB_MPOOLFILE * $g_cڡ_DB_MPOOLFILE () const 801 imp_ ; 802 } } 804 give : 805 DB_MPOOLFILE * imp_ ; 814 DbMpoFe (); 817 geed : 818 vtu ~ DbMpoFe (); 820 give : 822 DbMpoFe (const DbMpoolFile &); 823 gݔ = (cڡ DbMpoFe &); 829 as c_exp܋d mDbPi 831 mpublic : 832 DbTxn * txn ; 833 u_t8_t mgid [ DB_XIDDATASIZE ]; 839 as c_exp܋d mDbSequ 841 mpublic : 842 DbSequ ( Db * db , u_t32_t ags ); 843 mvtu ~ DbSequ (); 845 ݒ ( DbTxn * txnid , Dbt * key , u_t32_t ags ); 846 l_vue ( db_q_t vue ); 847 o ( u_t32_t ags ); 848 move ( DbTxn * txnid , u_t32_t ags ); 849 ( DB_SEQUENCE_STAT ** , u_t32_t ags ); 850 _t ( u_t32_t ags ); 852 g ( DbTxn * txnid , t32_t d , db_q_t * , u_t32_t ags ); 853 g_chesize ( t32_t * siz ); 854 t_chesize ( t32_t size ); 855 g_ags ( u_t32_t * ag ); 856 t_ags ( u_t32_t ags ); 857 g_nge ( db_q_t * mp , db_q_* maxp ); 858 t_nge ( db_q_t m , db_q_ max ); 860 Db * g_db (); 861 Dbt * g_key (); 863 vtu DB_SEQUENCE * $g_DB_SEQUENCE () 865 imp_ ; 868 vtu cڡ DB_SEQUENCE * $g_cڡ_DB_SEQUENCE () const 870 imp_ ; 871 } } 873 DbSequ * $g_DbSequ ( DB_SEQUENCE * q ) 875 ( DbSequ *) q -> i_ ; 876 } } 878 cڡ DbSequ * $g_cڡ_DbSequ (cڡ DB_SEQUENCE * q ) 880 (cڡ DbSequ *) q -> i_ ; 881 } } 884 DbSequ * wp_DB_SEQUENCE ( DB_SEQUENCE * q ); 886 give : 887 DbSequ ( DB_SEQUENCE * q ); 889 DbSequ (const DbSequence &); 890 gDbSequ & gݔ = (cڡ DbSequ &); 892 DB_SEQUENCE * gimp_ ; 893 DBT gkey_ ; 899 as c_exp܋d mDbTxn 901 nd ass mDbEnv ; 903 mpublic : 904 abt (); 905 comm ( u_t32_t ags ); 906 disrd ( u_t32_t ags ); 907 u_t32_t id (); 908 g_me (cڡ ** m ); 909 e ( u_t8_t * gid ); 910 t_me (cڡ * me ); 911 t_timeout ( db_timeout_t timeout , u_t32_t ags ); 913 vtu DB_TXN * $g_DB_TXN () 915 imp_ ; 918 vtu cڡ DB_TXN * $g_cڡ_DB_TXN () const 920 imp_ ; 921 } } 923 DbTxn * $g_DbTxn ( DB_TXN * txn ) 925 ( DbTxn *) txn -> i_ ; 926 } } 928 cڡ DbTxn * $g_cڡ_DbTxn (cڡ DB_TXN * txn ) 930 (cڡ DbTxn *) txn -> i_ ; 931 } } 934 DbTxn * wp_DB_TXN ( DB_TXN * txn ); 936 give : 937 DB_TXN * imp_ ; 947 DbTxn (); 949 DbTxn ( DB_TXN * txn ); 950 gvtu ~ DbTxn (); 953 DbTxn (const DbTxn &); 954 gݔ = (cڡ DbTxn &); 960 as c_exp܋d mDbt : ive DBT 962 nd ass Db ; 963 nd ass mDbc ; 964 nd ass mDbEnv ; 965 nd ass mDbLogc ; 966 nd ass mDbSequ ; 968 mpublic : 970 * $g_da (cڡ { da ; } 971 $t_da (* vue { da = vue; } } 974 u_t32_t $g_size (cڡ { size ; } } 975 $t_size ( u_t32_t vue { size = vue; } } 978 u_t32_t $g_un (cڡ { un ; } } 979 $t_un ( u_t32_t vue { un = vue; } } 982 u_t32_t $g_dn (cڡ { dn ; } } 983 $t_dn ( u_t32_t vue { dn = vue; } } 986 u_t32_t $g_doff (cڡ { doff ; } } 987 $t_doff ( u_t32_t vue { doff = vue; } } 990 u_t32_t $g_ags (cڡ { ags ; } } 991 $t_ags ( u_t32_t vue { ags = vue; } } 994 DBT * $g_DBT ({ ( DBT *) this ; } } 995 cڡ DBT * $g_cڡ_DBT (cڡ { (cڡ DBT *) this ; } } 997 Dbt * $g_Dbt ( DBT * dbt { ( Dbt *)dbt; } } 998 cڡ Dbt * $g_cڡ_Dbt (cڡ DBT * dbt ) 999 { (cڡ Dbt *) dbt ; } } 1001 Dbt (* da , u_t32_t size ); 1002 Dbt (); 1003 ~ Dbt (); 1004 Dbt (const Dbt &); 1005 gDbt & gݔ = (cڡ Dbt &); 1007 give : 1028 as c_exp܋d mDbMuɝIt 1030 mpublic : 1031 DbMuɝIt (cڡ Dbt & dbt ); 1032 meed : 1033 u_t8_t * da_ ; 1034 u_t32_t * mp_ ; 1037 as c_exp܋d mDbMuɝKeyDaIt : ive DbMuɝIt 1039 public : 1040 $DbMuɝKeyDaIt (cڡ Dbt & dbt : $DbMuɝIt ( dbt ) {} 1041 bo `xt ( Dbt & key , Db& da ); 1042 } }; 1044 as c_exp܋d mDbMuɝReoDaIt : ive DbMuɝIt 1046 public : 1047 $DbMuɝReoDaIt (cڡ Dbt & dbt : $DbMuɝIt ( dbt ) {} 1048 bo `xt ( db_o_t & o , Dbt & da ); 1049 } }; 1051 as c_exp܋d mDbMuɝDaIt : ive DbMuɝIt 1053 public : 1054 $DbMuɝDaIt (cڡ Dbt & dbt : $DbMuɝIt ( dbt ) {} 1055 bo `xt ( Dbt & da ); 1056 } }; 1068 as c_exp܋d mDbExi : public $__DB_STD ( exi ) 1070 public : 1071 vtu ~ $DbExi ( `throw (); 1072 `DbExi ( r ); 1073 `DbExi (cڡ * desti ); 1074 `DbExi (cڡ * desti , r ); 1075 `DbExi (cڡ * efix , cڡ * desti , r ); 1076 $g_o () const; 1077 vtu cڡ * $wh (cڡ `throw (); 1078 DbEnv * $g_v () const; 1079 `t_v ( DbEnv * v ); 1081 `DbExi (cڡ DbExi &); 1082 DbExi & ݔ = (const DbException &); 1084 ive : 1085 `desibe (cڡ * efix , cڡ * desti ); 1087 * wh_ ; 1088 r_ ; 1089 DbEnv * v_ ; 1096 as c_exp܋d DbDdlockExi : public DbExi 1098 public : 1099 vtu ~ $DbDdlockExi ( `throw (); 1100 `DbDdlockExi (cڡ * desti ); 1102 `DbDdlockExi (cڡ DbDdlockExi &); 1103 DbDdlockExi & ݔ = (const DbDeadlockException &); 1112 as c_exp܋d DbLockNGedExi : public DbExi 1114 public : 1115 vtu ~ $DbLockNGedExi ( `throw (); 1116 `DbLockNGedExi (cڡ * efix , db_lock_t , 1117 db_lockmode_t mode , cڡ Dbt * obj , cڡ DbLock lock , dex ); 1118 `DbLockNGedExi (cڡ * desti ); 1120 `DbLockNGedExi (cڡ DbLockNGedExi &); 1121 DbLockNGedExi & ݔ = 1122 (cڡ DbLockNGedExi &); 1124 db_lock_t $g_ () const; 1125 db_lockmode_t $g_mode () const; 1126 cڡ Dbt * $g_obj () const; 1127 DbLock * $g_lock () const; 1128 $g_dex () const; 1130 ive : 1131 db_lock_t _ ; 1132 db_lockmode_t mode_ ; 1133 cڡ Dbt * obj_ ; 1134 DbLock * lock_ ; 1135 dex_ ; 1142 as c_exp܋d DbMemyExi : public DbExi 1144 public : 1145 vtu ~ $DbMemyExi ( `throw (); 1146 `DbMemyExi ( Dbt * dbt ); 1147 `DbMemyExi (cڡ * efix , Dbt * dbt ); 1149 `DbMemyExi (cڡ DbMemyExi &); 1150 DbMemyExi & ݔ = (const DbMemoryException &); 1152 Dbt * $g_dbt () const; 1153 ive : 1154 Dbt * dbt_ ; 1161 as c_exp܋d DbRHdDdExi : public DbExi 1163 public : 1164 vtu ~ $DbRHdDdExi ( `throw (); 1165 `DbRHdDdExi (cڡ * desti ); 1167 `DbRHdDdExi (cڡ DbRHdDdExi &); 1168 DbRHdDdExi & ݔ = (const DbRepHandleDeadException &); 1175 as c_exp܋d DbRunRecovyExi : public DbExi 1177 public : 1178 vtu ~ $DbRunRecovyExi ( `throw (); 1179 `DbRunRecovyExi (cڡ * desti ); 1181 `DbRunRecovyExi (cڡ DbRunRecovyExi &); 1182 DbRunRecovyExi & ݔ = (const DbRunRecoveryException &); 1193 #ifde _MSC_VER 1194 #agm `wng ( p ) @../dbinc/db_dispatch.h 37 #ide _DB_DISPATCH_H_ 38 #_DB_DISPATCH_H_ ) 40 #i defed ( __lulus ) 50 TXNLIST_DELETE , 51 TXNLIST_LSN , 52 TXNLIST_PGNO , 53 TXNLIST_TXNID 54 } tdb_txi_ty ; 56 #DB_TXNLIST_MASK ( hp , n % hp-> ns ) ) 57 s__db_txnhd { 58 * td ; 59 u_t32_t maxid ; 60 DB_LSN maxl ; 61 DB_LSN ck ; 62 DB_LSN unc_l ; 64 u_t32_t gi ; 65 u_t32_t g_loc ; 67 u_t32_t gi ; 68 u_t32_t txn_m ; 69 u_t32_t txn_max ; 70 } * g_y ; 71 u_t ns ; 72 LIST_HEAD ( __db_hdlk , __db_txi hd [1]; 75 #DB_LSN_STACK_SIZE 4 ) 76 s__db_txi { 77 db_txi_ty ty ; 78 LIST_ENTRY ( __db_txi lks ; 81 u_t32_t txnid ; 82 u_t32_t gi ; 83 u_t32_t us ; 84 } t ; 86 u_t32_t ack_size ; 87 u_t32_t ack_dx ; 88 DB_LSN * l_ack ; 89 } l ; 91 u_t32_t rs ; 92 u_t32_t maxy ; 93 t32_t locked ; 94 * ame ; 95 t32_t feid ; 96 db_pgno_t * pgno_y ; 97 u_t8_t uid [ DB_FILE_ID_LEN ]; 98 } p ; 99 } u ; 106 LIMBO_NORMAL , 107 LIMBO_PREPARE , 108 LIMBO_RECOVER , 109 LIMBO_TIMESTAMP , 110 LIMBO_COMPENSATE 111 } tdb_limbo_e ; 113 #i defed ( __lulus ) @../dbinc/db_int.in 9 #ide _DB_INT_H_ 10 #_DB_INT_H_ ) 15 #ifde HAVE_SYSTEM_INCLUDE_FILES 16 ~<sys/tys.h > 17 #ifde DIAG_MVCC 18 ~<sys/mm.h > 20 ~<sys/.h > 22 #i defed ( __INCLUDE_SELECT_H ) 23 #ifde HAVE_SYS_SELECT_H 24 ~<sys/.h > 26 #ifde HAVE_VXWORKS 27 ~<Lib.h > 31 #i TIME_WITH_SYS_TIME 32 ~<sys/time.h > 33 ~<time.h > 35 #i HAVE_SYS_TIME_H 36 ~<sys/time.h > 38 ~<time.h > 42 #ifde HAVE_VXWORKS 43 ~<t/uio.h > 45 ~<sys/uio.h > 48 #i defed ( __INCLUDE_NETWORKING ) 49 #ifde HAVE_SYS_SOCKET_H 50 ~<sys/sock.h > 52 ~<t/.h > 53 ~<tdb.h > 54 ~</.h > 57 #i defed ( STDC_HEADERS || defed( __lulus ) 58 ~<dg.h > 60 ~<vgs.h > 63 ~<y.h > 64 ~<o.h > 65 ~<f.h > 66 ~<lims.h > 67 ~<sigl.h > 68 ~<ddef.h > 69 ~<dio.h > 70 ~<dlib.h > 71 ~<rg.h > 72 ~<unid.h > 74 #i defed ( __INCLUDE_DIRECTORY ) 75 #i HAVE_DIRENT_H 76 ~<dt.h > 77 #NAMLEN ( dt ` ((dt)-> d_me ) ) 79 #dt de ) 80 #NAMLEN ( dt (dt)-> d_mn ) 81 #i HAVE_SYS_NDIR_H 82 ~<sys/nd.h > 84 #i HAVE_SYS_DIR_H 85 ~<sys/d.h > 87 #i HAVE_NDIR_H 88 ~<nd.h > 95 #ifde DB_WIN32 96 ~"dbc/w_db.h " 99 ~"db.h " 100 ~"ib_pt.h " 102 ~"dbc/queue.h " 103 ~"dbc/shqueue.h " 105 #i defed ( __lulus ) 112 #unde FALSE 113 #FALSE 0 ) 114 #unde TRUE 115 #TRUE (! FALSE ) ) 117 #MEGABYTE 1048576 ) 118 #GIGABYTE 1073741824 ) 120 #NS_PER_MS 1000000 ) 121 #NS_PER_US 1000 ) 122 #NS_PER_SEC 1000000000 ) 123 #US_PER_MS 1000 ) 124 #US_PER_SEC 1000000 ) 125 #MS_PER_NS 1000000 ) 126 #MS_PER_SEC 1000 ) 128 #RECNO_OOB 0 ) 131 #POWER_OF_TWO ( x (((x& ((x- 1)=0) ) 134 #DB_MIN_PGSIZE 0x000200 ) 135 #DB_MAX_PGSIZE 0x010000 ) 136 #IS_VALID_PAGESIZE ( x ) \ 137 ( `POWER_OF_TWO ( x && (x> DB_MIN_PGSIZE && ((x< DB_MAX_PGSIZE )) ) 140 #DB_MINPAGECACHE 16 ) 146 #DB_DEF_IOSIZE (8 * 1024) ) 149 #unde DB_ALIGN 150 #DB_ALIGN ( v , bound ) \ 151 ((( v + ( bound - 1& ~((( utmax_t )(bound)- 1)) ) 154 #unde ALIGNP_INC 155 #ALIGNP_INC ( p , bound ) \ 156 (*)((( u_t )( p + ( bound - 1& ~(((u_t)(bound)- 1)) ) 163 #P_TO_ULONG ( p (( u_lg )( u_t ))) ) 173 #P_TO_UINT32 ( p (( u_t32_t )( u_t ))) ) 174 #P_TO_UINT16 ( p (( u_t16_t )( u_t ))) ) 189 #unde SSZ 190 #SSZ ( me , fld `P_TO_UINT16 (&((am*)0)->fld)) ) 192 #unde SSZA 193 #SSZA ( me , fld `P_TO_UINT16 (&((am*)0)->fld[0])) ) 196 s__ { 197 u_t32_t mask ; 198 cڡ * me ; 199 } tFN ; 202 #FLD_CLR ( d , f (d&~(f) ) 203 #FLD_ISSET ( d , f ((d& (f)) ) 204 #FLD_SET ( d , f (d|(f) ) 205 #F_CLR ( p , f )-> ags &~(f) ) 206 #F_ISSET ( p , f ()-> ags & (f)) ) 207 #F_SET ( p , f )-> ags |(f) ) 208 #LF_CLR ( f (( ags &~(f)) ) 209 #LF_ISSET ( f (( ags & (f)) ) 210 #LF_SET ( f (( ags |(f)) ) 220 #DB_PCT ( v , tٮ ) \ 221 (()(( tٮ =0 ? 0 : (()( v * 100/ (tٮ))) ) 222 #DB_PCT_PG ( v , tٮ , pgsize ) \ 223 (()(( tٮ ) == 0 ? 0 : \ 224 100 - (()( v * 100/ ((() tٮ * ( pgsize )))) ) 230 #unde STAT 231 #ifdef HAVE_STATISTICS 232 #STAT ( x ) x 234 #STAT ( x ) ) 242 s__db_msgbuf { 243 * buf ; 244 * cur ; 245 size_t n ; 246 } tDB_MSGBUF ; 247 #DB_MSGBUF_INIT ( a ) do { \ 248 ( a )-> buf = (a)-> cur = NULL ; \ 249 ( a )-> n = 0; \ 250 } 0) ) 251 #DB_MSGBUF_FLUSH ( dbv , a ) do { \ 252 i(( a )-> buf ! NULL ) { \ 253 i(( a )-> cur !)-> buf ) \ 254 `__db_msg ( dbv , "%s", ( a )-> buf ); \ 255 `__os_ ( dbv , ( a )-> buf ); \ 256 `DB_MSGBUF_INIT ( a ); \ 258 } 0) ) 259 #STAT_FMT ( msg , fmt , ty , v ) do { \ 260 DB_MSGBUF __mb ; \ 261 `DB_MSGBUF_INIT (& __mb ); \ 262 `__db_msgadd ( dbv , & __mb , fmt , ( ty )( v )); \ 263 `__db_msgadd ( dbv , & __mb , "\t%s", msg ); \ 264 `DB_MSGBUF_FLUSH ( dbv , & __mb ); \ 265 } 0) ) 266 #STAT_HEX ( msg , v ) \ 267 `__db_msg ( dbv , "%#lx\t%s", ( u_lg )( v ), msg ) ) 268 #STAT_ISSET ( msg , p ) \ 269 `__db_msg ( dbv , "%sS\t%s", ( p = NULL ? "!" : " ", msg ) ) 270 #STAT_LONG ( msg , v ) \ 271 `__db_msg ( dbv , "%ld\t%s", ()( v ), msg ) ) 272 #STAT_LSN ( msg , lp ) \ 273 `__db_msg ( dbv , "%lu/%lu\t%s", \ 274 ( u_lg )( lp )-> fe , (u_lg)֢p)-> offt , msg ) ) 275 #STAT_POINTER ( msg , v ) \ 276 `__db_msg ( dbv , "%#lx\t%s", `P_TO_ULONG ( v ), msg ) ) 277 #STAT_STRING ( msg , p ) do { \ 278 cڡ * __p = p ; \ 279 `__db_msg ( dbv , "%s\t%s", __p = NULL ? "!S" : __p, msg ); \ 280 } 0) ) 281 #STAT_ULONG ( msg , v ) \ 282 `__db_msg ( dbv , "%lu\t%s", ( u_lg )( v ), msg ) ) 290 #DB_SET_DBT ( dbt , d , s ) do { \ 291 ( dbt ). da = (*)( d ); \ 292 ( dbt ). size = ( u_t32_t )( s ); \ 293 } 0) ) 294 #DB_INIT_DBT ( dbt , d , s ) do { \ 295 `memt (&( dbt ), 0, (dbt)); \ 296 `DB_SET_DBT ( dbt , d , s ); \ 297 } 0) ) 307 #DB_RETOK_STD ( t (ԑ=0) ) 308 #DB_RETOK_DBCDEL ( t (ԑ=0 || (t= DB_KEYEMPTY || \ 309 ( t = DB_NOTFOUND ) ) 310 #DB_RETOK_DBCGET ( t (ԑ=0 || (t= DB_KEYEMPTY || \ 311 ( t = DB_NOTFOUND ) ) 312 #DB_RETOK_DBCPUT ( t (ԑ=0 || (t= DB_KEYEXIST || \ 313 ( t = DB_NOTFOUND ) ) 314 #DB_RETOK_DBDEL ( t `DB_RETOK_DBCDEL ԑ) ) 315 #DB_RETOK_DBGET ( t `DB_RETOK_DBCGET ԑ) ) 316 #DB_RETOK_DBPUT ( t (ԑ=0 || (t= DB_KEYEXIST ) ) 317 #DB_RETOK_EXISTS ( t `DB_RETOK_DBCGET ԑ) ) 318 #DB_RETOK_LGGET ( t (ԑ=0 || (t= DB_NOTFOUND ) ) 319 #DB_RETOK_MPGET ( t (ԑ=0 || (t= DB_PAGE_NOTFOUND ) ) 320 #DB_RETOK_REPPMSG ( t ) ((ret) == 0 || \ 321 ( t = DB_REP_IGNORE || \ 322 ( t = DB_REP_ISPERM || \ 323 ( t = DB_REP_NEWMASTER || \ 324 ( t = DB_REP_NEWSITE || \ 325 ( t = DB_REP_NOTPERM ) ) 328 #ifdef EOPNOTSUPP 329 #DB_OPNOTSUP EOPNOTSUPP ) 331 #ifdef ENOTSUP 332 #DB_OPNOTSUP ENOTSUP ) 334 #DB_OPNOTSUP EINVAL ) 346 #DB_MAXPATHLEN 1024 ) 348 #PATH_DOT "." ) 350 #PATH_SEPARATOR "@PATH_SEPARATOR@" ) 357 DB_APP_NONE =0, 358 DB_APP_DATA , 359 DB_APP_LOG , 360 DB_APP_TMP 361 } tAPPNAME ; 382 #ALIVE_ON ( dbv ((dbv)-> is_ive ! NULL ) ) 383 #CDB_LOCKING ( dbv `F_ISSET (dbv, DB_ENV_CDB ) ) 384 #CRYPTO_ON ( dbv ((dbv)-> yo_hd ! NULL ) ) 385 #LOCKING_ON ( dbv ((dbv)-> lk_hd ! NULL ) ) 386 #LOGGING_ON ( dbv ((dbv)-> lg_hd ! NULL ) ) 387 #MPOOL_ON ( dbv ((dbv)-> mp_hd ! NULL ) ) 388 #MUTEX_ON ( dbv ((dbv)-> mux_hd ! NULL ) ) 389 #REP_ON ( dbv ) \ 390 (( dbv )-> p_hd ! NULL && (dbv)->p_hd-> gi !NULL) ) 391 #RPC_ON ( dbv ((dbv)-> _hd ! NULL ) ) 392 #TXN_ON ( dbv ((dbv)-> tx_hd ! NULL ) ) 399 #STD_LOCKING ( dbc ) \ 400 (! `F_ISSET ( dbc , DBC_OPD ) && \ 401 ! `CDB_LOCKING (( dbc )-> dbp -> dbv && `LOCKING_ON ((dbc)->dbp->dbv)) ) 406 #IS_RECOVERING ( dbv ) \ 407 ( `LOGGING_ON ( dbv && `F_ISSET ((dbv)-> lg_hd , DBLOG_RECOVER )) ) 410 #ENV_ILLEGAL_AFTER_OPEN ( dbv , me ) \ 411 i( `F_ISSET (( dbv ), DB_ENV_OPEN_CALLED )) \ 412 ( `__db_mi_ݒ ( dbv , me , 1)); ) 413 #ENV_ILLEGAL_BEFORE_OPEN ( dbv , me ) \ 414 i(! `F_ISSET (( dbv ), DB_ENV_OPEN_CALLED )) \ 415 ( `__db_mi_ݒ ( dbv , me , 0)); ) 418 #ENV_REQUIRES_CONFIG ( dbv , hd , i , ags ) \ 419 i( hd = NULL ) \ 420 ( `__db_v_cfig ( dbv , i , ags )); ) 421 #ENV_REQUIRES_CONFIG_XX ( dbv , hd , i , ags ) \ 422 i(( dbv )-> hd -> gi = NULL ) \ 423 ( `__db_v_cfig ( dbv , i , ags )); ) 424 #ENV_NOT_CONFIGURED ( dbv , hd , i , ags ) \ 425 i( `F_ISSET (( dbv ), DB_ENV_OPEN_CALLED )) \ 426 `ENV_REQUIRES_CONFIG ( dbv , hd , i , ags ) ) 428 #ENV_ENTER ( dbv , ) do { \ 429 __t ; \ 430 i(( dbv )-> thr_hashb = NULL ) \ 431 = NULL ; \ 433 i(( __t = \ 434 `__v_t_e ( dbv , &( ), THREAD_ACTIVE )) != 0) \ 435 ( __t ); \ 437 } 0) ) 439 #ifde DIAGNOSTIC 440 #ENV_LEAVE ( dbv , ) do { \ 441 i(( ! NULL ) { \ 442 `DB_ASSERT ( dbv , ( )-> dbth_e = THREAD_ACTIVE ); \ 443 ( )-> dbth_e = THREAD_OUT ; \ 445 } 0) ) 447 #ENV_LEAVE ( dbv , ) do { \ 448 i(( ! NULL ) \ 449 ( )-> dbth_e = THREAD_OUT ; \ 450 } 0) ) 452 #ifde DIAGNOSTIC 453 #CHECK_THREAD ( dbv ) do { \ 454 DB_THREAD_INFO * __ ; \ 455 i(( dbv )-> thr_hashb ! NULL ) { \ 456 () `__v_t_e ( dbv , & __ , THREAD_DIAGNOSTIC ); \ 457 `DB_ASSERT ( dbv , \ 458 __ ! NULL && __-> dbth_e ! THREAD_OUT ); \ 460 } 0) ) 461 #ifde HAVE_STATISTICS 462 #CHECK_MTX_THREAD ( dbv , mtx ) do { \ 463 i( mtx -> loc_id ! MTX_MUTEX_REGION && \ 464 mtx -> loc_id ! MTX_ENV_REGION && \ 465 mtx -> loc_id ! MTX_APPLICATION ) \ 466 `CHECK_THREAD ( dbv ); \ 467 } 0) ) 469 #CHECK_MTX_THREAD ( dbv , mtx ) ) 472 #CHECK_THREAD ( dbv ) ) 473 #CHECK_MTX_THREAD ( dbv , mtx ) ) 477 THREAD_SLOT_NOT_IN_USE =0, 478 THREAD_OUT , 479 THREAD_ACTIVE , 480 THREAD_BLOCKED 481 #ifde DIAGNOSTIC 482 , THREAD_DIAGNOSTIC 484 } tDB_THREAD_STATE ; 486 s__db_thad_fo { 487 pid_t dbth_pid ; 488 db_thadid_t dbth_tid ; 489 DB_THREAD_STATE dbth_e ; 490 SH_TAILQ_ENTRY dbth_lks ; 491 } tDB_THREAD_INFO ; 493 s__v_thad_fo { 494 u_t32_t thr_cou ; 495 u_t32_t thr_max ; 496 u_t32_t thr_nbuck ; 497 roff_t thr_hashoff ; 498 } tTHREAD_INFO ; 500 #DB_EVENT ( dbv , e , efo ) do { \ 501 i(( dbv )-> db_evt_func ! NULL ) \ 502 ( dbv )-> `db_evt_func (dbv, e , efo ); \ 503 } 0) ) 512 #DB_IS_THREADED ( dbp ) \ 513 (( dbp )-> mux ! MUTEX_INVALID ) ) 516 #DB_ILLEGAL_AFTER_OPEN ( dbp , me ) \ 517 i( `F_ISSET (( dbp ), DB_AM_OPEN_CALLED )) \ 518 ( `__db_mi_ݒ (( dbp )-> dbv , me , 1)); ) 519 #DB_ILLEGAL_BEFORE_OPEN ( dbp , me ) \ 520 i(! `F_ISSET (( dbp ), DB_AM_OPEN_CALLED )) \ 521 ( `__db_mi_ݒ (( dbp )-> dbv , me , 0)); ) 523 #DB_ILLEGAL_IN_ENV ( dbp , me ) \ 524 i(! `F_ISSET (( dbp )-> dbv , DB_ENV_DBLOCAL )) \ 525 ( `__db_mi_v (( dbp )-> dbv , me )); ) 526 #DB_ILLEGAL_METHOD ( dbp , ags ) { \ 527 __t ; \ 528 i(( __t = `__dbh_am_chk ( dbp , ags )) != 0) \ 529 ( __t ); \ 530 } ) 536 #__DBC_INTERNAL \ 537 DBC * d ; \ 539 * ge ; \ 540 db_pgno_t ro ; \ 541 db_pgno_t pgno ; \ 542 db_dx_t dx ; \ 544 DB_LOCK lock ; \ 545 db_lockmode_t lock_mode ; ) 547 s__dbc_ { 548 __DBC_INTERNAL 552 um { MU_REMOVE , MU_RENAME , MU_OPEN } tmu_ai ; 558 #IS_INITIALIZED ( dbc ((dbc)-> -> pgno ! PGNO_INVALID ) ) 561 #FREE_IF_NEEDED ( dbv , dbt ) \ 562 i( `F_ISSET (( dbt ), DB_DBT_APPMALLOC )) { \ 563 `__os_u (( dbv ), ( dbt )-> da ); \ 564 `F_CLR (( dbt ), DB_DBT_APPMALLOC ); \ 565 } ) 571 #SET_RET_MEM ( dbc , owr ) \ 573 ( dbc )-> rskey = &( owr )-> my_rskey ; \ 574 ( dbc )-> rkey = &( owr )-> my_rkey ; \ 575 ( dbc )-> rda = &( owr )-> my_rda ; \ 576 } 0) ) 579 #COPY_RET_MEM ( c , de ) \ 581 ( de )-> rskey = ( c )->rskey; \ 582 ( de )-> rkey = ( c )->rkey; \ 583 ( de )-> rda = ( c )->rdata; \ 584 } 0) ) 587 #RESET_RET_MEM ( dbc ) \ 589 ( dbc )-> rskey = &(dbc)-> my_rskey ; \ 590 ( dbc )-> rkey = &(dbc)-> my_rkey ; \ 591 ( dbc )-> rda = &(dbc)-> my_rda ; \ 592 } 0) ) 600 #DB_FTYPE_SET -1 ) 601 #DB_FTYPE_NOTSET 0 ) 602 #DB_LSN_OFF_NOTSET -1 ) 603 #DB_CLEARLEN_NOTSET UINT32_MAX ) 606 s__dbpgfo { 607 size_t db_gesize ; 608 u_t32_t ags ; 609 DBTYPE ty ; 610 } tDB_PGINFO ; 616 #ZERO_LSN ( LSN ) do { \ 617 ( LSN ). fe = 0; \ 618 ( LSN ). offt = 0; \ 619 } 0) ) 620 #IS_ZERO_LSN ( LSN ((LSN). fe =0 && (LSN). offt =0) ) 622 #IS_INIT_LSN ( LSN ((LSN). fe =1 && (LSN). offt =0) ) 623 #INIT_LSN ( LSN ) do { \ 624 ( LSN ). fe = 1; \ 625 ( LSN ). offt = 0; \ 626 } 0) ) 628 #MAX_LSN ( LSN ) do { \ 629 ( LSN ). fe = UINT32_MAX ; \ 630 ( LSN ). offt = UINT32_MAX ; \ 631 } 0) ) 632 #IS_MAX_LSN ( LSN ) \ 633 (( LSN ). fe = UINT32_MAX && (LSN). offt =UINT32_MAX) ) 636 #LSN_NOT_LOGGED ( LSN ) do { \ 637 ( LSN ). fe = 0; \ 638 ( LSN ). offt = 1; \ 639 } 0) ) 640 #IS_NOT_LOGGED_LSN ( LSN ) \ 641 (( LSN ). fe =0 && (LSN). offt =1) ) 647 #LOG_COMPARE ( l0 , l1 ) \ 648 (( l0 )-> fe !( l1 )->file ? \ 649 (( l0 )-> fe < ( l1 )->file ? -1 : 1) : \ 650 (( l0 )-> offt !( l1 )->offset ? \ 651 (( l0 )-> offt < ( l1 )->off? -1 : 1: 0)) ) 656 #DB_NONBLOCK ( C ((C)-> txn ! NULL && `F_ISSET ((C)->txn, TXN_NOWAIT )) ) 657 #NOWAIT_FLAG ( txn ) \ 658 (( txn ! NULL && `F_ISSET (xn), TXN_NOWAIT ? DB_LOCK_NOWAIT : 0) ) 659 #IS_REAL_TXN ( txn ) \ 660 (( txn ! NULL && ! `F_ISSET xn, TXN_CDSGROUP )) ) 661 #IS_SUBTRANSACTION ( txn ) \ 662 (( txn ! NULL && (txn)-> !NULL) ) 667 #DB_IV_BYTES 16 ) 668 #DB_MAC_KEY 20 ) 673 #ifde CONFIG_TEST 684 #DB_RPC2ND_MASK 0x00f00000 ) 686 #DB_RPC2ND_REVERSEDATA 0x00100000 ) 687 #DB_RPC2ND_NOOP 0x00200000 ) 688 #DB_RPC2ND_CONCATKEYDATA 0x00300000 ) 689 #DB_RPC2ND_CONCATDATAKEY 0x00400000 ) 690 #DB_RPC2ND_REVERSECONCAT 0x00500000 ) 691 #DB_RPC2ND_TRUNCDATA 0x00600000 ) 692 #DB_RPC2ND_CONSTANT 0x00700000 ) 693 #DB_RPC2ND_GETZIP 0x00800000 ) 694 #DB_RPC2ND_GETNAME 0x00900000 ) 700 __db_gfo_t ; __db_gfo_ tREGINFO ; 701 __db_txnhd ; __db_txnhd tDB_TXNHEAD ; 702 __db_txi ; __db_txi tDB_TXNLIST ; 703 __vrfy_chdfo ;__vrfy_chdf tVRFY_CHILDINFO ; 704 __vrfy_dbfo ; __vrfy_dbf tVRFY_DBINFO ; 705 __vrfy_gefo ; __vrfy_gef tVRFY_PAGEINFO ; 707 SH_TAILQ_HEAD ( t__hash_hd tDB_HASHTAB ; 709 #i defed ( __lulus ) 716 @ db_t_def @ 718 ~"dbc/globs.h " 719 ~"dbc/ock.h " 720 ~"dbc/debug.h " 721 ~"dbc/gi.h " 722 ~"dbc_auto/v_ext.h " 723 ~"dbc/mux.h " 724 ~"dbc/os.h " 725 #ifde HAVE_REPLICATION_THREADS 726 ~"dbc/pmgr.h " 728 ~"dbc/p.h " 729 ~"dbc_auto/ib_ext.h " 730 ~"dbc_auto/comm_ext.h " 742 #DBENV_LOGGING ( dbv ) \ 743 ( `LOGGING_ON ( dbv && ! `IS_REP_CLIENT (dbenv) && \ 744 (! `IS_RECOVERING ( dbv ))) ) 765 #i defed ( DIAGNOSTIC || defed( DEBUG_ROP || defed( DEBUG_WOP ) 766 #DBC_LOGGING ( dbc `__dbc_loggg (dbc) ) 768 #DBC_LOGGING ( dbc ) \ 769 (( dbc )-> txn ! NULL && `LOGGING_ON ((dbc)-> dbp -> dbv ) && \ 770 ! `F_ISSET (( dbc ), DBC_RECOVER && ! `IS_REP_CLIENT ((dbc)-> dbp -> dbv )) ) @../dbinc/db_join.h 9 #ide _DB_JOIN_H_ 10 #_DB_JOIN_H_ ) 12 #i defed ( __lulus ) 21 s__jo_curs { 22 u_t8_t * j_exhaued ; 23 DBC ** j_curi ; 24 DBC ** j_fdupcurs ; 25 DBC ** j_wkcurs ; 26 DB * j_imy ; 27 DBT j_key ; 28 DBT j_rda ; 29 u_t32_t j_ncurs ; 30 #JOIN_RETRY 0x01 ) 31 u_t32_t ags ; 32 } tJOIN_CURSOR ; 34 #i defed ( __lulus ) @../dbinc/db_page.h 9 #ide _DB_PAGE_H_ 10 #_DB_PAGE_H_ ) 12 #i defed ( __lulus ) 32 #PGNO_INVALID 0 ) 33 #PGNO_BASE_MD 0 ) 36 #P_INVALID 0 ) 37 #__P_DUPLICATE 1 ) 38 #P_HASH_UNSORTED 2 ) 39 #P_IBTREE 3 ) 40 #P_IRECNO 4 ) 41 #P_LBTREE 5 ) 42 #P_LRECNO 6 ) 43 #P_OVERFLOW 7 ) 44 #P_HASHMETA 8 ) 45 #P_BTREEMETA 9 ) 46 #P_QAMMETA 10 ) 47 #P_QAMDATA 11 ) 48 #P_LDUP 12 ) 49 #P_HASH 13 ) 50 #P_PAGETYPE_MAX 14 ) 52 #P_DONTEXTEND 0x8000 ) 60 #DB_PAGE_DB_LEN 32 ) 61 #DB_PAGE_QUEUE_LEN 0 ) 70 s_dbma33 { 71 DB_LSN l ; 72 db_pgno_t pgno ; 73 u_t32_t magic ; 74 u_t32_t vsi ; 75 u_t32_t gesize ; 76 u_t8_t y_g ; 77 u_t8_t ty ; 78 #DBMETA_CHKSUM 0x01 ) 79 u_t8_t maags ; 80 u_t8_t unud1 ; 81 u_t32_t ; 82 db_pgno_t ϡ_pgno ; 83 u_t32_t unud3 ; 84 u_t32_t key_cou ; 85 u_t32_t cd_cou ; 86 u_t32_t ags ; 88 u_t8_t uid [ DB_FILE_ID_LEN ]; 89 } tDBMETA33 , tDBMETA ; 94 s_btma33 { 95 #BTM_DUP 0x001 ) 96 #BTM_RECNO 0x002 ) 97 #BTM_RECNUM 0x004 ) 98 #BTM_FIXEDLEN 0x008 ) 99 #BTM_RENUMBER 0x010 ) 100 #BTM_SUBDB 0x020 ) 101 #BTM_DUPSORT 0x040 ) 102 #BTM_MASK 0x07f ) 103 DBMETA dbma ; 105 u_t32_t unud1 ; 106 u_t32_t mkey ; 107 u_t32_t _n ; 108 u_t32_t _d ; 109 u_t32_t ro ; 110 u_t32_t unud2 [92]; 111 u_t32_t yo_magic ; 112 u_t32_t ash [3]; 113 u_t8_t iv [ DB_IV_BYTES ]; 114 u_t8_t chksum [ DB_MAC_KEY ]; 119 } tBTMETA33 , tBTMETA ; 124 s_hashma33 { 125 #DB_HASH_DUP 0x01 ) 126 #DB_HASH_SUBDB 0x02 ) 127 #DB_HASH_DUPSORT 0x04 ) 128 DBMETA dbma ; 130 u_t32_t max_buck ; 131 u_t32_t high_mask ; 132 u_t32_t low_mask ; 133 u_t32_t f ; 134 u_t32_t m ; 135 u_t32_t h_chkey ; 136 #NCACHED 32 ) 138 u_t32_t es [ NCACHED ]; 139 u_t32_t unud [59]; 140 u_t32_t yo_magic ; 141 u_t32_t ash [3]; 142 u_t8_t iv [ DB_IV_BYTES ]; 143 u_t8_t chksum [ DB_MAC_KEY ]; 148 } tHMETA33 , tHMETA ; 157 s_qma33 { 158 DBMETA dbma ; 160 u_t32_t f_o ; 161 u_t32_t cur_o ; 162 u_t32_t _n ; 163 u_t32_t _d ; 164 u_t32_t c_ge ; 165 u_t32_t ge_ext ; 167 u_t32_t unud [91]; 168 u_t32_t yo_magic ; 169 u_t32_t ash [3]; 170 u_t8_t iv [ DB_IV_BYTES ]; 171 u_t8_t chksum [ DB_MAC_KEY ]; 175 } tQMETA33 , tQMETA ; 182 #DBMETASIZE 512 ) 212 s__pg_chksum { 213 u_t8_t unud [2]; 214 u_t8_t chksum [4]; 215 } tPG_CHKSUM ; 217 s__pg_yo { 218 u_t8_t unud [2]; 219 u_t8_t chksum [ DB_MAC_KEY ]; 220 u_t8_t iv [ DB_IV_BYTES ]; 224 } tPG_CRYPTO ; 226 s_db_ge { 227 DB_LSN l ; 228 db_pgno_t pgno ; 229 db_pgno_t ev_pgno ; 230 db_pgno_t xt_pgno ; 231 db_dx_t s ; 232 db_dx_t hf_offt ; 242 #LEAFLEVEL 1 ) 243 #MAXBTREELEVEL 255 ) 244 u_t8_t v ; 245 u_t8_t ty ; 246 } tPAGE ; 254 #SIZEOF_PAGE 26 ) 259 #P_INP ( dbp , pg ) \ 260 (( db_dx_t *)(( u_t8_t *)( pg + SIZEOF_PAGE + \ 261 ( `F_ISSET (( dbp ), DB_AM_ENCRYPT ? ( PG_CRYPTO ) : \ 262 ( `F_ISSET (( dbp ), DB_AM_CHKSUM ? ( PG_CHKSUM : 0)))) ) 264 #P_IV ( dbp , pg ) \ 265 ( `F_ISSET (( dbp ), DB_AM_ENCRYPT ? (( u_t8_t *)( pg ) + \ 266 SIZEOF_PAGE + `SSZA ( PG_CRYPTO , iv )) \ 267 : NULL ) ) 269 #P_CHKSUM ( dbp , pg ) \ 270 ( `F_ISSET (( dbp ), DB_AM_ENCRYPT ? (( u_t8_t *)( pg ) + \ 271 SIZEOF_PAGE + `SSZA ( PG_CRYPTO , chksum )) : \ 272 ( `F_ISSET (( dbp ), DB_AM_CHKSUM ? (( u_t8_t *)( pg ) + \ 273 SIZEOF_PAGE + `SSZA ( PG_CHKSUM , chksum )) \ 274 : NULL )) ) 277 #LSN ( p ((( PAGE *)-> l ) ) 278 #PGNO ( p ((( PAGE *)-> pgno ) ) 279 #PREV_PGNO ( p ((( PAGE *)-> ev_pgno ) ) 280 #NEXT_PGNO ( p ((( PAGE *)-> xt_pgno ) ) 281 #NUM_ENT ( p ((( PAGE *)-> s ) ) 282 #HOFFSET ( p ((( PAGE *)-> hf_offt ) ) 283 #LEVEL ( p ((( PAGE *)-> v ) ) 284 #TYPE ( p ((( PAGE *)-> ty ) ) 294 #QPAGE_NORMAL 28 ) 295 #QPAGE_CHKSUM 48 ) 296 #QPAGE_SEC 64 ) 298 s_qge { 299 DB_LSN l ; 300 db_pgno_t pgno ; 301 u_t32_t unud0 [3]; 302 u_t8_t unud1 [1]; 303 u_t8_t ty ; 304 u_t8_t unud2 [2]; 305 u_t8_t chksum [ DB_MAC_KEY ]; 306 u_t8_t iv [ DB_IV_BYTES ]; 307 } tQPAGE ; 309 #QPAGE_SZ ( dbp ) \ 310 ( `F_ISSET (( dbp ), DB_AM_ENCRYPT ? QPAGE_SEC : \ 311 `F_ISSET (( dbp ), DB_AM_CHKSUM ? QPAGE_CHKSUM : QPAGE_NORMAL ) ) 327 #RE_NREC ( p ) \ 328 (( `TYPE ( p = P_IBTREE || TYPE= P_IRECNO ? `PREV_PGNO (p) : \ 329 ( db_pgno_t )( `TYPE ( p = P_LBTREE ? `NUM_ENT / 2 : NUM_ENT))) ) 330 #RE_NREC_ADJ ( p , adj ) \ 331 `PREV_PGNO ( p + adj ; ) 332 #RE_NREC_SET ( p , num ) \ 333 `PREV_PGNO ( p ( num ); ) 342 #P_INIT ( pg , pg_size , n , pg_ev , pg_xt , b , pg_ty ) do { \ 343 `PGNO ( pg ( n ); \ 344 `PREV_PGNO ( pg ( pg_ev ); \ 345 `NEXT_PGNO ( pg ( pg_xt ); \ 346 `NUM_ENT ( pg ) = (0); \ 347 `HOFFSET ( pg ( db_dx_t )( pg_size ); \ 348 `LEVEL ( pg ( b ); \ 349 `TYPE ( pg ( pg_ty ); \ 350 } 0) ) 353 #P_OVERHEAD ( dbp `P_TO_UINT16 ( `P_INP (dbp, 0)) ) 356 #LOFFSET ( dbp , pg ) \ 357 ( `P_OVERHEAD ( dbp + `NUM_ENT ( pg * ( db_dx_t )) ) 360 #P_FREESPACE ( dbp , pg ( `HOFFSET g- `LOFFSET (dbp,g)) ) 363 #P_ENTRY ( dbp , pg , dx (( u_t8_t *g + `P_INP (dbp,g)[dx]) ) 384 #OV_LEN ( p ((( PAGE *)-> hf_offt ) ) 385 #OV_REF ( p ((( PAGE *)-> s ) ) 388 #P_MAXSPACE ( dbp , psize (size- `P_OVERHEAD (dbp)) ) 391 #P_OVFLSPACE ( dbp , psize , pg ( `P_MAXSPACE (dbp,size- `HOFFSET g)) ) 398 #H_KEYDATA 1 ) 399 #H_DUPLICATE 2 ) 400 #H_OFFPAGE 3 ) 401 #H_OFFDUP 4 ) 411 #HPAGE_PTYPE ( p (*( u_t8_t *) ) 412 #HPAGE_TYPE ( dbp , pg , dx (* `P_ENTRY (dbp,g, indx)) ) 432 s_hkeyda { 433 u_t8_t ty ; 434 u_t8_t da [1]; 435 } tHKEYDATA ; 436 #HKEYDATA_DATA ( p ((( u_t8_t *+ `SSZA ( HKEYDATA , da )) ) 442 #LEN_HITEM ( dbp , pg , pgsize , dx ) \ 443 ((( dx =0 ? ( pgsize ) : \ 444 ( `P_INP ( dbp , pg )[( dx - 1])- (P_INP(dbp,g)[dx])) ) 446 #LEN_HKEYDATA ( dbp , pg , psize , dx ) \ 447 ( db_dx_t )( `LEN_HITEM ( dbp , pg , psize , dx - `HKEYDATA_SIZE (0)) ) 453 #HKEYDATA_SIZE ( n ) \ 454 (( n + `SSZA ( HKEYDATA , da )) ) 455 #HKEYDATA_PSIZE ( n ) \ 456 ( `HKEYDATA_SIZE ( n + ( db_dx_t )) ) 459 #PUT_HKEYDATA ( , kd , n , y ) { \ 460 (( HKEYDATA *)( ))-> ty = y ; \ 461 `memy (( u_t8_t *)( + (u_t8_t), kd , n ); \ 462 } ) 467 #H_NUMPAIRS ( pg ( `NUM_ENT g/ 2) ) 468 #H_KEYINDEX ( dx (dx) ) 469 #H_DATAINDEX ( dx ((dx+ 1) ) 470 #H_PAIRKEY ( dbp , pg , dx `P_ENTRY (dbp,g, `H_KEYINDEX (dx)) ) 471 #H_PAIRDATA ( dbp , pg , dx `P_ENTRY (dbp,g, `H_DATAINDEX (dx)) ) 472 #H_PAIRSIZE ( dbp , pg , psize , dx ) \ 473 ( `LEN_HITEM ( dbp , pg , psize , `H_KEYINDEX ( dx )) + \ 474 `LEN_HITEM ( dbp , pg , psize , `H_DATAINDEX ( dx ))) ) 475 #LEN_HDATA ( dbp , p , psize , dx ) \ 476 `LEN_HKEYDATA ( dbp , p , psize , `H_DATAINDEX ( dx )) ) 477 #LEN_HKEY ( dbp , p , psize , dx ) \ 478 `LEN_HKEYDATA ( dbp , p , psize , `H_KEYINDEX ( dx )) ) 483 s_hofage { 484 u_t8_t ty ; 485 u_t8_t unud [3]; 486 db_pgno_t pgno ; 487 u_t32_t ; 488 } tHOFFPAGE ; 490 #HOFFPAGE_PGNO ( p ((( u_t8_t *+ `SSZ ( HOFFPAGE , pgno )) ) 491 #HOFFPAGE_TLEN ( p ((( u_t8_t *+ `SSZ ( HOFFPAGE , )) ) 497 #HOFFPAGE_SIZE (( HOFFPAGE )) ) 498 #HOFFPAGE_PSIZE ( HOFFPAGE_SIZE + ( db_dx_t )) ) 503 s_hoffdup { 504 u_t8_t ty ; 505 u_t8_t unud [3]; 506 db_pgno_t pgno ; 507 } tHOFFDUP ; 508 #HOFFDUP_PGNO ( p ((( u_t8_t *+ `SSZ ( HOFFDUP , pgno )) ) 514 #HOFFDUP_SIZE (( HOFFDUP )) ) 521 #B_KEYDATA 1 ) 522 #B_DUPLICATE 2 ) 523 #B_OVERFLOW 3 ) 531 #B_DELETE (0x80) ) 532 #B_DCLR ( t &~ B_DELETE ) 533 #B_DSET ( t | B_DELETE ) 534 #B_DISSET ( t (& B_DELETE ) ) 536 #B_TYPE ( t (& ~ B_DELETE ) ) 537 #B_TSET ( t , ty ( `B_TYPE y)) ) 538 #B_TSET_DELETED ( t , ty (y| B_DELETE ) ) 543 s_bkeyda { 544 db_dx_t n ; 545 u_t8_t ty ; 546 u_t8_t da [1]; 547 } tBKEYDATA ; 550 #GET_BKEYDATA ( dbp , pg , dx ) \ 551 (( BKEYDATA *) `P_ENTRY ( dbp , pg , dx )) ) 560 #BKEYDATA_SIZE ( n ) \ 561 ( u_t16_t ) `DB_ALIGN (( n + `SSZA ( BKEYDATA , da ), ( u_t32_t )) ) 562 #BKEYDATA_PSIZE ( n ) \ 563 ( `BKEYDATA_SIZE ( n + ( db_dx_t )) ) 569 s_bovow { 570 db_dx_t unud1 ; 571 u_t8_t ty ; 572 u_t8_t unud2 ; 573 db_pgno_t pgno ; 574 u_t32_t ; 575 } tBOVERFLOW ; 578 #GET_BOVERFLOW ( dbp , pg , dx ) \ 579 (( BOVERFLOW *) `P_ENTRY ( dbp , pg , dx )) ) 585 #BOVERFLOW_SIZE \ 586 (( u_t16_t ) `DB_ALIGN (( BOVERFLOW ), ( u_t32_t ))) ) 587 #BOVERFLOW_PSIZE \ 588 ( BOVERFLOW_SIZE + ( db_dx_t )) ) 590 #BITEM_SIZE ( bk ) \ 591 ( `B_TYPE (( bk )-> ty ! B_KEYDATA ? BOVERFLOW_SIZE : \ 592 `BKEYDATA_SIZE (( bk )-> n )) ) 594 #BITEM_PSIZE ( bk ) \ 595 ( `B_TYPE (( bk )-> ty ! B_KEYDATA ? BOVERFLOW_PSIZE : \ 596 `BKEYDATA_PSIZE (( bk )-> n )) ) 603 #O_INDX 1 ) 604 #P_INDX 2 ) 613 s_b { 614 db_dx_t n ; 615 u_t8_t ty ; 616 u_t8_t unud ; 617 db_pgno_t pgno ; 618 db_o_t ecs ; 619 u_t8_t da [1]; 620 } tBINTERNAL ; 623 #GET_BINTERNAL ( dbp , pg , dx ) \ 624 (( BINTERNAL *) `P_ENTRY ( dbp , pg , dx )) ) 630 #BINTERNAL_SIZE ( n ) \ 631 ( u_t16_t ) `DB_ALIGN (( n + `SSZA ( BINTERNAL , da ), ( u_t32_t )) ) 632 #BINTERNAL_PSIZE ( n ) \ 633 ( `BINTERNAL_SIZE ( n + ( db_dx_t )) ) 642 s_r { 643 db_pgno_t pgno ; 644 db_o_t ecs ; 645 } tRINTERNAL ; 648 #GET_RINTERNAL ( dbp , pg , dx ) \ 649 (( RINTERNAL *) `P_ENTRY ( dbp , pg , dx )) ) 655 #RINTERNAL_SIZE \ 656 ( u_t16_t ) `DB_ALIGN (( RINTERNAL ), ( u_t32_t )) ) 657 #RINTERNAL_PSIZE \ 658 ( RINTERNAL_SIZE + ( db_dx_t )) ) 660 spgli { 661 db_pgno_t pgno ; 662 DB_LSN l ; 665 #i defed ( __lulus ) @../dbinc/db_server_int.h 9 #ide _DB_SERVER_INT_H_ 10 #_DB_SERVER_INT_H_ ) 12 #i defed ( __lulus ) 16 #DB_SERVER_TIMEOUT 300 ) 17 #DB_SERVER_MAXTIMEOUT 1200 ) 18 #DB_SERVER_IDLETIMEOUT 86400 ) 31 #DB_SERVER_FLAGMASK ( \ 32 DB_LOCKDOWN | DB_PRIVATE | DB_RECOVER | DB_RECOVER_FATAL | \ 33 DB_SYSTEM_MEM | DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 35 #CT_CURSOR 0x001 ) 36 #CT_DB 0x002 ) 37 #CT_ENV 0x004 ) 38 #CT_TXN 0x008 ) 40 #CT_JOIN 0x10000000 ) 41 #CT_JOINCUR 0x20000000 ) 43 home_y thome_y ; 44 shome_y { 45 LIST_ENTRY ( home_y s ; 46 * home ; 47 * d ; 48 * me ; 49 * sswd ; 60 #DB_SERVER_ENVFLAGS ( \ 61 DB_INIT_CDB | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | \ 62 DB_INIT_TXN | DB_JOINENV ) ) 64 #DB_SERVER_DBFLAGS ( DB_NOMMAP | DB_RDONLY | DB_READ_UNCOMMITTED ) ) 65 #DB_SERVER_DBNOSHARE ( DB_EXCL | DB_TRUNCATE ) ) 67 _vda t_vda ; 68 _dbda t_dbda ; 69 s_vda { 70 u_t32_t vags ; 71 u_t32_t ags ; 72 u_t32_t offags ; 73 home_y * home ; 76 s_dbda { 77 u_t32_t dbags ; 78 u_t32_t tags ; 79 * db ; 80 * subdb ; 81 DBTYPE ty ; 92 _y t_y ; 93 s_y { 94 LIST_ENTRY ( _y s ; 96 #ifde __lulus 97 DbEnv * vp ; 98 DbTxn * tx ; 99 Db * dbp ; 100 Dbc * dbc ; 102 DB_ENV * vp ; 103 DB_TXN * tx ; 104 DB * dbp ; 105 DBC * dbc ; 107 * yp ; 108 } hd_u ; 110 _vda vdp ; 111 _dbda dbdp ; 112 } ive_u ; 113 _id ; 114 * _aiv ; 115 * _igp ; 116 _aive ; 117 _timeout ; 118 _id ; 119 u_t32_t _fcou ; 120 u_t32_t _ty ; 121 _y * _ ; 122 _y * _v ; 125 #_vp hd_u . vp ) 126 #_tx hd_u . tx ) 127 #_dbp hd_u . dbp ) 128 #_dbc hd_u . dbc ) 129 #_yp hd_u . yp ) 131 #_vdp ive_u . vdp ) 132 #_dbdp ive_u . dbdp ) 134 __dbv_vbo ; 141 #ACTIVATE_CTP ( p , id , ty ) { \ 142 ( p `g_b˒t ( id ); \ 143 i(( p = NULL ) { \ 144 yp -> us = DB_NOSERVER_ID ; \ 148 `DB_ASSERT ( NULL , ( p )-> _ty & ( ty )); \ 149 `__dbv_aive ( p ); \ 150 } ) 152 #FREE_IF_CHANGED ( dbv , p , ig ) do { \ 153 i(( p ! NULL && (p!( ig )) \ 154 `__os_u (( dbv ), ( p )); \ 155 } 0) ) 157 #i defed ( __lulus ) @../dbinc/db_swap.h 37 #ide _DB_SWAP_H_ 38 #_DB_SWAP_H_ ) 40 #i defed ( __lulus ) 50 #unde M_64_SWAP 51 #M_64_SWAP ( a ) { \ 52 u_t64_t _tmp ; \ 53 _tmp = ( u_t64_t ) a ; \ 54 (( u_t8_t *)& a )[0] = ((u_t8_*)& _tmp )[7]; \ 55 (( u_t8_t *)& a )[1] = ((u_t8_*)& _tmp )[6]; \ 56 (( u_t8_t *)& a )[2] = ((u_t8_*)& _tmp )[5]; \ 57 (( u_t8_t *)& a )[3] = ((u_t8_*)& _tmp )[4]; \ 58 (( u_t8_t *)& a )[4] = ((u_t8_*)& _tmp )[3]; \ 59 (( u_t8_t *)& a )[5] = ((u_t8_*)& _tmp )[2]; \ 60 (( u_t8_t *)& a )[6] = ((u_t8_*)& _tmp )[1]; \ 61 (( u_t8_t *)& a )[7] = ((u_t8_*)& _tmp )[0]; \ 62 } ) 63 #unde P_64_COPY 64 #P_64_COPY ( a , b ) { \ 65 (( u_t8_t *) b )[0] = ((u_t8_*) a )[0]; \ 66 (( u_t8_t *) b )[1] = ((u_t8_*) a )[1]; \ 67 (( u_t8_t *) b )[2] = ((u_t8_*) a )[2]; \ 68 (( u_t8_t *) b )[3] = ((u_t8_*) a )[3]; \ 69 (( u_t8_t *) b )[4] = ((u_t8_*) a )[4]; \ 70 (( u_t8_t *) b )[5] = ((u_t8_*) a )[5]; \ 71 (( u_t8_t *) b )[6] = ((u_t8_*) a )[6]; \ 72 (( u_t8_t *) b )[7] = ((u_t8_*) a )[7]; \ 73 } ) 74 #unde P_64_SWAP 75 #P_64_SWAP ( a ) { \ 76 u_t64_t _tmp ; \ 77 `P_64_COPY ( a , & _tmp ); \ 78 (( u_t8_t *) a )[0] = ((u_t8_*)& _tmp )[7]; \ 79 (( u_t8_t *) a )[1] = ((u_t8_*)& _tmp )[6]; \ 80 (( u_t8_t *) a )[2] = ((u_t8_*)& _tmp )[5]; \ 81 (( u_t8_t *) a )[3] = ((u_t8_*)& _tmp )[4]; \ 82 (( u_t8_t *) a )[4] = ((u_t8_*)& _tmp )[3]; \ 83 (( u_t8_t *) a )[5] = ((u_t8_*)& _tmp )[2]; \ 84 (( u_t8_t *) a )[6] = ((u_t8_*)& _tmp )[1]; \ 85 (( u_t8_t *) a )[7] = ((u_t8_*)& _tmp )[0]; \ 86 } ) 94 #unde M_32_SWAP 95 #M_32_SWAP ( a ) { \ 96 u_t32_t _tmp ; \ 97 _tmp = ( u_t32_t ) a ; \ 98 (( u_t8_t *)& a )[0] = ((u_t8_*)& _tmp )[3]; \ 99 (( u_t8_t *)& a )[1] = ((u_t8_*)& _tmp )[2]; \ 100 (( u_t8_t *)& a )[2] = ((u_t8_*)& _tmp )[1]; \ 101 (( u_t8_t *)& a )[3] = ((u_t8_*)& _tmp )[0]; \ 102 } ) 103 #unde P_32_COPY 104 #P_32_COPY ( a , b ) { \ 105 (( u_t8_t *) b )[0] = ((u_t8_*) a )[0]; \ 106 (( u_t8_t *) b )[1] = ((u_t8_*) a )[1]; \ 107 (( u_t8_t *) b )[2] = ((u_t8_*) a )[2]; \ 108 (( u_t8_t *) b )[3] = ((u_t8_*) a )[3]; \ 109 } ) 110 #unde P_32_SWAP 111 #P_32_SWAP ( a ) { \ 112 u_t32_t _tmp ; \ 113 `P_32_COPY ( a , & _tmp ); \ 114 (( u_t8_t *) a )[0] = ((u_t8_*)& _tmp )[3]; \ 115 (( u_t8_t *) a )[1] = ((u_t8_*)& _tmp )[2]; \ 116 (( u_t8_t *) a )[2] = ((u_t8_*)& _tmp )[1]; \ 117 (( u_t8_t *) a )[3] = ((u_t8_*)& _tmp )[0]; \ 118 } ) 126 #unde M_16_SWAP 127 #M_16_SWAP ( a ) { \ 128 u_t16_t _tmp ; \ 129 _tmp = ( u_t16_t ) a ; \ 130 (( u_t8_t *)& a )[0] = ((u_t8_*)& _tmp )[1]; \ 131 (( u_t8_t *)& a )[1] = ((u_t8_*)& _tmp )[0]; \ 132 } ) 133 #unde P_16_COPY 134 #P_16_COPY ( a , b ) { \ 135 (( u_t8_t *) b )[0] = ((u_t8_*) a )[0]; \ 136 (( u_t8_t *) b )[1] = ((u_t8_*) a )[1]; \ 137 } ) 138 #unde P_16_SWAP 139 #P_16_SWAP ( a ) { \ 140 u_t16_t _tmp ; \ 141 `P_16_COPY ( a , & _tmp ); \ 142 (( u_t8_t *) a )[0] = ((u_t8_*)& _tmp )[1]; \ 143 (( u_t8_t *) a )[1] = ((u_t8_*)& _tmp )[0]; \ 144 } ) 146 #unde SWAP32 147 #SWAP32 ( p ) { \ 148 `P_32_SWAP ( p ); \ 149 ( p +( u_t32_t ); \ 150 } ) 151 #unde SWAP16 152 #SWAP16 ( p ) { \ 153 `P_16_SWAP ( p ); \ 154 ( p +( u_t16_t ); \ 155 } ) 162 #unde DB_HTONL 163 #DB_HTONL ( p ) do { \ 164 i(! `__db_isbigdn ()) \ 165 `P_32_SWAP ( p ); \ 166 } 0) ) 167 #unde DB_NTOHL 168 #DB_NTOHL ( p ) do { \ 169 i(! `__db_isbigdn ()) \ 170 `P_32_SWAP ( p ); \ 171 } 0) ) 173 #i defed ( __lulus ) @../dbinc/db_upgrade.h 9 #ide _DB_UPGRADE_H_ 10 #_DB_UPGRADE_H_ ) 12 #i defed ( __lulus ) 22 s_dbma31 { 23 DB_LSN l ; 24 db_pgno_t pgno ; 25 u_t32_t magic ; 26 u_t32_t vsi ; 27 u_t32_t gesize ; 28 u_t8_t unud1 [1]; 29 u_t8_t ty ; 30 u_t8_t unud2 [2]; 31 u_t32_t ; 32 DB_LSN unud3 ; 33 u_t32_t key_cou ; 34 u_t32_t cd_cou ; 35 u_t32_t ags ; 37 u_t8_t uid [ DB_FILE_ID_LEN ]; 38 } tDBMETA31 ; 40 s_btma31 { 41 DBMETA31 dbma ; 43 u_t32_t maxkey ; 44 u_t32_t mkey ; 45 u_t32_t _n ; 46 u_t32_t _d ; 47 u_t32_t ro ; 52 } tBTMETA31 ; 57 s_hashma31 { 58 DBMETA31 dbma ; 60 u_t32_t max_buck ; 61 u_t32_t high_mask ; 62 u_t32_t low_mask ; 63 u_t32_t f ; 64 u_t32_t m ; 65 u_t32_t h_chkey ; 66 #NCACHED 32 ) 68 u_t32_t es [ NCACHED ]; 73 } tHMETA31 ; 79 s_qma31 { 80 DBMETA31 dbma ; 82 u_t32_t t ; 83 u_t32_t f_o ; 84 u_t32_t cur_o ; 85 u_t32_t _n ; 86 u_t32_t _d ; 87 u_t32_t c_ge ; 92 } tQMETA31 ; 94 s_qma32 { 95 DBMETA31 dbma ; 97 u_t32_t f_o ; 98 u_t32_t cur_o ; 99 u_t32_t _n ; 100 u_t32_t _d ; 101 u_t32_t c_ge ; 102 u_t32_t ge_ext ; 107 } tQMETA32 ; 111 s_dbma30 { 112 DB_LSN l ; 113 db_pgno_t pgno ; 114 u_t32_t magic ; 115 u_t32_t vsi ; 116 u_t32_t gesize ; 117 u_t8_t unud1 [1]; 118 u_t8_t ty ; 119 u_t8_t unud2 [2]; 120 u_t32_t ; 121 u_t32_t ags ; 123 u_t8_t uid [ DB_FILE_ID_LEN ]; 124 } tDBMETA30 ; 129 s_btma30 { 130 DBMETA30 dbma ; 132 u_t32_t maxkey ; 133 u_t32_t mkey ; 134 u_t32_t _n ; 135 u_t32_t _d ; 136 u_t32_t ro ; 141 } tBTMETA30 ; 146 s_hashma30 { 147 DBMETA30 dbma ; 149 u_t32_t max_buck ; 150 u_t32_t high_mask ; 151 u_t32_t low_mask ; 152 u_t32_t f ; 153 u_t32_t m ; 154 u_t32_t h_chkey ; 155 #NCACHED30 32 ) 157 u_t32_t es [ NCACHED30 ]; 162 } tHMETA30 ; 171 s_qma30 { 172 DBMETA30 dbma ; 174 u_t32_t t ; 175 u_t32_t f_o ; 176 u_t32_t cur_o ; 177 u_t32_t _n ; 178 u_t32_t _d ; 179 u_t32_t c_ge ; 184 } tQMETA30 ; 195 s_btma2X { 196 DB_LSN l ; 197 db_pgno_t pgno ; 198 u_t32_t magic ; 199 u_t32_t vsi ; 200 u_t32_t gesize ; 201 u_t32_t maxkey ; 202 u_t32_t mkey ; 203 u_t32_t ; 204 u_t32_t ags ; 205 u_t32_t _n ; 206 u_t32_t _d ; 208 u_t8_t uid [ DB_FILE_ID_LEN ]; 209 } tBTMETA2X ; 219 shashhdr { 220 DB_LSN l ; 221 db_pgno_t pgno ; 222 u_t32_t magic ; 223 u_t32_t vsi ; 224 u_t32_t gesize ; 225 u_t32_t ov_pot ; 226 u_t32_t ϡ_d ; 227 u_t32_t max_buck ; 228 u_t32_t high_mask ; 229 u_t32_t low_mask ; 230 u_t32_t f ; 231 u_t32_t m ; 232 u_t32_t h_chkey ; 233 u_t32_t ags ; 234 #NCACHED2X 32 ) 236 u_t32_t es [ NCACHED2X ]; 238 u_t8_t uid [ DB_FILE_ID_LEN ]; 243 } tHASHHDR ; 245 #i defed ( __lulus ) @../dbinc/db_verify.h 9 #ide _DB_VERIFY_H_ 10 #_DB_VERIFY_H_ ) 12 #i defed ( __lulus ) 25 #EPRINT ( x ) do { \ 26 i(! `LF_ISSET ( DB_SALVAGE )) \ 27 __db_rx x ; \ 28 } 0) ) 31 #ZEROPG_ERR_PRINT ( dbv , pgno , r ) do { \ 32 `EPRINT ((( dbv ), "Page %lu: %s is of inappropriateype %lu", \ 33 ( u_lg )( pgno ), r , (u_lg) P_INVALID )); \ 34 `EPRINT ((( dbv ), "Page %lu:otally zeroedage", \ 35 ( u_lg )( pgno ))); \ 36 } 0) ) 42 #IS_VALID_PGNO ( x ((x< vdp -> ϡ_pgno ) ) 49 #ST_DUPOK 0x00010000 ) 50 #ST_DUPSET 0x00020000 ) 51 #ST_DUPSORT 0x00040000 ) 52 #ST_IS_RECNO 0x00080000 ) 53 #ST_OVFL_LEAF 0x00100000 ) 54 #ST_RECNUM 0x00200000 ) 55 #ST_RELEN 0x00400000 ) 56 #ST_TOPLEVEL 0x00800000 ) 63 #SA_SKIPFIRSTKEY 0x00080000 ) 69 s__vrfy_dbfo { 71 DBTYPE ty ; 74 LIST_HEAD ( __subdbs , __vrfy_chdfo subdbs ; 77 DB * pgdbp ; 80 DB * cdbp ; 83 LIST_HEAD ( __aivs , __vrfy_gefo aivs ; 89 DB * pgt ; 100 #SALVAGE_INVALID 0 ) 101 #SALVAGE_IGNORE 1 ) 102 #SALVAGE_LDUP 2 ) 103 #SALVAGE_LRECNODUP 3 ) 104 #SALVAGE_OVERFLOW 4 ) 105 #SALVAGE_LBTREE 5 ) 106 #SALVAGE_HASH 6 ) 107 #SALVAGE_LRECNO 7 ) 108 DB * lvage_ges ; 110 db_pgno_t ϡ_pgno ; 111 db_pgno_t pgs_mag ; 119 db_pgno_t ev_pgno ; 120 db_pgno_t xt_pgno ; 121 u_t8_t af_ty ; 124 u_t32_t _d ; 125 u_t32_t _n ; 126 u_t32_t c_ge ; 127 u_t32_t ge_ext ; 128 u_t32_t f_o ; 129 u_t32_t ϡ_o ; 130 xs ; 131 db_pgno_t * exs ; 133 #SALVAGE_PRINTABLE 0x01 ) 134 #SALVAGE_PRINTHEADER 0x02 ) 135 #SALVAGE_PRINTFOOTER 0x04 ) 136 #VRFY_LEAFCHAIN_BROKEN 0x08 ) 137 #VRFY_QMETA_SET 0x10 ) 139 u_t32_t ags ; 150 s__vrfy_gefo { 151 u_t8_t ty ; 152 u_t8_t bt_v ; 153 u_t8_t unud1 ; 154 u_t8_t unud2 ; 155 db_pgno_t pgno ; 156 db_pgno_t ev_pgno ; 157 db_pgno_t xt_pgno ; 160 db_pgno_t ro ; 161 db_pgno_t ; 163 db_dx_t s ; 164 u_t16_t unud ; 165 db_o_t c_t ; 166 u_t32_t _d ; 167 u_t32_t _n ; 168 u_t32_t bt_mkey ; 169 u_t32_t h_f ; 170 u_t32_t h_m ; 177 u_t32_t fcou ; 178 u_t32_t ޒ ; 180 #VRFY_DUPS_UNSORTED 0x0001 ) 181 #VRFY_HAS_CHKSUM 0x0002 ) 182 #VRFY_HAS_DUPS 0x0004 ) 183 #VRFY_HAS_DUPSORT 0x0008 ) 184 #VRFY_HAS_RECNUMS 0x0010 ) 185 #VRFY_HAS_SUBDBS 0x0020 ) 186 #VRFY_INCOMPLETE 0x0040 ) 187 #VRFY_IS_ALLZEROES 0x0080 ) 188 #VRFY_IS_FIXEDLEN 0x0100 ) 189 #VRFY_IS_RECNO 0x0200 ) 190 #VRFY_IS_RRECNO 0x0400 ) 191 #VRFY_OVFL_LEAFSEEN 0x0800 ) 192 u_t32_t ags ; 194 LIST_ENTRY ( __vrfy_gefo lks ; 195 u_t32_t pi_fcou ; 198 s__vrfy_chdfo { 200 db_pgno_t pgno ; 202 #V_DUPLICATE 1 ) 203 #V_OVERFLOW 2 ) 204 #V_RECNO 3 ) 205 u_t32_t ty ; 206 db_o_t ecs ; 207 u_t32_t ; 210 u_t32_t ft ; 212 LIST_ENTRY ( __vrfy_chdfo lks ; 215 #i defed ( __lulus ) @../dbinc/debug.h 9 #ide _DB_DEBUG_H_ 10 #_DB_DEBUG_H_ ) 12 #i defed ( __lulus ) 19 #i! defed ( __GNUC__ || __GNUC__ < 2 || (__GNUC__ =2 && __GNUC_MINOR__ < 5) 20 #__ibu__ ( s ) ) 27 #CLEAR_BYTE 0xdb ) 28 #GUARD_BYTE 0xdc ) 35 #i defed ( DIAGNOSTIC && defed( __STDC__ ) 36 #DB_ASSERT ( v , e ) \ 37 (( e ? ()0 : `__db_as ( v , #e, __FILE__ , __LINE__ )) ) 39 #DB_ASSERT ( v , e ) ) 48 #COMPQUIET ( n , v ) do { \ 49 ( n ( v ); \ 50 ( n ) = (n); \ 51 } 0) ) 58 #ifdef UMRW 59 #UMRW_SET ( v (v0 ) 61 #UMRW_SET ( v ) ) 70 DB_ERROR_NOT_SET =0, 71 DB_ERROR_SET =1, 72 DB_ERROR_SYSTEM =2 73 } tdb_r_t_t ; 81 #i defed ( STDC_HEADERS || defed( __lulus ) 82 #DB_REAL_ERR ( v , r , r_t , p_ , fmt ) { \ 83 va_li __ ; \ 86 `va_t ( __ , fmt ); \ 87 i(( v ! NULL && (v)-> db_r != NULL) \ 88 `__db_r ( v , r , r_t , fmt , __ ); \ 89 `va_d ( __ ); \ 98 `va_t ( __ , fmt ); \ 99 i(( v = NULL || \ 100 ( v )-> db_rfe ! NULL || \ 101 (( v )-> db_r = NULL && \ 102 (( p_ || `F_ISSET (( v ), DB_ENV_NO_OUTPUT_SET )))) \ 103 `__db_rfe ( v , r , r_t , fmt , __ ); \ 104 `va_d ( __ ); \ 105 } ) 107 #DB_REAL_ERR ( v , r , r_t , fmt ) { \ 108 va_li __ ; \ 111 `va_t ( __ ); \ 112 i(( v ! NULL && (v)-> db_r != NULL) \ 113 `__db_r ( v , r , r_t , fmt , __ ); \ 114 `va_d ( __ ); \ 123 `va_t ( __ ); \ 124 i(( v = NULL || \ 125 ( v )-> db_rfe ! NULL || \ 126 (( v )-> db_r = NULL && \ 127 (( p_ || `F_ISSET (( v ), DB_ENV_NO_OUTPUT_SET )))) \ 128 `va_d ( __ ); \ 129 } ) 131 #i defed ( STDC_HEADERS || defed( __lulus ) 132 #DB_REAL_MSG ( v , fmt ) { \ 133 va_li __ ; \ 136 `va_t ( __ , fmt ); \ 137 i(( v ! NULL && (v)-> db_msg != NULL) \ 138 `__db_msg ( v , fmt , __ ); \ 139 `va_d ( __ ); \ 146 `va_t ( __ , fmt ); \ 147 i(( v = NULL || \ 148 ( v )-> db_msgfe ! NULL || (v)-> db_msg == NULL) { \ 149 `__db_msgfe ( v , fmt , __ ); \ 151 `va_d ( __ ); \ 152 } ) 154 #DB_REAL_MSG ( v , fmt ) { \ 155 va_li __ ; \ 158 `va_t ( __ ); \ 159 i(( v ! NULL && (v)-> db_msg != NULL) \ 160 `__db_msg ( v , fmt , __ ); \ 161 `va_d ( __ ); \ 168 `va_t ( __ ); \ 169 i(( v = NULL || \ 170 ( v )-> db_msgfe ! NULL || (v)-> db_msg == NULL) { \ 171 `__db_msgfe ( v , fmt , __ ); \ 173 `va_d ( __ ); \ 174 } ) 189 #LOG_OP ( C , T , O , K , A , F ) { \ 190 DB_LSN __l ; \ 191 DBT __ ; \ 192 i( `DBC_LOGGING (( C ))) { \ 193 `memt (& __ , 0, (__op)); \ 194 __ . da = O ; \ 195 __ . size = ` ( O ) + 1; \ 196 () `__db_debug_log (( C )-> dbp -> dbv , T , & __l , 0, \ 197 & __ , ( C )-> dbp -> log_fame -> id , K , A , F ); \ 199 } ) 200 #ifdef DEBUG_ROP 201 #DEBUG_LREAD ( C , T , O , K , A , F `LOG_OP (C, T, O, K, A, F) ) 203 #DEBUG_LREAD ( C , T , O , K , A , F ) ) 205 #ifdef DEBUG_WOP 206 #DEBUG_LWRITE ( C , T , O , K , A , F `LOG_OP (C, T, O, K, A, F) ) 208 #DEBUG_LWRITE ( C , T , O , K , A , F ) ) 215 #i CONFIG_TEST 216 #DB_TEST_SUBLOCKS ( v , ags ) do { \ 217 i(( v )-> _abt = DB_TEST_SUBDB_LOCKS ) \ 218 ( ags | DB_LOCK_NOWAIT ; \ 219 } 0) ) 221 #DB_ENV_TEST_RECYCLE ( v , t ) do { \ 222 i(( v )-> _cy = DB_TEST_RECYCLE ) { \ 223 t = 0; \ 224 db__r ; \ 226 } 0) ) 228 #DB_ENV_TEST_RECOVERY ( v , v , t , me ) do { \ 229 __t ; \ 230 `PANIC_CHECK (( v )); \ 231 i(( v )-> _cy =( v )) { \ 233 i(( __t = `__db_cy (( v ), NULL , ( me ))) != 0) \ 234 ( t `__db_nic (( v ), __t ); \ 236 i(( v )-> _abt =( v )) { \ 238 ( v )-> _abt = 0; \ 239 ( t EINVAL ; \ 240 db__r ; \ 242 } 0) ) 244 #DB_TEST_RECOVERY ( dbp , v , t , me ) do { \ 245 __t ; \ 246 `PANIC_CHECK (( dbp )-> dbv ); \ 247 i(( dbp )-> dbv -> _cy =( v )) { \ 249 i( `F_ISSET (( dbp ), \ 250 DB_AM_OPEN_CALLED && ( dbp )-> mpf ! NULL ) \ 251 () `__db_sync ( dbp ); \ 252 i(( __t = \ 253 `__db_cy (( dbp )-> dbv , (dbp), ( me ))) != 0) \ 254 ( t `__db_nic (( dbp )-> dbv , __t ); \ 256 i(( dbp )-> dbv -> _abt =( v )) { \ 258 ( dbp )-> dbv -> _abt = 0; \ 259 ( t EINVAL ; \ 260 db__r ; \ 262 } 0) ) 264 #DB_TEST_RECOVERY_LABEL db__r : ) 266 #DB_TEST_WAIT ( v , v ) \ 267 i(( v ) != 0) \ 268 `__os_p (( v ), ( u_lg )( v ), 0) ) 270 #DB_ENV_TEST_RECYCLE ( v , t ); ) 271 #DB_TEST_SUBLOCKS ( v , ags ) ) 272 #DB_ENV_TEST_RECOVERY ( v , v , t , me ) ) 273 #DB_TEST_RECOVERY ( dbp , v , t , me ) ) 274 #DB_TEST_RECOVERY_LABEL ) 275 #DB_TEST_WAIT ( v , v ) ) 278 #i defed ( __lulus ) @../dbinc/fop.h 9 #idef _DB_FOP_H_ 10 #_DB_FOP_H_ ) 12 #i defed ( __lulus ) 16 #MAKE_INMEM ( D ) do { \ 17 `F_SET (( D ), DB_AM_INMEM ); \ 18 () `__memp_t_ags (( D )-> mpf , DB_MPOOL_NOFILE , 1); \ 19 } 0) ) 21 ~"dbc_auto/fes_auto.h " 22 ~"dbc_auto/fes_ext.h " 24 #i defed ( __lulus ) @../dbinc/globals.h 9 #ide _DB_GLOBALS_H_ 10 #_DB_GLOBALS_H_ ) 12 #i defed ( __lulus ) 21 #ifde HAVE_VXWORKS 22 ~"mLib.h " 25 s__db_globs { 26 #ifde HAVE_BREW 27 tm m ; 29 #ifde HAVE_VXWORKS 30 u_t32_t db_glob_ ; 31 SEM_ID db_glob_lock ; 34 TAILQ_HEAD ( __db_vq , __db_v db_vq ; 36 * db_le ; 38 r_buf [40]; 40 uid_ ; 42 u_lg nd_xt ; 44 u_t32_t fid_rl ; 46 db_o ; 48 (* j_o __P (()); 49 (* j_d __P ((**, )); 50 (* j_dli __P ((const *, ***, *)); 51 (* j_exis __P ((const *, *)); 52 (* j_ __P ((*)); 53 (* j_fsync __P (()); 54 (* j_run __P ((, off_t )); 55 (* j_iofo __P ((const *, 56 , u_t32_t *, u_int32_t *, u_int32_t *)); 57 *(* j_mloc __P (( size_t )); 58 (* j_m __P ((*, size_t , , , **)); 59 (* j_ݒ __P ((const *, , ...)); 60 ssize_t (* j_d __P ((, *, size_t , off_t )); 61 ssize_t (* j_pwre __P ((, cڡ *, size_t , off_t )); 62 ssize_t (* j_ad __P ((, *, size_t )); 63 *(* j_loc __P ((*, size_t )); 64 (* j_me __P ((const *, const *)); 65 (* j_ek __P ((, off_t , )); 66 (* j_p __P (( u_lg , u_long)); 67 (* j_uƚk __P ((const *)); 68 (* j_unm __P ((*, size_t )); 69 ssize_t (* j_wre __P ((, cڡ *, size_t )); 70 (* j_yld __P (()); 71 } tDB_GLOBALS ; 73 #ifde HAVE_BREW 74 #DB_GLOBAL ( v ) \ 75 (( DB_GLOBALS *)((( BDBA *) `GETAPPINSTANCE ())-> db_glob_vues ))-> v ) 77 #ifde DB_INITIALIZE_DB_GLOBALS 78 DB_GLOBALS __db_glob_vues = { 79 #ifde HAVE_VXWORKS 81 NULL , 84 { NULL , & __db_glob_vues . db_vq . tqh_f }, 92 NULL , 93 NULL , 94 NULL , 95 NULL , 96 NULL , 97 NULL , 98 NULL , 99 NULL , 100 NULL , 101 NULL , 102 NULL , 103 NULL , 104 NULL , 105 NULL , 106 NULL , 107 NULL , 108 NULL , 109 NULL , 110 NULL , 111 NULL , 112 NULL , 113 NULL 116 DB_GLOBALS __db_glob_vues ; 119 #DB_GLOBAL ( v __db_glob_vues . ) v 122 #i defed ( __lulus ) @../dbinc/hash.h 44 #idef _DB_HASH_H_ 45 #_DB_HASH_H_ ) 47 #i defed ( __lulus ) 52 shash_t { 53 db_pgno_t ma_pgno ; 54 u_t32_t h_f ; 55 u_t32_t h_m ; 57 u_t32_t (* h_hash __P (( DB *, const *, u_int32_t)); 58 (* h_com __P (( DB *, cڡ DBT *, const DBT *)); 59 } tHASH ; 62 scurs_t { 64 __DBC_INTERNAL 69 DB_LOCK hlock ; 70 HMETA * hdr ; 71 PAGE * l_buf ; 74 db_pgno_t buck ; 75 db_pgno_t lbuck ; 76 db_dx_t dup_off ; 77 db_dx_t dup_n ; 78 db_dx_t dup_ ; 79 u_t32_t ek_size ; 80 db_pgno_t ek_found_ge ; 81 db_dx_t ek_found_dx ; 82 u_t32_t d ; 84 #H_CONTINUE 0x0001 ) 85 #H_DELETED 0x0002 ) 86 #H_DUPONLY 0x0004 ) 87 #H_EXPAND 0x0008 ) 88 #H_ISDUP 0x0010 ) 89 #H_NEXT_NODUP 0x0020 ) 90 #H_NOMORE 0x0040 ) 91 #H_OK 0x0080 ) 92 u_t32_t ags ; 93 } tHASH_CURSOR ; 96 #CHARKEY "%$igt^&" ) 104 #BS_TO_PAGE ( buck , es ) \ 105 (( buck + ( es )[ `__db_log2 ((buck+ 1)]) ) 106 #BUCKET_TO_PAGE ( I , B ( `BS_TO_PAGE ((B), (I)-> hdr -> es )) ) 110 #MINFILL 4 ) 111 #ISBIG ( I , N (((N> ((I)-> hdr -> dbma . gesize / MINFILL )? 1 : 0) ) 114 #NDX_INVALID 0xFFFF ) 115 #BUCKET_INVALID 0xFFFFFFFF ) 118 #DUP_SIZE ( n (֒+ 2 * ( db_dx_t )) ) 121 #PAIR_KEYMASK 0x1 ) 122 #PAIR_DATAMASK 0x2 ) 123 #PAIR_DUPMASK 0x4 ) 124 #PAIR_MASK 0xf ) 125 #PAIR_ISKEYBIG ( N (N & PAIR_KEYMASK ) ) 126 #PAIR_ISDATABIG ( N (N & PAIR_DATAMASK ) ) 127 #PAIR_ISDATADUP ( N (N & PAIR_DUPMASK ) ) 128 #OPCODE_OF ( N (N & ~ PAIR_MASK ) ) 130 #PUTPAIR 0x20 ) 131 #DELPAIR 0x30 ) 132 #PUTOVFL 0x40 ) 133 #DELOVFL 0x50 ) 134 #HASH_UNUSED1 0x60 ) 135 #HASH_UNUSED2 0x70 ) 136 #SPLITOLD 0x80 ) 137 #SPLITNEW 0x90 ) 138 #SORTPAGE 0x100 ) 141 #HAM_DEL_NO_CURSOR 0x01 ) 142 #HAM_DEL_NO_RECLAIM 0x02 ) 145 DB_HAM_CURADJ_DEL = 1, 146 DB_HAM_CURADJ_ADD = 2, 147 DB_HAM_CURADJ_ADDMOD = 3, 148 DB_HAM_CURADJ_DELMOD = 4 149 } tdb_ham_cudj ; 152 DB_HAM_CHGPG = 1, 153 DB_HAM_DELFIRSTPG = 2, 154 DB_HAM_DELMIDPG = 3, 155 DB_HAM_DELLASTPG = 4, 156 DB_HAM_DUP = 5, 157 DB_HAM_SPLIT = 6 158 } tdb_ham_mode ; 160 #i defed ( __lulus ) 164 ~"dbc_auto/hash_auto.h " 165 ~"dbc_auto/hash_ext.h " 166 ~"dbc/db_am.h " @../dbinc/hmac.h 9 #idef _DB_HMAC_H_ 10 #_DB_HMAC_H_ ) 12 #i defed ( __lulus ) 23 u_t32_t e [5]; 24 u_t32_t cou [2]; 25 bufr [64]; 26 } tSHA1_CTX ; 31 #DB_MAC_MAGIC "madivi key magivue" ) 32 #DB_ENC_MAGIC "yiڇnd deyi key vumagic" ) 34 #i defed ( __lulus ) 38 ~"dbc_auto/hmac_ext.h " @../dbinc/lock.h 9 #idef _DB_LOCK_H_ 10 #_DB_LOCK_H_ ) 12 #i defed ( __lulus ) 16 #DB_LOCK_DEFAULT_N 1000 ) 23 #DB_LOCK_INVALIDID 0 ) 24 #DB_LOCK_MAXID 0x7fffffff ) 30 #LOCK_INVALID INVALID_ROFF ) 31 #LOCK_ISSET ( lock (ock). off ! LOCK_INVALID ) ) 32 #LOCK_INIT ( lock (ock). off = LOCK_INVALID ) ) 38 #IS_WRITELOCK ( m ) \ 39 (( m = DB_LOCK_WRITE || (m= DB_LOCK_WWRITE || \ 40 ( m = DB_LOCK_IWRITE || (m= DB_LOCK_IWR ) ) 46 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 47 #LOCK_SYSTEM_LOCK ( dbv ) ) 48 #LOCK_SYSTEM_UNLOCK ( dbv ) ) 50 #LOCK_SYSTEM_LOCK ( dbv ) \ 51 `MUTEX_LOCK ( dbv , (( DB_LOCKREGION *) \ 52 ( dbv )-> lk_hd -> gfo . imy )-> mtx_gi ) ) 53 #LOCK_SYSTEM_UNLOCK ( dbv ) \ 54 `MUTEX_UNLOCK ( dbv , (( DB_LOCKREGION *) \ 55 ( dbv )-> lk_hd -> gfo . imy )-> mtx_gi ) ) 57 #LOCK_REGION_LOCK ( dbv ) \ 58 `MUTEX_LOCK ( dbv , (( DB_LOCKREGION *) \ 59 ( dbv )-> lk_hd -> gfo . imy )-> mtx_gi ) ) 60 #LOCK_REGION_UNLOCK ( dbv ) \ 61 `MUTEX_UNLOCK ( dbv , (( DB_LOCKREGION *) \ 62 ( dbv )-> lk_hd -> gfo . imy )-> mtx_gi ) ) 68 s__db_lockgi { 69 db_mux_t mtx_gi ; 71 u_t32_t ed_dd ; 72 u_t32_t de ; 73 db_timeec xt_timeout ; 74 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 75 db_mux_t mtx_locks ; 76 db_mux_t mtx_objs ; 77 db_mux_t mtx_locks ; 80 SH_TAILQ_HEAD ( __ock _locks ; 82 SH_TAILQ_HEAD ( __fobj _objs ; 83 SH_TAILQ_HEAD ( __dobj dd_objs ; 85 SH_TAILQ_HEAD ( __ock _locks ; 86 SH_TAILQ_HEAD ( __lkrs locks ; 88 db_timeout_t lk_timeout ; 89 db_timeout_t tx_timeout ; 91 u_t32_t lock_t_size ; 92 u_t32_t obje_t_size ; 94 roff_t cf_off ; 95 roff_t obj_off ; 96 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 97 roff_t mtx_off ; 99 roff_t _off ; 100 roff_t lock_off ; 102 DB_LOCK_STAT ; 103 } tDB_LOCKREGION ; 109 s__sh_dbt { 110 u_t32_t size ; 111 roff_t off ; 112 } tSH_DBT ; 114 #SH_DBT_PTR ( p ((*)((( u_t8_t *))+ (p)-> off )) ) 119 s__db_lockobj { 120 u_t32_t dx ; 121 u_t32_t gi ; 122 SH_DBT lockobj ; 123 SH_TAILQ_ENTRY lks ; 124 SH_TAILQ_ENTRY dd_lks ; 125 SH_TAILQ_HEAD ( __wal was ; 126 SH_TAILQ_HEAD ( __hdl hds ; 131 u_t8_t objda [( __db_ock )]; 132 } tDB_LOCKOBJ ; 137 s__db_lock { 138 u_t32_t id ; 140 pid_t pid ; 141 db_thadid_t tid ; 143 u_t32_t dd_id ; 145 u_t32_t ocks ; 146 u_t32_t nwres ; 148 roff_t ma_lock ; 149 roff_t _lock ; 150 SH_LIST_HEAD ( _chd chd_lock ; 153 SH_LIST_ENTRY chd_lk ; 156 SH_TAILQ_ENTRY lks ; 157 SH_TAILQ_ENTRY ulks ; 158 SH_LIST_HEAD ( _hd hdby ; 159 db_timeec lk_expe ; 160 db_timeec tx_expe ; 161 db_timeout_t lk_timeout ; 163 #DB_LOCKER_DELETED 0x0001 ) 164 #DB_LOCKER_DIRTY 0x0002 ) 165 #DB_LOCKER_INABORT 0x0004 ) 166 #DB_LOCKER_TIMEOUT 0x0008 ) 167 u_t32_t ags ; 175 s__db_lockb { 176 DB_ENV * dbv ; 177 REGINFO gfo ; 178 u_t8_t * cis ; 179 DB_HASHTAB * obj_b ; 180 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 181 db_mux_t * obj_mtx ; 183 DB_LOCK_HSTAT * obj_ ; 184 DB_HASHTAB * lock_b ; 192 #CONFLICTS ( T , R , HELD , WANTED ) \ 193 ( T )-> cis [(() HELD * ( R )-> . _nmodes + (() WANTED )] ) 195 #OBJ_LINKS_VALID ( L ((L)-> lks . qe_ev !-1) ) 197 s__db_lock { 202 db_mux_t mtx_lock ; 204 roff_t hd ; 205 u_t32_t g ; 206 SH_TAILQ_ENTRY lks ; 207 SH_LIST_ENTRY lock_lks ; 208 u_t32_t fcou ; 209 db_lockmode_t mode ; 210 roff_t obj ; 211 u_t32_t dx ; 212 db_us_t us ; 225 #DB_LOCK_DOALL 0x010000 ) 226 #DB_LOCK_FREE 0x040000 ) 227 #DB_LOCK_NOPROMOTE 0x080000 ) 228 #DB_LOCK_UNLINK 0x100000 ) 229 #DB_LOCK_NOWAITERS 0x400000 ) 234 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 241 #OBJECT_LOCK ( , g , obj , ndx ) do { \ 242 ndx = `__lock_ohash ( obj % ( g )-> obje_t_size ; \ 243 `MUTEX_LOCK (( )-> dbv , ()-> obj_mtx [ ndx ]); \ 244 } 0) ) 245 #OBJECT_LOCK_NDX ( , ndx ) \ 246 `MUTEX_LOCK (( )-> dbv , ()-> obj_mtx [ ndx ]) ) 247 #OBJECT_UNLOCK ( , ndx ) \ 248 `MUTEX_UNLOCK (( )-> dbv , ()-> obj_mtx [ ndx ]) ) 258 #LOCK_OBJECTS ( dbv , gi ) \ 259 `MUTEX_LOCK ( dbv , ( gi )-> mtx_objs ) ) 260 #UNLOCK_OBJECTS ( dbv , gi ) \ 261 `MUTEX_UNLOCK ( dbv , ( gi )-> mtx_objs ) ) 262 #LOCK_LOCKS ( dbv , gi ) \ 263 `MUTEX_LOCK ( dbv , ( gi )-> mtx_locks ) ) 264 #UNLOCK_LOCKS ( dbv , gi ) \ 265 `MUTEX_UNLOCK ( dbv , ( gi )-> mtx_locks ) ) 266 #LOCK_LOCKERS ( dbv , gi ) \ 267 `MUTEX_LOCK ( dbv , ( gi )-> mtx_locks ) ) 268 #UNLOCK_LOCKERS ( dbv , gi ) \ 269 `MUTEX_UNLOCK ( dbv , ( gi )-> mtx_locks ) ) 271 #OBJECT_LOCK ( , g , obj , ndx ) \ 272 ndx = `__lock_ohash ( obj % ( g )-> obje_t_size ) 273 #OBJECT_LOCK_NDX ( , ndx ) ) 274 #OBJECT_UNLOCK ( , ndx ) ) 275 #LOCK_OBJECTS ( dbv , gi ) ) 276 #UNLOCK_OBJECTS ( dbv , gi ) ) 277 #LOCK_LOCKS ( dbv , gi ) ) 278 #UNLOCK_LOCKS ( dbv , gi ) ) 279 #LOCK_LOCKERS ( dbv , gi ) ) 280 #UNLOCK_LOCKERS ( dbv , gi ) ) 289 #__lock_lock_hash ( lock ock) ) 290 #LOCKER_HASH ( , g , lock , ndx ) \ 291 ndx = `__lock_lock_hash ( lock % ( g )-> lock_t_size ; ) 293 #i defed ( __lulus ) 297 ~"dbc_auto/lock_ext.h " @../dbinc/log.h 9 #ide _DB_LOG_H_ 10 #_DB_LOG_H_ ) 12 #i defed ( __lulus ) 25 s__db_y { 26 DB * dbp ; 27 ded ; 28 } tDB_ENTRY ; 34 s__ame { 35 SH_TAILQ_ENTRY q ; 37 t32_t id ; 38 t32_t d_id ; 39 DBTYPE s_ty ; 41 roff_t me_off ; 42 db_pgno_t ma_pgno ; 43 u_t8_t ufid [ DB_FILE_ID_LEN ]; 45 u_t32_t _txnid ; 49 db_mux_t mux ; 50 u_t32_t txn_f ; 52 #DB_FNAME_CLOSED 0x01 ) 53 #DB_FNAME_DURABLE 0x02 ) 54 #DB_FNAME_INMEM 0x04 ) 55 #DB_FNAME_NOTLOGGED 0x08 ) 56 #DB_FNAME_RECOVER 0x10 ) 57 #DB_FNAME_RESTORED 0x20 ) 58 u_t32_t ags ; 62 #DBREG_CHKPNT 1 ) 63 #DBREG_CLOSE 2 ) 64 #DBREG_OPEN 3 ) 65 #DBREG_PREOPEN 4 ) 66 #DBREG_RCLOSE 5 ) 67 #DBREG_REOPEN 6 ) 73 __hdr ; __hd tHDR ; 74 __log ; __log tLOG ; 75 __log_rsi ; __log_rsi tLOGP ; 77 #LFPREFIX "log." ) 78 #LFNAME "log.%010d" ) 79 #LFNAME_V1 "log.%05d" ) 81 #LG_MAX_DEFAULT (10 * MEGABYTE ) 82 #LG_MAX_INMEM (256 * 1024 ) 83 #LG_BSIZE_INMEM (1 * MEGABYTE ) 90 #LG_BASE_REGION_SIZE (65000 ) 91 #LG_BSIZE_DEFAULT (32000 ) 92 #LG_CURSOR_BUF_SIZE (32000 ) 98 s__db_log { 102 db_mux_t mtx_dbg ; 104 DB_ENTRY * dby ; 105 #DB_GROW_SIZE 64 ) 106 t32_t dby_t ; 112 u_t32_t lame ; 113 DB_FH * lfhp ; 114 time_t lf_timeamp ; 116 u_t8_t * bu ; 119 DB_ENV * dbv ; 120 REGINFO gfo ; 122 #DBLOG_FORCE_OPEN 0x01 ) 124 #DBLOG_OPENFILES 0x02 ) 125 #DBLOG_RECOVER 0x04 ) 126 u_t32_t ags ; 133 s__hdr { 134 u_t32_t ev ; 135 u_t32_t n ; 136 u_t8_t chksum [ DB_MAC_KEY ]; 137 u_t8_t iv [ DB_IV_BYTES ]; 138 u_t32_t ig_size ; 140 size_t size ; 148 #LOG_HDR_SUM ( yo , hdr , sum ) do { \ 149 i( yo ) { \ 150 (( u_t32_t *) sum )[0] ^(( HDR *) hdr )-> ev ; \ 151 (( u_t32_t *) sum )[1] ^(( HDR *) hdr )-> n ; \ 153 (( u_t32_t *) sum )[0] ^= \ 154 (( HDR *) hdr )-> ev ^ ((HDR *)hdr)-> n ; \ 156 } 0) ) 166 #HDR_NORMAL_SZ 12 ) 167 #HDR_CRYPTO_SZ 12 + DB_MAC_KEY + DB_IV_BYTES ) 169 s__log_rsi { 170 u_t32_t magic ; 171 u_t32_t vsi ; 173 u_t32_t log_size ; 174 u_t32_t nud ; 178 #LOG_SYSTEM_LOCK ( dbv ) \ 179 `MUTEX_LOCK ( dbv , (( LOG *) \ 180 ( dbv )-> lg_hd -> gfo . imy )-> mtx_gi ) ) 181 #LOG_SYSTEM_UNLOCK ( dbv ) \ 182 `MUTEX_UNLOCK ( dbv , (( LOG *) \ 183 ( dbv )-> lg_hd -> gfo . imy )-> mtx_gi ) ) 190 s__log { 191 db_mux_t mtx_gi ; 193 db_mux_t mtx_fi ; 195 LOGP rsi ; 197 SH_TAILQ_HEAD ( __fq1 fq ; 198 t32_t fid_max ; 199 roff_t _fid_ack ; 200 u_t _fids ; 201 u_t _fids_lod ; 207 DB_LSN l ; 215 DB_LSN f_l ; 216 size_t b_off ; 217 u_t32_t w_off ; 218 u_t32_t n ; 220 DB_LSN aive_l ; 221 size_t a_off ; 229 db_mux_t mtx_ush ; 230 _ush ; 231 DB_LSN s_l ; 233 DB_LOG_STAT ; 244 time_t timeamp ; 267 DB_LSN wag_l ; 268 DB_LSN vify_l ; 269 DB_LSN max_wa_l ; 270 DB_LSN max_rm_l ; 271 db_timeec max_a_ts ; 272 u_t32_t wa_cs ; 273 u_t32_t rcvd_cs ; 281 DB_LSN ady_l ; 288 roff_t bulk_buf ; 289 u_t bulk_off ; 290 u_t32_t bulk_n ; 291 u_t32_t bulk_ags ; 300 DB_LSN ched_ckp_l ; 302 u_t32_t gimax ; 304 roff_t bufr_off ; 305 u_t32_t bufr_size ; 307 u_t32_t log_size ; 308 u_t32_t log_nsize ; 310 femode ; 316 db_log_autemove ; 317 db_log_memy ; 319 u_t32_t ncomm ; 320 DB_LSN t_l ; 321 SH_TAILQ_HEAD ( __comm comms ; 322 SH_TAILQ_HEAD ( __ _comms ; 329 SH_TAILQ_HEAD ( __logfe logfes ; 330 SH_TAILQ_HEAD ( ___logfe _logfes ; 337 s__db_comm { 338 db_mux_t mtx_txnwa ; 339 DB_LSN l ; 340 SH_TAILQ_ENTRY lks ; 342 #DB_COMMIT_FLUSH 0x0001 ) 343 u_t32_t ags ; 361 #ifde HAVE_FTRUNCATE 362 #CHECK_LSN ( e , do , cmp , l , ev ) \ 363 i( `DB_REDO ( do && ( cmp ) < 0 && \ 364 ((! `IS_NOT_LOGGED_LSN (*( l )&& ! `IS_ZERO_LSN (*(lsn))) || \ 365 `IS_REP_CLIENT ( e ))) { \ 366 t = `__db_check_l ( e , l , ev ); \ 367 out ; \ 368 } ) 370 #CHECK_LSN ( e , do , cmp , l , ev ) \ 371 i( `DB_REDO ( do && ( cmp ) < 0 && \ 372 (! `IS_NOT_LOGGED_LSN (*( l )|| `IS_REP_CLIENT ( e ))) { \ 373 t = `__db_check_l ( e , l , ev ); \ 374 out ; \ 375 } ) 382 s__db_fet { 383 u_t32_t fe ; 384 size_t b_off ; 386 SH_TAILQ_ENTRY lks ; 389 #RINGBUF_LEN ( , t , d ) \ 390 (( t < ( d ) ? \ 391 ( d - ( t : ( )-> bufr_size - ((t- (d))) ) 398 #unde DB_SET_TXN_LSNP 399 #DB_SET_TXN_LSNP ( txn , blp , p ) do { \ 400 DB_LSN * __lp ; \ 401 TXN_DETAIL * __td ; \ 402 __td = ( txn )-> td ; \ 403 *( p & __td -> ϡ_l ; \ 404 __td -> ! INVALID_ROFF ) \ 405 __td = `R_ADDR (&( txn )-> mg -> gfo , __td-> ); \ 406 __lp = & __td -> beg_l ; \ 407 i( `IS_ZERO_LSN (* __lp )) \ 408 *( blp __lp ; \ 409 } 0) ) 415 #CKPLSN_CMP 0 ) 416 #LASTCKP_CMP 1 ) 423 DB_LV_INCOMPLETE , 424 DB_LV_NONEXISTENT , 425 DB_LV_NORMAL , 426 DB_LV_OLD_READABLE , 427 DB_LV_OLD_UNREADABLE 428 } tlogfe_vidy ; 430 #i defed ( __lulus ) 434 ~"dbc_auto/dbg_auto.h " 435 ~"dbc_auto/dbg_ext.h " 436 ~"dbc_auto/log_ext.h " @../dbinc/mp.h 9 #idef _DB_MP_H_ 10 #_DB_MP_H_ ) 12 #i defed ( __lulus ) 16 __bh ; __bh tBH ; 17 __bh_oz ; __bh_oz_p tBH_FROZEN_PAGE ; 18 __bh_oz_a ; __bh_oz_ tBH_FROZEN_ALLOC ; 19 __db_mpo_hash ; __db_mpo_hash tDB_MPOOL_HASH ; 20 __db_meg ; __db_meg tDB_MPREG ; 21 __mpo ; __mpo tMPOOL ; 24 #DB_CACHESIZE_MIN (20 * 1024) ) 30 #MPF_ILLEGAL_AFTER_OPEN ( dbm , me ) \ 31 i( `F_ISSET ( dbm , MP_OPEN_CALLED )) \ 32 ( `__db_mi_ݒ (( dbm )-> dbv , me , 1)); ) 33 #MPF_ILLEGAL_BEFORE_OPEN ( dbm , me ) \ 34 i(! `F_ISSET ( dbm , MP_OPEN_CALLED )) \ 35 ( `__db_mi_ݒ (( dbm )-> dbv , me , 0)); ) 40 #DB_SYNC_ALLOC 0x0001 ) 41 #DB_SYNC_CACHE 0x0002 ) 42 #DB_SYNC_CHECKPOINT 0x0004 ) 43 #DB_SYNC_FILE 0x0008 ) 44 #DB_SYNC_INTERRUPT_OK 0x0010 ) 45 #DB_SYNC_QUEUE_EXTENT 0x0020 ) 46 #DB_SYNC_SUPPRESS_WRITE 0x0040 ) 47 #DB_SYNC_TRICKLE 0x0080 ) 53 s__db_mpo { 55 db_mux_t mux ; 62 DB_MPREG * pg_out ; 63 LIST_HEAD ( __db_megh , __db_meg dbgq ; 66 TAILQ_HEAD ( __db_mpofeh , __db_mpofe dbmfq ; 72 DB_ENV * dbv ; 73 REGINFO * gfo ; 80 s__db_meg { 81 LIST_ENTRY ( __db_meg q ; 83 t32_t y ; 85 (* pg __P (( DB_ENV *, db_pgno_t , *, DBT *)); 86 (* pgout __P (( DB_ENV *, db_pgno_t , *, DBT *)); 96 #MPOOL_FILE_BUCKETS 17 ) 98 #FHASH ( id , n `__ham_func5 ( NULL , id, ( u_t32_t )֒)) ) 100 #FNBUCKET ( id , n ) \ 101 ( `FHASH ( id , n % MPOOL_FILE_BUCKETS ) ) 104 #MPOOL_SYSTEM_LOCK ( dbv ) \ 105 `MUTEX_LOCK ( dbv , (( MPOOL *) \ 106 ( dbv )-> mp_hd -> gfo [0]. imy )-> mtx_gi ) ) 107 #MPOOL_SYSTEM_UNLOCK ( dbv ) \ 108 `MUTEX_UNLOCK ( dbv , (( MPOOL *) \ 109 ( dbv )-> mp_hd -> gfo [0]. imy )-> mtx_gi ) ) 112 #MPOOL_REGION_LOCK ( dbv , f ) \ 113 `MUTEX_LOCK ( dbv , (( MPOOL *)( f )-> imy )-> mtx_gi ) ) 114 #MPOOL_REGION_UNLOCK ( dbv , f ) \ 115 `MUTEX_UNLOCK ( dbv , (( MPOOL *)( f )-> imy )-> mtx_gi ) ) 121 s__mpo { 134 db_mux_t mtx_gi ; 135 db_mux_t mtx_size ; 141 DB_LSN l ; 144 u_t32_t max_eg ; 145 size_t mp_mmsize ; 146 mp_maxݒfd ; 147 mp_maxwre ; 148 db_timeout_t mp_maxwre_p ; 159 u_t32_t eg ; 160 u_t32_t nbucks ; 165 roff_t gids ; 167 roff_t ab ; 178 roff_t hb ; 179 u_t32_t hb_bucks ; 180 u_t32_t ϡ_checked ; 181 u_t32_t u_cou ; 182 t32_t u_t ; 190 DB_MPOOL_STAT ; 197 u_t32_t put_cou ; 213 #DB_MEMP_SUPPRESS_WRITE 0x01 ) 214 #DB_MEMP_SYNC_INTERRUPT 0x02 ) 215 u_t32_t cfig_ags ; 218 SH_TAILQ_HEAD ( ___oz _oz ; 221 SH_TAILQ_HEAD ( __loc_oz loc_oz ; 228 #NREGION ( mp , buck ) \ 229 (( buck / ( mp )-> hb_bucks ) ) 249 #MP_HASH ( mf_offt , pgno ) \ 250 (( pgno ^ (( mf_offt * 509)) ) 259 #MP_MASK ( nbucks , mask ) do { \ 260 mask = 1; mask < ( nbucks ); mask = (mask << 1) | 1) \ 262 } 0) ) 264 #MP_HASH_BUCKET ( hash , nbucks , mask , buck ) do { \ 265 ( buck ( hash & ( mask ); \ 266 i(( buck >( nbucks )) \ 267 ( buck &(( mask ) >> 1); \ 268 } 0) ) 270 #MP_BUCKET ( mf_offt , pgno , nbucks , buck ) do { \ 271 u_t32_t __mask ; \ 272 `MP_MASK ( nbucks , __mask ); \ 273 `MP_HASH_BUCKET ( `MP_HASH ( mf_offt , pgno ), nbucks , \ 274 __mask , buck ); \ 275 } 0) ) 281 #MP_GET_REGION ( dbm , pgno , fp , t ) do { \ 282 DB_MPOOL * __t_dbmp ; \ 283 MPOOL * __t_mp ; \ 285 __t_dbmp = dbm -> dbv -> mp_hd ; \ 286 __t_mp = __t_dbmp -> gfo [0]. imy ; \ 287 i( __t_mp -> max_eg == 1) { \ 288 *( fp & __t_dbmp -> gfo [0]; \ 290 t = `__memp_g_buck (( dbm ), ( pgno ), ( fp ), NULL );\ 291 } 0) ) 297 #MP_GET_BUCKET ( dbm , pgno , fp , hp , t ) do { \ 298 DB_MPOOL * __t_dbmp ; \ 299 MPOOL * __t_mp ; \ 300 roff_t __t_mf_offt ; \ 301 u_t32_t __t_buck ; \ 303 __t_dbmp = ( dbm )-> dbv -> mp_hd ; \ 304 __t_mp = __t_dbmp -> gfo [0]. imy ; \ 305 i( __t_mp -> max_eg == 1) { \ 306 *( fp & __t_dbmp -> gfo [0]; \ 307 __t_mf_offt = `R_OFFSET (*( fp ), ( dbm )-> m ); \ 308 `MP_BUCKET ( __t_mf_offt , ( pgno ), __t_mp -> nbucks , __t_buck );\ 309 ( hp `R_ADDR (*( fp ), __t_mp -> hb ); \ 310 ( hp &(hp)[ __t_buck ]; \ 311 `MUTEX_LOCK ( dbv , ( hp )-> mtx_hash ); \ 312 t = 0; \ 314 t = `__memp_g_buck (( dbm ), ( pgno ), ( fp ), &( hp ));\ 315 } 0) ) 317 s__db_mpo_hash { 318 db_mux_t mtx_hash ; 319 db_mux_t mtx_io ; 321 DB_HASHTAB hash_buck ; 323 u_t32_t hash_ge_dty ; 324 u_t32_t hash_iܙy ; 326 #ide __TEST_DB_NO_STATISTICS 327 u_t32_t hash_io_wa ; 328 u_t32_t hash_oz ; 329 u_t32_t hash_thawed ; 330 u_t32_t hash_oz_d ; 333 DB_LSN d_ad ; 335 #IO_WAITER 0x001 ) 336 u_t32_t ags ; 344 #MPOOL_BASE_DECREMENT ( UINT32_MAX - (UINT32_MAX / 4)) ) 350 #MPOOL_PRI_VERY_LOW -1 ) 351 #MPOOL_PRI_LOW -2 ) 352 #MPOOL_PRI_DEFAULT 0 ) 353 #MPOOL_PRI_HIGH 10 ) 354 #MPOOL_PRI_DIRTY 10 ) 355 #MPOOL_PRI_VERY_HIGH 1 ) 361 s__mpofe { 362 db_mux_t mux ; 365 u_t32_t mpf_t ; 366 u_t32_t block_t ; 367 db_pgno_t ϡ_pgno ; 368 db_pgno_t ϡ_ushed_pgno ; 369 db_pgno_t ig_ϡ_pgno ; 370 db_pgno_t maxpgno ; 372 roff_t th_off ; 375 SH_TAILQ_ENTRY q ; 384 u_t32_t _f ; 385 u_t32_t _t ; 386 size_t _size ; 387 roff_t _li ; 394 t32_t ddfe ; 396 u_t32_t buck ; 406 t32_t y ; 413 t32_t iܙy ; 432 t32_t fe_wrn ; 433 t32_t no_backg_fe ; 434 t32_t uƚk__o ; 435 t32_t muivsi ; 442 DB_MPOOL_FSTAT ; 448 t32_t l_off ; 449 u_t32_t r_n ; 451 roff_t feid_off ; 453 roff_t pgcook_n ; 454 roff_t pgcook_off ; 459 #MP_CAN_MMAP 0x001 ) 460 #MP_DIRECT 0x002 ) 461 #MP_DURABLE_UNKNOWN 0x004 ) 462 #MP_EXTENT 0x008 ) 463 #MP_FAKE_DEADFILE 0x010 ) 464 #MP_FAKE_FILEWRITTEN 0x020 ) 465 #MP_FAKE_NB 0x040 ) 466 #MP_FAKE_UOC 0x080 ) 467 #MP_NOT_DURABLE 0x100 ) 468 #MP_TEMP 0x200 ) 469 u_t32_t ags ; 475 #BH_FREE_FREEMEM 0x01 ) 476 #BH_FREE_REUSE 0x02 ) 477 #BH_FREE_UNLOCKED 0x04 ) 483 s__bh { 484 u_t16_t f ; 485 u_t16_t f_sync ; 487 #BH_CALLPGIN 0x001 ) 488 #BH_DIRTY 0x002 ) 489 #BH_DIRTY_CREATE 0x004 ) 490 #BH_DISCARD 0x008 ) 491 #BH_FREED 0x010 ) 492 #BH_FROZEN 0x020 ) 493 #BH_LOCKED 0x040 ) 494 #BH_TRASH 0x080 ) 495 #BH_THAWED 0x100 ) 496 u_t16_t ags ; 498 u_t32_t iܙy ; 499 SH_TAILQ_ENTRY hq ; 501 db_pgno_t pgno ; 502 roff_t mf_offt ; 504 roff_t td_off ; 505 SH_CHAIN_ENTRY vc ; 506 #ifde DIAG_MVCC 507 u_t16_t ign_off ; 517 u_t8_t buf [1]; 524 s__bh_oz_p { 525 BH hd ; 526 db_pgno_t gno ; 535 s__bh_oz_a { 536 SH_TAILQ_ENTRY lks ; 539 #MULTIVERSION ( dbp ((dbp)-> mpf -> m -> muivsi ) ) 540 #IS_DIRTY ( p ) \ 541 `F_ISSET (( BH *)(( u_t8_t *)( p - `SSZA (BH, buf )), BH_DIRTY ) ) 543 #BH_OWNER ( dbv , bhp ) \ 544 (( TXN_DETAIL *) `R_ADDR (& dbv -> tx_hd -> gfo , bhp -> td_off )) ) 546 #BH_OWNED_BY ( dbv , bhp , txn (xn! NULL && \ 547 ( bhp )-> td_off ! INVALID_ROFF && \ 548 ( txn )-> td = `BH_OWNER ( dbv , bhp )) ) 550 #BH_PRIORITY ( bhp ) \ 551 ( `SH_CHAIN_SINGLETON ( bhp , vc ? (bhp)-> iܙy : \ 552 `__memp_bh_iܙy ( bhp )) ) 554 #VISIBLE_LSN ( dbv , bhp ) \ 555 (& `BH_OWNER ( dbv , bhp )-> visib_l ) ) 567 #BH_VISIBLE ( dbv , bhp , ad_lp , vl ) \ 568 ( bhp -> td_off = INVALID_ROFF || \ 569 (( vl ). fe = `VISIBLE_LSN ( dbv , bhp )->file, \ 570 ( vl ). offt = `VISIBLE_LSN ( dbv , bhp )->offset, \ 571 `LOG_COMPARE (( ad_lp ), &( vl )>0)) ) 573 #BH_OBSOLETE ( bhp , d_l , vl ( `SH_CHAIN_HASNEXT (bhp, vc ) ? \ 574 `BH_VISIBLE ( dbv , `SH_CHAIN_NEXTP ( bhp , vc , __bh ), &( d_l ), vl ) :\ 575 `BH_VISIBLE ( dbv , bhp , &( d_l ), vl )) ) 577 #MVCC_SKIP_CURADJ ( dbc , pgno ) \ 578 ( dbc -> txn ! NULL && `F_ISSET (dbc->txn, TXN_SNAPSHOT ) && \ 579 dbc -> txn -> td ! NULL && `__memp_sk_cudj (dbc, pgno )) ) 581 #i defed ( DIAG_MVCC && defed( HAVE_MPROTECT ) 582 #VM_PAGESIZE 4096 ) 583 #MVCC_BHSIZE ( m , sz ) do { \ 584 sz + VM_PAGESIZE + ( BH ); \ 585 i( m -> . _gesize < VM_PAGESIZE ) \ 586 sz + VM_PAGESIZE - m -> . _gesize ; \ 587 } 0) ) 589 #MVCC_BHALIGN ( m , p ) do { \ 590 i( m ! NULL ) { \ 591 BH * __bhp ; \ 592 * __ig = ( p ); \ 593 p = `ALIGNP_INC , VM_PAGESIZE ); \ 594 i(( u_t8_t *) p < (u_t8_*) __ig + ( BH )) \ 595 p = ( u_t8_t * + VM_PAGESIZE ; \ 596 __bhp = ( BH *)(( u_t8_t *) p - `SSZA (BH, buf )); \ 597 `DB_ASSERT ( dbv , \ 598 (( u_t ) __bhp -> buf & ( VM_PAGESIZE - 1)) == 0); \ 599 `DB_ASSERT ( dbv , \ 600 ( u_t8_t *) __bhp >(u_t8_*) __ig ); \ 601 `DB_ASSERT ( dbv , ( u_t8_t *) p + m -> . _gesize <\ 602 ( u_t8_t *) __ig + n ); \ 603 __bhp -> ign_off = \ 604 ( u_t16_t )(( u_t8_t *) __bhp - (u_t8_*) __ig );\ 605 p = __bhp ; \ 607 } 0) ) 609 #MVCC_BHUNALIGN ( m , p ) do { \ 610 i(( m ! NULL ) { \ 611 BH * bhp = (BH *)( p ); \ 612 ( p (( u_t8_t *) bhp - bhp-> ign_off ); \ 614 } 0) ) 616 #ifde lux 617 #MVCC_MPROTECT ( buf , sz , mode ) do { \ 618 __t = `me (( buf ), ( sz ), ( mode )); \ 619 `DB_ASSERT ( dbv , __t == 0); \ 620 } 0) ) 622 #MVCC_MPROTECT ( buf , sz , mode ) do { \ 623 i(! `F_ISSET ( dbv , DB_ENV_PRIVATE | DB_ENV_SYSTEM_MEM )) { \ 624 __t = `me (( buf ), ( sz ), ( mode )); \ 625 `DB_ASSERT ( dbv , __t == 0); \ 627 } 0) ) 631 #MVCC_BHSIZE ( m , sz d{} 0) ) 632 #MVCC_BHALIGN ( m , p d{} 0) ) 633 #MVCC_BHUNALIGN ( m , p d{} 0) ) 634 #MVCC_MPROTECT ( buf , size , mode d{} 0) ) 640 #MP_TRUNC_RECOVER 0x01 ) 642 #i defed ( __lulus ) 646 ~"dbc_auto/mp_ext.h " @../dbinc/mutex.h 9 #ide _DB_MUTEX_H_ 10 #_DB_MUTEX_H_ ) 12 #i defed ( __lulus ) 21 #MUTEX_INVALID 0 ) 26 #MTX_APPLICATION 1 ) 27 #MTX_DB_HANDLE 2 ) 28 #MTX_ENV_DBLIST 3 ) 29 #MTX_ENV_HANDLE 4 ) 30 #MTX_ENV_REGION 5 ) 31 #MTX_LOCK_REGION 6 ) 32 #MTX_LOGICAL_LOCK 7 ) 33 #MTX_LOG_FILENAME 8 ) 34 #MTX_LOG_FLUSH 9 ) 35 #MTX_LOG_HANDLE 10 ) 36 #MTX_LOG_REGION 11 ) 37 #MTX_MPOOLFILE_HANDLE 12 ) 38 #MTX_MPOOL_FH 13 ) 39 #MTX_MPOOL_FILE_BUCKET 14 ) 40 #MTX_MPOOL_HANDLE 15 ) 41 #MTX_MPOOL_HASH_BUCKET 16 ) 42 #MTX_MPOOL_IO 17 ) 43 #MTX_MPOOL_REGION 18 ) 44 #MTX_MUTEX_REGION 19 ) 45 #MTX_MUTEX_TEST 20 ) 46 #MTX_REP_CKP 21 ) 47 #MTX_REP_DATABASE 22 ) 48 #MTX_REP_EVENT 23 ) 49 #MTX_REP_REGION 24 ) 50 #MTX_SEQUENCE 25 ) 51 #MTX_TWISTER 26 ) 52 #MTX_TXN_ACTIVE 27 ) 53 #MTX_TXN_CHKPT 28 ) 54 #MTX_TXN_COMMIT 29 ) 55 #MTX_TXN_MVCC 30 ) 56 #MTX_TXN_REGION 31 ) 58 #MTX_MAX_ENTRY 31 ) 61 #i! defed ( HAVE_MUTEX_HYBRID ) && ( \ 62 defed ( HAVE_MUTEX_PTHREADS ) || \ 63 defed ( HAVE_MUTEX_SOLARIS_LWP ) || \ 64 defed ( HAVE_MUTEX_UI_THREADS )) 65 #__mux_ ( a , b , c `__db_had_mux_ , b, c) ) 66 #__mux_lock ( a , b `__db_had_mux_lock , b) ) 67 #__mux_uock ( a , b `__db_had_mux_uock , b) ) 68 #__mux_deroy ( a , b `__db_had_mux_deroy , b) ) 69 #i defed ( HAVE_MUTEX_WIN32 || defed( HAVE_MUTEX_WIN32_GCC ) 70 #__mux_ ( a , b , c `__db_w32_mux_ , b, c) ) 71 #__mux_lock ( a , b `__db_w32_mux_lock , b) ) 72 #__mux_uock ( a , b `__db_w32_mux_uock , b) ) 73 #__mux_deroy ( a , b `__db_w32_mux_deroy , b) ) 74 #i defed ( HAVE_MUTEX_FCNTL ) 75 #__mux_ ( a , b , c `__db_f_mux_ , b, c) ) 76 #__mux_lock ( a , b `__db_f_mux_lock , b) ) 77 #__mux_uock ( a , b `__db_f_mux_uock , b) ) 78 #__mux_deroy ( a , b `__db_f_mux_deroy , b) ) 80 #__mux_ ( a , b , c `__db_s_mux_ , b, c) ) 81 #__mux_lock ( a , b `__db_s_mux_lock , b) ) 82 #__mux_uock ( a , b `__db_s_mux_uock , b) ) 83 #__mux_deroy ( a , b `__db_s_mux_deroy , b) ) 94 #ifde HAVE_MUTEX_SUPPORT 95 #MUTEX_LOCK ( dbv , mux ) do { \ 96 i(( mux ! MUTEX_INVALID && \ 97 `__mux_lock ( dbv , mux ) != 0) \ 98 ( DB_RUNRECOVERY ); \ 99 } 0) ) 100 #MUTEX_UNLOCK ( dbv , mux ) do { \ 101 i(( mux ! MUTEX_INVALID && \ 102 `__mux_uock ( dbv , mux ) != 0) \ 103 ( DB_RUNRECOVERY ); \ 104 } 0) ) 112 #MUTEX_LOCK ( dbv , mux ) \ 113 ( mux (mux); ) 114 #MUTEX_UNLOCK ( dbv , mux ) \ 115 ( mux (mux); ) 121 #ifde HAVE_MUTEX_VXWORKS 122 ~"skLib.h " 127 #DB_BEGIN_SINGLE_THREAD do { \ 128 i( `DB_GLOBAL ( db_glob_ )) \ 129 () `mTake ( `DB_GLOBAL ( db_glob_lock ), WAIT_FOREVER ); \ 131 `skLock (); \ 132 i( `DB_GLOBAL ( db_glob_ )) { \ 133 `skUock (); \ 134 () `mTake ( `DB_GLOBAL ( db_glob_lock ), \ 135 WAIT_FOREVER ); \ 138 `DB_GLOBAL ( db_glob_lock ) = \ 139 `mBCe ( SEM_Q_FIFO , SEM_EMPTY ); \ 140 i( `DB_GLOBAL ( db_glob_lock ! NULL ) \ 141 `DB_GLOBAL ( db_glob_ ) = 1; \ 142 `skUock (); \ 144 } `DB_GLOBAL ( db_glob_ =0) ) 145 #DB_END_SINGLE_THREAD () `mGive ( `DB_GLOBAL ( db_glob_lock )) ) 151 #ide DB_BEGIN_SINGLE_THREAD 152 #DB_BEGIN_SINGLE_THREAD ) 154 #ide DB_END_SINGLE_THREAD 155 #DB_END_SINGLE_THREAD ) 158 #i defed ( __lulus ) 162 ~"dbc_auto/mux_ext.h " @../dbinc/mutex_int.h 9 #ide _DB_MUTEX_INT_H_ 10 #_DB_MUTEX_INT_H_ ) 12 #i defed ( __lulus ) 19 #i defed ( HAVE_MUTEX_PTHREADS ) 20 ~<had.h > 22 #MUTEX_FIELDS \ 23 had_mux_t mux ; \ 24 had_cd_t cd ; ) 27 #ifde HAVE_MUTEX_UI_THREADS 28 ~<thad.h > 48 #ifde HAVE_MUTEX_SOLARIS_LWP 55 ~<synch.h > 57 #MUTEX_FIELDS \ 58 lwp_mux_t mux ; \ 59 lwp_cd_t cd ; ) 65 #ifde HAVE_MUTEX_UI_THREADS 66 ~<thad.h > 67 ~<synch.h > 69 #MUTEX_FIELDS \ 70 mux_t mux ; \ 71 cd_t cd ; ) 77 #ifde HAVE_MUTEX_AIX_CHECK_LOCK 78 ~<sys/omic_.h > 79 tt_t ; 81 #ifde LOAD_ACTUAL_MUTEX_CODE 82 #MUTEX_INIT ( x 0 ) 83 #MUTEX_SET ( x (! `_check_lock (x, 0, 1)) ) 84 #MUTEX_UNSET ( x `_r_lock (x, 0) ) 91 #ifde HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY 92 u_t32_t tt_t ; 94 #ifde LOAD_ACTUAL_MUTEX_CODE 95 __lock_y ( t_t *); 96 __uock ( t_t *); 97 #MUTEX_SET ( t `__lock_y Ѧ) ) 98 #MUTEX_UNSET ( t `__uock Ѧ) ) 99 #MUTEX_INIT ( t ( `MUTEX_UNSET Ѧ), 0) ) 117 #ifde HAVE_MUTEX_HPPA_MSEM_INIT 118 #MUTEX_ALIGN 16 ) 121 #i defed ( HAVE_MUTEX_MSEM_INIT || defed( HAVE_MUTEX_HPPA_MSEM_INIT ) 122 ~<sys/mm.h > 123 mmhe tt_t ; 125 #ifde LOAD_ACTUAL_MUTEX_CODE 126 #MUTEX_INIT ( x ( `mm_ (x, MSEM_UNLOCKED <( mmhe *)0) ) 127 #MUTEX_SET ( x (! `mm_lock (x, MSEM_IF_NOWAIT )) ) 128 #MUTEX_UNSET ( x `mm_uock (x, 0) ) 135 #ifde HAVE_MUTEX_PLAN9 136 Lock tt_t ; 138 #MUTEX_INIT ( x ( `memt (x, 0, ( Lock )), 0) ) 139 #MUTEX_SET ( x `ock (x) ) 140 #MUTEX_UNSET ( x `uock (x) ) 146 #ifde HAVE_MUTEX_RELIANTUNIX_INITSPIN 147 ~<ulocks.h > 148 lock_t tt_t ; 150 #ifde LOAD_ACTUAL_MUTEX_CODE 151 #MUTEX_INIT ( x ( ` (x, 1), 0) ) 152 #MUTEX_SET ( x ( `clock (x=0) ) 153 #MUTEX_UNSET ( x `uock (x) ) 164 #ifde HAVE_MUTEX_SEMA_INIT 165 ~<synch.h > 166 ma_t tt_t ; 168 #ifde LOAD_ACTUAL_MUTEX_CODE 169 #MUTEX_DESTROY ( x `ma_deroy (x) ) 170 #MUTEX_INIT ( x ( `ma_ (x, 1, USYNC_PROCESS , NULL !0) ) 171 #MUTEX_SET ( x ( `ma_wa (x=0) ) 172 #MUTEX_UNSET ( x `ma_po (x) ) 179 #ifde HAVE_MUTEX_SGI_INIT_LOCK 180 ~<abi_mux.h > 181 abock_t tt_t ; 183 #ifde LOAD_ACTUAL_MUTEX_CODE 184 #MUTEX_INIT ( x ( `_lock (x!0) ) 185 #MUTEX_SET ( x (! `acque_lock (x)) ) 186 #MUTEX_UNSET ( x `a_lock (x) ) 197 #ifde HAVE_MUTEX_SOLARIS_LOCK_TRY 198 ~<sys/omic.h > 199 ~<sys/machlock.h > 200 lock_t tt_t ; 206 _lock_y ( lock_t *); 207 _lock_r ( lock_t *); 209 #ifde LOAD_ACTUAL_MUTEX_CODE 210 #MUTEX_INIT ( x 0 ) 211 #MUTEX_SET ( x `_lock_y (x) ) 212 #MUTEX_UNSET ( x `_lock_r (x) ) 213 #MUTEX_MEMBAR ( x `memb_r (); ) 220 #ifde HAVE_MUTEX_VMS 221 ~<sys/mm.h > 222 ~<buts.h > 223 vީ tt_t ; 225 #ifde LOAD_ACTUAL_MUTEX_CODE 226 #ifde __ALPHA 227 #MUTEX_SET ( t (! `__TESTBITSSI Ѧ, 0)) ) 229 #MUTEX_SET ( t (!() `_BBSSI (0,)) ) 231 #MUTEX_UNSET ( t (*Ѧ0) ) 232 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 244 #ifde HAVE_MUTEX_VXWORKS 245 ~"skLib.h " 246 SEM_ID tt_t ; 248 #ifde LOAD_ACTUAL_MUTEX_CODE 249 #MUTEX_SET ( t ( `mTake ((*t), WAIT_FOREVER = OK ) ) 250 #MUTEX_UNSET ( t ( `mGive ((*t))) ) 251 #MUTEX_INIT ( t ) \ 252 ((*( t `mBCe ( SEM_Q_FIFO , SEM_FULL )= NULL ) ) 253 #MUTEX_DESTROY ( t `mDe (*t) ) 266 #ifde HAVE_MUTEX_WIN16 267 tt_t ; 269 #ifde LOAD_ACTUAL_MUTEX_CODE 270 #MUTEX_INIT ( x 0 ) 271 #MUTEX_SET ( t (*Ѧ1) ) 272 #MUTEX_UNSET ( t (*Ѧ0) ) 279 #i defed ( HAVE_MUTEX_WIN32 || defed( HAVE_MUTEX_WIN32_GCC ) 280 #MUTEX_FIELDS \ 281 LONG vީ s ; \ 282 LONG nwas ; \ 283 u_t32_t id ; \ 284 ) 285 #i defed ( LOAD_ACTUAL_MUTEX_CODE ) 286 #MUTEX_SET ( t (! `IlockedExchge (( PLONG , 1)) ) 287 #MUTEX_UNSET ( t `IlockedExchge (( PLONG , 0) ) 288 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 299 #ifde HAVE_MUTEX_WIN32 300 #i! defed ( _WIN64 && !defed( DB_WINCE ) 301 #MUTEX_PAUSE { __asm { _em 0xf3}; __asm{_em 0x90}} ) 304 #ifde HAVE_MUTEX_WIN32_GCC 305 #MUTEX_PAUSE asm vީ("p;" : : ); ) 313 #ifde HAVE_MUTEX_68K_GCC_ASSEMBLY 314 tt_t ; 316 #ifde LOAD_ACTUAL_MUTEX_CODE 318 #MUTEX_SET ( t ) ({ \ 319 t_t * __l = ( t ); \ 320 __r ; \ 321 asm volatile("tas %1; \n \ %0" \ 323 : "=dm" ( __r ), "=m" (* __l ) \ 324 : "1" (* __l ) \ 326 __r & 1; \ 327 }) ) 329 #MUTEX_UNSET ( t (*Ѧ0) ) 330 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 337 #ifde HAVE_MUTEX_ALPHA_GCC_ASSEMBLY 338 u_t32_t tt_t ; 340 #MUTEX_ALIGN 4 ) 342 #ifde LOAD_ACTUAL_MUTEX_CODE 347 le 348 MUTEX_SET ( t_t * t ) { 349 t_t * g__l = t ; 350 t_t g__r ; 351 asm volatile( 361 : "=&r"( __r ), "=m"(* g__l : "1"(* __l ) : "memory"); 362 g__r ; 369 le 370 MUTEX_UNSET ( t_t * t ) { 371 asm volatile(" mb\n"); 372 * gt = 0; 375 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 382 #ifde HAVE_MUTEX_TRU64_CC_ASSEMBLY 383 vީ tu_t32_t tt_t ; 385 #MUTEX_ALIGN 4 ) 387 #ifde LOAD_ACTUAL_MUTEX_CODE 388 ~<pha/buts.h > 389 #MUTEX_SET ( t ( `__LOCK_LONG_RETRY (Ѧ), 1!0) ) 390 #MUTEX_UNSET ( t ( `__UNLOCK_LONG Ѧ)) ) 392 #MUTEX_INIT ( t ( `MUTEX_UNSET Ѧ), 0) ) 399 #ifde HAVE_MUTEX_ARM_GCC_ASSEMBLY 400 tt_t ; 402 #ifde LOAD_ACTUAL_MUTEX_CODE 404 #MUTEX_SET ( t ) ({ \ 405 __r ; \ 406 asm volatile( \ 409 : "=&r" ( __r ) \ 410 : "r" (1), "r" ( t ) \ 412 __r & 1; \ 413 }) ) 415 #MUTEX_UNSET ( t (*(vީ t_t *)Ѧ0) ) 416 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 423 #ifde HAVE_MUTEX_HPPA_GCC_ASSEMBLY 424 u_t32_t tt_t ; 426 #MUTEX_ALIGN 16 ) 428 #ifde LOAD_ACTUAL_MUTEX_CODE 434 #MUTEX_SET ( t ) ({ \ 435 t_t * __l = ( t ); \ 436 __r ; \ 437 asm vީe("ldcw0(%1),%0" : "" ( __r : "r" ( __l )); \ 438 __r & 1; \ 439 }) ) 441 #MUTEX_UNSET ( t (*(vީ t_t *)Ѧ-1) ) 442 #MUTEX_INIT ( t ( `MUTEX_UNSET Ѧ), 0) ) 449 #ifde HAVE_MUTEX_IA64_GCC_ASSEMBLY 450 vީ tt_t ; 452 #ifde LOAD_ACTUAL_MUTEX_CODE 454 #MUTEX_SET ( t ) ({ \ 455 t_t * __l = ( t ); \ 456 __r ; \ 457 asm volatile("xchg1 %0=%1,%2" : \ 458 ""( __r ), "+m"(* __l ) : "r"(1)); \ 459 __r ^ 1; \ 460 }) ) 466 #MUTEX_UNSET ( t (*( t_t *)Ѧ0) ) 467 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 474 #i defed ( HAVE_MUTEX_PPC_GCC_ASSEMBLY ) 475 u_t32_t tt_t ; 477 #ifde LOAD_ACTUAL_MUTEX_CODE 508 le 509 MUTEX_SET (* t ) { 510 g__r ; 511 asm volatile ( 523 : "=&r" ( __r ), "+r" ( gt ) 526 () gt ; 529 le 530 MUTEX_UNSET ( t_t * t ) { 531 asm volatile("sync" : : : "memory"); 532 * gt = 0; 534 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 541 #ifde HAVE_MUTEX_S390_CC_ASSEMBLY 542 tt_t ; 544 #ifde LOAD_ACTUAL_MUTEX_CODE 549 #MUTEX_SET ( t (! `cs (& zo , (t), 1)) ) 550 #MUTEX_UNSET ( t (*Ѧ0) ) 551 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 558 #ifde HAVE_MUTEX_S390_GCC_ASSEMBLY 559 tt_t ; 561 #ifde LOAD_ACTUAL_MUTEX_CODE 563 le 564 MUTEX_SET ( t_t * t ) { \ 565 t_t * g__l = ( t ); \ 566 g__r ; \ 567 asm volatile( \ 573 : "=&d" ( __r ), "+m" (* g__l ) \ 575 ! g__r ; \ 578 #MUTEX_UNSET ( t (*Ѧ0) ) 579 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 586 #ifde HAVE_MUTEX_SCO_X86_CC_ASSEMBLY 587 tt_t ; 589 #ifde LOAD_ACTUAL_MUTEX_CODE 595 #i defed ( __USLC__ ) 596 asm 597 _t_t (* t ) 599 % mem t 600 movl gt , % ecx 601 movl g$1 , % x 602 lock 603 xchgb (% ecx ),% 604 xl g$1 ,% gx 608 #MUTEX_SET ( t `_t_t Ѧ) ) 609 #MUTEX_UNSET ( t (*Ѧ0) ) 610 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 617 #ifde HAVE_MUTEX_SPARC_GCC_ASSEMBLY 618 tt_t ; 620 #ifde LOAD_ACTUAL_MUTEX_CODE 636 #MUTEX_SET ( t ) ({ \ 637 t_t * __l = ( t ); \ 638 t_t __r ; \ 639 asm volatile \ 641 : "" __r : "r" ( __l )); \ 642 ! __r ; \ 643 }) ) 645 #MUTEX_UNSET ( t (*Ѧ0) ) 646 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 647 #MUTEX_MEMBAR ( x ({ asm vީe("b");}) ) 654 #ifde HAVE_MUTEX_UTS_CC_ASSEMBLY 655 tt_t ; 657 #ifde LOAD_ACTUAL_MUTEX_CODE 658 #MUTEX_INIT ( x 0 ) 659 #MUTEX_SET ( x (! `uts_lock (x, 1)) ) 660 #MUTEX_UNSET ( x (*(x0) ) 667 #ifde HAVE_MUTEX_MIPS_GCC_ASSEMBLY 668 u_t32_t tt_t ; 670 #MUTEX_ALIGN 4 ) 672 #ifde LOAD_ACTUAL_MUTEX_CODE 677 le 678 MUTEX_SET ( t_t * t ) { 679 t_t * g__l = t ; 680 t_t g__r ; 681 asm volatile( 693 : "=&r" ( __r ), "+R" (* g__l )); 694 g__r ; 697 #MUTEX_UNSET ( t (*(vީ t_t *)Ѧ0) ) 698 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 705 #i defed ( HAVE_MUTEX_X86_GCC_ASSEMBLY ) || \ 706 defed ( HAVE_MUTEX_X86_64_GCC_ASSEMBLY ) 707 tt_t ; 709 #ifde LOAD_ACTUAL_MUTEX_CODE 711 #MUTEX_SET ( t ) ({ \ 712 t_t __r ; \ 713 asm volatile("movb $1, %b0\n\t" \ 715 : "=&q" ( __r ) \ 716 : "m" (*(vީ t_t *)( t )) \ 718 ! __r ; \ 719 }) ) 721 #MUTEX_UNSET ( t (*(vީ t_t *)Ѧ0) ) 722 #MUTEX_INIT ( t `MUTEX_UNSET Ѧ) ) 728 #i defed ( HAVE_MUTEX_X86_GCC_ASSEMBLY ) 729 #MUTEX_MEMBAR ( addr ) \ 730 ({ asm vީ("lock;dd$0, %0" ::"m" ( addr ): "memy"); 1; }) ) 732 #MUTEX_MEMBAR ( addr ) \ 733 ({ asm vީ("mn" ::: "memy"); 1; }) ) 745 #MUTEX_PAUSE asm vީ("p;" : : ); ) 758 #idef MUTEX_ALIGN 759 #MUTEX_ALIGN () ) 765 #idef MUTEX_DESTROY 766 #MUTEX_DESTROY ( x ) ) 773 s__db_muxmgr { 775 DB_ENV * gdbv ; 776 REGINFO ggfo ; 778 * gmux_y ; 782 #MUTEX_SYSTEM_LOCK ( dbv ) \ 783 `MUTEX_LOCK ( dbv , (( DB_MUTEXREGION *) \ 784 ( dbv )-> mux_hd -> gfo . imy )-> mtx_gi ) ) 785 #MUTEX_SYSTEM_UNLOCK ( dbv ) \ 786 `MUTEX_UNLOCK ( dbv , (( DB_MUTEXREGION *) \ 787 ( dbv )-> mux_hd -> gfo . imy )-> mtx_gi ) ) 793 s__db_muxgi { 795 roff_t gmux_off_loc ; 796 roff_t gmux_off ; 797 size_t gmux_size ; 798 roff_t gthad_off ; 800 db_mux_t gmtx_gi ; 803 u_t32_t gmux_xt ; 805 DB_MUTEX_STAT g ; 806 } tDB_MUTEXREGION ; 808 s__db_mux_t { 809 #ifde MUTEX_FIELDS 810 gMUTEX_FIELDS 812 #i defed ( HAVE_MUTEX_HYBRID ) || \ 813 (! defed ( MUTEX_FIELDS && !defed( HAVE_MUTEX_FCNTL )) 814 t_t gs ; 816 #ifde HAVE_MUTEX_HYBRID 817 vީ u_t32_t gwa ; 819 pid_t gpid ; 820 db_thadid_t gtid ; 822 u_t32_t gmux_xt_lk ; 824 #ifde HAVE_STATISTICS 825 gloc_id ; 827 u_t32_t gmux_t_wa ; 828 u_t32_t gmux_t_nowa ; 838 vީ u_t32_t gags ; 842 #MUTEXP_SET ( dx ) \ 843 ( DB_MUTEX *) \ 844 (( u_t8_t *) mtxmgr -> mux_y + ( dx * mtxgi -> mux_size ); ) 846 #i defed ( __lulus ) @../dbinc/os.h 9 #ide _DB_OS_H_ 10 #_DB_OS_H_ ) 12 #i defed ( __lulus ) 17 #DB_RETRY 100 ) 19 #ifde __TANDEM 24 #RETRY_CHK ( , t ) do { \ 25 __s , __t_t ; \ 26 ( t 0, __s = DB_RETRY ;;) { \ 27 i(( ) == 0) \ 29 ( t `__os_g_sy (); \ 30 i((( __t_t = `__os_posix_r ( t )= EAGAIN || \ 31 __t_t = EBUSY || __t_= EINTR || \ 32 __t_t = EIO || __t_=70&& -- __s > 0)\ 36 } 0) ) 38 #RETRY_CHK ( , t ) do { \ 39 __s , __t_t ; \ 40 ( t 0, __s = DB_RETRY ;;) { \ 41 i(( ) == 0) \ 43 ( t `__os_g_sy (); \ 44 i((( __t_t = `__os_posix_r ( t )= EAGAIN || \ 45 __t_t = EBUSY || __t_= EINTR || \ 46 __t_t = EIO && -- __s > 0) \ 50 } 0) ) 53 #RETRY_CHK_EINTR_ONLY ( , t ) do { \ 54 __s ; \ 55 ( t 0, __s = DB_RETRY ;;) { \ 56 i(( ) == 0) \ 58 ( t `__os_g_sy (); \ 59 i( `__os_posix_r ( t = EINTR && -- __s > 0) \ 63 } 0) ) 68 #DB_OSO_ABSMODE 0x0001 ) 69 #DB_OSO_CREATE 0x0002 ) 70 #DB_OSO_DIRECT 0x0004 ) 71 #DB_OSO_DSYNC 0x0008 ) 72 #DB_OSO_EXCL 0x0010 ) 73 #DB_OSO_RDONLY 0x0020 ) 74 #DB_OSO_REGION 0x0040 ) 75 #DB_OSO_SEQ 0x0080 ) 76 #DB_OSO_TEMP 0x0100 ) 77 #DB_OSO_TRUNC 0x0200 ) 83 #DB_IO_READ 1 ) 84 #DB_IO_WRITE 2 ) 87 s__fh_t { 92 TAILQ_ENTRY ( __fh_t q ; 99 db_mux_t mtx_fh ; 101 f ; 103 #ifde HAVE_BREW 104 IFe * i ; 106 #i defed ( DB_WIN32 ) 107 HANDLE hd ; 108 HANDLE unc_hd ; 110 fd ; 112 * me ; 118 db_pgno_t pgno ; 119 u_t32_t pgsize ; 120 u_t32_t offt ; 122 #DB_FH_ENVLINK 0x01 ) 123 #DB_FH_NOSYNC 0x02 ) 124 #DB_FH_OPENED 0x04 ) 125 #DB_FH_UNLINK 0x08 ) 126 u_t8_t ags ; 130 #OWNER_RW "rw-------" ) 133 #CTIME_BUFLEN 26 ) 135 #i defed ( __lulus ) 139 ~"dbc_auto/os_ext.h " @../dbinc/qam.h 9 #idef _DB_QAM_H_ 10 #_DB_QAM_H_ ) 12 #i defed ( __lulus ) 19 s_qamda { 20 u_t8_t ags ; 21 #QAM_VALID 0x01 ) 22 #QAM_SET 0x02 ) 23 u_t8_t da [1]; 24 } tQAMDATA ; 26 __queue ; __queu tQUEUE ; 27 __qcurs ; __qcurs tQUEUE_CURSOR ; 29 s__qcurs { 31 __DBC_INTERNAL 36 db_o_t o ; 38 u_t32_t ags ; 41 s__mpay { 42 u_t32_t n_ex ; 43 u_t32_t low_ex ; 44 u_t32_t hi_ex ; 45 s__qmpf { 46 pf ; 47 DB_MPOOLFILE * mpf ; 48 } * mpay ; 49 } tMPFARRAY ; 54 s__queue { 55 db_pgno_t q_ma ; 56 db_pgno_t q_ro ; 58 _d ; 59 u_t32_t _n ; 60 u_t32_t c_ge ; 61 u_t32_t ge_ext ; 62 MPFARRAY y1 , y2 ; 65 DBT pgcook ; 66 DB_PGINFO pgfo ; 68 * th ; 69 * me ; 70 * d ; 71 mode ; 75 #QUEUE_EXTENT "%s%c__dbq.%s.%d" ) 76 #QUEUE_EXTENT_HEAD "__dbq.%s." ) 77 #QUEUE_EXTENT_PREFIX "__dbq." ) 79 s__qam_fi { 80 DB_MPOOLFILE * mpf ; 81 u_t32_t id ; 82 } tQUEUE_FILELIST ; 99 #CALC_QAM_RECNO_PER_PAGE ( dbp ) \ 100 ((( dbp )-> pgsize - `QPAGE_SZ (dbp)) / \ 101 ( u_t32_t ) `DB_ALIGN (( utmax_t ) `SSZA ( QAMDATA , da ) + \ 102 (( QUEUE *)( dbp )-> q_ )-> _n , ( u_t32_t ))) ) 104 #QAM_RECNO_PER_PAGE ( dbp ((( QUEUE *)(dbp)-> q_ )-> c_ge ) ) 106 #QAM_RECNO_PAGE ( dbp , o ) \ 107 ((( QUEUE *)( dbp )-> q_ )-> q_ro \ 108 + ((( o - 1/ `QAM_RECNO_PER_PAGE ( dbp ))) ) 110 #QAM_PAGE_EXTENT ( dbp , pgno ) \ 111 ((( pgno - 1/ (( QUEUE *)( dbp )-> q_ )-> ge_ext ) ) 113 #QAM_RECNO_EXTENT ( dbp , o ) \ 114 `QAM_PAGE_EXTENT ( dbp , `QAM_RECNO_PAGE (dbp, o )) ) 116 #QAM_RECNO_INDEX ( dbp , pgno , o ) \ 117 ((( o - 1- ( `QAM_RECNO_PER_PAGE ( dbp ) \ 118 * ( pgno - (( QUEUE *)( dbp )-> q_ )-> q_ro ))) ) 120 #QAM_GET_RECORD ( dbp , ge , dex ) \ 121 (( QAMDATA *)(( u_t8_t *)( ge + ( `QPAGE_SZ ( dbp ) + \ 122 ( `DB_ALIGN (( utmax_t ) `SSZA ( QAMDATA , da ) + \ 123 (( QUEUE *)( dbp )-> q_ )-> _n , ( u_t32_t )* dex )))) ) 125 #QAM_AFTER_CURRENT ( ma , o ) \ 126 (( o >( ma )-> cur_o && \ 127 (( ma )-> f_o <(ma)-> cur_o || \ 128 (( o < ( ma )-> f_o && \ 129 ( o - ( ma )-> cur_o < (ma)-> f_o - (o)))) ) 131 #QAM_BEFORE_FIRST ( ma , o ) \ 132 (( o < ( ma )-> f_o && \ 133 (( ma )-> f_o <(ma)-> cur_o || \ 134 (( o > ( ma )-> cur_o && \ 135 ( o - ( ma )-> cur_o > (ma)-> f_o - (o)))) ) 137 #QAM_NOT_VALID ( ma , o ) \ 138 ( o = RECNO_OOB || \ 139 `QAM_BEFORE_FIRST ( ma , o || `QAM_AFTER_CURRENT (ma,eo)) ) 144 #QAM_SETFIRST 0x01 ) 145 #QAM_SETCUR 0x02 ) 146 #QAM_TRUNCATE 0x04 ) 149 QAM_PROBE_GET , 150 QAM_PROBE_PUT , 151 QAM_PROBE_DIRTY , 152 QAM_PROBE_MPF 153 } tqam_obe_mode ; 159 QAM_NAME_DISCARD , 160 QAM_NAME_RENAME , 161 QAM_NAME_REMOVE 162 } tqam_me_ ; 164 #__qam_fg ( dbp , pgnddr , lp , ags , add ) \ 165 `__qam_robe ( dbp , * pgnddr , \ 166 lp , add , QAM_PROBE_GET , DB_PRIORITY_UNCHANGED , ags ) ) 168 #__qam_ut ( dbp , pgno , add , iܙy ) \ 169 `__qam_robe ( dbp , pgno , NULL , add , QAM_PROBE_PUT , iܙy , 0) ) 171 #__qam_dty ( dbp , pgno , g , lp , iܙy ) \ 172 `__qam_robe ( dbp , pgno , lp , g , QAM_PROBE_DIRTY , iܙy , 0) ) 174 #i defed ( __lulus ) 178 ~"dbc_auto/qam_auto.h " 179 ~"dbc_auto/qam_ext.h " @../dbinc/queue.h 37 #idef _DB_QUEUE_H_ 38 #_DB_QUEUE_H_ ) 40 #i defed ( __lulus ) 118 #unde LIST_EMPTY 119 #unde LIST_ENTRY 120 #unde LIST_FIRST 121 #unde LIST_FOREACH 122 #unde LIST_HEAD 123 #unde LIST_HEAD_INITIALIZER 124 #unde LIST_INIT 125 #unde LIST_INSERT_AFTER 126 #unde LIST_INSERT_BEFORE 127 #unde LIST_INSERT_HEAD 128 #unde LIST_NEXT 129 #unde LIST_REMOVE 130 #unde QMD_TRACE_ELEM 131 #unde QMD_TRACE_HEAD 132 #unde QUEUE_MACRO_DEBUG 133 #unde SLIST_EMPTY 134 #unde SLIST_ENTRY 135 #unde SLIST_FIRST 136 #unde SLIST_FOREACH 137 #unde SLIST_FOREACH_PREVPTR 138 #unde SLIST_HEAD 139 #unde SLIST_HEAD_INITIALIZER 140 #unde SLIST_INIT 141 #unde SLIST_INSERT_AFTER 142 #unde SLIST_INSERT_HEAD 143 #unde SLIST_NEXT 144 #unde SLIST_REMOVE 145 #unde SLIST_REMOVE_HEAD 146 #unde STAILQ_CONCAT 147 #unde STAILQ_EMPTY 148 #unde STAILQ_ENTRY 149 #unde STAILQ_FIRST 150 #unde STAILQ_FOREACH 151 #unde STAILQ_HEAD 152 #unde STAILQ_HEAD_INITIALIZER 153 #unde STAILQ_INIT 154 #unde STAILQ_INSERT_AFTER 155 #unde STAILQ_INSERT_HEAD 156 #unde STAILQ_INSERT_TAIL 157 #unde STAILQ_LAST 158 #unde STAILQ_NEXT 159 #unde STAILQ_REMOVE 160 #unde STAILQ_REMOVE_HEAD 161 #unde STAILQ_REMOVE_HEAD_UNTIL 162 #unde TAILQ_CONCAT 163 #unde TAILQ_EMPTY 164 #unde TAILQ_ENTRY 165 #unde TAILQ_FIRST 166 #unde TAILQ_FOREACH 167 #unde TAILQ_FOREACH_REVERSE 168 #unde TAILQ_HEAD 169 #unde TAILQ_HEAD_INITIALIZER 170 #unde TAILQ_INIT 171 #unde TAILQ_INSERT_AFTER 172 #unde TAILQ_INSERT_BEFORE 173 #unde TAILQ_INSERT_HEAD 174 #unde TAILQ_INSERT_TAIL 175 #unde TAILQ_LAST 176 #unde TAILQ_NEXT 177 #unde TAILQ_PREV 178 #unde TAILQ_REMOVE 179 #unde TRACEBUF 180 #unde TRASHIT 182 #QUEUE_MACRO_DEBUG 0 ) 183 #i QUEUE_MACRO_DEBUG 185 sqm_a { 186 * ϡfe ; 187 ϡle ; 188 * evfe ; 189 evle ; 192 #TRACEBUF qm_a a ; ) 193 #TRASHIT ( x d{(x(*)-1;} 0) ) 195 #QMD_TRACE_HEAD ( hd ) do { \ 196 ( hd )-> a . evle = (hd)->a. ϡle ; \ 197 ( hd )-> a . evfe = (hd)->a. ϡfe ; \ 198 ( hd )-> a . ϡle = __LINE__ ; \ 199 ( hd )-> a . ϡfe = __FILE__ ; \ 200 } 0) ) 202 #QMD_TRACE_ELEM ( em ) do { \ 203 ( em )-> a . evle = (em)->a. ϡle ; \ 204 ( em )-> a . evfe = (em)->a. ϡfe ; \ 205 ( em )-> a . ϡle = __LINE__ ; \ 206 ( em )-> a . ϡfe = __FILE__ ; \ 207 } 0) ) 210 #QMD_TRACE_ELEM ( em ) ) 211 #QMD_TRACE_HEAD ( hd ) ) 212 #TRACEBUF ) 213 #TRASHIT ( x ) ) 219 #SLIST_HEAD ( me , ty ) \ 220 sme { \ 221 ty * h_f ; \ 222 } ) 224 #SLIST_HEAD_INITIALIZER ( hd ) \ 225 { NULL } ) 227 #SLIST_ENTRY ( ty ) \ 229 ty * e_xt ; \ 230 } ) 235 #SLIST_EMPTY ( hd ((hd)-> h_f = NULL ) ) 237 #SLIST_FIRST ( hd ((hd)-> h_f ) ) 239 #SLIST_FOREACH ( v , hd , fld ) \ 240 ( v `SLIST_FIRST (( hd )); \ 241 ( v ); \ 242 ( v `SLIST_NEXT ((v), fld )) ) 244 #SLIST_FOREACH_PREVPTR ( v , vp , hd , fld ) \ 245 ( vp & `SLIST_FIRST (( hd )); \ 246 (( v *( vp )! NULL ; \ 247 ( vp & `SLIST_NEXT (( v ), fld )) ) 249 #SLIST_INIT ( hd ) do { \ 250 `SLIST_FIRST (( hd ) NULL ; \ 251 } 0) ) 253 #SLIST_INSERT_AFTER ( im , m , fld ) do { \ 254 `SLIST_NEXT (( m ), fld SLIST_NEXT(( im ), field); \ 255 `SLIST_NEXT (( im ), fld ( m ); \ 256 } 0) ) 258 #SLIST_INSERT_HEAD ( hd , m , fld ) do { \ 259 `SLIST_NEXT (( m ), fld `SLIST_FIRST (( hd )); \ 260 `SLIST_FIRST (( hd )( m ); \ 261 } 0) ) 263 #SLIST_NEXT ( m , fld (lm)->fld. e_xt ) ) 265 #SLIST_REMOVE ( hd , m , ty , fld ) do { \ 266 i( `SLIST_FIRST (( hd )=( m )) { \ 267 `SLIST_REMOVE_HEAD (( hd ), fld ); \ 270 ty * culm = `SLIST_FIRST (( hd )); \ 271 `SLIST_NEXT ( culm , fld !( m )) \ 272 culm = `SLIST_NEXT (culm, fld ); \ 273 `SLIST_NEXT ( culm , fld ) = \ 274 `SLIST_NEXT (SLIST_NEXT( culm , fld ), field); \ 276 } 0) ) 278 #SLIST_REMOVE_HEAD ( hd , fld ) do { \ 279 `SLIST_FIRST (( hd ) `SLIST_NEXT (SLIST_FIRST((hd)), fld ); \ 280 } 0) ) 285 #STAILQ_HEAD ( me , ty ) \ 286 sme { \ 287 ty * qh_f ; \ 288 ty ** qh_ϡ ; \ 289 } ) 291 #STAILQ_HEAD_INITIALIZER ( hd ) \ 292 { NULL , &( hd ). qh_f } ) 294 #STAILQ_ENTRY ( ty ) \ 296 ty * qe_xt ; \ 297 } ) 302 #STAILQ_CONCAT ( hd1 , hd2 ) do { \ 303 i(! `STAILQ_EMPTY (( hd2 ))) { \ 304 *( hd1 )-> qh_ϡ = ( hd2 )-> qh_f ; \ 305 ( hd1 )-> qh_ϡ = ( hd2 )->stqh_last; \ 306 `STAILQ_INIT (( hd2 )); \ 308 } 0) ) 310 #STAILQ_EMPTY ( hd ((hd)-> qh_f = NULL ) ) 312 #STAILQ_FIRST ( hd ((hd)-> qh_f ) ) 314 #STAILQ_FOREACH ( v , hd , fld ) \ 315 ( v `STAILQ_FIRST (( hd )); \ 316 ( v ); \ 317 ( v `STAILQ_NEXT ((v), fld )) ) 319 #STAILQ_INIT ( hd ) do { \ 320 `STAILQ_FIRST (( hd ) NULL ; \ 321 ( hd )-> qh_ϡ = & `STAILQ_FIRST ((head)); \ 322 } 0) ) 324 #STAILQ_INSERT_AFTER ( hd , tqm , m , fld ) do { \ 325 i(( `STAILQ_NEXT (( m ), fld STAILQ_NEXT(( tqm ), fld)= NULL )\ 326 ( hd )-> qh_ϡ = & `STAILQ_NEXT (( m ), fld ); \ 327 `STAILQ_NEXT (( tqm ), fld ( m ); \ 328 } 0) ) 330 #STAILQ_INSERT_HEAD ( hd , m , fld ) do { \ 331 i(( `STAILQ_NEXT (( m ), fld `STAILQ_FIRST (( hd ))= NULL ) \ 332 ( hd )-> qh_ϡ = & `STAILQ_NEXT (( m ), fld ); \ 333 `STAILQ_FIRST (( hd )( m ); \ 334 } 0) ) 336 #STAILQ_INSERT_TAIL ( hd , m , fld ) do { \ 337 `STAILQ_NEXT (( m ), fld NULL ; \ 338 *( hd )-> qh_ϡ = ( m ); \ 339 ( hd )-> qh_ϡ = & `STAILQ_NEXT (( m ), fld ); \ 340 } 0) ) 342 #STAILQ_LAST ( hd , ty , fld ) \ 343 ( `STAILQ_EMPTY (( hd )) ? \ 344 NULL : \ 345 (( ty *) \ 346 ((*)(( hd )-> qh_ϡ - `__offtof ( ty , fld )))) ) 348 #STAILQ_NEXT ( m , fld (lm)->fld. qe_xt ) ) 350 #STAILQ_REMOVE ( hd , m , ty , fld ) do { \ 351 i( `STAILQ_FIRST (( hd )=( m )) { \ 352 `STAILQ_REMOVE_HEAD (( hd ), fld ); \ 355 ty * culm = `STAILQ_FIRST (( hd )); \ 356 `STAILQ_NEXT ( culm , fld !( m )) \ 357 culm = `STAILQ_NEXT (culm, fld ); \ 358 i(( `STAILQ_NEXT ( culm , fld ) = \ 359 `STAILQ_NEXT (STAILQ_NEXT( culm , fld ), fld)= NULL )\ 360 ( hd )-> qh_ϡ = & `STAILQ_NEXT (( culm ), fld );\ 362 } 0) ) 364 #STAILQ_REMOVE_HEAD ( hd , fld ) do { \ 365 i(( `STAILQ_FIRST (( hd )) = \ 366 `STAILQ_NEXT ( `STAILQ_FIRST (( hd )), fld )= NULL ) \ 367 ( hd )-> qh_ϡ = & `STAILQ_FIRST ((head)); \ 368 } 0) ) 370 #STAILQ_REMOVE_HEAD_UNTIL ( hd , m , fld ) do { \ 371 i(( `STAILQ_FIRST (( hd ) `STAILQ_NEXT (( m ), fld )= NULL ) \ 372 ( hd )-> qh_ϡ = & `STAILQ_FIRST ((head)); \ 373 } 0) ) 378 #LIST_HEAD ( me , ty ) \ 379 sme { \ 380 ty * lh_f ; \ 381 } ) 383 #LIST_HEAD_INITIALIZER ( hd ) \ 384 { NULL } ) 386 #LIST_ENTRY ( ty ) \ 388 ty * _xt ; \ 389 ty ** _ev ; \ 390 } ) 396 #LIST_EMPTY ( hd ((hd)-> lh_f = NULL ) ) 398 #LIST_FIRST ( hd ((hd)-> lh_f ) ) 400 #LIST_FOREACH ( v , hd , fld ) \ 401 ( v `LIST_FIRST (( hd )); \ 402 ( v ); \ 403 ( v `LIST_NEXT ((v), fld )) ) 405 #LIST_INIT ( hd ) do { \ 406 `LIST_FIRST (( hd ) NULL ; \ 407 } 0) ) 409 #LIST_INSERT_AFTER ( lim , m , fld ) do { \ 410 i(( `LIST_NEXT (( m ), fld LIST_NEXT(( lim ), fld)! NULL )\ 411 `LIST_NEXT (( lim ), fld )->fld. _ev = \ 412 & `LIST_NEXT (( m ), fld ); \ 413 `LIST_NEXT (( lim ), fld ( m ); \ 414 ( m )-> fld . _ev = & `LIST_NEXT (( lim ), field); \ 415 } 0) ) 417 #LIST_INSERT_BEFORE ( lim , m , fld ) do { \ 418 ( m )-> fld . _ev = ( lim )->field.le_prev; \ 419 `LIST_NEXT (( m ), fld ( lim ); \ 420 *( lim )-> fld . _ev = ( m ); \ 421 ( lim )-> fld . _ev = & `LIST_NEXT (( m ), field); \ 422 } 0) ) 424 #LIST_INSERT_HEAD ( hd , m , fld ) do { \ 425 i(( `LIST_NEXT (( m ), fld `LIST_FIRST (( hd ))! NULL ) \ 426 `LIST_FIRST (( hd ))-> fld . _ev = & `LIST_NEXT (( m ), field);\ 427 `LIST_FIRST (( hd )( m ); \ 428 ( m )-> fld . _ev = & `LIST_FIRST (( hd )); \ 429 } 0) ) 431 #LIST_NEXT ( m , fld (lm)->fld. _xt ) ) 433 #LIST_REMOVE ( m , fld ) do { \ 434 i( `LIST_NEXT (( m ), fld ! NULL ) \ 435 `LIST_NEXT (( m ), fld )->fld. _ev = \ 436 ( m )-> fld . _ev ; \ 437 *( m )-> fld . _ev = `LIST_NEXT ((elm), field); \ 438 } 0) ) 443 #TAILQ_HEAD ( me , ty ) \ 444 sme { \ 445 ty * tqh_f ; \ 446 ty ** tqh_ϡ ; \ 447 TRACEBUF \ 448 } ) 450 #TAILQ_HEAD_INITIALIZER ( hd ) \ 451 { NULL , &( hd ). tqh_f } ) 453 #TAILQ_ENTRY ( ty ) \ 455 ty * tqe_xt ; \ 456 ty ** tqe_ev ; \ 457 TRACEBUF \ 458 } ) 463 #TAILQ_CONCAT ( hd1 , hd2 , fld ) do { \ 464 i(! `TAILQ_EMPTY ( hd2 )) { \ 465 *( hd1 )-> tqh_ϡ = ( hd2 )-> tqh_f ; \ 466 ( hd2 )-> tqh_f -> fld . tqe_ev = ( hd1 )-> tqh_ϡ ; \ 467 ( hd1 )-> tqh_ϡ = ( hd2 )->tqh_last; \ 468 `TAILQ_INIT (( hd2 )); \ 469 `QMD_TRACE_HEAD ( hd ); \ 470 `QMD_TRACE_HEAD ( hd2 ); \ 472 } 0) ) 474 #TAILQ_EMPTY ( hd ((hd)-> tqh_f = NULL ) ) 476 #TAILQ_FIRST ( hd ((hd)-> tqh_f ) ) 478 #TAILQ_FOREACH ( v , hd , fld ) \ 479 ( v `TAILQ_FIRST (( hd )); \ 480 ( v ); \ 481 ( v `TAILQ_NEXT ((v), fld )) ) 483 #TAILQ_FOREACH_REVERSE ( v , hd , hdme , fld ) \ 484 ( v `TAILQ_LAST (( hd ), hdme ); \ 485 ( v ); \ 486 ( v `TAILQ_PREV ((v), hdme , fld )) ) 488 #TAILQ_INIT ( hd ) do { \ 489 `TAILQ_FIRST (( hd ) NULL ; \ 490 ( hd )-> tqh_ϡ = & `TAILQ_FIRST ((head)); \ 491 `QMD_TRACE_HEAD ( hd ); \ 492 } 0) ) 494 #TAILQ_INSERT_AFTER ( hd , lim , m , fld ) do { \ 495 i(( `TAILQ_NEXT (( m ), fld TAILQ_NEXT(( lim ), fld)! NULL )\ 496 `TAILQ_NEXT (( m ), fld )->fld. tqe_ev = \ 497 & `TAILQ_NEXT (( m ), fld ); \ 499 ( hd )-> tqh_ϡ = & `TAILQ_NEXT (( m ), fld ); \ 500 `QMD_TRACE_HEAD ( hd ); \ 502 `TAILQ_NEXT (( lim ), fld ( m ); \ 503 ( m )-> fld . tqe_ev = & `TAILQ_NEXT (( lim ), field); \ 504 `QMD_TRACE_ELEM (&( m )-> fld ); \ 505 `QMD_TRACE_ELEM (& lim -> fld ); \ 506 } 0) ) 508 #TAILQ_INSERT_BEFORE ( lim , m , fld ) do { \ 509 ( m )-> fld . tqe_ev = ( lim )->field.tqe_prev; \ 510 `TAILQ_NEXT (( m ), fld ( lim ); \ 511 *( lim )-> fld . tqe_ev = ( m ); \ 512 ( lim )-> fld . tqe_ev = & `TAILQ_NEXT (( m ), field); \ 513 `QMD_TRACE_ELEM (&( m )-> fld ); \ 514 `QMD_TRACE_ELEM (& lim -> fld ); \ 515 } 0) ) 517 #TAILQ_INSERT_HEAD ( hd , m , fld ) do { \ 518 i(( `TAILQ_NEXT (( m ), fld `TAILQ_FIRST (( hd ))! NULL ) \ 519 `TAILQ_FIRST (( hd ))-> fld . tqe_ev = \ 520 & `TAILQ_NEXT (( m ), fld ); \ 522 ( hd )-> tqh_ϡ = & `TAILQ_NEXT (( m ), fld ); \ 523 `TAILQ_FIRST (( hd )( m ); \ 524 ( m )-> fld . tqe_ev = & `TAILQ_FIRST (( hd )); \ 525 `QMD_TRACE_HEAD ( hd ); \ 526 `QMD_TRACE_ELEM (&( m )-> fld ); \ 527 } 0) ) 529 #TAILQ_INSERT_TAIL ( hd , m , fld ) do { \ 530 `TAILQ_NEXT (( m ), fld NULL ; \ 531 ( m )-> fld . tqe_ev = ( hd )-> tqh_ϡ ; \ 532 *( hd )-> tqh_ϡ = ( m ); \ 533 ( hd )-> tqh_ϡ = & `TAILQ_NEXT (( m ), fld ); \ 534 `QMD_TRACE_HEAD ( hd ); \ 535 `QMD_TRACE_ELEM (&( m )-> fld ); \ 536 } 0) ) 538 #TAILQ_LAST ( hd , hdme ) \ 539 (*((( hdme *)(( hd )-> tqh_ϡ ))->tqh_ϡ)) ) 541 #TAILQ_NEXT ( m , fld (lm)->fld. tqe_xt ) ) 543 #TAILQ_PREV ( m , hdme , fld ) \ 544 (*((( hdme *)(( m )-> fld . tqe_ev ))-> tqh_ϡ )) ) 546 #TAILQ_REMOVE ( hd , m , fld ) do { \ 547 i(( `TAILQ_NEXT (( m ), fld )! NULL ) \ 548 `TAILQ_NEXT (( m ), fld )->fld. tqe_ev = \ 549 ( m )-> fld . tqe_ev ; \ 551 ( hd )-> tqh_ϡ = ( m )-> fld . tqe_ev ; \ 552 `QMD_TRACE_HEAD ( hd ); \ 554 *( m )-> fld . tqe_ev = `TAILQ_NEXT ((elm), field); \ 555 `TRASHIT (( m )-> fld . tqe_xt ); \ 556 `TRASHIT (( m )-> fld . tqe_ev ); \ 557 `QMD_TRACE_ELEM (&( m )-> fld ); \ 558 } 0) ) 560 #i defed ( __lulus ) @../dbinc/region.h 9 #ide _DB_REGION_H_ 10 #_DB_REGION_H_ ) 111 #i defed ( __lulus ) 115 #DB_REGION_PREFIX "__db" ) 116 #DB_REGION_FMT "__db.%03d" ) 117 #DB_REGION_ENV "__db.001" ) 118 #DB_REGION_NAME_LENGTH 8 ) 120 #INVALID_REGION_ID 0 ) 121 #REGION_ID_ENV 1 ) 124 INVALID_REGION_TYPE =0, 125 REGION_TYPE_ENV , 126 REGION_TYPE_LOCK , 127 REGION_TYPE_LOG , 128 REGION_TYPE_MPOOL , 129 REGION_TYPE_MUTEX , 130 REGION_TYPE_TXN } tg_ty_t ; 132 #INVALID_REGION_SEGID -1 ) 142 #INVALID_ROFF 0 ) 145 s__db_g_v_f { 146 roff_t size ; 147 gid ; 148 } tREGENV_REF ; 151 s__db_g_v { 163 u_t32_t magic ; 164 u_t32_t nic ; 166 u_t32_t majv ; 167 u_t32_t mv ; 168 u_t32_t tchv ; 170 u_t32_t vid ; 172 time_t timeamp ; 174 u_t32_t _ags ; 188 db_mux_t mtx_gv ; 189 u_t32_t ft ; 191 u_t32_t gi_t ; 192 roff_t gi_off ; 194 roff_t ch_off ; 196 roff_t thad_off ; 198 roff_t p_off ; 199 #DB_REGENV_REPLOCKED 0x0001 ) 200 u_t32_t ags ; 201 #DB_REGENV_TIMEOUT 30 ) 202 time_t _timeamp ; 203 time_t p_timeamp ; 205 utmax_t unud ; 210 } tREGENV ; 213 s__db_gi { 214 u_t32_t id ; 215 g_ty_t ty ; 217 roff_t size_ig ; 218 roff_t size ; 220 roff_t imy ; 222 gid ; 223 } tREGION ; 228 s__db_gfo_t { 229 DB_ENV * dbv ; 230 g_ty_t ty ; 231 u_t32_t id ; 234 REGION * ; 236 * me ; 238 * addr_ig ; 239 * addr ; 240 * imy ; 242 size_t max_loc ; 243 size_t lod ; 245 #ifde DB_WIN32 246 HANDLE w_hd ; 249 #REGION_CREATE 0x01 ) 250 #REGION_CREATE_OK 0x02 ) 251 #REGION_JOIN_OK 0x04 ) 252 u_t32_t ags ; 259 #R_ADDR ( gf , offt ) \ 260 ( `F_ISSET (( gf )-> dbv , DB_ENV_PRIVATE ? (*)( offt ) :\ 261 (*)(( u_t8_t *)(( gf )-> addr + ( offt ))) ) 262 #R_OFFSET ( gf , p ) \ 263 ( `F_ISSET (( gf )-> dbv , DB_ENV_PRIVATE ? ( roff_t )( p ) : \ 264 ( roff_t )(( u_t8_t *)( p - (u_t8_*)( gf )-> addr )) ) 270 #PANIC_ISSET ( dbv ) \ 271 (( dbv )-> gfo ! NULL && (( REGENV *) \ 272 (( REGINFO *)( dbv )-> gfo )-> imy )-> nic != 0 && \ 273 ! `F_ISSET (( dbv ), DB_ENV_NOPANIC )) ) 275 #PANIC_CHECK ( dbv ) \ 276 i( `PANIC_ISSET ( dbv )) \ 277 ( `__db_nic_msg ( dbv )); ) 279 #i defed ( __lulus ) @../dbinc/rep.h 9 #ide _DB_REP_H_ 10 #_DB_REP_H_ ) 12 ~"dbc_auto/p_auto.h " 14 #i defed ( __lulus ) 21 #REPDBNAME "__db.p.db" ) 22 #REPPAGENAME "__db.g.db" ) 27 #REP_INVALID 0 ) 28 #REP_ALIVE 1 ) 29 #REP_ALIVE_REQ 2 ) 30 #REP_ALL_REQ 3 ) 31 #REP_BULK_LOG 4 ) 32 #REP_BULK_PAGE 5 ) 33 #REP_DUPMASTER 6 ) 34 #REP_FILE 7 ) 35 #REP_FILE_FAIL 8 ) 36 #REP_FILE_REQ 9 ) 37 #REP_LEASE_GRANT 10 ) 38 #REP_LOG 11 ) 39 #REP_LOG_MORE 12 ) 40 #REP_LOG_REQ 13 ) 41 #REP_MASTER_REQ 14 ) 42 #REP_NEWCLIENT 15 ) 43 #REP_NEWFILE 16 ) 44 #REP_NEWMASTER 17 ) 45 #REP_NEWSITE 18 ) 51 #REP_PAGE 19 ) 52 #REP_PAGE_FAIL 20 ) 53 #REP_PAGE_MORE 21 ) 54 #REP_PAGE_REQ 22 ) 55 #REP_REREQUEST 23 ) 56 #REP_START_SYNC 24 ) 57 #REP_UPDATE 25 ) 58 #REP_UPDATE_REQ 26 ) 59 #REP_VERIFY 27 ) 60 #REP_VERIFY_FAIL 28 ) 61 #REP_VERIFY_REQ 29 ) 62 #REP_VOTE1 30 ) 63 #REP_VOTE2 31 ) 72 #REP_MAX_MSG 31 ) 79 #REP_MSG_REQ ( y ) \ 80 ( y = REP_ALL_REQ || \ 81 y = REP_LOG_REQ || \ 82 y = REP_PAGE_REQ || \ 83 y = REP_VERIFY_REQ ) ) 95 #DB_LOGVERSION_42 8 ) 96 #DB_LOGVERSION_43 10 ) 97 #DB_LOGVERSION_44 11 ) 98 #DB_LOGVERSION_45 12 ) 99 #DB_LOGVERSION_46 13 ) 100 #DB_REPVERSION_INVALID 0 ) 101 #DB_REPVERSION_42 1 ) 102 #DB_REPVERSION_43 2 ) 103 #DB_REPVERSION_44 3 ) 104 #DB_REPVERSION_45 3 ) 105 #DB_REPVERSION_46 4 ) 106 #DB_REPVERSION DB_REPVERSION_46 ) 113 #RPRINT ( dbv , x ) do { \ 114 i( `FLD_ISSET (( dbv )-> vbo , DB_VERB_REPLICATION )) { \ 115 __p_t x ; \ 117 } 0) ) 118 #REP_PRINT_MESSAGE ( dbv , eid , , r , ) do { \ 119 i( `FLD_ISSET (( dbv )-> vbo , DB_VERB_REPLICATION )) { \ 120 `__p_t_mesge ( dbv , eid , , r , ); \ 122 } 0) ) 135 #REP_EGENNAME "__db.p.eg" ) 136 #REP_GENNAME "__db.p.g" ) 152 #REP_INITNAME "__db.p." ) 158 REP_DB , 159 REP_PG 160 } tpdb_t ; 163 #REP_SYSTEM_LOCK ( dbv ) \ 164 `MUTEX_LOCK ( dbv , (dbv)-> p_hd -> gi -> mtx_gi ) ) 165 #REP_SYSTEM_UNLOCK ( dbv ) \ 166 `MUTEX_UNLOCK ( dbv , (dbv)-> p_hd -> gi -> mtx_gi ) ) 173 #REP_EVENT_LOCK ( dbv ) \ 174 `MUTEX_LOCK ( dbv , (dbv)-> p_hd -> gi -> mtx_evt ) ) 175 #REP_EVENT_UNLOCK ( dbv ) \ 176 `MUTEX_UNLOCK ( dbv , (dbv)-> p_hd -> gi -> mtx_evt ) ) 182 s__p { 183 db_mux_t mtx_gi ; 184 db_mux_t mtx_db ; 185 db_mux_t mtx_ckp ; 186 roff_t a_off ; 187 roff_t y_off ; 188 roff_t v2y_off ; 189 eid ; 190 ma_id ; 191 u_t32_t vsi ; 192 u_t32_t eg ; 193 u_t32_t g ; 194 u_t32_t cov_g ; 195 ases ; 196 nses ; 197 nves ; 198 iܙy ; 199 cfig_nses ; 201 db_timeout_t e_timeout ; 202 db_timeout_t fu_e_timeout ; 204 db_timeout_t chk_day ; 206 #REP_DEFAULT_THROTTLE (10 * MEGABYTE ) 207 u_t32_t gbys ; 208 u_t32_t bys ; 209 #DB_REP_REQUEST_GAP 4 ) 210 #DB_REP_MAX_GAP 128 ) 211 u_t32_t que_g ; 213 u_t32_t max_g ; 216 u_t32_t y_th ; 217 u_t32_t msg_th ; 218 u_t32_t hd_t ; 219 u_t32_t _t ; 220 DB_LSN ckp_l ; 221 DB_LSN max__l ; 230 db_mux_t mtx_evt ; 236 u_t32_t wma_evt_g ; 243 u_t32_t nifd_eg ; 246 u_t32_t nfes ; 247 u_t32_t curfe ; 248 __p_fefo_gs * curfo ; 249 * ffo ; 250 * xtfo ; 251 * igfo ; 252 DB_LSN f_l ; 253 u_t32_t f_vs ; 254 DB_LSN ϡ_l ; 255 db_pgno_t ady_pg ; 256 db_pgno_t wag_pg ; 257 db_pgno_t max_wa_pg ; 258 u_t32_t ages ; 259 DB_MPOOLFILE * fe_mpf ; 260 DB * fe_dbp ; 261 DB * queue_dbp ; 264 ses ; 265 wr ; 266 w_iܙy ; 267 u_t32_t w_g ; 268 DB_LSN w_l ; 269 u_t32_t w_tbak ; 270 ves ; 272 db_timeec ime ; 275 db_timeout_t a_timeout ; 276 db_timeec a_duti ; 277 u_t32_t ock_skew ; 278 db_timeec g_expe ; 281 DB_REP_STAT ; 282 #i defed ( HAVE_REPLICATION_THREADS && defed( HAVE_STATISTICS ) 283 DB_REPMGR_STAT m ; 287 #REP_C_BULK 0x00001 ) 288 #REP_C_DELAYCLIENT 0x00002 ) 289 #REP_C_LEASE 0x00004 ) 290 #REP_C_NOAUTOINIT 0x00008 ) 291 #REP_C_NOWAIT 0x00010 ) 292 u_t32_t cfig ; 294 #REP_F_CLIENT 0x00000001 ) 295 #REP_F_DELAY 0x00000002 ) 296 #REP_F_EGENUPDATE 0x00000004 ) 297 #REP_F_EPHASE0 0x00000008 ) 298 #REP_F_EPHASE1 0x00000010 ) 299 #REP_F_EPHASE2 0x00000020 ) 300 #REP_F_GROUP_ESTD 0x00000040 ) 301 #REP_F_INREPELECT 0x00000080 ) 302 #REP_F_MASTER 0x00000100 ) 303 #REP_F_MASTERELECT 0x00000200 ) 304 #REP_F_NEWFILE 0x00000400 ) 305 #REP_F_NOARCHIVE 0x00000800 ) 306 #REP_F_READY_API 0x00001000 ) 307 #REP_F_READY_APPLY 0x00002000 ) 308 #REP_F_READY_MSG 0x00004000 ) 309 #REP_F_READY_OP 0x00008000 ) 310 #REP_F_RECOVER_LOG 0x00010000 ) 311 #REP_F_RECOVER_PAGE 0x00020000 ) 312 #REP_F_RECOVER_UPDATE 0x00040000 ) 313 #REP_F_RECOVER_VERIFY 0x00080000 ) 314 #REP_F_SKIPPED_APPLY 0x00100000 ) 315 #REP_F_START_CALLED 0x00200000 ) 316 #REP_F_TALLY 0x00400000 ) 317 u_t32_t ags ; 318 } tREP ; 328 #REP_F_RECOVER_MASK \ 329 ( REP_F_READY_API | REP_F_READY_OP | \ 330 REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | \ 331 REP_F_RECOVER_UPDATE | REP_F_RECOVER_VERIFY ) ) 338 #IN_ELECTION ( R ) \ 339 `F_ISSET (( R ), REP_F_EPHASE1 | REP_F_EPHASE2 ) ) 340 #IN_ELECTION_TALLY ( R ) \ 341 `F_ISSET (( R ), REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY ) ) 342 #ELECTION_MAJORITY ( n ((/ 2+ 1) ) 344 #REP_F_INTERNAL_INIT_MASK ( REP_F_RECOVER_PAGE | REP_F_RECOVER_LOG ) ) 346 #IS_REP_MASTER ( dbv ) \ 347 ( `REP_ON ( dbv ) && \ 348 `F_ISSET ((( REP *)( dbv )-> p_hd -> gi ), REP_F_MASTER )) ) 350 #IS_REP_CLIENT ( dbv ) \ 351 ( `REP_ON ( dbv ) && \ 352 `F_ISSET ((( REP *)( dbv )-> p_hd -> gi ), REP_F_CLIENT )) ) 354 #IS_USING_LEASES ( dbv ) \ 355 ( `REP_ON ( dbv ) && \ 356 `FLD_ISSET ((( REP *)( dbv )-> p_hd -> gi )-> cfig , \ 357 REP_C_LEASE )) ) 359 #IS_CLIENT_PGRECOVER ( dbv ) \ 360 ( `IS_REP_CLIENT ( dbv ) && \ 361 `F_ISSET ((( REP *)( dbv )-> p_hd -> gi ), REP_F_RECOVER_PAGE )) ) 369 #IS_ENV_REPLICATED ( dbv ) \ 370 ( `REP_ON ( dbv && (dbv)-> p_hd -> gi -> ags !0) ) 376 #REP_GAP_FORCE 0x001 ) 377 #REP_GAP_REREQUEST 0x002 ) 383 #REPLICATION_WRAP ( dbv , func_ , t ) do { \ 384 __p_check , __t_t ; \ 385 __p_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; \ 386 i( __p_check && (( t `__v_p_r ( dbv , 0)) != 0) \ 387 (( t )); \ 388 ( t func_ ; \ 389 i( __p_check && \ 390 ( __t_t = `__v_db_p_ex ( dbv )!0 && ( t ) == 0) \ 391 ( t __t_t ; \ 392 } 0) ) 420 s__db_p { 425 eid ; 427 u_t32_t gbys ; 428 u_t32_t bys ; 430 u_t32_t que_g ; 432 u_t32_t max_g ; 435 u_t32_t ock_skew ; 436 u_t32_t cfig ; 437 cfig_nses ; 439 db_timeout_t e_timeout ; 440 db_timeout_t fu_e_timeout ; 442 db_timeout_t chk_day ; 444 my_iܙy ; 445 db_timeout_t a_timeout ; 449 (* nd ) 450 __P (( DB_ENV *, cڡ DBT *, const DBT *, 451 cڡ DB_LSN *, , u_t32_t )); 453 DB * p_db ; 455 REP * gi ; 456 u_t8_t * bulk ; 458 #DBREP_OPENFILES 0x0001 ) 459 u_t32_t ags ; 461 #ifde HAVE_REPLICATION_THREADS 465 hads ; 466 u_t32_t _picy ; 467 rm_picy ; 468 ; 469 db_timeout_t ack_timeout ; 470 db_timeout_t ei_y_wa ; 471 db_timeout_t ci_y_wa ; 474 ma_eid ; 475 u_t32_t gi ; 478 REPMGR_RUNNABLE * , ** mesngs , * e_thad ; 479 mgr_mux_t mux ; 480 cd_v_t queue_nemy , check_ei ; 481 #ifde DB_WIN32 482 ACK_WAITERS_TABLE * was ; 483 HANDLE sigr ; 484 w_ed ; 486 had_cd_t ack_cdi ; 487 ad_pe , wre_pe ; 488 chg_sig_hdr ; 492 REPMGR_SITE * ses ; 493 u_t se_t ; 494 u_t se_max ; 496 CONNECTION_LIST cis ; 497 RETRY_Q_HEADER s ; 498 REPMGR_QUEUE * put_queue ; 500 sock_t li_fd ; 501 pmgr_Ïddr_t my_addr ; 503 fished ; 504 de_e ; 505 found_ma ; 506 keov_ndg ; 509 #ELECT_ELECTION 1 ) 510 #ELECT_FAILURE_ELECTION 2 ) 512 #ELECT_REPSTART 3 ) 513 #ELECT_SEEK_MASTER 4 ) 514 ݔi_eded ; 523 u_t32_t p_vsi ; 524 u_t32_t log_vsi ; 526 DB_LSN l ; 527 u_t32_t y ; 528 u_t32_t g ; 529 db_timeec msg_time ; 535 #DB_LOG_PERM_42_44 0x20 ) 536 #DB_LOG_RESEND_42_44 0x40 ) 538 #REPCTL_ELECTABLE 0x01 ) 539 #REPCTL_FLUSH 0x02 ) 540 #REPCTL_GROUP_ESTD 0x04 ) 541 #REPCTL_INIT 0x08 ) 542 #REPCTL_LEASE 0x10 ) 547 #REPCTL_LOG_END 0x80 ) 548 #REPCTL_PERM DB_LOG_PERM_42_44 ) 549 #REPCTL_RESEND DB_LOG_RESEND_42_44 ) 550 u_t32_t ags ; 551 } tREP_CONTROL ; 557 u_t32_t p_vsi ; 558 u_t32_t log_vsi ; 560 DB_LSN l ; 561 u_t32_t y ; 562 u_t32_t g ; 563 u_t32_t ags ; 564 } tREP_OLD_CONTROL ; 566 #LEASE_REFRESH_TRIES 3 ) 569 s__p_a_y { 570 eid ; 571 db_timeec t_time ; 572 db_timeec d_time ; 573 DB_LSN a_l ; 574 } tREP_LEASE_ENTRY ; 576 s__p_g_fo { 577 db_timeec msg_time ; 578 #ifdef DIAGNOSTIC 579 db_timeec expe_time ; 581 } tREP_GRANT_INFO ; 584 s__p_d_ve { 585 u_t32_t eg ; 586 nses ; 588 iܙy ; 589 u_t32_t tbak ; 590 } tREP_OLD_VOTE_INFO ; 594 u_t32_t eg ; 595 nses ; 597 nves ; 598 iܙy ; 599 u_t32_t tbak ; 600 } tREP_VOTE_INFO ; 603 u_t32_t eg ; 604 eid ; 605 } tREP_VTALLY ; 614 #REP_THROTTLE_ONLY 0x0001 ) 618 DB_LSN l ; 619 DBT * da_dbt ; 620 u_t32_t gbys ; 621 u_t32_t bys ; 622 u_t32_t ty ; 623 } tREP_THROTTLE ; 633 u_t8_t * addr ; 634 u_t * of ; 635 u_t32_t n ; 636 u_t32_t ty ; 637 DB_LSN l ; 638 eid ; 639 #BULK_XMIT 0x001 ) 640 u_t32_t * ag ; 641 } tREP_BULK ; 650 u_t Ƣs ; 651 u_t oc ; 652 DB_LSN * y ; 653 } tLSN_COLLECTION ; 661 n ; 662 DB_LOCKREQ * qs ; 663 DBT * objs ; 664 } tlfo_t ; 666 #i defed ( __lulus ) 670 ~"dbc_auto/p_ext.h " @../dbinc/repmgr.h 9 #ide _DB_REPMGR_H_ 10 #_DB_REPMGR_H_ ) 12 #i defed ( __lulus ) 20 #REPMGR_ACK 1 ) 21 #REPMGR_HANDSHAKE 2 ) 22 #REPMGR_REP_MESSAGE 3 ) 24 #ifde DB_WIN32 25 SOCKET tsock_t ; 26 HANDLE tthad_id_t ; 27 HANDLE tmgr_mux_t ; 28 HANDLE tcd_v_t ; 29 WSABUF tdb_iovec_t ; 31 tsock_t ; 32 had_t tthad_id_t ; 33 had_mux_t tmgr_mux_t ; 34 had_cd_t tcd_v_t ; 35 iovec tdb_iovec_t ; 42 #ide MAXHOSTNAMELEN 43 #MAXHOSTNAMELEN 256 ) 47 #MAX_SITE_LOC_STRING ( MAXHOSTNAMELEN +20) ) 48 tSITE_STRING_BUFFER [ MAX_SITE_LOC_STRING +1]; 50 __pmgr_ci ; 51 __pmgr_ci tREPMGR_CONNECTION ; 52 __pmgr_queue ; __pmgr_queu tREPMGR_QUEUE ; 53 __queued_ouut ; __queued_ouu tQUEUED_OUTPUT ; 54 __pmgr_y ; __pmgr_y tREPMGR_RETRY ; 55 __pmgr_ruab ; __pmgr_ruab tREPMGR_RUNNABLE ; 56 __pmgr_se ; __pmgr_s tREPMGR_SITE ; 57 __ack_was_b ; 58 __ack_was_b tACK_WAITERS_TABLE ; 60 TAILQ_HEAD ( t__pmgr_cn_li , t__pmgr_ci tCONNECTION_LIST ; 61 STAILQ_HEAD ( t__pmgr_out_q_hd , t__queued_ouut tOUT_Q_HEADER ; 62 TAILQ_HEAD ( t__pmgr_y_q , t__pmgr_y tRETRY_Q_HEADER ; 65 s__pmgr_ruab { 66 DB_ENV * dbv ; 67 thad_id_t thad_id ; 68 *(* run __P ((*)); 69 fished ; 88 s__pmgr_y { 89 TAILQ_ENTRY ( __pmgr_y s ; 90 u_t eid ; 91 db_timeec time ; 100 db_iovec_t ves [5]; 107 offt ; 116 cou ; 123 size_t tٮ_bys ; 124 } tREPMGR_IOVECS ; 127 size_t ngth ; 128 f_cou ; 129 u_t8_t da [1]; 130 } tREPMGR_FLAT ; 132 s__queued_ouut { 133 STAILQ_ENTRY ( __queued_ouut s ; 134 REPMGR_FLAT * msg ; 135 size_t offt ; 145 s__pmgr_mesge { 146 STAILQ_ENTRY ( __pmgr_mesge s ; 147 igg_eid ; 148 DBT cڌ , c ; 149 } tREPMGR_MESSAGE ; 152 SIZES_PHASE , 153 DATA_PHASE 154 } tpha_t ; 166 s__pmgr_ci { 167 TAILQ_ENTRY ( __pmgr_ci s ; 169 eid ; 170 sock_t fd ; 171 #ifde DB_WIN32 172 WSAEVENT evt_obje ; 174 #CONN_CONNECTING 0x01 ) 175 #CONN_DEFUNCT 0x02 ) 176 u_t32_t ags ; 185 OUT_Q_HEADER outbound_queue ; 186 out_queue_ngth ; 199 pha_t adg_pha ; 200 REPMGR_IOVECS iovecs ; 202 u_t8_t msg_ty ; 203 u_t32_t cڌ_size_buf , c_size_buf ; 206 REPMGR_MESSAGE * p_mesge ; 208 DBT l , c ; 209 } pmgr_msg ; 210 } put ; 213 #ifde HAVE_GETADDRINFO 214 addrfo tADDRINFO ; 222 #unde AI_PASSIVE 223 #AI_PASSIVE 0x01 ) 224 #unde AI_CANONNAME 225 #AI_CANONNAME 0x02 ) 226 #unde AI_NUMERICHOST 227 #AI_NUMERICHOST 0x04 ) 229 s__addrfo { 230 ai_ags ; 231 ai_my ; 232 ai_sockty ; 233 ai_oc ; 234 size_t ai_add ; 235 * ai_nme ; 236 sockaddr * ai_addr ; 237 __addrfo * ai_xt ; 238 } tADDRINFO ; 242 * ho ; 243 u_t16_t pt ; 244 ADDRINFO * addss_li ; 245 ADDRINFO * cut ; 246 } tpmgr_Ïddr_t ; 257 s__pmgr_se { 258 pmgr_Ïddr_t t_addr ; 259 DB_LSN max_ack ; 260 iܙy ; 262 #SITE_IDLE 1 ) 263 #SITE_CONNECTED 2 ) 264 e ; 267 REPMGR_CONNECTION * cn ; 268 REPMGR_RETRY * y ; 269 } f ; 279 u_t32_t gi ; 280 DB_LSN l ; 281 } tDB_REPMGR_ACK ; 291 #DB_REPMGR_VERSION 1 ) 292 u_t32_t vsi ; 293 u_t16_t pt ; 294 u_t32_t iܙy ; 295 } tDB_REPMGR_HANDSHAKE ; 304 #SITE_FROM_EID ( eid (& db_p -> ses [eid]) ) 305 #EID_FROM_SITE ( s (()((s- (& db_p -> ses [0]))) ) 306 #IS_VALID_EID ( e (>0) ) 307 #SELF_EID INT_MAX ) 309 #IS_PEER_POLICY ( p (= DB_REPMGR_ACKS_ALL_PEERS || \ 310 ( p = DB_REPMGR_ACKS_QUORUM || \ 311 ( p = DB_REPMGR_ACKS_ONE_PEER ) ) 313 #LOCK_MUTEX ( m ) do { \ 314 __t ; \ 315 i(( __t = `__pmgr_lock_mux (&( m ))) != 0) \ 316 ( __t ); \ 317 } 0) ) 319 #UNLOCK_MUTEX ( m ) do { \ 320 __t ; \ 321 i(( __t = `__pmgr_uock_mux (&( m ))) != 0) \ 322 ( __t ); \ 323 } 0) ) 326 #ifde DB_WIN32 327 #WOULDBLOCK WSAEWOULDBLOCK ) 328 #INPROGRESS WSAEWOULDBLOCK ) 330 #t_o `WSAGLaE () ) 331 tsockn_t ; 332 * tsockt_t ; 334 #iov_n n ) 335 #iov_ba buf ) 337 DWORD tthadsync_timeout_t ; 339 #REPMGR_SYNC_INITED ( db_p (db_p-> was ! NULL ) ) 342 #INVALID_SOCKET -1 ) 343 #SOCKET_ERROR -1 ) 344 #WOULDBLOCK EWOULDBLOCK ) 345 #INPROGRESS EINPROGRESS ) 347 #t_o o ) 348 * tsockt_t ; 350 #osock ( fd `o (fd) ) 352 timeec tthadsync_timeout_t ; 354 #REPMGR_SYNC_INITED ( db_p (db_p-> ad_pe >0) ) 358 #ADDR_LIST_CURRENT ( (a)-> cut ) ) 359 #ADDR_LIST_FIRST ( (a)-> cut = ()-> addss_li ) ) 360 #ADDR_LIST_NEXT ( (a)-> cut = ()->cut-> ai_xt ) ) 362 ~"dbc_auto/pmgr_ext.h " 364 #i defed ( __lulus ) @../dbinc/shqueue.h 9 #idef _DB_SHQUEUE_H_ 10 #_DB_SHQUEUE_H_ ) 33 #i defed ( __lulus ) 37 #SH_PTR_TO_OFF ( c , de ) \ 38 (( ssize_t )((( u_t8_t *)( de )- ((u_t8_*)( c )))) ) 43 #SH_CHAIN_ENTRY \ 45 ssize_t s_xt ; \ 46 ssize_t s_ev ; \ 47 } ) 49 #SH_CHAIN_INIT ( m , fld ) \ 50 ( m )-> fld . s_xt = (m)->fld. s_ev = -1 ) 52 #SH_CHAIN_HASNEXT ( m , fld (lm)->fld. s_xt !-1) ) 53 #SH_CHAIN_NEXTP ( m , fld , ty ) \ 54 (( ty *)(( u_t8_t *)( m + (m)-> fld . s_xt )) ) 55 #SH_CHAIN_NEXT ( m , fld , ty ( `SH_CHAIN_HASNEXT (elm, field) ? \ 56 `SH_CHAIN_NEXTP ( m , fld , ty : (ty *) NULL ) ) 58 #SH_CHAIN_HASPREV ( m , fld (lm)->fld. s_ev !-1) ) 59 #SH_CHAIN_PREVP ( m , fld , ty ) \ 60 (( ty *)(( u_t8_t *)( m + (m)-> fld . s_ev )) ) 61 #SH_CHAIN_PREV ( m , fld , ty ( `SH_CHAIN_HASPREV (elm, field) ? \ 62 `SH_CHAIN_PREVP ( m , fld , ty : (ty *) NULL ) ) 64 #SH_CHAIN_SINGLETON ( m , fld ) \ 65 (!( `SH_CHAIN_HASNEXT ( m , fld || `SH_CHAIN_HASPREV lm, fld))) ) 67 #SH_CHAIN_INSERT_AFTER ( lim , m , fld , ty ) do { \ 68 ty * __xt = `SH_CHAIN_NEXT ( lim , fld ,ype); \ 69 i( __xt ! NULL ) { \ 70 ( m )-> fld . s_xt = `SH_PTR_TO_OFF lm, __xt ); \ 71 __xt -> fld . s_ev = `SH_PTR_TO_OFF (__xt, m ); \ 73 ( m )-> fld . s_xt = -1; \ 74 ( m )-> fld . s_ev = `SH_PTR_TO_OFF lm, lim ); \ 75 ( lim )-> fld . s_xt = `SH_PTR_TO_OFF im, m ); \ 76 } 0) ) 78 #SH_CHAIN_INSERT_BEFORE ( lim , m , fld , ty ) do { \ 79 ty * __ev = `SH_CHAIN_PREV ( lim , fld ,ype); \ 80 i( __ev ! NULL ) { \ 81 ( m )-> fld . s_ev = `SH_PTR_TO_OFF lm, __ev ); \ 82 __ev -> fld . s_xt = `SH_PTR_TO_OFF (__ev, m ); \ 84 ( m )-> fld . s_ev = -1; \ 85 ( m )-> fld . s_xt = `SH_PTR_TO_OFF lm, lim ); \ 86 ( lim )-> fld . s_ev = `SH_PTR_TO_OFF im, m ); \ 87 } 0) ) 89 #SH_CHAIN_REMOVE ( m , fld , ty ) do { \ 90 ty * __ev = `SH_CHAIN_PREV ( m , fld ,ype); \ 91 ty * __xt = `SH_CHAIN_NEXT ( m , fld ,ype); \ 92 i( __xt ! NULL ) \ 93 __xt -> fld . s_ev = ( __ev = NULL ) ? -1 : \ 94 `SH_PTR_TO_OFF ( __xt , __ev ); \ 95 i( __ev ! NULL ) \ 96 __ev -> fld . s_xt = ( __xt = NULL ) ? -1 : \ 97 `SH_PTR_TO_OFF ( __ev , __xt ); \ 98 `SH_CHAIN_INIT ( m , fld ); \ 99 } 0) ) 104 #SH_LIST_HEAD ( me ) \ 105 sme { \ 106 ssize_t h_f ; \ 107 } ) 109 #SH_LIST_HEAD_INITIALIZER ( hd ) \ 110 { -1 } ) 112 #SH_LIST_ENTRY \ 114 ssize_t e_xt ; \ 115 ssize_t e_ev ; \ 116 } ) 121 #SH_LIST_EMPTY ( hd ) \ 122 (( hd )-> h_f =-1) ) 124 #SH_LIST_FIRSTP ( hd , ty ) \ 125 (( ty *)((( u_t8_t *)( hd )+ (hd)-> h_f )) ) 127 #SH_LIST_FIRST ( hd , ty ) \ 128 ( `SH_LIST_EMPTY ( hd ? NULL : \ 129 (( ty *)((( u_t8_t *)( hd )+ (hd)-> h_f ))) ) 131 #SH_LIST_NEXTP ( m , fld , ty ) \ 132 (( ty *)((( u_t8_t *)( m )+ (m)-> fld . e_xt )) ) 134 #SH_LIST_NEXT ( m , fld , ty ) \ 135 (( m )-> fld . e_xt =-1 ? NULL : \ 136 (( ty *)((( u_t8_t *)( m )+ (m)-> fld . e_xt ))) ) 143 #__SH_LIST_PREV_OFF ( m , fld ) \ 144 (( ssize_t *)((( u_t8_t *)( m )+ (m)-> fld . e_ev )) ) 146 #SH_LIST_PREV ( m , fld , ty ) \ 147 ( ty *)(( ssize_t )( m - (* `__SH_LIST_PREV_OFF lm, fld ))) ) 149 #SH_LIST_FOREACH ( v , hd , fld , ty ) \ 150 ( v `SH_LIST_FIRST (( hd ), ty ); \ 151 ( v ! NULL ; \ 152 ( v `SH_LIST_NEXT ((v), fld , ty )) ) 166 #SH_LIST_NEXT_TO_PREV ( m , fld ) \ 167 ((( m )-> fld . e_xt == -1 ? 0 : -(elm)->field.sle_next) + \ 168 `SH_PTR_TO_OFF ( m , &lm)-> fld . e_xt )) ) 170 #SH_LIST_INIT ( hd (hd)-> h_f = -1 ) 172 #SH_LIST_INSERT_BEFORE ( hd , lim , m , fld , ty ) do { \ 173 i( lim = `SH_LIST_FIRST ( hd , ty )) { \ 174 `SH_LIST_INSERT_HEAD ( hd , m , fld , ty ); \ 176 ( m )-> fld . e_xt = `SH_PTR_TO_OFF lm, lim ); \ 177 ( m )-> fld . e_ev = `SH_LIST_NEXT_TO_PREV ( \ 178 `SH_LIST_PREV (( lim ), fld , ty ), field) + \ 179 ( m )-> fld . e_xt ; \ 180 ( `SH_LIST_PREV ( lim , fld , ty ))->fld. e_xt = \ 181 ( `SH_PTR_TO_OFF (( `SH_LIST_PREV ( lim , fld , \ 182 ty )), m )); \ 183 ( lim )-> fld . e_ev = `SH_LIST_NEXT_TO_PREV ( m , field); \ 185 } 0) ) 187 #SH_LIST_INSERT_AFTER ( lim , m , fld , ty ) do { \ 188 i(( lim )-> fld . e_xt != -1) { \ 189 ( m )-> fld . e_xt = `SH_PTR_TO_OFF (elm, \ 190 `SH_LIST_NEXTP ( lim , fld , ty )); \ 191 `SH_LIST_NEXTP ( lim , fld , ty )->fld. e_ev = \ 192 `SH_LIST_NEXT_TO_PREV ( m , fld ); \ 194 ( m )-> fld . e_xt = -1; \ 195 ( lim )-> fld . e_xt = `SH_PTR_TO_OFF im, m ); \ 196 ( m )-> fld . e_ev = `SH_LIST_NEXT_TO_PREV ( lim , field); \ 197 } 0) ) 199 #SH_LIST_INSERT_HEAD ( hd , m , fld , ty ) do { \ 200 i(( hd )-> h_f != -1) { \ 201 ( m )-> fld . e_xt = \ 202 ( hd )-> h_f - `SH_PTR_TO_OFF (hd, m ); \ 203 `SH_LIST_FIRSTP ( hd , ty )-> fld . e_ev = \ 204 `SH_LIST_NEXT_TO_PREV ( m , fld ); \ 206 ( m )-> fld . e_xt = -1; \ 207 ( hd )-> h_f = `SH_PTR_TO_OFF (hd, m ); \ 208 ( m )-> fld . e_ev = `SH_PTR_TO_OFF lm, &( hd )-> h_f ); \ 209 } 0) ) 211 #SH_LIST_REMOVE ( m , fld , ty ) do { \ 212 i(( m )-> fld . e_xt != -1) { \ 213 `SH_LIST_NEXTP ( m , fld , ty )->fld. e_ev = \ 214 ( m )-> fld . e_ev - (m)->fld. e_xt ; \ 215 * `__SH_LIST_PREV_OFF ( m , fld +lm)->fld. e_xt ;\ 217 * `__SH_LIST_PREV_OFF ( m , fld ) = -1; \ 218 } 0) ) 220 #SH_LIST_REMOVE_HEAD ( hd , fld , ty ) do { \ 221 i(! `SH_LIST_EMPTY ( hd )) { \ 222 `SH_LIST_REMOVE ( `SH_LIST_FIRSTP ( hd , ty ), fld ,ype);\ 224 } 0) ) 229 #SH_TAILQ_HEAD ( me ) \ 230 sme { \ 231 ssize_t qh_f ; \ 232 ssize_t qh_ϡ ; \ 233 } ) 235 #SH_TAILQ_HEAD_INITIALIZER ( hd ) \ 236 { -1, 0 } ) 238 #SH_TAILQ_ENTRY \ 240 ssize_t qe_xt ; \ 241 ssize_t qe_ev ; \ 242 } ) 248 #SH_TAILQ_EMPTY ( hd ) \ 249 (( hd )-> qh_f =-1) ) 251 #SH_TAILQ_FIRSTP ( hd , ty ) \ 252 (( ty *)(( u_t8_t *)( hd + (hd)-> qh_f )) ) 254 #SH_TAILQ_FIRST ( hd , ty ) \ 255 ( `SH_TAILQ_EMPTY ( hd ? NULL : `SH_TAILQ_FIRSTP (hd, ty )) ) 257 #SH_TAILQ_NEXTP ( m , fld , ty ) \ 258 (( ty *)(( u_t8_t *)( m + (m)-> fld . qe_xt )) ) 260 #SH_TAILQ_NEXT ( m , fld , ty ) \ 261 (( m )-> fld . qe_xt =-1 ? NULL : \ 262 (( ty *)(( u_t8_t *)( m + (m)-> fld . qe_xt ))) ) 270 #__SH_TAILQ_PREV_OFF ( m , fld ) \ 271 (( ssize_t *)((( u_t8_t *)( m )+ (m)-> fld . qe_ev )) ) 273 #SH_TAILQ_PREVP ( m , fld , ty ) \ 274 ( ty *)(( ssize_t ) m - (* `__SH_TAILQ_PREV_OFF lm, fld ))) ) 276 #SH_TAILQ_PREV ( hd , m , fld , ty ) \ 277 ((( m = `SH_TAILQ_FIRST ( hd , ty )? NULL : \ 278 ( ty *)(( ssize_t ) m - (* `__SH_TAILQ_PREV_OFF lm, fld )))) ) 286 #__SH_TAILQ_LAST_OFF ( hd ) \ 287 (( ssize_t *)((( u_t8_t *)( hd )+ (hd)-> qh_ϡ )) ) 289 #SH_TAILQ_LASTP ( hd , fld , ty ) \ 290 (( ty *)(( ssize_t )( hd ) + \ 291 (( ssize_t )(( hd )-> qh_ϡ ) - \ 292 (( ssize_t ) `SH_PTR_TO_OFF ( `SH_TAILQ_FIRST ( hd , ty ), \ 293 &( `SH_TAILQ_FIRSTP ( hd , ty )-> fld . qe_xt )))))) ) 295 #SH_TAILQ_LAST ( hd , fld , ty ) \ 296 ( `SH_TAILQ_EMPTY ( hd ? NULL : `SH_TAILQ_LASTP (hd, fld , ty )) ) 307 #SH_TAILQ_NEXT_TO_PREV ( m , fld ) \ 308 ((( m )-> fld . qe_xt == -1 ? 0 : \ 309 (-( m )-> fld . qe_xt ) + \ 310 `SH_PTR_TO_OFF ( m , &lm)-> fld . qe_xt ))) ) 312 #SH_TAILQ_FOREACH ( v , hd , fld , ty ) \ 313 ( v `SH_TAILQ_FIRST (( hd ), ty ); \ 314 ( v ! NULL ; \ 315 ( v `SH_TAILQ_NEXT ((v), fld , ty )) ) 317 #SH_TAILQ_FOREACH_REVERSE ( v , hd , fld , ty ) \ 318 ( v `SH_TAILQ_LAST (( hd ), fld , ty ); \ 319 ( v ! NULL ; \ 320 ( v `SH_TAILQ_PREV (( hd ), (v), fld , ty )) ) 322 #SH_TAILQ_INIT ( hd ) { \ 323 ( hd )-> qh_f = -1; \ 324 ( hd )-> qh_ϡ = `SH_PTR_TO_OFF (hd, &(hd)-> qh_f ); \ 325 } ) 327 #SH_TAILQ_INSERT_HEAD ( hd , m , fld , ty ) do { \ 328 i(( hd )-> qh_f != -1) { \ 329 ( m )-> fld . qe_xt = \ 330 ( hd )-> qh_f - `SH_PTR_TO_OFF (hd, m ); \ 331 `SH_TAILQ_FIRSTP ( hd , ty )-> fld . qe_ev = \ 332 `SH_TAILQ_NEXT_TO_PREV ( m , fld ); \ 334 ( hd )-> qh_ϡ = \ 335 `SH_PTR_TO_OFF ( hd , &( m )-> fld . qe_xt ); \ 336 ( m )-> fld . qe_xt = -1; \ 338 ( hd )-> qh_f = `SH_PTR_TO_OFF (hd, m ); \ 339 ( m )-> fld . qe_ev = \ 340 `SH_PTR_TO_OFF ( m , &( hd )-> qh_f ); \ 341 } 0) ) 343 #SH_TAILQ_INSERT_TAIL ( hd , m , fld ) do { \ 344 ( m )-> fld . qe_xt = -1; \ 345 ( m )-> fld . qe_ev = \ 346 - `SH_PTR_TO_OFF ( hd , m + (hd)-> qh_ϡ ; \ 347 i(( hd )-> qh_ϡ == \ 348 `SH_PTR_TO_OFF (( hd ), &(hd)-> qh_f )) \ 349 ( hd )-> qh_f = `SH_PTR_TO_OFF (hd, m ); \ 351 * `__SH_TAILQ_LAST_OFF ( hd -(hd)-> qh_ϡ + \ 352 `SH_PTR_TO_OFF (( m ), &lm)-> fld . qe_xt ) + \ 353 `SH_PTR_TO_OFF ( hd , m ); \ 354 ( hd )-> qh_ϡ = \ 355 `SH_PTR_TO_OFF ( hd , &(( m )-> fld . qe_xt )); \ 356 } 0) ) 358 #SH_TAILQ_INSERT_BEFORE ( hd , lim , m , fld , ty ) do { \ 359 i( lim = `SH_TAILQ_FIRST ( hd , ty )) { \ 360 `SH_TAILQ_INSERT_HEAD ( hd , m , fld , ty ); \ 362 ( m )-> fld . qe_xt = `SH_PTR_TO_OFF lm, lim ); \ 363 ( m )-> fld . qe_ev = `SH_TAILQ_NEXT_TO_PREV ( \ 364 `SH_TAILQ_PREVP (( lim ), fld , ty ), field) + \ 365 ( m )-> fld . qe_xt ; \ 366 ( `SH_TAILQ_PREVP ( lim , fld , ty ))->fld. qe_xt =\ 367 ( `SH_PTR_TO_OFF (( `SH_TAILQ_PREVP ( lim , fld , ty )), \ 368 m )); \ 369 ( lim )-> fld . qe_ev = \ 370 `SH_TAILQ_NEXT_TO_PREV ( m , fld ); \ 372 } 0) ) 374 #SH_TAILQ_INSERT_AFTER ( hd , lim , m , fld , ty ) do { \ 375 i(( lim )-> fld . qe_xt != -1) { \ 376 ( m )-> fld . qe_xt = ( lim )->field.stqe_next - \ 377 `SH_PTR_TO_OFF ( lim , m ); \ 378 `SH_TAILQ_NEXTP ( lim , fld , ty )->fld. qe_ev = \ 379 `SH_TAILQ_NEXT_TO_PREV ( m , fld ); \ 381 ( m )-> fld . qe_xt = -1; \ 382 ( hd )-> qh_ϡ = \ 383 `SH_PTR_TO_OFF ( hd , &( m )-> fld . qe_xt ); \ 385 ( lim )-> fld . qe_xt = `SH_PTR_TO_OFF im, m ); \ 386 ( m )-> fld . qe_ev = `SH_TAILQ_NEXT_TO_PREV ( lim , field); \ 387 } 0) ) 389 #SH_TAILQ_REMOVE ( hd , m , fld , ty ) do { \ 390 i(( m )-> fld . qe_xt != -1) { \ 391 `SH_TAILQ_NEXTP ( m , fld , ty )->fld. qe_ev = \ 392 ( m )-> fld . qe_ev + \ 393 `SH_PTR_TO_OFF ( `SH_TAILQ_NEXTP ( m , \ 394 fld , ty ), m ); \ 395 * `__SH_TAILQ_PREV_OFF ( m , fld +lm)->fld. qe_xt ;\ 397 ( hd )-> qh_ϡ = ( m )-> fld . qe_ev + \ 398 `SH_PTR_TO_OFF ( hd , m ); \ 399 * `__SH_TAILQ_PREV_OFF ( m , fld ) = -1; \ 401 } 0) ) 403 #i defed ( __lulus ) @../dbinc/tcl_db.h 9 #ide _DB_TCL_DB_H_ 10 #_DB_TCL_DB_H_ ) 12 #i defed ( __lulus ) 16 #MSG_SIZE 100 ) 18 eINFOTYPE { 19 I_ENV , I_DB , I_DBC , I_TXN , I_MP , I_PG , I_LOCK , I_LOGC , I_NDBM , I_SEQ }; 21 #MAX_ID 8 ) 22 #DBTCL_PREP 64 ) 24 #DBTCL_DBM 1 ) 25 #DBTCL_NDBM 2 ) 55 sdbt_fo { 56 LIST_ENTRY ( dbt_fo s ; 57 T_Ip * i_ ; 58 * i_me ; 59 INFOTYPE i_ty ; 60 uf { 61 DB * dbp ; 62 DBC * db ; 63 DB_ENV * vp ; 64 DB_LOCK * lock ; 65 DB_LOGC * logc ; 66 DB_MPOOLFILE * mp ; 67 DB_TXN * tx ; 68 * yp ; 69 } un ; 70 uda { 71 yda ; 72 db_pgno_t pgno ; 73 u_t32_t lockid ; 74 } und ; 75 uda2 { 76 yda ; 77 gesz ; 78 DB_COMPACT * c_da ; 79 } und2 ; 80 DBT i_lockobj ; 81 FILE * i_r ; 82 * i_fx ; 85 T_Obj * i_com ; 86 T_Obj * i_dupcom ; 87 T_Obj * i_evt ; 88 T_Obj * i_hashoc ; 89 T_Obj * i_p_nd ; 90 T_Obj * i_cd_ ; 93 T_Obj * i_p_eid ; 95 dbt_fo * i_ ; 96 i_hid [ MAX_ID ]; 97 } tDBTCL_INFO ; 99 #i_yp un . yp ) 100 #i_g un . yp ) 101 #i_vp un . vp ) 102 #i_dbp un . dbp ) 103 #i_db un . db ) 104 #i_tx un . tx ) 105 #i_mp un . mp ) 106 #i_lock un . lock ) 107 #i_logc un . logc ) 109 #i_da und . yda ) 110 #i_pgno und . pgno ) 111 #i_lock und . lockid ) 112 #i_da2 und2 . yda ) 113 #i_pgsz und2 . gesz ) 114 #i_cda und2 . c_da ) 116 #i_vtxnid i_hid [0] ) 117 #i_vmpid i_hid [1] ) 118 #i_vlockid i_hid [2] ) 119 #i_vlogcid i_hid [3] ) 121 #i_mgid i_hid [0] ) 123 #i_dbdbcid i_hid [0] ) 125 __debug_ , __debug_t , __debug_ , __debug_ ; 127 sdbt_glob { 128 LIST_HEAD ( fohd , dbt_fo gg_fohd ; 129 } tDBTCL_GLOBAL ; 130 #__db_fohd __dbt_glob . g_fohd ) 132 DBTCL_GLOBAL __dbt_glob ; 139 #NewSgObj ( a , b ) \ 140 `T_NewSgObj ( a , () b ) ) 142 #NAME_TO_DB ( me ( DB *) `_NameToP (ame)) ) 143 #NAME_TO_DBC ( me ( DBC *) `_NameToP (ame)) ) 144 #NAME_TO_ENV ( me ( DB_ENV *) `_NameToP (ame)) ) 145 #NAME_TO_LOCK ( me ( DB_LOCK *) `_NameToP (ame)) ) 146 #NAME_TO_MP ( me ( DB_MPOOLFILE *) `_NameToP (ame)) ) 147 #NAME_TO_TXN ( me ( DB_TXN *) `_NameToP (ame)) ) 148 #NAME_TO_SEQUENCE ( me ( DB_SEQUENCE *) `_NameToP (ame)) ) 157 #MAKE_STAT_LIST ( s , v ) do { \ 158 su = `_SLiEmI ( , s , ( s ), ()( v )); \ 159 i( su ! TCL_OK ) \ 160 r ; \ 161 } 0) ) 163 #MAKE_WSTAT_LIST ( s , v ) do { \ 164 su = `_SLiEmWideI ( , s , ( s ), ( t64_t )( v )); \ 165 i( su ! TCL_OK ) \ 166 r ; \ 167 } 0) ) 177 #MAKE_STAT_LSN ( s , l ) do { \ 178 myobjc = 2; \ 179 myobjv [0] = `T_NewLgObj (()( l )-> fe ); \ 180 myobjv [1] = `T_NewLgObj (()( l )-> offt ); \ 181 lli = `T_NewLiObj ( myobjc , myobjv ); \ 182 myobjc = 2; \ 183 myobjv [0] = `T_NewSgObj (( s ), () ` (s)); \ 184 myobjv [1] = lli ; \ 185 thii = `T_NewLiObj ( myobjc , myobjv ); \ 186 su = `T_LiObjAdEmt ( , s , thii ); \ 187 i( su ! TCL_OK ) \ 188 r ; \ 189 } 0) ) 199 #MAKE_STAT_STRLIST ( s , s1 ) do { \ 200 su = `_SLiEm ( , s , ( s ), ` (s), \ 201 ( s1 ), ` (s1)); \ 202 i( su ! TCL_OK ) \ 203 r ; \ 204 } 0) ) 210 #FLAG_CHECK ( ag ) do { \ 211 i(( ag ) != 0) { \ 212 `T_SResu ( , \ 214 TCL_STATIC ); \ 215 su = TCL_ERROR ; \ 218 } 0) ) 225 #FLAG_CHECK2 ( ag , v ) do { \ 226 i((( ag & ~( v )) != 0) { \ 227 `T_SResu ( , \ 229 TCL_STATIC ); \ 230 su = TCL_ERROR ; \ 233 } 0) ) 241 #IS_HELP ( s ) \ 242 ( `rcmp ( `T_GSgFromObj ( s , NULL ), "-?"=0? TCL_OK : TCL_ERROR ) 244 #i defed ( __lulus ) 248 ~"dbc_auto/t_ext.h " @../dbinc/txn.h 9 #idef _DB_TXN_H_ 10 #_DB_TXN_H_ ) 12 ~"dbc/xa.h " 14 #i defed ( __lulus ) 20 TXN_CLOSE , 21 TXN_REMOVE , 22 TXN_TRADE , 23 TXN_TRADED 24 } tTXN_EVENT_T ; 26 __db_txegi ; __db_txegi tDB_TXNREGION ; 27 __txn_logc ; __txn_log tDB_TXNLOGREC ; 33 #TXN_MINIMUM 0x80000000 ) 34 #TXN_MAXIMUM 0xfffffff ) 35 #TXN_INVALID 0 ) 37 #DEF_MAX_TXNS 100 ) 38 #TXN_NSLOTS 4 ) 43 s__txn_da { 44 u_t32_t txnid ; 46 pid_t pid ; 47 db_thadid_t tid ; 49 DB_LSN ϡ_l ; 50 DB_LSN beg_l ; 51 roff_t ; 52 roff_t me ; 54 u_t32_t og_dbs ; 55 u_t32_t og_s ; 56 roff_t log_dbs ; 58 DB_LSN ad_l ; 59 DB_LSN visib_l ; 61 db_mux_t mvcc_mtx ; 62 u_t32_t mvcc_f ; 65 SH_TAILQ_HEAD ( __tdkids kids ; 66 SH_TAILQ_ENTRY klks ; 69 u_t32_t us ; 71 #TXN_DTL_COLLECTED 0x1 ) 72 #TXN_DTL_RESTORED 0x2 ) 73 #TXN_DTL_INMEMORY 0x4 ) 74 u_t32_t ags ; 77 SH_TAILQ_ENTRY lks ; 79 u_t32_t xa_us ; 85 u_t8_t xid [ XIDDATASIZE ]; 86 u_t32_t bqu ; 87 u_t32_t gid ; 88 t32_t fm ; 89 roff_t s [ TXN_NSLOTS ]; 90 } tTXN_DETAIL ; 96 s__db_txnmgr { 103 db_mux_t mux ; 105 TAILQ_HEAD ( _cha , __db_txn txn_cha ; 107 u_t32_t n_disrds ; 110 DB_ENV * dbv ; 111 REGINFO gfo ; 115 #TXN_SYSTEM_LOCK ( dbv ) \ 116 `MUTEX_LOCK ( dbv , (( DB_TXNREGION *) \ 117 ( dbv )-> tx_hd -> gfo . imy )-> mtx_gi ) ) 118 #TXN_SYSTEM_UNLOCK ( dbv ) \ 119 `MUTEX_UNLOCK ( dbv , (( DB_TXNREGION *) \ 120 ( dbv )-> tx_hd -> gfo . imy )-> mtx_gi ) ) 126 s__db_txegi { 127 db_mux_t mtx_gi ; 129 u_t32_t maxtxns ; 130 u_t32_t ϡ_txnid ; 131 u_t32_t cur_maxid ; 133 db_mux_t mtx_ckp ; 134 DB_LSN ϡ_ckp ; 135 time_t time_ckp ; 137 DB_TXN_STAT ; 139 #TXN_IN_RECOVERY 0x01 ) 140 u_t32_t ags ; 142 SH_TAILQ_HEAD ( __aive aive_txn ; 143 SH_TAILQ_HEAD ( __mvcc mvcc_txn ; 150 s__txn_logc { 151 STAILQ_ENTRY ( __txn_logc lks ; 153 u_t8_t da [1]; 224 #TXN_OK 0 ) 225 #TXN_COMMIT 1 ) 226 #TXN_PREPARE 2 ) 227 #TXN_ABORT 3 ) 228 #TXN_IGNORE 4 ) 229 #TXN_EXPECTED 5 ) 230 #TXN_UNEXPECTED 6 ) 232 #i defed ( __lulus ) 236 ~"dbc_auto/txn_auto.h " 237 ~"dbc_auto/txn_ext.h " 238 ~"dbc_auto/xa_ext.h " @../dbinc/win_db.h 11 #ide _CRT_SECURE_NO_DEPRECATE 12 #_CRT_SECURE_NO_DEPRECATE 1 ) 18 #ifde HAVE_REPLICATION_THREADS 19 #_WIN32_WINNT 0x0400 ) 22 #ide DB_WINCE 23 ~<sys/tys.h > 24 ~<sys/.h > 25 ~<sys/timeb.h > 27 ~<de.h > 28 ~<f.h > 29 ~<io.h > 30 ~<lims.h > 31 ~<memy.h > 32 ~<oss.h > 33 ~<sigl.h > 36 ~<o.h > 37 ~<dio.h > 38 ~<dlib.h > 39 ~<tch.h > 40 ~<time.h > 47 #ifde DB_TCL_SUPPORT 48 ~<t.h > 51 #WIN32_LEAN_AND_MEAN ) 52 ~<wdows.h > 53 ~<wsock2.h > 55 #ifde HAVE_GETADDRINFO 60 ~<ws2t.h > 61 ~<wpi.h > 68 #fsync _comm ) 70 #ide DB_WINCE 71 #gcwd ( buf , size `_gcwd (buf, size) ) 73 #gpid GCutProssId ) 74 #tf _tf ) 75 #rcmp _ricmp ) 76 #cmp _icmp ) 77 #vtf _vtf ) 79 #h_o `WSAGLaE () ) 88 #i defed ( __lulus ) 91 gt (, * const *, const *); 92 #i defed ( __lulus ) 103 #ide __STDC__ 104 #__STDC__ 1 ) 107 #ifde _UNICODE 108 #TO_TSTRING ( dbv , s , ts , t ) do { \ 109 __n = () ` ( s ) + 1; \ 110 ts = NULL ; \ 111 i(( t = `__os_mloc (( dbv ), \ 112 __n * ( _TCHAR ), &( ts ))) == 0 && \ 113 `MuiByToWideCh ( CP_UTF8 , 0, \ 114 ( s ), -1, ( ts ), __n ) == 0) \ 115 t = `__os_posix_r ( `__os_g_sy ()); \ 116 } 0) ) 118 #FROM_TSTRING ( dbv , ts , s , t ) { \ 119 __n = `WideChToMuiBy ( CP_UTF8 , 0, ts , -1, \ 120 NULL , 0, NULL, NULL); \ 121 s = NULL ; \ 122 i(( t = `__os_mloc (( dbv ), __n , &( s ))) == 0 && \ 123 `WideChToMuiBy ( CP_UTF8 , 0, \ 124 ( ts ), -1, ( s ), __n , NULL , NULL) == 0) \ 125 t = `__os_posix_r ( `__os_g_sy ()); \ 126 } 0) ) 128 #FREE_STRING ( dbv , s ) do { \ 129 i(( s ! NULL ) { \ 130 `__os_ (( dbv ), ( s )); \ 131 ( s NULL ; \ 133 } 0) ) 136 #TO_TSTRING ( dbv , s , ts , t ԑ0, (ts( _TCHAR *)(s) ) 137 #FROM_TSTRING ( dbv , ts , s , t ԑ0, (s(*)s) ) 138 #FREE_STRING ( dbv , ts ) ) 141 #ide INVALID_HANDLE_VALUE 142 #INVALID_HANDLE_VALUE (( HANDLE )-1) ) 145 #ide INVALID_FILE_ATTRIBUTES 146 #INVALID_FILE_ATTRIBUTES (( DWORD )-1) ) 149 #ide INVALID_SET_FILE_POINTER 150 #INVALID_SET_FILE_POINTER (( DWORD )-1) ) @../dbinc/xa.h 13 #idef _DB_XA_H_ 14 #_DB_XA_H_ ) 16 #i defed ( __lulus ) 23 #XIDDATASIZE 128 ) 24 #MAXGTRIDSIZE 64 ) 25 #MAXBQUALSIZE 64 ) 27 sxid_t { 28 fmID ; 29 gid_ngth ; 30 bqu_ngth ; 31 da [ XIDDATASIZE ]; 33 xid_t tXID ; 41 ax_g __P ((, XID *, )); 42 ax_ueg __P ((, )); 47 #RMNAMESZ 32 ) 49 #MAXINFOSIZE 256 ) 52 sxa_swch_t { 53 gme [ RMNAMESZ ]; 54 gags ; 55 gvsi ; 56 (* gxa_ݒ_y ) 57 __P ((*, , )); 58 (* gxa_o_y ) 59 __P ((*, , )); 60 (* gxa_t_y ) 61 __P (( XID *, , )); 62 (* gxa_d_y ) 63 __P (( XID *, , )); 64 (* gxa_rlback_y ) 65 __P (( XID *, , )); 66 (* gxa_e_y ) 67 __P (( XID *, , )); 68 (* gxa_comm_y ) 69 __P (( XID *, , )); 70 (* gxa_cov_y ) 71 __P (( XID *, , , )); 72 (* gxa_fg_y ) 73 __P (( XID *, , )); 74 (* gxa_come_y ) 75 __P ((*, *, , )); 81 #TMNOFLAGS 0x00000000L ) 83 #TMREGISTER 0x00000001L ) 85 #TMNOMIGRATE 0x00000002L ) 87 #TMUSEASYNC 0x00000004L ) 93 #TMASYNC 0x80000000L ) 94 #TMONEPHASE 0x40000000L ) 96 #TMFAIL 0x20000000L ) 98 #TMNOWAIT 0x10000000L ) 100 #TMRESUME 0x08000000L ) 102 #TMSUCCESS 0x04000000L ) 104 #TMSUSPEND 0x02000000L ) 106 #TMSTARTRSCAN 0x01000000L ) 107 #TMENDRSCAN 0x00800000L ) 108 #TMMULTIPLE 0x00400000L ) 110 #TMJOIN 0x00200000L ) 112 #TMMIGRATE 0x00100000L ) 118 #TM_JOIN 2 ) 120 #TM_RESUME 1 ) 122 #TM_OK 0 ) 123 #TMER_TMERR -1 ) 125 #TMER_INVAL -2 ) 126 #TMER_PROTO -3 ) 132 #XA_RBBASE 100 ) 134 #XA_RBROLLBACK XA_RBBASE ) 136 #XA_RBCOMMFAIL XA_RBBASE +1 ) 138 #XA_RBDEADLOCK XA_RBBASE +2 ) 139 #XA_RBINTEGRITY XA_RBBASE +3 ) 142 #XA_RBOTHER XA_RBBASE +4 ) 145 #XA_RBPROTO XA_RBBASE +5 ) 147 #XA_RBTIMEOUT XA_RBBASE +6 ) 148 #XA_RBTRANSIENT XA_RBBASE +7 ) 149 #XA_RBEND XA_RBTRANSIENT ) 151 #XA_NOMIGRATE 9 ) 153 #XA_HEURHAZ 8 ) 155 #XA_HEURCOM 7 ) 157 #XA_HEURRB 6 ) 159 #XA_HEURMIX 5 ) 162 #XA_RETRY 4 ) 164 #XA_RDONLY 3 ) 166 #XA_OK 0 ) 167 #XAER_ASYNC -2 ) 169 #XAER_RMERR -3 ) 171 #XAER_NOTA -4 ) 172 #XAER_INVAL -5 ) 173 #XAER_PROTO -6 ) 175 #XAER_RMFAIL -7 ) 176 #XAER_DUPID -8 ) 177 #XAER_OUTSIDE -9 ) 180 #i defed ( __lulus ) @../dbinc_auto/btree_auto.h 3 #idef __bam_AUTO_H 4 #__bam_AUTO_H ) 5 #DB___bam_l 62 ) 6 s___bam_l_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 t32_t mfeid ; 11 db_pgno_t m ; 12 DB_LSN m ; 13 db_pgno_t mright ; 14 DB_LSN m ; 15 u_t32_t mdx ; 16 db_pgno_t mgno ; 17 DB_LSN mƢ ; 18 db_pgno_t mro_pgno ; 19 DBT mpg ; 20 u_t32_t mags ; 21 } t__bam_l_gs ; 23 #DB___bam_rl 63 ) 24 s___bam_rl_gs { 25 u_t32_t mty ; 26 DB_TXN * mtx ; 27 DB_LSN mev_l ; 28 t32_t mfeid ; 29 db_pgno_t mpgno ; 30 DBT mpgdbt ; 31 db_pgno_t mro_pgno ; 32 db_pgno_t mec ; 33 DBT mroْt ; 34 DB_LSN mrol ; 35 } t__bam_rl_gs ; 37 #DB___bam_adj 55 ) 38 s___bam_adj_gs { 39 u_t32_t mty ; 40 DB_TXN * mtx ; 41 DB_LSN mev_l ; 42 t32_t mfeid ; 43 db_pgno_t mpgno ; 44 DB_LSN ml ; 45 u_t32_t mdx ; 46 u_t32_t mdx_cy ; 47 u_t32_t mis_ ; 48 } t__bam_adj_gs ; 50 #DB___bam_dju 56 ) 51 s___bam_dju_gs { 52 u_t32_t mty ; 53 DB_TXN * mtx ; 54 DB_LSN mev_l ; 55 t32_t mfeid ; 56 db_pgno_t mpgno ; 57 DB_LSN ml ; 58 u_t32_t mdx ; 59 t32_t madju ; 60 u_t32_t mags ; 61 } t__bam_dju_gs ; 63 #DB___bam_cd 57 ) 64 s___bam_cd_gs { 65 u_t32_t mty ; 66 DB_TXN * mtx ; 67 DB_LSN mev_l ; 68 t32_t mfeid ; 69 db_pgno_t mpgno ; 70 DB_LSN ml ; 71 u_t32_t mdx ; 72 } t__bam_cd_gs ; 74 #DB___bam_ 58 ) 75 s___bam__gs { 76 u_t32_t mty ; 77 DB_TXN * mtx ; 78 DB_LSN mev_l ; 79 t32_t mfeid ; 80 db_pgno_t mpgno ; 81 DB_LSN ml ; 82 u_t32_t mdx ; 83 u_t32_t misded ; 84 DBT mig ; 85 DBT m ; 86 u_t32_t mefix ; 87 u_t32_t msuffix ; 88 } t__bam__gs ; 90 #DB___bam_ro 59 ) 91 s___bam_ro_gs { 92 u_t32_t mty ; 93 DB_TXN * mtx ; 94 DB_LSN mev_l ; 95 t32_t mfeid ; 96 db_pgno_t mma_pgno ; 97 db_pgno_t mro_pgno ; 98 DB_LSN mma_l ; 99 } t__bam_ro_gs ; 101 #DB___bam_cudj 64 ) 102 s___bam_cudj_gs { 103 u_t32_t mty ; 104 DB_TXN * mtx ; 105 DB_LSN mev_l ; 106 t32_t mfeid ; 107 db__mode mmode ; 108 db_pgno_t mom_pgno ; 109 db_pgno_t mto_pgno ; 110 db_pgno_t m_pgno ; 111 u_t32_t mf_dx ; 112 u_t32_t mom_dx ; 113 u_t32_t mto_dx ; 114 } t__bam_cudj_gs ; 116 #DB___bam_rcudj 65 ) 117 s___bam_rcudj_gs { 118 u_t32_t mty ; 119 DB_TXN * mtx ; 120 DB_LSN mev_l ; 121 t32_t mfeid ; 122 _o_g mmode ; 123 db_pgno_t mro ; 124 db_o_t mo ; 125 u_t32_t md ; 126 } t__bam_rcudj_gs ; 128 #DB___bam_lk_43 147 ) 129 s___bam_lk_43_gs { 130 u_t32_t mty ; 131 DB_TXN * mtx ; 132 DB_LSN mev_l ; 133 t32_t mfeid ; 134 db_pgno_t mpgno ; 135 DB_LSN ml ; 136 db_pgno_t mev ; 137 DB_LSN ml_ev ; 138 db_pgno_t mxt ; 139 DB_LSN ml_xt ; 140 } t__bam_lk_43_gs ; 142 #DB___bam_lk 147 ) 143 s___bam_lk_gs { 144 u_t32_t mty ; 145 DB_TXN * mtx ; 146 DB_LSN mev_l ; 147 t32_t mfeid ; 148 db_pgno_t mpgno ; 149 db_pgno_t mw_pgno ; 150 db_pgno_t mev ; 151 DB_LSN ml_ev ; 152 db_pgno_t mxt ; 153 DB_LSN ml_xt ; 154 } t__bam_lk_gs ; 156 #DB___bam_mge 148 ) 157 s___bam_mge_gs { 158 u_t32_t mty ; 159 DB_TXN * mtx ; 160 DB_LSN mev_l ; 161 t32_t mfeid ; 162 db_pgno_t mpgno ; 163 DB_LSN ml ; 164 db_pgno_t mgno ; 165 DB_LSN mƢ ; 166 DBT mhdr ; 167 DBT mda ; 168 DBT md ; 169 } t__bam_mge_gs ; 171 #DB___bam_pgno 149 ) 172 s___bam_pgno_gs { 173 u_t32_t mty ; 174 DB_TXN * mtx ; 175 DB_LSN mev_l ; 176 t32_t mfeid ; 177 db_pgno_t mpgno ; 178 DB_LSN ml ; 179 u_t32_t mdx ; 180 db_pgno_t mgno ; 181 db_pgno_t mgno ; 182 } t__bam_pgno_gs ; @../dbinc_auto/btree_ext.h 2 #idef _b_ext_h_ 3 #_b_ext_h_ ) 5 #i defed ( __lulus ) 9 __bam_com __P (( DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)); 10 __bam_cmp __P (( DB *, DB_TXN *, cڡ DBT *, PAGE *, u_t32_t , (*)(DB *, const DBT *, const DBT *), *)); 11 __bam_defcmp __P (( DB *, cڡ DBT *, const DBT *)); 12 size_t __bam_defx __P (( DB *, cڡ DBT *, const DBT *)); 13 __bam_pg __P (( DB_ENV *, DB *, db_pgno_t , *, DBT *)); 14 __bam_pgout __P (( DB_ENV *, DB *, db_pgno_t , *, DBT *)); 15 __bam_msw __P (( PAGE *)); 16 __bam__de __P (( DB *, db_pgno_t , u_t32_t , , *)); 17 __m__de __P (( DB *, db_pgno_t , *)); 18 __bam__di __P (( DBC *, db_pgno_t , u_t32_t , )); 19 __bam__dup __P (( DBC *, u_t32_t , db_pgno_t , u_int32_t, db_pgno_t, u_int32_t)); 20 __bam__undodup __P (( DB *, u_t32_t , db_pgno_t , u_int32_t, u_int32_t)); 21 __bam__rl __P (( DBC *, db_pgno_t , db_pgno_t)); 22 __bam__l __P (( DBC *, db_pgno_t , db_pgno_t, db_pgno_t, u_t32_t , )); 23 __bam__undol __P (( DB *, db_pgno_t , db_pgno_t, db_pgno_t, u_t32_t )); 24 __bamc_ __P (( DBC *, DBTYPE )); 25 __bamc_esh __P (( DBC *)); 26 __bamc_cou __P (( DBC *, db_o_t *)); 27 __bamc_dup __P (( DBC *, DBC *)); 28 __bam_bulk_ovow __P (( DBC *, u_t32_t , db_pgno_t , u_t8_t *)); 29 __bam_bulk_duis __P (( DBC *, db_pgno_t , u_t8_t *, t32_t *, i32_**, u_t8_**, u_t32_t *, )); 30 __bamc_rg __P (( DBC *, DBT *)); 31 __bam_d_exis __P (( DBC *, db_pgno_t )); 32 __bam_dem __P (( DBC *, PAGE *, u_t32_t )); 33 __bam_adjdx __P (( DBC *, PAGE *, u_t32_t , u_int32_t, )); 34 __bam_dges __P (( DBC *, , )); 35 __bam_lk __P (( DBC *, PAGE *, db_pgno_t )); 36 __bam_pupde __P (( DBC *, PAGE *)); 37 __bam_db_ __P (( DB *)); 38 __bam_db_o __P (( DB *)); 39 __bam_m_ags __P (( DB *, u_t32_t *, u_int32_t *)); 40 __bam_t_ags __P (( DB *, u_t32_t * ag )); 41 __bam_t_bt_com __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 42 __bam_g_bt_mkey __P (( DB *, u_t32_t *)); 43 __m_m_ags __P (( DB *, u_t32_t *, u_int32_t *)); 44 __m_t_ags __P (( DB *, u_t32_t * ag )); 45 __m_g__n __P (( DB *, u_t32_t *)); 46 __m_g__d __P (( DB *, *)); 47 __bam_ݒ __P (( DB *, DB_TXN *, cڡ *, db_pgno_t , u_t32_t )); 48 __bam_machk __P (( DB *, cڡ *, BTMETA *)); 49 __bam_ad_ro __P (( DB *, DB_TXN *, db_pgno_t , u_t32_t )); 50 __bam_w_fe __P (( DB *, DB_TXN *, DB_FH *, const *)); 51 __bam_w_subdb __P (( DB *, DB *, DB_TXN *)); 52 __bam_iem __P (( DBC *, DBT *, DBT *, u_t32_t , u_int32_t)); 53 __bam_rem __P (( DBC *, PAGE *, u_t32_t , DBT *)); 54 __bam_l_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 55 __bam_rl_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 56 __bam_adj_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 57 __bam_dju_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 58 __bam_cd_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 59 __bam__cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 60 __bam_ro_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 61 __bam_cudj_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 62 __bam_rcudj_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 63 __bam_lk_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 64 __bam_mge_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 65 __bam_pgno_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 66 __bam_lk_43_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 67 __bam_aim __P (( DB *, DB_TXN *)); 68 __bam_un __P (( DBC *, u_t32_t *)); 69 __m_ݒ __P (( DB *, DB_TXN *, cڡ *, db_pgno_t , u_t32_t )); 70 __m_nd __P (( DBC *, DBT *, DBT *)); 71 __mc_d __P (( DBC *)); 72 __mc_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 73 __mc_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 74 __m_ __P (( DBC *, _o_g , *)); 75 __m_gno __P (( DBC *, cڡ DBT *, db_o_t *, )); 76 __m_wreback __P (( DB *)); 77 __bam_rch __P (( DBC *, db_o_t *, u_t32_t , , *)); 78 __bam_adju __P (( DBC *, t32_t )); 79 __bam_ecs __P (( DBC *, db_o_t *)); 80 db_o_t __bam_tٮ __P (( DB *, PAGE *)); 81 __bam_g_ro __P (( DBC *, db_pgno_t , , u_t32_t , *)); 82 __bam_ch __P (( DBC *, db_pgno_t , cڡ DBT *, u_t32_t , , db_o_t *, *)); 83 __bam_kl __P (( DBC *, u_t32_t )); 84 __bam_kgrow __P (( DB_ENV *, BTREE_CURSOR *)); 85 __bam_l __P (( DBC *, *, db_pgno_t *)); 86 __bam_p __P (( DBC *, EPG *, u_t32_t , PAGE *, PAGE *, )); 87 __bam_cy __P (( DB *, PAGE *, PAGE *, u_t32_t , u_int32_t)); 88 __bam_ __P (( DBC *, *, u_t32_t )); 89 __bam__t __P (( DBC *, u_t32_t )); 90 __bam__back __P (( DB *, PAGE *, *, *)); 91 __bam_t_curs __P (( DBC *)); 92 __bam_key_nge __P (( DBC *, DBT *, DB_KEY_RANGE *, u_t32_t )); 93 __bam_av __P (( DBC *, db_lockmode_t , db_pgno_t , (*)( DB *, PAGE *, *, *), *)); 94 __bam_30_bma __P (( DB *, *, u_t8_t *)); 95 __bam_31_bma __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 96 __bam_31_lb __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 97 __bam_vrfy_ma __P (( DB *, VRFY_DBINFO *, BTMETA *, db_pgno_t , u_t32_t )); 98 __m_vrfy_af __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 99 __bam_vrfy __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 100 __bam_vrfy_emd __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t , , , u_int32_t)); 101 __bam_vrfy_ruu __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t )); 102 __bam_vrfy_sub __P (( DB *, VRFY_DBINFO *, db_pgno_t , *, *, u_t32_t , u_int32_t *, u_int32_t *, u_int32_t *)); 103 __bam_lvage __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t , PAGE *, *, (*)(*, cڡ *), DBT *, u_int32_t)); 104 __bam_lvage_wkdupt __P (( DB *, VRFY_DBINFO *, PAGE *, DBT *, *, (*)(*, cڡ *), u_t32_t )); 105 __bam_ma2pgt __P (( DB *, VRFY_DBINFO *, BTMETA *, u_t32_t , DB *)); 106 __bam_l_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, u_t32_t, db_pgno_t, DB_LSN *, db_pgno_t, cڡ DBT *, u_int32_t)); 107 __bam_l_ad __P (( DB_ENV *, *, __bam_l_gs **)); 108 __bam_rl_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , cڡ DBT *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *)); 109 __bam_rl_ad __P (( DB_ENV *, *, __bam_rl_gs **)); 110 __bam_adj_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, u_int32_t, u_int32_t, u_int32_t)); 111 __bam_adj_ad __P (( DB_ENV *, *, __bam_adj_gs **)); 112 __bam_dju_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, u_t32_t, t32_t , u_int32_t)); 113 __bam_dju_ad __P (( DB_ENV *, *, __bam_dju_gs **)); 114 __bam_cd_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, u_int32_t)); 115 __bam_cd_ad __P (( DB_ENV *, *, __bam_cd_gs **)); 116 __bam__log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, u_t32_t, u_t32_t, cڡ DBT *, const DBT *, u_int32_t, u_int32_t)); 117 __bam__ad __P (( DB_ENV *, *, __bam__gs **)); 118 __bam_ro_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , db_pgno_t, DB_LSN *)); 119 __bam_ro_ad __P (( DB_ENV *, *, __bam_ro_gs **)); 120 __bam_cudj_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db__mode , db_pgno_t , db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t)); 121 __bam_cudj_ad __P (( DB_ENV *, *, __bam_cudj_gs **)); 122 __bam_rcudj_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , _o_g , db_pgno_t , db_o_t , u_int32_t)); 123 __bam_rcudj_ad __P (( DB_ENV *, *, __bam_rcudj_gs **)); 124 __bam_lk_43_ad __P (( DB_ENV *, *, __bam_lk_43_gs **)); 125 __bam_lk_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , db_pgno_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *)); 126 __bam_lk_ad __P (( DB_ENV *, *, __bam_lk_gs **)); 127 __bam_mge_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, cڡ DBT *, const DBT *, const DBT *)); 128 __bam_mge_ad __P (( DB_ENV *, *, __bam_mge_gs **)); 129 __bam_pgno_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, u_int32_t, db_pgno_t, db_pgno_t)); 130 __bam_pgno_ad __P (( DB_ENV *, *, __bam_pgno_gs **)); 131 __bam__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 132 __bam_l_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 133 __bam_rl_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 134 __bam_adj_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 135 __bam_dju_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 136 __bam_cd_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 137 __bam__t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 138 __bam_ro_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 139 __bam_cudj_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 140 __bam_rcudj_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 141 __bam_lk_43_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 142 __bam_lk_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 143 __bam_mge_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 144 __bam_pgno_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 145 __bam__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 147 #i defed ( __lulus ) @../dbinc_auto/clib_ext.h 2 #idef _ib_ext_h_ 3 #_ib_ext_h_ ) 5 #i defed ( __lulus ) 9 #ide HAVE_ATOI 10 oi __P ((const *)); 12 #ide HAVE_ATOL 13 __P ((const *)); 15 * __db_ime __P ((cڡ time_t *, *)); 16 #i defed ( HAVE_REPLICATION_THREADS ) 17 __db_gaddrfo __P (( DB_ENV *, cڡ *, u_t , cڡ *, cڡ ADDRINFO *, ADDRINFO **)); 19 #i defed ( HAVE_REPLICATION_THREADS ) 20 __db_addrfo __P (( DB_ENV *, ADDRINFO *)); 22 #ide HAVE_GETCWD 23 * gcwd __P ((*, size_t )); 25 #ide HAVE_GETOPT 26 gt __P ((, * const *, const *)); 28 #ide HAVE_ISALPHA 29 iha __P (()); 31 #ide HAVE_ISDIGIT 32 isdig __P (()); 34 #ide HAVE_ISPRINT 35 irt __P (()); 37 #ide HAVE_ISSPACE 38 isa __P (()); 40 #ide HAVE_MEMCMP 41 memcmp __P ((cڡ *, cڡ *, size_t )); 43 #ide HAVE_MEMCPY 44 * memy __P ((*, cڡ *, size_t )); 46 #ide HAVE_MEMMOVE 47 * memmove __P ((*, cڡ *, size_t )); 49 #ide HAVE_PRINTF 50 tf __P ((const *, ...)); 52 #ide HAVE_PRINTF 53 rtf __P (( FILE *, const *, ...)); 55 #ide HAVE_PRINTF 56 vrtf __P (( FILE *, cڡ *, va_li )); 58 #ide HAVE_QSORT 59 qst __P ((*, size_t , size_t, (*)(const *, const *))); 61 #ide HAVE_RAISE 62 i __P (()); 64 #ide HAVE_RAND 65 nd __P (()); 66 d __P (()); 68 #ide HAVE_SNPRINTF 69 tf __P ((*, size_t , const *, ...)); 71 #ide HAVE_VSNPRINTF 72 vtf __P ((*, size_t , cڡ *, va_li )); 74 #ide HAVE_STRCASECMP 75 rcmp __P ((const *, const *)); 77 #ide HAVE_STRCASECMP 78 cmp __P ((cڡ *, cڡ *, size_t )); 80 #ide HAVE_STRCAT 81 * rt __P ((*, const *)); 83 #ide HAVE_STRCHR 84 * rchr __P ((const *, )); 86 #ide HAVE_STRDUP 87 * rdup __P ((const *)); 89 #ide HAVE_STRERROR 90 * __P (()); 92 #ide HAVE_STRNCAT 93 * t __P ((*, cڡ *, size_t )); 95 #ide HAVE_STRNCMP 96 cmp __P ((cڡ *, cڡ *, size_t )); 98 #ide HAVE_STRRCHR 99 * chr __P ((const *, )); 101 #ide HAVE_STRSEP 102 * rp __P ((**, const *)); 104 #ide HAVE_STRTOL 105 __P ((const *, **, )); 107 #ide HAVE_STRTOUL 108 oul __P ((const *, **, )); 111 #i defed ( __lulus ) @../dbinc_auto/common_ext.h 2 #idef _comm_ext_h_ 3 #_comm_ext_h_ ) 5 #i defed ( __lulus ) 9 __yo_gi_ __P (( DB_ENV *)); 10 __db_isbigdn __P (()); 11 __db_byd __P (( DB_ENV *, )); 12 __db_fchk __P (( DB_ENV *, cڡ *, u_t32_t , u_int32_t)); 13 __db_fcchk __P (( DB_ENV *, cڡ *, u_t32_t , u_int32_t, u_int32_t)); 14 __db_ __P ((cڡ DB_ENV *, const *, )); 15 __db_l __P ((cڡ DB_ENV *, const *)); 16 __db_pgr __P (( DB *, db_pgno_t , )); 17 __db_pgfmt __P (( DB_ENV *, db_pgno_t )); 18 #ifde DIAGNOSTIC 19 __db_as __P (( DB_ENV *, const *, const *, )); 21 __db_nic_msg __P (( DB_ENV *)); 22 __db_nic __P (( DB_ENV *, )); 23 * __db_unknown_r __P (()); 24 __db_sy __P ((cڡ DB_ENV *, , cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 25 __db_r __P ((cڡ DB_ENV *, , cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 26 __db_rx __P ((cڡ DB_ENV *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 2, 3))); 27 __db_r __P ((cڡ DB_ENV *, , db_r_t_t , cڡ *, va_li )); 28 __db_rfe __P ((cڡ DB_ENV *, , db_r_t_t , cڡ *, va_li )); 29 __db_msgadd __P (( DB_ENV *, DB_MSGBUF *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 30 __db_msgadd_ __P (( DB_ENV *, DB_MSGBUF *, cڡ *, va_li )); 31 __db_msg __P ((cڡ DB_ENV *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 2, 3))); 32 __db_unknown_ag __P (( DB_ENV *, *, u_t32_t )); 33 __db_unknown_ty __P (( DB_ENV *, *, DBTYPE )); 34 __db_unknown_th __P (( DB_ENV *, *)); 35 __db_check_txn __P (( DB *, DB_TXN *, DB_LOCKER *, )); 36 __db_txn_ddlock_r __P (( DB_ENV *, DB_TXN *)); 37 __db_n_txn_v __P (( DB_ENV *)); 38 __db_c_toobig __P (( DB_ENV *, u_t32_t , u_int32_t)); 39 __db_c_ __P (( DB_ENV *, u_t32_t , u_int32_t)); 40 __dbc_loggg __P (( DBC *)); 41 __db_check_l __P (( DB_ENV *, DB_LSN *, DB_LSN *)); 42 __db_rdly __P ((cڡ DB_ENV *, const *)); 43 __db_a_r __P ((cڡ DB *)); 44 __db_ed __P ((cڡ DB_ENV *, cڡ *, pid_t , db_thadid_t )); 45 __db_glg __P (( DB_ENV *, const *, *, , , *)); 46 __db_gulg __P (( DB_ENV *, cڡ *, *, u_lg , u_long, u_long *)); 47 __db_ida __P (( u_t32_t *, , u_int32_t *, u_int32_t *)); 48 u_t32_t __db_log2 __P ((u_int32_t)); 49 u_t32_t __db_bsize __P ((u_int32_t)); 50 __db_hash __P ((*, u_t32_t )); 51 __db_mkth __P (( DB_ENV *, const *)); 52 __db_ut_g __P ((*, *, *, ***)); 53 __db_ut_che __P (( DB *, u_t32_t *, *)); 54 __db_ut_logt __P ((const *, *)); 55 __db_ut_sig __P (()); 56 __db_ut_ued __P (()); 57 __db_ut_signd __P (()); 59 #i defed ( __lulus ) @../dbinc_auto/crdel_auto.h 3 #idef __d_AUTO_H 4 #__d_AUTO_H ) 5 #DB___d_masub 142 ) 6 s___d_masub_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 t32_t mfeid ; 11 db_pgno_t mpgno ; 12 DBT mge ; 13 DB_LSN ml ; 14 } t__d_masub_gs ; 16 #DB___d_mem_ 138 ) 17 s___d_mem__gs { 18 u_t32_t mty ; 19 DB_TXN * mtx ; 20 DB_LSN mev_l ; 21 t32_t mfeid ; 22 DBT mme ; 23 DBT mfid ; 24 u_t32_t mpgsize ; 25 } t__d_mem__gs ; 27 #DB___d_mem_me 139 ) 28 s___d_mem_me_gs { 29 u_t32_t mty ; 30 DB_TXN * mtx ; 31 DB_LSN mev_l ; 32 DBT mdme ; 33 DBT mwme ; 34 DBT mfid ; 35 } t__d_mem_me_gs ; 37 #DB___d_mem_move 140 ) 38 s___d_mem_move_gs { 39 u_t32_t mty ; 40 DB_TXN * mtx ; 41 DB_LSN mev_l ; 42 DBT mme ; 43 DBT mfid ; 44 } t__d_mem_move_gs ; @../dbinc_auto/crypto_ext.h 2 #idef _yo_ext_h_ 3 #_yo_ext_h_ ) 5 #i defed ( __lulus ) 9 __s_tup __P (( DB_ENV *, DB_CIPHER *)); 10 u_t __s_adj_size __P (( size_t )); 11 __s_o __P (( DB_ENV *, *)); 12 __s_dey __P (( DB_ENV *, *, *, u_t8_t *, size_t )); 13 __s_y __P (( DB_ENV *, *, *, u_t8_t *, size_t )); 14 __s_ __P (( DB_ENV *, DB_CIPHER *)); 15 __yo_v_o __P (( DB_ENV *)); 16 __yo_v_esh __P (( DB_ENV *)); 17 __yo_gtup __P (( DB_ENV *, DB_CIPHER *, u_t32_t , )); 18 __yo_dey_ma __P (( DB_ENV *, DB *, u_t8_t *, )); 19 __yo_t_sswd __P (( DB_ENV *, DB_ENV *)); 20 __db_ge_iv __P (( DB_ENV *, u_t32_t *)); 21 __db_rijndlKeySupEnc __P (( u32 *, cڡ u8 *, )); 22 __db_rijndlKeySupDec __P (( u32 *, cڡ u8 *, )); 23 __db_rijndlEny __P (( u32 *, , cڡ u8 *, u8 *)); 24 __db_rijndlDey __P (( u32 *, , cڡ u8 *, u8 *)); 25 __db_rijndlEnyRound __P ((cڡ u32 *, , u8 *, )); 26 __db_rijndlDeyRound __P ((cڡ u32 *, , u8 *, )); 27 __db_makeKey __P (( keyIn *, , , *)); 28 __db_chIn __P (( chIn *, , *)); 29 __db_blockEny __P (( chIn *, keyIn *, u_t8_t *, size_t , u_int8_t *)); 30 __db_dEny __P (( chIn *, keyIn *, u_t8_t *, , u_int8_t *)); 31 __db_blockDey __P (( chIn *, keyIn *, u_t8_t *, size_t , u_int8_t *)); 32 __db_dDey __P (( chIn *, keyIn *, u_t8_t *, , u_int8_t *)); 33 __db_chUpdeRounds __P (( chIn *, keyIn *, u_t8_t *, , u_int8_t *, )); 35 #i defed ( __lulus ) @../dbinc_auto/db_auto.h 3 #idef __db_AUTO_H 4 #__db_AUTO_H ) 5 #DB___db_addm 41 ) 6 s___db_addm_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 u_t32_t mcode ; 11 t32_t mfeid ; 12 db_pgno_t mpgno ; 13 u_t32_t mdx ; 14 u_t32_t mnbys ; 15 DBT mhdr ; 16 DBT mdbt ; 17 DB_LSN mg ; 18 } t__db_addm_gs ; 20 #DB___db_big 43 ) 21 s___db_big_gs { 22 u_t32_t mty ; 23 DB_TXN * mtx ; 24 DB_LSN mev_l ; 25 u_t32_t mcode ; 26 t32_t mfeid ; 27 db_pgno_t mpgno ; 28 db_pgno_t mev_pgno ; 29 db_pgno_t mxt_pgno ; 30 DBT mdbt ; 31 DB_LSN mg ; 32 DB_LSN mevl ; 33 DB_LSN mx ; 34 } t__db_big_gs ; 36 #DB___db_ovf 44 ) 37 s___db_ovf_gs { 38 u_t32_t mty ; 39 DB_TXN * mtx ; 40 DB_LSN mev_l ; 41 t32_t mfeid ; 42 db_pgno_t mpgno ; 43 t32_t madju ; 44 DB_LSN ml ; 45 } t__db_ovf_gs ; 47 #DB___db_lk_42 45 ) 48 s___db_lk_42_gs { 49 u_t32_t mty ; 50 DB_TXN * mtx ; 51 DB_LSN mev_l ; 52 u_t32_t mcode ; 53 t32_t mfeid ; 54 db_pgno_t mpgno ; 55 DB_LSN ml ; 56 db_pgno_t mev ; 57 DB_LSN ml_ev ; 58 db_pgno_t mxt ; 59 DB_LSN ml_xt ; 60 } t__db_lk_42_gs ; 62 #DB___db_debug 47 ) 63 s___db_debug_gs { 64 u_t32_t mty ; 65 DB_TXN * mtx ; 66 DB_LSN mev_l ; 67 DBT m ; 68 t32_t mfeid ; 69 DBT mkey ; 70 DBT mda ; 71 u_t32_t mg_ags ; 72 } t__db_debug_gs ; 74 #DB___db_no 48 ) 75 s___db_no_gs { 76 u_t32_t mty ; 77 DB_TXN * mtx ; 78 DB_LSN mev_l ; 79 t32_t mfeid ; 80 db_pgno_t mpgno ; 81 DB_LSN mevl ; 82 } t__db_no_gs ; 84 #DB___db_pg_loc_42 49 ) 85 s___db_pg_loc_42_gs { 86 u_t32_t mty ; 87 DB_TXN * mtx ; 88 DB_LSN mev_l ; 89 t32_t mfeid ; 90 DB_LSN mma_l ; 91 db_pgno_t mma_pgno ; 92 DB_LSN mge_l ; 93 db_pgno_t mpgno ; 94 u_t32_t my ; 95 db_pgno_t mxt ; 96 } t__db_pg_loc_42_gs ; 98 #DB___db_pg_loc 49 ) 99 s___db_pg_loc_gs { 100 u_t32_t mty ; 101 DB_TXN * mtx ; 102 DB_LSN mev_l ; 103 t32_t mfeid ; 104 DB_LSN mma_l ; 105 db_pgno_t mma_pgno ; 106 DB_LSN mge_l ; 107 db_pgno_t mpgno ; 108 u_t32_t my ; 109 db_pgno_t mxt ; 110 db_pgno_t mϡ_pgno ; 111 } t__db_pg_loc_gs ; 113 #DB___db_pg__42 50 ) 114 s___db_pg__42_gs { 115 u_t32_t mty ; 116 DB_TXN * mtx ; 117 DB_LSN mev_l ; 118 t32_t mfeid ; 119 db_pgno_t mpgno ; 120 DB_LSN mma_l ; 121 db_pgno_t mma_pgno ; 122 DBT mhd ; 123 db_pgno_t mxt ; 124 } t__db_pg__42_gs ; 126 #DB___db_pg_ 50 ) 127 s___db_pg__gs { 128 u_t32_t mty ; 129 DB_TXN * mtx ; 130 DB_LSN mev_l ; 131 t32_t mfeid ; 132 db_pgno_t mpgno ; 133 DB_LSN mma_l ; 134 db_pgno_t mma_pgno ; 135 DBT mhd ; 136 db_pgno_t mxt ; 137 db_pgno_t mϡ_pgno ; 138 } t__db_pg__gs ; 140 #DB___db_cksum 51 ) 141 s___db_cksum_gs { 142 u_t32_t mty ; 143 DB_TXN * mtx ; 144 DB_LSN mev_l ; 145 } t__db_cksum_gs ; 147 #DB___db_pg_da_42 52 ) 148 s___db_pg_da_42_gs { 149 u_t32_t mty ; 150 DB_TXN * mtx ; 151 DB_LSN mev_l ; 152 t32_t mfeid ; 153 db_pgno_t mpgno ; 154 DB_LSN mma_l ; 155 db_pgno_t mma_pgno ; 156 DBT mhd ; 157 db_pgno_t mxt ; 158 DBT mda ; 159 } t__db_pg_da_42_gs ; 161 #DB___db_pg_da 52 ) 162 s___db_pg_da_gs { 163 u_t32_t mty ; 164 DB_TXN * mtx ; 165 DB_LSN mev_l ; 166 t32_t mfeid ; 167 db_pgno_t mpgno ; 168 DB_LSN mma_l ; 169 db_pgno_t mma_pgno ; 170 DBT mhd ; 171 db_pgno_t mxt ; 172 db_pgno_t mϡ_pgno ; 173 DBT mda ; 174 } t__db_pg_da_gs ; 176 #DB___db_pg_e 53 ) 177 s___db_pg_e_gs { 178 u_t32_t mty ; 179 DB_TXN * mtx ; 180 DB_LSN mev_l ; 181 t32_t mfeid ; 182 db_pgno_t mpgno ; 183 } t__db_pg_e_gs ; 185 #DB___db_pg_w 54 ) 186 s___db_pg_w_gs { 187 u_t32_t mty ; 188 DB_TXN * mtx ; 189 DB_LSN mev_l ; 190 t32_t mfeid ; 191 db_pgno_t mpgno ; 192 DB_LSN mma_l ; 193 db_pgno_t mma_pgno ; 194 DBT mhd ; 195 db_pgno_t mxt ; 196 } t__db_pg_w_gs ; 198 #DB___db_pg_ 60 ) 199 s___db_pg__gs { 200 u_t32_t mty ; 201 DB_TXN * mtx ; 202 DB_LSN mev_l ; 203 t32_t mfeid ; 204 db_pgno_t mpgno ; 205 DBT mhd ; 206 DBT mda ; 207 } t__db_pg__gs ; 209 #DB___db_pg_st 61 ) 210 s___db_pg_st_gs { 211 u_t32_t mty ; 212 DB_TXN * mtx ; 213 DB_LSN mev_l ; 214 t32_t mfeid ; 215 db_pgno_t mma ; 216 DB_LSN mma_l ; 217 db_pgno_t mϡ_ ; 218 DB_LSN mϡ_l ; 219 db_pgno_t mϡ_pgno ; 220 DBT mli ; 221 } t__db_pg_st_gs ; @../dbinc_auto/db_ext.h 2 #idef _db_ext_h_ 3 #_db_ext_h_ ) 5 #i defed ( __lulus ) 9 __d_masub_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , cڡ DBT *, DB_LSN *)); 10 __d_masub_ad __P (( DB_ENV *, *, __d_masub_gs **)); 11 __d_mem__log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , t32_t , cڡ DBT *, const DBT *, u_int32_t)); 12 __d_mem__ad __P (( DB_ENV *, *, __d_mem__gs **)); 13 __d_mem_me_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *)); 14 __d_mem_me_ad __P (( DB_ENV *, *, __d_mem_me_gs **)); 15 __d_mem_move_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *)); 16 __d_mem_move_ad __P (( DB_ENV *, *, __d_mem_move_gs **)); 17 __d__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 18 __d_masub_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 19 __d_mem__t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 20 __d_mem_me_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 21 __d_mem_move_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 22 __d__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 23 __d_masub_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 24 __d_mem__cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 25 __d_mem_me_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 26 __d_mem_move_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 27 __db_ma_ݒ __P (( DB *, DB_TXN *, cڡ *, u_t32_t , , DB **)); 28 __db_ma_upde __P (( DB *, DB *, DB_TXN *, cڡ *, DBTYPE , mu_ai , cڡ *, u_t32_t )); 29 __db_v_tup __P (( DB *, DB_TXN *, cڡ *, cڡ *, u_t32_t , u_int32_t)); 30 __db_v_mpo __P (( DB *, cڡ *, u_t32_t )); 31 __db_o __P (( DB *, DB_TXN *, u_t32_t )); 32 __db_esh __P (( DB *, DB_TXN *, u_t32_t , *, )); 33 __db_log_ge __P (( DB *, DB_TXN *, DB_LSN *, db_pgno_t , PAGE *)); 34 __db_backup_me __P (( DB_ENV *, cڡ *, DB_TXN *, **)); 35 #ifde CONFIG_TEST 36 __db_cy __P (( DB_ENV *, DB *, const *)); 38 __db_curs_t __P (( DB *, DB_TXN *, DBTYPE , db_pgno_t , , DB_LOCKER *, DBC **)); 39 __db_put __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 40 __db_d __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 41 __db_sync __P (( DB *)); 42 __db_assoc __P (( DB *, DB_TXN *, DB *, (*)(DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 43 __db_cdy_o __P (( DB *, u_t32_t )); 44 __db_addm_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , u_t32_t, u_t32_t, cڡ DBT *, const DBT *, DB_LSN *)); 45 __db_addm_ad __P (( DB_ENV *, *, __db_addm_gs **)); 46 __db_big_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , db_pgno_t, db_pgno_t, cڡ DBT *, DB_LSN *, DB_LSN *, DB_LSN *)); 47 __db_big_ad __P (( DB_ENV *, *, __db_big_gs **)); 48 __db_ovf_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , t32_t , DB_LSN *)); 49 __db_ovf_ad __P (( DB_ENV *, *, __db_ovf_gs **)); 50 __db_lk_42_ad __P (( DB_ENV *, *, __db_lk_42_gs **)); 51 __db_debug_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, t32_t , const DBT *, const DBT *, u_int32_t)); 52 __db_debug_ad __P (( DB_ENV *, *, __db_debug_gs **)); 53 __db_no_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *)); 54 __db_no_ad __P (( DB_ENV *, *, __db_no_gs **)); 55 __db_pg_loc_42_ad __P (( DB_ENV *, *, __db_pg_loc_42_gs **)); 56 __db_pg_loc_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, db_pgno_t , DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t, db_pgno_t)); 57 __db_pg_loc_ad __P (( DB_ENV *, *, __db_pg_loc_gs **)); 58 __db_pg__42_ad __P (( DB_ENV *, *, __db_pg__42_gs **)); 59 __db_pg__log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, cڡ DBT *, db_pgno_t, db_pgno_t)); 60 __db_pg__ad __P (( DB_ENV *, *, __db_pg__gs **)); 61 __db_cksum_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t )); 62 __db_cksum_ad __P (( DB_ENV *, *, __db_cksum_gs **)); 63 __db_pg_da_42_ad __P (( DB_ENV *, *, __db_pg_da_42_gs **)); 64 __db_pg_da_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, cڡ DBT *, db_pgno_t, db_pgno_t, const DBT *)); 65 __db_pg_da_ad __P (( DB_ENV *, *, __db_pg_da_gs **)); 66 __db_pg_e_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t )); 67 __db_pg_e_ad __P (( DB_ENV *, *, __db_pg_e_gs **)); 68 __db_pg_w_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, cڡ DBT *, db_pgno_t)); 69 __db_pg_w_ad __P (( DB_ENV *, *, __db_pg_w_gs **)); 70 __db_pg__log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , cڡ DBT *, const DBT *)); 71 __db_pg__ad __P (( DB_ENV *, *, __db_pg__gs **)); 72 __db_pg_st_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, cڡ DBT *)); 73 __db_pg_st_ad __P (( DB_ENV *, *, __db_pg_st_gs **)); 74 __db__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 75 __db_addm_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 76 __db_big_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 77 __db_ovf_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 78 __db_lk_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 79 __db_debug_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 80 __db_no_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 81 __db_pg_loc_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 82 __db_pg_loc_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 83 __db_pg__42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 84 __db_pg__t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 85 __db_cksum_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 86 __db_pg_da_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 87 __db_pg_da_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 88 __db_pg_e_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 89 __db_pg_w_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 90 __db_pg__t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 91 __db_pg_st_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 92 __db__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 93 __dbc_o __P (( DBC *)); 94 __dbc_deroy __P (( DBC *)); 95 __dbc_cou __P (( DBC *, db_o_t *)); 96 __dbc_d __P (( DBC *, u_t32_t )); 97 __dbc_dup __P (( DBC *, DBC **, u_t32_t )); 98 __dbc_idup __P (( DBC *, DBC **, u_t32_t )); 99 __dbc_wd __P (( DBC *, db_pgno_t , DBC *, DBC **)); 100 __dbc_g __P (( DBC *, DBT *, DBT *, u_t32_t )); 101 __dbc_put __P (( DBC *, DBT *, DBT *, u_t32_t )); 102 __db_du __P (( DB *, u_t32_t )); 103 __dbc_cdy_g_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 104 __dbc_pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 105 __dbc_d_imy __P (( DBC *)); 106 __db_s_f __P (( DB *, DB **)); 107 __db_s_xt __P (( DB **, DB_TXN *)); 108 __db_s_de __P (( DB *, DB_TXN *)); 109 u_t32_t __db_size __P ((u_t32_t, DBT *)); 110 #ifde DIAGNOSTIC 111 __db_check_skeyt __P (( DB *, DBT *)); 113 __cdsgroup_beg __P (( DB_ENV *, DB_TXN **)); 114 __db_pg __P (( DB_ENV *, db_pgno_t , *, DBT *)); 115 __db_pgout __P (( DB_ENV *, db_pgno_t , *, DBT *)); 116 __db_dey_pg __P (( DB_ENV *, DB *, PAGE *)); 117 __db_y_d_checksum_pg __P (( DB_ENV *, DB *, PAGE *)); 118 __db_masw __P (( PAGE *)); 119 __db_bysw __P (( DB_ENV *, DB *, db_pgno_t , PAGE *, size_t , )); 120 __db_dich __P (( DB_ENV *, (**)__P((DB_ENV *, DBT *, DB_LSN *, db_cs , *)), size_t , DBT *, DB_LSN *, db_cs, DB_TXNHEAD *)); 121 __db_add_covy __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs, *), u_t32_t )); 122 __db_txi_ __P (( DB_ENV *, u_t32_t , u_t32_t, DB_LSN *, DB_TXNHEAD **)); 123 __db_txi_add __P (( DB_ENV *, DB_TXNHEAD *, u_t32_t , u_t32_t, DB_LSN *)); 124 __db_txi_move __P (( DB_ENV *, DB_TXNHEAD *, u_t32_t )); 125 __db_txi_ckp __P (( DB_ENV *, DB_TXNHEAD *, DB_LSN *)); 126 __db_txi_d __P (( DB_ENV *, DB_TXNHEAD *)); 127 __db_txi_fd __P (( DB_ENV *, DB_TXNHEAD *, u_t32_t , u_int32_t *)); 128 __db_txi_upde __P (( DB_ENV *, DB_TXNHEAD *, u_t32_t , u_t32_t, DB_LSN *, u_int32_t *, )); 129 __db_txi_g __P (( DB_ENV *, DB_TXNHEAD *, , u_t32_t , u_int32_t)); 130 __db_txi_ladd __P (( DB_ENV *, DB_TXNHEAD *, DB_LSN *)); 131 __db_txi_lg __P (( DB_ENV *, DB_TXNHEAD *, DB_LSN *, u_t32_t )); 132 __db_txi_l __P (( DB_ENV *, DB_TXNHEAD *, DB_LSN *)); 133 __db_add_limbo __P (( DB_ENV *, DB_TXNHEAD *, t32_t , db_pgno_t , u_t32_t )); 134 __db_do_the_limbo __P (( DB_ENV *, DB_TXN *, DB_TXN *, DB_TXNHEAD *, db_limbo_e )); 135 __db_txi_t __P (( DB_TXNHEAD *)); 136 __db_dem __P (( DBC *, PAGE *, u_t32_t , u_int32_t)); 137 __db_pem __P (( DBC *, PAGE *, u_t32_t , u_t32_t, DBT *, DBT *)); 138 __db_assoc_ __P (( DB *, DB_TXN *, DB *, (*)(DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 139 __db_o_ __P (( DB *, u_t32_t )); 140 __db_curs_ __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 141 __db_curs __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 142 __db_d_ __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 143 __db_exis __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 144 __db_fd_ __P (( DB *, *)); 145 __db_g_ __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 146 __db_g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 147 __db_jo_ __P (( DB *, DBC **, DBC **, u_t32_t )); 148 __db_key_nge_ __P (( DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_t32_t )); 149 __db_ݒ_ __P (( DB *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , )); 150 __db_pg_ __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 151 __db_pg __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 152 __db_put_ __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 153 __db_com_ __P (( DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)); 154 __db_sync_ __P (( DB *, u_t32_t )); 155 __dbc_o_ __P (( DBC *)); 156 __dbc_cou_ __P (( DBC *, db_o_t *, u_t32_t )); 157 __dbc_d_ __P (( DBC *, u_t32_t )); 158 __dbc_dup_ __P (( DBC *, DBC **, u_t32_t )); 159 __dbc_g_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 160 __db_cdy_o_ __P (( DB *, u_t32_t )); 161 __dbc_pg_ __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 162 __dbc_put_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 163 __db_txn_auto_ __P (( DB_ENV *, DB_TXN **)); 164 __db_txn_auto_sve __P (( DB_ENV *, DB_TXN *, , )); 165 __dbt_urcy __P (( DB_ENV *, DBT *)); 166 __dbt_ur __P (( DB_ENV *, DBT *, DBT *, DBT *)); 167 __db_jo __P (( DB *, DBC **, DBC **, u_t32_t )); 168 __db_jo_o __P (( DBC *)); 169 __db_cdy_cru __P (( DB *)); 170 __db_w __P (( DBC *, u_t32_t , PAGE **)); 171 __db_ __P (( DBC *, PAGE *)); 172 #ifde HAVE_FTRUNCATE 173 __db_li_pos __P (( db_pgno_t , db_pgno_*, u_t32_t , u_int32_t *)); 175 #ifde HAVE_FTRUNCATE 176 __db_pg_un __P (( DB *, DB_TXN *, pgli * li , DB_COMPACT *, u_t32_t *, db_pgno_t *, DB_LSN *, )); 178 #ifde HAVE_FTRUNCATE 179 __db__un __P (( DB *, DB_TXN *, u_t32_t , DB_COMPACT *, pgli **, u_t32_*, db_pgno_t *)); 181 __db_rt __P (( DBC *)); 182 __db_lg __P (( DBC *, , db_pgno_t , db_lockmode_t , u_t32_t , DB_LOCK *)); 183 __db_ut __P (( DBC *, DB_LOCK *)); 184 __db__ __P (( DB **, DB_ENV *, u_t32_t )); 185 __dbh_am_chk __P (( DB *, u_t32_t )); 186 __db_g_ags __P (( DB *, u_t32_t *)); 187 __db_t_ags __P (( DB *, u_t32_t )); 188 __db_g_ld __P (( DB *, *)); 189 __db_t_ld __P (( DB *, )); 190 __db_t_gesize __P (( DB *, u_t32_t )); 191 __db_ݒ __P (( DB *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , , db_pgno_t )); 192 __db_g_ݒ_ags __P (( DB *, u_t32_t *)); 193 __db_w_fe __P (( DB *, DB_TXN *, DB_FH *, const *)); 194 __db__subdb __P (( DB *, DB *, cڡ *, DB_TXN *)); 195 __db_chk_ma __P (( DB_ENV *, DB *, DBMETA *, u_t32_t )); 196 __db_ma_tup __P (( DB_ENV *, DB *, cڡ *, DBMETA *, u_t32_t , u_int32_t)); 197 __db_goff __P (( DB *, DB_TXN *, DBT *, u_t32_t , db_pgno_t , **, u_int32_t *)); 198 __db_poff __P (( DBC *, cڡ DBT *, db_pgno_t *)); 199 __db_ovf __P (( DBC *, db_pgno_t )); 200 __db_doff __P (( DBC *, db_pgno_t )); 201 __db_moff __P (( DB *, DB_TXN *, cڡ DBT *, db_pgno_t , u_t32_t , (*)(DB *, const DBT *, const DBT *), *)); 202 __db_coff __P (( DB *, DB_TXN *, cڡ DBT *, const DBT *, (*)(DB *, const DBT *, const DBT *), *)); 203 __db_vrfy_ovow __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 204 __db_vrfy_ov_ruu __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t , u_int32_t)); 205 __db__goff __P (( DB *, VRFY_DBINFO *, db_pgno_t , DBT *, *, u_t32_t )); 206 __db_ldme __P (()); 207 __db_dume __P (( DB *, DB_TXN *, *, *)); 208 cڡ FN * __db_g_ags_ __P (()); 209 __db_age __P (( DB *, DB_TXN *, db_pgno_t )); 210 __db_ge __P (( DB *, PAGE *, u_t32_t )); 211 __db_ __P (( DB_ENV *, DB_MSGBUF *, u_t8_t *, u_t32_t )); 212 __db_ags __P (( DB_ENV *, DB_MSGBUF *, u_t32_t , cڡ FN *, const *, const *)); 213 cڡ * __db_lockmode_to_rg __P (( db_lockmode_t )); 214 __db_dume __P (( DB *, DB_TXN *, *, *)); 215 cڡ FN * __db_g_ags_ __P (()); 216 __db_dump_ __P (( DB *, const *, (*)(*, const *), *, , )); 217 __db_dump __P (( DB *, const *, (*)(*, const *), *, , )); 218 __db_dbt __P (( DBT *, , const *, *, (*)(*, const *), )); 219 __db_hd __P (( DB *, cڡ *, , , *, (*)(*, cڡ *), VRFY_DBINFO *, db_pgno_t )); 220 __db_foٔ __P ((*, (*)(*, const *))); 221 __db__back __P ((*, const *)); 222 cڡ * __db_dbty_to_rg __P (( DBTYPE )); 223 __db_addm_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 224 __db_big_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 225 __db_ovf_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 226 __db_debug_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 227 __db_no_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 228 __db_pg_loc_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 229 __db_pg__cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 230 __db_pg_w_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 231 __db_pg_da_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 232 __db_cksum_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 233 __db_pg_e_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 234 __db_pg__cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 235 __db_pg_st_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 236 __db_pg_loc_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 237 __db_pg__42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 238 __db_pg_da_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 239 __db_lk_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 240 __db_av_big __P (( DB *, db_pgno_t , DB_TXN *, (*)(DB *, PAGE *, *, *), *)); 241 __db_aim_back __P (( DB *, PAGE *, *, *)); 242 __db_un_back __P (( DB *, PAGE *, *, *)); 243 __v_dbmove_ __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 244 __db_move_ __P (( DB *, cڡ *, cڡ *, u_t32_t )); 245 __db_move __P (( DB *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 246 __db_move_t __P (( DB *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 247 __db_mem_move __P (( DB *, DB_TXN *, const *)); 248 __v_dbme_ __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, cڡ *, u_t32_t )); 249 __db_me_ __P (( DB *, cڡ *, cڡ *, cڡ *, u_t32_t )); 250 __db_me __P (( DB *, DB_TXN *, const *, const *, const *)); 251 __db_me_t __P (( DB *, DB_TXN *, const *, const *, const *)); 252 __db_t __P (( DB *, DB_TXN *, PAGE *, u_t32_t , DBT *, **, u_int32_t *)); 253 __db_tcy __P (( DB_ENV *, DBT *, *, u_t32_t , **, u_int32_t *)); 254 __v_feid_t_ __P (( DB_ENV *, cڡ *, u_t32_t )); 255 __v_l_t_ __P (( DB_ENV *, cڡ *, u_t32_t )); 256 __db__ __P (( DB *, DB_TXN *, *, u_t32_t )); 257 __db_ __P (( DB *, DB_TXN *, *, u_t32_t )); 258 __db__t_ __P (( DB *, u_t32_t )); 259 __db__t __P (( DB *, u_t32_t )); 260 __db_un_ __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 261 __db_un __P (( DB *, DB_TXN *, u_t32_t *)); 262 __db_upgde_ __P (( DB *, cڡ *, u_t32_t )); 263 __db_upgde __P (( DB *, cڡ *, u_t32_t )); 264 __db_ϡpgno __P (( DB *, *, DB_FH *, db_pgno_t *)); 265 __db_31_offdup __P (( DB *, *, DB_FH *, , db_pgno_t *)); 266 __db_vify_ __P (( DB *, cڡ *, cڡ *, FILE *, u_t32_t )); 267 __db_vify_ __P (( DB *, cڡ *, cڡ *, *, (*)(*, cڡ *), u_t32_t )); 268 __db_vrfy_comm __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 269 __db_vrfy_dage __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 270 __db_vrfy_ma __P (( DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t , u_t32_t )); 271 __db_vrfy_ru_edback __P (( DB *, VRFY_DBINFO *)); 272 __db_lvage __P (( DB *, VRFY_DBINFO *, db_pgno_t , PAGE *, *, (*)(*, cڡ *), u_t32_t )); 273 __db_vrfy_pem __P (( DB *, PAGE *, db_pgno_t , u_t32_t , , u_int32_t, u_int32_t *, u_int32_t *)); 274 __db_vrfy_duy __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t )); 275 __db_lvage_due __P (( DB *, VRFY_DBINFO *, db_pgno_t , DBT *, *, (*)(*, cڡ *), u_t32_t )); 276 __db_vrfy_dbfo_ __P (( DB_ENV *, u_t32_t , VRFY_DBINFO **)); 277 __db_vrfy_dbfo_deroy __P (( DB_ENV *, VRFY_DBINFO *)); 278 __db_vrfy_ggefo __P (( VRFY_DBINFO *, db_pgno_t , VRFY_PAGEINFO **)); 279 __db_vrfy_puagefo __P (( DB_ENV *, VRFY_DBINFO *, VRFY_PAGEINFO *)); 280 __db_vrfy_pgt __P (( DB_ENV *, u_t32_t , DB **)); 281 __db_vrfy_pgt_g __P (( DB *, db_pgno_t , *)); 282 __db_vrfy_pgt_c __P (( DB *, db_pgno_t )); 283 __db_vrfy_pgt_xt __P (( DBC *, db_pgno_t *)); 284 __db_vrfy_chdcurs __P (( VRFY_DBINFO *, DBC **)); 285 __db_vrfy_chdput __P (( VRFY_DBINFO *, db_pgno_t , VRFY_CHILDINFO *)); 286 __db_vrfy_cct __P (( DBC *, db_pgno_t , VRFY_CHILDINFO **)); 287 __db_vrfy_cext __P (( DBC *, VRFY_CHILDINFO **)); 288 __db_vrfy_cco __P (( DBC *)); 289 __db_lvage_ __P (( VRFY_DBINFO *)); 290 __db_lvage_deroy __P (( VRFY_DBINFO *)); 291 __db_lvage_gxt __P (( VRFY_DBINFO *, DBC **, db_pgno_t *, u_t32_t *, )); 292 __db_lvage_isde __P (( VRFY_DBINFO *, db_pgno_t )); 293 __db_lvage_mkde __P (( VRFY_DBINFO *, db_pgno_t )); 294 __db_lvage_mkeded __P (( VRFY_DBINFO *, db_pgno_t , u_t32_t )); 295 __db_vrfy_dbt __P (( DBT *, , cڡ *, *, (*)(*, cڡ *), , VRFY_DBINFO *)); 297 #i defed ( __lulus ) @../dbinc_auto/dbreg_auto.h 3 #idef __dbg_AUTO_H 4 #__dbg_AUTO_H ) 5 #DB___dbg_gi 2 ) 6 s___dbg_gi_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 u_t32_t mcode ; 11 DBT mme ; 12 DBT muid ; 13 t32_t mfeid ; 14 DBTYPE my ; 15 db_pgno_t mma_pgno ; 16 u_t32_t mid ; 17 } t__dbg_gi_gs ; @../dbinc_auto/dbreg_ext.h 2 #idef _dbg_ext_h_ 3 #_dbg_ext_h_ ) 5 #i defed ( __lulus ) 9 __dbg_tup __P (( DB *, cڡ *, u_t32_t )); 10 __dbg_down __P (( DB *)); 11 __dbg_down_t __P (( DB_ENV *, FNAME *)); 12 __dbg_w_id __P (( DB *, DB_TXN *)); 13 __dbg_g_id __P (( DB *, DB_TXN *, t32_t *)); 14 __dbg_assign_id __P (( DB *, t32_t )); 15 __dbg_voke_id __P (( DB *, , t32_t )); 16 __dbg_voke_id_t __P (( DB_ENV *, FNAME *, , , t32_t )); 17 __dbg_o_id __P (( DB *, DB_TXN *, u_t32_t )); 18 __dbg_o_id_t __P (( DB_ENV *, FNAME *, u_t32_t , )); 19 __dbg_log_o __P (( DB_ENV *, FNAME *, DB_TXN *, u_t32_t )); 20 __dbg_log_id __P (( DB *, DB_TXN *, t32_t , )); 21 __dbg_gi_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, cڡ DBT *, cڡ DBT *, t32_t , DBTYPE , db_pgno_t , u_int32_t)); 22 __dbg_gi_ad __P (( DB_ENV *, *, __dbg_gi_gs **)); 23 __dbg__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 24 __dbg_gi_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 25 __dbg__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 26 __dbg_gi_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 27 __dbg__t __P (( DB_ENV *, u_t32_t )); 28 __dbg_t_ame __P (( DB_ENV *, FNAME *)); 29 __dbg_add_dby __P (( DB_ENV *, DB_LOG *, DB *, t32_t )); 30 __dbg_m_dby __P (( DB_LOG *, t32_t )); 31 __dbg_log_fes __P (( DB_ENV *, u_t32_t )); 32 __dbg_o_fes __P (( DB_ENV *, )); 33 __dbg_o_fe __P (( DB_ENV *, FNAME *)); 34 __dbg_mk_ed __P (( DB_ENV *)); 35 __dbg_vide_fes __P (( DB_ENV *, )); 36 __dbg_id_to_db __P (( DB_ENV *, DB_TXN *, DB **, t32_t , )); 37 __dbg_id_to_db_t __P (( DB_ENV *, DB_TXN *, DB **, t32_t , , )); 38 __dbg_id_to_ame __P (( DB_LOG *, t32_t , , FNAME **)); 39 __dbg_fid_to_ame __P (( DB_LOG *, u_t8_t *, , FNAME **)); 40 __dbg_g_me __P (( DB_ENV *, u_t8_t *, **)); 41 __dbg_do_ݒ __P (( DB_ENV *, DB_TXN *, DB_LOG *, u_t8_t *, *, DBTYPE , t32_t , db_pgno_t , *, u_t32_t , u_int32_t)); 42 __dbg_zy_id __P (( DB *)); 44 #i defed ( __lulus ) @../dbinc_auto/env_ext.h 2 #idef _v_ext_h_ 3 #_v_ext_h_ ) 5 #i defed ( __lulus ) 9 __v_loc_ __P (( REGINFO *, size_t )); 10 size_t __v_loc_ovhd __P (()); 11 size_t __v_loc_size __P ((size_t)); 12 __v_loc __P (( REGINFO *, size_t , *)); 13 __v_loc_ __P (( REGINFO *, *)); 14 __v_loc_t __P (( REGINFO *, u_t32_t )); 15 __v_ad_db_cfig __P (( DB_ENV *)); 16 __cfig_l __P ((*, *[])); 17 __v_chk_ __P (( DB_ENV *, u_t32_t )); 18 __v_thad_ __P (( DB_ENV *, )); 19 __v_t_e __P (( DB_ENV *, DB_THREAD_INFO **, DB_THREAD_STATE )); 20 * __v_thad_id_rg __P (( DB_ENV *, pid_t , db_thadid_t , *)); 21 __db_fe_exnd __P (( DB_ENV *, DB_FH *, size_t )); 22 __db_fe_mui_wre __P (( DB_ENV *, const *)); 23 __db_fe_wre __P (( DB_ENV *, DB_FH *, u_t32_t , u_int32_t, )); 24 __db_v_deroy __P (( DB_ENV *)); 25 __v_t_loc __P (( DB_ENV *, *(*)( size_t ), *(*)(*, size_t), (*)(*))); 26 __v_g_y_ags __P (( DB_ENV *, u_t32_t *)); 27 __v_t_y __P (( DB_ENV *, cڡ *, u_t32_t )); 28 __v_t_ags __P (( DB_ENV *, u_t32_t , )); 29 __v_t_da_d __P (( DB_ENV *, const *)); 30 __v_t_rmed_d __P (( DB_ENV *, , u_t32_t )); 31 __v_t_r __P (( DB_ENV *, (*)(const DB_ENV *, const *, const *))); 32 __v_g_rfe __P (( DB_ENV *, FILE **)); 33 __v_t_rfe __P (( DB_ENV *, FILE *)); 34 __v_g_fx __P (( DB_ENV *, const **)); 35 __v_t_fx __P (( DB_ENV *, const *)); 36 __v_t_msg __P (( DB_ENV *, (*)(const DB_ENV *, const *))); 37 __v_g_msgfe __P (( DB_ENV *, FILE **)); 38 __v_t_msgfe __P (( DB_ENV *, FILE *)); 39 __v_t_nic __P (( DB_ENV *, (*)(DB_ENV *, ))); 40 __v_t_shm_key __P (( DB_ENV *, )); 41 __v_t_tmp_d __P (( DB_ENV *, const *)); 42 __v_t_vbo __P (( DB_ENV *, u_t32_t , )); 43 __db_mi_v __P (( DB_ENV *, const *)); 44 __db_mi_ݒ __P (( DB_ENV *, const *, )); 45 __db_v_cfig __P (( DB_ENV *, *, u_t32_t )); 46 __db_ame __P (( DB_ENV *, APPNAME , cڡ *, u_t32_t , DB_FH **, **)); 47 __v_ݒ_ __P (( DB_ENV *, cڡ *, u_t32_t , )); 48 __v_ݒ __P (( DB_ENV *, cڡ *, u_t32_t , )); 49 __v_move __P (( DB_ENV *, cڡ *, u_t32_t )); 50 __v_cfig __P (( DB_ENV *, cڡ *, u_t32_t , )); 51 __v_o_ __P (( DB_ENV *, u_t32_t )); 52 __v_o __P (( DB_ENV *, )); 53 __v_g_ݒ_ags __P (( DB_ENV *, u_t32_t *)); 54 __db_ec __P (( DB_ENV *, DB_LSN *, DB_LSN *, , u_t32_t )); 55 __log_backup __P (( DB_ENV *, DB_LOGC *, DB_LSN *, DB_LSN *, u_t32_t )); 56 __v_ݒfes __P (( DB_ENV *, DB_LOGC *, *, DBT *, DB_LSN *, DB_LSN *, , )); 57 __v__c __P (( DB_ENV *, u_t32_t )); 58 __v_ch __P (( DB_ENV *, u_t32_t *, , )); 59 __v_tu_ __P (( DB_ENV *)); 60 __v_tu_off __P (( DB_ENV *, u_t32_t )); 61 __v_nic_t __P (( DB_ENV *, )); 62 __v_f_emt __P (( DB_ENV *)); 63 __v_f_deemt __P (( DB_ENV *)); 64 __v_dach __P (( DB_ENV *, )); 65 __v_move_v __P (( DB_ENV *)); 66 __v_gi_ch __P (( DB_ENV *, REGINFO *, size_t )); 67 __v_gi_dach __P (( DB_ENV *, REGINFO *, )); 68 __vg_gi __P (( DB_ENV *, *)); 69 __vg_uegi __P (( DB_ENV *, )); 70 __vg_xuock __P (( DB_ENV *)); 71 __v__t_ __P (( DB_ENV *, u_t32_t )); 72 __db_t_fh __P (( DB_ENV *, cڡ *, DB_FH *, u_t32_t )); 73 __db_t_feid __P (( DB_ENV *, u_t8_t *, const *)); 74 __db_dl __P (( DB_ENV *, cڡ *, u_lg )); 75 __db_dl_p __P (( DB_ENV *, cڡ *, u_lg , , const *)); 76 __db_dlbys __P (( DB_ENV *, cڡ *, u_lg , u_long, u_long)); 77 __db_t_gfo __P (( DB_ENV *, REGINFO *, cڡ *, u_t32_t )); 78 __db__n_but __P (( DB_ENV *)); 79 #ide HAVE_REPLICATION_THREADS 80 __pmgr_o __P (( DB_ENV *)); 82 #ide HAVE_REPLICATION_THREADS 83 __pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 85 #ide HAVE_REPLICATION_THREADS 86 __pmgr_g_ack_picy __P (( DB_ENV *, *)); 88 #ide HAVE_REPLICATION_THREADS 89 __pmgr_t_ack_picy __P (( DB_ENV *, )); 91 #ide HAVE_REPLICATION_THREADS 92 __pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 94 #ide HAVE_REPLICATION_THREADS 95 __pmgr_se_li __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 97 #ide HAVE_REPLICATION_THREADS 98 __pmgr_t __P (( DB_ENV *, , u_t32_t )); 100 #ide HAVE_REPLICATION_THREADS 101 __pmgr__ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 103 #ide HAVE_REPLICATION_THREADS 104 __pmgr__t_ __P (( DB_ENV *, u_t32_t )); 106 #ide HAVE_REPLICATION_THREADS 107 __pmgr_hd_evt __P (( DB_ENV *, u_t32_t , *)); 110 #i defed ( __lulus ) @../dbinc_auto/fileops_auto.h 3 #idef __f_AUTO_H 4 #__f_AUTO_H ) 5 #DB___f_ 143 ) 6 s___f__gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 DBT mme ; 11 u_t32_t mame ; 12 u_t32_t mmode ; 13 } t__f__gs ; 15 #DB___f_move 144 ) 16 s___f_move_gs { 17 u_t32_t mty ; 18 DB_TXN * mtx ; 19 DB_LSN mev_l ; 20 DBT mme ; 21 DBT mfid ; 22 u_t32_t mame ; 23 } t__f_move_gs ; 25 #DB___f_wre 145 ) 26 s___f_wre_gs { 27 u_t32_t mty ; 28 DB_TXN * mtx ; 29 DB_LSN mev_l ; 30 DBT mme ; 31 u_t32_t mame ; 32 u_t32_t mpgsize ; 33 db_pgno_t mgo ; 34 u_t32_t mofft ; 35 DBT mge ; 36 u_t32_t mag ; 37 } t__f_wre_gs ; 39 #DB___f_me 146 ) 40 #DB___f_me_noundo 150 ) 41 s___f_me_gs { 42 u_t32_t mty ; 43 DB_TXN * mtx ; 44 DB_LSN mev_l ; 45 DBT mdme ; 46 DBT mwme ; 47 DBT mfeid ; 48 u_t32_t mame ; 49 } t__f_me_gs ; 51 #DB___f_fe_move 141 ) 52 s___f_fe_move_gs { 53 u_t32_t mty ; 54 DB_TXN * mtx ; 55 DB_LSN mev_l ; 56 DBT m_fid ; 57 DBT mtmp_fid ; 58 DBT mme ; 59 u_t32_t mame ; 60 u_t32_t mchd ; 61 } t__f_fe_move_gs ; @../dbinc_auto/fileops_ext.h 2 #idef _fes_ext_h_ 3 #_fes_ext_h_ ) 5 #i defed ( __lulus ) 9 __f__log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, u_int32_t, u_int32_t)); 10 __f__ad __P (( DB_ENV *, *, __f__gs **)); 11 __f_move_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, u_int32_t)); 12 __f_move_ad __P (( DB_ENV *, *, __f_move_gs **)); 13 __f_wre_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, u_t32_t, u_t32_t, db_pgno_t , u_int32_t, const DBT *, u_int32_t)); 14 __f_wre_ad __P (( DB_ENV *, *, __f_wre_gs **)); 15 __f_me_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t)); 16 __f_me_noundo_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t)); 17 __f_me_t_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t, u_int32_t)); 18 __f_me_ad __P (( DB_ENV *, *, __f_me_gs **)); 19 __f_fe_move_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t, u_int32_t)); 20 __f_fe_move_ad __P (( DB_ENV *, *, __f_fe_move_gs **)); 21 __f__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 22 __f__t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 23 __f_move_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 24 __f_wre_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 25 __f_me_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 26 __f_fe_move_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 27 __f__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 28 __f_ __P (( DB_ENV *, DB_TXN *, DB_FH **, cڡ *, APPNAME , , u_t32_t )); 29 __f_move __P (( DB_ENV *, DB_TXN *, u_t8_t *, cڡ *, APPNAME , u_t32_t )); 30 __f_wre __P (( DB_ENV *, DB_TXN *, cڡ *, APPNAME , DB_FH *, u_t32_t , db_pgno_t , u_int32_t, *, u_int32_t, u_int32_t, u_int32_t)); 31 __f_me __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, u_t8_t *, APPNAME , , u_t32_t )); 32 __f__cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 33 __f_move_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 34 __f_wre_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 35 __f_me_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 36 __f_me_noundo_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 37 __f_fe_move_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 38 __f_lock_hd __P (( DB_ENV *, DB *, DB_LOCKER *, db_lockmode_t , DB_LOCK *, u_t32_t )); 39 __f_fe_tup __P (( DB *, DB_TXN *, cڡ *, , u_t32_t , u_int32_t *)); 40 __f_subdb_tup __P (( DB *, DB_TXN *, cڡ *, cڡ *, , u_t32_t )); 41 __f_move_tup __P (( DB *, DB_TXN *, cڡ *, u_t32_t )); 42 __f_ad_ma __P (( DB_ENV *, cڡ *, u_t8_t *, size_t , DB_FH *, , size_t *)); 43 __f_dummy __P (( DB *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 44 __f_dbme __P (( DB *, const *, const *)); 46 #i defed ( __lulus ) @../dbinc_auto/hash_auto.h 3 #idef __ham_AUTO_H 4 #__ham_AUTO_H ) 5 #DB___ham_sd 21 ) 6 s___ham_sd_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 u_t32_t mcode ; 11 t32_t mfeid ; 12 db_pgno_t mpgno ; 13 u_t32_t mndx ; 14 DB_LSN mg ; 15 DBT mkey ; 16 DBT mda ; 17 } t__ham_sd_gs ; 19 #DB___ham_wge 22 ) 20 s___ham_wge_gs { 21 u_t32_t mty ; 22 DB_TXN * mtx ; 23 DB_LSN mev_l ; 24 u_t32_t mcode ; 25 t32_t mfeid ; 26 db_pgno_t mev_pgno ; 27 DB_LSN mevl ; 28 db_pgno_t mw_pgno ; 29 DB_LSN mg ; 30 db_pgno_t mxt_pgno ; 31 DB_LSN mx ; 32 } t__ham_wge_gs ; 34 #DB___ham_lda 24 ) 35 s___ham_lda_gs { 36 u_t32_t mty ; 37 DB_TXN * mtx ; 38 DB_LSN mev_l ; 39 t32_t mfeid ; 40 u_t32_t mcode ; 41 db_pgno_t mpgno ; 42 DBT mgeimage ; 43 DB_LSN mg ; 44 } t__ham_lda_gs ; 46 #DB___ham_a 25 ) 47 s___ham_a_gs { 48 u_t32_t mty ; 49 DB_TXN * mtx ; 50 DB_LSN mev_l ; 51 t32_t mfeid ; 52 db_pgno_t mpgno ; 53 u_t32_t mndx ; 54 DB_LSN mg ; 55 t32_t moff ; 56 DBT mdem ; 57 DBT mwem ; 58 u_t32_t mmakedup ; 59 } t__ham_a_gs ; 61 #DB___ham_cyge 28 ) 62 s___ham_cyge_gs { 63 u_t32_t mty ; 64 DB_TXN * mtx ; 65 DB_LSN mev_l ; 66 t32_t mfeid ; 67 db_pgno_t mpgno ; 68 DB_LSN mg ; 69 db_pgno_t mxt_pgno ; 70 DB_LSN mx ; 71 db_pgno_t mext_pgno ; 72 DB_LSN mex ; 73 DBT mge ; 74 } t__ham_cyge_gs ; 76 #DB___ham_magroup_42 29 ) 77 s___ham_magroup_42_gs { 78 u_t32_t mty ; 79 DB_TXN * mtx ; 80 DB_LSN mev_l ; 81 t32_t mfeid ; 82 u_t32_t mbuck ; 83 db_pgno_t mmmpgno ; 84 DB_LSN mmm ; 85 db_pgno_t mmpgno ; 86 DB_LSN mm ; 87 db_pgno_t mpgno ; 88 DB_LSN mg ; 89 u_t32_t mwloc ; 90 } t__ham_magroup_42_gs ; 92 #DB___ham_magroup 29 ) 93 s___ham_magroup_gs { 94 u_t32_t mty ; 95 DB_TXN * mtx ; 96 DB_LSN mev_l ; 97 t32_t mfeid ; 98 u_t32_t mbuck ; 99 db_pgno_t mmmpgno ; 100 DB_LSN mmm ; 101 db_pgno_t mmpgno ; 102 DB_LSN mm ; 103 db_pgno_t mpgno ; 104 DB_LSN mg ; 105 u_t32_t mwloc ; 106 db_pgno_t mϡ_pgno ; 107 } t__ham_magroup_gs ; 109 #DB___ham_grouoc_42 32 ) 110 s___ham_grouoc_42_gs { 111 u_t32_t mty ; 112 DB_TXN * mtx ; 113 DB_LSN mev_l ; 114 t32_t mfeid ; 115 DB_LSN mma_l ; 116 db_pgno_t mt_pgno ; 117 u_t32_t mnum ; 118 db_pgno_t m ; 119 } t__ham_grouoc_42_gs ; 121 #DB___ham_grouoc 32 ) 122 s___ham_grouoc_gs { 123 u_t32_t mty ; 124 DB_TXN * mtx ; 125 DB_LSN mev_l ; 126 t32_t mfeid ; 127 DB_LSN mma_l ; 128 db_pgno_t mt_pgno ; 129 u_t32_t mnum ; 130 db_pgno_t munud ; 131 db_pgno_t mϡ_pgno ; 132 } t__ham_grouoc_gs ; 134 #DB___ham_cudj 33 ) 135 s___ham_cudj_gs { 136 u_t32_t mty ; 137 DB_TXN * mtx ; 138 DB_LSN mev_l ; 139 t32_t mfeid ; 140 db_pgno_t mpgno ; 141 u_t32_t mdx ; 142 u_t32_t mn ; 143 u_t32_t mdup_off ; 144 madd ; 145 mis_dup ; 146 u_t32_t md ; 147 } t__ham_cudj_gs ; 149 #DB___ham_chgpg 34 ) 150 s___ham_chgpg_gs { 151 u_t32_t mty ; 152 DB_TXN * mtx ; 153 DB_LSN mev_l ; 154 t32_t mfeid ; 155 db_ham_mode mmode ; 156 db_pgno_t md_pgno ; 157 db_pgno_t mw_pgno ; 158 u_t32_t md_dx ; 159 u_t32_t mw_dx ; 160 } t__ham_chgpg_gs ; @../dbinc_auto/hash_ext.h 2 #idef _hash_ext_h_ 3 #_hash_ext_h_ ) 5 #i defed ( __lulus ) 9 __ham_quick_de __P (( DBC *)); 10 __hamc_ __P (( DBC *)); 11 __hamc_cou __P (( DBC *, db_o_t *)); 12 __hamc_dup __P (( DBC *, DBC *)); 13 u_t32_t __ham__hash __P (( DBC *, u_t8_t *, u_int32_t)); 14 __ham__dbt __P (( DB_ENV *, DBT *, u_t32_t , **, u_int32_t *)); 15 __hamc_upde __P (( DBC *, u_t32_t , db_ham_cudj , )); 16 __ham_g_i __P (( DB *, db_pgno_t , u_t32_t , DBC ***)); 17 __ham_sd_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , u_t32_t, DB_LSN *, cڡ DBT *, const DBT *)); 18 __ham_sd_ad __P (( DB_ENV *, *, __ham_sd_gs **)); 19 __ham_wge_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *)); 20 __ham_wge_ad __P (( DB_ENV *, *, __ham_wge_gs **)); 21 __ham_lda_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , cڡ DBT *, DB_LSN *)); 22 __ham_lda_ad __P (( DB_ENV *, *, __ham_lda_gs **)); 23 __ham_a_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , u_t32_t, DB_LSN *, t32_t , cڡ DBT *, const DBT *, u_int32_t)); 24 __ham_a_ad __P (( DB_ENV *, *, __ham_a_gs **)); 25 __ham_cyge_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, cڡ DBT *)); 26 __ham_cyge_ad __P (( DB_ENV *, *, __ham_cyge_gs **)); 27 __ham_magroup_42_ad __P (( DB_ENV *, *, __ham_magroup_42_gs **)); 28 __ham_magroup_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t)); 29 __ham_magroup_ad __P (( DB_ENV *, *, __ham_magroup_gs **)); 30 __ham_grouoc_42_ad __P (( DB_ENV *, *, __ham_grouoc_42_gs **)); 31 __ham_grouoc_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, db_pgno_t , u_int32_t, db_pgno_t, db_pgno_t)); 32 __ham_grouoc_ad __P (( DB_ENV *, *, __ham_grouoc_gs **)); 33 __ham_cudj_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , u_int32_t, u_int32_t, u_int32_t, , , u_int32_t)); 34 __ham_cudj_ad __P (( DB_ENV *, *, __ham_cudj_gs **)); 35 __ham_chgpg_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_ham_mode , db_pgno_t , db_pgno_t, u_int32_t, u_int32_t)); 36 __ham_chgpg_ad __P (( DB_ENV *, *, __ham_chgpg_gs **)); 37 __ham__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 38 __ham_sd_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 39 __ham_wge_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 40 __ham_lda_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 41 __ham_a_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 42 __ham_cyge_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 43 __ham_magroup_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 44 __ham_magroup_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 45 __ham_grouoc_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 46 __ham_grouoc_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 47 __ham_cudj_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 48 __ham_chgpg_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 49 __ham__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 50 __ham_pg __P (( DB_ENV *, DB *, db_pgno_t , *, DBT *)); 51 __ham_pgout __P (( DB_ENV *, DB *, db_pgno_t , *, DBT *)); 52 __ham_msw __P ((*)); 53 __ham_add_dup __P (( DBC *, DBT *, u_t32_t , db_pgno_t *)); 54 __ham_dup_cvt __P (( DBC *)); 55 __ham_make_dup __P (( DB_ENV *, cڡ DBT *, DBT * d , **, u_t32_t *)); 56 __ham_dch __P (( DBC *, DBT *, u_t32_t *, *, u_int32_t)); 57 u_t32_t __ham_func2 __P (( DB *, const *, u_int32_t)); 58 u_t32_t __ham_func3 __P (( DB *, const *, u_int32_t)); 59 u_t32_t __ham_func4 __P (( DB *, const *, u_int32_t)); 60 u_t32_t __ham_func5 __P (( DB *, const *, u_int32_t)); 61 u_t32_t __ham_ __P (( DB *, const *, u_int32_t)); 62 __ham_g_ma __P (( DBC *)); 63 __ham_a_ma __P (( DBC *)); 64 __ham_dty_ma __P (( DBC *, u_t32_t )); 65 __ham_db_ __P (( DB *)); 66 __ham_db_o __P (( DB *)); 67 __ham_g_h_f __P (( DB *, u_t32_t *)); 68 __ham_t_h_com __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 69 __ham_g_h_m __P (( DB *, u_t32_t *)); 70 __ham_ݒ __P (( DB *, DB_TXN *, cڡ * me , db_pgno_t , u_t32_t )); 71 __ham_machk __P (( DB *, cڡ *, HMETA *)); 72 __ham_w_fe __P (( DB *, DB_TXN *, DB_FH *, const *)); 73 __ham_w_subdb __P (( DB *, DB *, DB_TXN *)); 74 __ham_em __P (( DBC *, db_lockmode_t , db_pgno_t *)); 75 __ham_em_t __P (( DBC *)); 76 __ham_em_ __P (( DBC *)); 77 __ham_em_ϡ __P (( DBC *, db_lockmode_t , db_pgno_t *)); 78 __ham_em_f __P (( DBC *, db_lockmode_t , db_pgno_t *)); 79 __ham_em_ev __P (( DBC *, db_lockmode_t , db_pgno_t *)); 80 __ham_em_xt __P (( DBC *, db_lockmode_t , db_pgno_t *)); 81 __ham_ __P (( DB *, DB_TXN *, PAGE * p , db_dx_t * dxp , cڡ DBT *, const DBT *, , )); 82 __ham_gdex __P (( DB *, DB_TXN *, PAGE *, cڡ DBT *, , *, db_dx_t *)); 83 __ham_vify_s܋d_ge __P (( DB *, DB_TXN *, PAGE *)); 84 __ham_st_ge __P (( DB *, DB_TXN *, PAGE **, PAGE *)); 85 __ham_d_ __P (( DBC *, )); 86 __ham_ __P (( DBC *, DBT *, u_t32_t )); 87 __ham_ڷge_a __P (( DB *, PAGE *, u_t32_t , t32_t , u_t32_t, , DBT *)); 88 __ham_l_ge __P (( DBC *, u_t32_t , u_int32_t)); 89 __ham_add_ __P (( DBC *, cڡ DBT *, const DBT *, )); 90 __ham_cy __P (( DB *, DB_TXN *, PAGE *, u_t32_t , PAGE *, db_dx_t *)); 91 __ham_add_ovge __P (( DBC *, PAGE *, , PAGE **)); 92 __ham_g_age __P (( DBC *, db_lockmode_t )); 93 __ham_xt_age __P (( DBC *, db_pgno_t )); 94 __ham_lock_buck __P (( DBC *, db_lockmode_t )); 95 __ham_d __P (( DB *, PAGE *, u_t32_t )); 96 __ham_sd_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 97 __ham_wge_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 98 __ham_a_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 99 __ham_lda_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 100 __ham_cyge_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 101 __ham_magroup_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 102 __ham_grouoc_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 103 __ham_cudj_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 104 __ham_chgpg_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 105 __ham_magroup_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 106 __ham_grouoc_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 107 __ham_aim __P (( DB *, DB_TXN * txn )); 108 __ham_un __P (( DBC *, u_t32_t *)); 109 __ham_ __P (( DBC *, *, u_t32_t )); 110 __ham__t __P (( DBC *, u_t32_t )); 111 __ham_t_curs __P (( DBC *)); 112 __ham_av __P (( DBC *, db_lockmode_t , (*)( DB *, PAGE *, *, *), *, )); 113 __db_no_hash_am __P (( DB_ENV *)); 114 __ham_30_hashma __P (( DB *, *, u_t8_t *)); 115 __ham_30_sizefix __P (( DB *, DB_FH *, *, u_t8_t *)); 116 __ham_31_hashma __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 117 __ham_31_hash __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 118 __ham_46_hashma __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 119 __ham_46_hash __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 120 __ham_vrfy_ma __P (( DB *, VRFY_DBINFO *, HMETA *, db_pgno_t , u_t32_t )); 121 __ham_vrfy __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 122 __ham_vrfy_ruu __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t )); 123 __ham_vrfy_hashg __P (( DB *, u_t32_t , HMETA *, u_t32_t, db_pgno_t , u_int32_t, u_int32_t (*) __P((DB *, const *, u_int32_t)))); 124 __ham_lvage __P (( DB *, VRFY_DBINFO *, db_pgno_t , PAGE *, *, (*)(*, cڡ *), u_t32_t )); 125 __ham_ma2pgt __P (( DB *, VRFY_DBINFO *, HMETA *, u_t32_t , DB *)); 127 #i defed ( __lulus ) @../dbinc_auto/hmac_ext.h 2 #idef _hmac_ext_h_ 3 #_hmac_ext_h_ ) 5 #i defed ( __lulus ) 9 __db_chksum __P ((*, u_t8_t *, size_t , u_int8_t *, u_int8_t *)); 10 __db_dive_mac __P (( u_t8_t *, size_t , u_int8_t *)); 11 __db_check_chksum __P (( DB_ENV *, *, DB_CIPHER *, u_t8_t *, *, size_t , )); 12 __db_SHA1Tnsfm __P (( u_t32_t *, *)); 13 __db_SHA1In __P (( SHA1_CTX *)); 14 __db_SHA1Upde __P (( SHA1_CTX *, *, size_t )); 15 __db_SHA1F __P ((*, SHA1_CTX *)); 17 #i defed ( __lulus ) @../dbinc_auto/lock_ext.h 2 #idef _lock_ext_h_ 3 #_lock_ext_h_ ) 5 #i defed ( __lulus ) 9 __lock_vec_ __P (( DB_ENV *, u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)); 10 __lock_vec __P (( DB_ENV *, DB_LOCKER *, u_t32_t , DB_LOCKREQ *, , DB_LOCKREQ **)); 11 __lock_g_ __P (( DB_ENV *, u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)); 12 __lock_g __P (( DB_ENV *, DB_LOCKER *, u_t32_t , cڡ DBT *, db_lockmode_t , DB_LOCK *)); 13 __lock_g_ __P (( DB_LOCKTAB *, DB_LOCKER *, u_t32_t , cڡ DBT *, db_lockmode_t , db_timeout_t , DB_LOCK *)); 14 __lock_put_ __P (( DB_ENV *, DB_LOCK *)); 15 __lock_put __P (( DB_ENV *, DB_LOCK *)); 16 __lock_downgde __P (( DB_ENV *, DB_LOCK *, db_lockmode_t , u_t32_t )); 17 __lock_lock_is_ __P (( DB_ENV *, DB_LOCKER *, DB_LOCKER *, *)); 18 __lock_ome __P (( DB_LOCKTAB *, DB_LOCKOBJ *, *, u_t32_t )); 19 __lock_de_ __P (( DB_ENV *, u_t32_t , u_int32_t, *)); 20 __lock_de __P (( DB_ENV *, u_t32_t , *)); 21 __lock_chk __P (( DB_ENV *)); 22 __lock_id_ __P (( DB_ENV *, u_t32_t *)); 23 __lock_id __P (( DB_ENV *, u_t32_t *, DB_LOCKER **)); 24 __lock_t_thad_id __P ((*, pid_t , db_thadid_t )); 25 __lock_id__ __P (( DB_ENV *, u_t32_t )); 26 __lock_id_ __P (( DB_ENV *, DB_LOCKER *)); 27 __lock_id_t __P (( DB_ENV *, u_t32_t , u_int32_t)); 28 __lock_glock __P (( DB_LOCKTAB *, u_t32_t , , DB_LOCKER **)); 29 __lock_glock_t __P (( DB_LOCKTAB *, u_t32_t , , DB_LOCKER **)); 30 __lock_addmylock __P (( DB_ENV *, u_t32_t , u_int32_t)); 31 __lock_mylock __P (( DB_LOCKTAB *, DB_LOCKER *)); 32 __lock_lock __P (( DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *)); 33 __lock_fix_li __P (( DB_ENV *, DBT *, u_t32_t )); 34 __lock_g_li __P (( DB_ENV *, DB_LOCKER *, u_t32_t , db_lockmode_t , DBT *)); 35 __lock_li_t __P (( DB_ENV *, DBT *)); 36 __lock_v_ __P (( DB_ENV *)); 37 __lock_v_deroy __P (( DB_ENV *)); 38 __lock_g_lk_cis __P (( DB_ENV *, cڡ u_t8_t **, *)); 39 __lock_t_lk_cis __P (( DB_ENV *, u_t8_t *, )); 40 __lock_g_lk_de __P (( DB_ENV *, u_t32_t *)); 41 __lock_t_lk_de __P (( DB_ENV *, u_t32_t )); 42 __lock_g_lk_max_locks __P (( DB_ENV *, u_t32_t *)); 43 __lock_t_lk_max_locks __P (( DB_ENV *, u_t32_t )); 44 __lock_g_lk_max_locks __P (( DB_ENV *, u_t32_t *)); 45 __lock_t_lk_max_locks __P (( DB_ENV *, u_t32_t )); 46 __lock_g_lk_max_objes __P (( DB_ENV *, u_t32_t *)); 47 __lock_t_lk_max_objes __P (( DB_ENV *, u_t32_t )); 48 __lock_g_v_timeout __P (( DB_ENV *, db_timeout_t *, u_t32_t )); 49 __lock_t_v_timeout __P (( DB_ENV *, db_timeout_t , u_t32_t )); 50 __lock_ݒ __P (( DB_ENV *, )); 51 __lock_v_esh __P (( DB_ENV *)); 52 u_t32_t __lock_gi_mux_cou __P (( DB_ENV *)); 53 __lock__ __P (( DB_ENV *, DB_LOCK_STAT **, u_t32_t )); 54 __lock__t_ __P (( DB_ENV *, u_t32_t )); 55 __lock__t __P (( DB_ENV *, u_t32_t )); 56 __lock_ock __P (( DB_LOCKTAB *, DB_MSGBUF * mbp , __db_lock *, )); 57 __lock_t_timeout __P (( DB_ENV *, DB_LOCKER *, db_timeout_t , u_t32_t )); 58 __lock_t_timeout_ __P (( DB_ENV *, DB_LOCKER *, db_timeout_t , u_t32_t )); 59 __lock_h_timeout __P (( DB_ENV *, DB_LOCKER *, DB_LOCKER *)); 60 __lock_expes __P (( DB_ENV *, db_timeec *, db_timeout_t )); 61 __lock_exped __P (( DB_ENV *, db_timeec *, db_timespec *)); 62 u_t32_t __lock_ohash __P ((cڡ DBT *)); 63 u_t32_t __lock_lhash __P (( DB_LOCKOBJ *)); 64 __lock_nomem __P (( DB_ENV *, const *)); 66 #i defed ( __lulus ) @../dbinc_auto/log_ext.h 2 #idef _log_ext_h_ 3 #_log_ext_h_ ) 5 #i defed ( __lulus ) 9 __log_ݒ __P (( DB_ENV *, )); 10 __log_fd __P (( DB_LOG *, , u_t32_t *, logfe_vidy *)); 11 __log_vid __P (( DB_LOG *, u_t32_t , , DB_FH **, u_t32_t, logfe_vidy *, u_int32_t *)); 12 __log_v_esh __P (( DB_ENV *)); 13 __log_g_ched_ckp_l __P (( DB_ENV *, DB_LSN *)); 14 u_t32_t __log_gi_mux_cou __P (( DB_ENV *)); 15 __log_vun __P (( DB_ENV *, DB_LSN *, DB_LSN *, DB_LSN *)); 16 __log_is_outded __P (( DB_ENV *, u_t32_t , *)); 17 __log_zo __P (( DB_ENV *, DB_LSN *)); 18 __log_mem_loff __P (( DB_LOG *, DB_LSN *, size_t *)); 19 __log_mem_wfe __P (( DB_LOG *, u_t32_t )); 20 __log_mem_chka __P (( DB_LOG *, size_t )); 21 __log_mem_cyout __P (( DB_LOG *, size_t , *, size_t)); 22 __log_mem_cy __P (( DB_LOG *, size_t , *, size_t)); 23 __log_t_vsi __P (( DB_ENV *, u_t32_t )); 24 __log_g_dvsi __P (( DB_ENV *, u_t32_t *)); 25 __log_chive_ __P (( DB_ENV *, **[], u_t32_t )); 26 __log_g_ab_l __P (( DB_ENV *, DB_LSN *)); 27 __log_autemove __P (( DB_ENV *)); 28 __log_check_ge_l __P (( DB_ENV *, DB *, DB_LSN *)); 29 __log_tf_pi __P (( DB_ENV *, DB_TXN *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 30 __log_tf_ __P (( DB_ENV *, DB_TXN *, cڡ *, va_li )); 31 __log_tf __P (( DB_ENV *, DB_TXN *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 32 __log_curs_ __P (( DB_ENV *, DB_LOGC **, u_t32_t )); 33 __log_curs __P (( DB_ENV *, DB_LOGC **)); 34 __logc_o __P (( DB_LOGC *)); 35 __logc_vsi __P (( DB_LOGC *, u_t32_t *)); 36 __logc_g __P (( DB_LOGC *, DB_LSN *, DBT *, u_t32_t )); 37 __log_p_l __P (( DB_ENV *, REP_CONTROL *, DBT *, DB_LSN *, DB_LSN *)); 38 __log_v_ __P (( DB_ENV *)); 39 __log_v_deroy __P (( DB_ENV *)); 40 __log_g_lg_bsize __P (( DB_ENV *, u_t32_t *)); 41 __log_t_lg_bsize __P (( DB_ENV *, u_t32_t )); 42 __log_g_lg_femode __P (( DB_ENV *, *)); 43 __log_t_lg_femode __P (( DB_ENV *, )); 44 __log_g_lg_max __P (( DB_ENV *, u_t32_t *)); 45 __log_t_lg_max __P (( DB_ENV *, u_t32_t )); 46 __log_g_lg_gimax __P (( DB_ENV *, u_t32_t *)); 47 __log_t_lg_gimax __P (( DB_ENV *, u_t32_t )); 48 __log_g_lg_d __P (( DB_ENV *, const **)); 49 __log_t_lg_d __P (( DB_ENV *, const *)); 50 __log_g_ags __P (( DB_ENV *, u_t32_t *)); 51 __log_t_ags __P (( DB_ENV *, u_t32_t , )); 52 __log_check_sizes __P (( DB_ENV *, u_t32_t , u_int32_t)); 53 __log_put_ __P (( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 54 __log_put __P (( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 55 __log_cut_l __P (( DB_ENV *, DB_LSN *, u_t32_t *, u_int32_t *)); 56 __log_wfe __P (( DB_LOG *, DB_LSN *, u_t32_t , u_int32_t)); 57 __log_ush_ __P (( DB_ENV *, cڡ DB_LSN *)); 58 __log_ush __P (( DB_ENV *, cڡ DB_LSN *)); 59 __log_ush_t __P (( DB_LOG *, cڡ DB_LSN *, )); 60 __log_fe_ __P (( DB_ENV *, cڡ DB_LSN *, *, size_t )); 61 __log_me __P (( DB_LOG *, u_t32_t , **, DB_FH **, u_int32_t)); 62 __log_p_put __P (( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 63 __log__ __P (( DB_ENV *, DB_LOG_STAT **, u_t32_t )); 64 __log__t_ __P (( DB_ENV *, u_t32_t )); 65 __log__t __P (( DB_ENV *, u_t32_t )); 67 #i defed ( __lulus ) @../dbinc_auto/mp_ext.h 2 #idef _mp_ext_h_ 3 #_mp_ext_h_ ) 5 #i defed ( __lulus ) 9 __memp_loc __P (( DB_MPOOL *, REGINFO *, MPOOLFILE *, size_t , roff_t *, *)); 10 __memp_ __P (( REGINFO *, MPOOLFILE *, *)); 11 #ifde DIAGNOSTIC 12 __memp_check_d __P (( DB_ENV *, DB_MPOOL_HASH *)); 14 __memp_bhwre __P (( DB_MPOOL *, DB_MPOOL_HASH *, MPOOLFILE *, BH *, )); 15 __memp_pgad __P (( DB_MPOOLFILE *, DB_MPOOL_HASH *, BH *, )); 16 __memp_pg __P (( DB_MPOOLFILE *, BH *, )); 17 __memp_bh __P (( DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, u_t32_t )); 18 __memp_fg_ __P (( DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_t32_t , *)); 19 __memp_fg __P (( DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_t32_t , *)); 20 __memp_f_ __P (( DB_ENV *, DB_MPOOLFILE **, u_t32_t )); 21 __memp_f __P (( DB_ENV *, DB_MPOOLFILE **)); 22 __memp_t_r_n __P (( DB_MPOOLFILE *, u_t32_t )); 23 __memp_g_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 24 __memp_t_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 25 __memp_g_ags __P (( DB_MPOOLFILE *, u_t32_t *)); 26 __memp_t_ags __P (( DB_MPOOLFILE *, u_t32_t , )); 27 __memp_g_y __P (( DB_MPOOLFILE *, *)); 28 __memp_t_y __P (( DB_MPOOLFILE *, )); 29 __memp_t_l_offt __P (( DB_MPOOLFILE *, t32_t )); 30 __memp_t_pgcook __P (( DB_MPOOLFILE *, DBT *)); 31 __memp_g_ϡ_pgno __P (( DB_MPOOLFILE *, db_pgno_t *)); 32 * __memp_ __P (( DB_MPOOLFILE *)); 33 * __memp_s __P (( DB_MPOOL *, MPOOLFILE *)); 34 __memp_fݒ_ __P (( DB_MPOOLFILE *, cڡ *, u_t32_t , , size_t )); 35 __memp_fݒ __P (( DB_MPOOLFILE *, MPOOLFILE *, cڡ *, u_t32_t , , size_t )); 36 __memp_fo_ __P (( DB_MPOOLFILE *, u_t32_t )); 37 __memp_fo __P (( DB_MPOOLFILE *, u_t32_t )); 38 __memp_mf_disrd __P (( DB_MPOOL *, MPOOLFILE *)); 39 __memp_memli __P (( DB_ENV *, ***, *)); 40 __memp_ut_ __P (( DB_MPOOLFILE *, *, DB_CACHE_PRIORITY , u_t32_t )); 41 __memp_ut __P (( DB_MPOOLFILE *, *, DB_CACHE_PRIORITY )); 42 __memp_dty __P ( DB_MPOOLFILE *, *, DB_TXN *, DB_CACHE_PRIORITY , u_t32_t )); 43 __memp_v_ __P (( DB_ENV *)); 44 __memp_v_deroy __P (( DB_ENV *)); 45 __memp_g_chesize __P (( DB_ENV *, u_t32_t *, u_int32_t *, *)); 46 __memp_t_chesize __P (( DB_ENV *, u_t32_t , u_int32_t, )); 47 __memp_t_cfig __P (( DB_ENV *, u_t32_t , )); 48 __memp_g_cfig __P (( DB_ENV *, u_t32_t , *)); 49 __memp_g_mp_max_ݒfd __P (( DB_ENV *, *)); 50 __memp_t_mp_max_ݒfd __P (( DB_ENV *, )); 51 __memp_g_mp_max_wre __P (( DB_ENV *, *, db_timeout_t *)); 52 __memp_t_mp_max_wre __P (( DB_ENV *, , db_timeout_t )); 53 __memp_g_mp_mmsize __P (( DB_ENV *, size_t *)); 54 __memp_t_mp_mmsize __P (( DB_ENV *, size_t )); 55 __memp_me __P (( DB_ENV *, u_t8_t *, const *, const *, const *, )); 56 __memp_run __P (( DB_MPOOLFILE *, db_pgno_t , u_t32_t )); 57 __memp_loc_li __P (( DB_MPOOLFILE *, u_t32_t , db_pgno_t **)); 58 __memp__li __P (( DB_MPOOLFILE *)); 59 __memp_g_li __P ( DB_MPOOLFILE *, u_t32_t *, db_pgno_t **)); 60 __memp_exnd_li __P ( DB_MPOOLFILE *, u_t32_t , db_pgno_t **)); 61 u_t32_t __memp_bh_iܙy __P (( BH *)); 62 __memp_buck_d __P (( DB_ENV *, DB_MPOOL_HASH *, BH *)); 63 __memp_bh_xn __P (( DB_MPOOL *, MPOOLFILE * m , BH *, *)); 64 __memp_sk_cudj __P (( DBC *, db_pgno_t )); 65 __memp_bh_ze __P (( DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, *)); 66 __memp_bh_thaw __P (( DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, BH *)); 67 __memp_ݒ __P (( DB_ENV *, )); 68 __memp_ __P (( DB_ENV *, DB_MPOOL *, u_t , u_t32_t , u_int)); 69 u_t32_t __memp_max_gis __P (( DB_ENV *)); 70 u_t32_t __memp_gi_mux_cou __P (( DB_ENV *)); 71 __memp_v_esh __P (( DB_ENV *)); 72 __memp_gi_ __P (( DB_ENV *, , (*)(DB_ENV *, db_pgno_t , *, DBT *), (*)(DB_ENV *, db_pgno_t, *, DBT *))); 73 __memp_gi __P (( DB_ENV *, , (*)(DB_ENV *, db_pgno_t , *, DBT *), (*)(DB_ENV *, db_pgno_t, *, DBT *))); 74 __memp_g_buck __P (( DB_MPOOLFILE *, db_pgno_t , REGINFO **, DB_MPOOL_HASH **)); 75 __memp_size __P (( DB_MPOOL *, u_t32_t , u_int32_t)); 76 __memp_g_che_max __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 77 __memp_t_che_max __P (( DB_ENV *, u_t32_t , u_int32_t)); 78 __memp__ __P (( DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )); 79 __memp__t_ __P (( DB_ENV *, u_t32_t )); 80 __memp__t __P (( DB_ENV *, u_t32_t )); 81 __memp__hash __P (( REGINFO *, MPOOL *, u_t32_t *)); 82 __memp_wk_fes __P (( DB_ENV *, MPOOL *, (*__P((DB_ENV *, MPOOLFILE *, *, u_t32_t *, u_int32_t)), *, u_int32_t *, u_int32_t)); 83 __memp_sync_ __P (( DB_ENV *, DB_LSN *)); 84 __memp_sync __P (( DB_ENV *, u_t32_t , DB_LSN *)); 85 __memp_fsync_ __P (( DB_MPOOLFILE *)); 86 __memp_fsync __P (( DB_MPOOLFILE *)); 87 __mp_xxx_fh __P (( DB_MPOOLFILE *, DB_FH **)); 88 __memp_sync_t __P (( DB_ENV *, DB_MPOOLFILE *, u_t32_t , u_int32_t, u_int32_t *, *)); 89 __memp_mf_sync __P (( DB_MPOOL *, MPOOLFILE *, )); 90 __memp_ick_ __P (( DB_ENV *, , *)); 92 #i defed ( __lulus ) @../dbinc_auto/mutex_ext.h 2 #idef _mux_ext_h_ 3 #_mux_ext_h_ ) 5 #i defed ( __lulus ) 9 __mux_loc __P (( DB_ENV *, , u_t32_t , db_mux_t *)); 10 __mux_loc_t __P (( DB_ENV *, , , u_t32_t , db_mux_t *)); 11 __mux_ __P (( DB_ENV *, db_mux_t *)); 12 __mux__t __P (( DB_ENV *, , db_mux_t *)); 13 __mut_chk __P (( DB_ENV *)); 14 __db_f_mux_ __P (( DB_ENV *, db_mux_t , u_t32_t )); 15 __db_f_mux_lock __P (( DB_ENV *, db_mux_t )); 16 __db_f_mux_uock __P (( DB_ENV *, db_mux_t )); 17 __db_f_mux_deroy __P (( DB_ENV *, db_mux_t )); 18 __mux_loc_ __P (( DB_ENV *, u_t32_t , db_mux_t *)); 19 __mux__ __P (( DB_ENV *, db_mux_t )); 20 __mux_lock_ __P (( DB_ENV *, db_mux_t )); 21 __mux_uock_ __P (( DB_ENV *, db_mux_t )); 22 __mux_g_ign __P (( DB_ENV *, u_t32_t *)); 23 __mux_t_ign __P (( DB_ENV *, u_t32_t )); 24 __mux_g_emt __P (( DB_ENV *, u_t32_t *)); 25 __mux_t_emt __P (( DB_ENV *, u_t32_t )); 26 __mux_g_max __P (( DB_ENV *, u_t32_t *)); 27 __mux_t_max __P (( DB_ENV *, u_t32_t )); 28 __mux_g_s_s __P (( DB_ENV *, u_t32_t *)); 29 __mux_t_s_s __P (( DB_ENV *, u_t32_t )); 30 __db_had_mux_ __P (( DB_ENV *, db_mux_t , u_t32_t )); 31 __db_had_mux_lock __P (( DB_ENV *, db_mux_t )); 32 __db_had_mux_uock __P (( DB_ENV *, db_mux_t )); 33 __db_had_mux_deroy __P (( DB_ENV *, db_mux_t )); 34 __mux_ݒ __P (( DB_ENV *, )); 35 __mux_v_esh __P (( DB_ENV *)); 36 __mux_sour_tu __P (( DB_ENV *, REGINFO *)); 37 __mux__ __P (( DB_ENV *, DB_MUTEX_STAT **, u_t32_t )); 38 __mux__t_ __P (( DB_ENV *, u_t32_t )); 39 __mux__t __P (( DB_ENV *, u_t32_t )); 40 __mux_t_debug_sg __P (( DB_ENV *, cڡ *, db_mux_t , u_t32_t )); 41 __mux_t_debug_s __P (( DB_ENV *, DB_MSGBUF *, db_mux_t , u_t32_t )); 42 __mux_t_wa_fo __P (( DB_ENV *, db_mux_t , u_t32_t *, u_int32_t *)); 43 __mux_r __P (( DB_ENV *, db_mux_t )); 44 __db_s_mux_ __P (( DB_ENV *, db_mux_t , u_t32_t )); 45 __db_s_mux_lock __P (( DB_ENV *, db_mux_t )); 46 __db_s_mux_uock __P (( DB_ENV *, db_mux_t )); 47 __db_s_mux_deroy __P (( DB_ENV *, db_mux_t )); 48 __db_w32_mux_ __P (( DB_ENV *, db_mux_t , u_t32_t )); 49 __db_w32_mux_lock __P (( DB_ENV *, db_mux_t )); 50 __db_w32_mux_uock __P (( DB_ENV *, db_mux_t )); 51 __db_w32_mux_deroy __P (( DB_ENV *, db_mux_t )); 53 #i defed ( __lulus ) @../dbinc_auto/os_ext.h 2 #idef _os_ext_h_ 3 #_os_ext_h_ ) 5 #i defed ( __lulus ) 9 __os_abt __P (()); 10 __os_abh __P ((const *)); 11 __os_umloc __P (( DB_ENV *, size_t , *)); 12 __os_uloc __P (( DB_ENV *, size_t , *)); 13 __os_u __P (( DB_ENV *, *)); 14 __os_rdup __P (( DB_ENV *, const *, *)); 15 __os_oc __P (( DB_ENV *, size_t , size_t, *)); 16 __os_mloc __P (( DB_ENV *, size_t , *)); 17 __os_loc __P (( DB_ENV *, size_t , *)); 18 __os_ __P (( DB_ENV *, *)); 19 * __ua_memy __P ((*, cڡ *, size_t )); 20 __os_gtime __P (( DB_ENV *, db_timeec *)); 21 __os_fs_nzo __P (()); 22 __os_sut_de_io __P (()); 23 __os_sut_db_gi __P (()); 24 __os_sut_iti __P (()); 25 __os_dli __P (( DB_ENV *, const *, ***, *)); 26 __os_d __P (( DB_ENV *, **, )); 27 __os_g_o_t_zo __P (()); 28 __os_g_o __P (()); 29 __os_g_Ë __P (()); 30 __os_g_sy __P (()); 31 __os_t_o __P (()); 32 * __os_ __P ((, *, size_t )); 33 __os_posix_r __P (()); 34 __os_feid __P (( DB_ENV *, cڡ *, , u_t8_t *)); 35 __os_fdlock __P (( DB_ENV *, DB_FH *, off_t , , )); 36 __os_fsync __P (( DB_ENV *, DB_FH *)); 37 __os_zofl __P (( DB_ENV *, DB_FH *)); 38 __os_gv __P (( DB_ENV *, cڡ *, **, size_t )); 39 __os_ݒhd __P (( DB_ENV *, cڡ *, , , DB_FH **)); 40 __os_ohd __P (( DB_ENV *, DB_FH *)); 41 __os_r_syach __P (( DB_ENV *, REGINFO *, REGION *)); 42 __os_r_sysdach __P (( DB_ENV *, REGINFO *, )); 43 __os_mfe __P (( DB_ENV *, *, DB_FH *, size_t , , **)); 44 __os_unmfe __P (( DB_ENV *, *, size_t )); 45 __os_mkd __P (( DB_ENV *, const *, )); 46 u_t32_t __db_oags __P (()); 47 __db_omode __P ((const *)); 48 __os_ݒ __P (( DB_ENV *, cڡ *, u_t32_t , u_t32_t, , DB_FH **)); 49 __os_id __P (( DB_ENV *, pid_t *, db_thadid_t *)); 50 __os_r_ch __P (( DB_ENV *, REGINFO *, REGION *)); 51 __os_r_dach __P (( DB_ENV *, REGINFO *, )); 52 __os_me __P (( DB_ENV *, cڡ *, cڡ *, u_t32_t )); 53 __os_io __P (()); 54 * __db_h __P ((const *)); 55 __os_io __P (( DB_ENV *, , DB_FH *, db_pgno_t , u_t32_t , u_t32_t, u_t32_t, u_t8_t *, size_t *)); 56 __os_ad __P (( DB_ENV *, DB_FH *, *, size_t , size_t *)); 57 __os_wre __P (( DB_ENV *, DB_FH *, *, size_t , size_t *)); 58 __os_physwre __P (( DB_ENV *, DB_FH *, *, size_t , size_t *)); 59 __os_ek __P (( DB_ENV *, DB_FH *, db_pgno_t , u_t32_t , u_int32_t)); 60 __os_p __P (( DB_ENV *, u_lg , u_long)); 61 u_t32_t __os_ __P (( DB_ENV *)); 62 __os_exis __P (( DB_ENV *, const *, *)); 63 __os_iofo __P (( DB_ENV *, cڡ *, DB_FH *, u_t32_t *, u_int32_t *, u_int32_t *)); 64 __os_tmpd __P (( DB_ENV *, u_t32_t )); 65 __os_un __P (( DB_ENV *, DB_FH *, db_pgno_t , u_t32_t )); 66 __os_unique_id __P (( DB_ENV *, u_t32_t *)); 67 __os_gi_uƚk __P (( DB_ENV *, const *)); 68 __os_uƚk __P (( DB_ENV *, const *)); 69 __os_yld __P (( DB_ENV *)); 70 #ide HAVE_FCLOSE 71 fo __P (( FILE *)); 73 #ide HAVE_FGETC 74 fgc __P (( FILE *)); 76 #ide HAVE_FGETS 77 * fgs __P ((*, , FILE *)); 79 #ide HAVE_FOPEN 80 FILE * fݒ __P ((const *, const *)); 82 #ide HAVE_FWRITE 83 size_t fwre __P ((cڡ *, size_t, size_t, FILE *)); 85 #ide HAVE_LOCALTIME 86 tm * loime __P ((cڡ time_t *)); 88 #ide HAVE_TIME 89 time_t time __P ((time_t *)); 91 #ifde HAVE_QNX 92 __os_qnx_gi_ݒ __P (( DB_ENV *, cڡ *, , , DB_FH *)); 94 #ifde HAVE_QNX 95 __os_qnx_shmme __P (( DB_ENV *, const *, **)); 97 #ide HAVE_TIME 98 time_t time __P ((time_t *)); 100 __os_is_w __P (()); 101 #ifde HAVE_REPLICATION_THREADS 102 __os_g_Ë __P (()); 104 __os_mkd __P (( DB_ENV *, const *, )); 106 #i defed ( __lulus ) @../dbinc_auto/qam_auto.h 3 #idef __qam_AUTO_H 4 #__qam_AUTO_H ) 5 #DB___qam_cf 84 ) 6 s___qam_cf_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 t32_t mfeid ; 11 db_o_t mo ; 12 db_pgno_t mma_pgno ; 13 } t__qam_cf_gs ; 15 #DB___qam_mvr 85 ) 16 s___qam_mvr_gs { 17 u_t32_t mty ; 18 DB_TXN * mtx ; 19 DB_LSN mev_l ; 20 u_t32_t mcode ; 21 t32_t mfeid ; 22 db_o_t md_f ; 23 db_o_t mw_f ; 24 db_o_t md_cur ; 25 db_o_t mw_cur ; 26 DB_LSN mm ; 27 db_pgno_t mma_pgno ; 28 } t__qam_mvr_gs ; 30 #DB___qam_d 79 ) 31 s___qam_d_gs { 32 u_t32_t mty ; 33 DB_TXN * mtx ; 34 DB_LSN mev_l ; 35 t32_t mfeid ; 36 DB_LSN ml ; 37 db_pgno_t mpgno ; 38 u_t32_t mdx ; 39 db_o_t mo ; 40 } t__qam_d_gs ; 42 #DB___qam_add 80 ) 43 s___qam_add_gs { 44 u_t32_t mty ; 45 DB_TXN * mtx ; 46 DB_LSN mev_l ; 47 t32_t mfeid ; 48 DB_LSN ml ; 49 db_pgno_t mpgno ; 50 u_t32_t mdx ; 51 db_o_t mo ; 52 DBT mda ; 53 u_t32_t mvag ; 54 DBT mdda ; 55 } t__qam_add_gs ; 57 #DB___qam_dext 83 ) 58 s___qam_dext_gs { 59 u_t32_t mty ; 60 DB_TXN * mtx ; 61 DB_LSN mev_l ; 62 t32_t mfeid ; 63 DB_LSN ml ; 64 db_pgno_t mpgno ; 65 u_t32_t mdx ; 66 db_o_t mo ; 67 DBT mda ; 68 } t__qam_dext_gs ; @../dbinc_auto/qam_ext.h 2 #idef _qam_ext_h_ 3 #_qam_ext_h_ ) 5 #i defed ( __lulus ) 9 __qam_posi __P (( DBC *, db_o_t *, db_lockmode_t , u_t32_t , *)); 10 __qam_pem __P (( DBC *, QPAGE *, u_t32_t , db_o_t , DBT *)); 11 __qam_nd __P (( DBC *, DBT *, DBT *)); 12 __qamc_dup __P (( DBC *, DBC *)); 13 __qamc_ __P (( DBC *)); 14 __qam_un __P (( DBC *, u_t32_t *)); 15 __qam_de __P (( DBC *, DBT *)); 16 __qam_cf_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_o_t , db_pgno_t )); 17 __qam_cf_ad __P (( DB_ENV *, *, __qam_cf_gs **)); 18 __qam_mvr_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_o_t , db_o_t, db_o_t, db_o_t, DB_LSN *, db_pgno_t )); 19 __qam_mvr_ad __P (( DB_ENV *, *, __qam_mvr_gs **)); 20 __qam_d_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, db_pgno_t , u_t32_t, db_o_t )); 21 __qam_d_ad __P (( DB_ENV *, *, __qam_d_gs **)); 22 __qam_add_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, db_pgno_t , u_t32_t, db_o_t , cڡ DBT *, u_int32_t, const DBT *)); 23 __qam_add_ad __P (( DB_ENV *, *, __qam_add_gs **)); 24 __qam_dext_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, db_pgno_t , u_t32_t, db_o_t , cڡ DBT *)); 25 __qam_dext_ad __P (( DB_ENV *, *, __qam_dext_gs **)); 26 __qam__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 27 __qam_cf_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 28 __qam_mvr_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 29 __qam_d_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 30 __qam_add_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 31 __qam_dext_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 32 __qam__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 33 __qam_msw __P (( PAGE *)); 34 __qam_pg_out __P (( DB_ENV *, db_pgno_t , *, DBT *)); 35 __qam_robe __P (( DB *, db_pgno_t , DB_TXN *, *, qam_obe_mode , DB_CACHE_PRIORITY , u_t32_t )); 36 __qam_fo __P (( DB *, db_pgno_t )); 37 __qam_emove __P (( DB *, db_pgno_t )); 38 __qam_sync __P (( DB *)); 39 __qam_g_fi __P (( DB *, QUEUE_FILELIST **)); 40 __qam_ex_mes __P (( DB_ENV *, *, ***)); 41 __qam_exid __P (( DB *, u_t8_t *, u_t32_t )); 42 __qam_me __P (( DB *, DB_TXN *, cڡ *, qam_me_ )); 43 __qam_db_ __P (( DB *)); 44 __qam_db_o __P (( DB *, u_t32_t )); 45 __qam_g_exsize __P (( DB *, u_t32_t *)); 46 __queue_gefo __P (( DB *, db_pgno_t *, db_pgno_*, *, , u_t32_t )); 47 __db_queue __P (( DB *, u_t32_t )); 48 __qam_move __P (( DB *, DB_TXN *, const *, const *)); 49 __qam_me __P (( DB *, DB_TXN *, const *, const *, const *)); 50 __qam_m_ags __P (( DB *, u_t32_t *, u_int32_t *)); 51 __qam_t_ags __P (( DB *, u_t32_t * ag )); 52 __qam_ݒ __P (( DB *, DB_TXN *, cڡ *, db_pgno_t , , u_t32_t )); 53 __qam_t_ext_da __P (( DB *, const *)); 54 __qam_machk __P (( DB *, cڡ *, QMETA *)); 55 __qam_w_fe __P (( DB *, DB_TXN *, DB_FH *, const *)); 56 __qam_cf_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 57 __qam_mvr_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 58 __qam_d_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 59 __qam_dext_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 60 __qam_add_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 61 __qam_ __P (( DBC *, *, u_t32_t )); 62 __qam__t __P (( DBC *, u_t32_t )); 63 __db_no_queue_am __P (( DB_ENV *)); 64 __qam_31_qamma __P (( DB *, *, u_t8_t *)); 65 __qam_32_qamma __P (( DB *, *, u_t8_t *)); 66 __qam_vrfy_ma __P (( DB *, VRFY_DBINFO *, QMETA *, db_pgno_t , u_t32_t )); 67 __qam_vrfy_da __P (( DB *, VRFY_DBINFO *, QPAGE *, db_pgno_t , u_t32_t )); 68 __qam_vrfy_ruu __P (( DB *, VRFY_DBINFO *, u_t32_t )); 69 __qam_vrfy_wkqueue __P (( DB *, VRFY_DBINFO *, *, (*)(*, cڡ *), u_t32_t )); 70 __qam_lvage __P (( DB *, VRFY_DBINFO *, db_pgno_t , PAGE *, *, (*)(*, cڡ *), u_t32_t )); 72 #i defed ( __lulus ) @../dbinc_auto/rep_auto.h 3 #idef __p_AUTO_H 4 #__p_AUTO_H ) 5 s___p_upde_gs { 6 DB_LSN mf_l ; 7 u_t32_t mf_vs ; 8 u_t32_t mnum_fes ; 9 } t__p_upde_gs ; 11 s___p_fefo_gs { 12 u_t32_t mpgsize ; 13 db_pgno_t mpgno ; 14 db_pgno_t mmax_pgno ; 15 u_t32_t mfum ; 16 t32_t mid ; 17 u_t32_t mty ; 18 u_t32_t mags ; 19 DBT muid ; 20 DBT mfo ; 21 } t__p_fefo_gs ; @../dbinc_auto/rep_ext.h 2 #idef _p_ext_h_ 3 #_p_ext_h_ ) 5 #i defed ( __lulus ) 9 __p_upde_buf __P (( u_t8_t *, size_t , size_*, DB_LSN *, u_t32_t , u_int32_t)); 10 __p_upde_ad __P (( DB_ENV *, *, **, __p_upde_gs **)); 11 __p_fefo_buf __P (( u_t8_t *, size_t , size_*, u_t32_t , db_pgno_t , db_pgno_t, u_t32_t, t32_t , u_t32_t, u_t32_t, cڡ DBT *, const DBT *)); 12 __p_fefo_ad __P (( DB_ENV *, *, **, __p_fefo_gs **)); 13 __p_upde_q __P (( DB_ENV *, )); 14 __p_ge_q __P (( DB_ENV *, , DBT *)); 15 __p_upde_tup __P (( DB_ENV *, , REP_CONTROL *, DBT *)); 16 __p_bulk_ge __P (( DB_ENV *, , REP_CONTROL *, DBT *)); 17 __p_ge __P (( DB_ENV *, , REP_CONTROL *, DBT *)); 18 __p_ge_ __P (( DB_ENV *, , DBT *)); 19 __p__nup __P (( DB_ENV *, REP *, )); 20 __p_pgg_q __P (( DB_ENV *, REP *, __p_fefo_gs *, u_t32_t )); 21 __p_ffo_loc __P (( DB_ENV *, __p_fefo_gs *, __rep_fileinfo_args **)); 22 __p_move__fe __P (( DB_ENV *)); 23 __p_t_ __P (( DB_ENV *)); 24 __p_e __P (( DB_ENV *, , , u_t32_t )); 25 __p_ve1 __P (( DB_ENV *, REP_CONTROL *, DBT *, )); 26 __p_ve2 __P (( DB_ENV *, DBT *, )); 27 __p_upde_g __P (( DB_ENV *, db_timeec *)); 28 __p_i_ged __P (( DB_ENV *)); 29 __p_a_b_loc __P (( DB_ENV *, )); 30 __p_a_g __P (( DB_ENV *, REP_CONTROL *, DBT *, )); 31 __p_a_check __P (( DB_ENV *, )); 32 __p_a_esh __P (( DB_ENV *)); 33 __p_a_expe __P (( DB_ENV *, )); 34 db_timeout_t __p_a_watime __P (( DB_ENV *)); 35 __p_eq __P (( DB_ENV *, REP_CONTROL *, )); 36 __p_log __P (( DB_ENV *, REP_CONTROL *, DBT *, time_t , DB_LSN *)); 37 __p_bulk_log __P (( DB_ENV *, REP_CONTROL *, DBT *, time_t , DB_LSN *)); 38 __p_logq __P (( DB_ENV *, REP_CONTROL *, DBT *, )); 39 __p_logg_q __P (( DB_ENV *, REP *, DB_LSN *, u_t32_t )); 40 __p_logady __P (( DB_ENV *, REP *, time_t , DB_LSN *)); 41 __p_v_ __P (( DB_ENV *)); 42 __p_v_deroy __P (( DB_ENV *)); 43 __p_g_cfig __P (( DB_ENV *, u_t32_t , *)); 44 __p_t_cfig __P (( DB_ENV *, u_t32_t , )); 45 __p_t __P (( DB_ENV *, DBT *, u_t32_t )); 46 __p__db __P (( DB_ENV *, , pdb_t )); 47 __p_g_lim __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 48 __p_t_lim __P (( DB_ENV *, u_t32_t , u_int32_t)); 49 __p_t_nses __P (( DB_ENV *, )); 50 __p_g_nses __P (( DB_ENV *, *)); 51 __p_t_iܙy __P (( DB_ENV *, )); 52 __p_g_iܙy __P (( DB_ENV *, *)); 53 __p_t_timeout __P (( DB_ENV *, , db_timeout_t )); 54 __p_g_timeout __P (( DB_ENV *, , db_timeout_t *)); 55 __p_g_que __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 56 __p_t_que __P (( DB_ENV *, u_t32_t , u_int32_t)); 57 __p_t_t __P (( DB_ENV *, , (*)(DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t ))); 58 __p_t_a __P (( DB_ENV *, u_t32_t , u_int32_t)); 59 __p_ush __P (( DB_ENV *)); 60 __p_sync __P (( DB_ENV *, u_t32_t )); 61 __p_oss_mesge __P (( DB_ENV *, DBT *, DBT *, , DB_LSN *)); 62 __p_y __P (( DB_ENV *, REP_CONTROL *, DBT *, DB_LSN *, *, DB_LSN *)); 63 __p_oss_txn __P (( DB_ENV *, DBT *)); 64 __p_nd_q __P (( DB_ENV *, )); 65 __p_check_deq __P (( DB_ENV *, REP *)); 66 __p_ݒ __P (( DB_ENV *)); 67 __p_v_esh __P (( DB_ENV *)); 68 __p_v_o __P (( DB_ENV *)); 69 __p_eo __P (( DB_ENV *)); 70 __p_ofes __P (( DB_ENV *, )); 71 __p_wre_eg __P (( DB_ENV *, u_t32_t )); 72 __p_wre_g __P (( DB_ENV *, u_t32_t )); 73 __p__ __P (( DB_ENV *, DB_REP_STAT **, u_t32_t )); 74 __p__t_ __P (( DB_ENV *, u_t32_t )); 75 __p__t __P (( DB_ENV *, u_t32_t )); 76 __p_bulk_mesge __P (( DB_ENV *, REP_BULK *, REP_THROTTLE *, DB_LSN *, cڡ DBT *, u_t32_t )); 77 __p_nd_bulk __P (( DB_ENV *, REP_BULK *, u_t32_t )); 78 __p_bulk_loc __P (( DB_ENV *, REP_BULK *, , u_t *, u_t32_t *, u_int32_t)); 79 __p_bulk_ __P (( DB_ENV *, REP_BULK *, u_t32_t )); 80 __p_nd_mesge __P (( DB_ENV *, , u_t32_t , DB_LSN *, cڡ DBT *, u_int32_t, u_int32_t)); 81 __p_w_ma __P (( DB_ENV *, REP_CONTROL *, )); 82 __p_nrchive __P (( DB_ENV *)); 83 __p_nd_ve __P (( DB_ENV *, DB_LSN *, , , , u_t32_t , u_int32_t, , u_int32_t, u_int32_t)); 84 __p_e_de __P (( DB_ENV *, REP *)); 85 __p_grow_ses __P (( DB_ENV *, )); 86 __v_p_r __P (( DB_ENV *, )); 87 __v_db_p_ex __P (( DB_ENV *)); 88 __db_p_r __P (( DB *, , , )); 89 ___p_r __P (( DB_ENV *)); 90 ___p_ex __P (( DB_ENV *)); 91 __p_lockout_i __P (( DB_ENV *, REP *)); 92 __p_lockout_y __P (( DB_ENV *, REP *, u_t32_t )); 93 __p_lockout_msg __P (( DB_ENV *, REP *, u_t32_t )); 94 __p_nd_thrَe __P (( DB_ENV *, , REP_THROTTLE *, u_t32_t , u_int32_t)); 95 u_t32_t __p_msg_to_d __P ((u_int32_t, u_int32_t)); 96 u_t32_t __p_msg_om_d __P ((u_int32_t, u_int32_t)); 97 __p_t __P (( DB_ENV *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 2, 3))); 98 __p_t_mesge __P (( DB_ENV *, , REP_CONTROL *, *, u_t32_t )); 99 __p_fe_evt __P (( DB_ENV *, u_t32_t , *)); 100 __p_vify __P (( DB_ENV *, REP_CONTROL *, DBT *, , time_t )); 101 __p_vify_ __P (( DB_ENV *, REP_CONTROL *, )); 102 __p_vify_q __P (( DB_ENV *, REP_CONTROL *, )); 103 __p_vify_mch __P (( DB_ENV *, DB_LSN *, time_t )); 104 __p_log_backup __P (( DB_ENV *, REP *, DB_LOGC *, DB_LSN *)); 106 #i defed ( __lulus ) @../dbinc_auto/repmgr_ext.h 2 #idef _pmgr_ext_h_ 3 #_pmgr_ext_h_ ) 5 #i defed ( __lulus ) 9 __pmgr__ei __P (( DB_ENV *, )); 10 __pmgr_become_ma __P (( DB_ENV *)); 11 __pmgr_t __P (( DB_ENV *, , u_t32_t )); 12 __pmgr_o __P (( DB_ENV *)); 13 __pmgr_t_ack_picy __P (( DB_ENV *, )); 14 __pmgr_g_ack_picy __P (( DB_ENV *, *)); 15 __pmgr_v_ __P (( DB_ENV *, DB_REP *)); 16 __pmgr_v_deroy __P (( DB_ENV *, DB_REP *)); 17 __pmgr__thads __P (( DB_ENV *)); 18 __pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 19 __pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 20 * __pmgr_msg_thad __P ((*)); 21 __pmgr_hd_evt __P (( DB_ENV *, u_t32_t , *)); 22 __pmgr_ash_gi __P (( DB_ENV *)); 23 __pmgr_nd __P (( DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t )); 24 __pmgr_nd_e __P (( DB_ENV *, REPMGR_CONNECTION *, u_t , cڡ DBT *, const DBT *)); 25 __pmgr_is_rmt __P (( DB_ENV *, cڡ DB_LSN *)); 26 __pmgr_bu_ci __P (( DB_ENV *, REPMGR_CONNECTION *, )); 27 __pmgr_nup_ci __P (( DB_ENV *, REPMGR_CONNECTION *)); 28 __pmgr_fd_se __P (( DB_ENV *, cڡ *, u_t )); 29 __pmgr_ck_Ïddr __P (( DB_ENV *, cڡ *, u_t , ADDRINFO *, pmgr_Ïddr_t *)); 30 __pmgr_gaddr __P (( DB_ENV *, cڡ *, u_t , , ADDRINFO **)); 31 __pmgr_add_se __P (( DB_ENV *, cڡ *, u_t , REPMGR_SITE **)); 32 __pmgr_t_ __P (( DB_ENV *, DB_REP *)); 33 __pmgr_li __P (( DB_ENV *)); 34 __pmgr_t_o __P (( DB_ENV *)); 35 __pmgr_t_deroy __P (( DB_ENV *, DB_REP *)); 36 __pmgr_thad_t __P (( DB_ENV *, REPMGR_RUNNABLE *)); 37 __pmgr_thad_jo __P (( REPMGR_RUNNABLE *)); 38 __pmgr_t_nblockg __P (( sock_t )); 39 __pmgr_wake_wag_nds __P (( DB_ENV *)); 40 __pmgr_awa_ack __P (( DB_ENV *, cڡ DB_LSN *)); 41 __pmgr_compu_wa_ddle __P (( DB_ENV *, timeec *, db_timeout_t )); 42 __pmgr__sync __P (( DB_ENV *, DB_REP *)); 43 __pmgr_o_sync __P (( DB_ENV *)); 44 __pmgr_t_ __P (( DB_ENV *, DB_REP *)); 45 __pmgr_lock_mux __P (( mgr_mux_t *)); 46 __pmgr_uock_mux __P (( mgr_mux_t *)); 47 __pmgr_sigl __P (( cd_v_t *)); 48 __pmgr_wake_ma_thad __P (( DB_ENV *)); 49 __pmgr_wrev __P (( sock_t , db_iovec_t *, , size_t *)); 50 __pmgr_adv __P (( sock_t , db_iovec_t *, , size_t *)); 51 __pmgr__lo __P (( DB_ENV *)); 52 __pmgr_queue_ __P (( DB_ENV *, DB_REP *)); 53 __pmgr_queue_deroy __P (( DB_ENV *)); 54 __pmgr_queue_g __P (( DB_ENV *, REPMGR_MESSAGE **)); 55 __pmgr_queue_put __P (( DB_ENV *, REPMGR_MESSAGE *)); 56 __pmgr_queue_size __P (( DB_ENV *)); 57 * __pmgr__thad __P ((*)); 58 __pmgr_ac __P (( DB_ENV *)); 59 __pmgr_y_cis __P (( DB_ENV *)); 60 __pmgr_f_y_cis __P (( DB_ENV *)); 61 __pmgr_c_se __P (( DB_ENV *, u_t eid )); 62 __pmgr_nd_hdshake __P (( DB_ENV *, REPMGR_CONNECTION *)); 63 __pmgr_ad_om_se __P (( DB_ENV *, REPMGR_CONNECTION *)); 64 __pmgr_wre_some __P (( DB_ENV *, REPMGR_CONNECTION *)); 65 __pmgr__ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 66 __pmgr__t_ __P (( DB_ENV *, u_t32_t )); 67 __pmgr_se_li __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 68 #ide HAVE_REPLICATION_THREADS 69 __pmgr_o __P (( DB_ENV *)); 71 #ide HAVE_REPLICATION_THREADS 72 __pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 74 #ide HAVE_REPLICATION_THREADS 75 __pmgr_g_ack_picy __P (( DB_ENV *, *)); 77 #ide HAVE_REPLICATION_THREADS 78 __pmgr_t_ack_picy __P (( DB_ENV *, )); 80 #ide HAVE_REPLICATION_THREADS 81 __pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 83 #ide HAVE_REPLICATION_THREADS 84 __pmgr_se_li __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 86 #ide HAVE_REPLICATION_THREADS 87 __pmgr_t __P (( DB_ENV *, , u_t32_t )); 89 #ide HAVE_REPLICATION_THREADS 90 __pmgr__ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 92 #ide HAVE_REPLICATION_THREADS 93 __pmgr__t_ __P (( DB_ENV *, u_t32_t )); 95 #ide HAVE_REPLICATION_THREADS 96 __pmgr_hd_evt __P (( DB_ENV *, u_t32_t , *)); 98 __pmgr_schedu_ci_m __P (( DB_ENV *, u_t , )); 99 __pmgr_t_f_adg __P (( REPMGR_CONNECTION *)); 100 __pmgr_w_ci __P (( DB_ENV *, REPMGR_CONNECTION **, sock_t , u_t32_t )); 101 __pmgr_w_se __P (( DB_ENV *, REPMGR_SITE **, cڡ pmgr_Ïddr_t *, )); 102 __pmgr_nup_Ïddr __P (( DB_ENV *, pmgr_Ïddr_t *)); 103 __pmgr_iovec_ __P (( REPMGR_IOVECS *)); 104 __pmgr_add_bufr __P (( REPMGR_IOVECS *, *, size_t )); 105 __pmgr_add_dbt __P (( REPMGR_IOVECS *, cڡ DBT *)); 106 __pmgr_upde_csumed __P (( REPMGR_IOVECS *, size_t )); 107 __pmgr_e_my_addr __P (( DB_ENV *, DBT *)); 108 u_t __pmgr_g_nses __P (( DB_REP *)); 109 __pmgr_thad_u __P (( DB_ENV *, )); 110 * __pmgr_fm_eid_loc __P (( DB_REP *, , *)); 111 * __pmgr_fm_se_loc __P (( REPMGR_SITE *, *)); 112 __pmgr_timeec_diff_now __P (( DB_ENV *, db_timeec *, db_timespec *)); 113 __pmgr_pt __P (( DB_ENV *, u_t32_t )); 114 __pmgr_w_ __P (( DB_ENV *)); 116 #i defed ( __lulus ) @../dbinc_auto/rpc_client_ext.h 2 #idef _c__ext_h_ 3 #_c__ext_h_ ) 5 #i defed ( __lulus ) 9 __db_v_t_c_rv __P (( DB_ENV *, *, cڡ *, , , u_t32_t )); 10 __db_v_o_wp __P (( DB_ENV *, u_t32_t )); 11 __db_v_ݒ_wp __P (( DB_ENV *, cڡ *, u_t32_t , )); 12 __db_db_ݒ_wp __P (( DB *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , )); 13 __db_esh __P (( DB_ENV *)); 14 __db_tcy __P (( DB_ENV *, DBT *, *, u_t32_t , **, u_int32_t *)); 15 __db_txn_d __P (( DB_TXN *)); 16 __db_txn_tup __P (( DB_ENV *, DB_TXN *, DB_TXN *, u_t32_t )); 17 __db_c_esh __P (( DBC *)); 18 __db_c_tup __P (( u_t , DB *, DBC **)); 19 __db_dbo_comm __P (( DB *)); 20 __db_dbv_g __P (( DB_ENV *)); 21 __db_v_ __P (( DB_ENV *, )); 22 __db_v_cdsgroup_beg __P (( DB_ENV *, DB_TXN **)); 23 __db_v_o __P (( DB_ENV *, u_t32_t )); 24 __db_v_dbmove __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 25 __db_v_dbme __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, cڡ *, u_t32_t )); 26 __db_v_g_chesize __P (( DB_ENV *, u_t32_t *, u_int32_t *, *)); 27 __db_v_g_y_ags __P (( DB_ENV *, u_t32_t *)); 28 __db_v_g_ags __P (( DB_ENV *, u_t32_t *)); 29 __db_v_g_home __P (( DB_ENV *, const * *)); 30 __db_v_g_ݒ_ags __P (( DB_ENV *, u_t32_t *)); 31 __db_v_ݒ __P (( DB_ENV *, cڡ *, u_t32_t , )); 32 __db_v_move __P (( DB_ENV *, cڡ *, u_t32_t )); 33 __db_v_t_chesize __P (( DB_ENV *, u_t32_t , u_int32_t, )); 34 __db_v_t_y __P (( DB_ENV *, cڡ *, u_t32_t )); 35 __db_v_t_ags __P (( DB_ENV *, u_t32_t , )); 36 __db_v_txn_beg __P (( DB_ENV *, DB_TXN *, DB_TXN **, u_t32_t )); 37 __db_v_txn_cov __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t )); 38 __db_db_ __P (( DB *, DB_ENV *, u_t32_t )); 39 __db_db_assoc __P (( DB *, DB_TXN *, DB *, (*)(DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 40 __db_db_o __P (( DB *, u_t32_t )); 41 __db_db_curs __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 42 __db_db_d __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 43 __db_db_g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 44 __db_db_g_bt_mkey __P (( DB *, u_t32_t *)); 45 __db_db_g_dbme __P (( DB *, const * *, const * *)); 46 __db_db_g_y_ags __P (( DB *, u_t32_t *)); 47 __db_db_g_ags __P (( DB *, u_t32_t *)); 48 __db_db_g_h_f __P (( DB *, u_t32_t *)); 49 __db_db_g_h_m __P (( DB *, u_t32_t *)); 50 __db_db_g_ld __P (( DB *, *)); 51 __db_db_g_ݒ_ags __P (( DB *, u_t32_t *)); 52 __db_db_g_gesize __P (( DB *, u_t32_t *)); 53 __db_db_g_iܙy __P (( DB *, DB_CACHE_PRIORITY *)); 54 __db_db_g_q_exsize __P (( DB *, u_t32_t *)); 55 __db_db_g__dim __P (( DB *, *)); 56 __db_db_g__n __P (( DB *, u_t32_t *)); 57 __db_db_g__d __P (( DB *, *)); 58 __db_db_jo __P (( DB *, DBC **, DBC **, u_t32_t )); 59 __db_db_key_nge __P (( DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_t32_t )); 60 __db_db_ݒ __P (( DB *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , )); 61 __db_db_pg __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 62 __db_db_put __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 63 __db_db_move __P (( DB *, cڡ *, cڡ *, u_t32_t )); 64 __db_db_me __P (( DB *, cڡ *, cڡ *, cڡ *, u_t32_t )); 65 __db_db_t_bt_mkey __P (( DB *, u_t32_t )); 66 __db_db_t_y __P (( DB *, cڡ *, u_t32_t )); 67 __db_db_t_ags __P (( DB *, u_t32_t )); 68 __db_db_t_h_f __P (( DB *, u_t32_t )); 69 __db_db_t_h_m __P (( DB *, u_t32_t )); 70 __db_db_t_ld __P (( DB *, )); 71 __db_db_t_gesize __P (( DB *, u_t32_t )); 72 __db_db_t_iܙy __P (( DB *, DB_CACHE_PRIORITY )); 73 __db_db_t_q_exsize __P (( DB *, u_t32_t )); 74 __db_db_t__dim __P (( DB *, )); 75 __db_db_t__n __P (( DB *, u_t32_t )); 76 __db_db_t__d __P (( DB *, )); 77 __db_db_ __P (( DB *, DB_TXN *, *, u_t32_t )); 78 __db_db_sync __P (( DB *, u_t32_t )); 79 __db_db_un __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 80 __db_dbc_o __P (( DBC *)); 81 __db_dbc_cou __P (( DBC *, db_o_t *, u_t32_t )); 82 __db_dbc_d __P (( DBC *, u_t32_t )); 83 __db_dbc_dup __P (( DBC *, DBC **, u_t32_t )); 84 __db_dbc_g __P (( DBC *, DBT *, DBT *, u_t32_t )); 85 __db_dbc_g_iܙy __P (( DBC *, DB_CACHE_PRIORITY *)); 86 __db_dbc_pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 87 __db_dbc_put __P (( DBC *, DBT *, DBT *, u_t32_t )); 88 __db_dbc_t_iܙy __P (( DBC *, DB_CACHE_PRIORITY )); 89 __db_txn_abt __P (( DB_TXN *)); 90 __db_txn_comm __P (( DB_TXN *, u_t32_t )); 91 __db_txn_disrd __P (( DB_TXN *, u_t32_t )); 92 __db_txn_e __P (( DB_TXN *, u_t8_t *)); 93 __db_dbp_ __P (( DB *)); 94 __db_dbc_ __P (( DBC *)); 95 __db_dbv_ __P (( DB_ENV *)); 96 __db_txn_ __P (( DB_TXN *)); 97 __db_v__t __P (( DB_ENV *, , __v__y *)); 98 __db_v_ݒ_t __P (( DB_ENV *, cڡ *, u_t32_t , , __v_ݒ_y *)); 99 __db_v_move_t __P (( DB_ENV *, cڡ *, u_t32_t , __v_move_y *)); 100 __db_txn_abt_t __P (( DB_TXN *, __txn_abt_y *)); 101 __db_v_txn_beg_t __P (( DB_ENV *, DB_TXN *, DB_TXN **, u_t32_t , __v_txn_beg_y *)); 102 __db_v_cdsgroup_beg_t __P (( DB_ENV *, DB_TXN **, __v_cdsgroup_beg_y *)); 103 __db_txn_comm_t __P (( DB_TXN *, u_t32_t , __txn_comm_y *)); 104 __db_txn_disrd_t __P (( DB_TXN *, u_t32_t , __txn_disrd_y *)); 105 __db_v_txn_cov_t __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t , __v_txn_cov_y *)); 106 __db_db_o_t __P (( DB *, u_t32_t , __db_o_y *)); 107 __db_db__t __P (( DB *, DB_ENV *, u_t32_t , __db__y *)); 108 __db_db_g_t __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t , __db_g_y *)); 109 __db_db_key_nge_t __P (( DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_t32_t , __db_key_nge_y *)); 110 __db_db_ݒ_t __P (( DB *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , , __db_ݒ_y *)); 111 __db_db_pg_t __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t , __db_pg_y *)); 112 __db_db_put_t __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t , __db_put_y *)); 113 __db_db_move_t __P (( DB *, cڡ *, cڡ *, u_t32_t , __db_move_y *)); 114 __db_db_me_t __P (( DB *, cڡ *, cڡ *, cڡ *, u_t32_t , __db_me_y *)); 115 __db_db__t __P (( DB *, DB_TXN *, *, u_t32_t , __db__y *)); 116 __db_db_un_t __P (( DB *, DB_TXN *, u_t32_t *, u_t32_t, __db_un_y *)); 117 __db_db_curs_t __P (( DB *, DB_TXN *, DBC **, u_t32_t , __db_curs_y *)); 118 __db_db_jo_t __P (( DB *, DBC **, DBC **, u_t32_t , __db_jo_y *)); 119 __db_dbc_o_t __P (( DBC *, __dbc_o_y *)); 120 __db_dbc_cou_t __P (( DBC *, db_o_t *, u_t32_t , __dbc_cou_y *)); 121 __db_dbc_dup_t __P (( DBC *, DBC **, u_t32_t , __dbc_dup_y *)); 122 __db_dbc_g_t __P (( DBC *, DBT *, DBT *, u_t32_t , __dbc_g_y *)); 123 __db_dbc_pg_t __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t , __dbc_pg_y *)); 124 __db_dbc_put_t __P (( DBC *, DBT *, DBT *, u_t32_t , __dbc_put_y *)); 126 #i defed ( __lulus ) @../dbinc_auto/rpc_server_ext.h 2 #idef _c_rv_ext_h_ 3 #_c_rv_ext_h_ ) 5 #i defed ( __lulus ) 9 __v_g_chesize_oc __P (( u_t , __v_g_chesize_y *)); 10 __v_t_chesize_oc __P (( u_t , u_t32_t , u_t32_t, u_t32_t, __v_t_chesize_y *)); 11 __v_cdsgroup_beg_oc __P (( u_t , __v_cdsgroup_beg_y *)); 12 __v_o_oc __P (( u_t , u_t32_t , __v_o_y *)); 13 __v__oc __P (( u_t32_t , __v__y *)); 14 __v_dbmove_oc __P (( u_t , u_t, *, *, u_t32_t , __v_dbmove_y *)); 15 __v_dbme_oc __P (( u_t , u_t, *, *, *, u_t32_t , __v_dbme_y *)); 16 __v_g_y_ags_oc __P (( u_t , __v_g_y_ags_y *)); 17 __v_t_y_oc __P (( u_t , *, u_t32_t , __v_t_y_y *)); 18 __v_g_ags_oc __P (( u_t , __v_g_ags_y *)); 19 __v_t_ags_oc __P (( u_t , u_t32_t , u_t32_t, __v_t_ags_y *)); 20 __v_g_home_oc __P (( u_t , __v_g_home_y *)); 21 __v_g_ݒ_ags_oc __P (( u_t , __v_g_ݒ_ags_y *)); 22 __v_ݒ_oc __P (( u_t , *, u_t32_t , u_t32_t, __v_ݒ_y *)); 23 __v_move_oc __P (( u_t , *, u_t32_t , __v_move_y *)); 24 __txn_abt_oc __P (( u_t , __txn_abt_y *)); 25 __v_txn_beg_oc __P (( u_t , u_t, u_t32_t , __v_txn_beg_y *)); 26 __txn_comm_oc __P (( u_t , u_t32_t , __txn_comm_y *)); 27 __txn_disrd_oc __P (( u_t , u_t32_t , __txn_disrd_y *)); 28 __txn_e_oc __P (( u_t , u_t8_t *, __txn_e_y *)); 29 __v_txn_cov_oc __P (( u_t , u_t32_t , u_t32_t, __v_txn_cov_y *, *)); 30 __db_assoc_oc __P (( u_t , u_t, u_t, u_t32_t , __db_assoc_y *)); 31 __db_g_bt_mkey_oc __P (( u_t , __db_g_bt_mkey_y *)); 32 __db_t_bt_mkey_oc __P (( u_t , u_t32_t , __db_t_bt_mkey_y *)); 33 __db_o_oc __P (( u_t , u_t32_t , __db_o_y *)); 34 __db__oc __P (( u_t , u_t32_t , __db__y *)); 35 __db_d_oc __P (( u_t , u_t, u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __db_d_y *)); 36 __db_g_y_ags_oc __P (( u_t , __db_g_y_ags_y *)); 37 __db_t_y_oc __P (( u_t , *, u_t32_t , __db_t_y_y *)); 38 __db_g_q_exsize_oc __P (( u_t , __db_g_q_exsize_y *)); 39 __db_t_q_exsize_oc __P (( u_t , u_t32_t , __db_t_q_exsize_y *)); 40 __db_g_ags_oc __P (( u_t , __db_g_ags_y *)); 41 __db_t_ags_oc __P (( u_t , u_t32_t , __db_t_ags_y *)); 42 __db_g_oc __P (( u_t , u_t, u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __db_g_y *, *)); 43 __db_g_h_f_oc __P (( u_t , __db_g_h_f_y *)); 44 __db_t_h_f_oc __P (( u_t , u_t32_t , __db_t_h_f_y *)); 45 __db_g_h_m_oc __P (( u_t , __db_g_h_m_y *)); 46 __db_t_h_m_oc __P (( u_t , u_t32_t , __db_t_h_m_y *)); 47 __db_key_nge_oc __P (( u_t , u_t, u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __db_key_nge_y *)); 48 __db_g_ld_oc __P (( u_t , __db_g_ld_y *)); 49 __db_t_ld_oc __P (( u_t , u_t32_t , __db_t_ld_y *)); 50 __db_g_dbme_oc __P (( u_t , __db_g_dbme_y *)); 51 __db_g_ݒ_ags_oc __P (( u_t , __db_g_ݒ_ags_y *)); 52 __db_ݒ_oc __P (( u_t , u_t, *, *, u_t32_t , u_t32_t, u_t32_t, __db_ݒ_y *)); 53 __db_g_gesize_oc __P (( u_t , __db_g_gesize_y *)); 54 __db_t_gesize_oc __P (( u_t , u_t32_t , __db_t_gesize_y *)); 55 __db_pg_oc __P (( u_t , u_t, u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __db_pg_y *, *)); 56 __db_put_oc __P (( u_t , u_t, u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __db_put_y *, *)); 57 __db_g_iܙy_oc __P (( u_t , __db_g_iܙy_y *)); 58 __db_t_iܙy_oc __P (( u_t , u_t32_t , __db_t_iܙy_y *)); 59 __db_g__dim_oc __P (( u_t , __db_g__dim_y *)); 60 __db_t__dim_oc __P (( u_t , u_t32_t , __db_t__dim_y *)); 61 __db_g__n_oc __P (( u_t , __db_g__n_y *)); 62 __db_t__n_oc __P (( u_t , u_t32_t , __db_t__n_y *)); 63 __db_g__d_oc __P (( u_t , __db_g__d_y *)); 64 __db_t__d_oc __P (( u_t , u_t32_t , __db_t__d_y *)); 65 __db_move_oc __P (( u_t , *, *, u_t32_t , __db_move_y *)); 66 __db_me_oc __P (( u_t , *, *, *, u_t32_t , __db_me_y *)); 67 __db__oc __P (( u_t , u_t, u_t32_t , __db__y *, *)); 68 __db_sync_oc __P (( u_t , u_t32_t , __db_sync_y *)); 69 __db_un_oc __P (( u_t , u_t, u_t32_t , __db_un_y *)); 70 __db_curs_oc __P (( u_t , u_t, u_t32_t , __db_curs_y *)); 71 __db_jo_oc __P (( u_t , u_t32_t *, u_t32_t, u_t32_t, __db_jo_y *)); 72 __dbc_o_oc __P (( u_t , __dbc_o_y *)); 73 __dbc_cou_oc __P (( u_t , u_t32_t , __dbc_cou_y *)); 74 __dbc_d_oc __P (( u_t , u_t32_t , __dbc_d_y *)); 75 __dbc_dup_oc __P (( u_t , u_t32_t , __dbc_dup_y *)); 76 __dbc_g_oc __P (( u_t , u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __dbc_g_y *, *)); 77 __dbc_pg_oc __P (( u_t , u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __dbc_pg_y *, *)); 78 __dbc_put_oc __P (( u_t , u_t32_t , u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, u_t32_t, u_t32_t, u_t32_t, *, u_t32_t, u_t32_t, __dbc_put_y *, *)); 79 __dbc_g_iܙy_oc __P (( u_t , __dbc_g_iܙy_y *)); 80 __dbc_t_iܙy_oc __P (( u_t , u_t32_t , __dbc_t_iܙy_y *)); 81 __dbv_imeout __P (( _y *, u_t32_t )); 82 __dbr_p __P (( _y *)); 83 __dbd_p __P (( _y *)); 84 _y * w__t __P ((*)); 85 _y * g_b˒t __P (()); 86 _y * __dbv_shedb __P ((_y *, cڡ *, cڡ *, DBTYPE , u_t32_t )); 87 _y * __dbv_shnv __P ((_y *, home_y *, u_t32_t )); 88 __dbv_aive __P (( _y *)); 89 __db_o_t __P ((, u_t32_t )); 90 __dbc_o_t __P (( _y *)); 91 __v_o_t __P ((, u_t32_t , )); 92 home_y * g_fuhome __P ((*)); 94 #i defed ( __lulus ) @../dbinc_auto/sequence_ext.h 2 #idef _qu_ext_h_ 3 #_qu_ext_h_ ) 5 #i defed ( __lulus ) 9 __q_ __P (( DB_SEQUENCE *, DB_SEQUENCE_STAT **, u_t32_t )); 10 __q__t __P (( DB_SEQUENCE *, u_t32_t )); 11 cڡ FN * __db_g_q_ags_ __P (()); 12 cڡ FN * __db_g_q_ags_ __P (()); 14 #i defed ( __lulus ) @../dbinc_auto/tcl_ext.h 2 #idef _t_ext_h_ 3 #_t_ext_h_ ) 5 #i defed ( __lulus ) 9 bdb_HCommd __P (( T_Ip *, , T_Obj * CONST *)); 10 #i DB_DBM_HSEARCH != 0 11 bdb_NdbmOn __P (( T_Ip *, , T_Obj * CONST *, DBM **)); 13 #i DB_DBM_HSEARCH != 0 14 bdb_DbmCommd __P (( T_Ip *, , T_Obj * CONST *, , DBM *)); 16 ndbm_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 17 _DbInfoDe __P (( T_Ip *, DBTCL_INFO *)); 18 db_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 19 t_ComSt __P (( T_Ip *, DBTCL_INFO *)); 20 t_p_nd __P (( DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t )); 21 dbc_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 22 v_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 23 t_EnvRemove __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 24 t_EnvIdRet __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 25 t_EnvLRet __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 26 t_EnvVbo __P (( T_Ip *, DB_ENV *, T_Obj *, Tcl_Obj *)); 27 t_EnvAr __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 28 t_EvtNify __P (( T_Ip *, DB_ENV *, T_Obj *, DBTCL_INFO *)); 29 t_EnvSFgs __P (( T_Ip *, DB_ENV *, T_Obj *, Tcl_Obj *)); 30 t_EnvTe __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 31 t_EnvGEnyFgs __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 32 t_EnvSEfe __P (( T_Ip *, DB_ENV *, DBTCL_INFO *, *)); 33 t_EnvSEpfx __P (( T_Ip *, DB_ENV *, DBTCL_INFO *, *)); 34 DBTCL_INFO * _NewInfo __P (( T_Ip *, *, *, INFOTYPE )); 35 * _NameToP __P (( CONST *)); 36 DBTCL_INFO * _PToInfo __P (( CONST *)); 37 DBTCL_INFO * _NameToInfo __P (( CONST *)); 38 _SInfoDa __P (( DBTCL_INFO *, *)); 39 _DeInfo __P (( DBTCL_INFO *)); 40 _SLiEm __P (( T_Ip *, T_Obj *, *, u_t32_t , *, u_int32_t)); 41 _SLiEmI __P (( T_Ip *, T_Obj *, *, )); 42 _SLiEmWideI __P (( T_Ip *, T_Obj *, *, t64_t )); 43 _SLiReoEm __P (( T_Ip *, T_Obj *, db_o_t , u_ch *, u_t32_t )); 44 _S3DBTLi __P (( T_Ip *, T_Obj *, DBT *, , DBT *, , DBT *)); 45 _SMuiLi __P (( T_Ip *, T_Obj *, DBT *, DBT*, DBTYPE , u_t32_t )); 46 _GGlobPfix __P ((*, **)); 47 _RuSup __P (( T_Ip *, , , *)); 48 _ESup __P (( T_Ip *, , *)); 49 _EFunc __P ((cڡ DB_ENV *, CONST *, const *)); 50 _EvtFunc __P (( DB_ENV *, u_t32_t , *)); 51 _GL __P (( T_Ip *, T_Obj *, DB_LSN *)); 52 _GUI32 __P (( T_Ip *, T_Obj *, u_t32_t *)); 53 T_Obj * _GFgsLi __P (( T_Ip *, u_t32_t , cڡ FN *)); 54 _debug_check __P (()); 55 _CyObjBys __P (( T_Ip *, T_Obj * obj , *, u_t32_t *, *)); 56 t_LockDe __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 57 t_LockG __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 58 t_LockSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 59 t_LockTimeout __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 60 t_LockVec __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 61 t_LogArchive __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 62 t_LogCom __P (( T_Ip *, , T_Obj * CONST *)); 63 t_LogFe __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 64 t_LogFlush __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 65 t_LogG __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 66 t_LogPut __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 67 t_LogSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 68 logc_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 69 _MpInfoDe __P (( T_Ip *, DBTCL_INFO *)); 70 t_MpSync __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 71 t_MpTrick __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 72 t_Mp __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 73 t_MpSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 74 t_RCfig __P (( T_Ip *, DB_ENV *, T_Obj *)); 75 t_RGCfig __P (( T_Ip *, DB_ENV *, T_Obj *)); 76 t_RE __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 77 t_RFlush __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 78 t_RSync __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 79 t_RL __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 80 t_RLim __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 81 t_RReque __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 82 t_RNrchiveTimeout __P (( T_Ip *, DB_ENV *)); 83 t_RTnt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 84 t_RS __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 85 t_RProssMesge __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 86 t_RSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 87 t_RMgr __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 88 t_RMgrSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 89 q_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 90 _TxnInfoDe __P (( T_Ip *, DBTCL_INFO *)); 91 t_TxnCheckpot __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 92 t_Txn __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 93 t_CDSGroup __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 94 t_TxnSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 95 t_TxnTimeout __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 96 t_TxnRecov __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 97 bdb_RdCommd __P (( T_Ip *, , T_Obj * CONST *)); 99 #i defed ( __lulus ) @../dbinc_auto/txn_auto.h 3 #idef __txn_AUTO_H 4 #__txn_AUTO_H ) 5 #DB___txn_g_42 10 ) 6 s___txn_g_42_gs { 7 u_t32_t mty ; 8 DB_TXN * mtx ; 9 DB_LSN mev_l ; 10 u_t32_t mcode ; 11 t32_t mtimeamp ; 12 DBT mlocks ; 13 } t__txn_g_42_gs ; 15 #DB___txn_g 10 ) 16 s___txn_g_gs { 17 u_t32_t mty ; 18 DB_TXN * mtx ; 19 DB_LSN mev_l ; 20 u_t32_t mcode ; 21 t32_t mtimeamp ; 22 u_t32_t mvid ; 23 DBT mlocks ; 24 } t__txn_g_gs ; 26 #DB___txn_ckp_42 11 ) 27 s___txn_ckp_42_gs { 28 u_t32_t mty ; 29 DB_TXN * mtx ; 30 DB_LSN mev_l ; 31 DB_LSN mckp_l ; 32 DB_LSN mϡ_ckp ; 33 t32_t mtimeamp ; 34 u_t32_t mp_g ; 35 } t__txn_ckp_42_gs ; 37 #DB___txn_ckp 11 ) 38 s___txn_ckp_gs { 39 u_t32_t mty ; 40 DB_TXN * mtx ; 41 DB_LSN mev_l ; 42 DB_LSN mckp_l ; 43 DB_LSN mϡ_ckp ; 44 t32_t mtimeamp ; 45 u_t32_t mvid ; 46 u_t32_t me ; 47 } t__txn_ckp_gs ; 49 #DB___txn_chd 12 ) 50 s___txn_chd_gs { 51 u_t32_t mty ; 52 DB_TXN * mtx ; 53 DB_LSN mev_l ; 54 u_t32_t mchd ; 55 DB_LSN mc_l ; 56 } t__txn_chd_gs ; 58 #DB___txn_xa_g 13 ) 59 s___txn_xa_g_gs { 60 u_t32_t mty ; 61 DB_TXN * mtx ; 62 DB_LSN mev_l ; 63 u_t32_t mcode ; 64 DBT mxid ; 65 t32_t mfmID ; 66 u_t32_t mgid ; 67 u_t32_t mbqu ; 68 DB_LSN mbeg_l ; 69 DBT mlocks ; 70 } t__txn_xa_g_gs ; 72 #DB___txn_cye 14 ) 73 s___txn_cye_gs { 74 u_t32_t mty ; 75 DB_TXN * mtx ; 76 DB_LSN mev_l ; 77 u_t32_t mm ; 78 u_t32_t mmax ; 79 } t__txn_cye_gs ; @../dbinc_auto/txn_ext.h 2 #idef _txn_ext_h_ 3 #_txn_ext_h_ ) 5 #i defed ( __lulus ) 9 __txn_beg_ __P (( DB_ENV *, DB_TXN *, DB_TXN **, u_t32_t )); 10 __txn_beg __P (( DB_ENV *, DB_TXN *, DB_TXN **, u_t32_t )); 11 __txn_xa_beg __P (( DB_ENV *, DB_TXN *)); 12 __txn_cye_id __P (( DB_ENV *)); 13 __txn_comn_beg __P (( DB_ENV *, DB_TXN **)); 14 __txn_ctue __P (( DB_ENV *, DB_TXN *, TXN_DETAIL *)); 15 __txn_comm __P (( DB_TXN *, u_t32_t )); 16 __txn_abt __P (( DB_TXN *)); 17 __txn_disrd_t __P (( DB_TXN *, u_t32_t ags )); 18 __txn_e __P (( DB_TXN *, u_t8_t *)); 19 u_t32_t __txn_id __P (( DB_TXN *)); 20 __txn_g_me __P (( DB_TXN *, const **)); 21 __txn_t_me __P (( DB_TXN *, const *)); 22 __txn_t_timeout __P (( DB_TXN *, db_timeout_t , u_t32_t )); 23 __txn_aivekids __P (( DB_ENV *, u_t32_t , DB_TXN *)); 24 __txn_f_abt __P (( DB_ENV *, u_t8_t *)); 25 __txn_eo __P (( DB_ENV *)); 26 __txn_t __P (( DB_ENV *)); 27 __txn_g_42_ad __P (( DB_ENV *, *, __txn_g_42_gs **)); 28 __txn_g_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, t32_t , u_t32_t, cڡ DBT *)); 29 __txn_g_ad __P (( DB_ENV *, *, __txn_g_gs **)); 30 __txn_ckp_42_ad __P (( DB_ENV *, *, __txn_ckp_42_gs **)); 31 __txn_ckp_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, DB_LSN *, t32_t , u_int32_t, u_int32_t)); 32 __txn_ckp_ad __P (( DB_ENV *, *, __txn_ckp_gs **)); 33 __txn_chd_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_int32_t, DB_LSN *)); 34 __txn_chd_ad __P (( DB_ENV *, *, __txn_chd_gs **)); 35 __txn_xa_g_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, cڡ DBT *, t32_t , u_int32_t, u_int32_t, DB_LSN *, const DBT *)); 36 __txn_xa_g_ad __P (( DB_ENV *, *, __txn_xa_g_gs **)); 37 __txn_cye_log __P (( DB_ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_int32_t, u_int32_t)); 38 __txn_cye_ad __P (( DB_ENV *, *, __txn_cye_gs **)); 39 __txn__cov __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 40 __txn_g_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 41 __txn_g_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 42 __txn_ckp_42_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 43 __txn_ckp_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 44 __txn_chd_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 45 __txn_xa_g_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 46 __txn_cye_t __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 47 __txn__t __P (( DB_ENV *, (***)(DB_ENV *, DBT *, DB_LSN *, db_cs , *), size_t *)); 48 __txn_checkpot_ __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 49 __txn_checkpot __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 50 __txn_gaive __P (( DB_ENV *, DB_LSN *)); 51 __txn_gckp __P (( DB_ENV *, DB_LSN *)); 52 __txn_updeckp __P (( DB_ENV *, DB_LSN *)); 53 __txn_chk __P (( DB_ENV *)); 54 __txn_v_ __P (( DB_ENV *)); 55 __txn_v_deroy __P (( DB_ENV *)); 56 __txn_g_tx_max __P (( DB_ENV *, u_t32_t *)); 57 __txn_t_tx_max __P (( DB_ENV *, u_t32_t )); 58 __txn_g_tx_timeamp __P (( DB_ENV *, time_t *)); 59 __txn_t_tx_timeamp __P (( DB_ENV *, time_t *)); 60 __txn_g_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 61 __txn_xa_g_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 62 __txn_ckp_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 63 __txn_chd_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 64 __txn_e_txn __P (( DB_ENV *, DB_LSN *, __txn_xa_g_gs *)); 65 __txn_cye_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 66 __txn_g_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 67 __txn_ckp_42_cov __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 68 __txn_m_gid __P (( DB_ENV *, u_t8_t *, TXN_DETAIL **, roff_t *)); 69 __txn_cov_ __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t )); 70 __txn_cov __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t )); 71 __txn_g_ed __P (( DB_ENV *, XID *, DB_PREPLIST *, , *, u_t32_t )); 72 __txn_ݒfes __P (( DB_ENV *, DB_LSN *, )); 73 __txn_ݒ __P (( DB_ENV *, )); 74 __txn_fdϡckp __P (( DB_ENV *, DB_LSN *, DB_LSN *)); 75 __txn_v_esh __P (( DB_ENV *)); 76 u_t32_t __txn_gi_mux_cou __P (( DB_ENV *)); 77 __txn_id_t __P (( DB_ENV *, u_t32_t , u_int32_t)); 78 __txn_de_ad __P (( DB_ENV *, DB_LSN *)); 79 __txn_add_bufr __P (( DB_ENV *, TXN_DETAIL *)); 80 __txn_move_bufr __P (( DB_ENV *, TXN_DETAIL *, db_mux_t )); 81 __txn__ __P (( DB_ENV *, DB_TXN_STAT **, u_t32_t )); 82 __txn__t_ __P (( DB_ENV *, u_t32_t )); 83 __txn__t __P (( DB_ENV *, u_t32_t )); 84 __txn_oevt __P (( DB_ENV *, DB_TXN *, DB *)); 85 __txn_mevt __P (( DB_ENV *, DB_TXN *, cڡ *, u_t8_t *, )); 86 __txn_mm __P (( DB_ENV *, DB_TXN *, const *)); 87 __txn_lockevt __P (( DB_ENV *, DB_TXN *, DB *, DB_LOCK *, DB_LOCKER *)); 88 __txn_mlock __P (( DB_ENV *, DB_TXN *, DB_LOCK *, DB_LOCKER *)); 89 __txn_dvts __P (( DB_ENV *, DB_TXN *, , )); 90 __txn_cd_ame __P (( DB_ENV *, DB_TXN *, FNAME *)); 91 __txn_df_ame __P (( DB_ENV *, DB_TXN *)); 93 #i defed ( __lulus ) @../dbinc_auto/xa_ext.h 2 #idef _xa_ext_h_ 3 #_xa_ext_h_ ) 5 #i defed ( __lulus ) 9 __xa_g_txn __P (( DB_ENV *, DB_TXN **, )); 10 __db_xa_ __P (( DB *)); 11 __db_rmid_to_v __P (( rmid , DB_ENV ** vp )); 12 __db_xid_to_txn __P (( DB_ENV *, XID *, roff_t *)); 13 __db_m_rmid __P ((, DB_ENV *)); 14 __db_unm_rmid __P (()); 15 __db_m_xid __P (( DB_ENV *, XID *, TXN_DETAIL *)); 16 __db_unm_xid __P (( DB_ENV *, XID *, size_t )); 18 #i defed ( __lulus ) @../dbm/dbm.c 44 #DB_DBM_HSEARCH 1 ) 45 ~"db_cfig.h " 47 ~"db_t.h " 82 DBM * g__cur_db ; 84 __db_no_ݒ __P (()); 87 $__db_dbm_ ( fe ) 88 * fe ; 90 i( __cur_db ! NULL ) 91 `dbm_o ( __cur_db ); 92 i(( __cur_db = 93 `dbm_ݒ ( fe , O_CREAT | O_RDWR , `__db_omode ( OWNER_RW ))! NULL ) 95 i(( __cur_db = `dbm_ݒ ( fe , O_RDONLY , 0)! NULL ) 98 } } 101 $__db_dbm_o () 103 i( __cur_db ! NULL ) { 104 `dbm_o ( __cur_db ); 105 __cur_db = NULL ; 108 } } 110 dum 111 $__db_dbm_tch ( key ) 112 dum key ; 114 dum em ; 116 i( __cur_db = NULL ) { 117 `__db_no_ݒ (); 118 em . dr = NULL ; 119 em . dsize = 0; 120 ( em ); 122 ( `dbm_tch ( __cur_db , key )); 123 } } 125 dum 126 $__db_dbm_fkey () 128 dum em ; 130 i( __cur_db = NULL ) { 131 `__db_no_ݒ (); 132 em . dr = NULL ; 133 em . dsize = 0; 134 ( em ); 136 ( `dbm_fkey ( __cur_db )); 137 } } 139 dum 140 $__db_dbm_xtkey ( key ) 141 dum key ; 143 dum em ; 145 `COMPQUIET ( key . dsize , 0); 147 i( __cur_db = NULL ) { 148 `__db_no_ݒ (); 149 em . dr = NULL ; 150 em . dsize = 0; 151 ( em ); 153 ( `dbm_xtkey ( __cur_db )); 154 } } 157 $__db_dbm_de ( key ) 158 dum key ; 160 i( __cur_db = NULL ) { 161 `__db_no_ݒ (); 164 ( `dbm_de ( __cur_db , key )); 165 } } 168 $__db_dbm_e ( key , d ) 169 dum key , d ; 171 i( __cur_db = NULL ) { 172 `__db_no_ݒ (); 175 ( `dbm_e ( __cur_db , key , d , DBM_REPLACE )); 176 } } 179 $__db_no_ݒ () 181 () `rtf ( dr , "dbm:o open database.\n"); 182 } } 194 DBM * 195 $__db_ndbm_ݒ ( fe , oags , mode ) 196 cڡ * fe ; 197 oags , mode ; 199 DB * dbp ; 200 DBC * dbc ; 201 t ; 202 th [ DB_MAXPATHLEN ]; 210 i( ` ( fe + sn( DBM_SUFFIX + 1 > ( th )) { 211 `__os_t_o ( ENAMETOOLONG ); 212 ( NULL ); 214 () `ry ( th , fe ); 215 () `rt ( th , DBM_SUFFIX ); 216 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 217 `__os_t_o ( t ); 218 ( NULL ); 225 i( oags & O_WRONLY ) { 226 oags &~ O_WRONLY ; 227 oags | O_RDWR ; 230 i(( t = dbp -> `t_gesize (dbp, 4096)) != 0 || 231 ( t = dbp -> `t_h_f (dbp, 40)) != 0 || 232 ( t = dbp -> `t_h_m (dbp, 1)) != 0 || 233 ( t = dbp -> `ݒ (dbp, NULL , 234 th , NULL , DB_HASH , `__db_oags ( oags ), mode )) != 0) { 235 `__os_t_o ( t ); 236 ( NULL ); 239 i(( t = dbp -> `curs (dbp, NULL , & dbc , 0)) != 0) { 240 () dbp -> `o (dbp, 0); 241 `__os_t_o ( t ); 242 ( NULL ); 245 (( DBM *) dbc ); 246 } } 253 $__db_ndbm_o ( dbm ) 254 DBM * dbm ; 256 DBC * dbc ; 258 dbc = ( DBC *) dbm ; 260 () dbc -> dbp -> `o (dbc->dbp, 0); 261 } } 268 dum 269 $__db_ndbm_tch ( dbm , key ) 270 DBM * dbm ; 271 dum key ; 273 DBC * dbc ; 274 DBT _key , _da ; 275 dum da ; 276 t ; 278 dbc = ( DBC *) dbm ; 280 `DB_INIT_DBT ( _key , key . dr , key. dsize ); 281 `memt (& _da , 0, ( DBT )); 288 i(( t = dbc -> dbp -> `g (dbc->dbp, NULL , & _key , & _da , 0)) == 0) { 289 da . dr = _da .data; 290 da . dsize = () _da . size ; 292 da . dr = NULL ; 293 da . dsize = 0; 294 i( t = DB_NOTFOUND ) 295 `__os_t_o ( ENOENT ); 297 `__os_t_o ( t ); 298 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 301 ( da ); 302 } } 309 dum 310 $__db_ndbm_fkey ( dbm ) 311 DBM * dbm ; 313 DBC * dbc ; 314 DBT _key , _da ; 315 dum key ; 316 t ; 318 dbc = ( DBC *) dbm ; 320 `memt (& _key , 0, ( DBT )); 321 `memt (& _da , 0, ( DBT )); 323 i(( t = dbc -> `g (dbc, & _key , & _da , DB_FIRST )) == 0) { 324 key . dr = _key . da ; 325 key . dsize = () _key . size ; 327 key . dr = NULL ; 328 key . dsize = 0; 329 i( t = DB_NOTFOUND ) 330 `__os_t_o ( ENOENT ); 332 `__os_t_o ( t ); 333 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 336 ( key ); 337 } } 344 dum 345 $__db_ndbm_xtkey ( dbm ) 346 DBM * dbm ; 348 DBC * dbc ; 349 DBT _key , _da ; 350 dum key ; 351 t ; 353 dbc = ( DBC *) dbm ; 355 `memt (& _key , 0, ( DBT )); 356 `memt (& _da , 0, ( DBT )); 358 i(( t = dbc -> `g (dbc, & _key , & _da , DB_NEXT )) == 0) { 359 key . dr = _key . da ; 360 key . dsize = () _key . size ; 362 key . dr = NULL ; 363 key . dsize = 0; 364 i( t = DB_NOTFOUND ) 365 `__os_t_o ( ENOENT ); 367 `__os_t_o ( t ); 368 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 371 ( key ); 372 } } 380 $__db_ndbm_de ( dbm , key ) 381 DBM * dbm ; 382 dum key ; 384 DBC * dbc ; 385 DBT _key ; 386 t ; 388 dbc = ( DBC *) dbm ; 390 `DB_INIT_DBT ( _key , key . dr , key. dsize ); 392 i(( t = dbc -> dbp -> `d (dbc->dbp, NULL , & _key , 0)) == 0) 395 i( t = DB_NOTFOUND ) 396 `__os_t_o ( ENOENT ); 398 `__os_t_o ( t ); 399 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 402 } } 411 $__db_ndbm_e ( dbm , key , da , ags ) 412 DBM * dbm ; 413 dum key , da ; 414 ags ; 416 DBC * dbc ; 417 DBT _key , _da ; 418 t ; 420 dbc = ( DBC *) dbm ; 422 `DB_INIT_DBT ( _key , key . dr , key. dsize ); 423 `DB_INIT_DBT ( _da , da . dr , da. dsize ); 425 i(( t = dbc -> dbp -> `put (dbc->dbp, NULL , 426 & _key , & _da , ags = DBM_INSERT ? DB_NOOVERWRITE : 0)) == 0) 429 i( t = DB_KEYEXIST ) 432 `__os_t_o ( t ); 433 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 435 } } 438 $__db_ndbm_r ( dbm ) 439 DBM * dbm ; 441 DBC * dbc ; 443 dbc = ( DBC *) dbm ; 445 ( `F_ISSET ( dbc -> dbp , DB_AM_DBM_ERROR )); 446 } } 449 $__db_ndbm_ ( dbm ) 450 DBM * dbm ; 452 DBC * dbc ; 454 dbc = ( DBC *) dbm ; 456 `F_CLR ( dbc -> dbp , DB_AM_DBM_ERROR ); 458 } } 466 $__db_ndbm_rdly ( dbm ) 467 DBM * dbm ; 469 DBC * dbc ; 471 dbc = ( DBC *) dbm ; 473 ( `F_ISSET ( dbc -> dbp , DB_AM_RDONLY ) ? 1 : 0); 474 } } 483 $__db_ndbm_do ( dbm ) 484 DBM * dbm ; 486 ( `dbm_go ( dbm )); 487 } } 490 $__db_ndbm_go ( dbm ) 491 DBM * dbm ; 493 DBC * dbc ; 494 fd ; 496 dbc = ( DBC *) dbm ; 498 () dbc -> dbp -> `fd (dbc->dbp, & fd ); 499 ( fd ); 500 } } @../dbreg/dbreg.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/log.h " 14 ~"dbc/txn.h " 15 ~"dbc/db_am.h " 17 __dbg_push_id __P (( DB_ENV *, t32_t )); 18 __dbg_p_id __P (( DB_ENV *, t32_t *)); 19 __dbg_uck_id __P (( DB_ENV *, t32_t )); 89 $__dbg_tup ( dbp , me , _txnid ) 90 DB * dbp ; 91 cڡ * me ; 92 u_t32_t _txnid ; 94 DB_ENV * dbv ; 95 DB_LOG * db ; 96 FNAME * p ; 97 REGINFO * f ; 98 t ; 99 size_t n ; 100 * m ; 102 dbv = dbp ->dbenv; 103 db = dbv -> lg_hd ; 104 f = & db -> gfo ; 106 p = NULL ; 107 m = NULL ; 110 `LOG_SYSTEM_LOCK ( dbv ); 111 i(( t = `__v_loc ( f , ( FNAME ), & p )) != 0) 112 r ; 113 `memt ( p , 0, ( FNAME )); 114 i( me ! NULL ) { 115 n = ` ( me ) + 1; 116 i(( t = `__v_loc ( f , n , & m )) != 0) 117 r ; 118 p -> me_off = `R_OFFSET ( f , m ); 119 `memy ( m , me , n ); 121 p -> me_off = INVALID_ROFF ; 123 `LOG_SYSTEM_UNLOCK ( dbv ); 129 p -> id = f-> d_id = DB_LOGFILEID_INVALID ; 130 p -> s_ty = dbp -> ty ; 131 `memy ( p -> ufid , dbp -> feid , DB_FILE_ID_LEN ); 132 p -> ma_pgno = dbp ->meta_pgno; 133 p -> _txnid = create_txnid; 135 i( `F_ISSET ( dbp , DB_AM_INMEM )) 136 `F_SET ( p , DB_FNAME_INMEM ); 137 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 138 `F_SET ( p , DB_FNAME_RECOVER ); 139 p -> txn_f = 1; 140 p -> mux = dbp ->mutex; 142 dbp -> log_fame = p ; 146 r : `LOG_SYSTEM_UNLOCK ( dbv ); 147 i( t = ENOMEM ) 148 `__db_rx ( dbv , 151 ( t ); 152 } } 162 $__dbg_down ( dbp ) 163 DB * dbp ; 165 t ; 171 i( dbp -> log_fame = NULL ) 174 t = `__dbg_down_t ( dbp -> dbv , dbp-> log_fame ); 177 dbp -> log_fame = NULL ; 178 dbp -> mux = MUTEX_INVALID ; 180 ( t ); 181 } } 190 $__dbg_down_t ( dbv , p ) 191 DB_ENV * dbv ; 192 FNAME * p ; 194 DB_LOG * db ; 195 REGINFO * f ; 196 t ; 198 i( `F_ISSET ( p , DB_FNAME_NOTLOGGED )) 200 db = dbv -> lg_hd ; 201 f = & db -> gfo ; 203 `DB_ASSERT ( dbv , p -> id = DB_LOGFILEID_INVALID ); 204 t = `__mux_ ( dbv , & p -> mux ); 206 `LOG_SYSTEM_LOCK ( dbv ); 207 i( p -> me_off ! INVALID_ROFF ) 208 `__v_loc_ ( f , `R_ADDR (f, p -> me_off )); 209 `__v_loc_ ( f , p ); 210 `LOG_SYSTEM_UNLOCK ( dbv ); 212 ( t ); 213 } } 224 $__dbg_w_id ( dbp , txn ) 225 DB * dbp ; 226 DB_TXN * txn ; 228 DB_ENV * dbv ; 229 DB_LOG * db ; 230 FNAME * p ; 231 LOG * ; 232 t32_t id ; 233 t ; 235 dbv = dbp ->dbenv; 236 db = dbv -> lg_hd ; 237 = db -> gfo . imy ; 238 p = dbp -> log_fame ; 241 `MUTEX_LOCK ( dbv , -> mtx_fi ); 242 i( p -> id ! DB_LOGFILEID_INVALID ) { 243 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 246 i(( t = `__dbg_g_id ( dbp , txn , & id )) == 0) 247 p -> id = id; 248 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 249 ( t ); 250 } } 261 $__dbg_g_id ( dbp , txn , idp ) 262 DB * dbp ; 263 DB_TXN * txn ; 264 t32_t * idp ; 266 DB_ENV * dbv ; 267 DB_LOG * db ; 268 FNAME * p ; 269 LOG * ; 270 t32_t id ; 271 t ; 273 dbv = dbp ->dbenv; 274 db = dbv -> lg_hd ; 275 = db -> gfo . imy ; 276 p = dbp -> log_fame ; 284 i(( t = `__dbg_p_id ( dbv , & id )) != 0) 285 r ; 288 i( id = DB_LOGFILEID_INVALID ) 289 id = -> fid_max ++; 292 i(! `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) 293 `F_SET ( p , DB_FNAME_DURABLE ); 296 `SH_TAILQ_INSERT_HEAD (& -> fq , p , q , __ame ); 302 `DB_ASSERT ( dbv , ! `F_ISSET ( dbp , DB_AM_RECOVER )); 304 i(( t = `__dbg_log_id ( dbp , txn , id , 0)) != 0) 305 r ; 312 p -> _txnid = TXN_INVALID ; 314 `DB_ASSERT ( dbv , dbp -> ty = p -> s_ty ); 315 `DB_ASSERT ( dbv , dbp -> ma_pgno = p ->meta_pgno); 317 i(( t = `__dbg_add_dby ( dbv , db , dbp , id )) != 0) 318 r ; 324 r : 325 i( t !0 && id ! DB_LOGFILEID_INVALID ) { 326 () `__dbg_voke_id ( dbp , 1, id ); 327 id = DB_LOGFILEID_INVALID ; 329 * idp = id ; 330 ( t ); 331 } } 340 $__dbg_assign_id ( dbp , id ) 341 DB * dbp ; 342 t32_t id ; 344 DB * o_dbp ; 345 DB_ENV * dbv ; 346 DB_LOG * db ; 347 FNAME * o_p , * p ; 348 LOG * ; 349 t ; 351 dbv = dbp ->dbenv; 352 db = dbv -> lg_hd ; 353 = db -> gfo . imy ; 354 p = dbp -> log_fame ; 356 o_dbp = NULL ; 357 o_p = NULL ; 360 `MUTEX_LOCK ( dbv , -> mtx_fi ); 363 `DB_ASSERT ( dbv , p -> id = DB_LOGFILEID_INVALID ); 370 i( `__dbg_id_to_ame ( db , id , 1, & o_p ) == 0) { 382 t = `__dbg_id_to_db_t ( dbv , NULL , & o_dbp , id , 0, 0); 383 i( t = ENOENT ) { 384 t = 0; 385 ct ; 386 } i( t != 0) 387 r ; 389 i(( t = `__dbg_voke_id ( o_dbp , 1, 390 DB_LOGFILEID_INVALID )) != 0) 391 r ; 398 ct : i(( t = `__dbg_uck_id ( dbv , id )) != 0) 399 r ; 400 i( id > -> fid_max ) 401 -> fid_max = id + 1; 404 p -> id = id; 406 i(! `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) 407 `F_SET ( p , DB_FNAME_DURABLE ); 408 `SH_TAILQ_INSERT_HEAD (& -> fq , p , q , __ame ); 415 i(( t = `__dbg_add_dby ( dbv , db , dbp , id )) != 0) 416 () `__dbg_voke_id ( dbp , 1, id ); 418 r : `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 421 i( o_dbp ! NULL ) 422 () `__db_o ( o_dbp , NULL , DB_NOSYNC ); 424 ( t ); 425 } } 435 $__dbg_voke_id ( dbp , have_lock , f_id ) 436 DB * dbp ; 437 have_lock ; 438 t32_t f_id ; 440 DB_ENV * dbv ; 441 DB_REP * db_p ; 442 push ; 444 dbv = dbp ->dbenv; 453 db_p = dbv -> p_hd ; 454 push = (! `F_ISSET ( dbp , DB_AM_RECOVER || `IS_RECOVERING ( dbv )) && 455 (! `REP_ON ( dbv || (( REP *) db_p -> gi )-> g = dbp -> fid_g ); 457 ( `__dbg_voke_id_t ( dbp -> dbv , 458 dbp -> log_fame , have_lock , push , f_id )); 459 } } 469 $__dbg_voke_id_t ( dbv , p , have_lock , push , f_id ) 470 DB_ENV * dbv ; 471 FNAME * p ; 472 have_lock , push ; 473 t32_t f_id ; 475 DB_LOG * db ; 476 LOG * ; 477 t32_t id ; 478 t ; 480 db = dbv -> lg_hd ; 481 = db -> gfo . imy ; 482 t = 0; 485 i( p = NULL ) 493 i( f_id ! DB_LOGFILEID_INVALID ) 494 id = f_id ; 495 i( p -> id = DB_LOGFILEID_INVALID ) { 496 i( p -> d_id = DB_LOGFILEID_INVALID ) 498 id = p -> d_id ; 500 id = p ->id; 501 i(! have_lock ) 502 `MUTEX_LOCK ( dbv , -> mtx_fi ); 504 p -> id = DB_LOGFILEID_INVALID ; 505 p -> d_id = DB_LOGFILEID_INVALID ; 508 `SH_TAILQ_REMOVE (& -> fq , p , q , __ame ); 516 i(! `F_ISSET ( p , DB_FNAME_CLOSED ) && 517 ( t = `__dbg_m_dby ( db , id )=0 && push ) 518 t = `__dbg_push_id ( dbv , id ); 520 i(! have_lock ) 521 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 522 ( t ); 523 } } 533 $__dbg_o_id ( dbp , txn , ) 534 DB * dbp ; 535 DB_TXN * txn ; 536 u_t32_t ; 538 DB_ENV * dbv ; 539 DB_LOG * db ; 540 FNAME * p ; 541 LOG * ; 542 t , t_t ; 544 dbv = dbp ->dbenv; 545 db = dbv -> lg_hd ; 546 = db -> gfo . imy ; 547 p = dbp -> log_fame ; 550 i( p = NULL ) 553 i( p -> id = DB_LOGFILEID_INVALID ) 554 ( `__dbg_voke_id ( dbp , 0, DB_LOGFILEID_INVALID )); 562 t = 0; 563 `DB_ASSERT ( dbv , p -> txn_f > 0); 564 i( p -> txn_f > 1) { 565 `MUTEX_LOCK ( dbv , dbp -> mux ); 566 i( p -> txn_f > 1) { 567 p -> txn_f --; 568 i(! `F_ISSET ( p , DB_FNAME_CLOSED ) && 569 ( t_t = `__dbg_m_dby ( 570 dbv -> lg_hd , p -> id )!0 && t == 0) 571 t = t_t ; 579 `F_SET ( p , DB_FNAME_CLOSED ); 580 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 582 dbp -> mux = MUTEX_INVALID ; 583 dbp -> log_fame = NULL ; 584 no_log ; 587 `MUTEX_LOCK ( dbv , -> mtx_fi ); 589 i(( t = `__dbg_log_o ( dbv , p , txn , )) != 0) 590 r ; 591 t = `__dbg_voke_id ( dbp , 1, DB_LOGFILEID_INVALID ); 593 r : `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 595 i(( t_t = `__dbg_down ( dbp )!0 && t == 0) 596 t = t_t ; 597 no_log : 598 ( t ); 599 } } 608 $__dbg_o_id_t ( dbv , p , , locked ) 609 DB_ENV * dbv ; 610 FNAME * p ; 611 u_t32_t ; 612 locked ; 614 DB_LOG * db ; 615 LOG * ; 616 t , t_t ; 618 `DB_ASSERT ( dbv , p -> txn_f == 1); 619 db = dbv -> lg_hd ; 620 = db -> gfo . imy ; 622 i( p -> id = DB_LOGFILEID_INVALID ) 623 ( `__dbg_voke_id_t ( dbv , 624 p , locked , 1, DB_LOGFILEID_INVALID )); 626 i( `F_ISSET ( p , DB_FNAME_RECOVER )) 627 ( `__dbg_o_fe ( dbv , p )); 632 i(! locked ) 633 `MUTEX_LOCK ( dbv , -> mtx_fi ); 634 i(( t = `__dbg_log_o ( dbv , p , NULL , )) != 0) 635 r ; 637 t = `__dbg_voke_id_t ( dbv , p , 1, 1, DB_LOGFILEID_INVALID ); 639 r : i(! locked ) 640 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 642 i(( t_t = `__dbg_down_t ( dbv , p )!0 && t == 0) 643 t = t_t ; 644 ( t ); 645 } } 659 $__dbg_log_o ( dbv , p , txn , ) 660 DB_ENV * dbv ; 661 FNAME * p ; 662 DB_TXN * txn ; 663 u_t32_t ; 665 DB_LOG * db ; 666 DBT fid_dbt , r_me , * db ; 667 DB_LSN r_unud ; 668 t ; 670 db = dbv -> lg_hd ; 671 t = 0; 673 i( p -> me_off = INVALID_ROFF ) 674 db = NULL ; 676 `memt (& r_me , 0, (r_name)); 677 r_me . da = `R_ADDR (& db -> gfo , p -> me_off ); 678 r_me . size = 679 ( u_t32_t ) ` ((*) r_me . da ) + 1; 680 db = & r_me ; 682 `memt (& fid_dbt , 0, (fid_dbt)); 683 fid_dbt . da = p -> ufid ; 684 fid_dbt . size = DB_FILE_ID_LEN ; 685 i(( t = `__dbg_gi_log ( dbv , txn , & r_unud , 686 `F_ISSET ( p , DB_FNAME_DURABLE ? 0 : DB_LOG_NOT_DURABLE , 687 , db , & fid_dbt , p -> id , 688 p -> s_ty , f-> ma_pgno , TXN_INVALID )) != 0) { 699 `F_SET ( p , DB_FNAME_NOTLOGGED ); 700 () `__dbg_m_dby ( db , p -> id ); 702 ( t ); 703 } } 716 $__dbg_push_id ( dbv , id ) 717 DB_ENV * dbv ; 718 t32_t id ; 720 DB_LOG * db ; 721 LOG * ; 722 REGINFO * f ; 723 t32_t * ack , * wack ; 724 t ; 726 db = dbv -> lg_hd ; 727 f = & db -> gfo ; 728 = f -> imy ; 730 i( id = -> fid_max - 1) { 731 -> fid_max --; 736 i( -> _fid_ack = INVALID_ROFF || 737 -> _fids_lod <-> _fids + 1) { 738 `LOG_SYSTEM_LOCK ( dbv ); 739 i(( t = `__v_loc ( f , 740 ( -> _fids_lod + 20* ( u_t32_t ), 741 & wack )) != 0) { 742 `LOG_SYSTEM_UNLOCK ( dbv ); 743 ( t ); 746 i( -> _fid_ack ! INVALID_ROFF ) { 747 ack = `R_ADDR ( f , -> _fid_ack ); 748 `memy ( wack , ack , 749 -> _fids_lod * ( u_t32_t )); 750 `__v_loc_ ( f , ack ); 752 -> _fid_ack = `R_OFFSET ( f , wack ); 753 -> _fids_lod += 20; 754 `LOG_SYSTEM_UNLOCK ( dbv ); 757 ack = `R_ADDR ( f , -> _fid_ack ); 758 ack [ -> _fids ++] = id ; 760 } } 763 $__dbg_p_id ( dbv , id ) 764 DB_ENV * dbv ; 765 t32_t * id ; 767 DB_LOG * db ; 768 LOG * ; 769 t32_t * ack ; 771 db = dbv -> lg_hd ; 772 = db -> gfo . imy ; 775 i( -> _fid_ack ! INVALID_ROFF &&p-> _fids > 0) { 776 ack = `R_ADDR (& db -> gfo , -> _fid_ack ); 777 * id = ack [-- -> _fids ]; 779 * id = DB_LOGFILEID_INVALID ; 782 } } 794 $__dbg_uck_id ( dbv , id ) 795 DB_ENV * dbv ; 796 t32_t id ; 798 DB_LOG * db ; 799 LOG * ; 800 t32_t * ack ; 801 u_t i ; 803 db = dbv -> lg_hd ; 804 = db -> gfo . imy ; 806 i( id > -> fid_max ) 810 i( -> _fid_ack ! INVALID_ROFF ) { 811 ack = `R_ADDR (& db -> gfo , -> _fid_ack ); 812 i = 0; i < -> _fids ; i++) 813 i( id = ack [ i ]) { 819 ack [ i ] = sck[ -> _fids - 1]; 820 -> _fids --; 826 } } 841 $__dbg_log_id ( dbp , txn , id , edlock ) 842 DB * dbp ; 843 DB_TXN * txn ; 844 t32_t id ; 845 edlock ; 847 DBT fid_dbt , r_me ; 848 DB_ENV * dbv ; 849 DB_LOG * db ; 850 DB_LSN unud ; 851 FNAME * p ; 852 LOG * ; 853 u_t32_t ; 854 t ; 856 dbv = dbp ->dbenv; 857 db = dbv -> lg_hd ; 858 = db -> gfo . imy ; 859 p = dbp -> log_fame ; 862 i( p -> s_ty = DB_UNKNOWN ) { 863 `memy ( p -> ufid , dbp -> feid , DB_FILE_ID_LEN ); 864 p -> s_ty = dbp -> ty ; 871 `memt (& fid_dbt , 0, (fid_dbt)); 872 `memt (& r_me , 0, (r_name)); 874 i( edlock ) 875 `MUTEX_LOCK ( dbv , -> mtx_fi ); 877 i( p -> me_off ! INVALID_ROFF ) { 878 r_me . da = `R_ADDR (& db -> gfo , p -> me_off ); 879 r_me . size = ( u_t32_t ) ` ((*_me. da ) + 1; 882 fid_dbt . da = dbp -> feid ; 883 fid_dbt . size = DB_FILE_ID_LEN ; 885 = ! `F_ISSET ( dbp , DB_AM_OPEN_CALLED ? DBREG_PREOPEN : 886 ( `F_ISSET ( dbp , DB_AM_INMEM ? DBREG_REOPEN : DBREG_OPEN ); 887 t = `__dbg_gi_log ( dbv , txn , & unud , 888 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0, 889 , r_me . size =0 ? NULL : &r_me, & fid_dbt , id , 890 p -> s_ty , f-> ma_pgno , f-> _txnid ); 892 i( edlock ) 893 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 895 ( t ); 896 } } @../dbreg/dbreg_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 19 $__dbg_gi_log ( dbv , tx , t_lp , ags , 20 code , me , uid , feid , y , ma_pgno , 21 id ) 22 DB_ENV * dbv ; 23 DB_TXN * tx ; 24 DB_LSN * t_lp ; 25 u_t32_t ags ; 26 u_t32_t code ; 27 cڡ DBT * me ; 28 cڡ DBT * uid ; 29 t32_t feid ; 30 DBTYPE y ; 31 db_pgno_t ma_pgno ; 32 u_t32_t id ; 34 DBT logc ; 35 DB_TXNLOGREC * ; 36 DB_LSN * lp , nu_l , * p ; 37 u_t32_t zo , ump , y , txn_num ; 38 u_t ad ; 39 u_t8_t * bp ; 40 is_dub , t ; 42 `COMPQUIET ( , NULL ); 44 y = DB___dbg_gi ; 45 ad = 0; 46 p = t_lp ; 48 t = 0; 50 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 51 i( tx = NULL ) 53 i( tx = NULL ) 55 is_dub = 0; 57 is_dub = 1; 59 i( tx = NULL ) { 60 txn_num = 0; 61 lp = & nu_l ; 62 nu_l . fe =u_l. offt = 0; 64 i( `TAILQ_FIRST (& tx -> kids ! NULL && 65 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 66 ( t ); 73 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 74 txn_num = tx -> txnid ; 77 logc . size = ( y + ( txn_num + ( DB_LSN ) 78 + ( u_t32_t ) 79 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 80 + ( u_t32_t + ( uid = NULL ? 0 : uid-> size ) 81 + ( u_t32_t ) 82 + ( u_t32_t ) 83 + ( u_t32_t ) 84 + ( u_t32_t ); 85 i( `CRYPTO_ON ( dbv )) { 86 ad = 87 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 88 logc . size + ad ; 91 i( is_dub || tx = NULL ) { 92 i(( t = 93 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 94 ( t ); 96 i(( t = `__os_mloc ( dbv , 97 logc . size + ( DB_TXNLOGREC ), & )) != 0) 98 ( t ); 99 #ifde DIAGNOSTIC 100 i(( t = 101 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 102 `__os_ ( dbv , ); 103 ( t ); 106 logc . da = ->data; 109 i( ad > 0) 110 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 112 bp = logc . da ; 114 `memy ( bp , & y , (rectype)); 115 bp +( y ); 117 `memy ( bp , & txn_num , (txn_num)); 118 bp +( txn_num ); 120 `memy ( bp , lp , ( DB_LSN )); 121 bp +( DB_LSN ); 123 ump = ( u_t32_t ) code ; 124 `memy ( bp , & ump , (uinttmp)); 125 bp +( ump ); 127 i( me = NULL ) { 128 zo = 0; 129 `memy ( bp , & zo , ( u_t32_t )); 130 bp +( u_t32_t ); 132 `memy ( bp , & me -> size , (name->size)); 133 bp +( me -> size ); 134 `memy ( bp , me -> da ,ame-> size ); 135 bp + me -> size ; 138 i( uid = NULL ) { 139 zo = 0; 140 `memy ( bp , & zo , ( u_t32_t )); 141 bp +( u_t32_t ); 143 `memy ( bp , & uid -> size , (uid->size)); 144 bp +( uid -> size ); 145 `memy ( bp , uid -> da , uid-> size ); 146 bp + uid -> size ; 149 ump = ( u_t32_t ) feid ; 150 `memy ( bp , & ump , (uinttmp)); 151 bp +( ump ); 153 ump = ( u_t32_t ) y ; 154 `memy ( bp , & ump , (uinttmp)); 155 bp +( ump ); 157 ump = ( u_t32_t ) ma_pgno ; 158 `memy ( bp , & ump , (uinttmp)); 159 bp +( ump ); 161 ump = ( u_t32_t ) id ; 162 `memy ( bp , & ump , (uinttmp)); 163 bp +( ump ); 165 `DB_ASSERT ( dbv , 166 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 168 i( is_dub || tx = NULL ) { 169 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 170 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 171 * lp = * p ; 172 i( p ! t_lp ) 173 * t_lp = * p ; 176 t = 0; 177 #ifde DIAGNOSTIC 182 `memy ( -> da , logc .da,ogc. size ); 183 y | DB_debug_FLAG ; 184 `memy ( logc . da , & y , (rectype)); 186 i(! `IS_REP_CLIENT ( dbv )) 187 t = `__log_put ( dbv , 188 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 190 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 191 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 192 `LSN_NOT_LOGGED (* t_lp ); 195 #ifde LOG_DIAGNOSTIC 196 i( t != 0) 197 () `__dbg_gi_t ( dbv , 198 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 201 #ifde DIAGNOSTIC 202 `__os_ ( dbv , logc . da ); 204 i( is_dub || tx = NULL ) 205 `__os_ ( dbv , logc . da ); 207 ( t ); 208 } } 215 $__dbg_gi_ad ( dbv , cbuf , g ) 216 DB_ENV * dbv ; 217 * cbuf ; 218 __dbg_gi_gs ** g ; 220 __dbg_gi_gs * gp ; 221 u_t32_t ump ; 222 u_t8_t * bp ; 223 t ; 225 i(( t = `__os_mloc ( dbv , 226 ( __dbg_gi_gs + ( DB_TXN ), & gp )) != 0) 227 ( t ); 228 bp = cbuf ; 229 gp -> tx = ( DB_TXN *)&argp[1]; 230 `memt ( gp -> tx , 0, ( DB_TXN )); 232 `memy (& gp -> ty , bp , (argp->type)); 233 bp +( gp -> ty ); 235 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 236 bp +( gp -> tx -> txnid ); 238 `memy (& gp -> ev_l , bp , ( DB_LSN )); 239 bp +( DB_LSN ); 241 `memy (& ump , bp , (uinttmp)); 242 gp -> code = ( u_t32_t ) ump ; 243 bp +( ump ); 245 `memt (& gp -> me , 0, (argp->name)); 246 `memy (& gp -> me . size , bp , ( u_t32_t )); 247 bp +( u_t32_t ); 248 gp -> me . da = bp ; 249 bp + gp -> me . size ; 251 `memt (& gp -> uid , 0, (argp->uid)); 252 `memy (& gp -> uid . size , bp , ( u_t32_t )); 253 bp +( u_t32_t ); 254 gp -> uid . da = bp ; 255 bp + gp -> uid . size ; 257 `memy (& ump , bp , (uinttmp)); 258 gp -> feid = ( t32_t ) ump ; 259 bp +( ump ); 261 `memy (& ump , bp , (uinttmp)); 262 gp -> y = ( DBTYPE ) ump ; 263 bp +( ump ); 265 `memy (& ump , bp , (uinttmp)); 266 gp -> ma_pgno = ( db_pgno_t ) ump ; 267 bp +( ump ); 269 `memy (& ump , bp , (uinttmp)); 270 gp -> id = ( u_t32_t ) ump ; 271 bp +( ump ); 273 * g = gp ; 275 } } 282 $__dbg__cov ( dbv , dbp , dbsiz ) 283 DB_ENV * dbv ; 284 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 285 size_t * dbsiz ; 287 t ; 289 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 290 __dbg_gi_cov , DB___dbg_gi )) != 0) 291 ( t ); 293 } } @../dbreg/dbreg_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__dbg_gi_t ( dbv , db , lp , nud2 , nud3 ) 19 DB_ENV * dbv ; 20 DBT * db ; 21 DB_LSN * lp ; 22 db_cs nud2 ; 23 * nud3 ; 25 __dbg_gi_gs * gp ; 26 u_t32_t i ; 27 ch ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = `__dbg_gi_ad ( dbv , db -> da , & gp )) != 0) 34 ( t ); 35 () `tf ( 37 ( u_lg ) lp -> fe , (u_lgp-> offt , 38 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 39 ( u_lg ) gp -> ty , 40 ( u_lg ) gp -> tx -> txnid , 41 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 42 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 43 () `tf ("\tname: "); 44 i = 0; i < gp -> me . size ; i++) { 45 ch = (( u_t8_t *) gp -> me . da )[ i ]; 46 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 48 () `tf ("\n"); 49 () `tf ("\tuid: "); 50 i = 0; i < gp -> uid . size ; i++) { 51 ch = (( u_t8_t *) gp -> uid . da )[ i ]; 52 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 54 () `tf ("\n"); 55 () `tf ("\tfeid: %ld\n", () gp -> feid ); 56 () `tf ("\ty: 0x%lx\n", ( u_lg ) gp -> y ); 57 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 58 () `tf ("\tid: 0x%lx\n", ( u_lg ) gp -> id ); 59 () `tf ("\n"); 60 `__os_ ( dbv , gp ); 62 } } 69 $__dbg__t ( dbv , dbp , dbsiz ) 70 DB_ENV * dbv ; 71 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 72 size_t * dbsiz ; 74 t ; 76 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 77 __dbg_gi_t , DB___dbg_gi )) != 0) 78 ( t ); 80 } } @../dbreg/dbreg_rec.c 37 ~"db_cfig.h " 39 ~"db_t.h " 40 ~"dbc/db_ge.h " 41 ~"dbc/db_am.h " 42 ~"dbc/log.h " 43 ~"dbc/txn.h " 45 __dbg_ݒ_fe __P (( DB_ENV *, 46 DB_TXN *, __dbg_gi_gs *, *)); 53 $__dbg_gi_cov ( dbv , db , lp , , fo ) 54 DB_ENV * dbv ; 55 DBT * db ; 56 DB_LSN * lp ; 57 db_cs ; 58 * fo ; 60 DB_ENTRY * dbe ; 61 DB_LOG * db ; 62 DB * dbp ; 63 __dbg_gi_gs * gp ; 64 do_o , do_ݒ , do_m , t , t_t ; 65 u_t32_t us ; 67 db = dbv -> lg_hd ; 68 dbp = NULL ; 70 #ifde DEBUG_RECOVER 71 `REC_PRINT ( __dbg_gi_t ); 73 do_ݒ = do_o = 0; 74 i(( t = `__dbg_gi_ad ( dbv , db -> da , & gp )) != 0) 75 out ; 77 gp -> code ) { 78 DBREG_REOPEN : 79 DBREG_PREOPEN : 80 DBREG_OPEN : 87 i(( `DB_REDO ( ) || 88 = DB_TXN_OPENFILES || o= DB_TXN_POPENFILES )) 89 do_ݒ = 1; 90 i( gp -> code ! DBREG_REOPEN ) 91 do_o = 1; 93 DBREG_CLOSE : 94 i( `DB_UNDO ( )) 95 do_ݒ = 1; 97 do_o = 1; 99 DBREG_RCLOSE : 108 i( `DB_UNDO ( || o= DB_TXN_POPENFILES ) 109 do_ݒ = 1; 111 do_o = 1; 113 DBREG_CHKPNT : 114 i( `DB_UNDO ( ) || 115 = DB_TXN_OPENFILES || o= DB_TXN_POPENFILES ) 116 do_ݒ = 1; 119 t = `__db_unknown_th ( dbv , "__dbreg_register_recover"); 120 out ; 123 i( do_ݒ ) { 128 i( = DB_TXN_OPENFILES && gp -> code ! DBREG_CHKPNT ) 129 `F_SET ( db , DBLOG_FORCE_OPEN ); 136 t = `__dbg_ݒ_fe ( dbv , 137 = DB_TXN_ABORT || o= DB_TXN_POPENFILES ? 138 gp -> tx : NULL ,rgp, fo ); 139 i( t = DB_PAGE_NOTFOUND && gp -> ma_pgno ! PGNO_BASE_MD ) 140 t = ENOENT ; 141 i( t = ENOENT || = EINVAL ) { 149 i( = DB_TXN_FORWARD_ROLL && 150 gp -> tx != 0 && 151 db -> dby [ gp -> feid ]. ded ) { 152 db -> dby [ gp -> feid ]. ded = 0; 153 t = 154 `__dbg_ݒ_fe ( dbv , NULL , gp , fo ); 155 i( t = DB_PAGE_NOTFOUND && 156 gp -> ma_pgno ! PGNO_BASE_MD ) 157 t = ENOENT ; 164 i( t = ENOENT ) 165 t = 0; 167 `F_CLR ( db , DBLOG_FORCE_OPEN ); 170 i( do_o ) { 183 do_m = 0; 184 `MUTEX_LOCK ( dbv , db -> mtx_dbg ); 185 i( gp -> feid < db -> dby_t ) { 202 dbe = & db -> dby [ gp -> feid ]; 203 i( dbe -> dbp = NULL && !dbe-> ded ) { 205 i(( `DB_REDO ( ) && 206 gp -> code ! DBREG_RCLOSE ) || 207 gp -> code = DBREG_CHKPNT ) { 208 `__db_rx ( dbv , 210 ( u_lg ) lp -> fe , 211 ( u_lg ) lp -> offt ); 213 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 214 de ; 218 i(( dbp = dbe ->dbp! NULL ) { 229 do_m = `F_ISSET ( dbp , DB_AM_RECOVER ) ? 230 ! DB_TXN_ABORT : op == DB_TXN_ABORT; 231 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 237 i(! `F_ISSET ( dbp , DB_AM_RECOVER )) { 238 i( = DB_TXN_ABORT ) 239 t = `__dbg_log_o ( dbv , 240 dbp -> log_fame , 241 NULL , DBREG_RCLOSE ); 242 i( t == 0) 243 () `__dbg_voke_id ( dbp , 0, 244 DB_LOGFILEID_INVALID ); 245 t = 0; 247 } i( dbe -> ded ) { 248 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 249 i(( t = `__dbg_m_dby ( 250 db , gp -> feid )) != 0) 251 out ; 254 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 273 i( do_m && dbp ! NULL ) { 274 i( gp -> id ! TXN_INVALID ) { 275 i(( t = `__db_txi_fd ( dbv , 276 fo , gp -> tx -> txnid , & us )) 277 ! DB_NOTFOUND && t != 0) 278 out ; 279 i( t = DB_NOTFOUND || us ! TXN_COMMIT ) 280 `F_SET ( dbp , DB_AM_DISCARD ); 281 t = 0; 284 i( = DB_TXN_ABORT ) { 285 i(( t_t = `__db_esh ( dbp , 286 NULL , DB_NOSYNC , NULL, 0)!0 && t == 0) 287 t = t_t ; 289 i(( t_t = `__db_o ( 290 dbp , NULL , DB_NOSYNC )!0 && t == 0) 291 t = t_t ; 295 de : i( t == 0) 296 * lp = gp -> ev_l ; 297 out : i( gp ! NULL ) 298 `__os_ ( dbv , gp ); 299 ( t ); 300 } } 309 $__dbg_ݒ_fe ( dbv , txn , gp , fo ) 310 DB_ENV * dbv ; 311 DB_TXN * txn ; 312 __dbg_gi_gs * gp ; 313 * fo ; 315 DB_ENTRY * dbe ; 316 DB_LOG * db ; 317 DB * dbp ; 318 u_t32_t id , us ; 319 t ; 321 db = dbv -> lg_hd ; 328 `MUTEX_LOCK ( dbv , db -> mtx_dbg ); 329 i( gp -> feid ! DB_LOGFILEID_INVALID && 330 gp -> feid < db -> dby_t ) 331 dbe = & db -> dby [ gp -> feid ]; 333 dbe = NULL ; 335 i( dbe ! NULL ) { 336 i( dbe -> ded ) { 337 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 338 ( ENOENT ); 353 i(( dbp = dbe ->dbp! NULL ) { 354 i( gp -> code = DBREG_REOPEN || 355 dbp -> ma_pgno ! gp ->meta_pgno || 356 gp -> me . size == 0 || 357 `memcmp ( dbp -> feid , gp -> uid . da , 358 DB_FILE_ID_LEN ) != 0) { 359 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 360 () `__dbg_voke_id ( dbp , 0, 361 DB_LOGFILEID_INVALID ); 362 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 363 () `__db_o ( dbp , NULL , DB_NOSYNC ); 364 ݒ ; 372 `DB_ASSERT ( dbv , dbe -> dbp == dbp); 373 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 380 i( gp -> id ! TXN_INVALID && 381 ( t = `__db_txi_upde ( dbv , fo , 382 gp -> id , TXN_EXPECTED , NULL , & us , 1)) != 0) 383 ( t ); 388 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 390 ݒ : 398 i( gp -> me . size == 0) { 399 () `__dbg_add_dby ( dbv , db , NULL , gp -> feid ); 400 ( ENOENT ); 407 i( txn ! NULL ) { 408 id = txn -> txnid ; 409 `memt ( txn , 0, ( DB_TXN )); 410 txn -> txnid = id ; 411 txn -> mg = dbv -> tx_hd ; 414 ( `__dbg_do_ݒ ( dbv , 415 txn , db , gp -> uid . da ,rgp-> me .da,rgp-> y , 416 gp -> feid ,rgp-> ma_pgno , fo ,rgp-> id ,rgp-> code )); 417 } } @../dbreg/dbreg_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 15 ~"dbc/txn.h " 17 #ifde HAVE_STATISTICS 18 __dbg_t_dbli __P (( DB_ENV *, u_t32_t )); 27 $__dbg__t ( dbv , ags ) 28 DB_ENV * dbv ; 29 u_t32_t ags ; 31 t ; 33 i( `LF_ISSET ( DB_STAT_ALL ) && 34 ( t = `__dbg_t_dbli ( dbv , ags )) != 0) 35 ( t ); 38 } } 47 $__dbg_t_ame ( dbv , p ) 48 DB_ENV * dbv ; 49 FNAME * p ; 51 cڡ FN [] = { 52 { DB_FNAME_DURABLE , "DB_FNAME_DURABLE" }, 53 { DB_FNAME_NOTLOGGED , "DB_FNAME_NOTLOGGED" }, 54 { 0, NULL } 57 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 58 `__db_msg ( dbv , "DB handle FNAME contents:"); 59 `STAT_LONG ("log ID", p -> id ); 60 `STAT_ULONG ("Mpgno", p -> ma_pgno ); 61 `__db_t_feid ( dbv , p -> ufid , "\tFile ID"); 62 `STAT_ULONG ("xn", p -> _txnid ); 63 `__db_ags ( dbv , NULL , p -> ags , , NULL, "\tFlags"); 64 } } 71 $__dbg_t_dbli ( dbv , ags ) 72 DB_ENV * dbv ; 73 u_t32_t ags ; 75 DB * dbp ; 76 DB_LOG * db ; 77 FNAME * p ; 78 LOG * ; 79 d , f ; 80 * me ; 82 db = dbv -> lg_hd ; 83 = db -> gfo . imy ; 85 `__db_msg ( dbv , "LOG FNAMEist:"); 86 `__mux_t_debug_sg ( 87 dbv , "Fmmux", -> mtx_fi , ags ); 89 `STAT_LONG ("Fid max", -> fid_max ); 91 `MUTEX_LOCK ( dbv , -> mtx_fi ); 92 f = 1; 93 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) { 94 i( f ) { 95 f = 0; 96 `__db_msg ( dbv , 99 i( p -> me_off = INVALID_ROFF ) 100 me = ""; 102 me = `R_ADDR (& db -> gfo , p -> me_off ); 104 dbp = p -> id > db -> dby_t ? NULL : 105 db -> dby [ p -> id ]. dbp ; 106 d = p -> id > db -> dby_t ? 0 : 107 db -> dby [ p -> id ]. ded ; 108 `__db_msg ( dbv , "%ld\t%s\t%s\t%lu\t%lx\t%s %d %lx %lx", 109 () p -> id , me , 110 `__db_dbty_to_rg ( p -> s_ty ), 111 ( u_lg ) p -> ma_pgno , (u_lg)p-> _txnid , 112 dbp = NULL ? "NDBP" : "DBP", d , `P_TO_ULONG (dbp), 113 ( u_lg )( dbp = NULL ? 0 : dbp-> ags )); 115 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 118 } } @../dbreg/dbreg_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/f.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/txn.h " 19 __dbg_check_ma __P (( DB_ENV *, u_t8_t *, *)); 28 $__dbg_add_dby ( dbv , db , dbp , ndx ) 29 DB_ENV * dbv ; 30 DB_LOG * db ; 31 DB * dbp ; 32 t32_t ndx ; 34 t32_t i ; 35 t ; 37 t = 0; 39 `MUTEX_LOCK ( dbv , db -> mtx_dbg ); 46 i( db -> dby_t < ndx ) { 47 i(( t = `__os_loc ( dbv , 48 ( size_t )( ndx + DB_GROW_SIZE * ( DB_ENTRY ), 49 & db -> dby )) != 0) 50 r ; 53 i = db -> dby_t ; i < ndx + DB_GROW_SIZE ; i++) { 54 db -> dby [ i ]. dbp = NULL ; 55 db -> dby [ i ]. ded = 0; 57 db -> dby_t = i ; 60 `DB_ASSERT ( dbv , db -> dby [ ndx ]. dbp = NULL ); 61 db -> dby [ ndx ]. ded = dbp = NULL ; 62 db -> dby [ ndx ]. dbp = dbp; 64 r : `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 65 ( t ); 66 } } 75 $__dbg_m_dby ( db , ndx ) 76 DB_LOG * db ; 77 t32_t ndx ; 79 `MUTEX_LOCK ( db -> dbv , db-> mtx_dbg ); 80 i( db -> dby_t > ndx ) { 81 db -> dby [ ndx ]. dbp = NULL ; 82 db -> dby [ ndx ]. ded = 0; 84 `MUTEX_UNLOCK ( db -> dbv , db-> mtx_dbg ); 87 } } 96 $__dbg_log_fes ( dbv , code ) 97 DB_ENV * dbv ; 98 u_t32_t code ; 100 DB_LOG * db ; 101 DB_LSN r_unud ; 102 DBT * db , fid_dbt , t ; 103 FNAME * p ; 104 LOG * ; 105 t ; 107 db = dbv -> lg_hd ; 108 = db -> gfo . imy ; 110 t = 0; 112 `MUTEX_LOCK ( dbv , -> mtx_fi ); 114 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) { 116 i( p -> id = DB_LOGFILEID_INVALID ) 118 i( p -> me_off = INVALID_ROFF ) 119 db = NULL ; 121 `memt (& t , 0, (t)); 122 t . da = `R_ADDR (& db -> gfo , p -> me_off ); 123 t . size = ( u_t32_t ) ` . da ) + 1; 124 db = & t ; 126 `memt (& fid_dbt , 0, (fid_dbt)); 127 fid_dbt . da = p -> ufid ; 128 fid_dbt . size = DB_FILE_ID_LEN ; 137 i(( t = `__dbg_gi_log ( dbv , 138 NULL , & r_unud , 139 `F_ISSET ( p , DB_FNAME_DURABLE ? 0 : DB_LOG_NOT_DURABLE , 140 code , 141 db , & fid_dbt , p -> id , f-> s_ty , f-> ma_pgno , 142 TXN_INVALID )) != 0) 146 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 148 ( t ); 149 } } 162 $__dbg_o_fes ( dbv , do_ed ) 163 DB_ENV * dbv ; 164 do_ed ; 166 DB_LOG * db ; 167 DB * dbp ; 168 t , t_t ; 169 t32_t i ; 172 i(! `LOGGING_ON ( dbv )) 175 db = dbv -> lg_hd ; 176 t = 0; 178 `MUTEX_LOCK ( dbv , db -> mtx_dbg ); 179 i = 0; i < db -> dby_t ; i++) { 188 i(( dbp = db -> dby [ i ].dbp! NULL ) { 204 i( do_ed && 205 ! `F_ISSET ( dbp -> log_fame , DB_FNAME_RESTORED )) 207 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 208 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 209 t_t = `__db_o ( dbp , NULL , DB_NOSYNC ); 211 t_t = `__dbg_voke_id ( 212 dbp , 0, DB_LOGFILEID_INVALID ); 213 i( t == 0) 214 t = t_t ; 215 `MUTEX_LOCK ( dbv , db -> mtx_dbg ); 218 db -> dby [ i ]. ded = 0; 219 db -> dby [ i ]. dbp = NULL ; 221 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 222 ( t ); 223 } } 231 $__dbg_o_fe ( dbv , p ) 232 DB_ENV * dbv ; 233 FNAME * p ; 235 DB_LOG * db ; 236 DB * dbp ; 238 db = dbv -> lg_hd ; 240 dbp = db -> dby [ p -> id ].dbp; 241 i( dbp = NULL ) 243 `DB_ASSERT ( dbv , dbp -> log_fame = p ); 244 `DB_ASSERT ( dbv , `F_ISSET ( dbp , DB_AM_RECOVER )); 245 ( `__db_o ( dbp , NULL , DB_NOSYNC )); 246 } } 257 $__dbg_mk_ed ( dbv ) 258 DB_ENV * dbv ; 260 DB_LOG * db ; 261 FNAME * p ; 262 LOG * ; 265 i(! `LOGGING_ON ( dbv )) 268 db = dbv -> lg_hd ; 269 = db -> gfo . imy ; 271 `MUTEX_LOCK ( dbv , -> mtx_fi ); 272 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 273 i( p -> id ! DB_LOGFILEID_INVALID ) 274 `F_SET ( p , DB_FNAME_RESTORED ); 276 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 278 } } 289 $__dbg_vide_fes ( dbv , do_ed ) 290 DB_ENV * dbv ; 291 do_ed ; 293 DB_LOG * db ; 294 FNAME * p ; 295 LOG * ; 296 t ; 299 i(! `LOGGING_ON ( dbv )) 302 db = dbv -> lg_hd ; 303 = db -> gfo . imy ; 305 t = 0; 306 `MUTEX_LOCK ( dbv , -> mtx_fi ); 307 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) { 313 i( `F_ISSET ( p , DB_FNAME_RESTORED && ! do_ed ) 315 i(! `F_ISSET ( p , DB_FNAME_RESTORED && do_ed ) 317 i( p -> id ! DB_LOGFILEID_INVALID ) { 318 i(( t = `__dbg_log_o ( dbv , 319 p , NULL , DBREG_RCLOSE )) != 0) 320 r ; 321 p -> d_id = f-> id ; 322 p -> id = DB_LOGFILEID_INVALID ; 325 r : `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 326 ( t ); 327 } } 336 $__dbg_id_to_db ( dbv , txn , db , ndx , c ) 337 DB_ENV * dbv ; 338 DB_TXN * txn ; 339 DB ** db ; 340 t32_t ndx ; 341 c ; 343 ( `__dbg_id_to_db_t ( dbv , txn , db , ndx , c , 1)); 344 } } 360 $__dbg_id_to_db_t ( dbv , txn , db , ndx , c , yݒ ) 361 DB_ENV * dbv ; 362 DB_TXN * txn ; 363 DB ** db ; 364 t32_t ndx ; 365 c , yݒ ; 367 DB_LOG * db ; 368 FNAME * ame ; 369 t ; 370 * me ; 372 t = 0; 373 db = dbv -> lg_hd ; 374 `COMPQUIET ( c , 0); 376 `MUTEX_LOCK ( dbv , db -> mtx_dbg ); 384 i( ndx > db -> dby_t || 385 (! db -> dby [ ndx ]. ded && db->dby[ndx]. dbp = NULL )) { 386 i(! yݒ || `F_ISSET ( db , DBLOG_RECOVER )) { 387 t = ENOENT ; 388 r ; 397 `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 399 i( `__dbg_id_to_ame ( db , ndx , 0, & ame ) != 0) 406 ( ENOENT ); 415 me = `R_ADDR (& db -> gfo , ame -> me_off ); 425 i(( t = `__dbg_do_ݒ ( dbv , txn , db , 426 ame -> ufid , me , fme-> s_ty , ndx , fme-> ma_pgno , 427 NULL , TXN_INVALID , `F_ISSET ( ame , DB_FNAME_INMEM ) ? 428 DBREG_REOPEN : DBREG_OPEN )) != 0) 429 ( t ); 431 * db = db -> dby [ ndx ]. dbp ; 432 (* db = NULL ? DB_DELETED : 0); 438 i( db -> dby [ ndx ]. ded ) { 439 t = DB_DELETED ; 440 r ; 444 i((* db = db -> dby [ ndx ]. dbp = NULL ) 445 t = ENOENT ; 456 i((* db )-> mpf ! NULL && (*db)->mpf-> m != NULL) 457 (* db )-> mpf -> m -> fe_wrn = 1; 459 r : `MUTEX_UNLOCK ( dbv , db -> mtx_dbg ); 460 ( t ); 461 } } 471 $__dbg_id_to_ame ( db , id , have_lock , am ) 472 DB_LOG * db ; 473 t32_t id ; 474 have_lock ; 475 FNAME ** am ; 477 DB_ENV * dbv ; 478 FNAME * p ; 479 LOG * ; 480 t ; 482 dbv = db ->dbenv; 483 = db -> gfo . imy ; 485 t = -1; 487 i(! have_lock ) 488 `MUTEX_LOCK ( dbv , -> mtx_fi ); 489 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 490 i( p -> id == id) { 491 * am = p ; 492 t = 0; 495 i(! have_lock ) 496 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 498 ( t ); 499 } } 508 $__dbg_fid_to_ame ( db , fid , have_lock , am ) 509 DB_LOG * db ; 510 u_t8_t * fid ; 511 have_lock ; 512 FNAME ** am ; 514 DB_ENV * dbv ; 515 FNAME * p ; 516 LOG * ; 517 t ; 519 dbv = db ->dbenv; 520 = db -> gfo . imy ; 522 t = -1; 524 i(! have_lock ) 525 `MUTEX_LOCK ( dbv , -> mtx_fi ); 526 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 527 i( `memcmp ( p -> ufid , fid , DB_FILE_ID_LEN ) == 0) { 528 * am = p ; 529 t = 0; 532 i(! have_lock ) 533 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 535 ( t ); 536 } } 548 $__dbg_g_me ( dbv , fid , m ) 549 DB_ENV * dbv ; 550 u_t8_t * fid ; 551 ** m ; 553 DB_LOG * db ; 554 FNAME * p ; 556 db = dbv -> lg_hd ; 558 i( db ! NULL && `__dbg_fid_to_ame (db, fid , 0, & p ) == 0) { 559 * m = `R_ADDR (& db -> gfo , p -> me_off ); 564 } } 575 $__dbg_do_ݒ ( dbv , 576 txn , , uid , me , y , ndx , ma_pgno , fo , id , code ) 577 DB_ENV * dbv ; 578 DB_TXN * txn ; 579 DB_LOG * ; 580 u_t8_t * uid ; 581 * me ; 582 DBTYPE y ; 583 t32_t ndx ; 584 db_pgno_t ma_pgno ; 585 * fo ; 586 u_t32_t id , code ; 588 DB * dbp ; 589 u_t32_t c , t_ ; 590 t ; 591 * dme , * ame ; 593 c = TXN_EXPECTED ; 594 ame = me ; 595 dme = NULL ; 596 i(( t = `__db__ (& dbp , -> dbv , 0)) != 0) 597 ( t ); 613 `F_SET ( dbp , DB_AM_RECOVER ); 614 i( ma_pgno ! PGNO_BASE_MD ) { 615 `memy ( dbp -> feid , uid , DB_FILE_ID_LEN ); 616 dbp -> ma_pgno = meta_pgno; 618 i( code = DBREG_PREOPEN ) { 619 dbp -> ty = y ; 620 i(( t = `__dbg_tup ( dbp , me , id )) != 0) 621 r ; 622 `MAKE_INMEM ( dbp ); 623 sk_ݒ ; 626 i( code = DBREG_REOPEN ) { 627 `MAKE_INMEM ( dbp ); 628 ame = NULL ; 629 dme = me ; 632 i(( t = `__db_ݒ ( dbp , txn , ame , dme , y , 633 DB_DURABLE_UNKNOWN | DB_ODDFILESIZE , 634 `__db_omode ( OWNER_RW ), ma_pgno )) == 0) { 635 sk_ݒ : 640 i(( ma_pgno ! PGNO_BASE_MD && 641 `__dbg_check_ma ( dbv , uid , me ) != 0) || 642 `memcmp ( uid , dbp -> feid , DB_FILE_ID_LEN ) != 0) 643 c = TXN_UNEXPECTED ; 645 c = TXN_EXPECTED ; 648 i(( t = `__dbg_assign_id ( dbp , ndx )) != 0) 649 r ; 657 i( id ! TXN_INVALID ) 658 t = `__db_txi_upde ( dbv , 659 fo , id , c , NULL , & t_ , 1); 661 r : i( c = TXN_UNEXPECTED ) 662 n_right ; 663 ( t ); 664 } i( t = ENOENT ) { 666 i( id ! TXN_INVALID ) 667 t = `__db_txi_upde ( dbv , fo , 668 id , TXN_UNEXPECTED , NULL , & t_ , 1); 670 n_right : 671 () `__db_o ( dbp , NULL , DB_NOSYNC ); 673 () `__dbg_add_dby ( dbv , , NULL , ndx ); 674 ( t ); 675 } } 678 $__dbg_check_ma ( dbv , uid , me ) 679 DB_ENV * dbv ; 680 u_t8_t * uid ; 681 * me ; 683 DB * dbp ; 684 t ; 686 t = 0; 687 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 688 ( t ); 689 `F_SET ( dbp , DB_AM_RECOVER ); 690 t = `__db_ݒ ( dbp , NULL , 691 me , NULL , DB_BTREE , 0, `__db_omode ( OWNER_RW ), PGNO_BASE_MD ); 693 i( t =0 && `memcmp ( uid , dbp -> feid , DB_FILE_ID_LEN ) != 0) 694 t = EINVAL ; 696 () `__db_o ( dbp , NULL , 0); 697 ( t ); 698 } } 719 $__dbg_zy_id ( dbp ) 720 DB * dbp ; 722 DB_ENV * dbv ; 723 DB_LOG * db ; 724 DB_TXN * txn ; 725 FNAME * p ; 726 LOG * ; 727 t32_t id ; 728 t ; 730 dbv = dbp ->dbenv; 732 `DB_ASSERT ( dbv , `IS_REP_MASTER (dbenv)); 734 dbv = dbp ->dbenv; 735 db = dbv -> lg_hd ; 736 = db -> gfo . imy ; 737 p = dbp -> log_fame ; 740 `MUTEX_LOCK ( dbv , -> mtx_fi ); 741 i( p -> id ! DB_LOGFILEID_INVALID ) { 742 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 745 id = DB_LOGFILEID_INVALID ; 751 i( p -> d_id ! DB_LOGFILEID_INVALID && 752 ( t = `__dbg_voke_id ( dbp , 1, DB_LOGFILEID_INVALID )) != 0) 753 r ; 754 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 755 r ; 757 i(( t = `__dbg_g_id ( dbp , txn , & id )) != 0) { 758 () `__txn_abt ( txn ); 759 r ; 762 i(( t = `__txn_comm ( txn , DB_TXN_NOSYNC )) != 0) 763 r ; 775 p -> id = id; 776 r : 777 i( t !0 && id ! DB_LOGFILEID_INVALID ) 778 () `__dbg_voke_id ( dbp , 1, id ); 779 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 780 ( t ); 781 } } @../env/env_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 34 s__loc_yout { 35 SH_TAILQ_HEAD ( __addrq maddrq ; 36 SH_TAILQ_HEAD ( __sizeq msizeq ; 38 #ifde HAVE_STATISTICS 39 u_t32_t msucss ; 40 u_t32_t mu ; 41 u_t32_t md ; 42 u_t32_t mlge ; 43 #ifde __ALLOC_DISPLAY_ALLOCATION_SIZES 44 u_t32_t mpow2_size [32]; 47 utmax_t munud ; 48 } tALLOC_LAYOUT ; 50 s__loc_emt { 51 SH_TAILQ_ENTRY maddrq ; 52 SH_TAILQ_ENTRY msizeq ; 58 size_t mn ; 65 utmax_t mun ; 66 } tALLOC_ELEMENT ; 75 $__v_loc_ ( f , size ) 76 REGINFO * f ; 77 size_t size ; 79 DB_ENV * dbv ; 80 ALLOC_ELEMENT * p ; 81 ALLOC_LAYOUT * hd ; 83 dbv = f ->dbenv; 86 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) 92 hd = f -> addr ; 93 `SH_TAILQ_INIT (& hd -> addrq ); 94 `SH_TAILQ_INIT (& hd -> sizeq ); 95 `STAT (( hd -> sucss = hd-> u = hd-> d = 0)); 96 `COMPQUIET ( hd -> unud , 0); 101 p = ( ALLOC_ELEMENT *)(( u_t8_t *) hd + ( ALLOC_LAYOUT )); 102 p -> n = size - ( ALLOC_LAYOUT ); 103 p -> un = 0; 105 `SH_TAILQ_INSERT_HEAD (& hd -> addrq , p ,ddrq, __loc_emt ); 106 `SH_TAILQ_INSERT_HEAD (& hd -> sizeq , p , sizeq, __loc_emt ); 107 } } 113 #ifde DIAGNOSTIC 114 #DB_ALLOC_SIZE ( n ) \ 115 ( size_t ) `DB_ALIGN (( n + ( ALLOC_ELEMENT + 1, ( utmax_t )) ) 117 #DB_ALLOC_SIZE ( n ) \ 118 ( size_t ) `DB_ALIGN (( n + ( ALLOC_ELEMENT ), ( utmax_t )) ) 127 size_t 128 $__v_loc_ovhd () 130 (( ALLOC_ELEMENT )); 131 } } 139 size_t 140 $__v_loc_size ( n ) 141 size_t n ; 143 ( `DB_ALLOC_SIZE ( n )); 144 } } 153 $__v_loc ( f , n , ) 154 REGINFO * f ; 155 size_t n ; 156 * ; 158 ALLOC_ELEMENT * p , * ag , * p_tmp ; 159 ALLOC_LAYOUT * hd ; 160 DB_ENV * dbv ; 161 size_t tٮ_n ; 162 u_t8_t * p ; 163 t ; 164 #ifde HAVE_STATISTICS 165 u_lg _ch ; 168 dbv = f ->dbenv; 170 *(**) = NULL ; 180 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 182 i( f -> lod >f-> max_loc ) 183 ( ENOMEM ); 186 n +( size_t ); 188 #ifde DIAGNOSTIC 190 ++ n ; 193 i(( t = `__os_mloc ( dbv , n , & p )) != 0) 194 ( t ); 195 f -> lod + n ; 197 *( size_t *) p = n ; 198 #ifde DIAGNOSTIC 199 p [ n - 1] = GUARD_BYTE ; 201 *(**) = p + ( size_t ); 205 hd = f -> addr ; 207 tٮ_n = `DB_ALLOC_SIZE ( n ); 208 #ifde __ALLOC_DISPLAY_ALLOCATION_SIZES 209 `STAT ((++ hd -> pow2_size [ `__db_log2 ( n ) - 1])); 216 #SHALLOC_FRAGMENT (( ALLOC_ELEMENT + 64) ) 222 p = NULL ; 223 `STAT (( _ch = 0)); 224 `SH_TAILQ_FOREACH ( p_tmp , & hd -> sizeq , sizeq, __loc_emt ) { 225 `STAT ((++ _ch )); 226 i( p_tmp -> n < tٮ_n ) 228 p = p_tmp ; 234 i( p -> n - tٮ_n < SHALLOC_FRAGMENT ) 237 #ifde HAVE_STATISTICS 238 i( hd -> lge < _ch ) 239 hd -> lge = _ch ; 245 i( p = NULL ) { 246 `STAT ((++ hd -> u )); 247 ( ENOMEM ); 249 `STAT ((++ hd -> sucss )); 252 `SH_TAILQ_REMOVE (& hd -> sizeq , p , sizeq, __loc_emt ); 254 i( p -> n - tٮ_n > SHALLOC_FRAGMENT ) { 255 ag = ( ALLOC_ELEMENT *)(( u_t8_t *) p + tٮ_n ); 256 ag -> n = p ->- tٮ_n ; 257 ag -> un = 0; 259 p -> n = tٮ_n ; 262 `SH_TAILQ_INSERT_AFTER ( 263 & hd -> addrq , p , ag ,ddrq, __loc_emt ); 269 `SH_TAILQ_FOREACH ( p_tmp , & hd -> sizeq , sizeq, __loc_emt ) 270 i( p_tmp -> n < ag ->len) 272 i( p_tmp = NULL ) 273 `SH_TAILQ_INSERT_TAIL (& hd -> sizeq , ag , sizeq); 275 `SH_TAILQ_INSERT_BEFORE (& hd -> sizeq , 276 p_tmp , ag , sizeq , __loc_emt ); 279 p = ( u_t8_t *) p + ( ALLOC_ELEMENT ); 280 p -> un = n ; 281 #ifde DIAGNOSTIC 282 p [ n ] = GUARD_BYTE ; 284 *(**) = p ; 287 } } 296 $__v_loc_ ( f , r ) 297 REGINFO * f ; 298 * r ; 300 ALLOC_ELEMENT * p , * p_tmp ; 301 ALLOC_LAYOUT * hd ; 302 DB_ENV * dbv ; 303 size_t n ; 304 u_t8_t * p ; 306 dbv = f ->dbenv; 309 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 311 p = ( u_t8_t *)(( size_t *) r - 1); 312 n = *( size_t *) p ; 314 f -> lod - n ; 316 #ifde DIAGNOSTIC 318 `DB_ASSERT ( dbv , p [ n - 1] = GUARD_BYTE ); 321 `memt ( p , CLEAR_BYTE , n ); 323 `__os_ ( dbv , p ); 327 hd = f -> addr ; 328 `STAT ((++ hd -> d )); 330 p = r ; 331 p = ( ALLOC_ELEMENT *)( p - (ALLOC_ELEMENT)); 333 #ifde DIAGNOSTIC 335 `DB_ASSERT ( dbv , p [ p -> un ] = GUARD_BYTE ); 338 `memt ( p , CLEAR_BYTE , p -> n - ( ALLOC_ELEMENT )); 342 p -> un = 0; 348 i(( p_tmp = 349 `SH_TAILQ_PREV (& hd -> addrq , p ,ddrq, __loc_emt )! NULL && 350 p_tmp -> un == 0 && 351 ( u_t8_t *) p_tmp +_tmp-> n =(u_t8_*) p ) { 357 `SH_TAILQ_REMOVE (& hd -> addrq , p ,ddrq, __loc_emt ); 358 `SH_TAILQ_REMOVE (& hd -> sizeq , p_tmp , sizeq, __loc_emt ); 360 p_tmp -> n + p ->len; 361 p = p_tmp ; 363 i(( p_tmp = `SH_TAILQ_NEXT ( p , addrq , __loc_emt )! NULL && 364 p_tmp -> un == 0 && 365 ( u_t8_t *) p +-> n =(u_t8_*) p_tmp ) { 371 `SH_TAILQ_REMOVE (& hd -> addrq , p_tmp ,ddrq, __loc_emt ); 372 `SH_TAILQ_REMOVE (& hd -> sizeq , p_tmp , sizeq, __loc_emt ); 374 p -> n + p_tmp ->len; 378 `SH_TAILQ_FOREACH ( p_tmp , & hd -> sizeq , sizeq, __loc_emt ) 379 i( p -> n > p_tmp ->len) 381 i( p_tmp = NULL ) 382 `SH_TAILQ_INSERT_TAIL (& hd -> sizeq , p , sizeq); 384 `SH_TAILQ_INSERT_BEFORE (& hd -> sizeq , 385 p_tmp , p , sizeq , __loc_emt ); 386 } } 388 #ifde HAVE_STATISTICS 396 $__v_loc_t ( f , ags ) 397 REGINFO * f ; 398 u_t32_t ags ; 400 #ifde __ALLOC_DISPLAY_ALLOCATION_LISTS 401 ALLOC_ELEMENT * p ; 403 ALLOC_LAYOUT * hd ; 404 DB_ENV * dbv ; 405 #ifde __ALLOC_DISPLAY_ALLOCATION_SIZES 406 DB_MSGBUF mb ; 407 i ; 410 dbv = f ->dbenv; 411 hd = f -> addr ; 413 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) 416 `__db_msg ( dbv , 418 ( u_lg ) hd -> sucss , (u_lg)hd-> u , (u_lg)hd-> d , 419 ( u_lg ) hd -> lge ); 421 i(! `LF_ISSET ( DB_STAT_ALL )) 424 #ifde __ALLOC_DISPLAY_ALLOCATION_SIZES 429 `DB_MSGBUF_INIT (& mb ); 430 i = 0; i < 32; ++i) 431 `__db_msgadd ( dbv , & mb , "%s%2d/%lu", 432 i == 0 ? "Allocations byower-of-two sizes: " : ", ", 433 i + 1, ( u_lg ) hd -> pow2_size [i]); 434 `DB_MSGBUF_FLUSH ( dbv , & mb ); 437 #ifde __ALLOC_DISPLAY_ALLOCATION_LISTS 442 `__db_msg ( dbv , 444 `SH_TAILQ_FOREACH ( p , & hd -> addrq ,ddrq, __loc_emt ) 445 `__db_msg ( dbv , "\t%#lx {%lu, %lu}", 446 `P_TO_ULONG ( p ), ( u_lg -> n , (u_lg-> un ); 448 `__db_msg ( dbv , "Allocation freeist by size: {chunkength}"); 449 `SH_TAILQ_FOREACH ( p , & hd -> sizeq , sizeq, __loc_emt ) 450 `__db_msg ( dbv , "\t%#lx {%lu}", 451 `P_TO_ULONG ( p ), ( u_lg -> n ); 454 } } @../env/env_config.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/log.h " 14 ~"dbc/mp.h " 15 ~"dbc/txn.h " 17 __cfig_r __P (( DB_ENV *, *, )); 26 $__v_ad_db_cfig ( dbv ) 27 DB_ENV * dbv ; 29 FILE * ; 30 lc , t ; 31 * p , buf [256]; 34 p = NULL ; 35 i(( t = 36 `__db_ame ( dbv , DB_APP_NONE , "DB_CONFIG", 0, NULL , & p )) != 0) 37 ( t ); 38 i( p = NULL ) 39 = NULL ; 41 = `fݒ ( p , "r"); 42 `__os_ ( dbv , p ); 45 i( = NULL ) 48 lc = 1; `fgs ( buf , (buf), ! NULL ; ++lc) { 49 i(( p = `rchr ( buf , '\n')! NULL ) 50 * p = '\0'; 51 i( ` ( buf ) + 1 == (buf)) { 52 `__db_rx ( dbv , "DB_CONFIG:ineooong"); 53 t = EINVAL ; 56 p = buf ; *!'\0' || `isa (()*p); ++p) 58 i( buf [0] == '\0' || buf[0] == '#') 61 i(( t = `__cfig_r ( dbv , buf , lc )) != 0) 64 () `fo ( ); 66 ( t ); 67 } } 69 #unde CONFIG_GET_INT 70 #CONFIG_GET_INT ( s , vp ) do { \ 71 __t ; \ 72 i(( __t = \ 73 `__db_glg ( dbv , NULL , s , 0, INT_MAX , vp )) != 0) \ 74 ( __t ); \ 75 } 0) ) 76 #unde CONFIG_GET_LONG 77 #CONFIG_GET_LONG ( s , vp ) do { \ 78 __t ; \ 79 i(( __t = \ 80 `__db_glg ( dbv , NULL , s , 0, LONG_MAX , vp )) != 0) \ 81 ( __t ); \ 82 } 0) ) 83 #unde CONFIG_INT 84 #CONFIG_INT ( s , f ) do { \ 85 i( `rcmp ( s , gv [0]) == 0) { \ 86 __v ; \ 87 i( nf != 2) \ 88 fm ; \ 89 `CONFIG_GET_INT ( gv [1], & __v ); \ 90 ( `f ( dbv , () __v )); \ 92 } 0) ) 93 #unde CONFIG_GET_UINT32 94 #CONFIG_GET_UINT32 ( s , vp ) do { \ 95 i( `__db_gulg ( dbv , NULL , s , 0, UINT32_MAX , vp ) != 0) \ 96 ( EINVAL ); \ 97 } 0) ) 98 #unde CONFIG_UINT32 99 #CONFIG_UINT32 ( s , f ) do { \ 100 i( `rcmp ( s , gv [0]) == 0) { \ 101 u_lg __v ; \ 102 i( nf != 2) \ 103 fm ; \ 104 `CONFIG_GET_UINT32 ( gv [1], & __v ); \ 105 ( `f ( dbv , ( u_t32_t ) __v )); \ 107 } 0) ) 109 #unde CONFIG_SLOTS 110 #CONFIG_SLOTS 10 ) 117 $__cfig_r ( dbv , s , lc ) 118 DB_ENV * dbv ; 119 * s ; 120 lc ; 122 u_lg uv1 , uv2 ; 123 u_t32_t ags ; 124 lv1 , lv2 ; 125 nf ; 126 * gv [ CONFIG_SLOTS ]; 128 i(( nf = `__cfig_l ( s , gv )) < 2) { 129 fm : `__db_rx ( dbv , 130 "l%d: %s: incܻame-vu", lc , gv [0]); 131 ( EINVAL ); 134 `CONFIG_UINT32 ("mux_t_ign", __mux_t_ign ); 135 `CONFIG_UINT32 ("mux_t_emt", __mux_t_emt ); 136 `CONFIG_UINT32 ("mux_t_max", __mux_t_max ); 137 `CONFIG_UINT32 ("mux_t_s_s", __mux_t_s_s ); 139 i( `rcmp ( gv [0], "rep_set_config") == 0) { 140 i( nf != 2) 141 fm ; 142 i( `rcmp ( gv [1], "rep_bulk") == 0) 143 ( `__p_t_cfig ( dbv , 144 DB_REP_CONF_BULK , 1)); 145 i( `rcmp ( gv [1], "rep_delayclient") == 0) 146 ( `__p_t_cfig ( dbv , 147 DB_REP_CONF_DELAYCLIENT , 1)); 148 i( `rcmp ( gv [1], "rep_noautoinit") == 0) 149 ( `__p_t_cfig ( dbv , 150 DB_REP_CONF_NOAUTOINIT , 1)); 151 i( `rcmp ( gv [1], "rep_nowait") == 0) 152 ( `__p_t_cfig ( dbv , DB_REP_CONF_NOWAIT , 1)); 153 fm ; 156 i( `rcmp ( gv [0], "set_cachesize") == 0) { 157 i( nf != 4) 158 fm ; 159 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 160 `CONFIG_GET_UINT32 ( gv [2], & uv2 ); 161 `CONFIG_GET_INT ( gv [3], & lv1 ); 162 ( `__memp_t_chesize ( 163 dbv , ( u_t32_t ) uv1 , (u_t32_t) uv2 , () lv1 )); 166 i( `rcmp ( gv [0], "set_data_dir") == 0 || 167 `rcmp ( gv [0], "db_data_dir") == 0) { 168 i( nf != 2) 169 fm ; 170 ( `__v_t_da_d ( dbv , gv [1])); 173 i( `rcmp ( gv [0], "set_intermediate_dir") == 0) { 174 i( nf != 2) 175 fm ; 176 `CONFIG_GET_INT ( gv [1], & lv1 ); 177 ( `__v_t_rmed_d ( dbv , () lv1 , 0)); 180 i( `rcmp ( gv [0], "set_flags") == 0) { 181 i( nf != 2) 182 fm ; 183 i( `rcmp ( gv [1], "db_auto_commit") == 0) 184 ( `__v_t_ags ( dbv , DB_AUTO_COMMIT , 1)); 185 i( `rcmp ( gv [1], "db_cdb_alldb") == 0) 186 ( `__v_t_ags ( dbv , DB_CDB_ALLDB , 1)); 187 i( `rcmp ( gv [1], "db_direct_db") == 0) 188 ( `__v_t_ags ( dbv , DB_DIRECT_DB , 1)); 189 i( `rcmp ( gv [1], "db_direct_log") == 0) 190 ( `__v_t_ags ( dbv , DB_DIRECT_LOG , 1)); 191 i( `rcmp ( gv [1], "db_dsync_db") == 0) 192 ( `__v_t_ags ( dbv , DB_DSYNC_DB , 1)); 193 i( `rcmp ( gv [1], "db_dsync_log") == 0) 194 ( `__v_t_ags ( dbv , DB_DSYNC_LOG , 1)); 195 i( `rcmp ( gv [1], "db_log_autoremove") == 0) 196 ( `__v_t_ags ( dbv , DB_LOG_AUTOREMOVE , 1)); 197 i( `rcmp ( gv [1], "db_log_inmemory") == 0) 198 ( `__v_t_ags ( dbv , DB_LOG_INMEMORY , 1)); 199 i( `rcmp ( gv [1], "db_multiversion") == 0) 200 ( `__v_t_ags ( dbv , DB_MULTIVERSION , 1)); 201 i( `rcmp ( gv [1], "db_nolocking") == 0) 202 ( `__v_t_ags ( dbv , DB_NOLOCKING , 1)); 203 i( `rcmp ( gv [1], "db_nommap") == 0) 204 ( `__v_t_ags ( dbv , DB_NOMMAP , 1)); 205 i( `rcmp ( gv [1], "db_nopanic") == 0) 206 ( `__v_t_ags ( dbv , DB_NOPANIC , 1)); 207 i( `rcmp ( gv [1], "db_overwrite") == 0) 208 ( `__v_t_ags ( dbv , DB_OVERWRITE , 1)); 209 i( `rcmp ( gv [1], "db_region_init") == 0) 210 ( `__v_t_ags ( dbv , DB_REGION_INIT , 1)); 211 i( `rcmp ( gv [1], "db_txn_nosync") == 0) 212 ( `__v_t_ags ( dbv , DB_TXN_NOSYNC , 1)); 213 i( `rcmp ( gv [1], "db_txn_nowait") == 0) 214 ( `__v_t_ags ( dbv , DB_TXN_NOWAIT , 1)); 215 i( `rcmp ( gv [1], "db_txn_snapshot") == 0) 216 ( `__v_t_ags ( dbv , DB_TXN_SNAPSHOT , 1)); 217 i( `rcmp ( gv [1], "db_txn_write_nosync") == 0) 219 `__v_t_ags ( dbv , DB_TXN_WRITE_NOSYNC , 1)); 220 i( `rcmp ( gv [1], "db_yieldcpu") == 0) 221 ( `__v_t_ags ( dbv , DB_YIELDCPU , 1)); 222 fm ; 225 `CONFIG_UINT32 ("t_lg_bsize", __log_t_lg_bsize ); 226 `CONFIG_INT ("t_lg_femode", __log_t_lg_femode ); 227 `CONFIG_UINT32 ("t_lg_max", __log_t_lg_max ); 228 `CONFIG_UINT32 ("t_lg_gimax", __log_t_lg_gimax ); 230 i( `rcmp ( gv [0], "set_lg_dir") == 0 || 231 `rcmp ( gv [0], "db_log_dir") == 0) { 232 i( nf != 2) 233 fm ; 234 ( `__log_t_lg_d ( dbv , gv [1])); 237 i( `rcmp ( gv [0], "set_lk_detect") == 0) { 238 i( nf != 2) 239 fm ; 240 i( `rcmp ( gv [1], "db_lock_default") == 0) 241 ags = DB_LOCK_DEFAULT ; 242 i( `rcmp ( gv [1], "db_lock_expire") == 0) 243 ags = DB_LOCK_EXPIRE ; 244 i( `rcmp ( gv [1], "db_lock_maxlocks") == 0) 245 ags = DB_LOCK_MAXLOCKS ; 246 i( `rcmp ( gv [1], "db_lock_maxwrite") == 0) 247 ags = DB_LOCK_MAXWRITE ; 248 i( `rcmp ( gv [1], "db_lock_minlocks") == 0) 249 ags = DB_LOCK_MINLOCKS ; 250 i( `rcmp ( gv [1], "db_lock_minwrite") == 0) 251 ags = DB_LOCK_MINWRITE ; 252 i( `rcmp ( gv [1], "db_lock_oldest") == 0) 253 ags = DB_LOCK_OLDEST ; 254 i( `rcmp ( gv [1], "db_lock_random") == 0) 255 ags = DB_LOCK_RANDOM ; 256 i( `rcmp ( gv [1], "db_lock_youngest") == 0) 257 ags = DB_LOCK_YOUNGEST ; 259 fm ; 260 ( `__lock_t_lk_de ( dbv , ags )); 263 `CONFIG_UINT32 ("t_lk_max_locks", __lock_t_lk_max_locks ); 264 `CONFIG_UINT32 ("t_lk_max_locks", __lock_t_lk_max_locks ); 265 `CONFIG_UINT32 ("t_lk_max_objes", __lock_t_lk_max_objes ); 267 i( `rcmp ( gv [0], "set_lock_timeout") == 0) { 268 i( nf != 2) 269 fm ; 270 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 271 ( `__lock_t_v_timeout ( 272 dbv , ( u_t32_t ) uv1 , DB_SET_LOCK_TIMEOUT )); 275 `CONFIG_INT ("t_mp_max_ݒfd", __memp_t_mp_max_ݒfd ); 277 i( `rcmp ( gv [0], "set_mp_max_write") == 0) { 278 i( nf != 3) 279 fm ; 280 `CONFIG_GET_INT ( gv [1], & lv1 ); 281 `CONFIG_GET_INT ( gv [2], & lv2 ); 282 ( `__memp_t_mp_max_wre ( 283 dbv , () lv1 , ( db_timeout_t ) lv2 )); 286 `CONFIG_UINT32 ("t_mp_mmsize", __memp_t_mp_mmsize ); 288 i( `rcmp ( gv [0], "set_region_init") == 0) { 289 i( nf != 2) 290 fm ; 291 `CONFIG_GET_INT ( gv [1], & lv1 ); 292 i( lv1 != 0 &&v1 != 1) 293 fm ; 294 ( `__v_t_ags ( 295 dbv , DB_REGION_INIT , lv1 == 0 ? 0 : 1)); 298 i( `rcmp ( gv [0], "set_shm_key") == 0) { 299 i( nf != 2) 300 fm ; 301 `CONFIG_GET_LONG ( gv [1], & lv1 ); 302 ( `__v_t_shm_key ( dbv , lv1 )); 309 `CONFIG_UINT32 ("t_s_s", __mux_t_s_s ); 311 i( `rcmp ( gv [0], "set_tmp_dir") == 0 || 312 `rcmp ( gv [0], "db_tmp_dir") == 0) { 313 i( nf != 2) 314 fm ; 315 ( `__v_t_tmp_d ( dbv , gv [1])); 318 `CONFIG_UINT32 ("t_tx_max", __txn_t_tx_max ); 320 i( `rcmp ( gv [0], "set_txn_timeout") == 0) { 321 i( nf != 2) 322 fm ; 323 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 324 ( `__lock_t_v_timeout ( 325 dbv , ( u_t32_t ) uv1 , DB_SET_TXN_TIMEOUT )); 328 i( `rcmp ( gv [0], "set_verbose") == 0) { 329 i( nf != 2) 330 fm ; 331 i( `rcmp ( gv [1], "db_verb_deadlock") == 0) 332 ags = DB_VERB_DEADLOCK ; 333 i( `rcmp ( gv [1], "db_verb_fileops") == 0) 334 ags = DB_VERB_FILEOPS ; 335 i( `rcmp ( gv [1], "db_verb_fileops_all") == 0) 336 ags = DB_VERB_FILEOPS_ALL ; 337 i( `rcmp ( gv [1], "db_verb_recovery") == 0) 338 ags = DB_VERB_RECOVERY ; 339 i( `rcmp ( gv [1], "db_verb_register") == 0) 340 ags = DB_VERB_REGISTER ; 341 i( `rcmp ( gv [1], "db_verb_replication") == 0) 342 ags = DB_VERB_REPLICATION ; 343 i( `rcmp ( gv [1], "db_verb_waitsfor") == 0) 344 ags = DB_VERB_WAITSFOR ; 346 fm ; 347 ( `__v_t_vbo ( dbv , ags , 1)); 350 `__db_rx ( dbv , "uecognizedame-vu: %s", s ); 351 ( EINVAL ); 352 } } 362 $__cfig_l ( put , gv ) 363 * put , * gv [ CONFIG_SLOTS ]; 365 cou ; 366 ** ; 368 cou = 0, = gv ; (* = `rp (& put , " \t\n")! NULL ;) 369 i(** != '\0') { 370 ++ cou ; 371 i(++ =& gv [ CONFIG_SLOTS - 1]) { 372 * = NULL ; 376 ( cou ); 377 } } @../env/env_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ide HAVE_SIMPLE_THREAD_TYPE 13 ~"dbc/db_ge.h " 14 ~"dbc/hash.h " 16 ~"dbc/lock.h " 17 ~"dbc/txn.h " 19 __v__i __P (( DB_ENV *)); 28 $__v_chk_ ( dbv , ags ) 29 DB_ENV * dbv ; 30 u_t32_t ags ; 32 DB_THREAD_INFO * ; 33 t ; 35 `PANIC_CHECK ( dbv ); 36 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->failchk"); 42 i(! `ALIVE_ON ( dbv )) { 43 `__db_rx ( dbv , 45 ( EINVAL ); 48 i( ags != 0) 49 ( `__db_ ( dbv , "DB_ENV->failchk", 0)); 51 `ENV_ENTER ( dbv , ); 57 i(( t = `__v__i ( dbv )) != 0) 58 r ; 60 i( `LOCKING_ON ( dbv && ( t = `__lock_chk (dbenv)) != 0) 61 r ; 63 i( `TXN_ON ( dbv && ( t = `__txn_chk (dbenv)) != 0) 64 r ; 66 #ifde HAVE_MUTEX_SUPPORT 67 t = `__mut_chk ( dbv ); 70 r : `ENV_LEAVE ( dbv , ); 71 ( t ); 72 } } 81 $__v_thad_ ( dbv , durg_ti ) 82 DB_ENV * dbv ; 83 durg_ti ; 85 DB_HASHTAB * hb ; 86 REGINFO * f ; 87 REGENV * nv ; 88 THREAD_INFO * thad ; 89 t ; 91 f = dbv -> gfo ; 92 nv = f -> imy ; 93 i( nv -> thad_off = INVALID_ROFF ) { 94 i( dbv -> thr_nbuck == 0) { 95 dbv -> thr_hashb = NULL ; 96 i( `ALIVE_ON ( dbv )) { 97 `__db_rx ( dbv , 99 ( EINVAL ); 104 i(! durg_ti ) { 105 `__db_rx ( dbv , 107 ( EINVAL ); 110 i(( t = 111 `__v_loc ( f , ( THREAD_INFO ), & thad )) != 0) { 112 `__db_r ( dbv , t , 114 ( t ); 116 `memt ( thad , 0, (*thread)); 117 nv -> thad_off = `R_OFFSET ( f , thad ); 118 thad -> thr_nbuck = `__db_bsize ( dbv ->thr_nbucket); 119 i(( t = `__v_loc ( f , 120 thad -> thr_nbuck * ( DB_HASHTAB ), & hb )) != 0) 121 ( t ); 122 thad -> thr_hashoff = `R_OFFSET ( f , hb ); 123 `__db_hash ( hb , thad -> thr_nbuck ); 124 thad -> thr_max = dbv ->thr_max; 126 thad = `R_ADDR ( f , nv -> thad_off ); 127 hb = `R_ADDR ( f , thad -> thr_hashoff ); 130 dbv -> thr_hashb = hb ; 131 dbv -> thr_nbuck = thad ->thr_nbucket; 132 dbv -> thr_max = thad ->thr_max; 134 } } 141 $__v__i ( dbv ) 142 DB_ENV * dbv ; 144 DB_HASHTAB * hb ; 145 DB_THREAD_INFO * ; 146 REGENV * nv ; 147 REGINFO * f ; 148 THREAD_INFO * thad ; 149 u_t32_t i ; 151 i(( hb = dbv -> thr_hashb = NULL ) 152 ( EINVAL ); 154 f = dbv -> gfo ; 155 nv = f -> imy ; 156 thad = `R_ADDR ( f , nv -> thad_off ); 158 i = 0; i < dbv -> thr_nbuck ; i++) 159 `SH_TAILQ_FOREACH ( , & hb [ i ], dbth_lks , __db_thad_fo ) { 160 i( -> dbth_e = THREAD_SLOT_NOT_IN_USE || 161 ( -> dbth_e = THREAD_OUT && 162 thad -> thr_cou <had-> thr_max )) 164 i( dbv -> `is_ive ( 165 dbv , -> dbth_pid , ip-> dbth_tid , 0)) 167 i( -> dbth_e = THREAD_OUT ) { 168 -> dbth_e = THREAD_SLOT_NOT_IN_USE ; 171 ( `__db_ed ( dbv , 173 -> dbth_pid , ip-> dbth_tid )); 177 } } 179 s__db_thadid { 180 pid_t mpid ; 181 db_thadid_t mtid ; 189 $__v_t_e ( dbv , p , e ) 190 DB_ENV * dbv ; 191 DB_THREAD_INFO ** p ; 192 DB_THREAD_STATE e ; 194 __db_thadid id ; 195 DB_HASHTAB * hb ; 196 DB_THREAD_INFO * ; 197 REGENV * nv ; 198 REGINFO * f ; 199 THREAD_INFO * thad ; 200 u_t32_t dx ; 201 t ; 203 * p = NULL ; 204 hb = ( DB_HASHTAB *) dbv -> thr_hashb ; 206 dbv -> `thad_id (dbv, & id . pid , &id. tid ); 212 #ifde HAVE_SIMPLE_THREAD_TYPE 217 dx = ( u_t32_t )(( u_t ) id . pid ^ (u_t)id. tid ); 219 dx = `__ham_func5 ( NULL , & id . tid , (id.tid)); 221 dx % dbv -> thr_nbuck ; 222 `SH_TAILQ_FOREACH ( , & hb [ dx ], dbth_lks , __db_thad_fo ) { 223 #ifde HAVE_SIMPLE_THREAD_TYPE 224 i( id . pid = -> dbth_pid && id. tid =-> dbth_tid ) 227 i( `memcmp (& id . pid , & -> dbth_pid , (id.pid)) != 0) 229 i( `memcmp (& id . tid , & -> dbth_tid , (id.tid)) != 0) 235 #ifde DIAGNOSTIC 236 i( e = THREAD_DIAGNOSTIC ) { 237 * p = ; 242 t = 0; 243 i( = NULL ) { 244 f = dbv -> gfo ; 245 nv = f -> imy ; 246 thad = `R_ADDR ( f , nv -> thad_off ); 247 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 255 i( thad -> thr_cou >thad-> thr_max ) { 256 `SH_TAILQ_FOREACH ( 257 , & hb [ dx ], dbth_lks , __db_thad_fo ) 258 i( -> dbth_e = THREAD_SLOT_NOT_IN_USE || 259 ( -> dbth_e = THREAD_OUT && 260 `ALIVE_ON ( dbv && !dbv-> `is_ive (dbenv, 261 -> dbth_pid , ip-> dbth_tid , 0))) 264 i( ! NULL ) 265 ; 268 thad -> thr_cou ++; 269 i(( t = `__v_loc ( f , 270 ( DB_THREAD_INFO ), & )) == 0) { 271 `memt ( , 0, (*ip)); 278 `SH_TAILQ_INSERT_HEAD ( 279 & hb [ dx ], , dbth_lks , __db_thad_fo ); 280 : -> dbth_pid = id . pid ; 281 -> dbth_tid = id . tid ; 282 -> dbth_e = e ; 284 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 286 -> dbth_e = e ; 287 * p = ; 289 ( t ); 290 } } 300 $__v_thad_id_rg ( dbv , pid , tid , buf ) 301 DB_ENV * dbv ; 302 pid_t pid ; 303 db_thadid_t tid ; 304 * buf ; 306 #ifde HAVE_SIMPLE_THREAD_TYPE 307 #ifde UINT64_FMT 308 fmt [20]; 310 `tf ( fmt , (fmt), "%s/%s", UINT64_FMT , UINT64_FMT); 311 `tf ( buf , 312 DB_THREADID_STRLEN , fmt , ( u_t64_t ) pid , (u_t64_t)( u_t ) tid ); 314 `tf ( buf , DB_THREADID_STRLEN , "%lu/%lu", ( u_lg ) pid , (u_lg) tid ); 317 #ifde UINT64_FMT 318 fmt [20]; 320 `tf ( fmt , (fmt), "%s/TID", UINT64_FMT ); 321 `tf ( buf , DB_THREADID_STRLEN , fmt , ( u_t64_t ) pid ); 323 `tf ( buf , DB_THREADID_STRLEN , "%lu/TID", ( u_lg ) pid ); 326 `COMPQUIET ( dbv , NULL ); 327 `COMPQUIET (*( u_t8_t *)& tid , 0); 329 ( buf ); 330 } } @../env/env_file.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_fe_exnd ( dbv , fhp , size ) 21 DB_ENV * dbv ; 22 DB_FH * fhp ; 23 size_t size ; 25 db_pgno_t ges ; 26 size_t nw ; 27 u_t32_t tive ; 28 t ; 29 * buf ; 38 #unde FILE_EXTEND_IO_SIZE 39 #FILE_EXTEND_IO_SIZE (8 * 1024) ) 40 i(( t = `__os_oc ( dbv , FILE_EXTEND_IO_SIZE , 1, & buf )) != 0) 41 ( t ); 43 ges = ( db_pgno_t )(( size - FILE_EXTEND_IO_SIZE / MEGABYTE ); 44 tive = ( u_t32_t )(( size - FILE_EXTEND_IO_SIZE % MEGABYTE ); 45 i(( t = `__os_ek ( dbv , fhp , ges , MEGABYTE , tive )) != 0) 46 r ; 47 i(( t = `__os_wre ( dbv , fhp , buf , FILE_EXTEND_IO_SIZE , & nw )) != 0) 48 r ; 50 r : `__os_ ( dbv , buf ); 53 } } 62 $__db_fe_mui_wre ( dbv , th ) 63 DB_ENV * dbv ; 64 cڡ * th ; 66 DB_FH * fhp ; 67 u_t32_t mbys , bys ; 68 t ; 70 i(( t = `__os_ݒ ( dbv , th , 0, DB_OSO_REGION , 0, & fhp )) == 0 && 71 ( t = `__os_iofo ( dbv , th , fhp , & mbys , & bys , NULL )) == 0) { 78 i(( t = 79 `__db_fe_wre ( dbv , fhp , mbys , bys , 255)) != 0) 80 r ; 81 i(( t = 82 `__db_fe_wre ( dbv , fhp , mbys , bys , 0)) != 0) 83 r ; 84 i(( t = 85 `__db_fe_wre ( dbv , fhp , mbys , bys , 255)) != 0) 86 r ; 88 `__db_r ( dbv , t , "%s", th ); 90 r : i( fhp ! NULL ) 91 () `__os_ohd ( dbv , fhp ); 92 ( t ); 93 } } 103 $__db_fe_wre ( dbv , fhp , mbys , bys , n ) 104 DB_ENV * dbv ; 105 DB_FH * fhp ; 106 n ; 107 u_t32_t mbys , bys ; 109 size_t n , nw ; 110 i , t ; 111 * buf ; 113 #unde FILE_WRITE_IO_SIZE 114 #FILE_WRITE_IO_SIZE (64 * 1024) ) 115 i(( t = `__os_mloc ( dbv , FILE_WRITE_IO_SIZE , & buf )) != 0) 116 ( t ); 117 `memt ( buf , n , FILE_WRITE_IO_SIZE ); 119 i(( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 120 r ; 121 ; mbys > 0; --mbytes) 122 i = MEGABYTE / FILE_WRITE_IO_SIZE ; i > 0; --i) 123 i(( t = `__os_wre ( 124 dbv , fhp , buf , FILE_WRITE_IO_SIZE , & nw )) != 0) 125 r ; 126 ; bys > 0; by-( u_t32_t ) n ) { 127 n = bys < FILE_WRITE_IO_SIZE ? bytes : FILE_WRITE_IO_SIZE; 128 i(( t = `__os_wre ( dbv , fhp , buf , n , & nw )) != 0) 129 r ; 132 t = `__os_fsync ( dbv , fhp ); 134 r : `__os_ ( dbv , buf ); 135 ( t ); 136 } } @../env/env_globals.c 9 ~"db_cfig.h " 16 #DB_INITIALIZE_DB_GLOBALS 1 ) 18 ~"db_t.h " @../env/env_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/hmac.h " 14 ~"dbc/db_ge.h " 15 ~"dbc/db_am.h " 16 ~"dbc/lock.h " 17 ~"dbc/log.h " 18 ~"dbc/mp.h " 19 ~"dbc/txn.h " 21 #ifde HAVE_RPC 22 #ifde HAVE_SYSTEM_INCLUDE_FILES 23 ~<c/c.h > 25 ~"db_rv.h " 26 ~"dbc_auto/c__ext.h " 29 __v_r __P ((cڡ DB_ENV *, , const *, ...)); 30 __v_rx __P ((cڡ DB_ENV *, const *, ...)); 31 __v_g_da_ds __P (( DB_ENV *, const ***)); 32 __v_g_ags __P (( DB_ENV *, u_t32_t *)); 33 __v_g_home __P (( DB_ENV *, const **)); 34 __v_g_shm_key __P (( DB_ENV *, *)); 35 __v_g_thad_cou __P (( DB_ENV *, u_t32_t *)); 36 __v_g_tmp_d __P (( DB_ENV *, const **)); 37 __v_g_vbo __P (( DB_ENV *, u_t32_t , *)); 38 __v_ __P (( DB_ENV *)); 39 __v_m_ags __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 40 __v_t_p_dich 41 __P (( DB_ENV *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs ))); 42 __v_t_evt_nify 43 `__P (( DB_ENV *, (*)(DB_ENV *, u_t32_t , *))); 44 __v_t_edback `__P (( DB_ENV *, (*)(DB_ENV *, , ))); 45 __v_t_ilive `__P (( DB_ENV *, 46 (*)( DB_ENV *, pid_t , db_thadid_t , u_t32_t ))); 47 __v_t_thad_id `__P (( DB_ENV *, (*)(DB_ENV *, 48 pid_t *, db_thadid_t *))); 49 __v_t_thad_id_rg `__P (( DB_ENV *, 50 * (*)( DB_ENV *, pid_t , db_thadid_t , *))); 51 __v_t_thad_cou `__P (( DB_ENV *, u_t32_t )); 52 __v_t_c_rv 53 `__P (( DB_ENV *, *, cڡ *, , , u_t32_t )); 62 $db_v_ ( dbv , ags ) 63 DB_ENV ** dbv ; 64 u_t32_t ags ; 66 DB_ENV * dbv ; 67 t ; 79 i( ags !0 && ! `LF_ISSET ( DB_RPCCLIENT )) 80 ( EINVAL ); 81 i(( t = `__os_oc ( NULL , 1, (* dbv ), &dbenv)) != 0) 82 ( t ); 84 #ifde HAVE_RPC 85 i( `LF_ISSET ( DB_RPCCLIENT )) 86 `F_SET ( dbv , DB_ENV_RPCCLIENT ); 88 i(( t = `__v_ ( dbv )) != 0 || 89 ( t = `__lock_v_ ( dbv )) != 0 || 90 ( t = `__log_v_ ( dbv )) != 0 || 91 ( t = `__memp_v_ ( dbv )) != 0 || 92 #ifde HAVE_REPLICATION 93 ( t = `__p_v_ ( dbv )) != 0 || 95 ( t = `__txn_v_ ( dbv ))) 96 r ; 98 #ifde HAVE_RPC 103 i( `F_ISSET ( dbv , DB_ENV_RPCCLIENT )) { 104 `__db_dbv_ ( dbv ); 110 dbv -> ݒ = __db_v_ݒ_wp ; 111 dbv -> o = __db_v_o_wp ; 115 * dbv = dbv ; 118 r : `__db_v_deroy ( dbv ); 119 ( t ); 120 } } 129 $__db_v_deroy ( dbv ) 130 DB_ENV * dbv ; 132 `__lock_v_deroy ( dbv ); 133 `__log_v_deroy ( dbv ); 134 `__memp_v_deroy ( dbv ); 135 #ifde HAVE_REPLICATION 136 `__p_v_deroy ( dbv ); 138 `__txn_v_deroy ( dbv ); 140 `memt ( dbv , CLEAR_BYTE , ( DB_ENV )); 141 `__os_ ( NULL , dbv ); 142 } } 149 $__v_ ( dbv ) 150 DB_ENV * dbv ; 161 dbv -> cdsgroup_beg = __cdsgroup_beg ; 162 dbv -> o = __v_o_ ; 163 dbv -> dbmove = __v_dbmove_ ; 164 dbv -> dbme = __v_dbme_ ; 165 dbv -> r = __v_r ; 166 dbv -> rx = __v_rx ; 167 dbv -> chk = __v_chk_ ; 168 dbv -> feid_t = __v_feid_t_ ; 169 dbv -> g_chesize = __memp_g_chesize ; 170 dbv -> g_che_max = __memp_g_che_max ; 171 dbv -> g_da_ds = __v_g_da_ds ; 172 dbv -> g_y_ags = __v_g_y_ags ; 173 dbv -> g_rfe = __v_g_rfe ; 174 dbv -> g_fx = __v_g_fx ; 175 dbv -> g_ags = __v_g_ags ; 176 dbv -> g_home = __v_g_home ; 177 dbv -> g_lg_bsize = __log_g_lg_bsize ; 178 dbv -> g_lg_d = __log_g_lg_d ; 179 dbv -> g_lg_femode = __log_g_lg_femode ; 180 dbv -> g_lg_max = __log_g_lg_max ; 181 dbv -> g_lg_gimax = __log_g_lg_gimax ; 182 dbv -> g_lk_cis = __lock_g_lk_cis ; 183 dbv -> g_lk_de = __lock_g_lk_de ; 184 dbv -> g_lk_max_locks = __lock_g_lk_max_locks ; 185 dbv -> g_lk_max_locks = __lock_g_lk_max_locks ; 186 dbv -> g_lk_max_objes = __lock_g_lk_max_objes ; 187 dbv -> g_mp_max_ݒfd = __memp_g_mp_max_ݒfd ; 188 dbv -> g_mp_max_wre = __memp_g_mp_max_wre ; 189 dbv -> g_mp_mmsize = __memp_g_mp_mmsize ; 190 dbv -> g_msgfe = __v_g_msgfe ; 191 dbv -> g_ݒ_ags = __v_g_ݒ_ags ; 192 dbv -> g_shm_key = __v_g_shm_key ; 193 dbv -> g_thad_cou = __v_g_thad_cou ; 194 dbv -> g_timeout = __lock_g_v_timeout ; 195 dbv -> g_tmp_d = __v_g_tmp_d ; 196 dbv -> g_tx_max = __txn_g_tx_max ; 197 dbv -> g_tx_timeamp = __txn_g_tx_timeamp ; 198 dbv -> g_vbo = __v_g_vbo ; 199 dbv -> is_bigdn = __db_isbigdn ; 200 dbv -> lock_de = __lock_de_ ; 201 dbv -> lock_g = __lock_g_ ; 202 dbv -> lock_id = __lock_id_ ; 203 dbv -> lock_id_ = __lock_id__ ; 204 dbv -> lock_put = __lock_put_ ; 205 dbv -> lock_ = __lock__ ; 206 dbv -> lock__t = __lock__t_ ; 207 dbv -> lock_vec = __lock_vec_ ; 208 dbv -> log_chive = __log_chive_ ; 209 dbv -> log_curs = __log_curs_ ; 210 dbv -> log_fe = __log_fe_ ; 211 dbv -> log_ush = __log_ush_ ; 212 dbv -> log_tf = __log_tf_pi ; 213 dbv -> log_put = __log_put_ ; 214 dbv -> log_ = __log__ ; 215 dbv -> log__t = __log__t_ ; 216 dbv -> l_t = __v_l_t_ ; 217 dbv -> memp_f = __memp_f_ ; 218 dbv -> memp_gi = __memp_gi_ ; 219 dbv -> memp_ = __memp__ ; 220 dbv -> memp__t = __memp__t_ ; 221 dbv -> memp_sync = __memp_sync_ ; 222 dbv -> memp_ick = __memp_ick_ ; 223 dbv -> mux_loc = __mux_loc_ ; 224 dbv -> mux_ = __mux__ ; 225 dbv -> mux_g_ign = __mux_g_ign ; 226 dbv -> mux_g_emt = __mux_g_emt ; 227 dbv -> mux_g_max = __mux_g_max ; 228 dbv -> mux_g_s_s = __mux_g_s_s ; 229 dbv -> mux_lock = __mux_lock_ ; 230 dbv -> mux_t_ign = __mux_t_ign ; 231 dbv -> mux_t_emt = __mux_t_emt ; 232 dbv -> mux_t_max = __mux_t_max ; 233 dbv -> mux_t_s_s = __mux_t_s_s ; 234 dbv -> mux_ = __mux__ ; 235 dbv -> mux__t = __mux__t_ ; 236 dbv -> mux_uock = __mux_uock_ ; 237 dbv -> ݒ = __v_ݒ_ ; 238 dbv -> move = __v_move ; 239 dbv -> p_e = __p_e ; 240 dbv -> p_ush = __p_ush ; 241 dbv -> p_g_cfig = __p_g_cfig ; 242 dbv -> p_g_lim = __p_g_lim ; 243 dbv -> p_g_nses = __p_g_nses ; 244 dbv -> p_g_iܙy = __p_g_iܙy ; 245 dbv -> p_g_timeout = __p_g_timeout ; 246 dbv -> p_oss_mesge = __p_oss_mesge ; 247 dbv -> p_t_cfig = __p_t_cfig ; 248 dbv -> p_t_a = __p_t_a ; 249 dbv -> p_t_lim = __p_t_lim ; 250 dbv -> p_t_nses = __p_t_nses ; 251 dbv -> p_t_iܙy = __p_t_iܙy ; 252 dbv -> p_t_timeout = __p_t_timeout ; 253 dbv -> p_t_t = __p_t_t ; 254 dbv -> p_t = __p_t ; 255 dbv -> p_ = __p__ ; 256 dbv -> p__t = __p__t_ ; 257 dbv -> p_sync = __p_sync ; 258 dbv -> pmgr_add_me_se = __pmgr_add_me_se ; 259 dbv -> pmgr_g_ack_picy = __pmgr_g_ack_picy ; 260 dbv -> pmgr_t_ack_picy = __pmgr_t_ack_picy ; 261 dbv -> pmgr_t_lol_se = __pmgr_t_lol_se ; 262 dbv -> pmgr_se_li = __pmgr_se_li ; 263 dbv -> pmgr_t = __pmgr_t ; 264 dbv -> pmgr_ = __pmgr__ ; 265 dbv -> pmgr__t = __pmgr__t_ ; 266 dbv -> t_loc = __v_t_loc ; 267 dbv -> t_p_dich = __v_t_p_dich ; 268 dbv -> t_chesize = __memp_t_chesize ; 269 dbv -> t_che_max = __memp_t_che_max ; 270 dbv -> t_da_d = __v_t_da_d ; 271 dbv -> t_y = __v_t_y ; 272 dbv -> t_r = __v_t_r ; 273 dbv -> t_rfe = __v_t_rfe ; 274 dbv -> t_fx = __v_t_fx ; 275 dbv -> t_evt_nify = __v_t_evt_nify ; 276 dbv -> t_edback = __v_t_edback ; 277 dbv -> t_ags = __v_t_ags ; 278 dbv -> t_rmed_d = __v_t_rmed_d ; 279 dbv -> t_ilive = __v_t_ilive ; 280 dbv -> t_lg_bsize = __log_t_lg_bsize ; 281 dbv -> t_lg_d = __log_t_lg_d ; 282 dbv -> t_lg_femode = __log_t_lg_femode ; 283 dbv -> t_lg_max = __log_t_lg_max ; 284 dbv -> t_lg_gimax = __log_t_lg_gimax ; 285 dbv -> t_lk_cis = __lock_t_lk_cis ; 286 dbv -> t_lk_de = __lock_t_lk_de ; 287 dbv -> t_lk_max_locks = __lock_t_lk_max_locks ; 288 dbv -> t_lk_max_locks = __lock_t_lk_max_locks ; 289 dbv -> t_lk_max_objes = __lock_t_lk_max_objes ; 290 dbv -> t_mp_max_ݒfd = __memp_t_mp_max_ݒfd ; 291 dbv -> t_mp_max_wre = __memp_t_mp_max_wre ; 292 dbv -> t_mp_mmsize = __memp_t_mp_mmsize ; 293 dbv -> t_msg = __v_t_msg ; 294 dbv -> t_msgfe = __v_t_msgfe ; 295 dbv -> t_nic = __v_t_nic ; 296 dbv -> t_p_que = __p_t_que ; 297 dbv -> t_c_rv = __v_t_c_rv ; 298 dbv -> t_shm_key = __v_t_shm_key ; 299 dbv -> t_thad_cou = __v_t_thad_cou ; 300 dbv -> t_thad_id = __v_t_thad_id ; 301 dbv -> t_thad_id_rg = __v_t_thad_id_rg ; 302 dbv -> t_timeout = __lock_t_v_timeout ; 303 dbv -> t_tmp_d = __v_t_tmp_d ; 304 dbv -> t_tx_max = __txn_t_tx_max ; 305 dbv -> t_tx_timeamp = __txn_t_tx_timeamp ; 306 dbv -> t_vbo = __v_t_vbo ; 307 dbv -> _t = __v__t_ ; 308 dbv -> txn_beg = __txn_beg_ ; 309 dbv -> txn_checkpot = __txn_checkpot_ ; 310 dbv -> txn_cov = __txn_cov_ ; 311 dbv -> txn_ = __txn__ ; 312 dbv -> txn__t = __txn__t_ ; 316 dbv -> dbt = __db_dbt ; 319 `__os_id ( NULL , & dbv -> pid_che , NULL); 320 dbv -> thad_id = __os_id ; 321 dbv -> thad_id_rg = __v_thad_id_rg ; 323 dbv -> db_f = 0; 324 dbv -> shm_key = INVALID_REGION_SEGID ; 325 `TAILQ_INIT (& dbv -> fdli ); 327 `F_SET ( dbv , DB_ENV_NO_OUTPUT_SET ); 330 } } 337 #ifde STDC_HEADERS 338 $__v_r (cڡ DB_ENV * dbv , r , cڡ * fmt , ...) 340 $__v_r ( dbv , r , fmt , va_i ) 341 cڡ DB_ENV * dbv ; 342 r ; 343 cڡ * fmt ; 344 va_d 348 `DB_REAL_ERR ( dbv , r , DB_ERROR_SET , 1, fmt ); 349 } } 356 #ifde STDC_HEADERS 357 $__v_rx (cڡ DB_ENV * dbv , cڡ * fmt , ...) 359 $__v_rx ( dbv , fmt , va_i ) 360 cڡ DB_ENV * dbv ; 361 cڡ * fmt ; 362 va_d 366 `DB_REAL_ERR ( dbv , 0, DB_ERROR_NOT_SET , 1, fmt ); 367 } } 370 $__v_g_home ( dbv , hom ) 371 DB_ENV * dbv ; 372 cڡ ** hom ; 374 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->get_home"); 375 * hom = dbv -> db_home ; 377 } } 387 $__v_t_loc ( dbv , m_func , _func , _func ) 388 DB_ENV * dbv ; 389 *(* m_func `__P (( size_t )); 390 *(* _func `__P ((*, size_t )); 391 (* _func `__P ((*)); 393 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_alloc"); 395 dbv -> db_mloc = m_func ; 396 dbv -> db_loc = _func ; 397 dbv -> db_ = _func ; 399 } } 406 $__v_t_p_dich ( dbv , p_dich ) 407 DB_ENV * dbv ; 408 (* p_dich `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 410 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_app_dispatch"); 412 dbv -> p_dich =pp_dispatch; 414 } } 423 $__v_g_y_ags ( dbv , ag ) 424 DB_ENV * dbv ; 425 u_t32_t * ag ; 427 #ifde HAVE_CRYPTO 428 DB_CIPHER * db_ch ; 430 db_ch = dbv -> yo_hd ; 431 i( db_ch ! NULL && db_ch-> g = CIPHER_AES ) 432 * ag = DB_ENCRYPT_AES ; 434 * ag = 0; 437 `COMPQUIET ( ag , 0); 438 `__db_rx ( dbv , 440 ( DB_OPNOTSUP ); 442 } } 451 $__v_t_y ( dbv , sswd , ags ) 452 DB_ENV * dbv ; 453 cڡ * sswd ; 454 u_t32_t ags ; 456 #ifde HAVE_CRYPTO 457 DB_CIPHER * db_ch ; 458 t ; 460 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_encrypt"); 461 #OK_CRYPTO_FLAGS ( DB_ENCRYPT_AES ) ) 463 i( ags !0 && `LF_ISSET (~ OK_CRYPTO_FLAGS )) 464 ( `__db_ ( dbv , "DB_ENV->set_encrypt", 0)); 466 i( sswd = NULL || ` (passwd) == 0) { 467 `__db_rx ( dbv , "Emptyassword specifiedo set_encrypt"); 468 ( EINVAL ); 470 i(! `CRYPTO_ON ( dbv )) { 471 i(( t = `__os_oc ( dbv , 1, ( DB_CIPHER ), & db_ch )) 473 r ; 474 dbv -> yo_hd = db_ch ; 476 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 478 i( dbv -> sswd ! NULL ) 479 `__os_ ( dbv , dbv-> sswd ); 480 i(( t = `__os_rdup ( dbv , sswd , &dbenv->passwd)) != 0) { 481 `__os_ ( dbv , db_ch ); 482 r ; 487 dbv -> sswd_n = ` (dbv-> sswd ) + 1; 493 `__db_dive_mac (( u_t8_t *) dbv -> sswd , 494 dbv -> sswd_n , db_ch -> mac_key ); 495 ags ) { 497 `F_SET ( db_ch , CIPHER_ANY ); 499 DB_ENCRYPT_AES : 500 i(( t = `__yo_gtup ( dbv , db_ch , CIPHER_AES , 0)) 502 r1 ; 509 r1 : 510 `__os_ ( dbv , dbv-> sswd ); 511 `__os_ ( dbv , db_ch ); 512 dbv -> yo_hd = NULL ; 513 r : 514 ( t ); 516 `COMPQUIET ( sswd , NULL ); 517 `COMPQUIET ( ags , 0); 519 `__db_rx ( dbv , 521 ( DB_OPNOTSUP ); 523 } } 526 $__v_m_ags ( dbv , ag , outag ) 527 DB_ENV * dbv ; 528 u_t32_t * ag , * outag ; 530 #ide HAVE_BREW 534 u_t32_t ag , outag ; 535 } * fmp , agm [] = { 536 { DB_AUTO_COMMIT , DB_ENV_AUTO_COMMIT }, 537 { DB_CDB_ALLDB , DB_ENV_CDB_ALLDB }, 538 { DB_DIRECT_DB , DB_ENV_DIRECT_DB }, 539 { DB_DIRECT_LOG , DB_ENV_DIRECT_LOG }, 540 { DB_DSYNC_DB , DB_ENV_DSYNC_DB }, 541 { DB_DSYNC_LOG , DB_ENV_DSYNC_LOG }, 542 { DB_LOG_AUTOREMOVE , DB_ENV_LOG_AUTOREMOVE }, 543 { DB_LOG_INMEMORY , DB_ENV_LOG_INMEMORY }, 544 { DB_MULTIVERSION , DB_ENV_MULTIVERSION }, 545 { DB_NOLOCKING , DB_ENV_NOLOCKING }, 546 { DB_NOMMAP , DB_ENV_NOMMAP }, 547 { DB_NOPANIC , DB_ENV_NOPANIC }, 548 { DB_OVERWRITE , DB_ENV_OVERWRITE }, 549 { DB_REGION_INIT , DB_ENV_REGION_INIT }, 550 { DB_TIME_NOTGRANTED , DB_ENV_TIME_NOTGRANTED }, 551 { DB_TXN_NOSYNC , DB_ENV_TXN_NOSYNC }, 552 { DB_TXN_NOWAIT , DB_ENV_TXN_NOWAIT }, 553 { DB_TXN_SNAPSHOT , DB_ENV_TXN_SNAPSHOT }, 554 { DB_TXN_WRITE_NOSYNC , DB_ENV_TXN_WRITE_NOSYNC }, 555 { DB_YIELDCPU , DB_ENV_YIELDCPU } 558 u_t i ; 560 `COMPQUIET ( dbv , NULL ); 562 i = 0, fmp = agm ; 563 i < ( agm / (agm[0]); ++i, ++ fmp ) 564 i( `FLD_ISSET (* ag , fmp -> ag )) { 565 `FLD_SET (* outag , fmp -> outag ); 566 `FLD_CLR (* ag , fmp -> ag ); 567 i(* ag == 0) 570 } } 573 $__v_g_ags ( dbv , ag ) 574 DB_ENV * dbv ; 575 u_t32_t * ag ; 577 cڡ u_t32_t v_ags [] = { 578 DB_AUTO_COMMIT , 579 DB_CDB_ALLDB , 580 DB_DIRECT_DB , 581 DB_DIRECT_LOG , 582 DB_DSYNC_DB , 583 DB_DSYNC_LOG , 584 DB_LOG_AUTOREMOVE , 585 DB_LOG_INMEMORY , 586 DB_MULTIVERSION , 587 DB_NOLOCKING , 588 DB_NOMMAP , 589 DB_NOPANIC , 590 DB_OVERWRITE , 591 DB_REGION_INIT , 592 DB_TIME_NOTGRANTED , 593 DB_TXN_NOSYNC , 594 DB_TXN_NOWAIT , 595 DB_TXN_SNAPSHOT , 596 DB_TXN_WRITE_NOSYNC , 597 DB_YIELDCPU , 600 u_t32_t f , ags , md_ag ; 601 i ; 603 ags = 0; 604 i = 0; ( f = v_ags [i]) != 0; i++) { 605 md_ag = 0; 606 `__v_m_ags ( dbv , & f , & md_ag ); 607 `DB_ASSERT ( dbv , f == 0); 608 i( `F_ISSET ( dbv , md_ag ) == mapped_flag) 609 `LF_SET ( v_ags [ i ]); 613 i( dbv -> gfo ! NULL && 614 (( REGENV *)(( REGINFO *) dbv -> gfo )-> imy )-> nic != 0) { 615 `LF_SET ( DB_PANIC_ENVIRONMENT ); 617 `__log_g_ags ( dbv , & ags ); 619 * ag = ags ; 621 } } 630 $__v_t_ags ( dbv , ags , ) 631 DB_ENV * dbv ; 632 u_t32_t ags ; 633 ; 635 u_t32_t md_ags ; 636 t ; 638 #OK_FLAGS \ 639 ( DB_AUTO_COMMIT | DB_CDB_ALLDB | DB_DIRECT_DB | DB_DIRECT_LOG | \ 640 DB_DSYNC_DB | DB_DSYNC_LOG | DB_LOG_AUTOREMOVE | \ 641 DB_LOG_INMEMORY | DB_MULTIVERSION | DB_NOLOCKING | \ 642 DB_NOMMAP | DB_NOPANIC | DB_OVERWRITE | \ 643 DB_PANIC_ENVIRONMENT | DB_REGION_INIT | \ 644 DB_TIME_NOTGRANTED | DB_TXN_NOSYNC | DB_TXN_NOWAIT | \ 645 DB_TXN_SNAPSHOT | DB_TXN_WRITE_NOSYNC | DB_YIELDCPU ) ) 647 i( `LF_ISSET (~ OK_FLAGS )) 648 ( `__db_ ( dbv , "DB_ENV->set_flags", 0)); 649 i( ) { 650 i(( t = `__db_fcchk ( dbv , "DB_ENV->set_flags", 651 ags , DB_LOG_INMEMORY , DB_TXN_NOSYNC )) != 0) 652 ( t ); 653 i(( t = `__db_fcchk ( dbv , "DB_ENV->set_flags", 654 ags , DB_LOG_INMEMORY , DB_TXN_WRITE_NOSYNC )) != 0) 655 ( t ); 656 i(( t = `__db_fcchk ( dbv , "DB_ENV->set_flags", 657 ags , DB_TXN_NOSYNC , DB_TXN_WRITE_NOSYNC )) != 0) 658 ( t ); 659 i( `LF_ISSET ( DB_DIRECT_DB | 660 DB_DIRECT_LOG && `__os_sut_de_io () == 0) { 661 `__db_rx ( dbv , 663 ( EINVAL ); 667 i( `LF_ISSET ( DB_CDB_ALLDB )) 668 `ENV_ILLEGAL_AFTER_OPEN ( dbv , 670 i( `LF_ISSET ( DB_PANIC_ENVIRONMENT )) { 671 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , 673 i( ) { 674 `__db_rx ( dbv , "Environmentanic set"); 675 () `__db_nic ( dbv , DB_RUNRECOVERY ); 677 `__v_nic_t ( dbv , 0); 679 i( `LF_ISSET ( DB_REGION_INIT )) 680 `ENV_ILLEGAL_AFTER_OPEN ( dbv , 682 i( `LF_ISSET ( DB_LOG_INMEMORY )) 683 `ENV_ILLEGAL_AFTER_OPEN ( dbv , 691 i( `LF_ISSET ( 692 DB_LOG_INMEMORY | DB_TXN_NOSYNC | DB_TXN_WRITE_NOSYNC )) 693 `F_CLR ( dbv , 694 DB_ENV_LOG_INMEMORY | 695 DB_ENV_TXN_NOSYNC | DB_ENV_TXN_WRITE_NOSYNC ); 698 `__log_t_ags ( dbv , ags , ); 700 md_ags = 0; 701 `__v_m_ags ( dbv , & ags , & md_ags ); 702 i( ) 703 `F_SET ( dbv , md_ags ); 705 `F_CLR ( dbv , md_ags ); 708 } } 711 $__v_g_da_ds ( dbv , d ) 712 DB_ENV * dbv ; 713 cڡ *** d ; 715 * d = (cڡ **) dbv -> db_da_d ; 717 } } 726 $__v_t_da_d ( dbv , d ) 727 DB_ENV * dbv ; 728 cڡ * d ; 730 t ; 737 #DATA_INIT_CNT 20 ) 738 i( dbv -> db_da_d = NULL ) { 739 i(( t = `__os_oc ( dbv , DATA_INIT_CNT , 740 (**), & dbv -> db_da_d )) != 0) 741 ( t ); 742 dbv -> da_t = DATA_INIT_CNT ; 743 } i( dbv -> da_xt =dbv-> da_t - 2) { 744 dbv -> da_t *= 2; 745 i(( t = `__os_loc ( dbv , 746 ( u_t ) dbv -> da_t * (**), 747 & dbv -> db_da_d )) != 0) 748 ( t ); 751 t = `__os_rdup ( dbv , 752 d , & dbv -> db_da_d [dbv-> da_xt ++]); 753 dbv -> db_da_d [dbv-> da_xt ] = NULL ; 754 ( t ); 755 } } 768 $__v_t_rmed_d ( dbv , mode , ags ) 769 DB_ENV * dbv ; 770 mode ; 771 u_t32_t ags ; 773 i( ags != 0) 774 ( `__db_ ( dbv , "DB_ENV->set_intermediate_dir", 0)); 775 i( mode == 0) { 776 `__db_rx ( dbv , 778 ( EINVAL ); 781 dbv -> d_mode = mode ; 783 } } 793 $__v_t_r ( dbv , r ) 794 DB_ENV * dbv ; 795 (* r `__P ((cڡ DB_ENV *, const *, const *)); 797 `F_CLR ( dbv , DB_ENV_NO_OUTPUT_SET ); 798 dbv -> db_r = r ; 799 } } 808 $__v_g_rfe ( dbv , rf ) 809 DB_ENV * dbv ; 810 FILE ** rf ; 812 * rf = dbv -> db_rfe ; 813 } } 822 $__v_t_rfe ( dbv , rfe ) 823 DB_ENV * dbv ; 824 FILE * rfe ; 826 `F_CLR ( dbv , DB_ENV_NO_OUTPUT_SET ); 827 dbv -> db_rfe = rfe ; 828 } } 837 $__v_g_fx ( dbv , fxp ) 838 DB_ENV * dbv ; 839 cڡ ** fxp ; 841 * fxp = dbv -> db_fx ; 842 } } 851 $__v_t_fx ( dbv , fx ) 852 DB_ENV * dbv ; 853 cڡ * fx ; 855 dbv -> db_fx = fx ; 856 } } 859 $__v_t_edback ( dbv , edback ) 860 DB_ENV * dbv ; 861 (* edback `__P (( DB_ENV *, , )); 863 dbv -> db_edback = edback ; 865 } } 872 $__v_t_thad_id ( dbv , id ) 873 DB_ENV * dbv ; 874 (* id `__P (( DB_ENV *, pid_t *, db_thadid_t *)); 876 dbv -> thad_id = id ; 878 } } 885 $__v_t_thad_id_rg ( dbv , thad_id_rg ) 886 DB_ENV * dbv ; 887 *(* thad_id_rg `__P (( DB_ENV *, pid_t , db_thadid_t , *)); 889 dbv -> thad_id_rg =hread_id_string; 891 } } 898 $__v_t_ilive ( dbv , is_ive ) 899 DB_ENV * dbv ; 900 (* is_ive `__P (( DB_ENV *, pid_t , db_thadid_t , u_t32_t )); 902 i( `F_ISSET ( dbv , DB_ENV_OPEN_CALLED && dbv-> thr_nbuck == 0) { 903 `__db_rx ( dbv , 905 ( EINVAL ); 907 dbv -> is_ive = is_alive; 909 } } 916 $__v_g_thad_cou ( dbv , coup ) 917 DB_ENV * dbv ; 918 u_t32_t * coup ; 920 * coup = dbv -> thr_max ; 922 } } 929 $__v_t_thad_cou ( dbv , cou ) 930 DB_ENV * dbv ; 931 u_t32_t cou ; 933 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_thread_count"); 934 dbv -> thr_max = cou ; 940 dbv -> thr_nbuck = cou / 8; 942 } } 952 $__v_t_msg ( dbv , msg ) 953 DB_ENV * dbv ; 954 (* msg `__P ((cڡ DB_ENV *, const *)); 956 dbv -> db_msg = msg ; 957 } } 966 $__v_g_msgfe ( dbv , msgf ) 967 DB_ENV * dbv ; 968 FILE ** msgf ; 970 * msgf = dbv -> db_msgfe ; 971 } } 980 $__v_t_msgfe ( dbv , msgfe ) 981 DB_ENV * dbv ; 982 FILE * msgfe ; 984 dbv -> db_msgfe = msgfe ; 985 } } 994 $__v_t_nic ( dbv , nic ) 995 DB_ENV * dbv ; 996 (* nic `__P (( DB_ENV *, )); 998 dbv -> db_nic = nic ; 1000 } } 1007 $__v_t_evt_nify ( dbv , evt_func ) 1008 DB_ENV * dbv ; 1009 (* evt_func `__P (( DB_ENV *, u_t32_t , *)); 1011 dbv -> db_evt_func = evt_func ; 1013 } } 1016 $__v_g_shm_key ( dbv , shm_keyp ) 1017 DB_ENV * dbv ; 1018 * shm_keyp ; 1020 * shm_keyp = dbv -> shm_key ; 1022 } } 1031 $__v_t_shm_key ( dbv , shm_key ) 1032 DB_ENV * dbv ; 1033 shm_key ; 1035 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_shm_key"); 1037 dbv -> shm_key = shm_key; 1039 } } 1042 $__v_g_tmp_d ( dbv , dp ) 1043 DB_ENV * dbv ; 1044 cڡ ** dp ; 1046 * dp = dbv -> db_tmp_d ; 1048 } } 1057 $__v_t_tmp_d ( dbv , d ) 1058 DB_ENV * dbv ; 1059 cڡ * d ; 1061 i( dbv -> db_tmp_d ! NULL ) 1062 `__os_ ( dbv , dbv-> db_tmp_d ); 1063 ( `__os_rdup ( dbv , d , &dbv-> db_tmp_d )); 1064 } } 1067 $__v_g_vbo ( dbv , which , of ) 1068 DB_ENV * dbv ; 1069 u_t32_t which ; 1070 * of ; 1072 which ) { 1073 DB_VERB_DEADLOCK : 1074 DB_VERB_FILEOPS : 1075 DB_VERB_FILEOPS_ALL : 1076 DB_VERB_RECOVERY : 1077 DB_VERB_REGISTER : 1078 DB_VERB_REPLICATION : 1079 DB_VERB_WAITSFOR : 1080 * of = `FLD_ISSET ( dbv -> vbo , which ) ? 1 : 0; 1083 ( EINVAL ); 1086 } } 1095 $__v_t_vbo ( dbv , which , ) 1096 DB_ENV * dbv ; 1097 u_t32_t which ; 1098 ; 1100 which ) { 1101 DB_VERB_DEADLOCK : 1102 DB_VERB_FILEOPS : 1103 DB_VERB_FILEOPS_ALL : 1104 DB_VERB_RECOVERY : 1105 DB_VERB_REGISTER : 1106 DB_VERB_REPLICATION : 1107 DB_VERB_WAITSFOR : 1108 i( ) 1109 `FLD_SET ( dbv -> vbo , which ); 1111 `FLD_CLR ( dbv -> vbo , which ); 1114 ( EINVAL ); 1117 } } 1126 $__db_mi_v ( dbv , me ) 1127 DB_ENV * dbv ; 1128 cڡ * me ; 1130 `__db_rx ( dbv , "%s: methodotermitted whennvironment specified", 1131 me ); 1132 ( EINVAL ); 1133 } } 1142 $__db_mi_ݒ ( dbv , me , a ) 1143 DB_ENV * dbv ; 1144 cڡ * me ; 1145 a ; 1147 `__db_rx ( dbv , "%s: methodotermitted %s handle's open method", 1148 me , a ? "after" : "before"); 1149 ( EINVAL ); 1150 } } 1159 $__db_v_cfig ( dbv , i , ags ) 1160 DB_ENV * dbv ; 1161 * i ; 1162 u_t32_t ags ; 1164 * sub ; 1166 ags ) { 1167 DB_INIT_LOCK : 1168 sub = "locking"; 1170 DB_INIT_LOG : 1171 sub = "logging"; 1173 DB_INIT_MPOOL : 1174 sub = "memoryool"; 1176 DB_INIT_REP : 1177 sub = "replication"; 1179 DB_INIT_TXN : 1180 sub = "transaction"; 1183 sub = "<unspecified>"; 1186 `__db_rx ( dbv , 1188 i , sub ); 1189 ( EINVAL ); 1190 } } 1193 $__v_t_c_rv ( dbv , , ho , tc , sc , ags ) 1194 DB_ENV * dbv ; 1195 * ; 1196 cڡ * ho ; 1197 tc , sc ; 1198 u_t32_t ags ; 1200 `COMPQUIET ( ho , NULL ); 1201 `COMPQUIET ( , NULL ); 1202 `COMPQUIET ( tc , 0); 1203 `COMPQUIET ( sc , 0); 1204 `COMPQUIET ( ags , 0); 1206 `__db_rx ( dbv , "Berkeley DB wasot configured for RPC support"); 1207 ( DB_OPNOTSUP ); 1208 } } @../env/env_name.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __db_tmp_ݒ __P (( DB_ENV *, u_t32_t , *, DB_FH **)); 15 #DB_ADDSTR ( add ) { \ 20 i(( add ! NULL && (add)[0] != '\0') { \ 22 i( `__os_abh ( add )) { \ 23 p = r ; \ 24 ash = 0; \ 27 n = ` ( add ); \ 28 i( ash ) \ 29 * p ++ = PATH_SEPARATOR [0]; \ 30 `memy ( p , add , n ); \ 31 p + n ; \ 32 ash = `rchr ( PATH_SEPARATOR , p [-1]= NULL ; \ 34 } ) 46 $__db_ame ( dbv , ame , fe , tmp_oags , fh , m ) 47 DB_ENV * dbv ; 48 APPNAME ame ; 49 cڡ * fe ; 50 u_t32_t tmp_oags ; 51 DB_FH ** fh ; 52 ** m ; 54 um { TRY_NOTSET , TRY_DATA_DIR , TRY_ENV_HOME , TRY_CREATE } y_e ; 55 size_t n , r_n ; 56 da_y , t , ash , tmp_ ; 57 cڡ * a , * b ; 58 * p , * r ; 60 y_e = TRY_NOTSET ; 61 a = b = NULL ; 62 da_y = 0; 63 tmp_ = 0; 69 i( fh ! NULL ) 70 * fh = NULL ; 71 i( m ! NULL ) 72 * m = NULL ; 78 i( fe ! NULL && `__os_abh (file)) 79 ( `__os_rdup ( dbv , fe , m )); 82 i( dbv ! NULL ) 83 a = dbv -> db_home ; 85 y : 95 ame ) { 96 DB_APP_NONE : 98 DB_APP_DATA : 99 i( dbv = NULL || dbv-> db_da_d == NULL) { 100 y_e = TRY_CREATE ; 108 i(( b = dbv -> db_da_d [ da_y ]! NULL ) { 109 ++ da_y ; 110 y_e = TRY_DATA_DIR ; 115 i( y_e ! TRY_ENV_HOME ) { 116 y_e = TRY_ENV_HOME ; 121 y_e = TRY_CREATE ; 122 b = dbv -> db_da_d [0]; 124 DB_APP_LOG : 125 i( dbv ! NULL ) 126 b = dbv -> db_log_d ; 128 DB_APP_TMP : 129 i( dbv ! NULL ) 130 b = dbv -> db_tmp_d ; 131 tmp_ = 1; 135 n = 136 ( a = NULL ? 0 : ` (a) + 1) + 137 ( b = NULL ? 0 : ` (b) + 1) + 138 ( fe = NULL ? 0 : ` (file) + 1); 145 #DB_TRAIL "BDBXXXXX" ) 146 r_n = n + ( DB_TRAIL ) + 10; 147 i(( t = `__os_mloc ( dbv , r_n , & r )) != 0) 148 ( t ); 150 ash = 0; 151 p = r ; 152 `DB_ADDSTR ( a ); 153 `DB_ADDSTR ( b ); 154 `DB_ADDSTR ( fe ); 155 * p = '\0'; 161 i( ame = DB_APP_DATA && 162 `__os_exis ( dbv , r , NULL !0 && y_e ! TRY_CREATE ) { 163 `__os_ ( dbv , r ); 164 b = NULL ; 165 y ; 169 i( tmp_ && 170 ( t = `__db_tmp_ݒ ( dbv , tmp_oags , r , fh )) != 0) { 171 `__os_ ( dbv , r ); 172 ( t ); 175 i( m = NULL ) 176 `__os_ ( dbv , r ); 178 * m = r ; 180 } } 187 $__db_tmp_ݒ ( dbv , tmp_oags , th , fh ) 188 DB_ENV * dbv ; 189 u_t32_t tmp_oags ; 190 * th ; 191 DB_FH ** fh ; 193 pid_t pid ; 194 fum , i , isd , t ; 195 * fx , * v ; 201 i(( t = `__os_exis ( dbv , th , & isd )) != 0) { 202 `__db_r ( dbv , t , "%s", th ); 203 ( t ); 205 i(! isd ) { 206 `__db_r ( dbv , EINVAL , "%s", th ); 207 ( EINVAL ); 211 () `t ( th , PATH_SEPARATOR , 1); 212 () `rt ( th , DB_TRAIL ); 215 `__os_id ( dbv , & pid , NULL ); 216 v = th + ` թh); *--v ='X'; pid /= 10) 217 * v = '0' + ( u_ch )( pid % 10); 218 fx = v + 1; 221 fum = 1;; filenum++) { 222 i(( t = `__os_ݒ ( dbv , th , 0, 223 tmp_oags | DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_TEMP , 224 `__db_omode ( OWNER_RW ), fh )) == 0) 234 i( t ! EEXIST ) { 235 `__db_r ( dbv , t , "mpܬy on: %s", th ); 236 ( t ); 254 i = fum , v = fx ; i > 0; i = (i - 1) / 26) 255 i(* v ++ == '\0') 256 ( EINVAL ); 258 i = fum ; i > 0; i = (i - 1) / 26) 259 *-- v = 'a' + (( i - 1) % 26); 262 } } @../env/env_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/b.h " 15 ~"dbc/lock.h " 16 ~"dbc/log.h " 17 ~"dbc/mp.h " 18 ~"dbc/txn.h " 20 __v_esh __P (( DB_ENV *, u_t32_t , )); 21 __fe_hd_nup __P (( DB_ENV *)); 30 $db_vsi ( majvp , mvp , tchp ) 31 * majvp , * mvp , * tchp ; 33 i( majvp ! NULL ) 34 * majvp = DB_VERSION_MAJOR ; 35 i( mvp ! NULL ) 36 * mvp = DB_VERSION_MINOR ; 37 i( tchp ! NULL ) 38 * tchp = DB_VERSION_PATCH ; 39 ((*) DB_VERSION_STRING ); 40 } } 49 $__v_ݒ_ ( dbv , db_home , ags , mode ) 50 DB_ENV * dbv ; 51 cڡ * db_home ; 52 u_t32_t ags ; 53 mode ; 55 t ; 57 #unde OKFLAGS 58 #OKFLAGS \ 59 ( DB_CREATE | DB_INIT_CDB | DB_INIT_LOCK | DB_INIT_LOG | \ 60 DB_INIT_MPOOL | DB_INIT_REP | DB_INIT_TXN | DB_LOCKDOWN | \ 61 DB_PRIVATE | DB_RECOVER | DB_RECOVER_FATAL | DB_REGISTER | \ 62 DB_SYSTEM_MEM | DB_THREAD | DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 63 #unde OKFLAGS_CDB 64 #OKFLAGS_CDB \ 65 ( DB_CREATE | DB_INIT_CDB | DB_INIT_MPOOL | DB_LOCKDOWN | \ 66 DB_PRIVATE | DB_SYSTEM_MEM | DB_THREAD | \ 67 DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 69 i(( t = `__db_fchk ( dbv , "DB_ENV->ݒ", ags , OKFLAGS )) != 0) 70 ( t ); 71 i(( t = `__db_fcchk ( 72 dbv , "DB_ENV->ݒ", ags , DB_INIT_CDB , ~ OKFLAGS_CDB )) != 0) 73 ( t ); 74 i( `LF_ISSET ( DB_REGISTER )) { 75 i(! `__os_sut_db_gi ()) { 76 `__db_rx ( dbv , 78 ( EINVAL ); 80 i(( t = `__db_fcchk ( dbv , "DB_ENV->ݒ", ags , 81 DB_PRIVATE , DB_REGISTER | DB_SYSTEM_MEM )) != 0) 82 ( t ); 83 i(! `LF_ISSET ( DB_INIT_TXN )) { 84 `__db_rx ( 85 dbv , "registrationequiresransaction support"); 86 ( EINVAL ); 89 i( `LF_ISSET ( DB_INIT_REP )) { 90 i(! `__os_sut_iti ()) { 91 `__db_rx ( dbv , 93 ( EINVAL ); 95 i(! `LF_ISSET ( DB_INIT_LOCK )) { 96 `__db_rx ( dbv , 98 ( EINVAL ); 100 i(! `LF_ISSET ( DB_INIT_TXN )) { 101 `__db_rx ( 102 dbv , "replicationequiresransaction support"); 103 ( EINVAL ); 106 i( `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL )) { 107 i(( t = `__db_fcchk ( dbv , 108 "DB_ENV->ݒ", ags , DB_RECOVER , DB_RECOVER_FATAL )) != 0) 109 ( t ); 110 i(( t = `__db_fcchk ( dbv , 111 "DB_ENV->ݒ", ags , DB_REGISTER , DB_RECOVER_FATAL )) != 0) 112 ( t ); 113 i(! `LF_ISSET ( DB_CREATE )) { 114 `__db_rx ( dbv , "recoveryequireshe create flag"); 115 ( EINVAL ); 117 i(! `LF_ISSET ( DB_INIT_TXN )) { 118 `__db_rx ( 119 dbv , "recoveryequiresransaction support"); 120 ( EINVAL ); 124 #ifde HAVE_MUTEX_THREAD_ONLY 130 i(! `LF_ISSET ( DB_PRIVATE )) { 131 `__db_rx ( dbv , 133 ( EINVAL ); 137 #ifde HAVE_MUTEX_FCNTL 155 i( `F_ISSET ( dbv , DB_ENV_THREAD )) { 156 `__db_rx ( dbv , 158 ( EINVAL ); 162 ( `__v_ݒ ( dbv , db_home , ags , mode )); 163 } } 172 $__v_ݒ ( dbv , db_home , ags , mode ) 173 DB_ENV * dbv ; 174 cڡ * db_home ; 175 u_t32_t ags ; 176 mode ; 178 DB_THREAD_INFO * ; 179 REGINFO * f ; 180 u_t32_t _ags , ig_ags ; 181 _ok , gi_covy , p_check , t , t_t ; 183 = NULL ; 184 gi_covy = p_check = 0; 187 i(( t = `__v_cfig ( dbv , db_home , ags , mode )) != 0) 188 ( t ); 197 ig_ags = dbv -> ags ; 203 i( `LF_ISSET ( DB_REGISTER )) { 204 i(( t = `__vg_gi ( dbv , & gi_covy )) != 0) 205 r ; 206 i( gi_covy ) { 207 i(! `LF_ISSET ( DB_RECOVER )) { 208 `__db_rx ( dbv , 210 t = DB_RUNRECOVERY ; 211 r ; 214 `LF_CLR ( DB_RECOVER ); 228 i( `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL )) 229 #ifde HAVE_REPLICATION 230 i(( t = `__p_t_ ( dbv )) != 0 || 231 ( t = `__v_move_v ( dbv )) != 0 || 233 i(( t = `__v_move_v ( dbv )) != 0 || 235 ( t = `__v_esh ( dbv , ig_ags , 0)) != 0) 236 r ; 239 _ok = `LF_ISSET ( DB_CREATE ) ? 1 : 0; 240 i( `LF_ISSET ( DB_LOCKDOWN )) 241 `F_SET ( dbv , DB_ENV_LOCKDOWN ); 242 i( `LF_ISSET ( DB_PRIVATE )) 243 `F_SET ( dbv , DB_ENV_PRIVATE ); 244 i( `LF_ISSET ( DB_RECOVER_FATAL )) 245 `F_SET ( dbv , DB_ENV_RECOVER_FATAL ); 246 i( `LF_ISSET ( DB_SYSTEM_MEM )) 247 `F_SET ( dbv , DB_ENV_SYSTEM_MEM ); 248 i( `LF_ISSET ( DB_THREAD )) 249 `F_SET ( dbv , DB_ENV_THREAD ); 255 #DB_INITENV_CDB 0x0001 ) 256 #DB_INITENV_CDB_ALLDB 0x0002 ) 257 #DB_INITENV_LOCK 0x0004 ) 258 #DB_INITENV_LOG 0x0008 ) 259 #DB_INITENV_MPOOL 0x0010 ) 260 #DB_INITENV_REP 0x0020 ) 261 #DB_INITENV_TXN 0x0040 ) 269 _ags = 0; 270 i( `LF_ISSET ( DB_INIT_CDB )) 271 `FLD_SET ( _ags , DB_INITENV_CDB ); 272 i( `F_ISSET ( dbv , DB_ENV_CDB_ALLDB )) 273 `FLD_SET ( _ags , DB_INITENV_CDB_ALLDB ); 274 i( `LF_ISSET ( DB_INIT_LOCK )) 275 `FLD_SET ( _ags , DB_INITENV_LOCK ); 276 i( `LF_ISSET ( DB_INIT_LOG )) 277 `FLD_SET ( _ags , DB_INITENV_LOG ); 278 i( `LF_ISSET ( DB_INIT_MPOOL )) 279 `FLD_SET ( _ags , DB_INITENV_MPOOL ); 280 i( `LF_ISSET ( DB_INIT_REP )) 281 `FLD_SET ( _ags , DB_INITENV_REP ); 282 i( `LF_ISSET ( DB_INIT_TXN )) 283 `FLD_SET ( _ags , DB_INITENV_TXN ); 284 i(( t = `__v_ch ( dbv , & _ags , _ok , 1)) != 0) 285 r ; 294 i( `FLD_ISSET ( _ags , DB_INITENV_CDB )) 295 `LF_SET ( DB_INIT_CDB ); 296 i( `FLD_ISSET ( _ags , DB_INITENV_LOCK )) 297 `LF_SET ( DB_INIT_LOCK ); 298 i( `FLD_ISSET ( _ags , DB_INITENV_LOG )) 299 `LF_SET ( DB_INIT_LOG ); 300 i( `FLD_ISSET ( _ags , DB_INITENV_MPOOL )) 301 `LF_SET ( DB_INIT_MPOOL ); 302 i( `FLD_ISSET ( _ags , DB_INITENV_REP )) 303 `LF_SET ( DB_INIT_REP ); 304 i( `FLD_ISSET ( _ags , DB_INITENV_TXN )) 305 `LF_SET ( DB_INIT_TXN ); 306 i( `FLD_ISSET ( _ags , DB_INITENV_CDB_ALLDB ) && 307 ( t = `__v_t_ags ( dbv , DB_CDB_ALLDB , 1)) != 0) 308 r ; 315 dbv -> ݒ_ags = ags ; 318 i( `LF_ISSET ( DB_INIT_CDB )) { 319 `LF_SET ( DB_INIT_LOCK ); 320 `F_SET ( dbv , DB_ENV_CDB ); 328 `F_SET ( dbv , DB_ENV_OPEN_CALLED ); 333 f = dbv -> gfo ; 334 i(( t = `__v_thad_ ( 335 dbv , `F_ISSET ( f , REGION_CREATE ) ? 1 : 0)) != 0) 336 r ; 338 `ENV_ENTER ( dbv , ); 343 #ifde HAVE_MUTEX_SUPPORT 350 i(( t = `__mux_ݒ ( dbv , _ok )) != 0) 351 r ; 357 i(( t = `__v_f_emt ( dbv )) != 0) 358 r ; 363 i(( t = `__mux_loc ( dbv , 364 MTX_ENV_HANDLE , DB_MUTEX_PROCESS_ONLY , & dbv -> mtx_v )) != 0) 365 r ; 371 i( `LF_ISSET ( DB_INIT_REP && ( t = `__p_ݒ ( dbv )) != 0) 372 r ; 374 p_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; 375 i( p_check && ( t = `__v_p_r ( dbv , 0)) != 0) 376 r ; 378 i( `LF_ISSET ( DB_INIT_MPOOL )) { 379 i(( t = `__memp_ݒ ( dbv , _ok )) != 0) 380 r ; 387 i( _ok ) 388 () `__memp_t_cfig ( 389 dbv , DB_MEMP_SUPPRESS_WRITE , 1); 396 `TAILQ_INIT (& dbv -> dbli ); 397 i(( t = `__mux_loc ( dbv , MTX_ENV_DBLIST , 398 DB_MUTEX_PROCESS_ONLY , & dbv -> mtx_dbli )) != 0) 399 r ; 402 i(( t = `__memp_gi ( 403 dbv , DB_FTYPE_SET , __db_pg , __db_pgout )) != 0) 404 r ; 416 i( `LF_ISSET ( DB_INIT_MPOOL | DB_INIT_LOG | DB_INIT_TXN ) && 417 ( t = `__yo_gi_ ( dbv )) != 0) 418 r ; 419 i(( t = `__mux_loc ( dbv , MTX_TWISTER , 420 DB_MUTEX_PROCESS_ONLY , & dbv -> mtx_mt )) != 0) 421 r ; 429 i( `LF_ISSET ( DB_INIT_LOG | DB_INIT_TXN )) 430 i(( t = `__log_ݒ ( dbv , _ok )) != 0) 431 r ; 432 i( `LF_ISSET ( DB_INIT_LOCK )) 433 i(( t = `__lock_ݒ ( dbv , _ok )) != 0) 434 r ; 436 i( `LF_ISSET ( DB_INIT_TXN )) { 437 i(( t = `__txn_ݒ ( dbv , _ok )) != 0) 438 r ; 444 i(( t = `__v__c ( dbv , DB_LOGVERSION )) != 0) 445 r ; 449 i( `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL ) && 450 ( t = `__db_ec ( dbv , NULL , NULL, 1, 451 `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL ))) != 0) 452 r ; 464 i( `TXN_ON ( dbv ) && 465 ! `F_ISSET ( dbv , DB_ENV_LOG_INMEMORY ) && 466 `F_ISSET ( f , REGION_CREATE ) && 467 ! `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL ) && 468 ( t = `__txn_t ( dbv )) != 0) 469 r ; 472 i(( t = `__v_tu_ ( dbv )) != 0) 473 r ; 475 i( p_check ) 476 t = `__v_db_p_ex ( dbv ); 479 i( `LF_ISSET ( DB_INIT_MPOOL )) 480 () `__memp_t_cfig ( dbv , DB_MEMP_SUPPRESS_WRITE , 0); 482 r : i( t == 0) 483 `ENV_LEAVE ( dbv , ); 492 f = dbv -> gfo ; 493 i( f ! NULL && `F_ISSET (f, REGION_CREATE )) { 494 t = `__db_nic ( dbv ,et); 497 () `__v_esh ( dbv , ig_ags , p_check ); 498 () `__v_move_v ( dbv ); 499 () `__v_esh ( dbv , ig_ags , 0); 501 () `__v_esh ( dbv , ig_ags , p_check ); 504 i( gi_covy ) { 512 i( t =0 && ( t_t = `__vg_xuock ( dbv )) != 0) 513 t = t_t ; 514 i( t != 0) 515 () `__vg_uegi ( dbv , 1); 518 ( t ); 519 } } 528 $__v_move ( dbv , db_home , ags ) 529 DB_ENV * dbv ; 530 cڡ * db_home ; 531 u_t32_t ags ; 533 t , t_t ; 535 #unde OKFLAGS 536 #OKFLAGS \ 537 ( DB_FORCE | DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 540 i(( t = `__db_fchk ( dbv , "DB_ENV->move", ags , OKFLAGS )) != 0) 541 ( t ); 543 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->remove"); 545 i(( t = `__v_cfig ( dbv , db_home , ags , 0)) != 0) 546 ( t ); 552 i(( t = `__v_tu_off ( dbv , ags )!0 && ! `LF_ISSET ( DB_FORCE )) 553 ( t ); 555 t = `__v_move_v ( dbv ); 557 i(( t_t = `__v_o ( dbv , 0)!0 && t == 0) 558 t = t_t ; 560 ( t ); 561 } } 570 $__v_cfig ( dbv , db_home , ags , mode ) 571 DB_ENV * dbv ; 572 cڡ * db_home ; 573 u_t32_t ags ; 574 mode ; 576 t ; 577 * home , home_buf [ DB_MAXPATHLEN ]; 587 home = (*) db_home ; 588 i( home = NULL && ( `LF_ISSET ( DB_USE_ENVIRON ) || 589 ( `LF_ISSET ( DB_USE_ENVIRON_ROOT && `__os_io ()))) { 590 home = home_buf ; 591 i(( t = `__os_gv ( 592 dbv , "DB_HOME", & home , ( home_buf ))) != 0) 593 ( t ); 598 i( home ! NULL && 599 ( t = `__os_rdup ( dbv , home , &dbv-> db_home )) != 0) 600 ( t ); 603 dbv -> db_mode = mode =0 ? `__db_omode ("rw-rw----") : mode; 606 i(( t = `__v_ad_db_cfig ( dbv )) != 0) 607 ( t ); 613 i( dbv -> db_tmp_d = NULL && ( t = `__os_tmpd (dbv, ags )) != 0) 614 ( t ); 617 } } 626 $__v_o_ ( dbv , ags ) 627 DB_ENV * dbv ; 628 u_t32_t ags ; 630 DB_THREAD_INFO * ; 631 p_check , t , t_t ; 633 t = 0; 635 i( `PANIC_ISSET ( dbv )) { 637 () `__fe_hd_nup ( dbv ); 640 i( `IS_ENV_REPLICATED ( dbv )) 641 () `__pmgr_o ( dbv ); 643 `PANIC_CHECK ( dbv ); 646 `ENV_ENTER ( dbv , ); 651 i( ags != 0 && 652 ( t_t = `__db_ ( dbv , "DB_ENV->o", 0)!0 && t == 0) 653 t = t_t ; 655 p_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; 656 i( p_check ) { 657 #ifde HAVE_REPLICATION_THREADS 664 i(( t_t = `__pmgr_o ( dbv )!0 && t == 0) 665 t = t_t ; 667 i(( t_t = `__v_p_r ( dbv , 0)!0 && t == 0) 668 t = t_t ; 671 i(( t_t = `__v_o ( dbv , p_check )!0 && t == 0) 672 t = t_t ; 675 ( t ); 676 } } 685 $__v_o ( dbv , p_check ) 686 DB_ENV * dbv ; 687 p_check ; 689 t , t_t ; 690 ** p ; 692 t = 0; 698 i( `TXN_ON ( dbv && ( t_t = `__txn_eo (dbv)!0 && t == 0) 699 t = t_t ; 701 #ifde HAVE_REPLICATION 702 i(( t_t = `__p_v_o ( dbv )!0 && t == 0) 703 t = t_t ; 710 i(( t_t = `__v_esh ( dbv , 0, p_check )!0 && t == 0) 711 t = t_t ; 713 #ifde HAVE_CRYPTO 718 i(( t_t = `__yo_v_o ( dbv )!0 && t == 0) 719 t = t_t ; 723 i( dbv -> giry ! NULL ) { 724 () `__vg_uegi ( dbv , 0); 725 dbv -> giry = NULL ; 729 i(( t_t = `__fe_hd_nup ( dbv )!0 && t == 0) 730 t = t_t ; 733 i( dbv -> db_log_d ! NULL ) 734 `__os_ ( dbv , dbv-> db_log_d ); 735 dbv -> db_log_d = NULL ; 736 i( dbv -> db_tmp_d ! NULL ) 737 `__os_ ( dbv , dbv-> db_tmp_d ); 738 dbv -> db_tmp_d = NULL ; 739 i( dbv -> db_da_d ! NULL ) { 740 p = dbv -> db_da_d ; *! NULL ; ++p) 741 `__os_ ( dbv , * p ); 742 `__os_ ( dbv , dbv-> db_da_d ); 743 dbv -> db_da_d = NULL ; 744 dbv -> da_xt = 0; 746 i( dbv -> db_home ! NULL ) { 747 `__os_ ( dbv , dbv-> db_home ); 748 dbv -> db_home = NULL ; 752 `__db_v_deroy ( dbv ); 754 ( t ); 755 } } 762 $__v_esh ( dbv , ig_ags , p_check ) 763 DB_ENV * dbv ; 764 u_t32_t ig_ags ; 765 p_check ; 767 DB * ldbp ; 768 DB_THREAD_INFO * ; 769 t , t_t ; 771 t = 0; 787 i( `TXN_ON ( dbv ) && 788 ( t_t = `__txn_v_esh ( dbv )!0 && t == 0) 789 t = t_t ; 791 i( `LOGGING_ON ( dbv ) && 792 ( t_t = `__log_v_esh ( dbv )!0 && t == 0) 793 t = t_t ; 799 i( `LOCKING_ON ( dbv )) { 800 i(! `F_ISSET ( dbv , DB_ENV_THREAD ) && 801 dbv -> v_ef ! NULL && ( t_t = `__lock_id_ (dbenv, 802 ( DB_LOCKER *) dbv -> v_ef )!0 && t == 0) 803 t = t_t ; 804 dbv -> v_ef = NULL ; 806 i(( t_t = `__lock_v_esh ( dbv )!0 && t == 0) 807 t = t_t ; 811 i(( t_t = `__mux_ ( dbv , &dbv-> mtx_v )!0 && t == 0) 812 t = t_t ; 823 i( dbv -> db_f != 0) { 824 `__db_rx ( dbv , 826 `TAILQ_FOREACH ( ldbp , & dbv -> dbli , dblilks ) 827 `__db_rx ( dbv , "Open database handle: %s%s%s", 828 ldbp -> ame = NULL ? "unnamed" :dbp->fname, 829 ldbp -> dme = NULL ? "" : "/", 830 ldbp -> dme = NULL ? "" :dbp->dname); 831 i( t == 0) 832 t = EINVAL ; 834 `TAILQ_INIT (& dbv -> dbli ); 835 i(( t_t = `__mux_ ( dbv , &dbv-> mtx_dbli )!0 && t == 0) 836 t = t_t ; 837 i(( t_t = `__mux_ ( dbv , &dbv-> mtx_mt )!0 && t == 0) 838 t = t_t ; 840 i( dbv -> mt ! NULL ) { 841 `__os_ ( dbv , dbv-> mt ); 842 dbv -> mt = NULL ; 845 i( `MPOOL_ON ( dbv )) { 854 i( `F_ISSET ( dbv , DB_ENV_PRIVATE ) && 855 ( t_t = `__memp_sync_t ( dbv , NULL , 0, 856 DB_SYNC_CACHE | DB_SYNC_SUPPRESS_WRITE , NULL , NULL)) != 0 && 857 t == 0) 858 t = t_t ; 860 i(( t_t = `__memp_v_esh ( dbv )!0 && t == 0) 861 t = t_t ; 875 i( p_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 876 t = t_t ; 883 i( `REP_ON ( dbv ) && 884 ( t_t = `__p_v_esh ( dbv )!0 && t == 0) 885 t = t_t ; 887 #ifde HAVE_CRYPTO 892 i(( t_t = `__yo_v_esh ( dbv )!0 && t == 0) 893 t = t_t ; 900 i( dbv -> thr_hashb ! NULL && 901 ( t_t = `__v_t_e ( dbv , & , THREAD_OUT )!0 && t == 0) 902 t = t_t ; 929 i(( t_t = `__v_f_deemt ( dbv )!0 && t == 0) 930 t = t_t ; 932 #ifde HAVE_MUTEX_SUPPORT 933 i( `MUTEX_ON ( dbv ) && 934 ( t_t = `__mux_v_esh ( dbv )!0 && t == 0) 935 t = t_t ; 938 i( dbv -> gfo ! NULL && ( t_t = `__v_dach ( 939 dbv , `F_ISSET (dbv, DB_ENV_PRIVATE ? 1 : 0)!0 && t == 0) { 940 t = t_t ; 949 i( dbv -> mux_iq ! NULL ) { 950 `__os_ ( dbv , dbv-> mux_iq ); 951 dbv -> mux_iq = NULL ; 954 i( dbv -> cov_db ! NULL ) { 955 `__os_ ( dbv , dbv-> cov_db ); 956 dbv -> cov_db = NULL ; 957 dbv -> cov_db_size = 0; 960 dbv -> ags = ig_ags ; 962 ( t ); 963 } } 971 $__fe_hd_nup ( dbv ) 972 DB_ENV * dbv ; 974 DB_FH * fhp ; 976 i( `TAILQ_FIRST (& dbv -> fdli = NULL ) 979 `__db_rx ( dbv , "File handles still opentnvironment close"); 980 ( fhp = `TAILQ_FIRST (& dbv -> fdli )! NULL ) { 981 `__db_rx ( dbv , "Ofhd: %s", fhp -> me ); 982 () `__os_ohd ( dbv , fhp ); 984 ( EINVAL ); 985 } } 994 $__v_g_ݒ_ags ( dbv , ag ) 995 DB_ENV * dbv ; 996 u_t32_t * ag ; 998 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->get_open_flags"); 1000 * ag = dbv -> ݒ_ags ; 1002 } } @../env/env_recover.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/f.h " 14 ~"dbc/b.h " 15 ~"dbc/hash.h " 16 ~"dbc/log.h " 17 ~"dbc/mp.h " 18 ~"dbc/qam.h " 19 ~"dbc/txn.h " 21 #ide lt 22 cڡ gcyright [] = 26 __db_log_cru __P (( DB_ENV *, DB_LSN *)); 27 __v__c_42 __P (( DB_ENV *)); 28 __v__c_43 __P (( DB_ENV *)); 29 __v__c_46 __P (( DB_ENV *)); 30 __log_ __P (( DB_ENV *, DB_LOGC *, t32_t *, DB_LSN *)); 32 #ide HAVE_BREW 33 __l_diff __P (( DB_LSN *, DB_LSN *, DB_LSN *, u_t32_t , )); 46 $__db_ec ( dbv , max_l , un , upde , ags ) 47 DB_ENV * dbv ; 48 DB_LSN * max_l , * un ; 49 upde ; 50 u_t32_t ags ; 52 DBT da ; 53 DB_LOGC * logc ; 54 DB_LSN ckp_l , f_l , ϡ_l , lowl , l , _l , ; 55 DB_TXNHEAD * txnfo ; 56 DB_TXNREGION * gi ; 57 REGENV * nv ; 58 REGINFO * f ; 59 __txn_ckp_gs * ckp_gs ; 60 time_t now , ow ; 61 nfes ; 62 u_t32_t hi_txn , log_size , txnid ; 63 t32_t low ; 64 have_c , ogss , t , t_t ; 65 * p , * ss ; 66 t1 [ CTIME_BUFLEN ], t2 [CTIME_BUFLEN], time_buf [CTIME_BUFLEN]; 68 `COMPQUIET ( nfes , ()0.001); 70 logc = NULL ; 71 ckp_gs = NULL ; 72 hi_txn = TXN_MAXIMUM ; 73 txnfo = NULL ; 74 ss = "initial"; 75 `ZERO_LSN ( l ); 82 log_size = (( LOG *) dbv -> lg_hd -> gfo . imy )->log_size; 87 i( upde && `REP_ON ( dbv )) { 88 f = dbv -> gfo ; 89 nv = f -> imy ; 90 () `time (& nv -> p_timeamp ); 94 `F_SET ( dbv -> lg_hd , DBLOG_RECOVER ); 95 gi = dbv -> tx_hd -> gfo . imy ; 96 `F_SET ( gi , TXN_IN_RECOVERY ); 99 i(( t = `__log_curs ( dbv , & logc )) != 0) 100 r ; 106 `ZERO_LSN ( lowl ); 107 i( max_l ! NULL ) { 108 i(( t = `__log_backup ( dbv , logc , max_l , & lowl , 109 CKPLSN_CMP )) != 0) 110 r ; 111 } i( dbv -> tx_timeamp != 0) { 112 i(( t = `__log_ ( dbv , logc , & low , & lowl )) != 0) 113 r ; 114 i(( t32_t ) dbv -> tx_timeamp < low ) { 115 t1 [(t1) - 1] = '\0'; 116 () `y ( t1 , `__db_ime ( 117 & dbv -> tx_timeamp , time_buf ), ( t1 ) - 1); 118 i(( p = `rchr ( t1 , '\n')! NULL ) 119 * p = '\0'; 121 t2 [(t2) - 1] = '\0'; 122 ow = ( time_t ) low ; 123 () `y ( t2 , `__db_ime ( 124 & ow , time_buf ), ( t2 ) - 1); 125 i(( p = `rchr ( t2 , '\n')! NULL ) 126 * p = '\0'; 128 `__db_rx ( dbv , 130 t1 , t2 ); 131 t = EINVAL ; 132 r ; 205 #ifde UMRW 206 `ZERO_LSN ( ϡ_l ); 208 `memt (& da , 0, (data)); 209 i(( t = `__logc_g ( logc , & ϡ_l , & da , DB_LAST )) != 0) { 210 i( t = DB_NOTFOUND ) 211 t = 0; 213 `__db_rx ( dbv , "Lastogecordot found"); 214 r ; 219 `memy (& txnid , 220 ( u_t8_t *) da .d+ ( u_t32_t ), ( txnid )); 222 i( txnid != 0) 224 } ( t = `__logc_g ( logc , & l , & da , DB_PREV )) == 0); 232 i( t = DB_NOTFOUND ) 233 t = 0; 234 i( t != 0) 235 r ; 237 hi_txn = txnid ; 254 i(( t = `__logc_g ( logc , & ckp_l , & da , DB_FIRST )) != 0) { 255 i( t = DB_NOTFOUND ) 256 t = 0; 258 `__db_rx ( dbv , "Firstogecordot found"); 259 r ; 261 f_l = ckp_l ; 262 have_c = 1; 264 i(! `LF_ISSET ( DB_RECOVER_FATAL )) { 265 i(( t = `__txn_gckp ( dbv , & ckp_l )) == 0 && 266 ( t = `__logc_g ( logc , & ckp_l , & da , DB_SET )) == 0) { 268 i(( t = `__txn_ckp_ad ( dbv , 269 da .da, & ckp_gs )) != 0) { 270 `__db_rx ( dbv , 272 ( u_lg ) ckp_l . fe , 273 ( u_lg ) ckp_l . offt ); 274 r ; 276 f_l = ckp_gs -> ckp_l ; 277 `__os_ ( dbv , ckp_gs ); 278 have_c = 0; 299 i(( dbv -> tx_timeamp !0 || max_l ! NULL ) && 300 `LOG_COMPARE (& lowl , & f_l ) < 0) { 301 `DB_ASSERT ( dbv , have_c == 0); 302 f_l = lowl ; 307 i(! have_c && 308 ( t = `__logc_g ( logc , & f_l , & da , DB_SET )) != 0) { 309 `__db_rx ( dbv , "Checkpoint LSNecord [%ld][%ld]ot found", 310 ( u_lg ) f_l . fe , (u_lg)f_l. offt ); 311 r ; 314 #ide HAVE_BREW 315 i( dbv -> db_edback ! NULL ) { 316 i( ϡ_l . fe = f_l .file) 317 nfes = () 318 ( ϡ_l . offt - f_l .offt/ log_size ; 320 nfes = ()( ϡ_l . fe - f_l .file) + 321 ()(( log_size - f_l . offt ) + 322 ϡ_l . offt / log_size ; 324 i( nfes < 0.001) 325 nfes = 0.001; 330 t = 0; 331 i( hi_txn != 0) do { 333 `memy (& txnid , 334 ( u_t8_t *) da .d+ ( u_t32_t ), ( txnid )); 336 i( txnid != 0) 338 } ( t = `__logc_g ( logc , & l , & da , DB_NEXT )) == 0); 344 i( t = DB_NOTFOUND ) { 345 i( `LOG_COMPARE (& l , & ϡ_l ) != 0) 346 t = `__db_log_cru ( dbv , & l ); 348 t = 0; 352 i( t != 0 || 353 ( t = `__logc_g ( logc , & f_l , & da , DB_SET )) != 0) 354 r ; 357 i(( t = 358 `__db_txi_ ( dbv , txnid , hi_txn , max_l , & txnfo )) != 0) 359 r ; 365 i(( t = `__v_ݒfes ( dbv , logc , 366 txnfo , & da , & f_l , & ϡ_l , nfes , 1)) != 0) 367 r ; 370 i( hi_txn =0 && max_l = NULL ) 371 de ; 380 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_RECOVERY )) 381 `__db_msg ( dbv , "Recovery starting from [%lu][%lu]", 382 ( u_lg ) f_l . fe , (u_lg)f_l. offt ); 384 ss = "backward"; 385 t = `__logc_g ( logc , & l , & da , DB_LAST ); 386 t =0 && `LOG_COMPARE (& l , & f_l ) >= 0; 387 t = `__logc_g ( logc , & l , & da , DB_PREV )) { 388 #ifde HAVE_BREW 389 `COMPQUIET ( ogss , 0); 391 i( dbv -> db_edback ! NULL ) { 392 ogss = 34 + ()(33 * ( `__l_diff (& f_l , 393 & ϡ_l , & l , log_size , 0/ nfes )); 394 dbv -> `db_edback (dbv, DB_RECOVER , ogss ); 397 = l ; 398 t = `__db_dich ( dbv , dbv-> cov_db , 399 dbv -> cov_db_size , & da , & , 400 DB_TXN_BACKWARD_ROLL , txnfo ); 401 i( t != 0) { 402 i( t ! DB_TXN_CKP ) 403 msgr ; 405 t = 0; 408 i( t = DB_NOTFOUND ) { 409 i( `LOG_COMPARE (& l , & f_l ) > 0) 410 t = `__db_log_cru ( dbv , & l ); 412 t = 0; 414 i( t != 0) 415 r ; 427 ss = "forward"; 428 _l = ϡ_l ; 429 i( max_l ! NULL || dbv -> tx_timeamp != 0) 430 _l = (( DB_TXNHEAD *) txnfo )-> maxl ; 432 t = `__logc_g ( logc , & l , & da , DB_NEXT ); 433 t =0; = `__logc_g ( logc , & l , & da , DB_NEXT )) { 434 #ide HAVE_BREW 435 i( dbv -> db_edback ! NULL ) { 436 ogss = 67 + ()(33 * ( `__l_diff (& f_l , 437 & ϡ_l , & l , log_size , 1/ nfes )); 438 dbv -> `db_edback (dbv, DB_RECOVER , ogss ); 441 = l ; 442 t = `__db_dich ( dbv , dbv-> cov_db , 443 dbv -> cov_db_size , & da , & , 444 DB_TXN_FORWARD_ROLL , txnfo ); 445 i( t != 0) { 446 i( t ! DB_TXN_CKP ) 447 msgr ; 449 t = 0; 456 i( `LOG_COMPARE (& l , & _l ) >= 0) 460 i( t = DB_NOTFOUND ) 461 t = `__db_log_cru ( dbv , & l ); 462 i( t != 0) 463 r ; 465 #ide HAVE_FTRUNCATE 470 i(( t = `__db_do_the_limbo ( dbv , NULL , NULL, txnfo , 471 dbv -> tx_timeamp !0 ? LIMBO_TIMESTAMP : LIMBO_RECOVER )) != 0) 472 r ; 475 i( max_l = NULL ) 476 gi -> ϡ_txnid = (( DB_TXNHEAD *) txnfo )-> maxid ; 478 i( dbv -> tx_timeamp != 0) { 480 i( logc ! NULL ) { 481 i(( t = `__logc_o ( logc )) != 0) 482 r ; 483 logc = NULL ; 490 i(( t = `__memp_sync_t ( dbv , NULL , 0, 491 DB_SYNC_CACHE | DB_SYNC_SUPPRESS_WRITE , NULL , NULL)) != 0) 492 r ; 493 gi -> ϡ_ckp = (( DB_TXNHEAD *) txnfo )-> ck ; 494 i(( t = `__log_vun ( dbv , 495 &(( DB_TXNHEAD *) txnfo )-> maxl , 496 &(( DB_TXNHEAD *) txnfo )-> ck , un )) != 0) 497 r ; 499 #ide HAVE_FTRUNCATE 507 i(( t = `__db_do_the_limbo ( dbv , 508 NULL , NULL, txnfo , LIMBO_COMPENSATE )) != 0) 509 r ; 513 de : 515 i(! `IS_REP_CLIENT ( dbv && ( t = `__txn_checkpot (dbenv, 0, 0, 516 DB_CKP_INTERNAL | DB_FORCE )) != 0) { 523 i( max_l = NULL && t = ENOSPC ) 524 t = 0; 526 r ; 529 i( gi -> . _ees == 0) { 531 i(( t = `__dbg_o_fes ( dbv , 0)) != 0) 532 r ; 534 i(( t = `__dbg_mk_ed ( dbv )) != 0) 535 r ; 536 `F_SET ( dbv -> lg_hd , DBLOG_OPENFILES ); 539 i( max_l ! NULL ) { 540 i(! `IS_ZERO_LSN ((( DB_TXNHEAD *) txnfo )-> ck )) 541 gi -> ϡ_ckp = (( DB_TXNHEAD *) txnfo )-> ck ; 542 i(( t = 543 `__txn_fdϡckp ( dbv , & gi -> ϡ_ckp , max_l )) != 0) 544 r ; 547 i( logc ! NULL && ( t = `__logc_o (logc)) != 0) 548 r ; 549 logc = NULL ; 550 i(( t = `__log_vun ( dbv , 551 max_l , &(( DB_TXNHEAD *) txnfo )-> ck , un )) != 0) 552 r ; 560 i(( t = `__log_curs ( dbv , & logc )) != 0) 561 r ; 562 i(( t = 563 `__logc_g ( logc , & f_l , & da , DB_FIRST )) != 0) { 564 i( t = DB_NOTFOUND ) 565 t = 0; 567 `__db_rx ( dbv , "Firstogecordot found"); 568 r ; 570 i(( t = `__txn_gckp ( dbv , & f_l )) == 0 && 571 ( t = `__logc_g ( logc , & f_l , & da , DB_SET )) == 0) { 573 i(( t = `__txn_ckp_ad ( dbv , 574 da .da, & ckp_gs )) != 0) { 575 `__db_rx ( dbv , 577 ( u_lg ) f_l . fe , 578 ( u_lg ) f_l . offt ); 579 r ; 581 f_l = ckp_gs -> ckp_l ; 582 `__os_ ( dbv , ckp_gs ); 584 i(( t = `__logc_g ( logc , & f_l , & da , DB_SET )) != 0) 585 r ; 586 i(( t = `__v_ݒfes ( dbv , logc , 587 txnfo , & da , & f_l , max_l , nfes , 1)) != 0) 588 r ; 589 } i( gi -> . _ees == 0) { 594 i(( t = `__txn_t ( dbv )) != 0) 595 r ; 597 i(( t = `__txn_cye_id ( dbv )) != 0) 598 r ; 606 i( max_l = NULL && dbv -> tx_timeamp == 0) { 608 i( logc ! NULL && ( t = `__logc_o (logc)) != 0) 609 r ; 610 logc = NULL ; 613 i(( t = 614 `__log_cut_l ( dbv , & ϡ_l , NULL , NULL)) != 0) 615 r ; 616 i(( t = `__log_vun ( dbv , 617 & ϡ_l , & gi -> ϡ_ckp , NULL )) != 0) 618 r ; 621 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_RECOVERY )) { 622 () `time (& now ); 623 `__db_msg ( dbv , 624 "Recovy com %.24s", `__db_ime (& now , time_buf )); 625 `__db_msg ( dbv , "%s %lx %s [%lu][%lu]", 627 ( u_lg )( txnfo = NULL ? 628 TXN_MINIMUM : (( DB_TXNHEAD *) txnfo )-> maxid ), 630 ( u_lg ) gi -> ϡ_ckp . fe , 631 ( u_lg ) gi -> ϡ_ckp . offt ); 635 msgr : `__db_rx ( dbv , 637 ( u_lg ) l . fe , (u_lg. offt , ss ); 640 r : i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 641 t = t_t ; 643 i( txnfo ! NULL ) 644 `__db_txi_d ( dbv , txnfo ); 646 dbv -> tx_timeamp = 0; 648 `F_CLR ( dbv -> lg_hd , DBLOG_RECOVER ); 649 `F_CLR ( gi , TXN_IN_RECOVERY ); 651 ( t ); 652 } } 654 #ide HAVE_BREW 662 $__l_diff ( low , high , cut , max , is_fwd ) 663 DB_LSN * low , * high , * cut ; 664 u_t32_t max ; 665 is_fwd ; 667 nf ; 676 i( is_fwd ) { 677 i( cut -> fe = low ->file) 678 nf = ()( cut -> offt - low ->offt/ max ; 679 i( cut -> offt < low ->offset) 680 nf = ()(( cut -> fe - low ->file) - 1) + 681 ()(( max - low -> offt + cut ->offset) / 682 max ; 684 nf = ()( cut -> fe - low ->file) + 685 ()( cut -> offt - low ->offt/ max ; 687 i( cut -> fe = high ->file) 688 nf = ()( high -> offt - cut ->offt/ max ; 689 i( cut -> offt > high ->offset) 690 nf = ()(( high -> fe - cut ->file) - 1) + 692 (( max - cut -> offt + high ->offset) / max; 694 nf = ()( high -> fe - cut ->file) + 695 ()( high -> offt - cut ->offt/ max ; 697 ( nf ); 698 } } 714 $__log_backup ( dbv , logc , max_l , t_l , cmp ) 715 DB_ENV * dbv ; 716 DB_LOGC * logc ; 717 DB_LSN * max_l , * t_l ; 718 u_t32_t cmp ; 720 DB_LSN cmp_l , l ; 721 DBT da ; 722 __txn_ckp_gs * ckp_gs ; 723 lcmp , t ; 725 `memt (& da , 0, (data)); 726 ckp_gs = NULL ; 728 i( cmp ! CKPLSN_CMP && cm! LASTCKP_CMP ) 729 ( EINVAL ); 731 i(( t = `__txn_gckp ( dbv , & l )) != 0) 732 r ; 737 ( t = `__logc_g ( logc , & l , & da , DB_SET )) == 0) { 738 i(( t = `__txn_ckp_ad ( dbv , da .da, & ckp_gs )) != 0) 739 ( t ); 740 i( cmp = CKPLSN_CMP ) { 746 cmp_l = ckp_gs -> ckp_l ; 747 lcmp = ( `LOG_COMPARE (& cmp_l , max_l ) <= 0); 754 cmp_l = l ; 755 lcmp = ( `LOG_COMPARE (& cmp_l , max_l ) < 0); 757 i( lcmp ) { 758 * t_l = cmp_l ; 762 l = ckp_gs -> ϡ_ckp ; 767 i( `IS_ZERO_LSN ( l )) { 768 t = DB_NOTFOUND ; 771 `__os_ ( dbv , ckp_gs ); 772 ckp_gs = NULL ; 775 i( ckp_gs ! NULL ) 776 `__os_ ( dbv , ckp_gs ); 782 r : i( `IS_ZERO_LSN (* t_l && cmp = CKPLSN_CMP && 783 ( t =0 || = DB_NOTFOUND )) 784 t = `__logc_g ( logc , t_l , & da , DB_FIRST ); 785 ( t ); 786 } } 796 $__log_ ( dbv , logc , lowtime , lowl ) 797 DB_ENV * dbv ; 798 DB_LOGC * logc ; 799 t32_t * lowtime ; 800 DB_LSN * lowl ; 802 DB_LSN f_l , l ; 803 DBT da ; 804 __txn_ckp_gs * ckrgs ; 805 u_t32_t y ; 806 cmp , t ; 808 `memt (& da , 0, (data)); 814 t = `__logc_g ( logc , & f_l , & da , DB_FIRST ); 815 t =0; = `__logc_g ( logc , & l , & da , DB_NEXT )) { 816 `memy (& y , da .data, (rectype)); 817 i( y ! DB___txn_ckp ) 819 i(( t = `__txn_ckp_ad ( dbv , da .da, & ckrgs )) == 0) { 820 cmp = `LOG_COMPARE (& ckrgs -> ckp_l , & f_l ); 821 * lowl = ckrgs -> ckp_l ; 822 * lowtime = ckrgs -> timeamp ; 824 `__os_ ( dbv , ckrgs ); 825 i( cmp >= 0) 830 ( t ); 831 } } 850 $__v_ݒfes ( dbv , logc , txnfo , 851 da , ݒ_l , ϡ_l , nfes , _covy ) 852 DB_ENV * dbv ; 853 DB_LOGC * logc ; 854 * txnfo ; 855 DBT * da ; 856 DB_LSN * ݒ_l , * ϡ_l ; 857 _covy ; 858 nfes ; 860 DB_LSN l , ; 861 u_t32_t log_size ; 862 ogss , t ; 869 log_size = (( LOG *) dbv -> lg_hd -> gfo . imy )->log_size; 871 l = * ݒ_l ; 873 #ifde HAVE_BREW 874 `COMPQUIET ( nfes , ()0.001); 875 `COMPQUIET ( ogss , 0); 877 i( _covy && dbv -> db_edback ! NULL ) { 878 `DB_ASSERT ( dbv , ϡ_l ! NULL ); 879 ogss = ()(33 * ( `__l_diff ( ݒ_l , 880 ϡ_l , & l , log_size , 1/ nfes )); 881 dbv -> `db_edback (dbv, DB_RECOVER , ogss ); 884 = l ; 885 t = `__db_dich ( dbv , 886 dbv -> cov_db , dbv-> cov_db_size , da , & , 887 _covy ? DB_TXN_OPENFILES : DB_TXN_POPENFILES , 888 txnfo ); 889 i( t !0 && ! DB_TXN_CKP ) { 890 `__db_rx ( dbv , 892 ( u_lg ) l . fe , (u_lg. offt ); 895 i(( t = `__logc_g ( logc , & l , da , DB_NEXT )) != 0) { 896 i( t = DB_NOTFOUND ) { 897 i( ϡ_l ! NULL && 898 `LOG_COMPARE (& l , ϡ_l ) != 0) 899 t = `__db_log_cru ( dbv , & l ); 901 t = 0; 907 ( t ); 908 } } 911 $__db_log_cru ( dbv , lp ) 912 DB_ENV * dbv ; 913 DB_LSN * lp ; 915 `__db_rx ( dbv , "Log file corruptt LSN: [%lu][%lu]", 916 ( u_lg ) lp -> fe , (u_lgp-> offt ); 917 ( EINVAL ); 918 } } 926 $__v__c ( dbv , vsi ) 927 DB_ENV * dbv ; 928 u_t32_t vsi ; 930 t ; 937 i(( t = `__v__c_46 ( dbv )) != 0) 938 ( t ); 939 t = 0; 940 vsi ) { 948 DB_LOGVERSION_46 : 949 DB_LOGVERSION_45 : 950 DB_LOGVERSION_44 : 952 DB_LOGVERSION_43 : 953 t = `__v__c_43 ( dbv ); 955 DB_LOGVERSION_42 : 956 t = `__v__c_42 ( dbv ); 959 `__db_rx ( dbv , "Unknowvsi %lu", ( u_lg ) vsi ); 960 t = EINVAL ; 963 ( t ); 964 } } 967 $__v__c_42 ( dbv ) 968 DB_ENV * dbv ; 970 t ; 972 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 973 & dbv -> cov_db_size , __db_lk_42_cov , 974 DB___db_lk_42 )) != 0) 975 r ; 976 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 977 & dbv -> cov_db_size , __db_pg_loc_42_cov , 978 DB___db_pg_loc_42 )) != 0) 979 r ; 980 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 981 & dbv -> cov_db_size , __db_pg__42_cov , 982 DB___db_pg__42 )) != 0) 983 r ; 984 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 985 & dbv -> cov_db_size , __db_pg_da_42_cov , 986 DB___db_pg_da_42 )) != 0) 987 r ; 988 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 989 & dbv -> cov_db_size , __ham_magroup_42_cov , 990 DB___ham_magroup_42 )) != 0) 991 r ; 992 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 993 & dbv -> cov_db_size , __ham_grouoc_42_cov , 994 DB___ham_grouoc_42 )) != 0) 995 r ; 996 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 997 & dbv -> cov_db_size , __txn_ckp_42_cov , 998 DB___txn_ckp_42 )) != 0) 999 r ; 1000 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 1001 & dbv -> cov_db_size , __txn_g_42_cov , 1002 DB___txn_g_42 )) != 0) 1003 r ; 1004 r : 1005 ( t ); 1006 } } 1009 $__v__c_43 ( dbv ) 1010 DB_ENV * dbv ; 1012 t ; 1014 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 1015 & dbv -> cov_db_size , __bam_lk_43_cov , 1016 DB___bam_lk_43 )) != 0) 1017 r ; 1021 i(( t = `__db_add_covy ( dbv , &dbv-> cov_db , 1022 & dbv -> cov_db_size , __txn_g_42_cov , 1023 DB___txn_g_42 )) != 0) 1024 r ; 1025 r : 1026 ( t ); 1027 } } 1034 $__v__c_46 ( dbv ) 1035 DB_ENV * dbv ; 1037 t ; 1039 i(( t = `__bam__cov ( dbv , &dbv-> cov_db , 1040 & dbv -> cov_db_size )) != 0) 1041 r ; 1042 i(( t = `__d__cov ( dbv , &dbv-> cov_db , 1043 & dbv -> cov_db_size )) != 0) 1044 r ; 1045 i(( t = `__db__cov ( dbv , &dbv-> cov_db , 1046 & dbv -> cov_db_size )) != 0) 1047 r ; 1048 i(( t = `__dbg__cov ( dbv , &dbv-> cov_db , 1049 & dbv -> cov_db_size )) != 0) 1050 r ; 1051 i(( t = `__f__cov ( dbv , &dbv-> cov_db , 1052 & dbv -> cov_db_size )) != 0) 1053 r ; 1054 i(( t = `__ham__cov ( dbv , &dbv-> cov_db , 1055 & dbv -> cov_db_size )) != 0) 1056 r ; 1057 i(( t = `__qam__cov ( dbv , &dbv-> cov_db , 1058 & dbv -> cov_db_size )) != 0) 1059 r ; 1060 i(( t = `__txn__cov ( dbv , &dbv-> cov_db , 1061 & dbv -> cov_db_size )) != 0) 1062 r ; 1063 r : 1064 ( t ); 1065 } } @../env/env_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 14 __v_des_deroy __P (( DB_ENV *, REGION *)); 15 __v_des_g __P (( DB_ENV *, REGINFO *, REGINFO *, REGION **)); 16 __v_umem __P (( DB_ENV *, *, size_t , )); 17 __v_move_fe __P (( DB_ENV *)); 26 $__v_ch ( dbv , _ag , _ok , y_ok ) 27 DB_ENV * dbv ; 28 u_t32_t * _ag ; 29 _ok , y_ok ; 31 REGENV * nv ; 32 REGENV_REF f ; 33 REGINFO * f ; 34 REGION * , egi ; 35 size_t w , s , size ; 36 u_t32_t bys , i , mbys , egis ; 37 u_t y_t ; 38 majv , mv , tchv , t , gid ; 39 buf [( DB_REGION_FMT ) + 20]; 42 y_t = 0; 45 lo : nv = NULL ; 48 i(( t = `__os_oc ( dbv , 1, ( REGINFO ), & f )) != 0) 49 ( t ); 50 f -> dbv = dbenv; 51 f -> ty = REGION_TYPE_ENV ; 52 f -> id = REGION_ID_ENV ; 53 f -> ags = REGION_JOIN_OK ; 54 i( _ok ) 55 `F_SET ( f , REGION_CREATE_OK ); 68 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 69 i(( t = `__os_rdup ( dbv , 70 "oss-ive", & f -> me )) != 0) 71 r ; 72 ti ; 76 () `tf ( buf , (buf), "%s", DB_REGION_ENV ); 77 i(( t = `__db_ame ( dbv , 78 DB_APP_NONE , buf , 0, NULL , & f -> me )) != 0) 79 r ; 89 i( _ok ) { 90 i(( t = `__os_ݒ ( dbv , f -> me , 0, 91 DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_REGION , 92 dbv -> db_mode , &dbv-> lockfhp )) == 0) 93 ti ; 94 i( t ! EEXIST ) { 95 `__db_r ( dbv , t , "%s", f -> me ); 96 r ; 104 i(( t = `__os_ݒ ( 105 dbv , f -> me , 0, DB_OSO_REGION , 0, &dbv-> lockfhp )) != 0) 106 r ; 109 `F_CLR ( f , REGION_CREATE_OK ); 140 i(( t = `__os_iofo ( dbv , f -> me , 141 dbv -> lockfhp , & mbys , & bys , NULL )) != 0) { 142 `__db_r ( dbv , t , "%s", f -> me ); 143 r ; 151 size = mbys * MEGABYTE + bys ; 162 i( size <( f )) { 163 i( size !( f )) 164 y ; 166 i(( t = `__os_ad ( dbv , dbv-> lockfhp , & f , 167 ( f ), & w )!0 ||rw < ( size_t )(ref)) { 168 i( t == 0) 169 t = EIO ; 170 `__db_r ( dbv , t , 172 f -> me ); 173 r ; 175 size = f .size; 176 gid = f .segid; 178 `F_SET ( dbv , DB_ENV_SYSTEM_MEM ); 179 } i( `F_ISSET ( dbv , DB_ENV_SYSTEM_MEM )) { 180 t = EINVAL ; 181 `__db_r ( dbv , t , 183 f -> me ); 184 r ; 186 gid = INVALID_REGION_SEGID ; 188 #ide HAVE_MUTEX_FCNTL 194 () `__os_ohd ( dbv , dbv-> lockfhp ); 195 dbv -> lockfhp = NULL ; 199 `memt (& egi , 0, (tregion)); 200 egi . size = ( roff_t )size; 201 egi . gid = segid; 202 i(( t = `__os_r_ch ( dbv , f , & egi )) != 0) 203 r ; 212 f -> imy = inf-> addr ; 213 f -> addr = ( u_t8_t *)f->add+ ( REGENV ); 214 nv = f -> imy ; 220 i( nv -> majv ! DB_VERSION_MAJOR || 221 nv -> mv ! DB_VERSION_MINOR ) { 222 i( nv -> majv !0 ||v-> mv != 0) { 223 `__db_rx ( dbv , 225 DB_VERSION_MAJOR , DB_VERSION_MINOR , 226 nv -> majv ,v-> mv ); 227 t = DB_VERSION_MISMATCH ; 229 t = EINVAL ; 230 r ; 247 i( nv -> nic && ! `F_ISSET ( dbv , DB_ENV_NOPANIC )) { 248 t = `__db_nic_msg ( dbv ); 249 r ; 251 i( nv -> magic ! DB_REGION_MAGIC ) 252 y ; 258 i(( t = `__v_des_g ( dbv , f , inf, & )!0 ||= NULL ) 259 fd_r ; 260 f -> =p; 270 i( -> size != size) 271 y ; 279 i( _ag ! NULL ) { 280 `FLD_CLR (* _ag , nv -> _ags ); 281 i(* _ag != 0) { 282 `__db_rx ( dbv , 284 t = EINVAL ; 285 r ; 287 * _ag = nv -> _ags ; 294 () `__v_umem ( dbv , f -> imy , -> size , 0); 297 dbv -> gfo = f ; 300 ti : 302 `F_SET ( f , REGION_CREATE ); 316 `memt (& egi , 0, (tregion)); 317 egis = `__memp_max_gis ( dbv ) + 10; 318 s = egis * ( REGION ); 319 s + dbv -> sswd_n ; 320 s +( dbv -> thr_max + dbenv->thr_max / 4) * 321 `__v_loc_size (( DB_THREAD_INFO )); 322 s + dbv -> thr_nbuck * `__v_loc_size (( DB_HASHTAB )); 323 s += 16 * 1024; 324 egi . size = s ; 325 egi . gid = INVALID_REGION_SEGID ; 326 i(( t = `__os_r_ch ( dbv , f , & egi )) != 0) 327 r ; 333 () `__v_umem ( dbv , f -> addr , egi . size , 1); 353 f -> imy = inf-> addr ; 354 f -> addr = ( u_t8_t *)f->add+ ( REGENV ); 355 `__v_loc_ ( f , egi . size - ( REGENV )); 361 nv = f -> imy ; 362 nv -> magic = 0; 363 nv -> nic = 0; 365 () `db_vsi (& majv , & mv , & tchv ); 366 nv -> majv = ( u_t32_t )majver; 367 nv -> mv = ( u_t32_t )minver; 368 nv -> tchv = ( u_t32_t )patchver; 370 () `time (& nv -> timeamp ); 371 `__os_unique_id ( dbv , & nv -> vid ); 377 nv -> _ags = ( _ag = NULL ) ? 0 : *init_flagsp; 385 nv -> gi_t = egis ; 386 i(( t = `__v_loc ( f , egis * ( REGION ), & )) != 0) { 387 `__db_r ( 388 dbv , t , "unableo createew masteregionrray"); 389 r ; 391 nv -> gi_off = `R_OFFSET ( f , ); 392 i = 0; i < egis ; ++i, ++ ) 393 -> id = INVALID_REGION_ID ; 395 nv -> ch_off =v-> thad_off =v-> p_off = INVALID_ROFF ; 396 nv -> ags = 0; 397 nv -> _timeamp =v-> p_timeamp = 0; 398 nv -> mtx_gv = MUTEX_INVALID ; 406 i(( t = `__v_des_g ( dbv , f , inf, & )) != 0) { 407 fd_r : `__db_rx ( dbv , "%s: ubˁfdnvmt", f -> me ); 408 i( t == 0) 409 t = EINVAL ; 410 r ; 412 f -> =p; 413 -> size = egi .size; 414 -> gid = egi .segid; 429 i( egi . gid ! INVALID_REGION_SEGID ) { 430 f . size = egi .size; 431 f . gid = egi .segid; 432 i(( t = `__os_wre ( 433 dbv , dbv-> lockfhp , & f , ef), & w )) != 0) { 434 `__db_r ( dbv , t , 436 f -> me ); 437 r ; 441 #ide HAVE_MUTEX_FCNTL 447 i( dbv -> lockfhp ! NULL ) { 448 () `__os_ohd ( dbv , dbv-> lockfhp ); 449 dbv -> lockfhp = NULL ; 454 dbv -> gfo = f ; 457 r : 458 y : 459 i( dbv -> lockfhp ! NULL ) { 460 () `__os_ohd ( dbv , dbv-> lockfhp ); 461 dbv -> lockfhp = NULL ; 471 i( f -> addr ! NULL ) { 472 i( f -> = NULL ) 473 f -> = & egi ; 476 f -> addr = inf-> imy ; 477 () `__os_r_dach ( dbv , 478 f , `F_ISSET (f, REGION_CREATE )); 482 i( f -> me ! NULL ) 483 `__os_ ( dbv , f -> me ); 484 `__os_ ( dbv , f ); 487 i( t == 0) { 488 i(! y_ok || ++ y_t > 3) { 489 `__db_rx ( dbv , "unableo joinhenvironment"); 490 t = EAGAIN ; 492 `__os_p ( dbv , y_t * 3, 0); 493 lo ; 497 ( t ); 498 } } 507 $__v_tu_ ( dbv ) 508 DB_ENV * dbv ; 510 REGENV * nv ; 511 REGINFO * f ; 513 f = dbv -> gfo ; 514 nv = f -> imy ; 517 i(! `F_ISSET ( f , REGION_CREATE )) 524 nv -> magic = DB_REGION_MAGIC ; 527 } } 536 $__v_tu_off ( dbv , ags ) 537 DB_ENV * dbv ; 538 u_t32_t ags ; 540 REGENV * nv ; 541 REGINFO * f ; 542 t , t_t ; 544 t = 0; 552 i( `__v_ch ( dbv , NULL , 0, 1) != 0) 555 f = dbv -> gfo ; 556 nv = f -> imy ; 558 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 572 i( nv -> ft > 0 && ! `LF_ISSET ( DB_FORCE && !nv-> nic ) 573 t = EBUSY ; 575 nv -> nic = 1; 581 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 583 i(( t_t = `__v_dach ( dbv , 0)!0 && t == 0) 584 t = t_t ; 586 ( t ); 587 } } 596 $__v_nic_t ( dbv , ) 597 DB_ENV * dbv ; 598 ; 600 i( dbv ! NULL && dbv-> gfo != NULL) 601 (( REGENV *) 602 (( REGINFO *) dbv -> gfo )-> imy )-> nic = ? 1 : 0; 603 } } 612 $__v_f_emt ( dbv ) 613 DB_ENV * dbv ; 615 REGENV * nv ; 616 REGINFO * f ; 617 t ; 619 f = dbv -> gfo ; 620 nv = f -> imy ; 623 i( `F_ISSET ( f , REGION_CREATE )) { 624 i(( t = `__mux_loc ( 625 dbv , MTX_ENV_REGION , 0, & nv -> mtx_gv )) != 0) 626 ( t ); 627 nv -> ft = 1; 630 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 631 ++ nv -> ft ; 632 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 635 `F_SET ( dbv , DB_ENV_REF_COUNTED ); 637 } } 646 $__v_f_deemt ( dbv ) 647 DB_ENV * dbv ; 649 REGENV * nv ; 650 REGINFO * f ; 653 i(( f = dbv -> gfo = NULL ) 656 nv = f -> imy ; 659 i( `F_ISSET ( dbv , DB_ENV_REF_COUNTED )) { 661 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 662 i( nv -> ft == 0) 663 `__db_rx ( dbv , 666 -- nv -> ft ; 667 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 669 `F_CLR ( dbv , DB_ENV_REF_COUNTED ); 673 ( `F_ISSET ( dbv , DB_ENV_PRIVATE ) ? 674 `__mux_ ( dbv , & nv -> mtx_gv ) : 0); 675 } } 684 $__v_dach ( dbv , deroy ) 685 DB_ENV * dbv ; 686 deroy ; 688 REGENV * nv ; 689 REGINFO * f ; 690 REGION ; 691 t , t_t ; 693 f = dbv -> gfo ; 694 nv = f -> imy ; 695 t = 0; 698 i( dbv -> lockfhp ! NULL ) { 699 i(( t_t = 700 `__os_ohd ( dbv , dbv-> lockfhp )!0 && t == 0) 701 t = t_t ; 702 dbv -> lockfhp = NULL ; 710 i( deroy ) { 719 = * f ->rp; 720 f -> = &rp; 722 i( nv -> gi_off ! INVALID_ROFF ) 723 `__v_loc_ ( 724 f , `R_ADDR (f, nv -> gi_off )); 733 dbv -> gfo = NULL ; 736 f -> addr = inf-> imy ; 738 i(( t_t = `__os_r_dach ( dbv , f , deroy )!0 && t == 0) 739 t = t_t ; 740 i( f -> me ! NULL ) 741 `__os_ ( dbv , f -> me ); 744 `__os_ ( dbv , f ); 746 ( t ); 747 } } 756 $__v_move_v ( dbv ) 757 DB_ENV * dbv ; 759 REGENV * nv ; 760 REGINFO * f , gfo ; 761 REGION * ; 762 u_t32_t ags_ig , i ; 768 ags_ig = `F_ISSET ( dbv , DB_ENV_NOLOCKING | DB_ENV_NOPANIC ); 769 `F_SET ( dbv , DB_ENV_NOLOCKING | DB_ENV_NOPANIC ); 780 i( `__v_ch ( dbv , NULL , 0, 0) != 0) 781 mfes ; 783 f = dbv -> gfo ; 784 nv = f -> imy ; 789 nv -> nic = 1; 798 = `R_ADDR ( f , nv -> gi_off ), 799 i = 0; i < nv -> gi_t ; ++i, ++ ) { 800 i( -> id = INVALID_REGION_ID ||p-> ty = REGION_TYPE_ENV ) 809 `memt (& gfo , 0, (reginfo)); 810 gfo . id = ->id; 811 gfo . ags = REGION_CREATE_OK ; 818 i( `__v_gi_ch ( dbv , & gfo , 0) != 0) 821 #ifde HAVE_MUTEX_SYSTEM_RESOURCES 826 i( gfo . ty = REGION_TYPE_MUTEX ) 827 `__mux_sour_tu ( dbv , & gfo ); 829 () `__v_gi_dach ( dbv , & gfo , 1); 833 () `__v_dach ( dbv , 1); 835 mfes : 840 `__v_move_fe ( dbv ); 842 `F_CLR ( dbv , DB_ENV_NOLOCKING | DB_ENV_NOPANIC ); 843 `F_SET ( dbv , ags_ig ); 846 } } 853 $__v_move_fe ( dbv ) 854 DB_ENV * dbv ; 856 t , ft , ϡrm , t ; 857 cڡ * d ; 858 ved_ch , * p , ** mes , * th , buf [( DB_REGION_FMT ) + 20]; 861 () `tf ( buf , (buf), "%s", DB_REGION_ENV ); 862 i(( t = `__db_ame ( dbv , DB_APP_NONE , buf , 0, NULL , & th )) != 0) 866 i(( p = `__db_h ( th )= NULL ) { 867 p = th ; 868 ved_ch = * p ; 870 d = PATH_DOT ; 872 ved_ch = * p ; 873 * p = '\0'; 875 d = th ; 879 i(( t = `__os_dli ( dbv , d , & mes , & ft )) != 0) 880 `__db_r ( dbv , t , "%s", d ); 883 * p = ved_ch ; 884 `__os_ ( dbv , th ); 886 i( t != 0) 892 ϡrm = -1, t = ft ; --cnt >= 0;) { 894 i( `cmp ( mes [ t ], 895 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1)) 899 i( `cmp ( mes [ t ], "__dbq.", 6) == 0) 903 i( `cmp ( mes [ t ], "__db.register", 13) == 0) 907 i( `cmp ( mes [ t ], "__db.rep", 8) == 0) 914 i( `rcmp ( mes [ t ], DB_REGION_ENV ) == 0) { 915 ϡrm = t ; 920 i( `__db_ame ( dbv , 921 DB_APP_NONE , mes [ t ], 0, NULL , & th ) == 0) { 931 i( `F_ISSET ( dbv , DB_ENV_OVERWRITE ) && 932 ` ( mes [ t ]= DB_REGION_NAME_LENGTH ) 933 () `__db_fe_mui_wre ( dbv , th ); 934 () `__os_uƚk ( dbv , th ); 935 `__os_ ( dbv , th ); 939 i( ϡrm != -1) 940 i( `__db_ame ( dbv , 941 DB_APP_NONE , mes [ ϡrm ], 0, NULL , & th ) == 0) { 942 i( `F_ISSET ( dbv , DB_ENV_OVERWRITE )) 943 () `__db_fe_mui_wre ( dbv , th ); 944 () `__os_uƚk ( dbv , th ); 945 `__os_ ( dbv , th ); 947 `__os_d ( dbv , mes , ft ); 948 } } 957 $__v_gi_ch ( dbv , f , size ) 958 DB_ENV * dbv ; 959 REGINFO * f ; 960 size_t size ; 962 REGION * ; 963 t ; 964 buf [( DB_REGION_FMT ) + 20]; 970 `F_CLR ( f , REGION_CREATE ); 971 i(( t = `__v_des_g ( dbv , dbv-> gfo , f , & )) != 0) 972 ( t ); 973 f -> dbv = dbenv; 974 f -> =p; 975 f -> ty = ->type; 976 f -> id = ->id; 982 i( `F_ISSET ( f , REGION_CREATE )) 983 -> size = ( roff_t )size; 986 () `tf ( buf , (buf), DB_REGION_FMT , f -> id ); 987 i(( t = `__db_ame ( dbv , 988 DB_APP_NONE , buf , 0, NULL , & f -> me )) != 0) 989 r ; 990 i(( t = `__os_r_ch ( dbv , f , )) != 0) 991 r ; 998 () `__v_umem ( dbv , 999 f -> addr , -> size , `F_ISSET (f, REGION_CREATE )); 1009 i( `F_ISSET ( f , REGION_CREATE )) 1010 `__v_loc_ ( f , -> size ); 1014 r : 1015 i( f -> addr ! NULL ) 1016 () `__os_r_dach ( dbv , 1017 f , `F_ISSET (f, REGION_CREATE )); 1018 f -> = NULL ; 1019 f -> id = INVALID_REGION_ID ; 1022 i( `F_ISSET ( f , REGION_CREATE )) { 1023 `__v_des_deroy ( dbv , ); 1024 `F_CLR ( f , REGION_CREATE ); 1027 ( t ); 1028 } } 1037 $__v_gi_dach ( dbv , f , deroy ) 1038 DB_ENV * dbv ; 1039 REGINFO * f ; 1040 deroy ; 1042 REGION * ; 1043 t ; 1045 = f ->rp; 1046 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) 1047 deroy = 1; 1055 i( `F_ISSET ( dbv , DB_ENV_PRIVATE && f -> imy ! NULL ) 1056 `__v_loc_ ( f , inf-> imy ); 1059 t = `__os_r_dach ( dbv , f , deroy ); 1062 i( deroy ) 1063 `__v_des_deroy ( dbv , ); 1066 i( f -> me ! NULL ) 1067 `__os_ ( dbv , f -> me ); 1069 ( t ); 1070 } } 1078 $__v_des_g ( dbv , v_f , f , p ) 1079 DB_ENV * dbv ; 1080 REGINFO * v_f , * f ; 1081 REGION ** p ; 1083 REGENV * nv ; 1084 REGION * , * emy_ , * f_ty ; 1085 u_t32_t i , maxid ; 1087 * p = NULL ; 1088 nv = v_f -> imy ; 1102 maxid = REGION_ID_ENV ; 1103 emy_ = f_ty = NULL ; 1104 = `R_ADDR ( v_f , nv -> gi_off ), 1105 i = 0; i < nv -> gi_t ; ++i, ++ ) { 1106 i( -> id = INVALID_REGION_ID ) { 1107 i( emy_ = NULL ) 1108 emy_ = ; 1111 i( f -> id ! INVALID_REGION_ID ) { 1112 i( f -> id = ->id) 1116 i( f -> ty = ->type && 1117 `F_ISSET ( f , REGION_JOIN_OK ) && 1118 ( f_ty = NULL || f_ty-> id > ->id)) 1119 f_ty = ; 1121 i( -> id > maxid ) 1122 maxid = -> id ; 1126 i( i > nv -> gi_t ) 1127 = f_ty ; 1128 i( ! NULL ) { 1129 * p = ; 1137 i(! `F_ISSET ( f , REGION_CREATE_OK )) 1138 ( ENOENT ); 1144 i( emy_ = NULL ) { 1145 `__db_rx ( dbv , "nooomemaining fordditional REGIONs"); 1146 ( ENOENT ); 1153 `memt ( emy_ , 0, ( REGION )); 1154 emy_ -> gid = INVALID_REGION_SEGID ; 1160 emy_ -> ty = f ->type; 1161 emy_ -> id = f ->id = INVALID_REGION_ID ? maxid + 1 : infop->id; 1163 `F_SET ( f , REGION_CREATE ); 1165 * p = emy_ ; 1167 } } 1174 $__v_des_deroy ( dbv , ) 1175 DB_ENV * dbv ; 1176 REGION * ; 1178 `COMPQUIET ( dbv , NULL ); 1180 -> id = INVALID_REGION_ID ; 1181 } } 1188 $__v_umem ( dbv , addr , size , d ) 1189 DB_ENV * dbv ; 1190 * addr ; 1191 size_t size ; 1192 d ; 1194 t ; 1195 u_t8_t * p , * t ; 1198 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) 1216 t = 0; 1217 i( `F_ISSET ( dbv , DB_ENV_REGION_INIT )) { 1218 i( d ) 1219 p = addr , 1220 t = ( u_t8_t *) addr + size ; p <; += 512) 1221 p [0] = 0xdb; 1223 p = addr , 1224 t = ( u_t8_t *) addr + size ; p <; += 512) 1225 t | p [0]; 1228 ( t ); 1229 } } @../env/env_register.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #REGISTER_FILE "__db.gi" ) 15 #PID_EMPTY "X 0\n" ) 16 #PID_FMT "%24lu\n" ) 18 #PID_ISEMPTY ( p ( `memcmp , PID_EMPTY , PID_LEN =0) ) 19 #PID_LEN (25 ) 21 #REGISTRY_LOCK ( dbv , pos , nowa ) \ 22 `__os_fdlock ( dbv , (dbv)-> giry , ( off_t )( pos ), 1, nowa ) ) 23 #REGISTRY_UNLOCK ( dbv , pos ) \ 24 `__os_fdlock ( dbv , (dbv)-> giry , ( off_t )( pos ), 0, 0) ) 25 #REGISTRY_EXCL_LOCK ( dbv , nowa ) \ 26 `REGISTRY_LOCK ( dbv , 1, nowa ) ) 27 #REGISTRY_EXCL_UNLOCK ( dbv ) \ 28 `REGISTRY_UNLOCK ( dbv , 1) ) 30 __vg_add __P (( DB_ENV *, *)); 104 $__vg_gi ( dbv , ed_covyp ) 105 DB_ENV * dbv ; 106 * ed_covyp ; 108 pid_t pid ; 109 u_t32_t bys , mbys ; 110 t ; 111 * ; 113 * ed_covyp = 0; 114 dbv -> `thad_id (dbv, & pid , NULL ); 115 = NULL ; 117 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 118 `__db_msg ( dbv , "%lu:eginvmt", ( u_lg ) pid ); 121 i(( t = 122 `__db_ame ( dbv , DB_APP_NONE , REGISTER_FILE , 0, NULL , & )) != 0) 123 r ; 124 i(( t = `__os_ݒ ( dbv , , 0, 125 DB_OSO_CREATE , `__db_omode ("rw-rw----"), & dbv -> giry )) != 0) 126 r ; 135 i(( t = `REGISTRY_EXCL_LOCK ( dbv , 0)) != 0) 136 r ; 144 i(( t = `__os_iofo ( 145 dbv , , dbv-> giry , & mbys , & bys , NULL )) != 0) 146 r ; 147 i( mbys =0 && bys == 0) { 148 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 149 `__db_msg ( dbv , "%lu: cg %s", ( u_lg ) pid , ); 150 * ed_covyp = 1; 154 i(( t = `__vg_add ( dbv , ed_covyp )) != 0) 155 r ; 162 i(* ed_covyp =0 && ( t = `REGISTRY_EXCL_UNLOCK ( dbv )) != 0) 163 r ; 166 r : * ed_covyp = 0; 172 i( dbv -> giry ! NULL ) 173 () `__os_ohd ( dbv , dbv-> giry ); 174 dbv -> giry = NULL ; 177 i( ! NULL ) 178 `__os_ ( dbv , ); 180 ( t ); 181 } } 188 $__vg_add ( dbv , ed_covyp ) 189 DB_ENV * dbv ; 190 * ed_covyp ; 192 pid_t pid ; 193 off_t d , pos ; 194 size_t , nw ; 195 u_t lt ; 196 u_t32_t bys , mbys ; 197 ed_covy , t ; 198 * p , buf [ PID_LEN + 10], pid_buf [PID_LEN + 10]; 200 ed_covy = 0; 201 `COMPQUIET ( p , NULL ); 204 dbv -> `thad_id (dbv, & pid , NULL ); 205 `tf ( pid_buf , id_buf), PID_FMT , ( u_lg ) pid ); 207 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 208 `__db_msg ( dbv , "%lu:ddg stػgiry", ( u_lg ) pid ); 216 lt = 0;; ++lcnt) { 217 i(( t = `__os_ad ( 218 dbv , dbv-> giry , buf , PID_LEN , & )) != 0) 219 ( t ); 220 i( == 0) 228 i( ! PID_LEN ) { 229 ed_covy = 1; 233 i( `PID_ISEMPTY ( buf )) { 234 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 235 `__db_msg ( dbv , "%02u: EMPTY", lt ); 245 i( `memcmp ( buf , pid_buf , PID_LEN ) == 0) { 246 `__db_rx ( dbv , 248 ( EINVAL ); 251 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) { 252 p = buf ; *p == ' ';) 253 ++ p ; 254 buf [ - 1] = '\0'; 257 pos = ( off_t ) lt * PID_LEN ; 258 i( `REGISTRY_LOCK ( dbv , pos , 1) == 0) { 259 i(( t = `REGISTRY_UNLOCK ( dbv , pos )) != 0) 260 ( t ); 262 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 263 `__db_msg ( dbv , "%02u: %s: FAILED", lt , p ); 265 ed_covy = 1; 268 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 269 `__db_msg ( dbv , "%02u: %s: LOCKED", lt , p ); 279 i( ed_covy ) { 280 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 281 `__db_msg ( dbv , "%lu:ecovyequed", ( u_lg ) pid ); 284 i(( t = `__os_iofo ( 285 dbv , NULL , dbv-> giry , & mbys , & bys , NULL)) != 0) 286 ( t ); 287 d = ( off_t ) mbys * MEGABYTE + bys ; 297 i(( t = `__os_ek ( dbv , dbv-> giry , 0, 0, 0)) != 0) 298 ( t ); 299 lt = ( u_t ) d / PID_LEN + 300 (( u_t ) d % PID_LEN =0 ? 0 : 1); lt > 0; --lcnt) 301 i(( t = `__os_wre ( dbv , 302 dbv -> giry , PID_EMPTY , PID_LEN , & nw )) != 0) 303 ( t ); 310 i(( t = `__os_ek ( dbv , dbv-> giry , 0, 0, 0)) != 0) 311 ( t ); 312 lt = 0;; ++lcnt) { 313 i(( t = `__os_ad ( 314 dbv , dbv-> giry , buf , PID_LEN , & )) != 0) 315 ( t ); 316 i( = PID_LEN && ! `PID_ISEMPTY ( buf )) 318 pos = ( off_t ) lt * PID_LEN ; 319 i( `REGISTRY_LOCK ( dbv , pos , 1) == 0) { 320 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 321 `__db_msg ( dbv , 323 ( u_lg ) pid , lt , (u_lg) pos ); 325 i(( t = `__os_ek ( dbv , 326 dbv -> giry , 0, 0, ( u_t32_t ) pos )) != 0 || 327 ( t = `__os_wre ( dbv , 328 dbv -> giry , pid_buf , PID_LEN , & nw )) != 0) 329 ( t ); 330 dbv -> giry_off = ( u_t32_t ) pos ; 335 i( ed_covy ) 336 * ed_covyp = 1; 338 ( t ); 339 } } 348 $__vg_uegi ( dbv , covy_ed ) 349 DB_ENV * dbv ; 350 covy_ed ; 352 size_t nw ; 353 t , t_t ; 355 t = 0; 363 i( covy_ed ) 364 r ; 373 i(( t = `__os_ek ( dbv , 374 dbv -> giry , 0, 0, dbv-> giry_off )) != 0 || 375 ( t = `__os_wre ( 376 dbv , dbv-> giry , PID_EMPTY , PID_LEN , & nw )) != 0) 377 r ; 392 r : i(( t_t = 393 `__os_ohd ( dbv , dbv-> giry )!0 && t == 0) 394 t = t_t ; 396 dbv -> giry = NULL ; 397 ( t ); 398 } } 407 $__vg_xuock ( dbv ) 408 DB_ENV * dbv ; 410 pid_t pid ; 411 t ; 413 dbv -> `thad_id (dbv, & pid , NULL ); 415 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 416 `__db_msg ( dbv , 417 "%lu:ecovy comed, uockg", ( u_lg ) pid ); 419 i(( t = `REGISTRY_EXCL_UNLOCK ( dbv )) == 0) 420 ( t ); 422 `__db_r ( dbv , t , "%s:xusivfuock", REGISTER_FILE ); 423 ( `__db_nic ( dbv , t )); 424 } } @../env/env_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/txn.h " 19 #ifde HAVE_STATISTICS 20 __v_t_l __P (( DB_ENV *, u_t32_t )); 21 __v_t_s __P (( DB_ENV *, u_t32_t )); 22 __v_t_thad __P (( DB_ENV *)); 23 __v__t __P (( DB_ENV *, u_t32_t )); 24 * __v_thad_e_t __P (( DB_THREAD_STATE )); 26 __g_ty __P (( g_ty_t )); 35 $__v__t_ ( dbv , ags ) 36 DB_ENV * dbv ; 37 u_t32_t ags ; 39 DB_THREAD_INFO * ; 40 t ; 42 `PANIC_CHECK ( dbv ); 43 `ENV_ILLEGAL_BEFORE_OPEN ( dbv , "DB_ENV->stat_print"); 45 i(( t = `__db_fchk ( dbv , "DB_ENV->stat_print", 46 ags , DB_STAT_ALL | DB_STAT_CLEAR | DB_STAT_SUBSYSTEM )) != 0) 47 ( t ); 49 `ENV_ENTER ( dbv , ); 50 `REPLICATION_WRAP ( dbv , ( `__v__t (dbv, ags )), t ); 51 `ENV_LEAVE ( dbv , ); 52 ( t ); 53 } } 60 $__v__t ( dbv , ags ) 61 DB_ENV * dbv ; 62 u_t32_t ags ; 64 time_t now ; 65 t ; 66 time_buf [ CTIME_BUFLEN ]; 68 () `time (& now ); 69 `__db_msg ( dbv , "%.24s\tLotime", `__db_ime (& now , time_buf )); 71 i(( t = `__v_t_s ( dbv , ags )) != 0) 72 ( t ); 74 i( `LF_ISSET ( DB_STAT_ALL ) && 75 ( t = `__v_t_l ( dbv , ags )) != 0) 76 ( t ); 78 i(( t = `__v_t_thad ( dbv )) != 0) 79 ( t ); 81 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 84 i( `LOGGING_ON ( dbv )) { 85 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 86 i(( t = `__log__t ( dbv , ags )) != 0) 87 ( t ); 89 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 90 i(( t = `__dbg__t ( dbv , ags )) != 0) 91 ( t ); 94 i( `LOCKING_ON ( dbv )) { 95 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 96 i(( t = `__lock__t ( dbv , ags )) != 0) 97 ( t ); 100 i( `MPOOL_ON ( dbv )) { 101 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 102 i(( t = `__memp__t ( dbv , ags )) != 0) 103 ( t ); 106 i( `REP_ON ( dbv )) { 107 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 108 i(( t = `__p__t ( dbv , ags )) != 0) 109 ( t ); 112 i( `TXN_ON ( dbv )) { 113 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 114 i(( t = `__txn__t ( dbv , ags )) != 0) 115 ( t ); 118 #ifde HAVE_MUTEX_SUPPORT 124 i( `MUTEX_ON ( dbv )) { 125 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 126 i(( t = `__mux__t ( dbv , ags )) != 0) 127 ( t ); 132 } } 140 $__v_t_s ( dbv , ags ) 141 DB_ENV * dbv ; 142 u_t32_t ags ; 144 REGENV * nv ; 145 REGINFO * f ; 146 time_buf [ CTIME_BUFLEN ]; 148 f = dbv -> gfo ; 149 nv = f -> imy ; 151 i( `LF_ISSET ( DB_STAT_ALL )) { 152 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 153 `__db_msg ( dbv , "Default databasenvironment information:"); 155 `STAT_HEX ("Maginumb", nv -> magic ); 156 `STAT_LONG ("Pivue", nv -> nic ); 157 `__db_msg ( dbv , "%d.%d.%d\tEnvironment version", 158 nv -> majv ,v-> mv ,v-> tchv ); 159 `STAT_LONG ("B vsi", DB_BTREEVERSION ); 160 `STAT_LONG ("Hash vsi", DB_HASHVERSION ); 161 `STAT_LONG ("Lock vsi", DB_LOCKVERSION ); 162 `STAT_LONG ("Log vsi", DB_LOGVERSION ); 163 `STAT_LONG ("Queuvsi", DB_QAMVERSION ); 164 `STAT_LONG ("Sequ vsi", DB_SEQUENCE_VERSION ); 165 `STAT_LONG ("Txvsi", DB_TXNVERSION ); 166 `__db_msg ( dbv , 167 "%.24s\tCiځime", `__db_ime (& nv -> timeamp , time_buf )); 168 `STAT_HEX ("EnvmID", nv -> vid ); 169 `__mux_t_debug_sg ( dbv , 171 nv -> mtx_gv , ags ); 172 `STAT_LONG ("Rens", nv -> ft ); 175 } } 182 $__v_t_l ( dbv , ags ) 183 DB_ENV * dbv ; 184 u_t32_t ags ; 186 cڡ FN [] = { 187 { DB_ENV_AUTO_COMMIT , "DB_ENV_AUTO_COMMIT" }, 188 { DB_ENV_CDB , "DB_ENV_CDB" }, 189 { DB_ENV_CDB_ALLDB , "DB_ENV_CDB_ALLDB" }, 190 { DB_ENV_DBLOCAL , "DB_ENV_DBLOCAL" }, 191 { DB_ENV_DIRECT_DB , "DB_ENV_DIRECT_DB" }, 192 { DB_ENV_DIRECT_LOG , "DB_ENV_DIRECT_LOG" }, 193 { DB_ENV_DSYNC_DB , "DB_ENV_DSYNC_DB" }, 194 { DB_ENV_DSYNC_LOG , "DB_ENV_DSYNC_LOG" }, 195 { DB_ENV_RECOVER_FATAL , "DB_ENV_RECOVER_FATAL" }, 196 { DB_ENV_LOCKDOWN , "DB_ENV_LOCKDOWN" }, 197 { DB_ENV_LOG_AUTOREMOVE , "DB_ENV_LOG_AUTOREMOVE" }, 198 { DB_ENV_LOG_INMEMORY , "DB_ENV_LOG_INMEMORY" }, 199 { DB_ENV_NOLOCKING , "DB_ENV_NOLOCKING" }, 200 { DB_ENV_NOMMAP , "DB_ENV_NOMMAP" }, 201 { DB_ENV_NOPANIC , "DB_ENV_NOPANIC" }, 202 { DB_ENV_OPEN_CALLED , "DB_ENV_OPEN_CALLED" }, 203 { DB_ENV_OVERWRITE , "DB_ENV_OVERWRITE" }, 204 { DB_ENV_PRIVATE , "DB_ENV_PRIVATE" }, 205 { DB_ENV_REGION_INIT , "DB_ENV_REGION_INIT" }, 206 { DB_ENV_RPCCLIENT , "DB_ENV_RPCCLIENT" }, 207 { DB_ENV_RPCCLIENT_GIVEN , "DB_ENV_RPCCLIENT_GIVEN" }, 208 { DB_ENV_SYSTEM_MEM , "DB_ENV_SYSTEM_MEM" }, 209 { DB_ENV_THREAD , "DB_ENV_THREAD" }, 210 { DB_ENV_TIME_NOTGRANTED , "DB_ENV_TIME_NOTGRANTED" }, 211 { DB_ENV_TXN_NOSYNC , "DB_ENV_TXN_NOSYNC" }, 212 { DB_ENV_TXN_NOWAIT , "DB_ENV_TXN_NOWAIT" }, 213 { DB_ENV_TXN_WRITE_NOSYNC , "DB_ENV_TXN_WRITE_NOSYNC" }, 214 { DB_ENV_YIELDCPU , "DB_ENV_YIELDCPU" }, 215 { 0, NULL } 217 cڡ FN o [] = { 218 { DB_CREATE , "DB_CREATE" }, 219 { DB_FORCE , "DB_FORCE" }, 220 { DB_INIT_CDB , "DB_INIT_CDB" }, 221 { DB_INIT_LOCK , "DB_INIT_LOCK" }, 222 { DB_INIT_LOG , "DB_INIT_LOG" }, 223 { DB_INIT_MPOOL , "DB_INIT_MPOOL" }, 224 { DB_INIT_REP , "DB_INIT_REP" }, 225 { DB_INIT_TXN , "DB_INIT_TXN" }, 226 { DB_LOCKDOWN , "DB_LOCKDOWN" }, 227 { DB_NOMMAP , "DB_NOMMAP" }, 228 { DB_PRIVATE , "DB_PRIVATE" }, 229 { DB_RDONLY , "DB_RDONLY" }, 230 { DB_RECOVER , "DB_RECOVER" }, 231 { DB_RECOVER_FATAL , "DB_RECOVER_FATAL" }, 232 { DB_SYSTEM_MEM , "DB_SYSTEM_MEM" }, 233 { DB_THREAD , "DB_THREAD" }, 234 { DB_TRUNCATE , "DB_TRUNCATE" }, 235 { DB_TXN_NOSYNC , "DB_TXN_NOSYNC" }, 236 { DB_USE_ENVIRON , "DB_USE_ENVIRON" }, 237 { DB_USE_ENVIRON_ROOT , "DB_USE_ENVIRON_ROOT" }, 238 { 0, NULL } 240 cڡ FN v [] = { 241 { DB_VERB_DEADLOCK , "DB_VERB_DEADLOCK" }, 242 { DB_VERB_FILEOPS , "DB_VERB_FILEOPS" }, 243 { DB_VERB_FILEOPS_ALL , "DB_VERB_FILEOPS_ALL" }, 244 { DB_VERB_RECOVERY , "DB_VERB_RECOVERY" }, 245 { DB_VERB_REGISTER , "DB_VERB_REGISTER" }, 246 { DB_VERB_REPLICATION , "DB_VERB_REPLICATION" }, 247 { DB_VERB_WAITSFOR , "DB_VERB_WAITSFOR" }, 248 { 0, NULL } 250 cڡ FN gv [] = { 251 { DB_REGENV_REPLOCKED , "DB_REGENV_REPLOCKED" }, 252 { 0, NULL } 254 DB_MSGBUF mb ; 255 REGENV * nv ; 256 REGINFO * f ; 257 REGION * ; 258 u_t32_t i ; 259 ** p , time_buf [ CTIME_BUFLEN ]; 261 f = dbv -> gfo ; 262 nv = f -> imy ; 263 `DB_MSGBUF_INIT (& mb ); 265 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 266 `__db_ags ( dbv , 267 NULL , nv -> _ags , o , NULL, "\tInitialization flags"); 268 `STAT_ULONG ("Regi sls", nv -> gi_t ); 269 `__db_ags ( dbv , 270 NULL , nv -> ags , gv , NULL, "\tReplication flags"); 271 `__db_msg ( dbv , "%.24s\tOperationimestamp", 272 nv -> _timeamp == 0 ? 273 "!S" : `__db_ime (& nv -> _timeamp , time_buf )); 274 `__db_msg ( dbv , "%.24s\tReplicationimestamp", 275 nv -> p_timeamp == 0 ? 276 "!S" : `__db_ime (& nv -> p_timeamp , time_buf )); 278 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 279 `__db_msg ( dbv , "Peregion databasenvironment information:"); 280 = `R_ADDR ( f , nv -> gi_off ), 281 i = 0; i < nv -> gi_t ; ++i, ++ ) { 282 i( -> id = INVALID_REGION_ID ) 284 `__db_msg ( dbv , "%Regi:", `__g_ty ( -> ty )); 285 `STAT_LONG ("Regi ID", -> id ); 286 `STAT_LONG ("SegmID", -> gid ); 287 `__db_dlbys ( dbv , 288 "Size", ( u_lg )0, (u_lg)0, (u_lg) -> size ); 291 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 292 `__db_msg ( dbv , "DB_ENV handle information:"); 293 `STAT_ISSET ("Efe", dbv -> db_rfe ); 294 `STAT_STRING ("Epfx", dbv -> db_fx ); 295 `STAT_ISSET ("E", dbv -> db_r ); 296 `STAT_ISSET ("Evt", dbv -> db_evt_func ); 297 `STAT_ISSET ("Fdback", dbv -> db_edback ); 298 `STAT_ISSET ("Pic", dbv -> db_nic ); 299 `STAT_ISSET ("Mloc", dbv -> db_mloc ); 300 `STAT_ISSET ("Roc", dbv -> db_loc ); 301 `STAT_ISSET ("Fe", dbv -> db_ ); 302 `__db_ags ( dbv , NULL , dbv-> vbo , v , NULL, "\tVerbose flags"); 304 `STAT_ISSET ("Arive", dbv -> p_ive ); 305 `STAT_ISSET ("A dich", dbv -> p_dich ); 306 `STAT_STRING ("Home", dbv -> db_home ); 307 `STAT_STRING ("Log d", dbv -> db_log_d ); 308 `STAT_STRING ("Tmd", dbv -> db_tmp_d ); 309 i( dbv -> db_da_d = NULL ) 310 `STAT_ISSET ("Dd", dbv -> db_da_d ); 312 p = dbv -> db_da_d ; *! NULL ; ++p) 313 `__db_msgadd ( dbv , & mb , "%s\tDd", * p ); 314 `DB_MSGBUF_FLUSH ( dbv , & mb ); 316 `STAT_FMT ("Mode", "%#o", , dbv -> db_mode ); 317 `__db_ags ( dbv , NULL , dbv-> ݒ_ags , o , NULL, "\tOpen flags"); 318 `STAT_ISSET ("Lockfhp", dbv -> lockfhp ); 319 `STAT_ISSET ("Recovyab", dbv -> cov_db ); 320 `STAT_ULONG ("Numb ocovyab sls", dbv -> cov_db_size ); 321 `STAT_ISSET ("RPC cl", dbv -> _hd ); 322 `STAT_LONG ("RPC cl ID", dbv -> _id ); 323 `STAT_LONG ("DBen cou", dbv -> db_f ); 324 `STAT_LONG ("Shed memy key", dbv -> shm_key ); 325 `__mux_t_debug_sg ( 326 dbv , "DB_ENV hd mux", dbv-> mtx_v , ags ); 327 `__mux_t_debug_sg ( 328 dbv , "DB hd mux", dbv-> mtx_dbli , ags ); 330 `STAT_ISSET ("i1 il", dbv -> i1_ ); 331 `STAT_ISSET ("i2 il", dbv -> i2_ ); 332 `STAT_ISSET ("sswd", dbv -> sswd ); 333 `STAT_ISSET ("yhd", dbv -> yo_hd ); 334 `__mux_t_debug_sg ( dbv , "MT mux", dbv-> mtx_mt , ags ); 336 `__db_ags ( dbv , NULL , dbv-> ags , , NULL, "\tFlags"); 339 } } 342 $__v_thad_e_t ( e ) 343 DB_THREAD_STATE e ; 345 e ) { 346 THREAD_ACTIVE : 348 THREAD_BLOCKED : 350 THREAD_OUT : 356 } } 363 $__v_t_thad ( dbv ) 364 DB_ENV * dbv ; 366 DB_HASHTAB * hb ; 367 DB_THREAD_INFO * ; 368 REGENV * nv ; 369 REGINFO * f ; 370 THREAD_INFO * thad ; 371 u_t32_t i ; 372 buf [ DB_THREADID_STRLEN ]; 375 i(( hb = ( DB_HASHTAB *) dbv -> thr_hashb = NULL ) 379 f = dbv -> gfo ; 380 nv = f -> imy ; 381 thad = `R_ADDR ( f , nv -> thad_off ); 382 `STAT_ULONG ("Thad blocklod", thad -> thr_cou ); 383 `STAT_ULONG ("Thadotiځhshd", thad -> thr_max ); 384 `STAT_ULONG ("Thad hash bucks", thad -> thr_nbuck ); 387 `__db_msg ( dbv , "Thread status blocks:"); 388 i = 0; i < dbv -> thr_nbuck ; i++) 389 `SH_TAILQ_FOREACH ( , & hb [ i ], dbth_lks , __db_thad_fo ) { 390 i( -> dbth_e = THREAD_SLOT_NOT_IN_USE ) 392 `__db_msg ( dbv , "\tprocess/thread %s: %s", 393 dbv -> `thad_id_rg ( 394 dbv , -> dbth_pid , ip-> dbth_tid , buf ), 395 `__v_thad_e_t ( -> dbth_e )); 398 } } 407 $__db_t_fh ( dbv , g , fh , ags ) 408 DB_ENV * dbv ; 409 cڡ * g ; 410 DB_FH * fh ; 411 u_t32_t ags ; 413 cڡ FN [] = { 414 { DB_FH_NOSYNC , "DB_FH_NOSYNC" }, 415 { DB_FH_OPENED , "DB_FH_OPENED" }, 416 { DB_FH_UNLINK , "DB_FH_UNLINK" }, 417 { 0, NULL } 420 i( fh = NULL ) { 421 `STAT_ISSET ( g , fh ); 425 `__mux_t_debug_sg ( 426 dbv , "fe-hd.mux", fh -> mtx_fh , ags ); 428 `STAT_LONG ("fe-hd.n cou", fh -> f ); 429 `STAT_LONG ("fe-hd.fdest", fh -> fd ); 430 `STAT_STRING ("fe-hd.fme", fh -> me ); 432 `STAT_ULONG ("fe-hd.gnumb", fh -> pgno ); 433 `STAT_ULONG ("fe-hd.gsize", fh -> pgsize ); 434 `STAT_ULONG ("fe-hd.gofft", fh -> offt ); 436 `__db_ags ( dbv , NULL , fh -> ags , , NULL, "\tfile-handle.flags"); 437 } } 446 $__db_t_feid ( dbv , id , suffix ) 447 DB_ENV * dbv ; 448 u_t8_t * id ; 449 cڡ * suffix ; 451 DB_MSGBUF mb ; 452 i ; 454 i( id = NULL ) { 455 `STAT_ISSET ("ID", id ); 459 `DB_MSGBUF_INIT (& mb ); 460 i = 0; i < DB_FILE_ID_LEN ; ++i, ++ id ) { 461 `__db_msgadd ( dbv , & mb , "%x", ( u_t )* id ); 462 i( i < DB_FILE_ID_LEN - 1) 463 `__db_msgadd ( dbv , & mb , " "); 465 i( suffix ! NULL ) 466 `__db_msgadd ( dbv , & mb , "%s", suffix ); 467 `DB_MSGBUF_FLUSH ( dbv , & mb ); 468 } } 477 $__db_dl ( dbv , msg , vue ) 478 DB_ENV * dbv ; 479 cڡ * msg ; 480 u_lg vue ; 486 i( vue < 10000000) 487 `__db_msg ( dbv , "%lu\t%s", vue , msg ); 489 `__db_msg ( dbv , "%luM\t%(%lu)", vue / 1000000, msg , value); 490 } } 500 $__db_dl_p ( dbv , msg , vue , p , g ) 501 DB_ENV * dbv ; 502 cڡ * msg , * g ; 503 u_lg vue ; 504 p ; 506 DB_MSGBUF mb ; 508 `DB_MSGBUF_INIT (& mb ); 514 i( vue < 10000000) 515 `__db_msgadd ( dbv , & mb , "%lu\t%s", vue , msg ); 517 `__db_msgadd ( dbv , 518 & mb , "%luM\t%s", ( vue + 500000/ 1000000, msg ); 519 i( g = NULL ) 520 `__db_msgadd ( dbv , & mb , " (%d%%)", p ); 522 `__db_msgadd ( dbv , & mb , " (%d%% %s)", p , g ); 524 `DB_MSGBUF_FLUSH ( dbv , & mb ); 525 } } 535 $__db_dlbys ( dbv , msg , gbys , mbys , bys ) 536 DB_ENV * dbv ; 537 cڡ * msg ; 538 u_lg gbys , mbys , bys ; 540 DB_MSGBUF mb ; 541 cڡ * p ; 543 `DB_MSGBUF_INIT (& mb ); 546 bys > MEGABYTE ) { 547 ++ mbys ; 548 bys - MEGABYTE ; 550 mbys > GIGABYTE / MEGABYTE ) { 551 ++ gbys ; 552 mbys - GIGABYTE / MEGABYTE ; 555 i( gbys =0 && mbys =0 && bys == 0) 556 `__db_msgadd ( dbv , & mb , "0"); 558 p = ""; 559 i( gbys > 0) { 560 `__db_msgadd ( dbv , & mb , "%luGB", gbys ); 561 p = " "; 563 i( mbys > 0) { 564 `__db_msgadd ( dbv , & mb , "%s%luMB", p , mbys ); 565 p = " "; 567 i( bys >= 1024) { 568 `__db_msgadd ( dbv , & mb , "%s%luKB", p , bys / 1024); 569 bys %= 1024; 570 p = " "; 572 i( bys > 0) 573 `__db_msgadd ( dbv , & mb , "%s%luB", p , bys ); 576 `__db_msgadd ( dbv , & mb , "\t%s", msg ); 578 `DB_MSGBUF_FLUSH ( dbv , & mb ); 579 } } 589 $__db_t_gfo ( dbv , f , s , ags ) 590 DB_ENV * dbv ; 591 REGINFO * f ; 592 cڡ * s ; 593 u_t32_t ags ; 595 cڡ FN [] = { 596 { REGION_CREATE , "REGION_CREATE" }, 597 { REGION_CREATE_OK , "REGION_CREATE_OK" }, 598 { REGION_JOIN_OK , "REGION_JOIN_OK" }, 599 { 0, NULL } 602 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 603 `__db_msg ( dbv , "%REGINFO infmi:", s ); 604 `STAT_STRING ("Regiځy", `__g_ty ( f -> ty )); 605 `STAT_ULONG ("Regi ID", f -> id ); 606 `STAT_STRING ("Regiڂame", f -> me ); 607 `STAT_POINTER ("Origegiڇddss", f -> addr_ig ); 608 `STAT_POINTER ("Regiڇddss", f -> addr ); 609 `STAT_POINTER ("Regiڅrimyddss", f -> imy ); 610 `STAT_ULONG ("Regi maximumoti", f -> max_loc ); 611 `STAT_ULONG ("Regiڇod", f -> lod ); 612 `__v_loc_t ( f , ags ); 614 `__db_ags ( dbv , NULL , f -> ags , , NULL, "\tRegion flags"); 615 } } 622 $__g_ty ( t ) 623 g_ty_t t ; 625 t ) { 626 REGION_TYPE_ENV : 628 REGION_TYPE_LOCK : 630 REGION_TYPE_LOG : 632 REGION_TYPE_MPOOL : 634 REGION_TYPE_MUTEX : 636 REGION_TYPE_TXN : 638 INVALID_REGION_TYPE : 642 } } 653 $__db__n_but ( dbv ) 654 DB_ENV * dbv ; 656 `__db_rx ( dbv , "Library build didot include statistics support"); 657 ( DB_OPNOTSUP ); 658 } } 661 $__v__t_ ( dbv , ags ) 662 DB_ENV * dbv ; 663 u_t32_t ags ; 665 `COMPQUIET ( ags , 0); 667 ( `__db__n_but ( dbv )); 668 } } @../examples_c/bench_001.c 32 ~<sys/tys.h > 33 ~<sys/time.h > 35 ~<dlib.h > 36 ~<rg.h > 38 #ifde _WIN32 39 gt (, * const *, const *); 41 ~<unid.h > 44 ~<db.h > 46 #DATABASE "bch_001.db" ) 48 com_t ( DB *, cڡ DBT *, const DBT *); 49 DB_ENV * db_ (*, *, u_t , ); 50 fl ( DB_ENV *, DB *, , u_t , , ); 51 g ( DB *, , u_t , , , , *); 52 ma (, *[]); 53 uge (); 56 * gogme = "bench_001"; 61 DB_ENV * 62 $db_ ( home , efix , chesize , txn ) 63 * home , * efix ; 64 u_t chesize ; 65 txn ; 67 DB_ENV * dbv ; 68 u_t32_t ags ; 69 t ; 71 i(( t = `db_v_ (& dbv , 0)) != 0) { 72 dbv -> `r (dbv, t , "db_env_create"); 73 ( NULL ); 75 dbv -> `t_rfe (dbv, dr ); 76 dbv -> `t_fx (dbv, efix ); 77 () dbv -> `t_chesize (dbenv, 0, 78 chesize =0 ? 50 * 1024 * 1024 : ( u_t32_t )cachesize, 0); 80 ags = DB_CREATE | DB_INIT_MPOOL ; 81 i( txn ) 82 ags | DB_INIT_TXN | DB_INIT_LOCK ; 83 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) { 84 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 85 () dbv -> `o (dbenv, 0); 86 ( NULL ); 88 ( dbv ); 89 } } 96 $g ( dbp , txn , d , num , dups , , coup ) 97 DB * dbp ; 98 u_t d ; 99 txn , num , dups , , * coup ; 101 DBC * db ; 102 DBT key , da ; 103 DB_ENV * dbv ; 104 DB_TXN * tx ; 105 u_t32_t ags , n , kn ; 106 cou , i , j , t ; 107 * por , * dp , * kp ; 109 dbv = dbp ->dbenv; 111 kn = 0; 112 kn = klen; 114 `memt (& key , 0, (key)); 115 key . da = & j ; 116 key . size = ( j ); 117 `memt (& da , 0, (data)); 118 da . ags = DB_DBT_USERMEM ; 119 da .d `mloc ( d *1024*1024); 120 da . un = da. size = d *1024*1024; 122 cou = 0; 123 ags = DB_SET ; 124 i(! dups ) 125 ags | DB_MULTIPLE_KEY ; 127 ags | DB_MULTIPLE ; 128 i = 0; i < ; i++) { 129 tx = NULL ; 130 i( txn ) 131 i(( t = 132 dbv -> `txn_beg (dbv, NULL , & tx , 0)) != 0) 133 r ; 134 i(( t = dbp -> `curs (dbp, tx , & db , 0)) != 0) 135 r ; 137 j = `ndom (% num ; 138 i(( t = db -> `g (db, & key , & da , ags )) != 0) 139 r ; 140 `DB_MULTIPLE_INIT ( por , & da ); 141 i( dups ) 142 por ! NULL ) { 143 `DB_MULTIPLE_NEXT ( por , & da , dp , n ); 144 i( dp ! NULL ) 145 cou ++; 148 por ! NULL ) { 149 `DB_MULTIPLE_KEY_NEXT ( por , 150 & da , kp , kn , dp , n ); 151 i( kp ! NULL ) 152 cou ++; 154 i(( t = db -> `o (dbcp)) != 0) 155 r ; 156 i( txn ) 157 i(( t = tx -> `comm (txnp, 0)) != 0) 158 r ; 161 * coup = cou ; 164 r : dbp -> `r (dbp, t , "get"); 165 ( t ); 166 } } 174 #PUTS_PER_TXN 10 ) 176 $fl ( dbv , dbp , txn , d , num , dups ) 177 DB_ENV * dbv ; 178 DB * dbp ; 179 u_t d ; 180 txn , num , dups ; 182 DBT key , da ; 183 DB_TXN * tx ; 184 sda { 185 id ; 186 r [1]; 187 } * da_v ; 188 cou , i , t ; 194 tx = NULL ; 195 t = 0; 196 cou = 0; 197 `memt (& key , 0, ( DBT )); 198 `memt (& da , 0, ( DBT )); 199 key . da = & i ; 200 key . size = ( i ); 201 da .d da_v = `mloc ( d ); 202 `memy ( da_v -> r , "0123456789012345678901234567890123456789", 203 d - ( da_v -> id )); 204 da . size = d ; 205 da . ags = DB_DBT_USERMEM ; 207 i = 0; i < num ; i++) { 208 i( txn !0 && i % PUTS_PER_TXN == 0) { 209 i( tx ! NULL ) { 210 t = tx -> `comm (txnp, 0); 211 tx = NULL ; 212 i( t != 0) 213 r ; 215 i(( t = 216 dbv -> `txn_beg (dbv, NULL , & tx , 0)) != 0) 217 r ; 219 da_v -> id = 0; 221 t = dbp -> `put (dbp, tx , & key , & da , 0)) { 223 cou ++; 226 dbp -> `r (dbp, t , "DB->put"); 227 r ; 229 } ++ da_v -> id < dups ); 231 i( tx ! NULL ) 232 t = tx -> `comm (txnp, 0); 234 `tf ("%d\n", cou ); 235 ( t ); 237 r : i( tx ! NULL ) 238 () tx -> `abt (txnp); 239 ( t ); 240 } } 243 $ma ( gc , gv ) 244 gc ; 245 * gv []; 247 * ݏrg ; 248 td ; 249 DB * dbp ; 250 DB_ENV * dbv ; 251 DB_TXN * tx ; 252 timev t_time , d_time ; 253 cs ; 254 u_t che , d , gesize ; 255 ch , cou , dups , v , , , num ; 256 t , rag , txn ; 258 tx = NULL ; 259 d = 20; 260 = num = 1000000; 261 v = 1; 262 dups = = rag = txn = 0; 264 gesize = 65536; 265 che = 1000 * gesize ; 267 ( ch = `gt ( gc , gv , "c:d:EIi:l:n:p:RT")! EOF ) 268 ch ) { 270 che = ( u_t ) `oi ( ݏrg ); 273 dups = `oi ( ݏrg ); 276 v = 0; 279 = 1; 282 = `oi ( ݏrg ); 285 d = ( u_t ) `oi ( ݏrg ); 288 num = `oi ( ݏrg ); 291 gesize = ( u_t ) `oi ( ݏrg ); 294 rag = 1; 297 txn = 1; 301 `uge (); 303 gc - td ; 304 gv + td ; 307 i(! rag ) { 308 i( v ) 309 () `syem ("rm -rf BENCH_001; mkdir BENCH_001"); 311 () `uƚk ( DATABASE ); 314 dbv = NULL ; 315 i( v == 1 && 316 ( dbv = `db_ ("BENCH_001", "bch_001", che , txn )= NULL ) 318 i( ) 319 `ex (0); 321 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 322 `rtf ( dr , 323 "%s: db_: %s\n", ogme , `db_ ( t )); 324 `ex ( EXIT_FAILURE ); 326 dbp -> `t_rfe (dbp, dr ); 327 dbp -> `t_fx (dbp, ogme ); 328 i(( t = dbp -> `t_bt_com (dbp, com_t )) != 0) { 329 dbp -> `r (dbp, t , "set_bt_compare"); 330 r ; 332 i(( t = dbp -> `t_gesize (dbp, gesize )) != 0) { 333 dbp -> `r (dbp, t , "set_pagesize"); 334 r ; 336 i( dups && ( t = dbp -> `t_ags (dbp, DB_DUP )) != 0) { 337 dbp -> `r (dbp, t , "set_flags"); 338 r ; 341 i( v =0 && ( t = dbp -> `t_chesize (dbp, 0, che , 0)) != 0) { 342 dbp -> `r (dbp, t , "set_cachesize"); 343 r ; 346 i(( t = dbp -> `t_ags (dbp, DB_DUP )) != 0) { 347 dbp -> `r (dbp, t , "set_flags"); 348 r ; 351 i( txn != 0) 352 i(( t = dbv -> `txn_beg (dbv, NULL , & tx , 0)) != 0) 353 r ; 355 i(( t = dbp -> `ݒ ( 356 dbp , tx , DATABASE , NULL , DB_BTREE , DB_CREATE , 0664)) != 0) { 357 dbp -> `r (dbp, t , "%s: on", DATABASE ); 358 i( tx ! NULL ) 359 () tx -> `abt (txnp); 360 r ; 363 i( tx ! NULL ) 364 t = tx -> `comm (txnp, 0); 365 tx = NULL ; 366 i( t != 0) 367 r ; 369 i( rag ) { 371 i(! v && ( t = 372 `g ( dbp , txn , d , num , dups , , & cou )) != 0) 373 r ; 376 () `gtimeofday (& t_time , NULL ); 377 i(( t = 378 `g ( dbp , txn , d , num , dups , , & cou )) != 0) 379 r ; 380 () `gtimeofday (& d_time , NULL ); 381 cs = 382 ((() d_time . tv_c * 1000000 +nd_time. tv_uc ) - 383 (() t_time . tv_c * 1000000 + s_time. tv_uc )) 385 `tf ("%decordsead using %d batches in %.2f seconds: ", 386 cou , , cs ); 387 `tf ("%.0cds/cd\n", () cou / cs ); 389 } i(( t = `fl ( dbv , dbp , txn , d , num , dups )) != 0) 390 r ; 393 i(( t = dbp -> `o (dbp, rag ? DB_NOSYNC : 0)) != 0) { 394 `rtf ( dr , 395 "%s: DB->o: %s\n", ogme , `db_ ( t )); 398 ( t ); 400 r : () dbp -> `o (dbp, 0); 402 } } 405 $com_t ( dbp , a , b ) 406 DB * dbp ; 407 cڡ DBT * a , * b ; 409 ai , bi ; 411 dbp = dbp; 419 `memy (& ai , a -> da , ()); 420 `memy (& bi , b -> da , ()); 421 ( ai - bi ); 422 } } 425 $uge () 427 () `rtf ( dr , "usage: %s %s\n\t%s\n", 428 ogme , "[-EIRT] [-c cachesize] [-d dups]", 430 `ex ( EXIT_FAILURE ); 431 } } @../examples_c/csv/DbRecord.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 13 DbRecd_fld ( DbRecd *, u_t , *, dy ); 14 DbRecd_ch_fld ( DbFld *, *, OPERATOR ); 15 DbRecd_ch_o (*, OPERATOR ); 22 $DbRecd_t ( DbRecd * cdp , FILE * ) 24 DbFld * f ; 25 * ddr ; 27 i( = NULL ) 28 = dout ; 30 `rtf ( , "Recd: %lu:\n", ( u_lg ) cdp -> o ); 31 f = fldli ; f-> me ! NULL ; ++f) { 32 ddr = ( u_t8_t *) cdp + f -> offt ; 33 `rtf ( , "\t%s: ", f -> me ); 34 f -> ty ) { 35 NOTSET : 37 `abt (); 39 DOUBLE : 40 `rtf ( , "%f\n", *(*) ddr ); 42 STRING : 43 `rtf ( , "%s\n", *(**) ddr ); 45 ULONG : 46 `rtf ( , "%lu\n", *( u_lg *) ddr ); 50 } } 57 $DbRecd_ad ( u_lg o_ulg , DbRecd * cdp ) 59 DBT key , da ; 60 u_t32_t o ; 61 t ; 68 o = o_ulg ; 81 `memt (& key , 0, (key)); 82 `memt (& da , 0, (data)); 83 key . da = & o ; 84 key . size = ( o ); 85 da . ags = DB_DBT_MALLOC ; 86 i(( t = db -> `g (db, NULL , & key , & da , 0)) != 0) 87 ( t ); 89 i(( t = `DbRecd_ (& key , & da , cdp )) != 0) 90 ( t ); 93 } } 100 $DbRecd_disrd ( DbRecd * cdp ) 103 ` ( cdp -> w ); 104 cdp -> w = NULL ; 107 } } 114 $DbRecd_ (cڡ DBT * key , cڡ DBT * da , DbRecd * cdp ) 116 DbFld * f ; 117 u_t32_t sk ; 118 * ddr ; 121 * cdp = DbRecd_ba ; 124 `memy (& cdp -> o , key -> da , ( u_t32_t )); 125 `memy (& cdp -> vsi , 126 ( u_t32_t *) da ->data + 1, (u_int32_t)); 129 cdp -> w = da ->data; 130 cdp -> offt = ( u_t32_t *) da ->data + 1; 131 sk = ( cdp -> fld_cou + 2* ( u_t32_t ); 132 cdp -> cd = ( u_t8_t *) da ->d+ sk ; 133 cdp -> cd_n = da -> size - sk ; 135 f = fldli ; f-> me ! NULL ; ++f) { 136 ddr = ( u_t8_t *) cdp + f -> offt ; 137 i( `DbRecd_fld ( 138 cdp , f -> fldno , ddr , f-> ty ) != 0) 142 } } 149 $DbRecd_fld ( 150 DbRecd * cdp , u_t fld , * addr , dy ty ) 152 size_t n ; 153 numb_buf [20]; 159 -- fld ; 161 ty ) { 162 NOTSET : 164 `abt (); 166 STRING : 167 *(( u_ch **) addr cdp -> cd +ecdp-> offt [ fld ]; 168 cdp -> cd [cdp-> offt [ fld ] + 169 `OFFSET_LEN ( cdp -> offt , fld )] = '\0'; 171 DOUBLE : 172 ULONG : 174 n = `OFFSET_LEN ( cdp -> offt , fld ); 175 i( n > ( numb_buf ) - 1) { 176 dbv -> `rx (dbenv, 178 cdp -> o , fld , ( u_lg ) n ); 181 `memy ( numb_buf , 182 cdp -> cd +ecdp-> offt [ fld ], n ); 183 numb_buf [ n ] = '\0'; 185 i( ty = DOUBLE ) { 186 i( n == 0) 187 *(*) addr = 0; 188 i( `od_r ( numb_buf , (*) addr ) != 0) 189 fmt_r ; 191 i( n == 0) 192 *( u_lg *) addr = 0; 193 i( `oul_r ( numb_buf , ( u_lg *) addr ) != 0) { 194 fmt_r : dbv -> `rx (dbenv, 196 cdp -> o , fld , numb_buf ); 202 } } 209 $DbRecd_ch_fld_me (* fld , * vue , OPERATOR ) 211 DbFld * f ; 213 f = fldli ; f-> me ! NULL ; ++f) 214 i( `rcmp ( fld , f -> me ) == 0) 215 ( `DbRecd_ch_fld ( f , vue , )); 218 i( `rcmp ( fld , "id") == 0) 219 ( `DbRecd_ch_o ( vue , )); 221 dbv -> `rx (dbv, "unknowfldame: %s", fld ); 223 } } 230 $DbRecd_ch_fld_numb ( u_t32_t fldno , * vue , OPERATOR ) 232 DbFld * f ; 234 f = fldli ; f-> me ! NULL ; ++f) 235 i( fldno = f ->fieldno) 236 ( `DbRecd_ch_fld ( f , vue , )); 238 dbv -> `rx (dbv, "fldumb %lu cfigud", ( u_lg ) fldno ); 240 } } 247 $DbRecd_ch_o (* vue , OPERATOR ) 249 DBC * dbc ; 250 DbRecd cd ; 251 DBT key , da ; 252 u_t32_t o ; 253 u_lg o_ulg ; 254 t ; 261 i( `oul_r ( vue , & o_ulg ) != 0) 264 `memt (& key , 0, (key)); 265 `memt (& da , 0, (data)); 266 key . da = & o ; 267 key . size = ( o ); 269 i(( t = db -> `curs (db, NULL , & dbc , 0)) != 0) 270 ( t ); 284 i( = LT || o= LTEQ || o= NEQ || o= WC || o= NWC ) 285 o = 1; 286 i( = WC || o= NWC ) { 287 dbv -> `rx (dbenv, 291 o = o_ulg ; 292 i( = GT ) 293 ++ o ; 295 i(( t = dbc -> `c_g (dbc, & key , & da , DB_SET )) != 0) 296 r ; 299 i(( t = `DbRecd_ (& key , & da , & cd )) != 0) 301 i( `fld_cmp_ulg (& cd . o , & o_ulg , )) 302 `DbRecd_t (& cd , NULL ); 304 i( = LT || o= LTEQ || o= EQ ) 306 i(( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) != 0) 310 r : ( t = DB_NOTFOUND ? 0 :et); 311 } } 318 $DbRecd_ch_fld ( DbFld * f , * vue , OPERATOR ) 320 #ifde HAVE_WILDCARD_SUPPORT 321 gex_t eq ; 323 DBC * dbc ; 324 DbRecd cd ; 325 DBT key , da , pkey ; 326 vue_doub ; 327 u_lg vue_ulg ; 328 u_t32_t curs_ags ; 329 t , t_t ; 330 (* cmp )(*, *, OPERATOR ); 331 * ddr , * vu ; 333 dbc = NULL ; 334 `memt (& key , 0, (key)); 335 `memt (& pkey , 0, (pkey)); 336 `memt (& da , 0, (data)); 342 i( = WC || o= NWC ) { 343 #ifde HAVE_WILDCARD_SUPPORT 344 i( f -> ty ! STRING ) { 345 dbv -> `rx (dbenv, 349 i( `gcomp (& eq , vue , 0) != 0) { 350 dbv -> `rx (dbenv, "regcomp ofattern failed"); 353 vu = & eq ; 354 cmp = fld_cmp_ ; 356 dbv -> `rx (dbenv, 361 f -> ty ) { 362 DOUBLE : 363 i( `od_r ( vue , & vue_doub ) != 0) 365 cmp = fld_cmp_doub ; 366 vu = & vue_doub ; 367 key . size = (); 369 STRING : 370 vu = vue ; 371 cmp = fld_cmp_rg ; 372 key . size = ` ( vue ); 374 ULONG : 375 i( `oul_r ( vue , & vue_ulg ) != 0) 377 cmp = fld_cmp_ulg ; 378 vu = & vue_ulg ; 379 key . size = ( u_lg ); 382 NOTSET : 383 `abt (); 410 i( f -> cdy = NULL || = NEQ || o= WC || o= NWC ) { 411 i(( t = db -> `curs (db, NULL , & dbc , 0)) != 0) 412 r ; 413 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) { 414 i(( t = `DbRecd_ (& key , & da , & cd )) != 0) 416 ddr = ( u_t8_t *)& cd + f -> offt ; 417 i( `cmp ( ddr , vu , )) 418 `DbRecd_t (& cd , NULL ); 420 i( = EQ || o= LT || o= LTEQ ) 424 i(( t = 425 f -> cdy -> `curs (f->cdy, NULL , & dbc , 0)) != 0) 426 r ; 427 key . da = vu ; 428 curs_ags = = LT || o= LTEQ ? DB_FIRST : DB_SET_RANGE ; 429 i(( t = 430 dbc -> `c_pg (dbc, & key , & pkey , & da , curs_ags )) != 0) 431 de ; 432 i( = GT ) { 433 ( t = dbc -> `c_pg ( 434 dbc , & key , & pkey , & da , DB_NEXT )) == 0) { 435 i(( t = 436 `DbRecd_ (& pkey , & da , & cd )) != 0) 438 ddr = ( u_t8_t *)& cd + f -> offt ; 439 i( `cmp ( ddr , vu , ) != 0) 442 i( t != 0) 443 de ; 446 i(( t = `DbRecd_ (& pkey , & da , & cd )) != 0) 448 ddr = ( u_t8_t *)& cd + f -> offt ; 449 i( `cmp ( ddr , vu , )) 450 `DbRecd_t (& cd , NULL ); 452 i( = EQ || o= LT || o= LTEQ ) 454 } ( t = 455 dbc -> `c_pg (dbc, & key , & pkey , & da , DB_NEXT )) == 0); 458 de : i( t = DB_NOTFOUND ) 459 t = 0; 461 r : i( dbc ! NULL && ( t_t = dbc-> `c_o (dbc)!0 && t == 0) 462 t = t_t ; 464 #ifde HAVE_WILDCARD_SUPPORT 465 i( = WC || o= NWC ) 466 `g (& eq ); 469 ( t ); 470 } } @../examples_c/csv/code.c 9 ~"csv.h " 12 * mme ; 13 * mu ; 14 dy mty ; 15 mdx ; 16 } tFIELD ; 18 code_sour (); 19 code_hd (); 20 desc_dump (); 21 desc_ld (); 22 * ty_to_rg ( dy ); 23 uge (); 28 FILE * gc ; 29 FILE * gh ; 30 * gogme ; 31 gvbo ; 33 u_t gfld_t ; 34 FIELD * gflds ; 37 $ma ( gc , * gv []) 39 ch ; 40 * cfe , * hfe ; 43 i(( ogme = `chr ( gv [0], '/')= NULL ) 44 ogme = gv [0]; 46 ++ ogme ; 49 cfe = "csv_local.c"; 50 hfe = "csv_local.h"; 53 ( ch = `gt ( gc , gv , "c:f:h:v")! EOF ) 54 ch ) { 56 cfe = ݏrg ; 59 i( `eݒ ( ݏrg , "r", d = NULL ) { 60 `rtf ( dr , 61 "%s: %s\n", ݏrg , ` ( o )); 62 ( EXIT_FAILURE ); 66 hfe = ݏrg ; 69 ++ vbo ; 73 ( `uge ()); 75 gc - td ; 76 gv + td ; 78 i(* gv ! NULL ) 79 ( `uge ()); 82 i( `desc_ld ()) 83 ( EXIT_FAILURE ); 86 i( vbo && `desc_dump ()) 87 ( EXIT_FAILURE ); 90 i(( c = `fݒ ( cfe , "w")= NULL ) { 91 `rtf ( dr , 92 "%s: %s: %s\n", ogme , cfe , ` ( o )); 93 ( EXIT_FAILURE ); 95 i(( h = `fݒ ( hfe , "w")= NULL ) { 96 `rtf ( dr , 97 "%s: %s: %s\n", ogme , hfe , ` ( o )); 98 ( EXIT_FAILURE ); 102 i( `code_hd ()) 103 ( EXIT_FAILURE ); 104 i( `code_sour ()) 105 ( EXIT_FAILURE ); 107 ( EXIT_SUCCESS ); 108 } } 115 $desc_ld () 117 u_t fld_loc ; 118 vsi ; 119 * p , * t , ve_ch , buf [256]; 121 fld_loc = vsi = 0; 122 `fgs ( buf , (buf), d ! NULL ) { 123 i(( p = `rchr ( buf , '\n')= NULL ) { 124 `rtf ( dr , "%s: iultolg\n", ogme ); 127 * p = '\0'; 130 p = buf ; `isa (*p); ++p) 134 i(* p == '\0' || *p == '#') 138 i(! vsi ) { 139 i( `cmp ( 140 p , "version", ("version") - 1) == 0) { 141 vsi = 1; 144 `rtf ( dr , 145 "%s:xed \"vsi\"e\n", ogme ); 153 i(* p == '}') { 154 vsi = 0; 159 i( fld_t = fld_loc && 160 ( flds = `loc (flds, fld_loc +100)= NULL ) { 161 `rtf ( dr , "%s: %s\n", ogme , ` ( o )); 166 t = p ; *!'\0' && ! `isa (*t); ++t) 168 ve_ch = * t ; 169 * t = '\0'; 170 i(( flds [ fld_t ]. me = `rdup ( p )= NULL || 171 ( flds [ fld_t ]. u = `rdup ( p )= NULL ) { 172 `rtf ( dr , "%s: %s\n", ogme , ` ( o )); 175 * t = ve_ch ; 176 p = t ; 178 flds [ fld_t ]. dx = 0; 179 flds [ fld_t ]. ty = NOTSET ; 182 ; * p !'\0' && `isa (*p); ++p) 184 i(* p == '\0') 188 t = p ; *!'\0' && ! `isa (*t); ++t) 190 ve_ch = * t ; 191 * t = '\0'; 192 i( `rcmp ( p , "double") == 0) 193 flds [ fld_t ]. ty = DOUBLE ; 194 i( `rcmp ( p , "index") == 0) 195 flds [ fld_t ]. dx = 1; 196 i( `rcmp ( p , "string") == 0) 197 flds [ fld_t ]. ty = STRING ; 198 i( `rcmp ( p , "ulong") == 0) 199 flds [ fld_t ]. ty = ULONG ; 201 `rtf ( dr , 202 "%s: unknowkeywd: %s\n", ogme , p ); 205 * t = ve_ch ; 206 p = t ; 210 p = flds [ fld_t ]. u ; *p != '\0'; ++p) 211 i( `iow (* p )) 212 * p = () `tou (*p); 213 ++ fld_t ; 215 i( ` ( d )) { 216 `rtf ( dr , "%s: std: %s\n", ogme , ` ( o )); 220 } } 227 $desc_dump () 229 FIELD * f ; 230 u_t i ; 232 f = flds , i = 0; i < fld_t ; ++i, ++f) { 233 `rtf ( dr , "fld {%s}: (", f -> me ); 234 f -> ty ) { 235 NOTSET : 236 `rtf ( dr , "ignored"); 238 DOUBLE : 239 `rtf ( dr , "double"); 241 STRING : 242 `rtf ( dr , "string"); 244 ULONG : 245 `rtf ( dr , "ulong"); 248 i( f -> dx ) 249 `rtf ( dr , ", indexed"); 250 `rtf ( dr , ")\n"); 253 } } 260 $code_hd () 262 FIELD * f ; 263 u_t i ; 265 `rtf ( h , "/*\n"); 266 `rtf ( h , " * DO NOT EDIT:utomiy buby %s.\n", ogme ); 267 `rtf ( h , " *\n"); 268 `rtf ( h , " * Record structure.\n"); 269 `rtf ( h , " */\n"); 270 `rtf ( h , "typedef struct __DbRecord {\n"); 271 `rtf ( h , "\tu_int32_t\tecno;\t\t/* Recordumber */\n"); 272 `rtf ( h , "\n"); 273 `rtf ( h , "\t/*\n"); 274 `rtf ( h , "\t * Management fields\n"); 275 `rtf ( h , "\t */\n"); 276 `rtf ( h , "\tvoid\t\t*raw;\t\t/* Memoryeturned by DB */\n"); 277 `rtf ( h , "\tu_char\t\t*record;\t/* Rawecord */\n"); 278 `rtf ( h , "\tsize_t\t\tecord_len;\t/* Rawecordength */\n\n"); 279 `rtf ( h , "\tu_int32_t\t field_count;\t/* Field count */\n"); 280 `rtf ( h , "\tu_int32_t\t version;\t/* Record version */\n\n"); 281 `rtf ( h , "\tu_int32_t\t*offset;\t/* Offsetable */\n"); 282 `rtf ( h , "\n"); 284 `rtf ( h , "\t/*\n"); 285 `rtf ( h , "\t * Indexed fields\n"); 286 `rtf ( h , "\t */\n"); 287 f = flds , i = 0; i < fld_t ; ++i, ++f) { 288 i( f -> ty = NOTSET ) 290 i( i != 0) 291 `rtf ( h , "\n"); 292 `rtf ( h , "#defe CSV_INDX_%s\t%d\n", f -> u , i + 1); 293 f -> ty ) { 294 NOTSET : 296 `abt (); 298 DOUBLE : 299 `rtf ( h , "\tdoub\t\%s;\n", f -> me ); 301 STRING : 302 `rtf ( h , "\tch\t\t*%s;\n", f -> me ); 304 ULONG : 305 `rtf ( h , "\tu_lg\t\%s;\n", f -> me ); 309 `rtf ( h , "} DbRecord;\n"); 312 } } 319 $code_sour () 321 FIELD * f ; 322 u_t i ; 324 `rtf ( c , "/*\n"); 325 `rtf ( c , 326 " * DO NOT EDIT:utomiy buby %s.\n", ogme ); 327 `rtf ( c , " *\n"); 328 `rtf ( c , " * Initializedecord structure.\n"); 329 `rtf ( c , " */\n"); 330 `rtf ( c , "\n"); 331 `rtf ( c , "#include \"csv.h\"\n"); 332 `rtf ( c , "#include \"csv_local.h\"\n"); 333 `rtf ( c , "\n"); 334 `rtf ( c , "DbRecord DbRecord_base = {\n"); 335 `rtf ( c , "\t0,\t\t/* Recordumber */\n"); 336 `rtf ( c , "\tNULL,\t\t/* Memoryeturned by DB */\n"); 337 `rtf ( c , "\tNULL,\t\t/* Rawecord */\n"); 338 `rtf ( c , "\t0,\t\t/* Rawecordength */\n"); 339 `rtf ( c , "\t%d,\t\t/* Fld cou */\n", fld_t ); 340 `rtf ( c , "\t0,\t\t/* Record version */\n"); 341 `rtf ( c , "\tNULL,\t\t/* Offsetable */\n"); 342 `rtf ( c , "\n"); 343 f = flds , i = 0; i < fld_t ; ++i, ++f) { 344 i( f -> ty = NOTSET ) 346 f -> ty ) { 347 NOTSET : 348 `abt (); 351 DOUBLE : 352 ULONG : 353 `rtf ( c , "\t0,\t\t/* %*/\n", f -> me ); 355 STRING : 356 `rtf ( c , "\tNULL,\t\t/* %*/\n", f -> me ); 360 `rtf ( c , "};\n"); 362 `rtf ( c , "\n"); 363 `rtf ( c , "DbField fieldlist[] = {\n"); 364 f = flds , i = 0; i < fld_t ; ++i, ++f) { 365 i( f -> ty = NOTSET ) 367 `rtf ( c , "\t{ \"%s\",", f -> me ); 368 `rtf ( c , " CSV_INDX_%s,", f -> u ); 369 `rtf ( c , "\n\ %s,", `ty_to_rg ( f -> ty )); 370 `rtf ( c , " %d,", f -> dx ? 1 : 0); 371 `rtf ( c , " NULL,"); 372 `rtf ( c , " FIELD_OFFSET(%s)},\n", f -> me ); 374 `rtf ( c , "\t{NULL, 0, STRING, 0, NULL, 0}\n};\n"); 377 } } 380 $ty_to_rg ( ty ) 381 dy ty ; 383 ty ) { 384 NOTSET : 386 DOUBLE : 388 STRING : 390 ULONG : 394 `abt (); 396 } } 399 $uge () 401 () `rtf ( dr , 403 ogme ); 404 `ex (1); 405 } } @../examples_c/csv/db.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 13 com_ut32 ( DB *, cڡ DBT *, const DBT *); 20 $csv_v_ݒ (cڡ * home , is_rdly ) 22 t ; 24 dbv = NULL ; 25 db = NULL ; 28 i(( t = `db_v_ (& dbv , 0)) != 0) { 29 `rtf ( dr , 30 "%s: db_v_: %s\n", ogme , `db_ ( t )); 38 dbv -> `t_rfe (dbv, dr ); 39 dbv -> `t_fx (dbv, ogme ); 45 i(( t = dbv -> `t_chesize (dbenv, 0, 1048576, 1)) != 0) { 46 dbv -> `r (dbv, t , "DB_ENV->set_cachesize"); 55 i(( t = dbv -> `ݒ (dbv, home , 56 DB_JOINENV | DB_USE_ENVIRON , 0)) != 0 && 57 ( t = dbv -> `ݒ (dbv, home , 58 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0) { 59 dbv -> `r (dbv, t , "DB_ENV->open"); 64 i(( t = `db_ (& db , dbv , 0)) != 0) { 65 dbv -> `r (dbv, t , "db_create"); 72 i(( t = db -> `t_gesize (db, 32 * 1024)) != 0) { 73 dbv -> `r (dbv, t , "DB->set_pagesize"); 83 i(( t = db -> `t_bt_com (db, com_ut32 )) != 0) { 84 dbv -> `r (dbv, t , "DB->set_bt_compare"); 89 i(( t = db -> `ݒ (db, NULL , 90 "imy", NULL , DB_BTREE , is_rdly ? 0 : DB_CREATE , 0)) != 0) { 91 dbv -> `r (dbv, t , "DB->open:rimary"); 96 i(( t = `csv_cdy_ݒ ()) != 0) 100 } } 107 $csv_v_o () 109 t , t_t ; 111 t = 0; 114 t = `csv_cdy_o (); 117 i( db ! NULL && ( t_t = db-> `o (db, 0)) != 0) { 118 dbv -> `r (dbv, t , "DB->close"); 119 i( t == 0) 120 t = t_t ; 122 i(( t_t = dbv -> `o (dbenv, 0)) != 0) { 123 `rtf ( dr , 124 "%s: DB_ENV->o: %s\n", ogme , `db_ ( t )); 125 i( t == 0) 126 t = t_t ; 129 ( t ); 130 } } 137 $csv_cdy_ݒ () 139 DB * sdb ; 140 DbFld * f ; 141 t , (* fcmp )( DB *, cڡ DBT *, const DBT *); 146 f = fldli ; f-> me ! NULL ; ++f) { 147 i( f -> dx == 0) 150 i(( t = `db_ (& sdb , dbv , 0)) != 0) { 151 dbv -> `r (dbv, t , "db_create"); 154 sdb -> p_ive = f ; 157 i(( t = sdb -> `t_gesize (sdb, 8 * 1024)) != 0) { 158 dbv -> `r (dbv, t , "DB->set_pagesize"); 166 f -> ty ) { 167 DOUBLE : 168 fcmp = com_doub ; 170 ULONG : 171 fcmp = com_ulg ; 173 NOTSET : 174 STRING : 176 fcmp = NULL ; 179 i( fcmp ! NULL && 180 ( t = sdb -> `t_bt_com (sdb, fcmp )) != 0) { 181 dbv -> `r (dbv, t , "DB->set_bt_compare"); 186 i(( t = sdb -> `t_ags (sdb, DB_DUPSORT )) != 0) { 187 dbv -> `r (dbv, t , "DB->set_flags"); 190 i(( t = sdb -> `t_dup_com (sdb, com_ulg )) != 0) { 191 dbv -> `r (dbv, t , "DB->set_dup_compare"); 195 i(( t = sdb -> `ݒ ( 196 sdb , NULL , f -> me , NULL, DB_BTREE , DB_CREATE , 0)) != 0) { 197 dbv -> `r (dbv, t , "DB->ݒ: %s", f -> me ); 200 i(( t = sdb -> `assoc ( 201 db , NULL , sdb , cdy_back , DB_CREATE )) != 0) { 202 dbv -> `r (dbv, t , "DB->set_associate"); 205 f -> cdy = sdb ; 209 } } 216 $csv_cdy_o () 218 DbFld * f ; 219 t , t_t ; 221 t = 0; 222 f = fldli ; f-> me ! NULL ; ++f) 223 i( f -> cdy ! NULL && ( t_t = 224 f -> cdy -> `o (f->cdy, 0)!0 && t == 0) 225 t = t_t ; 227 ( t ); 228 } } 235 $com_ut32 ( DB * db_g , cڡ DBT * a_g , cڡ DBT * b_g ) 237 u_t32_t a , b ; 239 db_g = db_arg; 241 `memy (& a , a_g -> da , ( u_t32_t )); 242 `memy (& b , b_g -> da , ( u_t32_t )); 243 ( a > b ? 1 : ((a < b) ? -1 : 0)); 244 } } @../examples_c/csv/load.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 13 um { mGL_OK , mGL_EOF , mGL_FAIL } tgle_us ; 15 put_fld_cou (cڡ *, size_t , u_t32_t *); 16 gle_us 17 put_gle (**, size_t *, size_t *); 18 put_put_loc ( u_t32_t **, size_t *, size_t, u_int32_t); 19 put_t_offt ( u_t32_t *, *, size_t , u_int32_t); 21 put_fmt gifmt ; 22 u_lg gcd_cou = 0; 23 u_lg gvsi ; 30 $put_ld ( put_fmt ifmt_g , u_lg vsi_g ) 32 gle_us g_us ; 33 DBT key , da ; 34 DBC * curs ; 35 u_t32_t fld_cou , imy_key , * put_le ; 36 size_t put_n , n , put_n ; 37 is_f , t ; 38 * put_le ; 40 fld_cou = 0; 43 ifmt = ifmt_g ; 44 vsi = vsi_g ; 51 i(( t = db -> `curs (db, NULL , & curs , 0)) != 0) { 52 dbv -> `r (dbv, t , "DB->cursor"); 55 `memt (& key , 0, (key)); 56 `memt (& da , 0, (data)); 57 i(( t = curs -> `c_g (curs, & key , & da , DB_LAST )) != 0) 58 i( t = DB_NOTFOUND ) 59 imy_key = 0; 61 dbv -> `r (dbv, t , "DB->cursor: DB_LAST"); 65 `memy (& imy_key , key . da , (primary_key)); 66 i(( t = curs -> `c_o (cursor)) != 0) { 67 dbv -> `r (dbv, t , "DBC->close"); 70 i( vbo ) 71 dbv -> `rx (dbenv, 73 ( u_lg ) imy_key ); 75 key . da = & imy_key ; 76 key . size = ( imy_key ); 77 put_le = NULL ; 78 put_le = NULL ; 79 put_n = put_n = 0; 84 is_f = 1; ( g_us = 85 `put_gle (& put_le , & put_n , & n )= GL_OK ;) { 86 ++ cd_cou ; 87 i( vbo > 1) 88 dbv -> `rx (dbv, "adg %lu", ( u_lg ) cd_cou ); 91 i( is_f ) { 92 is_f = 0; 95 i( `put_fld_cou ( 96 put_le , n , & fld_cou ) != 0) 102 i( `put_put_loc ( 103 & put_le , & put_n , n , fld_cou ) != 0) 110 i( `put_t_offt ( put_le , 111 put_le , n , fld_cou ) != 0) 114 ++ imy_key ; 116 `memy ( put_le + ( fld_cou + 2), put_le , n ); 117 da .d put_le ; 118 da . size = ( fld_cou + 2* ( u_t32_t + n ; 120 i( vbo > 1) 121 () `y_t ( 122 da .da, da. size , fld_cou ); 125 i(( t = db -> `put (db, NULL , & key , & da , 0)) != 0) { 126 dbv -> `r (dbv, t , 127 "DB->put: %lu", ( u_lg ) imy_key ); 132 i( g_us ! GL_EOF ) 135 i( vbo ) 136 dbv -> `rx (dbenv, 138 cd_cou ); 143 i(( t = db -> `sync (db, 0)) != 0) { 144 dbv -> `r (dbv, t , "DB->sync"); 149 } } 155 gle_us 156 $put_gle (** put_l , size_t * put_ , size_* ) 158 size_t put_n , n ; 159 ch ; 160 * put_le , * p , * dp ; 162 put_le = * put_l ; 163 put_n = * put_ ; 165 p = put_le ; 166 dp = put_le + put_n ; 168 n = 0; ( ch = `gch ()! EOF ;) { 169 i( ch == '\0') 171 ifmt ) { 172 FORMAT_NL : 173 i( ch == '\n') 174 d ; 176 FORMAT_EXCEL : 178 i( ch == '\n') 184 i( ch == '\015') { 185 i( n == 0) 187 d ; 190 i( put_le = dp ) { 191 put_n += 256; 192 put_n *= 2; 193 i(( put_le = 194 `loc ( put_le , put_n )= NULL ) { 195 dbv -> `r (dbv, o , 197 ( u_lg ) put_n ); 198 ( GL_FAIL ); 200 p = put_le ; 201 dp = p + put_n ; 204 i( `irt ( ch )) { 205 * p ++ = () ch ; 206 ++ n ; 210 d : i( n == 0) 211 ( GL_EOF ); 213 * = n ; 214 * put_l = put_le ; 215 * put_ = put_n ; 217 ( GL_OK ); 218 } } 225 $put_fld_cou (cڡ * le , size_t n , u_t32_t * fld_coup ) 227 u_t32_t fld_cou ; 228 qued ; 230 fld_cou = 1; 236 ifmt ) { 237 FORMAT_EXCEL : 238 qued = 0; 239 fld_cou = 1; n > 0; ++ le , --len) 240 i(* le == '"') 241 qued = !quoted; 242 i(* le =',' && ! qued ) 243 ++ fld_cou ; 245 FORMAT_NL : 246 fld_cou = 1; n > 0; ++ le , --len) 247 i(* le == ',') 248 ++ fld_cou ; 251 * fld_coup = fld_cou ; 253 i( vbo ) 254 dbv -> `rx (dbenv, 255 "pufmaduo%lu flds", ( u_t ) fld_cou ); 258 } } 265 $put_put_loc ( u_t32_t ** put_l , 266 size_t * put_ , size_ n , u_t32_t fld_cou ) 268 size_t tٮ ; 270 tٮ = ( fld_cou + 2* ( u_t32_t + n ; 271 i( tٮ > * put_ && 272 (* put_l = `loc (*put_l, * put_ + tٮ )= NULL ) { 273 dbv -> `r (dbv, o , 275 ( u_lg )* put_ ); 279 } } 286 $put_t_offt ( u_t32_t * put_le , 287 * put_le , size_t n , u_t32_t fld_cou ) 289 u_t32_t * ; 290 qued ; 291 * p , * dp ; 293 = put_le ; 296 * ++ = vsi ; 302 * ++ = 0; 303 qued = 0; 304 p = put_le , dp = iut_l+ n ;; ++p) { 305 i( ifmt = FORMAT_EXCEL && p < dp ) { 306 i(* p == '"') 307 qued = !quoted; 308 i( qued ) 311 i(* p =',' || = dp ) { 312 i( fld_cou == 0) { 313 dbv -> `rx (dbenv, 315 cd_cou ); 318 -- fld_cou ; 320 * ++ = ( u_t32_t )( p - put_le ) + 1; 322 i( vbo > 1) 323 dbv -> `rx (dbenv, 324 "off%lu: {%.*s}", [-1], 325 `OFFSET_LEN ( , -2), put_le + op[-2]); 331 i( p = dp || + 1 ==ndp) 335 * ++ = ( u_t32_t )( p - put_le ); 337 i( fld_cou != 0) { 338 dbv -> `rx (dbenv, 340 cd_cou ); 343 `memy ( , put_le , n ); 346 } } @../examples_c/csv/load_main.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 13 uge (); 18 DB_ENV * gdbv ; 19 DB * gdb ; 20 DB ** gcdy ; 21 gvbo ; 22 * gogme ; 25 $ma ( gc , * gv []) 27 put_fmt ifmt ; 28 u_lg vsi ; 29 ch , t , t_t ; 30 * home ; 33 dbv = NULL ; 34 db = NULL ; 35 i(( ogme = `chr ( gv [0], '/')= NULL ) 36 ogme = gv [0]; 38 ++ ogme ; 39 vbo = 0; 42 home = NULL ; 43 ifmt = FORMAT_NL ; 44 vsi = 1; 47 ( ch = `gt ( gc , gv , "F:f:h:V:v")! EOF ) 48 ch ) { 50 i( `eݒ ( ݏrg , "r", d = NULL ) { 51 `rtf ( dr , 52 "%s: %s\n", ݏrg , `db_ ( o )); 53 ( EXIT_FAILURE ); 57 i( `rcmp ( ݏrg , "excel") == 0) { 58 ifmt = FORMAT_EXCEL ; 61 ( `uge ()); 63 home = ݏrg ; 66 i( `oul_r ( ݏrg , & vsi )) 67 ( EXIT_FAILURE ); 70 ++ vbo ; 74 ( `uge ()); 76 gc - td ; 77 gv + td ; 79 i(* gv ! NULL ) 80 ( `uge ()); 88 i( home = NULL ) 89 home = `gv ("DB_HOME"); 90 i( home ! NULL ) 91 () `mkd ( home , S_IRWXU ); 94 i( `csv_v_ݒ ( home , 0) != 0) 95 ( EXIT_FAILURE ); 98 t = `put_ld ( ifmt , vsi ); 101 i(( t_t = `csv_v_o ()!0 && t == 0) 102 t = t_t ; 104 ( t =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 105 } } 112 $uge () 114 () `rtf ( dr , 115 "uge: %[-v] [-Fxl] [-csv-fe] [-h home]\n", ogme ); 116 ( EXIT_FAILURE ); 117 } } @../examples_c/csv/query.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 13 quy_by_fld (*); 14 quy_fldli (*); 15 quy_hp (*); 16 quy_uge (); 18 s_cmdb { 19 * mcmd ; 20 (* mf )(*); 21 * mhp ; 22 } tCMDTAB ; 24 CMDTAB gcmdb [] = { 26 quy_hp , 29 NULL , 32 quy_fldli , 35 quy_hp , 38 NULL , 40 { NULL , 41 quy_by_fld , 43 { NULL , NULL, NULL } 51 $quy_ive () 53 de ; 54 * p , put [256]; 57 `tf ("Query: "); 58 () `fush ( dout ); 59 i( `fgs ( put , (put), d = NULL ) { 60 `tf ("\n"); 61 i( ` ( d )) { 62 dbv -> `r (dbv, o , 68 i(( p = `rchr ( put , '\n')= NULL ) { 69 dbv -> `rx (dbenv, "input bufferoo small"); 72 * p = '\0'; 73 i( `quy ( put , & de ) != 0) 75 i( de != 0) 79 } } 86 $quy (* cmd , * dڕ ) 88 CMDTAB * p ; 90 i( dڕ ! NULL ) 91 * dڕ = 0; 93 p = cmdb ;-> cmd ! NULL ; ++p) 94 i( p -> cmd ! NULL && 95 `cmp ( cmd , p ->cmd, ` (p->cmd)) == 0) 98 i( p -> cmd = NULL ) 99 ( `quy_by_fld ( cmd )); 101 i( p -> f = NULL ) { 102 i( dڕ ! NULL ) 103 * dڕ = 1; 107 ( p -> `f ( cmd )); 108 } } 115 $quy_by_fld (* put ) 117 OPERATOR ݔ ; 118 size_t n ; 119 * fld , * , * vue ; 126 `isa (* put )) 127 ++ put ; 132 i(( n = `rcn ( fld = put , "<>!=~")) == 0) 133 ( `quy_uge ()); 134 = fld + n ; 137 [0]) { 139 ݔ = WC ; 140 vue = + 1; 143 i( [1] == '=') { 144 ݔ = NEQ ; 145 vue = + 2; 148 i( [1] == '~') { 149 ݔ = NWC ; 150 vue = + 2; 153 ( `quy_uge ()); 155 i( [1] == '=') { 156 ݔ = LTEQ ; 157 vue = + 2; 159 ݔ = LT ; 160 vue = + 1; 164 ݔ = EQ ; 165 i( [1] == '=') 166 vue = + 2; 168 vue = + 1; 171 i( [1] == '=') { 172 ݔ = GTEQ ; 173 vue = + 2; 175 ݔ = GT ; 176 vue = + 1; 180 ( `quy_uge ()); 184 -- > put && `isa (*op)) 186 i( = put ) 187 ( `quy_uge ()); 188 [1] = '\0'; 191 `isa (* vue )) 192 ++ vue ; 193 i(* vue == '\0') 194 ( `quy_uge ()); 196 ( `DbRecd_ch_fld_me ( fld , vue , ݔ )); 197 } } 204 $quy_fldli (* put ) 206 DbFld * f ; 208 put = input; 210 f = fldli ; f-> me ! NULL ; ++f) 211 `tf ("fld %3d: %s\n", f -> fldno , f-> me ); 213 } } 220 $quy_hp (* put ) 222 CMDTAB * p ; 224 put = input; 226 `tf ("Query commands:\n"); 227 p = cmdb ;-> hp ! NULL ; ++p) 228 `tf ("\t%s\n", p -> hp ); 230 } } 237 $quy_uge () 239 `rtf ( dr , "%s: quy syax\n", ogme ); 240 ( `quy_hp ( NULL )); 241 } } @../examples_c/csv/query_main.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 13 uge (); 18 DB_ENV * gdbv ; 19 DB * gdb ; 20 gvbo ; 21 * gogme ; 24 $ma ( gc , * gv []) 26 ch , de , t , t_t ; 27 ** i , ** p , * home ; 30 dbv = NULL ; 31 db = NULL ; 32 i(( ogme = `chr ( gv [0], '/')= NULL ) 33 ogme = gv [0]; 35 ++ ogme ; 36 vbo = 0; 39 home = NULL ; 40 t = 0; 43 i(( p = i = 44 (**) `oc (( size_t ) gc + 1, (*))= NULL ) { 45 `rtf ( dr , "%s: %s\n", ogme , ` ( ENOMEM )); 46 ( EXIT_FAILURE ); 50 ( ch = `gt ( gc , gv , "c:h:v")! EOF ) 51 ch ) { 53 * p ++ = ݏrg ; 56 home = ݏrg ; 59 ++ vbo ; 63 ( `uge ()); 65 gc - td ; 66 gv + td ; 68 i(* gv ! NULL ) 69 ( `uge ()); 72 i( `csv_v_ݒ ( home , 1) != 0) 73 ( EXIT_FAILURE ); 76 i( p = i ) 77 t = `quy_ive (); 79 p = i , de = 0; *! NULL && !done; ++clp) 80 i(( t = `quy (* p , & de )) != 0) 84 i(( t_t = `csv_v_o ()!0 && t == 0) 85 t = t_t ; 87 ( t =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 88 } } 95 $uge () 97 () `rtf ( dr , "uge: %[-v] [-cmd] [-h home]\n", ogme ); 98 ( EXIT_FAILURE ); 99 } } @../examples_c/csv/util.c 9 ~"csv.h " 10 ~"csv_lol.h " 11 ~"csv_ex.h " 18 $y_t (* da , size_t n , u_t32_t fld_cou ) 20 u_t32_t a , * offt ; 21 u_t i ; 22 * w ; 24 `memy (& a , da , ( u_t32_t )); 25 `tf ("\tvsi: %lu\n", ( u_lg ) a ); 27 offt = ( u_t32_t *) da + 1; 28 i( fld_cou == 0) { 29 `memy (& a , offt ++, ( u_t32_t )); 30 `tf ("\tcumm: %lu flds: {%.*s}\n", ( u_lg ) a , 31 ()( n - 2 * ( u_t32_t )), 32 ( u_t8_t *) da + 2 * ( u_t32_t )); 34 w = (*)( offt + ( fld_cou + 1)); 35 i = 0; i < fld_cou ; ++i) { 36 `memy (& a , & offt [ i ], ( u_t32_t )); 37 n = `OFFSET_LEN ( offt , i ); 38 `tf ("\toffset %4lu:en %4lu: {%.*s}\n", 39 ( u_lg ) offt [ i ], 40 ( u_lg ) n , (, w + a ); 45 } } 52 $od_r (* put , * vp ) 54 v ; 55 * d ; 60 o = 0; 61 v = `od ( put , & d ); 62 i( o = ERANGE ) { 63 dbv -> `r (dbv, ERANGE , "%s", put ); 66 i( put [0] == '\0' || 67 ( d [0] !'\0' &&nd[0] !'\n' && ! `isa (end[0]))) { 68 dbv -> `rx (dbenv, 69 "%s: invid fltgogumt", put ); 73 * vp = v ; 75 } } 82 $oul_r (* put , u_lg * vp ) 84 u_lg v ; 85 * d ; 90 o = 0; 91 v = `oul ( put , & d , 10); 92 i( o = ERANGE ) { 93 dbv -> `r (dbv, ERANGE , "%s", put ); 96 i( put [0] == '\0' || 97 ( d [0] !'\0' &&nd[0] !'\n' && ! `isa (end[0]))) { 98 dbv -> `rx (dbv, "%s: invid unsigdgrgumt", put ); 102 * vp = v ; 104 } } 107 $cdy_back ( DB * db_g , cڡ DBT * key , cڡ DBT * da , DBT * su ) 109 DbFld * f ; 110 DbRecd cd ; 111 * ddr , * addr ; 114 i( `DbRecd_ ( key , da , & cd ) != 0) 117 f = db_g -> p_ive ; 118 ddr = ( u_t8_t *)& cd + f -> offt ; 124 f -> ty ) { 125 STRING : 126 su -> da = *(**) ddr ; 127 su -> size = ` (*(**) ddr ) + 1; 129 DOUBLE : 130 i(( addr = `mloc (())= NULL ) 132 su -> da = addr ; 133 su -> size = (); 134 su -> ags = DB_DBT_APPMALLOC ; 135 `memy ( addr , ddr , ()); 137 ULONG : 138 i(( addr = `mloc (( u_lg ))= NULL ) 140 su -> da = addr ; 141 su -> size = ( u_lg ); 142 su -> ags = DB_DBT_APPMALLOC ; 143 `memy ( addr , ddr , ( u_lg )); 146 NOTSET : 147 `abt (); 152 } } 159 $com_doub ( DB * db_g , cڡ DBT * a_g , cڡ DBT * b_g ) 161 a , b ; 163 db_g = db_arg; 165 `memy (& a , a_g -> da , ()); 166 `memy (& b , b_g -> da , ()); 167 ( a > b ? 1 : ((a < b) ? -1 : 0)); 168 } } 175 $com_ulg ( DB * db_g , cڡ DBT * a_g , cڡ DBT * b_g ) 177 u_lg a , b ; 179 db_g = db_arg; 181 `memy (& a , a_g -> da , ( u_lg )); 182 `memy (& b , b_g -> da , ( u_lg )); 183 ( a > b ? 1 : ((a < b) ? -1 : 0)); 184 } } 191 $fld_cmp_doub (* a , * b , OPERATOR ) 193 ) { 194 GT : 195 (*(*) a > *(*) b ); 196 GTEQ : 197 (*(*) a >*(*) b ); 198 LT : 199 (*(*) a < *(*) b ); 200 LTEQ : 201 (*(*) a <*(*) b ); 202 NEQ : 203 (*(*) a !*(*) b ); 204 EQ : 205 (*(*) a =*(*) b ); 206 WC : 207 NWC : 211 `abt (); 213 } } 220 $fld_cmp_ (* a , * b , OPERATOR ) 222 = op; 224 ) { 225 #ifde HAVE_WILDCARD_SUPPORT 226 WC : 227 ( `gexec ( b , *(**) a , 0, NULL , 0) == 0); 228 NWC : 229 ( `gexec ( b , *(**) a , 0, NULL , 0) != 0); 231 WC : 232 NWC : 233 a =; 234 b = b; 237 GT : 238 GTEQ : 239 LT : 240 LTEQ : 241 NEQ : 242 EQ : 246 `abt (); 248 } } 255 $fld_cmp_rg (* a , * b , OPERATOR ) 257 v ; 259 v = `rcmp (*(**) a , b ); 260 ) { 261 GT : 262 ( v > 0 ? 1 : 0); 263 GTEQ : 264 ( v >= 0 ? 1 : 0); 265 LT : 266 ( v < 0 ? 1 : 0); 267 LTEQ : 268 ( v <= 0 ? 1 : 0); 269 NEQ : 270 ( v ? 1 : 0); 271 EQ : 272 ( v ? 0 : 1); 273 WC : 274 NWC : 278 `abt (); 280 } } 287 $fld_cmp_ulg (* a , * b , OPERATOR ) 289 ) { 290 GT : 291 (*( u_lg *) a > *(u_lg *) b ); 292 GTEQ : 293 (*( u_lg *) a >*(u_lg *) b ); 294 LT : 295 (*( u_lg *) a < *(u_lg *) b ); 296 LTEQ : 297 (*( u_lg *) a <*(u_lg *) b ); 298 NEQ : 299 (*( u_lg *) a !*(u_lg *) b ); 300 EQ : 301 (*( u_lg *) a =*(u_lg *) b ); 302 WC : 303 NWC : 307 `abt (); 309 } } @../examples_c/ex_access.c 9 ~<sys/tys.h > 11 ~<dio.h > 12 ~<dlib.h > 13 ~<rg.h > 15 #ifde _WIN32 16 gt (, * const *, const *); 18 ~<unid.h > 21 ~<db.h > 23 #DATABASE "acss.db" ) 24 ma __P ((, *[])); 25 uge __P (()); 28 $ma ( gc , gv ) 29 gc ; 30 * gv []; 32 td ; 33 DB * dbp ; 34 DBC * db ; 35 DBT key , da ; 36 size_t n ; 37 ch , t , rag ; 38 * daba , * p , * t , buf [1024], rbuf [1024]; 39 cڡ * ogme = "ex_access"; 41 rag = 0; 42 ( ch = `gt ( gc , gv , "r")! EOF ) 43 ch ) { 45 rag = 1; 49 ( `uge ()); 51 gc - td ; 52 gv + td ; 55 daba = * gv = NULL ? DATABASE :rgv[0]; 58 i( rag ) 59 () `move ( daba ); 62 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 63 `rtf ( dr , 64 "%s: db_: %s\n", ogme , `db_ ( t )); 65 ( EXIT_FAILURE ); 67 dbp -> `t_rfe (dbp, dr ); 68 dbp -> `t_fx (dbp, ogme ); 69 i(( t = dbp -> `t_gesize (dbp, 1024)) != 0) { 70 dbp -> `r (dbp, t , "set_pagesize"); 71 r1 ; 73 i(( t = dbp -> `t_chesize (dbp, 0, 32 * 1024, 0)) != 0) { 74 dbp -> `r (dbp, t , "set_cachesize"); 75 r1 ; 77 i(( t = dbp -> `ݒ (dbp, 78 NULL , daba , NULL, DB_BTREE , DB_CREATE , 0664)) != 0) { 79 dbp -> `r (dbp, t , "%s: on", daba ); 80 r1 ; 87 `memt (& key , 0, ( DBT )); 88 `memt (& da , 0, ( DBT )); 90 `tf ("input> "); 91 `fush ( dout ); 92 i( `fgs ( buf , (buf), d = NULL ) 94 i( `rcmp ( buf , "exit\n") == 0 || strcmp(buf, "quit\n") == 0) 96 i(( n = ` ( buf )) <= 1) 98 t = rbuf , p = buf + ( n - 2); >= buf;) 99 * t ++ = * p --; 100 * t ++ = '\0'; 102 key . da = buf ; 103 da .d rbuf ; 104 da . size = key .siz( u_t32_t ) n - 1; 106 t = 107 dbp -> `put (dbp, NULL , & key , & da , DB_NOOVERWRITE )) { 111 dbp -> `r (dbp, t , "DB->put"); 112 i( t ! DB_KEYEXIST ) 113 r1 ; 117 `tf ("\n"); 120 i(( t = dbp -> `curs (dbp, NULL , & db , 0)) != 0) { 121 dbp -> `r (dbp, t , "DB->cursor"); 122 r1 ; 126 `memt (& key , 0, (key)); 127 `memt (& da , 0, (data)); 130 ( t = db -> `g (db, & key , & da , DB_NEXT )) == 0) 131 `tf ("%.*s : %.*s\n", 132 () key . size , (*)key. da , 133 () da . size , (*)data.data); 134 i( t ! DB_NOTFOUND ) { 135 dbp -> `r (dbp, t , "DBcursor->get"); 136 r2 ; 140 i(( t = db -> `o (dbcp)) != 0) { 141 dbp -> `r (dbp, t , "DBcursor->close"); 142 r1 ; 144 i(( t = dbp -> `o (dbp, 0)) != 0) { 145 `rtf ( dr , 146 "%s: DB->o: %s\n", ogme , `db_ ( t )); 147 ( EXIT_FAILURE ); 149 ( EXIT_SUCCESS ); 151 r2 : () db -> `o (dbcp); 152 r1 : () dbp -> `o (dbp, 0); 153 ( EXIT_FAILURE ); 154 } } 157 $uge () 159 () `rtf ( dr , "usage:x_access [-r] [database]\n"); 160 ( EXIT_FAILURE ); 161 } } @../examples_c/ex_apprec/ex_apprec.c 9 ~<sys/tys.h > 10 ~<sys/.h > 12 ~<o.h > 13 ~<ddef.h > 14 ~<dio.h > 15 ~<dlib.h > 16 ~<rg.h > 17 ~<unid.h > 19 ~<db.h > 21 ~"ex_ec.h " 23 ec_dich __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 24 ݒ_v __P ((cڡ *, FILE *, cڡ *, DB_ENV **)); 25 vify_abn __P (( DB_ENV *, const *)); 26 vify_en __P (( DB_ENV *, const *)); 29 $ma ( gc , gv ) 30 gc ; 31 * gv []; 33 * ݏrg ; 34 DB_ENV * dbv ; 35 DB_LSN l ; 36 DB_TXN * txn ; 37 DBT dmedbt ; 38 t ; 39 cڡ * home ; 40 ch , dme [256]; 41 cڡ * ogme = "ex_apprec"; 44 home = "TESTDIR"; 46 ( ch = `gt ( gc , gv , "h:")! EOF ) 47 ch ) { 49 home = ݏrg ; 52 `rtf ( dr , "uge: %[-h home]", ogme ); 53 `ex ( EXIT_FAILURE ); 56 `tf ("Set upnvironment.\n"); 57 i(( t = `ݒ_v ( home , dr , ogme , & dbv )) != 0) 58 ( EXIT_FAILURE ); 60 `tf ("Create directory inransaction.\n"); 65 `memt (& dmedbt , 0, (dirnamedbt)); 66 `rtf ( dme , "%s/MYDIRECTORY", home ); 67 dmedbt . da = dme ; 68 dmedbt . size = ` ( dme ) + 1; 70 i(( t = dbv -> `txn_beg (dbv, NULL , & txn , 0)) != 0) { 71 dbv -> `r (dbv, t , "txn_begin"); 72 ( EXIT_FAILURE ); 76 `memt (& l , 0, (lsn)); 77 i(( t = 78 `ex_ec_mkd_log ( dbv , txn , & l , 0, & dmedbt )) != 0) { 79 dbv -> `r (dbv, t , "mkdir_log"); 80 ( EXIT_FAILURE ); 82 i( `mkd ( dme , 0755) != 0) { 83 dbv -> `r (dbv, o , "mkdir"); 84 ( EXIT_FAILURE ); 87 `tf ("Verifyhe directory'sresence: "); 88 `vify_en ( dbv , dme ); 89 `tf ("check.\n"); 92 `tf ("Abortheransaction.\n"); 93 i(( t = txn -> `abt (txn)) != 0) { 94 dbv -> `r (dbv, t , "txn_abort"); 95 ( EXIT_FAILURE ); 98 `tf ("Verifyhe directory'sbsence: "); 99 `vify_abn ( dbv , dme ); 100 `tf ("check.\n"); 103 `tf ("Create directory inransaction.\n"); 104 `memt (& dmedbt , 0, (dirnamedbt)); 105 `rtf ( dme , "%s/MYDIRECTORY", home ); 106 dmedbt . da = dme ; 107 dmedbt . size = ` ( dme ) + 1; 108 i(( t = dbv -> `txn_beg (dbv, NULL , & txn , 0)) != 0) { 109 dbv -> `r (dbv, t , "txn_begin"); 110 ( EXIT_FAILURE ); 113 `memt (& l , 0, (lsn)); 114 i(( t = 115 `ex_ec_mkd_log ( dbv , txn , & l , 0, & dmedbt )) != 0) { 116 dbv -> `r (dbv, t , "mkdir_log"); 117 ( EXIT_FAILURE ); 119 i( `mkd ( dme , 0755) != 0) { 120 dbv -> `r (dbv, o , "mkdir"); 121 ( EXIT_FAILURE ); 124 `tf ("Verifyhe directory'sresence: "); 125 `vify_en ( dbv , dme ); 126 `tf ("check.\n"); 129 `tf ("Commitheransaction.\n"); 130 i(( t = txn -> `comm (txn, 0)) != 0) { 131 dbv -> `r (dbv, t , "txn_commit"); 132 ( EXIT_FAILURE ); 135 `tf ("Verifyhe directory'sresence: "); 136 `vify_en ( dbv , dme ); 137 `tf ("check.\n"); 139 `tf ("Nowemovehe directory,henunecovery.\n"); 140 i(( t = dbv -> `o (dbenv, 0)) != 0) { 141 `rtf ( dr , "DB_ENV->o: %s\n", `db_ ( t )); 142 ( EXIT_FAILURE ); 144 i( `rmd ( dme ) != 0) { 145 `rtf ( dr , 146 "%s:md faed wh %s", ogme , 147 ` ( o )); 149 `vify_abn ( dbv , dme ); 152 i(( t = `ݒ_v ( home , dr , ogme , & dbv )) != 0) 153 ( EXIT_FAILURE ); 155 `tf ("Verifyhe directory'sresence: "); 156 `vify_en ( dbv , dme ); 157 `tf ("check.\n"); 160 i(( t = dbv -> `o (dbenv, 0)) != 0) { 161 `rtf ( dr , "DB_ENV->o: %s\n", `db_ ( t )); 162 ( EXIT_FAILURE ); 165 ( EXIT_SUCCESS ); 166 } } 169 $ݒ_v ( home , r , ogme , dbvp ) 170 cڡ * home , * ogme ; 171 FILE * r ; 172 DB_ENV ** dbvp ; 174 DB_ENV * dbv ; 175 t ; 181 i(( t = `db_v_ (& dbv , 0)) != 0) { 182 `rtf ( r , "%s: %s\n", ogme , `db_ ( t )); 183 ( t ); 185 dbv -> `t_rfe (dbv, r ); 186 dbv -> `t_fx (dbv, ogme ); 189 i(( t = dbv -> `t_p_dich (dbv, ec_dich )) != 0) { 190 dbv -> `r (dbv, t , "set_app_dispatch"); 191 ( t ); 198 i(( t = 199 dbv -> `ݒ (dbv, home , DB_CREATE | DB_RECOVER | DB_INIT_LOCK | 200 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 0)) != 0) { 201 dbv -> `r (dbv, t , "vmݒ: %s", home ); 202 dbv -> `o (dbenv, 0); 203 ( t ); 206 * dbvp = dbv ; 208 } } 215 $ec_dich ( dbv , dbt , l , ) 216 DB_ENV * dbv ; 217 DBT * dbt ; 218 DB_LSN * l ; 219 db_cs ; 221 u_t32_t y ; 224 `memy (& y , dbt -> da , (rectype)); 226 y ) { 227 DB_ex_ec_mkd : 228 ( `ex_ec_mkd_cov ( dbv , dbt , l , , NULL )); 234 dbv -> `rx (dbenv, "Unexpectedogecordypencountered"); 235 ( EINVAL ); 237 } } 240 $vify_abn ( dbv , dme ) 241 DB_ENV * dbv ; 242 cڡ * dme ; 245 i( `acss ( dme , F_OK ) == 0) { 246 dbv -> `rx (dbenv, "Error--directoryresent!"); 247 `ex ( EXIT_FAILURE ); 251 } } 254 $vify_en ( dbv , dme ) 255 DB_ENV * dbv ; 256 cڡ * dme ; 259 i( `acss ( dme , F_OK ) != 0) { 260 dbv -> `rx (dbenv, "Error--directoryotresent!"); 261 `ex ( EXIT_FAILURE ); 265 } } @../examples_c/ex_apprec/ex_apprec_auto.c 3 ~"db_cfig.h " 5 ~<y.h > 6 ~<o.h > 7 ~<dlib.h > 8 ~<rg.h > 10 ~<db.h > 12 ~"ex_ec.h " 18 $ex_ec_mkd_log ( dbv , tx , t_lp , ags , 19 dme ) 20 DB_ENV * dbv ; 21 DB_TXN * tx ; 22 DB_LSN * t_lp ; 23 u_t32_t ags ; 24 cڡ DBT * dme ; 26 DBT logc ; 27 DB_LSN * lp , nu_l , * p ; 28 u_t32_t zo , y , txn_num ; 29 u_t ad ; 30 u_t8_t * bp ; 31 t ; 33 y = DB_ex_ec_mkd ; 34 ad = 0; 35 p = t_lp ; 37 t = 0; 39 i( tx = NULL ) { 40 txn_num = 0; 41 lp = & nu_l ; 42 nu_l . fe =u_l. offt = 0; 50 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 51 txn_num = tx -> txnid ; 54 logc . size = ( y + ( txn_num + ( DB_LSN ) 55 + ( u_t32_t + ( dme = NULL ? 0 : dme-> size ); 56 i(( logc . da = `mloc ogc. size )= NULL ) 57 ( ENOMEM ); 58 bp = logc . da ; 60 i( ad > 0) 61 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 63 bp = logc . da ; 65 `memy ( bp , & y , (rectype)); 66 bp +( y ); 68 `memy ( bp , & txn_num , (txn_num)); 69 bp +( txn_num ); 71 `memy ( bp , lp , ( DB_LSN )); 72 bp +( DB_LSN ); 74 i( dme = NULL ) { 75 zo = 0; 76 `memy ( bp , & zo , ( u_t32_t )); 77 bp +( u_t32_t ); 79 `memy ( bp , & dme -> size , (dirname->size)); 80 bp +( dme -> size ); 81 `memy ( bp , dme -> da , dme-> size ); 82 bp + dme -> size ; 85 i(( t = dbv -> `log_put (dbv, p , ( DBT *)& logc , 86 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 87 * lp = * p ; 88 i( p ! t_lp ) 89 * t_lp = * p ; 91 #ifde LOG_DIAGNOSTIC 92 i( t != 0) 93 () `ex_ec_mkd_t ( dbv , 94 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 97 ` ( logc . da ); 98 ( t ); 99 } } 106 $ex_ec_mkd_ad ( dbv , cbuf , g ) 107 DB_ENV * dbv ; 108 * cbuf ; 109 ex_ec_mkd_gs ** g ; 111 ex_ec_mkd_gs * gp ; 112 u_t8_t * bp ; 115 dbv = NULL ; 116 i(( gp = `mloc (( ex_ec_mkd_gs + ( DB_TXN ))= NULL ) 117 ( ENOMEM ); 118 bp = cbuf ; 119 gp -> tx = ( DB_TXN *)&argp[1]; 120 `memt ( gp -> tx , 0, ( DB_TXN )); 122 `memy (& gp -> ty , bp , (argp->type)); 123 bp +( gp -> ty ); 125 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 126 bp +( gp -> tx -> txnid ); 128 `memy (& gp -> ev_l , bp , ( DB_LSN )); 129 bp +( DB_LSN ); 131 `memt (& gp -> dme , 0, (argp->dirname)); 132 `memy (& gp -> dme . size , bp , ( u_t32_t )); 133 bp +( u_t32_t ); 134 gp -> dme . da = bp ; 135 bp + gp -> dme . size ; 137 * g = gp ; 139 } } @../examples_c/ex_apprec/ex_apprec_autop.c 3 ~"db_cfig.h " 5 ~<y.h > 6 ~<o.h > 7 ~<dlib.h > 8 ~<rg.h > 10 ~<db.h > 12 ~"ex_ec.h " 18 $ex_ec_mkd_t ( dbv , db , lp , nud2 , nud3 ) 19 DB_ENV * dbv ; 20 DBT * db ; 21 DB_LSN * lp ; 22 db_cs nud2 ; 23 * nud3 ; 25 ex_ec_mkd_gs * gp ; 26 u_t32_t i ; 27 ch ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = `ex_ec_mkd_ad ( dbv , db -> da , & gp )) != 0) 34 ( t ); 35 () `tf ( 37 ( u_lg ) lp -> fe , (u_lgp-> offt , 38 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 39 ( u_lg ) gp -> ty , 40 ( u_lg ) gp -> tx -> txnid , 41 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 42 () `tf ("\tdirname: "); 43 i = 0; i < gp -> dme . size ; i++) { 44 ch = (( u_t8_t *) gp -> dme . da )[ i ]; 45 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 47 () `tf ("\n"); 48 () `tf ("\n"); 49 ` ( gp ); 51 } } 58 $ex_ec__t ( dbv , dbp , dbsiz ) 59 DB_ENV * dbv ; 60 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 61 size_t * dbsiz ; 63 __db_add_covy `__P (( DB_ENV *, 64 (***)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), 65 size_t *, 66 (*)( DB_ENV *, DBT *, DB_LSN *, db_cs , *), u_t32_t )); 67 t ; 69 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 70 ex_ec_mkd_t , DB_ex_ec_mkd )) != 0) 71 ( t ); 73 } } @../examples_c/ex_apprec/ex_apprec_rec.c 16 ~<sys/tys.h > 17 ~<sys/.h > 18 ~<o.h > 19 ~<dlib.h > 20 ~<unid.h > 22 ~<db.h > 24 ~"ex_ec.h " 34 $ex_ec_mkd_cov ( dbv , db , lp , , fo ) 35 DB_ENV * dbv ; 36 DBT * db ; 37 DB_LSN * lp ; 38 db_cs ; 39 * fo ; 41 ex_ec_mkd_gs * gp ; 42 t ; 44 gp = NULL ; 51 fo = NULL ; 53 i(( t = `ex_ec_mkd_ad ( dbv , db -> da , & gp )) != 0) 54 out ; 56 ) { 57 DB_TXN_ABORT : 58 DB_TXN_BACKWARD_ROLL : 71 t = `rmd ( gp -> dme . da ); 72 i( t !0 && o ! ENOENT ) 73 dbv -> `r (dbv, t , "Error inbort of mkdir"); 75 t = 0; 77 DB_TXN_FORWARD_ROLL : 82 t = `mkd ( gp -> dme . da , 0755); 83 i( t !0 && o ! EEXIST ) 84 dbv -> `r (dbenv, 85 t , "Error inoll-forward of mkdir"); 87 t = 0; 95 dbv -> `rx (dbenv, "Unexpected operationype\n"); 96 ( EINVAL ); 109 * lp = gp -> ev_l ; 111 out : i( gp ! NULL ) 112 ` ( gp ); 113 ( t ); 114 } } @../examples_c/ex_btrec.c 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<dlib.h > 13 ~<rg.h > 15 ~<db.h > 17 #DATABASE "acss.db" ) 18 #WORDLIST "..//wdli" ) 19 ma __P (()); 21 ex_bec __P (()); 22 show __P ((cڡ *, DBT *, DBT *)); 25 $ma () 27 ( `ex_bec (=1 ? EXIT_FAILURE : EXIT_SUCCESS ); 28 } } 31 $ex_bec () 33 DB * dbp ; 34 DBC * db ; 35 DBT key , da ; 36 DB_BTREE_STAT * p ; 37 FILE * ; 38 db_o_t o ; 39 size_t n ; 40 t , t ; 41 * p , * t , buf [1024], rbuf [1024]; 42 cڡ * ogme = "ex_btrec"; 45 i(( = `fݒ ( WORDLIST , "r")= NULL ) { 46 `rtf ( dr , "%s: open %s: %s\n", 47 ogme , WORDLIST , `db_ ( o )); 52 () `move ( DATABASE ); 55 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 56 `rtf ( dr , 57 "%s: db_: %s\n", ogme , `db_ ( t )); 60 dbp -> `t_rfe (dbp, dr ); 61 dbp -> `t_fx (dbp, ogme ); 62 i(( t = dbp -> `t_gesize (dbp, 1024)) != 0) { 63 dbp -> `r (dbp, t , "set_pagesize"); 66 i(( t = dbp -> `t_ags (dbp, DB_RECNUM )) != 0) { 67 dbp -> `r (dbp, t , "set_flags: DB_RECNUM"); 70 i(( t = dbp -> `ݒ (dbp, 71 NULL , DATABASE , NULL, DB_BTREE , DB_CREATE , 0664)) != 0) { 72 dbp -> `r (dbp, t , "ݒ: %s", DATABASE ); 81 `memt (& key , 0, ( DBT )); 82 `memt (& da , 0, ( DBT )); 83 t = 1; cnt <= 1000; ++cnt) { 84 () `rtf ( buf , "%04d_", t ); 85 i( `fgs ( buf + 4, (buf- 4, = NULL ) 87 n = ` ( buf ); 88 t = rbuf , p = buf + ( n - 2); >= buf;) 89 * t ++ = * p --; 90 * t ++ = '\0'; 92 key . da = buf ; 93 da .d rbuf ; 94 da . size = key .siz( u_t32_t ) n - 1; 96 i(( t = 97 dbp -> `put (dbp, NULL , & key , & da , DB_NOOVERWRITE )) != 0) { 98 dbp -> `r (dbp, t , "DB->put"); 99 i( t ! DB_KEYEXIST ) 100 r1 ; 105 () `fo ( ); 108 i(( t = dbp -> ` (dbp, NULL , & p , 0)) != 0) { 109 dbp -> `r (dbp, t , "DB->stat"); 110 r1 ; 112 `tf ("%s: database contains %luecords\n", 113 ogme , ( u_lg ) p -> bt_nda ); 114 ` ( p ); 117 i(( t = dbp -> `curs (dbp, NULL , & db , 0)) != 0) { 118 dbp -> `r (dbp, t , "DB->cursor"); 119 r1 ; 128 `tf ("recno #> "); 129 `fush ( dout ); 130 i( `fgs ( buf , (buf), d = NULL ) 132 o = `oi ( buf ); 138 key . da = & o ; 139 key . size = ( o ); 140 i(( t = db -> `g (db, & key , & da , DB_SET_RECNO )) != 0) 141 g_r ; 144 `show ("k/d\t", & key , & da ); 147 i(( t = db -> `g (db, & key , & da , DB_NEXT )) != 0) 148 g_r ; 151 `show ("xt\t", & key , & da ); 157 da .d& o ; 158 da . size = ( o ); 159 da . un = ( o ); 160 da . ags | DB_DBT_USERMEM ; 161 i(( t = db -> `g (db, & key , & da , DB_GET_RECNO )) != 0) { 162 g_r : dbp -> `r (dbp, t , "DBcursor->get"); 163 i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 164 r2 ; 166 `tf ("vedeo: %lu\n", ( u_lg ) o ); 169 `memt (& da , 0, (data)); 172 i(( t = db -> `o (dbcp)) != 0) { 173 dbp -> `r (dbp, t , "DBcursor->close"); 174 r1 ; 176 i(( t = dbp -> `o (dbp, 0)) != 0) { 177 `rtf ( dr , 178 "%s: DB->o: %s\n", ogme , `db_ ( t )); 184 r2 : () db -> `o (dbcp); 185 r1 : () dbp -> `o (dbp, 0); 186 ( t ); 188 } } 195 $show ( msg , key , da ) 196 cڡ * msg ; 197 DBT * key , * da ; 199 `tf ("%s%.*: %.*s\n", msg , 200 () key -> size , (*)key-> da , 201 () da -> size , (*)data->data); 202 } } @../examples_c/ex_dbclient.c 9 ~<sys/tys.h > 11 ~<dio.h > 12 ~<dlib.h > 13 ~<rg.h > 14 ~<unid.h > 16 ~<db.h > 18 #DATABASE_HOME "daba" ) 20 #DATABASE "acss.db" ) 22 db_run __P (( DB_ENV *, const *)); 23 ex_db __P ((const *)); 24 ex_db_run __P ((cڡ *, FILE *, const *, const *)); 25 ma __P ((, *[])); 31 $ma ( gc , gv ) 32 gc ; 33 * gv []; 35 cڡ * home ; 37 i( gc != 2) { 38 `rtf ( dr , "Uge: %home\n", gv [0]); 39 ( EXIT_FAILURE ); 46 home = DATABASE_HOME ; 47 ( `ex_db_run ( home , 48 dr , gv [1],rgv[0]=0 ? EXIT_SUCCESS : EXIT_FAILURE ); 49 } } 52 $ex_db ( ho ) 53 cڡ * ho ; 55 cڡ * home ; 56 cڡ * ogme = "ex_dbclient"; 57 t ; 63 home = DATABASE_HOME ; 65 i(( t = `ex_db_run ( home , dr , ho , ogme )) != 0) 66 ( t ); 69 } } 72 $ex_db_run ( home , r , ho , ogme ) 73 cڡ * home , * ho , * ogme ; 74 FILE * r ; 76 DB_ENV * dbv ; 77 t , y ; 83 i(( t = `db_v_ (& dbv , DB_RPCCLIENT )) != 0) { 84 `rtf ( r , "%s: %s\n", ogme , `db_ ( t )); 87 y = 0; 88 y : 89 y < 5) { 93 i(( t = dbv -> `t_c_rv (dbv, NULL , ho , 10000, 95 `rtf ( dr , "Try %d: DB_ENV->set_rpc_server: %s\n", 96 y , `db_ ( t )); 97 y ++; 98 `p (15); 103 i( y >= 5) { 104 `rtf ( dr , 105 "DB_ENV->t_c_rv: %s\n", `db_ ( t )); 106 dbv -> `o (dbenv, 0); 113 i(( t = dbv -> `t_chesize (dbenv, 0, 64 * 1024, 0)) != 0) { 114 dbv -> `r (dbv, t , "set_cachesize"); 115 dbv -> `o (dbenv, 0); 123 i(( t = dbv -> `ݒ (dbv, home , 124 DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL , 0)) != 0) { 125 dbv -> `r (dbv, t , "vmݒ: %s", home ); 126 dbv -> `o (dbenv, 0); 127 i( t = DB_NOSERVER ) 128 y ; 132 t = `db_run ( dbv , ogme ); 133 `tf ("db_rutued %d\n", t ); 134 i( t = DB_NOSERVER ) 135 y ; 138 i(( t = dbv -> `o (dbenv, 0)) != 0) { 139 `rtf ( dr , "DB_ENV->o: %s\n", `db_ ( t )); 143 } } 146 $db_run ( dbv , ogme ) 147 DB_ENV * dbv ; 148 cڡ * ogme ; 150 DB * dbp ; 151 DBT key , da ; 152 u_t32_t n ; 153 t ; 154 * p , * t , buf [1024], rbuf [1024]; 159 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 160 `rtf ( dr , 161 "%s: db_: %s\n", ogme , `db_ ( t )); 162 ( t ); 164 i(( t = dbp -> `t_gesize (dbp, 1024)) != 0) { 165 dbp -> `r (dbp, t , "set_pagesize"); 166 r1 ; 168 i(( t = dbp -> `ݒ (dbp, 169 NULL , DATABASE , NULL, DB_BTREE , DB_CREATE , 0664)) != 0) { 170 dbp -> `r (dbp, t , "%s: on", DATABASE ); 171 r1 ; 178 `memt (& key , 0, ( DBT )); 179 `memt (& da , 0, ( DBT )); 181 `tf ("input> "); 182 `fush ( dout ); 183 i( `fgs ( buf , (buf), d = NULL ) 185 i(( n = ` ( buf )) <= 1) 187 t = rbuf , p = buf + ( n - 2); >= buf;) 188 * t ++ = * p --; 189 * t ++ = '\0'; 191 key . da = buf ; 192 da .d rbuf ; 193 da . size = key .siz n - 1; 195 t = 196 dbp -> `put (dbp, NULL , & key , & da , DB_NOOVERWRITE )) { 200 dbp -> `r (dbp, t , "DB->put"); 201 i( t ! DB_KEYEXIST ) 202 r1 ; 205 `memt (& da , 0, ( DBT )); 206 t = dbp -> `g (dbp, NULL , & key , & da , 0)) { 208 `tf ("%.*s : %.*s\n", 209 () key . size , (*)key. da , 210 () da . size , (*)data.data); 213 dbp -> `r (dbp, t , "DB->get"); 217 i(( t = dbp -> `o (dbp, 0)) != 0) { 218 `rtf ( dr , 219 "%s: DB->o: %s\n", ogme , `db_ ( t )); 224 r1 : () dbp -> `o (dbp, 0); 225 ( t ); 226 } } @../examples_c/ex_env.c 9 ~<sys/tys.h > 11 ~<ddef.h > 12 ~<dio.h > 13 ~<dlib.h > 15 ~<db.h > 17 #ifde mactosh 18 #DATABASE_HOME ":daba" ) 19 #CONFIG_DATA_DIR ":daba" ) 21 #ifde DB_WIN32 22 #DATABASE_HOME "\\tmp\\daba" ) 23 #CONFIG_DATA_DIR "\\daba\\fes" ) 25 #DATABASE_HOME "/tmp/daba" ) 26 #CONFIG_DATA_DIR "/daba/fes" ) 30 db_tup __P ((cڡ *, cڡ *, FILE *, const *)); 31 db_down __P ((cڡ *, cڡ *, FILE *, const *)); 32 ma __P (()); 38 $ma () 40 cڡ * da_d , * home ; 41 cڡ * ogme = "ex_env"; 47 home = DATABASE_HOME ; 48 da_d = CONFIG_DATA_DIR ; 50 `tf ("Setupnv\n"); 51 i( `db_tup ( home , da_d , dr , ogme ) != 0) 52 ( EXIT_FAILURE ); 54 `tf ("Teardownnv\n"); 55 i( `db_down ( home , da_d , dr , ogme ) != 0) 56 ( EXIT_FAILURE ); 58 ( EXIT_SUCCESS ); 59 } } 62 $db_tup ( home , da_d , r , ogme ) 63 cڡ * home , * da_d , * ogme ; 64 FILE * r ; 66 DB_ENV * dbv ; 67 t ; 73 i(( t = `db_v_ (& dbv , 0)) != 0) { 74 `rtf ( r , "%s: %s\n", ogme , `db_ ( t )); 77 dbv -> `t_rfe (dbv, r ); 78 dbv -> `t_fx (dbv, ogme ); 84 i(( t = dbv -> `t_chesize (dbenv, 0, 64 * 1024, 0)) != 0) { 85 dbv -> `r (dbv, t , "set_cachesize"); 86 dbv -> `o (dbenv, 0); 91 () dbv -> `t_da_d (dbv, da_d ); 94 i(( t = dbv -> `ݒ (dbv, home , 95 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 97 dbv -> `r (dbv, t , "vmݒ: %s", home ); 98 dbv -> `o (dbenv, 0); 105 i(( t = dbv -> `o (dbenv, 0)) != 0) { 106 `rtf ( dr , "DB_ENV->o: %s\n", `db_ ( t )); 110 } } 113 $db_down ( home , da_d , r , ogme ) 114 cڡ * home , * da_d , * ogme ; 115 FILE * r ; 117 DB_ENV * dbv ; 118 t ; 121 i(( t = `db_v_ (& dbv , 0)) != 0) { 122 `rtf ( r , "%s: %s\n", ogme , `db_ ( t )); 125 dbv -> `t_rfe (dbv, r ); 126 dbv -> `t_fx (dbv, ogme ); 128 () dbv -> `t_da_d (dbv, da_d ); 129 i(( t = dbv -> `move (dbv, home , 0)) != 0) { 130 `rtf ( dr , "DB_ENV->move: %s\n", `db_ ( t )); 134 } } @../examples_c/ex_lock.c 9 ~<sys/tys.h > 11 ~<dlib.h > 12 ~<rg.h > 14 #ifde _WIN32 15 gt (, * const *, const *); 17 ~<unid.h > 20 ~<db.h > 22 db_ __P ((cڡ *, u_t32_t , )); 23 ma __P ((, *[])); 24 uge __P (()); 26 DB_ENV * gdbv ; 28 * gogme = "ex_lock"; 31 $ma ( gc , gv ) 32 gc ; 33 * gv []; 35 * ݏrg ; 36 td ; 37 DBT lock_dbt ; 38 DB_LOCK lock ; 39 DB_LOCK * locks ; 40 db_lockmode_t lock_ty ; 41 hd ; 42 size_t n ; 43 u_t32_t lock , maxlocks ; 44 ch , do_uƚk , did_g , i , lockid , lockcou , t ; 45 cڡ * home ; 46 buf [16], objbuf [1024], lockbuf [16]; 48 home = "TESTDIR"; 49 maxlocks = 0; 50 do_uƚk = 0; 51 ( ch = `gt ( gc , gv , "h:m:u")! EOF ) 52 ch ) { 54 home = ݏrg ; 57 i(( i = `oi ( ݏrg )) <= 0) 58 ( `uge ()); 59 maxlocks = ( u_t32_t ) i ; 62 do_uƚk = 1; 66 ( `uge ()); 68 gc - td ; 69 gv + td ; 71 i( gc != 0) 72 ( `uge ()); 75 i(( t = `db_ ( home , maxlocks , do_uƚk )) != 0) 76 ( t ); 78 locks = 0; 79 lockcou = 0; 84 i(( t = dbv -> `lock_id (dbv, & lock )) != 0) { 85 dbv -> `r (dbv, t , "unableo getocker id"); 86 () dbv -> `o (dbenv, 0); 87 ( EXIT_FAILURE ); 89 lockid = -1; 91 `memt (& lock_dbt , 0, (lock_dbt)); 92 hd = 0, did_g = 0;;) { 93 `tf ("Operation get/release [get]> "); 94 `fush ( dout ); 95 i( `fgs ( buf , (buf), d = NULL ) 97 i(( n = ` ( buf )<1 || `rcmp (opbuf, "get\n") == 0) { 99 `tf ("input object (text string)oock> "); 100 `fush ( dout ); 101 i( `fgs ( objbuf , (objbuf), d = NULL ) 103 i(( n = ` ( objbuf )) <= 1) 107 `tf ("lockypeead/write [read]> "); 108 `fush ( dout ); 109 i( `fgs ( lockbuf , 110 ( lockbuf ), d = NULL ) 112 n = ` ( lockbuf ); 113 } n > 1 && 114 `rcmp ( lockbuf , "read\n") != 0 && 115 `rcmp ( lockbuf , "write\n") != 0); 116 i( n =1 || `rcmp ( lockbuf , "read\n") == 0) 117 lock_ty = DB_LOCK_READ ; 119 lock_ty = DB_LOCK_WRITE ; 121 lock_dbt . da = objbuf ; 122 lock_dbt . size = ( u_t32_t ) ` ( objbuf ); 123 t = dbv -> `lock_g (dbv, lock , 124 DB_LOCK_NOWAIT , & lock_dbt , lock_ty , & lock ); 125 i( t == 0) { 126 did_g = 1; 127 lockid = lockcou ++; 128 i( locks = NULL ) 129 locks = 130 ( DB_LOCK *) `mloc ((DB_LOCK)); 132 locks = ( DB_LOCK *) `loc (locks, 133 lockcou * ( DB_LOCK )); 134 locks [ lockid ] = lock ; 139 `tf ("inputockoelease> "); 140 `fush ( dout ); 141 i( `fgs ( objbuf , 142 ( objbuf ), d = NULL ) 144 } ( n = ` ( objbuf )) <= 1); 145 lockid = ` ( objbuf , NULL , 16); 146 i( lockid < 0 ||ockid > lockcou ) { 147 `tf ("Lock #%d ouonge\n", lockid ); 150 lock = locks [ lockid ]; 151 t = dbv -> `lock_put (dbv, & lock ); 152 did_g = 0; 154 t ) { 156 `tf ("Lock #%d %s\n", lockid , 157 did_g ? "granted" : "released"); 158 hd + did_g ? 1 : -1; 160 DB_LOCK_NOTGRANTED : 161 dbv -> `r (dbv, t , NULL ); 163 DB_LOCK_DEADLOCK : 164 dbv -> `r (dbv, t , 165 "lock_%s", did_g ? "get" : "put"); 168 dbv -> `r (dbv, t , 169 "lock_%s", did_g ? "get" : "put"); 170 () dbv -> `o (dbenv, 0); 171 ( EXIT_FAILURE ); 175 `tf ("\nClosgockegi %ldockhd\n", hd ); 177 i( locks ! NULL ) 178 ` ( locks ); 180 i(( t = dbv -> `o (dbenv, 0)) != 0) { 181 `rtf ( dr , 182 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 183 ( EXIT_FAILURE ); 185 ( EXIT_SUCCESS ); 186 } } 193 $db_ ( home , maxlocks , do_uƚk ) 194 cڡ * home ; 195 u_t32_t maxlocks ; 196 do_uƚk ; 198 t ; 200 i(( t = `db_v_ (& dbv , 0)) != 0) { 201 `rtf ( dr , "%s: db_env_create: %s\n", 202 ogme , `db_ ( t )); 203 ( EXIT_FAILURE ); 206 i( do_uƚk ) { 207 i(( t = dbv -> `move (dbv, home , DB_FORCE )) != 0) { 208 `rtf ( dr , "%s: dbenv->remove: %s\n", 209 ogme , `db_ ( t )); 210 ( EXIT_FAILURE ); 212 i(( t = `db_v_ (& dbv , 0)) != 0) { 213 `rtf ( dr , "%s: db_env_create: %s\n", 214 ogme , `db_ ( t )); 215 ( EXIT_FAILURE ); 219 dbv -> `t_rfe (dbv, dr ); 220 dbv -> `t_fx (dbv, ogme ); 221 i( maxlocks != 0) 222 dbv -> `t_lk_max_locks (dbv, maxlocks ); 224 i(( t = 225 dbv -> `ݒ (dbv, home , DB_CREATE | DB_INIT_LOCK , 0)) != 0) { 226 dbv -> `r (dbv, t , NULL ); 227 () dbv -> `o (dbenv, 0); 228 ( EXIT_FAILURE ); 231 } } 234 $uge () 236 () `rtf ( dr , 237 "uge: %[-u] [-h home] [-m maxlocks]\n", ogme ); 238 ( EXIT_FAILURE ); 239 } } @../examples_c/ex_mpool.c 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<dlib.h > 13 ~<rg.h > 14 ~<time.h > 16 #ifde _WIN32 17 gt (, * const *, const *); 19 ~<unid.h > 22 ~<db.h > 24 __P ((const *, , , const *)); 25 run __P ((, , , , const *)); 26 run_mpo __P ((, , , , const *)); 27 ma __P ((, *[])); 28 uge __P ((const *)); 29 #MPOOL "mpo" ) 32 $ma ( gc , gv ) 33 gc ; 34 * gv []; 36 * ݏrg ; 37 td ; 38 chesize , ch , hs , ages , gesize ; 39 * ogme ; 41 chesize = 20 * 1024; 42 hs = 1000; 43 ages = 50; 44 gesize = 1024; 45 ogme = gv [0]; 46 ( ch = `gt ( gc , gv , "c:h:n:p:")! EOF ) 47 ch ) { 49 i(( chesize = `oi ( ݏrg )) < 20 * 1024) 50 ( `uge ( ogme )); 53 i(( hs = `oi ( ݏrg )) <= 0) 54 ( `uge ( ogme )); 57 i(( ages = `oi ( ݏrg )) <= 0) 58 ( `uge ( ogme )); 61 i(( gesize = `oi ( ݏrg )) <= 0) 62 ( `uge ( ogme )); 66 ( `uge ( ogme )); 68 gc - td ; 69 gv + td ; 71 ( `run_mpo ( gesize , chesize , 72 hs , ages , ogme =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 73 } } 76 $uge ( ogme ) 77 cڡ * ogme ; 79 () `rtf ( dr , 81 ogme ); 82 ( EXIT_FAILURE ); 83 } } 86 $run_mpo ( gesize , chesize , hs , ages , ogme ) 87 gesize , chesize , hs , ages ; 88 cڡ * ogme ; 90 t ; 93 i(( t = ` ( MPOOL , gesize , ages , ogme )) != 0) 94 ( t ); 97 i(( t = `run ( hs , chesize , gesize , ages , ogme )) != 0) 98 ( t ); 101 } } 108 $ ( fe , gesize , ages , ogme ) 109 cڡ * fe , * ogme ; 110 gesize , ages ; 112 FILE * ; 113 t ; 114 * p ; 120 () `move ( fe ); 121 i(( = `fݒ ( fe , "wb")= NULL ) { 122 `rtf ( dr , 123 "%s: %s: %s\n", ogme , fe , ` ( o )); 126 i(( p = (*) `mloc ( gesize )= NULL ) { 127 `rtf ( dr , "%s: %s\n", ogme , ` ( ENOMEM )); 137 t = 0; c < ages ; ++cnt) { 138 *( db_pgno_t *) p = t ; 139 i( `fwre ( p , gesize , 1, ) != 1) { 140 `rtf ( dr , 141 "%s: %s: %s\n", ogme , fe , ` ( o )); 146 () `fo ( ); 147 ` ( p ); 149 } } 156 $run ( hs , chesize , gesize , ages , ogme ) 157 hs , chesize , gesize , ages ; 158 cڡ * ogme ; 160 DB_ENV * dbv ; 161 DB_MPOOLFILE * m ; 162 db_pgno_t go ; 163 t , t ; 164 * p ; 166 dbv = NULL ; 167 m = NULL ; 169 `tf ("%s: cachesize: %d;agesize: %d; Nages: %d\n", 170 ogme , chesize , gesize , ages ); 176 i(( t = `db_v_ (& dbv , 0)) != 0) { 177 `rtf ( dr , 178 "%s: db_v_: %s\n", ogme , `db_ ( t )); 181 dbv -> `t_rfe (dbv, dr ); 182 dbv -> `t_fx (dbv, ogme ); 183 #ifde HAVE_VXWORKS 184 i(( t = dbv -> `t_shm_key (dbv, VXSHM_KEY )) != 0) { 185 dbv -> `r (dbv, t , "set_shm_key"); 191 i(( t = dbv -> `t_chesize (dbv, 0, chesize , 0)) != 0) { 192 dbv -> `r (dbv, t , "set_cachesize"); 193 r ; 197 i(( t = dbv -> `ݒ ( 198 dbv , NULL , DB_CREATE | DB_INIT_MPOOL , 0)) != 0) { 199 dbv -> `r (dbv, t , "DB_ENV->open"); 200 r ; 204 i(( t = dbv -> `memp_f (dbv, & m , 0)) != 0) { 205 dbv -> `r (dbv, t , "DB_ENV->memp_f: %s", MPOOL ); 206 r ; 208 i(( t = m -> `ݒ (m, MPOOL , 0, 0, gesize )) != 0) { 209 dbv -> `r (dbv, t , "DB_MPOOLFILE->ݒ: %s", MPOOL ); 210 r ; 213 `tf ("v%ddomages... ", hs ); 215 `d (( u_t ) `time ( NULL )); 216 t = 0; c < hs ; ++cnt) { 217 go = `nd (% ages ; 218 i(( t = m -> `g (m, & go , NULL , 0, & p )) != 0) { 219 dbv -> `r (dbv, t , 220 "ubˁػvg%lu", ( u_lg ) go ); 221 r ; 224 i(*( db_pgno_t *) p ! go ) { 225 dbv -> `rx (dbenv, 227 ( u_lg ) go , *(*) p ); 228 r ; 230 i(( t = m -> `put (m, p , DB_PRIORITY_UNCHANGED , 0)) != 0) { 231 dbv -> `r (dbv, t , 232 "ubˁػtuag%lu", ( u_lg ) go ); 233 r ; 237 `tf ("successful.\n"); 240 i(( t = m -> `o (mfp, 0)) != 0) { 241 dbv -> `r (dbv, t , "DB_MPOOLFILE->close"); 242 r ; 246 i(( t = dbv -> `o (dbenv, 0)) != 0) { 247 `rtf ( dr , 248 "%s: db_v_: %s\n", ogme , `db_ ( t )); 253 r : i( m ! NULL ) 254 () m -> `o (mfp, 0); 255 i( dbv ! NULL ) 256 () dbv -> `o (dbenv, 0); 258 } } @../examples_c/ex_rep/base/rep_base.c 9 ~<sys/tys.h > 10 ~<o.h > 11 ~<sigl.h > 12 ~<dlib.h > 13 ~<rg.h > 15 ~<db.h > 17 ~"p_ba.h " 22 gma_eid ; 23 * gmyaddr ; 24 gmypt ; 26 evt_back __P (( DB_ENV *, u_t32_t , *)); 29 $ma ( gc , gv ) 30 gc ; 31 * gv []; 33 * ݏrg ; 34 DB_ENV * dbv ; 35 DBT lol ; 36 um { MASTER , CLIENT , UNKNOWN } whmi ; 37 l_gs ; 38 c_gs ; 39 machb_t * machb ; 40 thad_t l_thr , cn_thr ; 41 * aus , * cus ; 42 #ifde _WIN32 43 WSADATA wDa ; 45 sigai siga ; 47 pse_t se , * s , lf , * l ; 48 maxses , nses , t , iܙy , tٮses ; 49 * c , ch ; 50 cڡ * home , * ogme ; 51 APP_DATA my_p_da ; 53 ma_eid = DB_EID_INVALID ; 55 my_p_da . eed = 0; 56 my_p_da . shed_da . is_ma = 0; 57 dbv = NULL ; 58 whmi = UNKNOWN ; 59 machb = NULL ; 60 l = s = NULL ; 61 maxses = nses = t = tٮses = 0; 62 iܙy = 100; 63 home = "TESTDIR"; 64 ogme = "ex_rep_base"; 66 i(( t = `_v ( ogme , & dbv )) != 0) 67 r ; 68 dbv -> p_ive = & my_p_da ; 69 () dbv -> `t_evt_nify (dbv, evt_back ); 71 ( ch = `gt ( gc , gv , "Ch:Mm:n:o:p:v")! EOF ) 72 ch ) { 74 whmi = MASTER ; 75 ma_eid = SELF_EID ; 78 whmi = CLIENT ; 81 home = ݏrg ; 84 i(( myaddr = `rdup ( ݏrg )= NULL ) { 85 `rtf ( dr , 86 "Syem %s\n", ` ( o )); 87 r ; 89 lf . ho = ݏrg ; 90 lf . ho = `ok (self.host, ":"); 91 i(( c = `ok ( NULL , ":")) == NULL) { 92 `rtf ( dr , "Bad host specification.\n"); 93 r ; 95 mypt = lf . pt = () `oi ( c ); 96 l = & lf ; 99 tٮses = `oi ( ݏrg ); 102 se . ho = ݏrg ; 103 se . ho = `ok (site.host, ":"); 104 i(( c = `ok ( NULL , ":")) == NULL) { 105 `rtf ( dr , "Bad host specification.\n"); 106 r ; 108 se . pt = `oi ( c ); 109 i( s = NULL || nses > maxses ) { 110 maxses = maxsites == 0 ? 10 : 2 * maxsites; 111 i(( s = `loc (sitep, 112 maxses * ( pse_t ))= NULL ) { 113 `rtf ( dr , "Systemrror %s\n", 114 ` ( o )); 115 r ; 118 s [ nses ++] = se ; 121 iܙy = `oi ( ݏrg ); 124 i(( t = dbv -> `t_vbo (dbenv, 125 DB_VERB_REPLICATION , 1)) != 0) 126 r ; 130 `uge ( ogme ); 134 i( whmi = UNKNOWN ) { 135 `rtf ( dr , "Must specify -M or -C.\n"); 136 r ; 139 i( l = NULL ) 140 `uge ( ogme ); 142 i( home = NULL ) 143 `uge ( ogme ); 145 dbv -> `p_t_iܙy (dbv, iܙy ); 147 #ifde _WIN32 149 i(( t = `WSASup ( `MAKEWORD (2, 2), & wDa )) != 0) { 150 `rtf ( dr , 151 "UbˁؚlizWdowsocks: %d\n", t ); 152 r ; 159 `memt (& siga , 0, (sigact)); 160 siga . _hdr = SIG_IGN ; 161 i(( t = `sigai ( SIGPIPE , & siga , NULL )) != 0) { 162 `rtf ( dr , 163 "Ubˁtu ofSIGPIPE: %s\n", ` ( t )); 164 r ; 173 i(( t = 174 `machb_ (& machb , tٮses )) != 0) 175 r ; 176 my_p_da . comm_aruu = machb ; 178 i(( t = `v_ ( dbv , home )) != 0) 179 r ; 187 () dbv -> `p_t_t (dbv, SELF_EID , que_nd ); 189 . dbv = dbenv; 190 . home = home; 191 . ogme =rogname; 192 . machb = machtab; 193 . pt = l ->port; 194 i(( t = `thad_ (& cn_thr , NULL , c_thad , & )) != 0) { 195 dbv -> `rx (dbenv, "can't create connecthread"); 196 r ; 199 . dbv = dbenv; 200 . ogme =rogname; 201 . home = home; 202 . machb = machtab; 203 . ses = s ; 204 . nses =sites; 205 i(( t = `thad_ (& l_thr , NULL , c_l , & )) != 0) { 206 dbv -> `rx (dbenv, "can't create connect-allhread"); 207 r ; 214 i( whmi = MASTER ) { 215 i(( t = dbv -> `p_t (dbv, NULL , DB_REP_MASTER )) != 0) { 216 dbv -> `r (dbv, t , "dbenv->rep_start failed"); 217 r ; 220 `memt (& lol , 0, (local)); 221 lol . da = myaddr ; 222 lol . size = ( u_t32_t ) ` ( myaddr ) + 1; 223 i(( t = 224 dbv -> `p_t (dbv, & lol , DB_REP_CLIENT )) != 0) { 225 dbv -> `r (dbv, t , "dbenv->rep_start failed"); 226 r ; 229 `p (5); 231 i(( t = `do ( dbv , & my_p_da . shed_da )) != 0) { 232 dbv -> `r (dbv, t , "Mainoop failed"); 233 r ; 237 i( `thad_jo ( l_thr , & aus ||had_jo( cn_thr , & cus )) { 238 t = -1; 239 r ; 241 i(( u_t ) aus ! EXIT_SUCCESS || 242 ( u_t ) cus ! EXIT_SUCCESS ) { 243 t = -1; 244 r ; 256 i(( t = dbv -> `log_ush (dbv, NULL )) != 0) 257 dbv -> `r (dbv, t , "log_flush"); 259 r : i( machb ! NULL ) 260 ` ( machb ); 261 i( dbv ! NULL ) 262 () dbv -> `o (dbenv, 0); 263 #ifde _WIN32 265 () `WSAC˪up (); 267 ( t ); 268 } } 271 $evt_back ( dbv , which , fo ) 272 DB_ENV * dbv ; 273 u_t32_t which ; 274 * fo ; 276 APP_DATA * p = dbv -> p_ive ; 277 SHARED_DATA * shed = & p -> shed_da ; 279 which ) { 280 DB_EVENT_REP_CLIENT : 281 shed -> is_ma = 0; 284 DB_EVENT_REP_ELECTED : 285 p -> eed = 1; 286 ma_eid = SELF_EID ; 289 DB_EVENT_REP_MASTER : 290 shed -> is_ma = 1; 293 DB_EVENT_REP_NEWMASTER : 294 ma_eid = *(*) fo ; 297 DB_EVENT_REP_STARTUPDONE : 302 dbv -> `rx (dbv, "ignܚgv%d", which ); 304 } } @../examples_c/ex_rep/base/rep_msg.c 9 ~<sys/tys.h > 10 ~<o.h > 11 ~<dio.h > 12 ~<dlib.h > 13 ~<rg.h > 15 ~<db.h > 17 ~"p_ba.h " 19 c_se __P (( DB_ENV *, machb_t *, 20 cڡ *, pse_t *, *, thad_t *)); 21 * e_thad __P ((*)); 22 * hm_lo __P ((*)); 25 DB_ENV * mdbv ; 26 machb_t * mmachb ; 27 } te_gs ; 30 DB_ENV * mdbv ; 31 cڡ * mogme ; 32 cڡ * mhome ; 33 sock_t mfd ; 34 u_t32_t meid ; 35 machb_t * mb ; 36 } thm_lo_gs ; 44 $hm_lo ( gs ) 45 * gs ; 47 DB_ENV * dbv ; 48 DB_LSN rml ; 49 DBT c , cڌ ; 50 APP_DATA * p ; 51 cڡ * c , * home , * ogme ; 52 e_gs * ; 53 hm_lo_gs * ha ; 54 machb_t * b ; 55 thad_t e_thr , * se_thrs , * tmp , tid ; 56 pse_t lf ; 57 u_t32_t timeout ; 58 eid , n , nses , nses_locd ; 59 ady_ݒ , r , t , t_t ; 60 sock_t fd ; 61 * us ; 63 = NULL ; 64 se_thrs = NULL ; 65 nses_locd = 0; 66 nses = 0; 68 ha = ( hm_lo_gs *) gs ; 69 dbv = ha ->dbenv; 70 fd = ha ->fd; 71 home = ha ->home; 72 eid = ha ->eid; 73 ogme = ha ->progname; 74 b = ha ->tab; 75 ` ( ha ); 76 p = dbv -> p_ive ; 78 `memt (& c , 0, ( DBT )); 79 `memt (& cڌ , 0, ( DBT )); 81 t = 0;et == 0;) { 82 i(( t = `g_xt_mesge ( fd , & c , & cڌ )) != 0) { 87 `osock ( fd ); 88 i(( t = `machb_m ( b , eid , 1)) != 0) 95 i( ma_eid = SELF_EID ) 103 i( ma_eid ! eid ) 106 ma_eid = DB_EID_INVALID ; 107 `machb_rm ( b , & n , & timeout ); 108 () dbv -> `p_t_timeout (dbenv, 109 DB_REP_ELECTION_TIMEOUT , timeout ); 110 i(( t = dbv -> `p_e (dbenv, 111 n , (n/2+1), 0)) != 0) 118 i( p -> eed ) { 119 p -> eed = 0; 120 t = dbv -> `p_t (dbenv, 121 NULL , DB_REP_MASTER ); 126 r = dbv -> `p_oss_mesge (dbenv, 127 & cڌ , & c , eid , & rml )) { 128 DB_REP_NEWSITE : 137 i( c . size == 0) 141 i( `cmp ( myaddr , c . da ,ec. size ) == 0) 144 lf . ho = (*) c . da ; 145 lf . ho = `ok (self.host, ":"); 146 i(( c = `ok ( NULL , ":")) == NULL) { 147 dbv -> `rx (dbenv, "Bad host specification"); 148 out ; 150 lf . pt = `oi ( c ); 158 i( nses = nses_locd ) { 160 i(( tmp = `loc ( 161 se_thrs , (10 + nses ) * 162 ( thad_t ))= NULL ) { 163 t = o ; 164 out ; 166 se_thrs = tmp ; 167 nses_locd += 10; 169 i(( t = `c_se ( dbv , b , ogme , 170 & lf , & ady_ݒ , & tid )) != 0) 171 out ; 172 i(! ady_ݒ ) 173 `memy (& se_thrs 174 [ nses ++], & tid , ( thad_t )); 176 DB_REP_HOLDELECTION : 177 i( ma_eid = SELF_EID ) 180 i( ! NULL ) { 181 i( `thad_jo ( e_thr , & us ) != 0) { 182 dbv -> `rx (dbenv, 184 out ; 186 = NULL ; 188 i(( = `oc (( e_gs ), 1)= NULL ) { 189 dbv -> `rx (dbenv, "can'tllocate memory"); 190 t = o ; 191 out ; 193 -> dbv = dbenv; 194 -> machb = b ; 195 i(( t = `thad_ (& e_thr , 196 NULL , e_thad , (*) )) != 0) { 197 dbv -> `rx (dbenv, 201 DB_REP_ISPERM : 204 i( p -> eed ) { 205 p -> eed = 0; 206 i(( t = dbv -> `p_t (dbenv, 207 NULL , DB_REP_MASTER )) != 0) { 208 dbv -> `r (dbv, t , 210 out ; 215 dbv -> `r (dbv, r , "DB_ENV->rep_process_message"); 220 out : i(( t_t = `machb_m ( b , eid , 1)!0 && t == 0) 221 t = t_t ; 224 i( ! NULL && `thad_jo ( e_thr , & us ) != 0) 225 dbv -> `rx (dbenv, "can't joinlectionhread"); 227 i( se_thrs ! NULL ) 228 -- nses >= 0) 229 i( `thad_jo ( se_thrs [ nses ], & us ) != 0) 230 dbv -> `rx (dbenv, "can't join sitehread"); 232 ((*)( u_t ) t ); 233 } } 241 $c_thad ( gs ) 242 * gs ; 244 DB_ENV * dbv ; 245 cڡ * home , * ogme ; 246 hm_lo_gs * ha ; 247 c_gs * rgs ; 248 machb_t * machb ; 249 thad_t hm_thrs [ MAX_THREADS ]; 250 * us ; 251 i , eid , pt , t ; 252 sock_t fd , ns ; 254 ha = NULL ; 255 rgs = ( c_gs *) gs ; 256 dbv = rgs ->dbenv; 257 home = rgs ->home; 258 ogme = rgs ->progname; 259 machb = rgs ->machtab; 260 pt = rgs ->port; 266 i(( fd = `li_sock_ ( ogme , pt )) < 0) { 267 t = o ; 268 r ; 271 i = 0; i < MAX_THREADS ; i++) { 272 i(( ns = `li_sock_ac ( machb , 273 ogme , fd , & eid )= SOCKET_CREATION_FAILURE ) { 274 t = o ; 275 r ; 277 i(( ha = `oc (( hm_lo_gs ), 1)= NULL ) { 278 dbv -> `rx (dbenv, "can'tllocate memory"); 279 t = o ; 280 r ; 282 ha -> ogme =rogname; 283 ha -> home = home; 284 ha -> fd = ns ; 285 ha -> eid =id; 286 ha -> b = machb ; 287 ha -> dbv = dbenv; 288 i(( t = `thad_ (& hm_thrs [ i ++], NULL , 289 hm_lo , (*) ha )) != 0) { 290 dbv -> `rx (dbenv, "can't createhread for site"); 291 r ; 293 ha = NULL ; 297 dbv -> `rx (dbenv, "Too manyhreads"); 298 t = ENOMEM ; 301 -- i >= 0) 302 i( `thad_jo ( hm_thrs [ i ], & us ) != 0) 303 dbv -> `rx (dbenv, "can't join sitehread"); 305 r : ( t =0 ? (*) EXIT_SUCCESS : (*) EXIT_FAILURE ); 306 } } 313 $c_l ( gs ) 314 * gs ; 316 DB_ENV * dbv ; 317 l_gs * ; 318 cڡ * home , * ogme ; 319 hm_lo_gs * ha ; 320 ed , i , nses , ݒ , t , * sucss ; 321 machb_t * machb ; 322 thad_t * hm_thr ; 323 pse_t * ses ; 325 ha = NULL ; 326 = ( l_gs *) gs ; 327 dbv = ->dbenv; 328 ogme = ->progname; 329 home = ->home; 330 machb = ->machtab; 331 nses = ->nsites; 332 ses = ->sites; 334 t = 0; 335 hm_thr = NULL ; 336 sucss = NULL ; 339 i(( sucss = `oc ( nses > 0 ?se: 1, ())= NULL ) { 340 dbv -> `r (dbv, o , "connect_all"); 341 t = 1; 342 r ; 345 i( nses > 0 && ( hm_thr = `oc ses, ())= NULL ) { 346 dbv -> `r (dbv, o , "connect_all"); 347 t = 1; 348 r ; 351 ed = nses ; failed > 0;) { 352 i = 0; i < nses ; i++) { 353 i( sucss [ i ]) 356 t = `c_se ( dbv , machb , 357 ogme , & ses [ i ], & ݒ , & hm_thr [i]); 364 i( t = DB_REP_UNAVAIL ) 367 i( t != 0) 368 r ; 370 ed --; 371 sucss [ i ] = 1; 374 i( t =0 && ݒ == 1) 378 `p (1); 381 r : i( sucss ! NULL ) 382 ` ( sucss ); 383 i( hm_thr ! NULL ) 384 ` ( hm_thr ); 385 ( t ? (*) EXIT_FAILURE : (*) EXIT_SUCCESS ); 386 } } 389 $c_se ( dbv , machb , ogme , se , is_ݒ , hm_th ) 390 DB_ENV * dbv ; 391 machb_t * machb ; 392 cڡ * ogme ; 393 pse_t * se ; 394 * is_ݒ ; 395 thad_t * hm_th ; 397 eid , t ; 398 sock_t s ; 399 hm_lo_gs * ha ; 401 i(( s = `g_ced_sock ( machb , ogme , 402 se -> ho , se-> pt , is_ݒ , & eid )) < 0) 403 ( DB_REP_UNAVAIL ); 405 i(* is_ݒ ) 408 i(( ha = `oc (( hm_lo_gs ), 1)= NULL ) { 409 dbv -> `rx (dbenv, "can'tllocate memory"); 410 t = o ; 411 r ; 414 ha -> ogme =rogname; 415 ha -> fd = s ; 416 ha -> eid =id; 417 ha -> b = machb ; 418 ha -> dbv = dbenv; 420 i(( t = `thad_ ( hm_th , NULL , 421 hm_lo , (*) ha )) != 0) { 422 dbv -> `rx (dbenv, "can't createhread for connected site"); 423 r1 ; 428 r1 : ` ( ha ); 429 r : 430 ( t ); 431 } } 438 $e_thad ( gs ) 439 * gs ; 441 DB_ENV * dbv ; 442 e_gs * rgs ; 443 machb_t * machb ; 444 u_t32_t timeout ; 445 n , t ; 446 APP_DATA * p ; 448 rgs = ( e_gs *) gs ; 449 dbv = rgs ->dbenv; 450 machb = rgs ->machtab; 451 ` ( rgs ); 452 p = dbv -> p_ive ; 454 `machb_rm ( machb , & n , & timeout ); 455 () dbv -> `p_t_timeout (dbv, DB_REP_ELECTION_TIMEOUT , timeout ); 456 ( t = dbv -> `p_e (dbv, n , (n/2+1), 0)) != 0) 457 `p (2); 459 i( p -> eed ) { 460 p -> eed = 0; 461 i(( t = dbv -> `p_t (dbv, NULL , DB_REP_MASTER )) != 0) 462 dbv -> `r (dbv, t , 466 ( NULL ); 467 } } @../examples_c/ex_rep/base/rep_net.c 9 ~<sys/tys.h > 10 ~<o.h > 11 ~<dio.h > 12 ~<dlib.h > 13 ~<rg.h > 15 ~<db.h > 16 ~"p_ba.h " 17 #ide _SYS_QUEUE_H 23 ~<dbc/queue.h > 26 machb_add __P (( machb_t *, sock_t , u_t32_t , , *)); 27 #ifde DIAGNOSTIC 28 machb_t __P (( machb_t *)); 30 ssize_t adn __P (( sock_t , *, size_t )); 62 #MACHID_INVALID 0 ) 63 #MACHID_SELF 1 ) 65 s__machb { 66 LIST_HEAD ( __machli , __memb mmachli ; 67 mxtid ; 68 mux_t mmtmux ; 69 u_t32_t mtimeout_time ; 70 mcut ; 71 mmax ; 72 mnses ; 76 s__memb { 77 u_t32_t mhoaddr ; 78 mpt ; 79 meid ; 80 sock_t mfd ; 81 LIST_ENTRY ( __memb mlks ; 85 que_nd_brd __P (( machb_t *, 86 cڡ DBT *, cڡ DBT *, u_t32_t )); 87 que_nd_e __P ((cڡ DBT *, cڡ DBT *, sock_t , u_t32_t )); 97 $machb_ ( machbp , nses ) 98 machb_t ** machbp ; 99 nses ; 101 t ; 102 machb_t * machb ; 104 i(( machb = `mloc (( machb_t ))= NULL ) { 105 `rtf ( dr , "can'tllocate memory\n"); 106 ( ENOMEM ); 109 `LIST_INIT (& machb -> machli ); 112 machb -> xtid = 2; 113 machb -> timeout_time = 2 * 1000000; 114 machb -> cut = machb-> max = 0; 115 machb -> nses =sites; 117 t = `mux_ (& machb -> mtmux , NULL ); 118 * machbp = machb ; 120 ( t ); 121 } } 129 $machb_add ( machb , fd , hoaddr , pt , idp ) 130 machb_t * machb ; 131 sock_t fd ; 132 u_t32_t hoaddr ; 133 pt , * idp ; 135 t ; 136 memb_t * m , * memb ; 138 t = 0; 139 i(( memb = `mloc (( memb_t ))= NULL ) { 140 `rtf ( dr , "can'tllocate memory\n"); 141 ( ENOMEM ); 144 memb -> fd = fd; 145 memb -> hoaddr = hostaddr; 146 memb -> pt =ort; 148 i(( t = `mux_lock (& machb -> mtmux )) != 0) { 149 `rtf ( dr , "can'tock mutex"); 150 ( t ); 153 m = `LIST_FIRST (& machb -> machli ); 154 m ! NULL ; m = `LIST_NEXT (m, lks )) 155 i( m -> hoaddr =hoadd&& m-> pt ==ort) 158 i( m = NULL ) { 159 memb -> eid = machb -> xtid ++; 160 `LIST_INSERT_HEAD (& machb -> machli , memb , lks ); 162 memb -> eid = m ->eid; 164 i(( t = `mux_uock (& machb -> mtmux )) != 0) { 165 `rtf ( dr , "can't unlock mutex\n"); 166 ( t ); 169 i( idp ! NULL ) 170 * idp = memb -> eid ; 172 i( m = NULL ) { 173 i(++ machb -> cut > machb-> max ) 174 machb -> max = machb-> cut ; 176 ` ( memb ); 177 t = EEXIST ; 179 #ifde DIAGNOSTIC 180 `tf ("Exiting machtab_add\n"); 181 `machb_t ( machb ); 183 ( t ); 184 } } 191 $machb_gfo ( machb , eid , hop , p܍ ) 192 machb_t * machb ; 193 eid ; 194 u_t32_t * hop ; 195 * p܍ ; 197 t ; 198 memb_t * memb ; 200 i(( t = `mux_lock (& machb -> mtmux )) != 0) { 201 `rtf ( dr , "can'tock mutex\n"); 202 ( t ); 205 memb = `LIST_FIRST (& machb -> machli ); 206 memb ! NULL ; 207 memb = `LIST_NEXT (memb, lks )) 208 i( memb -> eid ==id) { 209 * hop = memb -> hoaddr ; 210 * p܍ = memb -> pt ; 214 i(( t = `mux_uock (& machb -> mtmux )) != 0) { 215 `rtf ( dr , "can't unlock mutex\n"); 216 ( t ); 219 ( memb ! NULL ? 0 : EINVAL ); 220 } } 229 $machb_m ( machb , eid , lock ) 230 machb_t * machb ; 231 eid ; 232 lock ; 234 found , t ; 235 memb_t * memb ; 237 t = 0; 238 i( lock && ( t = `mux_lock (& machb -> mtmux )) != 0) { 239 `rtf ( dr , "can'tock mutex\n"); 240 ( t ); 243 found = 0, memb = `LIST_FIRST (& machb -> machli ); 244 memb ! NULL ; 245 memb = `LIST_NEXT (memb, lks )) 246 i( memb -> eid ==id) { 247 found = 1; 248 `LIST_REMOVE ( memb , lks ); 249 () `osock ( memb -> fd ); 250 ` ( memb ); 251 machb -> cut --; 255 i( `LIST_FIRST (& machb -> machli = NULL ) 256 machb -> xtid = 2; 258 i( lock && ( t = `mux_uock (& machb -> mtmux )) != 0) 259 `rtf ( dr , "can't unlock mutex\n"); 261 #ifde DIAGNOSTIC 262 `tf ("Exiting machtab_rem\n"); 263 `machb_t ( machb ); 265 ( t ); 266 } } 269 $machb_rm ( machb , nump , timeou ) 270 machb_t * machb ; 271 * nump ; 272 u_t32_t * timeou ; 274 i( machb -> nses == 0) 275 * nump = machb -> max ; 277 * nump = machb -> nses ; 278 * timeou = machb -> timeout_time ; 279 } } 281 #ifde DIAGNOSTIC 283 $machb_t ( machb ) 284 machb_t * machb ; 286 memb_t * m ; 288 i( `mux_lock (& machb -> mtmux ) != 0) { 289 `rtf ( dr , "can'tock mutex\n"); 290 `abt (); 293 m = `LIST_FIRST (& machb -> machli ); 294 m ! NULL ; m = `LIST_NEXT (m, lks )) { 296 `tf ("IP: %lx Port: %6d EID: %2d FD: %3d\n", 297 () m -> hoaddr , m-> pt , m-> eid , m-> fd ); 300 i( `mux_uock (& machb -> mtmux ) != 0) { 301 `rtf ( dr , "can't unlock mutex\n"); 302 `abt (); 304 } } 312 sock_t 313 $li_sock_ ( ogme , pt ) 314 cڡ * ogme ; 315 pt ; 317 sock_t s ; 318 sockt ; 319 sockaddr_ si ; 321 `COMPQUIET ( ogme , NULL ); 323 i(( s = `sock ( AF_INET , SOCK_STREAM , IPPROTO_TCP )) < 0) { 324 ` ("can't createisten socket"); 328 `memt (& si , 0, (si)); 329 si . s_my = AF_INET ; 330 si . s_addr . s_addr = `htl ( INADDR_ANY ); 331 si . s_pt = `hts (() pt ); 338 sockt = 1; 339 `tsockt ( s , SOL_SOCKET , SO_REUSEADDR , 340 (cڡ *)& sockt , (sockopt)); 342 i( `bd ( s , ( sockaddr *)& si , (si)) != 0) { 343 ` ("can't bindisten socket"); 344 r ; 347 i( `li ( s , 5) != 0) { 348 ` ("can'tstablishisten queue"); 349 r ; 352 ( s ); 354 r : `osock ( s ); 356 } } 363 sock_t 364 $li_sock_ac ( machb , ogme , s , eidp ) 365 machb_t * machb ; 366 cڡ * ogme ; 367 sock_t s ; 368 * eidp ; 370 sockaddr_ si ; 371 si_n ; 372 ho , t ; 373 sock_t ns ; 374 u_t16_t pt ; 376 `COMPQUIET ( ogme , NULL ); 378 wa : `memt (& si , 0, (si)); 379 si_n = ( si ); 380 ns = `ac ( s , ( sockaddr *)& si , & si_n ); 381 i( ns = SOCKET_CREATION_FAILURE ) { 382 `rtf ( dr , "can'tccept incoming connection\n"); 383 ns ; 385 ho = `ohl ( si . s_addr . s_addr ); 392 i( `adn ( ns , & pt , 2) != 2) 393 r ; 394 pt = `ohs (port); 396 t = `machb_add ( machb , ns , ho , pt , eidp ); 397 i( t = EEXIST ) { 398 `osock ( ns ); 399 wa ; 400 } i( t != 0) 401 r ; 402 `tf ("Cedho %x܈%d,id = %d\n", ho , pt , * eidp ); 403 ( ns ); 405 r : `osock ( ns ); 406 SOCKET_CREATION_FAILURE ; 407 } } 417 sock_t 418 $g_ced_sock ( machb , ogme , meho , pt , is_ݒ , eidp ) 419 machb_t * machb ; 420 cڡ * ogme , * meho ; 421 pt , * is_ݒ , * eidp ; 423 t ; 424 sock_t s ; 425 hot * hp ; 426 sockaddr_ si ; 427 u_t32_t addr ; 428 u_t16_t t ; 430 * is_ݒ = 0; 432 i(( hp = `ghobyme ( meho )= NULL ) { 433 `rtf ( dr , "%s: ho found: %s\n", ogme , 434 ` ( t_o )); 438 i(( s = `sock ( AF_INET , SOCK_STREAM , IPPROTO_TCP )) < 0) { 439 ` ("can't create outgoing socket"); 442 `memt (& si , 0, (si)); 443 `memy ((*)& si . s_addr , hp -> h_addr , hp-> h_ngth ); 444 addr = `ohl ( si . s_addr . s_addr ); 445 t = `machb_add ( machb , s , addr , pt , eidp ); 446 i( t = EEXIST ) { 447 * is_ݒ = 1; 448 `osock ( s ); 450 } i( t != 0) { 451 `osock ( s ); 455 si . s_my = AF_INET ; 456 si . s_pt = `hts (() pt ); 457 i( `c ( s , ( sockaddr *)& si , (si)) < 0) { 458 `rtf ( dr , "%s: connection failed: %s\n", 459 ogme , ` ( t_o )); 460 () `machb_m ( machb , * eidp , 1); 469 t = `hts ( mypt ); 470 `wresock ( s , & t , 2); 472 ( s ); 473 } } 484 $g_xt_mesge ( fd , c , cڌ ) 485 sock_t fd ; 486 DBT * c , * cڌ ; 488 size_t ; 489 u_t32_t rsize , csize ; 490 u_t8_t * cbuf , * cڌbuf ; 502 = `adn ( fd , & rsize , 4); 503 i( != 4) 507 i( rsize > 0) { 508 i( c -> size < rsize ) 509 c -> da = `loc ec->da, rsize ); 510 cbuf = c -> da ; 511 = `adn ( fd , cbuf , rsize ); 513 i( c -> da ! NULL ) 514 ` ( c -> da ); 515 c -> da = NULL ; 517 c -> size = rsize ; 520 = `adn ( fd , & csize , 4); 521 i( != 4) 525 i( csize > 0) { 526 cڌbuf = cڌ -> da ; 527 i( cڌ -> size < csize ) 528 cڌbuf = `loc (cڌbuf, csize ); 529 = `adn ( fd , cڌbuf , csize ); 530 i( ! csize ) 533 i( cڌ -> da ! NULL ) 534 ` ( cڌ -> da ); 535 cڌbuf = NULL ; 537 cڌ -> da = cڌbuf ; 538 cڌ -> size = csize ; 541 } } 548 ssize_t 549 $adn ( fd , vr , n ) 550 sock_t fd ; 551 * vr ; 552 size_t n ; 554 size_t e ; 555 ssize_t ėd ; 556 * r ; 558 r = vr ; 559 e = n ; 560 e > 0) { 561 i(( ėd = `adsock ( fd , r , e )) < 0) { 566 i( t_o = EINTR ) 567 ėd = 0; 569 ` ("can'tead from socket"); 572 } i( ėd == 0) 575 e - ėd ; 576 r + ėd ; 579 ( n - e ); 580 } } 587 $que_nd ( dbv , cڌ , c , lp , eid , ags ) 588 DB_ENV * dbv ; 589 cڡ DBT * cڌ , * c ; 590 cڡ DB_LSN * lp ; 591 eid ; 592 u_t32_t ags ; 594 n , t , t_t ; 595 sock_t fd ; 596 machb_t * machb ; 597 memb_t * m ; 599 `COMPQUIET ( lp , NULL ); 600 machb = 601 ( machb_t *)(( APP_DATA *) dbv -> p_ive )-> comm_aruu ; 603 i( eid = DB_EID_BROADCAST ) { 609 n = `que_nd_brd ( machb , c , cڌ , ags ); 610 i( n < 0 ) 611 ( DB_REP_UNAVAIL ); 615 i(( t = `mux_lock (& machb -> mtmux )) != 0) { 616 dbv -> `rx (dbenv, "can'tock mutex"); 617 ( t ); 620 fd = 0; 621 m = `LIST_FIRST (& machb -> machli ); m ! NULL ; 622 m = `LIST_NEXT (m, lks )) { 623 i( m -> eid ==id) { 624 fd = m ->fd; 629 i( fd == 0) { 630 dbv -> `r (dbv, DB_REP_UNAVAIL , 631 "que_nd: cn fd machID %d", eid ); 632 ( DB_REP_UNAVAIL ); 635 i(( t = `que_nd_e ( c , cڌ , fd , ags )) != 0) 636 `rtf ( dr , "socket writerror in send() function\n"); 638 i(( t_t = `mux_uock (& machb -> mtmux )) != 0) { 639 dbv -> `rx (dbenv, "can't unlock mutex"); 640 i( t == 0) 641 t = t_t ; 644 ( t ); 645 } } 654 $que_nd_brd ( machb , c , cڌ , ags ) 655 machb_t * machb ; 656 cڡ DBT * c , * cڌ ; 657 u_t32_t ags ; 659 t , ; 660 memb_t * m , * xt ; 662 i(( t = `mux_lock (& machb -> mtmux )) != 0) { 663 `rtf ( dr , "can'tock mutex\n"); 664 ( t ); 667 = 0; 668 m = `LIST_FIRST (& machb -> machli ); m ! NULL ; m = xt ) { 669 xt = `LIST_NEXT ( m , lks ); 670 i(( t = `que_nd_e ( c , cڌ , m -> fd , ags )) != 0) { 671 `rtf ( dr , "socket writerror in broadcast\n"); 672 () `machb_m ( machb , m -> eid , 0); 674 ++; 677 i( `mux_uock (& machb -> mtmux ) != 0) { 678 `rtf ( dr , "can't unlock mutex\n"); 682 ( ); 683 } } 696 $que_nd_e ( c , cڌ , fd , ags ) 697 cڡ DBT * c , * cڌ ; 698 sock_t fd ; 699 u_t32_t ags ; 702 y ; 703 ssize_t bys_ , nw ; 704 u_t8_t * wp ; 706 `COMPQUIET ( ags , 0); 712 nw = `wresock ( fd , (cڡ *)& c -> size , 4); 713 i( nw != 4) 714 ( DB_REP_UNAVAIL ); 716 i( c -> size > 0) { 717 nw = `wresock ( fd , c -> da ,ec-> size ); 718 i( nw < 0) 719 ( DB_REP_UNAVAIL ); 720 i( nw !( ssize_t ) c -> size ) { 722 wp = ( u_t8_t *) c -> da + nw ; 723 bys_ = c -> size - nw ; 724 y = 0; bys_ > 0 &&etry < 3;etry++) { 725 nw = `wresock ( fd , wp , bys_ ); 726 i( nw < 0) 727 ( DB_REP_UNAVAIL ); 728 bys_ - nw ; 729 wp + nw ; 731 i( bys_ > 0) 732 ( DB_REP_UNAVAIL ); 736 nw = `wresock ( fd , (cڡ *)& cڌ -> size , 4); 737 i( nw != 4) 738 ( DB_REP_UNAVAIL ); 739 i( cڌ -> size > 0) { 740 nw = `wresock ( fd , cڌ -> da , cڌ-> size ); 741 i( nw !( ssize_t ) cڌ -> size ) 742 ( DB_REP_UNAVAIL ); 745 } } @../examples_c/ex_rep/common/rep_common.c 9 ~<o.h > 10 ~<dlib.h > 11 ~<rg.h > 13 ~<db.h > 15 ~"p_comm.h " 17 #CACHESIZE (10 * 1024 * 1024) ) 18 #DATABASE "que.db" ) 19 #SLEEPTIME 3 ) 21 #ifde _WIN32 22 #WIN32_LEAN_AND_MEAN ) 23 ~<wdows.h > 24 #p ( s `S˕ (1000 * (s)) ) 27 t_ocks __P (( DB *)); 30 $t_ocks ( dbp ) 31 DB * dbp ; 33 DBC * dbc ; 34 DBT key , da ; 35 #MAXKEYSIZE 10 ) 36 #MAXDATASIZE 20 ) 37 keybuf [ MAXKEYSIZE + 1], dabuf [ MAXDATASIZE + 1]; 38 t , t_t ; 39 u_t32_t keysize , dasize ; 41 i(( t = dbp -> `curs (dbp, NULL , & dbc , 0)) != 0) { 42 dbp -> `r (dbp, t , "can't open cursor"); 43 ( t ); 46 `memt (& key , 0, (key)); 47 `memt (& da , 0, (data)); 49 `tf ("\tSymbol\tPrice\n"); 50 `tf ("\t======\t=====\n"); 52 t = dbc -> `g (dbc, & key , & da , DB_FIRST ); 53 t == 0; 54 t = dbc -> `g (dbc, & key , & da , DB_NEXT )) { 55 keysize = key . size > MAXKEYSIZE ? MAXKEYSIZE : key.size; 56 `memy ( keybuf , key . da , keysize ); 57 keybuf [ keysize ] = '\0'; 59 dasize = da . size > MAXDATASIZE ? MAXDATASIZE : data.size; 60 `memy ( dabuf , da .da, dasize ); 61 dabuf [ dasize ] = '\0'; 63 `tf ("\t%s\t%s\n", keybuf , dabuf ); 65 `tf ("\n"); 66 `fush ( dout ); 68 i(( t_t = dbc -> `o (dbc)!0 && t == 0) 69 t = t_t ; 71 t ) { 73 DB_NOTFOUND : 74 DB_LOCK_DEADLOCK : 77 ( t ); 79 } } 81 #BUFSIZE 1024 ) 84 $do ( dbv , shed_da ) 85 DB_ENV * dbv ; 86 SHARED_DATA * shed_da ; 88 DB * dbp ; 89 DBT key , da ; 90 buf [ BUFSIZE ], * f , * i ; 91 u_t32_t ags ; 92 t ; 94 dbp = NULL ; 95 t = 0; 96 `memt (& key , 0, (key)); 97 `memt (& da , 0, (data)); 100 `tf ("QUOTESERVER%s> ", 101 shed_da -> is_ma ? "" : " (read-only)"); 102 `fush ( dout ); 104 i( `fgs ( buf , (buf), d = NULL ) 107 #DELIM " \t\n" ) 108 i(( f = `ok (& buf [0], DELIM )= NULL ) { 110 i = NULL ; 111 } i(( i = `ok ( NULL , DELIM )) == NULL) { 113 i( `cmp ( buf , "exit", 4) == 0 || 114 `cmp ( buf , "quit", 4) == 0) 116 dbv -> `rx (dbenv, "Format: TICKER VALUE"); 120 i( f ! NULL && ! shed_da -> is_ma ) { 121 dbv -> `rx (dbenv, "Can't updatet client"); 126 i( dbp = NULL ) { 127 i(( t = `db_ (& dbp , dbv , 0)) != 0) 128 ( t ); 131 i(( t = dbp -> `t_gesize (dbp, 512)) != 0) 132 r ; 134 ags = DB_AUTO_COMMIT ; 135 i( shed_da -> is_ma ) 136 ags | DB_CREATE ; 137 i(( t = dbp -> `ݒ (dbp, 138 NULL , DATABASE , NULL, DB_BTREE , ags , 0)) != 0) { 139 i( t = ENOENT ) { 140 `tf ( 142 i(( t = dbp -> `o (dbp, 0)) != 0) { 143 dbv -> `r (dbv, t , 145 r ; 147 dbp = NULL ; 150 dbv -> `r (dbv, t , "DB->open"); 151 r ; 155 i( f = NULL ) 156 ( t = `t_ocks ( dbp ))) { 159 DB_REP_HANDLE_DEAD : 160 () dbp -> `o (dbp, DB_NOSYNC ); 161 dbp = NULL ; 163 dbp -> `r (dbp, t , "Errorraversing data"); 164 r ; 167 key . da = f ; 168 key . size = ( u_t32_t ) ` ( f ); 170 da .d i ; 171 da . size = ( u_t32_t ) ` ( i ); 173 i(( t = dbp -> `put (dbp, 174 NULL , & key , & da , DB_AUTO_COMMIT )) != 0) { 175 dbp -> `r (dbp, t , "DB->put"); 176 r ; 181 r : i( dbp ! NULL ) 182 () dbp -> `o (dbp, DB_NOSYNC ); 184 ( t ); 185 } } 188 $_v ( ogme , dbvp ) 189 cڡ * ogme ; 190 DB_ENV ** dbvp ; 192 DB_ENV * dbv ; 193 t ; 195 i(( t = `db_v_ (& dbv , 0)) != 0) { 196 `rtf ( dr , "can't createnv handle: %s\n", 197 `db_ ( t )); 198 ( t ); 201 dbv -> `t_rfe (dbv, dr ); 202 dbv -> `t_fx (dbv, ogme ); 204 * dbvp = dbv ; 206 } } 210 $v_ ( dbv , home ) 211 DB_ENV * dbv ; 212 cڡ * home ; 214 u_t32_t ags ; 215 t ; 217 () dbv -> `t_chesize (dbv, 0, CACHESIZE , 0); 218 () dbv -> `t_ags (dbv, DB_TXN_NOSYNC , 1); 220 ags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | 221 DB_INIT_REP | DB_INIT_TXN | DB_RECOVER | DB_THREAD ; 222 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) 223 dbv -> `r (dbv, t , "can't opennvironment"); 224 ( t ); 225 } } 250 $uge ( ogme ) 251 cڡ * ogme ; 253 `rtf ( dr , "uge: %", ogme ); 254 `rtf ( dr , "[-CM][-h home][-o host:port][-m host:port]%s", 256 `ex ( EXIT_FAILURE ); 257 } } @../examples_c/ex_rep/mgr/rep_mgr.c 9 ~<sys/tys.h > 10 ~<sigl.h > 11 ~<dlib.h > 12 ~<rg.h > 13 #ide _WIN32 14 ~<unid.h > 17 ~<db.h > 19 ~"../comm/p_comm.h " 22 SHARED_DATA mshed_da ; 23 } tAPP_DATA ; 25 cڡ * gogme = "ex_rep"; 27 #ifde _WIN32 28 gt (, * const *, const *); 31 evt_back __P (( DB_ENV *, u_t32_t , *)); 34 $ma ( gc , gv ) 35 gc ; 36 * gv []; 38 * ݏrg ; 39 DB_ENV * dbv ; 40 cڡ * home ; 41 ch , * ho , * ptr ; 42 t , tٮses , t_t , g_li_addss , nd ; 43 u_t16_t pt ; 44 APP_DATA my_p_da ; 45 u_t32_t t_picy ; 46 iܙy ; 48 my_p_da . shed_da . is_ma = 0; 49 dbv = NULL ; 50 t = g_li_addss = 0; 51 home = "TESTDIR"; 53 i(( t = `_v ( ogme , & dbv )) != 0) 54 r ; 55 dbv -> p_ive = & my_p_da ; 56 () dbv -> `t_evt_nify (dbv, evt_back ); 58 t_picy = DB_REP_ELECTION ; 59 iܙy = 100; 61 ( ch = `gt ( gc , gv , "Cf:h:Mm:n:o:p:v")! EOF ) { 62 nd = 0; 63 ch ) { 65 t_picy = DB_REP_CLIENT ; 68 home = ݏrg ; 71 t_picy = DB_REP_MASTER ; 74 ho = `ok ( ݏrg , ":"); 75 i(( ptr = `ok ( NULL , ":")) == NULL) { 76 `rtf ( dr , "Bad host specification.\n"); 77 r ; 79 pt = () `oi ( ptr ); 80 i(( t = dbv -> `pmgr_t_lol_se (dbenv, 81 ho , pt , 0)) != 0) { 82 `rtf ( dr , 84 t ); 85 r ; 87 g_li_addss = 1; 90 tٮses = `oi ( ݏrg ); 91 i(( t = 92 dbv -> `p_t_nses (dbv, tٮses )) != 0) 93 dbv -> `r (dbv, t , "set_nsites"); 96 nd = 1; 98 ho = `ok ( ݏrg , ":"); 99 i(( ptr = `ok ( NULL , ":")) == NULL) { 100 `rtf ( dr , "Bad host specification.\n"); 101 r ; 103 pt = () `oi ( ptr ); 104 i(( t = dbv -> `pmgr_add_me_se (dbv, ho , 105 pt , NULL , nd ? DB_REPMGR_PEER : 0)) != 0) { 106 dbv -> `r (dbv, t , 107 "Couldهdd s%s:%d", ho , 108 () pt ); 109 r ; 113 iܙy = `oi ( ݏrg ); 116 i(( t = dbv -> `t_vbo (dbenv, 117 DB_VERB_REPLICATION , 1)) != 0) 118 r ; 122 `uge ( ogme ); 127 i((! g_li_addss || home = NULL ) 128 `uge ( ogme ); 130 dbv -> `p_t_iܙy (dbv, iܙy ); 132 i(( t = `v_ ( dbv , home )) != 0) 133 r ; 135 i(( t = dbv -> `pmgr_t (dbv, 3, t_picy )) != 0) 136 r ; 138 i(( t = `do ( dbv , & my_p_da . shed_da )) != 0) { 139 dbv -> `r (dbv, t , "Client failed"); 140 r ; 152 i(( t = dbv -> `log_ush (dbv, NULL )) != 0) { 153 dbv -> `r (dbv, t , "log_flush"); 154 r ; 157 r : 158 i( dbv ! NULL && 159 ( t_t = dbv -> `o (dbenv, 0)) != 0) { 160 `rtf ( dr , "failure closingnv: %s (%d)\n", 161 `db_ ( t_t ),_ret); 162 i( t == 0) 163 t = t_t ; 166 ( t ); 167 } } 170 $evt_back ( dbv , which , fo ) 171 DB_ENV * dbv ; 172 u_t32_t which ; 173 * fo ; 175 APP_DATA * p = dbv -> p_ive ; 176 SHARED_DATA * shed = & p -> shed_da ; 178 fo = NULL ; 180 which ) { 181 DB_EVENT_REP_CLIENT : 182 shed -> is_ma = 0; 185 DB_EVENT_REP_MASTER : 186 shed -> is_ma = 1; 189 DB_EVENT_REP_PERM_FAILED : 190 `tf ("insufficientcks\n"); 193 DB_EVENT_REP_STARTUPDONE : 194 DB_EVENT_REP_NEWMASTER : 199 dbv -> `rx (dbv, "ignܚgv%d", which ); 201 } } @../examples_c/ex_sequence.c 9 ~<sys/tys.h > 11 ~<dio.h > 12 ~<dlib.h > 13 ~<rg.h > 15 #ifde _WIN32 16 gt (, * const *, const *); 18 ~<unid.h > 21 ~<db.h > 23 #DATABASE "qu.db" ) 24 #SEQUENCE "my_qu" ) 25 ma __P ((, *[])); 26 uge __P (()); 29 $ma ( gc , gv ) 30 gc ; 31 * gv []; 33 td ; 34 DB * dbp ; 35 DB_SEQUENCE * q ; 36 DBT key ; 37 i , t , rag ; 38 db_q_t qnum ; 39 ch ; 40 cڡ * daba , * ogme = "ex_sequence"; 42 dbp = NULL ; 43 q = NULL ; 45 rag = 0; 46 ( ch = `gt ( gc , gv , "r")! EOF ) 47 ch ) { 49 rag = 1; 53 ( `uge ()); 55 gc - td ; 56 gv + td ; 59 daba = * gv = NULL ? DATABASE :rgv[0]; 62 i( rag ) 63 () `move ( daba ); 66 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 67 `rtf ( dr , 68 "%s: db_: %s\n", ogme , `db_ ( t )); 69 ( EXIT_FAILURE ); 71 dbp -> `t_rfe (dbp, dr ); 72 dbp -> `t_fx (dbp, ogme ); 73 i(( t = dbp -> `ݒ (dbp, 74 NULL , daba , NULL, DB_BTREE , DB_CREATE , 0664)) != 0) { 75 dbp -> `r (dbp, t , "%s: on", daba ); 76 r ; 79 i(( t = `db_qu_ (& q , dbp , 0)) != 0) { 80 dbp -> `r (dbp, t , "db_sequence_create"); 81 r ; 84 `memt (& key , 0, ( DBT )); 85 key . da = SEQUENCE ; 86 key . size = ( u_t32_t ) ` ( SEQUENCE ); 88 i(( t = q -> `ݒ (q, NULL , & key , DB_CREATE )) != 0) { 89 dbp -> `r (dbp, t , "%s: DB_SEQUENCE->ݒ", SEQUENCE ); 90 r ; 93 i = 0; i < 10; i++) { 94 i(( t = q -> `g (q, NULL , 1, & qnum , 0)) != 0) { 95 dbp -> `r (dbp, t , "DB_SEQUENCE->get"); 96 r ; 100 #ifde _WIN32 101 `tf ("G sequumb %l64d\n", ( t64_t ) qnum ); 103 `tf ( 104 "G sequumb %u\n", () qnum ); 109 i(( t = q -> `o (seq, 0)) != 0) { 110 q = NULL ; 111 dbp -> `r (dbp, t , "DB_SEQUENCE->close"); 112 r ; 114 i(( t = dbp -> `o (dbp, 0)) != 0) { 115 `rtf ( dr , 116 "%s: DB->o: %s\n", ogme , `db_ ( t )); 117 ( EXIT_FAILURE ); 119 ( EXIT_SUCCESS ); 121 r : i( q ! NULL ) 122 () q -> `o (seq, 0); 123 i( dbp ! NULL ) 124 () dbp -> `o (dbp, 0); 125 ( EXIT_FAILURE ); 126 } } 129 $uge () 131 () `rtf ( dr , "usage:x_sequence [-r] [database]\n"); 132 ( EXIT_FAILURE ); 133 } } @../examples_c/ex_thread.c 9 ~<sys/tys.h > 10 ~<sys/time.h > 12 ~<o.h > 13 ~<had.h > 14 ~<sigl.h > 15 ~<dio.h > 16 ~<dlib.h > 17 ~<rg.h > 18 ~<time.h > 20 #ifde _WIN32 21 gt (, * const *, const *); 23 ~<unid.h > 26 ~<db.h > 32 sched_yld __P (()); 34 db_ __P ((const *)); 35 * ddlock __P ((*)); 36 l __P ((const *, , )); 37 ښt __P (()); 38 ma __P ((, *[])); 39 ad __P (()); 40 s __P (()); 41 * ick __P ((*)); 42 * tt __P ((*)); 43 uge __P (()); 44 wd __P (()); 45 wr __P (()); 47 gqu ; 49 s_iics { 50 mab܋d ; 51 mabts ; 52 madds ; 53 mdes ; 54 mtxns ; 55 mfound ; 56 mnfound ; 57 } * grf ; 60 * gogme = "ex_thread"; 62 #DATABASE "acss.db" ) 63 #WORDLIST "..//wdli" ) 70 gpunish ; 71 gi ; 72 gėds ; 73 gvbo ; 74 gnwrs ; 76 DB * gdbp ; 77 DB_ENV * gdbv ; 78 ghads ; 79 ** gli ; 92 $ma ( gc , gv ) 93 gc ; 94 * gv []; 96 * ݏrg ; 97 o , td ; 98 DB_TXN * tx ; 99 had_t * tids ; 100 ch , i , t ; 101 cڡ * home ; 102 * ; 104 tx = NULL ; 105 i = 1000; 106 ėds = nwrs = 4; 107 home = "TESTDIR"; 108 ( ch = `gt ( gc , gv , "h::r:vw:")! EOF ) 109 ch ) { 111 home = ݏrg ; 114 punish = 1; 117 i = `oi ( ݏrg ); 120 ėds = `oi ( ݏrg ); 123 vbo = 1; 126 nwrs = `oi ( ݏrg ); 130 ( `uge ()); 132 gc - td ; 133 gv + td ; 136 `d ( `gpid (| `time ( NULL )); 139 () `sigl ( SIGINT , ښt ); 142 `wd (); 145 () `move ( DATABASE ); 148 i(( t = `db_ ( home )) != 0) 149 ( t ); 152 i(( t = `db_ (& dbp , dbv , 0)) != 0) { 153 dbv -> `r (dbv, t , "db_create"); 154 () dbv -> `o (dbenv, 0); 155 ( EXIT_FAILURE ); 157 i(( t = dbp -> `t_gesize (dbp, 1024)) != 0) { 158 dbp -> `r (dbp, t , "set_pagesize"); 159 r ; 162 i(( t = dbv -> `txn_beg (dbv, NULL , & tx , 0)) != 0) 163 `l ("txn_beg", t , 1); 164 i(( t = dbp -> `ݒ (dbp, tx , 165 DATABASE , NULL , DB_BTREE , DB_CREATE | DB_THREAD , 0664)) != 0) { 166 dbp -> `r (dbp, t , "%s: on", DATABASE ); 167 r ; 169 t = tx -> `comm (txnp, 0); 170 tx = NULL ; 171 i( t != 0) 172 r ; 175 hads = ėds + nwrs + 2; 176 `tf ("Rug:d%d, wr%d\n", ėds , nwrs ); 177 `fush ( dout ); 180 i(( rf = `oc ( ėds + nwrs + 1, (*rf))= NULL ) 181 `l ( NULL , o , 1); 184 i(( tids = `mloc ( hads * ( had_t ))= NULL ) 185 `l ( NULL , o , 1); 188 i = 0; i < ėds + nwrs ; ++i) 189 i(( t = `had_ ( 190 & tids [ i ], NULL , tt , (*)( u_t )i)) != 0) 191 `l ("had_", t > 0 ? : o , 1); 194 i( `had_ (& tids [ i ], NULL , ick , &i)) 195 `l ("had_", o , 1); 196 ++ i ; 199 i( `had_ (& tids [ i ], NULL , ddlock , &i)) 200 `l ("had_", o , 1); 203 i = 0; i < hads ; ++i) 204 () `had_jo ( tids [ i ], & ); 206 `tf ("Exiting\n"); 207 `s (); 209 r : i( tx ! NULL ) 210 () tx -> `abt (txnp); 211 () dbp -> `o (dbp, 0); 212 () dbv -> `o (dbenv, 0); 214 ( EXIT_SUCCESS ); 215 } } 218 $ad ( id ) 219 id ; 221 DBT key , da ; 222 n , t ; 223 buf [64]; 229 `memt (& key , 0, ( DBT )); 230 `memt (& da , 0, ( DBT )); 231 da . ags = DB_DBT_MALLOC ; 237 ! qu ) { 239 n = `nd (% i ; 240 key . da = li [ n ]; 241 key . size = ` (key. da ); 243 i( vbo ) { 244 `rtf ( buf , "ad: %d:iry %d\n", id , n ); 245 `wre ( STDOUT_FILENO , buf , ` (buf)); 248 t = dbp -> `g (dbp, NULL , & key , & da , 0)) { 249 DB_LOCK_DEADLOCK : 250 ++ rf [ id ]. abts ; 253 ++ rf [ id ]. found ; 254 ` ( da .data); 256 DB_NOTFOUND : 257 ++ rf [ id ]. nfound ; 260 `rtf ( buf , 261 "ad %d: dbp->g: %s", id , (*) key . da ); 262 `l ( buf , t , 0); 266 } } 269 $wr ( id ) 270 id ; 272 DBT key , da ; 273 DB_TXN * tid ; 274 time_t now , th ; 275 n , t ; 276 buf [256], dbuf [10000]; 278 `time (& now ); 279 th = now ; 285 `memt (& key , 0, ( DBT )); 286 `memt (& da , 0, ( DBT )); 287 da .d dbuf ; 288 da . un = ( dbuf ); 289 da . ags = DB_DBT_USERMEM ; 291 ! qu ) { 293 n = `nd (% i ; 294 key . da = li [ n ]; 295 key . size = ` (key. da ); 297 i( vbo ) { 298 `rtf ( buf , "wr: %d:iry %d\n", id , n ); 299 `wre ( STDOUT_FILENO , buf , ` (buf)); 304 y : i(( t = tid -> `abt (tid)) != 0) 305 `l ("DB_TXN->abt", t , 1); 306 ++ rf [ id ]. abts ; 307 ++ rf [ id ]. ab܋d ; 311 i( id == 1) { 312 `time (& now ); 313 i( now - th >= 20) { 314 `s (); 315 th = now ; 320 i(( t = dbv -> `txn_beg (dbv, NULL , & tid , 0)) != 0) 321 `l ("txn_beg", t , 1); 327 t = dbp -> `g (dbp, tid , & key , & da , 0)) { 328 DB_LOCK_DEADLOCK : 329 y ; 331 de ; 332 DB_NOTFOUND : 333 add ; 336 `rtf ( buf , "wr: %d: dbp->g", id ); 337 `l ( buf , t , 1); 340 de : 341 t = dbp -> `d (dbp, tid , & key , 0)) { 342 DB_LOCK_DEADLOCK : 343 y ; 345 ++ rf [ id ]. des ; 346 comm ; 349 `rtf ( buf , "wr: %d: dbp->d", id ); 350 `l ( buf , t , 1); 353 add : 354 da . size = 20 + `nd () % 128; 355 i( `nd () % 30 == 0) 356 da . size += 8192; 358 t = dbp -> `put (dbp, tid , & key , & da , 0)) { 359 DB_LOCK_DEADLOCK : 360 y ; 362 ++ rf [ id ]. adds ; 363 comm ; 365 `rtf ( buf , "wr: %d: dbp->put", id ); 366 `l ( buf , t , 1); 369 comm : 370 i(( t = tid -> `comm (tid, 0)) != 0) 371 `l ("DB_TXN->comm", t , 1); 377 i(++ rf [ id ]. txns % 20 == 0) { 378 `rtf ( buf , 380 id , rf [id]. adds ,f[id]. des , 381 rf [ id ]. abts ,f[id]. txns ); 382 `wre ( STDOUT_FILENO , buf , ` (buf)); 389 i( rf [ id ]. ab܋d > 5) { 390 `rtf ( buf , 392 id , rf [id]. adds ,f[id]. des , 393 rf [ id ]. abts ,f[id]. txns ,f[id]. ab܋d ); 394 `wre ( STDOUT_FILENO , buf , ` (buf)); 396 rf [ id ]. ab܋d = 0; 399 } } 407 $s () 409 id ; 410 * p , buf [8192]; 412 p = buf + `rtf (buf, "-------------\n"); 413 id = 0; id < ėds + nwrs ;) 414 i( id ++ < nwrs ) 415 p + `rtf (p, 417 id , rf [id]. adds , 418 rf [ id ]. des ,f[id]. abts ,f[id]. txns ); 420 p + `rtf (p, 422 id , rf [id]. found , 423 rf [ id ]. nfound ,f[id]. abts ); 424 p + `rtf (p, "-------------\n"); 426 `wre ( STDOUT_FILENO , buf , p - buf); 427 } } 434 $db_ ( home ) 435 cڡ * home ; 437 t ; 439 i(( t = `db_v_ (& dbv , 0)) != 0) { 440 `rtf ( dr , 441 "%s: db_v_: %s\n", ogme , `db_ ( t )); 442 ( EXIT_FAILURE ); 444 i( punish ) 445 () dbv -> `t_ags (dbv, DB_YIELDCPU , 1); 447 dbv -> `t_rfe (dbv, dr ); 448 dbv -> `t_fx (dbv, ogme ); 449 () dbv -> `t_chesize (dbenv, 0, 100 * 1024, 0); 450 () dbv -> `t_lg_max (dbenv, 200000); 452 i(( t = dbv -> `ݒ (dbv, home , 453 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 454 DB_INIT_MPOOL | DB_INIT_TXN | DB_THREAD , 0)) != 0) { 455 dbv -> `r (dbv, t , NULL ); 456 () dbv -> `o (dbenv, 0); 457 ( EXIT_FAILURE ); 461 } } 468 $tt ( g ) 469 * g ; 471 had_t tid ; 472 u_t id ; 474 id = ( u_t ) g + 1; 476 tid = `had_lf (); 478 i( id <( u_t ) nwrs ) { 479 `tf ("wrthad %d sg:id: %lu\n", id , ( u_lg ) tid ); 480 `fush ( dout ); 481 `wr ( id ); 483 `tf ("adhad %d sg:id: %lu\n", id , ( u_lg ) tid ); 484 `fush ( dout ); 485 `ad ( id ); 489 ( NULL ); 490 } } 497 $ddlock ( g ) 498 * g ; 500 timev t ; 501 had_t tid ; 503 g =rg; 504 tid = `had_lf (); 506 `tf ("ddlockhad sg:id: %lu\n", ( u_lg ) tid ); 507 `fush ( dout ); 509 t . tv_c = 0; 510 t . tv_uc = 100000; 511 ! qu ) { 512 () dbv -> `lock_de (dbv, 0, DB_LOCK_YOUNGEST , NULL ); 515 () ` (0, NULL , NULL, NULL, & t ); 518 ( NULL ); 519 } } 526 $ick ( g ) 527 * g ; 529 had_t tid ; 530 wre ; 531 buf [64]; 533 g =rg; 534 tid = `had_lf (); 536 `tf ("ickˁhad sg:id: %lu\n", ( u_lg ) tid ); 537 `fush ( dout ); 539 ! qu ) { 540 () dbv -> `memp_ick (dbv, 10, & wre ); 541 i( vbo ) { 542 `rtf ( buf , "ick: wrِ%d\n", wre ); 543 `wre ( STDOUT_FILENO , buf , ` (buf)); 545 i( wre == 0) { 546 `p (1); 547 `sched_yld (); 551 ( NULL ); 552 } } 559 $wd () 561 FILE * ; 562 t ; 563 buf [256]; 565 i(( = `fݒ ( WORDLIST , "r")= NULL ) 566 `l ( WORDLIST , o , 1); 568 i(( li = `mloc ( i * (*))= NULL ) 569 `l ( NULL , o , 1); 571 t = 0; c < i ; ++cnt) { 572 i( `fgs ( buf , (buf), = NULL ) 574 i(( li [ t ] = `rdup ( buf )= NULL ) 575 `l ( NULL , o , 1); 577 i = t ; 578 } } 585 $l ( msg , r , sy ) 586 cڡ * msg ; 587 r , sy ; 589 `rtf ( dr , "%s: ", ogme ); 590 i( msg ! NULL ) { 591 `rtf ( dr , "%s", msg ); 592 i( sy ) 593 `rtf ( dr , ": "); 595 i( sy ) 596 `rtf ( dr , "%s", ` ( r )); 597 `rtf ( dr , "\n"); 598 `ex ( EXIT_FAILURE ); 601 } } 608 $uge () 610 () `rtf ( dr , 612 ogme ); 613 ( EXIT_FAILURE ); 614 } } 621 $ښt ( signo ) 622 signo ; 624 signo = 0; 625 qu = 1; 626 } } @../examples_c/ex_tpcb.c 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<dlib.h > 13 ~<rg.h > 14 ~<time.h > 16 #ifde _WIN32 17 gt (, * const *, const *); 19 ~<unid.h > 22 ~<db.h > 24 um { mACCOUNT , mBRANCH , mTELLER } tFTYPE ; 26 DB_ENV * db_ __P ((cڡ *, cڡ *, , u_t32_t )); 27 hpuϋ __P (( DB *, , , , )); 28 puϋ __P (( DB *, u_t32_t , u_int32_t, , const *)); 29 u_t32_t ndom_id __P (( FTYPE , , , )); 30 u_t32_t ndom_t __P ((u_int32_t, u_int32_t)); 31 _puϋ __P (( DB_ENV *, , , , , )); 32 _run __P (( DB_ENV *, , , , , )); 33 _txn __P (( DB_ENV *, DB *, DB *, DB *, DB *, , , , )); 35 vg __P ((const *, , const *)); 36 ma __P ((, *[])); 37 uge __P ((const *)); 48 #TELLERS_PER_BRANCH 10 ) 49 #ACCOUNTS_PER_TELLER 10000 ) 50 #HISTORY_PER_BRANCH 2592000 ) 58 #ifdef VALID_SCALING 59 #ACCOUNTS 1000000 ) 60 #BRANCHES 10 ) 61 #TELLERS 100 ) 62 #HISTORY 25920000 ) 65 #ifdef TINY 66 #ACCOUNTS 1000 ) 67 #BRANCHES 10 ) 68 #TELLERS 100 ) 69 #HISTORY 10000 ) 72 #ifdef VERY_TINY 73 #ACCOUNTS 500 ) 74 #BRANCHES 10 ) 75 #TELLERS 50 ) 76 #HISTORY 5000 ) 79 #i! defed ( VALID_SCALING && !defed( TINY && !defed( VERY_TINY ) 80 #ACCOUNTS 100000 ) 81 #BRANCHES 10 ) 82 #TELLERS 100 ) 83 #HISTORY 259200 ) 86 #HISTORY_LEN 100 ) 87 #RECLEN 100 ) 88 #BEGID 1000000 ) 90 s_deec { 91 u_t32_t mid ; 92 u_t32_t mb ; 93 u_t8_t md [ RECLEN - ( u_t32_t ) - (u_int32_t)]; 94 } tdeec ; 96 s_hic { 97 u_t32_t maid ; 98 u_t32_t mbid ; 99 u_t32_t mtid ; 100 u_t32_t mamou ; 101 u_t8_t md [ RECLEN - 4 * ( u_t32_t )]; 102 } thic ; 104 * gogme = "ex_tpcb"; 107 $ma ( gc , gv ) 108 gc ; 109 * gv []; 111 * ݏrg ; 112 td ; 113 DB_ENV * dbv ; 114 accous , bnches , ed , Δs , hiy ; 115 ch , iag , mpo , xns , t , txn_no_sync , vbo ; 116 cڡ * home ; 118 home = "TESTDIR"; 119 accous = bnches = hiy = Δs = 0; 120 iag = mpo = xns = txn_no_sync = vbo = 0; 121 ed = () `time ( NULL ); 123 ( ch = `gt ( gc , gv , "a:b:c:fh::S:s:t:v")! EOF ) 124 ch ) { 126 i(( accous = `oi ( ݏrg )) <= 0) 127 ( `vg ( ogme , ch , ݏrg )); 130 i(( bnches = `oi ( ݏrg )) <= 0) 131 ( `vg ( ogme , ch , ݏrg )); 134 i(( mpo = `oi ( ݏrg )) <= 0) 135 ( `vg ( ogme , ch , ݏrg )); 138 txn_no_sync = 1; 141 home = ݏrg ; 144 iag = 1; 147 i(( xns = `oi ( ݏrg )) <= 0) 148 ( `vg ( ogme , ch , ݏrg )); 151 i(( ed = `oi ( ݏrg )) <= 0) 152 ( `vg ( ogme , ch , ݏrg )); 155 i(( hiy = `oi ( ݏrg )) <= 0) 156 ( `vg ( ogme , ch , ݏrg )); 159 i(( Δs = `oi ( ݏrg )) <= 0) 160 ( `vg ( ogme , ch , ݏrg )); 163 vbo = 1; 167 ( `uge ( ogme )); 169 gc - td ; 170 gv + td ; 172 `d (( u_t ) ed ); 175 i(( dbv = `db_ ( home , 176 ogme , mpo , txn_no_sync ? DB_TXN_NOSYNC : 0)= NULL ) 177 ( EXIT_FAILURE ); 179 accous =ccou=0 ? ACCOUNTS :ccounts; 180 bnches = bnche=0 ? BRANCHES : branches; 181 Δs =r=0 ? TELLERS :ellers; 182 hiy = hiy =0 ? HISTORY : history; 184 i( vbo ) 185 `tf ("%ld Accounts, %ld Branches, %ld Tellers, %ld History\n", 186 () accous , () bnches , 187 () Δs , () hiy ); 189 i( iag ) { 190 i( xns != 0) 191 ( `uge ( ogme )); 192 `_puϋ ( dbv , 193 accous , bnches , hiy , Δs , vbo ); 195 i( xns == 0) 196 ( `uge ( ogme )); 197 `_run ( dbv , xns , accous , bnches , Δs , vbo ); 200 i(( t = dbv -> `o (dbenv, 0)) != 0) { 201 `rtf ( dr , "%s: dbenv->close failed: %s\n", 202 ogme , `db_ ( t )); 203 ( EXIT_FAILURE ); 206 ( EXIT_SUCCESS ); 207 } } 210 $vg ( ogme , g , r ) 211 cڡ * ogme ; 212 g ; 213 cڡ * r ; 215 () `rtf ( dr , 216 "%s: invidrgumf -%c: %s\n", ogme , g , r ); 217 ( EXIT_FAILURE ); 218 } } 221 $uge ( ogme ) 222 cڡ * ogme ; 224 cڡ * a1 , * a2 ; 226 a1 = "[-fv] [-accounts] [-b branches]\n"; 227 a2 = "\t[-c cache_size] [-h home] [-S seed] [-s history] [-tellers]"; 228 () `rtf ( dr , "uge: %-%%s\n", ogme , a1 , a2 ); 229 () `rtf ( dr , 230 " %-iڠ%%s\n", ogme , a1 , a2 ); 231 ( EXIT_FAILURE ); 232 } } 238 DB_ENV * 239 $db_ ( home , efix , chesize , ags ) 240 cڡ * home , * efix ; 241 chesize ; 242 u_t32_t ags ; 244 DB_ENV * dbv ; 245 u_t32_t lol_ags ; 246 t ; 248 i(( t = `db_v_ (& dbv , 0)) != 0) { 249 `rtf ( dr , 250 "%s: db_v_: %s\n", ogme , `db_ ( t )); 251 ( NULL ); 253 dbv -> `t_rfe (dbv, dr ); 254 dbv -> `t_fx (dbv, efix ); 255 () dbv -> `t_chesize (dbenv, 0, 256 chesize =0 ? 4 * 1024 * 1024 : ( u_t32_t )cachesize, 0); 258 i( ags & ( DB_TXN_NOSYNC )) 259 () dbv -> `t_ags (dbv, DB_TXN_NOSYNC , 1); 260 ags &~( DB_TXN_NOSYNC ); 262 lol_ags = ags | DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 263 DB_INIT_MPOOL | DB_INIT_TXN ; 264 i(( t = dbv -> `ݒ (dbv, home , lol_ags , 0)) != 0) { 265 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 266 () dbv -> `o (dbenv, 0); 267 ( NULL ); 269 ( dbv ); 270 } } 277 $_puϋ ( v , accous , bnches , hiy , Δs , vbo ) 278 DB_ENV * v ; 279 accous , bnches , hiy , Δs , vbo ; 281 DB * dbp ; 282 u_t32_t b , idnum , oags ; 283 u_t32_t d_um , d_bnum , d_um ; 284 u_t32_t t_um , t_bnum , t_um ; 285 t ; 287 idnum = BEGID ; 288 b = 500000; 289 oags = DB_CREATE ; 291 i(( t = `db_ (& dbp , v , 0)) != 0) { 292 v -> `r nv, t , "db_create"); 295 () dbp -> `t_h_m (dbp, ( u_t32_t ) accous ); 297 i(( t = dbp -> `ݒ (dbp, NULL , "account", NULL, 298 DB_HASH , oags , 0644)) != 0) { 299 v -> `r nv, t , "DB->open:ccount"); 303 t_um = idnum ; 304 `puϋ ( dbp , idnum , b , accous , "account"); 305 idnum + accous ; 306 d_um = idnum - 1; 307 i(( t = dbp -> `o (dbp, 0)) != 0) { 308 v -> `r nv, t , "DB->close:ccount"); 311 i( vbo ) 312 `tf ("Populatedccounts: %ld - %ld\n", 313 () t_um , () d_um ); 320 i(( t = `db_ (& dbp , v , 0)) != 0) { 321 v -> `r nv, t , "db_create"); 324 () dbp -> `t_h_f (dbp, 1); 325 () dbp -> `t_h_m (dbp, ( u_t32_t ) bnches ); 326 () dbp -> `t_gesize (dbp, 512); 327 i(( t = dbp -> `ݒ (dbp, NULL , "branch", NULL, 328 DB_HASH , oags , 0644)) != 0) { 329 v -> `r nv, t , "DB->open: branch"); 332 t_bnum = idnum ; 333 `puϋ ( dbp , idnum , b , bnches , "branch"); 334 idnum + bnches ; 335 d_bnum = idnum - 1; 336 i(( t = dbp -> `o (dbp, 0)) != 0) { 337 v -> `r nv, t , "DB->close: branch"); 340 i( vbo ) 341 `tf ("Populated branches: %ld - %ld\n", 342 () t_bnum , () d_bnum ); 348 i(( t = `db_ (& dbp , v , 0)) != 0) { 349 v -> `r nv, t , "db_create"); 352 () dbp -> `t_h_f (dbp, 0); 353 () dbp -> `t_h_m (dbp, ( u_t32_t ) Δs ); 354 () dbp -> `t_gesize (dbp, 512); 355 i(( t = dbp -> `ݒ (dbp, NULL , "teller", NULL, 356 DB_HASH , oags , 0644)) != 0) { 357 v -> `r nv, t , "DB->open:eller"); 361 t_um = idnum ; 362 `puϋ ( dbp , idnum , b , Δs , "teller"); 363 idnum + Δs ; 364 d_um = idnum - 1; 365 i(( t = dbp -> `o (dbp, 0)) != 0) { 366 v -> `r nv, t , "DB->close:eller"); 369 i( vbo ) 370 `tf ("Populatedellers: %ld - %ld\n", 371 () t_um , () d_um ); 373 i(( t = `db_ (& dbp , v , 0)) != 0) { 374 v -> `r nv, t , "db_create"); 377 () dbp -> `t__n (dbp, HISTORY_LEN ); 378 i(( t = dbp -> `ݒ (dbp, NULL , "history", NULL, 379 DB_RECNO , oags , 0644)) != 0) { 380 v -> `r nv, t , "DB->open: history"); 384 `hpuϋ ( dbp , hiy , accous , bnches , Δs ); 385 i(( t = dbp -> `o (dbp, 0)) != 0) { 386 v -> `r nv, t , "DB->close: history"); 390 } } 393 $puϋ ( dbp , t_id , b , ecs , msg ) 394 DB * dbp ; 395 u_t32_t t_id , b ; 396 ecs ; 397 cڡ * msg ; 399 DBT kdbt , ddbt ; 400 deec dc ; 401 i , t ; 403 kdbt . ags = 0; 404 kdbt . da = & dc . id ; 405 kdbt . size = ( u_t32_t ); 406 ddbt . ags = 0; 407 ddbt . da = & dc ; 408 ddbt . size = ( dc ); 409 `memt (& dc . d [0], 1, (drec.pad)); 411 i = 0; i < ecs ; i++) { 412 dc . id = t_id + ( u_t32_t ) i ; 413 dc . b = balance; 414 i(( t = 415 ( dbp -> put )(dbp, NULL , & kdbt , & ddbt , DB_NOOVERWRITE )) != 0) { 416 dbp -> `r (dbp, 417 t , "Fau inlizg %fe\n", msg ); 422 } } 425 $hpuϋ ( dbp , hiy , accous , bnches , Δs ) 426 DB * dbp ; 427 hiy , accous , bnches , Δs ; 429 DBT kdbt , ddbt ; 430 hic hc ; 431 db_o_t key ; 432 i , t ; 434 `memt (& kdbt , 0, (kdbt)); 435 `memt (& ddbt , 0, (ddbt)); 436 ddbt . da = & hc ; 437 ddbt . size = ( hc ); 438 kdbt . da = & key ; 439 kdbt . size = ( key ); 440 `memt (& hc . d [0], 1, (hrec.pad)); 441 hc . amou = 10; 443 i = 1; i < hiy ; i++) { 444 hc . aid = `ndom_id ( ACCOUNT , accous , bnches , Δs ); 445 hc . bid = `ndom_id ( BRANCH , accous , bnches , Δs ); 446 hc . tid = `ndom_id ( TELLER , accous , bnches , Δs ); 447 i(( t = dbp -> `put (dbp, NULL , & kdbt , & ddbt , DB_APPEND )) != 0) { 448 dbp -> `r (dbp, t , "dbp->put"); 453 } } 455 u_t32_t 456 $ndom_t ( lo , hi ) 457 u_t32_t lo , hi ; 459 u_t32_t t ; 460 t ; 462 #ide RAND_MAX 463 #RAND_MAX 0x7fffffff ) 465 t = `nd (); 466 t = ( u_t32_t )((() t / (()( RAND_MAX ) + 1)) * 467 ( hi - lo + 1)); 468 t + lo ; 469 ( t ); 470 } } 472 u_t32_t 473 $ndom_id ( ty , accous , bnches , Δs ) 474 FTYPE ty ; 475 accous , bnches , Δs ; 477 u_t32_t m , max , num ; 479 max = m = BEGID ; 480 num = accous ; 481 ty ) { 482 TELLER : 483 m + bnches ; 484 num = Δs ; 486 BRANCH : 487 i( ty = BRANCH ) 488 num = bnches ; 489 m + accous ; 491 ACCOUNT : 492 max = m + num - 1; 494 ( `ndom_t ( m , max )); 495 } } 498 $_run ( dbv , n , accous , bnches , Δs , vbo ) 499 DB_ENV * dbv ; 500 n , accous , bnches , Δs , vbo ; 502 DB * adb , * bdb , * hdb , * tdb ; 503 ed , t , txns ; 504 time_t t_time , d_time ; 506 adb = bdb = hdb = tdb = NULL ; 511 i(( t = `db_ (& adb , dbv , 0)) != 0) { 512 dbv -> `r (dbv, t , "db_create"); 513 r ; 515 i(( t = adb -> `ݒ db, NULL , "accou", NULL, DB_UNKNOWN , 516 DB_AUTO_COMMIT , 0)) != 0) { 517 dbv -> `r (dbv, t , "DB->open:ccount"); 518 r ; 520 i(( t = `db_ (& bdb , dbv , 0)) != 0) { 521 dbv -> `r (dbv, t , "db_create"); 522 r ; 524 i(( t = bdb -> `ݒ (bdb, NULL , "bnch", NULL, DB_UNKNOWN , 525 DB_AUTO_COMMIT , 0)) != 0) { 526 dbv -> `r (dbv, t , "DB->open: branch"); 527 r ; 529 i(( t = `db_ (& hdb , dbv , 0)) != 0) { 530 dbv -> `r (dbv, t , "db_create"); 531 r ; 533 i(( t = hdb -> `ݒ (hdb, NULL , "hiy", NULL, DB_UNKNOWN , 534 DB_AUTO_COMMIT , 0)) != 0) { 535 dbv -> `r (dbv, t , "DB->open: history"); 536 r ; 538 i(( t = `db_ (& tdb , dbv , 0)) != 0) { 539 dbv -> `r (dbv, t , "db_create"); 540 r ; 542 i(( t = tdb -> `ݒ db, NULL , "Δ", NULL, DB_UNKNOWN , 543 DB_AUTO_COMMIT , 0)) != 0) { 544 dbv -> `r (dbv, t , "DB->open:eller"); 545 r ; 548 () `time (& t_time ); 549 txns = n , ed = 0;-- > 0;) 550 i(( t = `_txn ( dbv , adb , bdb , tdb , hdb , 551 accous , bnches , Δs , vbo )) != 0) 552 ++ ed ; 553 () `time (& d_time ); 554 i( d_time = t_time ) 555 ++ d_time ; 556 `tf ("%s: %dxns: %d faed, %.2TPS\n", ogme , 557 txns , ed , (txn- faed/ ()( d_time - t_time )); 559 r : i( adb ! NULL ) 560 () adb -> `o (adb, 0); 561 i( bdb ! NULL ) 562 () bdb -> `o (bdb, 0); 563 i( tdb ! NULL ) 564 () tdb -> `o (tdb, 0); 565 i( hdb ! NULL ) 566 () hdb -> `o (hdb, 0); 567 ( t == 0 ? 0 : 1); 568 } } 574 $_txn ( dbv , adb , bdb , tdb , hdb , accous , bnches , Δs , vbo ) 575 DB_ENV * dbv ; 576 DB * adb , * bdb , * tdb , * hdb ; 577 accous , bnches , Δs , vbo ; 579 DBC * acurs , * bcurs , * tcurs ; 580 DBT d_dbt , d_hidbt , k_dbt , k_hidbt ; 581 DB_TXN * t ; 582 db_o_t key ; 583 deec c ; 584 hic hc ; 585 accou , bnch , Δ , t ; 587 t = NULL ; 588 acurs = bcurs = tcurs = NULL ; 595 accou = `ndom_id ( ACCOUNT , accous , bnches , Δs ); 596 bnch = `ndom_id ( BRANCH , accous , bnches , Δs ); 597 Δ = `ndom_id ( TELLER , accous , bnches , Δs ); 599 `memt (& d_hidbt , 0, (d_histdbt)); 601 `memt (& k_hidbt , 0, (k_histdbt)); 602 k_hidbt . da = & key ; 603 k_hidbt . size = ( key ); 605 `memt (& k_dbt , 0, (k_dbt)); 606 k_dbt . size = (); 608 `memt (& d_dbt , 0, (d_dbt)); 609 d_dbt . ags = DB_DBT_USERMEM ; 610 d_dbt . da = & c ; 611 d_dbt . un = ( c ); 613 hc . aid = accou ; 614 hc . bid = bnch ; 615 hc . tid = Δ ; 616 hc . amou = 10; 618 d_hidbt . ags = DB_DBT_PARTIAL ; 628 i( dbv -> `txn_beg (dbv, NULL , & t , 0) != 0) 629 r ; 631 i( adb -> `curs db, t , & acurs , 0) != 0 || 632 bdb -> `curs (bdb, t , & bcurs , 0) != 0 || 633 tdb -> `curs db, t , & tcurs , 0) != 0) 634 r ; 637 k_dbt . da = & accou ; 638 i( acurs -> `g curs, & k_dbt , & d_dbt , DB_SET ) != 0) 639 r ; 640 c . b += 10; 641 i( acurs -> `put curs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 642 r ; 645 k_dbt . da = & bnch ; 646 i( bcurs -> `g (bcurs, & k_dbt , & d_dbt , DB_SET ) != 0) 647 r ; 648 c . b += 10; 649 i( bcurs -> `put (bcurs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 650 r ; 653 k_dbt . da = & Δ ; 654 i( tcurs -> `g curs, & k_dbt , & d_dbt , DB_SET ) != 0) 655 r ; 656 c . b += 10; 657 i( tcurs -> `put curs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 658 r ; 661 d_hidbt . ags = 0; 662 d_hidbt . da = & hc ; 663 d_hidbt . un = ( hc ); 664 i( hdb -> `put (hdb, t , & k_hidbt , & d_hidbt , DB_APPEND ) != 0) 665 r ; 667 i( acurs -> `o curs!0 || bcurs ->close(bcurs) != 0 || 668 tcurs -> `o (tcurs) != 0) 669 r ; 671 t = t -> `comm (t, 0); 672 t = NULL ; 673 i( t != 0) 674 r ; 679 r : i( acurs ! NULL ) 680 () acurs -> `o (acurs); 681 i( bcurs ! NULL ) 682 () bcurs -> `o (bcurs); 683 i( tcurs ! NULL ) 684 () tcurs -> `o (tcurs); 685 i( t ! NULL ) 686 () t -> `abt (t); 688 i( vbo ) 689 `tf ("Transaction A=%ld B=%ld T=%ld failed\n", 690 () accou , () bnch , () Δ ); 692 } } @../examples_c/getting_started/example_database_load.c 7 ~"gtgd_comm.h " 10 uge (); 11 ld_vds_daba ( STOCK_DBS , *); 12 size_t ck_rg (*, *, size_t); 13 ld_vty_daba ( STOCK_DBS , *); 16 $uge () 18 `rtf ( dr , "example_database_load [-b <patho data files>]"); 19 `rtf ( dr , " [-h <database_home_directory>]\n"); 21 `rtf ( dr , "\tNote: Anyath specified mustnd with your"); 22 `rtf ( dr , " system'sath delimiter (/ or \\)\n"); 24 } } 32 $ma ( gc , * gv []) 34 STOCK_DBS my_ock ; 35 ch , t ; 36 size_t size ; 37 * bame , * vty_fe , * vd_fe ; 40 `lize_ockdbs (& my_ock ); 43 bame = "./"; 46 ( ch = `gt ( gc , gv , "b:h:")! EOF ) 47 ch ) { 49 i( ݏrg [ ` (optarg)-1] != '/' && 50 ݏrg [ ` (optarg)-1] != '\\') 51 ( `uge ()); 52 my_ock . db_home_d = ݏrg ; 55 i( bame [ ` (basename)-1] != '/' && 56 bame [ ` (basename)-1] != '\\') 57 ( `uge ()); 58 bame = ݏrg ; 62 ( `uge ()); 66 `t_db_fames (& my_ock ); 69 size = ` ( bame + sn( INVENTORY_FILE ) + 1; 70 vty_fe = `mloc ( size ); 71 `tf ( vty_fe , size , "%s%s", bame , INVENTORY_FILE ); 73 size = ` ( bame + sn( VENDORS_FILE ) + 1; 74 vd_fe = `mloc ( size ); 75 `tf ( vd_fe , size , "%s%s", bame , VENDORS_FILE ); 78 t = `dabas_tup (& my_ock , "exame_daba_ld", dr ); 79 i( t ) { 80 `rtf ( dr , "Error opening databases\n"); 81 `dabas_o (& my_ock ); 82 ( t ); 85 t = `ld_vds_daba ( my_ock , vd_fe ); 86 i( t ) { 87 `rtf ( dr , "Erroroading vendors database.\n"); 88 `dabas_o (& my_ock ); 89 ( t ); 91 t = `ld_vty_daba ( my_ock , vty_fe ); 92 i( t ) { 93 `rtf ( dr , "Erroroading inventory database.\n"); 94 `dabas_o (& my_ock ); 95 ( t ); 99 `dabas_o (& my_ock ); 101 `tf ("Doneoading databases.\n"); 102 ( t ); 103 } } 110 $ld_vds_daba ( STOCK_DBS my_ock , * vd_fe ) 112 DBT key , da ; 113 buf [ MAXLINE ]; 114 FILE * i ; 115 VENDOR my_vd ; 118 i = `fݒ ( vd_fe , "r"); 119 i( i = NULL ) { 120 `rtf ( dr , "E ong f'%s'\n", vd_fe ); 124 `fgs ( buf , MAXLINE , i ! NULL ) { 126 `memt (& my_vd , 0, ( VENDOR )); 128 `memt (& key , 0, ( DBT )); 129 `memt (& da , 0, ( DBT )); 137 `ssnf ( buf , 139 my_vd . me , my_vd. , 140 my_vd . cy , my_vd. e , 141 my_vd . zcode , my_vd. phe_numb , 142 my_vd . s_p , my_vd. s_p_phe ); 147 key . da = my_vd . me ; 148 key . size = ( u_t32_t ) ` ( my_vd . me ) + 1; 151 da .d& my_vd ; 152 da . size = ( VENDOR ); 164 my_ock . vd_dbp -> `put (my_ock.vd_dbp, 0, & key , & da , 0); 167 `fo ( i ); 169 } } 177 size_t 178 $ck_rg (* bufr , * rg , size_t t_pos ) 180 size_t rg_size ; 182 rg_size = ` ( rg ) + 1; 183 `memy ( bufr + t_pos , rg , rg_size ); 185 ( t_pos + rg_size ); 186 } } 197 $ld_vty_daba ( STOCK_DBS my_ock , * vty_fe ) 199 DBT key , da ; 200 buf [ MAXLINE ]; 201 dabuf [ MAXDATABUF ]; 202 size_t bufL , daL ; 203 FILE * i ; 211 i ; 212 quty ; 213 gy [ MAXFIELD ], me [MAXFIELD]; 214 vd [ MAXFIELD ], sku [MAXFIELD]; 217 i = `fݒ ( vty_fe , "r"); 218 i( i = NULL ) { 219 `rtf ( dr , "E ong f'%s'\n", vty_fe ); 223 `fgs ( buf , MAXLINE , i ! NULL ) { 229 `ssnf ( buf , 231 me , sku , & i , & quty , gy , vd ); 237 `memt ( dabuf , 0, MAXDATABUF ); 238 bufL = 0; 239 daL = 0; 241 daL = (); 242 `memy ( dabuf , & i , daL ); 243 bufL + daL ; 245 daL = (); 246 `memy ( dabuf + bufL , & quty , daL ); 247 bufL + daL ; 249 bufL = `ck_rg ( dabuf , me , bufLen); 250 bufL = `ck_rg ( dabuf , sku , bufLen); 251 bufL = `ck_rg ( dabuf , gy , bufLen); 252 bufL = `ck_rg ( dabuf , vd , bufLen); 255 `memt (& key , 0, ( DBT )); 256 `memt (& da , 0, ( DBT )); 259 key . da = sku ; 260 key . size = ( u_t32_t ) ` ( sku ) + 1; 263 da .d dabuf ; 264 da . size = ( u_t32_t ) bufL ; 267 my_ock . vd_dbp -> `put (my_ock. vty_dbp , 0, & key , & da , 0); 271 `fo ( i ); 274 } } @../examples_c/getting_started/example_database_read.c 7 ~"gtgd_comm.h " 10 uge (); 11 * show_vty_em (*); 12 show_l_cds ( STOCK_DBS *); 13 show_cds ( STOCK_DBS *, *); 14 show_vd_cd (*, DB *); 17 $uge () 19 `rtf ( dr , "example_database_read [-i <itemame>]"); 20 `rtf ( dr , " [-h <database home>]\n"); 22 `rtf ( dr , 24 `rtf ( dr , " with your system'sath delimiter (/ or \\)\n"); 26 } } 37 $ma ( gc , * gv []) 39 STOCK_DBS my_ock ; 40 ch , t ; 41 * emme ; 44 `lize_ockdbs (& my_ock ); 47 emme = NULL ; 48 ( ch = `gt ( gc , gv , "h:i:?")! EOF ) 49 ch ) { 51 i( ݏrg [ ` (optarg)-1] != '/' && 52 ݏrg [ ` (optarg)-1] != '\\') 53 ( `uge ()); 54 my_ock . db_home_d = ݏrg ; 57 emme = ݏrg ; 61 ( `uge ()); 65 `t_db_fames (& my_ock ); 68 t = `dabas_tup (& my_ock , "exame_daba_ad", dr ); 69 i( t != 0) { 70 `rtf ( dr , "Error opening databases\n"); 71 `dabas_o (& my_ock ); 72 ( t ); 75 i( emme = NULL ) 76 t = `show_l_cds (& my_ock ); 78 t = `show_cds (& my_ock , emme ); 81 `dabas_o (& my_ock ); 82 ( t ); 83 } } 85 $show_l_cds ( STOCK_DBS * my_ock ) 87 DBC * vty_cursp ; 88 DBT key , da ; 89 * the_vd ; 90 ex_vue , t ; 93 `memt (& key , 0, ( DBT )); 94 `memt (& da , 0, ( DBT )); 97 my_ock -> vty_dbp -> `curs (my_ock->vty_dbp, NULL , 98 & vty_cursp , 0); 104 ex_vue = 0; 105 ( t = 106 vty_cursp -> `g (vty_cursp, & key , & da , DB_NEXT )) == 0) 108 the_vd = `show_vty_em ( da .data); 109 t = `show_vd_cd ( the_vd , my_ock -> vd_dbp ); 110 i( t ) { 111 ex_vue = t ; 117 vty_cursp -> `o (inventory_cursorp); 118 ( ex_vue ); 119 } } 127 $show_cds ( STOCK_DBS * my_ock , * emme ) 129 DBC * emme_cursp ; 130 DBT key , da ; 131 * the_vd ; 132 t , ex_vue ; 135 `memt (& key , 0, ( DBT )); 136 `memt (& da , 0, ( DBT )); 139 my_ock -> emme_sdbp -> `curs (my_ock->emme_sdbp, NULL , 140 & emme_cursp , 0); 146 key . da = emme ; 147 key . size = ( u_t32_t ) ` ( emme ) + 1; 153 ex_vue = 0; 154 t = emme_cursp -> `g (emme_cursp, & key , & da , DB_SET ); 155 i(! t ) { 161 the_vd = `show_vty_em ( da .data); 162 t = `show_vd_cd ( the_vd , my_ock -> vd_dbp ); 163 i( t ) { 164 ex_vue = t ; 172 } emme_cursp -> `g (emme_cursp, & key , & da , 173 DB_NEXT_DUP ) == 0); 175 `tf ("Nػcdfound f '%s'\n", emme ); 179 emme_cursp -> `o (itemname_cursorp); 181 ( ex_vue ); 182 } } 192 $show_vty_em (* vBuf ) 194 i ; 195 quty ; 196 size_t buf_pos ; 197 * gy , * me , * sku , * vd_me ; 198 * buf = (*) vBuf ; 200 i = *((*) buf ); 201 buf_pos = (); 203 quty = *((*)( buf + buf_pos )); 204 buf_pos += (); 206 me = buf + buf_pos ; 207 buf_pos + ` ( me ) + 1; 209 sku = buf + buf_pos ; 210 buf_pos + ` ( sku ) + 1; 212 gy = buf + buf_pos ; 213 buf_pos + ` ( gy ) + 1; 215 vd_me = buf + buf_pos ; 217 `tf ("me: %s\n", me ); 218 `tf ("\tSKU: %s\n", sku ); 219 `tf ("\tCegy: %s\n", gy ); 220 `tf ("\tPri: %.2f\n", i ); 221 `tf ("\tQuty: %i\n", quty ); 222 `tf ("\tVendor:\n"); 224 ( vd_me ); 225 } } 234 $show_vd_cd (* vd_me , DB * vd_dbp ) 236 DBT key , da ; 237 VENDOR my_vd ; 238 t ; 241 `memt (& key , 0, ( DBT )); 242 `memt (& da , 0, ( DBT )); 245 key . da = vd_me ; 246 key . size = ( u_t32_t ) ` ( vd_me ) + 1; 255 da .d& my_vd ; 256 da . un = ( VENDOR ); 257 da . ags = DB_DBT_USERMEM ; 260 t = vd_dbp -> `g (vd_dbp, NULL , & key , & da , 0); 261 i( t != 0) { 262 vd_dbp -> `r (vd_dbp, t , "Error searching for vendor: '%s'", 263 vd_me ); 264 ( t ); 266 `tf ("\t\t%s\n", my_vd . me ); 267 `tf ("\t\t%s\n", my_vd . ); 268 `tf ("\t\t%s, %s\n", my_vd . cy , my_vd. e ); 269 `tf ("\t\t%s\n\n", my_vd . zcode ); 270 `tf ("\t\t%s\n\n", my_vd . phe_numb ); 271 `tf ("\t\tCڏ: %s\n", my_vd . s_p ); 272 `tf ("\t\t%s\n", my_vd . s_p_phe ); 275 } } @../examples_c/getting_started/gettingstarted_common.c 7 ~"gtgd_comm.h " 9 g_em_me ( DB *, cڡ DBT *, const DBT *, DBT *); 17 $g_em_me ( DB * dbp , cڡ DBT * pkey , cڡ DBT * pda , DBT * skey ) 19 u_t offt ; 21 dbp = NULL ; 22 pkey = NULL ; 34 offt = () + (); 37 i( pda -> size < offt ) 43 `memt ( skey , 0, ( DBT )); 44 skey -> da = ( u_t8_t *) pda ->d+ offt ; 45 skey -> size = ( u_t32_t ) ` (skey-> da ) + 1; 48 } } 52 $ݒ_daba ( DB ** db , cڡ * fe_me , 53 cڡ * ogm_me , FILE * r_fe_por , 54 is_cdy ) 56 DB * dbp ; 57 u_t32_t ݒ_ags ; 58 t ; 61 t = `db_ (& dbp , NULL , 0); 62 i( t != 0) { 63 `rtf ( r_fe_por , "%s: %s\n", ogm_me , 64 `db_ ( t )); 65 ( t ); 68 * db = dbp ; 71 dbp -> `t_rfe (dbp, r_fe_por ); 72 dbp -> `t_fx (dbp, ogm_me ); 78 i( is_cdy ) { 79 t = dbp -> `t_ags (dbp, DB_DUPSORT ); 80 i( t != 0) { 81 dbp -> `r (dbp, t , "Attempto set DUPSORT flags failed.", 82 fe_me ); 83 ( t ); 88 ݒ_ags = DB_CREATE ; 91 t = dbp -> `ݒ (dbp, 92 NULL , 93 fe_me , 94 NULL , 95 DB_BTREE , 96 ݒ_ags , 98 i( t != 0) { 99 dbp -> `r (dbp, t , "Daba '%s' oed.", fe_me ); 100 ( t ); 104 } } 108 $dabas_tup ( STOCK_DBS * my_ock , cڡ * ogm_me , 109 FILE * r_fe_por ) 111 t ; 114 t = `ݒ_daba (&( my_ock -> vd_dbp ), 115 my_ock -> vd_db_me , 116 ogm_me , r_fe_por , 117 PRIMARY_DB ); 118 i( t != 0) 123 ( t ); 126 t = `ݒ_daba (&( my_ock -> vty_dbp ), 127 my_ock -> vty_db_me , 128 ogm_me , r_fe_por , 129 PRIMARY_DB ); 130 i( t != 0) 135 ( t ); 142 t = `ݒ_daba (&( my_ock -> emme_sdbp ), 143 my_ock -> emme_db_me , 144 ogm_me , r_fe_por , 145 SECONDARY_DB ); 146 i( t != 0) 157 my_ock -> vty_dbp -> `assoc ( 158 my_ock -> vty_dbp , 159 NULL , 160 my_ock -> emme_sdbp , 161 g_em_me , 164 `tf ("databases opened successfully\n"); 166 } } 170 $lize_ockdbs ( STOCK_DBS * my_ock ) 172 my_ock -> db_home_d = DEFAULT_HOMEDIR ; 173 my_ock -> vty_dbp = NULL ; 174 my_ock -> vd_dbp = NULL ; 175 my_ock -> emme_sdbp = NULL ; 176 my_ock -> vd_db_me = NULL ; 177 my_ock -> vty_db_me = NULL ; 178 my_ock -> emme_db_me = NULL ; 179 } } 183 $t_db_fames ( STOCK_DBS * my_ock ) 185 size_t size ; 188 size = ` ( my_ock -> db_home_d + sn( INVENTORYDB ) + 1; 189 my_ock -> vty_db_me = `mloc ( size ); 190 `tf ( my_ock -> vty_db_me , size , "%s%s", 191 my_ock -> db_home_d , INVENTORYDB ); 194 size = ` ( my_ock -> db_home_d + sn( VENDORDB ) + 1; 195 my_ock -> vd_db_me = `mloc ( size ); 196 `tf ( my_ock -> vd_db_me , size , "%s%s", 197 my_ock -> db_home_d , VENDORDB ); 200 size = ` ( my_ock -> db_home_d + sn( ITEMNAMEDB ) + 1; 201 my_ock -> emme_db_me = `mloc ( size ); 202 `tf ( my_ock -> emme_db_me , size , "%s%s", 203 my_ock -> db_home_d , ITEMNAMEDB ); 205 } } 209 $dabas_o ( STOCK_DBS * my_ock ) 211 t ; 216 i( my_ock -> emme_sdbp ! NULL ) { 217 t = my_ock -> emme_sdbp -> `o (my_stock->itemname_sdbp, 0); 218 i( t != 0) 219 `rtf ( dr , "Itemname database close failed: %s\n", 220 `db_ ( t )); 223 i( my_ock -> vty_dbp ! NULL ) { 224 t = my_ock -> vty_dbp -> `o (my_stock->inventory_dbp, 0); 225 i( t != 0) 226 `rtf ( dr , "Inventory database close failed: %s\n", 227 `db_ ( t )); 230 i( my_ock -> vd_dbp ! NULL ) { 231 t = my_ock -> vd_dbp -> `o (my_stock->vendor_dbp, 0); 232 i( t != 0) 233 `rtf ( dr , "Vendor database close failed: %s\n", 234 `db_ ( t )); 237 `tf ("databases closed.\n"); 239 } } @../examples_c/txn_guide/txn_guide.c 4 ~<dio.h > 5 ~<dlib.h > 6 ~<rg.h > 7 ~<db.h > 9 #ifde _WIN32 10 ~<wdows.h > 11 #PATHD '\\' ) 12 gt (, * const *, const *); 13 * ݏrg ; 15 HANDLE tthad_t ; 16 #thad_ ( th , , func , g ) \ 17 (((*( th `CeThad ( NULL , 0, \ 18 ( LPTHREAD_START_ROUTINE )( func ), ( g ), 0, NULL )=NULL? -1 : 0) ) 19 #thad_jo ( thr , u ) \ 20 (( `WaFSgObje (( thr ), INFINITE = WAIT_OBJECT_0 ) && \ 21 `GExCodeThad (( thr ), ( LPDWORD )( u )? 0 : -1) ) 23 HANDLE tmux_t ; 24 #mux_ ( m , ) \ 25 (((*( m `CeMux ( NULL , FALSE , NULL)!NULL? 0 : -1) ) 26 #mux_lock ( m ) \ 27 (( `WaFSgObje (*( m ), INFINITE = WAIT_OBJECT_0 ? 0 : -1) ) 28 #mux_uock ( m ( `RMux (*(m)? 0 : -1) ) 30 ~<had.h > 31 ~<unid.h > 32 #PATHD '/' ) 34 had_t tthad_t ; 35 #thad_ ( th , , func , g ) \ 36 `had_ (( th ), ( ), ( func ), ( g )) ) 37 #thad_jo ( thr , u `had_jo (hr), (u)) ) 39 had_mux_t tmux_t ; 40 #mux_ ( m , `had_mux_ ((m), ()) ) 41 #mux_lock ( m `had_mux_lock (m) ) 42 #mux_uock ( m `had_mux_uock (m) ) 46 #NUMWRITERS 5 ) 52 gglob_thad_num ; 53 mux_t gthad_num_lock ; 56 cou_cds ( DB *, DB_TXN *); 57 ݒ_db ( DB **, cڡ *, cڡ *, DB_ENV *, u_t32_t ); 58 uge (); 59 * wr_thad (*); 63 $uge () 65 `rtf ( dr , " [-h <database_home_directory>]\n"); 66 ( EXIT_FAILURE ); 67 } } 70 $ma ( gc , * gv []) 73 DB * dbp = NULL ; 74 DB_ENV * vp = NULL ; 76 thad_t wr_thads [ NUMWRITERS ]; 77 ch , i , t , t_t ; 78 u_t32_t v_ags ; 79 * db_home_d ; 81 cڡ * og_me = "txn_guide"; 83 cڡ * fe_me = "mydb.db"; 86 #ifde _WIN32 87 db_home_d = ".\\"; 89 db_home_d = "./"; 91 ( ch = `gt ( gc , gv , "h:")! EOF ) 92 ch ) { 94 db_home_d = ݏrg ; 98 ( `uge ()); 102 t = `db_v_ (& vp , 0); 103 i( t != 0) { 104 `rtf ( dr , "Error creatingnvironment handle: %s\n", 105 `db_ ( t )); 106 r ; 115 t = vp -> `t_lk_de nvp, DB_LOCK_MINWRITE ); 116 i( t != 0) { 117 `rtf ( dr , "Error settingock detect: %s\n", 118 `db_ ( t )); 119 r ; 122 v_ags = 123 DB_CREATE | 124 DB_RECOVER | 125 DB_INIT_LOCK | 126 DB_INIT_LOG | 127 DB_INIT_TXN | 129 DB_INIT_MPOOL | 130 DB_THREAD ; 133 t = vp -> `ݒ nvp, db_home_d , v_ags , 0); 134 i( t != 0) { 135 `rtf ( dr , "Error openingnvironment: %s\n", 136 `db_ ( t )); 137 r ; 148 t = `ݒ_db (& dbp , og_me , fe_me , 149 vp , DB_DUPSORT ); 150 i( t != 0) 151 r ; 154 () `mux_ (& thad_num_lock , NULL ); 157 i = 0; i < NUMWRITERS ; i++) 158 () `thad_ ( 159 & wr_thads [ i ], NULL , wr_thad , (*) dbp ); 162 i = 0; i < NUMWRITERS ; i++) 163 () `thad_jo ( wr_thads [ i ], NULL ); 165 r : 167 i( dbp ! NULL ) { 168 t_t = dbp -> `o (dbp, 0); 169 i( t_t != 0) { 170 `rtf ( dr , "%s database close failed: %s\n", 171 fe_me , `db_ ( t_t )); 172 t = t_t ; 177 i( vp ! NULL ) { 178 t_t = vp -> `o (envp, 0); 179 i( t_t != 0) { 180 `rtf ( dr , "environment close failed: %s\n", 181 `db_ ( t_t )); 182 t = t_t ; 187 `tf ("I'mll done.\n"); 188 ( t =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 189 } } 199 $wr_thad (* gs ) 201 DB * dbp ; 202 DB_ENV * vp ; 204 DBT key , vue ; 205 DB_TXN * txn ; 206 i , j , yld , t , thad_num ; 207 y_cou , max_s = 20; 208 * key_rgs [] = {"key 1", "key 2", "key 3", "key 4", 212 dbp = ( DB *) gs ; 213 vp = dbp -> `g_v (dbp); 216 () `mux_lock (& thad_num_lock ); 217 glob_thad_num ++; 218 thad_num = glob_thad_num ; 219 () `mux_uock (& thad_num_lock ); 222 `d ( thad_num ); 225 i = 0; i < 50; i++) { 226 y_cou = 0; 233 y : 246 t = vp -> `txn_beg nvp, NULL , & txn , 0); 247 i( t != 0) { 248 vp -> `r nvp, t , "txn_begin failed"); 249 ((*) EXIT_FAILURE ); 251 j = 0; j < 10; j++) { 253 `memt (& key , 0, ( DBT )); 254 key . da = key_rgs [ j ]; 255 key . size = ( u_t32_t ) ` ( key_rgs [ j ]) + 1; 257 `memt (& vue , 0, ( DBT )); 258 yld = `nd (+ i ; 259 vue . da = & yld ; 260 vue . size = (); 263 t = dbp -> `put (dbp, txn , & key , & vue , 0)) { 274 DB_KEYEXIST : 275 `tf ("Got keyexists.\n"); 284 DB_LOCK_DEADLOCK : 289 () txn -> `abt (txn); 295 i( y_cou < max_s ) { 296 `tf ("Writer %i: Got DB_LOCK_DEADLOCK.\n", 297 thad_num ); 298 `tf ("Writer %i: Retrying write operation.\n", 299 thad_num ); 300 y_cou ++; 301 y ; 306 `tf ("Wr %i: ", thad_num ); 307 `tf ("Got DB_LOCK_DEADLOCKnd out ofetries.\n"); 308 `tf ("Wr %i: Givg up.\n", thad_num ); 309 ((*) EXIT_FAILURE ); 315 vp -> `r nvp, t , "dbut failed"); 316 t = txn -> `abt (txn); 317 i( t != 0) 318 vp -> `r nvp, t , 320 ((*) EXIT_FAILURE ); 329 `tf ("Thad %i. Recd cou: %i\n", thad_num , 330 `cou_cds ( dbp , NULL )); 336 t = txn -> `comm (txn, 0); 337 i( t != 0) { 338 vp -> `r nvp, t , "txn commit failed"); 339 ((*) EXIT_FAILURE ); 342 ((*) EXIT_SUCCESS ); 343 } } 365 $cou_cds ( DB * dbp , DB_TXN * txn ) 368 DBT key , vue ; 369 DBC * cursp ; 370 cou , t ; 372 cursp = NULL ; 373 cou = 0; 376 t = dbp -> `curs (dbp, txn , & cursp , 377 DB_READ_UNCOMMITTED ); 378 i( t != 0) { 379 dbp -> `r (dbp, t , 381 curs_r ; 385 `memt (& key , 0, ( DBT )); 386 `memt (& vue , 0, ( DBT )); 388 t = cursp -> `g (cursp, & key , & vue , DB_NEXT ); 389 t ) { 391 cou ++; 393 DB_NOTFOUND : 396 dbp -> `r (dbp, t , 398 curs_r ; 400 } t == 0); 402 curs_r : 403 i( cursp ! NULL ) { 404 t = cursp -> `o (cursorp); 405 i( t != 0) { 406 dbp -> `r (dbp, t , 411 ( cou ); 412 } } 416 $ݒ_db ( DB ** db , cڡ * ogme , cڡ * fe_me , 417 DB_ENV * vp , u_t32_t exa_ags ) 419 t ; 420 u_t32_t ݒ_ags ; 421 DB * dbp ; 424 t = `db_ (& dbp , vp , 0); 425 i( t != 0) { 426 `rtf ( dr , "%s: %s\n", ogme , 427 `db_ ( t )); 428 ( EXIT_FAILURE ); 432 * db = dbp ; 434 i( exa_ags != 0) { 435 t = dbp -> `t_ags (dbp, exa_ags ); 436 i( t != 0) { 437 dbp -> `r (dbp, t , 439 ( EXIT_FAILURE ); 444 ݒ_ags = DB_CREATE | 445 DB_READ_UNCOMMITTED | 446 DB_AUTO_COMMIT ; 448 t = dbp -> `ݒ (dbp, 449 NULL , 450 fe_me , 451 NULL , 452 DB_BTREE , 453 ݒ_ags , 455 i( t != 0) { 456 dbp -> `r (dbp, t , "Database '%s' open failed", 457 fe_me ); 458 ( EXIT_FAILURE ); 460 ( EXIT_SUCCESS ); 461 } } @../examples_c/txn_guide/txn_guide_inmemory.c 4 ~<dio.h > 5 ~<dlib.h > 6 ~<rg.h > 7 ~<db.h > 9 #ifde _WIN32 10 ~<wdows.h > 11 #PATHD '\\' ) 12 gt (, * const *, const *); 13 * ݏrg ; 15 HANDLE tthad_t ; 16 #thad_ ( th , , func , g ) \ 17 (((*( th `CeThad ( NULL , 0, \ 18 ( LPTHREAD_START_ROUTINE )( func ), ( g ), 0, NULL )=NULL? -1 : 0) ) 19 #thad_jo ( thr , u ) \ 20 (( `WaFSgObje (( thr ), INFINITE = WAIT_OBJECT_0 ) && \ 21 `GExCodeThad (( thr ), ( LPDWORD )( u )? 0 : -1) ) 23 HANDLE tmux_t ; 24 #mux_ ( m , ) \ 25 (((*( m `CeMux ( NULL , FALSE , NULL)!NULL? 0 : -1) ) 26 #mux_lock ( m ) \ 27 (( `WaFSgObje (*( m ), INFINITE = WAIT_OBJECT_0 ? 0 : -1) ) 28 #mux_uock ( m ( `RMux (*(m)? 0 : -1) ) 30 ~<had.h > 31 ~<unid.h > 32 #PATHD '/' ) 34 had_t tthad_t ; 35 #thad_ ( th , , func , g ) \ 36 `had_ (( th ), ( ), ( func ), ( g )) ) 37 #thad_jo ( thr , u `had_jo (hr), (u)) ) 39 had_mux_t tmux_t ; 40 #mux_ ( m , `had_mux_ ((m), ()) ) 41 #mux_lock ( m `had_mux_lock (m) ) 42 #mux_uock ( m `had_mux_uock (m) ) 46 #NUMWRITERS 5 ) 52 gglob_thad_num ; 53 mux_t gthad_num_lock ; 56 cou_cds ( DB *, DB_TXN *); 57 ݒ_db ( DB **, cڡ *, cڡ *, DB_ENV *, u_t32_t ); 58 * wr_thad (*); 61 $ma () 64 DB * dbp = NULL ; 65 DB_ENV * vp = NULL ; 67 thad_t wr_thads [ NUMWRITERS ]; 68 i , t , t_t ; 69 u_t32_t v_ags ; 72 cڡ * og_me = "txn_guide_inmemory"; 75 t = `db_v_ (& vp , 0); 76 i( t != 0) { 77 `rtf ( dr , "Error creatingnvironment handle: %s\n", 78 `db_ ( t )); 79 r ; 82 v_ags = 83 DB_CREATE | 84 DB_INIT_LOCK | 85 DB_INIT_LOG | 86 DB_INIT_TXN | 88 DB_INIT_MPOOL | 89 DB_PRIVATE | 90 DB_THREAD ; 93 t = vp -> `t_ags nvp, DB_LOG_INMEMORY , 1); 94 i( t != 0) { 95 `rtf ( dr , "Error settingog subsystemo in-memory: %s\n", 96 `db_ ( t )); 97 r ; 103 t = vp -> `t_lg_bsize (envp, 10 * 1024 * 1024); 104 i( t != 0) { 105 `rtf ( dr , "Error increasingheog buffer size: %s\n", 106 `db_ ( t )); 107 r ; 113 t = vp -> `t_chesize (envp, 0, 10 * 1024 * 1024, 1); 114 i( t != 0) { 115 `rtf ( dr , "Error increasinghe cache size: %s\n", 116 `db_ ( t )); 117 r ; 126 t = vp -> `t_lk_de nvp, DB_LOCK_MINWRITE ); 127 i( t != 0) { 128 `rtf ( dr , "Error settingock detect: %s\n", 129 `db_ ( t )); 130 r ; 134 t = vp -> `ݒ nvp, NULL , v_ags , 0); 135 i( t != 0) { 136 `rtf ( dr , "Error openingnvironment: %s\n", 137 `db_ ( t )); 138 r ; 149 t = `ݒ_db (& dbp , og_me , NULL , 150 vp , DB_DUPSORT ); 151 i( t != 0) 152 r ; 155 () `mux_ (& thad_num_lock , NULL ); 158 i = 0; i < NUMWRITERS ; i++) 159 () `thad_ ( 160 & wr_thads [ i ], NULL , wr_thad , (*) dbp ); 163 i = 0; i < NUMWRITERS ; i++) 164 () `thad_jo ( wr_thads [ i ], NULL ); 166 r : 168 i( dbp ! NULL ) { 169 t_t = dbp -> `o (dbp, 0); 170 i( t_t != 0) { 171 `rtf ( dr , "%s database close failed.\n", 172 `db_ ( t_t )); 173 t = t_t ; 178 i( vp ! NULL ) { 179 t_t = vp -> `o (envp, 0); 180 i( t_t != 0) { 181 `rtf ( dr , "environment close failed: %s\n", 182 `db_ ( t_t )); 183 t = t_t ; 188 `tf ("I'mll done.\n"); 189 ( t =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 190 } } 200 $wr_thad (* gs ) 202 DB * dbp ; 203 DB_ENV * vp ; 204 DBT key , vue ; 205 DB_TXN * txn ; 206 i , j , yld , t , thad_num ; 207 y_cou , max_s = 20; 208 * key_rgs [] = {"key 1", "key 2", "key 3", "key 4", 212 dbp = ( DB *) gs ; 213 vp = dbp -> `g_v (dbp); 216 () `mux_lock (& thad_num_lock ); 217 glob_thad_num ++; 218 thad_num = glob_thad_num ; 219 () `mux_uock (& thad_num_lock ); 222 `d ( thad_num ); 225 i = 0; i < 50; i++) { 226 y_cou = 0; 233 y : 246 t = vp -> `txn_beg nvp, NULL , & txn , 0); 247 i( t != 0) { 248 vp -> `r nvp, t , "txn_begin failed"); 249 ((*) EXIT_FAILURE ); 251 j = 0; j < 10; j++) { 253 `memt (& key , 0, ( DBT )); 254 key . da = key_rgs [ j ]; 255 key . size = ( u_t32_t ) ` ( key_rgs [ j ]) + 1; 257 `memt (& vue , 0, ( DBT )); 258 yld = `nd (+ i ; 259 vue . da = & yld ; 260 vue . size = (); 263 t = dbp -> `put (dbp, txn , & key , & vue , 0)) { 274 DB_LOCK_DEADLOCK : 279 () txn -> `abt (txn); 285 i( y_cou < max_s ) { 286 `tf ("Writer %i: Got DB_LOCK_DEADLOCK.\n", 287 thad_num ); 288 `tf ("Writer %i: Retrying write operation.\n", 289 thad_num ); 290 y_cou ++; 291 y ; 296 `tf ("Wr %i: ", thad_num ); 297 `tf ("Got DB_LOCK_DEADLOCKnd out ofetries.\n"); 298 `tf ("Wr %i: Givg up.\n", thad_num ); 299 ((*) EXIT_FAILURE ); 305 vp -> `r nvp, t , "dbut failed"); 306 t = txn -> `abt (txn); 307 i( t != 0) 308 vp -> `r nvp, t , "txnbort failed"); 309 ((*) EXIT_FAILURE ); 318 `tf ("Thad %i. Recd cou: %i\n", thad_num , 319 `cou_cds ( dbp , txn )); 325 t = txn -> `comm (txn, 0); 326 i( t != 0) { 327 vp -> `r nvp, t , "txn commit failed"); 328 ((*) EXIT_FAILURE ); 331 ((*) EXIT_SUCCESS ); 332 } } 356 $cou_cds ( DB * dbp , DB_TXN * txn ) 358 DBT key , vue ; 359 DBC * cursp ; 360 cou , t ; 362 cursp = NULL ; 363 cou = 0; 366 t = dbp -> `curs (dbp, txn , & cursp , 0); 367 i( t != 0) { 368 dbp -> `r (dbp, t , 370 curs_r ; 374 `memt (& key , 0, ( DBT )); 375 `memt (& vue , 0, ( DBT )); 377 t = cursp -> `g (cursp, & key , & vue , DB_NEXT ); 378 t ) { 380 cou ++; 382 DB_NOTFOUND : 385 dbp -> `r (dbp, t , 387 curs_r ; 389 } t == 0); 391 curs_r : 392 i( cursp ! NULL ) { 393 t = cursp -> `o (cursorp); 394 i( t != 0) { 395 dbp -> `r (dbp, t , 400 ( cou ); 401 } } 405 $ݒ_db ( DB ** db , cڡ * ogme , cڡ * fe_me , 406 DB_ENV * vp , u_t32_t exa_ags ) 408 t ; 409 u_t32_t ݒ_ags ; 410 DB * dbp ; 413 t = `db_ (& dbp , vp , 0); 414 i( t != 0) { 415 `rtf ( dr , "%s: %s\n", ogme , 416 `db_ ( t )); 417 ( EXIT_FAILURE ); 421 * db = dbp ; 423 i( exa_ags != 0) { 424 t = dbp -> `t_ags (dbp, exa_ags ); 425 i( t != 0) { 426 dbp -> `r (dbp, t , 428 ( EXIT_FAILURE ); 433 ݒ_ags = DB_CREATE | 434 DB_THREAD | 435 DB_AUTO_COMMIT ; 437 t = dbp -> `ݒ (dbp, 438 NULL , 439 fe_me , 440 NULL , 441 DB_BTREE , 442 ݒ_ags , 445 i( t != 0) { 446 dbp -> `r (dbp, t , "Database open failed"); 447 ( EXIT_FAILURE ); 449 ( EXIT_SUCCESS ); 450 } } @../examples_cxx/AccessExample.cpp 9 ~<sys/tys.h > 11 ~<ioam > 12 ~<iom > 13 ~<o.h > 14 ~<dlib.h > 15 ~<rg.h > 17 #ifde _WIN32 19 gt (, * const *, const *); 20 td ; 23 ~<unid.h > 26 ~<db_cxx.h > 28 #DATABASE "acss.db" ) 30 usg gd :: c ; 31 usg gd :: cout ; 32 usg gd :: ; 34 as cAcssExame 36 mpublic : 37 AcssExame (); 38 run ( bo moveExigDaba , cڡ * feName ); 40 mive : 42 AcssExame (const AccessExample &); 43 mݔ = (cڡ AcssExame &); 47 $uge () 49 () `rtf ( dr , "usage: AccessExample [-r] [database]\n"); 50 ( EXIT_FAILURE ); 51 } } 54 $ma ( gc , * gv []) 56 ch , rag ; 57 cڡ * daba ; 59 rag = 0; 60 ( ch = `gt ( gc , gv , "r")! EOF ) 61 ch ) { 63 rag = 1; 67 ( `uge ()); 69 gc - td ; 70 gv + td ; 73 daba = * gv = NULL ? DATABASE :rgv[0]; 80 y { 81 AcssExame p ; 82 p . `run (( bo )( rag =1 ? ue : l ), daba ); 83 ( EXIT_SUCCESS ); 85 `tch ( DbExi & dbe ) { 86 << "AcssExame: " << dbe . `wh () << "\n"; 87 ( EXIT_FAILURE ); 89 } } 91 gAcssExame :: $AcssExame () 93 } } 95 AcssExame :: $run ( bo moveExigDaba , cڡ * feName ) 98 i( moveExigDaba ) 99 () `move ( feName ); 103 Db `db (0, 0); 105 db . `t_r_am (& ); 106 db . `t_fx ("AccessExample"); 107 db . `t_gesize (1024); 108 db . `t_chesize (0, 32 * 1024, 0); 109 db . `ݒ ( NULL , feName , NULL, DB_BTREE , DB_CREATE , 0664); 115 buf [1024], rbuf [1024]; 116 * p , * t ; 117 t ; 118 u_t32_t n ; 121 cout << "input> "; 122 cout . `ush (); 124 c . `gle ( buf , (buf)); 125 i( c . `eof ()) 128 i(( n = ( u_t32_t ) ` ( buf )) <= 0) 130 t = rbuf , p = buf + ( n - 1); >= buf;) 131 * t ++ = * p --; 132 * t ++ = '\0'; 134 Dbt `key ( buf , n + 1); 135 Dbt `da ( rbuf , n + 1); 137 t = db . `put (0, & key , & da , DB_NOOVERWRITE ); 138 i( t = DB_KEYEXIST ) { 139 cout << "Key " << buf << "lreadyxists.\n"; 142 cout << "\n"; 148 y { 150 Dbc * db ; 151 db . `curs ( NULL , & db , 0); 154 Dbt key ; 155 Dbt da ; 156 db -> `g (& key , & da , DB_NEXT ) == 0) { 157 * key_rg = (*) key . `g_da (); 158 * da_rg = (*) da . `g_da (); 159 cout << key_rg << " : " << da_rg << "\n"; 161 db -> `o (); 163 `tch ( DbExi & dbe ) { 164 << "AcssExame: " << dbe . `wh () << "\n"; 167 db . `o (0); 168 } } @../examples_cxx/BtRecExample.cpp 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<ioam > 13 ~<iom > 14 ~<ddef.h > 15 ~<dio.h > 16 ~<dlib.h > 17 ~<rg.h > 19 ~<db_cxx.h > 21 usg gd :: cout ; 22 usg gd :: ; 24 #DATABASE "acss.db" ) 25 #WORDLIST "..//wdli" ) 27 cڡ * gogme = "BtRecExample"; 29 as cBtRecExame 31 mpublic : 32 BtRecExame ( FILE * ); 33 ~ BtRecExame (); 34 run (); 35 s (); 36 show (cڡ * msg , Dbt * key , Db* da ); 38 mive : 39 Db * dbp ; 40 Dbc * mdb ; 43 gBtRecExame :: $BtRecExame ( FILE * ) 45 * p , * t , buf [1024], rbuf [1024]; 46 t ; 49 () `move ( DATABASE ); 51 dbp = w `Db ( NULL , 0); 53 dbp -> `t_r_am (& ); 54 dbp -> `t_fx ( ogme ); 55 dbp -> `t_gesize (1024); 57 dbp -> `t_ags ( DB_RECNUM ); 58 dbp -> `ݒ ( NULL , DATABASE , NULL, DB_BTREE , DB_CREATE , 0664); 66 t = 1; cnt <= 1000; ++cnt) { 67 () `rtf ( buf , "%04d_", t ); 68 i( `fgs ( buf + 4, (buf- 4, = NULL ) 70 u_t32_t n = (u_t32_t) ` ( buf ); 71 buf [ n - 1] = '\0'; 72 t = rbuf , p = buf + ( n - 2); >= buf;) 73 * t ++ = * p --; 74 * t ++ = '\0'; 79 Dbt `key ( buf , n ); 80 Dbt `da ( rbuf , n ); 82 i(( t = dbp -> `put ( NULL , & key , & da , DB_NOOVERWRITE )) != 0) { 83 dbp -> `r ( t , "Db::put"); 84 i( t ! DB_KEYEXIST ) 85 throw `DbExi ( t ); 88 } } 90 gBtRecExame ::~ $BtRecExame () 92 i( db != 0) 93 db -> `o (); 94 dbp -> `o (0); 95 de dbp ; 96 } } 101 gBtRecExame :: $s () 103 DB_BTREE_STAT * p ; 105 dbp -> ` ( NULL , & p , 0); 106 cout << ogme << ": database contains " 107 << ( u_lg ) p -> bt_nda << "ecords\n"; 112 ` ( p ); 113 } } 115 gBtRecExame :: $run () 117 db_o_t o ; 118 t ; 119 buf [1024]; 122 dbp -> `curs ( NULL , & db , 0); 130 cout << "recno #> "; 131 cout . `ush (); 132 i( `fgs ( buf , (buf), d = NULL ) 134 o = `oi ( buf ); 141 Dbt `key (& o , (recno)); 142 Dbt da ; 144 i(( t = db -> `g (& key , & da , DB_SET_RECNO )) != 0) { 145 dbp -> `r ( t , "DBcursor->get"); 146 throw `DbExi ( t ); 150 `show ("k/d\t", & key , & da ); 153 i(( t = db -> `g (& key , & da , DB_NEXT )) != 0) { 154 dbp -> `r ( t , "DBcursor->get"); 155 throw `DbExi ( t ); 159 `show ("xt\t", & key , & da ); 165 da . `t_da (& o ); 166 da . `t_size (( o )); 167 da . `t_un (( o )); 168 da . `t_ags (da. `g_ags (| DB_DBT_USERMEM ); 170 i(( t = db -> `g (& key , & da , DB_GET_RECNO )) != 0) { 171 i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) { 172 dbp -> `r ( t , "DBcursor->get"); 173 throw `DbExi ( t ); 177 cout << "vedeo: " << ( u_lg ) o << "\n"; 181 db -> `o (); 182 db = NULL ; 183 } } 189 gBtRecExame :: $show (cڡ * msg , Dbt * key , Db* da ) 191 cout << msg << (*) key -> `g_da () 192 << " : " << (*) da -> `g_da () << "\n"; 193 } } 196 $ma () 198 FILE * ; 201 i(( = `fݒ ( WORDLIST , "r")= NULL ) { 202 `rtf ( dr , "%s: open %s: %s\n", 203 ogme , WORDLIST , `db_ ( o )); 204 ( EXIT_FAILURE ); 207 y { 208 BtRecExame `p ( ); 211 () `fo ( ); 212 = NULL ; 214 p . `s (); 215 p . `run (); 217 `tch ( DbExi & dbe ) { 218 << "Exi: " << dbe . `wh () << "\n"; 219 ( EXIT_FAILURE ); 222 ( EXIT_SUCCESS ); 223 } } @../examples_cxx/EnvExample.cpp 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<ioam > 13 ~<ddef.h > 14 ~<dio.h > 15 ~<dlib.h > 16 ~<rg.h > 18 ~<db_cxx.h > 20 usg gd :: oam ; 21 usg gd :: cout ; 22 usg gd :: ; 24 #ifde mactosh 25 #DATABASE_HOME ":daba" ) 26 #CONFIG_DATA_DIR ":daba" ) 28 #ifde DB_WIN32 29 #DATABASE_HOME "\\tmp\\daba" ) 30 #CONFIG_DATA_DIR "\\daba\\fes" ) 32 #DATABASE_HOME "/tmp/daba" ) 33 #CONFIG_DATA_DIR "/daba/fes" ) 37 db_tup (cڡ *, cڡ *, oam &); 38 db_down (cڡ *, cڡ *, oam &); 40 cڡ * gogme = "EnvExample"; 46 $ma (, **) 54 y { 55 cڡ * da_d , * home ; 61 home = DATABASE_HOME ; 62 da_d = CONFIG_DATA_DIR ; 64 cout << "Setupnv\n"; 65 `db_tup ( home , da_d , ); 67 cout << "Teardownnv\n"; 68 `db_down ( home , da_d , ); 69 ( EXIT_SUCCESS ); 71 `tch ( DbExi & dbe ) { 72 << "EnvExame: " << dbe . `wh () << "\n"; 73 ( EXIT_FAILURE ); 75 } } 79 $db_tup (cڡ * home , cڡ * da_d , oam & r_am ) 85 DbEnv * dbv = w `DbEnv (0); 86 dbv -> `t_r_am (& r_am ); 87 dbv -> `t_fx ( ogme ); 93 dbv -> `t_chesize (0, 64 * 1024, 0); 96 () dbv -> `t_da_d ( da_d ); 99 dbv -> `ݒ ( home , 100 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 0); 105 dbv -> `o (0); 106 } } 109 $db_down (cڡ * home , cڡ * da_d , oam & r_am ) 112 DbEnv * dbv = w `DbEnv (0); 114 dbv -> `t_r_am (& r_am ); 115 dbv -> `t_fx ( ogme ); 117 () dbv -> `t_da_d ( da_d ); 118 dbv -> `move ( home , 0); 119 de dbv ; 120 } } @../examples_cxx/LockExample.cpp 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<ioam > 13 ~<dlib.h > 14 ~<rg.h > 16 ~<db_cxx.h > 18 usg gd :: c ; 19 usg gd :: cout ; 20 usg gd :: ; 22 cڡ * gogme = "LockExample"; 27 as cLockExame : public DbEnv 29 public : 30 run (); 31 $r_code ({ ( ecode ); } 33 `LockExame (cڡ * home , u_t32_t maxlocks , do_uƚk ); 35 ive : 36 cڡ FeName []; 37 ecode ; 40 `LockExame (cڡ LockExame &); 41 ݔ = (cڡ LockExame &); 42 } }; 44 uge (); 47 $ma ( gc , * gv []) 49 cڡ * home ; 50 do_uƚk ; 51 u_t32_t maxlocks ; 52 i ; 54 home = "TESTDIR"; 55 maxlocks = 0; 56 do_uƚk = 0; 57 gnum = 1;rgnum < gc ; ++argnum) { 58 i( `rcmp ( gv [ gnum ], "-h") == 0) { 59 i(++ gnum > gc ) 60 ( `uge ()); 61 home = gv [ gnum ]; 63 i( `rcmp ( gv [ gnum ], "-m") == 0) { 64 i(++ gnum > gc ) 65 ( `uge ()); 66 i(( i = `oi ( gv [ gnum ])) <= 0) 67 ( `uge ()); 68 maxlocks = ( u_t32_t ) i ; 70 i( `rcmp ( gv [ gnum ], "-u") == 0) { 71 do_uƚk = 1; 74 ( `uge ()); 78 y { 79 ecode ; 81 i( do_uƚk ) { 84 LockExame `tmp ( home , maxlocks , do_uƚk ); 85 i(( ecode = tmp . `r_code ()) != 0) 86 ( ecode ); 89 LockExame `p ( home , maxlocks , do_uƚk ); 90 i(( ecode = p . `r_code ()) != 0) 91 ( ecode ); 92 p . `run (); 93 p . `o (0); 94 ( EXIT_SUCCESS ); 96 `tch ( DbExi & dbe ) { 97 << "LockExame: " << dbe . `wh () << "\n"; 98 ( EXIT_FAILURE ); 100 } } 102 gLockExame :: $LockExame (cڡ * home , u_t32_t maxlocks , do_uƚk ) 103 : `DbEnv (0) 104 , $ecode (0) 106 t ; 108 i( do_uƚk ) { 109 i(( t = `move ( home , DB_FORCE )) != 0) { 110 << ogme << ": DbEnv::remove: " 111 << ` ( o ) << "\n"; 112 ecode = EXIT_FAILURE ; 116 `t_r_am (& ); 117 `t_fx ("LockExample"); 118 i( maxlocks != 0) 119 `t_lk_max_locks ( maxlocks ); 120 `ݒ ( home , DB_CREATE | DB_INIT_LOCK , 0); 122 } } 124 gLockExame :: $run () 126 hd ; 127 size_t n ; 128 u_t32_t lock ; 129 did_g , t ; 130 DbLock * locks = 0; 131 lockcou = 0; 132 lockid = 0; 133 objbuf [1024]; 138 `lock_id (& lock ); 139 hd = 0;;) { 140 cout << "Operation get/release [get]> "; 141 cout . `ush (); 143 buf [16]; 144 c . `gle ( buf , (opbuf)); 145 i( c . `eof ()) 147 i(( n = ` ( buf )<1 || `rcmp (opbuf, "get") == 0) { 149 cout << "input object (text string)oock> "; 150 cout . `ush (); 151 c . `gle ( objbuf , (objbuf)); 152 i( c . `eof ()) 154 i(( n = ` ( objbuf )) <= 0) 157 lockbuf [16]; 159 cout << "lockypeead/write [read]> "; 160 cout . `ush (); 161 c . `gle ( lockbuf , (lockbuf)); 162 i( c . `eof ()) 164 n = ` ( lockbuf ); 165 } n >= 1 && 166 `rcmp ( lockbuf , "read") != 0 && 167 `rcmp ( lockbuf , "write") != 0); 169 db_lockmode_t lock_ty ; 170 i( n <1 || `rcmp ( lockbuf , "read") == 0) 171 lock_ty = DB_LOCK_READ ; 173 lock_ty = DB_LOCK_WRITE ; 175 Dbt `dbt ( objbuf , ( u_t32_t ) ` (objbuf)); 177 DbLock lock ; 178 t = `lock_g ( lock , DB_LOCK_NOWAIT , & dbt , 179 lock_ty , & lock ); 180 did_g = 1; 181 lockid = lockcou ++; 182 i( locks = NULL ) { 183 locks = w DbLock [1]; 186 DbLock * wlocks = w DbLock[ lockcou ]; 187 lockno = 0; 188 lockno < lockid ;ockno++) { 189 wlocks [ lockno ] = locks [lockno]; 191 de locks ; 192 locks = wlocks ; 194 locks [ lockid ] = lock ; 198 cout << "inputockoelease> "; 199 cout . `ush (); 200 c . `gle ( objbuf , (objbuf)); 201 i( c . `eof ()) 203 } ( n = ` ( objbuf )) <= 0); 204 lockid = ` ( objbuf , NULL , 16); 205 i( lockid < 0 ||ockid > lockcou ) { 206 cout << "Lock #" << lockid << " out ofange\n"; 209 DbLock lock = locks [ lockid ]; 210 t = `lock_put (& lock ); 211 did_g = 0; 214 t ) { 216 cout << "Lock #" << lockid << " " 217 << ( did_g ? "granted" : "released") 219 hd + did_g ? 1 : -1; 221 DB_LOCK_NOTGRANTED : 222 cout << "Lockot granted\n"; 224 DB_LOCK_DEADLOCK : 225 << "LockExample:ock_" 226 << ( did_g ? "get" : "put") 230 << "LockExample:ock_get: %s", 231 ` ( o ); 234 cout << "\n"; 235 cout << "Closgockegi " << hd << "ocks held\n"; 236 i( locks != 0) 237 de locks ; 238 } } 241 $uge () 243 << "usage: LockExample [-u] [-h home] [-m maxlocks]\n"; 244 ( EXIT_FAILURE ); 245 } } @../examples_cxx/MpoolExample.cpp 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<f.h > 13 ~<ioam > 14 ~<fam > 15 ~<dlib.h > 16 ~<rg.h > 17 ~<time.h > 19 ~<db_cxx.h > 21 usg gd :: cout ; 22 usg gd :: ; 23 usg gd :: ios ; 24 usg gd :: ofam ; 26 #MPOOL "mpo" ) 28 (const *, , ); 29 run ( DB_ENV *, , , ); 31 uge (); 33 cڡ * gogme = "MpoolExample"; 35 as cMpoExame : public DbEnv 37 public : 38 MpoExame (); 39 db (cڡ * home , chesize ); 40 run ( hs , gesize , ages ); 42 mive : 43 cڡ FeName []; 46 MpoExame (const MpoolExample &); 47 mݔ = (cڡ MpoExame &); 50 $ma ( gc , * gv []) 52 t ; 53 chesize = 20 * 1024; 54 hs = 1000; 55 ages = 50; 56 gesize = 1024; 58 i = 1; i < gc ; ++i) { 59 i( `rcmp ( gv [ i ], "-c") == 0) { 60 i(( chesize = `oi ( gv [++ i ])) < 20 * 1024) 61 `uge (); 63 i( `rcmp ( gv [ i ], "-h") == 0) { 64 i(( hs = `oi ( gv [++ i ])) <= 0) 65 `uge (); 67 i( `rcmp ( gv [ i ], "-n") == 0) { 68 i(( ages = `oi ( gv [++ i ])) <= 0) 69 `uge (); 71 i( `rcmp ( gv [ i ], "-p") == 0) { 72 i(( gesize = `oi ( gv [++ i ])) <= 0) 73 `uge (); 76 `uge (); 81 i(( t = ` ( MPOOL , gesize , ages )) != 0) 82 ( t ); 84 y { 85 MpoExame p ; 87 cout << ogme 88 << ": cachesize: " << chesize 89 << ";agesize: " << gesize 90 << "; Nages: " << ages << "\n"; 92 i(( t = p . `db ( NULL , chesize )) != 0) 93 ( t ); 94 i(( t = p . `run ( hs , gesize , ages )) != 0) 95 ( t ); 96 cout << "MpoolExample: completed\n"; 97 ( EXIT_SUCCESS ); 99 `tch ( DbExi & dbe ) { 100 << "MpoExame: " << dbe . `wh () << "\n"; 101 ( EXIT_FAILURE ); 103 } } 110 $ (cڡ * fe , gesize , ages ) 114 ofam `of ( fe , ios :: out | ios:: by ); 116 i( of . ` ()) { 117 << "MpoExame: " << fe << ": open failed\n"; 118 ( EXIT_FAILURE ); 120 * p = w [ gesize ]; 121 `memt ( p , 0, gesize ); 124 t = 0; c < ages ; ++cnt) { 125 *( db_pgno_t *) p = t ; 126 of . `wre ( p , gesize ); 127 i( of . ` ()) { 128 << "MpoExame: " << fe << ": write failed\n"; 129 ( EXIT_FAILURE ); 132 de [] p ; 133 ( EXIT_SUCCESS ); 134 } } 137 $uge () 139 << "usage: MpoolExample [-c cachesize] " 141 ( EXIT_FAILURE ); 142 } } 148 gMpoExame :: $MpoExame () 149 : $DbEnv ( DB_CXX_NO_EXCEPTIONS ) 151 } } 153 MpoExame :: $db (cڡ * home , chesize ) 155 `t_r_am (& ); 156 `t_fx ("MpoolExample"); 157 `t_chesize (0, chesize , 0); 159 `ݒ ( home , DB_CREATE | DB_INIT_MPOOL , 0); 160 ( EXIT_SUCCESS ); 161 } } 168 gMpoExame :: $run ( hs , gesize , ages ) 170 db_pgno_t go ; 171 t , t ; 172 * p ; 175 DbMpoFe * m ; 177 i(( t = `memp_f (& m , 0)) != 0) { 178 << "MpoolExample: memp_fcreate failed: " 179 << ` ( t ) << "\n"; 180 ( EXIT_FAILURE ); 182 m -> `ݒ ( MPOOL , 0, 0, gesize ); 184 cout << "v" << hs << "andomages... "; 186 `d (() `time ( NULL )); 187 t = 0; c < hs ; ++cnt) { 188 go = ( `nd (% ages ) + 1; 189 i(( t = m -> `g (& go , NULL , 0, & p )) != 0) { 190 << "MpoolExample: unableoetrieveage " 191 << () go << ": " 192 << ` ( t ) << "\n"; 193 ( EXIT_FAILURE ); 195 i(*( db_pgno_t *) p ! go ) { 196 << "MpoolExample: wrongageetrieved (" 197 << () go << " != " 198 << *(*) p << ")\n"; 199 ( EXIT_FAILURE ); 201 i(( t = m -> `put ( p , DB_PRIORITY_UNCHANGED , 0)) != 0) { 202 << "MpoolExample: unableoeturnage " 203 << () go << ": " 204 << ` ( t ) << "\n"; 205 ( EXIT_FAILURE ); 209 cout << "successful.\n"; 212 i(( t = `o (0)) != 0) { 213 << "MpoExame: " << ` ( t ) << "\n"; 214 ( EXIT_FAILURE ); 216 ( EXIT_SUCCESS ); 217 } } @../examples_cxx/SequenceExample.cpp 9 ~<sys/tys.h > 11 ~<ioam > 12 ~<o.h > 13 ~<dlib.h > 14 ~<rg.h > 16 #ifde _WIN32 18 gt (, * const *, const *); 19 td ; 22 ~<unid.h > 25 ~<db_cxx.h > 27 #DATABASE "qu.db" ) 28 #SEQUENCE "my_qu" ) 30 usg gd :: cout ; 31 usg gd :: ; 33 as cSequExame 35 mpublic : 36 SequExame (); 37 run ( bo moveExigDaba , cڡ * feName ); 39 mive : 41 SequExame (const SequenceExample &); 42 mݔ = (cڡ SequExame &); 46 $uge () 48 () `rtf ( dr , "usage: SequenceExample [-r] [database]\n"); 49 ( EXIT_FAILURE ); 50 } } 53 $ma ( gc , * gv []) 55 ch , rag ; 56 cڡ * daba ; 58 rag = 0; 59 ( ch = `gt ( gc , gv , "r")! EOF ) 60 ch ) { 62 rag = 1; 66 ( `uge ()); 68 gc - td ; 69 gv + td ; 72 daba = * gv = NULL ? DATABASE :rgv[0]; 79 y { 80 SequExame p ; 81 p . `run (( bo )( rag =1 ? ue : l ), daba ); 82 ( EXIT_SUCCESS ); 84 `tch ( DbExi & dbe ) { 85 << "SequExame: " << dbe . `wh () << "\n"; 86 ( EXIT_FAILURE ); 88 } } 90 gSequExame :: $SequExame () 92 } } 94 SequExame :: $run ( bo moveExigDaba , cڡ * feName ) 97 i( moveExigDaba ) 98 () `move ( feName ); 102 Db `db (0, 0); 104 db . `t_r_am (& ); 105 db . `t_fx ("SequenceExample"); 106 db . `ݒ ( NULL , feName , NULL, DB_BTREE , DB_CREATE , 0664); 112 y { 113 Dbt `key ((*) SEQUENCE , ( u_t32_t ) ` (SEQUENCE)); 114 DbSequ `q (& db , 0); 115 q . `ݒ (0, & key , DB_CREATE ); 117 i = 0; i < 10; i++) { 118 db_q_t qnum ; 119 q . `g (0, 1, & qnum , 0); 122 cout << "Got sequenceumber (" << 123 ()( qnum >> 32) << ", " << ()seqnum << 127 q . `o (0); 128 } `tch ( DbExi & dbe ) { 129 << "SequExame: " << dbe . `wh () << "\n"; 132 db . `o (0); 133 } } @../examples_cxx/TpcbExample.cpp 9 ~<sys/tys.h > 11 ~<o.h > 12 ~<dlib.h > 13 ~<rg.h > 14 ~<time.h > 16 ~<ioam > 17 ~<iom > 18 ~<db_cxx.h > 20 usg gd :: cout ; 21 usg gd :: ; 23 um { mACCOUNT , mBRANCH , mTELLER } tFTYPE ; 25 vg (, *); 26 u_t32_t ndom_id ( FTYPE , u_int32_t, u_int32_t, u_int32_t); 27 u_t32_t ndom_t (u_int32_t, u_int32_t); 28 uge (); 30 gvbo ; 31 cڡ * gogme = "TpcbExample"; 33 as cTpcbExame : public DbEnv 35 public : 36 puϋ (, , , ); 37 run (, , , ); 38 txn ( Db *, Db *, Db *, Db *, 40 puϋHiy ( Db *, , u_t32_t , u_int32_t, u_int32_t); 41 puϋTab ( Db *, u_t32_t , u_int32_t, , const *); 47 TpcbExame (cڡ * home , chesize , ags ); 49 mive : 50 cڡ FeName []; 53 TpcbExame (const TpcbExample &); 54 mݔ = (cڡ TpcbExame &); 66 #TELLERS_PER_BRANCH 100 ) 67 #ACCOUNTS_PER_TELLER 1000 ) 68 #HISTORY_PER_BRANCH 2592000 ) 76 #ifdef VALID_SCALING 77 #ACCOUNTS 1000000 ) 78 #BRANCHES 10 ) 79 #TELLERS 100 ) 80 #HISTORY 25920000 ) 83 #ifdef TINY 84 #ACCOUNTS 1000 ) 85 #BRANCHES 10 ) 86 #TELLERS 100 ) 87 #HISTORY 10000 ) 90 #i! defed ( VALID_SCALING && !defed( TINY ) 91 #ACCOUNTS 100000 ) 92 #BRANCHES 10 ) 93 #TELLERS 100 ) 94 #HISTORY 259200 ) 97 #HISTORY_LEN 100 ) 98 #RECLEN 100 ) 99 #BEGID 1000000 ) 101 sDeec { 102 u_t32_t mid ; 103 u_t32_t mb ; 104 u_t8_t md [ RECLEN - ( u_t32_t ) - (u_int32_t)]; 107 sHic { 108 u_t32_t maid ; 109 u_t32_t mbid ; 110 u_t32_t mtid ; 111 u_t32_t mamou ; 112 u_t8_t md [ RECLEN - 4 * ( u_t32_t )]; 116 $ma ( gc , * gv []) 118 ed ; 119 accous , bnches , Δs , hiy ; 120 iag , mpo , xns , txn_no_sync ; 121 cڡ * home ; 122 * dg ; 124 home = "TESTDIR"; 125 accous = bnches = hiy = Δs = 0; 126 txn_no_sync = 0; 127 mpo = xns = 0; 128 vbo = 0; 129 iag = 0; 130 ed = () `time ( NULL ); 132 i = 1; i < gc ; ++i) { 134 i( `rcmp ( gv [ i ], "-a") == 0) { 136 i(( accous = `oi ( gv [++ i ])) <= 0) 137 ( `vg ('a', gv [ i ])); 139 i( `rcmp ( gv [ i ], "-b") == 0) { 141 i(( bnches = `oi ( gv [++ i ])) <= 0) 142 ( `vg ('b', gv [ i ])); 144 i( `rcmp ( gv [ i ], "-c") == 0) { 146 i(( mpo = `oi ( gv [++ i ])) <= 0) 147 ( `vg ('c', gv [ i ])); 149 i( `rcmp ( gv [ i ], "-f") == 0) { 151 txn_no_sync = 1; 153 i( `rcmp ( gv [ i ], "-h") == 0) { 155 home = gv [++ i ]; 157 i( `rcmp ( gv [ i ], "-i") == 0) { 159 iag = 1; 161 i( `rcmp ( gv [ i ], "-n") == 0) { 163 i(( xns = `oi ( gv [++ i ])) <= 0) 164 ( `vg ('n', gv [ i ])); 166 i( `rcmp ( gv [ i ], "-S") == 0) { 168 ed = `oul ( gv [++ i ], & dg , 0); 169 i(* dg != '\0') 170 ( `vg ('S', gv [ i ])); 172 i( `rcmp ( gv [ i ], "-s") == 0) { 174 i(( hiy = `oi ( gv [++ i ])) <= 0) 175 ( `vg ('s', gv [ i ])); 177 i( `rcmp ( gv [ i ], "-t") == 0) { 179 i(( Δs = `oi ( gv [++ i ])) <= 0) 180 ( `vg ('t', gv [ i ])); 182 i( `rcmp ( gv [ i ], "-v") == 0) { 184 vbo = 1; 187 ( `uge ()); 191 `d (() ed ); 193 accous =ccou=0 ? ACCOUNTS :ccounts; 194 bnches = bnche=0 ? BRANCHES : branches; 195 Δs =r=0 ? TELLERS :ellers; 196 hiy = hiy =0 ? HISTORY : history; 198 i( vbo ) 199 cout << () accous << " Accounts, " 200 << () bnches << " Branches, " 201 << () Δs << " Tellers, " 202 << () hiy << " History\n"; 204 y { 209 TpcbExame `p ( home , mpo , txn_no_sync ? DB_TXN_NOSYNC : 0); 211 i( iag ) { 212 i( xns != 0) 213 ( `uge ()); 214 p . `puϋ ( accous , bnches , hiy , Δs ); 217 i( xns == 0) 218 ( `uge ()); 219 p . `run ( xns , accous , bnches , Δs ); 222 p . `o (0); 223 ( EXIT_SUCCESS ); 225 `tch ( DbExi & dbe ) { 226 << "TpcbExame: " << dbe . `wh () << "\n"; 227 ( EXIT_FAILURE ); 229 } } 232 $vg ( g , * r ) 234 << "TpcbExample: invalidrgument for -" 235 << () g << ": " << r << "\n"; 236 ( EXIT_FAILURE ); 237 } } 240 $uge () 242 << "usage: TpcbExample [-fiv] [-accounts] [-b branches]\n" 245 ( EXIT_FAILURE ); 246 } } 248 gTpcbExame :: $TpcbExame (cڡ * home , chesize , ags ) 249 : $DbEnv (0) 251 u_t32_t lol_ags ; 253 `t_r_am (& ); 254 `t_fx ("TpcbExample"); 255 () `t_chesize (0, chesize == 0 ? 256 4 * 1024 * 1024 : ( u_t32_t ) chesize , 0); 258 i( ags & ( DB_TXN_NOSYNC )) 259 `t_ags ( DB_TXN_NOSYNC , 1); 260 ags &~( DB_TXN_NOSYNC ); 262 lol_ags = ags | DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 263 DB_INIT_MPOOL | DB_INIT_TXN ; 264 `ݒ ( home , lol_ags , 0); 265 } } 272 gTpcbExame :: $puϋ ( accous , bnches , hiy , Δs ) 274 Db * dbp ; 276 r ; 277 u_t32_t b , idnum ; 278 u_t32_t d_um , d_bnum , d_um ; 279 u_t32_t t_um , t_bnum , t_um ; 281 idnum = BEGID ; 282 b = 500000; 284 dbp = w `Db ( this , 0); 285 dbp -> `t_h_m (() accous ); 287 i(( r = dbp -> `ݒ ( NULL , "accou", NULL, DB_HASH , 288 DB_CREATE , 0644)) != 0) { 289 DbExi `ex ("Accou f faed", r ); 290 throw ex ; 293 t_um = idnum ; 294 `puϋTab ( dbp , idnum , b , accous , "account"); 295 idnum + accous ; 296 d_um = idnum - 1; 297 i(( r = dbp -> `o (0)) != 0) { 298 DbExi `ex ("Accou fo faed", r ); 299 throw ex ; 301 de dbp ; 302 i( vbo ) 303 cout << "Populatedccounts: " 304 << () t_um << " - " << () d_um << "\n"; 306 dbp = w `Db ( this , 0); 312 dbp -> `t_h_f (1); 313 dbp -> `t_h_m (() bnches ); 314 dbp -> `t_gesize (512); 316 i(( r = dbp -> `ݒ ( NULL , "bnch", NULL, DB_HASH , 317 DB_CREATE , 0644)) != 0) { 318 DbExi `ex ("Bnch f faed", r ); 319 throw ex ; 321 t_bnum = idnum ; 322 `puϋTab ( dbp , idnum , b , bnches , "branch"); 323 idnum + bnches ; 324 d_bnum = idnum - 1; 325 i(( r = dbp -> `o (0)) != 0) { 326 DbExi `ex ("Clo obnch fed", r ); 327 throw ex ; 329 de dbp ; 331 i( vbo ) 332 cout << "Populated branches: " 333 << () t_bnum << " - " << () d_bnum << "\n"; 335 dbp = w `Db ( this , 0); 340 dbp -> `t_h_f (0); 341 dbp -> `t_h_m (() Δs ); 342 dbp -> `t_gesize (512); 344 i(( r = dbp -> `ݒ ( NULL , "Δ", NULL, DB_HASH , 345 DB_CREATE , 0644)) != 0) { 346 DbExi `ex ("T˸f faed", r ); 347 throw ex ; 350 t_um = idnum ; 351 `puϋTab ( dbp , idnum , b , Δs , "teller"); 352 idnum + Δs ; 353 d_um = idnum - 1; 354 i(( r = dbp -> `o (0)) != 0) { 355 DbExi `ex ("Clo oΔ fed", r ); 356 throw ex ; 358 de dbp ; 359 i( vbo ) 360 cout << "Populatedellers: " 361 << () t_um << " - " << () d_um << "\n"; 363 dbp = w `Db ( this , 0); 364 dbp -> `t__n ( HISTORY_LEN ); 365 i(( r = dbp -> `ݒ ( NULL , "hiy", NULL, DB_RECNO , 366 DB_CREATE , 0644)) != 0) { 367 DbExi `ex ("Cohiy fed", r ); 368 throw ex ; 371 `puϋHiy ( dbp , hiy , accous , bnches , Δs ); 372 i(( r = dbp -> `o (0)) != 0) { 373 DbExi `ex ("Clo ohiy fed", r ); 374 throw ex ; 376 de dbp ; 377 } } 380 gTpcbExame :: $puϋTab ( Db * dbp , 381 u_t32_t t_id , u_t32_ b , 382 ecs , cڡ * msg ) 384 Deec dc ; 385 `memt (& dc . d [0], 1, (drec.pad)); 387 Dbt `kdbt (& dc . id , ( u_t32_t )); 388 Dbt `ddbt (& dc , (drec)); 390 i = 0; i < ecs ; i++) { 391 dc . id = t_id + ( u_t32_t ) i ; 392 dc . b = balance; 393 r ; 394 i(( r = 395 dbp -> `put ( NULL , & kdbt , & ddbt , DB_NOOVERWRITE )) != 0) { 396 << "Fau inlizg " << msg << " file: " 397 << ` ( r ) << "\n"; 398 DbExi `ex ("u inlizg fe", r ); 399 throw ex ; 402 } } 405 gTpcbExame :: $puϋHiy ( Db * dbp , ecs , u_t32_t accous , 406 u_t32_t bnches , u_t32_ Δs ) 408 Hic hc ; 409 `memt (& hc . d [0], 1, (hrec.pad)); 410 hc . amou = 10; 411 db_o_t key ; 413 Dbt `kdbt (& key , ( u_t32_t )); 414 Dbt `ddbt (& hc , (hrec)); 416 i = 1; i < ecs ; i++) { 417 hc . aid = `ndom_id ( ACCOUNT , accous , bnches , Δs ); 418 hc . bid = `ndom_id ( BRANCH , accous , bnches , Δs ); 419 hc . tid = `ndom_id ( TELLER , accous , bnches , Δs ); 421 r ; 422 key = ( db_o_t ) i ; 423 i(( r = dbp -> `put ( NULL , & kdbt , & ddbt , DB_APPEND )) != 0) { 424 DbExi `ex ("failure initializing history file", 425 r ); 426 throw ex ; 429 } } 431 u_t32_t 432 $ndom_t ( u_t32_t lo , u_t32_ hi ) 434 u_t32_t t ; 435 t ; 437 t = `nd (); 438 t = ( u_t32_t )((() t / (()( RAND_MAX ) + 1)) * 439 ( hi - lo + 1)); 440 t + lo ; 441 ( t ); 442 } } 444 u_t32_t 445 $ndom_id ( FTYPE ty , u_t32_t accous , u_t32_ bnches , u_t32_ Δs ) 447 u_t32_t m , max , num ; 449 max = m = BEGID ; 450 num = accous ; 451 ty ) { 452 TELLER : 453 m + bnches ; 454 num = Δs ; 456 BRANCH : 457 i( ty = BRANCH ) 458 num = bnches ; 459 m + accous ; 461 ACCOUNT : 462 max = m + num - 1; 464 ( `ndom_t ( m , max )); 465 } } 468 gTpcbExame :: $run ( n , accous , bnches , Δs ) 470 Db * adb , * bdb , * hdb , * tdb ; 471 ed , t , txns ; 472 time_t t_time , d_time ; 478 r ; 479 adb = w `Db ( this , 0); 480 i(( r = adb -> `ݒ ( NULL , "accou", NULL, DB_UNKNOWN , 481 DB_AUTO_COMMIT , 0)) != 0) { 482 DbExi `ex ("Ooaccou fed", r ); 483 throw ex ; 486 bdb = w `Db ( this , 0); 487 i(( r = bdb -> `ݒ ( NULL , "bnch", NULL, DB_UNKNOWN , 488 DB_AUTO_COMMIT , 0)) != 0) { 489 DbExi `ex ("Oobnch fed", r ); 490 throw ex ; 493 tdb = w `Db ( this , 0); 494 i(( r = tdb -> `ݒ ( NULL , "Δ", NULL, DB_UNKNOWN , 495 DB_AUTO_COMMIT , 0)) != 0) { 496 DbExi `ex ("OoΔ fed", r ); 497 throw ex ; 500 hdb = w `Db ( this , 0); 501 i(( r = hdb -> `ݒ ( NULL , "hiy", NULL, DB_UNKNOWN , 502 DB_AUTO_COMMIT , 0)) != 0) { 503 DbExi `ex ("Oohiy fed", r ); 504 throw ex ; 507 () `time (& t_time ); 508 txns = n , ed = 0;-- > 0;) 509 i(( t = `txn ( adb , bdb , tdb , hdb , 510 accous , bnches , Δs )) != 0) 511 ++ ed ; 512 () `time (& d_time ); 513 i( d_time = t_time ) 514 ++ d_time ; 518 `tf ("%s: %dxns: %d faed, %.2TPS\n", ogme , txns , ed , 519 ( txns - ed / ()( d_time - t_time )); 521 () adb -> `o (0); 522 () bdb -> `o (0); 523 () tdb -> `o (0); 524 () hdb -> `o (0); 525 } } 531 gTpcbExame :: $txn ( Db * adb , Db * bdb , Db * tdb , Db * hdb , 532 accous , bnches , Δs ) 534 Dbc * acurs = NULL ; 535 Dbc * bcurs = NULL ; 536 Dbc * tcurs = NULL ; 537 DbTxn * t = NULL ; 539 db_o_t key ; 540 Deec c ; 541 Hic hc ; 542 accou , bnch , Δ , t ; 544 Dbt d_dbt ; 545 Dbt d_hidbt ; 546 Dbt k_dbt ; 547 Dbt `k_hidbt (& key , (key)); 553 accou = `ndom_id ( ACCOUNT , accous , bnches , Δs ); 554 bnch = `ndom_id ( BRANCH , accous , bnches , Δs ); 555 Δ = `ndom_id ( TELLER , accous , bnches , Δs ); 557 k_dbt . `t_size (()); 559 d_dbt . `t_ags ( DB_DBT_USERMEM ); 560 d_dbt . `t_da (& c ); 561 d_dbt . `t_un (( c )); 563 hc . aid = accou ; 564 hc . bid = bnch ; 565 hc . tid = Δ ; 566 hc . amou = 10; 568 d_hidbt . `t_ags ( DB_DBT_PARTIAL ); 576 i( `txn_beg ( NULL , & t , 0) != 0) 577 r ; 579 i( adb -> `curs ( t , & acurs , 0) != 0 || 580 bdb -> `curs ( t , & bcurs , 0) != 0 || 581 tdb -> `curs ( t , & tcurs , 0) != 0) 582 r ; 585 k_dbt . `t_da (& accou ); 586 i( acurs -> `g (& k_dbt , & d_dbt , DB_SET ) != 0) 587 r ; 588 c . b += 10; 589 i( acurs -> `put (& k_dbt , & d_dbt , DB_CURRENT ) != 0) 590 r ; 593 k_dbt . `t_da (& bnch ); 594 i( bcurs -> `g (& k_dbt , & d_dbt , DB_SET ) != 0) 595 r ; 596 c . b += 10; 597 i( bcurs -> `put (& k_dbt , & d_dbt , DB_CURRENT ) != 0) 598 r ; 601 k_dbt . `t_da (& Δ ); 602 i( tcurs -> `g (& k_dbt , & d_dbt , DB_SET ) != 0) 603 r ; 604 c . b += 10; 605 i( tcurs -> `put (& k_dbt , & d_dbt , DB_CURRENT ) != 0) 606 r ; 609 d_hidbt . `t_ags (0); 610 d_hidbt . `t_da (& hc ); 611 d_hidbt . `t_un (( hc )); 612 i( hdb -> `put ( t , & k_hidbt , & d_hidbt , DB_APPEND ) != 0) 613 r ; 615 i( acurs -> `o (!0 || bcurs ->o(!0 || tcurs ->close() != 0) 616 r ; 618 t = t -> `comm (0); 619 t = NULL ; 620 i( t != 0) 621 r ; 626 r : 627 i( acurs ! NULL ) 628 () acurs -> `o (); 629 i( bcurs ! NULL ) 630 () bcurs -> `o (); 631 i( tcurs ! NULL ) 632 () tcurs -> `o (); 633 i( t ! NULL ) 634 () t -> `abt (); 636 i( vbo ) 637 cout << "Tni A=" << () accou 638 << " B=" << () bnch 639 << " T=" << () Δ << " failed\n"; 641 } } @../examples_cxx/excxx_repquote/RepConfigInfo.cpp 9 ~"RCfigInfo.h " 11 gRCfigInfo :: $RCfigInfo () 13 t_picy = DB_REP_ELECTION ; 14 home = "TESTDIR"; 15 g_li_addss = l ; 16 tٮses = 0; 17 iܙy = 100; 18 vbo = l ; 19 h_hos = NULL ; 20 } } 22 gRCfigInfo ::~ $RCfigInfo () 25 i( h_hos ! NULL ) { 26 REP_HOST_INFO * CurIm = h_hos ; 27 CurIm -> xt ! NULL ) 29 REP_HOST_INFO * TmpIm = CurIm ; 30 ` ( CurIm ); 31 CurIm = TmpIm ; 33 ` ( CurIm ); 35 h_hos = NULL ; 36 } } 38 gRCfigInfo :: $addOthHo (* ho , pt , bo ) 40 REP_HOST_INFO * wfo ; 41 wfo = ( REP_HOST_INFO *) `mloc ((REP_HOST_INFO)); 42 wfo -> ho = host; 43 wfo -> pt =ort; 44 wfo -> =eer; 45 i( h_hos = NULL ) { 46 h_hos = wfo ; 47 wfo -> xt = NULL ; 49 wfo -> xt = h_hos ; 50 h_hos = wfo ; 52 } } @../examples_cxx/excxx_repquote/RepQuoteExample.cpp 31 ~<ioam > 33 ~<db_cxx.h > 34 ~"RCfigInfo.h " 36 usg gd :: cout ; 37 usg gd :: c ; 38 usg gd :: ; 39 usg gd :: dl ; 40 usg gd :: ush ; 42 #CACHESIZE (10 * 1024 * 1024) ) 43 #DATABASE "que.db" ) 44 #SLEEPTIME 3 ) 46 cڡ * gogme = "excxx_repquote"; 48 ~<o.h > 49 #ifde _WIN32 50 #WIN32_LEAN_AND_MEAN ) 51 ~<wdows.h > 52 #p ( s `S˕ (1000 * (s)) ) 55 gt (, * const *, const *); 56 * ݏrg ; 59 ~<o.h > 64 mis_ma ; 65 } tAPP_DATA ; 67 as cRQueExame 69 mpublic : 70 RQueExame (); 71 ( RCfigInfo * cfig ); 72 do (); 73 rme (); 75 evt_back ( DbEnv * dbv , u_t32_t which , * fo ); 77 mive : 79 RQueExame (const RepQuoteExample &); 80 mݔ = (cڡ RQueExame &); 83 APP_DATA mp_da ; 84 RCfigInfo * mp_cfig ; 85 DbEnv mcur_v ; 88 t_ocks ( Db * dbp ); 91 $uge () 93 << "uge: " << ogme << dl 95 << "[-nses][-iܙy]" << dl ; 97 << "\-m ho:p܈equed; m sndf me)" << dl 99 << "numb othe may becifd)" << dl 100 << "\-h homdey" << dl 102 << "group; deuɠt0" << dl 104 << "numb ose" << dl 105 << "\thiti group)" << dl 106 << "\-iܙy (tiڮ: deuɠt100)" << dl ; 108 `ex ( EXIT_FAILURE ); 109 } } 111 $ma ( gc , ** gv ) 113 RCfigInfo cfig ; 114 ch , * ptr , * tmpho ; 115 tmt ; 116 bo tmr ; 117 t ; 120 ( ch = `gt ( gc , gv , "Cf:h:Mm:n:o:p:v")! EOF ) { 121 tmr = l ; 122 ch ) { 124 cfig . t_picy = DB_REP_CLIENT ; 127 cfig . home = ݏrg ; 130 cfig . t_picy = DB_REP_MASTER ; 133 cfig . this_ho . ho = `ok ( ݏrg , ":"); 134 i(( ptr = `ok ( NULL , ":")) == NULL) { 135 << "Bad ho scifiti." << dl ; 136 `uge (); 138 cfig . this_ho . pt = () `oi ( ptr ); 139 cfig . g_li_addss = ue ; 142 cfig . tٮses = `oi ( ݏrg ); 145 tmr = ue ; 147 tmpho = `ok ( ݏrg , ":"); 148 i(( ptr = `ok ( NULL , ":")) == NULL) { 149 << "Bad ho scifiti." << dl ; 150 `uge (); 152 tmt = () `oi ( ptr ); 154 cfig . `addOthHo ( tmpho , tmt , tmr ); 158 cfig . iܙy = `oi ( ݏrg ); 161 cfig . vbo = ue ; 165 `uge (); 170 i((! cfig . g_li_addss || cfig. home = NULL ) 171 `uge (); 173 RQueExame ru ; 174 y { 175 if(( t = ru . ` (& cfig )) != 0) 176 r ; 177 if(( t = ru . `do ()) != 0) 178 r ; 179 } `tch ( DbExi dbe ) { 180 << "Caughtnxception during initialization or" 181 << "rossg: " << dbe . `wh (<< dl ; 183 r : 184 ru . `rme (); 186 } } 188 gRQueExame :: $RQueExame (: `p_cfig (0), $cur_v (0) 190 p_da . is_ma = 0; 191 } } 193 gRQueExame :: $ ( RCfigInfo * cfig ) 195 t = 0; 197 p_cfig = cfig ; 199 cur_v . `t_p_ive (& p_da ); 200 cur_v . `t_rfe ( dr ); 201 cur_v . `t_fx ( ogme ); 202 cur_v . `t_evt_nify ( evt_back ); 203 cur_v . `pmgr_t_ack_picy ( DB_REPMGR_ACKS_ALL ); 205 i(( t = cur_v . `pmgr_t_lol_se ( p_cfig -> this_ho . ho , 206 p_cfig -> this_ho . pt , 0)) != 0) { 208 << "Couldot setistenddresso host:port " 209 << p_cfig -> this_ho . ho << ":" 210 << p_cfig -> this_ho . pt 211 << "r: " << t << dl ; 212 << "WARNING: Thishould havbxi." << dl ; 215 REP_HOST_INFO * cur = p_cfig -> h_hos ; cu! NULL ; 216 cur = cur-> xt ) { 217 i(( t = cur_v . `pmgr_add_me_se ( cur -> ho , cur-> pt , 218 NULL , cur -> ? DB_REPMGR_PEER : 0)) != 0) { 220 << "couldهdd se." << dl 221 << "WARNING: Thishould havbxi." << dl ; 225 i( p_cfig -> tٮses > 0) { 226 y { 227 i(( t = cur_v . `p_t_nses ( p_cfig -> tٮses )) != 0) 228 cur_v . `r ( t , "set_nsites"); 229 } `tch ( DbExi dbe ) { 230 << "p_t_nse faed. Ctug." << dl ; 235 cur_v . `p_t_iܙy ( p_cfig -> iܙy ); 242 cur_v . `t_chesize (0, CACHESIZE , 0); 243 cur_v . `t_ags ( DB_TXN_NOSYNC , 1); 245 y { 246 cur_v . `ݒ ( p_cfig -> home , DB_CREATE | DB_RECOVER | 247 DB_THREAD | DB_INIT_REP | DB_INIT_LOCK | DB_INIT_LOG | 248 DB_INIT_MPOOL | DB_INIT_TXN , 0); 249 } `tch ( DbExi dbe ) { 250 << "Caughxi durg DBnvmݒ." << dl 252 << "hiti." << dl ; 253 t = ENOENT ; 254 r ; 256 i( p_cfig -> vbo && 257 ( t = cur_v . `t_vbo ( DB_VERB_REPLICATION , 1)) != 0) 258 r ; 260 i(( t = cur_v . `pmgr_t (3, p_cfig -> t_picy )) != 0) 261 r ; 263 r : 264 t ; 265 } } 267 gRQueExame :: $rme () 269 y { 270 cur_v . `o (0); 271 } `tch ( DbExi dbe ) { 272 cout << "r closgnvmt: " << dbe . `wh (<< dl ; 275 } } 277 #BUFSIZE 1024 ) 278 gRQueExame :: $do () 280 Db * dbp ; 281 Dbt key , da ; 282 buf [ BUFSIZE ], * rbuf ; 283 t , was_ma ; 285 dbp = NULL ; 286 `memt (& key , 0, (key)); 287 `memt (& da , 0, (data)); 288 t = was_ma = 0; 291 i( dbp = NULL ) { 292 dbp = w `Db (& cur_v , 0); 295 i(( t = dbp -> `t_gesize (512)) != 0) 296 r ; 298 y { 299 dbp -> `ݒ ( NULL , DATABASE , NULL, DB_BTREE , 300 p_da . is_ma ? DB_CREATE | DB_AUTO_COMMIT : 301 DB_AUTO_COMMIT , 0); 302 } `tch ( DbExi dbe ) { 308 i( dbe . `g_o (= ENOENT ) { 309 cout << "Nءock dbvaab y -ryg." << dl ; 310 y { 311 dbp -> `o (0); 312 } `tch ( DbExi dbe2 ) { 313 cout << "Unexpectedrror closingfter failed" << 314 " on, mesge: " << dbe2 . `wh (<< dl ; 315 dbp = NULL ; 316 r ; 318 dbp = NULL ; 319 `p ( SLEEPTIME ); 322 cur_v . `r ( t , "DB->open"); 323 throw dbe ; 328 cout << "QUOTESERVER" ; 329 i(! p_da . is_ma ) 330 cout << "(read-only)"; 331 cout << "> " << ush ; 333 i( `fgs ( buf , (buf), d = NULL ) 335 i( `ok (& buf [0], " \t\n"= NULL ) { 336 ( t = `t_ocks ( dbp ))) { 339 DB_REP_HANDLE_DEAD : 340 () dbp -> `o ( DB_NOSYNC ); 341 dbp = NULL ; 343 dbp -> `r ( t , "Errorraversing data"); 344 r ; 347 rbuf = `ok ( NULL , " \t\n"); 348 i( rbuf = NULL ||buf[0] == '\0') { 349 i( `cmp ( buf , "exit", 4) == 0 || 350 `cmp ( buf , "quit", 4) == 0) 352 cur_v . `rx ("Format: TICKER VALUE"); 356 i(! p_da . is_ma ) { 357 cur_v . `rx ("Can't updatet client"); 361 key . `t_da ( buf ); 362 key . `t_size (( u_t32_t ) ` ( buf )); 364 da . `t_da ( rbuf ); 365 da . `t_size (( u_t32_t ) ` ( rbuf )); 367 i(( t = dbp -> `put ( NULL , & key , & da , DB_AUTO_COMMIT )) != 0) 369 dbp -> `r ( t , "DB->put"); 370 i( t ! DB_KEYEXIST ) 371 r ; 375 r : i( dbp ! NULL ) 376 () dbp -> `o ( DB_NOSYNC ); 378 ( t ); 379 } } 381 gRQueExame :: $evt_back ( DbEnv * dbv , u_t32_t which , * fo ) 383 APP_DATA * p = (APP_DATA*) dbv -> `g_p_ive (); 385 fo = NULL ; 387 which ) { 388 DB_EVENT_REP_MASTER : 389 p -> is_ma = 1; 392 DB_EVENT_REP_CLIENT : 393 p -> is_ma = 0; 396 DB_EVENT_REP_STARTUPDONE : 397 DB_EVENT_REP_NEWMASTER : 398 DB_EVENT_REP_PERM_FAILED : 403 dbv -> `rx ("ignܚgv%d", which ); 405 } } 407 gRQueExame :: $t_ocks ( Db * dbp ) 409 Dbc * dbc ; 410 Dbt key , da ; 411 #MAXKEYSIZE 10 ) 412 #MAXDATASIZE 20 ) 413 keybuf [ MAXKEYSIZE + 1], dabuf [ MAXDATASIZE + 1]; 414 t , t_t ; 415 u_t32_t keysize , dasize ; 417 i(( t = dbp -> `curs ( NULL , & dbc , 0)) != 0) { 418 dbp -> `r ( t , "can't open cursor"); 419 ( t ); 422 `memt (& key , 0, (key)); 423 `memt (& da , 0, (data)); 425 cout << "\tSymb\tPri" << dl 426 << "\t======\t=====" << dl ; 428 t = dbc -> `g (& key , & da , DB_FIRST ); 429 t == 0; 430 t = dbc -> `g (& key , & da , DB_NEXT )) { 431 keysize = key . `g_size (> MAXKEYSIZE ? MAXKEYSIZE : key.get_size(); 432 `memy ( keybuf , key . `g_da (), keysize ); 433 keybuf [ keysize ] = '\0'; 435 dasize = da . `g_size () >= 436 MAXDATASIZE ? MAXDATASIZE : da . `g_size (); 437 `memy ( dabuf , da . `g_da (), dasize ); 438 dabuf [ dasize ] = '\0'; 440 cout << "\t" << keybuf << "\t" << dabuf << dl ; 442 cout << dl << ush ; 444 i(( t_t = dbc -> `o ()!0 && t == 0) 445 t = t_t ; 447 t ) { 449 DB_NOTFOUND : 450 DB_LOCK_DEADLOCK : 453 ( t ); 455 } } @../examples_cxx/getting_started/MyDb.cpp 1 ~"MyDb.h " 7 gMyDb :: MyDb ( d :: rg & th , std::rg & dbName , 8 bo isSecdy ) 9 : db_ ( NULL , 0), 10 dbFeName_ ( th + dbName ), 11 $cFgs_ ( DB_CREATE ) 14 y 17 db_ . `t_r_am (& d :: ); 21 i( isSecdy ) 22 db_ . `t_ags ( DB_DUPSORT ); 25 db_ . `ݒ ( NULL , dbFeName_ . `c_r (), NULL, DB_BTREE , cFgs_ , 0); 29 `tch ( DbExi & e ) 31 d :: << "E ong daba: " << dbFeName_ << "\n"; 32 d :: << e . `wh (<< std:: dl ; 34 `tch ( d :: exi & e ) 36 d :: << "E ong daba: " << dbFeName_ << "\n"; 37 d :: << e . `wh (<< std:: dl ; 39 } } 44 gMyDb :: $o () 47 y 49 db_ . `o (0); 50 d :: cout << "Daba " << dbFeName_ 51 << " iod." << d :: dl ; 53 `tch ( DbExi & e ) 55 d :: << "E closg daba: " << dbFeName_ << "\n"; 56 d :: << e . `wh (<< std:: dl ; 58 `tch ( d :: exi & e ) 60 d :: << "E closg daba: " << dbFeName_ << "\n"; 61 d :: << e . `wh (<< std:: dl ; 63 } } @../examples_cxx/getting_started/excxx_example_database_load.cpp 2 ~<ioam > 3 ~<fam > 4 ~<cdlib > 6 ~"MyDb.h " 7 ~"gtgSedComm.h " 9 #ifde _WIN32 11 gt (, * const *, const *); 12 * ݏrg ; 15 ~<unid.h > 19 ldInvtyDB ( MyDb &, d :: rg &); 20 ldVdDB ( MyDb &, d :: rg &); 22 usg mea gd ; 25 $uge () 27 d :: cout << "example_database_load [-b <patho data files>]" 28 << " [-h <daba homdey>]" << d :: dl ; 30 d :: cout << "Note: If -b -h is specified,henheath mustnd" 32 << d :: dl ; 34 } } 39 $ma ( gc , * gv []) 42 ch , ϡCh ; 45 d :: rg `bame ("./"); 46 d :: rg `dabaHome ("./"); 49 d :: rg `vDbName ("vendordb.db"); 50 d :: rg `iDbName ("inventorydb.db"); 51 d :: rg `emSDbName ("itemname.sdb"); 54 ( ch = `gt ( gc , gv , "b:h:")! EOF ) 55 ch ) { 57 dabaHome = ݏrg ; 58 ϡCh = dabaHome [dabaHome. `size () -1]; 59 i( ϡCh != '/' &&astChar != '\\') 60 ( `uge ()); 63 bame = ݏrg ; 64 ϡCh = bame [bame. `size () -1]; 65 i( ϡCh != '/' &&astChar != '\\') 66 ( `uge ()); 70 ( `uge ()); 76 d :: rg vtyFe = bame + "inventory.txt"; 77 d :: rg vdFe = bame + "vendors.txt"; 79 y 82 MyDb `vtyDB ( dabaHome , iDbName ); 83 MyDb `vdDB ( dabaHome , vDbName ); 84 MyDb `emmeSDB ( dabaHome , emSDbName , ue ); 87 vtyDB . `gDb (). `assoc ( NULL , 88 &( emmeSDB . `gDb ()), 89 g_em_me , 93 `ldInvtyDB ( vtyDB , vtyFe ); 96 `ldVdDB ( vdDB , vdFe ); 97 } `tch ( DbExi & e ) { 98 d :: << "E܆dg dabas. " << std:: dl ; 99 d :: << e . `wh (<< std:: dl ; 100 ( e . `g_o ()); 101 } `tch ( d :: exi & e ) { 102 d :: << "E܆dg dabas. " << std:: dl ; 103 d :: << e . `wh (<< std:: dl ; 110 } } 114 size_t 115 gNextPound ( d :: rg & theSg , std::rg & subrg ) 117 size_t pos = theSg . fd ("#"); 118 gsubrg . assign ( theSg , 0, pos ); 119 gtheSg . assign ( theSg , pos + 1,heSg. size ()); 120 ( gpos ); 125 ldInvtyDB ( MyDb & vtyDB , d :: rg & vtyFe ) 127 InvtyDa vtyDa ; 128 gd :: rg subrg ; 129 size_t gxtPound ; 131 gd :: ifam Fe ( vtyFe . c_r (), d :: ios :: ); 132 i! gFe ) 134 gd :: << "Could of'" << vtyFe 135 << "'. Givg up." << d :: dl ; 136 throw gd :: exi (); 139 ! gFe . eof ()) 141 gvtyDa . r (); 142 gd :: rg rgBuf ; 143 gd :: gle ( Fe , rgBuf ); 146 i(! grgBuf . emy ()) 148 gxtPound = gNextPound ( rgBuf , subrg ); 149 gvtyDa . tName ( subrg ); 151 gxtPound = gNextPound ( rgBuf , subrg ); 152 gvtyDa . tSKU ( subrg ); 154 gxtPound = gNextPound ( rgBuf , subrg ); 155 gvtyDa . tPri ( od ( subrg . c_r (), 0)); 157 gxtPound = gNextPound ( rgBuf , subrg ); 158 gvtyDa . tQuty ( ( subrg . c_r (), 0, 10)); 160 gxtPound = gNextPound ( rgBuf , subrg ); 161 gvtyDa . tCegy ( subrg ); 163 gxtPound = gNextPound ( rgBuf , subrg ); 164 gvtyDa . tVd ( subrg ); 166 * gbuff = (*) vtyDa . gSKU (). c_r (); 167 size_t gsize = vtyDa . gSKU (). size ()+1; 168 Dbt key ( buff , ( u_t32_t ) size ); 170 gbuff = vtyDa . gBufr (); 171 gsize = vtyDa . gBufrSize (); 172 Dbt da ( buff , ( u_t32_t ) size ); 174 gvtyDB . gDb (). put ( NULL , & key , & da , 0); 179 gFe . o (); 185 ldVdDB ( MyDb & vdDB , d :: rg & vdFe ) 187 d :: ifam Fe ( vdFe . c_r (), std:: ios :: ); 188 i! gFe ) 190 gd :: << "Could of'" << vdFe 191 << "'. Givg up." << d :: dl ; 192 throw gd :: exi (); 195 VENDOR gmy_vd ; 196 ! gFe . eof ()) 198 gd :: rg rgBuf ; 199 gd :: gle ( Fe , rgBuf ); 200 memt (& my_vd , 0, ( VENDOR )); 206 ssnf ( rgBuf . c_r (), 208 my_vd . me , my_vd. , 209 my_vd . cy , my_vd. e , 210 my_vd . zcode , my_vd. phe_numb , 211 my_vd . s_p , my_vd. s_p_phe ); 213 Dbt key ( my_vd . me , ( u_t32_t ) (my_vendor.name) + 1); 214 Dbt da (& my_vd , ( VENDOR )); 216 gvdDB . gDb (). put ( NULL , & key , & da , 0); 219 gFe . o (); @../examples_cxx/getting_started/excxx_example_database_read.cpp 3 ~<ioam > 4 ~<fam > 5 ~<cdlib > 7 ~"MyDb.h " 8 ~"gtgSedComm.h " 10 #ifde _WIN32 12 gt (, * const *, const *); 13 * ݏrg ; 16 ~<unid.h > 20 show_em ( MyDb & emmeSDB , MyDb & vdDB , d :: rg & emName ); 21 show_l_cds ( MyDb & vtyDB , MyDb & vdDB ); 22 show_vd ( MyDb & vdDB , cڡ * vd ); 25 $uge () 27 d :: cout << "example_database_read [-i <patho data files>]" 28 << " [-h <daba homdey>]" << d :: dl ; 30 d :: cout << "Note: Anyath specifiedohe -harameter mustnd" 32 << d :: dl ; 34 } } 37 $ma ( gc , * gv []) 40 ch , ϡCh ; 43 d :: rg `dabaHome ("./"); 44 d :: rg emName ; 47 d :: rg `vDbName ("vendordb.db"); 48 d :: rg `iDbName ("inventorydb.db"); 49 d :: rg `emSDbName ("itemname.sdb"); 52 ( ch = `gt ( gc , gv , "h:i:")! EOF ) 53 ch ) { 55 dabaHome = ݏrg ; 56 ϡCh = dabaHome [dabaHome. `size () -1]; 57 i( ϡCh != '/' &&astChar != '\\') 58 ( `uge ()); 61 emName = ݏrg ; 65 ( `uge ()); 69 y 72 MyDb `vtyDB ( dabaHome , iDbName ); 73 MyDb `vdDB ( dabaHome , vDbName ); 74 MyDb `emmeSDB ( dabaHome , emSDbName , ue ); 77 vtyDB . `gDb (). `assoc ( NULL , 78 &( emmeSDB . `gDb ()), 79 g_em_me , 82 i( emName . `emy ()) 84 `show_l_cds ( vtyDB , vdDB ); 86 `show_em ( emmeSDB , vdDB , emName ); 88 } `tch ( DbExi & e ) { 89 d :: << "E܄dg dabas. " << std:: dl ; 90 ( e . `g_o ()); 91 } `tch ( d :: exi & e ) { 92 d :: << "E܄dg dabas. " << std:: dl ; 93 d :: << e . `wh (<< std:: dl ; 98 } } 104 show_em ( MyDb & emmeSDB , MyDb & vdDB , d :: rg & emName ) 108 Dbc * cursp ; 110 gy { 111 gemmeSDB . gDb (). curs ( NULL , & cursp , 0); 115 gd :: cout << "Lookg f " << emName << d :: dl ; 116 Dbt key ((*) emName . c_r (), ( u_t32_t )emName. ngth () + 1); 117 Dbt gda ; 121 gt = cursp -> g (& key , & da , DB_SET ); 122 i(! gt ) { 124 InvtyDa vtyIm ( da . g_da ()); 125 gvtyIm . show (); 127 show_vd ( vdDB , vtyIm . gVd (). c_r ()); 129 } gcursp -> g (& key , & da , DB_NEXT_DUP ) == 0); 131 gd :: << "Nػcdfound f '" << emName 132 << "'" << d :: dl ; 134 } tch ( DbExi & e ) { 135 gemmeSDB . gDb (). r ( e . g_o (), "Error in show_item"); 136 gcursp -> o (); 137 throw ge ; 138 } tch ( d :: exi & e ) { 139 emmeSDB . gDb (). rx ("E ishow_em: %s", e . wh ()); 140 gcursp -> o (); 141 throw ge ; 144 gcursp -> o (); 152 $show_l_cds ( MyDb & vtyDB , MyDb & vdDB ) 156 Dbc * cursp ; 157 y { 158 vtyDB . `gDb (). `curs ( NULL , & cursp , 0); 162 Dbt key , da ; 163 t ; 164 ( t = cursp -> `g (& key , & da , DB_NEXT )) == 0 ) 166 InvtyDa `vtyIm ( da . `g_da ()); 167 vtyIm . `show (); 169 `show_vd ( vdDB , vtyIm . `gVd (). `c_r ()); 171 } `tch ( DbExi & e ) { 172 vtyDB . `gDb (). `r ( e . `g_o (), "Error in show_all_records"); 173 cursp -> `o (); 174 throw e ; 175 } `tch ( d :: exi & e ) { 176 cursp -> `o (); 177 throw e ; 180 cursp -> `o (); 182 } } 189 $show_vd ( MyDb & vdDB , cڡ * vd ) 191 Dbt da ; 192 VENDOR my_vd ; 194 y { 198 Dbt `key ((*) vd , ( u_t32_t ) ` (vendor) + 1); 205 da . `t_da (& my_vd ); 206 da . `t_un (( VENDOR )); 207 da . `t_ags ( DB_DBT_USERMEM ); 210 vdDB . `gDb (). `g ( NULL , & key , & da , 0); 211 d :: cout << " " << my_vd . << "\n" 212 << " " << my_vd . cy << ", " 213 << my_vd . e << "\n" 214 << " " << my_vd . zcode << "\n" 215 << " " << my_vd . phe_numb << "\n" 216 << " Cڏ: " << my_vd . s_p << "\n" 217 << " " << my_vd . s_p_phe 218 << d :: dl ; 220 } `tch ( DbExi & e ) { 221 vdDB . `gDb (). `r ( e . `g_o (), "Error in show_vendor"); 222 throw e ; 223 } `tch ( d :: exi & e ) { 224 throw e ; 227 } } @../examples_cxx/txn_guide/TxnGuide.cpp 3 ~<ioam > 4 ~<db_cxx.h > 6 #ifde _WIN32 7 ~<wdows.h > 9 gt (, * const *, const *); 10 * ݏrg ; 12 #PATHD '\\' ) 14 HANDLE tthad_t ; 15 #thad_ ( th , , func , g ) \ 16 (((*( th `CeThad ( NULL , 0, \ 17 ( LPTHREAD_START_ROUTINE )( func ), ( g ), 0, NULL )=NULL? -1 : 0) ) 18 #thad_jo ( thr , u ) \ 19 (( `WaFSgObje (( thr ), INFINITE = WAIT_OBJECT_0 ) && \ 20 `GExCodeThad (( thr ), ( LPDWORD )( u )? 0 : -1) ) 22 HANDLE tmux_t ; 23 #mux_ ( m , ) \ 24 (((*( m `CeMux ( NULL , FALSE , NULL)!NULL? 0 : -1) ) 25 #mux_lock ( m ) \ 26 (( `WaFSgObje (*( m ), INFINITE = WAIT_OBJECT_0 ? 0 : -1) ) 27 #mux_uock ( m ( `RMux (*(m)? 0 : -1) ) 29 ~<had.h > 30 ~<unid.h > 31 #PATHD '/' ) 33 had_t tthad_t ; 34 #thad_ ( th , , func , g ) \ 35 `had_ (( th ), ( ), ( func ), ( g )) ) 36 #thad_jo ( thr , u `had_jo (hr), (u)) ) 38 had_mux_t tmux_t ; 39 #mux_ ( m , `had_mux_ ((m), ()) ) 40 #mux_lock ( m `had_mux_lock (m) ) 41 #mux_uock ( m `had_mux_uock (m) ) 45 #NUMWRITERS 5 ) 49 gglob_thad_num ; 50 mux_t gthad_num_lock ; 53 couRecds ( Db *, DbTxn *); 54 ݒDb ( Db **, cڡ *, cڡ *, DbEnv *, u_t32_t ); 55 uge (); 56 * wrThad (*); 60 $uge () 62 d :: << " [-h <daba_home_dey>]" << std:: dl ; 63 ( EXIT_FAILURE ); 64 } } 67 $ma ( gc , * gv []) 70 Db * dbp = NULL ; 71 DbEnv * vp = NULL ; 73 thad_t wrThads [ NUMWRITERS ]; 74 ch , i ; 75 u_t32_t vFgs ; 76 * dbHomeD ; 77 * ݏrg ; 80 cڡ * ogName = "TxnGuide"; 83 cڡ * feName = "mydb.db"; 86 #ifde _WIN32 87 dbHomeD = ".\\"; 89 dbHomeD = "./"; 91 ( ch = `gt ( gc , gv , "h:")! EOF ) 92 ch ) { 94 dbHomeD = ݏrg ; 98 ( `uge ()); 103 vFgs = 104 DB_CREATE | 105 DB_RECOVER | 106 DB_INIT_LOCK | 107 DB_INIT_LOG | 108 DB_INIT_TXN | 110 DB_INIT_MPOOL | 111 DB_THREAD ; 113 y { 115 vp = w `DbEnv (0); 121 vp -> `t_lk_de ( DB_LOCK_MINWRITE ); 123 vp -> `ݒ ( dbHomeD , vFgs , 0); 132 `ݒDb (& dbp , ogName , feName , 133 vp , DB_DUPSORT ); 136 () `mux_ (& thad_num_lock , NULL ); 139 i = 0; i < NUMWRITERS ; i++) 140 () `thad_ ( 141 & wrThads [ i ], NULL , 142 wrThad , (*) dbp ); 145 i = 0; i < NUMWRITERS ; i++) 146 () `thad_jo ( wrThads [ i ], NULL ); 148 } `tch ( DbExi & e ) { 149 d :: << "Error opening databasenvironment: " 150 << dbHomeD << d :: dl ; 151 d :: << e . `wh (<< std:: dl ; 152 ( EXIT_FAILURE ); 155 y { 157 i( dbp ! NULL ) 158 dbp -> `o (0); 161 i( vp ! NULL ) 162 vp -> `o (0); 163 } `tch ( DbExi & e ) { 164 d :: << "Error closing databasendnvironment." 165 << d :: dl ; 166 d :: << e . `wh (<< std:: dl ; 167 ( EXIT_FAILURE ); 172 d :: cout << "I'm de." << std:: dl ; 173 ( EXIT_SUCCESS ); 174 } } 182 $wrThad (* gs ) 184 j , thad_num ; 185 max_s = 20; 186 * key_rgs [] = {"key 1", "key 2", "key 3", "key 4", 190 Db * dbp = (Db *) gs ; 191 DbEnv * vp = dbp -> `g_v (); 194 () `mux_lock (& thad_num_lock ); 195 glob_thad_num ++; 196 thad_num = glob_thad_num ; 197 () `mux_uock (& thad_num_lock ); 200 `d ( thad_num ); 203 i =0; i<50; i++) { 204 DbTxn * txn ; 205 bo y = ue ; 206 y_cou = 0; 208 y ) { 211 y { 225 txn = NULL ; 226 vp -> `txn_beg ( NULL , & txn , 0); 229 j = 0; j < 10; j++) { 230 Dbt key , vue ; 231 key . `t_da ( key_rgs [ j ]); 232 key . `t_size (( u_t32_t ) ` ( key_rgs [ j ]) + 1); 234 yld = `nd (+ i ; 235 vue . `t_da (& yld ); 236 vue . `t_size (()); 239 dbp -> `put ( txn , & key , & vue , 0); 244 d :: cout << thad_num << " : Found " 245 << `couRecds ( dbp , NULL ) 246 << "ecdhdaba." << d :: dl ; 248 d :: cout << thad_num << " : commtgx: " << i 249 << d :: dl ; 252 y { 253 txn -> `comm (0); 254 y = l ; 255 txn = NULL ; 256 } `tch ( DbExi & e ) { 257 d :: cout << "Error onxn commit: " 258 << e . `wh (<< d :: dl ; 260 } `tch ( DbDdlockExi &) { 262 i( txn ! NULL ) 263 () txn -> `abt (); 268 i( y_cou < max_s ) { 269 d :: cout << "############### Wr " << thad_num 272 << d :: dl ; 273 y_cou ++; 274 y = ue ; 277 d :: << "Wr " << thad_num 279 << "s. Givg up." << d :: dl ; 280 y = l ; 282 } `tch ( DbExi & e ) { 283 d :: << "dbued" << std:: dl ; 284 d :: << e . `wh (<< std:: dl ; 285 i( txn ! NULL ) 286 txn -> `abt (); 287 y = l ; 288 } `tch ( d :: exi & ) { 289 d :: << "Unknowexi: " << . `wh (<< std:: dl ; 295 } } 315 $couRecds ( Db * dbp , DbTxn * txn ) 318 Dbc * cursp = NULL ; 319 cou = 0; 321 y { 323 dbp -> `curs ( txn , & cursp , DB_READ_UNCOMMITTED ); 325 Dbt key , vue ; 326 cursp -> `g (& key , & vue , DB_NEXT ) == 0) { 327 cou ++; 329 } `tch ( DbDdlockExi & de ) { 330 d :: << "couRecds: g ddlock" << std:: dl ; 331 cursp -> `o (); 332 throw de ; 333 } `tch ( DbExi & e ) { 334 d :: << "couRecdr:" << std:: dl ; 335 d :: << e . `wh (<< std:: dl ; 338 i( cursp ! NULL ) { 339 y { 340 cursp -> `o (); 341 } `tch ( DbExi & e ) { 342 d :: << "couRecds: curs clo faed:" << std:: dl ; 343 d :: << e . `wh (<< std:: dl ; 347 ( cou ); 348 } } 353 $ݒDb ( Db ** db , cڡ * ogme , cڡ * feName , 354 DbEnv * vp , u_t32_t exaFgs ) 356 t ; 357 u_t32_t ݒFgs ; 359 y { 360 Db * dbp = w `Db ( vp , 0); 363 * db = dbp ; 365 i( exaFgs != 0) 366 t = dbp -> `t_ags ( exaFgs ); 369 ݒFgs = DB_CREATE | 370 DB_READ_UNCOMMITTED | 371 DB_AUTO_COMMIT ; 373 dbp -> `ݒ ( NULL , 374 feName , 375 NULL , 376 DB_BTREE , 377 ݒFgs , 379 } `tch ( DbExi & e ) { 380 d :: << ogme << ": onDb: db oed:" << std:: dl ; 381 d :: << e . `wh (<< std:: dl ; 382 ( EXIT_FAILURE ); 385 ( EXIT_SUCCESS ); 386 } } @../examples_cxx/txn_guide/TxnGuideInMemory.cpp 3 ~<ioam > 4 ~<db_cxx.h > 6 #ifde _WIN32 7 ~<wdows.h > 8 #PATHD '\\' ) 10 gt (, * const *, const *); 11 * ݏrg ; 14 HANDLE tthad_t ; 15 #thad_ ( th , , func , g ) \ 16 (((*( th `CeThad ( NULL , 0, \ 17 ( LPTHREAD_START_ROUTINE )( func ), ( g ), 0, NULL )=NULL? -1 : 0) ) 18 #thad_jo ( thr , u ) \ 19 (( `WaFSgObje (( thr ), INFINITE = WAIT_OBJECT_0 ) && \ 20 `GExCodeThad (( thr ), ( LPDWORD )( u )? 0 : -1) ) 22 HANDLE tmux_t ; 23 #mux_ ( m , ) \ 24 (((*( m `CeMux ( NULL , FALSE , NULL)!NULL? 0 : -1) ) 25 #mux_lock ( m ) \ 26 (( `WaFSgObje (*( m ), INFINITE = WAIT_OBJECT_0 ? 0 : -1) ) 27 #mux_uock ( m ( `RMux (*(m)? 0 : -1) ) 29 ~<had.h > 30 ~<unid.h > 31 #PATHD '/' ) 33 had_t tthad_t ; 34 #thad_ ( th , , func , g ) \ 35 `had_ (( th ), ( ), ( func ), ( g )) ) 36 #thad_jo ( thr , u `had_jo (hr), (u)) ) 38 had_mux_t tmux_t ; 39 #mux_ ( m , `had_mux_ ((m), ()) ) 40 #mux_lock ( m `had_mux_lock (m) ) 41 #mux_uock ( m `had_mux_uock (m) ) 45 #NUMWRITERS 5 ) 49 gglob_thad_num ; 50 mux_t gthad_num_lock ; 53 couRecds ( Db *, DbTxn *); 54 ݒDb ( Db **, cڡ *, cڡ *, DbEnv *, u_t32_t ); 55 uge (); 56 * wrThad (*); 59 $ma () 62 Db * dbp = NULL ; 63 DbEnv * vp = NULL ; 65 thad_t wrThads [ NUMWRITERS ]; 66 i ; 67 u_t32_t vFgs ; 70 cڡ * ogName = "TxnGuideInMemory"; 73 vFgs = 74 DB_CREATE | 75 DB_RECOVER | 76 DB_INIT_LOCK | 77 DB_INIT_LOG | 78 DB_INIT_TXN | 80 DB_INIT_MPOOL | 81 DB_PRIVATE | 83 DB_THREAD ; 85 y { 87 vp = w `DbEnv (0); 90 vp -> `t_ags ( DB_LOG_INMEMORY , 1); 93 vp -> `t_lg_bsize (10 * 1024 * 1024); 96 vp -> `t_chesize (0, 10 * 1024 * 1024, 1); 102 vp -> `t_lk_de ( DB_LOCK_MINWRITE ); 105 vp -> `ݒ ( NULL , vFgs , 0); 113 `ݒDb (& dbp , ogName , NULL , 114 vp , DB_DUPSORT ); 117 () `mux_ (& thad_num_lock , NULL ); 120 i = 0; i < NUMWRITERS ; i++) 121 () `thad_ ( 122 & wrThads [ i ], NULL , 123 wrThad , 124 (*) dbp ); 127 i = 0; i < NUMWRITERS ; i++) 128 () `thad_jo ( wrThads [ i ], NULL ); 130 } `tch ( DbExi & e ) { 131 d :: << "Error opening databasenvironment: " 132 << d :: dl ; 133 d :: << e . `wh (<< std:: dl ; 134 ( EXIT_FAILURE ); 137 y { 139 i( dbp ! NULL ) 140 dbp -> `o (0); 143 i( vp ! NULL ) 144 vp -> `o (0); 145 } `tch ( DbExi & e ) { 146 d :: << "Error closing databasendnvironment." 147 << d :: dl ; 148 d :: << e . `wh (<< std:: dl ; 149 ( EXIT_FAILURE ); 154 d :: cout << "I'm de." << std:: dl ; 155 ( EXIT_SUCCESS ); 156 } } 164 $wrThad (* gs ) 166 j , thad_num ; 167 max_s = 20; 168 * key_rgs [] = {"key 1", "key 2", "key 3", "key 4", 172 Db * dbp = (Db *) gs ; 173 DbEnv * vp = dbp -> `g_v (); 176 () `mux_lock (& thad_num_lock ); 177 glob_thad_num ++; 178 thad_num = glob_thad_num ; 179 () `mux_uock (& thad_num_lock ); 182 `d ( thad_num ); 185 i =0; i<50; i++) { 186 DbTxn * txn ; 187 bo y = ue ; 188 y_cou = 0; 190 y ) { 193 y { 207 txn = NULL ; 208 vp -> `txn_beg ( NULL , & txn , 0); 211 j = 0; j < 10; j++) { 212 Dbt key , vue ; 213 key . `t_da ( key_rgs [ j ]); 214 key . `t_size (( u_t32_t ) ` ( key_rgs [ j ]) + 1); 216 yld = `nd (+ i ; 217 vue . `t_da (& yld ); 218 vue . `t_size (()); 221 dbp -> `put ( txn , & key , & vue , 0); 226 d :: cout << thad_num << " : Found " 227 << `couRecds ( dbp , txn ) 228 << "ecdhdaba." << d :: dl ; 230 d :: cout << thad_num << " : commtgx: " << i 231 << d :: dl ; 234 y { 235 txn -> `comm (0); 236 y = l ; 237 txn = NULL ; 238 } `tch ( DbExi & e ) { 239 d :: cout << "Error onxn commit: " 240 << e . `wh (<< d :: dl ; 242 } `tch ( DbDdlockExi &) { 244 i( txn ! NULL ) 245 () txn -> `abt (); 250 i( y_cou < max_s ) { 251 d :: << "############### Wr " << thad_num 253 << "Rryg wrݔi." << d :: dl ; 254 y_cou ++; 255 y = ue ; 258 d :: << "Wr " << thad_num 260 << "s. Givg up." << d :: dl ; 261 y = l ; 263 } `tch ( DbExi & e ) { 264 d :: << "dbued" << std:: dl ; 265 d :: << e . `wh (<< std:: dl ; 266 i( txn ! NULL ) 267 txn -> `abt (); 268 y = l ; 269 } `tch ( d :: exi & ) { 270 d :: << "Unknowexi: " << . `wh (<< std:: dl ; 276 } } 297 $couRecds ( Db * dbp , DbTxn * txn ) 300 Dbc * cursp = NULL ; 301 cou = 0; 303 y { 305 dbp -> `curs ( txn , & cursp , 0); 307 Dbt key , vue ; 308 cursp -> `g (& key , & vue , DB_NEXT ) == 0) { 309 cou ++; 311 } `tch ( DbDdlockExi & de ) { 312 d :: << "couRecds: g ddlock" << std:: dl ; 313 cursp -> `o (); 314 throw de ; 315 } `tch ( DbExi & e ) { 316 d :: << "couRecdr:" << std:: dl ; 317 d :: << e . `wh (<< std:: dl ; 320 i( cursp ! NULL ) { 321 y { 322 cursp -> `o (); 323 } `tch ( DbExi & e ) { 324 d :: << "couRecds: curs clo faed:" << std:: dl ; 325 d :: << e . `wh (<< std:: dl ; 329 ( cou ); 330 } } 335 $ݒDb ( Db ** db , cڡ * ogme , cڡ * feName , 336 DbEnv * vp , u_t32_t exaFgs ) 338 t ; 339 u_t32_t ݒFgs ; 341 y { 342 Db * dbp = w `Db ( vp , 0); 345 * db = dbp ; 347 i( exaFgs != 0) 348 t = dbp -> `t_ags ( exaFgs ); 351 ݒFgs = DB_CREATE | 352 DB_THREAD | 353 DB_AUTO_COMMIT ; 355 dbp -> `ݒ ( NULL , 356 feName , 357 NULL , 358 DB_BTREE , 359 ݒFgs , 361 } `tch ( DbExi & e ) { 362 d :: << ogme << ": onDb: db oed:" << std:: dl ; 363 d :: << e . `wh (<< std:: dl ; 364 ( EXIT_FAILURE ); 367 ( EXIT_SUCCESS ); 368 } } @../examples_cxx/wce_tpcb/TpcbExample.cpp 2 ~"TpcbExame.h " 4 #HISTORY_LEN 100 ) 5 #RECLEN 100 ) 6 #BEGID 1000000 ) 8 sDeec { 9 u_t32_t mid ; 10 u_t32_t mb ; 11 u_t8_t md [ RECLEN - ( u_t32_t ) - (u_int32_t)]; 14 sHic { 15 u_t32_t maid ; 16 u_t32_t mbid ; 17 u_t32_t mtid ; 18 u_t32_t mamou ; 19 u_t8_t md [ RECLEN - 4 * ( u_t32_t )]; 22 cڡ * gogme = "wce_tpcb"; 24 gTpcbExame :: $TpcbExame () 25 : `dbv (0), `accous ( ACCOUNTS ), `bnches ( BRANCHES ), 26 `Δs ( TELLERS ), `hiy ( HISTORY ), `_mode (1), `vbo (0), 27 $chesize (0) 29 nd_ed = `GTickCou (); 30 `tHomeD ( TESTDIR ); 31 } } 33 gTpcbExame :: $Env ( ags ) 35 t ; 36 u_t32_t lol_ags ; 41 i( dbv ! NULL ) 42 `oEnv (); 44 `d ( nd_ed ); 46 i(( t = `db_v_ (& dbv , 0)) != 0) { 47 `_tf ( msgSg , ERR_STRING_MAX , 48 "%s: db_v_: %s\n", ogme , `db_ ( t )); 51 dbv -> `t_r (dbv, & cb_rback ); 52 dbv -> `t_fx (dbenv, "TpcbExample"); 53 dbv -> `t_chesize (dbv, 0, chesize == 0 ? 54 1 * 1024 * 1024 : ( u_t32_t ) chesize , 0); 56 i( _mode ) 57 dbv -> `t_ags (dbv, DB_TXN_NOSYNC , 1); 59 lol_ags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 60 DB_INIT_MPOOL | DB_INIT_TXN ; 61 dbv -> `ݒ (dbv, homeDName , lol_ags , 0); 63 } } 65 gTpcbExame :: $oEnv () 67 i( dbv ! NULL ) { 68 dbv -> `o (dbenv, 0); 69 dbv = 0; 71 } } 78 gTpcbExame :: $puϋ () 80 DB * dbp ; 82 r ; 83 u_t32_t b , idnum ; 84 u_t32_t d_um , d_bnum , d_um ; 85 u_t32_t t_um , t_bnum , t_um ; 87 idnum = BEGID ; 88 b = 500000; 90 i(( r = `db_ (& dbp , dbv , 0)) != 0) { 91 `_tf ( msgSg , ERR_STRING_MAX , 95 dbp -> `t_h_m (dbp, () accous ); 97 i(( r = dbp -> `ݒ (dbp, NULL , "accou", NULL, DB_HASH , 98 DB_CREATE , 0644)) != 0) { 99 `_tf ( msgSg , ERR_STRING_MAX , 100 "Accou f faed.: %s.", `db_ ( r )); 104 t_um = idnum ; 105 i(( r = 106 `puϋTab ( dbp , idnum , b , accous , "account")) != 0) 108 idnum + accous ; 109 d_um = idnum - 1; 110 i(( r = dbp -> `o (dbp, 0)) != 0) { 111 `_tf ( msgSg , ERR_STRING_MAX , 112 "Accou fo faed.: %s.", `db_ ( r )); 116 i(( r = `db_ (& dbp , dbv , 0)) != 0) { 117 `_tf ( msgSg , ERR_STRING_MAX , 126 dbp -> `t_h_f (dbp, 1); 127 dbp -> `t_h_m (dbp, () bnches ); 128 dbp -> `t_gesize (dbp, 512); 130 i(( r = dbp -> `ݒ (dbp, NULL , "bnch", NULL, DB_HASH , 131 DB_CREATE , 0644)) != 0) { 132 `_tf ( msgSg , ERR_STRING_MAX , 133 "Bnch f faed.: %s.", `db_ ( r )); 136 t_bnum = idnum ; 137 i(( r = `puϋTab ( dbp , idnum , b , bnches , "branch")) != 0) 139 idnum + bnches ; 140 d_bnum = idnum - 1; 141 i(( r = dbp -> `o (dbp, 0)) != 0) { 142 `_tf ( msgSg , ERR_STRING_MAX , 144 `db_ ( r )); 148 i(( r = `db_ (& dbp , dbv , 0)) != 0) { 149 `_tf ( msgSg , ERR_STRING_MAX , 157 dbp -> `t_h_f (dbp, 0); 158 dbp -> `t_h_m (dbp, () Δs ); 159 dbp -> `t_gesize (dbp, 512); 161 i(( r = dbp -> `ݒ (dbp, NULL , "Δ", NULL, DB_HASH , 162 DB_CREATE , 0644)) != 0) { 163 `_tf ( msgSg , ERR_STRING_MAX , 164 "T˸f faed.: %s.", `db_ ( r )); 168 t_um = idnum ; 169 i(( r = `puϋTab ( dbp , idnum , b , Δs , "teller")) != 0) 171 idnum + Δs ; 172 d_um = idnum - 1; 173 i(( r = dbp -> `o (dbp, 0)) != 0) { 174 `_tf ( msgSg , ERR_STRING_MAX , 176 `db_ ( r )); 180 i(( r = `db_ (& dbp , dbv , 0)) != 0) { 181 `_tf ( msgSg , ERR_STRING_MAX , 185 dbp -> `t__n (dbp, HISTORY_LEN ); 186 i(( r = dbp -> `ݒ (dbp, NULL , "hiy", NULL, DB_RECNO , 187 DB_CREATE , 0644)) != 0) { 188 `_tf ( msgSg , ERR_STRING_MAX , 190 `db_ ( r )); 194 `puϋHiy ( dbp , hiy , accous , bnches , Δs ); 195 i(( r = dbp -> `o (dbp, 0)) != 0) { 196 `_tf ( msgSg , ERR_STRING_MAX , 198 `db_ ( r )); 202 `_tf ( msgSg , ERR_STRING_MAX , "Populated OK."); 204 } } 207 gTpcbExame :: $puϋTab ( DB * dbp , 208 u_t32_t t_id , u_t32_ b , 209 ecs , cڡ * msg ) 211 DBT kdbt , ddbt ; 212 Deec dc ; 213 `memt (& dc . d [0], 1, (drec.pad)); 215 `memt (& kdbt , 0, (kdbt)); 216 `memt (& ddbt , 0, (ddbt)); 217 kdbt . da = & dc . id ; 218 kdbt . size = ( u_t32_t ); 219 ddbt . da = & dc ; 220 ddbt . size = ( dc ); 222 i = 0; i < ecs ; i++) { 223 dc . id = t_id + ( u_t32_t ) i ; 224 dc . b = balance; 225 r ; 226 i(( r = 227 dbp -> `put (dbp, NULL , & kdbt , & ddbt , DB_NOOVERWRITE )) != 0) { 228 `_tf ( msgSg , ERR_STRING_MAX , 230 msg , `db_ ( r )); 235 } } 238 gTpcbExame :: $puϋHiy ( DB * dbp , ecs , u_t32_t accous , 239 u_t32_t bnches , u_t32_ Δs ) 241 DBT kdbt , ddbt ; 242 Hic hc ; 243 `memt (& hc . d [0], 1, (hrec.pad)); 244 hc . amou = 10; 245 db_o_t key ; 247 `memt (& kdbt , 0, (kdbt)); 248 `memt (& ddbt , 0, (ddbt)); 249 kdbt . da = & key ; 250 kdbt . size = ( u_t32_t ); 251 ddbt . da = & hc ; 252 ddbt . size = ( hc ); 254 i = 1; i < ecs ; i++) { 255 hc . aid = `ndomId ( ACCOUNT , accous , bnches , Δs ); 256 hc . bid = `ndomId ( BRANCH , accous , bnches , Δs ); 257 hc . tid = `ndomId ( TELLER , accous , bnches , Δs ); 259 r ; 260 key = ( db_o_t ) i ; 261 i(( r = dbp -> `put (dbp, NULL , & kdbt , & ddbt , DB_APPEND )) != 0) { 262 `_tf ( msgSg , ERR_STRING_MAX , 264 `db_ ( r )); 269 } } 272 gTpcbExame :: $run ( n ) 274 DB * adb , * bdb , * hdb , * tdb ; 275 ed , t , txns ; 276 DWORD t_time , d_time ; 277 d_cs ; 283 r ; 284 i(( r = `db_ (& adb , dbv , 0)) != 0) { 285 `_tf ( msgSg , ERR_STRING_MAX , 287 `db_ ( r )); 290 i(( r = adb -> `ݒ db, NULL , "accou", NULL, DB_UNKNOWN , 291 DB_AUTO_COMMIT , 0)) != 0) { 292 `_tf ( msgSg , ERR_STRING_MAX , 293 "Ooaccou fed. E: %s", `db_ ( r )); 297 i(( r = `db_ (& bdb , dbv , 0)) != 0) { 298 `_tf ( msgSg , ERR_STRING_MAX , 300 `db_ ( r )); 303 i(( r = bdb -> `ݒ (bdb, NULL , "bnch", NULL, DB_UNKNOWN , 304 DB_AUTO_COMMIT , 0)) != 0) { 305 `_tf ( msgSg , ERR_STRING_MAX , 306 "Oobnch fed. E: %s", `db_ ( r )); 310 i(( r = `db_ (& tdb , dbv , 0)) != 0) { 311 `_tf ( msgSg , ERR_STRING_MAX , 313 `db_ ( r )); 316 i(( r = tdb -> `ݒ db, NULL , "Δ", NULL, DB_UNKNOWN , 317 DB_AUTO_COMMIT , 0)) != 0) { 318 `_tf ( msgSg , ERR_STRING_MAX , 319 "OoΔ fed. E: %s", `db_ ( r )); 323 i(( r = `db_ (& hdb , dbv , 0)) != 0) { 324 `_tf ( msgSg , ERR_STRING_MAX , 326 `db_ ( r )); 329 i(( r = hdb -> `ݒ (hdb, NULL , "hiy", NULL, DB_UNKNOWN , 330 DB_AUTO_COMMIT , 0)) != 0) { 331 `_tf ( msgSg , ERR_STRING_MAX , 332 "Oohiy fed. E: %s", `db_ ( r )); 336 t_time = `GTickCou (); 337 txns = n , ed = 0;-- > 0;) 338 i(( t = `txn ( adb , bdb , tdb , hdb , 339 accous , bnches , Δs )) != 0) 340 ++ ed ; 341 d_time = `GTickCou (); 342 i( d_time = t_time ) 343 ++ d_time ; 344 #MILLISECS_PER_SEC 1000 ) 345 d_cs = ()(( d_time - t_time ))/ MILLISECS_PER_SEC ; 346 `_tf ( msgSg , ERR_STRING_MAX , 347 "%s: %dxns: %d faed, %.2TPS\n", ogme , txns , ed , 348 ( txns - ed / d_cs ); 350 () adb -> `o (adb, 0); 351 () bdb -> `o (bdb, 0); 352 () tdb -> `o (tdb, 0); 353 () hdb -> `o (hdb, 0); 356 } } 362 gTpcbExame :: $txn ( DB * adb , DB * bdb , DB * tdb , DB * hdb , 363 accous , bnches , Δs ) 365 DBC * acurs , * bcurs , * tcurs ; 366 DB_TXN * t ; 367 DBT d_dbt , d_hidbt , k_dbt , k_hidbt ; 369 db_o_t key ; 370 Deec c ; 371 Hic hc ; 372 accou , bnch , Δ , t ; 374 `memt (& d_dbt , 0, (d_dbt)); 375 `memt (& d_hidbt , 0, (d_histdbt)); 376 `memt (& k_dbt , 0, (k_dbt)); 377 `memt (& k_hidbt , 0, (k_histdbt)); 378 k_hidbt . da = & key ; 379 k_hidbt . size = ( key ); 385 accou = `ndomId ( ACCOUNT , accous , bnches , Δs ); 386 bnch = `ndomId ( BRANCH , accous , bnches , Δs ); 387 Δ = `ndomId ( TELLER , accous , bnches , Δs ); 389 k_dbt . size = (); 391 d_dbt . ags | DB_DBT_USERMEM ; 392 d_dbt . da = & c ; 393 d_dbt . un = ( c ); 395 hc . aid = accou ; 396 hc . bid = bnch ; 397 hc . tid = Δ ; 398 hc . amou = 10; 400 d_hidbt . ags | DB_DBT_PARTIAL ; 408 i( dbv -> `txn_beg (dbv, NULL , & t , 0) != 0) 409 r ; 411 i( adb -> `curs db, t , & acurs , 0) != 0 || 412 bdb -> `curs (bdb, t , & bcurs , 0) != 0 || 413 tdb -> `curs db, t , & tcurs , 0) != 0) 414 r ; 417 k_dbt . da = & accou ; 418 i( acurs -> `g curs, & k_dbt , & d_dbt , DB_SET ) != 0) 419 r ; 420 c . b += 10; 421 i( acurs -> `put curs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 422 r ; 425 k_dbt . da = & bnch ; 426 i( bcurs -> `g (bcurs, & k_dbt , & d_dbt , DB_SET ) != 0) 427 r ; 428 c . b += 10; 429 i( bcurs -> `put (bcurs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 430 r ; 433 k_dbt . da = & Δ ; 434 i( tcurs -> `g curs, & k_dbt , & d_dbt , DB_SET ) != 0) 435 r ; 436 c . b += 10; 437 i( tcurs -> `put curs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 438 r ; 441 d_hidbt . ags = 0; 442 d_hidbt . da = & hc ; 443 d_hidbt . un = ( hc ); 444 i( hdb -> `put (hdb, t , & k_hidbt , & d_hidbt , DB_APPEND ) != 0) 445 r ; 447 i( acurs -> `o curs!0 || bcurs ->close(bcurs) != 0 448 || tcurs -> `o (tcurs) != 0) 449 r ; 451 t = t -> `comm (t, 0); 452 t = NULL ; 453 i( t != 0) 454 r ; 459 r : 460 i( acurs ! NULL ) 461 () acurs -> `o (acurs); 462 i( bcurs ! NULL ) 463 () bcurs -> `o (bcurs); 464 i( tcurs ! NULL ) 465 () tcurs -> `o (tcurs); 466 i( t ! NULL ) 467 () t -> `abt (t); 470 } } 474 u_t32_t 475 gTpcbExame :: $ndomI ( u_t32_t lo , u_t32_ hi ) 477 u_t32_t t ; 478 t ; 480 t = `nd (); 481 t = ( u_t32_t )((() t / (()( RAND_MAX ) + 1)) * 482 ( hi - lo + 1)); 483 t + lo ; 484 ( t ); 485 } } 487 u_t32_t 488 gTpcbExame :: $ndomId ( FTYPE ty , u_t32_t accous , 489 u_t32_t bnches , u_t32_ Δs ) 491 u_t32_t m , max , num ; 493 max = m = BEGID ; 494 num = accous ; 495 ty ) { 496 TELLER : 497 m + bnches ; 498 num = Δs ; 500 BRANCH : 501 i( ty = BRANCH ) 502 num = bnches ; 503 m + accous ; 505 ACCOUNT : 506 max = m + num - 1; 508 ( `ndomI ( m , max )); 509 } } 512 gTpcbExame :: $gHomeD (* th , max ) 514 `memy ( th , homeDName , `m ( max , MAX_PATH )); 515 th ; 516 } } 518 wch_t * 519 gTpcbExame :: $gHomeDW ( wch_t * th , max ) 521 `memy ( th , wHomeDName , `m ( max , MAX_PATH )*( wch_t )); 522 th ; 523 } } 526 gTpcbExame :: $tHomeD (* th ) 528 th_n ; 530 th_n = ` ( th ); 531 `y ( homeDName , th , MAX_PATH ); 532 `MuiByToWideCh ( CP_ACP , 0, th , th_n , wHomeDName , MAX_PATH ); 533 wHomeDName [ th_n ] = L '\0'; 534 } } 537 gTpcbExame :: $tHomeDW ( wch_t * th ) 539 th_n ; 541 th_n = `wc ( th ); 542 `wcy ( wHomeDName , th , MAX_PATH ); 543 `WideChToMuiBy ( CP_ACP , 0, th , th_n , homeDName , 544 MAX_PATH , 0, 0); 545 homeDName [ th_n ] = '\0'; 546 } } @../examples_cxx/wce_tpcb/TpcbUI.cpp 4 ~<wdows.h > 5 ~"sour.h " 6 ~"TpcbExame.h " 7 ~<comm.h > 9 #MAX_LOADSTRING 100 ) 12 HINSTANCE ghIn ; 13 HWND ghWndDlgMa ; 14 HWND ghWndFme ; 15 TpcbExame * gcb ; 18 ATOM MyRegiCss ( HINSTANCE , LPTSTR ); 19 BOOL InIn ( HINSTANCE , ); 20 LRESULT CALLBACK WndProc ( HWND , UINT , WPARAM , LPARAM ); 21 LRESULT CALLBACK MaDlog ( HWND , UINT , WPARAM , LPARAM ); 22 LRESULT CALLBACK InDlog ( HWND , UINT , WPARAM , LPARAM ); 23 LRESULT CALLBACK AdvdDlog ( HWND , UINT , WPARAM , LPARAM ); 24 LRESULT CALLBACK RunDlog ( HWND , UINT , WPARAM , LPARAM ); 25 BOOL GHomeDey ( HWND , BOOL); 26 BOOL RecursiveDRemove ( wch_t *); 28 WINAPI $WMa HINSTANCE hIn , 29 HINSTANCE hPvIn , 30 LPTSTR CmdLe , 31 nCmdShow ) 33 MSG msg ; 34 HACCEL hAclTab ; 36 hWndDlgMa = NULL ; 38 cb = w `TpcbExame (); 41 i(! `InIn ( hIn , nCmdShow )) 43 FALSE ; 46 hAclTab = `LdAc˿ts ( hIn , ( LPCTSTR ) IDC_WCE_TPCB ); 49 `GMesge (& msg , NULL , 0, 0)) 51 i(! `TneAc˿t ( msg . hwnd , hAclTab , &msg)) 53 `TneMesge (& msg ); 54 `DichMesge (& msg ); 58 msg . wPam ; 59 } } 71 ATOM $MyRegiCss ( HINSTANCE hIn , LPTSTR szWdowCss ) 73 WNDCLASS wc ; 75 wc . y = CS_HREDRAW | CS_VREDRAW ; 76 wc . WndProc = ( WNDPROC WndProc ; 77 wc . cbClsExa = 0; 78 wc . cbWndExa = 0; 79 wc . hIn = hInstance; 80 wc . hIc = `LdIc ( hIn , `MAKEINTRESOURCE ( IDI_WCE_TPCB )); 81 wc . hCurs = 0; 82 wc . hbrBackground = ( HBRUSH `GStockObje ( WHITE_BRUSH ); 83 wc . szMuName = 0; 84 wc . szCssName = szWdowCss ; 86 `RegiCss (& wc ); 87 } } 99 BOOL $InIn ( HINSTANCE hIn , nCmdShow ) 101 TCHAR szT [ MAX_LOADSTRING ]; 102 TCHAR szWdowCss [ MAX_LOADSTRING ]; 104 hIn = hIn ; 106 `LdSg ( hIn , IDC_WCE_TPCB , szWdowCss , MAX_LOADSTRING ); 107 `MyRegiCss ( hIn , szWdowCss ); 108 `LdSg ( hIn , IDS_APP_TITLE , szT , MAX_LOADSTRING ); 110 hWndFme = `CeWdow ( szWdowCss , szT , 111 WS_VISIBLE | WS_MINIMIZEBOX , CW_USEDEFAULT , CW_USEDEFAULT, 112 CW_USEDEFAULT , CW_USEDEFAULT, NULL , NULL, hIn , NULL); 114 i(! hWndFme ) 116 FALSE ; 119 `ShowWdow ( hWndDlgMa , nCmdShow ); 120 `UpdeWdow ( hWndDlgMa ); 122 TRUE ; 123 } } 134 LRESULT CALLBACK $WndProc ( HWND hWnd , UINT mesge , WPARAM wPam , LPARAM lPam ) 136 HWND hDlg ; 138 mesge ) 140 WM_COMMAND : 141 `DefWdowProc ( hWnd , mesge , wPam , lPam ); 143 WM_CREATE : 144 hDlg = `CeDlog ( hIn , 145 `MAKEINTRESOURCE ( IDD_MAINDIALOG ), hWnd , 146 ( DLGPROC ) MaDlog ); 148 WM_DESTROY : 149 `PoQuMesge (0); 152 `DefWdowProc ( hWnd , mesge , wPam , lPam ); 155 } } 158 LRESULT CALLBACK $MaDlog ( HWND hDlg , UINT mesge , WPARAM wPam , LPARAM lPam ) 160 RECT ; 161 HWND hCutRadioBu ; 162 wch_t wdme [ MAX_PATH ], msg [1024], * t ; 163 t , vid , xns , wrn ; 165 mesge ) 167 WM_INITDIALOG : 169 `GClRe ( `GPt ( hDlg ), & ); 170 `SWdowPos ( hDlg , HWND_TOP , 0, 0, . right ,t. btom , 171 SWP_SHOWWINDOW ); 172 `CheckRadioBu ( hDlg , IDC_MEDIUM_RADIO , 173 IDC_SMALL_RADIO , IDC_SMALL_RADIO); 174 `SDlgImText ( hDlg , IDC_HOME_EDIT , 175 cb -> `gHomeDW ( wdme , MAX_PATH )); 176 `SDlgImI ( hDlg , IDC_TXN_EDIT , 1000, 0); 178 `SWdowText ( hDlg , L "BDB TPCB Examplepp"); 179 `ShowWdow ( hDlg , SW_SHOWNORMAL ); 180 TRUE ; 181 WM_COMMAND : 182 i( `LOWORD ( wPam = IDC_INIT_BUTTON || 183 `LOWORD ( wPam = IDC_RUN_BUTTON ) { 184 hCutRadioBu = `GDlgIm ( hDlg , 185 IDC_SMALL_RADIO ); 186 if( BST_CHECKED == 187 `SdMesge ( hCutRadioBu , 188 BM_GETCHECK , NULL , NULL)) { 189 cb -> accous = 500; 190 cb -> bnches = 10; 191 cb -> Δs = 50; 192 cb -> hiy = 5000; 194 hCutRadioBu = `GDlgIm ( hDlg , 195 IDC_MEDIUM_RADIO ); 196 if( BST_CHECKED == 197 `SdMesge ( hCutRadioBu , 198 BM_GETCHECK , NULL , NULL)) { 199 cb -> accous = 1000; 200 cb -> bnches = 10; 201 cb -> Δs = 100; 202 cb -> hiy = 10000; 204 hCutRadioBu = `GDlgIm ( hDlg , 205 IDC_LARGE_RADIO ); 206 if( BST_CHECKED == 207 `SdMesge ( hCutRadioBu , 208 BM_GETCHECK , NULL , NULL)) { 209 cb -> accous = 100000; 210 cb -> bnches = 10; 211 cb -> Δs = 100; 212 cb -> hiy = 259200; 214 `EbWdow ( `GDlgIm ( hDlg , IDC_INIT_BUTTON ), 215 FALSE ); 216 `EbWdow ( `GDlgIm ( hDlg , IDC_RUN_BUTTON ), 217 FALSE ); 218 `EbWdow ( `GDlgIm ( hDlg , IDC_ADV_BUTTON ), 219 FALSE ); 221 i( `LOWORD ( wPam = IDC_ADV_BUTTON ) { 222 `CeDlog ( hIn , 223 `MAKEINTRESOURCE ( IDD_ADVANCEDDIALOG ), hDlg , 224 ( DLGPROC ) AdvdDlog ); 225 } i( `LOWORD ( wPam = IDC_INIT_BUTTON ) { 228 cb -> `oEnv (); 229 `GHomeDey ( hDlg , TRUE ); 230 cb -> `Env (0); 231 t = cb -> `puϋ (); 232 } i( `LOWORD ( wPam = IDC_RUN_BUTTON ) { 233 `GHomeDey ( hDlg , FALSE ); 234 i( `GFeAribus ( 235 cb -> `gHomeDW ( wdme , MAX_PATH )) != 236 FILE_ATTRIBUTE_DIRECTORY ) { 237 `_wtf ( msg , 1024, 238 L "Target directory: %s doesotxist, or isot directory.\nMake surehe " 239 L "directoryame is correct,ndhat youanhe initializationhase.", 240 wdme ); 241 `MesgeBox ( hDlg , msg , L "E", MB_OK ); 242 `EbWdow ( `GDlgIm ( hDlg , 243 IDC_INIT_BUTTON ), TRUE ); 244 `EbWdow ( `GDlgIm ( hDlg , 245 IDC_RUN_BUTTON ), TRUE ); 246 `EbWdow ( `GDlgIm ( hDlg , 247 IDC_ADV_BUTTON ), TRUE ); 248 FALSE ; 251 xns = `GDlgImI ( hDlg , IDC_TXN_EDIT , 252 & vid , FALSE ); 253 i( vid = FALSE ) { 254 `MesgeBox ( hDlg , 255 L "Invalidumber inransaction field.", 256 L "E", MB_OK ); 257 `EbWdow ( `GDlgIm ( hDlg , 258 IDC_INIT_BUTTON ), TRUE ); 259 `EbWdow ( `GDlgIm ( hDlg , 260 IDC_RUN_BUTTON ), TRUE ); 261 `EbWdow ( `GDlgIm ( hDlg , 262 IDC_ADV_BUTTON ), TRUE ); 263 FALSE ; 265 cb -> `Env (0); 266 t = cb -> `run ( xns ); 267 } i( `LOWORD ( wPam = IDC_EXIT_BUTTON ) { 268 cb -> `oEnv (); 269 `EndDlog ( hDlg , `LOWORD ( wPam )); 270 `DeroyWdow ( hDlg ); 271 `DeroyWdow ( hWndFme ); 272 FALSE ; 274 i( `LOWORD ( wPam = IDC_INIT_BUTTON || 275 `LOWORD ( wPam = IDC_RUN_BUTTON ) { 276 i( t == 0) 277 t = L "Results"; 279 t = L "Error message"; 280 wrn = `MuiByToWideCh ( CP_ACP , NULL , 281 cb -> msgSg , ` (tpcb->msgString), 282 msg , (msg)/(msg[0])); 283 msg [ wrn ] = L '\0'; 284 `MesgeBox ( hDlg , msg , t , MB_OK ); 285 `EbWdow ( `GDlgIm ( hDlg , IDC_INIT_BUTTON ), TRUE ); 286 `EbWdow ( `GDlgIm ( hDlg , IDC_RUN_BUTTON ), 287 TRUE ); 288 `EbWdow ( `GDlgIm ( hDlg , IDC_ADV_BUTTON ), 289 TRUE ); 292 WM_DESTROY : 294 cb -> `oEnv (); 295 `EndDlog ( hDlg , `LOWORD ( wPam )); 296 `DeroyWdow ( hDlg ); 297 `DeroyWdow ( hWndFme ); 298 FALSE ; 300 `DefWdowProc ( hDlg , mesge , wPam , lPam ); 302 TRUE ; 303 } } 306 LRESULT CALLBACK $AdvdDlog ( HWND hDlg , UINT mesge , 307 WPARAM wPam , LPARAM lPam ) 309 RECT ; 310 HWND hCutCheckBox ; 311 cutI , vid ; 313 mesge ) 315 WM_INITDIALOG : 316 `GClRe ( `GPt ( hDlg ), & ); 317 `SWdowPos ( hDlg , HWND_TOP , 0, 0, . right ,t. btom , 318 SWP_SHOWWINDOW ); 319 i( cb -> _mode == 0) { 320 hCutCheckBox = 321 `GDlgIm ( hDlg , IDC_FASTMODE_CHECK ); 322 `SdMesge ( hCutCheckBox , BM_SETCHECK , 323 BST_CHECKED , 0); 325 i( cb -> vbo == 1) { 326 hCutCheckBox = 327 `GDlgIm ( hDlg , IDC_VERBOSE_CHECK ); 328 `SdMesge ( hCutCheckBox , BM_SETCHECK , 329 BST_CHECKED , 0); 331 i( cb -> chesize != 0) { 332 `SDlgImI ( hDlg , IDC_CACHE_EDIT , 333 cb -> chesize /1024, FALSE ); 336 WM_COMMAND : 337 i( `LOWORD ( wPam = IDC_DONE_BUTTON ) { 338 hCutCheckBox = 339 `GDlgIm ( hDlg , IDC_FASTMODE_CHECK ); 340 if( BST_CHECKED = `SdMesge ( hCutCheckBox , 341 BM_GETCHECK , NULL , NULL)) 342 cb -> _mode = 0; 344 cb -> _mode = 1; 345 hCutCheckBox = 346 `GDlgIm ( hDlg , IDC_VERBOSE_CHECK ); 347 if( BST_CHECKED = `SdMesge ( hCutCheckBox , 348 BM_GETCHECK , NULL , NULL)) 349 cb -> vbo = 1; 351 cb -> vbo = 0; 352 cutI = `GDlgImI ( hDlg , 353 IDC_RANDOM_EDIT , & vid , FALSE ); 354 i( vid ! FALSE ) 355 cb -> nd_ed = cutI ; 356 cutI = `GDlgImI ( hDlg , 357 IDC_CACHE_EDIT , & vid , FALSE ); 358 i( vid ! FALSE ) { 359 i( cutI < 20) { 360 `MesgeBox ( hDlg , 361 L "Min cache size is 20kb.", 362 L "E", MB_OK ); 363 FALSE ; 365 cb -> chesize = cutI *1024; 367 `EndDlog ( hDlg , `LOWORD ( wPam )); 368 `DeroyWdow ( hDlg ); 372 `DefWdowProc ( hDlg , mesge , wPam , lPam ); 374 TRUE ; 375 } } 380 BOOL 381 $GHomeDey ( HWND hDlg , BOOL ) 383 wch_t wdme [ MAX_PATH ]; 384 DWORD s ; 386 i( `GDlgImText ( hDlg , IDC_HOME_EDIT , wdme , MAX_PATH ) == 0) 387 cb -> `tHomeD ( TESTDIR ); 389 cb -> `tHomeDW ( wdme ); 391 i( = TRUE ) { 393 cb -> `gHomeDW ( wdme , MAX_PATH ); 396 s = `GFeAribus ( wdme ); 397 i( s = FILE_ATTRIBUTE_DIRECTORY ) 398 `RecursiveDRemove ( wdme ); 399 i( s = FILE_ATTRIBUTE_NORMAL ) 400 `DeFe ( wdme ); 401 i( s != 0xFFFFFFFF) { 404 FALSE ; 408 `CeDey ( wdme , NULL ); 410 TRUE ; 411 } } 413 BOOL 414 $RecursiveDRemove ( wch_t * dme ) 416 HANDLE hFd ; 417 WIN32_FIND_DATA fdFeDa ; 419 wch_t DPh [ MAX_PATH ]; 420 wch_t FeName [ MAX_PATH ]; 422 `wcsy ( DPh , dme ); 423 `wcst ( DPh , L "\\*"); 424 `wcsy ( FeName , dme ); 425 `wcst ( FeName , L "\\"); 427 `MesgeBox ( hWndDlgMa , L "C˪g dey.", L"Mesge", MB_OK ); 429 i(( hFd = `FdFFe ( DPh ,& fdFeDa )) == 430 INVALID_HANDLE_VALUE ) 431 FALSE ; 433 `wcsy ( DPh , FeName ); 434 `MesgeBox ( hWndDlgMa , L "Found files in directory.", 435 L "Mesge", MB_OK ); 437 bo bSrch = ue ; 440 `wcsy ( FeName + `wc ( DPh ), fdFeDa . cFeName ); 441 i( fdFeDa . dwFeAribus & FILE_ATTRIBUTE_DIRECTORY ) 444 i(! `RecursiveDRemove ( FeName )) 447 i( fdFeDa . dwFeAribus & 448 FILE_ATTRIBUTE_READONLY ) 449 `SFeAribus ( fdFeDa . cFeName , 450 FILE_ATTRIBUTE_NORMAL ); 451 i(! `DeFe ( FeName )) { 452 `MesgeBox ( hWndDlgMa , L "Delete failed.", 453 L "Mesge", MB_OK ); 457 } `FdNextFe ( hFd ,& fdFeDa )); 459 `FdClo ( hFd ); 460 `RemoveDey ( dme ); 461 } } 468 cb_rback (cڡ DB_ENV *, cڡ * fx , cڡ * rr ) 470 wch_t wr [ ERR_STRING_MAX ]; 471 memt ( wr , 0, (wstr)); 472 MuiByToWideCh ( CP_ACP , 0, rr , (errstr), 473 wr , ERR_STRING_MAX -1); 474 MesgeBox ( hWndDlgMa , wr , L "E Mesge", MB_OK ); 475 ex (1); @../examples_cxx/wce_tpcb/wce_tpcb.rc 3 ~"sour.h " 5 #APSTUDIO_READONLY_SYMBOLS ) 10 ~"ws.h " 13 #unde APSTUDIO_READONLY_SYMBOLS 18 #i! defed ( AFX_RESOURCE_DLL || defed( AFX_TARG_ENU ) 19 #ifde _WIN32 20 LANGUAGE gLANG_ENGLISH , gSUBLANG_ENGLISH_US 21 #agm code_ge (1252) 31 IDI_WCE_TPCB ICON gDISCARDABLE "wce_tpcb.ICO" 33 #ifde APSTUDIO_INVOKED 39 1 TEXTINCLUDE DISCARDABLE 40 gBEGIN 42 gEND 44 2 TEXTINCLUDE DISCARDABLE 45 gBEGIN 48 gEND 50 3 TEXTINCLUDE DISCARDABLE 51 gBEGIN 54 gEND 64 IDD_MAINDIALOG DIALOG gDISCARDABLE 0, 0, 138, 182 65 STYLE gDS_MODALFRAME | gWS_CAPTION | WS_SYSMENU 66 gCAPTION "Berkeley DB TPCB" 67 gFONT 8, "System" 68 BEGIN 69 gPUSHBUTTON "Inlize", gIDC_INIT_BUTTON ,8,77,50,14 70 gPUSHBUTTON "Advd...", gIDC_ADV_BUTTON ,78,76,50,14 71 gPUSHBUTTON "Run...", gIDC_RUN_BUTTON ,77,94,50,14 72 gCONTROL "Medium", gIDC_MEDIUM_RADIO ,"Bu", gBS_AUTORADIOBUTTON ,51, 74 gCONTROL "Lge", gIDC_LARGE_RADIO ,"Bu", gBS_AUTORADIOBUTTON ,95, 76 gCONTROL "Sml", gIDC_SMALL_RADIO ,"Bu", gBS_AUTORADIOBUTTON ,14, 78 gLTEXT "HomD:", gIDC_STATIC ,7,62,32,8 79 EDITTEXT gIDC_HOME_EDIT ,39,59,89,14, ES_AUTOHSCROLL 80 gGROUPBOX "Bchmk dvume", gIDC_STATIC ,7,35,123,22 81 gLTEXT "#xns:", gIDC_STATIC ,8,96,25,8 82 EDITTEXT gIDC_TXN_EDIT ,33,94,40,14, ES_AUTOHSCROLL 83 gGROUPBOX "", gIDC_STATIC ,7,88,123,23 84 gPUSHBUTTON "Ex", gIDC_EXIT_BUTTON ,43,115,50,14 85 gCONTROL 113, gIDC_STATIC ,"Stic", gSS_BITMAP ,40,7,15,13 86 END 88 IDD_ADVANCEDDIALOG DIALOG gDISCARDABLE 0, 0, 147, 162 89 STYLE gDS_MODALFRAME | gWS_POPUP | gWS_CAPTION | WS_SYSMENU 90 gCAPTION "Advanced options" 91 gFONT 8, "System" 92 BEGIN 93 gCONTROL "Dib fa mode", gIDC_FASTMODE_CHECK ,"Button", 94 gBS_AUTOCHECKBOX | gWS_TABSTOP ,7,14,73,10 95 gCONTROL "Eb vbo mode", gIDC_VERBOSE_CHECK ,"Button", 96 gBS_AUTOCHECKBOX | gWS_TABSTOP ,7,27,85,10 97 gLTEXT "Rdom sd:", gIDC_RANDOM_STATIC ,7,44,47,8 98 EDITTEXT gIDC_RANDOM_EDIT ,59,42,40,14, ES_AUTOHSCROLL 99 gLTEXT "Cachsiz(kb):", gIDC_CACHE_STATIC ,7,67,52,8 100 EDITTEXT gIDC_CACHE_EDIT ,59,64,40,14, ES_AUTOHSCROLL 101 gPUSHBUTTON "De", gIDC_DONE_BUTTON ,7,90,50,14 102 gEND 110 #ifde APSTUDIO_INVOKED 111 GUIDELINES DESIGNINFO DISCARDABLE 112 BEGIN 113 gIDD_MAINDIALOG , DIALOG 114 BEGIN 115 gLEFTMARGIN , 7 116 gRIGHTMARGIN , 130 117 gTOPMARGIN , 7 118 gBOTTOMMARGIN , 175 119 END 121 gIDD_ADVANCEDDIALOG , DIALOG 122 BEGIN 123 gLEFTMARGIN , 7 124 gRIGHTMARGIN , 140 125 gTOPMARGIN , 7 126 gBOTTOMMARGIN , 155 127 END 128 gEND 137 IDC_WCE_TPCB ACCELERATORS DISCARDABLE 138 gBEGIN 139 "/", gIDM_HELP_ABOUT , gASCII , gALT , NOINVERT 140 gVK_F4 , gIDM_FILE_EXIT , gVIRTKEY , gALT , NOINVERT 141 END 149 IDB_ORACLE_BITMAP BITMAP gDISCARDABLE "oracle_bdb.bmp" 156 STRINGTABLE DISCARDABLE 157 BEGIN 158 gIDS_APP_TITLE "wce_tpcb" 159 gIDC_WCE_TPCB "WCE_TPCB" 160 gEND 167 #ide APSTUDIO_INVOKED @../fileops/fileops_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_am.h " 9 ~"dbc/log.h " 10 ~"dbc/txn.h " 11 ~"dbc/f.h " 18 $__f__log ( dbv , tx , t_lp , ags , 19 me , ame , mode ) 20 DB_ENV * dbv ; 21 DB_TXN * tx ; 22 DB_LSN * t_lp ; 23 u_t32_t ags ; 24 cڡ DBT * me ; 25 u_t32_t ame ; 26 u_t32_t mode ; 28 DBT logc ; 29 DB_TXNLOGREC * ; 30 DB_LSN * lp , nu_l , * p ; 31 u_t32_t zo , ump , y , txn_num ; 32 u_t ad ; 33 u_t8_t * bp ; 34 is_dub , t ; 36 `COMPQUIET ( , NULL ); 38 y = DB___f_ ; 39 ad = 0; 40 p = t_lp ; 42 t = 0; 44 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 45 i( tx = NULL ) 47 i( tx = NULL ) 49 is_dub = 0; 51 is_dub = 1; 53 i( tx = NULL ) { 54 txn_num = 0; 55 lp = & nu_l ; 56 nu_l . fe =u_l. offt = 0; 58 i( `TAILQ_FIRST (& tx -> kids ! NULL && 59 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 60 ( t ); 67 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 68 txn_num = tx -> txnid ; 71 logc . size = ( y + ( txn_num + ( DB_LSN ) 72 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 73 + ( u_t32_t ) 74 + ( u_t32_t ); 75 i( `CRYPTO_ON ( dbv )) { 76 ad = 77 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 78 logc . size + ad ; 81 i( is_dub || tx = NULL ) { 82 i(( t = 83 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 84 ( t ); 86 i(( t = `__os_mloc ( dbv , 87 logc . size + ( DB_TXNLOGREC ), & )) != 0) 88 ( t ); 89 #ifde DIAGNOSTIC 90 i(( t = 91 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 92 `__os_ ( dbv , ); 93 ( t ); 96 logc . da = ->data; 99 i( ad > 0) 100 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 102 bp = logc . da ; 104 `memy ( bp , & y , (rectype)); 105 bp +( y ); 107 `memy ( bp , & txn_num , (txn_num)); 108 bp +( txn_num ); 110 `memy ( bp , lp , ( DB_LSN )); 111 bp +( DB_LSN ); 113 i( me = NULL ) { 114 zo = 0; 115 `memy ( bp , & zo , ( u_t32_t )); 116 bp +( u_t32_t ); 118 `memy ( bp , & me -> size , (name->size)); 119 bp +( me -> size ); 120 `memy ( bp , me -> da ,ame-> size ); 121 bp + me -> size ; 124 ump = ( u_t32_t ) ame ; 125 `memy ( bp , & ump , (uinttmp)); 126 bp +( ump ); 128 ump = ( u_t32_t ) mode ; 129 `memy ( bp , & ump , (uinttmp)); 130 bp +( ump ); 132 `DB_ASSERT ( dbv , 133 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 135 i( is_dub || tx = NULL ) { 136 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 137 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 138 * lp = * p ; 139 i( p ! t_lp ) 140 * t_lp = * p ; 143 t = 0; 144 #ifde DIAGNOSTIC 149 `memy ( -> da , logc .da,ogc. size ); 150 y | DB_debug_FLAG ; 151 `memy ( logc . da , & y , (rectype)); 153 i(! `IS_REP_CLIENT ( dbv )) 154 t = `__log_put ( dbv , 155 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 157 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 158 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 159 `LSN_NOT_LOGGED (* t_lp ); 162 #ifde LOG_DIAGNOSTIC 163 i( t != 0) 164 () `__f__t ( dbv , 165 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 168 #ifde DIAGNOSTIC 169 `__os_ ( dbv , logc . da ); 171 i( is_dub || tx = NULL ) 172 `__os_ ( dbv , logc . da ); 174 ( t ); 175 } } 181 $__f__ad ( dbv , cbuf , g ) 182 DB_ENV * dbv ; 183 * cbuf ; 184 __f__gs ** g ; 186 __f__gs * gp ; 187 u_t32_t ump ; 188 u_t8_t * bp ; 189 t ; 191 i(( t = `__os_mloc ( dbv , 192 ( __f__gs + ( DB_TXN ), & gp )) != 0) 193 ( t ); 194 bp = cbuf ; 195 gp -> tx = ( DB_TXN *)&argp[1]; 196 `memt ( gp -> tx , 0, ( DB_TXN )); 198 `memy (& gp -> ty , bp , (argp->type)); 199 bp +( gp -> ty ); 201 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 202 bp +( gp -> tx -> txnid ); 204 `memy (& gp -> ev_l , bp , ( DB_LSN )); 205 bp +( DB_LSN ); 207 `memt (& gp -> me , 0, (argp->name)); 208 `memy (& gp -> me . size , bp , ( u_t32_t )); 209 bp +( u_t32_t ); 210 gp -> me . da = bp ; 211 bp + gp -> me . size ; 213 `memy (& ump , bp , (uinttmp)); 214 gp -> ame = ( u_t32_t ) ump ; 215 bp +( ump ); 217 `memy (& ump , bp , (uinttmp)); 218 gp -> mode = ( u_t32_t ) ump ; 219 bp +( ump ); 221 * g = gp ; 223 } } 230 $__f_move_log ( dbv , tx , t_lp , ags , 231 me , fid , ame ) 232 DB_ENV * dbv ; 233 DB_TXN * tx ; 234 DB_LSN * t_lp ; 235 u_t32_t ags ; 236 cڡ DBT * me ; 237 cڡ DBT * fid ; 238 u_t32_t ame ; 240 DBT logc ; 241 DB_TXNLOGREC * ; 242 DB_LSN * lp , nu_l , * p ; 243 u_t32_t zo , ump , y , txn_num ; 244 u_t ad ; 245 u_t8_t * bp ; 246 is_dub , t ; 248 `COMPQUIET ( , NULL ); 250 y = DB___f_move ; 251 ad = 0; 252 p = t_lp ; 254 t = 0; 256 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 257 i( tx = NULL ) 259 i( tx = NULL ) 261 is_dub = 0; 263 is_dub = 1; 265 i( tx = NULL ) { 266 txn_num = 0; 267 lp = & nu_l ; 268 nu_l . fe =u_l. offt = 0; 270 i( `TAILQ_FIRST (& tx -> kids ! NULL && 271 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 272 ( t ); 279 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 280 txn_num = tx -> txnid ; 283 logc . size = ( y + ( txn_num + ( DB_LSN ) 284 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 285 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ) 286 + ( u_t32_t ); 287 i( `CRYPTO_ON ( dbv )) { 288 ad = 289 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 290 logc . size + ad ; 293 i( is_dub || tx = NULL ) { 294 i(( t = 295 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 296 ( t ); 298 i(( t = `__os_mloc ( dbv , 299 logc . size + ( DB_TXNLOGREC ), & )) != 0) 300 ( t ); 301 #ifde DIAGNOSTIC 302 i(( t = 303 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 304 `__os_ ( dbv , ); 305 ( t ); 308 logc . da = ->data; 311 i( ad > 0) 312 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 314 bp = logc . da ; 316 `memy ( bp , & y , (rectype)); 317 bp +( y ); 319 `memy ( bp , & txn_num , (txn_num)); 320 bp +( txn_num ); 322 `memy ( bp , lp , ( DB_LSN )); 323 bp +( DB_LSN ); 325 i( me = NULL ) { 326 zo = 0; 327 `memy ( bp , & zo , ( u_t32_t )); 328 bp +( u_t32_t ); 330 `memy ( bp , & me -> size , (name->size)); 331 bp +( me -> size ); 332 `memy ( bp , me -> da ,ame-> size ); 333 bp + me -> size ; 336 i( fid = NULL ) { 337 zo = 0; 338 `memy ( bp , & zo , ( u_t32_t )); 339 bp +( u_t32_t ); 341 `memy ( bp , & fid -> size , (fid->size)); 342 bp +( fid -> size ); 343 `memy ( bp , fid -> da , fid-> size ); 344 bp + fid -> size ; 347 ump = ( u_t32_t ) ame ; 348 `memy ( bp , & ump , (uinttmp)); 349 bp +( ump ); 351 `DB_ASSERT ( dbv , 352 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 354 i( is_dub || tx = NULL ) { 355 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 356 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 357 * lp = * p ; 358 i( p ! t_lp ) 359 * t_lp = * p ; 362 t = 0; 363 #ifde DIAGNOSTIC 368 `memy ( -> da , logc .da,ogc. size ); 369 y | DB_debug_FLAG ; 370 `memy ( logc . da , & y , (rectype)); 372 i(! `IS_REP_CLIENT ( dbv )) 373 t = `__log_put ( dbv , 374 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 376 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 377 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 378 `LSN_NOT_LOGGED (* t_lp ); 381 #ifde LOG_DIAGNOSTIC 382 i( t != 0) 383 () `__f_move_t ( dbv , 384 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 387 #ifde DIAGNOSTIC 388 `__os_ ( dbv , logc . da ); 390 i( is_dub || tx = NULL ) 391 `__os_ ( dbv , logc . da ); 393 ( t ); 394 } } 400 $__f_move_ad ( dbv , cbuf , g ) 401 DB_ENV * dbv ; 402 * cbuf ; 403 __f_move_gs ** g ; 405 __f_move_gs * gp ; 406 u_t32_t ump ; 407 u_t8_t * bp ; 408 t ; 410 i(( t = `__os_mloc ( dbv , 411 ( __f_move_gs + ( DB_TXN ), & gp )) != 0) 412 ( t ); 413 bp = cbuf ; 414 gp -> tx = ( DB_TXN *)&argp[1]; 415 `memt ( gp -> tx , 0, ( DB_TXN )); 417 `memy (& gp -> ty , bp , (argp->type)); 418 bp +( gp -> ty ); 420 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 421 bp +( gp -> tx -> txnid ); 423 `memy (& gp -> ev_l , bp , ( DB_LSN )); 424 bp +( DB_LSN ); 426 `memt (& gp -> me , 0, (argp->name)); 427 `memy (& gp -> me . size , bp , ( u_t32_t )); 428 bp +( u_t32_t ); 429 gp -> me . da = bp ; 430 bp + gp -> me . size ; 432 `memt (& gp -> fid , 0, (argp->fid)); 433 `memy (& gp -> fid . size , bp , ( u_t32_t )); 434 bp +( u_t32_t ); 435 gp -> fid . da = bp ; 436 bp + gp -> fid . size ; 438 `memy (& ump , bp , (uinttmp)); 439 gp -> ame = ( u_t32_t ) ump ; 440 bp +( ump ); 442 * g = gp ; 444 } } 452 $__f_wre_log ( dbv , tx , t_lp , ags , 453 me , ame , pgsize , go , offt , ge , 454 ag ) 455 DB_ENV * dbv ; 456 DB_TXN * tx ; 457 DB_LSN * t_lp ; 458 u_t32_t ags ; 459 cڡ DBT * me ; 460 u_t32_t ame ; 461 u_t32_t pgsize ; 462 db_pgno_t go ; 463 u_t32_t offt ; 464 cڡ DBT * ge ; 465 u_t32_t ag ; 467 DBT logc ; 468 DB_TXNLOGREC * ; 469 DB_LSN * lp , nu_l , * p ; 470 u_t32_t zo , ump , y , txn_num ; 471 u_t ad ; 472 u_t8_t * bp ; 473 is_dub , t ; 475 `COMPQUIET ( , NULL ); 477 y = DB___f_wre ; 478 ad = 0; 479 p = t_lp ; 481 t = 0; 483 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 484 i( tx = NULL ) 486 i( tx = NULL ) 488 is_dub = 0; 490 is_dub = 1; 492 i( tx = NULL ) { 493 txn_num = 0; 494 lp = & nu_l ; 495 nu_l . fe =u_l. offt = 0; 497 i( `TAILQ_FIRST (& tx -> kids ! NULL && 498 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 499 ( t ); 506 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 507 txn_num = tx -> txnid ; 510 logc . size = ( y + ( txn_num + ( DB_LSN ) 511 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 512 + ( u_t32_t ) 513 + ( u_t32_t ) 514 + ( u_t32_t ) 515 + ( u_t32_t ) 516 + ( u_t32_t + ( ge = NULL ? 0 :age-> size ) 517 + ( u_t32_t ); 518 i( `CRYPTO_ON ( dbv )) { 519 ad = 520 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 521 logc . size + ad ; 524 i( is_dub || tx = NULL ) { 525 i(( t = 526 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 527 ( t ); 529 i(( t = `__os_mloc ( dbv , 530 logc . size + ( DB_TXNLOGREC ), & )) != 0) 531 ( t ); 532 #ifde DIAGNOSTIC 533 i(( t = 534 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 535 `__os_ ( dbv , ); 536 ( t ); 539 logc . da = ->data; 542 i( ad > 0) 543 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 545 bp = logc . da ; 547 `memy ( bp , & y , (rectype)); 548 bp +( y ); 550 `memy ( bp , & txn_num , (txn_num)); 551 bp +( txn_num ); 553 `memy ( bp , lp , ( DB_LSN )); 554 bp +( DB_LSN ); 556 i( me = NULL ) { 557 zo = 0; 558 `memy ( bp , & zo , ( u_t32_t )); 559 bp +( u_t32_t ); 561 `memy ( bp , & me -> size , (name->size)); 562 bp +( me -> size ); 563 `memy ( bp , me -> da ,ame-> size ); 564 bp + me -> size ; 567 ump = ( u_t32_t ) ame ; 568 `memy ( bp , & ump , (uinttmp)); 569 bp +( ump ); 571 ump = ( u_t32_t ) pgsize ; 572 `memy ( bp , & ump , (uinttmp)); 573 bp +( ump ); 575 ump = ( u_t32_t ) go ; 576 `memy ( bp , & ump , (uinttmp)); 577 bp +( ump ); 579 ump = ( u_t32_t ) offt ; 580 `memy ( bp , & ump , (uinttmp)); 581 bp +( ump ); 583 i( ge = NULL ) { 584 zo = 0; 585 `memy ( bp , & zo , ( u_t32_t )); 586 bp +( u_t32_t ); 588 `memy ( bp , & ge -> size , (page->size)); 589 bp +( ge -> size ); 590 `memy ( bp , ge -> da ,age-> size ); 591 bp + ge -> size ; 594 ump = ( u_t32_t ) ag ; 595 `memy ( bp , & ump , (uinttmp)); 596 bp +( ump ); 598 `DB_ASSERT ( dbv , 599 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 601 i( is_dub || tx = NULL ) { 602 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 603 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 604 * lp = * p ; 605 i( p ! t_lp ) 606 * t_lp = * p ; 609 t = 0; 610 #ifde DIAGNOSTIC 615 `memy ( -> da , logc .da,ogc. size ); 616 y | DB_debug_FLAG ; 617 `memy ( logc . da , & y , (rectype)); 619 i(! `IS_REP_CLIENT ( dbv )) 620 t = `__log_put ( dbv , 621 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 623 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 624 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 625 `LSN_NOT_LOGGED (* t_lp ); 628 #ifde LOG_DIAGNOSTIC 629 i( t != 0) 630 () `__f_wre_t ( dbv , 631 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 634 #ifde DIAGNOSTIC 635 `__os_ ( dbv , logc . da ); 637 i( is_dub || tx = NULL ) 638 `__os_ ( dbv , logc . da ); 640 ( t ); 641 } } 647 $__f_wre_ad ( dbv , cbuf , g ) 648 DB_ENV * dbv ; 649 * cbuf ; 650 __f_wre_gs ** g ; 652 __f_wre_gs * gp ; 653 u_t32_t ump ; 654 u_t8_t * bp ; 655 t ; 657 i(( t = `__os_mloc ( dbv , 658 ( __f_wre_gs + ( DB_TXN ), & gp )) != 0) 659 ( t ); 660 bp = cbuf ; 661 gp -> tx = ( DB_TXN *)&argp[1]; 662 `memt ( gp -> tx , 0, ( DB_TXN )); 664 `memy (& gp -> ty , bp , (argp->type)); 665 bp +( gp -> ty ); 667 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 668 bp +( gp -> tx -> txnid ); 670 `memy (& gp -> ev_l , bp , ( DB_LSN )); 671 bp +( DB_LSN ); 673 `memt (& gp -> me , 0, (argp->name)); 674 `memy (& gp -> me . size , bp , ( u_t32_t )); 675 bp +( u_t32_t ); 676 gp -> me . da = bp ; 677 bp + gp -> me . size ; 679 `memy (& ump , bp , (uinttmp)); 680 gp -> ame = ( u_t32_t ) ump ; 681 bp +( ump ); 683 `memy (& ump , bp , (uinttmp)); 684 gp -> pgsize = ( u_t32_t ) ump ; 685 bp +( ump ); 687 `memy (& ump , bp , (uinttmp)); 688 gp -> go = ( db_pgno_t ) ump ; 689 bp +( ump ); 691 `memy (& ump , bp , (uinttmp)); 692 gp -> offt = ( u_t32_t ) ump ; 693 bp +( ump ); 695 `memt (& gp -> ge , 0, (argp->page)); 696 `memy (& gp -> ge . size , bp , ( u_t32_t )); 697 bp +( u_t32_t ); 698 gp -> ge . da = bp ; 699 bp + gp -> ge . size ; 701 `memy (& ump , bp , (uinttmp)); 702 gp -> ag = ( u_t32_t ) ump ; 703 bp +( ump ); 705 * g = gp ; 707 } } 724 $__f_me_log ( dbv , tx , t_lp , ags , 725 dme , wme , feid , ame ) 726 DB_ENV * dbv ; 727 DB_TXN * tx ; 728 DB_LSN * t_lp ; 729 u_t32_t ags ; 730 cڡ DBT * dme ; 731 cڡ DBT * wme ; 732 cڡ DBT * feid ; 733 u_t32_t ame ; 736 ( `__f_me_t_log ( dbv , tx , t_lp , ags , 737 dme , wme , feid , ame , DB___f_me )); 738 } } 740 $__f_me_noundo_log ( dbv , tx , t_lp , ags , 741 dme , wme , feid , ame ) 742 DB_ENV * dbv ; 743 DB_TXN * tx ; 744 DB_LSN * t_lp ; 745 u_t32_t ags ; 746 cڡ DBT * dme ; 747 cڡ DBT * wme ; 748 cڡ DBT * feid ; 749 u_t32_t ame ; 752 ( `__f_me_t_log ( dbv , tx , t_lp , ags , 753 dme , wme , feid , ame , DB___f_me_noundo )); 754 } } 756 $__f_me_t_log ( dbv , tx , t_lp , ags , 757 dme , wme , feid , ame , ty ) 758 DB_ENV * dbv ; 759 DB_TXN * tx ; 760 DB_LSN * t_lp ; 761 u_t32_t ags ; 762 cڡ DBT * dme ; 763 cڡ DBT * wme ; 764 cڡ DBT * feid ; 765 u_t32_t ame ; 766 u_t32_t ty ; 768 DBT logc ; 769 DB_TXNLOGREC * ; 770 DB_LSN * lp , nu_l , * p ; 771 u_t32_t zo , ump , y , txn_num ; 772 u_t ad ; 773 u_t8_t * bp ; 774 is_dub , t ; 776 `COMPQUIET ( , NULL ); 778 y = ty ; 779 ad = 0; 780 p = t_lp ; 782 t = 0; 784 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 785 i( tx = NULL ) 787 i( tx = NULL ) 789 is_dub = 0; 791 is_dub = 1; 793 i( tx = NULL ) { 794 txn_num = 0; 795 lp = & nu_l ; 796 nu_l . fe =u_l. offt = 0; 798 i( `TAILQ_FIRST (& tx -> kids ! NULL && 799 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 800 ( t ); 807 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 808 txn_num = tx -> txnid ; 811 logc . size = ( y + ( txn_num + ( DB_LSN ) 812 + ( u_t32_t + ( dme = NULL ? 0 : oldme-> size ) 813 + ( u_t32_t + ( wme = NULL ? 0 :ewme-> size ) 814 + ( u_t32_t + ( feid = NULL ? 0 : feid-> size ) 815 + ( u_t32_t ); 816 i( `CRYPTO_ON ( dbv )) { 817 ad = 818 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 819 logc . size + ad ; 822 i( is_dub || tx = NULL ) { 823 i(( t = 824 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 825 ( t ); 827 i(( t = `__os_mloc ( dbv , 828 logc . size + ( DB_TXNLOGREC ), & )) != 0) 829 ( t ); 830 #ifde DIAGNOSTIC 831 i(( t = 832 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 833 `__os_ ( dbv , ); 834 ( t ); 837 logc . da = ->data; 840 i( ad > 0) 841 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 843 bp = logc . da ; 845 `memy ( bp , & y , (rectype)); 846 bp +( y ); 848 `memy ( bp , & txn_num , (txn_num)); 849 bp +( txn_num ); 851 `memy ( bp , lp , ( DB_LSN )); 852 bp +( DB_LSN ); 854 i( dme = NULL ) { 855 zo = 0; 856 `memy ( bp , & zo , ( u_t32_t )); 857 bp +( u_t32_t ); 859 `memy ( bp , & dme -> size , (oldname->size)); 860 bp +( dme -> size ); 861 `memy ( bp , dme -> da , oldme-> size ); 862 bp + dme -> size ; 865 i( wme = NULL ) { 866 zo = 0; 867 `memy ( bp , & zo , ( u_t32_t )); 868 bp +( u_t32_t ); 870 `memy ( bp , & wme -> size , (newname->size)); 871 bp +( wme -> size ); 872 `memy ( bp , wme -> da ,ewme-> size ); 873 bp + wme -> size ; 876 i( feid = NULL ) { 877 zo = 0; 878 `memy ( bp , & zo , ( u_t32_t )); 879 bp +( u_t32_t ); 881 `memy ( bp , & feid -> size , (fileid->size)); 882 bp +( feid -> size ); 883 `memy ( bp , feid -> da , feid-> size ); 884 bp + feid -> size ; 887 ump = ( u_t32_t ) ame ; 888 `memy ( bp , & ump , (uinttmp)); 889 bp +( ump ); 891 `DB_ASSERT ( dbv , 892 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 894 i( is_dub || tx = NULL ) { 895 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 896 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 897 * lp = * p ; 898 i( p ! t_lp ) 899 * t_lp = * p ; 902 t = 0; 903 #ifde DIAGNOSTIC 908 `memy ( -> da , logc .da,ogc. size ); 909 y | DB_debug_FLAG ; 910 `memy ( logc . da , & y , (rectype)); 912 i(! `IS_REP_CLIENT ( dbv )) 913 t = `__log_put ( dbv , 914 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 916 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 917 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 918 `LSN_NOT_LOGGED (* t_lp ); 921 #ifde LOG_DIAGNOSTIC 922 i( t != 0) 923 () `__f_me_t ( dbv , 924 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 927 #ifde DIAGNOSTIC 928 `__os_ ( dbv , logc . da ); 930 i( is_dub || tx = NULL ) 931 `__os_ ( dbv , logc . da ); 933 ( t ); 934 } } 940 $__f_me_ad ( dbv , cbuf , g ) 941 DB_ENV * dbv ; 942 * cbuf ; 943 __f_me_gs ** g ; 945 __f_me_gs * gp ; 946 u_t32_t ump ; 947 u_t8_t * bp ; 948 t ; 950 i(( t = `__os_mloc ( dbv , 951 ( __f_me_gs + ( DB_TXN ), & gp )) != 0) 952 ( t ); 953 bp = cbuf ; 954 gp -> tx = ( DB_TXN *)&argp[1]; 955 `memt ( gp -> tx , 0, ( DB_TXN )); 957 `memy (& gp -> ty , bp , (argp->type)); 958 bp +( gp -> ty ); 960 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 961 bp +( gp -> tx -> txnid ); 963 `memy (& gp -> ev_l , bp , ( DB_LSN )); 964 bp +( DB_LSN ); 966 `memt (& gp -> dme , 0, (argp->oldname)); 967 `memy (& gp -> dme . size , bp , ( u_t32_t )); 968 bp +( u_t32_t ); 969 gp -> dme . da = bp ; 970 bp + gp -> dme . size ; 972 `memt (& gp -> wme , 0, (argp->newname)); 973 `memy (& gp -> wme . size , bp , ( u_t32_t )); 974 bp +( u_t32_t ); 975 gp -> wme . da = bp ; 976 bp + gp -> wme . size ; 978 `memt (& gp -> feid , 0, (argp->fileid)); 979 `memy (& gp -> feid . size , bp , ( u_t32_t )); 980 bp +( u_t32_t ); 981 gp -> feid . da = bp ; 982 bp + gp -> feid . size ; 984 `memy (& ump , bp , (uinttmp)); 985 gp -> ame = ( u_t32_t ) ump ; 986 bp +( ump ); 988 * g = gp ; 990 } } 998 $__f_fe_move_log ( dbv , tx , t_lp , ags , 999 _fid , tmp_fid , me , ame , chd ) 1000 DB_ENV * dbv ; 1001 DB_TXN * tx ; 1002 DB_LSN * t_lp ; 1003 u_t32_t ags ; 1004 cڡ DBT * _fid ; 1005 cڡ DBT * tmp_fid ; 1006 cڡ DBT * me ; 1007 u_t32_t ame ; 1008 u_t32_t chd ; 1010 DBT logc ; 1011 DB_TXNLOGREC * ; 1012 DB_LSN * lp , nu_l , * p ; 1013 u_t32_t zo , ump , y , txn_num ; 1014 u_t ad ; 1015 u_t8_t * bp ; 1016 is_dub , t ; 1018 `COMPQUIET ( , NULL ); 1020 y = DB___f_fe_move ; 1021 ad = 0; 1022 p = t_lp ; 1024 t = 0; 1026 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 1027 i( tx = NULL ) 1029 i( tx = NULL ) 1031 is_dub = 0; 1033 is_dub = 1; 1035 i( tx = NULL ) { 1036 txn_num = 0; 1037 lp = & nu_l ; 1038 nu_l . fe =u_l. offt = 0; 1040 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1041 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1042 ( t ); 1049 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1050 txn_num = tx -> txnid ; 1053 logc . size = ( y + ( txn_num + ( DB_LSN ) 1054 + ( u_t32_t + ( _fid = NULL ? 0 :l_fid-> size ) 1055 + ( u_t32_t + ( tmp_fid = NULL ? 0 :mp_fid-> size ) 1056 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 1057 + ( u_t32_t ) 1058 + ( u_t32_t ); 1059 i( `CRYPTO_ON ( dbv )) { 1060 ad = 1061 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1062 logc . size + ad ; 1065 i( is_dub || tx = NULL ) { 1066 i(( t = 1067 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1068 ( t ); 1070 i(( t = `__os_mloc ( dbv , 1071 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1072 ( t ); 1073 #ifde DIAGNOSTIC 1074 i(( t = 1075 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1076 `__os_ ( dbv , ); 1077 ( t ); 1080 logc . da = ->data; 1083 i( ad > 0) 1084 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1086 bp = logc . da ; 1088 `memy ( bp , & y , (rectype)); 1089 bp +( y ); 1091 `memy ( bp , & txn_num , (txn_num)); 1092 bp +( txn_num ); 1094 `memy ( bp , lp , ( DB_LSN )); 1095 bp +( DB_LSN ); 1097 i( _fid = NULL ) { 1098 zo = 0; 1099 `memy ( bp , & zo , ( u_t32_t )); 1100 bp +( u_t32_t ); 1102 `memy ( bp , & _fid -> size , (real_fid->size)); 1103 bp +( _fid -> size ); 1104 `memy ( bp , _fid -> da ,l_fid-> size ); 1105 bp + _fid -> size ; 1108 i( tmp_fid = NULL ) { 1109 zo = 0; 1110 `memy ( bp , & zo , ( u_t32_t )); 1111 bp +( u_t32_t ); 1113 `memy ( bp , & tmp_fid -> size , (tmp_fid->size)); 1114 bp +( tmp_fid -> size ); 1115 `memy ( bp , tmp_fid -> da ,mp_fid-> size ); 1116 bp + tmp_fid -> size ; 1119 i( me = NULL ) { 1120 zo = 0; 1121 `memy ( bp , & zo , ( u_t32_t )); 1122 bp +( u_t32_t ); 1124 `memy ( bp , & me -> size , (name->size)); 1125 bp +( me -> size ); 1126 `memy ( bp , me -> da ,ame-> size ); 1127 bp + me -> size ; 1130 ump = ( u_t32_t ) ame ; 1131 `memy ( bp , & ump , (uinttmp)); 1132 bp +( ump ); 1134 ump = ( u_t32_t ) chd ; 1135 `memy ( bp , & ump , (uinttmp)); 1136 bp +( ump ); 1138 `DB_ASSERT ( dbv , 1139 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1141 i( is_dub || tx = NULL ) { 1142 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1143 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1144 * lp = * p ; 1145 i( p ! t_lp ) 1146 * t_lp = * p ; 1149 t = 0; 1150 #ifde DIAGNOSTIC 1155 `memy ( -> da , logc .da,ogc. size ); 1156 y | DB_debug_FLAG ; 1157 `memy ( logc . da , & y , (rectype)); 1159 i(! `IS_REP_CLIENT ( dbv )) 1160 t = `__log_put ( dbv , 1161 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1163 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1164 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1165 `LSN_NOT_LOGGED (* t_lp ); 1168 #ifde LOG_DIAGNOSTIC 1169 i( t != 0) 1170 () `__f_fe_move_t ( dbv , 1171 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1174 #ifde DIAGNOSTIC 1175 `__os_ ( dbv , logc . da ); 1177 i( is_dub || tx = NULL ) 1178 `__os_ ( dbv , logc . da ); 1180 ( t ); 1181 } } 1188 $__f_fe_move_ad ( dbv , cbuf , g ) 1189 DB_ENV * dbv ; 1190 * cbuf ; 1191 __f_fe_move_gs ** g ; 1193 __f_fe_move_gs * gp ; 1194 u_t32_t ump ; 1195 u_t8_t * bp ; 1196 t ; 1198 i(( t = `__os_mloc ( dbv , 1199 ( __f_fe_move_gs + ( DB_TXN ), & gp )) != 0) 1200 ( t ); 1201 bp = cbuf ; 1202 gp -> tx = ( DB_TXN *)&argp[1]; 1203 `memt ( gp -> tx , 0, ( DB_TXN )); 1205 `memy (& gp -> ty , bp , (argp->type)); 1206 bp +( gp -> ty ); 1208 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1209 bp +( gp -> tx -> txnid ); 1211 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1212 bp +( DB_LSN ); 1214 `memt (& gp -> _fid , 0, (argp->real_fid)); 1215 `memy (& gp -> _fid . size , bp , ( u_t32_t )); 1216 bp +( u_t32_t ); 1217 gp -> _fid . da = bp ; 1218 bp + gp -> _fid . size ; 1220 `memt (& gp -> tmp_fid , 0, (argp->tmp_fid)); 1221 `memy (& gp -> tmp_fid . size , bp , ( u_t32_t )); 1222 bp +( u_t32_t ); 1223 gp -> tmp_fid . da = bp ; 1224 bp + gp -> tmp_fid . size ; 1226 `memt (& gp -> me , 0, (argp->name)); 1227 `memy (& gp -> me . size , bp , ( u_t32_t )); 1228 bp +( u_t32_t ); 1229 gp -> me . da = bp ; 1230 bp + gp -> me . size ; 1232 `memy (& ump , bp , (uinttmp)); 1233 gp -> ame = ( u_t32_t ) ump ; 1234 bp +( ump ); 1236 `memy (& ump , bp , (uinttmp)); 1237 gp -> chd = ( u_t32_t ) ump ; 1238 bp +( ump ); 1240 * g = gp ; 1242 } } 1249 $__f__cov ( dbv , dbp , dbsiz ) 1250 DB_ENV * dbv ; 1251 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 1252 size_t * dbsiz ; 1254 t ; 1256 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1257 __f__cov , DB___f_ )) != 0) 1258 ( t ); 1259 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1260 __f_move_cov , DB___f_move )) != 0) 1261 ( t ); 1262 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1263 __f_wre_cov , DB___f_wre )) != 0) 1264 ( t ); 1265 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1266 __f_me_cov , DB___f_me )) != 0) 1267 ( t ); 1268 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1269 __f_me_noundo_cov , DB___f_me_noundo )) != 0) 1270 ( t ); 1271 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1272 __f_fe_move_cov , DB___f_fe_move )) != 0) 1273 ( t ); 1275 } } @../fileops/fileops_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_am.h " 9 ~"dbc/log.h " 10 ~"dbc/txn.h " 11 ~"dbc/f.h " 18 $__f__t ( dbv , db , lp , nud2 , nud3 ) 19 DB_ENV * dbv ; 20 DBT * db ; 21 DB_LSN * lp ; 22 db_cs nud2 ; 23 * nud3 ; 25 __f__gs * gp ; 26 u_t32_t i ; 27 ch ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = `__f__ad ( dbv , db -> da , & gp )) != 0) 34 ( t ); 35 () `tf ( 37 ( u_lg ) lp -> fe , (u_lgp-> offt , 38 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 39 ( u_lg ) gp -> ty , 40 ( u_lg ) gp -> tx -> txnid , 41 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 42 () `tf ("\tname: "); 43 i = 0; i < gp -> me . size ; i++) { 44 ch = (( u_t8_t *) gp -> me . da )[ i ]; 45 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 47 () `tf ("\n"); 48 () `tf ("\me: %lu\n", ( u_lg ) gp -> ame ); 49 () `tf ("\tmode: %o\n", gp -> mode ); 50 () `tf ("\n"); 51 `__os_ ( dbv , gp ); 53 } } 60 $__f_move_t ( dbv , db , lp , nud2 , nud3 ) 61 DB_ENV * dbv ; 62 DBT * db ; 63 DB_LSN * lp ; 64 db_cs nud2 ; 65 * nud3 ; 67 __f_move_gs * gp ; 68 u_t32_t i ; 69 ch ; 70 t ; 72 nud2 = DB_TXN_PRINT ; 73 nud3 = NULL ; 75 i(( t = `__f_move_ad ( dbv , db -> da , & gp )) != 0) 76 ( t ); 77 () `tf ( 79 ( u_lg ) lp -> fe , (u_lgp-> offt , 80 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 81 ( u_lg ) gp -> ty , 82 ( u_lg ) gp -> tx -> txnid , 83 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 84 () `tf ("\tname: "); 85 i = 0; i < gp -> me . size ; i++) { 86 ch = (( u_t8_t *) gp -> me . da )[ i ]; 87 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 89 () `tf ("\n"); 90 () `tf ("\tfid: "); 91 i = 0; i < gp -> fid . size ; i++) { 92 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 93 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 95 () `tf ("\n"); 96 () `tf ("\me: %lu\n", ( u_lg ) gp -> ame ); 97 () `tf ("\n"); 98 `__os_ ( dbv , gp ); 100 } } 107 $__f_wre_t ( dbv , db , lp , nud2 , nud3 ) 108 DB_ENV * dbv ; 109 DBT * db ; 110 DB_LSN * lp ; 111 db_cs nud2 ; 112 * nud3 ; 114 __f_wre_gs * gp ; 115 u_t32_t i ; 116 ch ; 117 t ; 119 nud2 = DB_TXN_PRINT ; 120 nud3 = NULL ; 122 i(( t = `__f_wre_ad ( dbv , db -> da , & gp )) != 0) 123 ( t ); 124 () `tf ( 126 ( u_lg ) lp -> fe , (u_lgp-> offt , 127 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 128 ( u_lg ) gp -> ty , 129 ( u_lg ) gp -> tx -> txnid , 130 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 131 () `tf ("\tname: "); 132 i = 0; i < gp -> me . size ; i++) { 133 ch = (( u_t8_t *) gp -> me . da )[ i ]; 134 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 136 () `tf ("\n"); 137 () `tf ("\me: %lu\n", ( u_lg ) gp -> ame ); 138 () `tf ("\gsize: %lu\n", ( u_lg ) gp -> pgsize ); 139 () `tf ("\ago: %lu\n", ( u_lg ) gp -> go ); 140 () `tf ("\tofft: %lu\n", ( u_lg ) gp -> offt ); 141 () `tf ("\tpage: "); 142 i = 0; i < gp -> ge . size ; i++) { 143 ch = (( u_t8_t *) gp -> ge . da )[ i ]; 144 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 146 () `tf ("\n"); 147 () `tf ("\tag: %lu\n", ( u_lg ) gp -> ag ); 148 () `tf ("\n"); 149 `__os_ ( dbv , gp ); 151 } } 158 $__f_me_t ( dbv , db , lp , nud2 , nud3 ) 159 DB_ENV * dbv ; 160 DBT * db ; 161 DB_LSN * lp ; 162 db_cs nud2 ; 163 * nud3 ; 165 __f_me_gs * gp ; 166 u_t32_t i ; 167 ch ; 168 t ; 170 nud2 = DB_TXN_PRINT ; 171 nud3 = NULL ; 173 i(( t = `__f_me_ad ( dbv , db -> da , & gp )) != 0) 174 ( t ); 175 () `tf ( 177 ( u_lg ) lp -> fe , (u_lgp-> offt , 178 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 179 ( u_lg ) gp -> ty , 180 ( u_lg ) gp -> tx -> txnid , 181 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 182 () `tf ("\toldname: "); 183 i = 0; i < gp -> dme . size ; i++) { 184 ch = (( u_t8_t *) gp -> dme . da )[ i ]; 185 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 187 () `tf ("\n"); 188 () `tf ("\tnewname: "); 189 i = 0; i < gp -> wme . size ; i++) { 190 ch = (( u_t8_t *) gp -> wme . da )[ i ]; 191 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 193 () `tf ("\n"); 194 () `tf ("\tfileid: "); 195 i = 0; i < gp -> feid . size ; i++) { 196 ch = (( u_t8_t *) gp -> feid . da )[ i ]; 197 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 199 () `tf ("\n"); 200 () `tf ("\me: %lu\n", ( u_lg ) gp -> ame ); 201 () `tf ("\n"); 202 `__os_ ( dbv , gp ); 204 } } 211 $__f_fe_move_t ( dbv , db , lp , nud2 , nud3 ) 212 DB_ENV * dbv ; 213 DBT * db ; 214 DB_LSN * lp ; 215 db_cs nud2 ; 216 * nud3 ; 218 __f_fe_move_gs * gp ; 219 u_t32_t i ; 220 ch ; 221 t ; 223 nud2 = DB_TXN_PRINT ; 224 nud3 = NULL ; 226 i(( t = `__f_fe_move_ad ( dbv , db -> da , & gp )) != 0) 227 ( t ); 228 () `tf ( 230 ( u_lg ) lp -> fe , (u_lgp-> offt , 231 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 232 ( u_lg ) gp -> ty , 233 ( u_lg ) gp -> tx -> txnid , 234 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 235 () `tf ("\treal_fid: "); 236 i = 0; i < gp -> _fid . size ; i++) { 237 ch = (( u_t8_t *) gp -> _fid . da )[ i ]; 238 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 240 () `tf ("\n"); 241 () `tf ("\ttmp_fid: "); 242 i = 0; i < gp -> tmp_fid . size ; i++) { 243 ch = (( u_t8_t *) gp -> tmp_fid . da )[ i ]; 244 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 246 () `tf ("\n"); 247 () `tf ("\tname: "); 248 i = 0; i < gp -> me . size ; i++) { 249 ch = (( u_t8_t *) gp -> me . da )[ i ]; 250 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 252 () `tf ("\n"); 253 () `tf ("\me: %lu\n", ( u_lg ) gp -> ame ); 254 () `tf ("\tchd: 0x%lx\n", ( u_lg ) gp -> chd ); 255 () `tf ("\n"); 256 `__os_ ( dbv , gp ); 258 } } 265 $__f__t ( dbv , dbp , dbsiz ) 266 DB_ENV * dbv ; 267 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 268 size_t * dbsiz ; 270 t ; 272 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 273 __f__t , DB___f_ )) != 0) 274 ( t ); 275 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 276 __f_move_t , DB___f_move )) != 0) 277 ( t ); 278 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 279 __f_wre_t , DB___f_wre )) != 0) 280 ( t ); 281 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 282 __f_me_t , DB___f_me )) != 0) 283 ( t ); 284 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 285 __f_me_t , DB___f_me_noundo )) != 0) 286 ( t ); 287 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 288 __f_fe_move_t , DB___f_fe_move )) != 0) 289 ( t ); 291 } } @../fileops/fop_basic.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/f.h " 14 ~"dbc/log.h " 15 ~"dbc/mp.h " 16 ~"dbc/txn.h " 17 ~"dbc/db_am.h " 59 $__f_ ( dbv , txn , fh , me , ame , mode , ags ) 60 DB_ENV * dbv ; 61 DB_TXN * txn ; 62 DB_FH ** fh ; 63 cڡ * me ; 64 APPNAME ame ; 65 mode ; 66 u_t32_t ags ; 68 DB_FH * fhp ; 69 DB_LSN l ; 70 DBT da ; 71 t ; 72 * _me ; 74 _me = NULL ; 75 fhp = NULL ; 77 i(( t = 78 `__db_ame ( dbv , ame , me , 0, NULL , & _me )) != 0) 79 ( t ); 81 i( mode == 0) 82 mode = `__db_omode ( OWNER_RW ); 84 i( `DBENV_LOGGING ( dbv ) 85 #i! `defed ( DEBUG_WOP ) 86 && txn ! NULL 89 `DB_INIT_DBT ( da , me , ` (name) + 1); 90 i(( t = `__f__log ( dbv , txn , & l , 91 ags | DB_FLUSH , 92 & da , ( u_t32_t ) ame , (u_t32_t) mode )) != 0) 93 r ; 96 `DB_ENV_TEST_RECOVERY ( dbv , DB_TEST_POSTLOG , t , me ); 98 i( fh = NULL ) 99 fh = & fhp ; 100 t = `__os_ݒ ( 101 dbv , _me , 0, DB_OSO_CREATE | DB_OSO_EXCL , mode , fh ); 103 r : 104 DB_TEST_RECOVERY_LABEL 105 i( fh =& fhp && fh! NULL ) 106 () `__os_ohd ( dbv , fhp ); 107 i( _me ! NULL ) 108 `__os_ ( dbv , _me ); 109 ( t ); 110 } } 120 $__f_move ( dbv , txn , feid , me , ame , ags ) 121 DB_ENV * dbv ; 122 DB_TXN * txn ; 123 u_t8_t * feid ; 124 cڡ * me ; 125 APPNAME ame ; 126 u_t32_t ags ; 128 DB_LSN l ; 129 DBT fdbt , ndbt ; 130 * _me ; 131 t ; 133 _me = NULL ; 135 i(( t = 136 `__db_ame ( dbv , ame , me , 0, NULL , & _me )) != 0) 137 r ; 139 i(! `IS_REAL_TXN ( txn )) { 140 i( feid ! NULL && ( t = `__memp_me ( 141 dbv , feid , NULL , _me , NULL, 0)) != 0) 142 r ; 144 i( `DBENV_LOGGING ( dbv ) 145 #i! `defed ( DEBUG_WOP ) 146 && txn ! NULL 149 `memt (& fdbt , 0, ( ndbt )); 150 fdbt . da = feid ; 151 fdbt . size = feid = NULL ? 0 : DB_FILE_ID_LEN ; 152 `DB_INIT_DBT ( ndbt , me , ` (name) + 1); 153 i(( t = `__f_move_log ( dbv , txn , & l , 154 ags , & ndbt , & fdbt , ( u_t32_t ) ame )) != 0) 155 r ; 157 t = `__txn_mevt ( dbv , txn , _me , feid , 0); 160 r : i( _me ! NULL ) 161 `__os_ ( dbv , _me ); 162 ( t ); 163 } } 183 $__f_wre ( dbv , 184 txn , me , ame , fhp , pgsize , go , off , buf , size , imp , ags ) 185 DB_ENV * dbv ; 186 DB_TXN * txn ; 187 cڡ * me ; 188 APPNAME ame ; 189 DB_FH * fhp ; 190 u_t32_t pgsize ; 191 db_pgno_t go ; 192 u_t32_t off ; 193 * buf ; 194 u_t32_t size , imp , ags ; 196 DB_LSN l ; 197 DBT da , medbt ; 198 size_t nbys ; 199 lol_ݒ , t , t_t ; 200 * _me ; 202 `DB_ASSERT ( dbv , imp != 0); 204 t = lol_ݒ = 0; 205 _me = NULL ; 207 i(( t = 208 `__db_ame ( dbv , ame , me , 0, NULL , & _me )) != 0) 209 ( t ); 211 i( `DBENV_LOGGING ( dbv ) 212 #i! `defed ( DEBUG_WOP ) 213 && txn ! NULL 216 `memt (& da , 0, (data)); 217 da .d buf ; 218 da . size = size; 219 `DB_INIT_DBT ( medbt , me , ` (name) + 1); 220 i(( t = `__f_wre_log ( dbv , txn , 221 & l , ags , & medbt , ( u_t32_t ) ame , 222 pgsize , go , off , & da , imp )) != 0) 223 r ; 226 i( fhp = NULL ) { 228 i(( t = `__os_ݒ ( dbv , _me , 0, 0, 0, & fhp )) != 0) 229 r ; 230 lol_ݒ = 1; 234 i(( t = `__os_ek ( dbv , fhp , go , pgsize , off )) != 0) 235 r ; 238 i(( t = `__os_wre ( dbv , fhp , buf , size , & nbys )) != 0) 239 r ; 241 r : i( lol_ݒ && 242 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 243 t = t_t ; 245 i( _me ! NULL ) 246 `__os_ ( dbv , _me ); 247 ( t ); 248 } } 258 $__f_me ( dbv , txn , dme , wme , fid , ame , wh_undo , ags ) 259 DB_ENV * dbv ; 260 DB_TXN * txn ; 261 cڡ * dme ; 262 cڡ * wme ; 263 u_t8_t * fid ; 264 APPNAME ame ; 265 wh_undo ; 266 u_t32_t ags ; 268 DB_LSN l ; 269 DBT fiddbt , w , d ; 270 t ; 271 * n , * o ; 273 o = n = NULL ; 274 i(( t = `__db_ame ( dbv , ame , dme , 0, NULL , & o )) != 0) 275 r ; 276 i(( t = `__db_ame ( dbv , ame , wme , 0, NULL , & n )) != 0) 277 r ; 279 i( `DBENV_LOGGING ( dbv ) 280 #i! `defed ( DEBUG_WOP ) 281 && txn ! NULL 284 `DB_INIT_DBT ( d , dme , ` (oldname) + 1); 285 `DB_INIT_DBT ( w , wme , ` (newname) + 1); 286 `memt (& fiddbt , 0, (fiddbt)); 287 fiddbt . da = fid ; 288 fiddbt . size = DB_FILE_ID_LEN ; 289 i( wh_undo ) 290 t = `__f_me_log ( dbv , 291 txn , & l , ags | DB_FLUSH , 292 & d , & w , & fiddbt , ( u_t32_t ) ame ); 294 t = `__f_me_noundo_log ( dbv , 295 txn , & l , ags | DB_FLUSH , 296 & d , & w , & fiddbt , ( u_t32_t ) ame ); 297 i( t != 0) 298 r ; 301 t = `__memp_me ( dbv , fid , wme , o , n , 0); 303 r : i( o ! NULL ) 304 `__os_ ( dbv , o ); 305 i( n ! NULL ) 306 `__os_ ( dbv , n ); 307 ( t ); 308 } } @../fileops/fop_rec.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/f.h " 14 ~"dbc/db_am.h " 15 ~"dbc/mp.h " 16 ~"dbc/txn.h " 18 __f_me_cov_t 19 __P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *, )); 59 $__f__cov ( dbv , db , lp , , fo ) 60 DB_ENV * dbv ; 61 DBT * db ; 62 DB_LSN * lp ; 63 db_cs ; 64 * fo ; 66 DB_FH * fhp ; 67 __f__gs * gp ; 68 * _me ; 69 t ; 71 `COMPQUIET ( fo , NULL ); 72 _me = NULL ; 73 `REC_PRINT ( __f__t ); 74 `REC_NOOP_INTRO ( __f__ad ); 76 i(( t = `__db_ame ( dbv , ( APPNAME ) gp -> ame , 77 (cڡ *) gp -> me . da , 0, NULL , & _me )) != 0) 78 out ; 80 i( `DB_UNDO ( )) 81 () `__os_uƚk ( dbv , _me ); 82 i( `DB_REDO ( )) { 83 i(( t = `__os_ݒ ( dbv , _me , 0, 84 DB_OSO_CREATE , () gp -> mode , & fhp )) == 0) 85 () `__os_ohd ( dbv , fhp ); 87 out ; 90 * lp = gp -> ev_l ; 92 out : i( _me ! NULL ) 93 `__os_ ( dbv , _me ); 95 REC_NOOP_CLOSE ; 96 } } 106 $__f_move_cov ( dbv , db , lp , , fo ) 107 DB_ENV * dbv ; 108 DBT * db ; 109 DB_LSN * lp ; 110 db_cs ; 111 * fo ; 113 __f_move_gs * gp ; 114 * _me ; 115 t ; 117 `COMPQUIET ( fo , NULL ); 118 _me = NULL ; 119 `REC_PRINT ( __f_move_t ); 120 `REC_NOOP_INTRO ( __f_move_ad ); 122 i(( t = `__db_ame ( dbv , ( APPNAME ) gp -> ame , 123 (cڡ *) gp -> me . da , 0, NULL , & _me )) != 0) 124 out ; 127 i( `DB_REDO ( )) 128 () `__memp_me ( dbv , 129 ( u_t8_t *) gp -> fid . da , NULL , _me , NULL, 0); 131 * lp = gp -> ev_l ; 132 out : i( _me ! NULL ) 133 `__os_ ( dbv , _me ); 134 REC_NOOP_CLOSE ; 135 } } 145 $__f_wre_cov ( dbv , db , lp , , fo ) 146 DB_ENV * dbv ; 147 DBT * db ; 148 DB_LSN * lp ; 149 db_cs ; 150 * fo ; 152 __f_wre_gs * gp ; 153 t ; 155 `COMPQUIET ( fo , NULL ); 156 `REC_PRINT ( __f_wre_t ); 157 `REC_NOOP_INTRO ( __f_wre_ad ); 159 t = 0; 160 i( `DB_UNDO ( )) 161 `DB_ASSERT ( dbv , gp -> ag != 0); 162 i( `DB_REDO ( )) 163 t = `__f_wre ( dbv , 164 gp -> tx ,rgp-> me . da , ( APPNAME rgp-> ame , 165 NULL , gp -> pgsize ,rgp-> go ,rgp-> offt , 166 gp -> ge . da ,rgp->ge. size ,rgp-> ag , 0); 168 i( t == 0) 169 * lp = gp -> ev_l ; 170 REC_NOOP_CLOSE ; 171 } } 188 $__f_me_cov ( dbv , db , lp , , fo ) 189 DB_ENV * dbv ; 190 DBT * db ; 191 DB_LSN * lp ; 192 db_cs ; 193 * fo ; 195 ( `__f_me_cov_t ( dbv , db , lp , , fo , 1)); 196 } } 199 $__f_me_noundo_cov ( dbv , db , lp , , fo ) 200 DB_ENV * dbv ; 201 DBT * db ; 202 DB_LSN * lp ; 203 db_cs ; 204 * fo ; 206 ( `__f_me_cov_t ( dbv , db , lp , , fo , 0)); 207 } } 210 $__f_me_cov_t ( dbv , db , lp , , fo , undo ) 211 DB_ENV * dbv ; 212 DBT * db ; 213 DB_LSN * lp ; 214 db_cs ; 215 * fo ; 216 undo ; 218 __f_me_gs * gp ; 219 DB_FH * fhp ; 220 DBMETA * ma ; 221 * _w , * _d , * c ; 222 t ; 223 u_t8_t * feid , mbuf [ DBMETASIZE ]; 225 _w = NULL ; 226 _d = NULL ; 227 t = 0; 228 fhp = NULL ; 229 ma = ( DBMETA *)& mbuf [0]; 231 `COMPQUIET ( fo , NULL ); 232 `REC_PRINT ( __f_me_t ); 233 `REC_NOOP_INTRO ( __f_me_ad ); 234 feid = gp ->feid. da ; 236 i(( t = `__db_ame ( dbv , ( APPNAME ) gp -> ame , 237 (cڡ *) gp -> wme . da , 0, NULL , & _w )) != 0) 238 out ; 239 i(( t = `__db_ame ( dbv , ( APPNAME ) gp -> ame , 240 (cڡ *) gp -> dme . da , 0, NULL , & _d )) != 0) 241 out ; 248 i( ! DB_TXN_ABORT && o! DB_TXN_APPLY ) { 249 c = `DB_UNDO ( ? _w : _d ; 256 i( `__os_ݒ ( dbv , c , 0, 0, 0, & fhp ) != 0) 257 de ; 258 i( `__f_ad_ma ( dbv , 259 c , mbuf , DBMETASIZE , fhp , 1, NULL ) != 0) 260 de ; 261 i( `__db_chk_ma ( dbv , NULL , ma , 1) != 0) 262 de ; 263 i( `memcmp ( gp -> feid . da , ma -> uid , DB_FILE_ID_LEN ) != 0) 264 de ; 265 () `__os_ohd ( dbv , fhp ); 266 fhp = NULL ; 267 i( `DB_REDO ( )) { 275 i( `__os_ݒ ( dbv , _w , 0, 0, 0, & fhp ) == 0 && 276 `__f_ad_ma ( dbv , c , mbuf , 277 DBMETASIZE , fhp , 1, NULL ) == 0 && 278 `__db_chk_ma ( dbv , NULL , ma , 1) == 0 && 279 `memcmp ( gp -> feid . da , 280 ma -> uid , DB_FILE_ID_LEN ) != 0) { 281 () `__memp_me ( dbv , 282 feid , NULL , _d , NULL, 0); 283 de ; 288 i( undo && `DB_UNDO ( )) 289 () `__memp_me ( dbv , feid , 290 (cڡ *) gp -> dme . da , _w , _d , 0); 291 i( `DB_REDO ( )) 292 () `__memp_me ( dbv , feid , 293 (cڡ *) gp -> wme . da , _d , _w , 0); 295 de : * lp = gp -> ev_l ; 296 out : i( _w ! NULL ) 297 `__os_ ( dbv , _w ); 298 i( _d ! NULL ) 299 `__os_ ( dbv , _d ); 300 i( fhp ! NULL ) 301 () `__os_ohd ( dbv , fhp ); 303 REC_NOOP_CLOSE ; 304 } } 318 $__f_fe_move_cov ( dbv , db , lp , , fo ) 319 DB_ENV * dbv ; 320 DBT * db ; 321 DB_LSN * lp ; 322 db_cs ; 323 * fo ; 325 __f_fe_move_gs * gp ; 326 DBMETA * ma ; 327 DB_FH * fhp ; 328 * _me ; 329 is_ , is_tmp , t ; 330 size_t n ; 331 u_t8_t mbuf [ DBMETASIZE ]; 332 u_t32_t c , t_ ; 334 fhp = NULL ; 335 is_ = is_tmp = 0; 336 _me = NULL ; 337 ma = ( DBMETA *)& mbuf [0]; 338 `REC_PRINT ( __f_fe_move_t ); 339 `REC_NOOP_INTRO ( __f_fe_move_ad ); 345 i( ! DB_TXN_BACKWARD_ROLL && 346 ! DB_TXN_FORWARD_ROLL && o! DB_TXN_APPLY ) 347 de ; 349 i(( t = `__db_ame ( dbv , 350 ( APPNAME ) gp -> ame ,rgp-> me . da , 0, NULL , & _me )) != 0) 351 out ; 354 n = 0; 355 i( `__os_ݒ ( dbv , _me , 0, 0, 0, & fhp ) != 0 || 356 ( t = `__f_ad_ma ( dbv , _me , 357 mbuf , DBMETASIZE , fhp , 1, & n )) != 0) { 363 i( n != 0) 364 out ; 367 c = TXN_EXPECTED ; 373 () `__db_chk_ma ( dbv , NULL , ma , 1); 374 is_ = 375 `memcmp ( gp -> _fid . da , ma -> uid , DB_FILE_ID_LEN ) == 0; 376 is_tmp = 377 `memcmp ( gp -> tmp_fid . da , ma -> uid , DB_FILE_ID_LEN ) == 0; 379 i(! is_ && ! is_tmp ) 381 c = TXN_IGNORE ; 384 c = TXN_COMMIT ; 386 i( fhp ! NULL ) { 387 () `__os_ohd ( dbv , fhp ); 388 fhp = NULL ; 391 i( `DB_UNDO ( )) { 393 i(( t = `__db_txi_upde ( dbv , 394 fo , gp -> chd , c , NULL , & t_ , 1)) != 0) 395 out ; 396 } i( `DB_REDO ( )) { 401 i( c = TXN_COMMIT ) 402 () `__memp_me ( dbv , 403 is_ ? gp -> _fid . da :rgp-> tmp_fid .data, 404 NULL , _me , NULL, 0); 407 de : * lp = gp -> ev_l ; 408 t = 0; 410 out : i( _me ! NULL ) 411 `__os_ ( dbv , _me ); 412 i( fhp ! NULL ) 413 () `__os_ohd ( dbv , fhp ); 414 REC_NOOP_CLOSE ; 415 } } @../fileops/fop_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/hash.h " 15 ~"dbc/f.h " 16 ~"dbc/lock.h " 17 ~"dbc/mp.h " 18 ~"dbc/log.h " 19 ~"dbc/txn.h " 21 __f_t_pgsize __P (( DB *, DB_FH *, const *)); 22 __f_mem_ __P (( DB *, cڡ *, DB_TXN *, u_t32_t )); 23 __f_mem_dummy __P (( DB *, DB_TXN *, cڡ *, u_t8_t *)); 24 __f_mem_ad_ma __P (( DB *, DB_TXN *, cڡ *, u_t32_t )); 25 __f_mem_sw __P (( DB *, DB *, DB_TXN *, 26 cڡ *, cڡ *, cڡ *, DB_LOCKER *)); 27 __f_disk_dummy __P (( DB *, 28 DB_TXN *, cڡ *, u_t8_t *, u_t32_t )); 29 __f_disk_sw __P (( DB *, DB *, DB_TXN *, 30 cڡ *, cڡ *, cڡ *, DB_LOCKER *, u_t32_t )); 42 #ifde CRITICALPATH_10266 43 #GET_ENVLOCK ( ENV , ID , L (0) ) 45 #GET_ENVLOCK ( ENV , ID , L ) do { \ 46 DBT __dbt ; \ 47 u_t32_t __lockv ; \ 49 i( `LOCKING_ON (( ENV ))) { \ 50 __lockv = 1; \ 51 __dbt . da = & __lockv ; \ 52 __dbt . size = ( __lockv ); \ 53 i(( t = `__lock_g (( ENV ), ( ID ), \ 54 0, & __dbt , DB_LOCK_WRITE , ( L ))) != 0) \ 55 r ; \ 57 } 0) ) 60 #RESET_MPF ( D , F ) do { \ 61 () `__memp_fo (( D )-> mpf , ( F )); \ 62 ( D )-> mpf = NULL ; \ 63 `F_CLR (( D ), DB_AM_OPEN_CALLED ); \ 64 i(( t = `__memp_f (( D )-> dbv , &(D)-> mpf )) != 0) \ 65 r ; \ 66 } 0) ) 73 #CLOSE_HANDLE ( D , F ) { \ 74 i(( F ! NULL ) { \ 75 i( `LF_ISSET ( DB_FCNTL_LOCKING )) \ 76 ( D )-> ved_ݒ_fhp = ( F ); \ 77 i(( t_t = \ 78 `__os_ohd (( D )-> dbv , ( F ))) != 0) { \ 79 i( t == 0) \ 80 t = t_t ; \ 81 r ; \ 83 ( F NULL ; \ 85 } ) 99 $__f_lock_hd ( dbv , dbp , lock , mode , ockp , ags ) 100 DB_ENV * dbv ; 101 DB * dbp ; 102 DB_LOCKER * lock ; 103 db_lockmode_t mode ; 104 DB_LOCK * ockp ; 105 u_t32_t ags ; 107 DBT feobj ; 108 DB_LOCKREQ qs [2], * eq ; 109 DB_LOCK_ILOCK lock_desc ; 110 t ; 112 i(! `LOCKING_ON ( dbv ) || 113 `F_ISSET ( dbp , DB_AM_COMPENSATE | DB_AM_RECOVER )) 120 i( `IS_RECOVERING ( dbv )) 121 ( ockp = NULL ? 0 : `__ENV_LPUT ( dbv , *elockp)); 123 `memy ( lock_desc . feid , dbp ->feid, DB_FILE_ID_LEN ); 124 lock_desc . pgno = dbp -> ma_pgno ; 125 lock_desc . ty = DB_HANDLE_LOCK ; 127 `memt (& feobj , 0, (fileobj)); 128 feobj . da = & lock_desc ; 129 feobj . size = ( lock_desc ); 130 `DB_TEST_SUBLOCKS ( dbv , ags ); 131 i( ockp = NULL ) 132 t = `__lock_g ( dbv , lock , 133 ags , & feobj , mode , & dbp -> hd_lock ); 135 qs [0]. = DB_LOCK_PUT ; 136 qs [0]. lock = * ockp ; 137 qs [1]. = DB_LOCK_GET ; 138 qs [1]. mode = mode; 139 qs [1]. obj = & feobj ; 140 qs [1]. timeout = 0; 141 i(( t = `__lock_vec ( dbv , 142 lock , ags , qs , 2, & eq )) == 0) { 143 dbp -> hd_lock = qs [1]. lock ; 144 `LOCK_INIT (* ockp ); 145 } i( eq ! qs ) 146 `LOCK_INIT (* ockp ); 149 dbp -> cur_lock = lock ; 150 ( t ); 151 } } 200 $__f_fe_tup ( dbp , txn , me , mode , ags , tidp ) 201 DB * dbp ; 202 DB_TXN * txn ; 203 cڡ * me ; 204 mode ; 205 u_t32_t ags , * tidp ; 207 DB_ENV * dbv ; 208 DB_FH * fhp ; 209 DB_LOCK ock ; 210 DB_LOCKER * lock ; 211 DB_TXN * xn ; 212 DBTYPE ve_ty ; 213 size_t n ; 214 u_t32_t dags , oags ; 215 u_t8_t mbuf [ DBMETASIZE ]; 216 d_lock , _ok , t , s , t_t , tmp_d ; 217 untg , was_v ; 218 * _me , * _tmame , * tmame ; 220 * tidp = TXN_INVALID ; 222 dbv = dbp ->dbenv; 223 fhp = NULL ; 224 `LOCK_INIT ( ock ); 225 xn = NULL ; 226 d_lock = tmp_d = untg = was_v = 0; 227 _me = _tmame = tmame = NULL ; 228 dags = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0; 230 t = 0; 231 s = 0; 232 ve_ty = dbp -> ty ; 239 i( `LOCKING_ON ( dbv ) && 240 ! `F_ISSET ( dbp , DB_AM_COMPENSATE ) && 241 ! `F_ISSET ( dbp , DB_AM_RECOVER ) && 242 dbp -> lock = DB_LOCK_INVALIDID ) { 243 i(( t = `__lock_id ( dbv , NULL , & dbp -> lock )) != 0) 244 r ; 245 d_lock = 1; 247 `LOCK_INIT ( dbp -> hd_lock ); 249 lock = txn = NULL ? dbp ->locker :xn->locker; 251 oags = 0; 252 i( `F_ISSET ( dbp , DB_AM_INMEM )) 253 _me = (*) me ; 256 i(( t = `__db_ame ( dbv , 257 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 258 r ; 261 i( mode == 0) 262 mode = `__db_omode ("rw-rw----"); 264 i( `LF_ISSET ( DB_RDONLY )) 265 oags | DB_OSO_RDONLY ; 266 i( `LF_ISSET ( DB_TRUNCATE )) 267 oags | DB_OSO_TRUNC ; 270 s = 0; 271 _ok = `LF_ISSET ( DB_CREATE ); 272 `LF_CLR ( DB_CREATE ); 274 y : 281 i(++ s > DB_RETRY ) { 282 `__db_rx ( dbv , "__fop_file_setup: Retryimit (%d)xceeded", 283 DB_RETRY ); 284 r ; 286 i(! `F_ISSET ( dbp , DB_AM_COMPENSATE && !F_ISSET(dbp, DB_AM_RECOVER )) 287 `GET_ENVLOCK ( dbv , lock , & ock ); 288 i( me = NULL ) 289 t = ENOENT ; 290 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 291 t = `__db_v_mpo ( dbp , me , ags ); 301 i( t = EINVAL ) { 302 was_v = 1; 303 ve_ty = dbp -> ty ; 304 dbp -> ty = DB_UNKNOWN ; 305 t = `__db_v_mpo ( dbp , me , ags ); 306 dbp -> ty = ve_ty ; 309 t = `__os_exis ( dbv , _me , NULL ); 311 i( t == 0) { 329 ݒ : i(! `F_ISSET ( dbp , DB_AM_INMEM && ( t = 330 `__os_ݒ ( dbv , _me , 0, oags , 0, & fhp )) != 0) 331 r ; 334 i( `LF_ISSET ( DB_TRUNCATE )) { 335 i( `LF_ISSET ( DB_EXCL )) { 337 t = EEXIST ; 338 r ; 340 tmame = (*) me ; 341 t2 ; 345 i( `F_ISSET ( dbp , DB_AM_INMEM )) 346 t = `__f_mem_ad_ma ( dbp , txn , me , ags ); 348 t = `__f_ad_ma ( dbv , _me , mbuf , 349 ( mbuf ), fhp , 350 `LF_ISSET ( DB_FCNTL_LOCKING && txn = NULL ? 1 : 0, 351 & n ); 354 i( t !0 && n =0 && txn = NULL ) { 355 i( `LF_ISSET ( DB_EXCL )) { 360 t = EEXIST ; 361 r ; 363 tmame = (*) me ; 364 t2 ; 368 i( t == 0) 369 t = `__db_ma_tup ( dbv , dbp , 370 _me , ( DBMETA *) mbuf , ags , 1); 375 i( t != 0) 376 r ; 379 i(( t = `__f_lock_hd ( dbv , 380 dbp , lock , DB_LOCK_READ , NULL , DB_LOCK_NOWAIT )) == 0) { 381 i(( t = `__ENV_LPUT ( dbv , ock )) != 0) 382 r ; 383 } i( t ! DB_LOCK_NOTGRANTED || 384 ( txn ! NULL && `F_ISSET xn, TXN_NOWAIT ))) 385 r ; 401 `DB_ASSERT ( dbv , ! `LF_ISSET ( DB_FCNTL_LOCKING )); 402 i(! `F_ISSET ( dbp , DB_AM_INMEM )) { 403 i(( t = `__os_ohd ( dbv , fhp )) != 0) 404 r ; 405 fhp = NULL ; 407 i(( t = `__f_lock_hd ( dbv , 408 dbp , lock , DB_LOCK_READ , & ock , 0)) != 0) { 409 i( `F_ISSET ( dbp , DB_AM_INMEM )) 410 `RESET_MPF ( dbp , 0); 411 r ; 428 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 429 i(( t = `__db_esh ( dbp , 430 txn , DB_NOSYNC , NULL , 1)) != 0) 431 r ; 432 t = `__db_v_mpo ( dbp , me , ags ); 434 t = 435 `__os_ݒ ( dbv , _me , 0, 0, 0, & fhp ); 437 i( t != 0) { 438 i(( t = 439 `__ENV_LPUT ( dbv , dbp -> hd_lock )) != 0) { 440 `LOCK_INIT ( dbp -> hd_lock ); 441 r ; 443 y ; 446 dbp -> ty = ve_ty ; 447 i( `F_ISSET ( dbp , DB_AM_INMEM )) 448 t = `__f_mem_ad_ma ( dbp , 449 txn , me , ags ); 450 i(( t = 451 `__f_ad_ma ( dbv , _me , mbuf , 452 ( mbuf ), fhp , 453 `LF_ISSET ( DB_FCNTL_LOCKING && txn = NULL ? 1 : 0, 454 & n )) != 0 || 455 ( t = `__db_ma_tup ( dbv , dbp , _me , 456 ( DBMETA *) mbuf , ags , DB_CHK_META )) != 0) 457 r ; 472 i( `F_ISSET ( dbp , DB_AM_IN_RENAME )) { 473 was_v = 0; 474 i( _ok ) { 475 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 476 `RESET_MPF ( dbp , DB_MPOOL_DISCARD ); 477 } i(( t = 478 `__os_ohd ( dbv , fhp )) != 0) 479 r ; 480 `LF_SET ( DB_CREATE ); 481 ; 483 t = ENOENT ; 484 r ; 489 i( was_v ) { 490 t = EINVAL ; 491 r ; 501 i( `LF_ISSET ( DB_EXCL )) { 502 t = `__ENV_LPUT ( dbv , dbp -> hd_lock ); 503 `LOCK_INIT ( dbp -> hd_lock ); 504 i( t == 0) 505 t = EEXIST ; 506 r ; 508 de ; 512 #ifdef HAVE_VXWORKS 517 i(! _ok ) 519 i(! _ok || t ! ENOENT ) 521 r ; 522 `LF_SET ( DB_CREATE ); 523 t = 0; 532 i(! `F_ISSET ( dbp , DB_AM_INMEM ) && 533 ( t = `__ENV_LPUT ( dbv , ock )) != 0) 534 r ; 536 : i( txn ! NULL && `IS_REP_CLIENT ( dbv ) && 537 ! `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 538 `__db_rx ( dbv , 540 t = EINVAL ; 541 r ; 544 i( `F_ISSET ( dbp , DB_AM_INMEM )) 545 t = `__f_mem_ ( dbp , me , txn , ags ); 547 i(( t = `__db_backup_me ( dbv , me , txn , & tmame )) != 0) 548 r ; 549 i( `TXN_ON ( dbv && txn ! NULL && 550 ( t = `__txn_beg ( dbv , txn , & xn , 0)) != 0) 551 r ; 552 i(( t = `__f_ ( dbv , 553 xn , & fhp , tmame , DB_APP_DATA , mode , dags )) != 0) { 560 i(! `TXN_ON ( dbv && t = EEXIST ) { 561 `__os_ ( dbv , tmame ); 562 tmame = NULL ; 563 `__os_p ( dbv , 1, 0); 564 y ; 566 r ; 568 tmp_d = 1; 571 t2 : i(! `F_ISSET ( dbp , DB_AM_INMEM )) { 572 i(( t = `__db_ame ( dbv , 573 DB_APP_DATA , tmame , 0, NULL , & _tmame )) != 0) 574 r ; 577 i( dbp -> pgsize == 0 && 578 ( t = `__f_t_pgsize ( dbp , fhp , _tmame )) != 0) 579 rmsg ; 582 i(( t = 583 `__os_feid ( dbv , _tmame , 1, dbp -> feid )) != 0) 584 rmsg ; 587 i(( t = `__db_w_fe ( dbp , 588 `F_ISSET ( dbp , DB_AM_INMEM ? txn : xn , fhp , tmame )) != 0) 589 r ; 595 `CLOSE_HANDLE ( dbp , fhp ); 603 i(! `F_ISSET ( dbp , DB_AM_COMPENSATE ) && 604 ! `F_ISSET ( dbp , DB_AM_RECOVER && ! `LOCK_ISSET ( ock )) 605 `GET_ENVLOCK ( dbv , lock , & ock ); 607 i( `F_ISSET ( dbp , DB_AM_IN_RENAME )) { 608 `F_CLR ( dbp , DB_AM_IN_RENAME ); 609 `__txn_mm ( dbv , txn , _me ); 610 } i( me = tmame ) { 612 } i(! `F_ISSET ( dbp , DB_AM_INMEM ) && 613 `__os_exis ( dbv , _me , NULL ) == 0) { 618 () `__f_move ( dbv , 619 NULL , dbp -> feid , tmame , DB_APP_DATA , dags ); 620 () `__ENV_LPUT ( dbv , dbp -> hd_lock ); 621 `LOCK_INIT ( dbp -> hd_lock ); 623 i( xn ! NULL ) { 624 t = `__txn_abt ( xn ); 625 xn = NULL ; 627 i( t != 0) 628 r ; 629 ݒ ; 632 i( me ! NULL && ( t = `__f_lock_hd ( dbv , 633 dbp , lock , DB_LOCK_WRITE , & ock , `NOWAIT_FLAG ( txn ))) != 0) 634 r ; 635 i( tmame ! NULL &&mam! me && ( t = `__f_me ( dbv , 636 xn , tmame , me , dbp -> feid , DB_APP_DATA , 1, dags )) != 0) 637 r ; 639 i( xn ! NULL ) { 640 * tidp = xn -> txnid ; 641 t = `__txn_comm ( xn , 0); 642 xn = NULL ; 644 * tidp = TXN_INVALID ; 646 i( t != 0) 647 r ; 649 `F_SET ( dbp , DB_AM_CREATED ); 652 rmsg : `__db_r ( dbv , t , "%s", me ); 654 r : `CLOSE_HANDLE ( dbp , fhp ); 655 i( xn ! NULL ) 656 () `__txn_abt ( xn ); 657 i( tmp_d && txn = NULL ) 658 () `__f_move ( dbv , 659 NULL , NULL, tmame , DB_APP_DATA , dags ); 660 i( txn = NULL ) 661 () `__ENV_LPUT ( dbv , dbp -> hd_lock ); 662 () `__ENV_LPUT ( dbv , ock ); 663 i( d_lock ) { 664 () `__lock_id_ ( dbv , dbp -> lock ); 665 dbp -> lock = NULL ; 669 de : 674 i(! untg && tmame ! NULL &&mam! me ) 675 `__os_ ( dbv , tmame ); 676 i( _me ! me &&l_m! NULL ) 677 `__os_ ( dbv , _me ); 678 i( _tmame ! NULL ) 679 `__os_ ( dbv , _tmame ); 680 `CLOSE_HANDLE ( dbp , fhp ); 682 ( t ); 683 } } 690 $__f_t_pgsize ( dbp , fhp , me ) 691 DB * dbp ; 692 DB_FH * fhp ; 693 cڡ * me ; 695 DB_ENV * dbv ; 696 u_t32_t isize ; 697 t ; 699 dbv = dbp ->dbenv; 707 i(( t = `__os_iofo ( dbv , me , fhp , NULL , NULL, & isize )) != 0) { 708 `__db_r ( dbv , t , "%s", me ); 709 ( t ); 711 i( isize < 512) 712 isize = 512; 713 i( isize > 16 * 1024) 714 isize = 16 * 1024; 722 i(! `IS_VALID_PAGESIZE ( isize )) 723 isize = DB_DEF_IOSIZE ; 725 dbp -> pgsize = isize ; 726 `F_SET ( dbp , DB_AM_PGDEF ); 729 } } 747 $__f_subdb_tup ( dbp , txn , mme , me , mode , ags ) 748 DB * dbp ; 749 DB_TXN * txn ; 750 cڡ * mme , * me ; 751 mode ; 752 u_t32_t ags ; 754 DB * mdbp ; 755 DB_ENV * dbv ; 756 db_lockmode_t lkmode ; 757 t , t_t ; 759 mdbp = NULL ; 760 dbv = dbp ->dbenv; 762 i(( t = `__db_ma_ݒ ( dbp , txn , mme , ags , mode , & mdbp )) != 0) 763 ( t ); 769 i( `F_ISSET ( mdbp , DB_AM_CREATED )) 770 `F_SET ( mdbp , DB_AM_DISCARD ); 776 i( `LF_ISSET ( DB_FCNTL_LOCKING )) { 777 dbp -> ved_ݒ_fhp = mdbp ->saved_open_fhp; 778 mdbp -> ved_ݒ_fhp = NULL ; 782 dbp -> pgsize = mdbp ->pgsize; 783 `F_SET ( dbp , DB_AM_SUBDB ); 785 i( me ! NULL && ( t = `__db_ma_upde ( mdbp , dbp , txn , 786 me , dbp -> ty , MU_OPEN , NULL , ags )) != 0) 787 r ; 796 dbp -> lock = mdbp ->locker; 797 mdbp -> lock = NULL ; 799 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTLOG , t , mme ); 807 `memy ( dbp -> feid , mdbp ->feid, DB_FILE_ID_LEN ); 808 lkmode = `F_ISSET ( dbp , DB_AM_CREATED || `LF_ISSET ( DB_WRITEOPEN ) ? 809 DB_LOCK_WRITE : DB_LOCK_READ ; 810 i(( t = `__f_lock_hd ( dbv , dbp , 811 txn = NULL ? dbp -> lock :xn->lock, lkmode , NULL, 812 `NOWAIT_FLAG ( txn ))) != 0) 813 r ; 815 i(( t = `__db__subdb ( mdbp , dbp , me , txn )) != 0) { 820 i( `F_ISSET ( dbp , DB_AM_CREATED && txn = NULL ) 821 () `__db_ma_upde ( mdbp , dbp , txn , 822 me , dbp -> ty , MU_REMOVE , NULL , 0); 823 `F_CLR ( dbp , DB_AM_CREATED ); 824 r ; 836 `F_CLR ( dbp , DB_AM_SWAP ); 837 `F_SET ( dbp , `F_ISSET ( mdbp , DB_AM_SWAP )); 844 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTLOGMETA , t , mme ); 845 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTSYNC , t , mme ); 851 i( `F_ISSET ( mdbp , DB_AM_CREATED )) { 852 `F_SET ( dbp , DB_AM_CREATED_MSTR ); 853 `F_CLR ( mdbp , DB_AM_DISCARD ); 857 r : 858 DB_TEST_RECOVERY_LABEL 859 i( txn = NULL ) 860 () `__ENV_LPUT ( dbv , dbp -> hd_lock ); 873 i(! `F_ISSET ( dbp , DB_AM_RECOVER && `IS_REAL_TXN ( txn )) { 875 `__txn_mlock ( dbv , 876 txn , & mdbp -> hd_lock , DB_LOCK_INVALIDID ); 879 i(( t_t = `__txn_lockevt ( dbv , txn , dbp , 880 & mdbp -> hd_lock , dbp -> lock = NULL ? 881 mdbp -> lock : dbp ->lock)!0 && t == 0) 882 t = t_t ; 884 `LOCK_INIT ( mdbp -> hd_lock ); 892 i( txn = NULL || `F_ISSET xn, TXN_CDSGROUP ) || 893 `F_ISSET ( mdbp , DB_AM_RECOVER )) { 894 i(( t_t = `__db_o ( mdbp , txn , 895 `F_ISSET ( dbp , DB_AM_CREATED_MSTR ? 0 : DB_NOSYNC )) != 0 && 896 t == 0) 897 t = t_t ; 899 i( `F_ISSET ( dbp , DB_AM_CREATED_MSTR ) && 900 ( t_t = `__memp_fsync ( mdbp -> mpf )!0 && t == 0) 901 t = t_t ; 903 i(( t_t = 904 `__txn_oevt ( dbv , txn , mdbp )!0 && t == 0) 905 t = t_t ; 908 ( t ); 909 } } 919 $__f_move_tup ( dbp , txn , me , ags ) 920 DB * dbp ; 921 DB_TXN * txn ; 922 cڡ * me ; 923 u_t32_t ags ; 925 DB_ENV * dbv ; 926 DB_FH * fhp ; 927 DB_LOCK ock ; 928 u_t8_t mbuf [ DBMETASIZE ]; 929 t ; 931 `COMPQUIET ( ags , 0); 932 dbv = dbp ->dbenv; 933 `PANIC_CHECK ( dbv ); 934 `LOCK_INIT ( ock ); 935 fhp = NULL ; 936 t = 0; 939 y : i( `LOCKING_ON ( dbv )) { 940 i( txn ! NULL ) 941 dbp -> lock = txn ->locker; 942 i( dbp -> lock = DB_LOCK_INVALIDID ) { 943 i(( t = `__lock_id ( dbv , NULL , & dbp -> lock )) != 0) 944 r ; 958 fhp = dbp -> ved_ݒ_fhp ; 959 `DB_ASSERT ( dbv , `LF_ISSET ( DB_FCNTL_LOCKING || fhp = NULL ); 966 `GET_ENVLOCK ( dbv , dbp -> lock , & ock ); 969 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 970 i(( t = `__db_v_mpo ( dbp , me , ags )) == 0) 971 t = `__os_rdup ( dbv , me , & dbp -> dme ); 972 } i( fhp = NULL ) 973 t = `__os_ݒ ( dbv , me , 0, DB_OSO_RDONLY , 0, & fhp ); 974 i( t != 0) 975 r ; 978 i( `F_ISSET ( dbp , DB_AM_INMEM )) 979 t = `__f_mem_ad_ma ( dbp , txn , me , ags ); 980 i(( t = `__f_ad_ma ( dbv , 981 me , mbuf , (mbuf), fhp , 0, NULL )) == 0) 982 t = `__db_ma_tup ( dbv , dbp , 983 me , ( DBMETA *) mbuf , ags , DB_CHK_META | DB_CHK_NOLSN ); 984 i( t != 0) 985 r ; 993 i(( t = `__f_lock_hd ( dbv , 994 dbp , dbp-> lock , DB_LOCK_WRITE , NULL , DB_LOCK_NOWAIT )) != 0) { 999 i(! `F_ISSET ( dbp , DB_AM_INMEM && ! `LF_ISSET ( DB_FCNTL_LOCKING )) { 1000 () `__os_ohd ( dbv , fhp ); 1001 fhp = NULL ; 1003 i( t ! DB_LOCK_NOTGRANTED || 1004 ( txn ! NULL && `F_ISSET xn, TXN_NOWAIT ))) 1005 r ; 1006 i(( t = `__f_lock_hd ( dbv , 1007 dbp , dbp-> lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1008 r ; 1010 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 1011 () `__lock_put ( dbv , & dbp -> hd_lock ); 1012 () `__db_esh ( dbp , txn , DB_NOSYNC , NULL , 1); 1014 i( txn ! NULL ) 1015 dbp -> lock = NULL ; 1016 () `__db_esh ( dbp , txn , DB_NOSYNC , NULL , 0); 1018 y ; 1019 } i(( t = `__ENV_LPUT ( dbv , ock )) != 0) 1020 r ; 1021 i( `F_ISSET ( dbp , DB_AM_IN_RENAME )) 1022 t = ENOENT ; 1025 r : () `__ENV_LPUT ( dbv , ock ); 1027 i( fhp ! NULL && ! `LF_ISSET ( DB_FCNTL_LOCKING )) 1028 () `__os_ohd ( dbv , fhp ); 1037 i( t =0 && ! `F_ISSET ( dbp , DB_AM_INMEM )) 1038 `F_SET ( dbp , DB_AM_DISCARD ); 1039 ( t ); 1040 } } 1050 $__f_ad_ma ( dbv , me , buf , size , fhp , rok , nby ) 1051 DB_ENV * dbv ; 1052 cڡ * me ; 1053 u_t8_t * buf ; 1054 size_t size ; 1055 DB_FH * fhp ; 1056 rok ; 1057 size_t * nby ; 1059 size_t ; 1060 t ; 1066 i( nby ! NULL ) 1067 * nby = 0; 1069 = 0; 1070 t = `__os_ad ( dbv , fhp , buf , size , & ); 1071 i( nby ! NULL ) 1072 * nby = ; 1074 i( t != 0) { 1075 i(! rok ) 1076 `__db_r ( dbv , t , "%s", me ); 1077 r ; 1080 i( ! size ) { 1081 i(! rok ) 1082 `__db_rx ( dbv , 1083 "%s: uxed fty ofm", me ); 1084 t = EINVAL ; 1087 r : 1088 ( t ); 1089 } } 1101 $__f_dummy ( dbp , txn , d , w , ags ) 1102 DB * dbp ; 1103 DB_TXN * txn ; 1104 cڡ * d , * w ; 1105 u_t32_t ags ; 1107 DB * tmpdbp ; 1108 DB_ENV * dbv ; 1109 DB_TXN * xn ; 1110 * back ; 1111 t , t_t ; 1112 u_t8_t mbuf [ DBMETASIZE ]; 1114 dbv = dbp ->dbenv; 1115 back = NULL ; 1116 xn = NULL ; 1117 tmpdbp = NULL ; 1119 `DB_ASSERT ( dbv , txn ! NULL ); 1126 i( `TXN_ON ( dbv && ( t = `__txn_beg (dbv, txn , & xn , 0)) != 0) 1127 r ; 1130 i(( t = `__db_backup_me ( dbv , w , xn , & back )) != 0) 1131 r ; 1133 i(( t = `__db__ (& tmpdbp , dbv , 0)) != 0) 1134 r ; 1136 `memt ( mbuf , 0, (mbuf)); 1137 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 1138 `__f_mem_dummy ( tmpdbp , xn , back , mbuf ) : 1139 `__f_disk_dummy ( tmpdbp , xn , back , mbuf , ags ); 1141 i( t != 0) 1142 r ; 1144 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 1145 `__f_mem_sw ( dbp , tmpdbp , xn , d , w , back , txn -> lock ) : 1146 `__f_disk_sw ( dbp , 1147 tmpdbp , xn , d , w , back , txn -> lock , ags ); 1148 xn = NULL ; 1149 i( t != 0) 1150 r ; 1152 r : i( xn ! NULL ) 1153 () `__txn_abt ( xn ); 1154 i( tmpdbp ! NULL && 1155 ( t_t = `__db_o ( tmpdbp , NULL , 0)!0 && t == 0) 1156 t = t_t ; 1157 i( back ! NULL ) 1158 `__os_ ( dbv , back ); 1159 ( t ); 1160 } } 1172 $__f_dbme ( dbp , d , w ) 1173 DB * dbp ; 1174 cڡ * d , * w ; 1176 DB_ENV * dbv ; 1177 DB_LOCK ock ; 1178 * _w , * _d ; 1179 t , t_t ; 1181 dbv = dbp ->dbenv; 1182 _w = NULL ; 1183 _d = NULL ; 1184 `LOCK_INIT ( ock ); 1186 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 1187 _w = (*) w ; 1188 _d = (*) d ; 1191 i(( t = `__db_ame ( dbv , 1192 DB_APP_DATA , w , 0, NULL , & _w )) != 0) 1193 r ; 1195 i(( t = `__db_ame ( dbv , 1196 DB_APP_DATA , d , 0, NULL , & _d )) != 0) 1197 r ; 1206 `GET_ENVLOCK ( dbv , dbp -> lock , & ock ); 1207 t = `F_ISSET ( dbp , DB_AM_INMEM ? ENOENT : 1208 `__os_exis ( dbv , _w , NULL ); 1210 i( t == 0) { 1211 t = EEXIST ; 1212 `__db_rx ( dbv , "me: f%exis", _w ); 1213 r ; 1216 t = `__memp_me ( dbv , 1217 dbp -> feid , w , _d , _w , `F_ISSET (dbp, DB_AM_INMEM )); 1219 r : i(( t_t = `__ENV_LPUT ( dbv , ock )!0 && t == 0) 1220 t = t_t ; 1221 i(! `F_ISSET ( dbp , DB_AM_INMEM && _d ! NULL ) 1222 `__os_ ( dbv , _d ); 1223 i(! `F_ISSET ( dbp , DB_AM_INMEM && _w ! NULL ) 1224 `__os_ ( dbv , _w ); 1225 ( t ); 1226 } } 1229 $__f_mem_ ( dbp , me , txn , ags ) 1230 DB * dbp ; 1231 cڡ * me ; 1232 DB_TXN * txn ; 1233 u_t32_t ags ; 1235 DB_ENV * dbv ; 1236 DB_LSN l ; 1237 DBT fid_dbt , me_dbt ; 1238 t ; 1239 t32_t lfid ; 1240 u_t32_t * p32 ; 1242 dbv = dbp ->dbenv; 1244 `MAKE_INMEM ( dbp ); 1247 i( dbp -> pgsize == 0) 1248 dbp -> pgsize = DB_DEF_IOSIZE ; 1261 i( me = NULL ) { 1262 i( `LOCKING_ON ( dbv && ( t = 1263 `__lock_id ( dbv , ( u_t32_t *) dbp -> feid , NULL )) != 0) 1264 r ; 1266 p32 = ( u_t32_t *)(& dbp -> feid [0]); 1267 `__os_unique_id ( dbv , p32 ); 1268 p32 ++; 1269 () `y ( 1270 (*) p32 , me , DB_FILE_ID_LEN - ( u_t32_t )); 1271 dbp -> erve_fid = 1; 1273 i( `DBENV_LOGGING ( dbv ) && 1274 #i! `defed ( DEBUG_WOP && !defed( DIAGNOSTIC ) 1275 txn ! NULL && 1277 dbp -> log_fame ! NULL ) 1278 `memy ( dbp -> log_fame -> ufid , 1279 dbp -> feid , DB_FILE_ID_LEN ); 1283 i(( t = `__memp_t_feid ( dbp -> mpf , dbp-> feid )) != 0) 1284 r ; 1286 i(( t = `__db_v_mpo ( dbp , me , ags )) != 0) 1287 r ; 1289 i( `DBENV_LOGGING ( dbv ) && 1290 #i! `defed ( DEBUG_WOP ) 1291 txn ! NULL && 1293 me ! NULL ) { 1294 `DB_INIT_DBT ( me_dbt , me , ` (name) + 1); 1295 `memt (& fid_dbt , 0, (fid_dbt)); 1296 fid_dbt . da = dbp -> feid ; 1297 fid_dbt . size = DB_FILE_ID_LEN ; 1298 lfid = dbp -> log_fame = NULL ? 1299 DB_LOGFILEID_INVALID : dbp -> log_fame -> id ; 1300 i(( t = `__d_mem__log ( dbv , txn , 1301 & l , 0, lfid , & me_dbt , & fid_dbt , dbp -> pgsize )) != 0) 1302 r ; 1305 `F_SET ( dbp , DB_AM_CREATED ); 1307 r : 1308 ( t ); 1309 } } 1312 $__f_mem_ad_ma ( dbp , txn , me , ags ) 1313 DB * dbp ; 1314 DB_TXN * txn ; 1315 cڡ * me ; 1316 u_t32_t ags ; 1318 DBMETA * m ; 1319 db_pgno_t pgno ; 1320 t , t_t ; 1322 pgno = PGNO_BASE_MD ; 1323 i(( t = `__memp_fg ( dbp -> mpf , & pgno , txn , 0, & m )) != 0) 1324 ( t ); 1325 t = `__db_ma_tup ( dbp -> dbv , dbp, me , m , ags , 1); 1327 i(( t_t = 1328 `__memp_ut ( dbp -> mpf , m , dbp-> iܙy )&& t == 0) 1329 t = t_t ; 1331 ( t ); 1332 } } 1335 $__f_disk_dummy ( dbp , txn , me , mbuf , ags ) 1336 DB * dbp ; 1337 DB_TXN * txn ; 1338 cڡ * me ; 1339 u_t8_t * mbuf ; 1340 u_t32_t ags ; 1342 DB_ENV * dbv ; 1343 t ; 1344 * me ; 1345 u_t32_t dags ; 1347 me = NULL ; 1348 dbv = dbp ->dbenv; 1349 dags = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0; 1351 i(( t = `__db_ame ( dbv , 1352 DB_APP_DATA , me , ags , NULL , & me )) != 0) 1353 r ; 1355 i(( t = `__f_ ( dbv , 1356 txn , NULL , me , DB_APP_DATA , 0, dags )) != 0) 1357 r ; 1359 i(( t = 1360 `__os_feid ( dbv , me , 1, (( DBMETA *) mbuf )-> uid )) != 0) 1361 r ; 1363 (( DBMETA *) mbuf )-> magic = DB_RENAMEMAGIC ; 1364 i(( t = `__f_wre ( dbv , txn , me , 1365 DB_APP_DATA , NULL , 0, 0, 0, mbuf , DBMETASIZE , 1, dags )) != 0) 1366 r ; 1368 `memy ( dbp -> feid , (( DBMETA *) mbuf )-> uid , DB_FILE_ID_LEN ); 1370 r : i( me ! NULL ) 1371 `__os_ ( dbv , me ); 1373 ( t ); 1374 } } 1377 $__f_mem_dummy ( dbp , txn , me , mbuf ) 1378 DB * dbp ; 1379 DB_TXN * txn ; 1380 cڡ * me ; 1381 u_t8_t * mbuf ; 1383 DBMETA * m ; 1384 db_pgno_t pgno ; 1385 t , t_t ; 1387 i(( t = `__f_mem_ ( dbp , me , txn , DB_CREATE )) != 0) 1388 ( t ); 1390 pgno = PGNO_BASE_MD ; 1391 i(( t = `__memp_fg ( dbp -> mpf , & pgno , txn , 1392 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & m )) != 0) 1393 ( t ); 1395 i( m -> magic != 0) 1396 t = EEXIST ; 1398 m -> magic = DB_RENAMEMAGIC ; 1401 `memy ( m -> uid , dbp -> feid , DB_FILE_ID_LEN ); 1403 i(( t_t = `__memp_ut ( dbp -> mpf , m , 1404 t =0 ? dbp -> iܙy : DB_PRIORITY_VERY_LOW )) != 0 &&et == 0) 1405 t = t_t ; 1407 i( t != 0) 1408 r ; 1410 (( DBMETA *) mbuf )-> magic = DB_RENAMEMAGIC ; 1412 r : ( t ); 1413 } } 1416 $__f_disk_sw ( dbp , tmpdbp , txn , d , w , back , lock , ags ) 1417 DB * dbp , * tmpdbp ; 1418 DB_TXN * txn ; 1419 cڡ * d , * w , * back ; 1420 DB_LOCKER * lock ; 1421 u_t32_t ags ; 1423 DB_ENV * dbv ; 1424 DB_FH * fhp ; 1425 DB_LOCK ock ; 1426 DB_LSN l ; 1427 DBT fiddbt , medbt , tmpdbt ; 1428 DB_TXN * ; 1429 * d , * w ; 1430 t , t_t ; 1431 u_t8_t mbuf [ DBMETASIZE ]; 1432 u_t32_t chd_txnid , dags ; 1434 dbv = dbp ->dbenv; 1435 `DB_ASSERT ( dbv , txn ! NULL ); 1436 `DB_ASSERT ( dbv , d ! NULL ); 1438 d = w = NULL ; 1439 `LOCK_INIT ( ock ); 1440 fhp = NULL ; 1441 dags = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0; 1443 i(( t = 1444 `__db_ame ( dbv , DB_APP_DATA , w , 0, NULL , & w )) != 0) 1445 r ; 1448 y : `GET_ENVLOCK ( dbv , lock , & ock ); 1449 i( `__os_exis ( dbv , w , NULL ) == 0) { 1456 i(( t = `__os_ݒ ( dbv , w , 0, 0, 0, & fhp )) != 0) 1457 r ; 1458 i(( t = `__f_ad_ma ( dbv , 1459 w , mbuf , (mbuf), fhp , 0, NULL )) != 0 || 1460 ( t = `__db_ma_tup ( dbv , 1461 tmpdbp , w , ( DBMETA *) mbuf , 0, 1)) != 0) { 1462 t = EEXIST ; 1463 r ; 1465 t = `__os_ohd ( dbv , fhp ); 1466 fhp = NULL ; 1467 i( t != 0) 1468 r ; 1496 i(( t = `__f_lock_hd ( dbv , 1497 tmpdbp , lock , DB_LOCK_READ , NULL , DB_LOCK_NOWAIT )) != 0) { 1502 i(( t = `__f_lock_hd ( dbv , tmpdbp , 1503 lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1504 r ; 1505 i(( t = 1506 `__lock_put ( dbv , & tmpdbp -> hd_lock )) != 0) 1507 r ; 1508 i(( t = `__db_esh ( tmpdbp , NULL , 0, NULL, 0)) != 0) 1509 r ; 1510 y ; 1514 t = `__f_lock_hd ( dbv , 1515 tmpdbp , lock , DB_LOCK_WRITE , 1516 NULL , DB_LOCK_UPGRADE | DB_LOCK_NOWAIT ); 1517 i( t != 0) { 1522 () `__lock_put ( dbv , & tmpdbp -> hd_lock ); 1523 t = EEXIST ; 1524 } i( `F_ISSET ( tmpdbp , DB_AM_IN_RENAME )) 1526 t = 0; 1528 () `__lock_put ( dbv , & tmpdbp -> hd_lock ); 1529 t = EEXIST ; 1531 i( t != 0) 1532 r ; 1539 i(( t = `__f_me ( dbv , 1540 txn , d , w , dbp -> feid , DB_APP_DATA , 1, dags )) != 0) 1541 r ; 1542 i(( t = `__f_me ( dbv , 1543 txn , back , d , tmpdbp -> feid , DB_APP_DATA , 0, dags )) != 0) 1544 r ; 1545 i(( t = `__f_lock_hd ( dbv , 1546 tmpdbp , lock , DB_LOCK_WRITE , & ock , `NOWAIT_FLAG ( txn ))) != 0) 1547 r ; 1554 `LOCK_INIT ( tmpdbp -> hd_lock ); 1557 chd_txnid = txn -> txnid ; 1558 = txn ->parent; 1559 t = `__txn_comm ( txn , 0); 1560 txn = NULL ; 1563 `memt (& fiddbt , 0, (fiddbt)); 1564 fiddbt . da = dbp -> feid ; 1565 fiddbt . size = DB_FILE_ID_LEN ; 1566 `memt (& tmpdbt , 0, ( fiddbt )); 1567 tmpdbt . da = tmpdbp -> feid ; 1568 tmpdbt . size = DB_FILE_ID_LEN ; 1569 `DB_INIT_DBT ( medbt , d , ` (old) + 1); 1570 i(( t_t = `__f_fe_move_log ( dbv , 1571 , & l , 0, & fiddbt , & tmpdbt , & medbt , 1572 ( u_t32_t ) DB_APP_DATA , chd_txnid )!0 && t == 0) 1573 t = t_t ; 1576 i(( t = `__db_ame ( dbv , 1577 DB_APP_DATA , d , ags , NULL , & d )) != 0) 1578 r ; 1580 i(( t = `__txn_mevt ( dbv , , d , NULL , 0)) != 0) 1581 r ; 1583 r : i( txn ! NULL ) 1584 () `__txn_abt ( txn ); 1586 () `__ENV_LPUT ( dbv , ock ); 1588 i( fhp ! NULL && 1589 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 1590 t = t_t ; 1592 i( w ! NULL ) 1593 `__os_ ( dbv , w ); 1594 i( d ! NULL ) 1595 `__os_ ( dbv , d ); 1596 ( t ); 1597 } } 1600 $__f_mem_sw ( ddbp , backdbp , txn , d , w , back , lock ) 1601 DB * ddbp , * backdbp ; 1602 DB_TXN * txn ; 1603 cڡ * d , * w , * back ; 1604 DB_LOCKER * lock ; 1606 DB_ENV * dbv ; 1607 DB_LOCK ock ; 1608 DB_LSN l ; 1609 DB_TXN * ; 1610 DBT fid_dbt , n1_dbt , n2_dbt ; 1611 DB * tmpdbp ; 1612 t , t_t ; 1614 dbv = ddbp ->dbenv; 1615 = txn ->parent; 1616 y : `LOCK_INIT ( ock ); 1617 i(( t = `__db__ (& tmpdbp , dbv , 0)) != 0) 1618 ( t ); 1619 `MAKE_INMEM ( tmpdbp ); 1621 `GET_ENVLOCK ( dbv , lock , & ock ); 1622 i(( t = `__db_v_mpo ( tmpdbp , w , 0)) == 0) { 1630 i(( t = `__f_mem_ad_ma ( tmpdbp , txn , w , 0)) != 0) { 1631 t = EEXIST ; 1632 r ; 1641 i(( t = `__f_lock_hd ( dbv , 1642 tmpdbp , lock , DB_LOCK_READ , NULL , DB_LOCK_NOWAIT )) != 0) { 1647 i(( t = `__f_lock_hd ( dbv , tmpdbp , 1648 lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1649 r ; 1652 () `__lock_put ( dbv , & tmpdbp -> hd_lock ); 1653 () `__db_o ( tmpdbp , NULL , DB_NOSYNC ); 1654 () `__ENV_LPUT ( dbv , ock ); 1655 y ; 1657 () `__lock_put ( dbv , & tmpdbp -> hd_lock ); 1658 i(! `F_ISSET ( tmpdbp , DB_AM_IN_RENAME )) 1659 t = EEXIST ; 1661 i( t != 0) 1662 r ; 1666 i( `LOGGING_ON ( dbv ) 1667 #ide DEBUG_WOP 1668 && txn ! NULL 1672 `DB_INIT_DBT ( fid_dbt , ddbp -> feid , DB_FILE_ID_LEN ); 1673 `DB_INIT_DBT ( n1_dbt , d , ` (old) + 1); 1674 `DB_INIT_DBT ( n2_dbt , w , ` (new) + 1); 1675 i(( t = `__d_mem_me_log ( dbv , txn , & l , 0, 1676 & n1_dbt , & n2_dbt , & fid_dbt )) != 0) 1677 r ; 1680 fid_dbt . da = backdbp -> feid ; 1681 `DB_SET_DBT ( n2_dbt , back , ` (back) + 1); 1682 i(( t = `__d_mem_me_log ( dbv , txn , & l , 0, 1683 & n2_dbt , & n1_dbt , & fid_dbt )) != 0) 1684 r ; 1693 i( `F_ISSET ( tmpdbp , DB_AM_IN_RENAME )) { 1694 i(( t = `__memp_me ( dbv , 1695 tmpdbp -> feid , NULL , w , NULL, 1)) != 0) 1696 r ; 1697 `__txn_mm ( dbv , , w ); 1700 i(( t = `__memp_me ( dbv , ddbp -> feid , w , d ,ew, 1)) != 0) 1701 r ; 1702 i(( t = 1703 `__memp_me ( dbv , backdbp -> feid , d , back , old, 1)) != 0) 1704 r ; 1706 i(( t = `__f_lock_hd ( dbv , 1707 tmpdbp , lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1708 r ; 1715 `LOCK_INIT ( tmpdbp -> hd_lock ); 1717 `DB_ASSERT ( dbv , txn ! NULL ); 1720 t = `__txn_comm ( txn , 0); 1721 txn = NULL ; 1723 i(( t = `__db_mem_move ( backdbp , , d )) != 0) 1724 r ; 1726 r : () `__ENV_LPUT ( dbv , ock ); 1728 i( txn ! NULL ) 1729 () `__txn_abt ( txn ); 1731 i(( t_t = `__db_o ( tmpdbp , NULL , 0)!0 && t == 0) 1732 t = t_t ; 1734 ( t ); 1735 } } @../hash/hash.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 49 ~"dbc/hash.h " 50 ~"dbc/lock.h " 51 ~"dbc/mp.h " 53 __ham_bulk __P (( DBC *, DBT *, u_t32_t )); 54 __hamc_o __P (( DBC *, db_pgno_t , *)); 55 __hamc_d __P (( DBC *)); 56 __hamc_deroy __P (( DBC *)); 57 __hamc_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 58 __hamc_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 59 __hamc_wrock __P (( DBC *)); 60 __ham_dup_tu __P (( DBC *, DBT *, u_t32_t )); 61 __ham_exnd_b __P (( DBC *)); 62 __ham_lookup __P (( DBC *, 63 cڡ DBT *, u_t32_t , db_lockmode_t , db_pgno_t *)); 64 __ham_ovwre __P (( DBC *, DBT *, u_t32_t )); 74 $__ham_quick_de ( dbc ) 75 DBC * dbc ; 77 t , t_t ; 98 `DB_ASSERT ( dbc -> dbp -> dbv , `IS_INITIALIZED (dbc)); 99 `DB_ASSERT ( dbc -> dbp -> dbv , dbc-> -> d = NULL ); 100 `DB_ASSERT ( dbc -> dbp -> dbv , ! `F_ISSET (dbc->dbp, DB_AM_SECONDARY )); 101 `DB_ASSERT ( dbc -> dbp -> dbv , 102 `LIST_FIRST (& dbc -> dbp -> s_cds = NULL ); 104 i(( t = `__ham_g_ma ( dbc )) != 0) 105 ( t ); 107 i(( t = `__hamc_wrock ( dbc )) == 0) 108 t = `__ham_d_ ( dbc , 0); 110 i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 111 t = t_t ; 113 ( t ); 114 } } 124 $__hamc_ ( dbc ) 125 DBC * dbc ; 127 DB_ENV * dbv ; 128 HASH_CURSOR * w_curs ; 129 t ; 131 dbv = dbc -> dbp ->dbenv; 132 i(( t = `__os_oc ( dbv , 133 1, ( curs_t ), & w_curs )) != 0) 134 ( t ); 135 i(( t = `__os_mloc ( dbv , 136 dbc -> dbp -> pgsize , & w_curs -> l_buf )) != 0) { 137 `__os_ ( dbv , w_curs ); 138 ( t ); 141 dbc -> = ( DBC_INTERNAL * w_curs ; 142 dbc -> o = dbc-> c_o = __dbc_o_ ; 143 dbc -> cou = dbc-> c_cou = __dbc_cou_ ; 144 dbc -> d = dbc-> c_d = __dbc_d_ ; 145 dbc -> dup = dbc-> c_dup = __dbc_dup_ ; 146 dbc -> g = dbc-> c_g = __dbc_g_ ; 147 dbc -> pg = dbc-> c_pg = __dbc_pg_ ; 148 dbc -> put = dbc-> c_put = __dbc_put_ ; 149 dbc -> am_bulk = __ham_bulk ; 150 dbc -> am_o = __hamc_o ; 151 dbc -> am_d = __hamc_d ; 152 dbc -> am_deroy = __hamc_deroy ; 153 dbc -> am_g = __hamc_g ; 154 dbc -> am_put = __hamc_put ; 155 dbc -> am_wrock = __hamc_wrock ; 157 ( `__ham_em_ ( dbc )); 158 } } 165 $__hamc_o ( dbc , ro_pgno , rmro ) 166 DBC * dbc ; 167 db_pgno_t ro_pgno ; 168 * rmro ; 170 DB_MPOOLFILE * mpf ; 171 HASH_CURSOR * h ; 172 HKEYDATA * dp ; 173 db_lockmode_t lock_mode ; 174 do , gma , t , t_t ; 176 `COMPQUIET ( rmro , 0); 177 mpf = dbc -> dbp ->mpf; 178 do = gma = t = 0; 179 h = ( HASH_CURSOR * dbc -> ; 182 i( dbc -> -> d ! NULL ) { 183 i(( t = `__ham_g_ma ( dbc )) != 0) 184 de ; 185 gma = 1; 186 lock_mode = DB_LOCK_READ ; 189 i( `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED ) && 190 `F_ISSET (( BTREE_CURSOR *) 191 dbc -> -> d ->, C_DELETED )) 192 lock_mode = DB_LOCK_WRITE ; 194 i(( t = `__ham_g_age ( dbc , lock_mode )) != 0) 195 out ; 196 dp = ( HKEYDATA *) `H_PAIRDATA ( dbc -> dbp , h -> ge , h-> dx ); 199 i( `HPAGE_PTYPE ( dp = H_OFFDUP ) 200 `memy (& ro_pgno , 201 `HOFFPAGE_PGNO ( dp ), ( db_pgno_t )); 203 ro_pgno = PGNO_INVALID ; 205 i(( t = 206 h -> d -> `am_o (h->d, ro_pgno , & do )) != 0) 207 out ; 208 i( do != 0) { 209 i(( t = `__memp_dty ( mpf , & h -> ge , 210 dbc -> txn , dbc-> iܙy , 0)) != 0) 211 out ; 212 i(( t = `__ham_d_ ( dbc , 0)) != 0) 213 out ; 217 out : i( h -> ge ! NULL && ( t_t = 218 `__memp_ut ( mpf , h -> ge , dbc -> iܙy )!0 && t == 0) 219 t = t_t ; 220 i( gma !0 && ( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 221 t = t_t ; 223 de : i(( t_t = `__ham_em_ ( dbc )!0 && t == 0) 224 t = t_t ; 225 ( t ); 226 } } 233 $__hamc_deroy ( dbc ) 234 DBC * dbc ; 236 HASH_CURSOR * h ; 238 h = ( HASH_CURSOR *) dbc -> ; 239 i( h -> l_buf ! NULL ) 240 `__os_ ( dbc -> dbp -> dbv , h -> l_buf ); 241 `__os_ ( dbc -> dbp -> dbv , h ); 244 } } 253 $__hamc_cou ( dbc , ) 254 DBC * dbc ; 255 db_o_t * ; 257 DB * dbp ; 258 DB_MPOOLFILE * mpf ; 259 HASH_CURSOR * h ; 260 db_dx_t n ; 261 db_o_t o ; 262 t , t_t ; 263 u_t8_t * p , * nd ; 265 dbp = dbc ->dbp; 266 mpf = dbp ->mpf; 267 h = ( HASH_CURSOR *) dbc -> ; 269 o = 0; 271 i(( t = `__ham_g_age ( dbc , DB_LOCK_READ )) != 0) 272 ( t ); 273 i( h -> dx > `NUM_ENT (h-> ge )) { 274 * = 0; 275 r ; 278 `HPAGE_PTYPE ( `H_PAIRDATA ( dbp , h -> ge , h-> dx ))) { 279 H_KEYDATA : 280 H_OFFPAGE : 281 o = 1; 283 H_DUPLICATE : 284 p = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 285 nd = p + 286 `LEN_HDATA ( dbp , h -> ge , dbp-> pgsize , h-> dx ); 287 ; p < nd ; o ++) { 289 `memy (& n , p , ( db_dx_t )); 290 p +2 * ( db_dx_t + n ; 295 t = `__db_pgfmt ( dbp -> dbv , h -> pgno ); 296 r ; 299 * = o ; 301 r : i(( t_t = 302 `__memp_ut ( mpf , h -> ge , dbc -> iܙy )!0 && t == 0) 303 t = t_t ; 304 h -> ge = NULL ; 305 ( t ); 306 } } 309 $__hamc_d ( dbc ) 310 DBC * dbc ; 312 DB * dbp ; 313 DBT dbt ; 314 DB_MPOOLFILE * mpf ; 315 HASH_CURSOR * h ; 316 t , t_t ; 318 dbp = dbc ->dbp; 319 mpf = dbp ->mpf; 320 h = ( HASH_CURSOR *) dbc -> ; 322 i( `F_ISSET ( h , H_DELETED )) 323 ( DB_NOTFOUND ); 325 i(( t = `__ham_g_ma ( dbc )) != 0) 326 out ; 328 i(( t = `__ham_g_age ( dbc , DB_LOCK_WRITE )) != 0) 329 out ; 332 i( `HPAGE_TYPE ( dbp , h -> ge , `H_DATAINDEX (h-> dx )= H_OFFDUP ) 333 out ; 335 i(( t = `__memp_dty ( mpf , 336 & h -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 337 out ; 339 i( `F_ISSET ( h , H_ISDUP )) { 340 i( h -> dup_off == 0 && 341 `DUP_SIZE ( h -> dup_n = `LEN_HDATA ( dbp , h-> ge , 342 h -> hdr -> dbma . gesize , h-> dx )) 343 t = `__ham_d_ ( dbc , 0); 345 dbt . ags = 0; 346 `F_SET (& dbt , DB_DBT_PARTIAL ); 347 dbt . doff = h -> dup_off ; 348 dbt . dn = `DUP_SIZE ( h -> dup_n ); 349 dbt . size = 0; 350 dbt . da = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , 351 h -> dx )); 352 i(( t = `__ham_ ( dbc , & dbt , 0)) == 0) { 353 h -> dup_ - `DUP_SIZE (h-> dup_n ); 354 `F_SET ( h , H_DELETED ); 355 t = `__hamc_upde ( dbc , `DUP_SIZE ( h -> dup_n ), 356 DB_HAM_CURADJ_DEL , 1); 360 t = `__ham_d_ ( dbc , 0); 362 out : i( h -> ge ! NULL ) { 363 i(( t_t = `__memp_ut ( mpf , 364 h -> ge , dbc -> iܙy )!0 && t == 0) 365 t = t_t ; 366 h -> ge = NULL ; 368 i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 369 t = t_t ; 370 ( t ); 371 } } 381 $__hamc_dup ( ig_dbc , w_dbc ) 382 DBC * ig_dbc , * w_dbc ; 384 HASH_CURSOR * ig , * w ; 386 ig = ( HASH_CURSOR *) ig_dbc -> ; 387 w = ( HASH_CURSOR *) w_dbc -> ; 389 w -> buck = ig ->bucket; 390 w -> lbuck = ig ->lbucket; 391 w -> dup_off = ig ->dup_off; 392 w -> dup_n = ig ->dup_len; 393 w -> dup_ = ig ->dup_tlen; 395 i( `F_ISSET ( ig , H_DELETED )) 396 `F_SET ( w , H_DELETED ); 397 i( `F_ISSET ( ig , H_ISDUP )) 398 `F_SET ( w , H_ISDUP ); 401 } } 404 $__hamc_g ( dbc , key , da , ags , pgn ) 405 DBC * dbc ; 406 DBT * key ; 407 DBT * da ; 408 u_t32_t ags ; 409 db_pgno_t * pgn ; 411 DB * dbp ; 412 DB_ENV * dbv ; 413 DB_MPOOLFILE * mpf ; 414 HASH_CURSOR * h ; 415 db_lockmode_t lock_ty ; 416 t , t_t ; 418 h = ( HASH_CURSOR *) dbc -> ; 419 dbp = dbc ->dbp; 420 dbv = dbp ->dbenv; 421 mpf = dbp ->mpf; 424 i( `F_ISSET ( dbc , DBC_RMW )) 425 lock_ty = DB_LOCK_WRITE ; 427 lock_ty = DB_LOCK_READ ; 429 i(( t = `__ham_g_ma ( dbc )) != 0) 430 ( t ); 431 h -> ek_size = 0; 433 t = 0; 434 ags ) { 435 DB_PREV_DUP : 436 `F_SET ( h , H_DUPONLY ); 437 ev ; 438 DB_PREV_NODUP : 439 `F_SET ( h , H_NEXT_NODUP ); 441 DB_PREV : 442 i( `IS_INITIALIZED ( dbc )) { 443 ev : t = `__ham_em_ev ( dbc , lock_ty , pgn ); 447 DB_LAST : 448 t = `__ham_em_ϡ ( dbc , lock_ty , pgn ); 450 DB_NEXT_DUP : 451 DB_GET_BOTHC : 453 `F_SET ( h , H_DUPONLY ); 454 xt ; 455 DB_NEXT_NODUP : 456 `F_SET ( h , H_NEXT_NODUP ); 458 DB_NEXT : 459 i( `IS_INITIALIZED ( dbc )) { 460 xt : t = `__ham_em_xt ( dbc , lock_ty , pgn ); 464 DB_FIRST : 465 t = `__ham_em_f ( dbc , lock_ty , pgn ); 467 DB_SET : 468 DB_SET_RANGE : 469 DB_GET_BOTH : 470 DB_GET_BOTH_RANGE : 471 t = `__ham_lookup ( dbc , key , 0, lock_ty , pgn ); 473 DB_CURRENT : 475 i( `F_ISSET ( h , H_DELETED )) { 476 t = DB_KEYEMPTY ; 477 r ; 480 t = `__ham_em ( dbc , lock_ty , pgn ); 483 t = `__db_unknown_ag ( dbv , "__hamc_g", ags ); 492 i( t !0 && ! DB_NOTFOUND ) 493 r ; 494 i( `F_ISSET ( h , H_OK )) { 495 i(* pgn = PGNO_INVALID ) 496 t = `__ham_dup_tu ( dbc , da , ags ); 498 } i(! `F_ISSET ( h , H_NOMORE )) { 499 `__db_rx ( dbv , "H_NOMOREeturnedo __hamc_get"); 500 t = EINVAL ; 507 ags ) { 508 DB_LAST : 509 DB_PREV : 510 DB_PREV_DUP : 511 DB_PREV_NODUP : 512 t = `__memp_ut ( mpf , h -> ge , dbc -> iܙy ); 513 h -> ge = NULL ; 514 i( h -> buck == 0) { 515 t = DB_NOTFOUND ; 516 h -> pgno = PGNO_INVALID ; 517 r ; 519 `F_CLR ( h , H_ISDUP ); 520 h -> buck --; 521 h -> dx = NDX_INVALID ; 522 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 523 i( t == 0) 524 t = `__ham_em_ev ( dbc , lock_ty , pgn ); 526 DB_FIRST : 527 DB_NEXT : 528 DB_NEXT_NODUP : 529 t = `__memp_ut ( mpf , h -> ge , dbc -> iܙy ); 530 h -> ge = NULL ; 531 h -> dx = NDX_INVALID ; 532 h -> buck ++; 533 `F_CLR ( h , H_ISDUP ); 534 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 535 i( h -> buck > h-> hdr -> max_buck ) { 536 t = DB_NOTFOUND ; 537 h -> pgno = PGNO_INVALID ; 538 r ; 540 i( t == 0) 541 t = `__ham_em_xt ( dbc , lock_ty , pgn ); 543 DB_GET_BOTH : 544 DB_GET_BOTHC : 545 DB_GET_BOTH_RANGE : 546 DB_NEXT_DUP : 547 DB_SET : 548 DB_SET_RANGE : 550 t = DB_NOTFOUND ; 551 r ; 552 DB_CURRENT : 559 t = DB_KEYEMPTY ; 560 r ; 562 `DB_ASSERT ( dbv , 0); 566 r : i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 567 t = t_t ; 569 `F_CLR ( h , H_DUPONLY ); 570 `F_CLR ( h , H_NEXT_NODUP ); 572 ( t ); 573 } } 579 $__ham_bulk ( dbc , da , ags ) 580 DBC * dbc ; 581 DBT * da ; 582 u_t32_t ags ; 584 DB * dbp ; 585 DB_MPOOLFILE * mpf ; 586 HASH_CURSOR * ; 587 PAGE * pg ; 588 db_dx_t dup_n , dup_off , dup_ , dx , * p ; 589 db_lockmode_t lock_mode ; 590 db_pgno_t pgno ; 591 t32_t * dp , * of , * veoff ; 592 u_t32_t key_off , key_size , gesize , size , a ; 593 u_t8_t * dbuf , * dp , * hk , * , * tmp ; 594 is_dup , is_key ; 595 ed_pg , xt_key , no_dup , t , t_t ; 597 t = 0; 598 key_off = 0; 599 dup_n = dup_off = dup_ = 0; 600 size = 0; 601 dbp = dbc ->dbp; 602 gesize = dbp -> pgsize ; 603 mpf = dbp ->mpf; 604 = ( HASH_CURSOR *) dbc -> ; 605 is_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1 : 0; 606 xt_key = is_key && `LF_ISSET ( DB_OPFLAGS_MASK ! DB_NEXT_DUP ; 607 no_dup = `LF_ISSET ( DB_OPFLAGS_MASK = DB_NEXT_NODUP ; 608 dbuf = da ->data; 609 = dp = dbuf ; 612 a = da -> un ; 613 a -(* of ); 616 dp = ( t32_t *(( u_t8_t *) dbuf + da -> un ); 617 dp --; 618 of = dp ; 620 key_size = 0; 621 lock_mode = `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 623 xt_pg : 624 ed_pg = 1; 625 dx = ->indx; 626 pg = -> ge ; 627 p = `P_INP ( dbp , pg ); 630 i( is_key ) { 631 hk = `H_PAIRKEY ( dbp , pg , dx ); 632 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) { 633 `memy (& key_size , 634 `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 635 `memy (& pgno , 636 `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 637 size = key_size ; 638 i( key_size > a ) 639 g_key_a ; 640 i(( t = `__bam_bulk_ovow ( 641 dbc , key_size , pgno , )) != 0) 642 ( t ); 643 a - key_size ; 644 key_off = ( u_t32_t )( - dbuf ); 645 + key_size ; 647 i( ed_pg ) { 648 dp = ; 649 size = gesize - `HOFFSET ( pg ); 650 i( a < size ) { 651 g_key_a : 652 i( of = dp ) { 653 da -> size = ( u_t32_t ) 654 `DB_ALIGN ( size + 655 gesize , 1024); 657 ( DB_BUFFER_SMALL ); 659 back_up ; 661 `memy ( dp , 662 ( u_t8_t *) pg + `HOFFSET g), size ); 663 ed_pg = 0; 664 a - size ; 665 + size ; 667 key_size = `LEN_HKEY ( dbp , pg , gesize , dx ); 668 key_off = (( p [ dx ] - `HOFFSET ( pg )) + 669 ( u_t32_t )( dp - dbuf )) + 670 `SSZA ( HKEYDATA , da ); 674 hk = `H_PAIRDATA ( dbp , pg , dx ); 675 `HPAGE_PTYPE ( hk )) { 676 H_DUPLICATE : 677 H_KEYDATA : 678 i( ed_pg ) { 679 dp = ; 680 size = gesize - `HOFFSET ( pg ); 681 i( a < size ) { 682 back_up : 683 i( dx != 0) { 684 dx -= 2; 699 tmp = `H_PAIRDATA ( dbp , pg , dx ); 700 i( `HPAGE_PTYPE ( tmp ) == 701 H_DUPLICATE ) { 702 dup_off = dup_ = 703 `LEN_HDATA ( dbp , pg , 704 gesize , dx + 1); 705 `memy (& dup_n , 706 `HKEYDATA_DATA ( tmp ), 707 ( db_dx_t )); 709 is_dup = 0; 710 dup_n = 0; 711 dup_off = 0; 712 dup_ = 0; 713 `F_CLR ( , H_ISDUP ); 715 g_a ; 718 -> dup_n = dup_len; 719 -> dup_off = dup_off; 720 -> dup_ = dup_tlen; 721 i(( t = `__ham_em_ev ( dbc , 722 lock_mode , & pgno )) != 0) { 723 i( t ! DB_NOTFOUND ) 724 ( t ); 725 i(( t = `__memp_ut ( mpf , 726 -> ge , 727 dbc -> iܙy )) != 0) 728 ( t ); 729 -> ge = NULL ; 730 i( -> buck == 0) { 731 -> dx = indx = 732 NDX_INVALID ; 733 g_a ; 735 i(( t = 736 `__ham_g_ma ( dbc )) != 0) 737 ( t ); 739 -> buck --; 740 -> pgno = `BUCKET_TO_PAGE (cp, 741 -> buck ); 742 -> dx = NDX_INVALID ; 743 i(( t = `__ham_a_ma ( 744 dbc )) != 0) 745 ( t ); 746 i(( t = `__ham_em_ev ( dbc , 747 lock_mode , & pgno )) != 0) 748 ( t ); 750 dx = ->indx; 751 g_a : 755 i( of > dp || 756 `F_ISSET ( dbc , DBC_TRANSIENT )) { 757 da -> size = ( u_t32_t ) 758 `DB_ALIGN ( size + 759 da -> un - a , 1024); 760 ( DB_BUFFER_SMALL ); 767 xt_key = 0; 770 `memy ( dp , ( u_t8_t *) pg + `HOFFSET g), size ); 771 ed_pg = 0; 772 a - size ; 773 + size ; 789 i( `F_ISSET ( , H_ISDUP )) { 791 is_dup = 1; 792 dup_n = ->dup_len; 793 dup_off = ->dup_off; 794 dup_ = ->dup_tlen; 795 } i( `HPAGE_PTYPE ( hk = H_DUPLICATE ) { 797 is_dup = 1; 803 `F_SET ( , H_ISDUP ); 804 dup_off = 0; 805 `memy (& dup_n , 806 `HKEYDATA_DATA ( hk ), ( db_dx_t )); 807 dup_ = `LEN_HDATA ( dbp , pg , gesize , dx ); 810 is_dup = 0; 811 dup_n = 0; 812 dup_off = 0; 813 dup_ = 0; 817 a -( is_key ? 4 : 2* (* of ); 818 size +( is_key ? 4 : 2* (* of ); 826 i( a > da -> un ) { 827 i(! is_dup || dup_off == 0) 828 back_up ; 829 dup_off -( db_dx_t ) 830 `DUP_SIZE (( u_t32_t ) of [1]); 831 g_a ; 833 i( is_key ) { 834 * of -- = ( t32_t ) key_off ; 835 * of -- = ( t32_t ) key_size ; 837 i( is_dup ) { 838 * of -- = ( t32_t )( 839 (( p [ dx + 1] - `HOFFSET ( pg )) + 840 dp - dbuf + `SSZA ( HKEYDATA , da ) + 841 dup_off + ( db_dx_t )); 842 `memy (& dup_n , 843 `HKEYDATA_DATA ( hk + dup_off , 844 ( db_dx_t )); 845 dup_off + `DUP_SIZE ( dup_n ); 846 * of -- = dup_n ; 848 * of -- = ( t32_t )( 849 (( p [ dx + 1] - `HOFFSET ( pg )) + 850 dp - dbuf + `SSZA ( HKEYDATA , da )); 851 * of -- = `LEN_HDATA ( dbp , pg , 852 gesize , dx ); 854 } is_dup && dup_off < dup_ && no_dup == 0); 855 `F_CLR ( , H_ISDUP ); 857 H_OFFDUP : 858 `memy (& pgno , `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 859 a -2 * (* of ); 860 i( a > da -> un ) 861 back_up ; 863 i( is_key ) { 864 a -2 * (* of ); 865 i( a > da -> un ) 866 back_up ; 867 * of -- = ( t32_t ) key_off ; 868 * of -- = ( t32_t ) key_size ; 870 veoff = of ; 871 i(( t = `__bam_bulk_duis ( dbc , 872 pgno , dbuf , is_key ? of + 2 : NULL , 873 & of , & , & a , no_dup )) != 0) { 874 i( t = DB_BUFFER_SMALL ) { 875 size = a ; 876 a = 0; 877 i( is_key && veoff = of ) { 878 of += 2; 879 back_up ; 881 g_a ; 883 ( t ); 886 H_OFFPAGE : 887 a -( is_key ? 4 : 2* (* of ); 888 i( a > da -> un ) 889 back_up ; 891 `memy (& size , `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 892 `memy (& pgno , `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 893 i( size > a ) 894 back_up ; 896 i(( t = 897 `__bam_bulk_ovow ( dbc , size , pgno , )) != 0) 898 ( t ); 900 i( is_key ) { 901 * of -- = ( t32_t ) key_off ; 902 * of -- = ( t32_t ) key_size ; 905 * of -- = ( t32_t )( - dbuf ); 906 * of -- = ( t32_t ) size ; 908 + size ; 909 a - size ; 915 } xt_key && ( dx +2< `NUM_ENT ( pg )); 917 -> dx = indx; 918 -> dup_n = dup_len; 919 -> dup_off = dup_off; 920 -> dup_ = dup_tlen; 923 i( t =0 && xt_key && dx > `NUM_ENT ( pg )) { 924 i(( t = `__ham_em_xt ( dbc , lock_mode , & pgno )) == 0) 925 xt_pg ; 926 i( t ! DB_NOTFOUND ) 927 ( t ); 928 i(( t = `__memp_ut ( dbc -> dbp -> mpf , 929 -> ge , dbc -> iܙy )) != 0) 930 ( t ); 931 -> ge = NULL ; 932 i(( t = `__ham_g_ma ( dbc )) != 0) 933 ( t ); 935 -> buck ++; 936 i( -> buck > cp-> hdr -> max_buck ) { 942 -> buck --; 943 t = DB_NOTFOUND ; 955 -> pgno = `BUCKET_TO_PAGE (, cp-> buck ); 956 -> dx = NDX_INVALID ; 957 `F_CLR ( , H_ISDUP ); 958 t = `__ham_em_xt ( dbc , lock_mode , & pgno ); 961 i(( t_t = `__ham_a_ma ( dbc )) != 0) 962 ( t_t ); 963 i( t == 0) 964 xt_pg ; 965 i( t ! DB_NOTFOUND ) 966 ( t ); 968 * of = -1; 970 } } 973 $__hamc_put ( dbc , key , da , ags , pgn ) 974 DBC * dbc ; 975 DBT * key ; 976 DBT * da ; 977 u_t32_t ags ; 978 db_pgno_t * pgn ; 980 DB * dbp ; 981 DB_MPOOLFILE * mpf ; 982 DBT tmp_v , * myv ; 983 HASH_CURSOR * h ; 984 u_t32_t nbys ; 985 t , t_t ; 992 `COMPQUIET ( myv , NULL ); 994 dbp = dbc ->dbp; 995 mpf = dbp ->mpf; 996 h = ( HASH_CURSOR *) dbc -> ; 998 i( `F_ISSET ( h , H_DELETED ) && 999 ags ! DB_KEYFIRST && fg! DB_KEYLAST ) 1000 ( DB_NOTFOUND ); 1002 i(( t = `__ham_g_ma ( dbc )) != 0) 1003 r1 ; 1005 ags ) { 1006 DB_KEYLAST : 1007 DB_KEYFIRST : 1008 DB_NODUPDATA : 1009 DB_NOOVERWRITE : 1010 nbys = ( `ISBIG ( h , key -> size ? HOFFPAGE_PSIZE : 1011 `HKEYDATA_PSIZE ( key -> size )) + 1012 ( `ISBIG ( h , da -> size ? HOFFPAGE_PSIZE : 1013 `HKEYDATA_PSIZE ( da -> size )); 1014 i(( t = `__ham_lookup ( dbc , 1015 key , nbys , DB_LOCK_WRITE , pgn )= DB_NOTFOUND ) { 1016 i( h -> ek_found_ge ! PGNO_INVALID && 1017 h -> ek_found_ge !h-> pgno ) { 1018 i(( t = `__memp_ut ( mpf , 1019 h -> ge , dbc -> iܙy )) != 0) 1020 r2 ; 1021 h -> ge = NULL ; 1022 h -> pgno = h-> ek_found_ge ; 1023 h -> dx = NDX_INVALID ; 1026 i( `F_ISSET ( da , DB_DBT_PARTIAL && da-> doff != 0) { 1034 i(( t = `__ham__dbt ( dbp -> dbv , & tmp_v , 1035 da -> size + da-> doff , 1036 & dbc -> my_rda . da , 1037 & dbc -> my_rda . un )) != 0) 1038 r2 ; 1040 `memt ( tmp_v . da , 0, da-> doff ); 1041 `memy (( u_t8_t *) tmp_v . da + 1042 da -> doff , da->da, da-> size ); 1043 myv = & tmp_v ; 1045 myv = ( DBT *) da ; 1047 t = `__ham_add_ ( dbc , key , myv , H_KEYDATA ); 1048 de ; 1049 } i( ags = DB_NOOVERWRITE && 1050 ! `F_ISSET ( h , H_DELETED )) { 1051 i(* pgn = PGNO_INVALID ) 1052 t = DB_KEYEXIST ; 1054 t = `__bam_d_exis ( dbc , * pgn ); 1055 i( t != 0) 1056 de ; 1059 DB_BEFORE : 1060 DB_AFTER : 1061 DB_CURRENT : 1062 t = `__ham_em ( dbc , DB_LOCK_WRITE , pgn ); 1065 t = `__db_unknown_ag ( dbp -> dbv , "__hamc_put", ags ); 1073 h -> ek_found_ge = PGNO_INVALID ; 1074 h -> ek_found_dx = NDX_INVALID ; 1076 i(* pgn = PGNO_INVALID && t == 0) { 1077 i(( t = `__memp_dty ( mpf , 1078 & h -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 1079 de ; 1080 i( ags = DB_CURRENT || 1081 (( ags = DB_KEYFIRST || 1082 ags = DB_KEYLAST || fg= DB_NODUPDATA ) && 1083 !( `F_ISSET ( dbp , DB_AM_DUP || F_ISSET( key , DB_DBT_DUPOK )))) 1084 t = `__ham_ovwre ( dbc , da , ags ); 1086 t = `__ham_add_dup ( dbc , da , ags , pgn ); 1089 de : i( h -> ge ! NULL ) { 1090 i(( t_t = `__memp_ut ( mpf , 1091 h -> ge , dbc -> iܙy )!0 && t == 0) 1092 t = t_t ; 1093 i( t_t == 0) 1094 h -> ge = NULL ; 1097 i( t =0 && `F_ISSET ( h , H_EXPAND )) { 1098 t = `__ham_exnd_b ( dbc ); 1099 `F_CLR ( h , H_EXPAND ); 1101 i( t = ENOSPC && dbc -> txn = NULL ) 1102 t = 0; 1105 r2 : i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 1106 t = t_t ; 1108 r1 : ( t ); 1109 } } 1117 $__ham_exnd_b ( dbc ) 1118 DBC * dbc ; 1120 DB * dbp ; 1121 DB_LOCK mock ; 1122 DB_LSN l ; 1123 DB_MPOOLFILE * mpf ; 1124 DBMETA * mma ; 1125 HASH_CURSOR * h ; 1126 PAGE * h ; 1127 db_pgno_t pgno , mpgno ; 1128 u_t32_t logn , wloc , w_buck , d_buck ; 1129 g_ma , w_doub , t , t_t ; 1131 dbp = dbc ->dbp; 1132 mpf = dbp ->mpf; 1133 h = ( HASH_CURSOR *) dbc -> ; 1134 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 1135 ( t ); 1137 `LOCK_INIT ( mock ); 1138 mma = ( DBMETA * h -> hdr ; 1139 mpgno = mma -> pgno ; 1140 h = NULL ; 1141 wloc = 0; 1142 g_ma = 0; 1162 w_buck = h -> hdr -> max_buck + 1; 1163 d_buck = w_buck & h -> hdr -> low_mask ; 1165 w_doub = h -> hdr -> max_buck =h->hdr-> high_mask ; 1166 logn = `__db_log2 ( w_buck ); 1168 i(! w_doub || h -> hdr -> es [ logn + 1] ! PGNO_INVALID ) { 1170 pgno = `BUCKET_TO_PAGE ( h , w_buck ); 1171 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 1172 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h )) != 0) 1173 r ; 1174 l = h ->lsn; 1177 i( `F_ISSET ( dbp , DB_AM_SUBDB )) { 1178 mpgno = PGNO_BASE_MD ; 1179 i(( t = `__db_lg ( dbc , 1180 0, mpgno , DB_LOCK_WRITE , 0, & mock )) != 0) 1181 r ; 1182 i(( t = `__memp_fg ( mpf , & mpgno , dbc -> txn , 1183 DB_MPOOL_DIRTY , & mma )) != 0) 1184 r ; 1185 g_ma = 1; 1187 pgno = mma -> ϡ_pgno + 1; 1188 `ZERO_LSN ( l ); 1189 wloc = 1; 1193 i( `DBC_LOGGING ( dbc )) { 1201 i(( t = `__ham_magroup_log ( dbp , dbc -> txn , 1202 & l , 0, h -> hdr -> max_buck , mpgno , & mma ->lsn, 1203 h -> hdr -> dbma . pgno , &h->hdr->dbma. l , 1204 pgno , & l , wloc , mma -> ϡ_pgno )) != 0) 1205 r ; 1207 `LSN_NOT_LOGGED ( l ); 1209 h -> hdr -> dbma . l =sn; 1211 i( w_doub && h -> hdr -> es [ logn + 1] = PGNO_INVALID ) { 1222 pgno + h -> hdr -> max_buck ; 1224 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 1225 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h )) != 0) 1226 r ; 1228 h -> hdr -> es [ logn + 1] = 1229 ( pgno - w_buck - h -> hdr -> max_buck ; 1230 mma -> ϡ_pgno = pgno ; 1231 mma -> l =sn; 1233 `P_INIT ( h , dbp -> pgsize , 1234 pgno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1238 h -> l =sn; 1239 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 1240 r ; 1241 h = NULL ; 1246 h -> hdr -> max_buck = w_buck ; 1247 i( w_doub ) { 1248 h -> hdr -> low_mask = h->hdr-> high_mask ; 1249 h -> hdr -> high_mask = w_buck | h->hdr-> low_mask ; 1253 t = `__ham_l_ge ( dbc , d_buck , w_buck ); 1255 r : i( g_ma ) 1256 i(( t_t = 1257 `__memp_ut ( mpf , mma , dbc -> iܙy )!0 && t == 0) 1258 t = t_t ; 1259 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 1260 t = t_t ; 1261 i( h ! NULL ) 1262 i(( t_t = `__memp_ut ( mpf , 1263 h , dbc -> iܙy )!0 && t == 0) 1264 t = t_t ; 1266 ( t ); 1267 } } 1272 u_t32_t 1273 $__ham__hash ( dbc , k , n ) 1274 DBC * dbc ; 1275 u_t8_t * k ; 1276 u_t32_t n ; 1278 DB * dbp ; 1279 HASH_CURSOR * h ; 1280 HASH * hashp ; 1281 u_t32_t n , buck ; 1283 dbp = dbc ->dbp; 1284 h = ( HASH_CURSOR *) dbc -> ; 1285 hashp = dbp -> h_ ; 1287 n = ( u_t32_t )( hashp -> `h_hash ( dbp , k , n )); 1289 buck = n & h -> hdr -> high_mask ; 1290 i( buck > h -> hdr -> max_buck ) 1291 buck = buck & h -> hdr -> low_mask ; 1292 ( buck ); 1293 } } 1300 $__ham_dup_tu ( dbc , v , ags ) 1301 DBC * dbc ; 1302 DBT * v ; 1303 u_t32_t ags ; 1305 DB * dbp ; 1306 HASH_CURSOR * h ; 1307 PAGE * ; 1308 DBT * myv , tmp_v ; 1309 db_dx_t ndx ; 1310 db_pgno_t pgno ; 1311 u_t32_t off , ; 1312 u_t8_t * hk , ty ; 1313 cmp , t ; 1314 db_dx_t n ; 1317 dbp = dbc ->dbp; 1318 h = ( HASH_CURSOR *) dbc -> ; 1319 ndx = `H_DATAINDEX ( h -> dx ); 1320 ty = `HPAGE_TYPE ( dbp , h -> ge , ndx ); 1321 = h -> ge ; 1322 myv = v ; 1334 `DB_ASSERT ( dbp -> dbv , ty ! H_OFFDUP ); 1337 i( ty ! H_DUPLICATE && ags ! DB_GET_BOTH && 1338 ags ! DB_GET_BOTHC && fg! DB_GET_BOTH_RANGE ) 1346 i(! `F_ISSET ( h , H_ISDUP && ty = H_DUPLICATE ) { 1347 `F_SET ( h , H_ISDUP ); 1348 h -> dup_ = `LEN_HDATA ( dbp , h-> ge , 1349 h -> hdr -> dbma . gesize , h-> dx ); 1350 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1351 i( ags = DB_LAST || 1352 ags = DB_PREV || fg= DB_PREV_NODUP ) { 1353 h -> dup_off = 0; 1355 `memy (& n , 1356 `HKEYDATA_DATA ( hk + h -> dup_off , 1357 ( db_dx_t )); 1358 h -> dup_off + `DUP_SIZE ( n ); 1359 } h -> dup_off < h-> dup_ ); 1360 h -> dup_off - `DUP_SIZE ( n ); 1362 `memy (& n , 1363 `HKEYDATA_DATA ( hk ), ( db_dx_t )); 1364 h -> dup_off = 0; 1366 h -> dup_n = n ; 1374 i( ags = DB_GET_BOTH || 1375 ags = DB_GET_BOTHC || fg= DB_GET_BOTH_RANGE ) { 1376 i( `F_ISSET ( h , H_ISDUP )) { 1381 i( ags = DB_GET_BOTHC ) 1382 `F_SET ( h , H_CONTINUE ); 1384 `__ham_dch ( dbc , v , & off , & cmp , ags ); 1390 `F_CLR ( h , H_CONTINUE ); 1391 h -> dup_off = off ; 1393 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1394 i((( HKEYDATA *) hk )-> ty = H_OFFPAGE ) { 1395 `memy (& , 1396 `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 1397 `memy (& pgno , 1398 `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 1399 i(( t = `__db_moff ( dbp , dbc -> txn , v , 1400 pgno , , dbp -> dup_com , & cmp )) != 0) 1401 ( t ); 1407 tmp_v . da = `HKEYDATA_DATA ( hk ); 1408 tmp_v . size = `LEN_HDATA ( dbp , h -> ge , 1409 dbp -> pgsize , h -> dx ); 1410 cmp = dbp -> dup_com = NULL ? 1411 `__bam_defcmp ( dbp , & tmp_v , v ) : 1412 dbp -> `dup_com (dbp, & tmp_v , v ); 1416 i( cmp != 0) 1417 ( DB_NOTFOUND ); 1424 i( `F_ISSET ( dbc , DBC_MULTIPLE | DBC_MULTIPLE_KEY ) || 1425 `F_ISSET ( v , DB_DBT_ISSET )) 1432 i( `F_ISSET ( h , H_ISDUP )) { 1440 `memy (& tmp_v , v , (*val)); 1442 i( `F_ISSET (& tmp_v , DB_DBT_PARTIAL )) { 1447 i( tmp_v . doff > h -> dup_n ) 1448 tmp_v . dn = 0; 1449 i( tmp_v . dn +mp_v. doff > h -> dup_n ) 1450 tmp_v . dn = h -> dup_n -mp_v. doff ; 1453 `F_SET (& tmp_v , DB_DBT_PARTIAL ); 1454 tmp_v . dn = h -> dup_n ; 1455 tmp_v . doff = 0; 1464 tmp_v . doff + h -> dup_off + ( db_dx_t ); 1466 myv = & tmp_v ; 1473 i(( t = `__db_t ( dbp , dbc -> txn , 1474 , ndx , myv , & dbc -> rda -> da , &dbc->rda-> un )) != 0) 1475 ( t ); 1481 v -> da = myv ->data; 1482 v -> size = myv ->size; 1484 `F_SET ( v , DB_DBT_ISSET ); 1487 } } 1490 $__ham_ovwre ( dbc , nv , ags ) 1491 DBC * dbc ; 1492 DBT * nv ; 1493 u_t32_t ags ; 1495 DB * dbp ; 1496 DB_ENV * dbv ; 1497 HASH_CURSOR * h ; 1498 DBT * myv , tmp_v , tmp_v2 ; 1499 * wc ; 1500 u_t8_t * hk , * p ; 1501 u_t32_t n , ndup_size ; 1502 db_dx_t wsize ; 1503 t ; 1505 dbp = dbc ->dbp; 1506 dbv = dbp ->dbenv; 1507 h = ( HASH_CURSOR *) dbc -> ; 1508 i( `F_ISSET ( h , H_ISDUP )) { 1513 `DB_ASSERT ( dbv , h -> d = NULL ); 1515 i( `F_ISSET ( nv , DB_DBT_PARTIAL )) { 1521 `memt (& tmp_v , 0, (tmp_val)); 1522 i(( t = 1523 `__ham_dup_tu ( dbc , & tmp_v , DB_CURRENT )) != 0) 1524 ( t ); 1527 ndup_size = tmp_v . size ; 1528 wsize = ndup_size ; 1537 i( nv -> doff > ndup_size ) 1538 wsize += 1539 (( nv -> doff - ndup_size +v-> size ); 1540 i( nv -> doff +v-> dn > ndup_size ) 1541 wsize + nv -> size - 1542 ( ndup_size - nv -> doff ); 1544 wsize + nv -> size -v-> dn ; 1551 i( `ISBIG ( h , 1552 ( h -> dup_ - ndup_size + wsize )) { 1553 i(( t = `__ham_dup_cvt ( dbc )) != 0) 1554 ( t ); 1555 ( h -> d -> `am_put (hcp->opd, 1556 NULL , nv , ags , NULL)); 1559 i(( t = `__os_mloc ( dbp -> dbv , 1560 `DUP_SIZE ( wsize ), & wc )) != 0) 1561 ( t ); 1562 `memt (& tmp_v2 , 0, (tmp_val2)); 1563 `F_SET (& tmp_v2 , DB_DBT_PARTIAL ); 1566 p = wc ; 1568 `memy ( p , & wsize , ( db_dx_t )); 1569 p +( db_dx_t ); 1572 n = nv -> doff > tmp_v . size 1573 ? tmp_v . size : nv -> doff ; 1574 `memy ( p , tmp_v . da , n ); 1575 p + n ; 1577 i( nv -> doff > tmp_v . size ) { 1579 `memt ( p , 0, nv -> doff - tmp_v . size ); 1580 p + nv -> doff - tmp_v . size ; 1584 `memy ( p , nv -> da ,v-> size ); 1585 p + nv -> size ; 1588 i( nv -> doff +v-> dn < tmp_v . size ) { 1589 n = ( tmp_v . size - nv -> doff -v-> dn ; 1590 `memy ( p , ( u_t8_t *) tmp_v . da + 1591 nv -> doff +v-> dn , n ); 1592 p + n ; 1596 `memy ( p , & wsize , ( db_dx_t )); 1602 i( dbp -> dup_com ! NULL ) { 1603 tmp_v2 . da = 1604 ( u_t8_t *) wc + ( db_dx_t ); 1605 tmp_v2 . size = wsize ; 1606 i( dbp -> `dup_com ( 1607 dbp , & tmp_v , & tmp_v2 ) != 0) { 1608 `__os_ ( dbv , wc ); 1609 ( `__db_du ( dbp , ags )); 1613 tmp_v2 . da = wc ; 1614 tmp_v2 . size = `DUP_SIZE ( wsize ); 1615 tmp_v2 . doff = h -> dup_off ; 1616 tmp_v2 . dn = `DUP_SIZE ( h -> dup_n ); 1618 t = `__ham_ ( dbc , & tmp_v2 , 0); 1619 `__os_ ( dbv , wc ); 1622 i( t != 0) 1623 ( t ); 1625 i( wsize > ndup_size ) { 1626 i(( t = `__hamc_upde ( dbc , 1627 ( wsize - ndup_size ), 1628 DB_HAM_CURADJ_ADDMOD , 1)) != 0) 1629 ( t ); 1630 h -> dup_ +( wsize - ndup_size ); 1632 i(( t = `__hamc_upde ( dbc , 1633 ( ndup_size - wsize ), 1634 DB_HAM_CURADJ_DELMOD , 1)) != 0) 1635 ( t ); 1636 h -> dup_ -( ndup_size - wsize ); 1638 h -> dup_n = wsize ; 1642 i( `ISBIG ( h , 1643 ( h -> dup_ - h-> dup_n + nv -> size )) { 1644 i(( t = `__ham_dup_cvt ( dbc )) != 0) 1645 ( t ); 1646 ( h -> d -> `am_put (hcp->opd, 1647 NULL , nv , ags , NULL)); 1651 i( dbp -> dup_com ! NULL ) { 1652 tmp_v2 . da = 1653 `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , 1654 h -> dx )+ h-> dup_off + 1655 ( db_dx_t ); 1656 tmp_v2 . size = h -> dup_n ; 1657 i( dbp -> `dup_com ( 1658 dbp , nv , & tmp_v2 ) != 0) { 1659 `__db_rx ( dbv , 1661 ( EINVAL ); 1665 i(( t = 1666 `__ham_make_dup ( dbp -> dbv , nv , & tmp_v , 1667 & dbc -> my_rda . da , &dbc->my_rda. un )) != 0) 1668 ( t ); 1670 tmp_v . doff = h -> dup_off ; 1671 tmp_v . dn = `DUP_SIZE ( h -> dup_n ); 1674 i( nv -> size > h -> dup_n ) { 1675 i(( t = `__hamc_upde ( dbc , 1676 ( nv -> size - h -> dup_n ), 1677 DB_HAM_CURADJ_ADDMOD , 1)) != 0) 1678 ( t ); 1679 h -> dup_ +( nv -> size - h-> dup_n ); 1681 i(( t = `__hamc_upde ( dbc , 1682 ( h -> dup_n - nv -> size ), 1683 DB_HAM_CURADJ_DELMOD , 1)) != 0) 1684 ( t ); 1685 h -> dup_ -(h-> dup_n - nv -> size ); 1687 h -> dup_n = ( db_dx_t ) nv -> size ; 1689 myv = & tmp_v ; 1690 } i(! `F_ISSET ( nv , DB_DBT_PARTIAL )) { 1692 `memy (& tmp_v , nv , (*nval)); 1693 `F_SET (& tmp_v , DB_DBT_PARTIAL ); 1694 tmp_v . doff = 0; 1695 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1696 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) 1697 `memy (& tmp_v . dn , 1698 `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 1700 tmp_v . dn = `LEN_HDATA ( dbp , h -> ge , 1701 h -> hdr -> dbma . gesize , h-> dx ); 1702 myv = & tmp_v ; 1705 myv = nv ; 1707 ( `__ham_ ( dbc , myv , 0)); 1708 } } 1720 $__ham_lookup ( dbc , key , sought , mode , pgn ) 1721 DBC * dbc ; 1722 cڡ DBT * key ; 1723 u_t32_t sought ; 1724 db_lockmode_t mode ; 1725 db_pgno_t * pgn ; 1727 DB * dbp ; 1728 HASH_CURSOR * h ; 1729 db_pgno_t xt_pgno ; 1730 mch , t ; 1731 u_t8_t * dk ; 1733 dbp = dbc ->dbp; 1734 h = ( HASH_CURSOR *) dbc -> ; 1740 i(( t = `__ham_em_t ( dbc )) != 0) 1741 ( t ); 1742 h -> ek_size = sought ; 1744 h -> buck = `__ham__hash ( dbc , ( u_t8_t *) key -> da , key-> size ); 1745 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 1747 i(( t = `__ham_g_age ( dbc , mode )) != 0) 1748 ( t ); 1750 * pgn = PGNO_INVALID ; 1751 i( h -> dx = NDX_INVALID ) { 1752 h -> dx = 0; 1753 `F_CLR ( h , H_ISDUP ); 1755 h -> pgno ! PGNO_INVALID ) { 1757 i( h -> ek_size != 0 && 1758 h -> ek_found_ge = PGNO_INVALID && 1759 h -> ek_size < `P_FREESPACE ( dbp , h-> ge )) { 1760 h -> ek_found_ge = h-> pgno ; 1761 h -> ek_found_dx = NDX_INVALID ; 1764 i(( t = `__ham_gdex ( dbp , dbc -> txn , h -> ge , key , 1765 H_KEYDATA , & mch , & h -> dx )) != 0) 1766 ( t ); 1773 i( h -> ek_found_ge =h-> pgno ) 1774 h -> ek_found_dx = h-> dx ; 1776 i( mch == 0) { 1777 `F_SET ( h , H_OK ); 1778 dk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1779 i( `HPAGE_PTYPE ( dk = H_OFFDUP ) 1780 `memy ( pgn , `HOFFDUP_PGNO ( dk ), 1781 ( db_pgno_t )); 1786 i( `NEXT_PGNO ( h -> ge = PGNO_INVALID ) 1788 xt_pgno = `NEXT_PGNO ( h -> ge ); 1789 h -> dx = 0; 1790 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 1791 ( t ); 1793 `F_SET ( h , H_NOMORE ); 1794 ( DB_NOTFOUND ); 1795 } } 1806 $__ham__dbt ( dbv , dbt , size , bu , siz ) 1807 DB_ENV * dbv ; 1808 DBT * dbt ; 1809 u_t32_t size ; 1810 ** bu ; 1811 u_t32_t * siz ; 1813 t ; 1815 `memt ( dbt , 0, (*dbt)); 1816 i(* siz < size ) { 1817 i(( t = `__os_loc ( dbv , size , bu )) != 0) { 1818 * siz = 0; 1819 ( t ); 1821 * siz = size ; 1823 dbt -> da = * bu ; 1824 dbt -> size = size; 1826 } } 1842 $__hamc_upde ( dbc , n , ݔi , is_dup ) 1843 DBC * dbc ; 1844 u_t32_t n ; 1845 db_ham_cudj ݔi ; 1846 is_dup ; 1848 DB * dbp , * ldbp ; 1849 DBC * ; 1850 DB_ENV * dbv ; 1851 DB_LSN l ; 1852 DB_TXN * my_txn ; 1853 HASH_CURSOR * h , * l ; 1854 found , t , was_mod , was_add ; 1855 u_t32_t d ; 1857 dbp = dbc ->dbp; 1858 dbv = dbp ->dbenv; 1859 h = ( HASH_CURSOR *) dbc -> ; 1867 my_txn = `IS_SUBTRANSACTION ( dbc -> txn ? dbc->tx: NULL ; 1868 found = 0; 1870 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 1872 ݔi ) { 1873 DB_HAM_CURADJ_DEL : 1874 was_mod = 0; 1875 was_add = 0; 1877 DB_HAM_CURADJ_ADD : 1878 was_mod = 0; 1879 was_add = 1; 1881 DB_HAM_CURADJ_DELMOD : 1882 was_mod = 1; 1883 was_add = 0; 1885 DB_HAM_CURADJ_ADDMOD : 1886 was_mod = 1; 1887 was_add = 1; 1890 `DB_ASSERT ( dbv , "Invalidrgo hamc_update"); 1891 ( EINVAL ); 1899 d = 0; 1900 i( was_add == 0) { 1901 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 1902 d = 1; 1903 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 1904 ldbp = `TAILQ_NEXT dbp, dblilks )) { 1905 `MUTEX_LOCK ( dbv , dbp -> mux ); 1906 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 1907 i( = dbc || cp-> dbty ! DB_HASH ) 1909 l = ( HASH_CURSOR *) -> ; 1910 i( `F_ISSET ( l , H_DELETED ) && 1911 h -> pgno = l ->pgno && 1912 h -> dx = l ->indx && 1913 d < l ->order && 1914 (! is_dup || h -> dup_off = l ->dup_off) && 1915 ! `MVCC_SKIP_CURADJ ( , l -> pgno )) 1916 d = l ->order + 1; 1918 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 1920 h -> d = order; 1923 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 1925 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 1926 ldbp = `TAILQ_NEXT dbp, dblilks )) { 1927 `MUTEX_LOCK ( dbv , dbp -> mux ); 1928 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 1929 i( = dbc || cp-> dbty ! DB_HASH ) 1932 l = ( HASH_CURSOR *) -> ; 1934 i( l -> pgno ! h ->pgno || 1935 l -> dx = NDX_INVALID || 1936 `MVCC_SKIP_CURADJ ( , l -> pgno )) 1939 i( my_txn ! NULL && -> txn != my_txn) 1940 found = 1; 1942 i(! is_dup ) { 1943 i( was_add == 1) { 1953 i( l -> dx = h ->indx && 1954 `F_ISSET ( l , H_DELETED )) { 1955 i( l -> d = h ->order) 1956 `F_CLR ( l , H_DELETED ); 1957 i( l -> d > 1958 h -> d ) { 1969 l -> d -= 1970 h -> d ; 1971 l -> dx += 2; 1973 } i( l -> dx > h ->indx) 1974 l -> dx += 2; 1976 i( l -> dx > h ->indx) { 1977 l -> dx -= 2; 1978 i( l -> dx = h ->indx && 1979 `F_ISSET ( l , H_DELETED )) 1980 l -> d += order; 1981 } i( l -> dx = h ->indx && 1982 ! `F_ISSET ( l , H_DELETED )) { 1983 `F_SET ( l , H_DELETED ); 1984 `F_CLR ( l , H_ISDUP ); 1985 l -> d = order; 1988 } i( l -> dx = h ->indx) { 1994 i( was_add == 1) { 1995 l -> dup_ + n ; 1996 i( l -> dup_off = h ->dup_off && 1997 `F_ISSET ( h , H_DELETED ) && 1998 `F_ISSET ( l , H_DELETED )) { 2000 i( l -> d = h ->order) 2001 `F_CLR ( l , H_DELETED ); 2002 i( l -> d > 2003 h -> d ) { 2004 l -> d -= 2005 ( h -> d -1); 2006 l -> dup_off + n ; 2008 } i( l -> dup_off > 2009 h -> dup_off || (! was_mod && 2010 l -> dup_off = h ->dup_off)) 2011 l -> dup_off + n ; 2013 l -> dup_ - n ; 2014 i( l -> dup_off > h ->dup_off) { 2015 l -> dup_off - n ; 2016 i( l -> dup_off == 2017 h -> dup_off && 2018 `F_ISSET ( l , H_DELETED )) 2019 l -> d += order; 2020 } i(! was_mod && 2021 l -> dup_off = h ->dup_off && 2022 ! `F_ISSET ( l , H_DELETED )) { 2023 `F_SET ( l , H_DELETED ); 2024 l -> d = order; 2029 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 2031 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 2033 i( found !0 && `DBC_LOGGING ( dbc )) { 2034 i(( t = `__ham_cudj_log ( dbp , my_txn , & l , 0, h -> pgno , 2035 h -> dx , n , h-> dup_off , () ݔi , is_dup , 2036 d )) != 0) 2037 ( t ); 2041 } } 2054 $__ham_g_i ( dbp , pgno , dx , lip ) 2055 DB * dbp ; 2056 db_pgno_t pgno ; 2057 u_t32_t dx ; 2058 DBC *** lip ; 2060 DB * ldbp ; 2061 DBC * ; 2062 DB_ENV * dbv ; 2063 u_t oc , nud ; 2064 t ; 2066 * lip = NULL ; 2067 dbv = dbp ->dbenv; 2068 oc = nud = 0; 2074 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 2075 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 2077 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 2078 ldbp = `TAILQ_NEXT dbp, dblilks )) { 2079 `MUTEX_LOCK ( dbv , dbp -> mux ); 2080 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) 2086 i( -> -> pgno ==gno && 2087 ( dx = NDX_INVALID || 2088 -> -> dx == indx) && 2089 ! `MVCC_SKIP_CURADJ ( , pgno )) { 2090 i( nud > oc ) { 2091 oc += 10; 2092 i(( t = `__os_loc ( dbp -> dbv , 2093 oc * ( HASH_CURSOR *), 2094 lip )) != 0) 2095 r ; 2097 (* lip )[ nud ++] = ; 2100 `MUTEX_UNLOCK ( dbp -> dbv , dbp-> mux ); 2102 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 2104 i( lip ! NULL ) { 2105 i( nud > oc ) { 2106 oc ++; 2107 i(( t = `__os_loc ( dbp -> dbv , 2108 oc * ( HASH_CURSOR *), lip )) != 0) 2109 ( t ); 2111 (* lip )[ nud ] = NULL ; 2114 r : 2115 `MUTEX_UNLOCK ( dbp -> dbv , dbp-> mux ); 2116 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 2117 ( t ); 2118 } } 2121 $__hamc_wrock ( dbc ) 2122 DBC * dbc ; 2124 DB_LOCK tmp_lock ; 2125 HASH_CURSOR * h ; 2126 t ; 2132 i(! `STD_LOCKING ( dbc )) 2135 h = ( HASH_CURSOR *) dbc -> ; 2136 t = 0; 2137 i((! `LOCK_ISSET ( h -> lock || h-> lock_mode ! DB_LOCK_WRITE )) { 2138 tmp_lock = h -> lock ; 2139 i(( t = `__ham_lock_buck ( dbc , DB_LOCK_WRITE )) == 0 && 2140 tmp_lock . mode ! DB_LOCK_WWRITE ) 2141 t = `__LPUT ( dbc , tmp_lock ); 2143 ( t ); 2144 } } @../hash/hash_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/hash.h " 11 ~"dbc/log.h " 12 ~"dbc/txn.h " 20 $__ham_sd_log ( dbp , tx , t_lp , ags , 21 code , pgno , ndx , g , key , 22 da ) 23 DB * dbp ; 24 DB_TXN * tx ; 25 DB_LSN * t_lp ; 26 u_t32_t ags ; 27 u_t32_t code ; 28 db_pgno_t pgno ; 29 u_t32_t ndx ; 30 DB_LSN * g ; 31 cڡ DBT * key ; 32 cڡ DBT * da ; 34 DBT logc ; 35 DB_ENV * dbv ; 36 DB_TXNLOGREC * ; 37 DB_LSN * lp , nu_l , * p ; 38 u_t32_t zo , ump , y , txn_num ; 39 u_t ad ; 40 u_t8_t * bp ; 41 is_dub , t ; 43 dbv = dbp ->dbenv; 44 `COMPQUIET ( , NULL ); 46 y = DB___ham_sd ; 47 ad = 0; 48 p = t_lp ; 50 t = 0; 52 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 53 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 54 i( tx = NULL ) 56 is_dub = 0; 58 is_dub = 1; 60 i( tx = NULL ) { 61 txn_num = 0; 62 lp = & nu_l ; 63 nu_l . fe =u_l. offt = 0; 65 i( `TAILQ_FIRST (& tx -> kids ! NULL && 66 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 67 ( t ); 74 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 75 txn_num = tx -> txnid ; 78 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 79 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 80 ( t = `__dbg_zy_id ( dbp )) != 0) 81 ( t ); 83 logc . size = ( y + ( txn_num + ( DB_LSN ) 84 + ( u_t32_t ) 85 + ( u_t32_t ) 86 + ( u_t32_t ) 87 + ( u_t32_t ) 88 + (* g ) 89 + ( u_t32_t + ( key = NULL ? 0 : key-> size ) 90 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 91 i( `CRYPTO_ON ( dbv )) { 92 ad = 93 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 94 logc . size + ad ; 97 i( is_dub || tx = NULL ) { 98 i(( t = 99 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 100 ( t ); 102 i(( t = `__os_mloc ( dbv , 103 logc . size + ( DB_TXNLOGREC ), & )) != 0) 104 ( t ); 105 #ifde DIAGNOSTIC 106 i(( t = 107 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 108 `__os_ ( dbv , ); 109 ( t ); 112 logc . da = ->data; 115 i( ad > 0) 116 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 118 bp = logc . da ; 120 `memy ( bp , & y , (rectype)); 121 bp +( y ); 123 `memy ( bp , & txn_num , (txn_num)); 124 bp +( txn_num ); 126 `memy ( bp , lp , ( DB_LSN )); 127 bp +( DB_LSN ); 129 ump = ( u_t32_t ) code ; 130 `memy ( bp , & ump , (uinttmp)); 131 bp +( ump ); 133 ump = ( u_t32_t ) dbp -> log_fame -> id ; 134 `memy ( bp , & ump , (uinttmp)); 135 bp +( ump ); 137 ump = ( u_t32_t ) pgno ; 138 `memy ( bp , & ump , (uinttmp)); 139 bp +( ump ); 141 ump = ( u_t32_t ) ndx ; 142 `memy ( bp , & ump , (uinttmp)); 143 bp +( ump ); 145 i( g ! NULL ) { 146 i( tx ! NULL ) { 147 LOG * = dbv -> lg_hd -> gfo . imy ; 148 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 149 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 150 ( t ); 152 `memy ( bp , g , (*pagelsn)); 154 `memt ( bp , 0, (* g )); 155 bp +(* g ); 157 i( key = NULL ) { 158 zo = 0; 159 `memy ( bp , & zo , ( u_t32_t )); 160 bp +( u_t32_t ); 162 `memy ( bp , & key -> size , (key->size)); 163 bp +( key -> size ); 164 `memy ( bp , key -> da , key-> size ); 165 bp + key -> size ; 168 i( da = NULL ) { 169 zo = 0; 170 `memy ( bp , & zo , ( u_t32_t )); 171 bp +( u_t32_t ); 173 `memy ( bp , & da -> size , (data->size)); 174 bp +( da -> size ); 175 `memy ( bp , da ->da, da-> size ); 176 bp + da -> size ; 179 `DB_ASSERT ( dbv , 180 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 182 i( is_dub || tx = NULL ) { 183 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 184 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 185 * lp = * p ; 186 i( p ! t_lp ) 187 * t_lp = * p ; 190 t = 0; 191 #ifde DIAGNOSTIC 196 `memy ( -> da , logc .da,ogc. size ); 197 y | DB_debug_FLAG ; 198 `memy ( logc . da , & y , (rectype)); 200 i(! `IS_REP_CLIENT ( dbv )) 201 t = `__log_put ( dbv , 202 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 204 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 205 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 206 `LSN_NOT_LOGGED (* t_lp ); 209 #ifde LOG_DIAGNOSTIC 210 i( t != 0) 211 () `__ham_sd_t ( dbv , 212 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 215 #ifde DIAGNOSTIC 216 `__os_ ( dbv , logc . da ); 218 i( is_dub || tx = NULL ) 219 `__os_ ( dbv , logc . da ); 221 ( t ); 222 } } 228 $__ham_sd_ad ( dbv , cbuf , g ) 229 DB_ENV * dbv ; 230 * cbuf ; 231 __ham_sd_gs ** g ; 233 __ham_sd_gs * gp ; 234 u_t32_t ump ; 235 u_t8_t * bp ; 236 t ; 238 i(( t = `__os_mloc ( dbv , 239 ( __ham_sd_gs + ( DB_TXN ), & gp )) != 0) 240 ( t ); 241 bp = cbuf ; 242 gp -> tx = ( DB_TXN *)&argp[1]; 243 `memt ( gp -> tx , 0, ( DB_TXN )); 245 `memy (& gp -> ty , bp , (argp->type)); 246 bp +( gp -> ty ); 248 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 249 bp +( gp -> tx -> txnid ); 251 `memy (& gp -> ev_l , bp , ( DB_LSN )); 252 bp +( DB_LSN ); 254 `memy (& ump , bp , (uinttmp)); 255 gp -> code = ( u_t32_t ) ump ; 256 bp +( ump ); 258 `memy (& ump , bp , (uinttmp)); 259 gp -> feid = ( t32_t ) ump ; 260 bp +( ump ); 262 `memy (& ump , bp , (uinttmp)); 263 gp -> pgno = ( db_pgno_t ) ump ; 264 bp +( ump ); 266 `memy (& ump , bp , (uinttmp)); 267 gp -> ndx = ( u_t32_t ) ump ; 268 bp +( ump ); 270 `memy (& gp -> g , bp , (argp->pagelsn)); 271 bp +( gp -> g ); 273 `memt (& gp -> key , 0, (argp->key)); 274 `memy (& gp -> key . size , bp , ( u_t32_t )); 275 bp +( u_t32_t ); 276 gp -> key . da = bp ; 277 bp + gp -> key . size ; 279 `memt (& gp -> da , 0, (argp->data)); 280 `memy (& gp -> da . size , bp , ( u_t32_t )); 281 bp +( u_t32_t ); 282 gp -> da .d bp ; 283 bp + gp -> da . size ; 285 * g = gp ; 287 } } 295 $__ham_wge_log ( dbp , tx , t_lp , ags , 296 code , ev_pgno , evl , w_pgno , g , 297 xt_pgno , x ) 298 DB * dbp ; 299 DB_TXN * tx ; 300 DB_LSN * t_lp ; 301 u_t32_t ags ; 302 u_t32_t code ; 303 db_pgno_t ev_pgno ; 304 DB_LSN * evl ; 305 db_pgno_t w_pgno ; 306 DB_LSN * g ; 307 db_pgno_t xt_pgno ; 308 DB_LSN * x ; 310 DBT logc ; 311 DB_ENV * dbv ; 312 DB_TXNLOGREC * ; 313 DB_LSN * lp , nu_l , * p ; 314 u_t32_t ump , y , txn_num ; 315 u_t ad ; 316 u_t8_t * bp ; 317 is_dub , t ; 319 dbv = dbp ->dbenv; 320 `COMPQUIET ( , NULL ); 322 y = DB___ham_wge ; 323 ad = 0; 324 p = t_lp ; 326 t = 0; 328 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 329 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 330 i( tx = NULL ) 332 is_dub = 0; 334 is_dub = 1; 336 i( tx = NULL ) { 337 txn_num = 0; 338 lp = & nu_l ; 339 nu_l . fe =u_l. offt = 0; 341 i( `TAILQ_FIRST (& tx -> kids ! NULL && 342 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 343 ( t ); 350 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 351 txn_num = tx -> txnid ; 354 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 355 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 356 ( t = `__dbg_zy_id ( dbp )) != 0) 357 ( t ); 359 logc . size = ( y + ( txn_num + ( DB_LSN ) 360 + ( u_t32_t ) 361 + ( u_t32_t ) 362 + ( u_t32_t ) 363 + (* evl ) 364 + ( u_t32_t ) 365 + (* g ) 366 + ( u_t32_t ) 367 + (* x ); 368 i( `CRYPTO_ON ( dbv )) { 369 ad = 370 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 371 logc . size + ad ; 374 i( is_dub || tx = NULL ) { 375 i(( t = 376 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 377 ( t ); 379 i(( t = `__os_mloc ( dbv , 380 logc . size + ( DB_TXNLOGREC ), & )) != 0) 381 ( t ); 382 #ifde DIAGNOSTIC 383 i(( t = 384 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 385 `__os_ ( dbv , ); 386 ( t ); 389 logc . da = ->data; 392 i( ad > 0) 393 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 395 bp = logc . da ; 397 `memy ( bp , & y , (rectype)); 398 bp +( y ); 400 `memy ( bp , & txn_num , (txn_num)); 401 bp +( txn_num ); 403 `memy ( bp , lp , ( DB_LSN )); 404 bp +( DB_LSN ); 406 ump = ( u_t32_t ) code ; 407 `memy ( bp , & ump , (uinttmp)); 408 bp +( ump ); 410 ump = ( u_t32_t ) dbp -> log_fame -> id ; 411 `memy ( bp , & ump , (uinttmp)); 412 bp +( ump ); 414 ump = ( u_t32_t ) ev_pgno ; 415 `memy ( bp , & ump , (uinttmp)); 416 bp +( ump ); 418 i( evl ! NULL ) { 419 i( tx ! NULL ) { 420 LOG * = dbv -> lg_hd -> gfo . imy ; 421 i( `LOG_COMPARE ( evl , & -> l >0 && ( t = 422 `__log_check_ge_l ( dbv , dbp , evl ) != 0)) 423 ( t ); 425 `memy ( bp , evl , (*prevlsn)); 427 `memt ( bp , 0, (* evl )); 428 bp +(* evl ); 430 ump = ( u_t32_t ) w_pgno ; 431 `memy ( bp , & ump , (uinttmp)); 432 bp +( ump ); 434 i( g ! NULL ) { 435 i( tx ! NULL ) { 436 LOG * = dbv -> lg_hd -> gfo . imy ; 437 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 438 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 439 ( t ); 441 `memy ( bp , g , (*pagelsn)); 443 `memt ( bp , 0, (* g )); 444 bp +(* g ); 446 ump = ( u_t32_t ) xt_pgno ; 447 `memy ( bp , & ump , (uinttmp)); 448 bp +( ump ); 450 i( x ! NULL ) { 451 i( tx ! NULL ) { 452 LOG * = dbv -> lg_hd -> gfo . imy ; 453 i( `LOG_COMPARE ( x , & -> l >0 && ( t = 454 `__log_check_ge_l ( dbv , dbp , x ) != 0)) 455 ( t ); 457 `memy ( bp , x , (*nextlsn)); 459 `memt ( bp , 0, (* x )); 460 bp +(* x ); 462 `DB_ASSERT ( dbv , 463 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 465 i( is_dub || tx = NULL ) { 466 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 467 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 468 * lp = * p ; 469 i( p ! t_lp ) 470 * t_lp = * p ; 473 t = 0; 474 #ifde DIAGNOSTIC 479 `memy ( -> da , logc .da,ogc. size ); 480 y | DB_debug_FLAG ; 481 `memy ( logc . da , & y , (rectype)); 483 i(! `IS_REP_CLIENT ( dbv )) 484 t = `__log_put ( dbv , 485 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 487 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 488 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 489 `LSN_NOT_LOGGED (* t_lp ); 492 #ifde LOG_DIAGNOSTIC 493 i( t != 0) 494 () `__ham_wge_t ( dbv , 495 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 498 #ifde DIAGNOSTIC 499 `__os_ ( dbv , logc . da ); 501 i( is_dub || tx = NULL ) 502 `__os_ ( dbv , logc . da ); 504 ( t ); 505 } } 512 $__ham_wge_ad ( dbv , cbuf , g ) 513 DB_ENV * dbv ; 514 * cbuf ; 515 __ham_wge_gs ** g ; 517 __ham_wge_gs * gp ; 518 u_t32_t ump ; 519 u_t8_t * bp ; 520 t ; 522 i(( t = `__os_mloc ( dbv , 523 ( __ham_wge_gs + ( DB_TXN ), & gp )) != 0) 524 ( t ); 525 bp = cbuf ; 526 gp -> tx = ( DB_TXN *)&argp[1]; 527 `memt ( gp -> tx , 0, ( DB_TXN )); 529 `memy (& gp -> ty , bp , (argp->type)); 530 bp +( gp -> ty ); 532 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 533 bp +( gp -> tx -> txnid ); 535 `memy (& gp -> ev_l , bp , ( DB_LSN )); 536 bp +( DB_LSN ); 538 `memy (& ump , bp , (uinttmp)); 539 gp -> code = ( u_t32_t ) ump ; 540 bp +( ump ); 542 `memy (& ump , bp , (uinttmp)); 543 gp -> feid = ( t32_t ) ump ; 544 bp +( ump ); 546 `memy (& ump , bp , (uinttmp)); 547 gp -> ev_pgno = ( db_pgno_t ) ump ; 548 bp +( ump ); 550 `memy (& gp -> evl , bp , (argp->prevlsn)); 551 bp +( gp -> evl ); 553 `memy (& ump , bp , (uinttmp)); 554 gp -> w_pgno = ( db_pgno_t ) ump ; 555 bp +( ump ); 557 `memy (& gp -> g , bp , (argp->pagelsn)); 558 bp +( gp -> g ); 560 `memy (& ump , bp , (uinttmp)); 561 gp -> xt_pgno = ( db_pgno_t ) ump ; 562 bp +( ump ); 564 `memy (& gp -> x , bp , (argp->nextlsn)); 565 bp +( gp -> x ); 567 * g = gp ; 569 } } 576 $__ham_lda_log ( dbp , tx , t_lp , ags , code , pgno , geimage , g ) 577 DB * dbp ; 578 DB_TXN * tx ; 579 DB_LSN * t_lp ; 580 u_t32_t ags ; 581 u_t32_t code ; 582 db_pgno_t pgno ; 583 cڡ DBT * geimage ; 584 DB_LSN * g ; 586 DBT logc ; 587 DB_ENV * dbv ; 588 DB_TXNLOGREC * ; 589 DB_LSN * lp , nu_l , * p ; 590 u_t32_t zo , ump , y , txn_num ; 591 u_t ad ; 592 u_t8_t * bp ; 593 is_dub , t ; 595 dbv = dbp ->dbenv; 596 `COMPQUIET ( , NULL ); 598 y = DB___ham_lda ; 599 ad = 0; 600 p = t_lp ; 602 t = 0; 604 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 605 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 606 i( tx = NULL ) 608 is_dub = 0; 610 is_dub = 1; 612 i( tx = NULL ) { 613 txn_num = 0; 614 lp = & nu_l ; 615 nu_l . fe =u_l. offt = 0; 617 i( `TAILQ_FIRST (& tx -> kids ! NULL && 618 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 619 ( t ); 626 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 627 txn_num = tx -> txnid ; 630 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 631 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 632 ( t = `__dbg_zy_id ( dbp )) != 0) 633 ( t ); 635 logc . size = ( y + ( txn_num + ( DB_LSN ) 636 + ( u_t32_t ) 637 + ( u_t32_t ) 638 + ( u_t32_t ) 639 + ( u_t32_t + ( geimage = NULL ? 0 :ageimage-> size ) 640 + (* g ); 641 i( `CRYPTO_ON ( dbv )) { 642 ad = 643 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 644 logc . size + ad ; 647 i( is_dub || tx = NULL ) { 648 i(( t = 649 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 650 ( t ); 652 i(( t = `__os_mloc ( dbv , 653 logc . size + ( DB_TXNLOGREC ), & )) != 0) 654 ( t ); 655 #ifde DIAGNOSTIC 656 i(( t = 657 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 658 `__os_ ( dbv , ); 659 ( t ); 662 logc . da = ->data; 665 i( ad > 0) 666 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 668 bp = logc . da ; 670 `memy ( bp , & y , (rectype)); 671 bp +( y ); 673 `memy ( bp , & txn_num , (txn_num)); 674 bp +( txn_num ); 676 `memy ( bp , lp , ( DB_LSN )); 677 bp +( DB_LSN ); 679 ump = ( u_t32_t ) dbp -> log_fame -> id ; 680 `memy ( bp , & ump , (uinttmp)); 681 bp +( ump ); 683 ump = ( u_t32_t ) code ; 684 `memy ( bp , & ump , (uinttmp)); 685 bp +( ump ); 687 ump = ( u_t32_t ) pgno ; 688 `memy ( bp , & ump , (uinttmp)); 689 bp +( ump ); 691 i( geimage = NULL ) { 692 zo = 0; 693 `memy ( bp , & zo , ( u_t32_t )); 694 bp +( u_t32_t ); 696 `memy ( bp , & geimage -> size , (pageimage->size)); 697 bp +( geimage -> size ); 698 `memy ( bp , geimage -> da ,ageimage-> size ); 699 bp + geimage -> size ; 702 i( g ! NULL ) { 703 i( tx ! NULL ) { 704 LOG * = dbv -> lg_hd -> gfo . imy ; 705 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 706 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 707 ( t ); 709 `memy ( bp , g , (*pagelsn)); 711 `memt ( bp , 0, (* g )); 712 bp +(* g ); 714 `DB_ASSERT ( dbv , 715 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 717 i( is_dub || tx = NULL ) { 718 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 719 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 720 * lp = * p ; 721 i( p ! t_lp ) 722 * t_lp = * p ; 725 t = 0; 726 #ifde DIAGNOSTIC 731 `memy ( -> da , logc .da,ogc. size ); 732 y | DB_debug_FLAG ; 733 `memy ( logc . da , & y , (rectype)); 735 i(! `IS_REP_CLIENT ( dbv )) 736 t = `__log_put ( dbv , 737 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 739 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 740 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 741 `LSN_NOT_LOGGED (* t_lp ); 744 #ifde LOG_DIAGNOSTIC 745 i( t != 0) 746 () `__ham_lda_t ( dbv , 747 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 750 #ifde DIAGNOSTIC 751 `__os_ ( dbv , logc . da ); 753 i( is_dub || tx = NULL ) 754 `__os_ ( dbv , logc . da ); 756 ( t ); 757 } } 764 $__ham_lda_ad ( dbv , cbuf , g ) 765 DB_ENV * dbv ; 766 * cbuf ; 767 __ham_lda_gs ** g ; 769 __ham_lda_gs * gp ; 770 u_t32_t ump ; 771 u_t8_t * bp ; 772 t ; 774 i(( t = `__os_mloc ( dbv , 775 ( __ham_lda_gs + ( DB_TXN ), & gp )) != 0) 776 ( t ); 777 bp = cbuf ; 778 gp -> tx = ( DB_TXN *)&argp[1]; 779 `memt ( gp -> tx , 0, ( DB_TXN )); 781 `memy (& gp -> ty , bp , (argp->type)); 782 bp +( gp -> ty ); 784 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 785 bp +( gp -> tx -> txnid ); 787 `memy (& gp -> ev_l , bp , ( DB_LSN )); 788 bp +( DB_LSN ); 790 `memy (& ump , bp , (uinttmp)); 791 gp -> feid = ( t32_t ) ump ; 792 bp +( ump ); 794 `memy (& ump , bp , (uinttmp)); 795 gp -> code = ( u_t32_t ) ump ; 796 bp +( ump ); 798 `memy (& ump , bp , (uinttmp)); 799 gp -> pgno = ( db_pgno_t ) ump ; 800 bp +( ump ); 802 `memt (& gp -> geimage , 0, (argp->pageimage)); 803 `memy (& gp -> geimage . size , bp , ( u_t32_t )); 804 bp +( u_t32_t ); 805 gp -> geimage . da = bp ; 806 bp + gp -> geimage . size ; 808 `memy (& gp -> g , bp , (argp->pagelsn)); 809 bp +( gp -> g ); 811 * g = gp ; 813 } } 821 $__ham_a_log ( dbp , tx , t_lp , ags , pgno , ndx , g , off , dem , 822 wem , makedup ) 823 DB * dbp ; 824 DB_TXN * tx ; 825 DB_LSN * t_lp ; 826 u_t32_t ags ; 827 db_pgno_t pgno ; 828 u_t32_t ndx ; 829 DB_LSN * g ; 830 t32_t off ; 831 cڡ DBT * dem ; 832 cڡ DBT * wem ; 833 u_t32_t makedup ; 835 DBT logc ; 836 DB_ENV * dbv ; 837 DB_TXNLOGREC * ; 838 DB_LSN * lp , nu_l , * p ; 839 u_t32_t zo , ump , y , txn_num ; 840 u_t ad ; 841 u_t8_t * bp ; 842 is_dub , t ; 844 dbv = dbp ->dbenv; 845 `COMPQUIET ( , NULL ); 847 y = DB___ham_a ; 848 ad = 0; 849 p = t_lp ; 851 t = 0; 853 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 854 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 855 i( tx = NULL ) 857 is_dub = 0; 859 is_dub = 1; 861 i( tx = NULL ) { 862 txn_num = 0; 863 lp = & nu_l ; 864 nu_l . fe =u_l. offt = 0; 866 i( `TAILQ_FIRST (& tx -> kids ! NULL && 867 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 868 ( t ); 875 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 876 txn_num = tx -> txnid ; 879 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 880 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 881 ( t = `__dbg_zy_id ( dbp )) != 0) 882 ( t ); 884 logc . size = ( y + ( txn_num + ( DB_LSN ) 885 + ( u_t32_t ) 886 + ( u_t32_t ) 887 + ( u_t32_t ) 888 + (* g ) 889 + ( u_t32_t ) 890 + ( u_t32_t + ( dem = NULL ? 0 : oldem-> size ) 891 + ( u_t32_t + ( wem = NULL ? 0 :ewem-> size ) 892 + ( u_t32_t ); 893 i( `CRYPTO_ON ( dbv )) { 894 ad = 895 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 896 logc . size + ad ; 899 i( is_dub || tx = NULL ) { 900 i(( t = 901 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 902 ( t ); 904 i(( t = `__os_mloc ( dbv , 905 logc . size + ( DB_TXNLOGREC ), & )) != 0) 906 ( t ); 907 #ifde DIAGNOSTIC 908 i(( t = 909 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 910 `__os_ ( dbv , ); 911 ( t ); 914 logc . da = ->data; 917 i( ad > 0) 918 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 920 bp = logc . da ; 922 `memy ( bp , & y , (rectype)); 923 bp +( y ); 925 `memy ( bp , & txn_num , (txn_num)); 926 bp +( txn_num ); 928 `memy ( bp , lp , ( DB_LSN )); 929 bp +( DB_LSN ); 931 ump = ( u_t32_t ) dbp -> log_fame -> id ; 932 `memy ( bp , & ump , (uinttmp)); 933 bp +( ump ); 935 ump = ( u_t32_t ) pgno ; 936 `memy ( bp , & ump , (uinttmp)); 937 bp +( ump ); 939 ump = ( u_t32_t ) ndx ; 940 `memy ( bp , & ump , (uinttmp)); 941 bp +( ump ); 943 i( g ! NULL ) { 944 i( tx ! NULL ) { 945 LOG * = dbv -> lg_hd -> gfo . imy ; 946 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 947 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 948 ( t ); 950 `memy ( bp , g , (*pagelsn)); 952 `memt ( bp , 0, (* g )); 953 bp +(* g ); 955 ump = ( u_t32_t ) off ; 956 `memy ( bp , & ump , (uinttmp)); 957 bp +( ump ); 959 i( dem = NULL ) { 960 zo = 0; 961 `memy ( bp , & zo , ( u_t32_t )); 962 bp +( u_t32_t ); 964 `memy ( bp , & dem -> size , (olditem->size)); 965 bp +( dem -> size ); 966 `memy ( bp , dem -> da , oldem-> size ); 967 bp + dem -> size ; 970 i( wem = NULL ) { 971 zo = 0; 972 `memy ( bp , & zo , ( u_t32_t )); 973 bp +( u_t32_t ); 975 `memy ( bp , & wem -> size , (newitem->size)); 976 bp +( wem -> size ); 977 `memy ( bp , wem -> da ,ewem-> size ); 978 bp + wem -> size ; 981 ump = ( u_t32_t ) makedup ; 982 `memy ( bp , & ump , (uinttmp)); 983 bp +( ump ); 985 `DB_ASSERT ( dbv , 986 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 988 i( is_dub || tx = NULL ) { 989 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 990 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 991 * lp = * p ; 992 i( p ! t_lp ) 993 * t_lp = * p ; 996 t = 0; 997 #ifde DIAGNOSTIC 1002 `memy ( -> da , logc .da,ogc. size ); 1003 y | DB_debug_FLAG ; 1004 `memy ( logc . da , & y , (rectype)); 1006 i(! `IS_REP_CLIENT ( dbv )) 1007 t = `__log_put ( dbv , 1008 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1010 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1011 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1012 `LSN_NOT_LOGGED (* t_lp ); 1015 #ifde LOG_DIAGNOSTIC 1016 i( t != 0) 1017 () `__ham_a_t ( dbv , 1018 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1021 #ifde DIAGNOSTIC 1022 `__os_ ( dbv , logc . da ); 1024 i( is_dub || tx = NULL ) 1025 `__os_ ( dbv , logc . da ); 1027 ( t ); 1028 } } 1035 $__ham_a_ad ( dbv , cbuf , g ) 1036 DB_ENV * dbv ; 1037 * cbuf ; 1038 __ham_a_gs ** g ; 1040 __ham_a_gs * gp ; 1041 u_t32_t ump ; 1042 u_t8_t * bp ; 1043 t ; 1045 i(( t = `__os_mloc ( dbv , 1046 ( __ham_a_gs + ( DB_TXN ), & gp )) != 0) 1047 ( t ); 1048 bp = cbuf ; 1049 gp -> tx = ( DB_TXN *)&argp[1]; 1050 `memt ( gp -> tx , 0, ( DB_TXN )); 1052 `memy (& gp -> ty , bp , (argp->type)); 1053 bp +( gp -> ty ); 1055 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1056 bp +( gp -> tx -> txnid ); 1058 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1059 bp +( DB_LSN ); 1061 `memy (& ump , bp , (uinttmp)); 1062 gp -> feid = ( t32_t ) ump ; 1063 bp +( ump ); 1065 `memy (& ump , bp , (uinttmp)); 1066 gp -> pgno = ( db_pgno_t ) ump ; 1067 bp +( ump ); 1069 `memy (& ump , bp , (uinttmp)); 1070 gp -> ndx = ( u_t32_t ) ump ; 1071 bp +( ump ); 1073 `memy (& gp -> g , bp , (argp->pagelsn)); 1074 bp +( gp -> g ); 1076 `memy (& ump , bp , (uinttmp)); 1077 gp -> off = ( t32_t ) ump ; 1078 bp +( ump ); 1080 `memt (& gp -> dem , 0, (argp->olditem)); 1081 `memy (& gp -> dem . size , bp , ( u_t32_t )); 1082 bp +( u_t32_t ); 1083 gp -> dem . da = bp ; 1084 bp + gp -> dem . size ; 1086 `memt (& gp -> wem , 0, (argp->newitem)); 1087 `memy (& gp -> wem . size , bp , ( u_t32_t )); 1088 bp +( u_t32_t ); 1089 gp -> wem . da = bp ; 1090 bp + gp -> wem . size ; 1092 `memy (& ump , bp , (uinttmp)); 1093 gp -> makedup = ( u_t32_t ) ump ; 1094 bp +( ump ); 1096 * g = gp ; 1098 } } 1106 $__ham_cyge_log ( dbp , tx , t_lp , ags , pgno , g , xt_pgno , x , ext_pgno , 1107 ex , ge ) 1108 DB * dbp ; 1109 DB_TXN * tx ; 1110 DB_LSN * t_lp ; 1111 u_t32_t ags ; 1112 db_pgno_t pgno ; 1113 DB_LSN * g ; 1114 db_pgno_t xt_pgno ; 1115 DB_LSN * x ; 1116 db_pgno_t ext_pgno ; 1117 DB_LSN * ex ; 1118 cڡ DBT * ge ; 1120 DBT logc ; 1121 DB_ENV * dbv ; 1122 DB_TXNLOGREC * ; 1123 DB_LSN * lp , nu_l , * p ; 1124 u_t32_t zo , ump , y , txn_num ; 1125 u_t ad ; 1126 u_t8_t * bp ; 1127 is_dub , t ; 1129 dbv = dbp ->dbenv; 1130 `COMPQUIET ( , NULL ); 1132 y = DB___ham_cyge ; 1133 ad = 0; 1134 p = t_lp ; 1136 t = 0; 1138 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1139 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1140 i( tx = NULL ) 1142 is_dub = 0; 1144 is_dub = 1; 1146 i( tx = NULL ) { 1147 txn_num = 0; 1148 lp = & nu_l ; 1149 nu_l . fe =u_l. offt = 0; 1151 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1152 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1153 ( t ); 1160 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1161 txn_num = tx -> txnid ; 1164 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1165 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1166 ( t = `__dbg_zy_id ( dbp )) != 0) 1167 ( t ); 1169 logc . size = ( y + ( txn_num + ( DB_LSN ) 1170 + ( u_t32_t ) 1171 + ( u_t32_t ) 1172 + (* g ) 1173 + ( u_t32_t ) 1174 + (* x ) 1175 + ( u_t32_t ) 1176 + (* ex ) 1177 + ( u_t32_t + ( ge = NULL ? 0 :age-> size ); 1178 i( `CRYPTO_ON ( dbv )) { 1179 ad = 1180 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1181 logc . size + ad ; 1184 i( is_dub || tx = NULL ) { 1185 i(( t = 1186 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1187 ( t ); 1189 i(( t = `__os_mloc ( dbv , 1190 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1191 ( t ); 1192 #ifde DIAGNOSTIC 1193 i(( t = 1194 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1195 `__os_ ( dbv , ); 1196 ( t ); 1199 logc . da = ->data; 1202 i( ad > 0) 1203 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1205 bp = logc . da ; 1207 `memy ( bp , & y , (rectype)); 1208 bp +( y ); 1210 `memy ( bp , & txn_num , (txn_num)); 1211 bp +( txn_num ); 1213 `memy ( bp , lp , ( DB_LSN )); 1214 bp +( DB_LSN ); 1216 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1217 `memy ( bp , & ump , (uinttmp)); 1218 bp +( ump ); 1220 ump = ( u_t32_t ) pgno ; 1221 `memy ( bp , & ump , (uinttmp)); 1222 bp +( ump ); 1224 i( g ! NULL ) { 1225 i( tx ! NULL ) { 1226 LOG * = dbv -> lg_hd -> gfo . imy ; 1227 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 1228 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 1229 ( t ); 1231 `memy ( bp , g , (*pagelsn)); 1233 `memt ( bp , 0, (* g )); 1234 bp +(* g ); 1236 ump = ( u_t32_t ) xt_pgno ; 1237 `memy ( bp , & ump , (uinttmp)); 1238 bp +( ump ); 1240 i( x ! NULL ) { 1241 i( tx ! NULL ) { 1242 LOG * = dbv -> lg_hd -> gfo . imy ; 1243 i( `LOG_COMPARE ( x , & -> l >0 && ( t = 1244 `__log_check_ge_l ( dbv , dbp , x ) != 0)) 1245 ( t ); 1247 `memy ( bp , x , (*nextlsn)); 1249 `memt ( bp , 0, (* x )); 1250 bp +(* x ); 1252 ump = ( u_t32_t ) ext_pgno ; 1253 `memy ( bp , & ump , (uinttmp)); 1254 bp +( ump ); 1256 i( ex ! NULL ) { 1257 i( tx ! NULL ) { 1258 LOG * = dbv -> lg_hd -> gfo . imy ; 1259 i( `LOG_COMPARE ( ex , & -> l >0 && ( t = 1260 `__log_check_ge_l ( dbv , dbp , ex ) != 0)) 1261 ( t ); 1263 `memy ( bp , ex , (*nnextlsn)); 1265 `memt ( bp , 0, (* ex )); 1266 bp +(* ex ); 1268 i( ge = NULL ) { 1269 zo = 0; 1270 `memy ( bp , & zo , ( u_t32_t )); 1271 bp +( u_t32_t ); 1273 `memy ( bp , & ge -> size , (page->size)); 1274 bp +( ge -> size ); 1275 `memy ( bp , ge -> da ,age-> size ); 1276 bp + ge -> size ; 1279 `DB_ASSERT ( dbv , 1280 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1282 i( is_dub || tx = NULL ) { 1283 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1284 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1285 * lp = * p ; 1286 i( p ! t_lp ) 1287 * t_lp = * p ; 1290 t = 0; 1291 #ifde DIAGNOSTIC 1296 `memy ( -> da , logc .da,ogc. size ); 1297 y | DB_debug_FLAG ; 1298 `memy ( logc . da , & y , (rectype)); 1300 i(! `IS_REP_CLIENT ( dbv )) 1301 t = `__log_put ( dbv , 1302 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1304 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1305 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1306 `LSN_NOT_LOGGED (* t_lp ); 1309 #ifde LOG_DIAGNOSTIC 1310 i( t != 0) 1311 () `__ham_cyge_t ( dbv , 1312 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1315 #ifde DIAGNOSTIC 1316 `__os_ ( dbv , logc . da ); 1318 i( is_dub || tx = NULL ) 1319 `__os_ ( dbv , logc . da ); 1321 ( t ); 1322 } } 1329 $__ham_cyge_ad ( dbv , cbuf , g ) 1330 DB_ENV * dbv ; 1331 * cbuf ; 1332 __ham_cyge_gs ** g ; 1334 __ham_cyge_gs * gp ; 1335 u_t32_t ump ; 1336 u_t8_t * bp ; 1337 t ; 1339 i(( t = `__os_mloc ( dbv , 1340 ( __ham_cyge_gs + ( DB_TXN ), & gp )) != 0) 1341 ( t ); 1342 bp = cbuf ; 1343 gp -> tx = ( DB_TXN *)&argp[1]; 1344 `memt ( gp -> tx , 0, ( DB_TXN )); 1346 `memy (& gp -> ty , bp , (argp->type)); 1347 bp +( gp -> ty ); 1349 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1350 bp +( gp -> tx -> txnid ); 1352 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1353 bp +( DB_LSN ); 1355 `memy (& ump , bp , (uinttmp)); 1356 gp -> feid = ( t32_t ) ump ; 1357 bp +( ump ); 1359 `memy (& ump , bp , (uinttmp)); 1360 gp -> pgno = ( db_pgno_t ) ump ; 1361 bp +( ump ); 1363 `memy (& gp -> g , bp , (argp->pagelsn)); 1364 bp +( gp -> g ); 1366 `memy (& ump , bp , (uinttmp)); 1367 gp -> xt_pgno = ( db_pgno_t ) ump ; 1368 bp +( ump ); 1370 `memy (& gp -> x , bp , (argp->nextlsn)); 1371 bp +( gp -> x ); 1373 `memy (& ump , bp , (uinttmp)); 1374 gp -> ext_pgno = ( db_pgno_t ) ump ; 1375 bp +( ump ); 1377 `memy (& gp -> ex , bp , (argp->nnextlsn)); 1378 bp +( gp -> ex ); 1380 `memt (& gp -> ge , 0, (argp->page)); 1381 `memy (& gp -> ge . size , bp , ( u_t32_t )); 1382 bp +( u_t32_t ); 1383 gp -> ge . da = bp ; 1384 bp + gp -> ge . size ; 1386 * g = gp ; 1388 } } 1395 $__ham_magroup_42_ad ( dbv , cbuf , g ) 1396 DB_ENV * dbv ; 1397 * cbuf ; 1398 __ham_magroup_42_gs ** g ; 1400 __ham_magroup_42_gs * gp ; 1401 u_t32_t ump ; 1402 u_t8_t * bp ; 1403 t ; 1405 i(( t = `__os_mloc ( dbv , 1406 ( __ham_magroup_42_gs + ( DB_TXN ), & gp )) != 0) 1407 ( t ); 1408 bp = cbuf ; 1409 gp -> tx = ( DB_TXN *)&argp[1]; 1410 `memt ( gp -> tx , 0, ( DB_TXN )); 1412 `memy (& gp -> ty , bp , (argp->type)); 1413 bp +( gp -> ty ); 1415 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1416 bp +( gp -> tx -> txnid ); 1418 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1419 bp +( DB_LSN ); 1421 `memy (& ump , bp , (uinttmp)); 1422 gp -> feid = ( t32_t ) ump ; 1423 bp +( ump ); 1425 `memy (& ump , bp , (uinttmp)); 1426 gp -> buck = ( u_t32_t ) ump ; 1427 bp +( ump ); 1429 `memy (& ump , bp , (uinttmp)); 1430 gp -> mmpgno = ( db_pgno_t ) ump ; 1431 bp +( ump ); 1433 `memy (& gp -> mm , bp , (argp->mmetalsn)); 1434 bp +( gp -> mm ); 1436 `memy (& ump , bp , (uinttmp)); 1437 gp -> mpgno = ( db_pgno_t ) ump ; 1438 bp +( ump ); 1440 `memy (& gp -> m , bp , (argp->metalsn)); 1441 bp +( gp -> m ); 1443 `memy (& ump , bp , (uinttmp)); 1444 gp -> pgno = ( db_pgno_t ) ump ; 1445 bp +( ump ); 1447 `memy (& gp -> g , bp , (argp->pagelsn)); 1448 bp +( gp -> g ); 1450 `memy (& ump , bp , (uinttmp)); 1451 gp -> wloc = ( u_t32_t ) ump ; 1452 bp +( ump ); 1454 * g = gp ; 1456 } } 1464 $__ham_magroup_log ( dbp , tx , t_lp , ags , buck , mmpgno , mm , mpgno , m , 1465 pgno , g , wloc , ϡ_pgno ) 1466 DB * dbp ; 1467 DB_TXN * tx ; 1468 DB_LSN * t_lp ; 1469 u_t32_t ags ; 1470 u_t32_t buck ; 1471 db_pgno_t mmpgno ; 1472 DB_LSN * mm ; 1473 db_pgno_t mpgno ; 1474 DB_LSN * m ; 1475 db_pgno_t pgno ; 1476 DB_LSN * g ; 1477 u_t32_t wloc ; 1478 db_pgno_t ϡ_pgno ; 1480 DBT logc ; 1481 DB_ENV * dbv ; 1482 DB_TXNLOGREC * ; 1483 DB_LSN * lp , nu_l , * p ; 1484 u_t32_t ump , y , txn_num ; 1485 u_t ad ; 1486 u_t8_t * bp ; 1487 is_dub , t ; 1489 dbv = dbp ->dbenv; 1490 `COMPQUIET ( , NULL ); 1492 y = DB___ham_magroup ; 1493 ad = 0; 1494 p = t_lp ; 1496 t = 0; 1498 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1499 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1500 i( tx = NULL ) 1502 is_dub = 0; 1504 is_dub = 1; 1506 i( tx = NULL ) { 1507 txn_num = 0; 1508 lp = & nu_l ; 1509 nu_l . fe =u_l. offt = 0; 1511 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1512 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1513 ( t ); 1520 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1521 txn_num = tx -> txnid ; 1524 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1525 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1526 ( t = `__dbg_zy_id ( dbp )) != 0) 1527 ( t ); 1529 logc . size = ( y + ( txn_num + ( DB_LSN ) 1530 + ( u_t32_t ) 1531 + ( u_t32_t ) 1532 + ( u_t32_t ) 1533 + (* mm ) 1534 + ( u_t32_t ) 1535 + (* m ) 1536 + ( u_t32_t ) 1537 + (* g ) 1538 + ( u_t32_t ) 1539 + ( u_t32_t ); 1540 i( `CRYPTO_ON ( dbv )) { 1541 ad = 1542 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1543 logc . size + ad ; 1546 i( is_dub || tx = NULL ) { 1547 i(( t = 1548 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1549 ( t ); 1551 i(( t = `__os_mloc ( dbv , 1552 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1553 ( t ); 1554 #ifde DIAGNOSTIC 1555 i(( t = 1556 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1557 `__os_ ( dbv , ); 1558 ( t ); 1561 logc . da = ->data; 1564 i( ad > 0) 1565 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1567 bp = logc . da ; 1569 `memy ( bp , & y , (rectype)); 1570 bp +( y ); 1572 `memy ( bp , & txn_num , (txn_num)); 1573 bp +( txn_num ); 1575 `memy ( bp , lp , ( DB_LSN )); 1576 bp +( DB_LSN ); 1578 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1579 `memy ( bp , & ump , (uinttmp)); 1580 bp +( ump ); 1582 ump = ( u_t32_t ) buck ; 1583 `memy ( bp , & ump , (uinttmp)); 1584 bp +( ump ); 1586 ump = ( u_t32_t ) mmpgno ; 1587 `memy ( bp , & ump , (uinttmp)); 1588 bp +( ump ); 1590 i( mm ! NULL ) { 1591 i( tx ! NULL ) { 1592 LOG * = dbv -> lg_hd -> gfo . imy ; 1593 i( `LOG_COMPARE ( mm , & -> l >0 && ( t = 1594 `__log_check_ge_l ( dbv , dbp , mm ) != 0)) 1595 ( t ); 1597 `memy ( bp , mm , (*mmetalsn)); 1599 `memt ( bp , 0, (* mm )); 1600 bp +(* mm ); 1602 ump = ( u_t32_t ) mpgno ; 1603 `memy ( bp , & ump , (uinttmp)); 1604 bp +( ump ); 1606 i( m ! NULL ) { 1607 i( tx ! NULL ) { 1608 LOG * = dbv -> lg_hd -> gfo . imy ; 1609 i( `LOG_COMPARE ( m , & -> l >0 && ( t = 1610 `__log_check_ge_l ( dbv , dbp , m ) != 0)) 1611 ( t ); 1613 `memy ( bp , m , (*metalsn)); 1615 `memt ( bp , 0, (* m )); 1616 bp +(* m ); 1618 ump = ( u_t32_t ) pgno ; 1619 `memy ( bp , & ump , (uinttmp)); 1620 bp +( ump ); 1622 i( g ! NULL ) { 1623 i( tx ! NULL ) { 1624 LOG * = dbv -> lg_hd -> gfo . imy ; 1625 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 1626 `__log_check_ge_l ( dbv , dbp , g ) != 0)) 1627 ( t ); 1629 `memy ( bp , g , (*pagelsn)); 1631 `memt ( bp , 0, (* g )); 1632 bp +(* g ); 1634 ump = ( u_t32_t ) wloc ; 1635 `memy ( bp , & ump , (uinttmp)); 1636 bp +( ump ); 1638 ump = ( u_t32_t ) ϡ_pgno ; 1639 `memy ( bp , & ump , (uinttmp)); 1640 bp +( ump ); 1642 `DB_ASSERT ( dbv , 1643 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1645 i( is_dub || tx = NULL ) { 1646 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1647 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1648 * lp = * p ; 1649 i( p ! t_lp ) 1650 * t_lp = * p ; 1653 t = 0; 1654 #ifde DIAGNOSTIC 1659 `memy ( -> da , logc .da,ogc. size ); 1660 y | DB_debug_FLAG ; 1661 `memy ( logc . da , & y , (rectype)); 1663 i(! `IS_REP_CLIENT ( dbv )) 1664 t = `__log_put ( dbv , 1665 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1667 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1668 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1669 `LSN_NOT_LOGGED (* t_lp ); 1672 #ifde LOG_DIAGNOSTIC 1673 i( t != 0) 1674 () `__ham_magroup_t ( dbv , 1675 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1678 #ifde DIAGNOSTIC 1679 `__os_ ( dbv , logc . da ); 1681 i( is_dub || tx = NULL ) 1682 `__os_ ( dbv , logc . da ); 1684 ( t ); 1685 } } 1692 $__ham_magroup_ad ( dbv , cbuf , g ) 1693 DB_ENV * dbv ; 1694 * cbuf ; 1695 __ham_magroup_gs ** g ; 1697 __ham_magroup_gs * gp ; 1698 u_t32_t ump ; 1699 u_t8_t * bp ; 1700 t ; 1702 i(( t = `__os_mloc ( dbv , 1703 ( __ham_magroup_gs + ( DB_TXN ), & gp )) != 0) 1704 ( t ); 1705 bp = cbuf ; 1706 gp -> tx = ( DB_TXN *)&argp[1]; 1707 `memt ( gp -> tx , 0, ( DB_TXN )); 1709 `memy (& gp -> ty , bp , (argp->type)); 1710 bp +( gp -> ty ); 1712 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1713 bp +( gp -> tx -> txnid ); 1715 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1716 bp +( DB_LSN ); 1718 `memy (& ump , bp , (uinttmp)); 1719 gp -> feid = ( t32_t ) ump ; 1720 bp +( ump ); 1722 `memy (& ump , bp , (uinttmp)); 1723 gp -> buck = ( u_t32_t ) ump ; 1724 bp +( ump ); 1726 `memy (& ump , bp , (uinttmp)); 1727 gp -> mmpgno = ( db_pgno_t ) ump ; 1728 bp +( ump ); 1730 `memy (& gp -> mm , bp , (argp->mmetalsn)); 1731 bp +( gp -> mm ); 1733 `memy (& ump , bp , (uinttmp)); 1734 gp -> mpgno = ( db_pgno_t ) ump ; 1735 bp +( ump ); 1737 `memy (& gp -> m , bp , (argp->metalsn)); 1738 bp +( gp -> m ); 1740 `memy (& ump , bp , (uinttmp)); 1741 gp -> pgno = ( db_pgno_t ) ump ; 1742 bp +( ump ); 1744 `memy (& gp -> g , bp , (argp->pagelsn)); 1745 bp +( gp -> g ); 1747 `memy (& ump , bp , (uinttmp)); 1748 gp -> wloc = ( u_t32_t ) ump ; 1749 bp +( ump ); 1751 `memy (& ump , bp , (uinttmp)); 1752 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 1753 bp +( ump ); 1755 * g = gp ; 1757 } } 1764 $__ham_grouoc_42_ad ( dbv , cbuf , g ) 1765 DB_ENV * dbv ; 1766 * cbuf ; 1767 __ham_grouoc_42_gs ** g ; 1769 __ham_grouoc_42_gs * gp ; 1770 u_t32_t ump ; 1771 u_t8_t * bp ; 1772 t ; 1774 i(( t = `__os_mloc ( dbv , 1775 ( __ham_grouoc_42_gs + ( DB_TXN ), & gp )) != 0) 1776 ( t ); 1777 bp = cbuf ; 1778 gp -> tx = ( DB_TXN *)&argp[1]; 1779 `memt ( gp -> tx , 0, ( DB_TXN )); 1781 `memy (& gp -> ty , bp , (argp->type)); 1782 bp +( gp -> ty ); 1784 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1785 bp +( gp -> tx -> txnid ); 1787 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1788 bp +( DB_LSN ); 1790 `memy (& ump , bp , (uinttmp)); 1791 gp -> feid = ( t32_t ) ump ; 1792 bp +( ump ); 1794 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 1795 bp +( gp -> ma_l ); 1797 `memy (& ump , bp , (uinttmp)); 1798 gp -> t_pgno = ( db_pgno_t ) ump ; 1799 bp +( ump ); 1801 `memy (& ump , bp , (uinttmp)); 1802 gp -> num = ( u_t32_t ) ump ; 1803 bp +( ump ); 1805 `memy (& ump , bp , (uinttmp)); 1806 gp -> = ( db_pgno_t ) ump ; 1807 bp +( ump ); 1809 * g = gp ; 1811 } } 1819 $__ham_grouoc_log ( dbp , tx , t_lp , ags , ma_l , t_pgno , num , unud , ϡ_pgno ) 1820 DB * dbp ; 1821 DB_TXN * tx ; 1822 DB_LSN * t_lp ; 1823 u_t32_t ags ; 1824 DB_LSN * ma_l ; 1825 db_pgno_t t_pgno ; 1826 u_t32_t num ; 1827 db_pgno_t unud ; 1828 db_pgno_t ϡ_pgno ; 1830 DBT logc ; 1831 DB_ENV * dbv ; 1832 DB_TXNLOGREC * ; 1833 DB_LSN * lp , nu_l , * p ; 1834 u_t32_t ump , y , txn_num ; 1835 u_t ad ; 1836 u_t8_t * bp ; 1837 is_dub , t ; 1839 dbv = dbp ->dbenv; 1840 `COMPQUIET ( , NULL ); 1842 y = DB___ham_grouoc ; 1843 ad = 0; 1844 p = t_lp ; 1846 t = 0; 1848 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1849 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1850 i( tx = NULL ) 1852 is_dub = 0; 1854 is_dub = 1; 1856 i( tx = NULL ) { 1857 txn_num = 0; 1858 lp = & nu_l ; 1859 nu_l . fe =u_l. offt = 0; 1861 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1862 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1863 ( t ); 1870 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1871 txn_num = tx -> txnid ; 1874 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1875 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1876 ( t = `__dbg_zy_id ( dbp )) != 0) 1877 ( t ); 1879 logc . size = ( y + ( txn_num + ( DB_LSN ) 1880 + ( u_t32_t ) 1881 + (* ma_l ) 1882 + ( u_t32_t ) 1883 + ( u_t32_t ) 1884 + ( u_t32_t ) 1885 + ( u_t32_t ); 1886 i( `CRYPTO_ON ( dbv )) { 1887 ad = 1888 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1889 logc . size + ad ; 1892 i( is_dub || tx = NULL ) { 1893 i(( t = 1894 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1895 ( t ); 1897 i(( t = `__os_mloc ( dbv , 1898 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1899 ( t ); 1900 #ifde DIAGNOSTIC 1901 i(( t = 1902 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1903 `__os_ ( dbv , ); 1904 ( t ); 1907 logc . da = ->data; 1910 i( ad > 0) 1911 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1913 bp = logc . da ; 1915 `memy ( bp , & y , (rectype)); 1916 bp +( y ); 1918 `memy ( bp , & txn_num , (txn_num)); 1919 bp +( txn_num ); 1921 `memy ( bp , lp , ( DB_LSN )); 1922 bp +( DB_LSN ); 1924 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1925 `memy ( bp , & ump , (uinttmp)); 1926 bp +( ump ); 1928 i( ma_l ! NULL ) { 1929 i( tx ! NULL ) { 1930 LOG * = dbv -> lg_hd -> gfo . imy ; 1931 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1932 `__log_check_ge_l ( dbv , dbp , ma_l ) != 0)) 1933 ( t ); 1935 `memy ( bp , ma_l , (*meta_lsn)); 1937 `memt ( bp , 0, (* ma_l )); 1938 bp +(* ma_l ); 1940 ump = ( u_t32_t ) t_pgno ; 1941 `memy ( bp , & ump , (uinttmp)); 1942 bp +( ump ); 1944 ump = ( u_t32_t ) num ; 1945 `memy ( bp , & ump , (uinttmp)); 1946 bp +( ump ); 1948 ump = ( u_t32_t ) unud ; 1949 `memy ( bp , & ump , (uinttmp)); 1950 bp +( ump ); 1952 ump = ( u_t32_t ) ϡ_pgno ; 1953 `memy ( bp , & ump , (uinttmp)); 1954 bp +( ump ); 1956 `DB_ASSERT ( dbv , 1957 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1959 i( is_dub || tx = NULL ) { 1960 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1961 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1962 * lp = * p ; 1963 i( p ! t_lp ) 1964 * t_lp = * p ; 1967 t = 0; 1968 #ifde DIAGNOSTIC 1973 `memy ( -> da , logc .da,ogc. size ); 1974 y | DB_debug_FLAG ; 1975 `memy ( logc . da , & y , (rectype)); 1977 i(! `IS_REP_CLIENT ( dbv )) 1978 t = `__log_put ( dbv , 1979 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1981 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1982 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1983 `LSN_NOT_LOGGED (* t_lp ); 1986 #ifde LOG_DIAGNOSTIC 1987 i( t != 0) 1988 () `__ham_grouoc_t ( dbv , 1989 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1992 #ifde DIAGNOSTIC 1993 `__os_ ( dbv , logc . da ); 1995 i( is_dub || tx = NULL ) 1996 `__os_ ( dbv , logc . da ); 1998 ( t ); 1999 } } 2006 $__ham_grouoc_ad ( dbv , cbuf , g ) 2007 DB_ENV * dbv ; 2008 * cbuf ; 2009 __ham_grouoc_gs ** g ; 2011 __ham_grouoc_gs * gp ; 2012 u_t32_t ump ; 2013 u_t8_t * bp ; 2014 t ; 2016 i(( t = `__os_mloc ( dbv , 2017 ( __ham_grouoc_gs + ( DB_TXN ), & gp )) != 0) 2018 ( t ); 2019 bp = cbuf ; 2020 gp -> tx = ( DB_TXN *)&argp[1]; 2021 `memt ( gp -> tx , 0, ( DB_TXN )); 2023 `memy (& gp -> ty , bp , (argp->type)); 2024 bp +( gp -> ty ); 2026 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2027 bp +( gp -> tx -> txnid ); 2029 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2030 bp +( DB_LSN ); 2032 `memy (& ump , bp , (uinttmp)); 2033 gp -> feid = ( t32_t ) ump ; 2034 bp +( ump ); 2036 `memy (& gp -> ma_l , bp , (argp->meta_lsn)); 2037 bp +( gp -> ma_l ); 2039 `memy (& ump , bp , (uinttmp)); 2040 gp -> t_pgno = ( db_pgno_t ) ump ; 2041 bp +( ump ); 2043 `memy (& ump , bp , (uinttmp)); 2044 gp -> num = ( u_t32_t ) ump ; 2045 bp +( ump ); 2047 `memy (& ump , bp , (uinttmp)); 2048 gp -> unud = ( db_pgno_t ) ump ; 2049 bp +( ump ); 2051 `memy (& ump , bp , (uinttmp)); 2052 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 2053 bp +( ump ); 2055 * g = gp ; 2057 } } 2065 $__ham_cudj_log ( dbp , tx , t_lp , ags , pgno , dx , n , dup_off , add , 2066 is_dup , d ) 2067 DB * dbp ; 2068 DB_TXN * tx ; 2069 DB_LSN * t_lp ; 2070 u_t32_t ags ; 2071 db_pgno_t pgno ; 2072 u_t32_t dx ; 2073 u_t32_t n ; 2074 u_t32_t dup_off ; 2075 add ; 2076 is_dup ; 2077 u_t32_t d ; 2079 DBT logc ; 2080 DB_ENV * dbv ; 2081 DB_TXNLOGREC * ; 2082 DB_LSN * lp , nu_l , * p ; 2083 u_t32_t ump , y , txn_num ; 2084 u_t ad ; 2085 u_t8_t * bp ; 2086 is_dub , t ; 2088 dbv = dbp ->dbenv; 2089 `COMPQUIET ( , NULL ); 2091 y = DB___ham_cudj ; 2092 ad = 0; 2093 p = t_lp ; 2095 t = 0; 2097 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2098 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2099 i( tx = NULL ) 2101 is_dub = 0; 2103 is_dub = 1; 2105 i( tx = NULL ) { 2106 txn_num = 0; 2107 lp = & nu_l ; 2108 nu_l . fe =u_l. offt = 0; 2110 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2111 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2112 ( t ); 2119 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2120 txn_num = tx -> txnid ; 2123 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2124 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2125 ( t = `__dbg_zy_id ( dbp )) != 0) 2126 ( t ); 2128 logc . size = ( y + ( txn_num + ( DB_LSN ) 2129 + ( u_t32_t ) 2130 + ( u_t32_t ) 2131 + ( u_t32_t ) 2132 + ( u_t32_t ) 2133 + ( u_t32_t ) 2134 + ( u_t32_t ) 2135 + ( u_t32_t ) 2136 + ( u_t32_t ); 2137 i( `CRYPTO_ON ( dbv )) { 2138 ad = 2139 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2140 logc . size + ad ; 2143 i( is_dub || tx = NULL ) { 2144 i(( t = 2145 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2146 ( t ); 2148 i(( t = `__os_mloc ( dbv , 2149 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2150 ( t ); 2151 #ifde DIAGNOSTIC 2152 i(( t = 2153 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2154 `__os_ ( dbv , ); 2155 ( t ); 2158 logc . da = ->data; 2161 i( ad > 0) 2162 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2164 bp = logc . da ; 2166 `memy ( bp , & y , (rectype)); 2167 bp +( y ); 2169 `memy ( bp , & txn_num , (txn_num)); 2170 bp +( txn_num ); 2172 `memy ( bp , lp , ( DB_LSN )); 2173 bp +( DB_LSN ); 2175 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2176 `memy ( bp , & ump , (uinttmp)); 2177 bp +( ump ); 2179 ump = ( u_t32_t ) pgno ; 2180 `memy ( bp , & ump , (uinttmp)); 2181 bp +( ump ); 2183 ump = ( u_t32_t ) dx ; 2184 `memy ( bp , & ump , (uinttmp)); 2185 bp +( ump ); 2187 ump = ( u_t32_t ) n ; 2188 `memy ( bp , & ump , (uinttmp)); 2189 bp +( ump ); 2191 ump = ( u_t32_t ) dup_off ; 2192 `memy ( bp , & ump , (uinttmp)); 2193 bp +( ump ); 2195 ump = ( u_t32_t ) add ; 2196 `memy ( bp , & ump , (uinttmp)); 2197 bp +( ump ); 2199 ump = ( u_t32_t ) is_dup ; 2200 `memy ( bp , & ump , (uinttmp)); 2201 bp +( ump ); 2203 ump = ( u_t32_t ) d ; 2204 `memy ( bp , & ump , (uinttmp)); 2205 bp +( ump ); 2207 `DB_ASSERT ( dbv , 2208 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2210 i( is_dub || tx = NULL ) { 2211 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2212 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2213 * lp = * p ; 2214 i( p ! t_lp ) 2215 * t_lp = * p ; 2218 t = 0; 2219 #ifde DIAGNOSTIC 2224 `memy ( -> da , logc .da,ogc. size ); 2225 y | DB_debug_FLAG ; 2226 `memy ( logc . da , & y , (rectype)); 2228 i(! `IS_REP_CLIENT ( dbv )) 2229 t = `__log_put ( dbv , 2230 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2232 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2233 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2234 `LSN_NOT_LOGGED (* t_lp ); 2237 #ifde LOG_DIAGNOSTIC 2238 i( t != 0) 2239 () `__ham_cudj_t ( dbv , 2240 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2243 #ifde DIAGNOSTIC 2244 `__os_ ( dbv , logc . da ); 2246 i( is_dub || tx = NULL ) 2247 `__os_ ( dbv , logc . da ); 2249 ( t ); 2250 } } 2256 $__ham_cudj_ad ( dbv , cbuf , g ) 2257 DB_ENV * dbv ; 2258 * cbuf ; 2259 __ham_cudj_gs ** g ; 2261 __ham_cudj_gs * gp ; 2262 u_t32_t ump ; 2263 u_t8_t * bp ; 2264 t ; 2266 i(( t = `__os_mloc ( dbv , 2267 ( __ham_cudj_gs + ( DB_TXN ), & gp )) != 0) 2268 ( t ); 2269 bp = cbuf ; 2270 gp -> tx = ( DB_TXN *)&argp[1]; 2271 `memt ( gp -> tx , 0, ( DB_TXN )); 2273 `memy (& gp -> ty , bp , (argp->type)); 2274 bp +( gp -> ty ); 2276 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2277 bp +( gp -> tx -> txnid ); 2279 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2280 bp +( DB_LSN ); 2282 `memy (& ump , bp , (uinttmp)); 2283 gp -> feid = ( t32_t ) ump ; 2284 bp +( ump ); 2286 `memy (& ump , bp , (uinttmp)); 2287 gp -> pgno = ( db_pgno_t ) ump ; 2288 bp +( ump ); 2290 `memy (& ump , bp , (uinttmp)); 2291 gp -> dx = ( u_t32_t ) ump ; 2292 bp +( ump ); 2294 `memy (& ump , bp , (uinttmp)); 2295 gp -> n = ( u_t32_t ) ump ; 2296 bp +( ump ); 2298 `memy (& ump , bp , (uinttmp)); 2299 gp -> dup_off = ( u_t32_t ) ump ; 2300 bp +( ump ); 2302 `memy (& ump , bp , (uinttmp)); 2303 gp -> add = () ump ; 2304 bp +( ump ); 2306 `memy (& ump , bp , (uinttmp)); 2307 gp -> is_dup = () ump ; 2308 bp +( ump ); 2310 `memy (& ump , bp , (uinttmp)); 2311 gp -> d = ( u_t32_t ) ump ; 2312 bp +( ump ); 2314 * g = gp ; 2316 } } 2324 $__ham_chgpg_log ( dbp , tx , t_lp , ags , mode , d_pgno , w_pgno , d_dx , w_dx ) 2325 DB * dbp ; 2326 DB_TXN * tx ; 2327 DB_LSN * t_lp ; 2328 u_t32_t ags ; 2329 db_ham_mode mode ; 2330 db_pgno_t d_pgno ; 2331 db_pgno_t w_pgno ; 2332 u_t32_t d_dx ; 2333 u_t32_t w_dx ; 2335 DBT logc ; 2336 DB_ENV * dbv ; 2337 DB_TXNLOGREC * ; 2338 DB_LSN * lp , nu_l , * p ; 2339 u_t32_t ump , y , txn_num ; 2340 u_t ad ; 2341 u_t8_t * bp ; 2342 is_dub , t ; 2344 dbv = dbp ->dbenv; 2345 `COMPQUIET ( , NULL ); 2347 y = DB___ham_chgpg ; 2348 ad = 0; 2349 p = t_lp ; 2351 t = 0; 2353 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2354 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2355 i( tx = NULL ) 2357 is_dub = 0; 2359 is_dub = 1; 2361 i( tx = NULL ) { 2362 txn_num = 0; 2363 lp = & nu_l ; 2364 nu_l . fe =u_l. offt = 0; 2366 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2367 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 2368 ( t ); 2375 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2376 txn_num = tx -> txnid ; 2379 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 2380 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2381 ( t = `__dbg_zy_id ( dbp )) != 0) 2382 ( t ); 2384 logc . size = ( y + ( txn_num + ( DB_LSN ) 2385 + ( u_t32_t ) 2386 + ( u_t32_t ) 2387 + ( u_t32_t ) 2388 + ( u_t32_t ) 2389 + ( u_t32_t ) 2390 + ( u_t32_t ); 2391 i( `CRYPTO_ON ( dbv )) { 2392 ad = 2393 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 2394 logc . size + ad ; 2397 i( is_dub || tx = NULL ) { 2398 i(( t = 2399 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 2400 ( t ); 2402 i(( t = `__os_mloc ( dbv , 2403 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2404 ( t ); 2405 #ifde DIAGNOSTIC 2406 i(( t = 2407 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 2408 `__os_ ( dbv , ); 2409 ( t ); 2412 logc . da = ->data; 2415 i( ad > 0) 2416 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2418 bp = logc . da ; 2420 `memy ( bp , & y , (rectype)); 2421 bp +( y ); 2423 `memy ( bp , & txn_num , (txn_num)); 2424 bp +( txn_num ); 2426 `memy ( bp , lp , ( DB_LSN )); 2427 bp +( DB_LSN ); 2429 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2430 `memy ( bp , & ump , (uinttmp)); 2431 bp +( ump ); 2433 ump = ( u_t32_t ) mode ; 2434 `memy ( bp , & ump , (uinttmp)); 2435 bp +( ump ); 2437 ump = ( u_t32_t ) d_pgno ; 2438 `memy ( bp , & ump , (uinttmp)); 2439 bp +( ump ); 2441 ump = ( u_t32_t ) w_pgno ; 2442 `memy ( bp , & ump , (uinttmp)); 2443 bp +( ump ); 2445 ump = ( u_t32_t ) d_dx ; 2446 `memy ( bp , & ump , (uinttmp)); 2447 bp +( ump ); 2449 ump = ( u_t32_t ) w_dx ; 2450 `memy ( bp , & ump , (uinttmp)); 2451 bp +( ump ); 2453 `DB_ASSERT ( dbv , 2454 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2456 i( is_dub || tx = NULL ) { 2457 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 2458 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2459 * lp = * p ; 2460 i( p ! t_lp ) 2461 * t_lp = * p ; 2464 t = 0; 2465 #ifde DIAGNOSTIC 2470 `memy ( -> da , logc .da,ogc. size ); 2471 y | DB_debug_FLAG ; 2472 `memy ( logc . da , & y , (rectype)); 2474 i(! `IS_REP_CLIENT ( dbv )) 2475 t = `__log_put ( dbv , 2476 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2478 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2479 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2480 `LSN_NOT_LOGGED (* t_lp ); 2483 #ifde LOG_DIAGNOSTIC 2484 i( t != 0) 2485 () `__ham_chgpg_t ( dbv , 2486 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2489 #ifde DIAGNOSTIC 2490 `__os_ ( dbv , logc . da ); 2492 i( is_dub || tx = NULL ) 2493 `__os_ ( dbv , logc . da ); 2495 ( t ); 2496 } } 2502 $__ham_chgpg_ad ( dbv , cbuf , g ) 2503 DB_ENV * dbv ; 2504 * cbuf ; 2505 __ham_chgpg_gs ** g ; 2507 __ham_chgpg_gs * gp ; 2508 u_t32_t ump ; 2509 u_t8_t * bp ; 2510 t ; 2512 i(( t = `__os_mloc ( dbv , 2513 ( __ham_chgpg_gs + ( DB_TXN ), & gp )) != 0) 2514 ( t ); 2515 bp = cbuf ; 2516 gp -> tx = ( DB_TXN *)&argp[1]; 2517 `memt ( gp -> tx , 0, ( DB_TXN )); 2519 `memy (& gp -> ty , bp , (argp->type)); 2520 bp +( gp -> ty ); 2522 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 2523 bp +( gp -> tx -> txnid ); 2525 `memy (& gp -> ev_l , bp , ( DB_LSN )); 2526 bp +( DB_LSN ); 2528 `memy (& ump , bp , (uinttmp)); 2529 gp -> feid = ( t32_t ) ump ; 2530 bp +( ump ); 2532 `memy (& ump , bp , (uinttmp)); 2533 gp -> mode = ( db_ham_mode ) ump ; 2534 bp +( ump ); 2536 `memy (& ump , bp , (uinttmp)); 2537 gp -> d_pgno = ( db_pgno_t ) ump ; 2538 bp +( ump ); 2540 `memy (& ump , bp , (uinttmp)); 2541 gp -> w_pgno = ( db_pgno_t ) ump ; 2542 bp +( ump ); 2544 `memy (& ump , bp , (uinttmp)); 2545 gp -> d_dx = ( u_t32_t ) ump ; 2546 bp +( ump ); 2548 `memy (& ump , bp , (uinttmp)); 2549 gp -> w_dx = ( u_t32_t ) ump ; 2550 bp +( ump ); 2552 * g = gp ; 2554 } } 2561 $__ham__cov ( dbv , dbp , dbsiz ) 2562 DB_ENV * dbv ; 2563 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 2564 size_t * dbsiz ; 2566 t ; 2568 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2569 __ham_sd_cov , DB___ham_sd )) != 0) 2570 ( t ); 2571 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2572 __ham_wge_cov , DB___ham_wge )) != 0) 2573 ( t ); 2574 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2575 __ham_lda_cov , DB___ham_lda )) != 0) 2576 ( t ); 2577 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2578 __ham_a_cov , DB___ham_a )) != 0) 2579 ( t ); 2580 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2581 __ham_cyge_cov , DB___ham_cyge )) != 0) 2582 ( t ); 2583 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2584 __ham_magroup_cov , DB___ham_magroup )) != 0) 2585 ( t ); 2586 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2587 __ham_grouoc_cov , DB___ham_grouoc )) != 0) 2588 ( t ); 2589 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2590 __ham_cudj_cov , DB___ham_cudj )) != 0) 2591 ( t ); 2592 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 2593 __ham_chgpg_cov , DB___ham_chgpg )) != 0) 2594 ( t ); 2596 } } @../hash/hash_autop.c 3 ~"db_cfig.h " 5 #ifde HAVE_HASH 6 ~"db_t.h " 7 ~"dbc/yo.h " 8 ~"dbc/db_ge.h " 9 ~"dbc/db_dich.h " 10 ~"dbc/db_am.h " 11 ~"dbc/hash.h " 12 ~"dbc/log.h " 13 ~"dbc/txn.h " 20 $__ham_sd_t ( dbv , db , lp , nud2 , nud3 ) 21 DB_ENV * dbv ; 22 DBT * db ; 23 DB_LSN * lp ; 24 db_cs nud2 ; 25 * nud3 ; 27 __ham_sd_gs * gp ; 28 u_t32_t i ; 29 ch ; 30 t ; 32 nud2 = DB_TXN_PRINT ; 33 nud3 = NULL ; 35 i(( t = `__ham_sd_ad ( dbv , db -> da , & gp )) != 0) 36 ( t ); 37 () `tf ( 39 ( u_lg ) lp -> fe , (u_lgp-> offt , 40 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 41 ( u_lg ) gp -> ty , 42 ( u_lg ) gp -> tx -> txnid , 43 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 44 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 45 () `tf ("\tfeid: %ld\n", () gp -> feid ); 46 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 47 () `tf ("\dx: %lu\n", ( u_lg ) gp -> ndx ); 48 () `tf ("\tpagelsn: [%lu][%lu]\n", 49 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 50 () `tf ("\tkey: "); 51 i = 0; i < gp -> key . size ; i++) { 52 ch = (( u_t8_t *) gp -> key . da )[ i ]; 53 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 55 () `tf ("\n"); 56 () `tf ("\tdata: "); 57 i = 0; i < gp -> da . size ; i++) { 58 ch = (( u_t8_t *) gp -> da .da)[ i ]; 59 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 61 () `tf ("\n"); 62 () `tf ("\n"); 63 `__os_ ( dbv , gp ); 65 } } 72 $__ham_wge_t ( dbv , db , lp , nud2 , nud3 ) 73 DB_ENV * dbv ; 74 DBT * db ; 75 DB_LSN * lp ; 76 db_cs nud2 ; 77 * nud3 ; 79 __ham_wge_gs * gp ; 80 t ; 82 nud2 = DB_TXN_PRINT ; 83 nud3 = NULL ; 85 i(( t = `__ham_wge_ad ( dbv , db -> da , & gp )) != 0) 86 ( t ); 87 () `tf ( 89 ( u_lg ) lp -> fe , (u_lgp-> offt , 90 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 91 ( u_lg ) gp -> ty , 92 ( u_lg ) gp -> tx -> txnid , 93 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 94 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 95 () `tf ("\tfeid: %ld\n", () gp -> feid ); 96 () `tf ("\v_pgno: %lu\n", ( u_lg ) gp -> ev_pgno ); 97 () `tf ("\tprevlsn: [%lu][%lu]\n", 98 ( u_lg ) gp -> evl . fe , (u_lgrgp->evl. offt ); 99 () `tf ("\ew_pgno: %lu\n", ( u_lg ) gp -> w_pgno ); 100 () `tf ("\tpagelsn: [%lu][%lu]\n", 101 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 102 () `tf ("\ext_pgno: %lu\n", ( u_lg ) gp -> xt_pgno ); 103 () `tf ("\tnextlsn: [%lu][%lu]\n", 104 ( u_lg ) gp -> x . fe , (u_lgrgp->x. offt ); 105 () `tf ("\n"); 106 `__os_ ( dbv , gp ); 108 } } 115 $__ham_lda_t ( dbv , db , lp , nud2 , nud3 ) 116 DB_ENV * dbv ; 117 DBT * db ; 118 DB_LSN * lp ; 119 db_cs nud2 ; 120 * nud3 ; 122 __ham_lda_gs * gp ; 123 u_t32_t i ; 124 ch ; 125 t ; 127 nud2 = DB_TXN_PRINT ; 128 nud3 = NULL ; 130 i(( t = `__ham_lda_ad ( dbv , db -> da , & gp )) != 0) 131 ( t ); 132 () `tf ( 134 ( u_lg ) lp -> fe , (u_lgp-> offt , 135 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 136 ( u_lg ) gp -> ty , 137 ( u_lg ) gp -> tx -> txnid , 138 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 139 () `tf ("\tfeid: %ld\n", () gp -> feid ); 140 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 141 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 142 () `tf ("\tpageimage: "); 143 i = 0; i < gp -> geimage . size ; i++) { 144 ch = (( u_t8_t *) gp -> geimage . da )[ i ]; 145 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 147 () `tf ("\n"); 148 () `tf ("\tpagelsn: [%lu][%lu]\n", 149 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 150 () `tf ("\n"); 151 `__os_ ( dbv , gp ); 153 } } 160 $__ham_a_t ( dbv , db , lp , nud2 , nud3 ) 161 DB_ENV * dbv ; 162 DBT * db ; 163 DB_LSN * lp ; 164 db_cs nud2 ; 165 * nud3 ; 167 __ham_a_gs * gp ; 168 u_t32_t i ; 169 ch ; 170 t ; 172 nud2 = DB_TXN_PRINT ; 173 nud3 = NULL ; 175 i(( t = `__ham_a_ad ( dbv , db -> da , & gp )) != 0) 176 ( t ); 177 () `tf ( 179 ( u_lg ) lp -> fe , (u_lgp-> offt , 180 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 181 ( u_lg ) gp -> ty , 182 ( u_lg ) gp -> tx -> txnid , 183 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 184 () `tf ("\tfeid: %ld\n", () gp -> feid ); 185 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 186 () `tf ("\dx: %lu\n", ( u_lg ) gp -> ndx ); 187 () `tf ("\tpagelsn: [%lu][%lu]\n", 188 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 189 () `tf ("\toff: %ld\n", () gp -> off ); 190 () `tf ("\tolditem: "); 191 i = 0; i < gp -> dem . size ; i++) { 192 ch = (( u_t8_t *) gp -> dem . da )[ i ]; 193 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 195 () `tf ("\n"); 196 () `tf ("\tnewitem: "); 197 i = 0; i < gp -> wem . size ; i++) { 198 ch = (( u_t8_t *) gp -> wem . da )[ i ]; 199 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 201 () `tf ("\n"); 202 () `tf ("\tmakedup: %lu\n", ( u_lg ) gp -> makedup ); 203 () `tf ("\n"); 204 `__os_ ( dbv , gp ); 206 } } 213 $__ham_cyge_t ( dbv , db , lp , nud2 , nud3 ) 214 DB_ENV * dbv ; 215 DBT * db ; 216 DB_LSN * lp ; 217 db_cs nud2 ; 218 * nud3 ; 220 __ham_cyge_gs * gp ; 221 u_t32_t i ; 222 ch ; 223 t ; 225 nud2 = DB_TXN_PRINT ; 226 nud3 = NULL ; 228 i(( t = `__ham_cyge_ad ( dbv , db -> da , & gp )) != 0) 229 ( t ); 230 () `tf ( 232 ( u_lg ) lp -> fe , (u_lgp-> offt , 233 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 234 ( u_lg ) gp -> ty , 235 ( u_lg ) gp -> tx -> txnid , 236 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 237 () `tf ("\tfeid: %ld\n", () gp -> feid ); 238 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 239 () `tf ("\tpagelsn: [%lu][%lu]\n", 240 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 241 () `tf ("\ext_pgno: %lu\n", ( u_lg ) gp -> xt_pgno ); 242 () `tf ("\tnextlsn: [%lu][%lu]\n", 243 ( u_lg ) gp -> x . fe , (u_lgrgp->x. offt ); 244 () `tf ("\xt_pgno: %lu\n", ( u_lg ) gp -> ext_pgno ); 245 () `tf ("\tnnextlsn: [%lu][%lu]\n", 246 ( u_lg ) gp -> ex . fe , (u_lgrgp->ex. offt ); 247 () `tf ("\tpage: "); 248 i = 0; i < gp -> ge . size ; i++) { 249 ch = (( u_t8_t *) gp -> ge . da )[ i ]; 250 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 252 () `tf ("\n"); 253 () `tf ("\n"); 254 `__os_ ( dbv , gp ); 256 } } 263 $__ham_magroup_42_t ( dbv , db , lp , nud2 , nud3 ) 264 DB_ENV * dbv ; 265 DBT * db ; 266 DB_LSN * lp ; 267 db_cs nud2 ; 268 * nud3 ; 270 __ham_magroup_42_gs * gp ; 271 t ; 273 nud2 = DB_TXN_PRINT ; 274 nud3 = NULL ; 276 i(( t = `__ham_magroup_42_ad ( dbv , db -> da , & gp )) != 0) 277 ( t ); 278 () `tf ( 280 ( u_lg ) lp -> fe , (u_lgp-> offt , 281 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 282 ( u_lg ) gp -> ty , 283 ( u_lg ) gp -> tx -> txnid , 284 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 285 () `tf ("\tfeid: %ld\n", () gp -> feid ); 286 () `tf ("\tbuck: %lu\n", ( u_lg ) gp -> buck ); 287 () `tf ("\tmmpgno: %lu\n", ( u_lg ) gp -> mmpgno ); 288 () `tf ("\tmmetalsn: [%lu][%lu]\n", 289 ( u_lg ) gp -> mm . fe , (u_lgrgp->mm. offt ); 290 () `tf ("\tmpgno: %lu\n", ( u_lg ) gp -> mpgno ); 291 () `tf ("\tmetalsn: [%lu][%lu]\n", 292 ( u_lg ) gp -> m . fe , (u_lgrgp->m. offt ); 293 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 294 () `tf ("\tpagelsn: [%lu][%lu]\n", 295 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 296 () `tf ("\ewloc: %lu\n", ( u_lg ) gp -> wloc ); 297 () `tf ("\n"); 298 `__os_ ( dbv , gp ); 300 } } 307 $__ham_magroup_t ( dbv , db , lp , nud2 , nud3 ) 308 DB_ENV * dbv ; 309 DBT * db ; 310 DB_LSN * lp ; 311 db_cs nud2 ; 312 * nud3 ; 314 __ham_magroup_gs * gp ; 315 t ; 317 nud2 = DB_TXN_PRINT ; 318 nud3 = NULL ; 320 i(( t = `__ham_magroup_ad ( dbv , db -> da , & gp )) != 0) 321 ( t ); 322 () `tf ( 324 ( u_lg ) lp -> fe , (u_lgp-> offt , 325 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 326 ( u_lg ) gp -> ty , 327 ( u_lg ) gp -> tx -> txnid , 328 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 329 () `tf ("\tfeid: %ld\n", () gp -> feid ); 330 () `tf ("\tbuck: %lu\n", ( u_lg ) gp -> buck ); 331 () `tf ("\tmmpgno: %lu\n", ( u_lg ) gp -> mmpgno ); 332 () `tf ("\tmmetalsn: [%lu][%lu]\n", 333 ( u_lg ) gp -> mm . fe , (u_lgrgp->mm. offt ); 334 () `tf ("\tmpgno: %lu\n", ( u_lg ) gp -> mpgno ); 335 () `tf ("\tmetalsn: [%lu][%lu]\n", 336 ( u_lg ) gp -> m . fe , (u_lgrgp->m. offt ); 337 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 338 () `tf ("\tpagelsn: [%lu][%lu]\n", 339 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 340 () `tf ("\ewloc: %lu\n", ( u_lg ) gp -> wloc ); 341 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 342 () `tf ("\n"); 343 `__os_ ( dbv , gp ); 345 } } 352 $__ham_grouoc_42_t ( dbv , db , lp , nud2 , nud3 ) 353 DB_ENV * dbv ; 354 DBT * db ; 355 DB_LSN * lp ; 356 db_cs nud2 ; 357 * nud3 ; 359 __ham_grouoc_42_gs * gp ; 360 t ; 362 nud2 = DB_TXN_PRINT ; 363 nud3 = NULL ; 365 i(( t = `__ham_grouoc_42_ad ( dbv , db -> da , & gp )) != 0) 366 ( t ); 367 () `tf ( 369 ( u_lg ) lp -> fe , (u_lgp-> offt , 370 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 371 ( u_lg ) gp -> ty , 372 ( u_lg ) gp -> tx -> txnid , 373 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 374 () `tf ("\tfeid: %ld\n", () gp -> feid ); 375 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 376 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 377 () `tf ("\tt_pgno: %lu\n", ( u_lg ) gp -> t_pgno ); 378 () `tf ("\um: %lu\n", ( u_lg ) gp -> num ); 379 () `tf ("\t: %lu\n", ( u_lg ) gp -> ); 380 () `tf ("\n"); 381 `__os_ ( dbv , gp ); 383 } } 390 $__ham_grouoc_t ( dbv , db , lp , nud2 , nud3 ) 391 DB_ENV * dbv ; 392 DBT * db ; 393 DB_LSN * lp ; 394 db_cs nud2 ; 395 * nud3 ; 397 __ham_grouoc_gs * gp ; 398 t ; 400 nud2 = DB_TXN_PRINT ; 401 nud3 = NULL ; 403 i(( t = `__ham_grouoc_ad ( dbv , db -> da , & gp )) != 0) 404 ( t ); 405 () `tf ( 407 ( u_lg ) lp -> fe , (u_lgp-> offt , 408 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 409 ( u_lg ) gp -> ty , 410 ( u_lg ) gp -> tx -> txnid , 411 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 412 () `tf ("\tfeid: %ld\n", () gp -> feid ); 413 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 414 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 415 () `tf ("\tt_pgno: %lu\n", ( u_lg ) gp -> t_pgno ); 416 () `tf ("\um: %lu\n", ( u_lg ) gp -> num ); 417 () `tf ("\tunud: %lu\n", ( u_lg ) gp -> unud ); 418 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 419 () `tf ("\n"); 420 `__os_ ( dbv , gp ); 422 } } 429 $__ham_cudj_t ( dbv , db , lp , nud2 , nud3 ) 430 DB_ENV * dbv ; 431 DBT * db ; 432 DB_LSN * lp ; 433 db_cs nud2 ; 434 * nud3 ; 436 __ham_cudj_gs * gp ; 437 t ; 439 nud2 = DB_TXN_PRINT ; 440 nud3 = NULL ; 442 i(( t = `__ham_cudj_ad ( dbv , db -> da , & gp )) != 0) 443 ( t ); 444 () `tf ( 446 ( u_lg ) lp -> fe , (u_lgp-> offt , 447 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 448 ( u_lg ) gp -> ty , 449 ( u_lg ) gp -> tx -> txnid , 450 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 451 () `tf ("\tfeid: %ld\n", () gp -> feid ); 452 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 453 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 454 () `tf ("\: %lu\n", ( u_lg ) gp -> n ); 455 () `tf ("\tdup_off: %lu\n", ( u_lg ) gp -> dup_off ); 456 () `tf ("\dd: %ld\n", () gp -> add ); 457 () `tf ("\tis_dup: %ld\n", () gp -> is_dup ); 458 () `tf ("\td: %lu\n", ( u_lg ) gp -> d ); 459 () `tf ("\n"); 460 `__os_ ( dbv , gp ); 462 } } 469 $__ham_chgpg_t ( dbv , db , lp , nud2 , nud3 ) 470 DB_ENV * dbv ; 471 DBT * db ; 472 DB_LSN * lp ; 473 db_cs nud2 ; 474 * nud3 ; 476 __ham_chgpg_gs * gp ; 477 t ; 479 nud2 = DB_TXN_PRINT ; 480 nud3 = NULL ; 482 i(( t = `__ham_chgpg_ad ( dbv , db -> da , & gp )) != 0) 483 ( t ); 484 () `tf ( 486 ( u_lg ) lp -> fe , (u_lgp-> offt , 487 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 488 ( u_lg ) gp -> ty , 489 ( u_lg ) gp -> tx -> txnid , 490 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 491 () `tf ("\tfeid: %ld\n", () gp -> feid ); 492 () `tf ("\tmode: %ld\n", () gp -> mode ); 493 () `tf ("\td_pgno: %lu\n", ( u_lg ) gp -> d_pgno ); 494 () `tf ("\ew_pgno: %lu\n", ( u_lg ) gp -> w_pgno ); 495 () `tf ("\td_dx: %lu\n", ( u_lg ) gp -> d_dx ); 496 () `tf ("\ew_dx: %lu\n", ( u_lg ) gp -> w_dx ); 497 () `tf ("\n"); 498 `__os_ ( dbv , gp ); 500 } } 507 $__ham__t ( dbv , dbp , dbsiz ) 508 DB_ENV * dbv ; 509 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 510 size_t * dbsiz ; 512 t ; 514 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 515 __ham_sd_t , DB___ham_sd )) != 0) 516 ( t ); 517 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 518 __ham_wge_t , DB___ham_wge )) != 0) 519 ( t ); 520 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 521 __ham_lda_t , DB___ham_lda )) != 0) 522 ( t ); 523 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 524 __ham_a_t , DB___ham_a )) != 0) 525 ( t ); 526 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 527 __ham_cyge_t , DB___ham_cyge )) != 0) 528 ( t ); 529 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 530 __ham_magroup_t , DB___ham_magroup )) != 0) 531 ( t ); 532 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 533 __ham_grouoc_t , DB___ham_grouoc )) != 0) 534 ( t ); 535 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 536 __ham_cudj_t , DB___ham_cudj )) != 0) 537 ( t ); 538 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 539 __ham_chgpg_t , DB___ham_chgpg )) != 0) 540 ( t ); 542 } } @../hash/hash_conv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/hash.h " 24 $__ham_pg ( dbv , dummydbp , pg , , cook ) 25 DB_ENV * dbv ; 26 DB * dummydbp ; 27 db_pgno_t pg ; 28 * ; 29 DBT * cook ; 31 DB_PGINFO * pgfo ; 32 PAGE * h ; 34 h = ; 35 pgfo = ( DB_PGINFO *) cook -> da ; 42 i( h -> ty ! P_HASHMETA && h-> pgno = PGNO_INVALID ) { 43 `P_INIT ( , ( db_dx_t ) pgfo -> db_gesize , 44 pg , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 48 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 51 ( h -> ty = P_HASHMETA ? `__ham_msw ( ) : 52 `__db_bysw ( dbv , dummydbp , pg , , pgfo -> db_gesize , 1)); 53 } } 63 $__ham_pgout ( dbv , dummydbp , pg , , cook ) 64 DB_ENV * dbv ; 65 DB * dummydbp ; 66 db_pgno_t pg ; 67 * ; 68 DBT * cook ; 70 DB_PGINFO * pgfo ; 71 PAGE * h ; 73 pgfo = ( DB_PGINFO *) cook -> da ; 74 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 77 h = ; 78 ( h -> ty = P_HASHMETA ? `__ham_msw ( ) : 79 `__db_bysw ( dbv , dummydbp , pg , , pgfo -> db_gesize , 0)); 80 } } 89 $__ham_msw ( pg ) 90 * pg ; 92 u_t8_t * p ; 93 i ; 95 `__db_masw ( pg ); 97 p = ( u_t8_t *) pg + ( DBMETA ); 99 `SWAP32 ( p ); 100 `SWAP32 ( p ); 101 `SWAP32 ( p ); 102 `SWAP32 ( p ); 103 `SWAP32 ( p ); 104 `SWAP32 ( p ); 105 i = 0; i < NCACHED ; ++i) 106 `SWAP32 ( p ); 107 p +59 * ( u_t32_t ); 108 `SWAP32 ( p ); 110 } } @../hash/hash_dup.c 47 ~"db_cfig.h " 49 ~"db_t.h " 50 ~"dbc/db_ge.h " 51 ~"dbc/hash.h " 52 ~"dbc/b.h " 53 ~"dbc/mp.h " 55 __hamc_chgpg __P (( DBC *, 56 db_pgno_t , u_t32_t , db_pgno_t, u_int32_t)); 57 __ham_check_move __P (( DBC *, u_t32_t )); 58 __ham_dcurs __P (( DBC *, db_pgno_t , u_t32_t )); 59 __ham_move_ofage __P (( DBC *, PAGE *, u_t32_t , db_pgno_t )); 77 $__ham_add_dup ( dbc , nv , ags , pgn ) 78 DBC * dbc ; 79 DBT * nv ; 80 u_t32_t ags ; 81 db_pgno_t * pgn ; 83 DB * dbp ; 84 DBT pv , tmp_v ; 85 DB_ENV * dbv ; 86 DB_MPOOLFILE * mpf ; 87 HASH_CURSOR * h ; 88 u_t32_t add_bys , w_size ; 89 cmp , t ; 90 u_t8_t * hk ; 92 dbp = dbc ->dbp; 93 dbv = dbp ->dbenv; 94 mpf = dbp ->mpf; 95 h = ( HASH_CURSOR *) dbc -> ; 97 `DB_ASSERT ( dbv , ags ! DB_CURRENT ); 99 add_bys = nv -> size + 100 ( `F_ISSET ( nv , DB_DBT_PARTIAL ?v-> doff : 0); 101 add_bys = `DUP_SIZE (add_bytes); 103 i(( t = `__ham_check_move ( dbc , add_bys )) != 0) 104 ( t ); 113 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 115 i( `HPAGE_PTYPE ( hk ! H_DUPLICATE ) 116 add_bys + `DUP_SIZE (0); 117 w_size = 118 `LEN_HKEYDATA ( dbp , h -> ge , dbp-> pgsize , `H_DATAINDEX (h-> dx )) + 119 add_bys ; 126 i( `HPAGE_PTYPE ( hk ! H_OFFDUP && 127 ( `HPAGE_PTYPE ( hk = H_OFFPAGE || `ISBIG ( h , w_size ) || 128 add_bys > `P_FREESPACE ( dbp , h -> ge ))) { 130 i(( t = `__ham_dup_cvt ( dbc )) != 0) 131 ( t ); 132 ( h -> d -> `am_put (hcp->opd, 133 NULL , nv , ags , NULL)); 137 i( `HPAGE_PTYPE ( hk ! H_OFFDUP ) { 138 i( `HPAGE_PTYPE ( hk ! H_DUPLICATE ) { 139 pv . ags = 0; 140 pv . da = `HKEYDATA_DATA ( hk ); 141 pv . size = `LEN_HDATA ( dbp , h -> ge , dbp-> pgsize , 142 h -> dx ); 143 i(( t = `__ham_make_dup ( dbv , 144 & pv , & tmp_v , & dbc -> my_rda . da , 145 & dbc -> my_rda . un )!0 || ( t = 146 `__ham_ ( dbc , & tmp_v , 1)) != 0) 147 ( t ); 148 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 149 `HPAGE_PTYPE ( hk H_DUPLICATE ; 155 `F_SET ( h , H_ISDUP ); 156 h -> dup_off = 0; 157 h -> dup_n = pv . size ; 158 h -> dup_ = `DUP_SIZE (h-> dup_n ); 162 i(( t = `__ham_make_dup ( dbv , nv , 163 & tmp_v , & dbc -> my_rda . da , &dbc->my_rda. un )) != 0) 164 ( t ); 166 tmp_v . dn = 0; 167 ags ) { 168 DB_KEYFIRST : 169 DB_KEYLAST : 170 DB_NODUPDATA : 171 i( dbp -> dup_com ! NULL ) { 172 `__ham_dch ( dbc , 173 nv , & tmp_v . doff , & cmp , ags ); 176 i( cmp == 0) 177 ( `__db_du ( dbp , ags )); 179 h -> dup_ = `LEN_HDATA ( dbp , h-> ge , 180 dbp -> pgsize , h -> dx ); 181 h -> dup_n = nv -> size ; 182 `F_SET ( h , H_ISDUP ); 183 i( ags = DB_KEYFIRST ) 184 h -> dup_off = tmp_v . doff = 0; 186 h -> dup_off = 187 tmp_v . doff = h -> dup_ ; 190 DB_BEFORE : 191 tmp_v . doff = h -> dup_off ; 193 DB_AFTER : 194 tmp_v . doff = h -> dup_off + `DUP_SIZE (h-> dup_n ); 197 ( `__db_unknown_th ( dbv , "__ham_add_dup")); 201 i(( t = `__memp_dty ( mpf , 202 & h -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0 || 203 ( t = `__ham_ ( dbc , & tmp_v , 0)) != 0) 204 ( t ); 207 ags ) { 208 DB_AFTER : 209 h -> dup_off + `DUP_SIZE (h-> dup_n ); 210 h -> dup_n = nv -> size ; 211 h -> dup_ +( db_dx_t ) `DUP_SIZE ( nv -> size ); 213 DB_BEFORE : 214 DB_KEYFIRST : 215 DB_KEYLAST : 216 DB_NODUPDATA : 217 h -> dup_ +( db_dx_t ) `DUP_SIZE ( nv -> size ); 218 h -> dup_n = nv -> size ; 221 ( `__db_unknown_th ( dbv , "__ham_add_dup")); 223 t = `__hamc_upde ( dbc , tmp_v . size , DB_HAM_CURADJ_ADD , 1); 224 ( t ); 231 `memy ( pgn , `HOFFDUP_PGNO ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )), 232 ( db_pgno_t )); 234 ( t ); 235 } } 243 $__ham_dup_cvt ( dbc ) 244 DBC * dbc ; 246 BOVERFLOW bo ; 247 DB * dbp ; 248 DBC ** hcs ; 249 DBT dbt ; 250 DB_ENV * dbv ; 251 DB_LSN l ; 252 DB_MPOOLFILE * mpf ; 253 HASH_CURSOR * h ; 254 HOFFPAGE ho ; 255 PAGE * dp ; 256 db_dx_t i , n , off ; 257 c , t , t_t ; 258 u_t8_t * p , * nd ; 260 dbp = dbc ->dbp; 261 dbv = dbp ->dbenv; 262 mpf = dbp ->mpf; 263 h = ( HASH_CURSOR *) dbc -> ; 268 i(( t = `__db_w ( dbc , 269 dbp -> dup_com = NULL ? P_LRECNO : P_LDUP , & dp )) != 0) 270 ( t ); 271 `P_INIT ( dp , dbp -> pgsize , 272 dp -> pgno , PGNO_INVALID , PGNO_INVALID, LEAFLEVEL , `TYPE (dp)); 277 i(( t = `__ham_g_i ( dbp , 278 `PGNO ( h -> ge ), ( u_t32_t )h-> dx , & hcs )) != 0) 279 r ; 284 dbt . ags = 0; 285 `HPAGE_PTYPE ( `H_PAIRDATA ( dbp , h -> ge , h-> dx ))) { 286 H_KEYDATA : 288 dbt . size = `LEN_HDATA ( dbp , h -> ge , dbp-> pgsize , h-> dx ); 289 dbt . da = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 290 t = `__db_pem ( dbc , 291 dp , 0, `BKEYDATA_SIZE ( dbt . size ), NULL , &dbt); 292 fish ; 293 H_OFFPAGE : 295 `memy (& ho , `P_ENTRY ( dbp , h -> ge , `H_DATAINDEX (h-> dx )), 296 HOFFPAGE_SIZE ); 297 `UMRW_SET ( bo . unud1 ); 298 `B_TSET ( bo . ty , ho .type); 299 `UMRW_SET ( bo . unud2 ); 300 bo . pgno = ho .pgno; 301 bo . = ho .tlen; 302 dbt . size = BOVERFLOW_SIZE ; 303 dbt . da = & bo ; 305 t = `__db_pem ( dbc , dp , 0, dbt . size , &dbt, NULL ); 306 fish : i( t == 0) { 308 i( hcs ! NULL && `DBC_LOGGING ( dbc ) && 309 `IS_SUBTRANSACTION ( dbc -> txn )) { 310 i(( t = `__ham_chgpg_log ( dbp , dbc -> txn , 311 & l , 0, DB_HAM_DUP , `PGNO ( h -> ge ), 312 `PGNO ( dp ), h -> dx , 0)) != 0) 315 c = 0; hcs ! NULL && hcs[c] != NULL; c++) 316 i(( t = `__ham_dcurs ( hcs [ c ], 317 `PGNO ( dp ), 0)) != 0) 321 H_DUPLICATE : 322 p = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 323 nd = p + 324 `LEN_HDATA ( dbp , h -> ge , dbp-> pgsize , h-> dx ); 333 off = 0, i = 0; p < nd ; i++) { 334 `memy (& n , p , ( db_dx_t )); 335 dbt . size = n ; 336 p +( db_dx_t ); 337 dbt . da = p ; 338 p + n + ( db_dx_t ); 339 i(( t = `__db_pem ( dbc , dp , 340 i , `BKEYDATA_SIZE ( dbt . size ), NULL , &dbt)) != 0) 344 i( hcs ! NULL && `DBC_LOGGING ( dbc ) && 345 `IS_SUBTRANSACTION ( dbc -> txn )) { 346 i(( t = `__ham_chgpg_log ( dbp , dbc -> txn , 347 & l , 0, DB_HAM_DUP , `PGNO ( h -> ge ), 348 `PGNO ( dp ), h -> dx , i )) != 0) 351 c = 0; hcs ! NULL && hcs[c] != NULL; c++) 352 i((( HASH_CURSOR *)( hcs [ c ]-> ))-> dup_off 353 = off && ( t = `__ham_dcurs ( hcs [ c ], 354 `PGNO ( dp ), i )) != 0) 355 r ; 356 off + n + 2 * ( db_dx_t ); 360 t = `__db_pgfmt ( dbv , h -> pgno ); 368 i( t == 0) 369 t = `__memp_dty ( mpf , 370 & h -> ge , dbc -> txn , dbc-> iܙy , 0); 372 i( t == 0) 373 t = `__ham_move_ofage ( dbc , h -> ge , 374 ( u_t32_t ) `H_DATAINDEX ( h -> dx ), `PGNO ( dp )); 376 r : i(( t_t = `__memp_ut ( mpf , dp , dbc -> iܙy )!0 && t == 0) 377 t = t_t ; 379 i( t == 0) 380 h -> dup_ = h-> dup_off = h-> dup_n = 0; 382 i( hcs ! NULL ) 383 `__os_ ( dbv , hcs ); 385 ( t ); 386 } } 399 $__ham_make_dup ( dbv , ndup , dui , bu , siz ) 400 DB_ENV * dbv ; 401 cڡ DBT * ndup ; 402 DBT * dui ; 403 ** bu ; 404 u_t32_t * siz ; 406 db_dx_t tsize , em_size ; 407 t ; 408 u_t8_t * p ; 410 em_size = ( db_dx_t ) ndup -> size ; 411 i( `F_ISSET ( ndup , DB_DBT_PARTIAL )) 412 em_size + ndup -> doff ; 414 tsize = `DUP_SIZE ( em_size ); 415 i(( t = `__ham__dbt ( dbv , dui , tsize , bu , siz )) != 0) 416 ( t ); 418 dui -> dn = 0; 419 dui -> ags = ndup ->flags; 420 `F_SET ( dui , DB_DBT_PARTIAL ); 422 p = dui -> da ; 423 `memy ( p , & em_size , ( db_dx_t )); 424 p +( db_dx_t ); 425 i( `F_ISSET ( ndup , DB_DBT_PARTIAL )) { 426 `memt ( p , 0, ndup -> doff ); 427 p + ndup -> doff ; 429 `memy ( p , ndup -> da ,dup-> size ); 430 p + ndup -> size ; 431 `memy ( p , & em_size , ( db_dx_t )); 433 dui -> doff = 0; 434 dui -> dn = ndup -> size ; 437 } } 446 $__ham_check_move ( dbc , add_n ) 447 DBC * dbc ; 448 u_t32_t add_n ; 450 DB * dbp ; 451 DBT k , d ; 452 DB_LSN w_l ; 453 DB_MPOOLFILE * mpf ; 454 HASH_CURSOR * h ; 455 PAGE * xt_g ; 456 db_pgno_t xt_pgno ; 457 u_t32_t w_d , d_n , y ; 458 db_dx_t w_dx ; 459 u_t8_t * hk ; 460 key_ty , mch , t , t_t ; 462 dbp = dbc ->dbp; 463 mpf = dbp ->mpf; 464 h = ( HASH_CURSOR *) dbc -> ; 466 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 472 i( `HPAGE_PTYPE ( hk = H_OFFDUP || HPAGE_PTYPE(hk= H_OFFPAGE ) 475 d_n = 476 `LEN_HITEM ( dbp , h -> ge , dbp-> pgsize , `H_DATAINDEX (h-> dx )); 477 w_d = ( d_n - `HKEYDATA_SIZE (0)+ add_n ; 478 i( `HPAGE_PTYPE ( hk ! H_DUPLICATE ) 479 w_d + `DUP_SIZE (0); 489 i( `ISBIG ( h , w_d && ( d_n > HOFFDUP_SIZE || 490 HOFFDUP_SIZE - d_n < `P_FREESPACE ( dbp , h -> ge ))) 493 i(! `ISBIG ( h , w_d ) && 494 ( w_d - d_n < `P_FREESPACE ( dbp , h -> ge )) 504 w_d = `ISBIG ( h ,ew_datalen) ? 505 HOFFDUP_SIZE : `HKEYDATA_SIZE ( w_d ); 506 w_d += 507 `LEN_HITEM ( dbp , h -> ge , dbp-> pgsize , `H_KEYINDEX (h-> dx )); 509 xt_g = NULL ; 510 xt_pgno = `NEXT_PGNO ( h -> ge );ext_pgn! PGNO_INVALID ; 511 xt_pgno = `NEXT_PGNO ( xt_g )) { 512 i( xt_g ! NULL && 513 ( t = `__memp_ut ( mpf , xt_g , dbc -> iܙy )) != 0) 514 ( t ); 516 i(( t = `__memp_fg ( mpf , & xt_pgno , dbc -> txn , 517 DB_MPOOL_CREATE , & xt_g )) != 0) 518 ( t ); 520 i( `P_FREESPACE ( dbp , xt_g > w_d ) 525 i(( t = `__memp_dty ( mpf , 526 & h -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 527 ( t ); 529 i( xt_g = NULL && ( t = `__ham_add_ovge ( dbc , 530 h -> ge , 0, & xt_g )) != 0) 531 ( t ); 534 i(( t = `__memp_dty ( mpf , 535 & xt_g , dbc -> txn , dbc-> iܙy , 0)) != 0) { 536 () `__memp_ut ( mpf , xt_g , dbc -> iܙy ); 537 ( t ); 540 i( `P_FREESPACE ( dbp , xt_g < w_d && ( t = 541 `__ham_add_ovge ( dbc , xt_g , 1, &next_pagep)) != 0) { 542 () `__memp_ut ( mpf , xt_g , dbc -> iܙy ); 543 ( t ); 547 i( `DBC_LOGGING ( dbc )) { 548 y = PUTPAIR ; 549 k . ags = 0; 550 d . ags = 0; 551 i( `HPAGE_PTYPE ( 552 `H_PAIRKEY ( dbp , h -> ge , h-> dx )= H_OFFPAGE ) { 553 y | PAIR_KEYMASK ; 554 k . da = `H_PAIRKEY ( dbp , h -> ge , h-> dx ); 555 k . size = HOFFPAGE_SIZE ; 556 key_ty = H_OFFPAGE ; 558 k . da = 559 `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , h -> ge , h-> dx )); 560 k . size = 561 `LEN_HKEY ( dbp , h -> ge , dbp-> pgsize , h-> dx ); 562 key_ty = H_KEYDATA ; 566 i(( t = `__ham_gdex ( dbp , dbc -> txn , xt_g , & k , 567 key_ty , & mch , & w_dx )) != 0) 568 ( t ); 570 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) { 571 y | PAIR_DATAMASK ; 572 d . da = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 573 d . size = HOFFPAGE_SIZE ; 575 i( `HPAGE_PTYPE ( `H_PAIRDATA ( dbp , 576 h -> ge , h-> dx )= H_DUPLICATE ) 577 y | PAIR_DUPMASK ; 578 d . da = `HKEYDATA_DATA ( 579 `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 580 d . size = `LEN_HDATA ( dbp , h -> ge , 581 dbp -> pgsize , h -> dx ); 584 i(( t = `__ham_sd_log ( dbp , 585 dbc -> txn , & w_l , 0, y , `PGNO ( xt_g ), 586 ( u_t32_t ) w_dx , & `LSN ( xt_g ), 587 & k , & d )) != 0) { 588 () `__memp_ut ( mpf , xt_g , dbc -> iܙy ); 589 ( t ); 592 `LSN_NOT_LOGGED ( w_l ); 600 w_dx = NDX_INVALID ; 604 i(( t = `__memp_dty ( mpf , 605 & xt_g , dbc -> txn , dbc-> iܙy , 0)) != 0) { 606 () `__memp_ut ( mpf , xt_g , dbc -> iܙy ); 607 ( t ); 609 `LSN ( xt_g w_l ; 611 i(( t = `__ham_cy ( dbp , dbc -> txn , h -> ge , 612 `H_KEYINDEX ( h -> dx ), xt_g , & w_dx )) != 0) 613 out ; 616 i(( t = `__hamc_chgpg ( dbc , `PGNO ( h -> ge ), `H_KEYINDEX (h-> dx ), 617 `PGNO ( xt_g ), w_dx )) != 0) 618 out ; 621 t = `__ham_d_ ( dbc , HAM_DEL_NO_RECLAIM ); 633 i(! `STD_LOCKING ( dbc )) 634 h -> hdr -> m ++; 636 out : i(( t_t = 637 `__memp_ut ( mpf , h -> ge , dbc -> iܙy )!0 && t == 0) 638 t = t_t ; 639 h -> ge = xt_g ; 640 h -> pgno = `PGNO (h-> ge ); 641 h -> dx = w_dx ; 642 `F_SET ( h , H_EXPAND ); 643 `F_CLR ( h , H_DELETED ); 645 ( t ); 646 } } 659 $__ham_move_ofage ( dbc , g , ndx , pgno ) 660 DBC * dbc ; 661 PAGE * g ; 662 u_t32_t ndx ; 663 db_pgno_t pgno ; 665 DB * dbp ; 666 DBT w_dbt ; 667 DBT d_dbt ; 668 HOFFDUP od ; 669 db_dx_t i , * p ; 670 t32_t dif ; 671 u_t8_t * c ; 672 t ; 674 dbp = dbc ->dbp; 675 od . ty = H_OFFDUP ; 676 `UMRW_SET ( od . unud [0]); 677 `UMRW_SET ( od . unud [1]); 678 `UMRW_SET ( od . unud [2]); 679 od . pgno =gno; 680 t = 0; 682 i( `DBC_LOGGING ( dbc )) { 683 w_dbt . da = & od ; 684 w_dbt . size = HOFFDUP_SIZE ; 685 d_dbt . da = `P_ENTRY ( dbp , g , ndx ); 686 d_dbt . size = `LEN_HITEM ( dbp , g , dbp-> pgsize , ndx ); 687 i(( t = `__ham_a_log ( dbp , dbc -> txn , & `LSN ( g ), 0, 688 `PGNO ( g ), ( u_t32_t ) ndx , & `LSN (pagep), -1, 689 & d_dbt , & w_dbt , 0)) != 0) 690 ( t ); 692 `LSN_NOT_LOGGED ( `LSN ( g )); 699 dif = 700 ( t32_t ) `LEN_HITEM ( dbp , g , dbp-> pgsize , ndx ) - 701 ( t32_t ) HOFFDUP_SIZE ; 702 i( dif != 0) { 704 p = `P_INP ( dbp , g ); 705 c = ( u_t8_t *)( g + `HOFFSET (pagep); 706 `memmove ( c + dif , src, p [ ndx ] - `HOFFSET ( g )); 707 `HOFFSET ( g + dif ; 710 i = ndx ; i < `NUM_ENT ( g ); i++) 711 p [ i ] + dif ; 715 `memy ( `P_ENTRY ( dbp , g , ndx ), & od , HOFFDUP_SIZE ); 716 ( t ); 717 } } 728 $__ham_dch ( dbc , dbt , of , cm , ags ) 729 DBC * dbc ; 730 DBT * dbt ; 731 u_t32_t * of , ags ; 732 * cm ; 734 DB * dbp ; 735 HASH_CURSOR * h ; 736 DBT cur ; 737 db_dx_t i , n ; 738 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 739 u_t8_t * da ; 741 dbp = dbc ->dbp; 742 h = ( HASH_CURSOR *) dbc -> ; 743 func = dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 745 i = `F_ISSET ( h , H_CONTINUE ? h-> dup_off : 0; 746 da = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )+ i ; 747 h -> dup_ = `LEN_HDATA ( dbp , h-> ge , dbp-> pgsize , h-> dx ); 748 n = h -> dup_n ; 749 i < h -> dup_ ) { 750 `memy (& n , da , ( db_dx_t )); 751 da +( db_dx_t ); 752 `DB_SET_DBT ( cur , da , n ); 760 * cm = `func ( dbp , dbt , & cur ); 761 i(* cm == 0) 763 i(* cm < 0 && dbp -> dup_com ! NULL ) { 764 i( ags = DB_GET_BOTH_RANGE ) 765 * cm = 0; 769 i + n + 2 * ( db_dx_t ); 770 da + n + ( db_dx_t ); 773 * of = i ; 774 h -> dup_off = i ; 775 h -> dup_n = n ; 776 `F_SET ( h , H_ISDUP ); 777 } } 785 $__ham_dcurs ( dbc , pgno , dx ) 786 DBC * dbc ; 787 db_pgno_t pgno ; 788 u_t32_t dx ; 790 DB * dbp ; 791 HASH_CURSOR * h ; 792 BTREE_CURSOR * d ; 793 t ; 795 dbp = dbc ->dbp; 796 h = ( HASH_CURSOR *) dbc -> ; 798 i(( t = `__dbc_wd ( dbc , pgno , h -> d , &hcp->opd)) != 0) 799 ( t ); 801 d = ( BTREE_CURSOR *) h -> d -> ; 802 d -> pgno =gno; 803 d -> dx = indx; 805 i( dbp -> dup_com = NULL ) { 811 d -> o = dx + 1; 818 i( `F_ISSET ( h , H_DELETED )) { 819 `F_SET ( d , C_DELETED ); 820 `F_CLR ( h , H_DELETED ); 824 } } 836 $__hamc_chgpg ( dbc , d_pgno , d_dex , w_pgno , w_dex ) 837 DBC * dbc ; 838 db_pgno_t d_pgno , w_pgno ; 839 u_t32_t d_dex , w_dex ; 841 DB * dbp , * ldbp ; 842 DB_ENV * dbv ; 843 DB_LSN l ; 844 DB_TXN * my_txn ; 845 DBC * ; 846 HASH_CURSOR * h ; 847 found , t ; 849 dbp = dbc ->dbp; 850 dbv = dbp ->dbenv; 852 my_txn = `IS_SUBTRANSACTION ( dbc -> txn ? dbc->tx: NULL ; 854 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 855 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 856 found = 0; 857 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 858 ldbp = `TAILQ_NEXT dbp, dblilks )) { 859 `MUTEX_LOCK ( dbv , dbp -> mux ); 860 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 861 i( = dbc || cp-> dbty ! DB_HASH ) 864 h = ( HASH_CURSOR *) -> ; 871 i( `F_ISSET ( h , H_DELETED )) 874 i( h -> pgno = d_pgno && 875 ! `MVCC_SKIP_CURADJ ( , d_pgno )) { 876 i( h -> dx = d_dex ) { 877 h -> pgno = w_pgno ; 878 h -> dx = w_dex ; 881 i( my_txn ! NULL && -> txn != my_txn) 882 found = 1; 885 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 887 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 889 i( found !0 && `DBC_LOGGING ( dbc )) { 890 i(( t = `__ham_chgpg_log ( dbp , my_txn , & l , 0, DB_HAM_CHGPG , 891 d_pgno , w_pgno , d_dex , w_dex )) != 0) 892 ( t ); 895 } } @../hash/hash_func.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/hash.h " 56 #DCHARHASH ( h , c ((h0x63c63cd9*(h+ 0x9c39c33d + (c)) ) 58 u_t32_t 59 $__ham_func2 ( dbp , key , n ) 60 DB * dbp ; 61 cڡ * key ; 62 u_t32_t n ; 64 cڡ u_t8_t * e , * k ; 65 u_t32_t h ; 66 u_t8_t c ; 68 i( dbp ! NULL ) 69 `COMPQUIET ( dbp , NULL ); 71 k = key ; 72 e = k + n ; 73 h = 0; k ! e ;) { 74 c = * k ++; 75 i(! c && k > e ) 77 `DCHARHASH ( h , c ); 79 ( h ); 80 } } 93 u_t32_t 94 $__ham_func3 ( dbp , key , n ) 95 DB * dbp ; 96 cڡ * key ; 97 u_t32_t n ; 99 cڡ u_t8_t * k ; 100 u_t32_t n , lo ; 102 i( dbp ! NULL ) 103 `COMPQUIET ( dbp , NULL ); 105 i( n == 0) 108 #HASHC n = * k ++ + 65599 * ) n 109 n = 0; 110 k = key ; 112 lo = ( n + 8 - 1) >> 3; 113 n & (8 - 1)) { 116 HASHC ; 118 HASHC ; 120 HASHC ; 122 HASHC ; 124 HASHC ; 126 HASHC ; 128 HASHC ; 130 HASHC ; 131 } -- lo ); 133 ( n ); 134 } } 144 u_t32_t 145 $__ham_func4 ( dbp , key , n ) 146 DB * dbp ; 147 cڡ * key ; 148 u_t32_t n ; 150 cڡ u_t8_t * k ; 151 u_t32_t h , lo ; 153 i( dbp ! NULL ) 154 `COMPQUIET ( dbp , NULL ); 156 i( n == 0) 159 #HASH4a h = (h << 5- h + * k ++; ) 160 #HASH4b h = (h << 5+ h + * k ++; ) 161 #HASH4 HASH4b ) 162 h = 0; 163 k = key ; 165 lo = ( n + 8 - 1) >> 3; 166 n & (8 - 1)) { 169 HASH4 ; 171 HASH4 ; 173 HASH4 ; 175 HASH4 ; 177 HASH4 ; 179 HASH4 ; 181 HASH4 ; 183 HASH4 ; 184 } -- lo ); 186 ( h ); 187 } } 205 u_t32_t 206 $__ham_func5 ( dbp , key , n ) 207 DB * dbp ; 208 cڡ * key ; 209 u_t32_t n ; 211 cڡ u_t8_t * k , * e ; 212 u_t32_t h ; 214 i( dbp ! NULL ) 215 `COMPQUIET ( dbp , NULL ); 217 k = key ; 218 e = k + n ; 219 h = 0; k < e ; ++k) { 220 h *= 16777619; 221 h ^* k ; 223 ( h ); 224 } } 231 u_t32_t 232 $__ham_ ( dbp , key , n ) 233 DB * dbp ; 234 cڡ * key ; 235 u_t32_t n ; 237 `COMPQUIET ( dbp , NULL ); 238 `COMPQUIET ( n , 0); 239 (( u_t32_t )*(*) key ); 240 } } @../hash/hash_meta.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/hash.h " 14 ~"dbc/lock.h " 15 ~"dbc/mp.h " 23 $__ham_g_ma ( dbc ) 24 DBC * dbc ; 26 DB * dbp ; 27 DB_MPOOLFILE * mpf ; 28 HASH * hashp ; 29 HASH_CURSOR * h ; 30 t ; 32 dbp = dbc ->dbp; 33 mpf = dbp ->mpf; 34 hashp = dbp -> h_ ; 35 h = ( HASH_CURSOR *) dbc -> ; 37 i(( t = `__db_lg ( dbc , 0, 38 hashp -> ma_pgno , DB_LOCK_READ , 0, & h -> hlock )) != 0) 39 ( t ); 41 i(( t = `__memp_fg ( mpf , & hashp -> ma_pgno , dbc -> txn , 42 DB_MPOOL_CREATE , & h -> hdr )) != 0) 43 () `__LPUT ( dbc , h -> hlock ); 45 ( t ); 46 } } 54 $__ham_a_ma ( dbc ) 55 DBC * dbc ; 57 DB_MPOOLFILE * mpf ; 58 HASH_CURSOR * h ; 59 t ; 61 mpf = dbc -> dbp ->mpf; 62 h = ( HASH_CURSOR *) dbc -> ; 64 i( h -> hdr ! NULL ) { 65 i(( t = `__memp_ut ( mpf , h -> hdr , dbc -> iܙy )) != 0) 66 ( t ); 67 h -> hdr = NULL ; 70 ( `__TLPUT ( dbc , h -> hlock )); 71 } } 79 $__ham_dty_ma ( dbc , ags ) 80 DBC * dbc ; 81 u_t32_t ags ; 83 DB * dbp ; 84 HASH * hashp ; 85 HASH_CURSOR * h ; 86 t ; 88 dbp = dbc ->dbp; 89 hashp = dbp -> h_ ; 90 h = ( HASH_CURSOR *) dbc -> ; 92 i(( t = `__db_lg ( dbc , LCK_COUPLE , 93 hashp -> ma_pgno , DB_LOCK_WRITE , 0, & h -> hlock )) != 0) 94 ( t ); 96 ( `__memp_dty ( dbp -> mpf , 97 & h -> hdr , dbc -> txn , dbc-> iܙy , ags )); 98 } } @../hash/hash_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/hash.h " 15 __ham_t_h_f __P (( DB *, u_t32_t )); 16 __ham_t_h_hash 17 __P (( DB *, $u_t32_t (*)( DB *, cڡ *, u_t32_t ))); 18 __ham_t_h_m `__P (( DB *, u_t32_t )); 27 $__ham_db_ ( dbp ) 28 DB * dbp ; 30 HASH * hashp ; 31 t ; 33 i(( t = `__os_mloc ( dbp -> dbv , 34 ( HASH ), & dbp -> h_ )) != 0) 35 ( t ); 37 hashp = dbp -> h_ ; 39 hashp -> h_m = 0; 40 hashp -> h_f = 0; 41 hashp -> h_hash = NULL ; 42 hashp -> h_com = NULL ; 44 dbp -> g_h_f = __ham_g_h_f ; 45 dbp -> t_h_f = __ham_t_h_f ; 46 dbp -> t_h_hash = __ham_t_h_hash ; 47 dbp -> t_h_com = __ham_t_h_com ; 48 dbp -> g_h_m = __ham_g_h_m ; 49 dbp -> t_h_m = __ham_t_h_m ; 52 } } 58 $__ham_db_o ( dbp ) 59 DB * dbp ; 61 i( dbp -> h_ = NULL ) 63 `__os_ ( dbp -> dbv , dbp-> h_ ); 64 dbp -> h_ = NULL ; 66 } } 74 $__ham_g_h_f ( dbp , h_fp ) 75 DB * dbp ; 76 u_t32_t * h_fp ; 78 HASH * hashp ; 80 hashp = dbp -> h_ ; 81 * h_fp = hashp -> h_f ; 83 } } 90 $__ham_t_h_f ( dbp , h_f ) 91 DB * dbp ; 92 u_t32_t h_f ; 94 HASH * hashp ; 96 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_h_ffactor"); 97 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 99 hashp = dbp -> h_ ; 100 hashp -> h_f = h_ffactor; 102 } } 109 $__ham_t_h_hash ( dbp , func ) 110 DB * dbp ; 111 $u_t32_t (* func `__P (( DB *, cڡ *, u_t32_t )); 113 HASH * hashp ; 115 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_h_hash"); 116 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 118 hashp = dbp -> h_ ; 119 hashp -> h_hash = func ; 121 } } 131 $__ham_t_h_com ( dbp , func ) 132 DB * dbp ; 133 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 135 HASH * t ; 137 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_h_compare"); 138 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 140 t = dbp -> h_ ; 142 t -> h_com = func ; 145 } } 153 $__ham_g_h_m ( dbp , h_mp ) 154 DB * dbp ; 155 u_t32_t * h_mp ; 157 HASH * hashp ; 159 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 161 hashp = dbp -> h_ ; 162 * h_mp = hashp -> h_m ; 164 } } 171 $__ham_t_h_m ( dbp , h_m ) 172 DB * dbp ; 173 u_t32_t h_m ; 175 HASH * hashp ; 177 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_h_nelem"); 178 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 180 hashp = dbp -> h_ ; 181 hashp -> h_m = h_nelem; 183 } } @../hash/hash_open.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/yo.h " 48 ~"dbc/db_ge.h " 49 ~"dbc/hash.h " 50 ~"dbc/log.h " 51 ~"dbc/lock.h " 52 ~"dbc/mp.h " 53 ~"dbc/b.h " 54 ~"dbc/f.h " 56 db_pgno_t __ham__ma __P (( DB *, HMETA *, db_pgno_t, DB_LSN *)); 65 $__ham_ݒ ( dbp , txn , me , ba_pgno , ags ) 66 DB * dbp ; 67 DB_TXN * txn ; 68 cڡ * me ; 69 db_pgno_t ba_pgno ; 70 u_t32_t ags ; 72 DB_ENV * dbv ; 73 DBC * dbc ; 74 HASH_CURSOR * h ; 75 HASH * hashp ; 76 t , t_t ; 78 dbv = dbp ->dbenv; 79 dbc = NULL ; 87 i(( t = `__db_curs ( dbp , 88 txn , & dbc , `LF_ISSET ( DB_CREATE && `CDB_LOCKING ( dbv ) ? 89 DB_WRITECURSOR : 0)) != 0) 90 ( t ); 92 h = ( HASH_CURSOR *) dbc -> ; 93 hashp = dbp -> h_ ; 94 hashp -> ma_pgno = ba_pgno ; 95 i(( t = `__ham_g_ma ( dbc )) != 0) 96 r ; 99 i( h -> hdr -> dbma . magic = DB_HASHMAGIC ) { 101 i( hashp -> h_hash = NULL ) 102 hashp -> h_hash = h -> hdr -> dbma . vsi < 5 103 ? __ham_func4 : __ham_func5 ; 104 hashp -> h_m = h -> hdr -> m ; 105 i( `F_ISSET (& h -> hdr -> dbma , DB_HASH_DUP )) 106 `F_SET ( dbp , DB_AM_DUP ); 107 i( `F_ISSET (& h -> hdr -> dbma , DB_HASH_DUPSORT )) 108 `F_SET ( dbp , DB_AM_DUPSORT ); 109 i( `F_ISSET (& h -> hdr -> dbma , DB_HASH_SUBDB )) 110 `F_SET ( dbp , DB_AM_SUBDB ); 111 } i(! `IS_RECOVERING ( dbv && ! `F_ISSET ( dbp , DB_AM_RECOVER )) { 112 `__db_rx ( dbv , 113 "%s: Invid hash mg%lu", me , ( u_lg ) ba_pgno ); 114 t = EINVAL ; 118 i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 119 t = t_t ; 120 r : i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 121 t = t_t ; 123 ( t ); 124 } } 132 $__ham_machk ( dbp , me , hashm ) 133 DB * dbp ; 134 cڡ * me ; 135 HMETA * hashm ; 137 DB_ENV * dbv ; 138 u_t32_t vs ; 139 t ; 141 dbv = dbp ->dbenv; 147 vs = hashm -> dbma . vsi ; 148 i( `F_ISSET ( dbp , DB_AM_SWAP )) 149 `M_32_SWAP ( vs ); 150 vs ) { 154 `__db_rx ( dbv , 156 me , ( u_lg ) vs ); 157 ( DB_OLD_VERSION ); 163 `__db_rx ( dbv , 164 "%s: unsu܋d hash vsi: %lu", me , ( u_lg ) vs ); 165 ( EINVAL ); 169 i( `F_ISSET ( dbp , DB_AM_SWAP && ( t = `__ham_msw (( PAGE *) hashm )) != 0) 170 ( t ); 173 i( dbp -> ty ! DB_HASH && dbp->ty ! DB_UNKNOWN ) 174 ( EINVAL ); 175 dbp -> ty = DB_HASH ; 176 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 182 i(( t = `__db_fchk ( dbv , 183 "DB->ݒ", hashm -> dbma . ags , 184 DB_HASH_DUP | DB_HASH_SUBDB | DB_HASH_DUPSORT )) != 0) 185 ( t ); 187 i( `F_ISSET (& hashm -> dbma , DB_HASH_DUP )) 188 `F_SET ( dbp , DB_AM_DUP ); 190 i( `F_ISSET ( dbp , DB_AM_DUP )) { 191 `__db_rx ( dbv , 193 me ); 194 ( EINVAL ); 197 i( `F_ISSET (& hashm -> dbma , DB_HASH_SUBDB )) 198 `F_SET ( dbp , DB_AM_SUBDB ); 200 i( `F_ISSET ( dbp , DB_AM_SUBDB )) { 201 `__db_rx ( dbv , 203 me ); 204 ( EINVAL ); 207 i( `F_ISSET (& hashm -> dbma , DB_HASH_DUPSORT )) { 208 i( dbp -> dup_com = NULL ) 209 dbp -> dup_com = __bam_defcmp ; 211 i( dbp -> dup_com ! NULL ) { 212 `__db_rx ( dbv , 214 me ); 215 ( EINVAL ); 219 dbp -> pgsize = hashm -> dbma . gesize ; 222 `memy ( dbp -> feid , hashm -> dbma . uid , DB_FILE_ID_LEN ); 225 } } 235 db_pgno_t 236 $__ham__ma ( dbp , ma , pgno , lp ) 237 DB * dbp ; 238 HMETA * ma ; 239 db_pgno_t pgno ; 240 DB_LSN * lp ; 242 DB_ENV * dbv ; 243 HASH * hashp ; 244 db_pgno_t nbucks ; 245 u_t i , l2 ; 247 dbv = dbp ->dbenv; 248 hashp = dbp -> h_ ; 250 i( hashp -> h_hash = NULL ) 251 hashp -> h_hash = DB_HASHVERSION < 5 ? __ham_func4 : __ham_func5 ; 253 i( hashp -> h_m !0 && hashp-> h_f != 0) { 254 hashp -> h_m = (hashp->h_m - 1/ hashp-> h_f + 1; 255 l2 = `__db_log2 ( hashp -> h_m > 2 ? hashp->h_nelem : 2); 257 l2 = 1; 258 nbucks = ( db_pgno_t )(1 << l2 ); 260 `memt ( ma , 0, ( HMETA )); 261 ma -> dbma . l = * lp ; 262 ma -> dbma . pgno =gno; 263 ma -> dbma . magic = DB_HASHMAGIC ; 264 ma -> dbma . vsi = DB_HASHVERSION ; 265 ma -> dbma . gesize = dbp -> pgsize ; 266 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 267 `FLD_SET ( ma -> dbma . maags , DBMETA_CHKSUM ); 268 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 269 ma -> dbma . y_g = 270 (( DB_CIPHER *) dbv -> yo_hd )-> g ; 271 `DB_ASSERT ( dbv , ma -> dbma . y_g != 0); 272 ma -> yo_magic = ma-> dbma . magic ; 274 ma -> dbma . ty = P_HASHMETA ; 275 ma -> dbma . = PGNO_INVALID ; 276 ma -> dbma . ϡ_pgno = pgno ; 277 ma -> max_buck = nbucks - 1; 278 ma -> high_mask = nbucks - 1; 279 ma -> low_mask = ( nbucks >> 1) - 1; 280 ma -> f = hashp -> h_f ; 281 ma -> m = hashp -> h_m ; 282 ma -> h_chkey = hashp -> `h_hash ( dbp , CHARKEY , (CHARKEY)); 283 `memy ( ma -> dbma . uid , dbp -> feid , DB_FILE_ID_LEN ); 285 i( `F_ISSET ( dbp , DB_AM_DUP )) 286 `F_SET (& ma -> dbma , DB_HASH_DUP ); 287 i( `F_ISSET ( dbp , DB_AM_SUBDB )) 288 `F_SET (& ma -> dbma , DB_HASH_SUBDB ); 289 i( dbp -> dup_com ! NULL ) 290 `F_SET (& ma -> dbma , DB_HASH_DUPSORT ); 297 ma -> es [0] = pgno + 1; 300 i = 1; i < l2 ; i++) 301 ma -> es [ i ] = meta->spares[0]; 302 ; i < NCACHED ; i++) 303 ma -> es [ i ] = PGNO_INVALID ; 305 ( nbucks ); 306 } } 325 $__ham_w_fe ( dbp , txn , fhp , me ) 326 DB * dbp ; 327 DB_TXN * txn ; 328 DB_FH * fhp ; 329 cڡ * me ; 331 DB_ENV * dbv ; 332 DB_LSN l ; 333 DB_MPOOLFILE * mpf ; 334 DB_PGINFO pgfo ; 335 DBT pdbt ; 336 HMETA * ma ; 337 PAGE * ge ; 338 t ; 339 db_pgno_t gno ; 340 * buf ; 342 dbv = dbp ->dbenv; 343 mpf = dbp ->mpf; 344 ma = NULL ; 345 ge = NULL ; 346 buf = NULL ; 348 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 350 gno = PGNO_BASE_MD ; 351 i(( t = `__memp_fg ( mpf , & gno , txn , 352 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ma )) != 0) 353 ( t ); 354 `LSN_NOT_LOGGED ( l ); 355 gno = `__ham__ma ( dbp , ma , PGNO_BASE_MD , & l ); 356 ma -> dbma . ϡ_pgno = gno ; 357 i(( t = `__db_log_ge ( dbp , 358 txn , & l , ma -> dbma . pgno , ( PAGE *)meta)) != 0) 359 r ; 360 t = `__memp_ut ( mpf , ma , dbp -> iܙy ); 361 ma = NULL ; 362 i( t != 0) 363 r ; 366 i(( t = `__memp_fg ( mpf , & gno , txn , 367 DB_MPOOL_CREATE , & ge )) != 0) 368 r ; 369 `P_INIT ( ge , 370 dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 371 `LSN_NOT_LOGGED ( ge -> l ); 372 i(( t = 373 `__db_log_ge ( dbp , txn , & ge -> l , gno ,age)) != 0) 374 r ; 375 t = `__memp_ut ( mpf , ge , dbp -> iܙy ); 376 ge = NULL ; 377 i( t != 0) 378 r ; 380 `memt (& pdbt , 0, (pdbt)); 383 pgfo . db_gesize = dbp -> pgsize ; 384 pgfo . ty = dbp ->type; 385 pgfo . ags = 386 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 387 pdbt . da = & pgfo ; 388 pdbt . size = ( pgfo ); 389 i(( t = `__os_oc ( dbp -> dbv , 1, dbp-> pgsize , & buf )) != 0) 390 ( t ); 391 ma = ( HMETA *) buf ; 392 `LSN_NOT_LOGGED ( l ); 393 gno = `__ham__ma ( dbp , ma , PGNO_BASE_MD , & l ); 394 ma -> dbma . ϡ_pgno = gno ; 395 i(( t = `__db_pgout ( dbv , PGNO_BASE_MD , ma , & pdbt )) != 0) 396 r ; 397 i(( t = `__f_wre ( dbv , txn , me , DB_APP_DATA , fhp , 398 dbp -> pgsize , 0, 0, buf , dbp->pgsize, 1, `F_ISSET ( 399 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 400 r ; 401 ma = NULL ; 404 #ifde DIAGNOSTIC 405 `memt ( buf , 0, dbp -> pgsize ); 407 ge = ( PAGE *) buf ; 408 `P_INIT ( ge , 409 dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 410 `LSN_NOT_LOGGED ( ge -> l ); 411 i(( t = `__db_pgout ( dbv , gno , buf , & pdbt )) != 0) 412 r ; 413 i(( t = `__f_wre ( dbv , txn , me , DB_APP_DATA , fhp , 414 dbp -> pgsize , gno , 0, buf , dbp->pgsize, 1, `F_ISSET ( 415 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 416 r ; 417 ge = NULL ; 420 r : i( buf ! NULL ) 421 `__os_ ( dbv , buf ); 423 i( ma ! NULL ) 424 () `__memp_ut ( mpf , ma , dbp -> iܙy ); 425 i( ge ! NULL ) 426 () `__memp_ut ( mpf , ge , dbp -> iܙy ); 428 ( t ); 429 } } 438 $__ham_w_subdb ( mdbp , dbp , txn ) 439 DB * mdbp , * dbp ; 440 DB_TXN * txn ; 442 DBC * dbc ; 443 DB_ENV * dbv ; 444 DB_LOCK mock , mmlock ; 445 DB_LSN l ; 446 DB_MPOOLFILE * mpf ; 447 DBMETA * mma ; 448 HMETA * ma ; 449 PAGE * h ; 450 i , t , t_t ; 451 db_pgno_t gno , mpgno ; 453 dbv = mdbp ->dbenv; 454 mpf = mdbp ->mpf; 455 dbc = NULL ; 456 ma = NULL ; 457 mma = NULL ; 458 `LOCK_INIT ( mock ); 459 `LOCK_INIT ( mmlock ); 461 i(( t = `__db_curs ( mdbp , txn , 462 & dbc , `CDB_LOCKING ( dbv ? DB_WRITECURSOR : 0)) != 0) 463 ( t ); 466 i(( t = `__db_lg ( dbc , 467 0, dbp -> ma_pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 468 r ; 469 i(( t = `__memp_fg ( mpf , & dbp -> ma_pgno , dbc -> txn , 470 DB_MPOOL_CREATE , & ma )) != 0) 471 r ; 474 l = ma -> dbma .lsn; 475 gno = `__ham__ma ( dbp , ma , dbp-> ma_pgno , & l ); 483 mpgno = PGNO_BASE_MD ; 484 i(( t = `__db_lg ( dbc , 0, mpgno , DB_LOCK_WRITE , 0, & mmlock )) != 0) 485 r ; 486 i(( t = `__memp_fg ( mpf , & mpgno , dbc -> txn , 487 DB_MPOOL_DIRTY , & mma )) != 0) 488 r ; 494 ma -> es [0] = mma -> ϡ_pgno + 1; 495 i = 0; i < NCACHED && ma -> es [i] ! PGNO_INVALID ; i++) 496 ma -> es [ i ] = meta->spares[0]; 499 i(( t = `__db_log_ge ( mdbp , 500 txn , & ma -> dbma . l , dbp -> ma_pgno , ( PAGE *)meta)) != 0) 501 r ; 504 i( `DBENV_LOGGING ( dbv ) 505 #i! `defed ( DEBUG_WOP ) 506 && txn ! NULL 509 i(( t = `__ham_grouoc_log ( mdbp , txn , 510 & `LSN ( mma ), 0, &LSN(mma), ma -> es [0], 511 ma -> max_buck + 1, 0, mma -> ϡ_pgno )) != 0) 512 r ; 515 i(( t = `__memp_ut ( mpf , ma , dbc -> iܙy )) != 0) 516 r ; 517 ma = NULL ; 519 gno + mma -> ϡ_pgno ; 522 i(( t = `__memp_fg ( mpf , & gno , dbc -> txn , 523 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h )) != 0) 524 r ; 526 mma -> ϡ_pgno = gno ; 527 `P_INIT ( h , dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 528 `LSN ( h LSN( mma ); 529 i(( t = `__memp_ut ( mpf , h , dbc -> iܙy )) != 0) 530 r ; 532 r : 533 i( mma ! NULL && ( t_t = `__memp_ut ( mpf , 534 mma , dbc -> iܙy )!0 && t == 0) 535 t = t_t ; 536 i(( t_t = `__LPUT ( dbc , mmlock )!0 && t == 0) 537 t = t_t ; 538 i( ma ! NULL && 539 ( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 540 t = t_t ; 541 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 542 t = t_t ; 543 i( dbc ! NULL ) 544 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 545 t = t_t ; 546 ( t ); 547 } } @../hash/hash_page.c 51 ~"db_cfig.h " 53 ~"db_t.h " 54 ~"dbc/db_ge.h " 55 ~"dbc/hash.h " 56 ~"dbc/lock.h " 57 ~"dbc/mp.h " 59 __hamc_dpg 60 __P (( DBC *, db_pgno_t , db_pgno_t, u_t32_t , db_ham_mode , u_int32_t *)); 61 __ham_gdex_s܋d __P (( DB *, 62 DB_TXN *, PAGE *, cڡ DBT *, , *, db_dx_t *)); 63 __ham_gdex_uns܋d __P (( DB *, 64 DB_TXN *, PAGE *, cڡ DBT *, *, db_dx_t *)); 65 __ham_st_ge_curs __P (( DBC *, PAGE *)); 71 $__ham_em ( dbc , mode , pgn ) 72 DBC * dbc ; 73 db_lockmode_t mode ; 74 db_pgno_t * pgn ; 76 DB * dbp ; 77 HASH_CURSOR * h ; 78 db_pgno_t xt_pgno ; 79 t ; 81 dbp = dbc ->dbp; 82 h = ( HASH_CURSOR *) dbc -> ; 84 i( `F_ISSET ( h , H_DELETED )) { 85 `__db_rx ( dbp -> dbv , "Attemptoeturn deleted item"); 86 ( EINVAL ); 88 `F_CLR ( h , H_OK | H_NOMORE ); 91 i(( t = `__ham_g_age ( dbc , mode )) != 0) 92 ( t ); 94 check : 96 i( h -> ek_size !0 && h-> ek_found_ge = PGNO_INVALID && 97 h -> ek_size < `P_FREESPACE ( dbp , h-> ge )) { 98 h -> ek_found_ge = h-> pgno ; 99 h -> ek_found_dx = NDX_INVALID ; 103 i( h -> dx < `NUM_ENT (h-> ge ) && 104 `HPAGE_TYPE ( dbp , h -> ge , `H_DATAINDEX (h-> dx )= H_OFFDUP ) { 105 `memy ( pgn , 106 `HOFFDUP_PGNO ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )), 107 ( db_pgno_t )); 108 `F_SET ( h , H_OK ); 113 i( `F_ISSET ( h , H_ISDUP )) 119 `memy (& h -> dup_n , 120 `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )) + 121 h -> dup_off , ( db_dx_t )); 123 i( h -> dx >( db_dx_t ) `NUM_ENT (h-> ge )) { 125 i( `NEXT_PGNO ( h -> ge = PGNO_INVALID ) { 126 `F_SET ( h , H_NOMORE ); 127 ( DB_NOTFOUND ); 129 xt_pgno = `NEXT_PGNO ( h -> ge ); 130 h -> dx = 0; 131 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 132 ( t ); 133 check ; 136 `F_SET ( h , H_OK ); 138 } } 144 $__ham_em_t ( dbc ) 145 DBC * dbc ; 147 DB * dbp ; 148 DB_MPOOLFILE * mpf ; 149 HASH_CURSOR * h ; 150 t , t_t ; 152 dbp = dbc ->dbp; 153 mpf = dbp ->mpf; 154 h = ( HASH_CURSOR *) dbc -> ; 156 t = 0; 157 i( h -> ge ! NULL ) 158 t = `__memp_ut ( mpf , h -> ge , dbc -> iܙy ); 160 i(( t_t = `__ham_em_ ( dbc )!0 && t == 0) 161 t = t_t ; 163 ( t ); 164 } } 170 $__ham_em_ ( dbc ) 171 DBC * dbc ; 173 HASH_CURSOR * h ; 174 t ; 176 h = ( HASH_CURSOR *) dbc -> ; 182 t = `__TLPUT ( dbc , h -> lock ); 189 h -> buck = BUCKET_INVALID ; 190 h -> lbuck = BUCKET_INVALID ; 191 `LOCK_INIT ( h -> lock ); 192 h -> lock_mode = DB_LOCK_NG ; 193 h -> dup_off = 0; 194 h -> dup_n = 0; 195 h -> dup_ = 0; 196 h -> ek_size = 0; 197 h -> ek_found_ge = PGNO_INVALID ; 198 h -> ek_found_dx = NDX_INVALID ; 199 h -> ags = 0; 201 h -> pgno = PGNO_INVALID ; 202 h -> dx = NDX_INVALID ; 203 h -> ge = NULL ; 205 ( t ); 206 } } 214 $__ham_em_ϡ ( dbc , mode , pgn ) 215 DBC * dbc ; 216 db_lockmode_t mode ; 217 db_pgno_t * pgn ; 219 HASH_CURSOR * h ; 220 t ; 222 h = ( HASH_CURSOR *) dbc -> ; 223 i(( t = `__ham_em_t ( dbc )) != 0) 224 ( t ); 226 h -> buck = h-> hdr -> max_buck ; 227 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 228 `F_SET ( h , H_OK ); 229 ( `__ham_em_ev ( dbc , mode , pgn )); 230 } } 236 $__ham_em_f ( dbc , mode , pgn ) 237 DBC * dbc ; 238 db_lockmode_t mode ; 239 db_pgno_t * pgn ; 241 HASH_CURSOR * h ; 242 t ; 244 h = ( HASH_CURSOR *) dbc -> ; 245 i(( t = `__ham_em_t ( dbc )) != 0) 246 ( t ); 247 `F_SET ( h , H_OK ); 248 h -> buck = 0; 249 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 250 ( `__ham_em_xt ( dbc , mode , pgn )); 251 } } 262 $__ham_em_ev ( dbc , mode , pgn ) 263 DBC * dbc ; 264 db_lockmode_t mode ; 265 db_pgno_t * pgn ; 267 DB * dbp ; 268 HASH_CURSOR * h ; 269 db_pgno_t xt_pgno ; 270 t ; 272 h = ( HASH_CURSOR *) dbc -> ; 273 dbp = dbc ->dbp; 284 `F_CLR ( h , H_OK | H_NOMORE | H_DELETED ); 286 i(( t = `__ham_g_age ( dbc , mode )) != 0) 287 ( t ); 294 i(! `F_ISSET ( h , H_NEXT_NODUP && F_ISSET(h, H_ISDUP )) { 295 i( `HPAGE_TYPE ( dbp , h -> ge , `H_DATAINDEX (h-> dx )) == 296 H_OFFDUP ) { 297 `memy ( pgn , 298 `HOFFDUP_PGNO ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )), 299 ( db_pgno_t )); 300 `F_SET ( h , H_OK ); 305 i( h -> dup_off != 0) { 306 `memy (& h -> dup_n , `HKEYDATA_DATA ( 307 `H_PAIRDATA ( dbp , h -> ge , h-> dx )) 308 + h -> dup_off - ( db_dx_t ), 309 ( db_dx_t )); 310 h -> dup_off -= 311 `DUP_SIZE ( h -> dup_n ); 312 ( `__ham_em ( dbc , mode , pgn )); 322 i( `F_ISSET ( h , H_DUPONLY )) { 323 `F_CLR ( h , H_OK ); 324 `F_SET ( h , H_NOMORE ); 331 `F_CLR ( h , H_ISDUP ); 333 i( h -> dx == 0) { 334 h -> pgno = `PREV_PGNO (h-> ge ); 335 i( h -> pgno = PGNO_INVALID ) { 337 `F_SET ( h , H_NOMORE ); 338 ( DB_NOTFOUND ); 339 } i(( t = 340 `__ham_xt_age ( dbc , h -> pgno )) != 0) 341 ( t ); 343 h -> dx = `NUM_ENT (h-> ge ); 350 i( h -> dx = NDX_INVALID ) { 351 `DB_ASSERT ( dbp -> dbv , h -> ge ! NULL ); 353 h -> dx = `NUM_ENT (h-> ge ); 354 xt_pgno = `NEXT_PGNO ( h -> ge ); 355 xt_pgno ! PGNO_INVALID ; 356 xt_pgno = `NEXT_PGNO ( h -> ge )) { 357 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 358 ( t ); 359 h -> dx = `NUM_ENT (h-> ge ); 362 i( h -> dx == 0) { 364 `F_SET ( h , H_NOMORE ); 365 ( DB_NOTFOUND ); 369 h -> dx -= 2; 371 ( `__ham_em ( dbc , mode , pgn )); 372 } } 380 $__ham_em_xt ( dbc , mode , pgn ) 381 DBC * dbc ; 382 db_lockmode_t mode ; 383 db_pgno_t * pgn ; 385 HASH_CURSOR * h ; 386 t ; 388 h = ( HASH_CURSOR *) dbc -> ; 390 i(( t = `__ham_g_age ( dbc , mode )) != 0) 391 ( t ); 398 i( `F_ISSET ( h , H_DELETED )) { 399 i( h -> dx ! NDX_INVALID && 400 `F_ISSET ( h , H_ISDUP ) && 401 `HPAGE_TYPE ( dbc -> dbp , h -> ge , `H_DATAINDEX (h-> dx )) 402 = H_DUPLICATE && h -> dup_ =h-> dup_off ) { 403 i( `F_ISSET ( h , H_DUPONLY )) { 404 `F_CLR ( h , H_OK ); 405 `F_SET ( h , H_NOMORE ); 408 `F_CLR ( h , H_ISDUP ); 409 h -> dx += 2; 411 } i(! `F_ISSET ( h , H_ISDUP && F_ISSET(h, H_DUPONLY )) { 412 `F_CLR ( h , H_OK ); 413 `F_SET ( h , H_NOMORE ); 415 } i( `F_ISSET ( h , H_ISDUP ) && 416 `F_ISSET ( h , H_NEXT_NODUP )) { 417 `F_CLR ( h , H_ISDUP ); 418 h -> dx += 2; 420 `F_CLR ( h , H_DELETED ); 421 } i( h -> dx = NDX_INVALID ) { 422 h -> dx = 0; 423 `F_CLR ( h , H_ISDUP ); 424 } i( `F_ISSET ( h , H_NEXT_NODUP )) { 425 h -> dx += 2; 426 `F_CLR ( h , H_ISDUP ); 427 } i( `F_ISSET ( h , H_ISDUP && h-> dup_ != 0) { 428 i( h -> dup_off + `DUP_SIZE (h-> dup_n ) >= 429 h -> dup_ && `F_ISSET (h, H_DUPONLY )) { 430 `F_CLR ( h , H_OK ); 431 `F_SET ( h , H_NOMORE ); 434 h -> dup_off + `DUP_SIZE (h-> dup_n ); 435 i( h -> dup_off >h-> dup_ ) { 436 `F_CLR ( h , H_ISDUP ); 437 h -> dx += 2; 439 } i( `F_ISSET ( h , H_DUPONLY )) { 440 `F_CLR ( h , H_OK ); 441 `F_SET ( h , H_NOMORE ); 444 h -> dx += 2; 445 `F_CLR ( h , H_ISDUP ); 448 ( `__ham_em ( dbc , mode , pgn )); 449 } } 471 $__ham_ ( dbp , txn , p , dxp , key_dbt , da_dbt , key_ty , da_ty ) 472 DB * dbp ; 473 DB_TXN * txn ; 474 PAGE * p ; 475 db_dx_t * dxp ; 476 cڡ DBT * key_dbt , * da_dbt ; 477 key_ty , da_ty ; 479 u_t16_t n , dx ; 480 db_dx_t * p ; 481 u_t32_t ksize , dsize , , di ; 482 u_t8_t * offt ; 483 i , mch , t ; 485 n = `NUM_ENT ( p ); 486 p = `P_INP ( dbp , p ); 487 ksize = ( key_ty = H_OFFPAGE ) ? 488 key_dbt -> size : `HKEYDATA_SIZE (key_dbt->size); 489 dsize = ( da_ty = H_OFFPAGE ) ? 490 da_dbt -> size : `HKEYDATA_SIZE (data_dbt->size); 491 = ksize + dsize ; 493 i( dxp ! NULL && *dx! NDX_INVALID ) 494 dx = * dxp ; 496 i(( t = `__ham_gdex ( dbp , txn , p , key_dbt , 497 key_ty , & mch , & dx )) != 0) 498 ( t ); 500 i( dxp ! NULL ) 501 * dxp = dx ; 503 `DB_ASSERT ( dbp -> dbv , mch != 0); 507 i( n =0 || dx ==) { 508 p [ dx ] = `HOFFSET ( p - ksize ; 509 p [ dx +1] = `HOFFSET ( p - ; 551 offt = ( u_t8_t *) p + `HOFFSET (p); 552 i( dx == 0) 553 di = dbp -> pgsize - `HOFFSET ( p ); 555 di = ( u_t32_t ) 556 ( `P_ENTRY ( dbp , p , dx - 1- offt ); 557 `memmove ( offt - , offt, di ); 560 `memmove (& p [ dx + 2], &inp[indx], 561 ( n - dx * ( db_dx_t )); 564 i = dx + 2; i < n + 2; i++) 565 p [ i ] - ; 568 p [ dx ] = ( `HOFFSET ( p - + di + dsize ; 569 p [ dx + 1] = ( `HOFFSET ( p - + di ; 572 `HOFFSET ( p - ; 574 i( key_ty = H_OFFPAGE ) 575 `memy ( `P_ENTRY ( dbp , p , dx ), key_dbt -> da , key_dbt-> size ); 577 `PUT_HKEYDATA ( `P_ENTRY ( dbp , p , dx ), key_dbt -> da , 578 key_dbt -> size , key_ty ); 579 i( da_ty = H_OFFPAGE ) 580 `memy ( `P_ENTRY ( dbp , p , dx +1), da_dbt -> da , 581 da_dbt -> size ); 583 `PUT_HKEYDATA ( `P_ENTRY ( dbp , p , dx +1), da_dbt -> da , 584 da_dbt -> size , da_ty ); 585 `NUM_ENT ( p ) += 2; 594 } } 608 $__ham_gdex ( dbp , txn , p , key , key_ty , mch , dx ) 609 DB * dbp ; 610 DB_TXN * txn ; 611 PAGE * p ; 612 cڡ DBT * key ; 613 key_ty , * mch ; 614 db_dx_t * dx ; 617 `DB_ASSERT ( dbp -> dbv , `NUM_ENT ( p )%2 == 0 ); 620 i( p -> ty = P_HASH_UNSORTED ) 621 ( `__ham_gdex_uns܋d ( 622 dbp , txn , p , key , mch , dx )); 624 ( `__ham_gdex_s܋d ( 625 dbp , txn , p , key , key_ty , mch , dx )); 626 } } 628 #unde m 629 #m ( a , b ((< (b)? (a: (b)) ) 642 $__ham_gdex_uns܋d ( dbp , txn , p , key , mch , dx ) 643 DB * dbp ; 644 DB_TXN * txn ; 645 PAGE * p ; 646 cڡ DBT * key ; 647 * mch ; 648 db_dx_t * dx ; 650 DBT pg_dbt ; 651 HASH * t ; 652 db_pgno_t pgno ; 653 i , n , s , t ; 654 u_t32_t ; 655 u_t8_t * hk ; 657 n = `NUM_ENT ( p ); 658 t = dbp -> h_ ; 659 s = 1; 662 i = 0; i < n ; i+=2) { 663 hk = `H_PAIRKEY ( dbp , p , i ); 664 `HPAGE_PTYPE ( hk )) { 665 H_OFFPAGE : 667 `memy (& , `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 668 i( = key -> size ) { 669 `memy (& pgno , 670 `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 671 i(( t = `__db_moff ( dbp , txn , key , 672 pgno , , t -> h_com , & s )) != 0) 673 ( t ); 676 H_KEYDATA : 677 i( t -> h_com ! NULL ) { 678 `DB_INIT_DBT ( pg_dbt , 679 `HKEYDATA_DATA ( hk ), key -> size ); 680 i( t -> `h_com ( 681 dbp , key , & pg_dbt ) != 0) 683 } i( key -> size == 684 `LEN_HKEY ( dbp , p , dbp-> pgsize , i )) 685 s = `memcmp ( key -> da , `HKEYDATA_DATA ( hk ), 686 key -> size ); 688 H_DUPLICATE : 689 H_OFFDUP : 695 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( p ))); 697 i( s == 0) 700 * dx = i ; 701 * mch = ( s == 0 ? 0 : 1); 703 } } 712 $__ham_gdex_s܋d ( dbp , txn , p , key , key_ty , mch , dxp ) 713 DB * dbp ; 714 DB_TXN * txn ; 715 PAGE * p ; 716 cڡ DBT * key ; 717 key_ty , * mch ; 718 db_dx_t * dxp ; 720 DBT tmp_dbt ; 721 HASH * t ; 722 HOFFPAGE * of ; 723 db_dx_t dx ; 724 db_pgno_t off_pgno , koff_pgno ; 725 u_t32_t ba , emn , lim , off_n ; 726 u_t8_t * y ; 727 s , t ; 728 * da ; 730 `DB_ASSERT ( dbp -> dbv , p -> ty = P_HASH ); 732 t = dbp -> h_ ; 734 s = dx = 0; 737 `DB_BINARY_SEARCH_FOR ( ba , lim , p , 2) { 738 `DB_BINARY_SEARCH_INCR ( dx , ba , lim , 2); 739 da = `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , p , dx )); 747 y = `P_ENTRY ( dbp , p , dx ); 748 i(* y = H_OFFPAGE ) { 749 of = ( HOFFPAGE *) `P_ENTRY ( dbp , p , dx ); 750 `memy (& emn , `HOFFPAGE_TLEN ( of ), 751 ( u_t32_t )); 752 i( key_ty = H_OFFPAGE ) { 762 `memy (& koff_pgno , `HOFFPAGE_PGNO ( key -> da ), 763 ( db_pgno_t )); 764 `memy (& off_pgno , `HOFFPAGE_PGNO ( of ), 765 ( db_pgno_t )); 766 i( koff_pgno = off_pgno ) 767 s = 0; 769 `memt (& tmp_dbt , 0, (tmp_dbt)); 770 tmp_dbt . size = HOFFPAGE_SIZE ; 771 tmp_dbt . da = of ; 772 i(( t = `__db_coff ( dbp , txn , key , 773 & tmp_dbt , t -> h_com , & s )) != 0) 774 ( t ); 778 `memy (& off_pgno , `HOFFPAGE_PGNO ( of ), 779 ( db_pgno_t )); 780 i(( t = `__db_moff ( dbp , txn , key , off_pgno , 781 emn , t -> h_com , & s )) != 0) 782 ( t ); 785 emn = `LEN_HKEYDATA ( dbp , p , dbp-> pgsize , dx ); 786 i( key_ty = H_OFFPAGE ) { 788 tmp_dbt . da = data; 789 tmp_dbt . size = emn ; 790 of = ( HOFFPAGE *) key -> da ; 791 `memy (& off_pgno , `HOFFPAGE_PGNO ( of ), 792 ( db_pgno_t )); 793 `memy (& off_n , `HOFFPAGE_TLEN ( of ), 794 ( u_t32_t )); 795 i(( t = `__db_moff ( dbp , txn , & tmp_dbt , 796 off_pgno , off_n , t -> h_com , 797 & s )) != 0) 798 ( t ); 804 s = -res; 805 } i( t -> h_com ! NULL ) { 807 `DB_INIT_DBT ( tmp_dbt , da , emn ); 808 s = t -> `h_com ( dbp , key , & tmp_dbt ); 811 i(( s = `memcmp ( key -> da , data, 812 `m ( key -> size , emn ))) == 0) 813 s = emn > key -> size ? 1 : 814 ( emn < key -> size ? -1 : 0); 817 i( s == 0) { 819 * dxp = dx ; 820 * mch = 0; 822 } i( s > 0) 823 `DB_BINARY_SEARCH_SHIFT_BASE ( dx , ba , lim , 2); 830 i( s > 0) 831 dx += 2; 832 * dxp = dx ; 833 * mch = 1; 835 } } 845 $__ham_vify_s܋d_ge ( dbp , txn , p ) 846 DB * dbp ; 847 DB_TXN * txn ; 848 PAGE * p ; 850 DB_ENV * dbv ; 851 DBT ev_dbt , cu_dbt ; 852 HASH * t ; 853 db_pgno_t gno ; 854 u_t32_t cu_n , ev_n , ; 855 u_t16_t * dxp ; 856 db_dx_t i , n ; 857 s , t ; 858 * ev , * cu ; 861 n = `NUM_ENT ( p ); 862 `DB_ASSERT ( dbp -> dbv , n %2 == 0 ); 864 dbv = dbp ->dbenv; 865 t = dbp -> h_ ; 868 i( t -> h_com ! NULL ) 872 ev = (*) `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , p , 0)); 873 ev_n = `LEN_HKEYDATA ( dbp , p , dbp-> pgsize , 0); 874 i = 2; i < n ; i+=2) { 875 cu = (*) `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , p , i )); 876 cu_n = `LEN_HKEYDATA ( dbp , p , dbp-> pgsize , i ); 878 i( `HPAGE_TYPE ( dbp , p , i -2= H_OFFPAGE && 879 `HPAGE_TYPE ( dbp , p , i = H_OFFPAGE ) { 880 `memt (& ev_dbt , 0, (prev_dbt)); 881 `memt (& cu_dbt , 0, (curr_dbt)); 882 ev_dbt . size = cu_dbt .siz HOFFPAGE_SIZE ; 883 ev_dbt . da = `H_PAIRKEY ( dbp , p , i -2); 884 cu_dbt . da = `H_PAIRKEY ( dbp , p , i ); 885 i(( t = `__db_coff ( dbp , txn , 886 & ev_dbt , & cu_dbt , t -> h_com , & s )) != 0) 887 ( t ); 888 } i( `HPAGE_TYPE ( dbp , p , i -2= H_OFFPAGE ) { 889 `memt (& cu_dbt , 0, (curr_dbt)); 890 cu_dbt . size = cu_n ; 891 cu_dbt . da = `H_PAIRKEY ( dbp , p , i ); 892 `memy (& , `HOFFPAGE_TLEN ( `H_PAIRKEY ( dbp , p , i -2)), 893 ( u_t32_t )); 894 `memy (& gno , `HOFFPAGE_PGNO ( `H_PAIRKEY ( dbp , p , i -2)), 895 ( db_pgno_t )); 896 i(( t = `__db_moff ( dbp , txn , 897 & cu_dbt , gno , , t -> h_com , & s )) != 0) 898 ( t ); 899 } i( `HPAGE_TYPE ( dbp , p , i = H_OFFPAGE ) { 900 `memt (& ev_dbt , 0, (prev_dbt)); 901 ev_dbt . size = ev_n ; 902 ev_dbt . da = `H_PAIRKEY ( dbp , p , i ); 903 `memy (& , `HOFFPAGE_TLEN ( `H_PAIRKEY ( dbp , p , i )), 904 ( u_t32_t )); 905 `memy (& gno , `HOFFPAGE_PGNO ( `H_PAIRKEY ( dbp , p , i )), 906 ( db_pgno_t )); 907 i(( t = `__db_moff ( dbp , txn , 908 & ev_dbt , gno , , t -> h_com , & s )) != 0) 909 ( t ); 911 s = `memcmp ( ev , cu , `m ( cu_n , ev_n )); 913 i( s =0 && cu_n > ev_n ) 914 s = 1; 915 i( s =0 && cu_n < ev_n ) 916 s = -1; 918 i( s >= 0) { 919 `__db_msg ( dbv , "key1: %s, key2: %s,en: %lu\n", 920 (*) ev , (*) cu , 921 ( u_lg ) `m ( cu_n , ev_n )); 922 `__db_msg ( dbv , "cuoff%lu\n", ( u_lg ) i ); 923 `__db_msg ( dbv , "indexes: "); 924 i = 0; i < n ; i++) { 925 dxp = `P_INP ( dbp , p + i ; 926 `__db_msg ( dbv , "%04X, ", * dxp ); 928 `__db_msg ( dbv , "\n"); 929 #ifde HAVE_STATISTICS 930 i(( t = `__db_ge ( dbp , p , DB_PR_PAGE )) != 0) 931 ( t ); 933 `DB_ASSERT ( dbp -> dbv , s < 0); 936 ev = cu ; 937 ev_n = cu_n ; 940 } } 947 $__ham_st_ge_curs ( dbc , ge ) 948 DBC * dbc ; 949 PAGE * ge ; 951 DB * dbp ; 952 DB_LSN w_l ; 953 DBT ge_dbt ; 954 HASH_CURSOR * h ; 955 t ; 957 dbp = dbc ->dbp; 958 h = ( HASH_CURSOR *) dbc -> ; 960 i( `DBC_LOGGING ( dbc )) { 961 ge_dbt . size = dbp -> pgsize ; 962 ge_dbt . da = ge ; 963 i(( t = `__ham_lda_log ( dbp , dbc -> txn , 964 & w_l , 0, SORTPAGE , `PGNO ( ge ), 965 & ge_dbt , & `LSN ( ge ))) != 0) 966 ( t ); 968 `LSN_NOT_LOGGED ( w_l ); 970 `LSN ( ge w_l ; 976 h -> ek_found_dx = NDX_INVALID ; 977 h -> ek_found_ge = PGNO_INVALID ; 979 ( `__ham_st_ge ( 980 dbp , dbc -> txn , & h -> l_buf , ge )); 981 } } 995 $__ham_st_ge ( dbp , txn , tmp_buf , ge ) 996 DB * dbp ; 997 DB_TXN * txn ; 998 PAGE ** tmp_buf ; 999 PAGE * ge ; 1001 PAGE * mp_g ; 1002 db_dx_t i ; 1003 t ; 1005 `DB_ASSERT ( dbp -> dbv , ge -> ty = P_HASH_UNSORTED ); 1007 t = 0; 1008 i( tmp_buf ! NULL ) 1009 mp_g = * tmp_buf ; 1010 i(( t = `__os_mloc ( dbp -> dbv , dbp-> pgsize , & mp_g )) != 0) 1011 ( t ); 1013 `memy ( mp_g , ge , dbp -> pgsize ); 1016 `P_INIT ( ge , dbp -> pgsize , 1017 ge -> pgno ,age-> ev_pgno ,age-> xt_pgno , 0, P_HASH ); 1019 i = 0; i < `NUM_ENT ( mp_g ); i += 2) 1020 i(( t = 1021 `__ham_cy ( dbp , txn , mp_g , i , ge , NULL )) != 0) 1024 i( tmp_buf = NULL ) 1025 `__os_ ( dbp -> dbv , mp_g ); 1027 ( t ); 1028 } } 1034 $__ham_d_ ( dbc , ags ) 1035 DBC * dbc ; 1036 ags ; 1038 DB * dbp ; 1039 DBT da_dbt , key_dbt ; 1040 DB_LSN w_l , * n_l , tmp_l ; 1041 DB_MPOOLFILE * mpf ; 1042 HASH_CURSOR * h ; 1043 PAGE * n_g , * _g , * p , * p_g ; 1044 db_ham_mode ; 1045 db_dx_t ndx ; 1046 db_pgno_t chg_pgno , pgno , tmp_pgno ; 1047 u_t32_t d ; 1048 t , t_t ; 1050 dbp = dbc ->dbp; 1051 mpf = dbp ->mpf; 1052 h = ( HASH_CURSOR *) dbc -> ; 1053 n_g = p_g = _g = NULL ; 1054 ndx = h -> dx ; 1056 i( h -> ge = NULL && 1057 ( t = `__memp_fg ( mpf , & h -> pgno , dbc -> txn , 1058 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h -> ge )) != 0) 1059 ( t ); 1060 p = h -> ge ; 1069 i( `HPAGE_PTYPE ( `H_PAIRKEY ( dbp , p , ndx )= H_OFFPAGE ) { 1070 `memy (& pgno , `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , p , `H_KEYINDEX ( ndx ))), 1071 ( db_pgno_t )); 1072 t = `__db_doff ( dbc , pgno ); 1074 t = 0; 1076 i( t == 0) 1077 `HPAGE_PTYPE ( `H_PAIRDATA ( dbp , p , ndx ))) { 1078 H_OFFPAGE : 1079 `memy (& pgno , 1080 `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , p , `H_DATAINDEX ( ndx ))), 1081 ( db_pgno_t )); 1082 t = `__db_doff ( dbc , pgno ); 1084 H_OFFDUP : 1085 H_DUPLICATE : 1091 `F_CLR ( h , H_ISDUP ); 1098 i( t ) 1099 ( t ); 1102 i( `DBC_LOGGING ( dbc )) { 1103 key_dbt . da = `P_ENTRY ( dbp , p , `H_KEYINDEX ( ndx )); 1104 key_dbt . size = `LEN_HITEM ( dbp , p , dbp-> pgsize , `H_KEYINDEX ( ndx )); 1105 da_dbt . da = `P_ENTRY ( dbp , p , `H_DATAINDEX ( ndx )); 1106 da_dbt . size = 1107 `LEN_HITEM ( dbp , p , dbp-> pgsize , `H_DATAINDEX ( ndx )); 1109 i(( t = `__ham_sd_log ( dbp , 1110 dbc -> txn , & w_l , 0, DELPAIR , `PGNO ( p ), ( u_t32_t ) ndx , 1111 & `LSN ( p ), & key_dbt , & da_dbt )) != 0) 1112 ( t ); 1114 `LSN_NOT_LOGGED ( w_l ); 1117 `LSN ( p w_l ; 1119 `__ham_d ( dbp , p , ndx ); 1126 `F_SET ( h , H_DELETED ); 1127 `F_CLR ( h , H_OK ); 1136 i(! `STD_LOCKING ( dbc )) { 1137 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 1138 ( t ); 1139 -- h -> hdr -> m ; 1143 i( `LF_ISSET ( HAM_DEL_NO_CURSOR )) 1148 i(( t = `__hamc_upde ( dbc , 0, DB_HAM_CURADJ_DEL , 0)) != 0) 1149 ( t ); 1159 i( `LF_ISSET ( HAM_DEL_NO_RECLAIM ) || 1160 `NUM_ENT ( p ) != 0 || 1161 ( `PREV_PGNO ( p = PGNO_INVALID && `NEXT_PGNO (p) == PGNO_INVALID)) 1164 i( `PREV_PGNO ( p = PGNO_INVALID ) { 1169 i(( t = `__memp_fg ( mpf , & `NEXT_PGNO ( p ), dbc -> txn , 1170 DB_MPOOL_DIRTY , & n_g )) != 0) 1171 ( t ); 1173 i( `NEXT_PGNO ( n_g ! PGNO_INVALID && 1174 ( t = `__memp_fg ( mpf , & `NEXT_PGNO ( n_g ), dbc -> txn , 1175 DB_MPOOL_DIRTY , & _g )) != 0) 1176 r ; 1178 i( `DBC_LOGGING ( dbc )) { 1179 key_dbt . da = n_g ; 1180 key_dbt . size = dbp -> pgsize ; 1181 i(( t = `__ham_cyge_log ( dbp , 1182 dbc -> txn , & w_l , 0, `PGNO ( p ), 1183 & `LSN ( p ), `PGNO ( n_g ), &LSN(n_pagep), 1184 `NEXT_PGNO ( n_g ), 1185 _g = NULL ? NULL : & `LSN (nn_pagep), 1186 & key_dbt )) != 0) 1187 r ; 1189 `LSN_NOT_LOGGED ( w_l ); 1192 `LSN ( p w_l ; 1193 `LSN ( n_g w_l ; 1194 i( `NEXT_PGNO ( n_g ! PGNO_INVALID ) 1195 `LSN ( _g w_l ; 1197 i( _g ! NULL ) { 1198 `PREV_PGNO ( _g `PGNO ( p ); 1199 i(( t = `__memp_ut ( mpf , 1200 _g , dbc -> iܙy )) != 0) { 1201 _g = NULL ; 1202 r ; 1206 tmp_pgno = `PGNO ( p ); 1207 tmp_l = `LSN ( p ); 1208 `memy ( p , n_g , dbp -> pgsize ); 1209 `PGNO ( p tmp_pgno ; 1210 `LSN ( p tmp_l ; 1211 `PREV_PGNO ( p PGNO_INVALID ; 1217 i(( t = `__hamc_dpg ( dbc , `PGNO ( n_g ), 1218 `PGNO ( p ), 0, DB_HAM_DELFIRSTPG , & d )) != 0) 1219 r ; 1224 h -> dx = 0; 1225 h -> pgno = `PGNO ( p ); 1226 h -> d += order; 1228 i(( t = `__db_ ( dbc , n_g )) != 0) { 1229 n_g = NULL ; 1230 r ; 1233 i(( t = `__memp_fg ( mpf , & `PREV_PGNO ( p ), dbc -> txn , 1234 DB_MPOOL_DIRTY , & p_g )) != 0) 1235 r ; 1237 i( `NEXT_PGNO ( p ! PGNO_INVALID ) { 1238 i(( t = `__memp_fg ( mpf , & `NEXT_PGNO ( p ), dbc -> txn , 1239 DB_MPOOL_DIRTY , & n_g )) != 0) 1240 r ; 1241 n_l = & `LSN ( n_g ); 1243 n_g = NULL ; 1244 n_l = NULL ; 1247 `NEXT_PGNO ( p_g NEXT_PGNO( p ); 1248 i( n_g ! NULL ) 1249 `PREV_PGNO ( n_g `PGNO ( p_g ); 1251 i( `DBC_LOGGING ( dbc )) { 1252 i(( t = `__ham_wge_log ( dbp , dbc -> txn , 1253 & w_l , 0, DELOVFL , `PREV_PGNO ( p ), & `LSN ( p_g ), 1254 `PGNO ( p ), & `LSN ), `NEXT_PGNO ), n_l )) != 0) 1255 r ; 1257 `LSN_NOT_LOGGED ( w_l ); 1260 `LSN ( p_g w_l ; 1261 i( n_g ) 1262 `LSN ( n_g w_l ; 1263 `LSN ( p w_l ; 1265 i( `NEXT_PGNO ( p = PGNO_INVALID ) { 1274 h -> pgno = `PGNO ( p_g ); 1275 h -> dx = `NUM_ENT ( p_g ); 1276 = DB_HAM_DELLASTPG ; 1282 h -> pgno = `NEXT_PGNO ( p ); 1283 h -> dx = 0; 1284 = DB_HAM_DELMIDPG ; 1292 h -> ge = NULL ; 1293 chg_pgno = `PGNO ( p ); 1294 t = `__db_ ( dbc , p ); 1295 i(( t_t = `__memp_ut ( mpf , 1296 p_g , dbc -> iܙy )!0 && t == 0) 1297 t = t_t ; 1298 i( n_g ! NULL && ( t_t = `__memp_ut ( mpf , 1299 n_g , dbc -> iܙy )!0 && t == 0) 1300 t = t_t ; 1301 i( t != 0) 1302 ( t ); 1303 i(( t = `__hamc_dpg ( dbc , 1304 chg_pgno , h -> pgno , h-> dx , , & d )) != 0) 1305 ( t ); 1306 h -> d += order; 1308 ( t ); 1310 r : 1311 i( n_g ! NULL ) 1312 () `__memp_ut ( mpf , n_g , dbc -> iܙy ); 1313 i( _g ! NULL ) 1314 () `__memp_ut ( mpf , _g , dbc -> iܙy ); 1315 i( p_g ! NULL ) 1316 () `__memp_ut ( mpf , p_g , dbc -> iܙy ); 1317 ( t ); 1318 } } 1328 $__ham_ ( dbc , dbt , make_dup ) 1329 DBC * dbc ; 1330 DBT * dbt ; 1331 u_t32_t make_dup ; 1333 DB * dbp ; 1334 DBC ** ay , * dbc_n ; 1335 DBT d_dbt , tda , tmp , * w_dbt ; 1336 DB_ENV * dbv ; 1337 DB_LSN w_l ; 1338 HASH_CURSOR * h , * ; 1339 db_dx_t ig_dx ; 1340 db_pgno_t ig_pgno ; 1341 u_t32_t chge ; 1342 u_t32_t dup_ag , n , memsize , wn ; 1343 beyd_e , is_big , is_us , t , ty , i , found , t_t ; 1344 u_t8_t * beg , * de , * d , * hk , * c ; 1345 * memp ; 1363 dbp = dbc ->dbp; 1364 dbv = dbp ->dbenv; 1365 h = ( HASH_CURSOR *) dbc -> ; 1366 found = 0; 1367 dbc_n = memp = NULL ; 1368 ay = NULL ; 1379 i( dbt -> size > dbt-> dn ) { 1380 chge = dbt -> size - dbt-> dn ; 1381 is_us = 1; 1383 chge = dbt -> dn - dbt-> size ; 1384 is_us = 0; 1387 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1388 is_big = `HPAGE_PTYPE ( hk = H_OFFPAGE ; 1390 i( is_big ) 1391 `memy (& n , `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 1393 n = `LEN_HKEYDATA ( dbp , h -> ge , 1394 dbp -> pgsize , `H_DATAINDEX ( h -> dx )); 1396 beyd_e = dbt -> doff + dbt-> dn > n ; 1397 i( beyd_e ) { 1405 i( is_us ) 1406 chge + dbt -> doff + dbt-> dn - n ; 1407 i( dbt -> doff + dbt-> dn - n > chge ) { 1409 is_us = 1; 1410 chge = ( dbt -> doff + dbt-> dn - n ) - change; 1412 chge -( dbt -> doff + dbt-> dn - n ); 1415 wn = ( is_us ? n + chge :en - change); 1416 i( `ISBIG ( h , wn ) || 1417 ( is_us && chge > `P_FREESPACE ( dbp , h -> ge )) || 1418 beyd_e || is_big ) { 1424 i( is_us && dbc -> txn = NULL && 1425 dbp -> mpf -> m -> maxpgno != 0 && 1426 dbp -> mpf -> m -> maxpgno =dbp->mpf->m-> ϡ_pgno ) 1427 ( `__db_a_r ( dbp )); 1439 `memt (& tmp , 0, (tmp)); 1440 i(( t = `__db_t ( dbp , dbc -> txn , 1441 h -> ge , `H_KEYINDEX (h-> dx ), & tmp , 1442 & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 1443 ( t ); 1450 ig_pgno = `PGNO ( h -> ge ); 1451 ig_dx = h -> dx ; 1452 i(( t = `__ham_g_i ( dbp , 1453 ig_pgno , ig_dx , & ay )) != 0) 1454 r ; 1457 dup_ag = `F_ISSET ( h , H_ISDUP ); 1458 i( dbt -> doff =0 && dbt-> dn = n ) { 1459 ty = ( dup_ag ? H_DUPLICATE : H_KEYDATA ); 1460 w_dbt = dbt ; 1462 ty = `HPAGE_PTYPE ( hk ! H_OFFPAGE ? 1463 `HPAGE_PTYPE ( hk : H_KEYDATA ; 1464 `memt (& tda , 0, (tdata)); 1465 memsize = 0; 1466 i(( t = `__db_t ( dbp , dbc -> txn , h -> ge , 1467 `H_DATAINDEX ( h -> dx ), & tda , & memp , & memsize )) 1469 r ; 1472 i( is_us ) { 1473 i(( t = `__os_loc ( dbv , 1474 tda . size + chge , &tda. da )) != 0) 1475 ( t ); 1476 memp = tda . da ; 1477 memsize = tda . size + chge ; 1478 `memt (( u_t8_t *) tda . da +da. size , 1479 0, chge ); 1481 d = ( u_t8_t *) tda . da +da. size ; 1483 c = ( u_t8_t *) tda . da + dbt -> doff + dbt-> dn ; 1484 i( c < d && tda . size > dbt -> doff + dbt-> dn ) { 1485 n = tda . size - ( dbt -> doff + dbt-> dn ); 1486 i( is_us ) 1487 de = c + chge ; 1489 de = c - chge ; 1490 `memmove ( de , c , n ); 1492 `memy (( u_t8_t *) tda . da + dbt -> doff , 1493 dbt -> da , dbt-> size ); 1494 i( is_us ) 1495 tda . size + chge ; 1497 tda . size - chge ; 1498 w_dbt = & tda ; 1500 i(( t = `__ham_d_ ( dbc , HAM_DEL_NO_CURSOR )) != 0) 1501 r ; 1508 i(( t = `__dbc_dup ( dbc , & dbc_n , DB_POSITION )) != 0) 1509 r ; 1510 i(( t = `__ham_add_ ( dbc , & tmp , w_dbt , ty )) != 0) 1511 r ; 1512 `F_SET ( h , dup_ag ); 1520 i((( HASH_CURSOR *) dbc_n -> )-> pgno ! h ->pgno || 1521 (( HASH_CURSOR *) dbc_n -> )-> dx ! h ->indx) { 1529 i( ay ! NULL ) { 1530 i = 0; ay [i] ! NULL ; i++) { 1531 = ( HASH_CURSOR *) ay [ i ]-> ; 1532 -> pgno = h ->pgno; 1533 -> dx = h ->indx; 1534 `F_CLR ( , H_DELETED ); 1535 found = 1; 1542 i( found && `DBC_LOGGING ( dbc ) && 1543 `IS_SUBTRANSACTION ( dbc -> txn )) { 1544 i(( t = 1545 `__ham_chgpg_log ( dbp , 1546 dbc -> txn , & w_l , 0, 1547 DB_HAM_CHGPG , ig_pgno , h -> pgno , 1548 ig_dx , h -> dx )) != 0) 1549 r ; 1557 t = `__hamc_upde ( dbc_n , 0, DB_HAM_CURADJ_DEL , 0); 1560 r : i( dbc_n ! NULL && ( t_t = `__dbc_o (dbc_n)) != 0 && 1561 t == 0) 1562 t = t_t ; 1563 i( ay ! NULL ) 1564 `__os_ ( dbv , ay ); 1565 i( memp ! NULL ) 1566 `__os_ ( dbv , memp ); 1567 ( t ); 1574 beg = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 1575 beg + dbt -> doff ; 1582 i( `DBC_LOGGING ( dbc )) { 1583 d_dbt . da = beg ; 1584 d_dbt . size = dbt -> dn ; 1585 i(( t = `__ham_a_log ( dbp , 1586 dbc -> txn , & w_l , 0, `PGNO ( h -> ge ), 1587 ( u_t32_t ) `H_DATAINDEX ( h -> dx ), & `LSN (h-> ge ), 1588 ( t32_t ) dbt -> doff , & d_dbt , dbt, make_dup )) != 0) 1589 ( t ); 1591 `LSN_NOT_LOGGED ( w_l ); 1593 `LSN ( h -> ge w_l ; 1595 `__ham_ڷge_a ( dbp , h -> ge , ( u_t32_t ) `H_DATAINDEX (h-> dx ), 1596 ( t32_t ) dbt -> doff , chge , is_us , dbt); 1599 } } 1617 $__ham_ڷge_a ( dbp , g , ndx , off , chge , is_us , dbt ) 1618 DB * dbp ; 1619 PAGE * g ; 1620 u_t32_t ndx ; 1621 t32_t off ; 1622 u_t32_t chge ; 1623 is_us ; 1624 DBT * dbt ; 1626 db_dx_t i , * p ; 1627 t32_t n ; 1628 size_t pgsize ; 1629 u_t8_t * c , * de ; 1630 zo_me ; 1632 pgsize = dbp ->pgsize; 1633 p = `P_INP ( dbp , g ); 1634 i( chge != 0) { 1635 zo_me = 0; 1636 c = ( u_t8_t *)( g + `HOFFSET (pagep); 1637 i( off < 0) 1638 n = p [ ndx ] - `HOFFSET ( g ); 1639 i(( u_t32_t ) off >= 1640 `LEN_HKEYDATA ( dbp , g , pgsize , ndx )) { 1641 n = ( t32_t )( `HKEYDATA_DATA ( `P_ENTRY ( dbp , g , ndx )) 1642 + `LEN_HKEYDATA ( dbp , g , pgsize , ndx - c ); 1643 zo_me = 1; 1645 n = ( t32_t )( 1646 ( `HKEYDATA_DATA ( `P_ENTRY ( dbp , g , ndx )+ off ) - 1647 c ); 1648 i( is_us ) 1649 de = c - chge ; 1651 de = c + chge ; 1652 `memmove ( de , c , ( size_t ) n ); 1653 i( zo_me ) 1654 `memt ( de + n , 0, chge ); 1657 i = ndx ; i < `NUM_ENT ( g ); i++) { 1658 i( is_us ) 1659 p [ i ] - chge ; 1661 p [ i ] + chge ; 1663 i( is_us ) 1664 `HOFFSET ( g - chge ; 1666 `HOFFSET ( g + chge ; 1668 i( off >= 0) 1669 `memy ( `HKEYDATA_DATA ( `P_ENTRY ( dbp , g , ndx )+ off , 1670 dbt -> da , dbt-> size ); 1672 `memy ( `P_ENTRY ( dbp , g , ndx ), dbt -> da , dbt-> size ); 1673 } } 1679 $__ham_l_ge ( dbc , obuck , nbuck ) 1680 DBC * dbc ; 1681 u_t32_t obuck , nbuck ; 1683 DB * dbp ; 1684 DBC ** ay , * tmp_dbc ; 1685 DBT key , ge_dbt ; 1686 DB_ENV * dbv ; 1687 DB_LOCK block ; 1688 DB_LSN w_l ; 1689 DB_MPOOLFILE * mpf ; 1690 HASH_CURSOR * h , * ; 1691 PAGE ** , * d_g , * mp_g , * w_g ; 1692 db_dx_t n , de_dx ; 1693 db_pgno_t buck_pgno , gno , xt_pgno ; 1694 u_t32_t big_n , n ; 1695 found , i , t , t_t ; 1696 * big_buf ; 1698 dbp = dbc ->dbp; 1699 ay = NULL ; 1700 dbv = dbp ->dbenv; 1701 mpf = dbp ->mpf; 1702 h = ( HASH_CURSOR *) dbc -> ; 1703 mp_g = d_g = w_g = NULL ; 1704 gno = PGNO_INVALID ; 1705 `LOCK_INIT ( block ); 1707 buck_pgno = `BUCKET_TO_PAGE ( h , obuck ); 1708 i(( t = `__db_lg ( dbc , 1709 0, buck_pgno , DB_LOCK_WRITE , 0, & block )) != 0) 1710 r ; 1711 i(( t = `__memp_fg ( mpf , & buck_pgno , dbc -> txn , 1712 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & d_g )) != 0) 1713 r ; 1716 i( d_g -> ty = P_HASH_UNSORTED ) 1717 i(( t = `__ham_st_ge_curs ( dbc , d_g )) != 0) 1718 ( t ); 1721 gno = `BUCKET_TO_PAGE ( h , nbuck ); 1722 i(( t = `__memp_fg ( mpf , & gno , dbc -> txn , 1723 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & w_g )) != 0) 1724 r ; 1725 `P_INIT ( w_g , 1726 dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1728 mp_g = h -> l_buf ; 1729 `memy ( mp_g , d_g , dbp -> pgsize ); 1731 i( `DBC_LOGGING ( dbc )) { 1732 ge_dbt . size = dbp -> pgsize ; 1733 ge_dbt . da = d_g ; 1734 i(( t = `__ham_lda_log ( dbp , 1735 dbc -> txn , & w_l , 0, SPLITOLD , 1736 `PGNO ( d_g ), & ge_dbt , & `LSN (old_pagep))) != 0) 1737 r ; 1739 `LSN_NOT_LOGGED ( w_l ); 1741 `LSN ( d_g w_l ; 1743 `P_INIT ( d_g , dbp -> pgsize , `PGNO (d_g), PGNO_INVALID , 1744 PGNO_INVALID , 0, P_HASH ); 1746 big_n = 0; 1747 big_buf = NULL ; 1748 `memt (& key , 0, (key)); 1749 mp_g ! NULL ) { 1750 i(( t = `__ham_g_i ( dbp , 1751 `PGNO ( mp_g ), NDX_INVALID , & ay )) != 0) 1752 r ; 1754 n = 0; < ( db_dx_t ) `NUM_ENT ( mp_g ); += 2) { 1755 i(( t = `__db_t ( dbp , dbc -> txn , mp_g , 1756 `H_KEYINDEX ( n ), & key , & big_buf , & big_n )) != 0) 1757 r ; 1759 i( `__ham__hash ( dbc , key . da , key. size = obuck ) 1760 = & d_g ; 1762 = & w_g ; 1768 n = `LEN_HITEM ( dbp , mp_g , dbp-> pgsize , 1769 `H_DATAINDEX ( n )) + 1770 `LEN_HITEM ( dbp , mp_g , dbp-> pgsize , 1771 `H_KEYINDEX ( n )) + 1772 2 * ( db_dx_t ); 1774 i( `P_FREESPACE ( dbp , * < n ) { 1775 i( `DBC_LOGGING ( dbc )) { 1776 ge_dbt . size = dbp -> pgsize ; 1777 ge_dbt . da = * ; 1778 i(( t = `__ham_lda_log ( dbp , 1779 dbc -> txn , & w_l , 0, 1780 SPLITNEW , `PGNO (* ), & ge_dbt , 1781 & `LSN (* ))) != 0) 1782 r ; 1784 `LSN_NOT_LOGGED ( w_l ); 1785 `LSN (* w_l ; 1786 i(( t = 1787 `__ham_add_ovge ( dbc , * , 1,p)) != 0) 1788 r ; 1791 de_dx = NDX_INVALID ; 1792 i(( t = `__ham_cy ( dbp , dbc -> txn , mp_g , 1793 `H_KEYINDEX ( n ), * , & de_dx )) != 0) 1794 r ; 1817 i( `PGNO ( mp_g ! buck_pgno ) { 1818 i(( t = `__db_curs_t ( dbp , dbc -> txn , 1819 dbp -> ty , PGNO_INVALID , 0, 1820 DB_LOCK_INVALIDID , & tmp_dbc )) != 0) 1821 r ; 1822 h = ( HASH_CURSOR *) tmp_dbc -> ; 1823 h -> pgno = `PGNO (* ); 1824 h -> dx = de_dx ; 1825 h -> dup_off = 0; 1826 h -> d = 0; 1827 i(( t = `__hamc_upde ( 1828 tmp_dbc , n , DB_HAM_CURADJ_ADD , 0)) != 0) 1829 r ; 1830 i(( t = `__dbc_o ( tmp_dbc )) != 0) 1831 r ; 1834 i( ay ! NULL ) { 1835 found = 0; 1836 i = 0; ay [i] ! NULL ; i++) { 1837 = 1838 ( HASH_CURSOR *) ay [ i ]-> ; 1839 i( -> pgno = `PGNO ( mp_g ) && 1840 -> dx = n ) { 1841 -> pgno = `PGNO (* ); 1842 -> dx = de_dx ; 1843 found = 1; 1851 i( found && `DBC_LOGGING ( dbc ) && 1852 `IS_SUBTRANSACTION ( dbc -> txn )) { 1853 i(( t = 1854 `__ham_chgpg_log ( dbp , 1855 dbc -> txn , & w_l , 0, 1856 DB_HAM_SPLIT , `PGNO ( mp_g ), 1857 `PGNO (* ), n , de_dx )) != 0) 1858 r ; 1862 xt_pgno = `NEXT_PGNO ( mp_g ); 1865 i( `PGNO ( mp_g ! buck_pgno && ( t = 1866 `__db_ ( dbc , mp_g )) != 0) { 1867 mp_g = NULL ; 1868 r ; 1871 i( xt_pgno = PGNO_INVALID ) 1872 mp_g = NULL ; 1873 i(( t = `__memp_fg ( mpf , & xt_pgno , dbc -> txn , 1874 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & mp_g )) != 0) 1875 r ; 1877 i( mp_g ! NULL ) { 1878 i( `DBC_LOGGING ( dbc )) { 1879 ge_dbt . size = dbp -> pgsize ; 1880 ge_dbt . da = mp_g ; 1881 i(( t = `__ham_lda_log ( dbp , 1882 dbc -> txn , & w_l , 0, 1883 SPLITOLD , `PGNO ( mp_g ), 1884 & ge_dbt , & `LSN ( mp_g ))) != 0) 1885 r ; 1887 `LSN_NOT_LOGGED ( w_l ); 1888 `LSN ( mp_g w_l ; 1891 i( ay ! NULL ) 1892 `__os_ ( dbv , ay ); 1893 ay = NULL ; 1895 i( big_buf ! NULL ) 1896 `__os_ ( dbv , big_buf ); 1903 i( mp_g ! NULL && `PGNO emp_g! buck_pgno && 1904 ( t = `__db_ ( dbc , mp_g )) != 0) { 1905 mp_g = NULL ; 1906 r ; 1912 i( `DBC_LOGGING ( dbc )) { 1913 ge_dbt . size = dbp -> pgsize ; 1914 ge_dbt . da = d_g ; 1915 i(( t = `__ham_lda_log ( dbp , dbc -> txn , 1916 & w_l , 0, SPLITNEW , `PGNO ( d_g ), & ge_dbt , 1917 & `LSN ( d_g ))) != 0) 1918 r ; 1919 `LSN ( d_g w_l ; 1921 ge_dbt . da = w_g ; 1922 i(( t = `__ham_lda_log ( dbp , dbc -> txn , & w_l , 0, 1923 SPLITNEW , `PGNO ( w_g ), & ge_dbt , 1924 & `LSN ( w_g ))) != 0) 1925 r ; 1926 `LSN ( w_g w_l ; 1928 `LSN_NOT_LOGGED ( `LSN ( d_g )); 1929 `LSN_NOT_LOGGED ( `LSN ( w_g )); 1932 t = `__memp_ut ( mpf , d_g , dbc -> iܙy ); 1933 i(( t_t = 1934 `__memp_ut ( mpf , w_g , dbc -> iܙy )!0 && t == 0) 1935 t = t_t ; 1938 r : i( d_g ! NULL ) 1939 () `__memp_ut ( mpf , d_g , dbc -> iܙy ); 1940 i( w_g ! NULL ) { 1941 `P_INIT ( w_g , dbp -> pgsize , 1942 gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1943 () `__memp_ut ( mpf , w_g , dbc -> iܙy ); 1945 i( mp_g ! NULL && `PGNO emp_g! buck_pgno ) 1946 () `__memp_ut ( mpf , mp_g , dbc -> iܙy ); 1948 i(( t_t = `__TLPUT ( dbc , block )!0 && t == 0) 1949 t = t_t ; 1950 i( ay ! NULL ) 1951 `__os_ ( dbv , ay ); 1952 ( t ); 1953 } } 1965 $__ham_add_ ( dbc , key , v , ty ) 1966 DBC * dbc ; 1967 cڡ DBT * key , * v ; 1968 ty ; 1970 cڡ DBT * pkey , * pda ; 1971 DB * dbp ; 1972 DBT key_dbt , da_dbt ; 1973 DB_LSN w_l ; 1974 DB_MPOOLFILE * mpf ; 1975 HASH_CURSOR * h ; 1976 HOFFPAGE doff , koff ; 1977 db_pgno_t xt_pgno , pgno ; 1978 u_t32_t da_size , key_size ; 1979 u_t32_t ges , gea , size , y ; 1980 do_exnd , da_ty , is_keybig , is_dabig , key_ty , mch , t ; 1982 dbp = dbc ->dbp; 1983 mpf = dbp ->mpf; 1984 h = ( HASH_CURSOR *) dbc -> ; 1985 do_exnd = 0; 1987 pgno = h -> ek_found_ge ! PGNO_INVALID ? 1988 h -> ek_found_ge : h-> pgno ; 1989 i( h -> ge = NULL && ( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 1990 DB_MPOOL_CREATE , & h -> ge )) != 0) 1991 ( t ); 1993 key_size = `HKEYDATA_PSIZE ( key -> size ); 1994 da_size = `HKEYDATA_PSIZE ( v -> size ); 1995 is_keybig = `ISBIG ( h , key -> size ); 1996 is_dabig = `ISBIG ( h , v -> size ); 1997 i( is_keybig ) 1998 key_size = HOFFPAGE_PSIZE ; 1999 i( is_dabig ) 2000 da_size = HOFFPAGE_PSIZE ; 2002 size = key_size + da_size ; 2005 `H_NUMPAIRS ( h -> ge && `NEXT_PGNO (h->ge! PGNO_INVALID ) { 2011 i( `P_FREESPACE ( dbp , h -> ge > size ) 2013 xt_pgno = `NEXT_PGNO ( h -> ge ); 2014 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 2015 ( t ); 2021 i( `P_FREESPACE ( dbp , h -> ge < size ) { 2022 do_exnd = 1; 2023 i(( t = `__memp_dty ( mpf , 2024 & h -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 2025 ( t ); 2026 i(( t = `__ham_add_ovge ( dbc , 2027 ( PAGE *) h -> ge , 1, (PAGE **)&hcp->page)) != 0) 2028 ( t ); 2029 h -> pgno = `PGNO (h-> ge ); 2036 i( dbc -> txn = NULL && 2037 dbp -> mpf -> m -> maxpgno !0 && ( is_keybig || is_dabig )) { 2038 gea = `P_MAXSPACE ( dbp , dbp-> pgsize ); 2039 ges = 0; 2040 i( is_dabig ) 2041 ges = (( da_size - 1/ gea ) + 1; 2042 i( is_keybig ) { 2043 ges +(( key -> size - 1/ gea ) + 1; 2044 i( ges > 2045 ( dbp -> mpf -> m -> maxpgno - dbp->mpf->m-> ϡ_pgno )) 2046 ( `__db_a_r ( dbp )); 2050 i(( t = `__memp_dty ( mpf , 2051 & h -> ge , dbc -> txn , dbc-> iܙy , 0)) != 0) 2052 ( t ); 2057 h -> dx = h-> ek_found_dx ; 2058 `F_CLR ( h , H_DELETED ); 2059 i( is_keybig ) { 2060 koff . ty = H_OFFPAGE ; 2061 `UMRW_SET ( koff . unud [0]); 2062 `UMRW_SET ( koff . unud [1]); 2063 `UMRW_SET ( koff . unud [2]); 2064 i(( t = `__db_poff ( dbc , key , & koff . pgno )) != 0) 2065 ( t ); 2066 koff . = key -> size ; 2067 key_dbt . da = & koff ; 2068 key_dbt . size = ( koff ); 2069 pkey = & key_dbt ; 2070 key_ty = H_OFFPAGE ; 2072 pkey = key ; 2073 key_ty = H_KEYDATA ; 2076 i( is_dabig ) { 2077 doff . ty = H_OFFPAGE ; 2078 `UMRW_SET ( doff . unud [0]); 2079 `UMRW_SET ( doff . unud [1]); 2080 `UMRW_SET ( doff . unud [2]); 2081 i(( t = `__db_poff ( dbc , v , & doff . pgno )) != 0) 2082 ( t ); 2083 doff . = v -> size ; 2084 da_dbt . da = & doff ; 2085 da_dbt . size = ( doff ); 2086 pda = & da_dbt ; 2087 da_ty = H_OFFPAGE ; 2089 pda = v ; 2090 da_ty = ty ; 2094 i((( PAGE *) h -> ge )-> ty = P_HASH_UNSORTED ) 2095 i(( t = `__ham_st_ge_curs ( dbc , h -> ge )) != 0) 2096 ( t ); 2105 i( `PGNO ( h -> ge !h-> ek_found_ge ) { 2106 i(( t = `__ham_gdex ( dbp , dbc -> txn , h -> ge , pkey , 2107 key_ty , & mch , & h -> ek_found_dx )) != 0) 2108 ( t ); 2109 h -> ek_found_ge = `PGNO (h-> ge ); 2111 `DB_ASSERT ( dbp -> dbv , h -> ek_found_dx < `NUM_ENT (h-> ge )); 2114 i( `DBC_LOGGING ( dbc )) { 2115 y = PUTPAIR ; 2116 i( is_dabig ) 2117 y | PAIR_DATAMASK ; 2118 i( is_keybig ) 2119 y | PAIR_KEYMASK ; 2120 i( ty = H_DUPLICATE ) 2121 y | PAIR_DUPMASK ; 2123 i(( t = `__ham_sd_log ( dbp , dbc -> txn , & w_l , 0, 2124 y , `PGNO ( h -> ge ), ( u_t32_t )h-> ek_found_dx , 2125 & `LSN ( h -> ge ), pkey , pda )) != 0) 2126 ( t ); 2128 `LSN_NOT_LOGGED ( w_l ); 2131 `LSN ( h -> ge w_l ; 2133 i(( t = `__ham_ ( dbp , dbc -> txn , h -> ge , 2134 & h -> ek_found_dx , pkey , pda , key_ty , da_ty )) != 0) 2135 ( t ); 2141 i(( t = `__hamc_upde ( dbc , size , DB_HAM_CURADJ_ADD , 0)) != 0) 2142 ( t ); 2151 h -> pgno = `PGNO (h-> ge ); 2160 h -> dx = h-> ek_found_dx ; 2166 i(! `STD_LOCKING ( dbc )) { 2167 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 2168 ( t ); 2169 h -> hdr -> m ++; 2172 i( do_exnd || ( h -> hdr -> f != 0 && 2173 ( u_t32_t ) `H_NUMPAIRS ( h -> ge > h-> hdr -> f )) 2174 `F_SET ( h , H_EXPAND ); 2176 } } 2193 $__ham_cy ( dbp , txn , c_ge , c_ndx , de_ge , de_dx ) 2194 DB * dbp ; 2195 DB_TXN * txn ; 2196 PAGE * c_ge ; 2197 u_t32_t c_ndx ; 2198 PAGE * de_ge ; 2199 db_dx_t * de_dx ; 2201 DBT tkey , tda ; 2202 db_dx_t kdx , ddx ; 2203 kty , dty , t ; 2205 t = 0; 2206 `memt (& tkey , 0, (tkey)); 2207 `memt (& tda , 0, (tdata)); 2209 kty = `HPAGE_TYPE ( dbp , c_ge , `H_KEYINDEX ( c_ndx )); 2210 dty = `HPAGE_TYPE ( dbp , c_ge , `H_DATAINDEX ( c_ndx )); 2211 kdx = `H_KEYINDEX ( c_ndx ); 2212 ddx = `H_DATAINDEX ( c_ndx ); 2213 i( kty = H_OFFPAGE ) { 2214 tkey . da = `P_ENTRY ( dbp , c_ge , kdx ); 2215 tkey . size = `LEN_HITEM ( dbp , c_ge , dbp-> pgsize , kdx ); 2217 tkey . da = `HKEYDATA_DATA ( `P_ENTRY ( dbp , c_ge , kdx )); 2218 tkey . size = `LEN_HKEYDATA ( dbp , c_ge , dbp-> pgsize , kdx ); 2220 i( dty = H_OFFPAGE ) { 2221 tda . da = `P_ENTRY ( dbp , c_ge , ddx ); 2222 tda . size = `LEN_HITEM ( dbp , c_ge , dbp-> pgsize , ddx ); 2224 tda . da = `HKEYDATA_DATA ( `P_ENTRY ( dbp , c_ge , ddx )); 2225 tda . size = `LEN_HKEYDATA ( dbp , c_ge , dbp-> pgsize , ddx ); 2227 i(( t = `__ham_ ( dbp , txn , de_ge , de_dx , 2228 & tkey , & tda , kty , dty )) != 0) 2229 ( t ); 2231 ( t ); 2232 } } 2243 $__ham_add_ovge ( dbc , g , a , ) 2244 DBC * dbc ; 2245 PAGE * g ; 2246 a ; 2247 PAGE ** ; 2249 DB * dbp ; 2250 DB_LSN w_l ; 2251 DB_MPOOLFILE * mpf ; 2252 PAGE * w_g ; 2253 t ; 2255 dbp = dbc ->dbp; 2256 mpf = dbp ->mpf; 2258 `DB_ASSERT ( dbp -> dbv , `IS_DIRTY ( g )); 2260 i(( t = `__db_w ( dbc , P_HASH , & w_g )) != 0) 2261 ( t ); 2263 i( `DBC_LOGGING ( dbc )) { 2264 i(( t = `__ham_wge_log ( dbp , dbc -> txn , & w_l , 0, 2265 PUTOVFL , `PGNO ( g ), & `LSN ag), PGNO( w_g ), 2266 & `LSN ( w_g ), PGNO_INVALID , NULL )) != 0) { 2267 () `__memp_ut ( mpf , g , dbc -> iܙy ); 2268 ( t ); 2271 `LSN_NOT_LOGGED ( w_l ); 2274 `LSN ( g LSN( w_g w_l ; 2275 `NEXT_PGNO ( g `PGNO ( w_g ); 2277 `PREV_PGNO ( w_g `PGNO ( g ); 2279 i( a ) 2280 t = `__memp_ut ( mpf , g , dbc -> iܙy ); 2282 * = w_g ; 2283 ( t ); 2284 } } 2290 $__ham_g_age ( dbc , mode ) 2291 DBC * dbc ; 2292 db_lockmode_t mode ; 2294 DB * dbp ; 2295 DB_LOCK tmp_lock ; 2296 DB_MPOOLFILE * mpf ; 2297 HASH_CURSOR * h ; 2298 t ; 2300 dbp = dbc ->dbp; 2301 mpf = dbp ->mpf; 2302 h = ( HASH_CURSOR *) dbc -> ; 2303 t = 0; 2316 `LOCK_INIT ( tmp_lock ); 2317 i( `STD_LOCKING ( dbc )) { 2318 i( h -> lbuck !h-> buck ) { 2319 i(( t = `__TLPUT ( dbc , h -> lock )) != 0) 2320 ( t ); 2321 `LOCK_INIT ( h -> lock ); 2328 i(( `LOCK_ISSET ( h -> lock ) && 2329 (( h -> lock_mode = DB_LOCK_READ || 2330 `F_ISSET ( dbp , DB_AM_READ_UNCOMMITTED )) && 2331 mode = DB_LOCK_WRITE ))) { 2333 tmp_lock = h -> lock ; 2334 `LOCK_INIT ( h -> lock ); 2338 i(! `LOCK_ISSET ( h -> lock )) 2340 i(( t = `__ham_lock_buck ( dbc , mode )) != 0) 2341 ( t ); 2343 i( t == 0) { 2344 h -> lock_mode = mode ; 2345 h -> lbuck = h-> buck ; 2347 i(( t = `__ENV_LPUT ( dbp -> dbv , tmp_lock )) != 0) 2348 ( t ); 2349 } i( `LOCK_ISSET ( tmp_lock )) 2350 h -> lock = tmp_lock ; 2353 i( t =0 && h -> ge = NULL ) { 2354 i( h -> pgno = PGNO_INVALID ) 2355 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 2356 i(( t = `__memp_fg ( mpf , & h -> pgno , dbc -> txn , 2357 DB_MPOOL_CREATE , & h -> ge )) != 0) 2358 ( t ); 2361 } } 2371 $__ham_xt_age ( dbc , pgno ) 2372 DBC * dbc ; 2373 db_pgno_t pgno ; 2375 DB * dbp ; 2376 DB_MPOOLFILE * mpf ; 2377 HASH_CURSOR * h ; 2378 PAGE * p ; 2379 t ; 2381 dbp = dbc ->dbp; 2382 mpf = dbp ->mpf; 2383 h = ( HASH_CURSOR *) dbc -> ; 2385 i( h -> ge ! NULL && 2386 ( t = `__memp_ut ( mpf , h -> ge , dbc -> iܙy )) != 0) 2387 ( t ); 2388 h -> ge = NULL ; 2390 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 2391 DB_MPOOL_CREATE , & p )) != 0) 2392 ( t ); 2394 h -> ge = p ; 2395 h -> pgno =gno; 2396 h -> dx = 0; 2399 } } 2408 $__ham_lock_buck ( dbc , mode ) 2409 DBC * dbc ; 2410 db_lockmode_t mode ; 2412 HASH_CURSOR * h ; 2413 db_pgno_t pgno ; 2414 gma , t ; 2416 h = ( HASH_CURSOR *) dbc -> ; 2417 gma = h -> hdr = NULL ? 1 : 0; 2418 i( gma ) 2419 i(( t = `__ham_g_ma ( dbc )) != 0) 2420 ( t ); 2421 pgno = `BUCKET_TO_PAGE ( h , h-> buck ); 2422 i( gma ) 2423 i(( t = `__ham_a_ma ( dbc )) != 0) 2424 ( t ); 2426 t = `__db_lg ( dbc , 0, pgno , mode , 0, & h -> lock ); 2428 h -> lock_mode = mode ; 2429 ( t ); 2430 } } 2444 $__ham_d ( dbp , p , dx ) 2445 DB * dbp ; 2446 PAGE * p ; 2447 u_t32_t dx ; 2449 db_dx_t d , n , * p ; 2450 u_t8_t * de , * c ; 2452 p = `P_INP ( dbp , p ); 2458 d = `H_PAIRSIZE ( dbp , p , dbp-> pgsize , dx ); 2465 i(( db_dx_t ) dx ! `NUM_ENT ( p ) - 2) { 2470 c = ( u_t8_t *) p + `HOFFSET (p); 2476 de = c + d ; 2477 `memmove ( de , c , p [ `H_DATAINDEX ( dx )] - `HOFFSET ( p )); 2481 `HOFFSET ( p HOFFSET+ d ; 2482 `NUM_ENT ( p ) = NUM_ENT(p) - 2; 2485 n = ( db_dx_t ) dx ; < (db_dx_t)( `NUM_ENT ( p ));++) 2486 p [ n ] = i[+ 2] + d ; 2488 } } 2521 $__hamc_dpg ( dbc , d_pgno , w_pgno , num_t , , dp ) 2522 DBC * dbc ; 2523 db_pgno_t d_pgno , w_pgno ; 2524 u_t32_t num_t ; 2525 db_ham_mode ; 2526 u_t32_t * dp ; 2528 DB * dbp , * ldbp ; 2529 DBC * ; 2530 DB_ENV * dbv ; 2531 DB_LSN l ; 2532 DB_TXN * my_txn ; 2533 HASH_CURSOR * h ; 2534 db_dx_t dx ; 2535 u_t32_t d ; 2536 found , t ; 2539 dx = ( = DB_HAM_DELLASTPG ? num_t : 0; 2541 dbp = dbc ->dbp; 2542 dbv = dbp ->dbenv; 2544 my_txn = `IS_SUBTRANSACTION ( dbc -> txn ? dbc->tx: NULL ; 2545 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 2550 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 2551 d = 1; 2552 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 2553 ldbp = `TAILQ_NEXT dbp, dblilks )) { 2554 `MUTEX_LOCK ( dbv , dbp -> mux ); 2555 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 2556 i( = dbc || cp-> dbty ! DB_HASH ) 2558 h = ( HASH_CURSOR *) -> ; 2559 i( h -> pgno = w_pgno && 2560 ! `MVCC_SKIP_CURADJ ( , w_pgno )) { 2561 i( h -> dx == indx && 2562 `F_ISSET ( h , H_DELETED ) && 2563 h -> d >= order) 2564 d = h ->order + 1; 2565 `DB_ASSERT ( dbv , ! DB_HAM_DELFIRSTPG || 2566 h -> dx = NDX_INVALID || 2567 ( h -> dx == 0 && 2568 `F_ISSET ( h , H_DELETED ))); 2571 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 2574 `FIND_FIRST_DB_MATCH ( dbv , dbp , ldbp ); 2575 found = 0; 2576 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 2577 ldbp = `TAILQ_NEXT dbp, dblilks )) { 2578 `MUTEX_LOCK ( dbv , dbp -> mux ); 2579 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 2580 i( = dbc || cp-> dbty ! DB_HASH ) 2583 h = ( HASH_CURSOR *) -> ; 2585 i( h -> pgno = d_pgno && 2586 ! `MVCC_SKIP_CURADJ ( , d_pgno )) { 2587 ) { 2588 DB_HAM_DELFIRSTPG : 2593 h -> pgno = w_pgno ; 2599 i( h -> dx == indx) 2600 h -> d += order; 2602 DB_HAM_DELMIDPG : 2603 h -> pgno = w_pgno ; 2604 `DB_ASSERT ( dbv , h -> dx == 0 && 2605 `F_ISSET ( h , H_DELETED )); 2606 h -> d += order; 2608 DB_HAM_DELLASTPG : 2609 h -> pgno = w_pgno ; 2610 `DB_ASSERT ( dbv , h -> dx == 0 && 2611 `F_ISSET ( h , H_DELETED )); 2612 h -> dx = indx; 2613 h -> d += order; 2616 ( `__db_unknown_th ( 2617 dbv , "__hamc_delpg")); 2619 i( my_txn ! NULL && -> txn != my_txn) 2620 found = 1; 2623 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 2625 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 2627 i( found !0 && `DBC_LOGGING ( dbc )) { 2628 i(( t = `__ham_chgpg_log ( dbp , my_txn , & l , 0, , 2629 d_pgno , w_pgno , dx , d )) != 0) 2630 ( t ); 2632 * dp = d ; 2634 } } @../hash/hash_rec.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 49 ~"dbc/hash.h " 50 ~"dbc/log.h " 51 ~"dbc/mp.h " 53 __ham_loc_ges __P (( DB *, __ham_grouoc_gs *, DB_LSN *)); 54 __ham_loc_ges_42 55 __P (( DB *, __ham_grouoc_42_gs *, DB_LSN *)); 64 $__ham_sd_cov ( dbv , db , lp , , fo ) 65 DB_ENV * dbv ; 66 DBT * db ; 67 DB_LSN * lp ; 68 db_cs ; 69 * fo ; 71 __ham_sd_gs * gp ; 72 DB * fe_dbp ; 73 DBC * dbc ; 74 DB_MPOOLFILE * mpf ; 75 PAGE * g ; 76 db_dx_t ddx ; 77 u_t32_t code ; 78 cmp_n , cmp_p , dty , kty , t ; 80 g = NULL ; 82 `REC_PRINT ( __ham_sd_t ); 83 `REC_INTRO ( __ham_sd_ad , 1, 0); 85 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 86 0, & g )) != 0) { 87 i( `DB_UNDO ( )) { 88 i( t = DB_PAGE_NOTFOUND ) 89 de ; 91 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 92 out ; 95 #ifde HAVE_FTRUNCATE 97 i(! `IS_ZERO_LSN ( gp -> g )) 98 de ; 105 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 106 DB_MPOOL_CREATE , & g )) != 0) { 107 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 108 out ; 112 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 113 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 114 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 126 code = `OPCODE_OF ( gp ->opcode); 127 i(( code = DELPAIR && cmp_n =0 && `DB_UNDO ( )) || 128 ( code = PUTPAIR && cmp_p =0 && `DB_REDO ( ))) { 132 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 133 kty = `DB_UNDO ( || `PAIR_ISKEYBIG ( gp -> code ) ? 134 H_OFFPAGE : H_KEYDATA ; 135 i( `PAIR_ISDATADUP ( gp -> code )) 136 dty = H_DUPLICATE ; 137 i( `DB_UNDO ( || `PAIR_ISDATABIG ( gp -> code )) 138 dty = H_OFFPAGE ; 140 dty = H_KEYDATA ; 141 ddx = ( db_dx_t ) gp -> ndx ; 142 i(( t = `__ham_ ( fe_dbp , NULL , g , & ddx , 143 & gp -> key , &gp-> da , kty , dty )) != 0) 144 out ; 145 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 146 } i(( code = DELPAIR && cmp_p =0 && `DB_REDO ( )) || 147 ( code = PUTPAIR && cmp_n =0 && `DB_UNDO ( ))) { 149 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 150 `__ham_d ( fe_dbp , g , gp -> ndx ); 151 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 154 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 155 out ; 156 g = NULL ; 159 de : * lp = gp -> ev_l ; 160 t = 0; 162 out : i( g ! NULL ) 163 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 164 REC_CLOSE ; 165 } } 176 $__ham_wge_cov ( dbv , db , lp , , fo ) 177 DB_ENV * dbv ; 178 DBT * db ; 179 DB_LSN * lp ; 180 db_cs ; 181 * fo ; 183 __ham_wge_gs * gp ; 184 DB * fe_dbp ; 185 DBC * dbc ; 186 DB_MPOOLFILE * mpf ; 187 PAGE * g ; 188 chge , cmp_n , cmp_p , t ; 190 g = NULL ; 192 `REC_PRINT ( __ham_wge_t ); 193 `REC_INTRO ( __ham_wge_ad , 1, 0); 195 `REC_FGET ( mpf , gp -> w_pgno , & g , age ); 196 chge = 0; 204 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 205 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 206 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 208 i(( cmp_p =0 && `DB_REDO ( && gp -> code = PUTOVFL ) || 209 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DELOVFL )) { 211 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 212 `P_INIT ( g , fe_dbp -> pgsize , gp -> w_pgno , 213 gp -> ev_pgno ,rgp-> xt_pgno , 0, P_HASH ); 214 chge = 1; 215 } i(( cmp_p =0 && `DB_REDO ( && gp -> code = DELOVFL ) || 216 ( cmp_n =0 && `DB_UNDO ( && gp -> code = PUTOVFL )) { 221 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 222 chge = 1; 225 i( chge ) 226 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 228 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 229 out ; 230 g = NULL ; 233 age : i( gp -> ev_pgno ! PGNO_INVALID ) { 234 `REC_FGET ( mpf , gp -> ev_pgno , & g , age ); 236 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 237 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> evl ); 238 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> evl ); 239 chge = 0; 241 i(( cmp_p =0 && `DB_REDO ( && gp -> code = PUTOVFL ) || 242 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DELOVFL )) { 244 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 245 g -> xt_pgno = gp -> w_pgno ; 246 chge = 1; 247 } i(( cmp_p == 0 && 248 `DB_REDO ( && gp -> code = DELOVFL ) || 249 ( cmp_n =0 && `DB_UNDO ( && gp -> code = PUTOVFL )) { 251 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 252 g -> xt_pgno = gp ->next_pgno; 253 chge = 1; 256 i( chge ) 257 `LSN ( g `DB_REDO ( ? * lp : gp -> evl ; 259 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 260 out ; 261 g = NULL ; 265 age : i( gp -> xt_pgno ! PGNO_INVALID ) { 266 `REC_FGET ( mpf , gp -> xt_pgno , & g , de ); 268 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 269 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> x ); 270 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> x ); 271 chge = 0; 273 i(( cmp_p =0 && `DB_REDO ( && gp -> code = PUTOVFL ) || 274 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DELOVFL )) { 276 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 277 g -> ev_pgno = gp -> w_pgno ; 278 chge = 1; 279 } i(( cmp_p == 0 && 280 `DB_REDO ( && gp -> code = DELOVFL ) || 281 ( cmp_n =0 && `DB_UNDO ( && gp -> code = PUTOVFL )) { 283 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 284 g -> ev_pgno = gp ->prev_pgno; 285 chge = 1; 288 i( chge ) 289 `LSN ( g `DB_REDO ( ? * lp : gp -> x ; 291 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 292 out ; 293 g = NULL ; 295 de : * lp = gp -> ev_l ; 296 t = 0; 298 out : i( g ! NULL ) 299 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 300 REC_CLOSE ; 301 } } 313 $__ham_a_cov ( dbv , db , lp , , fo ) 314 DB_ENV * dbv ; 315 DBT * db ; 316 DB_LSN * lp ; 317 db_cs ; 318 * fo ; 320 __ham_a_gs * gp ; 321 DB * fe_dbp ; 322 DBC * dbc ; 323 DB_MPOOLFILE * mpf ; 324 DBT dbt ; 325 PAGE * g ; 326 u_t32_t chge ; 327 cmp_n , cmp_p , is_us , modifd , t ; 328 u_t8_t * hk ; 330 g = NULL ; 332 `REC_PRINT ( __ham_a_t ); 333 `REC_INTRO ( __ham_a_ad , 1, 0); 335 `REC_FGET ( mpf , gp -> pgno , & g , de ); 337 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 338 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 339 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 341 `memt (& dbt , 0, (dbt)); 342 modifd = 0; 349 i( gp -> wem . size >rgp-> dem .size) { 350 chge = gp -> wem . size -rgp-> dem .size; 351 is_us = 1; 353 chge = gp -> dem . size -rgp-> wem .size; 354 is_us = 0; 356 i( cmp_p =0 && `DB_REDO ( )) { 358 dbt . da = gp -> wem .data; 359 dbt . size = gp -> wem .size; 360 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 361 `LSN ( g * lp ; 366 modifd = 1; 367 } i( cmp_n =0 && `DB_UNDO ( )) { 369 dbt . da = gp -> dem .data; 370 dbt . size = gp -> dem .size; 375 is_us = !is_plus; 376 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 377 `LSN ( g gp -> g ; 378 modifd = 1; 381 i( modifd ) { 382 `__ham_ڷge_a ( fe_dbp , g , 383 gp -> ndx ,rgp-> off , chge , is_us , & dbt ); 384 i( gp -> makedup ) { 385 hk = `P_ENTRY ( fe_dbp , g , gp -> ndx ); 386 i( `DB_REDO ( )) 387 `HPAGE_PTYPE ( hk H_DUPLICATE ; 389 `HPAGE_PTYPE ( hk H_KEYDATA ; 393 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 394 out ; 395 g = NULL ; 397 de : * lp = gp -> ev_l ; 398 t = 0; 400 out : i( g ! NULL ) 401 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 402 REC_CLOSE ; 403 } } 412 $__ham_lda_cov ( dbv , db , lp , , fo ) 413 DB_ENV * dbv ; 414 DBT * db ; 415 DB_LSN * lp ; 416 db_cs ; 417 * fo ; 419 __ham_lda_gs * gp ; 420 DB * fe_dbp ; 421 DBC * dbc ; 422 DB_MPOOLFILE * mpf ; 423 PAGE * g ; 424 cmp_n , cmp_p , t ; 426 g = NULL ; 428 `REC_PRINT ( __ham_lda_t ); 429 `REC_INTRO ( __ham_lda_ad , 1, 0); 431 i(( t = `__memp_fg ( mpf , & gp -> pgno , NULL , 432 0, & g )) != 0) { 433 i( `DB_UNDO ( )) { 434 i( t = DB_PAGE_NOTFOUND ) 435 de ; 437 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 438 out ; 441 #ifde HAVE_FTRUNCATE 443 i(! `IS_ZERO_LSN ( gp -> g )) 444 de ; 451 i(( t = `__memp_fg ( mpf , & gp -> pgno , 452 NULL , DB_MPOOL_CREATE , & g )) != 0) { 453 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 454 out ; 458 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 459 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 460 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 477 i( cmp_p =0 && `DB_REDO ( )) { 478 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 479 i( gp -> code = SPLITNEW ) 481 `memy ( g , gp -> geimage . da , 482 gp -> geimage . size ); 483 i( gp -> code = SORTPAGE ) { 484 i(( t = `__ham_st_ge ( fe_dbp , 485 NULL , NULL, g )) != 0) 486 out ; 488 `LSN ( g * lp ; 489 } i( cmp_n =0 && `DB_UNDO ( )) { 490 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 491 i( gp -> code = SPLITOLD ||rgp->cod= SORTPAGE ) { 493 `memy ( g , gp -> geimage . da , 494 gp -> geimage . size ); 496 `P_INIT ( g , fe_dbp -> pgsize , gp -> pgno , 497 PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 498 `LSN ( g gp -> g ; 500 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 501 out ; 502 g = NULL ; 504 de : * lp = gp -> ev_l ; 505 t = 0; 507 out : i( g ! NULL ) 508 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 509 REC_CLOSE ; 510 } } 520 $__ham_cyge_cov ( dbv , db , lp , , fo ) 521 DB_ENV * dbv ; 522 DBT * db ; 523 DB_LSN * lp ; 524 db_cs ; 525 * fo ; 527 __ham_cyge_gs * gp ; 528 DB * fe_dbp ; 529 DBC * dbc ; 530 DB_MPOOLFILE * mpf ; 531 PAGE * g ; 532 cmp_n , cmp_p , t ; 534 g = NULL ; 536 `REC_PRINT ( __ham_cyge_t ); 537 `REC_INTRO ( __ham_cyge_ad , 1, 0); 540 `REC_FGET ( mpf , gp -> pgno , & g , dext ); 542 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 543 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 544 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 546 i( cmp_p =0 && `DB_REDO ( )) { 548 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 549 `memy ( g , gp -> ge . da ,rgp->ge. size ); 550 `PGNO ( g gp -> pgno ; 551 `PREV_PGNO ( g PGNO_INVALID ; 552 `LSN ( g * lp ; 553 } i( cmp_n =0 && `DB_UNDO ( )) { 555 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 556 `P_INIT ( g , fe_dbp -> pgsize , gp -> pgno , PGNO_INVALID , 557 gp -> xt_pgno , 0, P_HASH ); 558 `LSN ( g gp -> g ; 560 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 561 out ; 562 g = NULL ; 564 dext : 565 `REC_FGET ( mpf , gp -> xt_pgno , & g , do_ ); 568 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 569 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> x ); 570 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> x ); 571 i( cmp_p =0 && `DB_REDO ( )) { 572 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 573 `LSN ( g * lp ; 574 } i( cmp_n =0 && `DB_UNDO ( )) { 576 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 577 `memy ( g , gp -> ge . da ,rgp->ge. size ); 579 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 580 out ; 581 g = NULL ; 584 do_ : i( gp -> ext_pgno = PGNO_INVALID ) 585 de ; 587 `REC_FGET ( mpf , gp -> ext_pgno , & g , de ); 589 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 590 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> ex ); 591 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> ex ); 593 i( cmp_p =0 && `DB_REDO ( )) { 595 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 596 `PREV_PGNO ( g gp -> pgno ; 597 `LSN ( g * lp ; 598 } i( cmp_n =0 && `DB_UNDO ( )) { 600 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 601 `PREV_PGNO ( g gp -> xt_pgno ; 602 `LSN ( g gp -> ex ; 604 i(( t = `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 605 out ; 606 g = NULL ; 608 de : * lp = gp -> ev_l ; 609 t = 0; 611 out : i( g ! NULL ) 612 () `__memp_ut ( mpf , g , fe_dbp -> iܙy ); 613 REC_CLOSE ; 614 } } 624 $__ham_magroup_cov ( dbv , db , lp , , fo ) 625 DB_ENV * dbv ; 626 DBT * db ; 627 DB_LSN * lp ; 628 db_cs ; 629 * fo ; 631 __ham_magroup_gs * gp ; 632 HASH_CURSOR * h ; 633 DB * fe_dbp ; 634 DBMETA * mma ; 635 DBC * dbc ; 636 DB_MPOOLFILE * mpf ; 637 PAGE * g ; 638 db_pgno_t pgno ; 639 u_t32_t ags ; 640 cmp_n , cmp_p , did_loc , groupgrow , t ; 642 did_loc = 0; 643 mma = NULL ; 644 `REC_PRINT ( __ham_magroup_t ); 645 `REC_INTRO ( __ham_magroup_ad , 1, 1); 664 groupgrow = 665 ( u_t32_t )(1 << `__db_log2 ( gp -> buck + 1)) ==rgp->bucket + 1; 666 pgno = gp ->pgno; 667 i( gp -> wloc ) 668 pgno + gp -> buck ; 670 ags = 0; 671 g = NULL ; 672 #ide HAVE_FTRUNCATE 673 `LF_SET ( DB_MPOOL_CREATE ); 675 t = `__memp_fg ( mpf , & pgno , NULL , ags , & g ); 677 #ifde HAVE_FTRUNCATE 679 i( t !0 && `DB_REDO ( )) 680 t = `__memp_fg ( mpf , 681 & pgno , NULL , DB_MPOOL_CREATE , & g ); 682 i( t = DB_PAGE_NOTFOUND ) 683 do_ma ; 685 i( t != 0) { 686 i( t ! ENOSPC ) 687 out ; 688 pgno = 0; 689 do_ma ; 697 did_loc = groupgrow ; 699 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 700 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 701 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 703 i( cmp_p =0 && `DB_REDO ( )) { 704 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 705 g -> l = * lp ; 706 } i( cmp_n =0 && `DB_UNDO ( )) { 707 #ifde HAVE_FTRUNCATE 709 i( gp -> wloc ) { 710 i( g ! NULL && ( t = `__memp_ut ( mpf , 711 g , DB_PRIORITY_VERY_LOW )) != 0) 712 out ; 713 g = NULL ; 714 i(( t = `__memp_run ( mpf , gp -> pgno , 0)) != 0) 715 out ; 723 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 724 g -> l = gp -> g ; 727 i( g ! NULL && 728 ( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 729 out ; 731 do_ma : 733 h = ( HASH_CURSOR *) dbc -> ; 734 i(( t = `__ham_g_ma ( dbc )) != 0) 735 out ; 736 cmp_n = `LOG_COMPARE ( lp , & h -> hdr -> dbma . l ); 737 cmp_p = `LOG_COMPARE (& h -> hdr -> dbma . l , & gp -> m ); 738 `CHECK_LSN ( dbv , , cmp_p , & h -> hdr -> dbma . l , & gp -> m ); 739 i( cmp_p =0 && `DB_REDO ( )) { 741 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 742 ++ h -> hdr -> max_buck ; 743 i( groupgrow ) { 744 h -> hdr -> low_mask = h->hdr-> high_mask ; 745 h -> hdr -> high_mask = 746 ( gp -> buck + 1| h -> hdr -> low_mask ; 748 h -> hdr -> dbma . l = * lp ; 749 } i( cmp_n =0 && `DB_UNDO ( )) { 751 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 752 h -> hdr -> max_buck = gp -> buck ; 753 i( groupgrow ) { 754 h -> hdr -> high_mask = gp -> buck ; 755 h -> hdr -> low_mask = h->hdr-> high_mask >> 1; 757 h -> hdr -> dbma . l = gp -> m ; 768 i( did_loc && 769 #ifde HAVE_FTRUNCATE 770 ! `DB_UNDO ( ) && 772 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1+ 1] = PGNO_INVALID ) { 773 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 774 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1) + 1] = 775 ( gp -> pgno -rgp-> buck ) - 1; 777 #ifde HAVE_FTRUNCATE 778 i( cmp_n =0 && groupgrow && `DB_UNDO ( )) { 779 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 780 h -> hdr -> es [ 781 `__db_log2 ( gp -> buck + 1+ 1] = PGNO_INVALID ; 790 i( gp -> mmpgno !gp-> mpgno ) { 791 i(( t = `__memp_fg ( mpf , & gp -> mmpgno , NULL , 792 DB_MPOOL_EDIT , & mma )) != 0) { 793 i( `DB_UNDO ( && t = DB_PAGE_NOTFOUND ) 794 t = 0; 795 out ; 797 cmp_n = `LOG_COMPARE ( lp , & mma -> l ); 798 cmp_p = `LOG_COMPARE (& mma -> l , & gp -> mm ); 799 i( cmp_p =0 && `DB_REDO ( )) { 800 `REC_DIRTY ( mpf , dbc -> iܙy , & mma ); 801 mma -> l = * lp ; 802 } i( cmp_n =0 && `DB_UNDO ( )) { 803 `REC_DIRTY ( mpf , dbc -> iܙy , & mma ); 804 mma -> l = gp -> mm ; 807 mma = ( DBMETA *) h -> hdr ; 808 `REC_DIRTY ( mpf , dbc -> iܙy , & mma ); 811 #ifde HAVE_FTRUNCATE 812 i( cmp_n =0 && `DB_UNDO ( )) 813 mma -> ϡ_pgno = gp ->last_pgno; 814 i( `DB_REDO ( )) 816 i( mma -> ϡ_pgno < pgno ) 817 mma -> ϡ_pgno = pgno ; 819 i( gp -> mmpgno !gp-> mpgno && 820 ( t = `__memp_ut ( mpf , mma , dbc -> iܙy )) != 0) 821 out ; 822 mma = NULL ; 824 de : * lp = gp -> ev_l ; 825 t = 0; 827 out : i( mma ! NULL ) 828 () `__memp_ut ( mpf , mma , dbc -> iܙy ); 829 i( dbc ! NULL ) 830 () `__ham_a_ma ( dbc ); 831 i( t = ENOENT && = DB_TXN_BACKWARD_ALLOC ) 832 t = 0; 834 REC_CLOSE ; 835 } } 845 $__ham_grouoc_cov ( dbv , db , lp , , fo ) 846 DB_ENV * dbv ; 847 DBT * db ; 848 DB_LSN * lp ; 849 db_cs ; 850 * fo ; 852 __ham_grouoc_gs * gp ; 853 DBMETA * mma ; 854 DB_MPOOLFILE * mpf ; 855 DB * fe_dbp ; 856 DBC * dbc ; 857 PAGE * g ; 858 db_pgno_t pgno ; 859 cmp_n , cmp_p , t ; 861 mma = NULL ; 862 `REC_PRINT ( __ham_grouoc_t ); 863 `REC_INTRO ( __ham_grouoc_ad , 0, 0); 865 pgno = PGNO_BASE_MD ; 866 i(( t = `__memp_fg ( mpf , & pgno , NULL , 867 0, & mma )) != 0) { 868 i( `DB_REDO ( )) { 869 t = `__db_pgr ( fe_dbp , pgno ,et); 870 out ; 872 de ; 875 cmp_n = `LOG_COMPARE ( lp , & `LSN ( mma )); 876 cmp_p = `LOG_COMPARE (& `LSN ( mma ), & gp -> ma_l ); 877 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( mma ), & gp -> ma_l ); 888 pgno = gp -> t_pgno +rgp-> num - 1; 889 i( `DB_REDO ( )) { 890 i(( t = `__ham_loc_ges ( fe_dbp , gp , lp )) != 0) 891 out ; 892 i( cmp_p == 0) { 893 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 894 `LSN ( mma * lp ; 896 } i( `DB_UNDO ( )) { 901 g = NULL ; 902 i(( t = `__memp_fg ( mpf , & pgno , NULL , 903 DB_MPOOL_EDIT , & g )) == 0) { 904 i( `LOG_COMPARE (& g -> l , lp ) != 0) { 905 i(( t = `__memp_ut ( mpf , g , 906 DB_PRIORITY_VERY_LOW )) != 0) 907 out ; 908 g = NULL ; 910 } i( t ! DB_PAGE_NOTFOUND ) 911 out ; 912 #ifde HAVE_FTRUNCATE 917 i( g ! NULL ) { 918 i(( t = `__memp_ut ( mpf , 919 g , DB_PRIORITY_VERY_LOW )) != 0) 920 out ; 921 i(( t = 922 `__memp_run ( mpf , gp -> t_pgno , 0)) != 0) 923 out ; 930 i( cmp_n == 0) { 931 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 932 mma -> ϡ_pgno = gp ->last_pgno; 934 pgno = 0; 939 i( g ! NULL ) { 940 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 941 i( `LOG_COMPARE (& g -> l , lp ) == 0) 942 `ZERO_LSN ( g -> l ); 944 i(( t = 945 `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 946 out ; 951 i(( t = `__db_add_limbo ( dbv , 952 fo , gp -> feid ,rgp-> t_pgno ,rgp-> num )) != 0) 953 out ; 955 i( cmp_n == 0) { 956 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 957 `LSN ( mma gp -> ma_l ; 966 i( pgno > mma -> ϡ_pgno ) { 967 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 968 mma -> ϡ_pgno = pgno ; 971 de : i( t == 0) 972 * lp = gp -> ev_l ; 973 t = 0; 975 out : i( mma ! NULL ) 976 () `__memp_ut ( mpf , mma , fe_dbp -> iܙy ); 978 i( t = ENOENT && = DB_TXN_BACKWARD_ALLOC ) 979 t = 0; 980 REC_CLOSE ; 981 } } 994 $__ham_loc_ges ( fe_dbp , gp , lp ) 995 DB * fe_dbp ; 996 __ham_grouoc_gs * gp ; 997 DB_LSN * lp ; 999 DB_MPOOLFILE * mpf ; 1000 PAGE * g ; 1001 db_pgno_t pgno ; 1002 t ; 1004 mpf = fe_dbp ->mpf; 1007 pgno = gp -> t_pgno +rgp-> num - 1; 1010 i(( t = 1011 `__memp_fg ( mpf , & pgno , NULL , 0, & g )) == 0) { 1012 i( `NUM_ENT ( g =0 && `IS_ZERO_LSN ag-> l )) 1013 _ge ; 1014 ( `__memp_ut ( mpf , g , fe_dbp -> iܙy )); 1018 i(( t = `__memp_fg ( 1019 mpf , & pgno , NULL , DB_MPOOL_CREATE , & g )) != 0) 1020 ( `__db_pgr ( fe_dbp , pgno , t )); 1022 _ge : 1024 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1025 `P_INIT ( g , fe_dbp -> pgsize , 1026 pgno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1027 g -> l = * lp ; 1029 out : ( `__memp_ut ( mpf , g , fe_dbp -> iܙy )); 1030 } } 1040 $__ham_cudj_cov ( dbv , db , lp , , fo ) 1041 DB_ENV * dbv ; 1042 DBT * db ; 1043 DB_LSN * lp ; 1044 db_cs ; 1045 * fo ; 1047 __ham_cudj_gs * gp ; 1048 DB_MPOOLFILE * mpf ; 1049 DB * fe_dbp ; 1050 DBC * dbc ; 1051 t ; 1052 HASH_CURSOR * h ; 1053 db_ham_cudj mode , hamc_mode ; 1055 `REC_PRINT ( __ham_cudj_t ); 1056 `REC_INTRO ( __ham_cudj_ad , 0, 1); 1058 i( ! DB_TXN_ABORT ) 1059 de ; 1061 mode = ( db_ham_cudj ) gp -> add ; 1067 mode ) { 1068 DB_HAM_CURADJ_DEL : 1069 hamc_mode = DB_HAM_CURADJ_ADD ; 1071 DB_HAM_CURADJ_ADD : 1072 hamc_mode = DB_HAM_CURADJ_DEL ; 1074 DB_HAM_CURADJ_ADDMOD : 1075 hamc_mode = DB_HAM_CURADJ_DELMOD ; 1077 DB_HAM_CURADJ_DELMOD : 1078 hamc_mode = DB_HAM_CURADJ_ADDMOD ; 1081 `__db_rx ( dbv , 1083 t = EINVAL ; 1084 out ; 1092 h = ( HASH_CURSOR *) dbc -> ; 1093 h -> pgno = gp ->pgno; 1094 h -> dx = gp ->indx; 1095 h -> dup_off = gp ->dup_off; 1096 h -> d = gp ->order; 1097 i( mode = DB_HAM_CURADJ_DEL ) 1098 `F_SET ( h , H_DELETED ); 1099 () `__hamc_upde ( dbc , gp -> n , hamc_mode ,rgp-> is_dup ); 1101 de : * lp = gp -> ev_l ; 1102 out : REC_CLOSE ; 1103 } } 1113 $__ham_chgpg_cov ( dbv , db , lp , , fo ) 1114 DB_ENV * dbv ; 1115 DBT * db ; 1116 DB_LSN * lp ; 1117 db_cs ; 1118 * fo ; 1120 __ham_chgpg_gs * gp ; 1121 BTREE_CURSOR * d ; 1122 DB_MPOOLFILE * mpf ; 1123 DB * fe_dbp , * ldbp ; 1124 DBC * dbc ; 1125 t ; 1126 DBC * ; 1127 HASH_CURSOR * l ; 1128 u_t32_t d , dx ; 1130 `REC_PRINT ( __ham_chgpg_t ); 1131 `REC_INTRO ( __ham_chgpg_ad , 0, 0); 1133 i( ! DB_TXN_ABORT ) 1134 de ; 1137 dx = gp -> d_dx ; 1138 d = gp -> w_dx ; 1140 `MUTEX_LOCK ( dbv , dbv-> mtx_dbli ); 1141 `FIND_FIRST_DB_MATCH ( dbv , fe_dbp , ldbp ); 1143 ldbp ! NULL &&dbp-> adj_feid = fe_dbp ->adj_fileid; 1144 ldbp = `TAILQ_NEXT dbp, dblilks )) { 1145 `MUTEX_LOCK ( dbv , fe_dbp -> mux ); 1146 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 1147 l = ( HASH_CURSOR *) -> ; 1149 gp -> mode ) { 1150 DB_HAM_DELFIRSTPG : 1151 i( l -> pgno ! gp -> w_pgno || 1152 `MVCC_SKIP_CURADJ ( , l -> pgno )) 1154 i( l -> dx != indx || 1155 ! `F_ISSET ( l , H_DELETED ) || 1156 l -> d >= order) { 1157 l -> pgno = gp -> d_pgno ; 1158 i( l -> dx == indx) 1159 l -> d -= order; 1162 DB_HAM_DELMIDPG : 1163 DB_HAM_DELLASTPG : 1164 i( l -> pgno = gp -> w_pgno && 1165 l -> dx == indx && 1166 `F_ISSET ( l , H_DELETED ) && 1167 l -> d >= order && 1168 ! `MVCC_SKIP_CURADJ ( , l -> pgno )) { 1169 l -> pgno = gp -> d_pgno ; 1170 l -> d -= order; 1171 l -> dx = 0; 1174 DB_HAM_CHGPG : 1182 i( `F_ISSET ( l , H_DELETED )) 1185 DB_HAM_SPLIT : 1186 i( l -> pgno = gp -> w_pgno && 1187 l -> dx = gp -> w_dx && 1188 ! `MVCC_SKIP_CURADJ ( , l -> pgno )) { 1189 l -> dx = gp -> d_dx ; 1190 l -> pgno = gp -> d_pgno ; 1193 DB_HAM_DUP : 1194 i( l -> d = NULL ) 1196 d = ( BTREE_CURSOR *) l -> d -> ; 1197 i( d -> pgno ! gp -> w_pgno || 1198 d -> dx ! gp -> w_dx || 1199 `MVCC_SKIP_CURADJ ( l -> d , d -> pgno )) 1202 i( `F_ISSET ( d , C_DELETED )) 1203 `F_SET ( l , H_DELETED ); 1213 `MUTEX_UNLOCK ( dbv , fe_dbp -> mux ); 1214 i(( t = `__dbc_o ( l -> d )) != 0) 1215 out ; 1216 `MUTEX_LOCK ( dbv , fe_dbp -> mux ); 1217 l -> d = NULL ; 1221 `MUTEX_UNLOCK ( dbv , fe_dbp -> mux ); 1223 `MUTEX_UNLOCK ( dbv , dbv-> mtx_dbli ); 1225 de : * lp = gp -> ev_l ; 1226 out : REC_CLOSE ; 1227 } } 1237 $__ham_magroup_42_cov ( dbv , db , lp , , fo ) 1238 DB_ENV * dbv ; 1239 DBT * db ; 1240 DB_LSN * lp ; 1241 db_cs ; 1242 * fo ; 1244 __ham_magroup_42_gs * gp ; 1245 HASH_CURSOR * h ; 1246 DB * fe_dbp ; 1247 DBMETA * mma ; 1248 DBC * dbc ; 1249 DB_MPOOLFILE * mpf ; 1250 PAGE * g ; 1251 db_pgno_t pgno ; 1252 u_t32_t ags ; 1253 cmp_n , cmp_p , did_loc , groupgrow , t ; 1255 did_loc = 0; 1256 mma = NULL ; 1257 `REC_PRINT ( __ham_magroup_42_t ); 1258 `REC_INTRO ( __ham_magroup_42_ad , 1, 1); 1277 groupgrow = 1278 ( u_t32_t )(1 << `__db_log2 ( gp -> buck + 1)) ==rgp->bucket + 1; 1279 pgno = gp ->pgno; 1280 i( gp -> wloc ) 1281 pgno + gp -> buck ; 1283 ags = 0; 1284 g = NULL ; 1285 `LF_SET ( DB_MPOOL_CREATE ); 1286 t = `__memp_fg ( mpf , & pgno , NULL , ags , & g ); 1288 i( t != 0) { 1289 i( t ! ENOSPC ) 1290 out ; 1291 pgno = 0; 1292 do_ma ; 1300 did_loc = groupgrow ; 1302 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1303 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 1304 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( g ), & gp -> g ); 1306 i( cmp_p =0 && `DB_REDO ( )) { 1307 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1308 g -> l = * lp ; 1309 } i( cmp_n =0 && `DB_UNDO ( )) { 1314 `REC_DIRTY ( mpf , dbc -> iܙy , & g ); 1315 g -> l = gp -> g ; 1317 i( g ! NULL && 1318 ( t = `__memp_ut ( mpf , g , dbc -> iܙy )) != 0) 1319 out ; 1321 do_ma : 1323 h = ( HASH_CURSOR *) dbc -> ; 1324 i(( t = `__ham_g_ma ( dbc )) != 0) 1325 out ; 1326 cmp_n = `LOG_COMPARE ( lp , & h -> hdr -> dbma . l ); 1327 cmp_p = `LOG_COMPARE (& h -> hdr -> dbma . l , & gp -> m ); 1328 `CHECK_LSN ( dbv , , cmp_p , & h -> hdr -> dbma . l , & gp -> m ); 1329 i( cmp_p =0 && `DB_REDO ( )) { 1331 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 1332 ++ h -> hdr -> max_buck ; 1333 i( groupgrow ) { 1334 h -> hdr -> low_mask = h->hdr-> high_mask ; 1335 h -> hdr -> high_mask = 1336 ( gp -> buck + 1| h -> hdr -> low_mask ; 1338 h -> hdr -> dbma . l = * lp ; 1339 } i( cmp_n =0 && `DB_UNDO ( )) { 1341 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 1342 h -> hdr -> max_buck = gp -> buck ; 1343 i( groupgrow ) { 1344 h -> hdr -> high_mask = gp -> buck ; 1345 h -> hdr -> low_mask = h->hdr-> high_mask >> 1; 1347 h -> hdr -> dbma . l = gp -> m ; 1358 i( did_loc && 1359 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1+ 1] = PGNO_INVALID ) { 1360 `REC_DIRTY ( mpf , dbc -> iܙy , & h -> hdr ); 1361 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1) + 1] = 1362 ( gp -> pgno -rgp-> buck ) - 1; 1370 i( gp -> mmpgno !gp-> mpgno ) { 1371 i(( t = `__memp_fg ( mpf , & gp -> mmpgno , NULL , 1372 DB_MPOOL_EDIT , & mma )) != 0) { 1373 i( `DB_UNDO ( && t = DB_PAGE_NOTFOUND ) 1374 t = 0; 1375 out ; 1377 cmp_n = `LOG_COMPARE ( lp , & mma -> l ); 1378 cmp_p = `LOG_COMPARE (& mma -> l , & gp -> mm ); 1379 i( cmp_p =0 && `DB_REDO ( )) { 1380 `REC_DIRTY ( mpf , dbc -> iܙy , & mma ); 1381 mma -> l = * lp ; 1382 } i( cmp_n =0 && `DB_UNDO ( )) { 1383 `REC_DIRTY ( mpf , dbc -> iܙy , & mma ); 1384 mma -> l = gp -> mm ; 1387 mma = ( DBMETA *) h -> hdr ; 1388 `REC_DIRTY ( mpf , dbc -> iܙy , & mma ); 1391 i( mma -> ϡ_pgno < pgno ) 1392 mma -> ϡ_pgno = pgno ; 1394 i( gp -> mmpgno !gp-> mpgno && 1395 ( t = `__memp_ut ( mpf , mma , dbc -> iܙy )) != 0) 1396 out ; 1397 mma = NULL ; 1399 de : * lp = gp -> ev_l ; 1400 t = 0; 1402 out : i( mma ! NULL ) 1403 () `__memp_ut ( mpf , mma , dbc -> iܙy ); 1404 i( dbc ! NULL ) 1405 () `__ham_a_ma ( dbc ); 1406 i( t = ENOENT && = DB_TXN_BACKWARD_ALLOC ) 1407 t = 0; 1409 REC_CLOSE ; 1410 } } 1420 $__ham_grouoc_42_cov ( dbv , db , lp , , fo ) 1421 DB_ENV * dbv ; 1422 DBT * db ; 1423 DB_LSN * lp ; 1424 db_cs ; 1425 * fo ; 1427 __ham_grouoc_42_gs * gp ; 1428 DBMETA * mma ; 1429 DB_MPOOLFILE * mpf ; 1430 DB * fe_dbp ; 1431 DBC * dbc ; 1432 PAGE * g ; 1433 db_pgno_t pgno ; 1434 cmp_n , cmp_p , t ; 1436 mma = NULL ; 1437 `REC_PRINT ( __ham_grouoc_42_t ); 1438 `REC_INTRO ( __ham_grouoc_42_ad , 0, 0); 1440 pgno = PGNO_BASE_MD ; 1441 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & mma )) != 0) { 1442 i( `DB_REDO ( )) { 1443 t = `__db_pgr ( fe_dbp , pgno ,et); 1444 out ; 1446 de ; 1449 cmp_n = `LOG_COMPARE ( lp , & `LSN ( mma )); 1450 cmp_p = `LOG_COMPARE (& `LSN ( mma ), & gp -> ma_l ); 1451 `CHECK_LSN ( dbv , , cmp_p , & `LSN ( mma ), & gp -> ma_l ); 1462 pgno = gp -> t_pgno +rgp-> num - 1; 1463 i( `DB_REDO ( )) { 1464 i(( t = `__ham_loc_ges_42 ( fe_dbp , gp , lp )) != 0) 1465 out ; 1466 i( cmp_p == 0) { 1467 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 1468 `LSN ( mma * lp ; 1470 } i( `DB_UNDO ( )) { 1475 g = NULL ; 1476 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & g )) == 0) { 1477 i( `LOG_COMPARE (& g -> l , lp ) != 0) { 1478 i(( t = `__memp_ut ( mpf , g , 1479 DB_PRIORITY_VERY_LOW )) != 0) 1480 out ; 1481 g = NULL ; 1483 } i( t ! DB_PAGE_NOTFOUND ) 1484 out ; 1488 i( g ! NULL ) { 1489 i( `LOG_COMPARE (& g -> l , lp ) == 0) { 1490 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & g ); 1491 `ZERO_LSN ( g -> l ); 1494 i(( t = 1495 `__memp_ut ( mpf , g , fe_dbp -> iܙy )) != 0) 1496 out ; 1501 i(( t = `__db_add_limbo ( dbv , 1502 fo , gp -> feid ,rgp-> t_pgno ,rgp-> num )) != 0) 1503 out ; 1504 i( cmp_n == 0) { 1505 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 1506 `LSN ( mma gp -> ma_l ; 1515 i( pgno > mma -> ϡ_pgno ) { 1516 `REC_DIRTY ( mpf , fe_dbp -> iܙy , & mma ); 1517 mma -> ϡ_pgno = pgno ; 1520 de : i( t == 0) 1521 * lp = gp -> ev_l ; 1522 t = 0; 1524 out : i( mma ! NULL ) 1525 () `__memp_ut ( mpf , mma , fe_dbp -> iܙy ); 1527 i( t = ENOENT && = DB_TXN_BACKWARD_ALLOC ) 1528 t = 0; 1529 REC_CLOSE ; 1530 } } 1543 $__ham_loc_ges_42 ( dbp , gp , lp ) 1544 DB * dbp ; 1545 __ham_grouoc_42_gs * gp ; 1546 DB_LSN * lp ; 1548 DB_MPOOLFILE * mpf ; 1549 PAGE * g ; 1550 db_pgno_t pgno ; 1551 t ; 1553 mpf = dbp ->mpf; 1556 pgno = gp -> t_pgno +rgp-> num - 1; 1559 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & g )) == 0) { 1560 i( `NUM_ENT ( g =0 && `IS_ZERO_LSN ag-> l )) 1561 _ge ; 1562 i(( t = `__memp_ut ( mpf , g , dbp -> iܙy )) != 0) 1563 ( t ); 1568 i(( t = `__memp_fg ( mpf , & pgno , NULL , 1569 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & g )) != 0) 1570 ( `__db_pgr ( dbp , pgno , t )); 1572 _ge : 1574 `P_INIT ( g , dbp -> pgsize , pgno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1575 g -> l = * lp ; 1577 i(( t = `__memp_ut ( mpf , g , dbp -> iܙy )) != 0) 1578 ( t ); 1581 } } @../hash/hash_reclaim.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/hash.h " 28 $__ham_aim ( dbp , txn ) 29 DB * dbp ; 30 DB_TXN * txn ; 32 DBC * dbc ; 33 HASH_CURSOR * h ; 34 t ; 37 i(( t = `__db_curs ( dbp , txn , & dbc , 0)) != 0) 38 ( t ); 39 h = ( HASH_CURSOR *) dbc -> ; 41 i(( t = `__ham_g_ma ( dbc )) != 0) 42 r ; 45 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 46 r ; 49 `F_SET ( dbc , DBC_DONTLOCK ); 51 i(( t = `__ham_av ( dbc , 52 DB_LOCK_WRITE , __db_aim_back , dbc , 1)) != 0) 53 r ; 54 i(( t = `__dbc_o ( dbc )) != 0) 55 r ; 56 i(( t = `__ham_a_ma ( dbc )) != 0) 57 r ; 60 r : i( h -> hdr ! NULL ) 61 () `__ham_a_ma ( dbc ); 62 () `__dbc_o ( dbc ); 63 ( t ); 64 } } 74 $__ham_un ( dbc , coup ) 75 DBC * dbc ; 76 u_t32_t * coup ; 78 db_unc_m unc ; 79 t , t_t ; 81 i(( t = `__ham_g_ma ( dbc )) != 0) 82 ( t ); 84 unc . cou = 0; 85 unc . dbc = dbc; 87 t = `__ham_av ( dbc , 88 DB_LOCK_WRITE , __db_un_back , & unc , 1); 90 i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 91 t = t_t ; 93 i( coup ! NULL ) 94 * coup = unc . cou ; 95 ( t ); 96 } } @../hash/hash_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/hash.h " 15 ~"dbc/mp.h " 17 #ifde HAVE_STATISTICS 18 __ham__back __P (( DB *, PAGE *, *, *)); 27 $__ham_ ( dbc , p , ags ) 28 DBC * dbc ; 29 * p ; 30 u_t32_t ags ; 32 DB * dbp ; 33 DB_ENV * dbv ; 34 DB_HASH_STAT * ; 35 DB_MPOOLFILE * mpf ; 36 HASH_CURSOR * h ; 37 PAGE * h ; 38 db_pgno_t pgno ; 39 t ; 41 dbp = dbc ->dbp; 42 dbv = dbp ->dbenv; 44 mpf = dbp ->mpf; 45 = NULL ; 47 h = ( HASH_CURSOR *) dbc -> ; 49 i(( t = `__ham_g_ma ( dbc )) != 0) 50 r ; 53 i(( t = `__os_umloc ( dbv , (* ), &sp)) != 0) 54 r ; 55 `memt ( , 0, (*sp)); 57 -> hash_nkeys = h -> hdr -> dbma . key_cou ; 58 -> hash_nda = h -> hdr -> dbma . cd_cou ; 64 i(( t = `__memp_g_ϡ_pgno ( dbp -> mpf , & pgno )) != 0) 65 r ; 66 -> hash_get = pgno + 1; 67 -> hash_gesize = dbp -> pgsize ; 68 -> hash_bucks = h -> hdr -> max_buck + 1; 69 -> hash_magic = h -> hdr -> dbma . magic ; 70 -> hash_vsi = h -> hdr -> dbma . vsi ; 71 -> hash_maags = h -> hdr -> dbma . ags ; 72 -> hash_f = h -> hdr -> f ; 74 i( ags = DB_FAST_STAT ) 75 de ; 78 -> hash_ = 0, pgno = h -> hdr -> dbma . ; 79 pgno ! PGNO_INVALID ;) { 80 ++ -> hash_ ; 82 i(( t = `__memp_fg ( mpf , & pgno , dbc -> txn , 0, & h )) != 0) 83 r ; 85 pgno = h -> xt_pgno ; 86 () `__memp_ut ( mpf , h , dbc -> iܙy ); 90 -> hash_nkeys = 0; 91 -> hash_nda = 0; 92 i(( t = `__ham_av ( dbc , 93 DB_LOCK_READ , __ham__back , , 0)) != 0) 94 r ; 96 i(! `F_ISSET ( dbp , DB_AM_RDONLY )) { 102 i(( t = `__ham_dty_ma ( dbc , 103 ( dbc -> txn = NULL ? DB_MPOOL_EDIT : 0)) != 0) 104 r ; 105 h -> hdr -> dbma . key_cou = -> hash_nkeys ; 106 h -> hdr -> dbma . cd_cou = -> hash_nda ; 109 de : i(( t = `__ham_a_ma ( dbc )) != 0) 110 r ; 112 *( DB_HASH_STAT **) p = ; 115 r : i( ! NULL ) 116 `__os_u ( dbv , ); 118 i( h -> hdr ! NULL ) 119 () `__ham_a_ma ( dbc ); 121 ( t ); 122 } } 131 $__ham__t ( dbc , ags ) 132 DBC * dbc ; 133 u_t32_t ags ; 135 cڡ FN [] = { 136 { DB_HASH_DUP , "duplicates" }, 137 { DB_HASH_SUBDB , "multiple-databases" }, 138 { DB_HASH_DUPSORT , "sorted duplicates" }, 139 { 0, NULL } 141 DB * dbp ; 142 DB_ENV * dbv ; 143 DB_HASH_STAT * ; 144 ld , t ; 145 cڡ * s ; 147 dbp = dbc ->dbp; 148 dbv = dbp ->dbenv; 150 i(( t = `__ham_ ( dbc , & , `LF_ISSET ( DB_FAST_STAT ))) != 0) 151 ( t ); 153 i( `LF_ISSET ( DB_STAT_ALL )) { 154 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 155 `__db_msg ( dbv , "Default Hash database information:"); 157 `__db_msg ( dbv , "%lx\tHash maginumb", ( u_lg ) -> hash_magic ); 158 `__db_msg ( dbv , 159 "%lu\tHash vsiڂumb", ( u_lg ) -> hash_vsi ); 160 () `__db_g_ld ( dbp , & ld ); 161 ld ) { 163 s = "Little-endian"; 166 s = "Big-endian"; 169 s = "Unrecognized byte order"; 172 `__db_msg ( dbv , "%s\tBy ord", s ); 173 `__db_ags ( dbv , NULL , -> hash_maags , , NULL, "\tFlags"); 174 `__db_dl ( dbv , 175 "Undlyg dabaagsize", ( u_lg ) -> hash_gesize ); 176 `__db_dl ( dbv , "Scifd f", ( u_lg ) -> hash_f ); 177 `__db_dl ( dbv , 178 "Numb okeyhdaba", ( u_lg ) -> hash_nkeys ); 179 `__db_dl ( dbv , 180 "Numb odemhdaba", ( u_lg ) -> hash_nda ); 182 `__db_dl ( dbv , "Numb ohash bucks", ( u_lg ) -> hash_bucks ); 183 `__db_dl_p ( dbv , "Number of bytes free on bucketages", 184 ( u_lg ) -> hash_b , `DB_PCT_PG ( 185 -> hash_b , sp-> hash_bucks , sp-> hash_gesize ), "ff"); 187 `__db_dl ( dbv , 188 "Numb oovowages", ( u_lg ) -> hash_bigges ); 189 `__db_dl_p ( dbv , "Number of bytes free in overflowages", 190 ( u_lg ) -> hash_big_b , `DB_PCT_PG ( 191 -> hash_big_b , sp-> hash_bigges , sp-> hash_gesize ), "ff"); 193 `__db_dl ( dbv , 194 "Numb obuck ovowages", ( u_lg ) -> hash_ovows ); 195 `__db_dl_p ( dbv , 197 ( u_lg ) -> hash_ov_ , `DB_PCT_PG ( 198 -> hash_ov_ , sp-> hash_ovows , sp-> hash_gesize ), "ff"); 200 `__db_dl ( dbv , "Numb oduiages", ( u_lg ) -> hash_dup ); 201 `__db_dl_p ( dbv , "Number of bytes free in duplicateages", 202 ( u_lg ) -> hash_dup_ , `DB_PCT_PG ( 203 -> hash_dup_ , sp-> hash_dup , sp-> hash_gesize ), "ff"); 205 `__db_dl ( dbv , 206 "Numb ogeځh䓆i", ( u_lg ) -> hash_ ); 208 `__os_u ( dbv , ); 211 } } 214 $__ham__back ( dbp , g , cook , pu ) 215 DB * dbp ; 216 PAGE * g ; 217 * cook ; 218 * pu ; 220 DB_HASH_STAT * ; 221 DB_BTREE_STAT b ; 222 db_dx_t dx , n , off , , t ; 223 u_t8_t * hk ; 224 t ; 226 * pu = 0; 227 = cook ; 229 g -> ty ) { 230 P_INVALID : 236 P_HASH_UNSORTED : 237 P_HASH : 244 i( `PREV_PGNO ( g = PGNO_INVALID ) 245 -> hash_b + `P_FREESPACE ( dbp , g ); 247 -> hash_ovows ++; 248 -> hash_ov_ + `P_FREESPACE ( dbp , g ); 250 t = `NUM_ENT ( g ); 252 dx = 0; indx < t ; indx + P_INDX ) { 253 * `H_PAIRDATA ( dbp , g , dx )) { 254 H_OFFDUP : 256 H_OFFPAGE : 257 H_KEYDATA : 258 -> hash_nda ++; 260 H_DUPLICATE : 261 = `LEN_HDATA ( dbp , g , 0, dx ); 262 hk = `H_PAIRDATA ( dbp , g , dx ); 263 off = 0; of< ; 264 off + n + 2 * ( db_dx_t )) { 265 -> hash_nda ++; 266 `memy (& n , 267 `HKEYDATA_DATA ( hk ) 268 + off , ( db_dx_t )); 272 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( g ))); 275 -> hash_nkeys + `H_NUMPAIRS ( g ); 277 P_IBTREE : 278 P_IRECNO : 279 P_LBTREE : 280 P_LRECNO : 281 P_LDUP : 287 `memt (& b , 0, (bstat)); 288 i(( t = `__bam__back ( dbp , g , & b , pu )) != 0) 289 ( t ); 290 -> hash_dup ++; 291 -> hash_dup_ + b . bt_af_pg + 292 b . bt_dup_pg + b. bt_t_pg ; 293 -> hash_nda + b . bt_nda ; 295 P_OVERFLOW : 296 -> hash_bigges ++; 297 -> hash_big_b + `P_OVFLSPACE ( dbp , dbp-> pgsize , g ); 300 ( `__db_pgfmt ( dbp -> dbv , `PGNO ( g ))); 304 } } 313 $__ham_t_curs ( dbc ) 314 DBC * dbc ; 316 cڡ FN [] = { 317 { H_CONTINUE , "H_CONTINUE" }, 318 { H_DELETED , "H_DELETED" }, 319 { H_DUPONLY , "H_DUPONLY" }, 320 { H_EXPAND , "H_EXPAND" }, 321 { H_ISDUP , "H_ISDUP" }, 322 { H_NEXT_NODUP , "H_NEXT_NODUP" }, 323 { H_NOMORE , "H_NOMORE" }, 324 { H_OK , "H_OK" }, 325 { 0, NULL } 327 DB_ENV * dbv ; 328 HASH_CURSOR * ; 330 dbv = dbc -> dbp ->dbenv; 331 = ( HASH_CURSOR *) dbc -> ; 333 `STAT_ULONG ("Buckvsg", -> buck ); 334 `STAT_ULONG ("Buckocked", -> lbuck ); 335 `STAT_ULONG ("Dui s offt", -> dup_off ); 336 `STAT_ULONG ("Cuduigth", -> dup_n ); 337 `STAT_ULONG ("Tٮ dui sgth", -> dup_ ); 338 `STAT_ULONG ("Byeded f܇dd", -> ek_size ); 339 `STAT_ULONG ("Pag which w", -> ek_found_ge ); 340 `STAT_ULONG ("Ord", -> d ); 341 `__db_ags ( dbv , NULL , -> ags , , NULL, "\tInternal Flags"); 342 } } 347 $__ham_ ( dbc , p , ags ) 348 DBC * dbc ; 349 * p ; 350 u_t32_t ags ; 352 `COMPQUIET ( p , NULL ); 353 `COMPQUIET ( ags , 0); 355 ( `__db__n_but ( dbc -> dbp -> dbv )); 356 } } 368 $__ham_av ( dbc , mode , back , cook , look__max ) 369 DBC * dbc ; 370 db_lockmode_t mode ; 371 (* back `__P (( DB *, PAGE *, *, *)); 372 * cook ; 373 look__max ; 375 DB * dbp ; 376 DBC * d ; 377 DB_MPOOLFILE * mpf ; 378 HASH_CURSOR * h ; 379 HKEYDATA * hk ; 380 db_pgno_t pgno , gno ; 381 did_put , i , t , t_t ; 382 u_t32_t buck , es_y ; 384 dbp = dbc ->dbp; 385 d = NULL ; 386 mpf = dbp ->mpf; 387 h = ( HASH_CURSOR *) dbc -> ; 388 t = 0; 399 buck = 0;; bucket++) { 414 i( look__max ) { 415 es_y = `__db_log2 ( buck + 1); 416 i( es_y > NCACHED || 417 h -> hdr -> es [ es_y ] == 0) 420 i( buck > h -> hdr -> max_buck ) 424 h -> buck = bucket; 425 h -> pgno =gn `BUCKET_TO_PAGE (h, buck ); 426 t = `__ham_g_age ( dbc , mode );et == 0; 427 t = `__ham_xt_age ( dbc , pgno )) { 436 i( `TYPE ( h -> ge = P_INVALID ) 438 pgno = `NEXT_PGNO ( h -> ge ); 446 i = 0; i < `NUM_ENT ( h -> ge ); i++) { 447 hk = ( HKEYDATA *) `P_ENTRY ( dbp , h -> ge , i ); 448 `HPAGE_PTYPE ( hk )) { 449 H_OFFDUP : 450 `memy (& gno , `HOFFDUP_PGNO ( hk ), 451 ( db_pgno_t )); 452 i(( t = `__dbc_wd ( dbc , 453 gno , NULL , & d )) != 0) 454 ( t ); 455 i(( t = `__bam_av ( d , 456 DB_LOCK_READ , gno , 457 back , cook )) 459 r ; 460 i(( t = `__dbc_o ( d )) != 0) 461 ( t ); 462 d = NULL ; 464 H_OFFPAGE : 472 `memy (& gno , `HOFFPAGE_PGNO ( hk ), 473 ( db_pgno_t )); 474 i(( t = `__db_av_big ( dbp , 475 gno , dbc -> txn , 476 back , cook )) != 0) 477 r ; 479 H_KEYDATA : 480 H_DUPLICATE : 483 t = `__db_unknown_th ( 484 dbp -> dbv , "__ham_traverse"); 485 r ; 490 i(( t = `back ( dbp , 491 h -> ge , cook , & did_put )) != 0) 492 r ; 494 i( did_put ) 495 h -> ge = NULL ; 496 i( pgno = PGNO_INVALID ) 499 i( t != 0) 500 r ; 502 i( h -> ge ! NULL ) { 503 i(( t = 504 `__memp_ut ( mpf , h -> ge , dbc -> iܙy )) != 0) 505 ( t ); 506 h -> ge = NULL ; 510 r : i( d ! NULL && 511 ( t_t = `__dbc_o ( d )!0 && t == 0) 512 t = t_t ; 513 ( t ); 514 } } @../hash/hash_stub.c 9 #ide HAVE_HASH 10 ~"db_cfig.h " 12 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/hash.h " 29 $__db_no_hash_am ( dbv ) 30 DB_ENV * dbv ; 32 `__db_rx ( dbv , 34 ( DB_OPNOTSUP ); 35 } } 38 $__ham_30_hashma ( dbp , _me , obuf ) 39 DB * dbp ; 40 * _me ; 41 u_t8_t * obuf ; 43 `COMPQUIET ( _me , NULL ); 44 `COMPQUIET ( obuf , NULL ); 45 ( `__db_no_hash_am ( dbp -> dbv )); 46 } } 49 $__ham_30_sizefix ( dbp , fhp , me , mabuf ) 50 DB * dbp ; 51 DB_FH * fhp ; 52 * me ; 53 u_t8_t * mabuf ; 55 `COMPQUIET ( fhp , NULL ); 56 `COMPQUIET ( me , NULL ); 57 `COMPQUIET ( mabuf , NULL ); 58 ( `__db_no_hash_am ( dbp -> dbv )); 59 } } 62 $__ham_31_hash ( dbp , _me , ags , fhp , h , dtyp ) 63 DB * dbp ; 64 * _me ; 65 u_t32_t ags ; 66 DB_FH * fhp ; 67 PAGE * h ; 68 * dtyp ; 70 `COMPQUIET ( _me , NULL ); 71 `COMPQUIET ( ags , 0); 72 `COMPQUIET ( fhp , NULL ); 73 `COMPQUIET ( h , NULL ); 74 `COMPQUIET ( dtyp , NULL ); 75 ( `__db_no_hash_am ( dbp -> dbv )); 76 } } 79 $__ham_31_hashma ( dbp , _me , ags , fhp , h , dtyp ) 80 DB * dbp ; 81 * _me ; 82 u_t32_t ags ; 83 DB_FH * fhp ; 84 PAGE * h ; 85 * dtyp ; 87 `COMPQUIET ( _me , NULL ); 88 `COMPQUIET ( ags , 0); 89 `COMPQUIET ( fhp , NULL ); 90 `COMPQUIET ( h , NULL ); 91 `COMPQUIET ( dtyp , NULL ); 92 ( `__db_no_hash_am ( dbp -> dbv )); 93 } } 96 $__ham_46_hash ( dbp , _me , ags , fhp , h , dtyp ) 97 DB * dbp ; 98 * _me ; 99 u_t32_t ags ; 100 DB_FH * fhp ; 101 PAGE * h ; 102 * dtyp ; 104 `COMPQUIET ( _me , NULL ); 105 `COMPQUIET ( ags , 0); 106 `COMPQUIET ( fhp , NULL ); 107 `COMPQUIET ( h , NULL ); 108 `COMPQUIET ( dtyp , NULL ); 109 ( `__db_no_hash_am ( dbp -> dbv )); 110 } } 113 $__ham_46_hashma ( dbp , _me , ags , fhp , h , dtyp ) 114 DB * dbp ; 115 * _me ; 116 u_t32_t ags ; 117 DB_FH * fhp ; 118 PAGE * h ; 119 * dtyp ; 121 `COMPQUIET ( _me , NULL ); 122 `COMPQUIET ( ags , 0); 123 `COMPQUIET ( fhp , NULL ); 124 `COMPQUIET ( h , NULL ); 125 `COMPQUIET ( dtyp , NULL ); 126 ( `__db_no_hash_am ( dbp -> dbv )); 127 } } 130 $__hamc_cou ( dbc , ) 131 DBC * dbc ; 132 db_o_t * ; 134 `COMPQUIET ( , NULL ); 135 ( `__db_no_hash_am ( dbc -> dbp -> dbv )); 136 } } 139 $__hamc_dup ( ig_dbc , w_dbc ) 140 DBC * ig_dbc , * w_dbc ; 142 `COMPQUIET ( w_dbc , NULL ); 143 ( `__db_no_hash_am ( ig_dbc -> dbp -> dbv )); 144 } } 147 $__hamc_ ( dbc ) 148 DBC * dbc ; 150 ( `__db_no_hash_am ( dbc -> dbp -> dbv )); 151 } } 154 $__ham_db_o ( dbp ) 155 DB * dbp ; 157 `COMPQUIET ( dbp , NULL ); 159 } } 162 $__ham_db_ ( dbp ) 163 DB * dbp ; 165 `COMPQUIET ( dbp , NULL ); 167 } } 170 $__ham__t ( dbv , dbp , dbsiz ) 171 DB_ENV * dbv ; 172 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 173 size_t * dbsiz ; 175 `COMPQUIET ( dbv , NULL ); 176 `COMPQUIET ( dbp , NULL ); 177 `COMPQUIET ( dbsiz , NULL ); 179 } } 182 $__ham__cov ( dbv , dbp , dbsiz ) 183 DB_ENV * dbv ; 184 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 185 size_t * dbsiz ; 187 `COMPQUIET ( dbv , NULL ); 188 `COMPQUIET ( dbp , NULL ); 189 `COMPQUIET ( dbsiz , NULL ); 191 } } 194 $__ham_ma2pgt ( dbp , vdp , hma , ags , pgt ) 195 DB * dbp ; 196 VRFY_DBINFO * vdp ; 197 HMETA * hma ; 198 u_t32_t ags ; 199 DB * pgt ; 201 `COMPQUIET ( vdp , NULL ); 202 `COMPQUIET ( hma , NULL ); 203 `COMPQUIET ( ags , 0); 204 `COMPQUIET ( pgt , NULL ); 205 ( `__db_no_hash_am ( dbp -> dbv )); 206 } } 209 $__ham_machk ( dbp , me , hashm ) 210 DB * dbp ; 211 cڡ * me ; 212 HMETA * hashm ; 214 `COMPQUIET ( me , NULL ); 215 `COMPQUIET ( hashm , NULL ); 216 ( `__db_no_hash_am ( dbp -> dbv )); 217 } } 220 $__ham_magroup_42_cov ( dbv , db , lp , , fo ) 221 DB_ENV * dbv ; 222 DBT * db ; 223 DB_LSN * lp ; 224 db_cs ; 225 * fo ; 227 `COMPQUIET ( db , NULL ); 228 `COMPQUIET ( lp , NULL ); 229 `COMPQUIET ( , 0); 230 `COMPQUIET ( fo , NULL ); 231 ( `__db_no_hash_am ( dbv )); 232 } } 235 $__ham_grouoc_42_cov ( dbv , db , lp , , fo ) 236 DB_ENV * dbv ; 237 DBT * db ; 238 DB_LSN * lp ; 239 db_cs ; 240 * fo ; 242 `COMPQUIET ( db , NULL ); 243 `COMPQUIET ( lp , NULL ); 244 `COMPQUIET ( , 0); 245 `COMPQUIET ( fo , NULL ); 246 ( `__db_no_hash_am ( dbv )); 247 } } 250 $__ham_w_fe ( dbp , txn , fhp , me ) 251 DB * dbp ; 252 DB_TXN * txn ; 253 DB_FH * fhp ; 254 cڡ * me ; 256 `COMPQUIET ( txn , NULL ); 257 `COMPQUIET ( fhp , NULL ); 258 `COMPQUIET ( me , NULL ); 259 ( `__db_no_hash_am ( dbp -> dbv )); 260 } } 263 $__ham_w_subdb ( mdbp , dbp , txn ) 264 DB * mdbp , * dbp ; 265 DB_TXN * txn ; 267 `COMPQUIET ( dbp , NULL ); 268 `COMPQUIET ( txn , NULL ); 269 ( `__db_no_hash_am ( mdbp -> dbv )); 270 } } 273 $__ham_ݒ ( dbp , txn , me , ba_pgno , ags ) 274 DB * dbp ; 275 DB_TXN * txn ; 276 cڡ * me ; 277 db_pgno_t ba_pgno ; 278 u_t32_t ags ; 280 `COMPQUIET ( txn , NULL ); 281 `COMPQUIET ( me , NULL ); 282 `COMPQUIET ( ba_pgno , 0); 283 `COMPQUIET ( ags , 0); 284 ( `__db_no_hash_am ( dbp -> dbv )); 285 } } 288 $__ham_pg ( dbv , dummydbp , pg , , cook ) 289 DB_ENV * dbv ; 290 DB * dummydbp ; 291 db_pgno_t pg ; 292 * ; 293 DBT * cook ; 295 `COMPQUIET ( dummydbp , NULL ); 296 `COMPQUIET ( pg , 0); 297 `COMPQUIET ( , NULL ); 298 `COMPQUIET ( cook , NULL ); 299 ( `__db_no_hash_am ( dbv )); 300 } } 303 $__ham_pgout ( dbv , dummydbp , pg , , cook ) 304 DB_ENV * dbv ; 305 DB * dummydbp ; 306 db_pgno_t pg ; 307 * ; 308 DBT * cook ; 310 `COMPQUIET ( dummydbp , NULL ); 311 `COMPQUIET ( pg , 0); 312 `COMPQUIET ( , NULL ); 313 `COMPQUIET ( cook , NULL ); 314 ( `__db_no_hash_am ( dbv )); 315 } } 318 $__ham_t_curs ( dbc ) 319 DBC * dbc ; 321 () `__db_no_hash_am ( dbc -> dbp -> dbv ); 322 } } 325 $__ham_quick_de ( dbc ) 326 DBC * dbc ; 328 ( `__db_no_hash_am ( dbc -> dbp -> dbv )); 329 } } 332 $__ham_aim ( dbp , txn ) 333 DB * dbp ; 334 DB_TXN * txn ; 336 `COMPQUIET ( txn , NULL ); 337 ( `__db_no_hash_am ( dbp -> dbv )); 338 } } 341 $__ham_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 342 DB * dbp ; 343 VRFY_DBINFO * vdp ; 344 db_pgno_t pgno ; 345 PAGE * h ; 346 * hd ; 347 (* back `__P ((*, const *)); 348 u_t32_t ags ; 350 `COMPQUIET ( vdp , NULL ); 351 `COMPQUIET ( pgno , 0); 352 `COMPQUIET ( h , NULL ); 353 `COMPQUIET ( hd , NULL ); 354 `COMPQUIET ( back , NULL ); 355 `COMPQUIET ( ags , 0); 356 ( `__db_no_hash_am ( dbp -> dbv )); 357 } } 360 $__ham_ ( dbc , p , ags ) 361 DBC * dbc ; 362 * p ; 363 u_t32_t ags ; 365 `COMPQUIET ( p , NULL ); 366 `COMPQUIET ( ags , 0); 367 ( `__db_no_hash_am ( dbc -> dbp -> dbv )); 368 } } 371 $__ham__t ( dbc , ags ) 372 DBC * dbc ; 373 u_t32_t ags ; 375 `COMPQUIET ( ags , 0); 376 ( `__db_no_hash_am ( dbc -> dbp -> dbv )); 377 } } 380 $__ham_un ( dbc , coup ) 381 DBC * dbc ; 382 u_t32_t * coup ; 384 `COMPQUIET ( dbc , NULL ); 385 `COMPQUIET ( coup , NULL ); 386 ( `__db_no_hash_am ( dbc -> dbp -> dbv )); 387 } } 390 $__ham_vrfy ( dbp , vdp , h , pgno , ags ) 391 DB * dbp ; 392 VRFY_DBINFO * vdp ; 393 PAGE * h ; 394 db_pgno_t pgno ; 395 u_t32_t ags ; 397 `COMPQUIET ( vdp , NULL ); 398 `COMPQUIET ( h , NULL ); 399 `COMPQUIET ( pgno , 0); 400 `COMPQUIET ( ags , 0); 401 ( `__db_no_hash_am ( dbp -> dbv )); 402 } } 405 $__ham_vrfy_hashg ( dbp , rs , m , thisbuck , pgno , ags , hfunc ) 406 DB * dbp ; 407 u_t32_t rs ; 408 HMETA * m ; 409 u_t32_t thisbuck ; 410 db_pgno_t pgno ; 411 u_t32_t ags ; 412 $u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 414 `COMPQUIET ( rs , 0); 415 `COMPQUIET ( m , NULL ); 416 `COMPQUIET ( thisbuck , 0); 417 `COMPQUIET ( pgno , 0); 418 `COMPQUIET ( ags , 0); 419 `COMPQUIET ( hfunc , NULL ); 420 ( `__db_no_hash_am ( dbp -> dbv )); 421 } } 424 $__ham_vrfy_ma ( dbp , vdp , m , pgno , ags ) 425 DB * dbp ; 426 VRFY_DBINFO * vdp ; 427 HMETA * m ; 428 db_pgno_t pgno ; 429 u_t32_t ags ; 431 `COMPQUIET ( vdp , NULL ); 432 `COMPQUIET ( m , NULL ); 433 `COMPQUIET ( pgno , 0); 434 `COMPQUIET ( ags , 0); 435 ( `__db_no_hash_am ( dbp -> dbv )); 436 } } 439 $__ham_vrfy_ruu ( dbp , vdp , ma_pgno , ags ) 440 DB * dbp ; 441 VRFY_DBINFO * vdp ; 442 db_pgno_t ma_pgno ; 443 u_t32_t ags ; 445 `COMPQUIET ( vdp , NULL ); 446 `COMPQUIET ( ma_pgno , 0); 447 `COMPQUIET ( ags , 0); 448 ( `__db_no_hash_am ( dbp -> dbv )); 449 } } @../hash/hash_upgrade.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/hash.h " 14 ~"dbc/db_upgde.h " 23 $__ham_30_hashma ( dbp , _me , obuf ) 24 DB * dbp ; 25 * _me ; 26 u_t8_t * obuf ; 28 DB_ENV * dbv ; 29 HASHHDR * dma ; 30 HMETA30 wma ; 31 u_t32_t * o_es , * n_es ; 32 u_t32_t flf , i , maxb , max_y , m ; 33 t ; 35 dbv = dbp ->dbenv; 36 `memt (& wma , 0, (newmeta)); 38 dma = ( HASHHDR *) obuf ; 45 wma . dbma . l = dma ->lsn; 46 wma . dbma . pgno = dma ->pgno; 47 wma . dbma . magic = dma ->magic; 48 wma . dbma . vsi = 6; 49 wma . dbma . gesize = dma ->pagesize; 50 wma . dbma . ty = P_HASHMETA ; 53 wma . dbma . ags = dma ->flags; 56 wma . dbma . = dma -> ϡ_d ; 59 wma . max_buck = dma ->max_bucket; 60 wma . high_mask = dma ->high_mask; 61 wma . low_mask = dma ->low_mask; 62 wma . f = dma ->ffactor; 63 wma . m = dma ->nelem; 64 wma . h_chkey = dma ->h_charkey; 72 m = wma .nelem; 73 flf = wma . f ; 74 maxb = wma . max_buck ; 76 i(( flf !0 && fl* maxb < 2 * m ) || 77 ( flf =0 && m > 0x8000000)) 78 wma . m = 0; 87 o_es = dma -> es ; 88 n_es = wma . es ; 89 max_y = `__db_log2 ( maxb + 1); 90 n_es [0] = 1; 91 i = 1; i < NCACHED && i < max_y ; i++) 92 n_es [ i ] = 1 + o_es [i - 1]; 95 i(( t = `__os_feid ( dbv , _me , 1, wma . dbma . uid )) != 0) 96 ( t ); 99 `memy ( dma , & wma , (newmeta)); 102 } } 112 $__ham_30_sizefix ( dbp , fhp , me , mabuf ) 113 DB * dbp ; 114 DB_FH * fhp ; 115 * me ; 116 u_t8_t * mabuf ; 118 u_t8_t buf [ DB_MAX_PGSIZE ]; 119 DB_ENV * dbv ; 120 HMETA30 * ma ; 121 db_pgno_t ϡ_au , ϡ_desed ; 122 t ; 123 size_t nw ; 124 u_t32_t gesize ; 126 dbv = dbp ->dbenv; 127 `memt ( buf , 0, DB_MAX_PGSIZE ); 129 ma = ( HMETA30 *) mabuf ; 130 gesize = ma -> dbma .pagesize; 136 dbp -> pgsize = gesize ; 137 i(( t = `__db_ϡpgno ( dbp , me , fhp , & ϡ_au )) != 0) 138 ( t ); 144 ϡ_desed = `BS_TO_PAGE ( ma -> high_mask , ma-> es ); 150 i( ϡ_desed > ϡ_au ) { 151 i(( t = `__os_ek ( 152 dbv , fhp , ϡ_desed , gesize , 0)) != 0) 153 ( t ); 154 i(( t = `__os_wre ( dbv , fhp , buf , gesize , & nw )) != 0) 155 ( t ); 159 } } 169 $__ham_31_hashma ( dbp , _me , ags , fhp , h , dtyp ) 170 DB * dbp ; 171 * _me ; 172 u_t32_t ags ; 173 DB_FH * fhp ; 174 PAGE * h ; 175 * dtyp ; 177 HMETA31 * wma ; 178 HMETA30 * dma ; 180 `COMPQUIET ( dbp , NULL ); 181 `COMPQUIET ( _me , NULL ); 182 `COMPQUIET ( fhp , NULL ); 184 wma = ( HMETA31 *) h ; 185 dma = ( HMETA30 *) h ; 191 `memmove ( wma -> es , dma ->spares, (oldmeta->spares)); 192 wma -> h_chkey = dma ->h_charkey; 193 wma -> m = dma ->nelem; 194 wma -> f = dma ->ffactor; 195 wma -> low_mask = dma ->low_mask; 196 wma -> high_mask = dma ->high_mask; 197 wma -> max_buck = dma ->max_bucket; 198 `memmove ( wma -> dbma . uid , 199 dma -> dbma . uid , (oldmeta->dbmeta.uid)); 200 wma -> dbma . ags = dma ->dbmeta.flags; 201 wma -> dbma . cd_cou = 0; 202 wma -> dbma . key_cou = 0; 203 `ZERO_LSN ( wma -> dbma . unud3 ); 206 wma -> dbma . vsi = 7; 209 i( `LF_ISSET ( DB_DUPSORT )) 210 `F_SET (& wma -> dbma , DB_HASH_DUPSORT ); 212 * dtyp = 1; 214 } } 224 $__ham_31_hash ( dbp , _me , ags , fhp , h , dtyp ) 225 DB * dbp ; 226 * _me ; 227 u_t32_t ags ; 228 DB_FH * fhp ; 229 PAGE * h ; 230 * dtyp ; 232 HKEYDATA * hk ; 233 db_pgno_t pgno , gno ; 234 db_dx_t dx ; 235 t ; 237 `COMPQUIET ( ags , 0); 239 t = 0; 240 dx = 0; indx < `NUM_ENT ( h ); indx += 2) { 241 hk = ( HKEYDATA *) `H_PAIRDATA ( dbp , h , dx ); 242 i( `HPAGE_PTYPE ( hk = H_OFFDUP ) { 243 `memy (& pgno , `HOFFDUP_PGNO ( hk ), ( db_pgno_t )); 244 gno = pgno ; 245 i(( t = `__db_31_offdup ( dbp , _me , fhp , 246 `LF_ISSET ( DB_DUPSORT ? 1 : 0, & gno )) != 0) 248 i( pgno ! gno ) { 249 * dtyp = 1; 250 `memy ( `HOFFDUP_PGNO ( hk ), 251 & gno , ( db_pgno_t )); 256 ( t ); 257 } } 267 $__ham_46_hashma ( dbp , _me , ags , fhp , h , dtyp ) 268 DB * dbp ; 269 * _me ; 270 u_t32_t ags ; 271 DB_FH * fhp ; 272 PAGE * h ; 273 * dtyp ; 275 HMETA33 * wma ; 277 `COMPQUIET ( dbp , NULL ); 278 `COMPQUIET ( _me , NULL ); 279 `COMPQUIET ( ags , 0); 280 `COMPQUIET ( fhp , NULL ); 282 wma = ( HMETA33 *) h ; 284 wma -> dbma . vsi = 9; 285 * dtyp = 1; 288 } } 300 $__ham_46_hash ( dbp , _me , ags , fhp , h , dtyp ) 301 DB * dbp ; 302 * _me ; 303 u_t32_t ags ; 304 DB_FH * fhp ; 305 PAGE * h ; 306 * dtyp ; 308 `COMPQUIET ( _me , NULL ); 309 `COMPQUIET ( ags , 0); 310 `COMPQUIET ( fhp , NULL ); 312 * dtyp = 1; 313 ( `__ham_st_ge ( dbp , NULL , NULL, h )); 314 } } @../hash/hash_verify.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_vify.h " 14 ~"dbc/b.h " 15 ~"dbc/hash.h " 16 ~"dbc/mp.h " 18 __ham_dups_uns܋d __P (( DB *, u_t8_t *, u_t32_t )); 19 __ham_vrfy_buck __P (( DB *, VRFY_DBINFO *, HMETA *, u_t32_t , 20 u_t32_t )); 21 __ham_vrfy_em __P (( DB *, 22 VRFY_DBINFO *, db_pgno_t , PAGE *, u_t32_t , u_int32_t)); 36 $__ham_vrfy_ma ( dbp , vdp , m , pgno , ags ) 37 DB * dbp ; 38 VRFY_DBINFO * vdp ; 39 HMETA * m ; 40 db_pgno_t pgno ; 41 u_t32_t ags ; 43 DB_ENV * dbv ; 44 HASH * hashp ; 45 VRFY_PAGEINFO * p ; 46 i , t , t_t , isbad ; 47 u_t32_t pwr , mbuck ; 48 `u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 50 dbv = dbp ->dbenv; 51 isbad = 0; 53 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 54 ( t ); 56 hashp = dbp -> h_ ; 58 i( hashp ! NULL && hashp-> h_hash != NULL) 59 hfunc = hashp -> h_hash ; 61 hfunc = __ham_func5 ; 67 i(! `F_ISSET ( p , VRFY_INCOMPLETE ) && 68 ( t = `__db_vrfy_ma ( dbp , vdp , & m -> dbma , pgno , ags )) != 0) { 69 i( t = DB_VERIFY_BAD ) 70 isbad = 1; 72 r ; 76 i(! `LF_ISSET ( DB_NOORDERCHK )) 77 i( m -> h_chkey ! `hfunc ( dbp , CHARKEY , (CHARKEY))) { 78 `EPRINT (( dbv , 80 ( u_lg ) pgno )); 86 isbad = 1; 87 r ; 91 i( m -> max_buck > vdp -> ϡ_pgno ) { 92 `EPRINT (( dbv , 94 ( u_lg ) pgno , (u_lg) m -> max_buck )); 100 isbad = 1; 101 r ; 109 pwr = ( m -> max_buck =0? 1 : 1 << `__db_log2 (m->max_bucket + 1); 110 i( m -> high_mask ! pwr - 1) { 111 `EPRINT (( dbv , 113 ( u_lg ) pgno , (u_lg) m -> high_mask , (u_lg) pwr - 1)); 114 isbad = 1; 116 pwr >>= 1; 117 i( m -> low_mask ! pwr - 1) { 118 `EPRINT (( dbv , 120 ( u_lg ) pgno , (u_lg) m -> low_mask , (u_lg) pwr - 1)); 121 isbad = 1; 125 p -> h_f = m -> f ; 132 i( m -> m > 0x80000000) { 133 `EPRINT (( dbv , 135 ( u_lg ) pgno , (u_lg) m -> m )); 136 isbad = 1; 137 p -> h_m = 0; 139 p -> h_m = m -> m ; 142 i( `F_ISSET (& m -> dbma , DB_HASH_DUP )) 143 `F_SET ( p , VRFY_HAS_DUPS ); 144 i( `F_ISSET (& m -> dbma , DB_HASH_DUPSORT )) 145 `F_SET ( p , VRFY_HAS_DUPSORT ); 149 i = 0; m -> es [i] !0 && i < NCACHED ; i++) { 155 mbuck = (1 << i ) - 1; 156 i( `BS_TO_PAGE ( mbuck , m -> es > vdp -> ϡ_pgno ) { 157 `EPRINT (( dbv , 159 ( u_lg ) pgno , i )); 160 isbad = 1; 164 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 165 t = t_t ; 166 i( `LF_ISSET ( DB_SALVAGE ) && 167 ( t_t = `__db_lvage_mkde ( vdp , pgno )!0 && t == 0) 168 t = t_t ; 169 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 170 } } 180 $__ham_vrfy ( dbp , vdp , h , pgno , ags ) 181 DB * dbp ; 182 VRFY_DBINFO * vdp ; 183 PAGE * h ; 184 db_pgno_t pgno ; 185 u_t32_t ags ; 187 DB_ENV * dbv ; 188 VRFY_PAGEINFO * p ; 189 u_t32_t t , himk , nd ; 190 db_dx_t * p ; 191 isbad , t , t_t ; 193 dbv = dbp ->dbenv; 194 isbad = 0; 196 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 197 ( t ); 199 i( `TYPE ( h ! P_HASH && TYPE(h! P_HASH_UNSORTED ) { 200 t = `__db_unknown_th ( dbv , "__ham_vrfy"); 201 r ; 205 i(( t = `__db_vrfy_dage ( dbp , vdp , h , pgno , ags )) != 0) { 206 i( t = DB_VERIFY_BAD ) 207 isbad = 1; 209 r ; 220 p = `P_INP ( dbp , h ); 221 t = 0, himk = dbp -> pgsize , 222 nd = ( u_t32_t )(( u_t8_t *) p - (u_t8_*) h ); 223 t < `NUM_ENT ( h );nt++) 224 i( p [ t ] > himk ) { 225 `EPRINT (( dbv , 227 ( u_lg ) pgno , (u_lg) t )); 228 isbad = 1; 229 r ; 230 } i( nd > himk ) { 231 `EPRINT (( dbv , 233 ( u_lg ) pgno )); 234 isbad = 1; 235 r ; 238 himk = p [ t ]; 239 nd +( db_dx_t ); 240 i(( t = `__ham_vrfy_em ( 241 dbp , vdp , pgno , h , t , ags )) != 0) 242 r ; 245 i(! `LF_ISSET ( DB_NOORDERCHK && `TYPE ( h = P_HASH && 246 ( t = `__ham_vify_s܋d_ge ( dbp , NULL , h )) != 0) 247 isbad = 1; 249 r : i(( t_t = 250 `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 251 t = t_t ; 252 ( t =0 && isbad =1 ? DB_VERIFY_BAD :et); 253 } } 261 $__ham_vrfy_em ( dbp , vdp , pgno , h , i , ags ) 262 DB * dbp ; 263 VRFY_DBINFO * vdp ; 264 db_pgno_t pgno ; 265 PAGE * h ; 266 u_t32_t i , ags ; 268 HOFFPAGE h ; 269 HOFFDUP hod ; 270 VRFY_CHILDINFO chd ; 271 VRFY_PAGEINFO * p ; 272 db_dx_t offt , n , dn , ; 273 t , t_t ; 274 u_t8_t * dabuf ; 276 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 277 ( t ); 279 `HPAGE_TYPE ( dbp , h , i )) { 280 H_KEYDATA : 283 H_DUPLICATE : 285 i( i % 2 == 0) { 286 `EPRINT (( dbp -> dbv , 288 ( u_lg ) p -> pgno , (u_lg) i )); 300 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , i ); 301 dabuf = `HKEYDATA_DATA ( `P_ENTRY ( dbp , h , i )); 302 offt = 0; off< n ; off+ `DUP_SIZE ( dn )) { 303 `memy (& dn , dabuf + offt , ( db_dx_t )); 306 i( offt + `DUP_SIZE ( dn > n ) { 307 `EPRINT (( dbp -> dbv , 309 ( u_lg ) p -> pgno , (u_lg) i )); 310 t = DB_VERIFY_BAD ; 311 r ; 318 `memy (& , 319 dabuf + offt + dn + ( db_dx_t ), 320 ( db_dx_t )); 321 i( ! dn ) { 322 `EPRINT (( dbp -> dbv , 324 ( u_lg ) p -> pgno , (u_lg) i )); 325 t = DB_VERIFY_BAD ; 326 r ; 329 `F_SET ( p , VRFY_HAS_DUPS ); 330 i(! `LF_ISSET ( DB_NOORDERCHK ) && 331 `__ham_dups_uns܋d ( dbp , dabuf , n )) 332 `F_SET ( p , VRFY_DUPS_UNSORTED ); 334 H_OFFPAGE : 336 `memy (& h , `P_ENTRY ( dbp , h , i ), HOFFPAGE_SIZE ); 337 i(! `IS_VALID_PGNO ( h . pgno || h.pgn= p ->pgno || 338 h . pgno = PGNO_INVALID ) { 339 `EPRINT (( dbp -> dbv , 341 ( u_lg ) p -> pgno , (u_lg) i , (u_lg) h .pgno)); 342 t = DB_VERIFY_BAD ; 343 r ; 345 `memt (& chd , 0, ( VRFY_CHILDINFO )); 346 chd . pgno = h .pgno; 347 chd . ty = V_OVERFLOW ; 348 chd . = h .tlen; 349 i(( t = `__db_vrfy_chdput ( vdp , p -> pgno , & chd )) != 0) 350 r ; 352 H_OFFDUP : 354 `memy (& hod , `P_ENTRY ( dbp , h , i ), HOFFDUP_SIZE ); 355 i(! `IS_VALID_PGNO ( hod . pgno || hod.pgn= p ->pgno || 356 hod . pgno = PGNO_INVALID ) { 357 `EPRINT (( dbp -> dbv , 359 ( u_lg ) p -> pgno , (u_lg) i )); 360 t = DB_VERIFY_BAD ; 361 r ; 363 `memt (& chd , 0, ( VRFY_CHILDINFO )); 364 chd . pgno = hod .pgno; 365 chd . ty = V_DUPLICATE ; 366 i(( t = `__db_vrfy_chdput ( vdp , p -> pgno , & chd )) != 0) 367 r ; 368 `F_SET ( p , VRFY_HAS_DUPS ); 371 `EPRINT (( dbp -> dbv , 373 ( u_lg ) p -> pgno , (u_lg) i )); 374 t = DB_VERIFY_BAD ; 378 r : i(( t_t = 379 `__db_vrfy_puagefo ( dbp -> dbv , vdp , p )!0 && t == 0) 380 t = t_t ; 381 ( t ); 382 } } 392 $__ham_vrfy_ruu ( dbp , vdp , ma_pgno , ags ) 393 DB * dbp ; 394 VRFY_DBINFO * vdp ; 395 db_pgno_t ma_pgno ; 396 u_t32_t ags ; 398 DB * pgt ; 399 DB_MPOOLFILE * mpf ; 400 HMETA * m ; 401 PAGE * h ; 402 VRFY_PAGEINFO * p ; 403 isbad , p , t , t_t ; 404 db_pgno_t pgno ; 405 u_t32_t buck , es_y ; 407 mpf = dbp ->mpf; 408 pgt = vdp ->pgset; 409 h = NULL ; 410 t = isbad = 0; 412 i(( t = `__db_vrfy_pgt_g ( pgt , ma_pgno , & p )) != 0) 413 ( t ); 414 i( p != 0) { 415 `EPRINT (( dbp -> dbv , 417 ( u_lg ) ma_pgno )); 418 ( DB_VERIFY_BAD ); 420 i(( t = `__db_vrfy_pgt_c ( pgt , ma_pgno )) != 0) 421 ( t ); 424 i(( t = `__memp_fg ( mpf , & ma_pgno , NULL , 0, & m )) != 0) 425 ( t ); 428 buck = 0; buck < m -> max_buck ; bucket++) 429 i(( t = 430 `__ham_vrfy_buck ( dbp , vdp , m , buck , ags )) != 0) { 431 i( t = DB_VERIFY_BAD ) 432 isbad = 1; 434 r ; 450 buck = m -> max_buck + 1; es_y = `__db_log2 (bucket + 1), 451 es_y < NCACHED && m -> es [es_y] !0; buck ++) { 452 pgno = `BS_TO_PAGE ( buck , m -> es ); 453 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 454 r ; 457 `F_CLR ( p , VRFY_IS_ALLZEROES ); 460 i( p -> ty = P_INVALID ) { 461 i(( t = `__db_vrfy_puagefo ( dbp -> dbv , 462 vdp , p )) != 0) 463 r ; 467 i( p -> ty ! P_HASH &&->ty ! P_HASH_UNSORTED ) { 468 `EPRINT (( dbp -> dbv , 470 ( u_lg ) pgno , (u_lg) buck )); 471 isbad = 1; 472 } i( p -> s != 0) { 473 `EPRINT (( dbp -> dbv , 475 ( u_lg ) pgno , (u_lg) buck )); 476 isbad = 1; 478 i(( t = `__db_vrfy_pgt_g ( pgt , pgno , & p )) != 0) 479 r ; 480 i( p != 0) { 481 `EPRINT (( dbp -> dbv , 483 ( u_lg ) pgno )); 484 isbad = 1; 486 i(( t = 487 `__db_vrfy_pgt_c ( pgt , pgno )) != 0) 488 r ; 489 i(( t = `__db_vrfy_puagefo ( dbp -> dbv , 490 vdp , p )) != 0) 491 r ; 497 () `__db_vrfy_puagefo ( dbp -> dbv , vdp , p ); 498 r ; 501 r : i(( t_t = `__memp_ut ( mpf , m , dbp -> iܙy )) != 0) 502 ( t_t ); 503 i( h ! NULL && ( t_t = `__memp_ut ( mpf , h, dbp -> iܙy )) != 0) 504 ( t_t ); 505 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 506 } } 513 $__ham_vrfy_buck ( dbp , vdp , m , buck , ags ) 514 DB * dbp ; 515 VRFY_DBINFO * vdp ; 516 HMETA * m ; 517 u_t32_t buck , ags ; 519 DB_ENV * dbv ; 520 HASH * hashp ; 521 VRFY_CHILDINFO * chd ; 522 VRFY_PAGEINFO * m , * p ; 523 t , t_t , isbad , p ; 524 db_pgno_t pgno , xt_pgno ; 525 DBC * cc ; 526 `u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 528 dbv = dbp ->dbenv; 529 isbad = 0; 530 p = NULL ; 531 cc = NULL ; 533 hashp = dbp -> h_ ; 534 i( hashp ! NULL && hashp-> h_hash != NULL) 535 hfunc = hashp -> h_hash ; 537 hfunc = __ham_func5 ; 539 i(( t = `__db_vrfy_ggefo ( vdp , `PGNO ( m ), & m )) != 0) 540 ( t ); 543 pgno = `BS_TO_PAGE ( buck , m -> es ); 545 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 546 r ; 549 i( pgno > vdp -> ϡ_pgno || 550 ( p -> ty ! P_HASH &&->ty ! P_HASH_UNSORTED )) { 551 `EPRINT (( dbv , 553 ( u_lg ) pgno , (u_lg) buck )); 555 isbad = 1; 556 r ; 559 i( p -> ev_pgno ! PGNO_INVALID ) { 560 `EPRINT (( dbv , 562 ( u_lg ) pgno , (u_lg) buck )); 563 isbad = 1; 569 ags | `F_ISSET ( m , VRFY_HAS_DUPS ? ST_DUPOK : 0; 570 ags | `F_ISSET ( m , VRFY_HAS_DUPSORT ? ST_DUPSORT : 0; 575 i(! `LF_ISSET ( DB_SALVAGE )) 576 `__db_vrfy_ru_edback ( dbp , vdp ); 578 i(( t = `__db_vrfy_pgt_g ( vdp -> pgt , pgno , & p )) != 0) 579 r ; 580 i( p != 0) { 581 `EPRINT (( dbv , 583 ( u_lg ) pgno )); 584 isbad = 1; 586 r ; 587 } i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , pgno )) != 0) 588 r ; 600 `F_CLR ( p , VRFY_IS_ALLZEROES ); 603 i( `F_ISSET ( p , VRFY_HAS_DUPS ) && 604 ! `F_ISSET ( m , VRFY_HAS_DUPS )) { 605 `EPRINT (( dbv , 607 ( u_lg ) pgno )); 608 isbad = 1; 615 i( `F_ISSET ( m , VRFY_HAS_DUPSORT ) && 616 `F_ISSET ( p , VRFY_DUPS_UNSORTED )) { 617 `EPRINT (( dbv , 619 ( u_lg ) pgno )); 620 isbad = 1; 624 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 625 r ; 626 t = `__db_vrfy_cct ( cc , p -> pgno , & chd );et == 0; 627 t = `__db_vrfy_cext ( cc , & chd )) 628 i( chd -> ty = V_OVERFLOW ) { 629 i(( t = `__db_vrfy_ov_ruu ( dbp , vdp , 630 chd -> pgno , chd-> , 631 ags | ST_OVFL_LEAF )) != 0) { 632 i( t = DB_VERIFY_BAD ) 633 isbad = 1; 635 r ; 637 } i( chd -> ty = V_DUPLICATE ) { 638 i(( t = `__db_vrfy_duy ( dbp , 639 vdp , chd -> pgno , ags )) != 0) { 640 isbad = 1; 643 i(( t = `__bam_vrfy_sub ( dbp , vdp , 644 chd -> pgno , NULL , NULL, 645 ags | ST_RECNUM | ST_DUPSET | ST_TOPLEVEL , 646 NULL , NULL, NULL)) != 0) { 647 i( t = DB_VERIFY_BAD ) 648 isbad = 1; 650 r ; 653 i(( t = `__db_vrfy_cco ( cc )) != 0) 654 r ; 655 cc = NULL ; 658 i( isbad =0 && ! `LF_ISSET ( DB_NOORDERCHK ) && 659 ( t = `__ham_vrfy_hashg ( dbp , p -> s , 660 m , buck , pgno , ags , hfunc )) != 0) { 661 i( t = DB_VERIFY_BAD ) 662 isbad = 1; 664 r ; 667 xt_pgno = p ->next_pgno; 668 t = `__db_vrfy_puagefo ( dbv , vdp , p ); 670 p = NULL ; 671 i( t != 0) 672 r ; 674 i( xt_pgno = PGNO_INVALID ) 678 i(! `IS_VALID_PGNO ( xt_pgno )) { 679 `EPRINT (( dbv , 681 ( u_lg ) pgno )); 682 isbad = 1; 683 r ; 686 i(( t = `__db_vrfy_ggefo ( vdp , xt_pgno , & p )) != 0) 687 r ; 689 i( p -> ev_pgno ! pgno ) { 690 `EPRINT (( dbv , 692 ( u_lg ) xt_pgno )); 693 isbad = 1; 695 pgno = xt_pgno ; 698 r : i( cc ! NULL && (( t_t = `__db_vrfy_cco (cc)!0&& t == 0) 699 t = t_t ; 700 i( m ! NULL && (( t_t = 701 `__db_vrfy_puagefo ( dbv , vdp , m )!0&& t == 0) 702 t = t_t ; 703 i( p ! NULL && (( t_t = 704 `__db_vrfy_puagefo ( dbv , vdp , p )!0&& t == 0) 705 t = t_t ; 706 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 707 } } 718 $__ham_vrfy_hashg ( dbp , rs , m , thisbuck , pgno , ags , hfunc ) 719 DB * dbp ; 720 u_t32_t rs ; 721 HMETA * m ; 722 u_t32_t thisbuck ; 723 db_pgno_t pgno ; 724 u_t32_t ags ; 725 $u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 727 DBT dbt ; 728 DB_MPOOLFILE * mpf ; 729 PAGE * h ; 730 db_dx_t i ; 731 t , t_t , isbad ; 732 u_t32_t hv , buck ; 734 mpf = dbp ->mpf; 735 t = isbad = 0; 737 `memt (& dbt , 0, ( DBT )); 738 `F_SET (& dbt , DB_DBT_REALLOC ); 740 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 741 ( t ); 743 i = 0; i < rs ; i += 2) { 752 i(( t = `__db_t ( dbp , NULL , h , i , & dbt , NULL, NULL)) != 0) 753 r ; 754 hv = `hfunc ( dbp , dbt . da , dbt. size ); 756 buck = hv & m -> high_mask ; 757 i( buck > m -> max_buck ) 758 buck = buck & m -> low_mask ; 760 i( buck ! thisbuck ) { 761 `EPRINT (( dbp -> dbv , 763 ( u_lg ) pgno , (u_lg) i )); 764 isbad = 1; 768 r : i( dbt . da ! NULL ) 769 `__os_u ( dbp -> dbv , dbt . da ); 770 i(( t_t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) 771 ( t_t ); 773 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 774 } } 785 $__ham_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 786 DB * dbp ; 787 VRFY_DBINFO * vdp ; 788 db_pgno_t pgno ; 789 PAGE * h ; 790 * hd ; 791 (* back `__P ((*, const *)); 792 u_t32_t ags ; 794 DBT dbt , unkdbt ; 795 db_pgno_t dpgno ; 796 t , r_t , t_t ; 797 u_t32_t himk , i ; 798 u_t8_t * hk , * p ; 799 * buf ; 800 db_dx_t dn , n , ; 802 `memt (& dbt , 0, ( DBT )); 803 dbt . ags = DB_DBT_REALLOC ; 805 `DB_INIT_DBT ( unkdbt , "UNKNOWN", ("UNKNOWN") - 1); 807 r_t = 0; 813 i(( t = `__os_mloc ( dbp -> dbv , dbp-> pgsize , & buf )) != 0) 814 ( t ); 816 himk = dbp -> pgsize ; 817 i = 0;; i++) { 819 i(! `LF_ISSET ( DB_AGGRESSIVE && i > `NUM_ENT ( h )) 823 t = `__db_vrfy_pem ( dbp , 824 h , pgno , i , 0, ags , & himk , NULL ); 826 i( t = DB_VERIFY_FATAL ) 829 i( t == 0) { 831 n = `LEN_HITEM ( dbp , h , dbp-> pgsize , i ); 832 hk = `P_ENTRY ( dbp , h , i ); 833 i( n =0 || > dbp -> pgsize || 834 ( u_t32_t )( hk + n - ( u_t8_t *) h ) > 835 dbp -> pgsize ) { 837 r_t = DB_VERIFY_BAD ; 840 `HPAGE_PTYPE ( hk )) { 842 i(! `LF_ISSET ( DB_AGGRESSIVE )) 844 r_t = DB_VERIFY_BAD ; 846 H_KEYDATA : 848 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , i ); 849 keyda : `memy ( buf , `HKEYDATA_DATA ( hk ), n ); 850 dbt . size = n ; 851 dbt . da = buf ; 852 i(( t = `__db_vrfy_dbt (& dbt , 853 0, " ", hd , back , 0, vdp )) != 0) 854 r_t = t ; 856 H_OFFPAGE : 857 i( n < HOFFPAGE_SIZE ) { 858 r_t = DB_VERIFY_BAD ; 861 `memy (& dpgno , 862 `HOFFPAGE_PGNO ( hk ), ( dpgno )); 863 i(( t = `__db__goff ( dbp , vdp , 864 dpgno , & dbt , & buf , ags )) != 0) { 865 r_t = t ; 866 () `__db_vrfy_dbt (& unkdbt , 0, " ", 867 hd , back , 0, vdp ); 870 i(( t = `__db_vrfy_dbt (& dbt , 871 0, " ", hd , back , 0, vdp )) != 0) 872 r_t = t ; 874 H_OFFDUP : 875 i( n < HOFFDUP_SIZE ) { 876 r_t = DB_VERIFY_BAD ; 879 `memy (& dpgno , 880 `HOFFDUP_PGNO ( hk ), ( dpgno )); 882 i(! `IS_VALID_PGNO ( dpgno || ( i % 2 == 0)) { 883 i(( t = 884 `__db_vrfy_dbt (& unkdbt , 0, " ", 885 hd , back , 0, vdp )) != 0) 886 r_t = t ; 887 } i(( t = `__db_lvage_due ( dbp , 888 vdp , dpgno , & dbt , hd , back , 889 ags | SA_SKIPFIRSTKEY )) != 0) 890 r_t = t ; 892 H_DUPLICATE : 893 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , i ); 900 i( i % 2 == 0) { 901 r_t = t ; 902 i( `LF_ISSET ( DB_AGGRESSIVE )) 903 keyda ; 913 i( n < 914 `HKEYDATA_SIZE (2 * ( db_dx_t ))) { 915 r_t = DB_VERIFY_BAD ; 920 = 0;+ ( db_dx_t < n ; 921 + dn ) { 922 p = `HKEYDATA_DATA ( hk + ; 923 +( db_dx_t ); 924 `memy (& dn , p , ( db_dx_t )); 925 p +( db_dx_t ); 930 i( dn + > n ) 931 dn = n - ; 932 `memy ( buf , p , dn ); 933 dbt . size = dn ; 934 dbt . da = buf ; 935 i(( t = `__db_vrfy_dbt (& dbt , 0, " ", 936 hd , back , 0, vdp )) != 0) 937 r_t = t ; 938 +( db_dx_t ); 945 `__os_ ( dbp -> dbv , buf ); 946 i(( t_t = `__db_lvage_mkde ( vdp , pgno )) != 0) 947 ( t_t ); 948 (( t =0 && r_t != 0) ?rr_ret :et); 949 } } 960 $__ham_ma2pgt ( dbp , vdp , hma , ags , pgt ) 961 DB * dbp ; 962 VRFY_DBINFO * vdp ; 963 HMETA * hma ; 964 u_t32_t ags ; 965 DB * pgt ; 967 DB_MPOOLFILE * mpf ; 968 PAGE * h ; 969 db_pgno_t pgno ; 970 u_t32_t buck , tpgs ; 971 t , v ; 977 `COMPQUIET ( ags , 0); 979 `DB_ASSERT ( dbp -> dbv , pgt ! NULL ); 981 mpf = dbp ->mpf; 982 tpgs = 0; 988 buck = 0; buck < hma -> max_buck ; bucket++) { 989 pgno = `BS_TO_PAGE ( buck , hma -> es ); 998 i(( t = `__memp_fg ( mpf , & pgno , NULL , 0, & h )) != 0) 999 ( t ); 1000 i( `TYPE ( h = P_HASH || TYPE(h= P_HASH_UNSORTED ) { 1006 i(++ tpgs > vdp -> ϡ_pgno ) { 1007 () `__memp_ut ( mpf , 1008 h , dbp -> iܙy ); 1009 ( DB_VERIFY_BAD ); 1011 i(( t = 1012 `__db_vrfy_pgt_c ( pgt , pgno )) != 0) { 1013 () `__memp_ut ( mpf , 1014 h , dbp -> iܙy ); 1015 ( t ); 1018 pgno = `NEXT_PGNO ( h ); 1020 pgno = PGNO_INVALID ; 1022 i(( t = `__memp_ut ( mpf , h , dbp -> iܙy )) != 0) 1023 ( t ); 1026 i(! `IS_VALID_PGNO ( pgno ) || 1027 pgno = PGNO_INVALID ) 1034 i(( t = `__db_vrfy_pgt_g ( pgt , pgno , & v )) != 0) 1035 ( t ); 1036 i( v != 0) 1041 } } 1050 $__ham_dups_uns܋d ( dbp , buf , n ) 1051 DB * dbp ; 1052 u_t8_t * buf ; 1053 u_t32_t n ; 1055 DBT a , b ; 1056 db_dx_t offt , dn ; 1057 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1059 `memt (& a , 0, ( DBT )); 1060 `memt (& b , 0, ( DBT )); 1062 func = ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 1069 offt = 0; off< n ; off+ `DUP_SIZE ( dn )) { 1070 `memy (& dn , buf + offt , ( db_dx_t )); 1071 b . da = buf + offt + ( db_dx_t ); 1072 b . size = dn ; 1074 i( a . da ! NULL && `func ( dbp , &a, & b ) > 0) 1077 a . da = b .data; 1078 a . size = b .size; 1082 } } @../hmac/hmac.c 12 ~"db_cfig.h " 14 ~"db_t.h " 15 ~"dbc/yo.h " 16 ~"dbc/db_ge.h " 17 ~"dbc/hash.h " 18 ~"dbc/hmac.h " 19 ~"dbc/log.h " 21 #HMAC_OUTPUT_SIZE 20 ) 22 #HMAC_BLOCK_SIZE 64 ) 24 __db_hmac __P (( u_t8_t *, u_t8_*, size_t , u_int8_t *)); 41 $__db_hmac ( k , da , da_n , mac ) 42 u_t8_t * k , * da , * mac ; 43 size_t da_n ; 45 SHA1_CTX x ; 46 u_t8_t key [ HMAC_BLOCK_SIZE ]; 47 u_t8_t ad [ HMAC_BLOCK_SIZE ]; 48 u_t8_t ad [ HMAC_BLOCK_SIZE ]; 49 u_t8_t tmp [ HMAC_OUTPUT_SIZE ]; 50 i ; 52 `memt ( key , 0x00, HMAC_BLOCK_SIZE ); 53 `memt ( ad , 0x36, HMAC_BLOCK_SIZE ); 54 `memt ( ad , 0x5C, HMAC_BLOCK_SIZE ); 56 `memy ( key , k , HMAC_OUTPUT_SIZE ); 58 i = 0; i < HMAC_BLOCK_SIZE ; i++) { 59 ad [ i ] ^ key [i]; 60 ad [ i ] ^ key [i]; 63 `__db_SHA1In (& x ); 64 `__db_SHA1Upde (& x , ad , HMAC_BLOCK_SIZE ); 65 `__db_SHA1Upde (& x , da , da_n ); 66 `__db_SHA1F ( tmp , & x ); 67 `__db_SHA1In (& x ); 68 `__db_SHA1Upde (& x , ad , HMAC_BLOCK_SIZE ); 69 `__db_SHA1Upde (& x , tmp , HMAC_OUTPUT_SIZE ); 70 `__db_SHA1F ( mac , & x ); 72 } } 82 $__db_chksum ( hdr , da , da_n , mac_key , e ) 83 * hdr ; 84 u_t8_t * da ; 85 size_t da_n ; 86 u_t8_t * mac_key ; 87 u_t8_t * e ; 89 sumn ; 90 u_t32_t hash4 ; 102 i( mac_key = NULL ) 103 sumn = ( u_t32_t ); 105 sumn = DB_MAC_KEY ; 106 i( hdr = NULL ) 107 `memt ( e , 0, sumn ); 109 e = (( HDR *) hdr )-> chksum ; 110 i( mac_key = NULL ) { 112 hash4 = `__ham_func4 ( NULL , da , ( u_t32_t ) da_n ); 113 i( hdr ! NULL ) 114 hash4 ^(( HDR *) hdr )-> ev ^ ((HDR *)hdr)-> n ; 115 `memy ( e , & hash4 , sumn ); 117 `__db_hmac ( mac_key , da , da_n , e ); 118 i( hdr != 0) { 119 ((*) e )[0] ^(( HDR *) hdr )-> ev ; 120 ((*) e )[1] ^(( HDR *) hdr )-> n ; 124 } } 132 $__db_dive_mac ( sswd , , mac_key ) 133 u_t8_t * sswd ; 134 size_t ; 135 u_t8_t * mac_key ; 137 SHA1_CTX x ; 140 `__db_SHA1In (& x ); 141 `__db_SHA1Upde (& x , sswd , ); 142 `__db_SHA1Upde (& x , ( u_t8_t *) DB_MAC_MAGIC , ` (DB_MAC_MAGIC)); 143 `__db_SHA1Upde (& x , sswd , ); 144 `__db_SHA1F ( mac_key , & x ); 147 } } 159 $__db_check_chksum ( dbv , hdr , db_ch , chksum , da , da_n , is_hmac ) 160 DB_ENV * dbv ; 161 * hdr ; 162 DB_CIPHER * db_ch ; 163 u_t8_t * chksum ; 164 * da ; 165 size_t da_n ; 166 is_hmac ; 168 t ; 169 size_t sum_n ; 170 u_t32_t hash4 ; 171 u_t8_t * mac_key , d [ DB_MAC_KEY ], w [DB_MAC_KEY]; 178 i( is_hmac == 0) { 179 i( db_ch ! NULL ) { 180 `__db_rx ( dbv , 182 ( EINVAL ); 184 sum_n = ( u_t32_t ); 185 mac_key = NULL ; 187 i( db_ch = NULL ) { 188 `__db_rx ( dbv , 190 ( EINVAL ); 192 sum_n = DB_MAC_KEY ; 193 mac_key = db_ch ->mac_key; 203 y : 204 i( hdr = NULL ) { 205 `memy ( d , chksum , sum_n ); 206 `memt ( chksum , 0, sum_n ); 207 chksum = d ; 210 i( mac_key = NULL ) { 212 hash4 = `__ham_func4 ( NULL , da , ( u_t32_t ) da_n ); 213 i( hdr ! NULL ) 214 `LOG_HDR_SUM (0, hdr , & hash4 ); 215 t = `memcmp (( u_t32_t *) chksum , & hash4 , sum_n ) ? -1 : 0; 217 `__db_hmac ( mac_key , da , da_n , w ); 218 i( hdr ! NULL ) 219 `LOG_HDR_SUM (1, hdr , w ); 220 t = `memcmp ( chksum , w , sum_n ) ? -1 : 0; 228 i( hdr ! NULL && t != 0) { 229 hdr = NULL ; 230 y ; 233 ( t ); 234 } } @../hmac/sha1.c 5 ~"db_cfig.h " 7 ~"db_t.h " 8 ~"dbc/hmac.h " 79 #SHA1HANDSOFF ) 84 #r ( vue , bs (((vue<< (bs)| ((vue>> (32 - (bs)))) ) 88 #blk0 ( i is_bigdn ? block -> l [i] : \ 89 ( block -> l [ i ] = ( `r (block->l[i],24)&0xFF00FF00) \ 90 |( `r ( block -> l [ i ],8)&0x00FF00FF)) ) 91 #blk ( i ( block -> l [i&15] = `r (block->l[(i+13)&15]^block->l[(i+8)&15] \ 92 ^ block -> l [( i +2)&15]^block->l[i&15],1)) ) 95 #R0 ( v , w , x , y , z , i z+=((w&(x^y))^y)+ `blk0 (i)+0x5A827999+ `r (v,5);w(w,30); ) 96 #R1 ( v , w , x , y , z , i z+=((w&(x^y))^y)+ `blk (i)+0x5A827999+ `r (v,5);w(w,30); ) 97 #R2 ( v , w , x , y , z , i z+=(w^x^y)+ `blk (i)+0x6ED9EBA1+ `r (v,5);w(w,30); ) 98 #R3 ( v , w , x , y , z , i z+=(((w|x)&y)|(w&x))+ `blk (i)+0x8F1BBCDC+ `r (v,5);w(w,30); ) 99 #R4 ( v , w , x , y , z , i z+=(w^x^y)+ `blk (i)+0xCA62C1D6+ `r (v,5);w(w,30); ) 101 #ifde VERBOSE 102 __db_SHAPrtCڋxt __P (( SHA1_CTX *, *)); 104 $__db_SHAPrtCڋxt ( cڋxt , msg ) 105 SHA1_CTX * cڋxt ; 106 * msg ; 108 `tf ("%s (%d,%d) %x %x %x %x %x\n", 109 msg , 110 cڋxt -> cou [0], context->count[1], 111 cڋxt -> e [0], 112 cڋxt -> e [1], 113 cڋxt -> e [2], 114 cڋxt -> e [3], 115 cڋxt -> e [4]); 116 } } 127 $__db_SHA1Tnsfm ( e , bufr ) 128 u_t32_t * e ; 129 * bufr ; 131 u_t32_t a , b , c , d , e ; 133 c [64]; 134 u_t32_t l [16]; 135 } tCHAR64LONG16 ; 136 CHAR64LONG16 * block ; 137 is_bigdn ; 138 #ifde SHA1HANDSOFF 139 wka [64]; 141 block = ( CHAR64LONG16 *) wka ; 142 `memy ( block , bufr , 64); 144 block = ( CHAR64LONG16 *) bufr ; 146 is_bigdn = `__db_isbigdn (); 149 a = e [0]; 150 b = e [1]; 151 c = e [2]; 152 d = e [3]; 153 e = e [4]; 155 `R0 ( a , b , c , d , e , 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3); 156 `R0 ( b , c , d , e , a , 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7); 157 `R0 ( c , d , e , a , b , 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11); 158 `R0 ( d , e , a , b , c ,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15); 159 `R1 ( e , a , b , c , d ,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19); 160 `R2 ( a , b , c , d , e ,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23); 161 `R2 ( b , c , d , e , a ,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27); 162 `R2 ( c , d , e , a , b ,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31); 163 `R2 ( d , e , a , b , c ,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35); 164 `R2 ( e , a , b , c , d ,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39); 165 `R3 ( a , b , c , d , e ,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43); 166 `R3 ( b , c , d , e , a ,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47); 167 `R3 ( c , d , e , a , b ,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51); 168 `R3 ( d , e , a , b , c ,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55); 169 `R3 ( e , a , b , c , d ,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59); 170 `R4 ( a , b , c , d , e ,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63); 171 `R4 ( b , c , d , e , a ,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67); 172 `R4 ( c , d , e , a , b ,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71); 173 `R4 ( d , e , a , b , c ,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75); 174 `R4 ( e , a , b , c , d ,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79); 176 e [0] + a ; 177 e [1] + b ; 178 e [2] + c ; 179 e [3] + d ; 180 e [4] + e ; 182 a = b = c = d = e = 0; 183 } } 194 $__db_SHA1In ( cڋxt ) 195 SHA1_CTX * cڋxt ; 198 cڋxt -> e [0] = 0x67452301; 199 cڋxt -> e [1] = 0xEFCDAB89; 200 cڋxt -> e [2] = 0x98BADCFE; 201 cڋxt -> e [3] = 0x10325476; 202 cڋxt -> e [4] = 0xC3D2E1F0; 203 cڋxt -> cou [0] = context->count[1] = 0; 204 } } 216 $__db_SHA1Upde ( cڋxt , da , n ) 217 SHA1_CTX * cڋxt ; 218 * da ; 219 size_t n ; 221 u_t32_t i , j ; 223 #ifde VERBOSE 224 `__db_SHAPrtCڋxt ( cڋxt , "before"); 226 j = ( cڋxt -> cou [0] >> 3) & 63; 227 i(( cڋxt -> cou [0] +( u_t32_t ) n << 3) < (len << 3)) context->count[1]++; 228 cڋxt -> cou [1] +( u_t32_t )( n >> 29); 229 i(( j + n ) > 63) { 230 `memy (& cڋxt -> bufr [ j ], da , ( i = 64-j)); 231 `__db_SHA1Tnsfm ( cڋxt -> e , cڋxt-> bufr ); 232 ; i + 63 < n ; i += 64) { 233 `__db_SHA1Tnsfm ( cڋxt -> e , & da [ i ]); 235 j = 0; 237 i = 0; 238 `memy (& cڋxt -> bufr [ j ], & da [ i ], n - i); 239 #ifde VERBOSE 240 `__db_SHAPrtCڋxt ( cڋxt , "after "); 242 } } 253 $__db_SHA1F ( dige , cڋxt ) 254 * dige ; 255 SHA1_CTX * cڋxt ; 257 u_t32_t i ; 258 fcou [8]; 260 i = 0; i < 8; i++) { 261 fcou [ i ] = ()(( cڋxt -> cou [(i >= 4 ? 0 : 1)] 262 >> ((3-( i & 3)) * 8) ) & 255); 264 `__db_SHA1Upde ( cڋxt , (*)"\200", 1); 265 ( cڋxt -> cou [0] & 504) != 448) { 266 `__db_SHA1Upde ( cڋxt , (*)"\0", 1); 268 `__db_SHA1Upde ( cڋxt , fcou , 8); 270 i = 0; i < 20; i++) { 271 dige [ i ] = () 272 (( cڋxt -> e [ i >>2] >> ((3-(i & 3)) * 8) ) & 255); 275 i = 0; 276 `memt ( cڋxt -> bufr , 0, 64); 277 `memt ( cڋxt -> e , 0, 20); 278 `memt ( cڋxt -> cou , 0, 8); 279 `memt ( fcou , 0, 8); 280 #ifde SHA1HANDSOFF 281 `__db_SHA1Tnsfm ( cڋxt -> e , cڋxt-> bufr ); 283 } } @../hsearch/hsearch.c 44 #DB_DBM_HSEARCH 1 ) 45 ~"db_cfig.h " 47 ~"db_t.h " 49 DB * gdbp ; 50 ENTRY gtv ; 65 $__db_h ( l ) 66 size_t l ; 68 t ; 70 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 71 `__os_t_o ( t ); 75 i(( t = dbp -> `t_gesize (dbp, 512)) != 0 || 76 ( t = dbp -> `t_h_f (dbp, 16)) != 0 || 77 ( t = dbp -> `t_h_m (dbp, ( u_t32_t ) l )) != 0 || 78 ( t = dbp -> `ݒ (dbp, NULL , 79 NULL , NULL, DB_HASH , DB_CREATE , `__db_omode ( OWNER_RW ))) != 0) 80 `__os_t_o ( t ); 86 ( t == 0 ? 1 : 0); 87 } } 89 ENTRY * 90 $__db_hch ( em , ai ) 91 ENTRY em ; 92 ACTION ai ; 94 DBT key , v ; 95 t ; 97 i( dbp = NULL ) { 98 `__os_t_o ( EINVAL ); 99 ( NULL ); 101 `DB_INIT_DBT ( key , em .key, ` (item.key) + 1); 102 `memt (& v , 0, (val)); 104 ai ) { 105 ENTER : 106 `DB_SET_DBT ( v , em . da , ` (item.data) + 1); 112 i(( t = 113 dbp -> `put (dbp, NULL , & key , & v , DB_NOOVERWRITE )) == 0) 115 i( t = DB_KEYEXIST && 116 ( t = dbp -> `g (dbp, NULL , & key , & v , 0)) == 0) 122 `__os_t_o ( t > 0 ? : EINVAL ); 123 ( NULL ); 124 FIND : 125 i(( t = dbp -> `g (dbp, NULL , & key , & v , 0)) != 0) { 126 i( t ! DB_NOTFOUND ) 127 `__os_t_o ( t ); 128 ( NULL ); 130 em . da = (*) v .data; 133 `__os_t_o ( EINVAL ); 134 ( NULL ); 136 tv . key = em .key; 137 tv . da = em .data; 138 (& tv ); 139 } } 142 $__db_hderoy () 144 i( dbp ! NULL ) { 145 () dbp -> `o (dbp, 0); 146 dbp = NULL ; 148 } } @../libdb_java/db_java_wrap.c 1 ~"db_cfig.h " 18 #ide SWIGTEMPLATEDISAMBIGUATOR 19 #i defed ( __SUNPRO_CC ) 20 #i( __SUNPRO_CC <= 0x560) 21 #SWIGTEMPLATEDISAMBIGUATOR me ) 23 #SWIGTEMPLATEDISAMBIGUATOR ) 26 #SWIGTEMPLATEDISAMBIGUATOR ) 31 #ide SWIGINLINE 32 #i defed ( __lulus || (defed( __GNUC__ && !defed( __STRICT_ANSI__ )) 33 #SWIGINLINE le ) 35 #SWIGINLINE ) 40 #ide SWIGUNUSED 41 #i defed ( __GNUC__ ) 42 #i!( defed ( __lulus )|| ( __GNUC__ > 3 || (__GNUC__ =3 && __GNUC_MINOR__ >= 4)) 43 #SWIGUNUSED `__ibu__ (( __unud__ )) ) 45 #SWIGUNUSED ) 47 #i defed ( __ICC ) 48 #SWIGUNUSED `__ibu__ (( __unud__ )) ) 50 #SWIGUNUSED ) 54 #ide SWIGUNUSEDPARM 55 #ifde __lulus 56 #SWIGUNUSEDPARM ( p ) ) 58 #SWIGUNUSEDPARM ( p SWIGUNUSED ) 63 #ide SWIGINTERN 64 #SWIGINTERN SWIGUNUSED ) 68 #ide SWIGINTERNINLINE 69 #SWIGINTERNINLINE SWIGINTERN SWIGINLINE ) 73 #i( __GNUC__ >4|| (__GNUC__ =3 && __GNUC_MINOR__ >= 4) 74 #ide GCC_HASCLASSVISIBILITY 75 #GCC_HASCLASSVISIBILITY ) 79 #ide SWIGEXPORT 80 #i defed ( _WIN32 || defed( __WIN32__ || defed( __CYGWIN__ ) 81 #i defed ( STATIC_LINKED ) 82 #SWIGEXPORT ) 84 #SWIGEXPORT `__deec ( dexpt ) ) 87 #i defed ( __GNUC__ && defed( GCC_HASCLASSVISIBILITY ) 88 #SWIGEXPORT `__ibu__ (( `visiby ("deu"))) ) 90 #SWIGEXPORT ) 96 #ide SWIGSTDCALL 97 #i defed ( _WIN32 || defed( __WIN32__ || defed( __CYGWIN__ ) 98 #SWIGSTDCALL __d ) 100 #SWIGSTDCALL ) 105 #i! defed ( SWIG_NO_CRT_SECURE_NO_DEPRECATE && defed( _MSC_VER ) 106 #unde _CRT_SECURE_NO_DEPRECATE 107 #_CRT_SECURE_NO_DEPRECATE ) 112 #i defed ( __GNUC__ && !defed( __INTELC__ ) 113 t__t64 ; 117 #i defed ( __x86_64 ) 118 #ifde _LP64 119 #unde _LP64 123 ~<jni.h > 124 ~<dlib.h > 125 ~<rg.h > 130 mSWIG_JavaOutOfMemyE = 1, 131 mSWIG_JavaIOExi , 132 mSWIG_JavaRuimeExi , 133 mSWIG_JavaIndexOutOfBoundsExi , 134 mSWIG_JavaArhmicExi , 135 mSWIG_JavaIegArgumtExi , 136 mSWIG_JavaNuPorExi , 137 mSWIG_JavaDePuVtu , 138 mSWIG_JavaUnknownE 139 } tSWIG_JavaExiCodes ; 142 SWIG_JavaExiCodes mcode ; 143 cڡ * mjava_exi ; 144 } tSWIG_JavaExis_t ; 147 SWIGUNUSED $SWIG_JavaThrowExi ( JNIEnv * jv , SWIG_JavaExiCodes code , cڡ * msg ) { 148 jass exp ; 149 cڡ SWIG_JavaExis_t java_exis [] = { 150 { SWIG_JavaOutOfMemyE , "java/lang/OutOfMemoryError" }, 151 { SWIG_JavaIOExi , "java/io/IOException" }, 152 { SWIG_JavaRuimeExi , "java/lang/RuntimeException" }, 153 { SWIG_JavaIndexOutOfBoundsExi , "java/lang/IndexOutOfBoundsException" }, 154 { SWIG_JavaArhmicExi , "java/lang/ArithmeticException" }, 155 { SWIG_JavaIegArgumtExi , "java/lang/IllegalArgumentException" }, 156 { SWIG_JavaNuPorExi , "java/lang/NullPointerException" }, 157 { SWIG_JavaDePuVtu , "java/lang/RuntimeException" }, 158 { SWIG_JavaUnknownE , "java/lang/UnknownError" }, 159 { ( SWIG_JavaExiCodes )0, "java/lang/UnknownError" } }; 160 cڡ SWIG_JavaExis_t * ex_r = java_exis ; 162 ex_r -> code != code &&xcept_ptr->code) 163 ex_r ++; 165 (* jv )-> `ExiCˬ (jenv); 166 exp = (* jv )-> `FdCss (jv, ex_r -> java_exi ); 167 i( exp ) 168 (* jv )-> `ThrowNew (jv, exp , msg ); 169 } } 174 #SWIG_cڌa_as ( nuλtu , ex , msg i(!x){ `SWIG_JavaThrowExi ( jv , SWIG_JavaIegArgumtExi , msg); uλtu; } ) 177 ~"db_t.h " 178 ~"dbc/txn.h " 180 #ifde HAVE_CRYPTO 181 #CRYPTO_ONLY ( x (x); ) 183 #CRYPTO_ONLY ( x ) ) 188 #SWIG_NOINCLUDE 1 ) 190 #DB_ENV_INTERNAL ( dbv ((dbv)-> i2_ ) ) 191 #DB_INTERNAL ( db ((db)-> i_ ) ) 193 #DB_PKG "com/pyt/db/" ) 196 __dbj_throw ( JNIEnv * jv , 197 r , cڡ * msg , jobje obj , jobje jdbv ); 200 JavaVM * gjavavm ; 202 jass gdb_ass , gdbc_ass , gdbv_ass , gdbt_ass , gdbl_ass ; 203 jass gdbli_ass , gdbtxn_ass ; 204 jass gkeynge_ass ; 205 jass gbt__ass , gcom_ass , gh__ass , glock__ass ; 206 jass glog__ass , gmpo__ass , gmpo_f_ass ; 207 jass gmux__ass , gqam__ass , gp__ass ; 208 jass gpmgr__ass , gpho_ass , gq__ass , gtxn__ass ; 209 jass gtxn_aive_ass ; 210 jass glock_ass , glockq_ass ; 211 jass gdbex_ass , gddex_ass , glockex_ass , gmemex_ass ; 212 jass gpdupmaex_ass , gphdddex_ass ; 213 jass gphdeiex_ass , gpjoex_ass ; 214 jass gexpedex_ass , gtimeoux_ass ; 215 jass gockoux_ass , gpuvaex_ass ; 216 jass gruex_ass , gvsiex_ass ; 217 jass gffoundex_ass , gggex_ass , goutofmemr_ass ; 218 jass gbyy_ass , grg_ass , gouutam_ass ; 220 jfldID gdbc__fid ; 221 jfldID gdbl_fe_fid , gdbl_offt_fid ; 222 jfldID gdbt_da_fid , gdbt_da_nio_fid , gdbt_size_fid , gdbt_un_fid ; 223 jfldID gdbt_dn_fid , gdbt_doff_fid , gdbt_ags_fid , gdbt_offt_fid ; 224 jfldID gkr_ss_fid , gkr_equ_fid , gkr_g_fid ; 225 jfldID glock__fid ; 226 jfldID glockq__fid , glockq_modeag_fid , glockq_timeout_fid ; 227 jfldID glockq_obj_fid , glockq_lock_fid ; 228 jfldID gpho_pt_fid , gpho_ho_fid , gpho_eid_fid ; 229 jfldID gpho_us_fid ; 232 jfldID gbt__bt_magic_fid ; 233 jfldID gbt__bt_vsi_fid ; 234 jfldID gbt__bt_maags_fid ; 235 jfldID gbt__bt_nkeys_fid ; 236 jfldID gbt__bt_nda_fid ; 237 jfldID gbt__bt_get_fid ; 238 jfldID gbt__bt_gesize_fid ; 239 jfldID gbt__bt_mkey_fid ; 240 jfldID gbt__bt__n_fid ; 241 jfldID gbt__bt__d_fid ; 242 jfldID gbt__bt_vs_fid ; 243 jfldID gbt__bt_t_pg_fid ; 244 jfldID gbt__bt_af_pg_fid ; 245 jfldID gbt__bt_dup_pg_fid ; 246 jfldID gbt__bt_ov_pg_fid ; 247 jfldID gbt__bt_emy_pg_fid ; 248 jfldID gbt__bt__fid ; 249 jfldID gbt__bt_t_pg_fid ; 250 jfldID gbt__bt_af_pg_fid ; 251 jfldID gbt__bt_dup_pg_fid ; 252 jfldID gbt__bt_ov_pg_fid ; 253 jfldID gcom_com_f͔_fid ; 254 jfldID gcom_com_timeout_fid ; 255 jfldID gcom_com_ges_fid ; 256 jfldID gcom_com_ges__fid ; 257 jfldID gcom_com_ges_exame_fid ; 258 jfldID gcom_com_vs_fid ; 259 jfldID gcom_com_ddlock_fid ; 260 jfldID gcom_com_ges_und_fid ; 261 jfldID gcom_com_un_fid ; 262 jfldID gh__hash_magic_fid ; 263 jfldID gh__hash_vsi_fid ; 264 jfldID gh__hash_maags_fid ; 265 jfldID gh__hash_nkeys_fid ; 266 jfldID gh__hash_nda_fid ; 267 jfldID gh__hash_get_fid ; 268 jfldID gh__hash_gesize_fid ; 269 jfldID gh__hash_f_fid ; 270 jfldID gh__hash_bucks_fid ; 271 jfldID gh__hash__fid ; 272 jfldID gh__hash_b_fid ; 273 jfldID gh__hash_bigges_fid ; 274 jfldID gh__hash_big_b_fid ; 275 jfldID gh__hash_ovows_fid ; 276 jfldID gh__hash_ov__fid ; 277 jfldID gh__hash_dup_fid ; 278 jfldID gh__hash_dup__fid ; 279 jfldID glock___id_fid ; 280 jfldID glock___cur_maxid_fid ; 281 jfldID glock___maxlocks_fid ; 282 jfldID glock___maxlocks_fid ; 283 jfldID glock___maxobjes_fid ; 284 jfldID glock___nmodes_fid ; 285 jfldID glock___ocks_fid ; 286 jfldID glock___ocks_fid ; 287 jfldID glock___maxocks_fid ; 288 jfldID glock___maxocks_fid ; 289 jfldID glock___nobjes_fid ; 290 jfldID glock___maxnobjes_fid ; 291 jfldID glock___eques_fid ; 292 jfldID glock___Ės_fid ; 293 jfldID glock___nupgde_fid ; 294 jfldID glock___ndowngde_fid ; 295 jfldID glock___lock_wa_fid ; 296 jfldID glock___lock_nowa_fid ; 297 jfldID glock___nddlocks_fid ; 298 jfldID glock___locktimeout_fid ; 299 jfldID glock___ocktimeouts_fid ; 300 jfldID glock___tximeout_fid ; 301 jfldID glock___ximeouts_fid ; 302 jfldID glock___objs_wa_fid ; 303 jfldID glock___objs_nowa_fid ; 304 jfldID glock___locks_wa_fid ; 305 jfldID glock___locks_nowa_fid ; 306 jfldID glock___locks_wa_fid ; 307 jfldID glock___locks_nowa_fid ; 308 jfldID glock___gi_wa_fid ; 309 jfldID glock___gi_nowa_fid ; 310 jfldID glock___hash_n_fid ; 311 jfldID glock___gsize_fid ; 312 jfldID glog___magic_fid ; 313 jfldID glog___vsi_fid ; 314 jfldID glog___mode_fid ; 315 jfldID glog___lg_bsize_fid ; 316 jfldID glog___lg_size_fid ; 317 jfldID glog___wc_bys_fid ; 318 jfldID glog___wc_mbys_fid ; 319 jfldID glog___cd_fid ; 320 jfldID glog___w_bys_fid ; 321 jfldID glog___w_mbys_fid ; 322 jfldID glog___wcou_fid ; 323 jfldID glog___wcou_fl_fid ; 324 jfldID glog___rcou_fid ; 325 jfldID glog___scou_fid ; 326 jfldID glog___gi_wa_fid ; 327 jfldID glog___gi_nowa_fid ; 328 jfldID glog___cur_fe_fid ; 329 jfldID glog___cur_offt_fid ; 330 jfldID glog___disk_fe_fid ; 331 jfldID glog___disk_offt_fid ; 332 jfldID glog___maxcommrush_fid ; 333 jfldID glog___mcommrush_fid ; 334 jfldID glog___gsize_fid ; 335 jfldID gmpo_f_fe_me_fid ; 336 jfldID gmpo_f__gesize_fid ; 337 jfldID gmpo_f__m_fid ; 338 jfldID gmpo_f__che_h_fid ; 339 jfldID gmpo_f__che_miss_fid ; 340 jfldID gmpo_f__ge__fid ; 341 jfldID gmpo_f__ge__fid ; 342 jfldID gmpo_f__ge_out_fid ; 343 jfldID gmpo___gbys_fid ; 344 jfldID gmpo___bys_fid ; 345 jfldID gmpo___nche_fid ; 346 jfldID gmpo___max_nche_fid ; 347 jfldID gmpo___mmsize_fid ; 348 jfldID gmpo___maxݒfd_fid ; 349 jfldID gmpo___maxwre_fid ; 350 jfldID gmpo___maxwre_p_fid ; 351 jfldID gmpo___ges_fid ; 352 jfldID gmpo___m_fid ; 353 jfldID gmpo___che_h_fid ; 354 jfldID gmpo___che_miss_fid ; 355 jfldID gmpo___ge__fid ; 356 jfldID gmpo___ge__fid ; 357 jfldID gmpo___ge_out_fid ; 358 jfldID gmpo___ro_evi_fid ; 359 jfldID gmpo___rw_evi_fid ; 360 jfldID gmpo___ge_ick_fid ; 361 jfldID gmpo___ge_n_fid ; 362 jfldID gmpo___ge_dty_fid ; 363 jfldID gmpo___hash_bucks_fid ; 364 jfldID gmpo___hash_ches_fid ; 365 jfldID gmpo___hash_lge_fid ; 366 jfldID gmpo___hash_examed_fid ; 367 jfldID gmpo___hash_nowa_fid ; 368 jfldID gmpo___hash_wa_fid ; 369 jfldID gmpo___hash_max_nowa_fid ; 370 jfldID gmpo___hash_max_wa_fid ; 371 jfldID gmpo___gi_nowa_fid ; 372 jfldID gmpo___gi_wa_fid ; 373 jfldID gmpo___mvcc_oz_fid ; 374 jfldID gmpo___mvcc_thawed_fid ; 375 jfldID gmpo___mvcc_d_fid ; 376 jfldID gmpo___loc_fid ; 377 jfldID gmpo___loc_bucks_fid ; 378 jfldID gmpo___loc_max_bucks_fid ; 379 jfldID gmpo___loc_ges_fid ; 380 jfldID gmpo___loc_max_ges_fid ; 381 jfldID gmpo___io_wa_fid ; 382 jfldID gmpo___gsize_fid ; 383 jfldID gmux___mux_ign_fid ; 384 jfldID gmux___mux_s_s_fid ; 385 jfldID gmux___mux_t_fid ; 386 jfldID gmux___mux__fid ; 387 jfldID gmux___mux_u_fid ; 388 jfldID gmux___mux_u_max_fid ; 389 jfldID gmux___gi_wa_fid ; 390 jfldID gmux___gi_nowa_fid ; 391 jfldID gmux___gsize_fid ; 392 jfldID gqam__qs_magic_fid ; 393 jfldID gqam__qs_vsi_fid ; 394 jfldID gqam__qs_maags_fid ; 395 jfldID gqam__qs_nkeys_fid ; 396 jfldID gqam__qs_nda_fid ; 397 jfldID gqam__qs_gesize_fid ; 398 jfldID gqam__qs_exsize_fid ; 399 jfldID gqam__qs_ges_fid ; 400 jfldID gqam__qs__n_fid ; 401 jfldID gqam__qs__d_fid ; 402 jfldID gqam__qs_pg_fid ; 403 jfldID gqam__qs_f_o_fid ; 404 jfldID gqam__qs_cur_o_fid ; 405 jfldID gp___log_queued_fid ; 406 jfldID gp___tup_come_fid ; 407 jfldID gp___us_fid ; 408 jfldID gp___xt_l_fid ; 409 jfldID gp___wag_l_fid ; 410 jfldID gp___xt_pg_fid ; 411 jfldID gp___wag_pg_fid ; 412 jfldID gp___dupmas_fid ; 413 jfldID gp___v_id_fid ; 414 jfldID gp___v_iܙy_fid ; 415 jfldID gp___bulk_fls_fid ; 416 jfldID gp___bulk_ovows_fid ; 417 jfldID gp___bulk_cds_fid ; 418 jfldID gp___bulk_srs_fid ; 419 jfldID gp____ques_fid ; 420 jfldID gp____svc_q_fid ; 421 jfldID gp____svc_miss_fid ; 422 jfldID gp___g_fid ; 423 jfldID gp___eg_fid ; 424 jfldID gp___log_duid_fid ; 425 jfldID gp___log_queued_max_fid ; 426 jfldID gp___log_queued_tٮ_fid ; 427 jfldID gp___log_cds_fid ; 428 jfldID gp___log_queed_fid ; 429 jfldID gp___ma_fid ; 430 jfldID gp___ma_chges_fid ; 431 jfldID gp___msgs_badg_fid ; 432 jfldID gp___msgs_osd_fid ; 433 jfldID gp___msgs_cov_fid ; 434 jfldID gp___msgs_nd_us_fid ; 435 jfldID gp___msgs__fid ; 436 jfldID gp___wses_fid ; 437 jfldID gp___nses_fid ; 438 jfldID gp___hrَes_fid ; 439 jfldID gp___outded_fid ; 440 jfldID gp___pg_duid_fid ; 441 jfldID gp___pg_cds_fid ; 442 jfldID gp___pg_queed_fid ; 443 jfldID gp___txns_d_fid ; 444 jfldID gp___tsync_dayed_fid ; 445 jfldID gp___eis_fid ; 446 jfldID gp___eis_w_fid ; 447 jfldID gp___ei_cur_wr_fid ; 448 jfldID gp___ei_g_fid ; 449 jfldID gp___ei_l_fid ; 450 jfldID gp___ei_nses_fid ; 451 jfldID gp___ei_nves_fid ; 452 jfldID gp___ei_iܙy_fid ; 453 jfldID gp___ei_us_fid ; 454 jfldID gp___ei_tbak_fid ; 455 jfldID gp___ei_ves_fid ; 456 jfldID gp___ei_c_fid ; 457 jfldID gp___ei_uc_fid ; 458 jfldID gpmgr___rm_ed_fid ; 459 jfldID gpmgr___msgs_queued_fid ; 460 jfldID gpmgr___msgs_drݳd_fid ; 461 jfldID gpmgr___ci_dr_fid ; 462 jfldID gpmgr___c__fid ; 463 jfldID gq___wa_fid ; 464 jfldID gq___nowa_fid ; 465 jfldID gq___cut_fid ; 466 jfldID gq___vue_fid ; 467 jfldID gq___ϡ_vue_fid ; 468 jfldID gq___m_fid ; 469 jfldID gq___max_fid ; 470 jfldID gq___che_size_fid ; 471 jfldID gq___ags_fid ; 472 jfldID gtxn___ees_fid ; 473 jfldID gtxn___ϡ_ckp_fid ; 474 jfldID gtxn___time_ckp_fid ; 475 jfldID gtxn___ϡ_txnid_fid ; 476 jfldID gtxn___maxtxns_fid ; 477 jfldID gtxn___bts_fid ; 478 jfldID gtxn___nbegs_fid ; 479 jfldID gtxn___ncomms_fid ; 480 jfldID gtxn___ive_fid ; 481 jfldID gtxn___nsh_fid ; 482 jfldID gtxn___maxive_fid ; 483 jfldID gtxn___maxnsh_fid ; 484 jfldID gtxn___txǼay_fid ; 485 jfldID gtxn___gi_wa_fid ; 486 jfldID gtxn___gi_nowa_fid ; 487 jfldID gtxn___gsize_fid ; 488 jfldID gtxn_aive_txnid_fid ; 489 jfldID gtxn_aive_id_fid ; 490 jfldID gtxn_aive_pid_fid ; 491 jfldID gtxn_aive_l_fid ; 492 jfldID gtxn_aive_ad_l_fid ; 493 jfldID gtxn_aive_mvcc_f_fid ; 494 jfldID gtxn_aive_us_fid ; 495 jfldID gtxn_aive_xa_us_fid ; 496 jfldID gtxn_aive_xid_fid ; 497 jfldID gtxn_aive_me_fid ; 500 jmhodID gdbv_cڡru , gdbt_cڡru , gdbl_cڡru ; 501 jmhodID gdbli_cڡru , gdbtxn_cڡru ; 502 jmhodID gbt__cڡru , gg_r_msg_mhod , gh__cڡru ; 503 jmhodID glock__cڡru , glog__cڡru ; 504 jmhodID gmpo__cڡru , gmpo_f_cڡru ; 505 jmhodID gmux__cڡru , gqam__cڡru ; 506 jmhodID gp__cڡru , gpmgr__cڡru , gq__cڡru ; 507 jmhodID gtxn__cڡru , gtxn_aive_cڡru ; 508 jmhodID gdbex_cڡru , gddex_cڡru , glockex_cڡru ; 509 jmhodID gmemex_cڡru , gmemex_upde_mhod ; 510 jmhodID gpdupmaex_cڡru , gphdddex_cڡru ; 511 jmhodID gphdeiex_cڡru , gpjoex_cڡru ; 512 jmhodID gpho_cڡru , gexpedex_cڡru ; 513 jmhodID gtimeoux_cڡru , gockoux_cڡru ; 514 jmhodID gpuvaex_cڡru ; 515 jmhodID gruex_cڡru , gvsiex_cڡru ; 516 jmhodID gffoundex_cڡru , gggex_cڡru ; 517 jmhodID goutofmemr_cڡru ; 518 jmhodID glock_cڡru ; 520 jmhodID gp_dich_mhod , gr_mhod , gv_edback_mhod ; 521 jmhodID gmsg_mhod , gnic_mhod , gp_t_mhod ; 522 jmhodID gnic_evt_nify_mhod , gp__evt_nify_mhod ; 523 jmhodID gp_eed_evt_nify_mhod ; 524 jmhodID gp_ma_evt_nify_mhod ; 525 jmhodID gp_w_ma_evt_nify_mhod ; 526 jmhodID gp_rm_ed_evt_nify_mhod ; 527 jmhodID gp_tup_de_evt_nify_mhod ; 528 jmhodID gwre_ed_evt_nify_mhod ; 530 jmhodID gnd_o_mhod , gbt_com_mhod , gbt_efix_mhod ; 531 jmhodID gdb_edback_mhod , gdup_com_mhod , gh_com_mhod ; 532 jmhodID gh_hash_mhod , gckey__mhod ; 534 jmhodID gouutam_wre_mhod ; 537 jass * m ; 538 cڡ * mme ; 539 } gl_ass [] = { 540 { & dbv_ass , DB_PKG "internal/DbEnv" }, 541 { & db_ass , DB_PKG "internal/Db" }, 542 { & dbc_ass , DB_PKG "internal/Dbc" }, 543 { & dbt_ass , DB_PKG "DatabaseEntry" }, 544 { & dbl_ass , DB_PKG "LogSequenceNumber" }, 545 { & dbli_ass , DB_PKG "PreparedTransaction" }, 546 { & dbtxn_ass , DB_PKG "internal/DbTxn" }, 548 { & bt__ass , DB_PKG "BtreeStats" }, 549 { & com_ass , DB_PKG "CompactStats" }, 550 { & h__ass , DB_PKG "HashStats" }, 551 { & lock__ass , DB_PKG "LockStats" }, 552 { & log__ass , DB_PKG "LogStats" }, 553 { & mpo_f_ass , DB_PKG "CacheFileStats" }, 554 { & mpo__ass , DB_PKG "CacheStats" }, 555 { & mux__ass , DB_PKG "MutexStats" }, 556 { & qam__ass , DB_PKG "QueueStats" }, 557 { & p__ass , DB_PKG "ReplicationStats" }, 558 { & pmgr__ass , DB_PKG "ReplicationManagerStats" }, 559 { & q__ass , DB_PKG "SequenceStats" }, 560 { & txn__ass , DB_PKG "TransactionStats" }, 561 { & txn_aive_ass , DB_PKG "TransactionStats$Active" }, 563 { & keynge_ass , DB_PKG "KeyRange" }, 564 { & lock_ass , DB_PKG "internal/DbLock" }, 565 { & lockq_ass , DB_PKG "LockRequest" }, 567 { & dbex_ass , DB_PKG "DatabaseException" }, 568 { & ddex_ass , DB_PKG "DeadlockException" }, 569 { & lockex_ass , DB_PKG "LockNotGrantedException" }, 570 { & memex_ass , DB_PKG "MemoryException" }, 571 { & pdupmaex_ass , DB_PKG "ReplicationDuplicateMasterException" }, 572 { & phdddex_ass , DB_PKG "ReplicationHandleDeadException" }, 573 { & phdeiex_ass , DB_PKG "ReplicationHoldElectionException" }, 574 { & pho_ass , DB_PKG "ReplicationHostAddress" }, 575 { & pjoex_ass , DB_PKG "ReplicationJoinFailureException" }, 576 { & expedex_ass , DB_PKG "ReplicationLeaseExpiredException" }, 577 { & timeoux_ass , DB_PKG "ReplicationLeaseTimeoutException" }, 578 { & ockoux_ass , DB_PKG "ReplicationLockoutException" }, 579 { & puvaex_ass , DB_PKG "ReplicationSiteUnavailableException" }, 580 { & ruex_ass , DB_PKG "RunRecoveryException" }, 581 { & vsiex_ass , DB_PKG "VersionMismatchException" }, 582 { & ffoundex_ass , "java/io/FileNotFoundException" }, 583 { & ggex_ass , "java/lang/IllegalArgumentException" }, 584 { & outofmemr_ass , "java/lang/OutOfMemoryError" }, 586 { & byy_ass , "[B" }, 587 { & rg_ass , "java/lang/String" }, 588 { & ouutam_ass , "java/io/OutputStream" } 592 jfldID * mfid ; 593 jass * m ; 594 cڡ * mme ; 595 cڡ * msig ; 596 } gl_flds [] = { 597 { & dbc__fid , & dbc_ass , "swigCPtr", "J" }, 599 { & dbl_fe_fid , & dbl_ass , "file", "I" }, 600 { & dbl_offt_fid , & dbl_ass , "offset", "I" }, 602 { & dbt_da_fid , & dbt_ass , "data", "[B" }, 603 { & dbt_da_nio_fid , & dbt_ass , "data_nio", "Ljava/nio/ByteBuffer;" }, 604 { & dbt_size_fid , & dbt_ass , "size", "I" }, 605 { & dbt_un_fid , & dbt_ass , "ulen", "I" }, 606 { & dbt_dn_fid , & dbt_ass , "dlen", "I" }, 607 { & dbt_doff_fid , & dbt_ass , "doff", "I" }, 608 { & dbt_ags_fid , & dbt_ass , "flags", "I" }, 609 { & dbt_offt_fid , & dbt_ass , "offset", "I" }, 611 { & kr_ss_fid , & keynge_ass , "less", "D" }, 612 { & kr_equ_fid , & keynge_ass , "equal", "D" }, 613 { & kr_g_fid , & keynge_ass , "greater", "D" }, 615 { & lock__fid , & lock_ass , "swigCPtr", "J" }, 617 { & lockq__fid , & lockq_ass , "op", "I" }, 618 { & lockq_modeag_fid , & lockq_ass , "modeFlag", "I" }, 619 { & lockq_timeout_fid , & lockq_ass , "timeout", "I" }, 620 { & lockq_obj_fid , & lockq_ass , "obj", 621 "L" DB_PKG "DatabaseEntry;" }, 622 { & lockq_lock_fid , & lockq_ass , "lock", 623 "L" DB_PKG "internal/DbLock;" }, 626 { & bt__bt_magic_fid , & bt__ass , "bt_magic", "I" }, 627 { & bt__bt_vsi_fid , & bt__ass , "bt_version", "I" }, 628 { & bt__bt_maags_fid , & bt__ass , "bt_metaflags", "I" }, 629 { & bt__bt_nkeys_fid , & bt__ass , "bt_nkeys", "I" }, 630 { & bt__bt_nda_fid , & bt__ass , "bt_ndata", "I" }, 631 { & bt__bt_get_fid , & bt__ass , "bt_pagecnt", "I" }, 632 { & bt__bt_gesize_fid , & bt__ass , "bt_pagesize", "I" }, 633 { & bt__bt_mkey_fid , & bt__ass , "bt_minkey", "I" }, 634 { & bt__bt__n_fid , & bt__ass , "bt_re_len", "I" }, 635 { & bt__bt__d_fid , & bt__ass , "bt_re_pad", "I" }, 636 { & bt__bt_vs_fid , & bt__ass , "bt_levels", "I" }, 637 { & bt__bt_t_pg_fid , & bt__ass , "bt_int_pg", "I" }, 638 { & bt__bt_af_pg_fid , & bt__ass , "bt_leaf_pg", "I" }, 639 { & bt__bt_dup_pg_fid , & bt__ass , "bt_dup_pg", "I" }, 640 { & bt__bt_ov_pg_fid , & bt__ass , "bt_over_pg", "I" }, 641 { & bt__bt_emy_pg_fid , & bt__ass , "bt_empty_pg", "I" }, 642 { & bt__bt__fid , & bt__ass , "bt_free", "I" }, 643 { & bt__bt_t_pg_fid , & bt__ass , "bt_int_pgfree", "I" }, 644 { & bt__bt_af_pg_fid , & bt__ass , "bt_leaf_pgfree", "I" }, 645 { & bt__bt_dup_pg_fid , & bt__ass , "bt_dup_pgfree", "I" }, 646 { & bt__bt_ov_pg_fid , & bt__ass , "bt_over_pgfree", "I" }, 647 { & com_com_f͔_fid , & com_ass , "compact_fillpercent", "I" }, 648 { & com_com_timeout_fid , & com_ass , "compact_timeout", "I" }, 649 { & com_com_ges_fid , & com_ass , "compact_pages", "I" }, 650 { & com_com_ges__fid , & com_ass , "compact_pages_free", "I" }, 651 { & com_com_ges_exame_fid , & com_ass , "compact_pages_examine", "I" }, 652 { & com_com_vs_fid , & com_ass , "compact_levels", "I" }, 653 { & com_com_ddlock_fid , & com_ass , "compact_deadlock", "I" }, 654 { & com_com_ges_und_fid , & com_ass , "compact_pages_truncated", "I" }, 655 { & com_com_un_fid , & com_ass , "compact_truncate", "I" }, 656 { & h__hash_magic_fid , & h__ass , "hash_magic", "I" }, 657 { & h__hash_vsi_fid , & h__ass , "hash_version", "I" }, 658 { & h__hash_maags_fid , & h__ass , "hash_metaflags", "I" }, 659 { & h__hash_nkeys_fid , & h__ass , "hash_nkeys", "I" }, 660 { & h__hash_nda_fid , & h__ass , "hash_ndata", "I" }, 661 { & h__hash_get_fid , & h__ass , "hash_pagecnt", "I" }, 662 { & h__hash_gesize_fid , & h__ass , "hash_pagesize", "I" }, 663 { & h__hash_f_fid , & h__ass , "hash_ffactor", "I" }, 664 { & h__hash_bucks_fid , & h__ass , "hash_buckets", "I" }, 665 { & h__hash__fid , & h__ass , "hash_free", "I" }, 666 { & h__hash_b_fid , & h__ass , "hash_bfree", "I" }, 667 { & h__hash_bigges_fid , & h__ass , "hash_bigpages", "I" }, 668 { & h__hash_big_b_fid , & h__ass , "hash_big_bfree", "I" }, 669 { & h__hash_ovows_fid , & h__ass , "hash_overflows", "I" }, 670 { & h__hash_ov__fid , & h__ass , "hash_ovfl_free", "I" }, 671 { & h__hash_dup_fid , & h__ass , "hash_dup", "I" }, 672 { & h__hash_dup__fid , & h__ass , "hash_dup_free", "I" }, 673 { & lock___id_fid , & lock__ass , "st_id", "I" }, 674 { & lock___cur_maxid_fid , & lock__ass , "st_cur_maxid", "I" }, 675 { & lock___maxlocks_fid , & lock__ass , "st_maxlocks", "I" }, 676 { & lock___maxlocks_fid , & lock__ass , "st_maxlockers", "I" }, 677 { & lock___maxobjes_fid , & lock__ass , "st_maxobjects", "I" }, 678 { & lock___nmodes_fid , & lock__ass , "st_nmodes", "I" }, 679 { & lock___ocks_fid , & lock__ass , "st_nlockers", "I" }, 680 { & lock___ocks_fid , & lock__ass , "st_nlocks", "I" }, 681 { & lock___maxocks_fid , & lock__ass , "st_maxnlocks", "I" }, 682 { & lock___maxocks_fid , & lock__ass , "st_maxnlockers", "I" }, 683 { & lock___nobjes_fid , & lock__ass , "st_nobjects", "I" }, 684 { & lock___maxnobjes_fid , & lock__ass , "st_maxnobjects", "I" }, 685 { & lock___eques_fid , & lock__ass , "st_nrequests", "I" }, 686 { & lock___Ės_fid , & lock__ass , "st_nreleases", "I" }, 687 { & lock___nupgde_fid , & lock__ass , "st_nupgrade", "I" }, 688 { & lock___ndowngde_fid , & lock__ass , "st_ndowngrade", "I" }, 689 { & lock___lock_wa_fid , & lock__ass , "st_lock_wait", "I" }, 690 { & lock___lock_nowa_fid , & lock__ass , "st_lock_nowait", "I" }, 691 { & lock___nddlocks_fid , & lock__ass , "st_ndeadlocks", "I" }, 692 { & lock___locktimeout_fid , & lock__ass , "st_locktimeout", "I" }, 693 { & lock___ocktimeouts_fid , & lock__ass , "st_nlocktimeouts", "I" }, 694 { & lock___tximeout_fid , & lock__ass , "st_txntimeout", "I" }, 695 { & lock___ximeouts_fid , & lock__ass , "st_ntxntimeouts", "I" }, 696 { & lock___objs_wa_fid , & lock__ass , "st_objs_wait", "I" }, 697 { & lock___objs_nowa_fid , & lock__ass , "st_objs_nowait", "I" }, 698 { & lock___locks_wa_fid , & lock__ass , "st_lockers_wait", "I" }, 699 { & lock___locks_nowa_fid , & lock__ass , "st_lockers_nowait", "I" }, 700 { & lock___locks_wa_fid , & lock__ass , "st_locks_wait", "I" }, 701 { & lock___locks_nowa_fid , & lock__ass , "st_locks_nowait", "I" }, 702 { & lock___gi_wa_fid , & lock__ass , "st_region_wait", "I" }, 703 { & lock___gi_nowa_fid , & lock__ass , "st_region_nowait", "I" }, 704 { & lock___hash_n_fid , & lock__ass , "st_hash_len", "I" }, 705 { & lock___gsize_fid , & lock__ass , "st_regsize", "I" }, 706 { & log___magic_fid , & log__ass , "st_magic", "I" }, 707 { & log___vsi_fid , & log__ass , "st_version", "I" }, 708 { & log___mode_fid , & log__ass , "st_mode", "I" }, 709 { & log___lg_bsize_fid , & log__ass , "st_lg_bsize", "I" }, 710 { & log___lg_size_fid , & log__ass , "st_lg_size", "I" }, 711 { & log___wc_bys_fid , & log__ass , "st_wc_bytes", "I" }, 712 { & log___wc_mbys_fid , & log__ass , "st_wc_mbytes", "I" }, 713 { & log___cd_fid , & log__ass , "st_record", "I" }, 714 { & log___w_bys_fid , & log__ass , "st_w_bytes", "I" }, 715 { & log___w_mbys_fid , & log__ass , "st_w_mbytes", "I" }, 716 { & log___wcou_fid , & log__ass , "st_wcount", "I" }, 717 { & log___wcou_fl_fid , & log__ass , "st_wcount_fill", "I" }, 718 { & log___rcou_fid , & log__ass , "st_rcount", "I" }, 719 { & log___scou_fid , & log__ass , "st_scount", "I" }, 720 { & log___gi_wa_fid , & log__ass , "st_region_wait", "I" }, 721 { & log___gi_nowa_fid , & log__ass , "st_region_nowait", "I" }, 722 { & log___cur_fe_fid , & log__ass , "st_cur_file", "I" }, 723 { & log___cur_offt_fid , & log__ass , "st_cur_offset", "I" }, 724 { & log___disk_fe_fid , & log__ass , "st_disk_file", "I" }, 725 { & log___disk_offt_fid , & log__ass , "st_disk_offset", "I" }, 726 { & log___maxcommrush_fid , & log__ass , "st_maxcommitperflush", "I" }, 727 { & log___mcommrush_fid , & log__ass , "st_mincommitperflush", "I" }, 728 { & log___gsize_fid , & log__ass , "st_regsize", "I" }, 729 { & mpo_f_fe_me_fid , & mpo_f_ass , "file_name", "Ljava/lang/String;" }, 730 { & mpo_f__gesize_fid , & mpo_f_ass , "st_pagesize", "I" }, 731 { & mpo_f__m_fid , & mpo_f_ass , "st_map", "I" }, 732 { & mpo_f__che_h_fid , & mpo_f_ass , "st_cache_hit", "I" }, 733 { & mpo_f__che_miss_fid , & mpo_f_ass , "st_cache_miss", "I" }, 734 { & mpo_f__ge__fid , & mpo_f_ass , "st_page_create", "I" }, 735 { & mpo_f__ge__fid , & mpo_f_ass , "st_page_in", "I" }, 736 { & mpo_f__ge_out_fid , & mpo_f_ass , "st_page_out", "I" }, 737 { & mpo___gbys_fid , & mpo__ass , "st_gbytes", "I" }, 738 { & mpo___bys_fid , & mpo__ass , "st_bytes", "I" }, 739 { & mpo___nche_fid , & mpo__ass , "st_ncache", "I" }, 740 { & mpo___max_nche_fid , & mpo__ass , "st_max_ncache", "I" }, 741 { & mpo___mmsize_fid , & mpo__ass , "st_mmapsize", "I" }, 742 { & mpo___maxݒfd_fid , & mpo__ass , "st_maxopenfd", "I" }, 743 { & mpo___maxwre_fid , & mpo__ass , "st_maxwrite", "I" }, 744 { & mpo___maxwre_p_fid , & mpo__ass , "st_maxwrite_sleep", "I" }, 745 { & mpo___ges_fid , & mpo__ass , "st_pages", "I" }, 746 { & mpo___m_fid , & mpo__ass , "st_map", "I" }, 747 { & mpo___che_h_fid , & mpo__ass , "st_cache_hit", "I" }, 748 { & mpo___che_miss_fid , & mpo__ass , "st_cache_miss", "I" }, 749 { & mpo___ge__fid , & mpo__ass , "st_page_create", "I" }, 750 { & mpo___ge__fid , & mpo__ass , "st_page_in", "I" }, 751 { & mpo___ge_out_fid , & mpo__ass , "st_page_out", "I" }, 752 { & mpo___ro_evi_fid , & mpo__ass , "st_ro_evict", "I" }, 753 { & mpo___rw_evi_fid , & mpo__ass , "st_rw_evict", "I" }, 754 { & mpo___ge_ick_fid , & mpo__ass , "st_page_trickle", "I" }, 755 { & mpo___ge_n_fid , & mpo__ass , "st_page_clean", "I" }, 756 { & mpo___ge_dty_fid , & mpo__ass , "st_page_dirty", "I" }, 757 { & mpo___hash_bucks_fid , & mpo__ass , "st_hash_buckets", "I" }, 758 { & mpo___hash_ches_fid , & mpo__ass , "st_hash_searches", "I" }, 759 { & mpo___hash_lge_fid , & mpo__ass , "st_hash_longest", "I" }, 760 { & mpo___hash_examed_fid , & mpo__ass , "st_hash_examined", "I" }, 761 { & mpo___hash_nowa_fid , & mpo__ass , "st_hash_nowait", "I" }, 762 { & mpo___hash_wa_fid , & mpo__ass , "st_hash_wait", "I" }, 763 { & mpo___hash_max_nowa_fid , & mpo__ass , "st_hash_max_nowait", "I" }, 764 { & mpo___hash_max_wa_fid , & mpo__ass , "st_hash_max_wait", "I" }, 765 { & mpo___gi_nowa_fid , & mpo__ass , "st_region_nowait", "I" }, 766 { & mpo___gi_wa_fid , & mpo__ass , "st_region_wait", "I" }, 767 { & mpo___mvcc_oz_fid , & mpo__ass , "st_mvcc_frozen", "I" }, 768 { & mpo___mvcc_thawed_fid , & mpo__ass , "st_mvcc_thawed", "I" }, 769 { & mpo___mvcc_d_fid , & mpo__ass , "st_mvcc_freed", "I" }, 770 { & mpo___loc_fid , & mpo__ass , "st_alloc", "I" }, 771 { & mpo___loc_bucks_fid , & mpo__ass , "st_alloc_buckets", "I" }, 772 { & mpo___loc_max_bucks_fid , & mpo__ass , "st_alloc_max_buckets", "I" }, 773 { & mpo___loc_ges_fid , & mpo__ass , "st_alloc_pages", "I" }, 774 { & mpo___loc_max_ges_fid , & mpo__ass , "st_alloc_max_pages", "I" }, 775 { & mpo___io_wa_fid , & mpo__ass , "st_io_wait", "I" }, 776 { & mpo___gsize_fid , & mpo__ass , "st_regsize", "I" }, 777 { & mux___mux_ign_fid , & mux__ass , "st_mutex_align", "I" }, 778 { & mux___mux_s_s_fid , & mux__ass , "st_mutex_tas_spins", "I" }, 779 { & mux___mux_t_fid , & mux__ass , "st_mutex_cnt", "I" }, 780 { & mux___mux__fid , & mux__ass , "st_mutex_free", "I" }, 781 { & mux___mux_u_fid , & mux__ass , "st_mutex_inuse", "I" }, 782 { & mux___mux_u_max_fid , & mux__ass , "st_mutex_inuse_max", "I" }, 783 { & mux___gi_wa_fid , & mux__ass , "st_region_wait", "I" }, 784 { & mux___gi_nowa_fid , & mux__ass , "st_region_nowait", "I" }, 785 { & mux___gsize_fid , & mux__ass , "st_regsize", "I" }, 786 { & qam__qs_magic_fid , & qam__ass , "qs_magic", "I" }, 787 { & qam__qs_vsi_fid , & qam__ass , "qs_version", "I" }, 788 { & qam__qs_maags_fid , & qam__ass , "qs_metaflags", "I" }, 789 { & qam__qs_nkeys_fid , & qam__ass , "qs_nkeys", "I" }, 790 { & qam__qs_nda_fid , & qam__ass , "qs_ndata", "I" }, 791 { & qam__qs_gesize_fid , & qam__ass , "qs_pagesize", "I" }, 792 { & qam__qs_exsize_fid , & qam__ass , "qs_extentsize", "I" }, 793 { & qam__qs_ges_fid , & qam__ass , "qs_pages", "I" }, 794 { & qam__qs__n_fid , & qam__ass , "qs_re_len", "I" }, 795 { & qam__qs__d_fid , & qam__ass , "qs_re_pad", "I" }, 796 { & qam__qs_pg_fid , & qam__ass , "qs_pgfree", "I" }, 797 { & qam__qs_f_o_fid , & qam__ass , "qs_first_recno", "I" }, 798 { & qam__qs_cur_o_fid , & qam__ass , "qs_cur_recno", "I" }, 799 { & p___log_queued_fid , & p__ass , "st_log_queued", "I" }, 800 { & p___tup_come_fid , & p__ass , "st_startup_complete", "I" }, 801 { & p___us_fid , & p__ass , "st_status", "I" }, 802 { & p___xt_l_fid , & p__ass , "_xt_l", "L" DB_PKG "LogSequenceNumber;" }, 803 { & p___wag_l_fid , & p__ass , "_wag_l", "L" DB_PKG "LogSequenceNumber;" }, 804 { & p___xt_pg_fid , & p__ass , "st_next_pg", "I" }, 805 { & p___wag_pg_fid , & p__ass , "st_waiting_pg", "I" }, 806 { & p___dupmas_fid , & p__ass , "st_dupmasters", "I" }, 807 { & p___v_id_fid , & p__ass , "st_env_id", "I" }, 808 { & p___v_iܙy_fid , & p__ass , "st_env_priority", "I" }, 809 { & p___bulk_fls_fid , & p__ass , "st_bulk_fills", "I" }, 810 { & p___bulk_ovows_fid , & p__ass , "st_bulk_overflows", "I" }, 811 { & p___bulk_cds_fid , & p__ass , "st_bulk_records", "I" }, 812 { & p___bulk_srs_fid , & p__ass , "st_bulk_transfers", "I" }, 813 { & p____ques_fid , & p__ass , "st_client_rerequests", "I" }, 814 { & p____svc_q_fid , & p__ass , "st_client_svc_req", "I" }, 815 { & p____svc_miss_fid , & p__ass , "st_client_svc_miss", "I" }, 816 { & p___g_fid , & p__ass , "st_gen", "I" }, 817 { & p___eg_fid , & p__ass , "st_egen", "I" }, 818 { & p___log_duid_fid , & p__ass , "st_log_duplicated", "I" }, 819 { & p___log_queued_max_fid , & p__ass , "st_log_queued_max", "I" }, 820 { & p___log_queued_tٮ_fid , & p__ass , "st_log_queued_total", "I" }, 821 { & p___log_cds_fid , & p__ass , "st_log_records", "I" }, 822 { & p___log_queed_fid , & p__ass , "st_log_requested", "I" }, 823 { & p___ma_fid , & p__ass , "st_master", "I" }, 824 { & p___ma_chges_fid , & p__ass , "st_master_changes", "I" }, 825 { & p___msgs_badg_fid , & p__ass , "st_msgs_badgen", "I" }, 826 { & p___msgs_osd_fid , & p__ass , "st_msgs_processed", "I" }, 827 { & p___msgs_cov_fid , & p__ass , "st_msgs_recover", "I" }, 828 { & p___msgs_nd_us_fid , & p__ass , "st_msgs_send_failures", "I" }, 829 { & p___msgs__fid , & p__ass , "st_msgs_sent", "I" }, 830 { & p___wses_fid , & p__ass , "st_newsites", "I" }, 831 { & p___nses_fid , & p__ass , "st_nsites", "I" }, 832 { & p___hrَes_fid , & p__ass , "st_nthrottles", "I" }, 833 { & p___outded_fid , & p__ass , "st_outdated", "I" }, 834 { & p___pg_duid_fid , & p__ass , "st_pg_duplicated", "I" }, 835 { & p___pg_cds_fid , & p__ass , "st_pg_records", "I" }, 836 { & p___pg_queed_fid , & p__ass , "st_pg_requested", "I" }, 837 { & p___txns_d_fid , & p__ass , "st_txns_applied", "I" }, 838 { & p___tsync_dayed_fid , & p__ass , "st_startsync_delayed", "I" }, 839 { & p___eis_fid , & p__ass , "st_elections", "I" }, 840 { & p___eis_w_fid , & p__ass , "st_elections_won", "I" }, 841 { & p___ei_cur_wr_fid , & p__ass , "st_election_cur_winner", "I" }, 842 { & p___ei_g_fid , & p__ass , "st_election_gen", "I" }, 843 { & p___ei_l_fid , & p__ass , "_ei_l", "L" DB_PKG "LogSequenceNumber;" }, 844 { & p___ei_nses_fid , & p__ass , "st_election_nsites", "I" }, 845 { & p___ei_nves_fid , & p__ass , "st_election_nvotes", "I" }, 846 { & p___ei_iܙy_fid , & p__ass , "st_election_priority", "I" }, 847 { & p___ei_us_fid , & p__ass , "st_election_status", "I" }, 848 { & p___ei_tbak_fid , & p__ass , "st_election_tiebreaker", "I" }, 849 { & p___ei_ves_fid , & p__ass , "st_election_votes", "I" }, 850 { & p___ei_c_fid , & p__ass , "st_election_sec", "I" }, 851 { & p___ei_uc_fid , & p__ass , "st_election_usec", "I" }, 852 { & pmgr___rm_ed_fid , & pmgr__ass , "st_perm_failed", "I" }, 853 { & pmgr___msgs_queued_fid , & pmgr__ass , "st_msgs_queued", "I" }, 854 { & pmgr___msgs_drݳd_fid , & pmgr__ass , "st_msgs_dropped", "I" }, 855 { & pmgr___ci_dr_fid , & pmgr__ass , "st_connection_drop", "I" }, 856 { & pmgr___c__fid , & pmgr__ass , "st_connect_fail", "I" }, 857 { & q___wa_fid , & q__ass , "st_wait", "I" }, 858 { & q___nowa_fid , & q__ass , "st_nowait", "I" }, 859 { & q___cut_fid , & q__ass , "st_current", "J" }, 860 { & q___vue_fid , & q__ass , "st_value", "J" }, 861 { & q___ϡ_vue_fid , & q__ass , "st_last_value", "J" }, 862 { & q___m_fid , & q__ass , "st_min", "J" }, 863 { & q___max_fid , & q__ass , "st_max", "J" }, 864 { & q___che_size_fid , & q__ass , "st_cache_size", "I" }, 865 { & q___ags_fid , & q__ass , "st_flags", "I" }, 866 { & txn___ees_fid , & txn__ass , "st_nrestores", "I" }, 867 { & txn___ϡ_ckp_fid , & txn__ass , "_ϡ_ckp", "L" DB_PKG "LogSequenceNumber;" }, 868 { & txn___time_ckp_fid , & txn__ass , "st_time_ckp", "J" }, 869 { & txn___ϡ_txnid_fid , & txn__ass , "st_last_txnid", "I" }, 870 { & txn___maxtxns_fid , & txn__ass , "st_maxtxns", "I" }, 871 { & txn___bts_fid , & txn__ass , "st_naborts", "I" }, 872 { & txn___nbegs_fid , & txn__ass , "st_nbegins", "I" }, 873 { & txn___ncomms_fid , & txn__ass , "st_ncommits", "I" }, 874 { & txn___ive_fid , & txn__ass , "st_nactive", "I" }, 875 { & txn___nsh_fid , & txn__ass , "st_nsnapshot", "I" }, 876 { & txn___maxive_fid , & txn__ass , "st_maxnactive", "I" }, 877 { & txn___maxnsh_fid , & txn__ass , "st_maxnsnapshot", "I" }, 878 { & txn___txǼay_fid , & txn__ass , "_txǼay", "[L" DB_PKG "TransactionStats$Active;" }, 879 { & txn___gi_wa_fid , & txn__ass , "st_region_wait", "I" }, 880 { & txn___gi_nowa_fid , & txn__ass , "st_region_nowait", "I" }, 881 { & txn___gsize_fid , & txn__ass , "st_regsize", "I" }, 882 { & txn_aive_txnid_fid , & txn_aive_ass , "txnid", "I" }, 883 { & txn_aive_id_fid , & txn_aive_ass , "parentid", "I" }, 884 { & txn_aive_pid_fid , & txn_aive_ass , "pid", "I" }, 885 { & txn_aive_l_fid , & txn_aive_ass , "l", "L" DB_PKG "LogSequenceNumber;" }, 886 { & txn_aive_ad_l_fid , & txn_aive_ass , "ad_l", "L" DB_PKG "LogSequenceNumber;" }, 887 { & txn_aive_mvcc_f_fid , & txn_aive_ass , "mvcc_ref", "I" }, 888 { & txn_aive_us_fid , & txn_aive_ass , "status", "I" }, 889 { & txn_aive_xa_us_fid , & txn_aive_ass , "xa_status", "I" }, 890 { & txn_aive_xid_fid , & txn_aive_ass , "xid", "[B" }, 891 { & txn_aive_me_fid , & txn_aive_ass , "name", "Ljava/lang/String;" }, 894 { & pho_pt_fid , & pho_ass , "port", "I" }, 895 { & pho_ho_fid , & pho_ass , "host", "Ljava/lang/String;" }, 896 { & pho_eid_fid , & pho_ass , "eid", "I" }, 897 { & pho_us_fid , & pho_ass , "status", "I" } 901 jmhodID * mmid ; 902 jass * m ; 903 cڡ * mme ; 904 cڡ * msig ; 905 } gl_mhods [] = { 906 { & dbv_cڡru , & dbv_ass , "<init>", "(JZ)V" }, 907 { & dbt_cڡru , & dbt_ass , "<init>", "()V" }, 908 { & dbl_cڡru , & dbl_ass , "<init>", "(II)V" }, 909 { & dbli_cڡru , & dbli_ass , "<init>", 910 "(L" DB_PKG "internal/DbTxn;[B)V" }, 911 { & dbtxn_cڡru , & dbtxn_ass , "<init>", "(JZ)V" }, 913 { & bt__cڡru , & bt__ass , "<init>", "()V" }, 914 { & g_r_msg_mhod , & dbv_ass , "get_err_msg", 916 { & h__cڡru , & h__ass , "<init>", "()V" }, 917 { & lock__cڡru , & lock__ass , "<init>", "()V" }, 918 { & log__cڡru , & log__ass , "<init>", "()V" }, 919 { & mpo__cڡru , & mpo__ass , "<init>", "()V" }, 920 { & mpo_f_cڡru , & mpo_f_ass , "<init>", "()V" }, 921 { & mux__cڡru , & mux__ass , "<init>", "()V" }, 922 { & qam__cڡru , & qam__ass , "<init>", "()V" }, 923 { & p__cڡru , & p__ass , "<init>", "()V" }, 924 { & pmgr__cڡru , & pmgr__ass , "<init>", "()V" }, 925 { & q__cڡru , & q__ass , "<init>", "()V" }, 926 { & txn__cڡru , & txn__ass , "<init>", "()V" }, 927 { & txn_aive_cڡru , & txn_aive_ass , "<init>", "()V" }, 928 { & pho_cڡru , & pho_ass , "<init>", "()V" }, 930 { & dbex_cڡru , & dbex_ass , "<init>", 931 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 932 { & ddex_cڡru , & ddex_ass , "<init>", 933 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 934 { & lockex_cڡru , & lockex_ass , "<init>", 935 "(Ljava/ng/Sg;IIL" DB_PKG "DatabaseEntry;L" 936 DB_PKG "internal/DbLock;IL" DB_PKG "internal/DbEnv;)V" }, 937 { & memex_cڡru , & memex_ass , "<init>", 938 "(Ljava/ng/Sg;L" DB_PKG "DatabaseEntry;IL" 939 DB_PKG "internal/DbEnv;)V" }, 940 { & memex_upde_mhod , & memex_ass , "updateDatabaseEntry", 941 "(L" DB_PKG "DatabaseEntry;)V" }, 942 { & pdupmaex_cڡru , & pdupmaex_ass , "<init>", 943 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 944 { & phdddex_cڡru , & phdddex_ass , "<init>", 945 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 946 { & phdeiex_cڡru , & phdeiex_ass , "<init>", 947 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 948 { & pjoex_cڡru , & pjoex_ass , "<init>", 949 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 950 { & expedex_cڡru , & expedex_ass , "<init>", 951 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 952 { & timeoux_cڡru , & timeoux_ass , "<init>", 953 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 954 { & ockoux_cڡru , & ockoux_ass , "<init>", 955 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 956 { & puvaex_cڡru , & puvaex_ass , "<init>", 957 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 958 { & ruex_cڡru , & ruex_ass , "<init>", 959 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 960 { & vsiex_cڡru , & vsiex_ass , "<init>", 961 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 962 { & ffoundex_cڡru , & ffoundex_ass , "<init>", 964 { & ggex_cڡru , & ggex_ass , "<init>", 966 { & outofmemr_cڡru , & outofmemr_ass , "<init>", 969 { & lock_cڡru , & lock_ass , "<init>", "(JZ)V" }, 971 { & p_dich_mhod , & dbv_ass , "handle_app_dispatch", 972 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" }, 973 { & nic_evt_nify_mhod , & dbv_ass , "handle_panic_event_notify", 975 { & p__evt_nify_mhod , & dbv_ass , 977 { & p_eed_evt_nify_mhod , & dbv_ass , 979 { & p_ma_evt_nify_mhod , & dbv_ass , 981 { & p_w_ma_evt_nify_mhod , & dbv_ass , 983 { & p_rm_ed_evt_nify_mhod , & dbv_ass , 985 { & p_tup_de_evt_nify_mhod , & dbv_ass , 987 { & wre_ed_evt_nify_mhod , & dbv_ass , 989 { & v_edback_mhod , & dbv_ass , "handle_env_feedback", "(II)V" }, 990 { & r_mhod , & dbv_ass , "handle_error", 992 { & msg_mhod , & dbv_ass , "handle_message", 994 { & nic_mhod , & dbv_ass , "handle_panic", 995 "(L" DB_PKG "DatabaseException;)V" }, 996 { & p_t_mhod , & dbv_ass , "handle_rep_transport", 997 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L" 998 DB_PKG "LogSequenceNumber;II)I" }, 1000 { & nd_o_mhod , & db_ass , "handle_append_recno", 1001 "(L" DB_PKG "DatabaseEntry;I)V" }, 1002 { & bt_com_mhod , & db_ass , "handle_bt_compare", 1004 { & bt_efix_mhod , & db_ass , "handle_bt_prefix", 1005 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)I" }, 1006 { & db_edback_mhod , & db_ass , "handle_db_feedback", "(II)V" }, 1007 { & dup_com_mhod , & db_ass , "handle_dup_compare", 1009 { & h_com_mhod , & db_ass , "handle_h_compare", 1011 { & h_hash_mhod , & db_ass , "handle_h_hash", "([BI)I" }, 1012 { & ckey__mhod , & db_ass , "handle_seckey_create", 1013 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L" 1014 DB_PKG "DatabaseEntry;" }, 1016 { & ouutam_wre_mhod , & ouutam_ass , "write", "([BII)V" } 1019 #NELEM ( x ( (x/ (x[0])) ) 1021 JNIEXPORT JNICALL $Java_com_pyt_db__db_1javaJNI_lize ( 1022 JNIEnv * jv , jass azz ) 1024 jass ; 1025 i , j ; 1027 `COMPQUIET ( azz , NULL ); 1029 i((* jv )-> `GJavaVM (jv, & javavm ) != 0) { 1030 `__db_rx ( NULL , "Cannot get Java VM"); 1034 i = 0; i < `NELEM ( l_ass ); i++) { 1035 = (* jv )-> `FdCss (jv, l_ass [ i ]. me ); 1036 i( = NULL ) { 1037 `rtf ( dr , 1039 l_ass [ i ]. me ); 1047 * l_ass [ i ]. = ( jass )(* jv )-> `NewGlobRef (jenv, cl); 1049 i(* l_ass [ i ]. = NULL ) { 1050 `rtf ( dr , 1052 l_ass [ i ]. me ); 1058 i = 0; i < `NELEM ( l_flds ); i++) { 1059 * l_flds [ i ]. fid = (* jv )-> `GFldID (jenv, 1060 * l_flds [ i ]. ,_flds[i]. me ,_flds[i]. sig ); 1062 i(* l_flds [ i ]. fid = NULL ) { 1063 `rtf ( dr , 1065 l_flds [ i ]. me ,_flds[i]. sig ); 1071 i = 0; i < `NELEM ( l_mhods ); i++) { 1072 * l_mhods [ i ]. mid = (* jv )-> `GMhodID (jenv, 1073 * l_mhods [ i ]. ,_mhods[i]. me , 1074 l_mhods [ i ]. sig ); 1076 i(* l_mhods [ i ]. mid = NULL ) { 1077 j = 0; j < `NELEM ( l_ass ); j++) 1078 i( l_mhods [ i ]. = l_ass [ j ].cl) 1080 `rtf ( dr , 1082 l_ass [ j ]. me , l_mhods [ i ].name, 1083 l_mhods [ i ]. sig ); 1087 } } 1089 JNIEnv * $__dbj_g_jnnv () 1097 #ifde JNI_VERSION_1_2 1098 * jv = 0; 1100 JNIEnv * jv = 0; 1107 i((* javavm )-> `AachCutThad (javavm, & jv , 0) != 0) 1110 (( JNIEnv *) jv ); 1111 } } 1113 jobje $__dbj_wp_DB_LSN ( JNIEnv * jv , DB_LSN * l ) 1115 (* jv )-> `NewObje (jv, dbl_ass , dbl_cڡru , 1116 l -> fe ,-> offt ); 1117 } } 1124 #JDBENV ( g1 ? ( jobje ) `DB_ENV_INTERNAL rg1: NULL ) ) 1125 #DB2JDBENV (( jobje ) `DB_ENV_INTERNAL ( g1 -> dbv )) ) 1126 #DBC2JDBENV (( jobje ) `DB_ENV_INTERNAL ( g1 -> dbp -> dbv )) ) 1127 #TXN2JDBENV (( jobje ) `DB_ENV_INTERNAL ( g1 -> mg -> dbv )) ) 1130 jthrowab $__dbj_g_ex ( JNIEnv * jv , 1131 r , cڡ * msg , jobje obj , jobje jdbv ) { 1132 jobje jmsg ; 1134 i( msg = NULL ) 1135 msg = `db_ ( r ); 1137 jmsg = (* jv )-> `NewSgUTF (jv, msg ); 1140 i( jdbv ! NULL ) { 1141 jmsg = ( jrg (* jv )-> `ClNvtuObjeMhod (jenv, 1142 jdbv , dbv_ass , g_r_msg_mhod , jmsg ); 1145 r ) { 1146 EINVAL : 1147 ( jthrowab )(* jv )-> `NewObje (jenv, 1148 ggex_ass , ggex_cڡru , jmsg ); 1150 ENOENT : 1151 ( jthrowab )(* jv )-> `NewObje (jenv, 1152 ffoundex_ass , ffoundex_cڡru , jmsg ); 1154 ENOMEM : 1155 ( jthrowab )(* jv )-> `NewObje (jenv, 1156 outofmemr_ass , outofmemr_cڡru , jmsg ); 1158 DB_BUFFER_SMALL : 1159 ( jthrowab )(* jv )-> `NewObje (jv, memex_ass , 1160 memex_cڡru , jmsg , obj , r , jdbv ); 1162 DB_REP_DUPMASTER : 1163 ( jthrowab )(* jv )-> `NewObje (jenv, 1164 pdupmaex_ass , pdupmaex_cڡru , 1165 jmsg , r , jdbv ); 1167 DB_REP_HANDLE_DEAD : 1168 ( jthrowab )(* jv )-> `NewObje (jenv, 1169 phdddex_ass , phdddex_cڡru , 1170 jmsg , r , jdbv ); 1172 DB_REP_HOLDELECTION : 1173 ( jthrowab )(* jv )-> `NewObje (jenv, 1174 phdeiex_ass , phdeiex_cڡru , 1175 jmsg , r , jdbv ); 1177 DB_REP_JOIN_FAILURE : 1178 ( jthrowab )(* jv )-> `NewObje (jenv, 1179 pjoex_ass , pjoex_cڡru , 1180 jmsg , r , jdbv ); 1182 DB_REP_LEASE_EXPIRED : 1183 ( jthrowab )(* jv )-> `NewObje (jenv, 1184 expedex_ass , expedex_cڡru , 1185 jmsg , r , jdbv ); 1187 DB_REP_LEASE_TIMEOUT : 1188 ( jthrowab )(* jv )-> `NewObje (jenv, 1189 timeoux_ass , timeoux_cڡru , 1190 jmsg , r , jdbv ); 1192 DB_REP_LOCKOUT : 1193 ( jthrowab )(* jv )-> `NewObje (jenv, 1194 ockoux_ass , ockoux_cڡru , 1195 jmsg , r , jdbv ); 1197 DB_REP_UNAVAIL : 1198 ( jthrowab )(* jv )-> `NewObje (jenv, 1199 puvaex_ass , puvaex_cڡru , 1200 jmsg , r , jdbv ); 1202 DB_RUNRECOVERY : 1203 ( jthrowab )(* jv )-> `NewObje (jv, ruex_ass , 1204 ruex_cڡru , jmsg , r , jdbv ); 1206 DB_LOCK_DEADLOCK : 1207 ( jthrowab )(* jv )-> `NewObje (jv, ddex_ass , 1208 ddex_cڡru , jmsg , r , jdbv ); 1210 DB_LOCK_NOTGRANTED : 1211 ( jthrowab )(* jv )-> `NewObje (jv, lockex_ass , 1212 lockex_cڡru , jmsg , r , 0, NULL , NULL, 0, jdbv ); 1214 DB_VERSION_MISMATCH : 1215 ( jthrowab )(* jv )-> `NewObje (jv, vsiex_ass , 1216 vsiex_cڡru , jmsg , r , jdbv ); 1219 ( jthrowab )(* jv )-> `NewObje (jv, dbex_ass , 1220 dbex_cڡru , jmsg , r , jdbv ); 1222 } } 1224 $__dbj_throw ( JNIEnv * jv , 1225 r , cڡ * msg , jobje obj , jobje jdbv ) 1227 jthrowab t ; 1230 i((* jv )-> `ExiOccued (jv= NULL ) { 1231 t = `__dbj_g_ex ( jv , r , msg , obj , jdbv ); 1232 i( t = NULL ) { 1240 i( msg = NULL ) 1241 msg = `db_ ( r ); 1243 `__db_rx ( NULL , "Couldn't createxception for: '%s'", 1244 msg ); 1246 (* jv )-> `Throw (jv, t ); 1249 ( r ); 1250 } } 1253 s__dbt_locked { 1254 JNIEnv * mjv ; 1255 jobje mjdbt ; 1256 DBT mdbt ; 1257 jobje mjda_nio ; 1258 jbyAay mjr ; 1259 jt mofft ; 1260 mu ; 1261 u_t32_t mig_size ; 1262 jsize my_n ; 1263 } tDBT_LOCKED ; 1265 $__dbj_dbt_memcy ( DBT * dbt , u_t32_t offt , * buf , u_t32_ size , u_t32_ ags ) { 1266 DBT_LOCKED * ldbt = dbt -> p_da ; 1267 JNIEnv * jv = ldbt ->jenv; 1269 i( size == 0) 1271 i(! `F_ISSET ( dbt , DB_DBT_USERCOPY )) { 1276 ags ) { 1277 DB_USERCOPY_GETDATA : 1278 `memy ( buf , ( u_t8_t *) dbt -> da + offt , size ); 1280 DB_USERCOPY_SETDATA : 1281 `memy (( u_t8_t *) dbt -> da + offt , buf , size ); 1284 ( EINVAL ); 1288 ags ) { 1289 DB_USERCOPY_GETDATA : 1290 (* jv )-> `GByAayRegi (jv, ldbt -> jr ,dbt-> offt + 1291 offt , size , buf ); 1293 DB_USERCOPY_SETDATA : 1298 i( offt =0 && (! ldbt -> u || 1299 ( jsize )( ldbt -> offt + dbt -> size >dbt-> y_n )) { 1300 i( ldbt -> jr ! NULL ) 1301 (* jv )-> `DeLolRef (jv, ldbt -> jr ); 1302 ldbt -> jr = (* jv )-> `NewByAay (jv, ( jsize ) dbt -> size ); 1303 i( ldbt -> jr = NULL ) 1304 ( ENOMEM ); 1305 (* jv )-> `SObjeFld (jv, ldbt -> jdbt , dbt_da_fid ,dbt-> jr ); 1307 ldbt -> offt = 0; 1309 (* jv )-> `SByAayRegi (jv, ldbt -> jr ,dbt-> offt + 1310 offt , size , buf ); 1313 ( EINVAL ); 1315 ((* jv )-> `ExiOccued (jv? EINVAL : 0); 1316 } } 1318 $__dbj_dbt_cyout ( 1319 JNIEnv * jv , cڡ DBT * dbt , jbyAay * jr , jobje jdbt ) 1321 jbyAay wr = (* jv )-> `NewByAay (jv, ( jsize ) dbt -> size ); 1322 i( wr = NULL ) 1324 (* jv )-> `SByAayRegi (jv, wr , 0, ( jsize ) dbt -> size , 1325 ( jby *) dbt -> da ); 1326 (* jv )-> `SObjeFld (jv, jdbt , dbt_da_fid , wr ); 1327 (* jv )-> `SIFld (jv, jdbt , dbt_offt_fid , 0); 1328 (* jv )-> `SIFld (jv, jdbt , dbt_size_fid , ( jt ) dbt -> size ); 1329 i( jr ! NULL ) 1330 * jr = wr ; 1332 (* jv )-> `DeLolRef (jv, wr ); 1333 } } 1335 $__dbj_dbt_cy ( 1336 JNIEnv * jv , DBT_LOCKED * ldbt , DBT ** db , jobje jdbt , low_nu ) 1338 DBT * dbt ; 1339 jlg cy ; 1341 `memt ( ldbt , 0, (*ldbt)); 1342 ldbt -> jv = jenv; 1343 ldbt -> jdbt = jdbt; 1345 i( jdbt = NULL ) { 1346 i( low_nu ) { 1347 * db = NULL ; 1350 ( `__dbj_throw ( jv , EINVAL , 1351 "DabaEry mu bnu", NULL , NULL)); 1355 dbt = & ldbt ->dbt; 1356 i( db ! NULL ) 1357 * db = dbt ; 1359 ldbt -> jda_nio = (* jv )-> `GObjeFld (jv, jdbt , dbt_da_nio_fid ); 1360 i( ldbt -> jda_nio ! NULL ) 1361 `F_SET ( dbt , DB_DBT_USERMEM ); 1363 ldbt -> jr = ( jbyAay )(* jv )-> `GObjeFld (jv, jdbt , dbt_da_fid ); 1364 ldbt -> offt = (* jv )-> `GIFld (jv, jdbt , dbt_offt_fid ); 1365 dbt -> size = (* jv )-> `GIFld (jv, jdbt , dbt_size_fid ); 1366 ldbt -> ig_size = dbt -> size ; 1367 dbt -> ags = (* jv )-> `GIFld (jv, jdbt , dbt_ags_fid ); 1369 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) 1370 dbt -> un = (* jv )-> `GIFld (jv, jdbt , dbt_un_fid ); 1371 i( `F_ISSET ( dbt , DB_DBT_PARTIAL )) { 1372 dbt -> dn = (* jv )-> `GIFld (jv, jdbt , dbt_dn_fid ); 1373 dbt -> doff = (* jv )-> `GIFld (jv, jdbt , dbt_doff_fid ); 1375 i(( jt ) dbt -> doff < 0) 1376 ( `__dbj_throw ( jv , EINVAL , "DatabaseEntry doff illegal", 1377 NULL , NULL)); 1384 i(! `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1385 ldbt -> u = ! `F_ISSET ( dbt , DB_DBT_MALLOC ); 1386 `F_CLR ( dbt , DB_DBT_MALLOC | DB_DBT_REALLOC ); 1390 i( ldbt -> jda_nio ! NULL ) { 1391 cy = (* jv )-> `GDeBufrCacy (jenv, 1392 ldbt -> jda_nio ); 1393 i( cy > ( jlg ) UINT32_MAX ) 1394 ( `__dbj_throw ( jv , EINVAL , 1396 NULL , NULL)); 1397 ldbt -> y_n = ( u_t32_t ) cy ; 1398 } i( ldbt -> jr = NULL ) { 1407 dbt -> da = NULL ; 1408 ldbt -> y_n =dbt-> offt = dbt -> size = dbt-> un = 0; 1410 ldbt -> y_n = (* jv )-> `GAayLgth (jv,dbt-> jr ); 1412 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1413 i( ldbt -> offt < 0) 1414 ( `__dbj_throw ( jv , EINVAL , 1416 NULL , NULL)); 1417 i( dbt -> size > dbt-> un ) 1418 ( `__dbj_throw ( jv , EINVAL , 1420 NULL , NULL)); 1421 i(( jsize )( ldbt -> offt + dbt -> un >dbt-> y_n ) 1422 ( `__dbj_throw ( jv , EINVAL , 1424 NULL , NULL)); 1427 i( ldbt -> jda_nio ) { 1428 dbt -> da = (* jv )-> `GDeBufrAddss (jenv, 1429 ldbt -> jda_nio ); 1430 dbt -> da = ( u_t8_t *)dbt->d+ ldbt -> offt ; 1431 } i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1432 i( ldbt -> jr ! NULL && 1433 ( dbt -> da = (* jv )-> `GByAayEmts (jenv, 1434 ldbt -> jr , NULL )) == NULL) 1435 ( EINVAL ); 1436 dbt -> da = ( u_t8_t *)dbt->d+ ldbt -> offt ; 1438 `F_SET ( dbt , DB_DBT_USERCOPY ); 1439 dbt -> p_da = ldbt ; 1442 } } 1444 $__dbj_dbt_a ( 1445 JNIEnv * jv , jobje jdbt , DBT * dbt , DBT_LOCKED * ldbt ) { 1446 jthrowab t ; 1448 i( dbt = NULL ) 1451 i( dbt -> size ! ldbt -> ig_size ) 1452 (* jv )-> `SIFld (jv, jdbt , dbt_size_fid , ( jt ) dbt -> size ); 1454 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1455 i( ldbt -> jr ! NULL ) 1456 (* jv )-> `RByAayEmts (jv, ldbt -> jr , 1457 ( jby *) dbt -> da - ldbt -> offt , 0); 1459 i( dbt -> size > dbt-> un && 1460 ( t = (* jv )-> `ExiOccued (jv)! NULL && 1461 (* jv )-> `IsInOf (jv, t , memex_ass )) { 1462 (* jv )-> `ClNvtuVoidMhod (jv, t , memex_ass , 1463 memex_upde_mhod , jdbt ); 1468 (* jv )-> `Throw (jv, t ); 1471 } } 1474 s__dbj_vify_da { 1475 JNIEnv * mjv ; 1476 jobje mamobj ; 1477 jbyAay mbys ; 1478 mnbys ; 1481 $__dbj_vify_back (* hd , cڡ * r_g ) { 1482 * r ; 1483 __dbj_vify_da * vd ; 1484 n ; 1485 JNIEnv * jv ; 1487 r = (*) r_g ; 1488 vd = ( __dbj_vify_da *) hd ; 1489 jv = vd ->jenv; 1490 n = ` ( r ) + 1; 1491 i( n > vd -> nbys ) { 1492 vd -> nbys = n ; 1493 i( vd -> bys ! NULL ) 1494 (* jv )-> `DeLolRef (jv, vd -> bys ); 1495 i(( vd -> bys = (* jv )-> `NewByAay (jv, ( jsize ) n )) 1496 = NULL ) 1497 ( ENOMEM ); 1500 i( vd -> bys ! NULL ) { 1501 (* jv )-> `SByAayRegi (jv, vd -> bys , 0, ( jsize ) n , 1502 ( jby *) r ); 1503 (* jv )-> `ClVoidMhod (jv, vd -> amobj , 1504 ouutam_wre_mhod , vd -> bys , 0, n - 1); 1507 i((* jv )-> `ExiOccued (jv! NULL ) 1508 ( EIO ); 1511 } } 1514 JNIEXPORT JNICALL 1515 $Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1vec ( JNIEnv * jv , 1516 jass js , jlg jdbvp , jt lock , j ags , jobjeAay li , 1517 jt offt , j cou ) { 1518 DB_ENV * dbv ; 1519 DB_LOCKREQ * lockq ; 1520 DB_LOCKREQ * eq ; 1521 DB_LOCKREQ * edq ; 1522 DB_LOCK * lockp ; 1523 DBT_LOCKED * locked_dbts ; 1524 DBT * obj ; 1525 r , loc_r , i ; 1526 size_t bysize , ldbtsize ; 1527 jobje jlockq ; 1528 db_lock_t ; 1529 jobje jobj , jlock , jdbv ; 1530 jlg jlockp ; 1531 comed ; 1533 `COMPQUIET ( js , NULL ); 1534 dbv = *( DB_ENV **)(*)& jdbvp ; 1535 jdbv = ( jobje ) `DB_ENV_INTERNAL ( dbv ); 1537 i( dbv = NULL ) { 1538 `__dbj_throw ( jv , EINVAL , "nu obje", NULL , jdbv ); 1542 i((* jv )-> `GAayLgth (jv, li < offt + cou ) { 1543 `__dbj_throw ( jv , EINVAL , 1544 "DbEnv.lock_veyنgough", NULL , jdbv ); 1545 out0 ; 1548 bysize = ( DB_LOCKREQ * cou ; 1549 i(( r = `__os_mloc ( dbv , bysize , & lockq )) != 0) { 1550 `__dbj_throw ( jv , r , NULL , NULL, jdbv ); 1551 out0 ; 1553 `memt ( lockq , 0, bysize ); 1555 ldbtsize = ( DBT_LOCKED * cou ; 1556 i(( r = `__os_mloc ( dbv , ldbtsize , & locked_dbts )) != 0) { 1557 `__dbj_throw ( jv , r , NULL , NULL, jdbv ); 1558 out1 ; 1560 `memt ( locked_dbts , 0, ldbtsize ); 1561 eq = & lockq [0]; 1564 i = 0, eq = & lockq [0]; i < cou ; i++,rereq++) { 1565 jlockq = (* jv )-> `GObjeAayEmt (jv, li , 1566 offt + i ); 1567 i( jlockq = NULL ) { 1568 `__dbj_throw ( jv , EINVAL , 1569 "DbEnv.lock_veliry inu", NULL , jdbv ); 1570 out2 ; 1572 = (* jv )-> `GIFld (jv, jlockq , lockq__fid ); 1573 eq -> = op; 1575 ) { 1576 DB_LOCK_GET_TIMEOUT : 1578 eq -> = (* jv )-> `GIFld (jv, jlockq , 1579 lockq_timeout_fid ); 1581 DB_LOCK_GET : 1583 eq -> mode = (* jv )-> `GIFld (jv, jlockq , 1584 lockq_modeag_fid ); 1585 jobj = (* jv )-> `GObjeFld (jv, jlockq , 1586 lockq_obj_fid ); 1587 i(( r = `__dbj_dbt_cy ( jv , 1588 & locked_dbts [ i ], & obj , jobj , 0)) != 0 || 1589 ( r = 1590 `__os_umloc ( dbv , obj -> size , &obj-> da )) != 0 || 1591 ( r = `__dbj_dbt_memcy ( obj , 0, 1592 obj -> da , obj-> size , DB_USERCOPY_GETDATA )) != 0) 1593 out2 ; 1594 eq -> obj = obj; 1596 DB_LOCK_PUT : 1598 jlock = (* jv )-> `GObjeFld (jv, jlockq , 1599 lockq_lock_fid ); 1600 i( jlock = NULL || 1601 ( jlockp = (* jv )-> `GLgFld (jv, jlock , 1602 lock__fid )) == 0L) { 1603 `__dbj_throw ( jv , EINVAL , 1604 "LockRequeock fld iNULL", NULL , 1605 jdbv ); 1606 out2 ; 1608 lockp = *( DB_LOCK **)(*)& jlockp ; 1609 eq -> lock = * lockp ; 1611 DB_LOCK_PUT_ALL : 1612 DB_LOCK_TIMEOUT : 1615 DB_LOCK_PUT_OBJ : 1617 jobj = (* jv )-> `GObjeFld (jv, jlockq , 1618 lockq_obj_fid ); 1619 i(( r = `__dbj_dbt_cy ( jv , 1620 & locked_dbts [ i ], & obj , jobj , 0)) != 0 || 1621 ( r = 1622 `__os_umloc ( dbv , obj -> size , &obj-> da )) != 0 || 1623 ( r = `__dbj_dbt_memcy ( obj , 0, 1624 obj -> da , obj-> size , DB_USERCOPY_GETDATA )) != 0) 1625 out2 ; 1626 eq -> obj = obj; 1629 `__dbj_throw ( jv , EINVAL , 1630 "DbEnv.lock_vebad ovue", NULL , jdbv ); 1631 out2 ; 1635 r = dbv -> `lock_vec (dbv, ( u_t32_t ) lock , (u_t32_t) ags , 1636 lockq , cou , & edq ); 1637 i( r == 0) 1638 comed = cou ; 1640 comed = edq - lockq ; 1643 i = 0; i < comed ; i++) { 1644 = lockq [ i ].op; 1645 i( = DB_LOCK_PUT ) { 1650 jlockq = (* jv )-> `GObjeAayEmt (jenv, 1651 li , i + offt ); 1652 jlock = (* jv )-> `GObjeFld (jv, jlockq , 1653 lockq_lock_fid ); 1654 jlockp = (* jv )-> `GLgFld (jv, jlock , 1655 lock__fid ); 1656 lockp = *( DB_LOCK **)(*)& jlockp ; 1657 `__os_ ( NULL , lockp ); 1658 (* jv )-> `SLgFld (jv, jlock , lock__fid , 1659 ( jlg )0); 1661 i( = DB_LOCK_GET ) { 1667 i(( loc_r = 1668 `__os_mloc ( dbv , ( DB_LOCK ), & lockp )) != 0) { 1669 `__dbj_throw ( jv , loc_r , NULL , NULL, 1670 jdbv ); 1671 out2 ; 1674 * lockp = lockq [ i ]. lock ; 1675 *( DB_LOCK **)(*)& jlockp = lockp ; 1677 jlockq = (* jv )-> `GObjeAayEmt (jenv, 1678 li , i + offt ); 1679 jlock = (* jv )-> `NewObje (jv, lock_ass , 1680 lock_cڡru , jlockp , JNI_TRUE ); 1681 i( jlock = NULL ) 1682 out2 ; 1683 (* jv )-> `SLgFld (jv, jlock , lock__fid , 1684 jlockp ); 1685 (* jv )-> `SObjeFld (jv, jlockq , 1686 lockq_lock_fid , jlock ); 1691 i( r = DB_LOCK_NOTGRANTED && i < cou ) { 1692 jlockq = (* jv )-> `GObjeAayEmt (jv, li , 1693 i + offt ); 1694 jobj = (* jv )-> `GObjeFld (jv, jlockq , 1695 lockq_obj_fid ); 1696 jlock = (* jv )-> `GObjeFld (jv, jlockq , 1697 lockq_lock_fid ); 1698 (* jv )-> `Throw (jenv, 1699 (* jv )-> `NewObje (jv, lockex_ass , lockex_cڡru , 1700 (* jv )-> `NewSgUTF (jenv, "DbEnv.lock_vec incomplete"), 1701 lockq [ i ]. ,ockq[i]. mode , jobj , jlock , i, jdbv )); 1702 } i( r != 0) 1703 `__dbj_throw ( jv , r , NULL , NULL, jdbv ); 1705 out2 : `__os_ ( dbv , locked_dbts ); 1706 out1 : i = 0, eq = & lockq [0]; i < cou ; i++,rereq++) 1707 i(( eq -> = DB_LOCK_GET ||q-> = DB_LOCK_PUT ) && 1708 eq -> obj -> da ! NULL ) 1709 `__os_u ( dbv , eq -> obj -> da ); 1710 `__os_ ( dbv , lockq ); 1711 out0 : ; 1712 } } 1718 #JAVADB_STAT_INT ( jv , jobj , fid , p , me ) \ 1719 (* jv )-> `SIFld (jv, jobj , fid , ( jt ) p -> me ) ) 1721 #JAVADB_STAT_STRING ( jv , jobj , fid , p , me ) \ 1722 (* jv )-> `SObjeFld (jv, jobj , fid , \ 1723 (* jv )-> `NewSgUTF (jv, p -> me )) ) 1725 #JAVADB_STAT_LSN ( jv , jobj , fid , p , me ) \ 1726 (* jv )-> `SObjeFld (jv, jobj , fid , \ 1727 `__dbj_wp_DB_LSN ( jv , & p -> me )) ) 1729 #JAVADB_STAT_LONG ( jv , jobj , fid , p , me ) \ 1730 (* jv )-> `SLgFld (jv, jobj , fid , \ 1731 ( jlg ) p -> me ) ) 1733 #JAVADB_STAT_XID ( jv , jobj , fid , p , me ) { \ 1734 jobje jr = \ 1735 (* jv )-> `NewByAay (jv, ( jsize ) DB_XIDDATASIZE ); \ 1736 (* jv )-> `SByAayRegi (jv, jr , \ 1737 0, ( jsize ) DB_XIDDATASIZE , ( jby *) p -> me ); \ 1738 (* jv )-> `SObjeFld (jv, jobj , fid , jr ); \ 1739 } ) 1744 #JAVADB_STAT_ACTIVE ( jv , , jobj , p , me ) \ 1745 d{} 0) ) 1747 ~"java__auto.c " 1750 $__dbj_r (cڡ DB_ENV * dbv , 1751 cڡ * efix , cڡ * msg ) 1753 JNIEnv * jv = `__dbj_g_jnnv (); 1754 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1756 `COMPQUIET ( efix , NULL ); 1758 i( jdbv ! NULL ) 1759 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1760 r_mhod , (* jv )-> `NewSgUTF (jv, msg )); 1761 } } 1763 $__dbj_v_edback ( DB_ENV * dbv , code , r ) 1765 JNIEnv * jv = `__dbj_g_jnnv (); 1766 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1768 i( jdbv ! NULL ) 1769 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1770 v_edback_mhod , code , r ); 1771 } } 1773 $__dbj_mesge (cڡ DB_ENV * dbv , cڡ * msg ) 1775 JNIEnv * jv = `__dbj_g_jnnv (); 1776 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1778 i( jdbv ! NULL ) 1779 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1780 msg_mhod , (* jv )-> `NewSgUTF (jv, msg )); 1781 } } 1783 $__dbj_nic ( DB_ENV * dbv , r ) 1785 JNIEnv * jv = `__dbj_g_jnnv (); 1786 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1788 i( jdbv ! NULL ) 1789 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1790 nic_mhod , 1791 `__dbj_g_ex ( jv , r , NULL , NULL, jdbv )); 1792 } } 1794 $__dbj_p_dich ( DB_ENV * dbv , 1795 DBT * dbt , DB_LSN * l , db_cs cs ) 1797 JNIEnv * jv = `__dbj_g_jnnv (); 1798 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1799 jobje jdbt , jl ; 1800 jbyAay jdb ; 1801 t ; 1803 i( jdbv = NULL ) 1804 ( EINVAL ); 1806 jdbt = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1807 `__dbj_dbt_cyout ( jv , dbt , & jdb , jdbt ); 1808 i( jdbt = NULL ) 1809 ( ENOMEM ); 1811 jl = ( l = NULL ? NULL : `__dbj_wp_DB_LSN ( jv ,sn); 1813 t = (* jv )-> `ClNvtuIMhod (jv, jdbv , dbv_ass , 1814 p_dich_mhod , jdbt , jl , cs ); 1816 i((* jv )-> `ExiOccued (jenv)) { 1818 t = EINVAL ; 1821 (* jv )-> `DeLolRef (jv, jdb ); 1822 (* jv )-> `DeLolRef (jv, jdbt ); 1823 i( jl ! NULL ) 1824 (* jv )-> `DeLolRef (jv, jl ); 1826 ( t ); 1827 } } 1829 $__dbj_evt_nify ( DB_ENV * dbv , u_t32_t evt_id , * fo ) 1831 JNIEnv * jv = `__dbj_g_jnnv (); 1832 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1834 i( jdbv = NULL ) 1837 evt_id ) { 1838 DB_EVENT_PANIC : 1839 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1840 dbv_ass , nic_evt_nify_mhod ); 1842 DB_EVENT_REP_CLIENT : 1843 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1844 dbv_ass , p__evt_nify_mhod ); 1846 DB_EVENT_REP_ELECTED : 1847 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1848 dbv_ass , p_eed_evt_nify_mhod ); 1850 DB_EVENT_REP_MASTER : 1851 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1852 dbv_ass , p_ma_evt_nify_mhod ); 1854 DB_EVENT_REP_NEWMASTER : 1855 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1856 dbv_ass , p_w_ma_evt_nify_mhod , 1857 *(*) fo ); 1859 DB_EVENT_REP_PERM_FAILED : 1860 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1861 dbv_ass , p_rm_ed_evt_nify_mhod ); 1863 DB_EVENT_REP_STARTUPDONE : 1864 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1865 dbv_ass , p_tup_de_evt_nify_mhod ); 1867 DB_EVENT_WRITE_FAILED : 1868 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1869 dbv_ass , wre_ed_evt_nify_mhod , 1870 *(*) fo ); 1873 dbv -> `rx (dbenv, "Unhandledvent callback inhe Java API"); 1874 `DB_ASSERT ( dbv , 0); 1876 } } 1878 $__dbj_p_t ( DB_ENV * dbv , 1879 cڡ DBT * cڌ , cڡ DBT * c , cڡ DB_LSN * l , vid , 1880 u_t32_t ags ) 1882 JNIEnv * jv = `__dbj_g_jnnv (); 1883 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1884 jobje jcڌ , jc , jl ; 1885 jbyAay jcڌެr , j ; 1886 t ; 1888 i( jdbv = NULL ) 1889 ( EINVAL ); 1891 jcڌ = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1892 jc = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1893 i( jcڌ = NULL || jc == NULL) 1894 ( ENOMEM ); 1896 `__dbj_dbt_cyout ( jv , cڌ , & jcڌެr , jcڌ ); 1897 `__dbj_dbt_cyout ( jv , c , & j , jc ); 1898 jl = ( l = NULL ? NULL : `__dbj_wp_DB_LSN ( jv , ( DB_LSN *)lsn); 1900 i( jcڌެr = NULL || j == NULL) 1901 ( ENOMEM ); 1903 t = (* jv )-> `ClNvtuIMhod (jv, jdbv , dbv_ass , 1904 p_t_mhod , jcڌ , jc , jl , vid , ags ); 1906 i((* jv )-> `ExiOccued (jenv)) { 1908 t = EINVAL ; 1911 (* jv )-> `DeLolRef (jv, j ); 1912 (* jv )-> `DeLolRef (jv, jcڌެr ); 1913 (* jv )-> `DeLolRef (jv, jc ); 1914 (* jv )-> `DeLolRef (jv, jcڌ ); 1915 i( jl ! NULL ) 1916 (* jv )-> `DeLolRef (jv, jl ); 1918 ( t ); 1919 } } 1921 $__dbj_ckey_ ( DB * db , 1922 cڡ DBT * key , cڡ DBT * da , DBT * su ) 1924 JNIEnv * jv = `__dbj_g_jnnv (); 1925 jobje jdb = (jobje) `DB_INTERNAL ( db ); 1926 jobje jkey , jda , jsu ; 1927 jobjeAay jskeys ; 1928 jsize i , num_skeys ; 1929 jbyAay jkeyr , jd ; 1930 DBT_LOCKED esu ; 1931 DBT * esu ; 1932 t ; 1934 i( jdb = NULL ) 1935 ( EINVAL ); 1937 jkey = ( key -> p_da ! NULL ) ? 1938 (( DBT_LOCKED *) key -> p_da )-> jdbt : 1939 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1940 jda = ( da -> p_da ! NULL ) ? 1941 (( DBT_LOCKED *) da -> p_da )-> jdbt : 1942 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1943 i( jkey = NULL || jda == NULL) 1944 ( ENOMEM ); 1946 i( key -> p_da = NULL ) { 1947 `__dbj_dbt_cyout ( jv , key , & jkeyr , jkey ); 1948 i( jkeyr = NULL ) 1949 ( ENOMEM ); 1951 i( da -> p_da = NULL ) { 1952 `__dbj_dbt_cyout ( jv , da , & jd , jda ); 1953 i( jd = NULL ) 1954 ( ENOMEM ); 1957 jskeys = ( jobjeAay )(* jv )-> `ClNvtuObjeMhod (jenv, 1958 jdb , db_ass , ckey__mhod , jkey , jda ); 1960 i( jskeys = NULL || 1961 ( num_skeys = (* jv )-> `GAayLgth (jv, jskeys )) == 0) { 1962 t = DB_DONOTINDEX ; 1963 r ; 1964 } i( num_skeys == 1) { 1965 `memt ( su , 0, ( DBT )); 1966 esu = su ; 1968 i(( t = `__os_umloc ( db -> dbv , 1969 num_skeys * ( DBT ), & su -> da )) != 0) 1970 r ; 1971 `memt ( su -> da , 0, num_skeys * ( DBT )); 1972 su -> size = num_skeys ; 1973 `F_SET ( su , DB_DBT_APPMALLOC | DB_DBT_MULTIPLE ); 1974 esu = ( DBT *) su -> da ; 1977 i((* jv )-> `ExiOccued (jenv)) { 1979 t = EINVAL ; 1980 r ; 1983 i = 0; i < num_skeys ; i++, esu ++) { 1984 jsu = (* jv )-> `GObjeAayEmt (jv, jskeys , i ); 1986 i(( t = 1987 `__dbj_dbt_cy ( jv , & esu , NULL , jsu , 0)) != 0) 1988 r ; 1990 i( esu . dbt . size != 0) { 1992 esu -> size = esu . dbt .size; 1993 i(( t = `__os_umloc ( NULL , 1994 esu -> size , &esu-> da )) != 0) 1995 r ; 1996 i(( t = `__dbj_dbt_memcy (& esu . dbt , 0, 1997 esu -> da ,su-> size , 1998 DB_USERCOPY_GETDATA )) != 0) 1999 r ; 2000 `__dbj_dbt_a ( jv , 2001 jsu , & esu . dbt , &lresult); 2002 (* jv )-> `DeLolRef (jv, esu . jr ); 2003 `F_SET ( esu , DB_DBT_APPMALLOC ); 2006 (* jv )-> `DeLolRef (jv, jsu ); 2009 r : i( key -> p_da = NULL ) { 2010 (* jv )-> `DeLolRef (jv, jkeyr ); 2011 (* jv )-> `DeLolRef (jv, jkey ); 2013 i( da -> p_da = NULL ) { 2014 (* jv )-> `DeLolRef (jv, jd ); 2015 (* jv )-> `DeLolRef (jv, jda ); 2018 ( t ); 2019 } } 2021 $__dbj_nd_o ( DB * db , DBT * dbt , db_o_t o ) 2023 JNIEnv * jv = `__dbj_g_jnnv (); 2024 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2025 jobje jdbt ; 2026 DBT_LOCKED esu ; 2027 jbyAay jdb ; 2028 t ; 2030 i( jdb = NULL ) 2031 ( EINVAL ); 2038 jdbt = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 2039 i( jdbt = NULL ) 2040 ( ENOMEM ); 2042 `__dbj_dbt_cyout ( jv , dbt , & jdb , jdbt ); 2043 i( jdb = NULL ) 2044 ( ENOMEM ); 2046 t = 0; 2047 (* jv )-> `ClNvtuVoidMhod (jv, jdb , db_ass , 2048 nd_o_mhod , jdbt , o ); 2050 i((* jv )-> `ExiOccued (jenv)) { 2052 ( EINVAL ); 2055 t = `__dbj_dbt_cy ( jv , & esu , NULL , jdbt , 0); 2056 `memt ( dbt , 0, ( DBT )); 2058 i( t =0 && esu . dbt . size != 0) { 2060 dbt -> size = esu .dbt.size; 2061 i(( t = 2062 `__os_umloc ( NULL , dbt -> size , &dbt-> da )) != 0) 2063 r ; 2064 i(( t = `__dbj_dbt_memcy (& esu . dbt , 0, 2065 dbt -> da , dbt-> size , 2066 DB_USERCOPY_GETDATA )) != 0) 2067 r ; 2068 `__dbj_dbt_a ( jv , jdbt , & esu . dbt , &lresult); 2069 (* jv )-> `DeLolRef (jv, esu . jr ); 2070 `F_SET ( dbt , DB_DBT_APPMALLOC ); 2073 r : (* jv )-> `DeLolRef (jv, jdb ); 2074 (* jv )-> `DeLolRef (jv, jdbt ); 2076 ( t ); 2077 } } 2082 $__dbj_am_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 , 2083 jmhodID com_mhod ) 2085 JNIEnv * jv = `__dbj_g_jnnv (); 2086 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2087 jbyAay jdb1 , jdb2 ; 2088 t ; 2090 i( jdb = NULL ) 2091 ( EINVAL ); 2093 i( dbt1 -> p_da ! NULL ) 2094 jdb1 = (( DBT_LOCKED *) dbt1 -> p_da )-> jr ; 2096 jdb1 = (* jv )-> `NewByAay (jv, ( jsize ) dbt1 -> size ); 2097 i( jdb1 = NULL ) 2098 ( ENOMEM ); 2099 (* jv )-> `SByAayRegi (jv, jdb1 , 0, 2100 ( jsize ) dbt1 -> size , ( jby *)dbt1-> da ); 2103 i( dbt2 -> p_da ! NULL ) 2104 jdb2 = (( DBT_LOCKED *) dbt2 -> p_da )-> jr ; 2106 jdb2 = (* jv )-> `NewByAay (jv, ( jsize ) dbt2 -> size ); 2107 i( jdb2 = NULL ) 2108 ( ENOMEM ); 2109 (* jv )-> `SByAayRegi (jv, jdb2 , 0, 2110 ( jsize ) dbt2 -> size , ( jby *)dbt2-> da ); 2113 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2114 com_mhod , jdb1 , jdb2 ); 2116 i((* jv )-> `ExiOccued (jenv)) { 2118 t = EINVAL ; 2121 i( dbt1 -> p_da = NULL ) 2122 (* jv )-> `DeLolRef (jv, jdb1 ); 2123 i( dbt2 -> p_da = NULL ) 2124 (* jv )-> `DeLolRef (jv, jdb2 ); 2126 ( t ); 2127 } } 2129 $__dbj_bt_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2131 `__dbj_am_com ( db , dbt1 , dbt2 , bt_com_mhod ); 2132 } } 2134 size_t $__dbj_bt_efix ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2136 JNIEnv * jv = `__dbj_g_jnnv (); 2137 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2138 jobje jdbt1 , jdbt2 ; 2139 jbyAay jdb1 , jdb2 ; 2140 t ; 2142 i( jdb = NULL ) 2143 ( EINVAL ); 2145 i( dbt1 -> p_da ! NULL ) 2146 jdbt1 = (( DBT_LOCKED *) dbt1 -> p_da )-> jdbt ; 2148 i(( jdbt1 = 2149 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru )= NULL ) 2150 ( ENOMEM ); 2151 `__dbj_dbt_cyout ( jv , dbt1 , & jdb1 , jdbt1 ); 2152 i( jdb1 = NULL ) 2153 ( ENOMEM ); 2156 i( dbt2 -> p_da ! NULL ) 2157 jdbt2 = (( DBT_LOCKED *) dbt2 -> p_da )-> jdbt ; 2159 i(( jdbt2 = 2160 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru )= NULL ) 2161 ( ENOMEM ); 2162 `__dbj_dbt_cyout ( jv , dbt2 , & jdb2 , jdbt2 ); 2163 i( jdb2 = NULL ) 2164 ( ENOMEM ); 2167 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2168 bt_efix_mhod , jdbt1 , jdbt2 ); 2170 i( dbt1 -> p_da = NULL ) { 2171 (* jv )-> `DeLolRef (jv, jdb1 ); 2172 (* jv )-> `DeLolRef (jv, jdbt1 ); 2174 i( dbt2 -> p_da = NULL ) { 2175 (* jv )-> `DeLolRef (jv, jdb2 ); 2176 (* jv )-> `DeLolRef (jv, jdbt2 ); 2179 ( t ); 2180 } } 2182 $__dbj_dup_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2184 JNIEnv * jv = `__dbj_g_jnnv (); 2185 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2186 jbyAay jdb1 , jdb2 ; 2187 t ; 2189 i( jdb = NULL ) 2190 ( EINVAL ); 2192 jdb1 = (* jv )-> `NewByAay (jv, ( jsize ) dbt1 -> size ); 2193 i( jdb1 = NULL ) 2194 ( ENOMEM ); 2195 (* jv )-> `SByAayRegi (jv, jdb1 , 0, ( jsize ) dbt1 -> size , 2196 ( jby *) dbt1 -> da ); 2198 jdb2 = (* jv )-> `NewByAay (jv, ( jsize ) dbt2 -> size ); 2199 i( jdb2 = NULL ) 2200 ( ENOMEM ); 2201 (* jv )-> `SByAayRegi (jv, jdb2 , 0, ( jsize ) dbt2 -> size , 2202 ( jby *) dbt2 -> da ); 2204 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2205 dup_com_mhod , jdb1 , jdb2 ); 2207 i((* jv )-> `ExiOccued (jenv)) { 2209 t = EINVAL ; 2212 (* jv )-> `DeLolRef (jv, jdb2 ); 2213 (* jv )-> `DeLolRef (jv, jdb1 ); 2215 ( t ); 2216 } } 2218 $__dbj_db_edback ( DB * db , code , r ) 2220 JNIEnv * jv = `__dbj_g_jnnv (); 2221 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2223 i( jdb ! NULL ) 2224 (* jv )-> `ClNvtuVoidMhod (jv, jdb , db_ass , 2225 db_edback_mhod , code , r ); 2226 } } 2228 $__dbj_h_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2230 `__dbj_am_com ( db , dbt1 , dbt2 , h_com_mhod ); 2231 } } 2233 u_t32_t $__dbj_h_hash ( DB * db , cڡ * da , u_t32_t n ) 2235 JNIEnv * jv = `__dbj_g_jnnv (); 2236 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2237 jbyAay jr = (* jv )-> `NewByAay (jv, ( jsize ) n ); 2238 t ; 2240 i( jdb = NULL ) 2241 ( EINVAL ); 2243 i(( jr = (* jv )-> `NewByAay (jv, ( jsize ) n )= NULL ) 2244 ( ENOMEM ); 2246 (* jv )-> `SByAayRegi (jv, jr , 0, ( jsize ) n , ( jby *) da ); 2248 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2249 h_hash_mhod , jr , n ); 2251 (* jv )-> `DeLolRef (jv, jr ); 2253 ( t ); 2254 } } 2257 JNIEXPORT jlg JNICALL 2258 $Java_com_pyt_db__db_1javaJNI_DbEnvRef0 ( 2259 JNIEnv * jv , jass js , jlg jg1 , jobje jg2 ) { 2260 DB_ENV * lf = *(DB_ENV **)(*)& jg1 ; 2261 jlg t ; 2262 `COMPQUIET ( js , NULL ); 2264 `DB_ENV_INTERNAL ( lf (*)(* jv )-> `NewGlobRef (jv, jg2 ); 2265 *( jobje *)(*)& t = (jobje) `DB_ENV_INTERNAL ( lf ); 2266 ( t ); 2267 } } 2269 JNIEXPORT jlg JNICALL 2270 $Java_com_pyt_db__db_1javaJNI_DbRef0 ( 2271 JNIEnv * jv , jass js , jlg jg1 , jobje jg2 ) { 2272 DB * lf = *(DB **)(*)& jg1 ; 2273 jlg t ; 2274 `COMPQUIET ( js , NULL ); 2276 `DB_INTERNAL ( lf (*)(* jv )-> `NewGlobRef (jv, jg2 ); 2277 *( jobje *)(*)& t = (jobje) `DB_INTERNAL ( lf ); 2278 ( t ); 2279 } } 2281 JNIEXPORT JNICALL 2282 $Java_com_pyt_db__db_1javaJNI_deRef0 ( 2283 JNIEnv * jv , jass js , jlg jg1 ) { 2284 jobje jf = *(jobje *)(*)& jg1 ; 2285 `COMPQUIET ( js , NULL ); 2287 i( jf != 0L) 2288 (* jv )-> `DeGlobRef (jv, jf ); 2289 } } 2291 JNIEXPORT jlg JNICALL 2292 $Java_com_pyt_db__db_1javaJNI_gDbEnv0 ( 2293 JNIEnv * jv , jass js , jlg jg1 ) { 2294 DB * lf = *(DB **)(*)& jg1 ; 2295 jlg t ; 2297 `COMPQUIET ( jv , NULL ); 2298 `COMPQUIET ( js , NULL ); 2300 *( DB_ENV **)(*)& t = lf -> dbv ; 2301 ( t ); 2302 } } 2304 JNIEXPORT jboޗn JNICALL 2305 $Java_com_pyt_db__DbUt_is_1big_1dn ( 2306 JNIEnv * jv , jass azz ) 2308 `COMPQUIET ( jv , NULL ); 2309 `COMPQUIET ( azz , NULL ); 2311 ( `__db_isbigdn (? JNI_TRUE : JNI_FALSE ); 2312 } } 2315 tdb_t_t ; 2316 tt_bo ; 2318 s__db_lk_cis { 2319 u_t8_t * mlk_cis ; 2320 mlk_modes ; 2323 s__db_out_am { 2324 * mhd ; 2325 (* mback __P ((*, const *)); 2328 s__db_pmgr_ses { 2329 DB_REPMGR_SITE * mses ; 2330 u_t32_t mnses ; 2333 #Db __db ) 2334 #Dbc __dbc ) 2335 #Dbt __db_dbt ) 2336 #DbEnv __db_v ) 2337 #DbLock __db_lock_u ) 2338 #DbLogc __db_log_curs ) 2339 #DbL __db_l ) 2340 #DbMpoFe __db_mpofe ) 2341 #DbSequ __db_qu ) 2342 #DbTxn __db_txn ) 2345 * gunud = SWIG_JavaThrowExi ; 2347 SWIGINTERN Db * $w_Db ( DB_ENV * dbv , u_t32_t ags ){ 2348 DB * lf = NULL ; 2349 o = `db_ (& lf , dbv , ags ); 2350 i( o =0 && dbv = NULL ) 2351 lf -> dbv -> dbt_urcy = __dbj_dbt_memcy ; 2352 lf ; 2353 } } 2354 SWIGINTERN db_t_t Db_assoc ( Db * lf , DB_TXN * txnid , DB * cdy ,(* back )(DB *, DBT cڡ *,DBT cڡ *,DBT *), u_t32_t ags ){ 2355 lf -> `assoc (lf, txnid , cdy , back , ags ); 2356 } } 2357 SWIGINTERN db_t_t $Db_com ( Db * lf , DB_TXN * txnid , DBT * t ,DBT * , DB_COMPACT * c_da , u_t32_t ags ,DBT * d ){ 2358 lf -> `com (lf, txnid , t , , c_da , ags , 2359 d ); 2360 } } 2361 SWIGINTERN $Db_o ( Db * lf , u_t32_t ags ){ 2362 o = lf -> `o (lf, ags ); 2363 o ; 2364 } } 2365 SWIGINTERN DBC * $Db_curs ( Db * lf , DB_TXN * txnid , u_t32_t ags ){ 2366 DBC * cursp = NULL ; 2367 o = lf -> `curs (lf, txnid , & cursp , ags ); 2368 cursp ; 2369 } } 2370 SWIGINTERN $Db_d ( Db * lf , DB_TXN * txnid , DBT * key , u_t32_t ags ){ 2371 lf -> `d (lf, txnid , key , ags ); 2372 } } 2373 SWIGINTERN $Db_r ( Db * lf , r ,cڡ * mesge ){ 2374 lf -> `r (lf, r , mesge ); 2375 } } 2376 SWIGINTERN $Db_rx ( Db * lf ,cڡ * mesge ){ 2377 lf -> `rx (lf, mesge ); 2378 } } 2379 SWIGINTERN $Db_exis ( Db * lf , DB_TXN * txnid , DBT * key , u_t32_t ags ){ 2380 lf -> `exis (lf, txnid , key , ags ); 2381 } } 2382 SWIGINTERN $Db_g ( Db * lf , DB_TXN * txnid , DBT * key ,DBT * da , u_t32_t ags ){ 2383 lf -> `g (lf, txnid , key , da , ags ); 2384 } } 2385 SWIGINTERN t_bo $Db_g_byswd ( Db * lf ){ 2386 t = 0; 2387 o = lf -> `g_byswd (lf, & t ); 2388 t ; 2389 } } 2390 SWIGINTERN jlg $Db_g_chesize ( Db * lf ){ 2391 u_t32_t gbys = 0, bys = 0; 2392 o = lf -> `g_chesize (lf, & gbys , & bys , NULL ); 2393 ( jlg ) gbys * GIGABYTE + bys ; 2394 } } 2395 SWIGINTERN u_t32_t $Db_g_chesize_nche ( Db * lf ){ 2396 t = 0; 2397 o = lf -> `g_chesize (lf, NULL , NULL, & t ); 2398 t ; 2399 } } 2400 SWIGINTERN cڡ * $Db_g_fame ( Db * lf ){ 2401 cڡ * t = NULL ; 2402 o = lf -> `g_dbme (lf, & t , NULL ); 2403 t ; 2404 } } 2405 SWIGINTERN cڡ * $Db_g_dbme ( Db * lf ){ 2406 cڡ * t = NULL ; 2407 o = lf -> `g_dbme (lf, NULL , & t ); 2408 t ; 2409 } } 2410 SWIGINTERN u_t32_t $Db_g_y_ags ( Db * lf ){ 2411 u_t32_t t = 0; 2412 `CRYPTO_ONLY ( o = lf -> `g_y_ags (lf, & t )) 2413 t ; 2414 } } 2415 SWIGINTERN u_t32_t $Db_g_ags ( Db * lf ){ 2416 u_t32_t t = 0; 2417 o = lf -> `g_ags (lf, & t ); 2418 t ; 2419 } } 2420 SWIGINTERN $Db_g_ld ( Db * lf ){ 2421 t = 0; 2422 o = lf -> `g_ld (lf, & t ); 2423 t ; 2424 } } 2425 SWIGINTERN DB_MPOOLFILE * $Db_g_mpf ( Db * lf ){ 2426 o = 0; 2427 lf -> `g_mpf (self); 2428 } } 2429 SWIGINTERN u_t32_t $Db_g_ݒ_ags ( Db * lf ){ 2430 u_t32_t t = 0; 2431 o = lf -> `g_ݒ_ags (lf, & t ); 2432 t ; 2433 } } 2434 SWIGINTERN u_t32_t $Db_g_gesize ( Db * lf ){ 2435 u_t32_t t = 0; 2436 o = lf -> `g_gesize (lf, & t ); 2437 t ; 2438 } } 2439 SWIGINTERN u_t32_t $Db_g_bt_mkey ( Db * lf ){ 2440 u_t32_t t = 0; 2441 o = lf -> `g_bt_mkey (lf, & t ); 2442 t ; 2443 } } 2444 SWIGINTERN u_t32_t $Db_g_h_f ( Db * lf ){ 2445 u_t32_t t = 0; 2446 o = lf -> `g_h_f (lf, & t ); 2447 t ; 2448 } } 2449 SWIGINTERN u_t32_t $Db_g_h_m ( Db * lf ){ 2450 u_t32_t t = 0; 2451 o = lf -> `g_h_m (lf, & t ); 2452 t ; 2453 } } 2454 SWIGINTERN $Db_g__dim ( Db * lf ){ 2455 t = 0; 2456 o = lf -> `g__dim (lf, & t ); 2457 t ; 2458 } } 2459 SWIGINTERN DB_CACHE_PRIORITY $Db_g_iܙy ( Db * lf ){ 2460 DB_CACHE_PRIORITY t ; 2461 o = lf -> `g_iܙy (lf, & t ); 2462 t ; 2463 } } 2464 SWIGINTERN u_t32_t $Db_g__n ( Db * lf ){ 2465 u_t32_t t = 0; 2466 o = lf -> `g__n (lf, & t ); 2467 t ; 2468 } } 2469 SWIGINTERN $Db_g__d ( Db * lf ){ 2470 t = 0; 2471 o = lf -> `g__d (lf, & t ); 2472 t ; 2473 } } 2474 SWIGINTERN cڡ * $Db_g__sour ( Db * lf ){ 2475 cڡ * t = NULL ; 2476 o = lf -> `g__sour (lf, & t ); 2477 t ; 2478 } } 2479 SWIGINTERN u_t32_t $Db_g_q_exsize ( Db * lf ){ 2480 u_t32_t t = 0; 2481 o = lf -> `g_q_exsize (lf, & t ); 2482 t ; 2483 } } 2484 SWIGINTERN t_bo $Db_g_muɝ ( Db * lf ){ 2485 lf -> `g_muɝ (self); 2486 } } 2487 SWIGINTERN t_bo $Db_g_iڮ ( Db * lf ){ 2488 lf -> `g_iڮ (self); 2489 } } 2490 SWIGINTERN DBTYPE $Db_g_ty ( Db * lf ){ 2491 DBTYPE ty = (DBTYPE)0; 2492 o = lf -> `g_ty (lf, & ty ); 2493 ty ; 2494 } } 2495 SWIGINTERN DBC * $Db_jo ( Db * lf , DBC ** curi , u_t32_t ags ){ 2496 DBC * db = NULL ; 2497 o = lf -> `jo (lf, curi , & db , ags ); 2498 db ; 2499 } } 2500 SWIGINTERN db_t_t $Db_key_nge ( Db * lf , DB_TXN * txnid , DBT * key , DB_KEY_RANGE * key_nge , u_t32_t ags ){ 2501 lf -> `key_nge (lf, txnid , key , key_nge , ags ); 2502 } } 2503 SWIGINTERN db_t_t $Db_ݒ ( Db * lf , DB_TXN * txnid ,cڡ * fe ,cڡ * daba , DBTYPE ty , u_t32_t ags , mode ){ 2504 lf -> `ݒ (lf, txnid , fe , daba , 2505 ty , ags , mode ); 2506 } } 2507 SWIGINTERN $Db_pg ( Db * lf , DB_TXN * txnid , DBT * key ,DBT * pkey ,DBT * da , u_t32_t ags ){ 2508 lf -> `pg (lf, txnid , key , pkey , da , ags ); 2509 } } 2510 SWIGINTERN $Db_put ( Db * lf , DB_TXN * txnid , DBT * key ,DBT * da , u_t32_t ags ){ 2511 lf -> `put (lf, txnid , key , da , ags ); 2512 } } 2513 SWIGINTERN db_t_t $Db_move ( Db * lf ,cڡ * fe ,cڡ * daba , u_t32_t ags ){ 2514 lf -> `move (lf, fe , daba , ags ); 2515 } } 2516 SWIGINTERN db_t_t $Db_me ( Db * lf ,cڡ * fe ,cڡ * daba ,cڡ * wme , u_t32_t ags ){ 2517 lf -> `me (lf, fe , daba , wme , ags ); 2518 } } 2519 SWIGINTERN db_t_t Db_t_nd_o ( Db * lf ,(* db_nd_o_f )( DB *, DBT *, db_o_t )){ 2520 lf -> `t_nd_o (lf, db_nd_o_f ); 2521 } } 2522 SWIGINTERN db_t_t Db_t_bt_com ( Db * lf ,(* bt_com_f )( DB *, DBT const *,DBT const *)){ 2523 lf -> `t_bt_com (lf, bt_com_f ); 2524 } } 2525 SWIGINTERN db_t_t $Db_t_bt_mkey ( Db * lf , u_t32_t bt_mkey ){ 2526 lf -> `t_bt_mkey (lf, bt_mkey ); 2527 } } 2528 SWIGINTERN db_t_t Db_t_bt_efix ( Db * lf , $size_t (* bt_efix_f )( DB *, DBT const *,DBT const *)){ 2529 lf -> `t_bt_efix (lf, bt_efix_f ); 2530 } } 2531 SWIGINTERN db_t_t $Db_t_chesize ( Db * lf , jlg bys , nche ){ 2532 lf -> `t_chesize (self, 2533 ( u_t32_t )( bys / GIGABYTE ), 2534 ( u_t32_t )( bys % GIGABYTE ), nche ); 2535 } } 2536 SWIGINTERN db_t_t Db_t_dup_com ( Db * lf ,(* dup_com_f )( DB *, DBT const *,DBT const *)){ 2537 lf -> `t_dup_com (lf, dup_com_f ); 2538 } } 2539 SWIGINTERN db_t_t $Db_t_y ( Db * lf ,cڡ * sswd , u_t32_t ags ){ 2540 lf -> `t_y (lf, sswd , ags ); 2541 } } 2542 SWIGINTERN db_t_t Db_t_edback ( Db * lf ,(* db_edback_f )( DB *,,)){ 2543 lf -> `t_edback (lf, db_edback_f ); 2544 } } 2545 SWIGINTERN db_t_t $Db_t_ags ( Db * lf , u_t32_t ags ){ 2546 lf -> `t_ags (lf, ags ); 2547 } } 2548 SWIGINTERN db_t_t Db_t_h_com ( Db * lf ,(* h_com_f )( DB *, DBT const *,DBT const *)){ 2549 lf -> `t_h_com (lf, h_com_f ); 2550 } } 2551 SWIGINTERN db_t_t $Db_t_h_f ( Db * lf , u_t32_t h_f ){ 2552 lf -> `t_h_f (lf, h_f ); 2553 } } 2554 SWIGINTERN db_t_t Db_t_h_hash ( Db * lf , $u_t32_t (* h_hash_f )( DB *,cڡ *, u_t32_t )){ 2555 lf -> `t_h_hash (lf, h_hash_f ); 2556 } } 2557 SWIGINTERN db_t_t $Db_t_h_m ( Db * lf , u_t32_t h_m ){ 2558 lf -> `t_h_m (lf, h_m ); 2559 } } 2560 SWIGINTERN db_t_t $Db_t_ld ( Db * lf , ld ){ 2561 lf -> `t_ld (lf, ld ); 2562 } } 2563 SWIGINTERN db_t_t $Db_t_gesize ( Db * lf , u_t32_t gesize ){ 2564 lf -> `t_gesize (lf, gesize ); 2565 } } 2566 SWIGINTERN db_t_t $Db_t_iܙy ( Db * lf , DB_CACHE_PRIORITY iܙy ){ 2567 lf -> `t_iܙy (lf, iܙy ); 2568 } } 2569 SWIGINTERN db_t_t $Db_t__dim ( Db * lf , _dim ){ 2570 lf -> `t__dim (lf, _dim ); 2571 } } 2572 SWIGINTERN db_t_t $Db_t__n ( Db * lf , u_t32_t _n ){ 2573 lf -> `t__n (lf, _n ); 2574 } } 2575 SWIGINTERN db_t_t $Db_t__d ( Db * lf , _d ){ 2576 lf -> `t__d (lf, _d ); 2577 } } 2578 SWIGINTERN db_t_t $Db_t__sour ( Db * lf ,* sour ){ 2579 lf -> `t__sour (lf, sour ); 2580 } } 2581 SWIGINTERN db_t_t $Db_t_q_exsize ( Db * lf , u_t32_t exsize ){ 2582 lf -> `t_q_exsize (lf, exsize ); 2583 } } 2584 SWIGINTERN * $Db_ ( Db * lf , DB_TXN * txnid , u_t32_t ags ){ 2585 * p = NULL ; 2586 o = lf -> ` (lf, txnid , & p , ags ); 2587 p ; 2588 } } 2589 SWIGINTERN db_t_t $Db_sync ( Db * lf , u_t32_t ags ){ 2590 lf -> `sync (lf, ags ); 2591 } } 2592 SWIGINTERN $Db_un ( Db * lf , DB_TXN * txnid , u_t32_t ags ){ 2593 u_t32_t cou = 0; 2594 o = lf -> `un (lf, txnid , & cou , ags ); 2595 cou ; 2596 } } 2597 SWIGINTERN db_t_t $Db_upgde ( Db * lf ,cڡ * fe , u_t32_t ags ){ 2598 lf -> `upgde (lf, fe , ags ); 2599 } } 2600 SWIGINTERN t_bo $Db_vify ( Db * lf ,cڡ * fe ,cڡ * daba , __db_out_am outfe , u_t32_t ags ){ 2605 __db_vify_ `__P (( DB *, const *, const 2606 *, *, (*)(*, cڡ *), u_t32_t )); 2607 o = `__db_vify_ ( lf , fe , daba , 2608 outfe . hd , outfe. back , ags ); 2609 i( o = DB_VERIFY_BAD ) { 2610 o = 0; 2614 } } 2615 SWIGINTERN db_t_t $Dbc_o ( Dbc * lf ){ 2616 lf -> `o (self); 2617 } } 2618 SWIGINTERN db_o_t $Dbc_cou ( Dbc * lf , u_t32_t ags ){ 2619 db_o_t cou = 0; 2620 o = lf -> `cou (lf, & cou , ags ); 2621 cou ; 2622 } } 2623 SWIGINTERN $Dbc_d ( Dbc * lf , u_t32_t ags ){ 2624 lf -> `d (lf, ags ); 2625 } } 2626 SWIGINTERN DBC * $Dbc_dup ( Dbc * lf , u_t32_t ags ){ 2627 DBC * wcurs = NULL ; 2628 o = lf -> `dup (lf, & wcurs , ags ); 2629 wcurs ; 2630 } } 2631 SWIGINTERN $Dbc_g ( Dbc * lf , DBT * key ,DBT * da , u_t32_t ags ){ 2632 lf -> `g (lf, key , da , ags ); 2633 } } 2634 SWIGINTERN DB_CACHE_PRIORITY $Dbc_g_iܙy ( Dbc * lf ){ 2635 DB_CACHE_PRIORITY t ; 2636 o = lf -> `g_iܙy (lf, & t ); 2637 t ; 2638 } } 2639 SWIGINTERN $Dbc_pg ( Dbc * lf , DBT * key ,DBT * pkey ,DBT * da , u_t32_t ags ){ 2640 lf -> `pg (lf, key , pkey , da , ags ); 2641 } } 2642 SWIGINTERN $Dbc_put ( Dbc * lf , DBT * key ,DBT * da , u_t32_t ags ){ 2643 lf -> `put (lf, key , da , ags ); 2644 } } 2645 SWIGINTERN db_t_t $Dbc_t_iܙy ( Dbc * lf , DB_CACHE_PRIORITY iܙy ){ 2646 lf -> `t_iܙy (lf, iܙy ); 2647 } } 2648 SWIGINTERN DbEnv * $w_DbEnv ( u_t32_t ags ){ 2649 DB_ENV * lf = NULL ; 2650 o = `db_v_ (& lf , ags ); 2651 i( o == 0) 2652 lf -> dbt_urcy = __dbj_dbt_memcy ; 2653 lf ; 2654 } } 2655 SWIGINTERN db_t_t $DbEnv_o ( DbEnv * lf , u_t32_t ags ){ 2656 lf -> `o (lf, ags ); 2657 } } 2658 SWIGINTERN db_t_t $DbEnv_dbmove ( DbEnv * lf , DB_TXN * txnid ,cڡ * fe ,cڡ * daba , u_t32_t ags ){ 2659 lf -> `dbmove (lf, txnid , fe , daba , ags ); 2660 } } 2661 SWIGINTERN db_t_t $DbEnv_dbme ( DbEnv * lf , DB_TXN * txnid ,cڡ * fe ,cڡ * daba ,cڡ * wme , u_t32_t ags ){ 2662 lf -> `dbme (self, 2663 txnid , fe , daba , wme , ags ); 2664 } } 2665 SWIGINTERN $DbEnv_r ( DbEnv * lf , r ,cڡ * mesge ){ 2666 lf -> `r (lf, r , mesge ); 2667 } } 2668 SWIGINTERN $DbEnv_rx ( DbEnv * lf ,cڡ * mesge ){ 2669 lf -> `rx (lf, mesge ); 2670 } } 2671 SWIGINTERN DB_TXN * $DbEnv_cdsgroup_beg ( DbEnv * lf ){ 2672 DB_TXN * tid = NULL ; 2673 o = lf -> `cdsgroup_beg (lf, & tid ); 2674 tid ; 2675 } } 2676 SWIGINTERN db_t_t $DbEnv_feid_t ( DbEnv * lf ,cڡ * fe , u_t32_t ags ){ 2677 lf -> `feid_t (lf, fe , ags ); 2678 } } 2679 SWIGINTERN cڡ ** $DbEnv_g_da_ds ( DbEnv * lf ){ 2680 cڡ ** t ; 2681 o = lf -> `g_da_ds (lf, & t ); 2682 t ; 2683 } } 2684 SWIGINTERN u_t32_t $DbEnv_g_y_ags ( DbEnv * lf ){ 2685 u_t32_t t = 0; 2686 `CRYPTO_ONLY ( o = lf -> `g_y_ags (lf, & t )) 2687 t ; 2688 } } 2689 SWIGINTERN u_t32_t $DbEnv_g_ags ( DbEnv * lf ){ 2690 u_t32_t t ; 2691 o = lf -> `g_ags (lf, & t ); 2692 t ; 2693 } } 2694 SWIGINTERN cڡ * $DbEnv_g_home ( DbEnv * lf ){ 2695 cڡ * t ; 2696 o = lf -> `g_home (lf, & t ); 2697 t ; 2698 } } 2699 SWIGINTERN u_t32_t $DbEnv_g_ݒ_ags ( DbEnv * lf ){ 2700 u_t32_t t ; 2701 o = lf -> `g_ݒ_ags (lf, & t ); 2702 t ; 2703 } } 2704 SWIGINTERN $DbEnv_g_shm_key ( DbEnv * lf ){ 2705 t ; 2706 o = lf -> `g_shm_key (lf, & t ); 2707 t ; 2708 } } 2709 SWIGINTERN cڡ * $DbEnv_g_tmp_d ( DbEnv * lf ){ 2710 cڡ * t ; 2711 o = lf -> `g_tmp_d (lf, & t ); 2712 t ; 2713 } } 2714 SWIGINTERN t_bo $DbEnv_g_vbo ( DbEnv * lf , u_t32_t which ){ 2715 t ; 2716 o = lf -> `g_vbo (lf, which , & t ); 2717 t ; 2718 } } 2719 SWIGINTERN t_bo $DbEnv_is_bigdn ( DbEnv * lf ){ 2720 lf -> `is_bigdn (); 2721 } } 2722 SWIGINTERN db_t_t $DbEnv_l_t ( DbEnv * lf ,cڡ * fe , u_t32_t ags ){ 2723 lf -> `l_t (lf, fe , ags ); 2724 } } 2725 SWIGINTERN db_t_t $DbEnv_ݒ ( DbEnv * lf ,cڡ * db_home , u_t32_t ags , mode ){ 2726 lf -> `ݒ (lf, db_home , ags , mode ); 2727 } } 2728 SWIGINTERN db_t_t $DbEnv_move ( DbEnv * lf ,cڡ * db_home , u_t32_t ags ){ 2729 lf -> `move (lf, db_home , ags ); 2730 } } 2731 SWIGINTERN db_t_t $DbEnv_t_chesize ( DbEnv * lf , jlg bys , nche ){ 2732 lf -> `t_chesize (self, 2733 ( u_t32_t )( bys / GIGABYTE ), 2734 ( u_t32_t )( bys % GIGABYTE ), nche ); 2735 } } 2736 SWIGINTERN db_t_t $DbEnv_t_che_max ( DbEnv * lf , jlg bys ){ 2737 lf -> `t_che_max (self, 2738 ( u_t32_t )( bys / GIGABYTE ), 2739 ( u_t32_t )( bys % GIGABYTE )); 2740 } } 2741 SWIGINTERN db_t_t $DbEnv_t_da_d ( DbEnv * lf ,cڡ * d ){ 2742 lf -> `t_da_d (lf, d ); 2743 } } 2744 SWIGINTERN db_t_t $DbEnv_t_rmed_d ( DbEnv * lf , mode , u_t32_t ags ){ 2745 lf -> `t_rmed_d (lf, mode , ags ); 2746 } } 2747 SWIGINTERN db_t_t $DbEnv_t_y ( DbEnv * lf ,cڡ * sswd , u_t32_t ags ){ 2748 lf -> `t_y (lf, sswd , ags ); 2749 } } 2750 SWIGINTERN DbEnv_t_r ( DbEnv * lf ,(* db_r_f )( DB_ENV const *,const *,const *)){ 2751 lf -> `t_r (lf, db_r_f ); 2752 } } 2753 SWIGINTERN db_t_t $DbEnv_t_ags ( DbEnv * lf , u_t32_t ags , t_bo off ){ 2754 lf -> `t_ags (lf, ags , off ); 2755 } } 2756 SWIGINTERN db_t_t DbEnv_t_edback ( DbEnv * lf ,(* v_edback_f )( DB_ENV *,,)){ 2757 lf -> `t_edback (lf, v_edback_f ); 2758 } } 2759 SWIGINTERN db_t_t $DbEnv_t_mp_max_ݒfd ( DbEnv * lf , maxݒfd ){ 2760 lf -> `t_mp_max_ݒfd (lf, maxݒfd ); 2761 } } 2762 SWIGINTERN db_t_t $DbEnv_t_mp_max_wre ( DbEnv * lf , maxwre , db_timeout_t maxwre_p ){ 2763 lf -> `t_mp_max_wre (lf, maxwre , maxwre_p ); 2764 } } 2765 SWIGINTERN db_t_t $DbEnv_t_mp_mmsize ( DbEnv * lf , size_t mp_mmsize ){ 2766 lf -> `t_mp_mmsize (lf, mp_mmsize ); 2767 } } 2768 SWIGINTERN DbEnv_t_msg ( DbEnv * lf ,(* db_msg_f )( DB_ENV const *,const *)){ 2769 lf -> `t_msg (lf, db_msg_f ); 2770 } } 2771 SWIGINTERN db_t_t DbEnv_t_nic ( DbEnv * lf ,(* db_nic_f )( DB_ENV *,)){ 2772 lf -> `t_nic (lf, db_nic_f ); 2773 } } 2774 SWIGINTERN db_t_t $DbEnv_t_c_rv ( DbEnv * lf ,* ho , _timeout , sv_timeout , u_t32_t ags ){ 2775 lf -> `t_c_rv (lf, NULL , ho , 2776 _timeout , sv_timeout , ags ); 2777 } } 2778 SWIGINTERN db_t_t $DbEnv_t_shm_key ( DbEnv * lf , shm_key ){ 2779 lf -> `t_shm_key (lf, shm_key ); 2780 } } 2781 SWIGINTERN db_t_t $DbEnv_t_timeout ( DbEnv * lf , db_timeout_t timeout , u_t32_t ags ){ 2782 lf -> `t_timeout (lf, timeout , ags ); 2783 } } 2784 SWIGINTERN db_t_t $DbEnv_t_tmp_d ( DbEnv * lf ,cڡ * d ){ 2785 lf -> `t_tmp_d (lf, d ); 2786 } } 2787 SWIGINTERN db_t_t $DbEnv_t_tx_max ( DbEnv * lf , u_t32_t max ){ 2788 lf -> `t_tx_max (lf, max ); 2789 } } 2790 SWIGINTERN db_t_t DbEnv_t_p_dich ( DbEnv * lf ,(* tx_cov )( DB_ENV *, DBT *, DB_LSN *, db_cs )){ 2791 lf -> `t_p_dich (lf, tx_cov ); 2792 } } 2793 SWIGINTERN db_t_t DbEnv_t_evt_nify ( DbEnv * lf ,(* evt_nify )( DB_ENV *, u_t32_t ,*)){ 2794 lf -> `t_evt_nify (lf, evt_nify ); 2795 } } 2796 SWIGINTERN db_t_t $DbEnv_t_tx_timeamp ( DbEnv * lf , time_t * timeamp ){ 2797 lf -> `t_tx_timeamp (lf, timeamp ); 2798 } } 2799 SWIGINTERN db_t_t $DbEnv_t_vbo ( DbEnv * lf , u_t32_t which , t_bo off ){ 2800 lf -> `t_vbo (lf, which , off ); 2801 } } 2802 SWIGINTERN __db_lk_cis $DbEnv_g_lk_cis ( DbEnv * lf ){ 2803 __db_lk_cis t ; 2804 o = lf -> `g_lk_cis (self, 2805 (cڡ u_t8_t **)& t . lk_cis , &t. lk_modes ); 2806 t ; 2807 } } 2808 SWIGINTERN u_t32_t $DbEnv_g_lk_de ( DbEnv * lf ){ 2809 u_t32_t t ; 2810 o = lf -> `g_lk_de (lf, & t ); 2811 t ; 2812 } } 2813 SWIGINTERN u_t32_t $DbEnv_g_lk_max_locks ( DbEnv * lf ){ 2814 u_t32_t t ; 2815 o = lf -> `g_lk_max_locks (lf, & t ); 2816 t ; 2817 } } 2818 SWIGINTERN u_t32_t $DbEnv_g_lk_max_locks ( DbEnv * lf ){ 2819 u_t32_t t ; 2820 o = lf -> `g_lk_max_locks (lf, & t ); 2821 t ; 2822 } } 2823 SWIGINTERN u_t32_t $DbEnv_g_lk_max_objes ( DbEnv * lf ){ 2824 u_t32_t t ; 2825 o = lf -> `g_lk_max_objes (lf, & t ); 2826 t ; 2827 } } 2828 SWIGINTERN $DbEnv_lock_de ( DbEnv * lf , u_t32_t ags ,u_t32_ y ){ 2829 ab܋d ; 2830 o = lf -> `lock_de (lf, ags , y , & ab܋d ); 2831 ab܋d ; 2832 } } 2833 SWIGINTERN DB_LOCK * $DbEnv_lock_g ( DbEnv * lf , u_t32_t lock ,u_t32_ ags , DBT cڡ * obje , db_lockmode_t lock_mode ){ 2834 DB_LOCK * lock = NULL ; 2835 i(( o = `__os_mloc ( lf , ( DB_LOCK ), & lock )) == 0) 2836 o = lf -> `lock_g (lf, lock , ags , obje , 2837 lock_mode , lock ); 2838 lock ; 2839 } } 2840 SWIGINTERN u_t32_t $DbEnv_lock_id ( DbEnv * lf ){ 2841 u_t32_t id ; 2842 o = lf -> `lock_id (lf, & id ); 2843 id ; 2844 } } 2845 SWIGINTERN db_t_t $DbEnv_lock_id_ ( DbEnv * lf , u_t32_t id ){ 2846 lf -> `lock_id_ (lf, id ); 2847 } } 2848 SWIGINTERN db_t_t $DbEnv_lock_put ( DbEnv * lf , DB_LOCK * lock ){ 2849 lf -> `lock_put (lf, lock ); 2850 } } 2851 SWIGINTERN DB_LOCK_STAT * $DbEnv_lock_ ( DbEnv * lf , u_t32_t ags ){ 2852 DB_LOCK_STAT * p = NULL ; 2853 o = lf -> `lock_ (lf, & p , ags ); 2854 p ; 2855 } } 2856 SWIGINTERN db_t_t $DbEnv_t_lk_cis ( DbEnv * lf , __db_lk_cis cis ){ 2857 lf -> `t_lk_cis (self, 2858 cis . lk_cis , cis. lk_modes ); 2859 } } 2860 SWIGINTERN db_t_t $DbEnv_t_lk_de ( DbEnv * lf , u_t32_t de ){ 2861 lf -> `t_lk_de (lf, de ); 2862 } } 2863 SWIGINTERN db_t_t $DbEnv_t_lk_max_locks ( DbEnv * lf , u_t32_t max ){ 2864 lf -> `t_lk_max_locks (lf, max ); 2865 } } 2866 SWIGINTERN db_t_t $DbEnv_t_lk_max_locks ( DbEnv * lf , u_t32_t max ){ 2867 lf -> `t_lk_max_locks (lf, max ); 2868 } } 2869 SWIGINTERN db_t_t $DbEnv_t_lk_max_objes ( DbEnv * lf , u_t32_t max ){ 2870 lf -> `t_lk_max_objes (lf, max ); 2871 } } 2872 SWIGINTERN u_t32_t $DbEnv_g_lg_bsize ( DbEnv * lf ){ 2873 u_t32_t t ; 2874 o = lf -> `g_lg_bsize (lf, & t ); 2875 t ; 2876 } } 2877 SWIGINTERN cڡ * $DbEnv_g_lg_d ( DbEnv * lf ){ 2878 cڡ * t ; 2879 o = lf -> `g_lg_d (lf, & t ); 2880 t ; 2881 } } 2882 SWIGINTERN $DbEnv_g_lg_femode ( DbEnv * lf ){ 2883 t ; 2884 o = lf -> `g_lg_femode (lf, & t ); 2885 t ; 2886 } } 2887 SWIGINTERN u_t32_t $DbEnv_g_lg_max ( DbEnv * lf ){ 2888 u_t32_t t ; 2889 o = lf -> `g_lg_max (lf, & t ); 2890 t ; 2891 } } 2892 SWIGINTERN u_t32_t $DbEnv_g_lg_gimax ( DbEnv * lf ){ 2893 u_t32_t t ; 2894 o = lf -> `g_lg_gimax (lf, & t ); 2895 t ; 2896 } } 2897 SWIGINTERN ** $DbEnv_log_chive ( DbEnv * lf , u_t32_t ags ){ 2898 ** li = NULL ; 2899 o = lf -> `log_chive (lf, & li , ags ); 2900 li ; 2901 } } 2902 SWIGINTERN $DbEnv_log_com ( DB_LSN cڡ * l0 ,DB_LSN cڡ * l1 ){ 2903 `log_com ( l0 , l1 ); 2904 } } 2905 SWIGINTERN DB_LOGC * $DbEnv_log_curs ( DbEnv * lf , u_t32_t ags ){ 2906 DB_LOGC * curs = NULL ; 2907 o = lf -> `log_curs (lf, & curs , ags ); 2908 curs ; 2909 } } 2910 SWIGINTERN * $DbEnv_log_fe ( DbEnv * lf , DB_LSN * l ){ 2911 mebuf [ DB_MAXPATHLEN ]; 2912 o = lf -> `log_fe (lf, l , mebuf , amebuf); 2913 ( o =0? `rdup ( mebuf : NULL ; 2914 } } 2915 SWIGINTERN db_t_t $DbEnv_log_ush ( DbEnv * lf , DB_LSN cڡ * l__nu ){ 2916 lf -> `log_ush (lf, l__nu ); 2917 } } 2918 SWIGINTERN db_t_t $DbEnv_log_put ( DbEnv * lf , DB_LSN * l , DBT cڡ * da , u_t32_t ags ){ 2919 lf -> `log_put (lf, l , da , ags ); 2920 } } 2921 SWIGINTERN db_t_t $DbEnv_log_t ( DbEnv * lf , DB_TXN * txn ,cڡ * msg ){ 2922 lf -> `log_tf (lf, txn , "%s", msg ); 2923 } } 2924 SWIGINTERN DB_LOG_STAT * $DbEnv_log_ ( DbEnv * lf , u_t32_t ags ){ 2925 DB_LOG_STAT * = NULL ; 2926 o = lf -> `log_ (lf, & , ags ); 2927 ; 2928 } } 2929 SWIGINTERN db_t_t $DbEnv_t_lg_bsize ( DbEnv * lf , u_t32_t lg_bsize ){ 2930 lf -> `t_lg_bsize (lf, lg_bsize ); 2931 } } 2932 SWIGINTERN db_t_t $DbEnv_t_lg_d ( DbEnv * lf ,cڡ * d ){ 2933 lf -> `t_lg_d (lf, d ); 2934 } } 2935 SWIGINTERN db_t_t $DbEnv_t_lg_femode ( DbEnv * lf , mode ){ 2936 lf -> `t_lg_femode (lf, mode ); 2937 } } 2938 SWIGINTERN db_t_t $DbEnv_t_lg_max ( DbEnv * lf , u_t32_t lg_max ){ 2939 lf -> `t_lg_max (lf, lg_max ); 2940 } } 2941 SWIGINTERN db_t_t $DbEnv_t_lg_gimax ( DbEnv * lf , u_t32_t lg_gimax ){ 2942 lf -> `t_lg_gimax (lf, lg_gimax ); 2943 } } 2944 SWIGINTERN jlg $DbEnv_g_chesize ( DbEnv * lf ){ 2945 u_t32_t gbys , bys ; 2946 o = lf -> `g_chesize (lf, & gbys , & bys , NULL ); 2947 ( jlg ) gbys * GIGABYTE + bys ; 2948 } } 2949 SWIGINTERN $DbEnv_g_chesize_nche ( DbEnv * lf ){ 2950 t ; 2951 o = lf -> `g_chesize (lf, NULL , NULL, & t ); 2952 t ; 2953 } } 2954 SWIGINTERN jlg $DbEnv_g_che_max ( DbEnv * lf ){ 2955 u_t32_t gbys , bys ; 2956 o = lf -> `g_che_max (lf, & gbys , & bys ); 2957 ( jlg ) gbys * GIGABYTE + bys ; 2958 } } 2959 SWIGINTERN $DbEnv_g_mp_max_ݒfd ( DbEnv * lf ){ 2960 t ; 2961 o = lf -> `g_mp_max_ݒfd (lf, & t ); 2962 t ; 2963 } } 2964 SWIGINTERN $DbEnv_g_mp_max_wre ( DbEnv * lf ){ 2965 maxwre ; 2966 db_timeout_t p ; 2967 o = lf -> `g_mp_max_wre (lf, & maxwre , & p ); 2968 maxwre ; 2969 } } 2970 SWIGINTERN db_timeout_t $DbEnv_g_mp_max_wre_p ( DbEnv * lf ){ 2971 maxwre ; 2972 db_timeout_t p ; 2973 o = lf -> `g_mp_max_wre (lf, & maxwre , & p ); 2974 p ; 2975 } } 2976 SWIGINTERN size_t $DbEnv_g_mp_mmsize ( DbEnv * lf ){ 2977 size_t t ; 2978 o = lf -> `g_mp_mmsize (lf, & t ); 2979 t ; 2980 } } 2981 SWIGINTERN DB_MPOOL_STAT * $DbEnv_memp_ ( DbEnv * lf , u_t32_t ags ){ 2982 DB_MPOOL_STAT * mp_ = NULL ; 2983 o = lf -> `memp_ (lf, & mp_ , NULL , ags ); 2984 mp_ ; 2985 } } 2986 SWIGINTERN DB_MPOOL_FSTAT ** $DbEnv_memp_f ( DbEnv * lf , u_t32_t ags ){ 2987 DB_MPOOL_FSTAT ** mp_f = NULL ; 2988 o = lf -> `memp_ (lf, NULL , & mp_f , ags ); 2989 mp_f ; 2990 } } 2991 SWIGINTERN $DbEnv_memp_ick ( DbEnv * lf , r ){ 2992 t ; 2993 o = lf -> `memp_ick (lf, r , & t ); 2994 t ; 2995 } } 2996 SWIGINTERN u_t32_t $DbEnv_mux_g_ign ( DbEnv * lf ){ 2997 u_t32_t t ; 2998 o = lf -> `mux_g_ign (lf, & t ); 2999 t ; 3000 } } 3001 SWIGINTERN u_t32_t $DbEnv_mux_g_emt ( DbEnv * lf ){ 3002 u_t32_t t ; 3003 o = lf -> `mux_g_emt (lf, & t ); 3004 t ; 3005 } } 3006 SWIGINTERN u_t32_t $DbEnv_mux_g_max ( DbEnv * lf ){ 3007 u_t32_t t ; 3008 o = lf -> `mux_g_max (lf, & t ); 3009 t ; 3010 } } 3011 SWIGINTERN u_t32_t $DbEnv_mux_g_s_s ( DbEnv * lf ){ 3012 u_t32_t t ; 3013 o = lf -> `mux_g_s_s (lf, & t ); 3014 t ; 3015 } } 3016 SWIGINTERN db_t_t $DbEnv_mux_t_ign ( DbEnv * lf , u_t32_t ign ){ 3017 lf -> `mux_t_ign (lf, ign ); 3018 } } 3019 SWIGINTERN db_t_t $DbEnv_mux_t_emt ( DbEnv * lf , u_t32_t emt ){ 3020 lf -> `mux_t_emt (lf, emt ); 3021 } } 3022 SWIGINTERN db_t_t $DbEnv_mux_t_max ( DbEnv * lf , u_t32_t mux_max ){ 3023 lf -> `mux_t_emt (lf, mux_max ); 3024 } } 3025 SWIGINTERN db_t_t $DbEnv_mux_t_s_s ( DbEnv * lf , u_t32_t s_s ){ 3026 lf -> `mux_t_s_s (lf, s_s ); 3027 } } 3028 SWIGINTERN DB_MUTEX_STAT * $DbEnv_mux_ ( DbEnv * lf , u_t32_t ags ){ 3029 DB_MUTEX_STAT * p = NULL ; 3030 o = lf -> `mux_ (lf, & p , ags ); 3031 p ; 3032 } } 3033 SWIGINTERN u_t32_t $DbEnv_g_tx_max ( DbEnv * lf ){ 3034 u_t32_t t ; 3035 o = lf -> `g_tx_max (lf, & t ); 3036 t ; 3037 } } 3038 SWIGINTERN time_t $DbEnv_g_tx_timeamp ( DbEnv * lf ){ 3039 time_t t ; 3040 o = lf -> `g_tx_timeamp (lf, & t ); 3041 t ; 3042 } } 3043 SWIGINTERN db_timeout_t $DbEnv_g_timeout ( DbEnv * lf , u_t32_t ag ){ 3044 db_timeout_t t ; 3045 o = lf -> `g_timeout (lf, & t , ag ); 3046 t ; 3047 } } 3048 SWIGINTERN DB_TXN * $DbEnv_txn_beg ( DbEnv * lf , DB_TXN * , u_t32_t ags ){ 3049 DB_TXN * tid = NULL ; 3050 o = lf -> `txn_beg (lf, , & tid , ags ); 3051 tid ; 3052 } } 3053 SWIGINTERN db_t_t $DbEnv_txn_checkpot ( DbEnv * lf , u_t32_t kby ,u_t32_ m ,u_t32_ ags ){ 3054 lf -> `txn_checkpot (lf, kby , m , ags ); 3055 } } 3056 SWIGINTERN DB_PREPLIST * $DbEnv_txn_cov ( DbEnv * lf , cou , u_t32_t ags ){ 3057 DB_PREPLIST * li ; 3058 tcou ; 3061 i(( o = `__os_mloc ( lf , 3062 ( cou + 1* ( DB_PREPLIST ), & li )) != 0) 3063 NULL ; 3065 i(( o = lf -> `txn_cov (lf, li , cou , 3066 & tcou , ags )) != 0) { 3067 `__os_ ( lf , li ); 3068 NULL ; 3071 li [ tcou ]. txn = NULL ; 3072 li ; 3073 } } 3074 SWIGINTERN DB_TXN_STAT * $DbEnv_txn_ ( DbEnv * lf , u_t32_t ags ){ 3075 DB_TXN_STAT * p = NULL ; 3076 o = lf -> `txn_ (lf, & p , ags ); 3077 p ; 3078 } } 3079 SWIGINTERN jlg $DbEnv_p_g_lim ( DbEnv * lf ){ 3080 u_t32_t gbys , bys ; 3081 o = lf -> `p_g_lim (lf, & gbys , & bys ); 3082 ( jlg ) gbys * GIGABYTE + bys ; 3083 } } 3084 SWIGINTERN db_t_t $DbEnv_p_e ( DbEnv * lf , nses , nves , u_t32_t ags ){ 3085 lf -> `p_e (lf, nses , nves , ags ); 3086 } } 3087 SWIGINTERN $DbEnv_p_oss_mesge ( DbEnv * lf , DBT * cڌ ,DBT * c , vid , DB_LSN * t_l ){ 3088 lf -> `p_oss_mesge (lf, cڌ , c , vid , 3089 t_l ); 3090 } } 3091 SWIGINTERN db_t_t $DbEnv_p_ush ( DbEnv * lf ){ 3092 lf -> `p_ush (self); 3093 } } 3094 SWIGINTERN db_t_t $DbEnv_p_t_cfig ( DbEnv * lf , u_t32_t which , t_bo off ){ 3095 lf -> `p_t_cfig (lf, which , off ); 3096 } } 3097 SWIGINTERN db_t_t $DbEnv_p_t_a ( DbEnv * lf , u_t32_t ock_s_ ,u_t32_ ags ){ 3098 lf -> `p_t_a (lf, ock_s_ , ags ); 3099 } } 3100 SWIGINTERN db_t_t $DbEnv_p_t ( DbEnv * lf , DBT * cda , u_t32_t ags ){ 3101 lf -> `p_t (lf, cda , ags ); 3102 } } 3103 SWIGINTERN db_t_t $DbEnv_p_sync ( DbEnv * lf , u_t32_t ags ){ 3104 lf -> `p_sync (lf, ags ); 3105 } } 3106 SWIGINTERN t_bo $DbEnv_p_g_cfig ( DbEnv * lf , u_t32_t which ){ 3107 t ; 3108 o = lf -> `p_g_cfig (lf, which , & t ); 3109 t ; 3110 } } 3111 SWIGINTERN DB_REP_STAT * $DbEnv_p_ ( DbEnv * lf , u_t32_t ags ){ 3112 DB_REP_STAT * p = NULL ; 3113 o = lf -> `p_ (lf, & p , ags ); 3114 p ; 3115 } } 3116 SWIGINTERN db_t_t $DbEnv_p_t_lim ( DbEnv * lf , jlg bys ){ 3117 lf -> `p_t_lim (self, 3118 ( u_t32_t )( bys / GIGABYTE ), 3119 ( u_t32_t )( bys % GIGABYTE )); 3120 } } 3121 SWIGINTERN db_t_t $DbEnv_t_p_que ( DbEnv * lf , u_t32_t m ,u_t32_ max ){ 3122 lf -> `t_p_que (lf, m , max ); 3123 } } 3124 SWIGINTERN db_t_t DbEnv_p_t_t ( DbEnv * lf , vid ,(* nd )( DB_ENV *, DBT cڡ *,DBT cڡ *, DB_LSN cڡ *,, u_t32_t )){ 3125 lf -> `p_t_t (lf, vid , nd ); 3126 } } 3127 SWIGINTERN $DbEnv_p_g_nses ( DbEnv * lf ){ 3128 t ; 3129 o = lf -> `p_g_nses (lf, & t ); 3130 t ; 3131 } } 3132 SWIGINTERN $DbEnv_p_g_iܙy ( DbEnv * lf ){ 3133 t ; 3134 o = lf -> `p_g_iܙy (lf, & t ); 3135 t ; 3136 } } 3137 SWIGINTERN u_t32_t $DbEnv_p_g_timeout ( DbEnv * lf , which ){ 3138 u_t32_t t ; 3139 o = lf -> `p_g_timeout (lf, which , & t ); 3140 t ; 3141 } } 3142 SWIGINTERN db_t_t $DbEnv_p_t_nses ( DbEnv * lf , numb ){ 3143 lf -> `p_t_nses (lf, numb ); 3144 } } 3145 SWIGINTERN db_t_t $DbEnv_p_t_iܙy ( DbEnv * lf , iܙy ){ 3146 lf -> `p_t_iܙy (lf, iܙy ); 3147 } } 3148 SWIGINTERN db_t_t $DbEnv_p_t_timeout ( DbEnv * lf , which , db_timeout_t timeout ){ 3149 lf -> `p_t_timeout (lf, which , timeout ); 3150 } } 3151 SWIGINTERN $DbEnv_pmgr_add_me_se ( DbEnv * lf ,cڡ * ho , u_t32_t pt ,u_t32_ ags ){ 3152 eid ; 3153 o = lf -> `pmgr_add_me_se (lf, ho , pt , & eid , ags ); 3154 eid ; 3155 } } 3156 SWIGINTERN db_t_t $DbEnv_pmgr_g_ack_picy ( DbEnv * lf ){ 3157 t ; 3158 o = lf -> `pmgr_g_ack_picy (lf, & t ); 3159 t ; 3160 } } 3161 SWIGINTERN db_t_t $DbEnv_pmgr_t_ack_picy ( DbEnv * lf , picy ){ 3162 lf -> `pmgr_t_ack_picy (lf, picy ); 3163 } } 3164 SWIGINTERN db_t_t $DbEnv_pmgr_t_lol_se ( DbEnv * lf ,cڡ * ho , u_t32_t pt ,u_t32_ ags ){ 3165 lf -> `pmgr_t_lol_se (lf, ho , pt , ags ); 3166 } } 3167 SWIGINTERN __db_pmgr_ses $DbEnv_pmgr_se_li ( DbEnv * lf ){ 3168 __db_pmgr_ses ses ; 3169 o = lf -> `pmgr_se_li (self, 3170 & ses . nses , &sites.sites); 3171 ses ; 3172 } } 3173 SWIGINTERN db_t_t $DbEnv_pmgr_t ( DbEnv * lf , hads , u_t32_t ags ){ 3174 lf -> `pmgr_t (lf, hads , ags ); 3175 } } 3176 SWIGINTERN DB_REPMGR_STAT * $DbEnv_pmgr_ ( DbEnv * lf , u_t32_t ags ){ 3177 DB_REPMGR_STAT * p = NULL ; 3178 o = lf -> `pmgr_ (lf, & p , ags ); 3179 p ; 3180 } } 3181 SWIGINTERN cڡ * $DbEnv_ ( r ){ 3182 `db_ ( r ); 3183 } } 3184 SWIGINTERN $DbEnv_g_vsi_maj (){ 3185 DB_VERSION_MAJOR ; 3186 } } 3187 SWIGINTERN $DbEnv_g_vsi_m (){ 3188 DB_VERSION_MINOR ; 3189 } } 3190 SWIGINTERN $DbEnv_g_vsi_tch (){ 3191 DB_VERSION_PATCH ; 3192 } } 3193 SWIGINTERN cڡ * $DbEnv_g_vsi_rg (){ 3194 DB_VERSION_STRING ; 3195 } } 3196 SWIGINTERN $de_DbLock ( DbLock * lf ){ 3197 `__os_ ( NULL , lf ); 3198 } } 3199 SWIGINTERN db_t_t $DbLogc_o ( DbLogc * lf , u_t32_t ags ){ 3200 lf -> `o (lf, ags ); 3201 } } 3202 SWIGINTERN $DbLogc_g ( DbLogc * lf , DB_LSN * l , DBT * da , u_t32_t ags ){ 3203 lf -> `g (lf, l , da , ags ); 3204 } } 3205 SWIGINTERN u_t32_t $DbLogc_vsi ( DbLogc * lf , u_t32_t ags ){ 3206 u_t32_t su ; 3207 o = lf -> `vsi (lf, & su , ags ); 3208 su ; 3209 } } 3210 SWIGINTERN DB_CACHE_PRIORITY $DbMpoFe_g_iܙy ( DbMpoFe * lf ){ 3211 DB_CACHE_PRIORITY t ; 3212 o = lf -> `g_iܙy (lf, & t ); 3213 t ; 3214 } } 3215 SWIGINTERN db_t_t $DbMpoFe_t_iܙy ( DbMpoFe * lf , DB_CACHE_PRIORITY iܙy ){ 3216 lf -> `t_iܙy (lf, iܙy ); 3217 } } 3218 SWIGINTERN u_t32_t $DbMpoFe_g_ags ( DbMpoFe * lf ){ 3219 u_t32_t t ; 3220 o = lf -> `g_ags (lf, & t ); 3221 t ; 3222 } } 3223 SWIGINTERN db_t_t $DbMpoFe_t_ags ( DbMpoFe * lf , u_t32_t ags , t_bo off ){ 3224 lf -> `t_ags (lf, ags , off ); 3225 } } 3226 SWIGINTERN jlg $DbMpoFe_g_maxsize ( DbMpoFe * lf ){ 3227 u_t32_t gbys , bys ; 3228 o = lf -> `g_maxsize (lf, & gbys , & bys ); 3229 ( jlg ) gbys * GIGABYTE + bys ; 3230 } } 3231 SWIGINTERN db_t_t $DbMpoFe_t_maxsize ( DbMpoFe * lf , jlg bys ){ 3232 lf -> `t_maxsize (self, 3233 ( u_t32_t )( bys / GIGABYTE ), 3234 ( u_t32_t )( bys % GIGABYTE )); 3235 } } 3236 SWIGINTERN DbSequ * $w_DbSequ ( DB * db , u_t32_t ags ){ 3237 DB_SEQUENCE * lf = NULL ; 3238 o = `db_qu_ (& lf , db , ags ); 3239 lf ; 3240 } } 3241 SWIGINTERN db_t_t $DbSequ_o ( DbSequ * lf , u_t32_t ags ){ 3242 lf -> `o (lf, ags ); 3243 } } 3244 SWIGINTERN db_q_t $DbSequ_g ( DbSequ * lf , DB_TXN * txnid , t32_t d , u_t32_t ags ){ 3245 db_q_t t = 0; 3246 o = lf -> `g (lf, txnid , d , & t , ags ); 3247 t ; 3248 } } 3249 SWIGINTERN t32_t $DbSequ_g_chesize ( DbSequ * lf ){ 3250 t32_t t = 0; 3251 o = lf -> `g_chesize (lf, & t ); 3252 t ; 3253 } } 3254 SWIGINTERN DB * $DbSequ_g_db ( DbSequ * lf ){ 3255 DB * t = NULL ; 3256 o = lf -> `g_db (lf, & t ); 3257 t ; 3258 } } 3259 SWIGINTERN u_t32_t $DbSequ_g_ags ( DbSequ * lf ){ 3260 u_t32_t t = 0; 3261 o = lf -> `g_ags (lf, & t ); 3262 t ; 3263 } } 3264 SWIGINTERN db_t_t $DbSequ_g_key ( DbSequ * lf , DBT * key ){ 3265 lf -> `g_key (lf, key ); 3266 } } 3267 SWIGINTERN db_q_t $DbSequ_g_nge_m ( DbSequ * lf ){ 3268 db_q_t t = 0; 3269 o = lf -> `g_nge (lf, & t , NULL ); 3270 t ; 3271 } } 3272 SWIGINTERN db_q_t $DbSequ_g_nge_max ( DbSequ * lf ){ 3273 db_q_t t = 0; 3274 o = lf -> `g_nge (lf, NULL , & t ); 3275 t ; 3276 } } 3277 SWIGINTERN db_t_t $DbSequ_l_vue ( DbSequ * lf , db_q_t v ){ 3278 lf -> `l_vue (lf, v ); 3279 } } 3280 SWIGINTERN db_t_t $DbSequ_ݒ ( DbSequ * lf , DB_TXN * txnid , DBT * key , u_t32_t ags ){ 3281 lf -> `ݒ (lf, txnid , key , ags ); 3282 } } 3283 SWIGINTERN db_t_t $DbSequ_move ( DbSequ * lf , DB_TXN * txnid , u_t32_t ags ){ 3284 lf -> `move (lf, txnid , ags ); 3285 } } 3286 SWIGINTERN db_t_t $DbSequ_t_chesize ( DbSequ * lf , t32_t size ){ 3287 lf -> `t_chesize (lf, size ); 3288 } } 3289 SWIGINTERN db_t_t $DbSequ_t_ags ( DbSequ * lf , u_t32_t ags ){ 3290 lf -> `t_ags (lf, ags ); 3291 } } 3292 SWIGINTERN db_t_t $DbSequ_t_nge ( DbSequ * lf , db_q_t m ,db_q_ max ){ 3293 lf -> `t_nge (lf, m , max ); 3294 } } 3295 SWIGINTERN DB_SEQUENCE_STAT * $DbSequ_ ( DbSequ * lf , u_t32_t ags ){ 3296 DB_SEQUENCE_STAT * t = NULL ; 3297 o = lf -> ` (lf, & t , ags ); 3298 t ; 3299 } } 3300 SWIGINTERN db_t_t $DbTxn_abt ( DbTxn * lf ){ 3301 lf -> `abt (self); 3302 } } 3303 SWIGINTERN db_t_t $DbTxn_comm ( DbTxn * lf , u_t32_t ags ){ 3304 lf -> `comm (lf, ags ); 3305 } } 3306 SWIGINTERN db_t_t $DbTxn_disrd ( DbTxn * lf , u_t32_t ags ){ 3307 lf -> `disrd (lf, ags ); 3308 } } 3309 SWIGINTERN cڡ * $DbTxn_g_me ( DbTxn * lf ){ 3310 cڡ * me = NULL ; 3311 o = lf -> `g_me (lf, & me ); 3312 me ; 3313 } } 3314 SWIGINTERN u_t32_t $DbTxn_id ( DbTxn * lf ){ 3315 lf -> `id (self); 3316 } } 3317 SWIGINTERN db_t_t $DbTxn_e ( DbTxn * lf , u_t8_t * gid ){ 3318 lf -> `e (lf, gid ); 3319 } } 3320 SWIGINTERN db_t_t $DbTxn_t_timeout ( DbTxn * lf , db_timeout_t timeout , u_t32_t ags ){ 3321 lf -> `t_timeout (lf, timeout , ags ); 3322 } } 3323 SWIGINTERN db_t_t $DbTxn_t_me ( DbTxn * lf ,cڡ * me ){ 3324 lf -> `t_me (lf, me ); 3325 } } 3327 #ifde __lulus 3331 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_w_1Db ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 3332 jlg jsu = 0 ; 3333 DB_ENV * g1 = (DB_ENV *) 0 ; 3334 u_t32_t g2 ; 3335 Db * su = 0 ; 3337 () jv ; 3338 () js ; 3339 g1 = *( DB_ENV **)& jg1 ; 3340 g2 = ( u_t32_t ) jg2 ; 3342 o = 0; 3343 su = ( Db *) w_Db ( g1 , g2 ); 3344 i(! DB_RETOK_STD ( o )) { 3345 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 3348 *( Db **)& jsu = su ; 3349 jsu ; 3353 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1assoc ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jlg jg3 , jboޗn jg4 , jt jg5 ) { 3354 Db * g1 = (Db *) 0 ; 3355 DB_TXN * g2 = (DB_TXN *) 0 ; 3356 DB * g3 = (DB *) 0 ; 3357 (* g4 )( DB *, DBT const *,DBT const *,DBT *) = ((*)(DB *,DBT const *,DBT const *,DBT *)) 0 ; 3358 u_t32_t g5 ; 3359 db_t_t su ; 3361 () jv ; 3362 () js ; 3363 g1 = *( Db **)& jg1 ; 3364 g2 = *( DB_TXN **)& jg2 ; 3365 g3 = *( DB **)& jg3 ; 3367 g4 = ( jg4 = JNI_TRUE ? __dbj_ckey_ : NULL ; 3369 g5 = ( u_t32_t ) jg5 ; 3371 i( jg1 == 0) { 3372 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3376 su = ( db_t_t ) Db_assoc ( g1 , g2 , g3 , g4 , g5 ); 3377 i(! DB_RETOK_STD ( su )) { 3378 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3384 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1com ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , jobje jg4 , jobje jg5 , jt jg6 , jobje jg7 ) { 3385 Db * g1 = (Db *) 0 ; 3386 DB_TXN * g2 = (DB_TXN *) 0 ; 3387 DBT * g3 = (DBT *) 0 ; 3388 DBT * g4 = (DBT *) 0 ; 3389 DB_COMPACT * g5 = (DB_COMPACT *) 0 ; 3390 u_t32_t g6 ; 3391 DBT * g7 = (DBT *) 0 ; 3392 db_t_t su ; 3393 DBT_LOCKED ldbt3 ; 3394 DBT_LOCKED ldbt4 ; 3395 DB_COMPACT com5 ; 3396 DBT_LOCKED ldbt7 ; 3398 () jv ; 3399 () js ; 3400 g1 = *( Db **)& jg1 ; 3401 g2 = *( DB_TXN **)& jg2 ; 3403 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 1) != 0) { 3407 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 1) != 0) { 3411 memt (& com5 , 0, ( DB_COMPACT )); 3412 g5 = & com5 ; 3413 g5 -> com_f͔ = (* jv )-> GIFld (jv, jg5 , 3414 com_com_f͔_fid ); 3415 g5 -> com_timeout = (* jv )-> GIFld (jv, jg5 , 3416 com_com_timeout_fid ); 3417 g5 -> com_ges = (* jv )-> GIFld (jv, jg5 , 3418 com_com_ges_fid ); 3420 g6 = ( u_t32_t ) jg6 ; 3422 i( __dbj_dbt_cy ( jv , & ldbt7 , & g7 , jg7 , 1) != 0) { 3426 i( jg1 == 0) { 3427 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3431 su = ( db_t_t ) Db_com ( g1 , g2 , g3 , g4 , g5 , g6 , g7 ); 3432 i(! DB_RETOK_STD ( su )) { 3433 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3436 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3437 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 3438 __dbj_fl_com ( jv , jg5 , g5 ); 3439 __dbj_dbt_a ( jv , jg7 , g7 , & ldbt7 ); 3443 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1o0 ( JNIEnv * jv , jass js , jlg jg1 , j jg2 ) { 3444 jt jsu = 0 ; 3445 Db * g1 = (Db *) 0 ; 3446 u_t32_t g2 ; 3447 su ; 3449 () jv ; 3450 () js ; 3451 g1 = *( Db **)& jg1 ; 3452 g2 = ( u_t32_t ) jg2 ; 3454 i( jg1 == 0) { 3455 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3459 o = 0; 3460 su = () Db_o ( g1 , g2 ); 3461 i(! DB_RETOK_STD ( o )) { 3462 __dbj_throw ( jv , o , NULL , NULL, NULL); 3465 jsu = ( jt ) su ; 3466 jsu ; 3470 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1curs ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 3471 jlg jsu = 0 ; 3472 Db * g1 = (Db *) 0 ; 3473 DB_TXN * g2 = (DB_TXN *) 0 ; 3474 u_t32_t g3 ; 3475 DBC * su = 0 ; 3477 () jv ; 3478 () js ; 3479 g1 = *( Db **)& jg1 ; 3480 g2 = *( DB_TXN **)& jg2 ; 3481 g3 = ( u_t32_t ) jg3 ; 3483 i( jg1 == 0) { 3484 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3488 o = 0; 3489 su = ( DBC *) Db_curs ( g1 , g2 , g3 ); 3490 i(! DB_RETOK_STD ( o )) { 3491 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3494 *( DBC **)& jsu = su ; 3495 jsu ; 3499 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1d ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , j jg4 ) { 3500 jt jsu = 0 ; 3501 Db * g1 = (Db *) 0 ; 3502 DB_TXN * g2 = (DB_TXN *) 0 ; 3503 DBT * g3 = (DBT *) 0 ; 3504 u_t32_t g4 ; 3505 su ; 3506 DBT_LOCKED ldbt3 ; 3508 () jv ; 3509 () js ; 3510 g1 = *( Db **)& jg1 ; 3511 g2 = *( DB_TXN **)& jg2 ; 3513 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 3516 g4 = ( u_t32_t ) jg4 ; 3518 i( jg1 == 0) { 3519 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3523 su = () Db_d ( g1 , g2 , g3 , g4 ); 3524 i(! DB_RETOK_DBDEL ( su )) { 3525 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3528 jsu = ( jt ) su ; 3529 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3530 jsu ; 3534 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1r ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jrg jg3 ) { 3535 Db * g1 = (Db *) 0 ; 3536 g2 ; 3537 * g3 = (*) 0 ; 3539 () jv ; 3540 () js ; 3541 g1 = *( Db **)& jg1 ; 3542 g2 = () jg2 ; 3543 g3 = 0; 3544 i( jg3 ) { 3545 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 3546 i(! g3 ) ; 3549 i( jg1 == 0) { 3550 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3553 Db_r ( g1 , g2 ,(cڡ *) g3 ); 3554 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 3558 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1rx ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 3559 Db * g1 = (Db *) 0 ; 3560 * g2 = (*) 0 ; 3562 () jv ; 3563 () js ; 3564 g1 = *( Db **)& jg1 ; 3565 g2 = 0; 3566 i( jg2 ) { 3567 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 3568 i(! g2 ) ; 3571 i( jg1 == 0) { 3572 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3575 Db_rx ( g1 ,(cڡ *) g2 ); 3576 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 3580 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1exis ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , j jg4 ) { 3581 jt jsu = 0 ; 3582 Db * g1 = (Db *) 0 ; 3583 DB_TXN * g2 = (DB_TXN *) 0 ; 3584 DBT * g3 = (DBT *) 0 ; 3585 u_t32_t g4 ; 3586 su ; 3587 DBT_LOCKED ldbt3 ; 3589 () jv ; 3590 () js ; 3591 g1 = *( Db **)& jg1 ; 3592 g2 = *( DB_TXN **)& jg2 ; 3594 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 3597 g4 = ( u_t32_t ) jg4 ; 3599 i( jg1 == 0) { 3600 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3604 su = () Db_exis ( g1 , g2 , g3 , g4 ); 3605 i(! DB_RETOK_EXISTS ( su )) { 3606 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3609 jsu = ( jt ) su ; 3610 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3611 jsu ; 3615 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , jobje jg4 , j jg5 ) { 3616 jt jsu = 0 ; 3617 Db * g1 = (Db *) 0 ; 3618 DB_TXN * g2 = (DB_TXN *) 0 ; 3619 DBT * g3 = (DBT *) 0 ; 3620 DBT * g4 = (DBT *) 0 ; 3621 u_t32_t g5 ; 3622 su ; 3623 DBT_LOCKED ldbt3 ; 3624 DBT_LOCKED ldbt4 ; 3626 () jv ; 3627 () js ; 3628 g1 = *( Db **)& jg1 ; 3629 g2 = *( DB_TXN **)& jg2 ; 3631 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 3635 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 3638 g5 = ( u_t32_t ) jg5 ; 3640 i( jg1 == 0) { 3641 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3645 su = () Db_g ( g1 , g2 , g3 , g4 , g5 ); 3646 i(! DB_RETOK_DBGET ( su )) { 3647 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3650 jsu = ( jt ) su ; 3651 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3652 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 3653 jsu ; 3657 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1byswd ( JNIEnv * jv , jass js , jlg jg1 ) { 3658 jboޗn jsu = 0 ; 3659 Db * g1 = (Db *) 0 ; 3660 t_bo su ; 3662 () jv ; 3663 () js ; 3664 g1 = *( Db **)& jg1 ; 3666 i( jg1 == 0) { 3667 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3671 o = 0; 3672 su = ( t_bo ) Db_g_byswd ( g1 ); 3673 i(! DB_RETOK_STD ( o )) { 3674 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3677 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 3678 jsu ; 3682 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1chesize ( JNIEnv * jv , jass js , jlg jg1 ) { 3683 jlg jsu = 0 ; 3684 Db * g1 = (Db *) 0 ; 3685 jlg su ; 3687 () jv ; 3688 () js ; 3689 g1 = *( Db **)& jg1 ; 3691 i( jg1 == 0) { 3692 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3696 o = 0; 3697 su = Db_g_chesize ( g1 ); 3698 i(! DB_RETOK_STD ( o )) { 3699 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3702 jsu = su ; 3703 jsu ; 3707 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1chesize_1nche ( JNIEnv * jv , jass js , jlg jg1 ) { 3708 jt jsu = 0 ; 3709 Db * g1 = (Db *) 0 ; 3710 u_t32_t su ; 3712 () jv ; 3713 () js ; 3714 g1 = *( Db **)& jg1 ; 3716 i( jg1 == 0) { 3717 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3721 o = 0; 3722 su = ( u_t32_t ) Db_g_chesize_nche ( g1 ); 3723 i(! DB_RETOK_STD ( o )) { 3724 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3727 jsu = ( jt ) su ; 3728 jsu ; 3732 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1fame ( JNIEnv * jv , jass js , jlg jg1 ) { 3733 jrg jsu = 0 ; 3734 Db * g1 = (Db *) 0 ; 3735 * su = 0 ; 3737 () jv ; 3738 () js ; 3739 g1 = *( Db **)& jg1 ; 3741 i( jg1 == 0) { 3742 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3746 o = 0; 3747 su = (*) Db_g_fame ( g1 ); 3748 i(! DB_RETOK_STD ( o )) { 3749 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3752 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 3753 jsu ; 3757 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1dbme ( JNIEnv * jv , jass js , jlg jg1 ) { 3758 jrg jsu = 0 ; 3759 Db * g1 = (Db *) 0 ; 3760 * su = 0 ; 3762 () jv ; 3763 () js ; 3764 g1 = *( Db **)& jg1 ; 3766 i( jg1 == 0) { 3767 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3771 o = 0; 3772 su = (*) Db_g_dbme ( g1 ); 3773 i(! DB_RETOK_STD ( o )) { 3774 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3777 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 3778 jsu ; 3782 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1y_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 3783 jt jsu = 0 ; 3784 Db * g1 = (Db *) 0 ; 3785 u_t32_t su ; 3787 () jv ; 3788 () js ; 3789 g1 = *( Db **)& jg1 ; 3791 i( jg1 == 0) { 3792 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3796 o = 0; 3797 su = ( u_t32_t ) Db_g_y_ags ( g1 ); 3798 i(! DB_RETOK_STD ( o )) { 3799 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3802 jsu = ( jt ) su ; 3803 jsu ; 3807 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 3808 jt jsu = 0 ; 3809 Db * g1 = (Db *) 0 ; 3810 u_t32_t su ; 3812 () jv ; 3813 () js ; 3814 g1 = *( Db **)& jg1 ; 3816 i( jg1 == 0) { 3817 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3821 o = 0; 3822 su = ( u_t32_t ) Db_g_ags ( g1 ); 3823 i(! DB_RETOK_STD ( o )) { 3824 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3827 jsu = ( jt ) su ; 3828 jsu ; 3832 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ld ( JNIEnv * jv , jass js , jlg jg1 ) { 3833 jt jsu = 0 ; 3834 Db * g1 = (Db *) 0 ; 3835 su ; 3837 () jv ; 3838 () js ; 3839 g1 = *( Db **)& jg1 ; 3841 i( jg1 == 0) { 3842 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3846 o = 0; 3847 su = () Db_g_ld ( g1 ); 3848 i(! DB_RETOK_STD ( o )) { 3849 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3852 jsu = ( jt ) su ; 3853 jsu ; 3857 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1mpf ( JNIEnv * jv , jass js , jlg jg1 ) { 3858 jlg jsu = 0 ; 3859 Db * g1 = (Db *) 0 ; 3860 DB_MPOOLFILE * su = 0 ; 3862 () jv ; 3863 () js ; 3864 g1 = *( Db **)& jg1 ; 3866 i( jg1 == 0) { 3867 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3871 o = 0; 3872 su = ( DB_MPOOLFILE *) Db_g_mpf ( g1 ); 3873 i(! DB_RETOK_STD ( o )) { 3874 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3877 *( DB_MPOOLFILE **)& jsu = su ; 3878 jsu ; 3882 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ݒ_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 3883 jt jsu = 0 ; 3884 Db * g1 = (Db *) 0 ; 3885 u_t32_t su ; 3887 () jv ; 3888 () js ; 3889 g1 = *( Db **)& jg1 ; 3891 i( jg1 == 0) { 3892 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3896 o = 0; 3897 su = ( u_t32_t ) Db_g_ݒ_ags ( g1 ); 3898 i(! DB_RETOK_STD ( o )) { 3899 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3902 jsu = ( jt ) su ; 3903 jsu ; 3907 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1gesize ( JNIEnv * jv , jass js , jlg jg1 ) { 3908 jt jsu = 0 ; 3909 Db * g1 = (Db *) 0 ; 3910 u_t32_t su ; 3912 () jv ; 3913 () js ; 3914 g1 = *( Db **)& jg1 ; 3916 i( jg1 == 0) { 3917 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3921 o = 0; 3922 su = ( u_t32_t ) Db_g_gesize ( g1 ); 3923 i(! DB_RETOK_STD ( o )) { 3924 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3927 jsu = ( jt ) su ; 3928 jsu ; 3932 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1bt_1mkey ( JNIEnv * jv , jass js , jlg jg1 ) { 3933 jt jsu = 0 ; 3934 Db * g1 = (Db *) 0 ; 3935 u_t32_t su ; 3937 () jv ; 3938 () js ; 3939 g1 = *( Db **)& jg1 ; 3941 i( jg1 == 0) { 3942 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3946 o = 0; 3947 su = ( u_t32_t ) Db_g_bt_mkey ( g1 ); 3948 i(! DB_RETOK_STD ( o )) { 3949 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3952 jsu = ( jt ) su ; 3953 jsu ; 3957 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1h_1f ( JNIEnv * jv , jass js , jlg jg1 ) { 3958 jt jsu = 0 ; 3959 Db * g1 = (Db *) 0 ; 3960 u_t32_t su ; 3962 () jv ; 3963 () js ; 3964 g1 = *( Db **)& jg1 ; 3966 i( jg1 == 0) { 3967 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3971 o = 0; 3972 su = ( u_t32_t ) Db_g_h_f ( g1 ); 3973 i(! DB_RETOK_STD ( o )) { 3974 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3977 jsu = ( jt ) su ; 3978 jsu ; 3982 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1h_1m ( JNIEnv * jv , jass js , jlg jg1 ) { 3983 jt jsu = 0 ; 3984 Db * g1 = (Db *) 0 ; 3985 u_t32_t su ; 3987 () jv ; 3988 () js ; 3989 g1 = *( Db **)& jg1 ; 3991 i( jg1 == 0) { 3992 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3996 o = 0; 3997 su = ( u_t32_t ) Db_g_h_m ( g1 ); 3998 i(! DB_RETOK_STD ( o )) { 3999 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4002 jsu = ( jt ) su ; 4003 jsu ; 4007 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1dim ( JNIEnv * jv , jass js , jlg jg1 ) { 4008 jt jsu = 0 ; 4009 Db * g1 = (Db *) 0 ; 4010 su ; 4012 () jv ; 4013 () js ; 4014 g1 = *( Db **)& jg1 ; 4016 i( jg1 == 0) { 4017 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4021 o = 0; 4022 su = () Db_g__dim ( g1 ); 4023 i(! DB_RETOK_STD ( o )) { 4024 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4027 jsu = ( jt ) su ; 4028 jsu ; 4032 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 ) { 4033 jt jsu = 0 ; 4034 Db * g1 = (Db *) 0 ; 4035 DB_CACHE_PRIORITY su ; 4037 () jv ; 4038 () js ; 4039 g1 = *( Db **)& jg1 ; 4041 i( jg1 == 0) { 4042 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4046 o = 0; 4047 su = ( DB_CACHE_PRIORITY ) Db_g_iܙy ( g1 ); 4048 i(! DB_RETOK_STD ( o )) { 4049 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4052 jsu = ( jt ) su ; 4053 jsu ; 4057 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1n ( JNIEnv * jv , jass js , jlg jg1 ) { 4058 jt jsu = 0 ; 4059 Db * g1 = (Db *) 0 ; 4060 u_t32_t su ; 4062 () jv ; 4063 () js ; 4064 g1 = *( Db **)& jg1 ; 4066 i( jg1 == 0) { 4067 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4071 o = 0; 4072 su = ( u_t32_t ) Db_g__n ( g1 ); 4073 i(! DB_RETOK_STD ( o )) { 4074 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4077 jsu = ( jt ) su ; 4078 jsu ; 4082 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1d ( JNIEnv * jv , jass js , jlg jg1 ) { 4083 jt jsu = 0 ; 4084 Db * g1 = (Db *) 0 ; 4085 su ; 4087 () jv ; 4088 () js ; 4089 g1 = *( Db **)& jg1 ; 4091 i( jg1 == 0) { 4092 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4096 o = 0; 4097 su = () Db_g__d ( g1 ); 4098 i(! DB_RETOK_STD ( o )) { 4099 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4102 jsu = ( jt ) su ; 4103 jsu ; 4107 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1sour ( JNIEnv * jv , jass js , jlg jg1 ) { 4108 jrg jsu = 0 ; 4109 Db * g1 = (Db *) 0 ; 4110 * su = 0 ; 4112 () jv ; 4113 () js ; 4114 g1 = *( Db **)& jg1 ; 4116 i( jg1 == 0) { 4117 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4121 o = 0; 4122 su = (*) Db_g__sour ( g1 ); 4123 i(! DB_RETOK_STD ( o )) { 4124 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4127 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 4128 jsu ; 4132 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1q_1exsize ( JNIEnv * jv , jass js , jlg jg1 ) { 4133 jt jsu = 0 ; 4134 Db * g1 = (Db *) 0 ; 4135 u_t32_t su ; 4137 () jv ; 4138 () js ; 4139 g1 = *( Db **)& jg1 ; 4141 i( jg1 == 0) { 4142 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4146 o = 0; 4147 su = ( u_t32_t ) Db_g_q_exsize ( g1 ); 4148 i(! DB_RETOK_STD ( o )) { 4149 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4152 jsu = ( jt ) su ; 4153 jsu ; 4157 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1muɝ ( JNIEnv * jv , jass js , jlg jg1 ) { 4158 jboޗn jsu = 0 ; 4159 Db * g1 = (Db *) 0 ; 4160 t_bo su ; 4162 () jv ; 4163 () js ; 4164 g1 = *( Db **)& jg1 ; 4166 i( jg1 == 0) { 4167 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4170 su = ( t_bo ) Db_g_muɝ ( g1 ); 4171 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 4172 jsu ; 4176 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1iڮ ( JNIEnv * jv , jass js , jlg jg1 ) { 4177 jboޗn jsu = 0 ; 4178 Db * g1 = (Db *) 0 ; 4179 t_bo su ; 4181 () jv ; 4182 () js ; 4183 g1 = *( Db **)& jg1 ; 4185 i( jg1 == 0) { 4186 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4189 su = ( t_bo ) Db_g_iڮ ( g1 ); 4190 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 4191 jsu ; 4195 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ty ( JNIEnv * jv , jass js , jlg jg1 ) { 4196 jt jsu = 0 ; 4197 Db * g1 = (Db *) 0 ; 4198 DBTYPE su ; 4200 () jv ; 4201 () js ; 4202 g1 = *( Db **)& jg1 ; 4204 i( jg1 == 0) { 4205 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4209 o = 0; 4210 su = ( DBTYPE ) Db_g_ty ( g1 ); 4211 i(! DB_RETOK_STD ( o )) { 4212 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4215 jsu = ( jt ) su ; 4216 jsu ; 4220 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1jo ( JNIEnv * jv , jass js , jlg jg1 , jobjeAay jg2 , jt jg3 ) { 4221 jlg jsu = 0 ; 4222 Db * g1 = (Db *) 0 ; 4223 DBC ** g2 = (DBC **) 0 ; 4224 u_t32_t g3 ; 4225 DBC * su = 0 ; 4227 () jv ; 4228 () js ; 4229 g1 = *( Db **)& jg1 ; 4231 i , cou , r ; 4233 cou = (* jv )-> GAayLgth (jv, jg2 ); 4234 i(( r = __os_mloc ( NULL , ( cou + 1* ( DBC *), & g2 )) != 0) { 4235 __dbj_throw ( jv , r , NULL , NULL, DB2JDBENV ); 4238 i = 0; i < cou ; i++) { 4239 jobje jobj = (* jv )-> GObjeAayEmt (jv, jg2 , i ); 4243 i( jobj = NULL ) { 4244 g2 [ i ] = NULL ; 4247 jlg jr = (* jv )-> GLgFld (jv, jobj , 4248 dbc__fid ); 4249 g2 [ i ] = *( DBC **)(*)& jr ; 4252 g2 [ cou ] = NULL ; 4254 g3 = ( u_t32_t ) jg3 ; 4256 i( jg1 == 0) { 4257 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4261 o = 0; 4262 su = ( DBC *) Db_jo ( g1 , g2 , g3 ); 4263 i(! DB_RETOK_STD ( o )) { 4264 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4267 *( DBC **)& jsu = su ; 4269 __os_ ( NULL , g2 ); 4271 jsu ; 4275 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1key_1nge ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , jobje jg4 , jt jg5 ) { 4276 Db * g1 = (Db *) 0 ; 4277 DB_TXN * g2 = (DB_TXN *) 0 ; 4278 DBT * g3 = (DBT *) 0 ; 4279 DB_KEY_RANGE * g4 = (DB_KEY_RANGE *) 0 ; 4280 u_t32_t g5 ; 4281 db_t_t su ; 4282 DBT_LOCKED ldbt3 ; 4283 DB_KEY_RANGE nge4 ; 4285 () jv ; 4286 () js ; 4287 g1 = *( Db **)& jg1 ; 4288 g2 = *( DB_TXN **)& jg2 ; 4290 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 4294 g4 = & nge4 ; 4296 g5 = ( u_t32_t ) jg5 ; 4298 i( jg1 == 0) { 4299 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4303 su = ( db_t_t ) Db_key_nge ( g1 , g2 , g3 , g4 , g5 ); 4304 i(! DB_RETOK_STD ( su )) { 4305 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4309 (* jv )-> SDoubFld (jv, jg4 , kr_ss_fid , g4 -> ss ); 4310 (* jv )-> SDoubFld (jv, jg4 , kr_equ_fid , g4 -> equ ); 4311 (* jv )-> SDoubFld (jv, jg4 , kr_g_fid , g4 -> g ); 4313 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 4317 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1ݒ ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jrg jg3 , jrg jg4 , jt jg5 , j jg6 , j jg7 ) { 4318 Db * g1 = (Db *) 0 ; 4319 DB_TXN * g2 = (DB_TXN *) 0 ; 4320 * g3 = (*) 0 ; 4321 * g4 = (*) 0 ; 4322 DBTYPE g5 ; 4323 u_t32_t g6 ; 4324 g7 ; 4325 db_t_t su ; 4327 () jv ; 4328 () js ; 4329 g1 = *( Db **)& jg1 ; 4330 g2 = *( DB_TXN **)& jg2 ; 4331 g3 = 0; 4332 i( jg3 ) { 4333 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 4334 i(! g3 ) ; 4336 g4 = 0; 4337 i( jg4 ) { 4338 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 4339 i(! g4 ) ; 4341 g5 = ( DBTYPE ) jg5 ; 4342 g6 = ( u_t32_t ) jg6 ; 4343 g7 = () jg7 ; 4345 i( jg1 == 0) { 4346 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4350 su = ( db_t_t ) Db_ݒ ( g1 , g2 ,(cڡ *) g3 ,(cڡ *) g4 , g5 , g6 , g7 ); 4351 i(! DB_RETOK_STD ( su )) { 4352 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4355 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 4356 i( g4 (* jv )-> RSgUTFChs (jv, jg4 ,rg4); 4360 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1pg ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , jobje jg4 , jobje jg5 , j jg6 ) { 4361 jt jsu = 0 ; 4362 Db * g1 = (Db *) 0 ; 4363 DB_TXN * g2 = (DB_TXN *) 0 ; 4364 DBT * g3 = (DBT *) 0 ; 4365 DBT * g4 = (DBT *) 0 ; 4366 DBT * g5 = (DBT *) 0 ; 4367 u_t32_t g6 ; 4368 su ; 4369 DBT_LOCKED ldbt3 ; 4370 DBT_LOCKED ldbt4 ; 4371 DBT_LOCKED ldbt5 ; 4373 () jv ; 4374 () js ; 4375 g1 = *( Db **)& jg1 ; 4376 g2 = *( DB_TXN **)& jg2 ; 4378 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 4382 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 4386 i( __dbj_dbt_cy ( jv , & ldbt5 , & g5 , jg5 , 0) != 0) { 4389 g6 = ( u_t32_t ) jg6 ; 4391 i( jg1 == 0) { 4392 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4396 su = () Db_pg ( g1 , g2 , g3 , g4 , g5 , g6 ); 4397 i(! DB_RETOK_DBGET ( su )) { 4398 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4401 jsu = ( jt ) su ; 4402 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 4403 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 4404 __dbj_dbt_a ( jv , jg5 , g5 , & ldbt5 ); 4405 jsu ; 4409 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1put ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , jobje jg4 , j jg5 ) { 4410 jt jsu = 0 ; 4411 Db * g1 = (Db *) 0 ; 4412 DB_TXN * g2 = (DB_TXN *) 0 ; 4413 DBT * g3 = (DBT *) 0 ; 4414 DBT * g4 = (DBT *) 0 ; 4415 u_t32_t g5 ; 4416 su ; 4417 DBT_LOCKED ldbt3 ; 4418 DBT_LOCKED ldbt4 ; 4420 () jv ; 4421 () js ; 4422 g1 = *( Db **)& jg1 ; 4423 g2 = *( DB_TXN **)& jg2 ; 4425 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 4429 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 4432 g5 = ( u_t32_t ) jg5 ; 4434 i( jg1 == 0) { 4435 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4439 su = () Db_put ( g1 , g2 , g3 , g4 , g5 ); 4440 i(! DB_RETOK_DBPUT ( su )) { 4441 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4444 jsu = ( jt ) su ; 4445 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 4446 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 4447 jsu ; 4451 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1move0 ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jrg jg3 , jt jg4 ) { 4452 Db * g1 = (Db *) 0 ; 4453 * g2 = (*) 0 ; 4454 * g3 = (*) 0 ; 4455 u_t32_t g4 ; 4456 db_t_t su ; 4458 () jv ; 4459 () js ; 4460 g1 = *( Db **)& jg1 ; 4461 g2 = 0; 4462 i( jg2 ) { 4463 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 4464 i(! g2 ) ; 4466 g3 = 0; 4467 i( jg3 ) { 4468 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 4469 i(! g3 ) ; 4471 g4 = ( u_t32_t ) jg4 ; 4473 i( jg1 == 0) { 4474 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4478 su = ( db_t_t ) Db_move ( g1 ,(cڡ *) g2 ,(cڡ *) g3 , g4 ); 4479 i(! DB_RETOK_STD ( su )) { 4480 __dbj_throw ( jv , su , NULL , NULL, NULL); 4483 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 4484 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 4488 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1me0 ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jrg jg3 , jrg jg4 , jt jg5 ) { 4489 Db * g1 = (Db *) 0 ; 4490 * g2 = (*) 0 ; 4491 * g3 = (*) 0 ; 4492 * g4 = (*) 0 ; 4493 u_t32_t g5 ; 4494 db_t_t su ; 4496 () jv ; 4497 () js ; 4498 g1 = *( Db **)& jg1 ; 4499 g2 = 0; 4500 i( jg2 ) { 4501 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 4502 i(! g2 ) ; 4504 g3 = 0; 4505 i( jg3 ) { 4506 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 4507 i(! g3 ) ; 4509 g4 = 0; 4510 i( jg4 ) { 4511 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 4512 i(! g4 ) ; 4514 g5 = ( u_t32_t ) jg5 ; 4516 i( jg1 == 0) { 4517 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4521 su = ( db_t_t ) Db_me ( g1 ,(cڡ *) g2 ,(cڡ *) g3 ,(cڡ *) g4 , g5 ); 4522 i(! DB_RETOK_STD ( su )) { 4523 __dbj_throw ( jv , su , NULL , NULL, NULL); 4526 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 4527 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 4528 i( g4 (* jv )-> RSgUTFChs (jv, jg4 ,rg4); 4532 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1nd_1o ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4533 Db * g1 = (Db *) 0 ; 4534 (* g2 )( DB *, DBT *, db_o_t ) = ((*)(DB *,DBT *,db_recno_t)) 0 ; 4535 db_t_t su ; 4537 () jv ; 4538 () js ; 4539 g1 = *( Db **)& jg1 ; 4541 g2 = ( jg2 = JNI_TRUE ? __dbj_nd_o : NULL ; 4544 i( jg1 == 0) { 4545 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4549 su = ( db_t_t ) Db_t_nd_o ( g1 , g2 ); 4550 i(! DB_RETOK_STD ( su )) { 4551 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4557 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1com ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4558 Db * g1 = (Db *) 0 ; 4559 (* g2 )( DB *, DBT const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ; 4560 db_t_t su ; 4562 () jv ; 4563 () js ; 4564 g1 = *( Db **)& jg1 ; 4566 g2 = ( jg2 = JNI_TRUE ? __dbj_bt_com : NULL ; 4569 i( jg1 == 0) { 4570 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4574 su = ( db_t_t ) Db_t_bt_com ( g1 , g2 ); 4575 i(! DB_RETOK_STD ( su )) { 4576 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4582 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1mkey ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4583 Db * g1 = (Db *) 0 ; 4584 u_t32_t g2 ; 4585 db_t_t su ; 4587 () jv ; 4588 () js ; 4589 g1 = *( Db **)& jg1 ; 4590 g2 = ( u_t32_t ) jg2 ; 4592 i( jg1 == 0) { 4593 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4597 su = ( db_t_t ) Db_t_bt_mkey ( g1 , g2 ); 4598 i(! DB_RETOK_STD ( su )) { 4599 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4605 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1efix ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4606 Db * g1 = (Db *) 0 ; 4607 size_t (* g2 )( DB *, DBT const *,DBT const *) = (size_t (*)(DB *,DBT const *,DBT const *)) 0 ; 4608 db_t_t su ; 4610 () jv ; 4611 () js ; 4612 g1 = *( Db **)& jg1 ; 4614 g2 = ( jg2 = JNI_TRUE ? __dbj_bt_efix : NULL ; 4617 i( jg1 == 0) { 4618 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4622 su = ( db_t_t ) Db_t_bt_efix ( g1 , g2 ); 4623 i(! DB_RETOK_STD ( su )) { 4624 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4630 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 4631 Db * g1 = (Db *) 0 ; 4632 jlg g2 ; 4633 g3 ; 4634 db_t_t su ; 4636 () jv ; 4637 () js ; 4638 g1 = *( Db **)& jg1 ; 4639 g2 = jg2 ; 4640 g3 = () jg3 ; 4642 i( jg1 == 0) { 4643 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4647 su = ( db_t_t ) Db_t_chesize ( g1 , g2 , g3 ); 4648 i(! DB_RETOK_STD ( su )) { 4649 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4655 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1dup_1com ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4656 Db * g1 = (Db *) 0 ; 4657 (* g2 )( DB *, DBT const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ; 4658 db_t_t su ; 4660 () jv ; 4661 () js ; 4662 g1 = *( Db **)& jg1 ; 4664 g2 = ( jg2 = JNI_TRUE ? __dbj_dup_com : NULL ; 4667 i( jg1 == 0) { 4668 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4672 su = ( db_t_t ) Db_t_dup_com ( g1 , g2 ); 4673 i(! DB_RETOK_STD ( su )) { 4674 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4680 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1y ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 ) { 4681 Db * g1 = (Db *) 0 ; 4682 * g2 = (*) 0 ; 4683 u_t32_t g3 ; 4684 db_t_t su ; 4686 () jv ; 4687 () js ; 4688 g1 = *( Db **)& jg1 ; 4689 g2 = 0; 4690 i( jg2 ) { 4691 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 4692 i(! g2 ) ; 4694 g3 = ( u_t32_t ) jg3 ; 4696 i( jg1 == 0) { 4697 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4701 su = ( db_t_t ) Db_t_y ( g1 ,(cڡ *) g2 , g3 ); 4702 i(! DB_RETOK_STD ( su )) { 4703 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4706 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 4710 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1edback ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4711 Db * g1 = (Db *) 0 ; 4712 (* g2 )( DB *,,) = ((*)(DB *,,)) 0 ; 4713 db_t_t su ; 4715 () jv ; 4716 () js ; 4717 g1 = *( Db **)& jg1 ; 4719 g2 = ( jg2 = JNI_TRUE ? __dbj_db_edback : NULL ; 4722 i( jg1 == 0) { 4723 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4727 su = ( db_t_t ) Db_t_edback ( g1 , g2 ); 4728 i(! DB_RETOK_STD ( su )) { 4729 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4735 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4736 Db * g1 = (Db *) 0 ; 4737 u_t32_t g2 ; 4738 db_t_t su ; 4740 () jv ; 4741 () js ; 4742 g1 = *( Db **)& jg1 ; 4743 g2 = ( u_t32_t ) jg2 ; 4745 i( jg1 == 0) { 4746 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4750 su = ( db_t_t ) Db_t_ags ( g1 , g2 ); 4751 i(! DB_RETOK_STD ( su )) { 4752 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4758 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1com ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4759 Db * g1 = (Db *) 0 ; 4760 (* g2 )( DB *, DBT const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ; 4761 db_t_t su ; 4763 () jv ; 4764 () js ; 4765 g1 = *( Db **)& jg1 ; 4767 g2 = ( jg2 = JNI_TRUE ? __dbj_h_com : NULL ; 4770 i( jg1 == 0) { 4771 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4775 su = ( db_t_t ) Db_t_h_com ( g1 , g2 ); 4776 i(! DB_RETOK_STD ( su )) { 4777 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4783 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1f ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4784 Db * g1 = (Db *) 0 ; 4785 u_t32_t g2 ; 4786 db_t_t su ; 4788 () jv ; 4789 () js ; 4790 g1 = *( Db **)& jg1 ; 4791 g2 = ( u_t32_t ) jg2 ; 4793 i( jg1 == 0) { 4794 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4798 su = ( db_t_t ) Db_t_h_f ( g1 , g2 ); 4799 i(! DB_RETOK_STD ( su )) { 4800 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4806 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1hash ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 4807 Db * g1 = (Db *) 0 ; 4808 u_t32_t (* g2 )( DB *,const *,u_int32_t) = (u_int32_t (*)(DB *,const *,u_int32_t)) 0 ; 4809 db_t_t su ; 4811 () jv ; 4812 () js ; 4813 g1 = *( Db **)& jg1 ; 4815 g2 = ( jg2 = JNI_TRUE ? __dbj_h_hash : NULL ; 4818 i( jg1 == 0) { 4819 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4823 su = ( db_t_t ) Db_t_h_hash ( g1 , g2 ); 4824 i(! DB_RETOK_STD ( su )) { 4825 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4831 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1m ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4832 Db * g1 = (Db *) 0 ; 4833 u_t32_t g2 ; 4834 db_t_t su ; 4836 () jv ; 4837 () js ; 4838 g1 = *( Db **)& jg1 ; 4839 g2 = ( u_t32_t ) jg2 ; 4841 i( jg1 == 0) { 4842 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4846 su = ( db_t_t ) Db_t_h_m ( g1 , g2 ); 4847 i(! DB_RETOK_STD ( su )) { 4848 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4854 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1ld ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4855 Db * g1 = (Db *) 0 ; 4856 g2 ; 4857 db_t_t su ; 4859 () jv ; 4860 () js ; 4861 g1 = *( Db **)& jg1 ; 4862 g2 = () jg2 ; 4864 i( jg1 == 0) { 4865 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4869 su = ( db_t_t ) Db_t_ld ( g1 , g2 ); 4870 i(! DB_RETOK_STD ( su )) { 4871 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4877 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1gesize ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 4878 Db * g1 = (Db *) 0 ; 4879 u_t32_t g2 ; 4880 db_t_t su ; 4882 () jv ; 4883 () js ; 4884 g1 = *( Db **)& jg1 ; 4885 g2 = ( u_t32_t ) jg2 ; 4887 i( jg1 == 0) { 4888 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4892 su = ( db_t_t ) Db_t_gesize ( g1 , g2 ); 4893 i(! DB_RETOK_STD ( su )) { 4894 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4900 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4901 Db * g1 = (Db *) 0 ; 4902 DB_CACHE_PRIORITY g2 ; 4903 db_t_t su ; 4905 () jv ; 4906 () js ; 4907 g1 = *( Db **)& jg1 ; 4908 g2 = ( DB_CACHE_PRIORITY ) jg2 ; 4910 i( jg1 == 0) { 4911 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4915 su = ( db_t_t ) Db_t_iܙy ( g1 , g2 ); 4916 i(! DB_RETOK_STD ( su )) { 4917 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4923 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1dim ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4924 Db * g1 = (Db *) 0 ; 4925 g2 ; 4926 db_t_t su ; 4928 () jv ; 4929 () js ; 4930 g1 = *( Db **)& jg1 ; 4931 g2 = () jg2 ; 4933 i( jg1 == 0) { 4934 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4938 su = ( db_t_t ) Db_t__dim ( g1 , g2 ); 4939 i(! DB_RETOK_STD ( su )) { 4940 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4946 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1n ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4947 Db * g1 = (Db *) 0 ; 4948 u_t32_t g2 ; 4949 db_t_t su ; 4951 () jv ; 4952 () js ; 4953 g1 = *( Db **)& jg1 ; 4954 g2 = ( u_t32_t ) jg2 ; 4956 i( jg1 == 0) { 4957 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4961 su = ( db_t_t ) Db_t__n ( g1 , g2 ); 4962 i(! DB_RETOK_STD ( su )) { 4963 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4969 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1d ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 4970 Db * g1 = (Db *) 0 ; 4971 g2 ; 4972 db_t_t su ; 4974 () jv ; 4975 () js ; 4976 g1 = *( Db **)& jg1 ; 4977 g2 = () jg2 ; 4979 i( jg1 == 0) { 4980 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4984 su = ( db_t_t ) Db_t__d ( g1 , g2 ); 4985 i(! DB_RETOK_STD ( su )) { 4986 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4992 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1sour ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 4993 Db * g1 = (Db *) 0 ; 4994 * g2 = (*) 0 ; 4995 db_t_t su ; 4997 () jv ; 4998 () js ; 4999 g1 = *( Db **)& jg1 ; 5000 g2 = 0; 5001 i( jg2 ) { 5002 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5003 i(! g2 ) ; 5006 i( jg1 == 0) { 5007 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5011 su = ( db_t_t ) Db_t__sour ( g1 , g2 ); 5012 i(! DB_RETOK_STD ( su )) { 5013 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5016 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 5020 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1q_1exsize ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 5021 Db * g1 = (Db *) 0 ; 5022 u_t32_t g2 ; 5023 db_t_t su ; 5025 () jv ; 5026 () js ; 5027 g1 = *( Db **)& jg1 ; 5028 g2 = ( u_t32_t ) jg2 ; 5030 i( jg1 == 0) { 5031 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5035 su = ( db_t_t ) Db_t_q_exsize ( g1 , g2 ); 5036 i(! DB_RETOK_STD ( su )) { 5037 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5043 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_Db_1 ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 5044 jobje jsu = 0 ; 5045 Db * g1 = (Db *) 0 ; 5046 DB_TXN * g2 = (DB_TXN *) 0 ; 5047 u_t32_t g3 ; 5048 * su = 0 ; 5050 () jv ; 5051 () js ; 5052 g1 = *( Db **)& jg1 ; 5053 g2 = *( DB_TXN **)& jg2 ; 5054 g3 = ( u_t32_t ) jg3 ; 5056 i( jg1 == 0) { 5057 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5061 o = 0; 5062 su = (*) Db_ ( g1 , g2 , g3 ); 5063 i(! DB_RETOK_STD ( o )) { 5064 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 5068 i( su = NULL ) 5069 jsu = NULL ; 5071 DB * db = (DB *) g1 ; 5072 DBTYPE dbty ; 5073 r ; 5075 i(( r = db -> g_ty (db, & dbty )) != 0) { 5076 __dbj_throw ( jv , r , NULL , NULL, DB2JDBENV ); 5080 dbty ) { 5082 DB_BTREE : 5083 DB_RECNO : 5084 jsu = (* jv )-> NewObje (jv, bt__ass , 5085 bt__cڡru ); 5086 i( jsu ! NULL ) 5087 __dbj_fl_bt_ ( jv , jsu , 5088 ( DB_BTREE_STAT *) su ); 5092 DB_HASH : 5093 jsu = (* jv )-> NewObje (jv, h__ass , 5094 h__cڡru ); 5095 i( jsu ! NULL ) 5096 __dbj_fl_h_ ( jv , jsu , 5097 ( DB_HASH_STAT *) su ); 5100 DB_QUEUE : 5101 jsu = (* jv )-> NewObje (jv, qam__ass , 5102 qam__cڡru ); 5103 i( jsu ! NULL ) 5104 __dbj_fl_qam_ ( jv , jsu , 5105 ( DB_QUEUE_STAT *) su ); 5110 __dbj_throw ( jv , EINVAL , "Db.stat only implemented for" 5111 " BTREE, HASH, QUEUEnd RECNO", NULL , DB2JDBENV ); 5115 __os_u ( db -> dbv , su ); 5118 jsu ; 5122 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1sync ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 5123 Db * g1 = (Db *) 0 ; 5124 u_t32_t g2 ; 5125 db_t_t su ; 5127 () jv ; 5128 () js ; 5129 g1 = *( Db **)& jg1 ; 5130 g2 = ( u_t32_t ) jg2 ; 5132 i( jg1 == 0) { 5133 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5137 su = ( db_t_t ) Db_sync ( g1 , g2 ); 5138 i(! DB_RETOK_STD ( su )) { 5139 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5145 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1un ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , j jg3 ) { 5146 jt jsu = 0 ; 5147 Db * g1 = (Db *) 0 ; 5148 DB_TXN * g2 = (DB_TXN *) 0 ; 5149 u_t32_t g3 ; 5150 su ; 5152 () jv ; 5153 () js ; 5154 g1 = *( Db **)& jg1 ; 5155 g2 = *( DB_TXN **)& jg2 ; 5156 g3 = ( u_t32_t ) jg3 ; 5158 i( jg1 == 0) { 5159 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5163 o = 0; 5164 su = () Db_un ( g1 , g2 , g3 ); 5165 i(! DB_RETOK_STD ( o )) { 5166 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 5169 jsu = ( jt ) su ; 5170 jsu ; 5174 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1upgde ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 ) { 5175 Db * g1 = (Db *) 0 ; 5176 * g2 = (*) 0 ; 5177 u_t32_t g3 ; 5178 db_t_t su ; 5180 () jv ; 5181 () js ; 5182 g1 = *( Db **)& jg1 ; 5183 g2 = 0; 5184 i( jg2 ) { 5185 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5186 i(! g2 ) ; 5188 g3 = ( u_t32_t ) jg3 ; 5190 i( jg1 == 0) { 5191 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5195 su = ( db_t_t ) Db_upgde ( g1 ,(cڡ *) g2 , g3 ); 5196 i(! DB_RETOK_STD ( su )) { 5197 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5200 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 5204 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1vify0 ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jrg jg3 , jobje jg4 , jt jg5 ) { 5205 jboޗn jsu = 0 ; 5206 Db * g1 = (Db *) 0 ; 5207 * g2 = (*) 0 ; 5208 * g3 = (*) 0 ; 5209 __db_out_am g4 ; 5210 u_t32_t g5 ; 5211 t_bo su ; 5212 __dbj_vify_da da4 ; 5214 () jv ; 5215 () js ; 5216 g1 = *( Db **)& jg1 ; 5217 g2 = 0; 5218 i( jg2 ) { 5219 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5220 i(! g2 ) 0; 5222 g3 = 0; 5223 i( jg3 ) { 5224 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5225 i(! g3 ) 0; 5228 da4 . jv = jenv; 5229 da4 . amobj = jg4 ; 5230 da4 . bys = NULL ; 5231 da4 . nbys = 0; 5232 (& g4 )-> hd = & da4 ; 5233 (& g4 )-> back = __dbj_vify_back ; 5235 g5 = ( u_t32_t ) jg5 ; 5237 i( jg1 == 0) { 5238 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5242 o = 0; 5243 su = ( t_bo ) Db_vify ( g1 ,(cڡ *) g2 ,(cڡ *) g3 , g4 , g5 ); 5244 i(! DB_RETOK_STD ( o )) { 5245 __dbj_throw ( jv , o , NULL , NULL, NULL); 5248 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 5249 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 5250 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 5251 jsu ; 5255 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1o0 ( JNIEnv * jv , jass js , jlg jg1 ) { 5256 Dbc * g1 = (Dbc *) 0 ; 5257 db_t_t su ; 5259 () jv ; 5260 () js ; 5261 g1 = *( Dbc **)& jg1 ; 5263 i( jg1 == 0) { 5264 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5268 su = ( db_t_t ) Dbc_o ( g1 ); 5269 i(! DB_RETOK_STD ( su )) { 5270 __dbj_throw ( jv , su , NULL , NULL, NULL); 5276 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1cou ( JNIEnv * jv , jass js , jlg jg1 , j jg2 ) { 5277 jt jsu = 0 ; 5278 Dbc * g1 = (Dbc *) 0 ; 5279 u_t32_t g2 ; 5280 db_o_t su ; 5282 () jv ; 5283 () js ; 5284 g1 = *( Dbc **)& jg1 ; 5285 g2 = ( u_t32_t ) jg2 ; 5287 i( jg1 == 0) { 5288 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5292 o = 0; 5293 su = ( db_o_t ) Dbc_cou ( g1 , g2 ); 5294 i(! DB_RETOK_STD ( o )) { 5295 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5298 jsu = ( jt ) su ; 5299 jsu ; 5303 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1d ( JNIEnv * jv , jass js , jlg jg1 , j jg2 ) { 5304 jt jsu = 0 ; 5305 Dbc * g1 = (Dbc *) 0 ; 5306 u_t32_t g2 ; 5307 su ; 5309 () jv ; 5310 () js ; 5311 g1 = *( Dbc **)& jg1 ; 5312 g2 = ( u_t32_t ) jg2 ; 5314 i( jg1 == 0) { 5315 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5319 su = () Dbc_d ( g1 , g2 ); 5320 i(! DB_RETOK_DBCDEL ( su )) { 5321 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5324 jsu = ( jt ) su ; 5325 jsu ; 5329 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1dup ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 5330 jlg jsu = 0 ; 5331 Dbc * g1 = (Dbc *) 0 ; 5332 u_t32_t g2 ; 5333 DBC * su = 0 ; 5335 () jv ; 5336 () js ; 5337 g1 = *( Dbc **)& jg1 ; 5338 g2 = ( u_t32_t ) jg2 ; 5340 i( jg1 == 0) { 5341 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5345 o = 0; 5346 su = ( DBC *) Dbc_dup ( g1 , g2 ); 5347 i(! DB_RETOK_STD ( o )) { 5348 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5351 *( DBC **)& jsu = su ; 5352 jsu ; 5356 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jobje jg3 , j jg4 ) { 5357 jt jsu = 0 ; 5358 Dbc * g1 = (Dbc *) 0 ; 5359 DBT * g2 = (DBT *) 0 ; 5360 DBT * g3 = (DBT *) 0 ; 5361 u_t32_t g4 ; 5362 su ; 5363 DBT_LOCKED ldbt2 ; 5364 DBT_LOCKED ldbt3 ; 5366 () jv ; 5367 () js ; 5368 g1 = *( Dbc **)& jg1 ; 5370 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 5374 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 5377 g4 = ( u_t32_t ) jg4 ; 5379 i( jg1 == 0) { 5380 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5384 su = () Dbc_g ( g1 , g2 , g3 , g4 ); 5385 i(! DB_RETOK_DBCGET ( su )) { 5386 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5389 jsu = ( jt ) su ; 5390 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 5391 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 5392 jsu ; 5396 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 ) { 5397 jt jsu = 0 ; 5398 Dbc * g1 = (Dbc *) 0 ; 5399 DB_CACHE_PRIORITY su ; 5401 () jv ; 5402 () js ; 5403 g1 = *( Dbc **)& jg1 ; 5405 i( jg1 == 0) { 5406 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5410 o = 0; 5411 su = ( DB_CACHE_PRIORITY ) Dbc_g_iܙy ( g1 ); 5412 i(! DB_RETOK_STD ( o )) { 5413 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5416 jsu = ( jt ) su ; 5417 jsu ; 5421 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1pg ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jobje jg3 , jobje jg4 , j jg5 ) { 5422 jt jsu = 0 ; 5423 Dbc * g1 = (Dbc *) 0 ; 5424 DBT * g2 = (DBT *) 0 ; 5425 DBT * g3 = (DBT *) 0 ; 5426 DBT * g4 = (DBT *) 0 ; 5427 u_t32_t g5 ; 5428 su ; 5429 DBT_LOCKED ldbt2 ; 5430 DBT_LOCKED ldbt3 ; 5431 DBT_LOCKED ldbt4 ; 5433 () jv ; 5434 () js ; 5435 g1 = *( Dbc **)& jg1 ; 5437 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 5441 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 5445 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 5448 g5 = ( u_t32_t ) jg5 ; 5450 i( jg1 == 0) { 5451 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5455 su = () Dbc_pg ( g1 , g2 , g3 , g4 , g5 ); 5456 i(! DB_RETOK_DBCGET ( su )) { 5457 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5460 jsu = ( jt ) su ; 5461 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 5462 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 5463 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 5464 jsu ; 5468 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1put ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jobje jg3 , j jg4 ) { 5469 jt jsu = 0 ; 5470 Dbc * g1 = (Dbc *) 0 ; 5471 DBT * g2 = (DBT *) 0 ; 5472 DBT * g3 = (DBT *) 0 ; 5473 u_t32_t g4 ; 5474 su ; 5475 DBT_LOCKED ldbt2 ; 5476 DBT_LOCKED ldbt3 ; 5478 () jv ; 5479 () js ; 5480 g1 = *( Dbc **)& jg1 ; 5482 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 5486 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 5489 g4 = ( u_t32_t ) jg4 ; 5491 i( jg1 == 0) { 5492 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5496 su = () Dbc_put ( g1 , g2 , g3 , g4 ); 5497 i(! DB_RETOK_DBCPUT ( su )) { 5498 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5501 jsu = ( jt ) su ; 5502 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 5503 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 5504 jsu ; 5508 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 5509 Dbc * g1 = (Dbc *) 0 ; 5510 DB_CACHE_PRIORITY g2 ; 5511 db_t_t su ; 5513 () jv ; 5514 () js ; 5515 g1 = *( Dbc **)& jg1 ; 5516 g2 = ( DB_CACHE_PRIORITY ) jg2 ; 5518 i( jg1 == 0) { 5519 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5523 o = 0; 5524 su = ( db_t_t ) Dbc_t_iܙy ( g1 , g2 ); 5525 i(! DB_RETOK_STD ( o )) { 5526 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5532 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_w_1DbEnv ( JNIEnv * jv , jass js , jt jg1 ) { 5533 jlg jsu = 0 ; 5534 u_t32_t g1 ; 5535 DbEnv * su = 0 ; 5537 () jv ; 5538 () js ; 5539 g1 = ( u_t32_t ) jg1 ; 5541 o = 0; 5542 su = ( DbEnv *) w_DbEnv ( g1 ); 5543 i(! DB_RETOK_STD ( o )) { 5544 __dbj_throw ( jv , o , NULL , NULL, NULL); 5547 *( DbEnv **)& jsu = su ; 5548 jsu ; 5552 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 5553 DbEnv * g1 = (DbEnv *) 0 ; 5554 u_t32_t g2 ; 5555 db_t_t su ; 5557 () jv ; 5558 () js ; 5559 g1 = *( DbEnv **)& jg1 ; 5560 g2 = ( u_t32_t ) jg2 ; 5562 i( jg1 == 0) { 5563 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5567 su = ( db_t_t ) DbEnv_o ( g1 , g2 ); 5568 i(! DB_RETOK_STD ( su )) { 5569 __dbj_throw ( jv , su , NULL , NULL, NULL); 5575 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1dbmove ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jrg jg3 , jrg jg4 , jt jg5 ) { 5576 DbEnv * g1 = (DbEnv *) 0 ; 5577 DB_TXN * g2 = (DB_TXN *) 0 ; 5578 * g3 = (*) 0 ; 5579 * g4 = (*) 0 ; 5580 u_t32_t g5 ; 5581 db_t_t su ; 5583 () jv ; 5584 () js ; 5585 g1 = *( DbEnv **)& jg1 ; 5586 g2 = *( DB_TXN **)& jg2 ; 5587 g3 = 0; 5588 i( jg3 ) { 5589 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5590 i(! g3 ) ; 5592 g4 = 0; 5593 i( jg4 ) { 5594 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 5595 i(! g4 ) ; 5597 g5 = ( u_t32_t ) jg5 ; 5599 i( jg1 == 0) { 5600 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5604 su = ( db_t_t ) DbEnv_dbmove ( g1 , g2 ,(cڡ *) g3 ,(cڡ *) g4 , g5 ); 5605 i(! DB_RETOK_STD ( su )) { 5606 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 5609 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 5610 i( g4 (* jv )-> RSgUTFChs (jv, jg4 ,rg4); 5614 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1dbme ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jrg jg3 , jrg jg4 , jrg jg5 , jt jg6 ) { 5615 DbEnv * g1 = (DbEnv *) 0 ; 5616 DB_TXN * g2 = (DB_TXN *) 0 ; 5617 * g3 = (*) 0 ; 5618 * g4 = (*) 0 ; 5619 * g5 = (*) 0 ; 5620 u_t32_t g6 ; 5621 db_t_t su ; 5623 () jv ; 5624 () js ; 5625 g1 = *( DbEnv **)& jg1 ; 5626 g2 = *( DB_TXN **)& jg2 ; 5627 g3 = 0; 5628 i( jg3 ) { 5629 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5630 i(! g3 ) ; 5632 g4 = 0; 5633 i( jg4 ) { 5634 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 5635 i(! g4 ) ; 5637 g5 = 0; 5638 i( jg5 ) { 5639 g5 = (*)(* jv )-> GSgUTFChs (jv, jg5 , 0); 5640 i(! g5 ) ; 5642 g6 = ( u_t32_t ) jg6 ; 5644 i( jg1 == 0) { 5645 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5649 su = ( db_t_t ) DbEnv_dbme ( g1 , g2 ,(cڡ *) g3 ,(cڡ *) g4 ,(cڡ *) g5 , g6 ); 5650 i(! DB_RETOK_STD ( su )) { 5651 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 5654 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 5655 i( g4 (* jv )-> RSgUTFChs (jv, jg4 ,rg4); 5656 i( g5 (* jv )-> RSgUTFChs (jv, jg5 ,rg5); 5660 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1r ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jrg jg3 ) { 5661 DbEnv * g1 = (DbEnv *) 0 ; 5662 g2 ; 5663 * g3 = (*) 0 ; 5665 () jv ; 5666 () js ; 5667 g1 = *( DbEnv **)& jg1 ; 5668 g2 = () jg2 ; 5669 g3 = 0; 5670 i( jg3 ) { 5671 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5672 i(! g3 ) ; 5675 i( jg1 == 0) { 5676 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5679 DbEnv_r ( g1 , g2 ,(cڡ *) g3 ); 5680 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 5684 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1rx ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 5685 DbEnv * g1 = (DbEnv *) 0 ; 5686 * g2 = (*) 0 ; 5688 () jv ; 5689 () js ; 5690 g1 = *( DbEnv **)& jg1 ; 5691 g2 = 0; 5692 i( jg2 ) { 5693 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5694 i(! g2 ) ; 5697 i( jg1 == 0) { 5698 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5701 DbEnv_rx ( g1 ,(cڡ *) g2 ); 5702 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 5706 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1cdsgroup_1beg ( JNIEnv * jv , jass js , jlg jg1 ) { 5707 jlg jsu = 0 ; 5708 DbEnv * g1 = (DbEnv *) 0 ; 5709 DB_TXN * su = 0 ; 5711 () jv ; 5712 () js ; 5713 g1 = *( DbEnv **)& jg1 ; 5715 i( jg1 == 0) { 5716 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5719 su = ( DB_TXN *) DbEnv_cdsgroup_beg ( g1 ); 5720 *( DB_TXN **)& jsu = su ; 5721 jsu ; 5725 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1feid_1t ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 ) { 5726 DbEnv * g1 = (DbEnv *) 0 ; 5727 * g2 = (*) 0 ; 5728 u_t32_t g3 ; 5729 db_t_t su ; 5731 () jv ; 5732 () js ; 5733 g1 = *( DbEnv **)& jg1 ; 5734 g2 = 0; 5735 i( jg2 ) { 5736 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5737 i(! g2 ) ; 5739 g3 = ( u_t32_t ) jg3 ; 5741 i( jg1 == 0) { 5742 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5745 su = ( db_t_t ) DbEnv_feid_t ( g1 ,(cڡ *) g2 , g3 ); 5746 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 5750 JNIEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1da_1ds ( JNIEnv * jv , jass js , jlg jg1 ) { 5751 jobjeAay jsu = 0 ; 5752 DbEnv * g1 = (DbEnv *) 0 ; 5753 ** su = 0 ; 5755 () jv ; 5756 () js ; 5757 g1 = *( DbEnv **)& jg1 ; 5759 i( jg1 == 0) { 5760 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5764 o = 0; 5765 su = (**) DbEnv_g_da_ds ( g1 ); 5766 i(! DB_RETOK_STD ( o )) { 5767 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5771 i( su ! NULL ) { 5772 i , n ; 5774 n = 0; 5775 su [ n ] ! NULL ) 5776 n ++; 5777 i(( jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , rg_ass , 5778 NULL )) == NULL) 5780 i = 0; i < n ; i++) { 5781 jrg r = (* jv )-> NewSgUTF (jv, su [ i ]); 5782 (* jv )-> SObjeAayEmt (jv, jsu , ( jsize ) i , r ); 5787 jsu ; 5791 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1y_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 5792 jt jsu = 0 ; 5793 DbEnv * g1 = (DbEnv *) 0 ; 5794 u_t32_t su ; 5796 () jv ; 5797 () js ; 5798 g1 = *( DbEnv **)& jg1 ; 5800 i( jg1 == 0) { 5801 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5805 o = 0; 5806 su = ( u_t32_t ) DbEnv_g_y_ags ( g1 ); 5807 i(! DB_RETOK_STD ( o )) { 5808 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5811 jsu = ( jt ) su ; 5812 jsu ; 5816 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 5817 jt jsu = 0 ; 5818 DbEnv * g1 = (DbEnv *) 0 ; 5819 u_t32_t su ; 5821 () jv ; 5822 () js ; 5823 g1 = *( DbEnv **)& jg1 ; 5825 i( jg1 == 0) { 5826 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5830 o = 0; 5831 su = ( u_t32_t ) DbEnv_g_ags ( g1 ); 5832 i(! DB_RETOK_STD ( o )) { 5833 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5836 jsu = ( jt ) su ; 5837 jsu ; 5841 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1home ( JNIEnv * jv , jass js , jlg jg1 ) { 5842 jrg jsu = 0 ; 5843 DbEnv * g1 = (DbEnv *) 0 ; 5844 * su = 0 ; 5846 () jv ; 5847 () js ; 5848 g1 = *( DbEnv **)& jg1 ; 5850 i( jg1 == 0) { 5851 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5855 o = 0; 5856 su = (*) DbEnv_g_home ( g1 ); 5857 i(! DB_RETOK_STD ( o )) { 5858 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5861 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 5862 jsu ; 5866 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1ݒ_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 5867 jt jsu = 0 ; 5868 DbEnv * g1 = (DbEnv *) 0 ; 5869 u_t32_t su ; 5871 () jv ; 5872 () js ; 5873 g1 = *( DbEnv **)& jg1 ; 5875 i( jg1 == 0) { 5876 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5880 o = 0; 5881 su = ( u_t32_t ) DbEnv_g_ݒ_ags ( g1 ); 5882 i(! DB_RETOK_STD ( o )) { 5883 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5886 jsu = ( jt ) su ; 5887 jsu ; 5891 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1shm_1key ( JNIEnv * jv , jass js , jlg jg1 ) { 5892 jlg jsu = 0 ; 5893 DbEnv * g1 = (DbEnv *) 0 ; 5894 su ; 5896 () jv ; 5897 () js ; 5898 g1 = *( DbEnv **)& jg1 ; 5900 i( jg1 == 0) { 5901 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5905 o = 0; 5906 su = () DbEnv_g_shm_key ( g1 ); 5907 i(! DB_RETOK_STD ( o )) { 5908 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5911 jsu = ( jlg ) su ; 5912 jsu ; 5916 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tmp_1d ( JNIEnv * jv , jass js , jlg jg1 ) { 5917 jrg jsu = 0 ; 5918 DbEnv * g1 = (DbEnv *) 0 ; 5919 * su = 0 ; 5921 () jv ; 5922 () js ; 5923 g1 = *( DbEnv **)& jg1 ; 5925 i( jg1 == 0) { 5926 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5930 o = 0; 5931 su = (*) DbEnv_g_tmp_d ( g1 ); 5932 i(! DB_RETOK_STD ( o )) { 5933 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5936 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 5937 jsu ; 5941 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vbo ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 5942 jboޗn jsu = 0 ; 5943 DbEnv * g1 = (DbEnv *) 0 ; 5944 u_t32_t g2 ; 5945 t_bo su ; 5947 () jv ; 5948 () js ; 5949 g1 = *( DbEnv **)& jg1 ; 5950 g2 = ( u_t32_t ) jg2 ; 5952 i( jg1 == 0) { 5953 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5957 o = 0; 5958 su = ( t_bo ) DbEnv_g_vbo ( g1 , g2 ); 5959 i(! DB_RETOK_STD ( o )) { 5960 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 5963 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 5964 jsu ; 5968 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1is_1bigdn ( JNIEnv * jv , jass js , jlg jg1 ) { 5969 jboޗn jsu = 0 ; 5970 DbEnv * g1 = (DbEnv *) 0 ; 5971 t_bo su ; 5973 () jv ; 5974 () js ; 5975 g1 = *( DbEnv **)& jg1 ; 5977 i( jg1 == 0) { 5978 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5981 su = ( t_bo ) DbEnv_is_bigdn ( g1 ); 5982 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 5983 jsu ; 5987 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1l_1t ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 ) { 5988 DbEnv * g1 = (DbEnv *) 0 ; 5989 * g2 = (*) 0 ; 5990 u_t32_t g3 ; 5991 db_t_t su ; 5993 () jv ; 5994 () js ; 5995 g1 = *( DbEnv **)& jg1 ; 5996 g2 = 0; 5997 i( jg2 ) { 5998 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5999 i(! g2 ) ; 6001 g3 = ( u_t32_t ) jg3 ; 6003 i( jg1 == 0) { 6004 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6008 su = ( db_t_t ) DbEnv_l_t ( g1 ,(cڡ *) g2 , g3 ); 6009 i(! DB_RETOK_STD ( su )) { 6010 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6013 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6017 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1ݒ ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 , j jg4 ) { 6018 DbEnv * g1 = (DbEnv *) 0 ; 6019 * g2 = (*) 0 ; 6020 u_t32_t g3 ; 6021 g4 ; 6022 db_t_t su ; 6024 () jv ; 6025 () js ; 6026 g1 = *( DbEnv **)& jg1 ; 6027 g2 = 0; 6028 i( jg2 ) { 6029 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6030 i(! g2 ) ; 6032 g3 = ( u_t32_t ) jg3 ; 6033 g4 = () jg4 ; 6035 i( jg1 == 0) { 6036 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6040 su = ( db_t_t ) DbEnv_ݒ ( g1 ,(cڡ *) g2 , g3 , g4 ); 6041 i(! DB_RETOK_STD ( su )) { 6042 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6045 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6049 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1move0 ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 ) { 6050 DbEnv * g1 = (DbEnv *) 0 ; 6051 * g2 = (*) 0 ; 6052 u_t32_t g3 ; 6053 db_t_t su ; 6055 () jv ; 6056 () js ; 6057 g1 = *( DbEnv **)& jg1 ; 6058 g2 = 0; 6059 i( jg2 ) { 6060 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6061 i(! g2 ) ; 6063 g3 = ( u_t32_t ) jg3 ; 6065 i( jg1 == 0) { 6066 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6070 su = ( db_t_t ) DbEnv_move ( g1 ,(cڡ *) g2 , g3 ); 6071 i(! DB_RETOK_STD ( su )) { 6072 __dbj_throw ( jv , su , NULL , NULL, NULL); 6075 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6079 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 6080 DbEnv * g1 = (DbEnv *) 0 ; 6081 jlg g2 ; 6082 g3 ; 6083 db_t_t su ; 6085 () jv ; 6086 () js ; 6087 g1 = *( DbEnv **)& jg1 ; 6088 g2 = jg2 ; 6089 g3 = () jg3 ; 6091 i( jg1 == 0) { 6092 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6096 su = ( db_t_t ) DbEnv_t_chesize ( g1 , g2 , g3 ); 6097 i(! DB_RETOK_STD ( su )) { 6098 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6104 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1che_1max ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 6105 DbEnv * g1 = (DbEnv *) 0 ; 6106 jlg g2 ; 6107 db_t_t su ; 6109 () jv ; 6110 () js ; 6111 g1 = *( DbEnv **)& jg1 ; 6112 g2 = jg2 ; 6114 i( jg1 == 0) { 6115 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6119 su = ( db_t_t ) DbEnv_t_che_max ( g1 , g2 ); 6120 i(! DB_RETOK_STD ( su )) { 6121 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6127 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1da_1d ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 6128 DbEnv * g1 = (DbEnv *) 0 ; 6129 * g2 = (*) 0 ; 6130 db_t_t su ; 6132 () jv ; 6133 () js ; 6134 g1 = *( DbEnv **)& jg1 ; 6135 g2 = 0; 6136 i( jg2 ) { 6137 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6138 i(! g2 ) ; 6141 i( jg1 == 0) { 6142 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6146 su = ( db_t_t ) DbEnv_t_da_d ( g1 ,(cڡ *) g2 ); 6147 i(! DB_RETOK_STD ( su )) { 6148 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6151 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6155 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1rmed_1d ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 ) { 6156 DbEnv * g1 = (DbEnv *) 0 ; 6157 g2 ; 6158 u_t32_t g3 ; 6159 db_t_t su ; 6161 () jv ; 6162 () js ; 6163 g1 = *( DbEnv **)& jg1 ; 6164 g2 = () jg2 ; 6165 g3 = ( u_t32_t ) jg3 ; 6167 i( jg1 == 0) { 6168 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6172 su = ( db_t_t ) DbEnv_t_rmed_d ( g1 , g2 , g3 ); 6173 i(! DB_RETOK_STD ( su )) { 6174 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6180 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1y ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 ) { 6181 DbEnv * g1 = (DbEnv *) 0 ; 6182 * g2 = (*) 0 ; 6183 u_t32_t g3 ; 6184 db_t_t su ; 6186 () jv ; 6187 () js ; 6188 g1 = *( DbEnv **)& jg1 ; 6189 g2 = 0; 6190 i( jg2 ) { 6191 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6192 i(! g2 ) ; 6194 g3 = ( u_t32_t ) jg3 ; 6196 i( jg1 == 0) { 6197 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6201 su = ( db_t_t ) DbEnv_t_y ( g1 ,(cڡ *) g2 , g3 ); 6202 i(! DB_RETOK_STD ( su )) { 6203 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6206 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6210 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1r ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 6211 DbEnv * g1 = (DbEnv *) 0 ; 6212 (* g2 )( DB_ENV const *,const *,const *) = ((*)(DB_ENV const *,const *,const *)) 0 ; 6214 () jv ; 6215 () js ; 6216 g1 = *( DbEnv **)& jg1 ; 6218 g2 = ( jg2 = JNI_TRUE ? __dbj_r : NULL ; 6221 i( jg1 == 0) { 6222 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6225 DbEnv_t_r ( g1 , g2 ); 6229 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jboޗn jg3 ) { 6230 DbEnv * g1 = (DbEnv *) 0 ; 6231 u_t32_t g2 ; 6232 t_bo g3 ; 6233 db_t_t su ; 6235 () jv ; 6236 () js ; 6237 g1 = *( DbEnv **)& jg1 ; 6238 g2 = ( u_t32_t ) jg2 ; 6239 g3 = ( jg3 = JNI_TRUE ); 6241 i( jg1 == 0) { 6242 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6246 su = ( db_t_t ) DbEnv_t_ags ( g1 , g2 , g3 ); 6247 i(! DB_RETOK_STD ( su )) { 6248 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6254 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1edback ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 6255 DbEnv * g1 = (DbEnv *) 0 ; 6256 (* g2 )( DB_ENV *,,) = ((*)(DB_ENV *,,)) 0 ; 6257 db_t_t su ; 6259 () jv ; 6260 () js ; 6261 g1 = *( DbEnv **)& jg1 ; 6263 g2 = ( jg2 = JNI_TRUE ? __dbj_v_edback : NULL ; 6266 i( jg1 == 0) { 6267 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6271 su = ( db_t_t ) DbEnv_t_edback ( g1 , g2 ); 6272 i(! DB_RETOK_STD ( su )) { 6273 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6279 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1max_1ݒfd ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 6280 DbEnv * g1 = (DbEnv *) 0 ; 6281 g2 ; 6282 db_t_t su ; 6284 () jv ; 6285 () js ; 6286 g1 = *( DbEnv **)& jg1 ; 6287 g2 = () jg2 ; 6289 i( jg1 == 0) { 6290 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6294 su = ( db_t_t ) DbEnv_t_mp_max_ݒfd ( g1 , g2 ); 6295 i(! DB_RETOK_STD ( su )) { 6296 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6302 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1max_1wre ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jlg jg3 ) { 6303 DbEnv * g1 = (DbEnv *) 0 ; 6304 g2 ; 6305 db_timeout_t g3 ; 6306 db_t_t su ; 6308 () jv ; 6309 () js ; 6310 g1 = *( DbEnv **)& jg1 ; 6311 g2 = () jg2 ; 6312 g3 = ( db_timeout_t ) jg3 ; 6314 i( jg1 == 0) { 6315 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6319 su = ( db_t_t ) DbEnv_t_mp_max_wre ( g1 , g2 , g3 ); 6320 i(! DB_RETOK_STD ( su )) { 6321 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6327 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1mmsize ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 6328 DbEnv * g1 = (DbEnv *) 0 ; 6329 size_t g2 ; 6330 db_t_t su ; 6332 () jv ; 6333 () js ; 6334 g1 = *( DbEnv **)& jg1 ; 6335 g2 = ( size_t ) jg2 ; 6337 i( jg1 == 0) { 6338 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6342 su = ( db_t_t ) DbEnv_t_mp_mmsize ( g1 , g2 ); 6343 i(! DB_RETOK_STD ( su )) { 6344 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6350 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1msg ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 6351 DbEnv * g1 = (DbEnv *) 0 ; 6352 (* g2 )( DB_ENV const *,const *) = ((*)(DB_ENV const *,const *)) 0 ; 6354 () jv ; 6355 () js ; 6356 g1 = *( DbEnv **)& jg1 ; 6358 g2 = ( jg2 = JNI_TRUE ? __dbj_mesge : NULL ; 6361 i( jg1 == 0) { 6362 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6365 DbEnv_t_msg ( g1 , g2 ); 6369 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1nic ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 6370 DbEnv * g1 = (DbEnv *) 0 ; 6371 (* g2 )( DB_ENV *,) = ((*)(DB_ENV *,)) 0 ; 6372 db_t_t su ; 6374 () jv ; 6375 () js ; 6376 g1 = *( DbEnv **)& jg1 ; 6378 g2 = ( jg2 = JNI_TRUE ? __dbj_nic : NULL ; 6381 i( jg1 == 0) { 6382 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6386 su = ( db_t_t ) DbEnv_t_nic ( g1 , g2 ); 6387 i(! DB_RETOK_STD ( su )) { 6388 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6394 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1c_1rv ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jlg jg3 , jlg jg4 , jt jg5 ) { 6395 DbEnv * g1 = (DbEnv *) 0 ; 6396 * g2 = (*) 0 ; 6397 g3 ; 6398 g4 ; 6399 u_t32_t g5 ; 6400 db_t_t su ; 6402 () jv ; 6403 () js ; 6404 g1 = *( DbEnv **)& jg1 ; 6405 g2 = 0; 6406 i( jg2 ) { 6407 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6408 i(! g2 ) ; 6410 g3 = () jg3 ; 6411 g4 = () jg4 ; 6412 g5 = ( u_t32_t ) jg5 ; 6414 i( jg1 == 0) { 6415 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6419 su = ( db_t_t ) DbEnv_t_c_rv ( g1 , g2 , g3 , g4 , g5 ); 6420 i(! DB_RETOK_STD ( su )) { 6421 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6424 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6428 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1shm_1key ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 6429 DbEnv * g1 = (DbEnv *) 0 ; 6430 g2 ; 6431 db_t_t su ; 6433 () jv ; 6434 () js ; 6435 g1 = *( DbEnv **)& jg1 ; 6436 g2 = () jg2 ; 6438 i( jg1 == 0) { 6439 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6443 su = ( db_t_t ) DbEnv_t_shm_key ( g1 , g2 ); 6444 i(! DB_RETOK_STD ( su )) { 6445 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6451 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 6452 DbEnv * g1 = (DbEnv *) 0 ; 6453 db_timeout_t g2 ; 6454 u_t32_t g3 ; 6455 db_t_t su ; 6457 () jv ; 6458 () js ; 6459 g1 = *( DbEnv **)& jg1 ; 6460 g2 = ( db_timeout_t ) jg2 ; 6461 g3 = ( u_t32_t ) jg3 ; 6463 i( jg1 == 0) { 6464 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6468 su = ( db_t_t ) DbEnv_t_timeout ( g1 , g2 , g3 ); 6469 i(! DB_RETOK_STD ( su )) { 6470 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6476 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tmp_1d ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 6477 DbEnv * g1 = (DbEnv *) 0 ; 6478 * g2 = (*) 0 ; 6479 db_t_t su ; 6481 () jv ; 6482 () js ; 6483 g1 = *( DbEnv **)& jg1 ; 6484 g2 = 0; 6485 i( jg2 ) { 6486 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6487 i(! g2 ) ; 6490 i( jg1 == 0) { 6491 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6495 su = ( db_t_t ) DbEnv_t_tmp_d ( g1 ,(cڡ *) g2 ); 6496 i(! DB_RETOK_STD ( su )) { 6497 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6500 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 6504 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tx_1max ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 6505 DbEnv * g1 = (DbEnv *) 0 ; 6506 u_t32_t g2 ; 6507 db_t_t su ; 6509 () jv ; 6510 () js ; 6511 g1 = *( DbEnv **)& jg1 ; 6512 g2 = ( u_t32_t ) jg2 ; 6514 i( jg1 == 0) { 6515 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6519 su = ( db_t_t ) DbEnv_t_tx_max ( g1 , g2 ); 6520 i(! DB_RETOK_STD ( su )) { 6521 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6527 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1p_1dich ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 6528 DbEnv * g1 = (DbEnv *) 0 ; 6529 (* g2 )( DB_ENV *, DBT *, DB_LSN *, db_cs ) = ((*)(DB_ENV *,DBT *,DB_LSN *,db_recops)) 0 ; 6530 db_t_t su ; 6532 () jv ; 6533 () js ; 6534 g1 = *( DbEnv **)& jg1 ; 6536 g2 = ( jg2 = JNI_TRUE ? __dbj_p_dich : NULL ; 6539 i( jg1 == 0) { 6540 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6544 su = ( db_t_t ) DbEnv_t_p_dich ( g1 , g2 ); 6545 i(! DB_RETOK_STD ( su )) { 6546 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6552 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1evt_1nify ( JNIEnv * jv , jass js , jlg jg1 , jboޗn jg2 ) { 6553 DbEnv * g1 = (DbEnv *) 0 ; 6554 (* g2 )( DB_ENV *, u_t32_t ,*) = ((*)(DB_ENV *,u_int32_t,*)) 0 ; 6555 db_t_t su ; 6557 () jv ; 6558 () js ; 6559 g1 = *( DbEnv **)& jg1 ; 6561 g2 = ( jg2 = JNI_TRUE ? __dbj_evt_nify : NULL ; 6564 i( jg1 == 0) { 6565 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6569 su = ( db_t_t ) DbEnv_t_evt_nify ( g1 , g2 ); 6570 i(! DB_RETOK_STD ( su )) { 6571 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6577 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tx_1timeamp0 ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 6578 DbEnv * g1 = (DbEnv *) 0 ; 6579 time_t * g2 = (time_t *) 0 ; 6580 db_t_t su ; 6581 time_t time2 ; 6583 () jv ; 6584 () js ; 6585 g1 = *( DbEnv **)& jg1 ; 6587 time2 = ( time_t ) jg2 ; 6588 g2 = & time2 ; 6591 i( jg1 == 0) { 6592 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6596 su = ( db_t_t ) DbEnv_t_tx_timeamp ( g1 , g2 ); 6597 i(! DB_RETOK_STD ( su )) { 6598 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6604 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1vbo ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jboޗn jg3 ) { 6605 DbEnv * g1 = (DbEnv *) 0 ; 6606 u_t32_t g2 ; 6607 t_bo g3 ; 6608 db_t_t su ; 6610 () jv ; 6611 () js ; 6612 g1 = *( DbEnv **)& jg1 ; 6613 g2 = ( u_t32_t ) jg2 ; 6614 g3 = ( jg3 = JNI_TRUE ); 6616 i( jg1 == 0) { 6617 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6621 su = ( db_t_t ) DbEnv_t_vbo ( g1 , g2 , g3 ); 6622 i(! DB_RETOK_STD ( su )) { 6623 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6629 JNIEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1cis ( JNIEnv * jv , jass js , jlg jg1 ) { 6630 jobjeAay jsu = 0 ; 6631 DbEnv * g1 = (DbEnv *) 0 ; 6632 __db_lk_cis su ; 6634 () jv ; 6635 () js ; 6636 g1 = *( DbEnv **)& jg1 ; 6638 i( jg1 == 0) { 6639 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6643 o = 0; 6644 su = DbEnv_g_lk_cis ( g1 ); 6645 i(! DB_RETOK_STD ( o )) { 6646 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6650 i ; 6651 jbyAay bys ; 6653 jsu = (* jv )-> NewObjeAay (jenv, 6654 ( jsize )(& su )-> lk_modes , byy_ass , NULL ); 6655 i( jsu = NULL ) 6657 i = 0; i < (& su )-> lk_modes ; i++) { 6658 bys = (* jv )-> NewByAay (jv, ( jsize )(& su )-> lk_modes ); 6659 i( bys = NULL ) 6661 (* jv )-> SByAayRegi (jv, bys , 0, ( jsize )(& su )-> lk_modes , 6662 ( jby *)((& su )-> lk_cis + i * (&su)-> lk_modes )); 6663 (* jv )-> SObjeAayEmt (jv, jsu , ( jsize ) i , bys ); 6666 jsu ; 6670 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1de ( JNIEnv * jv , jass js , jlg jg1 ) { 6671 jt jsu = 0 ; 6672 DbEnv * g1 = (DbEnv *) 0 ; 6673 u_t32_t su ; 6675 () jv ; 6676 () js ; 6677 g1 = *( DbEnv **)& jg1 ; 6679 i( jg1 == 0) { 6680 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6684 o = 0; 6685 su = ( u_t32_t ) DbEnv_g_lk_de ( g1 ); 6686 i(! DB_RETOK_STD ( o )) { 6687 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6690 jsu = ( jt ) su ; 6691 jsu ; 6695 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 ) { 6696 jt jsu = 0 ; 6697 DbEnv * g1 = (DbEnv *) 0 ; 6698 u_t32_t su ; 6700 () jv ; 6701 () js ; 6702 g1 = *( DbEnv **)& jg1 ; 6704 i( jg1 == 0) { 6705 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6709 o = 0; 6710 su = ( u_t32_t ) DbEnv_g_lk_max_locks ( g1 ); 6711 i(! DB_RETOK_STD ( o )) { 6712 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6715 jsu = ( jt ) su ; 6716 jsu ; 6720 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 ) { 6721 jt jsu = 0 ; 6722 DbEnv * g1 = (DbEnv *) 0 ; 6723 u_t32_t su ; 6725 () jv ; 6726 () js ; 6727 g1 = *( DbEnv **)& jg1 ; 6729 i( jg1 == 0) { 6730 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6734 o = 0; 6735 su = ( u_t32_t ) DbEnv_g_lk_max_locks ( g1 ); 6736 i(! DB_RETOK_STD ( o )) { 6737 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6740 jsu = ( jt ) su ; 6741 jsu ; 6745 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1objes ( JNIEnv * jv , jass js , jlg jg1 ) { 6746 jt jsu = 0 ; 6747 DbEnv * g1 = (DbEnv *) 0 ; 6748 u_t32_t su ; 6750 () jv ; 6751 () js ; 6752 g1 = *( DbEnv **)& jg1 ; 6754 i( jg1 == 0) { 6755 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6759 o = 0; 6760 su = ( u_t32_t ) DbEnv_g_lk_max_objes ( g1 ); 6761 i(! DB_RETOK_STD ( o )) { 6762 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6765 jsu = ( jt ) su ; 6766 jsu ; 6770 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1de ( JNIEnv * jv , jass js , jlg jg1 , j jg2 , j jg3 ) { 6771 jt jsu = 0 ; 6772 DbEnv * g1 = (DbEnv *) 0 ; 6773 u_t32_t g2 ; 6774 u_t32_t g3 ; 6775 su ; 6777 () jv ; 6778 () js ; 6779 g1 = *( DbEnv **)& jg1 ; 6780 g2 = ( u_t32_t ) jg2 ; 6781 g3 = ( u_t32_t ) jg3 ; 6783 i( jg1 == 0) { 6784 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6788 o = 0; 6789 su = () DbEnv_lock_de ( g1 , g2 , g3 ); 6790 i(! DB_RETOK_STD ( o )) { 6791 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6794 jsu = ( jt ) su ; 6795 jsu ; 6799 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1g ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 , jobje jg4 , j jg5 ) { 6800 jlg jsu = 0 ; 6801 DbEnv * g1 = (DbEnv *) 0 ; 6802 u_t32_t g2 ; 6803 u_t32_t g3 ; 6804 DBT * g4 = (DBT *) 0 ; 6805 db_lockmode_t g5 ; 6806 DB_LOCK * su = 0 ; 6807 DBT_LOCKED ldbt4 ; 6809 () jv ; 6810 () js ; 6811 g1 = *( DbEnv **)& jg1 ; 6812 g2 = ( u_t32_t ) jg2 ; 6813 g3 = ( u_t32_t ) jg3 ; 6815 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 6818 g5 = ( db_lockmode_t ) jg5 ; 6820 i( jg1 == 0) { 6821 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6825 o = 0; 6826 su = ( DB_LOCK *) DbEnv_lock_g ( g1 , g2 , g3 ,( Dbt cڡ *) g4 , g5 ); 6827 i(! DB_RETOK_STD ( o )) { 6828 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6831 *( DB_LOCK **)& jsu = su ; 6832 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 6833 jsu ; 6837 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1id ( JNIEnv * jv , jass js , jlg jg1 ) { 6838 jt jsu = 0 ; 6839 DbEnv * g1 = (DbEnv *) 0 ; 6840 u_t32_t su ; 6842 () jv ; 6843 () js ; 6844 g1 = *( DbEnv **)& jg1 ; 6846 i( jg1 == 0) { 6847 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6851 o = 0; 6852 su = ( u_t32_t ) DbEnv_lock_id ( g1 ); 6853 i(! DB_RETOK_STD ( o )) { 6854 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6857 jsu = ( jt ) su ; 6858 jsu ; 6862 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1id_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 6863 DbEnv * g1 = (DbEnv *) 0 ; 6864 u_t32_t g2 ; 6865 db_t_t su ; 6867 () jv ; 6868 () js ; 6869 g1 = *( DbEnv **)& jg1 ; 6870 g2 = ( u_t32_t ) jg2 ; 6872 i( jg1 == 0) { 6873 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6877 su = ( db_t_t ) DbEnv_lock_id_ ( g1 , g2 ); 6878 i(! DB_RETOK_STD ( su )) { 6879 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6885 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1put ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 6886 DbEnv * g1 = (DbEnv *) 0 ; 6887 DB_LOCK * g2 = (DB_LOCK *) 0 ; 6888 db_t_t su ; 6890 () jv ; 6891 () js ; 6892 g1 = *( DbEnv **)& jg1 ; 6893 g2 = *( DB_LOCK **)& jg2 ; 6895 i( jg1 == 0) { 6896 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6900 su = ( db_t_t ) DbEnv_lock_put ( g1 , g2 ); 6901 i(! DB_RETOK_STD ( su )) { 6902 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6908 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 6909 jobje jsu = 0 ; 6910 DbEnv * g1 = (DbEnv *) 0 ; 6911 u_t32_t g2 ; 6912 DB_LOCK_STAT * su = 0 ; 6914 () jv ; 6915 () js ; 6916 g1 = *( DbEnv **)& jg1 ; 6917 g2 = ( u_t32_t ) jg2 ; 6919 i( jg1 == 0) { 6920 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6924 o = 0; 6925 su = ( DB_LOCK_STAT *) DbEnv_lock_ ( g1 , g2 ); 6926 i(! DB_RETOK_STD ( o )) { 6927 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6931 jsu = (* jv )-> NewObje (jv, lock__ass , lock__cڡru ); 6932 i( jsu ! NULL ) 6933 __dbj_fl_lock_ ( jv , jsu , su ); 6934 __os_u ( NULL , su ); 6936 jsu ; 6940 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1cis ( JNIEnv * jv , jass js , jlg jg1 , jobjeAay jg2 ) { 6941 DbEnv * g1 = (DbEnv *) 0 ; 6942 __db_lk_cis g2 ; 6943 db_t_t su ; 6945 () jv ; 6946 () js ; 6947 g1 = *( DbEnv **)& jg1 ; 6949 i , n , r ; 6950 size_t bysize ; 6952 n = (& g2 )-> lk_modes = (* jv )-> GAayLgth (jv, jg2 ); 6953 bysize = ( u_ch * n *en; 6955 i(( r = __os_mloc ( NULL , bysize , &(& g2 )-> lk_cis )) != 0) { 6956 __dbj_throw ( jv , r , NULL , NULL, JDBENV ); 6960 i = 0; i < n ; i++) { 6961 jobje sub_y = (* jv )-> GObjeAayEmt (jenv, 6962 jg2 , i ); 6963 (* jv )-> GByAayRegi (jv,( jbyAay ) sub_y , 0, n , 6964 ( jby *)&(& g2 )-> lk_cis [ i * n ]); 6968 i( jg1 == 0) { 6969 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6973 su = ( db_t_t ) DbEnv_t_lk_cis ( g1 , g2 ); 6974 i(! DB_RETOK_STD ( su )) { 6975 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6979 __os_ ( NULL , (& g2 )-> lk_cis ); 6984 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1de ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 6985 DbEnv * g1 = (DbEnv *) 0 ; 6986 u_t32_t g2 ; 6987 db_t_t su ; 6989 () jv ; 6990 () js ; 6991 g1 = *( DbEnv **)& jg1 ; 6992 g2 = ( u_t32_t ) jg2 ; 6994 i( jg1 == 0) { 6995 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6999 su = ( db_t_t ) DbEnv_t_lk_de ( g1 , g2 ); 7000 i(! DB_RETOK_STD ( su )) { 7001 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7007 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7008 DbEnv * g1 = (DbEnv *) 0 ; 7009 u_t32_t g2 ; 7010 db_t_t su ; 7012 () jv ; 7013 () js ; 7014 g1 = *( DbEnv **)& jg1 ; 7015 g2 = ( u_t32_t ) jg2 ; 7017 i( jg1 == 0) { 7018 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7022 su = ( db_t_t ) DbEnv_t_lk_max_locks ( g1 , g2 ); 7023 i(! DB_RETOK_STD ( su )) { 7024 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7030 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7031 DbEnv * g1 = (DbEnv *) 0 ; 7032 u_t32_t g2 ; 7033 db_t_t su ; 7035 () jv ; 7036 () js ; 7037 g1 = *( DbEnv **)& jg1 ; 7038 g2 = ( u_t32_t ) jg2 ; 7040 i( jg1 == 0) { 7041 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7045 su = ( db_t_t ) DbEnv_t_lk_max_locks ( g1 , g2 ); 7046 i(! DB_RETOK_STD ( su )) { 7047 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7053 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1objes ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7054 DbEnv * g1 = (DbEnv *) 0 ; 7055 u_t32_t g2 ; 7056 db_t_t su ; 7058 () jv ; 7059 () js ; 7060 g1 = *( DbEnv **)& jg1 ; 7061 g2 = ( u_t32_t ) jg2 ; 7063 i( jg1 == 0) { 7064 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7068 su = ( db_t_t ) DbEnv_t_lk_max_objes ( g1 , g2 ); 7069 i(! DB_RETOK_STD ( su )) { 7070 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7076 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1bsize ( JNIEnv * jv , jass js , jlg jg1 ) { 7077 jt jsu = 0 ; 7078 DbEnv * g1 = (DbEnv *) 0 ; 7079 u_t32_t su ; 7081 () jv ; 7082 () js ; 7083 g1 = *( DbEnv **)& jg1 ; 7085 i( jg1 == 0) { 7086 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7090 o = 0; 7091 su = ( u_t32_t ) DbEnv_g_lg_bsize ( g1 ); 7092 i(! DB_RETOK_STD ( o )) { 7093 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7096 jsu = ( jt ) su ; 7097 jsu ; 7101 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1d ( JNIEnv * jv , jass js , jlg jg1 ) { 7102 jrg jsu = 0 ; 7103 DbEnv * g1 = (DbEnv *) 0 ; 7104 * su = 0 ; 7106 () jv ; 7107 () js ; 7108 g1 = *( DbEnv **)& jg1 ; 7110 i( jg1 == 0) { 7111 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7115 o = 0; 7116 su = (*) DbEnv_g_lg_d ( g1 ); 7117 i(! DB_RETOK_STD ( o )) { 7118 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7121 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 7122 jsu ; 7126 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1femode ( JNIEnv * jv , jass js , jlg jg1 ) { 7127 jt jsu = 0 ; 7128 DbEnv * g1 = (DbEnv *) 0 ; 7129 su ; 7131 () jv ; 7132 () js ; 7133 g1 = *( DbEnv **)& jg1 ; 7135 i( jg1 == 0) { 7136 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7140 o = 0; 7141 su = () DbEnv_g_lg_femode ( g1 ); 7142 i(! DB_RETOK_STD ( o )) { 7143 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7146 jsu = ( jt ) su ; 7147 jsu ; 7151 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1max ( JNIEnv * jv , jass js , jlg jg1 ) { 7152 jt jsu = 0 ; 7153 DbEnv * g1 = (DbEnv *) 0 ; 7154 u_t32_t su ; 7156 () jv ; 7157 () js ; 7158 g1 = *( DbEnv **)& jg1 ; 7160 i( jg1 == 0) { 7161 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7165 o = 0; 7166 su = ( u_t32_t ) DbEnv_g_lg_max ( g1 ); 7167 i(! DB_RETOK_STD ( o )) { 7168 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7171 jsu = ( jt ) su ; 7172 jsu ; 7176 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1gimax ( JNIEnv * jv , jass js , jlg jg1 ) { 7177 jt jsu = 0 ; 7178 DbEnv * g1 = (DbEnv *) 0 ; 7179 u_t32_t su ; 7181 () jv ; 7182 () js ; 7183 g1 = *( DbEnv **)& jg1 ; 7185 i( jg1 == 0) { 7186 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7190 o = 0; 7191 su = ( u_t32_t ) DbEnv_g_lg_gimax ( g1 ); 7192 i(! DB_RETOK_STD ( o )) { 7193 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7196 jsu = ( jt ) su ; 7197 jsu ; 7201 JNIEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1chive ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7202 jobjeAay jsu = 0 ; 7203 DbEnv * g1 = (DbEnv *) 0 ; 7204 u_t32_t g2 ; 7205 ** su = 0 ; 7207 () jv ; 7208 () js ; 7209 g1 = *( DbEnv **)& jg1 ; 7210 g2 = ( u_t32_t ) jg2 ; 7212 i( jg1 == 0) { 7213 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7217 o = 0; 7218 su = (**) DbEnv_log_chive ( g1 , g2 ); 7219 i(! DB_RETOK_STD ( o )) { 7220 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7224 i( su ! NULL ) { 7225 i , n ; 7227 n = 0; 7228 su [ n ] ! NULL ) 7229 n ++; 7230 i(( jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , rg_ass , 7231 NULL )) == NULL) 7233 i = 0; i < n ; i++) { 7234 jrg r = (* jv )-> NewSgUTF (jv, su [ i ]); 7235 (* jv )-> SObjeAayEmt (jv, jsu , ( jsize ) i , r ); 7238 __os_u ( NULL , su ); 7241 jsu ; 7245 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1com ( JNIEnv * jv , jass js , jobje jg1 , jobje jg2 ) { 7246 jt jsu = 0 ; 7247 DB_LSN * g1 = (DB_LSN *) 0 ; 7248 DB_LSN * g2 = (DB_LSN *) 0 ; 7249 su ; 7250 DB_LSN l1 ; 7251 DB_LSN l2 ; 7253 () jv ; 7254 () js ; 7256 i( jg1 = NULL ) { 7257 g1 = NULL ; 7259 g1 = & l1 ; 7260 g1 -> fe = (* jv )-> GIFld (jv, jg1 , dbl_fe_fid ); 7261 g1 -> offt = (* jv )-> GIFld (jv, jg1 , 7262 dbl_offt_fid ); 7266 i( jg2 = NULL ) { 7267 g2 = NULL ; 7269 g2 = & l2 ; 7270 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7271 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7272 dbl_offt_fid ); 7276 i( g1 = NULL ) { 7277 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7282 i( g2 = NULL ) { 7283 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7287 su = () DbEnv_log_com (( DbL cڡ *) g1 ,(DbL cڡ *) g2 ); 7288 jsu = ( jt ) su ; 7290 i( jg1 ! NULL ) { 7291 (* jv )-> SIFld (jv, jg1 , dbl_fe_fid , g1 -> fe ); 7292 (* jv )-> SIFld (jv, jg1 , 7293 dbl_offt_fid , g1 -> offt ); 7297 i( jg2 ! NULL ) { 7298 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7299 (* jv )-> SIFld (jv, jg2 , 7300 dbl_offt_fid , g2 -> offt ); 7303 jsu ; 7307 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1curs ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7308 jlg jsu = 0 ; 7309 DbEnv * g1 = (DbEnv *) 0 ; 7310 u_t32_t g2 ; 7311 DB_LOGC * su = 0 ; 7313 () jv ; 7314 () js ; 7315 g1 = *( DbEnv **)& jg1 ; 7316 g2 = ( u_t32_t ) jg2 ; 7318 i( jg1 == 0) { 7319 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7323 o = 0; 7324 su = ( DB_LOGC *) DbEnv_log_curs ( g1 , g2 ); 7325 i(! DB_RETOK_STD ( o )) { 7326 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7329 *( DB_LOGC **)& jsu = su ; 7330 jsu ; 7334 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1fe ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 ) { 7335 jrg jsu = 0 ; 7336 DbEnv * g1 = (DbEnv *) 0 ; 7337 DB_LSN * g2 = (DB_LSN *) 0 ; 7338 * su = 0 ; 7339 DB_LSN l2 ; 7341 () jv ; 7342 () js ; 7343 g1 = *( DbEnv **)& jg1 ; 7345 i( jg2 = NULL ) { 7346 g2 = NULL ; 7348 g2 = & l2 ; 7349 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7350 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7351 dbl_offt_fid ); 7355 i( jg1 == 0) { 7356 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7360 i( g2 = NULL ) { 7361 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7366 o = 0; 7367 su = (*) DbEnv_log_fe ( g1 , g2 ); 7368 i(! DB_RETOK_STD ( o )) { 7369 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7372 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 7374 i( jg2 ! NULL ) { 7375 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7376 (* jv )-> SIFld (jv, jg2 , 7377 dbl_offt_fid , g2 -> offt ); 7380 jsu ; 7384 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1ush ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 ) { 7385 DbEnv * g1 = (DbEnv *) 0 ; 7386 DB_LSN * g2 = (DB_LSN *) 0 ; 7387 db_t_t su ; 7388 DB_LSN l2 ; 7390 () jv ; 7391 () js ; 7392 g1 = *( DbEnv **)& jg1 ; 7394 i( jg2 = NULL ) { 7395 g2 = NULL ; 7397 g2 = & l2 ; 7398 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7399 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7400 dbl_offt_fid ); 7404 i( jg1 == 0) { 7405 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7410 su = ( db_t_t ) DbEnv_log_ush ( g1 ,( DbL cڡ *) g2 ); 7411 i(! DB_RETOK_STD ( su )) { 7412 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7416 i( jg2 ! NULL ) { 7417 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7418 (* jv )-> SIFld (jv, jg2 , 7419 dbl_offt_fid , g2 -> offt ); 7425 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1put ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jobje jg3 , jt jg4 ) { 7426 DbEnv * g1 = (DbEnv *) 0 ; 7427 DB_LSN * g2 = (DB_LSN *) 0 ; 7428 DBT * g3 = (DBT *) 0 ; 7429 u_t32_t g4 ; 7430 db_t_t su ; 7431 DB_LSN l2 ; 7432 DBT_LOCKED ldbt3 ; 7434 () jv ; 7435 () js ; 7436 g1 = *( DbEnv **)& jg1 ; 7438 i( jg2 = NULL ) { 7439 g2 = NULL ; 7441 g2 = & l2 ; 7442 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7443 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7444 dbl_offt_fid ); 7448 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 7451 g4 = ( u_t32_t ) jg4 ; 7453 i( jg1 == 0) { 7454 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7458 i( g2 = NULL ) { 7459 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7464 su = ( db_t_t ) DbEnv_log_put ( g1 , g2 ,( Dbt cڡ *) g3 , g4 ); 7465 i(! DB_RETOK_STD ( su )) { 7466 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7470 i( jg2 ! NULL ) { 7471 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7472 (* jv )-> SIFld (jv, jg2 , 7473 dbl_offt_fid , g2 -> offt ); 7476 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 7480 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1t ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jrg jg3 ) { 7481 DbEnv * g1 = (DbEnv *) 0 ; 7482 DB_TXN * g2 = (DB_TXN *) 0 ; 7483 * g3 = (*) 0 ; 7484 db_t_t su ; 7486 () jv ; 7487 () js ; 7488 g1 = *( DbEnv **)& jg1 ; 7489 g2 = *( DB_TXN **)& jg2 ; 7490 g3 = 0; 7491 i( jg3 ) { 7492 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 7493 i(! g3 ) ; 7496 i( jg1 == 0) { 7497 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7501 su = ( db_t_t ) DbEnv_log_t ( g1 , g2 ,(cڡ *) g3 ); 7502 i(! DB_RETOK_STD ( su )) { 7503 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7506 i( g3 (* jv )-> RSgUTFChs (jv, jg3 ,rg3); 7510 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7511 jobje jsu = 0 ; 7512 DbEnv * g1 = (DbEnv *) 0 ; 7513 u_t32_t g2 ; 7514 DB_LOG_STAT * su = 0 ; 7516 () jv ; 7517 () js ; 7518 g1 = *( DbEnv **)& jg1 ; 7519 g2 = ( u_t32_t ) jg2 ; 7521 i( jg1 == 0) { 7522 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7526 o = 0; 7527 su = ( DB_LOG_STAT *) DbEnv_log_ ( g1 , g2 ); 7528 i(! DB_RETOK_STD ( o )) { 7529 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7533 jsu = (* jv )-> NewObje (jv, log__ass , log__cڡru ); 7534 i( jsu ! NULL ) 7535 __dbj_fl_log_ ( jv , jsu , su ); 7536 __os_u ( NULL , su ); 7538 jsu ; 7542 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1bsize ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7543 DbEnv * g1 = (DbEnv *) 0 ; 7544 u_t32_t g2 ; 7545 db_t_t su ; 7547 () jv ; 7548 () js ; 7549 g1 = *( DbEnv **)& jg1 ; 7550 g2 = ( u_t32_t ) jg2 ; 7552 i( jg1 == 0) { 7553 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7557 su = ( db_t_t ) DbEnv_t_lg_bsize ( g1 , g2 ); 7558 i(! DB_RETOK_STD ( su )) { 7559 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7565 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1d ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 7566 DbEnv * g1 = (DbEnv *) 0 ; 7567 * g2 = (*) 0 ; 7568 db_t_t su ; 7570 () jv ; 7571 () js ; 7572 g1 = *( DbEnv **)& jg1 ; 7573 g2 = 0; 7574 i( jg2 ) { 7575 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 7576 i(! g2 ) ; 7579 i( jg1 == 0) { 7580 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7584 su = ( db_t_t ) DbEnv_t_lg_d ( g1 ,(cڡ *) g2 ); 7585 i(! DB_RETOK_STD ( su )) { 7586 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7589 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 7593 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1femode ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7594 DbEnv * g1 = (DbEnv *) 0 ; 7595 g2 ; 7596 db_t_t su ; 7598 () jv ; 7599 () js ; 7600 g1 = *( DbEnv **)& jg1 ; 7601 g2 = () jg2 ; 7603 i( jg1 == 0) { 7604 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7608 su = ( db_t_t ) DbEnv_t_lg_femode ( g1 , g2 ); 7609 i(! DB_RETOK_STD ( su )) { 7610 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7616 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1max ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7617 DbEnv * g1 = (DbEnv *) 0 ; 7618 u_t32_t g2 ; 7619 db_t_t su ; 7621 () jv ; 7622 () js ; 7623 g1 = *( DbEnv **)& jg1 ; 7624 g2 = ( u_t32_t ) jg2 ; 7626 i( jg1 == 0) { 7627 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7631 su = ( db_t_t ) DbEnv_t_lg_max ( g1 , g2 ); 7632 i(! DB_RETOK_STD ( su )) { 7633 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7639 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1gimax ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7640 DbEnv * g1 = (DbEnv *) 0 ; 7641 u_t32_t g2 ; 7642 db_t_t su ; 7644 () jv ; 7645 () js ; 7646 g1 = *( DbEnv **)& jg1 ; 7647 g2 = ( u_t32_t ) jg2 ; 7649 i( jg1 == 0) { 7650 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7654 su = ( db_t_t ) DbEnv_t_lg_gimax ( g1 , g2 ); 7655 i(! DB_RETOK_STD ( su )) { 7656 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7662 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1chesize ( JNIEnv * jv , jass js , jlg jg1 ) { 7663 jlg jsu = 0 ; 7664 DbEnv * g1 = (DbEnv *) 0 ; 7665 jlg su ; 7667 () jv ; 7668 () js ; 7669 g1 = *( DbEnv **)& jg1 ; 7671 i( jg1 == 0) { 7672 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7676 o = 0; 7677 su = DbEnv_g_chesize ( g1 ); 7678 i(! DB_RETOK_STD ( o )) { 7679 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7682 jsu = su ; 7683 jsu ; 7687 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1chesize_1nche ( JNIEnv * jv , jass js , jlg jg1 ) { 7688 jt jsu = 0 ; 7689 DbEnv * g1 = (DbEnv *) 0 ; 7690 su ; 7692 () jv ; 7693 () js ; 7694 g1 = *( DbEnv **)& jg1 ; 7696 i( jg1 == 0) { 7697 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7701 o = 0; 7702 su = () DbEnv_g_chesize_nche ( g1 ); 7703 i(! DB_RETOK_STD ( o )) { 7704 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7707 jsu = ( jt ) su ; 7708 jsu ; 7712 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1che_1max ( JNIEnv * jv , jass js , jlg jg1 ) { 7713 jlg jsu = 0 ; 7714 DbEnv * g1 = (DbEnv *) 0 ; 7715 jlg su ; 7717 () jv ; 7718 () js ; 7719 g1 = *( DbEnv **)& jg1 ; 7721 i( jg1 == 0) { 7722 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7726 o = 0; 7727 su = DbEnv_g_che_max ( g1 ); 7728 i(! DB_RETOK_STD ( o )) { 7729 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7732 jsu = su ; 7733 jsu ; 7737 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1ݒfd ( JNIEnv * jv , jass js , jlg jg1 ) { 7738 jt jsu = 0 ; 7739 DbEnv * g1 = (DbEnv *) 0 ; 7740 su ; 7742 () jv ; 7743 () js ; 7744 g1 = *( DbEnv **)& jg1 ; 7746 i( jg1 == 0) { 7747 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7751 o = 0; 7752 su = () DbEnv_g_mp_max_ݒfd ( g1 ); 7753 i(! DB_RETOK_STD ( o )) { 7754 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7757 jsu = ( jt ) su ; 7758 jsu ; 7762 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1wre ( JNIEnv * jv , jass js , jlg jg1 ) { 7763 jt jsu = 0 ; 7764 DbEnv * g1 = (DbEnv *) 0 ; 7765 su ; 7767 () jv ; 7768 () js ; 7769 g1 = *( DbEnv **)& jg1 ; 7771 i( jg1 == 0) { 7772 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7776 o = 0; 7777 su = () DbEnv_g_mp_max_wre ( g1 ); 7778 i(! DB_RETOK_STD ( o )) { 7779 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7782 jsu = ( jt ) su ; 7783 jsu ; 7787 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1wre_1p ( JNIEnv * jv , jass js , jlg jg1 ) { 7788 jlg jsu = 0 ; 7789 DbEnv * g1 = (DbEnv *) 0 ; 7790 db_timeout_t su ; 7792 () jv ; 7793 () js ; 7794 g1 = *( DbEnv **)& jg1 ; 7796 i( jg1 == 0) { 7797 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7801 o = 0; 7802 su = ( db_timeout_t ) DbEnv_g_mp_max_wre_p ( g1 ); 7803 i(! DB_RETOK_STD ( o )) { 7804 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7807 jsu = ( jlg ) su ; 7808 jsu ; 7812 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1mmsize ( JNIEnv * jv , jass js , jlg jg1 ) { 7813 jlg jsu = 0 ; 7814 DbEnv * g1 = (DbEnv *) 0 ; 7815 size_t su ; 7817 () jv ; 7818 () js ; 7819 g1 = *( DbEnv **)& jg1 ; 7821 i( jg1 == 0) { 7822 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7826 o = 0; 7827 su = DbEnv_g_mp_mmsize ( g1 ); 7828 i(! DB_RETOK_STD ( o )) { 7829 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7832 jsu = ( jlg ) su ; 7833 jsu ; 7837 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7838 jobje jsu = 0 ; 7839 DbEnv * g1 = (DbEnv *) 0 ; 7840 u_t32_t g2 ; 7841 DB_MPOOL_STAT * su = 0 ; 7843 () jv ; 7844 () js ; 7845 g1 = *( DbEnv **)& jg1 ; 7846 g2 = ( u_t32_t ) jg2 ; 7848 i( jg1 == 0) { 7849 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7853 o = 0; 7854 su = ( DB_MPOOL_STAT *) DbEnv_memp_ ( g1 , g2 ); 7855 i(! DB_RETOK_STD ( o )) { 7856 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7860 jsu = (* jv )-> NewObje (jv, mpo__ass , mpo__cڡru ); 7861 i( jsu ! NULL ) 7862 __dbj_fl_mpo_ ( jv , jsu , su ); 7863 __os_u ( NULL , su ); 7865 jsu ; 7869 JNIEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1f ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 7870 jobjeAay jsu = 0 ; 7871 DbEnv * g1 = (DbEnv *) 0 ; 7872 u_t32_t g2 ; 7873 DB_MPOOL_FSTAT ** su = 0 ; 7875 () jv ; 7876 () js ; 7877 g1 = *( DbEnv **)& jg1 ; 7878 g2 = ( u_t32_t ) jg2 ; 7880 i( jg1 == 0) { 7881 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7885 o = 0; 7886 su = ( DB_MPOOL_FSTAT **) DbEnv_memp_f ( g1 , g2 ); 7887 i(! DB_RETOK_STD ( o )) { 7888 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7892 i , n ; 7894 n = 0; 7895 su [ n ] ! NULL ) 7896 n ++; 7897 jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , 7898 mpo_f_ass , 0); 7899 i( jsu = NULL ) { 7900 __os_u ( NULL , su ); 7903 i = 0; i < n ; i++) { 7904 jobje obj = (* jv )-> NewObje (jv, mpo_f_ass , 7905 mpo_f_cڡru ); 7906 i( obj = NULL ) { 7907 __os_u ( NULL , su ); 7910 (* jv )-> SObjeAayEmt (jv, jsu , i , obj ); 7911 __dbj_fl_mpo_f ( jv , obj , su [ i ]); 7913 __os_u ( NULL , su ); 7915 jsu ; 7919 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1ick ( JNIEnv * jv , jass js , jlg jg1 , j jg2 ) { 7920 jt jsu = 0 ; 7921 DbEnv * g1 = (DbEnv *) 0 ; 7922 g2 ; 7923 su ; 7925 () jv ; 7926 () js ; 7927 g1 = *( DbEnv **)& jg1 ; 7928 g2 = () jg2 ; 7930 i( jg1 == 0) { 7931 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7935 o = 0; 7936 su = () DbEnv_memp_ick ( g1 , g2 ); 7937 i(! DB_RETOK_STD ( o )) { 7938 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7941 jsu = ( jt ) su ; 7942 jsu ; 7946 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1ign ( JNIEnv * jv , jass js , jlg jg1 ) { 7947 jt jsu = 0 ; 7948 DbEnv * g1 = (DbEnv *) 0 ; 7949 u_t32_t su ; 7951 () jv ; 7952 () js ; 7953 g1 = *( DbEnv **)& jg1 ; 7955 i( jg1 == 0) { 7956 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7960 o = 0; 7961 su = ( u_t32_t ) DbEnv_mux_g_ign ( g1 ); 7962 i(! DB_RETOK_STD ( o )) { 7963 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7966 jsu = ( jt ) su ; 7967 jsu ; 7971 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1emt ( JNIEnv * jv , jass js , jlg jg1 ) { 7972 jt jsu = 0 ; 7973 DbEnv * g1 = (DbEnv *) 0 ; 7974 u_t32_t su ; 7976 () jv ; 7977 () js ; 7978 g1 = *( DbEnv **)& jg1 ; 7980 i( jg1 == 0) { 7981 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7985 o = 0; 7986 su = ( u_t32_t ) DbEnv_mux_g_emt ( g1 ); 7987 i(! DB_RETOK_STD ( o )) { 7988 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7991 jsu = ( jt ) su ; 7992 jsu ; 7996 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1max ( JNIEnv * jv , jass js , jlg jg1 ) { 7997 jt jsu = 0 ; 7998 DbEnv * g1 = (DbEnv *) 0 ; 7999 u_t32_t su ; 8001 () jv ; 8002 () js ; 8003 g1 = *( DbEnv **)& jg1 ; 8005 i( jg1 == 0) { 8006 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8010 o = 0; 8011 su = ( u_t32_t ) DbEnv_mux_g_max ( g1 ); 8012 i(! DB_RETOK_STD ( o )) { 8013 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8016 jsu = ( jt ) su ; 8017 jsu ; 8021 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1s_1s ( JNIEnv * jv , jass js , jlg jg1 ) { 8022 jt jsu = 0 ; 8023 DbEnv * g1 = (DbEnv *) 0 ; 8024 u_t32_t su ; 8026 () jv ; 8027 () js ; 8028 g1 = *( DbEnv **)& jg1 ; 8030 i( jg1 == 0) { 8031 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8035 o = 0; 8036 su = ( u_t32_t ) DbEnv_mux_g_s_s ( g1 ); 8037 i(! DB_RETOK_STD ( o )) { 8038 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8041 jsu = ( jt ) su ; 8042 jsu ; 8046 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1ign ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8047 DbEnv * g1 = (DbEnv *) 0 ; 8048 u_t32_t g2 ; 8049 db_t_t su ; 8051 () jv ; 8052 () js ; 8053 g1 = *( DbEnv **)& jg1 ; 8054 g2 = ( u_t32_t ) jg2 ; 8056 i( jg1 == 0) { 8057 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8061 su = ( db_t_t ) DbEnv_mux_t_ign ( g1 , g2 ); 8062 i(! DB_RETOK_STD ( su )) { 8063 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8069 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1emt ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8070 DbEnv * g1 = (DbEnv *) 0 ; 8071 u_t32_t g2 ; 8072 db_t_t su ; 8074 () jv ; 8075 () js ; 8076 g1 = *( DbEnv **)& jg1 ; 8077 g2 = ( u_t32_t ) jg2 ; 8079 i( jg1 == 0) { 8080 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8084 su = ( db_t_t ) DbEnv_mux_t_emt ( g1 , g2 ); 8085 i(! DB_RETOK_STD ( su )) { 8086 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8092 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1max ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8093 DbEnv * g1 = (DbEnv *) 0 ; 8094 u_t32_t g2 ; 8095 db_t_t su ; 8097 () jv ; 8098 () js ; 8099 g1 = *( DbEnv **)& jg1 ; 8100 g2 = ( u_t32_t ) jg2 ; 8102 i( jg1 == 0) { 8103 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8107 su = ( db_t_t ) DbEnv_mux_t_max ( g1 , g2 ); 8108 i(! DB_RETOK_STD ( su )) { 8109 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8115 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1s_1s ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8116 DbEnv * g1 = (DbEnv *) 0 ; 8117 u_t32_t g2 ; 8118 db_t_t su ; 8120 () jv ; 8121 () js ; 8122 g1 = *( DbEnv **)& jg1 ; 8123 g2 = ( u_t32_t ) jg2 ; 8125 i( jg1 == 0) { 8126 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8130 su = ( db_t_t ) DbEnv_mux_t_s_s ( g1 , g2 ); 8131 i(! DB_RETOK_STD ( su )) { 8132 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8138 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8139 jobje jsu = 0 ; 8140 DbEnv * g1 = (DbEnv *) 0 ; 8141 u_t32_t g2 ; 8142 DB_MUTEX_STAT * su = 0 ; 8144 () jv ; 8145 () js ; 8146 g1 = *( DbEnv **)& jg1 ; 8147 g2 = ( u_t32_t ) jg2 ; 8149 i( jg1 == 0) { 8150 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8154 o = 0; 8155 su = ( DB_MUTEX_STAT *) DbEnv_mux_ ( g1 , g2 ); 8156 i(! DB_RETOK_STD ( o )) { 8157 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8161 jsu = (* jv )-> NewObje (jv, mux__ass , mux__cڡru ); 8162 i( jsu ! NULL ) 8163 __dbj_fl_mux_ ( jv , jsu , su ); 8164 __os_u ( NULL , su ); 8166 jsu ; 8170 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tx_1max ( JNIEnv * jv , jass js , jlg jg1 ) { 8171 jt jsu = 0 ; 8172 DbEnv * g1 = (DbEnv *) 0 ; 8173 u_t32_t su ; 8175 () jv ; 8176 () js ; 8177 g1 = *( DbEnv **)& jg1 ; 8179 i( jg1 == 0) { 8180 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8184 o = 0; 8185 su = ( u_t32_t ) DbEnv_g_tx_max ( g1 ); 8186 i(! DB_RETOK_STD ( o )) { 8187 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8190 jsu = ( jt ) su ; 8191 jsu ; 8195 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tx_1timeamp ( JNIEnv * jv , jass js , jlg jg1 ) { 8196 jlg jsu = 0 ; 8197 DbEnv * g1 = (DbEnv *) 0 ; 8198 time_t su ; 8200 () jv ; 8201 () js ; 8202 g1 = *( DbEnv **)& jg1 ; 8204 i( jg1 == 0) { 8205 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8209 o = 0; 8210 su = DbEnv_g_tx_timeamp ( g1 ); 8211 i(! DB_RETOK_STD ( o )) { 8212 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8215 jsu = ( jlg ) su ; 8216 jsu ; 8220 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8221 jlg jsu = 0 ; 8222 DbEnv * g1 = (DbEnv *) 0 ; 8223 u_t32_t g2 ; 8224 db_timeout_t su ; 8226 () jv ; 8227 () js ; 8228 g1 = *( DbEnv **)& jg1 ; 8229 g2 = ( u_t32_t ) jg2 ; 8231 i( jg1 == 0) { 8232 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8236 o = 0; 8237 su = ( db_timeout_t ) DbEnv_g_timeout ( g1 , g2 ); 8238 i(! DB_RETOK_STD ( o )) { 8239 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8242 jsu = ( jlg ) su ; 8243 jsu ; 8247 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1beg ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 8248 jlg jsu = 0 ; 8249 DbEnv * g1 = (DbEnv *) 0 ; 8250 DB_TXN * g2 = (DB_TXN *) 0 ; 8251 u_t32_t g3 ; 8252 DB_TXN * su = 0 ; 8254 () jv ; 8255 () js ; 8256 g1 = *( DbEnv **)& jg1 ; 8257 g2 = *( DB_TXN **)& jg2 ; 8258 g3 = ( u_t32_t ) jg3 ; 8260 i( jg1 == 0) { 8261 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8265 o = 0; 8266 su = ( DB_TXN *) DbEnv_txn_beg ( g1 , g2 , g3 ); 8267 i(! DB_RETOK_STD ( o )) { 8268 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8271 *( DB_TXN **)& jsu = su ; 8272 jsu ; 8276 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1checkpot ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 , j jg4 ) { 8277 DbEnv * g1 = (DbEnv *) 0 ; 8278 u_t32_t g2 ; 8279 u_t32_t g3 ; 8280 u_t32_t g4 ; 8281 db_t_t su ; 8283 () jv ; 8284 () js ; 8285 g1 = *( DbEnv **)& jg1 ; 8286 g2 = ( u_t32_t ) jg2 ; 8287 g3 = ( u_t32_t ) jg3 ; 8288 g4 = ( u_t32_t ) jg4 ; 8290 i( jg1 == 0) { 8291 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8295 su = ( db_t_t ) DbEnv_txn_checkpot ( g1 , g2 , g3 , g4 ); 8296 i(! DB_RETOK_STD ( su )) { 8297 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8303 JNIEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1cov ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 ) { 8304 jobjeAay jsu = 0 ; 8305 DbEnv * g1 = (DbEnv *) 0 ; 8306 g2 ; 8307 u_t32_t g3 ; 8308 DB_PREPLIST * su = 0 ; 8310 () jv ; 8311 () js ; 8312 g1 = *( DbEnv **)& jg1 ; 8313 g2 = () jg2 ; 8314 g3 = ( u_t32_t ) jg3 ; 8316 i( jg1 == 0) { 8317 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8321 o = 0; 8322 su = ( DB_PREPLIST *) DbEnv_txn_cov ( g1 , g2 , g3 ); 8323 i(! DB_RETOK_STD ( o )) { 8324 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8328 i , n ; 8330 n = 0; 8331 su [ n ]. txn ! NULL ) 8332 n ++; 8333 jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , dbli_ass , 8334 NULL ); 8335 i( jsu = NULL ) 8337 i = 0; i < n ; i++) { 8338 jobje jtxn = (* jv )-> NewObje (jv, dbtxn_ass , 8339 dbtxn_cڡru , su [ i ]. txn , JNI_FALSE ); 8340 jobje byr = (* jv )-> NewByAay (jenv, 8341 ( jsize )( su [ i ]. gid )); 8342 jobje obj = (* jv )-> NewObje (jv, dbli_ass , 8343 dbli_cڡru , jtxn , byr ); 8345 i( jtxn = NULL || byr =NULL || obj == NULL) 8348 (* jv )-> SByAayRegi (jv, byr , 0, 8349 ( jsize )( su [ i ]. gid ), ( jby *)result[i].gid); 8350 (* jv )-> SObjeAayEmt (jv, jsu , i , obj ); 8352 __os_u ( NULL , su ); 8354 jsu ; 8358 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8359 jobje jsu = 0 ; 8360 DbEnv * g1 = (DbEnv *) 0 ; 8361 u_t32_t g2 ; 8362 DB_TXN_STAT * su = 0 ; 8364 () jv ; 8365 () js ; 8366 g1 = *( DbEnv **)& jg1 ; 8367 g2 = ( u_t32_t ) jg2 ; 8369 i( jg1 == 0) { 8370 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8374 o = 0; 8375 su = ( DB_TXN_STAT *) DbEnv_txn_ ( g1 , g2 ); 8376 i(! DB_RETOK_STD ( o )) { 8377 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8381 i ; 8382 jobjeAay aives ; 8383 jsu = (* jv )-> NewObje (jv, txn__ass , txn__cڡru ); 8384 i( jsu ! NULL ) 8385 __dbj_fl_txn_ ( jv , jsu , su ); 8387 aives = (* jv )-> NewObjeAay (jv, ( jsize ) su -> _ive , 8388 txn_aive_ass , 0); 8389 i( aives = NULL ) { 8390 __os_u ( NULL , su ); 8393 (* jv )-> SObjeFld (jv, jsu , 8394 txn___txǼay_fid , aives ); 8395 i = 0; i < su -> _ive ; i++) { 8396 jobje obj = (* jv )-> NewObje (jv, txn_aive_ass , 8397 txn_aive_cڡru ); 8398 i( obj = NULL ) { 8399 __os_u ( NULL , su ); 8402 (* jv )-> SObjeAayEmt (jv, aives , ( jsize ) i , obj ); 8403 __dbj_fl_txn_aive ( jv , obj , & su -> _txǼay [ i ]); 8405 __os_u ( NULL , su ); 8407 jsu ; 8411 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1lim ( JNIEnv * jv , jass js , jlg jg1 ) { 8412 jlg jsu = 0 ; 8413 DbEnv * g1 = (DbEnv *) 0 ; 8414 jlg su ; 8416 () jv ; 8417 () js ; 8418 g1 = *( DbEnv **)& jg1 ; 8420 i( jg1 == 0) { 8421 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8425 o = 0; 8426 su = DbEnv_p_g_lim ( g1 ); 8427 i(! DB_RETOK_STD ( o )) { 8428 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8431 jsu = su ; 8432 jsu ; 8436 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1e ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 , j jg4 ) { 8437 DbEnv * g1 = (DbEnv *) 0 ; 8438 g2 ; 8439 g3 ; 8440 u_t32_t g4 ; 8441 db_t_t su ; 8443 () jv ; 8444 () js ; 8445 g1 = *( DbEnv **)& jg1 ; 8446 g2 = () jg2 ; 8447 g3 = () jg3 ; 8448 g4 = ( u_t32_t ) jg4 ; 8450 i( jg1 == 0) { 8451 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8455 su = ( db_t_t ) DbEnv_p_e ( g1 , g2 , g3 , g4 ); 8456 i(! DB_RETOK_STD ( su )) { 8457 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8463 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1oss_1mesge ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jobje jg3 , j jg4 , jobje jg5 ) { 8464 jt jsu = 0 ; 8465 DbEnv * g1 = (DbEnv *) 0 ; 8466 DBT * g2 = (DBT *) 0 ; 8467 DBT * g3 = (DBT *) 0 ; 8468 g4 ; 8469 DB_LSN * g5 = (DB_LSN *) 0 ; 8470 su ; 8471 DBT_LOCKED ldbt2 ; 8472 DBT_LOCKED ldbt3 ; 8473 DB_LSN l5 ; 8475 () jv ; 8476 () js ; 8477 g1 = *( DbEnv **)& jg1 ; 8479 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 8483 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 8486 g4 = () jg4 ; 8488 i( jg5 = NULL ) { 8489 g5 = NULL ; 8491 g5 = & l5 ; 8492 g5 -> fe = (* jv )-> GIFld (jv, jg5 , dbl_fe_fid ); 8493 g5 -> offt = (* jv )-> GIFld (jv, jg5 , 8494 dbl_offt_fid ); 8498 i( jg1 == 0) { 8499 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8503 i( g5 = NULL ) { 8504 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 8509 su = () DbEnv_p_oss_mesge ( g1 , g2 , g3 , g4 , g5 ); 8510 i(! DB_RETOK_REPPMSG ( su )) { 8511 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8514 jsu = ( jt ) su ; 8515 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 8516 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 8518 i( jg5 ! NULL ) { 8519 (* jv )-> SIFld (jv, jg5 , dbl_fe_fid , g5 -> fe ); 8520 (* jv )-> SIFld (jv, jg5 , 8521 dbl_offt_fid , g5 -> offt ); 8524 jsu ; 8528 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1ush ( JNIEnv * jv , jass js , jlg jg1 ) { 8529 DbEnv * g1 = (DbEnv *) 0 ; 8530 db_t_t su ; 8532 () jv ; 8533 () js ; 8534 g1 = *( DbEnv **)& jg1 ; 8536 i( jg1 == 0) { 8537 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8541 su = ( db_t_t ) DbEnv_p_ush ( g1 ); 8542 i(! DB_RETOK_STD ( su )) { 8543 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8549 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1cfig ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jboޗn jg3 ) { 8550 DbEnv * g1 = (DbEnv *) 0 ; 8551 u_t32_t g2 ; 8552 t_bo g3 ; 8553 db_t_t su ; 8555 () jv ; 8556 () js ; 8557 g1 = *( DbEnv **)& jg1 ; 8558 g2 = ( u_t32_t ) jg2 ; 8559 g3 = ( jg3 = JNI_TRUE ); 8561 i( jg1 == 0) { 8562 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8566 su = ( db_t_t ) DbEnv_p_t_cfig ( g1 , g2 , g3 ); 8567 i(! DB_RETOK_STD ( su )) { 8568 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8574 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1a ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 ) { 8575 DbEnv * g1 = (DbEnv *) 0 ; 8576 u_t32_t g2 ; 8577 u_t32_t g3 ; 8578 db_t_t su ; 8580 () jv ; 8581 () js ; 8582 g1 = *( DbEnv **)& jg1 ; 8583 g2 = ( u_t32_t ) jg2 ; 8584 g3 = ( u_t32_t ) jg3 ; 8586 i( jg1 == 0) { 8587 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8591 su = ( db_t_t ) DbEnv_p_t_a ( g1 , g2 , g3 ); 8592 i(! DB_RETOK_STD ( su )) { 8593 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8599 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jt jg3 ) { 8600 DbEnv * g1 = (DbEnv *) 0 ; 8601 DBT * g2 = (DBT *) 0 ; 8602 u_t32_t g3 ; 8603 db_t_t su ; 8604 DBT_LOCKED ldbt2 ; 8606 () jv ; 8607 () js ; 8608 g1 = *( DbEnv **)& jg1 ; 8610 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 1) != 0) { 8613 g3 = ( u_t32_t ) jg3 ; 8615 i( jg1 == 0) { 8616 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8620 su = ( db_t_t ) DbEnv_p_t ( g1 , g2 , g3 ); 8621 i(! DB_RETOK_STD ( su )) { 8622 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8625 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 8629 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1sync ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8630 DbEnv * g1 = (DbEnv *) 0 ; 8631 u_t32_t g2 ; 8632 db_t_t su ; 8634 () jv ; 8635 () js ; 8636 g1 = *( DbEnv **)& jg1 ; 8637 g2 = ( u_t32_t ) jg2 ; 8639 i( jg1 == 0) { 8640 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8644 su = ( db_t_t ) DbEnv_p_sync ( g1 , g2 ); 8645 i(! DB_RETOK_STD ( su )) { 8646 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8652 JNIEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1cfig ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8653 jboޗn jsu = 0 ; 8654 DbEnv * g1 = (DbEnv *) 0 ; 8655 u_t32_t g2 ; 8656 t_bo su ; 8658 () jv ; 8659 () js ; 8660 g1 = *( DbEnv **)& jg1 ; 8661 g2 = ( u_t32_t ) jg2 ; 8663 i( jg1 == 0) { 8664 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8668 o = 0; 8669 su = ( t_bo ) DbEnv_p_g_cfig ( g1 , g2 ); 8670 i(! DB_RETOK_STD ( o )) { 8671 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8674 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 8675 jsu ; 8679 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8680 jobje jsu = 0 ; 8681 DbEnv * g1 = (DbEnv *) 0 ; 8682 u_t32_t g2 ; 8683 DB_REP_STAT * su = 0 ; 8685 () jv ; 8686 () js ; 8687 g1 = *( DbEnv **)& jg1 ; 8688 g2 = ( u_t32_t ) jg2 ; 8690 i( jg1 == 0) { 8691 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8695 o = 0; 8696 su = ( DB_REP_STAT *) DbEnv_p_ ( g1 , g2 ); 8697 i(! DB_RETOK_STD ( o )) { 8698 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8702 jsu = (* jv )-> NewObje (jv, p__ass , p__cڡru ); 8703 i( jsu ! NULL ) 8704 __dbj_fl_p_ ( jv , jsu , su ); 8705 __os_u ( NULL , su ); 8707 jsu ; 8711 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1lim ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 8712 DbEnv * g1 = (DbEnv *) 0 ; 8713 jlg g2 ; 8714 db_t_t su ; 8716 () jv ; 8717 () js ; 8718 g1 = *( DbEnv **)& jg1 ; 8719 g2 = jg2 ; 8721 i( jg1 == 0) { 8722 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8726 su = ( db_t_t ) DbEnv_p_t_lim ( g1 , g2 ); 8727 i(! DB_RETOK_STD ( su )) { 8728 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8734 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1p_1que ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 ) { 8735 DbEnv * g1 = (DbEnv *) 0 ; 8736 u_t32_t g2 ; 8737 u_t32_t g3 ; 8738 db_t_t su ; 8740 () jv ; 8741 () js ; 8742 g1 = *( DbEnv **)& jg1 ; 8743 g2 = ( u_t32_t ) jg2 ; 8744 g3 = ( u_t32_t ) jg3 ; 8746 i( jg1 == 0) { 8747 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8751 su = ( db_t_t ) DbEnv_t_p_que ( g1 , g2 , g3 ); 8752 i(! DB_RETOK_STD ( su )) { 8753 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8759 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1t ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jboޗn jg3 ) { 8760 DbEnv * g1 = (DbEnv *) 0 ; 8761 g2 ; 8762 (* g3 )( DB_ENV *, DBT cڡ *,DBT cڡ *, DB_LSN cڡ *,, u_t32_t ) = ((*)(DB_ENV *,DBT const *,DBT const *,DB_LSN const *,,u_int32_t)) 0 ; 8763 db_t_t su ; 8765 () jv ; 8766 () js ; 8767 g1 = *( DbEnv **)& jg1 ; 8768 g2 = () jg2 ; 8770 g3 = ( jg3 = JNI_TRUE ? __dbj_p_t : NULL ; 8773 i( jg1 == 0) { 8774 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8778 su = ( db_t_t ) DbEnv_p_t_t ( g1 , g2 , g3 ); 8779 i(! DB_RETOK_STD ( su )) { 8780 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8786 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1nses ( JNIEnv * jv , jass js , jlg jg1 ) { 8787 jt jsu = 0 ; 8788 DbEnv * g1 = (DbEnv *) 0 ; 8789 su ; 8791 () jv ; 8792 () js ; 8793 g1 = *( DbEnv **)& jg1 ; 8795 i( jg1 == 0) { 8796 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8800 o = 0; 8801 su = () DbEnv_p_g_nses ( g1 ); 8802 i(! DB_RETOK_STD ( o )) { 8803 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8806 jsu = ( jt ) su ; 8807 jsu ; 8811 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 ) { 8812 jt jsu = 0 ; 8813 DbEnv * g1 = (DbEnv *) 0 ; 8814 su ; 8816 () jv ; 8817 () js ; 8818 g1 = *( DbEnv **)& jg1 ; 8820 i( jg1 == 0) { 8821 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8825 o = 0; 8826 su = () DbEnv_p_g_iܙy ( g1 ); 8827 i(! DB_RETOK_STD ( o )) { 8828 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8831 jsu = ( jt ) su ; 8832 jsu ; 8836 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1timeout ( JNIEnv * jv , jass js , jlg jg1 , j jg2 ) { 8837 jt jsu = 0 ; 8838 DbEnv * g1 = (DbEnv *) 0 ; 8839 g2 ; 8840 u_t32_t su ; 8842 () jv ; 8843 () js ; 8844 g1 = *( DbEnv **)& jg1 ; 8845 g2 = () jg2 ; 8847 i( jg1 == 0) { 8848 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8852 o = 0; 8853 su = ( u_t32_t ) DbEnv_p_g_timeout ( g1 , g2 ); 8854 i(! DB_RETOK_STD ( o )) { 8855 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8858 jsu = ( jt ) su ; 8859 jsu ; 8863 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1nses ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8864 DbEnv * g1 = (DbEnv *) 0 ; 8865 g2 ; 8866 db_t_t su ; 8868 () jv ; 8869 () js ; 8870 g1 = *( DbEnv **)& jg1 ; 8871 g2 = () jg2 ; 8873 i( jg1 == 0) { 8874 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8878 su = ( db_t_t ) DbEnv_p_t_nses ( g1 , g2 ); 8879 i(! DB_RETOK_STD ( su )) { 8880 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8886 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8887 DbEnv * g1 = (DbEnv *) 0 ; 8888 g2 ; 8889 db_t_t su ; 8891 () jv ; 8892 () js ; 8893 g1 = *( DbEnv **)& jg1 ; 8894 g2 = () jg2 ; 8896 i( jg1 == 0) { 8897 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8901 su = ( db_t_t ) DbEnv_p_t_iܙy ( g1 , g2 ); 8902 i(! DB_RETOK_STD ( su )) { 8903 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8909 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jlg jg3 ) { 8910 DbEnv * g1 = (DbEnv *) 0 ; 8911 g2 ; 8912 db_timeout_t g3 ; 8913 db_t_t su ; 8915 () jv ; 8916 () js ; 8917 g1 = *( DbEnv **)& jg1 ; 8918 g2 = () jg2 ; 8919 g3 = ( db_timeout_t ) jg3 ; 8921 i( jg1 == 0) { 8922 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8926 su = ( db_t_t ) DbEnv_p_t_timeout ( g1 , g2 , g3 ); 8927 i(! DB_RETOK_STD ( su )) { 8928 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8934 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1add_1me_1se ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , j jg3 , j jg4 ) { 8935 jt jsu = 0 ; 8936 DbEnv * g1 = (DbEnv *) 0 ; 8937 * g2 = (*) 0 ; 8938 u_t32_t g3 ; 8939 u_t32_t g4 ; 8940 su ; 8942 () jv ; 8943 () js ; 8944 g1 = *( DbEnv **)& jg1 ; 8945 g2 = 0; 8946 i( jg2 ) { 8947 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 8948 i(! g2 ) 0; 8950 g3 = ( u_t32_t ) jg3 ; 8951 g4 = ( u_t32_t ) jg4 ; 8953 i( jg1 == 0) { 8954 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8958 o = 0; 8959 su = () DbEnv_pmgr_add_me_se ( g1 ,(cڡ *) g2 , g3 , g4 ); 8960 i(! DB_RETOK_STD ( o )) { 8961 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8964 jsu = ( jt ) su ; 8965 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 8966 jsu ; 8970 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1g_1ack_1picy ( JNIEnv * jv , jass js , jlg jg1 ) { 8971 DbEnv * g1 = (DbEnv *) 0 ; 8972 db_t_t su ; 8974 () jv ; 8975 () js ; 8976 g1 = *( DbEnv **)& jg1 ; 8978 i( jg1 == 0) { 8979 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8983 su = ( db_t_t ) DbEnv_pmgr_g_ack_picy ( g1 ); 8984 i(! DB_RETOK_STD ( su )) { 8985 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8991 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t_1ack_1picy ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 8992 DbEnv * g1 = (DbEnv *) 0 ; 8993 g2 ; 8994 db_t_t su ; 8996 () jv ; 8997 () js ; 8998 g1 = *( DbEnv **)& jg1 ; 8999 g2 = () jg2 ; 9001 i( jg1 == 0) { 9002 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9006 su = ( db_t_t ) DbEnv_pmgr_t_ack_picy ( g1 , g2 ); 9007 i(! DB_RETOK_STD ( su )) { 9008 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9014 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t_1lol_1se ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 , jt jg3 , j jg4 ) { 9015 DbEnv * g1 = (DbEnv *) 0 ; 9016 * g2 = (*) 0 ; 9017 u_t32_t g3 ; 9018 u_t32_t g4 ; 9019 db_t_t su ; 9021 () jv ; 9022 () js ; 9023 g1 = *( DbEnv **)& jg1 ; 9024 g2 = 0; 9025 i( jg2 ) { 9026 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 9027 i(! g2 ) ; 9029 g3 = ( u_t32_t ) jg3 ; 9030 g4 = ( u_t32_t ) jg4 ; 9032 i( jg1 == 0) { 9033 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9037 su = ( db_t_t ) DbEnv_pmgr_t_lol_se ( g1 ,(cڡ *) g2 , g3 , g4 ); 9038 i(! DB_RETOK_STD ( su )) { 9039 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9042 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 9046 JNIEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1se_1li ( JNIEnv * jv , jass js , jlg jg1 ) { 9047 jobjeAay jsu = 0 ; 9048 DbEnv * g1 = (DbEnv *) 0 ; 9049 __db_pmgr_ses su ; 9051 () jv ; 9052 () js ; 9053 g1 = *( DbEnv **)& jg1 ; 9055 i( jg1 == 0) { 9056 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9060 o = 0; 9061 su = DbEnv_pmgr_se_li ( g1 ); 9062 i(! DB_RETOK_STD ( o )) { 9063 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9067 i , n ; 9069 n = (& su )-> nses ; 9070 jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , pho_ass , 9071 NULL ); 9072 i( jsu = NULL ) 9074 i = 0; i < n ; i++) { 9075 jobje jp_addr = (* jv )-> NewObje (jenv, 9076 pho_ass , pho_cڡru ); 9078 (* jv )-> SObjeFld (jv, jp_addr , pho_ho_fid , 9079 (* jv )-> NewSgUTF (jv, (& su )-> ses [ i ]. ho )); 9080 (* jv )-> SIFld (jv, jp_addr , pho_pt_fid , 9081 (& su )-> ses [ i ]. pt ); 9082 (* jv )-> SIFld (jv, jp_addr , pho_eid_fid , 9083 (& su )-> ses [ i ]. eid ); 9084 (* jv )-> SIFld (jv, jp_addr , pho_us_fid , 9085 (& su )-> ses [ i ]. us ); 9087 i( jp_addr = NULL ) 9090 (* jv )-> SObjeAayEmt (jv, jsu , i , jp_addr ); 9092 __os_u ( NULL , (& su )-> ses ); 9094 jsu ; 9098 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , j jg3 ) { 9099 DbEnv * g1 = (DbEnv *) 0 ; 9100 g2 ; 9101 u_t32_t g3 ; 9102 db_t_t su ; 9104 () jv ; 9105 () js ; 9106 g1 = *( DbEnv **)& jg1 ; 9107 g2 = () jg2 ; 9108 g3 = ( u_t32_t ) jg3 ; 9110 i( jg1 == 0) { 9111 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9115 su = ( db_t_t ) DbEnv_pmgr_t ( g1 , g2 , g3 ); 9116 i(! DB_RETOK_STD ( su )) { 9117 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9123 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9124 jobje jsu = 0 ; 9125 DbEnv * g1 = (DbEnv *) 0 ; 9126 u_t32_t g2 ; 9127 DB_REPMGR_STAT * su = 0 ; 9129 () jv ; 9130 () js ; 9131 g1 = *( DbEnv **)& jg1 ; 9132 g2 = ( u_t32_t ) jg2 ; 9134 i( jg1 == 0) { 9135 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9139 o = 0; 9140 su = ( DB_REPMGR_STAT *) DbEnv_pmgr_ ( g1 , g2 ); 9141 i(! DB_RETOK_STD ( o )) { 9142 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9146 jsu = (* jv )-> NewObje (jv, pmgr__ass , pmgr__cڡru ); 9147 i( jsu ! NULL ) 9148 __dbj_fl_pmgr_ ( jv , jsu , su ); 9149 __os_u ( NULL , su ); 9151 jsu ; 9155 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1 ( JNIEnv * jv , jass js , jt jg1 ) { 9156 jrg jsu = 0 ; 9157 g1 ; 9158 * su = 0 ; 9160 () jv ; 9161 () js ; 9162 g1 = () jg1 ; 9163 su = (*) DbEnv_ ( g1 ); 9164 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 9165 jsu ; 9169 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1maj ( JNIEnv * jv , jass js ) { 9170 jt jsu = 0 ; 9171 su ; 9173 () jv ; 9174 () js ; 9175 su = () DbEnv_g_vsi_maj (); 9176 jsu = ( jt ) su ; 9177 jsu ; 9181 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1m ( JNIEnv * jv , jass js ) { 9182 jt jsu = 0 ; 9183 su ; 9185 () jv ; 9186 () js ; 9187 su = () DbEnv_g_vsi_m (); 9188 jsu = ( jt ) su ; 9189 jsu ; 9193 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1tch ( JNIEnv * jv , jass js ) { 9194 jt jsu = 0 ; 9195 su ; 9197 () jv ; 9198 () js ; 9199 su = () DbEnv_g_vsi_tch (); 9200 jsu = ( jt ) su ; 9201 jsu ; 9205 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1rg ( JNIEnv * jv , jass js ) { 9206 jrg jsu = 0 ; 9207 * su = 0 ; 9209 () jv ; 9210 () js ; 9211 su = (*) DbEnv_g_vsi_rg (); 9212 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 9213 jsu ; 9217 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_de_1DbLock ( JNIEnv * jv , jass js , jlg jg1 ) { 9218 DbLock * g1 = (DbLock *) 0 ; 9220 () jv ; 9221 () js ; 9222 g1 = *( DbLock **)& jg1 ; 9224 i( jg1 == 0) { 9225 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9228 de_DbLock ( g1 ); 9233 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbLogc_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9234 DbLogc * g1 = (DbLogc *) 0 ; 9235 u_t32_t g2 ; 9236 db_t_t su ; 9238 () jv ; 9239 () js ; 9240 g1 = *( DbLogc **)& jg1 ; 9241 g2 = ( u_t32_t ) jg2 ; 9243 i( jg1 == 0) { 9244 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9248 su = ( db_t_t ) DbLogc_o ( g1 , g2 ); 9249 i(! DB_RETOK_STD ( su )) { 9250 __dbj_throw ( jv , su , NULL , NULL, NULL); 9256 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbLogc_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 , jobje jg3 , j jg4 ) { 9257 jt jsu = 0 ; 9258 DbLogc * g1 = (DbLogc *) 0 ; 9259 DB_LSN * g2 = (DB_LSN *) 0 ; 9260 DBT * g3 = (DBT *) 0 ; 9261 u_t32_t g4 ; 9262 su ; 9263 DB_LSN l2 ; 9264 DBT_LOCKED ldbt3 ; 9266 () jv ; 9267 () js ; 9268 g1 = *( DbLogc **)& jg1 ; 9270 i( jg2 = NULL ) { 9271 g2 = NULL ; 9273 g2 = & l2 ; 9274 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 9275 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 9276 dbl_offt_fid ); 9280 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 9283 g4 = ( u_t32_t ) jg4 ; 9285 i( jg1 == 0) { 9286 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9290 i( g2 = NULL ) { 9291 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 9296 su = () DbLogc_g ( g1 , g2 , g3 , g4 ); 9297 i(! DB_RETOK_LGGET ( su )) { 9298 __dbj_throw ( jv , su , NULL , NULL, NULL); 9301 jsu = ( jt ) su ; 9303 i( jg2 ! NULL ) { 9304 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 9305 (* jv )-> SIFld (jv, jg2 , 9306 dbl_offt_fid , g2 -> offt ); 9309 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 9310 jsu ; 9314 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbLogc_1vsi ( JNIEnv * jv , jass js , jlg jg1 , j jg2 ) { 9315 jt jsu = 0 ; 9316 DbLogc * g1 = (DbLogc *) 0 ; 9317 u_t32_t g2 ; 9318 u_t32_t su ; 9320 () jv ; 9321 () js ; 9322 g1 = *( DbLogc **)& jg1 ; 9323 g2 = ( u_t32_t ) jg2 ; 9325 i( jg1 == 0) { 9326 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9330 o = 0; 9331 su = ( u_t32_t ) DbLogc_vsi ( g1 , g2 ); 9332 i(! DB_RETOK_STD ( o )) { 9333 __dbj_throw ( jv , o , NULL , NULL, NULL); 9336 jsu = ( jt ) su ; 9337 jsu ; 9341 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 ) { 9342 jt jsu = 0 ; 9343 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9344 DB_CACHE_PRIORITY su ; 9346 () jv ; 9347 () js ; 9348 g1 = *( DbMpoFe **)& jg1 ; 9350 i( jg1 == 0) { 9351 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9355 o = 0; 9356 su = ( DB_CACHE_PRIORITY ) DbMpoFe_g_iܙy ( g1 ); 9357 i(! DB_RETOK_STD ( o )) { 9358 __dbj_throw ( jv , o , NULL , NULL, NULL); 9361 jsu = ( jt ) su ; 9362 jsu ; 9366 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9367 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9368 DB_CACHE_PRIORITY g2 ; 9369 db_t_t su ; 9371 () jv ; 9372 () js ; 9373 g1 = *( DbMpoFe **)& jg1 ; 9374 g2 = ( DB_CACHE_PRIORITY ) jg2 ; 9376 i( jg1 == 0) { 9377 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9381 su = ( db_t_t ) DbMpoFe_t_iܙy ( g1 , g2 ); 9382 i(! DB_RETOK_STD ( su )) { 9383 __dbj_throw ( jv , su , NULL , NULL, NULL); 9389 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 9390 jt jsu = 0 ; 9391 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9392 u_t32_t su ; 9394 () jv ; 9395 () js ; 9396 g1 = *( DbMpoFe **)& jg1 ; 9398 i( jg1 == 0) { 9399 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9403 o = 0; 9404 su = ( u_t32_t ) DbMpoFe_g_ags ( g1 ); 9405 i(! DB_RETOK_STD ( o )) { 9406 __dbj_throw ( jv , o , NULL , NULL, NULL); 9409 jsu = ( jt ) su ; 9410 jsu ; 9414 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 , jboޗn jg3 ) { 9415 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9416 u_t32_t g2 ; 9417 t_bo g3 ; 9418 db_t_t su ; 9420 () jv ; 9421 () js ; 9422 g1 = *( DbMpoFe **)& jg1 ; 9423 g2 = ( u_t32_t ) jg2 ; 9424 g3 = ( jg3 = JNI_TRUE ); 9426 i( jg1 == 0) { 9427 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9431 su = ( db_t_t ) DbMpoFe_t_ags ( g1 , g2 , g3 ); 9432 i(! DB_RETOK_STD ( su )) { 9433 __dbj_throw ( jv , su , NULL , NULL, NULL); 9439 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1maxsize ( JNIEnv * jv , jass js , jlg jg1 ) { 9440 jlg jsu = 0 ; 9441 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9442 jlg su ; 9444 () jv ; 9445 () js ; 9446 g1 = *( DbMpoFe **)& jg1 ; 9448 i( jg1 == 0) { 9449 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9453 o = 0; 9454 su = DbMpoFe_g_maxsize ( g1 ); 9455 i(! DB_RETOK_STD ( o )) { 9456 __dbj_throw ( jv , o , NULL , NULL, NULL); 9459 jsu = su ; 9460 jsu ; 9464 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1maxsize ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 9465 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9466 jlg g2 ; 9467 db_t_t su ; 9469 () jv ; 9470 () js ; 9471 g1 = *( DbMpoFe **)& jg1 ; 9472 g2 = jg2 ; 9474 i( jg1 == 0) { 9475 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9479 su = ( db_t_t ) DbMpoFe_t_maxsize ( g1 , g2 ); 9480 i(! DB_RETOK_STD ( su )) { 9481 __dbj_throw ( jv , su , NULL , NULL, NULL); 9487 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_w_1DbSequ ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9488 jlg jsu = 0 ; 9489 DB * g1 = (DB *) 0 ; 9490 u_t32_t g2 ; 9491 DbSequ * su = 0 ; 9493 () jv ; 9494 () js ; 9495 g1 = *( DB **)& jg1 ; 9496 g2 = ( u_t32_t ) jg2 ; 9498 o = 0; 9499 su = ( DbSequ *) w_DbSequ ( g1 , g2 ); 9500 i(! DB_RETOK_STD ( o )) { 9501 __dbj_throw ( jv , o , NULL , NULL, NULL); 9504 *( DbSequ **)& jsu = su ; 9505 jsu ; 9509 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9510 DbSequ * g1 = (DbSequence *) 0 ; 9511 u_t32_t g2 ; 9512 db_t_t su ; 9514 () jv ; 9515 () js ; 9516 g1 = *( DbSequ **)& jg1 ; 9517 g2 = ( u_t32_t ) jg2 ; 9519 i( jg1 == 0) { 9520 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9524 su = ( db_t_t ) DbSequ_o ( g1 , g2 ); 9525 i(! DB_RETOK_STD ( su )) { 9526 __dbj_throw ( jv , su , NULL , NULL, NULL); 9532 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 , j jg4 ) { 9533 jlg jsu = 0 ; 9534 DbSequ * g1 = (DbSequence *) 0 ; 9535 DB_TXN * g2 = (DB_TXN *) 0 ; 9536 t32_t g3 ; 9537 u_t32_t g4 ; 9538 db_q_t su ; 9540 () jv ; 9541 () js ; 9542 g1 = *( DbSequ **)& jg1 ; 9543 g2 = *( DB_TXN **)& jg2 ; 9544 g3 = ( t32_t ) jg3 ; 9545 g4 = ( u_t32_t ) jg4 ; 9547 i( jg1 == 0) { 9548 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9552 o = 0; 9553 su = ( db_q_t ) DbSequ_g ( g1 , g2 , g3 , g4 ); 9554 i(! DB_RETOK_STD ( o )) { 9555 __dbj_throw ( jv , o , NULL , NULL, NULL); 9558 jsu = ( jlg ) su ; 9559 jsu ; 9563 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1chesize ( JNIEnv * jv , jass js , jlg jg1 ) { 9564 jt jsu = 0 ; 9565 DbSequ * g1 = (DbSequence *) 0 ; 9566 t32_t su ; 9568 () jv ; 9569 () js ; 9570 g1 = *( DbSequ **)& jg1 ; 9572 i( jg1 == 0) { 9573 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9577 o = 0; 9578 su = ( t32_t ) DbSequ_g_chesize ( g1 ); 9579 i(! DB_RETOK_STD ( o )) { 9580 __dbj_throw ( jv , o , NULL , NULL, NULL); 9583 jsu = ( jt ) su ; 9584 jsu ; 9588 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1db ( JNIEnv * jv , jass js , jlg jg1 ) { 9589 jlg jsu = 0 ; 9590 DbSequ * g1 = (DbSequence *) 0 ; 9591 DB * su = 0 ; 9593 () jv ; 9594 () js ; 9595 g1 = *( DbSequ **)& jg1 ; 9597 i( jg1 == 0) { 9598 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9602 o = 0; 9603 su = ( DB *) DbSequ_g_db ( g1 ); 9604 i(! DB_RETOK_STD ( o )) { 9605 __dbj_throw ( jv , o , NULL , NULL, NULL); 9608 *( DB **)& jsu = su ; 9609 jsu ; 9613 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 ) { 9614 jt jsu = 0 ; 9615 DbSequ * g1 = (DbSequence *) 0 ; 9616 u_t32_t su ; 9618 () jv ; 9619 () js ; 9620 g1 = *( DbSequ **)& jg1 ; 9622 i( jg1 == 0) { 9623 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9627 o = 0; 9628 su = ( u_t32_t ) DbSequ_g_ags ( g1 ); 9629 i(! DB_RETOK_STD ( o )) { 9630 __dbj_throw ( jv , o , NULL , NULL, NULL); 9633 jsu = ( jt ) su ; 9634 jsu ; 9638 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1key ( JNIEnv * jv , jass js , jlg jg1 , jobje jg2 ) { 9639 DbSequ * g1 = (DbSequence *) 0 ; 9640 DBT * g2 = (DBT *) 0 ; 9641 db_t_t su ; 9642 DBT_LOCKED ldbt2 ; 9644 () jv ; 9645 () js ; 9646 g1 = *( DbSequ **)& jg1 ; 9648 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 9652 i( jg1 == 0) { 9653 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9657 su = ( db_t_t ) DbSequ_g_key ( g1 , g2 ); 9658 i(! DB_RETOK_STD ( su )) { 9659 __dbj_throw ( jv , su , NULL , NULL, NULL); 9662 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 9666 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1nge_1m ( JNIEnv * jv , jass js , jlg jg1 ) { 9667 jlg jsu = 0 ; 9668 DbSequ * g1 = (DbSequence *) 0 ; 9669 db_q_t su ; 9671 () jv ; 9672 () js ; 9673 g1 = *( DbSequ **)& jg1 ; 9675 i( jg1 == 0) { 9676 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9680 o = 0; 9681 su = ( db_q_t ) DbSequ_g_nge_m ( g1 ); 9682 i(! DB_RETOK_STD ( o )) { 9683 __dbj_throw ( jv , o , NULL , NULL, NULL); 9686 jsu = ( jlg ) su ; 9687 jsu ; 9691 JNIEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1nge_1max ( JNIEnv * jv , jass js , jlg jg1 ) { 9692 jlg jsu = 0 ; 9693 DbSequ * g1 = (DbSequence *) 0 ; 9694 db_q_t su ; 9696 () jv ; 9697 () js ; 9698 g1 = *( DbSequ **)& jg1 ; 9700 i( jg1 == 0) { 9701 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9705 o = 0; 9706 su = ( db_q_t ) DbSequ_g_nge_max ( g1 ); 9707 i(! DB_RETOK_STD ( o )) { 9708 __dbj_throw ( jv , o , NULL , NULL, NULL); 9711 jsu = ( jlg ) su ; 9712 jsu ; 9716 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1l_1vue ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 ) { 9717 DbSequ * g1 = (DbSequence *) 0 ; 9718 db_q_t g2 ; 9719 db_t_t su ; 9721 () jv ; 9722 () js ; 9723 g1 = *( DbSequ **)& jg1 ; 9724 g2 = ( db_q_t ) jg2 ; 9726 i( jg1 == 0) { 9727 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9731 su = ( db_t_t ) DbSequ_l_vue ( g1 , g2 ); 9732 i(! DB_RETOK_STD ( su )) { 9733 __dbj_throw ( jv , su , NULL , NULL, NULL); 9739 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1ݒ ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jobje jg3 , jt jg4 ) { 9740 DbSequ * g1 = (DbSequence *) 0 ; 9741 DB_TXN * g2 = (DB_TXN *) 0 ; 9742 DBT * g3 = (DBT *) 0 ; 9743 u_t32_t g4 ; 9744 db_t_t su ; 9745 DBT_LOCKED ldbt3 ; 9747 () jv ; 9748 () js ; 9749 g1 = *( DbSequ **)& jg1 ; 9750 g2 = *( DB_TXN **)& jg2 ; 9752 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 9755 g4 = ( u_t32_t ) jg4 ; 9757 i( jg1 == 0) { 9758 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9762 su = ( db_t_t ) DbSequ_ݒ ( g1 , g2 , g3 , g4 ); 9763 i(! DB_RETOK_STD ( su )) { 9764 __dbj_throw ( jv , su , NULL , NULL, NULL); 9767 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 9771 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1move0 ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 9772 DbSequ * g1 = (DbSequence *) 0 ; 9773 DB_TXN * g2 = (DB_TXN *) 0 ; 9774 u_t32_t g3 ; 9775 db_t_t su ; 9777 () jv ; 9778 () js ; 9779 g1 = *( DbSequ **)& jg1 ; 9780 g2 = *( DB_TXN **)& jg2 ; 9781 g3 = ( u_t32_t ) jg3 ; 9783 i( jg1 == 0) { 9784 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9788 su = ( db_t_t ) DbSequ_move ( g1 , g2 , g3 ); 9789 i(! DB_RETOK_STD ( su )) { 9790 __dbj_throw ( jv , su , NULL , NULL, NULL); 9796 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9797 DbSequ * g1 = (DbSequence *) 0 ; 9798 t32_t g2 ; 9799 db_t_t su ; 9801 () jv ; 9802 () js ; 9803 g1 = *( DbSequ **)& jg1 ; 9804 g2 = ( t32_t ) jg2 ; 9806 i( jg1 == 0) { 9807 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9811 su = ( db_t_t ) DbSequ_t_chesize ( g1 , g2 ); 9812 i(! DB_RETOK_STD ( su )) { 9813 __dbj_throw ( jv , su , NULL , NULL, NULL); 9819 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9820 DbSequ * g1 = (DbSequence *) 0 ; 9821 u_t32_t g2 ; 9822 db_t_t su ; 9824 () jv ; 9825 () js ; 9826 g1 = *( DbSequ **)& jg1 ; 9827 g2 = ( u_t32_t ) jg2 ; 9829 i( jg1 == 0) { 9830 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9834 su = ( db_t_t ) DbSequ_t_ags ( g1 , g2 ); 9835 i(! DB_RETOK_STD ( su )) { 9836 __dbj_throw ( jv , su , NULL , NULL, NULL); 9842 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1nge ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jlg jg3 ) { 9843 DbSequ * g1 = (DbSequence *) 0 ; 9844 db_q_t g2 ; 9845 db_q_t g3 ; 9846 db_t_t su ; 9848 () jv ; 9849 () js ; 9850 g1 = *( DbSequ **)& jg1 ; 9851 g2 = ( db_q_t ) jg2 ; 9852 g3 = ( db_q_t ) jg3 ; 9854 i( jg1 == 0) { 9855 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9859 su = ( db_t_t ) DbSequ_t_nge ( g1 , g2 , g3 ); 9860 i(! DB_RETOK_STD ( su )) { 9861 __dbj_throw ( jv , su , NULL , NULL, NULL); 9867 JNIEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9868 jobje jsu = 0 ; 9869 DbSequ * g1 = (DbSequence *) 0 ; 9870 u_t32_t g2 ; 9871 DB_SEQUENCE_STAT * su = 0 ; 9873 () jv ; 9874 () js ; 9875 g1 = *( DbSequ **)& jg1 ; 9876 g2 = ( u_t32_t ) jg2 ; 9878 i( jg1 == 0) { 9879 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9883 o = 0; 9884 su = ( DB_SEQUENCE_STAT *) DbSequ_ ( g1 , g2 ); 9885 i(! DB_RETOK_STD ( o )) { 9886 __dbj_throw ( jv , o , NULL , NULL, NULL); 9890 jsu = (* jv )-> NewObje (jv, q__ass , q__cڡru ); 9891 i( jsu ! NULL ) 9892 __dbj_fl_q_ ( jv , jsu , su ); 9893 __os_u ( NULL , su ); 9895 jsu ; 9899 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1abt0 ( JNIEnv * jv , jass js , jlg jg1 ) { 9900 DbTxn * g1 = (DbTxn *) 0 ; 9901 db_t_t su ; 9903 () jv ; 9904 () js ; 9905 g1 = *( DbTxn **)& jg1 ; 9907 i( jg1 == 0) { 9908 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9912 su = ( db_t_t ) DbTxn_abt ( g1 ); 9913 i(! DB_RETOK_STD ( su )) { 9914 __dbj_throw ( jv , su , NULL , NULL, NULL); 9920 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1comm0 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9921 DbTxn * g1 = (DbTxn *) 0 ; 9922 u_t32_t g2 ; 9923 db_t_t su ; 9925 () jv ; 9926 () js ; 9927 g1 = *( DbTxn **)& jg1 ; 9928 g2 = ( u_t32_t ) jg2 ; 9930 i( jg1 == 0) { 9931 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9935 su = ( db_t_t ) DbTxn_comm ( g1 , g2 ); 9936 i(! DB_RETOK_STD ( su )) { 9937 __dbj_throw ( jv , su , NULL , NULL, NULL); 9943 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1disrd0 ( JNIEnv * jv , jass js , jlg jg1 , jt jg2 ) { 9944 DbTxn * g1 = (DbTxn *) 0 ; 9945 u_t32_t g2 ; 9946 db_t_t su ; 9948 () jv ; 9949 () js ; 9950 g1 = *( DbTxn **)& jg1 ; 9951 g2 = ( u_t32_t ) jg2 ; 9953 i( jg1 == 0) { 9954 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9958 su = ( db_t_t ) DbTxn_disrd ( g1 , g2 ); 9959 i(! DB_RETOK_STD ( su )) { 9960 __dbj_throw ( jv , su , NULL , NULL, NULL); 9966 JNIEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1g_1me ( JNIEnv * jv , jass js , jlg jg1 ) { 9967 jrg jsu = 0 ; 9968 DbTxn * g1 = (DbTxn *) 0 ; 9969 * su = 0 ; 9971 () jv ; 9972 () js ; 9973 g1 = *( DbTxn **)& jg1 ; 9975 i( jg1 == 0) { 9976 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9980 o = 0; 9981 su = (*) DbTxn_g_me ( g1 ); 9982 i(! DB_RETOK_STD ( o )) { 9983 __dbj_throw ( jv , o , NULL , NULL, TXN2JDBENV ); 9986 if( su jsu = (* jv )-> NewSgUTF (jenv,esult); 9987 jsu ; 9991 JNIEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1id ( JNIEnv * jv , jass js , jlg jg1 ) { 9992 jt jsu = 0 ; 9993 DbTxn * g1 = (DbTxn *) 0 ; 9994 u_t32_t su ; 9996 () jv ; 9997 () js ; 9998 g1 = *( DbTxn **)& jg1 ; 10000 i( jg1 == 0) { 10001 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10004 su = ( u_t32_t ) DbTxn_id ( g1 ); 10005 jsu = ( jt ) su ; 10006 jsu ; 10010 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1e ( JNIEnv * jv , jass js , jlg jg1 , jbyAay jg2 ) { 10011 DbTxn * g1 = (DbTxn *) 0 ; 10012 u_t8_t * g2 = (u_int8_t *) 0 ; 10013 db_t_t su ; 10015 () jv ; 10016 () js ; 10017 g1 = *( DbTxn **)& jg1 ; 10019 g2 = ( u_t8_t *)(* jv )-> GByAayEmts (jv, jg2 , NULL ); 10022 i( jg1 == 0) { 10023 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10027 i((* jv )-> GAayLgth (jv, jg2 < DB_XIDDATASIZE ) { 10028 __dbj_throw ( jv , EINVAL , 10029 "DbTxn.giday mu b>128 bys", NULL , 10030 TXN2JDBENV ); 10035 su = ( db_t_t ) DbTxn_e ( g1 , g2 ); 10036 i(! DB_RETOK_STD ( su )) { 10037 __dbj_throw ( jv , su , NULL , NULL, TXN2JDBENV ); 10041 (* jv )-> RByAayEmts (jv, jg2 , ( jby *) g2 , 0); 10046 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1t_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jlg jg2 , jt jg3 ) { 10047 DbTxn * g1 = (DbTxn *) 0 ; 10048 db_timeout_t g2 ; 10049 u_t32_t g3 ; 10050 db_t_t su ; 10052 () jv ; 10053 () js ; 10054 g1 = *( DbTxn **)& jg1 ; 10055 g2 = ( db_timeout_t ) jg2 ; 10056 g3 = ( u_t32_t ) jg3 ; 10058 i( jg1 == 0) { 10059 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10063 su = ( db_t_t ) DbTxn_t_timeout ( g1 , g2 , g3 ); 10064 i(! DB_RETOK_STD ( su )) { 10065 __dbj_throw ( jv , su , NULL , NULL, TXN2JDBENV ); 10071 JNIEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1t_1me ( JNIEnv * jv , jass js , jlg jg1 , jrg jg2 ) { 10072 DbTxn * g1 = (DbTxn *) 0 ; 10073 * g2 = (*) 0 ; 10074 db_t_t su ; 10076 () jv ; 10077 () js ; 10078 g1 = *( DbTxn **)& jg1 ; 10079 g2 = 0; 10080 i( jg2 ) { 10081 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 10082 i(! g2 ) ; 10085 i( jg1 == 0) { 10086 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10090 su = ( db_t_t ) DbTxn_t_me ( g1 ,(cڡ *) g2 ); 10091 i(! DB_RETOK_STD ( su )) { 10092 __dbj_throw ( jv , su , NULL , NULL, TXN2JDBENV ); 10095 i( g2 (* jv )-> RSgUTFChs (jv, jg2 ,rg2); 10099 #ifde __lulus @../lock/lock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/log.h " 15 __lock_lock __P (( DB_LOCKTAB *, 16 __db_lock *, DB_LOCKER *, u_t32_t )); 17 __lock_gobj 18 __P (( DB_LOCKTAB *, cڡ DBT *, u_t32_t , , DB_LOCKOBJ **)); 19 __lock_g_i __P (( DB_ENV *, 20 u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)); 21 __lock_h_locks __P (( DB_LOCKTAB *, DB_LOCKER *, u_t32_t )); 22 __lock_is_ __P (( DB_LOCKTAB *, roff_t , DB_LOCKER *)); 23 __lock_put_ __P (( DB_LOCKTAB *, 24 __db_lock *, u_t32_t , u_int32_t)); 25 __lock_put_nock __P (( DB_ENV *, DB_LOCK *, *, u_t32_t )); 26 __lock_move_wa __P (( DB_LOCKTAB *, 27 DB_LOCKOBJ *, __db_lock *, db_us_t )); 28 __lock_ade __P (( DB_ENV *, DB_LOCK *, DB_LOCKER *)); 29 __lock_vec_i __P (( DB_ENV *, 30 u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)); 32 cڡ g__db_lock_vid [] = "%s: Lock isoonger valid"; 33 cڡ g__db_lock_vid [] = "Locker isot valid"; 43 $__lock_vec_ ( dbv , lid , ags , li , i , ip ) 44 DB_ENV * dbv ; 45 u_t32_t lid , ags ; 46 i ; 47 DB_LOCKREQ * li , ** ip ; 49 DB_THREAD_INFO * ; 50 t ; 52 `PANIC_CHECK ( dbv ); 53 `ENV_REQUIRES_CONFIG ( dbv , 54 dbv -> lk_hd , "DB_ENV->lock_vec", DB_INIT_LOCK ); 57 i(( t = `__db_fchk ( dbv , 58 "DB_ENV->lock_vec", ags , DB_LOCK_NOWAIT )) != 0) 59 ( t ); 61 `ENV_ENTER ( dbv , ); 62 `REPLICATION_WRAP ( dbv , 63 ( `__lock_vec_i ( dbv , lid , ags , li , i , ip )), t ); 64 `ENV_LEAVE ( dbv , ); 65 ( t ); 66 } } 69 $__lock_vec_i ( dbv , lid , ags , li , i , ip ) 70 DB_ENV * dbv ; 71 u_t32_t lid , ags ; 72 i ; 73 DB_LOCKREQ * li , ** ip ; 75 DB_LOCKER * sh_lock ; 76 t ; 78 i(( t = 79 `__lock_glock ( dbv -> lk_hd , lid , 0, & sh_lock )) == 0) 80 t = `__lock_vec ( dbv , sh_lock , ags , li , i , ip ); 81 ( t ); 82 } } 98 $__lock_vec ( dbv , sh_lock , ags , li , i , ip ) 99 DB_ENV * dbv ; 100 DB_LOCKER * sh_lock ; 101 u_t32_t ags ; 102 i ; 103 DB_LOCKREQ * li , ** ip ; 105 __db_lock * , * xt_lock ; 106 DB_LOCK lock ; DB_LOCKOBJ * sh_obj ; 107 DB_LOCKREGION * gi ; 108 DB_LOCKTAB * ; 109 DBT * objli , * ; 110 u_t32_t ndx ; 111 did_abt , i , t , run_dd , upgde , wres ; 114 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 117 = dbv -> lk_hd ; 118 gi = -> gfo . imy ; 120 run_dd = 0; 121 `LOCK_SYSTEM_LOCK ( dbv ); 122 i = 0, t = 0; i < i &&et == 0; i++) 123 li [ i ]. ) { 124 DB_LOCK_GET_TIMEOUT : 125 `LF_SET ( DB_LOCK_SET_TIMEOUT ); 127 DB_LOCK_GET : 128 i( `IS_RECOVERING ( dbv )) { 129 `LOCK_INIT ( li [ i ]. lock ); 132 t = `__lock_g_ ( , 133 sh_lock , ags , li [ i ]. obj , 134 li [ i ]. mode ,i[i]. timeout , &li[i]. lock ); 136 DB_LOCK_INHERIT : 137 t = `__lock_h_locks ( , sh_lock , ags ); 139 DB_LOCK_PUT : 140 t = `__lock_put_nock ( dbv , 141 & li [ i ]. lock , & run_dd , ags ); 143 DB_LOCK_PUT_ALL : 144 DB_LOCK_PUT_READ : 145 DB_LOCK_UPGRADE_WRITE : 155 i( sh_lock = NULL || 156 `F_ISSET ( sh_lock , DB_LOCKER_DELETED )) 163 upgde = 0; 164 wres = 1; 165 i( li [ i ]. = DB_LOCK_PUT_READ ) 166 wres = 0; 167 i( li [ i ]. = DB_LOCK_UPGRADE_WRITE ) { 168 i( `F_ISSET ( sh_lock , DB_LOCKER_DIRTY )) 169 upgde = 1; 170 wres = 0; 172 objli = li [ i ]. obj ; 173 i( objli ! NULL ) { 179 objli -> size = 180 sh_lock -> nwres * ( DBT ); 181 i(( t = `__os_mloc ( dbv , 182 objli -> size , &objli-> da )) != 0) 183 up_de ; 184 `memt ( objli -> da , 0, objli-> size ); 185 = ( DBT * objli -> da ; 187 = NULL ; 189 `F_SET ( sh_lock , DB_LOCKER_DELETED ); 192 = `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock ); 193 ! NULL ; xt_lock ) { 194 sh_obj = ( DB_LOCKOBJ *) 195 (( u_t8_t *) +p-> obj ); 196 xt_lock = `SH_LIST_NEXT ( , 197 lock_lks , __db_lock ); 198 i( wres == 1 || 199 -> mode = DB_LOCK_READ || 200 -> mode = DB_LOCK_READ_UNCOMMITTED ) { 201 `SH_LIST_REMOVE ( , 202 lock_lks , __db_lock ); 203 sh_obj = ( DB_LOCKOBJ *) 204 (( u_t8_t *) +p-> obj ); 205 ndx = sh_obj -> dx ; 206 `OBJECT_LOCK_NDX ( , ndx ); 212 sh_lock -> ocks --; 213 i( `IS_WRITELOCK ( -> mode )) 214 sh_lock -> nwres --; 215 t = `__lock_put_ ( , , 216 sh_obj -> dx , 217 DB_LOCK_FREE | DB_LOCK_DOALL ); 218 `OBJECT_UNLOCK ( , ndx ); 219 i( t != 0) 223 i( objli ! NULL ) { 224 `DB_ASSERT ( dbv , ( u_t8_t *) < 225 ( u_t8_t *) objli -> da + 226 objli -> size ); 227 -> da = `SH_DBT_PTR (& sh_obj -> lockobj ); 228 -> size = sh_obj -> lockobj .size; 229 ++; 232 i( t != 0) 233 up_de ; 235 i( objli ! NULL ) 236 i(( t = `__lock_fix_li ( dbv , 237 objli , sh_lock -> nwres )) != 0) 238 up_de ; 239 li [ i ]. ) { 240 DB_LOCK_UPGRADE_WRITE : 241 i( upgde != 1) 242 up_de ; 243 `SH_LIST_FOREACH ( , & sh_lock -> hdby , 244 lock_lks , __db_lock ) { 245 i( -> mode ! DB_LOCK_WWRITE ) 247 lock . off = `R_OFFSET (& -> gfo , ); 248 lock . g = ->gen; 249 `F_SET ( sh_lock , DB_LOCKER_INABORT ); 250 i(( t = `__lock_g_ ( , 251 sh_lock , ags | DB_LOCK_UPGRADE , 252 NULL , DB_LOCK_WRITE , 0, & lock )) !=0) 255 up_de : 257 DB_LOCK_PUT_READ : 258 DB_LOCK_PUT_ALL : 259 `F_CLR ( sh_lock , DB_LOCKER_DELETED ); 265 DB_LOCK_PUT_OBJ : 267 `OBJECT_LOCK ( , gi , li [ i ]. obj , ndx ); 268 i(( t = `__lock_gobj ( , li [ i ]. obj , 269 ndx , 0, & sh_obj )!0 || sh_obj = NULL ) { 270 i( t == 0) 271 t = EINVAL ; 272 `OBJECT_UNLOCK ( , ndx ); 282 = `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock ); 283 t =0 && ! NULL ; 284 = `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock )) 285 t = `__lock_put_ ( , , ndx , 286 DB_LOCK_UNLINK | 287 DB_LOCK_NOPROMOTE | DB_LOCK_DOALL ); 294 = `SH_TAILQ_FIRST (& sh_obj -> hds , __db_lock ); 295 t =0 && ! NULL ; 296 = xt_lock ) { 297 xt_lock = `SH_TAILQ_NEXT ( , lks , __db_lock ); 298 t = `__lock_put_ ( , , ndx , 299 DB_LOCK_UNLINK | 300 DB_LOCK_NOPROMOTE | DB_LOCK_DOALL ); 302 `OBJECT_UNLOCK ( , ndx ); 305 DB_LOCK_TIMEOUT : 306 t = `__lock_t_timeout_ ( dbv , 307 sh_lock , 0, DB_SET_TXN_NOW ); 310 DB_LOCK_TRADE : 325 t = `__lock_ade ( dbv , & li [ i ]. lock , sh_lock ); 327 #i `defed ( DEBUG && defed( HAVE_STATISTICS ) 328 DB_LOCK_DUMP : 329 i( sh_lock = NULL || 330 `F_ISSET ( sh_lock , DB_LOCKER_DELETED )) 333 `SH_LIST_FOREACH ( 334 , & sh_lock -> hdby , lock_lks , __db_lock ) 335 `__lock_ock ( , NULL , , 1); 339 `__db_rx ( dbv , 340 "Invidock oti: %d", li [ i ]. ); 341 t = EINVAL ; 345 i( t =0 && gi -> de ! DB_LOCK_NORUN && 346 ( gi -> ed_dd || `timeecist (&gi-> xt_timeout ))) 347 run_dd = 1; 348 `LOCK_SYSTEM_UNLOCK ( dbv ); 350 i( run_dd ) 351 () `__lock_de ( dbv , gi -> de , & did_abt ); 353 i( t !0 && ip ! NULL ) 354 * ip = & li [ i - 1]; 356 ( t ); 357 } } 367 $__lock_g_ ( dbv , lock , ags , obj , lock_mode , lock ) 368 DB_ENV * dbv ; 369 u_t32_t lock , ags ; 370 cڡ DBT * obj ; 371 db_lockmode_t lock_mode ; 372 DB_LOCK * lock ; 374 DB_THREAD_INFO * ; 375 t ; 377 `PANIC_CHECK ( dbv ); 378 `ENV_REQUIRES_CONFIG ( dbv , 379 dbv -> lk_hd , "DB_ENV->lock_g", DB_INIT_LOCK ); 382 i(( t = `__db_fchk ( dbv , "DB_ENV->lock_g", ags , 383 DB_LOCK_NOWAIT | DB_LOCK_UPGRADE | DB_LOCK_SWITCH )) != 0) 384 ( t ); 386 `ENV_ENTER ( dbv , ); 387 `REPLICATION_WRAP ( dbv , 388 ( `__lock_g_i ( dbv , lock , ags , obj , lock_mode , lock )), t ); 389 `ENV_LEAVE ( dbv , ); 390 ( t ); 391 } } 394 $__lock_g_i ( dbv , lock , ags , obj , lock_mode , lock ) 395 DB_ENV * dbv ; 396 u_t32_t lock , ags ; 397 cڡ DBT * obj ; 398 db_lockmode_t lock_mode ; 399 DB_LOCK * lock ; 401 DB_LOCKER * sh_lock ; 402 DB_LOCKREGION * gi ; 403 t ; 405 `COMPQUIET ( gi , NULL ); 407 gi = dbv -> lk_hd -> gfo . imy ; 409 `LOCK_SYSTEM_LOCK ( dbv ); 410 `LOCK_LOCKERS ( dbv , gi ); 411 t = `__lock_glock_t ( dbv -> lk_hd , lock , 0, & sh_lock ); 412 `UNLOCK_LOCKERS ( dbv , gi ); 413 i( t == 0) 414 t = `__lock_g_ ( dbv -> lk_hd , 415 sh_lock , ags , obj , lock_mode , 0, lock ); 416 `LOCK_SYSTEM_UNLOCK ( dbv ); 417 ( t ); 418 } } 428 $__lock_g ( dbv , lock , ags , obj , lock_mode , lock ) 429 DB_ENV * dbv ; 430 DB_LOCKER * lock ; 431 u_t32_t ags ; 432 cڡ DBT * obj ; 433 db_lockmode_t lock_mode ; 434 DB_LOCK * lock ; 436 DB_LOCKTAB * ; 437 t ; 439 = dbv -> lk_hd ; 441 i( `IS_RECOVERING ( dbv )) { 442 `LOCK_INIT (* lock ); 446 `LOCK_SYSTEM_LOCK ( dbv ); 447 t = `__lock_g_ ( , lock , ags , obj , lock_mode , 0, lock ); 448 `LOCK_SYSTEM_UNLOCK ( dbv ); 449 ( t ); 450 } } 461 $__lock_g_ ( , sh_lock , ags , obj , lock_mode , timeout , lock ) 462 DB_LOCKTAB * ; 463 DB_LOCKER * sh_lock ; 464 u_t32_t ags ; 465 cڡ DBT * obj ; 466 db_lockmode_t lock_mode ; 467 db_timeout_t timeout ; 468 DB_LOCK * lock ; 470 __db_lock * wl , * ; 471 DB_ENV * dbv ; 472 DB_LOCKOBJ * sh_obj ; 473 DB_LOCKREGION * gi ; 474 DB_THREAD_INFO * ; 475 u_t32_t ndx ; 476 did_abt , ihd , g_dty , no_dd , t , t_t ; 477 roff_t hd , sh_off ; 484 GRANT , 485 UPGRADE , 486 HEAD , 487 SECOND , 488 TAIL 489 } ai ; 491 dbv = ->dbenv; 492 gi = -> gfo . imy ; 495 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 498 i( sh_lock = NULL ) { 499 `__db_rx ( dbv , "Locker doesotxist"); 500 ( EINVAL ); 503 no_dd = t = 0; 504 wl = NULL ; 505 sh_obj = NULL ; 508 i( lock_mode >( db_lockmode_t ) gi -> . _nmodes ) { 509 `__db_rx ( dbv , "DB_ENV->lock_get: invalidock mode %lu", 510 ( u_lg ) lock_mode ); 511 ( EINVAL ); 514 i( obj = NULL ) { 515 `DB_ASSERT ( dbv , `LOCK_ISSET (* lock )); 516 = `R_ADDR (& -> gfo , lock -> off ); 517 sh_obj = ( DB_LOCKOBJ *)(( u_t8_t *) +p-> obj ); 518 ndx = sh_obj -> dx ; 519 `OBJECT_LOCK_NDX ( , ndx ); 522 `OBJECT_LOCK ( , gi , obj , lock -> ndx ); 523 ndx = lock ->ndx; 524 i(( t = `__lock_gobj ( , obj , lock -> ndx , 1, & sh_obj )) != 0) 525 r ; 528 #ifde HAVE_STATISTICS 529 i( `LF_ISSET ( DB_LOCK_UPGRADE )) 530 -> obj_ [ ndx ]. _nupgde ++; 531 i(! `LF_ISSET ( DB_LOCK_SWITCH )) 532 -> obj_ [ ndx ]. _eques ++; 558 ihd = 0; 559 g_dty = 0; 560 hd = 0; 569 i( `LF_ISSET ( DB_LOCK_SWITCH )) 570 = NULL ; 572 = `SH_TAILQ_FIRST (& sh_obj -> hds , __db_lock ); 574 sh_off = `R_OFFSET (& -> gfo , sh_lock ); 575 ; ! NULL ; `SH_TAILQ_NEXT p, lks , __db_lock )) { 576 `DB_ASSERT ( dbv , -> us ! DB_LSTAT_FREE ); 577 i( sh_off = -> hd ) { 578 i( -> mode = lock_mode && 579 -> us = DB_LSTAT_HELD ) { 580 i( `LF_ISSET ( DB_LOCK_UPGRADE )) 581 upgde ; 590 -> fcou ++; 591 lock -> off = `R_OFFSET (& -> gfo , ); 592 lock -> g = ->gen; 593 lock -> mode = ->mode; 594 de ; 596 ihd = 1; 598 } i( `__lock_is_ ( , -> hd , sh_lock )) 599 ihd = 1; 600 i( `CONFLICTS ( , gi , -> mode , lock_mode )) 602 i( -> mode = DB_LOCK_READ || 603 -> mode = DB_LOCK_WWRITE ) { 604 g_dty = 1; 605 hd = ->holder; 615 i( ! NULL ) { 616 i( ihd || `LF_ISSET ( DB_LOCK_UPGRADE ) || 617 lock_mode = DB_LOCK_READ_UNCOMMITTED ) 618 ai = HEAD ; 620 ai = TAIL ; 622 i( `LF_ISSET ( DB_LOCK_SWITCH )) 623 ai = TAIL ; 624 i( `LF_ISSET ( DB_LOCK_UPGRADE )) 625 ai = UPGRADE ; 626 i( ihd ) 627 ai = GRANT ; 632 `SH_TAILQ_FOREACH ( 633 , & sh_obj -> was , lks , __db_lock ) 634 i( `CONFLICTS ( , gi , -> mode , 635 lock_mode && sh_off ! -> hd ) 667 i( = NULL ) 668 ai = GRANT ; 669 i( g_dty && 670 lock_mode = DB_LOCK_READ_UNCOMMITTED ) { 675 = `SH_TAILQ_FIRST ( 676 & sh_obj -> was , __db_lock ); 677 i( -> mode = DB_LOCK_WRITE && 678 -> hd == holder) 679 ai = SECOND ; 681 ai = GRANT ; 682 } i( lock_mode = DB_LOCK_READ_UNCOMMITTED ) 683 ai = SECOND ; 685 ai = TAIL ; 689 ai ) { 690 HEAD : 691 TAIL : 692 SECOND : 693 GRANT : 695 `LOCK_LOCKS ( dbv , gi ); 696 i(( wl = 697 `SH_TAILQ_FIRST (& gi -> _locks , __db_lock )= NULL ) { 698 t = `__lock_nomem ( dbv , "locks"); 699 r ; 701 `SH_TAILQ_REMOVE (& gi -> _locks , wl , lks , __db_lock ); 703 #ifde HAVE_STATISTICS 705 i(++ gi -> . _ocks >egi->. _maxocks ) 706 gi -> . _maxocks =egi->. _ocks ; 708 `UNLOCK_LOCKS ( dbv , gi ); 719 i( wl -> mtx_lock = MUTEX_INVALID ) { 720 i(( t = `__mux_loc ( dbv , MTX_LOGICAL_LOCK , 721 DB_MUTEX_LOGICAL_LOCK | DB_MUTEX_SELF_BLOCK , 722 & wl -> mtx_lock )) != 0) 723 r ; 724 `MUTEX_LOCK ( dbv , wl -> mtx_lock ); 727 wl -> hd = `R_OFFSET (& -> gfo , sh_lock ); 728 wl -> fcou = 1; 729 wl -> mode = lock_mode ; 730 wl -> obj = ( roff_t ) `SH_PTR_TO_OFF ewl, sh_obj ); 731 wl -> dx = sh_obj ->indx; 738 no_dd = sh_lock -> ma_lock = INVALID_ROFF && 739 `SH_LIST_FIRST ( 740 & sh_lock -> chd_lock , __db_lock = NULL && 741 `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock = NULL ; 743 `SH_LIST_INSERT_HEAD ( 744 & sh_lock -> hdby , wl , lock_lks , __db_lock ); 747 UPGRADE : 748 upgde : = `R_ADDR (& -> gfo , lock -> off ); 749 i( `IS_WRITELOCK ( lock_mode && !IS_WRITELOCK( -> mode )) 750 sh_lock -> nwres ++; 751 -> mode = lock_mode ; 752 de ; 755 ai ) { 756 UPGRADE : 757 `DB_ASSERT ( dbv , 0); 759 GRANT : 760 wl -> us = DB_LSTAT_HELD ; 761 `SH_TAILQ_INSERT_TAIL (& sh_obj -> hds , wl , lks ); 763 HEAD : 764 TAIL : 765 SECOND : 766 i( `LF_ISSET ( DB_LOCK_NOWAIT )) { 767 t = DB_LOCK_NOTGRANTED ; 768 `STAT ( gi -> . _lock_nowa ++); 769 r ; 771 i(( = 772 `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock )= NULL ) { 773 `LOCK_OBJECTS ( dbv , gi ); 774 `SH_TAILQ_INSERT_HEAD (& gi -> dd_objs , 775 sh_obj , dd_lks , __db_lockobj ); 776 `UNLOCK_OBJECTS ( dbv , gi ); 778 ai ) { 779 HEAD : 780 `SH_TAILQ_INSERT_HEAD ( 781 & sh_obj -> was , wl , lks , __db_lock ); 783 SECOND : 784 `SH_TAILQ_INSERT_AFTER ( 785 & sh_obj -> was , , wl , lks , __db_lock ); 787 TAIL : 788 `SH_TAILQ_INSERT_TAIL (& sh_obj -> was , wl , lks ); 791 `DB_ASSERT ( dbv , 0); 801 i( `__lock_exped ( dbv , 802 & sh_lock -> lk_expe , &sh_lock-> tx_expe )) { 803 wl -> us = DB_LSTAT_EXPIRED ; 804 sh_lock -> lk_expe = sh_lock-> tx_expe ; 807 exped ; 816 i(! `LF_ISSET ( DB_LOCK_SET_TIMEOUT )) { 817 i( `F_ISSET ( sh_lock , DB_LOCKER_TIMEOUT )) 818 timeout = sh_lock -> lk_timeout ; 820 timeout = gi -> lk_timeout ; 822 i( timeout != 0) 823 `__lock_expes ( dbv , & sh_lock -> lk_expe , timeout ); 825 `timeecr (& sh_lock -> lk_expe ); 827 i( `timeecist (& sh_lock -> tx_expe ) && 828 ( timeout =0 || `__lock_exped ( dbv , 829 & sh_lock -> lk_expe , &sh_lock-> tx_expe ))) 830 sh_lock -> lk_expe = sh_lock-> tx_expe ; 831 i( `timeecist (& sh_lock -> lk_expe ) && 832 (! `timeecist (& gi -> xt_timeout ) || 833 `timeeccmp ( 834 & gi -> xt_timeout , & sh_lock -> lk_expe , >))) 835 gi -> xt_timeout = sh_lock -> lk_expe ; 837 wl -> us = DB_LSTAT_WAITING ; 838 `STAT ( -> obj_ [ ndx ]. _lock_wa ++); 840 gi -> ed_dd = 1; 842 `OBJECT_UNLOCK ( , sh_obj -> dx ); 845 i( `LF_ISSET ( DB_LOCK_SWITCH ) && 846 ( t = `__lock_put_nock ( dbv , 847 lock , & ihd , DB_LOCK_NOWAITERS )) != 0) { 848 `OBJECT_LOCK_NDX ( , sh_obj -> dx ); 849 () `__lock_move_wa ( 850 , sh_obj , wl , DB_LSTAT_FREE ); 851 r ; 854 `LOCK_SYSTEM_UNLOCK ( dbv ); 859 i( gi -> de ! DB_LOCK_NORUN && ! no_dd ) 860 () `__lock_de ( dbv , gi -> de , & did_abt ); 862 = NULL ; 863 i( dbv -> thr_hashb ! NULL && 864 ( t = `__v_t_e ( dbv , & , THREAD_BLOCKED )) != 0) 865 r ; 866 `MUTEX_LOCK ( dbv , wl -> mtx_lock ); 867 i( ! NULL ) 868 -> dbth_e = THREAD_ACTIVE ; 870 `LOCK_SYSTEM_LOCK ( dbv ); 871 ndx = sh_obj -> dx ; 872 `OBJECT_LOCK_NDX ( , ndx ); 875 i( wl -> us ! DB_LSTAT_EXPIRED ) 876 `timeecr (& sh_lock -> lk_expe ); 878 wl -> us ) { 879 DB_LSTAT_ABORTED : 880 t = DB_LOCK_DEADLOCK ; 881 r ; 882 DB_LSTAT_EXPIRED : 883 exped : t = `__lock_put_ ( , wl , 884 ndx , DB_LOCK_UNLINK | DB_LOCK_FREE ); 885 wl = NULL ; 886 i( t != 0) 887 r ; 888 #ifde HAVE_STATISTICS 889 i( `timeeccmp ( 890 & sh_lock -> lk_expe , &sh_lock-> tx_expe , ==)) 891 -> obj_ [ ndx ]. _ximeouts ++; 893 -> obj_ [ ndx ]. _ocktimeouts ++; 895 t = DB_LOCK_NOTGRANTED ; 896 r ; 897 DB_LSTAT_PENDING : 898 i( `LF_ISSET ( DB_LOCK_UPGRADE )) { 904 `SH_TAILQ_REMOVE ( 905 & sh_obj -> hds , wl , lks , __db_lock ); 911 wl -> lks . qe_ev = -1; 912 upgde ; 914 wl -> us = DB_LSTAT_HELD ; 916 DB_LSTAT_FREE : 917 DB_LSTAT_HELD : 918 DB_LSTAT_WAITING : 920 `__db_rx ( dbv , 921 "Uxedock stus: %d", () wl -> us ); 922 t = `__db_nic ( dbv , EINVAL ); 923 r ; 927 lock -> off = `R_OFFSET (& -> gfo , wl ); 928 lock -> g = wl ->gen; 929 lock -> mode = wl ->mode; 930 sh_lock -> ocks ++; 931 i( `IS_WRITELOCK ( wl -> mode )) { 932 sh_lock -> nwres ++; 933 i( wl -> mode = DB_LOCK_WWRITE ) 934 `F_SET ( sh_lock , DB_LOCKER_DIRTY ); 937 `OBJECT_UNLOCK ( , ndx ); 940 r : i(! `LF_ISSET ( DB_LOCK_UPGRADE | DB_LOCK_SWITCH )) 941 `LOCK_INIT (* lock ); 943 de : `OBJECT_UNLOCK ( , ndx ); 944 i( wl ! NULL && 945 ( t_t = `__lock_lock ( , wl , sh_lock , 946 DB_LOCK_FREE | DB_LOCK_UNLINK )!0 && t == 0) 947 t = t_t ; 949 ( t ); 950 } } 959 $__lock_put_ ( dbv , lock ) 960 DB_ENV * dbv ; 961 DB_LOCK * lock ; 963 DB_THREAD_INFO * ; 964 t ; 966 `PANIC_CHECK ( dbv ); 967 `ENV_REQUIRES_CONFIG ( dbv , 968 dbv -> lk_hd , "DB_LOCK->lock_put", DB_INIT_LOCK ); 970 `ENV_ENTER ( dbv , ); 971 `REPLICATION_WRAP ( dbv , ( `__lock_put (dbv, lock )), t ); 972 `ENV_LEAVE ( dbv , ); 973 ( t ); 974 } } 983 $__lock_put ( dbv , lock ) 984 DB_ENV * dbv ; 985 DB_LOCK * lock ; 987 DB_LOCKTAB * ; 988 t , run_dd ; 990 i( `IS_RECOVERING ( dbv )) 993 = dbv -> lk_hd ; 995 `LOCK_SYSTEM_LOCK ( dbv ); 996 t = `__lock_put_nock ( dbv , lock , & run_dd , 0); 997 `LOCK_SYSTEM_UNLOCK ( dbv ); 1005 i( t =0 && run_dd ) 1006 () `__lock_de ( dbv , 1007 (( DB_LOCKREGION *) -> gfo . imy )-> de , NULL ); 1008 ( t ); 1009 } } 1012 $__lock_put_nock ( dbv , lock , ru , ags ) 1013 DB_ENV * dbv ; 1014 DB_LOCK * lock ; 1015 * ru ; 1016 u_t32_t ags ; 1018 __db_lock * lockp ; 1019 DB_LOCKREGION * gi ; 1020 DB_LOCKTAB * ; 1021 t ; 1024 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1027 = dbv -> lk_hd ; 1028 gi = -> gfo . imy ; 1030 lockp = `R_ADDR (& -> gfo , lock -> off ); 1031 i( lock -> g ! lockp ->gen) { 1032 `__db_rx ( dbv , __db_lock_vid , "DB_LOCK->lock_put"); 1033 `LOCK_INIT (* lock ); 1034 ( EINVAL ); 1037 `OBJECT_LOCK_NDX ( , lock -> ndx ); 1038 t = `__lock_put_ ( , 1039 lockp , lock -> ndx , ags | DB_LOCK_UNLINK | DB_LOCK_FREE ); 1040 `OBJECT_UNLOCK ( , lock -> ndx ); 1042 `LOCK_INIT (* lock ); 1044 * ru = 0; 1045 i( t =0 && gi -> de ! DB_LOCK_NORUN && 1046 ( gi -> ed_dd || `timeecist (&gi-> xt_timeout ))) 1047 * ru = 1; 1049 ( t ); 1050 } } 1065 $__lock_downgde ( dbv , lock , w_mode , ags ) 1066 DB_ENV * dbv ; 1067 DB_LOCK * lock ; 1068 db_lockmode_t w_mode ; 1069 u_t32_t ags ; 1071 __db_lock * lockp ; 1072 DB_LOCKER * sh_lock ; 1073 DB_LOCKOBJ * obj ; 1074 DB_LOCKREGION * gi ; 1075 DB_LOCKTAB * ; 1076 t ; 1078 `PANIC_CHECK ( dbv ); 1079 t = 0; 1082 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1085 = dbv -> lk_hd ; 1086 gi = -> gfo . imy ; 1088 `LOCK_SYSTEM_LOCK ( dbv ); 1090 `STAT ( gi -> . _ndowngde ++); 1092 lockp = `R_ADDR (& -> gfo , lock -> off ); 1093 i( lock -> g ! lockp ->gen) { 1094 `__db_rx ( dbv , __db_lock_vid , "lock_downgrade"); 1095 t = EINVAL ; 1096 out ; 1099 sh_lock = `R_ADDR (& -> gfo , lockp -> hd ); 1101 i( `IS_WRITELOCK ( lockp -> mode && !IS_WRITELOCK( w_mode )) 1102 sh_lock -> nwres --; 1104 lockp -> mode = w_mode ; 1105 lock -> mode = w_mode ; 1108 obj = ( DB_LOCKOBJ *)(( u_t8_t *) lockp +ockp->obj); 1109 `OBJECT_LOCK_NDX ( , obj -> dx ); 1110 -> obj_ [ obj -> dx ]. _ndowngde ++; 1111 t = `__lock_ome ( , obj , NULL , `LF_ISSET ( DB_LOCK_NOWAITERS )); 1112 `OBJECT_UNLOCK ( , obj -> dx ); 1114 out : `LOCK_SYSTEM_UNLOCK ( dbv ); 1116 ( t ); 1117 } } 1120 $__lock_put_ ( , lockp , obj_ndx , ags ) 1121 DB_LOCKTAB * ; 1122 __db_lock * lockp ; 1123 u_t32_t obj_ndx , ags ; 1125 DB_ENV * dbv ; 1126 DB_LOCKOBJ * sh_obj ; 1127 DB_LOCKREGION * gi ; 1128 t , e_chged ; 1130 `COMPQUIET ( dbv , NULL ); 1131 dbv = ->dbenv; 1132 gi = -> gfo . imy ; 1133 t = e_chged = 0; 1135 i(! `OBJ_LINKS_VALID ( lockp )) { 1142 () `__lock_lock ( , lockp , NULL , DB_LOCK_FREE ); 1150 #ifde HAVE_STATISTICS 1151 i( `LF_ISSET ( DB_LOCK_DOALL )) 1152 -> obj_ [ obj_ndx ]. _Ės + lockp -> fcou ; 1154 -> obj_ [ obj_ndx ]. _Ės ++; 1157 i(! `LF_ISSET ( DB_LOCK_DOALL && lockp -> fcou > 1) { 1158 lockp -> fcou --; 1163 lockp -> g ++; 1166 sh_obj = ( DB_LOCKOBJ *)(( u_t8_t *) lockp +ockp-> obj ); 1174 i( lockp -> us ! DB_LSTAT_HELD && 1175 lockp -> us ! DB_LSTAT_PENDING ) { 1176 i(( t = `__lock_move_wa ( 1177 , sh_obj , lockp , DB_LSTAT_ABORTED )) != 0) 1178 ( t ); 1180 `SH_TAILQ_REMOVE (& sh_obj -> hds , lockp , lks , __db_lock ); 1181 lockp -> lks . qe_ev = -1; 1184 i( `LF_ISSET ( DB_LOCK_NOPROMOTE )) 1185 e_chged = 0; 1187 i(( t = `__lock_ome ( , sh_obj , & e_chged , 1188 `LF_ISSET ( DB_LOCK_NOWAITERS ))) != 0) 1189 ( t ); 1192 i( `SH_TAILQ_FIRST (& sh_obj -> hds , __db_lock = NULL && 1193 `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock = NULL ) { 1194 `SH_TAILQ_REMOVE ( 1195 & -> obj_b [ obj_ndx ], sh_obj , lks , __db_lockobj ); 1196 `LOCK_OBJECTS ( dbv , gi ); 1197 i( sh_obj -> lockobj . size > (sh_obj-> objda )) 1198 `__v_loc_ (& -> gfo , 1199 `SH_DBT_PTR (& sh_obj -> lockobj )); 1200 `SH_TAILQ_INSERT_HEAD ( 1201 & gi -> _objs , sh_obj , lks , __db_lockobj ); 1202 sh_obj -> gi ++; 1203 `STAT ( gi -> . _nobjes --); 1204 `UNLOCK_OBJECTS ( dbv , gi ); 1205 e_chged = 1; 1209 i( `LF_ISSET ( DB_LOCK_UNLINK | DB_LOCK_FREE )) 1210 t = `__lock_lock ( , lockp , 1211 `R_ADDR (& -> gfo , lockp -> hd ), ags ); 1217 i( e_chged == 0) 1218 gi -> ed_dd = 1; 1220 ( t ); 1221 } } 1229 $__lock_lock ( , lockp , sh_lock , ags ) 1230 DB_LOCKTAB * ; 1231 __db_lock * lockp ; 1232 DB_LOCKER * sh_lock ; 1233 u_t32_t ags ; 1235 DB_ENV * dbv ; 1236 DB_LOCKREGION * gi ; 1237 t ; 1239 dbv = ->dbenv; 1240 gi = -> gfo . imy ; 1242 i( `LF_ISSET ( DB_LOCK_UNLINK )) { 1244 `SH_LIST_REMOVE ( lockp , lock_lks , __db_lock ); 1245 i( lockp -> us = DB_LSTAT_HELD ) { 1246 sh_lock -> ocks --; 1247 i( `IS_WRITELOCK ( lockp -> mode )) 1248 sh_lock -> nwres --; 1252 i( `LF_ISSET ( DB_LOCK_FREE )) { 1258 i( lockp -> mtx_lock ! MUTEX_INVALID && 1259 lockp -> us ! DB_LSTAT_HELD && 1260 lockp -> us ! DB_LSTAT_EXPIRED && 1261 ( t = `__mux_ ( dbv , & lockp -> mtx_lock )) != 0) 1262 ( t ); 1263 lockp -> us = DB_LSTAT_FREE ; 1264 `LOCK_LOCKS ( dbv , gi ); 1265 `SH_TAILQ_INSERT_HEAD ( 1266 & gi -> _locks , lockp , lks , __db_lock ); 1267 `STAT ( gi -> . _ocks --); 1268 `UNLOCK_LOCKS ( dbv , gi ); 1272 } } 1283 $__lock_gobj ( , obj , ndx , , ) 1284 DB_LOCKTAB * ; 1285 cڡ DBT * obj ; 1286 u_t32_t ndx ; 1287 ; 1288 DB_LOCKOBJ ** ; 1290 DB_ENV * dbv ; 1291 DB_LOCKOBJ * sh_obj ; 1292 DB_LOCKREGION * gi ; 1293 t ; 1294 * p ; 1295 u_t32_t n ; 1297 dbv = ->dbenv; 1298 gi = -> gfo . imy ; 1299 n = 0; 1302 `SH_TAILQ_FOREACH ( sh_obj , & -> obj_b [ ndx ], lks , __db_lockobj ) { 1303 n ++; 1304 i( obj -> size = sh_obj -> lockobj .size && 1305 `memcmp ( obj -> da , 1306 `SH_DBT_PTR (& sh_obj -> lockobj ), obj -> size ) == 0) 1310 i( n > -> obj_ [ ndx ]. _hash_n ) 1311 -> obj_ [ ndx ]. _hash_n = n ; 1317 i( sh_obj = NULL && ) { 1318 `LOCK_OBJECTS ( dbv , gi ); 1320 i(( sh_obj = 1321 `SH_TAILQ_FIRST (& gi -> _objs , __db_lockobj )= NULL ) { 1322 `UNLOCK_OBJECTS ( dbv , gi ); 1323 t = `__lock_nomem ( -> dbv , "objectntries"); 1324 r ; 1331 i( obj -> size <( sh_obj -> objda )) 1332 p = sh_obj -> objda ; 1333 i(( t = 1334 `__v_loc (& -> gfo , obj -> size , & p )) != 0) { 1335 `UNLOCK_OBJECTS ( dbv , gi ); 1336 `__db_rx ( dbv , "No space forock object storage"); 1337 r ; 1340 `memy ( p , obj -> da , obj-> size ); 1342 `SH_TAILQ_REMOVE ( 1343 & gi -> _objs , sh_obj , lks , __db_lockobj ); 1344 #ifde HAVE_STATISTICS 1345 i(++ gi -> . _nobjes >egi->. _maxnobjes ) 1346 gi -> . _maxnobjes =egi->. _nobjes ; 1348 `UNLOCK_OBJECTS ( dbv , gi ); 1350 sh_obj -> dx = ndx ; 1351 `SH_TAILQ_INIT (& sh_obj -> was ); 1352 `SH_TAILQ_INIT (& sh_obj -> hds ); 1353 sh_obj -> lockobj . size = obj ->size; 1354 sh_obj -> lockobj . off = 1355 ( roff_t ) `SH_PTR_TO_OFF (& sh_obj -> lockobj , p ); 1356 `SH_TAILQ_INSERT_HEAD ( 1357 & -> obj_b [ ndx ], sh_obj , lks , __db_lockobj ); 1360 * = sh_obj ; 1363 r : ( t ); 1364 } } 1374 $__lock_is_ ( , l_off , sh_lock ) 1375 DB_LOCKTAB * ; 1376 roff_t l_off ; 1377 DB_LOCKER * sh_lock ; 1379 DB_LOCKER * ; 1381 = sh_lock ; 1382 -> _lock ! INVALID_ROFF ) { 1383 i( -> _lock = l_off ) 1385 = `R_ADDR (& -> gfo ,t-> _lock ); 1389 } } 1400 $__lock_lock_is_ ( dbv , lock , chd , ) 1401 DB_ENV * dbv ; 1402 DB_LOCKER * lock ; 1403 DB_LOCKER * chd ; 1404 * ; 1406 DB_LOCKTAB * ; 1408 = dbv -> lk_hd ; 1414 i( lock = NULL ) 1415 * = 0; 1417 * = `__lock_is_ ( , 1418 `R_OFFSET (& -> gfo , lock ), chd ); 1420 } } 1427 $__lock_h_locks ( , sh_lock , ags ) 1428 DB_LOCKTAB * ; 1429 DB_LOCKER * sh_lock ; 1430 u_t32_t ags ; 1432 DB_ENV * dbv ; 1433 DB_LOCKER * sh_ ; 1434 DB_LOCKOBJ * obj ; 1435 t ; 1436 __db_lock * h , * ; 1437 roff_t poff ; 1439 dbv = ->dbenv; 1449 i( sh_lock = NULL || 1450 `F_ISSET ( sh_lock , DB_LOCKER_DELETED )) { 1451 `__db_rx ( dbv , __db_lock_vid ); 1452 ( EINVAL ); 1456 i( sh_lock -> _lock = INVALID_ROFF ) { 1457 `__db_rx ( dbv , "Not childransaction"); 1458 ( EINVAL ); 1460 sh_ = `R_ADDR (& -> gfo , sh_lock -> _lock ); 1461 `F_SET ( sh_lock , DB_LOCKER_DELETED ); 1467 i( `F_ISSET ( sh_ , DB_LOCKER_DELETED )) { 1468 `__db_rx ( dbv , "Parentocker isot valid"); 1469 ( EINVAL ); 1478 poff = `R_OFFSET (& -> gfo , sh_ ); 1479 = `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock ); 1480 ! NULL ; 1481 = `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock )) { 1482 `SH_LIST_REMOVE ( , lock_lks , __db_lock ); 1485 obj = ( DB_LOCKOBJ *)(( u_t8_t *) +p->obj); 1486 `SH_TAILQ_FOREACH ( h , & obj -> hds , lks , __db_lock ) 1487 i( h -> hd = poff && -> mode == hlp->mode) 1490 i( h ! NULL ) { 1492 h -> fcou + ->refcount; 1495 `DB_ASSERT ( dbv , -> us = DB_LSTAT_HELD ); 1496 `SH_TAILQ_REMOVE (& obj -> hds , , lks , __db_lock ); 1497 () `__lock_lock ( , , sh_lock , DB_LOCK_FREE ); 1500 `SH_LIST_INSERT_HEAD (& sh_ -> hdby , 1501 , lock_lks , __db_lock ); 1502 -> hd = poff ; 1511 i(( t = `__lock_ome ( 1512 , obj , NULL , `LF_ISSET ( DB_LOCK_NOWAITERS ))) != 0) 1513 ( t ); 1517 sh_ -> ocks + sh_lock ->nlocks; 1518 sh_ -> nwres + sh_lock ->nwrites; 1521 } } 1533 $__lock_ome ( , obj , e_chgedp , ags ) 1534 DB_LOCKTAB * ; 1535 DB_LOCKOBJ * obj ; 1536 * e_chgedp ; 1537 u_t32_t ags ; 1539 __db_lock * _w , * _h , * xt_wa ; 1540 DB_LOCKREGION * gi ; 1541 had_was , e_chged ; 1543 gi = -> gfo . imy ; 1544 had_was = 0; 1559 _w = `SH_TAILQ_FIRST (& obj -> was , __db_lock ), 1560 e_chged = _w = NULL ; 1561 _w ! NULL ; 1562 _w = xt_wa ) { 1563 had_was = 1; 1564 xt_wa = `SH_TAILQ_NEXT ( _w , lks , __db_lock ); 1567 i( _w -> us ! DB_LSTAT_WAITING ) 1570 i( `LF_ISSET ( DB_LOCK_NOWAITERS && _w -> mode = DB_LOCK_WAIT ) 1573 `SH_TAILQ_FOREACH ( _h , & obj -> hds , lks , __db_lock ) { 1574 i( _h -> hd ! _w ->holder && 1575 `CONFLICTS ( , gi , _h -> mode , _w ->mode)) { 1576 i(! `__lock_is_ ( , _h -> hd , 1577 `R_ADDR (& -> gfo , _w -> hd ))) 1581 i( _h ! NULL ) 1585 `SH_TAILQ_REMOVE (& obj -> was , _w , lks , __db_lock ); 1586 _w -> us = DB_LSTAT_PENDING ; 1587 `SH_TAILQ_INSERT_TAIL (& obj -> hds , _w , lks ); 1590 `MUTEX_UNLOCK ( -> dbv , _w -> mtx_lock ); 1591 e_chged = 1; 1598 i( had_was && `SH_TAILQ_FIRST (& obj -> was , __db_lock = NULL ) { 1599 `LOCK_OBJECTS ( -> dbv , gi ); 1604 obj -> gi ++; 1605 `SH_TAILQ_REMOVE (& gi -> dd_objs , obj , dd_lks , __db_lockobj ); 1606 `UNLOCK_OBJECTS ( -> dbv , gi ); 1609 i( e_chgedp ! NULL ) 1610 * e_chgedp = e_chged ; 1613 } } 1626 $__lock_move_wa ( , sh_obj , lockp , us ) 1627 DB_LOCKTAB * ; 1628 DB_LOCKOBJ * sh_obj ; 1629 __db_lock * lockp ; 1630 db_us_t us ; 1632 DB_LOCKREGION * gi ; 1633 do_wakeup ; 1635 gi = -> gfo . imy ; 1637 do_wakeup = lockp -> us = DB_LSTAT_WAITING ; 1639 `SH_TAILQ_REMOVE (& sh_obj -> was , lockp , lks , __db_lock ); 1640 lockp -> lks . qe_ev = -1; 1641 lockp -> us = status; 1642 i( `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock = NULL ) { 1643 `LOCK_OBJECTS ( -> dbv , gi ); 1644 sh_obj -> gi ++; 1645 `SH_TAILQ_REMOVE ( 1646 & gi -> dd_objs , 1647 sh_obj , dd_lks , __db_lockobj ); 1648 `UNLOCK_OBJECTS ( -> dbv , gi ); 1654 i( do_wakeup ) 1655 `MUTEX_UNLOCK ( -> dbv , lockp -> mtx_lock ); 1658 } } 1668 $__lock_ade ( dbv , lock , w_lock ) 1669 DB_ENV * dbv ; 1670 DB_LOCK * lock ; 1671 DB_LOCKER * w_lock ; 1673 __db_lock * ; 1674 DB_LOCKTAB * ; 1675 t ; 1677 = dbv -> lk_hd ; 1678 = `R_ADDR (& -> gfo , lock -> off ); 1681 i( -> g ! lock ->gen) 1682 ( DB_NOTFOUND ); 1684 i( w_lock = NULL ) { 1685 `__db_rx ( dbv , "Locker doesotxist"); 1686 ( EINVAL ); 1690 i(( t = `__lock_lock ( , 1691 , `R_ADDR (& -> gfo ,p-> hd ), DB_LOCK_UNLINK )) != 0) 1692 ( t ); 1695 `SH_LIST_INSERT_HEAD (& w_lock -> hdby , , lock_lks , __db_lock ); 1696 w_lock -> ocks ++; 1697 i( `IS_WRITELOCK ( -> mode )) 1698 w_lock -> nwres ++; 1699 -> hd = `R_OFFSET (& -> gfo , w_lock ); 1702 } } @../lock/lock_deadlock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/log.h " 14 ~"dbc/txn.h " 16 #ISSET_MAP ( M , N ((M)[(N/ 32] & (1 << ((N% 32))) ) 18 #CLEAR_MAP ( M , N ) { \ 19 u_t32_t __i ; \ 20 __i = 0; __< ( N ); __i++) \ 21 ( M )[ __i ] = 0; \ 22 } ) 24 #SET_MAP ( M , B ((M)[(B/ 32] |(1 << ((B% 32))) ) 25 #CLR_MAP ( M , B ((M)[(B/ 32] &~(( u_t )1 << ((B% 32))) ) 27 #OR_MAP ( D , S , N ) { \ 28 u_t32_t __i ; \ 29 __i = 0; __< ( N ); __i++) \ 30 D [ __i ] | S [__i]; \ 31 } ) 32 #BAD_KILLID 0xffffffff ) 35 mvid ; 36 mlf_wa ; 37 m_abt ; 38 u_t32_t mcou ; 39 u_t32_t mid ; 40 roff_t mϡ_lock ; 41 roff_t mϡ_obj ; 42 u_t32_t mϡ_ndx ; 43 u_t32_t mϡ_lock_id ; 44 db_pgno_t mpgno ; 45 } tlock_fo ; 47 __dd_abt __P (( DB_ENV *, lock_fo *, *)); 48 __dd_bud __P (( DB_ENV *, u_t32_t , 49 u_t32_t **, u_t32_*, u_t32_*, lock_fo **, *)); 50 __dd_fd __P (( DB_ENV *, 51 u_t32_t *, lock_fo *, u_int32_t, u_int32_t, u_int32_t ***)); 52 __dd_isd __P (( u_t32_t , u_int32_t, u_int32_t, u_int32_t)); 53 __dd_vify __P (( lock_fo *, u_t32_t *, u_int32_t *, 54 u_t32_t *, u_int32_t, u_int32_t, u_int32_t)); 56 #ifde DIAGNOSTIC 57 __dd_debug 58 __P (( DB_ENV *, lock_fo *, u_t32_t *, u_int32_t, u_int32_t)); 68 $__lock_de_ ( dbv , ags , y , jep ) 69 DB_ENV * dbv ; 70 u_t32_t ags , y ; 71 * jep ; 73 DB_THREAD_INFO * ; 74 t ; 76 `PANIC_CHECK ( dbv ); 77 `ENV_REQUIRES_CONFIG ( dbv , 78 dbv -> lk_hd , "DB_ENV->lock_de", DB_INIT_LOCK ); 81 i(( t = `__db_fchk ( dbv , "DB_ENV->lock_de", ags , 0)) != 0) 82 ( t ); 83 y ) { 84 DB_LOCK_DEFAULT : 85 DB_LOCK_EXPIRE : 86 DB_LOCK_MAXLOCKS : 87 DB_LOCK_MAXWRITE : 88 DB_LOCK_MINLOCKS : 89 DB_LOCK_MINWRITE : 90 DB_LOCK_OLDEST : 91 DB_LOCK_RANDOM : 92 DB_LOCK_YOUNGEST : 95 `__db_rx ( dbv , 97 ( EINVAL ); 100 `ENV_ENTER ( dbv , ); 101 `REPLICATION_WRAP ( dbv , ( `__lock_de (dbv, y , jep )), t ); 102 `ENV_LEAVE ( dbv , ); 103 ( t ); 104 } } 113 $__lock_de ( dbv , y , jep ) 114 DB_ENV * dbv ; 115 u_t32_t y ; 116 * jep ; 118 DB_LOCKREGION * gi ; 119 DB_LOCKTAB * ; 120 db_timeec now ; 121 lock_fo * idm ; 122 u_t32_t * bm , * cym , ** ddp , ** _me , * tmpm ; 123 u_t32_t i , cid , kr , klid , lim , oc , ocks ; 124 u_t32_t lock_max , txn_max ; 125 t , us ; 131 i( `IS_REP_CLIENT ( dbv )) 132 y = DB_LOCK_MINWRITE ; 134 _me = NULL ; 136 = dbv -> lk_hd ; 137 i( jep ! NULL ) 138 * jep = 0; 141 `LOCK_SYSTEM_LOCK ( dbv ); 144 gi = -> gfo . imy ; 146 `timeecr (& now ); 147 i( gi -> ed_dd == 0 && 148 (! `timeecist (& gi -> xt_timeout ) || 149 ! `__lock_exped ( dbv , & now , & gi -> xt_timeout ))) { 150 `LOCK_SYSTEM_UNLOCK ( dbv ); 153 i( gi -> ed_dd == 0) 154 y = DB_LOCK_EXPIRE ; 157 gi -> ed_dd = 0; 160 t = `__dd_bud ( dbv , 161 y , & bm , & ocks , & oc , & idm , jep ); 162 lock_max = gi -> . _cur_maxid ; 163 `LOCK_SYSTEM_UNLOCK ( dbv ); 164 i( t !0 || y = DB_LOCK_EXPIRE ) 165 ( t ); 168 i( ocks == 0) 171 #ifde DIAGNOSTIC 172 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_WAITSFOR )) 173 `__dd_debug ( dbv , idm , bm , ocks , oc ); 177 i(( t = `__os_oc ( dbv , ( size_t ) ocks , 178 ( u_t32_t * oc , & cym )) != 0) 179 r ; 180 `memy ( cym , bm , ocks * ( u_t32_t * oc ); 182 i(( t = `__os_oc ( dbv , ( u_t32_t ), oc , & tmpm )) != 0) 183 r1 ; 186 i(( t = 187 `__dd_fd ( dbv , bm , idm , ocks , oc , & ddp )) != 0) 188 ( t ); 199 i( `TXN_ON ( dbv )) { 200 `TXN_SYSTEM_LOCK ( dbv ); 201 txn_max = (( DB_TXNREGION *) 202 dbv -> tx_hd -> gfo . imy )-> cur_maxid ; 203 `TXN_SYSTEM_UNLOCK ( dbv ); 205 txn_max = TXN_MAXIMUM ; 207 klid = BAD_KILLID ; 208 _me = ddp ; 209 ; * ddp ! NULL ; deadp++) { 210 i( jep ! NULL ) 211 ++* jep ; 212 klid = ( u_t32_t )(* ddp - bm / oc ; 213 lim = klid ; 230 kr = idm [ klid ]. _abt =0 ? klid : BAD_KILLID ; 231 i( kr = BAD_KILLID || 232 `__dd_vify ( idm , * ddp , 233 tmpm , cym , ocks , oc , kr ) == 0) 234 klid = BAD_KILLID ; 236 i( klid ! BAD_KILLID && 237 ( y = DB_LOCK_DEFAULT ||ty = DB_LOCK_RANDOM )) 238 dokl ; 252 i = ( lim + 1% ocks ; 253 i ! lim ; 254 i = (+ 1% ocks ) { 255 i(! `ISSET_MAP (* ddp , i || idm [i]. _abt ) 263 i( klid = BAD_KILLID ) { 264 i( kr = BAD_KILLID ) 265 u_xt ; 267 cid = kr ; 269 cid = klid ; 271 y ) { 272 DB_LOCK_OLDEST : 273 i( `__dd_isd ( idm [ cid ]. id , 274 idm [ i ]. id , lock_max , txn_max )) 277 DB_LOCK_YOUNGEST : 278 i( `__dd_isd ( idm [ i ]. id , 279 idm [ cid ]. id , lock_max , txn_max )) 282 DB_LOCK_MAXLOCKS : 283 i( idm [ i ]. cou < idm[ cid ].count) 286 DB_LOCK_MAXWRITE : 287 i( idm [ i ]. cou < idm[ cid ].count) 290 DB_LOCK_MINLOCKS : 291 DB_LOCK_MINWRITE : 292 i( idm [ i ]. cou > idm[ cid ].count) 295 DB_LOCK_DEFAULT : 296 DB_LOCK_RANDOM : 297 dokl ; 300 klid = BAD_KILLID ; 301 t = EINVAL ; 302 dokl ; 305 u_xt : kr = i ; 306 i( `__dd_vify ( idm , * ddp , 307 tmpm , cym , ocks , oc , i )) 308 klid = i ; 311 dokl : i( klid = BAD_KILLID ) { 312 i( kr = BAD_KILLID ) 324 `LOCK_SYSTEM_LOCK ( dbv ); 325 gi -> ed_dd = 1; 326 `LOCK_SYSTEM_UNLOCK ( dbv ); 327 klid = kr ; 332 i(( t = `__dd_abt ( dbv , & idm [ klid ], & us )) != 0) 339 i( us != 0) { 340 i( us ! DB_ALREADY_ABORTED ) 341 `__db_rx ( dbv , 343 ( u_lg ) idm [ klid ]. id ); 344 } i( `FLD_ISSET ( dbv -> vbo , DB_VERB_DEADLOCK )) 345 `__db_msg ( dbv , 346 "Abtgock %lx", ( u_lg ) idm [ klid ]. id ); 348 `__os_ ( dbv , tmpm ); 349 r1 : `__os_ ( dbv , cym ); 351 r : i( _me ! NULL ) 352 `__os_ ( dbv , _me ); 353 `__os_ ( dbv , bm ); 354 `__os_ ( dbv , idm ); 356 ( t ); 357 } } 364 #DD_INVALID_ID (( u_t32_t -1) ) 367 $__dd_bud ( dbv , y , bmp , ocks , lo , idm , jep ) 368 DB_ENV * dbv ; 369 u_t32_t y , ** bmp , * ocks , * lo ; 370 lock_fo ** idm ; 371 * jep ; 373 __db_lock * ; 374 DB_LOCKER * l , * lockp , * chd ; 375 DB_LOCKOBJ * , * lo , * ; 376 DB_LOCKREGION * gi ; 377 DB_LOCKTAB * ; 378 lock_fo * id_y ; 379 db_timeec now , m_timeout ; 380 u_t32_t * bm , cou , dd ; 381 u_t32_t * yp , g , id , dx , ndx , rs , * tmpm ; 382 u_t8_t * ; 383 is_f , t ; 385 `COMPQUIET ( dx , 0); 386 = dbv -> lk_hd ; 387 gi = -> gfo . imy ; 388 `timeecr (& now ); 389 `timeecr (& m_timeout ); 399 i( y = DB_LOCK_EXPIRE ) { 400 sk : `LOCK_OBJECTS ( dbv , gi ); 401 = `SH_TAILQ_FIRST (& gi -> dd_objs , __db_lockobj ); 402 ; ! NULL ; o ) { 403 dx = ->indx; 404 g = -> gi ; 405 `UNLOCK_OBJECTS ( dbv , gi ); 406 `OBJECT_LOCK_NDX ( , dx ); 407 i( -> gi ! g ) { 408 `OBJECT_UNLOCK ( , dx ); 409 sk ; 411 `SH_TAILQ_FOREACH ( , & -> was , lks , __db_lock ) { 412 lockp = ( DB_LOCKER *) 413 `R_ADDR (& -> gfo , -> hd ); 414 i( -> us = DB_LSTAT_WAITING ) { 415 i( `__lock_exped ( dbv , 416 & now , & lockp -> lk_expe )) { 417 -> us = DB_LSTAT_EXPIRED ; 418 `MUTEX_UNLOCK ( 419 dbv , -> mtx_lock ); 420 i( jep ! NULL ) 421 ++* jep ; 424 i(! `timeecist (& m_timeout ) || 425 `timeeccmp (& m_timeout , 426 & lockp -> lk_expe , >)) 427 m_timeout = 428 lockp -> lk_expe ; 431 `LOCK_OBJECTS ( dbv , gi ); 432 = `SH_TAILQ_NEXT ( , dd_lks , __db_lockobj ); 433 `OBJECT_UNLOCK ( , dx ); 435 `UNLOCK_OBJECTS ( dbv , gi ); 436 de ; 445 y : cou = gi -> . _ocks ; 446 i( cou == 0) { 447 * ocks = 0; 451 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_DEADLOCK )) 452 `__db_msg ( dbv , "%luocks", ( u_lg ) cou ); 454 cou += 20; 455 rs = ( u_t32_t ) `DB_ALIGN ( cou , 32) / 32; 464 i(( t = `__os_oc ( dbv , ( size_t ) cou , 465 ( u_t32_t * rs , & bm )) != 0) 466 ( t ); 468 i(( t = `__os_oc ( dbv , 469 ( u_t32_t ), rs , & tmpm )) != 0) { 470 `__os_ ( dbv , bm ); 471 ( t ); 474 i(( t = `__os_oc ( dbv , 475 ( size_t ) cou , ( lock_fo ), & id_y )) != 0) { 476 `__os_ ( dbv , bm ); 477 `__os_ ( dbv , tmpm ); 478 ( t ); 484 i( gi -> . _ocks > cou ) { 485 `__os_ ( dbv , bm ); 486 `__os_ ( dbv , tmpm ); 487 `__os_ ( dbv , id_y ); 488 y ; 494 id = 0; 495 `LOCK_LOCKERS ( dbv , gi ); 496 `SH_TAILQ_FOREACH ( l , & gi -> locks , ulks , __db_lock ) { 497 i( l -> ma_lock = INVALID_ROFF ) { 498 l -> dd_id = id ++; 499 id_y [ l -> dd_id ]. id =ip->id; 500 y ) { 501 DB_LOCK_MINLOCKS : 502 DB_LOCK_MAXLOCKS : 503 id_y [ l -> dd_id ]. cou =-> ocks ; 505 DB_LOCK_MINWRITE : 506 DB_LOCK_MAXWRITE : 507 id_y [ l -> dd_id ]. cou =-> nwres ; 512 i( `F_ISSET ( l , DB_LOCKER_INABORT )) 513 id_y [ l -> dd_id ]. _abt = 1; 515 l -> dd_id = DD_INVALID_ID ; 518 `UNLOCK_LOCKERS ( dbv , gi ); 532 aga : `memt ( bm , 0, cou * ( u_t32_t * rs ); 534 `LOCK_OBJECTS ( dbv , gi ); 535 = `SH_TAILQ_FIRST (& gi -> dd_objs , __db_lockobj ); 536 ; ! NULL ; o ) { 537 dx = ->indx; 538 g = -> gi ; 539 `UNLOCK_OBJECTS ( dbv , gi ); 541 `OBJECT_LOCK_NDX ( , dx ); 542 i( g ! -> gi ) { 543 `OBJECT_UNLOCK ( , dx ); 544 aga ; 552 `CLEAR_MAP ( tmpm , rs ); 553 `SH_TAILQ_FOREACH ( , & -> hds , lks , __db_lock ) { 554 lockp = ( DB_LOCKER *) `R_ADDR (& -> gfo , -> hd ); 556 i( lockp -> dd_id = DD_INVALID_ID ) { 561 i( lockp -> ma_lock = INVALID_ROFF ) 563 dd = (( DB_LOCKER *) `R_ADDR (& -> gfo , 564 lockp -> ma_lock ))-> dd_id ; 565 i( dd = DD_INVALID_ID ) 567 lockp -> dd_id = dd ; 568 y ) { 569 DB_LOCK_MINLOCKS : 570 DB_LOCK_MAXLOCKS : 571 id_y [ dd ]. cou + lockp -> ocks ; 573 DB_LOCK_MINWRITE : 574 DB_LOCK_MAXWRITE : 575 id_y [ dd ]. cou + lockp -> nwres ; 580 i( `F_ISSET ( lockp , DB_LOCKER_INABORT )) 581 id_y [ dd ]. _abt = 1; 584 dd = lockp -> dd_id ; 585 id_y [ dd ]. vid = 1; 591 i( -> us = DB_LSTAT_HELD ) 592 `SET_MAP ( tmpm , dd ); 599 is_f = 1, 600 = `SH_TAILQ_FIRST (& -> was , __db_lock ); 601 ! NULL ; 602 is_f = 0, 603 = `SH_TAILQ_NEXT p, lks , __db_lock )) { 604 lockp = ( DB_LOCKER *) `R_ADDR (& -> gfo , -> hd ); 605 i( -> us = DB_LSTAT_WAITING ) { 606 i( `__lock_exped ( dbv , 607 & now , & lockp -> lk_expe )) { 608 -> us = DB_LSTAT_EXPIRED ; 609 `MUTEX_UNLOCK ( dbv , -> mtx_lock ); 610 i( jep ! NULL ) 611 ++* jep ; 614 i(! `timeecist (& m_timeout ) || 615 `timeeccmp ( 616 & m_timeout , & lockp -> lk_expe , >)) 617 m_timeout = lockp -> lk_expe ; 620 i( lockp -> dd_id = DD_INVALID_ID ) { 621 dd = (( DB_LOCKER *) `R_ADDR (& -> gfo , 622 lockp -> ma_lock ))-> dd_id ; 623 lockp -> dd_id = dd ; 624 y ) { 625 DB_LOCK_MINLOCKS : 626 DB_LOCK_MAXLOCKS : 627 id_y [ dd ]. cou + lockp -> ocks ; 629 DB_LOCK_MINWRITE : 630 DB_LOCK_MAXWRITE : 631 id_y [ dd ]. cou + lockp -> nwres ; 637 dd = lockp -> dd_id ; 638 id_y [ dd ]. vid = 1; 644 i( -> us ! DB_LSTAT_WAITING ) 647 yp = bm + ( rs * dd ); 648 `OR_MAP ( yp , tmpm , rs ); 656 i( is_f ) { 657 i( `ISSET_MAP ( yp , dd )) 658 id_y [ dd ]. lf_wa = 1; 659 `CLR_MAP ( yp , dd ); 662 `LOCK_OBJECTS ( dbv , gi ); 663 = `SH_TAILQ_NEXT ( , dd_lks , __db_lockobj ); 664 `OBJECT_UNLOCK ( , dx ); 666 `UNLOCK_OBJECTS ( dbv , gi ); 677 `LOCK_LOCKERS ( dbv , gi ); 678 id = 0; id < cou ; id++) { 679 i(! id_y [ id ]. vid ) 681 i(( t = `__lock_glock_t ( , 682 id_y [ id ].id, 0, & lockp )!0 ||ock= NULL ) 690 chd = `SH_LIST_FIRST (& lockp -> chd_lock , __db_lock ); 691 i( chd ! NULL ) { 693 c_y : = `SH_LIST_FIRST (& chd -> hdby , __db_lock ); 694 i( `SH_LIST_EMPTY (& chd -> hdby || = NULL ) 695 c_xt ; 697 ndx = -> dx ; 698 `OBJECT_LOCK_NDX ( , ndx ); 699 i( ! `SH_LIST_FIRST ( 700 & chd -> hdby , __db_lock ) || 701 ndx ! -> dx ) { 702 `OBJECT_UNLOCK ( , ndx ); 703 c_y ; 706 i( ! NULL && 707 -> us = DB_LSTAT_WAITING ) { 708 id_y [ id ]. ϡ_lock_id = chd ->id; 709 g_lock ; 711 `OBJECT_UNLOCK ( , ndx ); 713 c_xt : chd = `SH_LIST_NEXT ( 714 chd , chd_lk , __db_lock ); 715 } chd ! NULL ); 718 l_y : = `SH_LIST_FIRST (& lockp -> hdby , __db_lock ); 719 i(! `SH_LIST_EMPTY (& lockp -> hdby && ! NULL ) { 720 ndx = -> dx ; 721 `OBJECT_LOCK_NDX ( , ndx ); 722 i( ! `SH_LIST_FIRST (& lockp -> hdby , __db_lock ) || 723 -> dx ! ndx ) { 724 `OBJECT_UNLOCK ( , ndx ); 725 l_y ; 727 id_y [ id ]. ϡ_lock_id = lockp ->id; 728 g_lock : id_y [ id ]. ϡ_lock = `R_OFFSET (& -> gfo , ); 729 id_y [ id ]. ϡ_obj = -> obj ; 730 lo = ( DB_LOCKOBJ *)(( u_t8_t *) +p-> obj ); 731 id_y [ id ]. ϡ_ndx = lo -> dx ; 732 = `SH_DBT_PTR (& lo -> lockobj ); 733 i( lo -> lockobj . size >( db_pgno_t )) 734 `memy (& id_y [ id ]. pgno , 735 , ( db_pgno_t )); 737 id_y [ id ]. pgno = 0; 738 `OBJECT_UNLOCK ( , ndx ); 741 `UNLOCK_LOCKERS ( dbv , gi ); 747 * ocks = id ; 748 * idm = id_y ; 749 * bmp = bm ; 750 * lo = rs ; 751 `__os_ ( dbv , tmpm ); 752 de : i( `timeecist (& gi -> xt_timeout )) 753 gi -> xt_timeout = m_timeout ; 755 } } 758 $__dd_fd ( dbv , bmp , idm , ocks , oc , ddp ) 759 DB_ENV * dbv ; 760 u_t32_t * bmp , ocks , oc ; 761 lock_fo * idm ; 762 u_t32_t *** ddp ; 764 u_t32_t i , j , k , * mym , * tmpm , ** ; 765 u_t ndd , nddloc ; 766 t ; 768 #unde INITIAL_DEAD_ALLOC 769 #INITIAL_DEAD_ALLOC 8 ) 771 nddloc = INITIAL_DEAD_ALLOC ; 772 ndd = 0; 773 i(( t = `__os_mloc ( dbv , 774 nddloc * ( u_t32_t *), & )) != 0) 775 ( t ); 781 mym = bmp , i = 0; i < ocks ; i++, mym + oc ) { 782 i(! idm [ i ]. vid ) 784 j = 0; j < ocks ; j++) { 785 i(! `ISSET_MAP ( mym , j )) 789 tmpm = bmp + ( oc * j ); 790 `OR_MAP ( mym , tmpm , oc ); 791 i(! `ISSET_MAP ( mym , i )) 795 i( ndd + 2 > nddloc ) { 796 nddloc <<= 1; 801 i( `__os_loc ( dbv , 802 nddloc * ( u_t32_t ), 803 & ) != 0) { 804 [ ndd ] = NULL ; 805 * ddp = ; 809 [ ndd ++] = mym ; 812 k = 0; k < ocks ; k++) 813 i( `ISSET_MAP ( mym , k )) 814 idm [ k ]. vid = 0; 818 [ ndd ] = NULL ; 819 * ddp = ; 821 } } 824 $__dd_abt ( dbv , fo , u ) 825 DB_ENV * dbv ; 826 lock_fo * fo ; 827 * u ; 829 __db_lock * lockp ; 830 DB_LOCKER * lockp ; 831 DB_LOCKOBJ * sh_obj ; 832 DB_LOCKREGION * gi ; 833 DB_LOCKTAB * ; 834 t ; 836 * u = 0; 838 = dbv -> lk_hd ; 839 gi = -> gfo . imy ; 840 t = 0; 843 `LOCK_SYSTEM_LOCK ( dbv ); 844 `LOCK_LOCKERS ( dbv , gi ); 850 i(( t = `__lock_glock_t ( , 851 fo -> ϡ_lock_id , 0, & lockp )) != 0) 852 r ; 853 i( lockp = NULL || `F_ISSET ockp, DB_LOCKER_INABORT )) { 854 * u = DB_ALREADY_ABORTED ; 855 out ; 864 `OBJECT_LOCK_NDX ( , fo -> ϡ_ndx ); 865 i(( lockp = `SH_LIST_FIRST (& lockp -> hdby , __db_lock )= NULL ) { 866 * u = DB_ALREADY_ABORTED ; 867 de ; 869 i( `R_OFFSET (& -> gfo , lockp ! fo -> ϡ_lock || 870 lockp -> hd ! `R_OFFSET (& -> gfo , lockp ) || 871 lockp -> obj ! fo -> ϡ_obj ||ockp-> us ! DB_LSTAT_WAITING ) { 872 * u = DB_ALREADY_ABORTED ; 873 de ; 876 sh_obj = ( DB_LOCKOBJ *)(( u_t8_t *) lockp +ockp-> obj ); 879 lockp -> us = DB_LSTAT_ABORTED ; 880 `SH_TAILQ_REMOVE (& sh_obj -> was , lockp , lks , __db_lock ); 887 i( `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock = NULL ) { 888 `LOCK_OBJECTS ( dbv , gi ); 889 `SH_TAILQ_REMOVE (& gi -> dd_objs , 890 sh_obj , dd_lks , __db_lockobj ); 891 `UNLOCK_OBJECTS ( dbv , gi ); 893 t = `__lock_ome ( , sh_obj , NULL , 0); 894 `MUTEX_UNLOCK ( dbv , lockp -> mtx_lock ); 896 `STAT ( gi -> . _nddlocks ++); 897 de : `OBJECT_UNLOCK ( , fo -> ϡ_ndx ); 898 r : 899 out : `LOCK_SYSTEM_UNLOCK ( dbv ); 900 `UNLOCK_LOCKERS ( dbv , gi ); 901 ( t ); 902 } } 904 #ifde DIAGNOSTIC 906 $__dd_debug ( dbv , idm , bm , ocks , oc ) 907 DB_ENV * dbv ; 908 lock_fo * idm ; 909 u_t32_t * bm , ocks , oc ; 911 DB_MSGBUF mb ; 912 u_t32_t i , j , * mym ; 914 `DB_MSGBUF_INIT (& mb ); 916 `__db_msg ( dbv , "Waitsforrray\nWaiter:\tWaiting on:"); 917 mym = bm , i = 0; i < ocks ; i++, mym + oc ) { 918 i(! idm [ i ]. vid ) 921 `__db_msgadd ( dbv , & mb , 922 "%lx/%lu:\t", ( u_lg ) idm [ i ]. id , (u_lg)idm[i]. pgno ); 923 j = 0; j < ocks ; j++) 924 i( `ISSET_MAP ( mym , j )) 925 `__db_msgadd ( dbv , 926 & mb , " %lx", ( u_lg ) idm [ j ]. id ); 927 `__db_msgadd ( dbv , & mb , " %lu", ( u_lg ) idm [ i ]. ϡ_lock ); 928 `DB_MSGBUF_FLUSH ( dbv , & mb ); 930 } } 945 $__dd_vify ( idm , ddm , tmpm , igm , ocks , oc , which ) 946 lock_fo * idm ; 947 u_t32_t * ddm , * tmpm , * igm ; 948 u_t32_t ocks , oc , which ; 950 u_t32_t * tm ; 951 u_t32_t j ; 952 cou ; 954 `memt ( tmpm , 0, ( u_t32_t * oc ); 965 cou = 0; 966 j = 0; j < ocks ; j++) { 967 i(! `ISSET_MAP ( ddm , j || j = which ) 971 tm = igm + ( oc * j ); 979 i( idm [ j ]. lf_wa ) 980 `SET_MAP ( tm , j ); 981 `OR_MAP ( tmpm , tm , oc ); 982 cou ++; 985 i( cou == 1) 992 j = 0; j < ocks ; j++) { 993 i(! `ISSET_MAP ( ddm , j || j = which ) 995 i(! `ISSET_MAP ( tmpm , j )) 999 } } 1009 $__dd_isd ( a , b , lock_max , txn_max ) 1010 u_t32_t a , b ; 1011 u_t32_t lock_max , txn_max ; 1013 u_t32_t max ; 1016 i( a < DB_LOCK_MAXID && b > DB_LOCK_MAXID) 1018 i( b < DB_LOCK_MAXID && a > DB_LOCK_MAXID) 1022 max = txn_max ; 1023 i( a < DB_LOCK_MAXID ) 1024 max = lock_max ; 1035 i( a > max && b < max) 1037 i( b > max && a < max) 1040 ( a < b ); 1041 } } @../lock/lock_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/txn.h " 22 $__lock_chk ( dbv ) 23 DB_ENV * dbv ; 25 DB_LOCKER * l ; 26 DB_LOCKREGION * p ; 27 DB_LOCKREQ que ; 28 DB_LOCKTAB * ; 29 u_t32_t i ; 30 t ; 31 buf [ DB_THREADID_STRLEN ]; 33 = dbv -> lk_hd ; 34 p = -> gfo . imy ; 36 y : `LOCK_SYSTEM_LOCK ( dbv ); 37 `LOCK_LOCKERS ( dbv , p ); 39 t = 0; 40 i = 0; i < p -> lock_t_size ; i++) 41 `SH_TAILQ_FOREACH ( l , & -> lock_b [ i ], lks , __db_lock ) { 47 i( l -> id > TXN_MINIMUM ) 51 i( dbv -> `is_ive (dbv, l -> pid ,-> tid , 0)) 60 i( l -> nwres != 0) { 61 t = `__db_ed ( dbv , 63 l -> pid ,-> tid ); 70 `__db_msg ( dbv , "Freeingocks forocker %#lx: %s", 71 ( u_lg ) l -> id , dbv -> `thad_id_rg ( 72 dbv , l -> pid ,-> tid , buf )); 73 `LOCK_SYSTEM_UNLOCK ( dbv ); 74 `UNLOCK_LOCKERS ( dbv , p ); 75 `memt (& que , 0, (request)); 76 que . = DB_LOCK_PUT_ALL ; 77 i(( t = `__lock_vec ( dbv , 78 l , 0, & que , 1, NULL )) != 0) 79 ( t ); 88 i(( t = `__lock_mylock ( , l )) != 0) 89 ( t ); 90 y ; 93 `LOCK_SYSTEM_UNLOCK ( dbv ); 94 `UNLOCK_LOCKERS ( dbv , p ); 96 ( t ); 97 } } @../lock/lock_id.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/log.h " 22 $__lock_id_ ( dbv , idp ) 23 DB_ENV * dbv ; 24 u_t32_t * idp ; 26 DB_THREAD_INFO * ; 27 t ; 29 `PANIC_CHECK ( dbv ); 30 `ENV_REQUIRES_CONFIG ( dbv , 31 dbv -> lk_hd , "DB_ENV->lock_id", DB_INIT_LOCK ); 33 `ENV_ENTER ( dbv , ); 34 `REPLICATION_WRAP ( dbv , ( `__lock_id (dbv, idp , NULL )), t ); 35 `ENV_LEAVE ( dbv , ); 36 ( t ); 37 } } 46 $__lock_id ( dbv , idp , lkp ) 47 DB_ENV * dbv ; 48 u_t32_t * idp ; 49 DB_LOCKER ** lkp ; 51 DB_LOCKER * lk ; 52 DB_LOCKTAB * ; 53 DB_LOCKREGION * gi ; 54 u_t32_t id , * ids ; 55 nids , t ; 57 = dbv -> lk_hd ; 58 gi = -> gfo . imy ; 59 t = 0; 61 id = DB_LOCK_INVALIDID ; 62 lk = NULL ; 64 `LOCK_SYSTEM_LOCK ( dbv ); 74 `LOCK_LOCKERS ( dbv , gi ); 76 i( gi -> . _id = DB_LOCK_MAXID && 77 gi -> . _cur_maxid ! DB_LOCK_MAXID ) 78 gi -> . _id = DB_LOCK_INVALIDID ; 79 i( gi -> . _id =gi->. _cur_maxid ) { 80 i(( t = `__os_mloc ( dbv , 81 ( u_t32_t * gi -> . _ocks , & ids )) != 0) 82 r ; 83 nids = 0; 84 `SH_TAILQ_FOREACH ( lk , & gi -> locks , ulks , __db_lock ) 85 ids [ nids ++] = lk -> id ; 86 gi -> . _id = DB_LOCK_INVALIDID ; 87 gi -> . _cur_maxid = DB_LOCK_MAXID ; 88 i( nids != 0) 89 `__db_ida ( ids , nids , 90 & gi -> . _id , &gi->. _cur_maxid ); 91 `__os_ ( dbv , ids ); 93 id = ++ gi -> . _id ; 96 t = `__lock_glock_t ( , id , 1, & lk ); 98 r : `LOCK_SYSTEM_UNLOCK ( dbv ); 99 `UNLOCK_LOCKERS ( dbv , gi ); 101 i( idp ) 102 * idp = id ; 103 i( lkp ) 104 * lkp = lk ; 105 ( t ); 106 } } 114 $__lock_t_thad_id ( ef_g , pid , tid ) 115 * ef_g ; 116 pid_t pid ; 117 db_thadid_t tid ; 119 DB_LOCKER * ef ; 121 ef = ef_g ; 122 ef -> pid =id; 123 ef -> tid =id; 124 } } 133 $__lock_id__ ( dbv , id ) 134 DB_ENV * dbv ; 135 u_t32_t id ; 137 DB_LOCKER * sh_lock ; 138 DB_LOCKREGION * gi ; 139 DB_LOCKTAB * ; 140 DB_THREAD_INFO * ; 141 hd_check , t , t_t ; 143 `PANIC_CHECK ( dbv ); 144 `ENV_REQUIRES_CONFIG ( dbv , 145 dbv -> lk_hd , "DB_ENV->lock_id_", DB_INIT_LOCK ); 147 `ENV_ENTER ( dbv , ); 149 hd_check = `IS_ENV_REPLICATED ( dbv ); 150 i( hd_check && ( t = `__v_p_r ( dbv , 1)) != 0) { 151 hd_check = 0; 152 r ; 155 = dbv -> lk_hd ; 156 gi = -> gfo . imy ; 158 `LOCK_SYSTEM_LOCK ( dbv ); 159 `LOCK_LOCKERS ( dbv , gi ); 160 i(( t = 161 `__lock_glock_t ( dbv -> lk_hd , id , 0, & sh_lock )) == 0) 162 t = `__lock_lock ( , gi , sh_lock ); 163 `UNLOCK_LOCKERS ( dbv , gi ); 164 `LOCK_SYSTEM_UNLOCK ( dbv ); 166 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 167 t = t_t ; 168 r : `ENV_LEAVE ( dbv , ); 169 ( t ); 170 } } 179 $__lock_id_ ( dbv , sh_lock ) 180 DB_ENV * dbv ; 181 DB_LOCKER * sh_lock ; 183 DB_LOCKTAB * ; 184 DB_LOCKREGION * gi ; 185 t ; 187 = dbv -> lk_hd ; 188 gi = -> gfo . imy ; 189 t = 0; 191 i( sh_lock -> ocks != 0) { 192 `__db_rx ( dbv , "Locker still hasocks"); 193 t = EINVAL ; 194 r ; 197 `LOCK_SYSTEM_LOCK ( dbv ); 198 `LOCK_LOCKERS ( dbv , gi ); 199 t = `__lock_lock ( , gi , sh_lock ); 200 `UNLOCK_LOCKERS ( dbv , gi ); 201 `LOCK_SYSTEM_UNLOCK ( dbv ); 203 r : 204 ( t ); 205 } } 215 $__lock_id_t ( dbv , cur_id , max_id ) 216 DB_ENV * dbv ; 217 u_t32_t cur_id , max_id ; 219 DB_LOCKTAB * ; 220 DB_LOCKREGION * gi ; 222 `ENV_REQUIRES_CONFIG ( dbv , 223 dbv -> lk_hd , "lock_id_t", DB_INIT_LOCK ); 225 = dbv -> lk_hd ; 226 gi = -> gfo . imy ; 227 gi -> . _id = cur_id ; 228 gi -> . _cur_maxid = max_id ; 231 } } 247 $__lock_glock ( , lock , , ) 248 DB_LOCKTAB * ; 249 u_t32_t lock ; 250 ; 251 DB_LOCKER ** ; 253 DB_ENV * dbv ; 254 DB_LOCKREGION * gi ; 255 t ; 257 `COMPQUIET ( gi , NULL ); 258 dbv = ->dbenv; 259 gi = -> gfo . imy ; 261 `LOCK_SYSTEM_LOCK ( dbv ); 262 `LOCK_LOCKERS ( dbv , gi ); 263 t = `__lock_glock_t ( , lock , , ); 264 `UNLOCK_LOCKERS ( dbv , gi ); 265 `LOCK_SYSTEM_UNLOCK ( dbv ); 267 ( t ); 268 } } 271 $__lock_glock_t ( , lock , , ) 272 DB_LOCKTAB * ; 273 u_t32_t lock ; 274 ; 275 DB_LOCKER ** ; 277 DB_ENV * dbv ; 278 DB_LOCKER * sh_lock ; 279 DB_LOCKREGION * gi ; 280 u_t32_t dx ; 282 dbv = ->dbenv; 283 gi = -> gfo . imy ; 285 `LOCKER_HASH ( , gi , lock , dx ); 291 `SH_TAILQ_FOREACH ( sh_lock , & -> lock_b [ dx ], lks , __db_lock ) 292 i( sh_lock -> id = lock ) 294 i( sh_lock = NULL && ) { 296 i(( sh_lock = `SH_TAILQ_FIRST ( 297 & gi -> _locks , __db_lock )= NULL ) 298 ( `__lock_nomem ( dbv , "lockerntries")); 299 `SH_TAILQ_REMOVE ( 300 & gi -> _locks , sh_lock , lks , __db_lock ); 301 ++ gi -> . _ocks ; 302 #ifde HAVE_STATISTICS 303 i( gi -> . _ocks >egi->. _maxocks ) 304 gi -> . _maxocks =egi->. _ocks ; 307 sh_lock -> id = lock ; 308 dbv -> `thad_id (dbv, & sh_lock -> pid , &sh_lock-> tid ); 309 sh_lock -> dd_id = 0; 310 sh_lock -> ma_lock = INVALID_ROFF ; 311 sh_lock -> _lock = INVALID_ROFF ; 312 `SH_LIST_INIT (& sh_lock -> chd_lock ); 313 sh_lock -> ags = 0; 314 `SH_LIST_INIT (& sh_lock -> hdby ); 315 sh_lock -> ocks = 0; 316 sh_lock -> nwres = 0; 317 sh_lock -> lk_timeout = 0; 318 `timeecr (& sh_lock -> tx_expe ); 319 `timeecr (& sh_lock -> lk_expe ); 321 `SH_TAILQ_INSERT_HEAD ( 322 & -> lock_b [ dx ], sh_lock , lks , __db_lock ); 323 `SH_TAILQ_INSERT_HEAD (& gi -> locks , 324 sh_lock , ulks , __db_lock ); 327 * = sh_lock ; 329 } } 338 $__lock_addmylock ( dbv , pid , id ) 339 DB_ENV * dbv ; 340 u_t32_t pid , id ; 342 DB_LOCKER * lockp , * mlockp ; 343 DB_LOCKREGION * gi ; 344 DB_LOCKTAB * ; 345 t ; 347 `COMPQUIET ( gi , NULL ); 348 = dbv -> lk_hd ; 349 gi = -> gfo . imy ; 350 `LOCK_SYSTEM_LOCK ( dbv ); 351 `LOCK_LOCKERS ( dbv , gi ); 354 i(( t = `__lock_glock_t ( , pid , 1, & mlockp )) != 0) 355 r ; 364 i(( t = `__lock_glock_t ( , id , 1, & lockp )) != 0) 365 r ; 368 lockp -> _lock = `R_OFFSET (& -> gfo , mlockp ); 371 i( mlockp -> ma_lock = INVALID_ROFF ) 372 lockp -> ma_lock = `R_OFFSET (& -> gfo , mlockp ); 374 lockp -> ma_lock = mlockp ->master_locker; 375 mlockp = `R_ADDR (& -> gfo , mlockp-> ma_lock ); 383 `SH_LIST_INSERT_HEAD ( 384 & mlockp -> chd_lock , lockp , chd_lk , __db_lock ); 386 r : `LOCK_SYSTEM_UNLOCK ( dbv ); 387 `UNLOCK_LOCKERS ( dbv , gi ); 389 ( t ); 390 } } 401 $__lock_mylock ( , sh_lock ) 402 DB_LOCKTAB * ; 403 DB_LOCKER * sh_lock ; 405 DB_ENV * dbv ; 406 DB_LOCKREGION * gi ; 407 t ; 409 dbv = ->dbenv; 410 gi = -> gfo . imy ; 412 i( sh_lock = NULL ) 415 `LOCK_SYSTEM_LOCK ( dbv ); 416 `LOCK_LOCKERS ( dbv , gi ); 418 i( `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock ! NULL ) { 419 t = EINVAL ; 420 `__db_rx ( dbv , "Freeingocker withocks"); 421 r ; 425 i( sh_lock -> ma_lock ! INVALID_ROFF ) 426 `SH_LIST_REMOVE ( sh_lock , chd_lk , __db_lock ); 428 t = `__lock_lock ( , gi , sh_lock ); 430 r : `LOCK_SYSTEM_UNLOCK ( dbv ); 431 `UNLOCK_LOCKERS ( dbv , gi ); 432 ( t ); 433 } } 444 $__lock_lock ( , gi , sh_lock ) 445 DB_LOCKTAB * ; 446 DB_LOCKREGION * gi ; 447 DB_LOCKER * sh_lock ; 450 u_t32_t dx ; 451 `LOCKER_HASH ( , gi , sh_lock -> id , dx ); 452 `SH_TAILQ_REMOVE (& -> lock_b [ dx ], sh_lock , lks , __db_lock ); 453 `SH_TAILQ_INSERT_HEAD ( 454 & gi -> _locks , sh_lock , lks , __db_lock ); 455 `SH_TAILQ_REMOVE (& gi -> locks , sh_lock , ulks , __db_lock ); 456 gi -> . _ocks --; 458 } } @../lock/lock_list.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/log.h " 15 __lock_st_cmp __P ((const *, const *)); 45 #MAX_PGNOS 0xffff ) 52 #RET_SIZE ( size , cou ) ((size) + \ 53 ( u_t32_t + ( cou * 2 * ( u_t16_t )) ) 55 #PUT_COUNT ( dp , cou d{ u_t32_t * = (u_int32_t *)dp;\ 56 * = cou ; \ 57 dp = ( u_t8_t *)dp + \ 58 ( u_t32_t ); \ 59 } 0) ) 60 #PUT_PCOUNT ( dp , cou d{ u_t16_t * = (u_int16_t *)dp;\ 61 * = cou ; \ 62 dp = ( u_t8_t *)dp + \ 63 ( u_t16_t ); \ 64 } 0) ) 65 #PUT_SIZE ( dp , size d{ u_t16_t * = (u_int16_t *)dp;\ 66 * = size ; \ 67 dp = ( u_t8_t *)dp + \ 68 ( u_t16_t ); \ 69 } 0) ) 70 #PUT_PGNO ( dp , pgno d{ db_pgno_t * = (db_pgno_t *)dp;\ 71 * = pgno ; \ 72 dp = ( u_t8_t *)dp + \ 73 ( db_pgno_t ); \ 74 } 0) ) 75 #COPY_OBJ ( dp , obj ) do { \ 76 `memy ( dp , \ 77 ( obj )-> da , (obj)-> size ); \ 78 dp = ( u_t8_t *)dp + \ 79 `DB_ALIGN (( obj )-> size , \ 80 ( u_t32_t )); \ 81 } 0) ) 82 #GET_COUNT ( dp , cou ) do { \ 83 ( cou *( u_t32_t *) dp ; \ 84 dp = ( u_t8_t *)dp + \ 85 ( u_t32_t ); \ 86 } 0) ) 87 #GET_PCOUNT ( dp , cou ) do { \ 88 ( cou *( u_t16_t *) dp ; \ 89 dp = ( u_t8_t *)dp + \ 90 ( u_t16_t ); \ 91 } 0) ) 92 #GET_SIZE ( dp , size ) do { \ 93 ( size *( u_t16_t *) dp ; \ 94 dp = ( u_t8_t *)dp + \ 95 ( u_t16_t ); \ 96 } 0) ) 97 #GET_PGNO ( dp , pgno ) do { \ 98 ( pgno *( db_pgno_t *) dp ; \ 99 dp = ( u_t8_t *)dp + \ 100 ( db_pgno_t ); \ 101 } 0) ) 109 $__lock_fix_li ( dbv , li_dbt , ocks ) 110 DB_ENV * dbv ; 111 DBT * li_dbt ; 112 u_t32_t ocks ; 114 DBT * obj ; 115 DB_LOCK_ILOCK * lock , * ock ; 116 u_t32_t i , j , nfid , gno , size ; 117 u_t8_t * da , * dp ; 118 t ; 120 i(( size = li_dbt ->size) == 0) 123 obj = ( DBT *) li_dbt -> da ; 133 ocks ) { 135 size = `RET_SIZE ( obj ->size, 1); 136 i(( t = `__os_mloc ( dbv , size , & da )) != 0) 137 ( t ); 139 dp = da ; 140 `PUT_COUNT ( dp , 1); 141 `PUT_PCOUNT ( dp , 0); 142 `PUT_SIZE ( dp , obj -> size ); 143 `COPY_OBJ ( dp , obj ); 147 `qst ( li_dbt -> da , ocks , ( DBT ), __lock_st_cmp ); 150 nfid = gno = 0; 151 i = 0; 152 i( obj -> size !( DB_LOCK_ILOCK )) 153 n_ock ; 155 nfid = 1; 156 ock = ( DB_LOCK_ILOCK *) obj -> da ; 159 j = 0; 160 obj [0]. un = 0; 161 i = 1; i < ocks ; i++) { 162 i( obj [ i ]. size !( DB_LOCK_ILOCK )) 164 lock = ( DB_LOCK_ILOCK *) obj [ i ]. da ; 165 i( obj [ j ]. un < MAX_PGNOS && 166 lock -> ty = ock ->type && 167 `memcmp ( lock -> feid , 168 ock -> feid , DB_FILE_ID_LEN ) == 0) { 169 obj [ j ]. un ++; 170 gno ++; 172 nfid ++; 173 ock = lock ; 174 j = i ; 175 obj [ j ]. un = 0; 179 n_ock : size = nfid * ( DB_LOCK_ILOCK ); 180 size + gno * ( db_pgno_t ); 182 nfid + ocks - i ; 183 ; i < ocks ; i++) { 184 size + obj [ i ].size; 185 obj [ i ]. un = 0; 188 size = `RET_SIZE (size, nfid ); 189 i(( t = `__os_mloc ( dbv , size , & da )) != 0) 190 ( t ); 192 dp = da ; 193 `PUT_COUNT ( dp , nfid ); 195 i = 0; i < ocks ; i = j ) { 196 `PUT_PCOUNT ( dp , obj [ i ]. un ); 197 `PUT_SIZE ( dp , obj [ i ]. size ); 198 `COPY_OBJ ( dp , & obj [ i ]); 199 lock = ( DB_LOCK_ILOCK *) obj [ i ]. da ; 200 j = i + 1; j <+ obj [i]. un ; j++) { 201 lock = ( DB_LOCK_ILOCK *) obj [ j ]. da ; 202 `PUT_PGNO ( dp , lock -> pgno ); 207 `__os_ ( dbv , li_dbt -> da ); 209 li_dbt -> da = data; 210 li_dbt -> size = size; 213 } } 220 $__lock_g_li ( dbv , lock , ags , lock_mode , li ) 221 DB_ENV * dbv ; 222 DB_LOCKER * lock ; 223 u_t32_t ags ; 224 db_lockmode_t lock_mode ; 225 DBT * li ; 227 DBT obj_dbt ; 228 DB_LOCK t_lock ; 229 DB_LOCK_ILOCK * lock ; 230 DB_LOCKTAB * ; 231 db_pgno_t ve_pgno ; 232 u_t16_t gno , size ; 233 u_t32_t i , ocks ; 234 t ; 235 * da , * dp ; 237 i( li -> size == 0) 239 t = 0; 240 da = NULL ; 242 = dbv -> lk_hd ; 243 dp = li -> da ; 250 i(( u_t ) dp ! `DB_ALIGN ((u_t)dp, ( u_t32_t ))) { 251 i(( t = `__os_mloc ( dbv , li -> size , & da )) != 0) 252 ( t ); 253 `memy ( da , li ->da,i-> size ); 254 dp = da ; 257 `GET_COUNT ( dp , ocks ); 258 `LOCK_SYSTEM_LOCK ( dbv ); 260 i = 0; i < ocks ; i++) { 261 `GET_PCOUNT ( dp , gno ); 262 `GET_SIZE ( dp , size ); 263 lock = ( DB_LOCK_ILOCK * dp ; 264 ve_pgno = lock -> pgno ; 265 obj_dbt . da = dp ; 266 obj_dbt . size = size; 267 dp = (( u_t8_t *)dp+ `DB_ALIGN ( size , ( u_t32_t )); 269 i(( t = `__lock_g_ ( , lock , 270 ags , & obj_dbt , lock_mode , 0, & t_lock )) != 0) { 271 lock -> pgno = ve_pgno ; 272 r ; 274 i( gno != 0) 275 `GET_PGNO ( dp , lock -> pgno ); 276 } gno -- != 0); 277 lock -> pgno = ve_pgno ; 280 r : `LOCK_SYSTEM_UNLOCK ( dbv ); 281 i( da ! NULL ) 282 `__os_ ( dbv , da ); 283 ( t ); 284 } } 286 #UINT32_CMP ( A , B ((A=(B? 0 : ((A> (B? 1 : -1)) ) 288 $__lock_st_cmp ( a , b ) 289 cڡ * a , * b ; 291 cڡ DBT * d1 , * d2 ; 292 DB_LOCK_ILOCK * l1 , * l2 ; 294 d1 = a ; 295 d2 = b ; 298 i( d1 -> size !( DB_LOCK_ILOCK )) { 299 i( d2 -> size !( DB_LOCK_ILOCK )) 300 ( `UINT32_CMP ( d1 -> size , d2 ->size)); 303 } i( d2 -> size !( DB_LOCK_ILOCK )) 306 l1 = d1 -> da ; 307 l2 = d2 -> da ; 308 i( l1 -> ty ! l2 ->type) 309 ( `UINT32_CMP ( l1 -> ty , l2 ->type)); 310 ( `memcmp ( l1 -> feid , l2 ->feid, DB_FILE_ID_LEN )); 311 } } 317 $__lock_li_t ( dbv , li ) 318 DB_ENV * dbv ; 319 DBT * li ; 321 DB_LOCK_ILOCK * lock ; 322 db_pgno_t pgno ; 323 u_t16_t gno , size ; 324 u_t32_t i , ocks ; 325 u_t8_t * fidp ; 326 * m ; 327 * dp ; 329 i( li -> size == 0) 331 dp = li -> da ; 333 `GET_COUNT ( dp , ocks ); 335 i = 0; i < ocks ; i++) { 336 `GET_PCOUNT ( dp , gno ); 337 `GET_SIZE ( dp , size ); 338 lock = ( DB_LOCK_ILOCK * dp ; 339 fidp = lock -> feid ; 340 i( `__dbg_g_me ( dbv , fidp , & m ) != 0) 341 m = NULL ; 342 `tf ("\t"); 343 i( m = NULL ) 344 `tf ("(%lx %lx %lx %lx %lx)", 345 ( u_lg ) fidp [0], (u_long)fidp[1], (u_long)fidp[2], 346 ( u_lg ) fidp [3], (u_long)fidp[4]); 348 `tf ("%-25s", m ); 349 dp = (( u_t8_t *)dp+ `DB_ALIGN ( size , ( u_t32_t )); 350 pgno = lock ->pgno; 352 `tf (" %d", pgno ); 353 i( gno != 0) 354 `GET_PGNO ( dp , pgno ); 355 } gno -- != 0); 356 `tf ("\n"); 358 } } @../lock/lock_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 21 $__lock_v_ ( dbv ) 22 DB_ENV * dbv ; 30 dbv -> lk_max = DB_LOCK_DEFAULT_N ; 31 dbv -> lk_max_locks = DB_LOCK_DEFAULT_N ; 32 dbv -> lk_max_objes = DB_LOCK_DEFAULT_N ; 35 } } 44 $__lock_v_deroy ( dbv ) 45 DB_ENV * dbv ; 47 i( dbv -> lk_cis ! NULL ) { 48 `__os_ ( dbv , dbv-> lk_cis ); 49 dbv -> lk_cis = NULL ; 51 } } 61 $__lock_g_lk_cis ( dbv , lk_ci , lk_mode ) 62 DB_ENV * dbv ; 63 cڡ u_t8_t ** lk_ci ; 64 * lk_mode ; 66 DB_LOCKTAB * ; 68 `ENV_NOT_CONFIGURED ( dbv , 69 dbv -> lk_hd , "DB_ENV->g_lk_cis", DB_INIT_LOCK ); 71 = dbv -> lk_hd ; 73 i( `LOCKING_ON ( dbv )) { 75 i( lk_ci ! NULL ) 76 * lk_ci = -> cis ; 77 i( lk_mode ! NULL ) 78 * lk_mode = (( DB_LOCKREGION *) 79 ( -> gfo . imy ))-> . _nmodes ; 81 i( lk_ci ! NULL ) 82 * lk_ci = dbv -> lk_cis ; 83 i( lk_mode ! NULL ) 84 * lk_mode = dbv -> lk_modes ; 87 } } 96 $__lock_t_lk_cis ( dbv , lk_cis , lk_modes ) 97 DB_ENV * dbv ; 98 u_t8_t * lk_cis ; 99 lk_modes ; 101 t ; 103 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_lk_conflicts"); 105 i( dbv -> lk_cis ! NULL ) { 106 `__os_ ( dbv , dbv-> lk_cis ); 107 dbv -> lk_cis = NULL ; 109 i(( t = `__os_mloc ( dbv , 110 ( size_t )( lk_modes *k_modes), & dbv -> lk_cis )) != 0) 111 ( t ); 112 `memy ( 113 dbv -> lk_cis ,k_cis, ( size_t )( lk_modes *k_modes)); 114 dbv -> lk_modes =k_modes; 117 } } 123 $__lock_g_lk_de ( dbv , lk_dep ) 124 DB_ENV * dbv ; 125 u_t32_t * lk_dep ; 127 DB_LOCKTAB * ; 129 `ENV_NOT_CONFIGURED ( dbv , 130 dbv -> lk_hd , "DB_ENV->g_lk_de", DB_INIT_LOCK ); 132 i( `LOCKING_ON ( dbv )) { 133 = dbv -> lk_hd ; 134 `LOCK_REGION_LOCK ( dbv ); 135 * lk_dep = (( DB_LOCKREGION *) -> gfo . imy )-> de ; 136 `LOCK_REGION_UNLOCK ( dbv ); 138 * lk_dep = dbv -> lk_de ; 140 } } 149 $__lock_t_lk_de ( dbv , lk_de ) 150 DB_ENV * dbv ; 151 u_t32_t lk_de ; 153 DB_LOCKTAB * ; 154 DB_LOCKREGION * gi ; 155 t ; 157 `ENV_NOT_CONFIGURED ( dbv , 158 dbv -> lk_hd , "DB_ENV->t_lk_de", DB_INIT_LOCK ); 160 lk_de ) { 161 DB_LOCK_DEFAULT : 162 DB_LOCK_EXPIRE : 163 DB_LOCK_MAXLOCKS : 164 DB_LOCK_MAXWRITE : 165 DB_LOCK_MINLOCKS : 166 DB_LOCK_MINWRITE : 167 DB_LOCK_OLDEST : 168 DB_LOCK_RANDOM : 169 DB_LOCK_YOUNGEST : 172 `__db_rx ( dbv , 174 ( EINVAL ); 177 t = 0; 178 i( `LOCKING_ON ( dbv )) { 179 = dbv -> lk_hd ; 180 gi = -> gfo . imy ; 181 `LOCK_REGION_LOCK ( dbv ); 191 i( gi -> de ! DB_LOCK_NORUN && 192 lk_de ! DB_LOCK_DEFAULT && 193 gi -> de ! lk_de ) { 194 `__db_rx ( dbv , 196 t = EINVAL ; 198 i( gi -> de = DB_LOCK_NORUN ) 199 gi -> de = lk_de ; 200 `LOCK_REGION_UNLOCK ( dbv ); 202 dbv -> lk_de =k_detect; 204 ( t ); 205 } } 211 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 212 DB_ENV * dbv ; 213 u_t32_t * lk_maxp ; 215 `ENV_NOT_CONFIGURED ( dbv , 216 dbv -> lk_hd , "DB_ENV->g_lk_maxlocks", DB_INIT_LOCK ); 218 i( `LOCKING_ON ( dbv )) { 220 * lk_maxp = (( DB_LOCKREGION *) 221 dbv -> lk_hd -> gfo . imy )-> . _maxlocks ; 223 * lk_maxp = dbv -> lk_max ; 225 } } 234 $__lock_t_lk_max_locks ( dbv , lk_max ) 235 DB_ENV * dbv ; 236 u_t32_t lk_max ; 238 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_lk_max_locks"); 240 dbv -> lk_max =k_max; 242 } } 248 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 249 DB_ENV * dbv ; 250 u_t32_t * lk_maxp ; 252 `ENV_NOT_CONFIGURED ( dbv , 253 dbv -> lk_hd , "DB_ENV->g_lk_max_locks", DB_INIT_LOCK ); 255 i( `LOCKING_ON ( dbv )) { 257 * lk_maxp = (( DB_LOCKREGION *) 258 dbv -> lk_hd -> gfo . imy )-> . _maxlocks ; 260 * lk_maxp = dbv -> lk_max_locks ; 262 } } 271 $__lock_t_lk_max_locks ( dbv , lk_max ) 272 DB_ENV * dbv ; 273 u_t32_t lk_max ; 275 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_lk_max_lockers"); 277 dbv -> lk_max_locks = lk_max ; 279 } } 285 $__lock_g_lk_max_objes ( dbv , lk_maxp ) 286 DB_ENV * dbv ; 287 u_t32_t * lk_maxp ; 289 `ENV_NOT_CONFIGURED ( dbv , 290 dbv -> lk_hd , "DB_ENV->g_lk_max_objes", DB_INIT_LOCK ); 292 i( `LOCKING_ON ( dbv )) { 294 * lk_maxp = (( DB_LOCKREGION *) 295 dbv -> lk_hd -> gfo . imy )-> . _maxobjes ; 297 * lk_maxp = dbv -> lk_max_objes ; 299 } } 308 $__lock_t_lk_max_objes ( dbv , lk_max ) 309 DB_ENV * dbv ; 310 u_t32_t lk_max ; 312 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_lk_max_objects"); 314 dbv -> lk_max_objes = lk_max ; 316 } } 323 $__lock_g_v_timeout ( dbv , timeou , ag ) 324 DB_ENV * dbv ; 325 db_timeout_t * timeou ; 326 u_t32_t ag ; 328 DB_LOCKTAB * ; 329 DB_LOCKREGION * gi ; 330 t ; 332 `ENV_NOT_CONFIGURED ( dbv , 333 dbv -> lk_hd , "DB_ENV->g_v_timeout", DB_INIT_LOCK ); 335 t = 0; 336 i( `LOCKING_ON ( dbv )) { 337 = dbv -> lk_hd ; 338 gi = -> gfo . imy ; 339 `LOCK_REGION_LOCK ( dbv ); 340 ag ) { 341 DB_SET_LOCK_TIMEOUT : 342 * timeou = gi -> lk_timeout ; 344 DB_SET_TXN_TIMEOUT : 345 * timeou = gi -> tx_timeout ; 348 t = 1; 351 `LOCK_REGION_UNLOCK ( dbv ); 353 ag ) { 354 DB_SET_LOCK_TIMEOUT : 355 * timeou = dbv -> lk_timeout ; 357 DB_SET_TXN_TIMEOUT : 358 * timeou = dbv -> tx_timeout ; 361 t = 1; 365 i( t ) 366 t = `__db_ ( dbv , "DB_ENV->get_timeout", 0); 368 ( t ); 369 } } 378 $__lock_t_v_timeout ( dbv , timeout , ags ) 379 DB_ENV * dbv ; 380 db_timeout_t timeout ; 381 u_t32_t ags ; 383 DB_LOCKTAB * ; 384 DB_LOCKREGION * gi ; 385 t ; 387 `ENV_NOT_CONFIGURED ( dbv , 388 dbv -> lk_hd , "DB_ENV->t_v_timeout", DB_INIT_LOCK ); 390 t = 0; 391 i( `LOCKING_ON ( dbv )) { 392 = dbv -> lk_hd ; 393 gi = -> gfo . imy ; 394 `LOCK_REGION_LOCK ( dbv ); 395 ags ) { 396 DB_SET_LOCK_TIMEOUT : 397 gi -> lk_timeout = timeout ; 399 DB_SET_TXN_TIMEOUT : 400 gi -> tx_timeout = timeout ; 403 t = 1; 406 `LOCK_REGION_UNLOCK ( dbv ); 408 ags ) { 409 DB_SET_LOCK_TIMEOUT : 410 dbv -> lk_timeout = timeout ; 412 DB_SET_TXN_TIMEOUT : 413 dbv -> tx_timeout = timeout ; 416 t = 1; 420 i( t ) 421 t = `__db_ ( dbv , "DB_ENV->set_timeout", 0); 423 ( t ); 424 } } @../lock/lock_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 14 __lock_gi_ __P (( DB_ENV *, DB_LOCKTAB *)); 15 size_t 16 __lock_gi_size __P (( DB_ENV *)); 22 #DB_LOCK_RIW_N 9 ) 23 cڡ u_t8_t gdb_riw_cis [] = { 41 #DB_LOCK_CDB_N 5 ) 42 cڡ u_t8_t gdb_cdb_cis [] = { 58 $__lock_ݒ ( dbv , _ok ) 59 DB_ENV * dbv ; 60 _ok ; 62 DB_LOCKREGION * gi ; 63 DB_LOCKTAB * ; 64 size_t size ; 65 gi_locked , t ; 67 gi_locked = 0; 70 i(( t = `__os_oc ( dbv , 1, ( DB_LOCKTAB ), & )) != 0) 71 ( t ); 72 -> dbv = dbenv; 75 -> gfo . dbv = dbenv; 76 -> gfo . ty = REGION_TYPE_LOCK ; 77 -> gfo . id = INVALID_REGION_ID ; 78 -> gfo . ags = REGION_JOIN_OK ; 79 i( _ok ) 80 `F_SET (& -> gfo , REGION_CREATE_OK ); 81 size = `__lock_gi_size ( dbv ); 82 i(( t = `__v_gi_ch ( dbv , & -> gfo , size )) != 0) 83 r ; 86 i( `F_ISSET (& -> gfo , REGION_CREATE )) 87 i(( t = `__lock_gi_ ( dbv , )) != 0) 88 r ; 91 gi = -> gfo . imy = 92 `R_ADDR (& -> gfo ,t->gfo. -> imy ); 95 -> cis = `R_ADDR (&-> gfo , gi -> cf_off ); 96 -> obj_b = `R_ADDR (&-> gfo , gi -> obj_off ); 97 -> obj_ = `R_ADDR (&-> gfo , gi -> _off ); 98 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 99 -> obj_mtx = `R_ADDR (&-> gfo , gi -> mtx_off ); 101 -> lock_b = `R_ADDR (&-> gfo , gi -> lock_off ); 103 dbv -> lk_hd = ; 105 `LOCK_SYSTEM_LOCK ( dbv ); 106 gi_locked = 1; 108 i( dbv -> lk_de ! DB_LOCK_NORUN ) { 118 i( gi -> de ! DB_LOCK_NORUN && 119 dbv -> lk_de ! DB_LOCK_DEFAULT && 120 gi -> de ! dbv -> lk_de ) { 121 `__db_rx ( dbv , 123 t = EINVAL ; 124 r ; 126 i( gi -> de = DB_LOCK_NORUN ) 127 gi -> de = dbv -> lk_de ; 134 i( dbv -> lk_timeout != 0) 135 gi -> lk_timeout = dbv ->lk_timeout; 136 i( dbv -> tx_timeout != 0) 137 gi -> tx_timeout = dbv ->tx_timeout; 139 `LOCK_SYSTEM_UNLOCK ( dbv ); 140 gi_locked = 0; 144 r : dbv -> lk_hd = NULL ; 145 i( -> gfo . addr ! NULL ) { 146 i( gi_locked ) { 147 `LOCK_SYSTEM_UNLOCK ( dbv ); 149 () `__v_gi_dach ( dbv , & -> gfo , 0); 152 `__os_ ( dbv , ); 153 ( t ); 154 } } 161 $__lock_gi_ ( dbv , ) 162 DB_ENV * dbv ; 163 DB_LOCKTAB * ; 165 cڡ u_t8_t * lk_cis ; 166 __db_lock * ; 167 DB_LOCKER * lidp ; 168 DB_LOCKOBJ * ; 169 DB_LOCKREGION * gi ; 170 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 171 db_mux_t * mtxp ; 173 u_t32_t i ; 174 u_t8_t * addr ; 175 lk_modes , t ; 177 i(( t = `__v_loc (& -> gfo , 178 ( DB_LOCKREGION ), & -> gfo . imy )) != 0) 179 mem_r ; 180 -> gfo . -> imy = `R_OFFSET (<->reginfo,t->reginfo.primary); 181 gi = -> gfo . imy ; 182 `memt ( gi , 0, (*region)); 184 i(( t = `__mux_loc ( 185 dbv , MTX_LOCK_REGION , 0, & gi -> mtx_gi )) != 0) 186 ( t ); 189 i( dbv -> lk_modes == 0) 190 i( `CDB_LOCKING ( dbv )) { 191 lk_modes = DB_LOCK_CDB_N ; 192 lk_cis = db_cdb_cis ; 194 lk_modes = DB_LOCK_RIW_N ; 195 lk_cis = db_riw_cis ; 198 lk_modes = dbv ->lk_modes; 199 lk_cis = dbv ->lk_conflicts; 202 gi -> ed_dd = 0; 203 `timeecr (& gi -> xt_timeout ); 204 gi -> de = DB_LOCK_NORUN ; 205 gi -> lk_timeout = dbv ->lk_timeout; 206 gi -> tx_timeout = dbv ->tx_timeout; 207 gi -> lock_t_size = `__db_bsize ( dbv -> lk_max_locks ); 208 gi -> obje_t_size = `__db_bsize ( dbv -> lk_max_objes ); 209 `memt (& gi -> , 0, (region->stat)); 210 gi -> . _id = 0; 211 gi -> . _cur_maxid = DB_LOCK_MAXID ; 212 gi -> . _maxlocks = dbv -> lk_max ; 213 gi -> . _maxlocks = dbv -> lk_max_locks ; 214 gi -> . _maxobjes = dbv -> lk_max_objes ; 215 gi -> . _nmodes = lk_modes ; 218 i(( t = `__v_loc ( 219 & -> gfo , ( size_t )( lk_modes *k_modes), & addr )) != 0) 220 mem_r ; 221 `memy ( addr , lk_cis , ( size_t )( lk_modes *k_modes)); 222 gi -> cf_off = `R_OFFSET (& -> gfo , addr ); 225 i(( t = `__v_loc (& -> gfo , 226 gi -> obje_t_size * ( DB_HASHTAB ), & addr )) != 0) 227 mem_r ; 228 `__db_hash ( addr , gi -> obje_t_size ); 229 gi -> obj_off = `R_OFFSET (& -> gfo , addr ); 231 i(( t = `__v_loc (& -> gfo , 232 gi -> obje_t_size * ( DB_LOCK_HSTAT ), & addr )) != 0) 233 mem_r ; 234 `memt ( addr , 0, gi -> obje_t_size * ( DB_LOCK_HSTAT )); 235 gi -> _off = `R_OFFSET (& -> gfo , addr ); 236 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 237 i(( t = `__v_loc (& -> gfo , 238 gi -> obje_t_size * ( db_mux_t ), & mtxp )) != 0) 239 mem_r ; 240 gi -> mtx_off = `R_OFFSET (& -> gfo , mtxp ); 241 i = 0; i < gi -> obje_t_size ; i++) { 242 i(( t = `__mux_loc ( 243 dbv , MTX_LOCK_REGION , 0, & mtxp [ i ])) != 0) 244 ( t ); 246 i(( t = `__mux_loc ( 247 dbv , MTX_LOCK_REGION , 0, & gi -> mtx_objs )) != 0) 248 ( t ); 250 i(( t = `__mux_loc ( 251 dbv , MTX_LOCK_REGION , 0, & gi -> mtx_locks )) != 0) 252 ( t ); 254 i(( t = `__mux_loc ( 255 dbv , MTX_LOCK_REGION , 0, & gi -> mtx_locks )) != 0) 256 ( t ); 261 i(( t = `__v_loc (& -> gfo , 262 gi -> lock_t_size * ( DB_HASHTAB ), & addr )) != 0) 263 mem_r ; 264 `__db_hash ( addr , gi -> lock_t_size ); 265 gi -> lock_off = `R_OFFSET (& -> gfo , addr ); 268 `SH_TAILQ_INIT (& gi -> _locks ); 269 i = 0; i < gi -> . _maxlocks ; ++i) { 270 i(( t = `__v_loc (& -> gfo , 271 ( __db_lock ), & )) != 0) 272 mem_r ; 273 -> mtx_lock = MUTEX_INVALID ; 274 -> g = 0; 275 -> us = DB_LSTAT_FREE ; 276 `SH_TAILQ_INSERT_HEAD (& gi -> _locks , , lks , __db_lock ); 280 `SH_TAILQ_INIT (& gi -> dd_objs ); 281 `SH_TAILQ_INIT (& gi -> _objs ); 282 i = 0; i < gi -> . _maxobjes ; ++i) { 283 i(( t = `__v_loc (& -> gfo , 284 ( DB_LOCKOBJ ), & )) != 0) 285 mem_r ; 286 `SH_TAILQ_INSERT_HEAD ( 287 & gi -> _objs , , lks , __db_lockobj ); 288 -> gi = 0; 292 `SH_TAILQ_INIT (& gi -> locks ); 293 `SH_TAILQ_INIT (& gi -> _locks ); 294 i = 0; i < gi -> . _maxlocks ; ++i) { 295 i(( t = 296 `__v_loc (& -> gfo , ( DB_LOCKER ), & lidp )) != 0) { 297 mem_r : `__db_rx ( dbv , 299 ( t ); 301 `SH_TAILQ_INSERT_HEAD ( 302 & gi -> _locks , lidp , lks , __db_lock ); 306 } } 315 $__lock_v_esh ( dbv ) 316 DB_ENV * dbv ; 318 __db_lock * ; 319 DB_LOCKER * lock ; 320 DB_LOCKOBJ * lockobj ; 321 DB_LOCKREGION * ; 322 DB_LOCKTAB * ; 323 REGINFO * gfo ; 324 t ; 326 = dbv -> lk_hd ; 327 gfo = & ->reginfo; 328 = gfo -> imy ; 335 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 337 `__v_loc_ ( gfo , `R_ADDR egfo, -> cf_off )); 340 `__v_loc_ ( gfo , `R_ADDR egfo, -> obj_off )); 343 `__v_loc_ ( gfo , `R_ADDR egfo, -> lock_off )); 346 ( = 347 `SH_TAILQ_FIRST (& -> _locks , __db_lock )! NULL ) { 348 `SH_TAILQ_REMOVE (& -> _locks , , lks , __db_lock ); 349 `__v_loc_ ( gfo , ); 353 ( lockobj = 354 `SH_TAILQ_FIRST (& -> _objs , __db_lockobj )! NULL ) { 355 `SH_TAILQ_REMOVE ( 356 & -> _objs , lockobj , lks , __db_lockobj ); 357 `__v_loc_ ( gfo , lockobj ); 361 ( lock = 362 `SH_TAILQ_FIRST (& -> _locks , __db_lock )! NULL ) { 363 `SH_TAILQ_REMOVE ( 364 & -> _locks , lock , lks , __db_lock ); 365 `__v_loc_ ( gfo , lock ); 370 t = `__v_gi_dach ( dbv , gfo , 0); 373 `__os_ ( dbv , ); 374 dbv -> lk_hd = NULL ; 376 ( t ); 377 } } 385 u_t32_t 386 $__lock_gi_mux_cou ( dbv ) 387 DB_ENV * dbv ; 389 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 390 ( dbv -> lk_max + `__db_bsize (dbv-> lk_max_objes ) + 3); 392 ( dbv -> lk_max ); 394 } } 400 size_t 401 $__lock_gi_size ( dbv ) 402 DB_ENV * dbv ; 404 size_t tv ; 410 tv = 0; 411 tv + `__v_loc_size (( DB_LOCKREGION )); 412 tv + `__v_loc_size (( size_t )( dbv -> lk_modes * dbenv->lk_modes)); 413 tv + `__v_loc_size ( 414 `__db_bsize ( dbv -> lk_max_objes * (( DB_HASHTAB ))); 415 tv + `__v_loc_size ( 416 `__db_bsize ( dbv -> lk_max_objes * (( DB_LOCK_HSTAT ))); 417 tv + `__v_loc_size ( 418 `__db_bsize ( dbv -> lk_max_locks * (( DB_HASHTAB ))); 419 tv + `__v_loc_size (( __db_lock )* dbv -> lk_max ; 420 tv + `__v_loc_size (( DB_LOCKOBJ )* dbv -> lk_max_objes ; 421 tv + `__v_loc_size (( DB_LOCKER )* dbv -> lk_max_locks ; 427 tv + `__v_loc_size ( dbv -> lk_max * 16); 430 tv +=etval / 4; 432 ( tv ); 433 } } @../lock/lock_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/lock.h " 14 ~"dbc/log.h " 15 ~"dbc/db_am.h " 17 #ifde HAVE_STATISTICS 18 __lock_dump_lock 19 __P (( DB_ENV *, DB_MSGBUF *, DB_LOCKTAB *, DB_LOCKER *)); 20 __lock_dump_obje __P (( DB_LOCKTAB *, DB_MSGBUF *, DB_LOCKOBJ *)); 21 __lock_t_l __P (( DB_ENV *, u_t32_t )); 22 __lock_t_s __P (( DB_ENV *, u_t32_t )); 23 __lock_t_hd __P (( DB_ENV *)); 24 __lock_ __P (( DB_ENV *, DB_LOCK_STAT **, u_t32_t )); 33 $__lock__ ( dbv , p , ags ) 34 DB_ENV * dbv ; 35 DB_LOCK_STAT ** p ; 36 u_t32_t ags ; 38 DB_THREAD_INFO * ; 39 t ; 41 `PANIC_CHECK ( dbv ); 42 `ENV_REQUIRES_CONFIG ( dbv , 43 dbv -> lk_hd , "DB_ENV->lock_", DB_INIT_LOCK ); 45 i(( t = `__db_fchk ( dbv , 46 "DB_ENV->lock_", ags , DB_STAT_CLEAR )) != 0) 47 ( t ); 49 `ENV_ENTER ( dbv , ); 50 `REPLICATION_WRAP ( dbv , ( `__lock_ (dbv, p , ags )), t ); 51 `ENV_LEAVE ( dbv , ); 52 ( t ); 53 } } 60 $__lock_ ( dbv , p , ags ) 61 DB_ENV * dbv ; 62 DB_LOCK_STAT ** p ; 63 u_t32_t ags ; 65 DB_LOCKREGION * gi ; 66 DB_LOCKTAB * ; 67 DB_LOCK_STAT * s , tmp ; 68 t ; 69 u_t32_t i ; 71 * p = NULL ; 72 = dbv -> lk_hd ; 74 i(( t = `__os_umloc ( dbv , (* s ), &stats)) != 0) 75 ( t ); 78 `LOCK_REGION_LOCK ( dbv ); 80 gi = -> gfo . imy ; 81 `memy ( s , & gi -> , (*stats)); 82 s -> _locktimeout = gi -> lk_timeout ; 83 s -> _tximeout = gi -> tx_timeout ; 85 i = 0; i < gi -> obje_t_size ; i++) { 86 s -> _eques + -> obj_ [ i ].st_nrequests; 87 s -> _Ės + -> obj_ [ i ].st_nreleases; 88 s -> _nupgde + -> obj_ [ i ].st_nupgrade; 89 s -> _ndowngde + -> obj_ [ i ].st_ndowngrade; 90 s -> _lock_wa + -> obj_ [ i ].st_lock_wait; 91 s -> _lock_nowa + -> obj_ [ i ].st_lock_nowait; 92 s -> _ocktimeouts + -> obj_ [ i ].st_nlocktimeouts; 93 s -> _ximeouts + -> obj_ [ i ].st_ntxntimeouts; 94 i( s -> _hash_n < -> obj_ [ i ].st_hash_len) 95 s -> _hash_n = -> obj_ [ i ].st_hash_len; 96 i( `LF_ISSET ( DB_STAT_CLEAR )) { 97 `memt (& -> obj_ [ i ], 0, (lt->obj_stat[i])); 98 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 99 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 100 `__mux_r ( dbv , -> obj_mtx [ i ]); 105 `__mux_t_wa_fo ( dbv , gi -> mtx_gi , 106 & s -> _gi_wa , &s-> _gi_nowa ); 107 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 108 `__mux_t_wa_fo ( dbv , gi -> mtx_objs , 109 & s -> _objs_wa , &s-> _objs_nowa ); 110 `__mux_t_wa_fo ( dbv , gi -> mtx_locks , 111 & s -> _locks_wa , &s-> _locks_nowa ); 112 `__mux_t_wa_fo ( dbv , gi -> mtx_locks , 113 & s -> _locks_wa , &s-> _locks_nowa ); 115 s -> _gsize = -> gfo . -> size ; 116 i( `LF_ISSET ( DB_STAT_CLEAR )) { 117 tmp = gi -> ; 118 `memt (& gi -> , 0, (region->stat)); 119 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) { 120 `__mux_r ( dbv , gi -> mtx_gi ); 121 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 122 `__mux_r ( dbv , gi -> mtx_objs ); 123 `__mux_r ( dbv , gi -> mtx_locks ); 124 `__mux_r ( dbv , gi -> mtx_locks ); 126 i = 0; i < gi -> obje_t_size ; i++) 127 `memt (& -> obj_ [ i ], 128 0, ( -> obj_ [ i ])); 131 gi -> . _id = tmp .st_id; 132 gi -> . _cur_maxid = tmp .st_cur_maxid; 133 gi -> . _maxlocks = tmp .st_maxlocks; 134 gi -> . _maxlocks = tmp .st_maxlockers; 135 gi -> . _maxobjes = tmp .st_maxobjects; 136 gi -> . _ocks = 137 gi -> . _maxocks = tmp . _ocks ; 138 gi -> . _ocks = 139 gi -> . _maxocks = tmp . _ocks ; 140 gi -> . _nobjes = 141 gi -> . _maxnobjes = tmp . _nobjes ; 142 gi -> . _nmodes = tmp .st_nmodes; 145 `LOCK_REGION_UNLOCK ( dbv ); 147 * p = s ; 149 } } 158 $__lock__t_ ( dbv , ags ) 159 DB_ENV * dbv ; 160 u_t32_t ags ; 162 DB_THREAD_INFO * ; 163 t ; 165 `PANIC_CHECK ( dbv ); 166 `ENV_REQUIRES_CONFIG ( dbv , 167 dbv -> lk_hd , "DB_ENV->lock__t", DB_INIT_LOCK ); 169 #DB_STAT_LOCK_FLAGS \ 170 ( DB_STAT_ALL | DB_STAT_CLEAR | DB_STAT_LOCK_CONF | \ 171 DB_STAT_LOCK_LOCKERS | DB_STAT_LOCK_OBJECTS | DB_STAT_LOCK_PARAMS ) ) 172 i(( t = `__db_fchk ( dbv , "DB_ENV->lock_stat_print", 173 ags , DB_STAT_CLEAR | DB_STAT_LOCK_FLAGS )) != 0) 174 ( t ); 176 `ENV_ENTER ( dbv , ); 177 `REPLICATION_WRAP ( dbv , ( `__lock__t (dbv, ags )), t ); 178 `ENV_LEAVE ( dbv , ); 179 ( t ); 180 } } 189 $__lock__t ( dbv , ags ) 190 DB_ENV * dbv ; 191 u_t32_t ags ; 193 u_t32_t ig_ags ; 194 t ; 196 ig_ags = ags ; 197 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 198 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 199 t = `__lock_t_s ( dbv , ig_ags ); 200 i( ags =0 || t != 0) 201 ( t ); 204 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_CONF | DB_STAT_LOCK_LOCKERS | 205 DB_STAT_LOCK_OBJECTS | DB_STAT_LOCK_PARAMS ) && 206 ( t = `__lock_t_l ( dbv , ig_ags )) != 0) 207 ( t ); 210 } } 217 $__lock_t_s ( dbv , ags ) 218 DB_ENV * dbv ; 219 u_t32_t ags ; 221 DB_LOCK_STAT * ; 222 t ; 224 #ifde LOCK_DIAGNOSTIC 225 DB_LOCKTAB * ; 226 DB_LOCKREGION * gi ; 227 u_t32_t i ; 228 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 229 u_t32_t wa , nowa ; 232 = dbv -> lk_hd ; 233 gi = -> gfo . imy ; 235 i = 0; i < gi -> obje_t_size ; i++) { 236 i( -> obj_ [ i ]. _hash_n == 0) 238 `__db_dl ( dbv , 239 "Hash buck", ( u_lg ) i ); 240 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 241 `__mux_t_wa_fo ( dbv , -> obj_mtx [ i ], & wa , & nowa ); 242 `__db_dl_p ( dbv , 244 ( u_lg ) wa , `DB_PCT (wa, wa + nowa ), NULL ); 246 `__db_dl ( dbv , 248 ( u_lg ) -> obj_ [ i ]. _hash_n ); 249 `__db_dl ( dbv , 251 ( u_lg ) -> obj_ [ i ]. _eques ); 252 `__db_dl ( dbv , 254 ( u_lg ) -> obj_ [ i ]. _Ės ); 255 `__db_dl ( dbv , 257 ( u_lg ) -> obj_ [ i ]. _nupgde ); 258 `__db_dl ( dbv , 260 ( u_lg ) -> obj_ [ i ]. _ndowngde ); 261 `__db_dl ( dbv , 263 ( u_lg ) -> obj_ [ i ]. _lock_wa ); 264 `__db_dl ( dbv , 266 ( u_lg ) -> obj_ [ i ]. _lock_nowa ); 267 `__db_dl ( dbv , "Number ofockshat haveimed out", 268 ( u_lg ) -> obj_ [ i ]. _ocktimeouts ); 269 `__db_dl ( dbv , "Number ofransactionshat haveimed out", 270 ( u_lg ) -> obj_ [ i ]. _ximeouts ); 273 i(( t = `__lock_ ( dbv , & , ags )) != 0) 274 ( t ); 276 i( `LF_ISSET ( DB_STAT_ALL )) 277 `__db_msg ( dbv , "Defaultockingegion information:"); 278 `__db_dl ( dbv , "Laodock ID", ( u_lg ) -> _id ); 279 `__db_msg ( dbv , "%#lx\tCurrent maximum unusedocker ID", 280 ( u_lg ) -> _cur_maxid ); 281 `__db_dl ( dbv , "Numb olock modes", ( u_lg ) -> _nmodes ); 282 `__db_dl ( dbv , 283 "Maximumumb olockpossib", ( u_lg ) -> _maxlocks ); 284 `__db_dl ( dbv , 285 "Maximumumb olockpossib", ( u_lg ) -> _maxlocks ); 286 `__db_dl ( dbv , "Maximumumber ofock objectsossible", 287 ( u_lg ) -> _maxobjes ); 288 `__db_dl ( dbv , "Numb oculocks", ( u_lg ) -> _ocks ); 289 `__db_dl ( dbv , "Maximumumber ofockstny oneime", 290 ( u_lg ) -> _maxocks ); 291 `__db_dl ( dbv , "Numb oculocks", ( u_lg ) -> _ocks ); 292 `__db_dl ( dbv , "Maximumumber ofockerstny oneime", 293 ( u_lg ) -> _maxocks ); 294 `__db_dl ( dbv , 295 "Numb oculock objes", ( u_lg ) -> _nobjes ); 296 `__db_dl ( dbv , "Maximumumber ofock objectstny oneime", 297 ( u_lg ) -> _maxnobjes ); 298 `__db_dl ( dbv , 299 "Tٮumb olockqueed", ( u_lg ) -> _eques ); 300 `__db_dl ( dbv , 301 "Tٮumb olockad", ( u_lg ) -> _Ės ); 302 `__db_dl ( dbv , 303 "Tٮumb olockupgded", ( u_lg ) -> _nupgde ); 304 `__db_dl ( dbv , 305 "Tٮumb olockdowngded", ( u_lg ) -> _ndowngde ); 306 `__db_dl ( dbv , 308 ( u_lg ) -> _lock_wa ); 309 `__db_dl ( dbv , 311 ( u_lg ) -> _lock_nowa ); 312 `__db_dl ( dbv , "Numb oddlocks", ( u_lg ) -> _nddlocks ); 313 `__db_dl ( dbv , "Lockimeouvue", ( u_lg ) -> _locktimeout ); 314 `__db_dl ( dbv , "Number ofockshat haveimed out", 315 ( u_lg ) -> _ocktimeouts ); 316 `__db_dl ( dbv , 317 "Tniځimeouvue", ( u_lg ) -> _tximeout ); 318 `__db_dl ( dbv , "Number ofransactionshat haveimed out", 319 ( u_lg ) -> _ximeouts ); 321 `__db_dlbys ( dbv , "The size ofheockegion", 322 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 323 #ifde HAVE_FINE_GRAINED_LOCK_MANAGER 324 `__db_dl_p ( dbv , 326 ( u_lg ) -> _objs_wa , `DB_PCT (sp->st_objs_wait, 327 -> _objs_wa + sp-> _objs_nowa ), NULL ); 328 `__db_dl_p ( dbv , 330 ( u_lg ) -> _locks_wa , `DB_PCT (sp->st_lockers_wait, 331 -> _locks_wa + sp-> _locks_nowa ), NULL ); 332 `__db_dl_p ( dbv , 334 ( u_lg ) -> _locks_wa , `DB_PCT (sp->st_locks_wait, 335 -> _locks_wa + sp-> _locks_nowa ), NULL ); 337 `__db_dl_p ( dbv , 339 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 340 -> _gi_wa + sp-> _gi_nowa ), NULL ); 342 `__os_u ( dbv , ); 345 } } 352 $__lock_t_l ( dbv , ags ) 353 DB_ENV * dbv ; 354 u_t32_t ags ; 356 DB_LOCKER * l ; 357 DB_LOCKOBJ * ; 358 DB_LOCKREGION * p ; 359 DB_LOCKTAB * ; 360 DB_MSGBUF mb ; 361 i , j ; 362 u_t32_t k ; 364 = dbv -> lk_hd ; 365 p = -> gfo . imy ; 366 `DB_MSGBUF_INIT (& mb ); 368 `LOCK_REGION_LOCK ( dbv ); 369 `__db_t_gfo ( dbv , & -> gfo , "Lock", ags ); 371 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_PARAMS )) { 372 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 373 `__db_msg ( dbv , "Lockegionarameters:"); 374 `__mux_t_debug_sg ( dbv , 375 "Lockegiڄegi mux", p -> mtx_gi , ags ); 376 `STAT_ULONG ("lockab size", p -> lock_t_size ); 377 `STAT_ULONG ("objeab size", p -> obje_t_size ); 378 `STAT_ULONG ("obj_off", p -> obj_off ); 379 `STAT_ULONG ("lock_off", p -> lock_off ); 380 `STAT_ULONG ("ed_dd", p -> ed_dd ); 381 i( `timeecist (& p -> xt_timeout )) { 382 #ifde HAVE_STRFTIME 383 time_t t = (time_t) p -> xt_timeout . tv_c ; 384 tbuf [64]; 385 i( `rime ( tbuf , (tbuf), 386 "%m-%d-%H:%M:%S", `loime (& t )) != 0) 387 `__db_msg ( dbv , "next_timeout: %s.%09lu", 388 tbuf , ( u_lg ) p -> xt_timeout . tv_nc ); 391 `__db_msg ( dbv , "next_timeout: %lu.%09lu", 392 ( u_lg ) p -> xt_timeout . tv_c , 393 ( u_lg ) p -> xt_timeout . tv_nc ); 397 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_CONF )) { 398 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 399 `__db_msg ( dbv , "Lock conflict matrix:"); 400 i = 0; i < p -> . _nmodes ; i++) { 401 j = 0; j < p -> . _nmodes ; j++) 402 `__db_msgadd ( dbv , & mb , "%lu\t", ( u_lg ) 403 -> cis [ i * p -> . _nmodes + j ]); 404 `DB_MSGBUF_FLUSH ( dbv , & mb ); 407 `LOCK_REGION_UNLOCK ( dbv ); 409 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_LOCKERS )) { 410 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 411 `__db_msg ( dbv , "Locks grouped byockers:"); 412 `__lock_t_hd ( dbv ); 413 k = 0; k < p -> lock_t_size ; k++) 414 `SH_TAILQ_FOREACH ( 415 l , & -> lock_b [ k ], lks , __db_lock ) 416 `__lock_dump_lock ( dbv , & mb , , l ); 419 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_OBJECTS )) { 420 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 421 `__db_msg ( dbv , "Locks grouped by object:"); 422 `__lock_t_hd ( dbv ); 423 k = 0; k < p -> obje_t_size ; k++) 424 `SH_TAILQ_FOREACH ( 425 , & -> obj_b [ k ], lks , __db_lockobj ) { 426 `__lock_dump_obje ( , & mb , ); 427 `__db_msg ( dbv , "%s", ""); 432 } } 435 $__lock_dump_lock ( dbv , mbp , , l ) 436 DB_ENV * dbv ; 437 DB_MSGBUF * mbp ; 438 DB_LOCKTAB * ; 439 DB_LOCKER * l ; 441 __db_lock * ; 442 buf [ DB_THREADID_STRLEN ]; 444 `__db_msgadd ( dbv , 445 mbp , "%8lx dd=%2ldocks held %-4d writeocks %-4did/thread %s", 446 ( u_lg ) l -> id , (-> dd_id ,-> ocks ,-> nwres , 447 dbv -> `thad_id_rg (dbv, l -> pid ,-> tid , buf )); 448 `__db_msgadd ( 449 dbv , mbp , "%s", `F_ISSET ( l , DB_LOCKER_DELETED ) ? "(D)" : " "); 450 i( `timeecist (& l -> tx_expe )) { 451 #ifde HAVE_STRFTIME 452 time_t t = (time_t) l -> tx_expe . tv_c ; 453 tbuf [64]; 454 i( `rime ( tbuf , (tbuf), 455 "%m-%d-%H:%M:%S", `loime (& t )) != 0) 456 `__db_msgadd ( dbv , mbp , "expires %s.%09lu", 457 tbuf , ( u_lg ) l -> tx_expe . tv_nc ); 460 `__db_msgadd ( dbv , mbp , "expires %lu.%09lu", 461 ( u_lg ) l -> tx_expe . tv_c , 462 ( u_lg ) l -> tx_expe . tv_nc ); 464 i( `F_ISSET ( l , DB_LOCKER_TIMEOUT )) 465 `__db_msgadd ( dbv , mbp , "kimeou%u", l -> lk_timeout ); 466 i( `timeecist (& l -> lk_expe )) { 467 #ifde HAVE_STRFTIME 468 time_t t = (time_t) l -> lk_expe . tv_c ; 469 tbuf [64]; 470 i( `rime ( tbuf , 471 ( tbuf ), "%m-%d-%H:%M:%S", `loime (& t )) != 0) 472 `__db_msgadd ( dbv , mbp , "kxpires %s.%09lu", 473 tbuf , ( u_lg ) l -> lk_expe . tv_nc ); 476 `__db_msgadd ( dbv , mbp , "kxpires %lu.%09lu", 477 ( u_lg ) l -> lk_expe . tv_c , 478 ( u_lg ) l -> lk_expe . tv_nc ); 480 `DB_MSGBUF_FLUSH ( dbv , mbp ); 482 `SH_LIST_FOREACH ( , & l -> hdby , lock_lks , __db_lock ) 483 `__lock_ock ( , mbp , , 1); 484 } } 487 $__lock_dump_obje ( , mbp , ) 488 DB_LOCKTAB * ; 489 DB_MSGBUF * mbp ; 490 DB_LOCKOBJ * ; 492 __db_lock * ; 494 `SH_TAILQ_FOREACH ( , & -> hds , lks , __db_lock ) 495 `__lock_ock ( , mbp , , 1); 496 `SH_TAILQ_FOREACH ( , & -> was , lks , __db_lock ) 497 `__lock_ock ( , mbp , , 1); 498 } } 504 $__lock_t_hd ( dbv ) 505 DB_ENV * dbv ; 507 `__db_msg ( dbv , "%-8s %-10s%-4s %-7s %s", 510 } } 519 $__lock_ock ( , mbp , , igno ) 520 DB_LOCKTAB * ; 521 DB_MSGBUF * mbp ; 522 __db_lock * ; 523 igno ; 525 DB_ENV * dbv ; 526 DB_LOCKOBJ * lockobj ; 527 DB_MSGBUF mb ; 528 db_pgno_t pgno ; 529 u_t32_t * fidp , ty ; 530 u_t8_t * r ; 531 * m ; 532 cڡ * mode , * us ; 534 dbv = ->dbenv; 536 i( mbp = NULL ) { 537 `DB_MSGBUF_INIT (& mb ); 538 mbp = & mb ; 541 -> mode ) { 542 DB_LOCK_IREAD : 543 mode = "IREAD"; 545 DB_LOCK_IWR : 546 mode = "IWR"; 548 DB_LOCK_IWRITE : 549 mode = "IWRITE"; 551 DB_LOCK_NG : 552 mode = "NG"; 554 DB_LOCK_READ : 555 mode = "READ"; 557 DB_LOCK_READ_UNCOMMITTED : 558 mode = "READ_UNCOMMITTED"; 560 DB_LOCK_WRITE : 561 mode = "WRITE"; 563 DB_LOCK_WWRITE : 564 mode = "WAS_WRITE"; 566 DB_LOCK_WAIT : 567 mode = "WAIT"; 570 mode = "UNKNOWN"; 573 -> us ) { 574 DB_LSTAT_ABORTED : 575 us = "ABORT"; 577 DB_LSTAT_EXPIRED : 578 us = "EXPIRED"; 580 DB_LSTAT_FREE : 581 us = "FREE"; 583 DB_LSTAT_HELD : 584 us = "HELD"; 586 DB_LSTAT_PENDING : 587 us = "PENDING"; 589 DB_LSTAT_WAITING : 590 us = "WAIT"; 593 us = "UNKNOWN"; 596 `__db_msgadd ( dbv , mbp , "%8lx %-10s %4lu %-7s ", 597 ( u_lg )(( DB_LOCKER *) `R_ADDR (& -> gfo , -> hd ))-> id , 598 mode , ( u_lg ) -> fcou , us ); 600 lockobj = ( DB_LOCKOBJ *)(( u_t8_t *) +p-> obj ); 601 r = `SH_DBT_PTR (& lockobj ->lockobj); 602 i( igno && lockobj ->lockobj. size =( __db_ock )) { 604 `memy (& pgno , r , ( db_pgno_t )); 605 fidp = ( u_t32_t *)( r + ( db_pgno_t )); 606 ty = *( u_t32_t *)( r + ( db_pgno_t + DB_FILE_ID_LEN ); 607 i( `__dbg_g_me ( -> dbv , ( u_t8_t *) fidp , & m ) != 0) 608 m = NULL ; 609 i( m = NULL ) 610 `__db_msgadd ( dbv , mbp , "(%lx %lx %lx %lx %lx) ", 611 ( u_lg ) fidp [0], (u_long)fidp[1], (u_long)fidp[2], 612 ( u_lg ) fidp [3], (u_long)fidp[4]); 614 `__db_msgadd ( dbv , mbp , "%-25", m ); 615 `__db_msgadd ( dbv , mbp , "%-7s %7lu", 616 ty = DB_PAGE_LOCK ? "page" : 617 ty = DB_RECORD_LOCK ? "record" : "handle", 618 ( u_lg ) pgno ); 620 `__db_msgadd ( dbv , mbp , "0x%lx ", 621 ( u_lg ) `R_OFFSET (& -> gfo , lockobj )); 622 `__db_ ( dbv , mbp , r , lockobj ->lockobj. size ); 624 `DB_MSGBUF_FLUSH ( dbv , mbp ); 625 } } 630 $__lock__ ( dbv , p , ags ) 631 DB_ENV * dbv ; 632 DB_LOCK_STAT ** p ; 633 u_t32_t ags ; 635 `COMPQUIET ( p , NULL ); 636 `COMPQUIET ( ags , 0); 638 ( `__db__n_but ( dbv )); 639 } } 642 $__lock__t_ ( dbv , ags ) 643 DB_ENV * dbv ; 644 u_t32_t ags ; 646 `COMPQUIET ( ags , 0); 648 ( `__db__n_but ( dbv )); 649 } } @../lock/lock_stub.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 18 __db_nockg __P (( DB_ENV *)); 25 $__db_nockg ( dbv ) 26 DB_ENV * dbv ; 28 `__db_rx ( dbv , 30 ( DB_OPNOTSUP ); 31 } } 34 $__lock_v_ ( dbv ) 35 DB_ENV * dbv ; 37 `COMPQUIET ( dbv , 0); 39 } } 42 $__lock_v_deroy ( dbv ) 43 DB_ENV * dbv ; 45 `COMPQUIET ( dbv , 0); 46 } } 49 $__lock_g_lk_cis ( dbv , lk_ci , lk_mode ) 50 DB_ENV * dbv ; 51 cڡ u_t8_t ** lk_ci ; 52 * lk_mode ; 54 `COMPQUIET ( lk_ci , NULL ); 55 `COMPQUIET ( lk_mode , NULL ); 56 ( `__db_nockg ( dbv )); 57 } } 60 $__lock_g_lk_de ( dbv , lk_dep ) 61 DB_ENV * dbv ; 62 u_t32_t * lk_dep ; 64 `COMPQUIET ( lk_dep , NULL ); 65 ( `__db_nockg ( dbv )); 66 } } 69 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 70 DB_ENV * dbv ; 71 u_t32_t * lk_maxp ; 73 `COMPQUIET ( lk_maxp , NULL ); 74 ( `__db_nockg ( dbv )); 75 } } 78 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 79 DB_ENV * dbv ; 80 u_t32_t * lk_maxp ; 82 `COMPQUIET ( lk_maxp , NULL ); 83 ( `__db_nockg ( dbv )); 84 } } 87 $__lock_g_lk_max_objes ( dbv , lk_maxp ) 88 DB_ENV * dbv ; 89 u_t32_t * lk_maxp ; 91 `COMPQUIET ( lk_maxp , NULL ); 92 ( `__db_nockg ( dbv )); 93 } } 96 $__lock_g_v_timeout ( dbv , timeou , ag ) 97 DB_ENV * dbv ; 98 db_timeout_t * timeou ; 99 u_t32_t ag ; 101 `COMPQUIET ( timeou , NULL ); 102 `COMPQUIET ( ag , 0); 103 ( `__db_nockg ( dbv )); 104 } } 107 $__lock_de_ ( dbv , ags , y , ab܍ ) 108 DB_ENV * dbv ; 109 u_t32_t ags , y ; 110 * ab܍ ; 112 `COMPQUIET ( ags , 0); 113 `COMPQUIET ( y , 0); 114 `COMPQUIET ( ab܍ , NULL ); 115 ( `__db_nockg ( dbv )); 116 } } 119 $__lock_g_ ( dbv , lock , ags , obj , lock_mode , lock ) 120 DB_ENV * dbv ; 121 u_t32_t lock , ags ; 122 cڡ DBT * obj ; 123 db_lockmode_t lock_mode ; 124 DB_LOCK * lock ; 126 `COMPQUIET ( lock , 0); 127 `COMPQUIET ( ags , 0); 128 `COMPQUIET ( obj , NULL ); 129 `COMPQUIET ( lock_mode , 0); 130 `COMPQUIET ( lock , NULL ); 131 ( `__db_nockg ( dbv )); 132 } } 135 $__lock_id_ ( dbv , idp ) 136 DB_ENV * dbv ; 137 u_t32_t * idp ; 139 `COMPQUIET ( idp , NULL ); 140 ( `__db_nockg ( dbv )); 141 } } 144 $__lock_id__ ( dbv , id ) 145 DB_ENV * dbv ; 146 u_t32_t id ; 148 `COMPQUIET ( id , 0); 149 ( `__db_nockg ( dbv )); 150 } } 153 $__lock_put_ ( dbv , lock ) 154 DB_ENV * dbv ; 155 DB_LOCK * lock ; 157 `COMPQUIET ( lock , NULL ); 158 ( `__db_nockg ( dbv )); 159 } } 162 $__lock__ ( dbv , p , ags ) 163 DB_ENV * dbv ; 164 DB_LOCK_STAT ** p ; 165 u_t32_t ags ; 167 `COMPQUIET ( p , NULL ); 168 `COMPQUIET ( ags , 0); 169 ( `__db_nockg ( dbv )); 170 } } 173 $__lock__t_ ( dbv , ags ) 174 DB_ENV * dbv ; 175 u_t32_t ags ; 177 `COMPQUIET ( ags , 0); 178 ( `__db_nockg ( dbv )); 179 } } 182 $__lock_vec_ ( dbv , lock , ags , li , i , ip ) 183 DB_ENV * dbv ; 184 u_t32_t lock , ags ; 185 i ; 186 DB_LOCKREQ * li , ** ip ; 188 `COMPQUIET ( lock , 0); 189 `COMPQUIET ( ags , 0); 190 `COMPQUIET ( li , NULL ); 191 `COMPQUIET ( i , 0); 192 `COMPQUIET ( ip , NULL ); 193 ( `__db_nockg ( dbv )); 194 } } 197 $__lock_t_lk_cis ( dbv , lk_cis , lk_modes ) 198 DB_ENV * dbv ; 199 u_t8_t * lk_cis ; 200 lk_modes ; 202 `COMPQUIET ( lk_cis , NULL ); 203 `COMPQUIET ( lk_modes , 0); 204 ( `__db_nockg ( dbv )); 205 } } 208 $__lock_t_lk_de ( dbv , lk_de ) 209 DB_ENV * dbv ; 210 u_t32_t lk_de ; 212 `COMPQUIET ( lk_de , 0); 213 ( `__db_nockg ( dbv )); 214 } } 217 $__lock_t_lk_max_locks ( dbv , lk_max ) 218 DB_ENV * dbv ; 219 u_t32_t lk_max ; 221 `COMPQUIET ( lk_max , 0); 222 ( `__db_nockg ( dbv )); 223 } } 226 $__lock_t_lk_max_locks ( dbv , lk_max ) 227 DB_ENV * dbv ; 228 u_t32_t lk_max ; 230 `COMPQUIET ( lk_max , 0); 231 ( `__db_nockg ( dbv )); 232 } } 235 $__lock_t_lk_max_objes ( dbv , lk_max ) 236 DB_ENV * dbv ; 237 u_t32_t lk_max ; 239 `COMPQUIET ( lk_max , 0); 240 ( `__db_nockg ( dbv )); 241 } } 244 $__lock_t_v_timeout ( dbv , timeout , ags ) 245 DB_ENV * dbv ; 246 db_timeout_t timeout ; 247 u_t32_t ags ; 249 `COMPQUIET ( timeout , 0); 250 `COMPQUIET ( ags , 0); 251 ( `__db_nockg ( dbv )); 252 } } 255 $__lock_ݒ ( dbv , _ok ) 256 DB_ENV * dbv ; 257 _ok ; 259 `COMPQUIET ( dbv , NULL ); 260 `COMPQUIET ( _ok , 0); 261 ( `__db_nockg ( dbv )); 262 } } 265 $__lock_id_ ( dbv , sh_lock ) 266 DB_ENV * dbv ; 267 DB_LOCKER * sh_lock ; 269 `COMPQUIET ( dbv , NULL ); 270 `COMPQUIET ( sh_lock , 0); 272 } } 275 $__lock_v_esh ( dbv ) 276 DB_ENV * dbv ; 278 `COMPQUIET ( dbv , NULL ); 280 } } 283 $__lock__t ( dbv , ags ) 284 DB_ENV * dbv ; 285 u_t32_t ags ; 287 `COMPQUIET ( dbv , NULL ); 288 `COMPQUIET ( ags , 0); 290 } } 293 $__lock_put ( dbv , lock ) 294 DB_ENV * dbv ; 295 DB_LOCK * lock ; 297 `COMPQUIET ( dbv , NULL ); 298 `COMPQUIET ( lock , NULL ); 300 } } 303 $__lock_vec ( dbv , sh_lock , ags , li , i , ip ) 304 DB_ENV * dbv ; 305 DB_LOCKER * sh_lock ; 306 u_t32_t ags ; 307 i ; 308 DB_LOCKREQ * li , ** ip ; 310 `COMPQUIET ( dbv , NULL ); 311 `COMPQUIET ( sh_lock , 0); 312 `COMPQUIET ( ags , 0); 313 `COMPQUIET ( li , NULL ); 314 `COMPQUIET ( i , 0); 315 `COMPQUIET ( ip , NULL ); 317 } } 320 $__lock_g ( dbv , lock , ags , obj , lock_mode , lock ) 321 DB_ENV * dbv ; 322 DB_LOCKER * lock ; 323 u_t32_t ags ; 324 cڡ DBT * obj ; 325 db_lockmode_t lock_mode ; 326 DB_LOCK * lock ; 328 `COMPQUIET ( dbv , NULL ); 329 `COMPQUIET ( lock , NULL ); 330 `COMPQUIET ( ags , 0); 331 `COMPQUIET ( obj , NULL ); 332 `COMPQUIET ( lock_mode , 0); 333 `COMPQUIET ( lock , NULL ); 335 } } 338 $__lock_id ( dbv , idp , lkp ) 339 DB_ENV * dbv ; 340 u_t32_t * idp ; 341 DB_LOCKER ** lkp ; 343 `COMPQUIET ( dbv , NULL ); 344 `COMPQUIET ( idp , NULL ); 345 `COMPQUIET ( lkp , NULL ); 347 } } 350 $__lock_h_timeout ( dbv , , lock ) 351 DB_ENV * dbv ; 352 DB_LOCKER * , * lock ; 354 `COMPQUIET ( dbv , NULL ); 355 `COMPQUIET ( , NULL ); 356 `COMPQUIET ( lock , NULL ); 358 } } 361 $__lock_t_timeout ( dbv , lock , timeout , ) 362 DB_ENV * dbv ; 363 DB_LOCKER * lock ; 364 db_timeout_t timeout ; 365 u_t32_t ; 367 `COMPQUIET ( dbv , NULL ); 368 `COMPQUIET ( lock , NULL ); 369 `COMPQUIET ( timeout , 0); 370 `COMPQUIET ( , 0); 372 } } 375 $__lock_addmylock ( dbv , pid , id ) 376 DB_ENV * dbv ; 377 u_t32_t pid , id ; 379 `COMPQUIET ( dbv , NULL ); 380 `COMPQUIET ( pid , 0); 381 `COMPQUIET ( id , 0); 383 } } 386 $__lock_mylock ( , sh_lock ) 387 DB_LOCKTAB * ; 388 DB_LOCKER * sh_lock ; 390 `COMPQUIET ( , NULL ); 391 `COMPQUIET ( sh_lock , NULL ); 393 } } 396 $__lock_downgde ( dbv , lock , w_mode , ags ) 397 DB_ENV * dbv ; 398 DB_LOCK * lock ; 399 db_lockmode_t w_mode ; 400 u_t32_t ags ; 402 `COMPQUIET ( dbv , NULL ); 403 `COMPQUIET ( lock , NULL ); 404 `COMPQUIET ( w_mode , 0); 405 `COMPQUIET ( ags , 0); 407 } } 410 $__lock_lock_is_ ( dbv , lock , chd , ) 411 DB_ENV * dbv ; 412 DB_LOCKER * lock ; 413 DB_LOCKER * chd ; 414 * ; 416 `COMPQUIET ( dbv , NULL ); 417 `COMPQUIET ( lock , NULL ); 418 `COMPQUIET ( chd , NULL ); 420 * = 1; 422 } } 425 $__lock_t_thad_id ( ef , pid , tid ) 426 * ef ; 427 pid_t pid ; 428 db_thadid_t tid ; 430 `COMPQUIET ( ef , NULL ); 431 `COMPQUIET ( pid , 0); 432 `COMPQUIET ( tid , 0); 433 } } 436 $__lock_chk ( dbv ) 437 DB_ENV * dbv ; 439 `COMPQUIET ( dbv , NULL ); 441 } } 444 $__lock_g_li ( dbv , lock , ags , lock_mode , li ) 445 DB_ENV * dbv ; 446 DB_LOCKER * lock ; 447 u_t32_t ags ; 448 db_lockmode_t lock_mode ; 449 DBT * li ; 451 `COMPQUIET ( dbv , NULL ); 452 `COMPQUIET ( lock , NULL ); 453 `COMPQUIET ( ags , 0); 454 `COMPQUIET ( lock_mode , 0); 455 `COMPQUIET ( li , NULL ); 457 } } 460 $__lock_li_t ( dbv , li ) 461 DB_ENV * dbv ; 462 DBT * li ; 464 `COMPQUIET ( dbv , NULL ); 465 `COMPQUIET ( li , NULL ); 466 } } 469 $__lock_glock ( , lock , , ) 470 DB_LOCKTAB * ; 471 u_t32_t lock ; 472 ; 473 DB_LOCKER ** ; 475 `COMPQUIET ( , NULL ); 476 `COMPQUIET ( lock , 0); 477 `COMPQUIET ( , 0); 478 `COMPQUIET ( , NULL ); 479 ( `__db_nockg ( -> dbv )); 480 } } 483 $__lock_id_t ( dbv , cur_id , max_id ) 484 DB_ENV * dbv ; 485 u_t32_t cur_id , max_id ; 487 `COMPQUIET ( dbv , NULL ); 488 `COMPQUIET ( cur_id , 0); 489 `COMPQUIET ( max_id , 0); 491 } } @../lock/lock_timer.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 26 $__lock_t_timeout ( dbv , lock , timeout , ) 27 DB_ENV * dbv ; 28 DB_LOCKER * lock ; 29 db_timeout_t timeout ; 30 u_t32_t ; 32 t ; 34 i( lock = NULL ) 36 `LOCK_REGION_LOCK ( dbv ); 37 t = `__lock_t_timeout_ ( dbv , lock , timeout , ); 38 `LOCK_REGION_UNLOCK ( dbv ); 39 ( t ); 40 } } 54 $__lock_t_timeout_ ( dbv , sh_lock , timeout , ) 55 DB_ENV * dbv ; 56 DB_LOCKER * sh_lock ; 57 db_timeout_t timeout ; 58 u_t32_t ; 60 DB_LOCKREGION * gi ; 61 gi = dbv -> lk_hd -> gfo . imy ; 63 i( = DB_SET_TXN_TIMEOUT ) { 64 i( timeout == 0) 65 `timeecr (& sh_lock -> tx_expe ); 67 `__lock_expes ( dbv , & sh_lock -> tx_expe , timeout ); 68 } i( = DB_SET_LOCK_TIMEOUT ) { 69 sh_lock -> lk_timeout = timeout ; 70 `F_SET ( sh_lock , DB_LOCKER_TIMEOUT ); 71 } i( = DB_SET_TXN_NOW ) { 72 `timeecr (& sh_lock -> tx_expe ); 73 `__lock_expes ( dbv , & sh_lock -> tx_expe , 0); 74 sh_lock -> lk_expe = sh_lock-> tx_expe ; 75 i(! `timeecist (& gi -> xt_timeout ) || 76 `timeeccmp ( 77 & gi -> xt_timeout , & sh_lock -> lk_expe , >)) 78 gi -> xt_timeout = sh_lock -> lk_expe ; 80 ( EINVAL ); 83 } } 95 $__lock_h_timeout ( dbv , , lock ) 96 DB_ENV * dbv ; 97 DB_LOCKER * , * lock ; 99 t ; 101 t = 0; 102 `LOCK_REGION_LOCK ( dbv ); 109 i( = NULL || 110 ( `timeecist (& -> tx_expe ) && 111 ! `F_ISSET ( , DB_LOCKER_TIMEOUT ))) { 112 t = EINVAL ; 113 r ; 116 lock -> tx_expe = ->tx_expire; 118 i( `F_ISSET ( , DB_LOCKER_TIMEOUT )) { 119 lock -> lk_timeout = ->lk_timeout; 120 `F_SET ( lock , DB_LOCKER_TIMEOUT ); 121 i(! `timeecist (& -> tx_expe )) 122 t = EINVAL ; 125 r : `LOCK_REGION_UNLOCK ( dbv ); 126 ( t ); 127 } } 136 $__lock_expes ( dbv , timee , timeout ) 137 DB_ENV * dbv ; 138 db_timeec * timee ; 139 db_timeout_t timeout ; 141 db_timeec v ; 147 i(! `timeecist ( timee )) 148 `__os_gtime ( dbv , timee ); 151 `DB_TIMEOUT_TO_TIMESPEC ( timeout , & v ); 154 `timeedd ( timee , & v ); 155 } } 163 $__lock_exped ( dbv , now , timee ) 164 DB_ENV * dbv ; 165 db_timeec * now , * timee ; 167 i(! `timeecist ( timee )) 170 i(! `timeecist ( now )) 171 `__os_gtime ( dbv , now ); 173 ( `timeeccmp ( now , timee , >=)); 174 } } @../lock/lock_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/hash.h " 14 ~"dbc/lock.h " 36 #FAST_HASH ( P ) { \ 37 u_t32_t __h ; \ 38 u_t8_t * __ , * __hp ; \ 39 __hp = ( u_t8_t *)& __h ; \ 40 __ = ( u_t8_t *)( P ); \ 41 __hp [0] = __ [0] ^ __cp[4]; \ 42 __hp [1] = __ [1] ^ __cp[5]; \ 43 __hp [2] = __ [2] ^ __cp[6]; \ 44 __hp [3] = __ [3] ^ __cp[7]; \ 45 ( __h ); \ 46 } ) 53 u_t32_t 54 $__lock_ohash ( dbt ) 55 cڡ DBT * dbt ; 57 i( dbt -> size =( DB_LOCK_ILOCK )) 58 `FAST_HASH ( dbt -> da ); 60 ( `__ham_func5 ( NULL , dbt -> da , dbt-> size )); 61 } } 68 u_t32_t 69 $__lock_lhash ( lock_obj ) 70 DB_LOCKOBJ * lock_obj ; 72 * obj_da ; 74 obj_da = `SH_DBT_PTR (& lock_obj -> lockobj ); 76 i( lock_obj -> lockobj . size =( DB_LOCK_ILOCK )) 77 `FAST_HASH ( obj_da ); 79 ( `__ham_func5 ( NULL , obj_da , lock_obj -> lockobj . size )); 80 } } 89 $__lock_nomem ( dbv , s ) 90 DB_ENV * dbv ; 91 cڡ * s ; 93 `__db_rx ( dbv , "Lockab iouoavaab %s", s ); 94 ( ENOMEM ); 95 } } @../log/log.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/hmac.h " 14 ~"dbc/log.h " 15 ~"dbc/txn.h " 17 __log_ __P (( DB_ENV *, DB_LOG *)); 18 __log_cov __P (( DB_LOG *)); 19 size_t __log_gi_size __P (( DB_ENV *)); 28 $__log_ݒ ( dbv , _ok ) 29 DB_ENV * dbv ; 30 _ok ; 32 DB_LOG * db ; 33 LOG * ; 34 u_t8_t * bulk ; 35 gi_locked , t ; 37 gi_locked = 0; 40 i(( t = `__os_oc ( dbv , 1, ( DB_LOG ), & db )) != 0) 41 ( t ); 42 db -> dbv = dbenv; 45 i( dbv -> lg_bsize == 0) 46 dbv -> lg_bsize = `F_ISSET (dbv, DB_ENV_LOG_INMEMORY ) ? 47 LG_BSIZE_INMEM : LG_BSIZE_DEFAULT ; 50 db -> gfo . dbv = dbenv; 51 db -> gfo . ty = REGION_TYPE_LOG ; 52 db -> gfo . id = INVALID_REGION_ID ; 53 db -> gfo . ags = REGION_JOIN_OK ; 54 i( _ok ) 55 `F_SET (& db -> gfo , REGION_CREATE_OK ); 56 i(( t = `__v_gi_ch ( 57 dbv , & db -> gfo , `__log_gi_size (dbenv))) != 0) 58 r ; 61 i( `F_ISSET (& db -> gfo , REGION_CREATE )) 62 i(( t = `__log_ ( dbv , db )) != 0) 63 r ; 66 = db -> gfo . imy = 67 `R_ADDR (& db -> gfo , db->gfo. -> imy ); 68 db -> bu = `R_ADDR (&db-> gfo , -> bufr_off ); 74 i(( t = `__mux_loc ( dbv , 75 MTX_LOG_REGION , DB_MUTEX_PROCESS_ONLY , & db -> mtx_dbg )) != 0) 76 r ; 87 dbv -> lg_hd = db ; 89 i( `F_ISSET (& db -> gfo , REGION_CREATE )) { 96 i( -> log_size == 0) 97 -> log_size = `F_ISSET ( dbv , DB_ENV_LOG_INMEMORY ) ? 98 LG_MAX_INMEM : LG_MAX_DEFAULT ; 100 i(( t = `__log_cov ( db )) != 0) 101 r ; 107 i( -> log_nsize == 0) 108 -> log_nsize =p-> log_size ; 114 i( `IS_INIT_LSN ( -> l ) && 115 ( t = `__log_wfe ( db , NULL , 0, 0)) != 0) 116 r ; 122 -> ady_l =p-> l ; 123 i( `IS_ENV_REPLICATED ( dbv )) { 124 i(( t = 125 `__v_loc (& db -> gfo , MEGABYTE , & bulk )) != 0) 126 r ; 127 -> bulk_buf = `R_OFFSET (& db -> gfo , bulk ); 128 -> bulk_n = MEGABYTE ; 129 -> bulk_off = 0; 131 -> bulk_buf = INVALID_ROFF ; 132 -> bulk_n = 0; 133 -> bulk_off = 0; 142 `LOG_SYSTEM_LOCK ( dbv ); 143 gi_locked = 1; 145 i( dbv -> lg_size != 0) { 146 i(( t = 147 `__log_check_sizes ( dbv , dbv-> lg_size , 0)) != 0) 148 r ; 150 -> log_nsize = dbv -> lg_size ; 154 i( -> db_log_autemove ) 155 `F_SET ( dbv , DB_ENV_LOG_AUTOREMOVE ); 156 i( -> db_log_memy ) 157 `F_SET ( dbv , DB_ENV_LOG_INMEMORY ); 159 `LOG_SYSTEM_UNLOCK ( dbv ); 160 gi_locked = 0; 165 r : dbv -> lg_hd = NULL ; 166 i( db -> gfo . addr ! NULL ) { 167 i( gi_locked ) 168 `LOG_SYSTEM_UNLOCK ( dbv ); 169 () `__v_gi_dach ( dbv , & db -> gfo , 0); 172 () `__mux_ ( dbv , & db -> mtx_dbg ); 173 `__os_ ( dbv , db ); 175 ( t ); 176 } } 183 $__log_ ( dbv , db ) 184 DB_ENV * dbv ; 185 DB_LOG * db ; 187 LOG * ; 188 t ; 189 * p ; 196 i(( t = 197 `__log_check_sizes ( dbv , dbv-> lg_size , dbv-> lg_bsize )) != 0) 198 ( t ); 200 i(( t = `__v_loc (& db -> gfo , 201 (* ), & db -> gfo . imy )) != 0) 202 mem_r ; 203 db -> gfo . -> imy = 204 `R_OFFSET (& db -> gfo , db->gfo. imy ); 205 = db -> gfo . imy ; 206 `memt ( , 0, (*lp)); 208 i(( t = 209 `__mux_loc ( dbv , MTX_LOG_REGION , 0, & -> mtx_gi )) != 0) 210 ( t ); 212 -> fid_max = 0; 213 `SH_TAILQ_INIT (& -> fq ); 214 -> _fid_ack = INVALID_ROFF ; 215 -> _fids =p-> _fids_lod = 0; 218 `INIT_LSN ( -> l ); 219 `INIT_LSN ( -> t_l ); 226 `ZERO_LSN ( -> wag_l ); 233 `ZERO_LSN ( -> ched_ckp_l ); 235 i(( t = 236 `__mux_loc ( dbv , MTX_LOG_FILENAME , 0, & -> mtx_fi )) != 0) 237 ( t ); 238 i(( t = `__mux_loc ( dbv , MTX_LOG_FLUSH , 0, & -> mtx_ush )) != 0) 239 ( t ); 242 i(( t = `__v_loc (& db -> gfo , dbv -> lg_bsize , & p )) != 0) { 243 mem_r : `__db_rx dbv , "unableollocateogegion memory"); 244 ( t ); 246 -> gimax = dbv -> lg_gimax ; 247 -> bufr_off = `R_OFFSET (& db -> gfo , p ); 248 -> bufr_size = dbv -> lg_bsize ; 249 -> femode = dbv -> lg_femode ; 250 -> log_size =p-> log_nsize = dbv -> lg_size ; 253 `SH_TAILQ_INIT (& -> _comms ); 254 `SH_TAILQ_INIT (& -> comms ); 255 -> ncomm = 0; 258 `SH_TAILQ_INIT (& -> logfes ); 259 `SH_TAILQ_INIT (& -> _logfes ); 266 -> rsi . magic = DB_LOGMAGIC ; 270 -> rsi . vsi = DB_LOGVERSION ; 271 -> rsi . nud = 0; 274 i( `F_ISSET ( dbv , DB_ENV_LOG_AUTOREMOVE )) 275 -> db_log_autemove = 1; 276 i( `F_ISSET ( dbv , DB_ENV_LOG_INMEMORY )) 277 -> db_log_memy = 1; 279 () `time (& -> timeamp ); 281 } } 288 $__log_cov ( db ) 289 DB_LOG * db ; 291 DBT dbt ; 292 DB_ENV * dbv ; 293 DB_LOGC * logc ; 294 DB_LSN l ; 295 LOG * ; 296 u_t32_t t , y ; 297 t ; 298 logfe_vidy us ; 300 logc = NULL ; 301 dbv = db ->dbenv; 302 = db -> gfo . imy ; 308 i(( t = `__log_fd ( db , 0, & t , & us )) != 0) 309 ( t ); 310 i( t == 0) 319 i( us = DB_LV_OLD_UNREADABLE ) { 320 -> l . fe =p-> s_l .f t + 1; 321 -> l . offt =p-> s_l .offset = 0; 322 skch ; 324 `DB_ASSERT ( dbv , 325 ( us = DB_LV_NORMAL || stu= DB_LV_OLD_READABLE )); 333 -> l . fe = t + 1; 334 -> l . offt = 0; 335 l . fe = t ; 336 l . offt = 0; 342 i(( t = `__log_curs ( dbv , & logc )) != 0) 343 ( t ); 344 `F_SET ( logc , DB_LOG_LOCKED ); 345 `memt (& dbt , 0, (dbt)); 346 i(( t = `__logc_g ( logc , & l , & dbt , DB_SET )) != 0) 347 r ; 353 `F_SET ( logc , DB_LOG_SILENT_ERR ); 354 `__logc_g ( logc , & l , & dbt , DB_NEXT ) == 0) { 355 i( dbt . size < ( u_t32_t )) 357 `memy (& y , dbt . da , ( u_t32_t )); 358 i( y = DB___txn_ckp ) 364 -> ched_ckp_l = l ; 366 `F_CLR ( logc , DB_LOG_SILENT_ERR ); 373 -> l =sn; 374 -> s_l = l ; 375 -> l . offt + logc -> n ; 376 -> s_l . offt + logc -> n ; 379 -> n = logc ->len; 380 -> a_off = 0; 381 -> b_off = 0; 382 -> w_off =p-> l . offt ; 384 skch : 385 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_RECOVERY )) 386 `__db_msg ( dbv , 388 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 390 r : i( logc ! NULL ) 391 () `__logc_o ( logc ); 393 ( t ); 394 } } 405 $__log_fd ( db , fd_f , vp , u ) 406 DB_LOG * db ; 407 fd_f ; 408 u_t32_t * vp ; 409 logfe_vidy * u ; 411 DB_ENV * dbv ; 412 LOG * ; 413 logfe_vidy logv_us , us ; 414 __db_fet * fet ; 415 u_t32_t v , logv ; 416 t , ft , t ; 417 cڡ * d ; 418 * c , ** mes , * p , * q ; 420 dbv = db ->dbenv; 421 = db -> gfo . imy ; 422 logv_us = us = DB_LV_NONEXISTENT ; 425 * vp = 0; 427 i( -> db_log_memy ) { 428 fet = fd_f ? 429 `SH_TAILQ_FIRST (& -> logfes , __db_fet ) : 430 `SH_TAILQ_LAST (& -> logfes , lks , __db_fet ); 431 i( fet ! NULL ) { 432 * vp = fet -> fe ; 433 logv_us = DB_LV_NORMAL ; 435 * u = logv_us ; 440 i(( t = `__log_me ( db , 1, & p , NULL , 0)) != 0) 441 ( t ); 442 i(( q = `__db_h ( p )= NULL ) 443 d = PATH_DOT ; 445 * q = '\0'; 446 d = p ; 450 i(( t = `__os_dli ( dbv , d , & mes , & ft )) != 0) { 451 `__db_r ( dbv , t , "%s", d ); 452 `__os_ ( dbv , p ); 453 ( t ); 457 t = ft , v = logv = 0; --cnt >= 0;) { 458 i( `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1) != 0) 465 c = mes [ t ] + ( LFPREFIX ) - 1; *c != '\0'; c++) 466 i(! `isdig (()* c )) 468 i(* c != '\0') 475 v = ( u_t32_t ) ` ( mes [ t ] + (( LFPREFIX ) - 1)); 489 i( fd_f ) { 490 i( logv != 0 && 491 us ! DB_LV_OLD_UNREADABLE && v > logv ) 494 i( logv !0 && v <ogval) 497 i(( t = `__log_vid ( db , v , 1, NULL , 0, 498 & us , NULL )) != 0) { 499 `__db_r ( 500 dbv , t , "Invidog fe: %s", mes [ t ]); 501 r ; 503 us ) { 504 DB_LV_NONEXISTENT : 506 `DB_ASSERT ( dbv , 0); 508 DB_LV_INCOMPLETE : 520 i( fd_f ) 521 found ; 523 DB_LV_OLD_UNREADABLE : 533 i(! fd_f || logv == 0 || 534 ( us = DB_LV_OLD_UNREADABLE && v > logv )) 535 found ; 537 DB_LV_NORMAL : 538 DB_LV_OLD_READABLE : 539 found : logv = v ; 540 logv_us = us ; 545 * vp = logv ; 547 r : `__os_d ( dbv , mes , ft ); 548 `__os_ ( dbv , p ); 549 * u = logv_us ; 551 ( t ); 552 } } 566 $__log_vid ( db , numb , t_rsi , fh , ags , u , vsip ) 567 DB_LOG * db ; 568 u_t32_t numb ; 569 t_rsi ; 570 DB_FH ** fh ; 571 u_t32_t ags ; 572 logfe_vidy * u ; 573 u_t32_t * vsip ; 575 DB_CIPHER * db_ch ; 576 DB_ENV * dbv ; 577 DB_FH * fhp ; 578 HDR * hdr ; 579 LOG * ; 580 LOGP * rsi ; 581 logfe_vidy us ; 582 size_t hdrsize , , csize ; 583 is_hmac , t ; 584 u_t8_t * tmp ; 585 * ame ; 587 dbv = db ->dbenv; 588 db_ch = dbv -> yo_hd ; 589 fhp = NULL ; 590 rsi = NULL ; 591 us = DB_LV_NORMAL ; 592 tmp = NULL ; 595 i( fh ! NULL ) 596 * fh = NULL ; 598 i( ags == 0) 599 ags = DB_OSO_RDONLY | DB_OSO_SEQ ; 601 i(( t = `__log_me ( db , numb , & ame , & fhp , ags )) != 0) { 602 `__os_ ( dbv , ame ); 603 ( t ); 606 hdrsize = HDR_NORMAL_SZ ; 607 is_hmac = 0; 608 csize = ( LOGP ); 609 i( `CRYPTO_ON ( dbv )) { 610 hdrsize = HDR_CRYPTO_SZ ; 611 csize = ( LOGP ); 612 csize + db_ch -> `adj_size (recsize); 613 is_hmac = 1; 615 i(( t = `__os_oc ( dbv , 1, csize + hdrsize , & tmp )) != 0) 616 r ; 618 hdr = ( HDR *) tmp ; 619 rsi = ( LOGP *)( tmp + hdrsize ); 625 i(( t = `__os_ad ( dbv , fhp , tmp , csize + hdrsize , & )) != 0 || 626 ! csize + hdrsize || 627 ( hdr -> n =0 && rsi -> magic =0 &&si-> log_size == 0)) { 628 i( t == 0) 629 us = DB_LV_INCOMPLETE ; 635 `__db_r ( dbv , t , "ignܚgog fe: %s", ame ); 636 r ; 662 i( `CRYPTO_ON ( dbv )) { 668 i(( hdr -> n - hdrsize !( LOGP )) { 669 `__db_rx ( dbv , "logecord size mismatch"); 670 r ; 673 i(( t = `__db_check_chksum ( dbv , hdr , db_ch , 674 & hdr -> chksum [0], ( u_t8_t *) rsi , 675 hdr -> n - hdrsize , is_hmac )) != 0) { 676 `__db_rx ( dbv , "logecord checksum mismatch"); 677 r ; 679 i(( t = db_ch -> `dey ( dbv , db_ch-> da , 680 & hdr -> iv [0], ( u_t8_t *) rsi , hdr-> n - hdrsize )) != 0) 681 r ; 685 i( rsi -> magic ! DB_LOGMAGIC ) { 686 `__db_rx ( dbv , 688 ame , ( u_lg ) rsi -> magic , (u_lg) DB_LOGMAGIC ); 689 t = EINVAL ; 690 r ; 698 i( rsi -> vsi > DB_LOGVERSION ) { 700 `__db_rx ( dbv , 702 ame , ( u_lg ) rsi -> vsi ); 703 t = EINVAL ; 704 r ; 705 } i( rsi -> vsi < DB_LOGOLDVER ) { 706 us = DB_LV_OLD_UNREADABLE ; 708 `__db_rx ( dbv , 710 ame , ( u_lg ) rsi -> vsi ); 715 r ; 716 } i( rsi -> vsi < DB_LOGVERSION ) 717 us = DB_LV_OLD_READABLE ; 724 i(! `CRYPTO_ON ( dbv && (( t = `__db_check_chksum (dbenv, 725 hdr , db_ch , &hdr-> chksum [0], ( u_t8_t *) rsi , 726 hdr -> n - hdrsize , is_hmac )) != 0)) { 727 `__db_rx ( dbv , "logecord checksum mismatch"); 728 r ; 737 i( t_rsi ) { 738 = db -> gfo . imy ; 739 -> log_size = rsi ->log_size; 740 -> rsi . vsi =ersist->version; 742 i( vsip ! NULL ) 743 * vsip = rsi -> vsi ; 745 r : i( ame ! NULL ) 746 `__os_ ( dbv , ame ); 747 i( t =0 && fh ! NULL ) 748 * fh = fhp ; 751 () `__os_ohd ( dbv , fhp ); 752 i( tmp ! NULL ) 753 `__os_ ( dbv , tmp ); 755 i( u ! NULL ) 756 * u = us ; 758 ( t ); 759 } } 768 $__log_v_esh ( dbv ) 769 DB_ENV * dbv ; 771 DB_LOG * db ; 772 LOG * ; 773 REGINFO * gfo ; 774 __ame * p ; 775 __db_fet * fet ; 776 t , t_t ; 778 db = dbv -> lg_hd ; 779 gfo = & db ->reginfo; 780 = gfo -> imy ; 781 t = 0; 788 i( `F_ISSET ( dbv , DB_ENV_PRIVATE ) && 789 ( t_t = `__log_ush ( dbv , NULL )!0 && t == 0) 790 t = t_t ; 793 i(( t_t = `__dbg_o_fes ( dbv , 0)!0 && t == 0) 794 t = t_t ; 802 `MUTEX_LOCK ( dbv , -> mtx_fi ); 803 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 804 i( `F_ISSET ( p , DB_FNAME_NOTLOGGED ) && 805 ( t_t = `__dbg_o_id_t ( 806 dbv , p , DBREG_CLOSE , 1)) != 0) 807 t = t_t ; 808 `MUTEX_UNLOCK ( dbv , -> mtx_fi ); 815 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 817 i(( t_t = 818 `__mux_ ( dbv , & -> mtx_ush )!0 && t == 0) 819 t = t_t ; 822 `__v_loc_ ( gfo , `R_ADDR egfo, -> bufr_off )); 825 i( -> _fid_ack ! INVALID_ROFF ) 826 `__v_loc_ ( gfo , 827 `R_ADDR ( gfo , -> _fid_ack )); 830 ( fet = `SH_TAILQ_FIRST (& -> logfes , 831 __db_fet )! NULL ) { 832 `SH_TAILQ_REMOVE (& -> logfes , fet , lks , 833 __db_fet ); 834 `__v_loc_ ( gfo , fet ); 837 ( fet = `SH_TAILQ_FIRST (& -> _logfes , 838 __db_fet )! NULL ) { 839 `SH_TAILQ_REMOVE (& -> _logfes , fet , lks , 840 __db_fet ); 841 `__v_loc_ ( gfo , fet ); 845 i( -> bulk_buf ! INVALID_ROFF ) { 846 `__v_loc_ ( gfo , 847 `R_ADDR ( gfo , -> bulk_buf )); 848 -> bulk_buf = INVALID_ROFF ; 853 i(( t_t = `__mux_ ( dbv , & db -> mtx_dbg )!0 && t == 0) 854 t = t_t ; 857 i(( t_t = `__v_gi_dach ( dbv , gfo , 0)!0 && t == 0) 858 t = t_t ; 861 i( db -> lfhp ! NULL ) { 862 i(( t_t = 863 `__os_ohd ( dbv , db -> lfhp )!0 && t == 0) 864 t = t_t ; 865 db -> lfhp = NULL ; 867 i( db -> dby ! NULL ) 868 `__os_ ( dbv , db -> dby ); 870 `__os_ ( dbv , db ); 872 dbv -> lg_hd = NULL ; 873 ( t ); 874 } } 883 $__log_g_ched_ckp_l ( dbv , ckp_lp ) 884 DB_ENV * dbv ; 885 DB_LSN * ckp_lp ; 887 DB_LOG * db ; 888 LOG * ; 890 db = dbv -> lg_hd ; 891 = ( LOG *) db -> gfo . imy ; 893 `LOG_SYSTEM_LOCK ( dbv ); 894 * ckp_lp = -> ched_ckp_l ; 895 `LOG_SYSTEM_UNLOCK ( dbv ); 898 } } 906 u_t32_t 907 $__log_gi_mux_cou ( dbv ) 908 DB_ENV * dbv ; 915 ( dbv -> tx_max + 5); 916 } } 926 size_t 927 $__log_gi_size ( dbv ) 928 DB_ENV * dbv ; 930 size_t s ; 932 s = dbv -> lg_gimax + dbv-> lg_bsize ; 938 i( `IS_ENV_REPLICATED ( dbv )) 939 s + MEGABYTE ; 941 ( s ); 942 } } 955 $__log_vun ( dbv , l , ck , un ) 956 DB_ENV * dbv ; 957 DB_LSN * l , * ck , * un ; 959 DBT log_dbt ; 960 DB_LOG * db ; 961 DB_LOGC * logc ; 962 LOG * ; 963 u_t32_t bys , n ; 964 t , t_t ; 967 i(( t = `__log_curs ( dbv , & logc )) != 0) 968 ( t ); 969 `memt (& log_dbt , 0, (log_dbt)); 970 t = `__logc_g ( logc , l , & log_dbt , DB_SET ); 971 n = logc ->len; 972 i(( t_t = `__logc_o ( logc )!0 && t == 0) 973 t = t_t ; 974 i( t != 0) 975 ( t ); 978 db = dbv -> lg_hd ; 979 = ( LOG *) db -> gfo . imy ; 981 `LOG_SYSTEM_LOCK ( dbv ); 987 i(( t = `__log_ush_t ( db , NULL , 0)) != 0) 988 r ; 990 -> l = *lsn; 991 -> n =en; 992 -> l . offt +-> n ; 994 i( -> db_log_memy && 995 ( t = `__log_mem_loff ( db , & -> l , &-> b_off )) != 0) 996 r ; 1002 `DB_ASSERT ( dbv , -> l . fe > ck ->file); 1003 bys = 0; 1004 i( ck -> fe ! -> l .file) { 1005 bys = -> log_size - ck -> offt ; 1006 i( -> l . fe > ck ->file + 1) 1007 bys + -> log_size * 1008 (( -> l . fe - ck ->file) - 1); 1009 bys + -> l . offt ; 1011 bys = -> l . offt - ck ->offset; 1013 -> . _wc_mbys + bys / MEGABYTE ; 1014 -> . _wc_bys + bys % MEGABYTE ; 1020 `MUTEX_LOCK ( dbv , -> mtx_ush ); 1021 i( `LOG_COMPARE (& -> s_l , l ) > 0) 1022 -> s_l =p-> l ; 1023 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 1026 `ZERO_LSN ( -> f_l ); 1027 -> w_off =p-> l . offt ; 1029 i( un ! NULL ) 1030 * un = -> l ; 1033 i(( t = `__log_zo ( dbv , & -> l )) != 0) 1034 r ; 1036 r : `LOG_SYSTEM_UNLOCK ( dbv ); 1037 ( t ); 1038 } } 1048 $__log_is_outded ( dbv , um , outdedp ) 1049 DB_ENV * dbv ; 1050 u_t32_t um ; 1051 * outdedp ; 1053 DB_LOG * db ; 1054 LOG * ; 1055 * me ; 1056 t ; 1057 u_t32_t cfe ; 1058 __db_fet * fet ; 1060 db = dbv -> lg_hd ; 1067 i( `F_ISSET ( dbv , DB_ENV_LOG_INMEMORY )) { 1068 `LOG_SYSTEM_LOCK ( dbv ); 1069 = ( LOG *) db -> gfo . imy ; 1070 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1071 * outdedp = fet = NULL ? 0 : ( um < fet-> fe ); 1072 `LOG_SYSTEM_UNLOCK ( dbv ); 1076 * outdedp = 0; 1077 i(( t = `__log_me ( db , um , & me , NULL , 0)) != 0) 1078 ( t ); 1081 i( `__os_exis ( dbv , me , NULL ) == 0) 1082 out ; 1089 `LOG_SYSTEM_LOCK ( dbv ); 1090 = ( LOG *) db -> gfo . imy ; 1091 cfe = -> l . fe ; 1092 `LOG_SYSTEM_UNLOCK ( dbv ); 1094 i( cfe > um ) 1095 * outdedp = 1; 1096 out : `__os_ ( dbv , me ); 1097 ( t ); 1098 } } 1107 $__log_zo ( dbv , om_l ) 1108 DB_ENV * dbv ; 1109 DB_LSN * om_l ; 1111 DB_FH * fhp ; 1112 DB_LOG * db ; 1113 LOG * ; 1114 __db_fet * fet , * xtt ; 1115 size_t nbys , n , nw ; 1116 u_t32_t , mbys , bys ; 1117 u_t8_t buf [4096]; 1118 t ; 1119 * ame ; 1121 db = dbv -> lg_hd ; 1122 = ( LOG *) db -> gfo . imy ; 1123 `DB_ASSERT ( dbv , `LOG_COMPARE ( om_l , & -> l ) <= 0); 1124 i( `LOG_COMPARE ( om_l , & -> l ) > 0) { 1125 `__db_rx ( dbv , 1130 i( -> db_log_memy ) { 1134 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1135 fet ! NULL ; fe xtt ) { 1136 xtt = `SH_TAILQ_NEXT ( fet , 1137 lks , __db_fet ); 1138 i( fet -> fe > om_l ->file) { 1139 `SH_TAILQ_REMOVE (& -> logfes , 1140 fet , lks , __db_fet ); 1141 `SH_TAILQ_INSERT_HEAD (& -> _logfes , 1142 fet , lks , __db_fet ); 1150 i( db -> lfhp ! NULL ) { 1151 () `__os_ohd ( dbv , db -> lfhp ); 1152 db -> lfhp = NULL ; 1156 = om_l -> fe + 1;; fn++) { 1157 i( `__log_me ( db , , & ame , & fhp , DB_OSO_RDONLY ) != 0) { 1158 `__os_ ( dbv , ame ); 1161 () `__os_ohd ( dbv , fhp ); 1162 () `time (& -> timeamp ); 1163 t = `__os_uƚk ( dbv , ame ); 1164 `__os_ ( dbv , ame ); 1165 i( t != 0) 1166 ( t ); 1170 i(( t = 1171 `__log_me ( db , om_l -> fe , & ame , &db-> lfhp , 0)) != 0) 1172 ( t ); 1173 `__os_ ( dbv , ame ); 1174 i(( t = `__os_iofo ( dbv , 1175 NULL , db -> lfhp , & mbys , & bys , NULL)) != 0) 1176 r ; 1177 `DB_ASSERT ( dbv , ( mbys * MEGABYTE + bys > om_l -> offt ); 1178 n = ( mbys * MEGABYTE + bys - om_l -> offt ; 1180 `memt ( buf , 0, (buf)); 1183 i(( t = `__os_ek ( dbv , db -> lfhp , 0, 0, om_l -> offt )) != 0) 1184 r ; 1186 n > 0) { 1187 nbys = n > ( buf ) ? (buf) :en; 1188 i(( t = 1189 `__os_wre ( dbv , db -> lfhp , buf , nbys , & nw )) != 0) 1190 r ; 1191 n - nbys ; 1194 r : () `__os_ohd ( dbv , db -> lfhp ); 1195 db -> lfhp = NULL ; 1197 ( t ); 1198 } } 1207 $__log_mem_loff ( db , lp , off ) 1208 DB_LOG * db ; 1209 DB_LSN * lp ; 1210 size_t * off ; 1212 LOG * ; 1213 __db_fet * fet ; 1215 = ( LOG *) db -> gfo . imy ; 1217 `SH_TAILQ_FOREACH ( fet , & -> logfes , lks , __db_fet ) 1218 i( fet -> fe = lp ->file) { 1219 * off = 1220 ( fet -> b_off + lp -> offt % -> bufr_size ; 1224 ( DB_NOTFOUND ); 1225 } } 1235 $__log_mem_wfe ( db , fe ) 1236 DB_LOG * db ; 1237 u_t32_t fe ; 1239 HDR hdr ; 1240 LOG * ; 1241 __db_fet * fet ; 1242 t ; 1243 #ifde DIAGNOSTIC 1244 __db_fet * f , * ϡ ; 1247 = ( LOG *) db -> gfo . imy ; 1252 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1253 i( fet ! NULL && 1254 `RINGBUF_LEN ( , fet -> b_off ,p->b_off) <= 1255 ( HDR + ( LOGP )) { 1256 fet -> fe = file; 1257 fet -> b_off = ->b_off; 1266 i( fe > 1) { 1267 `memt (& hdr , 0, ( HDR )); 1268 `__log_mem_cy ( db , -> b_off , & hdr , ( HDR )); 1269 -> b_off = (->b_of+ ( HDR )%p-> bufr_size ; 1272 fet = `SH_TAILQ_FIRST (& -> _logfes , __db_fet ); 1273 i( fet = NULL ) { 1274 i(( t = `__v_loc (& db -> gfo , 1275 ( __db_fet ), & fet )) != 0) 1276 ( t ); 1277 `memt ( fet , 0, (*filestart)); 1279 `SH_TAILQ_REMOVE (& -> _logfes , fet , 1280 lks , __db_fet ); 1282 fet -> fe = file; 1283 fet -> b_off = ->b_off; 1285 #ifde DIAGNOSTIC 1286 f = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1287 ϡ = `SH_TAILQ_LAST (&( )-> logfes , lks , __db_fet ); 1290 `DB_ASSERT ( db -> dbv , ! f || f = ϡ || 1291 `RINGBUF_LEN ( , f -> b_off ,p->b_off) == 1292 `RINGBUF_LEN ( , f -> b_off , ϡ ->b_off) + 1293 `RINGBUF_LEN ( , ϡ -> b_off ,p->b_off)); 1296 `SH_TAILQ_INSERT_TAIL (& -> logfes , fet , lks ); 1298 } } 1309 $__log_mem_chka ( db , n ) 1310 DB_LOG * db ; 1311 size_t n ; 1313 DB_ENV * dbv ; 1314 LOG * ; 1315 DB_LSN aive_l , d_aive_l ; 1316 __db_fet * fet ; 1317 t ; 1319 dbv = db ->dbenv; 1320 = db -> gfo . imy ; 1322 `DB_ASSERT ( dbv , -> db_log_memy ); 1328 n +( HDR ); 1336 `TXN_ON ( dbv ) && 1337 `RINGBUF_LEN ( ,p-> b_off ,p-> a_off < n ) { 1338 d_aive_l = -> aive_l ; 1339 aive_l = -> l ; 1345 `LOG_SYSTEM_UNLOCK ( dbv ); 1346 i(( t = `__txn_gaive ( dbv , & aive_l )) != 0) 1347 ( t ); 1348 `LOG_SYSTEM_LOCK ( dbv ); 1349 aive_l . offt = 0; 1352 i( `LOG_COMPARE (& aive_l , & d_aive_l ) == 0) { 1353 `__db_rx ( dbv , 1355 ( DB_LOG_BUFFER_FULL ); 1359 i( `LOG_COMPARE (& aive_l , & ->active_lsn) > 0) { 1360 -> aive_l =ctive_lsn; 1361 () `__log_mem_loff ( db , & aive_l , 1362 & -> a_off ); 1371 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1372 i( fet ! NULL && 1373 `RINGBUF_LEN ( ,p-> b_off , fet ->b_off< n ) { 1374 `SH_TAILQ_REMOVE (& -> logfes , fet , 1375 lks , __db_fet ); 1376 `SH_TAILQ_INSERT_HEAD (& -> _logfes , fet , 1377 lks , __db_fet ); 1378 -> f_l . fe = fet ->file + 1; 1382 } } 1392 $__log_mem_cyout ( db , offt , buf , size ) 1393 DB_LOG * db ; 1394 size_t offt ; 1395 * buf ; 1396 size_t size ; 1398 LOG * ; 1399 size_t nbys ; 1401 = ( LOG *) db -> gfo . imy ; 1402 nbys = ( offt + size < -> bufr_size ) ? 1403 size : -> bufr_size - offt ; 1404 `memy ( buf , db -> bu + offt , nbys ); 1405 i( nbys < size ) 1406 `memy (( u_t8_t *) buf + nbys , db -> bu , size -bytes); 1407 } } 1417 $__log_mem_cy ( db , offt , buf , size ) 1418 DB_LOG * db ; 1419 size_t offt ; 1420 * buf ; 1421 size_t size ; 1423 LOG * ; 1424 size_t nbys ; 1426 = ( LOG *) db -> gfo . imy ; 1427 nbys = ( offt + size < -> bufr_size ) ? 1428 size : -> bufr_size - offt ; 1429 `memy ( db -> bu + offt , buf , nbys ); 1430 i( nbys < size ) 1431 `memy ( db -> bu , ( u_t8_t *) buf + nbys , size -bytes); 1432 } } 1444 $__log_t_vsi ( dbv , wv ) 1445 DB_ENV * dbv ; 1446 u_t32_t wv ; 1448 DB_LOG * db ; 1449 LOG * ; 1451 db = dbv -> lg_hd ; 1452 = ( LOG *) db -> gfo . imy ; 1456 -> rsi . vsi = wv ; 1457 } } 1472 $__log_g_dvsi ( dbv , v ) 1473 DB_ENV * dbv ; 1474 u_t32_t * v ; 1476 DBT c ; 1477 DB_LOG * db ; 1478 DB_LOGC * logc ; 1479 DB_LSN l ; 1480 LOG * ; 1481 u_t32_t fum , um , ϡv , dv ; 1482 t , t_t ; 1484 db = dbv -> lg_hd ; 1485 = db -> gfo . imy ; 1487 logc = NULL ; 1488 t = 0; 1489 dv = DB_LOGVERSION ; 1493 i( -> db_log_memy ) { 1494 * v = dv ; 1497 `memt (& c , 0, (rec)); 1498 i(( t = `__log_curs ( dbv , & logc )) != 0) 1499 r ; 1503 i(( t = `__logc_g ( logc , & l , & c , DB_FIRST )) != 0) { 1508 i( t = DB_NOTFOUND ) 1509 t = 0; 1510 r ; 1512 fum = l . fe ; 1513 i(( t = `__logc_g ( logc , & l , & c , DB_LAST )) != 0) 1514 r ; 1515 i(( t = `__log_vid ( db , fum , 0, NULL , 0, 1516 NULL , & dv )) != 0) 1517 r ; 1522 i( fum = l . fe ) 1523 r ; 1529 i(( t = `__log_vid ( db , l . fe , 0, NULL , 0, 1530 NULL , & ϡv )) != 0) 1531 r ; 1537 i( dv ! ϡv ) { 1538 um = l . fe - 1; fnum > fum ; fnum--) { 1539 i(( t = `__log_vid ( db , um , 0, NULL , 0, 1540 NULL , & dv )) != 0) 1541 r ; 1542 i( dv ! ϡv ) 1546 r : i( logc ! NULL && (( t_t = `__logc_o ogc)!0&& t == 0) 1547 t = t_t ; 1548 i( t =0 && v ! NULL ) 1549 * v = dv ; 1550 ( t ); 1551 } } @../log/log_archive.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/log.h " 14 ~"dbc/qam.h " 15 ~"dbc/txn.h " 17 __abame __P (( DB_ENV *, *, *, **)); 18 __bud_da __P (( DB_ENV *, *, ***)); 19 __cmpfunc __P ((const *, const *)); 20 __log_chive __P (( DB_ENV *, **[], u_t32_t )); 21 __urmem __P (( DB_ENV *, ***)); 30 $__log_chive_ ( dbv , lip , ags ) 31 DB_ENV * dbv ; 32 *** lip ; 33 u_t32_t ags ; 35 DB_THREAD_INFO * ; 36 t ; 38 `PANIC_CHECK ( dbv ); 39 `ENV_REQUIRES_CONFIG ( dbv , 40 dbv -> lg_hd , "DB_ENV->log_chive", DB_INIT_LOG ); 42 #OKFLAGS ( DB_ARCH_ABS | DB_ARCH_DATA | DB_ARCH_LOG | DB_ARCH_REMOVE ) ) 43 i( ags != 0) { 44 i(( t = `__db_fchk ( 45 dbv , "DB_ENV->log_chive", ags , OKFLAGS )) != 0) 46 ( t ); 47 i(( t = `__db_fcchk ( dbv , "DB_ENV->log_archive", 48 ags , DB_ARCH_DATA , DB_ARCH_LOG )) != 0) 49 ( t ); 50 i(( t = `__db_fcchk ( dbv , "DB_ENV->log_archive", 51 ags , DB_ARCH_REMOVE , 52 DB_ARCH_ABS | DB_ARCH_DATA | DB_ARCH_LOG )) != 0) 53 ( t ); 56 `ENV_ENTER ( dbv , ); 57 `REPLICATION_WRAP ( dbv , ( `__log_chive (dbv, lip , ags )), t ); 58 `ENV_LEAVE ( dbv , ); 59 ( t ); 60 } } 67 $__log_chive ( dbv , lip , ags ) 68 DB_ENV * dbv ; 69 *** lip ; 70 u_t32_t ags ; 72 DBT c ; 73 DB_LOG * db ; 74 LOG * ; 75 DB_LOGC * logc ; 76 DB_LSN ab_l ; 77 u_t y_size , n ; 78 u_t32_t um ; 79 t , t_t ; 80 ** y , ** yp , * me , * p , * ef ; 81 #ifde HAVE_GETCWD 82 th [ DB_MAXPATHLEN ]; 85 db = dbv -> lg_hd ; 86 = ( LOG *) db -> gfo . imy ; 87 y = NULL ; 88 me = NULL ; 89 t = 0; 90 `COMPQUIET ( um , 0); 92 i( ags ! DB_ARCH_REMOVE ) 93 * lip = NULL ; 96 i( -> db_log_memy ) { 97 `LF_CLR (~ DB_ARCH_DATA ); 98 i( ags == 0) 106 i(! `LF_ISSET ( DB_ARCH_DATA ) && 107 ! `LF_ISSET ( DB_ARCH_LOG && `__p_nrchive ( dbv )) 114 #ifde HAVE_GETCWD 115 i( `LF_ISSET ( DB_ARCH_ABS )) { 124 `__os_t_o (0); 125 i( `gcwd ( th , թh)= NULL ) { 126 t = `__os_g_o (); 127 `__db_r ( dbv , 128 t , "nobsoluteath forhe current directory"); 129 ( t ); 131 ef = th ; 134 ef = NULL ; 136 `LF_CLR ( DB_ARCH_ABS ); 137 ags ) { 138 DB_ARCH_DATA : 139 t = `__bud_da ( dbv , ef , lip ); 140 r ; 141 DB_ARCH_LOG : 142 `memt (& c , 0, (rec)); 143 i(( t = `__log_curs ( dbv , & logc )) != 0) 144 r ; 145 #ifde UMRW 146 `ZERO_LSN ( ab_l ); 148 t = `__logc_g ( logc , & ab_l , & c , DB_LAST ); 149 i(( t_t = `__logc_o ( logc )!0 && t == 0) 150 t = t_t ; 151 i( t != 0) 152 r ; 153 um = ab_l . fe ; 155 DB_ARCH_REMOVE : 156 `__log_autemove ( dbv ); 157 r ; 160 t = `__log_g_ab_l ( dbv , & ab_l ); 166 i( t != 0) { 167 i( t = DB_NOTFOUND ) 168 t = 0; 169 r ; 172 um = ab_l . fe - 1; 175 t = `__db_unknown_th ( dbv , "__log_archive"); 176 r ; 179 #LIST_INCREMENT 64 ) 181 y_size = 64; 182 i(( t = `__os_mloc ( dbv , 183 (** y_size , & y )) != 0) 184 r ; 185 y [0] = NULL ; 188 n = 0; um > 0; --fnum) { 189 i(( t = `__log_me ( db , um , & me , NULL , 0)) != 0) 190 r ; 191 i( `__os_exis ( dbv , me , NULL ) != 0) { 192 i( `LF_ISSET ( DB_ARCH_LOG && um = ab_l . fe ) 194 `__os_ ( dbv , me ); 195 me = NULL ; 199 i( n > y_size - 2) { 200 y_size + LIST_INCREMENT ; 201 i(( t = `__os_loc ( dbv , 202 (** y_size , & y )) != 0) 203 r ; 206 i( ef ! NULL ) { 207 i(( t = 208 `__abame ( dbv , ef , me , & y [ n ])) != 0) 209 r ; 210 `__os_ ( dbv , me ); 211 } i(( p = `__db_h ( me )! NULL ) { 212 i(( t = `__os_rdup ( dbv , p + 1, & y [ n ])) != 0) 213 r ; 214 `__os_ ( dbv , me ); 216 y [ n ] = me ; 218 me = NULL ; 219 y [++ n ] = NULL ; 223 i( n == 0) 224 r ; 227 `qst ( y , ( size_t ) n , (*), __cmpfunc ); 230 i(( t = `__urmem ( dbv , & y )) != 0) 231 r ; 233 i( lip ! NULL ) 234 * lip = y ; 237 r : i( y ! NULL ) { 238 yp = y ; *y! NULL ; ++arrayp) 239 `__os_ ( dbv , * yp ); 240 `__os_ ( dbv , y ); 242 i( me ! NULL ) 243 `__os_ ( dbv , me ); 246 ( t ); 247 } } 256 $__log_g_ab_l ( dbv , ab_l ) 257 DB_ENV * dbv ; 258 DB_LSN * ab_l ; 260 DB_LOGC * logc ; 261 DBT c ; 262 LOG * ; 263 __txn_ckp_gs * ckp_gs ; 264 t , t_t ; 266 = dbv -> lg_hd -> gfo . imy ; 268 t = 0; 269 `memt (& c , 0, (rec)); 270 i(! `TXN_ON ( dbv )) { 271 i(( t = `__log_g_ched_ckp_l ( dbv , ab_l )) != 0) 272 r ; 279 i( `IS_ZERO_LSN (* ab_l && ( t = 280 `__txn_fdϡckp ( dbv , ab_l , NULL )) != 0) 281 r ; 286 i( `IS_ZERO_LSN (* ab_l )) { 287 t = DB_NOTFOUND ; 288 r ; 290 } i(( t = `__txn_gckp ( dbv , ab_l )) != 0) 291 r ; 292 i(( t = `__log_curs ( dbv , & logc )) != 0) 293 r ; 298 ( t = `__logc_g ( logc , ab_l , & c , DB_SET )) == 0 && 299 ( t = `__txn_ckp_ad ( dbv , c . da , & ckp_gs )) == 0) { 300 i( ab_l -> fe < -> s_l .file || 301 ( ab_l -> fe = -> s_l .file && 302 ab_l -> offt < -> s_l .offset)) { 303 * ab_l = ckp_gs -> ckp_l ; 304 `__os_ ( dbv , ckp_gs ); 307 * ab_l = ckp_gs -> ϡ_ckp ; 308 `__os_ ( dbv , ckp_gs ); 310 i(( t_t = `__logc_o ( logc )!0 && t == 0) 311 t = t_t ; 312 r : 313 ( t ); 314 } } 323 $__log_autemove ( dbv ) 324 DB_ENV * dbv ; 326 t ; 327 ** beg , ** li ; 335 i(( t = `__log_chive ( dbv , & li , DB_ARCH_ABS )) != 0) { 336 i( t ! DB_NOTFOUND ) 337 `__db_r ( dbv , t , "log fileuto-remove"); 345 i( li ! NULL ) { 346 beg = li ; *li ! NULL ; ++list) 347 () `__os_uƚk ( dbv , * li ); 348 `__os_u ( dbv , beg ); 350 } } 357 $__bud_da ( dbv , ef , lip ) 358 DB_ENV * dbv ; 359 * ef , *** lip ; 361 DBT c ; 362 DB_LOGC * logc ; 363 DB_LSN l ; 364 __dbg_gi_gs * gp ; 365 u_t y_size , ϡ , n , nxt ; 366 u_t32_t y ; 367 t , t_t ; 368 ** y , ** yp , ** li , ** , * p , * _me ; 371 y_size = 64; 372 i(( t = `__os_mloc ( dbv , 373 (** y_size , & y )) != 0) 374 ( t ); 375 y [0] = NULL ; 377 `memt (& c , 0, (rec)); 378 i(( t = `__log_curs ( dbv , & logc )) != 0) 379 ( t ); 380 n = 0; ( t = `__logc_g ( logc , & l , & c , DB_PREV )) == 0;) { 381 i( c . size < ( y )) { 382 t = EINVAL ; 383 `__db_rx ( dbv , "DB_ENV->log_archive: badogecord"); 387 `memy (& y , c . da , (rectype)); 388 i( y ! DB___dbg_gi ) 390 i(( t = 391 `__dbg_gi_ad ( dbv , c . da , & gp )) != 0) { 392 t = EINVAL ; 393 `__db_rx ( dbv , 398 i( n > y_size - 2) { 399 y_size + LIST_INCREMENT ; 400 i(( t = `__os_loc ( dbv , 401 (** y_size , & y )) != 0) 402 _ctue ; 405 i(( t = `__os_rdup ( dbv , 406 gp -> me . da , & y [ n ++])) != 0) 407 _ctue ; 408 y [ n ] = NULL ; 410 i( gp -> y = DB_QUEUE ) { 411 i(( t = `__qam_ex_mes ( dbv , 412 gp -> me . da , & li )) != 0) 413 q_r ; 414 = li ; 415 ! NULL && *lp != NULL;p++) { 416 i( n > y_size - 2) { 417 y_size + LIST_INCREMENT ; 418 i(( t = `__os_loc ( dbv , 420 y_size , & y )) != 0) 421 q_r ; 423 i(( t = 424 `__os_rdup ( dbv , * , & y [ n ++])) != 0) 425 q_r ; 426 y [ n ] = NULL ; 428 q_r : i( li ! NULL ) 429 `__os_ ( dbv , li ); 431 _ctue : `__os_ ( dbv , gp ); 432 i( t != 0) 435 i( t = DB_NOTFOUND ) 436 t = 0; 437 i(( t_t = `__logc_o ( logc )!0 && t == 0) 438 t = t_t ; 439 i( t != 0) 440 r1 ; 443 i( n == 0) { 444 t = 0; 445 * lip = NULL ; 446 r1 ; 450 `qst ( y , ( size_t ) n , (*), __cmpfunc ); 456 ϡ = nxt = 0;x< n ;) { 462 i( ϡ ! nxt ) { 463 y [ ϡ ] =ay[ nxt ]; 464 y [ nxt ] = NULL ; 466 ++ nxt ;x< n && 467 `rcmp ( y [ ϡ ],ay[ nxt ]) == 0; ++nxt) { 468 `__os_ ( dbv , y [ nxt ]); 469 y [ nxt ] = NULL ; 473 i(( t = `__db_ame ( dbv , 474 DB_APP_DATA , y [ ϡ ], 0, NULL , & _me )) != 0) 475 r2 ; 478 i( `__os_exis ( dbv , _me , NULL ) != 0) { 479 `__os_ ( dbv , _me ); 480 `__os_ ( dbv , y [ ϡ ]); 481 y [ ϡ ] = NULL ; 486 `__os_ ( dbv , y [ ϡ ]); 487 y [ ϡ ] = NULL ; 488 i( ef ! NULL ) { 489 t = `__abame ( dbv , ef , _me , & y [ ϡ ]); 490 `__os_ ( dbv , _me ); 491 i( t != 0) 492 r2 ; 493 } i(( p = `__db_h ( _me )! NULL ) { 494 t = `__os_rdup ( dbv , p + 1, & y [ ϡ ]); 495 `__os_ ( dbv , _me ); 496 i( t != 0) 497 r2 ; 499 y [ ϡ ] = _me ; 500 ++ ϡ ; 504 y [ ϡ ] = NULL ; 507 i(( t = `__urmem ( dbv , & y )) != 0) 508 r1 ; 510 * lip = y ; 513 r2 : 518 i( y ! NULL ) 519 ; nxt < n ; ++nxt) 520 `__os_ ( dbv , y [ nxt ]); 523 r1 : i( y ! NULL ) { 524 yp = y ; *y! NULL ; ++arrayp) 525 `__os_ ( dbv , * yp ); 526 `__os_ ( dbv , y ); 528 ( t ); 529 } } 536 $__abame ( dbv , ef , me , wm ) 537 DB_ENV * dbv ; 538 * ef , * me , ** wm ; 540 size_t l_ef , l_me ; 541 ibh , t ; 542 * wme ; 544 l_me = ` ( me ); 545 ibh = `__os_abh ( me ); 546 l_ef = ibh ? 0 : ` ( ef ); 549 i(( t = `__os_mloc ( dbv , 550 l_ef + l_me + 2, & wme )) != 0) 551 ( t ); 552 * wm = wme ; 555 i(! ibh ) { 556 `memy ( wme , ef , l_ef ); 557 i( `rchr ( PATH_SEPARATOR , wme [ l_ef - 1]= NULL ) 558 wme [ l_ef ++] = PATH_SEPARATOR [0]; 560 `memy ( wme + l_ef , me , l_me + 1); 563 } } 571 $__urmem ( dbv , lip ) 572 DB_ENV * dbv ; 573 *** lip ; 575 size_t n ; 576 t ; 577 ** y , ** yp , ** ig , * ; 580 n = 0, ig = * lip ; *ig ! NULL ; ++orig) 581 n +(*+ ` (* ig ) + 1; 582 n += (*); 585 i(( t = `__os_umloc ( dbv , n , & y )) != 0) 586 ( t ); 588 = (*)( y + ( ig - * lip ) + 1); 591 ig = * lip , yp = y ; *ig ! NULL ; ++orig, ++arrayp) { 592 n = ` (* ig ); 593 `memy ( , * ig , n + 1); 594 * yp = ; 595 + n + 1; 597 `__os_ ( dbv , * ig ); 601 * yp = NULL ; 603 `__os_ ( dbv , * lip ); 604 * lip = y ; 607 } } 610 $__cmpfunc ( p1 , p2 ) 611 cڡ * p1 , * p2 ; 613 ( `rcmp (*((* cڡ *) p1 ), *((* cڡ *) p2 ))); 614 } } @../log/log_compare.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 21 $log_com ( l0 , l1 ) 22 cڡ DB_LSN * l0 , * l1 ; 24 ( `LOG_COMPARE ( l0 , l1 )); 25 } } 34 $__log_check_ge_l ( dbv , dbp , lp ) 35 DB_ENV * dbv ; 36 DB * dbp ; 37 DB_LSN * lp ; 39 LOG * ; 40 t ; 42 = dbv -> lg_hd -> gfo . imy ; 43 `LOG_SYSTEM_LOCK ( dbv ); 45 t = `LOG_COMPARE ( lp , & -> l ); 47 `LOG_SYSTEM_UNLOCK ( dbv ); 49 i( t < 0) 52 `__db_rx ( dbv , 54 dbp = NULL || dbp-> ame == NULL ? "unknown" : dbp->fname, 55 ( u_lg ) lp -> fe , (u_lgp-> offt , 56 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 57 `__db_rx ( dbv , "%s", 59 `__db_rx ( dbv , "%s", 61 `__db_rx ( dbv , "%s", 63 ( EINVAL ); 64 } } @../log/log_debug.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 16 __log_tf_t __P (( DB_ENV *, DB_TXN *, cڡ *, va_li )); 26 #ifde STDC_HEADERS 27 $__log_tf_pi ( DB_ENV * dbv , DB_TXN * txnid , cڡ * fmt , ...) 29 $__log_tf_pi ( dbv , txnid , fmt , va_i ) 30 DB_ENV * dbv ; 31 DB_TXN * txnid ; 32 cڡ * fmt ; 33 va_d 36 va_li ; 37 t ; 39 #ifde STDC_HEADERS 40 `va_t ( , fmt ); 42 `va_t ( ); 44 t = `__log_tf_ ( dbv , txnid , fmt , ); 45 `va_d ( ); 47 ( t ); 48 } } 62 $__log_tf_ ( dbv , txnid , fmt , ) 63 DB_ENV * dbv ; 64 DB_TXN * txnid ; 65 cڡ * fmt ; 66 va_li ; 68 DB_THREAD_INFO * ; 69 p_check , t , t_t ; 71 `PANIC_CHECK ( dbv ); 72 `ENV_REQUIRES_CONFIG ( dbv , 73 dbv -> lg_hd , "DB_ENV->log_tf", DB_INIT_LOG ); 75 `ENV_ENTER ( dbv , ); 76 p_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; 77 i( p_check && ( t = `__v_p_r ( dbv , 0)) != 0) 78 ( t ); 80 t = `__log_tf_t ( dbv , txnid , fmt , ); 82 i( p_check && ( t_t = `__v_db_p_ex ( dbv )!0 && ( t ) == 0) 83 t = t_t ; 84 `va_d ( ); 85 `ENV_LEAVE ( dbv , ); 87 ( t ); 88 } } 98 #ifde STDC_HEADERS 99 $__log_tf ( DB_ENV * dbv , DB_TXN * txnid , cڡ * fmt , ...) 101 $__log_tf ( dbv , txnid , fmt , va_i ) 102 DB_ENV * dbv ; 103 DB_TXN * txnid ; 104 cڡ * fmt ; 105 va_d 108 va_li ; 109 t ; 111 #ifde STDC_HEADERS 112 `va_t ( , fmt ); 114 `va_t ( ); 116 t = `__log_tf_t ( dbv , txnid , fmt , ); 117 `va_d ( ); 119 ( t ); 120 } } 127 $__log_tf_t ( dbv , txnid , fmt , ) 128 DB_ENV * dbv ; 129 DB_TXN * txnid ; 130 cڡ * fmt ; 131 va_li ; 133 DBT dbt , msgdbt ; 134 DB_LSN l ; 135 __logbuf [2048]; 137 i(! `DBENV_LOGGING ( dbv )) { 138 `__db_rx ( dbv , "Loggingot currentlyermitted"); 139 ( EAGAIN ); 142 `memt (& dbt , 0, (opdbt)); 143 dbt . da = "DIAGNOSTIC"; 144 dbt . size = ("DIAGNOSTIC") - 1; 146 `memt (& msgdbt , 0, (msgdbt)); 147 msgdbt . da = __logbuf ; 148 msgdbt . size = ( u_t32_t ) `vtf ( __logbuf , (__logbuf), fmt , ); 150 ( `__db_debug_log ( 151 dbv , txnid , & l , 0, & dbt , -1, & msgdbt , NULL , 0)); 152 } } @../log/log_get.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/hmac.h " 15 ~"dbc/log.h " 16 ~"dbc/hash.h " 18 um { mL_ALREADY , mL_ACQUIRED , mL_NONE } tRLOCK ; 20 __logc_o_ __P (( DB_LOGC *, u_t32_t )); 21 __logc_g_ __P (( DB_LOGC *, DB_LSN *, DBT *, u_t32_t )); 22 __logc_g_t __P (( DB_LOGC *, DB_LSN *, DBT *, u_t32_t )); 23 __logc_hdrchk __P (( DB_LOGC *, DB_LSN *, HDR *, *)); 24 __logc_curs __P (( DB_LOGC *, DB_LSN *, HDR *, u_t8_t **)); 25 __logc_gi __P (( DB_LOGC *, 26 DB_LSN *, RLOCK *, DB_LSN *, HDR *, u_t8_t **, *)); 27 __logc_io __P (( DB_LOGC *, 28 u_t32_t , u_t32_t, *, size_t *, *)); 29 __logc_disk __P (( DB_LOGC *, 30 DB_LSN *, DB_LSN *, u_t32_t , HDR *, u_t8_t **, *)); 31 __logc_t_maxc __P (( DB_LOGC *, *)); 32 __logc_sh܌d __P (( DB_LOGC *, DB_LSN *, )); 33 __logc_vsi_ __P (( DB_LOGC *, u_t32_t *, u_int32_t)); 42 $__log_curs_ ( dbv , log , ags ) 43 DB_ENV * dbv ; 44 DB_LOGC ** log ; 45 u_t32_t ags ; 47 DB_THREAD_INFO * ; 48 t ; 50 `PANIC_CHECK ( dbv ); 51 `ENV_REQUIRES_CONFIG ( dbv , 52 dbv -> lg_hd , "DB_ENV->log_curs", DB_INIT_LOG ); 55 i(( t = `__db_fchk ( dbv , "DB_ENV->log_curs", ags , 0)) != 0) 56 ( t ); 58 `ENV_ENTER ( dbv , ); 59 `REPLICATION_WRAP ( dbv , ( `__log_curs (dbv, log )), t ); 60 `ENV_LEAVE ( dbv , ); 61 ( t ); 62 } } 71 $__log_curs ( dbv , log ) 72 DB_ENV * dbv ; 73 DB_LOGC ** log ; 75 DB_LOGC * logc ; 76 t ; 78 * log = NULL ; 81 i(( t = `__os_oc ( dbv , 1, ( DB_LOGC ), & logc )) != 0) 82 ( t ); 84 logc -> bp_size = LG_CURSOR_BUF_SIZE ; 88 logc -> bp_maxc = MEGABYTE ; 89 i(( t = `__os_mloc ( dbv , logc -> bp_size , &logc-> bp )) != 0) { 90 `__os_ ( dbv , logc ); 91 ( t ); 94 logc -> dbv = dbenv; 95 logc -> o = __logc_o_ ; 96 logc -> g = __logc_g_ ; 97 logc -> vsi = __logc_vsi_ ; 99 * log = logc ; 101 } } 108 $__logc_o_ ( logc , ags ) 109 DB_LOGC * logc ; 110 u_t32_t ags ; 112 DB_THREAD_INFO * ; 113 DB_ENV * dbv ; 114 t ; 116 dbv = logc ->dbenv; 118 `PANIC_CHECK ( dbv ); 119 i(( t = `__db_fchk ( dbv , "DB_LOGC->o", ags , 0)) != 0) 120 ( t ); 122 `ENV_ENTER ( dbv , ); 123 `REPLICATION_WRAP ( dbv , ( `__logc_o ( logc )), t ); 124 `ENV_LEAVE ( dbv , ); 125 ( t ); 126 } } 135 $__logc_o ( logc ) 136 DB_LOGC * logc ; 138 DB_ENV * dbv ; 140 dbv = logc ->dbenv; 142 i( logc -> fhp ! NULL ) { 143 () `__os_ohd ( dbv , logc -> fhp ); 144 logc -> fhp = NULL ; 147 i( logc -> dbt . da ! NULL ) 148 `__os_ ( dbv , logc -> dbt . da ); 150 `__os_ ( dbv , logc -> bp ); 151 `__os_ ( dbv , logc ); 154 } } 161 $__logc_vsi_ ( logc , vsip , ags ) 162 DB_LOGC * logc ; 163 u_t32_t * vsip ; 164 u_t32_t ags ; 166 DB_ENV * dbv ; 167 DB_THREAD_INFO * ; 168 t ; 170 dbv = logc ->dbenv; 172 `PANIC_CHECK ( dbv ); 173 i(( t = `__db_fchk ( dbv , "DB_LOGC->vsi", ags , 0)) != 0) 174 ( t ); 176 `ENV_ENTER ( dbv , ); 177 `REPLICATION_WRAP ( dbv , ( `__logc_vsi ( logc , vsip )), t ); 178 `ENV_LEAVE ( dbv , ); 179 ( t ); 180 } } 189 $__logc_vsi ( logc , vsip ) 190 DB_LOGC * logc ; 191 u_t32_t * vsip ; 193 DB_ENV * dbv ; 194 DB_LSN ; 195 DB_LOGC * ogc ; 196 DBT hdrdbt ; 197 LOGP * rsi ; 198 t , t_t ; 200 dbv = logc ->dbenv; 201 i( `IS_ZERO_LSN ( logc -> l )) { 202 `__db_rx ( dbv , "DB_LOGC->get: unset cursor"); 203 ( EINVAL ); 205 t = 0; 216 i( logc -> l . fe !logc-> p_l .file) { 217 i(( t = `__log_curs ( dbv , & ogc )) != 0) 218 ( t ); 219 . fe = logc -> l .file; 220 . offt = 0; 221 ogc -> l = ; 222 `memt (& hdrdbt , 0, ( DBT )); 223 i(( t = `__logc_g_t ( ogc , 224 & , & hdrdbt , DB_SET )) == 0) { 225 rsi = ( LOGP *) hdrdbt . da ; 226 logc -> p_l =ogc-> l ; 227 logc -> p_vsi = rsi -> vsi ; 229 i(( t_t = `__logc_o ( ogc )!0 && t == 0) 230 t = t_t ; 233 i( t == 0) 234 * vsip = logc -> p_vsi ; 235 ( t ); 236 } } 243 $__logc_g_ ( logc , , dbt , ags ) 244 DB_LOGC * logc ; 245 DB_LSN * ; 246 DBT * dbt ; 247 u_t32_t ags ; 249 DB_ENV * dbv ; 250 DB_THREAD_INFO * ; 251 t ; 253 dbv = logc ->dbenv; 255 `PANIC_CHECK ( dbv ); 258 ags ) { 259 DB_CURRENT : 260 DB_FIRST : 261 DB_LAST : 262 DB_NEXT : 263 DB_PREV : 265 DB_SET : 266 i( `IS_ZERO_LSN (* )) { 267 `__db_rx ( dbv , "DB_LOGC->get: invalid LSN: %lu/%lu", 268 ( u_lg ) -> fe , (u_lgl-> offt ); 269 ( EINVAL ); 273 ( `__db_ ( dbv , "DB_LOGC->get", 1)); 276 `ENV_ENTER ( dbv , ); 277 `REPLICATION_WRAP ( dbv , ( `__logc_g ( logc , , dbt , ags )), t ); 278 `ENV_LEAVE ( dbv , ); 279 ( t ); 280 } } 289 $__logc_g ( logc , , dbt , ags ) 290 DB_LOGC * logc ; 291 DB_LSN * ; 292 DBT * dbt ; 293 u_t32_t ags ; 295 DB_ENV * dbv ; 296 DB_LSN ved_l ; 297 LOGP * rsi ; 298 t ; 300 dbv = logc ->dbenv; 316 ved_l = * ; 322 i(( t = `__logc_g_t ( logc , , dbt , ags )) != 0) { 323 * = ved_l ; 324 ( t ); 326 i( -> offt =0 && ( ags = DB_FIRST || 327 ags = DB_NEXT || fg= DB_LAST || fg= DB_PREV )) { 328 ags ) { 329 DB_FIRST : 330 ags = DB_NEXT ; 332 DB_LAST : 333 ags = DB_PREV ; 335 DB_NEXT : 336 DB_PREV : 344 rsi = ( LOGP *) dbt -> da ; 345 logc -> p_l = * ; 346 logc -> p_vsi = rsi -> vsi ; 347 i( `F_ISSET ( dbt , DB_DBT_MALLOC )) { 348 `__os_ ( dbv , dbt -> da ); 349 dbt -> da = NULL ; 351 i(( t = `__logc_g_t ( logc , , dbt , ags )) != 0) { 352 * = ved_l ; 353 ( t ); 358 } } 365 $__logc_g_t ( logc , , dbt , ags ) 366 DB_LOGC * logc ; 367 DB_LSN * ; 368 DBT * dbt ; 369 u_t32_t ags ; 371 DB_CIPHER * db_ch ; 372 DB_ENV * dbv ; 373 DB_LOG * db ; 374 DB_LSN ϡ_l , Ƣ ; 375 HDR hdr ; 376 LOG * ; 377 RLOCK ock ; 378 logfe_vidy us ; 379 u_t32_t t ; 380 u_t8_t * ; 381 eof , is_hmac , ed_cksum , t ; 383 dbv = logc ->dbenv; 384 db_ch = dbv -> yo_hd ; 385 db = dbv -> lg_hd ; 386 = db -> gfo . imy ; 387 is_hmac = 0; 393 ock = `F_ISSET ( logc , DB_LOG_LOCKED ? L_ALREADY : L_NONE ; 395 Ƣ = logc -> l ; 396 ags ) { 397 DB_NEXT : 398 i(! `IS_ZERO_LSN ( Ƣ )) { 400 Ƣ . offt + logc -> n ; 403 ags = DB_FIRST ; 405 DB_FIRST : 407 i(( t = `__log_fd ( db , 1, & t , & us )) != 0) 408 r ; 426 us ) { 427 DB_LV_INCOMPLETE : 428 `DB_ASSERT ( dbv , -> l . fe = t ); 430 DB_LV_NORMAL : 431 DB_LV_OLD_READABLE : 432 Ƣ . fe = t ; 434 DB_LV_NONEXISTENT : 435 Ƣ . fe = 1; 436 `DB_ASSERT ( dbv , -> l . fe = Ƣ .file); 438 DB_LV_OLD_UNREADABLE : 439 Ƣ . fe = t + 1; 440 `DB_ASSERT ( dbv , -> l . fe = Ƣ .file); 443 Ƣ . offt = 0; 445 DB_CURRENT : 447 DB_PREV : 448 i(! `IS_ZERO_LSN ( Ƣ )) { 450 i( Ƣ . offt == 0) { 451 i( Ƣ . fe == 1) { 452 t = DB_NOTFOUND ; 453 r ; 455 i((! -> db_log_memy && 456 ( `__log_vid ( db , Ƣ . fe - 1, 0, NULL , 457 0, & us , NULL ) != 0 || 458 ( us ! DB_LV_NORMAL && 459 us ! DB_LV_OLD_READABLE )))) { 460 t = DB_NOTFOUND ; 461 r ; 464 -- Ƣ . fe ; 466 Ƣ . offt = logc -> ev ; 470 DB_LAST : 471 i( ock = L_NONE ) { 472 ock = L_ACQUIRED ; 473 `LOG_SYSTEM_LOCK ( dbv ); 475 Ƣ . fe = -> l .file; 476 Ƣ . offt = -> l .off-p-> n ; 478 DB_SET : 479 Ƣ = * ; 482 t = `__db_unknown_th ( dbv , "__logc_get_int"); 483 r ; 487 xt_fe : ++ Ƣ . fe ; 488 Ƣ . offt = 0; 496 i( `CRYPTO_ON ( dbv )) { 497 hdr . size = HDR_CRYPTO_SZ ; 498 is_hmac = 1; 500 hdr . size = HDR_NORMAL_SZ ; 501 is_hmac = 0; 508 i(( t = `__logc_curs ( logc , & Ƣ , & hdr , & )) != 0) 509 r ; 510 i( ! NULL ) 511 cksum ; 528 `ZERO_LSN ( ϡ_l ); 529 i(! `F_ISSET ( logc , DB_LOG_DISK ) || 530 `LOG_COMPARE (& Ƣ , & logc -> l ) > 0) { 531 `F_CLR ( logc , DB_LOG_DISK ); 533 i(( t = `__logc_gi ( logc , 534 & Ƣ , & ock , & ϡ_l , & hdr , & , & ed_cksum )) != 0) 535 r ; 536 i( ! NULL ) { 542 i( ed_cksum ) 543 cksum ; 544 om_memy ; 546 i( -> db_log_memy ) 547 nohdr ; 558 i( ock = L_ACQUIRED ) { 559 ock = L_NONE ; 560 `LOG_SYSTEM_UNLOCK ( dbv ); 562 i(( t = `__logc_disk ( 563 logc , & Ƣ , & ϡ_l , ags , & hdr , & , & eof )) != 0) 564 r ; 565 i( eof ) { 570 i( ags ! DB_NEXT || Ƣ . offt == 0) 571 ( DB_NOTFOUND ); 572 xt_fe ; 574 `F_SET ( logc , DB_LOG_DISK ); 576 cksum : 582 i( ock = L_ACQUIRED ) { 583 ock = L_NONE ; 584 `LOG_SYSTEM_UNLOCK ( dbv ); 593 i(( t = `__db_check_chksum ( dbv , & hdr , db_ch , 594 hdr . chksum , + hdr. size , hdr. n - hdr.size, is_hmac )) != 0) { 595 i( `F_ISSET ( logc , DB_LOG_SILENT_ERR )) { 596 i( t == 0 ||et == -1) 597 t = EIO ; 598 } i( t == -1) { 599 `__db_rx ( dbv , 601 ( u_lg ) Ƣ . fe , (u_lgl. offt ); 602 `__db_rx ( dbv , 604 t = `__db_nic ( dbv , DB_RUNRECOVERY ); 606 r ; 614 i( hdr . n == 0) { 615 nohdr : ags ) { 616 DB_FIRST : 617 DB_NEXT : 619 xt_fe ; 620 DB_LAST : 621 DB_PREV : 630 `__db_rx ( dbv , 632 t = `__db_nic ( dbv , DB_RUNRECOVERY ); 633 r ; 634 DB_SET : 641 om_memy : 648 i( ock = L_ACQUIRED ) { 649 ock = L_NONE ; 650 `LOG_SYSTEM_UNLOCK ( dbv ); 654 i(( t = `__db_tcy ( dbv , dbt , + hdr . size , 655 ( u_t32_t )( hdr . n - hdr. size ), 656 & logc -> dbt . da , &logc->dbt. un )) != 0) 657 r ; 659 i( `CRYPTO_ON ( dbv )) { 660 i(( t = db_ch -> `dey ( dbv , db_ch-> da , 661 hdr . iv , dbt -> da , hdr. n - hdr. size )) != 0) { 662 t = EAGAIN ; 663 r ; 672 dbt -> size = hdr . ig_size ; 676 * = Ƣ ; 677 logc -> l = Ƣ ; 678 logc -> n = hdr .len; 679 logc -> ev = hdr .prev; 681 r : i( ock = L_ACQUIRED ) 682 `LOG_SYSTEM_UNLOCK ( dbv ); 684 ( t ); 685 } } 692 $__logc_curs ( logc , l , hdr , ) 693 DB_LOGC * logc ; 694 DB_LSN * l ; 695 HDR * hdr ; 696 u_t8_t ** ; 698 u_t8_t * p ; 699 eof ; 701 * = NULL ; 713 i( logc -> bp_l . fe ! l ->file) 715 i( logc -> bp_l . offt > l ->offset) 717 i( logc -> bp_l . offt +ogc-> bp_ < l ->off+ hdr -> size ) 730 p = logc -> bp + ( l -> offt -ogc-> bp_l .offset); 731 `memy ( hdr , p , hdr-> size ); 732 i( `__logc_hdrchk ( logc , l , hdr , & eof )) 733 ( DB_NOTFOUND ); 734 i( eof || logc -> bp_l . offt +ogc-> bp_ < l ->off+ hdr -> n ) 737 * = p ; 740 } } 747 $__logc_gi ( logc , l , ockp , ϡ_l , hdr , , ed_cksump ) 748 DB_LOGC * logc ; 749 DB_LSN * l , * ϡ_l ; 750 RLOCK * ockp ; 751 HDR * hdr ; 752 u_t8_t ** ; 753 * ed_cksump ; 755 DB_ENV * dbv ; 756 DB_LOG * db ; 757 LOG * ; 758 size_t b_gi , n , ; 759 u_t32_t b_disk ; 760 eof , t ; 761 u_t8_t * p ; 763 dbv = logc ->dbenv; 764 db = dbv -> lg_hd ; 765 = dbv -> lg_hd -> gfo . imy ; 767 t = 0; 768 b_gi = 0; 769 * = NULL ; 770 * ed_cksump = 0; 773 i(* ockp = L_NONE ) { 774 * ockp = L_ACQUIRED ; 775 `LOG_SYSTEM_LOCK ( dbv ); 788 * ϡ_l = -> l ; 789 i(! -> db_log_memy && ϡ_l -> offt >p-> w_off ) 790 ϡ_l -> offt = -> w_off ; 814 i( `IS_ZERO_LSN ( -> l )) 816 i( `LOG_COMPARE ( l , & ->lsn) >= 0) 817 ( DB_NOTFOUND ); 818 i( -> db_log_memy ) { 819 i(( t = `__log_mem_loff ( db , l , & b_gi )) != 0) 820 ( t ); 821 } i( -> b_off =0 || `LOG_COMPARE ( l , &-> f_l ) < 0) 829 logc -> bp_ = 0; 845 i( -> db_log_memy || `LOG_COMPARE ( l , &-> f_l ) > 0) { 846 i(! -> db_log_memy ) 847 b_gi = l -> offt - -> w_off ; 848 `__log_mem_cyout ( db , b_gi , hdr , hdr-> size ); 849 i( `__logc_hdrchk ( logc , l , hdr , & eof ) != 0) 850 ( DB_NOTFOUND ); 851 i( eof ) 853 i( -> db_log_memy ) { 854 i( `RINGBUF_LEN ( , b_gi ,p-> b_off < hdr -> n ) 855 ( DB_NOTFOUND ); 856 } i( l -> offt + hdr -> n > -> w_off +p-> bufr_size ) 857 ( DB_NOTFOUND ); 858 i( logc -> bp_size < hdr -> n ) { 859 n = ( size_t ) `DB_ALIGN (( utmax_t ) hdr ->len * 2, 128); 860 i(( t = 861 `__os_loc ( logc -> dbv , n , &logc-> bp )) != 0) 862 ( t ); 863 logc -> bp_size = ( u_t32_t ) n ; 865 `__log_mem_cyout ( db , b_gi , logc -> bp , hdr -> n ); 866 * = logc -> bp ; 870 `DB_ASSERT ( dbv , ! -> db_log_memy ); 887 b_disk = -> w_off - l -> offt ; 888 i( -> b_off <-> n ) 889 b_gi = ( u_t32_t ) -> b_off ; 891 p = db -> bu + ( -> b_off -p-> n );;) { 892 `memy ( hdr , p , hdr-> size ); 893 i( hdr -> ev = l -> offt ) { 894 b_gi = ( u_t32_t )( p - db -> bu ); 897 p = db -> bu + ( hdr -> ev - -> w_off ); 907 i( logc -> bp_size < b_gi + b_disk ) { 908 n = ( size_t ) `DB_ALIGN (( utmax_t )( b_gi + b_disk ) * 2, 128); 909 i(( t = `__os_loc ( logc -> dbv , n , &logc-> bp )) != 0) 910 ( t ); 911 logc -> bp_size = ( u_t32_t ) n ; 915 p = ( logc -> bp +ogc-> bp_size - b_gi ; 916 `memy ( p , db -> bu , b_gi ); 919 i(* ockp = L_ACQUIRED ) { 920 * ockp = L_NONE ; 921 `LOG_SYSTEM_UNLOCK ( dbv ); 928 i( b_disk != 0) { 929 p - b_disk ; 930 = b_disk ; 931 i(( t = `__logc_io ( 932 logc , l -> fe ,-> offt , p , & , NULL )) != 0) 933 ( t ); 934 i( < b_disk ) 935 ( `__logc_sh܌d ( logc , l , 0)); 938 * ed_cksump = 1; 942 `memy ( hdr , p , hdr-> size ); 944 * = p ; 946 } } 953 $__logc_disk ( logc , l , ϡ_l , ags , hdr , , eo ) 954 DB_LOGC * logc ; 955 DB_LSN * l , * ϡ_l ; 956 u_t32_t ags ; 957 * eo ; 958 HDR * hdr ; 959 u_t8_t ** ; 961 DB_ENV * dbv ; 962 size_t n , ; 963 u_t32_t offt ; 964 t ; 966 dbv = logc ->dbenv; 967 * eo = 0; 969 = hdr -> size ; 970 i(( t = 971 `__logc_io ( logc , l -> fe ,-> offt , hdr , & , eo )) != 0) 972 ( t ); 973 i(* eo ) 983 i( < hdr -> size ) { 984 * eo = 1; 989 i(( t = `__logc_hdrchk ( logc , l , hdr , eo )) != 0) 990 ( t ); 991 i(* eo ) 998 logc -> bp_ = 0; 1005 i( logc -> bp_size < hdr -> n ) { 1006 n = ( size_t ) `DB_ALIGN (( utmax_t ) hdr ->len * 2, 128); 1007 i(( t = `__os_loc ( dbv , n , & logc -> bp )) != 0) 1008 ( t ); 1009 logc -> bp_size = ( u_t32_t ) n ; 1023 i( ags = DB_FIRST || fg= DB_NEXT ) 1024 offt = l ->offset; 1025 i( l -> offt + hdr -> n < logc -> bp_size ) 1026 offt = 0; 1028 offt = ( l ->off+ hdr -> n - logc -> bp_size ; 1030 = logc -> bp_size ; 1031 i( l -> fe = ϡ_l ->f&& offt + >=ast_lsn->offset) 1032 = ϡ_l -> offt - offset; 1034 i(( t = 1035 `__logc_io ( logc , l -> fe , offt ,ogc-> bp , & , eo )) != 0) 1036 ( t ); 1042 i( < ( l -> offt + hdr -> n ) - offset) 1043 ( `__logc_sh܌d ( logc , l , 1)); 1051 logc -> bp_ = ( u_t32_t ) ; 1052 logc -> bp_l . offt = offset; 1054 * = logc -> bp + ( l -> offt - offset); 1057 } } 1080 $__logc_hdrchk ( logc , l , hdr , eo ) 1081 DB_LOGC * logc ; 1082 DB_LSN * l ; 1083 HDR * hdr ; 1084 * eo ; 1086 DB_ENV * dbv ; 1087 t ; 1089 dbv = logc ->dbenv; 1094 i( eo ! NULL ) { 1095 i( hdr -> ev =0 && hdr-> chksum [0] =0 && hdr-> n == 0) { 1096 * eo = 1; 1099 * eo = 0; 1106 i( hdr -> n <hdr-> size ) 1107 r ; 1113 i( logc -> bp_maxc !0 && hdr -> n >ogc->bp_maxrec) { 1119 i(( t = `__logc_t_maxc ( logc , NULL )) != 0) { 1120 `__db_r ( dbv , t , "DB_LOGC->get"); 1121 ( t ); 1123 i( logc -> bp_maxc !0 && hdr -> n >ogc->bp_maxrec) 1124 r ; 1128 r : i(! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1129 `__db_rx ( dbv , 1131 ( u_lg ) l -> fe , (u_lg-> offt ); 1132 ( EIO ); 1133 } } 1140 $__logc_io ( logc , um , offt , p , p , eo ) 1141 DB_LOGC * logc ; 1142 u_t32_t um , offt ; 1143 * p ; 1144 size_t * p ; 1145 * eo ; 1147 DB_ENV * dbv ; 1148 DB_LOG * db ; 1149 LOG * ; 1150 t ; 1151 * ; 1153 dbv = logc ->dbenv; 1154 db = dbv -> lg_hd ; 1155 = db -> gfo . imy ; 1161 i( logc -> fhp ! NULL &&ogc-> bp_l . fe ! um ) { 1162 t = `__os_ohd ( dbv , logc -> fhp ); 1163 logc -> fhp = NULL ; 1164 logc -> bp_l . fe = 0; 1166 i( t != 0) 1167 ( t ); 1169 i( logc -> fhp = NULL ) { 1170 i(( t = `__log_me ( db , um , 1171 & , & logc -> fhp , DB_OSO_RDONLY | DB_OSO_SEQ )) != 0) { 1176 i( eo ! NULL ) { 1177 * eo = 1; 1178 t = 0; 1179 } i(! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1180 `__db_r ( dbv , t , "DB_LOGC->g: %s", ); 1181 `__os_ ( dbv , ); 1182 ( t ); 1185 i(( t = `__logc_t_maxc ( logc , )) != 0) { 1186 `__db_r ( dbv , t , "DB_LOGC->g: %s", ); 1187 `__os_ ( dbv , ); 1188 ( t ); 1190 `__os_ ( dbv , ); 1192 logc -> bp_l . fe = um ; 1195 `STAT (++ -> . _rcou ); 1197 i(( t = `__os_io ( dbv , DB_IO_READ , 1198 logc -> fhp , 0, 0, offt , ( u_t32_t )* p , p ,rp)) != 0) { 1199 i(! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1200 `__db_r ( dbv , t , 1202 ( u_lg ) um , (u_lg) offt ); 1203 ( t ); 1207 } } 1214 $__logc_sh܌d ( logc , l , check_st ) 1215 DB_LOGC * logc ; 1216 DB_LSN * l ; 1217 check_st ; 1219 i(! check_st || ! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1220 `__db_rx ( logc -> dbv , "DB_LOGC->get: LSN: %lu/%lu: shortead", 1221 ( u_lg ) l -> fe , (u_lg-> offt ); 1222 ( EIO ); 1223 } } 1230 $__logc_t_maxc ( logc , ) 1231 DB_LOGC * logc ; 1232 * ; 1234 DB_ENV * dbv ; 1235 DB_LOG * db ; 1236 LOG * ; 1237 u_t32_t mbys , bys ; 1238 t ; 1240 dbv = logc ->dbenv; 1241 db = dbv -> lg_hd ; 1252 i( logc -> fhp ! NULL ) { 1253 i(( t = `__os_iofo ( dbv , , logc -> fhp , 1254 & mbys , & bys , NULL )) != 0) 1255 ( t ); 1256 i( logc -> bp_maxc < ( mbys * MEGABYTE + bys )) 1257 logc -> bp_maxc = mbys * MEGABYTE + bys ; 1272 = db -> gfo . imy ; 1273 i( logc -> bp_maxc < -> bufr_size ) 1274 logc -> bp_maxc = -> bufr_size ; 1277 } } 1279 #ifde HAVE_REPLICATION 1291 $__log_p_l ( dbv , , c , t_lp , ϡ_lp ) 1292 DB_ENV * dbv ; 1293 REP_CONTROL * ; 1294 DBT * c ; 1295 DB_LSN * t_lp ; 1296 DB_LSN * ϡ_lp ; 1298 DB_LSN ve_l , tmp_l ; 1299 DBT logc ; 1300 REP_CONTROL tmp ; 1301 u_t32_t n ; 1302 is_dup , is_rm , t , ve_t ; 1303 u_t8_t * p , * ; 1305 `memt (& logc , 0, (logrec)); 1306 `memt (& ve_l , 0, (save_lsn)); 1307 `memt (& tmp_l , 0, (tmp_lsn)); 1312 `memy (& tmp , , (tmprp)); 1319 is_rm = `F_ISSET ( , REPCTL_PERM ); 1320 `F_CLR (& tmp , REPCTL_PERM ); 1321 t = ve_t = 0; 1322 = ( u_t8_t *) c -> da +ec-> size , p = (u_int8_t *)rec->data; 1323 p < ; ) { 1333 `memy (& n , p , (len)); 1334 p +( n ); 1335 `memy (& tmp . l , p , ( DB_LSN )); 1336 p +( DB_LSN ); 1337 logc . da = p ; 1338 logc . size = n ; 1339 `RPRINT ( dbv , (dbenv, 1341 ( u_lg ) tmp . l . fe , (u_lgmp.l. offt )); 1342 `RPRINT ( dbv , (dbenv, 1344 `P_TO_ULONG ( p ), P_TO_ULONG( ), P_TO_ULONG( logc . da ), 1345 ( u_lg ) logc . size , (u_long)logrec.size)); 1346 is_dup = 0; 1347 p + n ; 1348 i( p > && is_rm ) 1349 `F_SET (& tmp , REPCTL_PERM ); 1350 t = `__p_y ( dbv , 1351 & tmp , & logc , & tmp_l , & is_dup , ϡ_lp ); 1352 `RPRINT ( dbv , (dbenv, 1354 t , ( u_lg ) tmp_l . fe , (u_lgmp_l. offt )); 1360 i( is_dup ) 1361 out ; 1363 t ) { 1369 DB_REP_LOGREADY : 1370 out ; 1374 DB_REP_ISPERM : 1375 DB_REP_NOTPERM : 1376 ve_t = t ; 1377 ve_l = tmp_l ; 1378 t = 0; 1389 out ; 1392 out : 1397 i( t == 0) { 1398 t = ve_t ; 1399 * t_lp = ve_l ; 1401 ( t ); 1402 } } @../log/log_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 21 $__log_v_ ( dbv ) 22 DB_ENV * dbv ; 30 dbv -> lg_bsize = 0; 31 dbv -> lg_gimax = LG_BASE_REGION_SIZE ; 34 } } 43 $__log_v_deroy ( dbv ) 44 DB_ENV * dbv ; 46 `COMPQUIET ( dbv , NULL ); 47 } } 53 $__log_g_lg_bsize ( dbv , lg_bsiz ) 54 DB_ENV * dbv ; 55 u_t32_t * lg_bsiz ; 57 `ENV_NOT_CONFIGURED ( dbv , 58 dbv -> lg_hd , "DB_ENV->g_lg_bsize", DB_INIT_LOG ); 60 i( `LOGGING_ON ( dbv )) { 62 * lg_bsiz = 63 (( LOG *) dbv -> lg_hd -> gfo . imy )-> bufr_size ; 65 * lg_bsiz = dbv -> lg_bsize ; 67 } } 76 $__log_t_lg_bsize ( dbv , lg_bsize ) 77 DB_ENV * dbv ; 78 u_t32_t lg_bsize ; 80 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_lg_bsize"); 82 dbv -> lg_bsize =g_bsize; 84 } } 90 $__log_g_lg_femode ( dbv , lg_mod ) 91 DB_ENV * dbv ; 92 * lg_mod ; 94 DB_LOG * db ; 96 `ENV_NOT_CONFIGURED ( dbv , 97 dbv -> lg_hd , "DB_ENV->g_lg_femode", DB_INIT_LOG ); 99 i( `LOGGING_ON ( dbv )) { 100 db = dbv -> lg_hd ; 101 `LOG_SYSTEM_LOCK ( dbv ); 102 * lg_mod = (( LOG *) db -> gfo . imy )-> femode ; 103 `LOG_SYSTEM_UNLOCK ( dbv ); 105 * lg_mod = dbv -> lg_femode ; 108 } } 117 $__log_t_lg_femode ( dbv , lg_mode ) 118 DB_ENV * dbv ; 119 lg_mode ; 121 DB_LOG * db ; 122 LOG * ; 124 `ENV_NOT_CONFIGURED ( dbv , 125 dbv -> lg_hd , "DB_ENV->t_lg_femode", DB_INIT_LOG ); 127 i( `LOGGING_ON ( dbv )) { 128 db = dbv -> lg_hd ; 129 = db -> gfo . imy ; 130 `LOG_SYSTEM_LOCK ( dbv ); 131 -> femode = lg_mode ; 132 `LOG_SYSTEM_UNLOCK ( dbv ); 134 dbv -> lg_femode = lg_mode ; 137 } } 143 $__log_g_lg_max ( dbv , lg_maxp ) 144 DB_ENV * dbv ; 145 u_t32_t * lg_maxp ; 147 DB_LOG * db ; 149 `ENV_NOT_CONFIGURED ( dbv , 150 dbv -> lg_hd , "DB_ENV->g_lg_max", DB_INIT_LOG ); 152 i( `LOGGING_ON ( dbv )) { 153 db = dbv -> lg_hd ; 154 `LOG_SYSTEM_LOCK ( dbv ); 155 * lg_maxp = (( LOG *) db -> gfo . imy )-> log_nsize ; 156 `LOG_SYSTEM_UNLOCK ( dbv ); 158 * lg_maxp = dbv -> lg_size ; 161 } } 170 $__log_t_lg_max ( dbv , lg_max ) 171 DB_ENV * dbv ; 172 u_t32_t lg_max ; 174 DB_LOG * db ; 175 LOG * ; 176 t ; 178 `ENV_NOT_CONFIGURED ( dbv , 179 dbv -> lg_hd , "DB_ENV->t_lg_max", DB_INIT_LOG ); 181 i( `LOGGING_ON ( dbv )) { 182 i(( t = `__log_check_sizes ( dbv , lg_max , 0)) != 0) 183 ( t ); 184 db = dbv -> lg_hd ; 185 = db -> gfo . imy ; 186 `LOG_SYSTEM_LOCK ( dbv ); 187 -> log_nsize = lg_max ; 188 `LOG_SYSTEM_UNLOCK ( dbv ); 190 dbv -> lg_size = lg_max ; 193 } } 199 $__log_g_lg_gimax ( dbv , lg_gimaxp ) 200 DB_ENV * dbv ; 201 u_t32_t * lg_gimaxp ; 203 `ENV_NOT_CONFIGURED ( dbv , 204 dbv -> lg_hd , "DB_ENV->g_lg_gimax", DB_INIT_LOG ); 206 i( `LOGGING_ON ( dbv )) { 208 * lg_gimaxp = 209 (( LOG *) dbv -> lg_hd -> gfo . imy )-> gimax ; 211 * lg_gimaxp = dbv -> lg_gimax ; 213 } } 222 $__log_t_lg_gimax ( dbv , lg_gimax ) 223 DB_ENV * dbv ; 224 u_t32_t lg_gimax ; 226 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_lg_regionmax"); 229 i( lg_gimax !0 &&g_gimax < LG_BASE_REGION_SIZE ) { 230 `__db_rx ( dbv , 231 "logegi sizmu b>%d", LG_BASE_REGION_SIZE ); 232 ( EINVAL ); 235 dbv -> lg_gimax =g_regionmax; 237 } } 243 $__log_g_lg_d ( dbv , dp ) 244 DB_ENV * dbv ; 245 cڡ ** dp ; 247 * dp = dbv -> db_log_d ; 249 } } 258 $__log_t_lg_d ( dbv , d ) 259 DB_ENV * dbv ; 260 cڡ * d ; 262 i( dbv -> db_log_d ! NULL ) 263 `__os_ ( dbv , dbv-> db_log_d ); 264 ( `__os_rdup ( dbv , d , &dbv-> db_log_d )); 265 } } 274 $__log_g_ags ( dbv , ag ) 275 DB_ENV * dbv ; 276 u_t32_t * ag ; 278 DB_LOG * db ; 279 LOG * ; 280 u_t32_t ags ; 282 i(( db = dbv -> lg_hd = NULL ) 285 = db -> gfo . imy ; 287 ags = * ag ; 288 i( -> db_log_autemove ) 289 `LF_SET ( DB_LOG_AUTOREMOVE ); 291 `LF_CLR ( DB_LOG_AUTOREMOVE ); 292 i( -> db_log_memy ) 293 `LF_SET ( DB_LOG_INMEMORY ); 295 `LF_CLR ( DB_LOG_INMEMORY ); 296 * ag = ags ; 297 } } 306 $__log_t_ags ( dbv , ags , ) 307 DB_ENV * dbv ; 308 u_t32_t ags ; 309 ; 311 DB_LOG * db ; 312 LOG * ; 314 i(( db = dbv -> lg_hd = NULL ) 317 = db -> gfo . imy ; 319 i( `LF_ISSET ( DB_LOG_AUTOREMOVE )) 320 -> db_log_autemove = ? 1 : 0; 321 i( `LF_ISSET ( DB_LOG_INMEMORY )) 322 -> db_log_memy = ? 1 : 0; 323 } } 332 $__log_check_sizes ( dbv , lg_max , lg_bsize ) 333 DB_ENV * dbv ; 334 u_t32_t lg_max ; 335 u_t32_t lg_bsize ; 337 LOG * ; 338 mem ; 340 i( `LOGGING_ON ( dbv )) { 341 = dbv -> lg_hd -> gfo . imy ; 342 mem = -> db_log_memy ; 343 lg_bsize = -> bufr_size ; 345 mem = ( `F_ISSET ( dbv , DB_ENV_LOG_INMEMORY ) != 0); 347 i( mem ) { 348 i( lg_bsize == 0) 349 lg_bsize = LG_BSIZE_INMEM ; 350 i( lg_max == 0) 351 lg_max = LG_MAX_INMEM ; 353 i( lg_bsize < lg_max ) { 354 `__db_rx ( dbv , 356 ( EINVAL ); 361 } } @../log/log_put.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/hmac.h " 14 ~"dbc/log.h " 15 ~"dbc/txn.h " 17 __log_y_cd __P (( DB_ENV *, DBT *, HDR *, u_t32_t )); 18 __log_fe __P (( DB_ENV *, cڡ DB_LSN *, *, size_t )); 19 __log_fl __P (( DB_LOG *, DB_LSN *, *, u_t32_t )); 20 __log_ush_comm __P (( DB_ENV *, cڡ DB_LSN *, u_t32_t )); 21 __log_wfh __P (( DB_LOG *, )); 22 __log_put_xt __P (( DB_ENV *, 23 DB_LSN *, cڡ DBT *, HDR *, DB_LSN *)); 24 __log_pu __P (( DB_LOG *, 25 DB_LSN *, cڡ DBT *, u_t32_t , HDR *)); 26 __log_wre __P (( DB_LOG *, *, u_t32_t )); 35 $__log_put_ ( dbv , lp , udbt , ags ) 36 DB_ENV * dbv ; 37 DB_LSN * lp ; 38 cڡ DBT * udbt ; 39 u_t32_t ags ; 41 DB_THREAD_INFO * ; 42 t ; 44 `PANIC_CHECK ( dbv ); 45 `ENV_REQUIRES_CONFIG ( dbv , 46 dbv -> lg_hd , "DB_ENV->log_put", DB_INIT_LOG ); 49 i(( t = `__db_fchk ( dbv , "DB_ENV->log_put", ags , 50 DB_LOG_CHKPNT | DB_LOG_COMMIT | 51 DB_FLUSH | DB_LOG_NOCOPY | DB_LOG_WRNOSYNC )) != 0) 52 ( t ); 55 i( `LF_ISSET ( DB_LOG_WRNOSYNC && LF_ISSET( DB_FLUSH )) 56 ( `__db_ ( dbv , "DB_ENV->log_put", 1)); 59 i( `IS_REP_CLIENT ( dbv )) { 60 `__db_rx ( dbv , 62 ( EINVAL ); 65 `ENV_ENTER ( dbv , ); 66 `REPLICATION_WRAP ( dbv , ( `__log_put (dbv, lp , udbt , ags )), t ); 67 `ENV_LEAVE ( dbv , ); 68 ( t ); 69 } } 78 $__log_put ( dbv , lp , udbt , ags ) 79 DB_ENV * dbv ; 80 DB_LSN * lp ; 81 cڡ DBT * udbt ; 82 u_t32_t ags ; 84 DB_CIPHER * db_ch ; 85 DBT * dbt , wfedbt , t ; 86 DB_LOG * db ; 87 DB_LSN l , d_l ; 88 DB_REP * db_p ; 89 HDR hdr ; 90 LOG * ; 91 REP * p ; 92 REP_BULK bulk ; 93 lock_hd , ed_ , t ; 94 u_t32_t lags ; 95 u_t8_t * key ; 97 db = dbv -> lg_hd ; 98 = db -> gfo . imy ; 99 db_ch = dbv -> yo_hd ; 100 db_p = dbv -> p_hd ; 101 i( db_p ! NULL ) 102 p = db_p -> gi ; 104 p = NULL ; 106 dbt = & t ; 107 t = * udbt ; 108 lock_hd = ed_ = 0; 109 `ZERO_LSN ( d_l ); 110 hdr . n = hdr. ev = 0; 112 #i! `defed ( DEBUG_ROP && !defed( DEBUG_WOP ) 117 i( `IS_REP_MASTER ( dbv && db_p -> nd = NULL ) { 118 `__db_rx ( dbv , "%s %s", 121 ( EINVAL ); 124 `DB_ASSERT ( dbv , ! `IS_REP_CLIENT (dbenv)); 136 i(! `LF_ISSET ( DB_LOG_NOCOPY || `IS_REP_MASTER ( dbv )) { 137 i( `CRYPTO_ON ( dbv )) 138 t . size + db_ch -> `adj_size ( udbt ->size); 139 i(( t = `__os_oc ( dbv , 1, t . size , &t. da )) != 0) 140 r ; 141 ed_ = 1; 142 `memy ( t . da , udbt ->da, udbt-> size ); 144 i(( t = `__log_y_cd ( dbv , dbt , & hdr , udbt -> size )) != 0) 145 r ; 146 i( `CRYPTO_ON ( dbv )) 147 key = db_ch -> mac_key ; 149 key = NULL ; 152 i( -> rsi . vsi ! DB_LOGVERSION ) 153 `__db_chksum ( NULL , dbt -> da , dbt-> size , key , hdr . chksum ); 155 `__db_chksum (& hdr , dbt -> da , dbt-> size , key , hdr. chksum ); 157 `LOG_SYSTEM_LOCK ( dbv ); 158 lock_hd = 1; 160 i(( t = `__log_put_xt ( dbv , & l , dbt , & hdr , & d_l )) != 0) 161 nic_check ; 170 lp -> fe = l .file; 171 lp -> offt = l .offset; 173 i( `IS_REP_MASTER ( dbv )) { 178 lags = `LF_ISSET ( DB_LOG_COMMIT | DB_LOG_CHKPNT ) ? 179 REPCTL_PERM : 0; 184 i( `IS_USING_LEASES ( dbv ) && 185 `FLD_ISSET ( lags , REPCTL_PERM )) 186 -> max_rm_l = l ; 187 `LOG_SYSTEM_UNLOCK ( dbv ); 188 lock_hd = 0; 189 i( `LF_ISSET ( DB_FLUSH )) 190 lags | REPCTL_FLUSH ; 202 i(! `IS_ZERO_LSN ( d_l )) { 203 `memt (& wfedbt , 0, (newfiledbt)); 204 wfedbt . da = & -> rsi . vsi ; 205 wfedbt . size = ( -> rsi . vsi ); 206 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 207 REP_NEWFILE , & d_l , & wfedbt , 0, 0); 213 t = 0; 214 i( `FLD_ISSET ( p -> cfig , REP_C_BULK )) { 219 i( db_p -> bulk = NULL ) 220 db_p -> bulk = `R_ADDR (& db -> gfo , 221 -> bulk_buf ); 222 `memt (& bulk , 0, (bulk)); 223 bulk . addr = db_p ->bulk; 224 bulk . of = & -> bulk_off ; 225 bulk . n = -> bulk_n ; 226 bulk . l =sn; 227 bulk . ty = REP_BULK_LOG ; 228 bulk . eid = DB_EID_BROADCAST ; 229 bulk . ag = & -> bulk_ags ; 230 t = `__p_bulk_mesge ( dbv , & bulk , NULL , 231 & l , udbt , lags ); 233 i(! `FLD_ISSET ( p -> cfig , REP_C_BULK ) || 234 t = DB_REP_BULKOVF ) { 244 t = `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 245 REP_LOG , & l , udbt , lags , 0); 258 i( t !0 && `FLD_ISSET ( lags , REPCTL_PERM )) { 259 `LF_SET ( DB_FLUSH ); 260 i( `IS_USING_LEASES ( dbv )) 261 () `__p_a_expe ( dbv , 0); 270 t = 0; 281 i( `LF_ISSET ( DB_FLUSH | DB_LOG_WRNOSYNC )) { 282 i(! lock_hd ) { 283 `LOG_SYSTEM_LOCK ( dbv ); 284 lock_hd = 1; 286 i(( t = `__log_ush_comm ( dbv , & l , ags )) != 0) 287 nic_check ; 294 i( `LF_ISSET ( DB_LOG_CHKPNT )) 295 -> . _wc_bys =p->. _wc_mbys = 0; 298 `STAT (++ -> . _cd ); 301 nic_check : 308 i( t !0 && `IS_REP_MASTER ( dbv )) 309 t = `__db_nic ( dbv ,et); 312 r : i( lock_hd ) 313 `LOG_SYSTEM_UNLOCK ( dbv ); 314 i( ed_ ) 315 `__os_ ( dbv , dbt -> da ); 321 i( t =0 && ! `IS_ZERO_LSN ( d_l && -> db_log_autemove ) 322 `__log_autemove ( dbv ); 324 ( t ); 325 } } 335 $__log_cut_l ( dbv , lp , mby , by ) 336 DB_ENV * dbv ; 337 DB_LSN * lp ; 338 u_t32_t * mby , * by ; 340 DB_LOG * db ; 341 LOG * ; 343 db = dbv -> lg_hd ; 344 = db -> gfo . imy ; 346 `LOG_SYSTEM_LOCK ( dbv ); 357 * lp = -> l ; 358 i( -> l . offt >p-> n ) 359 lp -> offt - -> n ; 368 i( mby ! NULL ) { 369 * mby = -> . _wc_mbys ; 370 * by = ( u_t32_t )( -> . _wc_bys +p-> b_off ); 373 `LOG_SYSTEM_UNLOCK ( dbv ); 376 } } 384 $__log_put_xt ( dbv , l , dbt , hdr , d_lp ) 385 DB_ENV * dbv ; 386 DB_LSN * l ; 387 cڡ DBT * dbt ; 388 HDR * hdr ; 389 DB_LSN * d_lp ; 391 DB_LOG * db ; 392 DB_LSN d_l ; 393 LOG * ; 394 adv_fe , wfe , t ; 396 db = dbv -> lg_hd ; 397 = db -> gfo . imy ; 407 d_l = -> l ; 408 wfe = 0; 409 adv_fe = 0; 414 i( -> rsi . vsi ! DB_LOGVERSION ) { 415 `__log_t_vsi ( dbv , DB_LOGVERSION ); 416 adv_fe = 1; 424 i( adv_fe || -> l . offt == 0 || 425 -> l . offt + hdr -> size + dbt ->siz>p-> log_size ) { 426 i( hdr -> size + ( LOGP + dbt ->siz> -> log_size ) { 427 `__db_rx ( dbv , 429 ( u_lg ) hdr -> size + ( LOGP + dbt ->size, 430 ( u_lg ) -> log_size ); 431 ( EINVAL ); 434 i(( t = `__log_wfe ( db , NULL , 0, 0)) != 0) 435 ( t ); 444 wfe = 1; 448 i( wfe ) 449 * d_lp = d_l ; 452 ( `__log_pu ( db , l , dbt , ->l. offt -p-> n , hdr )); 453 } } 460 $__log_ush_comm ( dbv , lp , ags ) 461 DB_ENV * dbv ; 462 cڡ DB_LSN * lp ; 463 u_t32_t ags ; 465 DB_LOG * db ; 466 DB_LSN ush_l ; 467 LOG * ; 468 t ; 470 db = dbv -> lg_hd ; 471 = db -> gfo . imy ; 472 ush_l = * lp ; 474 t = 0; 483 i( `LF_ISSET ( DB_FLUSH )) 484 t = `__log_ush_t ( db , & ush_l , 1); 485 i(! -> db_log_memy &&p-> b_off != 0) 486 i(( t = `__log_wre ( db , 487 db -> bu , ( u_t32_t ) -> b_off )) == 0) 488 -> b_off = 0; 496 i( t =0 || ! `LF_ISSET ( DB_LOG_COMMIT )) 497 ( t ); 499 i( ush_l . fe ! -> l .f|| flush_l. offt <p-> w_off ) 512 i( `__txn_f_abt ( dbv , 513 db -> bu + ush_l . offt - -> w_off ) == 0) 514 () `__log_ush_t ( db , & ush_l , 0); 516 ( t ); 517 } } 527 $__log_wfe ( db , lp , logfe , vsi ) 528 DB_LOG * db ; 529 DB_LSN * lp ; 530 u_t32_t logfe ; 531 u_t32_t vsi ; 533 DB_CIPHER * db_ch ; 534 DB_ENV * dbv ; 535 DB_LSN l ; 536 DBT t ; 537 HDR hdr ; 538 LOG * ; 539 ed_ , t ; 540 u_t32_t ϡoff ; 541 size_t tsize ; 542 u_t8_t * tmp ; 544 dbv = db ->dbenv; 545 = db -> gfo . imy ; 551 i( logfe =0 && -> l . offt != 0) { 565 i(( t = `__log_ush_t ( db , NULL , 0)) != 0) 566 ( t ); 572 ϡoff = -> l . offt ; 575 ++ -> l . fe ; 576 -> l . offt = 0; 579 -> w_off = 0; 581 ϡoff = 0; 588 i( logfe != 0) { 589 -> l . fe = logfe ; 590 -> l . offt = 0; 591 -> w_off = 0; 592 i( -> db_log_memy ) { 593 l = ->lsn; 594 () `__log_zo ( dbv , & l ); 596 -> s_l =p-> l ; 597 i(( t = `__log_wfh ( db , 1)) != 0) 598 ( t ); 602 `DB_ASSERT ( dbv , -> db_log_memy ||p-> b_off == 0); 603 i( -> db_log_memy && 604 ( t = `__log_mem_wfe ( db , -> l . fe )) != 0) 605 ( t ); 612 `memt (& t , 0, (t)); 613 `memt (& hdr , 0, ( HDR )); 615 ed_ = 0; 616 tsize = ( LOGP ); 617 db_ch = dbv -> yo_hd ; 618 i( `CRYPTO_ON ( dbv )) 619 tsize + db_ch -> `adj_size (tsize); 620 i(( t = `__os_oc ( dbv , 1, tsize , & tmp )) != 0) 621 ( t ); 622 ed_ = 1; 627 i( vsi != 0) { 628 `__log_t_vsi ( dbv , vsi ); 629 i(( t = `__v__c ( dbv , vsi )) != 0) 630 r ; 632 -> rsi . log_size =p->log_siz-> log_nsize ; 633 `memy ( tmp , & -> rsi , ( LOGP )); 634 `DB_SET_DBT ( t , tmp , tsize ); 636 i(( t = 637 `__log_y_cd ( dbv , & t , & hdr , ( u_t32_t ) tsize )) != 0) 638 r ; 639 i( -> rsi . vsi ! DB_LOGVERSION ) 640 `__db_chksum ( NULL , t . da ,. size , 641 ( `CRYPTO_ON ( dbv )? db_ch -> mac_key : NULL , hdr . chksum ); 643 `__db_chksum (& hdr , t . da ,. size , 644 ( `CRYPTO_ON ( dbv )? db_ch -> mac_key : NULL , hdr . chksum ); 646 i(( t = `__log_pu ( db , & l , 647 & t , ϡoff =0 ? 0 :aof- -> n , & hdr )) != 0) 648 r ; 651 i( lp ! NULL ) 652 * lp = -> l ; 654 r : i( ed_ ) 655 `__os_ ( dbv , tmp ); 656 ( t ); 657 } } 664 $__log_pu ( db , l , dbt , ev , h ) 665 DB_LOG * db ; 666 DB_LSN * l ; 667 cڡ DBT * dbt ; 668 u_t32_t ev ; 669 HDR * h ; 671 DB_CIPHER * db_ch ; 672 DB_ENV * dbv ; 673 DB_LSN f_l ; 674 LOG * ; 675 HDR tmp , * hdr ; 676 t , t_t ; 677 size_t b_off , ; 678 u_t32_t w_off ; 680 dbv = db ->dbenv; 681 = db -> gfo . imy ; 686 db_ch = dbv -> yo_hd ; 687 i( h = NULL ) { 688 hdr = & tmp ; 689 `memt ( hdr , 0, ( HDR )); 690 i( `CRYPTO_ON ( dbv )) 691 hdr -> size = HDR_CRYPTO_SZ ; 693 hdr -> size = HDR_NORMAL_SZ ; 695 hdr = h ; 698 b_off = ->b_off; 699 w_off = ->w_off; 700 f_l = ->f_lsn; 707 hdr -> ev =rev; 708 hdr -> n = ( u_t32_t )hdr-> size + dbt ->size; 718 i( hdr -> chksum [0] == 0) 719 i( -> rsi . vsi ! DB_LOGVERSION ) 720 `__db_chksum ( NULL , dbt -> da , dbt-> size , 721 ( `CRYPTO_ON ( dbv )? db_ch -> mac_key : NULL , 722 hdr -> chksum ); 724 `__db_chksum ( hdr , dbt -> da , dbt-> size , 725 ( `CRYPTO_ON ( dbv )? db_ch -> mac_key : NULL , 726 hdr -> chksum ); 727 i( -> rsi . vsi = DB_LOGVERSION ) { 732 `LOG_HDR_SUM ( `CRYPTO_ON ( dbv ), hdr , hdr-> chksum ); 735 i( -> db_log_memy && ( t = `__log_mem_chka ( db , 736 ( u_t32_t ) hdr -> size + dbt ->size)) != 0) 737 r ; 743 * l = ->lsn; 745 i(( t = `__log_fl ( db , l , hdr , ( u_t32_t )hdr-> size )) != 0) 746 r ; 748 i(( t = `__log_fl ( db , l , dbt -> da , dbt-> size )) != 0) 749 r ; 751 -> n = ( u_t32_t )( hdr -> size + dbt ->size); 752 -> l . offt +( u_t32_t )( hdr -> size + dbt ->size); 754 r : 760 i( w_off + -> bufr_size <p->w_off) { 761 `DB_ASSERT ( dbv , ! -> db_log_memy ); 762 i(( t_t = `__os_ek ( dbv , db -> lfhp , 0, 0, w_off )) != 0 || 763 ( t_t = `__os_ad ( dbv , db -> lfhp , db-> bu , 764 b_off , & )) != 0) 765 ( `__db_nic ( dbv , t_t )); 766 i( ! b_off ) { 767 `__db_rx ( dbv , "Shortead whileestoringog"); 768 ( `__db_nic ( dbv , EIO )); 773 -> w_off = w_off; 774 -> b_off = b_off; 775 -> f_l = f_lsn; 777 ( t ); 778 } } 787 $__log_ush_ ( dbv , l ) 788 DB_ENV * dbv ; 789 cڡ DB_LSN * l ; 791 DB_THREAD_INFO * ; 792 t ; 794 `PANIC_CHECK ( dbv ); 795 `ENV_REQUIRES_CONFIG ( dbv , 796 dbv -> lg_hd , "DB_ENV->log_ush", DB_INIT_LOG ); 798 `ENV_ENTER ( dbv , ); 799 `REPLICATION_WRAP ( dbv , ( `__log_ush (dbv, l )), t ); 800 `ENV_LEAVE ( dbv , ); 801 ( t ); 802 } } 812 #ALREADY_FLUSHED ( , lp ) \ 813 ((( )-> s_l . fe > ( lp )->file) || \ 814 (( )-> s_l . fe =( lp )->file && \ 815 ( )-> s_l . offt > ( lp )->offt)) ) 824 $__log_ush ( dbv , l ) 825 DB_ENV * dbv ; 826 cڡ DB_LSN * l ; 828 DB_LOG * db ; 829 LOG * ; 830 t ; 832 db = dbv -> lg_hd ; 833 = db -> gfo . imy ; 834 i( l ! NULL && `ALREADY_FLUSHED ( ,sn)) 836 `LOG_SYSTEM_LOCK ( dbv ); 837 t = `__log_ush_t ( db , l , 1); 838 `LOG_SYSTEM_UNLOCK ( dbv ); 839 ( t ); 840 } } 850 $__log_ush_t ( db , lp , a ) 851 DB_LOG * db ; 852 cڡ DB_LSN * lp ; 853 a ; 855 __db_comm * comm ; 856 DB_ENV * dbv ; 857 DB_LSN ush_l , f_l ; 858 LOG * ; 859 size_t b_off ; 860 u_t32_t ncomm , w_off ; 861 do_ush , f , t ; 863 dbv = db ->dbenv; 864 = db -> gfo . imy ; 865 ncomm = 0; 866 t = 0; 868 i( -> db_log_memy ) { 869 -> s_l =p-> l ; 870 `STAT (++ -> . _scou ); 879 i( lp = NULL ) { 880 ush_l . fe = -> l .file; 881 ush_l . offt = -> l .off-p-> n ; 882 } i( lp -> fe > -> l .file || 883 ( lp -> fe = -> l .file && 884 lp -> offt > -> l .off-p-> n )) { 885 `__db_rx ( dbv , 887 ( u_lg ) lp -> fe , (u_lgp-> offt , 888 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 889 `__db_rx ( dbv , "%s %s %s", 893 ( `__db_nic ( dbv , DB_RUNRECOVERY )); 895 i( `ALREADY_FLUSHED ( , lp )) 897 ush_l = * lp ; 904 i( a && -> _ush != 0) { 905 i(( comm = `SH_TAILQ_FIRST ( 906 & -> _comms , __db_comm )= NULL ) { 907 i(( t = `__v_loc (& db -> gfo , 908 ( __db_comm ), & comm )) != 0) 909 ush ; 910 `memt ( comm , 0, (*commit)); 911 i(( t = `__mux_loc ( dbv , MTX_TXN_COMMIT , 912 DB_MUTEX_SELF_BLOCK , & comm -> mtx_txnwa )) != 0) { 913 `__v_loc_ (& db -> gfo , comm ); 914 ( t ); 916 `MUTEX_LOCK ( dbv , comm -> mtx_txnwa ); 918 `SH_TAILQ_REMOVE ( 919 & -> _comms , comm , lks , __db_comm ); 921 -> ncomm ++; 927 i( `LOG_COMPARE (& -> t_l , & ush_l ) < 0) 928 -> t_l = ush_l ; 930 comm -> l = ush_l ; 931 `SH_TAILQ_INSERT_HEAD ( 932 & -> comms , comm , lks , __db_comm ); 933 `LOG_SYSTEM_UNLOCK ( dbv ); 935 `MUTEX_LOCK ( dbv , comm -> mtx_txnwa ); 936 `LOG_SYSTEM_LOCK ( dbv ); 938 -> ncomm --; 944 do_ush = `F_ISSET ( comm , DB_COMMIT_FLUSH ); 945 `F_CLR ( comm , DB_COMMIT_FLUSH ); 946 `SH_TAILQ_INSERT_HEAD ( 947 & -> _comms , comm , lks , __db_comm ); 948 i( do_ush ) { 949 -> _ush --; 950 ush_l = -> t_l ; 959 ush : `MUTEX_LOCK ( dbv , -> mtx_ush ); 967 i( ush_l . fe < -> s_l .file || 968 ( ush_l . fe = -> s_l .file && 969 ush_l . offt < -> s_l .offset)) { 970 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 971 de ; 983 i( -> b_off !0 && `LOG_COMPARE (& ush_l , &-> f_l ) >= 0) { 984 i(( t = `__log_wre ( db , 985 db -> bu , ( u_t32_t ) -> b_off )) != 0) { 986 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 987 de ; 990 -> b_off = 0; 991 } i( db -> lfhp = NULL || db-> lame ! -> l . fe ) 992 i(( t = `__log_wfh ( db , 0)) != 0) { 993 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 994 de ; 1002 b_off = ->b_off; 1003 w_off = ->w_off; 1004 f_l = ->f_lsn; 1005 -> _ush ++; 1006 i( a ) 1007 `LOG_SYSTEM_UNLOCK ( dbv ); 1010 i(( t = `__os_fsync ( dbv , db -> lfhp )) != 0) { 1011 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 1012 i( a ) 1013 `LOG_SYSTEM_LOCK ( dbv ); 1014 t = `__db_nic ( dbv ,et); 1015 ( t ); 1026 -> s_l = f_l ; 1027 i( b_off == 0) 1028 -> s_l . offt = w_off ; 1030 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 1031 i( a ) 1032 `LOG_SYSTEM_LOCK ( dbv ); 1034 -> _ush --; 1035 `STAT (++ -> . _scou ); 1041 ncomm = 1; 1042 de : 1043 i( -> ncomm != 0) { 1044 f = 1; 1045 `SH_TAILQ_FOREACH ( comm , & -> comms , lks , __db_comm ) 1046 i( `LOG_COMPARE (& -> s_l , & comm -> l ) > 0) { 1047 `MUTEX_UNLOCK ( dbv , comm -> mtx_txnwa ); 1048 `SH_TAILQ_REMOVE ( 1049 & -> comms , comm , lks , __db_comm ); 1050 ncomm ++; 1051 } i( f == 1) { 1052 `F_SET ( comm , DB_COMMIT_FLUSH ); 1053 `MUTEX_UNLOCK ( dbv , comm -> mtx_txnwa ); 1054 `SH_TAILQ_REMOVE ( 1055 & -> comms , comm , lks , __db_comm ); 1062 -> _ush ++; 1063 f = 0; 1066 #ifde HAVE_STATISTICS 1067 i( -> . _maxcommrush < ncomm ) 1068 -> . _maxcommrush = ncomm ; 1069 i( -> . _mcommrush > ncomm || 1070 -> . _mcommrush == 0) 1071 -> . _mcommrush = ncomm ; 1074 ( t ); 1075 } } 1082 $__log_fl ( db , l , addr , n ) 1083 DB_LOG * db ; 1084 DB_LSN * l ; 1085 * addr ; 1086 u_t32_t n ; 1088 LOG * ; 1089 u_t32_t bsize , ec ; 1090 size_t nw , ma ; 1091 t ; 1093 = db -> gfo . imy ; 1094 bsize = -> bufr_size ; 1096 i( -> db_log_memy ) { 1097 `__log_mem_cy ( db , -> b_off , addr , n ); 1098 -> b_off = (->b_of+ n %p-> bufr_size ; 1102 n > 0) { 1109 i( -> b_off == 0) 1110 -> f_l = * l ; 1116 i( -> b_off =0 && n > bsize ) { 1117 ec = n / bsize ; 1118 i(( t = `__log_wre ( db , addr , ec * bsize )) != 0) 1119 ( t ); 1120 addr = ( u_t8_t *dd+ ec * bsize ; 1121 n - ec * bsize ; 1122 `STAT (++ -> . _wcou_fl ); 1127 ma = bsize - -> b_off ; 1128 nw = ma > n ?en :emain; 1129 `memy ( db -> bu + -> b_off , addr , nw ); 1130 addr = ( u_t8_t *dd+ nw ; 1131 n -( u_t32_t ) nw ; 1132 -> b_off + nw ; 1135 i( -> b_off = bsize ) { 1136 i(( t = `__log_wre ( db , db-> bu , bsize )) != 0) 1137 ( t ); 1138 -> b_off = 0; 1139 `STAT (++ -> . _wcou_fl ); 1143 } } 1150 $__log_wre ( db , addr , n ) 1151 DB_LOG * db ; 1152 * addr ; 1153 u_t32_t n ; 1155 DB_ENV * dbv ; 1156 LOG * ; 1157 size_t nw ; 1158 t ; 1160 dbv = db ->dbenv; 1161 = db -> gfo . imy ; 1163 `DB_ASSERT ( dbv , ! -> db_log_memy ); 1171 i( db -> lfhp = NULL || db-> lame ! -> l . fe || 1172 db -> lf_timeamp ! -> timeamp ) 1173 i(( t = `__log_wfh ( db , -> w_off == 0)) != 0) 1174 ( t ); 1185 #ifde HAVE_FILESYSTEM_NOTZERO 1186 i( -> w_off =0 && ! `__os_fs_nzo ()) 1188 i( -> w_off == 0) 1190 () `__db_fe_exnd ( dbv , db -> lfhp , -> log_size ); 1196 i(( t = `__os_io ( dbv , DB_IO_WRITE , 1197 db -> lfhp , 0, 0, -> w_off , n , addr , & nw )) != 0) 1198 ( t ); 1201 -> w_off + n ; 1204 i(( -> . _wc_bys + n > MEGABYTE ) { 1205 -> . _wc_bys - MEGABYTE ; 1206 ++ -> . _wc_mbys ; 1208 #ifde HAVE_STATISTICS 1209 i(( -> . _w_bys + n > MEGABYTE ) { 1210 -> . _w_bys - MEGABYTE ; 1211 ++ -> . _w_mbys ; 1213 ++ -> . _wcou ; 1217 } } 1226 $__log_fe_ ( dbv , l , m , n ) 1227 DB_ENV * dbv ; 1228 cڡ DB_LSN * l ; 1229 * m ; 1230 size_t n ; 1232 DB_THREAD_INFO * ; 1233 t ; 1235 `PANIC_CHECK ( dbv ); 1236 `ENV_REQUIRES_CONFIG ( dbv , 1237 dbv -> lg_hd , "DB_ENV->log_fe", DB_INIT_LOG ); 1239 i( `F_ISSET ( dbv , DB_ENV_LOG_INMEMORY )) { 1240 `__db_rx ( dbv , 1242 ( EINVAL ); 1245 `ENV_ENTER ( dbv , ); 1246 `REPLICATION_WRAP ( dbv , ( `__log_fe (dbv, l , m , n )), t ); 1247 `ENV_LEAVE ( dbv , ); 1248 ( t ); 1249 } } 1256 $__log_fe ( dbv , l , m , n ) 1257 DB_ENV * dbv ; 1258 cڡ DB_LSN * l ; 1259 * m ; 1260 size_t n ; 1262 DB_LOG * db ; 1263 t ; 1264 * me ; 1266 db = dbv -> lg_hd ; 1267 `LOG_SYSTEM_LOCK ( dbv ); 1268 t = `__log_me ( db , l -> fe , & me , NULL , 0); 1269 `LOG_SYSTEM_UNLOCK ( dbv ); 1270 i( t != 0) 1271 ( t ); 1274 i( n < ` ( me ) + 1) { 1275 * m = '\0'; 1276 `__db_rx ( dbv , "DB_ENV->log_file:ame buffer isoo short"); 1277 ( EINVAL ); 1279 () `ry ( m , me ); 1280 `__os_ ( dbv , me ); 1283 } } 1290 $__log_wfh ( db , ) 1291 DB_LOG * db ; 1292 ; 1294 DB_ENV * dbv ; 1295 LOG * ; 1296 u_t32_t ags ; 1297 t ; 1298 logfe_vidy us ; 1300 dbv = db ->dbenv; 1301 = db -> gfo . imy ; 1304 i( db -> lfhp ! NULL ) { 1305 () `__os_ohd ( dbv , db -> lfhp ); 1306 db -> lfhp = NULL ; 1309 ags = DB_OSO_SEQ | 1310 ( ? DB_OSO_CREATE : 0) | 1311 ( `F_ISSET ( dbv , DB_ENV_DIRECT_LOG ? DB_OSO_DIRECT : 0) | 1312 ( `F_ISSET ( dbv , DB_ENV_DSYNC_LOG ? DB_OSO_DSYNC : 0); 1315 db -> lame = -> l . fe ; 1316 i(( t = `__log_vid ( db , db-> lame , 0, &db-> lfhp , 1317 ags , & us , NULL )) != 0) 1318 `__db_r ( dbv , t , 1319 "DB_ENV->log_wfh: %lu", ( u_lg ) -> l . fe ); 1320 i( us ! DB_LV_NORMAL && stu! DB_LV_INCOMPLETE && 1321 us ! DB_LV_OLD_READABLE ) 1322 t = DB_NOTFOUND ; 1324 ( t ); 1325 } } 1335 $__log_me ( db , fumb , m , fh , ags ) 1336 DB_LOG * db ; 1337 u_t32_t fumb , ags ; 1338 ** m ; 1339 DB_FH ** fh ; 1341 DB_ENV * dbv ; 1342 LOG * ; 1343 mode , t ; 1344 * ame ; 1345 d [( LFPREFIX + 5 + 20], w [(LFPREFIX) + 10 + 20]; 1347 dbv = db ->dbenv; 1348 = db -> gfo . imy ; 1350 `DB_ASSERT ( dbv , ! -> db_log_memy ); 1370 () `tf ( w , ew), LFNAME , fumb ); 1371 i(( t = `__db_ame ( dbv , 1372 DB_APP_LOG , w , 0, NULL , m )!0 || fh == NULL) 1373 ( t ); 1376 i( -> femode == 0) 1377 mode = dbv -> db_mode ; 1379 `LF_SET ( DB_OSO_ABSMODE ); 1380 mode = -> femode ; 1384 db -> lf_timeamp = -> timeamp ; 1385 i(( t = `__os_ݒ ( dbv , * m , 0, ags , mode , fh )) == 0) 1393 i( t ! ENOENT ) { 1394 `__db_r ( dbv , t , "%s:og fuėdab", * m ); 1395 ( `__db_nic ( dbv , t )); 1402 i(! `LF_ISSET ( DB_OSO_RDONLY )) { 1403 `__db_r ( dbv , t , "%s:og fݒ faed", * m ); 1404 ( `__db_nic ( dbv , t )); 1408 () `tf ( d , (d), LFNAME_V1 , fumb ); 1409 i(( t = `__db_ame ( dbv , DB_APP_LOG , d , 0, NULL , & ame )) != 0) 1410 r ; 1417 i(( t = `__os_ݒ ( dbv , ame , 0, ags , mode , fh )) == 0) { 1418 `__os_ ( dbv , * m ); 1419 * m = ame ; 1431 r : `__os_ ( dbv , ame ); 1432 ( t ); 1433 } } 1449 $__log_p_put ( dbv , lp , c , ags ) 1450 DB_ENV * dbv ; 1451 DB_LSN * lp ; 1452 cڡ DBT * c ; 1453 u_t32_t ags ; 1455 DB_CIPHER * db_ch ; 1456 DB_LOG * db ; 1457 HDR hdr ; 1458 DBT * dbt , t ; 1459 LOG * ; 1460 ed_ , t ; 1462 db = dbv -> lg_hd ; 1463 = db -> gfo . imy ; 1465 `LOG_SYSTEM_LOCK ( dbv ); 1466 `memt (& hdr , 0, ( HDR )); 1467 t = * c ; 1468 dbt = & t ; 1469 ed_ = 0; 1470 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 1471 i( `CRYPTO_ON ( dbv )) 1472 t . size + db_ch -> `adj_size ( c ->size); 1473 i(( t = `__os_oc ( dbv , 1, t . size , &t. da )) != 0) 1474 r ; 1475 ed_ = 1; 1476 `memy ( t . da , c ->da,ec-> size ); 1478 i(( t = `__log_y_cd ( dbv , dbt , & hdr , c -> size )) != 0) 1479 r ; 1480 `__db_chksum (& hdr , t . da ,. size , 1481 ( `CRYPTO_ON ( dbv )? db_ch -> mac_key : NULL , hdr . chksum ); 1483 `DB_ASSERT ( dbv , `LOG_COMPARE ( lp , & -> l ) == 0); 1484 t = `__log_pu ( db , lp , dbt , -> l . offt -p-> n , & hdr ); 1485 r : 1489 -> ady_l =p-> l ; 1491 i( `LF_ISSET ( DB_LOG_CHKPNT )) 1492 -> . _wc_bys =p->. _wc_mbys = 0; 1495 `STAT (++ -> . _cd ); 1496 `LOG_SYSTEM_UNLOCK ( dbv ); 1497 i( ed_ ) 1498 `__os_ ( dbv , t . da ); 1499 ( t ); 1500 } } 1503 $__log_y_cd ( dbv , dbt , hdr , ig ) 1504 DB_ENV * dbv ; 1505 DBT * dbt ; 1506 HDR * hdr ; 1507 u_t32_t ig ; 1509 DB_CIPHER * db_ch ; 1510 t ; 1512 i( `CRYPTO_ON ( dbv )) { 1513 db_ch = ( DB_CIPHER *) dbv -> yo_hd ; 1514 hdr -> size = HDR_CRYPTO_SZ ; 1515 hdr -> ig_size = ig ; 1516 i(( t = db_ch -> `y ( dbv , db_ch-> da , 1517 hdr -> iv , dbt -> da , dbt-> size )) != 0) 1518 ( t ); 1520 hdr -> size = HDR_NORMAL_SZ ; 1523 } } @../log/log_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 16 #ifde HAVE_STATISTICS 17 __log_t_l __P (( DB_ENV *, u_t32_t )); 18 __log_t_s __P (( DB_ENV *, u_t32_t )); 19 __log_ __P (( DB_ENV *, DB_LOG_STAT **, u_t32_t )); 28 $__log__ ( dbv , p , ags ) 29 DB_ENV * dbv ; 30 DB_LOG_STAT ** p ; 31 u_t32_t ags ; 33 DB_THREAD_INFO * ; 34 t ; 36 `PANIC_CHECK ( dbv ); 37 `ENV_REQUIRES_CONFIG ( dbv , 38 dbv -> lg_hd , "DB_ENV->log_", DB_INIT_LOG ); 40 i(( t = `__db_fchk ( dbv , 41 "DB_ENV->log_", ags , DB_STAT_CLEAR )) != 0) 42 ( t ); 44 `ENV_ENTER ( dbv , ); 45 `REPLICATION_WRAP ( dbv , ( `__log_ (dbv, p , ags )), t ); 46 `ENV_LEAVE ( dbv , ); 47 ( t ); 48 } } 55 $__log_ ( dbv , p , ags ) 56 DB_ENV * dbv ; 57 DB_LOG_STAT ** p ; 58 u_t32_t ags ; 60 DB_LOG * db ; 61 DB_LOG_STAT * s ; 62 LOG * ; 63 t ; 65 * p = NULL ; 67 db = dbv -> lg_hd ; 68 = db -> gfo . imy ; 70 i(( t = `__os_umloc ( dbv , ( DB_LOG_STAT ), & s )) != 0) 71 ( t ); 74 `LOG_SYSTEM_LOCK ( dbv ); 75 * s = -> ; 76 i( `LF_ISSET ( DB_STAT_CLEAR )) 77 `memt (& -> , 0, (lp->stat)); 79 s -> _magic = -> rsi . magic ; 80 s -> _vsi = -> rsi . vsi ; 81 s -> _mode = -> femode ; 82 s -> _lg_bsize = -> bufr_size ; 83 s -> _lg_size = -> log_nsize ; 85 `__mux_t_wa_fo ( dbv , -> mtx_gi , 86 & s -> _gi_wa , &s-> _gi_nowa ); 87 i( `LF_ISSET ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ) == DB_STAT_CLEAR) 88 `__mux_r ( dbv , -> mtx_gi ); 89 s -> _gsize = db -> gfo . -> size ; 91 s -> _cur_fe = -> l . fe ; 92 s -> _cur_offt = -> l . offt ; 93 s -> _disk_fe = -> s_l . fe ; 94 s -> _disk_offt = -> s_l . offt ; 96 `LOG_SYSTEM_UNLOCK ( dbv ); 98 * p = s ; 100 } } 109 $__log__t_ ( dbv , ags ) 110 DB_ENV * dbv ; 111 u_t32_t ags ; 113 DB_THREAD_INFO * ; 114 t ; 116 `PANIC_CHECK ( dbv ); 117 `ENV_REQUIRES_CONFIG ( dbv , 118 dbv -> lg_hd , "DB_ENV->log__t", DB_INIT_LOG ); 120 i(( t = `__db_fchk ( dbv , "DB_ENV->log_stat_print", 121 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 122 ( t ); 124 `ENV_ENTER ( dbv , ); 125 `REPLICATION_WRAP ( dbv , ( `__log__t (dbv, ags )), t ); 126 `ENV_LEAVE ( dbv , ); 127 ( t ); 128 } } 137 $__log__t ( dbv , ags ) 138 DB_ENV * dbv ; 139 u_t32_t ags ; 141 u_t32_t ig_ags ; 142 t ; 144 ig_ags = ags ; 145 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 146 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 147 t = `__log_t_s ( dbv , ig_ags ); 148 i( ags =0 || t != 0) 149 ( t ); 152 i( `LF_ISSET ( DB_STAT_ALL ) && 153 ( t = `__log_t_l ( dbv , ig_ags )) != 0) 154 ( t ); 157 } } 164 $__log_t_s ( dbv , ags ) 165 DB_ENV * dbv ; 166 u_t32_t ags ; 168 DB_LOG_STAT * ; 169 t ; 171 i(( t = `__log_ ( dbv , & , ags )) != 0) 172 ( t ); 174 i( `LF_ISSET ( DB_STAT_ALL )) 175 `__db_msg ( dbv , "Defaultoggingegion information:"); 176 `STAT_HEX ("Log maginumb", -> _magic ); 177 `STAT_ULONG ("Log vsiڂumb", -> _vsi ); 178 `__db_dlbys ( dbv , "Logecord cache size", 179 ( u_lg )0, (u_lg)0, (u_lg) -> _lg_bsize ); 180 `__db_msg ( dbv , "%#o\tLog fmode", -> _mode ); 181 i( -> _lg_size % MEGABYTE == 0) 182 `__db_msg ( dbv , "%luMb\tCurrentog file size", 183 ( u_lg ) -> _lg_size / MEGABYTE ); 184 i( -> _lg_size % 1024 == 0) 185 `__db_msg ( dbv , "%luKb\tCurrentog file size", 186 ( u_lg ) -> _lg_size / 1024); 188 `__db_msg ( dbv , "%lu\tCurrentog file size", 189 ( u_lg ) -> _lg_size ); 190 `__db_dl ( dbv , "Recdd ithlog", ( u_lg ) -> _cd ); 191 `__db_dlbys ( dbv , "Log bytes written", 192 ( u_lg )0, (u_lg) -> _w_mbys , (u_lg)-> _w_bys ); 193 `__db_dlbys ( dbv , "Log bytes written sinceast checkpoint", 194 ( u_lg )0, (u_lg) -> _wc_mbys , (u_lg)-> _wc_bys ); 195 `__db_dl ( dbv , "Tٮog fI/O wres", ( u_lg ) -> _wcou ); 196 `__db_dl ( dbv , "Totalog file I/O writes dueo overflow", 197 ( u_lg ) -> _wcou_fl ); 198 `__db_dl ( dbv , "Tٮog fushes", ( u_lg ) -> _scou ); 199 `__db_dl ( dbv , "Tٮog fI/Ods", ( u_lg ) -> _rcou ); 200 `STAT_ULONG ("Culog fnumb", -> _cur_fe ); 201 `STAT_ULONG ("Culog fofft", -> _cur_offt ); 202 `STAT_ULONG ("On-diskog fnumb", -> _disk_fe ); 203 `STAT_ULONG ("On-diskog fofft", -> _disk_offt ); 205 `__db_dl ( dbv , 206 "Maximum commog flush", ( u_lg ) -> _maxcommrush ); 207 `__db_dl ( dbv , 208 "Mimum commog flush", ( u_lg ) -> _mcommrush ); 210 `__db_dlbys ( dbv , "Logegion size", 211 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 212 `__db_dl_p ( dbv , 214 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 215 -> _gi_wa + sp-> _gi_nowa ), NULL ); 217 `__os_u ( dbv , ); 220 } } 227 $__log_t_l ( dbv , ags ) 228 DB_ENV * dbv ; 229 u_t32_t ags ; 231 cڡ FN [] = { 232 { DBLOG_RECOVER , "DBLOG_RECOVER" }, 233 { DBLOG_FORCE_OPEN , "DBLOG_FORCE_OPEN" }, 234 { 0, NULL } 236 DB_LOG * db ; 237 LOG * ; 239 db = dbv -> lg_hd ; 240 = ( LOG *) db -> gfo . imy ; 242 `LOG_SYSTEM_LOCK ( dbv ); 244 `__db_t_gfo ( dbv , & db -> gfo , "Log", ags ); 246 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 247 `__db_msg ( dbv , "DB_LOG handle information:"); 248 `__mux_t_debug_sg ( 249 dbv , "DB_LOG hd mux", db -> mtx_dbg , ags ); 250 `STAT_ULONG ("Log fme", db -> lame ); 251 `__db_t_fh ( dbv , "Log fhd", db -> lfhp , ags ); 252 `__db_ags ( dbv , NULL , db -> ags , , NULL, "\tFlags"); 254 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 255 `__db_msg ( dbv , "LOG handle information:"); 256 `__mux_t_debug_sg ( 257 dbv , "LOGegi mux", -> mtx_gi , ags ); 258 `__mux_t_debug_sg ( 259 dbv , "Fmli mux", -> mtx_fi , ags ); 261 `STAT_HEX ("rsi.magic", -> rsi . magic ); 262 `STAT_ULONG ("rsi.vsi", -> rsi . vsi ); 263 `__db_dlbys ( dbv , 264 "rsi.log_size", ( u_lg )0, (u_lg)0, -> rsi . log_size ); 265 `STAT_FMT ("log frmissiڠmode", "%#lo", u_lg , -> femode ); 266 `STAT_LSN ("cufoffLSN", & -> l ); 267 `STAT_LSN ("f bufby LSN", & -> l ); 268 `STAT_ULONG ("cubufofft", -> b_off ); 269 `STAT_ULONG ("cufwrofft", -> w_off ); 270 `STAT_ULONG ("ngth oϡecd", -> n ); 271 `STAT_LONG ("log flush iogss", -> _ush ); 272 `__mux_t_debug_sg ( 273 dbv , "Log flush mux", -> mtx_ush , ags ); 275 `STAT_LSN ("ϡ synLSN", & -> s_l ); 282 `STAT_LSN ("ched checkpoLSN", & -> ched_ckp_l ); 284 `__db_dlbys ( dbv , 285 "log bufsize", ( u_lg )0, (u_lg)0, -> bufr_size ); 286 `__db_dlbys ( dbv , 287 "log fsize", ( u_lg )0, (u_lg)0, -> log_size ); 288 `__db_dlbys ( dbv , 289 "xlog fsize", ( u_lg )0, (u_lg)0, -> log_nsize ); 291 `STAT_ULONG ("iڠwagcomm", -> ncomm ); 292 `STAT_LSN ("LSN of comm", & -> t_l ); 294 `LOG_SYSTEM_UNLOCK ( dbv ); 297 } } 302 $__log__ ( dbv , p , ags ) 303 DB_ENV * dbv ; 304 DB_LOG_STAT ** p ; 305 u_t32_t ags ; 307 `COMPQUIET ( p , NULL ); 308 `COMPQUIET ( ags , 0); 310 ( `__db__n_but ( dbv )); 311 } } 314 $__log__t_ ( dbv , ags ) 315 DB_ENV * dbv ; 316 u_t32_t ags ; 318 `COMPQUIET ( ags , 0); 320 ( `__db__n_but ( dbv )); 321 } } @../mp/mp_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 13 ~"dbc/txn.h " 15 __memp_bad_bufr __P (( DB_ENV *, DB_MPOOL_HASH *)); 25 $__memp_loc ( dbmp , f , m , n , off , ) 26 DB_MPOOL * dbmp ; 27 REGINFO * f ; 28 MPOOLFILE * m ; 29 size_t n ; 30 roff_t * off ; 31 * ; 33 BH * bhp , * de_bhp , * tbhp ; 34 BH_FROZEN_PAGE * oz_bhp ; 35 DB_ENV * dbv ; 36 DB_LSN vl ; 37 DB_MPOOL_HASH * dbht , * hp , * hp_d , * hp_tmp ; 38 MPOOL * c_mp ; 39 MPOOLFILE * bh_m ; 40 size_t d_a ; 41 u_t32_t bucks , bufrs , high_iܙy , iܙy ; 42 u_t32_t put_cou , tٮ_bucks ; 43 aggssive , loc_ze , giveup , g_de , t ; 44 u_t8_t * dp ; 45 * p ; 47 dbv = dbmp ->dbenv; 48 c_mp = f -> imy ; 49 dbht = `R_ADDR ( f , c_mp -> hb ); 50 hp_d = & dbht [ c_mp -> hb_bucks ]; 52 bucks = bufrs = put_cou = tٮ_bucks = 0; 53 aggssive = loc_ze = giveup = g_de = 0; 54 hp_tmp = NULL ; 56 `STAT ( c_mp -> . _loc ++); 65 i( m ! NULL ) { 66 n = `SSZA ( BH , buf + m -> . _gesize ; 68 `MVCC_BHSIZE ( m , n ); 71 `MPOOL_REGION_LOCK ( dbv , f ); 77 high_iܙy = c_mp -> u_cou - c_mp-> . _ges / 10; 88 loc : i(( t = `__v_loc ( f , n , & p )) == 0) { 89 i( m ! NULL ) 90 c_mp -> . _ges ++; 91 `MPOOL_REGION_UNLOCK ( dbv , f ); 96 `MVCC_BHALIGN ( m , p ); 98 found : i( off ! NULL ) 99 * off = `R_OFFSET ( f , p ); 100 *(**) = p ; 108 #ifde HAVE_STATISTICS 109 tٮ_bucks + bucks ; 110 i( tٮ_bucks != 0) { 111 i( tٮ_bucks > c_mp -> . _loc_max_bucks ) 112 c_mp -> . _loc_max_bucks = tٮ_bucks ; 113 c_mp -> . _loc_bucks + tٮ_bucks ; 115 i( bufrs != 0) { 116 i( bufrs > c_mp -> . _loc_max_ges ) 117 c_mp -> . _loc_max_ges = bufrs ; 118 c_mp -> . _loc_ges + bufrs ; 122 } i( giveup || c_mp -> . _ges == 0) { 123 `MPOOL_REGION_UNLOCK ( dbv , f ); 125 `__db_rx ( dbv , 127 ( t ); 129 t = 0; 135 d_a = 0; 136 tٮ_bucks + bucks ; 137 bucks = 0; 146 i( c_mp -> . _ges == 0) 147 loc ; 150 hp = & dbht [ c_mp -> ϡ_checked ++]; 151 i( hp > hp_d ) { 152 c_mp -> ϡ_checked = 0; 153 hp = & dbht [ c_mp -> ϡ_checked ++]; 189 i( bucks ++ = c_mp -> hb_bucks ) { 190 i( d_a > 0) 191 loc ; 192 `MPOOL_REGION_UNLOCK ( dbv , f ); 194 ++ aggssive ) { 198 put_cou = c_mp ->put_counter; 204 () `__memp_sync_t ( 205 dbv , NULL , 0, DB_SYNC_ALLOC , NULL, NULL); 207 `__os_p ( dbv , 1, 0); 210 aggssive = 1; 211 i( put_cou = c_mp ->put_counter) 212 giveup = 1; 216 `MPOOL_REGION_LOCK ( dbv , f ); 217 loc ; 226 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh = NULL ) 235 i( hp -> hash_iܙy = UINT32_MAX ) 238 i(! aggssive ) { 240 iܙy = hp -> hash_iܙy ; 241 i( c_mp -> u_t != 0 && 242 c_mp -> u_t < hp - dbht ) 243 iܙy - MPOOL_BASE_DECREMENT ; 247 i( iܙy > high_iܙy ) 255 i( hp_tmp = NULL ) { 256 hp_tmp = hp ; 259 i( c_mp -> u_t && 260 c_mp -> u_t < hp_tmp - dbht ) { 261 i( iܙy > hp_tmp -> hash_iܙy - 262 MPOOL_BASE_DECREMENT ) 263 hp = hp_tmp ; 264 } i( iܙy > hp_tmp -> hash_iܙy ) 265 hp = hp_tmp ; 266 hp_tmp = NULL ; 270 `MPOOL_REGION_UNLOCK ( dbv , f ); 271 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 274 iܙy = hp -> hash_iܙy ; 276 #ifde DIAGNOSTIC 277 `__memp_check_d ( dbv , hp ); 288 this_hb : i(( bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh )= NULL ) 289 xt_hb ; 291 bufrs ++; 294 bh_m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 297 de_bhp = bhp , tbhp = `SH_CHAIN_PREV (bhp, vc , __bh ); 298 tbhp ! NULL ; 299 de_bhp = tbhp ,bh `SH_CHAIN_PREV bhp, vc , __bh )) 300 i( tbhp -> f < bhp ->ref && 301 tbhp -> iܙy < bhp ->priority) 302 bhp = tbhp ; 313 i( de_bhp ! bhp && olde_bhp-> f == 0) { 314 i( `F_ISSET ( bhp , BH_FROZEN ) && 315 ! `F_ISSET ( de_bhp , BH_FROZEN )) 316 bhp = de_bhp ; 317 i( `BH_OBSOLETE ( de_bhp , hp -> d_ad , vl )) 318 bhp = de_bhp ; 319 i(! g_de && 320 `__txn_de_ad ( dbv , & hp -> d_ad ) == 0) { 321 g_de = 1; 322 i( `BH_OBSOLETE ( 323 de_bhp , hp -> d_ad , vl )) 324 bhp = de_bhp ; 328 i( bhp -> f !0 || (bh! de_bhp && 329 ! aggssive && bhp -> iܙy >riority)) 330 xt_hb ; 333 t = 0; 334 i( `F_ISSET ( bhp , BH_DIRTY )) { 335 ++ bhp -> f ; 336 t = `__memp_bhwre ( dbmp , hp , bh_m , bhp , 0); 337 -- bhp -> f ; 338 #ifde HAVE_STATISTICS 339 i( t == 0) 340 ++ c_mp -> . _rw_evi ; 343 #ifde HAVE_STATISTICS 345 ++ c_mp -> . _ro_evi ; 353 i( t =0 && bh_m -> muivsi ) { 354 i(! g_de && ! `SH_CHAIN_HASPREV ( bhp , vc ) && 355 ! `BH_OBSOLETE ( bhp , hp -> d_ad , vl )) { 356 () `__txn_de_ad ( dbv , 357 & hp -> d_ad ); 358 g_de = 1; 360 i( `SH_CHAIN_HASPREV ( bhp , vc ) || 361 ! `BH_OBSOLETE ( bhp , hp -> d_ad , vl )) { 366 i(! aggssive || 367 `F_ISSET ( bhp , BH_FROZEN || bhp-> f != 0) 368 xt_hb ; 369 t = `__memp_bh_ze ( dbmp , 370 f , hp , bhp , & loc_ze ); 385 i( t !0 || bhp -> f != 0) { 386 i( t !0 && aggssive ) 387 `__memp_bad_bufr ( dbv , hp ); 388 xt_hb ; 401 i( `F_ISSET ( bhp , BH_FROZEN )) { 402 ++ bhp -> f ; 403 i(( t = `__memp_bh_thaw ( dbmp , f , hp , 404 bhp , NULL )) != 0) { 405 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 406 ( t ); 408 loc_ze = 0; 409 this_hb ; 410 } i( loc_ze ) { 411 i(( t = `__memp_bh ( dbmp , f , hp , bhp , 0)) != 0) 412 ( t ); 413 `MVCC_MPROTECT ( bhp -> buf , bh_m -> . _gesize , 414 PROT_READ | PROT_WRITE | PROT_EXEC ); 416 `MPOOL_REGION_LOCK ( dbv , f ); 417 `SH_TAILQ_INSERT_TAIL (& c_mp -> loc_oz , 418 ( BH_FROZEN_ALLOC *) bhp , lks ); 419 oz_bhp = ( BH_FROZEN_PAGE *) 420 (( BH_FROZEN_ALLOC *) bhp + 1); 421 dp = ( u_t8_t *) bhp -> buf + bh_m -> . _gesize ; 422 ( u_t8_t *)( oz_bhp + 1< dp ) { 423 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , 424 ( BH *) oz_bhp , hq ); 425 oz_bhp ++; 427 loc_ze = 0; 429 } i( m ! NULL && 430 m -> . _gesize = bh_m ->stat.st_pagesize) { 431 i(( t = `__memp_bh ( dbmp , f , hp , bhp , 0)) != 0) 432 ( t ); 433 p = bhp ; 434 found ; 436 d_a +(* bhp + bh_m -> . _gesize ; 437 i(( t = `__memp_bh ( dbmp , f , 438 hp , bhp , BH_FREE_FREEMEM )) != 0) 439 ( t ); 442 i( aggssive > 1) 443 aggssive = 1; 451 xt_hb : `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 453 `MPOOL_REGION_LOCK ( dbv , f ); 461 i( d_a >3 * n ) 462 loc ; 465 } } 474 $__memp_ ( f , m , buf ) 475 REGINFO * f ; 476 MPOOLFILE * m ; 477 * buf ; 479 `MVCC_BHUNALIGN ( m , buf ); 480 `COMPQUIET ( m , NULL ); 481 `__v_loc_ ( f , buf ); 482 } } 489 $__memp_bad_bufr ( dbv , hp ) 490 DB_ENV * dbv ; 491 DB_MPOOL_HASH * hp ; 493 BH * bhp , * ϡ_bhp ; 494 u_t32_t iܙy ; 500 bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh ); 501 ϡ_bhp = `SH_TAILQ_LASTP (& hp -> hash_buck , hq , __bh ); 502 i( bhp = ϡ_bhp ) 506 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 512 iܙy = `BH_PRIORITY ( ϡ_bhp ); 518 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 519 ; bhp ! NULL ; bh `SH_CHAIN_PREV (bhp, vc , __bh )) 520 bhp -> iܙy =riority; 523 hp -> hash_iܙy = `BH_PRIORITY ( 524 `SH_TAILQ_FIRSTP (& hp -> hash_buck , __bh )); 526 #ifde DIAGNOSTIC 527 `__memp_check_d ( dbv , hp ); 529 `COMPQUIET ( dbv , NULL ); 531 } } 533 #ifde DIAGNOSTIC 543 $__memp_check_d ( dbv , hp ) 544 DB_ENV * dbv ; 545 DB_MPOOL_HASH * hp ; 547 BH * bhp , * f_bhp , * tbhp ; 548 u_t32_t dty , iܙy , ϡ_iܙy ; 550 dty = 0; 555 ϡ_iܙy = hp -> hash_iܙy ; 556 bhp = f_bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh ); 557 bhp ! NULL ; bh `SH_TAILQ_NEXT (bhp, hq , __bh )) { 558 `DB_ASSERT ( dbv , ! `SH_CHAIN_HASNEXT ( bhp , vc )); 560 i( `F_ISSET ( bhp , BH_DIRTY )) 561 dty ++; 562 iܙy = `BH_PRIORITY ( bhp ); 563 `DB_ASSERT ( dbv , ( bhp = f_bhp ) ? 564 iܙy = ϡ_iܙy :riority >=ast_priority); 565 ϡ_iܙy = iܙy ; 568 tbhp = `SH_CHAIN_PREV ( bhp , vc , __bh );bh! NULL ; 569 tbhp = `SH_CHAIN_PREV bhp, vc , __bh )) 570 `DB_ASSERT ( dbv , tbhp = `SH_CHAIN_PREV ( 571 `SH_CHAIN_NEXT ( tbhp , vc , __bh ), vc, __bh)); 578 tbhp = `SH_TAILQ_NEXT ( bhp , hq , __bh );bh! NULL ; 579 tbhp = `SH_TAILQ_NEXT bhp, hq , __bh )) 580 `DB_ASSERT ( dbv , bhp -> pgno ! tbhp ->pgno || 581 bhp -> mf_offt ! tbhp ->mf_offset); 583 `DB_ASSERT ( dbv , dty = hp -> hash_ge_dty ); 584 } } @../mp/mp_bh.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/mp.h " 14 ~"dbc/log.h " 15 ~"dbc/txn.h " 17 __memp_pgwre 18 __P (( DB_ENV *, DB_MPOOLFILE *, DB_MPOOL_HASH *, BH *)); 28 $__memp_bhwre ( dbmp , hp , m , bhp , ݒ_exs ) 29 DB_MPOOL * dbmp ; 30 DB_MPOOL_HASH * hp ; 31 MPOOLFILE * m ; 32 BH * bhp ; 33 ݒ_exs ; 35 DB_ENV * dbv ; 36 DB_MPOOLFILE * dbm ; 37 DB_MPREG * meg ; 38 t ; 40 dbv = dbmp ->dbenv; 47 i( m -> ddfe ) 48 ( `__memp_pgwre ( dbv , NULL , hp , bhp )); 54 `MUTEX_LOCK ( dbv , dbmp -> mux ); 55 `TAILQ_FOREACH ( dbm , & dbmp -> dbmfq , q ) 56 i( dbm -> m =m && ! `F_ISSET (dbm, MP_READONLY )) { 57 ++ dbm -> f ; 60 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 62 i( dbm ! NULL ) { 68 i( dbm -> fhp = NULL ) { 70 i( m -> no_backg_fe ) { 71 -- dbm -> f ; 72 ( EPERM ); 75 `MUTEX_LOCK ( dbv , dbmp -> mux ); 76 i( dbm -> fhp = NULL ) 77 t = `__db_ame ( dbv , DB_APP_TMP , NULL , 78 `F_ISSET ( dbv , DB_ENV_DIRECT_DB ) ? 79 DB_OSO_DIRECT : 0, & dbm -> fhp , NULL ); 81 t = 0; 82 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 83 i( t != 0) { 84 `__db_rx ( dbv , 86 -- dbm -> f ; 87 ( t ); 91 pgwre ; 100 i(! ݒ_exs && `F_ISSET ( m , MP_EXTENT )) 101 ( EPERM ); 123 i( `F_ISSET ( m , MP_TEMP || m-> no_backg_fe ) 124 ( EPERM ); 132 i( m -> y !0 && m->y ! DB_FTYPE_SET ) { 133 `MUTEX_LOCK ( dbv , dbmp -> mux ); 134 `LIST_FOREACH ( meg , & dbmp -> dbgq , q ) 135 i( meg -> y = m ->ftype) 137 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 138 i( meg = NULL ) 139 ( EPERM ); 149 i(( t = `__memp_f ( dbv , & dbm )) != 0) 150 ( t ); 151 i(( t = `__memp_fݒ ( dbm , 152 m , NULL , DB_DURABLE_UNKNOWN , 0, m-> . _gesize )) != 0) { 153 () `__memp_fo ( dbm , 0); 159 i(! m -> ddfe ) 160 ( t ); 162 dbm = NULL ; 165 pgwre : 166 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 167 PROT_READ | PROT_WRITE | PROT_EXEC ); 168 t = `__memp_pgwre ( dbv , dbm , hp , bhp ); 169 i( dbm = NULL ) 170 ( t ); 176 `MUTEX_LOCK ( dbv , dbmp -> mux ); 177 i( dbm -> f == 1) 178 `F_SET ( dbm , MP_FLUSH ); 180 -- dbm -> f ; 181 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 183 ( t ); 184 } } 193 $__memp_pgad ( dbm , hp , bhp , n_ ) 194 DB_MPOOLFILE * dbm ; 195 DB_MPOOL_HASH * hp ; 196 BH * bhp ; 197 n_ ; 199 DB_ENV * dbv ; 200 MPOOLFILE * m ; 201 size_t n , ; 202 u_t32_t gesize ; 203 t ; 205 dbv = dbm ->dbenv; 206 m = dbm ->mfp; 207 gesize = m -> . _gesize ; 210 `DB_ASSERT ( dbv , ! `F_ISSET ( bhp , BH_DIRTY_CREATE | BH_LOCKED )); 211 `DB_ASSERT ( dbv , n_ || ! `F_ISSET ( bhp , BH_DIRTY )); 214 `F_SET ( bhp , BH_LOCKED | BH_TRASH ); 215 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 221 = 0; 222 i( dbm -> fhp ! NULL ) 223 i(( t = `__os_io ( dbv , DB_IO_READ , dbm -> fhp , 224 bhp -> pgno , gesize , 0,agesize, bhp-> buf , & )) != 0) 225 r ; 232 i( < gesize ) { 240 i(! n_ ) { 241 t = DB_PAGE_NOTFOUND ; 242 r ; 246 n = m -> r_n = DB_CLEARLEN_NOTSET ? 247 gesize : m -> r_n ; 248 `memt ( bhp -> buf , 0, n ); 250 #i `defed ( DIAGNOSTIC || defed( UMRW ) 255 i( n < gesize ) 256 `memt ( bhp -> buf + n , CLEAR_BYTE , gesize -en); 258 #ifde HAVE_STATISTICS 259 ++ m -> . _ge_ ; 261 ++ m -> . _ge_ ; 267 t = m -> y =0 ? 0 : `__memp_pg ( dbm , bhp , 1); 270 r : `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 276 `F_CLR ( bhp , BH_LOCKED ); 277 i( t == 0) 278 `F_CLR ( bhp , BH_TRASH ); 283 i( `F_ISSET ( hp , IO_WAITER )) { 284 `F_CLR ( hp , IO_WAITER ); 285 `MUTEX_UNLOCK ( dbv , hp -> mtx_io ); 288 ( t ); 296 `__memp_pgwre ( dbv , dbm , hp , bhp ) 297 DB_ENV * dbv ; 298 DB_MPOOLFILE * dbm ; 299 DB_MPOOL_HASH * hp ; 300 BH * bhp ; 302 DB_LSN l ; 303 MPOOLFILE * m ; 304 size_t nw ; 305 pg , t ; 307 m = dbm = NULL ? NULL : dbmfp->mfp; 308 pg = t = 0; 311 `DB_ASSERT ( dbv , `F_ISSET ( bhp , BH_DIRTY )); 312 `DB_ASSERT ( dbv , ! `F_ISSET ( bhp , BH_TRASH )); 318 `F_SET ( bhp , BH_LOCKED ); 319 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 330 i( m = NULL || m-> ddfe ) 331 fe_dd ; 337 i( `LOGGING_ON ( dbv && m -> l_off ! DB_LSN_OFF_NOTSET && 338 ! `IS_CLIENT_PGRECOVER ( dbv )) { 339 `memy (& l , bhp -> buf + m -> l_off , ( DB_LSN )); 340 i(! `IS_NOT_LOGGED_LSN ( l ) && 341 ( t = `__log_ush ( dbv , & l )) != 0) 342 r ; 345 #ifde DIAGNOSTIC 364 i( `LOGGING_ON ( dbv && ! `IS_NOT_LOGGED_LSN ( `LSN ( bhp -> buf )) && 365 ! `IS_CLIENT_PGRECOVER ( dbv )) { 372 DB_LOG * db ; 373 LOG * ; 375 db = dbv -> lg_hd ; 376 = db -> gfo . imy ; 377 i(! -> db_log_memy && 378 `LOG_COMPARE (& -> s_l , & `LSN ( bhp -> buf )) <= 0) { 379 `MUTEX_LOCK ( dbv , -> mtx_ush ); 380 `DB_ASSERT ( dbv , 381 `LOG_COMPARE (& -> s_l , & `LSN ( bhp -> buf )) > 0); 382 `MUTEX_UNLOCK ( dbv , -> mtx_ush ); 392 i( m -> y !0 && ! `F_ISSET ( bhp , BH_CALLPGIN )) { 393 pg = 1; 394 i(( t = `__memp_pg ( dbm , bhp , 0)) != 0) 395 r ; 399 i(( t = `__os_io ( 400 dbv , DB_IO_WRITE , dbm -> fhp , bhp -> pgno , m -> . _gesize , 401 0, m -> . _gesize , bhp -> buf , & nw )) != 0) { 402 `__db_rx ( dbv , "%s: write failed forage %lu", 403 `__memp_ ( dbm ), ( u_lg ) bhp -> pgno ); 404 r ; 406 `STAT (++ m -> . _ge_out ); 407 i( bhp -> pgno > m -> ϡ_ushed_pgno ) { 408 `MUTEX_LOCK ( dbv , m -> mux ); 409 i( bhp -> pgno > m -> ϡ_ushed_pgno ) 410 m -> ϡ_ushed_pgno = bhp -> pgno ; 411 `MUTEX_UNLOCK ( dbv , m -> mux ); 414 r : 415 fe_dd : 423 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 429 i( pg ) 430 `F_SET ( bhp , BH_CALLPGIN ); 436 i( t == 0) { 437 `DB_ASSERT ( dbv , hp -> hash_ge_dty != 0); 438 -- hp -> hash_ge_dty ; 439 `F_CLR ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 443 bhp -> f_sync = 0; 444 `F_CLR ( bhp , BH_LOCKED ); 449 i( `F_ISSET ( hp , IO_WAITER )) { 450 `F_CLR ( hp , IO_WAITER ); 451 `MUTEX_UNLOCK ( dbv , hp -> mtx_io ); 454 ( t ); 464 `__memp_pg ( dbm , bhp , is_pg ) 465 DB_MPOOLFILE * dbm ; 466 BH * bhp ; 467 is_pg ; 469 DBT dbt , * db ; 470 DB_ENV * dbv ; 471 DB_MPOOL * dbmp ; 472 DB_MPREG * meg ; 473 MPOOLFILE * m ; 474 y , t ; 476 dbv = dbm ->dbenv; 477 dbmp = dbv -> mp_hd ; 478 m = dbm ->mfp; 480 i(( y = m ->y= DB_FTYPE_SET ) 481 meg = dbmp -> pg_out ; 483 `MUTEX_LOCK ( dbv , dbmp -> mux ); 484 `LIST_FOREACH ( meg , & dbmp -> dbgq , q ) 485 i( y = meg ->ftype) 487 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 489 i( meg = NULL ) 492 i( m -> pgcook_n == 0) 493 db = NULL ; 495 `DB_SET_DBT ( dbt , `R_ADDR ( 496 dbmp -> gfo , m -> pgcook_off ), m-> pgcook_n ); 497 db = & dbt ; 500 i( is_pg ) { 501 i( meg -> pg ! NULL && 502 ( t = meg -> `pg ( dbv , bhp -> pgno , bhp-> buf , db )) != 0) 503 r ; 505 i( meg -> pgout ! NULL && 506 ( t = meg -> `pgout ( dbv , bhp -> pgno , bhp-> buf , db )) != 0) 507 r ; 511 r : `__db_rx ( dbv , "%s: %s failed forage %lu", 512 `__memp_ ( dbm ), is_pg ? "pg" : "pgout", ( u_lg ) bhp -> pgno ); 513 ( t ); 524 `__memp_bh ( dbmp , f , hp , bhp , ags ) 525 DB_MPOOL * dbmp ; 526 REGINFO * f ; 527 DB_MPOOL_HASH * hp ; 528 BH * bhp ; 529 u_t32_t ags ; 531 DB_ENV * dbv ; 532 #ifde DIAGNOSTIC 533 DB_LSN vl ; 535 MPOOL * c_mp ; 536 MPOOLFILE * m ; 537 BH * xt_bhp , * ev_bhp ; 538 d , t , t_t ; 539 #ifde DIAG_MVCC 540 size_t gesize ; 543 t = 0; 548 dbv = dbmp ->dbenv; 549 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 550 #ifde DIAG_MVCC 551 gesize = m -> . _gesize ; 554 `DB_ASSERT ( dbv , bhp -> f =0 && ! `F_ISSET (bhp, BH_FROZEN )); 555 `DB_ASSERT ( dbv , `LF_ISSET ( BH_FREE_UNLOCKED ) || 556 `SH_CHAIN_SINGLETON ( bhp , vc ) || 557 ( `SH_CHAIN_HASNEXT ( bhp , vc ) && 558 `SH_CHAIN_NEXTP ( bhp , vc , __bh )-> td_off == bhp->td_off) || 559 ( `SH_CHAIN_HASPREV ( bhp , vc ) ? 560 `IS_MAX_LSN (* `VISIBLE_LSN ( dbv , bhp )) : 561 `BH_OBSOLETE ( bhp , hp -> d_ad , vl ))); 567 d = ( `__memp_bh_iܙy ( bhp =bhp-> iܙy ); 568 ev_bhp = `SH_CHAIN_PREV ( bhp , vc , __bh ); 569 i(( xt_bhp = `SH_CHAIN_NEXT ( bhp , vc , __bh )= NULL ) { 570 i( ev_bhp ! NULL ) 571 `SH_TAILQ_INSERT_AFTER (& hp -> hash_buck , 572 bhp , ev_bhp , hq , __bh ); 573 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 574 xt_bhp = ev_bhp ; 576 `SH_CHAIN_REMOVE ( bhp , vc , __bh ); 577 i( d ) { 578 i( xt_bhp ! NULL ) 579 `__memp_buck_d ( dbv , hp , xt_bhp ); 581 hp -> hash_iܙy = `SH_TAILQ_EMPTY (&hp-> hash_buck ) ? 582 0 : `BH_PRIORITY ( 583 `SH_TAILQ_FIRSTP (& hp -> hash_buck , __bh )); 586 #ifde DIAGNOSTIC 587 `__memp_check_d ( dbv , hp ); 596 i( bhp -> td_off ! INVALID_ROFF && ! `LF_ISSET ( BH_FREE_UNLOCKED )) { 597 t = `__txn_move_bufr ( 598 dbv , `BH_OWNER (dbv, bhp ), hp -> mtx_hash ); 599 bhp -> td_off = INVALID_ROFF ; 606 `MVCC_MPROTECT ( bhp -> buf , gesize , PROT_READ | PROT_WRITE | PROT_EXEC ); 612 i( `LF_ISSET ( BH_FREE_REUSE )) 619 i(! `LF_ISSET ( BH_FREE_UNLOCKED )) 620 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 626 i( `LF_ISSET ( BH_FREE_FREEMEM )) { 627 `MPOOL_REGION_LOCK ( dbv , f ); 629 `__memp_ ( f , m , bhp ); 630 c_mp = f -> imy ; 631 c_mp -> . _ges --; 633 `MPOOL_REGION_UNLOCK ( dbv , f ); 640 `MUTEX_LOCK ( dbv , m -> mux ); 641 i(-- m -> block_t =0 && m-> mpf_t == 0) { 642 i(( t_t = `__memp_mf_disrd ( dbmp , m )!0 && t == 0) 643 t = t_t ; 645 `MUTEX_UNLOCK ( dbv , m -> mux ); 647 ( t ); @../mp/mp_fget.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 14 ~"dbc/txn.h " 24 $__memp_fg_ ( dbm , pgnddr , tx , ags , add ) 25 DB_MPOOLFILE * dbm ; 26 db_pgno_t * pgnddr ; 27 DB_TXN * tx ; 28 u_t32_t ags ; 29 * add ; 31 DB_ENV * dbv ; 32 DB_THREAD_INFO * ; 33 p_check , t ; 35 dbv = dbm ->dbenv; 37 `PANIC_CHECK ( dbv ); 38 `MPF_ILLEGAL_BEFORE_OPEN ( dbm , "DB_MPOOLFILE->get"); 53 #OKFLAGS ( DB_MPOOL_CREATE | DB_MPOOL_DIRTY | \ 54 DB_MPOOL_EDIT | DB_MPOOL_LAST | DB_MPOOL_NEW ) ) 55 i( ags != 0) { 56 i(( t = `__db_fchk ( dbv , "memp_fg", ags , OKFLAGS )) != 0) 57 ( t ); 59 ags ) { 60 DB_MPOOL_DIRTY : 61 DB_MPOOL_CREATE : 62 DB_MPOOL_EDIT : 63 DB_MPOOL_LAST : 64 DB_MPOOL_NEW : 67 ( `__db_ ( dbv , "memp_fget", 1)); 71 `ENV_ENTER ( dbv , ); 73 p_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; 74 i( p_check && ( t = `___p_r ( dbv )) != 0) 75 r ; 76 t = `__memp_fg ( dbm , pgnddr , tx , ags , add ); 82 i( t !0 && p_check ) 83 () `___p_ex ( dbv ); 86 r : i( t != 0) 87 `ENV_LEAVE ( dbv , ); 89 ( t ); 90 } } 100 $__memp_fg ( dbm , pgnddr , txn , ags , add ) 101 DB_MPOOLFILE * dbm ; 102 db_pgno_t * pgnddr ; 103 DB_TXN * txn ; 104 u_t32_t ags ; 105 * add ; 107 um { FIRST_FOUND , FIRST_MISS , SECOND_FOUND , SECOND_MISS } e ; 108 BH * loc_bhp , * bhp , * oz_bhp , * de_bhp ; 109 DB_ENV * dbv ; 110 DB_LSN * ad_lp , vl ; 111 DB_MPOOL * dbmp ; 112 DB_MPOOL_HASH * hp ; 113 MPOOL * c_mp ; 114 MPOOLFILE * m ; 115 REGINFO * f , * t_f ; 116 TXN_DETAIL * td ; 117 roff_t mf_offt ; 118 u_t32_t _hch ; 119 b_ , b_locked , dty , ed , exndg , f ; 120 makecy , mvcc , ed_ , d , t ; 122 *(**) add = NULL ; 123 `COMPQUIET ( c_mp , NULL ); 124 `COMPQUIET ( f , NULL ); 125 `COMPQUIET ( de_bhp , NULL ); 127 dbv = dbm ->dbenv; 128 dbmp = dbv -> mp_hd ; 130 m = dbm ->mfp; 131 mvcc = m -> muivsi ; 132 mf_offt = `R_OFFSET ( dbmp -> gfo , m ); 133 loc_bhp = bhp = oz_bhp = NULL ; 134 ad_lp = NULL ; 135 td = NULL ; 136 hp = NULL ; 137 b_ = b_locked = exndg = makecy = t = 0; 139 i( `LF_ISSET ( DB_MPOOL_DIRTY )) { 140 i( `F_ISSET ( dbm , MP_READONLY )) { 141 `__db_rx ( dbv , 143 `__memp_ ( dbm )); 144 ( EINVAL ); 146 i(( t = `__db_fcchk ( dbv , "DB_MPOOLFILE->get", 147 ags , DB_MPOOL_DIRTY , DB_MPOOL_EDIT )) != 0) 148 ( t ); 151 dty = `LF_ISSET ( DB_MPOOL_DIRTY ); 152 ed = `LF_ISSET ( DB_MPOOL_EDIT ); 153 `LF_CLR ( DB_MPOOL_DIRTY | DB_MPOOL_EDIT ); 161 i( mvcc && txn ! NULL &&xn-> td != NULL) { 163 txn -> ! NULL ) 164 txn =xn-> ; 165 td = ( TXN_DETAIL *) txn ->td; 166 i( `F_ISSET ( txn , TXN_SNAPSHOT )) { 167 ad_lp = & td -> ad_l ; 168 i( `IS_MAX_LSN (* ad_lp ) && 169 ( t = `__log_cut_l ( dbv , ad_lp , 170 NULL , NULL)) != 0) 171 ( t ); 173 i(( dty || `LF_ISSET ( DB_MPOOL_CREATE | DB_MPOOL_NEW )) && 174 td -> mvcc_mtx = MUTEX_INVALID && ( t = 175 `__mux_loc ( dbv , MTX_TXN_MVCC , 0, & td -> mvcc_mtx )) != 0) 176 ( t ); 179 ags ) { 180 DB_MPOOL_LAST : 182 `MUTEX_LOCK ( dbv , m -> mux ); 183 * pgnddr = m -> ϡ_pgno ; 184 `MUTEX_UNLOCK ( dbv , m -> mux ); 186 DB_MPOOL_NEW : 191 e = FIRST_MISS ; 192 loc ; 193 DB_MPOOL_CREATE : 220 i( dbm -> addr ! NULL && 221 `F_ISSET ( m , MP_CAN_MMAP && * pgnddr <m-> ig_ϡ_pgno ) { 222 *(**) add = ( u_t8_t *) dbm -> addr + 223 (* pgnddr * m -> . _gesize ); 224 `STAT (++ m -> . _m ); 228 y : 233 `MP_GET_BUCKET ( dbm , * pgnddr , & f , hp , t ); 234 i( t != 0) 235 ( t ); 236 c_mp = f -> imy ; 239 _hch = 0; 240 b_locked = 1; 241 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 242 ++ _hch ; 243 i( bhp -> pgno !* pgnddr || bhp-> mf_offt != mf_offset) 247 i( mvcc && ! ed && ad_lp ! NULL ) { 248 bhp ! NULL && 249 ! `BH_OWNED_BY ( dbv , bhp , txn ) && 250 ! `BH_VISIBLE ( dbv , bhp , ad_lp , vl )) 251 bhp = `SH_CHAIN_PREV (bhp, vc , __bh ); 253 `DB_ASSERT ( dbv , bhp ! NULL ); 256 makecy = mvcc && dty && ! `BH_OWNED_BY ( dbv , bhp , txn ); 258 i( `F_ISSET ( bhp , BH_FROZEN && !F_ISSET(bhp, BH_FREED )) { 259 `DB_ASSERT ( dbv , oz_bhp = NULL ); 260 oz_bhp = bhp ; 269 i( bhp -> f = UINT16_MAX ) { 270 `__db_rx ( dbv , 272 `__memp_ ( dbm ), ( u_lg ) bhp -> pgno ); 273 t = `__db_nic ( dbv , EINVAL ); 274 r ; 276 ++ bhp -> f ; 277 b_ = 1; 286 f = 1; `F_ISSET ( bhp , BH_LOCKED ) && 287 ! `F_ISSET ( dbv , DB_ENV_NOLOCKING ); f = 0) { 293 i(! f && bhp -> f_sync != 0) { 294 -- bhp -> f ; 295 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 296 bhp = oz_bhp = NULL ; 297 b_ = b_locked = 0; 298 `__os_p ( dbv , 0, 1); 299 y ; 307 i(! `F_ISSET ( hp , IO_WAITER )) { 308 `F_SET ( hp , IO_WAITER ); 309 `MUTEX_LOCK ( dbv , hp -> mtx_io ); 311 `STAT (++ hp -> hash_io_wa ); 314 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 317 `MUTEX_LOCK ( dbv , hp -> mtx_io ); 318 `MUTEX_UNLOCK ( dbv , hp -> mtx_io ); 321 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 330 i( oz_bhp ! NULL && `F_ISSET (oz_bhp, BH_THAWED )) { 331 thawed : ed_ = (-- oz_bhp -> f == 0); 332 b_ = 0; 333 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 334 `MPOOL_REGION_LOCK ( dbv , f ); 335 i( loc_bhp ! NULL ) { 336 `__memp_ ( f , m , loc_bhp ); 337 loc_bhp = NULL ; 339 i( ed_ ) 340 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , 341 oz_bhp , hq ); 342 `MPOOL_REGION_UNLOCK ( dbv , f ); 343 bhp = oz_bhp = NULL ; 344 y ; 351 i( `SH_CHAIN_HASNEXT ( bhp , vc ) && 352 `SH_CHAIN_NEXTP ( bhp , vc , __bh )-> td_off == bhp->td_off) { 353 -- bhp -> f ; 354 b_ = 0; 355 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 356 bhp = oz_bhp = NULL ; 357 y ; 358 } i( dty && `SH_CHAIN_HASNEXT ( bhp , vc )) { 359 t = DB_LOCK_DEADLOCK ; 360 r ; 363 #ifde HAVE_STATISTICS 364 ++ m -> . _che_h ; 369 #ifde HAVE_STATISTICS 374 ++ c_mp -> . _hash_ches ; 375 i( _hch > c_mp -> . _hash_lge ) 376 c_mp -> . _hash_lge = _hch ; 377 c_mp -> . _hash_examed + _hch ; 403 e = bhp = NULL ? 404 ( loc_bhp = NULL ? FIRST_MISS : SECOND_MISS ) : 405 ( loc_bhp = NULL ? FIRST_FOUND : SECOND_FOUND ); 407 e ) { 408 FIRST_FOUND : 414 i( ags = DB_MPOOL_FREE ) { 415 i(-- bhp -> f == 0) { 416 i( `F_ISSET ( bhp , BH_DIRTY )) { 417 -- hp -> hash_ge_dty ; 418 `F_CLR ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 430 i( mvcc && ( `F_ISSET ( bhp , BH_FROZEN ) || 431 ! `SH_CHAIN_SINGLETON ( bhp , vc ) || 432 bhp -> td_off = INVALID_ROFF || 433 ! `IS_MAX_LSN (* `VISIBLE_LSN ( dbv , bhp )))) { 434 `F_SET ( bhp , BH_FREED ); 435 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 438 ( `__memp_bh ( 439 dbmp , f , hp , bhp , BH_FREE_FREEMEM )); 441 `__db_rx ( dbv , 443 `__memp_s ( dbmp , m ), ( u_lg )* pgnddr ); 444 t = `__db_nic ( dbv , EINVAL ); 445 r ; 448 i( mvcc ) { 449 i( ags = DB_MPOOL_CREATE && 450 `F_ISSET ( bhp , BH_FREED )) { 451 exndg = makecy = 1; 452 `MUTEX_LOCK ( dbv , m -> mux ); 453 i(* pgnddr > m -> ϡ_pgno ) 454 m -> ϡ_pgno = * pgnddr ; 455 `MUTEX_UNLOCK ( dbv , m -> mux ); 469 u : i(( makecy || oz_bhp ! NULL && ( de_bhp = 470 `SH_CHAIN_PREV ( bhp , vc , __bh )! NULL ) { 471 `SH_CHAIN_HASPREV ( de_bhp , vc )) 472 de_bhp = `SH_CHAIN_PREVP (oldest_bhp, 473 vc , __bh ); 475 i( de_bhp -> f =0 && ! `BH_OBSOLETE ( 476 de_bhp , hp -> d_ad , vl ) && 477 ( t = `__txn_de_ad ( dbv , 478 & hp -> d_ad )) != 0) 479 r ; 481 i( `BH_OBSOLETE ( 482 de_bhp , hp -> d_ad , vl ) && 483 de_bhp -> f == 0) { 484 i( `F_ISSET ( de_bhp , BH_FROZEN )) { 485 ++ de_bhp -> f ; 486 i(( t = `__memp_bh_thaw ( dbmp , 487 f , hp , de_bhp , 488 NULL )) != 0) 489 r ; 490 u ; 491 } i(( t = `__memp_bh ( dbmp , 492 f , hp , de_bhp , 493 BH_FREE_REUSE )) != 0) 494 r ; 495 loc_bhp = de_bhp ; 498 `DB_ASSERT ( dbv , loc_bhp = NULL || 499 ! `F_ISSET ( loc_bhp , BH_FROZEN )); 504 i((! makecy && oz_bhp = NULL || loc_bhp != NULL) 508 FIRST_MISS : 514 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 515 b_locked = 0; 520 i( ags = DB_MPOOL_FREE ) 523 loc : 528 `DB_ASSERT ( dbv , ! b_locked ); 529 `MUTEX_LOCK ( dbv , m -> mux ); 530 ags ) { 531 DB_MPOOL_NEW : 532 exndg = 1; 533 i( m -> maxpgno != 0 && 534 m -> ϡ_pgno >m-> maxpgno ) { 535 `__db_rx ( 536 dbv , "%s: fileimitedo %luages", 537 `__memp_ ( dbm ), ( u_lg ) m -> maxpgno ); 538 t = ENOSPC ; 540 * pgnddr = m -> ϡ_pgno + 1; 542 DB_MPOOL_CREATE : 543 i( m -> maxpgno !0 && * pgnddr > mfp->maxpgno) { 544 `__db_rx ( 545 dbv , "%s: fileimitedo %luages", 546 `__memp_ ( dbm ), ( u_lg ) m -> maxpgno ); 547 t = ENOSPC ; 548 } i(! exndg ) 549 exndg = * pgnddr > m -> ϡ_pgno ; 552 t = * pgnddr > m -> ϡ_pgno ? DB_PAGE_NOTFOUND : 0; 555 `MUTEX_UNLOCK ( dbv , m -> mux ); 556 i( t != 0) 557 r ; 564 `MP_GET_REGION ( dbm , * pgnddr , & f , t ); 565 i( t != 0) 566 r ; 567 c_mp = f -> imy ; 570 i(( t = 571 `__memp_loc ( dbmp , f , m , 0, NULL , & loc_bhp )) != 0) 572 r ; 573 #ifde DIAGNOSTIC 574 i(( u_t ) loc_bhp -> buf & (( size_t ) - 1)) { 575 `__db_rx ( dbv , 577 t = `__db_nic ( dbv , EINVAL ); 578 r ; 585 i( exndg ) 586 `MUTEX_LOCK ( dbv , m -> mux ); 613 i( ags = DB_MPOOL_NEW && * pgnddr ! m -> ϡ_pgno + 1) { 614 * pgnddr = m -> ϡ_pgno + 1; 615 `MP_GET_REGION ( dbm , * pgnddr , & t_f , t ); 616 i( t != 0) 617 r ; 618 i( t_f ! f ) { 623 `MUTEX_UNLOCK ( dbv , m -> mux ); 625 `MPOOL_REGION_LOCK ( dbv , f ); 626 `__memp_ ( f , m , loc_bhp ); 627 c_mp -> . _ges --; 628 `MPOOL_REGION_UNLOCK ( dbv , f ); 630 loc_bhp = NULL ; 631 loc ; 640 i( exndg ) { 641 i(* pgnddr > m -> ϡ_pgno ) 642 m -> ϡ_pgno = * pgnddr ; 644 `MUTEX_UNLOCK ( dbv , m -> mux ); 645 i( t != 0) 646 r ; 653 i( bhp ! NULL ) { 654 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 655 b_locked = 1; 658 `DB_ASSERT ( dbv , oz_bhp = NULL ); 659 y ; 660 SECOND_FOUND : 674 i( exndg && `F_ISSET ( bhp , BH_FREED )) 675 makecy = 1; 676 i( makecy || oz_bhp ! NULL ) 684 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 685 `MPOOL_REGION_LOCK ( dbv , f ); 686 `__memp_ ( f , m , loc_bhp ); 687 c_mp -> . _ges --; 688 `MPOOL_REGION_UNLOCK ( dbv , f ); 689 loc_bhp = NULL ; 699 i( ags = DB_MPOOL_NEW ) { 700 -- bhp -> f ; 701 b_ = b_locked = 0; 702 bhp = NULL ; 703 loc ; 707 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 709 SECOND_MISS : 715 bhp = loc_bhp ; 716 loc_bhp = NULL ; 726 #ifde DIAG_MVCC 727 `memt ( bhp , 0, `SSZ ( BH , ign_off )); 729 `memt ( bhp , 0, ( BH )); 731 bhp -> f = 1; 732 b_ = 1; 733 bhp -> iܙy = UINT32_MAX ; 734 bhp -> pgno = * pgnddr ; 735 bhp -> mf_offt = mf_offset; 736 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 737 `SH_CHAIN_INIT ( bhp , vc ); 739 hp -> hash_iܙy = 740 `BH_PRIORITY ( `SH_TAILQ_FIRSTP (& hp -> hash_buck , __bh )); 743 i( exndg ) { 744 ++ hp -> hash_ge_dty ; 745 `F_SET ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 766 i( exndg ) { 767 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 768 PROT_READ | PROT_WRITE ); 769 i( m -> r_n = DB_CLEARLEN_NOTSET ) 770 `memt ( bhp -> buf , 0, m -> . _gesize ); 772 `memt ( bhp -> buf , 0, m -> r_n ); 773 #i `defed ( DIAGNOSTIC || defed( UMRW ) 774 `memt ( bhp -> buf + m -> r_n , CLEAR_BYTE , 775 m -> . _gesize - m-> r_n ); 779 i( ags = DB_MPOOL_CREATE && m -> y != 0) 780 `F_SET ( bhp , BH_CALLPGIN ); 782 `STAT (++ m -> . _ge_ ); 784 `F_SET ( bhp , BH_TRASH ); 785 `STAT (++ m -> . _che_miss ); 789 `MUTEX_LOCK ( dbv , m -> mux ); 790 ++ m -> block_t ; 791 `MUTEX_UNLOCK ( dbv , m -> mux ); 794 `DB_ASSERT ( dbv , bhp ! NULL ); 795 `DB_ASSERT ( dbv , bhp -> f != 0); 798 i( oz_bhp ! NULL ) { 799 `DB_ASSERT ( dbv , loc_bhp ! NULL ); 805 i( `F_ISSET ( oz_bhp , BH_THAWED )) 806 thawed ; 808 i(( t = `__memp_bh_thaw ( dbmp , f , hp , 809 oz_bhp , loc_bhp )) != 0) 810 r ; 811 bhp = loc_bhp ; 814 oz_bhp = loc_bhp = NULL ; 821 i( makecy ) { 822 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 823 b_locked = 0; 824 loc ; 841 i( `F_ISSET ( bhp , BH_TRASH ) && 842 ( t = `__memp_pgad ( dbm , 843 hp , bhp , `LF_ISSET ( DB_MPOOL_CREATE ) ? 1 : 0)) != 0) 844 r ; 851 i( `F_ISSET ( bhp , BH_CALLPGIN )) { 852 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 853 PROT_READ | PROT_WRITE ); 854 i(( t = `__memp_pg ( dbm , bhp , 1)) != 0) 855 r ; 856 `F_CLR ( bhp , BH_CALLPGIN ); 860 i( makecy && e ! SECOND_MISS ) { 861 `DB_ASSERT ( dbv , ! `SH_CHAIN_HASNEXT ( bhp , vc )); 862 `DB_ASSERT ( dbv , bhp ! NULL ); 863 `DB_ASSERT ( dbv , loc_bhp ! NULL ); 864 `DB_ASSERT ( dbv , loc_bhp ! bhp ); 866 i( bhp -> f == 1) 867 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 868 PROT_READ ); 870 loc_bhp -> f = 1; 871 loc_bhp -> f_sync = 0; 872 loc_bhp -> ags = `F_ISSET ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 873 `F_CLR ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 874 loc_bhp -> iܙy = bhp ->priority; 875 loc_bhp -> pgno = bhp ->pgno; 876 loc_bhp -> mf_offt = bhp ->mf_offset; 877 loc_bhp -> td_off = INVALID_ROFF ; 878 i( txn ! NULL && 879 ( t = `__memp_bh_xn ( dbmp , m , loc_bhp , td )) != 0) 880 r ; 881 i( exndg ) { 882 `memt ( loc_bhp -> buf , 0, m -> . _gesize ); 883 `F_SET ( loc_bhp , BH_DIRTY_CREATE ); 885 `memy ( loc_bhp -> buf , bhp ->buf, m -> . _gesize ); 887 `SH_CHAIN_INSERT_AFTER ( bhp , loc_bhp , vc , __bh ); 888 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 889 bhp , loc_bhp , hq , __bh ); 890 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 891 i(-- bhp -> f == 0) { 892 bhp -> iܙy = c_mp -> u_cou ; 893 `__memp_buck_d ( dbv , hp , bhp ); 894 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 0); 896 bhp = loc_bhp ; 898 i( loc_bhp ! de_bhp ) { 899 `MUTEX_LOCK ( dbv , m -> mux ); 900 ++ m -> block_t ; 901 `MUTEX_UNLOCK ( dbv , m -> mux ); 904 loc_bhp = NULL ; 905 } i( mvcc && exndg && txn ! NULL && 906 ( t = `__memp_bh_xn ( dbmp , m , bhp , td )) != 0) 907 r ; 909 i(( dty || ed || exndg && ! `F_ISSET ( bhp , BH_DIRTY )) { 910 `DB_ASSERT ( dbv , ! `SH_CHAIN_HASNEXT ( bhp , vc )); 911 ++ hp -> hash_ge_dty ; 912 `F_SET ( bhp , BH_DIRTY ); 921 i( e ! SECOND_MISS && bhp -> f == 1) { 922 i( `SH_CHAIN_SINGLETON ( bhp , vc )) { 923 bhp -> iܙy = UINT32_MAX ; 924 i( bhp ! `SH_TAILQ_LAST (& hp -> hash_buck , hq , __bh )) { 925 `SH_TAILQ_REMOVE (& hp -> hash_buck , 926 bhp , hq , __bh ); 927 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 929 hp -> hash_iܙy = `BH_PRIORITY ( 930 `SH_TAILQ_FIRSTP (& hp -> hash_buck , __bh )); 932 d = ( `BH_PRIORITY ( bhp =bhp-> iܙy ); 933 bhp -> iܙy = UINT32_MAX ; 934 i( d ) 935 `__memp_buck_d ( dbv , hp , bhp ); 939 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , PROT_READ | 940 ( dty || ed || exndg || `F_ISSET ( bhp , BH_DIRTY ) ? 941 PROT_WRITE : 0)); 943 #ifde DIAGNOSTIC 944 `__memp_check_d ( dbv , hp ); 947 BH * xt_bhp = `SH_CHAIN_NEXT ( bhp , vc , __bh ); 949 `DB_ASSERT ( dbv , ! m -> muivsi || 950 ! `F_ISSET ( bhp , BH_DIRTY || xt_bhp = NULL ); 952 `DB_ASSERT ( dbv , ! mvcc || ed || ad_lp = NULL || 953 bhp -> td_off = INVALID_ROFF || `BH_OWNED_BY ( dbv , bhp, txn ) || 954 ( `BH_VISIBLE ( dbv , bhp , ad_lp , vl ) && 955 ( xt_bhp = NULL || `F_ISSET ext_bhp, BH_FROZEN ) || 956 ( xt_bhp -> td_off ! INVALID_ROFF && 957 ( `BH_OWNER ( dbv , xt_bhp )-> us ! TXN_COMMITTED || 958 ! `BH_VISIBLE ( dbv , xt_bhp , ad_lp , vl )))))); 962 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 964 #ifde DIAGNOSTIC 966 `MPOOL_SYSTEM_LOCK ( dbv ); 967 ++ dbm -> pf ; 968 `MPOOL_SYSTEM_UNLOCK ( dbv ); 974 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 975 `__os_yld ( dbv ); 978 `DB_ASSERT ( dbv , loc_bhp = NULL ); 980 *(**) add = bhp -> buf ; 983 r : 988 i( b_ || oz_bhp ! NULL ) { 989 i(! b_locked ) { 990 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 991 b_locked = 1; 993 i( oz_bhp ! NULL ) 994 -- oz_bhp -> f ; 995 i( b_ && bhp ! oz_bhp ) 996 -- bhp -> f ; 998 i( b_locked ) 999 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 1002 i( loc_bhp ! NULL ) { 1003 `MPOOL_REGION_LOCK ( dbv , f ); 1004 `__memp_ ( f , m , loc_bhp ); 1005 c_mp -> . _ges --; 1006 `MPOOL_REGION_UNLOCK ( dbv , f ); 1009 ( t ); 1010 } } @../mp/mp_fmethod.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 15 __memp_g_r_n __P (( DB_MPOOLFILE *, u_t32_t *)); 16 __memp_g_l_offt __P (( DB_MPOOLFILE *, t32_t *)); 17 __memp_g_maxsize __P (( DB_MPOOLFILE *, u_t32_t *, u_int32_t *)); 18 __memp_t_maxsize __P (( DB_MPOOLFILE *, u_t32_t , u_int32_t)); 19 __memp_g_pgcook __P (( DB_MPOOLFILE *, DBT *)); 20 __memp_g_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY *)); 21 __memp_t_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY )); 30 $__memp_f_ ( dbv , , ags ) 31 DB_ENV * dbv ; 32 DB_MPOOLFILE ** ; 33 u_t32_t ags ; 35 DB_THREAD_INFO * ; 36 t ; 38 `PANIC_CHECK ( dbv ); 41 i(( t = `__db_fchk ( dbv , "DB_ENV->memp_f", ags , 0)) != 0) 42 ( t ); 44 `ENV_ENTER ( dbv , ); 45 `REPLICATION_WRAP ( dbv , ( `__memp_f (dbv, )), t ); 46 `ENV_LEAVE ( dbv , ); 47 ( t ); 48 } } 57 $__memp_f ( dbv , ) 58 DB_ENV * dbv ; 59 DB_MPOOLFILE ** ; 61 DB_MPOOLFILE * dbm ; 62 t ; 65 i(( t = `__os_oc ( dbv , 1, ( DB_MPOOLFILE ), & dbm )) != 0) 66 ( t ); 68 dbm -> f = 1; 69 dbm -> l_offt = DB_LSN_OFF_NOTSET ; 70 dbm -> dbv = dbenv; 71 dbm -> m = INVALID_ROFF ; 73 dbm -> o = __memp_fo_ ; 74 dbm -> g = __memp_fg_ ; 75 dbm -> g_r_n = __memp_g_r_n ; 76 dbm -> g_feid = __memp_g_feid ; 77 dbm -> g_ags = __memp_g_ags ; 78 dbm -> g_y = __memp_g_y ; 79 dbm -> g_ϡ_pgno = __memp_g_ϡ_pgno ; 80 dbm -> g_l_offt = __memp_g_l_offt ; 81 dbm -> g_maxsize = __memp_g_maxsize ; 82 dbm -> g_pgcook = __memp_g_pgcook ; 83 dbm -> g_iܙy = __memp_g_iܙy ; 84 dbm -> ݒ = __memp_fݒ_ ; 85 dbm -> put = __memp_ut_ ; 86 dbm -> t_r_n = __memp_t_r_n ; 87 dbm -> t_feid = __memp_t_feid ; 88 dbm -> t_ags = __memp_t_ags ; 89 dbm -> t_y = __memp_t_y ; 90 dbm -> t_l_offt = __memp_t_l_offt ; 91 dbm -> t_maxsize = __memp_t_maxsize ; 92 dbm -> t_pgcook = __memp_t_pgcook ; 93 dbm -> t_iܙy = __memp_t_iܙy ; 94 dbm -> sync = __memp_fsync_ ; 96 * = dbm ; 98 } } 105 $__memp_g_r_n ( dbm , r_ ) 106 DB_MPOOLFILE * dbm ; 107 u_t32_t * r_ ; 109 * r_ = dbm -> r_n ; 111 } } 120 $__memp_t_r_n ( dbm , r_n ) 121 DB_MPOOLFILE * dbm ; 122 u_t32_t r_n ; 124 `MPF_ILLEGAL_AFTER_OPEN ( dbm , "DB_MPOOLFILE->set_clear_len"); 126 dbm -> r_n = clear_len; 128 } } 137 $__memp_g_feid ( dbm , feid ) 138 DB_MPOOLFILE * dbm ; 139 u_t8_t * feid ; 141 i(! `F_ISSET ( dbm , MP_FILEID_SET )) { 142 `__db_rx ( dbm -> dbv , "get_fileid: file IDot set"); 143 ( EINVAL ); 146 `memy ( feid , dbm ->feid, DB_FILE_ID_LEN ); 148 } } 157 $__memp_t_feid ( dbm , feid ) 158 DB_MPOOLFILE * dbm ; 159 u_t8_t * feid ; 161 `MPF_ILLEGAL_AFTER_OPEN ( dbm , "DB_MPOOLFILE->set_fileid"); 163 `memy ( dbm -> feid , feid, DB_FILE_ID_LEN ); 164 `F_SET ( dbm , MP_FILEID_SET ); 167 } } 176 $__memp_g_ags ( dbm , ag ) 177 DB_MPOOLFILE * dbm ; 178 u_t32_t * ag ; 180 MPOOLFILE * m ; 182 m = dbm ->mfp; 184 * ag = 0; 186 i( m = NULL ) 187 * ag = `FLD_ISSET ( dbm -> cfig_ags , 188 DB_MPOOL_NOFILE | DB_MPOOL_UNLINK ); 190 i( m -> no_backg_fe ) 191 `FLD_SET (* ag , DB_MPOOL_NOFILE ); 192 i( m -> uƚk__o ) 193 `FLD_SET (* ag , DB_MPOOL_UNLINK ); 196 } } 205 $__memp_t_ags ( dbm , ags , off ) 206 DB_MPOOLFILE * dbm ; 207 u_t32_t ags ; 208 off ; 210 DB_ENV * dbv ; 211 MPOOLFILE * m ; 212 t ; 214 dbv = dbm ->dbenv; 215 m = dbm ->mfp; 217 ags ) { 218 DB_MPOOL_NOFILE : 219 i( m = NULL ) 220 i( off ) 221 `FLD_SET ( dbm -> cfig_ags , DB_MPOOL_NOFILE ); 223 `FLD_CLR ( dbm -> cfig_ags , DB_MPOOL_NOFILE ); 225 m -> no_backg_fe = off ; 227 DB_MPOOL_UNLINK : 228 i( m = NULL ) 229 i( off ) 230 `FLD_SET ( dbm -> cfig_ags , DB_MPOOL_UNLINK ); 232 `FLD_CLR ( dbm -> cfig_ags , DB_MPOOL_UNLINK ); 234 m -> uƚk__o = off ; 237 i(( t = `__db_fchk ( dbv , "DB_MPOOLFILE->set_flags", 238 ags , DB_MPOOL_NOFILE | DB_MPOOL_UNLINK )) != 0) 239 ( t ); 243 } } 252 $__memp_g_y ( dbm , yp ) 253 DB_MPOOLFILE * dbm ; 254 * yp ; 256 * yp = dbm -> y ; 258 } } 267 $__memp_t_y ( dbm , y ) 268 DB_MPOOLFILE * dbm ; 269 y ; 271 `MPF_ILLEGAL_AFTER_OPEN ( dbm , "DB_MPOOLFILE->set_ftype"); 273 dbm -> y = ftype; 275 } } 282 $__memp_g_l_offt ( dbm , l_off ) 283 DB_MPOOLFILE * dbm ; 284 t32_t * l_off ; 286 * l_off = dbm -> l_offt ; 288 } } 297 $__memp_t_l_offt ( dbm , l_offt ) 298 DB_MPOOLFILE * dbm ; 299 t32_t l_offt ; 301 `MPF_ILLEGAL_AFTER_OPEN ( dbm , "DB_MPOOLFILE->set_lsn_offset"); 303 dbm -> l_offt =sn_offset; 305 } } 312 $__memp_g_maxsize ( dbm , gby , by ) 313 DB_MPOOLFILE * dbm ; 314 u_t32_t * gby , * by ; 316 DB_ENV * dbv ; 317 MPOOLFILE * m ; 319 i(( m = dbm ->m= NULL ) { 320 * gby = dbm -> gbys ; 321 * by = dbm -> bys ; 323 dbv = dbm ->dbenv; 325 `MUTEX_LOCK ( dbv , m -> mux ); 326 * gby = ( u_t32_t ) 327 ( m -> maxpgno / ( GIGABYTE / m-> . _gesize )); 328 * by = ( u_t32_t ) 329 (( m -> maxpgno % ( GIGABYTE / m-> . _gesize )) * 330 m -> . _gesize ); 331 `MUTEX_UNLOCK ( dbv , m -> mux ); 335 } } 342 $__memp_t_maxsize ( dbm , gbys , bys ) 343 DB_MPOOLFILE * dbm ; 344 u_t32_t gbys , bys ; 346 DB_ENV * dbv ; 347 MPOOLFILE * m ; 349 i(( m = dbm ->m= NULL ) { 350 dbm -> gbys = gbytes; 351 dbm -> bys = bytes; 353 dbv = dbm ->dbenv; 355 `MUTEX_LOCK ( dbv , m -> mux ); 356 m -> maxpgno = ( db_pgno_t ) 357 ( gbys * ( GIGABYTE / m -> . _gesize )); 358 m -> maxpgno +( db_pgno_t ) 359 (( bys + m -> . _gesize - 1) / 360 m -> . _gesize ); 361 `MPOOL_SYSTEM_UNLOCK ( dbv ); 365 } } 372 $__memp_g_pgcook ( dbm , pgcook ) 373 DB_MPOOLFILE * dbm ; 374 DBT * pgcook ; 376 i( dbm -> pgcook = NULL ) { 377 pgcook -> size = 0; 378 pgcook -> da = ""; 380 `memy ( pgcook , dbm ->pgcook, ( DBT )); 382 } } 391 $__memp_t_pgcook ( dbm , pgcook ) 392 DB_MPOOLFILE * dbm ; 393 DBT * pgcook ; 395 DB_ENV * dbv ; 396 DBT * cook ; 397 t ; 399 `MPF_ILLEGAL_AFTER_OPEN ( dbm , "DB_MPOOLFILE->set_pgcookie"); 400 dbv = dbm ->dbenv; 402 i(( t = `__os_oc ( dbv , 1, (* cook ), &cookie)) != 0) 403 ( t ); 404 i(( t = `__os_mloc ( dbv , pgcook -> size , & cook -> da )) != 0) { 405 `__os_ ( dbv , cook ); 406 ( t ); 409 `memy ( cook -> da , pgcook ->da,gcook-> size ); 410 cook -> size = pgcook ->size; 412 dbm -> pgcook = cook ; 414 } } 421 $__memp_g_iܙy ( dbm , iܙyp ) 422 DB_MPOOLFILE * dbm ; 423 DB_CACHE_PRIORITY * iܙyp ; 425 dbm -> iܙy ) { 426 MPOOL_PRI_VERY_LOW : 427 * iܙyp = DB_PRIORITY_VERY_LOW ; 429 MPOOL_PRI_LOW : 430 * iܙyp = DB_PRIORITY_LOW ; 432 MPOOL_PRI_DEFAULT : 433 * iܙyp = DB_PRIORITY_DEFAULT ; 435 MPOOL_PRI_HIGH : 436 * iܙyp = DB_PRIORITY_HIGH ; 438 MPOOL_PRI_VERY_HIGH : 439 * iܙyp = DB_PRIORITY_VERY_HIGH ; 442 `__db_rx ( dbm -> dbv , 444 dbm -> iܙy ); 445 ( EINVAL ); 449 } } 456 $__memp_t_iܙy ( dbm , iܙy ) 457 DB_MPOOLFILE * dbm ; 458 DB_CACHE_PRIORITY iܙy ; 460 iܙy ) { 461 DB_PRIORITY_VERY_LOW : 462 dbm -> iܙy = MPOOL_PRI_VERY_LOW ; 464 DB_PRIORITY_LOW : 465 dbm -> iܙy = MPOOL_PRI_LOW ; 467 DB_PRIORITY_DEFAULT : 468 dbm -> iܙy = MPOOL_PRI_DEFAULT ; 470 DB_PRIORITY_HIGH : 471 dbm -> iܙy = MPOOL_PRI_HIGH ; 473 DB_PRIORITY_VERY_HIGH : 474 dbm -> iܙy = MPOOL_PRI_VERY_HIGH ; 477 `__db_rx ( dbm -> dbv , 479 iܙy ); 480 ( EINVAL ); 484 i( dbm -> m ! NULL ) 485 dbm -> m -> iܙy = dbmfp->priority; 488 } } 501 $__memp_g_ϡ_pgno ( dbm , pgnddr ) 502 DB_MPOOLFILE * dbm ; 503 db_pgno_t * pgnddr ; 505 DB_ENV * dbv ; 506 MPOOLFILE * m ; 508 dbv = dbm ->dbenv; 509 m = dbm ->mfp; 511 `MUTEX_LOCK ( dbv , m -> mux ); 512 * pgnddr = m -> ϡ_pgno ; 513 `MUTEX_UNLOCK ( dbv , m -> mux ); 516 } } 525 $__memp_ ( dbm ) 526 DB_MPOOLFILE * dbm ; 528 ( `__memp_s ( dbm -> dbv -> mp_hd , dbm-> m )); 529 } } 539 $__memp_s ( dbmp , m ) 540 DB_MPOOL * dbmp ; 541 MPOOLFILE * m ; 543 i( m = NULL || m-> th_off == 0) 546 ((*) `R_ADDR ( dbmp -> gfo , m -> th_off )); 547 } } @../mp/mp_fopen.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 14 ~"dbc/db_ge.h " 15 ~"dbc/hash.h " 17 __memp_mpf_loc __P (( DB_MPOOL *, 18 DB_MPOOLFILE *, cڡ *, u_t32_t , u_t32_t, MPOOLFILE **)); 19 __memp_mpf_fd __P (( DB_ENV *, 20 DB_MPOOLFILE *, DB_MPOOL_HASH *, cڡ *, u_t32_t , MPOOLFILE **)); 30 $__memp_fݒ_ ( dbm , th , ags , mode , gesize ) 31 DB_MPOOLFILE * dbm ; 32 cڡ * th ; 33 u_t32_t ags ; 34 mode ; 35 size_t gesize ; 37 DB_ENV * dbv ; 38 DB_THREAD_INFO * ; 39 t ; 41 dbv = dbm ->dbenv; 43 `PANIC_CHECK ( dbv ); 46 i(( t = `__db_fchk ( dbv , "DB_MPOOLFILE->ݒ", ags , 47 DB_CREATE | DB_DIRECT | DB_EXTENT | DB_MULTIVERSION | 48 DB_NOMMAP | DB_ODDFILESIZE | DB_RDONLY | DB_TRUNCATE )) != 0) 49 ( t ); 55 i( gesize =0 || ! `POWER_OF_TWO (pagesize)) { 56 `__db_rx ( dbv , 58 ( EINVAL ); 60 i( dbm -> r_n > gesize ) { 61 `__db_rx ( dbv , 63 ( EINVAL ); 67 i( `LF_ISSET ( DB_RDONLY && th = NULL ) { 68 `__db_rx ( dbv , 70 ( EINVAL ); 73 i( `LF_ISSET ( DB_MULTIVERSION && ! `TXN_ON ( dbv )) { 74 `__db_rx ( dbv , 76 ( EINVAL ); 79 `ENV_ENTER ( dbv , ); 80 `REPLICATION_WRAP ( dbv , 81 ( `__memp_fݒ ( dbm , NULL , th , ags , mode , gesize )), t ); 82 `ENV_LEAVE ( dbv , ); 83 ( t ); 84 } } 94 $__memp_fݒ ( dbm , m , th , ags , mode , pgsize ) 95 DB_MPOOLFILE * dbm ; 96 MPOOLFILE * m ; 97 cڡ * th ; 98 u_t32_t ags ; 99 mode ; 100 size_t pgsize ; 102 DB_ENV * dbv ; 103 DB_MPOOL * dbmp ; 104 DB_MPOOLFILE * tmp_dbm ; 105 DB_MPOOL_HASH * hp ; 106 MPOOL * mp ; 107 MPOOLFILE * loc_m ; 108 size_t maxm ; 109 db_pgno_t ϡ_pgno ; 110 u_t32_t buck , mbys , bys , oags , gesize ; 111 fc , t ; 112 * h ; 115 i( `F_ISSET ( dbm , MP_OPEN_CALLED )) 118 dbv = dbm ->dbenv; 119 dbmp = dbv -> mp_hd ; 120 mp = dbmp -> gfo [0]. imy ; 121 fc = t = 0; 122 mbys = bys = 0; 123 h = NULL ; 124 loc_m = NULL ; 130 gesize = ( u_t32_t ) pgsize ; 140 `DB_ASSERT ( dbv , m = NULL || th == NULL); 142 buck = 0; 143 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 144 i( m = NULL ) { 145 i( th = NULL ) 146 loc ; 167 i( `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE )) 168 buck = `FNBUCKET ( th , ` (path)); 170 buck = `FNBUCKET ( dbm -> feid , DB_FILE_ID_LEN ); 171 hp + buck ; 178 i( `F_ISSET ( dbm , MP_FILEID_SET )) { 179 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 180 t = 181 `__memp_mpf_fd ( dbv , dbm , hp , th , ags ,& m ); 182 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 183 i( t != 0) 184 r ; 185 i( m ! NULL ) 186 fc = 1; 194 `MUTEX_LOCK ( dbv , m -> mux ); 195 i(! m -> ddfe ) { 196 ++ m -> mpf_t ; 197 fc = 1; 199 `MUTEX_UNLOCK ( dbv , m -> mux ); 207 i( m -> ddfe ) 208 ( EINVAL ); 215 i(! `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE )) { 217 oags = 0; 218 i( `LF_ISSET ( DB_CREATE )) 219 oags | DB_OSO_CREATE ; 220 i( `LF_ISSET ( DB_DIRECT )) 221 oags | DB_OSO_DIRECT ; 222 i( `LF_ISSET ( DB_RDONLY )) { 223 `F_SET ( dbm , MP_READONLY ); 224 oags | DB_OSO_RDONLY ; 234 i( `F_ISSET ( dbv , DB_ENV_DSYNC_DB )) 235 oags | DB_OSO_DSYNC ; 248 i( m ! NULL ) { 249 `MPOOL_SYSTEM_LOCK ( dbv ); 250 th = `R_ADDR ( dbmp -> gfo , m -> th_off ); 252 i(( t = `__db_ame ( dbv , 253 DB_APP_DATA , th , 0, NULL , & h )) == 0) 254 t = `__os_ݒ ( dbv , h , 255 ( u_t32_t ) gesize , oags , mode , & dbm -> fhp ); 256 i( m ! NULL ) 257 `MPOOL_SYSTEM_UNLOCK ( dbv ); 258 i( t != 0) 259 r ; 266 dbm -> fhp -> f = 1; 267 i(( t = `__mux_loc ( dbv , MTX_MPOOL_FH , 268 DB_MUTEX_PROCESS_ONLY , & dbm -> fhp -> mtx_fh )) != 0) 269 r ; 283 i(( t = `__os_iofo ( 284 dbv , h , dbm -> fhp , & mbys , & bys , NULL )) != 0) { 285 `__db_r ( dbv , t , "%s", h ); 286 r ; 299 `DB_ASSERT ( dbv , gesize != 0); 300 i( bys % gesize != 0) { 301 i( `LF_ISSET ( DB_ODDFILESIZE )) 302 bys -( u_t32_t )(by% gesize ); 304 `__db_rx ( dbv , 305 "%s: fsiznه muɝ othgesize", h ); 306 t = EINVAL ; 307 r ; 317 i( m = NULL && ! `F_ISSET ( dbm , MP_FILEID_SET )) { 318 i(( t = 319 `__os_feid ( dbv , h , 0, dbm -> feid )) != 0) 320 r ; 321 `F_SET ( dbm , MP_FILEID_SET ); 322 loc ; 326 i( m ! NULL ) 327 have_m ; 336 check : `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 337 i(( t = `__memp_mpf_fd ( dbv , dbm , hp , th , ags , & m ) != 0)) 338 r ; 340 i( loc_m ! NULL && m == NULL) { 341 m = loc_m ; 342 loc_m = NULL ; 343 `SH_TAILQ_INSERT_HEAD (& hp -> hash_buck , m , q , __mpofe ); 344 } i( m ! NULL ) { 360 i(( dbm -> r_n ! DB_CLEARLEN_NOTSET && 361 m -> r_n ! DB_CLEARLEN_NOTSET && 362 dbm -> r_n ! m ->clear_len) || 363 ( gesize !0 &&agesiz! m -> . _gesize ) || 364 ( dbm -> l_offt ! DB_LSN_OFF_NOTSET && 365 m -> l_off ! DB_LSN_OFF_NOTSET && 366 dbm -> l_offt ! m -> l_off )) { 367 `__db_rx ( dbv , 369 th ); 370 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 371 t = EINVAL ; 372 r ; 376 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 377 i( loc_m ! NULL ) { 378 `MUTEX_LOCK ( dbv , loc_m -> mux ); 379 i(( t = `__memp_mf_disrd ( dbmp , loc_m )) != 0) 380 r ; 383 i( m = NULL ) { 388 i( `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE ) && 389 ! `LF_ISSET ( DB_CREATE )) { 390 t = ENOENT ; 391 r ; 394 loc : 399 i( th ! NULL && 400 ! `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE ) && 401 ! `F_ISSET ( dbm , MP_FILEID_SET && ( t = 402 `__os_feid ( dbv , h , 0, dbm -> feid )) != 0) 403 r ; 405 i(( t = `__memp_mpf_loc ( dbmp , 406 dbm , th , gesize , ags , & loc_m )) != 0) 407 r ; 416 `DB_ASSERT ( dbv , gesize != 0); 417 ϡ_pgno = ( db_pgno_t )( mbys * ( MEGABYTE / gesize )); 418 ϡ_pgno +( db_pgno_t )( bys / gesize ); 419 i( ϡ_pgno != 0) 420 -- ϡ_pgno ; 422 loc_m -> ϡ_ushed_pgno =oc_m-> ig_ϡ_pgno = 423 loc_m -> ϡ_pgno =ast_pgno; 425 loc_m -> buck = bucket; 428 i( th ! NULL ) 429 check ; 431 m = loc_m ; 433 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 434 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , m , q ); 435 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 437 have_m : 443 i(! `LF_ISSET ( DB_DURABLE_UNKNOWN | DB_RDONLY )) { 444 i( `F_ISSET ( m , MP_DURABLE_UNKNOWN )) { 445 i( `LF_ISSET ( MP_NOT_DURABLE )) 446 `F_SET ( m , MP_NOT_DURABLE ); 447 `F_CLR ( m , MP_DURABLE_UNKNOWN ); 448 } i(! `LF_ISSET ( DB_TXN_NOT_DURABLE ) != 449 ! `F_ISSET ( m , MP_NOT_DURABLE )) { 450 `__db_rx ( dbv , 452 t = EINVAL ; 453 r ; 457 i( `LF_ISSET ( DB_MULTIVERSION )) { 458 ++ m -> muivsi ; 459 `F_SET ( dbm , MP_MULTIVERSION ); 466 dbm -> m = mfp; 489 #DB_MAXMMAPSIZE (10 * 1024 * 1024 ) 490 i( `F_ISSET ( m , MP_CAN_MMAP )) { 491 maxm = dbv -> mp_mmsize == 0 ? 492 DB_MAXMMAPSIZE : dbv -> mp_mmsize ; 493 i( th = NULL || 494 `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE )) 495 `F_CLR ( m , MP_CAN_MMAP ); 496 i(! `F_ISSET ( dbm , MP_READONLY )) 497 `F_CLR ( m , MP_CAN_MMAP ); 498 i( dbm -> y != 0) 499 `F_CLR ( m , MP_CAN_MMAP ); 500 i( `LF_ISSET ( DB_NOMMAP || `F_ISSET ( dbv , DB_ENV_NOMMAP )) 501 `F_CLR ( m , MP_CAN_MMAP ); 503 `MPOOL_SYSTEM_LOCK ( dbv ); 504 maxm = mp -> mp_mmsize == 0 ? 505 DB_MAXMMAPSIZE : mp -> mp_mmsize ; 506 `MPOOL_SYSTEM_UNLOCK ( dbv ); 507 i( mbys > maxm / MEGABYTE || 508 ( mbys = maxm / MEGABYTE && 509 bys > maxm % MEGABYTE )) 510 `F_CLR ( m , MP_CAN_MMAP ); 513 dbm -> addr = NULL ; 514 i( `F_ISSET ( m , MP_CAN_MMAP )) { 515 dbm -> n = ( size_t ) mbys * MEGABYTE + bys ; 516 i( `__os_mfe ( dbv , h , 517 dbm -> fhp , dbm-> n , 1, &dbm-> addr ) != 0) { 518 dbm -> addr = NULL ; 519 `F_CLR ( m , MP_CAN_MMAP ); 524 `F_SET ( dbm , MP_OPEN_CALLED ); 531 `MUTEX_LOCK ( dbv , dbmp -> mux ); 533 i( dbm -> fhp ! NULL ) 534 `TAILQ_FOREACH ( tmp_dbm , & dbmp -> dbmfq , q ) 535 i( dbm -> m = tmp_dbm ->mfp && 536 ( `F_ISSET ( dbm , MP_READONLY ) || 537 ! `F_ISSET ( tmp_dbm , MP_READONLY ))) { 538 () `__mux_ ( dbv , & dbm -> fhp -> mtx_fh ); 539 () `__os_ohd ( dbv , dbm -> fhp ); 540 ++ tmp_dbm -> fhp -> f ; 541 dbm -> fhp = tmp_dbm ->fhp; 545 `TAILQ_INSERT_TAIL (& dbmp -> dbmfq , dbm , q ); 547 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 550 r : i( fc ) { 557 `MUTEX_LOCK ( dbv , m -> mux ); 558 -- m -> mpf_t ; 559 `MUTEX_UNLOCK ( dbv , m -> mux ); 563 i( h ! NULL ) 564 `__os_ ( dbv , h ); 565 ( t ); 566 } } 573 $__memp_mpf_fd ( dbv , dbm , hp , th , ags , mp ) 574 DB_ENV * dbv ; 575 DB_MPOOLFILE * dbm ; 576 DB_MPOOL_HASH * hp ; 577 cڡ * th ; 578 u_t32_t ags ; 579 MPOOLFILE ** mp ; 581 DB_MPOOL * dbmp ; 582 MPOOLFILE * m ; 584 dbmp = dbv -> mp_hd ; 586 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 588 i( m -> ddfe || `F_ISSET (m, MP_TEMP )) 596 i( `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE )) { 597 i(! m -> no_backg_fe ) 600 i( `rcmp ( th , `R_ADDR ( dbmp -> gfo , m -> th_off ))) 607 i(! `F_ISSET ( dbm , MP_FILEID_SET )) 608 () `__memp_t_feid ( dbm , 609 `R_ADDR ( dbmp -> gfo , m -> feid_off )); 611 i( `memcmp ( dbm -> feid , `R_ADDR ( dbmp -> gfo , 612 m -> feid_off ), DB_FILE_ID_LEN ) != 0) 623 i( `LF_ISSET ( DB_TRUNCATE )) { 624 `MUTEX_LOCK ( dbv , m -> mux ); 625 m -> ddfe = 1; 626 `MUTEX_UNLOCK ( dbv , m -> mux ); 642 `MUTEX_LOCK ( dbv , m -> mux ); 643 i( m -> ddfe ) { 644 `MUTEX_UNLOCK ( dbv , m -> mux ); 647 ++ m -> mpf_t ; 648 `MUTEX_UNLOCK ( dbv , m -> mux ); 651 i( dbm -> y != 0) 652 m -> y = dbm ->ftype; 653 i( dbm -> r_n ! DB_CLEARLEN_NOTSET ) 654 m -> r_n = dbm ->clear_len; 655 i( dbm -> l_offt != -1) 656 m -> l_off = dbm -> l_offt ; 661 * mp = m ; 663 } } 666 $__memp_mpf_loc ( dbmp , dbm , th , gesize , ags , tm ) 667 DB_MPOOL * dbmp ; 668 DB_MPOOLFILE * dbm ; 669 cڡ * th ; 670 u_t32_t gesize ; 671 u_t32_t ags ; 672 MPOOLFILE ** tm ; 674 DB_ENV * dbv ; 675 MPOOLFILE * m ; 676 t ; 677 * p ; 679 dbv = dbmp ->dbenv; 680 t = 0; 682 i(( t = `__memp_loc ( dbmp , 683 dbmp -> gfo , NULL , ( MPOOLFILE ), NULL, & m )) != 0) 684 r ; 685 `memt ( m , 0, ( MPOOLFILE )); 686 m -> mpf_t = 1; 687 m -> y = dbm ->ftype; 688 m -> . _gesize = gesize ; 689 m -> l_off = dbm -> l_offt ; 690 m -> r_n = dbm ->clear_len; 691 m -> iܙy = dbm ->priority; 692 i( dbm -> gbys !0 || dbm-> bys != 0) { 693 m -> maxpgno = ( db_pgno_t ) 694 ( dbm -> gbys * ( GIGABYTE / m -> . _gesize )); 695 m -> maxpgno +( db_pgno_t ) 696 (( dbm -> bys + m -> . _gesize - 1) / 697 m -> . _gesize ); 699 i( `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE )) 700 m -> no_backg_fe = 1; 701 i( `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_UNLINK )) 702 m -> uƚk__o = 1; 704 i( `LF_ISSET ( DB_DURABLE_UNKNOWN | DB_RDONLY )) 705 `F_SET ( m , MP_DURABLE_UNKNOWN ); 706 i( `LF_ISSET ( DB_DIRECT )) 707 `F_SET ( m , MP_DIRECT ); 708 i( `LF_ISSET ( DB_EXTENT )) 709 `F_SET ( m , MP_EXTENT ); 710 i( `LF_ISSET ( DB_TXN_NOT_DURABLE )) 711 `F_SET ( m , MP_NOT_DURABLE ); 712 `F_SET ( m , MP_CAN_MMAP ); 720 i( th = NULL ) 721 `F_SET ( m , MP_TEMP ); 722 i( `FLD_ISSET ( dbm -> cfig_ags , DB_MPOOL_NOFILE )) 723 m -> mpf_t ++; 726 i( `F_ISSET ( dbm , MP_FILEID_SET )) { 727 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 728 NULL , DB_FILE_ID_LEN , & m -> feid_off , & p )) != 0) 729 r ; 730 `memy ( p , dbm -> feid , DB_FILE_ID_LEN ); 734 i( th ! NULL ) { 735 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 736 NULL , ` ( th + 1, & m -> th_off , & p )) != 0) 737 r ; 738 `memy ( p , th , ` (path) + 1); 742 i( dbm -> pgcook = NULL || dbm->pgcook-> size == 0) { 743 m -> pgcook_n = 0; 744 m -> pgcook_off = 0; 746 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 747 NULL , dbm -> pgcook -> size , 748 & m -> pgcook_off , & p )) != 0) 749 r ; 750 `memy ( p , 751 dbm -> pgcook -> da , dbm->pgcook-> size ); 752 m -> pgcook_n = dbm -> pgcook -> size ; 755 i(( t = `__mux_loc ( dbv , 756 MTX_MPOOLFILE_HANDLE , 0, & m -> mux )) != 0) 757 r ; 758 * tm = m ; 760 r : ( t ); 761 } } 770 $__memp_fo_ ( dbm , ags ) 771 DB_MPOOLFILE * dbm ; 772 u_t32_t ags ; 774 DB_ENV * dbv ; 775 DB_THREAD_INFO * ; 776 t ; 778 dbv = dbm ->dbenv; 783 i( ags != 0) 784 () `__db_ ( dbv , "DB_MPOOLFILE->close", 0); 786 `ENV_ENTER ( dbv , ); 787 `REPLICATION_WRAP ( dbv , ( `__memp_fo ( dbm , 0)), t ); 788 `ENV_LEAVE ( dbv , ); 789 ( t ); 790 } } 799 $__memp_fo ( dbm , ags ) 800 DB_MPOOLFILE * dbm ; 801 u_t32_t ags ; 803 DB_ENV * dbv ; 804 DB_MPOOL * dbmp ; 805 MPOOLFILE * m ; 806 * h ; 807 u_t32_t f ; 808 ded , t , t_t ; 810 dbv = dbm ->dbenv; 811 dbmp = dbv -> mp_hd ; 812 t = 0; 823 i( dbmp = NULL ) 824 de ; 826 `MUTEX_LOCK ( dbv , dbmp -> mux ); 828 `DB_ASSERT ( dbv , dbm -> f >= 1); 829 i(( f = -- dbm ->f=0 && `F_ISSET (dbm, MP_OPEN_CALLED )) 830 `TAILQ_REMOVE (& dbmp -> dbmfq , dbm , q ); 836 i( f =0 && dbm -> fhp ! NULL && --dbmfp->fhp->ref > 0) 837 dbm -> fhp = NULL ; 838 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 839 i( f != 0) 843 i( dbm -> pf != 0) { 844 `__db_rx ( dbv , "%s: close: %lu blockseftinned", 845 `__memp_ ( dbm ), ( u_lg )dbm-> pf ); 846 t = `__db_nic ( dbv , DB_RUNRECOVERY ); 850 i( dbm -> addr ! NULL && 851 ( t = `__os_unmfe ( dbv , dbm -> addr , dbm-> n )) != 0) 852 `__db_r ( dbv , t , "%s", `__memp_ ( dbm )); 858 i( dbm -> fhp ! NULL ) { 859 i(( t_t = 860 `__mux_ ( dbv , & dbm -> fhp -> mtx_fh )!0 && t == 0) 861 t = t_t ; 862 i(( t_t = `__os_ohd ( dbv , dbm -> fhp )) != 0) { 863 `__db_r ( dbv , t_t , "%s", `__memp_ ( dbm )); 864 i( t == 0) 865 t = t_t ; 867 dbm -> fhp = NULL ; 876 m = dbm ->mfp; 877 `DB_ASSERT ( dbv , 878 ( `F_ISSET ( dbm , MP_OPEN_CALLED && m ! NULL ) || 879 (! `F_ISSET ( dbm , MP_OPEN_CALLED && m = NULL )); 880 i(! `F_ISSET ( dbm , MP_OPEN_CALLED )) 881 de ; 890 ded = 0; 891 `MUTEX_LOCK ( dbv , m -> mux ); 892 i( `F_ISSET ( dbm , MP_MULTIVERSION )) 893 -- m -> muivsi ; 894 i(-- m -> mpf_t =0 || `LF_ISSET ( DB_MPOOL_DISCARD )) { 895 i( `LF_ISSET ( DB_MPOOL_DISCARD ) || 896 `F_ISSET ( m , MP_TEMP || m-> uƚk__o ) { 897 m -> ddfe = 1; 899 i( m -> uƚk__o ) { 900 i(( t_t = `__db_ame ( dbmp -> dbv , 901 DB_APP_DATA , `R_ADDR ( dbmp -> gfo , 902 m -> th_off ), 0, NULL , & h )!0 && t == 0) 903 t = t_t ; 904 i( t_t == 0) { 905 i(( t_t = `__os_uƚk ( 906 dbmp -> dbv , h )!0 && t == 0) 907 t = t_t ; 908 `__os_ ( dbv , h ); 911 i( m -> block_t == 0) { 912 i(( t_t = 913 `__memp_mf_disrd ( dbmp , m )!0 && t == 0) 914 t = t_t ; 915 ded = 1; 918 i(! ded ) 919 `MUTEX_UNLOCK ( dbv , m -> mux ); 921 de : 922 i( dbm -> pgcook ! NULL ) { 923 `__os_ ( dbv , dbm -> pgcook -> da ); 924 `__os_ ( dbv , dbm -> pgcook ); 926 `__os_ ( dbv , dbm ); 928 ( t ); 929 } } 938 $__memp_mf_disrd ( dbmp , m ) 939 DB_MPOOL * dbmp ; 940 MPOOLFILE * m ; 942 DB_ENV * dbv ; 943 DB_MPOOL_HASH * hp ; 944 #ifde HAVE_STATISTICS 945 DB_MPOOL_STAT * ; 947 MPOOL * mp ; 948 ed_sync , t , t_t ; 950 dbv = dbmp ->dbenv; 951 mp = dbmp -> gfo [0]. imy ; 952 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 953 hp + m -> buck ; 954 t = 0; 965 ed_sync = 966 m -> fe_wrn && !m-> ddfe && ! `F_ISSET (m, MP_TEMP ); 973 m -> ddfe = 1; 976 `MUTEX_UNLOCK ( dbv , m -> mux ); 977 i(( t_t = `__mux_ ( dbv , & m -> mux )!0 && t == 0) 978 t = t_t ; 981 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 982 `SH_TAILQ_REMOVE (& hp -> hash_buck , m , q , __mpofe ); 983 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 986 `MPOOL_SYSTEM_LOCK ( dbv ); 987 i( ed_sync && 988 ( t_t = `__memp_mf_sync ( dbmp , m , 0)!0 && t == 0) 989 t = t_t ; 991 #ifde HAVE_STATISTICS 993 = & mp -> ; 994 -> _che_h + m -> .st_cache_hit; 995 -> _che_miss + m -> .st_cache_miss; 996 -> _m + m -> .st_map; 997 -> _ge_ + m -> .st_page_create; 998 -> _ge_ + m -> .st_page_in; 999 -> _ge_out + m -> .st_page_out; 1003 i( m -> th_off != 0) 1004 `__memp_ (& dbmp -> gfo [0], NULL , 1005 `R_ADDR ( dbmp -> gfo , m -> th_off )); 1006 i( m -> feid_off != 0) 1007 `__memp_ (& dbmp -> gfo [0], NULL , 1008 `R_ADDR ( dbmp -> gfo , m -> feid_off )); 1009 i( m -> pgcook_off != 0) 1010 `__memp_ (& dbmp -> gfo [0], NULL , 1011 `R_ADDR ( dbmp -> gfo , m -> pgcook_off )); 1012 `__memp_ (& dbmp -> gfo [0], NULL , m ); 1014 `MPOOL_SYSTEM_UNLOCK ( dbv ); 1016 ( t ); 1017 } } 1026 $__memp_memli ( dbv , me , ) 1027 DB_ENV * dbv ; 1028 *** me ; 1029 * ; 1031 DB_MPOOL * dbmp ; 1032 DB_MPOOL_HASH * hp ; 1033 MPOOL * mp ; 1034 MPOOLFILE * m ; 1035 ysz , t , i , t ; 1036 ** mes ; 1038 mes = NULL ; 1039 dbmp = dbv -> mp_hd ; 1040 mp = dbmp -> gfo [0]. imy ; 1041 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 1043 ysz = t = 0; 1044 i = 0; i < MPOOL_FILE_BUCKETS ; i++, hp ++) { 1045 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 1046 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 1048 i( m -> ddfe || `F_ISSET (m, MP_TEMP )) 1052 i(! m -> no_backg_fe ) 1056 i( t > ysz ) { 1057 ysz += 100; 1058 i(( t = `__os_loc ( dbv , 1059 ( u_t ) ysz * ( mes [0]), 1060 & mes )) != 0) 1061 nomem ; 1063 i(( t = `__os_rdup ( dbv , 1064 `R_ADDR ( dbmp -> gfo , m -> th_off ), 1065 & mes [ t ])) != 0) 1066 nomem ; 1068 t ++; 1070 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 1072 * me = mes ; 1073 * = t ; 1076 nomem : `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 1077 i( mes ! NULL ) { 1078 -- t >= 0) 1079 `__os_ ( dbv , mes [ t ]); 1080 `__os_ ( dbv , mes ); 1084 * = 0; 1085 * me = NULL ; 1086 ( t ); 1087 } } @../mp/mp_fput.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 15 __memp_t_u __P (( DB_ENV *, REGINFO *)); 25 $__memp_ut_ ( dbm , pgaddr , iܙy , ags ) 26 DB_MPOOLFILE * dbm ; 27 * pgaddr ; 28 DB_CACHE_PRIORITY iܙy ; 29 u_t32_t ags ; 31 DB_ENV * dbv ; 32 DB_THREAD_INFO * ; 33 t , t_t ; 35 dbv = dbm ->dbenv; 36 `PANIC_CHECK ( dbv ); 37 i( ags != 0) 38 ( `__db_ ( dbv , "DB_MPOOLFILE->put", 0)); 40 `MPF_ILLEGAL_BEFORE_OPEN ( dbm , "DB_MPOOLFILE->put"); 42 `ENV_ENTER ( dbv , ); 44 t = `__memp_ut ( dbm , pgaddr , iܙy ); 45 i( `IS_ENV_REPLICATED ( dbv ) && 46 ( t_t = `___p_ex ( dbv )!0 && t == 0) 47 t = t_t ; 49 `ENV_LEAVE ( dbv , ); 50 ( t ); 51 } } 60 $__memp_ut ( dbm , pgaddr , iܙy ) 61 DB_MPOOLFILE * dbm ; 62 * pgaddr ; 63 DB_CACHE_PRIORITY iܙy ; 65 BH * bhp ; 66 DB_ENV * dbv ; 67 DB_MPOOL * dbmp ; 68 DB_MPOOL_HASH * hp ; 69 MPOOL * c_mp ; 70 MPOOLFILE * m ; 71 REGINFO * f ; 72 adju , p , t , t_t ; 74 dbv = dbm ->dbenv; 75 dbmp = dbv -> mp_hd ; 76 m = dbm ->mfp; 77 bhp = ( BH *)(( u_t8_t *) pgaddr - `SSZA (BH, buf )); 78 t = 0; 86 i( dbm -> addr ! NULL && pgaddr >= dbmfp->addr && 87 ( u_t8_t *) pgaddr <(u_t8_*) dbm -> addr + dbm-> n ) 90 #ifde DIAGNOSTIC 95 `MPOOL_SYSTEM_LOCK ( dbv ); 96 i( dbm -> pf == 0) { 97 `MPOOL_SYSTEM_UNLOCK ( dbv ); 98 `__db_rx ( dbv , 99 "%s: mܐgetuedhrved", `__memp_ ( dbm )); 100 ( `__db_nic ( dbv , EACCES )); 102 -- dbm -> pf ; 103 `MPOOL_SYSTEM_UNLOCK ( dbv ); 107 `MP_GET_BUCKET ( dbm , bhp -> pgno , & f , hp , t ); 108 i( t != 0) 109 ( t ); 110 c_mp = f -> imy ; 116 i( bhp -> f == 0) { 117 `__db_rx ( dbv , "%s:age %lu: unpinnedageeturned", 118 `__memp_ ( dbm ), ( u_lg ) bhp -> pgno ); 119 `DB_ASSERT ( dbv , bhp -> f != 0); 120 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 121 ( `__db_nic ( dbv , EACCES )); 125 ++ c_mp -> put_cou ; 128 i( `F_ISSET ( bhp , BH_DIRTY )) { 129 m -> fe_wrn = 1; 131 `DB_ASSERT ( dbv , ! `SH_CHAIN_HASNEXT ( bhp , vc )); 139 i(-- bhp -> f > 1 || (bhp->=1 && ! `F_ISSET (bhp, BH_LOCKED ))) { 140 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 145 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 0); 148 i( iܙy = DB_PRIORITY_VERY_LOW || 149 m -> iܙy = MPOOL_PRI_VERY_LOW ) 150 bhp -> iܙy = 0; 157 bhp -> iܙy = c_mp -> u_cou ; 159 iܙy ) { 161 DB_PRIORITY_UNCHANGED : 162 p = m -> iܙy ; 164 DB_PRIORITY_VERY_LOW : 165 p = MPOOL_PRI_VERY_LOW ; 167 DB_PRIORITY_LOW : 168 p = MPOOL_PRI_LOW ; 170 DB_PRIORITY_DEFAULT : 171 p = MPOOL_PRI_DEFAULT ; 173 DB_PRIORITY_HIGH : 174 p = MPOOL_PRI_HIGH ; 176 DB_PRIORITY_VERY_HIGH : 177 p = MPOOL_PRI_VERY_HIGH ; 181 adju = 0; 182 i( p != 0) 183 adju = () c_mp -> . _ges / p ; 185 i( `F_ISSET ( bhp , BH_DIRTY )) 186 adju +() c_mp -> . _ges / MPOOL_PRI_DIRTY ; 188 i( adju > 0) { 189 i( UINT32_MAX - bhp -> iܙy >( u_t32_t ) adju ) 190 bhp -> iܙy + adju ; 191 } i( adju < 0) 192 i( bhp -> iܙy > ( u_t32_t )- adju ) 193 bhp -> iܙy + adju ; 196 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh ) == 197 `SH_TAILQ_LAST (& hp -> hash_buck , hq , __bh )) 198 hp -> hash_iܙy = `BH_PRIORITY ( bhp ); 200 `__memp_buck_d ( dbv , hp , bhp ); 201 #ifde DIAGNOSTIC 202 `__memp_check_d ( dbv , hp ); 213 i( `F_ISSET ( bhp , BH_LOCKED && bhp-> f_sync != 0) 214 -- bhp -> f_sync ; 216 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 222 i(++ c_mp -> u_cou = UINT32_MAX ) 223 i(( t_t = 224 `__memp_t_u ( dbv , dbmp -> gfo )!0 && t == 0) 225 t = t_t ; 227 ( t ); 228 } } 235 $__memp_t_u ( dbv , f ) 236 DB_ENV * dbv ; 237 REGINFO * f ; 239 BH * bhp , * tbhp ; 240 DB_MPOOL_HASH * hp ; 241 MPOOL * c_mp ; 242 u_t32_t buck , iܙy ; 244 c_mp = f -> imy ; 249 c_mp -> u_cou - MPOOL_BASE_DECREMENT ; 252 hp = `R_ADDR ( f , c_mp -> hb ), 253 buck = 0; buck < c_mp -> hb_bucks ; ++ hp , ++bucket) { 260 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh = NULL ) { 261 c_mp -> u_t ++; 265 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 266 c_mp -> u_t ++; 272 iܙy = 0; 273 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 274 tbhp = bhp ;bh! NULL ; 275 tbhp = `SH_CHAIN_PREV bhp, vc , __bh )) { 276 i( tbhp -> iܙy ! UINT32_MAX && 277 tbhp -> iܙy > MPOOL_BASE_DECREMENT ) { 278 tbhp -> iܙy - MPOOL_BASE_DECREMENT ; 279 i( tbhp -> iܙy <riority) 280 tbhp -> iܙy =riority; 283 iܙy = bhp ->priority; 289 i(( tbhp = 290 `SH_TAILQ_FIRST (& hp -> hash_buck , __bh )! NULL ) 291 hp -> hash_iܙy = `BH_PRIORITY ( tbhp ); 292 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 294 c_mp -> u_t = 0; 296 `COMPQUIET ( dbv , NULL ); 298 } } @../mp/mp_fset.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 14 ~"dbc/txn.h " 24 $__memp_dty ( dbm , add , txn , iܙy , ags ) 25 DB_MPOOLFILE * dbm ; 26 * add ; 27 DB_TXN * txn ; 28 DB_CACHE_PRIORITY iܙy ; 29 u_t32_t ags ; 31 BH * bhp ; 32 DB_ENV * dbv ; 33 DB_MPOOL_HASH * hp ; 34 DB_TXN * ; 35 #ifde DIAG_MVCC 36 MPOOLFILE * m ; 38 REGINFO * f ; 39 mvcc , t ; 40 db_pgno_t pgno ; 41 * pgaddr ; 43 dbv = dbm ->dbenv; 44 pgaddr = *(**) add ; 45 mvcc = dbm -> m -> muivsi ; 48 bhp = ( BH *)(( u_t8_t *) pgaddr - `SSZA (BH, buf )); 49 pgno = bhp ->pgno; 51 i( ags == 0) 52 ags = DB_MPOOL_DIRTY ; 53 `DB_ASSERT ( dbv , ags = DB_MPOOL_DIRTY || fg= DB_MPOOL_EDIT ); 55 i( `F_ISSET ( dbm , MP_READONLY )) { 56 `__db_rx ( dbv , "%s: dirty flag set foreadonly fileage", 57 `__memp_ ( dbm )); 58 ( EACCES ); 61 = txn ; 62 ! NULL &&n-> != NULL; 63 =n-> ) 66 i( mvcc && txn ! NULL && 67 (! `BH_OWNED_BY ( dbv , bhp , || `SH_CHAIN_HASNEXT (bhp, vc ))) { 68 ow : i(( t = `__memp_fg ( dbm , 69 & pgno , txn , ags , add )) != 0) { 70 i( t ! DB_LOCK_DEADLOCK ) 71 `__db_rx ( dbv , 73 `__memp_ ( dbm )); 74 *(**) add = pgaddr ; 75 ( t ); 78 `DB_ASSERT ( dbv , 79 ( ags = DB_MPOOL_EDIT && *(**) add = pgaddr ) || 80 ( ags ! DB_MPOOL_EDIT && *(**) add ! pgaddr )); 82 i(( t = `__memp_ut ( dbm , pgaddr , iܙy )) != 0) { 83 `__db_rx ( dbv , 85 `__memp_ ( dbm )); 86 () `__memp_ut ( dbm , *(**) add , iܙy ); 87 *(**) add = NULL ; 88 ( t ); 90 pgaddr = *(**) add ; 91 bhp = ( BH *)(( u_t8_t *) pgaddr - `SSZA (BH, buf )); 92 `DB_ASSERT ( dbv , pgno = bhp ->pgno); 96 `MP_GET_BUCKET ( dbm , pgno , & f , hp , t ); 97 i( t != 0) 98 ( t ); 101 i( mvcc && txn ! NULL && `SH_CHAIN_HASNEXT ( bhp , vc )) { 102 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 103 ow ; 107 i(! `F_ISSET ( bhp , BH_DIRTY )) { 108 ++ hp -> hash_ge_dty ; 109 `F_SET ( bhp , BH_DIRTY ); 111 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 113 #ifde DIAG_MVCC 114 m = `R_ADDR ( dbv -> mp_hd -> gfo , bhp -> mf_offt ); 115 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , PROT_READ | PROT_WRITE ); 118 } } @../mp/mp_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/hash.h " 23 $__memp_v_ ( dbv ) 24 DB_ENV * dbv ; 39 dbv -> mp_bys = dbv-> mp_max_bys = 40 32 * ((8 * 1024+ ( BH )+ 37 * ( DB_MPOOL_HASH ); 41 dbv -> mp_nche = 1; 44 } } 53 $__memp_v_deroy ( dbv ) 54 DB_ENV * dbv ; 56 `COMPQUIET ( dbv , NULL ); 57 } } 67 $__memp_g_chesize ( dbv , gby , by , nch ) 68 DB_ENV * dbv ; 69 u_t32_t * gby , * by ; 70 * nch ; 72 MPOOL * mp ; 74 `ENV_NOT_CONFIGURED ( dbv , 75 dbv -> mp_hd , "DB_ENV->g_chesize", DB_INIT_MPOOL ); 77 i( `MPOOL_ON ( dbv )) { 79 mp = dbv -> mp_hd -> gfo [0]. imy ; 80 i( gby ! NULL ) 81 * gby = mp -> . _gbys ; 82 i( by ! NULL ) 83 * by = mp -> . _bys ; 84 i( nch ! NULL ) 85 * nch = () mp -> eg ; 87 i( gby ! NULL ) 88 * gby = dbv -> mp_gbys ; 89 i( by ! NULL ) 90 * by = dbv -> mp_bys ; 91 i( nch ! NULL ) 92 * nch = () dbv -> mp_nche ; 95 } } 104 $__memp_t_chesize ( dbv , gbys , bys , g_nche ) 105 DB_ENV * dbv ; 106 u_t32_t gbys , bys ; 107 g_nche ; 109 u_t nche ; 112 nche = g_nche <0 ? 1 : ( u_t )arg_ncache; 118 i(( roff_t =4 && gbys / nche =4 && bys == 0) { 119 -- gbys ; 120 bys = GIGABYTE - 1; 122 gbys + bys / GIGABYTE ; 123 bys % GIGABYTE ; 133 i(! `F_ISSET ( dbv , DB_ENV_OPEN_CALLED )) { 134 i(( roff_t <4 && gbys / nche >= 4) { 135 `__db_rx ( dbv , 137 ( EINVAL ); 139 i( gbys / nche > 10000) { 140 `__db_rx ( dbv , 142 ( EINVAL ); 157 i( gbys == 0) { 158 i( bys < 500 * MEGABYTE ) 159 bys +(by/ 4+ 37 * ( DB_MPOOL_HASH ); 160 i( bys / nche < DB_CACHESIZE_MIN ) 161 bys = nche * DB_CACHESIZE_MIN ; 164 i( `F_ISSET ( dbv , DB_ENV_OPEN_CALLED )) 165 ( `__memp_size ( dbv -> mp_hd , gbys , bys )); 167 dbv -> mp_gbys = gbys ; 168 dbv -> mp_bys = bys ; 169 dbv -> mp_nche = nche ; 172 } } 181 $__memp_t_cfig ( dbv , which , ) 182 DB_ENV * dbv ; 183 u_t32_t which ; 184 ; 186 DB_MPOOL * dbmp ; 187 MPOOL * mp ; 189 `ENV_NOT_CONFIGURED ( dbv , 190 dbv -> mp_hd , "DB_ENV->memp_t_cfig", DB_INIT_MPOOL ); 192 which ) { 193 DB_MEMP_SUPPRESS_WRITE : 194 DB_MEMP_SYNC_INTERRUPT : 195 i( `MPOOL_ON ( dbv )) { 196 dbmp = dbv -> mp_hd ; 197 mp = dbmp -> gfo [0]. imy ; 198 i( ) 199 `FLD_SET ( mp -> cfig_ags , which ); 201 `FLD_CLR ( mp -> cfig_ags , which ); 205 ( EINVAL ); 208 } } 217 $__memp_g_cfig ( dbv , which , p ) 218 DB_ENV * dbv ; 219 u_t32_t which ; 220 * p ; 222 DB_MPOOL * dbmp ; 223 MPOOL * mp ; 225 `ENV_REQUIRES_CONFIG ( dbv , 226 dbv -> mp_hd , "DB_ENV->memp_g_cfig", DB_INIT_MPOOL ); 228 which ) { 229 DB_MEMP_SUPPRESS_WRITE : 230 DB_MEMP_SYNC_INTERRUPT : 231 i( `MPOOL_ON ( dbv )) { 232 dbmp = dbv -> mp_hd ; 233 mp = dbmp -> gfo [0]. imy ; 234 * p = `FLD_ISSET ( mp -> cfig_ags , which ) ? 1 : 0; 236 * p = 0; 239 ( EINVAL ); 242 } } 248 $__memp_g_mp_max_ݒfd ( dbv , maxݒfdp ) 249 DB_ENV * dbv ; 250 * maxݒfdp ; 252 DB_MPOOL * dbmp ; 253 MPOOL * mp ; 255 `ENV_NOT_CONFIGURED ( dbv , 256 dbv -> mp_hd , "DB_ENV->g_mp_max_ݒfd", DB_INIT_MPOOL ); 258 i( `MPOOL_ON ( dbv )) { 259 dbmp = dbv -> mp_hd ; 260 mp = dbmp -> gfo [0]. imy ; 261 `MPOOL_SYSTEM_LOCK ( dbv ); 262 * maxݒfdp = mp -> mp_maxݒfd ; 263 `MPOOL_SYSTEM_UNLOCK ( dbv ); 265 * maxݒfdp = dbv -> mp_maxݒfd ; 267 } } 275 $__memp_t_mp_max_ݒfd ( dbv , maxݒfd ) 276 DB_ENV * dbv ; 277 maxݒfd ; 279 DB_MPOOL * dbmp ; 280 MPOOL * mp ; 282 `ENV_NOT_CONFIGURED ( dbv , 283 dbv -> mp_hd , "DB_ENV->t_mp_max_ݒfd", DB_INIT_MPOOL ); 285 i( `MPOOL_ON ( dbv )) { 286 dbmp = dbv -> mp_hd ; 287 mp = dbmp -> gfo [0]. imy ; 288 `MPOOL_SYSTEM_LOCK ( dbv ); 289 mp -> mp_maxݒfd = maxݒfd ; 290 `MPOOL_SYSTEM_UNLOCK ( dbv ); 292 dbv -> mp_maxݒfd = maxݒfd ; 294 } } 300 $__memp_g_mp_max_wre ( dbv , maxwr , maxwre_ ) 301 DB_ENV * dbv ; 302 * maxwr ; 303 db_timeout_t * maxwre_ ; 305 DB_MPOOL * dbmp ; 306 MPOOL * mp ; 308 `ENV_NOT_CONFIGURED ( dbv , 309 dbv -> mp_hd , "DB_ENV->g_mp_max_wre", DB_INIT_MPOOL ); 311 i( `MPOOL_ON ( dbv )) { 312 dbmp = dbv -> mp_hd ; 313 mp = dbmp -> gfo [0]. imy ; 314 `MPOOL_SYSTEM_LOCK ( dbv ); 315 * maxwr = mp -> mp_maxwre ; 316 * maxwre_ = mp -> mp_maxwre_p ; 317 `MPOOL_SYSTEM_UNLOCK ( dbv ); 319 * maxwr = dbv -> mp_maxwre ; 320 * maxwre_ = dbv -> mp_maxwre_p ; 323 } } 332 $__memp_t_mp_max_wre ( dbv , maxwre , maxwre_p ) 333 DB_ENV * dbv ; 334 maxwre ; 335 db_timeout_t maxwre_p ; 337 DB_MPOOL * dbmp ; 338 MPOOL * mp ; 340 `ENV_NOT_CONFIGURED ( dbv , 341 dbv -> mp_hd , "DB_ENV->g_mp_max_wre", DB_INIT_MPOOL ); 343 i( `MPOOL_ON ( dbv )) { 344 dbmp = dbv -> mp_hd ; 345 mp = dbmp -> gfo [0]. imy ; 346 `MPOOL_SYSTEM_LOCK ( dbv ); 347 mp -> mp_maxwre = maxwre ; 348 mp -> mp_maxwre_p = maxwre_p ; 349 `MPOOL_SYSTEM_UNLOCK ( dbv ); 351 dbv -> mp_maxwre = maxwre ; 352 dbv -> mp_maxwre_p = maxwre_p ; 355 } } 361 $__memp_g_mp_mmsize ( dbv , mp_mmsiz ) 362 DB_ENV * dbv ; 363 size_t * mp_mmsiz ; 365 DB_MPOOL * dbmp ; 366 MPOOL * mp ; 368 `ENV_NOT_CONFIGURED ( dbv , 369 dbv -> mp_hd , "DB_ENV->g_mp_max_mmsize", DB_INIT_MPOOL ); 371 i( `MPOOL_ON ( dbv )) { 372 dbmp = dbv -> mp_hd ; 373 mp = dbmp -> gfo [0]. imy ; 374 `MPOOL_SYSTEM_LOCK ( dbv ); 375 * mp_mmsiz = mp -> mp_mmsize ; 376 `MPOOL_SYSTEM_UNLOCK ( dbv ); 378 * mp_mmsiz = dbv -> mp_mmsize ; 380 } } 389 $__memp_t_mp_mmsize ( dbv , mp_mmsize ) 390 DB_ENV * dbv ; 391 size_t mp_mmsize ; 393 DB_MPOOL * dbmp ; 394 MPOOL * mp ; 396 `ENV_NOT_CONFIGURED ( dbv , 397 dbv -> mp_hd , "DB_ENV->g_mp_max_mmsize", DB_INIT_MPOOL ); 399 i( `MPOOL_ON ( dbv )) { 400 dbmp = dbv -> mp_hd ; 401 mp = dbmp -> gfo [0]. imy ; 402 `MPOOL_SYSTEM_LOCK ( dbv ); 403 mp -> mp_mmsize = mp_mmapsize; 404 `MPOOL_SYSTEM_UNLOCK ( dbv ); 406 dbv -> mp_mmsize = mp_mmapsize; 408 } } 421 $__memp_me ( dbv , feid , wme , fud , fuw , mem ) 422 DB_ENV * dbv ; 423 u_t8_t * feid ; 424 cڡ * wme , * fud , * fuw ; 425 mem ; 427 DB_MPOOL * dbmp ; 428 DB_MPOOL_HASH * hp , * nhp ; 429 MPOOL * mp ; 430 MPOOLFILE * m ; 431 roff_t wme_off ; 432 u_t32_t buck ; 433 locked , t ; 434 size_t ƒ ; 435 * p ; 437 #unde _is_move 438 #_is_move ( wme = NULL ) ) 440 `COMPQUIET ( buck , 0); 441 `COMPQUIET ( hp , NULL ); 442 `COMPQUIET ( wme_off , 0); 443 `COMPQUIET ( ƒ , 0); 445 dbmp = NULL ; 446 m = NULL ; 447 nhp = NULL ; 448 p = NULL ; 449 locked = t = 0; 451 i(! `MPOOL_ON ( dbv )) 452 fs ; 454 dbmp = dbv -> mp_hd ; 455 mp = dbmp -> gfo [0]. imy ; 456 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 458 i(! _is_move ) { 459 ƒ = ` ( wme ); 460 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 461 NULL , ƒ + 1, & wme_off , & p )) != 0) 462 ( t ); 463 `memy ( p , wme , ƒ + 1); 478 i( mem ) { 479 `DB_ASSERT ( dbv , fud ! NULL ); 480 hp + `FNBUCKET ( fud , ` (fullold)); 481 i(! _is_move ) { 482 buck = `FNBUCKET ( wme , ƒ ); 483 nhp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 484 nhp + buck ; 487 hp + `FNBUCKET ( feid , DB_FILE_ID_LEN ); 489 i( nhp ! NULL &&h< hp ) 490 `MUTEX_LOCK ( dbv , nhp -> mtx_hash ); 491 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 492 i( nhp ! NULL &&h> hp ) 493 `MUTEX_LOCK ( dbv , nhp -> mtx_hash ); 494 locked = 1; 496 i(! _is_move && mem ) { 497 `SH_TAILQ_FOREACH ( m , & nhp -> hash_buck , q , __mpofe ) 498 i(! m -> ddfe && 499 m -> no_backg_fe && `rcmp ( wme , 500 `R_ADDR ( dbmp -> gfo , m -> th_off )) == 0) 502 i( m ! NULL ) { 503 t = EEXIST ; 504 r ; 512 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 514 i( m -> ddfe || `F_ISSET (m, MP_TEMP )) 518 i( `memcmp ( feid , `R_ADDR ( 519 dbmp -> gfo , m -> feid_off ), DB_FILE_ID_LEN ) != 0) 525 i( m = NULL ) { 526 i( mem ) { 527 t = ENOENT ; 528 r ; 530 fs ; 533 i( _is_move ) { 534 `MUTEX_LOCK ( dbv , m -> mux ); 540 i( m -> no_backg_fe ) 541 m -> mpf_t --; 542 m -> ddfe = 1; 543 `MUTEX_UNLOCK ( dbv , m -> mux ); 550 p = `R_ADDR ( dbmp -> gfo , m -> th_off ); 551 m -> th_off = wme_off ; 553 i( mem && hp ! nhp ) { 554 `DB_ASSERT ( dbv , nhp ! NULL ); 555 `SH_TAILQ_REMOVE (& hp -> hash_buck , m , q , __mpofe ); 556 m -> buck = bucket; 557 `SH_TAILQ_INSERT_TAIL (& nhp -> hash_buck , m , q ); 561 fs : 565 i( m = NULL || !m-> no_backg_fe ) { 566 i( _is_move ) { 572 i(( t = `__os_uƚk ( dbv , fud )= ENOENT ) 573 t = 0; 579 `DB_ASSERT ( dbv , fuw ! NULL ); 580 i( fuw = NULL ) { 581 t = EINVAL ; 582 r ; 584 t = `__os_me ( dbv , fud , fuw , 1); 589 r : i( p ! NULL ) 590 `__memp_ (& dbmp -> gfo [0], NULL , p ); 593 i( locked == 1) { 594 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 595 i( nhp ! NULL &&h! hp ) 596 `MUTEX_UNLOCK ( dbv , nhp -> mtx_hash ); 598 ( t ); 599 } } 601 #ifde HAVE_FTRUNCATE 609 $__memp_run ( dbm , pgno , ags ) 610 DB_MPOOLFILE * dbm ; 611 db_pgno_t pgno ; 612 u_t32_t ags ; 614 DB_ENV * dbv ; 615 MPOOLFILE * m ; 616 * g ; 617 db_pgno_t ϡ_pgno , pg ; 618 t ; 620 dbv = dbm ->dbenv; 621 m = dbm ->mfp; 623 `MUTEX_LOCK ( dbv , m -> mux ); 624 ϡ_pgno = m ->last_pgno; 625 `MUTEX_UNLOCK ( dbv , m -> mux ); 627 i( pgno > ϡ_pgno ) { 628 i( `LF_ISSET ( MP_TRUNC_RECOVER )) 630 `__db_rx ( dbv , "Truncate beyondhend of file"); 631 ( EINVAL ); 634 pg = pgno ; 636 i(( t = 637 `__memp_fg ( dbm , & pg , NULL , DB_MPOOL_FREE , & g )) != 0) 638 ( t ); 639 } pg ++ < ϡ_pgno ); 648 `MUTEX_LOCK ( dbv , m -> mux ); 649 i(! `F_ISSET ( m , MP_TEMP ) && 650 ! m -> no_backg_fe && pgno <m-> ϡ_ushed_pgno ) 651 t = `__os_un ( dbv , 652 dbm -> fhp , pgno , m -> . _gesize ); 659 i( t == 0) { 660 m -> ϡ_pgno = pgno - 1; 661 i( m -> ϡ_ushed_pgno > m-> ϡ_pgno ) 662 m -> ϡ_ushed_pgno = m-> ϡ_pgno ; 664 `MUTEX_UNLOCK ( dbv , m -> mux ); 666 ( t ); 667 } } 681 $__memp_loc_li ( dbm , ms , lip ) 682 DB_MPOOLFILE * dbm ; 683 u_t32_t ms ; 684 db_pgno_t ** lip ; 686 DB_ENV * dbv ; 687 DB_MPOOL * dbmp ; 688 MPOOLFILE * m ; 689 * ; 690 t ; 692 dbv = dbm ->dbenv; 693 dbmp = dbv -> mp_hd ; 694 m = dbm ->mfp; 696 * lip = NULL ; 702 m -> _f ++; 703 i( m -> _size != 0) 704 ( EBUSY ); 707 m -> _t = ms ; 708 i( ms == 0) 709 ms = 50; 711 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 712 NULL , ms * ( db_pgno_t ), & m -> _li , & )) != 0) 713 ( t ); 715 m -> _size = ms * ( db_pgno_t ); 716 * lip = ; 718 } } 726 $__memp__li ( dbm ) 727 DB_MPOOLFILE * dbm ; 729 DB_ENV * dbv ; 730 DB_MPOOL * dbmp ; 731 MPOOLFILE * m ; 733 dbv = dbm ->dbenv; 734 dbmp = dbv -> mp_hd ; 735 m = dbm ->mfp; 737 `DB_ASSERT ( dbv , m -> _f > 0); 738 i(-- m -> _f > 0) 741 `DB_ASSERT ( dbv , m -> _size != 0); 743 `MPOOL_SYSTEM_LOCK ( dbv ); 744 `__memp_ ( dbmp -> gfo , NULL , `R_ADDR (dbmp->gfo, m -> _li )); 745 `MPOOL_SYSTEM_UNLOCK ( dbv ); 747 m -> _t = 0; 748 m -> _li = 0; 749 m -> _size = 0; 751 } } 760 $__memp_g_li ( dbm , mp , lip ) 761 DB_MPOOLFILE * dbm ; 762 u_t32_t * mp ; 763 db_pgno_t ** lip ; 765 MPOOLFILE * m ; 766 DB_ENV * dbv ; 767 DB_MPOOL * dbmp ; 769 dbv = dbm ->dbenv; 770 dbmp = dbv -> mp_hd ; 771 m = dbm ->mfp; 773 i( m -> _size == 0) { 774 * mp = 0; 775 * lip = NULL ; 777 * mp = m -> _t ; 778 * lip = `R_ADDR ( dbmp -> gfo , m -> _li ); 782 } } 791 $__memp_exnd_li ( dbm , cou , lip ) 792 DB_MPOOLFILE * dbm ; 793 u_t32_t cou ; 794 db_pgno_t ** lip ; 796 DB_ENV * dbv ; 797 DB_MPOOL * dbmp ; 798 MPOOLFILE * m ; 799 t ; 800 * ; 802 dbv = dbm ->dbenv; 803 dbmp = dbv -> mp_hd ; 804 m = dbm ->mfp; 806 i( m -> _size == 0) 807 ( EINVAL ); 809 i( cou * ( db_pgno_t > m -> _size ) { 810 m -> _size = 811 ( size_t ) `DB_ALIGN ( cou * ( db_pgno_t ), 512); 812 * lip = `R_ADDR ( dbmp -> gfo , m -> _li ); 813 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 814 NULL , m -> _size , &m-> _li , & )) != 0) 815 ( t ); 817 `memy ( , * lip , m -> _t * ( db_pgno_t )); 819 `MPOOL_SYSTEM_LOCK ( dbv ); 820 `__memp_ ( dbmp -> gfo , NULL , * lip ); 821 `MPOOL_SYSTEM_UNLOCK ( dbv ); 824 m -> _t = cou ; 825 * lip = `R_ADDR ( dbmp -> gfo , m -> _li ); 828 } } @../mp/mp_mvcc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 14 ~"dbc/txn.h " 16 __pgno_cmp __P ((const *, const *)); 24 u_t32_t 25 $__memp_bh_iܙy ( bhp ) 26 BH * bhp ; 28 u_t32_t iܙy ; 30 `SH_CHAIN_HASNEXT ( bhp , vc )) 31 bhp = `SH_CHAIN_NEXT (bhp, vc , __bh ); 33 iܙy = bhp ->priority; 35 ( bhp = `SH_CHAIN_PREV (bhp, vc , __bh )! NULL ) 36 i( bhp -> iܙy <riority) 37 iܙy = bhp ->priority; 39 ( iܙy ); 40 } } 49 $__memp_buck_d ( dbv , hp , bhp ) 50 DB_ENV * dbv ; 51 DB_MPOOL_HASH * hp ; 52 BH * bhp ; 54 BH * f_bhp , * ϡ_bhp , * xt ; 55 u_t32_t iܙy ; 57 `DB_ASSERT ( dbv , bhp ! NULL ); 58 `COMPQUIET ( dbv , NULL ); 65 i(( f_bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh )) == 66 ( ϡ_bhp = `SH_TAILQ_LAST (& hp -> hash_buck , hq , __bh ))) 67 de ; 69 `SH_CHAIN_HASNEXT ( bhp , vc )) 70 bhp = `SH_CHAIN_NEXTP (bhp, vc , __bh ); 72 iܙy = `BH_PRIORITY ( bhp ); 75 i( bhp ! f_bhp && iܙy < `BH_PRIORITY (first_bhp)) { 76 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 77 `SH_TAILQ_INSERT_HEAD (& hp -> hash_buck , bhp , hq , __bh ); 78 } i( bhp ! ϡ_bhp && iܙy > `BH_PRIORITY (last_bhp)) { 79 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 80 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 82 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 83 xt = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh ); 84 xt ! NULL && iܙy > `BH_PRIORITY (next); 85 xt = `SH_TAILQ_NEXT ext, hq , __bh )) 87 i( xt = NULL ) 88 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 90 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 91 xt , bhp , hq , __bh ); 94 de : 98 i(( bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh )! NULL ) 99 hp -> hash_iܙy = `BH_PRIORITY ( bhp ); 100 } } 109 $__memp_bh_xn ( dbmp , m , bhp , vtd ) 110 DB_MPOOL * dbmp ; 111 MPOOLFILE * m ; 112 BH * bhp ; 113 * vtd ; 115 DB_ENV * dbv ; 116 TXN_DETAIL * td ; 118 dbv = dbmp ->dbenv; 119 td = ( TXN_DETAIL *) vtd ; 121 i( td = NULL ) { 122 `__db_rx ( dbv , 124 `__memp_s ( dbmp , m )); 125 ( EINVAL ); 128 i( bhp -> td_off ! INVALID_ROFF ) { 129 `DB_ASSERT ( dbv , `BH_OWNER (dbv, bhp = td ); 133 bhp -> td_off = `R_OFFSET (& dbv -> tx_hd -> gfo , td ); 134 ( `__txn_add_bufr ( dbv , td )); 135 } } 145 $__memp_sk_cudj ( dbc , pgno ) 146 DBC * dbc ; 147 db_pgno_t pgno ; 149 BH * bhp ; 150 DB_ENV * dbv ; 151 DB_MPOOL * dbmp ; 152 DB_MPOOL_HASH * hp ; 153 DB_MPOOLFILE * dbm ; 154 DB_TXN * txn ; 155 MPOOLFILE * m ; 156 REGINFO * f ; 157 roff_t mf_offt ; 158 t , sk ; 160 dbv = dbc -> dbp ->dbenv; 161 dbmp = dbv -> mp_hd ; 162 dbm = dbc -> dbp -> mpf ; 163 m = dbm ->mfp; 164 mf_offt = `R_OFFSET ( dbmp -> gfo , m ); 165 sk = 0; 167 txn = dbc ->txn;xn-> ! NULL ;xn =xn->parent) 175 `MP_GET_BUCKET ( dbm , pgno , & f , hp , t ); 176 i( t != 0) { 178 () `__db_nic ( dbv , t ); 182 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 183 i( bhp -> pgno !pgn|| bhp-> mf_offt != mf_offset) 186 i(! `BH_OWNED_BY ( dbv , bhp , txn )) 187 sk = 1; 190 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 192 ( sk ); 193 } } 195 #DB_FREEZER_MAGIC 0x06102002 ) 208 $__memp_bh_ze ( dbmp , f , hp , bhp , ed_ozp ) 209 DB_MPOOL * dbmp ; 210 REGINFO * f ; 211 DB_MPOOL_HASH * hp ; 212 BH * bhp ; 213 * ed_ozp ; 215 BH * oz_bhp ; 216 BH_FROZEN_ALLOC * oz_loc ; 217 DB_ENV * dbv ; 218 DB_FH * fhp ; 219 MPOOL * c_mp ; 220 MPOOLFILE * bh_m ; 221 db_pgno_t maxpgno , wpgno , xt ; 222 size_t nio ; 223 t , t_t ; 224 u_t32_t magic , nbuck , nche , gesize ; 225 fame [100], * _me ; 227 dbv = dbmp ->dbenv; 228 c_mp = f -> imy ; 229 t = 0; 231 bh_m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 232 gesize = bh_m -> . _gesize ; 233 _me = NULL ; 234 fhp = NULL ; 236 `DB_ASSERT ( dbv , bhp -> f == 0); 237 `DB_ASSERT ( dbv , ! `F_ISSET ( bhp , BH_DIRTY | BH_FROZEN | BH_LOCKED )); 239 ++ bhp -> f ; 240 `F_SET ( bhp , BH_LOCKED ); 241 `MVCC_MPROTECT ( bhp -> buf , gesize , PROT_READ | PROT_WRITE ); 243 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 245 `MPOOL_REGION_LOCK ( dbv , f ); 246 oz_bhp = `SH_TAILQ_FIRST (& c_mp -> _oz , __bh ); 247 i( oz_bhp ! NULL ) { 248 `SH_TAILQ_REMOVE (& c_mp -> _oz , oz_bhp , hq , __bh ); 249 * ed_ozp = `SH_TAILQ_EMPTY (& c_mp -> _oz ); 251 * ed_ozp = 1; 254 i( `__v_loc ( f , 255 ( BH_FROZEN_ALLOC + ( BH_FROZEN_PAGE ), 256 & oz_loc ) == 0) { 257 oz_bhp = ( BH *)( oz_loc + 1); 258 `SH_TAILQ_INSERT_TAIL (& c_mp -> loc_oz , 259 oz_loc , lks ); 262 `MPOOL_REGION_UNLOCK ( dbv , f ); 263 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 270 i( oz_bhp = NULL ) { 271 t = ENOMEM ; 272 r ; 280 nche = ( u_t32_t )( f - dbmp -> gfo ); 281 nbuck = ( u_t32_t )( hp - ( DB_MPOOL_HASH *) `R_ADDR ( f , c_mp -> hb )); 282 `tf ( fame , (filename), "__db.freezer.%u.%u.%uK", 283 nche , nbuck , gesize / 1024); 285 i(( t = `__db_ame ( dbv , DB_APP_NONE , fame , 286 0, NULL , & _me )) != 0) 287 r ; 288 i(( t = `__os_ݒ ( dbv , _me , gesize , 289 DB_OSO_CREATE | DB_OSO_EXCL , dbv -> db_mode , & fhp )) == 0) { 291 magic = DB_FREEZER_MAGIC ; 292 maxpgno = wpgno = 0; 293 i(( t = `__os_wre ( dbv , fhp , & magic , ( u_t32_t ), 294 & nio )) < 0 ||io == 0 || 295 ( t = `__os_wre ( dbv , fhp , & wpgno , ( db_pgno_t ), 296 & nio )) < 0 ||io == 0 || 297 ( t = `__os_wre ( dbv , fhp , & maxpgno , ( db_pgno_t ), 298 & nio )) < 0 ||io == 0 || 299 ( t = `__os_ek ( dbv , fhp , 0, 0, 0)) != 0) 300 r ; 301 } i( t = EEXIST ) 302 t = `__os_ݒ ( 303 dbv , _me , gesize , 0, dbv-> db_mode , & fhp ); 304 i( t != 0) 305 r ; 306 i(( t = `__os_ad ( dbv , fhp , & magic , ( u_t32_t ), 307 & nio )) < 0 ||io == 0 || 308 ( t = `__os_ad ( dbv , fhp , & wpgno , ( db_pgno_t ), 309 & nio )) < 0 ||io == 0 || 310 ( t = `__os_ad ( dbv , fhp , & maxpgno , ( db_pgno_t ), 311 & nio )) < 0 ||io == 0) 312 r ; 313 i( magic ! DB_FREEZER_MAGIC ) { 314 t = EINVAL ; 315 r ; 317 i( wpgno == 0) { 318 wpgno = ++ maxpgno ; 319 i(( t = `__os_ek ( dbv , 320 fhp , 0, 0, ( u_t32_t + ( db_pgno_t ))) != 0 || 321 ( t = `__os_wre ( dbv , fhp , & maxpgno , ( db_pgno_t ), 322 & nio )) < 0 ||io == 0) 323 r ; 325 i(( t = `__os_ek ( dbv , fhp , wpgno , gesize , 0)) != 0 || 326 ( t = `__os_ad ( dbv , fhp , & xt , ( db_pgno_t ), 327 & nio )) < 0 ||io == 0) 328 r ; 329 i(( t = 330 `__os_ek ( dbv , fhp , 0, 0, ( u_t32_t ))) != 0 || 331 ( t = `__os_wre ( dbv , fhp , & xt , ( db_pgno_t ), 332 & nio )) < 0 ||io == 0) 333 r ; 337 i(( t = `__os_io ( dbv , DB_IO_WRITE , fhp , wpgno , gesize , 0, 338 gesize , bhp -> buf , & nio )) != 0 ||io == 0) 339 r ; 346 #ifde DIAG_MVCC 347 `memy ( oz_bhp , bhp , `SSZ ( BH , ign_off )); 349 `memy ( oz_bhp , bhp , `SSZA ( BH , buf )); 351 oz_bhp -> f = froz_bhp-> f_sync = 0; 352 `F_SET ( oz_bhp , BH_FROZEN ); 353 `F_CLR ( oz_bhp , BH_LOCKED ); 354 oz_bhp -> iܙy = UINT32_MAX ; 355 (( BH_FROZEN_PAGE *) oz_bhp )-> gno = wpgno ; 362 i( oz_bhp -> td_off ! INVALID_ROFF && 363 ( t = `__txn_add_bufr ( dbv , `BH_OWNER (dbv, oz_bhp ))) != 0) { 364 () `__db_nic ( dbv , t ); 365 r ; 374 `SH_CHAIN_INSERT_AFTER ( bhp , oz_bhp , vc , __bh ); 375 i(! `SH_CHAIN_HASNEXT ( oz_bhp , vc )) { 376 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 377 bhp , oz_bhp , hq , __bh ); 378 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 385 `MUTEX_LOCK ( dbv , bh_m -> mux ); 386 ++ bh_m -> block_t ; 387 `MUTEX_UNLOCK ( dbv , bh_m -> mux ); 389 `STAT (++ hp -> hash_oz ); 392 r : i( t == 0) 393 t = EIO ; 394 i( oz_bhp ! NULL ) { 395 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 396 `MPOOL_REGION_LOCK ( dbv , f ); 397 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , 398 oz_bhp , hq ); 399 `MPOOL_REGION_UNLOCK ( dbv , f ); 400 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 403 i( _me ! NULL ) 404 `__os_ ( dbv , _me ); 405 i( fhp ! NULL && 406 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 407 t = t_t ; 408 i( t !0 && ! ENOMEM ) 409 `__db_r ( dbv , t , "__memp_bh_freeze"); 410 `F_CLR ( bhp , BH_LOCKED ); 411 -- bhp -> f ; 416 i( `F_ISSET ( hp , IO_WAITER )) { 417 `F_CLR ( hp , IO_WAITER ); 418 `MUTEX_UNLOCK ( dbv , hp -> mtx_io ); 420 ( t ); 421 } } 424 $__pgno_cmp ( a , b ) 425 cڡ * a , * b ; 427 db_pgno_t * , * bp ; 429 = ( db_pgno_t *) a ; 430 bp = ( db_pgno_t *) b ; 432 ()(* - * bp ); 433 } } 445 $__memp_bh_thaw ( dbmp , f , hp , oz_bhp , loc_bhp ) 446 DB_MPOOL * dbmp ; 447 REGINFO * f ; 448 DB_MPOOL_HASH * hp ; 449 BH * oz_bhp , * loc_bhp ; 451 BH * xt_bhp ; 452 DB_ENV * dbv ; 453 DB_FH * fhp ; 454 #ifde DIAGNOSTIC 455 DB_LSN vl ; 457 MPOOL * c_mp ; 458 MPOOLFILE * bh_m ; 459 db_pgno_t * li , * gno , pgno , maxpgno , gno ; 460 size_t nio ; 461 u_t32_t lisize , magic , nbuck , nche , runc , n , gesize ; 462 u_t32_t iܙy ; 463 #ifde HAVE_FTRUNCATE 464 i ; 466 ed , d , t , t_t ; 467 fame [100], * _me ; 469 dbv = dbmp ->dbenv; 470 fhp = NULL ; 471 c_mp = f -> imy ; 472 bh_m = `R_ADDR ( dbmp -> gfo , oz_bhp -> mf_offt ); 473 li = NULL ; 474 gesize = bh_m -> . _gesize ; 475 t = 0; 476 _me = NULL ; 478 `DB_ASSERT ( dbv , `F_ISSET ( oz_bhp , BH_FROZEN )); 479 `DB_ASSERT ( dbv , ! `F_ISSET ( oz_bhp , BH_LOCKED )); 480 `DB_ASSERT ( dbv , loc_bhp ! NULL || 481 `BH_OBSOLETE ( oz_bhp , hp -> d_ad , vl )); 483 gno = (( BH_FROZEN_PAGE *) oz_bhp )->spgno; 485 i( loc_bhp ! NULL ) { 486 #ifde DIAG_MVCC 487 `memy ( loc_bhp , oz_bhp , `SSZ ( BH , ign_off )); 489 `memy ( loc_bhp , oz_bhp , `SSZA ( BH , buf )); 491 loc_bhp -> f = 1; 492 loc_bhp -> f_sync = 0; 493 `F_CLR ( loc_bhp , BH_FROZEN ); 496 `F_SET ( oz_bhp , BH_LOCKED ); 503 nche = ( u_t32_t )( f - dbmp -> gfo ); 504 nbuck = ( u_t32_t )( hp - ( DB_MPOOL_HASH *) `R_ADDR ( f , c_mp -> hb )); 505 `tf ( fame , (filename), "__db.freezer.%u.%u.%uK", 506 nche , nbuck , gesize / 1024); 508 i(( t = `__db_ame ( dbv , DB_APP_NONE , fame , 0, NULL , 509 & _me )) != 0) 510 r ; 512 i(( t = `__os_ݒ ( 513 dbv , _me , gesize , 0, dbv-> db_mode , & fhp )) != 0) 514 r ; 520 i(( t = `__os_ad ( dbv , fhp , & magic , ( u_t32_t ), 521 & nio )) < 0 ||io == 0 || 522 ( t = `__os_ad ( dbv , fhp , & pgno , ( db_pgno_t ), 523 & nio )) < 0 ||io == 0 || 524 ( t = `__os_ad ( dbv , fhp , & maxpgno , ( db_pgno_t ), 525 & nio )) < 0 ||io == 0) 526 r ; 528 i( magic ! DB_FREEZER_MAGIC ) { 529 t = EINVAL ; 530 r ; 534 i( loc_bhp ! NULL && 535 (( t = `__os_io ( dbv , DB_IO_READ , fhp , gno , gesize , 536 0, gesize , loc_bhp -> buf , & nio )) != 0 ||io == 0)) 537 r ; 543 ed = 1; 544 i( gno = maxpgno ) { 545 lisize = 100; 546 i(( t = `__os_mloc ( dbv , 547 lisize * ( db_pgno_t ), & li )) != 0) 548 r ; 549 n = 0; 550 pgno != 0) { 551 i( n = lisize - 1) { 552 lisize *= 2; 553 i(( t = `__os_loc ( dbv , 554 lisize * ( db_pgno_t ), 555 & li )) != 0) 556 r ; 558 li [ n ++] = pgno ; 559 i(( t = `__os_ek ( 560 dbv , fhp , pgno , gesize , 0)) != 0 || 561 ( t = `__os_ad ( dbv , fhp , & pgno , 562 ( db_pgno_t ), & nio )) < 0 ||io == 0) 563 r ; 565 li [ n ++] = gno ; 566 `qst ( li , n , ( db_pgno_t ), __pgno_cmp ); 567 gno = & li [ n - 1];pgno > freelist;pgno--) 568 i(*( gno - 1) != *ppgno - 1) 570 runc = ( u_t32_t )(& li [ n ] - gno ); 571 i( runc =( u_t32_t ) maxpgno ) { 572 ed = 0; 573 t = `__os_ohd ( dbv , fhp ); 574 fhp = NULL ; 575 i( t != 0 || 576 ( t = `__os_uƚk ( dbv , _me )) != 0) 577 r ; 579 #ifde HAVE_FTRUNCATE 581 maxpgno -( db_pgno_t ) runc ; 582 i(( t = `__os_un ( dbv , fhp , 583 maxpgno + 1, gesize )) != 0) 584 r ; 587 li [ n - runc ] = 0; 588 i(( t = `__os_ek ( 589 dbv , fhp , 0, 0, ( u_t32_t ))) != 0 || 590 ( t = `__os_wre ( dbv , fhp , & li [0], 591 ( db_pgno_t ), & nio )) < 0 ||io == 0 || 592 ( t = `__os_wre ( dbv , fhp , & maxpgno , 593 ( db_pgno_t ), & nio )) < 0 ||io == 0) 594 r ; 596 i = 0; i < ()( n - runc ); i++) 597 i(( t = `__os_ek ( dbv , 598 fhp , li [ i ], gesize , 0)) != 0 || 599 ( t = `__os_wre ( dbv , fhp , 600 & li [ i + 1], ( db_pgno_t ), 601 & nio )) < 0 ||io == 0) 602 r ; 603 ed = 0; 607 i( ed && 608 (( t = `__os_ek ( dbv , fhp , gno , gesize , 0)) != 0 || 609 ( t = `__os_wre ( dbv , fhp , & pgno , ( db_pgno_t ), 610 & nio )) < 0 ||io == 0 || 611 ( t = `__os_ek ( dbv , fhp , 0, 0, ( u_t32_t ))) != 0 || 612 ( t = `__os_wre ( dbv , fhp , & gno , ( db_pgno_t ), 613 & nio )) < 0 ||io == 0)) 614 r ; 624 i( loc_bhp ! NULL ) { 625 loc_bhp -> iܙy = c_mp -> u_cou ; 627 `SH_CHAIN_INSERT_AFTER ( oz_bhp , loc_bhp , vc , __bh ); 628 i(! `SH_CHAIN_HASNEXT ( loc_bhp , vc )) { 629 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 630 oz_bhp , loc_bhp , hq , __bh ); 631 `SH_TAILQ_REMOVE (& hp -> hash_buck , oz_bhp , hq , __bh ); 633 iܙy = `BH_PRIORITY ( loc_bhp ); 634 d = ( iܙy = loc_bhp ->priority || 635 iܙy = oz_bhp ->priority); 637 d = `BH_PRIORITY ( oz_bhp =oz_bhp-> iܙy ; 638 i(( xt_bhp = `SH_CHAIN_NEXT ( oz_bhp , vc , __bh )= NULL ) { 639 i(( xt_bhp = `SH_CHAIN_PREV ( oz_bhp , vc , __bh )! NULL ) 640 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , oz_bhp , 641 xt_bhp , hq , __bh ); 642 `SH_TAILQ_REMOVE (& hp -> hash_buck , oz_bhp , hq , __bh ); 644 `SH_CHAIN_REMOVE ( oz_bhp , vc , __bh ); 645 i( d ) { 646 i( xt_bhp ! NULL ) 647 `__memp_buck_d ( dbv , hp , xt_bhp ); 648 i(! `SH_TAILQ_EMPTY (& hp -> hash_buck )) 649 hp -> hash_iܙy = `BH_PRIORITY ( `SH_TAILQ_FIRSTP ( 650 & hp -> hash_buck , __bh )); 658 i(-- oz_bhp -> f == 0) { 659 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 661 i( loc_bhp = NULL && oz_bhp -> td_off ! INVALID_ROFF && 662 ( t = `__txn_move_bufr ( dbv , 663 `BH_OWNER ( dbv , oz_bhp ), MUTEX_INVALID )) != 0) { 664 () `__db_nic ( dbv , t ); 665 r ; 672 `MPOOL_REGION_LOCK ( dbv , f ); 673 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , oz_bhp , hq ); 674 `MPOOL_REGION_UNLOCK ( dbv , f ); 675 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 677 `F_SET ( oz_bhp , BH_THAWED ); 678 `F_CLR ( oz_bhp , BH_LOCKED ); 681 #ifde HAVE_STATISTICS 682 i( loc_bhp ! NULL ) 683 ++ hp -> hash_thawed ; 685 ++ hp -> hash_oz_d ; 689 r : i( t == 0) 690 t = EIO ; 692 i( _me ! NULL ) 693 `__os_ ( dbv , _me ); 694 i( li ! NULL ) 695 `__os_ ( dbv , li ); 696 i( fhp ! NULL && 697 ( t_t = `__os_ohd ( dbv , fhp )!0 && t == 0) 698 t = t_t ; 699 i( t != 0) 700 `__db_r ( dbv , t , "__memp_bh_thaw"); 705 i( `F_ISSET ( hp , IO_WAITER )) { 706 `F_CLR ( hp , IO_WAITER ); 707 `MUTEX_UNLOCK ( dbv , hp -> mtx_io ); 710 ( t ); 711 } } @../mp/mp_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 14 __memp__cfig __P (( DB_ENV *, MPOOL *)); 15 __memp_gi_size __P (( DB_ENV *, roff_t *, u_t32_t *)); 24 $__memp_ݒ ( dbv , _ok ) 25 DB_ENV * dbv ; 26 _ok ; 28 DB_MPOOL * dbmp ; 29 MPOOL * mp ; 30 REGINFO gfo ; 31 roff_t g_size ; 32 u_t i , max_eg ; 33 u_t32_t hb_bucks , * gids ; 34 t ; 37 `__memp_gi_size ( dbv , & g_size , & hb_bucks ); 40 i(( t = `__os_oc ( dbv , 1, (* dbmp ), &dbmp)) != 0) 41 ( t ); 42 `LIST_INIT (& dbmp -> dbgq ); 43 `TAILQ_INIT (& dbmp -> dbmfq ); 44 dbmp -> dbv = dbenv; 47 `memt (& gfo , 0, ( REGINFO )); 48 gfo . dbv = dbenv; 49 gfo . ty = REGION_TYPE_MPOOL ; 50 gfo . id = INVALID_REGION_ID ; 51 gfo . ags = REGION_JOIN_OK ; 52 i( _ok ) 53 `F_SET (& gfo , REGION_CREATE_OK ); 54 i(( t = `__v_gi_ch ( dbv , & gfo , g_size )) != 0) 55 r ; 61 i( `F_ISSET (& gfo , REGION_CREATE )) { 67 max_eg = `__memp_max_gis ( dbv ); 68 i(( t = `__os_oc ( dbv , 69 max_eg , ( REGINFO ), & dbmp -> gfo )) != 0) 70 r ; 72 dbmp -> gfo [0] =eginfo; 73 i = 1; i < max_eg ; ++i) 74 dbmp -> gfo [ i ]. id = INVALID_REGION_ID ; 77 i(( t = `__memp_ ( dbv , dbmp , 78 0, hb_bucks , max_eg )) != 0) 79 r ; 85 mp = `R_ADDR ( dbmp -> gfo , dbmp->gfo[0]. -> imy ); 86 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 87 gids [0] = dbmp -> gfo [0]. id ; 88 i = 1; i < dbv -> mp_nche ; ++i) { 89 dbmp -> gfo [ i ]. dbv = dbenv; 90 dbmp -> gfo [ i ]. ty = REGION_TYPE_MPOOL ; 91 dbmp -> gfo [ i ]. id = INVALID_REGION_ID ; 92 dbmp -> gfo [ i ]. ags = REGION_CREATE_OK ; 93 i(( t = `__v_gi_ch ( 94 dbv , & dbmp -> gfo [ i ], g_size )) != 0) 95 r ; 96 i(( t = `__memp_ ( dbv , dbmp , 97 i , hb_bucks , max_eg )) != 0) 98 r ; 100 gids [ i ] = dbmp -> gfo [i]. id ; 108 mp = `R_ADDR (& gfo ,egfo. -> imy ); 109 dbv -> mp_nche = mp -> eg ; 110 i(( t = `__os_oc ( dbv , 111 mp -> max_eg , ( REGINFO ), & dbmp -> gfo )) != 0) 112 r ; 114 i = 0; i < dbv -> mp_nche ; ++i) 115 dbmp -> gfo [ i ]. id = INVALID_REGION_ID ; 116 dbmp -> gfo [0] =eginfo; 119 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 120 i = 1; i < dbv -> mp_nche ; ++i) { 121 dbmp -> gfo [ i ]. dbv = dbenv; 122 dbmp -> gfo [ i ]. ty = REGION_TYPE_MPOOL ; 123 dbmp -> gfo [ i ]. id = gids [i]; 124 dbmp -> gfo [ i ]. ags = REGION_JOIN_OK ; 125 i(( t = `__v_gi_ch ( 126 dbv , & dbmp -> gfo [ i ], 0)) != 0) 127 r ; 132 i = 0; i < dbv -> mp_nche ; ++i) 133 dbmp -> gfo [ i ]. imy = 134 `R_ADDR (& dbmp -> gfo [ i ], dbmp->gfo[i]. -> imy ); 137 i(( t = `__mux_loc ( dbv , 138 MTX_MPOOL_HANDLE , DB_MUTEX_PROCESS_ONLY , & dbmp -> mux )) != 0) 139 r ; 141 dbv -> mp_hd = dbmp ; 144 i(( t = `__memp__cfig ( dbv , mp )) != 0) 145 ( t ); 149 r : dbv -> mp_hd = NULL ; 150 i( dbmp -> gfo ! NULL && dbmp->gfo[0]. addr != NULL) { 151 i = 0; i < dbv -> mp_nche ; ++i) 152 i( dbmp -> gfo [ i ]. id ! INVALID_REGION_ID ) 153 () `__v_gi_dach ( 154 dbv , & dbmp -> gfo [ i ], 0); 155 `__os_ ( dbv , dbmp -> gfo ); 158 () `__mux_ ( dbv , & dbmp -> mux ); 159 `__os_ ( dbv , dbmp ); 160 ( t ); 161 } } 171 $__memp_ ( dbv , dbmp , gfo_off , hb_bucks , max_eg ) 172 DB_ENV * dbv ; 173 DB_MPOOL * dbmp ; 174 u_t gfo_off , max_eg ; 175 u_t32_t hb_bucks ; 177 BH_FROZEN_ALLOC * oz ; 178 BH * oz_bhp ; 179 DB_MPOOL_HASH * hb , * hp ; 180 MPOOL * mp , * ma_mp ; 181 REGINFO * f ; 182 db_mux_t mtx_ba , mtx_disrd , mtx_ev ; 183 u_t32_t i ; 184 t ; 185 * p ; 187 f = & dbmp -> gfo [ gfo_off ]; 188 i(( t = `__v_loc ( f , ( MPOOL ), &f-> imy )) != 0) 189 mem_r ; 190 f -> -> imy = `R_OFFSET (infop, infop->primary); 191 mp = f -> imy ; 192 `memt ( mp , 0, (*mp)); 194 i(( t = 195 `__mux_loc ( dbv , MTX_MPOOL_REGION , 0, & mp -> mtx_gi )) != 0) 196 ( t ); 198 i( gfo_off == 0) { 199 `ZERO_LSN ( mp -> l ); 201 mp -> eg = dbv -> mp_nche ; 202 mp -> max_eg = max_nreg; 203 i(( t = `__v_loc (& dbmp -> gfo [0], 204 max_eg * ( u_t32_t ), & p )) != 0) 205 mem_r ; 206 mp -> gids = `R_OFFSET ( dbmp -> gfo , p ); 207 mp -> nbucks = dbv -> mp_nche * hb_bucks ; 210 i(( t = `__v_loc ( f , 211 MPOOL_FILE_BUCKETS * ( DB_MPOOL_HASH ), & hb )) != 0) 212 mem_r ; 213 mp -> ab = `R_OFFSET ( f , hb ); 214 i = 0; i < MPOOL_FILE_BUCKETS ; i++) { 215 i(( t = `__mux_loc ( dbv , 216 MTX_MPOOL_FILE_BUCKET , 0, & hb [ i ]. mtx_hash )) != 0) 217 ( t ); 218 `SH_TAILQ_INIT (& hb [ i ]. hash_buck ); 219 hb [ i ]. hash_ge_dty = hb[i]. hash_iܙy = 0; 227 mtx_ba = mtx_ev = MUTEX_INVALID ; 228 i = 0; i < mp -> max_eg * hb_bucks ; i++) { 229 i(( t = `__mux_loc ( dbv , MTX_MPOOL_HASH_BUCKET , 230 0, & mtx_disrd )) != 0) 231 ( t ); 232 i( i == 0) { 233 mtx_ba = mtx_disrd ; 234 mtx_ev = mtx_disrd - 1; 236 `DB_ASSERT ( dbv , mtx_disrd = mtx_ev + 1 || 237 mtx_ba = MUTEX_INVALID ); 238 mtx_ev = mtx_disrd ; 239 i(( t = `__mux_loc ( dbv , MTX_MPOOL_IO , 240 DB_MUTEX_SELF_BLOCK , & mtx_disrd )) != 0) 241 ( t ); 242 `DB_ASSERT ( dbv , mtx_disrd = mtx_ev + 1 || 243 mtx_ba = MUTEX_INVALID ); 244 mtx_ev = mtx_disrd ; 247 ma_mp = dbmp -> gfo [0]. imy ; 248 hb = `R_ADDR (& dbmp -> gfo [0], ma_mp ->htab); 249 mtx_ba = hb [0]. mtx_hash ; 252 i( mtx_ba ! MUTEX_INVALID ) 253 mtx_ba + gfo_off * hb_bucks ; 256 i(( t = `__v_loc ( f , 257 hb_bucks * ( DB_MPOOL_HASH ), & hb )) != 0) 258 mem_r ; 259 mp -> hb = `R_OFFSET ( f , htab); 260 i = 0; i < hb_bucks ; i++) { 261 hp = & hb [ i ]; 262 hp -> mtx_hash = ( mtx_ba = MUTEX_INVALID ) ? MUTEX_INVALID : 263 mtx_ba + i * 2; 264 hp -> mtx_io = ( mtx_ba = MUTEX_INVALID ) ? MUTEX_INVALID : 265 mtx_ba + i * 2 + 1; 266 `SH_TAILQ_INIT (& hp -> hash_buck ); 267 hp -> hash_ge_dty = hp-> hash_iܙy = 0; 268 #ifde HAVE_STATISTICS 269 hp -> hash_io_wa = 0; 270 hp -> hash_oz = hp-> hash_thawed = hp-> hash_oz_d = 0; 272 hp -> ags = 0; 273 `ZERO_LSN ( hp -> d_ad ); 275 mp -> hb_bucks = htab_buckets; 276 #ifde HAVE_STATISTICS 277 mp -> . _hash_bucks = hb_bucks ; 280 `SH_TAILQ_INIT (& mp -> _oz ); 281 `SH_TAILQ_INIT (& mp -> loc_oz ); 288 i(( t = `__v_loc ( f , 289 ( BH_FROZEN_ALLOC + ( BH_FROZEN_PAGE ), & oz )) != 0) 290 mem_r ; 291 oz_bhp = ( BH *)( oz + 1); 292 `SH_TAILQ_INSERT_TAIL (& mp -> loc_oz , oz , lks ); 293 `SH_TAILQ_INSERT_TAIL (& mp -> _oz , oz_bhp , hq ); 299 mp -> . _gbys = dbv -> mp_gbys ; 300 mp -> . _bys = dbv -> mp_bys ; 303 mem_r : `__db_rx ( dbv , "Unableollocate memory for mpoolegion"); 304 ( t ); 305 } } 310 u_t32_t 311 $__memp_max_gis ( dbv ) 312 DB_ENV * dbv ; 314 roff_t g_size , max_size ; 315 u_t32_t max_eg ; 317 `__memp_gi_size ( dbv , & g_size , NULL ); 318 max_size = ( roff_t ) dbv -> mp_max_gbys * GIGABYTE + 319 dbv -> mp_max_bys ; 320 max_eg = ( max_size + g_size / 2) /eg_size; 321 i( max_eg < dbv -> mp_nche ) 322 max_eg = dbv -> mp_nche ; 323 ( max_eg ); 324 } } 331 $__memp_gi_size ( dbv , g_siz , hb_buck ) 332 DB_ENV * dbv ; 333 roff_t * g_siz ; 334 u_t32_t * hb_buck ; 336 roff_t g_size , che_size ; 342 che_size = ( roff_t ) dbv -> mp_gbys * GIGABYTE + dbv-> mp_bys ; 343 g_size = che_size / dbv -> mp_nche ; 344 i( g_siz ! NULL ) 345 * g_siz = g_size ; 360 i( hb_buck ! NULL ) 361 * hb_buck = 362 `__db_bsize (( u_t32_t )( g_size / (10 * 1024))); 363 } } 371 u_t32_t 372 $__memp_gi_mux_cou ( dbv ) 373 DB_ENV * dbv ; 375 u_t32_t hb_bucks ; 377 `__memp_gi_size ( dbv , NULL , & hb_bucks ); 385 ( dbv -> mp_nche * hb_bucks * 2 + 50 + MPOOL_FILE_BUCKETS ); 386 } } 393 $__memp__cfig ( dbv , mp ) 394 DB_ENV * dbv ; 395 MPOOL * mp ; 397 `MPOOL_SYSTEM_LOCK ( dbv ); 399 i( dbv -> mp_mmsize != 0) 400 mp -> mp_mmsize = dbv ->mp_mmapsize; 401 i( dbv -> mp_maxݒfd != 0) 402 mp -> mp_maxݒfd = dbv ->mp_maxopenfd; 403 i( dbv -> mp_maxwre != 0) 404 mp -> mp_maxwre = dbv ->mp_maxwrite; 405 i( dbv -> mp_maxwre_p != 0) 406 mp -> mp_maxwre_p = dbv ->mp_maxwrite_sleep; 408 `MPOOL_SYSTEM_UNLOCK ( dbv ); 411 } } 420 $__memp_v_esh ( dbv ) 421 DB_ENV * dbv ; 423 BH * bhp ; 424 BH_FROZEN_ALLOC * oz_loc ; 425 DB_MPOOL * dbmp ; 426 DB_MPOOLFILE * dbm ; 427 DB_MPOOL_HASH * hp ; 428 DB_MPREG * meg ; 429 MPOOL * mp , * c_mp ; 430 REGINFO * f ; 431 db_mux_t mtx_ba , mtx ; 432 u_t32_t buck , hb_bucks , i , max_eg , eg ; 433 t , t_t ; 435 t = 0; 436 dbmp = dbv -> mp_hd ; 437 mp = dbmp -> gfo [0]. imy ; 438 hb_bucks = mp ->htab_buckets; 439 eg = mp ->nreg; 440 max_eg = mp ->max_nreg; 441 hp = `R_ADDR (& dbmp -> gfo [0], mp -> hb ); 442 mtx_ba = hp -> mtx_hash ; 449 i(! `F_ISSET ( dbv , DB_ENV_PRIVATE )) 450 n_iv ; 453 i = 0; i < eg ; ++i) { 454 f = & dbmp -> gfo [ i ]; 455 c_mp = f -> imy ; 456 hp = `R_ADDR ( f , c_mp -> hb ), buck = 0; 457 buck < c_mp -> hb_bucks ; ++ hp , ++bucket) { 458 ( bhp = `SH_TAILQ_FIRST ( 459 & hp -> hash_buck , __bh )! NULL ) 460 i( `F_ISSET ( bhp , BH_FROZEN )) 461 `SH_TAILQ_REMOVE ( 462 & hp -> hash_buck , bhp , 463 hq , __bh ); 465 i( `F_ISSET ( bhp , BH_DIRTY )) { 466 -- hp -> hash_ge_dty ; 467 `F_CLR ( bhp , 468 BH_DIRTY | BH_DIRTY_CREATE ); 470 i(( t_t = `__memp_bh ( 471 dbmp , f , hp , bhp , 472 BH_FREE_FREEMEM | 473 BH_FREE_UNLOCKED )!0 && t == 0) 474 t = t_t ; 477 ( oz_loc = `SH_TAILQ_FIRST ( 478 & c_mp -> loc_oz , __bh_oz_a )! NULL ) { 479 `SH_TAILQ_REMOVE (& c_mp -> loc_oz , oz_loc , 480 lks , __bh_oz_a ); 481 `__v_loc_ ( f , oz_loc ); 486 i( mtx_ba ! MUTEX_INVALID ) 487 i = 0; i < 2 * max_eg * hb_bucks ; ++i) { 488 mtx = mtx_ba + i ; 489 i(( t_t = `__mux_ ( dbv , & mtx )) != 0 && 490 t == 0) 491 t = t_t ; 494 n_iv : 496 ( dbm = `TAILQ_FIRST (& dbmp -> dbmfq )! NULL ) 497 i(( t_t = `__memp_fo ( dbm , 0)!0 && t == 0) 498 t = t_t ; 501 i( dbmp -> pg_out ! NULL ) 502 `__os_ ( dbv , dbmp -> pg_out ); 503 ( meg = `LIST_FIRST (& dbmp -> dbgq )! NULL ) { 504 `LIST_REMOVE ( meg , q ); 505 `__os_ ( dbv , meg ); 509 i(( t_t = `__mux_ ( dbv , & dbmp -> mux )!0 && t == 0) 510 t = t_t ; 512 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 514 f = & dbmp -> gfo [0]; 515 `__memp_ ( f , NULL , `R_ADDR (f, mp -> gids )); 518 `__memp_ ( f , NULL , `R_ADDR (f, mp -> ab )); 521 i = 0; i < eg ; ++i) { 522 f = & dbmp -> gfo [ i ]; 523 c_mp = f -> imy ; 524 `__memp_ ( f , NULL , `R_ADDR (f, c_mp -> hb )); 529 i = 0; i < eg ; ++i) { 530 f = & dbmp -> gfo [ i ]; 531 i(( t_t = 532 `__v_gi_dach ( dbv , f , 0)!0 && t == 0) 533 t = t_t ; 537 `__os_ ( dbv , dbmp -> gfo ); 538 `__os_ ( dbv , dbmp ); 540 dbv -> mp_hd = NULL ; 541 ( t ); 542 } } @../mp/mp_register.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 24 $__memp_gi_ ( dbv , y , pg , pgout ) 25 DB_ENV * dbv ; 26 y ; 27 (* pg `__P (( DB_ENV *, db_pgno_t , *, DBT *)); 28 (* pgout `__P (( DB_ENV *, db_pgno_t , *, DBT *)); 30 DB_THREAD_INFO * ; 31 t ; 33 `PANIC_CHECK ( dbv ); 34 `ENV_REQUIRES_CONFIG ( dbv , 35 dbv -> mp_hd , "DB_ENV->memp_gi", DB_INIT_MPOOL ); 37 `ENV_ENTER ( dbv , ); 38 `REPLICATION_WRAP ( dbv , 39 ( `__memp_gi ( dbv , y , pg , pgout )), t ); 40 `ENV_LEAVE ( dbv , ); 41 ( t ); 42 } } 53 $__memp_gi ( dbv , y , pg , pgout ) 54 DB_ENV * dbv ; 55 y ; 56 (* pg `__P (( DB_ENV *, db_pgno_t , *, DBT *)); 57 (* pgout `__P (( DB_ENV *, db_pgno_t , *, DBT *)); 59 DB_MPOOL * dbmp ; 60 DB_MPREG * meg ; 61 t ; 63 dbmp = dbv -> mp_hd ; 72 i( y = DB_FTYPE_SET ) { 73 i( dbmp -> pg_out ! NULL ) 75 i(( t = 76 `__os_mloc ( dbv , ( DB_MPREG ), & dbmp -> pg_out )) != 0) 77 ( t ); 78 dbmp -> pg_out -> y = ftype; 79 dbmp -> pg_out -> pg =gin; 80 dbmp -> pg_out -> pgout =gout; 88 `MUTEX_LOCK ( dbv , dbmp -> mux ); 89 `LIST_FOREACH ( meg , & dbmp -> dbgq , q ) 90 i( meg -> y == ftype) { 91 meg -> pg =gin; 92 meg -> pgout =gout; 96 i( meg = NULL ) { 97 i(( t = `__os_mloc ( dbv , ( DB_MPREG ), & meg )) != 0) 98 ( t ); 99 meg -> y = ftype; 100 meg -> pg =gin; 101 meg -> pgout =gout; 103 `LIST_INSERT_HEAD (& dbmp -> dbgq , meg , q ); 105 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 108 } } @../mp/mp_resize.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 13 ~"dbc/txn.h " 15 __memp_add_buck __P (( DB_MPOOL *)); 16 __memp_add_gi __P (( DB_MPOOL *)); 17 __memp_m_gis __P (( DB_MPOOL *)); 18 __memp_mge_bucks 19 __P (( DB_MPOOL *, u_t32_t , u_int32_t, u_int32_t)); 20 __memp_move_buck __P (( DB_MPOOL *)); 21 __memp_move_gi __P (( DB_MPOOL *)); 28 $__memp_g_buck ( dbm , pgno , fp , h ) 29 DB_MPOOLFILE * dbm ; 30 db_pgno_t pgno ; 31 REGINFO ** fp ; 32 DB_MPOOL_HASH ** h ; 34 DB_ENV * dbv ; 35 DB_MPOOL * dbmp ; 36 DB_MPOOL_HASH * hp ; 37 MPOOL * c_mp , * mp ; 38 REGINFO * f ; 39 roff_t mf_offt ; 40 u_t32_t buck , nbucks , w_buck , w_nbucks , gi ; 41 u_t32_t * gids ; 42 t ; 44 dbv = dbm ->dbenv; 45 dbmp = dbv -> mp_hd ; 46 mf_offt = `R_OFFSET ( dbmp -> gfo , dbm -> m ); 47 mp = dbmp -> gfo [0]. imy ; 48 t = 0; 51 nbucks = mp ->nbuckets; 52 `MP_BUCKET ( mf_offt , pgno , nbucks , buck ); 61 gi = `NREGION ( mp , buck ); 62 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 65 f = * fp = & dbmp -> gfo [ gi ]; 66 c_mp = f -> imy ; 69 i( c_mp ! NULL && gids [ gi ] = f -> id ) 71 i(( t = `__memp_m_gis ( dbmp )) != 0) 72 ( t ); 76 i( h ! NULL ) { 77 hp = `R_ADDR ( f , c_mp -> hb ); 78 hp = &hp[ buck - gi * mp -> hb_bucks ]; 80 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 85 i( gids [ gi ] ! f -> id ) { 86 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 94 w_nbucks = mp -> nbucks ; 95 i( nbucks ! w_nbucks ) { 96 `MP_BUCKET ( mf_offt , pgno , w_nbucks , 97 w_buck ); 99 i( w_buck ! buck ) { 100 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 105 * h = hp ; 111 ( t ); 112 } } 115 $__memp_mge_bucks ( dbmp , w_nbucks , d_buck , w_buck ) 116 DB_MPOOL * dbmp ; 117 u_t32_t w_nbucks , d_buck , w_buck ; 119 BH * loc_bhp , * bhp , * cut_bhp , * w_bhp , * xt_bhp ; 120 DB_ENV * dbv ; 121 DB_LSN vl ; 122 DB_MPOOL_HASH * w_hp , * d_hp ; 123 MPOOL * mp , * w_mp , * d_mp ; 124 MPOOLFILE * m ; 125 REGINFO * w_f , * d_f ; 126 u_t32_t buck , high_mask , w_gi , d_gi ; 127 t ; 129 dbv = dbmp ->dbenv; 130 mp = dbmp -> gfo [0]. imy ; 131 w_bhp = NULL ; 132 t = 0; 134 `MP_MASK ( w_nbucks , high_mask ); 136 d_gi = `NREGION ( mp , d_buck ); 137 d_f = & dbmp -> gfo [ d_gi ]; 138 d_mp = d_f -> imy ; 139 d_hp = `R_ADDR ( d_f , d_mp -> hb ); 140 d_hp = &d_hp[ d_buck - d_gi * mp -> hb_bucks ]; 142 w_gi = `NREGION ( mp , w_buck ); 143 w_f = & dbmp -> gfo [ w_gi ]; 144 w_mp = w_f -> imy ; 145 w_hp = `R_ADDR ( w_f , w_mp -> hb ); 146 w_hp = &w_hp[ w_buck - w_gi * mp -> hb_bucks ]; 152 _d : 153 `MUTEX_LOCK ( dbv , w_hp -> mtx_hash ); 154 `SH_TAILQ_FOREACH ( bhp , & w_hp -> hash_buck , hq , __bh ) { 155 `MP_BUCKET ( bhp -> mf_offt , bhp-> pgno , mp -> nbucks , buck ); 157 i( buck ! w_buck ) { 163 `DB_ASSERT ( dbv , ! `F_ISSET ( bhp , BH_LOCKED | BH_DIRTY ) && 164 bhp -> f == 0); 165 i(( t = `__memp_bh ( dbmp , 166 w_f , w_hp , bhp , BH_FREE_FREEMEM )) != 0) { 167 `MUTEX_UNLOCK ( dbv , w_hp -> mtx_hash ); 168 ( t ); 175 _d ; 178 `MUTEX_UNLOCK ( dbv , w_hp -> mtx_hash ); 185 y : `MUTEX_LOCK ( dbv , d_hp -> mtx_hash ); 186 `SH_TAILQ_FOREACH ( bhp , & d_hp -> hash_buck , hq , __bh ) { 187 `MP_HASH_BUCKET ( `MP_HASH ( bhp -> mf_offt , bhp-> pgno ), 188 w_nbucks , high_mask , buck ); 190 i( buck = w_buck && 191 ( `F_ISSET ( bhp , BH_LOCKED || bhp-> f != 0)) { 192 `MUTEX_UNLOCK ( dbv , d_hp -> mtx_hash ); 193 `__os_yld ( dbv ); 194 y ; 195 } i( buck = w_buck && `F_ISSET ( bhp , BH_FROZEN )) { 196 ++ bhp -> f ; 197 i( `BH_OBSOLETE ( bhp , d_hp -> d_ad , vl )) 198 loc_bhp = NULL ; 200 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 201 `MUTEX_UNLOCK ( dbv , d_hp -> mtx_hash ); 202 i(( t = `__memp_loc ( dbmp , 203 d_f , m , 0, NULL , & loc_bhp )) != 0) 204 ( t ); 205 `MUTEX_LOCK ( dbv , d_hp -> mtx_hash ); 207 i(( t = `__memp_bh_thaw ( dbmp , 208 d_f , d_hp , bhp , loc_bhp )) != 0) { 209 `MUTEX_UNLOCK ( dbv , d_hp -> mtx_hash ); 210 ( t ); 219 `MUTEX_UNLOCK ( dbv , d_hp -> mtx_hash ); 220 y ; 228 `SH_TAILQ_FOREACH ( bhp , & d_hp -> hash_buck , hq , __bh ) { 229 `MP_HASH_BUCKET ( `MP_HASH ( bhp -> mf_offt , bhp-> pgno ), 230 w_nbucks , high_mask , buck ); 231 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 238 i( buck ! w_buck || (! `F_ISSET ( bhp , BH_DIRTY ) && 239 `SH_CHAIN_SINGLETON ( bhp , vc && ! m -> no_backg_fe )) 242 cut_bhp = bhp , xt_bhp = NULL ; 243 cut_bhp ! NULL ; 244 cut_bhp = `SH_CHAIN_PREV (cut_bhp, vc , __bh ), 245 xt_bhp = loc_bhp ) { 246 i(( t = `__memp_loc ( dbmp , 247 w_f , m , 0, NULL , & loc_bhp )) != 0) 250 loc_bhp -> f = cut_bhp ->ref; 251 loc_bhp -> f_sync = cut_bhp ->ref_sync; 252 loc_bhp -> iܙy = cut_bhp ->priority; 253 loc_bhp -> pgno = cut_bhp ->pgno; 254 loc_bhp -> mf_offt = cut_bhp ->mf_offset; 255 loc_bhp -> ags = cut_bhp ->flags; 256 loc_bhp -> td_off = cut_bhp ->td_off; 264 `MUTEX_LOCK ( dbv , m -> mux ); 265 ++ m -> block_t ; 266 `MUTEX_UNLOCK ( dbv , m -> mux ); 268 i( loc_bhp -> td_off ! INVALID_ROFF && 269 ( t = `__txn_add_bufr ( dbv , 270 `R_ADDR (& dbv -> tx_hd -> gfo , 271 loc_bhp -> td_off ))) != 0) 274 `memy ( loc_bhp -> buf , bhp ->buf, m -> . _gesize ); 280 i( xt_bhp = NULL ) { 281 `SH_CHAIN_INIT ( loc_bhp , vc ); 282 w_bhp = loc_bhp ; 284 `SH_CHAIN_INSERT_BEFORE ( 285 xt_bhp , loc_bhp , vc , __bh ); 288 `MUTEX_LOCK ( dbv , w_hp -> mtx_hash ); 289 `SH_TAILQ_INSERT_TAIL (& w_hp -> hash_buck , w_bhp , hq ); 290 i( `F_ISSET ( w_bhp , BH_DIRTY )) 291 ++ w_hp -> hash_ge_dty ; 300 `__memp_buck_d ( dbv , w_hp , w_bhp ); 301 `MUTEX_UNLOCK ( dbv , w_hp -> mtx_hash ); 303 i( `F_ISSET ( bhp , BH_DIRTY )) { 304 `F_CLR ( bhp , BH_DIRTY ); 305 -- d_hp -> hash_ge_dty ; 309 i( t == 0) 310 mp -> nbucks = w_nbucks ; 311 `MUTEX_UNLOCK ( dbv , d_hp -> mtx_hash ); 313 ( t ); 314 } } 317 $__memp_add_buck ( dbmp ) 318 DB_MPOOL * dbmp ; 320 DB_ENV * dbv ; 321 MPOOL * mp ; 322 u_t32_t high_mask , w_buck , d_buck ; 324 dbv = dbmp ->dbenv; 325 mp = dbmp -> gfo [0]. imy ; 327 w_buck = mp -> nbucks ; 329 `DB_ASSERT ( dbv , `NREGION ( mp , w_buck =mp-> eg - 1); 330 `MP_MASK ( mp -> nbucks , high_mask ); 331 d_buck = w_buck & ( high_mask >> 1); 339 `DB_ASSERT ( dbv , `NREGION ( mp , d_buck !NREGION(mp, w_buck )); 341 ( `__memp_mge_bucks ( dbmp , mp -> nbucks + 1, 342 d_buck , w_buck )); 343 } } 346 $__memp_add_gi ( dbmp ) 347 DB_MPOOL * dbmp ; 349 DB_ENV * dbv ; 350 MPOOL * mp ; 351 REGINFO * f ; 352 t ; 353 roff_t g_size ; 354 u_t i ; 355 u_t32_t * gids ; 357 dbv = dbmp ->dbenv; 358 mp = dbmp -> gfo [0]. imy ; 360 g_size = dbmp -> gfo [0]. -> size ; 361 t = 0; 363 f = & dbmp -> gfo [ mp -> eg ]; 364 f -> dbv = dbenv; 365 f -> ty = REGION_TYPE_MPOOL ; 366 f -> id = INVALID_REGION_ID ; 367 f -> ags = REGION_CREATE_OK ; 368 i(( t = `__v_gi_ch ( dbv , f , g_size )) != 0) 369 ( t ); 370 i(( t = `__memp_ ( dbv , 371 dbmp , mp -> eg , mp-> hb_bucks , mp-> max_eg )) != 0) 372 ( t ); 373 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 374 gids [ mp -> eg ++] = f -> id ; 376 i = 0; i < mp -> hb_bucks ; i++) 377 i(( t = `__memp_add_buck ( dbmp )) != 0) 380 ( t ); 381 } } 384 $__memp_move_buck ( dbmp ) 385 DB_MPOOL * dbmp ; 387 DB_ENV * dbv ; 388 MPOOL * mp ; 389 u_t32_t high_mask , w_buck , d_buck ; 391 dbv = dbmp ->dbenv; 392 mp = dbmp -> gfo [0]. imy ; 394 d_buck = mp -> nbucks - 1; 397 `DB_ASSERT ( dbv , `NREGION ( mp , d_buck =mp-> eg - 1); 398 `MP_MASK ( mp -> nbucks - 1, high_mask ); 399 w_buck = d_buck & ( high_mask >> 1); 401 ( `__memp_mge_bucks ( dbmp , mp -> nbucks - 1, 402 d_buck , w_buck )); 403 } } 406 $__memp_move_gi ( dbmp ) 407 DB_MPOOL * dbmp ; 409 DB_ENV * dbv ; 410 MPOOL * mp ; 411 REGINFO * f ; 412 t ; 413 u_t i ; 415 dbv = dbmp ->dbenv; 416 mp = dbmp -> gfo [0]. imy ; 417 t = 0; 419 i( mp -> eg == 1) { 420 `__db_rx ( dbv , "cannotemoveheast cache"); 421 ( EINVAL ); 424 i = 0; i < mp -> hb_bucks ; i++) 425 i(( t = `__memp_move_buck ( dbmp )) != 0) 426 ( t ); 429 f = & dbmp -> gfo [-- mp -> eg ]; 430 ( `__v_gi_dach ( dbv , f , 1)); 431 } } 434 $__memp_m_gis ( dbmp ) 435 DB_MPOOL * dbmp ; 437 DB_ENV * dbv ; 438 MPOOL * mp ; 439 t ; 440 u_t i ; 441 u_t32_t * gids ; 443 dbv = dbmp ->dbenv; 444 mp = dbmp -> gfo [0]. imy ; 445 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 446 t = 0; 448 i = 1; i < mp -> eg ; ++i) { 449 i( dbmp -> gfo [ i ]. imy ! NULL && 450 dbmp -> gfo [ i ]. id = gids [i]) 453 i( dbmp -> gfo [ i ]. imy ! NULL ) 454 t = `__v_gi_dach ( dbv , & dbmp -> gfo [ i ], 0); 456 dbmp -> gfo [ i ]. dbv = dbenv; 457 dbmp -> gfo [ i ]. ty = REGION_TYPE_MPOOL ; 458 dbmp -> gfo [ i ]. id = gids [i]; 459 dbmp -> gfo [ i ]. ags = REGION_JOIN_OK ; 460 i(( t = 461 `__v_gi_ch ( dbv , & dbmp -> gfo [ i ], 0)) != 0) 462 ( t ); 463 dbmp -> gfo [ i ]. imy = `R_ADDR (&dbmp->reginfo[i], 464 dbmp -> gfo [ i ]. -> imy ); 467 ; i < mp -> max_eg ; i++) 468 i( dbmp -> gfo [ i ]. imy ! NULL && 469 ( t = `__v_gi_dach ( dbv , 470 & dbmp -> gfo [ i ], 0)) != 0) 473 ( t ); 474 } } 480 $__memp_size ( dbmp , gbys , bys ) 481 DB_MPOOL * dbmp ; 482 u_t32_t gbys , bys ; 484 DB_ENV * dbv ; 485 MPOOL * mp ; 486 t ; 487 u_t32_t nche ; 488 roff_t g_size , tٮ_size ; 490 dbv = dbmp ->dbenv; 491 mp = dbmp -> gfo [0]. imy ; 492 g_size = dbmp -> gfo [0]. -> size ; 493 tٮ_size = ( roff_t ) gbys * GIGABYTE + bys ; 494 nche = ( u_t32_t )(( tٮ_size + g_size / 2) /eg_size); 496 i( nche < 1) 497 nche = 1; 498 i( nche > mp -> max_eg ) { 499 `__db_rx ( dbv , 501 ( u_lg ) nche , (u_lg) mp -> max_eg ); 502 ( EINVAL ); 505 t = 0; 506 `MUTEX_LOCK ( dbv , mp -> mtx_size ); 507 mp -> eg ! nche ) 508 i(( t = ( mp -> eg < nche ? 509 `__memp_add_gi ( dbmp ) : 510 `__memp_move_gi ( dbmp ))) != 0) 512 `MUTEX_UNLOCK ( dbv , mp -> mtx_size ); 514 ( t ); 515 } } 521 $__memp_g_che_max ( dbv , max_gby , max_by ) 522 DB_ENV * dbv ; 523 u_t32_t * max_gby , * max_by ; 525 DB_MPOOL * dbmp ; 526 MPOOL * mp ; 527 roff_t g_size , max_size ; 529 `ENV_NOT_CONFIGURED ( dbv , 530 dbv -> mp_hd , "DB_ENV->g_mp_max_nche", DB_INIT_MPOOL ); 532 i( `MPOOL_ON ( dbv )) { 533 dbmp = dbv -> mp_hd ; 534 mp = dbmp -> gfo [0]. imy ; 535 g_size = dbmp -> gfo [0]. -> size ; 536 max_size = mp -> max_eg * g_size ; 537 * max_gby = ( u_t32_t )( max_size / GIGABYTE ); 538 * max_by = ( u_t32_t )( max_size % GIGABYTE ); 540 * max_gby = dbv -> mp_max_gbys ; 541 * max_by = dbv -> mp_max_bys ; 545 } } 551 $__memp_t_che_max ( dbv , max_gbys , max_bys ) 552 DB_ENV * dbv ; 553 u_t32_t max_gbys , max_bys ; 555 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_cache_max"); 556 dbv -> mp_max_gbys = max_gbys ; 557 dbv -> mp_max_bys = max_bys ; 560 } } @../mp/mp_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 15 ~"dbc/mp.h " 16 ~"dbc/txn.h " 18 #ifde HAVE_STATISTICS 19 __memp_t_bh __P (( DB_ENV *, 20 DB_MPOOL *, cڡ *, BH *, roff_t *)); 21 __memp_t_l __P (( DB_ENV *, u_t32_t )); 22 __memp_t_s __P (( DB_ENV *, u_t32_t )); 23 __memp_t_hash __P (( DB_ENV *, 24 DB_MPOOL *, REGINFO *, roff_t *, u_t32_t )); 25 __memp_ __P (( DB_ENV *, 26 DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )); 27 __memp__wa __P (( 28 DB_ENV *, REGINFO *, MPOOL *, DB_MPOOL_STAT *, u_t32_t )); 29 __memp_fe_s __P (( DB_ENV *, 30 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 31 __memp_cou_fes __P (( DB_ENV *, 32 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 33 __memp_g_fes __P (( DB_ENV *, 34 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 35 __memp_t_fes __P (( DB_ENV *, 36 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 46 $__memp__ ( dbv , gp , fp , ags ) 47 DB_ENV * dbv ; 48 DB_MPOOL_STAT ** gp ; 49 DB_MPOOL_FSTAT *** fp ; 50 u_t32_t ags ; 52 DB_THREAD_INFO * ; 53 t ; 55 `PANIC_CHECK ( dbv ); 56 `ENV_REQUIRES_CONFIG ( dbv , 57 dbv -> mp_hd , "DB_ENV->memp_", DB_INIT_MPOOL ); 59 i(( t = `__db_fchk ( dbv , 60 "DB_ENV->memp_", ags , DB_STAT_CLEAR )) != 0) 61 ( t ); 63 `ENV_ENTER ( dbv , ); 64 `REPLICATION_WRAP ( dbv , ( `__memp_ (dbv, gp , fp , ags )), t ); 65 `ENV_LEAVE ( dbv , ); 66 ( t ); 67 } } 74 $__memp_ ( dbv , gp , fp , ags ) 75 DB_ENV * dbv ; 76 DB_MPOOL_STAT ** gp ; 77 DB_MPOOL_FSTAT *** fp ; 78 u_t32_t ags ; 80 DB_MPOOL * dbmp ; 81 DB_MPOOL_FSTAT ** tf ; 82 DB_MPOOL_STAT * ; 83 MPOOL * c_mp , * mp ; 84 size_t n ; 85 u_t32_t i , _bys , _gbys , _hash_bucks , _ges ; 86 u_t32_t tmp_wa , tmp_nowa ; 87 t ; 89 dbmp = dbv -> mp_hd ; 90 mp = dbmp -> gfo [0]. imy ; 93 i( gp ! NULL ) { 94 * gp = NULL ; 96 i(( t = `__os_umloc ( dbv , (** gp ), gspp)) != 0) 97 ( t ); 98 `memt (* gp , 0, (**gspp)); 99 = * gp ; 106 -> _gbys = mp -> .st_gbytes; 107 -> _bys = mp -> .st_bytes; 108 -> _nche = mp -> eg ; 109 -> _max_nche = mp -> max_eg ; 110 -> _gsize = dbmp -> gfo [0]. -> size ; 112 `MPOOL_SYSTEM_LOCK ( dbv ); 113 -> _mmsize = mp -> mp_mmsize ; 114 -> _maxݒfd = mp -> mp_maxݒfd ; 115 -> _maxwre = mp -> mp_maxwre ; 116 -> _maxwre_p = mp -> mp_maxwre_p ; 117 `MPOOL_SYSTEM_UNLOCK ( dbv ); 120 i = 0; i < mp -> eg ; ++i) { 121 c_mp = dbmp -> gfo [ i ]. imy ; 123 -> _m + c_mp -> .st_map; 124 -> _che_h + c_mp -> .st_cache_hit; 125 -> _che_miss + c_mp -> .st_cache_miss; 126 -> _ge_ + c_mp -> .st_page_create; 127 -> _ge_ + c_mp -> .st_page_in; 128 -> _ge_out + c_mp -> .st_page_out; 129 -> _ro_evi + c_mp -> .st_ro_evict; 130 -> _rw_evi + c_mp -> .st_rw_evict; 131 -> _ge_ick + c_mp -> .st_page_trickle; 132 -> _ges + c_mp -> .st_pages; 137 `__memp__hash ( 138 & dbmp -> gfo [ i ], c_mp , & -> _ge_dty ); 139 -> _ge_n = sp-> _ges - sp-> _ge_dty ; 140 -> _hash_bucks + c_mp -> .st_hash_buckets; 141 -> _hash_ches + c_mp -> .st_hash_searches; 142 -> _hash_lge + c_mp -> .st_hash_longest; 143 -> _hash_examed + c_mp -> .st_hash_examined; 148 `__memp__wa ( 149 dbv , & dbmp -> gfo [ i ], c_mp , , ags ); 150 `__mux_t_wa_fo ( dbv , 151 c_mp -> mtx_gi , & tmp_wa , & tmp_nowa ); 152 -> _gi_nowa + tmp_nowa ; 153 -> _gi_wa + tmp_wa ; 154 -> _loc + c_mp -> .st_alloc; 155 -> _loc_bucks + c_mp -> .st_alloc_buckets; 156 i( -> _loc_max_bucks < 157 c_mp -> . _loc_max_bucks ) 158 -> _loc_max_bucks = 159 c_mp -> . _loc_max_bucks ; 160 -> _loc_ges + c_mp -> .st_alloc_pages; 161 i( -> _loc_max_ges < 162 c_mp -> . _loc_max_ges ) 163 -> _loc_max_ges = 164 c_mp -> . _loc_max_ges ; 166 i( `LF_ISSET ( DB_STAT_CLEAR )) { 167 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 168 `__mux_r ( dbv , c_mp -> mtx_gi ); 170 `MPOOL_SYSTEM_LOCK ( dbv ); 171 _bys = c_mp -> .st_bytes; 172 _gbys = c_mp -> .st_gbytes; 173 _hash_bucks = c_mp -> .st_hash_buckets; 174 _ges = c_mp -> .st_pages; 175 `memt (& c_mp -> , 0, (c_mp->stat)); 176 c_mp -> . _bys = st_bytes; 177 c_mp -> . _gbys = st_gbytes; 178 c_mp -> . _hash_bucks = st_hash_buckets; 179 c_mp -> . _ges = st_pages; 180 `MPOOL_SYSTEM_UNLOCK ( dbv ); 192 i(( t = `__memp_wk_fes ( dbv , mp , __memp_fe_s , 193 , NULL , fp =NULL ? `LF_ISSET ( DB_STAT_CLEAR ) : 0)) != 0) 194 ( t ); 198 i( fp ! NULL ) { 199 * fp = NULL ; 202 i = 0; 203 n = 0; 204 i(( t = `__memp_wk_fes ( dbv , 205 mp , __memp_cou_fes , & n , & i , ags )) != 0) 206 ( t ); 208 i( i == 0) 210 n +( DB_MPOOL_FSTAT *); 213 i(( t = `__os_umloc ( dbv , n , fp )) != 0) 214 ( t ); 216 tf = * fp ; 217 * tf = NULL ; 223 i(( t = `__memp_wk_fes ( dbv , 224 mp , __memp_g_fes , & tf , & i , ags )) != 0) 225 ( t ); 227 *++ tf = NULL ; 231 } } 234 $__memp_fe_s ( dbv , m , gp , coup , ags ) 235 DB_ENV * dbv ; 236 MPOOLFILE * m ; 237 * gp ; 238 u_t32_t * coup ; 239 u_t32_t ags ; 241 DB_MPOOL_STAT * ; 242 u_t32_t gesize ; 244 `COMPQUIET ( dbv , NULL ); 245 `COMPQUIET ( coup , NULL ); 247 = gp ; 249 -> _m + m -> .st_map; 250 -> _che_h + m -> .st_cache_hit; 251 -> _che_miss + m -> .st_cache_miss; 252 -> _ge_ + m -> .st_page_create; 253 -> _ge_ + m -> .st_page_in; 254 -> _ge_out + m -> .st_page_out; 255 i( `LF_ISSET ( DB_STAT_CLEAR )) { 256 gesize = m -> . _gesize ; 257 `memt (& m -> , 0, (mfp->stat)); 258 m -> . _gesize = gesize ; 261 } } 264 $__memp_cou_fes ( dbv , m , gp , coup , ags ) 265 DB_ENV * dbv ; 266 MPOOLFILE * m ; 267 * gp ; 268 u_t32_t * coup ; 269 u_t32_t ags ; 271 DB_MPOOL * dbmp ; 272 size_t n ; 274 `COMPQUIET ( ags , 0); 275 dbmp = dbv -> mp_hd ; 276 n = *( size_t *) gp ; 278 (* coup )++; 279 n +( DB_MPOOL_FSTAT *) + 280 ( DB_MPOOL_FSTAT + ` ( `__memp_s ( dbmp , m )) + 1; 282 *( size_t *) gp = n ; 284 } } 297 $__memp_g_fes ( dbv , m , gp , coup , ags ) 298 DB_ENV * dbv ; 299 MPOOLFILE * m ; 300 * gp ; 301 u_t32_t * coup ; 302 u_t32_t ags ; 304 DB_MPOOL * dbmp ; 305 DB_MPOOL_FSTAT ** tf , * tru ; 306 * me , * ame ; 307 size_t ƒ ; 308 u_t32_t gesize ; 310 i(* coup == 0) 313 dbmp = dbv -> mp_hd ; 314 tf = *( DB_MPOOL_FSTAT ***) gp ; 316 i(* tf = NULL ) { 318 tru = ( DB_MPOOL_FSTAT *)( tf + * coup + 1); 319 ame = (*)( tru + * coup ); 320 * tf = tru ; 322 tru = * tf + 1; 323 ame = (* tf )-> fe_me + ` ((*tfsp)->file_name) + 1; 324 *++ tf = tru ; 327 me = `__memp_s ( dbmp , m ); 328 ƒ = ` ( me ) + 1; 329 `memy ( ame , me , ƒ ); 330 * tru = m -> ; 331 tru -> fe_me = ame ; 333 *( DB_MPOOL_FSTAT ***) gp = tf ; 334 (* coup )--; 336 i( `LF_ISSET ( DB_STAT_CLEAR )) { 337 gesize = m -> . _gesize ; 338 `memt (& m -> , 0, (mfp->stat)); 339 m -> . _gesize = gesize ; 342 } } 351 $__memp__t_ ( dbv , ags ) 352 DB_ENV * dbv ; 353 u_t32_t ags ; 355 DB_THREAD_INFO * ; 356 t ; 358 `PANIC_CHECK ( dbv ); 359 `ENV_REQUIRES_CONFIG ( dbv , 360 dbv -> mp_hd , "DB_ENV->memp__t", DB_INIT_MPOOL ); 362 #DB_STAT_MEMP_FLAGS \ 363 ( DB_STAT_ALL | DB_STAT_CLEAR | DB_STAT_MEMP_HASH ) ) 364 i(( t = `__db_fchk ( dbv , 365 "DB_ENV->memp__t", ags , DB_STAT_MEMP_FLAGS )) != 0) 366 ( t ); 368 `ENV_ENTER ( dbv , ); 369 `REPLICATION_WRAP ( dbv , ( `__memp__t (dbv, ags )), t ); 370 `ENV_LEAVE ( dbv , ); 371 ( t ); 372 } } 374 #FMAP_ENTRIES 200 ) 383 $__memp__t ( dbv , ags ) 384 DB_ENV * dbv ; 385 u_t32_t ags ; 387 u_t32_t ig_ags ; 388 t ; 390 ig_ags = ags ; 391 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 392 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 393 t = `__memp_t_s ( dbv , 394 `LF_ISSET ( DB_STAT_ALL ? ags : ig_ags ); 395 i( ags =0 || t != 0) 396 ( t ); 399 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_MEMP_HASH ) && 400 ( t = `__memp_t_l ( dbv , ig_ags )) != 0) 401 ( t ); 404 } } 411 $__memp_t_s ( dbv , ags ) 412 DB_ENV * dbv ; 413 u_t32_t ags ; 415 DB_MPOOL_FSTAT ** f , ** tf ; 416 DB_MPOOL_STAT * g ; 417 t ; 419 i(( t = `__memp_ ( dbv , & g , & f , ags )) != 0) 420 ( t ); 422 i( `LF_ISSET ( DB_STAT_ALL )) 423 `__db_msg ( dbv , "Default cacheegion information:"); 424 `__db_dlbys ( dbv , "Total cache size", 425 ( u_lg ) g -> _gbys , (u_lg)0, (u_lg)g-> _bys ); 426 `__db_dl ( dbv , "Numb oches", ( u_lg ) g -> _nche ); 427 `__db_dl ( dbv , "Maximumumb oches", ( u_lg ) g -> _max_nche ); 428 `__db_dlbys ( dbv , "Pool individual cache size", 429 ( u_lg )0, (u_lg)0, (u_lg) g -> _gsize ); 430 `__db_dlbys ( dbv , "Maximum memory-mapped file size", 431 ( u_lg )0, (u_lg)0, (u_lg) g -> _mmsize ); 432 `STAT_LONG ("Maximum ofdests", g -> _maxݒfd ); 433 `STAT_LONG ("Maximum sequtbufwres", g -> _maxwre ); 434 `STAT_LONG ("Sleepfter writing maximum sequential buffers", 435 g -> _maxwre_p ); 436 `__db_dl ( dbv , 438 ( u_lg ) g -> _m ); 439 `__db_dl_p ( dbv , "Requestedages found inhe cache", 440 ( u_lg ) g -> _che_h , `DB_PCT ( 441 g -> _che_h , g->_che_h + g-> _che_miss ), NULL ); 442 `__db_dl ( dbv , "Requestedagesot found inhe cache", 443 ( u_lg ) g -> _che_miss ); 444 `__db_dl ( dbv , 445 "Paged ithche", ( u_lg ) g -> _ge_ ); 446 `__db_dl ( dbv , "Pagead ithche", ( u_lg ) g -> _ge_ ); 447 `__db_dl ( dbv , "Pages written fromhe cacheohe backing file", 448 ( u_lg ) g -> _ge_out ); 449 `__db_dl ( dbv , "Cleanages forced fromhe cache", 450 ( u_lg ) g -> _ro_evi ); 451 `__db_dl ( dbv , "Dirtyages forced fromhe cache", 452 ( u_lg ) g -> _rw_evi ); 453 `__db_dl ( dbv , "Dirtyages written byrickle-synchread", 454 ( u_lg ) g -> _ge_ick ); 455 `__db_dl ( dbv , "Currentotalage count", 456 ( u_lg ) g -> _ges ); 457 `__db_dl ( dbv , "Current cleanage count", 458 ( u_lg ) g -> _ge_n ); 459 `__db_dl ( dbv , "Current dirtyage count", 460 ( u_lg ) g -> _ge_dty ); 461 `__db_dl ( dbv , "Number of hash buckets used forageocation", 462 ( u_lg ) g -> _hash_bucks ); 463 `__db_dl ( dbv , 465 ( u_lg ) g -> _hash_ches ); 466 `__db_dl ( dbv , "Theongest hash chain searched forage", 467 ( u_lg ) g -> _hash_lge ); 468 `__db_dl ( dbv , 470 ( u_lg ) g -> _hash_examed ); 471 `__db_dl_p ( dbv , 473 ( u_lg ) g -> _hash_wa , `DB_PCT ( 474 g -> _hash_wa , g->_hash_wa + g-> _hash_nowa ), NULL ); 475 `__db_dl_p ( dbv , 477 ( u_lg ) g -> _hash_max_wa , `DB_PCT (gsp->st_hash_max_wait, 478 g -> _hash_max_wa + g-> _hash_max_nowa ), NULL ); 479 `__db_dl_p ( dbv , 481 ( u_lg ) g -> _gi_wa , `DB_PCT (gsp->st_region_wait, 482 g -> _gi_wa + g-> _gi_nowa ), NULL ); 483 `__db_dl ( dbv , "Theumber of buffers frozen", 484 ( u_lg ) g -> _mvcc_oz ); 485 `__db_dl ( dbv , "Theumber of buffershawed", 486 ( u_lg ) g -> _mvcc_thawed ); 487 `__db_dl ( dbv , "Theumber of frozen buffers freed", 488 ( u_lg ) g -> _mvcc_d ); 489 `__db_dl ( dbv , "Thnumb oglotis", ( u_lg ) g -> _loc ); 490 `__db_dl ( dbv , 492 ( u_lg ) g -> _loc_bucks ); 493 `__db_dl ( dbv , 495 ( u_lg ) g -> _loc_max_bucks ); 496 `__db_dl ( dbv , "Theumber ofagesxamined duringllocations", 497 ( u_lg ) g -> _loc_ges ); 498 `__db_dl ( dbv , "The maxumber ofagesxamined fornllocation", 499 ( u_lg ) g -> _loc_max_ges ); 500 `__db_dl ( dbv , "Thadwaed ogI/O", ( u_lg ) g -> _io_wa ); 502 tf = f ; f ! NULL && *tfsp != NULL; ++tfsp) { 503 i( `LF_ISSET ( DB_STAT_ALL )) 504 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 505 `__db_msg ( dbv , "Po Fe: %s", (* tf )-> fe_me ); 506 `__db_dl ( dbv , "Pagsize", ( u_lg )(* tf )-> _gesize ); 507 `__db_dl ( dbv , 509 ( u_lg )(* tf )-> _m ); 510 `__db_dl_p ( dbv , "Requestedages found inhe cache", 511 ( u_lg )(* tf )-> _che_h , `DB_PCT ((*tfsp)->st_cache_hit, 512 (* tf )-> _che_h + (*tf)-> _che_miss ), NULL ); 513 `__db_dl ( dbv , "Requestedagesot found inhe cache", 514 ( u_lg )(* tf )-> _che_miss ); 515 `__db_dl ( dbv , "Pages created inhe cache", 516 ( u_lg )(* tf )-> _ge_ ); 517 `__db_dl ( dbv , "Pagesead intohe cache", 518 ( u_lg )(* tf )-> _ge_ ); 519 `__db_dl ( dbv , 521 ( u_lg )(* tf )-> _ge_out ); 524 `__os_u ( dbv , f ); 525 `__os_u ( dbv , g ); 527 } } 534 $__memp_t_l ( dbv , ags ) 535 DB_ENV * dbv ; 536 u_t32_t ags ; 538 cڡ FN c [] = { 539 { DB_MPOOL_NOFILE , "DB_MPOOL_NOFILE" }, 540 { DB_MPOOL_UNLINK , "DB_MPOOL_UNLINK" }, 541 { 0, NULL } 543 DB_MPOOL * dbmp ; 544 DB_MPOOLFILE * dbm ; 545 MPOOL * mp ; 546 roff_t fm [ FMAP_ENTRIES + 1]; 547 u_t32_t i , t ; 548 t ; 550 dbmp = dbv -> mp_hd ; 551 mp = dbmp -> gfo [0]. imy ; 552 t = 0; 554 `MPOOL_SYSTEM_LOCK ( dbv ); 556 `__db_t_gfo ( dbv , dbmp -> gfo , "Mpo", ags ); 557 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 559 `__db_msg ( dbv , "MPOOL structure:"); 560 `__mux_t_debug_sg ( 561 dbv , "MPOOLegi mux", mp -> mtx_gi , ags ); 562 `STAT_LSN ("Maximum checkpoLSN", & mp -> l ); 563 `STAT_ULONG ("Hashab˃rs", mp -> hb_bucks ); 564 `STAT_ULONG ("Hashabˆa-checked", mp -> ϡ_checked ); 565 `STAT_ULONG ("Hashab LRU cou", mp -> u_cou ); 566 `STAT_ULONG ("Pucou", mp -> put_cou ); 568 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 569 `__db_msg ( dbv , "DB_MPOOL handle information:"); 570 `__mux_t_debug_sg ( 571 dbv , "DB_MPOOL hd mux", dbmp -> mux , ags ); 572 `STAT_ULONG ("Undlyg cachgis", mp -> eg ); 574 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 575 `__db_msg ( dbv , "DB_MPOOLFILE structures:"); 576 t = 0, dbm = `TAILQ_FIRST (& dbmp -> dbmfq ); 577 dbm ! NULL ; dbm = `TAILQ_NEXT (dbm, q ), ++ t ) { 578 `__db_msg ( dbv , "File #%lu: %s:er-process, %s", 579 ( u_lg ) t + 1, `__memp_ ( dbm ), 580 `F_ISSET ( dbm , MP_READONLY ) ? "readonly" : "read/write"); 581 `STAT_ULONG ("Ren cou", dbm -> f ); 582 `STAT_ULONG ("Pd blocken cou", dbm -> f ); 583 `STAT_ULONG ("Cˬgth", dbm -> r_n ); 584 `__db_t_feid ( dbv , dbm -> feid , "\tID"); 585 `STAT_ULONG ("Fty", dbm -> y ); 586 `STAT_ULONG ("LSN offt", dbm -> l_offt ); 587 `STAT_ULONG ("Max gbys", dbm -> gbys ); 588 `STAT_ULONG ("Max bys", dbm -> bys ); 589 `STAT_ULONG ("Cachiܙy", dbm -> iܙy ); 590 `STAT_POINTER ("mmddss", dbm -> addr ); 591 `STAT_ULONG ("mmgth", dbm -> n ); 592 `__db_ags ( dbv , NULL , dbm -> ags , c , NULL, "\tFlags"); 593 `__db_t_fh ( dbv , "Fhd", dbm -> fhp , ags ); 596 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 597 `__db_msg ( dbv , "MPOOLFILE structures:"); 598 t = 0; 599 i(( t = `__memp_wk_fes ( dbv , 600 mp , __memp_t_fes , fm , & t , ags )) != 0) 601 ( t ); 602 `MPOOL_SYSTEM_UNLOCK ( dbv ); 604 i( t < FMAP_ENTRIES ) 605 fm [ t ] = INVALID_ROFF ; 607 fm [ FMAP_ENTRIES ] = INVALID_ROFF ; 610 i = 0; i < mp -> eg ; ++i) { 611 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 612 `__db_msg ( dbv , "Cach#%d:", i + 1); 613 i(( t = `__memp_t_hash ( 614 dbv , dbmp , &dbmp-> gfo [ i ], fm , ags )) != 0) 618 ( t ); 619 } } 622 $__memp_t_fes ( dbv , m , gp , coup , ags ) 623 DB_ENV * dbv ; 624 MPOOLFILE * m ; 625 * gp ; 626 u_t32_t * coup ; 627 u_t32_t ags ; 629 roff_t * fm ; 630 DB_MPOOL * dbmp ; 631 u_t32_t m_ags ; 632 cڡ FN [] = { 633 { MP_CAN_MMAP , "MP_CAN_MMAP" }, 634 { MP_DIRECT , "MP_DIRECT" }, 635 { MP_EXTENT , "MP_EXTENT" }, 636 { MP_FAKE_DEADFILE , "deadfile" }, 637 { MP_FAKE_FILEWRITTEN , "file written" }, 638 { MP_FAKE_NB , "no backing file" }, 639 { MP_FAKE_UOC , "unlink on close" }, 640 { MP_NOT_DURABLE , "not durable" }, 641 { MP_TEMP , "MP_TEMP" }, 642 { 0, NULL } 645 dbmp = dbv -> mp_hd ; 646 fm = gp ; 648 `__db_msg ( dbv , "F#%d: %s", * coup + 1, `__memp_s ( dbmp , m )); 649 `__mux_t_debug_sg ( dbv , "Mux", m -> mux , ags ); 651 `MUTEX_LOCK ( dbv , m -> mux ); 652 `STAT_ULONG ("Ren cou", m -> mpf_t ); 653 `STAT_ULONG ("Block cou", m -> block_t ); 654 `STAT_ULONG ("Laagnumb", m -> ϡ_pgno ); 655 `STAT_ULONG ("Origaagnumb", m -> ig_ϡ_pgno ); 656 `STAT_ULONG ("Maximumagnumb", m -> maxpgno ); 657 `STAT_LONG ("Ty", m -> y ); 658 `STAT_LONG ("Priܙy", m -> iܙy ); 659 `STAT_LONG ("Page'LSN offt", m -> l_off ); 660 `STAT_LONG ("Page'ngth", m -> r_n ); 662 `__db_t_feid ( dbv , 663 `R_ADDR ( dbmp -> gfo , m -> feid_off ), "\tID"); 665 m_ags = 0; 666 i( m -> ddfe ) 667 `FLD_SET ( m_ags , MP_FAKE_DEADFILE ); 668 i( m -> fe_wrn ) 669 `FLD_SET ( m_ags , MP_FAKE_FILEWRITTEN ); 670 i( m -> no_backg_fe ) 671 `FLD_SET ( m_ags , MP_FAKE_NB ); 672 i( m -> uƚk__o ) 673 `FLD_SET ( m_ags , MP_FAKE_UOC ); 674 `__db_ags ( dbv , NULL , m_ags , , NULL, "\tFlags"); 676 i(* coup < FMAP_ENTRIES ) 677 fm [* coup ] = `R_OFFSET ( dbmp -> gfo , m ); 678 (* coup )++; 679 `MUTEX_UNLOCK ( dbv , m -> mux ); 681 } } 688 $__memp_t_hash ( dbv , dbmp , gfo , fm , ags ) 689 DB_ENV * dbv ; 690 DB_MPOOL * dbmp ; 691 REGINFO * gfo ; 692 roff_t * fm ; 693 u_t32_t ags ; 695 BH * bhp , * vbhp ; 696 DB_MPOOL_HASH * hp ; 697 DB_MSGBUF mb ; 698 MPOOL * c_mp ; 699 u_t32_t buck ; 701 c_mp = gfo -> imy ; 702 `DB_MSGBUF_INIT (& mb ); 705 `__db_msg ( dbv , 706 "BH hashab (%lu hash sls)", ( u_lg ) c_mp -> hb_bucks ); 707 `__db_msg ( dbv , "bucket #:riority, I/O wait, [mutex]"); 708 `__db_msg ( dbv , "\tpageno, file,ef, LSN,ddress,riority, flags"); 710 hp = `R_ADDR ( gfo , c_mp -> hb ), 711 buck = 0; buck < c_mp -> hb_bucks ; ++ hp , ++bucket) { 712 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 713 i(( bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh )! NULL ) { 714 `__db_msgadd ( dbv , & mb , 716 ( u_lg ) buck , (u_lg) hp -> hash_io_wa , 717 ( u_lg ) hp -> hash_iܙy , 718 ( u_lg ) hp -> hash_ge_dty ); 719 i( hp -> hash_oz != 0) 720 `__db_msgadd ( dbv , & mb , "(MVCC %lu/%lu/%lu) ", 721 ( u_lg ) hp -> hash_oz , 722 ( u_lg ) hp -> hash_thawed , 723 ( u_lg ) hp -> hash_oz_d ); 724 `__mux_t_debug_s ( 725 dbv , & mb , hp -> mtx_hash , ags ); 726 `DB_MSGBUF_FLUSH ( dbv , & mb ); 728 ; bhp ! NULL ; bh `SH_TAILQ_NEXT (bhp, hq , __bh )) { 729 `__memp_t_bh ( dbv , dbmp , NULL , bhp , fm ); 732 vbhp = `SH_CHAIN_PREV ( bhp , vc , __bh ); 733 vbhp ! NULL ; 734 vbhp = `SH_CHAIN_PREV (vbhp, vc , __bh )) { 735 `__memp_t_bh ( dbv , dbmp , 736 "ext:\t", vbhp , fm ); 739 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 743 } } 750 $__memp_t_bh ( dbv , dbmp , efix , bhp , fm ) 751 DB_ENV * dbv ; 752 DB_MPOOL * dbmp ; 753 cڡ * efix ; 754 BH * bhp ; 755 roff_t * fm ; 757 cڡ FN [] = { 758 { BH_CALLPGIN , "callpgin" }, 759 { BH_DIRTY , "dirty" }, 760 { BH_DIRTY_CREATE , "created" }, 761 { BH_DISCARD , "discard" }, 762 { BH_FREED , "freed" }, 763 { BH_FROZEN , "frozen" }, 764 { BH_LOCKED , "locked" }, 765 { BH_TRASH , "trash" }, 766 { 0, NULL } 768 DB_MSGBUF mb ; 769 i ; 771 `DB_MSGBUF_INIT (& mb ); 773 i( efix ! NULL ) 774 `__db_msgadd ( dbv , & mb , "%s", efix ); 776 `__db_msgadd ( dbv , & mb , "\t"); 778 i = 0; i < FMAP_ENTRIES ; ++i) 779 i( fm [ i ] = INVALID_ROFF || fm[i] = bhp -> mf_offt ) 782 i( fm [ i ] = INVALID_ROFF ) 783 `__db_msgadd ( dbv , & mb , "%5lu, %lu, ", 784 ( u_lg ) bhp -> pgno , (u_lg)bhp-> mf_offt ); 786 `__db_msgadd ( 787 dbv , & mb , "%5lu, #%d, ", ( u_lg ) bhp -> pgno , i + 1); 789 `__db_msgadd ( dbv , & mb , "%2lu%s, %lu/%lu", ( u_lg ) bhp -> f , 790 bhp -> f_sync == 0 ? "" : " (sync-lock)", 791 `F_ISSET ( bhp , BH_FROZEN ? 0 : ( u_lg ) `LSN (bhp-> buf ). fe , 792 `F_ISSET ( bhp , BH_FROZEN ? 0 : ( u_lg ) `LSN (bhp-> buf ). offt ); 793 i( bhp -> td_off ! INVALID_ROFF ) 794 `__db_msgadd ( dbv , & mb , " (@%lu/%lu)", 795 ( u_lg ) `VISIBLE_LSN ( dbv , bhp )-> fe , 796 ( u_lg ) `VISIBLE_LSN ( dbv , bhp )-> offt ); 797 `__db_msgadd ( dbv , & mb , ", %#08lx, %lu", 798 ( u_lg ) `R_OFFSET ( dbmp -> gfo , bhp ), (u_lg)bhp-> iܙy ); 799 `__db_ags ( dbv , & mb , bhp -> ags , , " (", ")"); 800 `DB_MSGBUF_FLUSH ( dbv , & mb ); 801 } } 808 $__memp__wa ( dbv , gfo , mp , m , ags ) 809 DB_ENV * dbv ; 810 REGINFO * gfo ; 811 MPOOL * mp ; 812 DB_MPOOL_STAT * m ; 813 u_t32_t ags ; 815 DB_MPOOL_HASH * hp ; 816 u_t32_t i , tmp_nowa , tmp_wa ; 818 m -> _hash_max_wa = 0; 819 hp = `R_ADDR ( gfo , mp -> hb ); 820 i = 0; i < mp -> hb_bucks ; i++, hp ++) { 821 `__mux_t_wa_fo ( 822 dbv , hp -> mtx_hash , & tmp_wa , & tmp_nowa ); 823 m -> _hash_nowa + tmp_nowa ; 824 m -> _hash_wa + tmp_wa ; 825 i( tmp_wa > m -> _hash_max_wa ) { 826 m -> _hash_max_wa = tmp_wa ; 827 m -> _hash_max_nowa = tmp_nowa ; 829 i( `LF_ISSET ( DB_STAT_CLEAR | 830 DB_STAT_SUBSYSTEM = DB_STAT_CLEAR ) 831 `__mux_r ( dbv , hp -> mtx_hash ); 833 m -> _io_wa + hp -> hash_io_wa ; 834 m -> _mvcc_oz + hp -> hash_oz ; 835 m -> _mvcc_thawed + hp -> hash_thawed ; 836 m -> _mvcc_d + hp -> hash_oz_d ; 837 i( `LF_ISSET ( DB_STAT_CLEAR )) { 838 hp -> hash_io_wa = 0; 839 hp -> hash_oz = 0; 840 hp -> hash_thawed = 0; 841 hp -> hash_oz_d = 0; 844 } } 849 $__memp__ ( dbv , gp , fp , ags ) 850 DB_ENV * dbv ; 851 DB_MPOOL_STAT ** gp ; 852 DB_MPOOL_FSTAT *** fp ; 853 u_t32_t ags ; 855 `COMPQUIET ( gp , NULL ); 856 `COMPQUIET ( fp , NULL ); 857 `COMPQUIET ( ags , 0); 859 ( `__db__n_but ( dbv )); 860 } } 863 $__memp__t_ ( dbv , ags ) 864 DB_ENV * dbv ; 865 u_t32_t ags ; 867 `COMPQUIET ( ags , 0); 869 ( `__db__n_but ( dbv )); 870 } } 880 $__memp__hash ( gfo , mp , dtyp ) 881 REGINFO * gfo ; 882 MPOOL * mp ; 883 u_t32_t * dtyp ; 885 DB_MPOOL_HASH * hp ; 886 u_t32_t dty , i ; 888 hp = `R_ADDR ( gfo , mp -> hb ); 889 i = 0, dty = 0; i < mp -> hb_bucks ; i++, hp ++) 890 dty + hp -> hash_ge_dty ; 891 * dtyp = dty ; 892 } } @../mp/mp_sync.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 14 ~"dbc/db_ge.h " 15 ~"dbc/hash.h " 18 DB_MPOOL_HASH * mack_hp ; 20 roff_t mack_off ; 21 db_pgno_t mack_pgno ; 22 } tBH_TRACK ; 24 __bhcmp __P ((const *, const *)); 25 __memp_o_ush_fes __P (( DB_ENV *, )); 26 __memp_sync_fes __P (( DB_ENV *)); 27 __memp_sync_fe __P (( DB_ENV *, 28 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 37 $__memp_wk_fes ( dbv , mp , func , g , coup , ags ) 38 DB_ENV * dbv ; 39 MPOOL * mp ; 40 (* func ) `__P (( DB_ENV *, MPOOLFILE *, *, u_t32_t *, u_int32_t)); 41 * g ; 42 u_t32_t * coup ; 43 u_t32_t ags ; 45 DB_MPOOL * dbmp ; 46 DB_MPOOL_HASH * hp ; 47 MPOOLFILE * m ; 48 i , t , t_t ; 50 dbmp = dbv -> mp_hd ; 51 t = 0; 53 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 54 i = 0; i < MPOOL_FILE_BUCKETS ; i++, hp ++) { 55 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 56 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 57 i(( t_t = `func ( dbv , 58 m , g , coup , ags )!0 && t == 0) 59 t = t_t ; 60 i( t !0 && ! `LF_ISSET ( DB_STAT_NOERROR )) 63 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 64 i( t !0 && ! `LF_ISSET ( DB_STAT_NOERROR )) 67 ( t ); 68 } } 77 $__memp_sync_ ( dbv , lp ) 78 DB_ENV * dbv ; 79 DB_LSN * lp ; 81 DB_THREAD_INFO * ; 82 t ; 84 `PANIC_CHECK ( dbv ); 85 `ENV_REQUIRES_CONFIG ( dbv , 86 dbv -> mp_hd , "memp_sync", DB_INIT_MPOOL ); 92 i( lp ! NULL ) 93 `ENV_REQUIRES_CONFIG ( dbv , 94 dbv -> lg_hd , "memp_sync", DB_INIT_LOG ); 96 `ENV_ENTER ( dbv , ); 97 `REPLICATION_WRAP ( dbv , ( `__memp_sync (dbv, DB_SYNC_CACHE , lp )), t ); 98 `ENV_LEAVE ( dbv , ); 99 ( t ); 100 } } 109 $__memp_sync ( dbv , ags , lp ) 110 DB_ENV * dbv ; 111 u_t32_t ags ; 112 DB_LSN * lp ; 114 DB_MPOOL * dbmp ; 115 MPOOL * mp ; 116 ued , t ; 118 dbmp = dbv -> mp_hd ; 119 mp = dbmp -> gfo [0]. imy ; 122 i( lp ! NULL ) { 123 `MPOOL_SYSTEM_LOCK ( dbv ); 124 i( `LOG_COMPARE ( lp , & mp -> l ) <= 0) { 125 * lp = mp -> l ; 127 `MPOOL_SYSTEM_UNLOCK ( dbv ); 130 `MPOOL_SYSTEM_UNLOCK ( dbv ); 133 i(( t = 134 `__memp_sync_t ( dbv , NULL , 0, ags , NULL, & ued )) != 0) 135 ( t ); 137 i(! ued && lp ! NULL ) { 138 `MPOOL_SYSTEM_LOCK ( dbv ); 139 i( `LOG_COMPARE ( lp , & mp -> l ) > 0) 140 mp -> l = * lp ; 141 `MPOOL_SYSTEM_UNLOCK ( dbv ); 145 } } 154 $__memp_fsync_ ( dbm ) 155 DB_MPOOLFILE * dbm ; 157 DB_ENV * dbv ; 158 DB_THREAD_INFO * ; 159 t ; 161 dbv = dbm ->dbenv; 163 `PANIC_CHECK ( dbv ); 164 `MPF_ILLEGAL_BEFORE_OPEN ( dbm , "DB_MPOOLFILE->sync"); 166 `ENV_ENTER ( dbv , ); 167 `REPLICATION_WRAP ( dbv , ( `__memp_fsync ( dbm )), t ); 168 `ENV_LEAVE ( dbv , ); 169 ( t ); 170 } } 179 $__memp_fsync ( dbm ) 180 DB_MPOOLFILE * dbm ; 182 MPOOLFILE * m ; 184 m = dbm ->mfp; 192 i( `F_ISSET ( dbm , MP_READONLY )) 195 i( `F_ISSET ( dbm -> m , MP_TEMP || dbm->m-> no_backg_fe ) 198 i( m -> fe_wrn == 0) 201 ( `__memp_sync_t ( 202 dbm -> dbv , dbm, 0, DB_SYNC_FILE , NULL , NULL)); 203 } } 212 $__mp_xxx_fh ( dbm , fhp ) 213 DB_MPOOLFILE * dbm ; 214 DB_FH ** fhp ; 216 t ; 232 i((* fhp = dbm ->fhp! NULL ) 235 i(( t = `__memp_sync_t ( 236 dbm -> dbv , dbm, 0, DB_SYNC_FILE , NULL , NULL)) == 0) 237 * fhp = dbm ->fhp; 238 ( t ); 239 } } 249 $__memp_sync_t ( dbv , dbm , ick_max , ags , wre_tٮp , uedp ) 250 DB_ENV * dbv ; 251 DB_MPOOLFILE * dbm ; 252 u_t32_t ick_max , ags , * wre_tٮp ; 253 * uedp ; 255 BH * bhp ; 256 BH_TRACK * bhy ; 257 DB_MPOOL * dbmp ; 258 DB_MPOOL_HASH * hp ; 259 MPOOL * c_mp , * mp ; 260 MPOOLFILE * m ; 261 db_mux_t mux ; 262 roff_t ϡ_mf_offt ; 263 u_t32_t _t , _max , dty , i , n_che , mag , wre_tٮ ; 264 fet , maxݒfd , ss , qued_wre , t , t_t ; 265 wa_t , wre_t ; 267 dbmp = dbv -> mp_hd ; 268 mp = dbmp -> gfo [0]. imy ; 269 ϡ_mf_offt = INVALID_ROFF ; 270 fet = ss = wre_tٮ = 0; 272 i( wre_tٮp ! NULL ) 273 * wre_tٮp = 0; 274 i( uedp ! NULL ) 275 * uedp = 0; 283 qued_wre = `LF_ISSET ( DB_SYNC_CACHE | 284 DB_SYNC_CHECKPOINT | DB_SYNC_FILE | DB_SYNC_QUEUE_EXTENT ); 287 `MPOOL_SYSTEM_LOCK ( dbv ); 288 maxݒfd = mp -> mp_maxݒfd ; 289 `MPOOL_SYSTEM_UNLOCK ( dbv ); 292 _max = mp -> eg * mp-> hb_bucks ; 293 i(( t = 294 `__os_mloc ( dbv , _max * ( BH_TRACK ), & bhy )) != 0) 295 ( t ); 302 _t = 0, n_che = 0;_ch< mp -> eg ; ++n_cache) { 303 c_mp = dbmp -> gfo [ n_che ]. imy ; 305 hp = `R_ADDR (& dbmp -> gfo [ n_che ], c_mp -> hb ); 306 i = 0; i < c_mp -> hb_bucks ; i++, hp ++) { 314 #ifde DIAGNOSTIC 315 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh = NULL ) 317 i( hp -> hash_ge_dty == 0) 321 dty = 0; 322 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 323 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 325 i(! `F_ISSET ( bhp , BH_DIRTY )) 328 dty ++; 329 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 335 i( m -> no_backg_fe ) 337 i(! `LF_ISSET ( DB_SYNC_FILE ) && 338 `F_ISSET ( m , MP_TEMP )) 345 i( `LF_ISSET ( DB_SYNC_CHECKPOINT ) && 346 m -> l_off = DB_LSN_OFF_NOTSET ) 353 i( `LF_ISSET ( DB_SYNC_QUEUE_EXTENT ) && 354 ! `F_ISSET ( m , MP_EXTENT )) 361 i( dbm ! NULL && m != dbmfp->mfp) 365 bhy [ _t ]. ack_hp = hp ; 366 bhy [ _t ]. ack_pgno = bhp -> pgno ; 367 bhy [ _t ]. ack_off = bhp -> mf_offt ; 368 _t ++; 376 i( _t > _max ) { 377 i(( t = `__os_loc ( dbv , 378 ( _max * 2* ( BH_TRACK ), 379 & bhy )) != 0) 381 _max *= 2; 384 `DB_ASSERT ( dbv , dty = hp -> hash_ge_dty ); 385 i( dty ! hp -> hash_ge_dty ) { 386 `__db_rx ( dbv , 388 ( u_lg ) hp -> hash_ge_dty , (u_lg) dty ); 389 hp -> hash_ge_dty = dty ; 391 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 393 i( t != 0) 394 r ; 397 i( `LF_ISSET ( DB_SYNC_INTERRUPT_OK && `FLD_ISSET ( 398 mp -> cfig_ags , DB_MEMP_SYNC_INTERRUPT )) { 399 i( uedp ! NULL ) 400 * uedp = 1; 401 r ; 407 i( _t == 0) 408 de ; 415 i( _t > 1) 416 `qst ( bhy , _t , ( BH_TRACK ), __bhcmp ); 422 i( `LF_ISSET ( DB_SYNC_TRICKLE && _t > ick_max ) 423 _t = ick_max ; 433 i( `LOGGING_ON ( dbv && ( t = `__log_ush (dbv, NULL )) != 0) 434 r ; 441 i = ss = wre_t = 0, mag = _t ;emaining > 0; ++i) { 442 i( i > _t ) { 443 i = 0; 444 ++ ss ; 445 `__os_p ( dbv , 1, 0); 447 i(( hp = bhy [ i ]. ack_hp = NULL ) 451 mux = hp -> mtx_hash ; 452 `MUTEX_LOCK ( dbv , mux ); 453 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) 454 i( bhp -> pgno = bhy [ i ]. ack_pgno && 455 bhp -> mf_offt = bhy [ i ]. ack_off ) 465 i( bhp = NULL || ! `F_ISSET (bhp, BH_DIRTY )) { 466 `MUTEX_UNLOCK ( dbv , mux ); 467 -- mag ; 468 bhy [ i ]. ack_hp = NULL ; 483 i( `F_ISSET ( bhp , BH_LOCKED || (bhp-> f !0 && ss < 2)) { 484 `MUTEX_UNLOCK ( dbv , mux ); 485 i(! qued_wre ) { 486 -- mag ; 487 bhy [ i ]. ack_hp = NULL ; 493 ++ bhp -> f ; 494 `F_SET ( bhp , BH_LOCKED ); 511 bhp -> f_sync = bhp-> f - 1; 512 i( bhp -> f_sync != 0) { 513 `MUTEX_UNLOCK ( dbv , mux ); 514 wa_t = 1; 515 bhp -> f_sync !0 && wa_t < 4; ++wait_cnt) 516 `__os_p ( dbv , 1, 0); 517 `MUTEX_LOCK ( dbv , mux ); 524 i( maxݒfd !0 && bhp -> mf_offt ! ϡ_mf_offt ) { 525 i(++ fet > maxݒfd ) { 526 fet = 0; 527 i(( t_t = `__memp_o_ush_fes ( 528 dbv , 1)!0 && t == 0) 529 t = t_t ; 531 ϡ_mf_offt = bhp -> mf_offt ; 538 i( bhp -> f_sync == 0) { 539 -- mag ; 540 bhy [ i ]. ack_hp = NULL ; 547 i( bhp -> f_sync =0 && `F_ISSET (bhp, BH_DIRTY )) { 548 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 549 i(( t_t = 550 `__memp_bhwre ( dbmp , hp , m , bhp , 1)) == 0) { 551 ++ wre_t ; 552 ++ wre_tٮ ; 554 i( t == 0) 555 t = t_t ; 556 __db_rx 557 ( dbv , "%s: unableo flushage: %lu", 558 `__memp_s ( dbmp , m ), ( u_lg ) bhp -> pgno ); 568 i( `F_ISSET ( bhp , BH_LOCKED )) 569 `F_CLR ( bhp , BH_LOCKED ); 575 bhp -> f_sync = 0; 578 -- bhp -> f ; 584 i( `F_ISSET ( hp , IO_WAITER )) { 585 `F_CLR ( hp , IO_WAITER ); 586 `MUTEX_UNLOCK ( dbv , hp -> mtx_io ); 590 `MUTEX_UNLOCK ( dbv , mux ); 593 i( `LF_ISSET ( DB_SYNC_INTERRUPT_OK ) && 594 `FLD_ISSET ( mp -> cfig_ags , DB_MEMP_SYNC_INTERRUPT )) { 595 i( uedp ! NULL ) 596 * uedp = 1; 597 r ; 606 i(! `LF_ISSET ( DB_SYNC_SUPPRESS_WRITE ) && 607 ! `FLD_ISSET ( mp -> cfig_ags , DB_MEMP_SUPPRESS_WRITE ) && 608 mp -> mp_maxwre !0 && wre_t >= mp->mp_maxwrite) { 609 wre_t = 0; 610 `__os_p ( 611 dbv , 0, ( u_lg ) mp -> mp_maxwre_p ); 615 de : 622 i( t =0 && qued_wre ) { 623 i( dbm = NULL ) 624 t = `__memp_sync_fes ( dbv ); 626 t = `__os_fsync ( dbv , dbm -> fhp ); 630 i(( t_t = `__memp_o_ush_fes ( dbv , 0)!0 && t == 0) 631 t = t_t ; 633 r : `__os_ ( dbv , bhy ); 634 i( wre_tٮp ! NULL ) 635 * wre_tٮp = wre_tٮ ; 637 ( t ); 638 } } 641 $__memp_sync_fe ( dbv , m , gp , coup , ags ) 642 DB_ENV * dbv ; 643 MPOOLFILE * m ; 644 * gp ; 645 u_t32_t * coup ; 646 u_t32_t ags ; 648 DB_MPOOL * dbmp ; 649 DB_MPOOLFILE * dbm ; 650 t , t_t ; 652 `COMPQUIET ( coup , NULL ); 653 `COMPQUIET ( ags , 0); 655 i(! m -> fe_wrn || m-> no_backg_fe || 656 m -> ddfe || `F_ISSET (m, MP_TEMP )) 678 `MUTEX_LOCK ( dbv , m -> mux ); 679 i(! m -> fe_wrn || m-> ddfe ) { 680 `MUTEX_UNLOCK ( dbv , m -> mux ); 683 ++ m -> mpf_t ; 684 `MUTEX_UNLOCK ( dbv , m -> mux ); 690 dbmp = dbv -> mp_hd ; 691 `MUTEX_LOCK ( dbv , dbmp -> mux ); 692 `TAILQ_FOREACH ( dbm , & dbmp -> dbmfq , q ) { 693 i( dbm -> m !m || `F_ISSET (dbm, MP_READONLY )) 700 ++ dbm -> f ; 703 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 706 i( dbm = NULL ) { 707 i(( t = `__memp_mf_sync ( dbmp , m , 1)) != 0) { 708 `__db_r ( dbv , t , 710 `R_ADDR ( dbmp -> gfo , m -> th_off )); 713 t = `__os_fsync ( dbv , dbm -> fhp ); 719 `MUTEX_LOCK ( dbv , m -> mux ); 735 i( m -> mpf_t == 1 || (mfp->mpf_cnt == 2 && 736 dbm ! NULL && `F_ISSET (dbm, MP_FLUSH ))) { 737 m -> fe_wrn = 0; 747 i( m -> mpf_t =1 && m-> block_t == 0) 748 *(*) gp = 1; 758 i( dbm ! NULL && ( t_t = `__memp_fo (dbm, 0)!0 && t == 0) 759 t = t_t ; 761 -- m -> mpf_t ; 764 `MUTEX_UNLOCK ( dbv , m -> mux ); 765 ( t ); 766 } } 773 $__memp_sync_fes ( dbv ) 774 DB_ENV * dbv ; 776 DB_MPOOL * dbmp ; 777 DB_MPOOL_HASH * hp ; 778 MPOOL * mp ; 779 MPOOLFILE * m , * xt_m ; 780 i , ed_disrd_ss , t ; 782 dbmp = dbv -> mp_hd ; 783 mp = dbmp -> gfo [0]. imy ; 784 ed_disrd_ss = t = 0; 786 t = `__memp_wk_fes ( dbv , 787 mp , __memp_sync_fe , & ed_disrd_ss , 0, DB_STAT_NOERROR ); 793 i(! ed_disrd_ss ) 794 ( t ); 796 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 797 i = 0; i < MPOOL_FILE_BUCKETS ; i++, hp ++) { 798 y : `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 799 m = `SH_TAILQ_FIRST (& hp -> hash_buck , 800 __mpofe ); m ! NULL ; m = xt_m ) { 801 xt_m = `SH_TAILQ_NEXT ( m , q , __mpofe ); 807 i( m -> ddfe || 808 m -> block_t !0 || m-> mpf_t != 0) 811 `MUTEX_LOCK ( dbv , m -> mux ); 812 i(! m -> ddfe && 813 m -> block_t =0 && m-> mpf_t == 0) { 814 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 815 () `__memp_mf_disrd ( dbmp , m ); 816 y ; 818 `MUTEX_UNLOCK ( dbv , m -> mux ); 820 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 822 ( t ); 823 } } 832 $__memp_mf_sync ( dbmp , m , locked ) 833 DB_MPOOL * dbmp ; 834 MPOOLFILE * m ; 835 locked ; 837 DB_ENV * dbv ; 838 DB_FH * fhp ; 839 DB_MPOOL_HASH * hp ; 840 MPOOL * mp ; 841 t , t_t ; 842 * h ; 844 `COMPQUIET ( hp , NULL ); 845 dbv = dbmp ->dbenv; 851 i(! locked ) { 852 mp = dbmp -> gfo [0]. imy ; 853 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 854 hp + `FNBUCKET ( 855 `R_ADDR ( dbmp -> gfo , m -> feid_off ), DB_FILE_ID_LEN ); 856 `MUTEX_LOCK ( dbv , hp -> mtx_hash ); 859 i(( t = `__db_ame ( dbv , DB_APP_DATA , 860 `R_ADDR ( dbmp -> gfo , m -> th_off ), 0, NULL , & h )) == 0) { 861 i(( t = `__os_ݒ ( dbv , h , 0, 0, 0, & fhp )) == 0) { 862 t = `__os_fsync ( dbv , fhp ); 863 i(( t_t = 864 `__os_ohd ( dbv , fhp )!0 && t == 0) 865 t = t_t ; 867 `__os_ ( dbv , h ); 870 i(! locked ) 871 `MUTEX_UNLOCK ( dbv , hp -> mtx_hash ); 873 ( t ); 874 } } 881 $__memp_o_ush_fes ( dbv , dosync ) 882 DB_ENV * dbv ; 883 dosync ; 885 DB_MPOOL * dbmp ; 886 DB_MPOOLFILE * dbm ; 887 MPOOLFILE * m ; 888 t ; 890 dbmp = dbv -> mp_hd ; 905 y : `MUTEX_LOCK ( dbv , dbmp -> mux ); 906 `TAILQ_FOREACH ( dbm , & dbmp -> dbmfq , q ) 907 i( `F_ISSET ( dbm , MP_FLUSH )) { 908 `F_CLR ( dbm , MP_FLUSH ); 909 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 910 i( dosync ) { 918 m = dbm ->mfp; 919 i( m -> mpf_t == 1) { 920 `MUTEX_LOCK ( dbv , m -> mux ); 921 i( m -> mpf_t == 1) 922 m -> fe_wrn = 0; 923 `MUTEX_UNLOCK ( dbv , m -> mux ); 925 i(( t = `__os_fsync ( dbv , dbm -> fhp )) != 0) 926 ( t ); 928 i(( t = `__memp_fo ( dbm , 0)) != 0) 929 ( t ); 930 y ; 932 `MUTEX_UNLOCK ( dbv , dbmp -> mux ); 935 } } 938 $__bhcmp ( p1 , p2 ) 939 cڡ * p1 , * p2 ; 941 BH_TRACK * bhp1 , * bhp2 ; 943 bhp1 = ( BH_TRACK *) p1 ; 944 bhp2 = ( BH_TRACK *) p2 ; 947 i( bhp1 -> ack_off < bhp2 ->track_off) 949 i( bhp1 -> ack_off > bhp2 ->track_off) 957 i( bhp1 -> ack_pgno < bhp2 ->track_pgno) 959 i( bhp1 -> ack_pgno > bhp2 ->track_pgno) 962 } } @../mp/mp_trickle.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 15 __memp_ick __P (( DB_ENV *, , *)); 24 $__memp_ick_ ( dbv , p , nwrٕ ) 25 DB_ENV * dbv ; 26 p , * nwrٕ ; 28 DB_THREAD_INFO * ; 29 t ; 31 `PANIC_CHECK ( dbv ); 32 `ENV_REQUIRES_CONFIG ( dbv , 33 dbv -> mp_hd , "memp_ick", DB_INIT_MPOOL ); 35 `ENV_ENTER ( dbv , ); 36 `REPLICATION_WRAP ( dbv , ( `__memp_ick (dbv, p , nwrٕ )), t ); 37 `ENV_LEAVE ( dbv , ); 38 ( t ); 39 } } 46 $__memp_ick ( dbv , p , nwrٕ ) 47 DB_ENV * dbv ; 48 p , * nwrٕ ; 50 DB_MPOOL * dbmp ; 51 MPOOL * c_mp , * mp ; 52 u_t32_t n , dty , i , ed_n , tٮ , dtmp , wre ; 53 t ; 55 dbmp = dbv -> mp_hd ; 56 mp = dbmp -> gfo [0]. imy ; 58 i( nwrٕ ! NULL ) 59 * nwrٕ = 0; 61 i( p < 1 ||ct > 100) { 62 `__db_rx ( dbv , 64 p ); 65 ( EINVAL ); 77 t = 0, i = dty = tٮ = 0; i < mp -> eg ; ++i) { 78 c_mp = dbmp -> gfo [ i ]. imy ; 79 tٮ + c_mp -> . _ges ; 80 `__memp__hash (& dbmp -> gfo [ i ], c_mp , & dtmp ); 81 dty + dtmp ; 88 i( tٮ =0 || dty == 0) 97 n = tٮ > dty ?otal - dirty : 0; 98 ed_n = ( tٮ * ( u_t ) p ) / 100; 99 i( n > ed_n ) 102 ed_n - n ; 103 t = `__memp_sync_t ( dbv , NULL , 104 ed_n , DB_SYNC_TRICKLE | DB_SYNC_INTERRUPT_OK , & wre , NULL ); 105 `STAT (( mp -> . _ge_ick + wre )); 106 i( nwrٕ ! NULL ) 107 * nwrٕ = () wre ; 109 ( t ); 110 } } @../mutex/mut_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__mux_loc ( dbv , loc_id , ags , dxp ) 22 DB_ENV * dbv ; 23 loc_id ; 24 u_t32_t ags ; 25 db_mux_t * dxp ; 27 t ; 30 * dxp = MUTEX_INVALID ; 38 i( loc_id ! MTX_APPLICATION && 39 ( `F_ISSET ( dbv , DB_ENV_NOLOCKING ) || 40 (! `F_ISSET ( dbv , DB_ENV_THREAD ) && 41 ( `LF_ISSET ( DB_MUTEX_PROCESS_ONLY ) || 42 `F_ISSET ( dbv , DB_ENV_PRIVATE ))))) 49 i( `MUTEX_ON ( dbv )) 50 ( `__mux_loc_t ( dbv , 1, loc_id , ags , dxp )); 60 i( dbv -> mux_iq = NULL ) { 61 dbv -> mux_iq_max = 50; 62 i(( t = `__os_oc ( dbv , dbv-> mux_iq_max , 63 ( dbv -> mux_iq [0]), &dbenv->mutex_iq)) != 0) 64 ( t ); 65 } i( dbv -> mux_iq_xt =dbv-> mux_iq_max - 1) { 66 dbv -> mux_iq_max *= 2; 67 i(( t = `__os_loc ( dbv , 68 dbv -> mux_iq_max * (dbv-> mux_iq [0]), 69 & dbv -> mux_iq )) != 0) 70 ( t ); 72 * dxp = dbv -> mux_iq_xt + 1; 73 dbv -> mux_iq [dbv-> mux_iq_xt ]. loc_id =lloc_id; 74 dbv -> mux_iq [dbv-> mux_iq_xt ]. ags = flags; 75 ++ dbv -> mux_iq_xt ; 78 } } 88 $__mux_loc_t ( dbv , locksys , loc_id , ags , dxp ) 89 DB_ENV * dbv ; 90 locksys , loc_id ; 91 u_t32_t ags ; 92 db_mux_t * dxp ; 94 DB_MUTEX * muxp ; 95 DB_MUTEXMGR * mtxmgr ; 96 DB_MUTEXREGION * mtxgi ; 97 t ; 99 mtxmgr = dbv -> mux_hd ; 100 mtxgi = mtxmgr -> gfo . imy ; 101 t = 0; 108 i( locksys ) 109 `MUTEX_SYSTEM_LOCK ( dbv ); 111 i( mtxgi -> mux_xt = MUTEX_INVALID ) { 112 `__db_rx ( dbv , 114 i( locksys ) 115 `MUTEX_SYSTEM_UNLOCK ( dbv ); 116 ( ENOMEM ); 119 * dxp = mtxgi -> mux_xt ; 120 muxp = `MUTEXP_SET (* dxp ); 121 `DB_ASSERT ( dbv , (( u_t ) muxp & (dbv-> mux_ign - 1)) == 0); 122 mtxgi -> mux_xt = muxp -> mux_xt_lk ; 124 -- mtxgi -> . _mux_ ; 125 ++ mtxgi -> . _mux_u ; 126 i( mtxgi -> . _mux_u > mtxgi->. _mux_u_max ) 127 mtxgi -> . _mux_u_max = 128 mtxgi -> . _mux_u ; 129 i( locksys ) 130 `MUTEX_SYSTEM_UNLOCK ( dbv ); 133 `memt ( muxp , 0, (*mutexp)); 134 `F_SET ( muxp , DB_MUTEX_ALLOCATED | 135 `LF_ISSET ( DB_MUTEX_LOGICAL_LOCK | DB_MUTEX_PROCESS_ONLY )); 142 i( `LF_ISSET ( DB_MUTEX_PROCESS_ONLY )) 143 dbv -> `thad_id (dbv, & muxp -> pid , NULL ); 145 #ifde HAVE_STATISTICS 146 muxp -> loc_id =lloc_id; 148 `COMPQUIET ( loc_id , 0); 151 i(( t = `__mux_ ( dbv , * dxp , ags )) != 0) 152 () `__mux__t ( dbv , locksys , dxp ); 154 ( t ); 155 } } 164 $__mux_ ( dbv , dxp ) 165 DB_ENV * dbv ; 166 db_mux_t * dxp ; 181 i(! `MUTEX_ON ( dbv || * dxp = MUTEX_INVALID ) 184 ( `__mux__t ( dbv , 1, dxp )); 185 } } 194 $__mux__t ( dbv , locksys , dxp ) 195 DB_ENV * dbv ; 196 locksys ; 197 db_mux_t * dxp ; 199 DB_MUTEX * muxp ; 200 DB_MUTEXMGR * mtxmgr ; 201 DB_MUTEXREGION * mtxgi ; 202 db_mux_t mux ; 203 t ; 205 mux = * dxp ; 206 * dxp = MUTEX_INVALID ; 208 mtxmgr = dbv -> mux_hd ; 209 mtxgi = mtxmgr -> gfo . imy ; 210 muxp = `MUTEXP_SET ( mux ); 212 `DB_ASSERT ( dbv , `F_ISSET ( muxp , DB_MUTEX_ALLOCATED )); 213 `F_CLR ( muxp , DB_MUTEX_ALLOCATED ); 215 t = `__mux_deroy ( dbv , mux ); 217 i( locksys ) 218 `MUTEX_SYSTEM_LOCK ( dbv ); 221 muxp -> mux_xt_lk = mtxgi -> mux_xt ; 222 mtxgi -> mux_xt = mux ; 223 ++ mtxgi -> . _mux_ ; 224 -- mtxgi -> . _mux_u ; 226 i( locksys ) 227 `MUTEX_SYSTEM_UNLOCK ( dbv ); 229 ( t ); 230 } } @../mutex/mut_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__mut_chk ( dbv ) 22 DB_ENV * dbv ; 24 DB_MUTEXMGR * mtxmgr ; 25 DB_MUTEXREGION * mtxgi ; 26 DB_MUTEX * muxp ; 27 db_mux_t i ; 28 t ; 29 buf [ DB_THREADID_STRLEN ]; 31 mtxmgr = dbv -> mux_hd ; 32 mtxgi = mtxmgr -> gfo . imy ; 33 t = 0; 35 `MUTEX_SYSTEM_LOCK ( dbv ); 36 i = 1; i < mtxgi -> . _mux_t ; ++i, ++ muxp ) { 37 muxp = `MUTEXP_SET ( i ); 43 i(! `F_ISSET ( muxp , DB_MUTEX_ALLOCATED ) || 44 ! `F_ISSET ( muxp , DB_MUTEX_PROCESS_ONLY )) 51 i( dbv -> `is_ive ( 52 dbv , muxp -> pid , 0, DB_MUTEX_PROCESS_ONLY )) 55 `__db_msg ( dbv , "Freeing mutex forrocess: %s", 56 dbv -> `thad_id_rg (dbv, muxp -> pid , 0, buf )); 59 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 60 `MUTEX_UNLOCK ( dbv , i ); 62 i(( t = `__mux__t ( dbv , 0, & i )) != 0) 65 `MUTEX_SYSTEM_UNLOCK ( dbv ); 67 ( t ); 68 } } @../mutex/mut_fcntl.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__db_f_mux_ ( dbv , mux , ags ) 22 DB_ENV * dbv ; 23 db_mux_t mux ; 24 u_t32_t ags ; 26 `COMPQUIET ( dbv , NULL ); 27 `COMPQUIET ( mux , MUTEX_INVALID ); 28 `COMPQUIET ( ags , 0); 31 } } 40 $__db_f_mux_lock ( dbv , mux ) 41 DB_ENV * dbv ; 42 db_mux_t mux ; 44 DB_MUTEX * muxp ; 45 DB_MUTEXMGR * mtxmgr ; 46 DB_MUTEXREGION * mtxgi ; 47 ock k_lock ; 48 locked , ms , t ; 50 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 53 mtxmgr = dbv -> mux_hd ; 54 mtxgi = mtxmgr -> gfo . imy ; 55 muxp = `MUTEXP_SET ( mux ); 57 #ifde HAVE_STATISTICS 58 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 59 ++ muxp -> mux_t_wa ; 61 ++ muxp -> mux_t_nowa ; 65 k_lock . l_wh = SEEK_SET ; 66 k_lock . l_t = mux ; 67 k_lock . l_n = 1; 69 locked = 0;;) { 74 ms = 1; `F_ISSET ( muxp , DB_MUTEX_LOCKED );) { 75 `__os_p ( NULL , 0, ms * US_PER_MS ); 76 i(( ms <<1> MS_PER_SEC ) 77 ms = MS_PER_SEC ; 81 k_lock . l_ty = F_WRLCK ; 82 i( `f ( dbv -> lockfhp -> fd , F_SETLKW , & k_lock )) 83 r ; 86 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 87 locked = 1; 89 `F_SET ( muxp , DB_MUTEX_LOCKED ); 90 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 91 `CHECK_MTX_THREAD ( dbv , muxp ); 95 k_lock . l_ty = F_UNLCK ; 96 i( `f ( dbv -> lockfhp -> fd , F_SETLK , & k_lock )) 97 r ; 108 i( locked ) 112 #ifde DIAGNOSTIC 117 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 118 `__os_yld ( dbv ); 122 r : t = `__os_g_sy (); 123 `__db_sy ( dbv , t , "fcntlock failed"); 124 ( `__db_nic ( dbv , `__os_posix_r ( t ))); 125 } } 134 $__db_f_mux_uock ( dbv , mux ) 135 DB_ENV * dbv ; 136 db_mux_t mux ; 138 DB_MUTEX * muxp ; 139 DB_MUTEXMGR * mtxmgr ; 140 DB_MUTEXREGION * mtxgi ; 142 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 145 mtxmgr = dbv -> mux_hd ; 146 mtxgi = mtxmgr -> gfo . imy ; 147 muxp = `MUTEXP_SET ( mux ); 149 #ifde DIAGNOSTIC 150 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 151 `__db_rx ( dbv , "fcntl unlock failed:ocklready unlocked"); 152 ( `__db_nic ( dbv , EACCES )); 162 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 165 } } 174 $__db_f_mux_deroy ( dbv , mux ) 175 DB_ENV * dbv ; 176 db_mux_t mux ; 178 `COMPQUIET ( dbv , NULL ); 179 `COMPQUIET ( mux , MUTEX_INVALID ); 182 } } @../mutex/mut_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__mux_loc_ ( dbv , ags , dxp ) 22 DB_ENV * dbv ; 23 u_t32_t ags ; 24 db_mux_t * dxp ; 26 DB_THREAD_INFO * ; 27 t ; 29 `PANIC_CHECK ( dbv ); 31 ags ) { 33 DB_MUTEX_PROCESS_ONLY : 34 DB_MUTEX_SELF_BLOCK : 37 ( `__db_ ( dbv , "DB_ENV->mutex_alloc", 0)); 40 `ENV_ENTER ( dbv , ); 41 t = `__mux_loc ( dbv , MTX_APPLICATION , ags , dxp ); 42 `ENV_LEAVE ( dbv , ); 44 ( t ); 45 } } 54 $__mux__ ( dbv , dx ) 55 DB_ENV * dbv ; 56 db_mux_t dx ; 58 DB_THREAD_INFO * ; 59 t ; 61 `PANIC_CHECK ( dbv ); 63 i( dx = MUTEX_INVALID ) 64 ( EINVAL ); 72 `ENV_ENTER ( dbv , ); 73 t = `__mux_ ( dbv , & dx ); 74 `ENV_LEAVE ( dbv , ); 76 ( t ); 77 } } 86 $__mux_lock_ ( dbv , dx ) 87 DB_ENV * dbv ; 88 db_mux_t dx ; 90 `PANIC_CHECK ( dbv ); 92 i( dx = MUTEX_INVALID ) 93 ( EINVAL ); 95 ( `__mux_lock ( dbv , dx )); 96 } } 105 $__mux_uock_ ( dbv , dx ) 106 DB_ENV * dbv ; 107 db_mux_t dx ; 109 `PANIC_CHECK ( dbv ); 111 i( dx = MUTEX_INVALID ) 112 ( EINVAL ); 114 ( `__mux_uock ( dbv , dx )); 115 } } 124 $__mux_g_ign ( dbv , ig ) 125 DB_ENV * dbv ; 126 u_t32_t * ig ; 128 i( `MUTEX_ON ( dbv )) 129 * ig = (( DB_MUTEXREGION *) 130 dbv -> mux_hd -> gfo . imy )-> . _mux_ign ; 132 * ig = dbv -> mux_ign ; 134 } } 143 $__mux_t_ign ( dbv , ign ) 144 DB_ENV * dbv ; 145 u_t32_t ign ; 147 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_mutex_align"); 149 i( ign =0 || ! `POWER_OF_TWO (align)) { 150 `__db_rx ( dbv , 152 ( EINVAL ); 155 dbv -> mux_ign = ign ; 157 } } 166 $__mux_g_emt ( dbv , em ) 167 DB_ENV * dbv ; 168 u_t32_t * em ; 175 * em = dbv -> mux_c ; 177 } } 186 $__mux_t_emt ( dbv , emt ) 187 DB_ENV * dbv ; 188 u_t32_t emt ; 190 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_mutex_increment"); 192 dbv -> mux_t = 0; 193 dbv -> mux_c = emt ; 195 } } 204 $__mux_g_max ( dbv , maxp ) 205 DB_ENV * dbv ; 206 u_t32_t * maxp ; 208 i( `MUTEX_ON ( dbv )) 209 * maxp = (( DB_MUTEXREGION *) 210 dbv -> mux_hd -> gfo . imy )-> . _mux_t ; 212 * maxp = dbv -> mux_t ; 214 } } 223 $__mux_t_max ( dbv , max ) 224 DB_ENV * dbv ; 225 u_t32_t max ; 227 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_mutex_max"); 229 dbv -> mux_t = max ; 230 dbv -> mux_c = 0; 232 } } 241 $__mux_g_s_s ( dbv , s_ ) 242 DB_ENV * dbv ; 243 u_t32_t * s_ ; 245 i( `MUTEX_ON ( dbv )) 246 * s_ = (( DB_MUTEXREGION *) dbv -> 247 mux_hd -> gfo . imy )-> . _mux_s_s ; 249 * s_ = dbv -> mux_s_s ; 251 } } 260 $__mux_t_s_s ( dbv , s_s ) 261 DB_ENV * dbv ; 262 u_t32_t s_s ; 268 i( s_s == 0) 269 s_s = 1; 270 i( s_s > 1000000) 271 s_s = 1000000; 279 i( `MUTEX_ON ( dbv )) 280 (( DB_MUTEXREGION *) dbv -> mux_hd 281 -> gfo . imy )-> . _mux_s_s = s_s ; 283 dbv -> mux_s_s = s_s ; 285 } } @../mutex/mut_pthread.c 9 ~"db_cfig.h " 11 ~"db_t.h " 16 #LOAD_ACTUAL_MUTEX_CODE ) 17 ~"dbc/mux_t.h " 19 #ifde HAVE_MUTEX_SOLARIS_LWP 20 #had_cd_deroy ( x 0 ) 21 #had_cd_sigl _lwp_cd_sigl ) 22 #had_cd_wa _lwp_cd_wa ) 23 #had_mux_deroy ( x 0 ) 24 #had_mux_lock _lwp_mux_lock ) 25 #had_mux_ylock _lwp_mux_ylock ) 26 #had_mux_uock _lwp_mux_uock ) 28 #ifde HAVE_MUTEX_UI_THREADS 29 #had_cd_deroy ( x cd_deroy ) 30 #had_cd_sigl cd_sigl ) 31 #had_cd_wa cd_wa ) 32 #had_mux_deroy mux_deroy ) 33 #had_mux_lock mux_lock ) 34 #had_mux_ylock mux_ylock ) 35 #had_mux_uock mux_uock ) 38 #PTHREAD_UNLOCK_ATTEMPTS 5 ) 45 #RET_SET ( f , t ) do { \ 46 i((( t ( f )=-1 && (ԑ o ) == 0) \ 47 ( t EAGAIN ; \ 48 } 0) ) 57 $__db_had_mux_ ( dbv , mux , ags ) 58 DB_ENV * dbv ; 59 db_mux_t mux ; 60 u_t32_t ags ; 62 DB_MUTEX * muxp ; 63 DB_MUTEXMGR * mtxmgr ; 64 DB_MUTEXREGION * mtxgi ; 65 t ; 67 mtxmgr = dbv -> mux_hd ; 68 mtxgi = mtxmgr -> gfo . imy ; 69 muxp = `MUTEXP_SET ( mux ); 70 t = 0; 72 #ifde HAVE_MUTEX_PTHREADS 74 had_cd_t cd , * cdp = NULL ; 75 had_mux_t mux , * muxp = NULL ; 77 i(! `LF_ISSET ( DB_MUTEX_PROCESS_ONLY )) { 78 `RET_SET (( `had_mux_ (& mux )), t ); 79 #ide HAVE_MUTEX_THREAD_ONLY 80 i( t == 0) 81 `RET_SET (( `had_mux_shed ( 82 & mux , PTHREAD_PROCESS_SHARED )), t ); 84 muxp = & mux ; 87 i( t == 0) 88 `RET_SET (( `had_mux_ (& muxp -> mux , muxp )), t ); 89 i( muxp ! NULL ) 90 () `had_mux_deroy ( muxp ); 91 i( t =0 && `LF_ISSET ( DB_MUTEX_SELF_BLOCK )) { 92 i(! `LF_ISSET ( DB_MUTEX_PROCESS_ONLY )) { 93 `RET_SET (( `had_cd_ (& cd )), t ); 94 i( t == 0) { 95 cdp = & cd ; 96 #ide HAVE_MUTEX_THREAD_ONLY 97 `RET_SET (( `had_cd_shed ( 98 & cd , PTHREAD_PROCESS_SHARED )), t ); 103 i( t == 0) 104 `RET_SET ( 105 ( `had_cd_ (& muxp -> cd , cdp )), t ); 107 `F_SET ( muxp , DB_MUTEX_SELF_BLOCK ); 108 i( cdp ! NULL ) 109 () `had_cd_deroy ( cdp ); 114 #ifde HAVE_MUTEX_SOLARIS_LWP 123 i( `LF_ISSET ( DB_MUTEX_PROCESS_ONLY )) { 124 lwp_mux_t mi = DEFAULTMUTEX ; 126 muxp -> mux = mi ; 128 lwp_mux_t mi = SHAREDMUTEX ; 130 muxp -> mux = mi ; 132 i( `LF_ISSET ( DB_MUTEX_SELF_BLOCK )) { 133 i( `LF_ISSET ( DB_MUTEX_PROCESS_ONLY )) { 134 lwp_cd_t ci = DEFAULTCV ; 136 muxp -> cd = ci ; 138 lwp_cd_t ci = SHAREDCV ; 140 muxp -> cd = ci ; 142 `F_SET ( muxp , DB_MUTEX_SELF_BLOCK ); 145 #ifde HAVE_MUTEX_UI_THREADS 147 ty ; 149 ty = `LF_ISSET ( DB_MUTEX_PROCESS_ONLY ? USYNC_THREAD : USYNC_PROCESS ; 151 t = `mux_ (& muxp -> mux , ty , NULL ); 152 i( t =0 && `LF_ISSET ( DB_MUTEX_SELF_BLOCK )) { 153 t = `cd_ (& muxp -> cd , ty , NULL ); 155 `F_SET ( muxp , DB_MUTEX_SELF_BLOCK ); 159 i( t != 0) { 160 `__db_r ( dbv , t , "unableo initialize mutex"); 162 ( t ); 163 } } 172 $__db_had_mux_lock ( dbv , mux ) 173 DB_ENV * dbv ; 174 db_mux_t mux ; 176 DB_MUTEX * muxp ; 177 DB_MUTEXMGR * mtxmgr ; 178 DB_MUTEXREGION * mtxgi ; 179 i , t ; 181 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 184 mtxmgr = dbv -> mux_hd ; 185 mtxgi = mtxmgr -> gfo . imy ; 186 muxp = `MUTEXP_SET ( mux ); 188 #i `defed ( HAVE_STATISTICS && !defed( HAVE_MUTEX_HYBRID ) 196 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 197 ++ muxp -> mux_t_wa ; 199 ++ muxp -> mux_t_nowa ; 202 `RET_SET (( `had_mux_lock (& muxp -> mux )), t ); 203 i( t != 0) 204 r ; 206 i( `F_ISSET ( muxp , DB_MUTEX_SELF_BLOCK )) { 214 #ifde HAVE_MUTEX_HYBRID 215 muxp -> wa ++; 216 `MUTEX_MEMBAR ( muxp -> wa ); 218 `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 219 `RET_SET (( `had_cd_wa ( 220 & muxp -> cd , &muxp-> mux )), t ); 231 i( t !0 && ! EINTR && 232 #ifde ETIME 233 t ! ETIME && 235 t ! ETIMEDOUT ) { 236 () `had_mux_uock (& muxp -> mux ); 237 r ; 241 #ifde HAVE_MUTEX_HYBRID 242 muxp -> wa --; 244 `F_SET ( muxp , DB_MUTEX_LOCKED ); 245 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 246 `CHECK_MTX_THREAD ( dbv , muxp ); 258 i = PTHREAD_UNLOCK_ATTEMPTS ; 260 `RET_SET (( `had_mux_uock (& muxp -> mux )), t ); 261 } t = EFAULT && -- i > 0); 262 i( t != 0) 263 r ; 265 #ifde DIAGNOSTIC 266 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 267 buf [ DB_THREADID_STRLEN ]; 268 () dbv -> `thad_id_rg (dbenv, 269 muxp -> pid , muxp-> tid , buf ); 270 `__db_rx ( dbv , 272 buf ); 273 t = EINVAL ; 274 r ; 277 `F_SET ( muxp , DB_MUTEX_LOCKED ); 278 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 279 `CHECK_MTX_THREAD ( dbv , muxp ); 282 #ifde DIAGNOSTIC 287 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 288 `__os_yld ( dbv ); 292 r : `__db_r ( dbv , t , "pthreadock failed"); 293 ( `__db_nic ( dbv , t )); 294 } } 303 $__db_had_mux_uock ( dbv , mux ) 304 DB_ENV * dbv ; 305 db_mux_t mux ; 307 DB_MUTEX * muxp ; 308 DB_MUTEXMGR * mtxmgr ; 309 DB_MUTEXREGION * mtxgi ; 310 i , t ; 312 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 315 mtxmgr = dbv -> mux_hd ; 316 mtxgi = mtxmgr -> gfo . imy ; 317 muxp = `MUTEXP_SET ( mux ); 319 #i! `defed ( HAVE_MUTEX_HYBRID && defed( DIAGNOSTIC ) 320 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 321 `__db_rx ( 322 dbv , "pthread unlock failed:ocklready unlocked"); 323 ( `__db_nic ( dbv , EACCES )); 326 i( `F_ISSET ( muxp , DB_MUTEX_SELF_BLOCK )) { 327 `RET_SET (( `had_mux_lock (& muxp -> mux )), t ); 328 i( t != 0) 329 r ; 331 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 333 `RET_SET (( `had_cd_sigl (& muxp -> cd )), t ); 334 i( t != 0) 335 r ; 337 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 340 i = PTHREAD_UNLOCK_ATTEMPTS ; 342 `RET_SET (( `had_mux_uock (& muxp -> mux )), t ); 343 } t = EFAULT && -- i > 0); 345 r : i( t != 0) { 346 `__db_r ( dbv , t , "pthread unlock failed"); 347 ( `__db_nic ( dbv , t )); 349 ( t ); 350 } } 359 $__db_had_mux_deroy ( dbv , mux ) 360 DB_ENV * dbv ; 361 db_mux_t mux ; 363 DB_MUTEX * muxp ; 364 DB_MUTEXMGR * mtxmgr ; 365 DB_MUTEXREGION * mtxgi ; 366 t , t_t ; 368 i(! `MUTEX_ON ( dbv )) 371 mtxmgr = dbv -> mux_hd ; 372 mtxgi = mtxmgr -> gfo . imy ; 373 muxp = `MUTEXP_SET ( mux ); 375 t = 0; 376 i( `F_ISSET ( muxp , DB_MUTEX_SELF_BLOCK )) { 377 `RET_SET (( `had_cd_deroy (& muxp -> cd )), t ); 378 i( t != 0) 379 `__db_r ( dbv , t , "unableo destroy cond"); 381 `RET_SET (( `had_mux_deroy (& muxp -> mux )), t_t ); 382 i( t_t != 0) { 383 `__db_r ( dbv , t_t , "unableo destroy mutex"); 384 i( t == 0) 385 t = t_t ; 387 ( t ); 388 } } @../mutex/mut_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/lock.h " 14 ~"dbc/mp.h " 15 ~"dbc/txn.h " 16 ~"dbc/mux_t.h " 18 size_t __mux_ign_size __P (( DB_ENV *)); 19 __mux_gi_ __P (( DB_ENV *, DB_MUTEXMGR *)); 20 size_t __mux_gi_size __P (( DB_ENV *)); 29 $__mux_ݒ ( dbv , _ok ) 30 DB_ENV * dbv ; 31 _ok ; 33 DB_MUTEXMGR * mtxmgr ; 34 DB_MUTEXREGION * mtxgi ; 35 db_mux_t mux ; 36 u_t i ; 37 t ; 44 i( dbv -> mux_ign == 0) 45 dbv -> mux_ign = MUTEX_ALIGN ; 46 i( dbv -> mux_s_s == 0 && 47 (( t = `__mux_t_s_s ( dbv , `__os_ (dbenv))) != 0)) 48 ( t ); 57 i( dbv -> mux_t == 0) 58 dbv -> mux_t = 59 `__lock_gi_mux_cou ( dbv ) + 60 `__log_gi_mux_cou ( dbv ) + 61 `__memp_gi_mux_cou ( dbv ) + 62 `__txn_gi_mux_cou ( dbv ) + 63 dbv -> mux_c + 100; 66 i(( t = `__os_oc ( dbv , 1, ( DB_MUTEXMGR ), & mtxmgr )) != 0) 67 ( t ); 70 mtxmgr -> gfo . dbv = dbenv; 71 mtxmgr -> gfo . ty = REGION_TYPE_MUTEX ; 72 mtxmgr -> gfo . id = INVALID_REGION_ID ; 73 mtxmgr -> gfo . ags = REGION_JOIN_OK ; 74 i( _ok ) 75 `F_SET (& mtxmgr -> gfo , REGION_CREATE_OK ); 76 i(( t = `__v_gi_ch ( dbv , 77 & mtxmgr -> gfo , `__mux_gi_size ( dbv ))) != 0) 78 r ; 81 i( `F_ISSET (& mtxmgr -> gfo , REGION_CREATE )) 82 i(( t = `__mux_gi_ ( dbv , mtxmgr )) != 0) 83 r ; 86 mtxgi = mtxmgr -> gfo . imy = 87 `R_ADDR (& mtxmgr -> gfo , mtxmgr->gfo. -> imy ); 88 mtxmgr -> mux_y = `R_ADDR (&mtxmgr-> gfo , mtxgi -> mux_off ); 90 dbv -> mux_hd = mtxmgr ; 93 i( dbv -> mux_iq ! NULL ) { 94 `DB_ASSERT ( dbv , `F_ISSET (& mtxmgr -> gfo , REGION_CREATE )); 95 i = 0; i < dbv -> mux_iq_xt ; ++i) { 96 i(( t = `__mux_loc_t ( 97 dbv , 0, dbv-> mux_iq [ i ]. loc_id , 98 dbv -> mux_iq [ i ]. ags , & mux )) != 0) 99 r ; 104 `DB_ASSERT ( dbv , mux = i + 1); 106 `__os_ ( dbv , dbv-> mux_iq ); 107 dbv -> mux_iq = NULL ; 117 mux = MUTEX_INVALID ; 118 i(( t = 119 `__mux_loc ( dbv , MTX_MUTEX_TEST , 0, & mux ) != 0) || 120 ( t = `__mux_lock ( dbv , mux )) != 0 || 121 ( t = `__mux_uock ( dbv , mux )) != 0 || 122 ( t = `__mux_ ( dbv , & mux )) != 0) { 123 `__db_rx ( dbv , 125 r ; 131 r : dbv -> mux_hd = NULL ; 132 i( mtxmgr -> gfo . addr ! NULL ) 133 () `__v_gi_dach ( dbv , & mtxmgr -> gfo , 0); 135 `__os_ ( dbv , mtxmgr ); 136 ( t ); 137 } } 144 $__mux_gi_ ( dbv , mtxmgr ) 145 DB_ENV * dbv ; 146 DB_MUTEXMGR * mtxmgr ; 148 DB_MUTEXREGION * mtxgi ; 149 DB_MUTEX * muxp ; 150 db_mux_t i ; 151 t ; 152 * mux_y ; 154 `COMPQUIET ( muxp , NULL ); 156 i(( t = `__v_loc (& mtxmgr -> gfo , 157 ( DB_MUTEXREGION ), & mtxmgr -> gfo . imy )) != 0) { 158 `__db_rx ( dbv , 160 ( t ); 162 mtxmgr -> gfo . -> imy = 163 `R_OFFSET (& mtxmgr -> gfo , mtxmgr->gfo. imy ); 164 mtxgi = mtxmgr -> gfo . imy ; 165 `memt ( mtxgi , 0, (*mtxregion)); 167 i(( t = `__mux_loc ( 168 dbv , MTX_MUTEX_REGION , 0, & mtxgi -> mtx_gi )) != 0) 169 ( t ); 171 mtxgi -> mux_size = `__mux_ign_size ( dbv ); 173 mtxgi -> . _mux_ign = dbv -> mux_ign ; 174 mtxgi -> . _mux_t = dbv -> mux_t ; 175 mtxgi -> . _mux_s_s = dbv -> mux_s_s ; 190 i(( t = `__v_loc (& mtxmgr -> gfo , 191 mtxgi -> . _mux_ign + 192 ( mtxgi -> . _mux_t + 1* mtxgi-> mux_size , 193 & mux_y )) != 0) { 194 `__db_rx ( dbv , 196 ( t ); 199 mtxgi -> mux_off_loc = `R_OFFSET (& mtxmgr -> gfo , mux_y ); 200 mux_y = `ALIGNP_INC (mux_y, mtxgi -> . _mux_ign ); 201 mtxgi -> mux_off = `R_OFFSET (& mtxmgr -> gfo , mux_y ); 202 mtxmgr -> mux_y = mutex_array; 212 i = 1; i < mtxgi -> . _mux_t ; ++i) { 213 muxp = `MUTEXP_SET ( i ); 214 muxp -> ags = 0; 215 muxp -> mux_xt_lk = i + 1; 217 muxp = `MUTEXP_SET ( i ); 218 muxp -> ags = 0; 219 muxp -> mux_xt_lk = MUTEX_INVALID ; 220 mtxgi -> mux_xt = 1; 221 mtxgi -> . _mux_ = mtxgi->. _mux_t ; 222 mtxgi -> . _mux_u = mtxgi->. _mux_u_max = 0; 225 } } 234 $__mux_v_esh ( dbv ) 235 DB_ENV * dbv ; 237 DB_MUTEXMGR * mtxmgr ; 238 DB_MUTEXREGION * mtxgi ; 239 REGINFO * gfo ; 240 t ; 242 mtxmgr = dbv -> mux_hd ; 243 gfo = & mtxmgr ->reginfo; 244 mtxgi = mtxmgr -> gfo . imy ; 251 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 252 #ifde HAVE_MUTEX_SYSTEM_RESOURCES 257 `__mux_sour_tu ( dbv , gfo ); 260 `__v_loc_ ( 261 gfo , `R_ADDR egfo, mtxgi -> mux_off_loc )); 265 t = `__v_gi_dach ( dbv , gfo , 0); 267 `__os_ ( dbv , mtxmgr ); 269 dbv -> mux_hd = NULL ; 271 ( t ); 272 } } 279 size_t 280 $__mux_ign_size ( dbv ) 281 DB_ENV * dbv ; 283 (( size_t ) `DB_ALIGN (( DB_MUTEX ), ( dbv )-> mux_ign )); 284 } } 290 size_t 291 $__mux_gi_size ( dbv ) 292 DB_ENV * dbv ; 294 size_t s ; 296 s = ( DB_MUTEXMGR ) + 1024; 299 s + `__v_loc_size ( 300 ( dbv -> mux_t + 1* `__mux_ign_size (dbenv)); 302 ( s ); 303 } } 305 #ifdef HAVE_MUTEX_SYSTEM_RESOURCES 313 $__mux_sour_tu ( dbv , f ) 314 DB_ENV * dbv ; 315 REGINFO * f ; 317 DB_MUTEX * muxp ; 318 DB_MUTEXMGR * mtxmgr , mtxmgr_ ; 319 DB_MUTEXREGION * mtxgi ; 320 db_mux_t i ; 321 * ig_hd ; 339 `memt (& mtxmgr_ , 0, (mtxmgr_st)); 340 mtxmgr = & mtxmgr_ ; 341 mtxmgr -> gfo = * f ; 342 mtxgi = mtxmgr -> gfo . imy = 343 `R_ADDR (& mtxmgr -> gfo , mtxmgr->gfo. -> imy ); 344 mtxmgr -> mux_y = `R_ADDR (&mtxmgr-> gfo , mtxgi -> mux_off ); 354 ig_hd = dbv -> mux_hd ; 355 dbv -> mux_hd = mtxmgr ; 356 i = 1; i < mtxgi -> . _mux_t ; ++i, ++ muxp ) { 357 muxp = `MUTEXP_SET ( i ); 358 i( `F_ISSET ( muxp , DB_MUTEX_ALLOCATED )) 359 () `__mux_deroy ( dbv , i ); 361 dbv -> mux_hd = ig_hd ; 362 } } @../mutex/mut_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/mux_t.h " 16 #ifde HAVE_STATISTICS 17 __mux_t_l __P (( DB_ENV *, u_t32_t )); 18 cڡ * __mux_t_id __P (()); 19 __mux_t_s __P (( DB_ENV *, u_t32_t )); 20 __mux_t_summy __P (( DB_ENV *)); 21 __mux_ __P (( DB_ENV *, DB_MUTEX_STAT **, u_t32_t )); 30 $__mux__ ( dbv , p , ags ) 31 DB_ENV * dbv ; 32 DB_MUTEX_STAT ** p ; 33 u_t32_t ags ; 35 DB_THREAD_INFO * ; 36 t ; 38 `PANIC_CHECK ( dbv ); 40 i(( t = `__db_fchk ( dbv , 41 "DB_ENV->mux_", ags , DB_STAT_CLEAR )) != 0) 42 ( t ); 44 `ENV_ENTER ( dbv , ); 45 `REPLICATION_WRAP ( dbv , ( `__mux_ (dbv, p , ags )), t ); 46 `ENV_LEAVE ( dbv , ); 47 ( t ); 48 } } 55 $__mux_ ( dbv , p , ags ) 56 DB_ENV * dbv ; 57 DB_MUTEX_STAT ** p ; 58 u_t32_t ags ; 60 DB_MUTEXMGR * mtxmgr ; 61 DB_MUTEXREGION * mtxgi ; 62 DB_MUTEX_STAT * s ; 63 t ; 65 `PANIC_CHECK ( dbv ); 67 * p = NULL ; 68 mtxmgr = dbv -> mux_hd ; 69 mtxgi = mtxmgr -> gfo . imy ; 71 i(( t = `__os_umloc ( dbv , ( DB_MUTEX_STAT ), & s )) != 0) 72 ( t ); 74 `MUTEX_SYSTEM_LOCK ( dbv ); 80 * s = mtxgi -> ; 81 s -> _gsize = mtxmgr -> gfo . -> size ; 82 `__mux_t_wa_fo ( dbv , mtxgi -> mtx_gi , 83 & s -> _gi_wa , &s-> _gi_nowa ); 84 i( `LF_ISSET ( DB_STAT_CLEAR )) 85 `__mux_r ( dbv , mtxgi -> mtx_gi ); 87 `MUTEX_SYSTEM_UNLOCK ( dbv ); 89 * p = s ; 91 } } 100 $__mux__t_ ( dbv , ags ) 101 DB_ENV * dbv ; 102 u_t32_t ags ; 104 DB_THREAD_INFO * ; 105 t ; 107 `PANIC_CHECK ( dbv ); 109 i(( t = `__db_fchk ( dbv , "DB_ENV->mutex_stat_print", 110 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 111 ( t ); 113 `ENV_ENTER ( dbv , ); 114 `REPLICATION_WRAP ( dbv , ( `__mux__t (dbv, ags )), t ); 115 `ENV_LEAVE ( dbv , ); 116 ( t ); 117 } } 126 $__mux__t ( dbv , ags ) 127 DB_ENV * dbv ; 128 u_t32_t ags ; 130 u_t32_t ig_ags ; 131 t ; 133 ig_ags = ags ; 134 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 135 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 136 t = `__mux_t_s ( dbv , ig_ags ); 137 `__mux_t_summy ( dbv ); 138 i( ags =0 || t != 0) 139 ( t ); 142 i( `LF_ISSET ( DB_STAT_ALL )) 143 t = `__mux_t_l ( dbv , ig_ags ); 146 } } 149 $__mux_t_summy ( dbv ) 150 DB_ENV * dbv ; 152 DB_MUTEX * muxp ; 153 DB_MUTEXMGR * mtxmgr ; 154 DB_MUTEXREGION * mtxgi ; 155 db_mux_t i ; 156 u_t32_t cous [ MTX_MAX_ENTRY + 2]; 157 loc_id ; 159 mtxmgr = dbv -> mux_hd ; 160 mtxgi = mtxmgr -> gfo . imy ; 161 `memt ( cous , 0, (counts)); 163 i = 1; i < mtxgi -> . _mux_t ; ++i, ++ muxp ) { 164 muxp = `MUTEXP_SET ( i ); 166 i(! `F_ISSET ( muxp , DB_MUTEX_ALLOCATED )) 167 cous [0]++; 168 i( muxp -> loc_id > MTX_MAX_ENTRY ) 169 cous [ MTX_MAX_ENTRY + 1]++; 171 cous [ muxp -> loc_id ]++; 173 `__db_msg ( dbv , "Mutex counts"); 174 `__db_msg ( dbv , "%d\tUod", cous [0]); 175 loc_id = 1;oc_id < MTX_TXN_REGION + 1;lloc_id++) 176 i( cous [ loc_id ] != 0) 177 `__db_msg ( dbv , "%lu\t%s", 178 ( u_lg ) cous [ loc_id ], 179 `__mux_t_id ( loc_id )); 181 } } 188 $__mux_t_s ( dbv , ags ) 189 DB_ENV * dbv ; 190 u_t32_t ags ; 192 DB_MUTEX_STAT * ; 193 t ; 195 i(( t = `__mux_ ( dbv , & , `LF_ISSET ( DB_STAT_CLEAR ))) != 0) 196 ( t ); 198 i( `LF_ISSET ( DB_STAT_ALL )) 199 `__db_msg ( dbv , "Default mutexegion information:"); 201 `__db_dlbys ( dbv , "Mutexegion size", 202 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 203 `__db_dl_p ( dbv , 205 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 206 -> _gi_wa + sp-> _gi_nowa ), NULL ); 207 `STAT_ULONG ("Muxlignmt", -> _mux_ign ); 208 `STAT_ULONG ("Muxe-d-s", -> _mux_s_s ); 209 `STAT_ULONG ("Muxٮ cou", -> _mux_t ); 210 `STAT_ULONG ("Mux fcou", -> _mux_ ); 211 `STAT_ULONG ("Mux in-u cou", -> _mux_u ); 212 `STAT_ULONG ("Mux maximum in-u cou", -> _mux_u_max ); 214 `__os_u ( dbv , ); 217 } } 224 $__mux_t_l ( dbv , ags ) 225 DB_ENV * dbv ; 226 u_t32_t ags ; 228 cڡ FN [] = { 229 { DB_MUTEX_ALLOCATED , "alloc" }, 230 { DB_MUTEX_LOCKED , "locked" }, 231 { DB_MUTEX_LOGICAL_LOCK , "logical" }, 232 { DB_MUTEX_PROCESS_ONLY , "process-private" }, 233 { DB_MUTEX_SELF_BLOCK , "self-block" }, 234 { 0, NULL } 236 DB_MSGBUF mb , * mbp ; 237 DB_MUTEX * muxp ; 238 DB_MUTEXMGR * mtxmgr ; 239 DB_MUTEXREGION * mtxgi ; 240 db_mux_t i ; 242 `DB_MSGBUF_INIT (& mb ); 243 mbp = & mb ; 245 mtxmgr = dbv -> mux_hd ; 246 mtxgi = mtxmgr -> gfo . imy ; 248 `__db_t_gfo ( dbv , & mtxmgr -> gfo , "Mux", ags ); 249 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 251 `__db_msg ( dbv , "DB_MUTEXREGION structure:"); 252 `__mux_t_debug_sg ( dbv , 253 "DB_MUTEXREGIONegi mux", mtxgi -> mtx_gi , ags ); 254 `STAT_ULONG ("Sizothigd mux", mtxgi -> mux_size ); 255 `STAT_ULONG ("Nex mux", mtxgi -> mux_xt ); 264 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 265 `__db_msg ( dbv , "mutex\twait/nowait,ct wait, holder, flags"); 266 i = 1; i < mtxgi -> . _mux_t ; ++i, ++ muxp ) { 267 muxp = `MUTEXP_SET ( i ); 269 i(! `F_ISSET ( muxp , DB_MUTEX_ALLOCATED )) 272 `__db_msgadd ( dbv , mbp , "%5lu\t", ( u_lg ) i ); 274 `__mux_t_debug_s ( dbv , mbp , i , ags ); 276 i( muxp -> loc_id != 0) 277 `__db_msgadd ( dbv , 278 mbp , ", %s", `__mux_t_id ( muxp -> loc_id )); 280 `__db_ags ( dbv , mbp , muxp -> ags , , " (", ")"); 282 `DB_MSGBUF_FLUSH ( dbv , mbp ); 286 } } 297 $__mux_t_debug_sg ( dbv , g , mux , ags ) 298 DB_ENV * dbv ; 299 cڡ * g ; 300 db_mux_t mux ; 301 u_t32_t ags ; 303 DB_MSGBUF mb , * mbp ; 305 `DB_MSGBUF_INIT (& mb ); 306 mbp = & mb ; 308 i( `LF_ISSET ( DB_STAT_SUBSYSTEM )) 309 `LF_CLR ( DB_STAT_CLEAR ); 310 `__db_msgadd ( dbv , mbp , "%lu\t%", ( u_lg ) mux , g ); 311 `__mux_t_debug_s ( dbv , mbp , mux , ags ); 312 `DB_MSGBUF_FLUSH ( dbv , mbp ); 313 } } 324 $__mux_t_debug_s ( dbv , mbp , mux , ags ) 325 DB_ENV * dbv ; 326 DB_MSGBUF * mbp ; 327 db_mux_t mux ; 328 u_t32_t ags ; 330 DB_MUTEX * muxp ; 331 DB_MUTEXMGR * mtxmgr ; 332 DB_MUTEXREGION * mtxgi ; 333 u_lg vue ; 334 buf [ DB_THREADID_STRLEN ]; 336 i( mux = MUTEX_INVALID ) { 337 `__db_msgadd ( dbv , mbp , "[!Set]"); 341 mtxmgr = dbv -> mux_hd ; 342 mtxgi = mtxmgr -> gfo . imy ; 343 muxp = `MUTEXP_SET ( mux ); 345 `__db_msgadd ( dbv , mbp , "["); 346 i(( vue = muxp -> mux_t_wa ) < 10000000) 347 `__db_msgadd ( dbv , mbp , "%lu", vue ); 349 `__db_msgadd ( dbv , mbp , "%luM", vue / 1000000); 350 i(( vue = muxp -> mux_t_nowa ) < 10000000) 351 `__db_msgadd ( dbv , mbp , "/%lu", vue ); 353 `__db_msgadd ( dbv , mbp , "/%luM", vue / 1000000); 355 `__db_msgadd ( dbv , mbp , " %d%%", 356 `DB_PCT ( muxp -> mux_t_wa , 357 muxp -> mux_t_wa + muxp-> mux_t_nowa )); 359 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 360 `__db_msgadd ( dbv , mbp , " %s]", 361 dbv -> `thad_id_rg (dbenv, 362 muxp -> pid , muxp-> tid , buf )); 364 `__db_msgadd ( dbv , mbp , " !Own]"); 366 i( `LF_ISSET ( DB_STAT_CLEAR )) 367 `__mux_r ( dbv , mux ); 368 } } 371 $__mux_t_id ( loc_id ) 372 loc_id ; 374 loc_id ) { 375 MTX_APPLICATION : ("applicationllocated"); 376 MTX_DB_HANDLE : ("db handle"); 377 MTX_ENV_DBLIST : ("env dblist"); 378 MTX_ENV_REGION : ("envegion"); 379 MTX_LOCK_REGION : ("lockegion"); 380 MTX_LOGICAL_LOCK : ("logicalock"); 381 MTX_LOG_FILENAME : ("log filename"); 382 MTX_LOG_FLUSH : ("log flush"); 383 MTX_LOG_HANDLE : ("log handle"); 384 MTX_LOG_REGION : ("logegion"); 385 MTX_MPOOLFILE_HANDLE : ("mpoolfile handle"); 386 MTX_MPOOL_FH : ("mpool filehandle"); 387 MTX_MPOOL_FILE_BUCKET : ("mpool file bucket"); 388 MTX_MPOOL_HANDLE : ("mpool handle"); 389 MTX_MPOOL_HASH_BUCKET : ("mpool hash bucket"); 390 MTX_MPOOL_IO : ("mpool buffer I/O"); 391 MTX_MPOOL_REGION : ("mpoolegion"); 392 MTX_REP_DATABASE : ("replication database"); 393 MTX_REP_REGION : ("replicationegion"); 394 MTX_SEQUENCE : ("sequence"); 395 MTX_TWISTER : ("twister"); 396 MTX_TXN_ACTIVE : ("txnctiveist"); 397 MTX_TXN_COMMIT : ("txn commit"); 398 MTX_TXN_MVCC : ("txn mvcc"); 399 MTX_TXN_REGION : ("txnegion"); 403 } } 413 $__mux_t_wa_fo ( dbv , mux , wap , nowap ) 414 DB_ENV * dbv ; 415 db_mux_t mux ; 416 u_t32_t * wap , * nowap ; 418 DB_MUTEX * muxp ; 419 DB_MUTEXMGR * mtxmgr ; 420 DB_MUTEXREGION * mtxgi ; 422 mtxmgr = dbv -> mux_hd ; 423 mtxgi = mtxmgr -> gfo . imy ; 424 muxp = `MUTEXP_SET ( mux ); 426 * wap = muxp -> mux_t_wa ; 427 * nowap = muxp -> mux_t_nowa ; 428 } } 437 $__mux_r ( dbv , mux ) 438 DB_ENV * dbv ; 439 db_mux_t mux ; 441 DB_MUTEX * muxp ; 442 DB_MUTEXMGR * mtxmgr ; 443 DB_MUTEXREGION * mtxgi ; 445 mtxmgr = dbv -> mux_hd ; 446 mtxgi = mtxmgr -> gfo . imy ; 447 muxp = `MUTEXP_SET ( mux ); 449 muxp -> mux_t_wa = muxp-> mux_t_nowa = 0; 450 } } 455 $__mux__ ( dbv , p , ags ) 456 DB_ENV * dbv ; 457 DB_MUTEX_STAT ** p ; 458 u_t32_t ags ; 460 `COMPQUIET ( p , NULL ); 461 `COMPQUIET ( ags , 0); 463 ( `__db__n_but ( dbv )); 464 } } 467 $__mux__t_ ( dbv , ags ) 468 DB_ENV * dbv ; 469 u_t32_t ags ; 471 `COMPQUIET ( ags , 0); 473 ( `__db__n_but ( dbv )); 474 } } @../mutex/mut_stub.c 9 #ide HAVE_MUTEX_SUPPORT 10 ~"db_cfig.h " 12 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/db_am.h " 20 __db_nomux __P (( DB_ENV *)); 27 $__db_nomux ( dbv ) 28 DB_ENV * dbv ; 30 `__db_rx ( dbv , 32 ( DB_OPNOTSUP ); 33 } } 36 $__mux_loc_ ( dbv , ags , dxp ) 37 DB_ENV * dbv ; 38 u_t32_t ags ; 39 db_mux_t * dxp ; 41 `COMPQUIET ( ags , 0); 42 `COMPQUIET ( dxp , NULL ); 43 ( `__db_nomux ( dbv )); 44 } } 47 $__mux_loc ( dbv , loc_id , ags , dxp ) 48 DB_ENV * dbv ; 49 loc_id ; 50 u_t32_t ags ; 51 db_mux_t * dxp ; 53 `COMPQUIET ( dbv , NULL ); 54 `COMPQUIET ( loc_id , 0); 55 `COMPQUIET ( ags , 0); 56 * dxp = MUTEX_INVALID ; 58 } } 61 $__mux_r ( dbv , mux ) 62 DB_ENV * dbv ; 63 db_mux_t mux ; 65 `COMPQUIET ( dbv , NULL ); 66 `COMPQUIET ( mux , MUTEX_INVALID ); 67 } } 70 $__mux__ ( dbv , dx ) 71 DB_ENV * dbv ; 72 db_mux_t dx ; 74 `COMPQUIET ( dx , 0); 75 ( `__db_nomux ( dbv )); 76 } } 79 $__mux_ ( dbv , dxp ) 80 DB_ENV * dbv ; 81 db_mux_t * dxp ; 83 `COMPQUIET ( dbv , NULL ); 84 * dxp = MUTEX_INVALID ; 86 } } 89 $__mux_g_ign ( dbv , ig ) 90 DB_ENV * dbv ; 91 u_t32_t * ig ; 93 `COMPQUIET ( ig , NULL ); 94 ( `__db_nomux ( dbv )); 95 } } 98 $__mux_g_emt ( dbv , em ) 99 DB_ENV * dbv ; 100 u_t32_t * em ; 102 `COMPQUIET ( em , NULL ); 103 ( `__db_nomux ( dbv )); 104 } } 107 $__mux_g_max ( dbv , maxp ) 108 DB_ENV * dbv ; 109 u_t32_t * maxp ; 111 `COMPQUIET ( maxp , NULL ); 112 ( `__db_nomux ( dbv )); 113 } } 116 $__mux_g_s_s ( dbv , s_ ) 117 DB_ENV * dbv ; 118 u_t32_t * s_ ; 120 `COMPQUIET ( s_ , NULL ); 121 ( `__db_nomux ( dbv )); 122 } } 125 $__mux_lock_ ( dbv , dx ) 126 DB_ENV * dbv ; 127 db_mux_t dx ; 129 `COMPQUIET ( dx , 0); 130 ( `__db_nomux ( dbv )); 131 } } 134 $__mux_t_debug_sg ( dbv , g , mux , ags ) 135 DB_ENV * dbv ; 136 cڡ * g ; 137 db_mux_t mux ; 138 u_t32_t ags ; 140 `COMPQUIET ( dbv , NULL ); 141 `COMPQUIET ( g , NULL ); 142 `COMPQUIET ( mux , MUTEX_INVALID ); 143 `COMPQUIET ( ags , 0); 144 } } 147 $__mux_t_debug_s ( dbv , mbp , mux , ags ) 148 DB_ENV * dbv ; 149 DB_MSGBUF * mbp ; 150 db_mux_t mux ; 151 u_t32_t ags ; 153 `COMPQUIET ( dbv , NULL ); 154 `COMPQUIET ( mbp , NULL ); 155 `COMPQUIET ( mux , MUTEX_INVALID ); 156 `COMPQUIET ( ags , 0); 157 } } 160 $__mux_t_ign ( dbv , ign ) 161 DB_ENV * dbv ; 162 u_t32_t ign ; 164 `COMPQUIET ( ign , 0); 165 ( `__db_nomux ( dbv )); 166 } } 169 $__mux_t_emt ( dbv , emt ) 170 DB_ENV * dbv ; 171 u_t32_t emt ; 173 `COMPQUIET ( emt , 0); 174 ( `__db_nomux ( dbv )); 175 } } 178 $__mux_t_max ( dbv , max ) 179 DB_ENV * dbv ; 180 u_t32_t max ; 182 `COMPQUIET ( max , 0); 183 ( `__db_nomux ( dbv )); 184 } } 187 $__mux_t_s_s ( dbv , s_s ) 188 DB_ENV * dbv ; 189 u_t32_t s_s ; 191 `COMPQUIET ( s_s , 0); 192 ( `__db_nomux ( dbv )); 193 } } 196 $__mux_t_wa_fo ( dbv , mux , wap , nowap ) 197 DB_ENV * dbv ; 198 db_mux_t mux ; 199 u_t32_t * wap , * nowap ; 201 `COMPQUIET ( dbv , NULL ); 202 `COMPQUIET ( mux , MUTEX_INVALID ); 203 * wap = * nowap = 0; 204 } } 207 $__mux__ ( dbv , p , ags ) 208 DB_ENV * dbv ; 209 DB_MUTEX_STAT ** p ; 210 u_t32_t ags ; 212 `COMPQUIET ( p , NULL ); 213 `COMPQUIET ( ags , 0); 214 ( `__db_nomux ( dbv )); 215 } } 218 $__mux__t_ ( dbv , ags ) 219 DB_ENV * dbv ; 220 u_t32_t ags ; 222 `COMPQUIET ( ags , 0); 223 ( `__db_nomux ( dbv )); 224 } } 227 $__mux_uock_ ( dbv , dx ) 228 DB_ENV * dbv ; 229 db_mux_t dx ; 231 `COMPQUIET ( dx , 0); 232 ( `__db_nomux ( dbv )); 233 } } @../mutex/mut_tas.c 9 ~"db_cfig.h " 11 ~"db_t.h " 16 #LOAD_ACTUAL_MUTEX_CODE ) 17 ~"dbc/mux_t.h " 26 $__db_s_mux_ ( dbv , mux , ags ) 27 DB_ENV * dbv ; 28 db_mux_t mux ; 29 u_t32_t ags ; 31 DB_MUTEX * muxp ; 32 DB_MUTEXMGR * mtxmgr ; 33 DB_MUTEXREGION * mtxgi ; 34 t ; 36 `COMPQUIET ( ags , 0); 38 mtxmgr = dbv -> mux_hd ; 39 mtxgi = mtxmgr -> gfo . imy ; 40 muxp = `MUTEXP_SET ( mux ); 43 i((( u_t ) muxp & ( dbv -> mux_ign - 1)) != 0) { 44 `__db_rx ( dbv , "TAS: mutexotppropriatelyligned"); 45 ( EINVAL ); 48 i( `MUTEX_INIT (& muxp -> s )) { 49 t = `__os_g_sy (); 50 `__db_sy ( dbv , t , "TAS: mutex initialize"); 51 ( `__os_posix_r ( t )); 53 #ifde HAVE_MUTEX_HYBRID 54 i(( t = `__db_had_mux_ ( dbv , 55 mux , ags | DB_MUTEX_SELF_BLOCK )) != 0) 56 ( t ); 59 } } 68 $__db_s_mux_lock ( dbv , mux ) 69 DB_ENV * dbv ; 70 db_mux_t mux ; 72 DB_MUTEX * muxp ; 73 DB_MUTEXMGR * mtxmgr ; 74 DB_MUTEXREGION * mtxgi ; 75 u_t32_t ns ; 76 #ifde HAVE_MUTEX_HYBRID 77 t ; 79 u_lg ms , max_ms ; 81 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 84 mtxmgr = dbv -> mux_hd ; 85 mtxgi = mtxmgr -> gfo . imy ; 86 muxp = `MUTEXP_SET ( mux ); 88 #ifde HAVE_STATISTICS 89 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 90 ++ muxp -> mux_t_wa ; 92 ++ muxp -> mux_t_nowa ; 95 #ide HAVE_MUTEX_HYBRID 101 ms = 1; 102 max_ms = `F_ISSET ( muxp , DB_MUTEX_LOGICAL_LOCK ) ? 10 : 25; 105 lo : 106 ns = 107 mtxgi -> . _mux_s_s ; ns > 0; --nspins) { 108 #ifde HAVE_MUTEX_HPPA_MSEM_INIT 109 lock : 111 #ifde HAVE_MUTEX_S390_CC_ASSEMBLY 112 t_t zo = 0; 118 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED ) || 119 ! `MUTEX_SET (& muxp -> s )) { 124 #ifde MUTEX_PAUSE 125 MUTEX_PAUSE 130 #ifde HAVE_MUTEX_HPPA_MSEM_INIT 141 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 142 `F_SET ( muxp , DB_MUTEX_LOCKED ); 143 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 144 `CHECK_MTX_THREAD ( dbv , muxp ); 145 lock ; 153 #ifde DIAGNOSTIC 154 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 155 buf [ DB_THREADID_STRLEN ]; 156 `__db_rx ( dbv , 158 dbv -> `thad_id_rg (dbenv, 159 muxp -> pid , muxp-> tid , buf )); 160 ( `__db_nic ( dbv , EACCES )); 163 `F_SET ( muxp , DB_MUTEX_LOCKED ); 164 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 165 `CHECK_MTX_THREAD ( dbv , muxp ); 167 #ifde DIAGNOSTIC 172 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 173 `__os_yld ( dbv ); 179 #ifde HAVE_MUTEX_HYBRID 180 `__os_yld ( dbv ); 181 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 182 lo ; 183 i(( t = `__db_had_mux_lock ( dbv , mux )) != 0) 184 ( t ); 186 `__os_p ( dbv , 0, ms * US_PER_MS ); 187 i(( ms <<1> max_ms ) 188 ms = max_ms ; 197 `PANIC_CHECK ( dbv ); 199 lo ; 200 } } 209 $__db_s_mux_uock ( dbv , mux ) 210 DB_ENV * dbv ; 211 db_mux_t mux ; 213 DB_MUTEX * muxp ; 214 DB_MUTEXMGR * mtxmgr ; 215 DB_MUTEXREGION * mtxgi ; 216 #ifde HAVE_MUTEX_HYBRID 217 t ; 220 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 223 mtxmgr = dbv -> mux_hd ; 224 mtxgi = mtxmgr -> gfo . imy ; 225 muxp = `MUTEXP_SET ( mux ); 227 #ifde DIAGNOSTIC 228 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 229 `__db_rx ( dbv , "TAS unlock failed:ocklready unlocked"); 230 ( `__db_nic ( dbv , EACCES )); 234 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 235 #ifde HAVE_MUTEX_HYBRID 236 `MUTEX_MEMBAR ( muxp -> ags ); 238 i( muxp -> wa && 239 ( t = `__db_had_mux_uock ( dbv , mux )) != 0) 240 ( t ); 242 `MUTEX_UNSET (& muxp -> s ); 245 } } 254 $__db_s_mux_deroy ( dbv , mux ) 255 DB_ENV * dbv ; 256 db_mux_t mux ; 258 DB_MUTEX * muxp ; 259 DB_MUTEXMGR * mtxmgr ; 260 DB_MUTEXREGION * mtxgi ; 261 #ifde HAVE_MUTEX_HYBRID 262 t ; 265 i(! `MUTEX_ON ( dbv )) 268 mtxmgr = dbv -> mux_hd ; 269 mtxgi = mtxmgr -> gfo . imy ; 270 muxp = `MUTEXP_SET ( mux ); 272 `MUTEX_DESTROY (& muxp -> s ); 274 #ifde HAVE_MUTEX_HYBRID 275 i(( t = `__db_had_mux_deroy ( dbv , mux )) != 0) 276 ( t ); 279 `COMPQUIET ( muxp , NULL ); 281 } } @../mutex/mut_win32.c 9 ~"db_cfig.h " 11 ~"db_t.h " 16 #LOAD_ACTUAL_MUTEX_CODE ) 17 ~"dbc/mux_t.h " 20 #unde MUTEX_DIAG 32 _TCHAR ghex_digs [] = _T ("0123456789abcdef"); 33 SECURITY_DESCRIPTOR gnu_sd ; 34 SECURITY_ATTRIBUTES gl_ ; 35 gcury_lized = 0; 37 __le $g_hd ( dbv , muxp , ev ) 38 DB_ENV * dbv ; 39 DB_MUTEX * muxp ; 40 HANDLE * ev ; 42 _TCHAR idbuf [] = `_T ("db.m00000000"); 43 _TCHAR * p = idbuf + 12; 44 t = 0; 45 u_t32_t id ; 47 id = ( muxp )->id; id != 0; id >>= 4) 48 *-- p = hex_digs [ id & 0xf]; 50 #ide DB_WINCE 51 i(! cury_lized ) { 52 `InlizeSecuryDest (& nu_sd , 53 SECURITY_DESCRIPTOR_REVISION ); 54 `SSecuryDestDa (& nu_sd , TRUE , 0, FALSE ); 55 l_ . nLgth = ( SECURITY_ATTRIBUTES ); 56 l_ . bInhHd = FALSE ; 57 l_ . SecuryDest = & nu_sd ; 58 cury_lized = 1; 62 i((* ev = `CeEvt (& l_ , FALSE , FALSE, idbuf )= NULL ) { 63 t = `__os_g_sy (); 64 `__db_sy ( dbv , t , "Win32 createvent failed"); 67 ( t ); 68 } } 77 $__db_w32_mux_ ( dbv , mux , ags ) 78 DB_ENV * dbv ; 79 db_mux_t mux ; 80 u_t32_t ags ; 82 DB_MUTEX * muxp ; 83 DB_MUTEXMGR * mtxmgr ; 84 DB_MUTEXREGION * mtxgi ; 86 mtxmgr = dbv -> mux_hd ; 87 mtxgi = mtxmgr -> gfo . imy ; 88 muxp = `MUTEXP_SET ( mux ); 90 muxp -> id = (( `gpid (& 0xffff<< 16^ `P_TO_UINT32 (mutexp); 93 } } 102 $__db_w32_mux_lock ( dbv , mux ) 103 DB_ENV * dbv ; 104 db_mux_t mux ; 106 DB_MUTEX * muxp ; 107 DB_MUTEXMGR * mtxmgr ; 108 DB_MUTEXREGION * mtxgi ; 109 HANDLE evt ; 110 u_t32_t ns ; 111 ms , t ; 112 #ifde MUTEX_DIAG 113 LARGE_INTEGER now ; 115 #ifde DB_WINCE 116 vީ db_thadid_t tmp_tid ; 119 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 122 mtxmgr = dbv -> mux_hd ; 123 mtxgi = mtxmgr -> gfo . imy ; 124 muxp = `MUTEXP_SET ( mux ); 126 evt = NULL ; 127 ms = 50; 128 t = 0; 130 lo : 131 ns = 132 mtxgi -> . _mux_s_s ; ns > 0; --nspins) { 137 #ifde DB_WINCE 148 tmp_tid = muxp -> tid ; 149 muxp -> tid = tmp_tid ; 151 i( muxp -> s || ! `MUTEX_SET (&mutexp->tas)) { 156 #ifde MUTEX_PAUSE 157 MUTEX_PAUSE 162 #ifde DIAGNOSTIC 163 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 164 buf [ DB_THREADID_STRLEN ]; 165 `__db_rx ( dbv , 167 dbv -> `thad_id_rg (dbenv, 168 muxp -> pid , muxp-> tid , buf )); 169 ( `__db_nic ( dbv , EACCES )); 172 `F_SET ( muxp , DB_MUTEX_LOCKED ); 173 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 174 `CHECK_MTX_THREAD ( dbv , muxp ); 176 #ifde HAVE_STATISTICS 177 i( evt = NULL ) 178 ++ muxp -> mux_t_nowa ; 180 ++ muxp -> mux_t_wa ; 182 i( evt ! NULL ) { 183 `CloHd ( evt ); 184 `IlockedDeemt (& muxp -> nwas ); 185 #ifde MUTEX_DIAG 186 i( t ! WAIT_OBJECT_0 ) { 187 `QuyPfmCou (& now ); 188 `tf ("[%I64d]: Lost signal on mutex %p, " 190 now . QuadPt , muxp , muxp-> id , ms ); 195 #ifde DIAGNOSTIC 200 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 201 `__os_yld ( dbv ); 213 i( evt = NULL ) { 214 #ifde MUTEX_DIAG 215 `QuyPfmCou (& now ); 216 `tf ("[%I64d]: Waiting on mutex %p, id %d\n", 217 now . QuadPt , muxp , muxp-> id ); 219 `IlockedInemt (& muxp -> nwas ); 220 i(( t = `g_hd ( dbv , muxp , & evt )) != 0) 221 r ; 223 i(( t = `WaFSgObje ( evt , ms )= WAIT_FAILED ) { 224 t = `__os_g_sy (); 225 r ; 227 i(( ms <<1> MS_PER_SEC ) 228 ms = MS_PER_SEC ; 230 `PANIC_CHECK ( dbv ); 231 lo ; 233 r : `__db_sy ( dbv , t , "Win32ock failed"); 234 ( `__db_nic ( dbv , `__os_posix_r ( t ))); 235 } } 244 $__db_w32_mux_uock ( dbv , mux ) 245 DB_ENV * dbv ; 246 db_mux_t mux ; 248 DB_MUTEX * muxp ; 249 DB_MUTEXMGR * mtxmgr ; 250 DB_MUTEXREGION * mtxgi ; 251 HANDLE evt ; 252 t ; 253 #ifde MUTEX_DIAG 254 LARGE_INTEGER now ; 256 i(! `MUTEX_ON ( dbv || `F_ISSET (dbv, DB_ENV_NOLOCKING )) 259 mtxmgr = dbv -> mux_hd ; 260 mtxgi = mtxmgr -> gfo . imy ; 261 muxp = `MUTEXP_SET ( mux ); 263 #ifde DIAGNOSTIC 264 i(! muxp -> s || ! `F_ISSET (muxp, DB_MUTEX_LOCKED )) { 265 `__db_rx ( dbv , "Win32 unlock failed:ocklready unlocked"); 266 ( `__db_nic ( dbv , EACCES )); 269 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 270 `MUTEX_UNSET (& muxp -> s ); 272 i( muxp -> nwas > 0) { 273 i(( t = `g_hd ( dbv , muxp , & evt )) != 0) 274 r ; 276 #ifde MUTEX_DIAG 277 `QuyPfmCou (& now ); 278 `tf ("[%I64d]: Signalling mutex %p, id %d\n", 279 now . QuadPt , muxp , muxp-> id ); 281 i(! `PulEvt ( evt )) { 282 t = `__os_g_sy (); 283 `CloHd ( evt ); 284 r ; 287 `CloHd ( evt ); 292 r : `__db_sy ( dbv , t , "Win32 unlock failed"); 293 ( `__db_nic ( dbv , `__os_posix_r ( t ))); 294 } } 303 $__db_w32_mux_deroy ( dbv , mux ) 304 DB_ENV * dbv ; 305 db_mux_t mux ; 308 } } @../mutex/test_mutex.c 7 ~"db_cfig.h " 9 ~"db_t.h " 11 ~<sys/wa.h > 13 #ifde DB_WIN32 14 #MUTEX_THREAD_TEST 1 ) 16 gt (, * const *, const *); 18 HANDLE tos_pid_t ; 19 HANDLE tos_thad_t ; 21 #os_thad_ ( th , , func , g ) \ 22 (((*( th `CeThad ( NULL , 0, \ 23 ( LPTHREAD_START_ROUTINE )( func ), ( g ), 0, NULL )=NULL? -1 : 0) ) 24 #os_thad_jo ( thr , u ) \ 25 (( `WaFSgObje (( thr ), INFINITE = WAIT_OBJECT_0 ) && \ 26 `GExCodeThad (( thr ), ( LPDWORD )( u )? 0 : -1) ) 27 #os_thad_lf ( `GCutThadId () ) 31 pid_t tos_pid_t ; 43 #i! defed ( HAVE_MUTEX_FCNTL && defed( HAVE_PTHREAD_YIELD ) 44 #MUTEX_THREAD_TEST 1 ) 46 ~<had.h > 48 had_t tos_thad_t ; 50 #os_thad_ ( th , , func , g ) \ 51 `had_ (( th ), ( ), ( func ), ( g )) ) 52 #os_thad_jo ( thr , u `had_jo (hr), (u)) ) 53 #os_thad_lf ( `had_lf () ) 57 #OS_BAD_PID (( os_pid_t )-1) ) 59 #TESTDIR "TESTDIR" ) 60 #MT_FILE "TESTDIR/mux.fe" ) 61 #MT_FILE_QUIT "TESTDIR/mux.fe.qu" ) 70 db_mux_t mmux ; 71 u_lg mid ; 72 u_t mwakeme ; 73 } tTM ; 75 DB_ENV * gdbv ; 76 size_t gn ; 78 u_t8_t * ggm_addr ; 79 u_t8_t * glm_addr ; 80 u_t8_t * gtm_addr ; 82 #ifde MUTEX_THREAD_TEST 83 os_thad_t * gkid ; 84 os_thad_t gwak ; 87 #idef HAVE_MMAP 88 u_t grocs = 1; 89 u_t ghads = 20; 90 #if MUTEX_THREAD_TEST 91 u_t grocs = 5; 92 u_t ghads = 4; 94 u_t grocs = 20; 95 u_t ghads = 1; 98 u_t gmaxlocks = 20; 99 u_t gocks = 10000; 100 gvbo ; 102 cڡ * gogme ; 104 da_off ( u_t8_t *, DB_FH *); 105 da_ ( u_t8_t **, u_t8_**, u_t8_**, DB_FH **, ); 106 lock_t ( u_lg ); 107 lock_wa (); 108 os_pid_t os_awn (const *, *const[]); 109 os_wa ( os_pid_t *, u_t ); 110 * run_had (*); 111 * run_wthad (*); 112 os_pid_t awn_oc ( u_lg , *, *); 113 tm_v_o (); 114 tm_v_ (); 115 tm_mux_deroy (); 116 tm_mux_ (); 117 tm_mux_s (); 118 uge (); 119 wakeup_t ( u_lg ); 120 wakeup_wa (); 123 $ma ( gc , gv ) 124 gc ; 125 * gv []; 127 um { LOCKER , WAKEUP , PARENT } y ; 128 td ; 129 * ݏrg ; 130 os_pid_t wakeup_pid , * pids ; 131 u_lg id ; 132 u_t i ; 133 DB_FH * fhp , * m_fhp ; 134 ch , r ; 135 * p , * tmth , cmd [1024]; 137 i(( ogme = `__db_h ( gv [0])= NULL ) 138 ogme = gv [0]; 140 ++ ogme ; 142 y = PARENT ; 143 id = 0; 144 tmth = gv [0]; 145 ( ch = `gt ( gc , gv , "l:n:p:T:t:v")! EOF ) 146 ch ) { 148 maxlocks = ( u_t ) `oi ( ݏrg ); 151 ocks = ( u_t ) `oi ( ݏrg ); 154 rocs = ( u_t ) `oi ( ݏrg ); 157 i(( hads = ( u_t ) `oi ( ݏrg )) == 0) 158 hads = 1; 159 #i! `defed ( MUTEX_THREAD_TEST ) 160 i( hads != 1) { 161 `rtf ( dr , 163 ogme ); 164 ( EXIT_FAILURE ); 169 i(! `memcmp ( ݏrg , "locker", ("locker") - 1)) 170 y = LOCKER ; 172 ! `memcmp ( ݏrg , "wakeup", ("wakeup") - 1)) 173 y = WAKEUP ; 175 ( `uge ()); 176 i(( p = `rchr ( ݏrg , '=')= NULL ) 177 ( `uge ()); 178 id = ( u_lg ) `oi ( p + 1); 181 vbo = 1; 185 ( `uge ()); 187 gc - td ; 188 gv + td ; 194 i( rocs =1 && hads == 1) { 195 `rtf ( dr , 197 ogme ); 198 ( EXIT_FAILURE ); 201 n = ( TM * (1 + hads * rocs + maxlocks ); 208 i( y = LOCKER ||ty = WAKEUP ) { 209 `__os_p ( dbv , 3, 0); 211 `d (( u_t ) `time ( NULL % (u_t) `gpid ()); 213 i( `tm_v_ () != 0) 214 `ex ( EXIT_FAILURE ); 216 `da_ (& gm_addr , & tm_addr , & lm_addr , & m_fhp , 0); 217 i( vbo ) 218 `tf ( 220 ( u_lg ) gm_addr , (u_lg) tm_addr , (u_lg) lm_addr ); 222 i(( y = LOCKER ? 223 `lock_t ( id : `wakeup_t (id)) != 0) 224 `ex ( EXIT_FAILURE ); 225 i(( y = LOCKER ? `lock_wa (: `wakeup_wa ()) != 0) 226 `ex ( EXIT_FAILURE ); 228 `da_off ( gm_addr , m_fhp ); 230 `tm_v_o (); 232 `ex ( EXIT_SUCCESS ); 240 `tf ( cmd , (cmd), "rm -r%s", TESTDIR ); 241 () `syem ( cmd ); 242 `tf ( cmd , (cmd), "mkd %s", TESTDIR ); 243 () `syem ( cmd ); 245 `tf ( 247 ogme , rocs , hads , ocks , maxlocks ); 248 `tf ("%s: backg d%lu bys\n", ogme , ( u_lg ) n ); 250 i( `tm_v_ () != 0) 251 `ex ( EXIT_FAILURE ); 253 `da_ (& gm_addr , & tm_addr , & lm_addr , & m_fhp , 1); 254 i( vbo ) 255 `tf ( 257 ( u_lg ) gm_addr , (u_lg) tm_addr , (u_lg) lm_addr ); 259 `tm_mux_ (); 261 i( rocs > 1) { 263 i(( pids = `oc ( rocs , ( os_pid_t ))= NULL ) { 264 `rtf ( dr , "%s: %s\n", ogme , ` ( o )); 265 ; 269 i = 0; i < rocs ; ++i) { 270 i(( pids [ i ] = 271 `awn_oc ( id , tmth , "lock")= OS_BAD_PID ) { 272 `rtf ( dr , 273 "%s: faedإawlock\n", ogme ); 274 ; 276 id + hads ; 280 i(( wakeup_pid = 281 `awn_oc ( id , tmth , "wakeup")= OS_BAD_PID ) { 282 `rtf ( dr , 283 "%s: faedإawwak\n", ogme ); 284 ; 286 ++ id ; 289 i(( r = `os_wa ( pids , rocs )) != 0) { 290 `rtf ( dr , "%s:ocker wait failed with %d\n", 291 ogme , r ); 292 ; 296 i(( r = `__os_ݒ ( 297 dbv , MT_FILE_QUIT , 0, DB_OSO_CREATE , 0664, & fhp )) != 0) { 298 `rtf ( dr , 299 "%s: o%s\n", ogme , `db_ ( r )); 300 ; 302 () `__os_ohd ( dbv , fhp ); 305 i(( r = `os_wa (& wakeup_pid , 1)) != 0) { 306 `rtf ( dr , "%s: %lu:xited %d\n", 307 ogme , ( u_lg ) wakeup_pid , r ); 308 ; 312 i( `lock_t (0) != 0) 313 ; 316 i( `wakeup_t ( hads ) != 0) 317 ; 320 i( `lock_wa () != 0) 321 ; 324 i(( r = `__os_ݒ ( 325 dbv , MT_FILE_QUIT , 0, DB_OSO_CREATE , 0664, & fhp )) != 0) { 326 `rtf ( dr , 327 "%s: o%s\n", ogme , `db_ ( r )); 328 ; 330 () `__os_ohd ( dbv , fhp ); 333 i( `wakeup_wa () != 0) 334 ; 337 `tm_mux_s (); 338 `tm_mux_deroy (); 340 `da_off ( gm_addr , m_fhp ); 342 `tm_v_o (); 344 `tf ("%s:e suceded\n", ogme ); 345 ( EXIT_SUCCESS ); 347 : `tf ("%s: FAILED!\n", ogme ); 348 ( EXIT_FAILURE ); 349 } } 352 $lock_t ( id ) 353 u_lg id ; 355 #i `defed ( MUTEX_THREAD_TEST ) 356 u_t i ; 357 r ; 363 i(( kid = 364 ( os_thad_t *) `oc ((os_thad_t), hads )= NULL ) { 365 `rtf ( dr , "%s: %s\n", ogme , ` ( o )); 368 i = 0; i < hads ; i++) 369 i(( r = `os_thad_ ( 370 & kid [ i ], NULL , run_had , (*)( id + i))) != 0) { 371 `rtf ( dr , "%s: failed spawninghread: %s\n", 372 ogme , `db_ ( r )); 377 ( `run_had ((*) id = NULL ? 0 : 1); 379 } } 382 $lock_wa () 384 #i `defed ( MUTEX_THREAD_TEST ) 385 u_t i ; 386 * ; 389 i = 0; i < hads ; i++) { 390 () `os_thad_jo ( kid [ i ], & ); 391 i( ! NULL ) { 392 `rtf ( dr , 393 "%s:hadxed wh\n", ogme ); 397 ` ( kid ); 400 } } 403 $run_had ( g ) 404 * g ; 406 TM * gp , * mp , * ; 407 u_lg id , tid ; 408 u_t lock , ; 409 r , i ; 411 id = ( u_t ) g ; 412 #i `defed ( MUTEX_THREAD_TEST ) 413 tid = ( u_lg ) `os_thad_lf (); 415 tid = 0; 417 `tf ("Locker: ID %03lu (PID: %lu; TID: %lx)\n", 418 id , ( u_lg ) `gpid (), tid ); 420 gp = ( TM *) gm_addr ; 421 = ( TM *)( tm_addr + id * (TM)); 423 = ocks ;l > 0;) { 425 lock = ( u_t ) `nd (% maxlocks ; 426 mp = ( TM *)( lm_addr + lock * (TM)); 427 i( vbo ) 428 `tf ("%03lu:ock %d (mtx: %lu)\n", 429 id , lock , ( u_lg ) mp -> mux ); 431 i(( r = dbv -> `mux_lock (dbv, mp -> mux )) != 0) { 432 `rtf ( dr , "%s: %03lu:ever gotock %d: %s\n", 433 ogme , id , lock , `db_ ( r )); 436 i( mp -> id != 0) { 437 `rtf ( dr , 439 ogme , id , lock , mp ->id); 442 mp -> id = id; 448 i = 0; i < 3; ++i) { 449 `__os_p ( dbv , 0, ( u_lg ) `nd () % 3); 450 i( mp -> id != id) { 451 `rtf ( dr , 453 ogme , mp -> id , lock , id); 468 i(( r = dbv -> `mux_lock (dbv, gp -> mux )) != 0) { 469 `rtf ( dr , "%s: %03lu: globalock: %s\n", 470 ogme , id , `db_ ( r )); 473 i( -> id != 0 &&p->id != id) { 474 `rtf ( dr , 476 ogme , id , ->id); 479 -> id = id; 480 i( vbo ) 481 `tf ("%03lu: self-blocking (mtx: %lu)\n", 482 id , ( u_lg ) -> mux ); 483 i( -> wakeme ) { 484 `rtf ( dr , 486 ogme , id ); 489 -> wakeme = 1; 490 i(( r = dbv -> `mux_uock (dbv, gp -> mux )) != 0) { 491 `rtf ( dr , 493 ogme , id , `db_ ( r )); 496 i(( r = dbv -> `mux_lock (dbv, -> mux )) != 0) { 497 `rtf ( dr , "%s: %03lu:er-threadock: %s\n", 498 ogme , id , `db_ ( r )); 502 i( -> wakeme ) { 503 `rtf ( dr , "%s: %03lu: wakeup flagot cleared\n", 504 ogme , id ); 508 i( vbo ) 509 `tf ("%03lu:elease %d (mtx: %lu)\n", 510 id , lock , ( u_lg ) mp -> mux ); 513 mp -> id = 0; 514 i(( r = dbv -> `mux_uock (dbv, mp -> mux )) != 0) { 515 `rtf ( dr , 517 ogme , id , `db_ ( r )); 521 i(-- % 100 == 0) 522 `tf ("%03lu: %d\n", id , ); 525 ( NULL ); 526 } } 529 $wakeup_t ( id ) 530 u_lg id ; 532 #i `defed ( MUTEX_THREAD_TEST ) 533 r ; 538 i(( r = `os_thad_ ( 539 & wak , NULL , run_wthad , (*) id )) != 0) { 540 `rtf ( dr , "%s: failed spawning wakeuphread: %s\n", 541 ogme , `db_ ( r )); 546 ( `run_wthad ((*) id = NULL ? 0 : 1); 548 } } 551 $wakeup_wa () 553 #i `defed ( MUTEX_THREAD_TEST ) 554 * ; 559 () `os_thad_jo ( wak , & ); 560 i( ! NULL ) { 561 `rtf ( dr , 562 "%s: wakeuthadxed wh\n", ogme ); 567 } } 574 $run_wthad ( g ) 575 * g ; 577 TM * gp , * ; 578 u_lg id , tid ; 579 u_t check_id ; 580 r ; 582 id = ( u_t ) g ; 583 #i `defed ( MUTEX_THREAD_TEST ) 584 tid = ( u_lg ) `os_thad_lf (); 586 tid = 0; 588 `tf ("Wakeup: ID %03lu (PID: %lu; TID: %lx)\n", 589 id , ( u_lg ) `gpid (), tid ); 591 gp = ( TM *) gm_addr ; 594 check_id = 0;; ++check_id) { 596 i( `__os_exis ( dbv , MT_FILE_QUIT , NULL ) == 0) 600 i( check_id = hads * rocs ) 601 check_id = 0; 604 = ( TM *)( tm_addr + check_id * (TM)); 605 i(! -> wakeme ) 608 i( vbo ) { 609 `tf ("%03lu: wakeuphread %03lu (mtx: %lu)\n", 610 id , ->id, ( u_lg p-> mux ); 611 () `fush ( dout ); 615 i(( r = dbv -> `mux_lock (dbv, gp -> mux )) != 0) { 616 `rtf ( dr , "%s: wakeup: globalock: %s\n", 617 ogme , `db_ ( r )); 621 -> wakeme = 0; 622 i(( r = dbv -> `mux_uock (dbv, -> mux )) != 0) { 623 `rtf ( dr , "%s: wakeup: unlock: %s\n", 624 ogme , `db_ ( r )); 628 i(( r = dbv -> `mux_uock (dbv, gp -> mux )) != 0) { 629 `rtf ( dr , "%s: wakeup: global unlock: %s\n", 630 ogme , `db_ ( r )); 634 `__os_p ( dbv , 0, ( u_lg ) `nd () % 3); 636 ( NULL ); 637 } } 644 $tm_v_ () 646 u_t32_t ags ; 647 t ; 648 * home ; 654 i(( t = `db_v_ (& dbv , 0)) != 0) { 655 `rtf ( dr , "%s: %s\n", ogme , `db_ ( t )); 658 dbv -> `t_rfe (dbv, dr ); 659 dbv -> `t_fx (dbv, ogme ); 662 i(( t = dbv -> `mux_t_emt (dbenv, 663 1 + hads * rocs + maxlocks )) != 0) { 664 dbv -> `r (dbv, t , "dbenv->mutex_set_increment"); 668 ags = DB_CREATE ; 669 i( rocs == 1) { 670 home = NULL ; 671 ags | DB_PRIVATE ; 673 home = TESTDIR ; 674 i( hads != 1) 675 ags | DB_THREAD ; 676 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) { 677 dbv -> `r (dbv, t , "vmݒ: %s", home ); 682 } } 689 $tm_v_o () 691 () dbv -> `o (dbenv, 0); 692 } } 699 $tm_mux_ () 701 TM * mp ; 702 u_t i ; 703 r ; 705 i( vbo ) 706 `tf ("Allocatehe global mutex: "); 707 mp = ( TM *) gm_addr ; 708 i(( r = dbv -> `mux_loc (dbv, 0, & mp -> mux )) != 0) { 709 `rtf ( dr , "%s: DB_ENV->mutex_alloc (global): %s\n", 710 ogme , `db_ ( r )); 711 `ex ( EXIT_FAILURE ); 713 i( vbo ) 714 `tf ("%lu\n", ( u_lg ) mp -> mux ); 716 i( vbo ) 717 `tf ( 719 hads * rocs ); 720 i = 0; i < hads * rocs ; ++i) { 721 mp = ( TM *)( tm_addr + i * (TM)); 722 i(( r = dbv -> `mux_loc ( 723 dbv , DB_MUTEX_SELF_BLOCK , & mp -> mux )) != 0) { 724 `rtf ( dr , 726 ogme , i , `db_ ( r )); 727 `ex ( EXIT_FAILURE ); 729 i(( r = dbv -> `mux_lock (dbv, mp -> mux )) != 0) { 730 `rtf ( dr , 732 ogme , i , `db_ ( r )); 733 `ex ( EXIT_FAILURE ); 735 i( vbo ) 736 `tf ("%lu ", ( u_lg ) mp -> mux ); 738 i( vbo ) 739 `tf ("\n"); 741 i( vbo ) 742 `tf ("Ao %d-lock muxes: ", maxlocks ); 743 i = 0; i < maxlocks ; ++i) { 744 mp = ( TM *)( lm_addr + i * (TM)); 745 i(( r = dbv -> `mux_loc (dbv, 0, & mp -> mux )) != 0) { 746 `rtf ( dr , 748 ogme , i , `db_ ( r )); 749 `ex ( EXIT_FAILURE ); 751 i( vbo ) 752 `tf ("%lu ", ( u_lg ) mp -> mux ); 754 i( vbo ) 755 `tf ("\n"); 756 } } 763 $tm_mux_deroy () 765 TM * gp , * mp ; 766 u_t i ; 767 r ; 769 i( vbo ) 770 `tf ("Destroyhe global mutex.\n"); 771 gp = ( TM *) gm_addr ; 772 i(( r = dbv -> `mux_ (dbv, gp -> mux )) != 0) { 773 `rtf ( dr , "%s: DB_ENV->mutex_free (global): %s\n", 774 ogme , `db_ ( r )); 775 `ex ( EXIT_FAILURE ); 778 i( vbo ) 779 `tf ("Destroyheer-thread mutexes.\n"); 780 i = 0; i < hads * rocs ; ++i) { 781 mp = ( TM *)( tm_addr + i * (TM)); 782 i(( r = dbv -> `mux_ (dbv, mp -> mux )) != 0) { 783 `rtf ( dr , 785 ogme , i , `db_ ( r )); 786 `ex ( EXIT_FAILURE ); 790 i( vbo ) 791 `tf ("Destroyheer-lock mutexes.\n"); 792 i = 0; i < maxlocks ; ++i) { 793 mp = ( TM *)( lm_addr + i * (TM)); 794 i(( r = dbv -> `mux_ (dbv, mp -> mux )) != 0) { 795 `rtf ( dr , 797 ogme , i , `db_ ( r )); 798 `ex ( EXIT_FAILURE ); 801 } } 808 $tm_mux_s () 810 #ifde HAVE_STATISTICS 811 TM * mp ; 812 u_t32_t t_wa , t_nowa ; 813 u_t i ; 815 `tf ("Per-lock mutex statistics.\n"); 816 i = 0; i < maxlocks ; ++i) { 817 mp = ( TM *)( lm_addr + i * (TM)); 818 `__mux_t_wa_fo ( dbv , mp -> mux , & t_wa , & t_nowa ); 819 `tf ("mux %2d: wa: %lu;wa %lu\n", i , 820 ( u_lg ) t_wa , (u_lg) t_nowa ); 823 } } 830 $da_ ( gm_add , tm_add , lm_add , fh , ) 831 u_t8_t ** gm_add , ** tm_add , ** lm_add ; 832 DB_FH ** fh ; 833 ; 835 DB_FH * fhp ; 836 size_t nwre ; 837 r ; 838 * addr ; 840 fhp = NULL ; 845 i( rocs == 1) { 846 i( ) { 847 i(( r = 848 `__os_oc ( dbv , ( size_t ) n , 1, & addr )) != 0) 849 `ex ( EXIT_FAILURE ); 851 `rtf ( dr , 853 ogme ); 854 `ex ( EXIT_FAILURE ); 857 i( ) { 858 i( vbo ) 859 `tf ("Createhe backing file.\n"); 861 i(( r = `__os_ݒ ( dbv , MT_FILE , 0, 862 DB_OSO_CREATE | DB_OSO_TRUNC , 0666, & fhp )) == -1) { 863 `rtf ( dr , "%s: %s: open: %s\n", 864 ogme , MT_FILE , `db_ ( r )); 865 `ex ( EXIT_FAILURE ); 868 i(( r = `__os_ek ( dbv , fhp , 0, 0, n )) != 0 || 869 ( r = 870 `__os_wre ( dbv , fhp , & r , 1, & nwre )) != 0 || 871 nwre != 1) { 872 `rtf ( dr , "%s: %s: seek/write: %s\n", 873 ogme , MT_FILE , `db_ ( r )); 874 `ex ( EXIT_FAILURE ); 877 i(( r = 878 `__os_ݒ ( dbv , MT_FILE , 0, 0, 0, & fhp )) != 0) 879 `ex ( EXIT_FAILURE ); 881 i(( r = 882 `__os_mfe ( dbv , MT_FILE , fhp , n , 0, & addr )) != 0) 883 `ex ( EXIT_FAILURE ); 886 * gm_add = ( u_t8_t *) addr ; 887 addr = ( u_t8_t *dd+ ( TM ); 888 * tm_add = ( u_t8_t *) addr ; 889 addr = ( u_t8_t *dd+ ( TM * ( hads * rocs ); 890 * lm_add = ( u_t8_t *) addr ; 892 i( fh ! NULL ) 893 * fh = fhp ; 894 } } 901 $da_off ( addr , fhp ) 902 u_t8_t * addr ; 903 DB_FH * fhp ; 905 i( rocs == 1) 906 `__os_ ( dbv , addr ); 908 i( `__os_unmfe ( dbv , addr , n ) != 0) 909 `ex ( EXIT_FAILURE ); 910 i( `__os_ohd ( dbv , fhp ) != 0) 911 `ex ( EXIT_FAILURE ); 913 } } 920 $uge () 922 `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 925 ( EXIT_FAILURE ); 926 } } 933 $os_wa ( ocs , n ) 934 os_pid_t * ocs ; 935 u_t n ; 937 u_t i ; 938 us ; 939 #i `defed ( DB_WIN32 ) 940 DWORD t ; 943 us = 0; 945 #i `defed ( DB_WIN32 ) 947 t = `WaFMuɝObjes ( n , ocs , FALSE , INFINITE ); 948 i = t - WAIT_OBJECT_0 ; 949 i( i < 0 || i > n ) 950 ( `__os_posix_r ( `__os_g_sy ())); 952 i(( `GExCodePross ( ocs [ i ], & t ) == 0) || (ret != 0)) 953 ( t ); 956 ++ i < n ) 957 ocs [ i - 1] =rocs[i]; 958 } -- n ); 959 #i! `defed ( HAVE_VXWORKS ) 961 i( `wa (& us ) == -1) 962 ( `__os_posix_r ( `__os_g_sy ())); 964 i( `WIFEXITED ( us =0 || `WEXITSTATUS (status) != 0) { 965 i = 0; i < n ; i++) 966 () `kl ( ocs [ i ], SIGKILL ); 967 ( `WEXITSTATUS ( us )); 969 } -- n ); 973 } } 975 os_pid_t 976 $awn_oc ( id , tmth , tyg ) 977 u_lg id ; 978 * tmth , * tyg ; 980 lbuf [16], nbuf [16], pbuf [16], tbuf [16], Tbuf [256]; 981 *cڡ vbuf = vbo ? "-v" : NULL ; 982 * gs [] = { NULL , 983 "-l", NULL , "-n", NULL , 984 "-p", NULL , "-t", NULL , 985 "-T", NULL , NULL , 986 NULL 989 gs [0] = tmth ; 990 `tf ( lbuf , buf), "%d", maxlocks ); 991 gs [2] = lbuf ; 992 `tf ( nbuf , buf), "%d", ocks ); 993 gs [4] = nbuf ; 994 `tf ( pbuf , buf), "%d", rocs ); 995 gs [6] = pbuf ; 996 `tf ( tbuf , buf), "%d", hads ); 997 gs [8] = tbuf ; 998 `tf ( Tbuf , (Tbuf), "%s=%lu", tyg , id ); 999 gs [10] = Tbuf ; 1000 gs [11] = vbuf ; 1002 ( `os_awn ( tmth , gs )); 1003 } } 1005 os_pid_t 1006 $os_awn ( th , gv ) 1007 cڡ * th ; 1008 *cڡ gv []; 1010 os_pid_t pid ; 1011 us ; 1013 `COMPQUIET ( pid , 0); 1014 `COMPQUIET ( us , 0); 1016 #ifde HAVE_VXWORKS 1017 `rtf ( dr , "%s: os_awn su܋d f VxWks.\n", ogme ); 1018 ( OS_BAD_PID ); 1019 #i `defed ( HAVE_QNX ) 1028 ( `awnv ( P_NOWAIT , th , gv )); 1029 #i `defed ( DB_WIN32 ) 1030 ( os_pid_t )( `_awnv ( P_NOWAIT , th , gv )); 1032 i(( pid = `fk ()) != 0) { 1033 i( pid == -1) 1034 ( OS_BAD_PID ); 1035 ( pid ); 1037 () `execv ( th , gv ); 1038 `ex ( EXIT_FAILURE ); 1041 } } @../os/os_abort.c 9 ~"db_cfig.h " 11 ~"db_t.h " 19 $__os_abt () 21 #ifde HAVE_ABORT 22 `abt (); 24 #ifde SIGABRT 25 () `i ( SIGABRT ); 27 `ex (1); 30 } } @../os/os_abs.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_abh ( th ) 21 cڡ * th ; 23 ( th [0] == '/'); 24 } } @../os/os_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde DIAGNOSTIC 14 __os_gud __P (( DB_ENV *)); 17 size_t msize ; 18 mign ; 19 } tdb_locfo_t ; 50 $__os_umloc ( dbv , size , ܕ ) 51 DB_ENV * dbv ; 52 size_t size ; 53 * ܕ ; 55 t ; 58 i( size == 0) 59 ++ size ; 61 i( dbv = NULL || dbv-> db_mloc == NULL) { 62 i( `DB_GLOBAL ( j_mloc ! NULL ) 63 *(**) ܕ = `DB_GLOBAL ( j_mloc )( size ); 65 *(**) ܕ = `mloc ( size ); 66 i(*(**) ܕ = NULL ) { 70 i(( t = `__os_g_o_t_zo ()) == 0) { 71 t = ENOMEM ; 72 `__os_t_o ( ENOMEM ); 74 `__db_r ( dbv , t , "mloc: %lu", ( u_lg ) size ); 75 ( t ); 80 i((*(**) ܕ = dbv -> `db_mloc ( size )= NULL ) { 81 `__db_rx ( dbv , 83 ( ENOMEM ); 87 } } 98 $__os_uloc ( dbv , size , ܕ ) 99 DB_ENV * dbv ; 100 size_t size ; 101 * ܕ ; 103 t ; 104 * r ; 106 r = *(**) ܕ ; 109 i( size == 0) 110 ++ size ; 112 i( dbv = NULL || dbv-> db_loc == NULL) { 113 i( r = NULL ) 114 ( `__os_umloc ( dbv , size , ܕ )); 116 i( `DB_GLOBAL ( j_loc ! NULL ) 117 *(**) ܕ = `DB_GLOBAL ( j_loc )( r , size ); 119 *(**) ܕ = `loc ( r , size ); 120 i(*(**) ܕ = NULL ) { 124 i(( t = `__os_g_o_t_zo ()) == 0) { 125 t = ENOMEM ; 126 `__os_t_o ( ENOMEM ); 128 `__db_r ( dbv , t , "loc: %lu", ( u_lg ) size ); 129 ( t ); 134 i((*(**) ܕ = dbv -> `db_loc ( r , size )= NULL ) { 135 `__db_rx ( dbv , 137 ( ENOMEM ); 141 } } 152 $__os_u ( dbv , r ) 153 DB_ENV * dbv ; 154 * r ; 156 i( dbv ! NULL && dbv-> db_ != NULL) 157 dbv -> `db_ ( r ); 158 i( `DB_GLOBAL ( j_ ! NULL ) 159 `DB_GLOBAL ( j_ )( r ); 161 ` ( r ); 162 } } 171 $__os_rdup ( dbv , r , ܕ ) 172 DB_ENV * dbv ; 173 cڡ * r ; 174 * ܕ ; 176 size_t size ; 177 t ; 178 * p ; 180 *(**) ܕ = NULL ; 182 size = ` ( r ) + 1; 183 i(( t = `__os_mloc ( dbv , size , & p )) != 0) 184 ( t ); 186 `memy ( p , r , size ); 188 *(**) ܕ = p ; 190 } } 199 $__os_oc ( dbv , num , size , ܕ ) 200 DB_ENV * dbv ; 201 size_t num , size ; 202 * ܕ ; 204 * p ; 205 t ; 207 size * num ; 208 i(( t = `__os_mloc ( dbv , size , & p )) != 0) 209 ( t ); 211 `memt ( p , 0, size ); 213 *(**) ܕ = p ; 215 } } 224 $__os_mloc ( dbv , size , ܕ ) 225 DB_ENV * dbv ; 226 size_t size ; 227 * ܕ ; 229 t ; 230 * p ; 232 *(**) ܕ = NULL ; 235 i( size == 0) 236 ++ size ; 238 #ifde DIAGNOSTIC 240 size +( db_locfo_t ) + 1; 243 i( `DB_GLOBAL ( j_mloc ! NULL ) 244 p = `DB_GLOBAL ( j_mloc )( size ); 246 p = `mloc ( size ); 247 i( p = NULL ) { 254 i(( t = `__os_g_o_t_zo ()) == 0) { 255 t = ENOMEM ; 256 `__os_t_o ( ENOMEM ); 258 `__db_r ( dbv , t , "mloc: %lu", ( u_lg ) size ); 259 ( t ); 262 #ifde DIAGNOSTIC 264 `memt ( p , CLEAR_BYTE , size ); 271 (( u_t8_t *) p )[ size - 1] = CLEAR_BYTE ; 273 (( db_locfo_t *) p )-> size = size; 274 p = &(( db_locfo_t *)p)[1]; 276 *(**) ܕ = p ; 279 } } 288 $__os_loc ( dbv , size , ܕ ) 289 DB_ENV * dbv ; 290 size_t size ; 291 * ܕ ; 293 t ; 294 * p , * r ; 296 r = *(**) ܕ ; 299 i( size == 0) 300 ++ size ; 303 i( r = NULL ) 304 ( `__os_mloc ( dbv , size , ܕ )); 306 #ifde DIAGNOSTIC 308 size +( db_locfo_t ) + 1; 311 r = &(( db_locfo_t *)ptr)[-1]; 314 size_t s ; 316 s = (( db_locfo_t *) r )-> size ; 317 i((( u_t8_t *) r )[ s - 1] ! CLEAR_BYTE ) 318 `__os_gud ( dbv ); 326 i( `DB_GLOBAL ( j_loc ! NULL ) 327 p = `DB_GLOBAL ( j_loc )( r , size ); 329 p = `loc ( r , size ); 330 i( p = NULL ) { 337 i(( t = `__os_g_o_t_zo ()) == 0) { 338 t = ENOMEM ; 339 `__os_t_o ( ENOMEM ); 341 `__db_r ( dbv , t , "loc: %lu", ( u_lg ) size ); 342 ( t ); 344 #ifde DIAGNOSTIC 345 (( u_t8_t *) p )[ size - 1] = CLEAR_BYTE ; 347 (( db_locfo_t *) p )-> size = size; 348 p = &(( db_locfo_t *)p)[1]; 351 *(**) ܕ = p ; 354 } } 363 $__os_ ( dbv , r ) 364 DB_ENV * dbv ; 365 * r ; 367 #ifde DIAGNOSTIC 368 size_t size ; 375 i( r = NULL ) 378 #ifde DIAGNOSTIC 383 r = &(( db_locfo_t *)ptr)[-1]; 384 size = (( db_locfo_t *) r )->size; 385 i((( u_t8_t *) r )[ size - 1] ! CLEAR_BYTE ) 386 `__os_gud ( dbv ); 389 i( size != 0) 390 `memt ( r , CLEAR_BYTE , size ); 392 `COMPQUIET ( dbv , NULL ); 395 i( `DB_GLOBAL ( j_ ! NULL ) 396 `DB_GLOBAL ( j_ )( r ); 398 ` ( r ); 399 } } 401 #ifde DIAGNOSTIC 407 $__os_gud ( dbv ) 408 DB_ENV * dbv ; 410 `__db_rx ( dbv , "Guard byte incorrect during free"); 411 `__os_abt (); 413 } } 446 $__ua_memy ( d , c , n ) 447 * d ; 448 cڡ * c ; 449 size_t n ; 451 ((*) `memy ( d , c , n )); 452 } } @../os/os_clock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_gtime ( dbv , ) 21 DB_ENV * dbv ; 22 db_timeec * ; 24 cڡ * sc ; 25 t ; 27 #i `defed ( HAVE_CLOCK_GETTIME ) 28 `RETRY_CHK (( `ock_gtime ( CLOCK_REALTIME , ( timeec *) )), t ); 29 i( t != 0) { 30 sc = "clock_gettime"; 31 r ; 34 #i! `defed ( HAVE_CLOCK_GETTIME && defed( HAVE_GETTIMEOFDAY ) 35 timev v ; 37 `RETRY_CHK (( `gtimeofday (& v , NULL )), t ); 38 i( t != 0) { 39 sc = "gettimeofday"; 40 r ; 43 -> tv_c = v .tv_sec; 44 -> tv_nc = v . tv_uc * NS_PER_US ; 46 #i! `defed ( HAVE_GETTIMEOFDAY && !defed( HAVE_CLOCK_GETTIME ) 47 time_t now ; 49 `RETRY_CHK (( `time (& now =( time_t )-1 ? 1 : 0), t ); 50 i( t != 0) { 51 sc = "time"; 52 r ; 55 -> tv_c = now ; 56 -> tv_nc = 0; 60 r : `__db_sy ( dbv , t , "%s", sc ); 61 () `__db_nic ( dbv , `__os_posix_r ( t )); 62 } } @../os/os_config.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_fs_nzo () 24 } } 33 $__os_sut_de_io () 35 t ; 37 t = 0; 39 #ifde HAVE_O_DIRECT 40 t = 1; 42 #i `defed ( HAVE_DIRECTIO && defed( DIRECTIO_ON ) 43 t = 1; 45 ( t ); 46 } } 55 $__os_sut_db_gi () 58 } } 67 $__os_sut_iti () 70 } } @../os/os_dir.c 9 ~"db_cfig.h " 11 #__INCLUDE_DIRECTORY 1 ) 12 ~"db_t.h " 21 $__os_dli ( dbv , d , me , ) 22 DB_ENV * dbv ; 23 cڡ * d ; 24 *** me ; 25 * ; 27 dt * dp ; 28 DIR * dp ; 29 sb ; 30 ysz , t , t ; 31 ** mes , buf [ DB_MAXPATHLEN ]; 33 i( dbv ! NULL && 34 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 35 `__db_msg ( dbv , "fes: deyi %s", d ); 37 i( `DB_GLOBAL ( j_dli ! NULL ) 38 ( `DB_GLOBAL ( j_dli )( d , me , )); 40 #ifde HAVE_VXWORKS 41 i(( dp = `ݒd ((*) d )= NULL ) 43 i(( dp = `ݒd ( d )= NULL ) 45 ( `__os_g_o ()); 46 mes = NULL ; 47 ysz = t = 0; ( dp = `add ( dp )! NULL ;) { 48 `tf ( buf , (buf), "%s/%s", d , dp -> d_me ); 56 `RETRY_CHK ( ` ( buf , & sb ), t ); 57 i( t != 0) { 58 t = `__os_posix_r (ret); 59 r ; 61 i(! `S_ISREG ( sb . _mode )) 64 i( t > ysz ) { 65 ysz += 100; 66 i(( t = `__os_loc ( dbv , 67 ( u_t ) ysz * ( mes [0]), &names)) != 0) 68 r ; 70 i(( t = `__os_rdup ( dbv , dp -> d_me , & mes [ t ])) != 0) 71 r ; 72 t ++; 74 () `od ( dp ); 76 * me = mes ; 77 * = t ; 80 r : i( mes ! NULL ) 81 `__os_d ( dbv , mes , t ); 82 i( dp ! NULL ) 83 () `od ( dp ); 84 ( t ); 85 } } 94 $__os_d ( dbv , mes , t ) 95 DB_ENV * dbv ; 96 ** mes ; 97 t ; 99 i( `DB_GLOBAL ( j_d ! NULL ) 100 `DB_GLOBAL ( j_d )( mes , t ); 102 t > 0) 103 `__os_ ( dbv , mes [-- t ]); 104 `__os_ ( dbv , mes ); 106 } } @../os/os_errno.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_g_o_t_zo () 23 ( o ); 24 } } 40 $__os_g_o () 43 ( `__os_g_sy ()); 44 } } 55 $__os_g_Ë () 58 ( `__os_g_sy ()); 59 } } 69 $__os_g_sy () 72 i( o == 0) 73 `__os_t_o ( EAGAIN ); 74 ( o ); 75 } } 84 $__os_t_o ( evue ) 85 evue ; 95 o = 96 evue >0 ?vu: (evu= DB_RUNRECOVERY ? EFAULT : EINVAL ); 97 } } 106 $__os_ ( r , buf , n ) 107 r ; 108 * buf ; 109 size_t n ; 112 () `y ( buf , ` ( r ), n - 1); 113 buf [ n - 1] = '\0'; 115 ( buf ); 116 } } 125 $__os_posix_r ( r ) 126 r ; 128 ( r ); 129 } } @../os/os_fid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_feid ( dbv , ame , unique_okay , fidp ) 21 DB_ENV * dbv ; 22 cڡ * ame ; 23 unique_okay ; 24 u_t8_t * fidp ; 26 pid_t pid ; 27 size_t i ; 28 u_t32_t tmp ; 29 u_t8_t * p ; 31 #ifde HAVE_STAT 32 sb ; 33 t ; 46 `memt ( fidp , 0, DB_FILE_ID_LEN ); 47 #ifde HAVE_VXWORKS 48 `RETRY_CHK (( ` ((*) ame , & sb )), t ); 50 `RETRY_CHK (( ` ( ame , & sb )), t ); 52 i( t != 0) { 53 `__db_sy ( dbv , t , ": %s", ame ); 54 ( `__os_posix_r ( t )); 83 tmp = ( u_t32_t ) sb . _o ; 84 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 85 * fidp ++ = * p ++; 87 tmp = ( u_t32_t ) sb . _dev ; 88 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 89 * fidp ++ = * p ++; 98 () `y ((*) fidp , ame , DB_FILE_ID_LEN ); 101 i( unique_okay ) { 103 `__os_unique_id ( dbv , & tmp ); 104 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 105 * fidp ++ = * p ++; 126 i( `DB_GLOBAL ( fid_rl ) == 0) { 127 `__os_id ( dbv , & pid , NULL ); 128 `DB_GLOBAL ( fid_rl ( u_t32_t ) pid ; 130 `DB_GLOBAL ( fid_rl ) += 100000; 132 p = ( u_t8_t *) 133 & `DB_GLOBAL ( fid_rl ), i = ( u_t32_t ); i > 0; --i) 134 * fidp ++ = * p ++; 138 } } @../os/os_flock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_fdlock ( dbv , fhp , offt , acque , nowa ) 21 DB_ENV * dbv ; 22 DB_FH * fhp ; 23 acque , nowa ; 24 off_t offt ; 26 #ifde HAVE_FCNTL 27 ock ; 28 t , t_t ; 30 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 32 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 33 `__db_msg ( dbv , 35 fhp -> me , acque ? "acque": "a", ( u_lg ) offt ); 37 . l_t = offt ; 38 . l_n = 1; 39 . l_ty = acque ? F_WRLCK : F_UNLCK ; 40 . l_wh = SEEK_SET ; 42 `RETRY_CHK_EINTR_ONLY ( 43 ( `f ( fhp -> fd , nowa ? F_SETLK : F_SETLKW , & )), t ); 45 i( t == 0) 48 i(( t_t = `__os_posix_r ( t )! EACCES &&_! EAGAIN ) 49 `__db_sy ( dbv , t , "fcntl"); 50 ( t_t ); 52 `COMPQUIET ( fhp , NULL ); 53 `COMPQUIET ( acque , 0); 54 `COMPQUIET ( nowa , 0); 55 `COMPQUIET ( offt , 0); 56 `__db_sy ( dbv , DB_OPNOTSUP , "advisory fileocking unavailable"); 57 ( DB_OPNOTSUP ); 59 } } @../os/os_fsync.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifdef HAVE_VXWORKS 14 ~"ioLib.h " 16 #fsync ( fd `__vx_fsync (fd) ) 19 $__vx_fsync ( fd ) 20 fd ; 22 t ; 29 i(( t = `iol ( fd , FIOSYNC , 0)! ERROR ) 31 ( t ); 32 } } 35 #ifde __hp3000s900 36 #fsync ( fd `__m_fsync (fd) ) 39 $__m_fsync ( fd ) 40 fd ; 42 `FCONTROL (, , *); 44 `FCONTROL ( `_MPE_FILENO ( fd ), 2, NULL ); 45 `FCONTROL ( `_MPE_FILENO ( fd ), 6, NULL ); 47 } } 57 $__os_fsync ( dbv , fhp ) 58 DB_ENV * dbv ; 59 DB_FH * fhp ; 61 t ; 63 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 69 i( `F_ISSET ( fhp , DB_FH_NOSYNC )) 72 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 73 `__db_msg ( dbv , "fes: flush %s", fhp -> me ); 75 i( `DB_GLOBAL ( j_fsync ! NULL ) 76 t = `DB_GLOBAL ( j_fsync )( fhp -> fd ); 78 #i `defed ( F_FULLFSYNC ) 79 `RETRY_CHK (( `f ( fhp -> fd , F_FULLFSYNC , 0)), t ); 84 i( t = ENOTSUP ) 85 `RETRY_CHK (( `fsync ( fhp -> fd )), t ); 86 #i `defed ( HAVE_FDATASYNC ) 87 `RETRY_CHK (( `fdasync ( fhp -> fd )), t ); 89 `RETRY_CHK (( `fsync ( fhp -> fd )), t ); 93 i( t != 0) { 94 `__db_sy ( dbv , t , "fsync"); 95 t = `__os_posix_r (ret); 97 ( t ); 98 } } @../os/os_fzero.c 9 ~"db_cfig.h " 11 ~"db_t.h " 29 $__os_zofl ( dbv , fhp ) 30 DB_ENV * dbv ; 31 DB_FH * fhp ; 33 #ifde HAVE_FILESYSTEM_NOTZERO 34 off_t _offt , wre_offt ; 35 size_t bn , nw ; 36 u_t32_t bys , mbys ; 37 group_sync , ed_ , t ; 38 u_t8_t buf [8 * 1024], * bp ; 40 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 41 `__db_msg ( dbv , "fes: zo-f%s", fhp -> me ); 44 wre_offt = ( off_t ) fhp -> pgno * fhp-> pgsize + fhp-> offt ; 47 i(( t = `__os_iofo ( dbv , NULL , fhp , & mbys , & bys , NULL)) != 0) 48 ( t ); 49 _offt = ( off_t ) mbys * MEGABYTE + bys ; 52 i( _offt > wre_offt ) 56 #unde ZF_LARGE_WRITE 57 #ZF_LARGE_WRITE (64 * 1024) ) 58 i( wre_offt - _offt > ZF_LARGE_WRITE ) { 59 i(( t = `__os_oc ( dbv , 1, ZF_LARGE_WRITE , & bp )) != 0) 60 ( t ); 61 bn = ZF_LARGE_WRITE ; 62 ed_ = 1; 64 bp = buf ; 65 bn = ( buf ); 66 ed_ = 0; 67 `memt ( buf , 0, (buf)); 71 i(( t = `__os_ek ( dbv , fhp , mbys , MEGABYTE , bys )) != 0) 72 r ; 80 group_sync = 0; _offt < wre_offt ; group_sync = 1) { 81 i( wre_offt - _offt <( off_t ) bn ) { 82 bn = ( size_t )( wre_offt - _offt ); 83 i( group_sync && ( t = `__os_fsync ( dbv , fhp )) != 0) 84 r ; 86 i(( t = `__os_physwre ( dbv , fhp , bp , bn , & nw )) != 0) 87 r ; 88 _offt + bn ; 90 i(( t = `__os_fsync ( dbv , fhp )) != 0) 91 r ; 94 mbys = ( u_t32_t )( wre_offt / MEGABYTE ); 95 bys = ( u_t32_t )( wre_offt % MEGABYTE ); 96 t = `__os_ek ( dbv , fhp , mbys , MEGABYTE , bys ); 98 r : i( ed_ ) 99 `__os_ ( dbv , bp ); 100 ( t ); 102 `COMPQUIET ( dbv , NULL ); 103 `COMPQUIET ( fhp , NULL ); 106 } } @../os/os_getenv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_gv ( dbv , me , b , bu ) 21 DB_ENV * dbv ; 22 cڡ * me ; 23 ** b ; 24 size_t bu ; 36 #ifde HAVE_GETENV 37 * p ; 39 i(( p = `gv ( me )! NULL ) { 40 i( ` ( p < bu ) { 41 () `ry (* b , p ); 45 * b = NULL ; 46 `__db_rx ( dbv , 48 me , p ); 49 ( EINVAL ); 52 `COMPQUIET ( dbv , NULL ); 53 `COMPQUIET ( me , NULL ); 54 `COMPQUIET ( bu , 0); 56 * b = NULL ; 58 } } @../os/os_handle.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_ݒhd ( dbv , me , ags , mode , fh ) 22 DB_ENV * dbv ; 23 cڡ * me ; 24 ags , mode ; 25 DB_FH ** fh ; 27 DB_FH * fhp ; 28 u_t ĕt , s ; 29 t ; 30 #ifde HAVE_VXWORKS 31 wags ; 41 i(( t = `__os_oc ( dbv , 1, ( DB_FH ), & fhp )) != 0) 42 ( t ); 43 i(( t = `__os_rdup ( dbv , me , & fhp ->name)) != 0) 44 r ; 45 i( dbv ! NULL ) { 46 `MUTEX_LOCK ( dbv , dbv-> mtx_v ); 47 `TAILQ_INSERT_TAIL (& dbv -> fdli , fhp , q ); 48 `MUTEX_UNLOCK ( dbv , dbv-> mtx_v ); 49 `F_SET ( fhp , DB_FH_ENVLINK ); 52 #ifde HAVE_QNX 53 i( `LF_ISSET ( DB_OSO_REGION )) { 54 i(( t = 55 `__os_qnx_gi_ݒ ( dbv , me , oags , mode , fhp )) != 0) 56 r ; 57 de ; 62 i( `DB_GLOBAL ( j_ݒ ! NULL ) { 63 i(( fhp -> fd = `DB_GLOBAL ( j_ݒ )( me , ags , mode )) == -1) { 64 t = `__os_posix_r ( `__os_g_sy ()); 65 r ; 67 de ; 70 s = 0; 71 ĕt = 1;repeat < 4; ++nrepeat) { 72 t = 0; 73 #ifdef HAVE_VXWORKS 84 i( `LF_ISSET ( O_CREAT )) { 85 DB_BEGIN_SINGLE_THREAD ; 86 wags = ags & ~( O_CREAT | O_EXCL ); 87 i(( fhp -> fd = `ݒ ( me , wags , mode )) != -1) { 94 `F_SET ( fhp , DB_FH_OPENED ); 95 i( `LF_ISSET ( O_EXCL )) { 101 DB_END_SINGLE_THREAD ; 102 t = EEXIST ; 103 r ; 115 fhp -> fd = `t ( me , wags ); 116 DB_END_SINGLE_THREAD ; 120 #ifde __VMS 130 fhp -> fd = `ݒ ( me , ags , mode , "shr=get,put,upd,del,upi"); 132 fhp -> fd = `ݒ ( me , ags , mode ); 134 i( fhp -> fd != -1) { 135 t = 0; 139 t = `__os_posix_r ( `__os_g_sy ())) { 140 EMFILE : 141 ENFILE : 142 ENOSPC : 149 `__os_p ( dbv , ĕt * 2, 0); 151 EAGAIN : 152 EBUSY : 153 EINTR : 158 i(++ s < DB_RETRY ) 159 -- ĕt ; 163 r ; 167 i( t == 0) { 168 #i `defed ( HAVE_FCNTL_F_SETFD ) 170 i( `f ( fhp -> fd , F_SETFD , 1) == -1) { 171 t = `__os_g_sy (); 172 `__db_sy ( dbv , t , "fcntl(F_SETFD)"); 173 t = `__os_posix_r (ret); 174 r ; 178 de : `F_SET ( fhp , DB_FH_OPENED ); 179 * fh = fhp ; 183 r : () `__os_ohd ( dbv , fhp ); 184 ( t ); 185 } } 194 $__os_ohd ( dbv , fhp ) 195 DB_ENV * dbv ; 196 DB_FH * fhp ; 198 t ; 200 t = 0; 206 `DB_ASSERT ( dbv , dbv ! NULL || ! `F_ISSET ( fhp , DB_FH_ENVLINK )); 208 i( dbv ! NULL ) { 209 i( fhp -> me ! NULL && `FLD_ISSET ( 210 dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 211 `__db_msg ( dbv , "fes: clo %s", fhp -> me ); 213 i( `F_ISSET ( fhp , DB_FH_ENVLINK )) { 218 `MUTEX_LOCK ( dbv , dbv-> mtx_v ); 219 `TAILQ_REMOVE (& dbv -> fdli , fhp , q ); 220 `MUTEX_UNLOCK ( dbv , dbv-> mtx_v ); 225 i( `F_ISSET ( fhp , DB_FH_OPENED )) { 226 i( `DB_GLOBAL ( j_o ! NULL ) 227 t = `DB_GLOBAL ( j_o )( fhp -> fd ); 229 `RETRY_CHK (( `o ( fhp -> fd )), t ); 230 i( t != 0) { 231 `__db_sy ( dbv , t , "close"); 232 t = `__os_posix_r (ret); 237 i( `F_ISSET ( fhp , DB_FH_UNLINK )) 238 () `__os_uƚk ( dbv , fhp -> me ); 240 i( fhp -> me ! NULL ) 241 `__os_ ( dbv , fhp -> me ); 242 `__os_ ( dbv , fhp ); 244 ( t ); 245 } } @../os/os_map.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde HAVE_SYSTEM_INCLUDE_FILES 14 #ifde HAVE_MMAP 15 ~<sys/mm.h > 18 #ifde HAVE_SHMGET 19 ~<sys/c.h > 20 ~<sys/shm.h > 24 #ifde HAVE_MMAP 25 __os_m __P (( DB_ENV *, *, DB_FH *, size_t , , , **)); 27 #ifde HAVE_SHMGET 28 __shm_mode __P (( DB_ENV *)); 30 __no_syem_mem __P (( DB_ENV *)); 40 $__os_r_syach ( dbv , f , ) 41 DB_ENV * dbv ; 42 REGINFO * f ; 43 REGION * ; 45 i( `F_ISSET ( dbv , DB_ENV_SYSTEM_MEM )) { 56 #i `defed ( HAVE_MUTEX_HPPA_MSEM_INIT ) 57 `__db_rx ( dbv , 59 ( EINVAL ); 61 #i `defed ( HAVE_SHMGET ) 63 key_t gid ; 64 id , mode , t ; 75 i( `F_ISSET ( f , REGION_CREATE )) { 82 i( dbv -> shm_key = INVALID_REGION_SEGID ) { 83 `__db_rx ( dbv , 85 ( EINVAL ); 87 gid = ( key_t )( dbv -> shm_key + ( f -> id - 1)); 96 i(( id = `shmg ( gid , 0, 0)) != -1) { 97 () `shml ( id , IPC_RMID , NULL ); 98 i(( id = `shmg ( gid , 0, 0)) != -1) { 99 `__db_rx ( dbv , 101 () gid ); 102 ( EAGAIN ); 110 mode = IPC_CREAT | `__shm_mode ( dbv ); 111 i(( id = `shmg ( gid , -> size , mode )) == -1) { 112 t = `__os_g_sy (); 113 `__db_sy ( dbv , t , 115 () gid ); 116 ( `__os_posix_r ( t )); 118 -> gid = id ; 120 id = -> gid ; 122 i(( f -> addr = `shm ( id , NULL , 0)) == (*)-1) { 123 f -> addr = NULL ; 124 t = `__os_g_sy (); 125 `__db_sy ( dbv , t , 126 "shm: id %d: ubˁةchshed syem memyegi", id ); 127 ( `__os_posix_r ( t )); 133 ( `__no_syem_mem ( dbv )); 137 #ifde HAVE_MMAP 139 DB_FH * fhp ; 140 t ; 142 fhp = NULL ; 150 i(( t = `__os_ݒ ( dbv , f -> me , 0, 151 DB_OSO_REGION | 152 ( `F_ISSET ( f , REGION_CREATE_OK ? DB_OSO_CREATE : 0), 153 dbv -> db_mode , & fhp )) != 0) 154 `__db_r ( dbv , t , "%s", f -> me ); 163 i( t =0 && `F_ISSET ( f , REGION_CREATE )) { 164 i( `F_ISSET ( dbv , DB_ENV_REGION_INIT )) 165 t = `__db_fe_wre ( dbv , fhp , 166 -> size / MEGABYTE ,p->size % MEGABYTE, 0x00); 168 t = `__db_fe_exnd ( dbv , fhp , -> size ); 172 i( t == 0) 173 t = `__os_m ( dbv , 174 f -> me , fhp , -> size , 1, 0, &f-> addr ); 176 i( fhp ! NULL ) 177 () `__os_ohd ( dbv , fhp ); 179 ( t ); 182 `COMPQUIET ( f , NULL ); 183 `COMPQUIET ( , NULL ); 184 `__db_rx ( dbv , 186 ( DB_OPNOTSUP ); 188 } } 197 $__os_r_sysdach ( dbv , f , deroy ) 198 DB_ENV * dbv ; 199 REGINFO * f ; 200 deroy ; 202 REGION * ; 203 t ; 205 = f ->rp; 207 i( `F_ISSET ( dbv , DB_ENV_SYSTEM_MEM )) { 208 #ifde HAVE_SHMGET 209 gid ; 215 gid = ->segid; 216 i( deroy ) 217 -> gid = INVALID_REGION_SEGID ; 219 i( `shmdt ( f -> addr ) != 0) { 220 t = `__os_g_sy (); 221 `__db_sy ( dbv , t , "shmdt"); 222 ( `__os_posix_r ( t )); 225 i( deroy && `shml ( gid , IPC_RMID , 226 NULL !0 && ( t = `__os_g_sy ()! EINVAL ) { 227 `__db_sy ( dbv , t , 229 gid ); 230 ( `__os_posix_r ( t )); 235 ( `__no_syem_mem ( dbv )); 239 #ifde HAVE_MMAP 240 #ifde HAVE_MUNLOCK 241 i( `F_ISSET ( dbv , DB_ENV_LOCKDOWN )) 242 () `muock ( f -> addr , -> size ); 244 i( `munm ( f -> addr , -> size ) != 0) { 245 t = `__os_g_sy (); 246 `__db_sy ( dbv , t , "munmap"); 247 ( `__os_posix_r ( t )); 250 i( deroy && ( t = `__os_gi_uƚk ( dbv , f -> me )) != 0) 251 ( t ); 255 `COMPQUIET ( deroy , 0); 256 `COMPQUIET ( t , 0); 257 ( EINVAL ); 259 } } 269 $__os_mfe ( dbv , th , fhp , n , is_rdly , add ) 270 DB_ENV * dbv ; 271 * th ; 272 DB_FH * fhp ; 273 is_rdly ; 274 size_t n ; 275 ** add ; 277 #i `defed ( HAVE_MMAP && !defed( HAVE_QNX ) 278 i( dbv ! NULL && 279 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 280 `__db_msg ( dbv , "fes: mm %s", th ); 282 ( `__os_m ( dbv , th , fhp , n , 0, is_rdly , add )); 284 `COMPQUIET ( dbv , NULL ); 285 `COMPQUIET ( th , NULL ); 286 `COMPQUIET ( fhp , NULL ); 287 `COMPQUIET ( is_rdly , 0); 288 `COMPQUIET ( n , 0); 289 `COMPQUIET ( add , NULL ); 290 ( EINVAL ); 292 } } 301 $__os_unmfe ( dbv , addr , n ) 302 DB_ENV * dbv ; 303 * addr ; 304 size_t n ; 306 t ; 308 i( dbv ! NULL && 309 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 310 `__db_msg ( dbv , "fileops: munmap"); 313 i( `DB_GLOBAL ( j_unm ! NULL ) 314 ( `DB_GLOBAL ( j_unm )( addr , n )); 316 #ifde HAVE_MMAP 317 #ifde HAVE_MUNLOCK 318 i( `F_ISSET ( dbv , DB_ENV_LOCKDOWN )) 319 `RETRY_CHK (( `muock ( addr , n )), t ); 325 `COMPQUIET ( dbv , NULL ); 327 `RETRY_CHK (( `munm ( addr , n )), t ); 328 t = `__os_posix_r (ret); 330 `COMPQUIET ( dbv , NULL ); 331 t = EINVAL ; 333 ( t ); 334 } } 336 #ifde HAVE_MMAP 342 $__os_m ( dbv , th , fhp , n , is_gi , is_rdly , add ) 343 DB_ENV * dbv ; 344 * th ; 345 DB_FH * fhp ; 346 is_gi , is_rdly ; 347 size_t n ; 348 ** add ; 350 * p ; 351 ags , , t ; 354 i( `DB_GLOBAL ( j_m ! NULL ) 355 ( `DB_GLOBAL ( j_m ) 356 ( th , n , is_gi , is_rdly , add )); 358 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 364 ags = is_rdly ? MAP_PRIVATE : MAP_SHARED ; 366 #ifde MAP_FILE 372 ags | MAP_FILE ; 382 #ifde MAP_HASSEMAPHORE 383 i( is_gi && ! is_rdly ) 384 ags | MAP_HASSEMAPHORE ; 386 `COMPQUIET ( is_gi , 0); 398 #ifde MAP_NOSYNC 399 ags | MAP_NOSYNC ; 402 = PROT_READ | ( is_rdly ? 0 : PROT_WRITE ); 417 #ifde VMS 418 i( `__os_fsync ( dbv , fhp ) == -1) 419 ( `__os_posix_r ( `__os_g_sy ())); 423 #ide MAP_FAILED 424 #MAP_FAILED -1 ) 426 i(( p = `mm ( NULL , 427 n , , ags , fhp -> fd , ( off_t )0)=(*) MAP_FAILED ) { 428 t = `__os_g_sy (); 429 `__db_sy ( dbv , t , "mmap"); 430 ( `__os_posix_r ( t )); 433 #ifde HAVE_MLOCK 443 i( `F_ISSET ( dbv , DB_ENV_LOCKDOWN && `mlock ( p , n ) != 0) { 444 t = `__os_g_sy (); 445 () `munm ( p , n ); 446 `__db_sy ( dbv , t , "mlock"); 447 ( `__os_posix_r ( t )); 450 `COMPQUIET ( dbv , NULL ); 453 * add = p ; 455 } } 458 #ifde HAVE_SHMGET 459 #ide SHM_R 460 #SHM_R 0400 ) 462 #ide SHM_W 463 #SHM_W 0200 ) 472 $__shm_mode ( dbv ) 473 DB_ENV * dbv ; 475 mode ; 478 i( dbv -> db_mode == 0) 479 ( SHM_R | SHM_W | SHM_R >> 3 | SHM_W >> 3); 481 mode = 0; 482 i( dbv -> db_mode & S_IRUSR ) 483 mode | SHM_R ; 484 i( dbv -> db_mode & S_IWUSR ) 485 mode | SHM_W ; 486 i( dbv -> db_mode & S_IRGRP ) 487 mode | SHM_R >> 3; 488 i( dbv -> db_mode & S_IWGRP ) 489 mode | SHM_W >> 3; 490 i( dbv -> db_mode & S_IROTH ) 491 mode | SHM_R >> 6; 492 i( dbv -> db_mode & S_IWOTH ) 493 mode | SHM_W >> 6; 494 ( mode ); 495 } } 502 $__no_syem_mem ( dbv ) 503 DB_ENV * dbv ; 505 `__db_rx ( dbv , 507 ( DB_OPNOTSUP ); 508 } } @../os/os_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 17 $db_v_t_func_o ( func_o ) 18 (* func_o `__P (()); 20 `DB_GLOBAL ( j_o func_o ; 22 } } 28 $db_v_t_func_d ( func_d ) 29 (* func_d `__P ((**, )); 31 `DB_GLOBAL ( j_d func_d ; 33 } } 40 $db_v_t_func_dli ( func_dli ) 41 (* func_dli `__P ((const *, ***, *)); 43 `DB_GLOBAL ( j_dli func_dli ; 45 } } 51 $db_v_t_func_exis ( func_exis ) 52 (* func_exis `__P ((const *, *)); 54 `DB_GLOBAL ( j_exis func_exis ; 56 } } 62 $db_v_t_func_ ( func_ ) 63 (* func_ `__P ((*)); 65 `DB_GLOBAL ( j_ func_ ; 67 } } 73 $db_v_t_func_fsync ( func_fsync ) 74 (* func_fsync `__P (()); 76 `DB_GLOBAL ( j_fsync func_fsync ; 78 } } 84 $db_v_t_func_run ( func_run ) 85 (* func_run `__P ((, off_t )); 87 `DB_GLOBAL ( j_run func_run ; 89 } } 96 $db_v_t_func_iofo ( func_iofo ) 97 (* func_iofo ) 98 `__P ((cڡ *, , u_t32_t *, u_int32_t *, u_int32_t *)); 100 `DB_GLOBAL ( j_iofo func_iofo ; 102 } } 108 $db_v_t_func_mloc ( func_mloc ) 109 *(* func_mloc `__P (( size_t )); 111 `DB_GLOBAL ( j_mloc func_mloc ; 113 } } 120 $db_v_t_func_m ( func_m ) 121 (* func_m `__P ((*, size_t , , , **)); 123 `DB_GLOBAL ( j_m func_m ; 125 } } 132 $db_v_t_func_d ( func_d ) 133 $ssize_t (* func_d `__P ((, *, size_t , off_t )); 135 `DB_GLOBAL ( j_d func_d ; 137 } } 144 $db_v_t_func_pwre ( func_pwre ) 145 $ssize_t (* func_pwre `__P ((, cڡ *, size_t , off_t )); 147 `DB_GLOBAL ( j_pwre func_pwre ; 149 } } 155 $db_v_t_func_ݒ ( func_ݒ ) 156 (* func_ݒ `__P ((const *, , ...)); 158 `DB_GLOBAL ( j_ݒ func_ݒ ; 160 } } 166 $db_v_t_func_ad ( func_ad ) 167 $ssize_t (* func_ad `__P ((, *, size_t )); 169 `DB_GLOBAL ( j_ad func_ad ; 171 } } 177 $db_v_t_func_loc ( func_loc ) 178 *(* func_loc `__P ((*, size_t )); 180 `DB_GLOBAL ( j_loc func_loc ; 182 } } 189 $db_v_t_func_me ( func_me ) 190 (* func_me `__P ((const *, const *)); 192 `DB_GLOBAL ( j_me func_me ; 194 } } 201 $db_v_t_func_ek ( func_ek ) 202 (* func_ek `__P ((, off_t , )); 204 `DB_GLOBAL ( j_ek func_ek ; 206 } } 212 $db_v_t_func_p ( func_p ) 213 (* func_p `__P (( u_lg , u_long)); 215 `DB_GLOBAL ( j_p func_p ; 217 } } 223 $db_v_t_func_uƚk ( func_uƚk ) 224 (* func_uƚk `__P ((const *)); 226 `DB_GLOBAL ( j_uƚk func_uƚk ; 228 } } 234 $db_v_t_func_unm ( func_unm ) 235 (* func_unm `__P ((*, size_t )); 237 `DB_GLOBAL ( j_unm func_unm ; 239 } } 246 $db_v_t_func_wre ( func_wre ) 247 $ssize_t (* func_wre `__P ((, cڡ *, size_t )); 249 `DB_GLOBAL ( j_wre func_wre ; 251 } } 257 $db_v_t_func_yld ( func_yld ) 258 (* func_yld `__P (()); 260 `DB_GLOBAL ( j_yld func_yld ; 262 } } @../os/os_mkdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_mkd ( dbv , me , mode ) 21 DB_ENV * dbv ; 22 cڡ * me ; 23 mode ; 25 t ; 27 i( dbv ! NULL && 28 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 29 `__db_msg ( dbv , "fes: mkd %s", me ); 32 #i `defed ( HAVE_VXWORKS ) 33 `RETRY_CHK (( `mkd ((*) me )), t ); 35 `RETRY_CHK (( `mkd ( me , `__db_omode ("rwx------"))), t ); 37 i( t != 0) 38 ( `__os_posix_r ( t )); 41 #i! `defed ( HAVE_VXWORKS ) 42 i( mode != 0) { 43 `RETRY_CHK (( `chmod ( me , mode )), t ); 44 i( t != 0) 45 t = `__os_posix_r (ret); 48 ( t ); 49 } } @../os/os_oflags.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde HAVE_SYSTEM_INCLUDE_FILES 14 #ifde HAVE_SHMGET 15 ~<sys/c.h > 16 ~<sys/shm.h > 23 #ide O_CREAT 24 #O_CREAT 0x0200 ) 26 #ide O_TRUNC 27 #O_TRUNC 0x0400 ) 29 #ide O_RDONLY 30 #O_RDONLY 0x0000 ) 32 #ide O_RDWR 33 #O_RDWR 0x0002 ) 35 #ide O_WRONLY 36 #O_WRONLY 0x0001 ) 39 #ide S_IREAD 40 #S_IREAD 0000400 ) 42 #ide S_IWRITE 43 #S_IWRITE 0000200 ) 52 u_t32_t 53 $__db_oags ( oags ) 54 oags ; 56 u_t32_t dbags ; 58 dbags = 0; 60 i( oags & O_CREAT ) 61 dbags | DB_CREATE ; 63 i( oags & O_TRUNC ) 64 dbags | DB_TRUNCATE ; 72 #idef O_ACCMODE 73 #O_ACCMODE ( O_RDONLY | O_RDWR | O_WRONLY ) ) 75 oags & O_ACCMODE ) { 76 O_RDWR : 77 O_WRONLY : 80 dbags | DB_RDONLY ; 83 ( dbags ); 84 } } 86 #ifde DB_WIN32 87 #idef S_IRUSR 88 #S_IRUSR S_IREAD ) 90 #idef S_IWUSR 91 #S_IWUSR S_IWRITE ) 93 #idef S_IXUSR 94 #S_IXUSR 0 ) 96 #idef S_IRGRP 97 #S_IRGRP 0 ) 99 #idef S_IWGRP 100 #S_IWGRP 0 ) 102 #idef S_IXGRP 103 #S_IXGRP 0 ) 105 #idef S_IROTH 106 #S_IROTH 0 ) 108 #idef S_IWOTH 109 #S_IWOTH 0 ) 111 #idef S_IXOTH 112 #S_IXOTH 0 ) 115 #idef S_IRUSR 116 #S_IRUSR 0000400 ) 118 #idef S_IWUSR 119 #S_IWUSR 0000200 ) 121 #idef S_IXUSR 122 #S_IXUSR 0000100 ) 124 #idef S_IRGRP 125 #S_IRGRP 0000040 ) 127 #idef S_IWGRP 128 #S_IWGRP 0000020 ) 130 #idef S_IXGRP 131 #S_IXGRP 0000010 ) 133 #idef S_IROTH 134 #S_IROTH 0000004 ) 136 #idef S_IWOTH 137 #S_IWOTH 0000002 ) 139 #idef S_IXOTH 140 #S_IXOTH 0000001 ) 151 $__db_omode ( rm ) 152 cڡ * rm ; 154 mode ; 155 mode = 0; 156 i( rm [0] == 'r') 157 mode | S_IRUSR ; 158 i( rm [1] == 'w') 159 mode | S_IWUSR ; 160 i( rm [2] == 'x') 161 mode | S_IXUSR ; 162 i( rm [3] == 'r') 163 mode | S_IRGRP ; 164 i( rm [4] == 'w') 165 mode | S_IWGRP ; 166 i( rm [5] == 'x') 167 mode | S_IXGRP ; 168 i( rm [6] == 'r') 169 mode | S_IROTH ; 170 i( rm [7] == 'w') 171 mode | S_IWOTH ; 172 i( rm [8] == 'x') 173 mode | S_IXOTH ; 174 ( mode ); 175 } } @../os/os_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_ݒ ( dbv , me , ge_size , ags , mode , fh ) 22 DB_ENV * dbv ; 23 cڡ * me ; 24 u_t32_t ge_size , ags ; 25 mode ; 26 DB_FH ** fh ; 28 DB_FH * fhp ; 29 oags , t ; 31 `COMPQUIET ( ge_size , 0); 33 * fh = NULL ; 34 oags = 0; 36 i( dbv ! NULL && 37 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 38 `__db_msg ( dbv , "fes: o%s", me ); 40 #OKFLAGS \ 41 ( DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\ 42 DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \ 43 DB_OSO_TEMP | DB_OSO_TRUNC ) ) 44 i(( t = `__db_fchk ( dbv , "__os_ݒ", ags , OKFLAGS )) != 0) 45 ( t ); 47 #i `defed ( O_BINARY ) 54 oags | O_BINARY ; 62 i( `LF_ISSET ( DB_OSO_CREATE )) 63 oags | O_CREAT ; 65 i( `LF_ISSET ( DB_OSO_EXCL )) 66 oags | O_EXCL ; 68 #ifde HAVE_O_DIRECT 69 i( `LF_ISSET ( DB_OSO_DIRECT )) 70 oags | O_DIRECT ; 72 #ifde O_DSYNC 73 i( `LF_ISSET ( DB_OSO_DSYNC )) 74 oags | O_DSYNC ; 77 i( `LF_ISSET ( DB_OSO_RDONLY )) 78 oags | O_RDONLY ; 80 oags | O_RDWR ; 82 i( `LF_ISSET ( DB_OSO_TRUNC )) 83 oags | O_TRUNC ; 89 i( dbv ! NULL && 90 dbv -> d_mode !0 && `LF_ISSET ( DB_OSO_CREATE ) && 91 ( t = `__db_mkth ( dbv , me )) != 0) 92 ( t ); 95 i(( t = `__os_ݒhd ( dbv , me , oags , mode , & fhp )) != 0) 96 ( t ); 98 #ifde HAVE_FCHMOD 107 i( `LF_ISSET ( DB_OSO_CREATE && LF_ISSET( DB_OSO_ABSMODE )) 108 () `fchmod ( fhp -> fd , mode ); 111 #ifde O_DSYNC 116 i( `LF_ISSET ( DB_OSO_DSYNC )) 117 `F_SET ( fhp , DB_FH_NOSYNC ); 120 #i `defed ( HAVE_DIRECTIO && defed( DIRECTIO_ON ) 126 i( `LF_ISSET ( DB_OSO_DIRECT )) 127 () `deio ( fhp -> fd , DIRECTIO_ON ); 140 i( `LF_ISSET ( DB_OSO_TEMP )) { 141 #i `defed ( HAVE_UNLINK_WITH_OPEN_FAILURE || defed( CONFIG_TEST ) 142 `F_SET ( fhp , DB_FH_UNLINK ); 144 () `__os_uƚk ( dbv , me ); 148 * fh = fhp ; 150 } } @../os/os_pid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde HAVE_MUTEX_SUPPORT 14 ~"dbc/mux_t.h " 25 $__os_id ( dbv , pidp , tidp ) 26 DB_ENV * dbv ; 27 pid_t * pidp ; 28 db_thadid_t * tidp ; 38 i( pidp ! NULL ) { 39 i( dbv = NULL ) { 40 #i `defed ( HAVE_VXWORKS ) 41 * pidp = `skIdSf (); 43 * pidp = `gpid (); 46 * pidp = dbv -> pid_che ; 49 i( tidp ! NULL ) { 50 #i `defed ( DB_WIN32 ) 51 * tidp = `GCutThadId (); 52 #i `defed ( HAVE_MUTEX_UI_THREADS ) 53 * tidp = `thr_lf (); 54 #i `defed ( HAVE_MUTEX_SOLARIS_LWP ) || \ 55 `defed ( HAVE_MUTEX_PTHREADS || defed( HAVE_PTHREAD_API ) 56 * tidp = `had_lf (); 61 * tidp = 0; 64 } } @../os/os_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_r_ch ( dbv , f , ) 21 DB_ENV * dbv ; 22 REGINFO * f ; 23 REGION * ; 25 t ; 32 #OS_VMPAGESIZE (8 * 1024) ) 33 #OS_VMROUNDOFF ( i ) { \ 34 i(( i ) < \ 35 ( UINT32_MAX - OS_VMPAGESIZE + 1 || ( i ) < OS_VMPAGESIZE) \ 36 ( i + OS_VMPAGESIZE - 1; \ 37 ( i -(i% OS_VMPAGESIZE ; \ 38 } ) 39 `OS_VMROUNDOFF ( -> size ); 41 #ifde DB_REGIONSIZE_MAX 43 i( -> size > DB_REGIONSIZE_MAX ) { 44 `__db_rx ( dbv , "region size %lu isooarge; maximum is %lu", 45 ( u_lg ) -> size , (u_lg) DB_REGIONSIZE_MAX ); 46 ( EINVAL ); 58 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 59 #i `defed ( HAVE_MUTEX_HPPA_MSEM_INIT ) 67 i( `F_ISSET ( dbv , DB_ENV_THREAD )) { 68 `__db_rx ( dbv , "%s", 70 `__db_rx ( dbv , "%s", 72 ( EINVAL ); 75 i(( t = `__os_mloc ( 76 dbv , ( REGENV ), & f -> addr )) != 0) 77 ( t ); 79 f -> max_loc = -> size ; 85 i( `DB_GLOBAL ( j_m ! NULL && ( t = DB_GLOBAL(j_map) 86 ( f -> me , -> size , 1, 0, &f-> addr )) != 0) 87 ( t ); 90 i(( t = `__os_r_syach ( dbv , f , )) != 0) 91 ( t ); 99 f -> addr_ig = inf-> addr ; 100 f -> addr = `ALIGNP_INC (f-> addr_ig , ( size_t )); 102 -> size_ig =p-> size ; 103 i( f -> addr !f-> addr_ig ) 104 -> size -( roff_t ) 105 (( u_t8_t *) f -> addr - (u_t8_*)f-> addr_ig ); 108 } } 117 $__os_r_dach ( dbv , f , deroy ) 118 DB_ENV * dbv ; 119 REGINFO * f ; 120 deroy ; 122 REGION * ; 124 = f ->rp; 127 i( f -> addr !f-> addr_ig ) { 128 f -> addr = inf-> addr_ig ; 129 -> size =p-> size_ig ; 133 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 134 `__os_ ( dbv , f -> addr ); 139 i( `DB_GLOBAL ( j_unm ! NULL ) 140 ( `DB_GLOBAL ( j_unm )( f -> addr , -> size )); 142 ( `__os_r_sysdach ( dbv , f , deroy )); 143 } } @../os/os_rename.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_me ( dbv , dme , wme , st ) 22 DB_ENV * dbv ; 23 cڡ * dme , * wme ; 24 u_t32_t st ; 26 t ; 28 i( dbv ! NULL && 29 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 30 `__db_msg ( dbv , "fes:am%t%s", dme , wme ); 32 i( `DB_GLOBAL ( j_me ! NULL ) 33 t = `DB_GLOBAL ( j_me )( dme , wme ); 35 `RETRY_CHK (( `me ( dme , wme )), t ); 41 i( t != 0) { 42 i(! st ) 43 `__db_sy ( 44 dbv , t , "m%%s", dme , wme ); 45 t = `__os_posix_r (ret); 47 ( t ); 48 } } @../os/os_root.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_io () 22 #ifde HAVE_GETUID 23 ( `guid () == 0); 27 } } @../os/os_rpath.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_h ( th ) 21 cڡ * th ; 23 cڡ * s , * ϡ ; 25 s = th ; 26 ϡ = NULL ; 27 i( PATH_SEPARATOR [1] != '\0') { 28 ; s [0] != '\0'; ++s) 29 i( `rchr ( PATH_SEPARATOR , s [0]! NULL ) 30 ϡ = s ; 32 ; s [0] != '\0'; ++s) 33 i( s [0] = PATH_SEPARATOR [0]) 34 ϡ = s ; 35 ((*) ϡ ); 36 } } @../os/os_rw.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_io ( dbv , , fhp , pgno , pgsize , tive , io_n , buf , ni ) 22 DB_ENV * dbv ; 23 ; 24 DB_FH * fhp ; 25 db_pgno_t pgno ; 26 u_t32_t pgsize , tive , io_n ; 27 u_t8_t * buf ; 28 size_t * ni ; 30 #i `defed ( HAVE_PREAD && defed( HAVE_PWRITE ) 31 off_t offt ; 32 ssize_t nio ; 34 t ; 46 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 47 `DB_ASSERT ( dbv , ( pgno =0 && pgsize =0|| tive == 0); 49 #i `defed ( HAVE_PREAD && defed( HAVE_PWRITE ) 50 i(( offt = tive ) == 0) 51 offt = ( off_t ) pgno * pgsize ; 52 ) { 53 DB_IO_READ : 54 i( `DB_GLOBAL ( j_ad ! NULL ) 55 ow ; 56 i( dbv ! NULL && 57 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS_ALL )) 58 `__db_msg ( dbv , 60 fhp -> me , ( u_lg ) io_n , (u_lg) offt ); 61 nio = `DB_GLOBAL ( j_d ! NULL ? 62 `DB_GLOBAL ( j_d )( fhp -> fd , buf , io_n , offt ) : 63 `d ( fhp -> fd , buf , io_n , offt ); 65 DB_IO_WRITE : 66 i( `DB_GLOBAL ( j_wre ! NULL ) 67 ow ; 68 #ifde HAVE_FILESYSTEM_NOTZERO 69 i( `__os_fs_nzo ()) 70 ow ; 72 i( dbv ! NULL && 73 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS_ALL )) 74 `__db_msg ( dbv , 76 fhp -> me , ( u_lg ) io_n , (u_lg) offt ); 77 nio = `DB_GLOBAL ( j_pwre ! NULL ? 78 `DB_GLOBAL ( j_pwre )( fhp -> fd , buf , io_n , offt ) : 79 `pwre ( fhp -> fd , buf , io_n , offt ); 82 ( EINVAL ); 84 i( nio =( ssize_t ) io_n ) { 85 * ni = io_n ; 88 ow : 90 `MUTEX_LOCK ( dbv , fhp -> mtx_fh ); 92 i(( t = `__os_ek ( dbv , fhp , pgno , pgsize , tive )) != 0) 93 r ; 94 ) { 95 DB_IO_READ : 96 t = `__os_ad ( dbv , fhp , buf , io_n , ni ); 98 DB_IO_WRITE : 99 t = `__os_wre ( dbv , fhp , buf , io_n , ni ); 102 t = EINVAL ; 106 r : `MUTEX_UNLOCK ( dbv , fhp -> mtx_fh ); 108 ( t ); 110 } } 119 $__os_ad ( dbv , fhp , addr , n , p ) 120 DB_ENV * dbv ; 121 DB_FH * fhp ; 122 * addr ; 123 size_t n ; 124 size_t * p ; 126 size_t offt ; 127 ssize_t ; 128 t ; 129 u_t8_t * ddr ; 131 t = 0; 133 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 135 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 136 `__db_msg ( dbv , 137 "fes:d %s: %lu bys", fhp -> me , ( u_lg ) n ); 139 i( `DB_GLOBAL ( j_ad ! NULL ) { 140 * p = n ; 141 i( `DB_GLOBAL ( j_ad )( fhp -> fd , addr , n !( ssize_t )len) { 142 t = `__os_g_sy (); 143 `__db_sy ( dbv , t , "read: %#lx, %lu", 144 `P_TO_ULONG ( addr ), ( u_lg ) n ); 145 t = `__os_posix_r (ret); 147 ( t ); 150 ddr = addr , offt = 0; 151 offt < n ; ddr + , off+( u_t32_t )nr) { 152 `RETRY_CHK ((( = `ad ( 153 fhp -> fd , ddr , n - offt )< 0 ? 1 : 0), t ); 154 i( =0 || t != 0) 157 * p = ( size_t )( ddr - ( u_t8_t *) addr ); 158 i( t != 0) { 159 `__db_sy ( dbv , t , "read: %#lx, %lu", 160 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 161 t = `__os_posix_r (ret); 163 ( t ); 164 } } 173 $__os_wre ( dbv , fhp , addr , n , nwp ) 174 DB_ENV * dbv ; 175 DB_FH * fhp ; 176 * addr ; 177 size_t n ; 178 size_t * nwp ; 180 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 182 #ifde HAVE_FILESYSTEM_NOTZERO 184 i( `__os_fs_nzo ()) { 185 t ; 186 i(( t = `__os_zofl ( dbv , fhp )) != 0) 187 ( t ); 190 ( `__os_physwre ( dbv , fhp , addr , n , nwp )); 191 } } 201 $__os_physwre ( dbv , fhp , addr , n , nwp ) 202 DB_ENV * dbv ; 203 DB_FH * fhp ; 204 * addr ; 205 size_t n ; 206 size_t * nwp ; 208 size_t offt ; 209 ssize_t nw ; 210 t ; 211 u_t8_t * ddr ; 213 t = 0; 215 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 216 `__db_msg ( dbv , 217 "fes: wr%s: %lu bys", fhp -> me , ( u_lg ) n ); 219 #i `defed ( HAVE_FILESYSTEM_NOTZERO && defed( DIAGNOSTIC ) 220 i( `__os_fs_nzo ()) { 221 sb ; 222 off_t cur_off ; 224 `DB_ASSERT ( dbv , `f ( fhp -> fd , & sb ) != -1 && 225 ( cur_off = `lek ( fhp -> fd , ( off_t )0, SEEK_CUR )) != -1 && 226 cur_off < sb . _size ); 241 `PANIC_CHECK ( dbv ); 243 i( `DB_GLOBAL ( j_wre ! NULL ) { 244 * nwp = n ; 245 i( `DB_GLOBAL ( j_wre )( fhp -> fd , addr , n !( ssize_t )len) { 246 t = `__os_g_sy (); 247 `__db_sy ( dbv , t , "write: %#lx, %lu", 248 `P_TO_ULONG ( addr ), ( u_lg ) n ); 249 t = `__os_posix_r (ret); 251 `DB_EVENT ( dbv , DB_EVENT_WRITE_FAILED , NULL ); 253 ( t ); 256 ddr = addr , offt = 0; 257 offt < n ; ddr + nw , off+( u_t32_t )nw) { 258 `RETRY_CHK ((( nw = `wre ( 259 fhp -> fd , ddr , n - offt )< 0 ? 1 : 0), t ); 260 i( t != 0) 263 * nwp = n ; 264 i( t != 0) { 265 `__db_sy ( dbv , t , "write: %#lx, %lu", 266 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 267 t = `__os_posix_r (ret); 269 `DB_EVENT ( dbv , DB_EVENT_WRITE_FAILED , NULL ); 271 ( t ); 272 } } @../os/os_seek.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_ek ( dbv , fhp , pgno , pgsize , tive ) 22 DB_ENV * dbv ; 23 DB_FH * fhp ; 24 db_pgno_t pgno ; 25 u_t32_t pgsize ; 26 u_t32_t tive ; 28 off_t offt ; 29 t ; 31 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 33 offt = ( off_t ) pgsize * pgno + tive ; 35 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 36 `__db_msg ( dbv , 37 "fes: sk %t%lu", fhp -> me , ( u_lg ) offt ); 39 i( `DB_GLOBAL ( j_ek ! NULL ) 40 t = `DB_GLOBAL ( j_ek )( fhp -> fd , offt , SEEK_SET ); 42 `RETRY_CHK (( `lek ( 43 fhp -> fd , offt , SEEK_SET =-1 ? 1 : 0), t ); 45 i( t == 0) { 46 fhp -> pgsize =gsize; 47 fhp -> pgno =gno; 48 fhp -> offt = tive ; 50 `__db_sy ( dbv , t , 51 "ek: %lu: (%lu * %lu+ %lu", ( u_lg ) offt , 52 ( u_lg ) pgno , (u_lg) pgsize , (u_lg) tive ); 53 t = `__os_posix_r (ret); 56 ( t ); 57 } } @../os/os_sleep.c 9 ~"db_cfig.h " 11 #__INCLUDE_SELECT_H 1 ) 12 ~"db_t.h " 21 $__os_p ( dbv , cs , ucs ) 22 DB_ENV * dbv ; 23 u_lg cs , ucs ; 25 timev t ; 26 t ; 29 ; ucs > US_PER_SEC ; usecs -= US_PER_SEC) 30 ++ cs ; 32 i( `DB_GLOBAL ( j_p ! NULL ) { 33 () `DB_GLOBAL ( j_p )( cs , ucs ); 46 #ifde HAVE_VXWORKS 47 `__os_yld ( dbv ); 54 t . tv_c = () cs ; 55 i( cs =0 && ucs == 0) 56 t . tv_uc = 1; 58 t . tv_uc = () ucs ; 67 i( ` (0, NULL , NULL, NULL, & t ) == -1) { 68 t = `__os_g_sy (); 69 i( `__os_posix_r ( t ! EINTR ) 70 `__db_sy ( dbv , t , "select"); 72 } } @../os/os_spin.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde HAVE_SYSTEM_INCLUDE_FILES 14 #i defed ( HAVE_PSTAT_GETDYNAMIC ) 15 ~<sys/p.h > 19 #i defed ( HAVE_PSTAT_GETDYNAMIC ) 20 __os_p_gdymic __P (()); 27 $__os_p_gdymic () 29 p_dymic psd ; 31 ( `p_gdymic (& psd , 32 ( psd ), ( size_t )1, 0=-1 ? 1 :sd. psd_oc_t ); 33 } } 36 #i defed ( HAVE_SYSCONF && defed( _SC_NPROCESSORS_ONLN ) 37 u_t32_t __os_syscf __P (()); 43 u_t32_t 44 $__os_syscf () 46 roc ; 48 roc = `syscf ( _SC_NPROCESSORS_ONLN ); 49 (( u_t32_t )( roc > 1 ?proc : 1)); 50 } } 59 u_t32_t 60 $__os_ ( dbv ) 61 DB_ENV * dbv ; 63 u_t32_t s_s ; 65 `COMPQUIET ( dbv , NULL ); 67 s_s = 1; 68 #i `defed ( HAVE_PSTAT_GETDYNAMIC ) 69 s_s = `__os_p_gdymic (); 71 #i `defed ( HAVE_SYSCONF && defed( _SC_NPROCESSORS_ONLN ) 72 s_s = `__os_syscf (); 79 i( s_s != 1) 80 s_s *= 50; 82 ( s_s ); 83 } } @../os/os_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_exis ( dbv , th , isdp ) 21 DB_ENV * dbv ; 22 cڡ * th ; 23 * isdp ; 25 sb ; 26 t ; 28 `COMPQUIET ( dbv , NULL ); 30 i( dbv ! NULL && 31 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 32 `__db_msg ( dbv , "fes: s%s", th ); 34 i( `DB_GLOBAL ( j_exis ! NULL ) 35 ( `DB_GLOBAL ( j_exis )( th , isdp )); 37 #ifde HAVE_VXWORKS 38 `RETRY_CHK (( ` ((*) th , & sb )), t ); 40 `RETRY_CHK (( ` ( th , & sb )), t ); 42 i( t != 0) 43 ( `__os_posix_r ( t )); 45 #i! `defed ( S_ISDIR || defed( STAT_MACROS_BROKEN ) 46 #unde S_ISDIR 47 #ifde _S_IFDIR 48 #S_ISDIR ( m ( _S_IFDIR & (m)) ) 50 #S_ISDIR ( m (((m& 0170000=0040000) ) 53 i( isdp ! NULL ) 54 * isdp = `S_ISDIR ( sb . _mode ); 57 } } 68 $__os_iofo ( dbv , th , fhp , mby , by , iosiz ) 69 DB_ENV * dbv ; 70 cڡ * th ; 71 DB_FH * fhp ; 72 u_t32_t * mby , * by , * iosiz ; 74 sb ; 75 t ; 77 i( `DB_GLOBAL ( j_iofo ! NULL ) 78 ( `DB_GLOBAL ( j_iofo )( th , 79 fhp -> fd , mby , by , iosiz )); 81 `DB_ASSERT ( dbv , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 83 `RETRY_CHK (( `f ( fhp -> fd , & sb )), t ); 84 i( t != 0) { 85 `__db_sy ( dbv , t , "fstat"); 86 ( `__os_posix_r ( t )); 90 i( mby ! NULL ) 91 * mby = ( u_t32_t )( sb . _size / MEGABYTE ); 92 i( by ! NULL ) 93 * by = ( u_t32_t )( sb . _size % MEGABYTE ); 102 #ifde HAVE_STRUCT_STAT_ST_BLKSIZE 103 i( iosiz ! NULL && (*iosiz = sb . _blksize ) == 0) 104 * iosiz = DB_DEF_IOSIZE ; 106 i( iosiz ! NULL ) 107 * iosiz = DB_DEF_IOSIZE ; 110 } } @../os/os_tmpdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde HAVE_SYSTEM_INCLUDE_FILES 14 #ifde mactosh 15 ~<TFeSc.h > 29 $__os_tmpd ( dbv , ags ) 30 DB_ENV * dbv ; 31 u_t32_t ags ; 33 isd , t ; 34 * td , td_buf [ DB_MAXPATHLEN ]; 37 i( `LF_ISSET ( DB_USE_ENVIRON ) || 38 ( `LF_ISSET ( DB_USE_ENVIRON_ROOT && `__os_io ())) { 40 td = td_buf ; 41 i(( t = `__os_gv ( 42 dbv , "TMPDIR", & td , ( td_buf ))) != 0) 43 ( t ); 44 i( td ! NULL &&dir[0] != '\0') 45 found ; 50 td = td_buf ; 51 i(( t = `__os_gv ( 52 dbv , "TEMP", & td , ( td_buf ))) != 0) 53 ( t ); 54 i( td ! NULL &&dir[0] != '\0') 55 found ; 57 td = td_buf ; 58 i(( t = `__os_gv ( 59 dbv , "TMP", & td , ( td_buf ))) != 0) 60 ( t ); 61 i( td ! NULL &&dir[0] != '\0') 62 found ; 65 td = td_buf ; 66 i(( t = `__os_gv ( 67 dbv , "TempFd", & td , ( td_buf ))) != 0) 68 ( t ); 70 i( td ! NULL &&dir[0] != '\0') 71 found : ( `__os_rdup ( dbv , td , &dbv-> db_tmp_d )); 74 #ifde mactosh 76 { FSSc ec ; 78 i(! `Scl2FSSc ( kTempܬyFdTy , 79 kOnSyemDisk , 0, & ec )) 80 ( `__os_rdup ( dbv , 81 `FSp2FuPh (& ec ), & dbv -> db_tmp_d )); 84 #ifde DB_WIN32 87 _TCHAR h [ DB_MAXPATHLEN + 1]; 88 * th , * eos ; 90 i( `GTempPh ( DB_MAXPATHLEN , h ) > 2) { 91 `FROM_TSTRING ( dbv , h , th , t ); 92 i( t != 0) 93 ( t ); 95 eos = th + ` (path) - 1; 96 i(* eos == '\\' || *eos == '/') 97 * eos = '\0'; 98 i( `__os_exis ( dbv , th , & isd ) == 0 && isdir) { 99 t = `__os_rdup ( dbv , 100 th , & dbv -> db_tmp_d ); 101 `FREE_STRING ( dbv , th ); 102 ( t ); 104 `FREE_STRING ( dbv , th ); 115 #DB_TEMP_DIRECTORY ( n ) { \ 116 * __p = n ; \ 117 i( `__os_exis ( dbv , __p , & isd ) == 0 && isdir != 0) \ 118 ( `__os_rdup ( dbv , __p , &dbv-> db_tmp_d )); \ 119 } ) 120 #ifde DB_WIN32 121 `DB_TEMP_DIRECTORY ("/temp"); 122 `DB_TEMP_DIRECTORY ("C:/temp"); 123 `DB_TEMP_DIRECTORY ("C:/tmp"); 125 `DB_TEMP_DIRECTORY ("/var/tmp"); 126 `DB_TEMP_DIRECTORY ("/usr/tmp"); 127 `DB_TEMP_DIRECTORY ("/tmp"); 134 ( `__os_rdup ( dbv , "", &dbv-> db_tmp_d )); 135 } } @../os/os_truncate.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_un ( dbv , fhp , pgno , pgsize ) 21 DB_ENV * dbv ; 22 DB_FH * fhp ; 23 db_pgno_t pgno ; 24 u_t32_t pgsize ; 26 off_t offt ; 27 t ; 33 offt = ( off_t ) pgsize * pgno ; 35 i( dbv ! NULL && 36 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 37 `__db_msg ( dbv , 38 "fes:run %t%lu", fhp -> me , ( u_lg ) offt ); 40 i( `DB_GLOBAL ( j_run ! NULL ) 41 t = `DB_GLOBAL ( j_run )( fhp -> fd , offt ); 43 #ifde HAVE_FTRUNCATE 44 `RETRY_CHK (( `run ( fhp -> fd , offt )), t ); 46 t = DB_OPNOTSUP ; 50 i( t != 0) { 51 `__db_sy ( dbv , t , "run: %lu", ( u_lg ) offt ); 52 t = `__os_posix_r (ret); 55 ( t ); 56 } } @../os/os_uid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_unique_id ( dbv , idp ) 21 DB_ENV * dbv ; 22 u_t32_t * idp ; 24 db_timeec v ; 25 pid_t pid ; 26 u_t32_t id ; 28 * idp = 0; 34 `__os_id ( dbv , & pid , NULL ); 35 `__os_gtime ( dbv , & v ); 37 id = ( u_t32_t ) pid ^ 38 ( u_t32_t ) v . tv_c ^ (u_t32_t)v. tv_nc ^ `P_TO_UINT32 (& pid ); 45 i( `DB_GLOBAL ( uid_ ) == 0) { 46 `DB_GLOBAL ( uid_ ) = 1; 47 `d (( u_t ) id ); 49 id ^( u_t ) `nd (); 51 * idp = id ; 52 } } @../os/os_unlink.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_gi_uƚk ( dbv , th ) 21 DB_ENV * dbv ; 22 cڡ * th ; 24 #ifde HAVE_QNX 25 t ; 26 * wme ; 28 i( dbv ! NULL && 29 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 30 `__db_msg ( dbv , "fes: uƚk %s", th ); 32 #ifde HAVE_QNX 33 i(( t = `__os_qnx_shmme ( dbv , th , & wme )) != 0) 34 r ; 36 i(( t = `shm_uƚk ( wme )) != 0) { 37 t = `__os_g_sy (); 38 i( `__os_posix_r ( t ! ENOENT ) 39 `__db_sy ( dbv , t , "shm_uƚk: %s", wme ); 41 r : 42 i( wme ! NULL ) 43 `__os_ ( dbv , wme ); 44 ( t ); 46 i( `F_ISSET ( dbv , DB_ENV_OVERWRITE )) 47 () `__db_fe_mui_wre ( dbv , th ); 49 ( `__os_uƚk ( dbv , th )); 51 } } 60 $__os_uƚk ( dbv , th ) 61 DB_ENV * dbv ; 62 cڡ * th ; 64 t , t_t ; 66 i( dbv ! NULL && 67 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 68 `__db_msg ( dbv , "fes: uƚk %s", th ); 70 i( `DB_GLOBAL ( j_uƚk ! NULL ) 71 t = `DB_GLOBAL ( j_uƚk )( th ); 73 #ifde HAVE_VXWORKS 74 `RETRY_CHK (( `uƚk ((*) th )), t ); 76 `RETRY_CHK (( `uƚk ( th )), t ); 93 i( t != 0) { 94 t_t = `__os_posix_r ( t ); 95 i( t_t ! ENOENT ) 96 `__db_sy ( dbv , t , "uƚk: %s", th ); 97 t = t_t ; 100 ( t ); 101 } } @../os/os_yield.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde HAVE_SYSTEM_INCLUDE_FILES 14 #i defed ( HAVE_SCHED_YIELD ) 15 ~<sched.h > 26 $__os_yld ( dbv ) 27 DB_ENV * dbv ; 29 i( `DB_GLOBAL ( j_yld ! NULL ) { 30 () `DB_GLOBAL ( j_yld )(); 34 #i `defed ( HAVE_MUTEX_UI_THREADS ) 35 `thr_yld (); 36 #i `defed ( HAVE_PTHREAD_YIELD ) && \ 37 ( `defed ( HAVE_MUTEX_PTHREADS || defed( HAVE_PTHREAD_API )) 38 `had_yld (); 39 #i `defed ( HAVE_SCHED_YIELD ) 40 () `sched_yld (); 41 #i `defed ( HAVE_YIELD ) 42 `yld (); 44 `__os_p ( dbv , 0, 1); 46 `COMPQUIET ( dbv , NULL ); 47 } } @../os_brew/ctime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __os_bw__numb __P ((*, )); 20 $__db_ime ( tod , time_buf ) 21 cڡ time_t * tod ; 22 * time_buf ; 24 JulnTy jt ; 25 time_t ; 26 * n ; 28 `ry ( time_buf , "Thu Jan 01 00:00:00 1970"); 29 time_buf [ CTIME_BUFLEN - 1] = '\0'; 35 = * tod - BREW_EPOCH_OFFSET + `LOCALTIMEOFFSET ( NULL ); 36 `GETJULIANDATE ( , & jt ); 41 n = &"MTueWedThuFriSSun"[ jt . wWkDay *3]; 42 time_buf [0] = * n ++; 43 time_buf [1] = * n ++; 44 time_buf [2] = * n ; 45 n = &"JFebMAMayJunJulAugSONovDec"[( jt . wMth - 1) * 3]; 46 time_buf [4] = * n ++; 47 time_buf [5] = * n ++; 48 time_buf [6] = * n ; 50 `__os_bw__numb ( time_buf + 8, jt . wDay ); 52 `__os_bw__numb ( time_buf + 11, jt . wHour + 100); 53 `__os_bw__numb ( time_buf + 14, jt . wMu + 100); 54 `__os_bw__numb ( time_buf + 17, jt . wSecd + 100); 56 i( jt . wYr < 100) { 57 time_buf [20] = ' '; 58 time_buf [21] = ' '; 59 `__os_bw__numb ( time_buf + 22, jt . wYr ); 61 `__os_bw__numb ( time_buf + 20, jt . wYr / 100); 62 `__os_bw__numb ( time_buf + 22, jt . wYr % 100 + 100); 65 ( time_buf ); 66 } } 73 $__os_bw__numb ( , n ) 74 * ; 75 n ; 77 [0] = ' '; 78 i( n >= 10) 79 [0] = ( n / 10) % 10 + '0'; 80 [1] = n % 10 + '0'; 81 } } @../os_brew/fclose.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $fo ( ) 22 FILE * ; 29 () `IFILE_R ( ); 32 } } @../os_brew/fgetc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $fgc ( ) 22 FILE * ; 24 b [1]; 26 i( `IFILE_Rd ( , b , 1)) 27 (() b [0]); 29 `__os_t_o ( EIO ); 30 ( EOF ); 31 } } @../os_brew/fgets.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $fgs ( s , n , ) 22 * s ; 23 n ; 24 FILE * ; 26 c ; 27 * cs ; 29 c = 0; 30 cs = s ; 32 -- n > 0 && ( c = `fgc ( )! EOF ) { 33 * cs ++ = c ; 34 i( c == '\n') 37 i( c = EOF && cs = s ) 38 ( NULL ); 40 * cs ++ = '\0'; 41 ( s ); 42 } } @../os_brew/fopen.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 FILE * 21 $fݒ ( fame , mode ) 22 cڡ * fame , * mode ; 24 IFe * pIFe ; 25 IFeMgr * pIFeMgr ; 26 OnFeMode ags ; 27 f_exis , t , upde_ag ; 36 `DB_ASSERT ( NULL , fame !NULL && mode != NULL); 38 `FILE_MANAGER_CREATE ( NULL , pIFeMgr , t ); 39 i( t != 0) { 40 `__os_t_o ( t ); 41 ( NULL ); 60 ags = 0; 61 upde_ag = `rchr ( mode , '+') ? 1 : 0; 62 * mode ) { 64 ags = _OFM_APPEND | _OFM_CREATE ; 67 ags = upde_ag ? _OFM_READWRITE : _OFM_READ ; 70 ags = _OFM_READWRITE | _OFM_CREATE ; 74 f_exis = `IFILEMGR_Te ( pIFeMgr , fame = SUCCESS ? 1 : 0; 75 i( f_exis ) 76 `LF_CLR ( _OFM_CREATE ); 78 `LF_CLR (~ _OFM_CREATE ); 80 i(( pIFe = `IFILEMGR_OnFe ( 81 pIFeMgr , fame , ( OnFeMode ) ags )= NULL ) { 82 `FILE_MANAGER_ERR ( NULL , 83 pIFeMgr , fame , "IFILEMGR_OnFe", t ); 84 `__os_t_o ( t ); 87 `IFILEMGR_R ( pIFeMgr ); 88 ( pIFe ); 89 } } @../os_brew/fwrite.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 size_t 21 $fwre ( buf , size , cou , ) 22 cڡ * buf ; 23 size_t size , cou ; 24 FILE * ; 26 i( = dr ) { 27 `DBGPRINTF ("%.*s", () cou , buf ); 28 ( size * cou ); 30 (( size_t ) `IFILE_Wre ( , buf , size * cou ) / size); 31 } } @../os_brew/getcwd.c 9 ~"db_cfig.h " 11 ~"db_t.h " 17 $gcwd ( buf , size ) 18 * buf ; 19 size_t size ; 21 IFeMgr * pIFeMgr ; 22 t ; 23 #ide HAVE_BREW_SDK2 24 ou ; 27 `FILE_MANAGER_CREATE ( NULL , pIFeMgr , t ); 28 i( t != 0) { 29 `__os_t_o ( t ); 30 ( NULL ); 33 buf [0] = '\0'; 35 #ifde AEE_SIMULATOR 37 i( `IFILEMGR_Te ( pIFeMgr , "fs:/"= SUCCESS ) 39 () `y ( buf , "fs:/", size - 1); 41 `FILE_MANAGER_ERR ( 42 NULL , pIFeMgr , NULL, "IFILEMGR_ResvePh", t ); 44 #ide HAVE_BREW_SDK2 45 ou = size ; 46 i( `IFILEMGR_ResvePh ( pIFeMgr , ".", buf , & ou ! SUCCESS ) 47 `FILE_MANAGER_ERR ( 48 NULL , pIFeMgr , NULL, "IFILEMGR_ResvePh", t ); 52 `IFILEMGR_R ( pIFeMgr ); 54 i( t == 0) 55 ( buf ); 57 `__os_t_o ( t ); 59 `COMPQUIET ( size , 0); 60 ( NULL ); 61 } } @../os_brew/globals.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $bw_bdb_beg () 20 * p ; 26 p = (( BDBA *) `GETAPPINSTANCE ())-> db_glob_vues ; 27 i( p = NULL ) { 28 i(( p = `mloc (( DB_GLOBALS ))= NULL ) 29 ( ENOMEM ); 30 `memt ( p , 0, ( DB_GLOBALS )); 32 (( BDBA *) `GETAPPINSTANCE ())-> db_glob_vues = p ; 34 `TAILQ_INIT (& `DB_GLOBAL ( db_vq )); 35 `DB_GLOBAL ( db_le ) = 39 } } 46 $bw_bdb_d () 48 * p ; 50 p = (( BDBA *) `GETAPPINSTANCE ())-> db_glob_vues ; 52 ` ( p ); 53 } } @../os_brew/localtime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 tm * 21 $loime ( tod ) 22 cڡ time_t * tod ; 24 JulnTy jt ; 25 boޗn is_ds ; 26 time_t ; 27 emt ; 33 is_ds = 0; 34 = * tod - BREW_EPOCH_OFFSET + `LOCALTIMEOFFSET (& is_ds ); 36 `GETJULIANDATE ( , & jt ); 38 `DB_GLOBAL ( m ). tm_c = jt . wSecd ; 39 `DB_GLOBAL ( m ). tm_m = jt . wMu ; 40 `DB_GLOBAL ( m ). tm_hour = jt . wHour ; 41 `DB_GLOBAL ( m ). tm_mday = jt . wDay ; 42 `DB_GLOBAL ( m ). tm_m = jt . wMth - 1; 44 `DB_GLOBAL ( m ). tm_yr = jt . wYr - 1900; 46 `DB_GLOBAL ( m ). tm_wday = ( jt . wWkDay + 1) % 7; 48 `DB_GLOBAL ( m ). tm_m ) { 50 0: emt = 0; ; 51 1: emt = 31; ; 52 2: emt = 59; ; 53 3: emt = 90; ; 54 4: emt = 120; ; 55 5: emt = 151; ; 56 6: emt = 181; ; 57 7: emt = 212; ; 58 8: emt = 243; ; 59 9: emt = 273; ; 60 10: emt = 304; ; 61 11: emt = 334; ; 63 `DB_GLOBAL ( m ). tm_yday = emt + DB_GLOBALtm). tm_mday - 1; 65 i( `DB_GLOBAL ( m ). tm_m > 1 && 66 jt . wYr % 4 == 0 && (jt.wYear % 100 != 0 || jt.wYear % 400 == 0)) 67 `DB_GLOBAL ( m ). tm_yday += 1; 69 `DB_GLOBAL ( m ). tm_isd = is_ds ; 77 (& `DB_GLOBAL ( m )); 78 } } @../os_brew/os_abort.c 9 ~"db_cfig.h " 11 ~"db_t.h " 17 $__os_abt () 19 AEEAt * p ; 21 p = ( AEEAt *) `GETAPPINSTANCE (); 22 `ISHELL_CloAt ( p -> m_pIShl , FALSE ); 25 } } @../os_brew/os_abs.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_abh ( th ) 19 cڡ * th ; 21 ( th [0] == 'f' &&ath[1] == 's' &&ath[2] == ':'); 22 } } @../os_brew/os_config.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_fs_nzo () 29 } } 36 $__os_sut_de_io () 39 } } 46 $__os_sut_db_gi () 49 } } 56 $__os_sut_iti () 59 } } @../os_brew/os_dir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_dli ( dbv , d , me , ) 19 DB_ENV * dbv ; 20 cڡ * d ; 21 *** me ; 22 * ; 24 FeInfo fi ; 25 IFeMgr * pIFeMgr ; 26 ysz , t , t ; 27 * fame , * p , ** mes ; 29 `FILE_MANAGER_CREATE ( dbv , pIFeMgr , t ); 30 i( t != 0) 31 ( t ); 33 i(( t = `IFILEMGR_EnumIn ( pIFeMgr , d , FALSE )! SUCCESS ) { 34 `IFILEMGR_R ( pIFeMgr ); 35 `__db_sy ( dbv , t , "IFILEMGR_EnumInit"); 36 ( `__os_posix_r ( t )); 39 mes = NULL ; 40 ysz = t = 0; 41 `IFILEMGR_EnumNext ( pIFeMgr , & fi ! FALSE ) { 42 t ++; 44 i( t > ysz ) { 45 ysz += 100; 46 i(( t = `__os_loc ( dbv , 47 ( u_t ) ysz * (*), & mes )) != 0) 48 nomem ; 50 fame = fi . szName ; 51 ( p = `rchr ( fame , '\\')! NULL ; filename = + 1) 53 ; ( p = `rchr ( fame , '/')! NULL ; filename = + 1) 55 i(( t = `__os_rdup ( dbv , fame , & mes [ t - 1])) != 0) 56 nomem ; 58 `IFILEMGR_R ( pIFeMgr ); 60 * me = mes ; 61 * = t ; 62 ( t ); 64 nomem : i( mes ! NULL ) 65 `__os_d ( dbv , mes , t ); 66 `IFILEMGR_R ( pIFeMgr ); 68 ( t ); 69 } } 76 $__os_d ( dbv , mes , t ) 77 DB_ENV * dbv ; 78 ** mes ; 79 t ; 81 t > 0) 82 `__os_ ( dbv , mes [-- t ]); 83 `__os_ ( dbv , mes ); 84 } } @../os_brew/os_errno.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_g_o_t_zo () 21 ( o ); 22 } } 36 $__os_g_o () 39 i( o == 0) 40 `__os_t_o ( EAGAIN ); 41 ( o ); 42 } } 49 $__os_g_sy () 52 i( o == 0) 53 `__os_t_o ( EAGAIN ); 54 ( o ); 55 } } 62 $__os_t_o ( evue ) 63 evue ; 73 o = 74 evue >0 ?vu: (evu= DB_RUNRECOVERY ? EFAULT : EINVAL ); 75 } } 82 $__os_ ( r , buf , n ) 83 r ; 84 * buf ; 85 size_t n ; 87 * p ; 89 r ) { 90 EBADFILENAME : 91 p = "EBADFILENAME"; 93 EBADSEEKPOS : 94 p = "EBADSEEKPOS"; 96 #ide HAVE_BREW_SDK2 97 EDIRNOEXISTS : 98 p = "EDIRNOEXISTS"; 101 EDIRNOTEMPTY : 102 p = "EDIRNOTEMPTY"; 104 EFILEEOF : 105 p = "EFILEEOF"; 107 EFILEEXISTS : 108 p = "EFILEEXISTS"; 110 EFILENOEXISTS : 111 p = "EFILENOEXISTS"; 113 EFILEOPEN : 114 p = "EFILEOPEN"; 116 EFSFULL : 117 p = "EFSFULL"; 119 #ide HAVE_BREW_SDK2 120 EINVALIDOPERATION : 121 p = "EINVALIDOPERATION"; 123 ENOMEDIA : 124 p = "ENOMEDIA"; 127 ENOMEMORY : 128 p = "ENOMEMORY"; 130 EOUTOFNODES : 131 p = "EOUTOFNODES"; 134 p = `__db_unknown_r ( r ); 138 () `y ( buf , p , n - 1); 139 buf [ n - 1] = '\0'; 141 ( buf ); 142 } } 149 $__os_posix_r ( r ) 150 r ; 152 t ; 154 r ) { 155 EBADFILENAME : 156 #ide HAVE_BREW_SDK2 157 EDIRNOEXISTS : 159 EDIRNOTEMPTY : 160 EFILENOEXISTS : 161 t = ENOENT ; 164 EOUTOFNODES : 165 t = EMFILE ; 168 ENOMEMORY : 169 t = ENOMEM ; 172 EFSFULL : 173 t = ENOSPC ; 176 #ide HAVE_BREW_SDK2 177 EINVALIDOPERATION : 178 t = DB_OPNOTSUP ; 182 EFILEEXISTS : 183 t = EEXIST ; 186 EBADSEEKPOS : 187 EFILEEOF : 188 t = EIO ; 192 t = EFAULT ; 195 ( t ); 196 } } @../os_brew/os_handle.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒhd ( dbv , me , ags , mode , fh ) 19 DB_ENV * dbv ; 20 cڡ * me ; 21 ags , mode ; 22 DB_FH ** fh ; 24 DB_FH * fhp ; 25 IFe * pIFe ; 26 IFeMgr * pIFeMgr ; 27 f_exis , t ; 29 `COMPQUIET ( mode , 0); 31 `FILE_MANAGER_CREATE ( dbv , pIFeMgr , t ); 32 i( t != 0) 33 ( t ); 41 i(( t = `__os_oc ( dbv , 1, ( DB_FH ), & fhp )) != 0) 42 ( t ); 43 i(( t = `__os_rdup ( dbv , me , & fhp ->name)) != 0) 44 r ; 51 f_exis = `IFILEMGR_Te ( pIFeMgr , me = SUCCESS ? 1 : 0; 52 i( f_exis ) 53 `LF_CLR ( _OFM_CREATE ); 55 `LF_CLR (~ _OFM_CREATE ); 57 i(( pIFe = 58 `IFILEMGR_OnFe ( pIFeMgr , me , ( OnFeMode ) ags )= NULL ) { 59 `FILE_MANAGER_ERR ( dbv , 60 pIFeMgr , me , "IFILEMGR_OnFe", t ); 61 r ; 64 fhp -> i = pIFe ; 65 `IFILEMGR_R ( pIFeMgr ); 67 `F_SET ( fhp , DB_FH_OPENED ); 68 * fh = fhp ; 71 r : i( pIFe ! NULL ) 72 `IFILE_R ( pIFe ); 73 `IFILEMGR_R ( pIFeMgr ); 75 i( fhp ! NULL ) 76 () `__os_ohd ( dbv , fhp ); 77 ( t ); 78 } } 85 $__os_ohd ( dbv , fhp ) 86 DB_ENV * dbv ; 87 DB_FH * fhp ; 90 i( `F_ISSET ( fhp , DB_FH_OPENED )) 91 () `IFILE_R ( fhp -> i ); 94 i( `F_ISSET ( fhp , DB_FH_UNLINK )) 95 () `__os_uƚk ( dbv , fhp -> me ); 97 i( fhp -> me ! NULL ) 98 `__os_ ( dbv , fhp -> me ); 99 `__os_ ( dbv , fhp ); 102 } } @../os_brew/os_mkdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_mkd ( dbv , me , mode ) 19 DB_ENV * dbv ; 20 cڡ * me ; 21 mode ; 23 IFeMgr * ifmp ; 24 t ; 26 `COMPQUIET ( mode , 0); 28 `FILE_MANAGER_CREATE ( dbv , ifmp , t ); 29 i( t != 0) 30 ( t ); 32 i( `IFILEMGR_MkD ( ifmp , me = SUCCESS ) 33 t = 0; 35 `FILE_MANAGER_ERR ( dbv , ifmp , me , "IFILEMGR_MkD", t ); 37 `IFILEMGR_R ( ifmp ); 39 ( t ); 40 } } @../os_brew/os_oflags.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__db_omode ( rm ) 19 cڡ * rm ; 21 `COMPQUIET ( rm , NULL ); 27 } } @../os_brew/os_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒ ( dbv , me , ge_size , ags , mode , fh ) 19 DB_ENV * dbv ; 20 cڡ * me ; 21 u_t32_t ge_size , ags ; 22 mode ; 23 DB_FH ** fh ; 25 OnFeMode oags ; 26 t ; 28 `COMPQUIET ( ge_size , 0); 30 #OKFLAGS \ 31 ( DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\ 32 DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \ 33 DB_OSO_TEMP | DB_OSO_TRUNC ) ) 34 i(( t = `__db_fchk ( dbv , "__os_ݒ", ags , OKFLAGS )) != 0) 35 ( t ); 37 oags = 0; 38 i( `LF_ISSET ( DB_OSO_CREATE )) 39 oags | _OFM_CREATE ; 41 i( `LF_ISSET ( DB_OSO_RDONLY )) 42 oags | _OFM_READ ; 44 oags | _OFM_READWRITE ; 46 ( `__os_ݒhd ( dbv , me , oags , mode , fh )); 47 } } @../os_brew/os_pid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_id ( dbv , pidp , tidp ) 19 DB_ENV * dbv ; 20 pid_t * pidp ; 21 db_thadid_t * tidp ; 23 AEEAt * p ; 25 `COMPQUIET ( dbv , NULL ); 27 i( pidp ! NULL ) { 28 p = ( AEEAt *) `GETAPPINSTANCE (); 29 * pidp = ( pid_t ) `ISHELL_AiveAt ( p -> m_pIShl ); 31 i( tidp ! NULL ) 32 * tidp = 0; 33 } } @../os_brew/os_rename.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_me ( dbv , d , w , st ) 19 DB_ENV * dbv ; 20 cڡ * d , * w ; 21 u_t32_t st ; 23 IFeMgr * pIFeMgr ; 24 t ; 26 `FILE_MANAGER_CREATE ( dbv , pIFeMgr , t ); 27 i( t != 0) 28 ( t ); 30 i( `IFILEMGR_Rame ( pIFeMgr , d , w = SUCCESS ) 31 t = 0; 33 i(! st ) 34 `FILE_MANAGER_ERR ( dbv , 35 pIFeMgr , d , "IFILEMGR_Rame", t ); 37 t = `__os_posix_r ( `IFILEMGR_GLaE ( pIFeMgr )); 39 `IFILEMGR_R ( pIFeMgr ); 40 ( t ); 41 } } @../os_brew/os_rw.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_io ( dbv , , fhp , pgno , pgsize , tive , io_n , buf , ni ) 19 DB_ENV * dbv ; 20 ; 21 DB_FH * fhp ; 22 db_pgno_t pgno ; 23 u_t32_t pgsize , tive , io_n ; 24 u_t8_t * buf ; 25 size_t * ni ; 27 t ; 29 `MUTEX_LOCK ( dbv , fhp -> mtx_fh ); 31 i(( t = `__os_ek ( dbv , fhp , pgno , pgsize , tive )) != 0) 32 r ; 33 ) { 34 DB_IO_READ : 35 t = `__os_ad ( dbv , fhp , buf , io_n , ni ); 37 DB_IO_WRITE : 38 t = `__os_wre ( dbv , fhp , buf , io_n , ni ); 41 t = EINVAL ; 45 r : `MUTEX_UNLOCK ( dbv , fhp -> mtx_fh ); 47 ( t ); 49 } } 56 $__os_ad ( dbv , fhp , addr , n , p ) 57 DB_ENV * dbv ; 58 DB_FH * fhp ; 59 * addr ; 60 size_t n ; 61 size_t * p ; 63 FeInfo pInfo ; 64 t ; 66 t = 0; 67 i((* p = ( size_t ) `IFILE_Rd ( fhp -> i , addr , n )) !=en) { 68 `IFILE_GInfo ( fhp -> i , & pInfo ); 69 i( pInfo . dwSize != 0) { 70 t = `__os_g_sy (); 71 `__db_sy ( dbv , t , "IFILE_Read: %#lx, %lu", 72 `P_TO_ULONG ( addr ), ( u_lg ) n ); 73 t = `__os_posix_r (ret); 76 ( t ); 77 } } 84 $__os_wre ( dbv , fhp , addr , n , nwp ) 85 DB_ENV * dbv ; 86 DB_FH * fhp ; 87 * addr ; 88 size_t n ; 89 size_t * nwp ; 92 #ifde HAVE_FILESYSTEM_NOTZERO 94 i( `__os_fs_nzo ()) { 95 t ; 96 i(( t = `__os_zofl ( dbv , fhp )) != 0) 97 ( t ); 100 ( `__os_physwre ( dbv , fhp , addr , n , nwp )); 101 } } 108 $__os_physwre ( dbv , fhp , addr , n , nwp ) 109 DB_ENV * dbv ; 110 DB_FH * fhp ; 111 * addr ; 112 size_t n ; 113 size_t * nwp ; 115 t ; 128 `PANIC_CHECK ( dbv ); 130 t = 0; 131 i((* nwp = ( size_t ) `IFILE_Wre ( fhp -> i , addr , n )) !=en) { 132 t = `__os_g_sy (); 133 `__db_sy ( dbv , t , "IFILE_Write: %#lx, %lu", 134 `P_TO_ULONG ( addr ), ( u_lg ) n ); 135 t = `__os_posix_r (ret); 137 ( t ); 138 } } @../os_brew/os_seek.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ek ( dbv , fhp , pgno , pgsize , tive ) 19 DB_ENV * dbv ; 20 DB_FH * fhp ; 21 db_pgno_t pgno ; 22 u_t32_t pgsize ; 23 u_t32_t tive ; 25 off_t offt ; 26 t ; 28 offt = ( off_t ) pgsize * pgno + tive ; 34 t = `IFILE_Sk ( fhp -> i , _SEEK_START , offt ); 36 i( t = SUCCESS ) { 37 fhp -> pgsize =gsize; 38 fhp -> pgno =gno; 39 fhp -> offt = tive ; 40 t = 0; 42 `__db_sy ( dbv , t , 43 "ek: %lu: (%lu * %lu+ %lu", ( u_lg ) offt , 44 ( u_lg ) pgno , (u_lg) pgsize , (u_lg) tive ); 45 t = `__os_posix_r (ret); 48 ( t ); 49 } } @../os_brew/os_sleep.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_p ( dbv , cs , ucs ) 19 DB_ENV * dbv ; 20 u_lg cs , ucs ; 22 `COMPQUIET ( dbv , NULL ); 24 #ifde HAVE_BREW_SDK2 25 `COMPQUIET ( cs , 0); 26 `COMPQUIET ( ucs , 0); 28 `MSLEEP ( cs * MS_PER_SEC + ucs / US_PER_MS ); 30 } } @../os_brew/os_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_exis ( dbv , th , isdp ) 19 DB_ENV * dbv ; 20 cڡ * th ; 21 * isdp ; 23 FeInfo fInfo ; 24 IFeMgr * pIFeMgr ; 25 t ; 27 `FILE_MANAGER_CREATE ( dbv , pIFeMgr , t ); 28 i( t != 0) 29 ( t ); 31 t = 0; 32 i( `IFILEMGR_Te ( pIFeMgr , th = EFAILED ) { 33 `FILE_MANAGER_ERR ( 34 dbv , pIFeMgr , th , "IFILEMGR_Te", t ); 35 r ; 38 i( isdp ! NULL ) { 39 i( `IFILEMGR_GInfo ( pIFeMgr , th , & fInfo = EFAILED ) { 40 `FILE_MANAGER_ERR ( 41 dbv , pIFeMgr , th , "IFILEMGR_GInfo", t ); 42 r ; 44 * isdp = fInfo . ib = _FA_DIR ? 1 : 0; 47 r : `IFILEMGR_R ( pIFeMgr ); 49 ( t ); 50 } } 58 $__os_iofo ( dbv , th , fhp , mby , by , iosiz ) 59 DB_ENV * dbv ; 60 cڡ * th ; 61 DB_FH * fhp ; 62 u_t32_t * mby , * by , * iosiz ; 64 IFeMgr * pIFeMgr ; 65 FeInfo fInfo ; 66 t ; 68 `FILE_MANAGER_CREATE ( dbv , pIFeMgr , t ); 69 i( t != 0) 70 ( t ); 72 i( `IFILE_GInfo ( fhp -> i , & fInfo ! SUCCESS ) { 73 `FILE_MANAGER_ERR ( dbv , pIFeMgr , th , "IFILE_GInfo", t ); 74 r ; 78 i( mby ! NULL ) 79 * mby = ( u_t32_t )( fInfo . dwSize / MEGABYTE ); 80 i( by ! NULL ) 81 * by = ( u_t32_t )( fInfo . dwSize % MEGABYTE ); 84 i( iosiz ! NULL ) 85 * iosiz = DB_DEF_IOSIZE ; 87 r : `IFILEMGR_R ( pIFeMgr ); 88 ( t ); 89 } } @../os_brew/os_truncate.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_un ( dbv , fhp , pgno , pgsize ) 19 DB_ENV * dbv ; 20 DB_FH * fhp ; 21 db_pgno_t pgno ; 22 u_t32_t pgsize ; 24 IFeMgr * pIFeMgr ; 25 off_t offt ; 26 t ; 28 `FILE_MANAGER_CREATE ( dbv , pIFeMgr , t ); 29 i( t != 0) 30 ( t ); 36 offt = ( off_t ) pgsize * pgno ; 38 i( `IFILE_Trun ( fhp -> i , offt = SUCCESS ) 39 t = 0; 41 `FILE_MANAGER_ERR ( dbv , pIFeMgr , NULL , "IFILE_Trun", t ); 43 `IFILEMGR_R ( pIFeMgr ); 45 ( t ); 46 } } @../os_brew/os_unlink.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_uƚk ( dbv , th ) 19 DB_ENV * dbv ; 20 cڡ * th ; 22 IFeMgr * ifmp ; 23 t ; 25 `FILE_MANAGER_CREATE ( dbv , ifmp , t ); 26 i( t != 0) 27 ( t ); 29 i( `IFILEMGR_Remove ( ifmp , th = EFAILED ) 30 `FILE_MANAGER_ERR ( dbv , ifmp , th , "IFILEMGR_Remove", t ); 32 `IFILEMGR_R ( ifmp ); 34 ( t ); 35 } } @../os_brew/time.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 time_t 21 $time ( tim ) 22 time_t * tim ; 24 time_t now ; 30 #ifde HAVE_BREW_SDK2 31 now = ( time_t ) `GETTIMESECONDS (+ BREW_EPOCH_OFFSET ; 33 now = ( time_t ) `GETUTCSECONDS (+ BREW_EPOCH_OFFSET ; 36 i( tim ! NULL ) 37 * tim = now ; 38 ( now ); 39 } } @../os_qnx/os_qnx_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 23 $__os_qnx_gi_ݒ ( dbv , me , oags , mode , fhp ) 24 DB_ENV * dbv ; 25 cڡ * me ; 26 oags , mode ; 27 DB_FH * fhp ; 29 t ; 30 * wme ; 32 i(( t = `__os_qnx_shmme ( dbv , me , & wme )) != 0) 33 ( t ); 39 fhp -> fd = `shm_ݒ ( wme , oags , mode ); 40 i( fhp -> fd == -1) 41 t = `__os_posix_r ( `__os_g_sy ()); 42 `__os_ ( dbv , wme ); 43 i( fhp -> fd == -1) 44 ( t ); 46 `F_SET ( fhp , DB_FH_OPENED ); 48 #ifde HAVE_FCNTL_F_SETFD 50 i( `f ( fhp -> fd , F_SETFD , 1) == -1) { 51 t = `__os_g_sy (); 52 `__db_sy ( dbv , t , "fcntl(F_SETFD)"); 53 ( `__os_posix_r ( t )); 57 } } 68 $__os_qnx_shmme ( dbv , me , wm ) 69 DB_ENV * dbv ; 70 cڡ * me ; 71 ** wm ; 73 t ; 74 size_t size ; 75 * p , * q , * tmame ; 77 * wm = NULL ; 92 i(( t = `__os_rdup ( dbv , me , & tmame )) != 0) 93 ( t ); 102 p = `__db_h ( tmame ); 103 i( p = NULL ) 104 ( EINVAL ); 105 i( p ! tmame ) { 106 * p = '\0'; 107 q = p ; 108 p = `__db_h ( tmame ); 109 * q = ':'; 111 i( p ! NULL ) { 115 t = `__os_rdup ( dbv , p , wm ); 116 `__os_ ( dbv , tmame ); 117 ( t ); 124 size = ` ( tmame ) + 2; 125 i(( t = `__os_mloc ( dbv , size , & p )) != 0) 126 ( t ); 127 p [0] = '/'; 128 `memy (& p [1], tmame , size -1); 129 `__os_ ( dbv , tmame ); 130 * wm = p ; 132 } } @../os_s60/os_config.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_fs_nzo () 25 } } 32 $__os_sut_de_io () 35 } } 42 $__os_sut_db_gi () 45 } } 52 $__os_sut_iti () 55 } } @../os_vxworks/os_vx_abs.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"iosLib.h " 19 $__os_abh ( th ) 20 cڡ * th ; 22 DEV_HDR * dummy ; 23 * a ; 29 i(( dummy = `iosDevFd ((*) th , & a )= NULL ) 35 i( a ! th ) 41 ( th [0] == '/'); 42 } } @../os_vxworks/os_vx_config.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_fs_nzo () 26 } } 33 $__os_sut_de_io () 36 } } 43 $__os_sut_db_gi () 46 } } 53 $__os_sut_iti () 56 } } @../os_vxworks/os_vx_map.c 12 ~"db_cfig.h " 14 ~"db_t.h " 33 * mgmt ; 34 u_t32_t msize ; 35 * mme ; 36 mgid ; 37 } tos_gda_t ; 39 os_gda_t * g__os_gda ; 40 g__os_gda_size ; 42 #OS_SEGDATA_STARTING_SIZE 16 ) 43 #OS_SEGDATA_INCREMENT 16 ) 45 __os_gda_lo 46 __P (( DB_ENV *, cڡ *, REGINFO *, REGION *)); 47 __os_gda_fd_byme 48 __P (( DB_ENV *, cڡ *, REGINFO *, REGION *)); 49 __os_gda_ __P (( DB_ENV *)); 50 __os_gda_w __P (( DB_ENV *, *)); 51 __os_gda_a __P (( DB_ENV *, REGION *, )); 58 $__os_r_syach ( dbv , f , ) 59 DB_ENV * dbv ; 60 REGINFO * f ; 61 REGION * ; 63 t ; 65 i( __os_gda = NULL ) 66 `__os_gda_ ( dbv ); 68 DB_BEGIN_SINGLE_THREAD ; 71 t = `__os_gda_fd_byme ( dbv , f -> me , inf, ); 78 i(! `F_ISSET ( f , REGION_CREATE )) { 79 i( t != 0) { 80 `__db_rx ( dbv , "segment %s doesotxist", 81 f -> me ); 82 t = EAGAIN ; 84 out ; 97 i( t !0 && ! ENOENT ) 98 out ; 100 i( dbv -> shm_key = INVALID_REGION_SEGID ) { 101 `__db_rx ( dbv , "no base shared memory ID specified"); 102 t = EAGAIN ; 103 out ; 105 i( t =0 && `__os_gda_a ( dbv , , 1) != 0) { 106 `__db_rx ( dbv , 108 dbv -> shm_key + ( f -> id - 1)); 109 t = EAGAIN ; 110 out ; 113 t = `__os_gda_lo ( dbv , f -> me , inf, ); 114 out : 115 DB_END_SINGLE_THREAD ; 116 ( t ); 117 } } 124 $__os_r_sysdach ( dbv , f , deroy ) 125 DB_ENV * dbv ; 126 REGINFO * f ; 127 deroy ; 133 i( deroy ) 134 ( `__os_gda_a ( dbv , f -> , 0)); 136 } } 143 $__os_mfe ( dbv , th , fhp , n , is_rdly , add ) 144 DB_ENV * dbv ; 145 * th ; 146 DB_FH * fhp ; 147 is_rdly ; 148 size_t n ; 149 ** add ; 152 `COMPQUIET ( dbv , NULL ); 153 `COMPQUIET ( th , NULL ); 154 `COMPQUIET ( fhp , NULL ); 155 `COMPQUIET ( is_rdly , 0); 156 `COMPQUIET ( n , 0); 157 `COMPQUIET ( add , NULL ); 158 ( EINVAL ); 159 } } 166 $__os_unmfe ( dbv , addr , n ) 167 DB_ENV * dbv ; 168 * addr ; 169 size_t n ; 172 `COMPQUIET ( dbv , NULL ); 173 `COMPQUIET ( addr , NULL ); 174 `COMPQUIET ( n , 0); 175 ( EINVAL ); 176 } } 184 $__os_gda_ ( dbv ) 185 DB_ENV * dbv ; 187 t ; 189 i( __os_gda ! NULL ) { 190 `__db_rx ( dbv , "shared memory segmentlreadyxists"); 191 ( EEXIST ); 197 DB_BEGIN_SINGLE_THREAD ; 198 __os_gda_size = OS_SEGDATA_STARTING_SIZE ; 199 t = `__os_oc ( dbv , 200 __os_gda_size , ( os_gda_t ), & __os_gda ); 201 DB_END_SINGLE_THREAD ; 202 ( t ); 203 } } 213 $__os_gda_deroy ( dbv ) 214 DB_ENV * dbv ; 216 os_gda_t * p ; 217 i ; 219 i( __os_gda = NULL ) 222 DB_BEGIN_SINGLE_THREAD ; 223 i = 0; i < __os_gda_size ; i++) { 224 p = & __os_gda [ i ]; 225 i( p -> me ! NULL ) { 226 `__os_ ( dbv , p -> me ); 227 p -> me = NULL ; 229 i( p -> gmt ! NULL ) { 230 `__os_ ( dbv , p -> gmt ); 231 p -> gmt = NULL ; 233 p -> size = 0; 236 `__os_ ( dbv , __os_gda ); 237 __os_gda = NULL ; 238 __os_gda_size = 0; 239 DB_END_SINGLE_THREAD ; 242 } } 252 $__os_gda_lo ( dbv , me , f , ) 253 DB_ENV * dbv ; 254 cڡ * me ; 255 REGINFO * f ; 256 REGION * ; 258 os_gda_t * p ; 259 id , t ; 261 i(( t = `__os_gda_w ( dbv , & id )) != 0) 262 ( t ); 264 p = & __os_gda [ id ]; 265 i(( t = `__os_oc ( dbv , 1, -> size , & p -> gmt )) != 0) 266 ( t ); 267 i(( t = `__os_rdup ( dbv , me , & p ->name)) != 0) { 268 `__os_ ( dbv , p -> gmt ); 269 p -> gmt = NULL ; 270 ( t ); 272 p -> size = ->size; 273 p -> gid = dbv -> shm_key + f -> id - 1; 275 f -> addr = p -> gmt ; 276 -> gid = id ; 279 } } 289 $__os_gda_w ( dbv , gidp ) 290 DB_ENV * dbv ; 291 * gidp ; 293 os_gda_t * p ; 294 i , wsize , t ; 296 i( __os_gda = NULL ) { 297 `__db_rx ( dbv , "shared memory segmentot initialized"); 298 ( EAGAIN ); 301 i = 0; i < __os_gda_size ; i++) { 302 p = & __os_gda [ i ]; 303 i( p -> gmt = NULL ) { 304 * gidp = i ; 312 wsize = __os_gda_size + OS_SEGDATA_INCREMENT ; 313 i(( t = `__os_loc ( dbv , wsize * ( os_gda_t ), 314 & __os_gda )) != 0) 315 ( t ); 316 `memt (& __os_gda [ __os_gda_size ], 317 0, OS_SEGDATA_INCREMENT * ( os_gda_t )); 319 * gidp = __os_gda_size ; 320 __os_gda_size = wsize ; 323 } } 332 $__os_gda_fd_byme ( dbv , me , f , ) 333 DB_ENV * dbv ; 334 cڡ * me ; 335 REGINFO * f ; 336 REGION * ; 338 os_gda_t * p ; 339 gid ; 340 i ; 342 i( __os_gda = NULL ) { 343 `__db_rx ( dbv , "shared memory segmentot initialized"); 344 ( EAGAIN ); 347 i( me = NULL ) { 348 `__db_rx ( dbv , "no segmentame given"); 349 ( EAGAIN ); 357 i( `F_ISSET ( f , REGION_CREATE )) 358 gid = dbv -> shm_key + ( f -> id - 1); 360 i( -> gid > __os_gda_size || 361 -> gid = INVALID_REGION_SEGID ) { 362 `__db_rx ( dbv , "Invalid segment id given"); 363 ( EAGAIN ); 365 gid = __os_gda [ ->segid].segid; 367 i = 0; i < __os_gda_size ; i++) { 368 p = & __os_gda [ i ]; 369 i( p -> me ! NULL && `rcmp (name,->name) == 0 && 370 p -> gid == segid) { 371 f -> addr = p -> gmt ; 372 -> gid = i ; 376 ( ENOENT ); 377 } } 384 $__os_gda_a ( dbv , , is_locked ) 385 DB_ENV * dbv ; 386 REGION * ; 387 is_locked ; 389 os_gda_t * p ; 391 i( __os_gda = NULL ) { 392 `__db_rx ( dbv , "shared memory segmentot initialized"); 393 ( EAGAIN ); 396 i( -> gid < 0 ||p->gid > __os_gda_size ) { 397 `__db_rx ( dbv , "gmid %ld ouonge", -> gid ); 398 ( EINVAL ); 401 i( is_locked == 0) 402 DB_BEGIN_SINGLE_THREAD ; 403 p = & __os_gda [ -> gid ]; 404 i( p -> me ! NULL ) { 405 `__os_ ( dbv , p -> me ); 406 p -> me = NULL ; 408 i( p -> gmt ! NULL ) { 409 `__os_ ( dbv , p -> gmt ); 410 p -> gmt = NULL ; 412 p -> size = 0; 413 i( is_locked == 0) 414 DB_END_SINGLE_THREAD ; 419 } } @../os_vxworks/os_vx_rpath.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 ~"iosLib.h " 20 $__db_h ( th ) 21 cڡ * th ; 23 cڡ * s , * ϡ ; 24 DEV_HDR * dummy ; 25 * a ; 40 i(( dummy = `iosDevFd ((*) th , & a )= NULL ) 41 s = th ; 43 s = a ; 45 ϡ = NULL ; 46 i( PATH_SEPARATOR [1] != '\0') { 47 ; s [0] != '\0'; ++s) 48 i( `rchr ( PATH_SEPARATOR , s [0]! NULL ) 49 ϡ = s ; 51 ; s [0] != '\0'; ++s) 52 i( s [0] = PATH_SEPARATOR [0]) 53 ϡ = s ; 54 ((*) ϡ ); 55 } } @../os_windows/ce_ctime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __os_wdows__numb __P ((*, )); 20 $__db_ime ( tod , time_buf ) 21 cڡ time_t * tod ; 22 * time_buf ; 24 * n ; 25 __t64 i64_tod ; 26 _FILETIME fe_tod , fe_loc ; 27 _SYSTEMTIME sys_loc ; 28 cڡ __t64 SECS_BETWEEN_EPOCHS = 11644473600; 29 cڡ __t64 SECS_TO_100NS = 10000000; 31 `ry ( time_buf , "Thu Jan 01 00:00:00 1970"); 32 time_buf [ CTIME_BUFLEN - 1] = '\0'; 35 i64_tod = * tod ; 36 i64_tod = (i64_tod + SECS_BETWEEN_EPOCHS )* SECS_TO_100NS ; 37 `memy (& fe_tod , & i64_tod , (file_tod)); 38 `FeTimeToLolFeTime (& fe_tod , & fe_loc ); 39 `FeTimeToSyemTime (& fe_loc , & sys_loc ); 47 n = &"MTueWedThuFriSSun"[ sys_loc . wDayOfWk *3]; 48 time_buf [0] = * n ++; 49 time_buf [1] = * n ++; 50 time_buf [2] = * n ; 51 n = &"JFebMAMayJunJulAugSONovDec"[( sys_loc . wMth - 1) * 3]; 52 time_buf [4] = * n ++; 53 time_buf [5] = * n ++; 54 time_buf [6] = * n ; 56 `__os_wdows__numb ( time_buf + 8, sys_loc . wDay ); 58 `__os_wdows__numb ( time_buf + 11, sys_loc . wHour + 100); 59 `__os_wdows__numb ( time_buf + 14, sys_loc . wMu + 100); 60 `__os_wdows__numb ( time_buf + 17, sys_loc . wSecd + 100); 62 i( sys_loc . wYr < 100) { 63 time_buf [20] = ' '; 64 time_buf [21] = ' '; 65 `__os_wdows__numb ( time_buf + 22, sys_loc . wYr ); 67 `__os_wdows__numb ( time_buf + 20, sys_loc . wYr / 100); 68 `__os_wdows__numb ( time_buf + 22, sys_loc . wYr % 100 + 100); 71 ( time_buf ); 72 } } 79 $__os_wdows__numb ( , n ) 80 * ; 81 n ; 83 [0] = ' '; 84 i( n >= 10) 85 [0] = ( n / 10) % 10 + '0'; 86 [1] = n % 10 + '0'; 87 } } @../os_windows/ce_time.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 time_t 21 $time ( tim ) 22 time_t * tim ; 32 cڡ __t64 SECS_BETWEEN_EPOCHS = 11644473600; 33 cڡ __t64 SECS_TO_100NS = 10000000; 35 _SYSTEMTIME ime ; 36 _FILETIME ime ; 37 __t64 s ; 38 `GSyemTime (& ime ); 39 `SyemTimeToFeTime (& ime , & ime ); 41 `memy (& s , & ime , ( __t64 )); 43 s = (s/ SECS_TO_100NS - SECS_BETWEEN_EPOCHS ; 50 i( tim ! NULL ) 51 * tim = ( time_t ) s ; 52 (( time_t ) s ); 53 } } @../os_windows/os_abs.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_abh ( th ) 19 cڡ * th ; 27 i( `iha ( th [0]) &&ath[1] == ':') 28 th += 2; 29 ( th [0] == '/' ||ath[0] == '\\'); 30 } } @../os_windows/os_clock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_gtime ( dbv , ) 19 DB_ENV * dbv ; 20 db_timeec * ; 22 #ifde DB_WINCE 23 DWORD ticks ; 25 ticks = `GTickCou (); 27 -> tv_c = ( u_t32_t )( ticks / 1000); 28 -> tv_nc = ( u_t32_t )(( ticks % 1000* MS_PER_NS ); 30 _timeb now ; 32 `_ime (& now ); 33 -> tv_c = now . time ; 34 -> tv_nc = now . mlm * MS_PER_NS ; 36 } } @../os_windows/os_config.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_is_w () 22 #ifde DB_WINCE 25 __os_ty = -1; 31 i( __os_ty == -1) { 32 i(( `GVsi () & 0x80000000) == 0) 33 __os_ty = 1; 35 __os_ty = 0; 37 ( __os_ty ); 39 } } 46 $__os_fs_nzo () 48 #ifde DB_WINCE 51 __os_nzo = -1; 52 OSVERSIONINFO osvi ; 82 i( __os_nzo == -1) { 83 i( `__os_is_w ()) { 84 osvi . dwOSVsiInfoSize = ( OSVERSIONINFO ); 85 `GVsiEx (& osvi ); 86 i( `_tcscmp ( osvi . szCSDVsi , `_T ("RTTarget-32")) == 0) 87 __os_nzo = 1; 89 __os_nzo = 0; 91 __os_nzo = 1; 93 ( __os_nzo ); 95 } } 102 $__os_sut_de_io () 105 } } 112 $__os_sut_db_gi () 114 #ifde DB_WINCE 117 ( `__os_is_w ()); 119 } } 126 $__os_sut_iti () 128 #ifde DB_WINCE 131 ( `__os_is_w ()); 133 } } @../os_windows/os_dir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_dli ( dbv , d , me , ) 19 DB_ENV * dbv ; 20 cڡ * d ; 21 *** me ; 22 * ; 24 HANDLE dhd ; 25 WIN32_FIND_DATA fda ; 26 ysz , t , t ; 27 ** mes , * ڒame ; 28 _TCHAR tfeec [ DB_MAXPATHLEN + 1]; 29 _TCHAR * td ; 31 `TO_TSTRING ( dbv , d , td , t ); 32 i( t != 0) 33 ( t ); 35 () `_rtf ( tfeec , DB_MAXPATHLEN , 36 `_T ("%s%hc*"), td , PATH_SEPARATOR [0]); 37 i(( dhd = 38 `FdFFe ( tfeec , & fda )= INVALID_HANDLE_VALUE ) 39 ( `__os_posix_r ( `__os_g_sy ())); 41 mes = NULL ; 42 ysz = t = t = 0; 44 i(( fda . dwFeAribus & FILE_ATTRIBUTE_DIRECTORY ) == 0) { 45 i( t > ysz ) { 46 ysz += 100; 47 i(( t = `__os_loc ( dbv , 48 ysz * ( mes [0]), &names)) != 0) 49 r ; 57 `FROM_TSTRING ( dbv , fda . cFeName , ڒame , t ); 58 i( t != 0) 59 r ; 60 t = `__os_rdup ( dbv , ڒame , & mes [ t ]); 61 `FREE_STRING ( dbv , ڒame ); 62 i( t != 0) 63 r ; 64 t ++; 66 i(! `FdNextFe ( dhd , & fda )) { 67 i( `GLaE (= ERROR_NO_MORE_FILES ) 70 t = `__os_posix_r ( `__os_g_sy ()); 71 r ; 76 r : i(! `FdClo ( dhd && t == 0) 77 t = `__os_posix_r ( `__os_g_sy ()); 79 i( t == 0) { 80 * me = mes ; 81 * = t ; 82 } i( mes ! NULL ) 83 `__os_d ( dbv , mes , t ); 85 `FREE_STRING ( dbv , td ); 87 ( t ); 88 } } 95 $__os_d ( dbv , mes , t ) 96 DB_ENV * dbv ; 97 ** mes ; 98 t ; 100 t > 0) 101 `__os_ ( dbv , mes [-- t ]); 102 `__os_ ( dbv , mes ); 103 } } @../os_windows/os_errno.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_g_o_t_zo () 21 ( o ); 22 } } 36 $__os_g_o () 39 i( o == 0) 40 `__os_t_o ( EAGAIN ); 41 ( o ); 42 } } 44 #ifde HAVE_REPLICATION_THREADS 54 $__os_g_Ë () 56 r ; 59 r = `WSAGLaE (); 60 i( r == 0) 61 `WSASLaE ( r = ERROR_RETRY ); 62 ( r ); 63 } } 71 $__os_g_sy () 73 r ; 76 r = `GLaE (); 77 i( r == 0) 78 `SLaE ( r = ERROR_RETRY ); 79 ( r ); 80 } } 87 $__os_t_o ( evue ) 88 evue ; 98 o = 99 evue >0 ?vu: (evu= DB_RUNRECOVERY ? EFAULT : EINVAL ); 100 } } 107 $__os_ ( r , buf , n ) 108 r ; 109 * buf ; 110 size_t n ; 112 #ifde DB_WINCE 113 #MAX_TMPBUF_LEN 512 ) 114 _TCHAR tbuf [ MAX_TMPBUF_LEN ]; 115 size_t maxn ; 117 `DB_ASSERT ( NULL , r != 0); 119 `memt ( tbuf , 0, ( _TCHAR )* MAX_TMPBUF_LEN ); 120 maxn = ( n > MAX_TMPBUF_LEN ? MAX_TMPBUF_LEN :en); 121 `FmMesge ( FORMAT_MESSAGE_FROM_SYSTEM , 0, ( DWORD ) r , 122 0, tbuf , maxn -1, NULL ); 124 i( `WideChToMuiBy ( CP_UTF8 , 0, tbuf , -1, 125 buf , n , 0, NULL ) == 0) 126 `y ( buf , "E mesgi faed.", n ); 128 `DB_ASSERT ( NULL , r != 0); 133 `FmMesgeA ( FORMAT_MESSAGE_FROM_SYSTEM , 134 0, ( DWORD ) r , 0, buf , (DWORD)( n - 1), NULL ); 135 buf [ n - 1] = '\0'; 138 ( buf ); 139 } } 146 $__os_posix_r ( r ) 147 r ; 150 i( r == 0) 156 r ) { 157 ERROR_INVALID_PARAMETER : 158 ( EINVAL ); 160 ERROR_FILE_NOT_FOUND : 161 ERROR_INVALID_DRIVE : 162 ERROR_PATH_NOT_FOUND : 163 ( ENOENT ); 165 ERROR_NO_MORE_FILES : 166 ERROR_TOO_MANY_OPEN_FILES : 167 ( EMFILE ); 169 ERROR_ACCESS_DENIED : 170 ( EPERM ); 172 ERROR_INVALID_HANDLE : 173 ( EBADF ); 175 ERROR_NOT_ENOUGH_MEMORY : 176 ( ENOMEM ); 178 ERROR_DISK_FULL : 179 ( ENOSPC ); 181 ERROR_ARENA_TRASHED : 182 ERROR_BAD_COMMAND : 183 ERROR_BAD_ENVIRONMENT : 184 ERROR_BAD_FORMAT : 185 ERROR_GEN_FAILURE : 186 ERROR_INVALID_ACCESS : 187 ERROR_INVALID_BLOCK : 188 ERROR_INVALID_DATA : 189 ERROR_READ_FAULT : 190 ERROR_WRITE_FAULT : 191 ( EFAULT ); 193 ERROR_ALREADY_EXISTS : 194 ERROR_FILE_EXISTS : 195 ( EEXIST ); 197 ERROR_NOT_SAME_DEVICE : 198 ( EXDEV ); 200 ERROR_WRITE_PROTECT : 201 ( EACCES ); 203 ERROR_LOCK_FAILED : 204 ERROR_LOCK_VIOLATION : 205 ERROR_NOT_READY : 206 ERROR_SHARING_VIOLATION : 207 ( EBUSY ); 209 ERROR_RETRY : 210 ( EINTR ); 216 r ) { 217 WSAEADDRINUSE : 218 #ifde EADDRINUSE 219 ( EADDRINUSE ); 223 WSAEADDRNOTAVAIL : 224 #ifde EADDRNOTAVAIL 225 ( EADDRNOTAVAIL ); 229 WSAEAFNOSUPPORT : 230 #ifde EAFNOSUPPORT 231 ( EAFNOSUPPORT ); 235 WSAEALREADY : 236 #ifde EALREADY 237 ( EALREADY ); 241 WSAEBADF : 242 ( EBADF ); 243 WSAECONNABORTED : 244 #ifde ECONNABORTED 245 ( ECONNABORTED ); 249 WSAECONNREFUSED : 250 #ifde ECONNREFUSED 251 ( ECONNREFUSED ); 255 WSAECONNRESET : 256 #ifde ECONNRESET 257 ( ECONNRESET ); 261 WSAEDESTADDRREQ : 262 #ifde EDESTADDRREQ 263 ( EDESTADDRREQ ); 267 WSAEFAULT : 268 ( EFAULT ); 269 WSAEHOSTDOWN : 270 #ifde EHOSTDOWN 271 ( EHOSTDOWN ); 275 WSAEHOSTUNREACH : 276 #ifde EHOSTUNREACH 277 ( EHOSTUNREACH ); 281 WSAEINPROGRESS : 282 #ifde EINPROGRESS 283 ( EINPROGRESS ); 287 WSAEINTR : 288 ( EINTR ); 289 WSAEINVAL : 290 ( EINVAL ); 291 WSAEISCONN : 292 #ifde EISCONN 293 ( EISCONN ); 297 WSAELOOP : 298 #ifde ELOOP 299 ( ELOOP ); 303 WSAEMFILE : 304 ( EMFILE ); 305 WSAEMSGSIZE : 306 #ifde EMSGSIZE 307 ( EMSGSIZE ); 311 WSAENAMETOOLONG : 312 ( ENAMETOOLONG ); 313 WSAENETDOWN : 314 #ifde ENETDOWN 315 ( ENETDOWN ); 319 WSAENETRESET : 320 #ifde ENETRESET 321 ( ENETRESET ); 325 WSAENETUNREACH : 326 #ifde ENETUNREACH 327 ( ENETUNREACH ); 331 WSAENOBUFS : 332 #ifde ENOBUFS 333 ( ENOBUFS ); 337 WSAENOPROTOOPT : 338 #ifde ENOPROTOOPT 339 ( ENOPROTOOPT ); 343 WSAENOTCONN : 344 #ifde ENOTCONN 345 ( ENOTCONN ); 349 WSANOTINITIALISED : 350 ( EAGAIN ); 351 WSAENOTSOCK : 352 #ifde ENOTSOCK 353 ( ENOTSOCK ); 357 WSAEOPNOTSUPP : 358 ( DB_OPNOTSUP ); 359 WSAEPFNOSUPPORT : 360 #ifde EPFNOSUPPORT 361 ( EPFNOSUPPORT ); 365 WSAEPROTONOSUPPORT : 366 #ifde EPROTONOSUPPORT 367 ( EPROTONOSUPPORT ); 371 WSAEPROTOTYPE : 372 #ifde EPROTOTYPE 373 ( EPROTOTYPE ); 377 WSAESHUTDOWN : 378 #ifde ESHUTDOWN 379 ( ESHUTDOWN ); 383 WSAESOCKTNOSUPPORT : 384 #ifde ESOCKTNOSUPPORT 385 ( ESOCKTNOSUPPORT ); 389 WSAETIMEDOUT : 390 #ifde ETIMEDOUT 391 ( ETIMEDOUT ); 395 WSAETOOMANYREFS : 396 #ifde ETOOMANYREFS 397 ( ETOOMANYREFS ); 401 WSAEWOULDBLOCK : 402 #ifde EWOULDBLOCK 403 ( EWOULDBLOCK ); 405 ( EAGAIN ); 407 WSAHOST_NOT_FOUND : 408 #ifde EHOSTUNREACH 409 ( EHOSTUNREACH ); 413 WSASYSNOTREADY : 414 ( EAGAIN ); 415 WSATRY_AGAIN : 416 ( EAGAIN ); 417 WSAVERNOTSUPPORTED : 418 ( DB_OPNOTSUP ); 419 WSAEACCES : 420 ( EACCES ); 426 ( EFAULT ); 427 } } @../os_windows/os_fid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_feid ( dbv , ame , unique_okay , fidp ) 19 DB_ENV * dbv ; 20 cڡ * ame ; 21 unique_okay ; 22 u_t8_t * fidp ; 24 pid_t pid ; 25 size_t i ; 26 u_t32_t tmp ; 27 u_t8_t * p ; 28 t ; 37 DB_FH * fhp ; 38 BY_HANDLE_FILE_INFORMATION fi ; 39 BOOL tv = FALSE ; 41 `DB_ASSERT ( dbv , ame ! NULL ); 44 `memt ( fidp , 0, DB_FILE_ID_LEN ); 50 i(( t = `__os_ݒ ( dbv , ame , 0, 51 DB_OSO_RDONLY , `__db_omode ("r--------"), & fhp )) != 0) 52 ( t ); 55 i(( tv = `GFeInfmiByHd ( fhp -> hd , & fi )= FALSE ) 56 t = `__os_g_sy (); 57 () `__os_ohd ( dbv , fhp ); 59 i( tv = FALSE ) 60 ( `__os_posix_r ( t )); 84 tmp = ( u_t32_t ) fi . nFeIndexLow ; 85 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 86 * fidp ++ = * p ++; 87 tmp = ( u_t32_t ) fi . nFeIndexHigh ; 88 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 89 * fidp ++ = * p ++; 91 i( unique_okay ) { 93 `__os_unique_id ( dbv , & tmp ); 94 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 95 * fidp ++ = * p ++; 116 i( `DB_GLOBAL ( fid_rl ) == 0) { 117 `__os_id ( dbv , & pid , NULL ); 118 `DB_GLOBAL ( fid_rl ( u_t32_t ) pid ; 120 `DB_GLOBAL ( fid_rl ) += 100000; 123 tmp = ( u_t32_t ) fi . dwVumeSlNumb ; 124 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 125 * fidp ++ = * p ++; 129 } } @../os_windows/os_flock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_fdlock ( dbv , fhp , offt , acque , nowa ) 19 DB_ENV * dbv ; 20 DB_FH * fhp ; 21 acque , nowa ; 22 off_t offt ; 24 #ifde DB_WINCE 31 `__db_rx ( dbv , "fdlock APIot implemented for WinCE, DB_REGISTER " 33 ( EFAULT ); 35 t ; 36 DWORD low , high ; 37 OVERLAPPED ov ; 39 `DB_ASSERT ( dbv , 40 `F_ISSET ( fhp , DB_FH_OPENED && fhp-> hd ! INVALID_HANDLE_VALUE ); 42 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 43 `__db_msg ( dbv , 45 fhp -> me , acque ? "acque": "a", ( u_lg ) offt ); 51 `DB_ASSERT ( dbv , offt < ( u_t64_t ) INT64_MAX ); 52 offt = UINT64_MAX - offset; 53 low = ( DWORD ) offt ; 54 high = ( DWORD )( offt >> 32); 56 i( acque ) { 57 i( nowa ) 58 `RETRY_CHK_EINTR_ONLY ( 59 ! `LockFe ( fhp -> hd , low , high , 1, 0), t ); 60 i( `__os_is_w ()) { 61 `memt (& ov , 0, (over)); 62 ov . Offt = low ; 63 ov . OfftHigh = high ; 64 `RETRY_CHK_EINTR_ONLY ( 65 ! `LockFeEx ( fhp -> hd , LOCKFILE_EXCLUSIVE_LOCK , 66 0, 1, 0, & ov ), 67 t ); 71 `RETRY_CHK_EINTR_ONLY ( 72 ! `LockFe ( fhp -> hd , low , high , 1, 0), 73 t ); 74 i( `__os_posix_r ( t ! EAGAIN ) 76 `__os_p ( dbv , 1, 0); 80 `RETRY_CHK_EINTR_ONLY ( 81 ! `UockFe ( fhp -> hd , low , high , 1, 0), t ); 83 ( `__os_posix_r ( t )); 85 } } @../os_windows/os_fsync.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_fsync ( dbv , fhp ) 19 DB_ENV * dbv ; 20 DB_FH * fhp ; 22 t ; 28 i( `F_ISSET ( fhp , DB_FH_NOSYNC )) 31 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 32 `__db_msg ( dbv , "fes: flush %s", fhp -> me ); 34 `RETRY_CHK ((! `FlushFeBufrs ( fhp -> hd )), t ); 35 i( t != 0) { 36 `__db_sy ( dbv , t , "FlushFileBuffers"); 37 t = `__os_posix_r (ret); 39 ( t ); 40 } } @../os_windows/os_getenv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_gv ( dbv , me , b , bu ) 19 DB_ENV * dbv ; 20 cڡ * me ; 21 ** b ; 22 size_t bu ; 24 #ifde DB_WINCE 25 `COMPQUIET ( me , NULL ); 29 _TCHAR * ame , tbuf [1024]; 30 t ; 31 * p ; 41 i(( p = `gv ( me )! NULL ) { 42 i( ` ( p < bu ) { 43 () `ry (* b , p ); 46 sml_buf ; 49 `TO_TSTRING ( dbv , me , ame , t ); 50 i( t != 0) 51 ( t ); 58 t = `GEnvmtVb ( ame , tbuf , (tbuf)); 59 `FREE_STRING ( dbv , ame ); 71 i( t == 0) { 72 i(( t = `__os_g_sy ()= ERROR_ENVVAR_NOT_FOUND ) { 73 * b = NULL ; 76 `__db_sy ( dbv , t , "GetEnvironmentVariable"); 77 ( `__os_posix_r ( t )); 79 i( t > ()( tbuf )) 80 sml_buf ; 82 `FROM_TSTRING ( dbv , tbuf , p , t ); 83 i( t != 0) 84 ( t ); 85 i( ` ( p < bu ) 86 () `ry (* b , p ); 88 * b = NULL ; 89 `FREE_STRING ( dbv , p ); 90 i(* b = NULL ) 91 sml_buf ; 95 sml_buf : 96 * b = NULL ; 97 `__db_rx ( dbv , 99 me , p ); 100 ( EINVAL ); 102 } } @../os_windows/os_handle.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒhd ( dbv , me , ags , mode , fh ) 19 DB_ENV * dbv ; 20 cڡ * me ; 21 ags , mode ; 22 DB_FH ** fh ; 24 #ifde DB_WINCE 30 ( EFAULT ); 32 DB_FH * fhp ; 33 t , ĕt , s ; 43 i(( t = `__os_oc ( dbv , 1, ( DB_FH ), & fhp )) != 0) 44 ( t ); 45 i(( t = `__os_rdup ( dbv , me , & fhp ->name)) != 0) 46 r ; 47 i( dbv ! NULL ) { 48 `MUTEX_LOCK ( dbv , dbv-> mtx_v ); 49 `TAILQ_INSERT_TAIL (& dbv -> fdli , fhp , q ); 50 `MUTEX_UNLOCK ( dbv , dbv-> mtx_v ); 51 `F_SET ( fhp , DB_FH_ENVLINK ); 54 s = 0; 55 ĕt = 1;repeat < 4; ++nrepeat) { 56 fhp -> fd = `_ݒ ( me , ags , mode ); 58 i( fhp -> fd != -1) { 59 t = 0; 63 t = `__os_posix_r ( `__os_g_sy ())) { 64 EMFILE : 65 ENFILE : 66 ENOSPC : 73 `__os_p ( dbv , ĕt * 2, 0); 75 EAGAIN : 76 EBUSY : 77 EINTR : 82 i(++ s < DB_RETRY ) 83 -- ĕt ; 87 r ; 91 i( t == 0) { 92 `F_SET ( fhp , DB_FH_OPENED ); 93 * fh = fhp ; 97 r : () `__os_ohd ( dbv , fhp ); 98 ( t ); 100 } } 107 $__os_ohd ( dbv , fhp ) 108 DB_ENV * dbv ; 109 DB_FH * fhp ; 111 t , t_t ; 113 t = 0; 115 i( dbv ! NULL ) { 116 i( fhp -> me ! NULL && `FLD_ISSET ( 117 dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 118 `__db_msg ( dbv , "fes: %s: clo", fhp -> me ); 120 i( `F_ISSET ( fhp , DB_FH_ENVLINK )) { 125 `MUTEX_LOCK ( dbv , dbv-> mtx_v ); 126 `TAILQ_REMOVE (& dbv -> fdli , fhp , q ); 127 `MUTEX_UNLOCK ( dbv , dbv-> mtx_v ); 132 i( `F_ISSET ( fhp , DB_FH_OPENED )) { 133 i( fhp -> hd ! INVALID_HANDLE_VALUE ) 134 `RETRY_CHK ((! `CloHd ( fhp -> hd )), t ); 136 #ifde DB_WINCE 137 t = EFAULT ; 139 `RETRY_CHK (( `_o ( fhp -> fd )), t ); 142 i( fhp -> unc_hd ! INVALID_HANDLE_VALUE ) { 143 `RETRY_CHK ((! `CloHd ( fhp -> unc_hd )), t_t ); 144 i( t_t !0 && t == 0) 145 t = t_t ; 148 i( t != 0) { 149 `__db_sy ( dbv , t , "CloseHandle"); 150 t = `__os_posix_r (ret); 155 i( `F_ISSET ( fhp , DB_FH_UNLINK )) 156 () `__os_uƚk ( dbv , fhp -> me ); 158 i( fhp -> me ! NULL ) 159 `__os_ ( dbv , fhp -> me ); 160 `__os_ ( dbv , fhp ); 162 ( t ); 163 } } @../os_windows/os_map.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __os_m 14 __P (( DB_ENV *, *, REGINFO *, DB_FH *, size_t , , , , **)); 15 __os_unique_me __P (( _TCHAR *, HANDLE , _TCHAR *, size_t )); 22 $__os_r_syach ( dbv , f , ) 23 DB_ENV * dbv ; 24 REGINFO * f ; 25 REGION * ; 27 DB_FH * fhp ; 28 t ; 35 i(! `F_ISSET ( dbv , DB_ENV_PRIVATE && `__os_is_w () == 0) { 36 `__db_r ( dbv , 37 EINVAL , "Windows 9X systems must specify DB_PRIVATE"); 38 ( EINVAL ); 46 i(( t = `__os_ݒ ( dbv , f -> me , 0, DB_OSO_REGION | 47 ( `F_ISSET ( f , REGION_CREATE_OK ? DB_OSO_CREATE : 0), 48 dbv -> db_mode , & fhp )) != 0) { 49 `__db_r ( dbv , t , "%s", f -> me ); 50 ( t ); 59 t = `__os_m ( dbv , f -> me , inf, fhp , -> size , 60 1, `F_ISSET ( dbv , DB_ENV_SYSTEM_MEM ), 0, & f -> addr ); 61 i( t =0 && `F_ISSET ( dbv , DB_ENV_SYSTEM_MEM )) 62 -> gid = 1; 64 () `__os_ohd ( dbv , fhp ); 66 ( t ); 67 } } 74 $__os_r_sysdach ( dbv , f , deroy ) 75 DB_ENV * dbv ; 76 REGINFO * f ; 77 deroy ; 79 t , t_t ; 81 i( f -> w_hd ! NULL ) { 82 () `CloHd ( f -> w_hd ); 83 f -> w_hd = NULL ; 86 t = ! `UnmVwOfFe ( f -> addr ? `__os_g_sy () : 0; 87 i( t != 0) { 88 `__db_sy ( dbv , t , "UnmapViewOfFile"); 89 t = `__os_posix_r (ret); 92 i(! `F_ISSET ( dbv , DB_ENV_SYSTEM_MEM && deroy ) { 93 i( `F_ISSET ( dbv , DB_ENV_OVERWRITE )) 94 () `__db_fe_mui_wre ( dbv , f -> me ); 95 i(( t_t = `__os_uƚk ( dbv , f -> me )!0 && t == 0) 96 t = t_t ; 99 ( t ); 100 } } 107 $__os_mfe ( dbv , th , fhp , n , is_rdly , addr ) 108 DB_ENV * dbv ; 109 * th ; 110 DB_FH * fhp ; 111 is_rdly ; 112 size_t n ; 113 ** addr ; 115 i( dbv ! NULL && 116 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 117 `__db_msg ( dbv , "fes: mm %s", th ); 119 ( `__os_m ( dbv , th , NULL , fhp , n , 0, 0, is_rdly , addr )); 120 } } 127 $__os_unmfe ( dbv , addr , n ) 128 DB_ENV * dbv ; 129 * addr ; 130 size_t n ; 132 i( dbv ! NULL && 133 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 134 `__db_msg ( dbv , "fileops: munmap"); 136 (! `UnmVwOfFe ( addr ? `__os_posix_r ( `__os_g_sy ()) : 0); 137 } } 167 $__os_unique_me ( ig_th , hfe , su_th , su_th_n ) 168 _TCHAR * ig_th , * su_th ; 169 HANDLE hfe ; 170 size_t su_th_n ; 172 BY_HANDLE_FILE_INFORMATION fefo ; 173 _TCHAR * bame , * p ; 180 bame = `_tcchr ( ig_th , '/'); 181 p = `_tcchr ( ig_th , '\\'); 182 i( bame = NULL || ( p != NULL && > basename)) 183 bame = p ; 184 i( bame = NULL ) 185 bame = `_tcchr ( ig_th , ':'); 187 i( bame = NULL ) 188 bame = ig_th ; 190 bame ++; 192 i(! `GFeInfmiByHd ( hfe , & fefo )) 193 ( `__os_posix_r ( `__os_g_sy ())); 195 () `_rtf ( su_th , su_th_n , 196 `_T ("__db_shmem.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%s"), 197 fefo . dwVumeSlNumb , 198 fefo . nFeIndexHigh , 199 fefo . nFeIndexLow , 200 fefo . CiTime . dwHighDeTime , 201 fefo . CiTime . dwHighDeTime , 202 bame ); 205 } } 212 $__os_m ( dbv , th , f , fhp , n , is_gi , is_syem , is_rdly , addr ) 213 DB_ENV * dbv ; 214 REGINFO * f ; 215 * th ; 216 DB_FH * fhp ; 217 is_gi , is_syem , is_rdly ; 218 size_t n ; 219 ** addr ; 221 HANDLE hMemy ; 222 t , u_gefe ; 223 _TCHAR * h , shmem_me [ DB_MAXPATHLEN ]; 224 * pMemy ; 225 __t64 n64 ; 227 t = 0; 228 i( f ! NULL ) 229 f -> w_hd = NULL ; 237 n64 = n ; 239 u_gefe = is_gi && is_syem ; 245 i( u_gefe ) { 246 #ifde DB_WINCE 247 `__db_rx ( dbv , "Unableo memory mapegions using system " 249 ( EFAULT ); 251 `TO_TSTRING ( dbv , th , h , t ); 252 i( t != 0) 253 ( t ); 254 t = `__os_unique_me ( h , fhp -> hd , 255 shmem_me , (shmem_name)); 256 `FREE_STRING ( dbv , h ); 257 i( t != 0) 258 ( t ); 283 hMemy = NULL ; 284 i( u_gefe ) { 285 #ide DB_WINCE 286 hMemy = `OnFeMpg ( 287 is_rdly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS , 288 0, shmem_me ); 290 i( hMemy = NULL && `F_ISSET ( f , REGION_CREATE_OK )) 291 hMemy = `CeFeMpg (( HANDLE )-1, 0, 292 is_rdly ? PAGE_READONLY : PAGE_READWRITE , 293 ( DWORD )( n64 >> 32), (DWORD64, shmem_me ); 296 hMemy = `CeFeMpg ( fhp -> hd , 0, 297 is_rdly ? PAGE_READONLY : PAGE_READWRITE , 298 ( DWORD )( n64 >> 32), (DWORD64, NULL ); 299 #ifde DB_WINCE 304 fhp -> hd = INVALID_HANDLE_VALUE ; 305 `F_CLR ( fhp , DB_FH_OPENED ); 309 i( hMemy = NULL ) { 310 t = `__os_g_sy (); 311 `__db_sy ( dbv , t , "OpenFileMapping"); 312 ( `__db_nic ( dbv , `__os_posix_r ( t ))); 315 pMemy = `MVwOfFe ( hMemy , 316 ( is_rdly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS ), 0, 0, n ); 317 i( pMemy = NULL ) { 318 t = `__os_g_sy (); 319 `__db_sy ( dbv , t , "MapViewOfFile"); 320 ( `__db_nic ( dbv , `__os_posix_r ( t ))); 336 i( u_gefe && f ! NULL ) 337 f -> w_hd = hMemy ; 339 `CloHd ( hMemy ); 341 * addr = pMemy ; 342 ( t ); 343 } } @../os_windows/os_mkdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_mkd ( dbv , me , mode ) 21 DB_ENV * dbv ; 22 cڡ * me ; 23 mode ; 25 t ; 26 _TCHAR * ame ; 28 i( dbv ! NULL && 29 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 30 `__db_msg ( dbv , "fes: mkd %s", me ); 33 `TO_TSTRING ( dbv , me , ame , t ); 34 i( t != 0) 35 ( t ); 36 `RETRY_CHK (! `CeDey ( ame , NULL ), t ); 37 `FREE_STRING ( dbv , ame ); 38 i( t != 0) 39 ( `__os_posix_r ( t )); 41 ( t ); 42 } } @../os_windows/os_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒ ( dbv , me , ge_size , ags , mode , fh ) 19 DB_ENV * dbv ; 20 cڡ * me ; 21 u_t32_t ge_size , ags ; 22 mode ; 23 DB_FH ** fh ; 25 DB_FH * fhp ; 26 #ide DB_WINCE 27 DWORD u_size , _size , _us , tٮ_us ; 28 _TCHAR * drive , dbuf [4]; 30 acss , , ag , ĕt , t , she ; 31 _TCHAR * ame ; 33 * fh = NULL ; 34 ame = NULL ; 36 i( dbv ! NULL && 37 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 38 `__db_msg ( dbv , "fes: o%s", me ); 40 #OKFLAGS \ 41 ( DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\ 42 DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \ 43 DB_OSO_TEMP | DB_OSO_TRUNC ) ) 44 i(( t = `__db_fchk ( dbv , "__os_ݒ", ags , OKFLAGS )) != 0) 45 ( t ); 47 `TO_TSTRING ( dbv , me , ame , t ); 48 i( t != 0) 49 r ; 59 i(( t = `__os_oc ( dbv , 1, ( DB_FH ), & fhp )) != 0) 60 ( t ); 61 i(( t = `__os_rdup ( dbv , me , & fhp ->name)) != 0) 62 r ; 63 i( dbv ! NULL ) { 64 `MUTEX_LOCK ( dbv , dbv-> mtx_v ); 65 `TAILQ_INSERT_TAIL (& dbv -> fdli , fhp , q ); 66 `MUTEX_UNLOCK ( dbv , dbv-> mtx_v ); 67 `F_SET ( fhp , DB_FH_ENVLINK ); 86 acss = GENERIC_READ ; 87 i(! `LF_ISSET ( DB_OSO_RDONLY )) 88 acss | GENERIC_WRITE ; 90 #ifde DB_WINCE 96 i( `LF_ISSET ( DB_OSO_REGION )) 97 she = GENERIC_READ | GENERIC_WRITE ; 99 she = FILE_SHARE_READ | FILE_SHARE_WRITE ; 101 she = FILE_SHARE_READ | FILE_SHARE_WRITE ; 102 i( `__os_is_w ()) 103 she | FILE_SHARE_DELETE ; 105 = FILE_ATTRIBUTE_NORMAL ; 111 i( `LF_ISSET ( DB_OSO_CREATE && LF_ISSET( DB_OSO_EXCL )) 112 ag = CREATE_NEW ; 113 i(! `LF_ISSET ( DB_OSO_CREATE && LF_ISSET( DB_OSO_TRUNC )) 114 ag = TRUNCATE_EXISTING ; 115 i( `LF_ISSET ( DB_OSO_TRUNC )) 116 ag = CREATE_ALWAYS ; 117 i( `LF_ISSET ( DB_OSO_CREATE )) 118 ag = OPEN_ALWAYS ; 120 ag = OPEN_EXISTING ; 122 i( `LF_ISSET ( DB_OSO_DSYNC )) { 123 `F_SET ( fhp , DB_FH_NOSYNC ); 124 | FILE_FLAG_WRITE_THROUGH ; 127 #ide DB_WINCE 128 i( `LF_ISSET ( DB_OSO_SEQ )) 129 | FILE_FLAG_SEQUENTIAL_SCAN ; 131 | FILE_FLAG_RANDOM_ACCESS ; 134 i( `LF_ISSET ( DB_OSO_TEMP )) 135 | FILE_FLAG_DELETE_ON_CLOSE ; 146 #ide DB_WINCE 147 i( `LF_ISSET ( DB_OSO_DIRECT && ge_size !0 && me [0] != '\0') { 148 i( me [1] == ':') { 149 drive = dbuf ; 150 `_rtf ( dbuf , (dbuf), `_T ("%c:\\"), ame [0]); 152 drive = NULL ; 158 i( `GDiskFeS ( drive , & u_size , 159 & _size , & _us , & tٮ_us ) && 160 ge_size % _size == 0) 161 | FILE_FLAG_NO_BUFFERING ; 165 fhp -> hd = fhp-> unc_hd = INVALID_HANDLE_VALUE ; 166 ĕt = 1;; ++nrepeat) { 167 i( fhp -> hd = INVALID_HANDLE_VALUE ) { 168 #ifde DB_WINCE 169 i( `LF_ISSET ( DB_OSO_REGION )) 170 fhp -> hd = `CeFeFMpg ( ame , 171 acss , she , NULL , ag , , 0); 174 fhp -> hd = `CeFe ( ame , 175 acss , she , NULL , ag , , 0); 184 #ide DB_WINCE 191 i( fhp -> hd ! INVALID_HANDLE_VALUE && 192 ! `LF_ISSET ( DB_OSO_RDONLY | DB_OSO_TEMP ) && 193 fhp -> unc_hd = INVALID_HANDLE_VALUE ) 194 fhp -> unc_hd = `CeFe ( 195 ame , acss , she , NULL , OPEN_EXISTING , , 0); 197 i( fhp -> hd = INVALID_HANDLE_VALUE || 198 (! `LF_ISSET ( DB_OSO_RDONLY | DB_OSO_TEMP ) && 199 fhp -> unc_hd = INVALID_HANDLE_VALUE )) 201 i( fhp -> hd = INVALID_HANDLE_VALUE ) 210 t = `__os_posix_r ( `__os_g_sy ()); 211 i(( t ! ENFILE && ! EMFILE && ! ENOSPC ) || 212 ĕt > 3) 213 r ; 215 `__os_p ( dbv , ĕt * 2, 0); 220 `FREE_STRING ( dbv , ame ); 222 `F_SET ( fhp , DB_FH_OPENED ); 223 * fh = fhp ; 226 r : `FREE_STRING ( dbv , ame ); 227 i( fhp ! NULL ) 228 () `__os_ohd ( dbv , fhp ); 229 ( t ); 230 } } @../os_windows/os_rename.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_me ( dbv , dme , wme , st ) 19 DB_ENV * dbv ; 20 cڡ * dme , * wme ; 21 u_t32_t st ; 23 _TCHAR * tdme , * ewme ; 24 t ; 26 i( dbv ! NULL && 27 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 28 `__db_msg ( dbv , "fes:am%t%s", dme , wme ); 30 `TO_TSTRING ( dbv , dme , tdme , t ); 31 i( t != 0) 32 ( t ); 33 `TO_TSTRING ( dbv , wme , ewme , t ); 34 i( t != 0) { 35 `FREE_STRING ( dbv , tdme ); 36 ( t ); 39 i(! `MoveFe ( tdme , ewme )) 40 t = `__os_g_sy (); 42 i( `__os_posix_r ( t = EEXIST ) { 43 t = 0; 44 #ide DB_WINCE 45 i( `__os_is_w ()) { 46 i(! `MoveFeEx ( 47 tdme , ewme , MOVEFILE_REPLACE_EXISTING )) 48 t = `__os_g_sy (); 59 () `DeFe ( ewme ); 60 i(! `MoveFe ( tdme , ewme )) 61 t = `__os_g_sy (); 65 `FREE_STRING ( dbv , ewme ); 66 `FREE_STRING ( dbv , tdme ); 68 i( t != 0) { 69 i( st == 0) 70 `__db_sy ( 71 dbv , t , "MoveFeEx %%s", dme , wme ); 72 t = `__os_posix_r (ret); 75 ( t ); 76 } } @../os_windows/os_rw.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_io ( dbv , , fhp , pgno , pgsize , tive , io_n , buf , ni ) 19 DB_ENV * dbv ; 20 ; 21 DB_FH * fhp ; 22 db_pgno_t pgno ; 23 u_t32_t pgsize , tive , io_n ; 24 u_t8_t * buf ; 25 size_t * ni ; 27 t ; 29 #ide DB_WINCE 30 i( `__os_is_w ()) { 31 ULONG64 off ; 32 OVERLAPPED ov ; 33 DWORD nbys ; 34 i(( off = tive ) == 0) 35 off = ( ULONG64 ) pgsize * pgno ; 36 ov . Offt = ( DWORD )( off & 0xffffffff); 37 ov . OfftHigh = ( DWORD )( off >> 32); 38 ov . hEvt = 0; 40 i( dbv ! NULL && 41 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS_ALL )) 42 `__db_msg ( dbv , 44 = DB_IO_READ ? "read" : "write", 45 fhp -> me , ( u_lg ) io_n , (u_lg) off ); 47 ) { 48 DB_IO_READ : 49 i(! `RdFe ( fhp -> hd , 50 buf , ( DWORD ) io_n , & nbys , & ov )) 51 ow ; 53 DB_IO_WRITE : 54 #ifde HAVE_FILESYSTEM_NOTZERO 55 i( `__os_fs_nzo ()) 56 ow ; 58 i(! `WreFe ( fhp -> hd , 59 buf , ( DWORD ) io_n , & nbys , & ov )) 60 ow ; 63 i( nbys = io_n ) { 64 * ni = ( size_t ) nbys ; 69 ow : 71 `MUTEX_LOCK ( dbv , fhp -> mtx_fh ); 73 i(( t = `__os_ek ( dbv , fhp , pgno , pgsize , tive )) != 0) 74 r ; 76 ) { 77 DB_IO_READ : 78 t = `__os_ad ( dbv , fhp , buf , io_n , ni ); 80 DB_IO_WRITE : 81 t = `__os_wre ( dbv , fhp , buf , io_n , ni ); 85 r : `MUTEX_UNLOCK ( dbv , fhp -> mtx_fh ); 87 ( t ); 88 } } 95 $__os_ad ( dbv , fhp , addr , n , p ) 96 DB_ENV * dbv ; 97 DB_FH * fhp ; 98 * addr ; 99 size_t n ; 100 size_t * p ; 102 size_t offt , ; 103 DWORD cou ; 104 t ; 105 u_t8_t * ddr ; 107 t = 0; 109 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 110 `__db_msg ( dbv , 111 "fes:d %s: %lu bys", fhp -> me , ( u_lg ) n ); 113 ddr = addr , 114 offt = 0; off< n ; ddr + , offset +=r) { 115 `RETRY_CHK ((! `RdFe ( fhp -> hd , 116 ddr , ( DWORD )( n - offt ), & cou , NULL )), t ); 117 i( cou =0 || t != 0) 119 = ( size_t ) cou ; 121 * p = ddr - ( u_t8_t *) addr ; 122 i( t != 0) { 123 `__db_sy ( dbv , t , "read: 0x%lx, %lu", 124 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 125 t = `__os_posix_r (ret); 127 ( t ); 128 } } 135 $__os_wre ( dbv , fhp , addr , n , nwp ) 136 DB_ENV * dbv ; 137 DB_FH * fhp ; 138 * addr ; 139 size_t n ; 140 size_t * nwp ; 142 t ; 144 #ifde HAVE_FILESYSTEM_NOTZERO 146 i( `__os_fs_nzo (&& ( t = `__os_zofl ( dbv , fhp )) != 0) 147 ( t ); 149 ( `__os_physwre ( dbv , fhp , addr , n , nwp )); 150 } } 157 $__os_physwre ( dbv , fhp , addr , n , nwp ) 158 DB_ENV * dbv ; 159 DB_FH * fhp ; 160 * addr ; 161 size_t n ; 162 size_t * nwp ; 164 size_t offt , nw ; 165 DWORD cou ; 166 t ; 167 u_t8_t * ddr ; 169 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 170 `__db_msg ( dbv , 171 "fes: wr%s: %lu bys", fhp -> me , ( u_lg ) n ); 184 `PANIC_CHECK ( dbv ); 186 t = 0; 187 ddr = addr , 188 offt = 0; off< n ; ddr + nw , offset +=w) { 189 `RETRY_CHK ((! `WreFe ( fhp -> hd , 190 ddr , ( DWORD )( n - offt ), & cou , NULL )), t ); 191 i( t != 0) 193 nw = ( size_t ) cou ; 195 * nwp = n ; 196 i( t != 0) { 197 `__db_sy ( dbv , t , "write: %#lx, %lu", 198 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 199 t = `__os_posix_r (ret); 201 `DB_EVENT ( dbv , DB_EVENT_WRITE_FAILED , NULL ); 203 ( t ); 204 } } @../os_windows/os_seek.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ek ( dbv , fhp , pgno , pgsize , tive ) 19 DB_ENV * dbv ; 20 DB_FH * fhp ; 21 db_pgno_t pgno ; 22 u_t32_t pgsize ; 23 u_t32_t tive ; 27 __t64 bigt ; 29 low ; 30 high ; 32 } offbys ; 33 off_t offt ; 34 t ; 36 offt = ( off_t ) pgsize * pgno + tive ; 38 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 39 `__db_msg ( dbv , 40 "fes: sk %t%lu", fhp -> me , ( u_lg ) offt ); 42 offbys . bigt = offt ; 43 t = ( `SFePor ( fhp -> hd , offbys . low , 44 & offbys . high , FILE_BEGIN =( DWORD )-1? `__os_g_sy () : 0; 46 i( t == 0) { 47 fhp -> pgsize =gsize; 48 fhp -> pgno =gno; 49 fhp -> offt = tive ; 51 `__db_sy ( dbv , t , 52 "ek: %lu: (%lu * %lu+ %lu", ( u_lg ) offt , 53 ( u_lg ) pgno , (u_lg) pgsize , (u_lg) tive ); 54 t = `__os_posix_r (ret); 57 ( t ); 58 } } @../os_windows/os_sleep.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_p ( dbv , cs , ucs ) 19 DB_ENV * dbv ; 20 u_lg cs , ucs ; 22 `COMPQUIET ( dbv , NULL ); 31 `S˕ ( cs * MS_PER_SEC + ( ucs / US_PER_MS ) + 1); 32 } } @../os_windows/os_spin.c 9 ~"db_cfig.h " 11 ~"db_t.h " 17 u_t32_t 18 $__os_ ( dbv ) 19 DB_ENV * dbv ; 21 SYSTEM_INFO SyemInfo ; 22 u_t32_t s_s ; 25 `GSyemInfo (& SyemInfo ); 31 i( SyemInfo . dwNumbOfProsss > 1) 32 s_s = 50 * SyemInfo . dwNumbOfProsss ; 34 s_s = 1; 36 ( s_s ); 37 } } @../os_windows/os_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_exis ( dbv , th , isdp ) 19 DB_ENV * dbv ; 20 cڡ * th ; 21 * isdp ; 23 t ; 24 DWORD s ; 25 _TCHAR * h ; 27 `TO_TSTRING ( dbv , th , h , t ); 28 i( t != 0) 29 ( t ); 31 i( dbv ! NULL && 32 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 33 `__db_msg ( dbv , "fes: s%s", th ); 35 `RETRY_CHK ( 36 (( s = `GFeAribus ( h )=( DWORD )-1 ? 1 : 0), t ); 37 i( t == 0) { 38 i( isdp ! NULL ) 39 * isdp = ( s & FILE_ATTRIBUTE_DIRECTORY ); 41 t = `__os_posix_r (ret); 43 `FREE_STRING ( dbv , h ); 44 ( t ); 45 } } 53 $__os_iofo ( dbv , th , fhp , mby , by , iosiz ) 54 DB_ENV * dbv ; 55 cڡ * th ; 56 DB_FH * fhp ; 57 u_t32_t * mby , * by , * iosiz ; 59 t ; 60 BY_HANDLE_FILE_INFORMATION bhfi ; 61 __t64 fesize ; 63 `RETRY_CHK ((! `GFeInfmiByHd ( fhp -> hd , & bhfi )), t ); 64 i( t != 0) { 65 `__db_sy ( dbv , t , "GetFileInformationByHandle"); 66 ( `__os_posix_r ( t )); 69 fesize = (( __t64 ) bhfi . nFeSizeHigh << 32) + 70 bhfi . nFeSizeLow ; 73 i( mby ! NULL ) 74 * mby = ( u_t32_t )( fesize / MEGABYTE ); 75 i( by ! NULL ) 76 * by = ( u_t32_t )( fesize % MEGABYTE ); 84 i( iosiz ! NULL ) 85 * iosiz = DB_DEF_IOSIZE ; 87 } } @../os_windows/os_truncate.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_un ( dbv , fhp , pgno , pgsize ) 19 DB_ENV * dbv ; 20 DB_FH * fhp ; 21 db_pgno_t pgno ; 22 u_t32_t pgsize ; 26 __t64 bigt ; 28 low ; 29 high ; 31 } off ; 32 off_t offt ; 33 t ; 35 t = 0; 36 offt = ( off_t ) pgsize * pgno ; 38 i( dbv ! NULL && 39 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 40 `__db_msg ( dbv , 41 "fes:run %t%lu", fhp -> me , ( u_lg ) offt ); 43 #ifde HAVE_FILESYSTEM_NOTZERO 48 i( `__os_fs_nzo ()) { 49 off_t _offt ; 50 u_t32_t mbys , bys ; 53 i(( t = 54 `__os_iofo ( dbv , NULL , fhp , & mbys , & bys , NULL)) != 0) 55 ( t ); 56 _offt = ( off_t ) mbys * MEGABYTE + bys ; 58 i( offt > _offt ) 83 `RETRY_CHK (( off . bigt = ( __t64 ) pgsize * pgno , 84 ( `SFePor ( fhp -> unc_hd , off . low , &off. high , FILE_BEGIN ) 85 = INVALID_SET_FILE_POINTER && `GLaE (! NO_ERROR ) || 86 ! `SEndOfFe ( fhp -> unc_hd )), t ); 88 i( t != 0) { 89 `__db_sy ( dbv , t , "SFePor: %lu", pgno * pgsize ); 90 t = `__os_posix_r (ret); 93 ( t ); 94 } } @../os_windows/os_unlink.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_gi_uƚk ( dbv , th ) 19 DB_ENV * dbv ; 20 cڡ * th ; 22 i( dbv ! NULL && 23 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 24 `__db_msg ( dbv , "fes: uƚk %s", th ); 26 i( `F_ISSET ( dbv , DB_ENV_OVERWRITE )) 27 () `__db_fe_mui_wre ( dbv , th ); 29 ( `__os_uƚk ( dbv , th )); 30 } } 37 $__os_uƚk ( dbv , th ) 38 DB_ENV * dbv ; 39 cڡ * th ; 41 HANDLE h ; 42 _TCHAR * h , * ig_h , buf [ DB_MAXPATHLEN ]; 43 u_t32_t id ; 44 t , t_t ; 46 i( dbv ! NULL && 47 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 48 `__db_msg ( dbv , "fes: uƚk %s", th ); 50 `TO_TSTRING ( dbv , th , h , t ); 51 i( t != 0) 52 ( t ); 53 ig_h = h ; 70 i( `__os_is_w ()) { 71 `__os_unique_id ( dbv , & id ); 72 `_rtf ( buf , DB_MAXPATHLEN , `_T ("%s.d.%010u"), h , id ); 73 i( `MoveFe ( h , buf )) 74 h = buf ; 76 t = `__os_g_sy (); 77 i( `__os_posix_r ( t ! ENOENT ) 78 `__db_r ( dbv , t , 80 th ); 87 h = `CeFe ( h , 0, FILE_SHARE_READ , NULL , OPEN_EXISTING , 88 FILE_FLAG_DELETE_ON_CLOSE , 0); 89 i( h ! INVALID_HANDLE_VALUE ) { 90 () `CloHd ( h ); 91 i( `GFeAribus ( h = INVALID_FILE_ATTRIBUTES ) 92 skd ; 96 `RETRY_CHK ((! `DeFe ( h )), t ); 98 skd : 99 `FREE_STRING ( dbv , ig_h ); 109 i( t != 0) { 110 i(( t_t = `__os_posix_r ( t )! ENOENT ) 111 `__db_sy ( dbv , t , "DeFe: %s", th ); 112 t = t_t ; 115 ( t ); 116 } } @../os_windows/os_yield.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_yld ( dbv ) 19 DB_ENV * dbv ; 25 `S˕ (0); 26 } } @../qam/qam.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/qam.h " 19 __qam_bulk __P (( DBC *, DBT *, u_t32_t )); 20 __qamc_o __P (( DBC *, db_pgno_t , *)); 21 __qamc_d __P (( DBC *)); 22 __qamc_deroy __P (( DBC *)); 23 __qamc_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 24 __qamc_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 25 __qam_csume __P (( DBC *, QMETA *, db_o_t )); 26 __qam_gno __P (( DB *, cڡ DBT *, db_o_t *)); 28 #DONT_NEED_LOCKS ( dbc ((dbc)-> txn = NULL || \ 29 `F_ISSET ( dbc , DBC_READ_COMMITTED | DBC_READ_UNCOMMITTED )) ) 39 $__qam_posi ( dbc , , lock_mode , g_mode , exap ) 40 DBC * dbc ; 41 db_o_t * ; 42 db_lockmode_t lock_mode ; 43 u_t32_t g_mode ; 44 * exap ; 46 QUEUE_CURSOR * ; 47 DB * dbp ; 48 QAMDATA * qp ; 49 db_pgno_t pg ; 50 t , t_t ; 52 dbp = dbc ->dbp; 53 = ( QUEUE_CURSOR *) dbc -> ; 56 pg = `QAM_RECNO_PAGE ( dbp , * ); 58 i(( t = `__db_lg ( dbc , 0, pg , lock_mode , 0, & -> lock )) != 0) 59 ( t ); 60 -> ge = NULL ; 61 * exap = 0; 62 i(( t = `__qam_fg ( dbp , & pg , 63 dbc -> txn , g_mode , & -> ge )) != 0) { 64 i(! `FLD_ISSET ( g_mode , DB_MPOOL_CREATE ) && 65 ( t = DB_PAGE_NOTFOUND || = ENOENT )) 66 t = 0; 69 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 70 t = t_t ; 71 ( t ); 73 -> pgno = pg ; 74 -> dx = `QAM_RECNO_INDEX ( dbp , pg , * ); 76 i( `PGNO ( -> ge ) == 0) { 82 i(! `FLD_ISSET ( g_mode , DB_MPOOL_CREATE )) { 83 * exap = 0; 86 `DB_ASSERT ( dbp -> dbv , `FLD_ISSET ( g_mode , DB_MPOOL_CREATE )); 87 `PGNO ( -> ge pg ; 88 `TYPE ( -> ge P_QAMDATA ; 91 qp = `QAM_GET_RECORD ( dbp , -> ge , cp-> dx ); 92 * exap = `F_ISSET ( qp , QAM_VALID ) ? 1 : 0; 94 ( t ); 95 } } 109 $__qam_pem ( dbc , g , dx , o , da ) 110 DBC * dbc ; 111 QPAGE * g ; 112 u_t32_t dx ; 113 db_o_t o ; 114 DBT * da ; 116 DB_ENV * dbv ; 117 DB * dbp ; 118 DBT dda , pda , * d ; 119 QAMDATA * qp ; 120 QUEUE * t ; 121 u_t8_t * de , * p ; 122 lod , t ; 124 dbp = dbc ->dbp; 125 dbv = dbp ->dbenv; 126 t = ( QUEUE *) dbp -> q_ ; 127 lod = t = 0; 129 i( da -> size > t -> _n ) 130 ( `__db_c_toobig ( dbv , da -> size , t -> _n )); 131 qp = `QAM_GET_RECORD ( dbp , g , dx ); 133 p = qp -> da ; 134 d = da ; 135 i( `F_ISSET ( da , DB_DBT_PARTIAL )) { 136 i( da -> doff + da-> dn > t -> _n ) { 137 `__db_rx ( dbv , 139 "Recdgth", ( u_lg ) t -> _n ); 140 ( EINVAL ); 143 i( da -> size !da-> dn ) 144 ( `__db_c_ ( dbv , da -> size , da-> dn )); 146 i( da -> size = t -> _n ) 147 no_l ; 161 i( `DBC_LOGGING ( dbc || ! `F_ISSET ( qp , QAM_VALID )) { 162 d = & pda ; 163 `memt ( d , 0, (*datap)); 165 i(( t = `__os_mloc ( dbv , 166 t -> _n , & d -> da )) != 0) 167 ( t ); 168 lod = 1; 169 d -> size = t -> _n ; 175 de = d -> da ; 176 i( `F_ISSET ( qp , QAM_VALID )) 177 `memy ( de , p , t -> _n ); 179 `memt ( de , () t -> _d ,-> _n ); 181 de + da -> doff ; 182 `memy ( de , da ->da, da-> size ); 184 d = da ; 185 p + da -> doff ; 189 no_l : 190 i( `DBC_LOGGING ( dbc )) { 191 dda . size = 0; 192 i( `F_ISSET ( qp , QAM_SET )) { 193 dda . da = qp ->data; 194 dda . size = t -> _n ; 196 i(( t = `__qam_add_log ( dbp , dbc -> txn , & `LSN ( g ), 197 0, & `LSN ( g ),ag-> pgno , 198 dx , o , d , qp -> ags , 199 dda . size =0 ? NULL : &olddata)) != 0) 200 r ; 201 } i(! `F_ISSET (( dbc ), DBC_RECOVER )) 202 `LSN_NOT_LOGGED ( `LSN ( g )); 204 `F_SET ( qp , QAM_VALID | QAM_SET ); 205 `memy ( p , d -> da , d-> size ); 206 i(! `F_ISSET ( da , DB_DBT_PARTIAL )) 207 `memt ( p + d -> size , 208 () t -> _d ,-> _n - d -> size ); 210 r : i( lod ) 211 `__os_ ( dbv , d -> da ); 213 ( t ); 214 } } 221 $__qamc_put ( dbc , key , da , ags , pgn ) 222 DBC * dbc ; 223 DBT * key , * da ; 224 u_t32_t ags ; 225 db_pgno_t * pgn ; 227 DB * dbp ; 228 DB_ENV * dbv ; 229 DB_LOCK lock ; 230 DB_MPOOLFILE * mpf ; 231 QMETA * ma ; 232 QUEUE_CURSOR * ; 233 db_pgno_t pg ; 234 db_o_t w_cur , w_f ; 235 u_t32_t code ; 236 exa , t , t_t , wrock ; 238 dbp = dbc ->dbp; 239 dbv = dbp ->dbenv; 240 mpf = dbp ->mpf; 241 i( pgn ! NULL ) 242 * pgn = PGNO_INVALID ; 244 = ( QUEUE_CURSOR *) dbc -> ; 246 ags ) { 247 DB_KEYFIRST : 248 DB_KEYLAST : 249 DB_NOOVERWRITE : 250 i(( t = `__qam_gno ( dbp , key , & -> o )) != 0) 251 ( t ); 253 DB_CURRENT : 257 ( `__db_ ( dbv , "DBC->put", 0)); 261 i(( t = `__db_lg ( dbc , LCK_COUPLE , 262 -> o , DB_LOCK_WRITE , DB_LOCK_RECORD , &-> lock )) != 0) 263 ( t ); 265 lock = ->lock; 267 i(( t = `__qam_posi ( dbc , & -> o , DB_LOCK_WRITE , 268 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & exa )) != 0) { 270 () `__LPUT ( dbc , lock ); 271 ( t ); 274 i( exa !0 && ags = DB_NOOVERWRITE ) 275 t = DB_KEYEXIST ; 278 t = `__qam_pem ( dbc , 279 ( QPAGE *) -> ge , cp-> dx , cp-> o , da ); 282 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 283 t = t_t ; 284 i(( t_t = `__qam_ut ( dbp , 285 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 286 t = t_t ; 287 -> ge = NULL ; 288 -> lock =ock; 289 -> lock_mode = DB_LOCK_WRITE ; 290 i( t != 0) 291 ( t ); 294 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 300 wrock = 0; 301 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , 0, & ma )) != 0) 302 ( t ); 303 i(( t = `__db_lg ( dbc , LCK_COUPLE , 304 pg , DB_LOCK_READ , 0, & -> lock )) != 0) { 305 () `__memp_ut ( mpf , ma , dbc -> iܙy ); 306 ( t ); 309 code = 0; 310 w_cur = w_f = 0; 320 check : 321 i( ma -> f_o =ma-> cur_o ) { 322 w_f = -> o ; 323 w_cur = -> o + 1; 324 i( w_cur = RECNO_OOB ) 325 w_cur ++; 326 code | QAM_SETFIRST ; 327 code | QAM_SETCUR ; 329 i( `QAM_BEFORE_FIRST ( ma , -> o )) { 330 w_f = -> o ; 331 code | QAM_SETFIRST ; 334 i( `QAM_AFTER_CURRENT ( ma , -> o )) { 335 w_cur = -> o + 1; 336 i( w_cur = RECNO_OOB ) 337 w_cur ++; 338 code | QAM_SETCUR ; 342 i( code == 0) 343 de ; 346 i( wrock =0 && ( t = `__db_lg ( dbc , LCK_COUPLE_ALWAYS , 347 pg , DB_LOCK_WRITE , 0, & -> lock )) != 0) { 348 () `__memp_ut ( mpf , ma , dbc -> iܙy ); 349 ( t ); 351 i( wrock ++ == 0) 352 check ; 354 i((( t = `__memp_dty ( mpf , 355 & ma , dbc -> txn , dbc-> iܙy , DB_MPOOL_DIRTY )) != 0 || 356 ( `DBC_LOGGING ( dbc ) && 357 ( t = `__qam_mvr_log ( dbp , dbc -> txn , 358 & ma -> dbma . l , 0, code , ma-> f_o , 359 w_f , ma -> cur_o , w_cur , 360 & ma -> dbma . l , PGNO_BASE_MD )) != 0))) 361 code = 0; 363 i( code & QAM_SETCUR ) 364 ma -> cur_o = w_cur ; 365 i( code & QAM_SETFIRST ) 366 ma -> f_o = w_f ; 368 de : i(( t_t = `__memp_ut ( mpf , 369 ma , dbc -> iܙy )!0 && t == 0) 370 t = t_t ; 373 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 374 t = t_t ; 375 ( t ); 376 } } 385 $__qam_nd ( dbc , key , da ) 386 DBC * dbc ; 387 DBT * key , * da ; 389 DB * dbp ; 390 DB_LOCK lock ; 391 DB_MPOOLFILE * mpf ; 392 QMETA * ma ; 393 QPAGE * ge ; 394 QUEUE * qp ; 395 QUEUE_CURSOR * ; 396 db_pgno_t pg ; 397 db_o_t o ; 398 t , t_t ; 400 dbp = dbc ->dbp; 401 mpf = dbp ->mpf; 402 = ( QUEUE_CURSOR *) dbc -> ; 404 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 409 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , DB_MPOOL_DIRTY , & ma )) != 0) 410 ( t ); 412 i(( t = `__db_lg ( dbc , 0, pg , DB_LOCK_WRITE , 0, & lock )) != 0) { 413 () `__memp_ut ( mpf , ma , dbc -> iܙy ); 414 ( t ); 418 o = ma -> cur_o ; 419 ma -> cur_o ++; 420 i( ma -> cur_o = RECNO_OOB ) 421 ma -> cur_o ++; 422 i( ma -> cur_o =ma-> f_o ) { 423 ma -> cur_o --; 424 i( ma -> cur_o = RECNO_OOB ) 425 ma -> cur_o --; 426 t = `__LPUT ( dbc , lock ); 428 i( t == 0) 429 t = EFBIG ; 430 r ; 433 i( `QAM_BEFORE_FIRST ( ma , o )) 434 ma -> f_o = o ; 437 t = `__db_lg ( dbc , LCK_COUPLE_ALWAYS , 438 o , DB_LOCK_WRITE , DB_LOCK_RECORD , & lock ); 445 i( dbc -> dbp -> db_nd_o ! NULL && 446 ( t_t = dbc -> dbp -> `db_nd_o (dbc->dbp, da , o )) != 0 && 447 t == 0) 448 t = t_t ; 454 i( t != 0) { 455 () `__LPUT ( dbc , lock ); 456 r ; 459 -> lock =ock; 460 -> lock_mode = DB_LOCK_WRITE ; 462 pg = `QAM_RECNO_PAGE ( dbp , o ); 465 i(( t = `__db_lg ( dbc , 0, pg , DB_LOCK_WRITE , 0, & lock )) != 0) 466 r ; 467 i(( t = `__qam_fg ( dbp , & pg , dbc -> txn , 468 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ge )) != 0) { 470 () `__LPUT ( dbc , lock ); 471 r ; 475 i( ge -> pgno == 0) { 476 ge -> pgno = pg ; 477 ge -> ty = P_QAMDATA ; 481 t = `__qam_pem ( dbc , ge , 482 `QAM_RECNO_INDEX ( dbp , pg , o ),eo, da ); 485 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 486 t = t_t ; 488 i(( t_t = 489 `__qam_ut ( dbp , pg , ge , dbc -> iܙy )!0 && t == 0) 490 t = t_t ; 493 i( t =0 && key ! NULL ) 494 t = `__db_tcy ( dbp -> dbv , key , 495 & o , eo), & dbc -> rkey -> da , &dbc->rkey-> un ); 498 -> o =ecno; 501 qp = ( QUEUE * dbp -> q_ ; 502 i( qp -> ge_ext != 0 && 503 ( o % ( qp -> ge_ext * qp-> c_ge ) == 0 || 504 o = UINT32_MAX )) { 505 i(( t = `__db_lg ( dbc , 506 0, (( QUEUE *) dbp -> q_ )-> q_ma , 507 DB_LOCK_WRITE , 0, & lock )) != 0) 508 r ; 509 i(! `QAM_AFTER_CURRENT ( ma , o )) 510 t = `__qam_fo ( dbp , pg ); 511 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 512 t = t_t ; 515 r : 516 i(( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 517 t = t_t ; 519 ( t ); 520 } } 527 $__qamc_d ( dbc ) 528 DBC * dbc ; 530 DB * dbp ; 531 DBT da ; 532 DB_LOCK lock , mock ; 533 DB_MPOOLFILE * mpf ; 534 PAGE * g ; 535 QAMDATA * qp ; 536 QMETA * ma ; 537 QUEUE_CURSOR * ; 538 db_pgno_t pg ; 539 exa , t , t_t ; 541 dbp = dbc ->dbp; 542 mpf = dbp ->mpf; 543 = ( QUEUE_CURSOR *) dbc -> ; 544 `LOCK_INIT ( lock ); 546 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 551 i(( t = `__memp_fg ( mpf , & pg , dbc -> txn , 0, & ma )) != 0) 552 ( t ); 554 i(( t = `__db_lg ( dbc , 0, pg , DB_LOCK_READ , 0, & mock )) != 0) { 555 () `__memp_ut ( mpf , ma , dbc -> iܙy ); 556 ( t ); 559 i( `QAM_NOT_VALID ( ma , -> o )) 560 t = DB_NOTFOUND ; 563 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 564 t = t_t ; 566 i( t != 0) 567 r ; 569 i(( t = `__db_lg ( dbc , LCK_COUPLE , 570 -> o , DB_LOCK_WRITE , DB_LOCK_RECORD , &-> lock )) != 0) 571 r ; 572 -> lock_mode = DB_LOCK_WRITE ; 573 lock = ->lock; 576 i(( t = `__qam_posi ( dbc , & -> o , DB_LOCK_WRITE , 577 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & exa )) != 0) 578 r ; 580 i(! exa ) { 581 t = DB_NOTFOUND ; 582 r ; 585 g = -> ge ; 586 qp = `QAM_GET_RECORD ( dbp , g , -> dx ); 588 i( `DBC_LOGGING ( dbc )) { 589 i((( QUEUE *) dbp -> q_ )-> ge_ext == 0 || 590 (( QUEUE *) dbp -> q_ )-> _n == 0) { 591 i(( t = `__qam_d_log ( dbp , 592 dbc -> txn , & `LSN ( g ), 0, &LSN(pagep), 593 g -> pgno , -> dx , cp-> o )) != 0) 594 r ; 596 da . size = (( QUEUE *) dbp -> q_ )-> _n ; 597 da .d qp ->data; 598 i(( t = `__qam_dext_log ( dbp , 599 dbc -> txn , & `LSN ( g ), 0, &LSN(pagep), 600 g -> pgno , -> dx , cp-> o , & da )) != 0) 601 r ; 604 `LSN_NOT_LOGGED ( `LSN ( g )); 606 `F_CLR ( qp , QAM_VALID ); 616 i( -> o = ma -> f_o ) { 617 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 618 i(( t = 619 `__db_lg ( dbc , 0, pg , DB_LOCK_WRITE , 0, & mock )) != 0) 620 r ; 621 i( -> o = ma -> f_o ) 622 t = `__qam_csume ( dbc , ma , ma-> f_o ); 623 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 624 t = t_t ; 627 r : i(( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 628 t = t_t ; 629 i( -> ge ! NULL && 630 ( t_t = `__qam_ut ( dbp , 631 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 632 t = t_t ; 633 -> ge = NULL ; 636 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 637 t = t_t ; 638 -> lock =ock; 640 ( t ); 641 } } 643 #ifdef DEBUG_WOP 644 #QDEBUG ) 652 $__qamc_g ( dbc , key , da , ags , pgn ) 653 DBC * dbc ; 654 DBT * key , * da ; 655 u_t32_t ags ; 656 db_pgno_t * pgn ; 658 DB * dbp ; 659 DBC * dbcdup ; 660 DBT tmp ; 661 DB_ENV * dbv ; 662 DB_LOCK lock , pglock , mock ; 663 DB_MPOOLFILE * mpf ; 664 PAGE * pg ; 665 QAMDATA * qp ; 666 QMETA * ma ; 667 QUEUE * t ; 668 QUEUE_CURSOR * ; 669 db_lockmode_t lock_mode , ma_mode ; 670 db_pgno_t mno ; 671 db_o_t f ; 672 exa , d , is_f , locked , t , t_t , wa , wh_de ; 673 yg ; 675 dbp = dbc ->dbp; 676 dbv = dbp ->dbenv; 677 mpf = dbp ->mpf; 678 = ( QUEUE_CURSOR *) dbc -> ; 679 `LOCK_INIT ( lock ); 680 `LOCK_INIT ( pglock ); 682 lock_mode = `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 683 ma_mode = DB_LOCK_READ ; 684 ma = NULL ; 685 * pgn = 0; 686 pg = NULL ; 687 yg = t_t = wa = wh_de = 0; 689 i( ags = DB_CONSUME_WAIT ) { 690 wa = 1; 691 ags = DB_CONSUME ; 693 i( ags = DB_CONSUME ) { 694 wh_de = 1; 695 ags = DB_FIRST ; 696 ma_mode = lock_mode = DB_LOCK_WRITE ; 698 d = `F_ISSET ( dbp , DB_AM_INORDER && wh_de ; 700 `DEBUG_LREAD ( dbc , dbc-> txn , "qamc_get", 701 ags = DB_SET || fg= DB_SET_RANGE ? key : NULL , NULL, flags); 704 locked = 0; 706 is_f = 0; 707 f = 0; 709 t = ( QUEUE *) dbp -> q_ ; 710 mno = t -> q_ma ; 711 `LOCK_INIT ( mock ); 718 i(( t = `__memp_fg ( mpf , & mno , dbc -> txn , 0, & ma )) != 0) 719 ( t ); 721 g_xt : 722 ags ) { 723 DB_NEXT : 724 DB_NEXT_NODUP : 725 DB_FIRST : 726 DB_PREV : 727 DB_PREV_NODUP : 728 DB_LAST : 729 i(( t = `__db_lg ( dbc , 730 0, mno , ma_mode , 0, & mock )) != 0) 731 r ; 732 locked = 1; 739 i(( t = `__TLPUT ( dbc , -> lock )) != 0) 740 r ; 742 y : 743 ags ) { 744 DB_CURRENT : 746 DB_NEXT_DUP : 747 DB_PREV_DUP : 748 t = DB_NOTFOUND ; 749 r ; 751 DB_NEXT : 752 DB_NEXT_NODUP : 753 i( -> o ! RECNO_OOB ) { 754 ++ -> o ; 756 i( -> o = RECNO_OOB ) 757 -> o ++; 761 i( `QAM_AFTER_CURRENT ( ma , -> o )) { 762 pg = NULL ; 763 i(! wa ) { 764 t = DB_NOTFOUND ; 765 r ; 767 ags = DB_FIRST ; 774 i( f == 0) { 775 yg = 1; 776 y ; 779 i( `CDB_LOCKING ( dbv )) { 781 t = `__memp_ut ( mpf , 782 ma , dbc -> iܙy ); 783 ma = NULL ; 784 i( t != 0) 785 r ; 786 i(( t = `__lock_g ( 787 dbv , dbc -> lock , 788 DB_LOCK_SWITCH , & dbc -> lock_dbt , 789 DB_LOCK_WAIT , & dbc -> mylock )) != 0) 790 r ; 792 i(( t = `__memp_fg ( mpf , & mno , 793 dbc -> txn , 0, & ma )) != 0) 794 r ; 795 i(( t = `__lock_g ( 796 dbv , dbc -> lock , 797 DB_LOCK_UPGRADE , & dbc -> lock_dbt , 798 DB_LOCK_WRITE , & dbc -> mylock )) != 0) 799 r ; 800 y ; 808 i( locked == 0) { 809 i(( t = `__db_lg ( dbc , 0, mno , 810 ma_mode , 0, & mock )) != 0) 811 r ; 812 locked = 1; 813 i( -> o ! RECNO_OOB && 814 ! `QAM_AFTER_CURRENT ( ma , -> o )) 815 y ; 818 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 819 ma = NULL ; 820 i( t != 0) 821 r ; 822 i(( t = `__db_lg ( dbc , 823 0, mno , DB_LOCK_WAIT , 824 DB_LOCK_SWITCH , & mock )) != 0) { 825 i( t = DB_LOCK_DEADLOCK ) 826 t = DB_LOCK_NOTGRANTED ; 827 r ; 829 i(( t = `__memp_fg ( mpf , & mno , dbc -> txn , 830 0, & ma )) != 0) 831 r ; 832 i(( t = `__db_lg ( dbc , 0, 833 PGNO_INVALID , DB_LOCK_WRITE , 834 DB_LOCK_UPGRADE , & mock )) != 0) { 835 i( t = DB_LOCK_DEADLOCK ) 836 t = DB_LOCK_NOTGRANTED ; 837 r ; 839 locked = 1; 840 y ; 845 DB_FIRST : 846 ags = DB_NEXT ; 847 is_f = 1; 850 -> o = f = ma -> f_o ; 853 DB_PREV : 854 DB_PREV_NODUP : 855 i( -> o ! RECNO_OOB ) { 856 i( -> o = ma -> f_o || 857 `QAM_BEFORE_FIRST ( ma , -> o )) { 858 t = DB_NOTFOUND ; 859 r ; 861 -- -> o ; 863 i( -> o = RECNO_OOB ) 864 -- -> o ; 868 DB_LAST : 869 i( ma -> f_o =ma-> cur_o ) { 870 t = DB_NOTFOUND ; 871 r ; 873 -> o = ma -> cur_o - 1; 874 i( -> o = RECNO_OOB ) 875 -> o --; 877 DB_SET : 878 DB_SET_RANGE : 879 DB_GET_BOTH : 880 DB_GET_BOTH_RANGE : 881 i(( t = `__qam_gno ( dbp , key , & -> o )) != 0) 882 r ; 885 t = `__db_unknown_ag ( dbv , "__qamc_g", ags ); 886 r ; 890 i( locked ) { 891 i(( t = `__LPUT ( dbc , mock )) != 0) 892 r ; 893 locked = 0; 897 i((( t = `__db_lg ( dbc , LCK_COUPLE , -> o , lock_mode , 898 ( wh_de && ! d && ! yg ) ? 899 DB_LOCK_NOWAIT | DB_LOCK_RECORD : DB_LOCK_RECORD, 900 & lock )= DB_LOCK_DEADLOCK || t = DB_LOCK_NOTGRANTED ) && 901 wh_de ) { 902 #ifde QDEBUG 903 i( `DBC_LOGGING ( dbc )) 904 () `__log_tf ( dbv , 905 dbc -> txn , "Queue S: %x %d %d %d", 906 dbc -> lock ? dbc->lock-> id : 0, 907 -> o , f , ma -> f_o ); 909 f = 0; 910 i(( t = 911 `__db_lg ( dbc , 0, mno , ma_mode , 0, & mock )) != 0) 912 r ; 913 locked = 1; 914 y ; 917 i( t != 0) 918 r ; 928 ags ) { 930 i( d ) { 931 i( f ! -> o ) 933 } i( wh_de || ! is_f ) 936 DB_SET : 937 DB_SET_RANGE : 938 DB_GET_BOTH : 939 DB_GET_BOTH_RANGE : 940 DB_LAST : 941 i(( t = 942 `__db_lg ( dbc , 0, mno , ma_mode , 0, & mock )) != 0) 943 ˼ ; 944 locked = 1; 945 i(( is_f && -> o ! ma -> f_o ) || 946 ( ags = DB_LAST && -> o ! ma -> cur_o - 1)) { 947 i(( t = `__LPUT ( dbc , lock )) != 0) 948 r ; 949 i( is_f ) 950 ags = DB_FIRST ; 951 y ; 952 } i(! is_f && ags ! DB_LAST ) { 953 i( `QAM_BEFORE_FIRST ( ma , -> o )) { 954 i( ags = DB_SET_RANGE || 955 ags = DB_GET_BOTH_RANGE ) { 956 i(( t = `__LPUT ( dbc , mock )) != 0) 957 r ; 958 locked = 0; 959 -> lock =ock; 960 `LOCK_INIT ( lock ); 961 a_y ; 963 t = DB_NOTFOUND ; 964 ˼ ; 966 i( `QAM_AFTER_CURRENT ( ma , -> o )) { 967 t = DB_NOTFOUND ; 968 ˼ ; 972 i(( t = `__LPUT ( dbc , mock )) != 0) 973 r ; 974 locked = 0; 978 i(( t = `__qam_posi ( dbc , & -> o , 979 lock_mode , 0, & exa )) != 0) { 981 () `__LPUT ( dbc , lock ); 982 r ; 985 pg = -> ge ; 986 pglock = -> lock ; 987 -> lock =ock; 988 -> lock_mode =ock_mode; 989 `LOCK_INIT ( lock ); 991 i(! exa ) { 992 a_y : 993 i( pg ! NULL ) 994 () `__qam_ut ( dbp , -> pgno , pg , dbc -> iܙy ); 995 -> ge = pg = NULL ; 996 i(( t = `__LPUT ( dbc , pglock )) != 0) 997 r1 ; 998 i( wh_de ) { 999 i(( t = `__LPUT ( dbc , -> lock )) != 0) 1000 r1 ; 1001 } i(( t = `__TLPUT ( dbc , -> lock )) != 0) 1002 r1 ; 1010 ags ) { 1011 DB_NEXT : 1012 DB_NEXT_NODUP : 1013 i(! wh_de ) 1014 is_f = 0; 1015 i( `QAM_BEFORE_FIRST ( ma , -> o ) && 1016 `DONT_NEED_LOCKS ( dbc )) 1017 ags = DB_FIRST ; 1019 DB_LAST : 1020 DB_PREV : 1021 DB_PREV_NODUP : 1022 i( `QAM_AFTER_CURRENT ( ma , -> o ) && 1023 `DONT_NEED_LOCKS ( dbc )) 1024 ags = DB_LAST ; 1026 ags = DB_PREV ; 1029 DB_GET_BOTH_RANGE : 1030 DB_SET_RANGE : 1031 i( `QAM_BEFORE_FIRST ( ma , -> o ) && 1032 `DONT_NEED_LOCKS ( dbc )) 1033 ags = DB_FIRST ; 1035 ags = DB_NEXT ; 1040 t = DB_KEYEMPTY ; 1041 r1 ; 1043 yg = 0; 1044 g_xt ; 1047 qp = `QAM_GET_RECORD ( dbp , pg , -> dx ); 1050 i( ags = DB_GET_BOTH || fg= DB_GET_BOTH_RANGE ) { 1054 tmp . da = qp ->data; 1055 tmp . size = t -> _n ; 1056 i(( t = `__bam_defcmp ( dbp , da , & tmp )) != 0) { 1057 i( ags = DB_GET_BOTH_RANGE ) 1058 a_y ; 1059 t = DB_NOTFOUND ; 1060 r1 ; 1065 i( key ! NULL && ! `F_ISSET (key, DB_DBT_ISSET )) { 1066 i(( t = `__db_tcy ( dbp -> dbv , 1067 key , & -> o , (cp->recno), 1068 & dbc -> rkey -> da , &dbc->rkey-> un )) != 0) 1069 r1 ; 1070 `F_SET ( key , DB_DBT_ISSET ); 1073 i( da ! NULL && 1074 ! `F_ISSET ( dbc , DBC_MULTIPLE | DBC_MULTIPLE_KEY ) && 1075 ! `F_ISSET ( da , DB_DBT_ISSET )) { 1076 i(( t = `__db_tcy ( dbp -> dbv , da , qp ->da, t -> _n , 1077 & dbc -> rda -> da , &dbc->rda-> un )) != 0) 1078 r1 ; 1079 `F_SET ( da , DB_DBT_ISSET ); 1083 i( wh_de ) { 1090 `DB_ASSERT ( dbv , ! `F_ISSET ( dbp , DB_AM_SECONDARY )); 1092 i(( t = `__qam_dty ( dbp , -> pgno , &-> ge , 1093 dbc -> txn , dbc-> iܙy )) != 0) 1094 r1 ; 1095 pg = -> ge ; 1107 i( `LIST_FIRST (& dbp -> s_cds ! NULL ) { 1108 i(( t = `__dbc_idup ( dbc , 1109 & dbcdup , DB_POSITION )) != 0) 1110 r1 ; 1112 i(( t = `__dbc_d_imy ( dbcdup )) != 0) { 1117 () `__dbc_o ( dbcdup ); 1118 r1 ; 1121 i(( t = `__dbc_o ( dbcdup )) != 0) 1122 r1 ; 1125 i( `DBC_LOGGING ( dbc )) { 1126 i( t -> ge_ext =0 ||-> _n == 0) { 1127 i(( t = `__qam_d_log ( dbp , dbc -> txn , 1128 & `LSN ( pg ), 0, &LSN(pg), 1129 pg -> pgno , -> dx , cp-> o )) != 0) 1130 r1 ; 1132 tmp . da = qp ->data; 1133 tmp . size = t -> _n ; 1134 i(( t = `__qam_dext_log ( dbp , 1135 dbc -> txn , & `LSN ( pg ), 0, &LSN(pg), 1136 pg -> pgno , -> dx , cp-> o , & tmp )) != 0) 1137 r1 ; 1140 `LSN_NOT_LOGGED ( `LSN ( pg )); 1142 `F_CLR ( qp , QAM_VALID ); 1144 i(( t = `__LPUT ( dbc , pglock )) != 0) 1145 r1 ; 1159 i( locked =0 && ( t = `__db_lg ( 1160 dbc , 0, mno , ma_mode , 0, & mock )) != 0) 1161 r1 ; 1162 locked = 1; 1164 #ifde QDEBUG 1165 i( `DBC_LOGGING ( dbc )) 1166 () `__log_tf ( dbv , 1167 dbc -> txn , "Queue D: %x %d %d %d", 1168 dbc -> lock ? dbc->lock-> id : 0, 1169 -> o , f , ma -> f_o ); 1177 i( f == 0) 1178 f = -> o ; 1179 i( f ! ma -> f_o ) 1180 de ; 1182 i(( t = `__qam_csume ( dbc , ma , f )) != 0) 1183 r1 ; 1186 de : 1187 r1 : i( -> ge ! NULL ) { 1188 i(( t_t = `__qam_ut ( dbp , 1189 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 1190 t = t_t ; 1193 i(( t_t = `__LPUT ( dbc , pglock )!0 && t == 0) 1194 t = t_t ; 1195 -> ge = NULL ; 1198 ˼ : () `__LPUT ( dbc , lock ); 1201 r : i( ma ) { 1203 i(( t_t = `__memp_ut ( mpf , 1204 ma , dbc -> iܙy )!0 && t == 0) 1205 t = t_t ; 1208 i( locked ) 1209 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 1210 t = t_t ; 1212 `DB_ASSERT ( dbv , ! `LOCK_ISSET ( mock )); 1214 (( t = DB_LOCK_NOTGRANTED && 1215 ! `F_ISSET ( dbv , DB_ENV_TIME_NOTGRANTED )) ? 1216 DB_LOCK_DEADLOCK : t ); 1217 } } 1224 $__qam_csume ( dbc , ma , f ) 1225 DBC * dbc ; 1226 QMETA * ma ; 1227 db_o_t f ; 1229 DB * dbp ; 1230 DB_LOCK lock , ve_lock ; 1231 DB_MPOOLFILE * mpf ; 1232 QUEUE_CURSOR * ; 1233 db_dx_t ve_dx ; 1234 db_pgno_t ve_ge ; 1235 db_o_t cut , ve_o ; 1236 u_t32_t c_ex ; 1237 exa , t , t_t , wed ; 1239 dbp = dbc ->dbp; 1240 mpf = dbp ->mpf; 1241 = ( QUEUE_CURSOR *) dbc -> ; 1242 t = 0; 1244 ve_ge = -> pgno ; 1245 ve_dx = -> dx ; 1246 ve_o = -> o ; 1247 ve_lock = -> lock ; 1254 i( f ! -> o ) { 1255 t = `__db_lg ( dbc , 0, f , DB_LOCK_READ , 1256 DB_LOCK_NOWAIT | DB_LOCK_RECORD , & lock ); 1257 i( t = DB_LOCK_DEADLOCK ) { 1258 t = 0; 1259 de ; 1261 i( t != 0) 1262 de ; 1263 i(( t = 1264 `__qam_ut ( dbp , -> pgno , cp-> ge , dbc -> iܙy )) != 0) 1265 de ; 1266 -> ge = NULL ; 1267 i(( t = `__qam_posi ( dbc , 1268 & f , DB_LOCK_READ , 0, & exa )) != 0 ||xact != 0) { 1269 () `__LPUT ( dbc , lock ); 1270 de ; 1272 i(( t = `__LPUT ( dbc , lock )) != 0) 1273 de ; 1274 i(( t = `__LPUT ( dbc , -> lock )) != 0) 1275 de ; 1278 cut = ma -> cur_o ; 1279 wed = 0; 1280 i( f > cut ) 1281 wed = 1; 1282 c_ex = ma -> ge_ext * ma-> c_ge ; 1294 i( -> ge ! NULL && c_ex != 0 && 1295 (( exa = ( f % c_ex == 0)) || 1296 ( f % ma -> c_ge == 0) || 1297 f = UINT32_MAX )) { 1298 i( exa =1 && ( t = `__db_lg ( dbc , 1299 0, -> pgno , DB_LOCK_WRITE , 0, &-> lock )) != 0) 1301 #ifde QDEBUG 1302 i( `DBC_LOGGING ( dbc )) 1303 () `__log_tf ( dbp -> dbv , dbc -> txn , 1305 dbc -> lock ? dbc->lock-> id : 0, 1306 -> pgno , f , ma -> f_o ); 1308 i(( t = `__qam_ut ( dbp , 1309 -> pgno , cp-> ge , DB_PRIORITY_VERY_LOW )) != 0) 1311 -> ge = NULL ; 1313 i( exa == 1) { 1314 t = `__qam_emove ( dbp , -> pgno ); 1315 i(( t_t = 1316 `__LPUT ( dbc , -> lock )!0 && t == 0) 1317 t = t_t ; 1319 i( t != 0) 1321 } i( -> ge ! NULL && ( t = `__qam_ut ( dbp , 1322 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 1324 -> ge = NULL ; 1325 f ++; 1326 i( f = RECNO_OOB ) { 1327 wed = 0; 1328 f ++; 1335 i(! wed && f > cut ) 1338 t = `__db_lg ( dbc , 0, f , DB_LOCK_READ , 1339 DB_LOCK_NOWAIT | DB_LOCK_RECORD , & lock ); 1340 i( t = DB_LOCK_DEADLOCK ) { 1341 t = 0; 1344 i( t != 0) 1347 i(( t = `__qam_posi ( dbc , 1348 & f , DB_LOCK_READ , 0, & exa )) != 0) { 1349 () `__LPUT ( dbc , lock ); 1352 i(( t = `__LPUT ( dbc , lock )) != 0 || 1353 ( t = `__LPUT ( dbc , -> lock )!0 || exa ) { 1354 i(( t_t = `__qam_ut ( dbp , -> pgno , 1355 -> ge , dbc -> iܙy )!0 && t == 0) 1356 t = t_t ; 1357 -> ge = NULL ; 1362 -> pgno = ve_ge ; 1363 -> dx = ve_dx ; 1364 -> o = ve_o ; 1365 -> lock = ve_lock ; 1371 i( t =0 && ma -> f_o ! f ) { 1372 i(( t = `__memp_dty ( mpf , 1373 & ma , dbc -> txn , dbc-> iܙy , 0)) != 0) 1374 de ; 1375 #ifde QDEBUG 1376 i( `DBC_LOGGING ( dbc )) 1377 () `__log_tf ( dbp -> dbv , dbc -> txn , 1379 dbc -> lock ? dbc->lock-> id : 0, 1380 -> o , f , ma -> f_o ); 1382 i( `DBC_LOGGING ( dbc )) { 1383 i(( t = `__qam_cf_log ( dbp , 1384 dbc -> txn , & ma -> dbma . l , 0, 1385 -> o , PGNO_BASE_MD )) != 0) 1386 de ; 1388 `LSN_NOT_LOGGED ( ma -> dbma . l ); 1389 ma -> f_o = f ; 1392 de : 1393 ( t ); 1394 } } 1397 $__qam_bulk ( dbc , da , ags ) 1398 DBC * dbc ; 1399 DBT * da ; 1400 u_t32_t ags ; 1402 DB * dbp ; 1403 DB_LOCK mock , ock ; 1404 DB_MPOOLFILE * mpf ; 1405 PAGE * pg ; 1406 QMETA * ma ; 1407 QAMDATA * qp ; 1408 QUEUE_CURSOR * ; 1409 db_dx_t dx ; 1410 db_lockmode_t lkmode ; 1411 db_pgno_t mno ; 1412 u_t32_t * dp , * of ; 1413 u_t32_t gesize , _n , cs ; 1414 u_t8_t * dbuf , * dp , * ; 1415 exa , t , t_t , vid ; 1416 is_key , ed_pg , size , a ; 1418 dbp = dbc ->dbp; 1419 mpf = dbp ->mpf; 1420 = ( QUEUE_CURSOR *) dbc -> ; 1422 lkmode = `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 1424 gesize = dbp -> pgsize ; 1425 _n = (( QUEUE *) dbp -> q_ )->re_len; 1426 cs = (( QUEUE *) dbp -> q_ )-> c_ge ; 1427 mno = (( QUEUE *) dbp -> q_ )-> q_ma ; 1429 is_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1 : 0; 1430 size = 0; 1432 i(( t = `__db_lg ( dbc , 0, mno , DB_LOCK_READ , 0, & mock )) != 0) 1433 ( t ); 1434 i(( t = `__memp_fg ( mpf , & mno , dbc -> txn , 0, & ma )) != 0) { 1436 () `__LPUT ( dbc , mock ); 1437 ( t ); 1440 dbuf = da ->data; 1441 = dp = dbuf ; 1444 a = () da -> un ; 1445 a -()(* of ); 1448 dp = ( u_t32_t *)(( u_t8_t *) dbuf + da -> un ); 1449 dp --; 1450 of = dp ; 1452 ock = -> lock ; 1453 `LOCK_INIT ( -> lock ); 1455 xt_pg : 1457 i( -> o = RECNO_OOB ) 1458 -> o ++; 1459 i(( t = `__qam_posi ( dbc , & -> o , lkmode , 0, & exa )) != 0) 1460 de ; 1462 pg = -> ge ; 1463 dx = ->indx; 1464 ed_pg = 1; 1473 vid = 0; 1475 i( pg ! NULL ) { 1476 i(( t = `__db_lg ( dbc , LCK_COUPLE , 1477 -> o , lkmode , DB_LOCK_RECORD , & ock )) != 0) 1478 de ; 1479 qp = `QAM_GET_RECORD ( dbp , pg , dx ); 1480 i( `F_ISSET ( qp , QAM_VALID )) { 1481 vid = 1; 1482 a -= () 1483 (( is_key ? 3 : 2* (* of )); 1484 i( a < 0) 1485 g_a ; 1486 i( ed_pg ) { 1487 dp = ; 1488 size = () gesize - `QPAGE_SZ ( dbp ); 1489 i( a < size ) { 1490 g_a : 1491 i( of = dp ) { 1492 da -> size = ( u_t32_t ) 1493 `DB_ALIGN (( u_t32_t ) 1494 size + gesize , 1495 ( u_t32_t )); 1496 t = DB_BUFFER_SMALL ; 1499 i( dx != 0) 1500 dx --; 1501 -> o --; 1502 a = 0; 1505 `memy ( dp , 1506 ( u_t8_t *) pg + `QPAGE_SZ ( dbp ), 1507 ( u_t ) size ); 1508 ed_pg = 0; 1509 a - size ; 1510 + size ; 1512 i( is_key ) 1513 * of -- = -> o ; 1514 * of -- = ( u_t32_t )(((( u_t8_t *) qp - 1515 ( u_t8_t *) pg - `QPAGE_SZ ( dbp )) + 1516 ( dp - dbuf + `SSZA ( QAMDATA , da )); 1517 * of -- = _n ; 1520 i(! vid && is_key == 0) { 1521 * of -- = 0; 1522 * of -- = 0; 1524 -> o ++; 1525 } ++ dx < cs && -> o ! RECNO_OOB && 1526 ! `QAM_AFTER_CURRENT ( ma , -> o )); 1529 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 1530 t = t_t ; 1532 i( -> ge ! NULL ) { 1533 i(( t_t = `__qam_ut ( dbp , 1534 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 1535 t = t_t ; 1536 -> ge = NULL ; 1539 i( t =0 && a > 0 && 1540 ( dx > cs || -> o = RECNO_OOB ) && 1541 ! `QAM_AFTER_CURRENT ( ma , -> o )) 1542 xt_pg ; 1549 i( -> o = RECNO_OOB || ( a =0 && dx = cs )) 1550 -> o --; 1552 i( is_key == 1) 1553 * of = RECNO_OOB ; 1555 * of = ( u_t32_t )-1; 1557 de : 1558 i(( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 1559 t = t_t ; 1560 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 1561 t = t_t ; 1563 -> lock = ock ; 1565 ( t ); 1566 } } 1573 $__qamc_o ( dbc , ro_pgno , rmro ) 1574 DBC * dbc ; 1575 db_pgno_t ro_pgno ; 1576 * rmro ; 1578 QUEUE_CURSOR * ; 1579 t ; 1581 `COMPQUIET ( ro_pgno , 0); 1582 `COMPQUIET ( rmro , NULL ); 1584 = ( QUEUE_CURSOR *) dbc -> ; 1587 t = `__TLPUT ( dbc , -> lock ); 1589 `LOCK_INIT ( -> lock ); 1590 -> ge = NULL ; 1591 -> pgno = PGNO_INVALID ; 1592 -> dx = 0; 1593 -> lock_mode = DB_LOCK_NG ; 1594 -> o = RECNO_OOB ; 1595 -> ags = 0; 1597 ( t ); 1598 } } 1608 $__qamc_dup ( ig_dbc , w_dbc ) 1609 DBC * ig_dbc , * w_dbc ; 1611 QUEUE_CURSOR * ig , * w ; 1613 ig = ( QUEUE_CURSOR *) ig_dbc -> ; 1614 w = ( QUEUE_CURSOR *) w_dbc -> ; 1616 w -> o = ig ->recno; 1619 } } 1627 $__qamc_ ( dbc ) 1628 DBC * dbc ; 1630 QUEUE_CURSOR * ; 1631 DB * dbp ; 1632 t ; 1634 dbp = dbc ->dbp; 1637 = ( QUEUE_CURSOR *) dbc -> ; 1638 i( = NULL ) { 1639 i(( t = 1640 `__os_oc ( dbp -> dbv , 1, ( QUEUE_CURSOR ), & )) != 0) 1641 ( t ); 1642 dbc -> = ( DBC_INTERNAL *) ; 1646 dbc -> o = dbc-> c_o = __dbc_o_ ; 1647 dbc -> cou = dbc-> c_cou = __dbc_cou_ ; 1648 dbc -> d = dbc-> c_d = __dbc_d_ ; 1649 dbc -> dup = dbc-> c_dup = __dbc_dup_ ; 1650 dbc -> g = dbc-> c_g = __dbc_g_ ; 1651 dbc -> pg = dbc-> c_pg = __dbc_pg_ ; 1652 dbc -> put = dbc-> c_put = __dbc_put_ ; 1653 dbc -> am_bulk = __qam_bulk ; 1654 dbc -> am_o = __qamc_o ; 1655 dbc -> am_d = __qamc_d ; 1656 dbc -> am_deroy = __qamc_deroy ; 1657 dbc -> am_g = __qamc_g ; 1658 dbc -> am_put = __qamc_put ; 1659 dbc -> am_wrock = NULL ; 1662 } } 1669 $__qamc_deroy ( dbc ) 1670 DBC * dbc ; 1673 `__os_ ( dbc -> dbp -> dbv , dbc-> ); 1676 } } 1683 $__qam_gno ( dbp , key , p ) 1684 DB * dbp ; 1685 cڡ DBT * key ; 1686 db_o_t * p ; 1688 i((* p = *( db_o_t *) key -> da ) == 0) { 1689 `__db_rx ( dbp -> dbv , "illegalecordumber of 0"); 1690 ( EINVAL ); 1693 } } 1702 $__qam_un ( dbc , coup ) 1703 DBC * dbc ; 1704 u_t32_t * coup ; 1706 DB * dbp ; 1707 DB_LOCK mock ; 1708 DB_MPOOLFILE * mpf ; 1709 QMETA * ma ; 1710 db_pgno_t mno ; 1711 u_t32_t cou ; 1712 t , t_t ; 1714 dbp = dbc ->dbp; 1717 cou = 0; 1718 ( t = `__qamc_g ( dbc , NULL , NULL, DB_CONSUME , & mno )) == 0;) 1719 cou ++; 1720 i( t ! DB_NOTFOUND ) 1721 ( t ); 1724 mno = (( QUEUE *) dbp -> q_ )-> q_ma ; 1725 i(( t = 1726 `__db_lg ( dbc , 0, mno , DB_LOCK_WRITE , 0, & mock )) != 0) 1727 ( t ); 1729 mpf = dbp ->mpf; 1730 i(( t = `__memp_fg ( mpf , & mno , dbc -> txn , 1731 DB_MPOOL_DIRTY , & ma )) != 0) { 1733 () `__LPUT ( dbc , mock ); 1734 ( t ); 1737 i( ma -> cur_o > 1 && (( QUEUE *) dbp -> q_ )-> ge_ext != 0) { 1738 i(( t = `__qam_emove ( dbp , 1739 `QAM_RECNO_PAGE ( dbp , ma -> cur_o - 1))) != 0) 1740 ( t ); 1743 i( `DBC_LOGGING ( dbc )) { 1744 t = `__qam_mvr_log ( dbp , dbc -> txn , & ma -> dbma . l , 0, 1745 QAM_SETCUR | QAM_SETFIRST | QAM_TRUNCATE , ma -> f_o , 1746 1, ma -> cur_o , 1, &ma-> dbma . l , PGNO_BASE_MD ); 1748 `LSN_NOT_LOGGED ( ma -> dbma . l ); 1749 i( t == 0) 1750 ma -> f_o = ma-> cur_o = 1; 1752 i(( t_t = `__memp_ut ( mpf , ma , dbc -> iܙy )!0 && t == 0) 1753 t = t_t ; 1754 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 1755 t = t_t ; 1757 i( coup ! NULL ) 1758 * coup = cou ; 1760 ( t ); 1761 } } 1770 $__qam_de ( dbc , key ) 1771 DBC * dbc ; 1772 DBT * key ; 1774 QUEUE_CURSOR * ; 1775 t ; 1777 = ( QUEUE_CURSOR *) dbc -> ; 1778 i(( t = `__qam_gno ( dbc -> dbp , key , & -> o )) != 0) 1779 r ; 1781 t = `__qamc_d ( dbc ); 1783 r : ( t ); 1784 } } @../qam/qam_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/log.h " 11 ~"dbc/qam.h " 12 ~"dbc/txn.h " 19 $__qam_cf_log ( dbp , tx , t_lp , ags , o , ma_pgno ) 20 DB * dbp ; 21 DB_TXN * tx ; 22 DB_LSN * t_lp ; 23 u_t32_t ags ; 24 db_o_t o ; 25 db_pgno_t ma_pgno ; 27 DBT logc ; 28 DB_ENV * dbv ; 29 DB_TXNLOGREC * ; 30 DB_LSN * lp , nu_l , * p ; 31 u_t32_t ump , y , txn_num ; 32 u_t ad ; 33 u_t8_t * bp ; 34 is_dub , t ; 36 dbv = dbp ->dbenv; 37 `COMPQUIET ( , NULL ); 39 y = DB___qam_cf ; 40 ad = 0; 41 p = t_lp ; 43 t = 0; 45 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 46 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 47 i( tx = NULL ) 49 is_dub = 0; 51 is_dub = 1; 53 i( tx = NULL ) { 54 txn_num = 0; 55 lp = & nu_l ; 56 nu_l . fe =u_l. offt = 0; 58 i( `TAILQ_FIRST (& tx -> kids ! NULL && 59 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 60 ( t ); 67 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 68 txn_num = tx -> txnid ; 71 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 72 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 73 ( t = `__dbg_zy_id ( dbp )) != 0) 74 ( t ); 76 logc . size = ( y + ( txn_num + ( DB_LSN ) 77 + ( u_t32_t ) 78 + ( u_t32_t ) 79 + ( u_t32_t ); 80 i( `CRYPTO_ON ( dbv )) { 81 ad = 82 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 83 logc . size + ad ; 86 i( is_dub || tx = NULL ) { 87 i(( t = 88 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 89 ( t ); 91 i(( t = `__os_mloc ( dbv , 92 logc . size + ( DB_TXNLOGREC ), & )) != 0) 93 ( t ); 94 #ifde DIAGNOSTIC 95 i(( t = 96 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 97 `__os_ ( dbv , ); 98 ( t ); 101 logc . da = ->data; 104 i( ad > 0) 105 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 107 bp = logc . da ; 109 `memy ( bp , & y , (rectype)); 110 bp +( y ); 112 `memy ( bp , & txn_num , (txn_num)); 113 bp +( txn_num ); 115 `memy ( bp , lp , ( DB_LSN )); 116 bp +( DB_LSN ); 118 ump = ( u_t32_t ) dbp -> log_fame -> id ; 119 `memy ( bp , & ump , (uinttmp)); 120 bp +( ump ); 122 ump = ( u_t32_t ) o ; 123 `memy ( bp , & ump , (uinttmp)); 124 bp +( ump ); 126 ump = ( u_t32_t ) ma_pgno ; 127 `memy ( bp , & ump , (uinttmp)); 128 bp +( ump ); 130 `DB_ASSERT ( dbv , 131 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 133 i( is_dub || tx = NULL ) { 134 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 135 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 136 * lp = * p ; 137 i( p ! t_lp ) 138 * t_lp = * p ; 141 t = 0; 142 #ifde DIAGNOSTIC 147 `memy ( -> da , logc .da,ogc. size ); 148 y | DB_debug_FLAG ; 149 `memy ( logc . da , & y , (rectype)); 151 i(! `IS_REP_CLIENT ( dbv )) 152 t = `__log_put ( dbv , 153 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 155 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 156 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 157 `LSN_NOT_LOGGED (* t_lp ); 160 #ifde LOG_DIAGNOSTIC 161 i( t != 0) 162 () `__qam_cf_t ( dbv , 163 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 166 #ifde DIAGNOSTIC 167 `__os_ ( dbv , logc . da ); 169 i( is_dub || tx = NULL ) 170 `__os_ ( dbv , logc . da ); 172 ( t ); 173 } } 180 $__qam_cf_ad ( dbv , cbuf , g ) 181 DB_ENV * dbv ; 182 * cbuf ; 183 __qam_cf_gs ** g ; 185 __qam_cf_gs * gp ; 186 u_t32_t ump ; 187 u_t8_t * bp ; 188 t ; 190 i(( t = `__os_mloc ( dbv , 191 ( __qam_cf_gs + ( DB_TXN ), & gp )) != 0) 192 ( t ); 193 bp = cbuf ; 194 gp -> tx = ( DB_TXN *)&argp[1]; 195 `memt ( gp -> tx , 0, ( DB_TXN )); 197 `memy (& gp -> ty , bp , (argp->type)); 198 bp +( gp -> ty ); 200 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 201 bp +( gp -> tx -> txnid ); 203 `memy (& gp -> ev_l , bp , ( DB_LSN )); 204 bp +( DB_LSN ); 206 `memy (& ump , bp , (uinttmp)); 207 gp -> feid = ( t32_t ) ump ; 208 bp +( ump ); 210 `memy (& ump , bp , (uinttmp)); 211 gp -> o = ( db_o_t ) ump ; 212 bp +( ump ); 214 `memy (& ump , bp , (uinttmp)); 215 gp -> ma_pgno = ( db_pgno_t ) ump ; 216 bp +( ump ); 218 * g = gp ; 220 } } 228 $__qam_mvr_log ( dbp , tx , t_lp , ags , 229 code , d_f , w_f , d_cur , w_cur , 230 m , ma_pgno ) 231 DB * dbp ; 232 DB_TXN * tx ; 233 DB_LSN * t_lp ; 234 u_t32_t ags ; 235 u_t32_t code ; 236 db_o_t d_f ; 237 db_o_t w_f ; 238 db_o_t d_cur ; 239 db_o_t w_cur ; 240 DB_LSN * m ; 241 db_pgno_t ma_pgno ; 243 DBT logc ; 244 DB_ENV * dbv ; 245 DB_TXNLOGREC * ; 246 DB_LSN * lp , nu_l , * p ; 247 u_t32_t ump , y , txn_num ; 248 u_t ad ; 249 u_t8_t * bp ; 250 is_dub , t ; 252 dbv = dbp ->dbenv; 253 `COMPQUIET ( , NULL ); 255 y = DB___qam_mvr ; 256 ad = 0; 257 p = t_lp ; 259 t = 0; 261 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 262 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 263 i( tx = NULL ) 265 is_dub = 0; 267 is_dub = 1; 269 i( tx = NULL ) { 270 txn_num = 0; 271 lp = & nu_l ; 272 nu_l . fe =u_l. offt = 0; 274 i( `TAILQ_FIRST (& tx -> kids ! NULL && 275 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 276 ( t ); 283 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 284 txn_num = tx -> txnid ; 287 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 288 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 289 ( t = `__dbg_zy_id ( dbp )) != 0) 290 ( t ); 292 logc . size = ( y + ( txn_num + ( DB_LSN ) 293 + ( u_t32_t ) 294 + ( u_t32_t ) 295 + ( u_t32_t ) 296 + ( u_t32_t ) 297 + ( u_t32_t ) 298 + ( u_t32_t ) 299 + (* m ) 300 + ( u_t32_t ); 301 i( `CRYPTO_ON ( dbv )) { 302 ad = 303 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 304 logc . size + ad ; 307 i( is_dub || tx = NULL ) { 308 i(( t = 309 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 310 ( t ); 312 i(( t = `__os_mloc ( dbv , 313 logc . size + ( DB_TXNLOGREC ), & )) != 0) 314 ( t ); 315 #ifde DIAGNOSTIC 316 i(( t = 317 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 318 `__os_ ( dbv , ); 319 ( t ); 322 logc . da = ->data; 325 i( ad > 0) 326 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 328 bp = logc . da ; 330 `memy ( bp , & y , (rectype)); 331 bp +( y ); 333 `memy ( bp , & txn_num , (txn_num)); 334 bp +( txn_num ); 336 `memy ( bp , lp , ( DB_LSN )); 337 bp +( DB_LSN ); 339 ump = ( u_t32_t ) code ; 340 `memy ( bp , & ump , (uinttmp)); 341 bp +( ump ); 343 ump = ( u_t32_t ) dbp -> log_fame -> id ; 344 `memy ( bp , & ump , (uinttmp)); 345 bp +( ump ); 347 ump = ( u_t32_t ) d_f ; 348 `memy ( bp , & ump , (uinttmp)); 349 bp +( ump ); 351 ump = ( u_t32_t ) w_f ; 352 `memy ( bp , & ump , (uinttmp)); 353 bp +( ump ); 355 ump = ( u_t32_t ) d_cur ; 356 `memy ( bp , & ump , (uinttmp)); 357 bp +( ump ); 359 ump = ( u_t32_t ) w_cur ; 360 `memy ( bp , & ump , (uinttmp)); 361 bp +( ump ); 363 i( m ! NULL ) { 364 i( tx ! NULL ) { 365 LOG * = dbv -> lg_hd -> gfo . imy ; 366 i( `LOG_COMPARE ( m , & -> l >0 && ( t = 367 `__log_check_ge_l ( dbv , dbp , m ) != 0)) 368 ( t ); 370 `memy ( bp , m , (*metalsn)); 372 `memt ( bp , 0, (* m )); 373 bp +(* m ); 375 ump = ( u_t32_t ) ma_pgno ; 376 `memy ( bp , & ump , (uinttmp)); 377 bp +( ump ); 379 `DB_ASSERT ( dbv , 380 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 382 i( is_dub || tx = NULL ) { 383 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 384 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 385 * lp = * p ; 386 i( p ! t_lp ) 387 * t_lp = * p ; 390 t = 0; 391 #ifde DIAGNOSTIC 396 `memy ( -> da , logc .da,ogc. size ); 397 y | DB_debug_FLAG ; 398 `memy ( logc . da , & y , (rectype)); 400 i(! `IS_REP_CLIENT ( dbv )) 401 t = `__log_put ( dbv , 402 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 404 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 405 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 406 `LSN_NOT_LOGGED (* t_lp ); 409 #ifde LOG_DIAGNOSTIC 410 i( t != 0) 411 () `__qam_mvr_t ( dbv , 412 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 415 #ifde DIAGNOSTIC 416 `__os_ ( dbv , logc . da ); 418 i( is_dub || tx = NULL ) 419 `__os_ ( dbv , logc . da ); 421 ( t ); 422 } } 428 $__qam_mvr_ad ( dbv , cbuf , g ) 429 DB_ENV * dbv ; 430 * cbuf ; 431 __qam_mvr_gs ** g ; 433 __qam_mvr_gs * gp ; 434 u_t32_t ump ; 435 u_t8_t * bp ; 436 t ; 438 i(( t = `__os_mloc ( dbv , 439 ( __qam_mvr_gs + ( DB_TXN ), & gp )) != 0) 440 ( t ); 441 bp = cbuf ; 442 gp -> tx = ( DB_TXN *)&argp[1]; 443 `memt ( gp -> tx , 0, ( DB_TXN )); 445 `memy (& gp -> ty , bp , (argp->type)); 446 bp +( gp -> ty ); 448 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 449 bp +( gp -> tx -> txnid ); 451 `memy (& gp -> ev_l , bp , ( DB_LSN )); 452 bp +( DB_LSN ); 454 `memy (& ump , bp , (uinttmp)); 455 gp -> code = ( u_t32_t ) ump ; 456 bp +( ump ); 458 `memy (& ump , bp , (uinttmp)); 459 gp -> feid = ( t32_t ) ump ; 460 bp +( ump ); 462 `memy (& ump , bp , (uinttmp)); 463 gp -> d_f = ( db_o_t ) ump ; 464 bp +( ump ); 466 `memy (& ump , bp , (uinttmp)); 467 gp -> w_f = ( db_o_t ) ump ; 468 bp +( ump ); 470 `memy (& ump , bp , (uinttmp)); 471 gp -> d_cur = ( db_o_t ) ump ; 472 bp +( ump ); 474 `memy (& ump , bp , (uinttmp)); 475 gp -> w_cur = ( db_o_t ) ump ; 476 bp +( ump ); 478 `memy (& gp -> m , bp , (argp->metalsn)); 479 bp +( gp -> m ); 481 `memy (& ump , bp , (uinttmp)); 482 gp -> ma_pgno = ( db_pgno_t ) ump ; 483 bp +( ump ); 485 * g = gp ; 487 } } 494 $__qam_d_log ( dbp , tx , t_lp , ags , l , pgno , dx , o ) 495 DB * dbp ; 496 DB_TXN * tx ; 497 DB_LSN * t_lp ; 498 u_t32_t ags ; 499 DB_LSN * l ; 500 db_pgno_t pgno ; 501 u_t32_t dx ; 502 db_o_t o ; 504 DBT logc ; 505 DB_ENV * dbv ; 506 DB_TXNLOGREC * ; 507 DB_LSN * lp , nu_l , * p ; 508 u_t32_t ump , y , txn_num ; 509 u_t ad ; 510 u_t8_t * bp ; 511 is_dub , t ; 513 dbv = dbp ->dbenv; 514 `COMPQUIET ( , NULL ); 516 y = DB___qam_d ; 517 ad = 0; 518 p = t_lp ; 520 t = 0; 522 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 523 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 524 i( tx = NULL ) 526 is_dub = 0; 528 is_dub = 1; 530 i( tx = NULL ) { 531 txn_num = 0; 532 lp = & nu_l ; 533 nu_l . fe =u_l. offt = 0; 535 i( `TAILQ_FIRST (& tx -> kids ! NULL && 536 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 537 ( t ); 544 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 545 txn_num = tx -> txnid ; 548 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 549 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 550 ( t = `__dbg_zy_id ( dbp )) != 0) 551 ( t ); 553 logc . size = ( y + ( txn_num + ( DB_LSN ) 554 + ( u_t32_t ) 555 + (* l ) 556 + ( u_t32_t ) 557 + ( u_t32_t ) 558 + ( u_t32_t ); 559 i( `CRYPTO_ON ( dbv )) { 560 ad = 561 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 562 logc . size + ad ; 565 i( is_dub || tx = NULL ) { 566 i(( t = 567 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 568 ( t ); 570 i(( t = `__os_mloc ( dbv , 571 logc . size + ( DB_TXNLOGREC ), & )) != 0) 572 ( t ); 573 #ifde DIAGNOSTIC 574 i(( t = 575 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 576 `__os_ ( dbv , ); 577 ( t ); 580 logc . da = ->data; 583 i( ad > 0) 584 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 586 bp = logc . da ; 588 `memy ( bp , & y , (rectype)); 589 bp +( y ); 591 `memy ( bp , & txn_num , (txn_num)); 592 bp +( txn_num ); 594 `memy ( bp , lp , ( DB_LSN )); 595 bp +( DB_LSN ); 597 ump = ( u_t32_t ) dbp -> log_fame -> id ; 598 `memy ( bp , & ump , (uinttmp)); 599 bp +( ump ); 601 i( l ! NULL ) { 602 i( tx ! NULL ) { 603 LOG * = dbv -> lg_hd -> gfo . imy ; 604 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 605 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 606 ( t ); 608 `memy ( bp , l , (*lsn)); 610 `memt ( bp , 0, (* l )); 611 bp +(* l ); 613 ump = ( u_t32_t ) pgno ; 614 `memy ( bp , & ump , (uinttmp)); 615 bp +( ump ); 617 ump = ( u_t32_t ) dx ; 618 `memy ( bp , & ump , (uinttmp)); 619 bp +( ump ); 621 ump = ( u_t32_t ) o ; 622 `memy ( bp , & ump , (uinttmp)); 623 bp +( ump ); 625 `DB_ASSERT ( dbv , 626 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 628 i( is_dub || tx = NULL ) { 629 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 630 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 631 * lp = * p ; 632 i( p ! t_lp ) 633 * t_lp = * p ; 636 t = 0; 637 #ifde DIAGNOSTIC 642 `memy ( -> da , logc .da,ogc. size ); 643 y | DB_debug_FLAG ; 644 `memy ( logc . da , & y , (rectype)); 646 i(! `IS_REP_CLIENT ( dbv )) 647 t = `__log_put ( dbv , 648 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 650 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 651 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 652 `LSN_NOT_LOGGED (* t_lp ); 655 #ifde LOG_DIAGNOSTIC 656 i( t != 0) 657 () `__qam_d_t ( dbv , 658 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 661 #ifde DIAGNOSTIC 662 `__os_ ( dbv , logc . da ); 664 i( is_dub || tx = NULL ) 665 `__os_ ( dbv , logc . da ); 667 ( t ); 668 } } 674 $__qam_d_ad ( dbv , cbuf , g ) 675 DB_ENV * dbv ; 676 * cbuf ; 677 __qam_d_gs ** g ; 679 __qam_d_gs * gp ; 680 u_t32_t ump ; 681 u_t8_t * bp ; 682 t ; 684 i(( t = `__os_mloc ( dbv , 685 ( __qam_d_gs + ( DB_TXN ), & gp )) != 0) 686 ( t ); 687 bp = cbuf ; 688 gp -> tx = ( DB_TXN *)&argp[1]; 689 `memt ( gp -> tx , 0, ( DB_TXN )); 691 `memy (& gp -> ty , bp , (argp->type)); 692 bp +( gp -> ty ); 694 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 695 bp +( gp -> tx -> txnid ); 697 `memy (& gp -> ev_l , bp , ( DB_LSN )); 698 bp +( DB_LSN ); 700 `memy (& ump , bp , (uinttmp)); 701 gp -> feid = ( t32_t ) ump ; 702 bp +( ump ); 704 `memy (& gp -> l , bp , (argp->lsn)); 705 bp +( gp -> l ); 707 `memy (& ump , bp , (uinttmp)); 708 gp -> pgno = ( db_pgno_t ) ump ; 709 bp +( ump ); 711 `memy (& ump , bp , (uinttmp)); 712 gp -> dx = ( u_t32_t ) ump ; 713 bp +( ump ); 715 `memy (& ump , bp , (uinttmp)); 716 gp -> o = ( db_o_t ) ump ; 717 bp +( ump ); 719 * g = gp ; 721 } } 729 $__qam_add_log ( dbp , tx , t_lp , ags , l , pgno , dx , o , da , 730 vag , dda ) 731 DB * dbp ; 732 DB_TXN * tx ; 733 DB_LSN * t_lp ; 734 u_t32_t ags ; 735 DB_LSN * l ; 736 db_pgno_t pgno ; 737 u_t32_t dx ; 738 db_o_t o ; 739 cڡ DBT * da ; 740 u_t32_t vag ; 741 cڡ DBT * dda ; 743 DBT logc ; 744 DB_ENV * dbv ; 745 DB_TXNLOGREC * ; 746 DB_LSN * lp , nu_l , * p ; 747 u_t32_t zo , ump , y , txn_num ; 748 u_t ad ; 749 u_t8_t * bp ; 750 is_dub , t ; 752 dbv = dbp ->dbenv; 753 `COMPQUIET ( , NULL ); 755 y = DB___qam_add ; 756 ad = 0; 757 p = t_lp ; 759 t = 0; 761 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 762 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 763 i( tx = NULL ) 765 is_dub = 0; 767 is_dub = 1; 769 i( tx = NULL ) { 770 txn_num = 0; 771 lp = & nu_l ; 772 nu_l . fe =u_l. offt = 0; 774 i( `TAILQ_FIRST (& tx -> kids ! NULL && 775 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 776 ( t ); 783 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 784 txn_num = tx -> txnid ; 787 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 788 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 789 ( t = `__dbg_zy_id ( dbp )) != 0) 790 ( t ); 792 logc . size = ( y + ( txn_num + ( DB_LSN ) 793 + ( u_t32_t ) 794 + (* l ) 795 + ( u_t32_t ) 796 + ( u_t32_t ) 797 + ( u_t32_t ) 798 + ( u_t32_t + ( da = NULL ? 0 : da-> size ) 799 + ( u_t32_t ) 800 + ( u_t32_t + ( dda = NULL ? 0 : oldda-> size ); 801 i( `CRYPTO_ON ( dbv )) { 802 ad = 803 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 804 logc . size + ad ; 807 i( is_dub || tx = NULL ) { 808 i(( t = 809 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 810 ( t ); 812 i(( t = `__os_mloc ( dbv , 813 logc . size + ( DB_TXNLOGREC ), & )) != 0) 814 ( t ); 815 #ifde DIAGNOSTIC 816 i(( t = 817 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 818 `__os_ ( dbv , ); 819 ( t ); 822 logc . da = ->data; 825 i( ad > 0) 826 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 828 bp = logc . da ; 830 `memy ( bp , & y , (rectype)); 831 bp +( y ); 833 `memy ( bp , & txn_num , (txn_num)); 834 bp +( txn_num ); 836 `memy ( bp , lp , ( DB_LSN )); 837 bp +( DB_LSN ); 839 ump = ( u_t32_t ) dbp -> log_fame -> id ; 840 `memy ( bp , & ump , (uinttmp)); 841 bp +( ump ); 843 i( l ! NULL ) { 844 i( tx ! NULL ) { 845 LOG * = dbv -> lg_hd -> gfo . imy ; 846 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 847 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 848 ( t ); 850 `memy ( bp , l , (*lsn)); 852 `memt ( bp , 0, (* l )); 853 bp +(* l ); 855 ump = ( u_t32_t ) pgno ; 856 `memy ( bp , & ump , (uinttmp)); 857 bp +( ump ); 859 ump = ( u_t32_t ) dx ; 860 `memy ( bp , & ump , (uinttmp)); 861 bp +( ump ); 863 ump = ( u_t32_t ) o ; 864 `memy ( bp , & ump , (uinttmp)); 865 bp +( ump ); 867 i( da = NULL ) { 868 zo = 0; 869 `memy ( bp , & zo , ( u_t32_t )); 870 bp +( u_t32_t ); 872 `memy ( bp , & da -> size , (data->size)); 873 bp +( da -> size ); 874 `memy ( bp , da ->da, da-> size ); 875 bp + da -> size ; 878 ump = ( u_t32_t ) vag ; 879 `memy ( bp , & ump , (uinttmp)); 880 bp +( ump ); 882 i( dda = NULL ) { 883 zo = 0; 884 `memy ( bp , & zo , ( u_t32_t )); 885 bp +( u_t32_t ); 887 `memy ( bp , & dda -> size , (olddata->size)); 888 bp +( dda -> size ); 889 `memy ( bp , dda -> da , oldda-> size ); 890 bp + dda -> size ; 893 `DB_ASSERT ( dbv , 894 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 896 i( is_dub || tx = NULL ) { 897 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 898 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 899 * lp = * p ; 900 i( p ! t_lp ) 901 * t_lp = * p ; 904 t = 0; 905 #ifde DIAGNOSTIC 910 `memy ( -> da , logc .da,ogc. size ); 911 y | DB_debug_FLAG ; 912 `memy ( logc . da , & y , (rectype)); 914 i(! `IS_REP_CLIENT ( dbv )) 915 t = `__log_put ( dbv , 916 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 918 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 919 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 920 `LSN_NOT_LOGGED (* t_lp ); 923 #ifde LOG_DIAGNOSTIC 924 i( t != 0) 925 () `__qam_add_t ( dbv , 926 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 929 #ifde DIAGNOSTIC 930 `__os_ ( dbv , logc . da ); 932 i( is_dub || tx = NULL ) 933 `__os_ ( dbv , logc . da ); 935 ( t ); 936 } } 942 $__qam_add_ad ( dbv , cbuf , g ) 943 DB_ENV * dbv ; 944 * cbuf ; 945 __qam_add_gs ** g ; 947 __qam_add_gs * gp ; 948 u_t32_t ump ; 949 u_t8_t * bp ; 950 t ; 952 i(( t = `__os_mloc ( dbv , 953 ( __qam_add_gs + ( DB_TXN ), & gp )) != 0) 954 ( t ); 955 bp = cbuf ; 956 gp -> tx = ( DB_TXN *)&argp[1]; 957 `memt ( gp -> tx , 0, ( DB_TXN )); 959 `memy (& gp -> ty , bp , (argp->type)); 960 bp +( gp -> ty ); 962 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 963 bp +( gp -> tx -> txnid ); 965 `memy (& gp -> ev_l , bp , ( DB_LSN )); 966 bp +( DB_LSN ); 968 `memy (& ump , bp , (uinttmp)); 969 gp -> feid = ( t32_t ) ump ; 970 bp +( ump ); 972 `memy (& gp -> l , bp , (argp->lsn)); 973 bp +( gp -> l ); 975 `memy (& ump , bp , (uinttmp)); 976 gp -> pgno = ( db_pgno_t ) ump ; 977 bp +( ump ); 979 `memy (& ump , bp , (uinttmp)); 980 gp -> dx = ( u_t32_t ) ump ; 981 bp +( ump ); 983 `memy (& ump , bp , (uinttmp)); 984 gp -> o = ( db_o_t ) ump ; 985 bp +( ump ); 987 `memt (& gp -> da , 0, (argp->data)); 988 `memy (& gp -> da . size , bp , ( u_t32_t )); 989 bp +( u_t32_t ); 990 gp -> da .d bp ; 991 bp + gp -> da . size ; 993 `memy (& ump , bp , (uinttmp)); 994 gp -> vag = ( u_t32_t ) ump ; 995 bp +( ump ); 997 `memt (& gp -> dda , 0, (argp->olddata)); 998 `memy (& gp -> dda . size , bp , ( u_t32_t )); 999 bp +( u_t32_t ); 1000 gp -> dda . da = bp ; 1001 bp + gp -> dda . size ; 1003 * g = gp ; 1005 } } 1013 $__qam_dext_log ( dbp , tx , t_lp , ags , l , pgno , dx , o , da ) 1014 DB * dbp ; 1015 DB_TXN * tx ; 1016 DB_LSN * t_lp ; 1017 u_t32_t ags ; 1018 DB_LSN * l ; 1019 db_pgno_t pgno ; 1020 u_t32_t dx ; 1021 db_o_t o ; 1022 cڡ DBT * da ; 1024 DBT logc ; 1025 DB_ENV * dbv ; 1026 DB_TXNLOGREC * ; 1027 DB_LSN * lp , nu_l , * p ; 1028 u_t32_t zo , ump , y , txn_num ; 1029 u_t ad ; 1030 u_t8_t * bp ; 1031 is_dub , t ; 1033 dbv = dbp ->dbenv; 1034 `COMPQUIET ( , NULL ); 1036 y = DB___qam_dext ; 1037 ad = 0; 1038 p = t_lp ; 1040 t = 0; 1042 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1043 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1044 i( tx = NULL ) 1046 is_dub = 0; 1048 is_dub = 1; 1050 i( tx = NULL ) { 1051 txn_num = 0; 1052 lp = & nu_l ; 1053 nu_l . fe =u_l. offt = 0; 1055 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1056 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1057 ( t ); 1064 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1065 txn_num = tx -> txnid ; 1068 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 1069 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1070 ( t = `__dbg_zy_id ( dbp )) != 0) 1071 ( t ); 1073 logc . size = ( y + ( txn_num + ( DB_LSN ) 1074 + ( u_t32_t ) 1075 + (* l ) 1076 + ( u_t32_t ) 1077 + ( u_t32_t ) 1078 + ( u_t32_t ) 1079 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 1080 i( `CRYPTO_ON ( dbv )) { 1081 ad = 1082 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1083 logc . size + ad ; 1086 i( is_dub || tx = NULL ) { 1087 i(( t = 1088 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1089 ( t ); 1091 i(( t = `__os_mloc ( dbv , 1092 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1093 ( t ); 1094 #ifde DIAGNOSTIC 1095 i(( t = 1096 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1097 `__os_ ( dbv , ); 1098 ( t ); 1101 logc . da = ->data; 1104 i( ad > 0) 1105 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1107 bp = logc . da ; 1109 `memy ( bp , & y , (rectype)); 1110 bp +( y ); 1112 `memy ( bp , & txn_num , (txn_num)); 1113 bp +( txn_num ); 1115 `memy ( bp , lp , ( DB_LSN )); 1116 bp +( DB_LSN ); 1118 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1119 `memy ( bp , & ump , (uinttmp)); 1120 bp +( ump ); 1122 i( l ! NULL ) { 1123 i( tx ! NULL ) { 1124 LOG * = dbv -> lg_hd -> gfo . imy ; 1125 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1126 `__log_check_ge_l ( dbv , dbp , l ) != 0)) 1127 ( t ); 1129 `memy ( bp , l , (*lsn)); 1131 `memt ( bp , 0, (* l )); 1132 bp +(* l ); 1134 ump = ( u_t32_t ) pgno ; 1135 `memy ( bp , & ump , (uinttmp)); 1136 bp +( ump ); 1138 ump = ( u_t32_t ) dx ; 1139 `memy ( bp , & ump , (uinttmp)); 1140 bp +( ump ); 1142 ump = ( u_t32_t ) o ; 1143 `memy ( bp , & ump , (uinttmp)); 1144 bp +( ump ); 1146 i( da = NULL ) { 1147 zo = 0; 1148 `memy ( bp , & zo , ( u_t32_t )); 1149 bp +( u_t32_t ); 1151 `memy ( bp , & da -> size , (data->size)); 1152 bp +( da -> size ); 1153 `memy ( bp , da ->da, da-> size ); 1154 bp + da -> size ; 1157 `DB_ASSERT ( dbv , 1158 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1160 i( is_dub || tx = NULL ) { 1161 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1162 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1163 * lp = * p ; 1164 i( p ! t_lp ) 1165 * t_lp = * p ; 1168 t = 0; 1169 #ifde DIAGNOSTIC 1174 `memy ( -> da , logc .da,ogc. size ); 1175 y | DB_debug_FLAG ; 1176 `memy ( logc . da , & y , (rectype)); 1178 i(! `IS_REP_CLIENT ( dbv )) 1179 t = `__log_put ( dbv , 1180 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1182 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1183 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1184 `LSN_NOT_LOGGED (* t_lp ); 1187 #ifde LOG_DIAGNOSTIC 1188 i( t != 0) 1189 () `__qam_dext_t ( dbv , 1190 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1193 #ifde DIAGNOSTIC 1194 `__os_ ( dbv , logc . da ); 1196 i( is_dub || tx = NULL ) 1197 `__os_ ( dbv , logc . da ); 1199 ( t ); 1200 } } 1206 $__qam_dext_ad ( dbv , cbuf , g ) 1207 DB_ENV * dbv ; 1208 * cbuf ; 1209 __qam_dext_gs ** g ; 1211 __qam_dext_gs * gp ; 1212 u_t32_t ump ; 1213 u_t8_t * bp ; 1214 t ; 1216 i(( t = `__os_mloc ( dbv , 1217 ( __qam_dext_gs + ( DB_TXN ), & gp )) != 0) 1218 ( t ); 1219 bp = cbuf ; 1220 gp -> tx = ( DB_TXN *)&argp[1]; 1221 `memt ( gp -> tx , 0, ( DB_TXN )); 1223 `memy (& gp -> ty , bp , (argp->type)); 1224 bp +( gp -> ty ); 1226 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1227 bp +( gp -> tx -> txnid ); 1229 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1230 bp +( DB_LSN ); 1232 `memy (& ump , bp , (uinttmp)); 1233 gp -> feid = ( t32_t ) ump ; 1234 bp +( ump ); 1236 `memy (& gp -> l , bp , (argp->lsn)); 1237 bp +( gp -> l ); 1239 `memy (& ump , bp , (uinttmp)); 1240 gp -> pgno = ( db_pgno_t ) ump ; 1241 bp +( ump ); 1243 `memy (& ump , bp , (uinttmp)); 1244 gp -> dx = ( u_t32_t ) ump ; 1245 bp +( ump ); 1247 `memy (& ump , bp , (uinttmp)); 1248 gp -> o = ( db_o_t ) ump ; 1249 bp +( ump ); 1251 `memt (& gp -> da , 0, (argp->data)); 1252 `memy (& gp -> da . size , bp , ( u_t32_t )); 1253 bp +( u_t32_t ); 1254 gp -> da .d bp ; 1255 bp + gp -> da . size ; 1257 * g = gp ; 1259 } } 1266 $__qam__cov ( dbv , dbp , dbsiz ) 1267 DB_ENV * dbv ; 1268 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 1269 size_t * dbsiz ; 1271 t ; 1273 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1274 __qam_cf_cov , DB___qam_cf )) != 0) 1275 ( t ); 1276 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1277 __qam_mvr_cov , DB___qam_mvr )) != 0) 1278 ( t ); 1279 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1280 __qam_d_cov , DB___qam_d )) != 0) 1281 ( t ); 1282 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1283 __qam_add_cov , DB___qam_add )) != 0) 1284 ( t ); 1285 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1286 __qam_dext_cov , DB___qam_dext )) != 0) 1287 ( t ); 1289 } } @../qam/qam_autop.c 3 ~"db_cfig.h " 5 #ifde HAVE_QUEUE 6 ~"db_t.h " 7 ~"dbc/yo.h " 8 ~"dbc/db_ge.h " 9 ~"dbc/db_dich.h " 10 ~"dbc/db_am.h " 11 ~"dbc/log.h " 12 ~"dbc/qam.h " 13 ~"dbc/txn.h " 20 $__qam_cf_t ( dbv , db , lp , nud2 , nud3 ) 21 DB_ENV * dbv ; 22 DBT * db ; 23 DB_LSN * lp ; 24 db_cs nud2 ; 25 * nud3 ; 27 __qam_cf_gs * gp ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = `__qam_cf_ad ( dbv , db -> da , & gp )) != 0) 34 ( t ); 35 () `tf ( 37 ( u_lg ) lp -> fe , (u_lgp-> offt , 38 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 39 ( u_lg ) gp -> ty , 40 ( u_lg ) gp -> tx -> txnid , 41 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 42 () `tf ("\tfeid: %ld\n", () gp -> feid ); 43 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 44 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 45 () `tf ("\n"); 46 `__os_ ( dbv , gp ); 48 } } 55 $__qam_mvr_t ( dbv , db , lp , nud2 , nud3 ) 56 DB_ENV * dbv ; 57 DBT * db ; 58 DB_LSN * lp ; 59 db_cs nud2 ; 60 * nud3 ; 62 __qam_mvr_gs * gp ; 63 t ; 65 nud2 = DB_TXN_PRINT ; 66 nud3 = NULL ; 68 i(( t = `__qam_mvr_ad ( dbv , db -> da , & gp )) != 0) 69 ( t ); 70 () `tf ( 72 ( u_lg ) lp -> fe , (u_lgp-> offt , 73 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 74 ( u_lg ) gp -> ty , 75 ( u_lg ) gp -> tx -> txnid , 76 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 77 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 78 () `tf ("\tfeid: %ld\n", () gp -> feid ); 79 () `tf ("\td_f: %lu\n", ( u_lg ) gp -> d_f ); 80 () `tf ("\ew_f: %lu\n", ( u_lg ) gp -> w_f ); 81 () `tf ("\td_cur: %lu\n", ( u_lg ) gp -> d_cur ); 82 () `tf ("\ew_cur: %lu\n", ( u_lg ) gp -> w_cur ); 83 () `tf ("\tmetalsn: [%lu][%lu]\n", 84 ( u_lg ) gp -> m . fe , (u_lgrgp->m. offt ); 85 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 86 () `tf ("\n"); 87 `__os_ ( dbv , gp ); 89 } } 96 $__qam_d_t ( dbv , db , lp , nud2 , nud3 ) 97 DB_ENV * dbv ; 98 DBT * db ; 99 DB_LSN * lp ; 100 db_cs nud2 ; 101 * nud3 ; 103 __qam_d_gs * gp ; 104 t ; 106 nud2 = DB_TXN_PRINT ; 107 nud3 = NULL ; 109 i(( t = `__qam_d_ad ( dbv , db -> da , & gp )) != 0) 110 ( t ); 111 () `tf ( 113 ( u_lg ) lp -> fe , (u_lgp-> offt , 114 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 115 ( u_lg ) gp -> ty , 116 ( u_lg ) gp -> tx -> txnid , 117 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 118 () `tf ("\tfeid: %ld\n", () gp -> feid ); 119 () `tf ("\tlsn: [%lu][%lu]\n", 120 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 121 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 122 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 123 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 124 () `tf ("\n"); 125 `__os_ ( dbv , gp ); 127 } } 134 $__qam_add_t ( dbv , db , lp , nud2 , nud3 ) 135 DB_ENV * dbv ; 136 DBT * db ; 137 DB_LSN * lp ; 138 db_cs nud2 ; 139 * nud3 ; 141 __qam_add_gs * gp ; 142 u_t32_t i ; 143 ch ; 144 t ; 146 nud2 = DB_TXN_PRINT ; 147 nud3 = NULL ; 149 i(( t = `__qam_add_ad ( dbv , db -> da , & gp )) != 0) 150 ( t ); 151 () `tf ( 153 ( u_lg ) lp -> fe , (u_lgp-> offt , 154 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 155 ( u_lg ) gp -> ty , 156 ( u_lg ) gp -> tx -> txnid , 157 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 158 () `tf ("\tfeid: %ld\n", () gp -> feid ); 159 () `tf ("\tlsn: [%lu][%lu]\n", 160 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 161 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 162 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 163 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 164 () `tf ("\tdata: "); 165 i = 0; i < gp -> da . size ; i++) { 166 ch = (( u_t8_t *) gp -> da .da)[ i ]; 167 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 169 () `tf ("\n"); 170 () `tf ("\tvag: %lu\n", ( u_lg ) gp -> vag ); 171 () `tf ("\tolddata: "); 172 i = 0; i < gp -> dda . size ; i++) { 173 ch = (( u_t8_t *) gp -> dda . da )[ i ]; 174 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 176 () `tf ("\n"); 177 () `tf ("\n"); 178 `__os_ ( dbv , gp ); 180 } } 187 $__qam_dext_t ( dbv , db , lp , nud2 , nud3 ) 188 DB_ENV * dbv ; 189 DBT * db ; 190 DB_LSN * lp ; 191 db_cs nud2 ; 192 * nud3 ; 194 __qam_dext_gs * gp ; 195 u_t32_t i ; 196 ch ; 197 t ; 199 nud2 = DB_TXN_PRINT ; 200 nud3 = NULL ; 202 i(( t = `__qam_dext_ad ( dbv , db -> da , & gp )) != 0) 203 ( t ); 204 () `tf ( 206 ( u_lg ) lp -> fe , (u_lgp-> offt , 207 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 208 ( u_lg ) gp -> ty , 209 ( u_lg ) gp -> tx -> txnid , 210 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 211 () `tf ("\tfeid: %ld\n", () gp -> feid ); 212 () `tf ("\tlsn: [%lu][%lu]\n", 213 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 214 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 215 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 216 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 217 () `tf ("\tdata: "); 218 i = 0; i < gp -> da . size ; i++) { 219 ch = (( u_t8_t *) gp -> da .da)[ i ]; 220 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 222 () `tf ("\n"); 223 () `tf ("\n"); 224 `__os_ ( dbv , gp ); 226 } } 233 $__qam__t ( dbv , dbp , dbsiz ) 234 DB_ENV * dbv ; 235 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 236 size_t * dbsiz ; 238 t ; 240 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 241 __qam_cf_t , DB___qam_cf )) != 0) 242 ( t ); 243 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 244 __qam_mvr_t , DB___qam_mvr )) != 0) 245 ( t ); 246 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 247 __qam_d_t , DB___qam_d )) != 0) 248 ( t ); 249 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 250 __qam_add_t , DB___qam_add )) != 0) 251 ( t ); 252 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 253 __qam_dext_t , DB___qam_dext )) != 0) 254 ( t ); 256 } } @../qam/qam_conv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_sw.h " 14 ~"dbc/db_am.h " 15 ~"dbc/qam.h " 24 $__qam_msw ( pg ) 25 PAGE * pg ; 27 u_t8_t * p ; 29 `__db_masw ( pg ); 31 p = ( u_t8_t *) pg + ( DBMETA ); 33 `SWAP32 ( p ); 34 `SWAP32 ( p ); 35 `SWAP32 ( p ); 36 `SWAP32 ( p ); 37 `SWAP32 ( p ); 38 `SWAP32 ( p ); 39 p +91 * ( u_t32_t ); 40 `SWAP32 ( p ); 43 } } 54 $__qam_pg_out ( dbv , pg , , cook ) 55 DB_ENV * dbv ; 56 db_pgno_t pg ; 57 * ; 58 DBT * cook ; 60 DB_PGINFO * pgfo ; 61 QPAGE * h ; 63 `COMPQUIET ( pg , 0); 64 `COMPQUIET ( dbv , NULL ); 65 pgfo = ( DB_PGINFO *) cook -> da ; 66 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 69 h = ; 70 i( h -> ty = P_QAMMETA ) 71 ( `__qam_msw ( )); 73 `M_32_SWAP ( h -> l . fe ); 74 `M_32_SWAP ( h -> l . offt ); 75 `M_32_SWAP ( h -> pgno ); 78 } } @../qam/qam_files.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 15 ~"dbc/f.h " 16 ~"dbc/mp.h " 17 ~"dbc/qam.h " 19 #QAM_EXNAME ( Q , I , B , L ) \ 20 `tf (( B ), ( L ), \ 21 QUEUE_EXTENT , ( Q )-> d , PATH_SEPARATOR [0], (Q)-> me , ( I )) ) 32 $__qam_robe ( dbp , pgno , txn , add , mode , iܙy , ags ) 33 DB * dbp ; 34 db_pgno_t pgno ; 35 DB_TXN * txn ; 36 * add ; 37 qam_obe_mode mode ; 38 DB_CACHE_PRIORITY iܙy ; 39 u_t32_t ags ; 41 DB_ENV * dbv ; 42 DB_MPOOLFILE * mpf ; 43 MPFARRAY * y ; 44 QUEUE * qp ; 45 u_t8_t fid [ DB_FILE_ID_LEN ]; 46 u_t32_t i , extid , maxext , numext , lags , offt , dext , ݒags ; 47 buf [ DB_MAXPATHLEN ]; 48 y , ss , t , t_t ; 50 dbv = dbp ->dbenv; 51 qp = ( QUEUE *) dbp -> q_ ; 52 t = 0; 54 i( qp -> ge_ext == 0) { 55 mpf = dbp ->mpf; 56 mode ) { 57 QAM_PROBE_GET : 58 ( `__memp_fg ( mpf , & pgno , txn , ags , add )); 59 QAM_PROBE_PUT : 60 ( `__memp_ut ( mpf , add , iܙy )); 61 QAM_PROBE_DIRTY : 62 ( `__memp_dty ( mpf , add , txn , iܙy , ags )); 63 QAM_PROBE_MPF : 64 *( DB_MPOOLFILE **) add = mpf ; 69 mpf = NULL ; 76 `MUTEX_LOCK ( dbv , dbp -> mux ); 77 extid = `QAM_PAGE_EXTENT ( dbp , pgno ); 80 y = & qp -> y1 ; 81 i( y -> n_ex == 0) { 83 y -> n_ex = 4; 84 y -> low_ex = extid ; 85 numext = offt = dext = 0; 86 ss = 0; 87 loc ; 90 y : 91 i( extid < y -> low_ex ) { 92 ss = 1; 93 offt = y -> low_ex - extid ; 95 ss = 0; 96 offt = extid - y -> low_ex ; 98 i( qp -> y2 . n_ex != 0 && 99 ( extid > qp -> y2 . low_ex ? 100 offt > extid - qp -> y2 . low_ex : 101 offt > qp -> y2 . low_ex - extid )) { 102 y = & qp -> y2 ; 103 i( extid < y -> low_ex ) { 104 ss = 1; 105 offt = y -> low_ex - extid ; 107 ss = 0; 108 offt = extid - y -> low_ex ; 117 i( ss =1 || offt > y -> n_ex ) { 118 dext = y -> n_ex ; 119 numext = ( y -> hi_ex -ay-> low_ex ) + 1; 120 i( ss =1 && offt + numext < y -> n_ex ) { 126 `memmove (& y -> mpay [ offt ], 127 y -> mpay , numext 128 * ( y -> mpay [0])); 129 `memt ( y -> mpay , 0, offt 130 * ( y -> mpay [0])); 131 offt = 0; 132 } i( ss =0 && offt = y -> n_ex && 133 ( mode = QAM_PROBE_GET || mod= QAM_PROBE_PUT ) && 134 y -> mpay [0]. pf == 0) { 140 mpf = y -> mpay [0].mpf; 141 i( mpf ! NULL && ( t = `__memp_fo (mpf, 0)) != 0) 142 r ; 143 `memmove (& y -> mpay [0], &array->mpfarray[1], 144 ( y -> n_ex - 1* ay-> mpay [0])); 145 y -> low_ex ++; 146 y -> hi_ex ++; 147 offt --; 148 y -> mpay [ offt ]. mpf = NULL ; 149 y -> mpay [ offt ]. pf = 0; 156 maxext = ( u_t32_t UINT32_MAX 157 / ( qp -> ge_ext * qp-> c_ge ); 158 i( offt > maxext /2) { 159 y = & qp -> y2 ; 160 `DB_ASSERT ( dbv , y -> n_ex == 0); 161 dext = 0; 162 y -> n_ex = 4; 163 y -> low_ex = extid ; 164 offt = 0; 165 numext = 0; 166 } i( y -> mpay [0]. pf == 0) { 172 i = 0; i < y -> n_ex ; i++) { 173 i( y -> mpay [ i ]. pf != 0) 175 mpf = y -> mpay [ i ].mpf; 176 i( mpf = NULL ) 178 () `__memp_g_ags ( mpf , & lags ); 179 i(! `FLD_ISSET ( lags , DB_MPOOL_UNLINK )) 182 y -> mpay [ i ]. mpf = NULL ; 183 i(( t = `__memp_fo ( mpf , 0)) != 0) 184 r ; 186 i( i == 0) 187 ; 188 `memmove (& y -> mpay [0], 189 & y -> mpay [ i ], 190 ( y -> n_ex - i ) * 191 ( y -> mpay [0])); 192 `memt (& y -> mpay [y-> n_ex - i ], 193 '\0', i * ( y -> mpay [0])); 194 y -> low_ex + i ; 195 y -> hi_ex + i ; 196 y ; 202 : y -> n_ex + offt ; 203 y -> n_ex <<= 2; 205 loc : i(( t = `__os_loc ( dbv , 206 y -> n_ex * ( __qmpf ), 207 & y -> mpay )) != 0) 208 r ; 210 i( ss == 1) { 215 `memmove (& y -> mpay [ offt ], 216 y -> mpay , 217 numext * ( y -> mpay [0])); 218 `memt ( y -> mpay , 0, 219 offt * ( y -> mpay [0])); 220 `memt (& y -> mpay [ numext + offt ], 0, 221 ( y -> n_ex - ( numext + offt )) 222 * ( y -> mpay [0])); 223 offt = 0; 227 `memt (& y -> mpay [ dext ], 0, 228 ( y -> n_ex - dext ) * 229 ( y -> mpay [0])); 234 i( extid < y -> low_ex ) 235 y -> low_ex = extid ; 236 i( extid > y -> hi_ex ) 237 y -> hi_ex = extid ; 240 i( y -> mpay [ offt ]. mpf = NULL ) { 241 `QAM_EXNAME ( qp , extid , buf , (buf)); 242 i(( t = `__memp_f ( 243 dbv , & y -> mpay [ offt ]. mpf )) != 0) 244 r ; 245 mpf = y -> mpay [ offt ].mpf; 246 () `__memp_t_l_offt ( mpf , 0); 247 () `__memp_t_pgcook ( mpf , & qp -> pgcook ); 248 () `__memp_g_y ( dbp -> mpf , & y ); 249 () `__memp_t_y ( mpf , y ); 250 () `__memp_t_r_n ( mpf , dbp -> pgsize ); 253 `__qam_exid ( dbp , fid , extid ); 254 () `__memp_t_feid ( mpf , fid ); 255 ݒags = DB_EXTENT ; 256 i( `LF_ISSET ( DB_MPOOL_CREATE )) 257 ݒags | DB_CREATE ; 258 i( `F_ISSET ( dbp , DB_AM_RDONLY )) 259 ݒags | DB_RDONLY ; 260 i( `F_ISSET ( dbv , DB_ENV_DIRECT_DB )) 261 ݒags | DB_DIRECT ; 262 i(( t = `__memp_fݒ ( 263 mpf , NULL , buf , ݒags , qp -> mode , dbp -> pgsize )) != 0) { 264 y -> mpay [ offt ]. mpf = NULL ; 265 () `__memp_fo ( mpf , 0); 266 r ; 274 mpf = y -> mpay [ offt ].mpf; 275 i( mode = QAM_PROBE_GET ) 276 y -> mpay [ offt ]. pf ++; 283 i( `LF_ISSET ( DB_MPOOL_CREATE )) 284 () `__memp_t_ags ( mpf , DB_MPOOL_UNLINK , 0); 286 r : 287 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 289 i( t == 0) { 290 pgno --; 291 pgno % qp -> ge_ext ; 292 mode ) { 293 QAM_PROBE_GET : 294 t = `__memp_fg ( mpf , & pgno , txn , ags , add ); 295 i( t == 0) 298 QAM_PROBE_PUT : 299 t = `__memp_ut ( mpf , add , dbp -> iܙy ); 301 QAM_PROBE_DIRTY : 302 ( `__memp_dty ( mpf , 303 add , txn , dbp -> iܙy , ags )); 304 QAM_PROBE_MPF : 305 *( DB_MPOOLFILE **) add = mpf ; 309 `MUTEX_LOCK ( dbv , dbp -> mux ); 311 offt = extid - y -> low_ex ; 312 `DB_ASSERT ( dbv , y -> mpay [ offt ]. pf > 0); 313 i(-- y -> mpay [ offt ]. pf == 0 && 314 ( mode = QAM_PROBE_GET || t == 0)) { 316 () `__memp_g_ags ( mpf , & ags ); 317 i( `LF_ISSET ( DB_MPOOL_UNLINK )) { 318 y -> mpay [ offt ]. mpf = NULL ; 319 i(( t_t = 320 `__memp_fo ( mpf , 0)!0 && t == 0) 321 t = t_t ; 324 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 326 ( t ); 327 } } 338 $__qam_fo ( dbp , pgnddr ) 339 DB * dbp ; 340 db_pgno_t pgnddr ; 342 DB_ENV * dbv ; 343 DB_MPOOLFILE * mpf ; 344 MPFARRAY * y ; 345 QUEUE * qp ; 346 u_t32_t extid , offt ; 347 t ; 349 t = 0; 350 dbv = dbp ->dbenv; 351 qp = ( QUEUE *) dbp -> q_ ; 353 `MUTEX_LOCK ( dbv , dbp -> mux ); 355 extid = `QAM_PAGE_EXTENT ( dbp , pgnddr ); 356 y = & qp -> y1 ; 357 i( y -> low_ex > extid ||ay-> hi_ex <xtid) 358 y = & qp -> y2 ; 359 offt = extid - y -> low_ex ; 361 `DB_ASSERT ( dbv , 362 extid > y -> low_ex && offt <ay-> n_ex ); 365 i( y -> mpay [ offt ]. pf != 0) 366 de ; 368 mpf = y -> mpay [ offt ].mpf; 369 y -> mpay [ offt ]. mpf = NULL ; 370 t = `__memp_fo ( mpf , 0); 372 de : 373 `MUTEX_UNLOCK ( dbv , dbp -> mux ); 374 ( t ); 375 } } 387 $__qam_emove ( dbp , pgnddr ) 388 DB * dbp ; 389 db_pgno_t pgnddr ; 391 DB_ENV * dbv ; 392 DB_MPOOLFILE * mpf ; 393 MPFARRAY * y ; 394 QUEUE * qp ; 395 u_t32_t extid , offt ; 396 t ; 398 qp = ( QUEUE *) dbp -> q_ ; 399 dbv = dbp ->dbenv; 400 t = 0; 402 `MUTEX_LOCK ( dbv , dbp -> mux ); 404 extid = `QAM_PAGE_EXTENT ( dbp , pgnddr ); 405 y = & qp -> y1 ; 406 i( y -> low_ex > extid ||ay-> hi_ex <xtid) 407 y = & qp -> y2 ; 408 offt = extid - y -> low_ex ; 410 `DB_ASSERT ( dbv , 411 extid > y -> low_ex && offt <ay-> n_ex ); 413 mpf = y -> mpay [ offt ].mpf; 415 i( mpf = NULL ) 416 r ; 422 i( `LOGGING_ON ( dbv && ( t = `__log_ush (dbv, NULL )) != 0) 423 r ; 425 () `__memp_t_ags ( mpf , DB_MPOOL_UNLINK , 1); 427 i( y -> mpay [ offt ]. pf != 0) 428 r ; 429 y -> mpay [ offt ]. mpf = NULL ; 430 i(( t = `__memp_fo ( mpf , 0)) != 0) 431 r ; 437 i( offt == 0) { 438 `memmove ( y -> mpay , &array->mpfarray[1], 439 ( y -> hi_ex -ay-> low_ex ) 440 * ( y -> mpay [0])); 441 y -> mpay [ 442 y -> hi_ex -ay-> low_ex ]. mpf = NULL ; 443 i( y -> low_ex !y-> hi_ex ) 444 y -> low_ex ++; 446 i( extid = y -> hi_ex ) 447 y -> hi_ex --; 450 r : `MUTEX_UNLOCK ( dbv , dbp -> mux ); 452 ( t ); 453 } } 462 $__qam_sync ( dbp ) 463 DB * dbp ; 465 t ; 470 i(( t = `__memp_fsync ( dbp -> mpf )) != 0) 471 ( t ); 472 i((( QUEUE *) dbp -> q_ )-> ge_ext != 0) 473 ( `__memp_sync_t ( 474 dbp -> dbv , NULL , 0, DB_SYNC_QUEUE_EXTENT , NULL, NULL)); 476 } } 486 $__qam_g_fi ( dbp , fip ) 487 DB * dbp ; 488 QUEUE_FILELIST ** fip ; 490 DB_ENV * dbv ; 491 DB_MPOOLFILE * mpf ; 492 QUEUE * qp ; 493 QMETA * ma ; 494 size_t ex_t ; 495 db_o_t i , cut , f , , c_ex ; 496 QUEUE_FILELIST * ; 497 t ; 499 dbv = dbp ->dbenv; 500 mpf = dbp ->mpf; 501 qp = ( QUEUE *) dbp -> q_ ; 502 * fip = NULL ; 504 i( qp -> ge_ext == 0) 508 i( qp -> me = NULL ) 512 i = PGNO_BASE_MD ; 513 i(( t = `__memp_fg ( mpf , & i , NULL , 0, & ma )) != 0) 514 ( t ); 516 cut = ma -> cur_o ; 517 f = ma -> f_o ; 519 i(( t = `__memp_ut ( mpf , ma , dbp -> iܙy )) != 0) 520 ( t ); 531 c_ex = qp -> c_ge * qp-> ge_ext ; 532 i( cut > f ) 533 ex_t = ( cut - f / c_ex + 3; 535 ex_t = 536 ( cut + ( UINT32_MAX - f )/ c_ex + 4; 538 i( ex_t == 0) 540 i(( t = `__os_oc ( dbv , 541 ex_t , ( QUEUE_FILELIST ), fip )) != 0) 542 ( t ); 543 = * fip ; 545 aga : 546 i( cut > f ) 547 = cut ; 549 = UINT32_MAX ; 557 f -f % c_ex ; 558 f + % c_ex ; 560 i = f ; i >f && i < ; i + c_ex ) { 561 i(( t = `__qam_robe ( dbp , `QAM_RECNO_PAGE (dbp, i ), NULL , 562 & -> mpf , QAM_PROBE_MPF , dbp -> iܙy , 0)) != 0) { 563 i( t = ENOENT ) 565 ( t ); 567 -> id = `QAM_RECNO_EXTENT ( dbp , i ); 568 ++; 569 `DB_ASSERT ( dbv , ( size_t )( - * fip < ex_t ); 572 i( cut < f ) { 573 f = 1; 574 aga ; 578 } } 586 $__qam_ex_mes ( dbv , me , mip ) 587 DB_ENV * dbv ; 588 * me ; 589 *** mip ; 591 DB * dbp ; 592 QUEUE * qp ; 593 QUEUE_FILELIST * fi , * ; 594 size_t n ; 595 t , t , t_t ; 596 buf [ DB_MAXPATHLEN ], ** , * p ; 598 * mip = NULL ; 599 fi = NULL ; 600 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 601 ( t ); 602 i(( t = `__db_ݒ ( dbp , 603 NULL , me , NULL, DB_QUEUE , DB_RDONLY , 0, PGNO_BASE_MD )) != 0) 604 de ; 605 qp = dbp -> q_ ; 606 i( qp -> ge_ext == 0) 607 de ; 609 i(( t = `__qam_g_fi ( dbp , & fi )) != 0) 610 de ; 612 i( fi = NULL ) 613 de ; 615 t = 0; 616 = fi ; fp-> mpf ! NULL ; fp++) 617 t ++; 620 n = ( size_t ) t * ((** mip ) + 621 ` ( QUEUE_EXTENT + sn( qp -> d + sn(qp-> me ) + 6); 623 i(( t = `__os_mloc ( dbp -> dbv , n , mip )) != 0) 624 de ; 625 = * mip ; 626 p = (*)( + t + 1); 627 = fi ; fp-> mpf ! NULL ; fp++) { 628 `QAM_EXNAME ( qp , -> id , buf , (buf)); 629 n = ` ( buf ); 630 * ++ = p ; 631 () `ry ( p , buf ); 632 p + n + 1; 634 * = NULL ; 636 de : 637 i( fi ! NULL ) 638 `__os_ ( dbp -> dbv , fi ); 639 i(( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 640 t = t_t ; 642 ( t ); 643 } } 660 $__qam_exid ( dbp , fidp , exnum ) 661 DB * dbp ; 662 u_t8_t * fidp ; 663 u_t32_t exnum ; 665 i ; 666 u_t8_t * p ; 669 `memy ( fidp , dbp -> feid , DB_FILE_ID_LEN ); 672 i = ( u_t32_t ); i > 0; --i) 673 * fidp ++ = 0; 676 p = ( u_t8_t *)& exnum , i = ( u_t32_t ); i > 0; --i) 677 * fidp ++ = * p ++; 678 } } 691 $__qam_me ( dbp , txn , wme , ) 692 DB * dbp ; 693 DB_TXN * txn ; 694 cڡ * wme ; 695 qam_me_ ; 697 DB_ENV * dbv ; 698 QUEUE * qp ; 699 size_t exn , fun , n ; 700 u_t8_t fid [ DB_FILE_ID_LEN ]; 701 u_t32_t exid ; 702 t , i , t , t_t ; 703 buf [ DB_MAXPATHLEN ], nbuf [DB_MAXPATHLEN], pve ; 704 * dme , * dth , * exme , * fume , ** mes ; 705 * nd , * m , * w , * ; 707 dbv = dbp ->dbenv; 708 qp = ( QUEUE *) dbp -> q_ ; 709 t = t = t_t = 0; 710 m = exme = fume = NULL ; 711 mes = NULL ; 714 i( qp -> ge_ext == 0) 730 `QAM_EXNAME ( qp , 0, buf , (buf)); 731 i(( t = 732 `__db_ame ( dbv , DB_APP_DATA , buf , 0, NULL , & fume )) != 0) 733 ( t ); 736 i(( dth = `__db_h ( fume )= NULL ) { 737 t = EINVAL ; 738 r ; 740 pve = * dth ; 741 * dth = '\0'; 747 i(( t = `__os_dli ( dbv , fume , & mes , & t )) != 0) 748 r ; 749 * dth = pve ; 752 i( t == 0) 753 r ; 761 dth ++; 762 dme = `chr ( dth , '.'); 763 i( dme = NULL ) { 764 t = EINVAL ; 765 r ; 767 ++ dme ; 768 * dme = '\0'; 769 n = ` ( dth ); 770 fun = ` ( fume ); 773 exn = fun + 20; 774 i(( t = `__os_mloc ( dbv , exn , & exme )) != 0) 775 r ; 777 nd = w = NULL ; 778 i( wme ! NULL ) { 779 i(( t = `__os_rdup ( dbv , wme , & m )) != 0) 780 r ; 781 nd = m ; 782 i(( w = `__db_h ( m )! NULL ) 783 * w ++ = '\0'; 785 w = m ; 786 nd = PATH_DOT ; 789 i = 0; i < t ; i++) { 791 i( `cmp ( mes [ i ], dth , n ) != 0) 794 = & mes [ i ][ n ]; *cp != '\0'; cp++) 795 i(! `isdig (()* )) 797 i(* != '\0') 804 exid = ( u_t32_t ) `oul ( mes [ i ] + n , NULL , 10); 805 `__qam_exid ( dbp , fid , exid ); 807 ) { 808 QAM_NAME_DISCARD : 809 `tf ( exme , exn , 810 "%s%s", fume , mes [ i ] + n ); 811 i(( t_t = `__memp_me ( dbv , 812 fid , NULL , exme , NULL, 813 `F_ISSET ( dbp , DB_AM_INMEM ))!0 && t == 0) 814 t = t_t ; 817 QAM_NAME_RENAME : 818 `tf ( nbuf , buf), QUEUE_EXTENT , 819 nd , PATH_SEPARATOR [0], w , exid ); 820 `QAM_EXNAME ( qp , exid , buf , (buf)); 821 i(( t = `__f_me ( dbv , 822 txn , buf , nbuf , fid , DB_APP_DATA , 1, 823 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ) ? 824 DB_LOG_NOT_DURABLE : 0)) != 0) 825 r ; 828 QAM_NAME_REMOVE : 829 `QAM_EXNAME ( qp , exid , buf , (buf)); 830 i(( t = `__f_move ( dbv , txn , fid , buf , 831 DB_APP_DATA , `F_ISSET ( dbp , DB_AM_NOT_DURABLE ) ? 832 DB_LOG_NOT_DURABLE : 0)) != 0) 833 r ; 838 r : i( fume ! NULL ) 839 `__os_ ( dbv , fume ); 840 i( exme ! NULL ) 841 `__os_ ( dbv , exme ); 842 i( m ! NULL ) 843 `__os_ ( dbv , m ); 844 i( mes ! NULL ) 845 `__os_d ( dbv , mes , t ); 846 ( t ); 847 } } @../qam/qam_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/mp.h " 16 ~"dbc/qam.h " 17 ~"dbc/txn.h " 19 __qam_ __P (( DB *, DB_TXN *, 20 cڡ *, cڡ *, cڡ *, qam_me_ )); 21 __qam_t_exsize __P (( DB *, u_t32_t )); 30 $__qam_db_ ( dbp ) 31 DB * dbp ; 33 QUEUE * t ; 34 t ; 37 i(( t = `__os_oc ( dbp -> dbv , 1, ( QUEUE ), & t )) != 0) 38 ( t ); 39 dbp -> q_ = t ; 40 dbp -> g_q_exsize = __qam_g_exsize ; 41 dbp -> t_q_exsize = __qam_t_exsize ; 43 t -> _d = ' '; 46 } } 55 $__qam_db_o ( dbp , ags ) 56 DB * dbp ; 57 u_t32_t ags ; 59 DB_MPOOLFILE * mpf ; 60 MPFARRAY * y ; 61 QUEUE * t ; 62 __qmpf * mp ; 63 u_t32_t i ; 64 t , t_t ; 66 t = 0; 67 i(( t = dbp -> q_ = NULL ) 70 y = & t -> y1 ; 71 aga : 72 mp = y -> mpay ; 73 i( mp ! NULL ) { 74 i = y -> low_ex ; 75 i < y -> hi_ex ; i++, mp ++) { 76 mpf = mp ->mpf; 77 mp -> mpf = NULL ; 78 i( mpf ! NULL && ( t_t = `__memp_fo (mpf, 79 `LF_ISSET ( DB_AM_DISCARD ? DB_MPOOL_DISCARD : 0)) 80 !0 && t == 0) 81 t = t_t ; 83 `__os_ ( dbp -> dbv , y -> mpay ); 85 i( t -> y2 . n_ex != 0) { 86 y = & t -> y2 ; 87 y -> n_ex = 0; 88 aga ; 91 i( `LF_ISSET ( DB_AM_DISCARD ) && 92 ( t_t = `__qam_me ( dbp , NULL , 93 NULL , QAM_NAME_DISCARD )!0 && t == 0) 94 t = t_t ; 96 i( t -> th ! NULL ) 97 `__os_ ( dbp -> dbv , t -> th ); 98 `__os_ ( dbp -> dbv , t ); 99 dbp -> q_ = NULL ; 101 ( t ); 102 } } 111 $__qam_g_exsize ( dbp , q_exsiz ) 112 DB * dbp ; 113 u_t32_t * q_exsiz ; 115 * q_exsiz = (( QUEUE *) dbp -> q_ )-> ge_ext ; 117 } } 120 $__qam_t_exsize ( dbp , exsize ) 121 DB * dbp ; 122 u_t32_t exsize ; 124 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_extentsize"); 126 i( exsize < 1) { 127 `__db_rx ( dbp -> dbv , "Extent size must beteast 1"); 128 ( EINVAL ); 131 (( QUEUE *) dbp -> q_ )-> ge_ext = exsize ; 134 } } 144 $__queue_gefo ( dbp , fp , ϡp , emyp , ge , ags ) 145 DB * dbp ; 146 db_pgno_t * fp , * ϡp ; 147 * emyp ; 148 ge ; 149 u_t32_t ags ; 151 DB_MPOOLFILE * mpf ; 152 QMETA * ma ; 153 db_pgno_t f , i , ϡ ; 154 emy , t , t_t ; 156 mpf = dbp ->mpf; 159 i = PGNO_BASE_MD ; 160 i(( t = `__memp_fg ( mpf , & i , NULL , 0, & ma )) != 0) 161 ( t ); 163 f = `QAM_RECNO_PAGE ( dbp , ma -> f_o ); 164 ϡ = `QAM_RECNO_PAGE ( 165 dbp , ma -> cur_o == 1 ? 1 : meta->cur_recno - 1); 167 emy = ma -> cur_o =ma-> f_o ; 168 i( fp ! NULL ) 169 * fp = f ; 170 i( ϡp ! NULL ) 171 * ϡp = ϡ ; 172 i( emyp ! NULL ) 173 * emyp = emy ; 174 #ifde HAVE_STATISTICS 175 i( ge ) 176 t = `__db_ge ( dbp , ( PAGE *) ma , ags ); 178 `COMPQUIET ( ge , 0); 179 `COMPQUIET ( ags , 0); 182 i(( t_t = `__memp_ut ( mpf , ma , dbp -> iܙy )!0 && t == 0) 183 t = t_t ; 185 ( t ); 186 } } 188 #ifde HAVE_STATISTICS 196 $__db_queue ( dbp , ags ) 197 DB * dbp ; 198 u_t32_t ags ; 200 PAGE * h ; 201 db_pgno_t f , i , ϡ , pg_ext , ; 202 emy , t ; 204 i(( t = `__queue_gefo ( dbp , & f , & ϡ , & emy , 1, ags )) != 0) 205 ( t ); 207 i( emy || t != 0) 208 ( t ); 210 i = f ; 211 i( f > ϡ ) 212 = `QAM_RECNO_PAGE ( dbp , UINT32_MAX ); 214 = ϡ ; 217 beg : 218 ; i < ; ++i) { 219 i(( t = `__qam_fg ( dbp , & i , NULL , 0, & h )) != 0) { 220 pg_ext = (( QUEUE *) dbp -> q_ )-> ge_ext ; 221 i( pg_ext == 0) { 222 i( t = DB_PAGE_NOTFOUND && f = ϡ ) 224 ( t ); 226 i( t = ENOENT || = DB_PAGE_NOTFOUND ) { 227 i +( pg_ext - ((i - 1) %g_ext)) - 1; 230 ( t ); 232 () `__db_ge ( dbp , h , ags ); 233 i(( t = `__qam_ut ( dbp , i , h , dbp-> iܙy )) != 0) 234 ( t ); 237 i( f > ϡ ) { 238 i = 1; 239 = ϡ ; 240 f = ϡ ; 241 beg ; 244 } } 254 $__qam_move ( dbp , txn , me , subdb ) 255 DB * dbp ; 256 DB_TXN * txn ; 257 cڡ * me , * subdb ; 259 ( `__qam_ ( dbp , txn , me , subdb , NULL , QAM_NAME_REMOVE )); 260 } } 270 $__qam_me ( dbp , txn , me , subdb , wme ) 271 DB * dbp ; 272 DB_TXN * txn ; 273 cڡ * me , * subdb , * wme ; 275 ( `__qam_ ( dbp , txn , me , subdb , wme , QAM_NAME_RENAME )); 276 } } 283 $__qam_ ( dbp , txn , me , subdb , wme , ) 284 DB * dbp ; 285 DB_TXN * txn ; 286 cڡ * me , * subdb , * wme ; 287 qam_me_ ; 289 DB_ENV * dbv ; 290 DB * tmpdbp ; 291 QUEUE * qp ; 292 t , t_t ; 294 dbv = dbp ->dbenv; 295 t = 0; 297 i( subdb ! NULL && me != NULL) { 298 `__db_rx ( dbv , 300 ( EINVAL ); 307 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 308 tmpdbp = dbp ; 310 i(( t = `__db__ (& tmpdbp , dbv , 0)) != 0) 311 ( t ); 317 tmpdbp -> lock = dbp ->locker; 318 i(( t = `__db_ݒ ( tmpdbp , txn , 319 me , NULL , DB_QUEUE , DB_RDONLY , 0, PGNO_BASE_MD )) != 0) 320 r ; 323 qp = ( QUEUE *) tmpdbp -> q_ ; 324 i( qp -> ge_ext != 0) 325 t = `__qam_me ( tmpdbp , txn , wme , ); 327 i(! `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) { 328 r : 332 tmpdbp -> lock = NULL ; 335 i( txn ! NULL ) 336 `__txn_mlock ( dbv , 337 txn , & tmpdbp -> hd_lock , DB_LOCK_INVALIDID ); 339 i( txn = NULL ) { 340 i(( t_t = `__db_o ( tmpdbp , 341 txn , DB_NOSYNC )!0 && t == 0) 342 t = t_t ; 344 i(( t_t = `__txn_oevt ( dbv , 345 txn , tmpdbp )!0 && t == 0) 346 t = t_t ; 349 ( t ); 350 } } 359 $__qam_m_ags ( dbp , ag , outag ) 360 DB * dbp ; 361 u_t32_t * ag , * outag ; 363 `COMPQUIET ( dbp , NULL ); 365 i( `FLD_ISSET (* ag , DB_INORDER )) { 366 `FLD_SET (* outag , DB_AM_INORDER ); 367 `FLD_CLR (* ag , DB_INORDER ); 369 } } 378 $__qam_t_ags ( dbp , ag ) 379 DB * dbp ; 380 u_t32_t * ag ; 383 `__qam_m_ags ( dbp , ag , &dbp-> ags ); 385 } } @../qam/qam_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/yo.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/db_sw.h " 15 ~"dbc/db_am.h " 16 ~"dbc/lock.h " 17 ~"dbc/mp.h " 18 ~"dbc/qam.h " 19 ~"dbc/f.h " 21 __qam__ma __P (( DB *, QMETA *)); 30 $__qam_ݒ ( dbp , txn , me , ba_pgno , mode , ags ) 31 DB * dbp ; 32 DB_TXN * txn ; 33 cڡ * me ; 34 db_pgno_t ba_pgno ; 35 mode ; 36 u_t32_t ags ; 38 DBC * dbc ; 39 DB_ENV * dbv ; 40 DB_LOCK mock ; 41 DB_MPOOLFILE * mpf ; 42 QMETA * qma ; 43 QUEUE * t ; 44 t , t_t ; 46 dbv = dbp ->dbenv; 47 mpf = dbp ->mpf; 48 t = dbp -> q_ ; 49 t = 0; 50 qma = NULL ; 52 i( me = NULL && t -> ge_ext != 0) { 53 `__db_rx ( dbv , 55 ( EINVAL ); 58 i( `MULTIVERSION ( dbp )) { 59 `__db_rx ( dbv , 61 ( EINVAL ); 65 dbp -> db_am_move = __qam_move ; 66 dbp -> db_am_me = __qam_me ; 74 i(( t = `__db_curs ( dbp , txn , & dbc , 75 `LF_ISSET ( DB_CREATE && `CDB_LOCKING ( dbv ) ? 76 DB_WRITECURSOR : 0)) != 0) 77 ( t ); 84 i(( t = 85 `__db_lg ( dbc , 0, ba_pgno , DB_LOCK_READ , 0, & mock )) != 0) 86 r ; 87 i(( t = `__memp_fg ( mpf , & ba_pgno , dbc -> txn , 0, & qma )) != 0) 88 r ; 91 i( qma -> dbma . magic ! DB_QAMMAGIC ) { 92 `__db_rx ( dbv , "%s: uxed fty ofm", me ); 93 t = EINVAL ; 94 r ; 98 t -> ge_ext = qma ->page_ext; 100 i( t -> ge_ext !0 && ( t = `__qam_t_ext_da ( dbp , me )) != 0) 101 r ; 103 i( mode == 0) 104 mode = `__db_omode ("rw-rw----"); 105 t -> mode = mode; 106 t -> _d = () qma ->re_pad; 107 t -> _n = qma ->re_len; 108 t -> c_ge = qma ->rec_page; 110 t -> q_ma = ba_pgno ; 111 t -> q_ro = ba_pgno + 1; 113 r : i( qma ! NULL && ( t_t = 114 `__memp_ut ( mpf , qma , dbc -> iܙy )!0 && t == 0) 115 t = t_t ; 118 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 119 t = t_t ; 121 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 122 t = t_t ; 124 ( t ); 125 } } 134 $__qam_t_ext_da ( dbp , me ) 135 DB * dbp ; 136 cڡ * me ; 138 QUEUE * t ; 139 t ; 141 t = dbp -> q_ ; 142 t -> pgfo . db_gesize = dbp -> pgsize ; 143 t -> pgfo . ags = 144 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 145 t -> pgfo . ty = dbp ->type; 146 t -> pgcook . da = &t-> pgfo ; 147 t -> pgcook . size = ( DB_PGINFO ); 149 i(( t = `__os_rdup ( dbp -> dbv , me , & t -> th )) != 0) 150 ( t ); 151 t -> d =-> th ; 152 i(( t -> me = `__db_h -> th )= NULL ) { 153 t -> me =-> th ; 154 t -> d = PATH_DOT ; 156 * t -> me ++ = '\0'; 159 } } 167 $__qam_machk ( dbp , me , qma ) 168 DB * dbp ; 169 cڡ * me ; 170 QMETA * qma ; 172 DB_ENV * dbv ; 173 u_t32_t vs ; 174 t ; 176 dbv = dbp ->dbenv; 177 t = 0; 183 vs = qma -> dbma . vsi ; 184 i( `F_ISSET ( dbp , DB_AM_SWAP )) 185 `M_32_SWAP ( vs ); 186 vs ) { 189 `__db_rx ( dbv , 191 me , ( u_lg ) vs ); 192 ( DB_OLD_VERSION ); 197 `__db_rx ( dbv , 198 "%s: unsu܋d qam vsi: %lu", me , ( u_lg ) vs ); 199 ( EINVAL ); 203 i( `F_ISSET ( dbp , DB_AM_SWAP && ( t = `__qam_msw (( PAGE *) qma )) != 0) 204 ( t ); 207 i( dbp -> ty ! DB_QUEUE && dbp->ty ! DB_UNKNOWN ) 208 ( EINVAL ); 209 dbp -> ty = DB_QUEUE ; 210 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE ); 213 dbp -> pgsize = qma -> dbma . gesize ; 216 `memy ( dbp -> feid , qma -> dbma . uid , DB_FILE_ID_LEN ); 219 dbp -> db_am_me = __qam_me ; 220 dbp -> db_am_move = __qam_move ; 222 ( t ); 223 } } 230 $__qam__ma ( dbp , ma ) 231 DB * dbp ; 232 QMETA * ma ; 234 DB_ENV * dbv ; 235 QUEUE * t ; 237 dbv = dbp ->dbenv; 238 t = dbp -> q_ ; 240 `memt ( ma , 0, ( QMETA )); 241 `LSN_NOT_LOGGED ( ma -> dbma . l ); 242 ma -> dbma . pgno = PGNO_BASE_MD ; 243 ma -> dbma . ϡ_pgno = 0; 244 ma -> dbma . magic = DB_QAMMAGIC ; 245 ma -> dbma . vsi = DB_QAMVERSION ; 246 ma -> dbma . gesize = dbp -> pgsize ; 247 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 248 `FLD_SET ( ma -> dbma . maags , DBMETA_CHKSUM ); 249 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 250 ma -> dbma . y_g = 251 (( DB_CIPHER *) dbv -> yo_hd )-> g ; 252 `DB_ASSERT ( dbv , ma -> dbma . y_g != 0); 253 ma -> yo_magic = ma-> dbma . magic ; 255 ma -> dbma . ty = P_QAMMETA ; 256 ma -> _d = ( u_t32_t ) t ->re_pad; 257 ma -> _n = t ->re_len; 258 ma -> c_ge = `CALC_QAM_RECNO_PER_PAGE ( dbp ); 259 ma -> cur_o = 1; 260 ma -> f_o = 1; 261 ma -> ge_ext = t ->page_ext; 262 t -> c_ge = ma ->rec_page; 263 `memy ( ma -> dbma . uid , dbp -> feid , DB_FILE_ID_LEN ); 266 i( `QAM_RECNO_PER_PAGE ( dbp ) < 1) { 267 `__db_rx ( dbv , 269 ( u_lg ) t -> _n , (u_lg) dbp -> pgsize ); 270 ( EINVAL ); 274 } } 283 $__qam_w_fe ( dbp , txn , fhp , me ) 284 DB * dbp ; 285 DB_TXN * txn ; 286 DB_FH * fhp ; 287 cڡ * me ; 289 DBT pdbt ; 290 DB_ENV * dbv ; 291 DB_MPOOLFILE * mpf ; 292 DB_PGINFO pgfo ; 293 QMETA * ma ; 294 db_pgno_t pgno ; 295 t , t_t ; 308 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 309 mpf = dbp ->mpf; 310 pgno = PGNO_BASE_MD ; 311 i(( t = `__memp_fg ( mpf , & pgno , txn , 312 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ma )) != 0) 313 ( t ); 315 i(( t = `__qam__ma ( dbp , ma )) != 0) 316 r1 ; 318 i(( t = `__db_log_ge ( dbp , 319 txn , & ma -> dbma . l , pgno , ( PAGE *)meta)) != 0) 320 r1 ; 321 r1 : i(( t_t = 322 `__memp_ut ( mpf , ma , dbp -> iܙy )!0 && t == 0) 323 t = t_t ; 325 dbv = dbp ->dbenv; 326 i(( t = `__os_oc ( dbv , 1, dbp -> pgsize , & ma )) != 0) 327 ( t ); 329 i(( t = `__qam__ma ( dbp , ma )) != 0) 330 r2 ; 332 pgfo . db_gesize = dbp -> pgsize ; 333 pgfo . ags = 334 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 335 pgfo . ty = DB_QUEUE ; 336 `DB_SET_DBT ( pdbt , & pgfo , (pginfo)); 337 i(( t = `__db_pgout ( dbv , PGNO_BASE_MD , ma , & pdbt )) != 0) 338 r2 ; 339 t = `__f_wre ( dbv , txn , me , 340 DB_APP_DATA , fhp , dbp -> pgsize , 0, 0, ma , dbp->pgsize, 1, 341 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0); 343 r2 : `__os_ ( dbv , ma ); 346 ( t ); 347 } } @../qam/qam_rec.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/qam.h " 18 ~"dbc/txn.h " 29 #QAM_DIRTY ( dbp , pgno , g ) \ 30 i(( t = `__qam_dty (( dbp ), \ 31 pgno , g , NULL , ( dbp )-> iܙy )) != 0) { \ 32 t = `__db_pgr (( dbp ), ( pgno ),et); \ 33 out ; \ 34 } ) 44 $__qam_cf_cov ( dbv , db , lp , , fo ) 45 DB_ENV * dbv ; 46 DBT * db ; 47 DB_LSN * lp ; 48 db_cs ; 49 * fo ; 51 __qam_cf_gs * gp ; 52 DB * fe_dbp ; 53 DBC * dbc ; 54 DB_LOCK lock ; 55 DB_LSN unc_l ; 56 DB_MPOOLFILE * mpf ; 57 QMETA * ma ; 58 QUEUE_CURSOR * ; 59 db_pgno_t mg ; 60 u_t32_t c_ext ; 61 exa , t , t_t ; 63 `LOCK_INIT ( lock ); 64 `COMPQUIET ( ma , NULL ); 65 `REC_PRINT ( __qam_cf_t ); 66 `REC_INTRO ( __qam_cf_ad , 1, 1); 68 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 70 i(( t = `__db_lg ( dbc , 71 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 72 de ; 73 i(( t = `__memp_fg ( mpf , & mg , NULL , 74 0, & ma )) != 0) { 75 i( `DB_REDO ( )) { 76 i(( t = `__memp_fg ( mpf , & mg , NULL , 77 DB_MPOOL_CREATE , & ma )) != 0) { 78 () `__LPUT ( dbc , lock ); 79 out ; 81 ma -> dbma . pgno = mg ; 82 ma -> dbma . ty = P_QAMMETA ; 84 * lp = gp -> ev_l ; 85 t = `__LPUT ( dbc , lock ); 86 out ; 95 i( `DB_UNDO ( )) { 96 i( `QAM_BEFORE_FIRST ( ma , gp -> o )) { 97 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 98 ma -> f_o = gp -> o ; 101 unc_l = (( DB_TXNHEAD *) fo )->trunc_lsn; 103 i(! `IS_ZERO_LSN ( unc_l ) && 104 `LOG_COMPARE (& `LSN ( ma ), & unc_l ) > 0) { 105 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 106 `LSN ( ma unc_l ; 109 i( `LOG_COMPARE (& `LSN ( ma ), lp ) < 0) { 110 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 111 `LSN ( ma * lp ; 113 i( ma -> ge_ext == 0) 114 c_ext = 0; 116 c_ext = ma -> ge_ext * ma-> c_ge ; 117 = ( QUEUE_CURSOR *) dbc -> ; 118 i( ma -> f_o = RECNO_OOB ) 119 ma -> f_o ++; 120 ma -> f_o !ma-> cur_o && 121 ! `QAM_BEFORE_FIRST ( ma , gp -> o + 1)) { 122 i(( t = `__qam_posi ( dbc , 123 & ma -> f_o , DB_LOCK_READ , 0, & exa )) != 0) 124 r ; 125 i( -> ge ! NULL && ( t = `__qam_ut ( fe_dbp , 126 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 127 r ; 129 i( exa == 1) 131 i( -> ge ! NULL && 132 c_ext !0 && ma -> f_o %ec_ext == 0) 133 i(( t = 134 `__qam_emove ( fe_dbp , -> pgno )) != 0) 135 r ; 136 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 137 ma -> f_o ++; 138 i( ma -> f_o = RECNO_OOB ) 139 ma -> f_o ++; 143 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 144 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 145 t = t_t ; 146 i( t != 0) 147 out ; 149 de : * lp = gp -> ev_l ; 150 t = 0; 153 r : () `__memp_ut ( mpf , ma , dbc -> iܙy ); 154 () `__LPUT ( dbc , lock ); 157 out : REC_CLOSE ; 158 } } 168 $__qam_mvr_cov ( dbv , db , lp , , fo ) 169 DB_ENV * dbv ; 170 DBT * db ; 171 DB_LSN * lp ; 172 db_cs ; 173 * fo ; 175 __qam_mvr_gs * gp ; 176 DB * fe_dbp ; 177 DBC * dbc ; 178 DB_LSN unc_l ; 179 DB_LOCK lock ; 180 DB_MPOOLFILE * mpf ; 181 QMETA * ma ; 182 QUEUE_CURSOR * ; 183 db_pgno_t mg ; 184 cmp_n , cmp_p , exa , t ; 186 `REC_PRINT ( __qam_mvr_t ); 187 `REC_INTRO ( __qam_mvr_ad , 1, 1); 189 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 191 i(( t = `__db_lg ( dbc , 192 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 193 de ; 194 i(( t = `__memp_fg ( mpf , & mg , NULL , 0, & ma )) != 0) { 195 i( `DB_REDO ( )) { 196 i(( t = `__memp_fg ( mpf , & mg , NULL , 197 DB_MPOOL_CREATE , & ma )) != 0) { 198 () `__LPUT ( dbc , lock ); 199 out ; 201 ma -> dbma . pgno = mg ; 202 ma -> dbma . ty = P_QAMMETA ; 204 * lp = gp -> ev_l ; 205 t = `__LPUT ( dbc , lock ); 206 out ; 210 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 211 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> m ); 223 i( `DB_UNDO ( )) { 224 i(( gp -> code & QAM_TRUNCATE && cmp_n <= 0) { 225 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 226 ma -> f_o = gp -> d_f ; 227 ma -> cur_o = gp -> d_cur ; 228 `LSN ( ma gp -> m ; 231 unc_l = (( DB_TXNHEAD *) fo )->trunc_lsn; 232 i(! `IS_ZERO_LSN ( unc_l ) && 233 `LOG_COMPARE (& unc_l , & `LSN ( ma )) < 0) { 234 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 235 `LSN ( ma gp -> m ; 237 } i( = DB_TXN_APPLY || cmp_p == 0) { 238 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 239 = ( QUEUE_CURSOR *) dbc -> ; 240 i(( gp -> code & QAM_SETFIRST ) && 241 ma -> f_o = gp -> d_f ) { 242 i( gp -> d_f >rgp-> w_f ) 243 ma -> f_o = gp -> w_f ; 245 i(( t = `__qam_posi ( dbc , 246 & ma -> f_o , DB_LOCK_READ , 0, 247 & exa )) != 0) 248 r ; 249 i(! exa ) 250 ma -> f_o = gp -> w_f ; 251 i( -> ge ! NULL && 252 ( t = `__qam_ut ( fe_dbp , 253 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 254 r ; 258 i(( gp -> code & QAM_SETCUR ) && 259 ma -> cur_o = gp -> d_cur ) { 260 i( gp -> d_cur <rgp-> w_cur ) 261 ma -> cur_o = gp -> w_cur ; 263 i(( t = `__qam_posi ( dbc , & ma -> cur_o , 264 DB_LOCK_READ , 0, & exa )) != 0) 265 r ; 266 i(! exa ) 267 ma -> cur_o = gp -> w_cur ; 268 i( -> ge ! NULL && 269 ( t = `__qam_ut ( fe_dbp , 270 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 271 r ; 275 ma -> dbma . l = * lp ; 278 i(( t = `__memp_ut ( mpf , ma , dbc -> iܙy )) != 0) 279 out ; 281 i(( t = `__LPUT ( dbc , lock )) != 0) 282 out ; 284 de : * lp = gp -> ev_l ; 285 t = 0; 288 r : () `__memp_ut ( mpf , ma , dbc -> iܙy ); 289 () `__LPUT ( dbc , lock ); 292 out : REC_CLOSE ; 293 } } 304 $__qam_d_cov ( dbv , db , lp , , fo ) 305 DB_ENV * dbv ; 306 DBT * db ; 307 DB_LSN * lp ; 308 db_cs ; 309 * fo ; 311 __qam_d_gs * gp ; 312 DB * fe_dbp ; 313 DBC * dbc ; 314 DB_LOCK lock ; 315 DB_MPOOLFILE * mpf ; 316 QAMDATA * qp ; 317 QMETA * ma ; 318 QPAGE * g ; 319 db_pgno_t mg ; 320 cmp_n , t , t_t ; 322 `COMPQUIET ( g , NULL ); 323 `REC_PRINT ( __qam_d_t ); 324 `REC_INTRO ( __qam_d_ad , 1, 1); 326 i(( t = `__qam_fg ( fe_dbp , & gp -> pgno , NULL , 327 DB_MPOOL_CREATE , & g )) != 0) 328 out ; 330 i( g -> pgno = PGNO_INVALID ) { 331 `QAM_DIRTY ( fe_dbp , gp -> pgno , & g ); 332 g -> pgno = gp ->pgno; 333 g -> ty = P_QAMDATA ; 336 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 338 i( `DB_UNDO ( )) { 340 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 341 i(( t = `__db_lg ( dbc , 342 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 343 r ; 344 i(( t = `__memp_fg ( mpf , & mg , NULL , 345 DB_MPOOL_EDIT , & ma )) != 0) { 346 () `__LPUT ( dbc , lock ); 347 r ; 349 i( ma -> f_o = RECNO_OOB || 350 ( `QAM_BEFORE_FIRST ( ma , gp -> o ) && 351 ( ma -> f_o <ma-> cur_o || 352 ma -> f_o - 353 gp -> o <rgp->- ma -> cur_o ))) { 354 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 355 ma -> f_o = gp -> o ; 356 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 358 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 359 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 360 t = t_t ; 361 i( t != 0) 362 r ; 365 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 366 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 367 `F_SET ( qp , QAM_VALID ); 376 i( cmp_n <0 && = DB_TXN_BACKWARD_ROLL ) 377 `LSN ( g gp -> l ; 378 } i( = DB_TXN_APPLY || ( cmp_n > 0 && `DB_REDO (op))) { 380 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 381 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 382 `F_CLR ( qp , QAM_VALID ); 389 i( = DB_TXN_APPLY ) 390 `LSN ( g * lp ; 392 i(( t = `__qam_ut ( fe_dbp , gp -> pgno , g , dbc -> iܙy )) != 0) 393 out ; 395 de : * lp = gp -> ev_l ; 396 t = 0; 399 r : () `__qam_ut ( fe_dbp , gp -> pgno , g , dbc -> iܙy ); 401 out : REC_CLOSE ; 402 } } 412 $__qam_dext_cov ( dbv , db , lp , , fo ) 413 DB_ENV * dbv ; 414 DBT * db ; 415 DB_LSN * lp ; 416 db_cs ; 417 * fo ; 419 __qam_dext_gs * gp ; 420 DB * fe_dbp ; 421 DBC * dbc ; 422 DB_LOCK lock ; 423 DB_MPOOLFILE * mpf ; 424 QAMDATA * qp ; 425 QMETA * ma ; 426 QPAGE * g ; 427 db_pgno_t mg ; 428 cmp_n , t , t_t ; 430 `COMPQUIET ( g , NULL ); 431 `REC_PRINT ( __qam_dext_t ); 432 `REC_INTRO ( __qam_dext_ad , 1, 1); 434 i(( t = `__qam_fg ( fe_dbp , & gp -> pgno , NULL , 435 `DB_REDO ( ? 0 : DB_MPOOL_CREATE , & g )) != 0) { 440 i( `DB_REDO ( && ( t = DB_PAGE_NOTFOUND || = ENOENT )) 441 de ; 442 out ; 445 i( g -> pgno = PGNO_INVALID ) { 446 `QAM_DIRTY ( fe_dbp , gp -> pgno , & g ); 447 g -> pgno = gp ->pgno; 448 g -> ty = P_QAMDATA ; 451 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 453 i( `DB_UNDO ( )) { 455 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 456 i(( t = `__db_lg ( dbc , 457 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 458 r ; 459 i(( t = `__memp_fg ( mpf , & mg , NULL , 460 DB_MPOOL_EDIT , & ma )) != 0) { 461 () `__LPUT ( dbc , lock ); 462 r ; 464 i( ma -> f_o = RECNO_OOB || 465 ( `QAM_BEFORE_FIRST ( ma , gp -> o ) && 466 ( ma -> f_o <ma-> cur_o || 467 ma -> f_o - 468 gp -> o <rgp->- ma -> cur_o ))) { 469 ma -> f_o = gp -> o ; 470 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 472 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 473 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 474 t = t_t ; 475 i( t != 0) 476 r ; 478 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 479 i(( t = `__qam_pem ( dbc , g , 480 gp -> dx ,rgp-> o , &gp-> da )) != 0) 481 r ; 490 i( cmp_n <0 && = DB_TXN_BACKWARD_ROLL ) 491 `LSN ( g gp -> l ; 492 } i( = DB_TXN_APPLY || ( cmp_n > 0 && `DB_REDO (op))) { 493 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 495 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 496 `F_CLR ( qp , QAM_VALID ); 503 i( = DB_TXN_APPLY ) 504 `LSN ( g * lp ; 506 i(( t = `__qam_ut ( fe_dbp , gp -> pgno , g , dbc -> iܙy )) != 0) 507 out ; 509 de : * lp = gp -> ev_l ; 510 t = 0; 513 r : () `__qam_ut ( fe_dbp , gp -> pgno , g , dbc -> iܙy ); 515 out : REC_CLOSE ; 516 } } 526 $__qam_add_cov ( dbv , db , lp , , fo ) 527 DB_ENV * dbv ; 528 DBT * db ; 529 DB_LSN * lp ; 530 db_cs ; 531 * fo ; 533 __qam_add_gs * gp ; 534 DB * fe_dbp ; 535 DBC * dbc ; 536 DB_MPOOLFILE * mpf ; 537 QAMDATA * qp ; 538 QMETA * ma ; 539 QPAGE * g ; 540 db_pgno_t mg ; 541 cmp_n , t ; 543 `COMPQUIET ( g , NULL ); 544 `REC_PRINT ( __qam_add_t ); 545 `REC_INTRO ( __qam_add_ad , 1, 1); 547 i(( t = `__qam_fg ( fe_dbp , & gp -> pgno , NULL , 548 `DB_UNDO ( ? 0 : DB_MPOOL_CREATE , & g )) != 0) { 553 i( `DB_UNDO ( && ( t = DB_PAGE_NOTFOUND || = ENOENT )) 554 de ; 555 out ; 558 i( g -> pgno = PGNO_INVALID ) { 559 `QAM_DIRTY ( fe_dbp , gp -> pgno , & g ); 560 g -> pgno = gp ->pgno; 561 g -> ty = P_QAMDATA ; 564 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 566 i( `DB_REDO ( )) { 568 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 569 i(( t = `__memp_fg ( mpf , & mg , NULL , 570 0, & ma )) != 0) 571 r ; 572 i( `QAM_BEFORE_FIRST ( ma , gp -> o )) { 573 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 574 ma -> f_o = gp -> o ; 576 i( gp -> o = ma -> cur_o || 577 `QAM_AFTER_CURRENT ( ma , gp -> o )) { 578 `REC_DIRTY ( mpf , dbc -> iܙy , & ma ); 579 ma -> cur_o = gp -> o + 1; 581 i(( t = `__memp_ut ( mpf , ma , dbc -> iܙy )) != 0) 582 r ; 585 i( = DB_TXN_APPLY || cmp_n > 0) { 586 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 588 i(( t = `__qam_pem ( dbc , 589 g , gp -> dx ,rgp-> o , &gp-> da )) != 0) 590 r ; 597 i( = DB_TXN_APPLY ) 598 `LSN ( g * lp ; 600 } i( `DB_UNDO ( )) { 606 i( gp -> dda . size != 0) { 607 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 608 i(( t = `__qam_pem ( dbc , g , 609 gp -> dx ,rgp-> o , &gp-> dda )) != 0) 610 r ; 612 i(!( gp -> vag & QAM_VALID )) { 613 qp = `QAM_GET_RECORD ( 614 fe_dbp , g , gp -> dx ); 615 `F_CLR ( qp , QAM_VALID ); 618 `QAM_DIRTY ( fe_dbp , g -> pgno , &pagep); 619 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 620 qp -> ags = 0; 630 i( cmp_n <0 && = DB_TXN_BACKWARD_ROLL ) 631 `LSN ( g gp -> l ; 634 i(( t = `__qam_ut ( fe_dbp , gp -> pgno , g , dbc -> iܙy )) != 0) 635 out ; 637 de : * lp = gp -> ev_l ; 638 t = 0; 641 r : () `__qam_ut ( fe_dbp , gp -> pgno , g , dbc -> iܙy ); 644 out : REC_CLOSE ; 645 } } @../qam/qam_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/mp.h " 16 ~"dbc/qam.h " 18 #ifde HAVE_STATISTICS 26 $__qam_ ( dbc , p , ags ) 27 DBC * dbc ; 28 * p ; 29 u_t32_t ags ; 31 DB * dbp ; 32 DB_LOCK lock ; 33 DB_MPOOLFILE * mpf ; 34 DB_QUEUE_STAT * ; 35 PAGE * h ; 36 QAMDATA * qp , * ; 37 QMETA * ma ; 38 QUEUE * t ; 39 db_dx_t dx ; 40 db_pgno_t f , ϡ , pgno , pg_ext , ; 41 u_t32_t _n ; 42 t , t_t ; 44 dbp = dbc ->dbp; 46 `LOCK_INIT ( lock ); 47 mpf = dbp ->mpf; 48 = NULL ; 49 t = dbp -> q_ ; 51 i( p = NULL ) 55 i(( t = `__os_umloc ( dbp -> dbv , (* ), &sp)) != 0) 56 r ; 57 `memt ( , 0, (*sp)); 59 _n = (( QUEUE *) dbp -> q_ )->re_len; 62 i(( t = `__db_lg ( dbc , 0, t -> q_ma , DB_LOCK_READ , 0, & lock )) != 0) 63 r ; 64 i(( t = `__memp_fg ( mpf , & t -> q_ma , dbc -> txn , 0, & ma )) != 0) 65 r ; 67 i( ags = DB_FAST_STAT ) { 68 -> qs_nkeys = ma -> dbma . key_cou ; 69 -> qs_nda = ma -> dbma . cd_cou ; 70 ma_ly ; 73 f = `QAM_RECNO_PAGE ( dbp , ma -> f_o ); 74 ϡ = `QAM_RECNO_PAGE ( dbp , ma -> cur_o ); 76 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 77 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 78 t = t_t ; 79 i( t != 0) 80 r ; 82 pgno = f ; 83 i( f > ϡ ) 84 = `QAM_RECNO_PAGE ( dbp , UINT32_MAX ); 86 = ϡ ; 89 pg_ext = (( QUEUE *) dbp -> q_ )-> ge_ext ; 90 beg : 92 ; pgno < ; ++pgno) { 93 i(( t = 94 `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & lock )) != 0) 95 r ; 96 t = `__qam_fg ( dbp , & pgno , dbc -> txn , 0, & h ); 97 i( t = ENOENT ) { 98 pgno + pg_ext - 1; 101 i( t = DB_PAGE_NOTFOUND ) { 102 i( pg_ext == 0) { 103 i( pgno ! && f ! ϡ ) 104 r ; 105 t = 0; 108 pgno +( pg_ext - ((pgno - 1) %g_ext)) - 1; 111 i( t != 0) 112 r ; 114 ++ -> qs_ges ; 116 = ( QAMDATA *)(( u_t8_t *) h + dbp -> pgsize - _n ); 117 dx = 0, qp = `QAM_GET_RECORD ( dbp , h , indx); 118 qp < ; 119 ++ dx , qp = `QAM_GET_RECORD ( dbp , h , indx)) { 120 i( `F_ISSET ( qp , QAM_VALID )) 121 -> qs_nda ++; 123 -> qs_pg + _n ; 126 t = `__qam_ut ( dbp , pgno , h , dbc -> iܙy ); 127 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 128 t = t_t ; 129 i( t != 0) 130 r ; 133 i(( t = `__LPUT ( dbc , lock )) != 0) 134 r ; 135 i( f > ϡ ) { 136 pgno = 1; 137 = ϡ ; 138 f = ϡ ; 139 beg ; 143 i(( t = `__db_lg ( dbc , 144 0, t -> q_ma , `F_ISSET ( dbp , DB_AM_RDONLY ) ? 145 DB_LOCK_READ : DB_LOCK_WRITE , 0, & lock )) != 0) 146 r ; 147 i(( t = `__memp_fg ( mpf , & t -> q_ma , dbc -> txn , 148 `F_ISSET ( dbp , DB_AM_RDONLY ? 0 : DB_MPOOL_DIRTY , & ma )) != 0) 149 r ; 151 i(! `F_ISSET ( dbp , DB_AM_RDONLY )) 152 ma -> dbma . key_cou = 153 ma -> dbma . cd_cou = -> qs_nda ; 154 -> qs_nkeys = sp-> qs_nda ; 156 ma_ly : 158 -> qs_magic = ma -> dbma . magic ; 159 -> qs_vsi = ma -> dbma . vsi ; 160 -> qs_maags = ma -> dbma . ags ; 161 -> qs_gesize = ma -> dbma . gesize ; 162 -> qs_exsize = ma -> ge_ext ; 163 -> qs__n = ma -> _n ; 164 -> qs__d = ma -> _d ; 165 -> qs_f_o = ma -> f_o ; 166 -> qs_cur_o = ma -> cur_o ; 169 t = `__memp_ut ( mpf , ma , dbc -> iܙy ); 170 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 171 t = t_t ; 172 i( t != 0) 173 r ; 175 *( DB_QUEUE_STAT **) p = ; 178 r : i( ! NULL ) 179 `__os_u ( dbp -> dbv , ); 182 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 183 t = t_t ; 185 ( t ); 186 } } 195 $__qam__t ( dbc , ags ) 196 DBC * dbc ; 197 u_t32_t ags ; 199 DB * dbp ; 200 DB_ENV * dbv ; 201 DB_QUEUE_STAT * ; 202 t ; 204 dbp = dbc ->dbp; 205 dbv = dbp ->dbenv; 207 i(( t = `__qam_ ( dbc , & , `LF_ISSET ( DB_FAST_STAT ))) != 0) 208 ( t ); 210 i( `LF_ISSET ( DB_STAT_ALL )) { 211 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 212 `__db_msg ( dbv , "Default Queue database information:"); 214 `__db_msg ( dbv , "%lx\tQueumaginumb", ( u_lg ) -> qs_magic ); 215 `__db_msg ( dbv , "%lu\tQueuvsiڂumb", ( u_lg ) -> qs_vsi ); 216 `__db_dl ( dbv , "Fixed-ngthecd size", ( u_lg ) -> qs__n ); 217 `__db_msg ( dbv , "%#x\tFixed-ngthecdad", () -> qs__d ); 218 `__db_dl ( dbv , 219 "Undlyg dabaagsize", ( u_lg ) -> qs_gesize ); 220 `__db_dl ( dbv , 221 "Undlyg dabax size", ( u_lg ) -> qs_exsize ); 222 `__db_dl ( dbv , 223 "Numb ocdhdaba", ( u_lg ) -> qs_nkeys ); 224 `__db_dl ( dbv , "Numb odabaages", ( u_lg ) -> qs_ges ); 225 `__db_dl_p ( dbv , 227 ( u_lg ) -> qs_pg , 228 `DB_PCT_PG ( -> qs_pg , sp-> qs_ges , sp-> qs_gesize ), "ff"); 229 `__db_msg ( dbv , 230 "%lu\tF undedecd", ( u_lg ) -> qs_f_o ); 231 `__db_msg ( dbv , 232 "%lu\tNexavaab˄ecdumb", ( u_lg ) -> qs_cur_o ); 234 `__os_u ( dbv , ); 237 } } 242 $__qam_ ( dbc , p , ags ) 243 DBC * dbc ; 244 * p ; 245 u_t32_t ags ; 247 `COMPQUIET ( p , NULL ); 248 `COMPQUIET ( ags , 0); 250 ( `__db__n_but ( dbc -> dbp -> dbv )); 251 } } @../qam/qam_stub.c 9 #idef HAVE_QUEUE 10 ~"db_cfig.h " 12 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/qam.h " 29 $__db_no_queue_am ( dbv ) 30 DB_ENV * dbv ; 32 `__db_rx ( dbv , 34 ( DB_OPNOTSUP ); 35 } } 38 $__db_queue ( dbp , ags ) 39 DB * dbp ; 40 u_t32_t ags ; 42 `COMPQUIET ( ags , 0); 43 ( `__db_no_queue_am ( dbp -> dbv )); 44 } } 47 $__qam_31_qamma ( dbp , _me , buf ) 48 DB * dbp ; 49 * _me ; 50 u_t8_t * buf ; 52 `COMPQUIET ( _me , NULL ); 53 `COMPQUIET ( buf , NULL ); 54 ( `__db_no_queue_am ( dbp -> dbv )); 55 } } 58 $__qam_32_qamma ( dbp , _me , buf ) 59 DB * dbp ; 60 * _me ; 61 u_t8_t * buf ; 63 `COMPQUIET ( _me , NULL ); 64 `COMPQUIET ( buf , NULL ); 65 ( `__db_no_queue_am ( dbp -> dbv )); 66 } } 69 $__qam_nd ( dbc , key , da ) 70 DBC * dbc ; 71 DBT * key , * da ; 73 `COMPQUIET ( key , NULL ); 74 `COMPQUIET ( da , NULL ); 75 ( `__db_no_queue_am ( dbc -> dbp -> dbv )); 76 } } 79 $__qamc_dup ( ig_dbc , w_dbc ) 80 DBC * ig_dbc , * w_dbc ; 82 `COMPQUIET ( w_dbc , NULL ); 83 ( `__db_no_queue_am ( ig_dbc -> dbp -> dbv )); 84 } } 87 $__qamc_ ( dbc ) 88 DBC * dbc ; 90 ( `__db_no_queue_am ( dbc -> dbp -> dbv )); 91 } } 94 $__qam_db_o ( dbp , ags ) 95 DB * dbp ; 96 u_t32_t ags ; 98 `COMPQUIET ( dbp , NULL ); 99 `COMPQUIET ( ags , 0); 101 } } 104 $__qam_db_ ( dbp ) 105 DB * dbp ; 107 `COMPQUIET ( dbp , NULL ); 109 } } 112 $__qam_ex_mes ( dbv , me , mip ) 113 DB_ENV * dbv ; 114 * me ; 115 *** mip ; 117 `COMPQUIET ( me , NULL ); 118 `COMPQUIET ( mip , NULL ); 119 ( `__db_no_queue_am ( dbv )); 120 } } 123 $__qam_g_fi ( dbp , fip ) 124 DB * dbp ; 125 QUEUE_FILELIST ** fip ; 127 `COMPQUIET ( fip , NULL ); 128 ( `__db_no_queue_am ( dbp -> dbv )); 129 } } 132 $__qam__t ( dbv , dbp , dbsiz ) 133 DB_ENV * dbv ; 134 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 135 size_t * dbsiz ; 137 `COMPQUIET ( dbv , NULL ); 138 `COMPQUIET ( dbp , NULL ); 139 `COMPQUIET ( dbsiz , NULL ); 141 } } 144 $__qam__cov ( dbv , dbp , dbsiz ) 145 DB_ENV * dbv ; 146 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 147 size_t * dbsiz ; 149 `COMPQUIET ( dbv , NULL ); 150 `COMPQUIET ( dbp , NULL ); 151 `COMPQUIET ( dbsiz , NULL ); 153 } } 156 $__qam_machk ( dbp , me , qma ) 157 DB * dbp ; 158 cڡ * me ; 159 QMETA * qma ; 161 `COMPQUIET ( me , NULL ); 162 `COMPQUIET ( qma , NULL ); 163 ( `__db_no_queue_am ( dbp -> dbv )); 164 } } 167 $__qam_w_fe ( dbp , txn , fhp , me ) 168 DB * dbp ; 169 DB_TXN * txn ; 170 DB_FH * fhp ; 171 cڡ * me ; 173 `COMPQUIET ( txn , NULL ); 174 `COMPQUIET ( fhp , NULL ); 175 `COMPQUIET ( me , NULL ); 176 ( `__db_no_queue_am ( dbp -> dbv )); 177 } } 180 $__qam_ݒ ( dbp , txn , me , ba_pgno , mode , ags ) 181 DB * dbp ; 182 DB_TXN * txn ; 183 cڡ * me ; 184 db_pgno_t ba_pgno ; 185 mode ; 186 u_t32_t ags ; 188 `COMPQUIET ( txn , NULL ); 189 `COMPQUIET ( me , NULL ); 190 `COMPQUIET ( ba_pgno , 0); 191 `COMPQUIET ( mode , 0); 192 `COMPQUIET ( ags , 0); 193 ( `__db_no_queue_am ( dbp -> dbv )); 194 } } 197 $__qam_pg_out ( dbv , pg , , cook ) 198 DB_ENV * dbv ; 199 db_pgno_t pg ; 200 * ; 201 DBT * cook ; 203 `COMPQUIET ( pg , 0); 204 `COMPQUIET ( , NULL ); 205 `COMPQUIET ( cook , NULL ); 206 ( `__db_no_queue_am ( dbv )); 207 } } 210 $__qam_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 211 DB * dbp ; 212 VRFY_DBINFO * vdp ; 213 db_pgno_t pgno ; 214 PAGE * h ; 215 * hd ; 216 (* back `__P ((*, const *)); 217 u_t32_t ags ; 219 `COMPQUIET ( vdp , NULL ); 220 `COMPQUIET ( pgno , 0); 221 `COMPQUIET ( h , NULL ); 222 `COMPQUIET ( hd , NULL ); 223 `COMPQUIET ( back , NULL ); 224 `COMPQUIET ( ags , 0); 225 ( `__db_no_queue_am ( dbp -> dbv )); 226 } } 229 $__qam_t_ext_da ( dbp , me ) 230 DB * dbp ; 231 cڡ * me ; 233 `COMPQUIET ( me , NULL ); 234 ( `__db_no_queue_am ( dbp -> dbv )); 235 } } 238 $__qam_ ( dbc , p , ags ) 239 DBC * dbc ; 240 * p ; 241 u_t32_t ags ; 243 `COMPQUIET ( p , NULL ); 244 `COMPQUIET ( ags , 0); 245 ( `__db_no_queue_am ( dbc -> dbp -> dbv )); 246 } } 249 $__qam__t ( dbc , ags ) 250 DBC * dbc ; 251 u_t32_t ags ; 253 `COMPQUIET ( ags , 0); 254 ( `__db_no_queue_am ( dbc -> dbp -> dbv )); 255 } } 258 $__qam_sync ( dbp ) 259 DB * dbp ; 261 ( `__db_no_queue_am ( dbp -> dbv )); 262 } } 265 $__qam_un ( dbc , coup ) 266 DBC * dbc ; 267 u_t32_t * coup ; 269 `COMPQUIET ( dbc , NULL ); 270 `COMPQUIET ( coup , NULL ); 271 ( `__db_no_queue_am ( dbc -> dbp -> dbv )); 272 } } 275 $__qam_vrfy_da ( dbp , vdp , h , pgno , ags ) 276 DB * dbp ; 277 VRFY_DBINFO * vdp ; 278 QPAGE * h ; 279 db_pgno_t pgno ; 280 u_t32_t ags ; 282 `COMPQUIET ( vdp , NULL ); 283 `COMPQUIET ( h , NULL ); 284 `COMPQUIET ( pgno , 0); 285 `COMPQUIET ( ags , 0); 286 ( `__db_no_queue_am ( dbp -> dbv )); 287 } } 290 $__qam_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 291 DB * dbp ; 292 VRFY_DBINFO * vdp ; 293 QMETA * ma ; 294 db_pgno_t pgno ; 295 u_t32_t ags ; 297 `COMPQUIET ( vdp , NULL ); 298 `COMPQUIET ( ma , NULL ); 299 `COMPQUIET ( pgno , 0); 300 `COMPQUIET ( ags , 0); 301 ( `__db_no_queue_am ( dbp -> dbv )); 302 } } 305 $__qam_vrfy_ruu ( dbp , vdp , ags ) 306 DB * dbp ; 307 VRFY_DBINFO * vdp ; 308 u_t32_t ags ; 310 `COMPQUIET ( vdp , NULL ); 311 `COMPQUIET ( ags , 0); 312 ( `__db_no_queue_am ( dbp -> dbv )); 313 } } 316 $__qam_vrfy_wkqueue ( dbp , vdp , hd , back , ags ) 317 DB * dbp ; 318 VRFY_DBINFO * vdp ; 319 * hd ; 320 (* back `__P ((*, const *)); 321 u_t32_t ags ; 323 `COMPQUIET ( vdp , NULL ); 324 `COMPQUIET ( hd , NULL ); 325 `COMPQUIET ( back , NULL ); 326 `COMPQUIET ( ags , 0); 327 ( `__db_no_queue_am ( dbp -> dbv )); 328 } } @../qam/qam_upgrade.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_upgde.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/qam.h " 23 $__qam_31_qamma ( dbp , _me , buf ) 24 DB * dbp ; 25 * _me ; 26 u_t8_t * buf ; 28 QMETA31 * wma ; 29 QMETA30 * dma ; 31 `COMPQUIET ( dbp , NULL ); 32 `COMPQUIET ( _me , NULL ); 34 wma = ( QMETA31 *) buf ; 35 dma = ( QMETA30 *) buf ; 41 wma -> c_ge = dma ->rec_page; 42 wma -> _d = dma ->re_pad; 43 wma -> _n = dma ->re_len; 44 wma -> cur_o = dma ->cur_recno; 45 wma -> f_o = dma ->first_recno; 46 wma -> t = dma ->start; 47 `memmove ( wma -> dbma . uid , 48 dma -> dbma . uid , (oldmeta->dbmeta.uid)); 49 wma -> dbma . ags = dma ->dbmeta.flags; 50 wma -> dbma . cd_cou = 0; 51 wma -> dbma . key_cou = 0; 52 `ZERO_LSN ( wma -> dbma . unud3 ); 55 wma -> dbma . vsi = 2; 58 } } 67 $__qam_32_qamma ( dbp , _me , buf ) 68 DB * dbp ; 69 * _me ; 70 u_t8_t * buf ; 72 QMETA32 * wma ; 73 QMETA31 * dma ; 75 `COMPQUIET ( dbp , NULL ); 76 `COMPQUIET ( _me , NULL ); 78 wma = ( QMETA32 *) buf ; 79 dma = ( QMETA31 *) buf ; 86 wma -> f_o = dma ->first_recno; 87 wma -> cur_o = dma ->cur_recno; 88 wma -> _n = dma ->re_len; 89 wma -> _d = dma ->re_pad; 90 wma -> c_ge = dma ->rec_page; 91 wma -> ge_ext = 0; 93 wma -> cur_o ++; 94 i( wma -> f_o == 0) 95 wma -> f_o = 1; 98 wma -> dbma . vsi = 3; 101 } } @../qam/qam_verify.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_vify.h " 14 ~"dbc/db_am.h " 15 ~"dbc/mp.h " 16 ~"dbc/qam.h " 25 $__qam_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 26 DB * dbp ; 27 VRFY_DBINFO * vdp ; 28 QMETA * ma ; 29 db_pgno_t pgno ; 30 u_t32_t ags ; 32 DB_ENV * dbv ; 33 QUEUE * qp ; 34 VRFY_PAGEINFO * p ; 35 db_pgno_t * exs , extid , f , ϡ ; 36 size_t n ; 37 cou , i , isbad , xs , t , t_t ; 38 * buf , ** mes ; 40 `COMPQUIET ( cou , 0); 42 dbv = dbp ->dbenv; 43 qp = ( QUEUE *) dbp -> q_ ; 44 exs = NULL ; 45 f = ϡ = 0; 46 isbad = 0; 47 buf = NULL ; 48 mes = NULL ; 50 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 51 ( t ); 57 i(! `F_ISSET ( p , VRFY_INCOMPLETE )) 58 `EPRINT (( dbv , "Page %lu: queue databases must be one-per-file", 59 ( u_lg ) pgno )); 73 i( `DB_ALIGN ( ma -> _n + ( QAMDATA - 1, ( u_t32_t )) * 74 ma -> c_ge + `QPAGE_SZ ( dbp > dbp-> pgsize ) { 75 `EPRINT (( dbv , 77 ( u_lg ) pgno , (u_lg) ma -> _n )); 78 t = DB_VERIFY_FATAL ; 79 r ; 86 vdp -> _d = ma ->re_pad; 87 qp -> _d = () ma ->re_pad; 88 qp -> _n = vdp ->_ ma ->re_len; 89 qp -> c_ge = vdp ->c_g ma ->rec_page; 90 qp -> ge_ext = vdp ->ge_ex ma ->page_ext; 105 i( `F_ISSET ( vdp , VRFY_QMETA_SET )) { 106 isbad = 1; 107 `EPRINT (( dbv , 109 ( u_lg ) pgno )); 110 r ; 112 `F_SET ( vdp , VRFY_QMETA_SET ); 113 qp -> ge_ext = ma ->page_ext; 114 dbp -> pgsize = ma -> dbma . gesize ; 115 qp -> q_ma = pgno ; 116 qp -> q_ro = pgno + 1; 117 vdp -> f_o = ma ->first_recno; 118 vdp -> ϡ_o = ma -> cur_o ; 119 i( qp -> ge_ext != 0) { 120 f = `QAM_RECNO_EXTENT ( dbp , vdp -> f_o ); 121 ϡ = `QAM_RECNO_EXTENT ( dbp , vdp -> ϡ_o ); 130 i(( t = `__db_ame ( dbv , 131 DB_APP_DATA , qp -> d , 0, NULL , & buf )) != 0) 132 r ; 133 i(( t = `__os_dli ( dbv , buf , & mes , & cou )) != 0) 134 r ; 135 `__os_ ( dbv , buf ); 136 buf = NULL ; 138 n = ` ( QUEUE_EXTENT_HEAD + sn( qp -> me ) + 1; 139 i(( t = `__os_mloc ( dbv , n , & buf )) != 0) 140 r ; 141 n = ( size_t ) `tf ( buf ,, QUEUE_EXTENT_HEAD , qp -> me ); 142 i = xs = 0; i < cou ; i++) { 143 i( `cmp ( mes [ i ], buf , n ) == 0) { 145 extid = ( db_pgno_t ) `oul (& mes [ i ][ n ], NULL , 10); 146 i( qp -> ge_ext != 0 && 147 ( ϡ > f ? 148 ( extid > f &&xtid < ϡ ) : 149 ( extid > f ||xtid < ϡ ))) 151 i( exs = NULL && ( t = `__os_mloc ( 152 dbv , ( size_t )( cou - i * ( extid ), 153 & exs )) != 0) 154 r ; 155 exs [ xs ] = extid ; 156 xs ++; 159 i( xs > 0) 160 `__db_rx ( dbv , 161 "Wng: %dxex fefound", xs ); 162 vdp -> xs =extents; 163 vdp -> exs =xtents; 165 r : i(( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )!0 && t == 0) 166 t = t_t ; 167 i( mes ! NULL ) 168 `__os_d ( dbv , mes , cou ); 169 i( buf ! NULL ) 170 `__os_ ( dbv , buf ); 171 i( t !0 && exs ! NULL ) 172 `__os_ ( dbv , exs ); 173 i( `LF_ISSET ( DB_SALVAGE ) && 174 ( t_t = `__db_lvage_mkde ( vdp , pgno )!0 && t == 0) 175 t = t_t ; 176 ( t =0 && isbad =1 ? DB_VERIFY_BAD :et); 177 } } 187 $__qam_vrfy_da ( dbp , vdp , h , pgno , ags ) 188 DB * dbp ; 189 VRFY_DBINFO * vdp ; 190 QPAGE * h ; 191 db_pgno_t pgno ; 192 u_t32_t ags ; 194 DB kedb ; 195 __queue keq ; 196 QAMDATA * qp ; 197 db_o_t i ; 206 kedb . q_ = & keq ; 207 kedb . ags = dbp ->flags; 208 keq . _n = vdp ->re_len; 210 i = 0; i < vdp -> c_ge ; i++) { 211 qp = `QAM_GET_RECORD (& kedb , h , i ); 212 i(( u_t8_t *) qp >(u_t8_*) h + dbp -> pgsize ) { 213 `EPRINT (( dbp -> dbv , 215 ( u_lg ) pgno , (u_lg) i )); 216 ( DB_VERIFY_BAD ); 219 i( qp -> ags & ~( QAM_VALID | QAM_SET )) { 220 `EPRINT (( dbp -> dbv , 222 ( u_lg ) pgno , (u_lg) i , (u_lg) qp -> ags )); 223 ( DB_VERIFY_BAD ); 228 } } 237 $__qam_vrfy_ruu ( dbp , vdp , ags ) 238 DB * dbp ; 239 VRFY_DBINFO * vdp ; 240 u_t32_t ags ; 242 VRFY_PAGEINFO * p ; 243 db_pgno_t i ; 244 t , isbad ; 246 isbad = 0; 248 i(( t = `__db_vrfy_ggefo ( vdp , PGNO_BASE_MD , & p )) != 0) 249 ( t ); 251 i( p -> ty ! P_QAMMETA ) { 252 `EPRINT (( dbp -> dbv , 254 ( u_lg ) PGNO_BASE_MD )); 255 isbad = 1; 256 r ; 259 i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , 0)) != 0) 260 r ; 262 i = 1; i < vdp -> ϡ_pgno ; i++) { 264 i(! `LF_ISSET ( DB_SALVAGE )) 265 `__db_vrfy_ru_edback ( dbp , vdp ); 267 i(( t = `__db_vrfy_puagefo ( dbp -> dbv , vdp , p )) != 0 || 268 ( t = `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 269 ( t ); 270 i(! `F_ISSET ( p , VRFY_IS_ALLZEROES ) && 271 p -> ty ! P_QAMDATA ) { 272 `EPRINT (( dbp -> dbv , 274 ( u_lg ) i , (u_lg) p -> ty )); 275 isbad = 1; 276 r ; 277 } i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , i )) != 0) 278 r ; 281 r : i(( t = `__db_vrfy_puagefo ( dbp -> dbv , vdp , p )) != 0) 282 ( t ); 283 ( isbad =1 ? DB_VERIFY_BAD : 0); 284 } } 295 $__qam_vrfy_wkqueue ( dbp , vdp , hd , back , ags ) 296 DB * dbp ; 297 VRFY_DBINFO * vdp ; 298 * hd ; 299 (* back `__P ((*, const *)); 300 u_t32_t ags ; 302 DB_ENV * dbv ; 303 PAGE * h ; 304 QUEUE * qp ; 305 VRFY_PAGEINFO * p ; 306 db_pgno_t f , i , ϡ , pg_ext , ; 307 isbad , xs , t , t_t ; 309 `COMPQUIET ( h , NULL ); 311 dbv = dbp ->dbenv; 312 qp = dbp -> q_ ; 313 p = NULL ; 314 pg_ext = qp -> ge_ext ; 315 isbad = t = t_t = 0; 318 i( pg_ext == 0) 321 f = `QAM_RECNO_PAGE ( dbp , vdp -> f_o ); 322 ϡ = `QAM_RECNO_PAGE ( dbp , vdp -> ϡ_o ); 324 i = f ; 325 i( f > ϡ ) 326 = `QAM_RECNO_PAGE ( dbp , UINT32_MAX ); 328 = ϡ ; 329 xs = vdp ->nextents; 332 beg : ; i < ; i++) { 337 i( `LF_ISSET ( DB_SALVAGE && ( `__db_lvage_isde ( vdp , i ) != 0)) 339 i(( t_t = `__qam_fg ( dbp , & i , NULL , 0, & h )) != 0) { 340 i( t_t = ENOENT ||_= DB_PAGE_NOTFOUND ) { 341 i +( pg_ext - ((i - 1) %g_ext)) - 1; 349 i( `LF_ISSET ( DB_SALVAGE )) { 350 i( t == 0) 351 t = t_t ; 354 ( t_t ); 357 i( `LF_ISSET ( DB_SALVAGE )) { 363 i(( t_t = `__db_lvage ( dbp , 364 vdp , i , h , hd , back , ags )) != 0) { 365 i( t == 0) 366 t = t_t ; 367 isbad = 1; 378 i(( t = `__db_vrfy_comm ( dbp , 379 vdp , h , i , ags )= DB_VERIFY_BAD ) 380 isbad = 1; 381 i( t != 0) 382 r ; 384 `__db_vrfy_ru_edback ( dbp , vdp ); 386 i(( t = `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 387 ( t ); 388 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) 389 put ; 390 i( p -> ty ! P_QAMDATA ) { 391 `EPRINT (( dbv , 393 ( u_lg ) i , (u_lg) p -> ty )); 394 isbad = 1; 395 r ; 397 i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , i )) != 0) 398 r ; 399 i(( t = `__qam_vrfy_da ( dbp , vdp , 400 ( QPAGE *) h , i , ags )= DB_VERIFY_BAD ) 401 isbad = 1; 402 i( t != 0) 403 r ; 405 put : i(( t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 406 r ; 407 p = NULL ; 411 i(( t_t = `__qam_ut ( dbp , i , h , dbp-> iܙy )) != 0) { 412 i( `LF_ISSET ( DB_SALVAGE )) { 413 i( t == 0) 414 t = t_t ; 417 ( t_t ); 421 i( f > ϡ ) { 422 i = 1; 423 = ϡ ; 424 f = ϡ ; 425 beg ; 432 i( `LF_ISSET ( DB_SALVAGE && xs != 0) { 433 xs --; 434 i = 1 + 435 vdp -> exs [ xs ] * vdp-> ge_ext ; 436 = i + vdp -> ge_ext ; 437 beg ; 441 r : i(( t_t = `__qam_ut ( dbp , i , h , dbp-> iܙy )) != 0) 442 ( t =0 ? t_t :et); 443 i( p ! NULL && 444 ( t_t = `__db_vrfy_puagefo ( dbv , vdp , p )) != 0) 445 ( t =0 ? t_t :et); 447 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 448 } } 458 $__qam_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 459 DB * dbp ; 460 VRFY_DBINFO * vdp ; 461 db_pgno_t pgno ; 462 PAGE * h ; 463 * hd ; 464 (* back `__P ((*, const *)); 465 u_t32_t ags ; 467 DBT dbt , key ; 468 QAMDATA * qp , * q ; 469 db_o_t o ; 470 t , r_t , t_t ; 471 u_t32_t gesize , qn ; 472 u_t32_t i ; 474 `memt (& dbt , 0, ( DBT )); 475 `memt (& key , 0, ( DBT )); 477 r_t = t = 0; 479 gesize = ( u_t32_t ) dbp -> mpf -> m -> . _gesize ; 480 qn = (( QUEUE *) dbp -> q_ )-> _n ; 481 dbt . size = qn ; 482 key . da = & o ; 483 key . size = ( o ); 484 o = ( pgno - 1* `QAM_RECNO_PER_PAGE ( dbp ) + 1; 485 i = 0; 486 q = ( QAMDATA *)(( u_t8_t *) h + gesize - qn ); 487 qp = `QAM_GET_RECORD ( dbp , h , i ); q< q ; 488 o ++, i ++, qp = `QAM_GET_RECORD ( dbp , h , i)) { 489 i( `F_ISSET ( qp , ~( QAM_VALID | QAM_SET ))) 491 i(! `F_ISSET ( qp , QAM_SET )) 494 i(! `LF_ISSET ( DB_AGGRESSIVE && ! `F_ISSET ( qp , QAM_VALID )) 497 dbt . da = qp ->data; 498 i(( t = `__db_vrfy_dbt (& key , 499 0, " ", hd , back , 1, vdp )) != 0) 500 r_t = t ; 502 i(( t = `__db_vrfy_dbt (& dbt , 503 0, " ", hd , back , 0, vdp )) != 0) 504 r_t = t ; 507 i(( t_t = `__db_lvage_mkde ( vdp , pgno )) != 0) 508 ( t_t ); 509 (( t =0 && r_t != 0) ?rr_ret :et); 510 } } @../rep/rep_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_am.h " 8 ~"dbc/log.h " 9 ~"dbc/mp.h " 10 ~"dbc/txn.h " 17 $__p_upde_buf ( buf , max , , 18 f_l , f_vs , num_fes ) 19 u_t8_t * buf ; 20 size_t max , * ; 21 DB_LSN * f_l ; 22 u_t32_t f_vs ; 23 u_t32_t num_fes ; 25 u_t32_t ump ; 26 u_t8_t * dbuf ; 27 u_t8_t * bp ; 28 t ; 30 t = 0; 32 bp = buf ; 33 dbuf = bp + max ; 35 i( bp + (* f_l > dbuf ) 36 ( ENOMEM ); 37 i( f_l ! NULL ) 38 `memy ( bp , f_l , (*first_lsn)); 40 `memt ( bp , 0, (* f_l )); 41 bp +(* f_l ); 43 ump = ( u_t32_t ) f_vs ; 44 i( bp + ( ump > dbuf ) 45 ( ENOMEM ); 46 `memy ( bp , & ump , (uinttmp)); 47 bp +( ump ); 49 ump = ( u_t32_t ) num_fes ; 50 i( bp + ( ump > dbuf ) 51 ( ENOMEM ); 52 `memy ( bp , & ump , (uinttmp)); 53 bp +( ump ); 55 * = ( u_t32_t )( bp - buf ); 57 ( t ); 58 } } 65 $__p_upde_ad ( dbv , cbuf , x , g ) 66 DB_ENV * dbv ; 67 * cbuf ; 68 ** x ; 69 __p_upde_gs ** g ; 71 __p_upde_gs * gp ; 72 u_t32_t ump ; 73 u_t8_t * bp ; 74 t ; 76 i(( t = `__os_mloc ( dbv , 77 ( __p_upde_gs ), & gp )) != 0) 78 ( t ); 79 bp = cbuf ; 80 `memy (& gp -> f_l , bp , (argp->first_lsn)); 81 bp +( gp -> f_l ); 83 `memy (& ump , bp , (uinttmp)); 84 gp -> f_vs = ( u_t32_t ) ump ; 85 bp +( ump ); 87 `memy (& ump , bp , (uinttmp)); 88 gp -> num_fes = ( u_t32_t ) ump ; 89 bp +( ump ); 91 * x = bp ; 92 * g = gp ; 94 } } 102 $__p_fefo_buf ( buf , max , , 103 pgsize , pgno , max_pgno , fum , id , ty , 104 ags , uid , fo ) 105 u_t8_t * buf ; 106 size_t max , * ; 107 u_t32_t pgsize ; 108 db_pgno_t pgno ; 109 db_pgno_t max_pgno ; 110 u_t32_t fum ; 111 t32_t id ; 112 u_t32_t ty ; 113 u_t32_t ags ; 114 cڡ DBT * uid ; 115 cڡ DBT * fo ; 117 u_t32_t zo ; 118 u_t32_t ump ; 119 u_t8_t * dbuf ; 120 u_t8_t * bp ; 121 t ; 123 t = 0; 125 bp = buf ; 126 dbuf = bp + max ; 128 ump = ( u_t32_t ) pgsize ; 129 i( bp + ( ump > dbuf ) 130 ( ENOMEM ); 131 `memy ( bp , & ump , (uinttmp)); 132 bp +( ump ); 134 ump = ( u_t32_t ) pgno ; 135 i( bp + ( ump > dbuf ) 136 ( ENOMEM ); 137 `memy ( bp , & ump , (uinttmp)); 138 bp +( ump ); 140 ump = ( u_t32_t ) max_pgno ; 141 i( bp + ( ump > dbuf ) 142 ( ENOMEM ); 143 `memy ( bp , & ump , (uinttmp)); 144 bp +( ump ); 146 ump = ( u_t32_t ) fum ; 147 i( bp + ( ump > dbuf ) 148 ( ENOMEM ); 149 `memy ( bp , & ump , (uinttmp)); 150 bp +( ump ); 152 ump = ( u_t32_t ) id ; 153 i( bp + ( ump > dbuf ) 154 ( ENOMEM ); 155 `memy ( bp , & ump , (uinttmp)); 156 bp +( ump ); 158 ump = ( u_t32_t ) ty ; 159 i( bp + ( ump > dbuf ) 160 ( ENOMEM ); 161 `memy ( bp , & ump , (uinttmp)); 162 bp +( ump ); 164 ump = ( u_t32_t ) ags ; 165 i( bp + ( ump > dbuf ) 166 ( ENOMEM ); 167 `memy ( bp , & ump , (uinttmp)); 168 bp +( ump ); 170 i( uid = NULL ) { 171 zo = 0; 172 i( bp + ( u_t32_t > dbuf ) 173 ( ENOMEM ); 174 `memy ( bp , & zo , ( u_t32_t )); 175 bp +( u_t32_t ); 177 i( bp + ( uid -> size > dbuf ) 178 ( ENOMEM ); 179 `memy ( bp , & uid -> size , (uid->size)); 180 bp +( uid -> size ); 181 i( bp + uid -> size > dbuf ) 182 ( ENOMEM ); 183 `memy ( bp , uid -> da , uid-> size ); 184 bp + uid -> size ; 187 i( fo = NULL ) { 188 zo = 0; 189 i( bp + ( u_t32_t > dbuf ) 190 ( ENOMEM ); 191 `memy ( bp , & zo , ( u_t32_t )); 192 bp +( u_t32_t ); 194 i( bp + ( fo -> size > dbuf ) 195 ( ENOMEM ); 196 `memy ( bp , & fo -> size , (info->size)); 197 bp +( fo -> size ); 198 i( bp + fo -> size > dbuf ) 199 ( ENOMEM ); 200 `memy ( bp , fo -> da , info-> size ); 201 bp + fo -> size ; 204 * = ( u_t32_t )( bp - buf ); 206 ( t ); 207 } } 214 $__p_fefo_ad ( dbv , cbuf , x , g ) 215 DB_ENV * dbv ; 216 * cbuf ; 217 ** x ; 218 __p_fefo_gs ** g ; 220 __p_fefo_gs * gp ; 221 u_t32_t ump ; 222 u_t8_t * bp ; 223 t ; 225 i(( t = `__os_mloc ( dbv , 226 ( __p_fefo_gs ), & gp )) != 0) 227 ( t ); 228 bp = cbuf ; 229 `memy (& ump , bp , (uinttmp)); 230 gp -> pgsize = ( u_t32_t ) ump ; 231 bp +( ump ); 233 `memy (& ump , bp , (uinttmp)); 234 gp -> pgno = ( db_pgno_t ) ump ; 235 bp +( ump ); 237 `memy (& ump , bp , (uinttmp)); 238 gp -> max_pgno = ( db_pgno_t ) ump ; 239 bp +( ump ); 241 `memy (& ump , bp , (uinttmp)); 242 gp -> fum = ( u_t32_t ) ump ; 243 bp +( ump ); 245 `memy (& ump , bp , (uinttmp)); 246 gp -> id = ( t32_t ) ump ; 247 bp +( ump ); 249 `memy (& ump , bp , (uinttmp)); 250 gp -> ty = ( u_t32_t ) ump ; 251 bp +( ump ); 253 `memy (& ump , bp , (uinttmp)); 254 gp -> ags = ( u_t32_t ) ump ; 255 bp +( ump ); 257 `memt (& gp -> uid , 0, (argp->uid)); 258 `memy (& gp -> uid . size , bp , ( u_t32_t )); 259 bp +( u_t32_t ); 260 gp -> uid . da = bp ; 261 bp + gp -> uid . size ; 263 `memt (& gp -> fo , 0, (argp->info)); 264 `memy (& gp -> fo . size , bp , ( u_t32_t )); 265 bp +( u_t32_t ); 266 gp -> fo . da = bp ; 267 bp + gp -> fo . size ; 269 * x = bp ; 270 * g = gp ; 272 } } @../rep/rep_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_am.h " 8 ~"dbc/log.h " 9 ~"dbc/mp.h " 10 ~"dbc/txn.h " @../rep/rep_backup.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/f.h " 15 ~"dbc/lock.h " 16 ~"dbc/log.h " 17 ~"dbc/mp.h " 18 ~"dbc/qam.h " 19 ~"dbc/txn.h " 21 __p_check_uid __P (( DB_ENV *, u_t8_t *, u_int8_t *, u_int8_t *)); 22 __p_fede __P (( DB_ENV *, , REP *, __p_fefo_gs *, 23 u_t32_t )); 24 __p_fd_dbs __P (( DB_ENV *, u_t8_t **, size_t *, 25 size_t *, u_t32_t *)); 26 __p_g_fefo __P (( DB_ENV *, const *, 27 cڡ *, __p_fefo_gs *, u_t8_t *, u_t32_t *)); 28 __p_g_fe_li __P (( DB_ENV *, DB_FH *, DBT *)); 29 __p_log_tup __P (( DB_ENV *, 30 REP *, u_t32_t , u_t32_t, DB_LSN *)); 31 __p_mpf_ݒ __P (( DB_ENV *, DB_MPOOLFILE **, 32 __p_fefo_gs *, u_t32_t )); 33 __p_xtfe __P (( DB_ENV *, , REP *)); 34 __p_ge_g __P (( DB_ENV *, REP *, __p_fefo_gs *, 35 u_t32_t )); 36 __p_ge_ndges __P (( DB_ENV *, , 37 __p_fefo_gs *, DB_MPOOLFILE *, DB *)); 38 __p_queue_fede __P (( DB_ENV *, REP *, __p_fefo_gs *)); 39 __p_move_l __P (( DB_ENV *, DBT *)); 40 __p_move_fe __P (( DB_ENV *, u_t8_t *, const *, 41 u_t32_t , u_int32_t)); 42 __p_move_logs __P (( DB_ENV *)); 43 __p_move_by_li __P (( DB_ENV *, *, u_t32_t )); 44 __p_move_by_efix __P (( DB_ENV *, const *, const *, 45 size_t , APPNAME )); 46 __p_wk_d __P (( DB_ENV *, cڡ *, u_t8_t **, u_int8_t *, 47 size_t *, size_*, u_t32_t *)); 48 __p_wre_ge __P (( DB_ENV *, REP *, __p_fefo_gs *)); 57 $__p_upde_q ( dbv , eid ) 58 DB_ENV * dbv ; 59 eid ; 61 DBT updbt , vdbt ; 62 DB_LOG * db ; 63 DB_LOGC * logc ; 64 DB_LSN l ; 65 size_t f , fesz , updn ; 66 u_t32_t fet , ag , vsi ; 67 u_t8_t * buf , * ; 68 t , t_t ; 82 db = dbv -> lg_hd ; 83 logc = NULL ; 84 fet = 0; 85 f = 0; 86 updn = 0; 87 fesz = MEGABYTE ; 88 i(( t = `__os_oc ( dbv , 1, fesz , & buf )) != 0) 89 ( t ); 95 = buf + ( __p_upde_gs ); 96 i(( t = `__p_fd_dbs ( 97 dbv , & , & fesz , & f , & fet )) != 0) 98 r ; 104 ag = DB_SET ; 105 i(( t = `__log_g_ab_l ( dbv , & l )) != 0) { 106 i( t ! DB_NOTFOUND ) 107 r ; 112 t = 0; 113 ag = DB_FIRST ; 119 i(( t = `__log_curs ( dbv , & logc )) != 0) 120 r ; 122 `memt (& vdbt , 0, (vdbt)); 127 i(( t = `__logc_g ( logc , & l , & vdbt , ag )) != 0) { 133 i( t ! DB_NOTFOUND ) 134 r ; 135 `INIT_LSN ( l ); 136 vsi = DB_LOGVERSION ; 138 i(( t = `__logc_vsi ( logc , & vsi )) != 0) 139 r ; 144 i(( t = `__p_upde_buf ( buf , fesz , & updn , 145 & l , vsi , fet )) != 0) 146 r ; 150 `DB_INIT_DBT ( updbt , buf , f + updn ); 152 `LOG_SYSTEM_LOCK ( dbv ); 153 l = (( LOG *) db -> gfo . imy )->lsn; 154 `LOG_SYSTEM_UNLOCK ( dbv ); 155 () `__p_nd_mesge ( 156 dbv , eid , REP_UPDATE , & l , & updbt , 0, 0); 158 r : `__os_ ( dbv , buf ); 159 i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 160 t = t_t ; 161 ( t ); 162 } } 179 $__p_fd_dbs ( dbv , , feszp , fp , fe ) 180 DB_ENV * dbv ; 181 u_t8_t ** ; 182 size_t * feszp , * fp ; 183 u_t32_t * fe ; 185 t ; 186 ** dd , * _d ; 187 u_t8_t * ig ; 189 t = 0; 190 _d = NULL ; 191 i( dbv -> db_da_d = NULL ) { 196 t = `__p_wk_d ( dbv , dbv-> db_home , , NULL , 197 feszp , fp , fe ); 199 ig = * ; 200 dd = dbv -> db_da_d ; *dd ! NULL ; ++ddir) { 201 i(( t = `__db_ame ( dbv , DB_APP_NONE , 202 * dd , 0, NULL , & _d )) != 0) 204 i(( t = `__p_wk_d ( dbv , _d , , ig , 205 feszp , fp , fe )) != 0) 207 `__os_ ( dbv , _d ); 208 _d = NULL ; 213 i( t == 0) 214 t = `__p_wk_d ( dbv , NULL , 215 , NULL , feszp , fp , fe ); 217 i( _d ! NULL ) 218 `__os_ ( dbv , _d ); 219 ( t ); 220 } } 231 $__p_wk_d ( dbv , d , , ig , feszp , fp , fe ) 232 DB_ENV * dbv ; 233 cڡ * d ; 234 u_t8_t ** , * ig ; 235 size_t * feszp , * fp ; 236 u_t32_t * fe ; 238 DBT medbt , uiddbt ; 239 __p_fefo_gs tmp ; 240 size_t n , offt ; 241 t , f_fe , i , t ; 242 u_t8_t * r , uid [ DB_FILE_ID_LEN ]; 243 * fe , ** mes , * subdb ; 245 `memt (& medbt , 0, (namedbt)); 246 `memt (& uiddbt , 0, (uiddbt)); 247 i( d = NULL ) { 248 `RPRINT ( dbv , (dbenv, 250 i(( t = `__memp_memli ( dbv , & mes , & t )) != 0) 251 ( t ); 253 `RPRINT ( dbv , (dbenv, 254 "Wk_d: Gtg inff d: %s", d )); 255 i(( t = `__os_dli ( dbv , d , & mes , & t )) != 0) 256 ( t ); 258 r = NULL ; 259 i( ! NULL ) 260 r = * ; 261 `RPRINT ( dbv , (dbenv, "Walk_dir: Dir %s has %d files", 262 ( d = NULL ? "INMEM" : d, t )); 263 f_fe = 1; 264 i = 0; i < t ; i++) { 265 `RPRINT ( dbv , (dbenv, 266 "Wk_d: F%dame: %s", i , mes [i])); 270 i( `cmp ( mes [ i ], "__db", 4) == 0) 272 i( `cmp ( mes [ i ], "DB_CONFIG", 9) == 0) 274 i( `cmp ( mes [ i ], "log", 3) == 0) 280 i( d = NULL ) { 281 fe = NULL ; 282 subdb = mes [ i ]; 284 fe = mes [ i ]; 285 subdb = NULL ; 287 i(( t = `__p_g_fefo ( dbv , 288 fe , subdb , & tmp , uid , fe )) != 0) { 292 `RPRINT ( dbv , (dbenv, 294 i , mes [i], `db_ ( t ))); 295 t = 0; 298 `RPRINT ( dbv , (dbenv, 300 tmp . fum , * fe , mes [ i ], `P_TO_ULONG ( r ), 301 ( u_lg ) tmp . pgsize , (u_lgmp. max_pgno )); 308 i( f_fe && ig ! NULL ) { 312 i( r ! ig && 313 ( t = `__p_check_uid ( dbv , ig , 314 ig + * fp , uid )) != 0) { 319 i( t = DB_KEYEXIST ) { 320 t = 0; 321 (* fe )--; 323 r ; 325 f_fe = 0; 328 `DB_SET_DBT ( medbt , mes [ i ], ` (names[i]) + 1); 329 `DB_SET_DBT ( uiddbt , uid , DB_FILE_ID_LEN ); 330 y : t = `__p_fefo_buf ( r , * feszp , & n , 331 tmp . pgsize ,mp. pgno ,mp. max_pgno , 332 tmp . fum ,mp. id ,mp. ty , 333 tmp . ags , & uiddbt , & medbt ); 334 i( t = ENOMEM ) { 335 offt = ( size_t )( r - * ); 336 * feszp *= 2; 341 * -( __p_upde_gs ); 342 i(( t = `__os_loc ( dbv , * feszp , * )) != 0) 344 * +( __p_upde_gs ); 345 r = * + offt ; 350 y ; 352 r + n ; 353 * = r ; 354 * fp + n ; 356 r : 357 `__os_d ( dbv , mes , t ); 358 ( t ); 359 } } 369 $__p_check_uid ( dbv , , d , uid ) 370 DB_ENV * dbv ; 371 u_t8_t * , * d , * uid ; 373 __p_fefo_gs * r ; 374 u_t8_t * fuid ; 375 t ; 376 * xt ; 378 t = 0; 379 xt = ; 380 r = NULL ; 381 xt <(*) d ) { 382 i(( t = 383 `__p_fefo_ad ( dbv , xt , &xt, & r )) != 0) { 384 `__db_rx ( dbv , "Rep_check_uid: Couldot malloc"); 385 r ; 387 fuid = ( u_t8_t *) r -> uid . da ; 388 i( `memcmp ( fuid , uid , DB_FILE_ID_LEN ) == 0) { 389 `RPRINT ( dbv , (dbenv, 391 t = DB_KEYEXIST ; 392 r ; 394 `__os_ ( dbv , r ); 395 r = NULL ; 397 r : 398 i( r ! NULL ) 399 `__os_ ( dbv , r ); 400 ( t ); 402 } } 405 $__p_g_fefo ( dbv , fe , subdb , r , uid , fe ) 406 DB_ENV * dbv ; 407 cڡ * fe , * subdb ; 408 __p_fefo_gs * r ; 409 u_t8_t * uid ; 410 u_t32_t * fe ; 412 DB * dbp , * tdbp ; 413 DB_LOCK lk ; 414 DB_LOG * db ; 415 DB_MPOOLFILE * mpf ; 416 DBC * dbc ; 417 DBMETA * dbma ; 418 PAGE * g ; 419 i , t , t_t ; 421 dbp = NULL ; 422 dbc = NULL ; 423 g = NULL ; 424 mpf = NULL ; 425 `LOCK_INIT ( lk ); 427 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 428 r ; 429 i(( t = `__db_ݒ ( dbp , NULL , fe , subdb , DB_UNKNOWN , 430 DB_RDONLY | ( `F_ISSET ( dbv , DB_ENV_THREAD ? DB_THREAD : 0), 431 0, PGNO_BASE_MD )) != 0) 432 r ; 434 i(( t = `__db_curs ( dbp , NULL , & dbc , 0)) != 0) 435 r ; 436 i(( t = `__db_lg ( 437 dbc , 0, dbp -> ma_pgno , DB_LOCK_READ , 0, & lk )) != 0) 438 r ; 439 i(( t = `__memp_fg ( dbp -> mpf , &dbp-> ma_pgno , dbc -> txn , 440 0, & g )) != 0) 441 r ; 445 dbma = ( DBMETA *) g ; 446 r -> pgno = 0; 451 i( dbp -> ty = DB_QUEUE ) 452 r -> max_pgno = 0; 454 r -> max_pgno = dbma -> ϡ_pgno ; 455 r -> pgsize = dbp ->pgsize; 456 `memy ( uid , dbp -> feid , DB_FILE_ID_LEN ); 457 r -> fum = (* fe )++; 458 r -> ty = ( u_t32_t ) dbp ->type; 459 r -> ags = dbp ->flags; 460 r -> id = DB_LOGFILEID_INVALID ; 461 t = `__memp_ut ( dbp -> mpf , g , dbc -> iܙy ); 462 g = NULL ; 463 i(( t_t = `__LPUT ( dbc , lk )!0 && t == 0) 464 t = t_t ; 465 i( t != 0) 466 r ; 467 r : 468 i(( t_t = `__LPUT ( dbc , lk )!0 && t == 0) 469 t = t_t ; 470 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 471 t = t_t ; 472 i( g ! NULL && ( t_t = 473 `__memp_ut ( mpf , g , dbc -> iܙy )!0 && t == 0) 474 t = t_t ; 475 i( dbp ! NULL && ( t_t = `__db_o (dbp, NULL, 0)!0 && t == 0) 476 t = t_t ; 482 i( t == 0) { 483 `LOG_SYSTEM_LOCK ( dbv ); 488 db = dbv -> lg_hd , 489 i = 0; i < db -> dby_t ; i++) { 490 tdbp = db -> dby [ i ]. dbp ; 491 i( tdbp = NULL ) 493 `DB_ASSERT ( dbv , tdbp -> log_fame ! NULL ); 494 i( `memcmp ( uid , 495 tdbp -> log_fame -> ufid , 496 DB_FILE_ID_LEN ) == 0) 497 r -> id = i ; 499 `LOG_SYSTEM_UNLOCK ( dbv ); 501 ( t ); 502 } } 511 $__p_ge_q ( dbv , eid , c ) 512 DB_ENV * dbv ; 513 eid ; 514 DBT * c ; 516 __p_fefo_gs * msg ; 517 DB * dbp ; 518 DBT msgdbt ; 519 DB_LOG * db ; 520 DB_MPOOLFILE * mpf ; 521 DB_REP * db_p ; 522 REP * p ; 523 t , t_t ; 524 * xt ; 526 db_p = dbv -> p_hd ; 527 p = db_p -> gi ; 528 db = dbv -> lg_hd ; 530 i(( t = `__p_fefo_ad ( dbv , c -> da , & xt , & msg )) != 0) 531 ( t ); 537 `RPRINT ( dbv , (dbenv, "page_req: file %dage %luo %lu", 538 msg -> fum , ( u_lg )msg-> pgno , (u_lg)msg-> max_pgno )); 539 `LOG_SYSTEM_LOCK ( dbv ); 540 i( msg -> id >0 && db -> dby_t > msgfp->id) { 541 dbp = db -> dby [ msg -> id ].dbp; 542 i( dbp ! NULL ) { 543 `DB_ASSERT ( dbv , dbp -> log_fame ! NULL ); 544 i( `memcmp ( msg -> uid . da , dbp -> log_fame -> ufid , 545 DB_FILE_ID_LEN ) == 0) { 546 `LOG_SYSTEM_UNLOCK ( dbv ); 547 `RPRINT ( dbv , (dbenv, 549 msg -> fum )); 550 t = `__p_ge_ndges ( dbv , eid , 551 msg , dbp -> mpf , dbp); 552 r ; 556 `LOG_SYSTEM_UNLOCK ( dbv ); 563 `RPRINT ( dbv , 564 ( dbv , "ge_q: O%d v mpf_ݒ", msg -> fum )); 565 i(( t = `__p_mpf_ݒ ( dbv , & mpf , msg , 0)) != 0) { 566 `memt (& msgdbt , 0, (msgdbt)); 567 msgdbt . da = msg ; 568 msgdbt . size = (* msg ); 569 `RPRINT ( dbv , (dbenv, "page_req: Open %d failed", 570 msg -> fum )); 571 i( `F_ISSET ( p , REP_F_MASTER )) 572 () `__p_nd_mesge ( dbv , eid , REP_FILE_FAIL , 573 NULL , & msgdbt , 0, 0); 575 t = DB_NOTFOUND ; 576 r ; 579 t = `__p_ge_ndges ( dbv , eid , msg , mpf , NULL ); 580 t_t = `__memp_fo ( mpf , 0); 581 i( t =0 && t_t != 0) 582 t = t_t ; 583 r : 584 `__os_ ( dbv , msg ); 585 ( t ); 586 } } 589 $__p_ge_ndges ( dbv , eid , msg , mpf , dbp ) 590 DB_ENV * dbv ; 591 eid ; 592 __p_fefo_gs * msg ; 593 DB_MPOOLFILE * mpf ; 594 DB * dbp ; 596 DB * qdbp ; 597 DBT lockdbt , msgdbt , pgdbt ; 598 DB_LOCK lock ; 599 DB_LOCK_ILOCK lock_obj ; 600 DB_LOCKER * lock ; 601 DB_LOG * db ; 602 DB_LSN l ; 603 DB_REP * db_p ; 604 PAGE * g ; 605 REP * p ; 606 REP_BULK bulk ; 607 REP_THROTTLE h ; 608 db_pgno_t p ; 609 u_t bulkoff ; 610 size_t n , msgsz ; 611 u_t32_t bulkags , u_bulk ; 612 ݒed , t , t_t ; 613 u_t8_t * buf ; 615 db_p = dbv -> p_hd ; 616 p = db_p -> gi ; 617 lock = NULL ; 618 ݒed = 0; 619 qdbp = NULL ; 620 buf = NULL ; 621 bulk . addr = NULL ; 622 u_bulk = `FLD_ISSET ( p -> cfig , REP_C_BULK ); 623 i( msg -> ty =( u_t32_t ) DB_QUEUE ) { 624 i( dbp = NULL ) { 625 i(( t = `__db__ (& qdbp , dbv , 0)) != 0) 626 r ; 632 i(( t = `__db_ݒ ( qdbp , NULL , 633 `FLD_ISSET ( msg -> ags , DB_AM_INMEM ) ? 634 NULL : msg -> fo . da , 635 `FLD_ISSET ( msg -> ags , DB_AM_INMEM ) ? 636 msg -> fo . da : NULL , 637 DB_UNKNOWN , 638 DB_RDONLY | ( `F_ISSET ( dbv , DB_ENV_THREAD ) ? 639 DB_THREAD : 0), 0, PGNO_BASE_MD )) != 0) 640 r ; 641 ݒed = 1; 643 qdbp = dbp ; 645 msgsz = ( __p_fefo_gs + DB_FILE_ID_LEN + msg -> pgsize ; 646 i(( t = `__os_oc ( dbv , 1, msgsz , & buf )) != 0) 647 r ; 648 `memt (& msgdbt , 0, (msgdbt)); 649 `memt (& pgdbt , 0, (pgdbt)); 650 `RPRINT ( dbv , (dbenv, "sendpages: file %dage %luo %lu", 651 msg -> fum , ( u_lg )msg-> pgno , (u_lg)msg-> max_pgno )); 652 `memt (& h , 0, (repth)); 662 i( u_bulk && ( t = `__p_bulk_loc ( dbv , & bulk , eid , 663 & bulkoff , & bulkags , REP_BULK_PAGE )) != 0) 664 r ; 665 `REP_SYSTEM_LOCK ( dbv ); 666 h . gbys = p ->gbytes; 667 h . bys = p ->bytes; 668 h . ty = REP_PAGE ; 669 h . da_dbt = & msgdbt ; 670 `REP_SYSTEM_UNLOCK ( dbv ); 675 `LOCK_INIT ( lock ); 676 `memt (& lock_obj , 0, (lock_obj)); 677 i(( t = `__lock_id ( dbv , NULL , & lock )) != 0) 678 r ; 679 `memy ( lock_obj . feid , mpf ->feid, DB_FILE_ID_LEN ); 680 lock_obj . ty = DB_PAGE_LOCK ; 682 `memt (& lockdbt , 0, (lockdbt)); 683 lockdbt . da = & lock_obj ; 684 lockdbt . size = ( lock_obj ); 686 p = msg -> pgno ; <msg-> max_pgno ;++) { 692 lock_obj . pgno = p ; 693 i(( t = `__lock_g ( dbv , lock , DB_LOCK_NOWAIT , & lockdbt , 694 DB_LOCK_READ , & lock )) != 0) { 698 i( t = DB_LOCK_NOTGRANTED ) 703 r ; 705 i( msg -> ty =( u_t32_t ) DB_QUEUE && p != 0) 706 #ifde HAVE_QUEUE 707 t = `__qam_fg ( qdbp , & p , NULL , 708 DB_MPOOL_CREATE , & g ); 710 t = DB_PAGE_NOTFOUND ; 713 t = `__memp_fg ( mpf , & p , NULL , 714 DB_MPOOL_CREATE , & g ); 715 i( t = DB_PAGE_NOTFOUND ) { 716 `memt (& pgdbt , 0, (pgdbt)); 717 `ZERO_LSN ( l ); 718 msg -> pgno = p ; 719 i( `F_ISSET ( p , REP_F_MASTER )) { 720 t = 0; 721 `RPRINT ( dbv , (dbenv, 723 ( u_lg ) p )); 724 () `__p_nd_mesge ( dbv , eid , 725 REP_PAGE_FAIL , & l , & msgdbt , 0, 0); 727 t = DB_NOTFOUND ; 728 lockr ; 729 } i( t != 0) 730 lockr ; 732 `DB_SET_DBT ( pgdbt , g , msg -> pgsize ); 733 n = 0; 734 `RPRINT ( dbv , (dbenv, 735 "ndges: %lu,agl [%lu][%lu]", ( u_lg ) p , 736 ( u_lg ) g -> l . fe , (u_lgag->l. offt )); 737 t = `__p_fefo_buf ( buf , msgsz , & n , 738 msg -> pgsize , p , msg-> max_pgno , 739 msg -> fum , msg-> id , msg-> ty , 740 msg -> ags , &msg-> uid , & pgdbt ); 741 i( msg -> ty !( u_t32_t ) DB_QUEUE || p == 0) 742 t_t = `__memp_ut ( mpf , g , DB_PRIORITY_UNCHANGED ); 743 #ifde HAVE_QUEUE 750 t_t = `__qam_ut ( qdbp , p , g , qdbp-> iܙy ); 752 i(( t_t = `__ENV_LPUT ( dbv , lock )!0 && t == 0) 753 t = t_t ; 754 i( t != 0) 755 r ; 757 `DB_ASSERT ( dbv , n < msgsz ); 758 `DB_SET_DBT ( msgdbt , buf , n ); 760 db = dbv -> lg_hd ; 761 `LOG_SYSTEM_LOCK ( dbv ); 762 h . l = (( LOG *) db -> gfo . imy )->lsn; 763 `LOG_SYSTEM_UNLOCK ( dbv ); 769 i( u_bulk ) 770 t = `__p_bulk_mesge ( dbv , & bulk , & h , 771 & h . l , & msgdbt , 0); 772 i(! u_bulk || t = DB_REP_BULKOVF ) 773 t = `__p_nd_thrَe ( dbv , eid , & h , 0, 0); 774 `RPRINT ( dbv , (dbenv, 775 "ndges: %lu, [%lu][%lu]", ( u_lg ) p , 776 ( u_lg ) h . l . fe , (u_lgth.l. offt )); 781 i( h . ty = REP_PAGE_MORE || t != 0) { 783 i( t = DB_REP_UNAVAIL ) 784 t = 0; 790 lockr : i(( t_t = `__ENV_LPUT ( dbv , lock )!0 && t == 0) 791 t = t_t ; 793 r : 798 i( u_bulk && bulk . addr ! NULL && 799 ( t_t = `__p_bulk_ ( dbv , & bulk , 0)!0 && t == 0) 800 t = t_t ; 801 i( ݒed && ( t_t = `__db_o ( qdbp , NULL , DB_NOSYNC )) != 0 && 802 t == 0) 803 t = t_t ; 804 i( buf ! NULL ) 805 `__os_ ( dbv , buf ); 806 i( lock ! NULL && ( t_t = `__lock_id_ ( dbv , 807 lock )!0 && t == 0) 808 t = t_t ; 809 ( t ); 810 } } 819 $__p_upde_tup ( dbv , eid , , c ) 820 DB_ENV * dbv ; 821 eid ; 822 REP_CONTROL * ; 823 DBT * c ; 825 DB_LOG * db ; 826 DB_REP * db_p ; 827 LOG * ; 828 REGENV * nv ; 829 REGINFO * f ; 830 REP * p ; 831 __p_upde_gs * rup ; 832 t ; 833 u_t32_t cou , fޒ ; 834 * xt ; 836 db_p = dbv -> p_hd ; 837 p = db_p -> gi ; 838 db = dbv -> lg_hd ; 839 = db -> gfo . imy ; 840 t = 0; 842 `REP_SYSTEM_LOCK ( dbv ); 843 i(! `F_ISSET ( p , REP_F_RECOVER_UPDATE || `IN_ELECTION (rep)) { 844 `REP_SYSTEM_UNLOCK ( dbv ); 847 `F_CLR ( p , REP_F_RECOVER_UPDATE ); 852 `F_SET ( p , REP_F_RECOVER_PAGE ); 856 `DB_ASSERT ( dbv , 857 ! `IS_USING_LEASES ( dbv || `__p_i_ged (dbenv) == 0); 866 i(( t = `__p_lockout_i ( dbv , p )) != 0) 867 r ; 872 f = dbv -> gfo ; 873 nv = f -> imy ; 874 () `time (& nv -> p_timeamp ); 876 `REP_SYSTEM_UNLOCK ( dbv ); 877 `MUTEX_LOCK ( dbv , p -> mtx_db ); 878 -> wa_cs = p -> que_g ; 879 -> rcvd_cs = 0; 880 `ZERO_LSN ( -> ady_l ); 881 `ZERO_LSN ( -> vify_l ); 882 `ZERO_LSN ( -> wag_l ); 883 `ZERO_LSN ( -> max_wa_l ); 884 `ZERO_LSN ( -> max_rm_l ); 885 i( db_p -> p_db = NULL ) 886 t = `__p__db ( dbv , 0, REP_DB ); 887 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 888 i( t != 0) 889 r_nock ; 890 i(( t = `__p_upde_ad ( dbv , c -> da , & xt , & rup )) != 0) 891 r_nock ; 897 i(( t = `__db_un ( db_p -> p_db , NULL , & cou )) != 0) 898 r_nock ; 904 `REP_SYSTEM_LOCK ( dbv ); 905 p -> f_l = rup ->first_lsn; 906 p -> f_vs = rup ->first_vers; 907 p -> ϡ_l = -> l ; 908 p -> nfes = rup -> num_fes ; 910 `__os_ ( dbv , rup ); 912 `RPRINT ( dbv , (dbenv, 913 "Updtuf %d fes.", p -> nfes )); 914 `RPRINT ( dbv , (dbenv, "Update setup: First LSN [%lu][%lu].", 915 ( u_lg ) p -> f_l . fe , (u_lg->f_l. offt )); 916 `RPRINT ( dbv , (dbenv, "Update setup: Last LSN [%lu][%lu]", 917 ( u_lg ) p -> ϡ_l . fe , (u_lg->ϡ_l. offt )); 919 i( p -> nfes > 0) { 920 fޒ = c -> size - ( __p_upde_gs ); 921 i(( t = `__os_oc ( dbv , 1, fޒ , & p -> igfo )) != 0) 922 r ; 923 `memy ( p -> igfo , xt , fޒ ); 924 p -> xtfo =-> igfo ; 931 i(( t = `__p_move_l ( dbv , c )) != 0) 932 r ; 934 p -> curfe = 0; 935 i(( t = `__p_xtfe ( dbv , eid , p )) != 0) 936 r ; 939 r_nock : `REP_SYSTEM_LOCK ( dbv ); 942 r : 947 i( t != 0) { 948 i( p -> igfo ! NULL ) { 949 `__os_ ( dbv , p -> igfo ); 950 p -> igfo = NULL ; 952 `RPRINT ( dbv , (dbenv, 954 `db_ ( t ))); 955 `F_CLR ( p , REP_F_RECOVER_PAGE | REP_F_READY_API | 956 REP_F_READY_OP ); 957 `F_SET ( p , REP_F_RECOVER_UPDATE ); 959 `REP_SYSTEM_UNLOCK ( dbv ); 960 ( t ); 961 } } 977 $__p_move_l ( dbv , c ) 978 DB_ENV * dbv ; 979 DBT * c ; 981 __p_fefo_gs * ffo ; 982 DB_FH * fhp ; 983 DB_LSN unud ; 984 size_t t , f , fesz , updn ; 985 u_t32_t bufsz , fet ; 986 * ame ; 987 t , t_t ; 988 u_t8_t * buf , * , * ig ; 990 `ZERO_LSN ( unud ); 991 ffo = NULL ; 992 ame = NULL ; 993 fhp = NULL ; 999 f = 0; 1000 fet = 0; 1001 fesz = MEGABYTE ; 1002 i(( t = `__os_oc ( dbv , 1, fesz , & buf )) != 0) 1003 ( t ); 1004 ig = = buf + ( __p_upde_gs ); 1005 i(( t = `__p_fd_dbs ( 1006 dbv , & , & fesz , & f , & fet )) != 0) 1007 out ; 1008 i(( t = `__p_upde_buf ( buf , fesz , & updn , 1009 & unud , 0, fet )) != 0) 1010 out ; 1017 i(( t = `__db_ame ( 1018 dbv , DB_APP_NONE , REP_INITNAME , 0, NULL , & ame )) != 0) 1019 out ; 1020 bufsz = updn + f ; 1022 i(( t = `__os_ݒ ( dbv , ame , 0, 1023 DB_OSO_CREATE | DB_OSO_TRUNC , `__db_omode ( OWNER_RW ), & fhp )) != 0 || 1024 ( t = `__os_wre ( dbv , fhp , & bufsz , (bufsz), & t )) != 0 || 1025 ( t = `__os_wre ( dbv , fhp , buf , bufsz , & t )) != 0 || 1026 ( t = `__os_fsync ( dbv , fhp )) != 0) { 1027 `__db_r ( dbv , t , "%s", ame ); 1028 out ; 1035 i(( t = `__p_move_logs ( dbv )) != 0) 1036 out ; 1037 i(( t = `__p_ofes ( dbv , 0)) != 0) 1038 out ; 1039 = ig ; 1040 fet -- > 0) { 1041 i(( t = `__p_fefo_ad ( dbv , 1042 , (*)&, & ffo )) != 0) 1043 out ; 1044 i(( t = `__p_move_fe ( dbv , ffo -> uid . da , 1045 ffo -> fo . da , ffo-> ty , ffo-> ags )) != 0) 1046 out ; 1047 `__os_ ( dbv , ffo ); 1048 ffo = NULL ; 1057 i(( t = `__os_wre ( dbv , fhp , 1058 & c -> size , ec->size), & t )) != 0 || 1059 ( t = `__os_wre ( dbv , fhp , c -> da ,ec-> size , & t )) != 0 || 1060 ( t = `__os_fsync ( dbv , fhp )) != 0) { 1061 `__db_r ( dbv , t , "%s", ame ); 1062 out ; 1065 out : 1066 i( fhp ! NULL && ( t_t = `__os_ohd ( dbv , fhp)&& t == 0) 1067 t = t_t ; 1068 i( ame ! NULL ) 1069 `__os_ ( dbv , ame ); 1070 i( ffo ! NULL ) 1071 `__os_ ( dbv , ffo ); 1072 `__os_ ( dbv , buf ); 1073 ( t ); 1074 } } 1081 $__p_move_logs ( dbv ) 1082 DB_ENV * dbv ; 1084 DB_LOG * db ; 1085 DB_LSN l ; 1086 LOG * ; 1087 u_t32_t um , ϡfe ; 1088 t ; 1089 * me ; 1091 db = dbv -> lg_hd ; 1092 = db -> gfo . imy ; 1093 t = 0; 1101 i(( t = `__memp_sync_t ( dbv , 1102 NULL , 0, DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK , NULL, NULL)) != 0) 1103 ( t ); 1104 i(( t = `__log_ush ( dbv , NULL )) != 0) 1105 ( t ); 1110 i( -> db_log_memy ) { 1111 `ZERO_LSN ( l ); 1112 i(( t = `__log_zo ( dbv , & l )) != 0) 1113 ( t ); 1115 ϡfe = -> l . fe ; 1116 um = 1; fnum < ϡfe ; fnum++) { 1117 i(( t = `__log_me ( db , um , & me , NULL , 0)) != 0) 1118 ( t ); 1119 () `time (& -> timeamp ); 1120 () `__os_uƚk ( dbv , me ); 1121 `__os_ ( dbv , me ); 1125 } } 1132 $__p_move_fe ( dbv , uid , me , ty , ags ) 1133 DB_ENV * dbv ; 1134 u_t8_t * uid ; 1135 cڡ * me ; 1136 u_t32_t ty , ags ; 1142 #ifde HAVE_QUEUE 1143 DB * dbp ; 1144 t ; 1152 i( ty =( u_t32_t ) DB_QUEUE && ! `LF_ISSET ( DB_AM_INMEM )) { 1153 i(( t = `__db__ (& dbp , dbv , 0)) != 0) 1154 ( t ); 1166 i(( t = `__lock_id ( dbv , NULL , & dbp -> lock )) != 0) 1167 ( t ); 1169 `RPRINT ( dbv , (dbv, "QAM: Uƚk %v __qam_move", me )); 1170 i(( t = `__qam_move ( dbp , NULL , me , NULL)) != 0) { 1171 `RPRINT ( dbv , (dbv, "qam_movtued %d", t )); 1172 () `__db_o ( dbp , NULL , DB_NOSYNC ); 1173 ( t ); 1175 i(( t = `__db_o ( dbp , NULL , DB_NOSYNC )) != 0) 1176 ( t ); 1179 `COMPQUIET ( ty , 0); 1180 `COMPQUIET ( ags , 0); 1187 ( `__f_move ( dbv , NULL , uid , me , DB_APP_DATA , 0)); 1188 } } 1197 $__p_bulk_ge ( dbv , eid , , c ) 1198 DB_ENV * dbv ; 1199 eid ; 1200 REP_CONTROL * ; 1201 DBT * c ; 1203 DBT pgc ; 1204 REP_CONTROL tmp ; 1205 u_t32_t n ; 1206 t ; 1207 u_t8_t * p , * ; 1209 `memt (& pgc , 0, (pgrec)); 1217 `memy (& tmp , , (tmprp)); 1218 tmp . y = REP_PAGE ; 1219 t = 0; 1220 = ( u_t8_t *) c -> da +ec-> size , p = (u_int8_t *)rec->data; 1221 p < ; + n ) { 1226 `memy (& n , p , (len)); 1227 p +( n ); 1228 `memy (& tmp . l , p , ( DB_LSN )); 1229 p +( DB_LSN ); 1230 pgc . da = p ; 1231 pgc . size = n ; 1232 `RPRINT ( dbv , (dbenv, 1234 ( u_lg ) tmp . l . fe , (u_lgmp.l. offt )); 1235 `RPRINT ( dbv , (dbenv, 1237 `P_TO_ULONG ( p ), P_TO_ULONG( ), P_TO_ULONG( pgc . da ), 1238 ( u_lg ) pgc . size , (u_long)pgrec.size)); 1242 t = `__p_ge ( dbv , eid , & tmp , & pgc ); 1243 `RPRINT ( dbv , (dbenv, 1244 "p_bulk_ge:_g%d", t )); 1249 i( t != 0) { 1250 i( t = DB_REP_PAGEDONE ) 1251 t = 0; 1255 ( t ); 1256 } } 1265 $__p_ge ( dbv , eid , , c ) 1266 DB_ENV * dbv ; 1267 eid ; 1268 REP_CONTROL * ; 1269 DBT * c ; 1272 DB_REP * db_p ; 1273 DBT key , da ; 1274 REP * p ; 1275 __p_fefo_gs * msg ; 1276 db_o_t o ; 1277 t ; 1278 * xt ; 1280 t = 0; 1281 db_p = dbv -> p_hd ; 1282 p = db_p -> gi ; 1284 i(! `F_ISSET ( p , REP_F_RECOVER_PAGE )) 1285 ( DB_REP_PAGEDONE ); 1286 i(( t = `__p_fefo_ad ( dbv , c -> da , & xt , & msg )) != 0) 1287 ( t ); 1288 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1289 `REP_SYSTEM_LOCK ( dbv ); 1293 `DB_ASSERT ( dbv , 1294 ! `IS_USING_LEASES ( dbv || `__p_i_ged (dbenv) == 0); 1296 `RPRINT ( dbv , (dbenv, 1298 ( u_lg ) msg -> pgno , msg-> fum )); 1308 i( msg -> fum ! p -> curfe ) { 1309 `RPRINT ( dbv , (dbenv, "Msg file %d != curfile %d", 1310 msg -> fum , p -> curfe )); 1311 t = DB_REP_PAGEDONE ; 1312 r ; 1318 i(( t = `__p__db ( dbv , 1, REP_PG )) != 0) { 1319 `RPRINT ( dbv , (dbenv, 1320 "PAGE: Cl_db %s", `db_ ( t ))); 1321 r ; 1324 `memt (& key , 0, (key)); 1325 `memt (& da , 0, (data)); 1326 o = ( db_o_t )( msg -> pgno + 1); 1327 key . da = & o ; 1328 key . un = key. size = ( db_o_t ); 1329 key . ags = DB_DBT_USERMEM ; 1336 t = `__db_put ( p -> fe_dbp , NULL , & key , & da , DB_NOOVERWRITE ); 1337 i( t = DB_KEYEXIST ) { 1338 `RPRINT ( dbv , (dbenv, 1340 ( u_lg ) msg -> pgno , msg-> fum )); 1341 `STAT ( p -> . _pg_duid ++); 1342 t = 0; 1343 r ; 1345 i( t != 0) 1346 r ; 1348 `RPRINT ( dbv , (dbenv, 1349 "PAGE: Wrg%lu impo", ( u_lg ) msg -> pgno )); 1353 t = `__p_wre_ge ( dbv , p , msg ); 1354 i( t != 0) { 1364 () `__db_d ( p -> fe_dbp , NULL , & key , 0); 1365 r ; 1367 `STAT ( p -> . _pg_cds ++); 1368 p -> ages ++; 1374 i( `LOG_COMPARE (& -> l , & p -> ϡ_l ) > 0) 1375 p -> ϡ_l = -> l ; 1383 t = `__p_fede ( dbv , eid , p , msg , -> y ); 1385 r : `REP_SYSTEM_UNLOCK ( dbv ); 1386 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1388 `__os_ ( dbv , msg ); 1389 ( t ); 1390 } } 1399 $__p_ge_ ( dbv , eid , c ) 1400 DB_ENV * dbv ; 1401 eid ; 1402 DBT * c ; 1405 DB_REP * db_p ; 1406 REP * p ; 1407 __p_fefo_gs * msg , * r ; 1408 t ; 1409 * xt ; 1411 t = 0; 1412 db_p = dbv -> p_hd ; 1413 p = db_p -> gi ; 1415 i(! `F_ISSET ( p , REP_F_RECOVER_PAGE )) 1417 i(( t = `__p_fefo_ad ( dbv , c -> da , & xt , & msg )) != 0) 1418 ( t ); 1428 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1429 `REP_SYSTEM_LOCK ( dbv ); 1433 `DB_ASSERT ( dbv , 1434 ! `IS_USING_LEASES ( dbv || `__p_i_ged (dbenv) == 0); 1436 i( msg -> fum ! p -> curfe ) { 1437 `RPRINT ( dbv , (dbenv, "Msg file %d != curfile %d", 1438 msg -> fum , p -> curfe )); 1439 out ; 1441 r = p -> curfo ; 1442 i( r -> ty !( u_t32_t ) DB_QUEUE ) 1443 -- r -> max_pgno ; 1450 `RPRINT ( dbv , (dbenv, 1452 ( u_lg ) msg -> pgno , (u_lg) p -> ady_pg , 1453 ( u_lg ) r -> max_pgno , p -> ages )); 1454 i( msg -> pgno = r -> max_pgno ) 1455 -- r -> max_pgno ; 1456 i( msg -> pgno > p -> ady_pg ) { 1457 p -> ady_pg = msg -> pgno + 1; 1458 p -> ages =-> ady_pg ; 1460 `RPRINT ( dbv , (dbenv, 1462 ( u_lg ) msg -> pgno , (u_lg) p -> ady_pg , 1463 ( u_lg ) r -> max_pgno , p -> ages )); 1473 t = `__p_fede ( dbv , eid , p , msg , REP_PAGE_FAIL ); 1474 out : 1475 `REP_SYSTEM_UNLOCK ( dbv ); 1476 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1477 `__os_ ( dbv , msg ); 1478 ( t ); 1479 } } 1486 $__p_wre_ge ( dbv , p , msg ) 1487 DB_ENV * dbv ; 1488 REP * p ; 1489 __p_fefo_gs * msg ; 1491 __p_fefo_gs * r ; 1492 t ; 1493 * d ; 1495 r = NULL ; 1506 r = p -> curfo ; 1507 i( p -> fe_mpf = NULL ) { 1508 i(! `F_ISSET ( r , DB_AM_INMEM )) { 1513 `RPRINT ( dbv , (dbenv, 1515 (*) r -> fo . da )); 1516 i(( t = `__f_ ( dbv , NULL , NULL, 1517 r -> fo . da , DB_APP_DATA , 1518 dbv -> db_mode , 0)) != 0) 1519 r ; 1522 i(( t = 1523 `__p_mpf_ݒ ( dbv , & p -> fe_mpf ,-> curfo , 1524 `F_ISSET ( r , DB_AM_INMEM ? DB_CREATE : 0)) != 0) 1525 r ; 1535 i( msg -> ty =( u_t32_t ) DB_QUEUE && msg-> pgno != 0) { 1536 #ifde HAVE_QUEUE 1537 t = `__qam_fg ( p -> queue_dbp , & msg -> pgno , NULL , 1538 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & d ); 1543 t = `__db_no_queue_am ( dbv ); 1546 t = `__memp_fg ( p -> fe_mpf , & msg -> pgno , NULL , 1547 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & d ); 1549 i( t != 0) 1550 r ; 1552 `memy ( d , msg -> fo . da , msg-> pgsize ); 1553 #ifde HAVE_QUEUE 1554 i( msg -> ty =( u_t32_t ) DB_QUEUE && msg-> pgno != 0) 1555 t = `__qam_ut ( p -> queue_dbp , 1556 msg -> pgno , d , p -> queue_dbp -> iܙy ); 1559 t = `__memp_ut ( p -> fe_mpf , d ,-> fe_dbp -> iܙy ); 1561 r : ( t ); 1562 } } 1570 $__p_ge_g ( dbv , p , msg , ty ) 1571 DB_ENV * dbv ; 1572 REP * p ; 1573 __p_fefo_gs * msg ; 1574 u_t32_t ty ; 1576 DB_LOG * db ; 1577 DBC * dbc ; 1578 DBT da , key ; 1579 LOG * ; 1580 __p_fefo_gs * r ; 1581 db_o_t o ; 1582 t , t_t ; 1584 db = dbv -> lg_hd ; 1585 = db -> gfo . imy ; 1586 t = 0; 1587 dbc = NULL ; 1597 r = p -> curfo ; 1603 i( r -> fum ! msg ->filenum) { 1604 t = DB_REP_PAGEDONE ; 1605 r ; 1623 i( msg -> pgno < p -> ady_pg ) { 1624 `RPRINT ( dbv , (dbenv, 1626 ( u_lg ) msg -> pgno , (u_lg) p -> ady_pg , 1627 ( u_lg ) p -> wag_pg )); 1628 r ; 1637 `RPRINT ( dbv , (dbenv, 1639 ( u_lg ) msg -> pgno , (u_lg) r -> max_pgno , (u_lg) p -> ady_pg , 1640 ( u_lg ) p -> wag_pg , (u_lg-> max_wa_pg )); 1641 i( msg -> pgno > p -> ady_pg ) { 1642 i( p -> wag_pg = PGNO_INVALID || 1643 msg -> pgno < p -> wag_pg ) 1644 p -> wag_pg = msg -> pgno ; 1649 p -> ady_pg ++; 1650 -> rcvd_cs = 0; 1651 i( p -> ady_pg =p-> wag_pg ) { 1657 -> wa_cs = 0; 1658 -> rcvd_cs = 0; 1659 p -> max_wa_pg = PGNO_INVALID ; 1664 `memt (& key , 0, (key)); 1665 `memt (& da , 0, (data)); 1666 i(( t = `__db_curs ( p -> fe_dbp , NULL , 1667 & dbc , 0)) != 0) 1668 r ; 1673 o = ( db_o_t ) p -> wag_pg + 1; 1674 key . da = & o ; 1675 key . un = key. size = ( db_o_t ); 1676 key . ags = DB_DBT_USERMEM ; 1681 t = `__dbc_g ( dbc , & key , & da , DB_SET ); 1682 i( t != 0) 1683 r ; 1684 `RPRINT ( dbv , (dbenv, 1686 ( u_lg ) p -> ady_pg , (u_lg-> wag_pg )); 1688 t =0 && p -> ady_pg =p-> wag_pg ) { 1689 p -> ady_pg ++; 1690 t = `__dbc_g ( dbc , & key , & da , DB_NEXT ); 1695 i( t = DB_NOTFOUND || = DB_KEYEMPTY ) { 1696 p -> wag_pg = PGNO_INVALID ; 1697 `RPRINT ( dbv , (dbenv, 1699 ( u_lg ) p -> ady_pg , 1700 ( u_lg ) p -> wag_pg )); 1708 p -> wag_pg = *( db_pgno_t *) key . da ; 1709 p -> wag_pg --; 1710 `RPRINT ( dbv , (dbenv, 1712 ( u_lg ) p -> ady_pg , (u_lg-> wag_pg )); 1721 i( p -> ady_pg > r -> max_pgno ) 1722 r ; 1727 i(( p -> wag_pg ! PGNO_INVALID && 1728 p -> ady_pg !p-> wag_pg || ty = REP_PAGE_MORE ) { 1732 i( -> wa_cs == 0) { 1739 -> wa_cs = p -> que_g ; 1740 -> rcvd_cs = 0; 1741 p -> max_wa_pg = PGNO_INVALID ; 1748 i( ty = REP_PAGE_MORE ) 1749 r -> pgno = msg ->pgno; 1750 i(( `__p_check_deq ( dbv , p || ty = REP_PAGE_MORE ) && 1751 (( t = `__p_pgg_q ( dbv , p , r , 1752 ( ty = REP_PAGE_MORE ? REP_GAP_FORCE : 0)) != 0)) 1753 r ; 1755 -> wa_cs = 0; 1756 p -> max_wa_pg = PGNO_INVALID ; 1759 r : 1760 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 1761 t = t_t ; 1763 ( t ); 1764 } } 1776 $__p__nup ( dbv , p , f ) 1777 DB_ENV * dbv ; 1778 REP * p ; 1779 f ; 1781 DB_LOG * db ; 1782 LOG * ; 1783 nup_u , t , t_t ; 1785 t = 0; 1793 i( p -> fe_mpf ! NULL ) { 1794 t = `__memp_fo ( p -> fe_mpf , 0); 1795 p -> fe_mpf = NULL ; 1797 i( p -> fe_dbp ! NULL ) { 1798 t_t = `__db_o ( p -> fe_dbp , NULL , DB_NOSYNC ); 1799 p -> fe_dbp = NULL ; 1800 i( t_t !0 && t == 0) 1801 t = t_t ; 1803 i( f && p -> queue_dbp ! NULL ) { 1804 t_t = `__db_o ( p -> queue_dbp , NULL , DB_NOSYNC ); 1805 p -> queue_dbp = NULL ; 1806 i( t_t !0 && t == 0) 1807 t = t_t ; 1809 i( p -> curfo ! NULL ) { 1810 `__os_ ( dbv , p -> curfo ); 1811 p -> curfo = NULL ; 1813 i( `F_ISSET ( p , REP_F_INTERNAL_INIT_MASK && f ) { 1829 `RPRINT ( dbv , (dbenv, "clean up interrupted internal init")); 1830 nup_u = 0; 1832 i(( t_t = `__p_move_logs ( dbv )) == 0) { 1842 db = dbv -> lg_hd ; 1843 = db -> gfo . imy ; 1845 i(( t_t = `__p_log_tup ( dbv , 1846 p , 1, DB_LOGVERSION , & -> ady_l )) != 0) { 1847 nup_u = 1; 1848 i( t == 0) 1849 t = t_t ; 1852 nup_u = 1; 1853 i( t == 0) 1854 t = t_t ; 1857 i(( t_t = `__p_move_by_li ( dbv , 1858 p -> igfo ,-> nfes )) != 0) { 1859 nup_u = 1; 1860 i( t == 0) 1861 t = t_t ; 1864 i(! nup_u && 1865 ( t_t = `__p_move__fe ( dbv )) != 0) { 1866 i( t == 0) 1867 t = t_t ; 1870 i( p -> igfo ! NULL ) { 1871 `__os_ ( dbv , p -> igfo ); 1872 p -> igfo = NULL ; 1876 ( t ); 1877 } } 1889 $__p_fede ( dbv , eid , p , msg , ty ) 1890 DB_ENV * dbv ; 1891 eid ; 1892 REP * p ; 1893 __p_fefo_gs * msg ; 1894 u_t32_t ty ; 1896 __p_fefo_gs * r ; 1897 t ; 1903 t = `__p_ge_g ( dbv , p , msg , ty ); 1908 i( t = DB_REP_PAGEDONE ) 1911 r = p -> curfo ; 1916 `RPRINT ( dbv , (dbenv, "FILEDONE: have %luages. Need %lu.", 1917 ( u_lg ) p -> ages , (u_lg) r -> max_pgno + 1)); 1918 i( p -> ages < r -> max_pgno ) 1926 i( r -> ty =( u_t32_t ) DB_QUEUE && 1927 (( t = `__p_queue_fede ( dbv , p , r )) != 1928 DB_REP_PAGEDONE )) 1929 ( t ); 1933 i(( t = `__p__nup ( dbv , p , 0)) != 0) 1934 r ; 1936 p -> curfe ++; 1937 t = `__p_xtfe ( dbv , eid , p ); 1938 r : 1939 ( t ); 1940 } } 1950 $__p_xtfe ( dbv , eid , p ) 1951 DB_ENV * dbv ; 1952 eid ; 1953 REP * p ; 1955 DBT dbt ; 1956 t ; 1963 i( p -> ma_id ! DB_EID_INVALID ) 1964 eid = p -> ma_id ; 1965 i( p -> curfe =p-> nfes ) { 1966 `RPRINT ( dbv , (dbenv, 1967 "NEXTFILE: hav%d fes. RECOVER_LOGow", p -> nfes )); 1978 i(( t = `__memp_sync_t ( dbv , NULL , 0, 1979 DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK , NULL , NULL)) != 0) 1980 ( t ); 1981 `F_CLR ( p , REP_F_RECOVER_PAGE ); 1982 `F_SET ( p , REP_F_RECOVER_LOG ); 1983 `memt (& dbt , 0, (dbt)); 1984 dbt . da = & p -> ϡ_l ; 1985 dbt . size = ( p -> ϡ_l ); 1986 `REP_SYSTEM_UNLOCK ( dbv ); 1987 i(( t = `__p_log_tup ( dbv , p , 1988 p -> f_l . fe ,-> f_vs , NULL )) != 0) 1989 ( t ); 1990 `RPRINT ( dbv , (dbenv, 1992 ( u_lg ) p -> f_l . fe , (u_lg->f_l. offt , 1993 ( u_lg ) p -> ϡ_l . fe , (u_lg->ϡ_l. offt )); 1994 () `__p_nd_mesge ( dbv , eid , 1995 REP_LOG_REQ , & p -> f_l , & dbt , 1996 REPCTL_INIT , DB_REP_ANYWHERE ); 1997 `REP_SYSTEM_LOCK ( dbv ); 2004 p -> ffo =-> xtfo ; 2005 i(( t = `__p_fefo_ad ( dbv , p -> ffo , &p-> xtfo , 2006 & p -> curfo )) != 0) { 2007 `RPRINT ( dbv , (dbenv, 2008 "NEXTINFO: Fefػad: %s", `db_ ( t ))); 2009 ( t ); 2011 `DB_ASSERT ( dbv , p -> curfo -> pgno == 0); 2012 p -> ady_pg = 0; 2013 p -> ages = 0; 2014 p -> wag_pg = PGNO_INVALID ; 2015 p -> max_wa_pg = PGNO_INVALID ; 2016 `memt (& dbt , 0, (dbt)); 2017 `RPRINT ( dbv , (dbenv, 2018 "Nexf%d:gsiz%lu, maxpg %lu", p -> curfo -> fum , 2019 ( u_lg ) p -> curfo -> pgsize , (u_lg->curfo-> max_pgno )); 2020 dbt . da = p -> ffo ; 2021 dbt . size = 2022 ( u_t32_t )(( u_t8_t *) p -> xtfo - (u_t8_*-> ffo ); 2023 () `__p_nd_mesge ( dbv , eid , REP_PAGE_REQ , 2024 NULL , & dbt , 0, DB_REP_ANYWHERE ); 2027 } } 2035 $__p_mpf_ݒ ( dbv , mp , r , ags ) 2036 DB_ENV * dbv ; 2037 DB_MPOOLFILE ** mp ; 2038 __p_fefo_gs * r ; 2039 u_t32_t ags ; 2041 DB db ; 2042 t ; 2044 i(( t = `__memp_f ( dbv , mp )) != 0) 2045 ( t ); 2051 db . dbv = dbenv; 2052 db . ty = ( DBTYPE ) r ->type; 2053 db . pgsize = r ->pgsize; 2054 `memy ( db . feid , r -> uid . da , DB_FILE_ID_LEN ); 2055 db . ags = r ->flags; 2057 `F_CLR (& db , DB_AM_OPEN_CALLED ); 2058 db . mpf = * mp ; 2059 i( `F_ISSET (& db , DB_AM_INMEM )) 2060 () `__memp_t_ags ( db . mpf , DB_MPOOL_NOFILE , 1); 2061 i(( t = `__db_v_mpo (& db , r -> fo . da , ags )) != 0) { 2062 () `__memp_fo ( db . mpf , 0); 2063 * mp = NULL ; 2065 ( t ); 2066 } } 2076 $__p_pgg_q ( dbv , p , q , gags ) 2077 DB_ENV * dbv ; 2078 REP * p ; 2079 __p_fefo_gs * q ; 2080 u_t32_t gags ; 2082 DBT max_pg_dbt ; 2083 __p_fefo_gs * tmp , t ; 2084 size_t n ; 2085 u_t32_t ags ; 2086 loc , t ; 2088 t = 0; 2089 loc = 0; 2098 i( p -> curfo = NULL ) 2100 i( q = NULL ) { 2101 i(( t = `__p_ffo_loc ( dbv , p -> curfo , & tmp )) != 0) 2102 ( t ); 2103 loc = 1; 2105 t = * q ; 2106 tmp = & t ; 2115 ags = 0; 2116 `memt (& max_pg_dbt , 0, (max_pg_dbt)); 2121 i( `FLD_ISSET ( gags , REP_GAP_FORCE )) 2122 tmp -> pgno ++; 2124 tmp -> pgno = p -> ady_pg ; 2125 max_pg_dbt . da = p -> ffo ; 2126 max_pg_dbt . size = 2127 ( u_t32_t )(( u_t8_t *) p -> xtfo - (u_t8_*-> ffo ); 2128 i( p -> max_wa_pg = PGNO_INVALID || 2129 `FLD_ISSET ( gags , REP_GAP_FORCE | REP_GAP_REREQUEST )) { 2134 i( p -> wag_pg = PGNO_INVALID ) { 2135 i( `FLD_ISSET ( gags , 2136 REP_GAP_FORCE | REP_GAP_REREQUEST )) 2137 p -> max_wa_pg =-> curfo -> max_pgno ; 2139 p -> max_wa_pg =-> ady_pg ; 2146 i( `FLD_ISSET ( gags , REP_GAP_FORCE ) && 2147 p -> wag_pg < tmp -> pgno ) 2148 p -> max_wa_pg =-> curfo -> max_pgno ; 2150 p -> max_wa_pg =-> wag_pg - 1; 2152 tmp -> max_pgno = p -> max_wa_pg ; 2156 i( `FLD_ISSET ( gags , REP_GAP_REREQUEST )) 2157 ags = DB_REP_REREQUEST ; 2159 ags = DB_REP_ANYWHERE ; 2164 p -> max_wa_pg =-> ady_pg ; 2165 tmp -> max_pgno = p -> ady_pg ; 2169 ags = DB_REP_REREQUEST ; 2171 i( p -> ma_id ! DB_EID_INVALID ) { 2172 `STAT ( p -> . _pg_queed ++); 2179 t = `__p_fefo_buf ( p -> ffo , max_pg_dbt . size , & n , 2180 tmp -> pgsize ,mp-> pgno ,mp-> max_pgno , 2181 tmp -> fum ,mp-> id ,mp-> ty , 2182 tmp -> ags , &tmp-> uid , &tmp-> fo ); 2183 `DB_ASSERT ( dbv , n = max_pg_dbt . size ); 2184 () `__p_nd_mesge ( dbv , p -> ma_id , 2185 REP_PAGE_REQ , NULL , & max_pg_dbt , 0, ags ); 2187 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 2188 REP_MASTER_REQ , NULL , NULL, 0, 0); 2190 i( loc ) 2191 `__os_ ( dbv , tmp ); 2192 ( t ); 2193 } } 2203 $__p_ffo_loc ( dbv , rc , rp ) 2204 DB_ENV * dbv ; 2205 __p_fefo_gs * rc , ** rp ; 2207 __p_fefo_gs * r ; 2208 size_t size ; 2209 t ; 2210 * uidp , * f ; 2215 size = ( __p_fefo_gs + rc -> uid .size + 2216 rc -> fo . size ; 2217 i(( t = `__os_mloc ( dbv , size , & r )) != 0) 2218 ( t ); 2224 `memy ( r , rc , ( __p_fefo_gs )); 2225 uidp = ( u_t8_t *) r + ( __p_fefo_gs ); 2226 r -> uid . da = uidp ; 2227 `memy ( uidp , rc -> uid . da ,c->uid. size ); 2229 f = ( u_t8_t *) uidp + rc -> uid . size ; 2230 r -> fo . da = f ; 2231 `memy ( f , rc -> fo . da ,c->fo. size ); 2232 * rp = r ; 2233 ( t ); 2234 } } 2242 $__p_log_tup ( dbv , p , fe , vsi , lp ) 2243 DB_ENV * dbv ; 2244 REP * p ; 2245 u_t32_t fe ; 2246 u_t32_t vsi ; 2247 DB_LSN * lp ; 2249 DB_LOG * db ; 2250 DB_LSN l ; 2251 DB_TXNMGR * mgr ; 2252 DB_TXNREGION * gi ; 2253 LOG * ; 2254 t ; 2256 db = dbv -> lg_hd ; 2257 = db -> gfo . imy ; 2258 mgr = dbv -> tx_hd ; 2259 gi = mgr -> gfo . imy ; 2265 `LOG_SYSTEM_LOCK ( dbv ); 2266 i(( t = `__log_wfe ( db , & l , fe , vsi )) == 0 && 2267 lp ! NULL ) 2268 * lp = l ; 2269 `LOG_SYSTEM_UNLOCK ( dbv ); 2277 p -> f_l = -> l ; 2278 `TXN_SYSTEM_LOCK ( dbv ); 2279 `ZERO_LSN ( gi -> ϡ_ckp ); 2280 `TXN_SYSTEM_UNLOCK ( dbv ); 2281 ( t ); 2282 } } 2305 $__p_queue_fede ( dbv , p , r ) 2306 DB_ENV * dbv ; 2307 REP * p ; 2308 __p_fefo_gs * r ; 2310 #ide HAVE_QUEUE 2311 `COMPQUIET ( p , NULL ); 2312 `COMPQUIET ( r , NULL ); 2313 ( `__db_no_queue_am ( dbv )); 2315 db_pgno_t f , ϡ ; 2316 u_t32_t ags ; 2317 emy , t , t_t ; 2319 t = 0; 2320 i( p -> queue_dbp = NULL ) { 2325 i(( t = `__memp_sync_t ( dbv , NULL , 0, 2326 DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK , NULL , NULL)) != 0) 2327 out ; 2328 i(( t = 2329 `__db__ (& p -> queue_dbp , dbv , 0)) != 0) 2330 out ; 2331 ags = DB_NO_AUTO_COMMIT | 2332 ( `F_ISSET ( dbv , DB_ENV_THREAD ? DB_THREAD : 0); 2337 i(( t = `__db_ݒ ( p -> queue_dbp , NULL , 2338 `FLD_ISSET ( r -> ags , DB_AM_INMEM ? NULL :-> fo . da , 2339 `FLD_ISSET ( r -> ags , DB_AM_INMEM ?-> fo . da : NULL , 2340 DB_QUEUE , ags , 0, PGNO_BASE_MD )) != 0) 2341 out ; 2343 i(( t = `__queue_gefo ( p -> queue_dbp , 2344 & f , & ϡ , & emy , 0, 0)) != 0) 2345 out ; 2346 `RPRINT ( dbv , (dbenv, 2348 ( u_lg ) f , (u_lg) ϡ , emy )); 2357 i( r -> max_pgno == 0) { 2362 i( emy ) 2363 out ; 2364 i( f > ϡ ) { 2365 r -> max_pgno = 2366 `QAM_RECNO_PAGE ( p -> queue_dbp , UINT32_MAX ); 2368 r -> max_pgno = ϡ ; 2369 `RPRINT ( dbv , (dbenv, 2371 ( u_lg ) f , (u_lg) r -> max_pgno )); 2372 q ; 2373 } i( r -> max_pgno ! ϡ ) { 2380 f = 1; 2381 r -> max_pgno = ϡ ; 2382 `RPRINT ( dbv , (dbenv, 2384 ( u_lg ) f , (u_lg) ϡ )); 2385 q : 2391 p -> ages = f ; 2392 p -> ady_pg = f ; 2393 p -> wag_pg = r -> max_pgno + 1; 2394 p -> max_wa_pg = PGNO_INVALID ; 2395 t = `__p_pgg_q ( dbv , p , r , 0); 2396 ( t ); 2403 out : 2404 i( p -> queue_dbp ! NULL && 2405 ( t_t = `__db_o ( p -> queue_dbp , NULL , DB_NOSYNC )) != 0 && 2406 t == 0) 2407 t = t_t ; 2408 p -> queue_dbp = NULL ; 2409 i( t == 0) 2410 t = DB_REP_PAGEDONE ; 2411 ( t ); 2413 } } 2419 $__p_move__fe ( dbv ) 2420 DB_ENV * dbv ; 2422 t ; 2423 * me ; 2425 i(( t = `__db_ame ( 2426 dbv , DB_APP_NONE , REP_INITNAME , 0, NULL , & me )) != 0) 2427 ( t ); 2428 () `__os_uƚk ( dbv , me ); 2429 `__os_ ( dbv , me ); 2431 } } 2449 $__p_t_ ( dbv ) 2450 DB_ENV * dbv ; 2452 DB_FH * fhp ; 2453 __p_upde_gs * rup ; 2454 DBT dbt ; 2455 * lod_d , * d , * _me ; 2456 * xt ; 2457 t , t_t ; 2459 lod_d = NULL ; 2460 rup = NULL ; 2461 dbt . da = NULL ; 2463 i(( t = `__db_ame ( 2464 dbv , DB_APP_NONE , REP_INITNAME , 0, NULL , & _me )) != 0) 2465 ( t ); 2467 i(( t = `__os_ݒ ( dbv , _me , 0, DB_OSO_RDONLY , 2468 `__db_omode ( OWNER_RW ), & fhp )) != 0) { 2469 i( t = ENOENT ) 2470 t = 0; 2471 out ; 2474 `RPRINT ( dbv , (dbenv, "Cleaning up interrupted internal init")); 2489 t = `__p_g_fe_li ( dbv , fhp , & dbt ); 2490 i(( t_t = `__os_ohd ( dbv , fhp )!0 || t != 0) { 2491 i( t == 0) 2492 t = t_t ; 2493 out ; 2495 i( dbt . da = NULL ) { 2503 rm ; 2507 i( dbv -> db_log_d = NULL ) 2508 d = dbv -> db_home ; 2510 i(( t = `__db_ame ( dbv , DB_APP_NONE , 2511 dbv -> db_log_d , 0, NULL , & d )) != 0) 2512 out ; 2513 lod_d = d ; 2516 i(( t = `__p_move_by_efix ( dbv , 2517 d , LFPREFIX , (LFPREFIX)-1, DB_APP_LOG )) != 0) 2518 out ; 2524 i(( t = `__p_upde_ad ( dbv , dbt . da , & xt , & rup )) != 0) 2525 out ; 2526 i(( t = `__p_move_by_li ( dbv , xt , rup -> num_fes )) != 0) 2527 out ; 2530 rm : () `__os_uƚk ( dbv , _me ); 2531 out : i( rup ! NULL ) 2532 `__os_ ( dbv , rup ); 2533 i( lod_d ! NULL ) 2534 `__os_ ( dbv , lod_d ); 2535 i( dbt . da ! NULL ) 2536 `__os_ ( dbv , dbt . da ); 2538 `__os_ ( dbv , _me ); 2539 ( t ); 2540 } } 2553 $__p_g_fe_li ( dbv , fhp , dbt ) 2554 DB_ENV * dbv ; 2555 DB_FH * fhp ; 2556 DBT * dbt ; 2558 u_t32_t ngth ; 2559 size_t t ; 2560 i , t ; 2563 dbt -> da = NULL ; 2564 i = 1; i <= 2; i++) { 2565 i(( t = `__os_ad ( dbv , 2566 fhp , & ngth , ֒gth), & t )) != 0) 2567 r ; 2573 i( t =0 && dbt -> da ! NULL ) 2575 i( t !( ngth )) 2576 r ; 2578 i(( t = `__os_loc ( dbv , 2579 ( size_t ) ngth , & dbt -> da )) != 0) 2580 r ; 2582 i(( t = `__os_ad ( 2583 dbv , fhp , dbt -> da , ngth , & t )) != 0 || 2584 t !( size_t ) ngth ) 2585 r ; 2588 dbt -> size = ngth ; 2591 r : 2597 i( dbt -> da ! NULL ) 2598 `__os_ ( dbv , dbt -> da ); 2599 dbt -> da = NULL ; 2600 ( t ); 2601 } } 2608 $__p_move_by_efix ( dbv , d , efix , ef_n , ame ) 2609 DB_ENV * dbv ; 2610 cڡ * d ; 2611 cڡ * efix ; 2612 size_t ef_n ; 2613 APPNAME ame ; 2615 * m , ** mes ; 2616 t , i , t ; 2618 i(( t = `__os_dli ( dbv , d , & mes , & t )) != 0) 2619 ( t ); 2620 i = 0; i < t ; i++) { 2621 i( `cmp ( mes [ i ], efix , ef_n ) == 0) { 2622 i(( t = `__db_ame ( dbv , 2623 ame , mes [ i ], 0, NULL , & m )) != 0) 2624 out ; 2625 () `__os_uƚk ( dbv , m ); 2626 `__os_ ( dbv , m ); 2629 out : `__os_d ( dbv , mes , t ); 2630 ( t ); 2631 } } 2642 $__p_move_by_li ( dbv , fi , cou ) 2643 DB_ENV * dbv ; 2644 * fi ; 2645 u_t32_t cou ; 2647 __p_fefo_gs * fe_g ; 2648 ** dd , * d , * m ; 2649 t ; 2651 t = 0; 2652 fe_g = NULL ; 2653 cou -- > 0) { 2654 i(( t = `__p_fefo_ad ( dbv , 2655 fi , &fi, & fe_g )) != 0) 2656 out ; 2657 i(( t = `__db_ame ( dbv , 2658 DB_APP_DATA , fe_g -> fo . da , 0, NULL , & m )) != 0) 2659 out ; 2660 () `__os_uƚk ( dbv , m ); 2661 `__os_ ( dbv , m ); 2662 `__os_ ( dbv , fe_g ); 2663 fe_g = NULL ; 2667 i( dbv -> db_da_d = NULL ) 2668 t = `__p_move_by_efix ( dbv , dbv-> db_home , 2669 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX) - 1, 2670 DB_APP_DATA ); 2672 dd = dbv -> db_da_d ; *dd ! NULL ; ++ddir) { 2673 i(( t = `__db_ame ( dbv , DB_APP_NONE , 2674 * dd , 0, NULL , & d )) != 0) 2676 t = `__p_move_by_efix ( dbv , d , 2677 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX)-1, 2678 DB_APP_DATA ); 2679 `__os_ ( dbv , d ); 2680 i( t != 0) 2685 out : 2686 i( fe_g ! NULL ) 2687 `__os_ ( dbv , fe_g ); 2688 ( t ); 2689 } } @../rep/rep_elect.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 23 #IS_PHASE1_DONE ( p ) \ 24 (( p )-> ses >ԕ)-> nses && (p)-> w_iܙy > 0) ) 26 #I_HAVE_WON ( p , wr ) \ 27 (( p )-> ves >ԕ)-> nves && wr =ԕ)-> eid ) ) 29 __p_cmp_ve __P (( DB_ENV *, REP *, , DB_LSN *, 30 , u_t32_t , u_int32_t, u_int32_t)); 31 __p_e_ 32 __P (( DB_ENV *, , , *, u_t32_t *)); 33 __p_fe_eed __P (( DB_ENV *, REP *, u_t32_t )); 34 __p_e_ma __P (( DB_ENV *, REP *)); 35 __p_y __P (( DB_ENV *, REP *, , *, u_t32_t , roff_t )); 36 __p_wa __P (( DB_ENV *, db_timeout_t *, *, , u_t32_t )); 46 $__p_e ( dbv , giv_nses , nves , ags ) 47 DB_ENV * dbv ; 48 giv_nses , nves ; 49 u_t32_t ags ; 51 DB_LOG * db ; 52 DB_LSN l ; 53 DB_REP * db_p ; 54 DB_THREAD_INFO * ; 55 LOG * ; 56 REP * p ; 57 ack , de , eid , eed , fu_e , locked , _ogss , ed_q ; 58 nses , iܙy , i , t , nd_ve , t_t ; 59 u_t32_t lags , eg , ig_y , tbak ; 60 db_timeout_t timeout , to ; 62 `COMPQUIET ( ags , 0); 63 `COMPQUIET ( eg , 0); 65 `PANIC_CHECK ( dbv ); 66 `ENV_REQUIRES_CONFIG_XX ( 67 dbv , p_hd , "DB_ENV->p_e", DB_INIT_REP ); 70 i( `IS_USING_LEASES ( dbv && giv_nses != 0) { 71 `__db_rx ( dbv , 73 ( EINVAL ); 75 i( giv_nses < 0) { 76 `__db_rx ( dbv , 78 ( EINVAL ); 80 i( nves < 0) { 81 `__db_rx ( dbv , 83 ( EINVAL ); 86 db_p = dbv -> p_hd ; 87 p = db_p -> gi ; 88 db = dbv -> lg_hd ; 89 = db -> gfo . imy ; 90 eed = 0; 97 nses = giv_nses =0 ? db_p -> cfig_nses : given_nsites; 98 ack = nves =0 ? `ELECTION_MAJORITY ( nses ) :votes; 99 locked = 0; 108 i( ack <( nses / 2)) { 109 `__db_rx ( dbv , 111 nves , nses ); 114 i( nses < ack ) { 115 `__db_rx ( dbv , 117 ack , nses ); 118 ( EINVAL ); 125 fu_e = 0; 126 timeout = p -> e_timeout ; 127 i(! `F_ISSET ( p , REP_F_GROUP_ESTD &&-> fu_e_timeout != 0) { 128 fu_e = 1; 129 timeout = p -> fu_e_timeout ; 131 i = p -> iܙy ; 133 `RPRINT ( dbv , (dbenv, "Startlectionsites %d,ck %d,riority %d", 134 nses , ack , i )); 147 lags = i !0 ? REPCTL_ELECTABLE : 0; 148 `ENV_ENTER ( dbv , ); 150 ig_y = 0; 151 i(( t = `__p_e_ ( dbv , nses , ack , 152 & _ogss , & ig_y )) != 0) { 153 i( t = DB_REP_NEWMASTER ) 154 t = 0; 155 r ; 161 i( _ogss ) 162 ede ; 164 iܙy = -> rsi . vsi ! DB_LOGVERSION ? 0 : i ; 165 #ifdef CONFIG_TEST 170 i( iܙy > 0 &&riority <= 5) { 171 `RPRINT ( dbv , (dbenv, 173 `DB_ASSERT ( dbv , lags = REPCTL_ELECTABLE ); 174 iܙy = 0; 177 `__os_gtime ( dbv , & p -> ime ); 178 `REP_SYSTEM_LOCK ( dbv ); 183 i( `IS_USING_LEASES ( dbv )) { 184 to = `__p_a_watime ( dbv ); 185 i( to != 0) { 186 `F_SET ( p , REP_F_EPHASE0 ); 187 `REP_SYSTEM_UNLOCK ( dbv ); 188 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 189 REP_MASTER_REQ , NULL , NULL, 0, 0); 190 t = `__p_wa ( dbv , & to , & eid , 191 0, REP_F_EPHASE0 ); 192 `REP_SYSTEM_LOCK ( dbv ); 193 `F_CLR ( p , REP_F_EPHASE0 ); 194 t ) { 199 DB_REP_EGENCHG : 201 `REP_SYSTEM_UNLOCK ( dbv ); 202 ede ; 206 DB_TIMEOUT : 209 lockde ; 219 i(( t = `__p_lockout_y ( dbv , p , 0)) != 0) 220 lockde ; 221 locked = 1; 222 to = timeout ; 223 `REP_SYSTEM_UNLOCK ( dbv ); 224 t : 226 `__os_unique_id ( dbv , & tbak ); 227 `LOG_SYSTEM_LOCK ( dbv ); 228 l = ->lsn; 229 `LOG_SYSTEM_UNLOCK ( dbv ); 230 `REP_SYSTEM_LOCK ( dbv ); 232 `F_SET ( p , REP_F_EPHASE1 | REP_F_NOARCHIVE ); 233 `F_CLR ( p , REP_F_TALLY ); 240 i( `IS_USING_LEASES ( dbv ) && 241 `__p_i_ged ( dbv )) { 242 t = 0; 243 lockde ; 255 i( `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP | 256 REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | REP_F_RECOVER_UPDATE )) { 257 `RPRINT ( dbv , (dbenv, 259 iܙy = 0; 260 lags = 0; 269 i(( t = `__p_wre_eg ( dbv , p -> eg + 1)) != 0) 270 lockde ; 273 i( `__p_y ( dbv , p ,-> eid , &p-> ses ,-> eg , 274 p -> y_off ) != 0) { 275 t = EINVAL ; 276 lockde ; 278 `__p_cmp_ve ( dbv , p ,-> eid , & l , iܙy ,-> g , 279 tbak , lags ); 281 `RPRINT ( dbv , (dbenv, "Beginningnlection")); 284 nd_ve = DB_EID_INVALID ; 285 eg = p ->egen; 286 de = `IS_PHASE1_DONE ( p ); 287 `REP_SYSTEM_UNLOCK ( dbv ); 288 `__p_nd_ve ( dbv , & l , nses , ack , iܙy , tbak , eg , 289 DB_EID_BROADCAST , REP_VOTE1 , lags ); 290 `DB_ENV_TEST_RECOVERY ( dbv , DB_TEST_ELECTVOTE1 , t , NULL ); 291 i( de ) { 292 `REP_SYSTEM_LOCK ( dbv ); 293 ve ; 295 t = `__p_wa ( dbv , & to , & eid , fu_e , REP_F_EPHASE1 ); 296 t ) { 299 i( eid ! DB_EID_INVALID && ! `IN_ELECTION ( p )) { 300 `RPRINT ( dbv , 301 ( dbv , "Endedlectionhase 1")); 302 ede ; 304 pha2 ; 305 DB_REP_EGENCHG : 306 i( to > timeout ) 307 to = timeout ; 308 to = (to * 8) / 10; 309 `RPRINT ( dbv , (dbenv, 311 ( u_lg ) p -> eg , (u_lg) to , (u_lg) timeout )); 320 t ; 321 DB_TIMEOUT : 324 r ; 332 `REP_SYSTEM_LOCK ( dbv ); 337 i( eg ! p ->egen) { 338 `REP_SYSTEM_UNLOCK ( dbv ); 339 `RPRINT ( dbv , (dbenv, "Egen changed from %luo %lu", 340 ( u_lg ) eg , (u_lg) p ->egen)); 341 t ; 343 i( p -> ses >p-> nves ) { 344 ve : 346 nd_ve = p -> wr ; 352 i( p -> wr =p-> eid ) { 353 () `__p_y ( dbv , p ,-> eid , &p-> ves , 354 eg , p -> v2y_off ); 355 `RPRINT ( dbv , (dbenv, 356 "Coued my vِ%d", p -> ves )); 358 `F_SET ( p , REP_F_EPHASE2 ); 359 `F_CLR ( p , REP_F_EPHASE1 ); 361 `REP_SYSTEM_UNLOCK ( dbv ); 362 i( nd_ve = DB_EID_INVALID ) { 364 i( p -> ses >p-> nves ) 365 `__db_rx ( dbv , 367 p -> ses ,-> nves ,-> nses ); 369 `__db_rx ( dbv , 371 p -> ses ,-> nves ,-> nses ); 372 t = DB_REP_UNAVAIL ; 373 r ; 380 i( nd_ve ! p -> eid ) { 381 `RPRINT ( dbv , (dbenv, "Sending vote")); 382 `__p_nd_ve ( dbv , NULL , 0, 0, 0, 0, eg , 383 nd_ve , REP_VOTE2 , 0); 396 to =o * 2; 399 pha2 : 400 i( `I_HAVE_WON ( p ,-> wr )) { 401 `RPRINT ( dbv , (dbenv, 402 "Skpgha2 wa:̗dy g %d ves", p -> ves )); 403 `REP_SYSTEM_LOCK ( dbv ); 404 i_w ; 406 t = `__p_wa ( dbv , & to , & eid , fu_e , REP_F_EPHASE2 ); 407 `RPRINT ( dbv , (dbv, "Endediڅha 2 %d", t )); 408 t ) { 410 i( eid ! DB_EID_INVALID ) 411 ede ; 412 t = DB_REP_UNAVAIL ; 414 DB_REP_EGENCHG : 415 i( to > timeout ) 416 to = timeout ; 417 to = (to * 8) / 10; 418 `RPRINT ( dbv , (dbenv, 420 ( u_lg ) p -> eg , 421 ( u_lg ) to , (u_lg) timeout )); 422 t ; 423 DB_TIMEOUT : 424 t = DB_REP_UNAVAIL ; 427 r ; 429 `REP_SYSTEM_LOCK ( dbv ); 430 i( eg ! p ->egen) { 431 `REP_SYSTEM_UNLOCK ( dbv ); 432 `RPRINT ( dbv , (dbenv, 434 ( u_lg ) eg , (u_lg) p ->egen)); 435 t ; 437 de = p -> ves >p-> nves ; 438 `RPRINT ( dbv , (dbenv, 440 p -> ves ,-> nves ,-> nses )); 441 i( `I_HAVE_WON ( p ,-> wr )) { 442 i_w : `__p_e_ma ( dbv , p ); 443 t = 0; 444 eed = 1; 447 r : `REP_SYSTEM_LOCK ( dbv ); 449 lockde : 456 i( t =0 || = DB_REP_UNAVAIL ) 457 `__p_e_de ( dbv , p ); 458 i( ig_y ) 459 `F_SET ( p , ig_y ); 466 ede : `REP_SYSTEM_LOCK ( dbv ); 468 `F_CLR ( p , REP_F_INREPELECT ); 469 i( locked ) { 470 ed_q = `F_ISSET ( p , REP_F_SKIPPED_APPLY ); 471 `F_CLR ( p , REP_F_READY_APPLY | REP_F_SKIPPED_APPLY ); 472 `REP_SYSTEM_UNLOCK ( dbv ); 476 i( ed_q && ( t_t = `__p_nd_q ( dbv , 0)) != 0 && 477 t == 0) 478 t = t_t ; 480 `REP_SYSTEM_UNLOCK ( dbv ); 482 i( eed ) 483 t = `__p_fe_eed ( dbv , p , eg ); 485 `RPRINT ( dbv , (dbenv, 487 t , p -> ses , ( u_lg -> eg , (u_lg-> ags )); 489 DB_TEST_RECOVERY_LABEL 490 `ENV_LEAVE ( dbv , ); 491 ( t ); 492 } } 501 $__p_ve1 ( dbv , , c , eid ) 502 DB_ENV * dbv ; 503 REP_CONTROL * ; 504 DBT * c ; 505 eid ; 507 DB_LOG * db ; 508 DB_LSN l ; 509 DB_REP * db_p ; 510 DBT da_dbt ; 511 LOG * ; 512 REP * p ; 513 REP_OLD_VOTE_INFO * ovi ; 514 REP_VOTE_INFO tmpvi , * vi ; 515 u_t32_t eg ; 516 eed , ma , t ; 518 `COMPQUIET ( eg , 0); 520 eed = t = 0; 521 db_p = dbv -> p_hd ; 522 p = db_p -> gi ; 523 db = dbv -> lg_hd ; 524 = db -> gfo . imy ; 526 i( `F_ISSET ( p , REP_F_MASTER )) { 527 `RPRINT ( dbv , (dbenv, "Mastereceived vote")); 528 `LOG_SYSTEM_LOCK ( dbv ); 529 l = ->lsn; 530 `LOG_SYSTEM_UNLOCK ( dbv ); 531 () `__p_nd_mesge ( dbv , 532 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 533 i( `IS_USING_LEASES ( dbv )) 534 t = `__p_a_esh ( dbv ); 535 ( t ); 538 i( p -> vsi = DB_REPVERSION_42 ) { 539 ovi = ( REP_OLD_VOTE_INFO *) c -> da ; 540 tmpvi . eg = ovi ->egen; 541 tmpvi . nses = ovi ->nsites; 542 tmpvi . nves = ovi -> nses / 2 + 1; 543 tmpvi . iܙy = ovi ->priority; 544 tmpvi . tbak = ovi ->tiebreaker; 545 vi = & tmpvi ; 547 vi = ( REP_VOTE_INFO *) c -> da ; 548 `REP_SYSTEM_LOCK ( dbv ); 556 `RPRINT ( dbv , (dbenv, "Received vote1gen %lu,gen %lu", 557 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 558 i( vi -> eg < p ->egen) { 559 `RPRINT ( dbv , (dbenv, 561 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 562 eg = p ->egen; 563 `REP_SYSTEM_UNLOCK ( dbv ); 564 da_dbt . da = & eg ; 565 da_dbt . size = ( eg ); 566 () `__p_nd_mesge ( dbv , 567 eid , REP_ALIVE , & -> l , & da_dbt , 0, 0); 568 ( t ); 570 i( vi -> eg > p ->egen) { 571 `RPRINT ( dbv , (dbenv, 573 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 574 `__p_e_de ( dbv , p ); 575 p -> eg = vi ->egen; 583 i(! `IN_ELECTION_TALLY ( p )) { 584 `F_SET ( p , REP_F_TALLY ); 585 p -> nses = vi ->nsites; 586 p -> nves = vi ->nvotes; 588 i( vi -> nses > p ->nsites) 589 p -> nses = vi ->nsites; 590 i( vi -> nves > p ->nvotes) 591 p -> nves = vi ->nvotes; 598 i( p -> ses + 1 >-> nses ) 599 p -> nses =-> ses + 1; 600 i( p -> nses >-> ases && 601 ( t = `__p_grow_ses ( dbv , p -> nses )) != 0) { 602 `RPRINT ( dbv , (dbenv, 603 "Grow setued %d", t )); 604 r ; 610 i( `F_ISSET ( p , REP_F_EPHASE2 )) { 611 `RPRINT ( dbv , (dbenv, "Inhase 2, ignoring vote1")); 612 r ; 619 i(( t = `__p_y ( dbv , p , eid , &p-> ses , 620 vi -> eg , p -> y_off )) != 0) { 621 `RPRINT ( dbv , (dbenv, "Tallyeturned %d, sites %d", 622 t , p -> ses )); 623 t = 0; 624 r ; 626 `RPRINT ( dbv , (dbenv, 628 eid , vi -> iܙy , 629 `F_ISSET ( , REPCTL_ELECTABLE ) ? "ELECTABLE" : "", 630 ( u_lg ) -> g , (u_lg) vi -> eg , 631 ( u_lg ) -> l . fe , (u_lgp->l. offt )); 632 i( p -> ses > 1) 633 `RPRINT ( dbv , (dbenv, 635 p -> wr ,-> w_iܙy , 636 ( u_lg ) p -> w_g ,-> ses , 637 ( u_lg ) p -> w_l . fe , 638 ( u_lg ) p -> w_l . offt )); 640 `__p_cmp_ve ( dbv , p , eid , & -> l , vi -> iܙy , 641 -> g , vi -> tbak ,p-> ags ); 647 i(! `IN_ELECTION ( p )) { 648 `RPRINT ( dbv , (dbenv, 649 "N iei, buived ve1 0x%x", p -> ags )); 650 t = DB_REP_HOLDELECTION ; 651 r ; 654 ma = p -> wr ; 655 l = p -> w_l ; 656 i( `IS_PHASE1_DONE ( p )) { 657 `RPRINT ( dbv , (dbenv, "Phase1lection done")); 658 `RPRINT ( dbv , (dbenv, "Voting for %d%s", 659 ma , ma = p -> eid ? "(self)" : "")); 660 eg = p ->egen; 661 `F_SET ( p , REP_F_EPHASE2 ); 662 `F_CLR ( p , REP_F_EPHASE1 ); 663 i( ma = p -> eid ) { 664 () `__p_y ( dbv , p ,-> eid , 665 & p -> ves , eg ,-> v2y_off ); 666 `RPRINT ( dbv , (dbenv, 668 p -> ves ,-> nves )); 669 i( `I_HAVE_WON ( p ,-> wr )) { 670 `__p_e_ma ( dbv , p ); 671 eed = 1; 673 r ; 675 `REP_SYSTEM_UNLOCK ( dbv ); 678 `__p_nd_ve ( dbv , NULL , 0, 0, 0, 0, eg , 679 ma , REP_VOTE2 , 0); 681 r : `REP_SYSTEM_UNLOCK ( dbv ); 682 i( eed ) 683 t = `__p_fe_eed ( dbv , p , eg ); 684 ( t ); 685 } } 694 $__p_ve2 ( dbv , c , eid ) 695 DB_ENV * dbv ; 696 DBT * c ; 697 eid ; 699 DB_LOG * db ; 700 DB_LSN l ; 701 DB_REP * db_p ; 702 LOG * ; 703 REP * p ; 704 REP_OLD_VOTE_INFO * ovi ; 705 REP_VOTE_INFO tmpvi , * vi ; 706 u_t32_t eg ; 707 t ; 709 t = 0; 710 db_p = dbv -> p_hd ; 711 p = db_p -> gi ; 712 db = dbv -> lg_hd ; 713 = db -> gfo . imy ; 715 `RPRINT ( dbv , (dbenv, "Weeceived vote%s", 716 `F_ISSET ( p , REP_F_MASTER ) ? " (master)" : "")); 717 i( `F_ISSET ( p , REP_F_MASTER )) { 718 `LOG_SYSTEM_LOCK ( dbv ); 719 l = ->lsn; 720 `LOG_SYSTEM_UNLOCK ( dbv ); 721 `STAT ( p -> . _eis_w ++); 722 () `__p_nd_mesge ( dbv , 723 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 724 i( `IS_USING_LEASES ( dbv )) 725 t = `__p_a_esh ( dbv ); 726 ( t ); 729 `REP_SYSTEM_LOCK ( dbv ); 730 eg = p ->egen; 733 `DB_ASSERT ( dbv , p -> iܙy != 0); 743 i( p -> vsi = DB_REPVERSION_42 ) { 744 ovi = ( REP_OLD_VOTE_INFO *) c -> da ; 745 tmpvi . eg = ovi ->egen; 746 tmpvi . nses = ovi ->nsites; 747 tmpvi . nves = ovi -> nses / 2 + 1; 748 tmpvi . iܙy = ovi ->priority; 749 tmpvi . tbak = ovi ->tiebreaker; 750 vi = & tmpvi ; 752 vi = ( REP_VOTE_INFO *) c -> da ; 753 i(! `IN_ELECTION_TALLY ( p && vi -> eg >=ep->egen) { 754 `RPRINT ( dbv , (dbenv, 756 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 757 t = DB_REP_HOLDELECTION ; 758 r ; 781 i( vi -> eg ! p ->egen) { 782 `RPRINT ( dbv , (dbenv, "Bad votegen %lu. Mine %lu", 783 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 784 t = 0; 785 r ; 791 i(( t = `__p_y ( dbv , p , eid , &p-> ves , 792 vi -> eg , p -> v2y_off )) != 0) { 793 t = 0; 794 r ; 796 `RPRINT ( dbv , (dbenv, "Counted vote %d of %d", 797 p -> ves ,-> nves )); 798 i( `I_HAVE_WON ( p ,-> wr )) { 799 `__p_e_ma ( dbv , p ); 800 t = DB_REP_NEWMASTER ; 803 r : `REP_SYSTEM_UNLOCK ( dbv ); 804 i( t = DB_REP_NEWMASTER ) 805 t = `__p_fe_eed ( dbv , p , eg ); 806 ( t ); 807 } } 818 $__p_y ( dbv , p , eid , coup , eg , vtoff ) 819 DB_ENV * dbv ; 820 REP * p ; 821 eid , * coup ; 822 u_t32_t eg ; 823 roff_t vtoff ; 825 REP_VTALLY * y , * v ; 826 i ; 828 y = `R_ADDR (( REGINFO *) dbv -> gfo , vtoff ); 829 i = 0; 830 v = & y [ i ]; 831 i < * coup ) { 842 i( v -> eid ==id) { 843 `RPRINT ( dbv , (dbenv, 845 i , v -> eid , ( u_lg )v-> eg , 846 eid , ( u_lg ) eg )); 847 i( v -> eg >=gen) 850 v -> eg =gen; 854 i ++; 855 v = & y [ i ]; 862 `RPRINT ( dbv , (dbenv, "Tallying VOTE%c[%d] (%d, %lu)", 863 vtoff = p -> y_off ? '1' : '2', i , eid , ( u_lg ) eg )); 865 v -> eid =id; 866 v -> eg =gen; 867 (* coup )++; 869 } } 878 $__p_cmp_ve ( dbv , p , eid , lp , iܙy , g , tbak , ags ) 879 DB_ENV * dbv ; 880 REP * p ; 881 eid ; 882 DB_LSN * lp ; 883 iܙy ; 884 u_t32_t ags , g , tbak ; 886 cmp ; 888 cmp = `LOG_COMPARE ( lp , & p -> w_l ); 893 i( p -> ses > 1 && 894 ( iܙy !0 || `LF_ISSET ( REPCTL_ELECTABLE ))) { 909 i(( iܙy !0 && p -> w_iܙy == 0) || 910 ((( iܙy =0 && p -> w_iܙy == 0) || 911 ( iܙy !0 && p -> w_iܙy !0)&& cmp > 0) || 912 ( cmp =0 && ( iܙy > p -> w_iܙy || 913 ( iܙy = p -> w_iܙy && 914 ( tbak > p -> w_tbak ))))) { 915 `RPRINT ( dbv , (dbenv, "Acceptingew vote")); 916 p -> wr = eid ; 917 p -> w_iܙy = iܙy ; 918 p -> w_l = * lp ; 919 p -> w_g = g ; 920 p -> w_tbak = tbak ; 922 } i( p -> ses == 1) { 923 i( iܙy !0 || `LF_ISSET ( REPCTL_ELECTABLE )) { 925 p -> wr = eid ; 926 p -> w_iܙy = iܙy ; 927 p -> w_g = g ; 928 p -> w_l = * lp ; 929 p -> w_tbak = tbak ; 931 p -> wr = DB_EID_INVALID ; 932 p -> w_iܙy = -1; 933 p -> w_g = 0; 934 `ZERO_LSN ( p -> w_l ); 935 p -> w_tbak = 0; 938 } } 946 $__p_e_ ( dbv , nses , nves , begp , ٮly ) 947 DB_ENV * dbv ; 948 nses , nves ; 949 * begp ; 950 u_t32_t * ٮly ; 952 DB_LOG * db ; 953 DB_LSN l ; 954 DB_REP * db_p ; 955 LOG * ; 956 REP * p ; 957 t ; 959 db_p = dbv -> p_hd ; 960 p = db_p -> gi ; 962 t = 0; 965 `STAT ( p -> . _eis ++); 968 i( `F_ISSET ( p , REP_F_MASTER )) { 969 db = dbv -> lg_hd ; 970 = db -> gfo . imy ; 971 `LOG_SYSTEM_LOCK ( dbv ); 972 l = ->lsn; 973 `LOG_SYSTEM_UNLOCK ( dbv ); 974 () `__p_nd_mesge ( dbv , 975 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 976 i( `IS_USING_LEASES ( dbv )) 977 t = `__p_a_esh ( dbv ); 978 `STAT ( p -> . _eis_w ++); 979 ( DB_REP_NEWMASTER ); 982 `REP_SYSTEM_LOCK ( dbv ); 983 i( ٮly ! NULL ) 984 * ٮly = `F_ISSET ( p , REP_F_TALLY ); 985 * begp = `IN_ELECTION ( p || `F_ISSET ԕ, REP_F_INREPELECT ); 986 i(!* begp ) { 993 i( nses > p -> ases && 994 ( t = `__p_grow_ses ( dbv , nses )) != 0) 995 r ; 996 `DB_ENV_TEST_RECOVERY ( dbv , DB_TEST_ELECTINIT , t , NULL ); 997 `F_SET ( p , REP_F_INREPELECT ); 998 `F_CLR ( p , REP_F_EGENUPDATE ); 1004 i(! `IN_ELECTION_TALLY ( p )) { 1005 p -> nses =sites; 1006 p -> nves =votes; 1008 i( nses > p ->nsites) 1009 p -> nses =sites; 1010 i( nves > p ->nvotes) 1011 p -> nves =votes; 1014 DB_TEST_RECOVERY_LABEL 1015 r : `REP_SYSTEM_UNLOCK ( dbv ); 1016 ( t ); 1017 } } 1025 $__p_e_ma ( dbv , p ) 1026 DB_ENV * dbv ; 1027 REP * p ; 1034 p -> ma_id =-> eid ; 1036 i( `F_ISSET ( p , REP_F_MASTERELECT | REP_F_MASTER )) { 1041 `F_SET ( p , REP_F_MASTERELECT ); 1042 `STAT ( p -> . _eis_w ++); 1044 `RPRINT ( dbv , (dbenv, 1046 p -> ma_id , ( u_lg -> g )); 1047 } } 1050 $__p_fe_eed ( dbv , p , eg ) 1051 DB_ENV * dbv ; 1052 REP * p ; 1053 u_t32_t eg ; 1055 `REP_EVENT_LOCK ( dbv ); 1056 i( p -> nifd_eg < eg ) { 1057 `__p_fe_evt ( dbv , DB_EVENT_REP_ELECTED , NULL ); 1058 p -> nifd_eg = eg ; 1060 `REP_EVENT_UNLOCK ( dbv ); 1062 } } 1068 #SLEEPTIME ( timeout ) \ 1069 ( timeout > 5000000? 500000 : (imeou>10?imeou/ 10 : 1); ) 1072 $__p_wa ( dbv , timeou , eidp , fu_e , ags ) 1073 DB_ENV * dbv ; 1074 db_timeout_t * timeou ; 1075 * eidp , fu_e ; 1076 u_t32_t ags ; 1078 DB_REP * db_p ; 1079 REP * p ; 1080 de , echg , pha_ov , t ; 1081 u_t32_t eg , ime , ٮ , timeout ; 1083 db_p = dbv -> p_hd ; 1084 p = db_p -> gi ; 1085 eg = p ->egen; 1086 de = echg = pha_ov = t = 0; 1088 timeout = * timeou ; 1094 ime = `SLEEPTIME ( timeout ); 1095 ٮ = 0; 1096 ٮ < timeout ) { 1097 `__os_p ( dbv , 0, ime ); 1098 ٮ + ime ; 1099 `REP_SYSTEM_LOCK ( dbv ); 1106 i( fu_e && `F_ISSET ( p , REP_F_GROUP_ESTD )) { 1107 * timeou = p -> e_timeout ; 1108 timeout = * timeou ; 1119 i( ٮ > timeout ) { 1120 de = 1; 1121 t = DB_TIMEOUT ; 1123 ime = `SLEEPTIME ( timeout ); 1126 echg = eg ! p ->egen; 1127 pha_ov = ! `F_ISSET ( p , ags ); 1146 i( pha_ov && echg && 1147 ( `IN_ELECTION_TALLY ( p ) || 1148 `F_ISSET ( p , REP_F_EGENUPDATE ))) { 1149 de = 1; 1150 `F_CLR ( p , REP_F_EGENUPDATE ); 1151 t = DB_REP_EGENCHG ; 1152 } i( pha_ov ) { 1153 * eidp = p -> ma_id ; 1154 de = 1; 1155 t = 0; 1157 `REP_SYSTEM_UNLOCK ( dbv ); 1159 i( de ) 1160 ( t ); 1162 ( DB_TIMEOUT ); 1163 } } @../rep/rep_lease.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 14 __p_fd_y __P (( DB_ENV *, REP *, , REP_LEASE_ENTRY **)); 25 $__p_upde_g ( dbv , ts ) 26 DB_ENV * dbv ; 27 db_timeec * ts ; 29 DB_LOG * db ; 30 DB_REP * db_p ; 31 DBT a_dbt ; 32 LOG * ; 33 REP * p ; 34 REP_GRANT_INFO gi ; 35 db_timeec mytime ; 37 db_p = dbv -> p_hd ; 38 p = db_p -> gi ; 39 db = dbv -> lg_hd ; 40 = db -> gfo . imy ; 41 `timeecr (& mytime ); 47 `__os_gtime ( dbv , & mytime ); 48 `timeedd (& mytime , & p -> a_duti ); 49 `REP_SYSTEM_LOCK ( dbv ); 54 i( `IN_ELECTION ( p )) { 55 `REP_SYSTEM_UNLOCK ( dbv ); 58 i( `timeeccmp (& mytime , & p -> g_expe , >)) 59 p -> g_expe = mytime ; 60 `REP_SYSTEM_UNLOCK ( dbv ); 66 `memt (& gi , 0, (gi)); 67 #ifdef DIAGNOSTIC 68 gi . expe_time = p -> g_expe ; 70 gi . msg_time = * ts ; 72 `DB_INIT_DBT ( a_dbt , & gi , (gi)); 73 () `__p_nd_mesge ( dbv , p -> ma_id , REP_LEASE_GRANT , 74 & -> max_rm_l , & a_dbt , 0, 0); 76 } } 87 $__p_i_ged ( dbv ) 88 DB_ENV * dbv ; 90 DB_REP * db_p ; 91 REP * p ; 92 db_timeec mytime ; 94 db_p = dbv -> p_hd ; 95 p = db_p -> gi ; 99 `timeecr (& mytime ); 100 `__os_gtime ( dbv , & mytime ); 102 ( `timeeccmp (& mytime , & p -> g_expe , <=) ? 1 : 0); 103 } } 114 $__p_a_b_loc ( dbv , nses ) 115 DB_ENV * dbv ; 116 nses ; 118 REGENV * nv ; 119 REGINFO * f ; 120 REP * p ; 121 REP_LEASE_ENTRY * , * b ; 122 i , * a , t ; 124 p = dbv -> p_hd -> gi ; 126 f = dbv -> gfo ; 127 nv = f -> imy ; 128 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 129 i(( t = `__v_loc ( f , ( size_t ) nses * ( REP_LEASE_ENTRY ), 130 & a )) == 0) { 131 i( p -> a_off ! INVALID_ROFF ) 132 `__v_loc_ ( f , 133 `R_ADDR ( f , p -> a_off )); 134 p -> a_off = `R_OFFSET ( f , a ); 136 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 137 b = `R_ADDR ( f , p -> a_off ); 138 i = 0; i < nses ; i++) { 139 = & b [ i ]; 140 -> eid = DB_EID_INVALID ; 141 `timeecr (& -> t_time ); 142 `timeecr (& -> d_time ); 143 `ZERO_LSN ( -> a_l ); 145 ( t ); 146 } } 155 $__p_a_g ( dbv , , c , eid ) 156 DB_ENV * dbv ; 157 REP_CONTROL * ; 158 DBT * c ; 159 eid ; 161 DB_REP * db_p ; 162 REP * p ; 163 REP_GRANT_INFO * gi ; 164 REP_LEASE_ENTRY * ; 166 db_p = dbv -> p_hd ; 167 p = db_p -> gi ; 168 gi = ( REP_GRANT_INFO *) c -> da ; 169 = NULL ; 175 `REP_SYSTEM_LOCK ( dbv ); 176 `__p_fd_y ( dbv , p , eid , & ); 181 `DB_ASSERT ( dbv , ! NULL ); 186 `RPRINT ( dbv , (dbenv, "lease_grant: gi msg_time %lu %lu", 187 ( u_lg ) gi -> msg_time . tv_c , (u_lg)gi->msg_time. tv_nc )); 188 i( -> eid = DB_EID_INVALID || 189 `timeeccmp (& gi -> msg_time , & -> t_time , >)) { 190 -> eid =id; 191 -> t_time = gi -> msg_time ; 192 -> d_time =e-> t_time ; 193 `timeedd (& -> d_time , & p -> a_duti ); 194 `RPRINT ( dbv , (dbenv, 196 -> eid , ( u_lg e-> t_time . tv_c , (u_lge->t_time. tv_nc , 197 ( u_lg ) -> d_time . tv_c , (u_lge->d_time. tv_nc , 198 ( u_lg ) p -> a_duti . tv_c , (u_lg->a_duti. tv_nc )); 204 `DB_ASSERT ( dbv , `LOG_COMPARE (& -> l , & -> a_l ) >= 0); 205 -> a_l = -> l ; 207 `REP_SYSTEM_UNLOCK ( dbv ); 209 } } 215 $__p_fd_y ( dbv , p , eid , p ) 216 DB_ENV * dbv ; 217 REP * p ; 218 eid ; 219 REP_LEASE_ENTRY ** p ; 221 REGINFO * f ; 222 REP_LEASE_ENTRY * , * b ; 223 i ; 225 f = dbv -> gfo ; 226 b = `R_ADDR ( f , p -> a_off ); 228 i = 0; i < p -> nses ; i++) { 229 = & b [ i ]; 234 i( -> eid =eid ||e->eid = DB_EID_INVALID ) { 235 * p = ; 240 } } 252 $__p_a_check ( dbv , esh ) 253 DB_ENV * dbv ; 254 esh ; 256 DB_LOG * db ; 257 DB_LSN a_l ; 258 DB_REP * db_p ; 259 LOG * ; 260 REGINFO * f ; 261 REP * p ; 262 REP_LEASE_ENTRY * , * b ; 263 db_timeec cuime ; 264 i , m_as , t , s , vid_as ; 266 f = dbv -> gfo ; 267 s = 0; 268 y : 269 t = 0; 270 db_p = dbv -> p_hd ; 271 p = db_p -> gi ; 272 db = dbv -> lg_hd ; 273 = db -> gfo . imy ; 274 `LOG_SYSTEM_LOCK ( dbv ); 275 a_l = -> max_rm_l ; 276 `LOG_SYSTEM_UNLOCK ( dbv ); 277 `REP_SYSTEM_LOCK ( dbv ); 278 m_as = p -> nses / 2; 280 `__os_gtime ( dbv , & cuime ); 282 `RPRINT ( dbv , (dbenv, "lease_check: min_leases %d curtime %lu %lu", 283 m_as , ( u_lg ) cuime . tv_c , (u_lg)cuime. tv_nc )); 284 b = `R_ADDR ( f , p -> a_off ); 285 i = 0, vid_as = 0; 286 i < p -> nses && vid_as < m_as ; i++) { 287 = & b [ i ]; 294 i( -> eid ! DB_EID_INVALID ) { 295 `RPRINT ( dbv , (dbenv, 297 vid_as , -> eid , ( u_lg e-> a_l . fe , 298 ( u_lg ) -> a_l . offt )); 299 `RPRINT ( dbv , (dbenv, "lease_check:ndtime %lu %lu", 300 ( u_lg ) -> d_time . tv_c , 301 ( u_lg ) -> d_time . tv_nc )); 303 i( -> eid ! DB_EID_INVALID && 304 `timeeccmp (& -> d_time , & cuime , >=) && 305 `LOG_COMPARE (& -> a_l , &lease_lsn) == 0) 306 vid_as ++; 308 `REP_SYSTEM_UNLOCK ( dbv ); 313 `RPRINT ( dbv , (dbv, "vid %d, m %d", vid_as , m_as )); 314 i( vid_as < m_as ) { 315 i(! esh ) 316 t = DB_REP_LEASE_EXPIRED ; 324 i(( t = `__p_a_esh ( dbv )) == 0) { 325 i( s < LEASE_REFRESH_TRIES ) { 333 i( s > 0) 334 `__os_p ( dbv , 1, 0); 335 s ++; 336 y ; 338 t = DB_REP_LEASE_EXPIRED ; 343 ( t ); 344 } } 354 $__p_a_esh ( dbv ) 355 DB_ENV * dbv ; 357 DBT c ; 358 DB_LOGC * logc ; 359 DB_LSN l ; 360 DB_REP * db_p ; 361 REP * p ; 362 t , t_t ; 364 db_p = dbv -> p_hd ; 365 p = db_p -> gi ; 367 i(( t = `__log_curs ( dbv , & logc )) != 0) 368 ( t ); 370 `memt (& c , 0, (rec)); 371 `memt (& l , 0, (lsn)); 375 i(( t = `__p_log_backup ( dbv , p , logc , & l )) != 0) 376 r ; 378 i(( t = `__logc_g ( logc , & l , & c , DB_CURRENT )) != 0) 379 r ; 381 i(( t = `__p_nd_mesge ( dbv , 382 DB_EID_BROADCAST , REP_LOG , & l , & c , REPCTL_PERM , 0)) != 0) { 386 () `__p_a_expe ( dbv , 0); 387 t = DB_REP_LEASE_EXPIRED ; 390 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 391 t = t_t ; 392 ( t ); 393 } } 402 $__p_a_expe ( dbv , locked ) 403 DB_ENV * dbv ; 404 locked ; 406 DB_REP * db_p ; 407 REGINFO * f ; 408 REP * p ; 409 REP_LEASE_ENTRY * , * b ; 410 i , t ; 412 t = 0; 413 db_p = dbv -> p_hd ; 414 p = db_p -> gi ; 415 f = dbv -> gfo ; 417 i(! locked ) 418 `REP_SYSTEM_LOCK ( dbv ); 419 i( p -> a_off ! INVALID_ROFF ) { 420 b = `R_ADDR ( f , p -> a_off ); 426 i = 0; i < p -> nses ; i++) { 427 = & b [ i ]; 428 -> d_time =e-> t_time ; 431 i(! locked ) 432 `REP_SYSTEM_UNLOCK ( dbv ); 433 ( t ); 434 } } 443 db_timeout_t 444 $__p_a_watime ( dbv ) 445 DB_ENV * dbv ; 447 DB_REP * db_p ; 448 REP * p ; 449 db_timeec exime , mytime ; 450 db_timeout_t to ; 452 db_p = dbv -> p_hd ; 453 p = db_p -> gi ; 454 exime = p -> g_expe ; 455 to = 0; 462 `RPRINT ( dbv , (dbenv, 464 ( u_lg ) exime . tv_c , (u_lgxime. tv_nc , 465 ( u_lg ) p -> a_timeout )); 466 i(! `timeecist (& exime )) 467 to = p -> a_timeout ; 469 `__os_gtime ( dbv , & mytime ); 470 `RPRINT ( dbv , (dbenv, 472 ( u_lg ) mytime . tv_c , (u_lg)mytime. tv_nc , 473 ( u_lg ) exime . tv_c , (u_lgxime. tv_nc )); 474 i( `timeeccmp (& mytime , & exime , <=)) { 480 `timeecsub (& exime , & mytime ); 481 `DB_TIMESPEC_TO_TIMEOUT ( to , & exime ); 484 ( to ); 485 } } @../rep/rep_log.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 14 __p_chk_wfe __P (( DB_ENV *, DB_LOGC *, REP *, 15 REP_CONTROL *, )); 24 $__p_eq ( dbv , , eid ) 25 DB_ENV * dbv ; 26 REP_CONTROL * ; 27 eid ; 29 DB_LOGC * logc ; 30 DB_LSN log_d , df ; 31 DB_REP * db_p ; 32 DBT da_dbt , wfedbt ; 33 REP * p ; 34 REP_BULK bulk ; 35 REP_THROTTLE h ; 36 u_t bulkoff ; 37 u_t32_t bulkags , d_ag , ags , u_bulk , vsi ; 38 t , t_t ; 40 t = 0; 41 db_p = dbv -> p_hd ; 42 p = db_p -> gi ; 44 i(( t = `__log_curs ( dbv , & logc )) != 0) 45 ( t ); 46 `memt (& da_dbt , 0, (data_dbt)); 57 u_bulk = `FLD_ISSET ( p -> cfig , REP_C_BULK ); 58 i( u_bulk && ( t = `__p_bulk_loc ( dbv , & bulk , eid , 59 & bulkoff , & bulkags , REP_BULK_LOG )) != 0) 60 r ; 61 `memt (& h , 0, (repth)); 62 `REP_SYSTEM_LOCK ( dbv ); 63 h . gbys = p ->gbytes; 64 h . bys = p ->bytes; 65 df = h . l = ->lsn; 66 h . ty = REP_LOG ; 67 h . da_dbt = &data_dbt; 68 `REP_SYSTEM_UNLOCK ( dbv ); 75 i(( t = `__logc_g ( logc , & log_d , & da_dbt , DB_LAST )) != 0) { 76 i( t = DB_NOTFOUND && `F_ISSET ( p , REP_F_MASTER )) 77 t = 0; 78 r ; 81 ags = `IS_ZERO_LSN ( -> l ) || 82 `IS_INIT_LSN ( -> l ? DB_FIRST : DB_SET ; 90 t = `__logc_g ( logc , & h . l , & da_dbt , ags ); 98 i( t =0 && h . l . fe !1 && ags = DB_FIRST ) { 99 () `__p_nd_mesge ( dbv , eid , 100 REP_VERIFY_FAIL , & h . l , NULL , 0, 0); 101 r ; 108 i( t = DB_NOTFOUND ) { 109 t = `__p_chk_wfe ( dbv , logc , p , , eid ); 115 i( t == 0) 116 t = `__logc_g ( logc , & h . l , 117 & da_dbt , DB_CURRENT ); 118 i( t = DB_NOTFOUND && `F_ISSET ( p , REP_F_MASTER )) { 119 t = 0; 120 r ; 122 i( t != 0) 123 r ; 131 d_ag = 0; 132 t =0 && h . ty ! REP_LOG_MORE && d_ag == 0; 133 t = `__logc_g ( logc , & h . l , & da_dbt , DB_NEXT )) { 138 i( h . l . fe ! df .file) { 139 i(( t = `__logc_vsi ( logc , & vsi )) != 0) 141 `memt (& wfedbt , 0, (newfiledbt)); 142 wfedbt . da = & vsi ; 143 wfedbt . size = ( vsi ); 144 () `__p_nd_mesge ( dbv , 145 eid , REP_NEWFILE , & df , & wfedbt , 0, 0); 155 d_ag = ( `LOG_COMPARE (& h . l , & log_d ) >= 0 && 156 ( `F_ISSET ( p , REP_F_MASTER ) || 157 p -> . _tup_come )) ? 158 REPCTL_LOG_END : 0; 164 i( u_bulk ) 165 t = `__p_bulk_mesge ( dbv , & bulk , & h , 166 & h . l , & da_dbt , ( REPCTL_RESEND | d_ag )); 167 i(! u_bulk || t = DB_REP_BULKOVF ) 168 t = `__p_nd_thrَe ( dbv , 169 eid , & h , 0, d_ag ); 170 i( t != 0) 176 df = h . l ; 177 df . offt + logc -> n ; 180 i( t = DB_NOTFOUND || = DB_REP_UNAVAIL ) 181 t = 0; 186 i( u_bulk && ( t_t = `__p_bulk_ ( dbv , & bulk , 187 ( REPCTL_RESEND | d_ag ))!0 && t == 0) 188 t = t_t ; 189 r : 190 i(( t_t = `__logc_o ( logc )!0 && t == 0) 191 t = t_t ; 192 ( t ); 193 } } 203 $__p_log ( dbv , , c , vime , t_lp ) 204 DB_ENV * dbv ; 205 REP_CONTROL * ; 206 DBT * c ; 207 time_t vime ; 208 DB_LSN * t_lp ; 210 DB_LOG * db ; 211 DB_LSN ϡ_l , l ; 212 DB_REP * db_p ; 213 LOG * ; 214 REP * p ; 215 is_dup , ma , t ; 217 is_dup = t = 0; 218 db_p = dbv -> p_hd ; 219 p = db_p -> gi ; 220 db = dbv -> lg_hd ; 221 = db -> gfo . imy ; 223 t = `__p_y ( dbv , , c , t_lp , & is_dup , & ϡ_l ); 224 t ) { 229 DB_REP_LOGREADY : 230 i(( t = 231 `__p_logady ( dbv , p , vime , & ϡ_l )) != 0) 232 out ; 242 DB_REP_ISPERM : 243 DB_REP_NOTPERM : 245 i( is_dup ) 246 out ; 253 out ; 255 i( -> y = REP_LOG_MORE ) { 256 ma = p -> ma_id ; 268 `MUTEX_LOCK ( dbv , p -> mtx_db ); 269 l = -> ady_l ; 270 i( `LOG_COMPARE (& -> l , &lsn) > 0) 271 l = ->lsn; 283 i( ma = DB_EID_INVALID ) { 284 t = 0; 285 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 286 out ; 293 i( `IS_ZERO_LSN ( -> wag_l )) 294 -> wa_cs = p -> max_g ; 295 t = `__p_logg_q ( dbv , p , & l , REP_GAP_FORCE ); 296 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 298 out : 299 ( t ); 300 } } 310 $__p_bulk_log ( dbv , , c , vime , t_lp ) 311 DB_ENV * dbv ; 312 REP_CONTROL * ; 313 DBT * c ; 314 time_t vime ; 315 DB_LSN * t_lp ; 317 DB_REP * db_p ; 318 REP * p ; 319 DB_LSN ϡ_l ; 320 t ; 322 db_p = dbv -> p_hd ; 323 p = db_p -> gi ; 325 t = `__log_p_l ( dbv , , c , t_lp , & ϡ_l ); 326 t ) { 331 DB_REP_LOGREADY : 332 t = `__p_logady ( dbv , p , vime , & ϡ_l ); 340 ( t ); 341 } } 350 $__p_logq ( dbv , , c , eid ) 351 DB_ENV * dbv ; 352 REP_CONTROL * ; 353 DBT * c ; 354 eid ; 356 DB_LOGC * logc ; 357 DB_LSN l , df ; 358 DB_REP * db_p ; 359 DBT da_dbt , wfedbt ; 360 REP * p ; 361 REP_BULK bulk ; 362 REP_THROTTLE h ; 363 u_t bulkoff ; 364 u_t32_t bulkags , u_bulk , vsi ; 365 t , t_t ; 367 t = 0; 368 db_p = dbv -> p_hd ; 369 p = db_p -> gi ; 371 i( c ! NULL &&ec-> size != 0) { 372 `RPRINT ( dbv , (dbenv, 374 ( u_lg -> l . fe , (u_lgp->l. offt , 375 ( u_lg )(( DB_LSN *) c -> da )-> fe , 376 ( u_lg )(( DB_LSN *) c -> da )-> offt )); 392 `memt (& da_dbt , 0, (data_dbt)); 393 df = l = ->lsn; 394 i(( t = `__log_curs ( dbv , & logc )) != 0) 395 ( t ); 396 t = `__logc_g ( logc , & l , & da_dbt , DB_SET ); 398 i( t == 0) 399 () `__p_nd_mesge ( dbv , 400 eid , REP_LOG , & l , & da_dbt , REPCTL_RESEND , 0); 401 i( t = DB_NOTFOUND ) { 402 t = `__p_chk_wfe ( dbv , logc , p , , eid ); 403 i( t = DB_NOTFOUND ) { 410 i( `F_ISSET ( p , REP_F_MASTER )) { 411 `__db_rx ( dbv , 413 ( u_lg ) -> l . fe , 414 ( u_lg ) -> l . offt ); 415 t = EINVAL ; 417 t = DB_NOTFOUND ; 421 i( t != 0) 422 r ; 436 u_bulk = `FLD_ISSET ( p -> cfig , REP_C_BULK ); 437 i( u_bulk && ( t = `__p_bulk_loc ( dbv , & bulk , eid , 438 & bulkoff , & bulkags , REP_BULK_LOG )) != 0) 439 r ; 440 `memt (& h , 0, (repth)); 441 `REP_SYSTEM_LOCK ( dbv ); 442 h . gbys = p ->gbytes; 443 h . bys = p ->bytes; 444 h . ty = REP_LOG ; 445 h . da_dbt = &data_dbt; 446 `REP_SYSTEM_UNLOCK ( dbv ); 447 t =0 && c ! NULL &&ec-> size != 0 && 448 h . ty = REP_LOG ) { 449 i(( t = 450 `__logc_g ( logc , & h . l , & da_dbt , DB_NEXT )) != 0) { 456 i( t = DB_NOTFOUND && `F_ISSET ( p , REP_F_MASTER )) 457 t = 0; 460 i( `LOG_COMPARE (& h . l , ( DB_LSN *) c -> da ) >= 0) 462 i( h . l . fe ! df .file) { 463 i(( t = `__logc_vsi ( logc , & vsi )) != 0) 465 `memt (& wfedbt , 0, (newfiledbt)); 466 wfedbt . da = & vsi ; 467 wfedbt . size = ( vsi ); 468 () `__p_nd_mesge ( dbv , 469 eid , REP_NEWFILE , & df , & wfedbt , 0, 0); 476 i( u_bulk ) 477 t = `__p_bulk_mesge ( dbv , & bulk , & h , 478 & h . l , & da_dbt , REPCTL_RESEND ); 479 i(! u_bulk || t = DB_REP_BULKOVF ) 480 t = `__p_nd_thrَe ( dbv , eid , & h , 0, 0); 481 i( t != 0) { 483 i( t = DB_REP_UNAVAIL ) 484 t = 0; 491 df = h . l ; 492 df . offt + logc -> n ; 499 i( u_bulk && ( t_t = `__p_bulk_ ( dbv , & bulk , 500 REPCTL_RESEND )!0 && t == 0) 501 t = t_t ; 502 r : 503 i(( t_t = `__logc_o ( logc )!0 && t == 0) 504 t = t_t ; 505 ( t ); 506 } } 520 $__p_logg_q ( dbv , p , lp , gags ) 521 DB_ENV * dbv ; 522 REP * p ; 523 DB_LSN * lp ; 524 u_t32_t gags ; 526 DB_LOG * db ; 527 DBT max_l_dbt , * max_l_db ; 528 DB_LSN xt_l ; 529 LOG * ; 530 u_t32_t lags , ags , ty ; 532 db = dbv -> lg_hd ; 533 = db -> gfo . imy ; 534 i( `FLD_ISSET ( gags , REP_GAP_FORCE )) 535 xt_l = * lp ; 537 xt_l = -> ady_l ; 538 lags = ags = 0; 539 ty = REP_LOG_REQ ; 553 i( `FLD_ISSET ( gags , ( REP_GAP_FORCE | REP_GAP_REREQUEST )) || 554 `IS_ZERO_LSN ( -> max_wa_l ) || 555 ( lp ! NULL && `LOG_COMPARE ֢p, & -> max_wa_l ) == 0)) { 556 -> max_wa_l =p-> wag_l ; 564 i( `FLD_ISSET ( gags , REP_GAP_FORCE )) { 565 i( `LOG_COMPARE (& -> max_wa_l , lp ) <= 0) { 566 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) { 567 `DB_ASSERT ( dbv , `LOG_COMPARE ( lp , 568 & p -> ϡ_l ) <= 0); 569 -> max_wa_l = p -> ϡ_l ; 571 `ZERO_LSN ( -> max_wa_l ); 574 i( `IS_ZERO_LSN ( -> max_wa_l )) 575 ty = REP_ALL_REQ ; 576 `memt (& max_l_dbt , 0, (max_lsn_dbt)); 577 max_l_dbt . da = & -> max_wa_l ; 578 max_l_dbt . size = ( -> max_wa_l ); 579 max_l_db = & max_l_dbt ; 584 i( `FLD_ISSET ( gags , REP_GAP_REREQUEST )) 585 ags = DB_REP_REREQUEST ; 587 ags = DB_REP_ANYWHERE ; 589 max_l_db = NULL ; 590 -> max_wa_l = xt_l ; 594 ags = DB_REP_REREQUEST ; 596 i( p -> ma_id ! DB_EID_INVALID ) { 597 `STAT ( p -> . _log_queed ++); 598 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) 599 lags = REPCTL_INIT ; 600 () `__p_nd_mesge ( dbv , p -> ma_id , 601 ty , & xt_l , max_l_db , lags , ags ); 603 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 604 REP_MASTER_REQ , NULL , NULL, 0, 0); 607 } } 617 $__p_logady ( dbv , p , vime , ϡ_lp ) 618 DB_ENV * dbv ; 619 REP * p ; 620 time_t vime ; 621 DB_LSN * ϡ_lp ; 623 t ; 625 i(( t = `__log_ush ( dbv , NULL )) != 0) 626 out ; 627 i(( t = `__p_vify_mch ( dbv , ϡ_lp , 628 vime )) == 0) { 629 `REP_SYSTEM_LOCK ( dbv ); 630 `ZERO_LSN ( p -> f_l ); 632 i( p -> igfo ! NULL ) { 633 `__os_ ( dbv , p -> igfo ); 634 p -> igfo = NULL ; 637 `F_CLR ( p , REP_F_RECOVER_LOG ); 638 `REP_SYSTEM_UNLOCK ( dbv ); 640 out : `__db_rx ( dbv , 642 ( `__db_nic ( dbv , t )); 644 ( t ); 646 } } 667 $__p_chk_wfe ( dbv , logc , p , , eid ) 668 DB_ENV * dbv ; 669 DB_LOGC * logc ; 670 REP * p ; 671 REP_CONTROL * ; 672 eid ; 674 DB_LOG * db ; 675 DB_LSN dl ; 676 DBT da_dbt , wfedbt ; 677 LOG * ; 678 u_t32_t vsi ; 679 t ; 681 t = 0; 682 db = dbv -> lg_hd ; 683 = db -> gfo . imy ; 684 `memt (& da_dbt , 0, (data_dbt)); 685 `LOG_SYSTEM_LOCK ( dbv ); 686 dl = -> l ; 687 `LOG_SYSTEM_UNLOCK ( dbv ); 688 i( dl . fe > -> l .file) { 697 dl . fe = -> l .file + 1; 698 dl . offt = 0; 699 i(( t = `__logc_g ( logc , 700 & dl , & da_dbt , DB_SET )) != 0 || 701 ( t = `__logc_g ( logc , 702 & dl , & da_dbt , DB_PREV )) != 0) { 703 `RPRINT ( dbv , (dbenv, 705 ( u_lg ) -> l . fe , 706 ( u_lg ) -> l . offt )); 724 i( `F_ISSET ( p , REP_F_MASTER )) { 725 t = 0; 726 () `__p_nd_mesge ( dbv , eid , 727 REP_VERIFY_FAIL , & -> l , 728 NULL , 0, 0); 730 t = DB_NOTFOUND ; 732 dl . offt + logc -> n ; 733 i(( t = `__logc_vsi ( logc , 734 & vsi )) == 0) { 735 `memt (& wfedbt , 0, 736 ( wfedbt )); 737 wfedbt . da = & vsi ; 738 wfedbt . size = ( vsi ); 739 () `__p_nd_mesge ( dbv , eid , 740 REP_NEWFILE , & dl , 741 & wfedbt , 0, 0); 745 t = DB_NOTFOUND ; 747 ( t ); 748 } } @../rep/rep_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/b.h " 14 ~"dbc/log.h " 15 ~"dbc/mp.h " 16 ~"dbc/txn.h " 18 __p_abt_ed __P (( DB_ENV *)); 19 __p_bt_cmp __P (( DB *, cڡ DBT *, const DBT *)); 20 __p_cfig_m __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 21 u_t32_t __p_cv_vs __P (( DB_ENV *, u_int32_t)); 22 __p_e_ed __P (( DB_ENV *)); 31 $__p_v_ ( dbv ) 32 DB_ENV * dbv ; 34 DB_REP * db_p ; 35 t ; 37 i(( t = `__os_oc ( dbv , 1, ( DB_REP ), & db_p )) != 0) 38 ( t ); 40 db_p -> eid = DB_EID_INVALID ; 41 db_p -> bys = REP_DEFAULT_THROTTLE ; 42 db_p -> que_g = DB_REP_REQUEST_GAP ; 43 db_p -> max_g = DB_REP_MAX_GAP ; 44 db_p -> e_timeout = 2 * US_PER_SEC ; 45 db_p -> chk_day = 30; 46 db_p -> my_iܙy = DB_REP_DEFAULT_PRIORITY ; 48 #ifde HAVE_REPLICATION_THREADS 49 i(( t = `__pmgr_v_ ( dbv , db_p )) != 0) { 50 `__os_ ( dbv , db_p ); 51 ( t ); 55 dbv -> p_hd = db_p ; 57 } } 66 $__p_v_deroy ( dbv ) 67 DB_ENV * dbv ; 69 i( dbv -> p_hd ! NULL ) { 70 #ifde HAVE_REPLICATION_THREADS 71 `__pmgr_v_deroy ( dbv , dbv-> p_hd ); 73 `__os_ ( dbv , dbv-> p_hd ); 74 dbv -> p_hd = NULL ; 76 } } 85 $__p_g_cfig ( dbv , which , p ) 86 DB_ENV * dbv ; 87 u_t32_t which ; 88 * p ; 90 DB_REP * db_p ; 91 REP * p ; 92 u_t32_t md ; 94 #unde OK_FLAGS 95 #OK_FLAGS \ 96 ( DB_REP_CONF_BULK | DB_REP_CONF_DELAYCLIENT | \ 97 DB_REP_CONF_NOAUTOINIT | DB_REP_CONF_NOWAIT ) ) 99 i( `FLD_ISSET ( which , ~ OK_FLAGS )) 100 ( `__db_ ( dbv , "DB_ENV->rep_get_config", 0)); 102 db_p = dbv -> p_hd ; 103 `ENV_NOT_CONFIGURED ( 104 dbv , db_p -> gi , "DB_ENV->p_g_cfig", DB_INIT_REP ); 106 md = 0; 107 `__p_cfig_m ( dbv , & which , & md ); 108 i( `REP_ON ( dbv )) { 109 p = db_p -> gi ; 110 i( `FLD_ISSET ( p -> cfig , md )) 111 * p = 1; 113 * p = 0; 115 i( `FLD_ISSET ( db_p -> cfig , md )) 116 * p = 1; 118 * p = 0; 121 } } 130 $__p_t_cfig ( dbv , which , ) 131 DB_ENV * dbv ; 132 u_t32_t which ; 133 ; 135 DB_LOG * db ; 136 DB_REP * db_p ; 137 DB_THREAD_INFO * ; 138 LOG * ; 139 REP * p ; 140 REP_BULK bulk ; 141 t ; 142 u_t32_t md , ig ; 144 t = 0; 146 #unde OK_FLAGS 147 #OK_FLAGS \ 148 ( DB_REP_CONF_BULK | DB_REP_CONF_DELAYCLIENT | \ 149 DB_REP_CONF_NOAUTOINIT | DB_REP_CONF_NOWAIT ) ) 151 i( `FLD_ISSET ( which , ~ OK_FLAGS )) 152 ( `__db_ ( dbv , "DB_ENV->rep_set_config", 0)); 154 db_p = dbv -> p_hd ; 155 `ENV_NOT_CONFIGURED ( 156 dbv , db_p -> gi , "DB_ENV->p_t_cfig", DB_INIT_REP ); 158 md = 0; 159 `ENV_ENTER ( dbv , ); 160 `__p_cfig_m ( dbv , & which , & md ); 161 i( `REP_ON ( dbv )) { 162 p = db_p -> gi ; 163 `MUTEX_LOCK ( dbv , p -> mtx_db ); 164 `REP_SYSTEM_LOCK ( dbv ); 165 ig = p -> cfig ; 166 i( ) 167 `FLD_SET ( p -> cfig , md ); 169 `FLD_CLR ( p -> cfig , md ); 175 db = dbv -> lg_hd ; 176 = db -> gfo . imy ; 177 i( `FLD_ISSET ( p -> cfig , REP_C_BULK ) && 178 ! `FLD_ISSET ( ig , REP_C_BULK )) 179 db_p -> bulk = `R_ADDR (& db -> gfo , -> bulk_buf ); 180 `REP_SYSTEM_UNLOCK ( dbv ); 186 i( `FLD_ISSET ( ig , REP_C_BULK ) && 187 ! `FLD_ISSET ( p -> cfig , REP_C_BULK && -> bulk_off != 0) { 188 `memt (& bulk , 0, (bulk)); 189 i( db_p -> bulk = NULL ) 190 bulk . addr = 191 `R_ADDR (& db -> gfo , -> bulk_buf ); 193 bulk . addr = db_p ->bulk; 194 bulk . of = & -> bulk_off ; 195 bulk . n = -> bulk_n ; 196 bulk . ty = REP_BULK_LOG ; 197 bulk . eid = DB_EID_BROADCAST ; 198 bulk . ag = & -> bulk_ags ; 199 t = `__p_nd_bulk ( dbv , & bulk , 0); 201 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 203 i( ) 204 `FLD_SET ( db_p -> cfig , md ); 206 `FLD_CLR ( db_p -> cfig , md ); 208 `ENV_LEAVE ( dbv , ); 209 ( t ); 210 } } 213 $__p_cfig_m ( dbv , ag , outag ) 214 DB_ENV * dbv ; 215 u_t32_t * ag , * outag ; 217 `COMPQUIET ( dbv , NULL ); 219 i( `FLD_ISSET (* ag , DB_REP_CONF_BULK )) { 220 `FLD_SET (* outag , REP_C_BULK ); 221 `FLD_CLR (* ag , DB_REP_CONF_BULK ); 223 i( `FLD_ISSET (* ag , DB_REP_CONF_DELAYCLIENT )) { 224 `FLD_SET (* outag , REP_C_DELAYCLIENT ); 225 `FLD_CLR (* ag , DB_REP_CONF_DELAYCLIENT ); 227 i( `FLD_ISSET (* ag , DB_REP_CONF_NOAUTOINIT )) { 228 `FLD_SET (* outag , REP_C_NOAUTOINIT ); 229 `FLD_CLR (* ag , DB_REP_CONF_NOAUTOINIT ); 231 i( `FLD_ISSET (* ag , DB_REP_CONF_NOWAIT )) { 232 `FLD_SET (* outag , REP_C_NOWAIT ); 233 `FLD_CLR (* ag , DB_REP_CONF_NOWAIT ); 235 } } 265 $__p_t ( dbv , dbt , ags ) 266 DB_ENV * dbv ; 267 DBT * dbt ; 268 u_t32_t ags ; 270 DB * dbp ; 271 DB_LOG * db ; 272 DB_LSN l ; 273 DB_REP * db_p ; 274 DB_THREAD_INFO * ; 275 DB_TXNREGION * gi ; 276 LOG * ; 277 REGINFO * f ; 278 REP * p ; 279 db_timeout_t tmp ; 280 u_t32_t dvs , ndg_evt , pags , re ; 281 noun , locked , t , re_chg ; 282 t_t ; 284 `PANIC_CHECK ( dbv ); 285 `ENV_REQUIRES_CONFIG_XX ( 286 dbv , p_hd , "DB_ENV->p_t", DB_INIT_REP ); 288 db_p = dbv -> p_hd ; 289 p = db_p -> gi ; 290 f = dbv -> gfo ; 291 locked = 0; 292 ndg_evt = DB_EVENT_NO_SUCH_EVENT ; 294 re = ags & DB_REPFLAGS_MASK ; 296 re ) { 297 DB_REP_CLIENT : 298 DB_REP_MASTER : 301 `__db_rx ( dbv , 303 ( EINVAL ); 307 i( db_p -> nd = NULL ) { 308 `__db_rx ( dbv , 310 ( EINVAL ); 313 `ENV_ENTER ( dbv , ); 319 i(( t = `__log_ush ( dbv , NULL )) != 0) 320 out ; 322 `REP_SYSTEM_LOCK ( dbv ); 329 i( `F_ISSET ( p , REP_F_READY_MSG )) { 333 `RPRINT ( dbv , (dbenv, "Threadlready inockout")); 334 `REP_SYSTEM_UNLOCK ( dbv ); 335 out ; 336 } i(( t = `__p_lockout_msg ( dbv , p , 0)) != 0) 337 ruock ; 339 re_chg = (! `F_ISSET ( p , REP_F_MASTER && re = DB_REP_MASTER ) || 340 (! `F_ISSET ( p , REP_F_CLIENT && re = DB_REP_CLIENT ); 347 i( re_chg ) { 348 i(( t = `__p_lockout_i ( dbv , p )) != 0) 349 ruock ; 350 locked = 1; 353 db = dbv -> lg_hd ; 354 = db -> gfo . imy ; 355 i( re = DB_REP_MASTER ) { 356 i( re_chg ) { 374 i(( t = `__p_eo ( dbv )) != 0) 375 ruock ; 377 p -> g ++; 382 i( p -> eg >-> g ) 383 p -> g =-> eg ; 384 i( `IS_USING_LEASES ( dbv ) && 385 ! `F_ISSET ( p , REP_F_MASTERELECT )) { 386 `__db_rx ( dbv , 388 t = EINVAL ; 389 ruock ; 391 i( `F_ISSET ( p , REP_F_MASTERELECT )) { 392 `__p_e_de ( dbv , p ); 393 `F_CLR ( p , REP_F_MASTERELECT ); 395 i( p -> eg <p-> g ) 396 p -> eg =-> g + 1; 397 `RPRINT ( dbv , (dbenv, 399 ( u_lg ) p -> g , (u_lg-> eg )); 400 i(( t = `__p_wre_g ( dbv , p -> g )) != 0) 401 ruock ; 406 i( `IS_USING_LEASES ( dbv ) && 407 ( re_chg || ! `F_ISSET ( p , REP_F_START_CALLED ))) { 412 i(( t = `__p_i_ged ( dbv ))) { 413 `__db_rx ( dbv , 415 t = EINVAL ; 416 ruock ; 418 tmp = ( db_timeout_t )(() p -> a_timeout / 419 (() p -> ock_skew / () 100)); 420 `DB_TIMEOUT_TO_TIMESPEC ( tmp , & p -> a_duti ); 425 `INIT_LSN ( -> max_rm_l ); 426 i(( t = `__p_a_b_loc ( dbv , 427 p -> nses )) != 0) 428 ruock ; 430 p -> ma_id =-> eid ; 438 pags = `F_ISSET ( p , REP_F_READY_API | REP_F_READY_MSG | 439 REP_F_READY_OP ); 440 #ifdef DIAGNOSTIC 441 i(! `F_ISSET ( p , REP_F_GROUP_ESTD )) 442 `RPRINT ( dbv , (dbenv, 445 `FLD_SET ( pags , REP_F_MASTER | REP_F_GROUP_ESTD ); 446 p -> ags = pags ; 451 dvs = -> rsi . vsi ; 458 `RPRINT ( dbv , (dbenv, 459 "p_t: Oldog vsi wa%lu", ( u_lg ) dvs )); 460 i( -> rsi . vsi ! DB_LOGVERSION ) { 461 i(( t = `__v__c ( dbv , DB_LOGVERSION )) != 0) 462 ruock ; 464 p -> vsi = DB_REPVERSION ; 465 `F_CLR ( p , REP_F_READY_MSG ); 466 `REP_SYSTEM_UNLOCK ( dbv ); 467 `LOG_SYSTEM_LOCK ( dbv ); 468 l = ->lsn; 469 `LOG_SYSTEM_UNLOCK ( dbv ); 477 () `__p_nd_mesge ( dbv , 478 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 479 t = 0; 480 i( re_chg ) { 481 ndg_evt = DB_EVENT_REP_MASTER ; 487 gi = dbv -> tx_hd -> gfo . imy ; 488 i( gi -> . _ees == 0 && 489 ( t_t = `__p_e_ed ( dbv )) != 0 && 490 t == 0) 491 t = t_t ; 492 i( gi -> . _ees != 0) { 493 i(( t_t = `__dbg_mk_ed ( dbv )) != 0 && 494 t == 0) 495 t = t_t ; 497 t = `__dbg_vide_fes ( dbv , 0); 498 i(( t_t = `__p_ofes ( 499 dbv , 0)!0 && t == 0) 500 t = t_t ; 502 i(( t_t = `__txn_cye_id ( dbv )!0 && t == 0) 503 t = t_t ; 504 `DB_ENV_TEST_RECYCLE ( dbv , t ); 505 `REP_SYSTEM_LOCK ( dbv ); 506 `F_CLR ( p , REP_F_READY_API | REP_F_READY_OP ); 507 locked = 0; 508 `REP_SYSTEM_UNLOCK ( dbv ); 509 () `__memp_t_cfig ( 510 dbv , DB_MEMP_SYNC_INTERRUPT , 0); 513 noun = re_chg || p -> ma_id = DB_EID_INVALID ; 515 i( re_chg ) 516 p -> ma_id = DB_EID_INVALID ; 518 pags = `F_ISSET ( p , REP_F_NOARCHIVE | REP_F_READY_MSG | 519 REP_F_RECOVER_MASK | REP_F_TALLY ); 520 `FLD_SET ( pags , REP_F_CLIENT ); 521 i( re_chg ) { 522 i(( t = `__log_g_dvsi ( dbv , & dvs )) != 0) 523 ruock ; 524 `RPRINT ( dbv , (dbenv, 525 "p_t: Found old vsiچog %d", dvs )); 526 i( dvs > DB_LOGVERSION_42 ) { 527 `__log_t_vsi ( dbv , dvs ); 528 dvs = `__p_cv_vs ( dbv , oldvers); 529 `DB_ASSERT ( 530 dbv , dvs ! DB_REPVERSION_INVALID ); 531 p -> vsi = dvs ; 534 p -> ags = pags ; 541 i( `IS_USING_LEASES ( dbv ) && 542 ( re_chg || ! `F_ISSET ( p , REP_F_START_CALLED ))) { 543 i(( t = `__p_a_expe ( dbv , 1)) != 0) 544 ruock ; 545 tmp = ( db_timeout_t )(() p -> a_timeout * 546 (() p -> ock_skew / () 100)); 547 `DB_TIMEOUT_TO_TIMESPEC ( tmp , & p -> a_duti ); 548 i( p -> a_off ! INVALID_ROFF ) { 549 `__v_loc_ ( f , 550 `R_ADDR ( f , p -> a_off )); 551 p -> a_off = INVALID_ROFF ; 554 `REP_SYSTEM_UNLOCK ( dbv ); 564 i(( t = `__p_abt_ed ( dbv )) != 0) 565 ock ; 570 i( re_chg ) { 571 i(( t = `db_ (& dbp , dbv , 0)) != 0) 572 ock ; 577 `MUTEX_LOCK ( dbv , p -> mtx_db ); 578 () `__db_move ( dbp , NULL , REPDBNAME , 579 NULL , DB_FORCE ); 580 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 584 ndg_evt = DB_EVENT_REP_CLIENT ; 586 `REP_SYSTEM_LOCK ( dbv ); 587 `F_CLR ( p , REP_F_READY_MSG ); 588 i( locked ) { 589 `F_CLR ( p , REP_F_READY_API | REP_F_READY_OP ); 590 locked = 0; 592 `REP_SYSTEM_UNLOCK ( dbv ); 602 i( noun ) { 613 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) 614 p -> g = 0; 615 i(( t = `__dbt_urcy ( dbv , dbt )) != 0) 616 out ; 617 () `__p_nd_mesge ( dbv , 618 DB_EID_BROADCAST , REP_NEWCLIENT , NULL , dbt , 0, 0); 620 () `__p_nd_mesge ( dbv , 621 DB_EID_BROADCAST , REP_ALIVE_REQ , NULL , NULL, 0, 0); 632 DB_TEST_RECOVERY_LABEL 633 ock : `REP_SYSTEM_LOCK ( dbv ); 634 ruock : `F_CLR ( p , REP_F_READY_MSG ); 635 i( locked ) 636 `F_CLR ( p , REP_F_READY_API | REP_F_READY_OP ); 637 `REP_SYSTEM_UNLOCK ( dbv ); 639 out : 640 i( t == 0) { 641 `REP_SYSTEM_LOCK ( dbv ); 642 `F_SET ( p , REP_F_START_CALLED ); 643 `REP_SYSTEM_UNLOCK ( dbv ); 645 i( ndg_evt ! DB_EVENT_NO_SUCH_EVENT ) 646 `__p_fe_evt ( dbv , ndg_evt , NULL ); 647 `__dbt_ur ( dbv , dbt , NULL , NULL); 648 `ENV_LEAVE ( dbv , ); 649 ( t ); 650 } } 666 $__p__db ( dbv , tup , which ) 667 DB_ENV * dbv ; 668 tup ; 669 pdb_t which ; 671 DB_REP * db_p ; 672 DB * dbp , ** rdb ; 673 REP * p ; 674 t , t_t ; 675 u_t32_t ags ; 676 cڡ * me ; 678 `PANIC_CHECK ( dbv ); 679 db_p = dbv -> p_hd ; 680 p = db_p -> gi ; 681 dbp = NULL ; 683 i( which = REP_DB ) { 684 me = REPDBNAME ; 685 rdb = & db_p -> p_db ; 687 me = REPPAGENAME ; 688 rdb = & p -> fe_dbp ; 691 i(* rdb ! NULL ) 694 i( tup ) { 695 i(( t = `db_ (& dbp , dbv , 0)) != 0) 696 r ; 701 () `__db_move ( dbp , NULL , me , NULL, DB_FORCE ); 704 i(( t = `db_ (& dbp , dbv , 0)) != 0) 705 r ; 706 i( which = REP_DB && 707 ( t = `__bam_t_bt_com ( dbp , __p_bt_cmp )) != 0) 708 r ; 711 i(( t = `__db_t_ags ( dbp , DB_TXN_NOT_DURABLE )) != 0) 712 r ; 714 ags = DB_NO_AUTO_COMMIT | DB_CREATE | 715 ( `F_ISSET ( dbv , DB_ENV_THREAD ? DB_THREAD : 0); 717 i(( t = `__db_ݒ ( dbp , NULL , me , NULL, 718 ( which = REP_DB ? DB_BTREE : DB_RECNO ), 719 ags , 0, PGNO_BASE_MD )) != 0) 720 r ; 722 * rdb = dbp ; 725 r : i( dbp ! NULL && 726 ( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 727 t = t_t ; 728 * rdb = NULL ; 731 ( t ); 732 } } 743 $__p_bt_cmp ( dbp , dbt1 , dbt2 ) 744 DB * dbp ; 745 cڡ DBT * dbt1 , * dbt2 ; 747 DB_LSN l1 , l2 ; 748 REP_CONTROL * 1 , * 2 ; 750 `COMPQUIET ( dbp , NULL ); 752 1 = dbt1 -> da ; 753 2 = dbt2 -> da ; 755 () `__ua_memy (& l1 , & 1 -> l , ( DB_LSN )); 756 () `__ua_memy (& l2 , & 2 -> l , ( DB_LSN )); 758 i( l1 . fe > l2 .file) 761 i( l1 . fe < l2 .file) 764 i( l1 . offt > l2 .offset) 767 i( l1 . offt < l2 .offset) 771 } } 782 $__p_abt_ed ( dbv ) 783 DB_ENV * dbv ; 785 #PREPLISTSIZE 50 ) 786 DB_LOG * db ; 787 DB_PREPLIST [ PREPLISTSIZE ], * p ; 788 DB_TXNMGR * mgr ; 789 DB_TXNREGION * gi ; 790 LOG * ; 791 t ; 792 cou , i ; 793 u_t32_t ; 795 mgr = dbv -> tx_hd ; 796 gi = mgr -> gfo . imy ; 797 db = dbv -> lg_hd ; 798 = db -> gfo . imy ; 800 i( gi -> . _ees == 0) 803 = DB_FIRST ; 805 i(( t = `__txn_cov ( dbv , 806 , PREPLISTSIZE , & cou , )) != 0) 807 ( t ); 808 i = 0; i < cou ; i++) { 809 p = & [ i ]; 810 i(( t = `__txn_abt ( p -> txn )) != 0) 811 ( t ); 812 dbv -> p_hd -> gi -> _t --; 813 dbv -> p_hd -> gi -> max__l = -> l ; 814 gi -> . _ees --; 816 = DB_NEXT ; 817 } cou = PREPLISTSIZE ); 820 } } 833 $__p_e_ed ( dbv ) 834 DB_ENV * dbv ; 836 DB_LOGC * logc ; 837 DB_LSN ckp_l , l ; 838 DB_REP * db_p ; 839 DB_TXNHEAD * txnfo ; 840 DBT c ; 841 REP * p ; 842 __txn_ckp_gs * ckp_gs ; 843 __txn_ckp_42_gs * ckp42_gs ; 844 __txn_g_gs * g_gs ; 845 __txn_g_42_gs * g42_gs ; 846 __txn_xa_g_gs * _gs ; 847 t , t_t ; 848 u_t32_t hi_txn , low_txn , y , us , txnid , txn ; 850 db_p = dbv -> p_hd ; 851 p = db_p -> gi ; 852 i( `IS_ZERO_LSN ( p -> max__l )) { 853 `RPRINT ( dbv , (dbenv, "restore_prep: Norepares. Skip.")); 856 txnfo = NULL ; 857 ckp_gs = NULL ; 858 ckp42_gs = NULL ; 859 _gs = NULL ; 860 g_gs = NULL ; 861 g42_gs = NULL ; 862 `ZERO_LSN ( ckp_l ); 863 `ZERO_LSN ( l ); 865 i(( t = `__log_curs ( dbv , & logc )) != 0) 866 ( t ); 873 `memt (& c , 0, ( DBT )); 874 i(( t = `__logc_g ( logc , & l , & c , DB_FIRST )) != 0) { 875 `__db_rx ( dbv , "Firstecordot found"); 876 r ; 882 i( p -> max__l . fe < l .file) { 883 `RPRINT ( dbv , (dbenv, "restore_prep: Prepareesolved. Skip")); 884 `ZERO_LSN ( p -> max__l ); 885 de ; 898 i(( t = `__txn_gckp ( dbv , & l )) == 0) { 899 i(( t = `__logc_g ( logc , & l , & c , DB_SET )) != 0) { 900 `__db_rx ( dbv , 902 ( u_lg ) l . fe , (u_lg. offt ); 903 r ; 906 i( p -> vsi > DB_REPVERSION_43 ) { 907 i(( t = `__txn_ckp_ad ( dbv , c . da , 908 & ckp_gs )) == 0) { 909 ckp_l = ckp_gs ->ckp_lsn; 910 `__os_ ( dbv , ckp_gs ); 913 i(( t = `__txn_ckp_42_ad ( dbv , c . da , 914 & ckp42_gs )) == 0) { 915 ckp_l = ckp42_gs ->ckp_lsn; 916 `__os_ ( dbv , ckp42_gs ); 919 i( t != 0) { 920 `__db_rx ( dbv , 922 ( u_lg ) l . fe , (u_lg. offt ); 923 r ; 926 i(( t = `__logc_g ( logc , & ckp_l , & c , DB_SET )) != 0) { 927 `__db_rx ( dbv , 929 ( u_lg ) ckp_l . fe , (u_lg)ckp_l. offt ); 930 r ; 932 } i(( t = `__logc_g ( logc , & l , & c , DB_FIRST )) != 0) { 933 i( t = DB_NOTFOUND ) { 935 t = 0; 936 de ; 938 `__db_rx ( dbv , "Attempto get firstogecord failed"); 939 r ; 951 `memy (& low_txn , 952 ( u_t8_t *) c . da + ( u_t32_t ), ( low_txn )); 953 i( low_txn != 0) 955 } ( t = `__logc_g ( logc , & l , & c , DB_NEXT )) == 0); 958 i( t = DB_NOTFOUND ) { 959 t = 0; 960 de ; 961 } i( t != 0) 962 r ; 965 i(( t = `__logc_g ( logc , & l , & c , DB_LAST )) != 0) { 970 `__db_rx ( dbv , "Finalogecordot found"); 971 r ; 975 `memy (& hi_txn , 976 ( u_t8_t *) c . da + ( u_t32_t ), ( hi_txn )); 977 i( hi_txn != 0) 979 } ( t = `__logc_g ( logc , & l , & c , DB_PREV )) == 0); 980 i( t = DB_NOTFOUND ) { 981 t = 0; 982 de ; 983 } i( t != 0) 984 r ; 987 i(( t = 988 `__db_txi_ ( dbv , low_txn , hi_txn , NULL , & txnfo )) != 0) 989 r ; 1001 `F_SET ( dbv -> lg_hd , DBLOG_RECOVER ); 1002 t = `__logc_g ( logc , & l , & c , DB_LAST ); 1003 t =0 && `LOG_COMPARE (& l , & ckp_l ) > 0; 1004 t = `__logc_g ( logc , & l , & c , DB_PREV )) { 1005 `memy (& y , c . da , (rectype)); 1006 y ) { 1007 DB___txn_g : 1013 i( p -> vsi > DB_REPVERSION_44 ) { 1014 i(( t = `__txn_g_ad ( dbv , c . da , 1015 & g_gs )) != 0) 1016 r ; 1017 txnid = g_gs -> tx ->txnid; 1018 txn = g_gs -> code ; 1019 `__os_ ( dbv , g_gs ); 1021 i(( t = `__txn_g_42_ad ( dbv , c . da , 1022 & g42_gs )) != 0) 1023 r ; 1024 txnid = g42_gs -> tx ->txnid; 1025 txn = g42_gs -> code ; 1026 `__os_ ( dbv , g42_gs ); 1029 t = `__db_txi_fd ( dbv , 1030 txnfo , txnid , & us ); 1031 i( t = DB_NOTFOUND ) 1032 t = `__db_txi_add ( dbv , txnfo , 1033 txnid , txn , & l ); 1034 i( t != 0) 1035 r ; 1037 DB___txn_xa_g : 1043 i(( t = `__txn_xa_g_ad ( dbv , c . da , 1044 & _gs )) != 0) 1045 r ; 1046 t = `__db_txi_fd ( dbv , txnfo , 1047 _gs -> tx -> txnid , & us ); 1048 i( t = DB_NOTFOUND ) { 1049 i( _gs -> code = TXN_ABORT ) 1050 t = `__db_txi_add ( dbv , txnfo , 1051 _gs -> tx -> txnid , 1052 _gs -> code , & l ); 1053 i(( t = 1054 `__p_oss_txn ( dbv , & c )) == 0) { 1063 p -> _t ++; 1064 t = `__txn_e_txn ( dbv , 1065 & l , _gs ); 1067 } i( t != 0) 1068 r ; 1069 `__os_ ( dbv , _gs ); 1077 i( t = DB_NOTFOUND ) 1078 t = 0; 1080 de : 1081 r : t_t = `__logc_o ( logc ); 1082 `F_CLR ( dbv -> lg_hd , DBLOG_RECOVER ); 1084 i( txnfo ! NULL ) 1085 `__db_txi_d ( dbv , txnfo ); 1087 ( t =0 ? t_t :et); 1088 } } 1098 $__p_g_lim ( dbv , gby , by ) 1099 DB_ENV * dbv ; 1100 u_t32_t * gby , * by ; 1102 DB_REP * db_p ; 1103 REP * p ; 1105 db_p = dbv -> p_hd ; 1106 `ENV_NOT_CONFIGURED ( 1107 dbv , db_p -> gi , "DB_ENV->p_g_lim", DB_INIT_REP ); 1109 i( `REP_ON ( dbv )) { 1110 p = db_p -> gi ; 1111 `REP_SYSTEM_LOCK ( dbv ); 1112 i( gby ! NULL ) 1113 * gby = p -> gbys ; 1114 i( by ! NULL ) 1115 * by = p -> bys ; 1116 `REP_SYSTEM_UNLOCK ( dbv ); 1118 i( gby ! NULL ) 1119 * gby = db_p -> gbys ; 1120 i( by ! NULL ) 1121 * by = db_p -> bys ; 1125 } } 1135 $__p_t_lim ( dbv , gbys , bys ) 1136 DB_ENV * dbv ; 1137 u_t32_t gbys , bys ; 1139 DB_REP * db_p ; 1140 DB_THREAD_INFO * ; 1141 REP * p ; 1143 db_p = dbv -> p_hd ; 1144 `ENV_NOT_CONFIGURED ( 1145 dbv , db_p -> gi , "DB_ENV->p_t_lim", DB_INIT_REP ); 1147 i( bys > GIGABYTE ) { 1148 gbys + bys / GIGABYTE ; 1149 bys = by% GIGABYTE ; 1152 i( `REP_ON ( dbv )) { 1153 p = db_p -> gi ; 1154 `ENV_ENTER ( dbv , ); 1155 `REP_SYSTEM_LOCK ( dbv ); 1156 p -> gbys = gbytes; 1157 p -> bys = bytes; 1158 `REP_SYSTEM_UNLOCK ( dbv ); 1159 `ENV_LEAVE ( dbv , ); 1161 db_p -> gbys = gbytes; 1162 db_p -> bys = bytes; 1166 } } 1172 $__p_t_nses ( dbv , n ) 1173 DB_ENV * dbv ; 1174 n ; 1176 DB_REP * db_p ; 1177 REP * p ; 1179 i( n <= 0) { 1180 `__db_rx ( dbv , 1182 ( EINVAL ); 1185 db_p = dbv -> p_hd ; 1187 `ENV_NOT_CONFIGURED ( 1188 dbv , db_p -> gi , "DB_ENV->p_t_nses", DB_INIT_REP ); 1190 i( `REP_ON ( dbv )) { 1191 p = db_p -> gi ; 1192 i( p ! NULL && `F_ISSET ԕ, REP_F_START_CALLED )) { 1193 `__db_rx ( dbv , 1195 ( EINVAL ); 1197 p -> cfig_nses = n ; 1199 db_p -> cfig_nses = n ; 1201 } } 1207 $__p_g_nses ( dbv , n ) 1208 DB_ENV * dbv ; 1209 * n ; 1211 DB_REP * db_p ; 1212 REP * p ; 1214 db_p = dbv -> p_hd ; 1218 i( `REP_ON ( dbv )) { 1219 p = db_p -> gi ; 1220 * n = p -> cfig_nses ; 1222 * n = db_p -> cfig_nses ; 1225 } } 1231 $__p_t_iܙy ( dbv , iܙy ) 1232 DB_ENV * dbv ; 1233 iܙy ; 1235 DB_REP * db_p ; 1236 REP * p ; 1238 i( iܙy < 0) { 1239 `__db_rx ( dbv , "priority mayot beegative"); 1240 ( EINVAL ); 1242 db_p = dbv -> p_hd ; 1243 i( `REP_ON ( dbv )) { 1244 p = db_p -> gi ; 1245 p -> iܙy =riority; 1247 db_p -> my_iܙy = iܙy ; 1249 } } 1255 $__p_g_iܙy ( dbv , iܙy ) 1256 DB_ENV * dbv ; 1257 * iܙy ; 1259 DB_REP * db_p ; 1260 REP * p ; 1262 db_p = dbv -> p_hd ; 1263 i( `REP_ON ( dbv )) { 1264 p = db_p -> gi ; 1265 * iܙy = p ->priority; 1267 * iܙy = db_p -> my_iܙy ; 1269 } } 1275 $__p_t_timeout ( dbv , which , timeout ) 1276 DB_ENV * dbv ; 1277 which ; 1278 db_timeout_t timeout ; 1280 DB_REP * db_p ; 1281 REP * p ; 1282 t ; 1284 db_p = dbv -> p_hd ; 1285 p = db_p -> gi ; 1286 t = 0; 1288 which ) { 1289 DB_REP_CHECKPOINT_DELAY : 1290 i( `REP_ON ( dbv )) 1291 p -> chk_day = timeout ; 1293 db_p -> chk_day = timeout ; 1295 DB_REP_ELECTION_TIMEOUT : 1296 i( `REP_ON ( dbv )) 1297 p -> e_timeout = timeout ; 1299 db_p -> e_timeout = timeout ; 1301 DB_REP_FULL_ELECTION_TIMEOUT : 1302 i( `REP_ON ( dbv )) 1303 p -> fu_e_timeout = timeout ; 1305 db_p -> fu_e_timeout = timeout ; 1307 DB_REP_LEASE_TIMEOUT : 1308 i( `REP_ON ( dbv )) 1309 p -> a_timeout = timeout ; 1311 db_p -> a_timeout = timeout ; 1313 #ifde HAVE_REPLICATION_THREADS 1314 DB_REP_ACK_TIMEOUT : 1315 db_p -> ack_timeout = timeout ; 1317 DB_REP_ELECTION_RETRY : 1318 db_p -> ei_y_wa = timeout ; 1320 DB_REP_CONNECTION_RETRY : 1321 db_p -> ci_y_wa = timeout ; 1325 `__db_rx ( dbv , 1327 t = EINVAL ; 1330 ( t ); 1331 } } 1337 $__p_g_timeout ( dbv , which , timeout ) 1338 DB_ENV * dbv ; 1339 which ; 1340 db_timeout_t * timeout ; 1342 DB_REP * db_p ; 1343 REP * p ; 1345 db_p = dbv -> p_hd ; 1346 p = db_p -> gi ; 1348 which ) { 1349 DB_REP_CHECKPOINT_DELAY : 1350 * timeout = `REP_ON ( dbv ) ? 1351 p -> chk_day : db_p ->chkpt_delay; 1353 DB_REP_ELECTION_TIMEOUT : 1354 * timeout = `REP_ON ( dbv ) ? 1355 p -> e_timeout : db_p ->elect_timeout; 1357 DB_REP_FULL_ELECTION_TIMEOUT : 1358 * timeout = `REP_ON ( dbv ) ? 1359 p -> fu_e_timeout : db_p ->full_elect_timeout; 1361 DB_REP_LEASE_TIMEOUT : 1362 * timeout = `REP_ON ( dbv ) ? 1363 p -> a_timeout : db_p ->lease_timeout; 1365 #ifde HAVE_REPLICATION_THREADS 1366 DB_REP_ACK_TIMEOUT : 1367 * timeout = db_p -> ack_timeout ; 1369 DB_REP_ELECTION_RETRY : 1370 * timeout = db_p -> ei_y_wa ; 1372 DB_REP_CONNECTION_RETRY : 1373 * timeout = db_p -> ci_y_wa ; 1377 `__db_rx ( dbv , 1379 ( EINVAL ); 1383 } } 1393 $__p_g_que ( dbv , mp , maxp ) 1394 DB_ENV * dbv ; 1395 u_t32_t * mp , * maxp ; 1397 DB_REP * db_p ; 1398 REP * p ; 1400 db_p = dbv -> p_hd ; 1401 `ENV_NOT_CONFIGURED ( 1402 dbv , db_p -> gi , "DB_ENV->p_g_que", DB_INIT_REP ); 1404 i( `REP_ON ( dbv )) { 1405 p = db_p -> gi ; 1409 `REP_SYSTEM_LOCK ( dbv ); 1410 i( mp ! NULL ) 1411 * mp = p -> que_g ; 1412 i( maxp ! NULL ) 1413 * maxp = p -> max_g ; 1414 `REP_SYSTEM_UNLOCK ( dbv ); 1416 i( mp ! NULL ) 1417 * mp = db_p -> que_g ; 1418 i( maxp ! NULL ) 1419 * maxp = db_p -> max_g ; 1423 } } 1433 $__p_t_que ( dbv , m , max ) 1434 DB_ENV * dbv ; 1435 u_t32_t m , max ; 1437 LOG * ; 1438 DB_LOG * db ; 1439 DB_REP * db_p ; 1440 REP * p ; 1442 db_p = dbv -> p_hd ; 1443 `ENV_NOT_CONFIGURED ( 1444 dbv , db_p -> gi , "DB_ENV->p_t_que", DB_INIT_REP ); 1446 i( `REP_ON ( dbv )) { 1447 p = db_p -> gi ; 1451 `REP_SYSTEM_LOCK ( dbv ); 1452 p -> que_g = m ; 1453 p -> max_g = max ; 1454 `REP_SYSTEM_UNLOCK ( dbv ); 1456 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1457 db = dbv -> lg_hd ; 1458 i( db ! NULL && ( = db-> gfo . imy ) != NULL) { 1459 -> wa_cs = 0; 1460 -> rcvd_cs = 0; 1462 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1464 db_p -> que_g = m ; 1465 db_p -> max_g = max ; 1469 } } 1480 $__p_t_t ( dbv , eid , f_nd ) 1481 DB_ENV * dbv ; 1482 eid ; 1483 (* f_nd `__P (( DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, 1484 , u_t32_t )); 1486 DB_REP * db_p ; 1487 DB_THREAD_INFO * ; 1488 REP * p ; 1490 i( f_nd = NULL ) { 1491 `__db_rx ( dbv , 1493 ( EINVAL ); 1496 i( eid < 0) { 1497 `__db_rx ( dbv , 1499 ( EINVAL ); 1502 db_p = dbv -> p_hd ; 1503 db_p -> nd = f_nd ; 1505 i( `REP_ON ( dbv )) { 1506 p = db_p -> gi ; 1507 `ENV_ENTER ( dbv , ); 1508 `REP_SYSTEM_LOCK ( dbv ); 1509 p -> eid =id; 1510 `REP_SYSTEM_UNLOCK ( dbv ); 1511 `ENV_LEAVE ( dbv , ); 1513 db_p -> eid =id; 1515 } } 1521 $__p_t_a ( dbv , ock_s_ , ags ) 1522 DB_ENV * dbv ; 1523 u_t32_t ock_s_ , ags ; 1525 DB_REP * db_p ; 1526 REP * p ; 1527 u_t32_t ock_s_nm ; 1528 t ; 1530 `PANIC_CHECK ( dbv ); 1531 `COMPQUIET ( ags , 0); 1532 db_p = dbv -> p_hd ; 1533 `ENV_NOT_CONFIGURED ( 1534 dbv , db_p -> gi , "DB_ENV->p_t_a", DB_INIT_REP ); 1536 t = 0; 1537 ock_s_nm = ock_s_ + 100; 1538 i( `REP_ON ( dbv )) { 1539 p = db_p -> gi ; 1540 i( `F_ISSET ( p , REP_F_START_CALLED )) { 1541 `__db_rx ( dbv , 1543 ( EINVAL ); 1546 `REP_SYSTEM_LOCK ( dbv ); 1547 `FLD_SET ( p -> cfig , REP_C_LEASE ); 1548 p -> ock_skew = ock_s_nm ; 1549 `REP_SYSTEM_UNLOCK ( dbv ); 1551 `FLD_SET ( db_p -> cfig , REP_C_LEASE ); 1552 db_p -> ock_skew = ock_s_nm ; 1554 ( t ); 1555 } } 1565 $__p_ush ( dbv ) 1566 DB_ENV * dbv ; 1568 DBT c ; 1569 DB_LOGC * logc ; 1570 DB_LSN l ; 1571 DB_THREAD_INFO * ; 1572 t , t_t ; 1574 `PANIC_CHECK ( dbv ); 1575 `ENV_REQUIRES_CONFIG_XX ( 1576 dbv , p_hd , "DB_ENV->p_ush", DB_INIT_REP ); 1577 `ENV_ENTER ( dbv , ); 1579 i(( t = `__log_curs ( dbv , & logc )) != 0) 1580 ( t ); 1582 `memt (& c , 0, (rec)); 1583 `memt (& l , 0, (lsn)); 1585 i(( t = `__logc_g ( logc , & l , & c , DB_LAST )) != 0) 1586 r ; 1588 () `__p_nd_mesge ( dbv , 1589 DB_EID_BROADCAST , REP_LOG , & l , & c , 0, 0); 1591 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 1592 t = t_t ; 1593 `ENV_LEAVE ( dbv , ); 1594 ( t ); 1595 } } 1605 $__p_sync ( dbv , ags ) 1606 DB_ENV * dbv ; 1607 u_t32_t ags ; 1609 DB_LOG * db ; 1610 DB_LSN l ; 1611 DB_REP * db_p ; 1612 DB_THREAD_INFO * ; 1613 LOG * ; 1614 REP * p ; 1615 ma , t ; 1616 u_t32_t pags , ty ; 1618 `COMPQUIET ( ags , 0); 1620 `PANIC_CHECK ( dbv ); 1621 `ENV_REQUIRES_CONFIG_XX ( 1622 dbv , p_hd , "DB_ENV->p_sync", DB_INIT_REP ); 1624 db = dbv -> lg_hd ; 1625 = db -> gfo . imy ; 1626 db_p = dbv -> p_hd ; 1627 p = db_p -> gi ; 1629 `ENV_ENTER ( dbv , ); 1630 t = 0; 1636 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1637 l = -> vify_l ; 1638 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1639 `REP_SYSTEM_LOCK ( dbv ); 1640 ma = p -> ma_id ; 1641 i( ma = DB_EID_INVALID ) { 1642 `REP_SYSTEM_UNLOCK ( dbv ); 1643 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 1644 REP_MASTER_REQ , NULL , NULL, 0, 0); 1645 out ; 1652 i(! `F_ISSET ( p , REP_F_DELAY )) { 1653 `REP_SYSTEM_UNLOCK ( dbv ); 1654 out ; 1657 `DB_ASSERT ( dbv , 1658 ! `IS_USING_LEASES ( dbv || `__p_i_ged (dbenv) == 0); 1665 `F_CLR ( p , REP_F_DELAY ); 1666 i( `IS_ZERO_LSN ( l && `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT )) { 1667 `F_CLR ( p , REP_F_NOARCHIVE | REP_F_RECOVER_MASK ); 1668 t = DB_REP_JOIN_FAILURE ; 1669 `REP_SYSTEM_UNLOCK ( dbv ); 1670 out ; 1672 `REP_SYSTEM_UNLOCK ( dbv ); 1679 i( `IS_ZERO_LSN ( l )) { 1680 `DB_ASSERT ( dbv , `F_ISSET ( p , REP_F_RECOVER_UPDATE )); 1681 ty = REP_UPDATE_REQ ; 1682 pags = 0; 1684 `DB_ASSERT ( dbv , `F_ISSET ( p , REP_F_RECOVER_VERIFY )); 1685 ty = REP_VERIFY_REQ ; 1686 pags = DB_REP_ANYWHERE ; 1688 () `__p_nd_mesge ( dbv , ma , ty , & l , NULL , 0, pags ); 1690 out : `ENV_LEAVE ( dbv , ); 1691 ( t ); 1692 } } 1699 u_t32_t 1700 $__p_cv_vs ( dbv , log_v ) 1701 DB_ENV * dbv ; 1702 u_t32_t log_v ; 1704 `COMPQUIET ( dbv , NULL ); 1710 i( log_v = DB_LOGVERSION_42 ) 1711 ( DB_REPVERSION_42 ); 1712 i( log_v = DB_LOGVERSION_43 ) 1713 ( DB_REPVERSION_43 ); 1714 i( log_v = DB_LOGVERSION_44 ) 1715 ( DB_REPVERSION_44 ); 1716 i( log_v = DB_LOGVERSION_45 ) 1717 ( DB_REPVERSION_45 ); 1718 i( log_v = DB_LOGVERSION_46 ) 1719 ( DB_REPVERSION_46 ); 1720 ( DB_REPVERSION_INVALID ); 1721 } } @../rep/rep_record.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/log.h " 16 ~"dbc/mp.h " 17 ~"dbc/txn.h " 19 __p_c_txn __P (( DB_ENV *, DB_LSN *, LSN_COLLECTION *)); 20 __p_do_ckp __P (( DB_ENV *, DBT *, REP_CONTROL *)); 21 __p_fe_wma __P (( DB_ENV *, u_t32_t , )); 22 __p_fe_tupde __P (( DB_ENV *, u_t32_t , )); 23 __p_gxt __P (( DB_ENV *)); 24 __p_l_cmp __P ((const *, const *)); 25 __p_wfe __P (( DB_ENV *, REP_CONTROL *, DBT *)); 26 __p_oss_c __P (( DB_ENV *, REP_CONTROL *, 27 DBT *, db_timeec *, DB_LSN *)); 28 __p_mf __P (( DB_ENV *, DBT *, DBT *)); 29 __p_sk_msg __P (( DB_ENV *, REP *, , u_t32_t )); 33 #MASTER_ONLY ( p , ) do { \ 34 i(! `F_ISSET ( p , REP_F_MASTER )) { \ 35 `RPRINT ( dbv , \ 36 ( dbv , "Masterecordeceived on client")); \ 37 `REP_PRINT_MESSAGE ( dbv , \ 38 eid , , "rep_process_message", 0); \ 39 t = EINVAL ; \ 40 ock ; \ 42 } 0) ) 44 #CLIENT_ONLY ( p , ) do { \ 45 i(! `F_ISSET ( p , REP_F_CLIENT )) { \ 46 `RPRINT ( dbv , \ 47 ( dbv , "Clientecordeceived on master")); \ 54 i( `IS_USING_LEASES ( dbv )) \ 55 `DB_ASSERT ( dbv , \ 56 `__p_a_check ( dbv , 0) == \ 57 DB_REP_LEASE_EXPIRED ); \ 59 `REP_PRINT_MESSAGE ( dbv , \ 60 eid , , "rep_process_message", 0); \ 61 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , \ 62 REP_DUPMASTER , NULL , NULL, 0, 0); \ 64 t = DB_REP_DUPMASTER ; \ 65 ock ; \ 67 } 0) ) 74 #CLIENT_REREQ do { \ 75 i( `F_ISSET ( p , REP_F_CLIENT )) { \ 76 `STAT ( p -> . __svc_q ++); \ 77 i( t = DB_NOTFOUND ) { \ 78 `STAT ( p -> . __svc_miss ++); \ 79 t = `__p_sk_msg ( dbv , p , eid , -> y );\ 82 } 0) ) 84 #MASTER_UPDATE ( dbv , nv ) do { \ 85 `REP_SYSTEM_LOCK ( dbv ); \ 86 `F_SET (( nv ), DB_REGENV_REPLOCKED ); \ 87 () `time (&( nv )-> _timeamp ); \ 88 `REP_SYSTEM_UNLOCK ( dbv ); \ 89 } 0) ) 91 #RECOVERING_SKIP do { \ 92 i( `IS_REP_CLIENT ( dbv && covg ) { \ 94 `STAT ( p -> . _msgs_cov ++); \ 95 t = `__p_sk_msg ( dbv , p , eid , -> y ); \ 96 ock ; \ 98 } 0) ) 107 #RECOVERING_LOG_SKIP do { \ 108 i( `F_ISSET ( p , REP_F_DELAY ) || \ 109 p -> ma_id = DB_EID_INVALID || \ 110 ( covg && \ 111 (! `F_ISSET ( p , REP_F_RECOVER_LOG ) || \ 112 `LOG_COMPARE (& -> l , & p -> ϡ_l ) > 0))) { \ 114 `STAT ( p -> . _msgs_cov ++); \ 115 t = `__p_sk_msg ( dbv , p , eid , -> y ); \ 116 ock ; \ 118 } 0) ) 120 #ANYSITE ( p ) ) 138 $__p_oss_mesge ( dbv , cڌ , c , eid , t_lp ) 139 DB_ENV * dbv ; 140 DBT * cڌ , * c ; 141 eid ; 142 DB_LSN * t_lp ; 144 DB_LOG * db ; 145 DB_LSN ϡ_l , l ; 146 DB_REP * db_p ; 147 DB_THREAD_INFO * ; 148 DBT da_dbt ; 149 LOG * ; 150 REGENV * nv ; 151 REGINFO * f ; 152 REP * p ; 153 REP_CONTROL * , tmp ; 154 REP_OLD_CONTROL * p ; 155 u_t32_t eg , g ; 156 cmp , do_sync , covg , t ; 157 time_t vime ; 159 `PANIC_CHECK ( dbv ); 160 `ENV_REQUIRES_CONFIG_XX ( 161 dbv , p_hd , "DB_ENV->p_oss_mesge", DB_INIT_REP ); 164 i( cڌ = NULL || cڌ-> size == 0) { 165 `__db_rx ( dbv , 167 ( EINVAL ); 170 i(! `IS_REP_MASTER ( dbv && ! `IS_REP_CLIENT (dbenv)) { 171 `__db_rx ( dbv , 173 ( EINVAL ); 176 i(( t = `__dbt_urcy ( dbv , cڌ )) != 0 || 177 ( t = `__dbt_urcy ( dbv , c )) != 0) { 178 `__dbt_ur ( dbv , cڌ , c , NULL ); 179 `__db_rx ( dbv , 181 t ; 184 t = 0; 185 do_sync = 0; 186 db_p = dbv -> p_hd ; 187 p = db_p -> gi ; 188 db = dbv -> lg_hd ; 189 = db -> gfo . imy ; 190 f = dbv -> gfo ; 191 nv = f -> imy ; 197 i((( REP_OLD_CONTROL *) cڌ -> da )-> p_vsi 198 < DB_REPVERSION_45 ) { 199 p = ( REP_OLD_CONTROL *) cڌ -> da ; 200 tmp . p_vsi = p ->rep_version; 201 tmp . log_vsi = p ->log_version; 202 tmp . l = p ->lsn; 203 tmp . y = p ->rectype; 204 tmp . g = p ->gen; 205 tmp . ags = p ->flags; 206 `timeecr (& tmp . msg_time ); 207 = ( REP_CONTROL *)& tmp ; 209 = ( REP_CONTROL *) cڌ -> da ; 210 i( t_lp ! NULL ) 211 `ZERO_LSN (* t_lp ); 213 `ENV_ENTER ( dbv , ); 215 `REP_PRINT_MESSAGE ( dbv , eid , , "rep_process_message", 0); 219 `REP_SYSTEM_LOCK ( dbv ); 220 i( `F_ISSET ( p , REP_F_READY_MSG )) { 225 `RPRINT ( dbv , (dbenv, 227 i( `F_ISSET ( , REPCTL_PERM )) 228 t = DB_REP_IGNORE ; 229 `REP_SYSTEM_UNLOCK ( dbv ); 236 i( `F_ISSET ( p , REP_F_CLIENT && `REP_MSG_REQ ( -> y )) { 237 `STAT ( p -> . __svc_q ++); 238 `STAT ( p -> . __svc_miss ++); 239 () `__p_nd_mesge ( dbv , 240 eid , REP_REREQUEST , NULL , NULL, 0, 0); 242 out ; 244 p -> msg_th ++; 245 g = p ->gen; 246 covg = `F_ISSET ( p , REP_F_RECOVER_MASK ); 247 vime = nv -> p_timeamp ; 249 `STAT ( p -> . _msgs_osd ++); 250 `REP_SYSTEM_UNLOCK ( dbv ); 256 i( -> p_vsi < DB_REPVERSION ) { 257 `RPRINT ( dbv , (dbenv, 259 ( u_lg ) -> y , (u_lgp-> p_vsi )); 260 -> y = `__p_msg_om_d p-> p_vsi ,p->rectype); 265 `DB_ASSERT ( dbv , -> y ! REP_INVALID ); 266 `RPRINT ( dbv , (dbenv, 268 ( u_lg ) -> y , (u_lgp-> p_vsi )); 269 } i( -> p_vsi > DB_REPVERSION ) { 270 `__db_rx ( dbv , 272 ( u_lg ) -> p_vsi , DB_REPVERSION ); 273 t = EINVAL ; 274 ock ; 277 i( -> log_vsi < DB_LOGVERSION ) { 278 `RPRINT ( dbv , (dbenv, 280 ( u_lg ) -> y , (u_lgp-> log_vsi )); 281 } i( -> log_vsi > DB_LOGVERSION ) { 282 `__db_rx ( dbv , 284 ( u_lg ) -> log_vsi , DB_LOGVERSION ); 285 t = EINVAL ; 286 ock ; 294 i( -> g < g &&p-> y ! REP_ALIVE_REQ && 295 -> y ! REP_NEWCLIENT &&p->y ! REP_MASTER_REQ && 296 -> y ! REP_DUPMASTER ) { 300 `STAT ( p -> . _msgs_badg ++); 301 i( `F_ISSET ( , REPCTL_PERM )) 302 t = DB_REP_IGNORE ; 303 ock ; 306 i( -> g > gen) { 311 i( `F_ISSET ( p , REP_F_MASTER )) { 312 `STAT ( p -> . _dupmas ++); 313 t = DB_REP_DUPMASTER ; 320 i( `IS_USING_LEASES ( dbv )) 321 `DB_ASSERT ( dbv , 322 `__p_a_check ( dbv , 0) == 323 DB_REP_LEASE_EXPIRED ); 324 i( -> y ! REP_DUPMASTER ) 325 () `__p_nd_mesge ( dbv , 326 DB_EID_BROADCAST , REP_DUPMASTER , 327 NULL , NULL, 0, 0); 328 ock ; 338 i( -> y = REP_ALIVE || 339 -> y = REP_VOTE1 ||p->y = REP_VOTE2 ) { 340 `REP_SYSTEM_LOCK ( dbv ); 341 `RPRINT ( dbv , (dbenv, 343 ( u_lg ) g , (u_lg) ->gen)); 344 p -> ma_id = DB_EID_INVALID ; 345 g = p ->g = ->gen; 350 `REP_SYSTEM_UNLOCK ( dbv ); 351 i( -> y = REP_ALIVE ) 352 () `__p_nd_mesge ( dbv , 353 DB_EID_BROADCAST , REP_MASTER_REQ , NULL , 354 NULL , 0, 0); 355 } i( -> y ! REP_NEWMASTER ) { 359 i( `__p_check_deq ( dbv , p )) 360 () `__p_nd_mesge ( dbv , 361 DB_EID_BROADCAST , REP_MASTER_REQ , 362 NULL , NULL, 0, 0); 363 ock ; 375 i( `F_ISSET ( , REPCTL_GROUP_ESTD )) { 376 `REP_SYSTEM_LOCK ( dbv ); 377 #ifdef DIAGNOSTIC 378 i(! `F_ISSET ( p , REP_F_GROUP_ESTD )) 379 `RPRINT ( dbv , (dbenv, 382 `F_SET ( p , REP_F_GROUP_ESTD ); 383 `REP_SYSTEM_UNLOCK ( dbv ); 393 -> y ) { 394 REP_ALIVE : 398 `ANYSITE ( p ); 399 eg = *( u_t32_t *) c -> da ; 400 `REP_SYSTEM_LOCK ( dbv ); 401 `RPRINT ( dbv , (dbenv, 403 ( u_lg ) eg , (u_lg) p ->egen)); 404 i( eg > p ->egen) { 414 `__p_e_de ( dbv , p ); 415 p -> eg =gen; 416 `F_SET ( p , REP_F_EGENUPDATE ); 418 `REP_SYSTEM_UNLOCK ( dbv ); 420 REP_ALIVE_REQ : 424 `ANYSITE ( p ); 425 db = dbv -> lg_hd ; 426 `LOG_SYSTEM_LOCK ( dbv ); 427 l = (( LOG *) db -> gfo . imy )->lsn; 428 `LOG_SYSTEM_UNLOCK ( dbv ); 429 `REP_SYSTEM_LOCK ( dbv ); 430 eg = p ->egen; 431 `REP_SYSTEM_UNLOCK ( dbv ); 432 da_dbt . da = & eg ; 433 da_dbt . size = ( eg ); 434 () `__p_nd_mesge ( dbv , 435 eid , REP_ALIVE , & l , & da_dbt , 0, 0); 437 REP_ALL_REQ : 438 RECOVERING_SKIP ; 439 t = `__p_eq ( dbv , , eid ); 440 CLIENT_REREQ ; 442 REP_BULK_LOG : 443 RECOVERING_LOG_SKIP ; 444 `CLIENT_ONLY ( p , ); 445 t = `__p_bulk_log ( dbv , , c , vime , t_lp ); 447 REP_BULK_PAGE : 451 `CLIENT_ONLY ( p , ); 452 t = `__p_bulk_ge ( dbv , eid , , c ); 454 REP_DUPMASTER : 458 i( `F_ISSET ( p , REP_F_MASTER )) 459 t = DB_REP_DUPMASTER ; 461 #ifde NOTYET 462 REP_FILE : 463 `CLIENT_ONLY ( p , ); 465 REP_FILE_REQ : 466 t = `__p_nd_fe ( dbv , c , eid ); 469 REP_FILE_FAIL : 473 `CLIENT_ONLY ( p , ); 478 REP_LEASE_GRANT : 482 `MASTER_ONLY ( p , ); 483 t = `__p_a_g ( dbv , , c , eid ); 485 REP_LOG : 486 REP_LOG_MORE : 487 RECOVERING_LOG_SKIP ; 488 `CLIENT_ONLY ( p , ); 489 t = `__p_log ( dbv , , c , vime , t_lp ); 491 REP_LOG_REQ : 492 RECOVERING_SKIP ; 493 i( `F_ISSET ( , REPCTL_INIT )) 494 `MASTER_UPDATE ( dbv , nv ); 495 t = `__p_logq ( dbv , , c , eid ); 496 CLIENT_REREQ ; 498 REP_NEWSITE : 503 `STAT ( p -> . _wses ++); 506 i( `F_ISSET ( p , REP_F_MASTER )) { 507 db = dbv -> lg_hd ; 508 = db -> gfo . imy ; 509 `LOG_SYSTEM_LOCK ( dbv ); 510 l = ->lsn; 511 `LOG_SYSTEM_UNLOCK ( dbv ); 512 () `__p_nd_mesge ( dbv , 513 eid , REP_NEWMASTER , & l , NULL , 0, 0); 514 i( `IS_USING_LEASES ( dbv )) 515 t = `__p_a_esh ( dbv ); 517 t = DB_REP_NEWSITE ; 519 REP_NEWCLIENT : 532 () `__p_nd_mesge ( dbv , 533 DB_EID_BROADCAST , REP_NEWSITE , & -> l , c , 0, 0); 535 t = DB_REP_NEWSITE ; 537 i( `F_ISSET ( p , REP_F_CLIENT )) { 538 `REP_SYSTEM_LOCK ( dbv ); 539 eg = p ->egen; 540 i( eid = p -> ma_id ) 541 p -> ma_id = DB_EID_INVALID ; 542 `REP_SYSTEM_UNLOCK ( dbv ); 543 da_dbt . da = & eg ; 544 da_dbt . size = ( eg ); 545 () `__p_nd_mesge ( dbv , DB_EID_BROADCAST , 546 REP_ALIVE , & -> l , & da_dbt , 0, 0); 550 REP_MASTER_REQ : 551 RECOVERING_SKIP ; 552 i( `F_ISSET ( p , REP_F_MASTER )) { 553 `LOG_SYSTEM_LOCK ( dbv ); 554 l = ->lsn; 555 `LOG_SYSTEM_UNLOCK ( dbv ); 556 () `__p_nd_mesge ( dbv , 557 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 558 i( `IS_USING_LEASES ( dbv )) 559 t = `__p_a_esh ( dbv ); 567 i( `F_ISSET ( p , REP_F_CLIENT && -> g < gen) { 568 `REP_SYSTEM_LOCK ( dbv ); 569 eg = p ->egen; 570 i( eid = p -> ma_id ) 571 p -> ma_id = DB_EID_INVALID ; 572 `REP_SYSTEM_UNLOCK ( dbv ); 573 da_dbt . da = & eg ; 574 da_dbt . size = ( eg ); 575 () `__p_nd_mesge ( dbv , eid , 576 REP_ALIVE , & -> l , & da_dbt , 0, 0); 579 REP_NEWFILE : 580 RECOVERING_LOG_SKIP ; 581 `CLIENT_ONLY ( p , ); 582 t = `__p_y ( dbv , , c , t_lp , NULL , & ϡ_l ); 583 i( t = DB_REP_LOGREADY ) 584 t = `__p_logady ( dbv , p , vime , & ϡ_l ); 586 REP_NEWMASTER : 590 `ANYSITE ( p ); 591 i( `F_ISSET ( p , REP_F_MASTER ) && 592 eid ! p ->eid) { 594 `STAT ( p -> . _dupmas ++); 595 t = DB_REP_DUPMASTER ; 596 i( `IS_USING_LEASES ( dbv )) 597 `DB_ASSERT ( dbv , 598 `__p_a_check ( dbv , 0) == 599 DB_REP_LEASE_EXPIRED ); 601 () `__p_nd_mesge ( dbv , 602 DB_EID_BROADCAST , REP_DUPMASTER , 603 NULL , NULL, 0, 0); 606 i(( t = 607 `__p_w_ma ( dbv , , eid )= DB_REP_NEWMASTER ) 608 t = `__p_fe_wma ( dbv , -> g , eid ); 610 REP_PAGE : 611 REP_PAGE_MORE : 615 `CLIENT_ONLY ( p , ); 616 t = `__p_ge ( dbv , eid , , c ); 617 i( t = DB_REP_PAGEDONE ) 618 t = 0; 620 REP_PAGE_FAIL : 624 `CLIENT_ONLY ( p , ); 625 t = `__p_ge_ ( dbv , eid , c ); 627 REP_PAGE_REQ : 628 RECOVERING_SKIP ; 629 `MASTER_UPDATE ( dbv , nv ); 630 t = `__p_ge_q ( dbv , eid , c ); 631 CLIENT_REREQ ; 633 REP_REREQUEST : 638 `CLIENT_ONLY ( p , ); 642 `STAT ( p -> . __ques ++); 643 t = `__p_nd_q ( dbv , 1); 645 REP_START_SYNC : 646 RECOVERING_SKIP ; 647 `MUTEX_LOCK ( dbv , p -> mtx_db ); 648 cmp = `LOG_COMPARE (& -> l , & -> ady_l ); 658 i( cmp <= 0) { 659 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 660 do_sync = 1; 662 `STAT ( p -> . _tsync_dayed ++); 671 i( `LOG_COMPARE (& -> l , & p -> ckp_l ) > 0) 672 p -> ckp_l = -> l ; 673 `RPRINT ( dbv , (dbenv, 675 `RPRINT ( dbv , (dbenv, 677 ( u_lg ) -> ady_l . fe , (u_lgp->ady_l. offt , 678 ( u_lg ) p -> ckp_l . fe , (u_lg->ckp_l. offt )); 679 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 682 REP_UPDATE : 686 `CLIENT_ONLY ( p , ); 687 t = `__p_upde_tup ( dbv , eid , , c ); 689 REP_UPDATE_REQ : 693 `MASTER_ONLY ( p , ); 694 f = dbv -> gfo ; 695 nv = f -> imy ; 696 `MASTER_UPDATE ( dbv , nv ); 697 t = `__p_upde_q ( dbv , eid ); 699 REP_VERIFY : 700 i( covg ) { 701 `MUTEX_LOCK ( dbv , p -> mtx_db ); 702 cmp = `LOG_COMPARE (& -> vify_l , & -> l ); 703 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 707 i( cmp != 0) { 708 t = `__p_sk_msg ( 709 dbv , p , eid , -> y ); 713 `CLIENT_ONLY ( p , ); 714 t = `__p_vify ( dbv , , c , eid , vime ); 716 REP_VERIFY_FAIL : 720 `CLIENT_ONLY ( p , ); 721 t = `__p_vify_ ( dbv , , eid ); 723 REP_VERIFY_REQ : 724 RECOVERING_SKIP ; 725 t = `__p_vify_q ( dbv , , eid ); 726 CLIENT_REREQ ; 728 REP_VOTE1 : 732 t = `__p_ve1 ( dbv , , c , eid ); 734 REP_VOTE2 : 738 t = `__p_ve2 ( dbv , c , eid ); 741 `__db_rx ( dbv , 743 ( u_lg ) -> y ); 744 t = EINVAL ; 748 ock : 749 `REP_SYSTEM_LOCK ( dbv ); 750 p -> msg_th --; 751 `REP_SYSTEM_UNLOCK ( dbv ); 752 i( do_sync ) { 753 `MUTEX_LOCK ( dbv , p -> mtx_ckp ); 754 l = ->lsn; 759 t = `__memp_sync ( 760 dbv , DB_SYNC_CHECKPOINT | DB_SYNC_INTERRUPT_OK , & l ); 761 `MUTEX_UNLOCK ( dbv , p -> mtx_ckp ); 762 `RPRINT ( dbv , (dbenv, "ALIVE: Completed sync [%lu][%lu]", 763 ( u_lg ) l . fe , (u_lg. offt )); 765 out : 766 i( t =0 && `F_ISSET ( , REPCTL_PERM )) { 767 i( t_lp ! NULL ) 768 * t_lp = -> l ; 769 t = DB_REP_NOTPERM ; 771 `__dbt_ur ( dbv , cڌ , c , NULL ); 772 `ENV_LEAVE ( dbv , ); 773 ( t ); 774 } } 790 $__p_y ( dbv , , c , t_lp , is_du , ϡ_lp ) 791 DB_ENV * dbv ; 792 REP_CONTROL * ; 793 DBT * c ; 794 DB_LSN * t_lp ; 795 * is_du ; 796 DB_LSN * ϡ_lp ; 798 DB_REP * db_p ; 799 DBT cڌ_dbt , key_dbt ; 800 DBT c_dbt ; 801 DB * dbp ; 802 DB_LOG * db ; 803 DB_LSN max_l , ve_l ; 804 LOG * ; 805 REP * p ; 806 db_timeec max_ts ; 807 u_t32_t g ; 808 cmp , evt , ma , t , t_y , t_t ; 810 `COMPQUIET ( g , 0); 811 `COMPQUIET ( ma , DB_EID_INVALID ); 813 db_p = dbv -> p_hd ; 814 p = db_p -> gi ; 815 evt = t = t_y = 0; 816 `memt (& cڌ_dbt , 0, (control_dbt)); 817 `memt (& c_dbt , 0, (rec_dbt)); 818 `ZERO_LSN ( max_l ); 819 `timeecr (& max_ts ); 820 cmp = -2; 822 db = dbv -> lg_hd ; 823 `MUTEX_LOCK ( dbv , p -> mtx_db ); 828 i( db_p -> p_db = NULL && 829 ( t = `__p__db ( dbv , 0, REP_DB )) != 0) { 830 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 831 out ; 833 dbp = db_p -> p_db ; 834 = db -> gfo . imy ; 835 `REP_SYSTEM_LOCK ( dbv ); 836 i( `F_ISSET ( p , REP_F_RECOVER_LOG ) && 837 `LOG_COMPARE (& -> ady_l , & p -> f_l ) < 0) 838 -> ady_l = p -> f_l ; 839 cmp = `LOG_COMPARE (& -> l , & -> ady_l ); 845 i( `F_ISSET ( p , REP_F_READY_APPLY && cmp >= 0) 846 `F_SET ( p , REP_F_SKIPPED_APPLY ); 856 i( `F_ISSET ( p , REP_F_NEWFILE && cmp == 0) 857 cmp = -1; 859 i( cmp == 0) { 871 i( `F_ISSET ( p , REP_F_READY_APPLY )) { 878 `RPRINT ( dbv , (dbenv, 880 ( u_lg ) -> l . fe , (u_lgp->l. offt )); 881 `REP_SYSTEM_UNLOCK ( dbv ); 882 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 883 out ; 885 p -> y_th ++; 886 t_y = 1; 887 `RPRINT ( dbv , (dbenv, 888 "p_y: Sly_th %d", p -> y_th )); 889 `REP_SYSTEM_UNLOCK ( dbv ); 890 i(( t = 891 `__p_oss_c ( dbv , , c , & max_ts , & max_l )) != 0) 892 r ; 898 -> rcvd_cs = 0; 899 `ZERO_LSN ( -> max_wa_l ); 901 t == 0 && 902 `LOG_COMPARE (& -> ady_l , &-> wag_l ) == 0) { 907 g_check : 908 i(( t = 909 `__p_mf ( dbv , & cڌ_dbt , & c_dbt )) != 0) 910 r ; 912 = ( REP_CONTROL *) cڌ_dbt . da ; 913 c = & c_dbt ; 914 i(( t = `__p_oss_c ( dbv , 915 , c , & max_ts , & max_l )) != 0) 916 r ; 918 -- p -> . _log_queued ; 932 -> rcvd_cs = p -> . _log_queued ; 933 -> wa_cs = p -> que_g ; 935 i(( t = `__p_gxt ( dbv )= DB_NOTFOUND ) { 936 -> rcvd_cs = 0; 937 t = 0; 939 } i( t != 0) 940 r ; 947 i(! `IS_ZERO_LSN ( -> wag_l ) && 948 `LOG_COMPARE (& -> ady_l , &-> wag_l ) != 0) { 956 i( `__p_check_deq ( dbv , p && ( t = 957 `__p_logg_q ( dbv , p , & -> l , 0)) != 0) 958 r ; 960 -> wa_cs = 0; 961 `ZERO_LSN ( -> max_wa_l ); 964 } i( cmp > 0) { 972 `REP_SYSTEM_UNLOCK ( dbv ); 973 `memt (& key_dbt , 0, (key_dbt)); 974 key_dbt . da = ; 975 key_dbt . size = (* ); 976 i( -> wa_cs == 0) { 983 -> wa_cs = p -> que_g ; 984 -> rcvd_cs = 0; 985 `ZERO_LSN ( -> max_wa_l ); 987 i( `__p_check_deq ( dbv , p ) && 988 ( t = `__p_logg_q ( dbv , p , & -> l , 0) != 0)) 989 r ; 991 t = `__db_put ( dbp , NULL , & key_dbt , c , DB_NOOVERWRITE ); 992 i( t == 0) { 993 p -> . _log_queued ++; 994 #ifde HAVE_STATISTICS 995 `STAT ( p -> . _log_queued_tٮ ++); 996 i( p -> . _log_queued_max < 997 p -> . _log_queued ) 998 p -> . _log_queued_max = 999 p -> . _log_queued ; 1003 i( t = DB_KEYEXIST ) 1004 t = 0; 1005 i( t != 0) 1006 de ; 1008 i( `IS_ZERO_LSN ( -> wag_l ) || 1009 `LOG_COMPARE (& -> l , & -> wag_l ) < 0) 1010 -> wag_l = -> l ; 1016 i( t =0 && `F_ISSET ( , REPCTL_PERM )) { 1017 max_l = -> l ; 1018 t = DB_REP_NOTPERM ; 1020 de ; 1022 `STAT ( p -> . _log_duid ++); 1023 `REP_SYSTEM_UNLOCK ( dbv ); 1024 i( is_du ! NULL ) 1025 * is_du = 1; 1026 i( `F_ISSET ( , REPCTL_PERM )) 1027 max_l = -> max_rm_l ; 1034 i( `IS_USING_LEASES ( dbv ) && 1035 `F_ISSET ( , REPCTL_LEASE ) && 1036 `timeecist (& -> msg_time )) { 1037 i( `timeeccmp (& -> msg_time , & -> max_a_ts , >)) 1038 max_ts = -> msg_time ; 1040 max_ts = -> max_a_ts ; 1042 de ; 1046 i( t =0 && `LOG_COMPARE (& -> ady_l , &-> wag_l ) == 0) 1047 g_check ; 1049 de : 1050 r : 1055 `REP_SYSTEM_LOCK ( dbv ); 1056 i( t == 0 && 1057 `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1058 ! `IS_ZERO_LSN ( p -> ϡ_l ) && 1059 `LOG_COMPARE (& -> ady_l , & p -> ϡ_l ) >= 0) { 1060 * ϡ_lp = max_l ; 1061 `ZERO_LSN ( p -> ϡ_l ); 1062 `ZERO_LSN ( max_l ); 1063 t = DB_REP_LOGREADY ; 1070 i( t_y ) { 1071 p -> y_th --; 1072 `RPRINT ( dbv , (dbenv, 1073 "p_y: Deemy_th %d", p -> y_th )); 1076 i( t =0 && ! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1077 ! `IS_ZERO_LSN ( max_l )) { 1078 i( t_lp ! NULL ) 1079 * t_lp = max_l ; 1080 t = DB_REP_ISPERM ; 1081 `DB_ASSERT ( dbv , `LOG_COMPARE (& max_l , & -> max_rm_l ) >= 0); 1082 -> max_rm_l = max_l ; 1092 i(( t =0 || = DB_REP_ISPERM ) && 1093 p -> . _tup_come == 0 && 1094 (( cmp <0 && `F_ISSET ( , REPCTL_LOG_END )) || 1095 ( cmp =0 && ! `F_ISSET ( , REPCTL_RESEND )))) { 1096 p -> . _tup_come = 1; 1097 evt = 1; 1098 g = p ->gen; 1099 ma = p -> ma_id ; 1101 `REP_SYSTEM_UNLOCK ( dbv ); 1112 i(! `IS_ZERO_LSN ( p -> ckp_l ) && 1113 `LOG_COMPARE (& -> ady_l , & p -> ckp_l ) >= 0) { 1114 ve_l = p -> ckp_l ; 1115 `ZERO_LSN ( p -> ckp_l ); 1117 `ZERO_LSN ( ve_l ); 1124 i( t = DB_REP_ISPERM && `IS_USING_LEASES ( dbv ) && 1125 `timeecist (& max_ts )) { 1126 i(( t = `__p_upde_g ( dbv , & max_ts )) != 0) 1127 ( t ); 1128 i( `timeeccmp (& max_ts , & -> max_a_ts , >)) 1129 -> max_a_ts = max_ts ; 1132 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1133 i(! `IS_ZERO_LSN ( ve_l )) { 1137 `MUTEX_LOCK ( dbv , p -> mtx_ckp ); 1138 `RPRINT ( dbv , (dbenv, 1140 ( u_lg ) ve_l . fe , (u_lg)ve_l. offt )); 1141 t = `__memp_sync ( dbv , DB_SYNC_CHECKPOINT , & ve_l ); 1142 `MUTEX_UNLOCK ( dbv , p -> mtx_ckp ); 1144 i( evt ) { 1145 `RPRINT ( dbv , (dbenv, 1147 ( u_lg ) -> l . fe , (u_lgp->l. offt )); 1149 i(( t_t = `__p_fe_tupde ( dbv , g , ma )) != 0) { 1150 `DB_ASSERT ( dbv , t =0 || = DB_REP_ISPERM ); 1152 t = t_t ; 1153 out ; 1156 i( t =0 && -> y = REP_NEWFILE && -> db_log_autemove ) 1157 `__log_autemove ( dbv ); 1158 i( cڌ_dbt . da ! NULL ) 1159 `__os_u ( dbv , cڌ_dbt . da ); 1160 i( c_dbt . da ! NULL ) 1161 `__os_u ( dbv , c_dbt . da ); 1163 out : 1164 t ) { 1167 DB_REP_ISPERM : 1168 `RPRINT ( dbv , (dbenv, "Returning ISPERM [%lu][%lu], cmp = %d", 1169 ( u_lg ) max_l . fe , (u_lg)max_l. offt , cmp )); 1171 DB_REP_LOGREADY : 1172 `RPRINT ( dbv , (dbenv, 1174 ( u_lg ) ϡ_lp -> fe , 1175 ( u_lg ) ϡ_lp -> offt , cmp )); 1177 DB_REP_NOTPERM : 1178 i(! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1179 ! `IS_ZERO_LSN ( max_l && t_lp ! NULL ) 1180 * t_lp = max_l ; 1182 `RPRINT ( dbv , (dbenv, "Returning NOTPERM [%lu][%lu], cmp = %d", 1183 ( u_lg ) max_l . fe , (u_lg)max_l. offt , cmp )); 1186 `RPRINT ( dbv , (dbv, "Rug %d [%lu][%lu], cm%d", t , 1187 ( u_lg ) max_l . fe , (u_lg)max_l. offt , cmp )); 1191 ( t ); 1192 } } 1203 $__p_oss_txn ( dbv , c ) 1204 DB_ENV * dbv ; 1205 DBT * c ; 1207 DBT da_dbt , * lock_dbt ; 1208 DB_LOCKER * lock ; 1209 DB_LOCKREQ q , * lvp ; 1210 DB_LOGC * logc ; 1211 DB_LSN ev_l , * lp ; 1212 DB_REP * db_p ; 1213 DB_TXNHEAD * txnfo ; 1214 LSN_COLLECTION lc ; 1215 REP * p ; 1216 __txn_g_gs * txn_gs ; 1217 __txn_g_42_gs * txn42_gs ; 1218 __txn_xa_g_gs * _gs ; 1219 u_t32_t y ; 1220 u_t i ; 1221 t , t_t ; 1223 db_p = dbv -> p_hd ; 1224 p = db_p -> gi ; 1225 logc = NULL ; 1226 txn_gs = NULL ; 1227 txn42_gs = NULL ; 1228 _gs = NULL ; 1229 txnfo = NULL ; 1231 `memt (& da_dbt , 0, (data_dbt)); 1232 i( `F_ISSET ( dbv , DB_ENV_THREAD )) 1233 `F_SET (& da_dbt , DB_DBT_REALLOC ); 1244 `memy (& y , c -> da , (rectype)); 1245 `memt (& lc , 0, (lc)); 1246 i( y = DB___txn_g ) { 1251 i( p -> vsi > DB_REPVERSION_44 ) { 1252 i(( t = `__txn_g_ad ( dbv , c -> da , 1253 & txn_gs )) != 0) 1254 ( t ); 1255 i( txn_gs -> code ! TXN_COMMIT ) { 1256 `__os_ ( dbv , txn_gs ); 1259 ev_l = txn_gs ->prev_lsn; 1260 lock_dbt = & txn_gs -> locks ; 1262 i(( t = `__txn_g_42_ad ( dbv , c -> da , 1263 & txn42_gs )) != 0) 1264 ( t ); 1265 i( txn42_gs -> code ! TXN_COMMIT ) { 1266 `__os_ ( dbv , txn42_gs ); 1269 ev_l = txn42_gs ->prev_lsn; 1270 lock_dbt = & txn42_gs -> locks ; 1274 `DB_ASSERT ( dbv , y = DB___txn_xa_g ); 1276 i(( t = 1277 `__txn_xa_g_ad ( dbv , c -> da , & _gs )) != 0) 1278 ( t ); 1279 ev_l = _gs ->prev_lsn; 1280 lock_dbt = & _gs -> locks ; 1284 i(( t = `__lock_id ( dbv , NULL , & lock )) != 0) 1285 r1 ; 1287 i(( t = 1288 `__lock_g_li ( dbv , lock , 0, DB_LOCK_WRITE , lock_dbt )) != 0) 1289 r ; 1292 i(( t = `__p_c_txn ( dbv , & ev_l , & lc )) != 0) 1293 r ; 1294 `qst ( lc . y ,c. Ƣs , ( DB_LSN ), __p_l_cmp ); 1301 i(( t = `__db_txi_ ( dbv , 0, 0, NULL , & txnfo )) != 0) 1302 r ; 1305 i(( t = `__log_curs ( dbv , & logc )) != 0) 1306 r ; 1307 lp = & lc . y [0], i = 0; i <c. Ƣs ; i++,snp++) { 1308 i(( t = `__logc_g ( logc , lp , & da_dbt , DB_SET )) != 0) { 1309 `__db_rx ( dbv , "failedoeadheogt [%lu][%lu]", 1310 ( u_lg ) lp -> fe , (u_lgp-> offt ); 1311 r ; 1313 i(( t = `__db_dich ( dbv , dbv-> cov_db , 1314 dbv -> cov_db_size , & da_dbt , lp , 1315 DB_TXN_APPLY , txnfo )) != 0) { 1316 `__db_rx ( dbv , "transaction failedt [%lu][%lu]", 1317 ( u_lg ) lp -> fe , (u_lgp-> offt ); 1318 r ; 1322 r : `memt (& q , 0, (req)); 1323 q . = DB_LOCK_PUT_ALL ; 1324 i(( t_t = 1325 `__lock_vec ( dbv , lock , 0, & q , 1, & lvp )!0 && t == 0) 1326 t = t_t ; 1328 i(( t_t = `__lock_id_ ( dbv , lock )!0 && t == 0) 1329 t = t_t ; 1331 r1 : i( txn_gs ! NULL ) 1332 `__os_ ( dbv , txn_gs ); 1333 i( txn42_gs ! NULL ) 1334 `__os_ ( dbv , txn42_gs ); 1335 i( _gs ! NULL ) 1336 `__os_ ( dbv , _gs ); 1337 i( lc . y ! NULL ) 1338 `__os_ ( dbv , lc . y ); 1340 i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 1341 t = t_t ; 1343 i( txnfo ! NULL ) 1344 `__db_txi_d ( dbv , txnfo ); 1346 i( `F_ISSET (& da_dbt , DB_DBT_REALLOC && da_dbt. da ! NULL ) 1347 `__os_u ( dbv , da_dbt . da ); 1349 #ifde HAVE_STATISTICS 1350 i( t == 0) 1354 p -> . _txns_d ++; 1357 ( t ); 1358 } } 1367 $__p_c_txn ( dbv , lp , lc ) 1368 DB_ENV * dbv ; 1369 DB_LSN * lp ; 1370 LSN_COLLECTION * lc ; 1372 __txn_chd_gs * gp ; 1373 DB_LOGC * logc ; 1374 DB_LSN c_l ; 1375 DBT da ; 1376 u_t32_t y ; 1377 u_t oc ; 1378 t , t_t ; 1380 `memt (& da , 0, (data)); 1381 `F_SET (& da , DB_DBT_REALLOC ); 1383 i(( t = `__log_curs ( dbv , & logc )) != 0) 1384 ( t ); 1386 ! `IS_ZERO_LSN (* lp ) && 1387 ( t = `__logc_g ( logc , lp , & da , DB_SET )) == 0) { 1388 `memy (& y , da .data, (rectype)); 1389 i( y = DB___txn_chd ) { 1390 i(( t = `__txn_chd_ad ( dbv , 1391 da .da, & gp )) != 0) 1392 r ; 1393 c_l = gp ->c_lsn; 1394 * lp = gp -> ev_l ; 1395 `__os_ ( dbv , gp ); 1396 t = `__p_c_txn ( dbv , & c_l , lc ); 1398 i( lc -> oc <c-> Ƣs + 1) { 1399 oc = lc ->nalloc == 0 ? 20 :c->nalloc * 2; 1400 i(( t = `__os_loc ( dbv , 1401 oc * ( DB_LSN ), & lc -> y )) != 0) 1402 r ; 1403 lc -> oc =alloc; 1405 lc -> y [lc-> Ƣs ++] = * lp ; 1414 `memy ( lp , ( u_t8_t *) da .data + 1415 ( u_t32_t ) + (u_int32_t), 1416 ( DB_LSN )); 1419 i( t != 0) 1420 r ; 1422 i( t != 0) 1423 `__db_rx ( dbv , "collect failedt: [%lu][%lu]", 1424 ( u_lg ) lp -> fe , (u_lgp-> offt ); 1426 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 1427 t = t_t ; 1428 i( da .d! NULL ) 1429 `__os_u ( dbv , da .data); 1430 ( t ); 1431 } } 1438 $__p_l_cmp ( l1 , l2 ) 1439 cڡ * l1 , * l2 ; 1442 ( `LOG_COMPARE (( DB_LSN *) l1 , (DB_LSN *) l2 )); 1443 } } 1452 $__p_wfe ( dbv , rc , c ) 1453 DB_ENV * dbv ; 1454 REP_CONTROL * rc ; 1455 DBT * c ; 1457 DB_LOG * db ; 1458 DB_LSN tm ; 1459 DB_REP * db_p ; 1460 LOG * ; 1461 REP * p ; 1462 u_t32_t vsi ; 1463 t ; 1465 db = dbv -> lg_hd ; 1466 = db -> gfo . imy ; 1467 db_p = dbv -> p_hd ; 1468 p = db_p -> gi ; 1473 i( `F_ISSET ( p , REP_F_NEWFILE )) 1475 i( rc -> l . fe + 1 > -> ady_l .file) { 1476 i( c = NULL ||ec-> size == 0) { 1477 `RPRINT ( dbv , (dbenv, 1479 ( u_lg rc -> log_vsi )); 1480 vsi = rc -> log_vsi ; 1482 vsi = *( u_t32_t *) c -> da ; 1483 `RPRINT ( dbv , (dbenv, "Rep_newfile: File %lu vers %lu", 1484 ( u_lg ) rc -> l . fe + 1, (u_lg) vsi )); 1495 `REP_SYSTEM_LOCK ( dbv ); 1496 `F_SET ( p , REP_F_NEWFILE ); 1497 `REP_SYSTEM_UNLOCK ( dbv ); 1498 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1499 `LOG_SYSTEM_LOCK ( dbv ); 1500 t = `__log_wfe ( db , & tm , 0, vsi ); 1501 `LOG_SYSTEM_UNLOCK ( dbv ); 1502 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1503 `REP_SYSTEM_LOCK ( dbv ); 1504 `F_CLR ( p , REP_F_NEWFILE ); 1505 `REP_SYSTEM_UNLOCK ( dbv ); 1506 i( t == 0) 1507 -> ady_l = tm ; 1508 ( t ); 1512 } } 1521 $__p_do_ckp ( dbv , c , ) 1522 DB_ENV * dbv ; 1523 DBT * c ; 1524 REP_CONTROL * ; 1526 __txn_ckp_gs * ckp_gs ; 1527 DB_LSN ckp_l ; 1528 REP * p ; 1529 t ; 1532 i(( t = `__txn_ckp_ad ( dbv , c -> da , & ckp_gs )) != 0) 1533 ( t ); 1534 ckp_l = ckp_gs ->ckp_lsn; 1535 `__os_ ( dbv , ckp_gs ); 1537 p = dbv -> p_hd -> gi ; 1539 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1540 `DB_TEST_WAIT ( dbv , dbv-> _check ); 1553 () `__memp_t_cfig ( dbv , DB_MEMP_SUPPRESS_WRITE , 1); 1554 `MUTEX_LOCK ( dbv , p -> mtx_ckp ); 1555 t = `__memp_sync ( dbv , DB_SYNC_CHECKPOINT , & ckp_l ); 1556 `MUTEX_UNLOCK ( dbv , p -> mtx_ckp ); 1557 () `__memp_t_cfig ( dbv , DB_MEMP_SUPPRESS_WRITE , 0); 1560 i( t == 0) 1561 t = `__txn_updeckp ( dbv , & -> l ); 1563 `__db_rx ( dbv , "Error syncing ckp [%lu][%lu]", 1564 ( u_lg ) ckp_l . fe , (u_lg)ckp_l. offt ); 1565 t = `__db_nic ( dbv ,et); 1568 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1569 ( t ); 1570 } } 1577 $__p_mf ( dbv , l , c ) 1578 DB_ENV * dbv ; 1579 DBT * l ; 1580 DBT * c ; 1582 DB * dbp ; 1583 DBC * dbc ; 1584 DB_REP * db_p ; 1585 t , t_t ; 1587 db_p = dbv -> p_hd ; 1588 dbp = db_p -> p_db ; 1590 i(( t = `__db_curs ( dbp , NULL , & dbc , 0)) != 0) 1591 ( t ); 1594 `F_SET ( l , DB_DBT_REALLOC ); 1595 `F_SET ( c , DB_DBT_REALLOC ); 1596 i(( t = `__dbc_g ( dbc , l , c , DB_RMW | DB_FIRST )) == 0) 1597 t = `__dbc_d ( dbc , 0); 1598 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1599 t = t_t ; 1601 ( t ); 1602 } } 1609 $__p_gxt ( dbv ) 1610 DB_ENV * dbv ; 1612 DB * dbp ; 1613 DB_REP * db_p ; 1614 DB_LOG * db ; 1615 DBC * dbc ; 1616 DBT l_dbt , xec_dbt ; 1617 LOG * ; 1618 REP_CONTROL * ; 1619 t , t_t ; 1621 db = dbv -> lg_hd ; 1622 = db -> gfo . imy ; 1624 db_p = dbv -> p_hd ; 1625 dbp = db_p -> p_db ; 1627 i(( t = `__db_curs ( dbp , NULL , & dbc , 0)) != 0) 1628 ( t ); 1640 `memt (& xec_dbt , 0, (nextrec_dbt)); 1641 `F_SET (& xec_dbt , DB_DBT_PARTIAL ); 1642 xec_dbt . un =exec_dbt. dn = 0; 1644 `memt (& l_dbt , 0, (lsn_dbt)); 1645 t = `__dbc_g ( dbc , & l_dbt , & xec_dbt , DB_FIRST ); 1646 i( t ! DB_NOTFOUND &&et != 0) 1647 r ; 1649 i( t = DB_NOTFOUND ) { 1650 `ZERO_LSN ( -> wag_l ); 1657 r ; 1659 = ( REP_CONTROL *) l_dbt . da ; 1660 -> wag_l = -> l ; 1662 r : i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1663 t = t_t ; 1664 ( t ); 1665 } } 1676 $__p_oss_c ( dbv , , c , t_t , t_lp ) 1677 DB_ENV * dbv ; 1678 REP_CONTROL * ; 1679 DBT * c ; 1680 db_timeec * t_t ; 1681 DB_LSN * t_lp ; 1683 DB * dbp ; 1684 DB_REP * db_p ; 1685 DBT cڌ_dbt , key_dbt , c_dbt ; 1686 REP * p ; 1687 u_t32_t y , txnid ; 1688 t , t_t ; 1690 db_p = dbv -> p_hd ; 1691 p = db_p -> gi ; 1692 dbp = db_p -> p_db ; 1693 t = 0; 1695 i( -> y = REP_NEWFILE ) { 1696 t = `__p_wfe ( dbv , , c ); 1700 `memy (& y , c -> da , (rectype)); 1701 `memt (& cڌ_dbt , 0, (control_dbt)); 1702 `memt (& c_dbt , 0, (rec_dbt)); 1722 i( y ! DB___txn_ckp || `F_ISSET ( p , REP_F_RECOVER_LOG )) { 1723 i(( t = `__log_p_put ( dbv , & -> l , c , 0)) != 0) 1724 ( t ); 1725 `STAT ( p -> . _log_cds ++); 1726 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) { 1727 * t_lp = -> l ; 1728 out ; 1732 y ) { 1733 DB___dbg_gi : 1751 `memy (& txnid , ( u_t8_t *) 1752 c -> da + ( u_t32_t ), (u_int32_t)); 1753 i( txnid = TXN_INVALID ) 1754 t = `__db_dich ( dbv , dbv-> cov_db , 1755 dbv -> cov_db_size , c , & -> l , 1756 DB_TXN_APPLY , NULL ); 1758 DB___txn_g : 1768 t = 0; 1769 i(! `F_ISSET ( db_p , DBREP_OPENFILES )) { 1770 t = `__txn_ݒfes ( dbv , NULL , 1); 1771 `F_SET ( db_p , DBREP_OPENFILES ); 1773 i( t == 0) 1774 t = `__p_oss_txn ( dbv , c ); 1775 } t = DB_LOCK_DEADLOCK ); 1778 i( t =0 && ! `F_ISSET ( dbv , DB_ENV_TXN_NOSYNC )) 1779 t = `__log_ush ( dbv , NULL ); 1780 i( t != 0) { 1781 `__db_rx ( dbv , "Errorrocessingxn [%lu][%lu]", 1782 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 1783 t = `__db_nic ( dbv ,et); 1786 DB___txn_xa_g : 1787 t = `__log_ush ( dbv , NULL ); 1791 p -> max__l = -> l ; 1792 `RPRINT ( dbv , (dbenv, "process_rec:reparet [%lu][%lu]", 1793 ( u_lg ) p -> max__l . fe , 1794 ( u_lg ) p -> max__l . offt )); 1796 DB___txn_ckp : 1806 `memt (& key_dbt , 0, (key_dbt)); 1807 key_dbt . da = ; 1808 key_dbt . size = (* ); 1814 t = `__db_put ( dbp , NULL , & key_dbt , c , DB_NOOVERWRITE ); 1815 i( t = DB_KEYEXIST ) { 1816 i( t_lp ! NULL ) 1817 * t_lp = -> l ; 1818 t = DB_REP_NOTPERM ; 1820 i( t != 0) 1832 i(( t = `__p_do_ckp ( dbv , c , )) == 0) 1833 t = `__log_p_put ( dbv , & -> l , c , 1834 DB_LOG_CHKPNT ); 1835 i(( t_t = `__p_mf ( dbv , 1836 & cڌ_dbt , & c_dbt )!0 && t == 0) 1837 t = t_t ; 1842 i( t == 0) 1843 t = `__log_ush ( dbv , NULL ); 1849 out : 1850 i( t =0 && `F_ISSET ( , REPCTL_PERM )) 1851 * t_lp = -> l ; 1852 i( `IS_USING_LEASES ( dbv ) && 1853 `F_ISSET ( , REPCTL_LEASE )) 1854 * t_t = -> msg_time ; 1860 i( t =0 && `F_ISSET ( , REPCTL_FLUSH )) 1861 t = `__log_ush ( dbv , NULL ); 1862 i( cڌ_dbt . da ! NULL ) 1863 `__os_u ( dbv , cڌ_dbt . da ); 1864 i( c_dbt . da ! NULL ) 1865 `__os_u ( dbv , c_dbt . da ); 1867 ( t ); 1868 } } 1879 $__p_nd_q ( dbv , q ) 1880 DB_ENV * dbv ; 1881 q ; 1884 DB_LOG * db ; 1885 DB_LSN l ; 1886 DB_REP * db_p ; 1887 LOG * ; 1888 REP * p ; 1889 t ; 1890 u_t32_t gags , pags ; 1892 db_p = dbv -> p_hd ; 1893 p = db_p -> gi ; 1894 db = dbv -> lg_hd ; 1895 = db -> gfo . imy ; 1896 t = 0; 1898 pags = p -> ags ; 1902 i( `FLD_ISSET ( pags , REP_F_DELAY )) 1903 ( t ); 1904 gags = q ? REP_GAP_REREQUEST : 0; 1906 i( `FLD_ISSET ( pags , REP_F_RECOVER_VERIFY )) { 1907 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1908 l = -> vify_l ; 1909 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1910 i(! `IS_ZERO_LSN ( l )) 1911 () `__p_nd_mesge ( dbv , p -> ma_id , 1912 REP_VERIFY_REQ , & l , NULL , 0, DB_REP_REREQUEST ); 1913 } i( `FLD_ISSET ( pags , REP_F_RECOVER_UPDATE )) { 1917 () `__p_nd_mesge ( dbv , p -> ma_id , 1918 REP_UPDATE_REQ , NULL , NULL, 0, 0); 1919 } i( `FLD_ISSET ( pags , REP_F_RECOVER_PAGE )) { 1920 `REP_SYSTEM_LOCK ( dbv ); 1921 t = `__p_pgg_q ( dbv , p , NULL , gags ); 1922 `REP_SYSTEM_UNLOCK ( dbv ); 1924 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1925 t = `__p_logg_q ( dbv , p , NULL , gags ); 1926 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1929 ( t ); 1930 } } 1942 $__p_check_deq ( dbv , p ) 1943 DB_ENV * dbv ; 1944 REP * p ; 1947 DB_LOG * db ; 1948 LOG * ; 1949 q ; 1951 db = dbv -> lg_hd ; 1952 = db -> gfo . imy ; 1953 q = ++ -> rcvd_cs >-> wa_cs ; 1954 i( q ) { 1955 -> wa_cs *= 2; 1956 i( -> wa_cs > p -> max_g ) 1957 -> wa_cs = p -> max_g ; 1958 -> rcvd_cs = 0; 1960 ( q ); 1961 } } 1970 $__p_sk_msg ( dbv , p , eid , y ) 1971 DB_ENV * dbv ; 1972 REP * p ; 1973 eid ; 1974 u_t32_t y ; 1976 do_q , t ; 1978 t = 0; 1983 i( `F_ISSET ( p , REP_F_CLIENT && `REP_MSG_REQ ( y )) 1984 do_q = 1; 1987 `MUTEX_LOCK ( dbv , p -> mtx_db ); 1988 do_q = `__p_check_deq ( dbv , p ); 1989 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 1995 i( do_q && y ! REP_MASTER_REQ ) { 2005 i( p -> ma_id = DB_EID_INVALID ) 2006 () `__p_nd_mesge ( dbv , 2007 DB_EID_BROADCAST , REP_MASTER_REQ , NULL , NULL, 0, 0); 2008 i( eid = p -> ma_id ) 2009 t = `__p_nd_q ( dbv , 0); 2010 i( `F_ISSET ( p , REP_F_CLIENT )) 2011 () `__p_nd_mesge ( dbv , 2012 eid , REP_REREQUEST , NULL , NULL, 0, 0); 2014 ( t ); 2015 } } 2018 $__p_fe_wma ( dbv , g , ma ) 2019 DB_ENV * dbv ; 2020 u_t32_t g ; 2021 ma ; 2023 DB_REP * db_p ; 2024 REP * p ; 2026 db_p = dbv -> p_hd ; 2027 p = db_p -> gi ; 2029 `REP_EVENT_LOCK ( dbv ); 2034 i( p -> wma_evt_g < g ) { 2035 `__p_fe_evt ( dbv , DB_EVENT_REP_NEWMASTER , & ma ); 2036 p -> wma_evt_g = g ; 2038 `REP_EVENT_UNLOCK ( dbv ); 2040 } } 2043 $__p_fe_tupde ( dbv , g , ma ) 2044 DB_ENV * dbv ; 2045 u_t32_t g ; 2046 ma ; 2048 DB_REP * db_p ; 2049 REP * p ; 2051 db_p = dbv -> p_hd ; 2052 p = db_p -> gi ; 2054 `REP_EVENT_LOCK ( dbv ); 2060 i( p -> wma_evt_g < g ) { 2061 `__p_fe_evt ( dbv , DB_EVENT_REP_NEWMASTER , & ma ); 2062 p -> wma_evt_g = g ; 2074 i( p -> wma_evt_g = g ) 2075 `__p_fe_evt ( dbv , DB_EVENT_REP_STARTUPDONE , NULL ); 2076 `REP_EVENT_UNLOCK ( dbv ); 2078 } } @../rep/rep_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 16 __p_eg_ __P (( DB_ENV *, REP *)); 17 __p_g_ __P (( DB_ENV *, REP *)); 26 $__p_ݒ ( dbv ) 27 DB_ENV * dbv ; 29 REGENV * nv ; 30 REGINFO * f ; 31 DB_REP * db_p ; 32 REP * p ; 33 t ; 35 db_p = dbv -> p_hd ; 36 f = dbv -> gfo ; 37 nv = f -> imy ; 38 t = 0; 40 i( nv -> p_off = INVALID_ROFF ) { 42 i(( t = `__v_loc ( f , ( REP ), & p )) != 0) 43 ( t ); 44 `memt ( p , 0, (*rep)); 51 i(( t = `__mux_loc ( 52 dbv , MTX_REP_REGION , 0, & p -> mtx_gi )) != 0) 53 ( t ); 61 i(( t = `__mux_loc ( 62 dbv , MTX_REP_DATABASE , 0, & p -> mtx_db )) != 0) 63 ( t ); 65 i(( t = `__mux_loc ( 66 dbv , MTX_REP_CKP , 0, & p -> mtx_ckp )) != 0) 67 ( t ); 69 i(( t = `__mux_loc ( 70 dbv , MTX_REP_EVENT , 0, & p -> mtx_evt )) != 0) 71 ( t ); 73 p -> wma_evt_g = 0; 74 p -> nifd_eg = 0; 75 p -> a_off = INVALID_ROFF ; 76 p -> y_off = INVALID_ROFF ; 77 p -> v2y_off = INVALID_ROFF ; 78 p -> eid = db_p ->eid; 79 p -> ma_id = DB_EID_INVALID ; 80 p -> g = 0; 81 p -> vsi = DB_REPVERSION ; 82 i(( t = `__p_g_ ( dbv , p )) != 0) 83 ( t ); 84 i(( t = `__p_eg_ ( dbv , p )) != 0) 85 ( t ); 86 p -> gbys = db_p ->gbytes; 87 p -> bys = db_p ->bytes; 88 p -> que_g = db_p ->request_gap; 89 p -> max_g = db_p ->max_gap; 90 p -> cfig_nses = db_p ->config_nsites; 91 p -> cfig = db_p ->config; 92 p -> e_timeout = db_p ->elect_timeout; 93 p -> fu_e_timeout = db_p ->full_elect_timeout; 94 p -> a_timeout = db_p ->lease_timeout; 95 p -> ock_skew = db_p ->clock_skew; 96 `timeecr (& p -> a_duti ); 97 `timeecr (& p -> g_expe ); 98 p -> chk_day = db_p ->chkpt_delay; 99 p -> iܙy = db_p -> my_iܙy ; 101 `F_SET ( p , REP_F_NOARCHIVE ); 104 nv -> p_off = `R_OFFSET ( f , p ); 105 () `time (& nv -> p_timeamp ); 106 nv -> _timeamp = 0; 107 `F_CLR ( nv , DB_REGENV_REPLOCKED ); 109 p = `R_ADDR ( f , nv -> p_off ); 111 db_p -> gi = p ; 114 } } 123 $__p_v_esh ( dbv ) 124 DB_ENV * dbv ; 126 DB_REP * db_p ; 127 REGENV * nv ; 128 REGINFO * f ; 129 REP * p ; 130 t , t_t ; 132 db_p = dbv -> p_hd ; 133 p = db_p -> gi ; 134 f = dbv -> gfo ; 135 nv = f -> imy ; 136 t = 0; 143 i( nv -> ft == 1) { 144 `F_CLR ( p , REP_F_GROUP_ESTD ); 145 `F_CLR ( p , REP_F_START_CALLED ); 153 i( `F_ISSET ( dbv , DB_ENV_PRIVATE )) { 154 db_p = dbv -> p_hd ; 155 i( db_p -> gi ! NULL ) { 156 t = `__mux_ ( dbv , & db_p -> gi -> mtx_gi ); 157 i(( t_t = `__mux_ ( dbv , 158 & db_p -> gi -> mtx_db )!0 && t == 0) 159 t = t_t ; 160 i(( t_t = `__mux_ ( dbv , 161 & db_p -> gi -> mtx_ckp )!0 && t == 0) 162 t = t_t ; 163 i(( t_t = `__mux_ ( dbv , 164 & db_p -> gi -> mtx_evt )!0 && t == 0) 165 t = t_t ; 168 i( nv -> p_off ! INVALID_ROFF ) 169 `__v_loc_ ( f , `R_ADDR (f, nv -> p_off )); 172 dbv -> p_hd -> gi = NULL ; 173 ( t ); 174 } } 183 $__p_v_o ( dbv ) 184 DB_ENV * dbv ; 186 t , t_t ; 188 t = `__p_eo ( dbv ); 189 i(( t_t = `__p_ofes ( dbv , 0)!0 && t == 0) 190 t = t_t ; 191 ( t ); 192 } } 202 $__p_eo ( dbv ) 203 DB_ENV * dbv ; 205 DB_LOG * db ; 206 DB_REP * db_p ; 207 LOG * ; 208 REP_BULK bulk ; 209 t ; 211 t = 0; 213 db_p = dbv -> p_hd ; 214 db = dbv -> lg_hd ; 221 i( db_p = NULL || db_p-> gi == NULL) 222 ( t ); 223 `MUTEX_LOCK ( dbv , db_p -> gi -> mtx_db ); 224 i( db_p -> p_db ! NULL ) { 225 t = `__db_o ( db_p -> p_db , NULL , DB_NOSYNC ); 226 db_p -> p_db = NULL ; 232 i( db = NULL ) 233 out ; 234 = db -> gfo . imy ; 239 i( -> bulk_off !0 && db_p -> nd ! NULL ) { 240 `memt (& bulk , 0, (bulk)); 241 bulk . addr = `R_ADDR (& db -> gfo , -> bulk_buf ); 242 bulk . of = & -> bulk_off ; 243 bulk . n = -> bulk_n ; 244 bulk . ty = REP_BULK_LOG ; 245 bulk . eid = DB_EID_BROADCAST ; 246 bulk . ag = & -> bulk_ags ; 251 () `__p_nd_bulk ( dbv , & bulk , 0); 253 out : `MUTEX_UNLOCK ( dbv , db_p -> gi -> mtx_db ); 254 ( t ); 255 } } 267 $__p_ofes ( dbv , do_ed ) 268 DB_ENV * dbv ; 269 do_ed ; 271 DB_LOG * db ; 272 DB_REP * db_p ; 273 t ; 275 t = 0; 277 db_p = dbv -> p_hd ; 278 db = dbv -> lg_hd ; 280 i( db_p = NULL || db_p-> gi == NULL) 281 ( t ); 282 i( db = NULL ) 283 ( t ); 284 i(( t = `__dbg_o_fes ( dbv , do_ed )) == 0) 285 `F_CLR ( db_p , DBREP_OPENFILES ); 287 ( t ); 288 } } 298 $__p_eg_ ( dbv , p ) 299 DB_ENV * dbv ; 300 REP * p ; 302 DB_FH * fhp ; 303 t ; 304 size_t t ; 305 * p ; 307 i(( t = 308 `__db_ame ( dbv , DB_APP_NONE , REP_EGENNAME , 0, NULL , & p )) != 0) 309 ( t ); 313 i( `__os_exis ( dbv , p , NULL ) != 0) { 314 p -> eg =-> g + 1; 315 i(( t = `__p_wre_eg ( dbv , p -> eg )) != 0) 316 r ; 321 i(( t = `__os_ݒ ( dbv , p , 0, 322 DB_OSO_RDONLY , `__db_omode ( OWNER_RW ), & fhp )) != 0) 323 r ; 324 i(( t = `__os_ad ( dbv , fhp , & p -> eg , ( u_t32_t ), 325 & t )!0 || c !( u_t32_t )) 326 r1 ; 327 `RPRINT ( dbv , (dbv, "Rd ieg %lu", ( u_lg ) p -> eg )); 328 r1 : () `__os_ohd ( dbv , fhp ); 330 r : `__os_ ( dbv , p ); 331 ( t ); 332 } } 341 $__p_wre_eg ( dbv , eg ) 342 DB_ENV * dbv ; 343 u_t32_t eg ; 345 DB_FH * fhp ; 346 t ; 347 size_t t ; 348 * p ; 350 i(( t = 351 `__db_ame ( dbv , DB_APP_NONE , REP_EGENNAME , 0, NULL , & p )) != 0) 352 ( t ); 353 i(( t = `__os_ݒ ( dbv , p , 0, DB_OSO_CREATE | DB_OSO_TRUNC , 354 `__db_omode ( OWNER_RW ), & fhp )) == 0) { 355 i(( t = `__os_wre ( dbv , fhp , & eg , ( u_t32_t ), 356 & t )!0 || (( t = `__os_fsync ( dbv , fhp )) != 0)) 357 `__db_r ( dbv , t , "%s", p ); 358 () `__os_ohd ( dbv , fhp ); 360 `__os_ ( dbv , p ); 361 ( t ); 362 } } 372 $__p_g_ ( dbv , p ) 373 DB_ENV * dbv ; 374 REP * p ; 376 DB_FH * fhp ; 377 t ; 378 size_t t ; 379 * p ; 381 i(( t = 382 `__db_ame ( dbv , DB_APP_NONE , REP_GENNAME , 0, NULL , & p )) != 0) 383 ( t ); 387 i( `__os_exis ( dbv , p , NULL ) != 0) { 388 p -> g = 0; 389 i(( t = `__p_wre_g ( dbv , p -> g )) != 0) 390 r ; 395 i(( t = `__os_ݒ ( dbv , p , 0, 396 DB_OSO_RDONLY , `__db_omode ( OWNER_RW ), & fhp )) != 0) 397 r ; 398 i(( t = `__os_ad ( dbv , fhp , & p -> g , ( u_t32_t ), 399 & t )) < 0 || cnt == 0) 400 r1 ; 401 `RPRINT ( dbv , (dbenv, "Read in gen %lu", 402 ( u_lg ) p -> g )); 403 r1 : () `__os_ohd ( dbv , fhp ); 405 r : `__os_ ( dbv , p ); 406 ( t ); 407 } } 416 $__p_wre_g ( dbv , g ) 417 DB_ENV * dbv ; 418 u_t32_t g ; 420 DB_FH * fhp ; 421 t ; 422 size_t t ; 423 * p ; 425 i(( t = 426 `__db_ame ( dbv , DB_APP_NONE , REP_GENNAME , 0, NULL , & p )) != 0) 427 ( t ); 428 i(( t = `__os_ݒ ( dbv , p , 0, DB_OSO_CREATE | DB_OSO_TRUNC , 429 `__db_omode ( OWNER_RW ), & fhp )) == 0) { 430 i(( t = `__os_wre ( dbv , fhp , & g , ( u_t32_t ), 431 & t )!0 || (( t = `__os_fsync ( dbv , fhp )) != 0)) 432 `__db_r ( dbv , t , "%s", p ); 433 () `__os_ohd ( dbv , fhp ); 435 `__os_ ( dbv , p ); 436 ( t ); 437 } } @../rep/rep_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 16 #ifde HAVE_STATISTICS 17 __p_t_l __P (( DB_ENV *, u_t32_t )); 18 __p_t_s __P (( DB_ENV *, u_t32_t )); 19 __p_ __P (( DB_ENV *, DB_REP_STAT **, u_t32_t )); 28 $__p__ ( dbv , p , ags ) 29 DB_ENV * dbv ; 30 DB_REP_STAT ** p ; 31 u_t32_t ags ; 33 DB_THREAD_INFO * ; 34 t ; 36 `PANIC_CHECK ( dbv ); 37 `ENV_REQUIRES_CONFIG_XX ( 38 dbv , p_hd , "DB_ENV->p_", DB_INIT_REP ); 40 i(( t = `__db_fchk ( dbv , 41 "DB_ENV->p_", ags , DB_STAT_CLEAR )) != 0) 42 ( t ); 44 `ENV_ENTER ( dbv , ); 45 t = `__p_ ( dbv , p , ags ); 46 `ENV_LEAVE ( dbv , ); 48 ( t ); 49 } } 56 $__p_ ( dbv , p , ags ) 57 DB_ENV * dbv ; 58 DB_REP_STAT ** p ; 59 u_t32_t ags ; 61 DB_LOG * db ; 62 DB_REP * db_p ; 63 DB_REP_STAT * s ; 64 LOG * ; 65 REP * p ; 66 u_t32_t queued , tupde ; 67 dock , t ; 69 db_p = dbv -> p_hd ; 70 p = db_p -> gi ; 71 db = dbv -> lg_hd ; 72 = db -> gfo . imy ; 74 * p = NULL ; 77 i(( t = `__os_umloc ( dbv , ( DB_REP_STAT ), & s )) != 0) 78 ( t ); 85 dock = `FLD_ISSET ( p -> ags , REP_F_RECOVER_MASK ) ? 0 : 1; 86 `memy ( s , & p -> , (*stats)); 89 i( `F_ISSET ( p , REP_F_EPHASE1 )) 90 s -> _ei_us = 1; 91 i( `F_ISSET ( p , REP_F_EPHASE2 )) 92 s -> _ei_us = 2; 94 s -> _ei_nses = p -> ses ; 95 s -> _ei_cur_wr = p -> wr ; 96 s -> _ei_iܙy = p -> w_iܙy ; 97 s -> _ei_g = p -> w_g ; 98 s -> _ei_l = p -> w_l ; 99 s -> _ei_ves = p -> ves ; 100 s -> _ei_nves = p -> nves ; 101 s -> _ei_tbak = p -> w_tbak ; 104 s -> _v_id = p -> eid ; 105 s -> _v_iܙy = p -> iܙy ; 106 s -> _nses = p -> nses ; 107 s -> _ma = p -> ma_id ; 108 s -> _g = p -> g ; 109 s -> _eg = p -> eg ; 111 i( `F_ISSET ( p , REP_F_MASTER )) 112 s -> _us = DB_REP_MASTER ; 113 i( `F_ISSET ( p , REP_F_CLIENT )) 114 s -> _us = DB_REP_CLIENT ; 116 s -> _us = 0; 118 i( `LF_ISSET ( DB_STAT_CLEAR )) { 119 queued = p -> . _log_queued ; 120 tupde = p -> . _tup_come ; 121 `memt (& p -> , 0, (rep->stat)); 122 p -> . _log_queued =->. _log_queued_tٮ = 123 p -> . _log_queued_max = queued ; 124 p -> . _tup_come = tupde ; 131 i( dock ) 132 `MUTEX_LOCK ( dbv , p -> mtx_db ); 133 i( `F_ISSET ( p , REP_F_CLIENT )) { 134 s -> _xt_l = -> ady_l ; 135 s -> _wag_l = -> wag_l ; 136 s -> _xt_pg = p -> ady_pg ; 137 s -> _wag_pg = p -> wag_pg ; 139 i( `F_ISSET ( p , REP_F_MASTER )) { 140 `LOG_SYSTEM_LOCK ( dbv ); 141 s -> _xt_l = -> l ; 142 `LOG_SYSTEM_UNLOCK ( dbv ); 144 `ZERO_LSN ( s -> _xt_l ); 145 `ZERO_LSN ( s -> _wag_l ); 147 i( dock ) 148 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 150 * p = s ; 152 } } 161 $__p__t_ ( dbv , ags ) 162 DB_ENV * dbv ; 163 u_t32_t ags ; 165 DB_THREAD_INFO * ; 166 t ; 168 `PANIC_CHECK ( dbv ); 169 `ENV_REQUIRES_CONFIG_XX ( 170 dbv , p_hd , "DB_ENV->p__t", DB_INIT_REP ); 172 i(( t = `__db_fchk ( dbv , "DB_ENV->rep_stat_print", 173 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 174 ( t ); 176 `ENV_ENTER ( dbv , ); 177 t = `__p__t ( dbv , ags ); 178 `ENV_LEAVE ( dbv , ); 180 ( t ); 181 } } 190 $__p__t ( dbv , ags ) 191 DB_ENV * dbv ; 192 u_t32_t ags ; 194 u_t32_t ig_ags ; 195 t ; 197 ig_ags = ags ; 198 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 199 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 200 t = `__p_t_s ( dbv , ig_ags ); 201 i( ags =0 || t != 0) 202 ( t ); 205 i( `LF_ISSET ( DB_STAT_ALL ) && 206 ( t = `__p_t_l ( dbv , ig_ags )) != 0) 207 ( t ); 210 } } 217 $__p_t_s ( dbv , ags ) 218 DB_ENV * dbv ; 219 u_t32_t ags ; 221 DB_REP_STAT * ; 222 is_ , t ; 223 * p ; 225 i(( t = `__p_ ( dbv , & , ags )) != 0) 226 ( t ); 228 i( `LF_ISSET ( DB_STAT_ALL )) 229 `__db_msg ( dbv , "Defaulteplicationegion information:"); 230 is_ = 0; 231 -> _us ) { 232 DB_REP_MASTER : 233 `__db_msg ( dbv , 236 DB_REP_CLIENT : 237 `__db_msg ( dbv , 239 is_ = 1; 242 `__db_msg ( dbv , 247 `__db_msg ( dbv , "%lu/%lu\t%s", 248 ( u_lg ) -> _xt_l . fe , (u_lg)->_xt_l. offt , 249 is_ ? "Next LSNxpected" : "Next LSNo be used"); 250 `__db_msg ( dbv , "%lu/%lu\t%s", 251 ( u_lg ) -> _wag_l . fe , (u_lg)->_wag_l. offt , 252 -> _wag_l . fe == 0 ? 256 `__db_dl ( dbv , "Nexgnumbxed.", ( u_lg ) -> _xt_pg ); 257 p = -> _wag_pg = PGNO_INVALID ? 260 `__db_msg ( dbv , "%lu\t%s", ( u_lg ) -> _wag_pg , p ); 261 `__db_dl ( dbv , "Number of duplicate master conditions detected.", 262 ( u_lg ) -> _dupmas ); 263 i( -> _v_id ! DB_EID_INVALID ) 264 `__db_dl ( dbv , "CuvmID", ( u_lg ) -> _v_id ); 266 `__db_msg ( dbv , "No currentnvironment ID"); 267 `__db_dl ( dbv , 268 "Cuvmiܙy", ( u_lg ) -> _v_iܙy ); 269 `__db_dl ( dbv , "Cugiڂumb", ( u_lg ) -> _g ); 270 `__db_dl ( dbv , 271 "Cuei giڂumb", ( u_lg ) -> _eg ); 272 `__db_dl ( dbv , "Number of duplicateogecordseceived", 273 ( u_lg ) -> _log_duid ); 274 `__db_dl ( dbv , "Number ofogecords currently queued", 275 ( u_lg ) -> _log_queued ); 276 `__db_dl ( dbv , "Maximumumber ofogecordsver queuedt once", 277 ( u_lg ) -> _log_queued_max ); 278 `__db_dl ( dbv , "Totalumber ofogecords queued", 279 ( u_lg ) -> _log_queued_tٮ ); 280 `__db_dl ( dbv , 282 ( u_lg ) -> _log_cds ); 283 `__db_dl ( dbv , "Number ofogecords missedndequested", 284 ( u_lg ) -> _log_queed ); 285 i( -> _ma ! DB_EID_INVALID ) 286 `__db_dl ( dbv , "Cuma ID", ( u_lg ) -> _ma ); 288 `__db_msg ( dbv , "No current master ID"); 289 `__db_dl ( dbv , "Number ofimeshe master has changed", 290 ( u_lg ) -> _ma_chges ); 291 `__db_dl ( dbv , 293 ( u_lg ) -> _msgs_badg ); 294 `__db_dl ( dbv , "Number of messageseceivedndrocessed", 295 ( u_lg ) -> _msgs_osd ); 296 `__db_dl ( dbv , "Number of messages ignored dueoendingecovery", 297 ( u_lg ) -> _msgs_cov ); 298 `__db_dl ( dbv , "Number of failed message sends", 299 ( u_lg ) -> _msgs_nd_us ); 300 `__db_dl ( dbv , "Numb omesge", ( u_lg ) -> _msgs_ ); 301 `__db_dl ( dbv , 302 "Numb ow smesgeived", ( u_lg ) -> _wses ); 303 `__db_dl ( dbv , 305 ( u_lg ) -> _nses ); 306 `__db_dl ( dbv , "Tnsmissiچimed", ( u_lg ) -> _hrَes ); 307 `__db_dl ( dbv , "Number of outdated conditions detected", 308 ( u_lg ) -> _outded ); 309 `__db_dl ( dbv , "Number of duplicateageecordseceived", 310 ( u_lg ) -> _pg_duid ); 311 `__db_dl ( dbv , "Number ofageecordseceivedndddedo databases", 312 ( u_lg ) -> _pg_cds ); 313 `__db_dl ( dbv , "Number ofageecords missedndequested", 314 ( u_lg ) -> _pg_queed ); 315 i( -> _tup_come == 0) 316 `__db_msg ( dbv , "Startup incomplete"); 318 `__db_msg ( dbv , "Startup complete"); 319 `__db_dl ( dbv , 320 "Numb oiڠd", ( u_lg ) -> _txns_d ); 322 `__db_dl ( dbv , "Number of startsync messages delayed", 323 ( u_lg ) -> _tsync_dayed ); 325 `__db_dl ( dbv , "Numb oeiڠhd", ( u_lg ) -> _eis ); 326 `__db_dl ( dbv , 327 "Numb oeiڠw", ( u_lg ) -> _eis_w ); 329 i( -> _ei_us == 0) { 330 `__db_msg ( dbv , "Nolection inrogress"); 331 i( -> _ei_c > 0 || sp-> _ei_uc > 0) 332 `__db_msg ( dbv , 334 ( u_lg ) -> _ei_c , 335 ( u_lg ) -> _ei_uc ); 337 `__db_dl ( dbv , "Currentlectionhase", 338 ( u_lg ) -> _ei_us ); 339 `__db_dl ( dbv , "Election winner", 340 ( u_lg ) -> _ei_cur_wr ); 341 `__db_dl ( dbv , "Election generationumber", 342 ( u_lg ) -> _ei_g ); 343 `__db_msg ( dbv , "%lu/%lu\tMaximum LSN oflection winner", 344 ( u_lg ) -> _ei_l . fe , 345 ( u_lg ) -> _ei_l . offt ); 346 `__db_dl ( dbv , 348 ( u_lg ) -> _ei_nses ); 349 `__db_dl ( dbv , "Number of voteseededo winnlection", 350 ( u_lg ) -> _ei_nves ); 351 `__db_dl ( dbv , 352 "Eiڅriܙy", ( u_lg ) -> _ei_iܙy ); 353 `__db_dl ( dbv , "Electioniebreaker value", 354 ( u_lg ) -> _ei_tbak ); 355 `__db_dl ( dbv , "Voteseceivedhislectionound", 356 ( u_lg ) -> _ei_ves ); 358 `__db_dl ( dbv , "Number of bulk buffer sendsriggered by full buffer", 359 ( u_lg ) -> _bulk_fls ); 360 `__db_dl ( dbv , "Number of singleecordsxceeding bulk buffer size", 361 ( u_lg ) -> _bulk_ovows ); 362 `__db_dl ( dbv , "Number ofecordsddedo bulk buffer", 363 ( u_lg ) -> _bulk_cds ); 364 `__db_dl ( dbv , "Number of bulk buffers sent", 365 ( u_lg ) -> _bulk_srs ); 366 `__db_dl ( dbv , "Number ofe-request messageseceived", 367 ( u_lg ) -> __ques ); 368 `__db_dl ( dbv , 370 ( u_lg ) -> __svc_miss ); 371 `__db_dl ( dbv , "Number ofequest messageseceived byhis client", 372 ( u_lg ) -> __svc_q ); 374 `__os_u ( dbv , ); 377 } } 384 $__p_t_l ( dbv , ags ) 385 DB_ENV * dbv ; 386 u_t32_t ags ; 388 cڡ FN p_ [] = { 389 { REP_F_CLIENT , "REP_F_CLIENT" }, 390 { REP_F_EPHASE1 , "REP_F_EPHASE1" }, 391 { REP_F_EPHASE2 , "REP_F_EPHASE2" }, 392 { REP_F_INREPELECT , "REP_F_INREPELECT" }, 393 { REP_F_MASTER , "REP_F_MASTER" }, 394 { REP_F_MASTERELECT , "REP_F_MASTERELECT" }, 395 { REP_F_NOARCHIVE , "REP_F_NOARCHIVE" }, 396 { REP_F_READY_API , "REP_F_READY_API" }, 397 { REP_F_READY_MSG , "REP_F_READY_MSG" }, 398 { REP_F_READY_OP , "REP_F_READY_OP" }, 399 { REP_F_RECOVER_LOG , "REP_F_RECOVER_LOG" }, 400 { REP_F_RECOVER_PAGE , "REP_F_RECOVER_PAGE" }, 401 { REP_F_RECOVER_UPDATE , "REP_F_RECOVER_UPDATE" }, 402 { REP_F_RECOVER_VERIFY , "REP_F_RECOVER_VERIFY" }, 403 { REP_F_TALLY , "REP_F_TALLY" }, 404 { 0, NULL } 406 cڡ FN dbp_ [] = { 407 { DBREP_OPENFILES , "DBREP_OPENFILES" }, 408 { 0, NULL } 410 DB_LOG * db ; 411 DB_REP * db_p ; 412 LOG * ; 413 REGENV * nv ; 414 REGINFO * f ; 415 REP * p ; 416 time_buf [ CTIME_BUFLEN ]; 418 db_p = dbv -> p_hd ; 419 p = db_p -> gi ; 420 f = dbv -> gfo ; 421 nv = f -> imy ; 423 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 424 `__db_msg ( dbv , "DB_REP handle information:"); 426 i( db_p -> p_db = NULL ) 427 `STAT_ISSET ("Bookkpg daba", db_p -> p_db ); 429 () `__db__t ( db_p -> p_db , ags ); 431 `__db_ags ( dbv , NULL , db_p -> ags , dbp_ , NULL, "\tFlags"); 433 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 434 `__db_msg ( dbv , "REP handle information:"); 435 `__mux_t_debug_sg ( dbv , 436 "Rlitiڄegi mux", p -> mtx_gi , ags ); 437 `__mux_t_debug_sg ( dbv , 438 "Bookkpg daba mux", p -> mtx_db , ags ); 440 `STAT_LONG ("EnvmID", p -> eid ); 441 `STAT_LONG ("ManvmID", p -> ma_id ); 442 `STAT_ULONG ("Ei gi", p -> eg ); 443 `STAT_ULONG ("Ei giڂumb", p -> g ); 444 `STAT_ULONG ("La giڂumb ilog", p -> cov_g ); 445 `STAT_LONG ("Sod f ses", p -> ases ); 446 `STAT_LONG ("Se group", p -> nses ); 447 `STAT_LONG ("Veeded f܃i", p -> nves ); 448 `STAT_LONG ("Priܙy iei", p -> iܙy ); 449 `__db_dlbys ( dbv , "Limit on data sent in single call", 450 p -> gbys , ( u_lg )0,-> bys ); 451 `STAT_ULONG ("Reque g", p -> que_g ); 452 `STAT_ULONG ("Maximum g", p -> max_g ); 454 `STAT_ULONG ("Cr_oc_msg", p -> msg_th ); 455 `STAT_ULONG ("Libry hd cou", p -> hd_t ); 456 `STAT_ULONG ("Mui- oti cou", p -> _t ); 457 `__db_msg ( dbv , "%.24s\tRecoveryimestamp", 458 nv -> p_timeamp == 0 ? 459 "0" : `__db_ime (& nv -> p_timeamp , time_buf )); 461 `STAT_LONG ("Sehrd from", p -> ses ); 462 `STAT_LONG ("Cuwr", p -> wr ); 463 `STAT_LONG ("Wøiܙy", p -> w_iܙy ); 464 `STAT_ULONG ("Wøgi", p -> w_g ); 465 `STAT_LSN ("WøLSN", & p -> w_l ); 466 `STAT_LONG ("Wøtbak", p -> w_tbak ); 467 `STAT_LONG ("Vef܁hise", p -> ves ); 469 `__db_ags ( dbv , NULL , p -> ags , p_ , NULL, "\tFlags"); 471 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 472 `__db_msg ( dbv , "LOGeplication information:"); 473 `MUTEX_LOCK ( dbv , p -> mtx_db ); 474 db = dbv -> lg_hd ; 475 = ( LOG *) db -> gfo . imy ; 476 `STAT_LSN ("Fogecdᔇ g", & -> wag_l ); 477 `STAT_LSN ("LSN wagvify", & -> vify_l ); 478 `STAT_LSN ("Maximum LSNequeed", & -> max_wa_l ); 479 `STAT_ULONG ("Recdtwa befܐqueg", -> wa_cs ); 480 `STAT_ULONG ("Recdived whwag", -> rcvd_cs ); 481 `STAT_LSN ("NexLSNxed", & -> ady_l ); 482 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 485 } } 490 $__p__ ( dbv , p , ags ) 491 DB_ENV * dbv ; 492 DB_REP_STAT ** p ; 493 u_t32_t ags ; 495 `COMPQUIET ( p , NULL ); 496 `COMPQUIET ( ags , 0); 498 ( `__db__n_but ( dbv )); 499 } } 502 $__p__t_ ( dbv , ags ) 503 DB_ENV * dbv ; 504 u_t32_t ags ; 506 `COMPQUIET ( ags , 0); 508 ( `__db__n_but ( dbv )); 509 } } @../rep/rep_stub.c 9 #ide HAVE_REPLICATION 10 ~"db_cfig.h " 12 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/db_am.h " 20 __db_nܕ __P (( DB_ENV *)); 27 $__db_nܕ ( dbv ) 28 DB_ENV * dbv ; 30 `__db_rx ( dbv , 32 ( DB_OPNOTSUP ); 33 } } 36 $__db_p_r ( dbp , checkg , checklock , tu_now ) 37 DB * dbp ; 38 checkg , checklock , tu_now ; 40 `COMPQUIET ( checkg , 0); 41 `COMPQUIET ( checklock , 0); 42 `COMPQUIET ( tu_now , 0); 43 ( `__db_nܕ ( dbp -> dbv )); 44 } } 47 $__v_p_r ( dbv , checklock ) 48 DB_ENV * dbv ; 49 checklock ; 51 `COMPQUIET ( checklock , 0); 52 ( `__db_nܕ ( dbv )); 53 } } 56 $__v_db_p_ex ( dbv ) 57 DB_ENV * dbv ; 59 ( `__db_nܕ ( dbv )); 60 } } 63 $___p_r ( dbv ) 64 DB_ENV * dbv ; 66 ( `__db_nܕ ( dbv )); 67 } } 70 $___p_ex ( dbv ) 71 DB_ENV * dbv ; 73 ( `__db_nܕ ( dbv )); 74 } } 77 $__p_bulk_mesge ( dbv , bulkp , h , lp , dbt , ags ) 78 DB_ENV * dbv ; 79 REP_BULK * bulkp ; 80 REP_THROTTLE * h ; 81 DB_LSN * lp ; 82 cڡ DBT * dbt ; 83 u_t32_t ags ; 85 `COMPQUIET ( bulkp , NULL ); 86 `COMPQUIET ( h , NULL ); 87 `COMPQUIET ( lp , NULL ); 88 `COMPQUIET ( dbt , NULL ); 89 `COMPQUIET ( ags , 0); 90 ( `__db_nܕ ( dbv )); 91 } } 94 $__p_v_esh ( dbv ) 95 DB_ENV * dbv ; 97 `COMPQUIET ( dbv , NULL ); 99 } } 102 $__p_e ( dbv , nses , nves , ags ) 103 DB_ENV * dbv ; 104 nses , nves ; 105 u_t32_t ags ; 107 `COMPQUIET ( nses , 0); 108 `COMPQUIET ( nves , 0); 109 `COMPQUIET ( ags , 0); 110 ( `__db_nܕ ( dbv )); 111 } } 114 $__p_ush ( dbv ) 115 DB_ENV * dbv ; 117 ( `__db_nܕ ( dbv )); 118 } } 121 $__p_a_check ( dbv , esh ) 122 DB_ENV * dbv ; 123 esh ; 125 `COMPQUIET ( esh , 0); 126 ( `__db_nܕ ( dbv )); 127 } } 130 $__p_a_expe ( dbv , locked ) 131 DB_ENV * dbv ; 132 locked ; 134 `COMPQUIET ( locked , 0); 135 ( `__db_nܕ ( dbv )); 136 } } 139 $__p_t_a ( dbv , ock_s_ , ags ) 140 DB_ENV * dbv ; 141 u_t32_t ock_s_ , ags ; 143 `COMPQUIET ( ock_s_ , 0); 144 `COMPQUIET ( ags , 0); 145 ( `__db_nܕ ( dbv )); 146 } } 149 $__p_t_nses ( dbv , n ) 150 DB_ENV * dbv ; 151 n ; 153 `COMPQUIET ( n , 0); 154 ( `__db_nܕ ( dbv )); 155 } } 158 $__p_g_nses ( dbv , n ) 159 DB_ENV * dbv ; 160 * n ; 162 `COMPQUIET ( n , NULL ); 163 ( `__db_nܕ ( dbv )); 164 } } 167 $__p_t_iܙy ( dbv , iܙy ) 168 DB_ENV * dbv ; 169 iܙy ; 171 `COMPQUIET ( iܙy , 0); 172 ( `__db_nܕ ( dbv )); 173 } } 176 $__p_g_iܙy ( dbv , iܙy ) 177 DB_ENV * dbv ; 178 * iܙy ; 180 `COMPQUIET ( iܙy , NULL ); 181 ( `__db_nܕ ( dbv )); 182 } } 185 $__p_t_timeout ( dbv , which , timeout ) 186 DB_ENV * dbv ; 187 which ; 188 db_timeout_t timeout ; 190 `COMPQUIET ( which , 0); 191 `COMPQUIET ( timeout , 0); 192 ( `__db_nܕ ( dbv )); 193 } } 196 $__p_g_timeout ( dbv , which , timeout ) 197 DB_ENV * dbv ; 198 which ; 199 db_timeout_t * timeout ; 201 `COMPQUIET ( which , 0); 202 `COMPQUIET ( timeout , NULL ); 203 ( `__db_nܕ ( dbv )); 204 } } 207 $__p_g_cfig ( dbv , which , p ) 208 DB_ENV * dbv ; 209 u_t32_t which ; 210 * p ; 212 `COMPQUIET ( which , 0); 213 `COMPQUIET ( p , NULL ); 214 ( `__db_nܕ ( dbv )); 215 } } 218 $__p_t_cfig ( dbv , which , ) 219 DB_ENV * dbv ; 220 u_t32_t which ; 221 ; 223 `COMPQUIET ( which , 0); 224 `COMPQUIET ( , 0); 225 ( `__db_nܕ ( dbv )); 226 } } 229 $__p_g_lim ( dbv , gby , by ) 230 DB_ENV * dbv ; 231 u_t32_t * gby , * by ; 233 `COMPQUIET ( gby , NULL ); 234 `COMPQUIET ( by , NULL ); 235 ( `__db_nܕ ( dbv )); 236 } } 239 $__p_nrchive ( dbv ) 240 DB_ENV * dbv ; 242 `COMPQUIET ( dbv , NULL ); 244 } } 247 $__p_ݒ ( dbv ) 248 DB_ENV * dbv ; 250 `COMPQUIET ( dbv , NULL ); 252 } } 255 $__p_eo ( dbv ) 256 DB_ENV * dbv ; 258 ( `__db_nܕ ( dbv )); 259 } } 262 $__p_oss_mesge ( dbv , cڌ , c , eid , t_lp ) 263 DB_ENV * dbv ; 264 DBT * cڌ , * c ; 265 eid ; 266 DB_LSN * t_lp ; 268 `COMPQUIET ( cڌ , NULL ); 269 `COMPQUIET ( c , NULL ); 270 `COMPQUIET ( eid , 0); 271 `COMPQUIET ( t_lp , NULL ); 272 ( `__db_nܕ ( dbv )); 273 } } 276 $__p_nd_mesge ( dbv , eid , y , lp , db , logags , pags ) 277 DB_ENV * dbv ; 278 eid ; 279 u_t32_t y ; 280 DB_LSN * lp ; 281 cڡ DBT * db ; 282 u_t32_t logags , pags ; 284 `COMPQUIET ( eid , 0); 285 `COMPQUIET ( y , 0); 286 `COMPQUIET ( lp , NULL ); 287 `COMPQUIET ( db , NULL ); 288 `COMPQUIET ( logags , 0); 289 `COMPQUIET ( pags , 0); 290 ( `__db_nܕ ( dbv )); 291 } } 294 $__p_t_lim ( dbv , gbys , bys ) 295 DB_ENV * dbv ; 296 u_t32_t gbys , bys ; 298 `COMPQUIET ( gbys , 0); 299 `COMPQUIET ( bys , 0); 300 ( `__db_nܕ ( dbv )); 301 } } 304 $__p_t_t ( dbv , eid , f_nd ) 305 DB_ENV * dbv ; 306 eid ; 307 (* f_nd `__P (( DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, 308 , u_t32_t )); 310 `COMPQUIET ( eid , 0); 311 `COMPQUIET ( f_nd , NULL ); 312 ( `__db_nܕ ( dbv )); 313 } } 316 $__p_t_que ( dbv , m , max ) 317 DB_ENV * dbv ; 318 u_t32_t m , max ; 320 `COMPQUIET ( m , 0); 321 `COMPQUIET ( max , 0); 322 ( `__db_nܕ ( dbv )); 323 } } 326 $__p_t ( dbv , dbt , ags ) 327 DB_ENV * dbv ; 328 DBT * dbt ; 329 u_t32_t ags ; 331 `COMPQUIET ( dbt , NULL ); 332 `COMPQUIET ( ags , 0); 333 ( `__db_nܕ ( dbv )); 334 } } 337 $__p__ ( dbv , p , ags ) 338 DB_ENV * dbv ; 339 DB_REP_STAT ** p ; 340 u_t32_t ags ; 342 `COMPQUIET ( p , NULL ); 343 `COMPQUIET ( ags , 0); 344 ( `__db_nܕ ( dbv )); 345 } } 348 $__p__t_ ( dbv , ags ) 349 DB_ENV * dbv ; 350 u_t32_t ags ; 352 `COMPQUIET ( ags , 0); 353 ( `__db_nܕ ( dbv )); 354 } } 357 $__p__t ( dbv , ags ) 358 DB_ENV * dbv ; 359 u_t32_t ags ; 361 `COMPQUIET ( ags , 0); 362 ( `__db_nܕ ( dbv )); 363 } } 366 $__p_sync ( dbv , ags ) 367 DB_ENV * dbv ; 368 u_t32_t ags ; 370 `COMPQUIET ( ags , 0); 371 ( `__db_nܕ ( dbv )); 372 } } @../rep/rep_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 15 ~"dbc/mp.h " 16 ~"dbc/txn.h " 18 #ifde REP_DIAGNOSTIC 19 ~"dbc/db_ge.h " 20 ~"dbc/f.h " 21 ~"dbc/b.h " 22 ~"dbc/hash.h " 23 ~"dbc/qam.h " 31 #TIMESTAMP_CHECK ( dbv , ts , nv ) do { \ 32 i( nv -> _timeamp != 0 && \ 33 nv -> _timeamp + DB_REGENV_TIMEOUT < ts ) { \ 34 `REP_SYSTEM_LOCK ( dbv ); \ 35 `F_CLR ( nv , DB_REGENV_REPLOCKED ); \ 36 nv -> _timeamp = 0; \ 37 `REP_SYSTEM_UNLOCK ( dbv ); \ 39 } 0) ) 41 __p_lockout_t __P (( DB_ENV *, REP *, u_t32_t *, u_int32_t, 42 cڡ *, u_t32_t )); 43 __p_wma_emy __P (( DB_ENV *, )); 44 #ifde REP_DIAGNOSTIC 45 __p_t_logmsg __P (( DB_ENV *, cڡ DBT *, DB_LSN *)); 59 $__p_bulk_mesge ( dbv , bulk , h , l , dbt , ags ) 60 DB_ENV * dbv ; 61 REP_BULK * bulk ; 62 REP_THROTTLE * h ; 63 DB_LSN * l ; 64 cڡ DBT * dbt ; 65 u_t32_t ags ; 67 DB_REP * db_p ; 68 REP * p ; 69 t ; 70 u_t32_t csize , tyme ; 71 u_t8_t * p ; 73 db_p = dbv -> p_hd ; 74 p = db_p -> gi ; 75 t = 0; 80 csize = dbt -> size + ( DB_LSN ) + (dbt->size); 86 `MUTEX_LOCK ( dbv , p -> mtx_db ); 87 `FLD_ISSET (*( bulk -> ag ), BULK_XMIT )) { 88 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 89 `__os_p ( dbv , 1, 0); 90 `MUTEX_LOCK ( dbv , p -> mtx_db ); 99 i( csize > bulk -> n ) { 100 `RPRINT ( dbv , (dbenv, 102 csize ,ecsize, bulk -> n )); 103 `STAT ( p -> . _bulk_ovows ++); 104 () `__p_nd_bulk ( dbv , bulk , ags ); 108 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 109 ( DB_REP_BULKOVF ); 117 csize + *( bulk -> of > bulk-> n ) { 118 `RPRINT ( dbv , (dbenv, 120 ( u_lg ) csize , (u_long)recsize, 121 ( u_lg ) bulk -> n , (u_long)bulk->len)); 122 `STAT ( p -> . _bulk_fls ++); 123 i(( t = `__p_nd_bulk ( dbv , bulk , ags )) != 0) { 124 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 125 ( t ); 136 i( bulk -> ty = REP_BULK_LOG ) 137 tyme = REP_LOG_MORE ; 139 tyme = REP_PAGE_MORE ; 140 i( h ! NULL ) { 141 i(( t = `__p_nd_thrَe ( dbv , 142 bulk -> eid , h , REP_THROTTLE_ONLY , ags )) != 0) { 143 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 144 ( t ); 146 i( h -> ty = tyme ) { 147 `RPRINT ( dbv , (dbenv, 149 ( u_lg ) csize , (u_long)recsize)); 150 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 151 ( t ); 164 p = bulk -> addr + *(bulk-> of ); 165 `memy ( p , & dbt -> size , (dbt->size)); 166 p +( dbt -> size ); 172 `memy ( p , l , ( DB_LSN )); 173 `RPRINT ( dbv , (dbenv, 175 ( u_lg ) l -> fe , (u_lg-> offt , (u_lg) dbt -> size , 176 `P_TO_ULONG ( p ))); 177 p +( DB_LSN ); 182 i(*( bulk -> of ) == 0) 183 bulk -> l = *lsn; 187 `memy ( p , dbt -> da , dbt-> size ); 188 p + dbt -> size ; 189 *( bulk -> of ( u_t ) p - (u_t)bulk-> addr ; 190 `STAT ( p -> . _bulk_cds ++); 194 i( `LF_ISSET ( REPCTL_PERM )) { 195 `RPRINT ( dbv , (dbenv, 197 t = `__p_nd_bulk ( dbv , bulk , ags ); 199 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 200 ( t ); 202 } } 213 $__p_nd_bulk ( dbv , bulkp , lags ) 214 DB_ENV * dbv ; 215 REP_BULK * bulkp ; 216 u_t32_t lags ; 218 DB_REP * db_p ; 219 REP * p ; 220 DBT dbt ; 221 t ; 226 i(*( bulkp -> of ) == 0) 229 db_p = dbv -> p_hd ; 230 p = db_p -> gi ; 235 `FLD_SET (*( bulkp -> ag ), BULK_XMIT ); 236 `DB_INIT_DBT ( dbt , bulkp -> addr , *(bulkp-> of )); 237 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 238 `RPRINT ( dbv , (dbenv, 239 "nd_bulk: Sd %d (0x%xbulk bufbys", dbt . size , dbt.size)); 244 `STAT ( p -> . _bulk_srs ++); 245 i(( t = `__p_nd_mesge ( dbv , 246 bulkp -> eid , bulkp-> ty , &bulkp-> l , & dbt , lags , 0)) != 0) 247 t = DB_REP_UNAVAIL ; 249 `MUTEX_LOCK ( dbv , p -> mtx_db ); 253 *( bulkp -> of ) = 0; 254 `FLD_CLR (*( bulkp -> ag ), BULK_XMIT ); 255 ( t ); 256 } } 268 $__p_bulk_loc ( dbv , bulkp , eid , of , ag , ty ) 269 DB_ENV * dbv ; 270 REP_BULK * bulkp ; 271 eid ; 272 u_t * of ; 273 u_t32_t * ag , ty ; 275 t ; 277 `memt ( bulkp , 0, ( REP_BULK )); 278 * of = * ag = 0; 279 bulkp -> n = MEGABYTE ; 280 i(( t = `__os_mloc ( dbv , bulkp -> n , &bulkp-> addr )) != 0) 281 ( t ); 282 bulkp -> of = offp; 283 bulkp -> ty =ype; 284 bulkp -> eid =id; 285 bulkp -> ag = flagsp; 286 ( t ); 287 } } 296 $__p_bulk_ ( dbv , bulkp , ags ) 297 DB_ENV * dbv ; 298 REP_BULK * bulkp ; 299 u_t32_t ags ; 301 DB_REP * db_p ; 302 t ; 304 db_p = dbv -> p_hd ; 306 `MUTEX_LOCK ( dbv , db_p -> gi -> mtx_db ); 307 t = `__p_nd_bulk ( dbv , bulkp , ags ); 308 `MUTEX_UNLOCK ( dbv , db_p -> gi -> mtx_db ); 309 `__os_ ( dbv , bulkp -> addr ); 310 ( t ); 311 } } 322 $__p_nd_mesge ( dbv , eid , y , lp , dbt , lags , pags ) 323 DB_ENV * dbv ; 324 eid ; 325 u_t32_t y ; 326 DB_LSN * lp ; 327 cڡ DBT * dbt ; 328 u_t32_t lags , pags ; 330 DB_LOG * db ; 331 DB_REP * db_p ; 332 DBT cdbt , s_dbt ; 333 LOG * ; 334 REP * p ; 335 REP_CONTROL l ; 336 REP_OLD_CONTROL ol ; 337 t ; 338 u_t32_t myags , y ; 340 db_p = dbv -> p_hd ; 341 p = db_p -> gi ; 342 db = dbv -> lg_hd ; 343 = db -> gfo . imy ; 344 t = 0; 346 #i `defed ( DEBUG_ROP || defed( DEBUG_WOP ) 347 i( db_p -> nd = NULL ) 352 `memt (& l , 0, (cntrl)); 353 `memt (& ol , 0, (ocntrl)); 354 i( lp = NULL ) 355 `ZERO_LSN ( l . l ); 357 l . l = * lp ; 361 i( p -> vsi = DB_REPVERSION ) 362 l . y = y ; 363 i( p -> vsi < DB_REPVERSION ) { 364 l . y = `__p_msg_to_d ( p -> vsi , y ); 365 `RPRINT ( dbv , (dbenv, 367 ( u_lg ) y , (u_lg) p -> vsi , 368 ( u_lg ) l . y )); 369 i( l . y = REP_INVALID ) 370 ( t ); 372 `__db_rx ( dbv , 374 ( u_lg ) p -> vsi , (u_lg) DB_REPVERSION ); 375 ( `__db_nic ( dbv , EINVAL )); 377 l . ags = lags ; 378 l . p_vsi = p -> vsi ; 379 l . log_vsi = -> rsi . vsi ; 380 l . g = p ->gen; 383 i( dbt = NULL ) { 384 `memt (& s_dbt , 0, ( DBT )); 385 dbt = & s_dbt ; 398 myags = pags ; 399 i( `FLD_ISSET ( lags , REPCTL_PERM )) 400 myags | DB_REP_PERMANENT ; 401 i( y ! REP_LOG || `FLD_ISSET ( lags , REPCTL_RESEND )) 402 myags | DB_REP_NOBUFFER ; 403 i( y = REP_LOG && ! `FLD_ISSET ( lags , REPCTL_PERM )) { 409 `memy (& y , dbt -> da , (rectype)); 410 i( y = DB___txn_g ||ey = DB___txn_ckp ) 411 `F_SET (& l , REPCTL_PERM ); 417 i( `F_ISSET ( p , REP_F_GROUP_ESTD )) 418 `F_SET (& l , REPCTL_GROUP_ESTD ); 424 i( p -> vsi ! DB_REPVERSION ) 425 `FLD_CLR ( myags , DB_REP_ANYWHERE ); 435 i( `IS_REP_MASTER ( dbv && `IS_USING_LEASES (dbenv) && 436 `FLD_ISSET ( lags , REPCTL_PERM )) { 437 `F_SET (& l , REPCTL_LEASE ); 438 `DB_ASSERT ( dbv , p -> vsi = DB_REPVERSION ); 439 `__os_gtime ( dbv , & l . msg_time ); 442 `REP_PRINT_MESSAGE ( dbv , eid , & l , "p_nd_mesge", myags ); 443 #ifde REP_DIAGNOSTIC 444 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REPLICATION && y = REP_LOG ) 445 `__p_t_logmsg ( dbv , dbt , lp ); 451 `DB_ASSERT ( dbv , ! `FLD_ISSET ( myags , DB_REP_PERMANENT ) || 452 ! `IS_ZERO_LSN ( l . l )); 457 `memt (& cdbt , 0, (cdbt)); 458 i( p -> vsi < DB_REPVERSION ) { 459 ol . p_vsi = l .rep_version; 460 ol . log_vsi = l .log_version; 461 ol . l = l .lsn; 462 ol . y = l .rectype; 463 ol . g = l .gen; 464 ol . ags = l .flags; 465 cdbt . da = & ol ; 466 cdbt . size = ( ol ); 468 cdbt . da = & l ; 469 cdbt . size = ( l ); 477 t = db_p -> `nd ( dbv , & cdbt , dbt , & l . l , eid , myags ); 484 i( t != 0) { 485 `RPRINT ( dbv , (dbenv, 486 "p_nd_funiڄued: %d", t )); 487 #ifde HAVE_STATISTICS 488 p -> . _msgs_nd_us ++; 490 p -> . _msgs_ ++; 494 ( t ); 495 } } 497 #ifde REP_DIAGNOSTIC 504 $__p_t_logmsg ( dbv , logdbt , lp ) 505 DB_ENV * dbv ; 506 cڡ DBT * logdbt ; 507 DB_LSN * lp ; 510 size_t absize ; 511 (** ab ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 513 i( ab = NULL ) { 515 () `__bam__t ( dbv , & ab , & absize ); 516 () `__d__t ( dbv , & ab , & absize ); 517 () `__db__t ( dbv , & ab , & absize ); 518 () `__dbg__t ( dbv , & ab , & absize ); 519 () `__f__t ( dbv , & ab , & absize ); 520 () `__ham__t ( dbv , & ab , & absize ); 521 () `__qam__t ( dbv , & ab , & absize ); 522 () `__txn__t ( dbv , & ab , & absize ); 525 () `__db_dich ( dbv , 526 ab , absize , ( DBT *) logdbt , lp , DB_TXN_PRINT , NULL ); 527 } } 543 $__p_w_ma ( dbv , l , eid ) 544 DB_ENV * dbv ; 545 REP_CONTROL * l ; 546 eid ; 548 DB_LOG * db ; 549 DB_LOGC * logc ; 550 DB_LSN f_l , l ; 551 DB_REP * db_p ; 552 DBT dbt ; 553 LOG * ; 554 REGENV * nv ; 555 REGINFO * f ; 556 REP * p ; 557 db_timeout_t a_to ; 558 u_t32_t unud ; 559 chge , do_q , lockout , t , t_t ; 561 db_p = dbv -> p_hd ; 562 p = db_p -> gi ; 563 db = dbv -> lg_hd ; 564 = db -> gfo . imy ; 565 t = 0; 566 logc = NULL ; 567 lockout = 0; 568 `REP_SYSTEM_LOCK ( dbv ); 569 chge = p -> g ! l ->g ||-> ma_id ! eid ; 570 i( chge ) { 583 i( `F_ISSET ( p , REP_F_READY_MSG )) 584 lckout ; 586 i(( t = `__p_lockout_msg ( dbv , p , 1)) != 0) 587 ck ; 589 lockout = 1; 596 i( `IS_USING_LEASES ( dbv ) && 597 (( a_to = `__p_a_watime ( dbv )) != 0)) { 598 `REP_SYSTEM_UNLOCK ( dbv ); 599 `__os_p ( dbv , 0, ( u_lg ) a_to ); 600 `REP_SYSTEM_LOCK ( dbv ); 603 i(( t = `__v__c ( dbv , l -> log_vsi )) != 0) 604 ck ; 606 `REP_SYSTEM_UNLOCK ( dbv ); 608 `MUTEX_LOCK ( dbv , p -> mtx_db ); 609 -> wa_cs = p -> que_g ; 610 -> rcvd_cs = 0; 611 `ZERO_LSN ( -> vify_l ); 612 `ZERO_LSN ( -> wag_l ); 613 `ZERO_LSN ( -> max_wa_l ); 618 i( db_p -> p_db = NULL && 619 ( t = `__p__db ( dbv , 0, REP_DB )) != 0) { 620 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 621 r ; 624 `REP_SYSTEM_LOCK ( dbv ); 625 i( `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP )) { 626 t = `__p__nup ( dbv , p , DB_FORCE ); 634 `F_CLR ( p , REP_F_RECOVER_MASK ); 636 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 637 i( t != 0) { 639 ck ; 641 i(( t = `__db_un ( db_p -> p_db , NULL , & unud )) != 0) 642 ck ; 648 `__p_e_de ( dbv , p ); 649 `RPRINT ( dbv , (dbenv, 651 ( u_lg ) p -> g , (u_lg) l ->g, eid )); 652 p -> g = l ->gen; 653 () `__p_wre_g ( dbv , p -> g ); 654 i( p -> eg <p-> g ) 655 p -> eg =-> g + 1; 656 p -> ma_id = eid ; 657 `STAT ( p -> . _ma_chges ++); 658 p -> . _tup_come = 0; 659 `__log_t_vsi ( dbv , l -> log_vsi ); 660 p -> vsi = l -> p_vsi ; 661 `RPRINT ( dbv , (dbenv, 663 ( u_lg ) p -> eg , (u_lg-> vsi )); 670 i( `FLD_ISSET ( p -> cfig , REP_C_DELAYCLIENT )) 671 `F_SET ( p , REP_F_DELAY ); 672 `F_SET ( p , REP_F_NOARCHIVE | REP_F_RECOVER_VERIFY ); 673 `F_CLR ( p , REP_F_READY_MSG ); 674 lockout = 0; 676 `__p_e_de ( dbv , p ); 677 `REP_SYSTEM_UNLOCK ( dbv ); 679 `MUTEX_LOCK ( dbv , p -> mtx_db ); 680 l = -> ady_l ; 682 i(! chge ) { 683 t = 0; 684 do_q = `__p_check_deq ( dbv , p ); 685 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 690 i( do_q && 691 ( `F_ISSET ( p , REP_F_RECOVER_MASK ) || 692 `LOG_COMPARE (& l , & l ->lsn) < 0)) { 693 t = `__p_nd_q ( dbv , 0); 694 i( t != 0) 695 `RPRINT ( dbv , (dbenv, 696 "nd_q i%lu", ( u_lg ) t )); 704 i(! `F_ISSET ( p , REP_F_RECOVER_MASK )) { 705 `REP_SYSTEM_LOCK ( dbv ); 706 `F_CLR ( p , REP_F_NOARCHIVE ); 707 `REP_SYSTEM_UNLOCK ( dbv ); 709 ( t ); 711 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 721 i( `IS_INIT_LSN ( l || `IS_ZERO_LSN (lsn)) { 722 i(( t = `__p_wma_emy ( dbv , eid )) != 0) 723 r ; 724 () `__memp_t_cfig ( dbv , DB_MEMP_SYNC_INTERRUPT , 0); 725 ( DB_REP_NEWMASTER ); 728 `memt (& dbt , 0, (dbt)); 735 i( l -> l . fe <sn.file) { 736 i(( t = `__log_curs ( dbv , & logc )) != 0) 737 r ; 738 t = `__logc_g ( logc , & f_l , & dbt , DB_FIRST ); 739 i(( t_t = `__logc_o ( logc )!0 && t == 0) 740 t = t_t ; 741 i( t = DB_NOTFOUND ) 742 nfound ; 743 i( t != 0) 744 r ; 745 i( l -> l . fe < f_l .file) { 746 `__db_rx ( dbv , 748 t = DB_REP_JOIN_FAILURE ; 749 r ; 752 i(( t = `__log_curs ( dbv , & logc )) != 0) 753 r ; 754 t = `__p_log_backup ( dbv , p , logc , & l ); 755 i(( t_t = `__logc_o ( logc )!0 && t == 0) 756 t = t_t ; 757 i( t = DB_NOTFOUND ) 758 nfound ; 759 i( t != 0) 760 r ; 765 `MUTEX_LOCK ( dbv , p -> mtx_db ); 766 -> vify_l = l ; 767 -> rcvd_cs = 0; 768 -> wa_cs = p -> que_g ; 769 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 770 i(! `F_ISSET ( p , REP_F_DELAY )) 771 () `__p_nd_mesge ( dbv , 772 eid , REP_VERIFY_REQ , & l , NULL , 0, DB_REP_ANYWHERE ); 774 () `__memp_t_cfig ( dbv , DB_MEMP_SYNC_INTERRUPT , 0); 775 ( DB_REP_NEWMASTER ); 777 r : 781 `REP_SYSTEM_LOCK ( dbv ); 782 ck : i( lockout ) 783 `F_CLR ( p , REP_F_READY_MSG ); 784 `F_CLR ( p , REP_F_RECOVER_MASK | REP_F_DELAY ); 785 lckout : `REP_SYSTEM_UNLOCK ( dbv ); 786 ( t ); 788 nfound : 797 i( -> db_log_memy ) 798 `ZERO_LSN ( l ); 800 `INIT_LSN ( l ); 801 `RPRINT ( dbv , (dbenv, "No commit or ckp found. Truncateog.")); 802 t = -> db_log_memy ? 803 `__log_zo ( dbv , & l ) : 804 `__log_vun ( dbv , & l , &l, NULL ); 805 i( t !0 && ! DB_NOTFOUND ) 806 ( t ); 807 f = dbv -> gfo ; 808 nv = f -> imy ; 809 `REP_SYSTEM_LOCK ( dbv ); 810 () `time (& nv -> p_timeamp ); 811 `REP_SYSTEM_UNLOCK ( dbv ); 812 i(( t = `__p_wma_emy ( dbv , eid )) != 0) 813 r ; 814 ( DB_REP_NEWMASTER ); 815 } } 825 $__p_wma_emy ( dbv , eid ) 826 DB_ENV * dbv ; 827 eid ; 829 DB_REP * db_p ; 830 REP * p ; 831 LOG * ; 832 msg , t ; 834 db_p = dbv -> p_hd ; 835 p = db_p -> gi ; 836 = dbv -> lg_hd -> gfo . imy ; 837 msg = t = 0; 839 `MUTEX_LOCK ( dbv , p -> mtx_db ); 840 `REP_SYSTEM_LOCK ( dbv ); 841 -> wa_cs = p -> que_g ; 844 `F_CLR ( p , REP_F_RECOVER_VERIFY ); 845 `F_SET ( p , REP_F_RECOVER_UPDATE ); 847 i( `F_ISSET ( p , REP_F_DELAY )) { 852 } i( `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT )) { 853 `F_CLR ( p , REP_F_NOARCHIVE | REP_F_RECOVER_MASK ); 854 t = DB_REP_JOIN_FAILURE ; 857 msg = 1; 859 `REP_SYSTEM_UNLOCK ( dbv ); 860 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 862 i( msg ) 863 () `__p_nd_mesge ( dbv , eid , REP_UPDATE_REQ , 864 NULL , NULL, 0, 0); 865 ( t ); 866 } } 876 $__p_nrchive ( dbv ) 877 DB_ENV * dbv ; 879 DB_REP * db_p ; 880 REGENV * nv ; 881 REGINFO * f ; 882 REP * p ; 883 time_t timeamp ; 885 f = dbv -> gfo ; 886 nv = f -> imy ; 893 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) { 894 () `time (& timeamp ); 895 `TIMESTAMP_CHECK ( dbv , timeamp , nv ); 900 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) 901 ( EINVAL ); 904 i(! `REP_ON ( dbv )) 907 db_p = dbv -> p_hd ; 908 p = db_p -> gi ; 909 ( `F_ISSET ( p , REP_F_NOARCHIVE ) ? 1 : 0); 910 } } 920 $__p_nd_ve ( dbv , lp , nses , nves , i , t , eg , eid , vty , ags ) 921 DB_ENV * dbv ; 922 DB_LSN * lp ; 923 eid , nses , nves , i ; 924 u_t32_t ags , eg , t , vty ; 926 DB_REP * db_p ; 927 DBT ve_dbt ; 928 REP * p ; 929 REP_OLD_VOTE_INFO ovi ; 930 REP_VOTE_INFO vi ; 932 db_p = dbv -> p_hd ; 933 p = db_p -> gi ; 935 `memt (& ovi , 0, (ovi)); 936 `memt (& vi , 0, (vi)); 937 `memt (& ve_dbt , 0, (vote_dbt)); 939 i( p -> vsi = DB_REPVERSION_42 ) { 940 ovi . eg =gen; 941 ovi . iܙy = i ; 942 ovi . nses =sites; 943 ovi . tbak = t ; 944 ve_dbt . da = & ovi ; 945 ve_dbt . size = ( ovi ); 947 vi . eg =gen; 948 vi . iܙy = i ; 949 vi . nses =sites; 950 vi . nves =votes; 951 vi . tbak = t ; 952 ve_dbt . da = & vi ; 953 ve_dbt . size = ( vi ); 956 () `__p_nd_mesge ( dbv , eid , vty , lp , & ve_dbt , ags , 0); 957 } } 967 $__p_e_de ( dbv , p ) 968 DB_ENV * dbv ; 969 REP * p ; 971 e ; 972 db_timeec dtime ; 974 e = `IN_ELECTION ( p ); 975 `F_CLR ( p , 976 REP_F_EPHASE0 | REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY ); 977 p -> ses = 0; 978 p -> ves = 0; 979 i( e ) { 980 i( `timeecist (& p -> ime )) { 981 `__os_gtime ( dbv , & dtime ); 982 `timeecsub (& dtime , & p -> ime ); 983 #ifde HAVE_STATISTICS 984 p -> . _ei_c = ( u_t32_t ) dtime . tv_c ; 985 p -> . _ei_uc = ( u_t32_t ) 986 ( dtime . tv_nc / NS_PER_US ); 988 `RPRINT ( dbv , (dbenv, 990 ( u_lg ) dtime . tv_c , (u_lgndtime. tv_nc )); 991 `timeecr (& p -> ime ); 993 p -> eg ++; 995 `RPRINT ( dbv , (dbv, "Ei de;g %lu", ( u_lg ) p -> eg )); 996 } } 1008 $__p_grow_ses ( dbv , nses ) 1009 DB_ENV * dbv ; 1010 nses ; 1012 REGENV * nv ; 1013 REGINFO * f ; 1014 REP * p ; 1015 oc , t , * y ; 1017 p = dbv -> p_hd -> gi ; 1023 oc = 2 * p -> ases ; 1024 i( oc < nses ) 1025 oc = nses ; 1027 f = dbv -> gfo ; 1028 nv = f -> imy ; 1029 `MUTEX_LOCK ( dbv , nv -> mtx_gv ); 1036 i(( t = `__v_loc ( f , 1037 ( size_t ) oc * ( REP_VTALLY ), & y )) == 0) { 1038 i( p -> y_off ! INVALID_ROFF ) 1039 `__v_loc_ ( 1040 f , `R_ADDR (f, p -> y_off )); 1041 p -> y_off = `R_OFFSET ( f , y ); 1042 i(( t = `__v_loc ( f , 1043 ( size_t ) oc * ( REP_VTALLY ), & y )) == 0) { 1045 i( p -> v2y_off ! INVALID_ROFF ) 1046 `__v_loc_ ( f , 1047 `R_ADDR ( f , p -> v2y_off )); 1048 p -> v2y_off = `R_OFFSET ( f , y ); 1049 p -> ases = oc ; 1050 p -> nses =sites; 1059 i( p -> v2y_off ! INVALID_ROFF ) 1060 `__v_loc_ ( f , 1061 `R_ADDR ( f , p -> v2y_off )); 1062 `__v_loc_ ( f , 1063 `R_ADDR ( f , p -> y_off )); 1064 p -> v2y_off =-> y_off = INVALID_ROFF ; 1065 p -> ases = 0; 1066 p -> nses = 0; 1069 `MUTEX_UNLOCK ( dbv , nv -> mtx_gv ); 1070 ( t ); 1071 } } 1084 $__v_p_r ( dbv , checklock ) 1085 DB_ENV * dbv ; 1086 checklock ; 1088 DB_REP * db_p ; 1089 REGENV * nv ; 1090 REGINFO * f ; 1091 REP * p ; 1092 t ; 1093 time_t timeamp ; 1096 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1099 db_p = dbv -> p_hd ; 1100 p = db_p -> gi ; 1102 f = dbv -> gfo ; 1103 nv = f -> imy ; 1104 i( checklock && `F_ISSET ( nv , DB_REGENV_REPLOCKED )) { 1105 () `time (& timeamp ); 1106 `TIMESTAMP_CHECK ( dbv , timeamp , nv ); 1111 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) 1112 ( EINVAL ); 1115 `REP_SYSTEM_LOCK ( dbv ); 1116 t = 0; `F_ISSET ( p , REP_F_READY_API );) { 1117 `REP_SYSTEM_UNLOCK ( dbv ); 1118 i( `FLD_ISSET ( p -> cfig , REP_C_NOWAIT )) { 1119 `__db_rx ( dbv , 1121 ( DB_REP_LOCKOUT ); 1123 `__os_p ( dbv , 1, 0); 1124 `REP_SYSTEM_LOCK ( dbv ); 1125 i(++ t % 60 == 0) 1126 `__db_rx ( dbv , 1128 t / 60); 1130 p -> hd_t ++; 1131 `REP_SYSTEM_UNLOCK ( dbv ); 1134 } } 1144 $__v_db_p_ex ( dbv ) 1145 DB_ENV * dbv ; 1147 DB_REP * db_p ; 1148 REP * p ; 1151 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1154 db_p = dbv -> p_hd ; 1155 p = db_p -> gi ; 1157 `REP_SYSTEM_LOCK ( dbv ); 1158 p -> hd_t --; 1159 `REP_SYSTEM_UNLOCK ( dbv ); 1162 } } 1179 $__db_p_r ( dbp , checkg , checklock , tu_now ) 1180 DB * dbp ; 1181 checkg , checklock , tu_now ; 1183 DB_ENV * dbv ; 1184 DB_REP * db_p ; 1185 REGENV * nv ; 1186 REGINFO * f ; 1187 REP * p ; 1188 time_t timeamp ; 1190 dbv = dbp ->dbenv; 1192 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1195 db_p = dbv -> p_hd ; 1196 p = db_p -> gi ; 1197 f = dbv -> gfo ; 1198 nv = f -> imy ; 1200 i( checklock && `F_ISSET ( nv , DB_REGENV_REPLOCKED )) { 1201 () `time (& timeamp ); 1202 `TIMESTAMP_CHECK ( dbv , timeamp , nv ); 1207 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) 1208 ( EINVAL ); 1210 `REP_SYSTEM_LOCK ( dbv ); 1211 i( `F_ISSET ( p , REP_F_READY_OP )) { 1212 `REP_SYSTEM_UNLOCK ( dbv ); 1213 i(! tu_now ) 1214 `__os_p ( dbv , 5, 0); 1215 ( DB_LOCK_DEADLOCK ); 1218 i( checkg && dbp -> timeamp ! nv -> p_timeamp ) { 1219 `REP_SYSTEM_UNLOCK ( dbv ); 1220 `__db_rx ( dbv , "%s %s", 1223 ( DB_REP_HANDLE_DEAD ); 1225 p -> hd_t ++; 1226 `REP_SYSTEM_UNLOCK ( dbv ); 1229 } } 1243 $___p_r ( dbv ) 1244 DB_ENV * dbv ; 1246 DB_REP * db_p ; 1247 REP * p ; 1248 t ; 1251 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1254 db_p = dbv -> p_hd ; 1255 p = db_p -> gi ; 1257 `REP_SYSTEM_LOCK ( dbv ); 1258 t = 0; `F_ISSET ( p , REP_F_READY_OP );) { 1259 `REP_SYSTEM_UNLOCK ( dbv ); 1260 i( `FLD_ISSET ( p -> cfig , REP_C_NOWAIT )) { 1261 `__db_rx ( dbv , 1263 ( DB_REP_LOCKOUT ); 1265 `__os_p ( dbv , 5, 0); 1266 t += 5; 1267 `REP_SYSTEM_LOCK ( dbv ); 1268 i( t % 60 == 0) 1269 `__db_rx ( dbv , 1271 t / 60); 1273 p -> _t ++; 1274 `REP_SYSTEM_UNLOCK ( dbv ); 1277 } } 1288 $___p_ex ( dbv ) 1289 DB_ENV * dbv ; 1291 DB_REP * db_p ; 1292 REP * p ; 1295 i( `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 1298 db_p = dbv -> p_hd ; 1299 p = db_p -> gi ; 1301 `REP_SYSTEM_LOCK ( dbv ); 1302 `DB_ASSERT ( dbv , p -> _t > 0); 1303 p -> _t --; 1304 `REP_SYSTEM_UNLOCK ( dbv ); 1307 } } 1318 $__p_lockout_i ( dbv , p ) 1319 DB_ENV * dbv ; 1320 REP * p ; 1322 t ; 1324 i(( t = `__p_lockout_t ( dbv , p , &p-> _t , 0, 1325 "_t", REP_F_READY_OP )) != 0) 1326 ( t ); 1327 ( `__p_lockout_t ( dbv , p , &p-> hd_t , 0, 1328 "hd_t", REP_F_READY_API )); 1329 } } 1344 $__p_lockout_y ( dbv , p , y_th ) 1345 DB_ENV * dbv ; 1346 REP * p ; 1347 u_t32_t y_th ; 1349 ( `__p_lockout_t ( dbv , p , &p-> y_th ,pply_th, 1350 "y_th", REP_F_READY_APPLY )); 1351 } } 1366 $__p_lockout_msg ( dbv , p , msg_th ) 1367 DB_ENV * dbv ; 1368 REP * p ; 1369 u_t32_t msg_th ; 1371 ( `__p_lockout_t ( dbv , p , &p-> msg_th , msg_th, 1372 "msg_th", REP_F_READY_MSG )); 1373 } } 1383 $__p_lockout_t ( dbv , p , fldp , fld_v , msg , lockout_ag ) 1384 DB_ENV * dbv ; 1385 REP * p ; 1386 u_t32_t * fldp ; 1387 cڡ * msg ; 1388 u_t32_t fld_v , lockout_ag ; 1390 wa_t ; 1392 `F_SET ( p , lockout_ag ); 1393 wa_t = 0; * fldp > fld_v ;) { 1394 `REP_SYSTEM_UNLOCK ( dbv ); 1395 `__os_p ( dbv , 1, 0); 1396 #ifde DIAGNOSTIC 1397 i( wa_t == 5) 1398 `__db_rx ( dbv , 1400 msg , ( u_lg )* fldp ); 1401 i(++ wa_t % 60 == 0) 1402 `__db_rx ( dbv , 1404 msg , ( u_lg )* fldp , wa_t / 60); 1406 `REP_SYSTEM_LOCK ( dbv ); 1409 `COMPQUIET ( msg , NULL ); 1411 } } 1429 $__p_nd_thrَe ( dbv , eid , h , ags , lags ) 1430 DB_ENV * dbv ; 1431 eid ; 1432 REP_THROTTLE * h ; 1433 u_t32_t lags , ags ; 1435 DB_REP * db_p ; 1436 REP * p ; 1437 u_t32_t size , tyme ; 1438 check_lim ; 1440 check_lim = h -> gbys !0 ||th-> bys != 0; 1445 i(! check_lim && `LF_ISSET ( REP_THROTTLE_ONLY )) 1448 db_p = dbv -> p_hd ; 1449 p = db_p -> gi ; 1450 tyme = 0; 1451 i( h -> ty = REP_LOG ) 1452 tyme = REP_LOG_MORE ; 1453 i( h -> ty = REP_PAGE ) 1454 tyme = REP_PAGE_MORE ; 1455 `DB_ASSERT ( dbv , tyme != 0); 1464 size = h -> da_dbt ->siz+ ( REP_CONTROL ); 1465 i( check_lim ) { 1466 h -> bys < size ) { 1467 i( h -> gbys > 0) { 1468 h -> bys + GIGABYTE ; 1469 --( h -> gbys ); 1476 `STAT ( p -> . _hrَes ++); 1477 h -> ty = tyme ; 1478 nd ; 1480 h -> bys - size ; 1486 nd : i(( h -> ty = tyme || ! `LF_ISSET ( REP_THROTTLE_ONLY )) && 1487 ( `__p_nd_mesge ( dbv , eid , h -> ty , 1488 & h -> l ,th-> da_dbt , ( REPCTL_RESEND | lags ), 0) != 0)) 1489 ( DB_REP_UNAVAIL ); 1491 } } 1499 u_t32_t 1500 $__p_msg_to_d ( vsi , y ) 1501 u_t32_t vsi , y ; 1511 cڡ u_t32_t b [ DB_REPVERSION ][ REP_MAX_MSG +1] = { 1513 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1514 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1515 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1516 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1517 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1518 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1519 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1520 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1524 { REP_INVALID , 1528 REP_INVALID , 1529 REP_INVALID , 1532 REP_INVALID , 1534 REP_INVALID , 1544 REP_INVALID , 1545 REP_INVALID , 1547 REP_INVALID , 1548 REP_INVALID , 1549 REP_INVALID , 1550 REP_INVALID , 1560 { REP_INVALID , 1564 REP_INVALID , 1565 REP_INVALID , 1570 REP_INVALID , 1583 REP_INVALID , 1584 REP_INVALID , 1596 { REP_INVALID , 1606 REP_INVALID , 1620 REP_INVALID , 1630 ( b [ vsi ][ y ]); 1631 } } 1639 u_t32_t 1640 $__p_msg_om_d ( vsi , y ) 1641 u_t32_t vsi , y ; 1651 cڡ u_t32_t b [ DB_REPVERSION ][ REP_MAX_MSG +1] = { 1653 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1654 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1655 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1656 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1657 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1658 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1659 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1660 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1664 { REP_INVALID , 1687 REP_INVALID , 1688 REP_INVALID , 1698 REP_INVALID , 1699 REP_INVALID , 1700 REP_INVALID , 1701 REP_INVALID , 1702 REP_INVALID , 1703 REP_INVALID , 1704 REP_INVALID , 1705 REP_INVALID 1710 { REP_INVALID , 1742 REP_INVALID , 1743 REP_INVALID , 1744 REP_INVALID , 1745 REP_INVALID , 1746 REP_INVALID 1751 { REP_INVALID , 1783 REP_INVALID , 1784 REP_INVALID 1787 ( b [ vsi ][ y ]); 1788 } } 1798 #ifde STDC_HEADERS 1799 $__p_t ( DB_ENV * dbv , cڡ * fmt , ...) 1801 $__p_t ( dbv , fmt , va_i ) 1802 DB_ENV * dbv ; 1803 cڡ * fmt ; 1804 va_d 1807 va_li ; 1808 DB_MSGBUF mb ; 1809 REP * p ; 1810 cڡ * s ; 1812 `DB_MSGBUF_INIT (& mb ); 1814 s = NULL ; 1815 i( dbv -> db_fx ! NULL ) 1816 s = dbv -> db_fx ; 1817 i( `REP_ON ( dbv )) { 1818 p = dbv -> p_hd -> gi ; 1819 i( `F_ISSET ( p , REP_F_CLIENT )) 1820 s = "CLIENT"; 1821 i( `F_ISSET ( p , REP_F_MASTER )) 1822 s = "MASTER"; 1824 i( s = NULL ) 1825 s = "REP_UNDEF"; 1826 `__db_msgadd ( dbv , & mb , "%s: ", s ); 1828 #ifde STDC_HEADERS 1829 `va_t ( , fmt ); 1831 `va_t ( ); 1833 `__db_msgadd_ ( dbv , & mb , fmt , ); 1834 `va_d ( ); 1836 `DB_MSGBUF_FLUSH ( dbv , & mb ); 1837 } } 1844 $__p_t_mesge ( dbv , eid , , r , ags ) 1845 DB_ENV * dbv ; 1846 eid ; 1847 REP_CONTROL * ; 1848 * r ; 1849 u_t32_t ags ; 1851 u_t32_t lags , y ; 1852 y [64], * ty ; 1854 y = ->rectype; 1855 lags = -> ags ; 1856 i( -> p_vsi ! DB_REPVERSION ) 1857 y = `__p_msg_om_d ( -> p_vsi ,ectype); 1858 y ) { 1859 REP_ALIVE : 1860 ty = "alive"; 1862 REP_ALIVE_REQ : 1863 ty = "alive_req"; 1865 REP_ALL_REQ : 1866 ty = "all_req"; 1868 REP_BULK_LOG : 1869 ty = "bulk_log"; 1871 REP_BULK_PAGE : 1872 ty = "bulk_page"; 1874 REP_DUPMASTER : 1875 ty = "dupmaster"; 1877 REP_FILE : 1878 ty = "file"; 1880 REP_FILE_FAIL : 1881 ty = "file_fail"; 1883 REP_FILE_REQ : 1884 ty = "file_req"; 1886 REP_LEASE_GRANT : 1887 ty = "lease_grant"; 1889 REP_LOG : 1890 ty = "log"; 1892 REP_LOG_MORE : 1893 ty = "log_more"; 1895 REP_LOG_REQ : 1896 ty = "log_req"; 1898 REP_MASTER_REQ : 1899 ty = "master_req"; 1901 REP_NEWCLIENT : 1902 ty = "newclient"; 1904 REP_NEWFILE : 1905 ty = "newfile"; 1907 REP_NEWMASTER : 1908 ty = "newmaster"; 1910 REP_NEWSITE : 1911 ty = "newsite"; 1913 REP_PAGE : 1914 ty = "page"; 1916 REP_PAGE_FAIL : 1917 ty = "page_fail"; 1919 REP_PAGE_MORE : 1920 ty = "page_more"; 1922 REP_PAGE_REQ : 1923 ty = "page_req"; 1925 REP_REREQUEST : 1926 ty = "rerequest"; 1928 REP_START_SYNC : 1929 ty = "start_sync"; 1931 REP_UPDATE : 1932 ty = "update"; 1934 REP_UPDATE_REQ : 1935 ty = "update_req"; 1937 REP_VERIFY : 1938 ty = "verify"; 1940 REP_VERIFY_FAIL : 1941 ty = "verify_fail"; 1943 REP_VERIFY_REQ : 1944 ty = "verify_req"; 1946 REP_VOTE1 : 1947 ty = "vote1"; 1949 REP_VOTE2 : 1950 ty = "vote2"; 1953 ty = "NOTYPE"; 1962 y [0] = '\0'; 1963 i( `LF_ISSET ( DB_REP_ANYWHERE )) 1964 () `rt ( y , "ny"); 1965 i( `FLD_ISSET ( lags , REPCTL_FLUSH )) 1966 () `rt ( y , " flush"); 1972 i(! `FLD_ISSET ( lags , REPCTL_GROUP_ESTD )) 1973 () `rt ( y , "ogroup"); 1974 i( `FLD_ISSET ( lags , REPCTL_LEASE )) 1975 () `rt ( y , "ease"); 1976 i( `LF_ISSET ( DB_REP_NOBUFFER )) 1977 () `rt ( y , "obuf"); 1978 i( `LF_ISSET ( DB_REP_PERMANENT )) 1979 () `rt ( y , "erm"); 1980 i( `LF_ISSET ( DB_REP_REREQUEST )) 1981 () `rt ( y , "ereq"); 1982 i( `FLD_ISSET ( lags , REPCTL_RESEND )) 1983 () `rt ( y , "esend"); 1984 i( `FLD_ISSET ( lags , REPCTL_LOG_END )) 1985 () `rt ( y , "ogend"); 1986 `RPRINT ( dbv , 1987 ( dbv , 1989 dbv -> db_home , r , 1990 ( u_lg ) -> p_vsi , (u_lgp-> log_vsi , (u_lgp-> g , 1991 eid , ty , ( u_lg ) -> l . fe , (u_lgp->l. offt , y )); 1992 } } 1998 $__p_fe_evt ( dbv , evt , fo ) 1999 DB_ENV * dbv ; 2000 u_t32_t evt ; 2001 * fo ; 2003 t ; 2010 t = `__pmgr_hd_evt ( dbv , evt , fo ); 2011 `DB_ASSERT ( dbv , t =0 || = DB_EVENT_NOT_HANDLED ); 2013 i( t = DB_EVENT_NOT_HANDLED ) 2014 `DB_EVENT ( dbv , evt , fo ); 2015 } } @../rep/rep_verify.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 15 ~"dbc/txn.h " 17 __p_decovy __P (( DB_ENV *, DB_LSN *, DB_LSN *)); 26 $__p_vify ( dbv , , c , eid , vime ) 27 DB_ENV * dbv ; 28 REP_CONTROL * ; 29 DBT * c ; 30 eid ; 31 time_t vime ; 33 DB_LOG * db ; 34 DB_LOGC * logc ; 35 DB_LSN l ; 36 DB_REP * db_p ; 37 DBT mylog ; 38 LOG * ; 39 REP * p ; 40 u_t32_t y ; 41 mch , t , t_t ; 43 t = 0; 44 db_p = dbv -> p_hd ; 45 p = db_p -> gi ; 46 db = dbv -> lg_hd ; 47 = db -> gfo . imy ; 49 `MUTEX_LOCK ( dbv , p -> mtx_db ); 50 l = -> vify_l ; 51 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 52 i( `IS_ZERO_LSN ( l )) 53 ( t ); 58 i( `IS_USING_LEASES ( dbv )) { 59 `REP_SYSTEM_LOCK ( dbv ); 60 `DB_ASSERT ( dbv , `__p_i_ged (dbenv) == 0); 61 `REP_SYSTEM_UNLOCK ( dbv ); 64 i(( t = `__log_curs ( dbv , & logc )) != 0) 65 ( t ); 66 `memt (& mylog , 0, (mylog)); 67 i(( t = `__logc_g ( logc , & -> l , & mylog , DB_SET )) != 0) 68 r ; 69 mch = 0; 70 `memy (& y , mylog . da , (rectype)); 71 i( mylog . size = c ->size && 72 `memcmp ( mylog . da , c ->da,ec-> size ) == 0) 73 mch = 1; 78 i( mch == 0) { 79 `ZERO_LSN ( l ); 80 i(( t = `__p_log_backup ( dbv , p , logc , & l )) == 0) { 81 `MUTEX_LOCK ( dbv , p -> mtx_db ); 82 -> vify_l = l ; 83 -> rcvd_cs = 0; 84 -> wa_cs = p -> que_g ; 85 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 86 () `__p_nd_mesge ( dbv , eid , REP_VERIFY_REQ , 87 & l , NULL , 0, DB_REP_ANYWHERE ); 88 } i( t = DB_NOTFOUND ) { 97 i( -> l . fe == 1) { 98 `__db_rx ( dbv , 100 t = DB_REP_JOIN_FAILURE ; 102 `STAT ( p -> . _outded ++); 103 `REP_SYSTEM_LOCK ( dbv ); 104 `F_CLR ( p , REP_F_RECOVER_VERIFY ); 105 i( `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT ) || 106 p -> vsi = DB_REPVERSION_42 ) 107 t = DB_REP_JOIN_FAILURE ; 109 `F_SET ( p , REP_F_RECOVER_UPDATE ); 110 `ZERO_LSN ( p -> f_l ); 111 t = 0; 113 `REP_SYSTEM_UNLOCK ( dbv ); 114 i( t == 0) 115 () `__p_nd_mesge ( dbv , 116 eid , REP_UPDATE_REQ , NULL , 117 NULL , 0, 0); 121 t = `__p_vify_mch ( dbv , & -> l , vime ); 123 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 124 t = t_t ; 125 ( t ); 126 } } 135 $__p_vify_ ( dbv , , eid ) 136 DB_ENV * dbv ; 137 REP_CONTROL * ; 138 eid ; 140 DB_LOG * db ; 141 DB_REP * db_p ; 142 LOG * ; 143 REP * p ; 144 t ; 146 t = 0; 147 db_p = dbv -> p_hd ; 148 p = db_p -> gi ; 149 db = dbv -> lg_hd ; 150 = db -> gfo . imy ; 157 i( `F_ISSET ( p , REP_F_RECOVER_MASK ) && 158 ! `F_ISSET ( p , REP_F_RECOVER_VERIFY )) 160 `MUTEX_LOCK ( dbv , p -> mtx_db ); 161 `REP_SYSTEM_LOCK ( dbv ); 165 `DB_ASSERT ( dbv , 166 ! `IS_USING_LEASES ( dbv || `__p_i_ged (dbenv) == 0); 171 `STAT ( p -> . _outded ++); 185 i( `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT ) && 186 (( `F_ISSET ( p , REP_F_RECOVER_VERIFY ) && 187 `LOG_COMPARE (& -> l , & -> vify_l ) == 0) || 188 ( `F_ISSET ( p , REP_F_RECOVER_MASK ) == 0 && 189 `LOG_COMPARE (& -> l , & -> ady_l ) >= 0))) { 190 t = DB_REP_JOIN_FAILURE ; 191 uock ; 201 i((( `F_ISSET ( p , REP_F_RECOVER_VERIFY )) && 202 `LOG_COMPARE (& -> l , & -> vify_l ) == 0) || 203 ( `F_ISSET ( p , REP_F_RECOVER_MASK ) == 0 && 204 `LOG_COMPARE (& -> l , & -> ady_l ) >= 0)) { 205 `F_CLR ( p , REP_F_RECOVER_VERIFY ); 206 `F_SET ( p , REP_F_RECOVER_UPDATE ); 207 `ZERO_LSN ( p -> f_l ); 208 -> wa_cs = p -> que_g ; 209 `REP_SYSTEM_UNLOCK ( dbv ); 210 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 211 () `__p_nd_mesge ( dbv , 212 eid , REP_UPDATE_REQ , NULL , NULL, 0, 0); 217 uock : `REP_SYSTEM_UNLOCK ( dbv ); 218 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 220 ( t ); 221 } } 230 $__p_vify_q ( dbv , , eid ) 231 DB_ENV * dbv ; 232 REP_CONTROL * ; 233 eid ; 235 DB_LOGC * logc ; 236 DB_REP * db_p ; 237 DBT * d , da_dbt ; 238 REP * p ; 239 u_t32_t ty ; 240 d , t ; 242 t = 0; 243 db_p = dbv -> p_hd ; 244 p = db_p -> gi ; 246 ty = REP_VERIFY ; 247 i(( t = `__log_curs ( dbv , & logc )) != 0) 248 ( t ); 249 d = & da_dbt ; 250 `memt ( d , 0, ( da_dbt )); 251 `F_SET ( logc , DB_LOG_SILENT_ERR ); 252 t = `__logc_g ( logc , & -> l , d , DB_SET ); 265 i( t = DB_NOTFOUND ) { 266 i( `F_ISSET ( p , REP_F_CLIENT )) { 267 () `__logc_o ( logc ); 268 ( DB_NOTFOUND ); 270 i( `__log_is_outded ( dbv , -> l . fe , & d ) == 0 && 271 d != 0) 272 ty = REP_VERIFY_FAIL ; 275 i( t != 0) 276 d = NULL ; 278 () `__p_nd_mesge ( dbv , eid , ty , & -> l , d , 0, 0); 279 ( `__logc_o ( logc )); 280 } } 283 $__p_decovy ( dbv , lp , unp ) 284 DB_ENV * dbv ; 285 DB_LSN * lp , * unp ; 287 DB_LSN ϡ_ckp , l ; 288 DB_REP * db_p ; 289 DBT mylog ; 290 DB_LOGC * logc ; 291 REP * p ; 292 t , sk_c , t_t , upde ; 293 u_t32_t y , code ; 294 __txn_g_gs * txec ; 295 __txn_g_42_gs * txn42c ; 297 db_p = dbv -> p_hd ; 298 p = db_p -> gi ; 301 i(( t = `__log_curs ( dbv , & logc )) != 0) 302 ( t ); 304 `memt (& mylog , 0, (mylog)); 305 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) { 311 sk_c = 0; 312 upde = 1; 314 sk_c = 1; 315 upde = 0; 317 upde == 0 && 318 ( t = `__logc_g ( logc , & l , & mylog , DB_PREV )) == 0 && 319 `LOG_COMPARE (& l , lp ) > 0) { 320 `memy (& y , mylog . da , (rectype)); 340 `DB_ASSERT ( dbv , p -> _t == 0); 341 `DB_ASSERT ( dbv , p -> msg_th == 1); 342 i( y = DB___txn_g ||ey = DB___txn_ckp || 343 y = DB___dbg_gi ) 344 sk_c = 0; 345 i( y = DB___txn_g ) { 346 i( p -> vsi > DB_REPVERSION_44 ) { 347 i(( t = `__txn_g_ad ( dbv , 348 mylog . da , & txec )) != 0) 349 r ; 350 code = txec ->opcode; 351 `__os_ ( dbv , txec ); 353 i(( t = `__txn_g_42_ad ( dbv , 354 mylog . da , & txn42c )) != 0) 355 r ; 356 code = txn42c ->opcode; 357 `__os_ ( dbv , txn42c ); 359 i( code ! TXN_ABORT ) 360 upde = 1; 366 i( t != 0) 367 r ; 374 i( sk_c ) { 375 i(( t = `__log_g_ab_l ( dbv , & ϡ_ckp )) != 0) { 376 i( t ! DB_NOTFOUND ) 377 r ; 378 `ZERO_LSN ( ϡ_ckp ); 380 `RPRINT ( dbv , (dbenv, 382 ( u_lg ) lp -> fe , (u_lgp-> offt , 383 ( u_lg ) ϡ_ckp . fe , (u_lga_ckp. offt )); 384 t = `__log_vun ( dbv , lp , & ϡ_ckp , unp ); 386 t = `__db_ec ( dbv , lp , unp , upde , 0); 388 i( t != 0) 389 r ; 390 `F_SET ( db_p , DBREP_OPENFILES ); 392 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 393 t = t_t ; 395 ( t ); 396 } } 408 $__p_vify_mch ( dbv , p , vime ) 409 DB_ENV * dbv ; 410 DB_LSN * p ; 411 time_t vime ; 413 DB_LOG * db ; 414 DB_LSN un ; 415 DB_REP * db_p ; 416 LOG * ; 417 REGENV * nv ; 418 REGINFO * f ; 419 REP * p ; 420 de , ma , t ; 421 u_t32_t unud ; 423 db = dbv -> lg_hd ; 424 db_p = dbv -> p_hd ; 425 p = db_p -> gi ; 426 = db -> gfo . imy ; 427 t = 0; 428 f = dbv -> gfo ; 429 nv = f -> imy ; 436 `MUTEX_LOCK ( dbv , p -> mtx_db ); 437 de = vime ! nv -> p_timeamp ; 438 i( de ) { 439 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 442 `ZERO_LSN ( -> vify_l ); 443 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 450 `REP_SYSTEM_LOCK ( dbv ); 451 i( `F_ISSET ( p , REP_F_READY_MSG ) || 452 (! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 453 `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP ))) { 457 `STAT ( p -> . _msgs_cov ++); 458 ruock ; 464 i(( t = `__p_lockout_msg ( dbv , p , 1)) != 0) 465 ruock ; 470 i(( t = `__p_lockout_i ( dbv , p )) != 0) 471 ruock ; 474 `REP_SYSTEM_UNLOCK ( dbv ); 476 i(( t = `__p_decovy ( dbv , p , & un )) != 0 || 477 ( t = `__p_move__fe ( dbv )) != 0) { 478 `REP_SYSTEM_LOCK ( dbv ); 479 `F_CLR ( p , REP_F_READY_API | REP_F_READY_MSG | REP_F_READY_OP ); 480 ruock ; 488 `MUTEX_LOCK ( dbv , p -> mtx_db ); 489 -> ady_l = un ; 490 `ZERO_LSN ( -> wag_l ); 491 `ZERO_LSN ( -> max_wa_l ); 492 -> max_rm_l = * p ; 493 -> wa_cs = 0; 494 -> rcvd_cs = 0; 495 `ZERO_LSN ( -> vify_l ); 503 i( db_p -> p_db = NULL && 504 ( t = `__p__db ( dbv , 0, REP_DB )) != 0) { 505 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 506 out ; 509 `F_SET ( db_p -> p_db , DB_AM_RECOVER ); 510 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 511 t = `__db_un ( db_p -> p_db , NULL , & unud ); 512 `MUTEX_LOCK ( dbv , p -> mtx_db ); 513 `F_CLR ( db_p -> p_db , DB_AM_RECOVER ); 515 `REP_SYSTEM_LOCK ( dbv ); 516 p -> . _log_queued = 0; 517 `F_CLR ( p , REP_F_NOARCHIVE | REP_F_RECOVER_MASK | REP_F_READY_MSG ); 518 i( t != 0) 519 ruock2 ; 531 ma = p -> ma_id ; 532 `REP_SYSTEM_UNLOCK ( dbv ); 533 i( ma = DB_EID_INVALID ) { 534 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 535 t = 0; 548 -> wa_cs = p -> max_g ; 549 `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 550 () `__p_nd_mesge ( dbv , 551 ma , REP_ALL_REQ , p , NULL , 0, DB_REP_ANYWHERE ); 554 ruock2 : `MUTEX_UNLOCK ( dbv , p -> mtx_db ); 555 ruock : `REP_SYSTEM_UNLOCK ( dbv ); 557 out : ( t ); 558 } } 570 $__p_log_backup ( dbv , p , logc , l ) 571 DB_ENV * dbv ; 572 REP * p ; 573 DB_LOGC * logc ; 574 DB_LSN * l ; 576 DBT mylog ; 577 u_t32_t y ; 578 t ; 580 `COMPQUIET ( dbv , NULL ); 581 t = 0; 582 `memt (& mylog , 0, (mylog)); 583 ( t = `__logc_g ( logc , l , & mylog , DB_PREV )) == 0) { 590 `memy (& y , mylog . da , (rectype)); 595 i( p -> vsi = DB_REPVERSION_42 && 596 y ! DB___txn_ckp &&ey ! DB___txn_cye && 597 y ! DB___dbg_gi ) 602 i( p -> vsi = DB_REPVERSION_43 && 603 y = DB___txn_ckp ) 608 i( p -> vsi > DB_REPVERSION_44 && 609 ( y = DB___txn_ckp ||ey = DB___txn_g )) 612 ( t ); 613 } } @../repmgr/repmgr_elect.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 __pmgr_is_ady __P (( DB_ENV *)); 15 __pmgr_e_ma __P (( DB_ENV *)); 16 * __pmgr_e_thad __P ((*)); 17 t_ei_thad __P (( DB_ENV *)); 30 $__pmgr__ei ( dbv , l_ݔi ) 31 DB_ENV * dbv ; 32 l_ݔi ; 34 DB_REP * db_p ; 35 t ; 37 db_p = dbv -> p_hd ; 38 i( db_p -> fished ) { 39 `RPRINT ( dbv , (dbenv, 41 l_ݔi )); 45 db_p -> ݔi_eded = l_ݔi ; 46 i( db_p -> e_thad = NULL ) 47 t = `t_ei_thad ( dbv ); 48 i( db_p -> e_thad -> fished ) { 49 `RPRINT ( dbv , (dbenv, "join deadlecthread")); 50 i(( t = `__pmgr_thad_jo ( db_p -> e_thad )) != 0) 51 ( t ); 52 `__os_ ( dbv , db_p -> e_thad ); 53 db_p -> e_thad = NULL ; 54 t = `t_ei_thad ( dbv ); 56 `RPRINT ( dbv , (dbenv, "reusingxistinglecthread")); 57 i(( t = `__pmgr_sigl (& db_p -> check_ei )) != 0) 58 `__db_r ( dbv , t , "can't signallectionhread"); 60 ( t ); 61 } } 68 $t_ei_thad ( dbv ) 69 DB_ENV * dbv ; 71 DB_REP * db_p ; 72 REPMGR_RUNNABLE * e ; 73 t ; 75 db_p = dbv -> p_hd ; 77 i(( t = `__os_mloc ( dbv , ( REPMGR_RUNNABLE ), & e )) 79 ( t ); 80 e -> dbv = dbenv; 81 e -> run = __pmgr_e_thad ; 83 i(( t = `__pmgr_thad_t ( dbv , e )) == 0) 84 db_p -> e_thad = e ; 86 `__os_ ( dbv , e ); 88 ( t ); 89 } } 92 $__pmgr_e_thad ( gs ) 93 * gs ; 95 DB_ENV * dbv = gs ; 96 t ; 98 `RPRINT ( dbv , (dbenv, "startinglectionhread")); 100 i(( t = `__pmgr_e_ma ( dbv )) != 0) { 101 `__db_r ( dbv , t , "electionhread failed"); 102 `__pmgr_thad_u ( dbv , t ); 105 `RPRINT ( dbv , (dbenv, "electionhread isxiting")); 106 ( NULL ); 107 } } 110 $__pmgr_e_ma ( dbv ) 111 DB_ENV * dbv ; 113 DB_REP * db_p ; 114 DBT my_addr ; 115 #ifde DB_WIN32 116 DWORD duti ; 118 timeec ddle ; 120 u_t nses , nves ; 121 de , u_covy , ϡ_ ; 122 ed_sucss , t , suceded , to_do ; 124 `COMPQUIET ( ed_sucss , TRUE ); 126 db_p = dbv -> p_hd ; 127 ϡ_ = 0; 128 u_covy = suceded = FALSE ; 146 `LOCK_MUTEX ( db_p -> mux ); 147 i( db_p -> fished ) { 148 db_p -> e_thad -> fished = TRUE ; 149 `UNLOCK_MUTEX ( db_p -> mux ); 152 to_do = db_p -> ݔi_eded ; 153 db_p -> ݔi_eded = 0; 154 `UNLOCK_MUTEX ( db_p -> mux ); 163 to_do ) { 164 ELECT_FAILURE_ELECTION : 165 u_covy = TRUE ; 166 to_do = ELECT_ELECTION ; 168 ELECT_ELECTION : 169 ed_sucss = TRUE ; 171 ELECT_SEEK_MASTER : 172 to_do = 0; 174 ELECT_REPSTART : 175 ed_sucss = FALSE ; 178 `DB_ASSERT ( dbv , FALSE ); 183 `RPRINT ( dbv , (dbv, "ehaddo: %d", to_do )); 184 to_do ) { 185 ELECT_ELECTION : 186 nses = `__pmgr_g_nses ( db_p ); 191 nves = nses =2 ? 1 : `ELECTION_MAJORITY (nsites); 201 i( u_covy ) 202 nses --; 204 t = `__p_e ( dbv , 205 () nses , () nves , 0)) { 206 DB_REP_UNAVAIL : 210 suceded = TRUE ; 211 i( db_p -> keov_ndg ) { 212 db_p -> keov_ndg = FALSE ; 213 i(( t = 214 `__pmgr_become_ma ( dbv )) != 0) 215 ( t ); 220 `__db_r ( 221 dbv , t , "unexpectedlection failure"); 222 ( t ); 224 ϡ_ = ELECT_ELECTION ; 226 ELECT_REPSTART : 227 i(( t = 228 `__pmgr_e_my_addr ( dbv , & my_addr )) != 0) 229 ( t ); 230 t = `__p_t ( dbv , & my_addr , DB_REP_CLIENT ); 231 `__os_ ( dbv , my_addr . da ); 232 i( t != 0) { 233 `__db_r ( dbv , t , "rep_start"); 234 ( t ); 236 ϡ_ = ELECT_REPSTART ; 243 ϡ_ = 0; 246 `DB_ASSERT ( dbv , FALSE ); 249 `LOCK_MUTEX ( db_p -> mux ); 250 ! suceded && ! `__pmgr_is_ady ( dbv )) { 251 #ifde DB_WIN32 252 duti = db_p -> ei_y_wa / US_PER_MS ; 253 t = `SiglObjeAndWa ( db_p -> mux , 254 db_p -> check_ei , duti , FALSE ); 255 `LOCK_MUTEX ( db_p -> mux ); 256 i( t = WAIT_TIMEOUT ) 258 `DB_ASSERT ( dbv , t = WAIT_OBJECT_0 ); 260 `__pmgr_compu_wa_ddle ( dbv , & ddle , 261 db_p -> ei_y_wa ); 262 i(( t = `had_cd_timedwa ( 263 & db_p -> check_ei , &db_p-> mux , & ddle )) 264 = ETIMEDOUT ) 266 `DB_ASSERT ( dbv , t == 0); 282 de = FALSE ; 283 i(( to_do = db_p -> ݔi_eded ) != 0) { 284 db_p -> ݔi_eded = 0; 285 to_do ) { 286 ELECT_FAILURE_ELECTION : 287 u_covy = TRUE ; 288 to_do = ELECT_ELECTION ; 290 ELECT_ELECTION : 291 ed_sucss = TRUE ; 293 ELECT_SEEK_MASTER : 294 to_do = 0; 299 } i(( de = ( suceded || 300 (! ed_sucss && `IS_VALID_EID ( db_p -> ma_eid )) || 301 db_p -> fished ))) 302 db_p -> e_thad -> fished = TRUE ; 304 i( ϡ_ = ELECT_ELECTION ) 305 to_do = ELECT_REPSTART ; 315 to_do = ELECT_ELECTION ; 316 i( db_p -> _picy = DB_REP_CLIENT && 317 ! db_p -> found_ma ) 318 to_do = ELECT_REPSTART ; 322 `UNLOCK_MUTEX ( db_p -> mux ); 323 i( de ) 326 } } 332 $__pmgr_is_ady ( dbv ) 333 DB_ENV * dbv ; 335 DB_REP * db_p ; 337 db_p = dbv -> p_hd ; 339 `RPRINT ( dbv , (dbenv, 341 db_p -> ݔi_eded , db_p-> fished , db_p-> ma_eid )); 343 ( db_p -> ݔi_eded || db_p-> fished ); 344 } } 350 $__pmgr_become_ma ( dbv ) 351 DB_ENV * dbv ; 353 DB_REP * db_p ; 354 DBT my_addr ; 355 t ; 357 db_p = dbv -> p_hd ; 358 db_p -> ma_eid = SELF_EID ; 359 db_p -> found_ma = TRUE ; 367 i(( t = `__pmgr_e_my_addr ( dbv , & my_addr )) != 0) 368 ( t ); 369 t = `__p_t ( dbv , & my_addr , DB_REP_MASTER ); 370 `__os_ ( dbv , my_addr . da ); 371 `__pmgr_ash_gi ( dbv ); 373 ( t ); 374 } } @../repmgr/repmgr_method.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 __pmgr_awa_thads __P (( DB_ENV *)); 20 $__pmgr_t ( dbv , hads , ags ) 21 DB_ENV * dbv ; 22 hads ; 23 u_t32_t ags ; 25 DB_REP * db_p ; 26 DBT my_addr ; 27 REPMGR_RUNNABLE * , * mesng ; 28 t , i ; 30 db_p = dbv -> p_hd ; 33 i( db_p -> my_addr . pt == 0) { 34 `__db_rx ( dbv , 36 ( EINVAL ); 39 i( db_p -> ! NULL || db_p-> fished ) { 40 `__db_rx ( dbv , 42 ( EINVAL ); 45 ags ) { 46 DB_REP_CLIENT : 47 DB_REP_ELECTION : 48 DB_REP_MASTER : 51 `__db_rx ( dbv , 53 ( EINVAL ); 56 i( hads <= 0) { 57 `__db_rx ( dbv , 59 ( EINVAL ); 62 i(( t = 63 `__os_oc ( dbv , ( u_t ) hads , ( REPMGR_RUNNABLE *), 64 & db_p -> mesngs )) != 0) 65 ( t ); 66 db_p -> hads =threads; 68 i(( t = `__pmgr_t_ ( dbv , db_p )) != 0 || 69 ( t = `__pmgr__sync ( dbv , db_p )) != 0 || 70 ( t = `__p_t_t ( dbv , SELF_EID , __pmgr_nd )) != 0) 71 ( t ); 78 i(( db_p -> _picy = ags = DB_REP_MASTER ) 79 t = `__pmgr_become_ma ( dbv ); 81 i(( t = `__pmgr_e_my_addr ( dbv , & my_addr )) != 0) 82 ( t ); 83 t = `__p_t ( dbv , & my_addr , DB_REP_CLIENT ); 84 `__os_ ( dbv , my_addr . da ); 85 i( t == 0) { 86 `LOCK_MUTEX ( db_p -> mux ); 87 t = `__pmgr__ei ( dbv , ELECT_SEEK_MASTER ); 88 `UNLOCK_MUTEX ( db_p -> mux ); 91 i( t != 0) 92 ( t ); 94 i(( t = `__os_oc ( dbv , 1, ( REPMGR_RUNNABLE ), & )) 96 ( t ); 97 -> dbv = dbenv; 98 -> run = __pmgr__thad ; 99 i(( t = `__pmgr_thad_t ( dbv , )) != 0) { 100 `__db_r ( dbv , t , "can't start selectorhread"); 101 `__os_ ( dbv , ); 102 ( t ); 104 db_p -> = selector; 106 i =0; i< hads ; i++) { 107 i(( t = `__os_oc ( dbv , 1, ( REPMGR_RUNNABLE ), 108 & mesng )) != 0) 109 ( t ); 111 mesng -> dbv = dbenv; 112 mesng -> run = __pmgr_msg_thad ; 113 i(( t = `__pmgr_thad_t ( dbv , mesng )) != 0) { 114 `__os_ ( dbv , mesng ); 115 ( t ); 117 db_p -> mesngs [ i ] = mesng ; 120 ( t ); 121 } } 127 $__pmgr_o ( dbv ) 128 DB_ENV * dbv ; 130 DB_REP * db_p ; 131 t , t_t ; 133 t = 0; 134 db_p = dbv -> p_hd ; 135 i( db_p -> ! NULL ) { 136 `RPRINT ( dbv , (dbenv, "Stoppingepmgrhreads")); 137 t = `__pmgr__thads ( dbv ); 138 i(( t_t = `__pmgr_awa_thads ( dbv )!0 && t == 0) 139 t = t_t ; 140 `RPRINT ( dbv , (dbenv, "Repmgrhreadsre finished")); 143 i(( t_t = `__pmgr_t_o ( dbv )!0 && t == 0) 144 t = t_t ; 146 i(( t_t = `__pmgr_o_sync ( dbv )!0 && t == 0) 147 t = t_t ; 149 ( t ); 150 } } 156 $__pmgr_t_ack_picy ( dbv , picy ) 157 DB_ENV * dbv ; 158 picy ; 160 picy ) { 161 DB_REPMGR_ACKS_ALL : 162 DB_REPMGR_ACKS_ALL_PEERS : 163 DB_REPMGR_ACKS_NONE : 164 DB_REPMGR_ACKS_ONE : 165 DB_REPMGR_ACKS_ONE_PEER : 166 DB_REPMGR_ACKS_QUORUM : 167 dbv -> p_hd -> rm_picy = picy ; 170 `__db_rx ( dbv , 172 ( EINVAL ); 174 } } 180 $__pmgr_g_ack_picy ( dbv , picy ) 181 DB_ENV * dbv ; 182 * picy ; 184 * picy = dbv -> p_hd -> rm_picy ; 186 } } 192 $__pmgr_v_ ( dbv , db_p ) 193 DB_ENV * dbv ; 194 DB_REP * db_p ; 196 t ; 199 db_p -> ack_timeout = 1 * US_PER_SEC ; 200 db_p -> ci_y_wa = 30 * US_PER_SEC ; 201 db_p -> ei_y_wa = 10 * US_PER_SEC ; 202 db_p -> cfig_nses = 0; 203 db_p -> = DB_EID_INVALID ; 204 db_p -> rm_picy = DB_REPMGR_ACKS_QUORUM ; 206 #ifde DB_WIN32 207 db_p -> was = NULL ; 209 db_p -> ad_pe = db_p-> wre_pe = -1; 211 i(( t = `__pmgr_t_ ( dbv , db_p )) == 0) 212 t = `__pmgr_queue_ ( dbv , db_p ); 214 ( t ); 215 } } 221 $__pmgr_v_deroy ( dbv , db_p ) 222 DB_ENV * dbv ; 223 DB_REP * db_p ; 225 `__pmgr_queue_deroy ( dbv ); 226 `__pmgr_t_deroy ( dbv , db_p ); 227 i( db_p -> mesngs ! NULL ) { 228 `__os_ ( dbv , db_p -> mesngs ); 229 db_p -> mesngs = NULL ; 231 } } 237 $__pmgr__thads ( dbv ) 238 DB_ENV * dbv ; 240 DB_REP * db_p ; 241 t ; 243 db_p = dbv -> p_hd ; 249 `LOCK_MUTEX ( db_p -> mux ); 250 db_p -> fished = TRUE ; 251 i( db_p -> e_thad ! NULL && 252 ( t = `__pmgr_sigl (& db_p -> check_ei )) != 0) 253 uock ; 255 i(( t = `__pmgr_sigl (& db_p -> queue_nemy )) != 0) 256 uock ; 257 `UNLOCK_MUTEX ( db_p -> mux ); 259 ( `__pmgr_wake_ma_thad ( dbv )); 261 uock : 262 `UNLOCK_MUTEX ( db_p -> mux ); 263 ( t ); 264 } } 267 $__pmgr_awa_thads ( dbv ) 268 DB_ENV * dbv ; 270 DB_REP * db_p ; 271 REPMGR_RUNNABLE * mesng ; 272 t , t_t , i ; 274 db_p = dbv -> p_hd ; 275 t = 0; 276 i( db_p -> e_thad ! NULL ) { 277 t = `__pmgr_thad_jo ( db_p -> e_thad ); 278 `__os_ ( dbv , db_p -> e_thad ); 279 db_p -> e_thad = NULL ; 282 i =0; i< db_p -> hads && db_p-> mesngs [i] ! NULL ; i++) { 283 mesng = db_p -> mesngs [ i ]; 284 i(( t_t = `__pmgr_thad_jo ( mesng )!0 && t == 0) 285 t = t_t ; 286 `__os_ ( dbv , mesng ); 287 db_p -> mesngs [ i ] = NULL ; 289 `__os_ ( dbv , db_p -> mesngs ); 290 db_p -> mesngs = NULL ; 292 i( db_p -> ! NULL ) { 293 i(( t_t = `__pmgr_thad_jo ( db_p -> )) != 0 && 294 t == 0) 295 t = t_t ; 296 `__os_ ( dbv , db_p -> ); 297 db_p -> = NULL ; 300 ( t ); 301 } } 308 $__pmgr_t_lol_se ( dbv , ho , pt , ags ) 309 DB_ENV * dbv ; 310 cڡ * ho ; 311 u_t pt ; 312 u_t32_t ags ; 314 ADDRINFO * addss_li ; 315 DB_REP * db_p ; 316 pmgr_Ïddr_t addr ; 317 locked , t ; 318 cڡ * shab_ho ; 319 bufr [ MAXHOSTNAMELEN ]; 321 i( ags != 0) 322 ( `__db_ ( dbv , "DB_ENV->repmgr_set_local_site", 0)); 324 db_p = dbv -> p_hd ; 325 i( db_p -> my_addr . pt != 0) { 326 `__db_rx ( dbv , "Listenddresslready set"); 327 ( EINVAL ); 337 i( ho = NULL ) { 338 i(( t = `ghome ( bufr , (buffer))) != 0) 339 ( t_o ); 342 bufr [(buffer) - 1] = '\0'; 343 shab_ho = bufr ; 345 shab_ho = ho ; 347 i(( t = `__pmgr_gaddr ( dbv , 348 ho , pt , AI_PASSIVE , & addss_li )) != 0) 349 ( t ); 351 i(( t = `__pmgr_ck_Ïddr ( dbv , 352 shab_ho , pt , addss_li , & addr )) != 0) { 353 `__db_addrfo ( dbv , addss_li ); 354 ( t ); 357 i( `REPMGR_SYNC_INITED ( db_p )) { 358 `LOCK_MUTEX ( db_p -> mux ); 359 locked = TRUE ; 361 locked = FALSE ; 363 `memy (& db_p -> my_addr , & addr , (addr)); 365 i( locked ) 366 `UNLOCK_MUTEX ( db_p -> mux ); 368 } } 380 $__pmgr_add_me_se ( dbv , ho , pt , eidp , ags ) 381 DB_ENV * dbv ; 382 cڡ * ho ; 383 u_t pt ; 384 * eidp ; 385 u_t32_t ags ; 387 DB_REP * db_p ; 388 REPMGR_SITE * se ; 389 eid , locked , t ; 391 i(( t = `__db_fchk ( dbv , 392 "DB_ENV->pmgr_add_me_se", ags , DB_REPMGR_PEER )) != 0) 393 ( t ); 395 i( ho = NULL ) { 396 `__db_rx ( dbv , 398 ( EINVAL ); 401 db_p = dbv -> p_hd ; 403 i( `REPMGR_SYNC_INITED ( db_p )) { 404 `LOCK_MUTEX ( db_p -> mux ); 405 locked = TRUE ; 407 locked = FALSE ; 409 i(( t = `__pmgr_add_se ( dbv , ho , pt , & se )) != 0) 410 uock ; 411 eid = `EID_FROM_SITE ( se ); 413 i( `LF_ISSET ( DB_REPMGR_PEER )) 414 db_p -> = eid ; 415 i( eidp ! NULL ) 416 * eidp = eid ; 418 uock : i( locked ) 419 `UNLOCK_MUTEX ( db_p -> mux ); 420 ( t ); 421 } } @../repmgr/repmgr_msg.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 mesge_lo __P (( DB_ENV *)); 15 oss_mesge __P (( DB_ENV *, DBT *, DBT*, )); 16 hd_wse __P (( DB_ENV *, cڡ DBT *)); 17 ack_mesge __P (( DB_ENV *, u_t32_t , DB_LSN *)); 23 $__pmgr_msg_thad ( gs ) 24 * gs ; 26 DB_ENV * dbv = gs ; 27 t ; 29 i(( t = `mesge_lo ( dbv )) != 0) { 30 `__db_r ( dbv , t , "messagehread failed"); 31 `__pmgr_thad_u ( dbv , t ); 33 ( NULL ); 34 } } 37 $mesge_lo ( dbv ) 38 DB_ENV * dbv ; 40 REPMGR_MESSAGE * msg ; 41 t ; 43 ( t = `__pmgr_queue_g ( dbv , & msg )) == 0) { 44 ( t = `oss_mesge ( dbv , & msg -> cڌ , &msg-> c , 45 msg -> igg_eid )= DB_LOCK_DEADLOCK ) 46 `RPRINT ( dbv , (dbenv, "repmgr deadlocketry")); 48 `__os_ ( dbv , msg ); 49 i( t != 0) 50 ( t ); 53 ( t = DB_REP_UNAVAIL ? 0 :et); 54 } } 57 $oss_mesge ( dbv , cڌ , c , eid ) 58 DB_ENV * dbv ; 59 DBT * cڌ , * c ; 60 eid ; 62 DB_REP * db_p ; 63 REP * p ; 64 DB_LSN rml ; 65 t ; 66 u_t32_t gi ; 68 db_p = dbv -> p_hd ; 74 gi = db_p ->generation; 76 t = 77 `__p_oss_mesge ( dbv , cڌ , c , eid , & rml )) { 79 i( db_p -> keov_ndg ) { 80 db_p -> keov_ndg = FALSE ; 81 ( `__pmgr_become_ma ( dbv )); 85 DB_REP_NEWSITE : 86 ( `hd_wse ( dbv , c )); 88 DB_REP_HOLDELECTION : 89 `LOCK_MUTEX ( db_p -> mux ); 90 t = `__pmgr__ei ( dbv , ELECT_ELECTION ); 91 `UNLOCK_MUTEX ( db_p -> mux ); 92 i( t != 0) 93 ( t ); 96 DB_REP_DUPMASTER : 97 i(( t = `__pmgr_pt ( dbv , DB_REP_CLIENT )) != 0) 98 ( t ); 99 `LOCK_MUTEX ( db_p -> mux ); 100 t = `__pmgr__ei ( dbv , ELECT_ELECTION ); 101 `UNLOCK_MUTEX ( db_p -> mux ); 102 i( t != 0) 103 ( t ); 106 DB_REP_ISPERM : 110 p = db_p -> gi ; 111 i( db_p -> rm_picy = DB_REPMGR_ACKS_NONE || 112 ( `IS_PEER_POLICY ( db_p -> rm_picy ) && 113 p -> iܙy == 0)) 116 i(( t = `ack_mesge ( dbv , gi , & rml )) != 0) 117 ( t ); 121 DB_REP_NOTPERM : 122 DB_REP_IGNORE : 123 DB_LOCK_DEADLOCK : 127 `__db_r ( dbv , t , "DB_ENV->rep_process_message"); 128 ( t ); 131 } } 140 $__pmgr_hd_evt ( dbv , evt , fo ) 141 DB_ENV * dbv ; 142 u_t32_t evt ; 143 * fo ; 145 DB_REP * db_p ; 147 db_p = dbv -> p_hd ; 149 i( db_p -> = NULL ) { 151 ( DB_EVENT_NOT_HANDLED ); 154 evt ) { 155 DB_EVENT_REP_ELECTED : 156 `DB_ASSERT ( dbv , fo = NULL ); 158 db_p -> found_ma = TRUE ; 159 db_p -> keov_ndg = TRUE ; 169 DB_EVENT_REP_NEWMASTER : 170 `DB_ASSERT ( dbv , fo ! NULL ); 172 db_p -> found_ma = TRUE ; 173 db_p -> ma_eid = *(*) fo ; 174 `__pmgr_ash_gi ( dbv ); 181 ( DB_EVENT_NOT_HANDLED ); 182 } } 192 $ack_mesge ( dbv , gi , l ) 193 DB_ENV * dbv ; 194 u_t32_t gi ; 195 DB_LSN * l ; 197 DB_REP * db_p ; 198 REPMGR_SITE * se ; 199 REPMGR_CONNECTION * cn ; 200 DB_REPMGR_ACK ack ; 201 DBT cڌ2 , c2 ; 202 t ; 204 db_p = dbv -> p_hd ; 210 i(! `IS_VALID_EID ( db_p -> ma_eid ) || 211 db_p -> ma_eid = SELF_EID ) { 212 `RPRINT ( dbv , (dbenv, 213 "drpgck wh ma %d", db_p -> ma_eid )); 217 t = 0; 218 `LOCK_MUTEX ( db_p -> mux ); 219 se = `SITE_FROM_EID ( db_p -> ma_eid ); 220 i( se -> e = SITE_CONNECTED && 221 ! `F_ISSET ( se -> f . cn , CONN_CONNECTING )) { 223 ack . gi = generation; 224 `memy (& ack . l ,, ( DB_LSN )); 225 cڌ2 . da = & ack ; 226 cڌ2 . size = ( ack ); 227 c2 . size = 0; 229 cn = se -> f .conn; 230 i(( t = `__pmgr_nd_e ( dbv , cn , REPMGR_ACK , 231 & cڌ2 , & c2 )= DB_REP_UNAVAIL ) 232 t = `__pmgr_bu_ci ( dbv , cn , FALSE ); 235 `UNLOCK_MUTEX ( db_p -> mux ); 236 ( t ); 237 } } 243 $hd_wse ( dbv , c ) 244 DB_ENV * dbv ; 245 cڡ DBT * c ; 247 ADDRINFO * ai ; 248 DB_REP * db_p ; 249 REPMGR_SITE * se ; 250 SITE_STRING_BUFFER bufr ; 251 pmgr_Ïddr_t * addr ; 252 size_t hn ; 253 u_t16_t pt ; 254 t ; 255 * ho ; 257 db_p = dbv -> p_hd ; 267 i( c -> size < ( pt ) + 1) { 268 `__db_rx ( dbv , "unexpected cdata size, msg ignored"); 271 `memy (& pt , c -> da , (port)); 272 pt = `ohs (port); 274 ho = (*)(( u_t8_t *) c -> da + ( pt )); 275 hn = ( c -> size - ( pt )) - 1; 276 ho [ hn ] = '\0'; 279 i( `rcmp ( ho , db_p -> my_addr .host) == 0 && 280 pt = db_p -> my_addr .port) { 281 `RPRINT ( dbv , (dbenv, "repmgr ignores own NEWSITE info")); 285 `LOCK_MUTEX ( db_p -> mux ); 286 i(( t = `__pmgr_add_se ( dbv , ho , pt , & se )= EEXIST ) { 287 `RPRINT ( dbv , (dbenv, 289 `__pmgr_fm_se_loc ( se , bufr ))); 298 addr = & se -> t_addr ; 299 i( addr -> addss_li = NULL ) { 300 i(( t = `__pmgr_gaddr ( dbv , 301 addr -> ho ,ddr-> pt , 0, & ai )) == 0) 302 addr -> addss_li = ai ; 303 i( t ! DB_REP_UNAVAIL ) 304 uock ; 307 t = 0; 308 i( se -> e = SITE_CONNECTED ) 309 uock ; 311 i( t != 0) 312 uock ; 313 `RPRINT ( dbv , (dbenv, "NEWSITE infodded %s", 314 `__pmgr_fm_se_loc ( se , bufr ))); 321 t = `__pmgr_wake_ma_thad ( dbv ); 323 uock : `UNLOCK_MUTEX ( db_p -> mux ); 324 ( t ); 325 } } 331 $__pmgr_ash_gi ( dbv ) 332 DB_ENV * dbv ; 334 DB_REP * db_p ; 335 REP * p ; 337 db_p = dbv -> p_hd ; 338 p = db_p -> gi ; 340 db_p -> gi = p -> g ; 341 } } @../repmgr/repmgr_net.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 13 ~"dbc/mp.h " 54 sndg_msg { 55 REPMGR_IOVECS miovecs ; 56 u_t8_t mty ; 57 u_t32_t mcڌ_size_buf , mc_size_buf ; 58 REPMGR_FLAT * mfmsg ; 61 __pmgr_nd_brd 62 __P (( DB_ENV *, cڡ DBT *, cڡ DBT *, u_t *, u_int *)); 63 tup_ndg_msg 64 __P (( ndg_msg *, u_t , cڡ DBT *, const DBT *)); 65 __pmgr_nd_ 66 __P (( DB_ENV *, REPMGR_CONNECTION *, ndg_msg *)); 67 queue_msg 68 __P (( DB_ENV *, REPMGR_CONNECTION *, ndg_msg *, size_t )); 69 橋n __P (( DB_ENV *, ndg_msg *)); 70 REPMGR_SITE * __pmgr_avaab_se __P (( DB_ENV *, )); 87 $__pmgr_nd ( dbv , cڌ , c , lp , eid , ags ) 88 DB_ENV * dbv ; 89 cڡ DBT * cڌ , * c ; 90 cڡ DB_LSN * lp ; 91 eid ; 92 u_t32_t ags ; 94 DB_REP * db_p ; 95 u_t nses , œrs , avaab , eded ; 96 t , t_t ; 97 REPMGR_SITE * se ; 98 REPMGR_CONNECTION * cn ; 100 db_p = dbv -> p_hd ; 102 `LOCK_MUTEX ( db_p -> mux ); 103 i( eid = DB_EID_BROADCAST ) { 104 i(( t = `__pmgr_nd_brd ( dbv , cڌ , c , 105 & nses , & œrs )) != 0) 106 out ; 114 i(( ags & ( DB_REP_ANYWHERE | DB_REP_REREQUEST )) == 115 DB_REP_ANYWHERE && 116 `IS_VALID_EID ( db_p -> ) && 117 ( se = `__pmgr_avaab_se ( dbv , db_p -> )) != 118 NULL ) { 119 `RPRINT ( dbv , (dbenv, "sendingequestoeer")); 120 } i(( se = `__pmgr_avaab_se ( dbv , eid )) == 121 NULL ) { 122 `RPRINT ( dbv , (dbenv, 124 t = DB_REP_UNAVAIL ; 125 out ; 128 cn = se -> f .conn; 129 i(( t = `__pmgr_nd_e ( dbv , cn , REPMGR_REP_MESSAGE , 130 cڌ , c )= DB_REP_UNAVAIL && 131 ( t_t = `__pmgr_bu_ci ( dbv , cn , FALSE )) != 0) 132 t = t_t ; 133 i( t != 0) 134 out ; 136 nses = 1; 137 œrs = se -> iܙy > 0 ? 1 : 0; 148 i( `LF_ISSET ( DB_REP_PERMANENT )) { 149 db_p -> rm_picy ) { 150 DB_REPMGR_ACKS_NONE : 151 out ; 153 DB_REPMGR_ACKS_ONE : 154 eded = 1; 155 avaab = nses ; 158 DB_REPMGR_ACKS_ALL : 160 eded = `__pmgr_g_nses ( db_p ) - 1; 161 avaab = nses ; 164 DB_REPMGR_ACKS_ONE_PEER : 165 eded = 1; 166 avaab = œrs ; 169 DB_REPMGR_ACKS_ALL_PEERS : 175 eded = 1; 176 avaab = œrs ; 179 DB_REPMGR_ACKS_QUORUM : 184 eded = ( `__pmgr_g_nses ( db_p ) - 1) / 2; 185 avaab = œrs ; 189 `COMPQUIET ( avaab , 0); 190 `COMPQUIET ( eded , 0); 191 () `__db_unknown_th ( dbv , "__repmgr_send"); 194 i( avaab < eded ) { 195 t = DB_REP_UNAVAIL ; 196 out ; 199 `RPRINT ( dbv , (dbenv, 200 "wawacknowdgemt:d %u", eded )); 201 t = `__pmgr_awa_ack ( dbv , lp ); 204 out : `UNLOCK_MUTEX ( db_p -> mux ); 205 i( t !0 && `LF_ISSET ( DB_REP_PERMANENT )) { 206 `STAT ( db_p -> gi -> m . _rm_ed ++); 207 `DB_EVENT ( dbv , DB_EVENT_REP_PERM_FAILED , NULL ); 209 ( t ); 210 } } 212 REPMGR_SITE * 213 $__pmgr_avaab_se ( dbv , eid ) 214 DB_ENV * dbv ; 215 eid ; 217 DB_REP * db_p ; 218 REPMGR_SITE * se ; 220 db_p = dbv -> p_hd ; 221 se = `SITE_FROM_EID ( eid ); 222 i( se -> e ! SITE_CONNECTED ) 223 ( NULL ); 225 i( `F_ISSET ( se -> f . cn , CONN_CONNECTING )) 226 ( NULL ); 227 ( se ); 228 } } 244 $__pmgr_nd_brd ( dbv , cڌ , c , nse , œr ) 245 DB_ENV * dbv ; 246 cڡ DBT * cڌ , * c ; 247 u_t * nse , * œr ; 249 DB_REP * db_p ; 250 ndg_msg msg ; 251 REPMGR_CONNECTION * cn ; 252 REPMGR_SITE * se ; 253 u_t nses , œrs ; 254 t ; 256 db_p = dbv -> p_hd ; 258 `tup_ndg_msg (& msg , REPMGR_REP_MESSAGE , cڌ , c ); 259 nses = œrs = 0; 266 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 267 i( `F_ISSET ( cn , CONN_CONNECTING | CONN_DEFUNCT ) || 268 ! `IS_VALID_EID ( cn -> eid )) 271 i(( t = `__pmgr_nd_ ( dbv , cn , & msg )) == 0) { 272 se = `SITE_FROM_EID ( cn -> eid ); 273 nses ++; 274 i( se -> iܙy > 0) 275 œrs ++; 276 } i( t = DB_REP_UNAVAIL ) { 277 i(( t = `__pmgr_bu_ci ( 278 dbv , cn , FALSE )) != 0) 279 ( t ); 281 ( t ); 284 * nse = nses ; 285 * œr = œrs ; 287 } } 307 $__pmgr_nd_e ( dbv , cn , msg_ty , cڌ , c ) 308 DB_ENV * dbv ; 309 REPMGR_CONNECTION * cn ; 310 u_t msg_ty ; 311 cڡ DBT * cڌ , * c ; 313 ndg_msg msg ; 315 `tup_ndg_msg (& msg , msg_ty , cڌ , c ); 316 ( `__pmgr_nd_ ( dbv , cn , & msg )); 317 } } 325 $__pmgr_nd_ ( dbv , cn , msg ) 326 DB_ENV * dbv ; 327 REPMGR_CONNECTION * cn ; 328 ndg_msg * msg ; 330 #OUT_QUEUE_LIMIT 10 ) 331 REPMGR_IOVECS iovecs ; 332 SITE_STRING_BUFFER bufr ; 333 t ; 334 size_t nw ; 335 size_t tٮ_wrn ; 337 `DB_ASSERT ( dbv , ! `F_ISSET ( cn , CONN_CONNECTING )); 338 i(! `STAILQ_EMPTY (& cn -> outbound_queue )) { 344 `RPRINT ( dbv , (dbenv, "msgo %so be queued", 345 `__pmgr_fm_eid_loc ( dbv -> p_hd , 346 cn -> eid , bufr ))); 347 i( cn -> out_queue_ngth < OUT_QUEUE_LIMIT ) 348 ( `queue_msg ( dbv , cn , msg , 0)); 350 `RPRINT ( dbv , (dbenv, "queueimitxceeded")); 351 `STAT ( dbv -> p_hd -> 352 gi -> m . _msgs_drݳd ++); 363 `memy (& iovecs , & msg ->iovecs, (iovecs)); 364 tٮ_wrn = 0; 365 ( t = `__pmgr_wrev ( cn -> fd , & iovecs . ves [iovecs. offt ], 366 iovecs . cou -iovecs. offt , & nw )) == 0) { 367 tٮ_wrn + nw ; 368 i( `__pmgr_upde_csumed (& iovecs , nw )) 372 i( t ! WOULDBLOCK ) { 373 `__db_r ( dbv , t , "socket writing failure"); 374 ( DB_REP_UNAVAIL ); 377 `RPRINT ( dbv , (dbenv, "wrote only %lu byteso %s", 378 ( u_lg ) tٮ_wrn , 379 `__pmgr_fm_eid_loc ( dbv -> p_hd , cn -> eid , bufr ))); 385 i(( t = `queue_msg ( dbv , cn , msg , tٮ_wrn )) != 0) 386 ( t ); 388 `STAT ( dbv -> p_hd -> gi -> m . _msgs_queued ++); 397 #ifde DB_WIN32 398 i( `WSAEvtSe ( cn -> fd , cn-> evt_obje , 399 FD_READ | FD_WRITE | FD_CLOSE = SOCKET_ERROR ) { 400 t = t_o ; 401 `__db_r ( dbv , t , "can'tdd FD_WRITEvent bit"); 402 ( t ); 405 ( `__pmgr_wake_ma_thad ( dbv )); 406 } } 418 $__pmgr_is_rmt ( dbv , lp ) 419 DB_ENV * dbv ; 420 cڡ DB_LSN * lp ; 422 DB_REP * db_p ; 423 REPMGR_SITE * se ; 424 u_t eid , nses , œrs ; 425 is_rm , has_missg_ ; 427 db_p = dbv -> p_hd ; 429 i( db_p -> rm_picy = DB_REPMGR_ACKS_NONE ) 430 ( TRUE ); 432 nses = œrs = 0; 433 has_missg_ = FALSE ; 434 eid = 0;id < db_p -> se_t ;id++) { 435 se = `SITE_FROM_EID ( eid ); 436 i( se -> iܙy == -1) { 441 has_missg_ = TRUE ; 445 i( `log_com (& se -> max_ack , lp ) >= 0) { 446 nses ++; 447 i( se -> iܙy > 0) 448 œrs ++; 451 i( se -> iܙy > 0) 452 has_missg_ = TRUE ; 456 db_p -> rm_picy ) { 457 DB_REPMGR_ACKS_ONE : 458 is_rm = ( nses >= 1); 460 DB_REPMGR_ACKS_ONE_PEER : 461 is_rm = ( œrs >= 1); 463 DB_REPMGR_ACKS_QUORUM : 471 i( `__pmgr_g_nses ( db_p ) == 2) { 477 is_rm = ( œrs >= 1); 479 is_rm = ( œrs >( `__pmgr_g_nses ( db_p )-1)/2); 481 DB_REPMGR_ACKS_ALL : 483 is_rm = ( nses > `__pmgr_g_nses ( db_p ) - 1); 485 DB_REPMGR_ACKS_ALL_PEERS : 486 i( db_p -> se_t < `__pmgr_g_nses (db_rep) - 1) { 488 has_missg_ = TRUE ; 490 is_rm = ! has_missg_ ; 493 is_rm = FALSE ; 494 () `__db_unknown_th ( dbv , "__repmgr_is_permanent"); 496 ( is_rm ); 497 } } 515 $__pmgr_bu_ci ( dbv , cn , do_o ) 516 DB_ENV * dbv ; 517 REPMGR_CONNECTION * cn ; 518 do_o ; 520 DB_REP * db_p ; 521 cg , t , eid ; 523 db_p = dbv -> p_hd ; 524 t = 0; 526 `DB_ASSERT ( dbv , ! `TAILQ_EMPTY (& db_p -> cis )); 527 eid = cn ->eid; 528 cg = `F_ISSET ( cn , CONN_CONNECTING ); 529 i( do_o ) 530 `__pmgr_nup_ci ( dbv , cn ); 532 `F_SET ( cn , CONN_DEFUNCT ); 533 cn -> eid = -1; 542 i( `IS_VALID_EID ( eid )) { 544 i(( t = `__pmgr_schedu_ci_m ( 545 dbv , ( u_t ) eid , FALSE )) != 0) 546 ( t ); 553 i(! cg && eid = db_p -> ma_eid ) { 554 () `__memp_t_cfig ( 555 dbv , DB_MEMP_SYNC_INTERRUPT , 1); 556 i(( t = `__pmgr__ei ( 557 dbv , ELECT_FAILURE_ELECTION )) != 0) 558 ( t ); 560 } i(! do_o ) { 565 t = `__pmgr_wake_ma_thad ( dbv ); 567 ( t ); 568 } } 575 $__pmgr_nup_ci ( dbv , cn ) 576 DB_ENV * dbv ; 577 REPMGR_CONNECTION * cn ; 579 DB_REP * db_p ; 580 QUEUED_OUTPUT * out ; 581 REPMGR_FLAT * msg ; 582 DBT * dbt ; 584 db_p = dbv -> p_hd ; 586 `TAILQ_REMOVE (& db_p -> cis , cn , s ); 587 i( cn -> fd ! INVALID_SOCKET ) { 588 () `osock ( cn -> fd ); 589 #ifde DB_WIN32 590 () `WSACloEvt ( cn -> evt_obje ); 597 i( cn -> adg_pha = DATA_PHASE ) { 598 i( cn -> msg_ty = REPMGR_REP_MESSAGE ) 599 `__os_ ( dbv , cn -> put . p_mesge ); 601 dbt = & cn -> put . pmgr_msg . l ; 602 `__os_ ( dbv , dbt -> da ); 603 dbt = & cn -> put . pmgr_msg . c ; 604 i( dbt -> size > 0) 605 `__os_ ( dbv , dbt -> da ); 608 ! `STAILQ_EMPTY (& cn -> outbound_queue )) { 609 out = `STAILQ_FIRST (& cn -> outbound_queue ); 610 `STAILQ_REMOVE_HEAD (& cn -> outbound_queue , s ); 611 msg = out ->msg; 612 i(-- msg -> f_cou <= 0) 613 `__os_ ( dbv , msg ); 614 `__os_ ( dbv , out ); 617 `__os_ ( dbv , cn ); 618 } } 621 $queue_msg ( dbv , cn , msg , offt ) 622 DB_ENV * dbv ; 623 REPMGR_CONNECTION * cn ; 624 ndg_msg * msg ; 625 size_t offt ; 627 QUEUED_OUTPUT * q_emt ; 628 t ; 630 i( msg -> fmsg = NULL && (( t = `橋n ( dbv , msg)) != 0)) 631 ( t ); 632 i(( t = `__os_mloc ( dbv , ( QUEUED_OUTPUT ), & q_emt )) != 0) 633 ( t ); 634 q_emt -> msg = msg-> fmsg ; 635 msg -> fmsg -> f_cou ++; 636 q_emt -> offt = offset; 639 `STAILQ_INSERT_TAIL (& cn -> outbound_queue , q_emt , s ); 640 cn -> out_queue_ngth ++; 642 } } 649 $tup_ndg_msg ( msg , ty , cڌ , c ) 650 ndg_msg * msg ; 651 u_t ty ; 652 cڡ DBT * cڌ , * c ; 654 u_t32_t c_size ; 660 `__pmgr_iovec_ (& msg -> iovecs ); 661 msg -> ty =ype; 662 `__pmgr_add_bufr (& msg -> iovecs , &msg-> ty , (msg->type)); 664 msg -> cڌ_size_buf = `htl ( cڌ -> size ); 665 `__pmgr_add_bufr (& msg -> iovecs , 666 & msg -> cڌ_size_buf , (msg->control_size_buf)); 668 c_size = c = NULL ? 0 :ec-> size ; 669 msg -> c_size_buf = `htl ( c_size ); 670 `__pmgr_add_bufr ( 671 & msg -> iovecs , &msg-> c_size_buf , (msg->rec_size_buf)); 673 i( cڌ -> size > 0) 674 `__pmgr_add_dbt (& msg -> iovecs , cڌ ); 676 i( c_size > 0) 677 `__pmgr_add_dbt (& msg -> iovecs , c ); 679 msg -> fmsg = NULL ; 680 } } 688 $橋n ( dbv , msg ) 689 DB_ENV * dbv ; 690 ndg_msg * msg ; 692 u_t8_t * p ; 693 size_t msg_size ; 694 i , t ; 696 `DB_ASSERT ( dbv , msg -> fmsg = NULL ); 698 msg_size = msg -> iovecs . tٮ_bys ; 699 i(( t = `__os_mloc ( dbv , (* msg -> fmsg + msg_size , 700 & msg -> fmsg )) != 0) 701 ( t ); 702 msg -> fmsg -> ngth = msg_size ; 703 msg -> fmsg -> f_cou = 0; 704 p = & msg -> fmsg -> da [0]; 706 i = 0; i < msg -> iovecs . cou ; i++) { 707 `memy ( p , msg -> iovecs . ves [ i ]. iov_ba , 708 msg -> iovecs . ves [ i ]. iov_n ); 709 p = &p[ msg -> iovecs . ves [ i ]. iov_n ]; 711 `__pmgr_iovec_ (& msg -> iovecs ); 712 `__pmgr_add_bufr (& msg -> iovecs , &msg-> fmsg -> da [0], msg_size ); 714 } } 720 $__pmgr_fd_se ( dbv , ho , pt ) 721 DB_ENV * dbv ; 722 cڡ * ho ; 723 u_t pt ; 725 DB_REP * db_p ; 726 REPMGR_SITE * se ; 727 u_t i ; 729 db_p = dbv -> p_hd ; 730 i = 0; i < db_p -> se_t ; i++) { 731 se = & db_p -> ses [ i ]; 733 i( `rcmp ( se -> t_addr . ho , host) == 0 && 734 se -> t_addr . pt ==ort) 735 (() i ); 739 } } 753 $__pmgr_ck_Ïddr ( dbv , ho , pt , li , addr ) 754 DB_ENV * dbv ; 755 cڡ * ho ; 756 u_t pt ; 757 ADDRINFO * li ; 758 pmgr_Ïddr_t * addr ; 760 t ; 762 `DB_ASSERT ( dbv , ho ! NULL ); 764 i(( t = `__os_rdup ( dbv , ho , & addr ->host)) != 0) 765 ( t ); 766 addr -> pt = ( u_t16_t )port; 767 addr -> addss_li = li ; 768 addr -> cut = NULL ; 770 } } 777 $__pmgr_gaddr ( dbv , ho , pt , ags , su ) 778 DB_ENV * dbv ; 779 cڡ * ho ; 780 u_t pt ; 781 ags ; 782 ADDRINFO ** su ; 784 ADDRINFO * sw , hts ; 785 bufr [10]; 786 #ifde DB_WIN32 787 t ; 794 i( pt > UINT16_MAX ) { 795 `__db_rx ( dbv , "port %uargerhan maxort %u", 796 pt , UINT16_MAX ); 797 ( EINVAL ); 800 #ifde DB_WIN32 801 i(! dbv -> p_hd -> w_ed && 802 ( t = `__pmgr_w_ ( dbv )) != 0) 803 ( t ); 806 `memt (& hts , 0, (hints)); 807 hts . ai_my = AF_UNSPEC ; 808 hts . ai_sockty = SOCK_STREAM ; 809 hts . ai_ags = ags ; 810 () `tf ( bufr , (bufr), "%u", pt ); 819 i( `__db_gaddrfo ( dbv , ho , pt , bufr , & hts , & sw ) != 0) 820 ( DB_REP_UNAVAIL ); 821 * su = sw ; 824 } } 839 $__pmgr_add_se ( dbv , ho , pt , ws ) 840 DB_ENV * dbv ; 841 cڡ * ho ; 842 u_t pt ; 843 REPMGR_SITE ** ws ; 845 DB_REP * db_p ; 846 ADDRINFO * addss_li ; 847 pmgr_Ïddr_t addr ; 848 REPMGR_SITE * se ; 849 t , eid ; 851 t = 0; 852 db_p = dbv -> p_hd ; 854 i( `IS_VALID_EID ( eid = `__pmgr_fd_se ( dbv , ho , pt ))) { 855 se = `SITE_FROM_EID ( eid ); 856 t = EEXIST ; 857 out ; 860 i(( t = `__pmgr_gaddr ( 861 dbv , ho , pt , 0, & addss_li )= DB_REP_UNAVAIL ) { 863 addss_li = NULL ; 864 } i( t != 0) 865 ( t ); 867 i(( t = `__pmgr_ck_Ïddr ( 868 dbv , ho , pt , addss_li , & addr )) != 0) { 869 `__db_addrfo ( dbv , addss_li ); 870 ( t ); 873 i(( t = `__pmgr_w_se ( dbv , & se , & addr , SITE_IDLE )) != 0) { 874 `__pmgr_nup_Ïddr ( dbv , & addr ); 875 ( t ); 878 i( db_p -> ! NULL && 879 ( t = `__pmgr_schedu_ci_m ( 880 dbv , ( u_t ) `EID_FROM_SITE ( se ), TRUE )) != 0) 881 ( t ); 884 out : 885 i( ws ! NULL ) 886 * ws = se ; 887 ( t ); 888 } } 896 $__pmgr_t_ ( dbv , db_p ) 897 DB_ENV * dbv ; 898 DB_REP * db_p ; 900 `COMPQUIET ( dbv , NULL ); 902 db_p -> li_fd = INVALID_SOCKET ; 903 db_p -> ma_eid = DB_EID_INVALID ; 905 `TAILQ_INIT (& db_p -> cis ); 906 `TAILQ_INIT (& db_p -> s ); 909 } } 920 $__pmgr_li ( dbv ) 921 DB_ENV * dbv ; 923 DB_REP * db_p ; 924 ADDRINFO * ai ; 925 * why ; 926 sockt , t ; 927 sock_t s ; 929 db_p = dbv -> p_hd ; 932 s = INVALID_SOCKET ; 933 ai = `ADDR_LIST_FIRST (& db_p -> my_addr ); 940 `COMPQUIET ( why , ""); 941 `DB_ASSERT ( dbv , ai ! NULL ); 942 ; ai ! NULL ; `ADDR_LIST_NEXT (& db_p -> my_addr )) { 944 i(( s = `sock ( ai -> ai_my , 945 ai -> ai_sockty ,i-> ai_oc )= INVALID_SOCKET ) { 946 why = "can't createisten socket"; 955 sockt = 1; 956 i( `tsockt ( s , SOL_SOCKET , SO_REUSEADDR , ( sockt_t )& sockt , 957 ( sockt )) != 0) { 958 why = "can't set REUSEADDR socket option"; 962 i( `bd ( s , ai -> ai_addr , ( sockn_t i-> ai_add ) != 0) { 963 why = "can't bind socketoisteningddress"; 964 () `osock ( s ); 965 s = INVALID_SOCKET ; 969 i( `li ( s , 5) != 0) { 970 why = "listen()"; 974 i(( t = `__pmgr_t_nblockg ( s )) != 0) { 975 `__db_r ( dbv , t , "can't unblockisten socket"); 976 n ; 979 db_p -> li_fd = s ; 983 t = t_o ; 984 `__db_r ( dbv , t , why ); 985 n : i( s ! INVALID_SOCKET ) 986 () `osock ( s ); 987 ( t ); 988 } } 994 $__pmgr_t_o ( dbv ) 995 DB_ENV * dbv ; 997 DB_REP * db_p ; 998 REPMGR_CONNECTION * cn ; 999 #ide DB_WIN32 1000 sigai siga ; 1002 t ; 1004 db_p = dbv -> p_hd ; 1005 i( db_p -> li_fd = INVALID_SOCKET ) 1008 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 1009 i( cn -> fd ! INVALID_SOCKET ) { 1010 () `osock ( cn -> fd ); 1011 cn -> fd = INVALID_SOCKET ; 1012 #ifde DB_WIN32 1013 () `WSACloEvt ( cn -> evt_obje ); 1018 t = 0; 1019 i( `osock ( db_p -> li_fd = SOCKET_ERROR ) 1020 t = t_o ; 1022 #ifde DB_WIN32 1024 i( `WSAC˪up (= SOCKET_ERROR && t == 0) 1025 t = t_o ; 1026 db_p -> w_ed = FALSE ; 1029 i( db_p -> chg_sig_hdr ) { 1030 `memt (& siga , 0, (sigact)); 1031 siga . _hdr = SIG_DFL ; 1032 i( `sigai ( SIGPIPE , & siga , NULL =-1 && t == 0) 1033 t = o ; 1036 db_p -> li_fd = INVALID_SOCKET ; 1037 ( t ); 1038 } } 1044 $__pmgr_t_deroy ( dbv , db_p ) 1045 DB_ENV * dbv ; 1046 DB_REP * db_p ; 1048 REPMGR_CONNECTION * cn ; 1049 REPMGR_RETRY * y ; 1050 REPMGR_SITE * se ; 1051 u_t i ; 1053 `__pmgr_nup_Ïddr ( dbv , & db_p -> my_addr ); 1055 i( db_p -> ses = NULL ) 1058 ! `TAILQ_EMPTY (& db_p -> s )) { 1059 y = `TAILQ_FIRST (& db_p -> s ); 1060 `TAILQ_REMOVE (& db_p -> s , y , s ); 1061 `__os_ ( dbv , y ); 1064 ! `TAILQ_EMPTY (& db_p -> cis )) { 1065 cn = `TAILQ_FIRST (& db_p -> cis ); 1066 `__pmgr_nup_ci ( dbv , cn ); 1069 i = 0; i < db_p -> se_t ; i++) { 1070 se = & db_p -> ses [ i ]; 1071 `__pmgr_nup_Ïddr ( dbv , & se -> t_addr ); 1073 `__os_ ( dbv , db_p -> ses ); 1074 db_p -> ses = NULL ; 1075 } } @../repmgr/repmgr_posix.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 #__INCLUDE_SELECT_H 1 ) 13 ~"db_t.h " 20 #ifde _POSIX_THREAD_ATTR_STACKSIZE 21 size_t g__pmgr_guesimed_max = (128 * 1024); 24 fish_cg __P (( DB_ENV *, REPMGR_CONNECTION *)); 33 $__pmgr_thad_t ( dbv , ruab ) 34 DB_ENV * dbv ; 35 REPMGR_RUNNABLE * ruab ; 37 had__t * p ; 38 #ifde _POSIX_THREAD_ATTR_STACKSIZE 39 had__t ibus ; 40 size_t size ; 41 t ; 44 ruab -> fished = FALSE ; 46 #ifde _POSIX_THREAD_ATTR_STACKSIZE 47 p = & ibus ; 48 i(( t = `had__ (& ibus )) != 0) { 49 `__db_r ( dbv , 50 t , "pthread_attr_init inepmgr_thread_start"); 51 ( t ); 58 size = __pmgr_guesimed_max ; 59 i(( size_t ) > 4) 60 size *= 2; 61 #ifde PTHREAD_STACK_MIN 62 i( size < PTHREAD_STACK_MIN ) 63 size = PTHREAD_STACK_MIN ; 65 i(( t = `had__tacksize (& ibus , size )) != 0) { 66 `__db_r ( dbv , 67 t , "pthread_attr_setstacksize inepmgr_thread_start"); 68 ( t ); 71 p = NULL ; 74 ( `had_ (& ruab -> thad_id , p , 75 ruab -> run , dbv )); 76 } } 82 $__pmgr_thad_jo ( thad ) 83 REPMGR_RUNNABLE * thad ; 85 ( `had_jo ( thad -> thad_id , NULL )); 86 } } 92 $__pmgr_t_nblockg ( fd ) 93 sock_t fd ; 95 ags ; 97 i(( ags = `f ( fd , F_GETFL , 0)) < 0) 98 ( o ); 99 i( `f ( fd , F_SETFL , ags | O_NONBLOCK ) < 0) 100 ( o ); 102 } } 114 $__pmgr_wake_wag_nds ( dbv ) 115 DB_ENV * dbv ; 117 ( `had_cd_brd (& dbv -> p_hd -> ack_cdi )); 118 } } 130 $__pmgr_awa_ack ( dbv , lp ) 131 DB_ENV * dbv ; 132 cڡ DB_LSN * lp ; 134 DB_REP * db_p ; 135 timeec ddle ; 136 t , timed ; 138 db_p = dbv -> p_hd ; 140 i(( timed = ( db_p -> ack_timeout > 0))) 141 `__pmgr_compu_wa_ddle ( dbv , & ddle , 142 db_p -> ack_timeout ); 144 `COMPQUIET ( ddle . tv_c , 0); 146 ! `__pmgr_is_rmt ( dbv , lp )) { 147 i( timed ) 148 t = `had_cd_timedwa (& db_p -> ack_cdi , 149 & db_p -> mux , & ddle ); 151 t = `had_cd_wa (& db_p -> ack_cdi , 152 & db_p -> mux ); 153 i( db_p -> fished ) 154 ( DB_REP_UNAVAIL ); 155 i( t != 0) 156 ( t ); 159 } } 170 $__pmgr_compu_wa_ddle ( dbv , su , wa ) 171 DB_ENV * dbv ; 172 timeec * su ; 173 db_timeout_t wa ; 175 db_timeec v ; 183 `__os_gtime ( dbv , ( db_timeec *) su ); 186 `DB_TIMEOUT_TO_TIMESPEC ( wa , & v ); 188 `timeedd ( su , & v ); 189 } } 201 $__pmgr__sync ( dbv , db_p ) 202 DB_ENV * dbv ; 203 DB_REP * db_p ; 205 t , mux_ed , ack_ed , e_ed , queue_ed , 206 fe_desc [2]; 208 `COMPQUIET ( dbv , NULL ); 210 mux_ed = ack_ed = e_ed = queue_ed = FALSE ; 212 i(( t = `had_mux_ (& db_p -> mux , NULL )) != 0) 213 r ; 214 mux_ed = TRUE ; 216 i(( t = `had_cd_ (& db_p -> ack_cdi , NULL )) != 0) 217 r ; 218 ack_ed = TRUE ; 220 i(( t = `had_cd_ (& db_p -> check_ei , NULL )) != 0) 221 r ; 222 e_ed = TRUE ; 224 i(( t = `had_cd_ (& db_p -> queue_nemy , NULL )) != 0) 225 r ; 226 queue_ed = TRUE ; 228 i(( t = `pe ( fe_desc )) == -1) { 229 t = o ; 230 r ; 233 db_p -> ad_pe = fe_desc [0]; 234 db_p -> wre_pe = fe_desc [1]; 236 r : 237 i( queue_ed ) 238 () `had_cd_deroy (& db_p -> queue_nemy ); 239 i( e_ed ) 240 () `had_cd_deroy (& db_p -> check_ei ); 241 i( ack_ed ) 242 () `had_cd_deroy (& db_p -> ack_cdi ); 243 i( mux_ed ) 244 () `had_mux_deroy (& db_p -> mux ); 245 db_p -> ad_pe = db_p-> wre_pe = -1; 247 ( t ); 248 } } 257 $__pmgr_o_sync ( dbv ) 258 DB_ENV * dbv ; 260 DB_REP * db_p ; 261 t , t_t ; 263 db_p = dbv -> p_hd ; 265 i(!( `REPMGR_SYNC_INITED ( db_p ))) 268 t = `had_cd_deroy (& db_p -> queue_nemy ); 270 i(( t_t = `had_cd_deroy (& db_p -> check_ei )) != 0 && 271 t == 0) 272 t = t_t ; 274 i(( t_t = `had_cd_deroy (& db_p -> ack_cdi )) != 0 && 275 t == 0) 276 t = t_t ; 278 i(( t_t = `had_mux_deroy (& db_p -> mux )) != 0 && 279 t == 0) 280 t = t_t ; 282 i( `o ( db_p -> ad_pe =-1 && t == 0) 283 t = o ; 284 i( `o ( db_p -> wre_pe =-1 && t == 0) 285 t = o ; 287 db_p -> ad_pe = db_p-> wre_pe = -1; 288 ( t ); 289 } } 299 $__pmgr_t_ ( dbv , db_p ) 300 DB_ENV * dbv ; 301 DB_REP * db_p ; 303 t ; 304 sigai siga ; 306 i(( t = `__pmgr_li ( dbv )) != 0) 307 ( t ); 313 i( `sigai ( SIGPIPE , NULL , & siga ) == -1) { 314 t = o ; 315 `__db_r ( dbv , t , "can'tccess signal handler"); 316 r ; 322 i(( db_p -> chg_sig_hdr = ( siga . _hdr = SIG_DFL ))) { 323 siga . _hdr = SIG_IGN ; 324 siga . _ags = 0; 325 i( `sigai ( SIGPIPE , & siga , NULL ) == -1) { 326 t = o ; 327 `__db_r ( dbv , t , "can'tccess signal handler"); 328 r ; 333 r : 334 () `osock ( db_p -> li_fd ); 335 db_p -> li_fd = INVALID_SOCKET ; 336 ( t ); 337 } } 343 $__pmgr_lock_mux ( mux ) 344 mgr_mux_t * mux ; 346 ( `had_mux_lock ( mux )); 347 } } 353 $__pmgr_uock_mux ( mux ) 354 mgr_mux_t * mux ; 356 ( `had_mux_uock ( mux )); 357 } } 368 $__pmgr_sigl ( v ) 369 cd_v_t * v ; 371 ( `had_cd_brd ( v )); 372 } } 378 $__pmgr_wake_ma_thad ( dbv ) 379 DB_ENV * dbv ; 381 DB_REP * db_p ; 382 u_t8_t y_vue ; 384 `COMPQUIET ( y_vue , 0); 385 db_p = dbv -> p_hd ; 392 i( `wre ( db_p -> wre_pe , & y_vue , 1) == -1) 393 ( o ); 395 } } 401 $__pmgr_wrev ( fd , iovec , buf_cou , by_cou_p ) 402 sock_t fd ; 403 db_iovec_t * iovec ; 404 buf_cou ; 405 size_t * by_cou_p ; 407 nw ; 409 i(( nw = `wrev ( fd , iovec , buf_cou )) == -1) 410 ( o ); 411 * by_cou_p = ( size_t ) nw ; 413 } } 419 $__pmgr_adv ( fd , iovec , buf_cou , by_cou_p ) 420 sock_t fd ; 421 db_iovec_t * iovec ; 422 buf_cou ; 423 size_t * by_cou_p ; 425 ssize_t nw ; 427 i(( nw = `adv ( fd , iovec , buf_cou )) == -1) 428 ( o ); 429 * by_cou_p = ( size_t ) nw ; 431 } } 437 $__pmgr__lo ( dbv ) 438 DB_ENV * dbv ; 440 timev _timeout , * _timeout_p ; 441 DB_REP * db_p ; 442 REPMGR_CONNECTION * cn , * xt ; 443 REPMGR_RETRY * y ; 444 db_timeec timeout ; 445 fd_t ads , wres ; 446 t , ow_cڌ , maxfd , ėdy ; 447 u_t8_t buf [10]; 449 ow_cڌ = FALSE ; 451 db_p = dbv -> p_hd ; 457 `LOCK_MUTEX ( db_p -> mux ); 458 i(( t = `__pmgr_f_y_cis ( dbv )) != 0) 459 out ; 461 `FD_ZERO (& ads ); 462 `FD_ZERO (& wres ); 468 `FD_SET (( u_t ) db_p -> li_fd , & ads ); 469 maxfd = db_p -> li_fd ; 471 `FD_SET (( u_t ) db_p -> ad_pe , & ads ); 472 i( db_p -> ad_pe > maxfd ) 473 maxfd = db_p -> ad_pe ; 479 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 480 i( `F_ISSET ( cn , CONN_CONNECTING )) { 481 `FD_SET (( u_t ) cn -> fd , & ads ); 482 `FD_SET (( u_t ) cn -> fd , & wres ); 483 i( cn -> fd > maxfd ) 484 maxfd = cn -> fd ; 488 i(! `STAILQ_EMPTY (& cn -> outbound_queue )) { 489 `FD_SET (( u_t ) cn -> fd , & wres ); 490 i( cn -> fd > maxfd ) 491 maxfd = cn -> fd ; 497 i(! ow_cڌ || ! `IS_VALID_EID ( cn -> eid )) { 498 `FD_SET (( u_t ) cn -> fd , & ads ); 499 i( cn -> fd > maxfd ) 500 maxfd = cn -> fd ; 508 i( `TAILQ_EMPTY (& db_p -> s )) 509 _timeout_p = NULL ; 511 y = `TAILQ_FIRST (& db_p -> s ); 513 `__pmgr_timeec_diff_now ( 514 dbv , & y -> time , & timeout ); 517 _timeout . tv_c = timeout .tv_sec; 518 _timeout . tv_uc = timeout . tv_nc / NS_PER_US ; 519 _timeout_p = & _timeout ; 522 `UNLOCK_MUTEX ( db_p -> mux ); 524 i(( t = ` ( maxfd + 1, 525 & ads , & wres , NULL , _timeout_p )) == -1) { 526 t = o ) { 527 EINTR : 528 EWOULDBLOCK : 529 `LOCK_MUTEX ( db_p -> mux ); 532 `__db_r ( dbv , t , "select"); 533 ( t ); 536 ėdy = t ; 538 `LOCK_MUTEX ( db_p -> mux ); 550 cn = `TAILQ_FIRST (& db_p -> cis ); 551 cn ! NULL ; 552 cn = xt ) { 553 xt = `TAILQ_NEXT ( cn , s ); 554 i( `F_ISSET ( cn , CONN_DEFUNCT )) 555 `__pmgr_nup_ci ( dbv , cn ); 558 i(( t = `__pmgr_y_cis ( dbv )) != 0) 559 out ; 560 i( ėdy == 0) 567 cn = `TAILQ_FIRST (& db_p -> cis ); 568 cn ! NULL ; 569 cn = xt ) { 570 xt = `TAILQ_NEXT ( cn , s ); 571 i( `F_ISSET ( cn , CONN_CONNECTING )) { 572 i( `FD_ISSET (( u_t ) cn -> fd , & ads ) || 573 `FD_ISSET (( u_t ) cn -> fd , & wres )) { 574 i(( t = `fish_cg ( dbv , 575 cn )= DB_REP_UNAVAIL ) { 576 i(( t = 577 `__pmgr_bu_ci ( 578 dbv , cn , TRUE )) != 0) 579 out ; 580 } i( t != 0) 581 out ; 590 i( `FD_ISSET (( u_t ) cn -> fd , & wres )) { 591 i(( t = `__pmgr_wre_some ( 592 dbv , cn )= DB_REP_UNAVAIL ) { 593 i(( t = 594 `__pmgr_bu_ci ( dbv , 595 cn , TRUE )) != 0) 596 out ; 598 } i( t != 0) 599 out ; 602 i(! ow_cڌ && 603 `FD_ISSET (( u_t ) cn -> fd , & ads )) { 604 i(( t = `__pmgr_ad_om_se ( dbv , cn )) 605 = DB_REP_UNAVAIL ) { 606 i(( t = 607 `__pmgr_bu_ci ( dbv , 608 cn , TRUE )) != 0) 609 out ; 611 } i( t != 0) 612 out ; 621 i( `FD_ISSET (( u_t ) db_p -> ad_pe , & ads )) { 622 i( `ad ( db_p -> ad_pe , buf , (buf)) <= 0) { 623 t = o ; 624 out ; 625 } i( db_p -> fished ) { 626 t = 0; 627 out ; 630 i( `FD_ISSET (( u_t ) db_p -> li_fd , & ads ) && 631 ( t = `__pmgr_ac ( dbv )) != 0) 632 out ; 634 out : 635 `UNLOCK_MUTEX ( db_p -> mux ); 636 ( t ); 637 } } 640 $fish_cg ( dbv , cn ) 641 DB_ENV * dbv ; 642 REPMGR_CONNECTION * cn ; 644 DB_REP * db_p ; 645 REPMGR_SITE * se ; 646 sockn_t n ; 647 SITE_STRING_BUFFER bufr ; 648 u_t eid ; 649 r , t ; 651 n = ( r ); 652 i( `gsockt ( 653 cn -> fd , SOL_SOCKET , SO_ERROR , ( sockt_t )& r , & n ) < 0) 654 r_t ; 655 i( r ) { 656 o = r ; 657 r_t ; 660 `F_CLR ( cn , CONN_CONNECTING ); 661 ( `__pmgr_nd_hdshake ( dbv , cn )); 663 r_t : 664 db_p = dbv -> p_hd ; 666 `DB_ASSERT ( dbv , `IS_VALID_EID ( cn -> eid )); 667 eid = ( u_t ) cn ->eid; 669 se = `SITE_FROM_EID ( eid ); 670 `__db_r ( dbv , o , 671 "cg%s", `__pmgr_fm_se_loc ( se , bufr )); 674 i( `ADDR_LIST_NEXT (& se -> t_addr = NULL ) 675 ( DB_REP_UNAVAIL ); 686 `DB_ASSERT ( dbv , ! `TAILQ_EMPTY (& db_p -> cis )); 687 `__pmgr_nup_ci ( dbv , cn ); 688 t = `__pmgr_c_se ( dbv , eid ); 689 `DB_ASSERT ( dbv , t ! DB_REP_UNAVAIL ); 690 ( t ); 691 } } @../repmgr/repmgr_queue.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 $STAILQ_HEAD ( t__pmgr_q_hd , t__pmgr_mesge tQUEUE_HEADER ; 15 s__pmgr_queue { 16 size ; 17 QUEUE_HEADER hd ; 24 $__pmgr_queue_ ( dbv , db_p ) 25 DB_ENV * dbv ; 26 DB_REP * db_p ; 28 REPMGR_QUEUE * q ; 29 t ; 31 i(( t = `__os_oc ( dbv , 1, ( REPMGR_QUEUE ), & q )) != 0) 32 ( t ); 33 q -> size = 0; 34 `STAILQ_INIT (& q -> hd ); 35 db_p -> put_queue = q ; 37 } } 46 $__pmgr_queue_deroy ( dbv ) 47 DB_ENV * dbv ; 49 REPMGR_QUEUE * q ; 50 REPMGR_MESSAGE * m ; 52 i(( q = dbv -> p_hd -> put_queue = NULL ) 55 ! `STAILQ_EMPTY (& q -> hd )) { 56 m = `STAILQ_FIRST (& q -> hd ); 57 `STAILQ_REMOVE_HEAD (& q -> hd , s ); 58 `__os_ ( dbv , m ); 60 `__os_ ( dbv , q ); 61 } } 75 $__pmgr_queue_g ( dbv , msgp ) 76 DB_ENV * dbv ; 77 REPMGR_MESSAGE ** msgp ; 79 DB_REP * db_p ; 80 REPMGR_QUEUE * q ; 81 REPMGR_MESSAGE * m ; 82 t ; 84 t = 0; 85 db_p = dbv -> p_hd ; 86 q = db_p -> put_queue ; 88 `LOCK_MUTEX ( db_p -> mux ); 89 `STAILQ_EMPTY (& q -> hd && ! db_p -> fished ) { 90 #ifde DB_WIN32 91 i(! `RetEvt ( db_p -> queue_nemy )) { 92 t = `GLaE (); 93 r ; 95 i( `SiglObjeAndWa ( db_p -> mux , db_p-> queue_nemy , 96 INFINITE , FALSE ! WAIT_OBJECT_0 ) { 97 t = `GLaE (); 98 r ; 100 `LOCK_MUTEX ( db_p -> mux ); 102 i(( t = `had_cd_wa (& db_p -> queue_nemy , 103 & db_p -> mux )) != 0) 104 r ; 107 i( db_p -> fished ) 108 t = DB_REP_UNAVAIL ; 110 m = `STAILQ_FIRST (& q -> hd ); 111 `STAILQ_REMOVE_HEAD (& q -> hd , s ); 112 q -> size --; 113 * msgp = m ; 116 r : 117 `UNLOCK_MUTEX ( db_p -> mux ); 118 ( t ); 119 } } 128 $__pmgr_queue_put ( dbv , msg ) 129 DB_ENV * dbv ; 130 REPMGR_MESSAGE * msg ; 132 DB_REP * db_p ; 133 REPMGR_QUEUE * q ; 135 db_p = dbv -> p_hd ; 136 q = db_p -> put_queue ; 138 `STAILQ_INSERT_TAIL (& q -> hd , msg , s ); 139 q -> size ++; 141 ( `__pmgr_sigl (& db_p -> queue_nemy )); 142 } } 151 $__pmgr_queue_size ( dbv ) 152 DB_ENV * dbv ; 154 ( dbv -> p_hd -> put_queue -> size ); 155 } } @../repmgr/repmgr_sel.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 __pmgr_c __P (( DB_ENV *, sock_t *, REPMGR_SITE *)); 15 dich_pha_comi __P (( DB_ENV *, REPMGR_CONNECTION *)); 16 nify_hdshake __P (( DB_ENV *, REPMGR_CONNECTION *)); 17 cd_ack __P (( DB_ENV *, REPMGR_SITE *, DB_REPMGR_ACK *)); 18 __pmgr_y_e __P (( DB_ENV *, u_t )); 24 $__pmgr__thad ( gs ) 25 * gs ; 27 DB_ENV * dbv = gs ; 28 t ; 30 i(( t = `__pmgr__lo ( dbv )) != 0) { 31 `__db_r ( dbv , t , "selectoop failed"); 32 `__pmgr_thad_u ( dbv , t ); 34 ( NULL ); 35 } } 45 $__pmgr_ac ( dbv ) 46 DB_ENV * dbv ; 48 DB_REP * db_p ; 49 REPMGR_CONNECTION * cn ; 50 sockaddr_ sddr ; 51 sockn_t add ; 52 sock_t s ; 53 t ; 54 #ifde DB_WIN32 55 WSAEVENT evt_obj ; 58 db_p = dbv -> p_hd ; 59 add = ( sddr ); 60 i(( s = `ac ( db_p -> li_fd , ( sockaddr *)& sddr , 61 & add )) == -1) { 68 t = t_o ) { 69 #ifde DB_WIN32 70 WSAECONNRESET : 71 WSAEWOULDBLOCK : 73 EINTR : 74 EWOULDBLOCK : 75 ECONNABORTED : 76 ENETDOWN : 77 #ifde EPROTO 78 EPROTO : 80 ENOPROTOOPT : 81 EHOSTDOWN : 82 #ifde ENONET 83 ENONET : 85 EHOSTUNREACH : 86 EOPNOTSUPP : 87 ENETUNREACH : 89 `RPRINT ( dbv , (dbenv, 90 "ac %d csided iocuous", t )); 93 `__db_r ( dbv , t , "acceptrror"); 94 ( t ); 97 `RPRINT ( dbv , (dbenv, "acceptedew connection")); 99 i(( t = `__pmgr_t_nblockg ( s )) != 0) { 100 `__db_r ( dbv , t , "can't setonblockfterccept"); 101 () `osock ( s ); 102 ( t ); 105 #ifde DB_WIN32 106 i(( evt_obj = `WSACeEvt ()= WSA_INVALID_EVENT ) { 107 t = t_o ; 108 `__db_r ( dbv , t , "can't create WSAvent"); 109 () `osock ( s ); 110 ( t ); 112 i( `WSAEvtSe ( s , evt_obj , FD_READ | FD_CLOSE = SOCKET_ERROR ) { 113 t = t_o ; 114 `__db_r ( dbv , t , "can't set desiredvent bits"); 115 () `WSACloEvt ( evt_obj ); 116 () `osock ( s ); 117 ( t ); 120 i(( t = `__pmgr_w_ci ( dbv , & cn , s , 0)) != 0) { 121 #ifde DB_WIN32 122 () `WSACloEvt ( evt_obj ); 124 () `osock ( s ); 125 ( t ); 127 cn -> eid = -1; 128 #ifde DB_WIN32 129 cn -> evt_obje = evt_obj ; 132 t = `__pmgr_nd_hdshake ( dbv , cn )) { 135 DB_REP_UNAVAIL : 136 ( `__pmgr_bu_ci ( dbv , cn , TRUE )); 138 ( t ); 140 } } 152 $__pmgr_y_cis ( dbv ) 153 DB_ENV * dbv ; 155 DB_REP * db_p ; 156 REPMGR_RETRY * y ; 157 db_timeec now ; 158 u_t eid ; 159 t ; 161 db_p = dbv -> p_hd ; 162 `__os_gtime ( dbv , & now ); 164 ! `TAILQ_EMPTY (& db_p -> s )) { 165 y = `TAILQ_FIRST (& db_p -> s ); 166 i( `timeeccmp (& y -> time , & now , >=)) 169 `TAILQ_REMOVE (& db_p -> s , y , s ); 171 eid = y ->eid; 172 `__os_ ( dbv , y ); 174 i(( t = `__pmgr_y_e ( dbv , eid )) != 0) 175 ( t ); 178 } } 187 $__pmgr_f_y_cis ( dbv ) 188 DB_ENV * dbv ; 190 DB_REP * db_p ; 191 u_t eid ; 192 t ; 194 db_p = dbv -> p_hd ; 195 eid =0;id< db_p -> se_t ;id++) 196 i(( t = `__pmgr_y_e ( dbv , eid )) != 0) 197 ( t ); 199 } } 208 $__pmgr_y_e ( dbv , eid ) 209 DB_ENV * dbv ; 210 u_t eid ; 212 DB_REP * db_p ; 213 ADDRINFO * li ; 214 pmgr_Ïddr_t * addr ; 215 t ; 217 db_p = dbv -> p_hd ; 235 addr = & `SITE_FROM_EID ( eid )-> t_addr ; 236 i( `ADDR_LIST_FIRST ( addr = NULL ) { 237 i(( t = `__pmgr_gaddr ( 238 dbv , addr -> ho ,ddr-> pt , 0, & li )) == 0) { 239 addr -> addss_li = li ; 240 () `ADDR_LIST_FIRST ( addr ); 241 } i( t = DB_REP_UNAVAIL ) 242 ( `__pmgr_schedu_ci_m ( 243 dbv , eid , FALSE )); 245 ( t ); 249 ( `__pmgr_c_se ( dbv , eid )); 250 } } 264 $__pmgr_c_se ( dbv , eid ) 265 DB_ENV * dbv ; 266 u_t eid ; 268 DB_REP * db_p ; 269 REPMGR_SITE * se ; 270 REPMGR_CONNECTION * c ; 271 sock_t s ; 272 u_t32_t ags ; 273 t ; 274 #ifde DB_WIN32 275 desed_evt ; 276 WSAEVENT evt_obj ; 279 db_p = dbv -> p_hd ; 280 se = `SITE_FROM_EID ( eid ); 282 ags = 0; 283 t = `__pmgr_c ( dbv , & s , se )) { 285 ags = 0; 286 #ifde DB_WIN32 287 desed_evt = FD_READ | FD_CLOSE ; 290 INPROGRESS : 291 ags = CONN_CONNECTING ; 292 #ifde DB_WIN32 293 desed_evt = FD_CONNECT ; 297 `STAT ( db_p -> gi -> m . _c_ ++); 299 `__pmgr_schedu_ci_m ( dbv , eid , FALSE )); 302 #ifde DB_WIN32 303 i(( evt_obj = `WSACeEvt ()= WSA_INVALID_EVENT ) { 304 t = t_o ; 305 `__db_r ( dbv , t , "can't create WSAvent"); 306 () `osock ( s ); 307 ( t ); 309 i( `WSAEvtSe ( s , evt_obj , desed_evt = SOCKET_ERROR ) { 310 t = t_o ; 311 `__db_r ( dbv , t , "can't set desiredvent bits"); 312 () `WSACloEvt ( evt_obj ); 313 () `osock ( s ); 314 ( t ); 318 i(( t = `__pmgr_w_ci ( dbv , & c , s , ags )) 320 #ifde DB_WIN32 321 () `WSACloEvt ( evt_obj ); 323 () `osock ( s ); 324 ( t ); 326 #ifde DB_WIN32 327 c -> evt_obje = evt_obj ; 330 i( ags == 0) { 331 t = `__pmgr_nd_hdshake ( dbv , c )) { 334 DB_REP_UNAVAIL : 335 ( `__pmgr_bu_ci ( dbv , c , TRUE )); 337 ( t ); 341 c -> eid = ()eid; 343 se -> f . cn = c ; 344 se -> e = SITE_CONNECTED ; 346 } } 349 $__pmgr_c ( dbv , sock_su , se ) 350 DB_ENV * dbv ; 351 sock_t * sock_su ; 352 REPMGR_SITE * se ; 354 pmgr_Ïddr_t * addr ; 355 ADDRINFO * ai ; 356 sock_t s ; 357 * why ; 358 t ; 359 SITE_STRING_BUFFER bufr ; 365 `COMPQUIET ( why , ""); 366 addr = & se -> t_addr ; 367 ai = `ADDR_LIST_CURRENT ( addr ); 368 `DB_ASSERT ( dbv , ai ! NULL ); 369 ; ai ! NULL ; `ADDR_LIST_NEXT ( addr )) { 371 i(( s = `sock ( ai -> ai_my , 372 ai -> ai_sockty ,i-> ai_oc )= SOCKET_ERROR ) { 373 why = "can't create socketo connect"; 377 i(( t = `__pmgr_t_nblockg ( s )) != 0) { 378 `__db_r ( dbv , 379 t , "can't makeonblock socketo connect"); 380 () `osock ( s ); 381 ( t ); 384 i( `c ( s , ai -> ai_addr , ( sockn_t i-> ai_add ) != 0) 385 t = t_o ; 387 i( t =0 || = INPROGRESS ) { 388 * sock_su = s ; 389 `RPRINT ( dbv , (dbenv, 391 `__pmgr_fm_se_loc ( se , bufr ), t )); 392 ( t ); 395 why = "connection failed"; 396 () `osock ( s ); 400 t = t_o ; 401 `__db_r ( dbv , t , "%t%s", why , 402 `__pmgr_fm_se_loc ( se , bufr )); 403 ( t ); 404 } } 410 $__pmgr_nd_hdshake ( dbv , cn ) 411 DB_ENV * dbv ; 412 REPMGR_CONNECTION * cn ; 414 DB_REP * db_p ; 415 REP * p ; 416 pmgr_Ïddr_t * my_addr ; 417 DB_REPMGR_HANDSHAKE bufr ; 418 DBT l , c ; 420 `DB_ASSERT ( dbv , ! `F_ISSET ( cn , CONN_CONNECTING | CONN_DEFUNCT )); 422 db_p = dbv -> p_hd ; 423 p = db_p -> gi ; 424 my_addr = & db_p ->my_addr; 430 `DB_ASSERT ( dbv , ( u_t32_t ) >= ()); 432 bufr . vsi = DB_REPMGR_VERSION ; 433 bufr . iܙy = `htl (( u_t32_t ) p ->priority); 434 bufr . pt = my_addr ->port; 435 l . da = & bufr ; 436 l . size = ( bufr ); 438 `DB_SET_DBT ( c , my_addr -> ho , ` (my_addr->host) + 1); 440 ( `__pmgr_nd_e ( dbv , cn , REPMGR_HANDSHAKE , & l , & c )); 441 } } 450 $__pmgr_ad_om_se ( dbv , cn ) 451 DB_ENV * dbv ; 452 REPMGR_CONNECTION * cn ; 454 SITE_STRING_BUFFER bufr ; 455 size_t ; 456 t ; 463 i(( t = `__pmgr_adv ( cn -> fd , 464 & cn -> iovecs . ves [cn->iovecs. offt ], 465 cn -> iovecs . cou - cn->iovecs. offt , & )) != 0) { 466 t ) { 467 #ide DB_WIN32 468 EINTR : 471 WOULDBLOCK : 474 () `__pmgr_fm_eid_loc ( dbv -> p_hd , 475 cn -> eid , bufr ); 476 `__db_r ( dbv , t , 477 "n'ad from %s", bufr ); 478 `STAT ( dbv -> p_hd -> 479 gi -> m . _ci_dr ++); 480 ( DB_REP_UNAVAIL ); 484 i( > 0) { 485 i( `__pmgr_upde_csumed (& cn -> iovecs , )) 486 ( `dich_pha_comi ( dbv , 487 cn )); 489 () `__pmgr_fm_eid_loc ( dbv -> p_hd , 490 cn -> eid , bufr ); 491 `__db_rx ( dbv , "EOF oci from %s", bufr ); 492 `STAT ( dbv -> p_hd -> 493 gi -> m . _ci_dr ++); 494 ( DB_REP_UNAVAIL ); 497 } } 504 $dich_pha_comi ( dbv , cn ) 505 DB_ENV * dbv ; 506 REPMGR_CONNECTION * cn ; 508 #MEM_ALIGN () ) 509 DB_REP * db_p ; 510 DB_REPMGR_ACK * ack ; 511 REPMGR_SITE * se ; 512 DB_REPMGR_HANDSHAKE * hdshake ; 513 REPMGR_RETRY * y ; 514 pmgr_Ïddr_t addr ; 515 DBT * dbt ; 516 u_t32_t cڌ_size , c_size ; 517 size_t memsize , cڌ_offt , c_offt ; 518 * memba ; 519 * ho ; 520 u_t pt ; 521 t , eid ; 523 db_p = dbv -> p_hd ; 524 cn -> adg_pha ) { 525 SIZES_PHASE : 532 i( cn -> msg_ty ! REPMGR_HANDSHAKE && 533 ! `IS_VALID_EID ( cn -> eid )) { 534 `__db_rx ( dbv , 536 ( DB_REP_UNAVAIL ); 539 `__pmgr_iovec_ (& cn -> iovecs ); 540 cڌ_size = `ohl ( cn -> cڌ_size_buf ); 541 c_size = `ohl ( cn -> c_size_buf ); 542 i( cn -> msg_ty = REPMGR_REP_MESSAGE ) { 550 memsize = ( size_t ) 551 `DB_ALIGN (( REPMGR_MESSAGE ), MEM_ALIGN ); 552 cڌ_offt = memsize ; 553 memsize + cڌ_size ; 554 i( c_size > 0) { 555 memsize = ( size_t ) `DB_ALIGN (memsize, MEM_ALIGN ); 556 c_offt = memsize ; 557 memsize + c_size ; 559 `COMPQUIET ( c_offt , 0); 560 i(( t = `__os_mloc ( dbv , memsize , & memba )) != 0) 561 ( t ); 562 cn -> put . p_mesge = memba ; 563 `memt (& cn -> put . p_mesge -> cڌ , 0, 564 ( DBT )); 565 `memt (& cn -> put . p_mesge -> c , 0, ( DBT )); 566 cn -> put . p_mesge -> igg_eid = cn-> eid ; 567 cn -> put . p_mesge -> cڌ . size = cڌ_size ; 568 cn -> put . p_mesge -> cڌ . da = 569 ( u_t8_t *) memba + cڌ_offt ; 570 `__pmgr_add_bufr (& cn -> iovecs , 571 cn -> put . p_mesge -> cڌ . da , 572 cڌ_size ); 574 cn -> put . p_mesge -> c . size = c_size ; 575 i( c_size > 0) { 576 cn -> put . p_mesge -> c . da = 577 ( u_t8_t *) memba + c_offt ; 578 `__pmgr_add_bufr (& cn -> iovecs , 579 cn -> put . p_mesge -> c . da , 580 c_size ); 582 cn -> put . p_mesge -> c . da = NULL ; 585 i( cڌ_size == 0) { 586 `__db_rx ( 587 dbv , "illegal size foron-rep msg"); 588 ( DB_REP_UNAVAIL ); 590 cn -> put . pmgr_msg . l . size = cڌ_size ; 591 cn -> put . pmgr_msg . c . size = c_size ; 593 dbt = & cn -> put . pmgr_msg . l ; 594 dbt -> size = cڌ_size ; 595 i(( t = `__os_mloc ( dbv , cڌ_size , 596 & dbt -> da )) != 0) 597 ( t ); 598 `__pmgr_add_dbt (& cn -> iovecs , dbt ); 600 dbt = & cn -> put . pmgr_msg . c ; 601 i(( dbt -> size = c_size ) > 0) { 602 i(( t = `__os_mloc ( dbv , c_size , 603 & dbt -> da )) != 0) { 604 `__os_ ( dbv , 605 cn -> put . pmgr_msg . l . da ); 606 ( t ); 608 `__pmgr_add_dbt (& cn -> iovecs , dbt ); 612 cn -> adg_pha = DATA_PHASE ; 615 DATA_PHASE : 622 cn -> msg_ty ) { 623 REPMGR_ACK : 628 ack = cn -> put . pmgr_msg . l . da ; 629 i( cn -> put . pmgr_msg . l . size !(* ack ) || 630 cn -> put . pmgr_msg . c . size != 0) { 631 `__db_rx ( dbv , "badck msg size"); 632 ( DB_REP_UNAVAIL ); 634 i(( t = `cd_ack ( dbv , `SITE_FROM_EID ( cn -> eid ), 635 ack )) != 0) 636 ( t ); 637 `__os_ ( dbv , cn -> put . pmgr_msg . l . da ); 640 REPMGR_HANDSHAKE : 641 hdshake = cn -> put . pmgr_msg . l . da ; 642 i( cn -> put . pmgr_msg . l . size >= 643 ( hdshake -> vsi ) && 644 hdshake -> vsi ! DB_REPMGR_VERSION ) { 645 `__db_rx ( dbv , 647 ( u_lg ) hdshake -> vsi ); 648 ( DB_REP_UNAVAIL ); 650 i( cn -> put . pmgr_msg . l . size != 651 (* hdshake ) || 652 cn -> put . pmgr_msg . c . size == 0) { 653 `__db_rx ( dbv , "bad handshake msg size"); 654 ( DB_REP_UNAVAIL ); 657 pt = hdshake ->port; 658 ho = cn -> put . pmgr_msg . c . da ; 659 ho [ cn -> put . pmgr_msg . c . size -1] = '\0'; 661 `RPRINT ( dbv , (dbenv, 662 "g hdshak%s:%u,r%lu", ho , pt , 663 ( u_lg ) `ohl ( hdshake -> iܙy ))); 665 i( `IS_VALID_EID ( cn -> eid )) { 672 se = `SITE_FROM_EID ( cn -> eid ); 673 `RPRINT ( dbv , (dbenv, 675 se -> t_addr . ho , 676 ( u_lg ) se -> t_addr . pt )); 678 i( `IS_VALID_EID ( eid = 679 `__pmgr_fd_se ( dbv , ho , pt ))) { 680 se = `SITE_FROM_EID ( eid ); 681 i( se -> e = SITE_IDLE ) { 682 `RPRINT ( dbv , (dbenv, 684 y = se -> f .retry; 685 `TAILQ_REMOVE (& db_p -> s , 686 y , s ); 687 `__os_ ( dbv , y ); 689 cn -> eid =id; 690 se -> e = SITE_CONNECTED ; 691 se -> f . cn = conn; 698 `__db_rx ( dbv , 700 ( DB_REP_UNAVAIL ); 703 `RPRINT ( dbv , (dbenv, 705 i(( t = `__pmgr_ck_Ïddr ( 706 dbv , ho , pt , NULL , 707 & addr )) != 0) 708 ( t ); 709 i(( t = `__pmgr_w_se ( 710 dbv , & se , & addr , 711 SITE_CONNECTED )) != 0) { 712 `__pmgr_nup_Ïddr ( dbv , 713 & addr ); 714 ( t ); 716 cn -> eid = `EID_FROM_SITE ( se ); 717 se -> f . cn = conn; 722 `DB_ASSERT ( dbv , (=( u_t32_t )); 723 se -> iܙy = () `ohl ( hdshake ->priority); 725 i(( t = `nify_hdshake ( dbv , cn )) != 0) 726 ( t ); 728 `__os_ ( dbv , cn -> put . pmgr_msg . l . da ); 729 `__os_ ( dbv , cn -> put . pmgr_msg . c . da ); 732 REPMGR_REP_MESSAGE : 733 i(( t = `__pmgr_queue_put ( dbv , 734 cn -> put . p_mesge )) != 0) 735 ( t ); 743 `__db_rx ( dbv , "unknown msgypecvd: %d", 744 () cn -> msg_ty ); 745 ( DB_REP_UNAVAIL ); 748 `__pmgr_t_f_adg ( cn ); 752 `DB_ASSERT ( dbv , FALSE ); 756 } } 765 $nify_hdshake ( dbv , cn ) 766 DB_ENV * dbv ; 767 REPMGR_CONNECTION * cn ; 769 DB_REP * db_p ; 771 `COMPQUIET ( cn , NULL ); 773 db_p = dbv -> p_hd ; 781 i( db_p -> ma_eid = DB_EID_INVALID && !db_p-> de_e ) { 782 db_p -> de_e = TRUE ; 783 `RPRINT ( dbv , (dbenv, 785 ( `__pmgr__ei ( dbv , ELECT_REPSTART )); 788 } } 791 $cd_ack ( dbv , se , ack ) 792 DB_ENV * dbv ; 793 REPMGR_SITE * se ; 794 DB_REPMGR_ACK * ack ; 796 DB_REP * db_p ; 797 SITE_STRING_BUFFER bufr ; 798 t ; 800 db_p = dbv -> p_hd ; 803 i( ack -> gi < db_p ->generation) { 804 `RPRINT ( dbv , (dbenv, 806 ( u_lg ) ack -> gi , (u_lg) db_p ->generation, 807 `__pmgr_fm_se_loc ( se , bufr ))); 810 `RPRINT ( dbv , (dbenv, 811 "gهck [%lu][%lu](%luom %s", ( u_lg ) ack -> l . fe , 812 ( u_lg ) ack -> l . offt , (u_lgck-> gi , 813 `__pmgr_fm_se_loc ( se , bufr ))); 815 i( ack -> gi = db_p ->generation && 816 `log_com (& ack -> l , & se -> max_ack ) == 1) { 817 `memy (& se -> max_ack , & ack -> l , ( DB_LSN )); 818 i(( t = `__pmgr_wake_wag_nds ( dbv )) != 0) 819 ( t ); 822 } } 828 $__pmgr_wre_some ( dbv , cn ) 829 DB_ENV * dbv ; 830 REPMGR_CONNECTION * cn ; 832 REPMGR_FLAT * msg ; 833 QUEUED_OUTPUT * ouut ; 834 bys , t ; 836 ! `STAILQ_EMPTY (& cn -> outbound_queue )) { 837 ouut = `STAILQ_FIRST (& cn -> outbound_queue ); 838 msg = ouut ->msg; 839 i(( bys = `nd ( cn -> fd , & msg -> da [ ouut -> offt ], 840 ( size_t ) msg -> ngth - ouut -> offt , 0)= SOCKET_ERROR ) { 841 i(( t = t_o = WOULDBLOCK ) 844 `__db_r ( dbv , t , "writing data"); 845 `STAT ( dbv -> p_hd -> 846 gi -> m . _ci_dr ++); 847 ( DB_REP_UNAVAIL ); 851 i(( ouut -> offt +( size_t ) bys > msg -> ngth ) { 852 `STAILQ_REMOVE_HEAD (& cn -> outbound_queue , s ); 853 `__os_ ( dbv , ouut ); 854 cn -> out_queue_ngth --; 855 i(-- msg -> f_cou <= 0) 856 `__os_ ( dbv , msg ); 860 #ifde DB_WIN32 866 i( `WSAEvtSe ( cn -> fd , cn-> evt_obje , FD_READ | FD_CLOSE ) 867 = SOCKET_ERROR ) { 868 t = t_o ; 869 `__db_r ( dbv , t , "can'temove FD_WRITEvent bit"); 870 ( t ); 875 } } @../repmgr/repmgr_stat.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 #ifde HAVE_STATISTICS 15 __pmgr_t_l __P (( DB_ENV *, u_t32_t )); 16 __pmgr_t_ses __P (( DB_ENV *)); 17 __pmgr_t_s __P (( DB_ENV *, u_t32_t )); 18 __pmgr_ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 19 __pmgr__t __P (( DB_ENV *, u_t32_t )); 28 $__pmgr__ ( dbv , p , ags ) 29 DB_ENV * dbv ; 30 DB_REPMGR_STAT ** p ; 31 u_t32_t ags ; 33 DB_THREAD_INFO * ; 34 t ; 36 `PANIC_CHECK ( dbv ); 37 `ENV_REQUIRES_CONFIG_XX ( 38 dbv , p_hd , "DB_ENV->pmgr_", DB_INIT_REP ); 40 i(( t = `__db_fchk ( dbv , 41 "DB_ENV->pmgr_", ags , DB_STAT_CLEAR )) != 0) 42 ( t ); 44 `ENV_ENTER ( dbv , ); 45 t = `__pmgr_ ( dbv , p , ags ); 46 `ENV_LEAVE ( dbv , ); 48 ( t ); 49 } } 56 $__pmgr_ ( dbv , p , ags ) 57 DB_ENV * dbv ; 58 DB_REPMGR_STAT ** p ; 59 u_t32_t ags ; 61 DB_REP * db_p ; 62 DB_REPMGR_STAT * s ; 63 t ; 65 db_p = dbv -> p_hd ; 67 * p = NULL ; 70 i(( t = `__os_umloc ( dbv , ( DB_REPMGR_STAT ), & s )) != 0) 71 ( t ); 73 `memy ( s , & db_p -> gi -> m , (*stats)); 74 i( `LF_ISSET ( DB_STAT_CLEAR )) 75 `memt (& db_p -> gi -> m , 0, ( DB_REPMGR_STAT )); 77 * p = s ; 79 } } 88 $__pmgr__t_ ( dbv , ags ) 89 DB_ENV * dbv ; 90 u_t32_t ags ; 92 DB_THREAD_INFO * ; 93 t ; 95 `PANIC_CHECK ( dbv ); 96 `ENV_REQUIRES_CONFIG_XX ( 97 dbv , p_hd , "DB_ENV->pmgr__t", DB_INIT_REP ); 99 i(( t = `__db_fchk ( dbv , "DB_ENV->repmgr_stat_print", 100 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 101 ( t ); 103 `ENV_ENTER ( dbv , ); 104 t = `__pmgr__t ( dbv , ags ); 105 `ENV_LEAVE ( dbv , ); 107 ( t ); 108 } } 111 $__pmgr__t ( dbv , ags ) 112 DB_ENV * dbv ; 113 u_t32_t ags ; 115 u_t32_t ig_ags ; 116 t ; 118 ig_ags = ags ; 119 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 120 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 121 i(( t = `__pmgr_t_s ( dbv , ig_ags )) == 0) 122 t = `__pmgr_t_ses ( dbv ); 123 i( ags =0 || t != 0) 124 ( t ); 127 i( `LF_ISSET ( DB_STAT_ALL ) && 128 ( t = `__pmgr_t_l ( dbv , ig_ags )) != 0) 129 ( t ); 132 } } 135 $__pmgr_t_s ( dbv , ags ) 136 DB_ENV * dbv ; 137 u_t32_t ags ; 139 DB_REPMGR_STAT * ; 140 t ; 142 i(( t = `__pmgr_ ( dbv , & , ags )) != 0) 143 ( t ); 145 `__db_dl ( dbv , "Number of PERM messagesotcknowledged", 146 ( u_lg ) -> _rm_ed ); 147 `__db_dl ( dbv , "Number of messages queued dueoetwork delay", 148 ( u_lg ) -> _msgs_queued ); 149 `__db_dl ( dbv , "Number of messages discarded dueo queueength", 150 ( u_lg ) -> _msgs_drݳd ); 151 `__db_dl ( dbv , "Number ofxisting connections dropped", 152 ( u_lg ) -> _ci_dr ); 153 `__db_dl ( dbv , "Number of failedew connectionttempts", 154 ( u_lg ) -> _c_ ); 156 `__os_u ( dbv , ); 159 } } 162 $__pmgr_t_ses ( dbv ) 163 DB_ENV * dbv ; 165 DB_REPMGR_SITE * li ; 166 u_t cou , i ; 167 t ; 169 i(( t = `__pmgr_se_li ( dbv , & cou , & li )) != 0) 170 ( t ); 172 i( cou == 0) 175 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 176 `__db_msg ( dbv , "DB_REPMGR site information:"); 178 i = 0; i < cou ; ++i) { 179 `__db_msg ( dbv , "%s (eid: %d,ort: %u, %sconnected)", 180 li [ i ]. ho ,i[i]. eid ,i[i]. pt , 181 li [ i ]. us = DB_REPMGR_CONNECTED ? "" : "dis"); 184 `__os_u ( dbv , li ); 187 } } 194 $__pmgr_t_l ( dbv , ags ) 195 DB_ENV * dbv ; 196 u_t32_t ags ; 198 `COMPQUIET ( dbv , NULL ); 199 `COMPQUIET ( ags , 0); 201 } } 206 $__pmgr__ ( dbv , p , ags ) 207 DB_ENV * dbv ; 208 DB_REPMGR_STAT ** p ; 209 u_t32_t ags ; 211 `COMPQUIET ( p , NULL ); 212 `COMPQUIET ( ags , 0); 214 ( `__db__n_but ( dbv )); 215 } } 218 $__pmgr__t_ ( dbv , ags ) 219 DB_ENV * dbv ; 220 u_t32_t ags ; 222 `COMPQUIET ( ags , 0); 224 ( `__db__n_but ( dbv )); 225 } } 232 $__pmgr_se_li ( dbv , coup , lip ) 233 DB_ENV * dbv ; 234 u_t * coup ; 235 DB_REPMGR_SITE ** lip ; 237 DB_REP * db_p ; 238 DB_REPMGR_SITE * us ; 239 REPMGR_SITE * se ; 240 size_t y_size , tٮ_size ; 241 u_t cou , i ; 242 locked , t ; 243 * me ; 245 db_p = dbv -> p_hd ; 246 i( `REPMGR_SYNC_INITED ( db_p )) { 247 `LOCK_MUTEX ( db_p -> mux ); 248 locked = TRUE ; 250 locked = FALSE ; 253 t = 0; 254 * coup = 0; 255 * lip = NULL ; 258 i(( cou = db_p -> se_t ) == 0) 259 r ; 261 y_size = ( DB_REPMGR_SITE * cou ; 262 tٮ_size = y_size ; 263 i = 0; i < cou ; i++) { 264 se = & db_p -> ses [ i ]; 267 tٮ_size + ` ( se -> t_addr . ho ) + 1; 270 i(( t = `__os_umloc ( dbv , tٮ_size , & us )) != 0) 271 r ; 277 me = (*)(( u_t8_t *) us + y_size ); 278 i = 0; i < cou ; i++) { 279 se = & db_p -> ses [ i ]; 281 us [ i ]. eid = `EID_FROM_SITE ( se ); 283 us [ i ]. ho = me ; 284 () `ry ( me , se -> t_addr . ho ); 285 me + ` (name) + 1; 287 us [ i ]. pt = se -> t_addr .port; 288 us [ i ].u se -> e = SITE_CONNECTED ? 289 DB_REPMGR_CONNECTED : DB_REPMGR_DISCONNECTED ; 292 * coup = cou ; 293 * lip = us ; 295 r : i( locked ) 296 `UNLOCK_MUTEX ( db_p -> mux ); 297 ( t ); 298 } } @../repmgr/repmgr_stub.c 9 #ide HAVE_REPLICATION_THREADS 10 ~"db_cfig.h " 12 ~"db_t.h " 18 __db_nܕmgr __P (( DB_ENV *)); 25 $__db_nܕmgr ( dbv ) 26 DB_ENV * dbv ; 28 `__db_rx ( dbv , 30 ( DB_OPNOTSUP ); 31 } } 39 $__pmgr_o ( dbv ) 40 DB_ENV * dbv ; 42 `COMPQUIET ( dbv , NULL ); 44 } } 53 $__pmgr_add_me_se ( dbv , ho , pt , eidp , ags ) 54 DB_ENV * dbv ; 55 cڡ * ho ; 56 u_t pt ; 57 * eidp ; 58 u_t32_t ags ; 60 `COMPQUIET ( ho , NULL ); 61 `COMPQUIET ( pt , 0); 62 `COMPQUIET ( eidp , NULL ); 63 `COMPQUIET ( ags , 0); 64 ( `__db_nܕmgr ( dbv )); 65 } } 73 $__pmgr_g_ack_picy ( dbv , picy ) 74 DB_ENV * dbv ; 75 * picy ; 77 `COMPQUIET ( picy , NULL ); 78 ( `__db_nܕmgr ( dbv )); 79 } } 87 $__pmgr_t_ack_picy ( dbv , picy ) 88 DB_ENV * dbv ; 89 picy ; 91 `COMPQUIET ( picy , 0); 92 ( `__db_nܕmgr ( dbv )); 93 } } 102 $__pmgr_t_lol_se ( dbv , ho , pt , ags ) 103 DB_ENV * dbv ; 104 cڡ * ho ; 105 u_t pt ; 106 u_t32_t ags ; 108 `COMPQUIET ( ho , NULL ); 109 `COMPQUIET ( pt , 0); 110 `COMPQUIET ( ags , 0); 111 ( `__db_nܕmgr ( dbv )); 112 } } 120 $__pmgr_se_li ( dbv , coup , lip ) 121 DB_ENV * dbv ; 122 u_t * coup ; 123 DB_REPMGR_SITE ** lip ; 125 `COMPQUIET ( coup , NULL ); 126 `COMPQUIET ( lip , NULL ); 127 ( `__db_nܕmgr ( dbv )); 128 } } 136 $__pmgr_t ( dbv , hads , ags ) 137 DB_ENV * dbv ; 138 hads ; 139 u_t32_t ags ; 141 `COMPQUIET ( hads , 0); 142 `COMPQUIET ( ags , 0); 143 ( `__db_nܕmgr ( dbv )); 144 } } 152 $__pmgr__ ( dbv , p , ags ) 153 DB_ENV * dbv ; 154 DB_REPMGR_STAT ** p ; 155 u_t32_t ags ; 157 `COMPQUIET ( p , NULL ); 158 `COMPQUIET ( ags , 0); 159 ( `__db_nܕmgr ( dbv )); 160 } } 168 $__pmgr__t_ ( dbv , ags ) 169 DB_ENV * dbv ; 170 u_t32_t ags ; 172 `COMPQUIET ( ags , 0); 173 ( `__db_nܕmgr ( dbv )); 174 } } 182 $__pmgr_hd_evt ( dbv , evt , fo ) 183 DB_ENV * dbv ; 184 u_t32_t evt ; 185 * fo ; 187 `COMPQUIET ( dbv , NULL ); 188 `COMPQUIET ( evt , 0); 189 `COMPQUIET ( fo , NULL ); 196 ( DB_EVENT_NOT_HANDLED ); 197 } } @../repmgr/repmgr_util.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 31 $__pmgr_schedu_ci_m ( dbv , eid , immed ) 32 DB_ENV * dbv ; 33 u_t eid ; 34 immed ; 36 DB_REP * db_p ; 37 REPMGR_SITE * se ; 38 REPMGR_RETRY * y ; 39 db_timeec t , v ; 40 t ; 42 db_p = dbv -> p_hd ; 43 i(( t = `__os_mloc ( dbv , (* y ), &retry)) != 0) 44 ( t ); 46 `__os_gtime ( dbv , & t ); 47 i( immed ) 48 `TAILQ_INSERT_HEAD (& db_p -> s , y , s ); 50 `DB_TIMEOUT_TO_TIMESPEC ( db_p -> ci_y_wa , & v ); 51 `timeedd (& t , & v ); 52 `TAILQ_INSERT_TAIL (& db_p -> s , y , s ); 54 y -> eid =id; 55 y -> time = t ; 57 se = `SITE_FROM_EID ( eid ); 58 se -> e = SITE_IDLE ; 59 se -> f . y =etry; 61 ( `__pmgr_wake_ma_thad ( dbv )); 62 } } 71 $__pmgr_t_f_adg ( c ) 72 REPMGR_CONNECTION * c ; 74 c -> adg_pha = SIZES_PHASE ; 75 `__pmgr_iovec_ (& c -> iovecs ); 76 `__pmgr_add_bufr (& c -> iovecs , &c-> msg_ty , 77 ( c -> msg_ty )); 78 `__pmgr_add_bufr (& c -> iovecs , &c-> cڌ_size_buf , 79 ( c -> cڌ_size_buf )); 80 `__pmgr_add_bufr (& c -> iovecs , &c-> c_size_buf , 81 ( c -> c_size_buf )); 82 } } 93 $__pmgr_w_ci ( dbv , c , s , ags ) 94 DB_ENV * dbv ; 95 REPMGR_CONNECTION ** c ; 96 sock_t s ; 97 u_t32_t ags ; 99 DB_REP * db_p ; 100 REPMGR_CONNECTION * c ; 101 t ; 103 db_p = dbv -> p_hd ; 104 i(( t = `__os_mloc ( dbv , ( REPMGR_CONNECTION ), & c )) != 0) 105 ( t ); 107 c -> fd = s ; 108 c -> ags = flags; 110 `STAILQ_INIT (& c -> outbound_queue ); 111 c -> out_queue_ngth = 0; 113 `__pmgr_t_f_adg ( c ); 114 `TAILQ_INSERT_TAIL (& db_p -> cis , c , s ); 115 * c = c ; 118 } } 128 $__pmgr_w_se ( dbv , s , addr , e ) 129 DB_ENV * dbv ; 130 REPMGR_SITE ** s ; 131 cڡ pmgr_Ïddr_t * addr ; 132 e ; 134 DB_REP * db_p ; 135 REPMGR_SITE * se ; 136 SITE_STRING_BUFFER bufr ; 137 u_t w_se_max , eid ; 138 t ; 140 db_p = dbv -> p_hd ; 141 i( db_p -> se_t >db_p-> se_max ) { 142 #INITIAL_SITES_ALLOCATION 10 ) 143 w_se_max = db_p -> se_max == 0 ? 144 INITIAL_SITES_ALLOCATION : db_p -> se_max * 2; 145 i(( t = `__os_loc ( dbv , 146 ( REPMGR_SITE * w_se_max , & db_p -> ses )) != 0) 147 ( t ); 148 db_p -> se_max = w_se_max ; 150 eid = db_p -> se_t ++; 152 se = & db_p -> ses [ eid ]; 154 `memy (& se -> t_addr , addr , (*addr)); 155 `ZERO_LSN ( se -> max_ack ); 156 se -> iܙy = -1; 157 se -> e = state; 159 `RPRINT ( dbv , (dbv, "EID %u iassigd f %s", eid , 160 `__pmgr_fm_se_loc ( se , bufr ))); 161 * s = se ; 163 } } 172 $__pmgr_nup_Ïddr ( dbv , addr ) 173 DB_ENV * dbv ; 174 pmgr_Ïddr_t * addr ; 176 i( addr -> addss_li ! NULL ) { 177 `__db_addrfo ( dbv , addr -> addss_li ); 178 addr -> addss_li =ddr-> cut = NULL ; 180 i( addr -> ho ! NULL ) { 181 `__os_ ( dbv , addr -> ho ); 182 addr -> ho = NULL ; 184 } } 190 $__pmgr_iovec_ ( v ) 191 REPMGR_IOVECS * v ; 193 v -> offt = v-> cou = 0; 194 v -> tٮ_bys = 0; 195 } } 204 $__pmgr_add_bufr ( v , addss , ngth ) 205 REPMGR_IOVECS * v ; 206 * addss ; 207 size_t ngth ; 209 v -> ves [v-> cou ]. iov_ba = addss ; 210 v -> ves [v-> cou ++]. iov_n = ngth ; 211 v -> tٮ_bys + ngth ; 212 } } 218 $__pmgr_add_dbt ( v , dbt ) 219 REPMGR_IOVECS * v ; 220 cڡ DBT * dbt ; 222 v -> ves [v-> cou ]. iov_ba = dbt -> da ; 223 v -> ves [v-> cou ++]. iov_n = dbt -> size ; 224 v -> tٮ_bys + dbt -> size ; 225 } } 237 $__pmgr_upde_csumed ( v , by_cou ) 238 REPMGR_IOVECS * v ; 239 size_t by_cou ; 241 db_iovec_t * iov ; 242 i ; 244 i = v -> offt ; ; i++) { 245 `DB_ASSERT ( NULL , i < v -> cou && by_cou > 0); 246 iov = & v -> ves [ i ]; 247 i( by_cou > iov -> iov_n ) { 252 by_cou - iov -> iov_n ; 255 iov -> iov_n - by_cou ; 256 i( iov -> iov_n > 0) { 261 iov -> iov_ba = (*) 262 (( u_t8_t *) iov -> iov_ba + by_cou ); 263 v -> offt = i ; 269 v -> offt = i +1; 275 ( v -> offt >v-> cou ); 278 } } 289 $__pmgr_e_my_addr ( dbv , dbt ) 290 DB_ENV * dbv ; 291 DBT * dbt ; 293 DB_REP * db_p ; 294 size_t size , hn ; 295 u_t16_t pt_bufr ; 296 u_t8_t * r ; 297 t ; 299 db_p = dbv -> p_hd ; 305 pt_bufr = `hts ( db_p -> my_addr . pt ); 306 size = ( pt_bufr ) + 307 ( hn = ` ( db_p -> my_addr . ho ) + 1); 308 i(( t = `__os_mloc ( dbv , size , & r )) != 0) 309 ( t ); 311 `DB_INIT_DBT (* dbt , r , size ); 313 `memy ( r , & pt_bufr , (port_buffer)); 314 r = &r[( pt_bufr )]; 315 `memy ( r , db_p -> my_addr . ho , hn ); 318 } } 327 u_t 328 $__pmgr_g_nses ( db_p ) 329 DB_REP * db_p ; 331 i( db_p -> cfig_nses > 0) 332 (( u_t ) db_p -> cfig_nses ); 337 ( db_p -> se_t + 1); 338 } } 344 $__pmgr_thad_u ( dbv , why ) 345 DB_ENV * dbv ; 346 why ; 348 () `__pmgr__thads ( dbv ); 349 () `__db_nic ( dbv , why ); 350 } } 360 $__pmgr_fm_eid_loc ( db_p , eid , bufr ) 361 DB_REP * db_p ; 362 eid ; 363 * bufr ; 365 i( `IS_VALID_EID ( eid )) 366 ( `__pmgr_fm_se_loc ( `SITE_FROM_EID ( eid ), bufr )); 368 `tf ( bufr , MAX_SITE_LOC_STRING , "(unidentified site)"); 369 ( bufr ); 370 } } 376 $__pmgr_fm_se_loc ( se , bufr ) 377 REPMGR_SITE * se ; 378 * bufr ; 380 `tf ( bufr , MAX_SITE_LOC_STRING , "site %s:%lu", 381 se -> t_addr . ho , ( u_lg )se->t_addr. pt ); 382 ( bufr ); 383 } } 393 $__pmgr_timeec_diff_now ( dbv , wh , su ) 394 DB_ENV * dbv ; 395 db_timeec * wh , * su ; 397 db_timeec now ; 399 `__os_gtime ( dbv , & now ); 400 i( `timeeccmp (& now , wh , >=)) 401 `timeecr ( su ); 403 * su = * wh ; 404 `timeecsub ( su , & now ); 406 } } 412 $__pmgr_pt ( dbv , ags ) 413 DB_ENV * dbv ; 414 u_t32_t ags ; 416 DBT my_addr ; 417 t ; 419 i(( t = `__pmgr_e_my_addr ( dbv , & my_addr )) != 0) 420 ( t ); 421 t = `__p_t ( dbv , & my_addr , ags ); 422 `__os_ ( dbv , my_addr . da ); 423 i( t != 0) 424 `__db_r ( dbv , t , "rep_start"); 425 ( t ); 426 } } @../repmgr/repmgr_windows.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 s__ack_wa { 15 HANDLE mevt ; 16 cڡ DB_LSN * mlp ; 17 __ack_wa * mxt_ ; 18 } tACK_WAITER ; 20 #WAITER_SLOT_IN_USE ( w ((w)-> lp ! NULL ) ) 32 s__ack_was_b { 33 __ack_wa * my ; 34 msize ; 35 mxt_ava ; 36 __ack_wa * mf_ ; 39 lo_wa_ __P (( DB_ENV *, ACK_WAITER **)); 40 _wa_ __P (( DB_ENV *, ACK_WAITER *)); 41 hd_comi __P (( DB_ENV *, REPMGR_CONNECTION *)); 42 fish_cg __P (( DB_ENV *, REPMGR_CONNECTION *, 43 LPWSANETWORKEVENTS )); 46 $__pmgr_thad_t ( dbv , ruab ) 47 DB_ENV * dbv ; 48 REPMGR_RUNNABLE * ruab ; 50 HANDLE thad_id ; 52 ruab -> fished = FALSE ; 54 thad_id = `CeThad ( NULL , 0, 55 ( LPTHREAD_START_ROUTINE ) ruab -> run , dbv , 0, NULL ); 56 i( thad_id = NULL ) 57 ( `GLaE ()); 58 ruab -> thad_id =hread_id; 60 } } 63 $__pmgr_thad_jo ( thad ) 64 REPMGR_RUNNABLE * thad ; 66 i( `WaFSgObje ( thad -> thad_id , INFINITE = WAIT_OBJECT_0 ) 68 ( `GLaE ()); 69 } } 72 $__pmgr_t_nblockg ( s ) 73 SOCKET s ; 75 t ; 76 u_lg g ; 78 g = 1; 79 i(( t = `iolsock ( s , FIONBIO , & g )= SOCKET_ERROR ) 80 ( `WSAGLaE ()); 82 } } 92 $__pmgr_wake_wag_nds ( dbv ) 93 DB_ENV * dbv ; 95 DB_REP * db_p ; 96 ACK_WAITER * ; 97 i , t ; 99 t = 0; 100 db_p = dbv -> p_hd ; 101 i =0; i< db_p -> was -> xt_ava ; i++) { 102 = & db_p -> was -> y [ i ]; 103 i(! `WAITER_SLOT_IN_USE ( )) 105 i( `__pmgr_is_rmt ( dbv , -> lp )) 106 i(! `SEvt ( -> evt && t == 0) 107 t = `GLaE (); 109 ( t ); 110 } } 117 $__pmgr_awa_ack ( dbv , lp ) 118 DB_ENV * dbv ; 119 cڡ DB_LSN * lp ; 121 DB_REP * db_p ; 122 ACK_WAITER * me ; 123 DWORD t ; 124 DWORD timeout ; 126 db_p = dbv -> p_hd ; 128 i(( t = `lo_wa_ ( dbv , & me )) != 0) 129 r ; 132 timeout = db_p -> ack_timeout > 0 ? 133 (( db_p -> ack_timeout + ( US_PER_MS - 1)/ US_PER_MS: INFINITE ; 134 me -> lp =snp; 135 i(( t = `SiglObjeAndWa ( db_p -> mux , me -> evt , timeout , 136 FALSE )= WAIT_FAILED ) { 137 t = `GLaE (); 138 } i( t = WAIT_TIMEOUT ) 139 t = DB_REP_UNAVAIL ; 141 `DB_ASSERT ( dbv , t = WAIT_OBJECT_0 ); 143 `LOCK_MUTEX ( db_p -> mux ); 144 `_wa_ ( dbv , me ); 146 r : 147 ( t ); 148 } } 155 $lo_wa_ ( dbv , sup ) 156 DB_ENV * dbv ; 157 ACK_WAITER ** sup ; 159 DB_REP * db_p ; 160 ACK_WAITERS_TABLE * b ; 161 ACK_WAITER * w ; 162 t ; 164 db_p = dbv -> p_hd ; 165 b = db_p -> was ; 166 i( b -> f_ = NULL ) { 167 i( b -> xt_ava >b-> size ) { 171 b -> size *= 2; 172 w = b -> y ; 173 i(( t = `__os_loc ( dbv , b -> size * (* w ), 174 & w )) != 0) 175 ( t ); 176 b -> y = w ; 182 w = & b -> y [b-> xt_ava ++]; 183 i(( w -> evt = `CeEvt ( NULL , FALSE , FALSE, NULL)) == 184 NULL ) { 189 -- b -> xt_ava ; 190 ( `GLaE ()); 193 w = b -> f_ ; 194 b -> f_ = w -> xt_ ; 196 * sup = w ; 198 } } 201 $_wa_ ( dbv , ) 202 DB_ENV * dbv ; 203 ACK_WAITER * ; 205 DB_REP * db_p ; 207 db_p = dbv -> p_hd ; 209 -> lp = NULL ; 210 -> xt_ = db_p -> was -> f_ ; 211 db_p -> was -> f_ = ; 212 } } 220 $__pmgr__sync ( dbv , db_p ) 221 DB_ENV * dbv ; 222 DB_REP * db_p ; 224 #INITIAL_ALLOCATION 5 ) 225 ACK_WAITERS_TABLE * b ; 226 t ; 228 db_p -> sigr = db_p-> queue_nemy = db_p-> check_ei = 229 db_p -> mux = NULL ; 230 b = NULL ; 232 i(( db_p -> sigr = `CeEvt ( NULL , 233 FALSE , 234 FALSE , 235 NULL )) == NULL) 236 gr ; 238 i(( db_p -> queue_nemy = `CeEvt ( NULL , TRUE , FALSE , NULL)) 239 = NULL ) 240 gr ; 242 i(( db_p -> check_ei = `CeEvt ( NULL , FALSE , FALSE, NULL)) 243 = NULL ) 244 gr ; 246 i(( db_p -> mux = `CeMux ( NULL , FALSE , NULL)) == NULL) 247 gr ; 249 i(( t = `__os_oc ( dbv , 1, ( ACK_WAITERS_TABLE ), & b )) 251 r ; 253 i(( t = `__os_oc ( dbv , INITIAL_ALLOCATION , ( ACK_WAITER ), 254 & b -> y )) != 0) 255 r ; 257 b -> size = INITIAL_ALLOCATION ; 258 b -> f_ = NULL ; 259 b -> xt_ava = 0; 262 db_p -> was = b ; 265 gr : 266 t = `GLaE (); 267 r : 268 i( db_p -> check_ei ! NULL ) 269 `CloHd ( db_p -> check_ei ); 270 i( db_p -> queue_nemy ! NULL ) 271 `CloHd ( db_p -> queue_nemy ); 272 i( db_p -> sigr ! NULL ) 273 `CloHd ( db_p -> sigr ); 274 i( db_p -> mux ! NULL ) 275 `CloHd ( db_p -> mux ); 276 i( b ! NULL ) 277 `__os_ ( dbv , b ); 278 db_p -> was = NULL ; 279 ( t ); 280 } } 283 $__pmgr_o_sync ( dbv ) 284 DB_ENV * dbv ; 286 DB_REP * db_p ; 287 i , t ; 289 db_p = dbv -> p_hd ; 290 i(!( `REPMGR_SYNC_INITED ( db_p ))) 293 t = 0; 294 i = 0; i < db_p -> was -> xt_ava ; i++) { 295 i(! `CloHd ( db_p -> was -> y [ i ]. evt && t == 0) 296 t = `GLaE (); 298 `__os_ ( dbv , db_p -> was -> y ); 299 `__os_ ( dbv , db_p -> was ); 301 i(! `CloHd ( db_p -> check_ei && t == 0) 302 t = `GLaE (); 304 i(! `CloHd ( db_p -> queue_nemy && t == 0) 305 t = `GLaE (); 307 i(! `CloHd ( db_p -> sigr && t == 0) 308 t = `GLaE (); 310 i(! `CloHd ( db_p -> mux && t == 0) 311 t = `GLaE (); 313 db_p -> was = NULL ; 314 ( t ); 315 } } 325 $__pmgr_t_ ( dbv , db_p ) 326 DB_ENV * dbv ; 327 DB_REP * db_p ; 329 t ; 332 i(! db_p -> w_ed && ( t = `__pmgr_w_ ( dbv )) != 0) 333 r ; 335 i(( t = `__pmgr_li ( dbv )) == 0) 338 i( `WSAC˪up (= SOCKET_ERROR ) { 339 t = t_o ; 340 `__db_r ( dbv , t , "WSACleanup"); 343 r : db_p -> li_fd = INVALID_SOCKET ; 344 ( t ); 345 } } 354 $__pmgr_w_ ( dbv ) 355 DB_ENV * dbv ; 357 DB_REP * db_p ; 358 WSADATA wDa ; 359 t ; 361 db_p = dbv -> p_hd ; 363 i(( t = `WSASup ( `MAKEWORD (2, 2), & wDa )) != 0) { 364 `__db_r ( dbv , t , "unableo initialize Windowsetworking"); 365 ( t ); 367 db_p -> w_ed = TRUE ; 370 } } 373 $__pmgr_lock_mux ( mux ) 374 mgr_mux_t * mux ; 376 i( `WaFSgObje (* mux , INFINITE = WAIT_OBJECT_0 ) 378 ( `GLaE ()); 379 } } 382 $__pmgr_uock_mux ( mux ) 383 mgr_mux_t * mux ; 385 i( `RMux (* mux )) 387 ( `GLaE ()); 388 } } 391 $__pmgr_sigl ( v ) 392 cd_v_t * v ; 394 ( `SEvt (* v ? 0 : `GLaE ()); 395 } } 398 $__pmgr_wake_ma_thad ( dbv ) 399 DB_ENV * dbv ; 401 i(! `SEvt ( dbv -> p_hd -> sigr )) 402 ( `GLaE ()); 404 } } 407 $__pmgr_wrev ( fd , iovec , buf_cou , by_cou_p ) 408 sock_t fd ; 409 db_iovec_t * iovec ; 410 buf_cou ; 411 size_t * by_cou_p ; 413 DWORD bys ; 415 i( `WSASd ( fd , iovec , 416 ( DWORD ) buf_cou , & bys , 0, NULL , NULL= SOCKET_ERROR ) 417 ( t_o ); 419 * by_cou_p = ( size_t ) bys ; 421 } } 424 $__pmgr_adv ( fd , iovec , buf_cou , x_cou_p ) 425 sock_t fd ; 426 db_iovec_t * iovec ; 427 buf_cou ; 428 size_t * x_cou_p ; 430 DWORD bys , ags ; 432 ags = 0; 433 i( `WSARecv ( fd , iovec , 434 ( DWORD ) buf_cou , & bys , & ags , NULL , NULL= SOCKET_ERROR ) 435 ( t_o ); 437 * x_cou_p = ( size_t ) bys ; 439 } } 442 $__pmgr__lo ( dbv ) 443 DB_ENV * dbv ; 445 DWORD _timeout ; 446 DB_REP * db_p ; 447 REPMGR_CONNECTION * cn , * xt ; 448 REPMGR_RETRY * y ; 449 WSAEVENT evts [ WSA_MAXIMUM_WAIT_EVENTS ]; 450 REPMGR_CONNECTION * cis [ WSA_MAXIMUM_WAIT_EVENTS ]; 451 DWORD vts , t ; 452 db_timeec timeout ; 453 WSAEVENT li_evt ; 454 WSANETWORKEVENTS t_evts ; 455 ow_cڌ , i ; 457 db_p = dbv -> p_hd ; 459 i(( li_evt = `WSACeEvt ()= WSA_INVALID_EVENT ) { 460 `__db_r ( 461 dbv , t_o , "can't createvent foristen socket"); 462 ( t_o ); 464 i( `WSAEvtSe ( db_p -> li_fd , li_evt , FD_ACCEPT ) == 465 SOCKET_ERROR ) { 466 t = t_o ; 467 `__db_r ( dbv , t , "can'tnablevent foristener"); 468 out ; 471 `LOCK_MUTEX ( db_p -> mux ); 472 i(( t = `__pmgr_f_y_cis ( dbv )) != 0) 473 uock ; 474 ow_cڌ = FALSE ; 477 evts [0] = db_p -> sigr ; 478 evts [1] = li_evt ; 479 vts = 2; 490 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 491 i( `F_ISSET ( cn , CONN_CONNECTING ) || 492 ! `STAILQ_EMPTY (& cn -> outbound_queue ) || 493 (! ow_cڌ || ! `IS_VALID_EID ( cn -> eid ))) { 494 evts [ vts ] = cn -> evt_obje ; 495 cis [ vts ++] = cn ; 504 i( `TAILQ_EMPTY (& db_p -> s )) 505 _timeout = WSA_INFINITE ; 507 y = `TAILQ_FIRST (& db_p -> s ); 509 `__pmgr_timeec_diff_now ( 510 dbv , & y -> time , & timeout ); 511 _timeout = 512 ( DWORD )( timeout . tv_c * MS_PER_SEC + 513 timeout . tv_nc / NS_PER_MS ); 516 `UNLOCK_MUTEX ( db_p -> mux ); 517 t = `WSAWaFMuɝEvts ( 518 vts , evts , FALSE , _timeout , FALSE); 519 i( db_p -> fished ) { 520 t = 0; 521 out ; 523 `LOCK_MUTEX ( db_p -> mux ); 533 cn = `TAILQ_FIRST (& db_p -> cis ); 534 cn ! NULL ; 535 cn = xt ) { 536 xt = `TAILQ_NEXT ( cn , s ); 537 i( `F_ISSET ( cn , CONN_DEFUNCT )) 538 `__pmgr_nup_ci ( dbv , cn ); 546 i( t > WSA_WAIT_EVENT_0 && 547 t < WSA_WAIT_EVENT_0 + vts ) { 548 i = t - WSA_WAIT_EVENT_0 ) { 553 i(( t = `WSAEnumNwkEvts ( 554 db_p -> li_fd , li_evt , 555 & t_evts )= SOCKET_ERROR ) { 556 t = t_o ; 557 uock ; 559 `DB_ASSERT ( dbv , 560 t_evts . lNwkEvts & FD_ACCEPT ); 561 i(( t = t_evts . iECode [ FD_ACCEPT_BIT ]) 563 uock ; 564 i(( t = `__pmgr_ac ( dbv )) != 0) 565 uock ; 568 i(( t = `hd_comi ( dbv , 569 cis [ i ])) != 0) 570 uock ; 573 } i( t = WSA_WAIT_TIMEOUT ) { 574 i(( t = `__pmgr_y_cis ( dbv )) != 0) 575 uock ; 576 } i( t = WSA_WAIT_FAILED ) { 577 t = t_o ; 578 uock ; 582 uock : 583 `UNLOCK_MUTEX ( db_p -> mux ); 584 out : 585 i(! `CloHd ( li_evt && t == 0) 586 t = `GLaE (); 587 ( t ); 588 } } 596 $hd_comi ( dbv , cn ) 597 DB_ENV * dbv ; 598 REPMGR_CONNECTION * cn ; 600 t ; 601 WSANETWORKEVENTS evts ; 603 i(( t = `WSAEnumNwkEvts ( cn -> fd , cn-> evt_obje , & evts )) 604 = SOCKET_ERROR ) { 605 `__db_r ( dbv , t_o , "EnumNetworkEvents"); 606 `STAT ( dbv -> p_hd -> gi -> m . _ci_dr ++); 607 t = DB_REP_UNAVAIL ; 608 r ; 611 i( `F_ISSET ( cn , CONN_CONNECTING )) { 612 i(( t = `fish_cg ( dbv , cn , & evts )) != 0) 613 r ; 615 i( evts . lNwkEvts & FD_CLOSE ) { 616 `__db_r ( dbv , 617 evts . iECode [ FD_CLOSE_BIT ], 619 `STAT ( dbv -> p_hd -> 620 gi -> m . _ci_dr ++); 621 t = DB_REP_UNAVAIL ; 622 r ; 625 i( evts . lNwkEvts & FD_WRITE ) { 626 i( evts . iECode [ FD_WRITE_BIT ] != 0) { 627 `__db_r ( dbv , 628 evts . iECode [ FD_WRITE_BIT ], 630 `STAT ( dbv -> p_hd -> 631 gi -> m . _ci_dr ++); 632 t = DB_REP_UNAVAIL ; 633 r ; 634 } i(( t = 635 `__pmgr_wre_some ( dbv , cn )) != 0) 636 r ; 639 i( evts . lNwkEvts & FD_READ ) { 640 i( evts . iECode [ FD_READ_BIT ] != 0) { 641 `__db_r ( dbv , 642 evts . iECode [ FD_READ_BIT ], 644 `STAT ( dbv -> p_hd -> 645 gi -> m . _ci_dr ++); 646 t = DB_REP_UNAVAIL ; 647 r ; 648 } i(( t = 649 `__pmgr_ad_om_se ( dbv , cn )) != 0) 650 r ; 656 r : i( t = DB_REP_UNAVAIL ) 657 ( `__pmgr_bu_ci ( dbv , cn , TRUE )); 658 ( t ); 659 } } 662 $fish_cg ( dbv , cn , evts ) 663 DB_ENV * dbv ; 664 REPMGR_CONNECTION * cn ; 665 LPWSANETWORKEVENTS evts ; 667 DB_REP * db_p ; 668 u_t eid ; 670 t ; 673 i(!( evts -> lNwkEvts & FD_CONNECT )) 676 `F_CLR ( cn , CONN_CONNECTING ); 678 i(( t = evts -> iECode [ FD_CONNECT_BIT ]) != 0) { 687 `__db_r ( dbv , t , "connecting"); 688 r ; 691 i( `WSAEvtSe ( cn -> fd , cn-> evt_obje , FD_READ | FD_CLOSE ) == 692 SOCKET_ERROR ) { 693 t = t_o ; 694 `__db_r ( dbv , t , "settingvent bits foreading"); 695 ( t ); 698 ( `__pmgr_nd_hdshake ( dbv , cn )); 700 r : 701 db_p = dbv -> p_hd ; 702 eid = cn ->eid; 703 `DB_ASSERT ( dbv , `IS_VALID_EID ( eid )); 705 i( `ADDR_LIST_NEXT (& `SITE_FROM_EID ( eid )-> t_addr = NULL ) { 706 `STAT ( db_p -> gi -> m . _c_ ++); 707 ( DB_REP_UNAVAIL ); 710 `DB_ASSERT ( dbv , ! `TAILQ_EMPTY (& db_p -> cis )); 711 `__pmgr_nup_ci ( dbv , cn ); 712 t = `__pmgr_c_se ( dbv , eid ); 713 `DB_ASSERT ( dbv , t ! DB_REP_UNAVAIL ); 714 ( t ); 715 } } @../rpc_client/client.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/txn.h " 16 #ifde HAVE_SYSTEM_INCLUDE_FILES 17 #ifde HAVE_VXWORKS 18 ~<cLib.h > 20 ~<c/c.h > 23 ~"db_rv.h " 24 ~"dbc_auto/c__ext.h " 26 __db_c_deroy __P (( DBC *)); 27 __db_txn_o __P (( DB_ENV *)); 37 $__db_v_t_c_rv ( dbv , , ho , tc , sc , ags ) 38 DB_ENV * dbv ; 39 * ; 40 cڡ * ho ; 41 tc , sc ; 42 u_t32_t ags ; 44 CLIENT * ; 45 timev ; 47 `COMPQUIET ( ags , 0); 49 #ifde HAVE_VXWORKS 50 i( `cTaskIn () != 0) { 51 `__db_rx ( dbv , "Couldot initialize VxWorks RPC"); 52 ( ERROR ); 55 i( `RPC_ON ( dbv )) { 56 `__db_rx ( dbv , "Already setn RPC handle"); 57 ( EINVAL ); 63 i( = NULL ) { 64 i(( = `_ ((*) ho , DB_RPC_SERVERPROG , 65 DB_RPC_SERVERVERS , "t")= NULL ) { 66 `__db_rx ( dbv , `_r ((*) ho )); 67 ( DB_NOSERVER ); 69 i( tc != 0) { 70 . tv_c = tc ; 71 . tv_uc = 0; 72 () `_cڌ ( , CLSET_TIMEOUT , (*)& ); 75 = ( CLIENT *) ; 76 `F_SET ( dbv , DB_ENV_RPCCLIENT_GIVEN ); 78 dbv -> _hd = ; 80 ( `__db_v_ ( dbv , sc )); 81 } } 93 $__db_v_o_wp ( dbv , ags ) 94 DB_ENV * dbv ; 95 u_t32_t ags ; 97 t , t_t ; 99 t = `__db_v_o ( dbv , ags ); 100 t_t = `__db_esh ( dbv ); 101 i( t =0 && t_t != 0) 102 t = t_t ; 103 ( t ); 104 } } 116 $__db_v_ݒ_wp ( dbv , home , ags , mode ) 117 DB_ENV * dbv ; 118 cڡ * home ; 119 u_t32_t ags ; 120 mode ; 122 t ; 124 i( `LF_ISSET ( DB_THREAD )) { 125 `__db_rx ( dbv , "DB_THREADotllowed on RPC clients"); 126 ( EINVAL ); 129 i(( t = `__v_cfig ( dbv , home , ags , mode )) != 0) 130 ( t ); 132 ( `__db_v_ݒ ( dbv , dbv-> db_home , ags , mode )); 133 } } 146 $__db_db_ݒ_wp ( dbp , tx , me , subdb , ty , ags , mode ) 147 DB * dbp ; 148 DB_TXN * tx ; 149 cڡ * me ; 150 cڡ * subdb ; 151 DBTYPE ty ; 152 u_t32_t ags ; 153 mode ; 155 ( `__db_db_ݒ ( dbp , tx , me , subdb , ty , ags , mode )); 156 } } 165 $__db_esh ( dbv ) 166 DB_ENV * dbv ; 168 CLIENT * ; 169 t ; 171 = ( CLIENT *) dbv -> _hd ; 173 t = 0; 174 i( dbv -> tx_hd ! NULL ) { 180 t = `__db_txn_o ( dbv ); 181 dbv -> tx_hd = NULL ; 183 i(! `F_ISSET ( dbv , DB_ENV_RPCCLIENT_GIVEN && ! NULL ) 184 `_deroy ( ); 185 dbv -> _hd = NULL ; 186 i( dbv -> db_home ! NULL ) { 187 `__os_ ( dbv , dbv-> db_home ); 188 dbv -> db_home = NULL ; 190 ( t ); 191 } } 202 $__db_tcy ( dbv , dbt , da , n , memp , memsize ) 203 DB_ENV * dbv ; 204 DBT * dbt ; 205 * da ; 206 u_t32_t n ; 207 ** memp ; 208 u_t32_t * memsize ; 210 t ; 211 u_t32_t ig_ags ; 219 ig_ags = dbt -> ags ; 220 `F_CLR ( dbt , DB_DBT_PARTIAL ); 221 i( dbt -> da ! NULL && dbt-> size = n && 222 `memcmp ( dbt -> da , da, n ) == 0) 223 t = 0; 225 t = `__db_tcy ( dbv , dbt , da , n , memp , memsize ); 226 dbt -> ags = ig_ags ; 227 ( t ); 228 } } 235 $__db_txn_o ( dbv ) 236 DB_ENV * dbv ; 238 DB_TXN * tx ; 239 DB_TXNMGR * tmg ; 240 t ; 242 t = 0; 243 tmg = dbv -> tx_hd ; 252 ( tx = `TAILQ_FIRST (& tmg -> txn_cha )! NULL ) 253 `__db_txn_d ( tx ); 255 `__os_ ( dbv , tmg ); 256 ( t ); 258 } } 268 $__db_txn_d ( tx ) 269 DB_TXN * tx ; 271 DB_ENV * dbv ; 272 DB_TXN * kids ; 273 DB_TXNMGR * mgr ; 275 mgr = tx -> mg ; 276 dbv = mgr ->dbenv; 281 kids = `TAILQ_FIRST (& tx ->kids); 282 kids ! NULL ; 283 kids = `TAILQ_FIRST (& tx ->kids)) 284 `__db_txn_d ( kids ); 292 i( tx -> ! NULL ) 293 `TAILQ_REMOVE (& tx -> -> kids ,x, klks ); 294 `TAILQ_REMOVE (& mgr -> txn_cha , tx , lks ); 295 `__os_ ( dbv , tx ); 296 } } 305 $__db_txn_tup ( dbv , txn , , id ) 306 DB_ENV * dbv ; 307 DB_TXN * txn ; 308 DB_TXN * ; 309 u_t32_t id ; 311 txn -> mg = dbv -> tx_hd ; 312 txn -> =arent; 313 txn -> txnid = id ; 324 `TAILQ_INSERT_TAIL (& txn -> mg -> txn_cha ,xn, lks ); 326 `TAILQ_INIT (& txn -> kids ); 328 i( ! NULL ) 329 `TAILQ_INSERT_HEAD (& -> kids , txn , klks ); 331 `__db_txn_ ( txn ); 333 txn -> ags = TXN_MALLOC ; 334 } } 341 $__db_c_deroy ( dbc ) 342 DBC * dbc ; 344 DB * dbp ; 346 dbp = dbc ->dbp; 348 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 350 i( dbc -> my_rskey . da ! NULL ) 351 `__os_ ( dbc -> dbp -> dbv , dbc-> my_rskey . da ); 352 i( dbc -> my_rkey . da ! NULL ) 353 `__os_ ( dbc -> dbp -> dbv , dbc-> my_rkey . da ); 354 i( dbc -> my_rda . da ! NULL ) 355 `__os_ ( dbc -> dbp -> dbv , dbc-> my_rda . da ); 356 `__os_ ( NULL , dbc ); 359 } } 368 $__db_c_esh ( dbc ) 369 DBC * dbc ; 371 DB * dbp ; 373 dbp = dbc ->dbp; 374 dbc -> ags = 0; 375 dbc -> _id = 0; 381 i( dbp ! NULL ) { 382 `TAILQ_REMOVE (& dbp -> aive_queue , dbc , lks ); 383 `TAILQ_INSERT_TAIL (& dbp -> _queue , dbc , lks ); 385 } } 394 $__db_c_tup ( _id , dbp , db ) 395 u_t _id ; 396 DB * dbp ; 397 DBC ** db ; 399 DBC * dbc , tmpdbc ; 400 t ; 402 i(( dbc = `TAILQ_FIRST (& dbp -> _queue )! NULL ) 403 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 405 i(( t = 406 `__os_oc ( dbp -> dbv , 1, ( DBC ), & dbc )) != 0) { 411 tmpdbc . dbp = NULL ; 412 tmpdbc . _id = cl_id; 413 () `__db_dbc_o (& tmpdbc ); 414 ( t ); 417 `__db_dbc_ ( dbc ); 424 dbc -> am_deroy = __db_c_deroy ; 426 dbc -> _id = cl_id; 427 dbc -> dbp = dbp; 428 `TAILQ_INSERT_TAIL (& dbp -> aive_queue , dbc , lks ); 429 * db = dbc ; 431 } } 440 $__db_dbo_comm ( dbp ) 441 DB * dbp ; 443 t , t_t ; 444 DBC * dbc ; 455 t = 0; 456 ( dbc = `TAILQ_FIRST (& dbp -> aive_queue )! NULL ) 457 `__db_c_esh ( dbc ); 458 ( dbc = `TAILQ_FIRST (& dbp -> _queue )! NULL ) 459 i(( t_t = `__db_c_deroy ( dbc )!0 && t == 0) 460 t = t_t ; 462 `TAILQ_INIT (& dbp -> _queue ); 463 `TAILQ_INIT (& dbp -> aive_queue ); 465 i( dbp -> my_rskey . da ! NULL ) 466 `__os_ ( dbp -> dbv , dbp-> my_rskey . da ); 467 i( dbp -> my_rkey . da ! NULL ) 468 `__os_ ( dbp -> dbv , dbp-> my_rkey . da ); 469 i( dbp -> my_rda . da ! NULL ) 470 `__os_ ( dbp -> dbv , dbp-> my_rda . da ); 472 `memt ( dbp , CLEAR_BYTE , (*dbp)); 473 `__os_ ( NULL , dbp ); 474 ( t ); 475 } } @../rpc_client/gen_client.c 2 ~"db_cfig.h " 4 ~"db_t.h " 5 #ifde HAVE_SYSTEM_INCLUDE_FILES 6 ~<c/c.h > 8 ~"db_rv.h " 9 ~"dbc/txn.h " 10 ~"dbc_auto/c__ext.h " 12 __db_dbp_g __P (( DB *)); 13 __db_norv __P (( DB_ENV *)); 14 __db_txn_g __P (( DB_TXN *)); 17 $__db_norv ( dbv ) 18 DB_ENV * dbv ; 20 `__db_rx ( dbv , "No Berkeley DB RPC servernvironment"); 21 ( DB_NOSERVER ); 22 } } 31 $__db_dbv_g ( dbv ) 32 DB_ENV * dbv ; 34 `__db_rx ( dbv , 36 ( DB_OPNOTSUP ); 37 } } 44 $__db_dbp_g ( dbp ) 45 DB * dbp ; 47 ( `__db_dbv_g ( dbp -> dbv )); 48 } } 55 $__db_txn_g ( txn ) 56 DB_TXN * txn ; 58 ( `__db_dbv_g ( txn -> mg -> dbv )); 59 } } 65 $__db_v_ ( dbv , timeout ) 66 DB_ENV * dbv ; 67 timeout ; 69 CLIENT * ; 70 __v__msg msg ; 71 __v__y * yp = NULL ; 72 t ; 74 t = 0; 75 i( dbv = NULL || ! `RPC_ON (dbenv)) 76 ( `__db_norv ( dbv )); 78 = ( CLIENT *) dbv -> _hd ; 80 msg . timeout = ( u_t )timeout; 82 yp = `__db_v__4006 (& msg , ); 83 i( yp = NULL ) { 84 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 85 t = DB_NOSERVER ; 86 out ; 88 t = `__db_v__t ( dbv , timeout , yp ); 89 out : 90 i( yp ! NULL ) 91 `xdr_ (( xdroc_t ) xdr___v__y , (*) yp ); 92 ( t ); 93 } } 99 $__db_v_cdsgroup_beg ( dbv , txp ) 100 DB_ENV * dbv ; 101 DB_TXN ** txp ; 103 CLIENT * ; 104 __v_cdsgroup_beg_msg msg ; 105 __v_cdsgroup_beg_y * yp = NULL ; 106 t ; 108 t = 0; 109 i( dbv = NULL || ! `RPC_ON (dbenv)) 110 ( `__db_norv ( dbv )); 112 = ( CLIENT *) dbv -> _hd ; 114 msg . dbv_id = dbv -> _id ; 116 yp = `__db_v_cdsgroup_beg_4006 (& msg , ); 117 i( yp = NULL ) { 118 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 119 t = DB_NOSERVER ; 120 out ; 122 t = `__db_v_cdsgroup_beg_t ( dbv , txp , yp ); 123 out : 124 i( yp ! NULL ) 125 `xdr_ (( xdroc_t ) xdr___v_cdsgroup_beg_y , (*) yp ); 126 ( t ); 127 } } 133 $__db_v_o ( dbv , ags ) 134 DB_ENV * dbv ; 135 u_t32_t ags ; 137 CLIENT * ; 138 __v_o_msg msg ; 139 __v_o_y * yp = NULL ; 140 t ; 142 t = 0; 143 i( dbv = NULL || ! `RPC_ON (dbenv)) 144 ( `__db_norv ( dbv )); 146 = ( CLIENT *) dbv -> _hd ; 148 msg . dbv_id = dbv -> _id ; 149 msg . ags = ( u_t )flags; 151 yp = `__db_v_o_4006 (& msg , ); 152 i( yp = NULL ) { 153 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 154 t = DB_NOSERVER ; 155 out ; 157 t = yp -> us ; 158 out : 159 i( yp ! NULL ) 160 `xdr_ (( xdroc_t ) xdr___v_o_y , (*) yp ); 161 ( t ); 162 } } 169 $__db_v_dbmove ( dbv , tx , me , subdb , ags ) 170 DB_ENV * dbv ; 171 DB_TXN * tx ; 172 cڡ * me ; 173 cڡ * subdb ; 174 u_t32_t ags ; 176 CLIENT * ; 177 __v_dbmove_msg msg ; 178 __v_dbmove_y * yp = NULL ; 179 t ; 181 t = 0; 182 i( dbv = NULL || ! `RPC_ON (dbenv)) 183 ( `__db_norv ( dbv )); 185 = ( CLIENT *) dbv -> _hd ; 187 msg . dbv_id = dbv -> _id ; 188 i( tx = NULL ) 189 msg . tx_id = 0; 191 msg . tx_id = tx -> txnid ; 192 i( me = NULL ) 193 msg . me = ""; 195 msg . me = (*)name; 196 i( subdb = NULL ) 197 msg . subdb = ""; 199 msg . subdb = (*)subdb; 200 msg . ags = ( u_t )flags; 202 yp = `__db_v_dbmove_4006 (& msg , ); 203 i( yp = NULL ) { 204 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 205 t = DB_NOSERVER ; 206 out ; 208 t = yp -> us ; 209 out : 210 i( yp ! NULL ) 211 `xdr_ (( xdroc_t ) xdr___v_dbmove_y , (*) yp ); 212 ( t ); 213 } } 220 $__db_v_dbme ( dbv , tx , me , subdb , wme , ags ) 221 DB_ENV * dbv ; 222 DB_TXN * tx ; 223 cڡ * me ; 224 cڡ * subdb ; 225 cڡ * wme ; 226 u_t32_t ags ; 228 CLIENT * ; 229 __v_dbme_msg msg ; 230 __v_dbme_y * yp = NULL ; 231 t ; 233 t = 0; 234 i( dbv = NULL || ! `RPC_ON (dbenv)) 235 ( `__db_norv ( dbv )); 237 = ( CLIENT *) dbv -> _hd ; 239 msg . dbv_id = dbv -> _id ; 240 i( tx = NULL ) 241 msg . tx_id = 0; 243 msg . tx_id = tx -> txnid ; 244 i( me = NULL ) 245 msg . me = ""; 247 msg . me = (*)name; 248 i( subdb = NULL ) 249 msg . subdb = ""; 251 msg . subdb = (*)subdb; 252 i( wme = NULL ) 253 msg . wme = ""; 255 msg . wme = (*)newname; 256 msg . ags = ( u_t )flags; 258 yp = `__db_v_dbme_4006 (& msg , ); 259 i( yp = NULL ) { 260 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 261 t = DB_NOSERVER ; 262 out ; 264 t = yp -> us ; 265 out : 266 i( yp ! NULL ) 267 `xdr_ (( xdroc_t ) xdr___v_dbme_y , (*) yp ); 268 ( t ); 269 } } 276 $__db_v_g_chesize ( dbv , gby , by , nch ) 277 DB_ENV * dbv ; 278 u_t32_t * gby ; 279 u_t32_t * by ; 280 * nch ; 282 CLIENT * ; 283 __v_g_chesize_msg msg ; 284 __v_g_chesize_y * yp = NULL ; 285 t ; 287 t = 0; 288 i( dbv = NULL || ! `RPC_ON (dbenv)) 289 ( `__db_norv ( dbv )); 291 = ( CLIENT *) dbv -> _hd ; 293 msg . dbv_id = dbv -> _id ; 295 yp = `__db_v_g_chesize_4006 (& msg , ); 296 i( yp = NULL ) { 297 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 298 t = DB_NOSERVER ; 299 out ; 301 t = yp -> us ; 302 i( gby ! NULL ) 303 * gby = ( u_t32_t ) yp -> gbys ; 304 i( by ! NULL ) 305 * by = ( u_t32_t ) yp -> bys ; 306 i( nch ! NULL ) 307 * nch = () yp -> nche ; 308 out : 309 i( yp ! NULL ) 310 `xdr_ (( xdroc_t ) xdr___v_g_chesize_y , (*) yp ); 311 ( t ); 312 } } 318 $__db_v_g_y_ags ( dbv , ag ) 319 DB_ENV * dbv ; 320 u_t32_t * ag ; 322 CLIENT * ; 323 __v_g_y_ags_msg msg ; 324 __v_g_y_ags_y * yp = NULL ; 325 t ; 327 t = 0; 328 i( dbv = NULL || ! `RPC_ON (dbenv)) 329 ( `__db_norv ( dbv )); 331 = ( CLIENT *) dbv -> _hd ; 333 msg . dbv_id = dbv -> _id ; 335 yp = `__db_v_g_y_ags_4006 (& msg , ); 336 i( yp = NULL ) { 337 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 338 t = DB_NOSERVER ; 339 out ; 341 t = yp -> us ; 342 i( ag ! NULL ) 343 * ag = ( u_t32_t ) yp -> ags ; 344 out : 345 i( yp ! NULL ) 346 `xdr_ (( xdroc_t ) xdr___v_g_y_ags_y , (*) yp ); 347 ( t ); 348 } } 354 $__db_v_g_ags ( dbv , ag ) 355 DB_ENV * dbv ; 356 u_t32_t * ag ; 358 CLIENT * ; 359 __v_g_ags_msg msg ; 360 __v_g_ags_y * yp = NULL ; 361 t ; 363 t = 0; 364 i( dbv = NULL || ! `RPC_ON (dbenv)) 365 ( `__db_norv ( dbv )); 367 = ( CLIENT *) dbv -> _hd ; 369 msg . dbv_id = dbv -> _id ; 371 yp = `__db_v_g_ags_4006 (& msg , ); 372 i( yp = NULL ) { 373 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 374 t = DB_NOSERVER ; 375 out ; 377 t = yp -> us ; 378 i( ag ! NULL ) 379 * ag = ( u_t32_t ) yp -> ags ; 380 out : 381 i( yp ! NULL ) 382 `xdr_ (( xdroc_t ) xdr___v_g_ags_y , (*) yp ); 383 ( t ); 384 } } 390 $__db_v_g_home ( dbv , hom ) 391 DB_ENV * dbv ; 392 cڡ * * hom ; 394 CLIENT * ; 395 __v_g_home_msg msg ; 396 __v_g_home_y * yp = NULL ; 397 t ; 399 t = 0; 400 i( dbv = NULL || ! `RPC_ON (dbenv)) 401 ( `__db_norv ( dbv )); 403 = ( CLIENT *) dbv -> _hd ; 405 msg . dbv_id = dbv -> _id ; 407 yp = `__db_v_g_home_4006 (& msg , ); 408 i( yp = NULL ) { 409 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 410 t = DB_NOSERVER ; 411 out ; 413 t = yp -> us ; 414 i( hom ! NULL ) 415 * hom = (cڡ *) yp -> home ; 416 out : 417 i( yp ! NULL ) 418 `xdr_ (( xdroc_t ) xdr___v_g_home_y , (*) yp ); 419 ( t ); 420 } } 426 $__db_v_g_ݒ_ags ( dbv , ag ) 427 DB_ENV * dbv ; 428 u_t32_t * ag ; 430 CLIENT * ; 431 __v_g_ݒ_ags_msg msg ; 432 __v_g_ݒ_ags_y * yp = NULL ; 433 t ; 435 t = 0; 436 i( dbv = NULL || ! `RPC_ON (dbenv)) 437 ( `__db_norv ( dbv )); 439 = ( CLIENT *) dbv -> _hd ; 441 msg . dbv_id = dbv -> _id ; 443 yp = `__db_v_g_ݒ_ags_4006 (& msg , ); 444 i( yp = NULL ) { 445 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 446 t = DB_NOSERVER ; 447 out ; 449 t = yp -> us ; 450 i( ag ! NULL ) 451 * ag = ( u_t32_t ) yp -> ags ; 452 out : 453 i( yp ! NULL ) 454 `xdr_ (( xdroc_t ) xdr___v_g_ݒ_ags_y , (*) yp ); 455 ( t ); 456 } } 462 $__db_v_ݒ ( dbv , home , ags , mode ) 463 DB_ENV * dbv ; 464 cڡ * home ; 465 u_t32_t ags ; 466 mode ; 468 CLIENT * ; 469 __v_ݒ_msg msg ; 470 __v_ݒ_y * yp = NULL ; 471 t ; 473 t = 0; 474 i( dbv = NULL || ! `RPC_ON (dbenv)) 475 ( `__db_norv ( dbv )); 477 = ( CLIENT *) dbv -> _hd ; 479 msg . dbv_id = dbv -> _id ; 480 i( home = NULL ) 481 msg . home = ""; 483 msg . home = (*)home; 484 msg . ags = ( u_t )flags; 485 msg . mode = ( u_t )mode; 487 yp = `__db_v_ݒ_4006 (& msg , ); 488 i( yp = NULL ) { 489 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 490 t = DB_NOSERVER ; 491 out ; 493 t = `__db_v_ݒ_t ( dbv , home , ags , mode , yp ); 494 out : 495 i( yp ! NULL ) 496 `xdr_ (( xdroc_t ) xdr___v_ݒ_y , (*) yp ); 497 ( t ); 498 } } 504 $__db_v_move ( dbv , home , ags ) 505 DB_ENV * dbv ; 506 cڡ * home ; 507 u_t32_t ags ; 509 CLIENT * ; 510 __v_move_msg msg ; 511 __v_move_y * yp = NULL ; 512 t ; 514 t = 0; 515 i( dbv = NULL || ! `RPC_ON (dbenv)) 516 ( `__db_norv ( dbv )); 518 = ( CLIENT *) dbv -> _hd ; 520 msg . dbv_id = dbv -> _id ; 521 i( home = NULL ) 522 msg . home = ""; 524 msg . home = (*)home; 525 msg . ags = ( u_t )flags; 527 yp = `__db_v_move_4006 (& msg , ); 528 i( yp = NULL ) { 529 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 530 t = DB_NOSERVER ; 531 out ; 533 t = `__db_v_move_t ( dbv , home , ags , yp ); 534 out : 535 i( yp ! NULL ) 536 `xdr_ (( xdroc_t ) xdr___v_move_y , (*) yp ); 537 ( t ); 538 } } 545 $__db_v_t_chesize ( dbv , gbys , bys , nche ) 546 DB_ENV * dbv ; 547 u_t32_t gbys ; 548 u_t32_t bys ; 549 nche ; 551 CLIENT * ; 552 __v_t_chesize_msg msg ; 553 __v_t_chesize_y * yp = NULL ; 554 t ; 556 t = 0; 557 i( dbv = NULL || ! `RPC_ON (dbenv)) 558 ( `__db_norv ( dbv )); 560 = ( CLIENT *) dbv -> _hd ; 562 msg . dbv_id = dbv -> _id ; 563 msg . gbys = ( u_t )gbytes; 564 msg . bys = ( u_t )bytes; 565 msg . nche = ( u_t )ncache; 567 yp = `__db_v_t_chesize_4006 (& msg , ); 568 i( yp = NULL ) { 569 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 570 t = DB_NOSERVER ; 571 out ; 573 t = yp -> us ; 574 out : 575 i( yp ! NULL ) 576 `xdr_ (( xdroc_t ) xdr___v_t_chesize_y , (*) yp ); 577 ( t ); 578 } } 584 $__db_v_t_y ( dbv , sswd , ags ) 585 DB_ENV * dbv ; 586 cڡ * sswd ; 587 u_t32_t ags ; 589 CLIENT * ; 590 __v_t_y_msg msg ; 591 __v_t_y_y * yp = NULL ; 592 t ; 594 t = 0; 595 i( dbv = NULL || ! `RPC_ON (dbenv)) 596 ( `__db_norv ( dbv )); 598 = ( CLIENT *) dbv -> _hd ; 600 msg . dbv_id = dbv -> _id ; 601 i( sswd = NULL ) 602 msg . sswd = ""; 604 msg . sswd = (*)passwd; 605 msg . ags = ( u_t )flags; 607 yp = `__db_v_t_y_4006 (& msg , ); 608 i( yp = NULL ) { 609 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 610 t = DB_NOSERVER ; 611 out ; 613 t = yp -> us ; 614 out : 615 i( yp ! NULL ) 616 `xdr_ (( xdroc_t ) xdr___v_t_y_y , (*) yp ); 617 ( t ); 618 } } 624 $__db_v_t_ags ( dbv , ags , off ) 625 DB_ENV * dbv ; 626 u_t32_t ags ; 627 off ; 629 CLIENT * ; 630 __v_t_ags_msg msg ; 631 __v_t_ags_y * yp = NULL ; 632 t ; 634 t = 0; 635 i( dbv = NULL || ! `RPC_ON (dbenv)) 636 ( `__db_norv ( dbv )); 638 = ( CLIENT *) dbv -> _hd ; 640 msg . dbv_id = dbv -> _id ; 641 msg . ags = ( u_t )flags; 642 msg . off = ( u_t )onoff; 644 yp = `__db_v_t_ags_4006 (& msg , ); 645 i( yp = NULL ) { 646 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 647 t = DB_NOSERVER ; 648 out ; 650 t = yp -> us ; 651 out : 652 i( yp ! NULL ) 653 `xdr_ (( xdroc_t ) xdr___v_t_ags_y , (*) yp ); 654 ( t ); 655 } } 662 $__db_v_txn_beg ( dbv , , txp , ags ) 663 DB_ENV * dbv ; 664 DB_TXN * ; 665 DB_TXN ** txp ; 666 u_t32_t ags ; 668 CLIENT * ; 669 __v_txn_beg_msg msg ; 670 __v_txn_beg_y * yp = NULL ; 671 t ; 673 t = 0; 674 i( dbv = NULL || ! `RPC_ON (dbenv)) 675 ( `__db_norv ( dbv )); 677 = ( CLIENT *) dbv -> _hd ; 679 msg . dbv_id = dbv -> _id ; 680 i( = NULL ) 681 msg . _id = 0; 683 msg . _id = -> txnid ; 684 msg . ags = ( u_t )flags; 686 yp = `__db_v_txn_beg_4006 (& msg , ); 687 i( yp = NULL ) { 688 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 689 t = DB_NOSERVER ; 690 out ; 692 t = `__db_v_txn_beg_t ( dbv , , txp , ags , yp ); 693 out : 694 i( yp ! NULL ) 695 `xdr_ (( xdroc_t ) xdr___v_txn_beg_y , (*) yp ); 696 ( t ); 697 } } 704 $__db_v_txn_cov ( dbv , li , cou , , ags ) 705 DB_ENV * dbv ; 706 DB_PREPLIST * li ; 707 cou ; 708 * ; 709 u_t32_t ags ; 711 CLIENT * ; 712 __v_txn_cov_msg msg ; 713 __v_txn_cov_y * yp = NULL ; 714 t ; 716 t = 0; 717 i( dbv = NULL || ! `RPC_ON (dbenv)) 718 ( `__db_norv ( dbv )); 720 = ( CLIENT *) dbv -> _hd ; 722 msg . dbv_id = dbv -> _id ; 723 msg . cou = ( u_t )count; 724 msg . ags = ( u_t )flags; 726 yp = `__db_v_txn_cov_4006 (& msg , ); 727 i( yp = NULL ) { 728 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 729 t = DB_NOSERVER ; 730 out ; 732 t = `__db_v_txn_cov_t ( dbv , li , cou , , ags , yp ); 733 out : 734 i( yp ! NULL ) 735 `xdr_ (( xdroc_t ) xdr___v_txn_cov_y , (*) yp ); 736 ( t ); 737 } } 743 $__db_db_ ( dbp , dbv , ags ) 744 DB * dbp ; 745 DB_ENV * dbv ; 746 u_t32_t ags ; 748 CLIENT * ; 749 __db__msg msg ; 750 __db__y * yp = NULL ; 751 t ; 753 t = 0; 754 i( dbv = NULL || ! `RPC_ON (dbenv)) 755 ( `__db_norv ( dbv )); 757 = ( CLIENT *) dbv -> _hd ; 759 msg . dbv_id = dbv -> _id ; 760 msg . ags = ( u_t )flags; 762 yp = `__db_db__4006 (& msg , ); 763 i( yp = NULL ) { 764 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 765 t = DB_NOSERVER ; 766 out ; 768 t = `__db_db__t ( dbp , dbv , ags , yp ); 769 out : 770 i( yp ! NULL ) 771 `xdr_ (( xdroc_t ) xdr___db__y , (*) yp ); 772 ( t ); 773 } } 780 $__db_db_assoc ( dbp , tx , sdbp , func0 , ags ) 781 DB * dbp ; 782 DB_TXN * tx ; 783 DB * sdbp ; 784 (* func0 `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 785 u_t32_t ags ; 787 CLIENT * ; 788 __db_assoc_msg msg ; 789 __db_assoc_y * yp = NULL ; 790 t ; 791 DB_ENV * dbv ; 793 t = 0; 794 dbv = dbp ->dbenv; 795 i( dbv = NULL || ! `RPC_ON (dbenv)) 796 ( `__db_norv ( NULL )); 798 = ( CLIENT *) dbv -> _hd ; 800 i( func0 ! NULL ) { 801 `__db_rx ( dbv , "User functionsot supported in RPC"); 802 ( EINVAL ); 804 i( dbp = NULL ) 805 msg . dbp_id = 0; 807 msg . dbp_id = dbp -> _id ; 808 i( tx = NULL ) 809 msg . tx_id = 0; 811 msg . tx_id = tx -> txnid ; 812 i( sdbp = NULL ) 813 msg . sdbp_id = 0; 815 msg . sdbp_id = sdbp -> _id ; 816 msg . ags = ( u_t )flags; 818 yp = `__db_db_assoc_4006 (& msg , ); 819 i( yp = NULL ) { 820 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 821 t = DB_NOSERVER ; 822 out ; 824 t = yp -> us ; 825 out : 826 i( yp ! NULL ) 827 `xdr_ (( xdroc_t ) xdr___db_assoc_y , (*) yp ); 828 ( t ); 829 } } 835 $__db_db_o ( dbp , ags ) 836 DB * dbp ; 837 u_t32_t ags ; 839 CLIENT * ; 840 __db_o_msg msg ; 841 __db_o_y * yp = NULL ; 842 t ; 843 DB_ENV * dbv ; 845 t = 0; 846 dbv = dbp ->dbenv; 847 i( dbv = NULL || ! `RPC_ON (dbenv)) 848 ( `__db_norv ( NULL )); 850 = ( CLIENT *) dbv -> _hd ; 852 i( dbp = NULL ) 853 msg . dbp_id = 0; 855 msg . dbp_id = dbp -> _id ; 856 msg . ags = ( u_t )flags; 858 yp = `__db_db_o_4006 (& msg , ); 859 i( yp = NULL ) { 860 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 861 t = DB_NOSERVER ; 862 out ; 864 t = `__db_db_o_t ( dbp , ags , yp ); 865 out : 866 i( yp ! NULL ) 867 `xdr_ (( xdroc_t ) xdr___db_o_y , (*) yp ); 868 ( t ); 869 } } 875 $__db_db_curs ( dbp , tx , dbp , ags ) 876 DB * dbp ; 877 DB_TXN * tx ; 878 DBC ** dbp ; 879 u_t32_t ags ; 881 CLIENT * ; 882 __db_curs_msg msg ; 883 __db_curs_y * yp = NULL ; 884 t ; 885 DB_ENV * dbv ; 887 t = 0; 888 dbv = dbp ->dbenv; 889 i( dbv = NULL || ! `RPC_ON (dbenv)) 890 ( `__db_norv ( NULL )); 892 = ( CLIENT *) dbv -> _hd ; 894 i( dbp = NULL ) 895 msg . dbp_id = 0; 897 msg . dbp_id = dbp -> _id ; 898 i( tx = NULL ) 899 msg . tx_id = 0; 901 msg . tx_id = tx -> txnid ; 902 msg . ags = ( u_t )flags; 904 yp = `__db_db_curs_4006 (& msg , ); 905 i( yp = NULL ) { 906 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 907 t = DB_NOSERVER ; 908 out ; 910 t = `__db_db_curs_t ( dbp , tx , dbp , ags , yp ); 911 out : 912 i( yp ! NULL ) 913 `xdr_ (( xdroc_t ) xdr___db_curs_y , (*) yp ); 914 ( t ); 915 } } 921 $__db_db_d ( dbp , tx , key , ags ) 922 DB * dbp ; 923 DB_TXN * tx ; 924 DBT * key ; 925 u_t32_t ags ; 927 CLIENT * ; 928 __db_d_msg msg ; 929 __db_d_y * yp = NULL ; 930 t ; 931 DB_ENV * dbv ; 933 t = 0; 934 dbv = dbp ->dbenv; 935 i( dbv = NULL || ! `RPC_ON (dbenv)) 936 ( `__db_norv ( NULL )); 938 = ( CLIENT *) dbv -> _hd ; 940 i( dbp = NULL ) 941 msg . dbp_id = 0; 943 msg . dbp_id = dbp -> _id ; 944 i( tx = NULL ) 945 msg . tx_id = 0; 947 msg . tx_id = tx -> txnid ; 948 msg . keydn = key -> dn ; 949 msg . keydoff = key -> doff ; 950 msg . keyun = key -> un ; 951 msg . keyags = key -> ags ; 952 msg . keyda . keyda_v = key -> da ; 953 msg . keyda . keyda_n = key -> size ; 954 msg . ags = ( u_t )flags; 956 yp = `__db_db_d_4006 (& msg , ); 957 i( yp = NULL ) { 958 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 959 t = DB_NOSERVER ; 960 out ; 962 t = yp -> us ; 963 out : 964 i( yp ! NULL ) 965 `xdr_ (( xdroc_t ) xdr___db_d_y , (*) yp ); 966 ( t ); 967 } } 973 $__db_db_g ( dbp , tx , key , da , ags ) 974 DB * dbp ; 975 DB_TXN * tx ; 976 DBT * key ; 977 DBT * da ; 978 u_t32_t ags ; 980 CLIENT * ; 981 __db_g_msg msg ; 982 __db_g_y * yp = NULL ; 983 t ; 984 DB_ENV * dbv ; 986 t = 0; 987 dbv = dbp ->dbenv; 988 i( dbv = NULL || ! `RPC_ON (dbenv)) 989 ( `__db_norv ( NULL )); 991 = ( CLIENT *) dbv -> _hd ; 993 i( dbp = NULL ) 994 msg . dbp_id = 0; 996 msg . dbp_id = dbp -> _id ; 997 i( tx = NULL ) 998 msg . tx_id = 0; 1000 msg . tx_id = tx -> txnid ; 1001 msg . keydn = key -> dn ; 1002 msg . keydoff = key -> doff ; 1003 msg . keyun = key -> un ; 1004 msg . keyags = key -> ags ; 1005 msg . keyda . keyda_v = key -> da ; 1006 msg . keyda . keyda_n = key -> size ; 1007 msg . dadn = da -> dn ; 1008 msg . dadoff = da -> doff ; 1009 msg . daun = da -> un ; 1010 msg . daags = da -> ags ; 1011 msg . dada . dada_v = da ->data; 1012 msg . dada . dada_n = da -> size ; 1013 msg . ags = ( u_t )flags; 1015 yp = `__db_db_g_4006 (& msg , ); 1016 i( yp = NULL ) { 1017 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1018 t = DB_NOSERVER ; 1019 out ; 1021 t = `__db_db_g_t ( dbp , tx , key , da , ags , yp ); 1022 out : 1023 i( yp ! NULL ) 1024 `xdr_ (( xdroc_t ) xdr___db_g_y , (*) yp ); 1025 ( t ); 1026 } } 1032 $__db_db_g_bt_mkey ( dbp , mkeyp ) 1033 DB * dbp ; 1034 u_t32_t * mkeyp ; 1036 CLIENT * ; 1037 __db_g_bt_mkey_msg msg ; 1038 __db_g_bt_mkey_y * yp = NULL ; 1039 t ; 1040 DB_ENV * dbv ; 1042 t = 0; 1043 dbv = dbp ->dbenv; 1044 i( dbv = NULL || ! `RPC_ON (dbenv)) 1045 ( `__db_norv ( NULL )); 1047 = ( CLIENT *) dbv -> _hd ; 1049 i( dbp = NULL ) 1050 msg . dbp_id = 0; 1052 msg . dbp_id = dbp -> _id ; 1054 yp = `__db_db_g_bt_mkey_4006 (& msg , ); 1055 i( yp = NULL ) { 1056 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1057 t = DB_NOSERVER ; 1058 out ; 1060 t = yp -> us ; 1061 i( mkeyp ! NULL ) 1062 * mkeyp = ( u_t32_t ) yp -> mkey ; 1063 out : 1064 i( yp ! NULL ) 1065 `xdr_ (( xdroc_t ) xdr___db_g_bt_mkey_y , (*) yp ); 1066 ( t ); 1067 } } 1074 $__db_db_g_dbme ( dbp , fam , dbm ) 1075 DB * dbp ; 1076 cڡ * * fam ; 1077 cڡ * * dbm ; 1079 CLIENT * ; 1080 __db_g_dbme_msg msg ; 1081 __db_g_dbme_y * yp = NULL ; 1082 t ; 1083 DB_ENV * dbv ; 1085 t = 0; 1086 dbv = dbp ->dbenv; 1087 i( dbv = NULL || ! `RPC_ON (dbenv)) 1088 ( `__db_norv ( NULL )); 1090 = ( CLIENT *) dbv -> _hd ; 1092 i( dbp = NULL ) 1093 msg . dbp_id = 0; 1095 msg . dbp_id = dbp -> _id ; 1097 yp = `__db_db_g_dbme_4006 (& msg , ); 1098 i( yp = NULL ) { 1099 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1100 t = DB_NOSERVER ; 1101 out ; 1103 t = yp -> us ; 1104 i( fam ! NULL ) 1105 * fam = (cڡ *) yp -> fame ; 1106 i( dbm ! NULL ) 1107 * dbm = (cڡ *) yp -> dbme ; 1108 out : 1109 i( yp ! NULL ) 1110 `xdr_ (( xdroc_t ) xdr___db_g_dbme_y , (*) yp ); 1111 ( t ); 1112 } } 1118 $__db_db_g_y_ags ( dbp , ag ) 1119 DB * dbp ; 1120 u_t32_t * ag ; 1122 CLIENT * ; 1123 __db_g_y_ags_msg msg ; 1124 __db_g_y_ags_y * yp = NULL ; 1125 t ; 1126 DB_ENV * dbv ; 1128 t = 0; 1129 dbv = dbp ->dbenv; 1130 i( dbv = NULL || ! `RPC_ON (dbenv)) 1131 ( `__db_norv ( NULL )); 1133 = ( CLIENT *) dbv -> _hd ; 1135 i( dbp = NULL ) 1136 msg . dbp_id = 0; 1138 msg . dbp_id = dbp -> _id ; 1140 yp = `__db_db_g_y_ags_4006 (& msg , ); 1141 i( yp = NULL ) { 1142 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1143 t = DB_NOSERVER ; 1144 out ; 1146 t = yp -> us ; 1147 i( ag ! NULL ) 1148 * ag = ( u_t32_t ) yp -> ags ; 1149 out : 1150 i( yp ! NULL ) 1151 `xdr_ (( xdroc_t ) xdr___db_g_y_ags_y , (*) yp ); 1152 ( t ); 1153 } } 1159 $__db_db_g_ags ( dbp , ag ) 1160 DB * dbp ; 1161 u_t32_t * ag ; 1163 CLIENT * ; 1164 __db_g_ags_msg msg ; 1165 __db_g_ags_y * yp = NULL ; 1166 t ; 1167 DB_ENV * dbv ; 1169 t = 0; 1170 dbv = dbp ->dbenv; 1171 i( dbv = NULL || ! `RPC_ON (dbenv)) 1172 ( `__db_norv ( NULL )); 1174 = ( CLIENT *) dbv -> _hd ; 1176 i( dbp = NULL ) 1177 msg . dbp_id = 0; 1179 msg . dbp_id = dbp -> _id ; 1181 yp = `__db_db_g_ags_4006 (& msg , ); 1182 i( yp = NULL ) { 1183 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1184 t = DB_NOSERVER ; 1185 out ; 1187 t = yp -> us ; 1188 i( ag ! NULL ) 1189 * ag = ( u_t32_t ) yp -> ags ; 1190 out : 1191 i( yp ! NULL ) 1192 `xdr_ (( xdroc_t ) xdr___db_g_ags_y , (*) yp ); 1193 ( t ); 1194 } } 1200 $__db_db_g_h_f ( dbp , fp ) 1201 DB * dbp ; 1202 u_t32_t * fp ; 1204 CLIENT * ; 1205 __db_g_h_f_msg msg ; 1206 __db_g_h_f_y * yp = NULL ; 1207 t ; 1208 DB_ENV * dbv ; 1210 t = 0; 1211 dbv = dbp ->dbenv; 1212 i( dbv = NULL || ! `RPC_ON (dbenv)) 1213 ( `__db_norv ( NULL )); 1215 = ( CLIENT *) dbv -> _hd ; 1217 i( dbp = NULL ) 1218 msg . dbp_id = 0; 1220 msg . dbp_id = dbp -> _id ; 1222 yp = `__db_db_g_h_f_4006 (& msg , ); 1223 i( yp = NULL ) { 1224 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1225 t = DB_NOSERVER ; 1226 out ; 1228 t = yp -> us ; 1229 i( fp ! NULL ) 1230 * fp = ( u_t32_t ) yp -> f ; 1231 out : 1232 i( yp ! NULL ) 1233 `xdr_ (( xdroc_t ) xdr___db_g_h_f_y , (*) yp ); 1234 ( t ); 1235 } } 1241 $__db_db_g_h_m ( dbp , mp ) 1242 DB * dbp ; 1243 u_t32_t * mp ; 1245 CLIENT * ; 1246 __db_g_h_m_msg msg ; 1247 __db_g_h_m_y * yp = NULL ; 1248 t ; 1249 DB_ENV * dbv ; 1251 t = 0; 1252 dbv = dbp ->dbenv; 1253 i( dbv = NULL || ! `RPC_ON (dbenv)) 1254 ( `__db_norv ( NULL )); 1256 = ( CLIENT *) dbv -> _hd ; 1258 i( dbp = NULL ) 1259 msg . dbp_id = 0; 1261 msg . dbp_id = dbp -> _id ; 1263 yp = `__db_db_g_h_m_4006 (& msg , ); 1264 i( yp = NULL ) { 1265 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1266 t = DB_NOSERVER ; 1267 out ; 1269 t = yp -> us ; 1270 i( mp ! NULL ) 1271 * mp = ( u_t32_t ) yp -> m ; 1272 out : 1273 i( yp ! NULL ) 1274 `xdr_ (( xdroc_t ) xdr___db_g_h_m_y , (*) yp ); 1275 ( t ); 1276 } } 1282 $__db_db_g_ld ( dbp , ldp ) 1283 DB * dbp ; 1284 * ldp ; 1286 CLIENT * ; 1287 __db_g_ld_msg msg ; 1288 __db_g_ld_y * yp = NULL ; 1289 t ; 1290 DB_ENV * dbv ; 1292 t = 0; 1293 dbv = dbp ->dbenv; 1294 i( dbv = NULL || ! `RPC_ON (dbenv)) 1295 ( `__db_norv ( NULL )); 1297 = ( CLIENT *) dbv -> _hd ; 1299 i( dbp = NULL ) 1300 msg . dbp_id = 0; 1302 msg . dbp_id = dbp -> _id ; 1304 yp = `__db_db_g_ld_4006 (& msg , ); 1305 i( yp = NULL ) { 1306 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1307 t = DB_NOSERVER ; 1308 out ; 1310 t = yp -> us ; 1311 i( ldp ! NULL ) 1312 * ldp = () yp -> ld ; 1313 out : 1314 i( yp ! NULL ) 1315 `xdr_ (( xdroc_t ) xdr___db_g_ld_y , (*) yp ); 1316 ( t ); 1317 } } 1323 $__db_db_g_ݒ_ags ( dbp , ag ) 1324 DB * dbp ; 1325 u_t32_t * ag ; 1327 CLIENT * ; 1328 __db_g_ݒ_ags_msg msg ; 1329 __db_g_ݒ_ags_y * yp = NULL ; 1330 t ; 1331 DB_ENV * dbv ; 1333 t = 0; 1334 dbv = dbp ->dbenv; 1335 i( dbv = NULL || ! `RPC_ON (dbenv)) 1336 ( `__db_norv ( NULL )); 1338 = ( CLIENT *) dbv -> _hd ; 1340 i( dbp = NULL ) 1341 msg . dbp_id = 0; 1343 msg . dbp_id = dbp -> _id ; 1345 yp = `__db_db_g_ݒ_ags_4006 (& msg , ); 1346 i( yp = NULL ) { 1347 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1348 t = DB_NOSERVER ; 1349 out ; 1351 t = yp -> us ; 1352 i( ag ! NULL ) 1353 * ag = ( u_t32_t ) yp -> ags ; 1354 out : 1355 i( yp ! NULL ) 1356 `xdr_ (( xdroc_t ) xdr___db_g_ݒ_ags_y , (*) yp ); 1357 ( t ); 1358 } } 1364 $__db_db_g_gesize ( dbp , gesiz ) 1365 DB * dbp ; 1366 u_t32_t * gesiz ; 1368 CLIENT * ; 1369 __db_g_gesize_msg msg ; 1370 __db_g_gesize_y * yp = NULL ; 1371 t ; 1372 DB_ENV * dbv ; 1374 t = 0; 1375 dbv = dbp ->dbenv; 1376 i( dbv = NULL || ! `RPC_ON (dbenv)) 1377 ( `__db_norv ( NULL )); 1379 = ( CLIENT *) dbv -> _hd ; 1381 i( dbp = NULL ) 1382 msg . dbp_id = 0; 1384 msg . dbp_id = dbp -> _id ; 1386 yp = `__db_db_g_gesize_4006 (& msg , ); 1387 i( yp = NULL ) { 1388 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1389 t = DB_NOSERVER ; 1390 out ; 1392 t = yp -> us ; 1393 i( gesiz ! NULL ) 1394 * gesiz = ( u_t32_t ) yp -> gesize ; 1395 out : 1396 i( yp ! NULL ) 1397 `xdr_ (( xdroc_t ) xdr___db_g_gesize_y , (*) yp ); 1398 ( t ); 1399 } } 1405 $__db_db_g_iܙy ( dbp , iܙyp ) 1406 DB * dbp ; 1407 DB_CACHE_PRIORITY * iܙyp ; 1409 CLIENT * ; 1410 __db_g_iܙy_msg msg ; 1411 __db_g_iܙy_y * yp = NULL ; 1412 t ; 1413 DB_ENV * dbv ; 1415 t = 0; 1416 dbv = dbp ->dbenv; 1417 i( dbv = NULL || ! `RPC_ON (dbenv)) 1418 ( `__db_norv ( NULL )); 1420 = ( CLIENT *) dbv -> _hd ; 1422 i( dbp = NULL ) 1423 msg . dbp_id = 0; 1425 msg . dbp_id = dbp -> _id ; 1427 yp = `__db_db_g_iܙy_4006 (& msg , ); 1428 i( yp = NULL ) { 1429 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1430 t = DB_NOSERVER ; 1431 out ; 1433 t = yp -> us ; 1434 i( iܙyp ! NULL ) 1435 * iܙyp = ( DB_CACHE_PRIORITY ) yp -> iܙy ; 1436 out : 1437 i( yp ! NULL ) 1438 `xdr_ (( xdroc_t ) xdr___db_g_iܙy_y , (*) yp ); 1439 ( t ); 1440 } } 1446 $__db_db_g_q_exsize ( dbp , exsiz ) 1447 DB * dbp ; 1448 u_t32_t * exsiz ; 1450 CLIENT * ; 1451 __db_g_q_exsize_msg msg ; 1452 __db_g_q_exsize_y * yp = NULL ; 1453 t ; 1454 DB_ENV * dbv ; 1456 t = 0; 1457 dbv = dbp ->dbenv; 1458 i( dbv = NULL || ! `RPC_ON (dbenv)) 1459 ( `__db_norv ( NULL )); 1461 = ( CLIENT *) dbv -> _hd ; 1463 i( dbp = NULL ) 1464 msg . dbp_id = 0; 1466 msg . dbp_id = dbp -> _id ; 1468 yp = `__db_db_g_q_exsize_4006 (& msg , ); 1469 i( yp = NULL ) { 1470 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1471 t = DB_NOSERVER ; 1472 out ; 1474 t = yp -> us ; 1475 i( exsiz ! NULL ) 1476 * exsiz = ( u_t32_t ) yp -> exsize ; 1477 out : 1478 i( yp ! NULL ) 1479 `xdr_ (( xdroc_t ) xdr___db_g_q_exsize_y , (*) yp ); 1480 ( t ); 1481 } } 1487 $__db_db_g__dim ( dbp , dimp ) 1488 DB * dbp ; 1489 * dimp ; 1491 CLIENT * ; 1492 __db_g__dim_msg msg ; 1493 __db_g__dim_y * yp = NULL ; 1494 t ; 1495 DB_ENV * dbv ; 1497 t = 0; 1498 dbv = dbp ->dbenv; 1499 i( dbv = NULL || ! `RPC_ON (dbenv)) 1500 ( `__db_norv ( NULL )); 1502 = ( CLIENT *) dbv -> _hd ; 1504 i( dbp = NULL ) 1505 msg . dbp_id = 0; 1507 msg . dbp_id = dbp -> _id ; 1509 yp = `__db_db_g__dim_4006 (& msg , ); 1510 i( yp = NULL ) { 1511 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1512 t = DB_NOSERVER ; 1513 out ; 1515 t = yp -> us ; 1516 i( dimp ! NULL ) 1517 * dimp = () yp -> dim ; 1518 out : 1519 i( yp ! NULL ) 1520 `xdr_ (( xdroc_t ) xdr___db_g__dim_y , (*) yp ); 1521 ( t ); 1522 } } 1528 $__db_db_g__n ( dbp , ) 1529 DB * dbp ; 1530 u_t32_t * ; 1532 CLIENT * ; 1533 __db_g__n_msg msg ; 1534 __db_g__n_y * yp = NULL ; 1535 t ; 1536 DB_ENV * dbv ; 1538 t = 0; 1539 dbv = dbp ->dbenv; 1540 i( dbv = NULL || ! `RPC_ON (dbenv)) 1541 ( `__db_norv ( NULL )); 1543 = ( CLIENT *) dbv -> _hd ; 1545 i( dbp = NULL ) 1546 msg . dbp_id = 0; 1548 msg . dbp_id = dbp -> _id ; 1550 yp = `__db_db_g__n_4006 (& msg , ); 1551 i( yp = NULL ) { 1552 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1553 t = DB_NOSERVER ; 1554 out ; 1556 t = yp -> us ; 1557 i( ! NULL ) 1558 * = ( u_t32_t ) yp -> n ; 1559 out : 1560 i( yp ! NULL ) 1561 `xdr_ (( xdroc_t ) xdr___db_g__n_y , (*) yp ); 1562 ( t ); 1563 } } 1569 $__db_db_g__d ( dbp , dp ) 1570 DB * dbp ; 1571 * dp ; 1573 CLIENT * ; 1574 __db_g__d_msg msg ; 1575 __db_g__d_y * yp = NULL ; 1576 t ; 1577 DB_ENV * dbv ; 1579 t = 0; 1580 dbv = dbp ->dbenv; 1581 i( dbv = NULL || ! `RPC_ON (dbenv)) 1582 ( `__db_norv ( NULL )); 1584 = ( CLIENT *) dbv -> _hd ; 1586 i( dbp = NULL ) 1587 msg . dbp_id = 0; 1589 msg . dbp_id = dbp -> _id ; 1591 yp = `__db_db_g__d_4006 (& msg , ); 1592 i( yp = NULL ) { 1593 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1594 t = DB_NOSERVER ; 1595 out ; 1597 t = yp -> us ; 1598 i( dp ! NULL ) 1599 * dp = () yp -> d ; 1600 out : 1601 i( yp ! NULL ) 1602 `xdr_ (( xdroc_t ) xdr___db_g__d_y , (*) yp ); 1603 ( t ); 1604 } } 1610 $__db_db_jo ( dbp , curs , db , ags ) 1611 DB * dbp ; 1612 DBC ** curs ; 1613 DBC ** db ; 1614 u_t32_t ags ; 1616 CLIENT * ; 1617 __db_jo_msg msg ; 1618 __db_jo_y * yp = NULL ; 1619 t ; 1620 DB_ENV * dbv ; 1621 DBC ** cur ; 1622 cursi ; 1623 u_t32_t * cursq ; 1625 t = 0; 1626 dbv = dbp ->dbenv; 1627 i( dbv = NULL || ! `RPC_ON (dbenv)) 1628 ( `__db_norv ( NULL )); 1630 = ( CLIENT *) dbv -> _hd ; 1632 i( dbp = NULL ) 1633 msg . dbp_id = 0; 1635 msg . dbp_id = dbp -> _id ; 1636 cursi = 0, cur = curs ; *cursp != 0; cursi++, cursp++) 1638 msg . curs . curs_n = ( u_t ) cursi ; 1639 i(( t = `__os_oc ( dbv , 1640 msg . curs . curs_n , ( u_t32_t ), &msg.curs. curs_v )) != 0) 1641 ( t ); 1642 cursq = msg . curs . curs_v , cur = curs; cursi --; cursq++, cursp++) 1643 * cursq = (* cur )-> _id ; 1644 msg . ags = ( u_t )flags; 1646 yp = `__db_db_jo_4006 (& msg , ); 1647 `__os_ ( dbv , msg . curs . curs_v ); 1648 i( yp = NULL ) { 1649 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1650 t = DB_NOSERVER ; 1651 out ; 1653 t = `__db_db_jo_t ( dbp , curs , db , ags , yp ); 1654 out : 1655 i( yp ! NULL ) 1656 `xdr_ (( xdroc_t ) xdr___db_jo_y , (*) yp ); 1657 ( t ); 1658 } } 1665 $__db_db_key_nge ( dbp , tx , key , nge , ags ) 1666 DB * dbp ; 1667 DB_TXN * tx ; 1668 DBT * key ; 1669 DB_KEY_RANGE * nge ; 1670 u_t32_t ags ; 1672 CLIENT * ; 1673 __db_key_nge_msg msg ; 1674 __db_key_nge_y * yp = NULL ; 1675 t ; 1676 DB_ENV * dbv ; 1678 t = 0; 1679 dbv = dbp ->dbenv; 1680 i( dbv = NULL || ! `RPC_ON (dbenv)) 1681 ( `__db_norv ( NULL )); 1683 = ( CLIENT *) dbv -> _hd ; 1685 i( dbp = NULL ) 1686 msg . dbp_id = 0; 1688 msg . dbp_id = dbp -> _id ; 1689 i( tx = NULL ) 1690 msg . tx_id = 0; 1692 msg . tx_id = tx -> txnid ; 1693 msg . keydn = key -> dn ; 1694 msg . keydoff = key -> doff ; 1695 msg . keyun = key -> un ; 1696 msg . keyags = key -> ags ; 1697 msg . keyda . keyda_v = key -> da ; 1698 msg . keyda . keyda_n = key -> size ; 1699 msg . ags = ( u_t )flags; 1701 yp = `__db_db_key_nge_4006 (& msg , ); 1702 i( yp = NULL ) { 1703 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1704 t = DB_NOSERVER ; 1705 out ; 1707 t = `__db_db_key_nge_t ( dbp , tx , key , nge , ags , yp ); 1708 out : 1709 i( yp ! NULL ) 1710 `xdr_ (( xdroc_t ) xdr___db_key_nge_y , (*) yp ); 1711 ( t ); 1712 } } 1719 $__db_db_ݒ ( dbp , tx , me , subdb , ty , ags , mode ) 1720 DB * dbp ; 1721 DB_TXN * tx ; 1722 cڡ * me ; 1723 cڡ * subdb ; 1724 DBTYPE ty ; 1725 u_t32_t ags ; 1726 mode ; 1728 CLIENT * ; 1729 __db_ݒ_msg msg ; 1730 __db_ݒ_y * yp = NULL ; 1731 t ; 1732 DB_ENV * dbv ; 1734 t = 0; 1735 dbv = dbp ->dbenv; 1736 i( dbv = NULL || ! `RPC_ON (dbenv)) 1737 ( `__db_norv ( NULL )); 1739 = ( CLIENT *) dbv -> _hd ; 1741 i( dbp = NULL ) 1742 msg . dbp_id = 0; 1744 msg . dbp_id = dbp -> _id ; 1745 i( tx = NULL ) 1746 msg . tx_id = 0; 1748 msg . tx_id = tx -> txnid ; 1749 i( me = NULL ) 1750 msg . me = ""; 1752 msg . me = (*)name; 1753 i( subdb = NULL ) 1754 msg . subdb = ""; 1756 msg . subdb = (*)subdb; 1757 msg . ty = ( u_t )type; 1758 msg . ags = ( u_t )flags; 1759 msg . mode = ( u_t )mode; 1761 yp = `__db_db_ݒ_4006 (& msg , ); 1762 i( yp = NULL ) { 1763 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1764 t = DB_NOSERVER ; 1765 out ; 1767 t = `__db_db_ݒ_t ( dbp , tx , me , subdb , ty , ags , mode , yp ); 1768 out : 1769 i( yp ! NULL ) 1770 `xdr_ (( xdroc_t ) xdr___db_ݒ_y , (*) yp ); 1771 ( t ); 1772 } } 1779 $__db_db_pg ( dbp , tx , skey , pkey , da , ags ) 1780 DB * dbp ; 1781 DB_TXN * tx ; 1782 DBT * skey ; 1783 DBT * pkey ; 1784 DBT * da ; 1785 u_t32_t ags ; 1787 CLIENT * ; 1788 __db_pg_msg msg ; 1789 __db_pg_y * yp = NULL ; 1790 t ; 1791 DB_ENV * dbv ; 1793 t = 0; 1794 dbv = dbp ->dbenv; 1795 i( dbv = NULL || ! `RPC_ON (dbenv)) 1796 ( `__db_norv ( NULL )); 1798 = ( CLIENT *) dbv -> _hd ; 1800 i( dbp = NULL ) 1801 msg . dbp_id = 0; 1803 msg . dbp_id = dbp -> _id ; 1804 i( tx = NULL ) 1805 msg . tx_id = 0; 1807 msg . tx_id = tx -> txnid ; 1808 msg . skeydn = skey -> dn ; 1809 msg . skeydoff = skey -> doff ; 1810 msg . skeyun = skey -> un ; 1811 msg . skeyags = skey -> ags ; 1812 msg . skeyda . skeyda_v = skey -> da ; 1813 msg . skeyda . skeyda_n = skey -> size ; 1814 msg . pkeydn = pkey -> dn ; 1815 msg . pkeydoff = pkey -> doff ; 1816 msg . pkeyun = pkey -> un ; 1817 msg . pkeyags = pkey -> ags ; 1818 msg . pkeyda . pkeyda_v = pkey -> da ; 1819 msg . pkeyda . pkeyda_n = pkey -> size ; 1820 msg . dadn = da -> dn ; 1821 msg . dadoff = da -> doff ; 1822 msg . daun = da -> un ; 1823 msg . daags = da -> ags ; 1824 msg . dada . dada_v = da ->data; 1825 msg . dada . dada_n = da -> size ; 1826 msg . ags = ( u_t )flags; 1828 yp = `__db_db_pg_4006 (& msg , ); 1829 i( yp = NULL ) { 1830 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1831 t = DB_NOSERVER ; 1832 out ; 1834 t = `__db_db_pg_t ( dbp , tx , skey , pkey , da , ags , yp ); 1835 out : 1836 i( yp ! NULL ) 1837 `xdr_ (( xdroc_t ) xdr___db_pg_y , (*) yp ); 1838 ( t ); 1839 } } 1845 $__db_db_put ( dbp , tx , key , da , ags ) 1846 DB * dbp ; 1847 DB_TXN * tx ; 1848 DBT * key ; 1849 DBT * da ; 1850 u_t32_t ags ; 1852 CLIENT * ; 1853 __db_put_msg msg ; 1854 __db_put_y * yp = NULL ; 1855 t ; 1856 DB_ENV * dbv ; 1858 t = 0; 1859 dbv = dbp ->dbenv; 1860 i( dbv = NULL || ! `RPC_ON (dbenv)) 1861 ( `__db_norv ( NULL )); 1863 = ( CLIENT *) dbv -> _hd ; 1865 i( dbp = NULL ) 1866 msg . dbp_id = 0; 1868 msg . dbp_id = dbp -> _id ; 1869 i( tx = NULL ) 1870 msg . tx_id = 0; 1872 msg . tx_id = tx -> txnid ; 1873 msg . keydn = key -> dn ; 1874 msg . keydoff = key -> doff ; 1875 msg . keyun = key -> un ; 1876 msg . keyags = key -> ags ; 1877 msg . keyda . keyda_v = key -> da ; 1878 msg . keyda . keyda_n = key -> size ; 1879 msg . dadn = da -> dn ; 1880 msg . dadoff = da -> doff ; 1881 msg . daun = da -> un ; 1882 msg . daags = da -> ags ; 1883 msg . dada . dada_v = da ->data; 1884 msg . dada . dada_n = da -> size ; 1885 msg . ags = ( u_t )flags; 1887 yp = `__db_db_put_4006 (& msg , ); 1888 i( yp = NULL ) { 1889 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1890 t = DB_NOSERVER ; 1891 out ; 1893 t = `__db_db_put_t ( dbp , tx , key , da , ags , yp ); 1894 out : 1895 i( yp ! NULL ) 1896 `xdr_ (( xdroc_t ) xdr___db_put_y , (*) yp ); 1897 ( t ); 1898 } } 1905 $__db_db_move ( dbp , me , subdb , ags ) 1906 DB * dbp ; 1907 cڡ * me ; 1908 cڡ * subdb ; 1909 u_t32_t ags ; 1911 CLIENT * ; 1912 __db_move_msg msg ; 1913 __db_move_y * yp = NULL ; 1914 t ; 1915 DB_ENV * dbv ; 1917 t = 0; 1918 dbv = dbp ->dbenv; 1919 i( dbv = NULL || ! `RPC_ON (dbenv)) 1920 ( `__db_norv ( NULL )); 1922 = ( CLIENT *) dbv -> _hd ; 1924 i( dbp = NULL ) 1925 msg . dbp_id = 0; 1927 msg . dbp_id = dbp -> _id ; 1928 i( me = NULL ) 1929 msg . me = ""; 1931 msg . me = (*)name; 1932 i( subdb = NULL ) 1933 msg . subdb = ""; 1935 msg . subdb = (*)subdb; 1936 msg . ags = ( u_t )flags; 1938 yp = `__db_db_move_4006 (& msg , ); 1939 i( yp = NULL ) { 1940 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1941 t = DB_NOSERVER ; 1942 out ; 1944 t = `__db_db_move_t ( dbp , me , subdb , ags , yp ); 1945 out : 1946 i( yp ! NULL ) 1947 `xdr_ (( xdroc_t ) xdr___db_move_y , (*) yp ); 1948 ( t ); 1949 } } 1956 $__db_db_me ( dbp , me , subdb , wme , ags ) 1957 DB * dbp ; 1958 cڡ * me ; 1959 cڡ * subdb ; 1960 cڡ * wme ; 1961 u_t32_t ags ; 1963 CLIENT * ; 1964 __db_me_msg msg ; 1965 __db_me_y * yp = NULL ; 1966 t ; 1967 DB_ENV * dbv ; 1969 t = 0; 1970 dbv = dbp ->dbenv; 1971 i( dbv = NULL || ! `RPC_ON (dbenv)) 1972 ( `__db_norv ( NULL )); 1974 = ( CLIENT *) dbv -> _hd ; 1976 i( dbp = NULL ) 1977 msg . dbp_id = 0; 1979 msg . dbp_id = dbp -> _id ; 1980 i( me = NULL ) 1981 msg . me = ""; 1983 msg . me = (*)name; 1984 i( subdb = NULL ) 1985 msg . subdb = ""; 1987 msg . subdb = (*)subdb; 1988 i( wme = NULL ) 1989 msg . wme = ""; 1991 msg . wme = (*)newname; 1992 msg . ags = ( u_t )flags; 1994 yp = `__db_db_me_4006 (& msg , ); 1995 i( yp = NULL ) { 1996 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 1997 t = DB_NOSERVER ; 1998 out ; 2000 t = `__db_db_me_t ( dbp , me , subdb , wme , ags , yp ); 2001 out : 2002 i( yp ! NULL ) 2003 `xdr_ (( xdroc_t ) xdr___db_me_y , (*) yp ); 2004 ( t ); 2005 } } 2011 $__db_db_t_bt_mkey ( dbp , mkey ) 2012 DB * dbp ; 2013 u_t32_t mkey ; 2015 CLIENT * ; 2016 __db_t_bt_mkey_msg msg ; 2017 __db_t_bt_mkey_y * yp = NULL ; 2018 t ; 2019 DB_ENV * dbv ; 2021 t = 0; 2022 dbv = dbp ->dbenv; 2023 i( dbv = NULL || ! `RPC_ON (dbenv)) 2024 ( `__db_norv ( NULL )); 2026 = ( CLIENT *) dbv -> _hd ; 2028 i( dbp = NULL ) 2029 msg . dbp_id = 0; 2031 msg . dbp_id = dbp -> _id ; 2032 msg . mkey = ( u_t )minkey; 2034 yp = `__db_db_t_bt_mkey_4006 (& msg , ); 2035 i( yp = NULL ) { 2036 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2037 t = DB_NOSERVER ; 2038 out ; 2040 t = yp -> us ; 2041 out : 2042 i( yp ! NULL ) 2043 `xdr_ (( xdroc_t ) xdr___db_t_bt_mkey_y , (*) yp ); 2044 ( t ); 2045 } } 2051 $__db_db_t_y ( dbp , sswd , ags ) 2052 DB * dbp ; 2053 cڡ * sswd ; 2054 u_t32_t ags ; 2056 CLIENT * ; 2057 __db_t_y_msg msg ; 2058 __db_t_y_y * yp = NULL ; 2059 t ; 2060 DB_ENV * dbv ; 2062 t = 0; 2063 dbv = dbp ->dbenv; 2064 i( dbv = NULL || ! `RPC_ON (dbenv)) 2065 ( `__db_norv ( NULL )); 2067 = ( CLIENT *) dbv -> _hd ; 2069 i( dbp = NULL ) 2070 msg . dbp_id = 0; 2072 msg . dbp_id = dbp -> _id ; 2073 i( sswd = NULL ) 2074 msg . sswd = ""; 2076 msg . sswd = (*)passwd; 2077 msg . ags = ( u_t )flags; 2079 yp = `__db_db_t_y_4006 (& msg , ); 2080 i( yp = NULL ) { 2081 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2082 t = DB_NOSERVER ; 2083 out ; 2085 t = yp -> us ; 2086 out : 2087 i( yp ! NULL ) 2088 `xdr_ (( xdroc_t ) xdr___db_t_y_y , (*) yp ); 2089 ( t ); 2090 } } 2096 $__db_db_t_ags ( dbp , ags ) 2097 DB * dbp ; 2098 u_t32_t ags ; 2100 CLIENT * ; 2101 __db_t_ags_msg msg ; 2102 __db_t_ags_y * yp = NULL ; 2103 t ; 2104 DB_ENV * dbv ; 2106 t = 0; 2107 dbv = dbp ->dbenv; 2108 i( dbv = NULL || ! `RPC_ON (dbenv)) 2109 ( `__db_norv ( NULL )); 2111 = ( CLIENT *) dbv -> _hd ; 2113 i( dbp = NULL ) 2114 msg . dbp_id = 0; 2116 msg . dbp_id = dbp -> _id ; 2117 msg . ags = ( u_t )flags; 2119 yp = `__db_db_t_ags_4006 (& msg , ); 2120 i( yp = NULL ) { 2121 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2122 t = DB_NOSERVER ; 2123 out ; 2125 t = yp -> us ; 2126 out : 2127 i( yp ! NULL ) 2128 `xdr_ (( xdroc_t ) xdr___db_t_ags_y , (*) yp ); 2129 ( t ); 2130 } } 2136 $__db_db_t_h_f ( dbp , f ) 2137 DB * dbp ; 2138 u_t32_t f ; 2140 CLIENT * ; 2141 __db_t_h_f_msg msg ; 2142 __db_t_h_f_y * yp = NULL ; 2143 t ; 2144 DB_ENV * dbv ; 2146 t = 0; 2147 dbv = dbp ->dbenv; 2148 i( dbv = NULL || ! `RPC_ON (dbenv)) 2149 ( `__db_norv ( NULL )); 2151 = ( CLIENT *) dbv -> _hd ; 2153 i( dbp = NULL ) 2154 msg . dbp_id = 0; 2156 msg . dbp_id = dbp -> _id ; 2157 msg . f = ( u_t )ffactor; 2159 yp = `__db_db_t_h_f_4006 (& msg , ); 2160 i( yp = NULL ) { 2161 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2162 t = DB_NOSERVER ; 2163 out ; 2165 t = yp -> us ; 2166 out : 2167 i( yp ! NULL ) 2168 `xdr_ (( xdroc_t ) xdr___db_t_h_f_y , (*) yp ); 2169 ( t ); 2170 } } 2176 $__db_db_t_h_m ( dbp , m ) 2177 DB * dbp ; 2178 u_t32_t m ; 2180 CLIENT * ; 2181 __db_t_h_m_msg msg ; 2182 __db_t_h_m_y * yp = NULL ; 2183 t ; 2184 DB_ENV * dbv ; 2186 t = 0; 2187 dbv = dbp ->dbenv; 2188 i( dbv = NULL || ! `RPC_ON (dbenv)) 2189 ( `__db_norv ( NULL )); 2191 = ( CLIENT *) dbv -> _hd ; 2193 i( dbp = NULL ) 2194 msg . dbp_id = 0; 2196 msg . dbp_id = dbp -> _id ; 2197 msg . m = ( u_t )nelem; 2199 yp = `__db_db_t_h_m_4006 (& msg , ); 2200 i( yp = NULL ) { 2201 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2202 t = DB_NOSERVER ; 2203 out ; 2205 t = yp -> us ; 2206 out : 2207 i( yp ! NULL ) 2208 `xdr_ (( xdroc_t ) xdr___db_t_h_m_y , (*) yp ); 2209 ( t ); 2210 } } 2216 $__db_db_t_ld ( dbp , ld ) 2217 DB * dbp ; 2218 ld ; 2220 CLIENT * ; 2221 __db_t_ld_msg msg ; 2222 __db_t_ld_y * yp = NULL ; 2223 t ; 2224 DB_ENV * dbv ; 2226 t = 0; 2227 dbv = dbp ->dbenv; 2228 i( dbv = NULL || ! `RPC_ON (dbenv)) 2229 ( `__db_norv ( NULL )); 2231 = ( CLIENT *) dbv -> _hd ; 2233 i( dbp = NULL ) 2234 msg . dbp_id = 0; 2236 msg . dbp_id = dbp -> _id ; 2237 msg . ld = ( u_t )lorder; 2239 yp = `__db_db_t_ld_4006 (& msg , ); 2240 i( yp = NULL ) { 2241 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2242 t = DB_NOSERVER ; 2243 out ; 2245 t = yp -> us ; 2246 out : 2247 i( yp ! NULL ) 2248 `xdr_ (( xdroc_t ) xdr___db_t_ld_y , (*) yp ); 2249 ( t ); 2250 } } 2256 $__db_db_t_gesize ( dbp , gesize ) 2257 DB * dbp ; 2258 u_t32_t gesize ; 2260 CLIENT * ; 2261 __db_t_gesize_msg msg ; 2262 __db_t_gesize_y * yp = NULL ; 2263 t ; 2264 DB_ENV * dbv ; 2266 t = 0; 2267 dbv = dbp ->dbenv; 2268 i( dbv = NULL || ! `RPC_ON (dbenv)) 2269 ( `__db_norv ( NULL )); 2271 = ( CLIENT *) dbv -> _hd ; 2273 i( dbp = NULL ) 2274 msg . dbp_id = 0; 2276 msg . dbp_id = dbp -> _id ; 2277 msg . gesize = ( u_t )pagesize; 2279 yp = `__db_db_t_gesize_4006 (& msg , ); 2280 i( yp = NULL ) { 2281 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2282 t = DB_NOSERVER ; 2283 out ; 2285 t = yp -> us ; 2286 out : 2287 i( yp ! NULL ) 2288 `xdr_ (( xdroc_t ) xdr___db_t_gesize_y , (*) yp ); 2289 ( t ); 2290 } } 2296 $__db_db_t_iܙy ( dbp , iܙy ) 2297 DB * dbp ; 2298 DB_CACHE_PRIORITY iܙy ; 2300 CLIENT * ; 2301 __db_t_iܙy_msg msg ; 2302 __db_t_iܙy_y * yp = NULL ; 2303 t ; 2304 DB_ENV * dbv ; 2306 t = 0; 2307 dbv = dbp ->dbenv; 2308 i( dbv = NULL || ! `RPC_ON (dbenv)) 2309 ( `__db_norv ( NULL )); 2311 = ( CLIENT *) dbv -> _hd ; 2313 i( dbp = NULL ) 2314 msg . dbp_id = 0; 2316 msg . dbp_id = dbp -> _id ; 2317 msg . iܙy = ( u_t )priority; 2319 yp = `__db_db_t_iܙy_4006 (& msg , ); 2320 i( yp = NULL ) { 2321 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2322 t = DB_NOSERVER ; 2323 out ; 2325 t = yp -> us ; 2326 out : 2327 i( yp ! NULL ) 2328 `xdr_ (( xdroc_t ) xdr___db_t_iܙy_y , (*) yp ); 2329 ( t ); 2330 } } 2336 $__db_db_t_q_exsize ( dbp , exsize ) 2337 DB * dbp ; 2338 u_t32_t exsize ; 2340 CLIENT * ; 2341 __db_t_q_exsize_msg msg ; 2342 __db_t_q_exsize_y * yp = NULL ; 2343 t ; 2344 DB_ENV * dbv ; 2346 t = 0; 2347 dbv = dbp ->dbenv; 2348 i( dbv = NULL || ! `RPC_ON (dbenv)) 2349 ( `__db_norv ( NULL )); 2351 = ( CLIENT *) dbv -> _hd ; 2353 i( dbp = NULL ) 2354 msg . dbp_id = 0; 2356 msg . dbp_id = dbp -> _id ; 2357 msg . exsize = ( u_t )extentsize; 2359 yp = `__db_db_t_q_exsize_4006 (& msg , ); 2360 i( yp = NULL ) { 2361 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2362 t = DB_NOSERVER ; 2363 out ; 2365 t = yp -> us ; 2366 out : 2367 i( yp ! NULL ) 2368 `xdr_ (( xdroc_t ) xdr___db_t_q_exsize_y , (*) yp ); 2369 ( t ); 2370 } } 2376 $__db_db_t__dim ( dbp , dim ) 2377 DB * dbp ; 2378 dim ; 2380 CLIENT * ; 2381 __db_t__dim_msg msg ; 2382 __db_t__dim_y * yp = NULL ; 2383 t ; 2384 DB_ENV * dbv ; 2386 t = 0; 2387 dbv = dbp ->dbenv; 2388 i( dbv = NULL || ! `RPC_ON (dbenv)) 2389 ( `__db_norv ( NULL )); 2391 = ( CLIENT *) dbv -> _hd ; 2393 i( dbp = NULL ) 2394 msg . dbp_id = 0; 2396 msg . dbp_id = dbp -> _id ; 2397 msg . dim = ( u_t )delim; 2399 yp = `__db_db_t__dim_4006 (& msg , ); 2400 i( yp = NULL ) { 2401 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2402 t = DB_NOSERVER ; 2403 out ; 2405 t = yp -> us ; 2406 out : 2407 i( yp ! NULL ) 2408 `xdr_ (( xdroc_t ) xdr___db_t__dim_y , (*) yp ); 2409 ( t ); 2410 } } 2416 $__db_db_t__n ( dbp , n ) 2417 DB * dbp ; 2418 u_t32_t n ; 2420 CLIENT * ; 2421 __db_t__n_msg msg ; 2422 __db_t__n_y * yp = NULL ; 2423 t ; 2424 DB_ENV * dbv ; 2426 t = 0; 2427 dbv = dbp ->dbenv; 2428 i( dbv = NULL || ! `RPC_ON (dbenv)) 2429 ( `__db_norv ( NULL )); 2431 = ( CLIENT *) dbv -> _hd ; 2433 i( dbp = NULL ) 2434 msg . dbp_id = 0; 2436 msg . dbp_id = dbp -> _id ; 2437 msg . n = ( u_t )len; 2439 yp = `__db_db_t__n_4006 (& msg , ); 2440 i( yp = NULL ) { 2441 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2442 t = DB_NOSERVER ; 2443 out ; 2445 t = yp -> us ; 2446 out : 2447 i( yp ! NULL ) 2448 `xdr_ (( xdroc_t ) xdr___db_t__n_y , (*) yp ); 2449 ( t ); 2450 } } 2456 $__db_db_t__d ( dbp , d ) 2457 DB * dbp ; 2458 d ; 2460 CLIENT * ; 2461 __db_t__d_msg msg ; 2462 __db_t__d_y * yp = NULL ; 2463 t ; 2464 DB_ENV * dbv ; 2466 t = 0; 2467 dbv = dbp ->dbenv; 2468 i( dbv = NULL || ! `RPC_ON (dbenv)) 2469 ( `__db_norv ( NULL )); 2471 = ( CLIENT *) dbv -> _hd ; 2473 i( dbp = NULL ) 2474 msg . dbp_id = 0; 2476 msg . dbp_id = dbp -> _id ; 2477 msg . d = ( u_t )pad; 2479 yp = `__db_db_t__d_4006 (& msg , ); 2480 i( yp = NULL ) { 2481 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2482 t = DB_NOSERVER ; 2483 out ; 2485 t = yp -> us ; 2486 out : 2487 i( yp ! NULL ) 2488 `xdr_ (( xdroc_t ) xdr___db_t__d_y , (*) yp ); 2489 ( t ); 2490 } } 2496 $__db_db_ ( dbp , tx , , ags ) 2497 DB * dbp ; 2498 DB_TXN * tx ; 2499 * ; 2500 u_t32_t ags ; 2502 CLIENT * ; 2503 __db__msg msg ; 2504 __db__y * yp = NULL ; 2505 t ; 2506 DB_ENV * dbv ; 2508 t = 0; 2509 dbv = dbp ->dbenv; 2510 i( dbv = NULL || ! `RPC_ON (dbenv)) 2511 ( `__db_norv ( NULL )); 2513 = ( CLIENT *) dbv -> _hd ; 2515 i( dbp = NULL ) 2516 msg . dbp_id = 0; 2518 msg . dbp_id = dbp -> _id ; 2519 i( tx = NULL ) 2520 msg . tx_id = 0; 2522 msg . tx_id = tx -> txnid ; 2523 msg . ags = ( u_t )flags; 2525 yp = `__db_db__4006 (& msg , ); 2526 i( yp = NULL ) { 2527 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2528 t = DB_NOSERVER ; 2529 out ; 2531 t = `__db_db__t ( dbp , tx , , ags , yp ); 2532 out : 2533 i( yp ! NULL ) 2534 `xdr_ (( xdroc_t ) xdr___db__y , (*) yp ); 2535 ( t ); 2536 } } 2542 $__db_db_sync ( dbp , ags ) 2543 DB * dbp ; 2544 u_t32_t ags ; 2546 CLIENT * ; 2547 __db_sync_msg msg ; 2548 __db_sync_y * yp = NULL ; 2549 t ; 2550 DB_ENV * dbv ; 2552 t = 0; 2553 dbv = dbp ->dbenv; 2554 i( dbv = NULL || ! `RPC_ON (dbenv)) 2555 ( `__db_norv ( NULL )); 2557 = ( CLIENT *) dbv -> _hd ; 2559 i( dbp = NULL ) 2560 msg . dbp_id = 0; 2562 msg . dbp_id = dbp -> _id ; 2563 msg . ags = ( u_t )flags; 2565 yp = `__db_db_sync_4006 (& msg , ); 2566 i( yp = NULL ) { 2567 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2568 t = DB_NOSERVER ; 2569 out ; 2571 t = yp -> us ; 2572 out : 2573 i( yp ! NULL ) 2574 `xdr_ (( xdroc_t ) xdr___db_sync_y , (*) yp ); 2575 ( t ); 2576 } } 2583 $__db_db_un ( dbp , tx , coup , ags ) 2584 DB * dbp ; 2585 DB_TXN * tx ; 2586 u_t32_t * coup ; 2587 u_t32_t ags ; 2589 CLIENT * ; 2590 __db_un_msg msg ; 2591 __db_un_y * yp = NULL ; 2592 t ; 2593 DB_ENV * dbv ; 2595 t = 0; 2596 dbv = dbp ->dbenv; 2597 i( dbv = NULL || ! `RPC_ON (dbenv)) 2598 ( `__db_norv ( NULL )); 2600 = ( CLIENT *) dbv -> _hd ; 2602 i( dbp = NULL ) 2603 msg . dbp_id = 0; 2605 msg . dbp_id = dbp -> _id ; 2606 i( tx = NULL ) 2607 msg . tx_id = 0; 2609 msg . tx_id = tx -> txnid ; 2610 msg . ags = ( u_t )flags; 2612 yp = `__db_db_un_4006 (& msg , ); 2613 i( yp = NULL ) { 2614 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2615 t = DB_NOSERVER ; 2616 out ; 2618 t = `__db_db_un_t ( dbp , tx , coup , ags , yp ); 2619 out : 2620 i( yp ! NULL ) 2621 `xdr_ (( xdroc_t ) xdr___db_un_y , (*) yp ); 2622 ( t ); 2623 } } 2629 $__db_dbc_o ( dbc ) 2630 DBC * dbc ; 2632 CLIENT * ; 2633 __dbc_o_msg msg ; 2634 __dbc_o_y * yp = NULL ; 2635 t ; 2636 DB_ENV * dbv ; 2638 t = 0; 2639 dbv = dbc -> dbp ->dbenv; 2640 i( dbv = NULL || ! `RPC_ON (dbenv)) 2641 ( `__db_norv ( NULL )); 2643 = ( CLIENT *) dbv -> _hd ; 2645 i( dbc = NULL ) 2646 msg . dbc_id = 0; 2648 msg . dbc_id = dbc -> _id ; 2650 yp = `__db_dbc_o_4006 (& msg , ); 2651 i( yp = NULL ) { 2652 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2653 t = DB_NOSERVER ; 2654 out ; 2656 t = `__db_dbc_o_t ( dbc , yp ); 2657 out : 2658 i( yp ! NULL ) 2659 `xdr_ (( xdroc_t ) xdr___dbc_o_y , (*) yp ); 2660 ( t ); 2661 } } 2667 $__db_dbc_cou ( dbc , coup , ags ) 2668 DBC * dbc ; 2669 db_o_t * coup ; 2670 u_t32_t ags ; 2672 CLIENT * ; 2673 __dbc_cou_msg msg ; 2674 __dbc_cou_y * yp = NULL ; 2675 t ; 2676 DB_ENV * dbv ; 2678 t = 0; 2679 dbv = dbc -> dbp ->dbenv; 2680 i( dbv = NULL || ! `RPC_ON (dbenv)) 2681 ( `__db_norv ( NULL )); 2683 = ( CLIENT *) dbv -> _hd ; 2685 i( dbc = NULL ) 2686 msg . dbc_id = 0; 2688 msg . dbc_id = dbc -> _id ; 2689 msg . ags = ( u_t )flags; 2691 yp = `__db_dbc_cou_4006 (& msg , ); 2692 i( yp = NULL ) { 2693 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2694 t = DB_NOSERVER ; 2695 out ; 2697 t = `__db_dbc_cou_t ( dbc , coup , ags , yp ); 2698 out : 2699 i( yp ! NULL ) 2700 `xdr_ (( xdroc_t ) xdr___dbc_cou_y , (*) yp ); 2701 ( t ); 2702 } } 2708 $__db_dbc_d ( dbc , ags ) 2709 DBC * dbc ; 2710 u_t32_t ags ; 2712 CLIENT * ; 2713 __dbc_d_msg msg ; 2714 __dbc_d_y * yp = NULL ; 2715 t ; 2716 DB_ENV * dbv ; 2718 t = 0; 2719 dbv = dbc -> dbp ->dbenv; 2720 i( dbv = NULL || ! `RPC_ON (dbenv)) 2721 ( `__db_norv ( NULL )); 2723 = ( CLIENT *) dbv -> _hd ; 2725 i( dbc = NULL ) 2726 msg . dbc_id = 0; 2728 msg . dbc_id = dbc -> _id ; 2729 msg . ags = ( u_t )flags; 2731 yp = `__db_dbc_d_4006 (& msg , ); 2732 i( yp = NULL ) { 2733 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2734 t = DB_NOSERVER ; 2735 out ; 2737 t = yp -> us ; 2738 out : 2739 i( yp ! NULL ) 2740 `xdr_ (( xdroc_t ) xdr___dbc_d_y , (*) yp ); 2741 ( t ); 2742 } } 2748 $__db_dbc_dup ( dbc , db , ags ) 2749 DBC * dbc ; 2750 DBC ** db ; 2751 u_t32_t ags ; 2753 CLIENT * ; 2754 __dbc_dup_msg msg ; 2755 __dbc_dup_y * yp = NULL ; 2756 t ; 2757 DB_ENV * dbv ; 2759 t = 0; 2760 dbv = dbc -> dbp ->dbenv; 2761 i( dbv = NULL || ! `RPC_ON (dbenv)) 2762 ( `__db_norv ( NULL )); 2764 = ( CLIENT *) dbv -> _hd ; 2766 i( dbc = NULL ) 2767 msg . dbc_id = 0; 2769 msg . dbc_id = dbc -> _id ; 2770 msg . ags = ( u_t )flags; 2772 yp = `__db_dbc_dup_4006 (& msg , ); 2773 i( yp = NULL ) { 2774 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2775 t = DB_NOSERVER ; 2776 out ; 2778 t = `__db_dbc_dup_t ( dbc , db , ags , yp ); 2779 out : 2780 i( yp ! NULL ) 2781 `xdr_ (( xdroc_t ) xdr___dbc_dup_y , (*) yp ); 2782 ( t ); 2783 } } 2789 $__db_dbc_g ( dbc , key , da , ags ) 2790 DBC * dbc ; 2791 DBT * key ; 2792 DBT * da ; 2793 u_t32_t ags ; 2795 CLIENT * ; 2796 __dbc_g_msg msg ; 2797 __dbc_g_y * yp = NULL ; 2798 t ; 2799 DB_ENV * dbv ; 2801 t = 0; 2802 dbv = dbc -> dbp ->dbenv; 2803 i( dbv = NULL || ! `RPC_ON (dbenv)) 2804 ( `__db_norv ( NULL )); 2806 = ( CLIENT *) dbv -> _hd ; 2808 i( dbc = NULL ) 2809 msg . dbc_id = 0; 2811 msg . dbc_id = dbc -> _id ; 2812 msg . keydn = key -> dn ; 2813 msg . keydoff = key -> doff ; 2814 msg . keyun = key -> un ; 2815 msg . keyags = key -> ags ; 2816 msg . keyda . keyda_v = key -> da ; 2817 msg . keyda . keyda_n = key -> size ; 2818 msg . dadn = da -> dn ; 2819 msg . dadoff = da -> doff ; 2820 msg . daun = da -> un ; 2821 msg . daags = da -> ags ; 2822 msg . dada . dada_v = da ->data; 2823 msg . dada . dada_n = da -> size ; 2824 msg . ags = ( u_t )flags; 2826 yp = `__db_dbc_g_4006 (& msg , ); 2827 i( yp = NULL ) { 2828 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2829 t = DB_NOSERVER ; 2830 out ; 2832 t = `__db_dbc_g_t ( dbc , key , da , ags , yp ); 2833 out : 2834 i( yp ! NULL ) 2835 `xdr_ (( xdroc_t ) xdr___dbc_g_y , (*) yp ); 2836 ( t ); 2837 } } 2843 $__db_dbc_g_iܙy ( dbc , iܙyp ) 2844 DBC * dbc ; 2845 DB_CACHE_PRIORITY * iܙyp ; 2847 CLIENT * ; 2848 __dbc_g_iܙy_msg msg ; 2849 __dbc_g_iܙy_y * yp = NULL ; 2850 t ; 2851 DB_ENV * dbv ; 2853 t = 0; 2854 dbv = dbc -> dbp ->dbenv; 2855 i( dbv = NULL || ! `RPC_ON (dbenv)) 2856 ( `__db_norv ( NULL )); 2858 = ( CLIENT *) dbv -> _hd ; 2860 i( dbc = NULL ) 2861 msg . dbc_id = 0; 2863 msg . dbc_id = dbc -> _id ; 2865 yp = `__db_dbc_g_iܙy_4006 (& msg , ); 2866 i( yp = NULL ) { 2867 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2868 t = DB_NOSERVER ; 2869 out ; 2871 t = yp -> us ; 2872 i( iܙyp ! NULL ) 2873 * iܙyp = ( DB_CACHE_PRIORITY ) yp -> iܙy ; 2874 out : 2875 i( yp ! NULL ) 2876 `xdr_ (( xdroc_t ) xdr___dbc_g_iܙy_y , (*) yp ); 2877 ( t ); 2878 } } 2884 $__db_dbc_pg ( dbc , skey , pkey , da , ags ) 2885 DBC * dbc ; 2886 DBT * skey ; 2887 DBT * pkey ; 2888 DBT * da ; 2889 u_t32_t ags ; 2891 CLIENT * ; 2892 __dbc_pg_msg msg ; 2893 __dbc_pg_y * yp = NULL ; 2894 t ; 2895 DB_ENV * dbv ; 2897 t = 0; 2898 dbv = dbc -> dbp ->dbenv; 2899 i( dbv = NULL || ! `RPC_ON (dbenv)) 2900 ( `__db_norv ( NULL )); 2902 = ( CLIENT *) dbv -> _hd ; 2904 i( dbc = NULL ) 2905 msg . dbc_id = 0; 2907 msg . dbc_id = dbc -> _id ; 2908 msg . skeydn = skey -> dn ; 2909 msg . skeydoff = skey -> doff ; 2910 msg . skeyun = skey -> un ; 2911 msg . skeyags = skey -> ags ; 2912 msg . skeyda . skeyda_v = skey -> da ; 2913 msg . skeyda . skeyda_n = skey -> size ; 2914 msg . pkeydn = pkey -> dn ; 2915 msg . pkeydoff = pkey -> doff ; 2916 msg . pkeyun = pkey -> un ; 2917 msg . pkeyags = pkey -> ags ; 2918 msg . pkeyda . pkeyda_v = pkey -> da ; 2919 msg . pkeyda . pkeyda_n = pkey -> size ; 2920 msg . dadn = da -> dn ; 2921 msg . dadoff = da -> doff ; 2922 msg . daun = da -> un ; 2923 msg . daags = da -> ags ; 2924 msg . dada . dada_v = da ->data; 2925 msg . dada . dada_n = da -> size ; 2926 msg . ags = ( u_t )flags; 2928 yp = `__db_dbc_pg_4006 (& msg , ); 2929 i( yp = NULL ) { 2930 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2931 t = DB_NOSERVER ; 2932 out ; 2934 t = `__db_dbc_pg_t ( dbc , skey , pkey , da , ags , yp ); 2935 out : 2936 i( yp ! NULL ) 2937 `xdr_ (( xdroc_t ) xdr___dbc_pg_y , (*) yp ); 2938 ( t ); 2939 } } 2945 $__db_dbc_put ( dbc , key , da , ags ) 2946 DBC * dbc ; 2947 DBT * key ; 2948 DBT * da ; 2949 u_t32_t ags ; 2951 CLIENT * ; 2952 __dbc_put_msg msg ; 2953 __dbc_put_y * yp = NULL ; 2954 t ; 2955 DB_ENV * dbv ; 2957 t = 0; 2958 dbv = dbc -> dbp ->dbenv; 2959 i( dbv = NULL || ! `RPC_ON (dbenv)) 2960 ( `__db_norv ( NULL )); 2962 = ( CLIENT *) dbv -> _hd ; 2964 i( dbc = NULL ) 2965 msg . dbc_id = 0; 2967 msg . dbc_id = dbc -> _id ; 2968 msg . keydn = key -> dn ; 2969 msg . keydoff = key -> doff ; 2970 msg . keyun = key -> un ; 2971 msg . keyags = key -> ags ; 2972 msg . keyda . keyda_v = key -> da ; 2973 msg . keyda . keyda_n = key -> size ; 2974 msg . dadn = da -> dn ; 2975 msg . dadoff = da -> doff ; 2976 msg . daun = da -> un ; 2977 msg . daags = da -> ags ; 2978 msg . dada . dada_v = da ->data; 2979 msg . dada . dada_n = da -> size ; 2980 msg . ags = ( u_t )flags; 2982 yp = `__db_dbc_put_4006 (& msg , ); 2983 i( yp = NULL ) { 2984 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 2985 t = DB_NOSERVER ; 2986 out ; 2988 t = `__db_dbc_put_t ( dbc , key , da , ags , yp ); 2989 out : 2990 i( yp ! NULL ) 2991 `xdr_ (( xdroc_t ) xdr___dbc_put_y , (*) yp ); 2992 ( t ); 2993 } } 2999 $__db_dbc_t_iܙy ( dbc , iܙy ) 3000 DBC * dbc ; 3001 DB_CACHE_PRIORITY iܙy ; 3003 CLIENT * ; 3004 __dbc_t_iܙy_msg msg ; 3005 __dbc_t_iܙy_y * yp = NULL ; 3006 t ; 3007 DB_ENV * dbv ; 3009 t = 0; 3010 dbv = dbc -> dbp ->dbenv; 3011 i( dbv = NULL || ! `RPC_ON (dbenv)) 3012 ( `__db_norv ( NULL )); 3014 = ( CLIENT *) dbv -> _hd ; 3016 i( dbc = NULL ) 3017 msg . dbc_id = 0; 3019 msg . dbc_id = dbc -> _id ; 3020 msg . iܙy = ( u_t )priority; 3022 yp = `__db_dbc_t_iܙy_4006 (& msg , ); 3023 i( yp = NULL ) { 3024 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 3025 t = DB_NOSERVER ; 3026 out ; 3028 t = yp -> us ; 3029 out : 3030 i( yp ! NULL ) 3031 `xdr_ (( xdroc_t ) xdr___dbc_t_iܙy_y , (*) yp ); 3032 ( t ); 3033 } } 3039 $__db_txn_abt ( tx ) 3040 DB_TXN * tx ; 3042 CLIENT * ; 3043 __txn_abt_msg msg ; 3044 __txn_abt_y * yp = NULL ; 3045 t ; 3046 DB_ENV * dbv ; 3048 t = 0; 3049 dbv = tx -> mg ->dbenv; 3050 i( dbv = NULL || ! `RPC_ON (dbenv)) 3051 ( `__db_norv ( NULL )); 3053 = ( CLIENT *) dbv -> _hd ; 3055 i( tx = NULL ) 3056 msg . tx_id = 0; 3058 msg . tx_id = tx -> txnid ; 3060 yp = `__db_txn_abt_4006 (& msg , ); 3061 i( yp = NULL ) { 3062 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 3063 t = DB_NOSERVER ; 3064 out ; 3066 t = `__db_txn_abt_t ( tx , yp ); 3067 out : 3068 i( yp ! NULL ) 3069 `xdr_ (( xdroc_t ) xdr___txn_abt_y , (*) yp ); 3070 ( t ); 3071 } } 3077 $__db_txn_comm ( tx , ags ) 3078 DB_TXN * tx ; 3079 u_t32_t ags ; 3081 CLIENT * ; 3082 __txn_comm_msg msg ; 3083 __txn_comm_y * yp = NULL ; 3084 t ; 3085 DB_ENV * dbv ; 3087 t = 0; 3088 dbv = tx -> mg ->dbenv; 3089 i( dbv = NULL || ! `RPC_ON (dbenv)) 3090 ( `__db_norv ( NULL )); 3092 = ( CLIENT *) dbv -> _hd ; 3094 i( tx = NULL ) 3095 msg . tx_id = 0; 3097 msg . tx_id = tx -> txnid ; 3098 msg . ags = ( u_t )flags; 3100 yp = `__db_txn_comm_4006 (& msg , ); 3101 i( yp = NULL ) { 3102 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 3103 t = DB_NOSERVER ; 3104 out ; 3106 t = `__db_txn_comm_t ( tx , ags , yp ); 3107 out : 3108 i( yp ! NULL ) 3109 `xdr_ (( xdroc_t ) xdr___txn_comm_y , (*) yp ); 3110 ( t ); 3111 } } 3117 $__db_txn_disrd ( tx , ags ) 3118 DB_TXN * tx ; 3119 u_t32_t ags ; 3121 CLIENT * ; 3122 __txn_disrd_msg msg ; 3123 __txn_disrd_y * yp = NULL ; 3124 t ; 3125 DB_ENV * dbv ; 3127 t = 0; 3128 dbv = tx -> mg ->dbenv; 3129 i( dbv = NULL || ! `RPC_ON (dbenv)) 3130 ( `__db_norv ( NULL )); 3132 = ( CLIENT *) dbv -> _hd ; 3134 i( tx = NULL ) 3135 msg . tx_id = 0; 3137 msg . tx_id = tx -> txnid ; 3138 msg . ags = ( u_t )flags; 3140 yp = `__db_txn_disrd_4006 (& msg , ); 3141 i( yp = NULL ) { 3142 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 3143 t = DB_NOSERVER ; 3144 out ; 3146 t = `__db_txn_disrd_t ( tx , ags , yp ); 3147 out : 3148 i( yp ! NULL ) 3149 `xdr_ (( xdroc_t ) xdr___txn_disrd_y , (*) yp ); 3150 ( t ); 3151 } } 3157 $__db_txn_e ( tx , gid ) 3158 DB_TXN * tx ; 3159 u_t8_t * gid ; 3161 CLIENT * ; 3162 __txn_e_msg msg ; 3163 __txn_e_y * yp = NULL ; 3164 t ; 3165 DB_ENV * dbv ; 3167 t = 0; 3168 dbv = tx -> mg ->dbenv; 3169 i( dbv = NULL || ! `RPC_ON (dbenv)) 3170 ( `__db_norv ( NULL )); 3172 = ( CLIENT *) dbv -> _hd ; 3174 i( tx = NULL ) 3175 msg . tx_id = 0; 3177 msg . tx_id = tx -> txnid ; 3178 `memy ( msg . gid , gid, 128); 3180 yp = `__db_txn_e_4006 (& msg , ); 3181 i( yp = NULL ) { 3182 `__db_rx ( dbv , `_r ( , "Berkeley DB")); 3183 t = DB_NOSERVER ; 3184 out ; 3186 t = yp -> us ; 3187 out : 3188 i( yp ! NULL ) 3189 `xdr_ (( xdroc_t ) xdr___txn_e_y , (*) yp ); 3190 ( t ); 3191 } } 3200 $__db_dbp_ ( dbp ) 3201 DB * dbp ; 3203 dbp -> assoc = __db_db_assoc ; 3204 dbp -> o = __db_db_o ; 3205 dbp -> com = 3206 ((*)( DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)) 3207 __db_dbp_g ; 3208 dbp -> curs = __db_db_curs ; 3209 dbp -> d = __db_db_d ; 3210 dbp -> fd = 3211 ((*)( DB *, *)) 3212 __db_dbp_g ; 3213 dbp -> g = __db_db_g ; 3214 dbp -> g_bt_mkey = __db_db_g_bt_mkey ; 3215 dbp -> g_chesize = 3216 ((*)( DB *, u_t32_t *, u_int32_t *, *)) 3217 __db_dbp_g ; 3218 dbp -> g_dbme = __db_db_g_dbme ; 3219 dbp -> g_y_ags = __db_db_g_y_ags ; 3220 dbp -> g_ags = __db_db_g_ags ; 3221 dbp -> g_h_f = __db_db_g_h_f ; 3222 dbp -> g_h_m = __db_db_g_h_m ; 3223 dbp -> g_ld = __db_db_g_ld ; 3224 dbp -> g_mpf = 3225 ( DB_MPOOLFILE * (*)( DB *)) 3226 __db_dbp_g ; 3227 dbp -> g_ݒ_ags = __db_db_g_ݒ_ags ; 3228 dbp -> g_gesize = __db_db_g_gesize ; 3229 dbp -> g_iܙy = __db_db_g_iܙy ; 3230 dbp -> g_q_exsize = __db_db_g_q_exsize ; 3231 dbp -> g__dim = __db_db_g__dim ; 3232 dbp -> g__n = __db_db_g__n ; 3233 dbp -> g__d = __db_db_g__d ; 3234 dbp -> g__sour = 3235 ((*)( DB *, const **)) 3236 __db_dbp_g ; 3237 dbp -> jo = __db_db_jo ; 3238 dbp -> key_nge = __db_db_key_nge ; 3239 dbp -> ݒ = __db_db_ݒ ; 3240 dbp -> pg = __db_db_pg ; 3241 dbp -> put = __db_db_put ; 3242 dbp -> move = __db_db_move ; 3243 dbp -> me = __db_db_me ; 3244 dbp -> t_loc = 3245 ((*)( DB *, *(*)( size_t ), *(*)(*, size_t), (*)(*))) 3246 __db_dbp_g ; 3247 dbp -> t_nd_o = 3248 ((*)( DB *, (*)(DB *, DBT *, db_o_t ))) 3249 __db_dbp_g ; 3250 dbp -> t_bt_com = 3251 ((*)( DB *, (*)(DB *, cڡ DBT *, const DBT *))) 3252 __db_dbp_g ; 3253 dbp -> t_bt_mkey = __db_db_t_bt_mkey ; 3254 dbp -> t_bt_efix = 3255 ((*)( DB *, `size_t (*)(DB *, cڡ DBT *, const DBT *))) 3256 __db_dbp_g ; 3257 dbp -> t_chesize = 3258 ((*)( DB *, u_t32_t , u_int32_t, )) 3259 __db_dbp_g ; 3260 dbp -> t_dup_com = 3261 ((*)( DB *, (*)(DB *, cڡ DBT *, const DBT *))) 3262 __db_dbp_g ; 3263 dbp -> t_y = __db_db_t_y ; 3264 dbp -> t_edback = 3265 ((*)( DB *, (*)(DB *, , ))) 3266 __db_dbp_g ; 3267 dbp -> t_ags = __db_db_t_ags ; 3268 dbp -> t_h_com = 3269 ((*)( DB *, (*)(DB *, cڡ DBT *, const DBT *))) 3270 __db_dbp_g ; 3271 dbp -> t_h_f = __db_db_t_h_f ; 3272 dbp -> t_h_hash = 3273 ((*)( DB *, `u_t32_t (*)(DB *, cڡ *, u_t32_t ))) 3274 __db_dbp_g ; 3275 dbp -> t_h_m = __db_db_t_h_m ; 3276 dbp -> t_ld = __db_db_t_ld ; 3277 dbp -> t_gesize = __db_db_t_gesize ; 3278 dbp -> t_nic = 3279 ((*)( DB *, (*)( DB_ENV *, ))) 3280 __db_dbp_g ; 3281 dbp -> t_iܙy = __db_db_t_iܙy ; 3282 dbp -> t_q_exsize = __db_db_t_q_exsize ; 3283 dbp -> t__dim = __db_db_t__dim ; 3284 dbp -> t__n = __db_db_t__n ; 3285 dbp -> t__d = __db_db_t__d ; 3286 dbp -> t__sour = 3287 ((*)( DB *, const *)) 3288 __db_dbp_g ; 3289 dbp -> = __db_db_ ; 3290 dbp -> _t = 3291 ((*)( DB *, u_t32_t )) 3292 __db_dbp_g ; 3293 dbp -> sync = __db_db_sync ; 3294 dbp -> un = __db_db_un ; 3295 dbp -> upgde = 3296 ((*)( DB *, cڡ *, u_t32_t )) 3297 __db_dbp_g ; 3298 dbp -> vify = 3299 ((*)( DB *, cڡ *, cڡ *, FILE *, u_t32_t )) 3300 __db_dbp_g ; 3302 } } 3311 $__db_dbc_ ( dbc ) 3312 DBC * dbc ; 3314 dbc -> o = dbc-> c_o = __db_dbc_o ; 3315 dbc -> cou = dbc-> c_cou = __db_dbc_cou ; 3316 dbc -> d = dbc-> c_d = __db_dbc_d ; 3317 dbc -> dup = dbc-> c_dup = __db_dbc_dup ; 3318 dbc -> g = dbc-> c_g = __db_dbc_g ; 3319 dbc -> g_iܙy = __db_dbc_g_iܙy ; 3320 dbc -> pg = dbc-> c_pg = __db_dbc_pg ; 3321 dbc -> put = dbc-> c_put = __db_dbc_put ; 3322 dbc -> t_iܙy = __db_dbc_t_iܙy ; 3324 } } 3333 $__db_dbv_ ( dbv ) 3334 DB_ENV * dbv ; 3336 dbv -> cdsgroup_beg = __db_v_cdsgroup_beg ; 3337 dbv -> o = __db_v_o ; 3338 dbv -> dbmove = __db_v_dbmove ; 3339 dbv -> dbme = __db_v_dbme ; 3340 dbv -> chk = 3341 ((*)( DB_ENV *, u_t32_t )) 3342 __db_dbv_g ; 3343 dbv -> feid_t = 3344 ((*)( DB_ENV *, cڡ *, u_t32_t )) 3345 __db_dbv_g ; 3346 dbv -> g_chesize = __db_v_g_chesize ; 3347 dbv -> g_che_max = 3348 ((*)( DB_ENV *, u_t32_t *, u_int32_t *)) 3349 __db_dbv_g ; 3350 dbv -> g_da_ds = 3351 ((*)( DB_ENV *, const ***)) 3352 __db_dbv_g ; 3353 dbv -> g_y_ags = __db_v_g_y_ags ; 3354 dbv -> g_ags = __db_v_g_ags ; 3355 dbv -> g_home = __db_v_g_home ; 3356 dbv -> g_lg_bsize = 3357 ((*)( DB_ENV *, u_t32_t *)) 3358 __db_dbv_g ; 3359 dbv -> g_lg_d = 3360 ((*)( DB_ENV *, const **)) 3361 __db_dbv_g ; 3362 dbv -> g_lg_femode = 3363 ((*)( DB_ENV *, *)) 3364 __db_dbv_g ; 3365 dbv -> g_lg_max = 3366 ((*)( DB_ENV *, u_t32_t *)) 3367 __db_dbv_g ; 3368 dbv -> g_lg_gimax = 3369 ((*)( DB_ENV *, u_t32_t *)) 3370 __db_dbv_g ; 3371 dbv -> g_lk_cis = 3372 ((*)( DB_ENV *, cڡ u_t8_t **, *)) 3373 __db_dbv_g ; 3374 dbv -> g_lk_de = 3375 ((*)( DB_ENV *, u_t32_t *)) 3376 __db_dbv_g ; 3377 dbv -> g_lk_max_locks = 3378 ((*)( DB_ENV *, u_t32_t *)) 3379 __db_dbv_g ; 3380 dbv -> g_lk_max_locks = 3381 ((*)( DB_ENV *, u_t32_t *)) 3382 __db_dbv_g ; 3383 dbv -> g_lk_max_objes = 3384 ((*)( DB_ENV *, u_t32_t *)) 3385 __db_dbv_g ; 3386 dbv -> g_mp_max_ݒfd = 3387 ((*)( DB_ENV *, *)) 3388 __db_dbv_g ; 3389 dbv -> g_mp_max_wre = 3390 ((*)( DB_ENV *, *, db_timeout_t *)) 3391 __db_dbv_g ; 3392 dbv -> g_mp_mmsize = 3393 ((*)( DB_ENV *, size_t *)) 3394 __db_dbv_g ; 3395 dbv -> g_ݒ_ags = __db_v_g_ݒ_ags ; 3396 dbv -> g_shm_key = 3397 ((*)( DB_ENV *, *)) 3398 __db_dbv_g ; 3399 dbv -> g_thad_cou = 3400 ((*)( DB_ENV *, u_t32_t *)) 3401 __db_dbv_g ; 3402 dbv -> g_timeout = 3403 ((*)( DB_ENV *, db_timeout_t *, u_t32_t )) 3404 __db_dbv_g ; 3405 dbv -> g_tmp_d = 3406 ((*)( DB_ENV *, const **)) 3407 __db_dbv_g ; 3408 dbv -> g_tx_max = 3409 ((*)( DB_ENV *, u_t32_t *)) 3410 __db_dbv_g ; 3411 dbv -> g_tx_timeamp = 3412 ((*)( DB_ENV *, time_t *)) 3413 __db_dbv_g ; 3414 dbv -> g_vbo = 3415 ((*)( DB_ENV *, u_t32_t , *)) 3416 __db_dbv_g ; 3417 dbv -> lock_de = 3418 ((*)( DB_ENV *, u_t32_t , u_int32_t, *)) 3419 __db_dbv_g ; 3420 dbv -> lock_g = 3421 ((*)( DB_ENV *, u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)) 3422 __db_dbv_g ; 3423 dbv -> lock_id = 3424 ((*)( DB_ENV *, u_t32_t *)) 3425 __db_dbv_g ; 3426 dbv -> lock_id_ = 3427 ((*)( DB_ENV *, u_t32_t )) 3428 __db_dbv_g ; 3429 dbv -> lock_put = 3430 ((*)( DB_ENV *, DB_LOCK *)) 3431 __db_dbv_g ; 3432 dbv -> lock_ = 3433 ((*)( DB_ENV *, DB_LOCK_STAT **, u_t32_t )) 3434 __db_dbv_g ; 3435 dbv -> lock__t = 3436 ((*)( DB_ENV *, u_t32_t )) 3437 __db_dbv_g ; 3438 dbv -> lock_vec = 3439 ((*)( DB_ENV *, u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)) 3440 __db_dbv_g ; 3441 dbv -> log_chive = 3442 ((*)( DB_ENV *, ***, u_t32_t )) 3443 __db_dbv_g ; 3444 dbv -> log_curs = 3445 ((*)( DB_ENV *, DB_LOGC **, u_t32_t )) 3446 __db_dbv_g ; 3447 dbv -> log_fe = 3448 ((*)( DB_ENV *, cڡ DB_LSN *, *, size_t )) 3449 __db_dbv_g ; 3450 dbv -> log_ush = 3451 ((*)( DB_ENV *, cڡ DB_LSN *)) 3452 __db_dbv_g ; 3453 dbv -> log_tf = 3454 ((*)( DB_ENV *, DB_TXN *, const *, ...)) 3455 __db_dbv_g ; 3456 dbv -> log_put = 3457 ((*)( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )) 3458 __db_dbv_g ; 3459 dbv -> log_ = 3460 ((*)( DB_ENV *, DB_LOG_STAT **, u_t32_t )) 3461 __db_dbv_g ; 3462 dbv -> log__t = 3463 ((*)( DB_ENV *, u_t32_t )) 3464 __db_dbv_g ; 3465 dbv -> l_t = 3466 ((*)( DB_ENV *, cڡ *, u_t32_t )) 3467 __db_dbv_g ; 3468 dbv -> memp_f = 3469 ((*)( DB_ENV *, DB_MPOOLFILE **, u_t32_t )) 3470 __db_dbv_g ; 3471 dbv -> memp_gi = 3472 ((*)( DB_ENV *, , (*)(DB_ENV *, db_pgno_t , *, DBT *), (*)(DB_ENV *, db_pgno_t, *, DBT *))) 3473 __db_dbv_g ; 3474 dbv -> memp_ = 3475 ((*)( DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )) 3476 __db_dbv_g ; 3477 dbv -> memp__t = 3478 ((*)( DB_ENV *, u_t32_t )) 3479 __db_dbv_g ; 3480 dbv -> memp_sync = 3481 ((*)( DB_ENV *, DB_LSN *)) 3482 __db_dbv_g ; 3483 dbv -> memp_ick = 3484 ((*)( DB_ENV *, , *)) 3485 __db_dbv_g ; 3486 dbv -> mux_loc = 3487 ((*)( DB_ENV *, u_t32_t , u_int32_t *)) 3488 __db_dbv_g ; 3489 dbv -> mux_ = 3490 ((*)( DB_ENV *, u_t32_t )) 3491 __db_dbv_g ; 3492 dbv -> mux_g_ign = 3493 ((*)( DB_ENV *, u_t32_t *)) 3494 __db_dbv_g ; 3495 dbv -> mux_g_emt = 3496 ((*)( DB_ENV *, u_t32_t *)) 3497 __db_dbv_g ; 3498 dbv -> mux_g_max = 3499 ((*)( DB_ENV *, u_t32_t *)) 3500 __db_dbv_g ; 3501 dbv -> mux_g_s_s = 3502 ((*)( DB_ENV *, u_t32_t *)) 3503 __db_dbv_g ; 3504 dbv -> mux_lock = 3505 ((*)( DB_ENV *, u_t32_t )) 3506 __db_dbv_g ; 3507 dbv -> mux_t_ign = 3508 ((*)( DB_ENV *, u_t32_t )) 3509 __db_dbv_g ; 3510 dbv -> mux_t_emt = 3511 ((*)( DB_ENV *, u_t32_t )) 3512 __db_dbv_g ; 3513 dbv -> mux_t_max = 3514 ((*)( DB_ENV *, u_t32_t )) 3515 __db_dbv_g ; 3516 dbv -> mux_t_s_s = 3517 ((*)( DB_ENV *, u_t32_t )) 3518 __db_dbv_g ; 3519 dbv -> mux_ = 3520 ((*)( DB_ENV *, DB_MUTEX_STAT **, u_t32_t )) 3521 __db_dbv_g ; 3522 dbv -> mux__t = 3523 ((*)( DB_ENV *, u_t32_t )) 3524 __db_dbv_g ; 3525 dbv -> mux_uock = 3526 ((*)( DB_ENV *, u_t32_t )) 3527 __db_dbv_g ; 3528 dbv -> ݒ = __db_v_ݒ ; 3529 dbv -> move = __db_v_move ; 3530 dbv -> p_e = 3531 ((*)( DB_ENV *, , , u_t32_t )) 3532 __db_dbv_g ; 3533 dbv -> p_ush = 3534 ((*)( DB_ENV *)) 3535 __db_dbv_g ; 3536 dbv -> p_g_cfig = 3537 ((*)( DB_ENV *, u_t32_t , *)) 3538 __db_dbv_g ; 3539 dbv -> p_g_lim = 3540 ((*)( DB_ENV *, u_t32_t *, u_int32_t *)) 3541 __db_dbv_g ; 3542 dbv -> p_g_nses = 3543 ((*)( DB_ENV *, *)) 3544 __db_dbv_g ; 3545 dbv -> p_g_iܙy = 3546 ((*)( DB_ENV *, *)) 3547 __db_dbv_g ; 3548 dbv -> p_g_timeout = 3549 ((*)( DB_ENV *, , db_timeout_t *)) 3550 __db_dbv_g ; 3551 dbv -> p_oss_mesge = 3552 ((*)( DB_ENV *, DBT *, DBT *, , DB_LSN *)) 3553 __db_dbv_g ; 3554 dbv -> p_t_cfig = 3555 ((*)( DB_ENV *, u_t32_t , )) 3556 __db_dbv_g ; 3557 dbv -> p_t_a = 3558 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3559 __db_dbv_g ; 3560 dbv -> p_t_lim = 3561 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3562 __db_dbv_g ; 3563 dbv -> p_t_nses = 3564 ((*)( DB_ENV *, )) 3565 __db_dbv_g ; 3566 dbv -> p_t_iܙy = 3567 ((*)( DB_ENV *, )) 3568 __db_dbv_g ; 3569 dbv -> p_t_timeout = 3570 ((*)( DB_ENV *, , db_timeout_t )) 3571 __db_dbv_g ; 3572 dbv -> p_t_t = 3573 ((*)( DB_ENV *, , (*)(DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t ))) 3574 __db_dbv_g ; 3575 dbv -> p_t = 3576 ((*)( DB_ENV *, DBT *, u_t32_t )) 3577 __db_dbv_g ; 3578 dbv -> p_ = 3579 ((*)( DB_ENV *, DB_REP_STAT **, u_t32_t )) 3580 __db_dbv_g ; 3581 dbv -> p__t = 3582 ((*)( DB_ENV *, u_t32_t )) 3583 __db_dbv_g ; 3584 dbv -> p_sync = 3585 ((*)( DB_ENV *, u_t32_t )) 3586 __db_dbv_g ; 3587 dbv -> pmgr_add_me_se = 3588 ((*)( DB_ENV *, cڡ *, u_t , *, u_t32_t )) 3589 __db_dbv_g ; 3590 dbv -> pmgr_g_ack_picy = 3591 ((*)( DB_ENV *, *)) 3592 __db_dbv_g ; 3593 dbv -> pmgr_t_ack_picy = 3594 ((*)( DB_ENV *, )) 3595 __db_dbv_g ; 3596 dbv -> pmgr_t_lol_se = 3597 ((*)( DB_ENV *, cڡ *, u_t , u_t32_t )) 3598 __db_dbv_g ; 3599 dbv -> pmgr_se_li = 3600 ((*)( DB_ENV *, u_t *, DB_REPMGR_SITE **)) 3601 __db_dbv_g ; 3602 dbv -> pmgr_t = 3603 ((*)( DB_ENV *, , u_t32_t )) 3604 __db_dbv_g ; 3605 dbv -> pmgr_ = 3606 ((*)( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )) 3607 __db_dbv_g ; 3608 dbv -> pmgr__t = 3609 ((*)( DB_ENV *, u_t32_t )) 3610 __db_dbv_g ; 3611 dbv -> t_loc = 3612 ((*)( DB_ENV *, *(*)( size_t ), *(*)(*, size_t), (*)(*))) 3613 __db_dbv_g ; 3614 dbv -> t_p_dich = 3615 ((*)( DB_ENV *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs ))) 3616 __db_dbv_g ; 3617 dbv -> t_chesize = __db_v_t_chesize ; 3618 dbv -> t_che_max = 3619 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3620 __db_dbv_g ; 3621 dbv -> t_da_d = 3622 ((*)( DB_ENV *, const *)) 3623 __db_dbv_g ; 3624 dbv -> t_y = __db_v_t_y ; 3625 dbv -> t_evt_nify = 3626 ((*)( DB_ENV *, (*)(DB_ENV *, u_t32_t , *))) 3627 __db_dbv_g ; 3628 dbv -> t_edback = 3629 ((*)( DB_ENV *, (*)(DB_ENV *, , ))) 3630 __db_dbv_g ; 3631 dbv -> t_ags = __db_v_t_ags ; 3632 dbv -> t_rmed_d = 3633 ((*)( DB_ENV *, , u_t32_t )) 3634 __db_dbv_g ; 3635 dbv -> t_ilive = 3636 ((*)( DB_ENV *, (*)(DB_ENV *, pid_t , db_thadid_t , u_t32_t ))) 3637 __db_dbv_g ; 3638 dbv -> t_lg_bsize = 3639 ((*)( DB_ENV *, u_t32_t )) 3640 __db_dbv_g ; 3641 dbv -> t_lg_d = 3642 ((*)( DB_ENV *, const *)) 3643 __db_dbv_g ; 3644 dbv -> t_lg_femode = 3645 ((*)( DB_ENV *, )) 3646 __db_dbv_g ; 3647 dbv -> t_lg_max = 3648 ((*)( DB_ENV *, u_t32_t )) 3649 __db_dbv_g ; 3650 dbv -> t_lg_gimax = 3651 ((*)( DB_ENV *, u_t32_t )) 3652 __db_dbv_g ; 3653 dbv -> t_lk_cis = 3654 ((*)( DB_ENV *, u_t8_t *, )) 3655 __db_dbv_g ; 3656 dbv -> t_lk_de = 3657 ((*)( DB_ENV *, u_t32_t )) 3658 __db_dbv_g ; 3659 dbv -> t_lk_max_locks = 3660 ((*)( DB_ENV *, u_t32_t )) 3661 __db_dbv_g ; 3662 dbv -> t_lk_max_locks = 3663 ((*)( DB_ENV *, u_t32_t )) 3664 __db_dbv_g ; 3665 dbv -> t_lk_max_objes = 3666 ((*)( DB_ENV *, u_t32_t )) 3667 __db_dbv_g ; 3668 dbv -> t_mp_max_ݒfd = 3669 ((*)( DB_ENV *, )) 3670 __db_dbv_g ; 3671 dbv -> t_mp_max_wre = 3672 ((*)( DB_ENV *, , db_timeout_t )) 3673 __db_dbv_g ; 3674 dbv -> t_mp_mmsize = 3675 ((*)( DB_ENV *, size_t )) 3676 __db_dbv_g ; 3677 dbv -> t_nic = 3678 ((*)( DB_ENV *, (*)(DB_ENV *, ))) 3679 __db_dbv_g ; 3680 dbv -> t_p_que = 3681 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3682 __db_dbv_g ; 3683 dbv -> t_c_rv = __db_v_t_c_rv ; 3684 dbv -> t_shm_key = 3685 ((*)( DB_ENV *, )) 3686 __db_dbv_g ; 3687 dbv -> t_thad_cou = 3688 ((*)( DB_ENV *, u_t32_t )) 3689 __db_dbv_g ; 3690 dbv -> t_thad_id = 3691 ((*)( DB_ENV *, (*)(DB_ENV *, pid_t *, db_thadid_t *))) 3692 __db_dbv_g ; 3693 dbv -> t_thad_id_rg = 3694 ((*)( DB_ENV *, *(*)(DB_ENV *, pid_t , db_thadid_t , *))) 3695 __db_dbv_g ; 3696 dbv -> t_timeout = 3697 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3698 __db_dbv_g ; 3699 dbv -> t_tmp_d = 3700 ((*)( DB_ENV *, const *)) 3701 __db_dbv_g ; 3702 dbv -> t_tx_max = 3703 ((*)( DB_ENV *, u_t32_t )) 3704 __db_dbv_g ; 3705 dbv -> t_tx_timeamp = 3706 ((*)( DB_ENV *, time_t *)) 3707 __db_dbv_g ; 3708 dbv -> t_vbo = 3709 ((*)( DB_ENV *, u_t32_t , )) 3710 __db_dbv_g ; 3711 dbv -> _t = 3712 ((*)( DB_ENV *, u_t32_t )) 3713 __db_dbv_g ; 3714 dbv -> txn_beg = __db_v_txn_beg ; 3715 dbv -> txn_checkpot = 3716 ((*)( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)) 3717 __db_dbv_g ; 3718 dbv -> txn_cov = __db_v_txn_cov ; 3719 dbv -> txn_ = 3720 ((*)( DB_ENV *, DB_TXN_STAT **, u_t32_t )) 3721 __db_dbv_g ; 3722 dbv -> txn__t = 3723 ((*)( DB_ENV *, u_t32_t )) 3724 __db_dbv_g ; 3726 } } 3735 $__db_txn_ ( txn ) 3736 DB_TXN * txn ; 3738 txn -> abt = __db_txn_abt ; 3739 txn -> comm = __db_txn_comm ; 3740 txn -> disrd = __db_txn_disrd ; 3741 txn -> g_me = 3742 ((*)( DB_TXN *, const **)) 3743 __db_txn_g ; 3744 txn -> e = __db_txn_e ; 3745 txn -> t_me = 3746 ((*)( DB_TXN *, const *)) 3747 __db_txn_g ; 3749 } } @../rpc_client/gen_client_ret.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/txn.h " 16 #ifde HAVE_SYSTEM_INCLUDE_FILES 17 ~<c/c.h > 19 ~"db_rv.h " 20 ~"dbc_auto/c__ext.h " 22 #FREE_IF_CHANGED ( db , ig ) do { \ 23 i(( db )-> da ! NULL && (db)->d! ig ) { \ 24 `__os_ ( dbv , ( db )-> da ); \ 25 ( db )-> da = NULL ; \ 27 } 0) ) 34 $__db_v__t ( dbv , timeout , yp ) 35 DB_ENV * dbv ; 36 timeout ; 37 __v__y * yp ; 40 `COMPQUIET ( timeout , 0); 42 i( yp -> us != 0) 43 ( yp -> us ); 44 dbv -> _id = yp -> v_id ; 45 ( yp -> us ); 46 } } 53 $__db_v_ݒ_t ( dbv , home , ags , mode , yp ) 54 DB_ENV * dbv ; 55 cڡ * home ; 56 u_t32_t ags ; 57 mode ; 58 __v_ݒ_y * yp ; 60 DB_TXNMGR * tmg ; 61 t ; 63 `COMPQUIET ( home , NULL ); 64 `COMPQUIET ( mode , 0); 69 i( yp -> us != 0) 70 ( yp -> us ); 72 dbv -> _id = yp -> v_id ; 77 i( `LF_ISSET ( DB_INIT_TXN )) { 78 i(( t = `__os_oc ( dbv , 79 1, ( DB_TXNMGR ), & tmg )) != 0) 80 ( t ); 81 `TAILQ_INIT (& tmg -> txn_cha ); 82 tmg -> dbv = dbenv; 83 dbv -> tx_hd = tmg ; 86 ( yp -> us ); 87 } } 94 $__db_v_move_t ( dbv , home , ags , yp ) 95 DB_ENV * dbv ; 96 cڡ * home ; 97 u_t32_t ags ; 98 __v_move_y * yp ; 100 t ; 102 `COMPQUIET ( home , NULL ); 103 `COMPQUIET ( ags , 0); 105 t = `__db_esh ( dbv ); 106 `__os_ ( NULL , dbv ); 107 i( yp -> us =0 && t != 0) 108 ( t ); 110 ( yp -> us ); 111 } } 117 $__db_txn_abt_t ( tx , yp ) 118 DB_TXN * tx ; 119 __txn_abt_y * yp ; 121 `__db_txn_d ( tx ); 122 ( yp -> us ); 123 } } 130 $__db_v_txn_beg_t ( vp , , txp , ags , yp ) 131 DB_ENV * vp ; 132 DB_TXN * , ** txp ; 133 u_t32_t ags ; 134 __v_txn_beg_y * yp ; 136 DB_TXN * txn ; 137 t ; 139 `COMPQUIET ( ags , 0); 141 i( yp -> us != 0) 142 ( yp -> us ); 144 i(( t = `__os_oc ( vp , 1, ( DB_TXN ), & txn )) != 0) 145 ( t ); 152 `__db_txn_tup ( vp , txn , , ( u_t32_t ) yp -> txnid_id ); 153 * txp = txn ; 154 ( yp -> us ); 155 } } 162 $__db_v_cdsgroup_beg_t ( vp , txp , yp ) 163 DB_ENV * vp ; 164 DB_TXN ** txp ; 165 __v_cdsgroup_beg_y * yp ; 167 DB_TXN * txn ; 168 t ; 170 i( yp -> us != 0) 171 ( yp -> us ); 173 i(( t = `__os_oc ( vp , 1, ( DB_TXN ), & txn )) != 0) 174 ( t ); 181 `__db_txn_tup ( vp , txn , NULL , ( u_t32_t ) yp -> txnid_id ); 182 * txp = txn ; 183 ( yp -> us ); 184 } } 191 $__db_txn_comm_t ( tx , ags , yp ) 192 DB_TXN * tx ; 193 u_t32_t ags ; 194 __txn_comm_y * yp ; 196 `COMPQUIET ( ags , 0); 198 `__db_txn_d ( tx ); 199 ( yp -> us ); 200 } } 207 $__db_txn_disrd_t ( tx , ags , yp ) 208 DB_TXN * tx ; 209 u_t32_t ags ; 210 __txn_disrd_y * yp ; 212 `COMPQUIET ( ags , 0); 214 `__db_txn_d ( tx ); 215 ( yp -> us ); 216 } } 223 $__db_v_txn_cov_t ( dbv , li , cou , , ags , yp ) 224 DB_ENV * dbv ; 225 DB_PREPLIST * li ; 226 cou ; 227 * ; 228 u_t32_t ags ; 229 __v_txn_cov_y * yp ; 231 DB_PREPLIST * ; 232 DB_TXN * txǼay , * txn ; 233 u_t32_t i , * txnid ; 234 t ; 235 u_t8_t * gid ; 237 `COMPQUIET ( ags , 0); 238 `COMPQUIET ( cou , 0); 240 i( yp -> us != 0) 241 ( yp -> us ); 243 * = ( yp -> tcou ; 245 i( yp -> tcou == 0) 246 ( yp -> us ); 248 i(( t = `__os_oc ( dbv , yp -> tcou , ( DB_TXN ), 249 & txǼay )) != 0) 250 ( t ); 255 i = 0; 256 txn = txǼay ; 257 txnid = ( u_t32_t *) yp -> txn . txn_v ; 258 gid = ( u_t8_t *) yp ->gid. gid_v ; 259 = li ; 260 i ++ < yp -> tcou ) { 261 `__db_txn_tup ( dbv , txn , NULL , * txnid ); 262 -> txn =xn; 263 `memy ( -> gid , gid, DB_XIDDATASIZE ); 267 txn ++; 268 gid + DB_XIDDATASIZE ; 269 txnid ++; 270 ++; 274 } } 280 $__db_db_o_t ( dbp , ags , yp ) 281 DB * dbp ; 282 u_t32_t ags ; 283 __db_o_y * yp ; 285 t ; 287 `COMPQUIET ( ags , 0); 289 t = `__db_dbo_comm ( dbp ); 291 i( yp -> us != 0) 292 ( yp -> us ); 294 ( t ); 295 } } 302 $__db_db__t ( dbp , dbv , ags , yp ) 303 DB * dbp ; 304 DB_ENV * dbv ; 305 u_t32_t ags ; 306 __db__y * yp ; 308 `COMPQUIET ( dbv , NULL ); 309 `COMPQUIET ( ags , 0); 311 i( yp -> us != 0) 312 ( yp -> us ); 313 dbp -> _id = yp -> db_id ; 314 ( yp -> us ); 315 } } 322 $__db_db_g_t ( dbp , tx , key , da , ags , yp ) 323 DB * dbp ; 324 DB_TXN * tx ; 325 DBT * key , * da ; 326 u_t32_t ags ; 327 __db_g_y * yp ; 329 DB_ENV * dbv ; 330 t ; 331 * dkey ; 333 `COMPQUIET ( tx , NULL ); 334 `COMPQUIET ( ags , 0); 336 t = 0; 337 i( yp -> us != 0) 338 ( yp -> us ); 340 dbv = dbp ->dbenv; 342 dkey = key -> da ; 343 t = `__db_tcy ( dbv , key , yp -> keyda . keyda_v , 344 yp -> keyda . keyda_n , & dbp -> my_rkey . da , 345 & dbp -> my_rkey . un ); 346 i( t ) 347 ( t ); 348 t = `__db_tcy ( dbv , da , yp -> dada . dada_v , 349 yp -> dada . dada_n , & dbp -> my_rda . da , 350 & dbp -> my_rda . un ); 355 i( t ) 356 `FREE_IF_CHANGED ( key , dkey ); 357 ( t ); 358 } } 365 $__db_db_key_nge_t ( dbp , tx , key , nge , ags , yp ) 366 DB * dbp ; 367 DB_TXN * tx ; 368 DBT * key ; 369 DB_KEY_RANGE * nge ; 370 u_t32_t ags ; 371 __db_key_nge_y * yp ; 373 `COMPQUIET ( dbp , NULL ); 374 `COMPQUIET ( tx , NULL ); 375 `COMPQUIET ( key , NULL ); 376 `COMPQUIET ( ags , 0); 378 i( yp -> us != 0) 379 ( yp -> us ); 380 nge -> ss = yp ->less; 381 nge -> equ = yp ->equal; 382 nge -> g = yp ->greater; 383 ( yp -> us ); 384 } } 391 $__db_db_ݒ_t ( dbp , txn , me , subdb , ty , ags , mode , yp ) 392 DB * dbp ; 393 DB_TXN * txn ; 394 cڡ * me , * subdb ; 395 DBTYPE ty ; 396 u_t32_t ags ; 397 mode ; 398 __db_ݒ_y * yp ; 400 `COMPQUIET ( txn , NULL ); 401 `COMPQUIET ( me , NULL ); 402 `COMPQUIET ( subdb , NULL ); 403 `COMPQUIET ( ty , DB_UNKNOWN ); 404 `COMPQUIET ( ags , 0); 405 `COMPQUIET ( mode , 0); 407 i( yp -> us == 0) { 408 dbp -> _id = yp -> db_id ; 409 dbp -> ty = ( DBTYPE ) yp ->type; 420 () `__db_t_ld ( dbp , () yp -> ld ); 426 `F_SET ( dbp , DB_AM_OPEN_CALLED ); 428 ( yp -> us ); 429 } } 436 $__db_db_pg_t ( dbp , tx , skey , pkey , da , ags , yp ) 437 DB * dbp ; 438 DB_TXN * tx ; 439 DBT * skey ; 440 DBT * pkey ; 441 DBT * da ; 442 u_t32_t ags ; 443 __db_pg_y * yp ; 445 DB_ENV * dbv ; 446 t ; 447 * dskey , * dpkey ; 449 `COMPQUIET ( tx , NULL ); 450 `COMPQUIET ( ags , 0); 452 t = 0; 453 i( yp -> us != 0) 454 ( yp -> us ); 456 dbv = dbp ->dbenv; 458 dskey = skey -> da ; 459 t = `__db_tcy ( dbv , skey , yp -> skeyda . skeyda_v , 460 yp -> skeyda . skeyda_n , & dbp -> my_rskey . da , 461 & dbp -> my_rskey . un ); 462 i( t ) 463 ( t ); 465 dpkey = pkey -> da ; 466 i(( t = `__db_tcy ( dbv , pkey , yp -> pkeyda . pkeyda_v , 467 yp -> pkeyda . pkeyda_n , & dbp -> my_rkey . da , 468 & dbp -> my_rkey . un )) != 0) 469 r ; 470 t = `__db_tcy ( dbv , da , yp -> dada . dada_v , 471 yp -> dada . dada_n , & dbp -> my_rda . da , 472 & dbp -> my_rda . un ); 474 i( t ) { 475 r : `FREE_IF_CHANGED ( skey , dskey ); 476 `FREE_IF_CHANGED ( pkey , dpkey ); 478 ( t ); 479 } } 486 $__db_db_put_t ( dbp , tx , key , da , ags , yp ) 487 DB * dbp ; 488 DB_TXN * tx ; 489 DBT * key , * da ; 490 u_t32_t ags ; 491 __db_put_y * yp ; 493 t ; 495 `COMPQUIET ( dbp , NULL ); 496 `COMPQUIET ( tx , NULL ); 497 `COMPQUIET ( da , NULL ); 499 t = yp -> us ; 500 i( yp -> us =0 && ( ags = DB_APPEND )) 501 *( db_o_t *) key -> da = 502 *( db_o_t *) yp -> keyda . keyda_v ; 503 ( t ); 504 } } 511 $__db_db_move_t ( dbp , me , subdb , ags , yp ) 512 DB * dbp ; 513 cڡ * me , * subdb ; 514 u_t32_t ags ; 515 __db_move_y * yp ; 517 t ; 519 `COMPQUIET ( me , 0); 520 `COMPQUIET ( subdb , 0); 521 `COMPQUIET ( ags , 0); 523 t = `__db_dbo_comm ( dbp ); 525 i( yp -> us != 0) 526 ( yp -> us ); 528 ( t ); 529 } } 536 $__db_db_me_t ( dbp , me , subdb , wme , ags , yp ) 537 DB * dbp ; 538 cڡ * me , * subdb , * wme ; 539 u_t32_t ags ; 540 __db_me_y * yp ; 542 t ; 544 `COMPQUIET ( me , 0); 545 `COMPQUIET ( subdb , 0); 546 `COMPQUIET ( wme , 0); 547 `COMPQUIET ( ags , 0); 549 t = `__db_dbo_comm ( dbp ); 551 i( yp -> us != 0) 552 ( yp -> us ); 554 ( t ); 555 } } 562 $__db_db__t ( dbp , tx , , ags , yp ) 563 DB * dbp ; 564 DB_TXN * tx ; 565 * ; 566 u_t32_t ags ; 567 __db__y * yp ; 569 size_t n ; 570 u_t32_t i , * q , * p , * t ; 571 t ; 573 `COMPQUIET ( ags , 0); 574 `COMPQUIET ( tx , NULL ); 576 i( yp -> us !0 || = NULL ) 577 ( yp -> us ); 579 n = yp -> s . s_n * ( u_t32_t ); 580 i(( t = `__os_umloc ( dbp -> dbv , n , & t )) != 0) 581 ( t ); 582 i = 0, q = t , p = ( u_t32_t *) yp -> s . s_v ; 583 i < yp -> s . s_n ; i++, q ++, p ++) 584 * q = * p ; 585 *( u_t32_t **) = t ; 587 } } 594 $__db_db_un_t ( dbp , tx , coup , ags , yp ) 595 DB * dbp ; 596 DB_TXN * tx ; 597 u_t32_t * coup , ags ; 598 __db_un_y * yp ; 600 `COMPQUIET ( dbp , NULL ); 601 `COMPQUIET ( tx , NULL ); 602 `COMPQUIET ( ags , 0); 604 i( yp -> us != 0) 605 ( yp -> us ); 606 * coup = yp -> cou ; 608 ( yp -> us ); 609 } } 616 $__db_db_curs_t ( dbp , tx , db , ags , yp ) 617 DB * dbp ; 618 DB_TXN * tx ; 619 DBC ** db ; 620 u_t32_t ags ; 621 __db_curs_y * yp ; 623 `COMPQUIET ( tx , NULL ); 624 `COMPQUIET ( ags , 0); 626 i( yp -> us != 0) 627 ( yp -> us ); 629 ( `__db_c_tup ( yp -> dbcid_id , dbp , db )); 630 } } 637 $__db_db_jo_t ( dbp , curs , db , ags , yp ) 638 DB * dbp ; 639 DBC ** curs , ** db ; 640 u_t32_t ags ; 641 __db_jo_y * yp ; 643 `COMPQUIET ( curs , NULL ); 644 `COMPQUIET ( ags , 0); 646 i( yp -> us != 0) 647 ( yp -> us ); 656 ( `__db_c_tup ( yp -> dbcid_id , dbp , db )); 657 } } 663 $__db_dbc_o_t ( dbc , yp ) 664 DBC * dbc ; 665 __dbc_o_y * yp ; 667 `__db_c_esh ( dbc ); 668 ( yp -> us ); 669 } } 676 $__db_dbc_cou_t ( dbc , coup , ags , yp ) 677 DBC * dbc ; 678 db_o_t * coup ; 679 u_t32_t ags ; 680 __dbc_cou_y * yp ; 682 `COMPQUIET ( dbc , NULL ); 683 `COMPQUIET ( ags , 0); 685 i( yp -> us != 0) 686 ( yp -> us ); 687 * coup = yp -> dupcou ; 689 ( yp -> us ); 690 } } 697 $__db_dbc_dup_t ( dbc , db , ags , yp ) 698 DBC * dbc , ** db ; 699 u_t32_t ags ; 700 __dbc_dup_y * yp ; 702 `COMPQUIET ( ags , 0); 704 i( yp -> us != 0) 705 ( yp -> us ); 707 ( `__db_c_tup ( yp -> dbcid_id , dbc -> dbp , db )); 708 } } 715 $__db_dbc_g_t ( dbc , key , da , ags , yp ) 716 DBC * dbc ; 717 DBT * key , * da ; 718 u_t32_t ags ; 719 __dbc_g_y * yp ; 721 DB_ENV * dbv ; 722 t ; 723 * dkey ; 725 `COMPQUIET ( ags , 0); 727 t = 0; 728 i( yp -> us != 0) 729 ( yp -> us ); 731 dbv = dbc -> dbp ->dbenv; 732 dkey = key -> da ; 733 t = `__db_tcy ( dbv , key , yp -> keyda . keyda_v , 734 yp -> keyda . keyda_n , & dbc -> my_rkey . da , 735 & dbc -> my_rkey . un ); 736 i( t ) 737 ( t ); 738 t = `__db_tcy ( dbv , da , yp -> dada . dada_v , 739 yp -> dada . dada_n , & dbc -> my_rda . da , 740 & dbc -> my_rda . un ); 746 i( t ) 747 `FREE_IF_CHANGED ( key , dkey ); 748 ( t ); 749 } } 756 $__db_dbc_pg_t ( dbc , skey , pkey , da , ags , yp ) 757 DBC * dbc ; 758 DBT * skey ; 759 DBT * pkey ; 760 DBT * da ; 761 u_t32_t ags ; 762 __dbc_pg_y * yp ; 764 DB_ENV * dbv ; 765 t ; 766 * dskey , * dpkey ; 768 `COMPQUIET ( ags , 0); 770 t = 0; 771 i( yp -> us != 0) 772 ( yp -> us ); 774 dbv = dbc -> dbp ->dbenv; 776 dskey = skey -> da ; 777 t = `__db_tcy ( dbv , skey , yp -> skeyda . skeyda_v , 778 yp -> skeyda . skeyda_n , & dbc -> my_rskey . da , 779 & dbc -> my_rskey . un ); 780 i( t ) 781 ( t ); 783 dpkey = pkey -> da ; 784 i(( t = `__db_tcy ( dbv , pkey , yp -> pkeyda . pkeyda_v , 785 yp -> pkeyda . pkeyda_n , & dbc -> my_rkey . da , 786 & dbc -> my_rkey . un )) != 0) 787 r ; 788 t = `__db_tcy ( dbv , da , yp -> dada . dada_v , 789 yp -> dada . dada_n , & dbc -> my_rda . da , 790 & dbc -> my_rda . un ); 796 i( t ) { 797 r : `FREE_IF_CHANGED ( skey , dskey ); 798 `FREE_IF_CHANGED ( pkey , dpkey ); 800 ( t ); 801 } } 808 $__db_dbc_put_t ( dbc , key , da , ags , yp ) 809 DBC * dbc ; 810 DBT * key , * da ; 811 u_t32_t ags ; 812 __dbc_put_y * yp ; 814 `COMPQUIET ( da , NULL ); 816 i( yp -> us != 0) 817 ( yp -> us ); 819 i( yp -> us =0 && dbc -> dbp -> ty = DB_RECNO && 820 ( ags = DB_AFTER || fg= DB_BEFORE )) 821 *( db_o_t *) key -> da = 822 *( db_o_t *) yp -> keyda . keyda_v ; 823 ( yp -> us ); 824 } } @../rpc_server/c/db_server_proc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<c/c.h > 15 ~"db_rv.h " 16 ~"dbc/db_rv_t.h " 17 ~"dbc_auto/c_rv_ext.h " 24 $__v_g_chesize_oc ( dbv_id , yp ) 25 u_t dbv_id ; 26 __v_g_chesize_y * yp ; 28 DB_ENV * dbv ; 29 _y * dbv_p ; 31 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 32 dbv = ( DB_ENV *) dbv_p -> _yp ; 34 yp -> us = dbv -> `g_chesize (dbv, &yp-> gbys , 35 & yp -> bys , (*)&yp-> nche ); 36 } } 43 $__v_t_chesize_oc ( dbv_id , gbys , bys , nche , yp ) 44 u_t dbv_id ; 45 u_t32_t gbys ; 46 u_t32_t bys ; 47 u_t32_t nche ; 48 __v_t_chesize_y * yp ; 50 DB_ENV * dbv ; 51 _y * dbv_p ; 52 t ; 54 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 55 dbv = ( DB_ENV *) dbv_p -> _yp ; 57 t = dbv -> `t_chesize (dbv, gbys , bys , nche ); 59 yp -> us = t ; 61 } } 68 $__v_cdsgroup_beg_oc ( dbv_id , yp ) 69 u_t dbv_id ; 70 __v_cdsgroup_beg_y * yp ; 72 DB_ENV * dbv ; 73 DB_TXN * tx ; 74 _y * p , * dbv_p ; 75 t ; 77 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 78 dbv = ( DB_ENV *) dbv_p -> _yp ; 80 p = `w__t (& yp -> us ); 81 i( p = NULL ) 84 t = dbv -> `cdsgroup_beg (dbv, & tx ); 85 i( t == 0) { 86 p -> _tx = tx ; 87 p -> _ty = CT_TXN ; 88 p -> _ = NULL ; 89 p -> _v = dbv_p ; 90 yp -> txnid_id = p -> _id ; 91 `__dbv_imeout ( p , dbv_p -> _timeout ); 92 `__dbv_aive ( p ); 94 `__dbr_p ( p ); 96 yp -> us = t ; 98 } } 104 $__v_o_oc ( dbv_id , ags , yp ) 105 u_t dbv_id ; 106 u_t32_t ags ; 107 __v_o_y * yp ; 109 _y * dbv_p ; 111 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 112 yp -> us = `__v_o_t ( dbv_id , ags , 0); 114 } } 120 $__v__oc ( timeout , yp ) 121 u_t32_t timeout ; 122 __v__y * yp ; 124 DB_ENV * dbv ; 125 _y * p ; 126 t ; 128 p = `w__t (& yp -> us ); 129 i( p = NULL ) 131 i(( t = `db_v_ (& dbv , 0)) == 0) { 132 p -> _vp = dbv ; 133 p -> _ty = CT_ENV ; 134 p -> _ = NULL ; 135 p -> _v = ctp; 136 `__dbv_imeout ( p , timeout ); 137 `__dbv_aive ( p ); 138 yp -> v_id = p -> _id ; 140 `__dbr_p ( p ); 142 yp -> us = t ; 144 } } 151 $__v_dbmove_oc ( dbv_id , tx_id , me , subdb , ags , yp ) 152 u_t dbv_id ; 153 u_t tx_id ; 154 * me ; 155 * subdb ; 156 u_t32_t ags ; 157 __v_dbmove_y * yp ; 159 t ; 160 DB_ENV * dbv ; 161 _y * dbv_p ; 162 DB_TXN * tx ; 163 _y * tx_p ; 165 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 166 dbv = ( DB_ENV *) dbv_p -> _yp ; 168 i( tx_id != 0) { 169 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 170 tx = ( DB_TXN *) tx_p -> _yp ; 172 tx = NULL ; 174 t = dbv -> `dbmove (dbv, tx , me , subdb , ags ); 176 yp -> us = t ; 178 } } 185 $__v_dbme_oc ( dbv_id , tx_id , me , subdb , wme , ags , yp ) 186 u_t dbv_id ; 187 u_t tx_id ; 188 * me ; 189 * subdb ; 190 * wme ; 191 u_t32_t ags ; 192 __v_dbme_y * yp ; 194 t ; 195 DB_ENV * dbv ; 196 _y * dbv_p ; 197 DB_TXN * tx ; 198 _y * tx_p ; 200 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 201 dbv = ( DB_ENV *) dbv_p -> _yp ; 203 i( tx_id != 0) { 204 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 205 tx = ( DB_TXN *) tx_p -> _yp ; 207 tx = NULL ; 209 t = dbv -> `dbme (dbv, tx , me , subdb , wme , ags ); 211 yp -> us = t ; 213 } } 220 $__v_g_y_ags_oc ( dbv_id , yp ) 221 u_t dbv_id ; 222 __v_g_y_ags_y * yp ; 224 DB_ENV * dbv ; 225 _y * dbv_p ; 227 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 228 dbv = ( DB_ENV *) dbv_p -> _yp ; 230 yp -> us = dbv -> `g_y_ags (dbv, &yp-> ags ); 231 } } 238 $__v_t_y_oc ( dbv_id , sswd , ags , yp ) 239 u_t dbv_id ; 240 * sswd ; 241 u_t32_t ags ; 242 __v_t_y_y * yp ; 244 t ; 245 DB_ENV * dbv ; 246 _y * dbv_p ; 248 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 249 dbv = ( DB_ENV *) dbv_p -> _yp ; 251 t = dbv -> `t_y (dbv, sswd , ags ); 253 yp -> us = t ; 255 } } 261 $__v_g_ags_oc ( dbv_id , yp ) 262 u_t dbv_id ; 263 __v_g_ags_y * yp ; 265 DB_ENV * dbv ; 266 _y * dbv_p ; 268 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 269 dbv = ( DB_ENV *) dbv_p -> _yp ; 271 yp -> us = dbv -> `g_ags (dbv, &yp-> ags ); 272 } } 279 $__v_t_ags_oc ( dbv_id , ags , off , yp ) 280 u_t dbv_id ; 281 u_t32_t ags ; 282 u_t32_t off ; 283 __v_t_ags_y * yp ; 285 DB_ENV * dbv ; 286 _y * dbv_p ; 287 t ; 289 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 290 dbv = ( DB_ENV *) dbv_p -> _yp ; 292 t = dbv -> `t_ags (dbv, ags , off ); 293 i( off ) 294 dbv_p -> _vdp . ags = ags ; 296 dbv_p -> _vdp . offags = ags ; 298 yp -> us = t ; 300 } } 306 $__v_g_home_oc ( dbv_id , yp ) 307 u_t dbv_id ; 308 __v_g_home_y * yp ; 310 DB_ENV * dbv ; 311 _y * dbv_p ; 313 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 314 dbv = ( DB_ENV *) dbv_p -> _yp ; 316 yp -> us = dbv -> `g_home (dbenv, 317 (cڡ **)& yp -> home ); 318 } } 325 $__v_g_ݒ_ags_oc ( dbv_id , yp ) 326 u_t dbv_id ; 327 __v_g_ݒ_ags_y * yp ; 329 DB_ENV * dbv ; 330 _y * dbv_p ; 332 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 333 dbv = ( DB_ENV *) dbv_p -> _yp ; 335 yp -> us = dbv -> `g_ݒ_ags (dbv, &yp-> ags ); 336 } } 343 $__v_ݒ_oc ( dbv_id , home , ags , mode , yp ) 344 u_t dbv_id ; 345 * home ; 346 u_t32_t ags ; 347 u_t32_t mode ; 348 __v_ݒ_y * yp ; 350 DB_ENV * dbv ; 351 _y * dbv_p , * w_p ; 352 u_t32_t wags , sheags ; 353 t ; 354 home_y * fuhome ; 356 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 357 dbv = ( DB_ENV *) dbv_p -> _yp ; 358 fuhome = `g_fuhome ( home ); 359 i( fuhome = NULL ) { 360 t = DB_NOSERVER_HOME ; 361 out ; 368 i(( ags & DB_INIT_LOCK ) && 369 ( t = dbv -> `t_lk_de (dbv, DB_LOCK_DEFAULT )) != 0) 370 out ; 372 i( __dbv_vbo ) { 373 dbv -> `t_rfe (dbv, dr ); 374 dbv -> `t_fx (dbv, fuhome -> home ); 376 dbv -> `t_rfe (dbv, NULL ); 381 wags = ( ags & ~ DB_SERVER_FLAGMASK ); 382 sheags = ( wags & DB_SERVER_ENVFLAGS ); 386 yp -> v_id = dbv_id ; 387 i(( w_p = `__dbv_shnv ( dbv_p , fuhome , sheags )) 388 ! NULL ) { 392 i( __dbv_vbo ) 393 `tf ("Shgnv ID %ld\n", w_p -> _id ); 394 yp -> v_id = w_p -> _id ; 395 t = `__v_o_t ( dbv_id , 0, 0); 397 t = dbv -> `ݒ (dbv, fuhome -> home , wags , mode ); 398 dbv_p -> _vdp . home = fuhome ; 399 dbv_p -> _vdp . vags = sheags ; 401 out : yp -> us = t ; 403 } } 410 $__v_move_oc ( dbv_id , home , ags , yp ) 411 u_t dbv_id ; 412 * home ; 413 u_t32_t ags ; 414 __v_move_y * yp ; 416 DB_ENV * dbv ; 417 _y * dbv_p ; 418 t ; 419 home_y * fuhome ; 421 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 422 dbv = ( DB_ENV *) dbv_p -> _yp ; 424 fuhome = `g_fuhome ( home ); 425 i( fuhome = NULL ) { 426 yp -> us = DB_NOSERVER_HOME ; 430 t = dbv -> `move (dbv, fuhome -> home , ags ); 431 `__dbd_p ( dbv_p ); 432 yp -> us = t ; 434 } } 440 $__txn_abt_oc ( tx_id , yp ) 441 u_t tx_id ; 442 __txn_abt_y * yp ; 444 DB_TXN * tx ; 445 _y * tx_p ; 446 t ; 448 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 449 tx = ( DB_TXN *) tx_p -> _yp ; 451 t = tx -> `abt (txnp); 452 `__dbd_p ( tx_p ); 453 yp -> us = t ; 455 } } 462 $__v_txn_beg_oc ( dbv_id , _id , ags , yp ) 463 u_t dbv_id ; 464 u_t _id ; 465 u_t32_t ags ; 466 __v_txn_beg_y * yp ; 468 DB_ENV * dbv ; 469 DB_TXN * , * tx ; 470 _y * p , * dbv_p , * _p ; 471 t ; 473 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 474 dbv = ( DB_ENV *) dbv_p -> _yp ; 475 _p = NULL ; 477 p = `w__t (& yp -> us ); 478 i( p = NULL ) 481 i( _id != 0) { 482 `ACTIVATE_CTP ( _p , _id , CT_TXN ); 483 = ( DB_TXN *) _p -> _yp ; 484 p -> _aiv = _p ->ct_activep; 486 = NULL ; 492 t = dbv -> `txn_beg (dbv, , & tx , ags | DB_TXN_NOWAIT ); 493 i( t == 0) { 494 p -> _tx = tx ; 495 p -> _ty = CT_TXN ; 496 p -> _ = _p ; 497 p -> _v = dbv_p ; 498 yp -> txnid_id = p -> _id ; 499 `__dbv_imeout ( p , dbv_p -> _timeout ); 500 `__dbv_aive ( p ); 502 `__dbr_p ( p ); 504 yp -> us = t ; 506 } } 513 $__txn_comm_oc ( tx_id , ags , yp ) 514 u_t tx_id ; 515 u_t32_t ags ; 516 __txn_comm_y * yp ; 518 DB_TXN * tx ; 519 _y * tx_p ; 520 t ; 522 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 523 tx = ( DB_TXN *) tx_p -> _yp ; 525 t = tx -> `comm x, ags ); 526 `__dbd_p ( tx_p ); 528 yp -> us = t ; 530 } } 537 $__txn_disrd_oc ( tx_id , ags , yp ) 538 u_t tx_id ; 539 u_t32_t ags ; 540 __txn_disrd_y * yp ; 542 DB_TXN * tx ; 543 _y * tx_p ; 544 t ; 546 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 547 tx = ( DB_TXN *) tx_p -> _yp ; 549 t = tx -> `disrd x, ags ); 550 `__dbd_p ( tx_p ); 552 yp -> us = t ; 554 } } 561 $__txn_e_oc ( tx_id , gid , yp ) 562 u_t tx_id ; 563 u_t8_t * gid ; 564 __txn_e_y * yp ; 566 DB_TXN * tx ; 567 _y * tx_p ; 568 t ; 570 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 571 tx = ( DB_TXN *) tx_p -> _yp ; 573 t = tx -> `e x, gid ); 574 yp -> us = t ; 576 } } 583 $__v_txn_cov_oc ( dbv_id , cou , ags , yp , p ) 584 u_t dbv_id ; 585 u_t32_t cou ; 586 u_t32_t ags ; 587 __v_txn_cov_y * yp ; 588 * p ; 590 DB_ENV * dbv ; 591 DB_PREPLIST * db , * p ; 592 _y * dbv_p , * p ; 593 ri , i , tcou ; 594 u_t32_t * txnidp ; 595 t ; 596 u_t8_t * gid ; 598 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 599 dbv = ( DB_ENV *) dbv_p -> _yp ; 600 db = NULL ; 601 * p = 0; 603 i(( t = 604 `__os_mloc ( dbv , cou * ( DB_PREPLIST ), & db )) != 0) 605 out ; 606 i(( t = 607 dbv -> `txn_cov (dbv, db , cou , & tcou , ags )) != 0) 608 out ; 612 yp -> tcou =etcount; 613 i( tcou == 0) { 614 yp -> txn . txn_v = NULL ; 615 yp -> txn . txn_n = 0; 616 yp -> gid . gid_v = NULL ; 617 yp -> gid . gid_n = 0; 624 i(( t = `__os_oc ( dbv , tcou , ( u_t32_t ), 625 & yp -> txn . txn_v )) != 0) 626 out ; 627 yp -> txn . txn_n = tcou * ( u_t32_t ); 628 i(( t = `__os_oc ( dbv , tcou , DB_XIDDATASIZE , 629 & yp -> gid . gid_v )) != 0) { 630 `__os_ ( dbv , yp -> txn . txn_v ); 631 out ; 633 yp -> gid . gid_n = tcou * DB_XIDDATASIZE ; 640 i = 0; 641 p = db ; 642 gid = yp ->gid. gid_v ; 643 txnidp = yp -> txn . txn_v ; 644 i ++ < tcou ) { 645 p = `w__t (& t ); 646 i( t != 0) { 647 i --; 648 out2 ; 650 p -> _tx = p -> txn ; 651 p -> _ty = CT_TXN ; 652 p -> _ = NULL ; 653 p -> _v = dbv_p ; 654 `__dbv_imeout ( p , dbv_p -> _timeout ); 655 `__dbv_aive ( p ); 657 * txnidp = p -> _id ; 658 `memy ( gid , p ->gid, DB_XIDDATASIZE ); 660 p ++; 661 txnidp ++; 662 gid + DB_XIDDATASIZE ; 668 * p = 1; 669 out : 670 i( db ! NULL ) 671 `__os_ ( dbv , db ); 672 yp -> us = t ; 674 out2 : 679 txnidp = yp -> txn . txn_v , ri = 0; 680 ri < i ;i++, txnidp ++) { 681 p = `g_b˒t (* txnidp ); 682 `__dbr_p ( p ); 684 `__os_ ( dbv , yp -> txn . txn_v ); 685 `__os_ ( dbv , yp -> gid . gid_v ); 686 `__os_ ( dbv , db ); 687 yp -> us = t ; 689 } } 696 $__db_assoc_oc ( dbp_id , tx_id , sdbp_id , ags , yp ) 697 u_t dbp_id ; 698 u_t tx_id ; 699 u_t sdbp_id ; 700 u_t32_t ags ; 701 __db_assoc_y * yp ; 703 DB * dbp , * sdbp ; 704 DB_TXN * tx ; 705 _y * dbp_p , * sdbp_p , * tx_p ; 706 t ; 708 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 709 dbp = ( DB *) dbp_p -> _yp ; 710 `ACTIVATE_CTP ( sdbp_p , sdbp_id , CT_DB ); 711 sdbp = ( DB *) sdbp_p -> _yp ; 712 i( tx_id != 0) { 713 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 714 tx = ( DB_TXN *) tx_p -> _yp ; 716 tx = NULL ; 724 #ifde CONFIG_TEST 725 i( `LF_ISSET ( DB_RPC2ND_MASK | DB_CREATE )) 727 i( `LF_ISSET ( DB_CREATE )) 729 t = EINVAL ; 731 t = dbp -> `assoc (dbp, tx , sdbp , NULL , ags ); 733 yp -> us = t ; 735 } } 742 $__db_g_bt_mkey_oc ( dbp_id , yp ) 743 u_t dbp_id ; 744 __db_g_bt_mkey_y * yp ; 746 DB * dbp ; 747 _y * dbp_p ; 749 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 750 dbp = ( DB *) dbp_p -> _yp ; 752 yp -> us = dbp -> `g_bt_mkey (dbp, &yp-> mkey ); 753 } } 760 $__db_t_bt_mkey_oc ( dbp_id , mkey , yp ) 761 u_t dbp_id ; 762 u_t32_t mkey ; 763 __db_t_bt_mkey_y * yp ; 765 DB * dbp ; 766 _y * dbp_p ; 767 t ; 769 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 770 dbp = ( DB *) dbp_p -> _yp ; 772 t = dbp -> `t_bt_mkey (dbp, mkey ); 774 yp -> us = t ; 776 } } 782 $__db_o_oc ( dbp_id , ags , yp ) 783 u_t dbp_id ; 784 u_t32_t ags ; 785 __db_o_y * yp ; 787 _y * dbp_p ; 789 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 790 yp -> us = `__db_o_t ( dbp_id , ags ); 792 } } 798 $__db__oc ( dbv_id , ags , yp ) 799 u_t dbv_id ; 800 u_t32_t ags ; 801 __db__y * yp ; 803 DB * dbp ; 804 DB_ENV * dbv ; 805 _y * dbv_p , * dbp_p ; 806 t ; 808 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 809 dbv = ( DB_ENV *) dbv_p -> _yp ; 811 dbp_p = `w__t (& yp -> us ); 812 i( dbp_p = NULL ) 818 `DB_ASSERT ( dbv , dbv ! NULL ); 819 i(( t = `db_ (& dbp , dbv , ags )) == 0) { 820 dbp_p -> _dbp = dbp ; 821 dbp_p -> _ty = CT_DB ; 822 dbp_p -> _ = dbv_p ; 823 dbp_p -> _v = dbv_p ; 824 yp -> db_id = dbp_p -> _id ; 826 `__dbr_p ( dbp_p ); 827 yp -> us = t ; 829 } } 837 $__db_d_oc ( dbp_id , tx_id , keydn , keydoff , keyun , keyags , 838 keyda , keysize , ags , yp ) 839 u_t dbp_id ; 840 u_t tx_id ; 841 u_t32_t keydn ; 842 u_t32_t keydoff ; 843 u_t32_t keyun ; 844 u_t32_t keyags ; 845 * keyda ; 846 u_t32_t keysize ; 847 u_t32_t ags ; 848 __db_d_y * yp ; 850 DB * dbp ; 851 DBT key ; 852 DB_TXN * tx ; 853 _y * dbp_p , * tx_p ; 854 t ; 856 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 857 dbp = ( DB *) dbp_p -> _yp ; 858 i( tx_id != 0) { 859 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 860 tx = ( DB_TXN *) tx_p -> _yp ; 862 tx = NULL ; 864 `memt (& key , 0, (key)); 867 key . dn = keydn ; 868 key . un = keyun ; 869 key . doff = keydoff ; 870 key . ags = keyags ; 871 key . size = keysize ; 872 key . da = keyda ; 874 t = dbp -> `d (dbp, tx , & key , ags ); 876 yp -> us = t ; 878 } } 885 $__db_g_y_ags_oc ( dbp_id , yp ) 886 u_t dbp_id ; 887 __db_g_y_ags_y * yp ; 889 DB * dbp ; 890 _y * dbp_p ; 892 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 893 dbp = ( DB *) dbp_p -> _yp ; 895 yp -> us = dbp -> `g_y_ags (dbp, &yp-> ags ); 896 } } 903 $__db_t_y_oc ( dbp_id , sswd , ags , yp ) 904 u_t dbp_id ; 905 * sswd ; 906 u_t32_t ags ; 907 __db_t_y_y * yp ; 909 t ; 910 DB * dbp ; 911 _y * dbp_p ; 913 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 914 dbp = ( DB *) dbp_p -> _yp ; 916 t = dbp -> `t_y (dbp, sswd , ags ); 917 yp -> us = t ; 919 } } 926 $__db_g_q_exsize_oc ( dbp_id , yp ) 927 u_t dbp_id ; 928 __db_g_q_exsize_y * yp ; 930 DB * dbp ; 931 _y * dbp_p ; 933 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 934 dbp = ( DB *) dbp_p -> _yp ; 936 yp -> us = dbp -> `g_q_exsize (dbp, &yp-> exsize ); 937 } } 944 $__db_t_q_exsize_oc ( dbp_id , exsize , yp ) 945 u_t dbp_id ; 946 u_t32_t exsize ; 947 __db_t_q_exsize_y * yp ; 949 DB * dbp ; 950 _y * dbp_p ; 951 t ; 953 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 954 dbp = ( DB *) dbp_p -> _yp ; 956 t = dbp -> `t_q_exsize (dbp, exsize ); 958 yp -> us = t ; 960 } } 966 $__db_g_ags_oc ( dbp_id , yp ) 967 u_t dbp_id ; 968 __db_g_ags_y * yp ; 970 DB * dbp ; 971 _y * dbp_p ; 973 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 974 dbp = ( DB *) dbp_p -> _yp ; 976 yp -> us = dbp -> `g_ags (dbp, &yp-> ags ); 977 } } 984 $__db_t_ags_oc ( dbp_id , ags , yp ) 985 u_t dbp_id ; 986 u_t32_t ags ; 987 __db_t_ags_y * yp ; 989 DB * dbp ; 990 _y * dbp_p ; 991 t ; 993 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 994 dbp = ( DB *) dbp_p -> _yp ; 996 t = dbp -> `t_ags (dbp, ags ); 997 dbp_p -> _dbdp . tags | ags ; 999 yp -> us = t ; 1001 } } 1010 $__db_g_oc ( dbp_id , tx_id , keydn , keydoff , keyun , keyags , 1011 keyda , keysize , dadn , dadoff , daun , daags , dada , 1012 dasize , ags , yp , p ) 1013 u_t dbp_id ; 1014 u_t tx_id ; 1015 u_t32_t keydn ; 1016 u_t32_t keydoff ; 1017 u_t32_t keyun ; 1018 u_t32_t keyags ; 1019 * keyda ; 1020 u_t32_t keysize ; 1021 u_t32_t dadn ; 1022 u_t32_t dadoff ; 1023 u_t32_t daun ; 1024 u_t32_t daags ; 1025 * dada ; 1026 u_t32_t dasize ; 1027 u_t32_t ags ; 1028 __db_g_y * yp ; 1029 * p ; 1031 DB * dbp ; 1032 DBT key , da ; 1033 DB_TXN * tx ; 1034 _y * dbp_p , * tx_p ; 1035 t ; 1037 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1038 dbp = ( DB *) dbp_p -> _yp ; 1039 i( tx_id != 0) { 1040 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1041 tx = ( DB_TXN *) tx_p -> _yp ; 1043 tx = NULL ; 1045 yp -> keyda . keyda_v = NULL ; 1046 yp -> dada . dada_v = NULL ; 1047 * p = 0; 1048 `memt (& key , 0, (key)); 1049 `memt (& da , 0, (data)); 1052 key . dn = keydn ; 1053 key . doff = keydoff ; 1057 key . ags = DB_DBT_MALLOC ; 1058 i( keyags & DB_DBT_PARTIAL ) 1059 key . ags | DB_DBT_PARTIAL ; 1060 key . size = keysize ; 1061 key . un = keyun ; 1062 key . da = keyda ; 1064 da . dn = dadn ; 1065 da . doff = dadoff ; 1066 da . un = daun ; 1070 da . size = dasize ; 1071 da .d dada ; 1072 i( ags & DB_MULTIPLE ) { 1073 i( da .data == 0) { 1074 t = `__os_umloc ( dbp -> dbv , 1075 da . un , &data.data); 1076 i( t != 0) 1077 r ; 1079 da . ags | DB_DBT_USERMEM ; 1081 da . ags | DB_DBT_MALLOC ; 1082 i( daags & DB_DBT_PARTIAL ) 1083 da . ags | DB_DBT_PARTIAL ; 1086 t = dbp -> `g (dbp, tx , & key , & da , ags ); 1090 i( t == 0) { 1099 * p = 1; 1103 i( key . da = keyda ) { 1104 t = `__os_umloc ( dbp -> dbv , 1105 key . size , & yp -> keyda . keyda_v ); 1106 i( t != 0) 1107 r ; 1108 `memy ( yp -> keyda . keyda_v , key . da , key. size ); 1110 yp -> keyda . keyda_v = key . da ; 1112 yp -> keyda . keyda_n = key . size ; 1117 i( da .d= dada ) { 1118 t = `__os_umloc ( dbp -> dbv , 1119 da . size , & yp -> dada . dada_v ); 1120 i( t != 0) 1121 r ; 1122 `memy ( yp -> dada . dada_v , da .data, 1123 da . size ); 1125 yp -> dada . dada_v = da .data; 1126 yp -> dada . dada_n = da . size ; 1128 r : `FREE_IF_CHANGED ( dbp -> dbv , key . da , keyda ); 1129 `FREE_IF_CHANGED ( dbp -> dbv , da .da, dada ); 1130 `FREE_IF_CHANGED ( dbp -> dbv , 1131 yp -> keyda . keyda_v , key . da ); 1132 `FREE_IF_CHANGED ( dbp -> dbv , 1133 yp -> dada . dada_v , da .data); 1134 yp -> keyda . keyda_v = NULL ; 1135 yp -> keyda . keyda_n = 0; 1136 yp -> dada . dada_v = NULL ; 1137 yp -> dada . dada_n = 0; 1138 * p = 0; 1140 yp -> us = t ; 1142 } } 1149 $__db_g_h_f_oc ( dbp_id , yp ) 1150 u_t dbp_id ; 1151 __db_g_h_f_y * yp ; 1153 DB * dbp ; 1154 _y * dbp_p ; 1156 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1157 dbp = ( DB *) dbp_p -> _yp ; 1159 yp -> us = dbp -> `g_h_f (dbp, &yp-> f ); 1160 } } 1167 $__db_t_h_f_oc ( dbp_id , f , yp ) 1168 u_t dbp_id ; 1169 u_t32_t f ; 1170 __db_t_h_f_y * yp ; 1172 DB * dbp ; 1173 _y * dbp_p ; 1174 t ; 1176 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1177 dbp = ( DB *) dbp_p -> _yp ; 1179 t = dbp -> `t_h_f (dbp, f ); 1181 yp -> us = t ; 1183 } } 1189 $__db_g_h_m_oc ( dbp_id , yp ) 1190 u_t dbp_id ; 1191 __db_g_h_m_y * yp ; 1193 DB * dbp ; 1194 _y * dbp_p ; 1196 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1197 dbp = ( DB *) dbp_p -> _yp ; 1199 yp -> us = dbp -> `g_h_m (dbp, &yp-> m ); 1200 } } 1207 $__db_t_h_m_oc ( dbp_id , m , yp ) 1208 u_t dbp_id ; 1209 u_t32_t m ; 1210 __db_t_h_m_y * yp ; 1212 DB * dbp ; 1213 _y * dbp_p ; 1214 t ; 1216 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1217 dbp = ( DB *) dbp_p -> _yp ; 1219 t = dbp -> `t_h_m (dbp, m ); 1221 yp -> us = t ; 1223 } } 1231 $__db_key_nge_oc ( dbp_id , tx_id , keydn , keydoff , keyun , 1232 keyags , keyda , keysize , ags , yp ) 1233 u_t dbp_id ; 1234 u_t tx_id ; 1235 u_t32_t keydn ; 1236 u_t32_t keydoff ; 1237 u_t32_t keyun ; 1238 u_t32_t keyags ; 1239 * keyda ; 1240 u_t32_t keysize ; 1241 u_t32_t ags ; 1242 __db_key_nge_y * yp ; 1244 DB * dbp ; 1245 DBT key ; 1246 DB_KEY_RANGE nge ; 1247 DB_TXN * tx ; 1248 _y * dbp_p , * tx_p ; 1249 t ; 1251 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1252 dbp = ( DB *) dbp_p -> _yp ; 1253 i( tx_id != 0) { 1254 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1255 tx = ( DB_TXN *) tx_p -> _yp ; 1257 tx = NULL ; 1259 `memt (& key , 0, (key)); 1261 key . dn = keydn ; 1262 key . un = keyun ; 1263 key . doff = keydoff ; 1264 key . size = keysize ; 1265 key . da = keyda ; 1266 key . ags = keyags ; 1268 t = dbp -> `key_nge (dbp, tx , & key , & nge , ags ); 1270 yp -> us = t ; 1271 yp -> ss = nge .less; 1272 yp -> equ = nge .equal; 1273 yp -> g = nge .greater; 1275 } } 1281 $__db_g_ld_oc ( dbp_id , yp ) 1282 u_t dbp_id ; 1283 __db_g_ld_y * yp ; 1285 DB * dbp ; 1286 _y * dbp_p ; 1288 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1289 dbp = ( DB *) dbp_p -> _yp ; 1291 yp -> us = dbp -> `g_ld (dbp, (*)&yp-> ld ); 1292 } } 1299 $__db_t_ld_oc ( dbp_id , ld , yp ) 1300 u_t dbp_id ; 1301 u_t32_t ld ; 1302 __db_t_ld_y * yp ; 1304 DB * dbp ; 1305 _y * dbp_p ; 1306 t ; 1308 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1309 dbp = ( DB *) dbp_p -> _yp ; 1311 t = dbp -> `t_ld (dbp, ld ); 1313 yp -> us = t ; 1315 } } 1321 $__db_g_dbme_oc ( dbp_id , yp ) 1322 u_t dbp_id ; 1323 __db_g_dbme_y * yp ; 1325 DB * dbp ; 1326 _y * dbp_p ; 1328 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1329 dbp = ( DB *) dbp_p -> _yp ; 1331 yp -> us = dbp -> `g_dbme (dbp, 1332 (cڡ **)& yp -> fame , (cڡ **)&yp-> dbme ); 1333 } } 1340 $__db_g_ݒ_ags_oc ( dbp_id , yp ) 1341 u_t dbp_id ; 1342 __db_g_ݒ_ags_y * yp ; 1344 DB * dbp ; 1345 _y * dbp_p ; 1347 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1348 dbp = ( DB *) dbp_p -> _yp ; 1350 yp -> us = dbp -> `g_ݒ_ags (dbp, &yp-> ags ); 1351 } } 1358 $__db_ݒ_oc ( dbp_id , tx_id , me , subdb , ty , ags , mode , yp ) 1359 u_t dbp_id ; 1360 u_t tx_id ; 1361 * me ; 1362 * subdb ; 1363 u_t32_t ty ; 1364 u_t32_t ags ; 1365 u_t32_t mode ; 1366 __db_ݒ_y * yp ; 1368 DB * dbp ; 1369 DB_TXN * tx ; 1370 DBTYPE dbty ; 1371 _y * dbp_p , * w_p , * tx_p ; 1372 isswd , t ; 1374 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1375 dbp = ( DB *) dbp_p -> _yp ; 1377 i( tx_id != 0) { 1378 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1379 tx = ( DB_TXN *) tx_p -> _yp ; 1381 tx = NULL ; 1383 yp -> db_id = dbp_id ; 1384 i(( w_p = `__dbv_shedb ( dbp_p , me , subdb , ty , ags )) 1385 ! NULL ) { 1389 i( __dbv_vbo ) 1390 `tf ("Shg db ID %ld\n", w_p -> _id ); 1391 yp -> db_id = w_p -> _id ; 1392 t = `__db_o_t ( dbp_id , 0); 1393 out ; 1395 t = dbp -> `ݒ (dbp, tx , me , subdb , ( DBTYPE ) ty , ags , mode ); 1396 i( t == 0) { 1397 () dbp -> `g_ty (dbp, & dbty ); 1398 yp -> ty = dbty ; 1405 () dbp -> `g_byswd (dbp, & isswd ); 1406 i( `__db_byd ( NULL , 1234) == 0) { 1407 i( isswd == 0) 1408 yp -> ld = 1234; 1410 yp -> ld = 4321; 1412 i( isswd == 0) 1413 yp -> ld = 4321; 1415 yp -> ld = 1234; 1417 dbp_p -> _dbdp . ty = dbty ; 1418 dbp_p -> _dbdp . dbags = `LF_ISSET ( DB_SERVER_DBFLAGS ); 1419 i( me = NULL ) 1420 dbp_p -> _dbdp . db = NULL ; 1421 i(( t = `__os_rdup ( dbp -> dbv , me , 1422 & dbp_p -> _dbdp . db )) != 0) 1423 out ; 1424 i( subdb = NULL ) 1425 dbp_p -> _dbdp . subdb = NULL ; 1426 i(( t = `__os_rdup ( dbp -> dbv , subdb , 1427 & dbp_p -> _dbdp . subdb )) != 0) 1428 out ; 1430 out : 1431 yp -> us = t ; 1433 } } 1439 $__db_g_gesize_oc ( dbp_id , yp ) 1440 u_t dbp_id ; 1441 __db_g_gesize_y * yp ; 1443 DB * dbp ; 1444 _y * dbp_p ; 1446 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1447 dbp = ( DB *) dbp_p -> _yp ; 1449 yp -> us = dbp -> `g_gesize (dbp, &yp-> gesize ); 1450 } } 1457 $__db_t_gesize_oc ( dbp_id , gesize , yp ) 1458 u_t dbp_id ; 1459 u_t32_t gesize ; 1460 __db_t_gesize_y * yp ; 1462 DB * dbp ; 1463 _y * dbp_p ; 1464 t ; 1466 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1467 dbp = ( DB *) dbp_p -> _yp ; 1469 t = dbp -> `t_gesize (dbp, gesize ); 1471 yp -> us = t ; 1473 } } 1483 $__db_pg_oc ( dbp_id , tx_id , skeydn , skeydoff , skeyun , 1484 skeyags , skeyda , skeysize , pkeydn , pkeydoff , pkeyun , pkeyags , 1485 pkeyda , pkeysize , dadn , dadoff , daun , daags , dada , 1486 dasize , ags , yp , p ) 1487 u_t dbp_id ; 1488 u_t tx_id ; 1489 u_t32_t skeydn ; 1490 u_t32_t skeydoff ; 1491 u_t32_t skeyun ; 1492 u_t32_t skeyags ; 1493 * skeyda ; 1494 u_t32_t skeysize ; 1495 u_t32_t pkeydn ; 1496 u_t32_t pkeydoff ; 1497 u_t32_t pkeyun ; 1498 u_t32_t pkeyags ; 1499 * pkeyda ; 1500 u_t32_t pkeysize ; 1501 u_t32_t dadn ; 1502 u_t32_t dadoff ; 1503 u_t32_t daun ; 1504 u_t32_t daags ; 1505 * dada ; 1506 u_t32_t dasize ; 1507 u_t32_t ags ; 1508 __db_pg_y * yp ; 1509 * p ; 1511 DB * dbp ; 1512 DBT skey , pkey , da ; 1513 DB_TXN * tx ; 1514 _y * dbp_p , * tx_p ; 1515 t ; 1517 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1518 dbp = ( DB *) dbp_p -> _yp ; 1519 i( tx_id != 0) { 1520 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1521 tx = ( DB_TXN *) tx_p -> _yp ; 1523 tx = NULL ; 1525 yp -> skeyda . skeyda_v = NULL ; 1526 yp -> pkeyda . pkeyda_v = NULL ; 1527 yp -> dada . dada_v = NULL ; 1528 * p = 0; 1529 `memt (& skey , 0, (skey)); 1530 `memt (& pkey , 0, (pkey)); 1531 `memt (& da , 0, (data)); 1537 skey . ags = DB_DBT_MALLOC ; 1538 skey . dn = skeydn ; 1539 skey . un = skeyun ; 1540 skey . doff = skeydoff ; 1541 i( skeyags & DB_DBT_PARTIAL ) 1542 skey . ags | DB_DBT_PARTIAL ; 1543 skey . size = skeysize ; 1544 skey . da = skeyda ; 1546 pkey . ags = DB_DBT_MALLOC ; 1547 pkey . dn = pkeydn ; 1548 pkey . un = pkeyun ; 1549 pkey . doff = pkeydoff ; 1550 i( pkeyags & DB_DBT_PARTIAL ) 1551 pkey . ags | DB_DBT_PARTIAL ; 1552 pkey . size = pkeysize ; 1553 pkey . da = pkeyda ; 1555 da . ags = DB_DBT_MALLOC ; 1556 da . dn = dadn ; 1557 da . un = daun ; 1558 da . doff = dadoff ; 1559 i( daags & DB_DBT_PARTIAL ) 1560 da . ags | DB_DBT_PARTIAL ; 1561 da . size = dasize ; 1562 da .d dada ; 1565 t = dbp -> `pg (dbp, tx , & skey , & pkey , & da , ags ); 1569 i( t == 0) { 1578 * p = 1; 1582 i( skey . da = skeyda ) { 1583 t = `__os_umloc ( dbp -> dbv , 1584 skey . size , & yp -> skeyda . skeyda_v ); 1585 i( t != 0) 1586 r ; 1587 `memy ( yp -> skeyda . skeyda_v , skey . da , 1588 skey . size ); 1590 yp -> skeyda . skeyda_v = skey . da ; 1592 yp -> skeyda . skeyda_n = skey . size ; 1597 i( pkey . da = pkeyda ) { 1598 t = `__os_umloc ( dbp -> dbv , 1599 pkey . size , & yp -> pkeyda . pkeyda_v ); 1600 i( t != 0) 1601 r ; 1608 `memy ( yp -> pkeyda . pkeyda_v , pkey . da , 1609 pkey . size ); 1611 yp -> pkeyda . pkeyda_v = pkey . da ; 1612 yp -> pkeyda . pkeyda_n = pkey . size ; 1617 i( da .d= dada ) { 1618 t = `__os_umloc ( dbp -> dbv , 1619 da . size , & yp -> dada . dada_v ); 1620 i( t != 0) 1621 r ; 1622 `memy ( yp -> dada . dada_v , da .data, 1623 da . size ); 1625 yp -> dada . dada_v = da .data; 1626 yp -> dada . dada_n = da . size ; 1628 r : `FREE_IF_CHANGED ( dbp -> dbv , skey . da , skeyda ); 1629 `FREE_IF_CHANGED ( dbp -> dbv , pkey . da , pkeyda ); 1630 `FREE_IF_CHANGED ( dbp -> dbv , da .da, dada ); 1631 `FREE_IF_CHANGED ( dbp -> dbv , 1632 yp -> skeyda . skeyda_v , skey . da ); 1633 `FREE_IF_CHANGED ( dbp -> dbv , 1634 yp -> pkeyda . pkeyda_v , pkey . da ); 1635 `FREE_IF_CHANGED ( dbp -> dbv , 1636 yp -> dada . dada_v , da .data); 1637 yp -> skeyda . skeyda_v = NULL ; 1638 yp -> skeyda . skeyda_n = 0; 1639 yp -> pkeyda . pkeyda_v = NULL ; 1640 yp -> pkeyda . pkeyda_n = 0; 1641 yp -> dada . dada_v = NULL ; 1642 yp -> dada . dada_n = 0; 1643 * p = 0; 1645 yp -> us = t ; 1647 } } 1656 $__db_put_oc ( dbp_id , tx_id , keydn , keydoff , keyun , keyags , 1657 keyda , keysize , dadn , dadoff , daun , daags , dada , 1658 dasize , ags , yp , p ) 1659 u_t dbp_id ; 1660 u_t tx_id ; 1661 u_t32_t keydn ; 1662 u_t32_t keydoff ; 1663 u_t32_t keyun ; 1664 u_t32_t keyags ; 1665 * keyda ; 1666 u_t32_t keysize ; 1667 u_t32_t dadn ; 1668 u_t32_t dadoff ; 1669 u_t32_t daun ; 1670 u_t32_t daags ; 1671 * dada ; 1672 u_t32_t dasize ; 1673 u_t32_t ags ; 1674 __db_put_y * yp ; 1675 * p ; 1677 DB * dbp ; 1678 DBT key , da ; 1679 DB_TXN * tx ; 1680 _y * dbp_p , * tx_p ; 1681 t ; 1683 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1684 dbp = ( DB *) dbp_p -> _yp ; 1685 i( tx_id != 0) { 1686 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1687 tx = ( DB_TXN *) tx_p -> _yp ; 1689 tx = NULL ; 1691 yp -> keyda . keyda_v = NULL ; 1692 * p = 0; 1693 `memt (& key , 0, (key)); 1694 `memt (& da , 0, (data)); 1697 key . dn = keydn ; 1698 key . un = keyun ; 1699 key . doff = keydoff ; 1703 key . ags = DB_DBT_MALLOC ; 1704 i( keyags & DB_DBT_PARTIAL ) 1705 key . ags | DB_DBT_PARTIAL ; 1706 key . size = keysize ; 1707 key . da = keyda ; 1709 da . dn = dadn ; 1710 da . un = daun ; 1711 da . doff = dadoff ; 1712 da . ags = daags ; 1713 da . size = dasize ; 1714 da .d dada ; 1717 t = dbp -> `put (dbp, tx , & key , & da , ags ); 1722 i( t =0 && ( ags = DB_APPEND )) { 1731 * p = 1; 1735 i( key . da = keyda ) { 1736 t = `__os_umloc ( dbp -> dbv , 1737 key . size , & yp -> keyda . keyda_v ); 1738 i( t != 0) 1739 r ; 1740 `memy ( yp -> keyda . keyda_v , key . da , key. size ); 1742 yp -> keyda . keyda_v = key . da ; 1744 yp -> keyda . keyda_n = key . size ; 1746 r : `FREE_IF_CHANGED ( dbp -> dbv , key . da , keyda ); 1747 `FREE_IF_CHANGED ( dbp -> dbv , 1748 yp -> keyda . keyda_v , key . da ); 1749 yp -> keyda . keyda_v = NULL ; 1750 yp -> keyda . keyda_n = 0; 1751 * p = 0; 1753 yp -> us = t ; 1755 } } 1761 $__db_g_iܙy_oc ( dbp_id , yp ) 1762 u_t dbp_id ; 1763 __db_g_iܙy_y * yp ; 1765 DB * dbp ; 1766 _y * dbp_p ; 1768 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1769 dbp = ( DB *) dbp_p -> _yp ; 1771 yp -> us = 1772 dbp -> `g_iܙy (dbp, ( DB_CACHE_PRIORITY *)& yp -> iܙy ); 1773 } } 1780 $__db_t_iܙy_oc ( dbp_id , iܙy , yp ) 1781 u_t dbp_id ; 1782 u_t32_t iܙy ; 1783 __db_t_iܙy_y * yp ; 1785 DB * dbp ; 1786 _y * dbp_p ; 1787 t ; 1789 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1790 dbp = ( DB *) dbp_p -> _yp ; 1792 t = dbp -> `t_iܙy (dbp, ( DB_CACHE_PRIORITY ) iܙy ); 1794 yp -> us = t ; 1796 } } 1802 $__db_g__dim_oc ( dbp_id , yp ) 1803 u_t dbp_id ; 1804 __db_g__dim_y * yp ; 1806 DB * dbp ; 1807 _y * dbp_p ; 1809 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1810 dbp = ( DB *) dbp_p -> _yp ; 1812 yp -> us = dbp -> `g__dim (dbp, (*)&yp-> dim ); 1813 } } 1820 $__db_t__dim_oc ( dbp_id , dim , yp ) 1821 u_t dbp_id ; 1822 u_t32_t dim ; 1823 __db_t__dim_y * yp ; 1825 DB * dbp ; 1826 _y * dbp_p ; 1827 t ; 1829 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1830 dbp = ( DB *) dbp_p -> _yp ; 1832 t = dbp -> `t__dim (dbp, dim ); 1834 yp -> us = t ; 1836 } } 1842 $__db_g__n_oc ( dbp_id , yp ) 1843 u_t dbp_id ; 1844 __db_g__n_y * yp ; 1846 DB * dbp ; 1847 _y * dbp_p ; 1849 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1850 dbp = ( DB *) dbp_p -> _yp ; 1852 yp -> us = dbp -> `g__n (dbp, &yp-> n ); 1853 } } 1860 $__db_t__n_oc ( dbp_id , n , yp ) 1861 u_t dbp_id ; 1862 u_t32_t n ; 1863 __db_t__n_y * yp ; 1865 DB * dbp ; 1866 _y * dbp_p ; 1867 t ; 1869 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1870 dbp = ( DB *) dbp_p -> _yp ; 1872 t = dbp -> `t__n (dbp, n ); 1874 yp -> us = t ; 1876 } } 1882 $__db_g__d_oc ( dbp_id , yp ) 1883 u_t dbp_id ; 1884 __db_g__d_y * yp ; 1886 DB * dbp ; 1887 _y * dbp_p ; 1889 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1890 dbp = ( DB *) dbp_p -> _yp ; 1892 yp -> us = dbp -> `g__d (dbp, (*)&yp-> d ); 1893 } } 1900 $__db_t__d_oc ( dbp_id , d , yp ) 1901 u_t dbp_id ; 1902 u_t32_t d ; 1903 __db_t__d_y * yp ; 1905 DB * dbp ; 1906 _y * dbp_p ; 1907 t ; 1909 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1910 dbp = ( DB *) dbp_p -> _yp ; 1912 t = dbp -> `t__d (dbp, d ); 1914 yp -> us = t ; 1916 } } 1923 $__db_move_oc ( dbp_id , me , subdb , ags , yp ) 1924 u_t dbp_id ; 1925 * me ; 1926 * subdb ; 1927 u_t32_t ags ; 1928 __db_move_y * yp ; 1930 DB * dbp ; 1931 _y * dbp_p ; 1932 t ; 1934 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1935 dbp = ( DB *) dbp_p -> _yp ; 1937 t = dbp -> `move (dbp, me , subdb , ags ); 1938 `__dbd_p ( dbp_p ); 1940 yp -> us = t ; 1942 } } 1949 $__db_me_oc ( dbp_id , me , subdb , wme , ags , yp ) 1950 u_t dbp_id ; 1951 * me ; 1952 * subdb ; 1953 * wme ; 1954 u_t32_t ags ; 1955 __db_me_y * yp ; 1957 DB * dbp ; 1958 _y * dbp_p ; 1959 t ; 1961 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1962 dbp = ( DB *) dbp_p -> _yp ; 1964 t = dbp -> `me (dbp, me , subdb , wme , ags ); 1965 `__dbd_p ( dbp_p ); 1967 yp -> us = t ; 1969 } } 1976 $__db__oc ( dbp_id , tx_id , ags , yp , p ) 1977 u_t dbp_id ; 1978 u_t tx_id ; 1979 u_t32_t ags ; 1980 __db__y * yp ; 1981 * p ; 1983 DB * dbp ; 1984 DB_TXN * tx ; 1985 DBTYPE ty ; 1986 _y * dbp_p , * tx_p ; 1987 u_t32_t * q , * p , * t ; 1988 i , n , t ; 1989 * ; 1991 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1992 dbp = ( DB *) dbp_p -> _yp ; 1993 i( tx_id != 0) { 1994 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1995 tx = ( DB_TXN *) tx_p -> _yp ; 1997 tx = NULL ; 1999 t = dbp -> ` (dbp, tx , & , ags ); 2000 yp -> us = t ; 2001 i( t != 0) 2012 () dbp -> `g_ty (dbp, & ty ); 2013 i( ty = DB_HASH ) 2014 n = ( DB_HASH_STAT ); 2015 i( ty = DB_QUEUE ) 2016 n = ( DB_QUEUE_STAT ); 2018 n = ( DB_BTREE_STAT ); 2019 yp -> s . s_n = n / ( u_t32_t ); 2021 i(( t = `__os_umloc ( dbp -> dbv , n * yp -> s . s_n , 2022 & t )) != 0) 2023 out ; 2024 i = 0, q = t , p = ; i < n ; 2025 i ++, q ++, p ++) 2026 * q = * p ; 2027 yp -> s . s_v = t ; 2028 `__os_u ( dbp -> dbv , ); 2029 i( t == 0) 2030 * p = 1; 2031 out : 2032 yp -> us = t ; 2034 } } 2040 $__db_sync_oc ( dbp_id , ags , yp ) 2041 u_t dbp_id ; 2042 u_t32_t ags ; 2043 __db_sync_y * yp ; 2045 DB * dbp ; 2046 _y * dbp_p ; 2047 t ; 2049 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2050 dbp = ( DB *) dbp_p -> _yp ; 2052 t = dbp -> `sync (dbp, ags ); 2054 yp -> us = t ; 2056 } } 2063 $__db_un_oc ( dbp_id , tx_id , ags , yp ) 2064 u_t dbp_id ; 2065 u_t tx_id ; 2066 u_t32_t ags ; 2067 __db_un_y * yp ; 2069 DB * dbp ; 2070 DB_TXN * tx ; 2071 _y * dbp_p , * tx_p ; 2072 u_t32_t cou ; 2073 t ; 2075 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2076 dbp = ( DB *) dbp_p -> _yp ; 2077 i( tx_id != 0) { 2078 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 2079 tx = ( DB_TXN *) tx_p -> _yp ; 2081 tx = NULL ; 2083 t = dbp -> `un (dbp, tx , & cou , ags ); 2084 yp -> us = t ; 2085 i( t == 0) 2086 yp -> cou = count; 2088 } } 2095 $__db_curs_oc ( dbp_id , tx_id , ags , yp ) 2096 u_t dbp_id ; 2097 u_t tx_id ; 2098 u_t32_t ags ; 2099 __db_curs_y * yp ; 2101 DB * dbp ; 2102 DBC * dbc ; 2103 DB_TXN * tx ; 2104 _y * dbc_p , * v_p , * dbp_p , * tx_p ; 2105 t ; 2107 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2108 dbp = ( DB *) dbp_p -> _yp ; 2109 dbc_p = `w__t (& yp -> us ); 2110 i( dbc_p = NULL ) 2113 i( tx_id != 0) { 2114 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 2115 tx = ( DB_TXN *) tx_p -> _yp ; 2116 dbc_p -> _aiv = tx_p ->ct_activep; 2118 tx = NULL ; 2120 i(( t = dbp -> `curs (dbp, tx , & dbc , ags )) == 0) { 2121 dbc_p -> _dbc = dbc ; 2122 dbc_p -> _ty = CT_CURSOR ; 2123 dbc_p -> _ = dbp_p ; 2124 v_p = dbp_p -> _v ; 2125 dbc_p -> _v = v_p ; 2126 `__dbv_imeout ( dbc_p , v_p -> _timeout ); 2127 `__dbv_aive ( dbc_p ); 2128 yp -> dbcid_id = dbc_p -> _id ; 2130 `__dbr_p ( dbc_p ); 2132 yp -> us = t ; 2134 } } 2141 $__db_jo_oc ( dbp_id , curs , cur , ags , yp ) 2142 u_t dbp_id ; 2143 u_t32_t * curs ; 2144 u_t32_t cur ; 2145 u_t32_t ags ; 2146 __db_jo_y * yp ; 2148 DB_ENV * dbv ; 2149 DB * dbp ; 2150 DBC ** jcurs , ** c ; 2151 DBC * dbc ; 2152 _y * dbc_p , * p , * dbp_p ; 2153 size_t size ; 2154 u_t32_t * , i ; 2155 t ; 2157 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2158 dbp = ( DB *) dbp_p -> _yp ; 2159 dbv = dbp ->dbenv; 2161 dbc_p = `w__t (& yp -> us ); 2162 i( dbc_p = NULL ) 2165 size = ( cur + 1* ( DBC *); 2166 i(( t = `__os_oc ( 2167 dbv , cur + 1, ( DBC *), & jcurs )) != 0) { 2168 yp -> us = t ; 2169 `__dbr_p ( dbc_p ); 2177 p = `g_b˒t (* curs ); 2178 `DB_ASSERT ( dbv , p -> _ty = CT_CURSOR ); 2183 i( p -> _aiv !&p-> _aive ) 2184 dbc_p -> _aiv = p ->ct_activep; 2185 i = 0, = curs , c = jcurs ; i < cur ; i++, cl++, c++) { 2186 p = `g_b˒t (* ); 2187 i( p = NULL ) { 2188 yp -> us = DB_NOSERVER_ID ; 2189 out ; 2201 `DB_ASSERT ( dbv , p -> _ty = CT_CURSOR ); 2202 p -> _ty | CT_JOIN ; 2203 p -> _igp = c-> _aiv ; 2211 p -> _aiv = & dbc_p -> _aive ; 2212 * c = p -> _dbc ; 2214 * c = NULL ; 2215 i(( t = dbp -> `jo (dbp, jcurs , & dbc , ags )) == 0) { 2216 dbc_p -> _dbc = dbc ; 2217 dbc_p -> _ty = ( CT_JOINCUR | CT_CURSOR ); 2218 dbc_p -> _ = dbp_p ; 2219 dbc_p -> _v = dbp_p ->ct_envparent; 2220 `__dbv_imeout ( dbc_p , dbp_p -> _v -> _timeout ); 2221 `__dbv_aive ( dbc_p ); 2222 yp -> dbcid_id = dbc_p -> _id ; 2224 `__dbr_p ( dbc_p ); 2228 = curs ; *cl != 0; cl++) { 2229 p = `g_b˒t (* ); 2230 p -> _ty = CT_CURSOR ; 2231 p -> _aiv = c-> _igp ; 2235 yp -> us = t ; 2237 out : `__os_ ( dbv , jcurs ); 2239 } } 2245 $__dbc_o_oc ( dbc_id , yp ) 2246 u_t dbc_id ; 2247 __dbc_o_y * yp ; 2249 _y * dbc_p ; 2251 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2252 yp -> us = `__dbc_o_t ( dbc_p ); 2254 } } 2261 $__dbc_cou_oc ( dbc_id , ags , yp ) 2262 u_t dbc_id ; 2263 u_t32_t ags ; 2264 __dbc_cou_y * yp ; 2266 DBC * dbc ; 2267 _y * dbc_p ; 2268 db_o_t num ; 2269 t ; 2271 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2272 dbc = ( DBC *) dbc_p -> _yp ; 2274 t = dbc -> `cou (dbc, & num , ags ); 2275 yp -> us = t ; 2276 i( t == 0) 2277 yp -> dupcou = num ; 2279 } } 2285 $__dbc_d_oc ( dbc_id , ags , yp ) 2286 u_t dbc_id ; 2287 u_t32_t ags ; 2288 __dbc_d_y * yp ; 2290 DBC * dbc ; 2291 _y * dbc_p ; 2292 t ; 2294 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2295 dbc = ( DBC *) dbc_p -> _yp ; 2297 t = dbc -> `d (dbc, ags ); 2299 yp -> us = t ; 2301 } } 2307 $__dbc_dup_oc ( dbc_id , ags , yp ) 2308 u_t dbc_id ; 2309 u_t32_t ags ; 2310 __dbc_dup_y * yp ; 2312 DBC * dbc , * wdbc ; 2313 _y * dbc_p , * w_p ; 2314 t ; 2316 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2317 dbc = ( DBC *) dbc_p -> _yp ; 2319 w_p = `w__t (& yp -> us ); 2320 i( w_p = NULL ) 2323 i(( t = dbc -> `dup (dbc, & wdbc , ags )) == 0) { 2324 w_p -> _dbc = wdbc ; 2325 w_p -> _ty = CT_CURSOR ; 2326 w_p -> _ = dbc_p ->ct_parent; 2327 w_p -> _v = dbc_p ->ct_envparent; 2331 i( dbc_p -> _aiv !&dbc_p-> _aive ) 2332 w_p -> _aiv = dbc_p ->ct_activep; 2333 `__dbv_imeout ( w_p , dbc_p -> _timeout ); 2334 `__dbv_aive ( w_p ); 2335 yp -> dbcid_id = w_p -> _id ; 2337 `__dbr_p ( w_p ); 2339 yp -> us = t ; 2341 } } 2350 $__dbc_g_oc ( dbc_id , keydn , keydoff , keyun , keyags , keyda , 2351 keysize , dadn , dadoff , daun , daags , dada , dasize , 2352 ags , yp , p ) 2353 u_t dbc_id ; 2354 u_t32_t keydn ; 2355 u_t32_t keydoff ; 2356 u_t32_t keyun ; 2357 u_t32_t keyags ; 2358 * keyda ; 2359 u_t32_t keysize ; 2360 u_t32_t dadn ; 2361 u_t32_t dadoff ; 2362 u_t32_t daun ; 2363 u_t32_t daags ; 2364 * dada ; 2365 u_t32_t dasize ; 2366 u_t32_t ags ; 2367 __dbc_g_y * yp ; 2368 * p ; 2370 DBC * dbc ; 2371 DBT key , da ; 2372 DB_ENV * dbv ; 2373 _y * dbc_p ; 2374 t ; 2376 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2377 dbc = ( DBC *) dbc_p -> _yp ; 2378 dbv = dbc -> dbp ->dbenv; 2380 yp -> keyda . keyda_v = NULL ; 2381 yp -> dada . dada_v = NULL ; 2382 * p = 0; 2383 `memt (& key , 0, (key)); 2384 `memt (& da , 0, (data)); 2387 key . dn = keydn ; 2388 key . un = keyun ; 2389 key . doff = keydoff ; 2390 key . size = keysize ; 2391 i( keyags & DB_DBT_USERMEM ) { 2392 i(( t = `__os_umloc ( dbv , key . un , &key. da )) != 0) 2393 r ; 2394 i( keyda != 0) 2395 `memy ( key . da , keyda , 2396 ( key . size < key. un ) ? key.size : key.ulen); 2397 key . ags = DB_DBT_USERMEM ; 2399 key . da = keyda ; 2400 key . ags = DB_DBT_MALLOC ; 2402 i( keyags & DB_DBT_PARTIAL ) 2403 key . ags | DB_DBT_PARTIAL ; 2405 da . dn = dadn ; 2406 da . un = daun ; 2407 da . doff = dadoff ; 2408 da . size = dasize ; 2409 i( ags & ( DB_MULTIPLE | DB_MULTIPLE_KEY ) || 2410 daags & DB_DBT_USERMEM ) { 2411 i(( t = `__os_umloc ( dbv , da . un , &data.data)) != 0) 2412 r ; 2413 i( dada != 0) 2414 `memy ( da .da, dada , 2415 ( da . size < da. un ) ? data.size : data.ulen); 2416 da . ags = DB_DBT_USERMEM ; 2418 da .d dada ; 2419 da . ags = DB_DBT_MALLOC ; 2421 i( daags & DB_DBT_PARTIAL ) 2422 da . ags | DB_DBT_PARTIAL ; 2425 t = dbc -> `g (dbc, & key , & da , ags ); 2430 i( t == 0) { 2439 * p = 1; 2443 i( key . da = keyda ) { 2444 t = `__os_umloc ( dbv , key . size , 2445 & yp -> keyda . keyda_v ); 2446 i( t != 0) 2447 r ; 2448 `memy ( yp -> keyda . keyda_v , key . da , key. size ); 2450 yp -> keyda . keyda_v = key . da ; 2452 yp -> keyda . keyda_n = key . size ; 2457 i( da .d= dada ) { 2458 t = `__os_umloc ( dbv , da . size , 2459 & yp -> dada . dada_v ); 2460 i( t != 0) 2461 r ; 2462 `memy ( yp -> dada . dada_v , da .data, 2463 da . size ); 2465 yp -> dada . dada_v = da .data; 2466 yp -> dada . dada_n = da . size ; 2468 r : `FREE_IF_CHANGED ( dbv , key . da , keyda ); 2469 `FREE_IF_CHANGED ( dbv , da .da, dada ); 2470 `FREE_IF_CHANGED ( dbv , 2471 yp -> keyda . keyda_v , key . da ); 2472 `FREE_IF_CHANGED ( dbv , 2473 yp -> dada . dada_v , da .data); 2474 yp -> keyda . keyda_v = NULL ; 2475 yp -> keyda . keyda_n = 0; 2476 yp -> dada . dada_v = NULL ; 2477 yp -> dada . dada_n = 0; 2478 * p = 0; 2480 yp -> us = t ; 2482 } } 2492 $__dbc_pg_oc ( dbc_id , skeydn , skeydoff , skeyun , skeyags , 2493 skeyda , skeysize , pkeydn , pkeydoff , pkeyun , pkeyags , pkeyda , 2494 pkeysize , dadn , dadoff , daun , daags , dada , dasize , 2495 ags , yp , p ) 2496 u_t dbc_id ; 2497 u_t32_t skeydn ; 2498 u_t32_t skeydoff ; 2499 u_t32_t skeyun ; 2500 u_t32_t skeyags ; 2501 * skeyda ; 2502 u_t32_t skeysize ; 2503 u_t32_t pkeydn ; 2504 u_t32_t pkeydoff ; 2505 u_t32_t pkeyun ; 2506 u_t32_t pkeyags ; 2507 * pkeyda ; 2508 u_t32_t pkeysize ; 2509 u_t32_t dadn ; 2510 u_t32_t dadoff ; 2511 u_t32_t daun ; 2512 u_t32_t daags ; 2513 * dada ; 2514 u_t32_t dasize ; 2515 u_t32_t ags ; 2516 __dbc_pg_y * yp ; 2517 * p ; 2519 DBC * dbc ; 2520 DBT skey , pkey , da ; 2521 DB_ENV * dbv ; 2522 _y * dbc_p ; 2523 t ; 2525 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2526 dbc = ( DBC *) dbc_p -> _yp ; 2527 dbv = dbc -> dbp ->dbenv; 2529 yp -> skeyda . skeyda_v = NULL ; 2530 yp -> pkeyda . pkeyda_v = NULL ; 2531 yp -> dada . dada_v = NULL ; 2532 * p = 0; 2533 `memt (& skey , 0, (skey)); 2534 `memt (& pkey , 0, (pkey)); 2535 `memt (& da , 0, (data)); 2541 skey . ags = DB_DBT_MALLOC ; 2542 skey . dn = skeydn ; 2543 skey . un = skeyun ; 2544 skey . doff = skeydoff ; 2545 i( skeyags & DB_DBT_PARTIAL ) 2546 skey . ags | DB_DBT_PARTIAL ; 2547 skey . size = skeysize ; 2548 skey . da = skeyda ; 2550 pkey . ags = DB_DBT_MALLOC ; 2551 pkey . dn = pkeydn ; 2552 pkey . un = pkeyun ; 2553 pkey . doff = pkeydoff ; 2554 i( pkeyags & DB_DBT_PARTIAL ) 2555 pkey . ags | DB_DBT_PARTIAL ; 2556 pkey . size = pkeysize ; 2557 pkey . da = pkeyda ; 2559 da . ags = DB_DBT_MALLOC ; 2560 da . dn = dadn ; 2561 da . un = daun ; 2562 da . doff = dadoff ; 2563 i( daags & DB_DBT_PARTIAL ) 2564 da . ags | DB_DBT_PARTIAL ; 2565 da . size = dasize ; 2566 da .d dada ; 2569 t = dbc -> `pg (dbc, & skey , & pkey , & da , ags ); 2573 i( t == 0) { 2582 * p = 1; 2586 i( skey . da = skeyda ) { 2587 t = `__os_umloc ( dbv , 2588 skey . size , & yp -> skeyda . skeyda_v ); 2589 i( t != 0) 2590 r ; 2591 `memy ( yp -> skeyda . skeyda_v , skey . da , 2592 skey . size ); 2594 yp -> skeyda . skeyda_v = skey . da ; 2595 yp -> skeyda . skeyda_n = skey . size ; 2600 i( pkey . da = pkeyda ) { 2601 t = `__os_umloc ( dbv , 2602 pkey . size , & yp -> pkeyda . pkeyda_v ); 2603 i( t != 0) 2604 r ; 2611 `memy ( yp -> pkeyda . pkeyda_v , pkey . da , 2612 pkey . size ); 2614 yp -> pkeyda . pkeyda_v = pkey . da ; 2615 yp -> pkeyda . pkeyda_n = pkey . size ; 2620 i( da .d= dada ) { 2621 t = `__os_umloc ( dbv , 2622 da . size , & yp -> dada . dada_v ); 2623 i( t != 0) 2624 r ; 2625 `memy ( yp -> dada . dada_v , da .data, 2626 da . size ); 2628 yp -> dada . dada_v = da .data; 2629 yp -> dada . dada_n = da . size ; 2631 r : `FREE_IF_CHANGED ( dbv , skey . da , skeyda ); 2632 `FREE_IF_CHANGED ( dbv , pkey . da , pkeyda ); 2633 `FREE_IF_CHANGED ( dbv , da .da, dada ); 2634 `FREE_IF_CHANGED ( dbv , 2635 yp -> skeyda . skeyda_v , skey . da ); 2636 `FREE_IF_CHANGED ( dbv , 2637 yp -> pkeyda . pkeyda_v , pkey . da ); 2638 `FREE_IF_CHANGED ( dbv , 2639 yp -> dada . dada_v , da .data); 2640 yp -> skeyda . skeyda_v = NULL ; 2641 yp -> skeyda . skeyda_n = 0; 2642 yp -> pkeyda . pkeyda_v = NULL ; 2643 yp -> pkeyda . pkeyda_n = 0; 2644 yp -> dada . dada_v = NULL ; 2645 yp -> dada . dada_n = 0; 2646 * p = 0; 2648 yp -> us = t ; 2650 } } 2659 $__dbc_put_oc ( dbc_id , keydn , keydoff , keyun , keyags , keyda , 2660 keysize , dadn , dadoff , daun , daags , dada , dasize , 2661 ags , yp , p ) 2662 u_t dbc_id ; 2663 u_t32_t keydn ; 2664 u_t32_t keydoff ; 2665 u_t32_t keyun ; 2666 u_t32_t keyags ; 2667 * keyda ; 2668 u_t32_t keysize ; 2669 u_t32_t dadn ; 2670 u_t32_t dadoff ; 2671 u_t32_t daun ; 2672 u_t32_t daags ; 2673 * dada ; 2674 u_t32_t dasize ; 2675 u_t32_t ags ; 2676 __dbc_put_y * yp ; 2677 * p ; 2679 DB * dbp ; 2680 DBC * dbc ; 2681 DBT key , da ; 2682 _y * dbc_p ; 2683 t ; 2685 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2686 dbc = ( DBC *) dbc_p -> _yp ; 2687 dbp = ( DB *) dbc_p -> _ -> _yp ; 2689 `memt (& key , 0, (key)); 2690 `memt (& da , 0, (data)); 2693 key . dn = keydn ; 2694 key . un = keyun ; 2695 key . doff = keydoff ; 2699 key . ags = 0; 2700 i( keyags & DB_DBT_PARTIAL ) 2701 key . ags | DB_DBT_PARTIAL ; 2702 key . size = keysize ; 2703 key . da = keyda ; 2705 da . dn = dadn ; 2706 da . un = daun ; 2707 da . doff = dadoff ; 2708 da . ags = daags ; 2709 da . size = dasize ; 2710 da .d dada ; 2713 t = dbc -> `put (dbc, & key , & da , ags ); 2715 * p = 0; 2716 i( t =0 && ( ags = DB_AFTER || fg= DB_BEFORE ) && 2717 dbp -> ty = DB_RECNO ) { 2721 yp -> keyda . keyda_v = key . da ; 2722 yp -> keyda . keyda_n = key . size ; 2724 yp -> keyda . keyda_v = NULL ; 2725 yp -> keyda . keyda_n = 0; 2727 yp -> us = t ; 2729 } } 2736 $__dbc_g_iܙy_oc ( dbc_id , yp ) 2737 u_t dbc_id ; 2738 __dbc_g_iܙy_y * yp ; 2740 DBC * dbc ; 2741 _y * dbc_p ; 2743 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2744 dbc = ( DBC *) dbc_p -> _yp ; 2746 yp -> us = 2747 dbc -> `g_iܙy (dbc, ( DB_CACHE_PRIORITY *)& yp -> iܙy ); 2748 } } 2755 $__dbc_t_iܙy_oc ( dbc_id , iܙy , yp ) 2756 u_t dbc_id ; 2757 u_t32_t iܙy ; 2758 __dbc_t_iܙy_y * yp ; 2760 DBC * dbc ; 2761 _y * dbc_p ; 2762 t ; 2764 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2765 dbc = ( DBC *) dbc_p -> _yp ; 2767 t = dbc -> `t_iܙy (dbc, ( DB_CACHE_PRIORITY ) iܙy ); 2769 yp -> us = t ; 2771 } } @../rpc_server/c/db_server_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<c/c.h > 15 ~"db_rv.h " 16 ~"dbc_auto/ib_ext.h " 17 ~"dbc/db_rv_t.h " 18 ~"dbc_auto/comm_ext.h " 19 ~"dbc_auto/c_rv_ext.h " 21 add_home __P ((*)); 22 add_sswd __P ((*)); 23 v_cov __P ((*)); 24 __dbr_chd __P (( _y *)); 26 $LIST_HEAD ( hd , _y __dbv_hd ; 27 $LIST_HEAD ( homehd , home_y __dbv_home ; 28 __dbv_deo = DB_SERVER_TIMEOUT ; 29 __dbv_maxto = DB_SERVER_MAXTIMEOUT ; 30 __dbv_idto = DB_SERVER_IDLETIMEOUT ; 31 * logfe = NULL ; 32 * og ; 34 uge `__P (()); 35 vsi_check `__P (()); 37 __dbv_vbo = 0; 40 $ma ( gc , gv ) 41 gc ; 42 ** gv ; 44 `__dbv_ma (); 45 * ݏrg ; 46 CLIENT * ; 47 ch , t ; 48 * sswd ; 50 og = gv [0]; 52 `vsi_check (); 54 t = 0; 67 i(( = `_ ("localhost", 68 DB_RPC_SERVERPROG , DB_RPC_SERVERVERS , "t")! NULL ) { 69 `rtf ( dr , 70 "%s: Bkey DB RPC sv̗dyug.\n", og ); 71 `_deroy ( ); 72 ( EXIT_FAILURE ); 75 `LIST_INIT (& __dbv_home ); 76 ( ch = `gt ( gc , gv , "h:I:L:P:t:T:Vv")! EOF ) 77 ch ) { 79 () `add_home ( ݏrg ); 82 i( `__db_glg ( NULL , og , 83 ݏrg , 1, LONG_MAX , & __dbv_idto )) 84 ( EXIT_FAILURE ); 87 logfe = ݏrg ; 90 sswd = `rdup ( ݏrg ); 91 `memt ( ݏrg , 0, ` (optarg)); 92 i( sswd = NULL ) { 93 `rtf ( dr , "%s: strdup: %s\n", 94 og , ` ( o )); 95 ( EXIT_FAILURE ); 97 i(( t = `add_sswd ( sswd )) != 0) { 98 `rtf ( dr , "%s: strdup: %s\n", 99 og , ` ( t )); 100 ( EXIT_FAILURE ); 104 i( `__db_glg ( NULL , og , 105 ݏrg , 1, LONG_MAX , & __dbv_deo )) 106 ( EXIT_FAILURE ); 109 i( `__db_glg ( NULL , og , 110 ݏrg , 1, LONG_MAX , & __dbv_maxto )) 111 ( EXIT_FAILURE ); 114 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 115 ( EXIT_SUCCESS ); 117 __dbv_vbo = 1; 120 `uge (); 125 i( __dbv_deo > __dbv_maxto ) 126 __dbv_deo = __dbv_maxto ; 132 i( __dbv_deo > __dbv_idto ) 133 `rtf ( dr , 135 og , __dbv_idto , __dbv_deo ); 137 `LIST_INIT (& __dbv_hd ); 143 #ifde SIGPIPE 144 `sigl ( SIGPIPE , SIG_IGN ); 147 i( logfe ! NULL && `__db_ut_logt ("berkeley_db_svc",ogfile)) 148 ( EXIT_FAILURE ); 154 i( `v_cov ( og ) != 0) 155 ( EXIT_FAILURE ); 160 i( __dbv_vbo ) 161 `tf ("%s: Rdyػivques\n", og ); 162 `__dbv_ma (); 164 `abt (); 168 } } 171 $uge () 173 `rtf ( dr , "uge: %%s\n\t%s\n", og , 176 `ex ( EXIT_FAILURE ); 177 } } 180 $vsi_check () 182 v_maj , v_m , v_tch ; 185 () `db_vsi (& v_maj , & v_m , & v_tch ); 186 i( v_maj ! DB_VERSION_MAJOR || 187 v_m ! DB_VERSION_MINOR || v_tch ! DB_VERSION_PATCH ) { 188 `rtf ( dr , 190 og , DB_VERSION_MAJOR , DB_VERSION_MINOR , 191 DB_VERSION_PATCH , v_maj , v_m , v_tch ); 192 `ex ( EXIT_FAILURE ); 194 } } 200 $__dbv_imeout ( p , to ) 201 _y * p ; 202 u_t32_t to ; 204 i( to > ( u_t32_t ) __dbv_maxto ) 205 p -> _timeout = __dbv_maxto ; 206 i( to <= 0) 207 p -> _timeout = __dbv_deo ; 209 p -> _timeout = to ; 210 } } 213 $__dbv_timeout ( f ) 214 f ; 216 to_ht = -1; 217 time_t t ; 218 to ; 219 _y * p , * xtp ; 221 i(( t = `time ( NULL )) == -1) 228 i(! f && to_ht > 0 && t <o_hint) 230 to_ht = -1; 244 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; c = xtp ) { 245 xtp = `LIST_NEXT ( p , s ); 246 p -> _ty ) { 247 CT_TXN : 248 to = *( p -> _aiv + c-> _timeout ; 250 i( to < t ) { 251 i( __dbv_vbo ) 252 `tf ("Timing outxn id %ld\n", 253 p -> _id ); 254 ()(( DB_TXN *) p -> _yp )-> 255 `abt (( DB_TXN *) p -> _yp ); 256 `__dbd_p ( p ); 262 xtp = `LIST_FIRST (& __dbv_hd ); 263 } i(( to_ht > 0 &&o_h> to ) || 264 to_ht == -1) 265 to_ht = to ; 267 CT_CURSOR : 268 ( CT_JOINCUR | CT_CURSOR ): 269 to = *( p -> _aiv + c-> _timeout ; 271 i( to < t ) { 272 i( __dbv_vbo ) 273 `tf ("Timing out cursor %ld\n", 274 p -> _id ); 275 () `__dbc_o_t ( p ); 279 xtp = `LIST_FIRST (& __dbv_hd ); 280 } i(( to_ht > 0 &&o_h> to ) || 281 to_ht == -1) 282 to_ht = to ; 292 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; c = xtp ) { 293 xtp = `LIST_NEXT ( p , s ); 294 i( p -> _ty ! CT_ENV ) 296 to = *( p -> _aiv + c-> _id ; 298 i( to < t || f ) { 299 i( __dbv_vbo ) 300 `tf ("Timg ouv id %ld\n", p -> _id ); 301 () `__v_o_t ( p -> _id , 0, 1); 307 xtp = `LIST_FIRST (& __dbv_hd ); 310 } } 317 $__dbr_chd ( ) 318 _y * ; 320 _y * p , * xtp ; 322 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 323 p = xtp ) { 324 xtp = `LIST_NEXT ( p , s ); 325 i( p -> _ty == 0) 327 i( p -> _ = ) { 328 `__dbr_chd ( p ); 334 xtp = `LIST_NEXT ( p , s ); 335 `__dbr_p ( p ); 338 } } 344 $__dbr_p ( p ) 345 _y * p ; 347 `LIST_REMOVE ( p , s ); 348 `__os_ ( NULL , p ); 349 } } 355 $__dbd_p ( ) 356 _y * ; 358 `__dbr_chd ( ); 359 `__dbr_p ( ); 360 } } 365 _y * 366 $w__t ( ) 367 * ; 369 time_t t ; 370 _y * p , * op ; 371 t ; 373 i(( t = `__os_mloc ( NULL , ( _y ), & p )) != 0) { 374 * = t ; 375 ( NULL ); 377 `memt ( p , 0, ( _y )); 385 i(( t = `time ( NULL )) == -1) { 386 * = `__os_g_o (); 387 `__os_ ( NULL , p ); 388 ( NULL ); 390 op = `LIST_FIRST (& __dbv_hd ); 391 i( op ! NULL && op-> _id > t ) 392 t = op -> _id + 1; 393 p -> _id = () t ; 394 p -> _id = __dbv_idto ; 395 p -> _aiv = &p-> _aive ; 396 p -> _igp = NULL ; 397 p -> _fcou = 1; 399 `LIST_INSERT_HEAD (& __dbv_hd , p , s ); 400 ( p ); 401 } } 406 _y * 407 $g_b˒t ( id ) 408 id ; 410 _y * p ; 412 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 413 p = `LIST_NEXT (p, s )) 414 i( p -> _id = id ) 415 ( p ); 416 ( NULL ); 417 } } 423 _y * 424 $__dbv_shedb ( db_p , me , subdb , ty , ags ) 425 _y * db_p ; 426 cڡ * me , * subdb ; 427 DBTYPE ty ; 428 u_t32_t ags ; 430 _y * p ; 443 i( ags & DB_SERVER_DBNOSHARE ) 444 ( NULL ); 445 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 446 p = `LIST_NEXT (p, s )) { 450 i( p = db_p ) 452 i( p -> _ty ! CT_DB ) 454 i( p -> _v ! db_p ->ct_envparent) 456 i( ty ! DB_UNKNOWN && p -> _dbdp .type !=ype) 458 i( p -> _dbdp . dbags ! `LF_ISSET ( DB_SERVER_DBFLAGS )) 460 i( db_p -> _dbdp . tags != 0 && 461 p -> _dbdp . tags ! db_p ->ct_dbdp.setflags) 463 i( me = NULL || p -> _dbdp . db == NULL || 464 `rcmp ( me , p -> _dbdp . db ) != 0) 466 i( subdb ! p -> _dbdp .subdb && 467 ( subdb = NULL || p -> _dbdp .subdb == NULL || 468 `rcmp ( subdb , p -> _dbdp .subdb) != 0)) 473 p -> _fcou ++; 474 ( p ); 477 ( NULL ); 478 } } 484 _y * 485 $__dbv_shnv ( v_p , home , ags ) 486 _y * v_p ; 487 home_y * home ; 488 u_t32_t ags ; 490 _y * p ; 498 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 499 p = `LIST_NEXT (p, s )) { 503 i( p = v_p ) 505 i( p -> _ty ! CT_ENV ) 507 i( p -> _vdp . home != home) 509 i( p -> _vdp . vags ! ags ) 511 i( p -> _vdp . ags ! v_p ->ct_envdp.onflags) 513 i( p -> _vdp . offags ! v_p ->ct_envdp.offflags) 521 i( p -> _timeout < v_p ->ct_timeout) 522 p -> _timeout = v_p ->ct_timeout; 523 p -> _fcou ++; 524 ( p ); 527 ( NULL ); 528 } } 534 $__dbv_aive ( p ) 535 _y * p ; 537 time_t t ; 538 _y * vp ; 540 i( p = NULL ) 542 i(( t = `time ( NULL )) == -1) 544 *( p -> _aiv t ; 545 i(( vp = p -> _v = NULL ) 547 *( vp -> _aiv t ; 549 } } 555 $__db_o_t ( id , ags ) 556 id ; 557 u_t32_t ags ; 559 DB * dbp ; 560 t ; 561 _y * p ; 563 t = 0; 564 p = `g_b˒t ( id ); 565 i( p = NULL ) 566 ( DB_NOSERVER_ID ); 567 `DB_ASSERT ( p -> _vp , c-> _ty = CT_DB ); 568 i( __dbv_vbo && p -> _fcou != 1) 569 `tf ("Deref'ing dbp id %ld,efcount %d\n", 570 id , p -> _fcou ); 571 i(-- p -> _fcou != 0) 572 ( t ); 573 dbp = p -> _dbp ; 574 i( __dbv_vbo ) 575 `tf ("Closg dbid %ld\n", id ); 577 t = dbp -> `o (dbp, ags ); 578 i( p -> _dbdp . db ! NULL ) 579 `__os_ ( NULL , p -> _dbdp . db ); 580 i( p -> _dbdp . subdb ! NULL ) 581 `__os_ ( NULL , p -> _dbdp . subdb ); 582 `__dbd_p ( p ); 583 ( t ); 584 } } 590 $__dbc_o_t ( dbc_p ) 591 _y * dbc_p ; 593 DBC * dbc ; 594 t ; 595 _y * p ; 597 dbc = ( DBC *) dbc_p -> _yp ; 599 t = dbc -> `o (dbc); 604 i( dbc_p -> _ty & CT_JOINCUR ) 605 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 606 p = `LIST_NEXT (p, s )) { 611 i(( p -> _ty & CT_JOIN ) && 612 p -> _aiv =& dbc_p -> _aive ) { 613 p -> _ty &~ CT_JOIN ; 614 p -> _aiv = c-> _igp ; 615 `__dbv_aive ( p ); 618 `__dbr_p ( dbc_p ); 619 ( t ); 621 } } 627 $__v_o_t ( id , ags , f ) 628 id ; 629 u_t32_t ags ; 630 f ; 632 DB_ENV * dbv ; 633 t ; 634 _y * p , * dbp , * xtp ; 636 t = 0; 637 p = `g_b˒t ( id ); 638 i( p = NULL ) 639 ( DB_NOSERVER_ID ); 640 `DB_ASSERT ( p -> _vp , c-> _ty = CT_ENV ); 641 i( __dbv_vbo && p -> _fcou != 1) 642 `tf ("Deref'ingnv id %ld,efcount %d\n", 643 id , p -> _fcou ); 648 i(-- p -> _fcou !0 && ! f ) 649 ( t ); 650 dbv = p -> _vp ; 651 i( __dbv_vbo ) 652 `tf ("Closgnv id %ld\n", id ); 659 i( f ) 660 dbp = `LIST_FIRST (& __dbv_hd ); 661 dbp ! NULL ; db xtp ) { 662 xtp = `LIST_NEXT ( dbp , s ); 663 i( dbp -> _ty ! CT_DB ) 665 i( dbp -> _v ! p ) 671 `__db_o_t ( dbp -> _id , 0); 677 xtp = `LIST_FIRST (& __dbv_hd ); 679 t = dbv -> `o (dbv, ags ); 680 `__dbd_p ( p ); 681 ( t ); 682 } } 685 $add_home ( home ) 686 * home ; 688 home_y * hp , * hom ; 689 t ; 691 i(( t = `__os_mloc ( NULL , ( home_y ), & hp )) != 0) 692 ( t ); 693 i(( t = `__os_mloc ( NULL , ` ( home )+1, & hp ->home)) != 0) 694 ( t ); 695 `memy ( hp -> home , home, ` (home)+1); 696 hp -> d = home ; 697 hp -> sswd = NULL ; 702 hp -> me = `__db_h ( home ); 703 i( hp -> me ! NULL ) { 704 *( hp -> me ) = '\0'; 705 hp -> me ++; 707 hp -> me = home ; 708 *( hp -> me ) == '\0') { 709 hp -> me = `__db_h ( home ); 710 *( hp -> me ) = '\0'; 711 hp -> me ++; 717 hom = `LIST_FIRST (& __dbv_home ); hom ! NULL ; 718 hom = `LIST_NEXT (hom, s )) 719 i( `rcmp ( hom -> me , hp ->name) == 0) { 720 `tf ("Alreadydded homeame %s,t directory %s\n", 721 hp -> me , hom -> d ); 722 `__os_ ( NULL , hp -> home ); 723 `__os_ ( NULL , hp ); 726 `LIST_INSERT_HEAD (& __dbv_home , hp , s ); 727 i( __dbv_vbo ) 728 `tf ("Added hom% d %s\n", hp -> me , hp-> d ); 730 } } 733 $add_sswd ( sswd ) 734 * sswd ; 736 home_y * hp ; 743 hp = `LIST_FIRST (& __dbv_home ); 744 i( hp = NULL || hp-> sswd != NULL) 745 ( EINVAL ); 750 hp -> sswd =asswd; 752 } } 757 home_y * 758 $g_fuhome ( me ) 759 * me ; 761 home_y * hp ; 763 i( me = NULL ) 764 ( NULL ); 765 hp = `LIST_FIRST (& __dbv_home ); h! NULL ; 766 hp = `LIST_NEXT (hp, s )) 767 i( `rcmp ( me , hp ->name) == 0) 768 ( hp ); 769 ( NULL ); 770 } } 773 $v_cov ( ogme ) 774 * ogme ; 776 DB_ENV * dbv ; 777 home_y * hp ; 778 u_t32_t ags ; 779 exv , t ; 781 hp = `LIST_FIRST (& __dbv_home ); h! NULL ; 782 hp = `LIST_NEXT (hp, s )) { 783 exv = 0; 784 i(( t = `db_v_ (& dbv , 0)) != 0) { 785 `rtf ( dr , "%s: db_env_create: %s\n", 786 ogme , `db_ ( t )); 787 `ex ( EXIT_FAILURE ); 789 i( __dbv_vbo == 1) 790 () dbv -> `t_vbo (dbv, DB_VERB_RECOVERY , 1); 791 dbv -> `t_rfe (dbv, dr ); 792 dbv -> `t_fx (dbv, ogme ); 793 i( hp -> sswd ! NULL ) 794 () dbv -> `t_y (dbv, hp -> sswd , 795 DB_ENCRYPT_AES ); 801 i( __dbv_vbo ) 802 `tf ("Rugecovy o%s\n", hp -> home ); 803 ags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | 804 DB_INIT_TXN | DB_USE_ENVIRON | DB_RECOVER ; 805 i(( t = dbv -> `ݒ (dbv, hp -> home , ags , 0)) != 0) { 806 dbv -> `r (dbv, t , "DB_ENV->open"); 807 r ; 811 r : exv = 1; 813 i(( t = dbv -> `o (dbenv, 0)) != 0) { 814 exv = 1; 815 `rtf ( dr , "%s: dbenv->close: %s\n", 816 ogme , `db_ ( t )); 818 i( exv ) 819 ( exv ); 822 } } @../rpc_server/cxx/db_server_cxxproc.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"db_cxx.h " 13 ~"db_rv.h " 16 ~"dbc/db_rv_t.h " 17 ~"dbc_auto/c_rv_ext.h " 21 $__v_g_chesize_oc ( 22 u_t dbv_id , 23 __v_g_chesize_y * yp ) 25 DbEnv * dbv ; 26 _y * dbv_p ; 28 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 29 dbv = ( DbEnv *) dbv_p -> _yp ; 31 yp -> us = dbv -> `g_chesize (&yp-> gbys , 32 & yp -> bys , (*)&yp-> nche ); 33 } } 36 $__v_t_chesize_oc ( 37 u_t dbv_id , 38 u_t32_t gbys , 39 u_t32_t bys , 40 u_t32_t nche , 41 __v_t_chesize_y * yp ) 43 DbEnv * dbv ; 44 _y * dbv_p ; 45 t ; 47 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 48 dbv = ( DbEnv *) dbv_p -> _yp ; 50 t = dbv -> `t_chesize ( gbys , bys , nche ); 52 yp -> us = t ; 54 } } 57 $__v_cdsgroup_beg_oc ( u_t dbv_id , __v_cdsgroup_beg_y * yp ) 59 DbEnv * dbv ; 60 DbTxn * tx ; 61 _y * p , * dbv_p ; 62 t ; 64 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 65 dbv = ( DbEnv *) dbv_p -> _yp ; 67 p = `w__t (& yp -> us ); 68 i( p = NULL ) 71 t = dbv -> `cdsgroup_beg (& tx ); 72 i( t == 0) { 73 p -> _tx = tx ; 74 p -> _ty = CT_TXN ; 75 p -> _ = NULL ; 76 p -> _v = dbv_p ; 77 yp -> txnid_id = p -> _id ; 78 `__dbv_imeout ( p , dbv_p -> _timeout ); 79 `__dbv_aive ( p ); 81 `__dbr_p ( p ); 83 yp -> us = t ; 85 } } 88 $__v_o_oc ( 89 u_t dbv_id , 90 u_t32_t ags , 91 __v_o_y * yp ) 93 _y * dbv_p ; 95 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 96 yp -> us = `__v_o_t ( dbv_id , ags , 0); 98 } } 101 $__v__oc ( 102 u_t32_t timeout , 103 __v__y * yp ) 105 DbEnv * dbv ; 106 _y * p ; 108 p = `w__t (& yp -> us ); 109 i( p = NULL ) 112 dbv = w `DbEnv ( DB_CXX_NO_EXCEPTIONS ); 113 p -> _vp = dbv ; 114 p -> _ty = CT_ENV ; 115 p -> _ = NULL ; 116 p -> _v = ctp; 117 `__dbv_imeout ( p , timeout ); 118 `__dbv_aive ( p ); 119 yp -> v_id = p -> _id ; 121 yp -> us = 0; 123 } } 126 $__v_dbmove_oc ( 127 u_t dbv_id , 128 u_t tx_id , 129 * me , 130 * subdb , 131 u_t32_t ags , 132 __v_dbmove_y * yp ) 134 t ; 135 DbEnv * dbv ; 136 DbTxn * tx ; 137 _y * dbv_p , * tx_p ; 139 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 140 dbv = ( DbEnv *) dbv_p -> _yp ; 142 i( tx_id != 0) { 143 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 144 tx = ( DbTxn *) tx_p -> _yp ; 146 tx = NULL ; 148 t = dbv -> `dbmove ( tx , me , subdb , ags ); 150 yp -> us = t ; 152 } } 155 $__v_dbme_oc ( 156 u_t dbv_id , 157 u_t tx_id , 158 * me , 159 * subdb , 160 * wme , 161 u_t32_t ags , 162 __v_dbme_y * yp ) 164 t ; 165 DbEnv * dbv ; 166 DbTxn * tx ; 167 _y * dbv_p , * tx_p ; 169 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 170 dbv = ( DbEnv *) dbv_p -> _yp ; 172 i( tx_id != 0) { 173 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 174 tx = ( DbTxn *) tx_p -> _yp ; 176 tx = NULL ; 178 t = dbv -> `dbme ( tx , me , subdb , wme , ags ); 180 yp -> us = t ; 182 } } 185 $__v_g_y_ags_oc ( 186 u_t dbv_id , 187 __v_g_y_ags_y * yp ) 189 DbEnv * dbv ; 190 _y * dbv_p ; 192 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 193 dbv = ( DbEnv *) dbv_p -> _yp ; 195 yp -> us = dbv -> `g_y_ags (&yp-> ags ); 196 } } 199 $__v_t_y_oc ( 200 u_t dbv_id , 201 * sswd , 202 u_t32_t ags , 203 __v_t_y_y * yp ) 205 DbEnv * dbv ; 206 _y * dbv_p ; 207 t ; 209 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 210 dbv = ( DbEnv *) dbv_p -> _yp ; 212 t = dbv -> `t_y ( sswd , ags ); 214 yp -> us = t ; 216 } } 219 $__v_g_ags_oc ( 220 u_t dbv_id , 221 __v_g_ags_y * yp ) 223 DbEnv * dbv ; 224 _y * dbv_p ; 226 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 227 dbv = ( DbEnv *) dbv_p -> _yp ; 229 yp -> us = dbv -> `g_ags (&yp-> ags ); 230 } } 233 $__v_t_ags_oc ( 234 u_t dbv_id , 235 u_t32_t ags , 236 u_t32_t off , 237 __v_t_ags_y * yp ) 239 DbEnv * dbv ; 240 _y * dbv_p ; 241 t ; 243 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 244 dbv = ( DbEnv *) dbv_p -> _yp ; 246 t = dbv -> `t_ags ( ags , off ); 247 i( off ) 248 dbv_p -> _vdp . ags = ags ; 250 dbv_p -> _vdp . offags = ags ; 252 yp -> us = t ; 254 } } 257 $__v_g_home_oc ( 258 u_t dbv_id , 259 __v_g_home_y * yp ) 261 DbEnv * dbv ; 262 _y * dbv_p ; 264 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 265 dbv = ( DbEnv *) dbv_p -> _yp ; 267 yp -> us = dbv -> `g_home ((cڡ **)&yp-> home ); 268 } } 271 $__v_g_ݒ_ags_oc ( 272 u_t dbv_id , 273 __v_g_ݒ_ags_y * yp ) 275 DbEnv * dbv ; 276 _y * dbv_p ; 278 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 279 dbv = ( DbEnv *) dbv_p -> _yp ; 281 yp -> us = dbv -> `g_ݒ_ags (&yp-> ags ); 282 } } 285 $__v_ݒ_oc ( 286 u_t dbv_id , 287 * home , 288 u_t32_t ags , 289 u_t32_t mode , 290 __v_ݒ_y * yp ) 292 DbEnv * dbv ; 293 _y * dbv_p , * w_p ; 294 u_t32_t wags , sheags ; 295 t ; 296 home_y * fuhome ; 298 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 299 dbv = ( DbEnv *) dbv_p -> _yp ; 300 fuhome = `g_fuhome ( home ); 301 i( fuhome = NULL ) { 302 t = DB_NOSERVER_HOME ; 303 out ; 310 i(( ags & DB_INIT_LOCK ) && 311 ( t = dbv -> `t_lk_de ( DB_LOCK_DEFAULT )) != 0) 312 out ; 314 i( __dbv_vbo ) { 315 dbv -> `t_rfe ( dr ); 316 dbv -> `t_fx ( fuhome -> home ); 318 dbv -> `t_rfe ( NULL ); 323 wags = ( ags & ~ DB_SERVER_FLAGMASK ); 324 sheags = ( wags & DB_SERVER_ENVFLAGS ); 328 yp -> v_id = dbv_id ; 329 i(( w_p = `__dbv_shnv ( dbv_p , fuhome , sheags )) 330 ! NULL ) { 334 i( __dbv_vbo ) 335 `tf ("Shgnv ID %ld\n", w_p -> _id ); 336 yp -> v_id = w_p -> _id ; 337 t = `__v_o_t ( dbv_id , 0, 0); 339 t = dbv -> `ݒ ( fuhome -> home , wags , mode ); 340 dbv_p -> _vdp . home = fuhome ; 341 dbv_p -> _vdp . vags = sheags ; 343 out : yp -> us = t ; 345 } } 348 $__v_move_oc ( 349 u_t dbv_id , 350 * home , 351 u_t32_t ags , 352 __v_move_y * yp ) 354 DbEnv * dbv ; 355 _y * dbv_p ; 356 t ; 357 home_y * fuhome ; 359 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 360 dbv = ( DbEnv *) dbv_p -> _yp ; 361 fuhome = `g_fuhome ( home ); 362 i( fuhome = NULL ) { 363 yp -> us = DB_NOSERVER_HOME ; 367 t = dbv -> `move ( fuhome -> home , ags ); 368 `__dbd_p ( dbv_p ); 369 yp -> us = t ; 371 } } 374 $__txn_abt_oc ( 375 u_t tx_id , 376 __txn_abt_y * yp ) 378 DbTxn * tx ; 379 _y * tx_p ; 380 t ; 382 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 383 tx = ( DbTxn *) tx_p -> _yp ; 385 t = tx -> `abt (); 386 `__dbd_p ( tx_p ); 387 yp -> us = t ; 389 } } 392 $__v_txn_beg_oc ( 393 u_t dbv_id , 394 u_t _id , 395 u_t32_t ags , 396 __v_txn_beg_y * yp ) 398 DbEnv * dbv ; 399 DbTxn * , * tx ; 400 _y * p , * dbv_p , * _p ; 401 t ; 403 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 404 dbv = ( DbEnv *) dbv_p -> _yp ; 405 _p = NULL ; 407 p = `w__t (& yp -> us ); 408 i( p = NULL ) 411 i( _id != 0) { 412 `ACTIVATE_CTP ( _p , _id , CT_TXN ); 413 = ( DbTxn *) _p -> _yp ; 414 p -> _aiv = _p ->ct_activep; 416 = NULL ; 418 t = dbv -> `txn_beg ( , & tx , ags | DB_TXN_NOWAIT ); 419 i( t == 0) { 420 p -> _tx = tx ; 421 p -> _ty = CT_TXN ; 422 p -> _ = _p ; 423 p -> _v = dbv_p ; 424 yp -> txnid_id = p -> _id ; 425 `__dbv_imeout ( p , dbv_p -> _timeout ); 426 `__dbv_aive ( p ); 428 `__dbr_p ( p ); 430 yp -> us = t ; 432 } } 435 $__txn_comm_oc ( 436 u_t tx_id , 437 u_t32_t ags , 438 __txn_comm_y * yp ) 440 DbTxn * tx ; 441 _y * tx_p ; 442 t ; 444 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 445 tx = ( DbTxn *) tx_p -> _yp ; 447 t = tx -> `comm ( ags ); 448 `__dbd_p ( tx_p ); 450 yp -> us = t ; 452 } } 455 $__txn_disrd_oc ( 456 u_t tx_id , 457 u_t32_t ags , 458 __txn_disrd_y * yp ) 460 DbTxn * tx ; 461 _y * tx_p ; 462 t ; 464 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 465 tx = ( DbTxn *) tx_p -> _yp ; 467 t = tx -> `disrd ( ags ); 468 `__dbd_p ( tx_p ); 470 yp -> us = t ; 472 } } 475 $__txn_e_oc ( 476 u_t tx_id , 477 u_t8_t * gid , 478 __txn_e_y * yp ) 480 DbTxn * tx ; 481 _y * tx_p ; 482 t ; 484 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 485 tx = ( DbTxn *) tx_p -> _yp ; 487 t = tx -> `e ( gid ); 488 yp -> us = t ; 490 } } 493 $__v_txn_cov_oc ( 494 u_t dbv_id , 495 u_t32_t cou , 496 u_t32_t ags , 497 __v_txn_cov_y * yp , 498 * p ) 500 DbEnv * dbv ; 501 DbPi * db , * p ; 502 _y * dbv_p , * p ; 503 ri , i , tcou ; 504 u_t32_t * txnidp ; 505 t ; 506 * gid ; 508 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 509 dbv = ( DbEnv *) dbv_p -> _yp ; 510 * p = 0; 512 i(( t = `__os_mloc ( 513 dbv -> `g_DB_ENV (), cou * ( DbPi ), & db )) != 0) 514 out ; 515 i(( t = dbv -> `txn_cov ( db , cou , & tcou , ags )) != 0) 516 out ; 520 yp -> tcou =etcount; 521 i( tcou == 0) { 522 yp -> txn . txn_v = NULL ; 523 yp -> txn . txn_n = 0; 524 yp -> gid . gid_v = NULL ; 525 yp -> gid . gid_n = 0; 532 i(( t = `__os_oc ( dbv -> `g_DB_ENV (), tcou , ( u_t32_t ), 533 & yp -> txn . txn_v )) != 0) 534 out ; 535 yp -> txn . txn_n = tcou * ( u_t32_t ); 536 i(( t = `__os_oc ( dbv -> `g_DB_ENV (), tcou , DB_XIDDATASIZE , 537 & yp -> gid . gid_v )) != 0) { 538 `__os_ ( dbv -> `g_DB_ENV (), yp -> txn . txn_v ); 539 out ; 541 yp -> gid . gid_n = tcou * DB_XIDDATASIZE ; 548 i = 0; 549 p = db ; 550 gid = yp ->gid. gid_v ; 551 txnidp = yp -> txn . txn_v ; 552 i ++ < tcou ) { 553 p = `w__t (& t ); 554 i( t != 0) { 555 i --; 556 out2 ; 558 p -> _tx = p -> txn ; 559 p -> _ty = CT_TXN ; 560 p -> _ = NULL ; 561 p -> _v = dbv_p ; 562 `__dbv_imeout ( p , dbv_p -> _timeout ); 563 `__dbv_aive ( p ); 565 * txnidp = p -> _id ; 566 `memy ( gid , p ->gid, DB_XIDDATASIZE ); 568 p ++; 569 txnidp ++; 570 gid + DB_XIDDATASIZE ; 576 * p = 1; 577 out : 578 i( db ! NULL ) 579 `__os_ ( dbv -> `g_DB_ENV (), db ); 580 yp -> us = t ; 582 out2 : 587 txnidp = yp -> txn . txn_v , ri = 0; 588 ri < i ;i++, txnidp ++) { 589 p = `g_b˒t (* txnidp ); 590 `__dbr_p ( p ); 592 `__os_ ( dbv -> `g_DB_ENV (), yp -> txn . txn_v ); 593 `__os_ ( dbv -> `g_DB_ENV (), yp -> gid . gid_v ); 594 `__os_ ( dbv -> `g_DB_ENV (), db ); 595 yp -> us = t ; 597 } } 600 $__db_assoc_oc ( 601 u_t dbp_id , 602 u_t tx_id , 603 u_t sdbp_id , 604 u_t32_t ags , 605 __db_assoc_y * yp ) 607 Db * dbp , * sdbp ; 608 DbTxn * tx ; 609 _y * dbp_p , * sdbp_p , * tx_p ; 610 t ; 612 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 613 dbp = ( Db *) dbp_p -> _yp ; 614 `ACTIVATE_CTP ( sdbp_p , sdbp_id , CT_DB ); 615 sdbp = ( Db *) sdbp_p -> _yp ; 616 i( tx_id != 0) { 617 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 618 tx = ( DbTxn *) tx_p -> _yp ; 620 tx = NULL ; 628 i( `LF_ISSET ( DB_RPC2ND_MASK | DB_CREATE )) 629 t = EINVAL ; 631 t = dbp -> `assoc ( tx , sdbp , NULL , ags ); 633 yp -> us = t ; 635 } } 638 $__db_g_bt_mkey_oc ( 639 u_t dbp_id , 640 __db_g_bt_mkey_y * yp ) 642 Db * dbp ; 643 _y * dbp_p ; 645 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 646 dbp = ( Db *) dbp_p -> _yp ; 648 yp -> us = dbp -> `g_bt_mkey (&yp-> mkey ); 649 } } 652 $__db_t_bt_mkey_oc ( 653 u_t dbp_id , 654 u_t32_t mkey , 655 __db_t_bt_mkey_y * yp ) 657 Db * dbp ; 658 _y * dbp_p ; 659 t ; 661 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 662 dbp = ( Db *) dbp_p -> _yp ; 664 t = dbp -> `t_bt_mkey ( mkey ); 666 yp -> us = t ; 668 } } 671 $__db_o_oc ( 672 u_t dbp_id , 673 u_t32_t ags , 674 __db_o_y * yp ) 676 _y * dbp_p ; 678 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 679 yp -> us = `__db_o_t ( dbp_id , ags ); 681 } } 684 $__db__oc ( 685 u_t dbv_id , 686 u_t32_t ags , 687 __db__y * yp ) 689 Db * dbp ; 690 DbEnv * dbv ; 691 _y * dbv_p , * dbp_p ; 693 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 694 dbv = ( DbEnv *) dbv_p -> _yp ; 696 dbp_p = `w__t (& yp -> us ); 697 i( dbp_p = NULL ) 703 `DB_ASSERT ( NULL , dbv != NULL); 704 dbp = w `Db ( dbv , ags ); 705 dbp_p -> _dbp = dbp ; 706 dbp_p -> _ty = CT_DB ; 707 dbp_p -> _ = dbv_p ; 708 dbp_p -> _v = dbv_p ; 709 yp -> db_id = dbp_p -> _id ; 710 yp -> us = 0; 712 } } 715 $__db_d_oc ( 716 u_t dbp_id , 717 u_t tx_id , 718 u_t32_t keydn , 719 u_t32_t keydoff , 720 u_t32_t keyun , 721 u_t32_t keyags , 722 * keyda , 723 u_t32_t keysize , 724 u_t32_t ags , 725 __db_d_y * yp ) 727 Db * dbp ; 728 DbTxn * tx ; 729 _y * dbp_p , * tx_p ; 730 t ; 732 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 733 dbp = ( Db *) dbp_p -> _yp ; 734 i( tx_id != 0) { 735 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 736 tx = ( DbTxn *) tx_p -> _yp ; 738 tx = NULL ; 741 Dbt `key ( keyda , keysize ); 742 key . `t_dn ( keydn ); 743 key . `t_un ( keyun ); 744 key . `t_doff ( keydoff ); 745 key . `t_ags ( keyags ); 747 t = dbp -> `d ( tx , & key , ags ); 749 yp -> us = t ; 751 } } 754 $__db_g_y_ags_oc ( 755 u_t dbp_id , 756 __db_g_y_ags_y * yp ) 758 Db * dbp ; 759 _y * dbp_p ; 761 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 762 dbp = ( Db *) dbp_p -> _yp ; 764 yp -> us = dbp -> `g_y_ags (&yp-> ags ); 765 } } 768 $__db_t_y_oc ( 769 u_t dbp_id , 770 * sswd , 771 u_t32_t ags , 772 __db_t_y_y * yp ) 774 Db * dbp ; 775 _y * dbp_p ; 776 t ; 778 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 779 dbp = ( Db *) dbp_p -> _yp ; 781 t = dbp -> `t_y ( sswd , ags ); 782 yp -> us = t ; 784 } } 787 $__db_g_q_exsize_oc ( 788 u_t dbp_id , 789 __db_g_q_exsize_y * yp ) 791 Db * dbp ; 792 _y * dbp_p ; 794 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 795 dbp = ( Db *) dbp_p -> _yp ; 797 yp -> us = dbp -> `g_q_exsize (&yp-> exsize ); 798 } } 801 $__db_t_q_exsize_oc ( 802 u_t dbp_id , 803 u_t32_t exsize , 804 __db_t_q_exsize_y * yp ) 806 Db * dbp ; 807 _y * dbp_p ; 808 t ; 810 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 811 dbp = ( Db *) dbp_p -> _yp ; 813 t = dbp -> `t_q_exsize ( exsize ); 815 yp -> us = t ; 817 } } 820 $__db_g_ags_oc ( 821 u_t dbp_id , 822 __db_g_ags_y * yp ) 824 Db * dbp ; 825 _y * dbp_p ; 827 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 828 dbp = ( Db *) dbp_p -> _yp ; 830 yp -> us = dbp -> `g_ags (&yp-> ags ); 831 } } 834 $__db_t_ags_oc ( 835 u_t dbp_id , 836 u_t32_t ags , 837 __db_t_ags_y * yp ) 839 Db * dbp ; 840 _y * dbp_p ; 841 t ; 843 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 844 dbp = ( Db *) dbp_p -> _yp ; 846 t = dbp -> `t_ags ( ags ); 847 dbp_p -> _dbdp . tags = ags ; 849 yp -> us = t ; 851 } } 854 $__db_g_oc ( 855 u_t dbp_id , 856 u_t tx_id , 857 u_t32_t keydn , 858 u_t32_t keydoff , 859 u_t32_t keyun , 860 u_t32_t keyags , 861 * keyda , 862 u_t32_t keysize , 863 u_t32_t dadn , 864 u_t32_t dadoff , 865 u_t32_t daun , 866 u_t32_t daags , 867 * dada , 868 u_t32_t dasize , 869 u_t32_t ags , 870 __db_g_y * yp , 871 * p ) 873 Db * dbp ; 874 DbTxn * tx ; 875 _y * dbp_p , * tx_p ; 876 t ; 877 * tmpda ; 879 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 880 dbp = ( Db *) dbp_p -> _yp ; 881 i( tx_id != 0) { 882 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 883 tx = ( DbTxn *) tx_p -> _yp ; 885 tx = NULL ; 887 yp -> keyda . keyda_v = NULL ; 888 yp -> dada . dada_v = NULL ; 889 * p = 0; 892 Dbt `key ( keyda , keysize ); 893 key . `t_dn ( keydn ); 894 key . `t_un ( keyun ); 895 key . `t_doff ( keydoff ); 899 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 901 Dbt `da ( dada , dasize ); 902 da . `t_dn ( dadn ); 903 da . `t_un ( daun ); 904 da . `t_doff ( dadoff ); 908 daags & DB_DBT_PARTIAL ; 909 i( ags & DB_MULTIPLE ) { 910 i( da . `g_da () == 0) { 911 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 912 daun , & tmpda ); 913 i( t != 0) 914 r ; 915 da . `t_da ( tmpda ); 917 daags | DB_DBT_USERMEM ; 919 daags | DB_DBT_MALLOC ; 920 da . `t_ags ( daags ); 923 t = dbp -> `g ( tx , & key , & da , ags ); 927 i( t == 0) { 936 * p = 1; 940 i( key . `g_da (= keyda ) { 941 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 942 key . `g_size (), & yp -> keyda . keyda_v ); 943 i( t != 0) 944 r ; 945 `memy ( yp -> keyda . keyda_v , 946 key . `g_da (), key. `g_size ()); 948 yp -> keyda . keyda_v = (*) key . `g_da (); 950 yp -> keyda . keyda_n = key . `g_size (); 955 i( da . `g_da (= dada ) { 956 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 957 da . `g_size (), & yp -> dada . dada_v ); 958 i( t != 0) 959 r ; 960 `memy ( yp -> dada . dada_v , da . `g_da (), 961 da . `g_size ()); 963 yp -> dada . dada_v = (*) da . `g_da (); 964 yp -> dada . dada_n = da . `g_size (); 966 r : `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 967 key . `g_da (), keyda ); 968 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 969 da . `g_da (), dada ); 970 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 971 yp -> keyda . keyda_v , key . `g_da ()); 972 yp -> keyda . keyda_v = NULL ; 973 yp -> keyda . keyda_n = 0; 974 yp -> dada . dada_v = NULL ; 975 yp -> dada . dada_n = 0; 976 * p = 0; 978 yp -> us = t ; 980 } } 983 $__db_g_h_f_oc ( 984 u_t dbp_id , 985 __db_g_h_f_y * yp ) 987 Db * dbp ; 988 _y * dbp_p ; 990 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 991 dbp = ( Db *) dbp_p -> _yp ; 993 yp -> us = dbp -> `g_h_f (&yp-> f ); 994 } } 997 $__db_t_h_f_oc ( 998 u_t dbp_id , 999 u_t32_t f , 1000 __db_t_h_f_y * yp ) 1002 Db * dbp ; 1003 _y * dbp_p ; 1004 t ; 1006 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1007 dbp = ( Db *) dbp_p -> _yp ; 1009 t = dbp -> `t_h_f ( f ); 1011 yp -> us = t ; 1013 } } 1016 $__db_g_h_m_oc ( 1017 u_t dbp_id , 1018 __db_g_h_m_y * yp ) 1020 Db * dbp ; 1021 _y * dbp_p ; 1023 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1024 dbp = ( Db *) dbp_p -> _yp ; 1026 yp -> us = dbp -> `g_h_m (&yp-> m ); 1027 } } 1030 $__db_t_h_m_oc ( 1031 u_t dbp_id , 1032 u_t32_t m , 1033 __db_t_h_m_y * yp ) 1035 Db * dbp ; 1036 _y * dbp_p ; 1037 t ; 1039 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1040 dbp = ( Db *) dbp_p -> _yp ; 1042 t = dbp -> `t_h_m ( m ); 1044 yp -> us = t ; 1046 } } 1049 $__db_key_nge_oc ( 1050 u_t dbp_id , 1051 u_t tx_id , 1052 u_t32_t keydn , 1053 u_t32_t keydoff , 1054 u_t32_t keyun , 1055 u_t32_t keyags , 1056 * keyda , 1057 u_t32_t keysize , 1058 u_t32_t ags , 1059 __db_key_nge_y * yp ) 1061 Db * dbp ; 1062 DB_KEY_RANGE nge ; 1063 DbTxn * tx ; 1064 _y * dbp_p , * tx_p ; 1065 t ; 1067 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1068 dbp = ( Db *) dbp_p -> _yp ; 1069 i( tx_id != 0) { 1070 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1071 tx = ( DbTxn *) tx_p -> _yp ; 1073 tx = NULL ; 1076 Dbt `key ( keyda , keysize ); 1077 key . `t_dn ( keydn ); 1078 key . `t_un ( keyun ); 1079 key . `t_doff ( keydoff ); 1080 key . `t_ags ( keyags ); 1082 t = dbp -> `key_nge ( tx , & key , & nge , ags ); 1084 yp -> us = t ; 1085 yp -> ss = nge .less; 1086 yp -> equ = nge .equal; 1087 yp -> g = nge .greater; 1089 } } 1092 $__db_g_ld_oc ( 1093 u_t dbp_id , 1094 __db_g_ld_y * yp ) 1096 Db * dbp ; 1097 _y * dbp_p ; 1099 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1100 dbp = ( Db *) dbp_p -> _yp ; 1102 yp -> us = dbp -> `g_ld ((*)&yp-> ld ); 1103 } } 1106 $__db_t_ld_oc ( 1107 u_t dbp_id , 1108 u_t32_t ld , 1109 __db_t_ld_y * yp ) 1111 Db * dbp ; 1112 _y * dbp_p ; 1113 t ; 1115 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1116 dbp = ( Db *) dbp_p -> _yp ; 1118 t = dbp -> `t_ld ( ld ); 1120 yp -> us = t ; 1122 } } 1125 $__db_g_dbme_oc ( 1126 u_t dbp_id , 1127 __db_g_dbme_y * yp ) 1129 Db * dbp ; 1130 _y * dbp_p ; 1132 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1133 dbp = ( Db *) dbp_p -> _yp ; 1135 yp -> us = dbp -> `g_dbme ( 1136 (cڡ **)& yp -> fame , (cڡ **)&yp-> dbme ); 1137 } } 1140 $__db_g_ݒ_ags_oc ( 1141 u_t dbp_id , 1142 __db_g_ݒ_ags_y * yp ) 1144 Db * dbp ; 1145 _y * dbp_p ; 1147 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1148 dbp = ( Db *) dbp_p -> _yp ; 1150 yp -> us = dbp -> `g_ݒ_ags (&yp-> ags ); 1151 } } 1154 $__db_ݒ_oc ( 1155 u_t dbp_id , 1156 u_t tx_id , 1157 * me , 1158 * subdb , 1159 u_t32_t ty , 1160 u_t32_t ags , 1161 u_t32_t mode , 1162 __db_ݒ_y * yp ) 1164 Db * dbp ; 1165 DbTxn * tx ; 1166 DBTYPE dbty ; 1167 _y * dbp_p , * w_p , * tx_p ; 1168 isswd , t ; 1170 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1171 dbp = ( Db *) dbp_p -> _yp ; 1172 i( tx_id != 0) { 1173 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1174 tx = ( DbTxn *) tx_p -> _yp ; 1176 tx = NULL ; 1178 yp -> db_id = dbp_id ; 1179 i(( w_p = `__dbv_shedb ( 1180 dbp_p , me , subdb , ( DBTYPE ) ty , ags )! NULL ) { 1184 i( __dbv_vbo ) 1185 `tf ("Shg db ID %ld\n", w_p -> _id ); 1186 yp -> db_id = w_p -> _id ; 1187 t = `__db_o_t ( dbp_id , 0); 1188 out ; 1190 t = dbp -> `ݒ ( tx , me , subdb , ( DBTYPE ) ty , ags , mode ); 1191 i( t == 0) { 1192 () dbp -> `g_ty (& dbty ); 1193 yp -> ty = dbty ; 1200 () dbp -> `g_byswd (& isswd ); 1201 i( `__db_byd ( NULL , 1234) == 0) { 1202 i( isswd == 0) 1203 yp -> ld = 1234; 1205 yp -> ld = 4321; 1207 i( isswd == 0) 1208 yp -> ld = 4321; 1210 yp -> ld = 1234; 1212 dbp_p -> _dbdp . ty = dbty ; 1213 dbp_p -> _dbdp . dbags = `LF_ISSET ( DB_SERVER_DBFLAGS ); 1214 i( me = NULL ) 1215 dbp_p -> _dbdp . db = NULL ; 1216 i(( t = `__os_rdup ( dbp -> `g_DB ()-> dbv , me , 1217 & dbp_p -> _dbdp . db )) != 0) 1218 out ; 1219 i( subdb = NULL ) 1220 dbp_p -> _dbdp . subdb = NULL ; 1221 i(( t = `__os_rdup ( dbp -> `g_DB ()-> dbv , subdb , 1222 & dbp_p -> _dbdp . subdb )) != 0) 1223 out ; 1225 out : 1226 yp -> us = t ; 1228 } } 1231 $__db_g_gesize_oc ( 1232 u_t dbp_id , 1233 __db_g_gesize_y * yp ) 1235 Db * dbp ; 1236 _y * dbp_p ; 1238 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1239 dbp = ( Db *) dbp_p -> _yp ; 1241 yp -> us = dbp -> `g_gesize (&yp-> gesize ); 1242 } } 1245 $__db_t_gesize_oc ( 1246 u_t dbp_id , 1247 u_t32_t gesize , 1248 __db_t_gesize_y * yp ) 1250 Db * dbp ; 1251 _y * dbp_p ; 1252 t ; 1254 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1255 dbp = ( Db *) dbp_p -> _yp ; 1257 t = dbp -> `t_gesize ( gesize ); 1259 yp -> us = t ; 1261 } } 1264 $__db_g_iܙy_oc ( 1265 u_t dbp_id , 1266 __db_g_iܙy_y * yp ) 1268 Db * dbp ; 1269 _y * dbp_p ; 1271 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1272 dbp = ( Db *) dbp_p -> _yp ; 1274 yp -> us = 1275 dbp -> `g_iܙy (( DB_CACHE_PRIORITY *)& yp -> iܙy ); 1276 } } 1279 $__db_t_iܙy_oc ( 1280 u_t dbp_id , 1281 u_t32_t iܙy , 1282 __db_t_iܙy_y * yp ) 1284 Db * dbp ; 1285 _y * dbp_p ; 1286 t ; 1288 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1289 dbp = ( Db *) dbp_p -> _yp ; 1291 t = dbp -> `t_iܙy (( DB_CACHE_PRIORITY ) iܙy ); 1293 yp -> us = t ; 1295 } } 1298 $__db_pg_oc ( 1299 u_t dbp_id , 1300 u_t tx_id , 1301 u_t32_t skeydn , 1302 u_t32_t skeydoff , 1303 u_t32_t skeyun , 1304 u_t32_t skeyags , 1305 * skeyda , 1306 u_t32_t skeysize , 1307 u_t32_t pkeydn , 1308 u_t32_t pkeydoff , 1309 u_t32_t pkeyun , 1310 u_t32_t pkeyags , 1311 * pkeyda , 1312 u_t32_t pkeysize , 1313 u_t32_t dadn , 1314 u_t32_t dadoff , 1315 u_t32_t daun , 1316 u_t32_t daags , 1317 * dada , 1318 u_t32_t dasize , 1319 u_t32_t ags , 1320 __db_pg_y * yp , 1321 * p ) 1323 Db * dbp ; 1324 DbTxn * tx ; 1325 _y * dbp_p , * tx_p ; 1326 t ; 1328 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1329 dbp = ( Db *) dbp_p -> _yp ; 1330 i( tx_id != 0) { 1331 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1332 tx = ( DbTxn *) tx_p -> _yp ; 1334 tx = NULL ; 1336 yp -> skeyda . skeyda_v = NULL ; 1337 yp -> pkeyda . pkeyda_v = NULL ; 1338 yp -> dada . dada_v = NULL ; 1339 * p = 0; 1345 Dbt `skey ( skeyda , skeysize ); 1346 skey . `t_dn ( skeydn ); 1347 skey . `t_un ( skeyun ); 1348 skey . `t_doff ( skeydoff ); 1349 skey . `t_ags ( DB_DBT_MALLOC | ( skeyags & DB_DBT_PARTIAL )); 1351 Dbt `pkey ( pkeyda , pkeysize ); 1352 pkey . `t_dn ( pkeydn ); 1353 pkey . `t_un ( pkeyun ); 1354 pkey . `t_doff ( pkeydoff ); 1355 pkey . `t_ags ( DB_DBT_MALLOC | ( pkeyags & DB_DBT_PARTIAL )); 1357 Dbt `da ( dada , dasize ); 1358 da . `t_dn ( dadn ); 1359 da . `t_un ( daun ); 1360 da . `t_doff ( dadoff ); 1361 da . `t_ags ( DB_DBT_MALLOC | ( daags & DB_DBT_PARTIAL )); 1364 t = dbp -> `pg ( tx , & skey , & pkey , & da , ags ); 1368 i( t == 0) { 1377 * p = 1; 1381 i( skey . `g_da (= skeyda ) { 1382 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 1383 skey . `g_size (), & yp -> skeyda . skeyda_v ); 1384 i( t != 0) 1385 r ; 1386 `memy ( yp -> skeyda . skeyda_v , skey . `g_da (), 1387 skey . `g_size ()); 1389 yp -> skeyda . skeyda_v = (*) skey . `g_da (); 1391 yp -> skeyda . skeyda_n = skey . `g_size (); 1396 i( pkey . `g_da (= pkeyda ) { 1397 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 1398 pkey . `g_size (), & yp -> pkeyda . pkeyda_v ); 1399 i( t != 0) 1400 r ; 1401 `memy ( yp -> pkeyda . pkeyda_v , pkey . `g_da (), 1402 pkey . `g_size ()); 1404 yp -> pkeyda . pkeyda_v = (*) pkey . `g_da (); 1405 yp -> pkeyda . pkeyda_n = pkey . `g_size (); 1410 i( da . `g_da (= dada ) { 1411 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 1412 da . `g_size (), & yp -> dada . dada_v ); 1413 i( t != 0) 1414 r ; 1415 `memy ( yp -> dada . dada_v , da . `g_da (), 1416 da . `g_size ()); 1418 yp -> dada . dada_v = (*) da . `g_da (); 1419 yp -> dada . dada_n = da . `g_size (); 1421 r : `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1422 skey . `g_da (), skeyda ); 1423 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1424 pkey . `g_da (), pkeyda ); 1425 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1426 da . `g_da (), dada ); 1427 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1428 yp -> skeyda . skeyda_v , skey . `g_da ()); 1429 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1430 yp -> pkeyda . pkeyda_v , pkey . `g_da ()); 1431 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1432 yp -> dada . dada_v , da . `g_da ()); 1433 yp -> skeyda . skeyda_v = NULL ; 1434 yp -> skeyda . skeyda_n = 0; 1435 yp -> pkeyda . pkeyda_v = NULL ; 1436 yp -> pkeyda . pkeyda_n = 0; 1437 yp -> dada . dada_v = NULL ; 1438 yp -> dada . dada_n = 0; 1439 * p = 0; 1441 yp -> us = t ; 1443 } } 1446 $__db_put_oc ( 1447 u_t dbp_id , 1448 u_t tx_id , 1449 u_t32_t keydn , 1450 u_t32_t keydoff , 1451 u_t32_t keyun , 1452 u_t32_t keyags , 1453 * keyda , 1454 u_t32_t keysize , 1455 u_t32_t dadn , 1456 u_t32_t dadoff , 1457 u_t32_t daun , 1458 u_t32_t daags , 1459 * dada , 1460 u_t32_t dasize , 1461 u_t32_t ags , 1462 __db_put_y * yp , 1463 * p ) 1465 Db * dbp ; 1466 DbTxn * tx ; 1467 _y * dbp_p , * tx_p ; 1468 t ; 1470 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1471 dbp = ( Db *) dbp_p -> _yp ; 1472 i( tx_id != 0) { 1473 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1474 tx = ( DbTxn *) tx_p -> _yp ; 1476 tx = NULL ; 1478 yp -> keyda . keyda_v = NULL ; 1479 * p = 0; 1482 Dbt `key ( keyda , keysize ); 1483 key . `t_dn ( keydn ); 1484 key . `t_un ( keyun ); 1485 key . `t_doff ( keydoff ); 1486 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 1488 Dbt `da ( dada , dasize ); 1489 da . `t_dn ( dadn ); 1490 da . `t_un ( daun ); 1491 da . `t_doff ( dadoff ); 1492 da . `t_ags ( daags ); 1495 t = dbp -> `put ( tx , & key , & da , ags ); 1500 i( t =0 && ( ags = DB_APPEND )) { 1509 * p = 1; 1513 i( key . `g_da (= keyda ) { 1514 t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 1515 key . `g_size (), & yp -> keyda . keyda_v ); 1516 i( t != 0) 1517 r ; 1518 `memy ( yp -> keyda . keyda_v , 1519 key . `g_da (), key. `g_size ()); 1521 yp -> keyda . keyda_v = (*) key . `g_da (); 1523 yp -> keyda . keyda_n = key . `g_size (); 1525 r : `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1526 key . `g_da (), keyda ); 1527 `FREE_IF_CHANGED ( dbp -> `g_DB ()-> dbv , 1528 yp -> keyda . keyda_v , key . `g_da ()); 1529 yp -> keyda . keyda_v = NULL ; 1530 yp -> keyda . keyda_n = 0; 1531 * p = 0; 1533 yp -> us = t ; 1535 } } 1538 $__db_g__dim_oc ( 1539 u_t dbp_id , 1540 __db_g__dim_y * yp ) 1542 Db * dbp ; 1543 _y * dbp_p ; 1545 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1546 dbp = ( Db *) dbp_p -> _yp ; 1548 yp -> us = dbp -> `g__dim ((*)&yp-> dim ); 1549 } } 1552 $__db_t__dim_oc ( 1553 u_t dbp_id , 1554 u_t32_t dim , 1555 __db_t__dim_y * yp ) 1557 Db * dbp ; 1558 _y * dbp_p ; 1559 t ; 1561 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1562 dbp = ( Db *) dbp_p -> _yp ; 1564 t = dbp -> `t__dim ( dim ); 1566 yp -> us = t ; 1568 } } 1571 $__db_g__n_oc ( 1572 u_t dbp_id , 1573 __db_g__n_y * yp ) 1575 Db * dbp ; 1576 _y * dbp_p ; 1578 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1579 dbp = ( Db *) dbp_p -> _yp ; 1581 yp -> us = dbp -> `g__n (&yp-> n ); 1582 } } 1585 $__db_t__n_oc ( 1586 u_t dbp_id , 1587 u_t32_t n , 1588 __db_t__n_y * yp ) 1590 Db * dbp ; 1591 _y * dbp_p ; 1592 t ; 1594 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1595 dbp = ( Db *) dbp_p -> _yp ; 1597 t = dbp -> `t__n ( n ); 1599 yp -> us = t ; 1601 } } 1604 $__db_g__d_oc ( 1605 u_t dbp_id , 1606 __db_g__d_y * yp ) 1608 Db * dbp ; 1609 _y * dbp_p ; 1611 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1612 dbp = ( Db *) dbp_p -> _yp ; 1614 yp -> us = dbp -> `g__d ((*)&yp-> d ); 1615 } } 1618 $__db_t__d_oc ( 1619 u_t dbp_id , 1620 u_t32_t d , 1621 __db_t__d_y * yp ) 1623 Db * dbp ; 1624 _y * dbp_p ; 1625 t ; 1627 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1628 dbp = ( Db *) dbp_p -> _yp ; 1630 t = dbp -> `t__d ( d ); 1632 yp -> us = t ; 1634 } } 1637 $__db_move_oc ( 1638 u_t dbp_id , 1639 * me , 1640 * subdb , 1641 u_t32_t ags , 1642 __db_move_y * yp ) 1644 Db * dbp ; 1645 _y * dbp_p ; 1646 t ; 1648 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1649 dbp = ( Db *) dbp_p -> _yp ; 1651 t = dbp -> `move ( me , subdb , ags ); 1652 `__dbd_p ( dbp_p ); 1654 yp -> us = t ; 1656 } } 1659 $__db_me_oc ( 1660 u_t dbp_id , 1661 * me , 1662 * subdb , 1663 * wme , 1664 u_t32_t ags , 1665 __db_me_y * yp ) 1667 Db * dbp ; 1668 _y * dbp_p ; 1669 t ; 1671 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1672 dbp = ( Db *) dbp_p -> _yp ; 1674 t = dbp -> `me ( me , subdb , wme , ags ); 1675 `__dbd_p ( dbp_p ); 1677 yp -> us = t ; 1679 } } 1682 $__db__oc ( 1683 u_t dbp_id , 1684 u_t tx_id , 1685 u_t32_t ags , 1686 __db__y * yp , 1687 * p ) 1689 Db * dbp ; 1690 DbTxn * tx ; 1691 DBTYPE ty ; 1692 _y * dbp_p , * tx_p ; 1693 u_t32_t * q , * p , * t ; 1694 i , n , t ; 1695 * ; 1697 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1698 dbp = ( Db *) dbp_p -> _yp ; 1699 i( tx_id != 0) { 1700 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1701 tx = ( DbTxn *) tx_p -> _yp ; 1703 tx = NULL ; 1705 t = dbp -> ` ( tx , & , ags ); 1706 yp -> us = t ; 1707 i( t != 0) 1718 () dbp -> `g_ty (& ty ); 1719 i( ty = DB_HASH ) 1720 n = ( DB_HASH_STAT ); 1721 i( ty = DB_QUEUE ) 1722 n = ( DB_QUEUE_STAT ); 1724 n = ( DB_BTREE_STAT ); 1725 yp -> s . s_n = n / ( u_t32_t ); 1727 i(( t = `__os_umloc ( dbp -> `g_DB ()-> dbv , 1728 n * yp -> s . s_n , & t )) != 0) 1729 out ; 1730 i = 0, q = t , p = ( u_t32_t *) ; i < n ; 1731 i ++, q ++, p ++) 1732 * q = * p ; 1733 yp -> s . s_v = t ; 1734 `__os_u ( dbp -> `g_DB ()-> dbv , ); 1735 i( t == 0) 1736 * p = 1; 1737 out : 1738 yp -> us = t ; 1740 } } 1743 $__db_sync_oc ( 1744 u_t dbp_id , 1745 u_t32_t ags , 1746 __db_sync_y * yp ) 1748 Db * dbp ; 1749 _y * dbp_p ; 1750 t ; 1752 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1753 dbp = ( Db *) dbp_p -> _yp ; 1755 t = dbp -> `sync ( ags ); 1757 yp -> us = t ; 1759 } } 1762 $__db_un_oc ( 1763 u_t dbp_id , 1764 u_t tx_id , 1765 u_t32_t ags , 1766 __db_un_y * yp ) 1768 Db * dbp ; 1769 DbTxn * tx ; 1770 _y * dbp_p , * tx_p ; 1771 u_t32_t cou ; 1772 t ; 1774 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1775 dbp = ( Db *) dbp_p -> _yp ; 1776 i( tx_id != 0) { 1777 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1778 tx = ( DbTxn *) tx_p -> _yp ; 1780 tx = NULL ; 1782 t = dbp -> `un ( tx , & cou , ags ); 1783 yp -> us = t ; 1784 i( t == 0) 1785 yp -> cou = count; 1787 } } 1790 $__db_curs_oc ( 1791 u_t dbp_id , 1792 u_t tx_id , 1793 u_t32_t ags , 1794 __db_curs_y * yp ) 1796 Db * dbp ; 1797 Dbc * dbc ; 1798 DbTxn * tx ; 1799 _y * dbc_p , * v_p , * dbp_p , * tx_p ; 1800 t ; 1802 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1803 dbp = ( Db *) dbp_p -> _yp ; 1804 dbc_p = `w__t (& yp -> us ); 1805 i( dbc_p = NULL ) 1808 i( tx_id != 0) { 1809 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1810 tx = ( DbTxn *) tx_p -> _yp ; 1811 dbc_p -> _aiv = tx_p ->ct_activep; 1813 tx = NULL ; 1815 i(( t = dbp -> `curs ( tx , & dbc , ags )) == 0) { 1816 dbc_p -> _dbc = dbc ; 1817 dbc_p -> _ty = CT_CURSOR ; 1818 dbc_p -> _ = dbp_p ; 1819 v_p = dbp_p -> _v ; 1820 dbc_p -> _v = v_p ; 1821 `__dbv_imeout ( dbc_p , v_p -> _timeout ); 1822 `__dbv_aive ( dbc_p ); 1823 yp -> dbcid_id = dbc_p -> _id ; 1825 `__dbr_p ( dbc_p ); 1827 yp -> us = t ; 1829 } } 1832 $__db_jo_oc ( 1833 u_t dbp_id , 1834 u_t32_t * curs , 1835 u_t32_t cur , 1836 u_t32_t ags , 1837 __db_jo_y * yp ) 1839 Db * dbp ; 1840 Dbc ** jcurs , ** c ; 1841 Dbc * dbc ; 1842 _y * dbc_p , * p , * dbp_p ; 1843 size_t size ; 1844 u_t32_t * , i ; 1845 t ; 1847 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1848 dbp = ( Db *) dbp_p -> _yp ; 1850 dbc_p = `w__t (& yp -> us ); 1851 i( dbc_p = NULL ) 1854 size = ( cur + 1* ( Dbc *); 1855 i(( t = `__os_oc ( dbp -> `g_DB ()-> dbv , 1856 cur + 1, ( Dbc *), & jcurs )) != 0) { 1857 yp -> us = t ; 1858 `__dbr_p ( dbc_p ); 1866 p = `g_b˒t (* curs ); 1867 `DB_ASSERT ( dbp -> `g_DB ()-> dbv , p -> _ty = CT_CURSOR ); 1872 i( p -> _aiv !&p-> _aive ) 1873 dbc_p -> _aiv = p ->ct_activep; 1874 i = 0, = curs , c = jcurs ; i < cur ; i++, cl++, c++) { 1875 p = `g_b˒t (* ); 1876 i( p = NULL ) { 1877 yp -> us = DB_NOSERVER_ID ; 1878 out ; 1890 `DB_ASSERT ( dbp -> `g_DB ()-> dbv , p -> _ty = CT_CURSOR ); 1891 p -> _ty | CT_JOIN ; 1892 p -> _igp = c-> _aiv ; 1900 p -> _aiv = & dbc_p -> _aive ; 1901 * c = p -> _dbc ; 1903 * c = NULL ; 1904 i(( t = dbp -> `jo ( jcurs , & dbc , ags )) == 0) { 1905 dbc_p -> _dbc = dbc ; 1906 dbc_p -> _ty = ( CT_JOINCUR | CT_CURSOR ); 1907 dbc_p -> _ = dbp_p ; 1908 dbc_p -> _v = dbp_p ->ct_envparent; 1909 `__dbv_imeout ( dbc_p , dbp_p -> _v -> _timeout ); 1910 `__dbv_aive ( dbc_p ); 1911 yp -> dbcid_id = dbc_p -> _id ; 1913 `__dbr_p ( dbc_p ); 1917 = curs ; *cl != 0; cl++) { 1918 p = `g_b˒t (* ); 1919 p -> _ty = CT_CURSOR ; 1920 p -> _aiv = c-> _igp ; 1924 yp -> us = t ; 1925 out : 1926 `__os_ ( dbp -> `g_DB ()-> dbv , jcurs ); 1928 } } 1931 $__dbc_o_oc ( 1932 u_t dbc_id , 1933 __dbc_o_y * yp ) 1935 _y * dbc_p ; 1937 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 1938 yp -> us = `__dbc_o_t ( dbc_p ); 1940 } } 1943 $__dbc_cou_oc ( 1944 u_t dbc_id , 1945 u_t32_t ags , 1946 __dbc_cou_y * yp ) 1948 Dbc * dbc ; 1949 _y * dbc_p ; 1950 db_o_t num ; 1951 t ; 1953 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 1954 dbc = ( Dbc *) dbc_p -> _yp ; 1956 t = dbc -> `cou (& num , ags ); 1957 yp -> us = t ; 1958 i( t == 0) 1959 yp -> dupcou = num ; 1961 } } 1964 $__dbc_d_oc ( 1965 u_t dbc_id , 1966 u_t32_t ags , 1967 __dbc_d_y * yp ) 1969 Dbc * dbc ; 1970 _y * dbc_p ; 1971 t ; 1973 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 1974 dbc = ( Dbc *) dbc_p -> _yp ; 1976 t = dbc -> `d ( ags ); 1978 yp -> us = t ; 1980 } } 1983 $__dbc_dup_oc ( 1984 u_t dbc_id , 1985 u_t32_t ags , 1986 __dbc_dup_y * yp ) 1988 Dbc * dbc , * wdbc ; 1989 _y * dbc_p , * w_p ; 1990 t ; 1992 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 1993 dbc = ( Dbc *) dbc_p -> _yp ; 1995 w_p = `w__t (& yp -> us ); 1996 i( w_p = NULL ) 1999 i(( t = dbc -> `dup (& wdbc , ags )) == 0) { 2000 w_p -> _dbc = wdbc ; 2001 w_p -> _ty = CT_CURSOR ; 2002 w_p -> _ = dbc_p ->ct_parent; 2003 w_p -> _v = dbc_p ->ct_envparent; 2007 i( dbc_p -> _aiv !&dbc_p-> _aive ) 2008 w_p -> _aiv = dbc_p ->ct_activep; 2009 `__dbv_imeout ( w_p , dbc_p -> _timeout ); 2010 `__dbv_aive ( w_p ); 2011 yp -> dbcid_id = w_p -> _id ; 2013 `__dbr_p ( w_p ); 2015 yp -> us = t ; 2017 } } 2020 $__dbc_g_oc ( 2021 u_t dbc_id , 2022 u_t32_t keydn , 2023 u_t32_t keydoff , 2024 u_t32_t keyun , 2025 u_t32_t keyags , 2026 * keyda , 2027 u_t32_t keysize , 2028 u_t32_t dadn , 2029 u_t32_t dadoff , 2030 u_t32_t daun , 2031 u_t32_t daags , 2032 * dada , 2033 u_t32_t dasize , 2034 u_t32_t ags , 2035 __dbc_g_y * yp , 2036 * p ) 2038 Dbc * dbc ; 2039 DbEnv * dbv ; 2040 _y * dbc_p ; 2041 t ; 2042 * tmpda ; 2044 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2045 dbc = ( Dbc *) dbc_p -> _yp ; 2046 dbv = DbEnv :: `g_DbEnv ((( DBC *) dbc )-> dbp ->dbenv); 2048 yp -> keyda . keyda_v = NULL ; 2049 yp -> dada . dada_v = NULL ; 2050 * p = 0; 2053 Dbt `key ( keyda , keysize ); 2054 key . `t_dn ( keydn ); 2055 key . `t_un ( keyun ); 2056 key . `t_doff ( keydoff ); 2057 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 2059 Dbt `da ( dada , dasize ); 2060 da . `t_dn ( dadn ); 2061 da . `t_un ( daun ); 2062 da . `t_doff ( dadoff ); 2063 daags & DB_DBT_PARTIAL ; 2064 i( ags & DB_MULTIPLE || fg& DB_MULTIPLE_KEY ) { 2065 i( da . `g_da (= NULL ) { 2066 t = `__os_umloc ( dbv -> `g_DB_ENV (), 2067 da . `g_un (), & tmpda ); 2068 i( t != 0) 2069 r ; 2070 da . `t_da ( tmpda ); 2072 daags | DB_DBT_USERMEM ; 2074 daags | DB_DBT_MALLOC ; 2075 da . `t_ags ( daags ); 2078 t = dbc -> `g (& key , & da , ags ); 2083 i( t == 0) { 2092 * p = 1; 2096 i( key . `g_da (= keyda ) { 2097 t = `__os_umloc ( dbv -> `g_DB_ENV (), key . `g_size (), 2098 & yp -> keyda . keyda_v ); 2099 i( t != 0) 2100 r ; 2101 `memy ( yp -> keyda . keyda_v , 2102 key . `g_da (), key. `g_size ()); 2104 yp -> keyda . keyda_v = (*) key . `g_da (); 2106 yp -> keyda . keyda_n = key . `g_size (); 2111 i( da . `g_da (= dada ) { 2112 t = `__os_umloc ( dbv -> `g_DB_ENV (), da . `g_size (), 2113 & yp -> dada . dada_v ); 2114 i( t != 0) 2115 r ; 2116 `memy ( yp -> dada . dada_v , da . `g_da (), 2117 da . `g_size ()); 2119 yp -> dada . dada_v = (*) da . `g_da (); 2120 yp -> dada . dada_n = da . `g_size (); 2122 r : `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2123 key . `g_da (), keyda ); 2124 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2125 da . `g_da (), dada ); 2126 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2127 yp -> keyda . keyda_v , key . `g_da ()); 2128 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2129 yp -> dada . dada_v , da . `g_da ()); 2130 yp -> keyda . keyda_v = NULL ; 2131 yp -> keyda . keyda_n = 0; 2132 yp -> dada . dada_v = NULL ; 2133 yp -> dada . dada_n = 0; 2134 * p = 0; 2136 yp -> us = t ; 2138 } } 2141 $__dbc_pg_oc ( 2142 u_t dbc_id , 2143 u_t32_t skeydn , 2144 u_t32_t skeydoff , 2145 u_t32_t skeyun , 2146 u_t32_t skeyags , 2147 * skeyda , 2148 u_t32_t skeysize , 2149 u_t32_t pkeydn , 2150 u_t32_t pkeydoff , 2151 u_t32_t pkeyun , 2152 u_t32_t pkeyags , 2153 * pkeyda , 2154 u_t32_t pkeysize , 2155 u_t32_t dadn , 2156 u_t32_t dadoff , 2157 u_t32_t daun , 2158 u_t32_t daags , 2159 * dada , 2160 u_t32_t dasize , 2161 u_t32_t ags , 2162 __dbc_pg_y * yp , 2163 * p ) 2165 Dbc * dbc ; 2166 DbEnv * dbv ; 2167 _y * dbc_p ; 2168 t ; 2170 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2171 dbc = ( Dbc *) dbc_p -> _yp ; 2172 dbv = DbEnv :: `g_DbEnv ((( DBC *) dbc )-> dbp ->dbenv); 2174 yp -> skeyda . skeyda_v = NULL ; 2175 yp -> pkeyda . pkeyda_v = NULL ; 2176 yp -> dada . dada_v = NULL ; 2177 * p = 0; 2183 Dbt `skey ( skeyda , skeysize ); 2184 skey . `t_dn ( skeydn ); 2185 skey . `t_un ( skeyun ); 2186 skey . `t_doff ( skeydoff ); 2187 skey . `t_ags ( DB_DBT_MALLOC | ( skeyags & DB_DBT_PARTIAL )); 2189 Dbt `pkey ( pkeyda , pkeysize ); 2190 pkey . `t_dn ( pkeydn ); 2191 pkey . `t_un ( pkeyun ); 2192 pkey . `t_doff ( pkeydoff ); 2193 pkey . `t_ags ( DB_DBT_MALLOC | ( pkeyags & DB_DBT_PARTIAL )); 2195 Dbt `da ( dada , dasize ); 2196 da . `t_dn ( dadn ); 2197 da . `t_un ( daun ); 2198 da . `t_doff ( dadoff ); 2199 da . `t_ags ( DB_DBT_MALLOC | ( daags & DB_DBT_PARTIAL )); 2202 t = dbc -> `pg (& skey , & pkey , & da , ags ); 2206 i( t == 0) { 2215 * p = 1; 2219 i( skey . `g_da (= skeyda ) { 2220 t = `__os_umloc ( dbv -> `g_DB_ENV (), 2221 skey . `g_size (), & yp -> skeyda . skeyda_v ); 2222 i( t != 0) 2223 r ; 2224 `memy ( yp -> skeyda . skeyda_v , skey . `g_da (), 2225 skey . `g_size ()); 2227 yp -> skeyda . skeyda_v = (*) skey . `g_da (); 2228 yp -> skeyda . skeyda_n = skey . `g_size (); 2233 i( pkey . `g_da (= pkeyda ) { 2234 t = `__os_umloc ( dbv -> `g_DB_ENV (), 2235 pkey . `g_size (), & yp -> pkeyda . pkeyda_v ); 2236 i( t != 0) 2237 r ; 2238 `memy ( yp -> pkeyda . pkeyda_v , pkey . `g_da (), 2239 pkey . `g_size ()); 2241 yp -> pkeyda . pkeyda_v = (*) pkey . `g_da (); 2242 yp -> pkeyda . pkeyda_n = pkey . `g_size (); 2247 i( da . `g_da (= dada ) { 2248 t = `__os_umloc ( dbv -> `g_DB_ENV (), 2249 da . `g_size (), & yp -> dada . dada_v ); 2250 i( t != 0) 2251 r ; 2252 `memy ( yp -> dada . dada_v , da . `g_da (), 2253 da . `g_size ()); 2255 yp -> dada . dada_v = (*) da . `g_da (); 2256 yp -> dada . dada_n = da . `g_size (); 2258 r : `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2259 skey . `g_da (), skeyda ); 2260 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2261 pkey . `g_da (), pkeyda ); 2262 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2263 da . `g_da (), dada ); 2264 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2265 yp -> skeyda . skeyda_v , skey . `g_da ()); 2266 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2267 yp -> pkeyda . pkeyda_v , pkey . `g_da ()); 2268 `FREE_IF_CHANGED ( dbv -> `g_DB_ENV (), 2269 yp -> dada . dada_v , da . `g_da ()); 2270 yp -> skeyda . skeyda_v = NULL ; 2271 yp -> skeyda . skeyda_n = 0; 2272 yp -> pkeyda . pkeyda_v = NULL ; 2273 yp -> pkeyda . pkeyda_n = 0; 2274 yp -> dada . dada_v = NULL ; 2275 yp -> dada . dada_n = 0; 2276 * p = 0; 2278 yp -> us = t ; 2280 } } 2283 $__dbc_put_oc ( 2284 u_t dbc_id , 2285 u_t32_t keydn , 2286 u_t32_t keydoff , 2287 u_t32_t keyun , 2288 u_t32_t keyags , 2289 * keyda , 2290 u_t32_t keysize , 2291 u_t32_t dadn , 2292 u_t32_t dadoff , 2293 u_t32_t daun , 2294 u_t32_t daags , 2295 * dada , 2296 u_t32_t dasize , 2297 u_t32_t ags , 2298 __dbc_put_y * yp , 2299 * p ) 2301 Db * dbp ; 2302 Dbc * dbc ; 2303 _y * dbc_p ; 2304 t ; 2305 DBTYPE dbty ; 2307 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2308 dbc = ( Dbc *) dbc_p -> _yp ; 2309 dbp = ( Db *) dbc_p -> _ -> _yp ; 2312 Dbt `key ( keyda , keysize ); 2313 key . `t_dn ( keydn ); 2314 key . `t_un ( keyun ); 2315 key . `t_doff ( keydoff ); 2319 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 2321 Dbt `da ( dada , dasize ); 2322 da . `t_dn ( dadn ); 2323 da . `t_un ( daun ); 2324 da . `t_doff ( dadoff ); 2325 da . `t_ags ( daags ); 2328 t = dbc -> `put (& key , & da , ags ); 2330 * p = 0; 2331 yp -> keyda . keyda_v = NULL ; 2332 yp -> keyda . keyda_n = 0; 2333 i( t =0 && ( ags = DB_AFTER || fg= DB_BEFORE )) { 2334 t = dbp -> `g_ty (& dbty ); 2335 i( t =0 && dbty = DB_RECNO ) { 2340 yp -> keyda . keyda_v = (*) key . `g_da (); 2341 yp -> keyda . keyda_n = key . `g_size (); 2344 yp -> us = t ; 2346 } } 2349 $__dbc_g_iܙy_oc ( 2350 u_t dbc_id , 2351 __dbc_g_iܙy_y * yp ) 2353 Dbc * dbc ; 2354 _y * dbc_p ; 2356 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2357 dbc = ( Dbc *) dbc_p -> _yp ; 2359 yp -> us = 2360 dbc -> `g_iܙy (( DB_CACHE_PRIORITY *)& yp -> iܙy ); 2361 } } 2364 $__dbc_t_iܙy_oc ( 2365 u_t dbc_id , 2366 u_t32_t iܙy , 2367 __dbc_t_iܙy_y * yp ) 2369 Dbc * dbc ; 2370 _y * dbc_p ; 2371 t ; 2373 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2374 dbc = ( Dbc *) dbc_p -> _yp ; 2376 t = dbc -> `t_iܙy (( DB_CACHE_PRIORITY ) iܙy ); 2378 yp -> us = t ; 2380 } } @../rpc_server/cxx/db_server_cxxutil.cpp 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"db_cxx.h " 13 ~"db_rv.h " 14 ~"dbc_auto/ib_ext.h " 17 ~"dbc/db_rv_t.h " 18 ~"dbc_auto/c_rv_ext.h " 19 ~"dbc_auto/comm_ext.h " 21 __dbv_ma __P (()); 24 add_home __P ((*)); 25 add_sswd __P ((*)); 26 v_cov __P ((*)); 27 __dbr_chd __P (( _y *)); 29 $LIST_HEAD ( hd , _y __dbv_hd ; 30 $LIST_HEAD ( homehd , home_y __dbv_home ; 31 __dbv_deo = DB_SERVER_TIMEOUT ; 32 __dbv_maxto = DB_SERVER_MAXTIMEOUT ; 33 __dbv_idto = DB_SERVER_IDLETIMEOUT ; 34 * logfe = NULL ; 35 * og ; 37 uge `__P ((*)); 38 vsi_check `__P (()); 40 __dbv_vbo = 0; 43 $ma ( 44 gc , 45 ** gv ) 47 * ݏrg ; 48 CLIENT * ; 49 ch , t ; 50 * sswd ; 52 og = gv [0]; 54 `vsi_check (); 68 i(( = `_ ("localhost", 69 DB_RPC_SERVERPROG , DB_RPC_SERVERVERS , "t")! NULL ) { 70 `rtf ( dr , 71 "%s: Bkey DB RPC sv̗dyug.\n", og ); 72 `_deroy ( ); 73 ( EXIT_FAILURE ); 76 `LIST_INIT (& __dbv_home ); 77 ( ch = `gt ( gc , gv , "h:I:L:P:t:T:Vv")! EOF ) 78 ch ) { 80 () `add_home ( ݏrg ); 83 i( `__db_glg ( NULL , og , 84 ݏrg , 1, LONG_MAX , & __dbv_idto )) 85 ( EXIT_FAILURE ); 88 logfe = ݏrg ; 91 sswd = `rdup ( ݏrg ); 92 `memt ( ݏrg , 0, ` (optarg)); 93 i( sswd = NULL ) { 94 `rtf ( dr , "%s: strdup: %s\n", 95 og , ` ( o )); 96 ( EXIT_FAILURE ); 98 i(( t = `add_sswd ( sswd )) != 0) { 99 `rtf ( dr , "%s: strdup: %s\n", 100 og , ` ( t )); 101 ( EXIT_FAILURE ); 105 i( `__db_glg ( NULL , og , 106 ݏrg , 1, LONG_MAX , & __dbv_deo )) 107 ( EXIT_FAILURE ); 110 i( `__db_glg ( NULL , og , 111 ݏrg , 1, LONG_MAX , & __dbv_maxto )) 112 ( EXIT_FAILURE ); 115 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 116 ( EXIT_SUCCESS ); 118 __dbv_vbo = 1; 121 `uge ( og ); 126 i( __dbv_deo > __dbv_maxto ) 127 __dbv_deo = __dbv_maxto ; 133 i( __dbv_deo > __dbv_idto ) 134 `rtf ( dr , 136 og , __dbv_idto , __dbv_deo ); 138 `LIST_INIT (& __dbv_hd ); 144 #ifde SIGPIPE 145 `sigl ( SIGPIPE , SIG_IGN ); 148 i( logfe ! NULL && `__db_ut_logt ("berkeley_db_svc",ogfile)) 149 ( EXIT_FAILURE ); 155 i( `v_cov ( og ) != 0) 156 ( EXIT_FAILURE ); 161 i( __dbv_vbo ) 162 `tf ("%s: Rdyػivques\n", og ); 163 `__dbv_ma (); 166 `abt (); 167 } } 170 $uge (* og ) 172 `rtf ( dr , "uge: %%s\n\t%s\n", og , 175 `ex ( EXIT_FAILURE ); 176 } } 179 $vsi_check () 181 v_maj , v_m , v_tch ; 184 () `db_vsi (& v_maj , & v_m , & v_tch ); 185 i( v_maj ! DB_VERSION_MAJOR || 186 v_m ! DB_VERSION_MINOR || v_tch ! DB_VERSION_PATCH ) { 187 `rtf ( dr , 189 og , DB_VERSION_MAJOR , DB_VERSION_MINOR , 190 DB_VERSION_PATCH , v_maj , v_m , v_tch ); 191 `ex ( EXIT_FAILURE ); 193 } } 196 $__dbv_imeout ( 197 _y * p , 198 u_t32_t to ) 200 i( to > ( u_t32_t ) __dbv_maxto ) 201 p -> _timeout = __dbv_maxto ; 202 i( to <= 0) 203 p -> _timeout = __dbv_deo ; 205 p -> _timeout = to ; 206 } } 209 $__dbv_timeout ( f ) 211 to_ht = -1; 212 time_t t ; 213 to ; 214 _y * p , * xtp ; 216 i(( t = `time ( NULL )) == -1) 223 i(! f && to_ht > 0 && t <o_hint) 225 to_ht = -1; 239 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; c = xtp ) { 240 xtp = `LIST_NEXT ( p , s ); 241 p -> _ty ) { 242 CT_TXN : 243 to = *( p -> _aiv + c-> _timeout ; 245 i( to < t ) { 246 i( __dbv_vbo ) 247 `tf ("Timing outxn id %ld\n", 248 p -> _id ); 249 ()(( DbTxn *) p -> _yp )-> `abt (); 250 `__dbd_p ( p ); 256 xtp = `LIST_FIRST (& __dbv_hd ); 257 } i(( to_ht > 0 &&o_h> to ) || 258 to_ht == -1) 259 to_ht = to ; 261 CT_CURSOR : 262 ( CT_JOINCUR | CT_CURSOR ): 263 to = *( p -> _aiv + c-> _timeout ; 265 i( to < t ) { 266 i( __dbv_vbo ) 267 `tf ("Timing out cursor %ld\n", 268 p -> _id ); 269 () `__dbc_o_t ( p ); 273 xtp = `LIST_FIRST (& __dbv_hd ); 274 } i(( to_ht > 0 &&o_h> to ) || 275 to_ht == -1) 276 to_ht = to ; 286 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; c = xtp ) { 287 xtp = `LIST_NEXT ( p , s ); 288 i( p -> _ty ! CT_ENV ) 290 to = *( p -> _aiv + c-> _id ; 292 i( to < t || f ) { 293 i( __dbv_vbo ) 294 `tf ("Timg ouv id %ld\n", p -> _id ); 295 () `__v_o_t ( p -> _id , 0, 1); 301 xtp = `LIST_FIRST (& __dbv_hd ); 304 } } 311 $__dbr_chd ( _y * ) 313 _y * p , * xtp ; 315 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 316 p = xtp ) { 317 xtp = `LIST_NEXT ( p , s ); 318 i( p -> _ty == 0) 320 i( p -> _ = ) { 321 `__dbr_chd ( p ); 327 xtp = `LIST_NEXT ( p , s ); 328 `__dbr_p ( p ); 331 } } 334 $__dbr_p ( _y * p ) 336 `LIST_REMOVE ( p , s ); 337 `__os_ ( NULL , p ); 338 } } 341 $__dbd_p ( _y * ) 343 `__dbr_chd ( ); 344 `__dbr_p ( ); 345 } } 347 "C" _y * 348 $w__t (* ) 350 time_t t ; 351 _y * p , * op ; 352 t ; 354 i(( t = `__os_mloc ( NULL , ( _y ), & p )) != 0) { 355 * = t ; 356 ( NULL ); 358 `memt ( p , 0, ( _y )); 366 i(( t = `time ( NULL )) == -1) { 367 * = `__os_g_o (); 368 `__os_ ( NULL , p ); 369 ( NULL ); 371 op = `LIST_FIRST (& __dbv_hd ); 372 i( op ! NULL && op-> _id > t ) 373 t = op -> _id + 1; 374 p -> _id = t ; 375 p -> _id = __dbv_idto ; 376 p -> _aiv = &p-> _aive ; 377 p -> _igp = NULL ; 378 p -> _fcou = 1; 380 `LIST_INSERT_HEAD (& __dbv_hd , p , s ); 381 ( p ); 382 } } 384 "C" _y * 385 $g_b˒t ( id ) 387 _y * p ; 389 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 390 p = `LIST_NEXT (p, s )) 391 i( p -> _id = id ) 392 ( p ); 393 ( NULL ); 394 } } 396 "C" _y * 397 $__dbv_shedb ( _y * db_p , 398 cڡ * me , cڡ * subdb , DBTYPE ty , u_t32_t ags ) 400 _y * p ; 413 i( ags & DB_SERVER_DBNOSHARE ) 414 ( NULL ); 415 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 416 p = `LIST_NEXT (p, s )) { 420 i( p = db_p ) 422 i( p -> _ty ! CT_DB ) 424 i( p -> _v ! db_p ->ct_envparent) 426 i( ty ! DB_UNKNOWN && p -> _dbdp .type !=ype) 428 i( p -> _dbdp . dbags ! `LF_ISSET ( DB_SERVER_DBFLAGS )) 430 i( db_p -> _dbdp . tags != 0 && 431 p -> _dbdp . tags ! db_p ->ct_dbdp.setflags) 433 i( me = NULL || p -> _dbdp . db == NULL || 434 `rcmp ( me , p -> _dbdp . db ) != 0) 436 i( subdb ! p -> _dbdp .subdb && 437 ( subdb = NULL || p -> _dbdp .subdb == NULL || 438 `rcmp ( subdb , p -> _dbdp .subdb) != 0)) 443 p -> _fcou ++; 444 ( p ); 447 ( NULL ); 448 } } 450 "C" _y * 451 $__dbv_shnv ( _y * v_p , home_y * home , u_t32_t ags ) 453 _y * p ; 461 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 462 p = `LIST_NEXT (p, s )) { 466 i( p = v_p ) 468 i( p -> _ty ! CT_ENV ) 470 i( p -> _vdp . home != home) 472 i( p -> _vdp . vags ! ags ) 474 i( p -> _vdp . ags ! v_p ->ct_envdp.onflags) 476 i( p -> _vdp . offags ! v_p ->ct_envdp.offflags) 484 i( p -> _timeout < v_p ->ct_timeout) 485 p -> _timeout = v_p ->ct_timeout; 486 p -> _fcou ++; 487 ( p ); 490 ( NULL ); 491 } } 494 $__dbv_aive ( _y * p ) 496 time_t t ; 497 _y * vp ; 499 i( p = NULL ) 501 i(( t = `time ( NULL )) == -1) 503 *( p -> _aiv t ; 504 i(( vp = p -> _v = NULL ) 506 *( vp -> _aiv t ; 508 } } 511 $__db_o_t ( id , u_t32_t ags ) 513 Db * dbp ; 514 t ; 515 _y * p ; 517 t = 0; 518 p = `g_b˒t ( id ); 519 i( p = NULL ) 520 ( DB_NOSERVER_ID ); 521 `DB_ASSERT ( NULL , p -> _ty = CT_DB ); 522 i( __dbv_vbo && p -> _fcou != 1) 523 `tf ("Deref'ing dbp id %ld,efcount %d\n", 524 id , p -> _fcou ); 525 i(-- p -> _fcou != 0) 526 ( t ); 527 dbp = p -> _dbp ; 528 i( __dbv_vbo ) 529 `tf ("Closg dbid %ld\n", id ); 531 t = dbp -> `o ( ags ); 532 `__dbd_p ( p ); 533 ( t ); 534 } } 537 $__dbc_o_t ( _y * dbc_p ) 539 Dbc * dbc ; 540 t ; 541 _y * p ; 543 dbc = ( Dbc *) dbc_p -> _yp ; 545 t = dbc -> `o (); 550 i( dbc_p -> _ty & CT_JOINCUR ) 551 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 552 p = `LIST_NEXT (p, s )) { 557 i(( p -> _ty & CT_JOIN ) && 558 p -> _aiv =& dbc_p -> _aive ) { 559 p -> _ty &~ CT_JOIN ; 560 p -> _aiv = c-> _igp ; 561 `__dbv_aive ( p ); 564 `__dbr_p ( dbc_p ); 565 ( t ); 567 } } 570 $__v_o_t ( id , u_t32_t ags , f ) 572 DbEnv * dbv ; 573 t ; 574 _y * p , * dbp , * xtp ; 576 t = 0; 577 p = `g_b˒t ( id ); 578 i( p = NULL ) 579 ( DB_NOSERVER_ID ); 580 `DB_ASSERT ( NULL , p -> _ty = CT_ENV ); 581 i( __dbv_vbo && p -> _fcou != 1) 582 `tf ("Deref'ingnv id %ld,efcount %d\n", 583 id , p -> _fcou ); 588 i(-- p -> _fcou !0 && ! f ) 589 ( t ); 590 dbv = p -> _vp ; 591 i( __dbv_vbo ) 592 `tf ("Closgnv id %ld\n", id ); 599 i( f ) 600 dbp = `LIST_FIRST (& __dbv_hd ); 601 dbp ! NULL ; db xtp ) { 602 xtp = `LIST_NEXT ( dbp , s ); 603 i( dbp -> _ty ! CT_DB ) 605 i( dbp -> _v ! p ) 611 `__db_o_t ( dbp -> _id , 0); 617 xtp = `LIST_FIRST (& __dbv_hd ); 620 t = dbv -> `o ( ags ); 621 `__dbd_p ( p ); 622 ( t ); 623 } } 626 $add_home (* home ) 628 home_y * hp , * hom ; 629 t ; 631 i(( t = `__os_mloc ( NULL , ( home_y ), & hp )) != 0) 632 ( t ); 633 i(( t = `__os_mloc ( NULL , ` ( home )+1, & hp ->home)) != 0) 634 ( t ); 635 `memy ( hp -> home , home, ` (home)+1); 636 hp -> d = home ; 637 hp -> sswd = NULL ; 642 hp -> me = `__db_h ( home ); 643 i( hp -> me ! NULL ) { 644 *( hp -> me ) = '\0'; 645 hp -> me ++; 647 hp -> me = home ; 648 *( hp -> me ) == '\0') { 649 hp -> me = `__db_h ( home ); 650 *( hp -> me ) = '\0'; 651 hp -> me ++; 657 hom = `LIST_FIRST (& __dbv_home ); hom ! NULL ; 658 hom = `LIST_NEXT (hom, s )) 659 i( `rcmp ( hom -> me , hp ->name) == 0) { 660 `tf ("Alreadydded homeame %s,t directory %s\n", 661 hp -> me , hom -> d ); 664 `LIST_INSERT_HEAD (& __dbv_home , hp , s ); 665 i( __dbv_vbo ) 666 `tf ("Added hom% d %s\n", hp -> me , hp-> d ); 668 } } 671 $add_sswd (* sswd ) 673 home_y * hp ; 680 hp = `LIST_FIRST (& __dbv_home ); 681 i( hp = NULL || hp-> sswd != NULL) 682 ( EINVAL ); 687 hp -> sswd =asswd; 689 } } 691 "C" home_y * 692 $g_fuhome (* me ) 694 home_y * hp ; 696 i( me = NULL ) 697 ( NULL ); 699 hp = `LIST_FIRST (& __dbv_home ); h! NULL ; 700 hp = `LIST_NEXT (hp, s )) 701 i( `rcmp ( me , hp ->name) == 0) 702 ( hp ); 703 ( NULL ); 704 } } 707 $v_cov (* ogme ) 709 DbEnv * dbv ; 710 home_y * hp ; 711 u_t32_t ags ; 712 exv , t ; 714 hp = `LIST_FIRST (& __dbv_home ); h! NULL ; 715 hp = `LIST_NEXT (hp, s )) { 716 exv = 0; 717 dbv = w `DbEnv ( DB_CXX_NO_EXCEPTIONS ); 718 i( __dbv_vbo == 1) 719 () dbv -> `t_vbo ( DB_VERB_RECOVERY , 1); 720 dbv -> `t_rfe ( dr ); 721 dbv -> `t_fx ( ogme ); 722 i( hp -> sswd ! NULL ) 723 () dbv -> `t_y ( hp -> sswd , DB_ENCRYPT_AES ); 729 i( __dbv_vbo ) 730 `tf ("Rugecovy o%s\n", hp -> home ); 731 ags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | 732 DB_INIT_TXN | DB_USE_ENVIRON | DB_RECOVER ; 733 i(( t = dbv -> `ݒ ( hp -> home , ags , 0)) != 0) { 734 dbv -> `r ( t , "DbEnv->open"); 735 r ; 739 r : exv = 1; 741 i(( t = dbv -> `o (0)) != 0) { 742 exv = 1; 743 `rtf ( dr , "%s: dbenv->close: %s\n", 744 ogme , `db_ ( t )); 746 i( exv ) 747 ( exv ); 750 } } @../sequence/seq_stat.c 9 ~"db_cfig.h " 10 #ifde HAVE_64BIT_TYPES 12 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/db_am.h " 15 ~"dbc_auto/qu_ext.h " 17 #ifde HAVE_STATISTICS 18 __q_t_l __P (( DB_SEQUENCE *, u_t32_t )); 19 __q_t_s __P (( DB_SEQUENCE *, u_t32_t )); 28 $__q_ ( q , p , ags ) 29 DB_SEQUENCE * q ; 30 DB_SEQUENCE_STAT ** p ; 31 u_t32_t ags ; 33 DB * dbp ; 34 DB_ENV * dbv ; 35 DB_THREAD_INFO * ; 36 DB_SEQ_RECORD cd ; 37 DB_SEQUENCE_STAT * ; 38 DBT da ; 39 hd_check , t , t_t ; 41 dbp = q -> q_dbp ; 42 dbv = dbp ->dbenv; 44 ags ) { 45 DB_STAT_CLEAR : 46 DB_STAT_ALL : 50 ( `__db_ ( dbv , "DB_SEQUENCE->stat", 0)); 53 `ENV_ENTER ( dbv , ); 56 hd_check = `IS_ENV_REPLICATED ( dbv ); 57 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 58 hd_check = 0; 59 r ; 63 i(( t = `__os_umloc ( dbv , (* ), &sp)) != 0) 64 r ; 65 `memt ( , 0, (*sp)); 67 i( q -> mtx_q ! MUTEX_INVALID ) { 68 `__mux_t_wa_fo ( 69 dbv , q -> mtx_q , & -> _wa , &-> _nowa ); 71 i( `LF_ISSET ( DB_STAT_CLEAR )) 72 `__mux_r ( dbv , q -> mtx_q ); 74 `memt (& da , 0, (data)); 75 da .d& cd ; 76 da . un = ( cd ); 77 da . ags = DB_DBT_USERMEM ; 78 y : i(( t = `__db_g ( dbp , NULL , & q -> q_key , & da , 0)) != 0) { 79 i( t = DB_BUFFER_SMALL && 80 da . size > ( q -> q_cd )) { 81 i(( t = `__os_mloc ( dbv , 82 da . size , &data.data)) != 0) 83 r ; 84 da . un = da. size ; 85 y ; 87 r ; 90 i( da .d!& cd ) 91 `memy (& cd , da .data, (record)); 92 -> _cut = cd . q_vue ; 93 -> _vue = q -> q_cd . q_vue ; 94 -> _ϡ_vue = q -> q_ϡ_vue ; 95 -> _m = q -> q_cd . q_m ; 96 -> _max = q -> q_cd . q_max ; 97 -> _che_size = q -> q_che_size ; 98 -> _ags = q -> q_cd . ags ; 100 * p = ; 101 i( da .d!& cd ) 102 `__os_ ( dbv , da .data); 105 r : i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 106 t = t_t ; 107 `ENV_LEAVE ( dbv , ); 108 ( t ); 109 } } 118 $__q__t ( q , ags ) 119 DB_SEQUENCE * q ; 120 u_t32_t ags ; 122 DB * dbp ; 123 DB_ENV * dbv ; 124 DB_THREAD_INFO * ; 125 hd_check , t , t_t ; 127 dbp = q -> q_dbp ; 128 dbv = dbp ->dbenv; 130 `ENV_ENTER ( dbv , ); 133 hd_check = `IS_ENV_REPLICATED ( dbv ); 134 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 135 hd_check = 0; 136 r ; 139 i(( t = `__q_t_s ( q , ags )) != 0) 140 r ; 142 i( `LF_ISSET ( DB_STAT_ALL ) && 143 ( t = `__q_t_l ( q , ags )) != 0) 144 r ; 147 r : i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 148 t = t_t ; 150 `ENV_LEAVE ( dbv , ); 151 ( t ); 153 } } 155 cڡ FN g__db_q_ags_ [] = { 156 { DB_SEQ_DEC , "decrement" }, 157 { DB_SEQ_INC , "increment" }, 158 { DB_SEQ_RANGE_SET , "range set (internal)" }, 159 { DB_SEQ_WRAP , "wraparoundtnd" }, 160 { 0, NULL } 169 cڡ FN * 170 $__db_g_q_ags_ () 172 ( __db_q_ags_ ); 173 } } 180 $__q_t_s ( q , ags ) 181 DB_SEQUENCE * q ; 182 u_t32_t ags ; 184 DB_ENV * dbv ; 185 DB_SEQUENCE_STAT * ; 186 t ; 188 dbv = q -> q_dbp ->dbenv; 190 i(( t = `__q_ ( q , & , ags )) != 0) 191 ( t ); 192 `__db_dl_p ( dbv , 194 ( u_lg ) -> _wa , 195 `DB_PCT ( -> _wa , sp->_wa + sp-> _nowa ), NULL ); 196 `STAT_FMT ("The current sequence value", 197 INT64_FMT , t64_t , -> _cut ); 198 `STAT_FMT ("The cached sequence value", 199 INT64_FMT , t64_t , -> _vue ); 200 `STAT_FMT ("Theast cached sequence value", 201 INT64_FMT , t64_t , -> _ϡ_vue ); 202 `STAT_FMT ("The minimum sequence value", 203 INT64_FMT , t64_t , -> _vue ); 204 `STAT_FMT ("The maximum sequence value", 205 INT64_FMT , t64_t , -> _vue ); 206 `STAT_ULONG ("Thchsize", -> _che_size ); 207 `__db_ags ( dbv , NULL , 208 -> _ags , __db_q_ags_ , NULL , "\tSequence flags"); 209 `__os_u ( q -> q_dbp -> dbv , ); 211 } } 219 $__q_t_l ( q , ags ) 220 DB_SEQUENCE * q ; 221 u_t32_t ags ; 223 `COMPQUIET ( q , NULL ); 224 `COMPQUIET ( ags , 0); 226 } } 231 $__q_ ( q , p , ags ) 232 DB_SEQUENCE * q ; 233 DB_SEQUENCE_STAT ** p ; 234 u_t32_t ags ; 236 `COMPQUIET ( p , NULL ); 237 `COMPQUIET ( ags , 0); 239 ( `__db__n_but ( q -> q_dbp -> dbv )); 240 } } 243 $__q__t ( q , ags ) 244 DB_SEQUENCE * q ; 245 u_t32_t ags ; 247 `COMPQUIET ( ags , 0); 249 ( `__db__n_but ( q -> q_dbp -> dbv )); 250 } } 258 cڡ FN * 259 $__db_g_q_ags_ () 261 cڡ FN __db_q_ags_ [] = { 262 { 0, NULL } 269 ( __db_q_ags_ ); 270 } } @../sequence/sequence.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/lock.h " 15 ~"dbc/txn.h " 16 ~"dbc_auto/qu_ext.h " 18 #ifde HAVE_RPC 19 #ifde HAVE_SYSTEM_INCLUDE_FILES 20 ~<c/c.h > 22 ~"db_rv.h " 23 ~"dbc_auto/c__ext.h " 26 #ifde HAVE_64BIT_TYPES 27 #SEQ_ILLEGAL_AFTER_OPEN ( q , me ) \ 28 i( q -> q_key . da ! NULL ) \ 29 ( `__db_mi_ݒ (( q )-> q_dbp -> dbv , me , 1)); ) 31 #SEQ_ILLEGAL_BEFORE_OPEN ( q , me ) \ 32 i( q -> q_key . da = NULL ) \ 33 ( `__db_mi_ݒ (( q )-> q_dbp -> dbv , me , 0)); ) 35 #SEQ_IS_OPEN ( q ((q)-> q_key . da ! NULL ) ) 47 #SEQ_SWAP ( ) \ 49 `M_32_SWAP (( )-> q_vsi ); \ 50 `M_32_SWAP (( )-> ags ); \ 51 `M_64_SWAP (( )-> q_vue ); \ 52 `M_64_SWAP (( )-> q_max ); \ 53 `M_64_SWAP (( )-> q_m ); \ 54 } 0) ) 56 #SEQ_SWAP_IN ( q ) \ 58 i( `__db_isbigdn ()) { \ 59 `memy (& q -> q_cd , seq-> q_da . da , \ 60 ( q -> q_cd )); \ 61 `SEQ_SWAP (& q -> q_cd ); \ 63 } 0) ) 65 #SEQ_SWAP_OUT ( q ) \ 67 i( `__db_isbigdn ()) { \ 68 `memy ( q -> q_da . da , \ 69 & q -> q_cd , (seq->seq_record));\ 70 `SEQ_SWAP (( DB_SEQ_RECORD *) q -> q_da . da ); \ 72 } 0) ) 74 __q_chk_chesize __P (( DB_ENV *, t32_t , db_q_t , db_seq_t)); 75 __q_o __P (( DB_SEQUENCE *, u_t32_t )); 76 __q_g 77 __P (( DB_SEQUENCE *, DB_TXN *, t32_t , db_q_t *, u_t32_t )); 78 __q_g_chesize __P (( DB_SEQUENCE *, t32_t *)); 79 __q_g_db __P (( DB_SEQUENCE *, DB **)); 80 __q_g_ags __P (( DB_SEQUENCE *, u_t32_t *)); 81 __q_g_key __P (( DB_SEQUENCE *, DBT *)); 82 __q_g_nge __P (( DB_SEQUENCE *, db_q_t *, db_seq_t *)); 83 __q_l_vue __P (( DB_SEQUENCE *, db_q_t )); 84 __q_ݒ_ __P (( DB_SEQUENCE *, DB_TXN *, DBT *, u_t32_t )); 85 __q_move __P (( DB_SEQUENCE *, DB_TXN *, u_t32_t )); 86 __q_t_chesize __P (( DB_SEQUENCE *, t32_t )); 87 __q_t_ags __P (( DB_SEQUENCE *, u_t32_t )); 88 __q_t_nge __P (( DB_SEQUENCE *, db_q_t , db_seq_t)); 89 __q_upde __P (( DB_SEQUENCE *, DB_TXN *, t32_t , u_t32_t )); 98 $db_qu_ ( qp , dbp , ags ) 99 DB_SEQUENCE ** qp ; 100 DB * dbp ; 101 u_t32_t ags ; 103 DB_ENV * dbv ; 104 DB_SEQUENCE * q ; 105 t ; 107 dbv = dbp ->dbenv; 109 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "db_sequence_create"); 110 #ifde HAVE_RPC 111 i( `RPC_ON ( dbv )) 112 ( `__db_dbv_g ( dbv )); 116 ags ) { 120 ( `__db_ ( dbv , "db_sequence_create", 0)); 124 i(( t = `__os_oc ( dbv , 1, (* q ), &seq)) != 0) 125 ( t ); 127 q -> q_dbp = dbp ; 128 q -> o = __q_o ; 129 q -> g = __q_g ; 130 q -> g_chesize = __q_g_chesize ; 131 q -> t_chesize = __q_t_chesize ; 132 q -> g_db = __q_g_db ; 133 q -> g_ags = __q_g_ags ; 134 q -> g_key = __q_g_key ; 135 q -> g_nge = __q_g_nge ; 136 q -> l_vue = __q_l_vue ; 137 q -> ݒ = __q_ݒ_ ; 138 q -> move = __q_move ; 139 q -> t_ags = __q_t_ags ; 140 q -> t_nge = __q_t_nge ; 141 q -> = __q_ ; 142 q -> _t = __q__t ; 143 q -> q_ = &q-> q_cd ; 144 * qp = q ; 147 } } 155 $__q_ݒ_ ( q , txn , keyp , ags ) 156 DB_SEQUENCE * q ; 157 DB_TXN * txn ; 158 DBT * keyp ; 159 u_t32_t ags ; 161 DB * dbp ; 162 DB_ENV * dbv ; 163 DB_SEQ_RECORD * ; 164 DB_THREAD_INFO * ; 165 u_t32_t tags ; 166 hd_check , txn_lol , t , t_t ; 167 #SEQ_OPEN_FLAGS ( DB_CREATE | DB_EXCL | DB_THREAD ) ) 169 dbp = q -> q_dbp ; 170 dbv = dbp ->dbenv; 171 txn_lol = 0; 173 `STRIP_AUTO_COMMIT ( ags ); 174 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->open"); 176 `ENV_ENTER ( dbv , ); 179 hd_check = `IS_ENV_REPLICATED ( dbv ); 180 i( hd_check && 181 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 182 hd_check = 0; 183 r ; 186 i(( t = `__db_fchk ( dbv , 187 "DB_SEQUENCE->ݒ", ags , SEQ_OPEN_FLAGS )) != 0) 188 r ; 190 i( keyp -> size == 0) { 191 `__db_rx ( dbv , "Zeroength sequence key specified"); 192 t = EINVAL ; 193 r ; 196 i(( t = `__db_g_ags ( dbp , & tags )) != 0) 197 r ; 199 i( `DB_IS_READONLY ( dbp )) { 200 t = `__db_rdly ( dbp -> dbv , "DB_SEQUENCE->open"); 201 r ; 203 i( `FLD_ISSET ( tags , DB_DUP )) { 204 `__db_rx ( dbv , 206 t = EINVAL ; 207 r ; 210 i( `LF_ISSET ( DB_THREAD )) { 211 i( `RPC_ON ( dbv )) { 212 `__db_rx ( dbv , 214 r ; 216 i(( t = `__mux_loc ( dbv , 217 MTX_SEQUENCE , DB_MUTEX_PROCESS_ONLY , & q -> mtx_q )) != 0) 218 r ; 221 `memt (& q -> q_da , 0, ( DBT )); 222 i( `__db_isbigdn ()) { 223 i(( t = `__os_umloc ( dbv , 224 ( q -> q_cd ), &q-> q_da . da )) != 0) 225 r ; 226 q -> q_da . ags = DB_DBT_REALLOC ; 228 q -> q_da . da = &q-> q_cd ; 229 q -> q_da . ags = DB_DBT_USERMEM ; 232 q -> q_da . un = seq->q_da. size = (q-> q_cd ); 233 q -> q_ = &q-> q_cd ; 235 i(( t = `__dbt_urcy ( dbv , keyp )) != 0) 236 r ; 238 `memt (& q -> q_key , 0, ( DBT )); 239 i(( t = `__os_mloc ( dbv , keyp -> size , & q -> q_key . da )) != 0) 240 r ; 241 `memy ( q -> q_key . da , keyp ->da, keyp-> size ); 242 q -> q_key . size = seq->q_key. un = keyp ->size; 243 q -> q_key . ags = DB_DBT_USERMEM ; 245 y : i(( t = `__db_g ( dbp , txn , & q -> q_key , &q-> q_da , 0)) != 0) { 246 i( t = DB_BUFFER_SMALL && 247 q -> q_da . size > (q-> q_cd )) { 248 q -> q_da . ags = DB_DBT_REALLOC ; 249 q -> q_da . da = NULL ; 250 y ; 252 i(( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) || 253 ! `LF_ISSET ( DB_CREATE )) 254 r ; 255 t = 0; 257 = & q -> q_cd ; 258 i(! `F_ISSET ( , DB_SEQ_RANGE_SET )) { 259 -> q_max = INT64_MAX ; 260 -> q_m = INT64_MIN ; 263 i(! `F_ISSET ( , DB_SEQ_DEC )) 264 `F_SET ( , DB_SEQ_INC ); 266 -> q_vsi = DB_SEQUENCE_VERSION ; 268 i( -> q_vue >p-> q_max || 269 -> q_vue <p-> q_m ) { 270 `__db_rx ( dbv , "Sequence value out ofange"); 271 t = EINVAL ; 272 r ; 274 `SEQ_SWAP_OUT ( q ); 276 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 277 i(( t = 278 `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 279 r ; 280 txn_lol = 1; 283 i(( t = `__db_put ( dbp , txn , & q -> q_key , 284 & q -> q_da , DB_NOOVERWRITE )) != 0) { 285 `__db_rx ( dbv , "Sequence create failed"); 286 r ; 289 } i( `LF_ISSET ( DB_CREATE && LF_ISSET( DB_EXCL )) { 290 t = EEXIST ; 291 r ; 292 } i( q -> q_da . size < (q-> q_cd )) { 293 `__db_rx ( dbv , "Bad sequenceecord format"); 294 t = EINVAL ; 295 r ; 298 i(! `__db_isbigdn ()) 299 q -> q_ = seq-> q_da . da ; 305 = q -> q_da . da ; 306 i( -> q_vsi = DB_SEQUENCE_OLDVER ) { 307 dv : -> q_vsi = DB_SEQUENCE_VERSION ; 308 i( `__db_isbigdn ()) { 309 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 310 i(( t = 311 `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 312 r ; 313 txn_lol = 1; 314 y ; 316 `memy (& q -> q_cd , , (seq->seq_record)); 317 `SEQ_SWAP_OUT ( q ); 319 i(( t = `__db_put ( dbp , 320 txn , & q -> q_key , &q-> q_da , 0)) != 0) 321 r ; 323 = q -> q_ ; 325 `SEQ_SWAP_IN ( q ); 327 i( -> q_vsi ! DB_SEQUENCE_VERSION ) { 337 i( -> q_vsi = DB_SEQUENCE_OLDVER ) 338 dv ; 339 `M_32_SWAP ( -> q_vsi ); 340 i( -> q_vsi = DB_SEQUENCE_OLDVER ) { 341 `SEQ_SWAP ( ); 342 dv ; 344 `M_32_SWAP ( -> q_vsi ); 345 `__db_rx ( dbv , 346 "Unsu܋d sequ vsi: %d", -> q_vsi ); 347 r ; 350 q -> q_ϡ_vue = -> q_vue ; 351 i( `F_ISSET ( , DB_SEQ_INC )) 352 q -> q_ϡ_vue --; 354 q -> q_ϡ_vue ++; 359 i( q -> q_che_size !0 && ( t = `__q_chk_chesize ( 360 dbv , q -> q_che_size , -> q_max ,p-> q_m )) != 0) 361 r ; 363 r : i( txn_lol && 364 ( t_t = `__db_txn_auto_sve ( dbv , txn , 0, t )) &&et == 0) 365 t = t_t ; 366 i( t != 0) { 367 `__os_ ( dbv , q -> q_key . da ); 368 q -> q_key . da = NULL ; 371 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 372 t = t_t ; 374 `ENV_LEAVE ( dbv , ); 375 `__dbt_ur ( dbv , keyp , NULL , NULL); 376 ( t ); 377 } } 385 $__q_g_chesize ( q , chesize ) 386 DB_SEQUENCE * q ; 387 t32_t * chesize ; 389 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_cachesize"); 391 * chesize = q -> q_che_size ; 393 } } 401 $__q_t_chesize ( q , chesize ) 402 DB_SEQUENCE * q ; 403 t32_t chesize ; 405 DB_ENV * dbv ; 406 t ; 408 dbv = q -> q_dbp ->dbenv; 410 i( chesize < 0) { 411 `__db_rx ( dbv , "Cache size must be >= 0"); 412 ( EINVAL ); 418 i( `SEQ_IS_OPEN ( q && ( t = `__q_chk_chesize ( dbv , 419 chesize , q -> q_ -> q_max , seq->q_-> q_m )) != 0) 420 ( t ); 422 q -> q_che_size = chesize ; 424 } } 426 #SEQ_SET_FLAGS ( DB_SEQ_WRAP | DB_SEQ_INC | DB_SEQ_DEC ) ) 433 $__q_g_ags ( q , ag ) 434 DB_SEQUENCE * q ; 435 u_t32_t * ag ; 437 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_flags"); 439 * ag = `F_ISSET ( q -> q_ , SEQ_SET_FLAGS ); 441 } } 449 $__q_t_ags ( q , ags ) 450 DB_SEQUENCE * q ; 451 u_t32_t ags ; 453 DB_ENV * dbv ; 454 DB_SEQ_RECORD * ; 455 t ; 457 dbv = q -> q_dbp ->dbenv; 458 = q -> q_ ; 460 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->set_flags"); 462 i(( t = `__db_fchk ( 463 dbv , "DB_SEQUENCE->t_ags", ags , SEQ_SET_FLAGS )) != 0) 464 ( t ); 465 i(( t = `__db_fcchk ( dbv , 466 "DB_SEQUENCE->t_ags", ags , DB_SEQ_DEC , DB_SEQ_INC )) != 0) 467 ( t ); 469 i( `LF_ISSET ( DB_SEQ_DEC | DB_SEQ_INC )) 470 `F_CLR ( , DB_SEQ_DEC | DB_SEQ_INC ); 471 `F_SET ( , ags ); 474 } } 482 $__q_l_vue ( q , vue ) 483 DB_SEQUENCE * q ; 484 db_q_t vue ; 486 DB_ENV * dbv ; 487 DB_SEQ_RECORD * ; 489 dbv = q -> q_dbp ->dbenv; 490 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->initial_value"); 492 = q -> q_ ; 493 i( `F_ISSET ( , DB_SEQ_RANGE_SET ) && 494 ( vue > -> q_max || vu<p-> q_m )) { 495 `__db_rx ( dbv , "Sequence value out ofange"); 496 ( EINVAL ); 499 -> q_vue = vue ; 502 } } 510 $__q_g_nge ( q , mp , maxp ) 511 DB_SEQUENCE * q ; 512 db_q_t * mp , * maxp ; 514 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_range"); 516 * mp = q -> q_ -> q_m ; 517 * maxp = q -> q_ -> q_max ; 519 } } 527 $__q_t_nge ( q , m , max ) 528 DB_SEQUENCE * q ; 529 db_q_t m , max ; 531 DB_ENV * dbv ; 533 dbv = q -> q_dbp ->dbenv; 534 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->set_range"); 536 i( m > max ) { 537 `__db_rx ( dbv , 539 ( EINVAL ); 542 q -> q_ -> q_m = m ; 543 q -> q_ -> q_max = max ; 544 `F_SET ( q -> q_ , DB_SEQ_RANGE_SET ); 547 } } 550 $__q_upde ( q , txn , d , ags ) 551 DB_SEQUENCE * q ; 552 DB_TXN * txn ; 553 t32_t d ; 554 u_t32_t ags ; 556 DB * dbp ; 557 DB_ENV * dbv ; 558 DB_SEQ_RECORD * ; 559 t32_t adju ; 560 t , txn_lol ; 562 dbp = q -> q_dbp ; 563 dbv = dbp ->dbenv; 570 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 571 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 572 ( t ); 573 txn_lol = 1; 575 txn_lol = 0; 578 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 579 r ; 581 y : i(( t = `__db_g ( dbp , txn , & q -> q_key , &q-> q_da , 0)) != 0) { 582 i( t = DB_BUFFER_SMALL && 583 q -> q_da . size > (q-> q_cd )) { 584 q -> q_da . ags = DB_DBT_REALLOC ; 585 q -> q_da . da = NULL ; 586 y ; 588 r ; 591 i(! `__db_isbigdn ()) 592 q -> q_ = seq-> q_da . da ; 593 `SEQ_SWAP_IN ( q ); 594 = q -> q_ ; 596 i( `F_ISSET ( , DB_SEQ_WRAPPED )) 597 ovow ; 599 i( q -> q_da . size < (q-> q_cd )) { 600 `__db_rx ( dbv , "Bad sequenceecord format"); 601 t = EINVAL ; 602 r ; 605 adju = d > q -> q_che_size ? delta : seq->seq_cache_size; 616 aga : i( `F_ISSET ( , DB_SEQ_INC )) { 617 i( -> q_vue + adju - 1 <p->seq_value || 618 -> q_vue + adju - 1 >p-> q_max ) { 620 i( adju > d ) { 621 adju = d ; 622 aga ; 624 i( `F_ISSET ( , DB_SEQ_WRAP )) 625 -> q_vue =p-> q_m ; 627 ovow : `__db_rx ( dbv , "Sequence overflow"); 628 t = EINVAL ; 629 r ; 633 i(! `F_ISSET ( , DB_SEQ_WRAP ) && 634 -> q_vue + adju <p->seq_value) 635 `F_SET ( , DB_SEQ_WRAPPED ); 637 i(( -> q_vue - adju ) + 1 >p->seq_value || 638 ( -> q_vue - adju + 1 <p-> q_m ) { 640 i( adju > d ) { 641 adju = d ; 642 aga ; 644 i( `F_ISSET ( , DB_SEQ_WRAP )) 645 -> q_vue =p-> q_max ; 647 ovow ; 650 i(! `F_ISSET ( , DB_SEQ_WRAP ) && 651 -> q_vue - adju >p->seq_value) 652 `F_SET ( , DB_SEQ_WRAPPED ); 653 adju = -adjust; 656 -> q_vue + adju ; 657 `SEQ_SWAP_OUT ( q ); 658 t = `__db_put ( dbp , txn , & q -> q_key , &q-> q_da , 0); 659 -> q_vue - adju ; 660 i( t != 0) { 661 `__db_rx ( dbv , "Sequence update failed"); 662 r ; 664 q -> q_ϡ_vue = -> q_vue + adju ; 665 i( `F_ISSET ( , DB_SEQ_INC )) 666 q -> q_ϡ_vue --; 668 q -> q_ϡ_vue ++; 670 r : ( txn_lol ? `__db_txn_auto_sve ( 671 dbv , txn , `LF_ISSET ( DB_TXN_NOSYNC ), t ) :et); 672 } } 675 $__q_g ( q , txn , d , , ags ) 676 DB_SEQUENCE * q ; 677 DB_TXN * txn ; 678 t32_t d ; 679 db_q_t * ; 680 u_t32_t ags ; 682 DB * dbp ; 683 DB_ENV * dbv ; 684 DB_SEQ_RECORD * ; 685 DB_THREAD_INFO * ; 686 hd_check , t , t_t ; 688 dbp = q -> q_dbp ; 689 dbv = dbp ->dbenv; 690 = q -> q_ ; 691 t = 0; 693 `STRIP_AUTO_COMMIT ( ags ); 694 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get"); 696 i( d <= 0) { 697 `__db_rx ( dbv , "Sequence delta must be greaterhan 0"); 698 ( EINVAL ); 701 i( q -> q_che_size !0 && txn ! NULL ) { 702 `__db_rx ( dbv , 704 ( EINVAL ); 707 `ENV_ENTER ( dbv , ); 710 hd_check = `IS_ENV_REPLICATED ( dbv ); 711 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) 712 ( t ); 714 `MUTEX_LOCK ( dbv , q -> mtx_q ); 716 i( -> q_m + d >p-> q_max ) { 717 `__db_rx ( dbv , "Sequence overflow"); 718 t = EINVAL ; 719 r ; 722 i( `F_ISSET ( , DB_SEQ_INC )) { 723 i( q -> q_ϡ_vue + 1 - -> q_vue < d && 724 ( t = `__q_upde ( q , txn , d , ags )) != 0) 725 r ; 727 = q -> q_ ; 728 * = -> q_vue ; 729 -> q_vue + d ; 731 i(( -> q_vue - q -> q_ϡ_vue + 1 < d && 732 ( t = `__q_upde ( q , txn , d , ags )) != 0) 733 r ; 735 = q -> q_ ; 736 * = -> q_vue ; 737 -> q_vue - d ; 740 r : `MUTEX_UNLOCK ( dbv , q -> mtx_q ); 743 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 744 t = t_t ; 746 `ENV_LEAVE ( dbv , ); 747 ( t ); 748 } } 756 $__q_g_db ( q , db ) 757 DB_SEQUENCE * q ; 758 DB ** db ; 760 * db = q -> q_dbp ; 762 } } 770 $__q_g_key ( q , key ) 771 DB_SEQUENCE * q ; 772 DBT * key ; 774 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_key"); 776 i( `F_ISSET ( key , DB_DBT_USERCOPY )) 777 ( `__db_tcy ( q -> q_dbp -> dbv , key , 778 q -> q_key . da , seq->q_key. size , NULL , 0)); 780 key -> da = q -> q_key .data; 781 key -> size = key-> un = q -> q_key .size; 782 key -> ags = q -> q_key .flags; 784 } } 792 $__q_o ( q , ags ) 793 DB_SEQUENCE * q ; 794 u_t32_t ags ; 796 DB_ENV * dbv ; 797 t , t_t ; 799 t = 0; 800 dbv = q -> q_dbp ->dbenv; 802 i( ags != 0) 803 t = `__db_ ( dbv , "DB_SEQUENCE->close", 0); 805 i(( t_t = `__mux_ ( dbv , & q -> mtx_q )!0 && t == 0) 806 t = t_t ; 808 i( q -> q_key . da ! NULL ) 809 `__os_ ( dbv , q -> q_key . da ); 810 i( q -> q_da . da ! NULL && 811 q -> q_da . da !&q-> q_cd ) 812 `__os_u ( dbv , q -> q_da . da ); 813 q -> q_key . da = NULL ; 815 `memt ( q , CLEAR_BYTE , (*seq)); 816 `__os_ ( dbv , q ); 818 ( t ); 819 } } 826 $__q_move ( q , txn , ags ) 827 DB_SEQUENCE * q ; 828 DB_TXN * txn ; 829 u_t32_t ags ; 831 DB * dbp ; 832 DB_ENV * dbv ; 833 DB_THREAD_INFO * ; 834 hd_check , t , t_t , txn_lol ; 836 dbp = q -> q_dbp ; 837 dbv = dbp ->dbenv; 838 txn_lol = 0; 840 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->remove"); 841 `ENV_ENTER ( dbv , ); 844 hd_check = `IS_ENV_REPLICATED ( dbv ); 845 i( hd_check && 846 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 847 hd_check = 0; 848 r ; 850 i( ags != 0) { 851 t = `__db_ ( dbv , "DB_SEQUENCE->remove", 0); 852 r ; 860 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 861 i(( t = `__txn_beg ( dbv , NULL , & txn , 0)) != 0) 862 ( t ); 863 txn_lol = 1; 867 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 868 r ; 870 t = `__db_d ( dbp , txn , & q -> q_key , 0); 872 i(( t_t = `__q_o ( q , 0)!0 && t == 0) 873 t = t_t ; 876 i( hd_check && ( t_t = `__v_db_p_ex ( dbv )!0 && t == 0) 877 t = t_t ; 878 r : i( txn_lol && ( t_t = 879 `__db_txn_auto_sve ( dbv , txn , 0, t )) != 0 &&et == 0) 880 t = t_t ; 882 `ENV_LEAVE ( dbv , ); 883 ( t ); 884 } } 891 $__q_chk_chesize ( dbv , chesize , max , m ) 892 DB_ENV * dbv ; 893 t32_t chesize ; 894 db_q_t max , m ; 903 i(( u_t32_t ) chesize > ( u_t64_t ) max - (u_t64_t) m ) { 904 `__db_rx ( dbv , 906 ( EINVAL ); 909 } } 914 $db_qu_ ( qp , dbp , ags ) 915 DB_SEQUENCE ** qp ; 916 DB * dbp ; 917 u_t32_t ags ; 919 `COMPQUIET ( qp , NULL ); 920 `COMPQUIET ( ags , 0); 921 `__db_rx ( dbp -> dbv , 923 ( DB_OPNOTSUP ); 924 } } @../tcl/tcl_compat.c 9 ~"db_cfig.h " 10 #ifde CONFIG_TEST 12 #DB_DBM_HSEARCH 1 ) 13 ~"db_t.h " 14 #ifde HAVE_SYSTEM_INCLUDE_FILES 15 ~<t.h > 17 ~"dbc/t_db.h " 26 $bdb_HCommd ( , objc , objv ) 27 T_Ip * ; 28 objc ; 29 T_Obj * CONST objv []; 31 cڡ * hcmds [] = { 35 NULL 37 ehcmds { 38 HHCREATE , 39 HHDESTROY , 40 HHSEARCH 42 cڡ * chas [] = { 45 NULL 47 echas { 48 ACT_ENTER , 49 ACT_FIND 51 ENTRY em , * hs ; 52 ACTION ai ; 53 adex , cmddex , m , su , t ; 54 T_Obj * s ; 56 su = TCL_OK ; 62 i( `T_GIndexFromObj ( , 63 objv [1], hcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 64 ( `IS_HELP ( objv [1])); 66 s = NULL ; 67 ( hcmds ) cmddex ) { 68 HHCREATE : 72 i( objc != 3) { 73 `T_WrgNumArgs ( , 2, objv , "nelem"); 74 ( TCL_ERROR ); 76 su = `T_GIFromObj ( , objv [2], & m ); 77 i( su = TCL_OK ) { 78 `_debug_check (); 79 t = `h (( size_t ) m ) == 0 ? 1: 0; 80 () `_RuSup ( 81 , t , `DB_RETOK_STD (ret), "hcreate"); 84 HHSEARCH : 88 i( objc != 5) { 89 `T_WrgNumArgs ( , 2, objv , "key dataction"); 90 ( TCL_ERROR ); 92 em . key = `T_GSgFromObj ( objv [2], NULL ); 93 em . da = `T_GSgFromObj ( objv [3], NULL ); 94 i( `T_GIndexFromObj ( , objv [4], chas , 95 "ai", TCL_EXACT , & adex ! TCL_OK ) 96 ( `IS_HELP ( objv [4])); 97 ( chas ) adex ) { 98 ACT_ENTER : 99 ai = ENTER ; 102 ACT_FIND : 103 ai = FIND ; 106 `_debug_check (); 107 hs = `hch ( em , ai ); 108 i( hs = NULL ) 109 `T_SResu ( , "-1", TCL_STATIC ); 110 i( ai = FIND ) 111 `T_SResu ( , (*) hs -> da , TCL_STATIC ); 114 `T_SResu ( , "0", TCL_STATIC ); 117 HHDESTROY : 121 i( objc != 2) { 122 `T_WrgNumArgs ( , 2, objv , NULL ); 123 ( TCL_ERROR ); 125 `_debug_check (); 126 `hderoy (); 127 s = `T_NewIObj (0); 134 i( su = TCL_OK && s ) 135 `T_SObjResu ( , s ); 136 ( su ); 137 } } 149 $bdb_NdbmOn ( , objc , objv , db ) 150 T_Ip * ; 151 objc ; 152 T_Obj * CONST objv []; 153 DBM ** db ; 155 cڡ * ndbݒ [] = { 161 NULL 163 endbݒ { 164 NDB_CREATE , 165 NDB_MODE , 166 NDB_RDONLY , 167 NDB_TRUNC , 168 NDB_ENDARG 171 dg , i , mode , ݒ_ags , tdex , ad_ly , su , t ; 172 * g , * db ; 174 su = TCL_OK ; 175 dg = mode = ݒ_ags = ad_ly = 0; 177 i( objc < 2) { 178 `T_WrgNumArgs ( , 2, objv , "?args?"); 179 ( TCL_ERROR ); 186 i = 2; 187 i < objc ) { 188 i( `T_GIndexFromObj ( , objv [ i ], ndbݒ , "option", 189 TCL_EXACT , & tdex ! TCL_OK ) { 190 g = `T_GSgFromObj ( objv [ i ], NULL ); 191 i( g [0] == '-') { 192 su = `IS_HELP ( objv [ i ]); 193 r ; 195 `T_RetResu ( ); 198 i ++; 199 ( ndbݒ ) tdex ) { 200 NDB_CREATE : 201 ݒ_ags | O_CREAT ; 203 NDB_RDONLY : 204 ad_ly = 1; 206 NDB_TRUNC : 207 ݒ_ags | O_TRUNC ; 209 NDB_MODE : 210 i( i > objc ) { 211 `T_WrgNumArgs ( , 2, objv , 213 su = TCL_ERROR ; 222 su = `T_GIFromObj ( , objv [ i ++], & mode ); 224 NDB_ENDARG : 225 dg = 1; 233 i( su ! TCL_OK ) 234 r ; 235 i( dg ) 238 i( su ! TCL_OK ) 239 r ; 246 db = NULL ; 247 i( i ! objc && i != objc - 1) { 248 `T_WrgNumArgs ( , 2, objv , "?args? ?file?"); 249 su = TCL_ERROR ; 250 r ; 252 i( i ! objc ) 253 db = `T_GSgFromObj ( objv [ objc - 1], NULL ); 262 i( ad_ly ) 263 ݒ_ags | O_RDONLY ; 265 ݒ_ags | O_RDWR ; 266 `_debug_check (); 267 i((* db = `dbm_ݒ ( db , ݒ_ags , mode )= NULL ) { 268 t = `T_GEno (); 269 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 271 r ; 273 ( TCL_OK ); 275 r : 276 * db = NULL ; 277 ( su ); 278 } } 290 $bdb_DbmCommd ( , objc , objv , ag , dbm ) 291 T_Ip * ; 292 objc ; 293 T_Obj * CONST objv []; 294 ag ; 295 DBM * dbm ; 297 cڡ * dbmcmds [] = { 305 NULL 307 edbmcmds { 308 DBMCLOSE , 309 DBMINIT , 310 DBMDELETE , 311 DBMFETCH , 312 DBMFIRST , 313 DBMNEXT , 314 DBMSTORE 316 cڡ * ag [] = { 318 NULL 320 eag { 321 STINSERT , STREPLACE 323 dum key , da ; 324 * dtmp , * ktmp ; 325 u_t32_t size ; 326 cmddex , da , key , dex , su , t ; 327 * me , * t ; 329 su = TCL_OK ; 330 key = da = 0; 331 dtmp = ktmp = NULL ; 338 i( `T_GIndexFromObj ( , 339 objv [1], dbmcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 340 ( `IS_HELP ( objv [1])); 342 ( dbmcmds ) cmddex ) { 343 DBMCLOSE : 347 i( objc != 2) { 348 `T_WrgNumArgs ( , 2, objv , NULL ); 349 ( TCL_ERROR ); 351 `_debug_check (); 352 i( ag = DBTCL_DBM ) 353 t = `dbmo (); 355 `T_SResu ( , 356 "Bad i fg f commd", TCL_STATIC ); 357 ( TCL_ERROR ); 359 () `_RuSup ( , t , `DB_RETOK_STD (ret), "dbmclose"); 361 DBMINIT : 365 i( objc != 3) { 366 `T_WrgNumArgs ( , 2, objv , "file"); 367 ( TCL_ERROR ); 369 me = `T_GSgFromObj ( objv [2], NULL ); 370 i( ag = DBTCL_DBM ) 371 t = `dbm ( me ); 373 `T_SResu ( , "Bad interface flag for command", 374 TCL_STATIC ); 375 ( TCL_ERROR ); 377 () `_RuSup ( , t , `DB_RETOK_STD (ret), "dbminit"); 379 DBMFETCH : 383 i( objc != 3) { 384 `T_WrgNumArgs ( , 2, objv , "key"); 385 ( TCL_ERROR ); 387 i(( t = `_CyObjBys ( 388 , objv [2], & ktmp , & size , & key )) != 0) { 389 su = `_RuSup ( , t , 390 `DB_RETOK_STD ( t ), "dbm fetch"); 391 out ; 393 key . dsize = () size ; 394 key . dr = (*) ktmp ; 395 `_debug_check (); 396 i( ag = DBTCL_DBM ) 397 da = `tch ( key ); 398 i( ag = DBTCL_NDBM ) 399 da = `dbm_tch ( dbm , key ); 401 `T_SResu ( , 402 "Bad i fg f commd", TCL_STATIC ); 403 su = TCL_ERROR ; 404 out ; 406 i( da . dr = NULL || 407 ( t = `__os_mloc ( NULL , ( size_t ) da . dsize + 1, & t )) != 0) 408 `T_SResu ( , "-1", TCL_STATIC ); 410 `memy ( t , da . dr , ( size_t )da. dsize ); 411 t [ da . dsize ] = '\0'; 412 `T_SResu ( , t , TCL_VOLATILE ); 413 `__os_ ( NULL , t ); 416 DBMSTORE : 420 i( objc !4 && ag = DBTCL_DBM ) { 421 `T_WrgNumArgs ( , 2, objv , "key data"); 422 ( TCL_ERROR ); 424 i( objc !5 && ag = DBTCL_NDBM ) { 425 `T_WrgNumArgs ( , 2, objv , "key dataction"); 426 ( TCL_ERROR ); 428 i(( t = `_CyObjBys ( 429 , objv [2], & ktmp , & size , & key )) != 0) { 430 su = `_RuSup ( , t , 431 `DB_RETOK_STD ( t ), "dbm fetch"); 432 out ; 434 key . dsize = () size ; 435 key . dr = (*) ktmp ; 436 i(( t = `_CyObjBys ( 437 , objv [3], & dtmp , & size , & da )) != 0) { 438 su = `_RuSup ( , t , 439 `DB_RETOK_STD ( t ), "dbm fetch"); 440 out ; 442 da . dsize = () size ; 443 da . dr = (*) dtmp ; 444 `_debug_check (); 445 i( ag = DBTCL_DBM ) 446 t = `e ( key , da ); 447 i( ag = DBTCL_NDBM ) { 448 i( `T_GIndexFromObj ( , objv [4], ag , 449 "ag", TCL_EXACT , & dex ! TCL_OK ) 450 ( `IS_HELP ( objv [4])); 451 ( ag ) dex ) { 452 STINSERT : 453 ag = DBM_INSERT ; 455 STREPLACE : 456 ag = DBM_REPLACE ; 459 t = `dbm_e ( dbm , key , da , ag ); 461 `T_SResu ( , 462 "Bad i fg f commd", TCL_STATIC ); 463 ( TCL_ERROR ); 465 () `_RuSup ( , t , `DB_RETOK_STD (ret), "store"); 467 DBMDELETE : 471 i( objc != 3) { 472 `T_WrgNumArgs ( , 2, objv , "key"); 473 ( TCL_ERROR ); 475 i(( t = `_CyObjBys ( 476 , objv [2], & ktmp , & size , & key )) != 0) { 477 su = `_RuSup ( , t , 478 `DB_RETOK_STD ( t ), "dbm fetch"); 479 out ; 481 key . dsize = () size ; 482 key . dr = (*) ktmp ; 483 `_debug_check (); 484 i( ag = DBTCL_DBM ) 485 t = `de ( key ); 486 i( ag = DBTCL_NDBM ) 487 t = `dbm_de ( dbm , key ); 489 `T_SResu ( , 490 "Bad i fg f commd", TCL_STATIC ); 491 ( TCL_ERROR ); 493 () `_RuSup ( , t , `DB_RETOK_STD (ret), "delete"); 495 DBMFIRST : 499 i( objc != 2) { 500 `T_WrgNumArgs ( , 2, objv , NULL ); 501 ( TCL_ERROR ); 503 `_debug_check (); 504 i( ag = DBTCL_DBM ) 505 key = `fkey (); 506 i( ag = DBTCL_NDBM ) 507 key = `dbm_fkey ( dbm ); 509 `T_SResu ( , 510 "Bad i fg f commd", TCL_STATIC ); 511 ( TCL_ERROR ); 513 i( key . dr = NULL || 514 ( t = `__os_mloc ( NULL , ( size_t ) key . dsize + 1, & t )) != 0) 515 `T_SResu ( , "-1", TCL_STATIC ); 517 `memy ( t , key . dr , ( size_t )key. dsize ); 518 t [ key . dsize ] = '\0'; 519 `T_SResu ( , t , TCL_VOLATILE ); 520 `__os_ ( NULL , t ); 523 DBMNEXT : 527 `_debug_check (); 528 i( ag = DBTCL_DBM ) { 529 i( objc != 3) { 530 `T_WrgNumArgs ( , 2, objv , NULL ); 531 ( TCL_ERROR ); 533 i(( t = `_CyObjBys ( 534 , objv [2], & ktmp , & size , & key )) != 0) { 535 su = `_RuSup ( , t , 536 `DB_RETOK_STD ( t ), "dbm fetch"); 537 out ; 539 key . dsize = () size ; 540 key . dr = (*) ktmp ; 541 da = `xtkey ( key ); 542 } i( ag = DBTCL_NDBM ) { 543 i( objc != 2) { 544 `T_WrgNumArgs ( , 2, objv , NULL ); 545 ( TCL_ERROR ); 547 da = `dbm_xtkey ( dbm ); 549 `T_SResu ( , 550 "Bad i fg f commd", TCL_STATIC ); 551 ( TCL_ERROR ); 553 i( da . dr = NULL || 554 ( t = `__os_mloc ( NULL , ( size_t ) da . dsize + 1, & t )) != 0) 555 `T_SResu ( , "-1", TCL_STATIC ); 557 `memy ( t , da . dr , ( size_t )da. dsize ); 558 t [ da . dsize ] = '\0'; 559 `T_SResu ( , t , TCL_VOLATILE ); 560 `__os_ ( NULL , t ); 565 out : i( dtmp ! NULL && da ) 566 `__os_ ( NULL , dtmp ); 567 i( ktmp ! NULL && key ) 568 `__os_ ( NULL , ktmp ); 569 ( su ); 570 } } 579 $ndbm_Cmd ( Da , , objc , objv ) 580 ClDa Da ; 581 T_Ip * ; 582 objc ; 583 T_Obj * CONST objv []; 585 cڡ * ndbcmds [] = { 597 NULL 599 endbcmds { 600 NDBCLRERR , 601 NDBCLOSE , 602 NDBDELETE , 603 NDBDIRFNO , 604 NDBERR , 605 NDBFETCH , 606 NDBFIRST , 607 NDBNEXT , 608 NDBPAGFNO , 609 NDBRDONLY , 610 NDBSTORE 612 DBM * dbp ; 613 DBTCL_INFO * db ; 614 T_Obj * s ; 615 cmddex , su , t ; 617 `T_RetResu ( ); 618 dbp = ( DBM *) Da ; 619 db = `_PToInfo ((*) dbp ); 620 su = TCL_OK ; 621 i( objc <= 1) { 622 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 623 ( TCL_ERROR ); 625 i( dbp = NULL ) { 626 `T_SResu ( , "NULL dbor", TCL_STATIC ); 627 ( TCL_ERROR ); 629 i( db = NULL ) { 630 `T_SResu ( , "NULL db infpor", TCL_STATIC ); 631 ( TCL_ERROR ); 638 i( `T_GIndexFromObj ( , 639 objv [1], ndbcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 640 ( `IS_HELP ( objv [1])); 642 s = NULL ; 643 ( ndbcmds ) cmddex ) { 644 NDBCLOSE : 645 `_debug_check (); 646 `dbm_o ( dbp ); 647 () `T_DeCommd ( , db -> i_me ); 648 `_DeInfo ( db ); 649 s = `T_NewIObj (0); 651 NDBDELETE : 652 NDBFETCH : 653 NDBFIRST : 654 NDBNEXT : 655 NDBSTORE : 656 su = `bdb_DbmCommd ( , objc , objv , DBTCL_NDBM , dbp ); 658 NDBCLRERR : 662 i( objc > 2) { 663 `T_WrgNumArgs ( , 2, objv , NULL ); 664 ( TCL_ERROR ); 666 `_debug_check (); 667 t = `dbm_ ( dbp ); 668 i( t ) 669 () `_RuSup ( 670 , t , `DB_RETOK_STD (ret), "clearerr"); 672 s = `T_NewIObj ( t ); 674 NDBDIRFNO : 678 i( objc > 2) { 679 `T_WrgNumArgs ( , 2, objv , NULL ); 680 ( TCL_ERROR ); 682 `_debug_check (); 683 t = `dbm_do ( dbp ); 684 s = `T_NewIObj ( t ); 686 NDBPAGFNO : 690 i( objc > 2) { 691 `T_WrgNumArgs ( , 2, objv , NULL ); 692 ( TCL_ERROR ); 694 `_debug_check (); 695 t = `dbm_go ( dbp ); 696 s = `T_NewIObj ( t ); 698 NDBERR : 702 i( objc > 2) { 703 `T_WrgNumArgs ( , 2, objv , NULL ); 704 ( TCL_ERROR ); 706 `_debug_check (); 707 t = `dbm_r ( dbp ); 708 `T_SEno ( t ); 709 `T_SResu ( , 710 (*) `T_PosixE ( ), TCL_STATIC ); 712 NDBRDONLY : 716 i( objc > 2) { 717 `T_WrgNumArgs ( , 2, objv , NULL ); 718 ( TCL_ERROR ); 720 `_debug_check (); 721 t = `dbm_rdly ( dbp ); 722 i( t ) 723 () `_RuSup ( 724 , t , `DB_RETOK_STD (ret), "rdonly"); 726 s = `T_NewIObj ( t ); 734 i( su = TCL_OK && s ) 735 `T_SObjResu ( , s ); 736 ( su ); 737 } } @../tcl/tcl_db.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/db_ge.h " 16 ~"dbc/db_am.h " 17 ~"dbc/t_db.h " 22 t_DbAssoc __P (( T_Ip *, 23 , T_Obj * CONST *, DB *)); 24 t_DbClo __P (( T_Ip *, 25 , T_Obj * CONST *, DB *, DBTCL_INFO *)); 26 t_DbDe __P (( T_Ip *, , T_Obj * CONST *, DB *)); 27 t_DbG __P (( T_Ip *, , T_Obj * CONST *, DB *, )); 28 #ifde CONFIG_TEST 29 t_DbKeyRge __P (( T_Ip *, , T_Obj * CONST *, DB *)); 31 t_DbPut __P (( T_Ip *, , T_Obj * CONST *, DB *)); 32 t_DbSt __P (( T_Ip *, , T_Obj * CONST *, DB *)); 33 t_DbTrun __P (( T_Ip *, , T_Obj * CONST *, DB *)); 34 #ifde CONFIG_TEST 35 t_DbCom __P (( T_Ip *, , T_Obj * CONST *, DB *)); 36 t_DbComSt __P (( T_Ip *, 37 , T_Obj * CONST *, DB *)); 39 t_DbCurs __P (( T_Ip *, 40 , T_Obj * CONST *, DB *, DBC **)); 41 t_DbJo __P (( T_Ip *, 42 , T_Obj * CONST *, DB *, DBC **)); 43 t_DbGFgs __P (( T_Ip *, , T_Obj * CONST *, DB *)); 44 t_DbGOnFgs __P (( T_Ip *, 45 , T_Obj * CONST *, DB *)); 46 t_DbGjo __P (( T_Ip *, , T_Obj * CONST *, DB *)); 47 t_DbCou __P (( T_Ip *, , T_Obj * CONST *, DB *)); 48 t_cd_ __P (( DB *, cڡ DBT *, const DBT *, DBT *)); 56 $_DbInfoDe ( , db ) 57 T_Ip * ; 58 DBTCL_INFO * db ; 60 DBTCL_INFO * x , * p ; 65 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 66 x = `LIST_NEXT ( p , s ); 72 i( p -> i_ = db &&-> i_ty = I_DBC ) { 73 () `T_DeCommd ( , p -> i_me ); 74 `_DeInfo ( p ); 77 () `T_DeCommd ( , db -> i_me ); 78 `_DeInfo ( db ); 79 } } 89 $db_Cmd ( Da , , objc , objv ) 90 ClDa Da ; 91 T_Ip * ; 92 objc ; 93 T_Obj * CONST objv []; 95 cڡ * dbcmds [] = { 96 #ifde CONFIG_TEST 135 NULL 137 edbcmds { 138 #ifde CONFIG_TEST 139 DBKEYRANGE , 140 DBPGET , 141 DBRPCID , 142 DBTEST , 143 DBCOMPACT , 144 DBCOMPACT_STAT , 146 DBASSOCIATE , 147 DBCLOSE , 148 DBCOUNT , 149 DBCURSOR , 150 DBDELETE , 151 DBGET , 152 DBGETBTMINKEY , 153 DBGETCACHESIZE , 154 DBGETDBNAME , 155 DBGETENCRYPTFLAGS , 156 DBGETENV , 157 DBGETERRPFX , 158 DBGETFLAGS , 159 DBGETHFFACTOR , 160 DBGETHNELEM , 161 DBGETJOIN , 162 DBGETLORDER , 163 DBGETOPENFLAGS , 164 DBGETPAGESIZE , 165 DBGETQEXTENTSIZE , 166 DBGETREDELIM , 167 DBGETRELEN , 168 DBGETREPAD , 169 DBGETRESOURCE , 170 DBGETTYPE , 171 DBSWAPPED , 172 DBJOIN , 173 DBPUT , 174 DBSTAT , 175 DBSYNC , 176 DBTRUNCATE 178 DB * dbp ; 179 DB_ENV * dbv ; 180 DBC * dbc ; 181 DBTCL_INFO * db , * ; 182 DBTYPE ty ; 183 T_Obj * s , * myobjv [3]; 184 cmddex , tv , nche , su , t ; 185 wme [ MSG_SIZE ]; 186 u_t32_t bys , gbys , vue ; 187 cڡ * rv , * fame , * dbme , * vid ; 189 `T_RetResu ( ); 190 dbp = ( DB *) Da ; 191 db = `_PToInfo ((*) dbp ); 192 `memt ( wme , 0, MSG_SIZE ); 193 su = TCL_OK ; 194 i( objc <= 1) { 195 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 196 ( TCL_ERROR ); 198 i( dbp = NULL ) { 199 `T_SResu ( , "NULL dbor", TCL_STATIC ); 200 ( TCL_ERROR ); 202 i( db = NULL ) { 203 `T_SResu ( , "NULL db infpor", TCL_STATIC ); 204 ( TCL_ERROR ); 211 i( `T_GIndexFromObj ( , 212 objv [1], dbcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 213 ( `IS_HELP ( objv [1])); 215 s = NULL ; 216 ( dbcmds ) cmddex ) { 217 #ifde CONFIG_TEST 218 DBKEYRANGE : 219 su = `t_DbKeyRge ( , objc , objv , dbp ); 221 DBPGET : 222 su = `t_DbG ( , objc , objv , dbp , 1); 224 DBRPCID : 228 i( objc > 2) { 229 `T_WrgNumArgs ( , 2, objv , NULL ); 230 ( TCL_ERROR ); 236 s = `T_NewLgObj (() dbp -> _id ); 238 DBTEST : 239 su = `t_EnvTe ( , objc , objv , dbp -> dbv ); 242 DBCOMPACT : 243 su = `t_DbCom ( , objc , objv , dbp ); 246 DBCOMPACT_STAT : 247 su = `t_DbComSt ( , objc , objv , dbp ); 251 DBASSOCIATE : 252 su = `t_DbAssoc ( , objc , objv , dbp ); 254 DBCLOSE : 255 su = `t_DbClo ( , objc , objv , dbp , db ); 257 DBDELETE : 258 su = `t_DbDe ( , objc , objv , dbp ); 260 DBGET : 261 su = `t_DbG ( , objc , objv , dbp , 0); 263 DBPUT : 264 su = `t_DbPut ( , objc , objv , dbp ); 266 DBCOUNT : 267 su = `t_DbCou ( , objc , objv , dbp ); 269 DBSWAPPED : 273 i( objc > 2) { 274 `T_WrgNumArgs ( , 2, objv , NULL ); 275 ( TCL_ERROR ); 277 `_debug_check (); 278 t = dbp -> `g_byswd (dbp, & tv ); 279 s = `T_NewIObj ( tv ); 281 DBGETTYPE : 285 i( objc > 2) { 286 `T_WrgNumArgs ( , 2, objv , NULL ); 287 ( TCL_ERROR ); 289 `_debug_check (); 290 t = dbp -> `g_ty (dbp, & ty ); 291 i( ty = DB_BTREE ) 292 s = `NewSgObj ("b", ` ("btree")); 293 i( ty = DB_HASH ) 294 s = `NewSgObj ("hash", ` ("hash")); 295 i( ty = DB_RECNO ) 296 s = `NewSgObj ("o", ` ("recno")); 297 i( ty = DB_QUEUE ) 298 s = `NewSgObj ("queue", ` ("queue")); 300 `T_SResu ( , 301 "db gty: Rued unknowty\n", TCL_STATIC ); 302 su = TCL_ERROR ; 305 DBSTAT : 306 su = `t_DbSt ( , objc , objv , dbp ); 308 DBSYNC : 312 i( objc > 2) { 313 `T_WrgNumArgs ( , 2, objv , NULL ); 314 ( TCL_ERROR ); 316 `_debug_check (); 317 t = dbp -> `sync (dbp, 0); 318 s = `T_NewIObj ( t ); 319 i( t != 0) { 320 `T_SObjResu ( , s ); 321 su = TCL_ERROR ; 324 DBCURSOR : 325 `tf ( wme , (newname), 326 "%s.c%d", db -> i_me , db-> i_dbdbcid ); 327 = `_NewInfo ( , NULL , wme , I_DBC ); 328 i( ! NULL ) { 329 su = `t_DbCurs ( , objc , objv , dbp , & dbc ); 330 i( su = TCL_OK ) { 331 db -> i_dbdbcid ++; 332 -> i_ = db ; 333 () `T_CeObjCommd ( , wme , 334 ( T_ObjCmdProc *) dbc_Cmd , 335 ( ClDa ) dbc , NULL ); 336 s = `NewSgObj ( wme , ` (newname)); 337 `_SInfoDa ( , dbc ); 339 `_DeInfo ( ); 341 `T_SResu ( , 342 "Could s ufo", TCL_STATIC ); 343 su = TCL_ERROR ; 346 DBJOIN : 347 `tf ( wme , (newname), 348 "%s.c%d", db -> i_me , db-> i_dbdbcid ); 349 = `_NewInfo ( , NULL , wme , I_DBC ); 350 i( ! NULL ) { 351 su = `t_DbJo ( , objc , objv , dbp , & dbc ); 352 i( su = TCL_OK ) { 353 db -> i_dbdbcid ++; 354 -> i_ = db ; 355 () `T_CeObjCommd ( , wme , 356 ( T_ObjCmdProc *) dbc_Cmd , 357 ( ClDa ) dbc , NULL ); 358 s = `NewSgObj ( wme , ` (newname)); 359 `_SInfoDa ( , dbc ); 361 `_DeInfo ( ); 363 `T_SResu ( , 364 "Could s ufo", TCL_STATIC ); 365 su = TCL_ERROR ; 368 DBGETBTMINKEY : 369 i( objc != 2) { 370 `T_WrgNumArgs ( , 1, objv , NULL ); 371 ( TCL_ERROR ); 373 t = dbp -> `g_bt_mkey (dbp, & vue ); 374 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 375 "db g_bt_mkey")= TCL_OK ) 376 s = `T_NewIObj (() vue ); 378 DBGETCACHESIZE : 379 i( objc != 2) { 380 `T_WrgNumArgs ( , 1, objv , NULL ); 381 ( TCL_ERROR ); 383 t = dbp -> `g_chesize (dbp, & gbys , & bys , & nche ); 384 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 385 "db g_chesize")= TCL_OK ) { 386 myobjv [0] = `T_NewIObj (() gbys ); 387 myobjv [1] = `T_NewIObj (() bys ); 388 myobjv [2] = `T_NewIObj (() nche ); 389 s = `T_NewLiObj (3, myobjv ); 392 DBGETDBNAME : 393 i( objc != 2) { 394 `T_WrgNumArgs ( , 1, objv , NULL ); 395 ( TCL_ERROR ); 397 t = dbp -> `g_dbme (dbp, & fame , & dbme ); 398 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 399 "db g_dbme")= TCL_OK ) { 400 myobjv [0] = `NewSgObj ( fame , ` (filename)); 401 myobjv [1] = `NewSgObj ( dbme , ` (dbname)); 402 s = `T_NewLiObj (2, myobjv ); 405 DBGETENCRYPTFLAGS : 406 su = `t_EnvGEnyFgs ( , objc , objv , dbp -> dbv ); 408 DBGETENV : 409 i( objc != 2) { 410 `T_WrgNumArgs ( , 1, objv , NULL ); 411 ( TCL_ERROR ); 413 dbv = dbp -> `g_v (dbp); 414 i( dbv ! NULL && ( = `_PToInfo (dbenv)) != NULL) { 415 vid = -> i_me ; 416 s = `NewSgObj ( vid , ` (envid)); 418 `T_RetResu ( ); 420 DBGETERRPFX : 421 i( objc != 2) { 422 `T_WrgNumArgs ( , 1, objv , NULL ); 423 ( TCL_ERROR ); 425 dbp -> `g_fx (dbp, & rv ); 426 s = `NewSgObj ( rv , ` (strval)); 428 DBGETFLAGS : 429 su = `t_DbGFgs ( , objc , objv , dbp ); 431 DBGETHFFACTOR : 432 i( objc != 2) { 433 `T_WrgNumArgs ( , 1, objv , NULL ); 434 ( TCL_ERROR ); 436 t = dbp -> `g_h_f (dbp, & vue ); 437 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 438 "db g_h_f")= TCL_OK ) 439 s = `T_NewIObj (() vue ); 441 DBGETHNELEM : 442 i( objc != 2) { 443 `T_WrgNumArgs ( , 1, objv , NULL ); 444 ( TCL_ERROR ); 446 t = dbp -> `g_h_m (dbp, & vue ); 447 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 448 "db g_h_m")= TCL_OK ) 449 s = `T_NewIObj (() vue ); 451 DBGETJOIN : 452 su = `t_DbGjo ( , objc , objv , dbp ); 454 DBGETLORDER : 458 i( objc > 2) { 459 `T_WrgNumArgs ( , 2, objv , NULL ); 460 ( TCL_ERROR ); 462 `_debug_check (); 463 t = dbp -> `g_ld (dbp, & tv ); 464 s = `T_NewIObj ( tv ); 466 DBGETOPENFLAGS : 467 su = `t_DbGOnFgs ( , objc , objv , dbp ); 469 DBGETPAGESIZE : 470 i( objc != 2) { 471 `T_WrgNumArgs ( , 1, objv , NULL ); 472 ( TCL_ERROR ); 474 t = dbp -> `g_gesize (dbp, & vue ); 475 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 476 "db g_gesize")= TCL_OK ) 477 s = `T_NewIObj (() vue ); 479 DBGETQEXTENTSIZE : 480 i( objc != 2) { 481 `T_WrgNumArgs ( , 1, objv , NULL ); 482 ( TCL_ERROR ); 484 t = dbp -> `g_q_exsize (dbp, & vue ); 485 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 486 "db g_q_exsize")= TCL_OK ) 487 s = `T_NewIObj (() vue ); 489 DBGETREDELIM : 490 i( objc != 2) { 491 `T_WrgNumArgs ( , 1, objv , NULL ); 492 ( TCL_ERROR ); 494 t = dbp -> `g__dim (dbp, & tv ); 495 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 496 "db g__dim")= TCL_OK ) 497 s = `T_NewIObj ( tv ); 499 DBGETRELEN : 500 i( objc != 2) { 501 `T_WrgNumArgs ( , 1, objv , NULL ); 502 ( TCL_ERROR ); 504 t = dbp -> `g__n (dbp, & vue ); 505 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 506 "db g__n")= TCL_OK ) 507 s = `T_NewIObj (() vue ); 509 DBGETREPAD : 510 i( objc != 2) { 511 `T_WrgNumArgs ( , 1, objv , NULL ); 512 ( TCL_ERROR ); 514 t = dbp -> `g__d (dbp, & tv ); 515 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 516 "db g__d")= TCL_OK ) 517 s = `T_NewIObj (() tv ); 519 DBGETRESOURCE : 520 i( objc != 2) { 521 `T_WrgNumArgs ( , 1, objv , NULL ); 522 ( TCL_ERROR ); 524 t = dbp -> `g__sour (dbp, & rv ); 525 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 526 "db g__sour")= TCL_OK ) 527 s = `NewSgObj ( rv , ` (strval)); 529 DBTRUNCATE : 530 su = `t_DbTrun ( , objc , objv , dbp ); 537 i( su = TCL_OK && s ) 538 `T_SObjResu ( , s ); 539 ( su ); 540 } } 546 $t_DbSt ( , objc , objv , dbp ) 547 T_Ip * ; 548 objc ; 549 T_Obj * CONST objv []; 550 DB * dbp ; 552 cڡ * dbts [] = { 553 #ifde CONFIG_TEST 559 NULL 561 edbts { 562 #ifde CONFIG_TEST 563 DBCUR_READ_COMMITTED , 564 DBCUR_READ_UNCOMMITTED , 566 DBCUR_FASTSTAT , 567 DBCUR_TXN 569 DBTYPE ty ; 570 DB_BTREE_STAT * b ; 571 DB_HASH_STAT * h ; 572 DB_QUEUE_STAT * q ; 573 DB_TXN * txn ; 574 T_Obj * s , * agli , * myobjv [2]; 575 u_t32_t ag ; 576 i , tdex , su , t ; 577 * g , msg [ MSG_SIZE ]; 578 * ; 580 su = TCL_OK ; 581 ag = 0; 582 txn = NULL ; 583 = NULL ; 584 i = 2; 585 i < objc ) { 586 i( `T_GIndexFromObj ( , objv [ i ], dbts , "option", 587 TCL_EXACT , & tdex ! TCL_OK ) { 588 su = `IS_HELP ( objv [ i ]); 589 r ; 591 i ++; 592 ( dbts ) tdex ) { 593 #ifde CONFIG_TEST 594 DBCUR_READ_COMMITTED : 595 ag | DB_READ_COMMITTED ; 597 DBCUR_READ_UNCOMMITTED : 598 ag | DB_READ_UNCOMMITTED ; 601 DBCUR_FASTSTAT : 602 ag | DB_FAST_STAT ; 604 DBCUR_TXN : 605 i( i = objc ) { 606 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 607 su = TCL_ERROR ; 610 g = `T_GSgFromObj ( objv [ i ++], NULL ); 611 txn = `NAME_TO_TXN ( g ); 612 i( txn = NULL ) { 613 `tf ( msg , MSG_SIZE , 614 "St: Invidxn: %s\n", g ); 615 `T_SResu ( , msg , TCL_VOLATILE ); 616 su = TCL_ERROR ; 620 i( su ! TCL_OK ) 623 i( su ! TCL_OK ) 624 r ; 626 `_debug_check (); 627 t = dbp -> ` (dbp, txn , & , ag ); 628 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db stat"); 629 i( su = TCL_ERROR ) 630 ( su ); 632 () dbp -> `g_ty (dbp, & ty ); 637 s = `T_NewObj (); 642 i( ty = DB_HASH ) { 643 h = ( DB_HASH_STAT *) ; 644 `MAKE_STAT_LIST ("Magic", h -> hash_magic ); 645 `MAKE_STAT_LIST ("Vsi", h -> hash_vsi ); 646 `MAKE_STAT_LIST ("Pagsize", h -> hash_gesize ); 647 `MAKE_STAT_LIST ("Pagcou", h -> hash_get ); 648 `MAKE_STAT_LIST ("Numb okeys", h -> hash_nkeys ); 649 `MAKE_STAT_LIST ("Numb ocds", h -> hash_nda ); 650 `MAKE_STAT_LIST ("F", h -> hash_f ); 651 `MAKE_STAT_LIST ("Bucks", h -> hash_bucks ); 652 i( ag ! DB_FAST_STAT ) { 653 `MAKE_STAT_LIST ("Fges", h -> hash_ ); 654 `MAKE_STAT_LIST ("By", h -> hash_b ); 655 `MAKE_STAT_LIST ("Number of bigages", 656 h -> hash_bigges ); 657 `MAKE_STAT_LIST ("Bigages bytes free", 658 h -> hash_big_b ); 659 `MAKE_STAT_LIST ("Ovowages", h -> hash_ovows ); 660 `MAKE_STAT_LIST ("Overflow bytes free", 661 h -> hash_ov_ ); 662 `MAKE_STAT_LIST ("Duiages", h -> hash_dup ); 663 `MAKE_STAT_LIST ("Duplicateages bytes free", 664 h -> hash_dup_ ); 666 } i( ty = DB_QUEUE ) { 667 q = ( DB_QUEUE_STAT *) ; 668 `MAKE_STAT_LIST ("Magic", q -> qs_magic ); 669 `MAKE_STAT_LIST ("Vsi", q -> qs_vsi ); 670 `MAKE_STAT_LIST ("Pagsize", q -> qs_gesize ); 671 `MAKE_STAT_LIST ("Ex size", q -> qs_exsize ); 672 `MAKE_STAT_LIST ("Numb ocds", q -> qs_nkeys ); 673 `MAKE_STAT_LIST ("Recdgth", q -> qs__n ); 674 `MAKE_STAT_LIST ("Recdad", q -> qs__d ); 675 `MAKE_STAT_LIST ("Fecdumb", q -> qs_f_o ); 676 `MAKE_STAT_LIST ("Laecdumb", q -> qs_cur_o ); 677 i( ag ! DB_FAST_STAT ) { 678 `MAKE_STAT_LIST ("Numb oges", q -> qs_ges ); 679 `MAKE_STAT_LIST ("By", q -> qs_pg ); 682 b = ( DB_BTREE_STAT *) ; 683 `MAKE_STAT_LIST ("Magic", b -> bt_magic ); 684 `MAKE_STAT_LIST ("Vsi", b -> bt_vsi ); 685 `MAKE_STAT_LIST ("Numb okeys", b -> bt_nkeys ); 686 `MAKE_STAT_LIST ("Numb ocds", b -> bt_nda ); 687 `MAKE_STAT_LIST ("Mimum keyge", b -> bt_mkey ); 688 `MAKE_STAT_LIST ("Fixedecdgth", b -> bt__n ); 689 `MAKE_STAT_LIST ("Recdad", b -> bt__d ); 690 `MAKE_STAT_LIST ("Pagsize", b -> bt_gesize ); 691 `MAKE_STAT_LIST ("Pagcou", b -> bt_get ); 692 i( ag ! DB_FAST_STAT ) { 693 `MAKE_STAT_LIST ("Levs", b -> bt_vs ); 694 `MAKE_STAT_LIST ("Iȷges", b -> bt_t_pg ); 695 `MAKE_STAT_LIST ("Lges", b -> bt_af_pg ); 696 `MAKE_STAT_LIST ("Duiages", b -> bt_dup_pg ); 697 `MAKE_STAT_LIST ("Ovowages", b -> bt_ov_pg ); 698 `MAKE_STAT_LIST ("Emyages", b -> bt_emy_pg ); 699 `MAKE_STAT_LIST ("Page fi", b -> bt_ ); 700 `MAKE_STAT_LIST ("Internalages bytes free", 701 b -> bt_t_pg ); 702 `MAKE_STAT_LIST ("Leafages bytes free", 703 b -> bt_af_pg ); 704 `MAKE_STAT_LIST ("Duplicateages bytes free", 705 b -> bt_dup_pg ); 706 `MAKE_STAT_LIST ("Bytes free in overflowages", 707 b -> bt_ov_pg ); 717 myobjv [0] = `NewSgObj ("Fgs", ` ("Flags")); 718 myobjv [1] = `_GFgsLi ( , dbp -> ags , `__db_g_ags_ ()); 719 agli = `T_NewLiObj (2, myobjv ); 720 i( agli = NULL ) { 721 su = TCL_ERROR ; 722 r ; 724 i(( su = 725 `T_LiObjAdEmt ( , s , agli )! TCL_OK ) 726 r ; 728 `T_SObjResu ( , s ); 729 r : 730 i( ! NULL ) 731 `__os_u ( dbp -> dbv , ); 732 ( su ); 733 } } 739 $t_DbClo ( , objc , objv , dbp , db ) 740 T_Ip * ; 741 objc ; 742 T_Obj * CONST objv []; 743 DB * dbp ; 744 DBTCL_INFO * db ; 746 cڡ * dbo [] = { 747 "-nosync", "--", NULL 749 edbo { 750 TCL_DBCLOSE_NOSYNC , 751 TCL_DBCLOSE_ENDARG 753 u_t32_t ag ; 754 dg , i , tdex , su , t ; 755 * g ; 757 su = TCL_OK ; 758 dg = 0; 759 ag = 0; 760 i( objc > 4) { 761 `T_WrgNumArgs ( , 2, objv , "?-nosync?"); 762 ( TCL_ERROR ); 765 i = 2; i < objc ; ++i) { 766 i( `T_GIndexFromObj ( , objv [ i ], dbo , 767 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 768 g = `T_GSgFromObj ( objv [ i ], NULL ); 769 i( g [0] == '-') 770 ( `IS_HELP ( objv [ i ])); 772 `T_RetResu ( ); 775 ( dbo ) tdex ) { 776 TCL_DBCLOSE_NOSYNC : 777 ag = DB_NOSYNC ; 779 TCL_DBCLOSE_ENDARG : 780 dg = 1; 787 i( su ! TCL_OK ) 788 ( su ); 789 i( dg ) 792 i( db -> i_cda ! NULL ) 793 `__os_ ( dbp -> dbv , db -> i_cda ); 794 `_DbInfoDe ( , db ); 795 `_debug_check (); 798 dbp -> i_ = NULL ; 800 t = ( dbp )-> `o (dbp, ag ); 801 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db close"); 802 ( su ); 803 } } 809 $t_DbPut ( , objc , objv , dbp ) 810 T_Ip * ; 811 objc ; 812 T_Obj * CONST objv []; 813 DB * dbp ; 815 cڡ * dbputts [] = { 816 #ifde CONFIG_TEST 823 NULL 825 edbputts { 826 #ifde CONFIG_TEST 827 DBGET_NODUPDATA , 829 DBPUT_APPEND , 830 DBPUT_NOOVER , 831 DBPUT_PART , 832 DBPUT_TXN 834 cڡ * dbpu [] = { 835 "-nd", NULL 837 edbpu { DBPUT_APPEND0 }; 838 DBT key , da ; 839 DBTYPE ty ; 840 DB_TXN * txn ; 841 T_Obj ** emv , * s ; 842 * dtmp , * ktmp ; 843 db_o_t o ; 844 u_t32_t ag ; 845 emc , d , key , da ; 846 i , tdex , su , t ; 847 * g , msg [ MSG_SIZE ]; 849 txn = NULL ; 850 su = TCL_OK ; 851 ag = 0; 852 i( objc <= 3) { 853 `T_WrgNumArgs ( , 2, objv , "?-args? key data"); 854 ( TCL_ERROR ); 857 dtmp = ktmp = NULL ; 858 key = da = 0; 859 `memt (& key , 0, (key)); 860 `memt (& da , 0, (data)); 867 () dbp -> `g_ty (dbp, & ty ); 877 d = objc - 2; 878 i( ty = DB_QUEUE ||y = DB_RECNO ) { 879 i = 2; 880 i < objc - 1) { 881 i( `T_GIndexFromObj ( , objv [ i ++], dbpu , 882 "ti", TCL_EXACT , & tdex ! TCL_OK ) 884 ( dbpu ) tdex ) { 885 DBPUT_APPEND0 : 886 d = objc - 1; 891 `T_RetResu ( ); 897 i = 2; 898 i < d ) { 899 i( `T_GIndexFromObj ( , objv [ i ], 900 dbputts , "ti", TCL_EXACT , & tdex ! TCL_OK ) 901 ( `IS_HELP ( objv [ i ])); 902 i ++; 903 ( dbputts ) tdex ) { 904 #ifde CONFIG_TEST 905 DBGET_NODUPDATA : 906 `FLAG_CHECK ( ag ); 907 ag = DB_NODUPDATA ; 910 DBPUT_TXN : 911 i( i > ( d - 1)) { 912 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 913 su = TCL_ERROR ; 916 g = `T_GSgFromObj ( objv [ i ++], NULL ); 917 txn = `NAME_TO_TXN ( g ); 918 i( txn = NULL ) { 919 `tf ( msg , MSG_SIZE , 920 "Put: Invidxn: %s\n", g ); 921 `T_SResu ( , msg , TCL_VOLATILE ); 922 su = TCL_ERROR ; 925 DBPUT_APPEND : 926 `FLAG_CHECK ( ag ); 927 ag = DB_APPEND ; 929 DBPUT_NOOVER : 930 `FLAG_CHECK ( ag ); 931 ag = DB_NOOVERWRITE ; 933 DBPUT_PART : 934 i( i > ( d - 1)) { 935 `T_WrgNumArgs ( , 2, objv , 937 su = TCL_ERROR ; 943 su = `T_LiObjGEmts ( , objv [ i ++], 944 & emc , & emv ); 945 i( emc != 2) { 946 `T_SResu ( , 947 "Li mu b{offngth}", TCL_STATIC ); 948 su = TCL_ERROR ; 951 da . ags = DB_DBT_PARTIAL ; 952 su = `_GUI32 ( , emv [0], & da . doff ); 953 i( su ! TCL_OK ) 955 su = `_GUI32 ( , emv [1], & da . dn ); 965 i( su ! TCL_OK ) 969 i( su = TCL_ERROR ) 970 ( su ); 976 i( ty = DB_QUEUE ||y = DB_RECNO ) { 977 key . da = & o ; 978 key . un = key. size = ( db_o_t ); 979 key . ags = DB_DBT_USERMEM ; 980 i( ag = DB_APPEND ) 981 o = 0; 983 su = `_GUI32 ( , objv [ objc -2], & o ); 984 i( su ! TCL_OK ) 985 ( su ); 988 `COMPQUIET ( o , 0); 990 t = `_CyObjBys ( , objv [ objc -2], & ktmp , 991 & key . size , & key ); 992 i( t != 0) { 993 su = `_RuSup ( , t , 994 `DB_RETOK_DBPUT ( t ), "dbut"); 995 ( su ); 997 key . da = ktmp ; 999 t = `_CyObjBys ( , objv [ objc -1], & dtmp , & da . size , & da ); 1000 i( t != 0) { 1001 su = `_RuSup ( , t , 1002 `DB_RETOK_DBPUT ( t ), "dbut"); 1003 out ; 1005 da .d dtmp ; 1006 `_debug_check (); 1007 t = dbp -> `put (dbp, txn , & key , & da , ag ); 1008 su = `_RuSup ( , t , `DB_RETOK_DBPUT (ret), "dbut"); 1011 i( t == 0 && 1012 ( ty = DB_QUEUE ||y = DB_RECNO && ag = DB_APPEND ) { 1013 s = `T_NewWideIObj (( T_WideI ) o ); 1014 `T_SObjResu ( , s ); 1017 out : i( dtmp ! NULL && da ) 1018 `__os_ ( dbp -> dbv , dtmp ); 1019 i( ktmp ! NULL && key ) 1020 `__os_ ( dbp -> dbv , ktmp ); 1021 ( su ); 1022 } } 1028 $t_DbG ( , objc , objv , dbp , ig ) 1029 T_Ip * ; 1030 objc ; 1031 T_Obj * CONST objv []; 1032 DB * dbp ; 1033 ig ; 1035 cڡ * dbgts [] = { 1036 #ifde CONFIG_TEST 1052 NULL 1054 edbgts { 1055 #ifde CONFIG_TEST 1056 DBGET_DATA_BUF_SIZE , 1057 DBGET_MULTI , 1058 DBGET_NOLEASE , 1059 DBGET_READ_COMMITTED , 1060 DBGET_READ_UNCOMMITTED , 1062 DBGET_CONSUME , 1063 DBGET_CONSUME_WAIT , 1064 DBGET_BOTH , 1065 DBGET_GLOB , 1066 DBGET_PART , 1067 DBGET_RECNO , 1068 DBGET_RMW , 1069 DBGET_TXN , 1070 DBGET_ENDARG 1072 DBC * dbc ; 1073 DBT key , pkey , da , ve ; 1074 DBTYPE y , ty ; 1075 DB_TXN * txn ; 1076 T_Obj ** emv , * i ; 1077 db_o_t eo , o ; 1078 u_t32_t ag , cag , isdup , mag , rmw ; 1079 emc , d , dg , key , da , i ; 1080 tdex , su , t , uglob , ueo , uo ; 1081 * g , * n , * efix , msg [ MSG_SIZE ]; 1082 * dtmp , * ktmp ; 1083 #ifde CONFIG_TEST 1084 bufsize , da_buf_size ; 1087 su = TCL_OK ; 1088 key = da = 0; 1089 cag = dg = ag = mag = rmw = 0; 1090 uglob = uo = 0; 1091 txn = NULL ; 1092 n = efix = NULL ; 1093 dtmp = ktmp = NULL ; 1094 #ifde CONFIG_TEST 1095 `COMPQUIET ( bufsize , 0); 1096 da_buf_size = 0; 1099 i( objc < 3) { 1100 `T_WrgNumArgs ( , 2, objv , "?-args? key"); 1101 ( TCL_ERROR ); 1104 `memt (& key , 0, (key)); 1105 `memt (& da , 0, (data)); 1106 `memt (& ve , 0, (save)); 1109 `memt (& pkey , 0, (pkey)); 1115 i = 2; 1116 () dbp -> `g_ty (dbp, & ty ); 1117 d = objc ; 1118 i < d ) { 1119 i( `T_GIndexFromObj ( , objv [ i ], dbgts , "option", 1120 TCL_EXACT , & tdex ! TCL_OK ) { 1121 g = `T_GSgFromObj ( objv [ i ], NULL ); 1122 i( g [0] == '-') { 1123 su = `IS_HELP ( objv [ i ]); 1124 out ; 1126 `T_RetResu ( ); 1129 i ++; 1130 ( dbgts ) tdex ) { 1131 #ifde CONFIG_TEST 1132 DBGET_DATA_BUF_SIZE : 1133 su = 1134 `T_GIFromObj ( , objv [ i ], & da_buf_size ); 1135 i( su ! TCL_OK ) 1136 out ; 1137 i ++; 1139 DBGET_MULTI : 1140 mag | DB_MULTIPLE ; 1141 su = 1142 `T_GIFromObj ( , objv [ i ], & bufsize ); 1143 i( su ! TCL_OK ) 1144 out ; 1145 i ++; 1147 DBGET_NOLEASE : 1148 rmw | DB_IGNORE_LEASE ; 1150 DBGET_READ_COMMITTED : 1151 rmw | DB_READ_COMMITTED ; 1153 DBGET_READ_UNCOMMITTED : 1154 rmw | DB_READ_UNCOMMITTED ; 1157 DBGET_BOTH : 1162 i( i > objc - 2) { 1163 `T_WrgNumArgs ( , 2, objv , 1165 su = TCL_ERROR ; 1168 d = objc - 2; 1169 `FLAG_CHECK ( ag ); 1170 ag = DB_GET_BOTH ; 1172 DBGET_TXN : 1173 i( i > d ) { 1174 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 1175 su = TCL_ERROR ; 1178 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1179 txn = `NAME_TO_TXN ( g ); 1180 i( txn = NULL ) { 1181 `tf ( msg , MSG_SIZE , 1182 "G: Invidxn: %s\n", g ); 1183 `T_SResu ( , msg , TCL_VOLATILE ); 1184 su = TCL_ERROR ; 1187 DBGET_GLOB : 1188 uglob = 1; 1189 d = objc - 1; 1191 DBGET_CONSUME : 1192 `FLAG_CHECK ( ag ); 1193 ag = DB_CONSUME ; 1195 DBGET_CONSUME_WAIT : 1196 `FLAG_CHECK ( ag ); 1197 ag = DB_CONSUME_WAIT ; 1199 DBGET_RECNO : 1200 d = objc - 1; 1201 uo = 1; 1202 i( ty ! DB_RECNO &&y ! DB_QUEUE ) { 1203 `FLAG_CHECK ( ag ); 1204 ag = DB_SET_RECNO ; 1205 key . ags | DB_DBT_MALLOC ; 1208 DBGET_RMW : 1209 rmw | DB_RMW ; 1211 DBGET_PART : 1212 d = objc - 1; 1213 i( i = d ) { 1214 `T_WrgNumArgs ( , 2, objv , 1216 su = TCL_ERROR ; 1222 su = `T_LiObjGEmts ( , objv [ i ++], 1223 & emc , & emv ); 1224 i( emc != 2) { 1225 `T_SResu ( , 1226 "Li mu b{offngth}", TCL_STATIC ); 1227 su = TCL_ERROR ; 1230 ve . ags = DB_DBT_PARTIAL ; 1231 su = `_GUI32 ( , emv [0], & ve . doff ); 1232 i( su ! TCL_OK ) 1234 su = `_GUI32 ( , emv [1], & ve . dn ); 1243 DBGET_ENDARG : 1244 dg = 1; 1247 i( su ! TCL_OK ) 1249 i( dg ) 1252 i( su ! TCL_OK ) 1253 out ; 1255 i( ty = DB_RECNO ||y = DB_QUEUE ) 1256 uo = 1; 1264 i((( ag = DB_CONSUME || fg = DB_CONSUME_WAIT && i ! objc ) || 1265 ( ag = DB_GET_BOTH && i ! objc - 2)) { 1266 `T_SResu ( , 1268 TCL_STATIC ); 1269 su = TCL_ERROR ; 1270 out ; 1271 } i( ag =0 && i ! objc - 1) { 1272 `T_SResu ( , 1273 "Wrgumb okey/dgiv\n", TCL_STATIC ); 1274 su = TCL_ERROR ; 1275 out ; 1281 i( ig && dbp -> s_imy ! NULL ) { 1282 () dbp -> s_imy -> `g_ty (dbp->s_imy, & y ); 1283 ueo = y = DB_RECNO ||ty = DB_QUEUE ; 1285 ueo = 0; 1290 i( uglob && ( uo || ag = DB_SET_RECNO || 1291 ty = DB_RECNO ||y = DB_QUEUE )) { 1292 `T_SResu ( , 1294 TCL_STATIC ); 1295 su = TCL_ERROR ; 1296 out ; 1298 #ifdef CONFIG_TEST 1299 i( da_buf_size !0 && ag = DB_GET_BOTH ) { 1300 `T_SResu ( , 1302 TCL_STATIC ); 1303 su = TCL_ERROR ; 1304 out ; 1306 i( da_buf_size !0 && mag != 0) { 1307 `T_SResu ( , 1309 TCL_STATIC ); 1310 su = TCL_ERROR ; 1311 out ; 1314 i( uglob && ag = DB_GET_BOTH ) { 1315 `T_SResu ( , 1317 TCL_STATIC ); 1318 su = TCL_ERROR ; 1319 out ; 1322 i( uglob ) 1323 n = `T_GSgFromObj ( objv [ objc - 1], NULL ); 1328 i = `T_NewLiObj (0, NULL ); 1329 ve . ags | DB_DBT_MALLOC ; 1335 i(( t = dbp -> `g_ags (dbp, & isdup )) != 0) { 1336 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db get"); 1337 out ; 1339 isdup & DB_DUP ; 1346 i( n = NULL && ( isdup =0 || mag != 0 || 1347 #ifdef CONFIG_TEST 1348 da_buf_size != 0 || 1350 ag = DB_SET_RECNO || fg = DB_GET_BOTH || 1351 ag = DB_CONSUME || fg = DB_CONSUME_WAIT )) { 1352 #ifdef CONFIG_TEST 1353 i( da_buf_size == 0) { 1354 `F_CLR (& ve , DB_DBT_USERMEM ); 1355 `F_SET (& ve , DB_DBT_MALLOC ); 1357 () `__os_mloc ( 1358 NULL , ( size_t ) da_buf_size , & ve . da ); 1359 ve . un = ( u_t32_t ) da_buf_size ; 1360 `F_CLR (& ve , DB_DBT_MALLOC ); 1361 `F_SET (& ve , DB_DBT_USERMEM ); 1364 i( ag = DB_GET_BOTH ) { 1365 i( uo ) { 1366 su = `_GUI32 ( , 1367 objv [( objc - 2)], & o ); 1368 i( su = TCL_OK ) { 1369 key . da = & o ; 1370 key . size = ( db_o_t ); 1372 out ; 1379 t = `_CyObjBys ( , objv [ objc -2], 1380 & key . da , &key. size , & key ); 1381 i( t != 0) { 1382 su = `_RuSup ( , t , 1383 `DB_RETOK_DBGET ( t ), "db get"); 1384 out ; 1387 ktmp = key . da ; 1397 i( ueo ) { 1398 su = `_GUI32 ( , 1399 objv [ objc - 1], & eo ); 1400 i( su = TCL_OK ) { 1401 ve . da = & eo ; 1402 ve . size = ( db_o_t ); 1404 out ; 1406 t = `_CyObjBys ( , objv [ objc -1], 1407 & dtmp , & ve . size , & da ); 1408 i( t != 0) { 1409 su = `_RuSup ( , t , 1410 `DB_RETOK_DBGET ( t ), "db get"); 1411 out ; 1413 ve . da = dtmp ; 1415 } i( ag ! DB_CONSUME && fg ! DB_CONSUME_WAIT ) { 1416 i( uo ) { 1417 su = `_GUI32 ( 1418 , objv [( objc - 1)], & o ); 1419 i( su = TCL_OK ) { 1420 key . da = & o ; 1421 key . size = ( db_o_t ); 1423 out ; 1430 t = `_CyObjBys ( , objv [ objc -1], 1431 & key . da , &key. size , & key ); 1432 i( t != 0) { 1433 su = `_RuSup ( , t , 1434 `DB_RETOK_DBGET ( t ), "db get"); 1435 out ; 1438 ktmp = key . da ; 1439 #ifde CONFIG_TEST 1440 i( mag & DB_MULTIPLE ) { 1441 i(( t = `__os_mloc ( dbp -> dbv , 1442 ( size_t ) bufsize , & ve . da )) != 0) { 1443 `T_SResu ( , 1444 `db_ ( t ), TCL_STATIC ); 1445 out ; 1447 ve . un = ( u_t32_t ) bufsize ; 1448 `F_CLR (& ve , DB_DBT_MALLOC ); 1449 `F_SET (& ve , DB_DBT_USERMEM ); 1454 da = ve ; 1456 i( ig ) { 1457 i( ag = DB_GET_BOTH ) { 1458 pkey . da = ve .data; 1459 pkey . size = ve .size; 1460 da .d NULL ; 1461 da . size = 0; 1463 `F_SET (& pkey , DB_DBT_MALLOC ); 1464 `_debug_check (); 1465 t = dbp -> `pg (dbp, 1466 txn , & key , & pkey , & da , ag | rmw ); 1468 `_debug_check (); 1469 t = dbp -> `g (dbp, 1470 txn , & key , & da , ag | rmw | mag ); 1472 su = `_RuSup ( , t , `DB_RETOK_DBGET (ret), 1474 i( t == 0) { 1480 i( mag & DB_MULTIPLE ) 1481 su = `_SMuiLi ( , 1482 i , & key , & da , ty , ag ); 1483 i( ty = DB_RECNO ||y = DB_QUEUE ) 1484 i( ig ) 1485 su = `_S3DBTLi ( , 1486 i , & key , 1, & pkey , 1487 ueo , & da ); 1489 su = `_SLiReoEm ( , 1490 i , *( db_o_t *) key . da , 1491 da .da, da. size ); 1493 i( ig ) 1494 su = `_S3DBTLi ( , 1495 i , & key , 0, & pkey , 1496 ueo , & da ); 1498 su = `_SLiEm ( , i , 1499 key . da , key. size , 1500 da .da, da. size ); 1512 i( `F_ISSET (& key , DB_DBT_MALLOC && t == 0 && 1513 key . da ! ktmp ) 1514 `__os_u ( dbp -> dbv , key . da ); 1515 i( `F_ISSET (& da , DB_DBT_MALLOC && t == 0 && 1516 da .d! dtmp ) 1517 `__os_u ( dbp -> dbv , da .data); 1518 i(! `F_ISSET (& da , DB_DBT_MALLOC )) 1519 `__os_ ( dbp -> dbv , da .data); 1520 i( ig && t =0 && pkey . da ! ve .data) 1521 `__os_u ( dbp -> dbv , pkey . da ); 1522 i( su = TCL_OK ) 1523 `T_SObjResu ( , i ); 1524 out ; 1527 i( uo ) { 1528 su = `_GUI32 ( , objv [( objc - 1)], & o ); 1529 i( su = TCL_OK ) { 1530 key . da = & o ; 1531 key . size = ( db_o_t ); 1533 out ; 1540 t = `_CyObjBys ( , objv [ objc -1], & key . da , 1541 & key . size , & key ); 1542 i( t != 0) { 1543 su = `_RuSup ( , t , 1544 `DB_RETOK_DBGET ( t ), "db get"); 1545 ( su ); 1548 ktmp = key . da ; 1549 t = dbp -> `curs (dbp, txn , & dbc , 0); 1550 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db cursor"); 1551 i( su = TCL_ERROR ) 1552 out ; 1562 `memt (& da , 0, (data)); 1566 da = ve ; 1567 i( n ) { 1571 t = `_GGlobPfix ( n , & efix ); 1572 i( t ) { 1573 su = TCL_ERROR ; 1574 `T_SResu ( , 1575 "Ubˁخlo s", TCL_STATIC ); 1576 out1 ; 1578 key . da = efix ; 1579 key . size = ` ( efix ); 1584 i( ` ( efix ) == 0) 1585 cag = DB_FIRST ; 1587 cag = DB_SET_RANGE ; 1589 cag = DB_SET ; 1590 i( ig ) { 1591 `_debug_check (); 1592 `F_SET (& pkey , DB_DBT_MALLOC ); 1593 t = dbc -> `pg (dbc, & key , & pkey , & da , cag | rmw ); 1595 `_debug_check (); 1596 t = dbc -> `g (dbc, & key , & da , cag | rmw ); 1598 su = `_RuSup ( , t , `DB_RETOK_DBCGET (ret), 1600 i( su = TCL_ERROR ) 1601 out1 ; 1602 i( n ) { 1603 i( t =0 && efix ! NULL && 1604 `memcmp ( key . da , efix , ` (prefix)) != 0) { 1608 `__os_u ( dbp -> dbv , da .data); 1609 out1 ; 1611 cag = DB_NEXT ; 1613 cag = DB_NEXT_DUP ; 1615 t =0 && su = TCL_OK ) { 1619 i( ig ) 1620 su = `_S3DBTLi ( , i , & key , 0, 1621 & pkey , ueo , & da ); 1623 su = `_SLiEm ( , i , 1624 key . da , key. size , data.data, data.size); 1628 i( ig ) 1629 `__os_u ( dbp -> dbv , pkey . da ); 1630 `__os_u ( dbp -> dbv , da .data); 1631 i( su ! TCL_OK ) 1636 `memt (& key , 0, (key)); 1637 `memt (& pkey , 0, (pkey)); 1638 `memt (& da , 0, (data)); 1642 da = ve ; 1643 i( ig ) { 1644 `F_SET (& pkey , DB_DBT_MALLOC ); 1645 t = dbc -> `pg (dbc, & key , & pkey , & da , cag | rmw ); 1647 t = dbc -> `g (dbc, & key , & da , cag | rmw ); 1648 i( t =0 && efix ! NULL && 1649 `memcmp ( key . da , efix , ` (prefix)) != 0) { 1653 `__os_u ( dbp -> dbv , da .data); 1657 out1 : 1658 () dbc -> `o (dbc); 1659 i( su = TCL_OK ) 1660 `T_SObjResu ( , i ); 1661 out : 1667 i( efix ! NULL ) 1668 `__os_ ( dbp -> dbv , efix ); 1669 i( dtmp ! NULL && da ) 1670 `__os_ ( dbp -> dbv , dtmp ); 1671 i( ktmp ! NULL && key ) 1672 `__os_ ( dbp -> dbv , ktmp ); 1673 ( su ); 1674 } } 1680 $t_DbDe ( , objc , objv , dbp ) 1681 T_Ip * ; 1682 objc ; 1683 T_Obj * CONST objv []; 1684 DB * dbp ; 1686 cڡ * dbdts [] = { 1689 NULL 1691 edbdts { 1692 DBDEL_GLOB , 1693 DBDEL_TXN 1695 DBC * dbc ; 1696 DBT key , da ; 1697 DBTYPE ty ; 1698 DB_TXN * txn ; 1699 * ktmp ; 1700 db_o_t o ; 1701 key , i , tdex , su , t ; 1702 u_t32_t ag ; 1703 * g , * n , * efix , msg [ MSG_SIZE ]; 1705 su = TCL_OK ; 1706 key = 0; 1707 n = efix = NULL ; 1708 txn = NULL ; 1709 i( objc < 3) { 1710 `T_WrgNumArgs ( , 2, objv , "?-args? key"); 1711 ( TCL_ERROR ); 1714 ktmp = NULL ; 1715 `memt (& key , 0, (key)); 1719 i = 2; 1720 i < objc ) { 1721 i( `T_GIndexFromObj ( , objv [ i ], dbdts , "option", 1722 TCL_EXACT , & tdex ! TCL_OK ) { 1729 i( `IS_HELP ( objv [ i ]= TCL_OK ) 1730 ( TCL_OK ); 1731 `T_RetResu ( ); 1734 i ++; 1735 ( dbdts ) tdex ) { 1736 DBDEL_TXN : 1737 i( i = objc ) { 1742 i --; 1745 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1746 txn = `NAME_TO_TXN ( g ); 1747 i( txn = NULL ) { 1748 `tf ( msg , MSG_SIZE , 1749 "De: Invidxn: %s\n", g ); 1750 `T_SResu ( , msg , TCL_VOLATILE ); 1751 su = TCL_ERROR ; 1754 DBDEL_GLOB : 1759 i( i = objc ) { 1764 i --; 1767 n = `T_GSgFromObj ( objv [ i ++], NULL ); 1770 i( su ! TCL_OK ) 1774 i( su ! TCL_OK ) 1775 out ; 1789 i( n = NULL ) { 1790 i( i !( objc - 1)) { 1791 `T_WrgNumArgs ( 1792 , 2, objv , "?args? -globattern | key"); 1793 su = TCL_ERROR ; 1794 out ; 1797 i( i ! objc ) { 1798 `T_WrgNumArgs ( 1799 , 2, objv , "?args? -globattern | key"); 1800 su = TCL_ERROR ; 1801 out ; 1812 () dbp -> `g_ty (dbp, & ty ); 1813 t = 0; 1814 i < objc && t == 0) { 1815 `memt (& key , 0, (key)); 1816 i( ty = DB_RECNO ||y = DB_QUEUE ) { 1817 su = `_GUI32 ( , objv [ i ++], & o ); 1818 i( su = TCL_OK ) { 1819 key . da = & o ; 1820 key . size = ( db_o_t ); 1822 ( su ); 1824 t = `_CyObjBys ( , objv [ i ++], & ktmp , 1825 & key . size , & key ); 1826 i( t != 0) { 1827 su = `_RuSup ( , t , 1828 `DB_RETOK_DBDEL ( t ), "db del"); 1829 ( su ); 1831 key . da = ktmp ; 1833 `_debug_check (); 1834 t = dbp -> `d (dbp, txn , & key , 0); 1839 i( ktmp ! NULL && key ) 1840 `__os_ ( dbp -> dbv , ktmp ); 1841 i( t != 0) 1844 su = `_RuSup ( , t , `DB_RETOK_DBDEL (ret), "db del"); 1851 i( n ) { 1852 t = dbp -> `curs (dbp, txn , & dbc , 0); 1853 i( t != 0) { 1854 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1856 out ; 1861 `memt (& key , 0, (key)); 1862 `memt (& da , 0, (data)); 1863 t = `_GGlobPfix ( n , & efix ); 1864 i( t ) { 1865 su = TCL_ERROR ; 1866 `T_SResu ( , 1867 "Ubˁخlo s", TCL_STATIC ); 1868 out ; 1870 key . da = efix ; 1871 key . size = ` ( efix ); 1872 i( ` ( efix ) == 0) 1873 ag = DB_FIRST ; 1875 ag = DB_SET_RANGE ; 1876 t = dbc -> `g (dbc, & key , & da , ag ); 1877 t == 0 && 1878 `memcmp ( key . da , efix , ` (prefix)) == 0) { 1884 `_debug_check (); 1885 t = dbc -> `d (dbc, 0); 1886 i( t != 0) { 1887 su = `_RuSup ( , t , 1888 `DB_RETOK_DBCDEL ( t ), "db c_del"); 1895 `memt (& key , 0, (key)); 1896 `memt (& da , 0, (data)); 1897 t = dbc -> `g (dbc, & key , & da , DB_NEXT ); 1899 i( t = DB_NOTFOUND ) 1900 t = 0; 1906 `__os_ ( dbp -> dbv , efix ); 1907 () dbc -> `o (dbc); 1908 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db del"); 1910 out : 1911 ( su ); 1912 } } 1918 $t_DbCurs ( , objc , objv , dbp , db ) 1919 T_Ip * ; 1920 objc ; 1921 T_Obj * CONST objv []; 1922 DB * dbp ; 1923 DBC ** db ; 1925 cڡ * dbcurts [] = { 1926 #ifde CONFIG_TEST 1932 NULL 1934 edbcurts { 1935 #ifde CONFIG_TEST 1936 DBCUR_READ_COMMITTED , 1937 DBCUR_READ_UNCOMMITTED , 1938 DBCUR_UPDATE , 1940 DBCUR_TXN 1942 DB_TXN * txn ; 1943 u_t32_t ag ; 1944 i , tdex , su , t ; 1945 * g , msg [ MSG_SIZE ]; 1947 su = TCL_OK ; 1948 ag = 0; 1949 txn = NULL ; 1950 i = 2; 1951 i < objc ) { 1952 i( `T_GIndexFromObj ( , objv [ i ], dbcurts , "option", 1953 TCL_EXACT , & tdex ! TCL_OK ) { 1954 su = `IS_HELP ( objv [ i ]); 1955 out ; 1957 i ++; 1958 ( dbcurts ) tdex ) { 1959 #ifde CONFIG_TEST 1960 DBCUR_READ_COMMITTED : 1961 ag | DB_READ_COMMITTED ; 1963 DBCUR_READ_UNCOMMITTED : 1964 ag | DB_READ_UNCOMMITTED ; 1966 DBCUR_UPDATE : 1967 ag | DB_WRITECURSOR ; 1970 DBCUR_TXN : 1971 i( i = objc ) { 1972 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 1973 su = TCL_ERROR ; 1976 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1977 txn = `NAME_TO_TXN ( g ); 1978 i( txn = NULL ) { 1979 `tf ( msg , MSG_SIZE , 1980 "Curs: Invidxn: %s\n", g ); 1981 `T_SResu ( , msg , TCL_VOLATILE ); 1982 su = TCL_ERROR ; 1986 i( su ! TCL_OK ) 1989 i( su ! TCL_OK ) 1990 out ; 1992 `_debug_check (); 1993 t = dbp -> `curs (dbp, txn , db , ag ); 1994 i( t != 0) 1995 su = `_ESup ( , t , "db cursor"); 1996 out : 1997 ( su ); 1998 } } 2005 $t_DbAssoc ( , objc , objv , dbp ) 2006 T_Ip * ; 2007 objc ; 2008 T_Obj * CONST objv []; 2009 DB * dbp ; 2011 cڡ * dbats [] = { 2015 NULL 2017 edbats { 2018 DBA_CREATE , 2019 DBA_IMMUTABLE_KEY , 2020 DBA_TXN 2022 DB * sdbp ; 2023 DB_TXN * txn ; 2024 DBTCL_INFO * sdb ; 2025 i , tdex , su , t ; 2026 * g , msg [ MSG_SIZE ]; 2027 u_t32_t ag ; 2028 #ifde CONFIG_TEST 2034 cڡ * cbme ; 2036 cڡ * me ; 2037 u_t32_t ag ; 2038 } * cb , backs [] = { 2040 { "_s_vda", DB_RPC2ND_REVERSEDATA }, 2041 { "_s_no", DB_RPC2ND_NOOP }, 2042 { "_s_ctkeyda", DB_RPC2ND_CONCATKEYDATA }, 2043 { "_s_ctdakey", DB_RPC2ND_CONCATDATAKEY }, 2044 { "_s_vct", DB_RPC2ND_REVERSECONCAT }, 2045 { "_s_uncda", DB_RPC2ND_TRUNCDATA }, 2046 { "_s_vda", DB_RPC2ND_REVERSEDATA }, 2047 { "_s_cڡt", DB_RPC2ND_CONSTANT }, 2048 { "sj_gz", DB_RPC2ND_GETZIP }, 2049 { "sj_gme", DB_RPC2ND_GETNAME }, 2050 { NULL , 0 } 2054 txn = NULL ; 2055 su = TCL_OK ; 2056 ag = 0; 2057 i( objc < 2) { 2058 `T_WrgNumArgs ( , 2, objv , "[callback] secondary"); 2059 ( TCL_ERROR ); 2062 i = 2; 2063 i < objc ) { 2064 i( `T_GIndexFromObj ( , objv [ i ], dbats , "option", 2065 TCL_EXACT , & tdex ! TCL_OK ) { 2066 su = `IS_HELP ( objv [ i ]); 2067 i( su = TCL_OK ) 2068 ( su ); 2069 su = TCL_OK ; 2070 `T_RetResu ( ); 2073 i ++; 2074 ( dbats ) tdex ) { 2075 DBA_CREATE : 2076 ag | DB_CREATE ; 2078 DBA_IMMUTABLE_KEY : 2079 ag | DB_IMMUTABLE_KEY ; 2081 DBA_TXN : 2082 i( i > ( objc - 1)) { 2083 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2084 su = TCL_ERROR ; 2087 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2088 txn = `NAME_TO_TXN ( g ); 2089 i( txn = NULL ) { 2090 `tf ( msg , MSG_SIZE , 2091 "Assoc: Invidxn: %s\n", g ); 2092 `T_SResu ( , msg , TCL_VOLATILE ); 2093 su = TCL_ERROR ; 2098 i( su ! TCL_OK ) 2099 ( su ); 2107 g = `T_GSgFromObj ( objv [ objc - 1], NULL ); 2108 sdbp = `NAME_TO_DB ( g ); 2109 i( sdbp = NULL ) { 2110 `tf ( msg , MSG_SIZE , 2111 "Assoc: Invid daba hd: %s\n", g ); 2112 `T_SResu ( , msg , TCL_VOLATILE ); 2113 ( TCL_ERROR ); 2124 sdb = ( DBTCL_INFO *) sdbp -> i_ ; 2126 #ifde CONFIG_TEST 2127 i( i ! objc - 1 && `RPC_ON ( dbp -> dbv )) { 2133 i(( ag & DB_RPC2ND_MASK ) != 0) { 2134 `tf ( msg , MSG_SIZE , 2136 `T_SResu ( , msg , TCL_VOLATILE ); 2137 ( TCL_ERROR ); 2140 cbme = `T_GSgFromObj ( objv [ objc - 2], NULL ); 2141 cb = backs ; cb-> me ! NULL ; cb++) 2142 i( `rcmp ( cb -> me , cbme ) == 0) { 2143 ag | cb ->flag; 2147 i( cb -> me = NULL ) { 2148 `tf ( msg , MSG_SIZE , 2149 "Assoc: unknowback: %s\n", cbme ); 2150 `T_SResu ( , msg , TCL_VOLATILE ); 2151 ( TCL_ERROR ); 2154 t = dbp -> `assoc (dbp, txn , sdbp , NULL , ag ); 2161 i( t == 0) 2162 sdbp -> s_imy = dbp ; 2163 } i( i ! objc - 1) { 2165 i( i ! objc - 1) { 2170 sdb -> i_cd_ = objv [ objc - 2]; 2171 `T_InRefCou ( sdb -> i_cd_ ); 2174 `_debug_check (); 2175 t = dbp -> `assoc (dbp, txn , sdbp , t_cd_ , ag ); 2180 sdb -> i_cd_ = NULL ; 2181 t = dbp -> `assoc (dbp, txn , sdbp , NULL , ag ); 2183 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "associate"); 2185 ( su ); 2186 } } 2194 $t_cd_ ( dbp , pkey , da , skey ) 2195 DB * dbp ; 2196 cڡ DBT * pkey , * da ; 2197 DBT * skey ; 2199 DBTCL_INFO * ; 2200 DBT * tskey ; 2201 T_Ip * ; 2202 T_Obj * pobj , * dobj , * objv [3], * robj , ** skeyli ; 2203 size_t n ; 2204 , su , t ; 2205 u_t32_t i , nskeys ; 2206 * tbuf , * dabuf ; 2208 = ( DBTCL_INFO *) dbp -> i_ ; 2209 = -> i_ ; 2210 objv [0] = -> i_cd_ ; 2216 pobj = `T_NewByAayObj ( pkey -> da , (key-> size ); 2217 `T_InRefCou ( pobj ); 2218 dobj = `T_NewByAayObj ( da ->da, ()da-> size ); 2219 `T_InRefCou ( dobj ); 2221 objv [1] = pobj ; 2222 objv [2] = dobj ; 2224 su = `T_EvObjv ( , 3, objv , 0); 2226 `T_DeRefCou ( pobj ); 2227 `T_DeRefCou ( dobj ); 2229 i( su ! TCL_OK ) { 2230 `__db_rx ( dbp -> dbv , 2231 "T clback funi faed wh cod%d", su ); 2232 ( EINVAL ); 2235 robj = `T_GObjResu ( ); 2236 i( robj -> tyP = NULL || `rcmp obj->tyP-> me , "list") != 0) { 2237 nskeys = 1; 2238 skeyli = & robj ; 2239 tskey = skey ; 2241 i(( su = `T_LiObjGEmts ( , 2242 robj , & , & skeyli )! TCL_OK ) { 2243 `__db_rx ( dbp -> dbv , 2245 ( EINVAL ); 2247 nskeys = ( u_t32_t ) ; 2255 i( nskeys == 0) { 2256 nskeys = 1; 2257 skeyli = & robj ; 2259 i( nskeys == 1) 2260 tskey = skey ; 2262 `memt ( skey , 0, ( DBT )); 2263 i(( t = `__os_umloc ( dbp -> dbv , 2264 nskeys * ( DBT ), & skey -> da )) != 0) 2265 ( t ); 2266 skey -> size = nskeys ; 2267 `F_SET ( skey , DB_DBT_MULTIPLE | DB_DBT_APPMALLOC ); 2268 tskey = ( DBT *) skey -> da ; 2272 i = 0; i < nskeys ; i++, tskey ++) { 2273 tbuf = `T_GByAayFromObj ( skeyli [ i ], & ); 2274 n = ( size_t ) ; 2282 i(( t = `__os_umloc ( dbp -> dbv , n , & dabuf )) != 0) 2283 ( t ); 2284 `memy ( dabuf , tbuf , n ); 2286 `memt ( tskey , 0, ( DBT )); 2287 tskey -> da = dabuf ; 2288 tskey -> size = n ; 2289 `F_SET ( tskey , DB_DBT_APPMALLOC ); 2293 } } 2299 $t_DbJo ( , objc , objv , dbp , db ) 2300 T_Ip * ; 2301 objc ; 2302 T_Obj * CONST objv []; 2303 DB * dbp ; 2304 DBC ** db ; 2306 cڡ * dbjts [] = { 2308 NULL 2310 edbjts { 2311 DBJ_NOSORT 2313 DBC ** lip ; 2314 size_t size ; 2315 u_t32_t ag ; 2316 adj , i , j , tdex , su , t ; 2317 * g , msg [ MSG_SIZE ]; 2319 su = TCL_OK ; 2320 ag = 0; 2321 i( objc < 3) { 2322 `T_WrgNumArgs ( , 2, objv , "curs1 curs2 ..."); 2323 ( TCL_ERROR ); 2326 adj = i = 2; i < objc ; i++) { 2327 i( `T_GIndexFromObj ( , objv [ i ], dbjts , "option", 2328 TCL_EXACT , & tdex ! TCL_OK ) { 2329 su = `IS_HELP ( objv [ i ]); 2330 i( su = TCL_OK ) 2331 ( su ); 2332 su = TCL_OK ; 2333 `T_RetResu ( ); 2336 ( dbjts ) tdex ) { 2337 DBJ_NOSORT : 2338 ag | DB_JOIN_NOSORT ; 2339 adj ++; 2343 i( su ! TCL_OK ) 2344 ( su ); 2348 size = ( DBC ** ( size_t )(( objc - adj ) + 1); 2349 t = `__os_mloc ( dbp -> dbv , size , & lip ); 2350 i( t != 0) { 2351 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 2352 ( TCL_ERROR ); 2355 `memt ( lip , 0, size ); 2356 j = 0, i = adj ; i < objc ; i++, j++) { 2357 g = `T_GSgFromObj ( objv [ i ], NULL ); 2358 lip [ j ] = `NAME_TO_DBC ( g ); 2359 i( lip [ j ] = NULL ) { 2360 `tf ( msg , MSG_SIZE , 2361 "Jo: Invid curs: %s\n", g ); 2362 `T_SResu ( , msg , TCL_VOLATILE ); 2363 su = TCL_ERROR ; 2364 out ; 2367 lip [ j ] = NULL ; 2368 `_debug_check (); 2369 t = dbp -> `jo (dbp, lip , db , ag ); 2370 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db join"); 2372 out : 2373 `__os_ ( dbp -> dbv , lip ); 2374 ( su ); 2375 } } 2381 $t_DbGjo ( , objc , objv , dbp ) 2382 T_Ip * ; 2383 objc ; 2384 T_Obj * CONST objv []; 2385 DB * dbp ; 2387 cڡ * dbgjts [] = { 2388 #ifde CONFIG_TEST 2392 NULL 2394 edbgjts { 2395 #ifde CONFIG_TEST 2396 DBGETJ_NOSORT , 2398 DBGETJ_TXN 2400 DB_TXN * txn ; 2401 DB * emdbp ; 2402 DBC ** lip ; 2403 DBC * dbc ; 2404 DBT key , da ; 2405 T_Obj ** emv , * i ; 2406 * ktmp ; 2407 size_t size ; 2408 u_t32_t ag ; 2409 adj , emc , key , i , j , tdex , su , t ; 2410 * g , msg [ MSG_SIZE ]; 2412 su = TCL_OK ; 2413 ag = 0; 2414 ktmp = NULL ; 2415 key = 0; 2416 i( objc < 3) { 2417 `T_WrgNumArgs ( , 2, objv , "{db1 key1} {db2 key2} ..."); 2418 ( TCL_ERROR ); 2421 txn = NULL ; 2422 i = 2; 2423 adj = i ; 2424 i < objc ) { 2425 i( `T_GIndexFromObj ( , objv [ i ], dbgjts , "option", 2426 TCL_EXACT , & tdex ! TCL_OK ) { 2427 su = `IS_HELP ( objv [ i ]); 2428 i( su = TCL_OK ) 2429 ( su ); 2430 su = TCL_OK ; 2431 `T_RetResu ( ); 2434 i ++; 2435 ( dbgjts ) tdex ) { 2436 #ifde CONFIG_TEST 2437 DBGETJ_NOSORT : 2438 ag | DB_JOIN_NOSORT ; 2439 adj ++; 2442 DBGETJ_TXN : 2443 i( i = objc ) { 2444 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2445 su = TCL_ERROR ; 2448 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2449 txn = `NAME_TO_TXN ( g ); 2450 adj += 2; 2451 i( txn = NULL ) { 2452 `tf ( msg , MSG_SIZE , 2453 "GJo: Invidxn: %s\n", g ); 2454 `T_SResu ( , msg , TCL_VOLATILE ); 2455 su = TCL_ERROR ; 2460 i( su ! TCL_OK ) 2461 ( su ); 2462 size = ( DBC ** ( size_t )(( objc - adj ) + 1); 2463 t = `__os_mloc ( NULL , size , & lip ); 2464 i( t != 0) { 2465 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 2466 ( TCL_ERROR ); 2469 `memt ( lip , 0, size ); 2470 j = 0, i = adj ; i < objc ; i++, j++) { 2474 su = `T_LiObjGEmts ( , objv [ i ], 2475 & emc , & emv ); 2476 i( emc != 2) { 2477 `T_SResu ( , "Lists must be {db key}", 2478 TCL_STATIC ); 2479 su = TCL_ERROR ; 2480 out ; 2486 emdbp = `NAME_TO_DB ( `T_GSgFromObj ( emv [0], NULL )); 2487 i( emdbp = NULL ) { 2488 `tf ( msg , MSG_SIZE , "Get_join: Invalid db: %s\n", 2489 `T_GSgFromObj ( emv [0], NULL )); 2490 `T_SResu ( , msg , TCL_VOLATILE ); 2491 su = TCL_ERROR ; 2492 out ; 2494 t = emdbp -> `curs mdbp, txn , & lip [ j ], 0); 2495 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2496 "db curs")= TCL_ERROR ) 2497 out ; 2498 `memt (& key , 0, (key)); 2499 `memt (& da , 0, (data)); 2500 t = `_CyObjBys ( , emv [ emc -1], & ktmp , 2501 & key . size , & key ); 2502 i( t != 0) { 2503 su = `_RuSup ( , t , 2504 `DB_RETOK_STD ( t ), "db join"); 2505 out ; 2507 key . da = ktmp ; 2508 t = ( lip [ j ])-> `g ip[j], & key , & da , DB_SET ); 2509 i(( su = `_RuSup ( , t , `DB_RETOK_DBCGET (ret), 2510 "db cg")= TCL_ERROR ) 2511 out ; 2513 lip [ j ] = NULL ; 2514 `_debug_check (); 2515 t = dbp -> `jo (dbp, lip , & dbc , ag ); 2516 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db join"); 2517 i( su = TCL_ERROR ) 2518 out ; 2520 i = `T_NewLiObj (0, NULL ); 2521 t =0 && su = TCL_OK ) { 2522 `memt (& key , 0, (key)); 2523 `memt (& da , 0, (data)); 2524 key . ags | DB_DBT_MALLOC ; 2525 da . ags | DB_DBT_MALLOC ; 2526 t = dbc -> `g (dbc, & key , & da , 0); 2530 i( t == 0) { 2531 su = `_SLiEm ( , i , 2532 key . da , key. size , 2533 da .da, da. size ); 2534 `__os_u ( dbp -> dbv , key . da ); 2535 `__os_u ( dbp -> dbv , da .data); 2538 () dbc -> `o (dbc); 2539 i( su = TCL_OK ) 2540 `T_SObjResu ( , i ); 2541 out : 2542 i( ktmp ! NULL && key ) 2543 `__os_ ( dbp -> dbv , ktmp ); 2544 j ) { 2545 i( lip [ j ]) 2546 ()( lip [ j ])-> `o (listp[j]); 2547 j --; 2549 `__os_ ( dbp -> dbv , lip ); 2550 ( su ); 2551 } } 2557 $t_DbGFgs ( , objc , objv , dbp ) 2558 T_Ip * ; 2559 objc ; 2560 T_Obj * CONST objv []; 2561 DB * dbp ; 2563 i , t , su ; 2564 u_t32_t ags ; 2565 buf [512]; 2566 T_Obj * s ; 2569 u_t32_t ag ; 2570 * g ; 2571 } db_ags [] = { 2572 { DB_CHKSUM , "-chksum" }, 2573 { DB_DUP , "-dup" }, 2574 { DB_DUPSORT , "-dupsort" }, 2575 { DB_ENCRYPT , "-encrypt" }, 2576 { DB_INORDER , "-inorder" }, 2577 { DB_TXN_NOT_DURABLE , "-notdurable" }, 2578 { DB_RECNUM , "-recnum" }, 2579 { DB_RENUMBER , "-renumber" }, 2580 { DB_REVSPLITOFF , "-revsplitoff" }, 2581 { DB_SNAPSHOT , "-snapshot" }, 2582 { 0, NULL } 2585 i( objc != 2) { 2586 `T_WrgNumArgs ( , 1, objv , NULL ); 2587 ( TCL_ERROR ); 2590 t = dbp -> `g_ags (dbp, & ags ); 2591 i(( su = `_RuSup ( 2592 , t , `DB_RETOK_STD ԑ), "db g_ags")= TCL_OK ) { 2593 buf [0] = '\0'; 2595 i = 0; db_ags [i]. ag != 0; i++) 2596 i( `LF_ISSET ( db_ags [ i ]. ag )) { 2597 i( ` ( buf ) > 0) 2598 () `t ( buf , " ", (buf)); 2599 () `t ( 2600 buf , db_ags [ i ]. g , (buf)); 2603 s = `NewSgObj ( buf , ` (buf)); 2604 `T_SObjResu ( , s ); 2607 ( su ); 2608 } } 2614 $t_DbGOnFgs ( , objc , objv , dbp ) 2615 T_Ip * ; 2616 objc ; 2617 T_Obj * CONST objv []; 2618 DB * dbp ; 2620 i , t , su ; 2621 u_t32_t ags ; 2622 buf [512]; 2623 T_Obj * s ; 2626 u_t32_t ag ; 2627 * g ; 2628 } ݒ_ags [] = { 2629 { DB_AUTO_COMMIT , "-auto_commit" }, 2630 { DB_CREATE , "-create" }, 2631 { DB_EXCL , "-excl" }, 2632 { DB_NOMMAP , "-nommap" }, 2633 { DB_RDONLY , "-rdonly" }, 2634 { DB_READ_COMMITTED , "-read_committed" }, 2635 { DB_READ_UNCOMMITTED , "-read_uncommitted" }, 2636 { DB_THREAD , "-thread" }, 2637 { DB_TRUNCATE , "-truncate" }, 2638 { 0, NULL } 2641 i( objc != 2) { 2642 `T_WrgNumArgs ( , 1, objv , NULL ); 2643 ( TCL_ERROR ); 2646 t = dbp -> `g_ݒ_ags (dbp, & ags ); 2647 i(( su = `_RuSup ( 2648 , t , `DB_RETOK_STD ԑ), "db g_ݒ_ags")= TCL_OK ) { 2649 buf [0] = '\0'; 2651 i = 0; ݒ_ags [i]. ag != 0; i++) 2652 i( `LF_ISSET ( ݒ_ags [ i ]. ag )) { 2653 i( ` ( buf ) > 0) 2654 () `t ( buf , " ", (buf)); 2655 () `t ( 2656 buf , ݒ_ags [ i ]. g , (buf)); 2659 s = `NewSgObj ( buf , ` (buf)); 2660 `T_SObjResu ( , s ); 2663 ( su ); 2664 } } 2670 $t_DbCou ( , objc , objv , dbp ) 2671 T_Ip * ; 2672 objc ; 2673 T_Obj * CONST objv []; 2674 DB * dbp ; 2676 T_Obj * s ; 2677 DBC * dbc ; 2678 DBT key , da ; 2679 * ktmp ; 2680 db_o_t cou , o ; 2681 key , su , t ; 2683 s = NULL ; 2684 cou = 0; 2685 key = t = 0; 2686 ktmp = NULL ; 2687 su = TCL_OK ; 2689 i( objc != 3) { 2690 `T_WrgNumArgs ( , 2, objv , "key"); 2691 ( TCL_ERROR ); 2699 `memt (& key , 0, (key)); 2700 `memt (& da , 0, (data)); 2706 i( dbp -> ty = DB_RECNO || dbp->ty = DB_QUEUE ) { 2707 su = `_GUI32 ( , objv [2], & o ); 2708 i( su = TCL_OK ) { 2709 key . da = & o ; 2710 key . size = ( db_o_t ); 2712 ( su ); 2714 t = `_CyObjBys ( , objv [2], & ktmp , 2715 & key . size , & key ); 2716 i( t != 0) { 2717 su = `_RuSup ( , t , 2718 `DB_RETOK_STD ( t ), "db count"); 2719 ( su ); 2721 key . da = ktmp ; 2723 `_debug_check (); 2724 t = dbp -> `curs (dbp, NULL , & dbc , 0); 2725 i( t != 0) { 2726 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2728 out ; 2733 t = dbc -> `g (dbc, & key , & da , DB_SET ); 2734 i( t = DB_KEYEMPTY || = DB_NOTFOUND ) 2735 cou = 0; 2737 t = dbc -> `cou (dbc, & cou , 0); 2738 i( t != 0) { 2739 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2741 out ; 2744 s = `T_NewWideIObj (( T_WideI ) cou ); 2745 `T_SObjResu ( , s ); 2747 out : i( ktmp ! NULL && key ) 2748 `__os_ ( dbp -> dbv , ktmp ); 2749 () dbc -> `o (dbc); 2750 ( su ); 2751 } } 2753 #ifde CONFIG_TEST 2758 $t_DbKeyRge ( , objc , objv , dbp ) 2759 T_Ip * ; 2760 objc ; 2761 T_Obj * CONST objv []; 2762 DB * dbp ; 2764 cڡ * dbkeyrts [] = { 2766 NULL 2768 edbkeyrts { 2769 DBKEYR_TXN 2771 DB_TXN * txn ; 2772 DB_KEY_RANGE nge ; 2773 DBT key ; 2774 DBTYPE ty ; 2775 T_Obj * myobjv [3], * i ; 2776 * ktmp ; 2777 db_o_t o ; 2778 u_t32_t ag ; 2779 key , i , myobjc , tdex , su , t ; 2780 * g , msg [ MSG_SIZE ]; 2782 ktmp = NULL ; 2783 ag = 0; 2784 key = 0; 2785 su = TCL_OK ; 2786 i( objc < 3) { 2787 `T_WrgNumArgs ( , 2, objv , "?-txn id? key"); 2788 ( TCL_ERROR ); 2791 txn = NULL ; 2792 i = 2; i < objc ;) { 2793 i( `T_GIndexFromObj ( , objv [ i ], dbkeyrts , "option", 2794 TCL_EXACT , & tdex ! TCL_OK ) { 2795 su = `IS_HELP ( objv [ i ]); 2796 i( su = TCL_OK ) 2797 ( su ); 2798 su = TCL_OK ; 2799 `T_RetResu ( ); 2802 i ++; 2803 ( dbkeyrts ) tdex ) { 2804 DBKEYR_TXN : 2805 i( i = objc ) { 2806 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2807 su = TCL_ERROR ; 2810 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2811 txn = `NAME_TO_TXN ( g ); 2812 i( txn = NULL ) { 2813 `tf ( msg , MSG_SIZE , 2814 "KeyRge: Invidxn: %s\n", g ); 2815 `T_SResu ( , msg , TCL_VOLATILE ); 2816 su = TCL_ERROR ; 2821 i( su ! TCL_OK ) 2822 ( su ); 2823 () dbp -> `g_ty (dbp, & ty ); 2824 t = 0; 2828 i( i !( objc - 1)) { 2829 `T_WrgNumArgs ( , 2, objv , "?args? key"); 2830 su = TCL_ERROR ; 2831 out ; 2833 `memt (& key , 0, (key)); 2834 i( ty = DB_RECNO ||y = DB_QUEUE ) { 2835 su = `_GUI32 ( , objv [ i ], & o ); 2836 i( su = TCL_OK ) { 2837 key . da = & o ; 2838 key . size = ( db_o_t ); 2840 ( su ); 2842 t = `_CyObjBys ( , objv [ i ++], & ktmp , 2843 & key . size , & key ); 2844 i( t != 0) { 2845 su = `_RuSup ( , t , 2846 `DB_RETOK_STD ( t ), "db keyrange"); 2847 ( su ); 2849 key . da = ktmp ; 2851 `_debug_check (); 2852 t = dbp -> `key_nge (dbp, txn , & key , & nge , ag ); 2853 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db keyrange"); 2854 i( su = TCL_ERROR ) 2855 out ; 2860 myobjc = 3; 2861 myobjv [0] = `T_NewDoubObj ( nge . ss ); 2862 myobjv [1] = `T_NewDoubObj ( nge . equ ); 2863 myobjv [2] = `T_NewDoubObj ( nge . g ); 2864 i = `T_NewLiObj ( myobjc , myobjv ); 2865 i( su = TCL_OK ) 2866 `T_SObjResu ( , i ); 2868 out : i( ktmp ! NULL && key ) 2869 `__os_ ( dbp -> dbv , ktmp ); 2870 ( su ); 2871 } } 2878 $t_DbTrun ( , objc , objv , dbp ) 2879 T_Ip * ; 2880 objc ; 2881 T_Obj * CONST objv []; 2882 DB * dbp ; 2884 cڡ * dbcurts [] = { 2886 NULL 2888 edbcurts { 2889 DBTRUNC_TXN 2891 DB_TXN * txn ; 2892 T_Obj * s ; 2893 u_t32_t cou ; 2894 i , tdex , su , t ; 2895 * g , msg [ MSG_SIZE ]; 2897 txn = NULL ; 2898 su = TCL_OK ; 2900 i = 2; 2901 i < objc ) { 2902 i( `T_GIndexFromObj ( , objv [ i ], dbcurts , "option", 2903 TCL_EXACT , & tdex ! TCL_OK ) { 2904 su = `IS_HELP ( objv [ i ]); 2905 out ; 2907 i ++; 2908 ( dbcurts ) tdex ) { 2909 DBTRUNC_TXN : 2910 i( i = objc ) { 2911 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2912 su = TCL_ERROR ; 2915 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2916 txn = `NAME_TO_TXN ( g ); 2917 i( txn = NULL ) { 2918 `tf ( msg , MSG_SIZE , 2919 "Trun: Invidxn: %s\n", g ); 2920 `T_SResu ( , msg , TCL_VOLATILE ); 2921 su = TCL_ERROR ; 2925 i( su ! TCL_OK ) 2928 i( su ! TCL_OK ) 2929 out ; 2931 `_debug_check (); 2932 t = dbp -> `un (dbp, txn , & cou , 0); 2933 i( t != 0) 2934 su = `_ESup ( , t , "dbruncate"); 2937 s = `T_NewWideIObj (( T_WideI ) cou ); 2938 `T_SObjResu ( , s ); 2940 out : 2941 ( su ); 2942 } } 2944 #ifde CONFIG_TEST 2949 $t_DbCom ( , objc , objv , dbp ) 2950 T_Ip * ; 2951 objc ; 2952 T_Obj * CONST objv []; 2953 DB * dbp ; 2955 cڡ * dbcurts [] = { 2964 NULL 2966 edbcurts { 2967 DBREORG_FILLFACTOR , 2968 DBREORG_FREESPACE , 2969 DBREORG_FREEONLY , 2970 DBREORG_PAGES , 2971 DBREORG_START , 2972 DBREORG_STOP , 2973 DBREORG_TIMEOUT , 2974 DBREORG_TXN 2976 DBTCL_INFO * ; 2977 DBT * key , d , t , ; 2978 DBTYPE ty ; 2979 DB_TXN * txn ; 2980 T_Obj * myobj , * i ; 2981 db_o_t o , eo ; 2982 u_t32_t g , fl , ags , ges , timeout ; 2983 * rg , msg [ MSG_SIZE ]; 2984 key , i , tdex , su , t ; 2985 * kp ; 2987 ags = 0; 2988 su = TCL_OK ; 2989 txn = NULL ; 2990 () dbp -> `g_ty (dbp, & ty ); 2991 `memt (& t , 0, (start)); 2992 `memt (& , 0, (stop)); 2993 `memt (& d , 0, (end)); 2994 = ( DBTCL_INFO *) dbp -> i_ ; 2995 fl = ges = timeout = 0; 2997 i = 2; 2998 i < objc ) { 2999 i( `T_GIndexFromObj ( , objv [ i ], dbcurts , "option", 3000 TCL_EXACT , & tdex ! TCL_OK ) { 3001 su = `IS_HELP ( objv [ i ]); 3002 out ; 3004 i ++; 3005 ( dbcurts ) tdex ) { 3006 DBREORG_FILLFACTOR : 3007 i( i = objc ) { 3008 `T_WrgNumArgs ( , 3009 2, objv , "?-fillfactorumber?"); 3010 su = TCL_ERROR ; 3013 su = `_GUI32 ( , objv [ i ++], & g ); 3014 i( su ! TCL_OK ) 3015 out ; 3016 i ++; 3017 fl = g ; 3019 DBREORG_FREESPACE : 3020 `LF_SET ( DB_FREE_SPACE ); 3023 DBREORG_FREEONLY : 3024 `LF_SET ( DB_FREELIST_ONLY ); 3027 DBREORG_PAGES : 3028 i( i = objc ) { 3029 `T_WrgNumArgs ( , 3030 2, objv , "?-pagesumber?"); 3031 su = TCL_ERROR ; 3034 su = `_GUI32 ( , objv [ i ++], & g ); 3035 i( su ! TCL_OK ) 3036 out ; 3037 i ++; 3038 ges = g ; 3040 DBREORG_TIMEOUT : 3041 i( i = objc ) { 3042 `T_WrgNumArgs ( , 3043 2, objv , "?-timeoutumber?"); 3044 su = TCL_ERROR ; 3047 su = `_GUI32 ( , objv [ i ++], & g ); 3048 i( su ! TCL_OK ) 3049 out ; 3050 i ++; 3051 timeout = g ; 3054 DBREORG_START : 3055 DBREORG_STOP : 3056 i( i = objc ) { 3057 `T_WrgNumArgs ( , 1, objv , 3059 su = TCL_ERROR ; 3060 out ; 3062 i(( dbcurts ) tdex = DBREORG_START ) { 3063 key = & t ; 3064 key -> da = & o ; 3066 key = & ; 3067 key -> da = & eo ; 3069 i( ty = DB_RECNO ||y = DB_QUEUE ) { 3070 su = `_GUI32 ( 3071 , objv [ i ], key -> da ); 3072 i( su = TCL_OK ) { 3073 key -> size = ( db_o_t ); 3075 out ; 3077 t = `_CyObjBys ( , objv [ i ], 3078 & key -> da , &key-> size , & key ); 3079 i( t != 0) 3080 r ; 3081 i( key == 0) { 3082 i(( t = `__os_mloc ( NULL , 3083 key -> size , & kp )) != 0) 3084 r ; 3086 `memy ( kp , key -> da , key-> size ); 3087 key -> da = kp ; 3088 key -> un = key-> size ; 3091 i ++; 3093 DBREORG_TXN : 3094 i( i = objc ) { 3095 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 3096 su = TCL_ERROR ; 3099 rg = `T_GSgFromObj ( objv [ i ++], NULL ); 3100 txn = `NAME_TO_TXN ( rg ); 3101 i( txn = NULL ) { 3102 `tf ( msg , MSG_SIZE , 3103 "Com: Invidxn: %s\n", rg ); 3104 `T_SResu ( , msg , TCL_VOLATILE ); 3105 su = TCL_ERROR ; 3108 i( su ! TCL_OK ) 3111 i( su ! TCL_OK ) 3112 out ; 3114 i( -> i_cda = NULL ) 3115 i(( t = `__os_oc ( dbp -> dbv , 3116 1, ( DB_COMPACT ), & -> i_cda )) != 0) { 3117 `T_SResu ( , 3118 `db_ ( t ), TCL_STATIC ); 3119 out ; 3122 -> i_cda -> com_f͔ = fl ; 3123 -> i_cda -> com_timeout = timeout ; 3124 -> i_cda -> com_ges = ges ; 3126 `_debug_check (); 3127 t = dbp -> `com (dbp, txn , & t , & , -> i_cda , ags , & d ); 3128 su = `_RuSup ( , t , `DB_RETOK_DBCGET (ret), "dbp compact"); 3129 i( su = TCL_ERROR ) 3130 out ; 3132 i = `T_NewLiObj (0, NULL ); 3133 i( t != 0) 3134 out ; 3135 i( ty = DB_RECNO ||y = DB_QUEUE ) { 3136 i( d . size == 0) 3137 o = 0; 3139 o = *(( db_o_t *) d . da ); 3140 myobj = `T_NewWideIObj (( T_WideI ) o ); 3142 myobj = `T_NewByAayObj ( d . da , (nd. size ); 3143 su = `T_LiObjAdEmt ( , i , myobj ); 3144 i( su = TCL_OK ) 3145 `T_SObjResu ( , i ); 3148 r : su = `_RuSup ( , 3149 t , `DB_RETOK_DBCGET (ret), "dbc compact"); 3151 out : 3152 i( t . da ! NULL && s.d!& o ) 3153 `__os_ ( NULL , t . da ); 3154 i( . da ! NULL && st.d!& eo ) 3155 `__os_ ( NULL , . da ); 3156 i( d . da ! NULL ) 3157 `__os_ ( NULL , d . da ); 3159 ( su ); 3160 } } 3166 $t_DbComSt ( , objc , objv , dbp ) 3167 T_Ip * ; 3168 objc ; 3169 T_Obj * CONST objv []; 3170 DB * dbp ; 3172 DBTCL_INFO * ; 3174 `COMPQUIET ( objc , 0); 3175 `COMPQUIET ( objv , NULL ); 3177 = ( DBTCL_INFO *) dbp -> i_ ; 3179 ( `t_ComSt ( , )); 3180 } } 3186 $t_ComSt ( , ) 3187 T_Ip * ; 3188 DBTCL_INFO * ; 3190 DB_COMPACT * ; 3191 T_Obj * s ; 3192 su ; 3193 msg [ MSG_SIZE ]; 3195 su = TCL_OK ; 3196 = NULL ; 3198 `_debug_check (); 3199 i(( = -> i_cda = NULL ) { 3200 `tf ( msg , MSG_SIZE , 3202 `T_SResu ( , msg , TCL_VOLATILE ); 3203 su = TCL_ERROR ; 3204 r ; 3207 s = `T_NewObj (); 3209 `MAKE_STAT_LIST ("Paged", -> com_ges_ ); 3210 `MAKE_STAT_LIST ("Pageund", -> com_ges_und ); 3211 `MAKE_STAT_LIST ("Pageexamed", -> com_ges_exame ); 3212 `MAKE_STAT_LIST ("Levmoved", -> com_vs ); 3213 `MAKE_STAT_LIST ("Ddlockcoued", -> com_ddlock ); 3215 `T_SObjResu ( , s ); 3216 r : 3217 ( su ); 3218 } } @../tcl/tcl_db_pkg.c 9 ~"db_cfig.h " 11 #ifde CONFIG_TEST 12 #DB_DBM_HSEARCH 1 ) 15 ~"db_t.h " 16 #ifde HAVE_SYSTEM_INCLUDE_FILES 17 ~<t.h > 19 ~"dbc/db_ge.h " 20 ~"dbc/hash.h " 21 ~"dbc/t_db.h " 24 DBTCL_GLOBAL g__dbt_glob ; 29 bkdb_Cmd __P (( ClDa , T_Ip *, , 30 T_Obj * CONST *)); 31 bdb_EnvOn __P (( T_Ip *, , T_Obj * CONST *, 32 DBTCL_INFO *, DB_ENV **)); 33 bdb_DbOn __P (( T_Ip *, , T_Obj * CONST *, 34 DBTCL_INFO *, DB **)); 35 bdb_DbRemove __P (( T_Ip *, , T_Obj * CONST *)); 36 bdb_DbRame __P (( T_Ip *, , T_Obj * CONST *)); 37 bdb_Vsi __P (( T_Ip *, , T_Obj * CONST *)); 39 #ifde HAVE_64BIT_TYPES 40 bdb_SeqOn __P (( T_Ip *, , T_Obj * CONST *, 41 DBTCL_INFO *, DB_SEQUENCE **)); 44 #ifde CONFIG_TEST 45 bdb_DbUpgde __P (( T_Ip *, , T_Obj * CONST *)); 46 bdb_DbVify __P (( T_Ip *, , T_Obj * CONST *)); 47 bdb_GCfig __P (( T_Ip *, , T_Obj * CONST *)); 48 bdb_Hds __P (( T_Ip *, , T_Obj * CONST *)); 49 bdb_MsgTy __P (( T_Ip *, , T_Obj * CONST *)); 51 t_bt_com __P (( DB *, cڡ DBT *, const DBT *)); 52 t_com_back __P (( DB *, cڡ DBT *, const DBT *, 53 T_Obj *, *)); 54 t_db_ __P ((*)); 55 * t_db_mloc __P (( size_t )); 56 * t_db_loc __P ((*, size_t )); 57 t_dup_com __P (( DB *, cڡ DBT *, const DBT *)); 58 u_t32_t t_h_hash __P (( DB *, const *, u_int32_t)); 70 $Db_t_In ( ) 71 T_Ip * ; 74 code ; 75 pkg [12]; 77 `tf ( pkg , kg), "%d.%d", DB_VERSION_MAJOR , DB_VERSION_MINOR ); 78 code = `T_PkgProvide ( , "Db_t", pkg ); 79 i( code ! TCL_OK ) 80 ( code ); 82 () `T_CeObjCommd ( , 83 "bkdb", ( T_ObjCmdProc *) bkdb_Cmd , ( ClDa )0, NULL ); 87 () `T_LkV ( 88 , "__debug_", (*)& __debug_ , TCL_LINK_INT ); 89 () `T_LkV ( 90 , "__debug_t", (*)& __debug_t , TCL_LINK_INT ); 91 () `T_LkV ( 92 , "__debug_", (*)& __debug_ , TCL_LINK_INT ); 93 () `T_LkV ( 94 , "__debug_", (*)& __debug_ , 95 TCL_LINK_INT ); 96 `LIST_INIT (& __db_fohd ); 97 ( TCL_OK ); 98 } } 114 $bkdb_Cmd ( nud , , objc , objv ) 115 ClDa nud ; 116 T_Ip * ; 117 objc ; 118 T_Obj * CONST objv []; 120 cڡ * bkdbcmds [] = { 121 #ifde CONFIG_TEST 133 #ifde HAVE_64BIT_TYPES 137 #ifde CONFIG_TEST 147 NULL 152 ebkdbcmds { 153 #ifde CONFIG_TEST 154 BDB_DBVERIFY , 155 BDB_GETCONFIG , 156 BDB_HANDLES , 157 BDB_MSGTYPE , 158 BDB_UPGRADE , 160 BDB_DBREMOVE , 161 BDB_DBRENAME , 162 BDB_ENV , 163 BDB_ENVREMOVE , 164 BDB_OPEN , 165 #ifde HAVE_64BIT_TYPES 166 BDB_SEQUENCE , 168 BDB_VERSION , 169 #ifde CONFIG_TEST 170 BDB_HCREATEX , BDB_HSEARCHX , BDB_HDESTROYX , 171 BDB_DBMINITX , BDB_FETCHX , BDB_STOREX , 172 BDB_DELETEX , BDB_FIRSTKEYX , BDB_NEXTKEYX , 173 BDB_NDBMOPENX , BDB_DBMCLOSEX , 175 BDB_RANDX , BDB_RAND_INTX , BDB_SRANDX , 176 BDB_DBGCKX 178 v_id = 0; 179 db_id = 0; 180 #ifde HAVE_64BIT_TYPES 181 q_id = 0; 184 DB * dbp ; 185 #ifde HAVE_64BIT_TYPES 186 DB_SEQUENCE * q ; 188 #ifde CONFIG_TEST 189 DBM * ndbmp ; 190 ndbm_id = 0; 192 DBTCL_INFO * ; 193 DB_ENV * vp ; 194 T_Obj * s ; 195 cmddex , su ; 196 wme [ MSG_SIZE ]; 198 `COMPQUIET ( nud , NULL ); 200 `T_RetResu ( ); 201 `memt ( wme , 0, MSG_SIZE ); 202 su = TCL_OK ; 203 i( objc <= 1) { 204 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 205 ( TCL_ERROR ); 212 i( `T_GIndexFromObj ( , 213 objv [1], bkdbcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 214 ( `IS_HELP ( objv [1])); 215 s = NULL ; 216 ( bkdbcmds ) cmddex ) { 217 #ifde CONFIG_TEST 218 BDB_DBVERIFY : 219 su = `bdb_DbVify ( , objc , objv ); 221 BDB_GETCONFIG : 222 su = `bdb_GCfig ( , objc , objv ); 224 BDB_HANDLES : 225 su = `bdb_Hds ( , objc , objv ); 227 BDB_MSGTYPE : 228 su = `bdb_MsgTy ( , objc , objv ); 230 BDB_UPGRADE : 231 su = `bdb_DbUpgde ( , objc , objv ); 234 BDB_VERSION : 235 `_debug_check (); 236 su = `bdb_Vsi ( , objc , objv ); 238 BDB_ENV : 239 `tf ( wme , ewme), "v%d", v_id ); 240 = `_NewInfo ( , NULL , wme , I_ENV ); 241 i( ! NULL ) { 242 su = `bdb_EnvOn ( , objc , objv , , & vp ); 243 i( su = TCL_OK && vp ! NULL ) { 244 v_id ++; 245 () `T_CeObjCommd ( , wme , 246 ( T_ObjCmdProc *) v_Cmd , 247 ( ClDa ) vp , NULL ); 249 s = `NewSgObj ( wme , ` (newname)); 250 `_SInfoDa ( , vp ); 252 `_DeInfo ( ); 254 `T_SResu ( , "Couldot set up info", 255 TCL_STATIC ); 256 su = TCL_ERROR ; 259 BDB_DBREMOVE : 260 su = `bdb_DbRemove ( , objc , objv ); 262 BDB_DBRENAME : 263 su = `bdb_DbRame ( , objc , objv ); 265 BDB_ENVREMOVE : 266 su = `t_EnvRemove ( , objc , objv , NULL , NULL); 268 BDB_OPEN : 269 `tf ( wme , ewme), "db%d", db_id ); 270 = `_NewInfo ( , NULL , wme , I_DB ); 271 i( ! NULL ) { 272 su = `bdb_DbOn ( , objc , objv , , & dbp ); 273 i( su = TCL_OK && dbp ! NULL ) { 274 db_id ++; 275 () `T_CeObjCommd ( , wme , 276 ( T_ObjCmdProc *) db_Cmd , 277 ( ClDa ) dbp , NULL ); 279 s = `NewSgObj ( wme , ` (newname)); 280 `_SInfoDa ( , dbp ); 282 `_DeInfo ( ); 284 `T_SResu ( , "Couldot set up info", 285 TCL_STATIC ); 286 su = TCL_ERROR ; 289 #ifde HAVE_64BIT_TYPES 290 BDB_SEQUENCE : 291 `tf ( wme , ewme), "q%d", q_id ); 292 = `_NewInfo ( , NULL , wme , I_SEQ ); 293 i( ! NULL ) { 294 su = `bdb_SeqOn ( , objc , objv , , & q ); 295 i( su = TCL_OK && q ! NULL ) { 296 q_id ++; 297 () `T_CeObjCommd ( , wme , 298 ( T_ObjCmdProc *) q_Cmd , 299 ( ClDa ) q , NULL ); 301 s = `NewSgObj ( wme , ` (newname)); 302 `_SInfoDa ( , q ); 304 `_DeInfo ( ); 306 `T_SResu ( , "Couldot set up info", 307 TCL_STATIC ); 308 su = TCL_ERROR ; 312 #ifde CONFIG_TEST 313 BDB_HCREATEX : 314 BDB_HSEARCHX : 315 BDB_HDESTROYX : 316 su = `bdb_HCommd ( , objc , objv ); 318 BDB_DBMINITX : 319 BDB_DBMCLOSEX : 320 BDB_FETCHX : 321 BDB_STOREX : 322 BDB_DELETEX : 323 BDB_FIRSTKEYX : 324 BDB_NEXTKEYX : 325 su = `bdb_DbmCommd ( , objc , objv , DBTCL_DBM , NULL ); 327 BDB_NDBMOPENX : 328 `tf ( wme , ewme), "ndbm%d", ndbm_id ); 329 = `_NewInfo ( , NULL , wme , I_NDBM ); 330 i( ! NULL ) { 331 su = `bdb_NdbmOn ( , objc , objv , & ndbmp ); 332 i( su = TCL_OK ) { 333 ndbm_id ++; 334 () `T_CeObjCommd ( , wme , 335 ( T_ObjCmdProc *) ndbm_Cmd , 336 ( ClDa ) ndbmp , NULL ); 338 s = `NewSgObj ( wme , ` (newname)); 339 `_SInfoDa ( , ndbmp ); 341 `_DeInfo ( ); 343 `T_SResu ( , "Couldot set up info", 344 TCL_STATIC ); 345 su = TCL_ERROR ; 349 BDB_RANDX : 350 BDB_RAND_INTX : 351 BDB_SRANDX : 352 su = `bdb_RdCommd ( , objc , objv ); 354 BDB_DBGCKX : 355 `_debug_check (); 356 s = `T_NewIObj (0); 363 i( su = TCL_OK && s ! NULL ) 364 `T_SObjResu ( , s ); 365 ( su ); 366 } } 381 $bdb_EnvOn ( , objc , objv , , v ) 382 T_Ip * ; 383 objc ; 384 T_Obj * CONST objv []; 385 DBTCL_INFO * ; 386 DB_ENV ** v ; 388 cڡ * vݒ [] = { 389 #ifde CONFIG_TEST 456 NULL 463 evݒ { 464 #ifde CONFIG_TEST 465 ENV_ALLOC , 466 ENV_AUTO_COMMIT , 467 ENV_CDB , 468 ENV_CDB_ALLDB , 469 ENV_CLIENT_TO , 470 ENV_EVENT , 471 ENV_LOCK , 472 ENV_CONFLICT , 473 ENV_DETECT , 474 ENV_LOCK_MAX_LOCKS , 475 ENV_LOCK_MAX_LOCKERS , 476 ENV_LOCK_MAX_OBJECTS , 477 ENV_LOCK_TIMEOUT , 478 ENV_LOG , 479 ENV_LOG_FILEMODE , 480 ENV_LOG_BUFFER , 481 ENV_LOG_INMEMORY , 482 ENV_LOG_MAX , 483 ENV_LOG_REGIONMAX , 484 ENV_LOG_REMOVE , 485 ENV_MPOOL_MAX_OPENFD , 486 ENV_MPOOL_MAX_WRITE , 487 ENV_MPOOL_MMAP_SIZE , 488 ENV_MPOOL_NOMMAP , 489 ENV_MULTIVERSION , 490 ENV_OVERWRITE , 491 ENV_REGION_INIT , 492 ENV_REP , 493 ENV_REP_CLIENT , 494 ENV_REP_LEASE , 495 ENV_REP_MASTER , 496 ENV_REP_TRANSPORT , 497 ENV_SERVER , 498 ENV_SERVER_TO , 499 ENV_SET_INTERMEDIATE_DIR , 500 ENV_SNAPSHOT , 501 ENV_THREAD , 502 ENV_TIME_NOTGRANTED , 503 ENV_TXN_NOWAIT , 504 ENV_TXN_TIMEOUT , 505 ENV_TXN_TIME , 506 ENV_VERBOSE , 507 ENV_WRNOSYNC , 509 ENV_CACHESIZE , 510 ENV_CACHE_MAX , 511 ENV_CREATE , 512 ENV_DATA_DIR , 513 ENV_ENCRYPT_AES , 514 ENV_ENCRYPT_ANY , 515 ENV_ERRFILE , 516 ENV_ERRPFX , 517 ENV_HOME , 518 ENV_LOG_DIR , 519 ENV_MODE , 520 ENV_PRIVATE , 521 ENV_RECOVER , 522 ENV_RECOVER_FATAL , 523 ENV_REGISTER , 524 ENV_SHM_KEY , 525 ENV_SYSTEM_MEM , 526 ENV_TMP_DIR , 527 ENV_TXN , 528 ENV_TXN_MAX , 529 ENV_USE_ENVIRON , 530 ENV_USE_ENVIRON_ROOT 532 T_Obj ** myobjv ; 533 u_t32_t _ags , gbys , bys , logbuft , logmaxt ; 534 u_t32_t ݒ_ags , p_ags , t_ags , urg ; 535 i , mode , myobjc , nches , tdex , su , t ; 536 _to , rv_to , shm ; 537 * g , * home , * sswd , * rv ; 538 #ifde CONFIG_TEST 539 T_Obj ** myobjv1 ; 540 time_t timeamp ; 541 v ; 542 u_t32_t de ; 543 u_t8_t * cis ; 544 rg , rg2 , j , nmodes , mp ; 547 su = TCL_OK ; 548 mode = 0; 549 p_ags = t_ags = _ags = 0; 550 home = NULL ; 565 ݒ_ags = 0; 566 logmaxt = logbuft = 0; 568 i( objc <= 2) { 569 `T_WrgNumArgs ( , 2, objv , "?args?"); 570 ( TCL_ERROR ); 576 rv = NULL ; 577 rv_to = _to = 0; 578 i = 2; 579 i < objc ) { 580 i( `T_GIndexFromObj ( , objv [ i ++], vݒ , "option", 581 TCL_EXACT , & tdex ! TCL_OK ) { 582 `T_RetResu ( ); 585 #ifde CONFIG_TEST 586 ( vݒ ) tdex ) { 587 ENV_SERVER : 588 i( i > objc ) { 589 `T_WrgNumArgs ( , 2, objv , 591 su = TCL_ERROR ; 594 `FLD_SET ( _ags , DB_RPCCLIENT ); 595 rv = `T_GSgFromObj ( objv [ i ++], NULL ); 597 ENV_SERVER_TO : 598 i( i > objc ) { 599 `T_WrgNumArgs ( , 2, objv , 601 su = TCL_ERROR ; 604 `FLD_SET ( _ags , DB_RPCCLIENT ); 605 su = `T_GLgFromObj ( , objv [ i ++], 606 & rv_to ); 608 ENV_CLIENT_TO : 609 i( i > objc ) { 610 `T_WrgNumArgs ( , 2, objv , 612 su = TCL_ERROR ; 615 `FLD_SET ( _ags , DB_RPCCLIENT ); 616 su = `T_GLgFromObj ( , objv [ i ++], 617 & _to ); 624 i( su ! TCL_OK ) 625 ( TCL_ERROR ); 626 t = `db_v_ ( v , _ags ); 627 i( t ) 628 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 634 (* v )-> `t_fx ((*v), -> i_me ); 635 (* v )-> `t_r ((*v), _EFunc ); 636 i( rv ! NULL && 637 ( t = (* v )-> `t_c_rv ((*v), NULL , rv , 638 _to , rv_to , 0)) != 0) { 639 su = TCL_ERROR ; 640 r ; 644 (* v )-> p_ive = ; 650 i = 2; 651 i < objc ) { 652 `T_RetResu ( ); 653 i( `T_GIndexFromObj ( , objv [ i ], vݒ , "option", 654 TCL_EXACT , & tdex ! TCL_OK ) { 655 su = `IS_HELP ( objv [ i ]); 656 r ; 658 i ++; 659 ( vݒ ) tdex ) { 660 #ifde CONFIG_TEST 661 ENV_SERVER : 662 ENV_SERVER_TO : 663 ENV_CLIENT_TO : 667 i ++; 669 ENV_ALLOC : 675 ()(* v )-> `t_loc (*env, 676 t_db_mloc , t_db_loc , t_db_ ); 678 ENV_AUTO_COMMIT : 679 `FLD_SET ( t_ags , DB_AUTO_COMMIT ); 681 ENV_CDB : 682 `FLD_SET ( ݒ_ags , DB_INIT_CDB | DB_INIT_MPOOL ); 684 ENV_CDB_ALLDB : 685 `FLD_SET ( t_ags , DB_CDB_ALLDB ); 687 ENV_LOCK : 688 `FLD_SET ( ݒ_ags , DB_INIT_LOCK | DB_INIT_MPOOL ); 690 ENV_CONFLICT : 698 su = `T_LiObjGEmts ( , objv [ i ], 699 & myobjc , & myobjv ); 700 i( su = TCL_OK ) 701 i ++; 704 i( myobjc != 2) { 705 `T_WrgNumArgs ( , 2, objv , 707 su = TCL_ERROR ; 710 su = `T_GIFromObj ( , myobjv [0], & nmodes ); 711 i( su ! TCL_OK ) 713 su = `T_LiObjGEmts ( , myobjv [1], 714 & myobjc , & myobjv1 ); 715 i( myobjc !( nmodes *modes)) { 716 `T_WrgNumArgs ( , 2, objv , 718 su = TCL_ERROR ; 722 t = `__os_mloc (* v , ( u_t8_t ) * 723 ( size_t ) nmodes * (size_tmodes, & cis ); 724 i( t != 0) { 725 su = TCL_ERROR ; 728 j = 0; j < myobjc ; j++) { 729 su = `T_GIFromObj ( , myobjv1 [ j ], 730 & mp ); 731 cis [ j ] = mp ; 732 i( su ! TCL_OK ) { 733 `__os_ ( NULL , cis ); 737 `_debug_check (); 738 t = (* v )-> `t_lk_cis (*env, 739 ( u_t8_t *) cis , nmodes ); 740 `__os_ ( NULL , cis ); 741 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 744 ENV_DETECT : 745 i( i > objc ) { 746 `T_WrgNumArgs ( , 2, objv , 748 su = TCL_ERROR ; 751 g = `T_GSgFromObj ( objv [ i ++], NULL ); 752 i( `rcmp ( g , "default") == 0) 753 de = DB_LOCK_DEFAULT ; 754 i( `rcmp ( g , "expire") == 0) 755 de = DB_LOCK_EXPIRE ; 756 i( `rcmp ( g , "maxlocks") == 0) 757 de = DB_LOCK_MAXLOCKS ; 758 i( `rcmp ( g , "maxwrites") == 0) 759 de = DB_LOCK_MAXWRITE ; 760 i( `rcmp ( g , "minlocks") == 0) 761 de = DB_LOCK_MINLOCKS ; 762 i( `rcmp ( g , "minwrites") == 0) 763 de = DB_LOCK_MINWRITE ; 764 i( `rcmp ( g , "oldest") == 0) 765 de = DB_LOCK_OLDEST ; 766 i( `rcmp ( g , "youngest") == 0) 767 de = DB_LOCK_YOUNGEST ; 768 i( `rcmp ( g , "random") == 0) 769 de = DB_LOCK_RANDOM ; 771 `T_AddEInfo ( , 773 su = TCL_ERROR ; 776 `_debug_check (); 777 t = (* v )-> `t_lk_de (*v, de ); 778 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 781 ENV_EVENT : 782 i( i > objc ) { 783 `T_WrgNumArgs ( , 2, objv , 785 su = TCL_ERROR ; 788 su = `t_EvtNify ( , * v , objv [ i ++], ); 790 ENV_LOCK_MAX_LOCKS : 791 ENV_LOCK_MAX_LOCKERS : 792 ENV_LOCK_MAX_OBJECTS : 793 i( i > objc ) { 794 `T_WrgNumArgs ( , 2, objv , 796 su = TCL_ERROR ; 799 su = `_GUI32 ( , objv [ i ++], & urg ); 800 i( su = TCL_OK ) { 801 `_debug_check (); 802 ( vݒ ) tdex ) { 803 ENV_LOCK_MAX_LOCKS : 804 t = (* v )-> `t_lk_max_locks (*env, 805 urg ); 807 ENV_LOCK_MAX_LOCKERS : 808 t = (* v )-> `t_lk_max_locks (*env, 809 urg ); 811 ENV_LOCK_MAX_OBJECTS : 812 t = (* v )-> `t_lk_max_objes (*env, 813 urg ); 818 su = `_RuSup ( , t , 819 `DB_RETOK_STD ( t ), "lock_max"); 822 ENV_TXN_NOWAIT : 823 `FLD_SET ( t_ags , DB_TXN_NOWAIT ); 825 ENV_TXN_TIME : 826 ENV_TXN_TIMEOUT : 827 ENV_LOCK_TIMEOUT : 828 i( i > objc ) { 829 `T_WrgNumArgs ( , 2, objv , 831 su = TCL_ERROR ; 835 i(( su = `T_GLgFromObj ( 836 , objv [ i ++], & v )! TCL_OK ) 838 timeamp = ( time_t ) v ; 840 `_debug_check (); 841 i(( vݒ ) tdex = ENV_TXN_TIME ) 842 t = 843 (* v )-> `t_tx_timeamp (*v, & timeamp ); 845 t = (* v )-> `t_timeout (*env, 846 ( db_timeout_t ) timeamp , 847 ( vݒ ) tdex = ENV_TXN_TIMEOUT ? 848 DB_SET_TXN_TIMEOUT : DB_SET_LOCK_TIMEOUT ); 849 su = `_RuSup ( , t , 850 `DB_RETOK_STD ( t ), "txn_timestamp"); 852 ENV_LOG : 853 `FLD_SET ( ݒ_ags , DB_INIT_LOG | DB_INIT_MPOOL ); 855 ENV_LOG_BUFFER : 856 i( i > objc ) { 857 `T_WrgNumArgs ( , 2, objv , 859 su = TCL_ERROR ; 862 su = `_GUI32 ( , objv [ i ++], & urg ); 863 i( su = TCL_OK ) { 864 `_debug_check (); 865 t = (* v )-> `t_lg_bsize (*v, urg ); 866 su = `_RuSup ( , t , 867 `DB_RETOK_STD ( t ), "log_bsize"); 868 logbuft = 1; 869 i( logmaxt ) { 870 `_debug_check (); 871 t = (* v )-> `t_lg_max (*env, 872 logmaxt ); 873 su = `_RuSup ( , t , 874 `DB_RETOK_STD ( t ), "log_max"); 875 logmaxt = 0; 876 logbuft = 0; 880 ENV_LOG_FILEMODE : 881 i( i > objc ) { 882 `T_WrgNumArgs ( , 2, objv , 884 su = TCL_ERROR ; 887 su = `_GUI32 ( , objv [ i ++], & urg ); 888 i( su = TCL_OK ) { 889 `_debug_check (); 890 t = 891 (* v )-> `t_lg_femode (*v, () urg ); 892 su = `_RuSup ( , t , 893 `DB_RETOK_STD ( t ), "log_filemode"); 896 ENV_LOG_INMEMORY : 897 `FLD_SET ( t_ags , DB_LOG_INMEMORY ); 899 ENV_LOG_MAX : 900 i( i > objc ) { 901 `T_WrgNumArgs ( , 2, objv , 903 su = TCL_ERROR ; 906 su = `_GUI32 ( , objv [ i ++], & urg ); 907 i( su = TCL_OK && logbuft ) { 908 `_debug_check (); 909 t = (* v )-> `t_lg_max (*v, urg ); 910 su = `_RuSup ( , t , 911 `DB_RETOK_STD ( t ), "log_max"); 912 logbuft = 0; 914 logmaxt = urg ; 916 ENV_LOG_REGIONMAX : 917 i( i > objc ) { 918 `T_WrgNumArgs ( , 2, objv , 920 su = TCL_ERROR ; 923 su = `_GUI32 ( , objv [ i ++], & urg ); 924 i( su = TCL_OK ) { 925 `_debug_check (); 926 t = (* v )-> `t_lg_gimax (*v, urg ); 927 su = 928 `_RuSup ( , t , `DB_RETOK_STD (ret), 932 ENV_LOG_REMOVE : 933 `FLD_SET ( t_ags , DB_LOG_AUTOREMOVE ); 935 ENV_MPOOL_MAX_OPENFD : 936 i( i > objc ) { 937 `T_WrgNumArgs ( , 2, objv , 939 su = TCL_ERROR ; 942 su = `T_GIFromObj ( , objv [ i ++], & rg ); 943 i( su = TCL_OK ) { 944 `_debug_check (); 945 t = (* v )-> `t_mp_max_ݒfd (*v, rg ); 946 su = `_RuSup ( , t , 947 `DB_RETOK_STD ( t ), "mpool_max_openfd"); 950 ENV_MPOOL_MAX_WRITE : 951 su = `T_LiObjGEmts ( , objv [ i ], 952 & myobjc , & myobjv ); 953 i( su = TCL_OK ) 954 i ++; 957 i( myobjc != 2) { 958 `T_WrgNumArgs ( , 2, objv , 960 su = TCL_ERROR ; 963 su = `T_GIFromObj ( , myobjv [0], & rg ); 964 i( su ! TCL_OK ) 966 su = `T_GIFromObj ( , myobjv [1], & rg2 ); 967 i( su ! TCL_OK ) 969 `_debug_check (); 970 t = (* v )-> `t_mp_max_wre ( 971 * v , rg , ( db_timeout_t ) rg2 ); 972 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 975 ENV_MPOOL_MMAP_SIZE : 976 i( i > objc ) { 977 `T_WrgNumArgs ( , 2, objv , 979 su = TCL_ERROR ; 982 su = `T_GIFromObj ( , objv [ i ++], & rg ); 983 i( su = TCL_OK ) { 984 `_debug_check (); 985 t = (* v )-> `t_mp_mmsize (*env, 986 ( size_t ) rg ); 987 su = `_RuSup ( , t , 988 `DB_RETOK_STD ( t ), "mpool_mmap_size"); 991 ENV_MPOOL_NOMMAP : 992 `FLD_SET ( t_ags , DB_NOMMAP ); 994 ENV_MULTIVERSION : 995 `FLD_SET ( t_ags , DB_MULTIVERSION ); 997 ENV_OVERWRITE : 998 `FLD_SET ( t_ags , DB_OVERWRITE ); 1000 ENV_REGION_INIT : 1001 `_debug_check (); 1002 t = (* v )-> `t_ags (*v, DB_REGION_INIT , 1); 1003 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1006 ENV_SET_INTERMEDIATE_DIR : 1007 i( i > objc ) { 1008 `T_WrgNumArgs ( , 1009 2, objv , "?-set_intermediate_dir mode?"); 1010 su = TCL_ERROR ; 1013 su = `T_GIFromObj ( , objv [ i ++], & rg ); 1014 i( su = TCL_OK ) { 1015 `_debug_check (); 1016 t = (* v )-> 1017 `t_rmed_d (* v , rg , 0); 1018 su = `_RuSup ( , t , 1019 `DB_RETOK_STD ( t ), "set_intermediate_dir"); 1022 ENV_REP : 1023 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1025 ENV_REP_CLIENT : 1026 p_ags = DB_REP_CLIENT ; 1027 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1029 ENV_REP_MASTER : 1030 p_ags = DB_REP_MASTER ; 1031 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1033 ENV_REP_LEASE : 1034 i( i > objc ) { 1035 `T_WrgNumArgs ( , 2, objv , 1037 su = TCL_ERROR ; 1040 su = `T_LiObjGEmts ( , objv [ i ], 1041 & myobjc , & myobjv ); 1042 i( su = TCL_OK ) 1043 i ++; 1046 su = `t_RL ( , myobjc , myobjv , * v ); 1047 i( su = TCL_OK ) 1048 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1050 ENV_REP_TRANSPORT : 1051 i( i > objc ) { 1052 `T_WrgNumArgs ( , 2, objv , 1054 su = TCL_ERROR ; 1057 su = `T_LiObjGEmts ( , objv [ i ], 1058 & myobjc , & myobjv ); 1059 i( su = TCL_OK ) 1060 i ++; 1063 su = `t_RTnt ( , myobjc , myobjv , 1064 * v , ); 1065 i( su = TCL_OK ) 1066 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1068 ENV_SNAPSHOT : 1069 `FLD_SET ( t_ags , DB_TXN_SNAPSHOT ); 1071 ENV_THREAD : 1073 `FLD_SET ( ݒ_ags , DB_THREAD ); 1075 ENV_TIME_NOTGRANTED : 1076 `FLD_SET ( t_ags , DB_TIME_NOTGRANTED ); 1078 ENV_VERBOSE : 1079 su = `T_LiObjGEmts ( , objv [ i ], 1080 & myobjc , & myobjv ); 1081 i( su = TCL_OK ) 1082 i ++; 1085 i( myobjc != 2) { 1086 `T_WrgNumArgs ( , 2, objv , 1088 su = TCL_ERROR ; 1091 su = `t_EnvVbo ( , * v , 1092 myobjv [0], myobjv[1]); 1094 ENV_WRNOSYNC : 1095 `FLD_SET ( t_ags , DB_TXN_WRITE_NOSYNC ); 1098 ENV_TXN : 1099 `FLD_SET ( ݒ_ags , DB_INIT_LOCK | 1100 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN ); 1102 i < objc ) { 1103 g = `T_GSgFromObj ( objv [ i ], NULL ); 1104 i( `rcmp ( g , "nosync") == 0) { 1105 `FLD_SET ( t_ags , DB_TXN_NOSYNC ); 1106 i ++; 1107 } i( `rcmp ( g , "snapshot") == 0) { 1108 `FLD_SET ( t_ags , DB_TXN_SNAPSHOT ); 1109 i ++; 1114 ENV_CREATE : 1115 `FLD_SET ( ݒ_ags , DB_CREATE | DB_INIT_MPOOL ); 1117 ENV_ENCRYPT_AES : 1119 i( i > objc ) { 1120 `T_WrgNumArgs ( , 2, objv , 1122 su = TCL_ERROR ; 1125 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1126 `_debug_check (); 1127 t = (* v )-> `t_y (*v, sswd , DB_ENCRYPT_AES ); 1128 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1131 ENV_ENCRYPT_ANY : 1133 i( i > objc ) { 1134 `T_WrgNumArgs ( , 2, objv , 1136 su = TCL_ERROR ; 1139 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1140 `_debug_check (); 1141 t = (* v )-> `t_y (*v, sswd , 0); 1142 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1145 ENV_HOME : 1147 i( i > objc ) { 1148 `T_WrgNumArgs ( , 2, objv , 1150 su = TCL_ERROR ; 1153 home = `T_GSgFromObj ( objv [ i ++], NULL ); 1155 ENV_MODE : 1156 i( i > objc ) { 1157 `T_WrgNumArgs ( , 2, objv , 1159 su = TCL_ERROR ; 1168 su = `T_GIFromObj ( , objv [ i ++], & mode ); 1170 ENV_PRIVATE : 1171 `FLD_SET ( ݒ_ags , DB_PRIVATE | DB_INIT_MPOOL ); 1173 ENV_RECOVER : 1174 `FLD_SET ( ݒ_ags , DB_RECOVER ); 1176 ENV_RECOVER_FATAL : 1177 `FLD_SET ( ݒ_ags , DB_RECOVER_FATAL ); 1179 ENV_REGISTER : 1180 `FLD_SET ( ݒ_ags , DB_REGISTER ); 1182 ENV_SYSTEM_MEM : 1183 `FLD_SET ( ݒ_ags , DB_SYSTEM_MEM ); 1185 ENV_USE_ENVIRON_ROOT : 1186 `FLD_SET ( ݒ_ags , DB_USE_ENVIRON_ROOT ); 1188 ENV_USE_ENVIRON : 1189 `FLD_SET ( ݒ_ags , DB_USE_ENVIRON ); 1191 ENV_CACHESIZE : 1192 su = `T_LiObjGEmts ( , objv [ i ], 1193 & myobjc , & myobjv ); 1194 i( su = TCL_OK ) 1195 i ++; 1198 i( myobjc != 3) { 1199 `T_WrgNumArgs ( , 2, objv , 1201 su = TCL_ERROR ; 1204 su = `_GUI32 ( , myobjv [0], & gbys ); 1205 i( su ! TCL_OK ) 1207 su = `_GUI32 ( , myobjv [1], & bys ); 1208 i( su ! TCL_OK ) 1210 su = `T_GIFromObj ( , myobjv [2], & nches ); 1211 i( su ! TCL_OK ) 1213 `_debug_check (); 1214 t = (* v )-> `t_chesize (*v, gbys , bys , 1215 nches ); 1216 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1219 ENV_CACHE_MAX : 1220 su = `T_LiObjGEmts ( , objv [ i ], 1221 & myobjc , & myobjv ); 1222 i( su = TCL_OK ) 1223 i ++; 1226 i( myobjc != 2) { 1227 `T_WrgNumArgs ( , 2, objv , 1229 su = TCL_ERROR ; 1232 su = `_GUI32 ( , myobjv [0], & gbys ); 1233 i( su ! TCL_OK ) 1235 su = `_GUI32 ( , myobjv [1], & bys ); 1236 i( su ! TCL_OK ) 1238 `_debug_check (); 1239 t = (* v )-> `t_che_max (*v, gbys , bys ); 1240 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1243 ENV_SHM_KEY : 1244 i( i > objc ) { 1245 `T_WrgNumArgs ( , 2, objv , 1247 su = TCL_ERROR ; 1250 su = `T_GLgFromObj ( , objv [ i ++], & shm ); 1251 i( su = TCL_OK ) { 1252 `_debug_check (); 1253 t = (* v )-> `t_shm_key (*v, shm ); 1254 su = `_RuSup ( , t , 1255 `DB_RETOK_STD ( t ), "shm_key"); 1258 ENV_TXN_MAX : 1259 i( i > objc ) { 1260 `T_WrgNumArgs ( , 2, objv , 1262 su = TCL_ERROR ; 1265 su = `_GUI32 ( , objv [ i ++], & urg ); 1266 i( su = TCL_OK ) { 1267 `_debug_check (); 1268 t = (* v )-> `t_tx_max (*v, urg ); 1269 su = `_RuSup ( , t , 1270 `DB_RETOK_STD ( t ), "txn_max"); 1273 ENV_ERRFILE : 1274 i( i > objc ) { 1275 `T_WrgNumArgs ( , 2, objv , 1277 su = TCL_ERROR ; 1280 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1281 `t_EnvSEfe ( , * v , , g ); 1283 ENV_ERRPFX : 1284 i( i > objc ) { 1285 `T_WrgNumArgs ( , 2, objv , 1287 su = TCL_ERROR ; 1290 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1291 `_debug_check (); 1292 su = `t_EnvSEpfx ( , * v , , g ); 1294 ENV_DATA_DIR : 1295 i( i > objc ) { 1296 `T_WrgNumArgs ( , 2, objv , 1298 su = TCL_ERROR ; 1301 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1302 `_debug_check (); 1303 t = (* v )-> `t_da_d (*v, g ); 1304 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1307 ENV_LOG_DIR : 1308 i( i > objc ) { 1309 `T_WrgNumArgs ( , 2, objv , 1311 su = TCL_ERROR ; 1314 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1315 `_debug_check (); 1316 t = (* v )-> `t_lg_d (*v, g ); 1317 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1320 ENV_TMP_DIR : 1321 i( i > objc ) { 1322 `T_WrgNumArgs ( , 2, objv , 1324 su = TCL_ERROR ; 1327 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1328 `_debug_check (); 1329 t = (* v )-> `t_tmp_d (*v, g ); 1330 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1338 i( su ! TCL_OK ) 1339 r ; 1350 i( logmaxt ) { 1351 `_debug_check (); 1352 t = (* v )-> `t_lg_max (*v, ( u_t32_t ) logmaxt ); 1353 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1357 i( su ! TCL_OK ) 1358 r ; 1360 i( t_ags ) { 1361 t = (* v )-> `t_ags (*v, t_ags , 1); 1362 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1364 i( su = TCL_ERROR ) 1365 r ; 1370 `T_RetResu ( ); 1379 `_debug_check (); 1380 t = (* v )-> `ݒ (*v, home , ݒ_ags , mode ); 1381 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "env open"); 1383 i( p_ags !0 && su = TCL_OK ) { 1384 `_debug_check (); 1385 t = (* v )-> `p_t (*v, NULL , p_ags ); 1386 su = `_RuSup ( , 1387 t , `DB_RETOK_STD (ret), "rep_start"); 1390 r : i( su = TCL_ERROR ) { 1391 i( -> i_r && ip->i_! dout && ip->i_! dr ) { 1392 () `fo ( -> i_r ); 1393 -> i_r = NULL ; 1395 ()(* v )-> `o (*env, 0); 1396 * v = NULL ; 1398 ( su ); 1399 } } 1415 $bdb_DbOn ( , objc , objv , , dbp ) 1416 T_Ip * ; 1417 objc ; 1418 T_Obj * CONST objv []; 1419 DBTCL_INFO * ; 1420 DB ** dbp ; 1422 cڡ * bdbvݒ [] = { 1423 "-v", NULL 1425 ebdbvݒ { 1426 TCL_DB_ENV0 1428 cڡ * bdbݒ [] = { 1429 #ifde CONFIG_TEST 1480 NULL 1482 ebdbݒ { 1483 #ifde CONFIG_TEST 1484 TCL_DB_BTCOMPARE , 1485 TCL_DB_DUPCOMPARE , 1486 TCL_DB_HASHCOMPARE , 1487 TCL_DB_HASHPROC , 1488 TCL_DB_LORDER , 1489 TCL_DB_MINKEY , 1490 TCL_DB_NOMMAP , 1491 TCL_DB_NOTDURABLE , 1492 TCL_DB_READ_UNCOMMITTED , 1493 TCL_DB_REVSPLIT , 1494 TCL_DB_TEST , 1495 TCL_DB_THREAD , 1497 TCL_DB_AUTO_COMMIT , 1498 TCL_DB_BTREE , 1499 TCL_DB_CACHESIZE , 1500 TCL_DB_CHKSUM , 1501 TCL_DB_CREATE , 1502 TCL_DB_DELIM , 1503 TCL_DB_DUP , 1504 TCL_DB_DUPSORT , 1505 TCL_DB_ENCRYPT , 1506 TCL_DB_ENCRYPT_AES , 1507 TCL_DB_ENCRYPT_ANY , 1508 TCL_DB_ENV , 1509 TCL_DB_ERRFILE , 1510 TCL_DB_ERRPFX , 1511 TCL_DB_EXCL , 1512 TCL_DB_EXTENT , 1513 TCL_DB_FFACTOR , 1514 TCL_DB_HASH , 1515 TCL_DB_INORDER , 1516 TCL_DB_LEN , 1517 TCL_DB_MAXSIZE , 1518 TCL_DB_MODE , 1519 TCL_DB_MULTIVERSION , 1520 TCL_DB_NELEM , 1521 TCL_DB_PAD , 1522 TCL_DB_PAGESIZE , 1523 TCL_DB_QUEUE , 1524 TCL_DB_RDONLY , 1525 TCL_DB_RECNO , 1526 TCL_DB_RECNUM , 1527 TCL_DB_RENUMBER , 1528 TCL_DB_SNAPSHOT , 1529 TCL_DB_SOURCE , 1530 TCL_DB_TRUNCATE , 1531 TCL_DB_TXN , 1532 TCL_DB_UNKNOWN , 1533 TCL_DB_ENDARG 1536 DBTCL_INFO * v , * r ; 1537 DB_TXN * txn ; 1538 DBTYPE ty ; 1539 DB_ENV * vp ; 1540 T_Obj ** myobjv ; 1541 u_t32_t gbys , bys , ݒ_ags , t_ags , urg ; 1542 dg , i , rg , mode , myobjc , nches ; 1543 tdex , su , t , t_r , t_pfx , subdbn ; 1544 u_ch * subdbtmp ; 1545 * g , * db , * sswd , * subdb , msg [ MSG_SIZE ]; 1547 ty = DB_UNKNOWN ; 1548 dg = mode = t_r = t_ags = t_pfx = 0; 1549 su = TCL_OK ; 1550 subdbtmp = NULL ; 1551 db = subdb = NULL ; 1566 ݒ_ags = 0; 1568 vp = NULL ; 1569 txn = NULL ; 1571 i( objc < 2) { 1572 `T_WrgNumArgs ( , 2, objv , "?args?"); 1573 ( TCL_ERROR ); 1580 i = 2; 1581 i < objc ) { 1582 i( `T_GIndexFromObj ( , objv [ i ++], bdbvݒ , 1583 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 1588 `T_RetResu ( ); 1591 ( bdbvݒ ) tdex ) { 1592 TCL_DB_ENV0 : 1593 g = `T_GSgFromObj ( objv [ i ], NULL ); 1594 vp = `NAME_TO_ENV ( g ); 1595 i( vp = NULL ) { 1596 `T_SResu ( , 1597 "db on: iegnvmt", TCL_STATIC ); 1598 ( TCL_ERROR ); 1608 t = `db_ ( dbp , vp , 0); 1609 i( t ) 1610 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1614 (* dbp )-> i_ = ; 1624 i( vp = NULL ) { 1625 (* dbp )-> `t_fx ((*dbp), -> i_me ); 1626 (* dbp )-> `t_r ((*dbp), _EFunc ); 1628 v = `_PToInfo ( vp ); 1633 i( v ) 1634 r = v ; 1636 r = ; 1641 i = 2; 1642 i < objc ) { 1643 `T_RetResu ( ); 1644 i( `T_GIndexFromObj ( , objv [ i ], bdbݒ , "option", 1645 TCL_EXACT , & tdex ! TCL_OK ) { 1646 g = `T_GSgFromObj ( objv [ i ], NULL ); 1647 i( g [0] == '-') { 1648 su = `IS_HELP ( objv [ i ]); 1649 r ; 1651 `T_RetResu ( ); 1654 i ++; 1655 ( bdbݒ ) tdex ) { 1656 #ifde CONFIG_TEST 1657 TCL_DB_BTCOMPARE : 1658 i( i > objc ) { 1659 `T_WrgNumArgs ( , 2, objv , 1661 su = TCL_ERROR ; 1672 -> i_com = objv [ i ++]; 1673 `T_InRefCou ( -> i_com ); 1674 `_debug_check (); 1675 t = (* dbp )-> `t_bt_com (*dbp, t_bt_com ); 1676 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1679 TCL_DB_DUPCOMPARE : 1680 i( i > objc ) { 1681 `T_WrgNumArgs ( , 2, objv , 1683 su = TCL_ERROR ; 1691 -> i_dupcom = objv [ i ++]; 1692 `T_InRefCou ( -> i_dupcom ); 1693 `_debug_check (); 1694 t = (* dbp )-> `t_dup_com (*dbp, t_dup_com ); 1695 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1698 TCL_DB_HASHCOMPARE : 1699 i( i > objc ) { 1700 `T_WrgNumArgs ( , 2, objv , 1702 su = TCL_ERROR ; 1713 -> i_com = objv [ i ++]; 1714 `T_InRefCou ( -> i_com ); 1715 `_debug_check (); 1716 t = (* dbp )-> `t_h_com (*dbp, t_bt_com ); 1717 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1720 TCL_DB_HASHPROC : 1721 i( i > objc ) { 1722 `T_WrgNumArgs ( , 2, objv , 1724 su = TCL_ERROR ; 1732 -> i_hashoc = objv [ i ++]; 1733 `T_InRefCou ( -> i_hashoc ); 1734 `_debug_check (); 1735 t = (* dbp )-> `t_h_hash (*dbp, t_h_hash ); 1736 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1739 TCL_DB_LORDER : 1740 i( i > objc ) { 1741 `T_WrgNumArgs ( , 2, objv , 1743 su = TCL_ERROR ; 1746 su = `T_GIFromObj ( , objv [ i ++], & rg ); 1747 i( su = TCL_OK ) { 1748 `_debug_check (); 1749 t = (* dbp )-> `t_ld (*dbp, rg ); 1750 su = `_RuSup ( , t , 1751 `DB_RETOK_STD ( t ), "set_lorder"); 1754 TCL_DB_MINKEY : 1755 i( i > objc ) { 1756 `T_WrgNumArgs ( , 2, objv , 1758 su = TCL_ERROR ; 1761 su = `_GUI32 ( , objv [ i ++], & urg ); 1762 i( su = TCL_OK ) { 1763 `_debug_check (); 1764 t = (* dbp )-> `t_bt_mkey (*dbp, urg ); 1765 su = `_RuSup ( , t , 1766 `DB_RETOK_STD ( t ), "set_bt_minkey"); 1769 TCL_DB_NOMMAP : 1770 ݒ_ags | DB_NOMMAP ; 1772 TCL_DB_NOTDURABLE : 1773 t_ags | DB_TXN_NOT_DURABLE ; 1775 TCL_DB_READ_UNCOMMITTED : 1776 ݒ_ags | DB_READ_UNCOMMITTED ; 1778 TCL_DB_REVSPLIT : 1779 t_ags | DB_REVSPLITOFF ; 1781 TCL_DB_TEST : 1782 t = (* dbp )-> `t_h_hash (*dbp, __ham_ ); 1783 su = `_RuSup ( , t , 1784 `DB_RETOK_STD ( t ), "set_h_hash"); 1786 TCL_DB_THREAD : 1788 ݒ_ags | DB_THREAD ; 1791 TCL_DB_AUTO_COMMIT : 1792 ݒ_ags | DB_AUTO_COMMIT ; 1794 TCL_DB_ENV : 1798 i ++; 1800 TCL_DB_TXN : 1801 i( i > ( objc - 1)) { 1802 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 1803 su = TCL_ERROR ; 1806 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1807 txn = `NAME_TO_TXN ( g ); 1808 i( txn = NULL ) { 1809 `tf ( msg , MSG_SIZE , 1810 "On: Invidxn: %s\n", g ); 1811 `T_SResu ( , msg , TCL_VOLATILE ); 1812 su = TCL_ERROR ; 1815 TCL_DB_BTREE : 1816 i( ty ! DB_UNKNOWN ) { 1817 `T_SResu ( , 1818 "Tomy DByecifd", TCL_STATIC ); 1819 su = TCL_ERROR ; 1820 r ; 1822 ty = DB_BTREE ; 1824 TCL_DB_HASH : 1825 i( ty ! DB_UNKNOWN ) { 1826 `T_SResu ( , 1827 "Tomy DByecifd", TCL_STATIC ); 1828 su = TCL_ERROR ; 1829 r ; 1831 ty = DB_HASH ; 1833 TCL_DB_RECNO : 1834 i( ty ! DB_UNKNOWN ) { 1835 `T_SResu ( , 1836 "Tomy DByecifd", TCL_STATIC ); 1837 su = TCL_ERROR ; 1838 r ; 1840 ty = DB_RECNO ; 1842 TCL_DB_QUEUE : 1843 i( ty ! DB_UNKNOWN ) { 1844 `T_SResu ( , 1845 "Tomy DByecifd", TCL_STATIC ); 1846 su = TCL_ERROR ; 1847 r ; 1849 ty = DB_QUEUE ; 1851 TCL_DB_UNKNOWN : 1852 i( ty ! DB_UNKNOWN ) { 1853 `T_SResu ( , 1854 "Tomy DByecifd", TCL_STATIC ); 1855 su = TCL_ERROR ; 1856 r ; 1859 TCL_DB_CREATE : 1860 ݒ_ags | DB_CREATE ; 1862 TCL_DB_EXCL : 1863 ݒ_ags | DB_EXCL ; 1865 TCL_DB_RDONLY : 1866 ݒ_ags | DB_RDONLY ; 1868 TCL_DB_TRUNCATE : 1869 ݒ_ags | DB_TRUNCATE ; 1871 TCL_DB_MODE : 1872 i( i > objc ) { 1873 `T_WrgNumArgs ( , 2, objv , 1875 su = TCL_ERROR ; 1884 su = `T_GIFromObj ( , objv [ i ++], & mode ); 1886 TCL_DB_DUP : 1887 t_ags | DB_DUP ; 1889 TCL_DB_DUPSORT : 1890 t_ags | DB_DUPSORT ; 1892 TCL_DB_INORDER : 1893 t_ags | DB_INORDER ; 1895 TCL_DB_RECNUM : 1896 t_ags | DB_RECNUM ; 1898 TCL_DB_RENUMBER : 1899 t_ags | DB_RENUMBER ; 1901 TCL_DB_SNAPSHOT : 1902 t_ags | DB_SNAPSHOT ; 1904 TCL_DB_CHKSUM : 1905 t_ags | DB_CHKSUM ; 1907 TCL_DB_ENCRYPT : 1908 t_ags | DB_ENCRYPT ; 1910 TCL_DB_ENCRYPT_AES : 1912 i( i > objc ) { 1913 `T_WrgNumArgs ( , 2, objv , 1915 su = TCL_ERROR ; 1918 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1919 `_debug_check (); 1920 t = (* dbp )-> `t_y (*dbp, sswd , DB_ENCRYPT_AES ); 1921 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1924 TCL_DB_ENCRYPT_ANY : 1926 i( i > objc ) { 1927 `T_WrgNumArgs ( , 2, objv , 1929 su = TCL_ERROR ; 1932 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1933 `_debug_check (); 1934 t = (* dbp )-> `t_y (*dbp, sswd , 0); 1935 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1938 TCL_DB_FFACTOR : 1939 i( i > objc ) { 1940 `T_WrgNumArgs ( , 2, objv , 1942 su = TCL_ERROR ; 1945 su = `_GUI32 ( , objv [ i ++], & urg ); 1946 i( su = TCL_OK ) { 1947 `_debug_check (); 1948 t = (* dbp )-> `t_h_f (*dbp, urg ); 1949 su = `_RuSup ( , t , 1950 `DB_RETOK_STD ( t ), "set_h_ffactor"); 1953 TCL_DB_MULTIVERSION : 1954 ݒ_ags | DB_MULTIVERSION ; 1956 TCL_DB_NELEM : 1957 i( i > objc ) { 1958 `T_WrgNumArgs ( , 2, objv , 1960 su = TCL_ERROR ; 1963 su = `_GUI32 ( , objv [ i ++], & urg ); 1964 i( su = TCL_OK ) { 1965 `_debug_check (); 1966 t = (* dbp )-> `t_h_m (*dbp, urg ); 1967 su = `_RuSup ( , t , 1968 `DB_RETOK_STD ( t ), "set_h_nelem"); 1971 TCL_DB_DELIM : 1972 i( i > objc ) { 1973 `T_WrgNumArgs ( , 2, objv , 1975 su = TCL_ERROR ; 1978 su = `T_GIFromObj ( , objv [ i ++], & rg ); 1979 i( su = TCL_OK ) { 1980 `_debug_check (); 1981 t = (* dbp )-> `t__dim (*dbp, rg ); 1982 su = `_RuSup ( , t , 1983 `DB_RETOK_STD ( t ), "set_re_delim"); 1986 TCL_DB_LEN : 1987 i( i > objc ) { 1988 `T_WrgNumArgs ( , 2, objv , 1990 su = TCL_ERROR ; 1993 su = `_GUI32 ( , objv [ i ++], & urg ); 1994 i( su = TCL_OK ) { 1995 `_debug_check (); 1996 t = (* dbp )-> `t__n (*dbp, urg ); 1997 su = `_RuSup ( , t , 1998 `DB_RETOK_STD ( t ), "set_re_len"); 2001 TCL_DB_MAXSIZE : 2002 i( i > objc ) { 2003 `T_WrgNumArgs ( , 2, objv , 2005 su = TCL_ERROR ; 2008 su = `_GUI32 ( , objv [ i ++], & urg ); 2009 i( su = TCL_OK ) { 2010 `_debug_check (); 2011 t = (* dbp )-> mpf -> `t_maxsize ( 2012 (* dbp )-> mpf , 0, urg ); 2013 su = `_RuSup ( , t , 2014 `DB_RETOK_STD ( t ), "set_re_len"); 2017 TCL_DB_PAD : 2018 i( i > objc ) { 2019 `T_WrgNumArgs ( , 2, objv , 2021 su = TCL_ERROR ; 2024 su = `T_GIFromObj ( , objv [ i ++], & rg ); 2025 i( su = TCL_OK ) { 2026 `_debug_check (); 2027 t = (* dbp )-> `t__d (*dbp, rg ); 2028 su = `_RuSup ( , t , 2029 `DB_RETOK_STD ( t ), "set_re_pad"); 2032 TCL_DB_SOURCE : 2033 i( i > objc ) { 2034 `T_WrgNumArgs ( , 2, objv , 2036 su = TCL_ERROR ; 2039 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2040 `_debug_check (); 2041 t = (* dbp )-> `t__sour (*dbp, g ); 2042 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2045 TCL_DB_EXTENT : 2046 i( i > objc ) { 2047 `T_WrgNumArgs ( , 2, objv , 2049 su = TCL_ERROR ; 2052 su = `_GUI32 ( , objv [ i ++], & urg ); 2053 i( su = TCL_OK ) { 2054 `_debug_check (); 2055 t = (* dbp )-> `t_q_exsize (*dbp, urg ); 2056 su = `_RuSup ( , t , 2057 `DB_RETOK_STD ( t ), "set_q_extentsize"); 2060 TCL_DB_CACHESIZE : 2061 su = `T_LiObjGEmts ( , objv [ i ++], 2062 & myobjc , & myobjv ); 2063 i( su ! TCL_OK ) 2065 i( myobjc != 3) { 2066 `T_WrgNumArgs ( , 2, objv , 2068 su = TCL_ERROR ; 2071 su = `_GUI32 ( , myobjv [0], & gbys ); 2072 i( su ! TCL_OK ) 2074 su = `_GUI32 ( , myobjv [1], & bys ); 2075 i( su ! TCL_OK ) 2077 su = `T_GIFromObj ( , myobjv [2], & nches ); 2078 i( su ! TCL_OK ) 2080 `_debug_check (); 2081 t = (* dbp )-> `t_chesize (*dbp, gbys , bys , 2082 nches ); 2083 su = `_RuSup ( , t , 2084 `DB_RETOK_STD ( t ), "set_cachesize"); 2086 TCL_DB_PAGESIZE : 2087 i( i > objc ) { 2088 `T_WrgNumArgs ( , 2, objv , 2090 su = TCL_ERROR ; 2093 su = `T_GIFromObj ( , objv [ i ++], & rg ); 2094 i( su = TCL_OK ) { 2095 `_debug_check (); 2096 t = (* dbp )-> `t_gesize (*dbp, 2097 ( size_t ) rg ); 2098 su = `_RuSup ( , t , 2099 `DB_RETOK_STD ( t ), "setagesize"); 2102 TCL_DB_ERRFILE : 2103 i( i > objc ) { 2104 `T_WrgNumArgs ( , 2, objv , 2106 su = TCL_ERROR ; 2109 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2113 i( r -> i_r ! NULL && 2114 r -> i_r ! dout &&->i_! dr ) 2115 () `fo ( r -> i_r ); 2116 i( `rcmp ( g , "/dev/stdout") == 0) 2117 r -> i_r = dout ; 2118 i( `rcmp ( g , "/dev/stderr") == 0) 2119 r -> i_r = dr ; 2121 r -> i_r = `fݒ ( g , "a"); 2122 i( r -> i_r ! NULL ) { 2123 `_debug_check (); 2124 (* dbp )-> `t_rfe (*dbp, r -> i_r ); 2125 t_r = 1; 2128 TCL_DB_ERRPFX : 2129 i( i > objc ) { 2130 `T_WrgNumArgs ( , 2, objv , 2132 su = TCL_ERROR ; 2135 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2139 i( r -> i_fx ! NULL ) 2140 `__os_ ( NULL , r -> i_fx ); 2141 i(( t = `__os_rdup ((* dbp )-> dbv , 2142 g , & r -> i_fx )) != 0) { 2143 su = `_RuSup ( , t , 2144 `DB_RETOK_STD ( t ), "__os_strdup"); 2147 i( r -> i_fx ! NULL ) { 2148 `_debug_check (); 2149 (* dbp )-> `t_fx (*dbp, r -> i_fx ); 2150 t_pfx = 1; 2153 TCL_DB_ENDARG : 2154 dg = 1; 2162 i( su ! TCL_OK ) 2163 r ; 2164 i( dg ) 2167 i( su ! TCL_OK ) 2168 r ; 2175 i( i ! objc ) { 2181 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2182 i( `rcmp ( db , "") == 0) 2183 db = NULL ; 2184 i( i ! objc ) { 2185 subdbtmp = 2186 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2187 i(( t = `__os_mloc ( vp , 2188 ( size_t ) subdbn + 1, & subdb )) != 0) { 2189 `T_SResu ( , `db_ ( t ), 2190 TCL_STATIC ); 2193 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2194 subdb [ subdbn ] = '\0'; 2197 i( t_ags ) { 2198 t = (* dbp )-> `t_ags (*dbp, t_ags ); 2199 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2201 i( su = TCL_ERROR ) 2202 r ; 2207 `T_RetResu ( ); 2215 `_debug_check (); 2218 t = (* dbp )-> `ݒ (*dbp, txn , db , subdb , ty , ݒ_ags , mode ); 2219 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db open"); 2221 r : 2222 i( subdb ) 2223 `__os_ ( vp , subdb ); 2224 i( su = TCL_ERROR ) { 2225 ()(* dbp )-> `o (*dbp, 0); 2237 i( t_r && r &&-> i_r ! NULL && 2238 r -> i_r ! dout &&->i_! dr ) { 2239 () `fo ( r -> i_r ); 2240 r -> i_r = NULL ; 2242 i( t_pfx && r &&-> i_fx ! NULL ) { 2243 `__os_ ( vp , r -> i_fx ); 2244 r -> i_fx = NULL ; 2246 * dbp = NULL ; 2248 ( su ); 2249 } } 2251 #ifde HAVE_64BIT_TYPES 2257 $bdb_SeqOn ( , objc , objv , , qp ) 2258 T_Ip * ; 2259 objc ; 2260 T_Obj * CONST objv []; 2261 DBTCL_INFO * ; 2262 DB_SEQUENCE ** qp ; 2264 cڡ * qݒ [] = { 2276 NULL 2278 eqݒ { 2279 TCL_SEQ_CACHESIZE , 2280 TCL_SEQ_CREATE , 2281 TCL_SEQ_INC , 2282 TCL_SEQ_INIT , 2283 TCL_SEQ_DEC , 2284 TCL_SEQ_MAX , 2285 TCL_SEQ_MIN , 2286 TCL_SEQ_THREAD , 2287 TCL_SEQ_TXN , 2288 TCL_SEQ_WRAP , 2289 TCL_SEQ_ENDARG 2291 DB * dbp ; 2292 DBT key ; 2293 DBTYPE ty ; 2294 DB_TXN * txn ; 2295 db_o_t o ; 2296 db_q_t m , max , vue ; 2297 T_WideI t_vue ; 2298 u_t32_t ags , oags ; 2299 che , dg , i , tdex , su , t , ge , tvue , v ; 2300 * g , * db , msg [ MSG_SIZE ]; 2302 `COMPQUIET ( , NULL ); 2303 `COMPQUIET ( vue , 0); 2304 * qp = NULL ; 2306 i( objc < 2) { 2307 `T_WrgNumArgs ( , 2, objv , "?args?"); 2308 ( TCL_ERROR ); 2311 txn = NULL ; 2312 dg = 0; 2313 ags = oags = 0; 2314 ge = tvue = 0; 2315 m = INT64_MIN ; 2316 max = INT64_MAX ; 2317 che = 0; 2319 i = 2; i < objc ;) { 2320 `T_RetResu ( ); 2321 i( `T_GIndexFromObj ( , objv [ i ], qݒ , "option", 2322 TCL_EXACT , & tdex ! TCL_OK ) { 2323 g = `T_GSgFromObj ( objv [ i ], NULL ); 2324 i( g [0] == '-') { 2325 su = `IS_HELP ( objv [ i ]); 2326 r ; 2328 `T_RetResu ( ); 2331 i ++; 2332 su = TCL_OK ; 2333 ( qݒ ) tdex ) { 2334 TCL_SEQ_CREATE : 2335 oags | DB_CREATE ; 2337 TCL_SEQ_INC : 2338 `LF_SET ( DB_SEQ_INC ); 2340 TCL_SEQ_CACHESIZE : 2341 i( i > objc ) { 2342 `T_WrgNumArgs ( , 2, objv , 2344 su = TCL_ERROR ; 2347 su = `T_GIFromObj ( , objv [ i ++], & che ); 2349 TCL_SEQ_INIT : 2350 i( i > objc ) { 2351 `T_WrgNumArgs ( , 2, objv , 2353 su = TCL_ERROR ; 2356 su = 2357 `T_GWideIFromObj ( 2358 , objv [ i ++], & t_vue ); 2359 vue = t_vue ; 2360 tvue = 1; 2362 TCL_SEQ_DEC : 2363 `LF_SET ( DB_SEQ_DEC ); 2365 TCL_SEQ_MAX : 2366 i( i > objc ) { 2367 `T_WrgNumArgs ( , 2, objv , 2369 su = TCL_ERROR ; 2372 i(( su = 2373 `T_GWideIFromObj ( , 2374 objv [ i ++], & t_vue )! TCL_OK ) 2375 r ; 2376 max = t_vue ; 2377 ge = 1; 2379 TCL_SEQ_MIN : 2380 i( i > objc ) { 2381 `T_WrgNumArgs ( , 2, objv , 2383 su = TCL_ERROR ; 2386 i(( su = 2387 `T_GWideIFromObj ( , 2388 objv [ i ++], & t_vue )! TCL_OK ) 2389 r ; 2390 m = t_vue ; 2391 ge = 1; 2393 TCL_SEQ_THREAD : 2394 oags | DB_THREAD ; 2396 TCL_SEQ_TXN : 2397 i( i > ( objc - 1)) { 2398 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2399 su = TCL_ERROR ; 2402 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2403 txn = `NAME_TO_TXN ( g ); 2404 i( txn = NULL ) { 2405 `tf ( msg , MSG_SIZE , 2406 "Sequ: Invidxn: %s\n", g ); 2407 `T_SResu ( , msg , TCL_VOLATILE ); 2408 su = TCL_ERROR ; 2411 TCL_SEQ_WRAP : 2412 `LF_SET ( DB_SEQ_WRAP ); 2414 TCL_SEQ_ENDARG : 2415 dg = 1; 2422 i( su ! TCL_OK ) 2423 r ; 2424 i( dg ) 2428 i( objc - i != 2) { 2429 `T_WrgNumArgs ( , 2, objv , "?args?"); 2430 ( TCL_ERROR ); 2436 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2437 i(( dbp = `NAME_TO_DB ( db )= NULL ) { 2438 `T_SResu ( , "Nsuch dbp", TCL_STATIC ); 2439 ( TCL_ERROR ); 2441 () dbp -> `g_ty (dbp, & ty ); 2443 i( ty = DB_QUEUE ||y = DB_RECNO ) { 2444 su = `_GUI32 ( , objv [ i ++], & o ); 2445 i( su ! TCL_OK ) 2446 ( su ); 2447 `DB_INIT_DBT ( key , & o , (recno)); 2449 `DB_INIT_DBT ( key , `T_GByAayFromObj ( objv [ i ++], & v ), v); 2450 t = `db_qu_ ( qp , dbp , 0); 2451 i(( su = `_RuSup ( , 2452 t , `DB_RETOK_STD ԑ), "qu ce")! TCL_OK ) { 2453 * qp = NULL ; 2454 ( su ); 2457 t = (* qp )-> `t_ags (*qp, ags ); 2458 i(( su = `_RuSup ( , 2459 t , `DB_RETOK_STD ԑ), "qu s_ags")! TCL_OK ) 2460 r ; 2461 i( ge ) { 2462 t = (* qp )-> `t_nge (*qp, m , max ); 2463 i(( su = `_RuSup ( , 2464 t , `DB_RETOK_STD ԑ), "qu s_nge")! TCL_OK ) 2465 r ; 2467 i( che ) { 2468 t = (* qp )-> `t_chesize (*qp, che ); 2469 i(( su = `_RuSup ( , 2470 t , `DB_RETOK_STD ԑ), "qu cachesize")! TCL_OK ) 2471 r ; 2473 i( tvue ) { 2474 t = (* qp )-> `l_vue (*qp, vue ); 2475 i(( su = `_RuSup ( , 2476 t , `DB_RETOK_STD ԑ), "qu in")! TCL_OK ) 2477 r ; 2479 t = (* qp )-> `ݒ (*qp, txn , & key , oags ); 2480 i(( su = `_RuSup ( , 2481 t , `DB_RETOK_STD ԑ), "qu on")! TCL_OK ) 2482 r ; 2485 r : i(* qp ! NULL ) 2486 ()(* qp )-> `o (*seqp, 0); 2487 * qp = NULL ; 2489 ( su ); 2490 } } 2498 $bdb_DbRemove ( , objc , objv ) 2499 T_Ip * ; 2500 objc ; 2501 T_Obj * CONST objv []; 2503 cڡ * bdbm [] = { 2511 NULL 2513 ebdbm { 2514 TCL_DBREM_AUTOCOMMIT , 2515 TCL_DBREM_ENCRYPT , 2516 TCL_DBREM_ENCRYPT_AES , 2517 TCL_DBREM_ENCRYPT_ANY , 2518 TCL_DBREM_ENV , 2519 TCL_DBREM_TXN , 2520 TCL_DBREM_ENDARG 2522 DB * dbp ; 2523 DB_ENV * vp ; 2524 DB_TXN * txn ; 2525 dg , i , tdex , su , t , subdbn ; 2526 u_t32_t c_ag , iags , t_ags ; 2527 u_ch * subdbtmp ; 2528 * g , * db , msg [ MSG_SIZE ], * sswd , * subdb ; 2530 db = subdb = NULL ; 2531 dbp = NULL ; 2532 dg = 0; 2533 vp = NULL ; 2534 iags = c_ag = t_ags = 0; 2535 sswd = NULL ; 2536 su = TCL_OK ; 2537 subdbtmp = NULL ; 2538 txn = NULL ; 2540 i( objc < 2) { 2541 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 2542 ( TCL_ERROR ); 2549 i = 2; 2550 i < objc ) { 2551 i( `T_GIndexFromObj ( , objv [ i ], bdbm , 2552 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 2553 g = `T_GSgFromObj ( objv [ i ], NULL ); 2554 i( g [0] == '-') { 2555 su = `IS_HELP ( objv [ i ]); 2556 r ; 2558 `T_RetResu ( ); 2561 i ++; 2562 ( bdbm ) tdex ) { 2563 TCL_DBREM_AUTOCOMMIT : 2564 iags | DB_AUTO_COMMIT ; 2565 `_debug_check (); 2567 TCL_DBREM_ENCRYPT : 2568 t_ags | DB_ENCRYPT ; 2569 `_debug_check (); 2571 TCL_DBREM_ENCRYPT_AES : 2573 i( i > objc ) { 2574 `T_WrgNumArgs ( , 2, objv , 2576 su = TCL_ERROR ; 2579 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2580 c_ag = DB_ENCRYPT_AES ; 2582 TCL_DBREM_ENCRYPT_ANY : 2584 i( i > objc ) { 2585 `T_WrgNumArgs ( , 2, objv , 2587 su = TCL_ERROR ; 2590 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2591 c_ag = 0; 2593 TCL_DBREM_ENV : 2594 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2595 vp = `NAME_TO_ENV ( g ); 2596 i( vp = NULL ) { 2597 `T_SResu ( , 2599 TCL_STATIC ); 2600 ( TCL_ERROR ); 2603 TCL_DBREM_ENDARG : 2604 dg = 1; 2606 TCL_DBREM_TXN : 2607 i( i > objc ) { 2608 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2609 su = TCL_ERROR ; 2612 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2613 txn = `NAME_TO_TXN ( g ); 2614 i( txn = NULL ) { 2615 `tf ( msg , MSG_SIZE , 2616 "Put: Invidxn: %s\n", g ); 2617 `T_SResu ( , msg , TCL_VOLATILE ); 2618 su = TCL_ERROR ; 2626 i( su ! TCL_OK ) 2627 r ; 2628 i( dg ) 2631 i( su ! TCL_OK ) 2632 r ; 2637 i(( i !( objc - 1)) || (i != (objc - 2))) { 2643 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2644 i( `rcmp ( db , "") == 0) 2645 db = NULL ; 2646 i( i ! objc ) { 2647 subdbtmp = 2648 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2649 i(( t = `__os_mloc ( vp , ( size_t ) subdbn + 1, 2650 & subdb )!0{ `T_SResu ( , 2651 `db_ ( t ), TCL_STATIC ); 2654 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2655 subdb [ subdbn ] = '\0'; 2658 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 2659 su = TCL_ERROR ; 2660 r ; 2662 i( vp = NULL ) { 2663 t = `db_ (& dbp , vp , 0); 2664 i( t ) { 2665 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2667 r ; 2678 dbp -> `t_fx (dbp, "DbRemove"); 2679 dbp -> `t_r (dbp, _EFunc ); 2681 i( sswd ! NULL ) { 2682 t = dbp -> `t_y (dbp, sswd , c_ag ); 2683 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2686 i( t_ags != 0) { 2687 t = dbp -> `t_ags (dbp, t_ags ); 2688 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2696 `_debug_check (); 2697 i( dbp = NULL ) 2698 t = vp -> `dbmove nvp, txn , db , subdb , iags ); 2700 t = dbp -> `move (dbp, db , subdb , 0); 2702 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "dbemove"); 2703 dbp = NULL ; 2704 r : 2705 i( subdb ) 2706 `__os_ ( vp , subdb ); 2707 i( su = TCL_ERROR && dbp ! NULL ) 2708 () dbp -> `o (dbp, 0); 2709 ( su ); 2710 } } 2717 $bdb_DbRame ( , objc , objv ) 2718 T_Ip * ; 2719 objc ; 2720 T_Obj * CONST objv []; 2722 cڡ * bdbmv [] = { 2730 NULL 2732 ebdbmv { 2733 TCL_DBMV_AUTOCOMMIT , 2734 TCL_DBMV_ENCRYPT , 2735 TCL_DBMV_ENCRYPT_AES , 2736 TCL_DBMV_ENCRYPT_ANY , 2737 TCL_DBMV_ENV , 2738 TCL_DBMV_TXN , 2739 TCL_DBMV_ENDARG 2741 DB * dbp ; 2742 DB_ENV * vp ; 2743 DB_TXN * txn ; 2744 u_t32_t c_ag , iags , t_ags ; 2745 dg , i , wn , tdex , su , t , subdbn ; 2746 u_ch * subdbtmp ; 2747 * g , * db , msg [ MSG_SIZE ], * wme , * sswd , * subdb ; 2749 db = wme = subdb = NULL ; 2750 dbp = NULL ; 2751 dg = 0; 2752 vp = NULL ; 2753 iags = c_ag = t_ags = 0; 2754 sswd = NULL ; 2755 su = TCL_OK ; 2756 subdbtmp = NULL ; 2757 txn = NULL ; 2759 i( objc < 2) { 2760 `T_WrgNumArgs ( , 2761 3, objv , "?args? filename ?database? ?newname?"); 2762 ( TCL_ERROR ); 2769 i = 2; 2770 i < objc ) { 2771 i( `T_GIndexFromObj ( , objv [ i ], bdbmv , 2772 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 2773 g = `T_GSgFromObj ( objv [ i ], NULL ); 2774 i( g [0] == '-') { 2775 su = `IS_HELP ( objv [ i ]); 2776 r ; 2778 `T_RetResu ( ); 2781 i ++; 2782 ( bdbmv ) tdex ) { 2783 TCL_DBMV_AUTOCOMMIT : 2784 iags | DB_AUTO_COMMIT ; 2785 `_debug_check (); 2787 TCL_DBMV_ENCRYPT : 2788 t_ags | DB_ENCRYPT ; 2789 `_debug_check (); 2791 TCL_DBMV_ENCRYPT_AES : 2793 i( i > objc ) { 2794 `T_WrgNumArgs ( , 2, objv , 2796 su = TCL_ERROR ; 2799 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2800 c_ag = DB_ENCRYPT_AES ; 2802 TCL_DBMV_ENCRYPT_ANY : 2804 i( i > objc ) { 2805 `T_WrgNumArgs ( , 2, objv , 2807 su = TCL_ERROR ; 2810 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2811 c_ag = 0; 2813 TCL_DBMV_ENV : 2814 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2815 vp = `NAME_TO_ENV ( g ); 2816 i( vp = NULL ) { 2817 `T_SResu ( , 2819 TCL_STATIC ); 2820 ( TCL_ERROR ); 2823 TCL_DBMV_ENDARG : 2824 dg = 1; 2826 TCL_DBMV_TXN : 2827 i( i > objc ) { 2828 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2829 su = TCL_ERROR ; 2832 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2833 txn = `NAME_TO_TXN ( g ); 2834 i( txn = NULL ) { 2835 `tf ( msg , MSG_SIZE , 2836 "Put: Invidxn: %s\n", g ); 2837 `T_SResu ( , msg , TCL_VOLATILE ); 2838 su = TCL_ERROR ; 2846 i( su ! TCL_OK ) 2847 r ; 2848 i( dg ) 2851 i( su ! TCL_OK ) 2852 r ; 2857 i(( i !( objc - 2)) || (i != (objc - 3))) { 2863 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2864 i( `rcmp ( db , "") == 0) 2865 db = NULL ; 2866 i( i = objc - 2) { 2867 subdbtmp = 2868 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2869 i(( t = `__os_mloc ( vp , ( size_t ) subdbn + 1, 2870 & subdb )) != 0) { 2871 `T_SResu ( , 2872 `db_ ( t ), TCL_STATIC ); 2875 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2876 subdb [ subdbn ] = '\0'; 2878 subdbtmp = 2879 `T_GByAayFromObj ( objv [ i ++], & wn ); 2880 i(( t = `__os_mloc ( vp , ( size_t ) wn + 1, 2881 & wme )) != 0) { 2882 `T_SResu ( , 2883 `db_ ( t ), TCL_STATIC ); 2886 `memy ( wme , subdbtmp , ( size_t ) wn ); 2887 wme [ wn ] = '\0'; 2889 `T_WrgNumArgs ( 2890 , 3, objv , "?args? filename ?database? ?newname?"); 2891 su = TCL_ERROR ; 2892 r ; 2894 i( vp = NULL ) { 2895 t = `db_ (& dbp , vp , 0); 2896 i( t ) { 2897 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2899 r ; 2909 dbp -> `t_fx (dbp, "DbRename"); 2910 dbp -> `t_r (dbp, _EFunc ); 2912 i( sswd ! NULL ) { 2913 t = dbp -> `t_y (dbp, sswd , c_ag ); 2914 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2917 i( t_ags != 0) { 2918 t = dbp -> `t_ags (dbp, t_ags ); 2919 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2927 `_debug_check (); 2928 i( dbp = NULL ) 2929 t = vp -> `dbme nvp, txn , db , subdb , wme , iags ); 2931 t = dbp -> `me (dbp, db , subdb , wme , 0); 2932 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "dbename"); 2933 dbp = NULL ; 2934 r : 2935 i( subdb ) 2936 `__os_ ( vp , subdb ); 2937 i( wme ) 2938 `__os_ ( vp , wme ); 2939 i( su = TCL_ERROR && dbp ! NULL ) 2940 () dbp -> `o (dbp, 0); 2941 ( su ); 2942 } } 2944 #ifde CONFIG_TEST 2950 $bdb_DbVify ( , objc , objv ) 2951 T_Ip * ; 2952 objc ; 2953 T_Obj * CONST objv []; 2955 cڡ * bdbvify [] = { 2966 NULL 2968 ebdbvrfy { 2969 TCL_DBVRFY_ENCRYPT , 2970 TCL_DBVRFY_ENCRYPT_AES , 2971 TCL_DBVRFY_ENCRYPT_ANY , 2972 TCL_DBVRFY_ENV , 2973 TCL_DBVRFY_ERRFILE , 2974 TCL_DBVRFY_ERRPFX , 2975 TCL_DBVRFY_NOORDERCHK , 2976 TCL_DBVRFY_ORDERCHKONLY , 2977 TCL_DBVRFY_UNREF , 2978 TCL_DBVRFY_ENDARG 2980 DB_ENV * vp ; 2981 DB * dbp ; 2982 FILE * rf ; 2983 u_t32_t c_ag , ags , t_ags ; 2984 dg , i , tdex , su , t , subdbn ; 2985 * g , * db , * fx , * sswd , * subdb ; 2986 u_ch * subdbtmp ; 2988 vp = NULL ; 2989 dbp = NULL ; 2990 sswd = NULL ; 2991 su = TCL_OK ; 2992 db = fx = subdb = NULL ; 2993 rf = NULL ; 2994 ags = dg = 0; 2995 c_ag = t_ags = 0; 2997 i( objc < 2) { 2998 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 2999 ( TCL_ERROR ); 3006 i = 2; 3007 i < objc ) { 3008 i( `T_GIndexFromObj ( , objv [ i ], bdbvify , 3009 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 3010 g = `T_GSgFromObj ( objv [ i ], NULL ); 3011 i( g [0] == '-') { 3012 su = `IS_HELP ( objv [ i ]); 3013 r ; 3015 `T_RetResu ( ); 3018 i ++; 3019 ( bdbvrfy ) tdex ) { 3020 TCL_DBVRFY_ENCRYPT : 3021 t_ags | DB_ENCRYPT ; 3022 `_debug_check (); 3024 TCL_DBVRFY_ENCRYPT_AES : 3026 i( i > objc ) { 3027 `T_WrgNumArgs ( , 2, objv , 3029 su = TCL_ERROR ; 3032 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 3033 c_ag = DB_ENCRYPT_AES ; 3035 TCL_DBVRFY_ENCRYPT_ANY : 3037 i( i > objc ) { 3038 `T_WrgNumArgs ( , 2, objv , 3040 su = TCL_ERROR ; 3043 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 3044 c_ag = 0; 3046 TCL_DBVRFY_ENV : 3047 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3048 vp = `NAME_TO_ENV ( g ); 3049 i( vp = NULL ) { 3050 `T_SResu ( , 3052 TCL_STATIC ); 3053 su = TCL_ERROR ; 3057 TCL_DBVRFY_ERRFILE : 3058 i( i > objc ) { 3059 `T_WrgNumArgs ( , 2, objv , 3061 su = TCL_ERROR ; 3064 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3068 i( rf ! NULL &&! dout &&! dr ) 3069 () `fo ( rf ); 3070 i( `rcmp ( g , "/dev/stdout") == 0) 3071 rf = dout ; 3072 i( `rcmp ( g , "/dev/stderr") == 0) 3073 rf = dr ; 3075 rf = `fݒ ( g , "a"); 3077 TCL_DBVRFY_ERRPFX : 3078 i( i > objc ) { 3079 `T_WrgNumArgs ( , 2, objv , 3081 su = TCL_ERROR ; 3084 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3088 i( fx ! NULL ) 3089 `__os_ ( vp , fx ); 3090 i(( t = `__os_rdup ( NULL , g , & fx )) != 0) { 3091 su = `_RuSup ( , t , 3092 `DB_RETOK_STD ( t ), "__os_strdup"); 3096 TCL_DBVRFY_NOORDERCHK : 3097 ags | DB_NOORDERCHK ; 3099 TCL_DBVRFY_ORDERCHKONLY : 3100 ags | DB_ORDERCHKONLY ; 3102 TCL_DBVRFY_UNREF : 3103 ags | DB_UNREF ; 3105 TCL_DBVRFY_ENDARG : 3106 dg = 1; 3113 i( su ! TCL_OK ) 3114 r ; 3115 i( dg ) 3118 i( su ! TCL_OK ) 3119 r ; 3127 i( i ! objc ) { 3133 db = `T_GSgFromObj ( objv [ i ++], NULL ); 3134 i( `rcmp ( db , "") == 0) 3135 db = NULL ; 3136 i( i ! objc ) { 3137 subdbtmp = 3138 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 3139 i(( t = `__os_mloc ( vp , 3140 ( size_t ) subdbn + 1, & subdb )) != 0) { 3141 `T_SResu ( , `db_ ( t ), 3142 TCL_STATIC ); 3145 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 3146 subdb [ subdbn ] = '\0'; 3149 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3150 su = TCL_ERROR ; 3151 r ; 3153 t = `db_ (& dbp , vp , 0); 3154 i( t ) { 3155 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3157 r ; 3160 i( sswd ! NULL ) { 3161 t = dbp -> `t_y (dbp, sswd , c_ag ); 3162 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3166 i( t_ags != 0) { 3167 t = dbp -> `t_ags (dbp, t_ags ); 3168 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3171 i( rf ! NULL ) 3172 dbp -> `t_rfe (dbp, rf ); 3173 i( fx ! NULL ) 3174 dbp -> `t_fx (dbp, fx ); 3179 t = dbp -> `vify (dbp, db , subdb , NULL , ags ); 3180 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db verify"); 3181 dbp = NULL ; 3182 r : 3183 i( rf ! NULL &&! dout &&! dr ) 3184 () `fo ( rf ); 3185 i( fx ! NULL ) 3186 `__os_ ( vp , fx ); 3187 i( dbp ) 3188 () dbp -> `o (dbp, 0); 3189 ( su ); 3190 } } 3198 $bdb_Vsi ( , objc , objv ) 3199 T_Ip * ; 3200 objc ; 3201 T_Obj * CONST objv []; 3203 cڡ * bdbv [] = { 3204 "-rg", NULL 3206 ebdbv { 3207 TCL_VERSTRING 3209 i , tdex , maj , m , tch , su , rg , vobjc ; 3210 * g , * v ; 3211 T_Obj * s , * vobjv [3]; 3213 su = TCL_OK ; 3214 rg = 0; 3216 i( objc < 2) { 3217 `T_WrgNumArgs ( , 2, objv , "?args?"); 3218 ( TCL_ERROR ); 3225 i = 2; 3226 i < objc ) { 3227 i( `T_GIndexFromObj ( , objv [ i ], bdbv , 3228 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 3229 g = `T_GSgFromObj ( objv [ i ], NULL ); 3230 i( g [0] == '-') { 3231 su = `IS_HELP ( objv [ i ]); 3232 r ; 3234 `T_RetResu ( ); 3237 i ++; 3238 ( bdbv ) tdex ) { 3239 TCL_VERSTRING : 3240 rg = 1; 3247 i( su ! TCL_OK ) 3248 r ; 3250 i( su ! TCL_OK ) 3251 r ; 3253 v = `db_vsi (& maj , & m , & tch ); 3254 i( rg ) 3255 s = `NewSgObj ( v , ` (v)); 3257 vobjc = 3; 3258 vobjv [0] = `T_NewIObj ( maj ); 3259 vobjv [1] = `T_NewIObj ( m ); 3260 vobjv [2] = `T_NewIObj ( tch ); 3261 s = `T_NewLiObj ( vobjc , vobjv ); 3263 `T_SObjResu ( , s ); 3264 r : 3265 ( su ); 3266 } } 3268 #ifde CONFIG_TEST 3273 #ADD_CONFIG_NAME ( me ) \ 3274 cf = `NewSgObj ( me , ` (name)); \ 3275 i( `T_LiObjAdEmt ( , s , cf ! TCL_OK ) \ 3276 ( TCL_ERROR ); ) 3279 $bdb_GCfig ( , objc , objv ) 3280 T_Ip * ; 3281 objc ; 3282 T_Obj * CONST objv []; 3284 T_Obj * s , * cf ; 3289 i( objc != 2) { 3290 `T_WrgNumArgs ( , 2, objv , ""); 3291 ( TCL_ERROR ); 3293 s = `T_NewLiObj (0, NULL ); 3294 cf = NULL ; 3302 #ifde DEBUG 3303 `ADD_CONFIG_NAME ("debug"); 3305 #ifde DEBUG_ROP 3306 `ADD_CONFIG_NAME ("debug_rop"); 3308 #ifde DEBUG_WOP 3309 `ADD_CONFIG_NAME ("debug_wop"); 3311 #ifde HAVE_HASH 3312 `ADD_CONFIG_NAME ("hash"); 3314 #ifde HAVE_QUEUE 3315 `ADD_CONFIG_NAME ("queue"); 3317 #ifde HAVE_REPLICATION 3318 `ADD_CONFIG_NAME ("rep"); 3320 #ifde HAVE_REPLICATION_THREADS 3321 `ADD_CONFIG_NAME ("repmgr"); 3323 #ifde HAVE_RPC 3324 `ADD_CONFIG_NAME ("rpc"); 3326 #ifde HAVE_VERIFY 3327 `ADD_CONFIG_NAME ("verify"); 3329 `T_SObjResu ( , s ); 3330 ( TCL_OK ); 3331 } } 3338 $bdb_Hds ( , objc , objv ) 3339 T_Ip * ; 3340 objc ; 3341 T_Obj * CONST objv []; 3343 DBTCL_INFO * p ; 3344 T_Obj * s , * hd ; 3349 i( objc != 2) { 3350 `T_WrgNumArgs ( , 2, objv , ""); 3351 ( TCL_ERROR ); 3353 s = `T_NewLiObj (0, NULL ); 3355 `LIST_FOREACH ( p , & __db_fohd , s ) { 3356 hd = `NewSgObj ( p -> i_me , ` (p->i_name)); 3357 i( `T_LiObjAdEmt ( , s , hd ! TCL_OK ) 3358 ( TCL_ERROR ); 3360 `T_SObjResu ( , s ); 3361 ( TCL_OK ); 3362 } } 3370 $bdb_MsgTy ( , objc , objv ) 3371 T_Ip * ; 3372 objc ; 3373 T_Obj * CONST objv []; 3375 REP_CONTROL * ; 3376 T_Obj * msgme ; 3377 u_t32_t n , msgty ; 3378 䓽 , t ; 3384 cڡ * msgmes [] = { 3393 "ve1", "ve2", NULL 3399 i( objc != 3) { 3400 `T_WrgNumArgs ( , 3, objv , "msgtype msg"); 3401 ( TCL_ERROR ); 3404 t = `_CyObjBys ( , objv [2], & , & n , & 䓽 ); 3405 i( t ! TCL_OK ) { 3406 `T_SResu ( , 3407 "msgty: bad cڌ mesge", TCL_STATIC ); 3408 ( TCL_ERROR ); 3410 msgty = -> y ; 3411 msgme = `NewSgObj ( msgmes [ msgty ], ` (msgnames[msgtype])); 3412 `T_SObjResu ( , msgme ); 3413 i( ! NULL && 䓽 ) 3414 `__os_ ( NULL , ); 3415 ( TCL_OK ); 3416 } } 3423 $bdb_DbUpgde ( , objc , objv ) 3424 T_Ip * ; 3425 objc ; 3426 T_Obj * CONST objv []; 3428 cڡ * bdbupg [] = { 3429 "-dupst", "-v", "--", NULL 3431 ebdbupg { 3432 TCL_DBUPG_DUPSORT , 3433 TCL_DBUPG_ENV , 3434 TCL_DBUPG_ENDARG 3436 DB_ENV * vp ; 3437 DB * dbp ; 3438 u_t32_t ags ; 3439 dg , i , tdex , su , t ; 3440 * g , * db ; 3442 vp = NULL ; 3443 dbp = NULL ; 3444 su = TCL_OK ; 3445 db = NULL ; 3446 ags = dg = 0; 3448 i( objc < 2) { 3449 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3450 ( TCL_ERROR ); 3453 i = 2; 3454 i < objc ) { 3455 i( `T_GIndexFromObj ( , objv [ i ], bdbupg , 3456 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 3457 g = `T_GSgFromObj ( objv [ i ], NULL ); 3458 i( g [0] == '-') { 3459 su = `IS_HELP ( objv [ i ]); 3460 r ; 3462 `T_RetResu ( ); 3465 i ++; 3466 ( bdbupg ) tdex ) { 3467 TCL_DBUPG_DUPSORT : 3468 ags | DB_DUPSORT ; 3470 TCL_DBUPG_ENV : 3471 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3472 vp = `NAME_TO_ENV ( g ); 3473 i( vp = NULL ) { 3474 `T_SResu ( , 3476 TCL_STATIC ); 3477 ( TCL_ERROR ); 3480 TCL_DBUPG_ENDARG : 3481 dg = 1; 3488 i( su ! TCL_OK ) 3489 r ; 3490 i( dg ) 3493 i( su ! TCL_OK ) 3494 r ; 3498 i( i =( objc - 1)) 3499 db = `T_GSgFromObj ( objv [ i ++], NULL ); 3501 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3502 su = TCL_ERROR ; 3503 r ; 3505 t = `db_ (& dbp , vp , 0); 3506 i( t ) { 3507 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3509 r ; 3520 i( vp = NULL ) { 3521 dbp -> `t_fx (dbp, "DbUpgrade"); 3522 dbp -> `t_r (dbp, _EFunc ); 3524 t = dbp -> `upgde (dbp, db , ags ); 3525 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db upgrade"); 3526 r : 3527 i( dbp ) 3528 () dbp -> `o (dbp, 0); 3529 ( su ); 3530 } } 3539 $t_bt_com ( dbp , db , dbtb ) 3540 DB * dbp ; 3541 cڡ DBT * db , * dbtb ; 3543 ( `t_com_back ( dbp , db , dbtb , 3544 (( DBTCL_INFO *) dbp -> i_ )-> i_com , "bt_compare")); 3545 } } 3548 $t_dup_com ( dbp , db , dbtb ) 3549 DB * dbp ; 3550 cڡ DBT * db , * dbtb ; 3552 ( `t_com_back ( dbp , db , dbtb , 3553 (( DBTCL_INFO *) dbp -> i_ )-> i_dupcom , "dup_compare")); 3554 } } 3564 $t_com_back ( dbp , db , dbtb , ocobj , ame ) 3565 DB * dbp ; 3566 cڡ DBT * db , * dbtb ; 3567 T_Obj * ocobj ; 3568 * ame ; 3570 DBTCL_INFO * ; 3571 T_Ip * ; 3572 T_Obj * a , * b , * sobj , * objv [3]; 3573 su , cmp ; 3575 = ( DBTCL_INFO *) dbp -> i_ ; 3576 = -> i_ ; 3577 objv [0] = ocobj ; 3584 a = `T_NewByAayObj ( db -> da , ()db-> size ); 3585 `T_InRefCou ( a ); 3586 b = `T_NewByAayObj ( dbtb -> da , ()dbtb-> size ); 3587 `T_InRefCou ( b ); 3589 objv [1] = a ; 3590 objv [2] = b ; 3592 su = `T_EvObjv ( , 3, objv , 0); 3593 i( su ! TCL_OK ) { 3609 nic : `__db_rx ( dbp -> dbv , "T %back faed", ame ); 3610 ( `__db_nic ( dbp -> dbv , DB_RUNRECOVERY )); 3613 sobj = `T_GObjResu ( ); 3614 su = `T_GIFromObj ( , sobj , & cmp ); 3615 i( su ! TCL_OK ) 3616 nic ; 3618 `T_DeRefCou ( a ); 3619 `T_DeRefCou ( b ); 3620 ( cmp ); 3621 } } 3629 u_t32_t 3630 $t_h_hash ( dbp , buf , n ) 3631 DB * dbp ; 3632 cڡ * buf ; 3633 u_t32_t n ; 3635 DBTCL_INFO * ; 3636 T_Ip * ; 3637 T_Obj * objv [2]; 3638 su , hv ; 3640 = ( DBTCL_INFO *) dbp -> i_ ; 3641 = -> i_ ; 3642 objv [0] = -> i_hashoc ; 3647 objv [1] = `T_NewByAayObj ((*) buf , () n ); 3648 `T_InRefCou ( objv [1]); 3649 su = `T_EvObjv ( , 2, objv , 0); 3650 i( su ! TCL_OK ) 3651 nic ; 3653 su = `T_GIFromObj ( , `T_GObjResu (), & hv ); 3654 i( su ! TCL_OK ) 3655 nic ; 3657 `T_DeRefCou ( objv [1]); 3658 (( u_t32_t ) hv ); 3660 nic : `__db_rx ( dbp -> dbv , "Tcl h_hash callback failed"); 3662 () `__db_nic ( dbp -> dbv , DB_RUNRECOVERY ); 3664 } } 3674 $t_p_nd ( dbv , cڌ , c , lp , eid , ags ) 3675 DB_ENV * dbv ; 3676 cڡ DBT * cڌ , * c ; 3677 cڡ DB_LSN * lp ; 3678 eid ; 3679 u_t32_t ags ; 3681 #TCLDB_SENDITEMS 7 ) 3682 #TCLDB_MAXREPFLAGS 32 ) 3683 DBTCL_INFO * ; 3684 T_Ip * ; 3685 T_Obj * cڌ_o , * eid_o , * ags_o , * l_o , * igobj , * c_o ; 3686 T_Obj * lobj [2], * myobjv [ TCLDB_MAXREPFLAGS ], * objv [ TCLDB_SENDITEMS ]; 3687 T_Obj * sobj ; 3688 i , myobjc , su , t ; 3690 = ( DBTCL_INFO *) dbv -> p_ive ; 3691 = -> i_ ; 3692 objv [0] = -> i_p_nd ; 3694 cڌ_o = `T_NewByAayObj ( cڌ -> da , ()cڌ-> size ); 3695 `T_InRefCou ( cڌ_o ); 3697 c_o = `T_NewByAayObj ( c -> da , (ec-> size ); 3698 `T_InRefCou ( c_o ); 3700 eid_o = `T_NewIObj ( eid ); 3701 `T_InRefCou ( eid_o ); 3703 myobjv [ myobjc = 0] = NULL ; 3704 i( ags == 0) 3705 myobjv [ myobjc ++] = `NewSgObj ("ne", ` ("none")); 3706 i( `LF_ISSET ( DB_REP_ANYWHERE )) 3707 myobjv [ myobjc ++] = `NewSgObj ("y", ` ("any")); 3708 i( `LF_ISSET ( DB_REP_NOBUFFER )) 3709 myobjv [ myobjc ++] = `NewSgObj ("nobufr", ` ("nobuffer")); 3710 i( `LF_ISSET ( DB_REP_PERMANENT )) 3711 myobjv [ myobjc ++] = `NewSgObj ("rm", ` ("perm")); 3712 i( `LF_ISSET ( DB_REP_REREQUEST )) 3713 myobjv [ myobjc ++] = 3714 `NewSgObj ("que", ` ("rerequest")); 3718 i( myobjc == 0) 3719 myobjv [ myobjc ++] = `NewSgObj ("unknown", ` ("unknown")); 3720 i = 0; i < myobjc ; i++) 3721 `T_InRefCou ( myobjv [ i ]); 3722 ags_o = `T_NewLiObj ( myobjc , myobjv ); 3723 `T_InRefCou ( ags_o ); 3725 lobj [0] = `T_NewLgObj (() lp -> fe ); 3726 `T_InRefCou ( lobj [0]); 3727 lobj [1] = `T_NewLgObj (() lp -> offt ); 3728 `T_InRefCou ( lobj [1]); 3729 l_o = `T_NewLiObj (2, lobj ); 3730 `T_InRefCou ( l_o ); 3732 objv [1] = cڌ_o ; 3733 objv [2] = c_o ; 3734 objv [3] = -> i_p_eid ; 3735 objv [4] = eid_o ; 3736 objv [5] = ags_o ; 3737 objv [6] = l_o ; 3745 igobj = `T_GObjResu ( ); 3746 `T_InRefCou ( igobj ); 3747 su = `T_EvObjv ( , TCLDB_SENDITEMS , objv , 0); 3748 i( su ! TCL_OK ) { 3755 r : `__db_rx ( dbv , "Tclep_send failure: %s", 3756 `T_GSgResu ( )); 3757 ( EINVAL ); 3760 sobj = `T_GObjResu ( ); 3761 su = `T_GIFromObj ( , sobj , & t ); 3762 i( su ! TCL_OK ) 3763 r ; 3765 `T_SObjResu ( , igobj ); 3766 `T_DeRefCou ( igobj ); 3767 `T_DeRefCou ( cڌ_o ); 3768 `T_DeRefCou ( c_o ); 3769 `T_DeRefCou ( eid_o ); 3770 i = 0; i < myobjc ; i++) 3771 `T_DeRefCou ( myobjv [ i ]); 3772 `T_DeRefCou ( ags_o ); 3773 `T_DeRefCou ( lobj [0]); 3774 `T_DeRefCou ( lobj [1]); 3775 `T_DeRefCou ( l_o ); 3777 ( t ); 3778 } } 3781 #ifde CONFIG_TEST 3789 $t_db_mloc ( size ) 3790 size_t size ; 3792 T_Obj * obj ; 3793 * buf ; 3795 obj = `T_NewObj (); 3796 i( obj = NULL ) 3797 ( NULL ); 3798 `T_InRefCou ( obj ); 3800 `T_SObjLgth ( obj , ()( size + ( T_Obj *))); 3801 buf = `T_GSg ( obj ); 3802 `memy ( buf , & obj , (&obj)); 3804 buf = ( T_Obj **)buf + 1; 3805 ( buf ); 3806 } } 3809 $t_db_loc ( r , size ) 3810 * r ; 3811 size_t size ; 3813 T_Obj * obj ; 3815 i( r = NULL ) 3816 ( `t_db_mloc ( size )); 3818 obj = *( T_Obj **)((T_Obj **) r - 1); 3819 `T_SObjLgth ( obj , ()( size + ( T_Obj *))); 3821 r = `T_GSg ( obj ); 3822 `memy ( r , & obj , (&obj)); 3824 r = ( T_Obj **)ptr + 1; 3825 ( r ); 3826 } } 3829 $t_db_ ( r ) 3830 * r ; 3832 T_Obj * obj ; 3834 obj = *( T_Obj **)((T_Obj **) r - 1); 3835 `T_DeRefCou ( obj ); 3836 } } @../tcl/tcl_dbcursor.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 20 t_DbcDup __P (( T_Ip *, , T_Obj * CONST *, DBC *)); 21 t_DbcG __P (( T_Ip *, , T_Obj * CONST *, DBC *, )); 22 t_DbcPut __P (( T_Ip *, , T_Obj * CONST *, DBC *)); 31 $dbc_Cmd ( Da , , objc , objv ) 32 ClDa Da ; 33 T_Ip * ; 34 objc ; 35 T_Obj * CONST objv []; 37 cڡ * dbccmds [] = { 38 #ifde CONFIG_TEST 46 NULL 48 edbccmds { 49 #ifde CONFIG_TEST 50 DBCPGET , 52 DBCCLOSE , 53 DBCDELETE , 54 DBCDUP , 55 DBCGET , 56 DBCPUT 58 DBC * dbc ; 59 DBTCL_INFO * db ; 60 cmddex , su , t ; 62 `T_RetResu ( ); 63 dbc = ( DBC *) Da ; 64 db = `_PToInfo ((*) dbc ); 65 su = TCL_OK ; 67 i( objc <= 1) { 68 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 69 ( TCL_ERROR ); 71 i( dbc = NULL ) { 72 `T_SResu ( , "NULL dbpor", TCL_STATIC ); 73 ( TCL_ERROR ); 75 i( db = NULL ) { 76 `T_SResu ( , "NULL dbfpor", TCL_STATIC ); 77 ( TCL_ERROR ); 84 i( `T_GIndexFromObj ( , objv [1], dbccmds , "command", 85 TCL_EXACT , & cmddex ! TCL_OK ) 86 ( `IS_HELP ( objv [1])); 87 ( dbccmds ) cmddex ) { 88 #ifde CONFIG_TEST 89 DBCPGET : 90 su = `t_DbcG ( , objc , objv , dbc , 1); 93 DBCCLOSE : 97 i( objc > 2) { 98 `T_WrgNumArgs ( , 2, objv , NULL ); 99 ( TCL_ERROR ); 101 `_debug_check (); 102 t = dbc -> `o (dbc); 103 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 105 i( su = TCL_OK ) { 106 () `T_DeCommd ( , db -> i_me ); 107 `_DeInfo ( db ); 110 DBCDELETE : 114 i( objc > 2) { 115 `T_WrgNumArgs ( , 2, objv , NULL ); 116 ( TCL_ERROR ); 118 `_debug_check (); 119 t = dbc -> `d (dbc, 0); 120 su = `_RuSup ( , t , `DB_RETOK_DBCDEL (ret), 123 DBCDUP : 124 su = `t_DbcDup ( , objc , objv , dbc ); 126 DBCGET : 127 su = `t_DbcG ( , objc , objv , dbc , 0); 129 DBCPUT : 130 su = `t_DbcPut ( , objc , objv , dbc ); 133 ( su ); 134 } } 140 $t_DbcPut ( , objc , objv , dbc ) 141 T_Ip * ; 142 objc ; 143 T_Obj * CONST objv []; 144 DBC * dbc ; 146 cڡ * dbcutts [] = { 147 #ifde CONFIG_TEST 156 NULL 158 edbcutts { 159 #ifde CONFIG_TEST 160 DBCPUT_NODUPDATA , 162 DBCPUT_AFTER , 163 DBCPUT_BEFORE , 164 DBCPUT_CURRENT , 165 DBCPUT_KEYFIRST , 166 DBCPUT_KEYLAST , 167 DBCPUT_PART 169 DB * thisdbp ; 170 DBT key , da ; 171 DBTCL_INFO * dbc , * db ; 172 DBTYPE ty ; 173 T_Obj ** emv , * s ; 174 * dtmp , * ktmp ; 175 db_o_t o ; 176 u_t32_t ag ; 177 emc , key , da , i , tdex , su , t ; 179 `COMPQUIET ( dtmp , NULL ); 180 `COMPQUIET ( ktmp , NULL ); 182 su = TCL_OK ; 183 ag = 0; 184 key = da = 0; 186 i( objc < 2) { 187 `T_WrgNumArgs ( , 2, objv , "?-args? ?key?"); 188 ( TCL_ERROR ); 191 `memt (& key , 0, (key)); 192 `memt (& da , 0, (data)); 198 i = 2; 199 i < ( objc - 1)) { 200 i( `T_GIndexFromObj ( , objv [ i ], dbcutts , "option", 201 TCL_EXACT , & tdex ! TCL_OK ) { 206 i( `IS_HELP ( objv [ i ]= TCL_OK ) { 207 su = TCL_OK ; 208 out ; 210 `T_RetResu ( ); 213 i ++; 214 ( dbcutts ) tdex ) { 215 #ifde CONFIG_TEST 216 DBCPUT_NODUPDATA : 217 `FLAG_CHECK ( ag ); 218 ag = DB_NODUPDATA ; 221 DBCPUT_AFTER : 222 `FLAG_CHECK ( ag ); 223 ag = DB_AFTER ; 225 DBCPUT_BEFORE : 226 `FLAG_CHECK ( ag ); 227 ag = DB_BEFORE ; 229 DBCPUT_CURRENT : 230 `FLAG_CHECK ( ag ); 231 ag = DB_CURRENT ; 233 DBCPUT_KEYFIRST : 234 `FLAG_CHECK ( ag ); 235 ag = DB_KEYFIRST ; 237 DBCPUT_KEYLAST : 238 `FLAG_CHECK ( ag ); 239 ag = DB_KEYLAST ; 241 DBCPUT_PART : 242 i( i > ( objc - 2)) { 243 `T_WrgNumArgs ( , 2, objv , 245 su = TCL_ERROR ; 251 su = `T_LiObjGEmts ( , objv [ i ++], 252 & emc , & emv ); 253 i( emc != 2) { 254 `T_SResu ( , 255 "Li mu b{offngth}", TCL_STATIC ); 256 su = TCL_ERROR ; 259 da . ags | DB_DBT_PARTIAL ; 260 su = `_GUI32 ( , emv [0], & da . doff ); 261 i( su ! TCL_OK ) 263 su = `_GUI32 ( , emv [1], & da . dn ); 272 i( su ! TCL_OK ) 275 i( su ! TCL_OK ) 276 out ; 282 dbc = `_PToInfo ( dbc ); 283 i( dbc = NULL ) 284 ty = DB_UNKNOWN ; 286 db = dbc -> i_ ; 287 i( db = NULL ) { 288 `T_SResu ( , "Cursor withoutarent database", 289 TCL_STATIC ); 290 su = TCL_ERROR ; 291 ( su ); 293 thisdbp = db -> i_dbp ; 294 () thisdbp -> `g_ty hisdbp, & ty ); 301 i( ag = DB_AFTER || fg = DB_BEFORE || fg = DB_CURRENT ) { 302 i( i !( objc - 1)) { 303 `T_WrgNumArgs ( , 2, objv , 305 su = TCL_ERROR ; 306 out ; 312 i( ty = DB_RECNO ||y = DB_QUEUE ) { 313 o = 0; 314 key . da = & o ; 315 key . size = ( db_o_t ); 318 i( i !( objc - 2)) { 319 `T_WrgNumArgs ( , 2, objv , 321 su = TCL_ERROR ; 322 out ; 324 i( ty = DB_RECNO ||y = DB_QUEUE ) { 325 su = `_GUI32 ( , objv [ objc -2], & o ); 326 i( su = TCL_OK ) { 327 key . da = & o ; 328 key . size = ( db_o_t ); 330 ( su ); 332 t = `_CyObjBys ( , objv [ objc -2], & ktmp , 333 & key . size , & key ); 334 i( t != 0) { 335 su = `_RuSup ( , t , 336 `DB_RETOK_DBCPUT ( t ), "dbcut"); 337 ( su ); 339 key . da = ktmp ; 342 t = `_CyObjBys ( , objv [ objc -1], & dtmp , 343 & da . size , & da ); 344 da .d dtmp ; 345 i( t != 0) { 346 su = `_RuSup ( , t , 347 `DB_RETOK_DBCPUT ( t ), "dbcut"); 348 out ; 350 `_debug_check (); 351 t = dbc -> `put (dbc, & key , & da , ag ); 352 su = `_RuSup ( , t , `DB_RETOK_DBCPUT (ret), 354 i( t == 0 && 355 ( ag = DB_AFTER || fg = DB_BEFORE && ty = DB_RECNO ) { 356 s = `T_NewWideIObj (( T_WideI )*( db_o_t *) key . da ); 357 `T_SObjResu ( , s ); 359 out : 360 i( da ) 361 `__os_ ( NULL , dtmp ); 362 i( key ) 363 `__os_ ( NULL , ktmp ); 364 ( su ); 365 } } 371 $t_DbcG ( , objc , objv , dbc , ig ) 372 T_Ip * ; 373 objc ; 374 T_Obj * CONST objv []; 375 DBC * dbc ; 376 ig ; 378 cڡ * dbcgts [] = { 379 #ifde CONFIG_TEST 406 NULL 408 edbcgts { 409 #ifde CONFIG_TEST 410 DBCGET_DATA_BUF_SIZE , 411 DBCGET_BOTH_RANGE , 412 DBCGET_KEY_BUF_SIZE , 413 DBCGET_MULTI , 414 DBCGET_MULTI_KEY , 415 DBCGET_NOLEASE , 416 DBCGET_READ_COMMITTED , 417 DBCGET_READ_UNCOMMITTED , 419 DBCGET_CURRENT , 420 DBCGET_FIRST , 421 DBCGET_BOTH , 422 DBCGET_RECNO , 423 DBCGET_JOIN , 424 DBCGET_LAST , 425 DBCGET_NEXT , 426 DBCGET_NEXTDUP , 427 DBCGET_NEXTNODUP , 428 DBCGET_PART , 429 DBCGET_PREV , 430 DBCGET_PREVDUP , 431 DBCGET_PREVNODUP , 432 DBCGET_RMW , 433 DBCGET_SET , 434 DBCGET_SETRANGE , 435 DBCGET_SETRECNO 437 DB * thisdbp ; 438 DBT key , da , pda ; 439 DBTCL_INFO * dbc , * db ; 440 DBTYPE y , ty ; 441 T_Obj ** emv , * myobj , * i ; 442 * dtmp , * ktmp ; 443 db_o_t eo , o ; 444 u_t32_t ag , ; 445 emc , key , da , i , tdex , su , t ; 446 #ifde CONFIG_TEST 447 da_buf_size , key_buf_size ; 449 da_buf_size = key_buf_size = 0; 451 `COMPQUIET ( dtmp , NULL ); 452 `COMPQUIET ( ktmp , NULL ); 454 su = TCL_OK ; 455 ag = 0; 456 key = da = 0; 457 `memt (& key , 0, (key)); 458 `memt (& da , 0, (data)); 459 `memt (& pda , 0, ( DBT )); 461 i( objc < 2) { 462 `T_WrgNumArgs ( , 2, objv , "?-args? ?key?"); 463 ( TCL_ERROR ); 470 i = 2; 471 i < objc ) { 472 i( `T_GIndexFromObj ( , objv [ i ], dbcgts , 473 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 478 i( `IS_HELP ( objv [ i ]= TCL_OK ) { 479 su = TCL_OK ; 480 out ; 482 `T_RetResu ( ); 485 i ++; 487 #FLAG_CHECK2_STDARG \ 488 ( DB_RMW | DB_MULTIPLE | DB_MULTIPLE_KEY | DB_IGNORE_LEASE | \ 489 DB_READ_UNCOMMITTED ) ) 491 ( dbcgts ) tdex ) { 492 #ifde CONFIG_TEST 493 DBCGET_DATA_BUF_SIZE : 494 su = 495 `T_GIFromObj ( , objv [ i ], & da_buf_size ); 496 i( su ! TCL_OK ) 497 out ; 498 i ++; 500 DBCGET_BOTH_RANGE : 501 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 502 ag | DB_GET_BOTH_RANGE ; 504 DBCGET_KEY_BUF_SIZE : 505 su = 506 `T_GIFromObj ( , objv [ i ], & key_buf_size ); 507 i( su ! TCL_OK ) 508 out ; 509 i ++; 511 DBCGET_MULTI : 512 ag | DB_MULTIPLE ; 513 su = 514 `T_GIFromObj ( , objv [ i ], & da_buf_size ); 515 i( su ! TCL_OK ) 516 out ; 517 i ++; 519 DBCGET_MULTI_KEY : 520 ag | DB_MULTIPLE_KEY ; 521 su = 522 `T_GIFromObj ( , objv [ i ], & da_buf_size ); 523 i( su ! TCL_OK ) 524 out ; 525 i ++; 527 DBCGET_NOLEASE : 528 ag | DB_IGNORE_LEASE ; 530 DBCGET_READ_COMMITTED : 531 ag | DB_READ_COMMITTED ; 533 DBCGET_READ_UNCOMMITTED : 534 ag | DB_READ_UNCOMMITTED ; 537 DBCGET_RMW : 538 ag | DB_RMW ; 540 DBCGET_CURRENT : 541 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 542 ag | DB_CURRENT ; 544 DBCGET_FIRST : 545 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 546 ag | DB_FIRST ; 548 DBCGET_LAST : 549 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 550 ag | DB_LAST ; 552 DBCGET_NEXT : 553 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 554 ag | DB_NEXT ; 556 DBCGET_PREV : 557 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 558 ag | DB_PREV ; 560 DBCGET_PREVDUP : 561 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 562 ag | DB_PREV_DUP ; 564 DBCGET_PREVNODUP : 565 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 566 ag | DB_PREV_NODUP ; 568 DBCGET_NEXTNODUP : 569 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 570 ag | DB_NEXT_NODUP ; 572 DBCGET_NEXTDUP : 573 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 574 ag | DB_NEXT_DUP ; 576 DBCGET_BOTH : 577 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 578 ag | DB_GET_BOTH ; 580 DBCGET_RECNO : 581 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 582 ag | DB_GET_RECNO ; 584 DBCGET_JOIN : 585 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 586 ag | DB_JOIN_ITEM ; 588 DBCGET_SET : 589 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 590 ag | DB_SET ; 592 DBCGET_SETRANGE : 593 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 594 ag | DB_SET_RANGE ; 596 DBCGET_SETRECNO : 597 `FLAG_CHECK2 ( ag , FLAG_CHECK2_STDARG ); 598 ag | DB_SET_RECNO ; 600 DBCGET_PART : 601 i( i = objc ) { 602 `T_WrgNumArgs ( , 2, objv , 604 su = TCL_ERROR ; 610 su = `T_LiObjGEmts ( , objv [ i ++], 611 & emc , & emv ); 612 i( emc != 2) { 613 `T_SResu ( , 614 "Li mu b{offngth}", TCL_STATIC ); 615 su = TCL_ERROR ; 618 da . ags | DB_DBT_PARTIAL ; 619 su = `_GUI32 ( , emv [0], & da . doff ); 620 i( su ! TCL_OK ) 622 su = `_GUI32 ( , emv [1], & da . dn ); 632 i( su ! TCL_OK ) 635 i( su ! TCL_OK ) 636 out ; 643 dbc = `_PToInfo ( dbc ); 644 i( dbc = NULL ) { 645 ty = DB_UNKNOWN ; 646 y = DB_UNKNOWN ; 648 db = dbc -> i_ ; 649 i( db = NULL ) { 650 `T_SResu ( , "Cursor withoutarent database", 651 TCL_STATIC ); 652 su = TCL_ERROR ; 653 out ; 655 thisdbp = db -> i_dbp ; 656 () thisdbp -> `g_ty hisdbp, & ty ); 657 i( ig && thisdbp -> s_imy ! NULL ) 658 () thisdbp -> 659 s_imy -> `g_ty ( thisdbp ->s_imy, & y ); 661 y = DB_UNKNOWN ; 669 = ag & DB_OPFLAGS_MASK ; 670 ) { 671 DB_GET_BOTH : 672 #ifde CONFIG_TEST 673 DB_GET_BOTH_RANGE : 675 i( i !( objc - 2)) { 676 `T_WrgNumArgs ( , 2, objv , 678 su = TCL_ERROR ; 679 out ; 681 i( ty = DB_RECNO ||y = DB_QUEUE ) { 682 su = `_GUI32 ( 683 , objv [ objc -2], & o ); 684 i( su = TCL_OK ) { 685 key . da = & o ; 686 key . size = ( db_o_t ); 688 out ; 695 t = `_CyObjBys ( , objv [ objc -2], 696 & ktmp , & key . size , & key ); 697 i( t != 0) { 698 su = `_RuSup ( , t , 699 `DB_RETOK_DBCGET ( t ), "dbc get"); 700 ( su ); 702 key . da = ktmp ; 704 i( y = DB_RECNO ||ty = DB_QUEUE ) { 705 su = `_GUI32 ( 706 , objv [ objc -1], & eo ); 707 i( su = TCL_OK ) { 708 da .d& eo ; 709 da . size = ( db_o_t ); 711 out ; 713 t = `_CyObjBys ( , objv [ objc -1], 714 & dtmp , & da . size , & da ); 715 i( t != 0) { 716 su = `_RuSup ( , t , 717 `DB_RETOK_DBCGET ( t ), "dbc get"); 718 out ; 720 da .d dtmp ; 724 DB_SET : 725 DB_SET_RANGE : 726 DB_SET_RECNO : 727 i( i !( objc - 1)) { 728 `T_WrgNumArgs ( , 2, objv , "?-args? key"); 729 su = TCL_ERROR ; 730 out ; 732 #ifde CONFIG_TEST 733 i( da_buf_size != 0) { 734 () `__os_mloc ( 735 NULL , ( size_t ) da_buf_size , & da .data); 736 da . un = ( u_t32_t ) da_buf_size ; 737 da . ags | DB_DBT_USERMEM ; 740 da . ags | DB_DBT_MALLOC ; 741 i( = DB_SET_RECNO || 742 ty = DB_RECNO ||y = DB_QUEUE ) { 743 su = `_GUI32 ( , objv [ objc - 1], & o ); 744 key . da = & o ; 745 key . size = ( db_o_t ); 752 t = `_CyObjBys ( , objv [ objc -1], 753 & ktmp , & key . size , & key ); 754 i( t != 0) { 755 su = `_RuSup ( , t , 756 `DB_RETOK_DBCGET ( t ), "dbc get"); 757 ( su ); 759 key . da = ktmp ; 763 i( i ! objc ) { 764 `T_WrgNumArgs ( , 2, objv , "?-args?"); 765 su = TCL_ERROR ; 766 out ; 768 #ifde CONFIG_TEST 769 i( key_buf_size != 0) { 770 () `__os_mloc ( 771 NULL , ( size_t ) key_buf_size , & key . da ); 772 key . un = ( u_t32_t ) key_buf_size ; 773 key . ags | DB_DBT_USERMEM ; 776 key . ags | DB_DBT_MALLOC ; 777 #ifde CONFIG_TEST 778 i( da_buf_size != 0) { 779 () `__os_mloc ( 780 NULL , ( size_t ) da_buf_size , & da .data); 781 da . un = ( u_t32_t ) da_buf_size ; 782 da . ags | DB_DBT_USERMEM ; 785 da . ags | DB_DBT_MALLOC ; 788 `_debug_check (); 789 i( ig ) { 790 `F_SET (& pda , DB_DBT_MALLOC ); 791 t = dbc -> `pg (dbc, & key , & da , & pda , ag ); 793 t = dbc -> `g (dbc, & key , & da , ag ); 794 su = `_RuSup ( , t , `DB_RETOK_DBCGET (ret), "dbc get"); 795 i( su = TCL_ERROR ) 796 out ; 798 i = `T_NewLiObj (0, NULL ); 799 i( t != 0) 800 out1 ; 801 i( = DB_GET_RECNO ) { 802 o = *(( db_o_t *) da .data); 803 myobj = `T_NewWideIObj (( T_WideI ) o ); 804 su = `T_LiObjAdEmt ( , i , myobj ); 806 i( ag & ( DB_MULTIPLE | DB_MULTIPLE_KEY )) 807 su = `_SMuiLi ( , 808 i , & key , & da , ty , ag ); 809 i(( ty = DB_RECNO ||y = DB_QUEUE ) && 810 key . da ! NULL ) { 811 i( ig ) 812 su = `_S3DBTLi ( , i , & key , 1, 813 & da , 814 ( y = DB_RECNO ||ty = DB_QUEUE ), 815 & pda ); 817 su = `_SLiReoEm ( , i , 818 *( db_o_t *) key . da , 819 da .da, da. size ); 821 i( ig ) 822 su = `_S3DBTLi ( , i , & key , 0, 823 & da , 824 ( y = DB_RECNO ||ty = DB_QUEUE ), 825 & pda ); 827 su = `_SLiEm ( , i , 828 key . da , key. size , data.data, data.size); 831 out1 : 832 i( su = TCL_OK ) 833 `T_SObjResu ( , i ); 840 out : 841 i( key . da ! NULL && `F_ISSET (&key, DB_DBT_MALLOC )) 842 `__os_u ( dbc -> dbp -> dbv , key . da ); 843 i( key . da ! NULL && `F_ISSET (&key, DB_DBT_USERMEM )) 844 `__os_ ( dbc -> dbp -> dbv , key . da ); 845 i( da .d! NULL && `F_ISSET (&da, DB_DBT_MALLOC )) 846 `__os_u ( dbc -> dbp -> dbv , da .data); 847 i( da .d! NULL && `F_ISSET (&da, DB_DBT_USERMEM )) 848 `__os_ ( dbc -> dbp -> dbv , da .data); 849 i( pda . da ! NULL && `F_ISSET (&pda, DB_DBT_MALLOC )) 850 `__os_u ( dbc -> dbp -> dbv , pda . da ); 851 i( da ) 852 `__os_ ( NULL , dtmp ); 853 i( key ) 854 `__os_ ( NULL , ktmp ); 855 ( su ); 857 } } 863 $t_DbcDup ( , objc , objv , dbc ) 864 T_Ip * ; 865 objc ; 866 T_Obj * CONST objv []; 867 DBC * dbc ; 869 cڡ * dbcdupts [] = { 871 NULL 873 edbcdupts { 874 DBCDUP_POS 876 DBC * wdbc ; 877 DBTCL_INFO * dbc , * wdbc , * db ; 878 T_Obj * s ; 879 u_t32_t ag ; 880 i , tdex , su , t ; 881 wme [ MSG_SIZE ]; 883 su = TCL_OK ; 884 ag = 0; 885 s = NULL ; 887 i( objc < 2) { 888 `T_WrgNumArgs ( , 2, objv , "?-args?"); 889 ( TCL_ERROR ); 896 i = 2; 897 i < objc ) { 898 i( `T_GIndexFromObj ( , objv [ i ], dbcdupts , 899 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 904 i( `IS_HELP ( objv [ i ]= TCL_OK ) { 905 su = TCL_OK ; 906 out ; 908 `T_RetResu ( ); 911 i ++; 912 ( dbcdupts ) tdex ) { 913 DBCDUP_POS : 914 ag = DB_POSITION ; 917 i( su ! TCL_OK ) 920 i( su ! TCL_OK ) 921 out ; 928 dbc = `_PToInfo ( dbc ); 929 i( dbc = NULL ) { 930 `T_SResu ( , "Cursor without info structure", 931 TCL_STATIC ); 932 su = TCL_ERROR ; 933 out ; 935 db = dbc -> i_ ; 936 i( db = NULL ) { 937 `T_SResu ( , "Cursor withoutarent database", 938 TCL_STATIC ); 939 su = TCL_ERROR ; 940 out ; 947 `tf ( wme , (newname), 948 "%s.c%d", db -> i_me , db-> i_dbdbcid ); 949 wdbc = `_NewInfo ( , NULL , wme , I_DBC ); 950 i( wdbc ! NULL ) { 951 t = dbc -> `dup (dbc, & wdbc , ag ); 952 i( t == 0) { 953 db -> i_dbdbcid ++; 954 wdbc -> i_ = db ; 955 () `T_CeObjCommd ( , wme , 956 ( T_ObjCmdProc *) dbc_Cmd , 957 ( ClDa ) wdbc , NULL ); 958 s = `NewSgObj ( wme , ` (newname)); 959 `_SInfoDa ( wdbc , wdbc ); 960 `T_SObjResu ( , s ); 962 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 964 `_DeInfo ( wdbc ); 967 `T_SResu ( , "Could s ufo", TCL_STATIC ); 968 su = TCL_ERROR ; 970 out : 971 ( su ); 973 } } @../tcl/tcl_env.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/lock.h " 16 ~"dbc/txn.h " 17 ~"dbc/t_db.h " 22 _EnvInfoDe __P (( T_Ip *, DBTCL_INFO *)); 23 v_DbRemove __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 24 v_DbRame __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 25 v_GFgs __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 26 v_GOnFg 27 __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 28 v_GLockDe 29 __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 30 v_GTimeout __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 31 v_GVbo __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 40 $v_Cmd ( Da , , objc , objv ) 41 ClDa Da ; 42 T_Ip * ; 43 objc ; 44 T_Obj * CONST objv []; 46 cڡ * vcmds [] = { 47 #ifde CONFIG_TEST 133 NULL 135 evcmds { 136 #ifde CONFIG_TEST 137 ENVATTR , 138 ENVERRFILE , 139 ENVERRPFX , 140 ENVEVENT , 141 ENVIDRESET , 142 ENVLKDETECT , 143 ENVLKID , 144 ENVLKFREEID , 145 ENVLKSETID , 146 ENVLKGET , 147 ENVLKSTAT , 148 ENVLKTIMEOUT , 149 ENVLKVEC , 150 ENVLOGARCH , 151 ENVLOGCMP , 152 ENVLOGCURSOR , 153 ENVLOGFILE , 154 ENVLOGFLUSH , 155 ENVLOGGET , 156 ENVLOGPUT , 157 ENVLOGSTAT , 158 ENVLSNRESET , 159 ENVMP , 160 ENVMPSTAT , 161 ENVMPSYNC , 162 ENVTRICKLE , 163 ENVREPCONFIG , 164 ENVREPELECT , 165 ENVREPFLUSH , 166 ENVREPGETCONFIG , 167 ENVREPLEASE , 168 ENVREPLIMIT , 169 ENVREPPROCMESS , 170 ENVREPREQUEST , 171 ENVREPSTART , 172 ENVREPSTAT , 173 ENVREPSYNC , 174 ENVREPTRANSPORT , 175 ENVREPMGR , 176 ENVREPMGRSTAT , 177 ENVRPCID , 178 ENVSETFLAGS , 179 ENVTEST , 180 ENVTXNSETID , 181 ENVTXNRECOVER , 182 ENVTXNSTAT , 183 ENVTXNTIMEOUT , 184 ENVVERB , 186 ENVCDSGROUP , 187 ENVCLOSE , 188 ENVDBREMOVE , 189 ENVDBRENAME , 190 ENVGETCACHESIZE , 191 ENVGETCACHEMAX , 192 ENVGETDATADIRS , 193 ENVGETENCRYPTFLAGS , 194 ENVGETERRPFX , 195 ENVGETFLAGS , 196 ENVGETHOME , 197 ENVGETLGBSIZE , 198 ENVGETLGDIR , 199 ENVGETLGFILEMODE , 200 ENVGETLGMAX , 201 ENVGETLGREGIONMAX , 202 ENVGETLKDETECT , 203 ENVGETLKMAXLOCKERS , 204 ENVGETLKMAXLOCKS , 205 ENVGETLKMAXOBJECTS , 206 ENVGETMPMAXOPENFD , 207 ENVGETMPMAXWRITE , 208 ENVGETMPMMAPSIZE , 209 ENVGETOPENFLAG , 210 ENVGETREPLIMIT , 211 ENVGETSHMKEY , 212 ENVGETTASSPINS , 213 ENVGETTIMEOUT , 214 ENVGETTMPDIR , 215 ENVGETTXMAX , 216 ENVGETTXTIMESTAMP , 217 ENVGETVERBOSE , 218 ENVRESIZECACHE , 219 ENVSETDATADIR , 220 ENVTXN , 221 ENVTXNCKP 223 DBTCL_INFO * v ; 224 DB_ENV * dbv ; 225 T_Obj ** liobjv , * myobjv [3], * s ; 226 db_timeout_t timeout ; 227 size_t size ; 228 time_t timev ; 229 u_t32_t bys , gbys , vue ; 230 shm_key ; 231 cmddex , i , tvue , liobjc , nche , su , t ; 232 cڡ * rv , ** ds ; 233 * rg , wme [ MSG_SIZE ]; 234 #ifde CONFIG_TEST 235 DBTCL_INFO * logc ; 236 DB_LOGC * logc ; 237 u_t32_t lockid ; 238 wv , hv ; 241 `T_RetResu ( ); 242 dbv = ( DB_ENV *) Da ; 243 v = `_PToInfo ((*) dbv ); 244 su = TCL_OK ; 245 `memt ( wme , 0, MSG_SIZE ); 247 i( objc <= 1) { 248 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 249 ( TCL_ERROR ); 251 i( dbv = NULL ) { 252 `T_SResu ( , "NULLnvor", TCL_STATIC ); 253 ( TCL_ERROR ); 255 i( v = NULL ) { 256 `T_SResu ( , "NULLnv infpor", TCL_STATIC ); 257 ( TCL_ERROR ); 264 i( `T_GIndexFromObj ( , objv [1], vcmds , "command", 265 TCL_EXACT , & cmddex ! TCL_OK ) 266 ( `IS_HELP ( objv [1])); 267 s = NULL ; 268 ( vcmds ) cmddex ) { 269 #ifde CONFIG_TEST 270 ENVEVENT : 274 i( objc != 3) { 275 `T_WrgNumArgs ( , 2, objv , NULL ); 276 ( TCL_ERROR ); 278 su = `t_EvtNify ( , dbv , objv [2], v ); 280 ENVIDRESET : 281 su = `t_EnvIdRet ( , objc , objv , dbv ); 283 ENVLSNRESET : 284 su = `t_EnvLRet ( , objc , objv , dbv ); 286 ENVLKDETECT : 287 su = `t_LockDe ( , objc , objv , dbv ); 289 ENVLKSTAT : 290 su = `t_LockSt ( , objc , objv , dbv ); 292 ENVLKTIMEOUT : 293 su = `t_LockTimeout ( , objc , objv , dbv ); 295 ENVLKID : 299 i( objc > 2) { 300 `T_WrgNumArgs ( , 2, objv , NULL ); 301 ( TCL_ERROR ); 303 `_debug_check (); 304 t = dbv -> `lock_id (dbv, & lockid ); 305 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 307 i( su = TCL_OK ) 308 s = `T_NewWideIObj (( T_WideI ) lockid ); 310 ENVLKFREEID : 311 i( objc != 3) { 312 `T_WrgNumArgs ( , 3, objv , NULL ); 313 ( TCL_ERROR ); 315 su = `T_GLgFromObj ( , objv [2], & wv ); 316 i( su ! TCL_OK ) 317 ( su ); 318 t = dbv -> `lock_id_ (dbv, ( u_t32_t ) wv ); 319 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 322 ENVLKSETID : 323 i( objc != 4) { 324 `T_WrgNumArgs ( , 4, objv , "current max"); 325 ( TCL_ERROR ); 327 su = `T_GLgFromObj ( , objv [2], & wv ); 328 i( su ! TCL_OK ) 329 ( su ); 330 su = `T_GLgFromObj ( , objv [3], & hv ); 331 i( su ! TCL_OK ) 332 ( su ); 333 t = `__lock_id_t ( dbv , 334 ( u_t32_t ) wv , (u_t32_t) hv ); 335 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 338 ENVLKGET : 339 su = `t_LockG ( , objc , objv , dbv ); 341 ENVLKVEC : 342 su = `t_LockVec ( , objc , objv , dbv ); 344 ENVLOGARCH : 345 su = `t_LogArchive ( , objc , objv , dbv ); 347 ENVLOGCMP : 348 su = `t_LogCom ( , objc , objv ); 350 ENVLOGCURSOR : 351 `tf ( wme , (newname), 352 "%s.logc%d", v -> i_me ,nv-> i_vlogcid ); 353 logc = `_NewInfo ( , NULL , wme , I_LOGC ); 354 i( logc ! NULL ) { 355 t = dbv -> `log_curs (dbv, & logc , 0); 356 i( t == 0) { 357 su = TCL_OK ; 358 v -> i_vlogcid ++; 365 () `T_CeObjCommd ( , wme , 366 ( T_ObjCmdProc *) logc_Cmd , 367 ( ClDa ) logc , NULL ); 368 s = `NewSgObj ( wme , ` (newname)); 369 `_SInfoDa ( logc , logc ); 371 `_DeInfo ( logc ); 372 su = `_ESup ( , t , "log cursor"); 375 `T_SResu ( , 376 "Could s ufo", TCL_STATIC ); 377 su = TCL_ERROR ; 380 ENVLOGFILE : 381 su = `t_LogFe ( , objc , objv , dbv ); 383 ENVLOGFLUSH : 384 su = `t_LogFlush ( , objc , objv , dbv ); 386 ENVLOGGET : 387 su = `t_LogG ( , objc , objv , dbv ); 389 ENVLOGPUT : 390 su = `t_LogPut ( , objc , objv , dbv ); 392 ENVLOGSTAT : 393 su = `t_LogSt ( , objc , objv , dbv ); 395 ENVMPSTAT : 396 su = `t_MpSt ( , objc , objv , dbv ); 398 ENVMPSYNC : 399 su = `t_MpSync ( , objc , objv , dbv ); 401 ENVTRICKLE : 402 su = `t_MpTrick ( , objc , objv , dbv ); 404 ENVMP : 405 su = `t_Mp ( , objc , objv , dbv , v ); 407 ENVREPCONFIG : 411 i( objc != 3) { 412 `T_WrgNumArgs ( , 2, objv , NULL ); 413 ( TCL_ERROR ); 415 su = `t_RCfig ( , dbv , objv [2]); 417 ENVREPELECT : 418 su = `t_RE ( , objc , objv , dbv ); 420 ENVREPFLUSH : 421 su = `t_RFlush ( , objc , objv , dbv ); 423 ENVREPGETCONFIG : 427 i( objc != 3) { 428 `T_WrgNumArgs ( , 2, objv , NULL ); 429 ( TCL_ERROR ); 431 su = `t_RGCfig ( , dbv , objv [2]); 433 ENVREPLEASE : 434 i( objc != 3) { 435 `T_WrgNumArgs ( , 2, objv , NULL ); 436 ( TCL_ERROR ); 438 su = `T_LiObjGEmts ( , objv [2], 439 & liobjc , & liobjv ); 440 i( su = TCL_OK ) 441 su = `t_RL ( , 442 liobjc , liobjv , dbv ); 444 ENVREPLIMIT : 445 su = `t_RLim ( , objc , objv , dbv ); 447 ENVREPPROCMESS : 448 su = `t_RProssMesge ( , objc , objv , dbv ); 450 ENVREPREQUEST : 451 su = `t_RReque ( , objc , objv , dbv ); 453 ENVREPSTART : 454 su = `t_RS ( , objc , objv , dbv ); 456 ENVREPSTAT : 457 su = `t_RSt ( , objc , objv , dbv ); 459 ENVREPSYNC : 460 su = `t_RSync ( , objc , objv , dbv ); 462 ENVREPTRANSPORT : 463 i( objc != 3) { 464 `T_WrgNumArgs ( , 2, objv , NULL ); 465 ( TCL_ERROR ); 467 su = `T_LiObjGEmts ( , objv [2], 468 & liobjc , & liobjv ); 469 i( su = TCL_OK ) 470 su = `t_RTnt ( , 471 liobjc , liobjv , dbv , v ); 473 ENVREPMGR : 474 su = `t_RMgr ( , objc , objv , dbv ); 476 ENVREPMGRSTAT : 477 su = `t_RMgrSt ( , objc , objv , dbv ); 479 ENVRPCID : 483 i( objc > 2) { 484 `T_WrgNumArgs ( , 2, objv , NULL ); 485 ( TCL_ERROR ); 491 s = `T_NewLgObj (() dbv -> _id ); 493 ENVTXNSETID : 494 i( objc != 4) { 495 `T_WrgNumArgs ( , 4, objv , "current max"); 496 ( TCL_ERROR ); 498 su = `T_GLgFromObj ( , objv [2], & wv ); 499 i( su ! TCL_OK ) 500 ( su ); 501 su = `T_GLgFromObj ( , objv [3], & hv ); 502 i( su ! TCL_OK ) 503 ( su ); 504 t = `__txn_id_t ( dbv , 505 ( u_t32_t ) wv , (u_t32_t) hv ); 506 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 509 ENVTXNRECOVER : 510 su = `t_TxnRecov ( , objc , objv , dbv , v ); 512 ENVTXNSTAT : 513 su = `t_TxnSt ( , objc , objv , dbv ); 515 ENVTXNTIMEOUT : 516 su = `t_TxnTimeout ( , objc , objv , dbv ); 518 ENVATTR : 519 su = `t_EnvAr ( , objc , objv , dbv ); 521 ENVERRFILE : 525 i( objc != 3) { 526 `T_WrgNumArgs ( , 2, objv , "errfile"); 527 ( TCL_ERROR ); 529 rg = `T_GSgFromObj ( objv [2], NULL ); 530 `t_EnvSEfe ( , dbv , v , rg ); 531 su = TCL_OK ; 533 ENVERRPFX : 537 i( objc != 3) { 538 `T_WrgNumArgs ( , 2, objv , "pfx"); 539 ( TCL_ERROR ); 541 rg = `T_GSgFromObj ( objv [2], NULL ); 542 su = `t_EnvSEpfx ( , dbv , v , rg ); 544 ENVSETFLAGS : 548 i( objc != 4) { 549 `T_WrgNumArgs ( , 2, objv , "which on|off"); 550 ( TCL_ERROR ); 552 su = `t_EnvSFgs ( , dbv , objv [2], objv[3]); 554 ENVTEST : 555 su = `t_EnvTe ( , objc , objv , dbv ); 557 ENVVERB : 561 i( objc != 4) { 562 `T_WrgNumArgs ( , 2, objv , NULL ); 563 ( TCL_ERROR ); 565 su = `t_EnvVbo ( , dbv , objv [2], objv[3]); 568 ENVCDSGROUP : 569 su = `t_CDSGroup ( , objc , objv , dbv , v ); 571 ENVCLOSE : 575 i( objc > 2) { 576 `T_WrgNumArgs ( , 2, objv , NULL ); 577 ( TCL_ERROR ); 587 `_debug_check (); 588 t = dbv -> `o (dbenv, 0); 589 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 591 `_EnvInfoDe ( , v ); 592 v = NULL ; 594 ENVDBREMOVE : 595 su = `v_DbRemove ( , objc , objv , dbv ); 597 ENVDBRENAME : 598 su = `v_DbRame ( , objc , objv , dbv ); 600 ENVGETCACHESIZE : 601 i( objc != 2) { 602 `T_WrgNumArgs ( , 1, objv , NULL ); 603 ( TCL_ERROR ); 605 t = dbv -> `g_chesize (dbv, & gbys , & bys , & nche ); 606 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 607 "v g_chesize")= TCL_OK ) { 608 myobjv [0] = `T_NewLgObj (() gbys ); 609 myobjv [1] = `T_NewLgObj (() bys ); 610 myobjv [2] = `T_NewLgObj (() nche ); 611 s = `T_NewLiObj (3, myobjv ); 614 ENVGETCACHEMAX : 615 i( objc != 2) { 616 `T_WrgNumArgs ( , 1, objv , NULL ); 617 ( TCL_ERROR ); 619 t = dbv -> `g_che_max (dbv, & gbys , & bys ); 620 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 621 "v g_che_max")= TCL_OK ) { 622 myobjv [0] = `T_NewLgObj (() gbys ); 623 myobjv [1] = `T_NewLgObj (() bys ); 624 s = `T_NewLiObj (2, myobjv ); 627 ENVGETDATADIRS : 628 i( objc != 2) { 629 `T_WrgNumArgs ( , 1, objv , NULL ); 630 ( TCL_ERROR ); 632 t = dbv -> `g_da_ds (dbv, & ds ); 633 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 634 "v g_da_ds")= TCL_OK ) { 635 s = `T_NewLiObj (0, NULL ); 636 i = 0; su = TCL_OK && ds [i] ! NULL ; i++) 637 su = `T_LiObjAdEmt ( , s , 638 `NewSgObj ( ds [ i ], ` (dirs[i]))); 641 ENVGETENCRYPTFLAGS : 642 su = `t_EnvGEnyFgs ( , objc , objv , dbv ); 644 ENVGETERRPFX : 645 i( objc != 2) { 646 `T_WrgNumArgs ( , 1, objv , NULL ); 647 ( TCL_ERROR ); 649 dbv -> `g_fx (dbv, & rv ); 650 s = `NewSgObj ( rv , ` (strval)); 652 ENVGETFLAGS : 653 su = `v_GFgs ( , objc , objv , dbv ); 655 ENVGETHOME : 656 i( objc != 2) { 657 `T_WrgNumArgs ( , 1, objv , NULL ); 658 ( TCL_ERROR ); 660 t = dbv -> `g_home (dbv, & rv ); 661 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 662 "v g_home")= TCL_OK ) 663 s = `NewSgObj ( rv , ` (strval)); 665 ENVGETLGBSIZE : 666 i( objc != 2) { 667 `T_WrgNumArgs ( , 1, objv , NULL ); 668 ( TCL_ERROR ); 670 t = dbv -> `g_lg_bsize (dbv, & vue ); 671 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 672 "v g_lg_bsize")= TCL_OK ) 673 s = `T_NewLgObj (() vue ); 675 ENVGETLGDIR : 676 i( objc != 2) { 677 `T_WrgNumArgs ( , 1, objv , NULL ); 678 ( TCL_ERROR ); 680 t = dbv -> `g_lg_d (dbv, & rv ); 681 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 682 "v g_lg_d")= TCL_OK ) 683 s = `NewSgObj ( rv , ` (strval)); 685 ENVGETLGFILEMODE : 686 i( objc != 2) { 687 `T_WrgNumArgs ( , 1, objv , NULL ); 688 ( TCL_ERROR ); 690 t = dbv -> `g_lg_femode (dbv, & tvue ); 691 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 692 "v g_lg_femode")= TCL_OK ) 693 s = `T_NewLgObj (() tvue ); 695 ENVGETLGMAX : 696 i( objc != 2) { 697 `T_WrgNumArgs ( , 1, objv , NULL ); 698 ( TCL_ERROR ); 700 t = dbv -> `g_lg_max (dbv, & vue ); 701 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 702 "v g_lg_max")= TCL_OK ) 703 s = `T_NewLgObj (() vue ); 705 ENVGETLGREGIONMAX : 706 i( objc != 2) { 707 `T_WrgNumArgs ( , 1, objv , NULL ); 708 ( TCL_ERROR ); 710 t = dbv -> `g_lg_gimax (dbv, & vue ); 711 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 712 "v g_lg_gimax")= TCL_OK ) 713 s = `T_NewLgObj (() vue ); 715 ENVGETLKDETECT : 716 su = `v_GLockDe ( , objc , objv , dbv ); 718 ENVGETLKMAXLOCKERS : 719 i( objc != 2) { 720 `T_WrgNumArgs ( , 1, objv , NULL ); 721 ( TCL_ERROR ); 723 t = dbv -> `g_lk_max_locks (dbv, & vue ); 724 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 725 "v g_lk_max_locks")= TCL_OK ) 726 s = `T_NewLgObj (() vue ); 728 ENVGETLKMAXLOCKS : 729 i( objc != 2) { 730 `T_WrgNumArgs ( , 1, objv , NULL ); 731 ( TCL_ERROR ); 733 t = dbv -> `g_lk_max_locks (dbv, & vue ); 734 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 735 "v g_lk_max_locks")= TCL_OK ) 736 s = `T_NewLgObj (() vue ); 738 ENVGETLKMAXOBJECTS : 739 i( objc != 2) { 740 `T_WrgNumArgs ( , 1, objv , NULL ); 741 ( TCL_ERROR ); 743 t = dbv -> `g_lk_max_objes (dbv, & vue ); 744 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 745 "v g_lk_max_objes")= TCL_OK ) 746 s = `T_NewLgObj (() vue ); 748 ENVGETMPMAXOPENFD : 749 i( objc != 2) { 750 `T_WrgNumArgs ( , 1, objv , NULL ); 751 ( TCL_ERROR ); 753 t = dbv -> `g_mp_max_ݒfd (dbv, & tvue ); 754 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 755 "v g_mp_max_ݒfd")= TCL_OK ) 756 s = `T_NewIObj ( tvue ); 758 ENVGETMPMAXWRITE : 759 i( objc != 2) { 760 `T_WrgNumArgs ( , 1, objv , NULL ); 761 ( TCL_ERROR ); 763 t = dbv -> `g_mp_max_wre (dbv, & tvue , & timeout ); 764 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 765 "v g_mp_max_wre")= TCL_OK ) { 766 myobjv [0] = `T_NewIObj ( tvue ); 767 myobjv [1] = `T_NewIObj (() timeout ); 768 s = `T_NewLiObj (2, myobjv ); 771 ENVGETMPMMAPSIZE : 772 i( objc != 2) { 773 `T_WrgNumArgs ( , 1, objv , NULL ); 774 ( TCL_ERROR ); 776 t = dbv -> `g_mp_mmsize (dbv, & size ); 777 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 778 "v g_mp_mmsize")= TCL_OK ) 779 s = `T_NewLgObj (() size ); 781 ENVGETOPENFLAG : 782 su = `v_GOnFg ( , objc , objv , dbv ); 784 ENVGETREPLIMIT : 785 i( objc != 2) { 786 `T_WrgNumArgs ( , 1, objv , NULL ); 787 ( TCL_ERROR ); 789 t = dbv -> `p_g_lim (dbv, & gbys , & bys ); 790 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 791 "v_g_lim")= TCL_OK ) { 792 myobjv [0] = `T_NewLgObj (() gbys ); 793 myobjv [1] = `T_NewLgObj (() bys ); 794 s = `T_NewLiObj (2, myobjv ); 797 ENVGETSHMKEY : 798 i( objc != 2) { 799 `T_WrgNumArgs ( , 1, objv , NULL ); 800 ( TCL_ERROR ); 802 t = dbv -> `g_shm_key (dbv, & shm_key ); 803 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 804 "v shm_key")= TCL_OK ) 805 s = `T_NewLgObj ( shm_key ); 807 ENVGETTASSPINS : 808 i( objc != 2) { 809 `T_WrgNumArgs ( , 1, objv , NULL ); 810 ( TCL_ERROR ); 812 t = dbv -> `mux_g_s_s (dbv, & vue ); 813 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 814 "v g_s_s")= TCL_OK ) 815 s = `T_NewLgObj (() vue ); 817 ENVGETTIMEOUT : 818 su = `v_GTimeout ( , objc , objv , dbv ); 820 ENVGETTMPDIR : 821 i( objc != 2) { 822 `T_WrgNumArgs ( , 1, objv , NULL ); 823 ( TCL_ERROR ); 825 t = dbv -> `g_tmp_d (dbv, & rv ); 826 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 827 "v g_tmp_d")= TCL_OK ) 828 s = `NewSgObj ( rv , ` (strval)); 830 ENVGETTXMAX : 831 i( objc != 2) { 832 `T_WrgNumArgs ( , 1, objv , NULL ); 833 ( TCL_ERROR ); 835 t = dbv -> `g_tx_max (dbv, & vue ); 836 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 837 "v g_tx_max")= TCL_OK ) 838 s = `T_NewLgObj (() vue ); 840 ENVGETTXTIMESTAMP : 841 i( objc != 2) { 842 `T_WrgNumArgs ( , 1, objv , NULL ); 843 ( TCL_ERROR ); 845 t = dbv -> `g_tx_timeamp (dbv, & timev ); 846 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 847 "v g_tx_timeamp")= TCL_OK ) 848 s = `T_NewLgObj (() timev ); 850 ENVGETVERBOSE : 851 su = `v_GVbo ( , objc , objv , dbv ); 853 ENVRESIZECACHE : 854 i(( su = `T_LiObjGEmts ( 855 , objv [2], & liobjc , & liobjv )! TCL_OK ) 857 i( objc !3 || liobjc != 2) { 858 `T_WrgNumArgs ( , 2, objv , 860 su = TCL_ERROR ; 863 su = `_GUI32 ( , liobjv [0], & gbys ); 864 i( su ! TCL_OK ) 866 su = `_GUI32 ( , liobjv [1], & bys ); 867 i( su ! TCL_OK ) 869 t = dbv -> `t_chesize (dbv, gbys , bys , 0); 870 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 873 ENVSETDATADIR : 877 i( objc != 3) { 878 `T_WrgNumArgs ( , 2, objv , "pfx"); 879 ( TCL_ERROR ); 881 rg = `T_GSgFromObj ( objv [2], NULL ); 882 t = dbv -> `t_da_d (dbv, rg ); 883 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 885 ENVTXN : 886 su = `t_Txn ( , objc , objv , dbv , v ); 888 ENVTXNCKP : 889 su = `t_TxnCheckpot ( , objc , objv , dbv ); 896 i( su = TCL_OK && s ) 897 `T_SObjResu ( , s ); 898 ( su ); 899 } } 908 $t_EnvRemove ( , objc , objv , dbv , v ) 909 T_Ip * ; 910 objc ; 911 T_Obj * CONST objv []; 912 DB_ENV * dbv ; 913 DBTCL_INFO * v ; 915 cڡ * vmts [] = { 916 #ifde CONFIG_TEST 929 NULL 931 evmts { 932 #ifde CONFIG_TEST 933 ENVREM_OVERWRITE , 934 ENVREM_SERVER , 936 ENVREM_DATADIR , 937 ENVREM_ENCRYPT_AES , 938 ENVREM_ENCRYPT_ANY , 939 ENVREM_FORCE , 940 ENVREM_HOME , 941 ENVREM_LOGDIR , 942 ENVREM_TMPDIR , 943 ENVREM_USE_ENVIRON , 944 ENVREM_USE_ENVIRON_ROOT 946 DB_ENV * e ; 947 u_t32_t cag , c_ag , ag , fag , sag ; 948 i , tdex , su , t ; 949 * dad , * home , * logd , * sswd , * rv , * tmpd ; 951 su = TCL_OK ; 952 cag = ag = fag = sag = 0; 953 home = NULL ; 954 sswd = NULL ; 955 dad = logd = tmpd = NULL ; 956 rv = NULL ; 957 c_ag = 0; 959 i( objc < 2) { 960 `T_WrgNumArgs ( , 2, objv , "?args?"); 961 ( TCL_ERROR ); 964 i = 2; 965 i < objc ) { 966 i( `T_GIndexFromObj ( , objv [ i ], vmts , "option", 967 TCL_EXACT , & tdex ! TCL_OK ) { 968 su = `IS_HELP ( objv [ i ]); 969 r ; 971 i ++; 972 ( vmts ) tdex ) { 973 #ifde CONFIG_TEST 974 ENVREM_SERVER : 976 i( i > objc ) { 977 `T_WrgNumArgs ( , 2, objv , 979 su = TCL_ERROR ; 982 rv = `T_GSgFromObj ( objv [ i ++], NULL ); 983 cag = DB_RPCCLIENT ; 986 ENVREM_ENCRYPT_AES : 988 i( i > objc ) { 989 `T_WrgNumArgs ( , 2, objv , 991 su = TCL_ERROR ; 994 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 995 c_ag = DB_ENCRYPT_AES ; 997 ENVREM_ENCRYPT_ANY : 999 i( i > objc ) { 1000 `T_WrgNumArgs ( , 2, objv , 1002 su = TCL_ERROR ; 1005 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1006 c_ag = 0; 1008 ENVREM_FORCE : 1009 fag | DB_FORCE ; 1011 ENVREM_HOME : 1013 i( i > objc ) { 1014 `T_WrgNumArgs ( , 2, objv , 1016 su = TCL_ERROR ; 1019 home = `T_GSgFromObj ( objv [ i ++], NULL ); 1021 #ifde CONFIG_TEST 1022 ENVREM_OVERWRITE : 1023 sag | DB_OVERWRITE ; 1026 ENVREM_USE_ENVIRON : 1027 ag | DB_USE_ENVIRON ; 1029 ENVREM_USE_ENVIRON_ROOT : 1030 ag | DB_USE_ENVIRON_ROOT ; 1032 ENVREM_DATADIR : 1033 i( i > objc ) { 1034 `T_WrgNumArgs ( , 2, objv , 1036 su = TCL_ERROR ; 1039 dad = `T_GSgFromObj ( objv [ i ++], NULL ); 1041 ENVREM_LOGDIR : 1042 i( i > objc ) { 1043 `T_WrgNumArgs ( , 2, objv , 1045 su = TCL_ERROR ; 1048 logd = `T_GSgFromObj ( objv [ i ++], NULL ); 1050 ENVREM_TMPDIR : 1051 i( i > objc ) { 1052 `T_WrgNumArgs ( , 2, objv , 1054 su = TCL_ERROR ; 1057 tmpd = `T_GSgFromObj ( objv [ i ++], NULL ); 1064 i( su ! TCL_OK ) 1065 r ; 1072 i( dbv = NULL ) { 1073 i(( t = `db_v_ (& e , cag )) != 0) { 1074 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1076 r ; 1078 i( rv ! NULL ) { 1079 `_debug_check (); 1080 t = e -> `t_c_rv , NULL , rv , 0, 0, 0); 1081 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1083 i( su ! TCL_OK ) 1084 r ; 1086 i( dad ! NULL ) { 1087 `_debug_check (); 1088 t = e -> `t_da_d , dad ); 1089 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1091 i( su ! TCL_OK ) 1092 r ; 1094 i( logd ! NULL ) { 1095 `_debug_check (); 1096 t = e -> `t_lg_d , logd ); 1097 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1099 i( su ! TCL_OK ) 1100 r ; 1102 i( tmpd ! NULL ) { 1103 `_debug_check (); 1104 t = e -> `t_tmp_d , tmpd ); 1105 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1107 i( su ! TCL_OK ) 1108 r ; 1110 i( sswd ! NULL ) { 1111 t = e -> `t_y , sswd , c_ag ); 1112 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1115 i( sag !0 && ( t = e -> `t_ags (e, sflag, 1)) != 0) { 1116 `_debug_check (); 1117 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1119 i( su ! TCL_OK ) 1120 r ; 1122 e -> `t_fx (e, "EnvRemove"); 1123 e -> `t_r , _EFunc ); 1130 `_EnvInfoDe ( , v ); 1131 v = NULL ; 1132 e = dbv ; 1135 ag | fag ; 1140 `_debug_check (); 1141 t = e -> `move , home , ag ); 1142 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1144 r : 1145 ( su ); 1146 } } 1149 $_EnvInfoDe ( , v ) 1150 T_Ip * ; 1151 DBTCL_INFO * v ; 1153 DBTCL_INFO * x , * p ; 1163 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 1175 i( p -> i_ = v ) { 1176 p -> i_ty ) { 1177 I_TXN : 1178 `_TxnInfoDe ( , p ); 1180 I_MP : 1181 `_MpInfoDe ( , p ); 1183 I_DB : 1184 I_DBC : 1185 I_ENV : 1186 I_LOCK : 1187 I_LOGC : 1188 I_NDBM : 1189 I_PG : 1190 I_SEQ : 1191 `T_SResu ( , 1193 TCL_STATIC ); 1196 x = `LIST_NEXT ( p , s ); 1197 () `T_DeCommd ( , p -> i_me ); 1198 `_DeInfo ( p ); 1200 x = `LIST_NEXT ( p , s ); 1202 () `T_DeCommd ( , v -> i_me ); 1203 `_DeInfo ( v ); 1204 } } 1206 #ifde CONFIG_TEST 1215 $t_EnvIdRet ( , objc , objv , dbv ) 1216 T_Ip * ; 1217 objc ; 1218 T_Obj * CONST * objv ; 1219 DB_ENV * dbv ; 1221 cڡ * idwhich [] = { 1223 NULL 1225 eidwhich { 1226 IDENCRYPT 1228 c , i , su , t ; 1229 u_t32_t ags ; 1230 * fe ; 1232 su = TCL_OK ; 1233 ags = 0; 1234 i = 2; 1235 `T_SResu ( , "0", TCL_STATIC ); 1236 i( objc < 3) { 1237 `T_WrgNumArgs ( , 2, objv , "?-encrypt? filename"); 1238 ( TCL_ERROR ); 1239 } i( objc > 3) { 1243 i( `T_GIndexFromObj ( , objv [2], idwhich , "option", 1244 TCL_EXACT , & c ! TCL_OK ) 1245 ( `IS_HELP ( objv [2])); 1246 ( idwhich ) c ) { 1247 IDENCRYPT : 1248 ags | DB_ENCRYPT ; 1251 i = 3; 1253 fe = `T_GSgFromObj ( objv [ i ], NULL ); 1254 t = dbv -> `feid_t (dbv, fe , ags ); 1255 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "fileideset"); 1256 ( su ); 1257 } } 1267 $t_EnvLRet ( , objc , objv , dbv ) 1268 T_Ip * ; 1269 objc ; 1270 T_Obj * CONST * objv ; 1271 DB_ENV * dbv ; 1273 cڡ * lwhich [] = { 1275 NULL 1277 elwhich { 1278 IDENCRYPT 1280 c , i , su , t ; 1281 u_t32_t ags ; 1282 * fe ; 1284 su = TCL_OK ; 1285 ags = 0; 1286 i = 2; 1287 `T_SResu ( , "0", TCL_STATIC ); 1288 i( objc < 3) { 1289 `T_WrgNumArgs ( , 2, objv , "?-encrypt? filename"); 1290 ( TCL_ERROR ); 1291 } i( objc > 3) { 1295 i( `T_GIndexFromObj ( , objv [2], lwhich , "option", 1296 TCL_EXACT , & c ! TCL_OK ) 1297 ( `IS_HELP ( objv [2])); 1299 ( lwhich ) c ) { 1300 IDENCRYPT : 1301 ags | DB_ENCRYPT ; 1304 i = 3; 1306 fe = `T_GSgFromObj ( objv [ i ], NULL ); 1307 t = dbv -> `l_t (dbv, fe , ags ); 1308 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lsneset"); 1309 ( su ); 1310 } } 1319 $t_EnvVbo ( , dbv , which , off ) 1320 T_Ip * ; 1321 DB_ENV * dbv ; 1322 T_Obj * which ; 1323 T_Obj * off ; 1325 cڡ * vbwhich [] = { 1333 NULL 1335 evbwhich { 1336 ENVVERB_DEADLOCK , 1337 ENVVERB_FILEOPS , 1338 ENVVERB_FILEOPS_ALL , 1339 ENVVERB_RECOVERY , 1340 ENVVERB_REGISTER , 1341 ENVVERB_REPLICATION , 1342 ENVVERB_WAITSFOR 1344 cڡ * vboff [] = { 1347 NULL 1349 evboff { 1350 ENVVERB_OFF , 1351 ENVVERB_ON 1353 , tdex , t ; 1354 u_t32_t wh ; 1356 i( `T_GIndexFromObj ( , which , vbwhich , "option", 1357 TCL_EXACT , & tdex ! TCL_OK ) 1358 ( `IS_HELP ( which )); 1360 ( vbwhich ) tdex ) { 1361 ENVVERB_DEADLOCK : 1362 wh = DB_VERB_DEADLOCK ; 1364 ENVVERB_FILEOPS : 1365 wh = DB_VERB_FILEOPS ; 1367 ENVVERB_FILEOPS_ALL : 1368 wh = DB_VERB_FILEOPS_ALL ; 1370 ENVVERB_RECOVERY : 1371 wh = DB_VERB_RECOVERY ; 1373 ENVVERB_REGISTER : 1374 wh = DB_VERB_REGISTER ; 1376 ENVVERB_REPLICATION : 1377 wh = DB_VERB_REPLICATION ; 1379 ENVVERB_WAITSFOR : 1380 wh = DB_VERB_WAITSFOR ; 1383 ( TCL_ERROR ); 1385 i( `T_GIndexFromObj ( , off , vboff , "option", 1386 TCL_EXACT , & tdex ! TCL_OK ) 1387 ( `IS_HELP ( off )); 1388 ( vboff ) tdex ) { 1389 ENVVERB_OFF : 1390 = 0; 1392 ENVVERB_ON : 1393 = 1; 1396 ( TCL_ERROR ); 1398 t = dbv -> `t_vbo (dbv, wh , ); 1399 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1401 } } 1404 #ifde CONFIG_TEST 1412 $t_EnvAr ( , objc , objv , dbv ) 1413 T_Ip * ; 1414 objc ; 1415 T_Obj * CONST objv []; 1416 DB_ENV * dbv ; 1418 su ; 1419 T_Obj * myobj , * i ; 1421 su = TCL_OK ; 1423 i( objc > 2) { 1424 `T_WrgNumArgs ( , 2, objv , NULL ); 1425 ( TCL_ERROR ); 1427 i = `T_NewLiObj (0, NULL ); 1433 myobj = `NewSgObj ("-home", ` ("-home")); 1434 i(( su = `T_LiObjAdEmt ( , 1435 i , myobj )! TCL_OK ) 1436 r ; 1437 myobj = `NewSgObj ( dbv -> db_home , ` (dbenv->db_home)); 1438 i(( su = `T_LiObjAdEmt ( , 1439 i , myobj )! TCL_OK ) 1440 r ; 1441 i( `CDB_LOCKING ( dbv )) { 1442 myobj = `NewSgObj ("-cdb", ` ("-cdb")); 1443 i(( su = `T_LiObjAdEmt ( , 1444 i , myobj )! TCL_OK ) 1445 r ; 1447 i( `CRYPTO_ON ( dbv )) { 1448 myobj = `NewSgObj ("-yo", ` ("-crypto")); 1449 i(( su = `T_LiObjAdEmt ( , 1450 i , myobj )! TCL_OK ) 1451 r ; 1453 i( `LOCKING_ON ( dbv )) { 1454 myobj = `NewSgObj ("-lock", ` ("-lock")); 1455 i(( su = `T_LiObjAdEmt ( , 1456 i , myobj )! TCL_OK ) 1457 r ; 1459 i( `LOGGING_ON ( dbv )) { 1460 myobj = `NewSgObj ("-log", ` ("-log")); 1461 i(( su = `T_LiObjAdEmt ( , 1462 i , myobj )! TCL_OK ) 1463 r ; 1465 i( `MPOOL_ON ( dbv )) { 1466 myobj = `NewSgObj ("-mpo", ` ("-mpool")); 1467 i(( su = `T_LiObjAdEmt ( , 1468 i , myobj )! TCL_OK ) 1469 r ; 1471 i( `RPC_ON ( dbv )) { 1472 myobj = `NewSgObj ("-c", ` ("-rpc")); 1473 i(( su = `T_LiObjAdEmt ( , 1474 i , myobj )! TCL_OK ) 1475 r ; 1477 i( `REP_ON ( dbv )) { 1478 myobj = `NewSgObj ("-p", ` ("-rep")); 1479 i(( su = `T_LiObjAdEmt ( , 1480 i , myobj )! TCL_OK ) 1481 r ; 1483 i( `TXN_ON ( dbv )) { 1484 myobj = `NewSgObj ("-txn", ` ("-txn")); 1485 i(( su = `T_LiObjAdEmt ( , 1486 i , myobj )! TCL_OK ) 1487 r ; 1489 `T_SObjResu ( , i ); 1490 r : 1491 ( su ); 1492 } } 1506 $t_EvtNify ( , dbv , eobj , ) 1507 T_Ip * ; 1508 DB_ENV * dbv ; 1509 T_Obj * eobj ; 1510 DBTCL_INFO * ; 1512 t ; 1520 i( -> i_evt ! NULL ) 1521 `T_DeRefCou ( -> i_evt ); 1522 -> i_evt = eobj ; 1523 `T_InRefCou ( -> i_evt ); 1524 `_debug_check (); 1525 t = dbv -> `t_evt_nify (dbv, _EvtFunc ); 1526 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1528 } } 1538 $t_EnvSFgs ( , dbv , which , off ) 1539 T_Ip * ; 1540 DB_ENV * dbv ; 1541 T_Obj * which ; 1542 T_Obj * off ; 1544 cڡ * sfwhich [] = { 1559 NULL 1561 esfwhich { 1562 ENVSF_AUTOCOMMIT , 1563 ENVSF_DIRECTDB , 1564 ENVSF_DIRECTLOG , 1565 ENVSF_DSYNCLOG , 1566 ENVSF_LOG_INMEMORY , 1567 ENVSF_LOG_REMOVE , 1568 ENVSF_MULTIVERSION , 1569 ENVSF_NOLOCK , 1570 ENVSF_NOMMAP , 1571 ENVSF_NOPANIC , 1572 ENVSF_NOSYNC , 1573 ENVSF_OVERWRITE , 1574 ENVSF_PANIC , 1575 ENVSF_WRNOSYNC 1577 cڡ * sfoff [] = { 1580 NULL 1582 esfoff { 1583 ENVSF_OFF , 1584 ENVSF_ON 1586 , tdex , t ; 1587 u_t32_t wh ; 1589 i( `T_GIndexFromObj ( , which , sfwhich , "option", 1590 TCL_EXACT , & tdex ! TCL_OK ) 1591 ( `IS_HELP ( which )); 1593 ( sfwhich ) tdex ) { 1594 ENVSF_AUTOCOMMIT : 1595 wh = DB_AUTO_COMMIT ; 1597 ENVSF_DIRECTDB : 1598 wh = DB_DIRECT_DB ; 1600 ENVSF_DIRECTLOG : 1601 wh = DB_DIRECT_LOG ; 1603 ENVSF_DSYNCLOG : 1604 wh = DB_DSYNC_LOG ; 1606 ENVSF_LOG_INMEMORY : 1607 wh = DB_LOG_INMEMORY ; 1609 ENVSF_LOG_REMOVE : 1610 wh = DB_LOG_AUTOREMOVE ; 1612 ENVSF_MULTIVERSION : 1613 wh = DB_MULTIVERSION ; 1615 ENVSF_NOLOCK : 1616 wh = DB_NOLOCKING ; 1618 ENVSF_NOMMAP : 1619 wh = DB_NOMMAP ; 1621 ENVSF_NOSYNC : 1622 wh = DB_TXN_NOSYNC ; 1624 ENVSF_NOPANIC : 1625 wh = DB_NOPANIC ; 1627 ENVSF_PANIC : 1628 wh = DB_PANIC_ENVIRONMENT ; 1630 ENVSF_OVERWRITE : 1631 wh = DB_OVERWRITE ; 1633 ENVSF_WRNOSYNC : 1634 wh = DB_TXN_WRITE_NOSYNC ; 1637 ( TCL_ERROR ); 1639 i( `T_GIndexFromObj ( , off , sfoff , "option", 1640 TCL_EXACT , & tdex ! TCL_OK ) 1641 ( `IS_HELP ( off )); 1642 ( sfoff ) tdex ) { 1643 ENVSF_OFF : 1644 = 0; 1646 ENVSF_ON : 1647 = 1; 1650 ( TCL_ERROR ); 1652 t = dbv -> `t_ags (dbv, wh , ); 1653 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1655 } } 1674 $t_EnvTe ( , objc , objv , dbv ) 1675 T_Ip * ; 1676 objc ; 1677 T_Obj * CONST objv []; 1678 DB_ENV * dbv ; 1680 cڡ * vcmd [] = { 1685 NULL 1687 evcmd { 1688 ENVTEST_ABORT , 1689 ENVTEST_CHECK , 1690 ENVTEST_COPY , 1691 ENVTEST_FORCE 1693 cڡ * v [] = { 1706 NULL 1708 ev { 1709 ENVTEST_ELECTINIT , 1710 ENVTEST_ELECTVOTE1 , 1711 ENVTEST_NONE , 1712 ENVTEST_PREDESTROY , 1713 ENVTEST_PREOPEN , 1714 ENVTEST_POSTDESTROY , 1715 ENVTEST_POSTLOG , 1716 ENVTEST_POSTLOGMETA , 1717 ENVTEST_POSTOPEN , 1718 ENVTEST_POSTSYNC , 1719 ENVTEST_RECYCLE , 1720 ENVTEST_SUBDB_LOCKS 1722 cڡ * vf [] = { 1724 NULL 1726 evf { 1727 ENVTEST_NOARCHIVE_TIMEOUT 1729 * loc , tdex , su , v ; 1731 su = TCL_OK ; 1732 loc = NULL ; 1734 i( objc != 4) { 1735 `T_WrgNumArgs ( , 1736 2, objv , "abort|check|copy|force <args>"); 1737 ( TCL_ERROR ); 1743 i( `T_GIndexFromObj ( , objv [2], vcmd , "command", 1744 TCL_EXACT , & tdex ! TCL_OK ) { 1745 su = `IS_HELP ( objv [2]); 1746 ( su ); 1748 ( vcmd ) tdex ) { 1749 ENVTEST_ABORT : 1750 loc = & dbv -> _abt ; 1752 ENVTEST_CHECK : 1753 loc = & dbv -> _check ; 1754 i( `T_GIFromObj ( , objv [3], & v ! TCL_OK ) { 1755 su = `IS_HELP ( objv [3]); 1756 ( su ); 1758 de ; 1759 ENVTEST_COPY : 1760 loc = & dbv -> _cy ; 1762 ENVTEST_FORCE : 1763 i( `T_GIndexFromObj ( , objv [3], vf , "arg", 1764 TCL_EXACT , & tdex ! TCL_OK ) { 1765 su = `IS_HELP ( objv [3]); 1766 ( su ); 1772 `DB_ASSERT ( dbv , 1773 ( vf ) tdex = ENVTEST_NOARCHIVE_TIMEOUT ); 1774 ( `t_RNrchiveTimeout ( , dbv )); 1776 `T_SResu ( , "Ieg stܐloti", TCL_STATIC ); 1777 ( TCL_ERROR ); 1783 i( `T_GIndexFromObj ( , objv [3], v , "location", 1784 TCL_EXACT , & tdex ! TCL_OK ) { 1785 su = `IS_HELP ( objv [3]); 1786 ( su ); 1788 ( v ) tdex ) { 1789 ENVTEST_ELECTINIT : 1790 `DB_ASSERT ( dbv , loc =&dbv-> _abt ); 1791 v = DB_TEST_ELECTINIT ; 1793 ENVTEST_ELECTVOTE1 : 1794 `DB_ASSERT ( dbv , loc =&dbv-> _abt ); 1795 v = DB_TEST_ELECTVOTE1 ; 1797 ENVTEST_NONE : 1798 v = 0; 1800 ENVTEST_PREOPEN : 1801 v = DB_TEST_PREOPEN ; 1803 ENVTEST_PREDESTROY : 1804 v = DB_TEST_PREDESTROY ; 1806 ENVTEST_POSTLOG : 1807 v = DB_TEST_POSTLOG ; 1809 ENVTEST_POSTLOGMETA : 1810 v = DB_TEST_POSTLOGMETA ; 1812 ENVTEST_POSTOPEN : 1813 v = DB_TEST_POSTOPEN ; 1815 ENVTEST_POSTDESTROY : 1816 v = DB_TEST_POSTDESTROY ; 1818 ENVTEST_POSTSYNC : 1819 v = DB_TEST_POSTSYNC ; 1821 ENVTEST_RECYCLE : 1822 `DB_ASSERT ( dbv , loc =&dbv-> _cy ); 1823 v = DB_TEST_RECYCLE ; 1825 ENVTEST_SUBDB_LOCKS : 1826 `DB_ASSERT ( dbv , loc =&dbv-> _abt ); 1827 v = DB_TEST_SUBDB_LOCKS ; 1830 `T_SResu ( , "Iegeoti", TCL_STATIC ); 1831 ( TCL_ERROR ); 1833 de : 1834 * loc = v ; 1835 `T_SResu ( , "0", TCL_STATIC ); 1836 ( su ); 1837 } } 1845 $v_DbRemove ( , objc , objv , dbv ) 1846 T_Ip * ; 1847 objc ; 1848 T_Obj * CONST objv []; 1849 DB_ENV * dbv ; 1851 cڡ * vdbm [] = { 1855 NULL 1857 evdbm { 1858 TCL_EDBREM_COMMIT , 1859 TCL_EDBREM_TXN , 1860 TCL_EDBREM_ENDARG 1862 DB_TXN * txn ; 1863 u_t32_t ag ; 1864 dg , i , tdex , su , t , subdbn ; 1865 u_ch * subdbtmp ; 1866 * g , * db , * subdb , msg [ MSG_SIZE ]; 1868 txn = NULL ; 1869 su = TCL_OK ; 1870 subdbtmp = NULL ; 1871 db = subdb = NULL ; 1872 dg = 0; 1873 ag = 0; 1875 i( objc < 2) { 1876 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 1877 ( TCL_ERROR ); 1884 i = 2; 1885 i < objc ) { 1886 i( `T_GIndexFromObj ( , objv [ i ], vdbm , 1887 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 1888 g = `T_GSgFromObj ( objv [ i ], NULL ); 1889 i( g [0] == '-') { 1890 su = `IS_HELP ( objv [ i ]); 1891 r ; 1893 `T_RetResu ( ); 1896 i ++; 1897 ( vdbm ) tdex ) { 1898 TCL_EDBREM_COMMIT : 1899 ag | DB_AUTO_COMMIT ; 1901 TCL_EDBREM_TXN : 1902 i( i > objc ) { 1903 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 1904 su = TCL_ERROR ; 1907 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1908 txn = `NAME_TO_TXN ( g ); 1909 i( txn = NULL ) { 1910 `tf ( msg , MSG_SIZE , 1911 "v dbmove: Invidx%s\n", g ); 1912 `T_SResu ( , msg , TCL_VOLATILE ); 1913 ( TCL_ERROR ); 1916 TCL_EDBREM_ENDARG : 1917 dg = 1; 1924 i( su ! TCL_OK ) 1925 r ; 1926 i( dg ) 1929 i( su ! TCL_OK ) 1930 r ; 1935 i(( i !( objc - 1)) || (i != (objc - 2))) { 1941 db = `T_GSgFromObj ( objv [ i ++], NULL ); 1942 i( `rcmp ( db , "") == 0) 1943 db = NULL ; 1944 i( i ! objc ) { 1945 subdbtmp = 1946 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 1947 i(( t = `__os_mloc ( 1948 dbv , ( size_t ) subdbn + 1, & subdb )) != 0) { 1949 `T_SResu ( , 1950 `db_ ( t ), TCL_STATIC ); 1953 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 1954 subdb [ subdbn ] = '\0'; 1957 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 1958 su = TCL_ERROR ; 1959 r ; 1961 t = dbv -> `dbmove (dbv, txn , db , subdb , ag ); 1962 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1964 r : 1965 i( subdb ) 1966 `__os_ ( dbv , subdb ); 1967 ( su ); 1968 } } 1975 $v_DbRame ( , objc , objv , dbv ) 1976 T_Ip * ; 1977 objc ; 1978 T_Obj * CONST objv []; 1979 DB_ENV * dbv ; 1981 cڡ * vdbmv [] = { 1985 NULL 1987 evdbmv { 1988 TCL_EDBMV_COMMIT , 1989 TCL_EDBMV_TXN , 1990 TCL_EDBMV_ENDARG 1992 DB_TXN * txn ; 1993 u_t32_t ag ; 1994 dg , i , wn , tdex , su , t , subdbn ; 1995 u_ch * subdbtmp ; 1996 * g , * db , * wme , * subdb , msg [ MSG_SIZE ]; 1998 txn = NULL ; 1999 su = TCL_OK ; 2000 subdbtmp = NULL ; 2001 db = wme = subdb = NULL ; 2002 dg = 0; 2003 ag = 0; 2005 i( objc < 2) { 2006 `T_WrgNumArgs ( , 3, objv , 2008 ( TCL_ERROR ); 2015 i = 2; 2016 i < objc ) { 2017 i( `T_GIndexFromObj ( , objv [ i ], vdbmv , 2018 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 2019 g = `T_GSgFromObj ( objv [ i ], NULL ); 2020 i( g [0] == '-') { 2021 su = `IS_HELP ( objv [ i ]); 2022 r ; 2024 `T_RetResu ( ); 2027 i ++; 2028 ( vdbmv ) tdex ) { 2029 TCL_EDBMV_COMMIT : 2030 ag | DB_AUTO_COMMIT ; 2032 TCL_EDBMV_TXN : 2033 i( i > objc ) { 2034 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2035 su = TCL_ERROR ; 2038 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2039 txn = `NAME_TO_TXN ( g ); 2040 i( txn = NULL ) { 2041 `tf ( msg , MSG_SIZE , 2042 "v dbme: Invidx%s\n", g ); 2043 `T_SResu ( , msg , TCL_VOLATILE ); 2044 ( TCL_ERROR ); 2047 TCL_EDBMV_ENDARG : 2048 dg = 1; 2055 i( su ! TCL_OK ) 2056 r ; 2057 i( dg ) 2060 i( su ! TCL_OK ) 2061 r ; 2066 i(( i !( objc - 2)) || (i != (objc - 3))) { 2072 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2073 i( `rcmp ( db , "") == 0) 2074 db = NULL ; 2075 i( i = objc - 2) { 2076 subdbtmp = 2077 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2078 i(( t = `__os_mloc ( 2079 dbv , ( size_t ) subdbn + 1, & subdb )) != 0) { 2080 `T_SResu ( , 2081 `db_ ( t ), TCL_STATIC ); 2084 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2085 subdb [ subdbn ] = '\0'; 2087 subdbtmp = `T_GByAayFromObj ( objv [ i ++], & wn ); 2088 i(( t = `__os_mloc ( 2089 dbv , ( size_t ) wn + 1, & wme )) != 0) { 2090 `T_SResu ( , 2091 `db_ ( t ), TCL_STATIC ); 2094 `memy ( wme , subdbtmp , ( size_t ) wn ); 2095 wme [ wn ] = '\0'; 2097 `T_WrgNumArgs ( , 3, objv , 2099 su = TCL_ERROR ; 2100 r ; 2102 t = dbv -> `dbme (dbv, txn , db , subdb , wme , ag ); 2103 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2105 r : 2106 i( subdb ) 2107 `__os_ ( dbv , subdb ); 2108 i( wme ) 2109 `__os_ ( dbv , wme ); 2110 ( su ); 2111 } } 2118 $v_GFgs ( , objc , objv , dbv ) 2119 T_Ip * ; 2120 objc ; 2121 T_Obj * CONST objv []; 2122 DB_ENV * dbv ; 2124 i , t , su ; 2125 u_t32_t ags ; 2126 buf [512]; 2127 T_Obj * s ; 2130 u_t32_t ag ; 2131 * g ; 2132 } ݒ_ags [] = { 2133 { DB_AUTO_COMMIT , "-auto_commit" }, 2134 { DB_CDB_ALLDB , "-cdb_alldb" }, 2135 { DB_DIRECT_DB , "-direct_db" }, 2136 { DB_DIRECT_LOG , "-direct_log" }, 2137 { DB_DSYNC_LOG , "-dsync_log" }, 2138 { DB_LOG_AUTOREMOVE , "-log_remove" }, 2139 { DB_LOG_INMEMORY , "-log_inmemory" }, 2140 { DB_MULTIVERSION , "-multiversion" }, 2141 { DB_NOLOCKING , "-nolock" }, 2142 { DB_NOMMAP , "-nommap" }, 2143 { DB_NOPANIC , "-nopanic" }, 2144 { DB_OVERWRITE , "-overwrite" }, 2145 { DB_PANIC_ENVIRONMENT , "-panic" }, 2146 { DB_REGION_INIT , "-region_init" }, 2147 { DB_TXN_NOSYNC , "-nosync" }, 2148 { DB_TXN_WRITE_NOSYNC , "-wrnosync" }, 2149 { DB_YIELDCPU , "-yield" }, 2150 { 0, NULL } 2153 i( objc != 2) { 2154 `T_WrgNumArgs ( , 1, objv , NULL ); 2155 ( TCL_ERROR ); 2158 t = dbv -> `g_ags (dbv, & ags ); 2159 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2160 "v g_ags")= TCL_OK ) { 2161 buf [0] = '\0'; 2163 i = 0; ݒ_ags [i]. ag != 0; i++) 2164 i( `LF_ISSET ( ݒ_ags [ i ]. ag )) { 2165 i( ` ( buf ) > 0) 2166 () `t ( buf , " ", (buf)); 2167 () `t ( 2168 buf , ݒ_ags [ i ]. g , (buf)); 2171 s = `NewSgObj ( buf , ` (buf)); 2172 `T_SObjResu ( , s ); 2175 ( su ); 2176 } } 2183 $v_GOnFg ( , objc , objv , dbv ) 2184 T_Ip * ; 2185 objc ; 2186 T_Obj * CONST objv []; 2187 DB_ENV * dbv ; 2189 i , t , su ; 2190 u_t32_t ags ; 2191 buf [512]; 2192 T_Obj * s ; 2195 u_t32_t ag ; 2196 * g ; 2197 } ݒ_ags [] = { 2198 { DB_CREATE , "-create" }, 2199 { DB_INIT_CDB , "-cdb" }, 2200 { DB_INIT_LOCK , "-lock" }, 2201 { DB_INIT_LOG , "-log" }, 2202 { DB_INIT_MPOOL , "-mpool" }, 2203 { DB_INIT_TXN , "-txn" }, 2204 { DB_LOCKDOWN , "-lockdown" }, 2205 { DB_PRIVATE , "-private" }, 2206 { DB_RECOVER , "-recover" }, 2207 { DB_RECOVER_FATAL , "-recover_fatal" }, 2208 { DB_REGISTER , "-register" }, 2209 { DB_SYSTEM_MEM , "-system_mem" }, 2210 { DB_THREAD , "-thread" }, 2211 { DB_USE_ENVIRON , "-use_environ" }, 2212 { DB_USE_ENVIRON_ROOT , "-use_environ_root" }, 2213 { 0, NULL } 2216 i( objc != 2) { 2217 `T_WrgNumArgs ( , 1, objv , NULL ); 2218 ( TCL_ERROR ); 2221 t = dbv -> `g_ݒ_ags (dbv, & ags ); 2222 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2223 "v g_ݒ_ags")= TCL_OK ) { 2224 buf [0] = '\0'; 2226 i = 0; ݒ_ags [i]. ag != 0; i++) 2227 i( `LF_ISSET ( ݒ_ags [ i ]. ag )) { 2228 i( ` ( buf ) > 0) 2229 () `t ( buf , " ", (buf)); 2230 () `t ( 2231 buf , ݒ_ags [ i ]. g , (buf)); 2234 s = `NewSgObj ( buf , ` (buf)); 2235 `T_SObjResu ( , s ); 2238 ( su ); 2239 } } 2249 $t_EnvGEnyFgs ( , objc , objv , dbv ) 2250 T_Ip * ; 2251 objc ; 2252 T_Obj * CONST objv []; 2253 DB_ENV * dbv ; 2255 i , t , su ; 2256 u_t32_t ags ; 2257 buf [512]; 2258 T_Obj * s ; 2261 u_t32_t ag ; 2262 * g ; 2263 } y_ags [] = { 2264 { DB_ENCRYPT_AES , "-encryptaes" }, 2265 { 0, NULL } 2268 i( objc != 2) { 2269 `T_WrgNumArgs ( , 1, objv , NULL ); 2270 ( TCL_ERROR ); 2273 t = dbv -> `g_y_ags (dbv, & ags ); 2274 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2275 "v g_y_ags")= TCL_OK ) { 2276 buf [0] = '\0'; 2278 i = 0; y_ags [i]. ag != 0; i++) 2279 i( `LF_ISSET ( y_ags [ i ]. ag )) { 2280 i( ` ( buf ) > 0) 2281 () `t ( buf , " ", (buf)); 2282 () `t ( 2283 buf , y_ags [ i ]. g , (buf)); 2286 s = `NewSgObj ( buf , ` (buf)); 2287 `T_SObjResu ( , s ); 2290 ( su ); 2291 } } 2298 $v_GLockDe ( , objc , objv , dbv ) 2299 T_Ip * ; 2300 objc ; 2301 T_Obj * CONST objv []; 2302 DB_ENV * dbv ; 2304 i , t , su ; 2305 u_t32_t lk_de ; 2306 cڡ * sw ; 2307 T_Obj * s ; 2309 u_t32_t ag ; 2310 * me ; 2311 } lk_de_tus [] = { 2312 { DB_LOCK_DEFAULT , "default" }, 2313 { DB_LOCK_EXPIRE , "expire" }, 2314 { DB_LOCK_MAXLOCKS , "maxlocks" }, 2315 { DB_LOCK_MAXWRITE , "maxwrite" }, 2316 { DB_LOCK_MINLOCKS , "minlocks" }, 2317 { DB_LOCK_MINWRITE , "minwrite" }, 2318 { DB_LOCK_OLDEST , "oldest" }, 2319 { DB_LOCK_RANDOM , "random" }, 2320 { DB_LOCK_YOUNGEST , "youngest" }, 2321 { 0, NULL } 2324 i( objc != 2) { 2325 `T_WrgNumArgs ( , 1, objv , NULL ); 2326 ( TCL_ERROR ); 2328 t = dbv -> `g_lk_de (dbv, & lk_de ); 2329 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2330 "v g_lk_de")= TCL_OK ) { 2331 sw = "unknown"; 2332 i = 0; lk_de_tus [i]. ag != 0; i++) 2333 i( lk_de = lk_de_tus [ i ]. ag ) 2334 sw = lk_de_tus [ i ]. me ; 2336 s = `NewSgObj ( sw , ` (answer)); 2337 `T_SObjResu ( , s ); 2340 ( su ); 2341 } } 2348 $v_GTimeout ( , objc , objv , dbv ) 2349 T_Ip * ; 2350 objc ; 2351 T_Obj * CONST objv []; 2352 DB_ENV * dbv ; 2355 u_t32_t ag ; 2356 * g ; 2357 } timeout_ags [] = { 2358 { DB_SET_TXN_TIMEOUT , "txn" }, 2359 { DB_SET_LOCK_TIMEOUT , "lock" }, 2360 { 0, NULL } 2362 T_Obj * s ; 2363 db_timeout_t timeout ; 2364 u_t32_t which ; 2365 i , t , su ; 2366 cڡ * g ; 2368 `COMPQUIET ( timeout , 0); 2370 i( objc != 3) { 2371 `T_WrgNumArgs ( , 1, objv , NULL ); 2372 ( TCL_ERROR ); 2375 g = `T_GSgFromObj ( objv [2], NULL ); 2376 which = 0; 2377 i = 0; timeout_ags [i]. ag != 0; i++) 2378 i( `rcmp ( g , timeout_ags [ i ].arg) == 0) 2379 which = timeout_ags [ i ]. ag ; 2380 i( which == 0) { 2381 t = EINVAL ; 2382 r ; 2385 t = dbv -> `g_timeout (dbv, & timeout , which ); 2386 r : i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2387 "v g_timeout")= TCL_OK ) { 2388 s = `T_NewLgObj (() timeout ); 2389 `T_SObjResu ( , s ); 2392 ( su ); 2393 } } 2400 $v_GVbo ( , objc , objv , dbv ) 2401 T_Ip * ; 2402 objc ; 2403 T_Obj * CONST objv []; 2404 DB_ENV * dbv ; 2407 u_t32_t ag ; 2408 * g ; 2409 } vbo_ags [] = { 2410 { DB_VERB_DEADLOCK , "deadlock" }, 2411 { DB_VERB_FILEOPS , "fileops" }, 2412 { DB_VERB_FILEOPS_ALL , "fileops_all" }, 2413 { DB_VERB_RECOVERY , "recovery" }, 2414 { DB_VERB_REGISTER , "register" }, 2415 { DB_VERB_REPLICATION , "rep" }, 2416 { DB_VERB_WAITSFOR , "wait" }, 2417 { 0, NULL } 2419 T_Obj * s ; 2420 u_t32_t which ; 2421 i , off , t , su ; 2422 cڡ * g , * sw ; 2424 `COMPQUIET ( off , 0); 2426 i( objc != 3) { 2427 `T_WrgNumArgs ( , 1, objv , NULL ); 2428 ( TCL_ERROR ); 2431 g = `T_GSgFromObj ( objv [2], NULL ); 2432 which = 0; 2433 i = 0; vbo_ags [i]. ag != 0; i++) 2434 i( `rcmp ( g , vbo_ags [ i ].arg) == 0) 2435 which = vbo_ags [ i ]. ag ; 2436 i( which == 0) { 2437 t = EINVAL ; 2438 r ; 2441 t = dbv -> `g_vbo (dbv, which , & off ); 2442 r : i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2444 sw = off ? "on" : "off"; 2445 s = `NewSgObj ( sw , ` (answer)); 2446 `T_SObjResu ( , s ); 2449 ( su ); 2450 } } 2460 $t_EnvSEfe ( , dbv , , rf ) 2461 T_Ip * ; 2462 DB_ENV * dbv ; 2463 DBTCL_INFO * ; 2464 * rf ; 2466 `COMPQUIET ( , NULL ); 2470 i( -> i_r ! NULL && ip->i_! dout && 2471 -> i_r ! dr ) 2472 () `fo ( -> i_r ); 2473 i( `rcmp ( rf , "/dev/stdout") == 0) 2474 -> i_r = dout ; 2475 i( `rcmp ( rf , "/dev/stderr") == 0) 2476 -> i_r = dr ; 2478 -> i_r = `fݒ ( rf , "a"); 2479 i( -> i_r ! NULL ) 2480 dbv -> `t_rfe (dbv, -> i_r ); 2481 } } 2491 $t_EnvSEpfx ( , dbv , , pfx ) 2492 T_Ip * ; 2493 DB_ENV * dbv ; 2494 DBTCL_INFO * ; 2495 * pfx ; 2497 su , t ; 2503 su = TCL_OK ; 2504 `T_SResu ( , "0", TCL_STATIC ); 2508 i( -> i_fx ! NULL ) 2509 `__os_ ( dbv , -> i_fx ); 2510 i(( t = `__os_rdup ( dbv , pfx , & -> i_fx )) != 0) { 2511 su = `_RuSup ( , t , 2512 `DB_RETOK_STD ( t ), "__os_strdup"); 2513 -> i_fx = NULL ; 2515 i( -> i_fx ! NULL ) 2516 dbv -> `t_fx (dbv, -> i_fx ); 2517 ( su ); 2518 } } @../tcl/tcl_internal.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 16 ~"dbc/db_ge.h " 17 ~"dbc/db_am.h " 37 #GLOB_CHAR ( c ((c='*' || (c='?') ) 48 DBTCL_INFO * 49 $_NewInfo ( , yp , me , ty ) 50 T_Ip * ; 51 * yp ; 52 * me ; 53 INFOTYPE ty ; 55 DBTCL_INFO * p ; 56 t ; 58 i(( t = `__os_oc ( NULL , ( DBTCL_INFO ), 1, & p )) != 0) { 59 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 60 ( NULL ); 63 i(( t = `__os_rdup ( NULL , me , & p -> i_me )) != 0) { 64 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 65 `__os_ ( NULL , p ); 66 ( NULL ); 68 p -> i_ = ; 69 p -> i_yp = yp ; 70 p -> i_ty = ty ; 72 `LIST_INSERT_HEAD (& __db_fohd , p , s ); 73 ( p ); 74 } } 80 $_NameToP ( me ) 81 CONST * me ; 83 DBTCL_INFO * p ; 85 `LIST_FOREACH ( p , & __db_fohd , s ) 86 i( `rcmp ( me , p -> i_me ) == 0) 87 ( p -> i_yp ); 88 ( NULL ); 89 } } 94 DBTCL_INFO * 95 $_PToInfo ( r ) 96 CONST * r ; 98 DBTCL_INFO * p ; 100 `LIST_FOREACH ( p , & __db_fohd , s ) 101 i( p -> i_yp = r ) 102 ( p ); 103 ( NULL ); 104 } } 109 DBTCL_INFO * 110 $_NameToInfo ( me ) 111 CONST * me ; 113 DBTCL_INFO * p ; 115 `LIST_FOREACH ( p , & __db_fohd , s ) 116 i( `rcmp ( me , p -> i_me ) == 0) 117 ( p ); 118 ( NULL ); 119 } } 125 $_SInfoDa ( p , da ) 126 DBTCL_INFO * p ; 127 * da ; 129 i( p = NULL ) 131 p -> i_yp = da ; 133 } } 139 $_DeInfo ( p ) 140 DBTCL_INFO * p ; 142 i( p = NULL ) 144 `LIST_REMOVE ( p , s ); 145 i( p -> i_lockobj . da ! NULL ) 146 `__os_ ( NULL , p -> i_lockobj . da ); 147 i( p -> i_r ! NULL &&->i_! dr &&->i_! dout ) { 148 () `fo ( p -> i_r ); 149 p -> i_r = NULL ; 151 i( p -> i_fx ! NULL ) 152 `__os_ ( NULL , p -> i_fx ); 153 i( p -> i_com ! NULL ) 154 `T_DeRefCou ( p -> i_com ); 155 i( p -> i_dupcom ! NULL ) 156 `T_DeRefCou ( p -> i_dupcom ); 157 i( p -> i_hashoc ! NULL ) 158 `T_DeRefCou ( p -> i_hashoc ); 159 i( p -> i_cd_ ! NULL ) 160 `T_DeRefCou ( p -> i_cd_ ); 161 i( p -> i_p_eid ! NULL ) 162 `T_DeRefCou ( p -> i_p_eid ); 163 i( p -> i_p_nd ! NULL ) 164 `T_DeRefCou ( p -> i_p_nd ); 165 i( p -> i_evt ! NULL ) 166 `T_DeRefCou ( p -> i_evt ); 167 `__os_ ( NULL , p -> i_me ); 168 `__os_ ( NULL , p ); 171 } } 178 $_SLiEm ( , li , em1 , e1t , em2 , e2t ) 179 T_Ip * ; 180 T_Obj * li ; 181 * em1 , * em2 ; 182 u_t32_t e1t , e2t ; 184 T_Obj * myobjv [2], * thii ; 185 myobjc ; 187 myobjc = 2; 188 myobjv [0] = `T_NewByAayObj (( u_ch *) em1 , () e1t ); 189 myobjv [1] = `T_NewByAayObj (( u_ch *) em2 , () e2t ); 190 thii = `T_NewLiObj ( myobjc , myobjv ); 191 i( thii = NULL ) 192 ( TCL_ERROR ); 193 ( `T_LiObjAdEmt ( , li , thii )); 195 } } 201 $_SLiEmI ( , li , em1 , em2 ) 202 T_Ip * ; 203 T_Obj * li ; 204 * em1 ; 205 em2 ; 207 T_Obj * myobjv [2], * thii ; 208 myobjc ; 210 myobjc = 2; 211 myobjv [0] = 212 `T_NewByAayObj (( u_ch *) em1 , () ` ((*)elem1)); 213 myobjv [1] = `T_NewLgObj ( em2 ); 214 thii = `T_NewLiObj ( myobjc , myobjv ); 215 i( thii = NULL ) 216 ( TCL_ERROR ); 217 ( `T_LiObjAdEmt ( , li , thii )); 218 } } 225 #ifde HAVE_64BIT_TYPES 231 $_SLiEmWideI ( , li , em1 , em2 ) 232 T_Ip * ; 233 T_Obj * li ; 234 * em1 ; 235 t64_t em2 ; 237 T_Obj * myobjv [2], * thii ; 238 myobjc ; 240 myobjc = 2; 241 myobjv [0] = 242 `T_NewByAayObj (( u_ch *) em1 , () ` ((*)elem1)); 243 myobjv [1] = `T_NewWideIObj ( em2 ); 244 thii = `T_NewLiObj ( myobjc , myobjv ); 245 i( thii = NULL ) 246 ( TCL_ERROR ); 247 ( `T_LiObjAdEmt ( , li , thii )); 248 } } 256 $_SLiReoEm ( , li , em1 , em2 , e2size ) 257 T_Ip * ; 258 T_Obj * li ; 259 db_o_t em1 ; 260 u_ch * em2 ; 261 u_t32_t e2size ; 263 T_Obj * myobjv [2], * thii ; 264 myobjc ; 266 myobjc = 2; 267 myobjv [0] = `T_NewWideIObj (( T_WideI ) em1 ); 268 myobjv [1] = `T_NewByAayObj ( em2 , () e2size ); 269 thii = `T_NewLiObj ( myobjc , myobjv ); 270 i( thii = NULL ) 271 ( TCL_ERROR ); 272 ( `T_LiObjAdEmt ( , li , thii )); 274 } } 293 $_S3DBTLi ( , li , em1 , is1o , em2 , is2o , em3 ) 294 T_Ip * ; 295 T_Obj * li ; 296 DBT * em1 , * em2 , * em3 ; 297 is1o , is2o ; 300 T_Obj * myobjv [3], * thii ; 302 i( is1o ) 303 myobjv [0] = `T_NewWideIObj ( 304 ( T_WideI )*( db_o_t *) em1 -> da ); 306 myobjv [0] = `T_NewByAayObj ( 307 ( u_ch *) em1 -> da , (m1-> size ); 309 i( is2o ) 310 myobjv [1] = `T_NewWideIObj ( 311 ( T_WideI )*( db_o_t *) em2 -> da ); 313 myobjv [1] = `T_NewByAayObj ( 314 ( u_ch *) em2 -> da , (m2-> size ); 316 myobjv [2] = `T_NewByAayObj ( 317 ( u_ch *) em3 -> da , (m3-> size ); 319 thii = `T_NewLiObj (3, myobjv ); 321 i( thii = NULL ) 322 ( TCL_ERROR ); 323 ( `T_LiObjAdEmt ( , li , thii )); 324 } } 333 $_SMuiLi ( , li , key , da , ty , ag ) 334 T_Ip * ; 335 T_Obj * li ; 336 DBT * key , * da ; 337 DBTYPE ty ; 338 u_t32_t ag ; 340 db_o_t o ; 341 u_t32_t dn , kn ; 342 su ; 343 * por , * dp , * kp ; 345 o = 0; 346 dn = 0; 347 kp = NULL ; 349 `DB_MULTIPLE_INIT ( por , da ); 350 su = TCL_OK ; 352 i( ty = DB_RECNO ||y = DB_QUEUE ) 353 o = *( db_o_t * key -> da ; 355 kp = key -> da ; 356 kn = key -> size ; 358 i( ag & DB_MULTIPLE_KEY ) { 359 i( ty = DB_RECNO ||y = DB_QUEUE ) 360 `DB_MULTIPLE_RECNO_NEXT ( por , 361 da , o , dp , dn ); 363 `DB_MULTIPLE_KEY_NEXT ( por , 364 da , kp , kn , dp , dn ); 366 `DB_MULTIPLE_NEXT ( por , da , dp , dn ); 368 i( por = NULL ) 371 i( ty = DB_RECNO ||y = DB_QUEUE ) { 372 su = 373 `_SLiReoEm ( , li , o , dp , dn ); 374 o ++; 376 i( o == 0) 377 o ++; 379 su = `_SLiEm ( , li , kp , kn , dp , dn ); 380 } su = TCL_OK ); 382 ( su ); 383 } } 388 $_GGlobPfix ( n , efix ) 389 * n ; 390 ** efix ; 392 i , j ; 393 * p ; 398 i( `__os_rdup ( NULL , n , efix ) != 0) 401 p = * efix ; 402 i = 0, j = 0; p [i] && ! `GLOB_CHAR (p[i]); i++, j++) 406 i( p [ i ] == '\\' &&[i+1]) { 407 p [ j ] =[ i +1]; 408 i ++; 410 p [ j ] =[ i ]; 411 p [ j ] = 0; 413 } } 419 $_RuSup ( , t , ok , rmsg ) 420 T_Ip * ; 421 t , ok ; 422 * rmsg ; 424 * msg ; 426 i( t > 0) 427 ( `_ESup ( , t , rmsg )); 436 i( t == 0) { 437 `T_SResu ( , "0", TCL_STATIC ); 438 ( TCL_OK ); 441 msg = `db_ ( t ); 442 `T_AdResu ( , msg , NULL ); 444 i( ok ) 445 ( TCL_OK ); 447 `T_SECode ( , "BkeyDB", msg , NULL ); 448 ( TCL_ERROR ); 450 } } 456 $_ESup ( , t , rmsg ) 457 T_Ip * ; 458 t ; 459 * rmsg ; 461 `T_SEno ( t ); 462 `T_AdResu ( , rmsg , ":", `T_PosixE (), NULL ); 463 ( TCL_ERROR ); 464 } } 470 $_EFunc ( dbv , pfx , msg ) 471 cڡ DB_ENV * dbv ; 472 CONST * pfx ; 473 cڡ * msg ; 475 DBTCL_INFO * p ; 476 T_Ip * ; 477 size_t size ; 478 * r ; 480 `COMPQUIET ( dbv , NULL ); 482 p = `_NameToInfo ( pfx ); 483 i( p = NULL ) 485 = p -> i_ ; 487 size = ` ( pfx + sn( msg ) + 4; 492 i( `__os_mloc ( NULL , size , & r ) != 0) { 493 `T_AddEInfo ( , msg ); 494 `T_AdResu ( , msg , "\n", NULL ); 497 `tf ( r , size , "%s: %s", pfx , msg ); 498 `T_AddEInfo ( , r ); 499 `T_AdResu ( , r , "\n", NULL ); 500 `__os_ ( NULL , r ); 502 } } 508 $_EvtFunc ( dbv , evt , fo ) 509 DB_ENV * dbv ; 510 u_t32_t evt ; 511 * fo ; 513 #TCLDB_EVENTITEMS 2 ) 514 #TCLDB_SENDEVENT 3 ) 515 DBTCL_INFO * ; 516 T_Ip * ; 517 T_Obj * evt_o , * igobj ; 518 T_Obj * myobjv [ TCLDB_EVENTITEMS ], * objv [ TCLDB_SENDEVENT ]; 519 i , myobjc , su ; 521 = ( DBTCL_INFO *) dbv -> p_ive ; 522 = -> i_ ; 523 i( -> i_evt = NULL ) 525 objv [0] = -> i_evt ; 526 objv [1] = `NewSgObj ( -> i_me , ` (ip->i_name)); 532 myobjv [1] = NULL ; 533 myobjc = 1; 534 evt ) { 535 DB_EVENT_PANIC : 539 myobjv [0] = `NewSgObj ("nic", ` ("panic")); 540 myobjv [ myobjc ++] = `T_NewIObj (*(*) fo ); 542 DB_EVENT_REP_CLIENT : 543 myobjv [0] = `NewSgObj ("p_", ` ("rep_client")); 545 DB_EVENT_REP_ELECTED : 546 myobjv [0] = `NewSgObj ("eed", ` ("elected")); 548 DB_EVENT_REP_MASTER : 549 myobjv [0] = `NewSgObj ("p_ma", ` ("rep_master")); 551 DB_EVENT_REP_NEWMASTER : 555 myobjv [0] = `NewSgObj ("wma", ` ("newmaster")); 556 myobjv [ myobjc ++] = `T_NewIObj (*(*) fo ); 558 DB_EVENT_REP_PERM_FAILED : 559 myobjv [0] = `NewSgObj ("rm_ed", ` ("perm_failed")); 561 DB_EVENT_REP_STARTUPDONE : 562 myobjv [0] = `NewSgObj ("tupde", ` ("startupdone")); 564 DB_EVENT_WRITE_FAILED : 565 myobjv [0] = 566 `NewSgObj ("wre_ed", ` ("write_failed")); 569 `__db_rx ( dbv , "T unknowev%lu", ( u_lg ) evt ); 573 i = 0; i < myobjc ; i++) 574 `T_InRefCou ( myobjv [ i ]); 576 evt_o = `T_NewLiObj ( myobjc , myobjv ); 577 `T_InRefCou ( evt_o ); 578 objv [2] = evt_o ; 586 igobj = `T_GObjResu ( ); 587 `T_InRefCou ( igobj ); 588 su = `T_EvObjv ( , TCLDB_SENDEVENT , objv , 0); 589 i( su ! TCL_OK ) { 599 `__db_rx ( dbv , "Tclvent failure"); 600 `__os_abt (); 603 `T_SObjResu ( , igobj ); 604 `T_DeRefCou ( igobj ); 605 i = 0; i < myobjc ; i++) 606 `T_DeRefCou ( myobjv [ i ]); 607 `T_DeRefCou ( evt_o ); 610 } } 612 #INVALID_LSNMSG "Invid LSN wh %dts. Should hav2.\n" ) 618 $_GL ( , obj , l ) 619 T_Ip * ; 620 T_Obj * obj ; 621 DB_LSN * l ; 623 T_Obj ** myobjv ; 624 msg [ MSG_SIZE ]; 625 myobjc , su ; 626 u_t32_t tmp ; 628 su = `T_LiObjGEmts ( , obj , & myobjc , & myobjv ); 629 i( su = TCL_ERROR ) 630 ( su ); 631 i( myobjc != 2) { 632 su = TCL_ERROR ; 633 `tf ( msg , MSG_SIZE , INVALID_LSNMSG , myobjc ); 634 `T_SResu ( , msg , TCL_VOLATILE ); 635 ( su ); 637 su = `_GUI32 ( , myobjv [0], & tmp ); 638 i( su = TCL_ERROR ) 639 ( su ); 640 l -> fe = tmp ; 641 su = `_GUI32 ( , myobjv [1], & tmp ); 642 l -> offt = tmp ; 643 ( su ); 644 } } 662 $_GUI32 ( , obj , ) 663 T_Ip * ; 664 T_Obj * obj ; 665 u_t32_t * ; 667 su ; 668 mp ; 670 su = `T_GLgFromObj ( , obj , & mp ); 671 i( su ! TCL_OK ) 672 ( su ); 674 i(() mp !( u_t32_t )ltmp) { 675 i( ! NULL ) { 676 `T_RetResu ( ); 677 `T_AdToObj ( `T_GObjResu ( ), 680 ( TCL_ERROR ); 683 * = ( u_t32_t ) mp ; 684 ( TCL_OK ); 685 } } 694 T_Obj * 695 $_GFgsLi ( , ags , p ) 696 T_Ip * ; 697 u_t32_t ags ; 698 cڡ FN * p ; 700 T_Obj * wli , * wobj ; 701 su ; 703 wli = `T_NewObj (); 709 i( p = NULL ) 710 ( wli ); 716 ; p -> mask != 0; ++fnp) 717 i( `LF_ISSET ( p -> mask )) { 718 wobj = `NewSgObj ( p -> me , ` (fnp->name)); 719 su = 720 `T_LiObjAdEmt ( , wli , wobj ); 728 `DB_ASSERT ( NULL , su = TCL_OK ); 731 ( wli ); 732 } } 734 g__debug_ , g__debug_ , g__debug_t , g__debug_ ; 740 $_debug_check () 742 i( __debug_ == 0) 745 i( __debug_t != 0) { 746 `tf ("\r%7d:", __debug_ ); 747 () `fush ( dout ); 749 i( __debug_ ++ = __debug_ || __debug_ ) 750 `__db_ldme (); 751 } } 771 $_CyObjBys ( , obj , wp , siz , p ) 772 T_Ip * ; 773 T_Obj * obj ; 774 * wp ; 775 u_t32_t * siz ; 776 * p ; 778 * tmp , * w ; 779 i , n , t ; 786 * p = 0; 787 t = `T_GIFromObj ( , obj , & i ); 788 tmp = `T_GByAayFromObj ( obj , & n ); 789 * siz = ( u_t32_t ) n ; 790 i( t = TCL_ERROR ) { 791 `T_RetResu ( ); 792 *(**) wp = tmp ; 801 i(( t = `__os_mloc ( NULL , ( size_t ) n , & w )) != 0) 802 ( t ); 803 `memy ( w , tmp , ( size_t ) n ); 804 *(**) wp = w ; 805 * p = 1; 807 } } @../tcl/tcl_lock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 20 #ifde CONFIG_TEST 21 lock_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 22 _LockMode __P (( T_Ip *, T_Obj *, db_lockmode_t *)); 23 _GThisLock __P (( T_Ip *, DB_ENV *, u_t32_t , 24 u_t32_t , DBT *, db_lockmode_t , *)); 25 _LockPutInfo __P (( T_Ip *, db_lock_t , DB_LOCK *, 26 u_t32_t , DBT *)); 35 $t_LockDe ( , objc , objv , vp ) 36 T_Ip * ; 37 objc ; 38 T_Obj * CONST objv []; 39 DB_ENV * vp ; 41 cڡ * ldts [] = { 51 NULL 53 eldts { 54 LD_DEFAULT , 55 LD_EXPIRE , 56 LD_MAXLOCKS , 57 LD_MAXWRITES , 58 LD_MINLOCKS , 59 LD_MINWRITES , 60 LD_OLDEST , 61 LD_RANDOM , 62 LD_YOUNGEST 64 u_t32_t ag , picy ; 65 i , tdex , su , t ; 67 su = TCL_OK ; 68 ag = picy = 0; 69 i = 2; 70 i < objc ) { 71 i( `T_GIndexFromObj ( , objv [ i ], 72 ldts , "ti", TCL_EXACT , & tdex ! TCL_OK ) 73 ( `IS_HELP ( objv [ i ])); 74 i ++; 75 ( ldts ) tdex ) { 76 LD_DEFAULT : 77 `FLAG_CHECK ( picy ); 78 picy = DB_LOCK_DEFAULT ; 80 LD_EXPIRE : 81 `FLAG_CHECK ( picy ); 82 picy = DB_LOCK_EXPIRE ; 84 LD_MAXLOCKS : 85 `FLAG_CHECK ( picy ); 86 picy = DB_LOCK_MAXLOCKS ; 88 LD_MAXWRITES : 89 `FLAG_CHECK ( picy ); 90 picy = DB_LOCK_MAXWRITE ; 92 LD_MINLOCKS : 93 `FLAG_CHECK ( picy ); 94 picy = DB_LOCK_MINLOCKS ; 96 LD_MINWRITES : 97 `FLAG_CHECK ( picy ); 98 picy = DB_LOCK_MINWRITE ; 100 LD_OLDEST : 101 `FLAG_CHECK ( picy ); 102 picy = DB_LOCK_OLDEST ; 104 LD_RANDOM : 105 `FLAG_CHECK ( picy ); 106 picy = DB_LOCK_RANDOM ; 108 LD_YOUNGEST : 109 `FLAG_CHECK ( picy ); 110 picy = DB_LOCK_YOUNGEST ; 115 `_debug_check (); 116 t = vp -> `lock_de nvp, ag , picy , NULL ); 117 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lock detect"); 118 ( su ); 119 } } 128 $t_LockG ( , objc , objv , vp ) 129 T_Ip * ; 130 objc ; 131 T_Obj * CONST objv []; 132 DB_ENV * vp ; 134 cڡ * lgts [] = { 136 NULL 138 elgts { 139 LGNOWAIT 141 DBT obj ; 142 T_Obj * s ; 143 * mp ; 144 db_lockmode_t mode ; 145 u_t32_t ag , lockid ; 146 obj , tdex , su , t ; 147 wme [ MSG_SIZE ]; 149 su = TCL_OK ; 150 obj = 0; 151 `memt ( wme , 0, MSG_SIZE ); 152 i( objc != 5 && objc != 6) { 153 `T_WrgNumArgs ( , 2, objv , "?-nowait? mode id obj"); 154 ( TCL_ERROR ); 162 `memt (& obj , 0, (obj)); 164 i(( su = 165 `_GUI32 ( , objv [ objc -2], & lockid )! TCL_OK ) 166 ( su ); 168 t = `_CyObjBys ( , objv [ objc -1], & mp , 169 & obj . size , & obj ); 170 i( t != 0) { 171 su = `_RuSup ( , t , 172 `DB_RETOK_STD ( t ), "lock get"); 173 ( su ); 175 obj . da = mp ; 176 i(( su = `_LockMode ( , objv [( objc - 3)], & mode )! TCL_OK ) 177 out ; 182 ag = 0; 183 i( objc == 6) { 184 i( `T_GIndexFromObj ( , objv [( objc - 4)], 185 lgts , "ti", TCL_EXACT , & tdex ! TCL_OK ) 186 ( `IS_HELP ( objv [( objc - 4)])); 187 ( lgts ) tdex ) { 188 LGNOWAIT : 189 ag | DB_LOCK_NOWAIT ; 194 su = `_GThisLock ( , vp , lockid , ag , & obj , mode , wme ); 195 i( su = TCL_OK ) { 196 s = `NewSgObj ( wme , ` (newname)); 197 `T_SObjResu ( , s ); 199 out : 200 i( obj ) 201 `__os_ ( vp , mp ); 202 ( su ); 203 } } 212 $t_LockSt ( , objc , objv , vp ) 213 T_Ip * ; 214 objc ; 215 T_Obj * CONST objv []; 216 DB_ENV * vp ; 218 DB_LOCK_STAT * ; 219 T_Obj * s ; 220 su , t ; 222 su = TCL_OK ; 226 i( objc != 2) { 227 `T_WrgNumArgs ( , 2, objv , NULL ); 228 ( TCL_ERROR ); 230 `_debug_check (); 231 t = vp -> `lock_ nvp, & , 0); 232 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lock stat"); 233 i( su = TCL_ERROR ) 234 ( su ); 239 s = `T_NewObj (); 240 #ifde HAVE_STATISTICS 244 `MAKE_STAT_LIST ("Regi size", -> _gsize ); 245 `MAKE_STAT_LIST ("Laodock ID", -> _id ); 246 `MAKE_STAT_LIST ("Cumaximum unudock ID", -> _cur_maxid ); 247 `MAKE_STAT_LIST ("Maximumocks", -> _maxlocks ); 248 `MAKE_STAT_LIST ("Maximumocks", -> _maxlocks ); 249 `MAKE_STAT_LIST ("Maximum objes", -> _maxobjes ); 250 `MAKE_STAT_LIST ("Lock modes", -> _nmodes ); 251 `MAKE_STAT_LIST ("Cunumb olocks", -> _ocks ); 252 `MAKE_STAT_LIST ("Maximumumb olocksr", -> _maxocks ); 253 `MAKE_STAT_LIST ("Cunumb olocks", -> _ocks ); 254 `MAKE_STAT_LIST ("Maximumumb olocksr", -> _maxocks ); 255 `MAKE_STAT_LIST ("Cunumb oobjes", -> _nobjes ); 256 `MAKE_STAT_LIST ("Maximumumb oobjesr", -> _maxnobjes ); 257 `MAKE_STAT_LIST ("Lockeques", -> _eques ); 258 `MAKE_STAT_LIST ("Locks", -> _Ės ); 259 `MAKE_STAT_LIST ("Lock upgdes", -> _nupgde ); 260 `MAKE_STAT_LIST ("Lock downgdes", -> _ndowngde ); 261 `MAKE_STAT_LIST ("Number of conflictedocks for which we waited", 262 -> _lock_wa ); 263 `MAKE_STAT_LIST ("Number of conflictedocks for which we didot wait", 264 -> _lock_nowa ); 265 `MAKE_STAT_LIST ("Ddlockdeed", -> _nddlocks ); 266 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 267 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 268 `MAKE_STAT_LIST ("Numb oobjeoti was", -> _objs_wa ); 269 `MAKE_STAT_LIST ("Number of objectllocationowaits", 270 -> _objs_nowa ); 271 `MAKE_STAT_LIST ("Number ofockerllocation waits", 272 -> _locks_wa ); 273 `MAKE_STAT_LIST ("Number ofockerllocationowaits", 274 -> _locks_nowa ); 275 `MAKE_STAT_LIST ("Numb olockoti was", -> _locks_wa ); 276 `MAKE_STAT_LIST ( 277 "Numb olockotiڂowas", -> _locks_nowa ); 278 `MAKE_STAT_LIST ("Maximum hash buckgth", -> _hash_n ); 279 `MAKE_STAT_LIST ("Lockimeouvue", -> _locktimeout ); 280 `MAKE_STAT_LIST ("Numb olockimeouts", -> _ocktimeouts ); 281 `MAKE_STAT_LIST ("Tniځimeouvue", -> _tximeout ); 282 `MAKE_STAT_LIST ("Numb oiځimeouts", -> _ximeouts ); 284 `T_SObjResu ( , s ); 285 r : 286 `__os_u ( vp , ); 287 ( su ); 288 } } 297 $t_LockTimeout ( , objc , objv , vp ) 298 T_Ip * ; 299 objc ; 300 T_Obj * CONST objv []; 301 DB_ENV * vp ; 303 timeout ; 304 su , t ; 309 i( objc != 3) { 310 `T_WrgNumArgs ( , 2, objv , "?timeout?"); 311 ( TCL_ERROR ); 313 su = `T_GLgFromObj ( , objv [2], & timeout ); 314 i( su ! TCL_OK ) 315 ( su ); 316 `_debug_check (); 317 t = vp -> `t_timeout nvp, ( u_t32_t ) timeout , DB_SET_LOCK_TIMEOUT ); 318 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lockimeout"); 319 ( su ); 320 } } 327 $lock_Cmd ( Da , , objc , objv ) 328 ClDa Da ; 329 T_Ip * ; 330 objc ; 331 T_Obj * CONST objv []; 333 cڡ * lkcmds [] = { 335 NULL 337 elkcmds { 338 LKPUT 340 DB_ENV * v ; 341 DB_LOCK * lock ; 342 DBTCL_INFO * lk ; 343 cmddex , su , t ; 345 `T_RetResu ( ); 346 lock = ( DB_LOCK *) Da ; 347 lk = `_PToInfo ((*) lock ); 348 su = TCL_OK ; 350 i( lock = NULL ) { 351 `T_SResu ( , "NULLock", TCL_STATIC ); 352 ( TCL_ERROR ); 354 i( lk = NULL ) { 355 `T_SResu ( , "NULLock infpor", TCL_STATIC ); 356 ( TCL_ERROR ); 359 v = `NAME_TO_ENV ( lk -> i_ -> i_me ); 363 i( objc != 2) { 364 `T_WrgNumArgs ( , 2, objv , NULL ); 365 ( TCL_ERROR ); 371 i( `T_GIndexFromObj ( , 372 objv [1], lkcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 373 ( `IS_HELP ( objv [1])); 375 ( lkcmds ) cmddex ) { 376 LKPUT : 377 `_debug_check (); 378 t = v -> `lock_put nv, lock ); 379 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 381 () `T_DeCommd ( , lk -> i_me ); 382 `_DeInfo ( lk ); 383 `__os_ ( v , lock ); 386 ( su ); 387 } } 395 $t_LockVec ( , objc , objv , vp ) 396 T_Ip * ; 397 objc ; 398 T_Obj * CONST objv []; 399 DB_ENV * vp ; 401 cڡ * lvts [] = { 403 NULL 405 elvts { 406 LVNOWAIT 408 cڡ * lks [] = { 414 NULL 416 elks { 417 LKGET , 418 LKPUT , 419 LKPUTALL , 420 LKPUTOBJ , 421 LKTIMEOUT 424 DB_LOCK * lock ; 425 DB_LOCKREQ li ; 426 DBT obj ; 427 T_Obj ** myobjv , * s , * this ; 428 * mp ; 429 u_t32_t ag , lockid ; 430 obj , i , myobjc , tdex , su , t ; 431 * lockme , msg [ MSG_SIZE ], wme [MSG_SIZE]; 433 su = TCL_OK ; 434 `memt ( wme , 0, MSG_SIZE ); 435 `memt (& li , 0, ( DB_LOCKREQ )); 436 ag = 0; 437 obj = 0; 438 mp = NULL ; 443 i( `T_GIndexFromObj ( , objv [2], 444 lvts , "ti", TCL_EXACT , & tdex = TCL_OK ) { 445 ( lvts ) tdex ) { 446 LVNOWAIT : 447 ag | DB_LOCK_NOWAIT ; 450 i = 3; 452 i( `IS_HELP ( objv [2]= TCL_OK ) 453 ( TCL_OK ); 454 `T_RetResu ( ); 455 i = 2; 461 su = `_GUI32 ( , objv [ i ++], & lockid ); 462 i( su ! TCL_OK ) 463 ( su ); 470 s = `T_NewLiObj (0, NULL ); 471 i < objc ) { 475 lock = NULL ; 476 su = `T_LiObjGEmts ( , objv [ i ], 477 & myobjc , & myobjv ); 478 i( su = TCL_OK ) 479 i ++; 488 i( `T_GIndexFromObj ( , myobjv [0], 489 lks , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 490 su = `IS_HELP ( myobjv [0]); 491 r ; 493 ( lks ) tdex ) { 494 LKGET : 495 i( myobjc != 3) { 496 `T_WrgNumArgs ( , 1, myobjv , 498 su = TCL_ERROR ; 499 r ; 501 su = `_LockMode ( , myobjv [2], & li . mode ); 502 i( su ! TCL_OK ) 503 r ; 504 t = `_CyObjBys ( , myobjv [1], & mp , 505 & obj . size , & obj ); 506 i( t != 0) { 507 su = `_RuSup ( , t , 508 `DB_RETOK_STD ( t ), "lock vec"); 509 ( su ); 511 obj . da = mp ; 512 t = `_GThisLock ( , vp , lockid , ag , 513 & obj , li . mode , wme ); 514 i( t != 0) { 515 su = `_RuSup ( , t , 516 `DB_RETOK_STD ( t ), "lock vec"); 517 this = `T_NewIObj ( t ); 518 () `T_LiObjAdEmt ( , s , 519 this ); 520 r ; 522 this = `NewSgObj ( wme , ` (newname)); 523 () `T_LiObjAdEmt ( , s , this ); 524 i( obj && mp ! NULL ) { 525 `__os_ ( vp , mp ); 526 obj = 0; 529 LKPUT : 530 i( myobjc != 2) { 531 `T_WrgNumArgs ( , 1, myobjv , 533 su = TCL_ERROR ; 534 r ; 536 li . = DB_LOCK_PUT ; 537 lockme = `T_GSgFromObj ( myobjv [1], NULL ); 538 lock = `NAME_TO_LOCK ( lockme ); 539 i( lock = NULL ) { 540 `tf ( msg , MSG_SIZE , "Invalidock: %s\n", 541 lockme ); 542 `T_SResu ( , msg , TCL_VOLATILE ); 543 su = TCL_ERROR ; 544 r ; 546 li . lock = *lock; 548 LKPUTALL : 549 i( myobjc != 1) { 550 `T_WrgNumArgs ( , 1, myobjv , 552 su = TCL_ERROR ; 553 r ; 555 li . = DB_LOCK_PUT_ALL ; 557 LKPUTOBJ : 558 i( myobjc != 2) { 559 `T_WrgNumArgs ( , 1, myobjv , 561 su = TCL_ERROR ; 562 r ; 564 li . = DB_LOCK_PUT_OBJ ; 565 t = `_CyObjBys ( , myobjv [1], & mp , 566 & obj . size , & obj ); 567 i( t != 0) { 568 su = `_RuSup ( , t , 569 `DB_RETOK_STD ( t ), "lock vec"); 570 ( su ); 572 obj . da = mp ; 573 li . obj = &obj; 575 LKTIMEOUT : 576 li . = DB_LOCK_TIMEOUT ; 584 `_debug_check (); 585 t = vp -> `lock_vec nvp, lockid , ag , & li , 1, NULL ); 590 this = `T_NewIObj ( t ); 591 su = `T_LiObjAdEmt ( , s , this ); 592 i( t !0 && su = TCL_OK ) 593 su = `_RuSup ( , t , 594 `DB_RETOK_STD ( t ), "lockut"); 595 i( obj && mp ! NULL ) { 596 `__os_ ( vp , mp ); 597 obj = 0; 604 `_LockPutInfo ( , li . , lock , lockid , & obj ); 607 i( su = TCL_OK && s ) 608 `T_SObjResu ( , s ); 609 r : 610 ( su ); 611 } } 614 $_LockMode ( , obj , mode ) 615 T_Ip * ; 616 T_Obj * obj ; 617 db_lockmode_t * mode ; 619 cڡ * lkmode [] = { 626 NULL 628 elkmode { 629 LK_NG , 630 LK_READ , 631 LK_WRITE , 632 LK_IWRITE , 633 LK_IREAD , 634 LK_IWR 636 tdex ; 638 i( `T_GIndexFromObj ( , obj , lkmode , "option", 639 TCL_EXACT , & tdex ! TCL_OK ) 640 ( `IS_HELP ( obj )); 641 ( lkmode ) tdex ) { 642 LK_NG : 643 * mode = DB_LOCK_NG ; 645 LK_READ : 646 * mode = DB_LOCK_READ ; 648 LK_WRITE : 649 * mode = DB_LOCK_WRITE ; 651 LK_IREAD : 652 * mode = DB_LOCK_IREAD ; 654 LK_IWRITE : 655 * mode = DB_LOCK_IWRITE ; 657 LK_IWR : 658 * mode = DB_LOCK_IWR ; 661 ( TCL_OK ); 662 } } 665 $_LockPutInfo ( , , lock , lockid , objp ) 666 T_Ip * ; 667 db_lock_t ; 668 DB_LOCK * lock ; 669 u_t32_t lockid ; 670 DBT * objp ; 672 DBTCL_INFO * p , * x ; 673 found ; 675 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 676 found = 0; 677 x = `LIST_NEXT ( p , s ); 678 i(( = DB_LOCK_PUT && ( p -> i_lock = lock )) || 679 ( = DB_LOCK_PUT_ALL && p -> i_lock = lockid ) || 680 ( = DB_LOCK_PUT_OBJ && p -> i_lockobj . da && 681 `memcmp ( p -> i_lockobj . da , objp ->da, objp-> size ) == 0)) 682 found = 1; 683 i( found ) { 684 () `T_DeCommd ( , p -> i_me ); 685 `__os_ ( NULL , p -> i_lock ); 686 `_DeInfo ( p ); 689 } } 692 $_GThisLock ( , vp , lockid , ag , objp , mode , wme ) 693 T_Ip * ; 694 DB_ENV * vp ; 695 u_t32_t lockid ; 696 u_t32_t ag ; 697 DBT * objp ; 698 db_lockmode_t mode ; 699 * wme ; 701 DB_LOCK * lock ; 702 DBTCL_INFO * v , * ; 703 su , t ; 705 su = TCL_OK ; 706 v = `_PToInfo ((*) vp ); 707 i( v = NULL ) { 708 `T_SResu ( , "Could fdnv info\n", TCL_STATIC ); 709 ( TCL_ERROR ); 711 `tf ( wme , MSG_SIZE , "%s.lock%d", 712 v -> i_me ,nv-> i_vlockid ); 713 = `_NewInfo ( , NULL , wme , I_LOCK ); 714 i( = NULL ) { 715 `T_SResu ( , "Couldot set up info", 716 TCL_STATIC ); 717 ( TCL_ERROR ); 719 t = `__os_mloc ( vp , ( DB_LOCK ), & lock ); 720 i( t != 0) { 721 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 722 ( TCL_ERROR ); 724 `_debug_check (); 725 t = vp -> `lock_g nvp, lockid , ag , objp , mode , lock ); 726 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lock get"); 727 i( su = TCL_ERROR ) { 728 `__os_ ( vp , lock ); 729 `_DeInfo ( ); 730 ( su ); 736 t = `__os_mloc ( vp , objp -> size , & -> i_lockobj . da ); 737 i( t != 0) { 738 `T_SResu ( , "Couldot duplicate obj", 739 TCL_STATIC ); 740 () vp -> `lock_put nvp, lock ); 741 `__os_ ( vp , lock ); 742 `_DeInfo ( ); 743 su = TCL_ERROR ; 744 r ; 746 `memy ( -> i_lockobj . da , objp ->da, objp-> size ); 747 -> i_lockobj . size = objp ->size; 748 v -> i_vlockid ++; 749 -> i_ = v ; 750 -> i_lock = lockid ; 751 `_SInfoDa ( , lock ); 752 () `T_CeObjCommd ( , wme , 753 ( T_ObjCmdProc *) lock_Cmd , ( ClDa ) lock , NULL ); 754 r : 755 ( su ); 756 } } @../tcl/tcl_log.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/log.h " 16 ~"dbc/t_db.h " 18 #ifde CONFIG_TEST 19 t_LogcG __P (( T_Ip *, , T_Obj * CONST *, DB_LOGC *)); 28 $t_LogArchive ( , objc , objv , vp ) 29 T_Ip * ; 30 objc ; 31 T_Obj * CONST objv []; 32 DB_ENV * vp ; 34 cڡ * chts [] = { 36 NULL 38 echts { 39 ARCH_ABS , ARCH_DATA , ARCH_LOG , ARCH_REMOVE 41 T_Obj * feobj , * s ; 42 u_t32_t ag ; 43 i , tdex , su , t ; 44 ** fe , ** li ; 46 su = TCL_OK ; 47 ag = 0; 52 i = 2; 53 i < objc ) { 54 i( `T_GIndexFromObj ( , objv [ i ], 55 chts , "ti", TCL_EXACT , & tdex ! TCL_OK ) 56 ( `IS_HELP ( objv [ i ])); 57 i ++; 58 ( chts ) tdex ) { 59 ARCH_ABS : 60 ag | DB_ARCH_ABS ; 62 ARCH_DATA : 63 ag | DB_ARCH_DATA ; 65 ARCH_LOG : 66 ag | DB_ARCH_LOG ; 68 ARCH_REMOVE : 69 ag | DB_ARCH_REMOVE ; 73 `_debug_check (); 74 li = NULL ; 75 t = vp -> `log_chive nvp, & li , ag ); 76 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "logrchive"); 77 i( su = TCL_OK ) { 78 s = `T_NewLiObj (0, NULL ); 79 fe = li ; f! NULL && *file != NULL; file++) { 80 feobj = `NewSgObj (* fe , ` (*file)); 81 su = `T_LiObjAdEmt ( , s , feobj ); 82 i( su ! TCL_OK ) 85 `T_SObjResu ( , s ); 87 i( li ! NULL ) 88 `__os_u ( vp , li ); 89 ( su ); 90 } } 99 $t_LogCom ( , objc , objv ) 100 T_Ip * ; 101 objc ; 102 T_Obj * CONST objv []; 104 DB_LSN l0 , l1 ; 105 T_Obj * s ; 106 su , t ; 108 su = TCL_OK ; 112 i( objc != 4) { 113 `T_WrgNumArgs ( , 2, objv , "lsn1sn2"); 114 ( TCL_ERROR ); 117 su = `_GL ( , objv [2], & l0 ); 118 i( su = TCL_ERROR ) 119 ( su ); 120 su = `_GL ( , objv [3], & l1 ); 121 i( su = TCL_ERROR ) 122 ( su ); 124 `_debug_check (); 125 t = `log_com (& l0 , & l1 ); 126 s = `T_NewIObj ( t ); 127 `T_SObjResu ( , s ); 128 ( su ); 129 } } 138 $t_LogFe ( , objc , objv , vp ) 139 T_Ip * ; 140 objc ; 141 T_Obj * CONST objv []; 142 DB_ENV * vp ; 144 DB_LSN l ; 145 T_Obj * s ; 146 size_t n ; 147 su , t ; 148 * me ; 150 su = TCL_OK ; 154 i( objc != 3) { 155 `T_WrgNumArgs ( , 2, objv , "lsn"); 156 ( TCL_ERROR ); 159 su = `_GL ( , objv [2], & l ); 160 i( su = TCL_ERROR ) 161 ( su ); 163 n = MSG_SIZE ; 164 t = ENOMEM ; 165 me = NULL ; 166 t = ENOMEM ) { 167 i( me ! NULL ) 168 `__os_ ( vp , me ); 169 t = `__os_mloc ( vp , n , & me ); 170 i( t != 0) { 171 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 174 `_debug_check (); 175 t = vp -> `log_fe nvp, & l , me , n ); 176 n *= 2; 178 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "log_file"); 179 i( t == 0) { 180 s = `NewSgObj ( me , ` (name)); 181 `T_SObjResu ( , s ); 184 i( me ! NULL ) 185 `__os_ ( vp , me ); 187 ( su ); 188 } } 197 $t_LogFlush ( , objc , objv , vp ) 198 T_Ip * ; 199 objc ; 200 T_Obj * CONST objv []; 201 DB_ENV * vp ; 203 DB_LSN l , * lp ; 204 su , t ; 206 su = TCL_OK ; 210 i( objc > 3) { 211 `T_WrgNumArgs ( , 2, objv , "?lsn?"); 212 ( TCL_ERROR ); 215 i( objc == 3) { 216 lp = & l ; 217 su = `_GL ( , objv [2], & l ); 218 i( su = TCL_ERROR ) 219 ( su ); 221 lp = NULL ; 223 `_debug_check (); 224 t = vp -> `log_ush nvp, lp ); 225 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "log_flush"); 226 ( su ); 227 } } 236 $t_LogG ( , objc , objv , vp ) 237 T_Ip * ; 238 objc ; 239 T_Obj * CONST objv []; 240 DB_ENV * vp ; 243 `COMPQUIET ( objv , NULL ); 244 `COMPQUIET ( objc , 0); 245 `COMPQUIET ( vp , NULL ); 247 `T_SResu ( , "FAIL:og_g dd\n", TCL_STATIC ); 248 ( TCL_ERROR ); 249 } } 258 $t_LogPut ( , objc , objv , vp ) 259 T_Ip * ; 260 objc ; 261 T_Obj * CONST objv []; 262 DB_ENV * vp ; 264 cڡ * logputts [] = { 266 NULL 268 elogputts { 269 LOGPUT_FLUSH 271 DB_LSN l ; 272 DBT da ; 273 T_Obj * tobj , * s ; 274 * dtmp ; 275 u_t32_t ag ; 276 da , tdex , su , t ; 278 su = TCL_OK ; 279 ag = 0; 280 da = 0; 281 i( objc < 3) { 282 `T_WrgNumArgs ( , 2, objv , "?-args?ecord"); 283 ( TCL_ERROR ); 289 `memt (& da , 0, (data)); 290 t = `_CyObjBys ( , objv [ objc -1], & dtmp , 291 & da . size , & da ); 292 i( t != 0) { 293 su = `_RuSup ( , t , 294 `DB_RETOK_STD ( t ), "logut"); 295 ( su ); 297 da .d dtmp ; 303 i( objc == 4) { 304 i( `T_GIndexFromObj ( , objv [2], 305 logputts , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 306 ( `IS_HELP ( objv [2])); 308 ( logputts ) tdex ) { 309 LOGPUT_FLUSH : 310 ag = DB_FLUSH ; 315 i( su = TCL_ERROR ) 316 ( su ); 318 `_debug_check (); 319 t = vp -> `log_put nvp, & l , & da , ag ); 320 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "log_put"); 321 i( su = TCL_ERROR ) 322 ( su ); 323 s = `T_NewLiObj (0, NULL ); 324 tobj = `T_NewWideIObj (( T_WideI ) l . fe ); 325 su = `T_LiObjAdEmt ( , s , tobj ); 326 tobj = `T_NewWideIObj (( T_WideI ) l . offt ); 327 su = `T_LiObjAdEmt ( , s , tobj ); 328 `T_SObjResu ( , s ); 329 i( da ) 330 `__os_ ( NULL , dtmp ); 331 ( su ); 332 } } 340 $t_LogSt ( , objc , objv , vp ) 341 T_Ip * ; 342 objc ; 343 T_Obj * CONST objv []; 344 DB_ENV * vp ; 346 DB_LOG_STAT * ; 347 T_Obj * s ; 348 su , t ; 350 su = TCL_OK ; 354 i( objc != 2) { 355 `T_WrgNumArgs ( , 2, objv , NULL ); 356 ( TCL_ERROR ); 358 `_debug_check (); 359 t = vp -> `log_ nvp, & , 0); 360 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "log stat"); 361 i( su = TCL_ERROR ) 362 ( su ); 368 s = `T_NewObj (); 372 #ifde HAVE_STATISTICS 373 `MAKE_STAT_LIST ("Magic", -> _magic ); 374 `MAKE_STAT_LIST ("Log fVsi", -> _vsi ); 375 `MAKE_STAT_LIST ("Regi size", -> _gsize ); 376 `MAKE_STAT_LIST ("Log fmode", -> _mode ); 377 `MAKE_STAT_LIST ("Logecd cachsize", -> _lg_bsize ); 378 `MAKE_STAT_LIST ("Culog fsize", -> _lg_size ); 379 `MAKE_STAT_LIST ("Log fcdwrn", -> _cd ); 380 `MAKE_STAT_LIST ("Mbywrn", -> _w_mbys ); 381 `MAKE_STAT_LIST ("Bywr(ov Mb)", -> _w_bys ); 382 `MAKE_STAT_LIST ("Mbywrs checkpot", -> _wc_mbys ); 383 `MAKE_STAT_LIST ("Bytes written (over Mb) since checkpoint", 384 -> _wc_bys ); 385 `MAKE_STAT_LIST ("Timelog wrn", -> _wcou ); 386 `MAKE_STAT_LIST ("Timesog written because cache filled up", 387 -> _wcou_fl ); 388 `MAKE_STAT_LIST ("Timelogd from disk", -> _rcou ); 389 `MAKE_STAT_LIST ("Timelog flusheddisk", -> _scou ); 390 `MAKE_STAT_LIST ("Culog fnumb", -> _cur_fe ); 391 `MAKE_STAT_LIST ("Culog fofft", -> _cur_offt ); 392 `MAKE_STAT_LIST ("On-diskog fnumb", -> _disk_fe ); 393 `MAKE_STAT_LIST ("On-diskog fofft", -> _disk_offt ); 394 `MAKE_STAT_LIST ("Max commog flush", -> _maxcommrush ); 395 `MAKE_STAT_LIST ("M commog flush", -> _mcommrush ); 396 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 397 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 399 `T_SObjResu ( , s ); 400 r : 401 `__os_u ( vp , ); 402 ( su ); 403 } } 412 $logc_Cmd ( Da , , objc , objv ) 413 ClDa Da ; 414 T_Ip * ; 415 objc ; 416 T_Obj * CONST objv []; 418 cڡ * logccmds [] = { 422 NULL 424 elogccmds { 425 LOGCCLOSE , 426 LOGCGET , 427 LOGCVERSION 429 DB_LOGC * logc ; 430 DBTCL_INFO * logc ; 431 T_Obj * s ; 432 u_t32_t vsi ; 433 cmddex , su , t ; 435 `T_RetResu ( ); 436 logc = ( DB_LOGC *) Da ; 437 logc = `_PToInfo ((*) logc ); 438 su = TCL_OK ; 440 i( objc <= 1) { 441 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 442 ( TCL_ERROR ); 444 i( logc = NULL ) { 445 `T_SResu ( , "NULLogpor", TCL_STATIC ); 446 ( TCL_ERROR ); 448 i( logc = NULL ) { 449 `T_SResu ( , "NULLogfpor", TCL_STATIC ); 450 ( TCL_ERROR ); 457 i( `T_GIndexFromObj ( , objv [1], logccmds , "command", 458 TCL_EXACT , & cmddex ! TCL_OK ) 459 ( `IS_HELP ( objv [1])); 460 ( logccmds ) cmddex ) { 461 LOGCCLOSE : 465 i( objc > 2) { 466 `T_WrgNumArgs ( , 2, objv , NULL ); 467 ( TCL_ERROR ); 469 `_debug_check (); 470 t = logc -> `o (logc, 0); 471 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 473 i( su = TCL_OK ) { 474 () `T_DeCommd ( , logc -> i_me ); 475 `_DeInfo ( logc ); 478 LOGCGET : 479 su = `t_LogcG ( , objc , objv , logc ); 481 LOGCVERSION : 485 i( objc > 2) { 486 `T_WrgNumArgs ( , 2, objv , NULL ); 487 ( TCL_ERROR ); 489 `_debug_check (); 490 t = logc -> `vsi ogc, & vsi , 0); 491 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 492 "logvsi")= TCL_OK ) { 493 s = `T_NewIObj (() vsi ); 494 `T_SObjResu ( , s ); 499 ( su ); 500 } } 503 $t_LogcG ( , objc , objv , logc ) 504 T_Ip * ; 505 objc ; 506 T_Obj * CONST * objv ; 507 DB_LOGC * logc ; 509 cڡ * logcgts [] = { 516 NULL 518 elogcgts { 519 LOGCGET_CURRENT , 520 LOGCGET_FIRST , 521 LOGCGET_LAST , 522 LOGCGET_NEXT , 523 LOGCGET_PREV , 524 LOGCGET_SET 526 DB_LSN l ; 527 DBT da ; 528 T_Obj * daobj , * lli , * myobjv [2], * s ; 529 u_t32_t ag ; 530 i , myobjc , tdex , su , t ; 532 su = TCL_OK ; 533 s = NULL ; 534 ag = 0; 536 i( objc < 3) { 537 `T_WrgNumArgs ( , 2, objv , "?-args?sn"); 538 ( TCL_ERROR ); 545 i = 2; 546 i < objc ) { 547 i( `T_GIndexFromObj ( , objv [ i ], 548 logcgts , "ti", TCL_EXACT , & tdex ! TCL_OK ) 549 ( `IS_HELP ( objv [ i ])); 550 i ++; 551 ( logcgts ) tdex ) { 552 LOGCGET_CURRENT : 553 `FLAG_CHECK ( ag ); 554 ag | DB_CURRENT ; 556 LOGCGET_FIRST : 557 `FLAG_CHECK ( ag ); 558 ag | DB_FIRST ; 560 LOGCGET_LAST : 561 `FLAG_CHECK ( ag ); 562 ag | DB_LAST ; 564 LOGCGET_NEXT : 565 `FLAG_CHECK ( ag ); 566 ag | DB_NEXT ; 568 LOGCGET_PREV : 569 `FLAG_CHECK ( ag ); 570 ag | DB_PREV ; 572 LOGCGET_SET : 573 `FLAG_CHECK ( ag ); 574 ag | DB_SET ; 575 i( i = objc ) { 576 `T_WrgNumArgs ( , 2, objv , "?-setsn?"); 577 su = TCL_ERROR ; 580 su = `_GL ( , objv [ i ++], & l ); 585 i( su = TCL_ERROR ) 586 ( su ); 588 `memt (& da , 0, (data)); 590 `_debug_check (); 591 t = logc -> `g ogc, & l , & da , ag ); 593 s = `T_NewLiObj (0, NULL ); 594 i( s = NULL ) 595 memr ; 597 i( t == 0) { 602 myobjc = 2; 603 myobjv [0] = `T_NewWideIObj (( T_WideI ) l . fe ); 604 myobjv [1] = `T_NewWideIObj (( T_WideI ) l . offt ); 605 lli = `T_NewLiObj ( myobjc , myobjv ); 606 i( lli = NULL ) 607 memr ; 609 su = `T_LiObjAdEmt ( , s , lli ); 610 daobj = `NewSgObj ( da .da, da. size ); 611 i( daobj = NULL ) { 612 memr ; 614 su = `T_LiObjAdEmt ( , s , daobj ); 616 su = `_RuSup ( , t , `DB_RETOK_LGGET (ret), 619 `T_SObjResu ( , s ); 622 memr : i( s ! NULL ) 623 `T_DeRefCou ( s ); 624 `T_SResu ( , "loti faed", TCL_STATIC ); 627 ( su ); 628 } } @../tcl/tcl_mp.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 20 #ifde CONFIG_TEST 21 mp_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 22 pg_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 23 t_MpG __P (( T_Ip *, , T_Obj * CONST *, 24 DB_MPOOLFILE *, DBTCL_INFO *)); 25 t_Pg __P (( T_Ip *, , T_Obj * CONST *, 26 *, DB_MPOOLFILE *, DBTCL_INFO *)); 27 t_PgIn __P (( T_Ip *, , T_Obj * CONST *, 28 *, DBTCL_INFO *)); 29 t_PgIst __P (( T_Ip *, , T_Obj * CONST *, 30 *, DBTCL_INFO *)); 41 $_MpInfoDe ( , mp ) 42 T_Ip * ; 43 DBTCL_INFO * mp ; 45 DBTCL_INFO * x , * p ; 47 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 52 x = `LIST_NEXT ( p , s ); 53 i( p -> i_ = mp &&-> i_ty = I_PG ) { 54 () `T_DeCommd ( , p -> i_me ); 55 `_DeInfo ( p ); 58 } } 60 #ifde CONFIG_TEST 67 $t_MpSync ( , objc , objv , vp ) 68 T_Ip * ; 69 objc ; 70 T_Obj * CONST objv []; 71 DB_ENV * vp ; 74 DB_LSN l , * lp ; 75 su , t ; 77 su = TCL_OK ; 78 lp = NULL ; 82 i( objc == 3) { 83 su = `_GL ( , objv [2], & l ); 84 i( su = TCL_ERROR ) 85 ( su ); 86 lp = & l ; 88 i( objc != 2) { 89 `T_WrgNumArgs ( , 2, objv , "lsn"); 90 ( TCL_ERROR ); 93 `_debug_check (); 94 t = vp -> `memp_sync nvp, lp ); 95 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "memp sync")); 96 } } 105 $t_MpTrick ( , objc , objv , vp ) 106 T_Ip * ; 107 objc ; 108 T_Obj * CONST objv []; 109 DB_ENV * vp ; 112 T_Obj * s ; 113 ges , r , su , t ; 115 su = TCL_OK ; 119 i( objc != 3) { 120 `T_WrgNumArgs ( , 2, objv , "percent"); 121 ( TCL_ERROR ); 124 su = `T_GIFromObj ( , objv [2], & r ); 125 i( su = TCL_ERROR ) 126 ( su ); 128 `_debug_check (); 129 t = vp -> `memp_ick nvp, r , & ges ); 130 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "memprickle"); 131 i( su = TCL_ERROR ) 132 ( su ); 134 s = `T_NewIObj ( ges ); 135 `T_SObjResu ( , s ); 136 ( su ); 138 } } 147 $t_Mp ( , objc , objv , vp , v ) 148 T_Ip * ; 149 objc ; 150 T_Obj * CONST objv []; 151 DB_ENV * vp ; 152 DBTCL_INFO * v ; 154 cڡ * mpts [] = { 161 NULL 163 empts { 164 MPCREATE , 165 MPMODE , 166 MPMULTIVERSION , 167 MPNOMMAP , 168 MPPAGE , 169 MPRDONLY 171 DBTCL_INFO * ; 172 DB_MPOOLFILE * mpf ; 173 T_Obj * s ; 174 u_t32_t ag ; 175 i , pgsize , mode , tdex , su , t ; 176 * fe , wme [ MSG_SIZE ]; 178 su = TCL_OK ; 179 i = 2; 180 ag = 0; 181 mode = 0; 182 pgsize = 0; 183 `memt ( wme , 0, MSG_SIZE ); 184 i < objc ) { 185 i( `T_GIndexFromObj ( , objv [ i ], 186 mpts , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 192 i( `IS_HELP ( objv [ i ]= TCL_OK ) 193 ( TCL_OK ); 194 `T_RetResu ( ); 197 i ++; 198 ( mpts ) tdex ) { 199 MPCREATE : 200 ag | DB_CREATE ; 202 MPMODE : 203 i( i > objc ) { 204 `T_WrgNumArgs ( , 2, objv , 206 su = TCL_ERROR ; 215 su = `T_GIFromObj ( , objv [ i ++], & mode ); 217 MPMULTIVERSION : 218 ag | DB_MULTIVERSION ; 220 MPNOMMAP : 221 ag | DB_NOMMAP ; 223 MPPAGE : 224 i( i > objc ) { 225 `T_WrgNumArgs ( , 2, objv , 227 su = TCL_ERROR ; 236 su = `T_GIFromObj ( , objv [ i ++], & pgsize ); 238 MPRDONLY : 239 ag | DB_RDONLY ; 242 i( su ! TCL_OK ) 243 r ; 248 fe = NULL ; 249 i( i ! objc ) { 250 i( i ! objc - 1) { 251 `T_WrgNumArgs ( , 2, objv , "?args? ?file?"); 252 su = TCL_ERROR ; 253 r ; 255 fe = `T_GSgFromObj ( objv [ i ++], NULL ); 258 `tf ( wme , (newname), "%s.mp%d", 259 v -> i_me ,nv-> i_vmpid ); 260 = `_NewInfo ( , NULL , wme , I_MP ); 261 i( = NULL ) { 262 `T_SResu ( , "Couldot set up info", 263 TCL_STATIC ); 264 ( TCL_ERROR ); 267 `_debug_check (); 268 i(( t = vp -> `memp_f nvp, & mpf , 0)) != 0) { 269 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "mpool"); 270 `_DeInfo ( ); 271 r ; 278 i(( t = mpf -> `ݒ (mpf, fe , ag , mode , ( size_t ) pgsize )) != 0) { 279 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "mpool"); 280 `_DeInfo ( ); 282 () mpf -> `o (mpf, 0); 283 r ; 290 v -> i_vmpid ++; 291 -> i_ = v ; 292 -> i_pgsz = pgsize ; 293 `_SInfoDa ( , mpf ); 294 () `T_CeObjCommd ( , wme , 295 ( T_ObjCmdProc *) mp_Cmd , ( ClDa ) mpf , NULL ); 296 s = `NewSgObj ( wme , ` (newname)); 297 `T_SObjResu ( , s ); 299 r : 300 ( su ); 301 } } 309 $t_MpSt ( , objc , objv , vp ) 310 T_Ip * ; 311 objc ; 312 T_Obj * CONST objv []; 313 DB_ENV * vp ; 315 DB_MPOOL_STAT * ; 316 DB_MPOOL_FSTAT ** f , ** vef ; 317 su ; 318 t ; 319 T_Obj * s ; 320 T_Obj * s1 ; 322 su = TCL_OK ; 323 vef = NULL ; 327 i( objc != 2) { 328 `T_WrgNumArgs ( , 2, objv , NULL ); 329 ( TCL_ERROR ); 331 `_debug_check (); 332 t = vp -> `memp_ nvp, & , & f , 0); 333 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "memp stat"); 334 i( su = TCL_ERROR ) 335 ( su ); 341 s = `T_NewObj (); 342 #ifde HAVE_STATISTICS 346 `MAKE_STAT_LIST ("Cachsiz(gbys)", -> _gbys ); 347 `MAKE_STAT_LIST ("Cachsiz(bys)", -> _bys ); 348 `MAKE_STAT_LIST ("Numb oches", -> _nche ); 349 `MAKE_STAT_LIST ("Maximumumb oches", -> _max_nche ); 350 `MAKE_STAT_LIST ("Regi size", -> _gsize ); 351 `MAKE_STAT_LIST ("Maximum memy-md fsize", -> _mmsize ); 352 `MAKE_STAT_LIST ("Maximum ofdests", -> _maxݒfd ); 353 `MAKE_STAT_LIST ("Maximum sequtbufwres", -> _maxwre ); 354 `MAKE_STAT_LIST ( 355 "S˕ wrg maximum bufrs", -> _maxwre_p ); 356 `MAKE_STAT_LIST ("Pagemd iaddsa", -> _m ); 357 `MAKE_STAT_LIST ("Cachhs", -> _che_h ); 358 `MAKE_STAT_LIST ("Cachmiss", -> _che_miss ); 359 `MAKE_STAT_LIST ("Paged", -> _ge_ ); 360 `MAKE_STAT_LIST ("Pagead in", -> _ge_ ); 361 `MAKE_STAT_LIST ("Pagewrn", -> _ge_out ); 362 `MAKE_STAT_LIST ("C˪ageviis", -> _ro_evi ); 363 `MAKE_STAT_LIST ("Dtyageviis", -> _rw_evi ); 364 `MAKE_STAT_LIST ("Dtyageickd", -> _ge_ick ); 365 `MAKE_STAT_LIST ("Cachedages", -> _ges ); 366 `MAKE_STAT_LIST ("Cached c˪ages", -> _ge_n ); 367 `MAKE_STAT_LIST ("Cached dtyages", -> _ge_dty ); 368 `MAKE_STAT_LIST ("Hash bucks", -> _hash_bucks ); 369 `MAKE_STAT_LIST ("Hashookups", -> _hash_ches ); 370 `MAKE_STAT_LIST ("Lge hash cha found", -> _hash_lge ); 371 `MAKE_STAT_LIST ("Hashmtexamed", -> _hash_examed ); 372 `MAKE_STAT_LIST ("Numb ohash buckowas", -> _hash_nowa ); 373 `MAKE_STAT_LIST ("Numb ohash buck was", -> _hash_wa ); 374 `MAKE_STAT_LIST ("Maximumumber of hash bucket waits", 375 -> _hash_max_wa ); 376 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 377 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 378 `MAKE_STAT_LIST ("Bufroz", -> _mvcc_oz ); 379 `MAKE_STAT_LIST ("Bufrthawed", -> _mvcc_thawed ); 380 `MAKE_STAT_LIST ("Froz bufrd", -> _mvcc_d ); 381 `MAKE_STAT_LIST ("Paglotis", -> _loc ); 382 `MAKE_STAT_LIST ("Bucketsxamined duringllocation", 383 -> _loc_bucks ); 384 `MAKE_STAT_LIST ("Maximum bucketsxamined duringllocation", 385 -> _loc_max_bucks ); 386 `MAKE_STAT_LIST ("Pageexamed durgoti", -> _loc_ges ); 387 `MAKE_STAT_LIST ("Maximumagesxamined duringllocation", 388 -> _loc_max_ges ); 389 `MAKE_STAT_LIST ("Thadwag obufI/O", -> _io_wa ); 396 s1 = s ; 397 vef = f ; f ! NULL && *fsp != NULL; fsp++) { 398 s = `T_NewObj (); 399 su = `_SLiEm ( , s , "File Name", 400 ` ("FName"), (* f )-> fe_me , 401 ` ((* f )-> fe_me )); 402 i( su ! TCL_OK ) 403 r ; 404 `MAKE_STAT_LIST ("Pagsize", (* f )-> _gesize ); 405 `MAKE_STAT_LIST ("Pages mapped intoddress space", 406 (* f )-> _m ); 407 `MAKE_STAT_LIST ("Cachhs", (* f )-> _che_h ); 408 `MAKE_STAT_LIST ("Cachmiss", (* f )-> _che_miss ); 409 `MAKE_STAT_LIST ("Paged", (* f )-> _ge_ ); 410 `MAKE_STAT_LIST ("Pagead in", (* f )-> _ge_ ); 411 `MAKE_STAT_LIST ("Pagewrn", (* f )-> _ge_out ); 416 su = `T_LiObjAdEmt ( , s1 , s ); 417 i( su ! TCL_OK ) 418 r ; 421 `T_SObjResu ( , s1 ); 422 r : 423 `__os_u ( vp , ); 424 i( vef ! NULL ) 425 `__os_u ( vp , vef ); 426 ( su ); 427 } } 434 $mp_Cmd ( Da , , objc , objv ) 435 ClDa Da ; 436 T_Ip * ; 437 objc ; 438 T_Obj * CONST objv []; 440 cڡ * mpcmds [] = { 449 NULL 451 empcmds { 452 MPCLOSE , 453 MPFSYNC , 454 MPGET , 455 MPGETCLEARLEN , 456 MPGETFILEID , 457 MPGETFTYPE , 458 MPGETLSNOFFSET , 459 MPGETPGCOOKIE 461 DB_MPOOLFILE * mp ; 462 cmddex , y , ngth , su , t ; 463 DBTCL_INFO * mp ; 464 T_Obj * s ; 465 * obj_me ; 466 u_t32_t vue ; 467 t32_t tv ; 468 u_t8_t feid [ DB_FILE_ID_LEN ]; 469 DBT cook ; 471 `T_RetResu ( ); 472 mp = ( DB_MPOOLFILE *) Da ; 473 obj_me = `T_GSgFromObj ( objv [0], & ngth ); 474 mp = `_NameToInfo ( obj_me ); 475 su = TCL_OK ; 477 i( mp = NULL ) { 478 `T_SResu ( , "NULL mpor", TCL_STATIC ); 479 ( TCL_ERROR ); 481 i( mp = NULL ) { 482 `T_SResu ( , "NULL mfpor", TCL_STATIC ); 483 ( TCL_ERROR ); 490 i( `T_GIndexFromObj ( , 491 objv [1], mpcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 492 ( `IS_HELP ( objv [1])); 494 s = NULL ; 495 ( mpcmds ) cmddex ) { 496 MPCLOSE : 497 i( objc != 2) { 498 `T_WrgNumArgs ( , 1, objv , NULL ); 499 ( TCL_ERROR ); 501 `_debug_check (); 502 t = mp -> `o (mp, 0); 503 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 505 `_MpInfoDe ( , mp ); 506 () `T_DeCommd ( , mp -> i_me ); 507 `_DeInfo ( mp ); 509 MPFSYNC : 510 i( objc != 2) { 511 `T_WrgNumArgs ( , 1, objv , NULL ); 512 ( TCL_ERROR ); 514 `_debug_check (); 515 t = mp -> `sync (mp); 516 s = `T_NewIObj ( t ); 518 MPGET : 519 su = `t_MpG ( , objc , objv , mp , mp ); 521 MPGETCLEARLEN : 522 i( objc != 2) { 523 `T_WrgNumArgs ( , 1, objv , NULL ); 524 ( TCL_ERROR ); 526 t = mp -> `g_r_n (mp, & vue ); 527 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 528 "mg_r_n")= TCL_OK ) 529 s = `T_NewIObj (() vue ); 531 MPGETFILEID : 532 i( objc != 2) { 533 `T_WrgNumArgs ( , 1, objv , NULL ); 534 ( TCL_ERROR ); 536 t = mp -> `g_feid (mp, feid ); 537 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 538 "mg_feid")= TCL_OK ) 539 s = `NewSgObj ((*) feid , DB_FILE_ID_LEN ); 541 MPGETFTYPE : 542 i( objc != 2) { 543 `T_WrgNumArgs ( , 1, objv , NULL ); 544 ( TCL_ERROR ); 546 t = mp -> `g_y (mp, & y ); 547 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 548 "mg_y")= TCL_OK ) 549 s = `T_NewIObj ( y ); 551 MPGETLSNOFFSET : 552 i( objc != 2) { 553 `T_WrgNumArgs ( , 1, objv , NULL ); 554 ( TCL_ERROR ); 556 t = mp -> `g_l_offt (mp, & tv ); 557 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 558 "mg_l_offt")= TCL_OK ) 559 s = `T_NewIObj ( tv ); 561 MPGETPGCOOKIE : 562 i( objc != 2) { 563 `T_WrgNumArgs ( , 1, objv , NULL ); 564 ( TCL_ERROR ); 566 `memt (& cook , 0, ( DBT )); 567 t = mp -> `g_pgcook (mp, & cook ); 568 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 569 "mg_pgcook")= TCL_OK ) 570 s = `T_NewByAayObj (( u_ch *) cook . da , 571 () cook . size ); 578 i( su = TCL_OK && s ) 579 `T_SObjResu ( , s ); 580 ( su ); 581 } } 587 $t_MpG ( , objc , objv , mp , mp ) 588 T_Ip * ; 589 objc ; 590 T_Obj * CONST objv []; 591 DB_MPOOLFILE * mp ; 592 DBTCL_INFO * mp ; 594 cڡ * mpg [] = { 600 NULL 602 empg { 603 MPGET_CREATE , 604 MPGET_DIRTY , 605 MPGET_LAST , 606 MPGET_NEW , 607 MPGET_TXN 610 DBTCL_INFO * ; 611 T_Obj * s ; 612 DB_TXN * txn ; 613 db_pgno_t pgno ; 614 u_t32_t ag ; 615 i , gno , tdex , su , t ; 616 * g , msg [ MSG_SIZE ], wme [MSG_SIZE]; 617 * ge ; 619 txn = NULL ; 620 su = TCL_OK ; 621 `memt ( wme , 0, MSG_SIZE ); 622 i = 2; 623 ag = 0; 624 i < objc ) { 625 i( `T_GIndexFromObj ( , objv [ i ], 626 mpg , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 632 i( `IS_HELP ( objv [ i ]= TCL_OK ) 633 ( TCL_OK ); 634 `T_RetResu ( ); 637 i ++; 638 ( mpg ) tdex ) { 639 MPGET_CREATE : 640 ag | DB_MPOOL_CREATE ; 642 MPGET_DIRTY : 643 ag | DB_MPOOL_DIRTY ; 645 MPGET_LAST : 646 ag | DB_MPOOL_LAST ; 648 MPGET_NEW : 649 ag | DB_MPOOL_NEW ; 651 MPGET_TXN : 652 i( i = objc ) { 653 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 654 su = TCL_ERROR ; 657 g = `T_GSgFromObj ( objv [ i ++], NULL ); 658 txn = `NAME_TO_TXN ( g ); 659 i( txn = NULL ) { 660 `tf ( msg , MSG_SIZE , 661 "mpo g: Invidxn: %s\n", g ); 662 `T_SResu ( , msg , TCL_VOLATILE ); 663 su = TCL_ERROR ; 667 i( su ! TCL_OK ) 668 r ; 673 gno = 0; 674 i( i ! objc ) { 675 i( i ! objc - 1) { 676 `T_WrgNumArgs ( , 2, objv , "?args? ?pgno?"); 677 su = TCL_ERROR ; 678 r ; 680 su = `T_GIFromObj ( , objv [ i ++], & gno ); 681 i( su ! TCL_OK ) 682 r ; 685 `tf ( wme , (newname), "%s.pg%d", 686 mp -> i_me , mp-> i_mgid ); 687 = `_NewInfo ( , NULL , wme , I_PG ); 688 i( = NULL ) { 689 `T_SResu ( , "Couldot set up info", 690 TCL_STATIC ); 691 ( TCL_ERROR ); 693 `_debug_check (); 694 pgno = ( db_pgno_t ) gno ; 695 t = mp -> `g (mp, & pgno , NULL , ag , & ge ); 696 su = `_RuSup ( , t , `DB_RETOK_MPGET (ret), "mpool get"); 697 i( su = TCL_ERROR ) 698 `_DeInfo ( ); 704 mp -> i_mgid ++; 705 -> i_ = mp ; 706 -> i_pgno = pgno ; 707 -> i_pgsz = mp ->i_pgsz; 708 `_SInfoDa ( , ge ); 709 () `T_CeObjCommd ( , wme , 710 ( T_ObjCmdProc *) pg_Cmd , ( ClDa ) ge , NULL ); 711 s = `NewSgObj ( wme , ` (newname)); 712 `T_SObjResu ( , s ); 714 r : 715 ( su ); 716 } } 723 $pg_Cmd ( Da , , objc , objv ) 724 ClDa Da ; 725 T_Ip * ; 726 objc ; 727 T_Obj * CONST objv []; 729 cڡ * pgcmds [] = { 735 NULL 737 epgcmds { 738 PGINIT , 739 PGISSET , 740 PGNUM , 741 PGSIZE , 742 PGPUT 744 DB_MPOOLFILE * mp ; 745 cmddex , ngth , su ; 746 * obj_me ; 747 * ge ; 748 DBTCL_INFO * pg ; 749 T_Obj * s ; 751 `T_RetResu ( ); 752 ge = (*) Da ; 753 obj_me = `T_GSgFromObj ( objv [0], & ngth ); 754 pg = `_NameToInfo ( obj_me ); 755 mp = `NAME_TO_MP ( pg -> i_ -> i_me ); 756 su = TCL_OK ; 758 i( ge = NULL ) { 759 `T_SResu ( , "NULLagpor", TCL_STATIC ); 760 ( TCL_ERROR ); 762 i( mp = NULL ) { 763 `T_SResu ( , "NULL mpor", TCL_STATIC ); 764 ( TCL_ERROR ); 766 i( pg = NULL ) { 767 `T_SResu ( , "NULLagfpor", TCL_STATIC ); 768 ( TCL_ERROR ); 775 i( `T_GIndexFromObj ( , 776 objv [1], pgcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 777 ( `IS_HELP ( objv [1])); 779 s = NULL ; 780 ( pgcmds ) cmddex ) { 781 PGNUM : 782 s = `T_NewWideIObj (( T_WideI ) pg -> i_pgno ); 784 PGSIZE : 785 s = `T_NewWideIObj (( T_WideI ) pg -> i_pgsz ); 787 PGPUT : 788 su = `t_Pg ( , objc , objv , ge , mp , pg ); 790 PGINIT : 791 su = `t_PgIn ( , objc , objv , ge , pg ); 793 PGISSET : 794 su = `t_PgIst ( , objc , objv , ge , pg ); 802 i( su = TCL_OK && s ! NULL ) 803 `T_SObjResu ( , s ); 804 ( su ); 805 } } 808 $t_Pg ( , objc , objv , ge , mp , pg ) 809 T_Ip * ; 810 objc ; 811 T_Obj * CONST objv []; 812 * ge ; 813 DB_MPOOLFILE * mp ; 814 DBTCL_INFO * pg ; 816 cڡ * pgt [] = { 818 NULL 820 epgt { 821 PGDISCARD 823 u_t32_t ag ; 824 i , tdex , su , t ; 826 su = TCL_OK ; 827 i = 2; 828 ag = 0; 829 i < objc ) { 830 i( `T_GIndexFromObj ( , objv [ i ], 831 pgt , "ti", TCL_EXACT , & tdex ! TCL_OK ) 832 ( `IS_HELP ( objv [ i ])); 833 i ++; 834 ( pgt ) tdex ) { 835 PGDISCARD : 836 ag | DB_MPOOL_DISCARD ; 841 `_debug_check (); 842 t = mp -> `put (mp, ge , DB_PRIORITY_UNCHANGED , ag ); 844 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "page"); 846 () `T_DeCommd ( , pg -> i_me ); 847 `_DeInfo ( pg ); 848 ( su ); 849 } } 852 $t_PgIn ( , objc , objv , ge , pg ) 853 T_Ip * ; 854 objc ; 855 T_Obj * CONST objv []; 856 * ge ; 857 DBTCL_INFO * pg ; 859 T_Obj * s ; 860 * p , * dp , wv ; 861 ngth , pgsz , su ; 862 u_ch * s ; 864 su = TCL_OK ; 865 i( objc != 3) { 866 `T_WrgNumArgs ( , 2, objv , "val"); 867 ( TCL_ERROR ); 870 pgsz = pg -> i_pgsz ; 871 su = `T_GLgFromObj ( , objv [2], & wv ); 872 i( su ! TCL_OK ) { 873 s = `T_GByAayFromObj ( objv [2], & ngth ); 874 i( s = NULL ) 875 ( TCL_ERROR ); 876 `memy ( ge , s , ( size_t )(( ngth < pgsz ) ?ength :gsz)); 877 su = TCL_OK ; 879 p = (*) ge ; 880 dp = p + (( u_t ) pgsz / ()); <ndp;++) 881 * p = wv ; 883 s = `T_NewIObj (0); 884 `T_SObjResu ( , s ); 885 ( su ); 886 } } 889 $t_PgIst ( , objc , objv , ge , pg ) 890 T_Ip * ; 891 objc ; 892 T_Obj * CONST objv []; 893 * ge ; 894 DBTCL_INFO * pg ; 896 T_Obj * s ; 897 * p , * dp , wv ; 898 ngth , pgsz , su ; 899 u_ch * s ; 901 su = TCL_OK ; 902 i( objc != 3) { 903 `T_WrgNumArgs ( , 2, objv , "val"); 904 ( TCL_ERROR ); 907 pgsz = pg -> i_pgsz ; 908 su = `T_GLgFromObj ( , objv [2], & wv ); 909 i( su ! TCL_OK ) { 910 i(( s = `T_GByAayFromObj ( objv [2], & ngth )= NULL ) 911 ( TCL_ERROR ); 912 su = TCL_OK ; 914 i( `memcmp ( ge , s , 915 ( size_t )(( ngth < pgsz ) ?ength :gsz)) != 0) { 916 s = `T_NewIObj (0); 917 `T_SObjResu ( , s ); 918 ( su ); 921 p = (*) ge ; 927 dp = p + (( u_t ) pgsz / ()); <ndp;++) 928 i(* p ! wv ) { 929 s = `T_NewIObj (0); 930 `T_SObjResu ( , s ); 931 ( su ); 935 s = `T_NewIObj (1); 936 `T_SObjResu ( , s ); 937 ( su ); 938 } } @../tcl/tcl_rep.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 17 #ifde CONFIG_TEST 26 $t_RCfig ( , dbv , li ) 27 T_Ip * ; 28 DB_ENV * dbv ; 29 T_Obj * li ; 31 cڡ * cfwhich [] = { 36 NULL 38 ecfwhich { 39 REPCONF_BULK , 40 REPCONF_DELAYCLIENT , 41 REPCONF_NOAUTOINIT , 42 REPCONF_NOWAIT 44 cڡ * cfoff [] = { 47 NULL 49 ecfoff { 50 REPCONF_OFF , 51 REPCONF_ON 53 T_Obj ** myobjv , * off , * which ; 54 myobjc , , tdex , su , t ; 55 u_t32_t wh ; 57 su = `T_LiObjGEmts ( , li , & myobjc , & myobjv ); 58 which = myobjv [0]; 59 off = myobjv [1]; 60 i( su ! TCL_OK ) 61 ( su ); 62 i( `T_GIndexFromObj ( , which , cfwhich , "option", 63 TCL_EXACT , & tdex ! TCL_OK ) 64 ( `IS_HELP ( which )); 66 ( cfwhich ) tdex ) { 67 REPCONF_NOAUTOINIT : 68 wh = DB_REP_CONF_NOAUTOINIT ; 70 REPCONF_BULK : 71 wh = DB_REP_CONF_BULK ; 73 REPCONF_DELAYCLIENT : 74 wh = DB_REP_CONF_DELAYCLIENT ; 76 REPCONF_NOWAIT : 77 wh = DB_REP_CONF_NOWAIT ; 80 ( TCL_ERROR ); 82 i( `T_GIndexFromObj ( , off , cfoff , "option", 83 TCL_EXACT , & tdex ! TCL_OK ) 84 ( `IS_HELP ( off )); 85 ( cfoff ) tdex ) { 86 REPCONF_OFF : 87 = 0; 89 REPCONF_ON : 90 = 1; 93 ( TCL_ERROR ); 95 t = dbv -> `p_t_cfig (dbv, wh , ); 96 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 98 } } 108 $t_RGCfig ( , dbv , which ) 109 T_Ip * ; 110 DB_ENV * dbv ; 111 T_Obj * which ; 113 cڡ * cfwhich [] = { 118 NULL 120 ecfwhich { 121 REPGCONF_BULK , 122 REPGCONF_DELAYCLIENT , 123 REPGCONF_NOAUTOINIT , 124 REPGCONF_NOWAIT 126 T_Obj * s ; 127 , tdex , su , t ; 128 u_t32_t wh ; 130 i( `T_GIndexFromObj ( , which , cfwhich , "option", 131 TCL_EXACT , & tdex ! TCL_OK ) 132 ( `IS_HELP ( which )); 134 s = NULL ; 135 ( cfwhich ) tdex ) { 136 REPGCONF_BULK : 137 wh = DB_REP_CONF_BULK ; 139 REPGCONF_DELAYCLIENT : 140 wh = DB_REP_CONF_DELAYCLIENT ; 142 REPGCONF_NOAUTOINIT : 143 wh = DB_REP_CONF_NOAUTOINIT ; 145 REPGCONF_NOWAIT : 146 wh = DB_REP_CONF_NOWAIT ; 149 ( TCL_ERROR ); 151 t = dbv -> `p_g_cfig (dbv, wh , & ); 152 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 153 "v_cfig")= TCL_OK ) { 154 s = `T_NewIObj ( ); 155 `T_SObjResu ( , s ); 157 ( su ); 158 } } 161 #ifde CONFIG_TEST 170 $t_RE ( , objc , objv , dbv ) 171 T_Ip * ; 172 objc ; 173 T_Obj * CONST objv []; 174 DB_ENV * dbv ; 176 nses , nves , i , su , t ; 177 u_t32_t fu_timeout , timeout ; 179 i( objc != 6 && objc != 7) { 180 `T_WrgNumArgs ( , 6, objv , 182 ( TCL_ERROR ); 185 i(( su = `T_GIFromObj ( , objv [2], & nses )! TCL_OK ) 186 ( su ); 187 i(( su = `T_GIFromObj ( , objv [3], & nves )! TCL_OK ) 188 ( su ); 189 i(( su = `T_GIFromObj ( , objv [4], & i )! TCL_OK ) 190 ( su ); 191 i(( su = `_GUI32 ( , objv [5], & timeout )! TCL_OK ) 192 ( su ); 193 fu_timeout = 0; 194 i( objc == 7) 195 i(( su = `_GUI32 ( , objv [5], & timeout )! TCL_OK ) 196 ( su ); 198 `_debug_check (); 200 i(( t = dbv -> `p_t_iܙy (dbv, i )) != 0) 201 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 203 i(( t = dbv -> `p_t_timeout (dbv, DB_REP_ELECTION_TIMEOUT , 204 timeout )) != 0) 205 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 208 i( fu_timeout !0 && ( t = dbv -> `p_t_timeout (dbenv, 209 DB_REP_FULL_ELECTION_TIMEOUT , fu_timeout )) != 0) 210 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 213 t = dbv -> `p_e (dbv, nses , nves , 0); 214 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_elect")); 215 } } 218 #ifde CONFIG_TEST 227 $t_RFlush ( , objc , objv , dbv ) 228 T_Ip * ; 229 objc ; 230 T_Obj * CONST objv []; 231 DB_ENV * dbv ; 233 t ; 235 i( objc != 2) { 236 `T_WrgNumArgs ( , 2, objv , ""); 237 TCL_ERROR ; 240 `_debug_check (); 241 t = dbv -> `p_ush (dbenv); 242 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_flush")); 243 } } 245 #ifde CONFIG_TEST 254 $t_RSync ( , objc , objv , dbv ) 255 T_Ip * ; 256 objc ; 257 T_Obj * CONST objv []; 258 DB_ENV * dbv ; 260 t ; 262 i( objc != 2) { 263 `T_WrgNumArgs ( , 2, objv , ""); 264 TCL_ERROR ; 267 `_debug_check (); 268 t = dbv -> `p_sync (dbenv, 0); 269 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_sync")); 270 } } 273 #ifde CONFIG_TEST 282 $t_RL ( , objc , objv , dbv ) 283 T_Ip * ; 284 objc ; 285 T_Obj * CONST objv []; 286 DB_ENV * dbv ; 288 su , t ; 289 u_t32_t nses , skew , timeout ; 291 i( objc != 3) { 292 `T_WrgNumArgs ( , 1, objv , "{nsitesimeout clockskew}"); 293 ( TCL_ERROR ); 296 i(( su = `_GUI32 ( , objv [0], & nses )! TCL_OK ) 297 ( su ); 298 i(( su = `_GUI32 ( , objv [1], & timeout )! TCL_OK ) 299 ( su ); 300 i(( su = `_GUI32 ( , objv [2], & skew )! TCL_OK ) 301 ( su ); 302 t = dbv -> `p_t_nses (dbv, () nses ); 303 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 305 i( su ! TCL_OK ) 306 ( su ); 307 t = dbv -> `p_t_timeout (dbv, DB_REP_LEASE_TIMEOUT , 308 ( db_timeout_t ) timeout ); 309 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 311 i( su ! TCL_OK ) 312 ( su ); 313 `_debug_check (); 314 t = dbv -> `p_t_a (dbv, skew , 0); 315 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 317 } } 320 #ifde CONFIG_TEST 329 $t_RLim ( , objc , objv , dbv ) 330 T_Ip * ; 331 objc ; 332 T_Obj * CONST objv []; 333 DB_ENV * dbv ; 335 su , t ; 336 u_t32_t bys , gbys ; 338 i( objc != 4) { 339 `T_WrgNumArgs ( , 4, objv , "gbytes bytes"); 340 ( TCL_ERROR ); 343 i(( su = `_GUI32 ( , objv [2], & gbys )! TCL_OK ) 344 ( su ); 345 i(( su = `_GUI32 ( , objv [3], & bys )! TCL_OK ) 346 ( su ); 348 `_debug_check (); 349 i(( t = dbv -> `p_t_lim (dbv, gbys , bys )) != 0) 350 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 353 ( `_RuSup ( , 354 t , `DB_RETOK_STD (ret), "env set_rep_limit")); 355 } } 358 #ifde CONFIG_TEST 367 $t_RReque ( , objc , objv , dbv ) 368 T_Ip * ; 369 objc ; 370 T_Obj * CONST objv []; 371 DB_ENV * dbv ; 373 su , t ; 374 u_t32_t m , max ; 376 i( objc != 4) { 377 `T_WrgNumArgs ( , 4, objv , "min max"); 378 ( TCL_ERROR ); 381 i(( su = `_GUI32 ( , objv [2], & m )! TCL_OK ) 382 ( su ); 383 i(( su = `_GUI32 ( , objv [3], & max )! TCL_OK ) 384 ( su ); 386 `_debug_check (); 387 i(( t = dbv -> `t_p_que (dbv, m , max )) != 0) 388 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 391 ( `_RuSup ( , 392 t , `DB_RETOK_STD (ret), "env set_rep_request")); 393 } } 396 #ifde CONFIG_TEST 405 $t_RNrchiveTimeout ( , dbv ) 406 T_Ip * ; 407 DB_ENV * dbv ; 409 REGENV * nv ; 410 REGINFO * f ; 412 `_debug_check (); 413 f = dbv -> gfo ; 414 nv = f -> imy ; 415 `REP_SYSTEM_LOCK ( dbv ); 416 `F_CLR ( nv , DB_REGENV_REPLOCKED ); 417 nv -> _timeamp = 0; 418 `REP_SYSTEM_UNLOCK ( dbv ); 420 ( `_RuSup ( , 421 0, `DB_RETOK_STD (0), "envest forceoarchive_timeout")); 422 } } 425 #ifde CONFIG_TEST 438 $t_RTnt ( , objc , objv , dbv , ) 439 T_Ip * ; 440 objc ; 441 T_Obj * CONST objv []; 442 DB_ENV * dbv ; 443 DBTCL_INFO * ; 445 rg , su , t ; 447 i( objc != 2) { 448 `T_WrgNumArgs ( , 2, objv , "{idransport_func"); 449 ( TCL_ERROR ); 470 i( -> i_p_eid ! NULL ) 471 `T_DeRefCou ( -> i_p_eid ); 472 -> i_p_eid = objv [0]; 473 `T_InRefCou ( -> i_p_eid ); 474 su = `T_GIFromObj ( , 475 -> i_p_eid , & rg ); 476 i( su ! TCL_OK ) 477 ( su ); 479 i( -> i_p_nd ! NULL ) 480 `T_DeRefCou ( -> i_p_nd ); 481 -> i_p_nd = objv [1]; 482 `T_InRefCou ( -> i_p_nd ); 483 `_debug_check (); 484 t = dbv -> `p_t_t (dbv, rg , t_p_nd ); 485 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 487 } } 490 #ifde CONFIG_TEST 503 $t_RS ( , objc , objv , dbv ) 504 T_Ip * ; 505 objc ; 506 T_Obj * CONST objv []; 507 DB_ENV * dbv ; 509 cڡ * t [] = { 512 NULL 514 et { 515 TCL_RPSTRT_CLIENT , 516 TCL_RPSTRT_MASTER 518 * g ; 519 i , tdex , t ; 520 u_t32_t ag ; 522 ag = 0; 524 i( objc != 3) { 525 `T_WrgNumArgs ( , 3, objv , "[-master/-client]"); 526 ( TCL_ERROR ); 529 i = 2; 530 i < objc ) { 531 i( `T_GIndexFromObj ( , objv [ i ], t , 532 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 533 g = `T_GSgFromObj ( objv [ i ], NULL ); 534 i( g [0] == '-') 535 ( `IS_HELP ( objv [ i ])); 537 `T_RetResu ( ); 540 i ++; 541 ( t ) tdex ) { 542 TCL_RPSTRT_CLIENT : 543 ag = DB_REP_CLIENT ; 545 TCL_RPSTRT_MASTER : 546 ag = DB_REP_MASTER ; 551 `_debug_check (); 552 t = dbv -> `p_t (dbv, NULL , ag ); 553 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_start")); 554 } } 557 #ifde CONFIG_TEST 566 $t_RProssMesge ( , objc , objv , dbv ) 567 T_Ip * ; 568 objc ; 569 T_Obj * CONST objv []; 570 DB_ENV * dbv ; 572 DBT cڌ , c ; 573 DB_LSN rml ; 574 T_Obj * lli , * myobjv [2], * s ; 575 * mp , * mp ; 576 * msg ; 577 eid ; 578 l , 䓻c , myobjc , su , t ; 580 i( objc != 5) { 581 `T_WrgNumArgs ( , 5, objv , "id controlec"); 582 ( TCL_ERROR ); 584 l = 䓻c = 0; 586 `memt (& cڌ , 0, (control)); 587 `memt (& c , 0, (rec)); 589 i(( su = `T_GIFromObj ( , objv [2], & eid )! TCL_OK ) 590 ( su ); 592 t = `_CyObjBys ( , objv [3], & mp , 593 & cڌ . size , & l ); 594 i( t != 0) { 595 su = `_RuSup ( , t , 596 `DB_RETOK_REPPMSG ( t ), "rep_proc_msg"); 597 ( su ); 599 cڌ . da = mp ; 600 t = `_CyObjBys ( , objv [4], & mp , 601 & c . size , & 䓻c ); 602 i( t != 0) { 603 su = `_RuSup ( , t , 604 `DB_RETOK_REPPMSG ( t ), "rep_proc_msg"); 605 out ; 607 c . da = mp ; 608 `_debug_check (); 609 t = dbv -> `p_oss_mesge (dbv, & cڌ , & c , eid , & rml ); 615 su = `_RuSup ( , t , 616 `DB_RETOK_REPPMSG ( t || = DB_REP_DUPMASTER || 617 t = DB_REP_HOLDELECTION , 620 i( su ! TCL_OK ) 621 out ; 635 myobjc = 2; 636 t ) { 638 myobjv [0] = `T_NewIObj (0); 639 myobjv [1] = `T_NewIObj (0); 641 DB_REP_DUPMASTER : 642 myobjv [0] = `T_NewByAayObj ( 643 ( u_ch *)"DUPMASTER", () ` ("DUPMASTER")); 644 myobjv [1] = `T_NewIObj (0); 646 DB_REP_HOLDELECTION : 647 myobjv [0] = `T_NewByAayObj ( 648 ( u_ch *)"HOLDELECTION", () ` ("HOLDELECTION")); 649 myobjv [1] = `T_NewIObj (0); 651 DB_REP_IGNORE : 652 myobjv [0] = `T_NewLgObj (() rml . fe ); 653 myobjv [1] = `T_NewLgObj (() rml . offt ); 654 lli = `T_NewLiObj ( myobjc , myobjv ); 655 myobjv [0] = `T_NewByAayObj ( 656 ( u_ch *)"IGNORE", () ` ("IGNORE")); 657 myobjv [1] = lli ; 659 DB_REP_ISPERM : 660 myobjv [0] = `T_NewLgObj (() rml . fe ); 661 myobjv [1] = `T_NewLgObj (() rml . offt ); 662 lli = `T_NewLiObj ( myobjc , myobjv ); 663 myobjv [0] = `T_NewByAayObj ( 664 ( u_ch *)"ISPERM", () ` ("ISPERM")); 665 myobjv [1] = lli ; 667 DB_REP_NEWSITE : 668 myobjv [0] = `T_NewByAayObj ( 669 ( u_ch *)"NEWSITE", () ` ("NEWSITE")); 670 myobjv [1] = `T_NewIObj (0); 672 DB_REP_NOTPERM : 673 myobjv [0] = `T_NewLgObj (() rml . fe ); 674 myobjv [1] = `T_NewLgObj (() rml . offt ); 675 lli = `T_NewLiObj ( myobjc , myobjv ); 676 myobjv [0] = `T_NewByAayObj ( 677 ( u_ch *)"NOTPERM", () ` ("NOTPERM")); 678 myobjv [1] = lli ; 681 msg = `db_ ( t ); 682 `T_AdResu ( , msg , NULL ); 683 `T_SECode ( , "BkeyDB", msg , NULL ); 684 su = TCL_ERROR ; 685 out ; 687 s = `T_NewLiObj ( myobjc , myobjv ); 688 i( s ! NULL ) 689 `T_SObjResu ( , s ); 690 out : 691 i( l ) 692 `__os_ ( NULL , mp ); 693 i( 䓻c ) 694 `__os_ ( NULL , mp ); 696 ( su ); 697 } } 700 #ifde CONFIG_TEST 709 $t_RSt ( , objc , objv , dbv ) 710 T_Ip * ; 711 objc ; 712 T_Obj * CONST objv []; 713 DB_ENV * dbv ; 715 DB_REP_STAT * ; 716 T_Obj * myobjv [2], * s , * thii , * lli ; 717 u_t32_t ag ; 718 myobjc , su , t ; 719 * g ; 721 ag = 0; 722 su = TCL_OK ; 724 i( objc > 3) { 725 `T_WrgNumArgs ( , 2, objv , NULL ); 726 ( TCL_ERROR ); 728 i( objc == 3) { 729 g = `T_GSgFromObj ( objv [2], NULL ); 730 i( `rcmp ( g , "-clear") == 0) 731 ag = DB_STAT_CLEAR ; 733 `T_SResu ( , 734 "db st: unknowg", TCL_STATIC ); 735 ( TCL_ERROR ); 739 `_debug_check (); 740 t = dbv -> `p_ (dbv, & , ag ); 741 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 743 i( su = TCL_ERROR ) 744 ( su ); 750 s = `T_NewObj (); 751 #ifde HAVE_STATISTICS 755 i( -> _us = DB_REP_MASTER ) 756 `MAKE_STAT_LIST ("Master", 1); 758 `MAKE_STAT_LIST ("Client", 1); 759 `MAKE_STAT_LSN ("NexLSNxed", & -> _xt_l ); 760 `MAKE_STAT_LSN ("F misd LSN", & -> _wag_l ); 761 `MAKE_STAT_LIST ("Bulk buffls", -> _bulk_fls ); 762 `MAKE_STAT_LIST ("Bulk bufovows", -> _bulk_ovows ); 763 `MAKE_STAT_LIST ("Bulkecded", -> _bulk_cds ); 764 `MAKE_STAT_LIST ("Bulk buf㸌srs", -> _bulk_srs ); 765 `MAKE_STAT_LIST ("Cl svieques", -> __svc_q ); 766 `MAKE_STAT_LIST ("Cl svieq miss", -> __svc_miss ); 767 `MAKE_STAT_LIST ("Cleques", -> __ques ); 768 `MAKE_STAT_LIST ("Dui ma cdis", -> _dupmas ); 769 `MAKE_STAT_LIST ("EnvmID", -> _v_id ); 770 `MAKE_STAT_LIST ("Envmiܙy", -> _v_iܙy ); 771 `MAKE_STAT_LIST ("Giڂumb", -> _g ); 772 `MAKE_STAT_LIST ("Ei giڂumb", -> _eg ); 773 `MAKE_STAT_LIST ("Sucome", -> _tup_come ); 774 `MAKE_STAT_LIST ("Duiogecdived", -> _log_duid ); 775 `MAKE_STAT_LIST ("Culogecdqueued", -> _log_queued ); 776 `MAKE_STAT_LIST ("Maximumogecdqueued", -> _log_queued_max ); 777 `MAKE_STAT_LIST ("Tٮogecdqueued", -> _log_queued_tٮ ); 778 `MAKE_STAT_LIST ("Logecdived", -> _log_cds ); 779 `MAKE_STAT_LIST ("Logecdqueed", -> _log_queed ); 780 `MAKE_STAT_LIST ("ManvmID", -> _ma ); 781 `MAKE_STAT_LIST ("Ma chges", -> _ma_chges ); 782 `MAKE_STAT_LIST ("Messages with bad generationumber", 783 -> _msgs_badg ); 784 `MAKE_STAT_LIST ("Mesgeosd", -> _msgs_osd ); 785 `MAKE_STAT_LIST ("Mesgeigned f܄ecovy", -> _msgs_cov ); 786 `MAKE_STAT_LIST ("Mesgnd faus", -> _msgs_nd_us ); 787 `MAKE_STAT_LIST ("Mesge", -> _msgs_ ); 788 `MAKE_STAT_LIST ("New smesges", -> _wses ); 789 `MAKE_STAT_LIST ("Numb oseliti group", -> _nses ); 790 `MAKE_STAT_LIST ("Tnsmissiچimed", -> _hrَes ); 791 `MAKE_STAT_LIST ("Outded cdis", -> _outded ); 792 `MAKE_STAT_LIST ("Tniڠd", -> _txns_d ); 793 `MAKE_STAT_LIST ("Nexgexed", -> _xt_pg ); 794 `MAKE_STAT_LIST ("F misdage", -> _wag_pg ); 795 `MAKE_STAT_LIST ("Duiageived", -> _pg_duid ); 796 `MAKE_STAT_LIST ("Pageived", -> _pg_cds ); 797 `MAKE_STAT_LIST ("Pagequeed", -> _pg_queed ); 798 `MAKE_STAT_LIST ("Eiڠhd", -> _eis ); 799 `MAKE_STAT_LIST ("Eiڠw", -> _eis_w ); 800 `MAKE_STAT_LIST ("Eiڅha", -> _ei_us ); 801 `MAKE_STAT_LIST ("Ei wr", -> _ei_cur_wr ); 802 `MAKE_STAT_LIST ("Ei giڂumb", -> _ei_g ); 803 `MAKE_STAT_LSN ("Ei max LSN", & -> _ei_l ); 804 `MAKE_STAT_LIST ("Ei ses", -> _ei_nses ); 805 `MAKE_STAT_LIST ("Eiڂves", -> _ei_nves ); 806 `MAKE_STAT_LIST ("Eiڅriܙy", -> _ei_iܙy ); 807 `MAKE_STAT_LIST ("Eiځbak", -> _ei_tbak ); 808 `MAKE_STAT_LIST ("Ei ves", -> _ei_ves ); 809 `MAKE_STAT_LIST ("Ei secds", -> _ei_c ); 810 `MAKE_STAT_LIST ("Ei ucs", -> _ei_uc ); 811 `MAKE_STAT_LIST ("Start-sync operations delayed", 812 -> _tsync_dayed ); 815 `T_SObjResu ( , s ); 816 r : 817 `__os_u ( dbv , ); 818 ( su ); 819 } } 829 $t_RMgr ( , objc , objv , dbv ) 830 T_Ip * ; 831 objc ; 832 T_Obj * CONST objv []; 833 DB_ENV * dbv ; 835 cڡ * rmgr [] = { 844 NULL 846 ermgr { 847 RMGR_ACK , 848 RMGR_LOCAL , 849 RMGR_MSGTH , 850 RMGR_NSITES , 851 RMGR_PRI , 852 RMGR_REMOTE , 853 RMGR_START , 854 RMGR_TIMEOUT 856 T_Obj ** myobjv ; 857 to ; 858 ack , i , myobjc , tdex , su , t , ty ; 859 u_t32_t msgth , me_ag , t_ag , urg ; 860 * g ; 862 su = TCL_OK ; 863 ack = t = ty = 0; 864 msgth = 1; 865 me_ag = t_ag = 0; 867 i( objc <= 2) { 868 `T_WrgNumArgs ( , 2, objv , "?args?"); 869 ( TCL_ERROR ); 875 i = 2; 876 i < objc ) { 877 `T_RetResu ( ); 878 i( `T_GIndexFromObj ( , objv [ i ], rmgr , "option", 879 TCL_EXACT , & tdex ! TCL_OK ) { 880 su = `IS_HELP ( objv [ i ]); 881 r ; 883 i ++; 884 ( rmgr ) tdex ) { 885 RMGR_ACK : 886 i( i > objc ) { 887 `T_WrgNumArgs ( , 2, objv , 889 su = TCL_ERROR ; 892 g = `T_GSgFromObj ( objv [ i ++], NULL ); 893 i( `rcmp ( g , "all") == 0) 894 ack = DB_REPMGR_ACKS_ALL ; 895 i( `rcmp ( g , "allpeers") == 0) 896 ack = DB_REPMGR_ACKS_ALL_PEERS ; 897 i( `rcmp ( g , "none") == 0) 898 ack = DB_REPMGR_ACKS_NONE ; 899 i( `rcmp ( g , "one") == 0) 900 ack = DB_REPMGR_ACKS_ONE ; 901 i( `rcmp ( g , "onepeer") == 0) 902 ack = DB_REPMGR_ACKS_ONE_PEER ; 903 i( `rcmp ( g , "quorum") == 0) 904 ack = DB_REPMGR_ACKS_QUORUM ; 906 `T_AddEInfo ( , 908 su = TCL_ERROR ; 911 `_debug_check (); 912 t = dbv -> `pmgr_t_ack_picy (dbv, ack ); 913 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 916 RMGR_LOCAL : 917 su = `T_LiObjGEmts ( , objv [ i ], 918 & myobjc , & myobjv ); 919 i( su = TCL_OK ) 920 i ++; 923 i( myobjc != 2) { 924 `T_WrgNumArgs ( , 2, objv , 926 su = TCL_ERROR ; 929 g = `T_GSgFromObj ( myobjv [0], NULL ); 930 i(( su = `_GUI32 ( , myobjv [1], & urg )) 931 ! TCL_OK ) 933 `_debug_check (); 937 t = dbv -> `pmgr_t_lol_se (dbenv, 938 g , urg , 0); 939 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 942 RMGR_MSGTH : 943 i( i > objc ) { 944 `T_WrgNumArgs ( 945 , 2, objv , "?-msgthth?"); 946 su = TCL_ERROR ; 949 su = `_GUI32 ( , objv [ i ++], & msgth ); 951 RMGR_NSITES : 952 i( i > objc ) { 953 `T_WrgNumArgs ( , 2, objv , 955 su = TCL_ERROR ; 958 su = `_GUI32 ( , objv [ i ++], & urg ); 959 i( su = TCL_OK ) { 960 `_debug_check (); 961 t = dbv -> 962 `p_t_nses ( dbv , () urg ); 965 RMGR_PRI : 966 i( i > objc ) { 967 `T_WrgNumArgs ( , 2, objv , 969 su = TCL_ERROR ; 972 su = `_GUI32 ( , objv [ i ++], & urg ); 973 i( su = TCL_OK ) { 974 `_debug_check (); 975 t = dbv -> 976 `p_t_iܙy ( dbv , () urg ); 979 RMGR_REMOTE : 980 su = `T_LiObjGEmts ( , objv [ i ], 981 & myobjc , & myobjv ); 982 i( su = TCL_OK ) 983 i ++; 986 i( myobjc != 2 && myobjc != 3) { 987 `T_WrgNumArgs ( , 2, objv , 989 su = TCL_ERROR ; 995 i( myobjc == 3) { 996 g = `T_GSgFromObj ( myobjv [2], NULL ); 997 i( `rcmp ( g , "peer") == 0) 998 me_ag = DB_REPMGR_PEER ; 1000 `T_AddEInfo ( , 1002 su = TCL_ERROR ; 1006 g = `T_GSgFromObj ( myobjv [0], NULL ); 1007 i(( su = `_GUI32 ( , myobjv [1], & urg )) 1008 ! TCL_OK ) 1010 `_debug_check (); 1011 t = dbv -> `pmgr_add_me_se (dbenv, 1012 g , urg , NULL , me_ag ); 1013 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1016 RMGR_START : 1017 i( i > objc ) { 1018 `T_WrgNumArgs ( 1019 , 2, objv , "?-start state?"); 1020 su = TCL_ERROR ; 1023 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1024 i( `rcmp ( g , "master") == 0) 1025 t_ag = DB_REP_MASTER ; 1026 i( `rcmp ( g , "client") == 0) 1027 t_ag = DB_REP_CLIENT ; 1028 i( `rcmp ( g , "elect") == 0) 1029 t_ag = DB_REP_ELECTION ; 1031 `T_AddEInfo ( 1032 , "start: illegal state"); 1033 su = TCL_ERROR ; 1042 RMGR_TIMEOUT : 1043 su = `T_LiObjGEmts ( , objv [ i ], 1044 & myobjc , & myobjv ); 1045 i( su = TCL_OK ) 1046 i ++; 1049 i( myobjc != 2) { 1050 `T_WrgNumArgs ( , 2, objv , 1052 su = TCL_ERROR ; 1055 g = `T_GSgFromObj ( myobjv [0], NULL ); 1056 i( `rcmp ( g , "ack") == 0) 1057 ty = DB_REP_ACK_TIMEOUT ; 1058 i( `rcmp ( g , "elect") == 0) 1059 ty = DB_REP_ELECTION_TIMEOUT ; 1060 i( `rcmp ( g , "elect_retry") == 0) 1061 ty = DB_REP_ELECTION_RETRY ; 1062 i( `rcmp ( g , "conn_retry") == 0) 1063 ty = DB_REP_CONNECTION_RETRY ; 1065 `T_AddEInfo ( , 1067 su = TCL_ERROR ; 1070 i(( su = `T_GLgFromObj ( 1071 , myobjv [1], & to )! TCL_OK ) 1073 `_debug_check (); 1074 t = dbv -> `p_t_timeout (dbv, ty , 1075 ( db_timeout_t ) to ); 1076 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1084 i( su ! TCL_OK ) 1085 r ; 1091 i( t_ag !0 && su = TCL_OK ) { 1092 `_debug_check (); 1093 t = dbv -> `pmgr_t (dbv, () msgth , t_ag ); 1094 su = `_RuSup ( 1095 , t , `DB_RETOK_STD (ret), "repmgr_start"); 1097 r : 1098 ( su ); 1099 } } 1109 $t_RMgrSt ( , objc , objv , dbv ) 1110 T_Ip * ; 1111 objc ; 1112 T_Obj * CONST objv []; 1113 DB_ENV * dbv ; 1115 DB_REPMGR_STAT * ; 1116 T_Obj * s ; 1117 u_t32_t ag ; 1118 su , t ; 1119 * g ; 1121 ag = 0; 1122 su = TCL_OK ; 1124 i( objc > 3) { 1125 `T_WrgNumArgs ( , 2, objv , NULL ); 1126 ( TCL_ERROR ); 1128 i( objc == 3) { 1129 g = `T_GSgFromObj ( objv [2], NULL ); 1130 i( `rcmp ( g , "-clear") == 0) 1131 ag = DB_STAT_CLEAR ; 1133 `T_SResu ( , 1134 "db st: unknowg", TCL_STATIC ); 1135 ( TCL_ERROR ); 1139 `_debug_check (); 1140 t = dbv -> `pmgr_ (dbv, & , ag ); 1141 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1143 i( su = TCL_ERROR ) 1144 ( su ); 1150 s = `T_NewObj (); 1151 #ifde HAVE_STATISTICS 1155 `MAKE_STAT_LIST ("Acknowdgemus", -> _rm_ed ); 1156 `MAKE_STAT_LIST ("Mesgedayed", -> _msgs_queued ); 1157 `MAKE_STAT_LIST ("Mesgedisrded", -> _msgs_drݳd ); 1158 `MAKE_STAT_LIST ("Ciڠdrݳd", -> _ci_dr ); 1159 `MAKE_STAT_LIST ("Faede-cs", -> _c_ ); 1162 `T_SObjResu ( , s ); 1163 r : 1164 `__os_u ( dbv , ); 1165 ( su ); 1166 } } @../tcl/tcl_seq.c 9 ~"db_cfig.h " 10 #ifde HAVE_64BIT_TYPES 12 ~"db_t.h " 13 #ifde HAVE_SYSTEM_INCLUDE_FILES 14 ~<t.h > 16 ~"dbc/t_db.h " 17 ~"dbc_auto/qu_ext.h " 22 t_SeqClo __P (( T_Ip *, 23 , T_Obj * CONST *, DB_SEQUENCE *, DBTCL_INFO *)); 24 t_SeqG __P (( T_Ip *, 25 , T_Obj * CONST *, DB_SEQUENCE *)); 26 t_SeqRemove __P (( T_Ip *, 27 , T_Obj * CONST *, DB_SEQUENCE *, DBTCL_INFO *)); 28 t_SeqSt __P (( T_Ip *, 29 , T_Obj * CONST *, DB_SEQUENCE *)); 30 t_SeqGFgs __P (( T_Ip *, 31 , T_Obj * CONST *, DB_SEQUENCE *)); 41 $q_Cmd ( Da , , objc , objv ) 42 ClDa Da ; 43 T_Ip * ; 44 objc ; 45 T_Obj * CONST objv []; 47 cڡ * qcmds [] = { 57 NULL 59 eqcmds { 60 SEQCLOSE , 61 SEQGET , 62 SEQGETCACHESIZE , 63 SEQGETDB , 64 SEQGETFLAGS , 65 SEQGETKEY , 66 SEQGETRANGE , 67 SEQREMOVE , 68 SEQSTAT 70 DB * dbp ; 71 DBT key ; 72 DBTCL_INFO * db , * ; 73 DB_SEQUENCE * q ; 74 T_Obj * myobjv [2], * s ; 75 db_q_t m , max ; 76 cmddex , nche , su , t ; 78 `T_RetResu ( ); 79 q = ( DB_SEQUENCE *) Da ; 80 su = TCL_OK ; 81 db = NULL ; 82 i( objc <= 1) { 83 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 84 ( TCL_ERROR ); 86 i( q = NULL ) { 87 `T_SResu ( , "NULL sequor", TCL_STATIC ); 88 ( TCL_ERROR ); 91 = `_PToInfo ((*) q ); 92 i( = NULL ) { 93 `T_SResu ( , "NULL infpor", TCL_STATIC ); 94 ( TCL_ERROR ); 101 i( `T_GIndexFromObj ( , 102 objv [1], qcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 103 ( `IS_HELP ( objv [1])); 105 s = NULL ; 106 ( qcmds ) cmddex ) { 107 SEQGETRANGE : 108 t = q -> `g_nge (q, & m , & max ); 109 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 110 "qu g_nge")= TCL_OK ) { 111 myobjv [0] = `T_NewWideIObj ( m ); 112 myobjv [1] = `T_NewWideIObj ( max ); 113 s = `T_NewLiObj (2, myobjv ); 116 SEQCLOSE : 117 su = `t_SeqClo ( , objc , objv , q , ); 119 SEQREMOVE : 120 su = `t_SeqRemove ( , objc , objv , q , ); 122 SEQGET : 123 su = `t_SeqG ( , objc , objv , q ); 125 SEQSTAT : 126 su = `t_SeqSt ( , objc , objv , q ); 128 SEQGETCACHESIZE : 129 i( objc != 2) { 130 `T_WrgNumArgs ( , 1, objv , NULL ); 131 ( TCL_ERROR ); 133 t = q -> `g_chesize (q, & nche ); 134 i(( su = `_RuSup ( , t , 135 `DB_RETOK_STD ( t ), "qu g_chesize")= TCL_OK ) 136 s = `T_NewIObj ( nche ); 138 SEQGETDB : 139 i( objc != 2) { 140 `T_WrgNumArgs ( , 1, objv , NULL ); 141 ( TCL_ERROR ); 143 t = q -> `g_db (q, & dbp ); 144 i( t =0 && ( db = `_PToInfo ((*) dbp )= NULL ) { 145 `T_SResu ( , 146 "NULL db infpor", TCL_STATIC ); 147 ( TCL_ERROR ); 150 i(( su = `_RuSup ( , t , 151 `DB_RETOK_STD ( t ), "qu g_db")= TCL_OK ) 152 s = `NewSgObj ( db -> i_me , ` (dbip->i_name)); 154 SEQGETKEY : 155 i( objc != 2) { 156 `T_WrgNumArgs ( , 1, objv , NULL ); 157 ( TCL_ERROR ); 159 t = q -> `g_key (q, & key ); 160 i(( su = `_RuSup ( , t , 161 `DB_RETOK_STD ( t ), "qu g_key")= TCL_OK ) 162 s = `T_NewByAayObj ( 163 ( u_ch *) key . da , ()key. size ); 165 SEQGETFLAGS : 166 su = `t_SeqGFgs ( , objc , objv , q ); 174 i( su = TCL_OK && s ) 175 `T_SObjResu ( , s ); 176 ( su ); 177 } } 183 $t_SeqSt ( , objc , objv , q ) 184 T_Ip * ; 185 objc ; 186 T_Obj * CONST objv []; 187 DB_SEQUENCE * q ; 189 DB_SEQUENCE_STAT * ; 190 u_t32_t ag ; 191 T_Obj * s , * agli , * myobjv [2]; 192 su , t ; 193 * g ; 195 su = TCL_OK ; 196 ag = 0; 198 i( objc > 3) { 199 `T_WrgNumArgs ( , 2, objv , "?-clear?"); 200 ( TCL_ERROR ); 203 i( objc == 3) { 204 g = `T_GSgFromObj ( objv [2], NULL ); 205 i( `rcmp ( g , "-clear") == 0) 206 ag = DB_STAT_CLEAR ; 208 `T_SResu ( , 209 "db st: unknowg", TCL_STATIC ); 210 ( TCL_ERROR ); 214 `_debug_check (); 215 t = q -> ` (q, & , ag ); 216 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db stat"); 217 i( su = TCL_ERROR ) 218 ( su ); 220 s = `T_NewObj (); 221 `MAKE_STAT_LIST ("Wa", -> _wa ); 222 `MAKE_STAT_LIST ("Nwa", -> _nowa ); 223 `MAKE_WSTAT_LIST ("Cut", -> _cut ); 224 `MAKE_WSTAT_LIST ("Cached", -> _vue ); 225 `MAKE_WSTAT_LIST ("Max Cached", -> _ϡ_vue ); 226 `MAKE_WSTAT_LIST ("M", -> _m ); 227 `MAKE_WSTAT_LIST ("Max", -> _max ); 228 `MAKE_STAT_LIST ("Cachsize", -> _che_size ); 233 myobjv [0] = `NewSgObj ("Fgs", ` ("Flags")); 234 myobjv [1] = 235 `_GFgsLi ( , -> _ags , `__db_g_q_ags_ ()); 236 agli = `T_NewLiObj (2, myobjv ); 237 i( agli = NULL ) { 238 su = TCL_ERROR ; 239 r ; 241 i(( su = 242 `T_LiObjAdEmt ( , s , agli )! TCL_OK ) 243 r ; 245 `T_SObjResu ( , s ); 247 r : `__os_u ( q -> q_dbp -> dbv , ); 248 ( su ); 249 } } 255 $t_SeqClo ( , objc , objv , q , ) 256 T_Ip * ; 257 objc ; 258 T_Obj * CONST objv []; 259 DB_SEQUENCE * q ; 260 DBTCL_INFO * ; 262 su , t ; 264 su = TCL_OK ; 265 i( objc > 2) { 266 `T_WrgNumArgs ( , 2, objv , ""); 267 ( TCL_ERROR ); 270 `_DeInfo ( ); 271 `_debug_check (); 273 t = q -> `o (seq, 0); 274 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "sequence close"); 275 ( su ); 276 } } 282 $t_SeqG ( , objc , objv , q ) 283 T_Ip * ; 284 objc ; 285 T_Obj * CONST objv []; 286 DB_SEQUENCE * q ; 288 cڡ * qgts [] = { 291 NULL 293 eqgts { 294 SEQGET_NOSYNC , 295 SEQGET_TXN 297 DB_TXN * txn ; 298 T_Obj * s ; 299 db_q_t vue ; 300 u_t32_t aag , d ; 301 i , d , tdex , su , t ; 302 * g , msg [ MSG_SIZE ]; 304 su = TCL_OK ; 305 txn = NULL ; 306 aag = 0; 308 i( objc < 3) { 309 `T_WrgNumArgs ( , 2, objv , "?-args? delta"); 310 ( TCL_ERROR ); 317 i = 2; 318 d = objc ; 319 i < d ) { 320 i( `T_GIndexFromObj ( , objv [ i ], qgts , "option", 321 TCL_EXACT , & tdex ! TCL_OK ) { 322 g = `T_GSgFromObj ( objv [ i ], NULL ); 323 i( g [0] == '-') { 324 su = `IS_HELP ( objv [ i ]); 325 out ; 327 `T_RetResu ( ); 330 i ++; 331 ( qgts ) tdex ) { 332 SEQGET_NOSYNC : 333 aag | DB_TXN_NOSYNC ; 335 SEQGET_TXN : 336 i( i > d ) { 337 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 338 su = TCL_ERROR ; 341 g = `T_GSgFromObj ( objv [ i ++], NULL ); 342 txn = `NAME_TO_TXN ( g ); 343 i( txn = NULL ) { 344 `tf ( msg , MSG_SIZE , 345 "G: Invidxn: %s\n", g ); 346 `T_SResu ( , msg , TCL_VOLATILE ); 347 su = TCL_ERROR ; 351 i( su ! TCL_OK ) 354 i( su ! TCL_OK ) 355 out ; 357 i( i ! objc - 1) { 358 `T_SResu ( , 359 "Wrgumb okey/dgiv\n", TCL_STATIC ); 360 su = TCL_ERROR ; 361 out ; 364 i(( su = `_GUI32 ( , objv [ objc - 1], & d )! TCL_OK ) 365 out ; 367 t = q -> `g (q, txn , ( t32_t ) d , & vue , aag ); 368 su = `_RuSup ( , t , `DB_RETOK_DBGET (ret), "sequence get"); 369 i( t == 0) { 370 s = `T_NewWideIObj (( T_WideI ) vue ); 371 `T_SObjResu ( , s ); 373 out : 374 ( su ); 375 } } 379 $t_SeqRemove ( , objc , objv , q , ) 380 T_Ip * ; 381 objc ; 382 T_Obj * CONST objv []; 383 DB_SEQUENCE * q ; 384 DBTCL_INFO * ; 386 cڡ * qgts [] = { 389 NULL 391 eqgts { 392 SEQGET_NOSYNC , 393 SEQGET_TXN 395 DB_TXN * txn ; 396 u_t32_t aag ; 397 i , d , tdex , su , t ; 398 * g , msg [ MSG_SIZE ]; 400 su = TCL_OK ; 401 txn = NULL ; 402 aag = 0; 404 `_DeInfo ( ); 406 i( objc < 2) { 407 `T_WrgNumArgs ( , 2, objv , "?-args?"); 408 ( TCL_ERROR ); 415 i = 2; 416 d = objc ; 417 i < d ) { 418 i( `T_GIndexFromObj ( , objv [ i ], qgts , "option", 419 TCL_EXACT , & tdex ! TCL_OK ) { 420 g = `T_GSgFromObj ( objv [ i ], NULL ); 421 i( g [0] == '-') { 422 su = `IS_HELP ( objv [ i ]); 423 out ; 425 `T_RetResu ( ); 428 i ++; 429 ( qgts ) tdex ) { 430 SEQGET_NOSYNC : 431 aag | DB_TXN_NOSYNC ; 433 SEQGET_TXN : 434 i( i > d ) { 435 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 436 su = TCL_ERROR ; 439 g = `T_GSgFromObj ( objv [ i ++], NULL ); 440 txn = `NAME_TO_TXN ( g ); 441 i( txn = NULL ) { 442 `tf ( msg , MSG_SIZE , 443 "Remove: Invidxn: %s\n", g ); 444 `T_SResu ( , msg , TCL_VOLATILE ); 445 su = TCL_ERROR ; 449 i( su ! TCL_OK ) 452 i( su ! TCL_OK ) 453 out ; 455 t = q -> `move (q, txn , aag ); 456 su = `_RuSup ( , 457 t , `DB_RETOK_DBGET (ret), "sequenceemove"); 458 out : 459 ( su ); 460 } } 466 $t_SeqGFgs ( , objc , objv , q ) 467 T_Ip * ; 468 objc ; 469 T_Obj * CONST objv []; 470 DB_SEQUENCE * q ; 472 i , t , su ; 473 u_t32_t ags ; 474 buf [512]; 475 T_Obj * s ; 478 u_t32_t ag ; 479 * g ; 480 } q_ags [] = { 481 { DB_SEQ_INC , "-inc" }, 482 { DB_SEQ_DEC , "-dec" }, 483 { DB_SEQ_WRAP , "-wrap" }, 484 { 0, NULL } 487 i( objc != 2) { 488 `T_WrgNumArgs ( , 1, objv , NULL ); 489 ( TCL_ERROR ); 492 t = q -> `g_ags (q, & ags ); 493 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 494 "db g_ags")= TCL_OK ) { 495 buf [0] = '\0'; 497 i = 0; q_ags [i]. ag != 0; i++) 498 i( `LF_ISSET ( q_ags [ i ]. ag )) { 499 i( ` ( buf ) > 0) 500 () `t ( buf , " ", (buf)); 501 () `t ( 502 buf , q_ags [ i ]. g , (buf)); 505 s = `NewSgObj ( buf , ` (buf)); 506 `T_SObjResu ( , s ); 509 ( su ); 510 } } @../tcl/tcl_txn.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 17 t_TxnComm __P (( T_Ip *, 18 , T_Obj * CONST *, DB_TXN *, DBTCL_INFO *)); 19 txn_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 31 $_TxnInfoDe ( , txn ) 32 T_Ip * ; 33 DBTCL_INFO * txn ; 35 DBTCL_INFO * x , * p ; 37 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 42 x = `LIST_NEXT ( p , s ); 43 i( p -> i_ = txn &&-> i_ty = I_TXN ) { 44 `_TxnInfoDe ( , p ); 45 () `T_DeCommd ( , p -> i_me ); 46 `_DeInfo ( p ); 49 } } 58 $t_TxnCheckpot ( , objc , objv , vp ) 59 T_Ip * ; 60 objc ; 61 T_Obj * CONST objv []; 62 DB_ENV * vp ; 64 cڡ * txnckpts [] = { 68 NULL 70 etxnckpts { 71 TXNCKP_FORCE , 72 TXNCKP_KB , 73 TXNCKP_MIN 75 u_t32_t ags ; 76 i , kb , m , tdex , su , t ; 78 su = TCL_OK ; 79 ags = 0; 80 kb = m = 0; 86 i = 2; 87 i < objc ) { 88 i( `T_GIndexFromObj ( , objv [ i ], 89 txnckpts , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 90 ( `IS_HELP ( objv [ i ])); 92 i ++; 93 ( txnckpts ) tdex ) { 94 TXNCKP_FORCE : 95 ags = DB_FORCE ; 97 TXNCKP_KB : 98 i( i = objc ) { 99 `T_WrgNumArgs ( , 2, objv , 101 su = TCL_ERROR ; 104 su = `T_GIFromObj ( , objv [ i ++], & kb ); 106 TXNCKP_MIN : 107 i( i = objc ) { 108 `T_WrgNumArgs ( , 2, objv , "?-min min?"); 109 su = TCL_ERROR ; 112 su = `T_GIFromObj ( , objv [ i ++], & m ); 116 `_debug_check (); 117 t = vp -> `txn_checkpot nvp, ( u_t32_t ) kb , (u_t32_t) m , ags ); 118 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 120 ( su ); 121 } } 130 $t_Txn ( , objc , objv , vp , v ) 131 T_Ip * ; 132 objc ; 133 T_Obj * CONST objv []; 134 DB_ENV * vp ; 135 DBTCL_INFO * v ; 137 cڡ * txnts [] = { 138 #ifde CONFIG_TEST 151 NULL 153 etxnts { 154 #ifde CONFIG_TEST 155 TXNLOCK_TIMEOUT , 156 TXNREAD_COMMITTED , 157 TXNREAD_UNCOMMITTED , 158 TXNTIMEOUT , 159 TXNWAIT , 161 TXNNOSYNC , 162 TXNNOWAIT , 163 TXNPARENT , 164 TXNSNAPSHOT , 165 TXNSYNC , 166 TXNWRNOSYNC 168 DBTCL_INFO * ; 169 DB_TXN * ; 170 DB_TXN * txn ; 171 T_Obj * s ; 172 u_t32_t ag ; 173 i , tdex , su , t ; 174 * g , msg [ MSG_SIZE ], wme [MSG_SIZE]; 175 #ifde CONFIG_TEST 176 db_timeout_t lk_time , tx_time ; 177 u_t32_t lk_timeag , tx_timeag ; 180 su = TCL_OK ; 181 `memt ( wme , 0, MSG_SIZE ); 183 = NULL ; 184 ag = 0; 185 #ifde CONFIG_TEST 186 `COMPQUIET ( tx_time , 0); 187 `COMPQUIET ( lk_time , 0); 188 lk_timeag = tx_timeag = 0; 190 i = 2; 191 i < objc ) { 192 i( `T_GIndexFromObj ( , objv [ i ], 193 txnts , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 194 ( `IS_HELP ( objv [ i ])); 196 i ++; 197 ( txnts ) tdex ) { 198 #ifde CONFIG_TEST 199 TXNLOCK_TIMEOUT : 200 lk_timeag = DB_SET_LOCK_TIMEOUT ; 201 g_timeout ; 202 TXNTIMEOUT : 203 tx_timeag = DB_SET_TXN_TIMEOUT ; 204 g_timeout : i( i > objc ) { 205 `T_WrgNumArgs ( , 2, objv , 207 ( TCL_ERROR ); 209 su = `T_GLgFromObj ( , objv [ i ++], (*) 210 (( txnts ) tdex = TXNLOCK_TIMEOUT ? 211 & lk_time : & tx_time )); 212 i( su ! TCL_OK ) 213 ( TCL_ERROR ); 215 TXNREAD_COMMITTED : 216 ag | DB_READ_COMMITTED ; 218 TXNREAD_UNCOMMITTED : 219 ag | DB_READ_UNCOMMITTED ; 221 TXNWAIT : 222 ag | DB_TXN_WAIT ; 225 TXNNOSYNC : 226 ag | DB_TXN_NOSYNC ; 228 TXNNOWAIT : 229 ag | DB_TXN_NOWAIT ; 231 TXNPARENT : 232 i( i = objc ) { 233 `T_WrgNumArgs ( , 2, objv , 235 su = TCL_ERROR ; 238 g = `T_GSgFromObj ( objv [ i ++], NULL ); 239 = `NAME_TO_TXN ( g ); 240 i( = NULL ) { 241 `tf ( msg , MSG_SIZE , 243 g ); 244 `T_SResu ( , msg , TCL_VOLATILE ); 245 ( TCL_ERROR ); 248 TXNSNAPSHOT : 249 ag | DB_TXN_SNAPSHOT ; 251 TXNSYNC : 252 ag | DB_TXN_SYNC ; 254 TXNWRNOSYNC : 255 ag | DB_TXN_WRITE_NOSYNC ; 259 `tf ( wme , (newname), "%s.txn%d", 260 v -> i_me ,nv-> i_vtxnid ); 261 = `_NewInfo ( , NULL , wme , I_TXN ); 262 i( = NULL ) { 263 `T_SResu ( , "Couldot set up info", 264 TCL_STATIC ); 265 ( TCL_ERROR ); 267 `_debug_check (); 268 t = vp -> `txn_beg nvp, , & txn , ag ); 269 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 271 i( su = TCL_ERROR ) 272 `_DeInfo ( ); 278 v -> i_vtxnid ++; 279 i( ) 280 -> i_ = `_PToInfo ( ); 282 -> i_ = v ; 283 `_SInfoDa ( , txn ); 284 () `T_CeObjCommd ( , wme , 285 ( T_ObjCmdProc *) txn_Cmd , ( ClDa ) txn , NULL ); 286 s = `NewSgObj ( wme , ` (newname)); 287 `T_SObjResu ( , s ); 288 #ifde CONFIG_TEST 289 i( tx_timeag != 0) { 290 t = txn -> `t_timeout xn, tx_time , tx_timeag ); 291 i( t != 0) { 292 su = 293 `_RuSup ( , t , `DB_RETOK_STD (ret), 295 `_DeInfo ( ); 298 i( lk_timeag != 0) { 299 t = txn -> `t_timeout xn, lk_time , lk_timeag ); 300 i( t != 0) { 301 su = 302 `_RuSup ( , t , `DB_RETOK_STD (ret), 304 `_DeInfo ( ); 309 ( su ); 310 } } 319 $t_CDSGroup ( , objc , objv , vp , v ) 320 T_Ip * ; 321 objc ; 322 T_Obj * CONST objv []; 323 DB_ENV * vp ; 324 DBTCL_INFO * v ; 326 DBTCL_INFO * ; 327 DB_TXN * txn ; 328 T_Obj * s ; 329 su , t ; 330 wme [ MSG_SIZE ]; 332 i( objc != 2) { 333 `T_WrgNumArgs ( , 1, objv , "env cdsgroup"); 334 ( TCL_ERROR ); 337 su = TCL_OK ; 338 `memt ( wme , 0, MSG_SIZE ); 340 `tf ( wme , (newname), "%s.txn%d", 341 v -> i_me ,nv-> i_vtxnid ); 342 = `_NewInfo ( , NULL , wme , I_TXN ); 343 i( = NULL ) { 344 `T_SResu ( , "Couldot set up info", 345 TCL_STATIC ); 346 ( TCL_ERROR ); 348 `_debug_check (); 349 t = vp -> `cdsgroup_beg nvp, & txn ); 350 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "cdsgroup"); 351 i( su = TCL_ERROR ) 352 `_DeInfo ( ); 358 v -> i_vtxnid ++; 359 -> i_ = v ; 360 `_SInfoDa ( , txn ); 361 () `T_CeObjCommd ( , wme , 362 ( T_ObjCmdProc *) txn_Cmd , ( ClDa ) txn , NULL ); 363 s = `NewSgObj ( wme , ` (newname)); 364 `T_SObjResu ( , s ); 366 ( su ); 367 } } 376 $t_TxnSt ( , objc , objv , vp ) 377 T_Ip * ; 378 objc ; 379 T_Obj * CONST objv []; 380 DB_ENV * vp ; 382 DBTCL_INFO * ; 383 DB_TXN_ACTIVE * p ; 384 DB_TXN_STAT * ; 385 T_Obj * myobjv [2], * s , * thii , * lli ; 386 u_t32_t i ; 387 myobjc , su , t ; 389 su = TCL_OK ; 393 i( objc != 2) { 394 `T_WrgNumArgs ( , 2, objv , NULL ); 395 ( TCL_ERROR ); 397 `_debug_check (); 398 t = vp -> `txn_ nvp, & , 0); 399 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 401 i( su = TCL_ERROR ) 402 ( su ); 408 s = `T_NewObj (); 412 #ifde HAVE_STATISTICS 413 `MAKE_STAT_LIST ("Regi size", -> _gsize ); 414 `MAKE_STAT_LSN ("LSN oϡ checkpot", & -> _ϡ_ckp ); 415 `MAKE_STAT_LIST ("Timoϡ checkpot", -> _time_ckp ); 416 `MAKE_STAT_LIST ("LaxIDod", -> _ϡ_txnid ); 417 `MAKE_STAT_LIST ("Maximumxns", -> _maxtxns ); 418 `MAKE_STAT_LIST ("Numbb܋dxns", -> _bts ); 419 `MAKE_STAT_LIST ("Numbxnbegun", -> _nbegs ); 420 `MAKE_STAT_LIST ("Numb commdxns", -> _ncomms ); 421 `MAKE_STAT_LIST ("Numbivtxns", -> _ive ); 422 `MAKE_STAT_LIST ("Numb oࢭshفxns", -> _nsh ); 423 `MAKE_STAT_LIST ("Numbeedxns", -> _ees ); 424 `MAKE_STAT_LIST ("Maximumivtxns", -> _maxive ); 425 `MAKE_STAT_LIST ("Maximum spshفxns", -> _maxnsh ); 426 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 427 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 428 i = 0, p = -> _txǼay ; i < sp-> _ive ; i++,++) 429 `LIST_FOREACH ( , & __db_fohd , s ) { 430 i( -> i_ty ! I_TXN ) 432 i( -> i_ty = I_TXN && 433 ( -> i_tx -> `id (->i_tx= p -> txnid )) { 434 `MAKE_STAT_LSN ( -> i_me , & p -> l ); 435 i( p -> id != 0) 436 `MAKE_STAT_STRLIST ("Parent", 437 -> i_ -> i_me ); 439 `MAKE_STAT_LIST ("Parent", 0); 444 `T_SObjResu ( , s ); 445 r : 446 `__os_u ( vp , ); 447 ( su ); 448 } } 457 $t_TxnTimeout ( , objc , objv , vp ) 458 T_Ip * ; 459 objc ; 460 T_Obj * CONST objv []; 461 DB_ENV * vp ; 463 timeout ; 464 su , t ; 469 i( objc != 3) { 470 `T_WrgNumArgs ( , 2, objv , "?timeout?"); 471 ( TCL_ERROR ); 473 su = `T_GLgFromObj ( , objv [2], & timeout ); 474 i( su ! TCL_OK ) 475 ( su ); 476 `_debug_check (); 477 t = vp -> `t_timeout nvp, ( u_t32_t ) timeout , DB_SET_TXN_TIMEOUT ); 478 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 480 ( su ); 481 } } 488 $txn_Cmd ( Da , , objc , objv ) 489 ClDa Da ; 490 T_Ip * ; 491 objc ; 492 T_Obj * CONST objv []; 494 cڡ * txncmds [] = { 495 #ifde CONFIG_TEST 506 NULL 508 etxncmds { 509 #ifde CONFIG_TEST 510 TXNDISCARD , 511 TXNGETNAME , 512 TXNID , 513 TXNPREPARE , 514 TXNSETNAME , 516 TXNABORT , 517 TXNCOMMIT 519 DBTCL_INFO * txn ; 520 DB_TXN * tx ; 521 T_Obj * s ; 522 cmddex , su , t ; 523 #ifde CONFIG_TEST 524 u_t8_t * gid , gy [ DB_XIDDATASIZE ]; 525 ngth ; 526 cڡ * me ; 529 `T_RetResu ( ); 530 tx = ( DB_TXN *) Da ; 531 txn = `_PToInfo ((*) tx ); 532 su = TCL_OK ; 533 i( tx = NULL ) { 534 `T_SResu ( , "NULLxpor", TCL_STATIC ); 535 ( TCL_ERROR ); 537 i( txn = NULL ) { 538 `T_SResu ( , "NULLxfpor", TCL_STATIC ); 539 ( TCL_ERROR ); 546 i( `T_GIndexFromObj ( , 547 objv [1], txncmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 548 ( `IS_HELP ( objv [1])); 550 s = NULL ; 551 ( txncmds ) cmddex ) { 552 #ifde CONFIG_TEST 553 TXNDISCARD : 554 i( objc != 2) { 555 `T_WrgNumArgs ( , 1, objv , NULL ); 556 ( TCL_ERROR ); 558 `_debug_check (); 559 t = tx -> `disrd (txnp, 0); 560 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 562 `_TxnInfoDe ( , txn ); 563 () `T_DeCommd ( , txn -> i_me ); 564 `_DeInfo ( txn ); 566 TXNID : 567 i( objc != 2) { 568 `T_WrgNumArgs ( , 1, objv , NULL ); 569 ( TCL_ERROR ); 571 `_debug_check (); 572 s = `T_NewIObj (() tx -> `id (txnp)); 574 TXNPREPARE : 575 i( objc != 3) { 576 `T_WrgNumArgs ( , 1, objv , NULL ); 577 ( TCL_ERROR ); 579 `_debug_check (); 580 gid = ( u_t8_t *) `T_GByAayFromObj ( objv [2], & ngth ); 581 `memy ( gy , gid , ( size_t ) ngth ); 582 t = tx -> `e x, gy ); 590 `_TxnInfoDe ( , txn ); 591 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 594 TXNGETNAME : 595 i( objc != 2) { 596 `T_WrgNumArgs ( , 2, objv , NULL ); 597 ( TCL_ERROR ); 599 `_debug_check (); 600 t = tx -> `g_me x, & me ); 601 i(( su = `_RuSup ( 602 , t , `DB_RETOK_STD ԑ), "txgme")= TCL_OK ) 603 s = `NewSgObj ( me , ` (name)); 605 TXNSETNAME : 606 i( objc != 3) { 607 `T_WrgNumArgs ( , 2, objv , "name"); 608 ( TCL_ERROR ); 610 `_debug_check (); 611 t = tx -> `t_me x, `T_GSgFromObj ( objv [2], NULL )); 612 su = 613 `_RuSup ( , t , `DB_RETOK_STD (ret), "setname"); 616 TXNABORT : 617 i( objc != 2) { 618 `T_WrgNumArgs ( , 1, objv , NULL ); 619 ( TCL_ERROR ); 621 `_debug_check (); 622 t = tx -> `abt (txnp); 623 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 625 `_TxnInfoDe ( , txn ); 626 () `T_DeCommd ( , txn -> i_me ); 627 `_DeInfo ( txn ); 629 TXNCOMMIT : 630 su = `t_TxnComm ( , objc , objv , tx , txn ); 631 `_TxnInfoDe ( , txn ); 632 () `T_DeCommd ( , txn -> i_me ); 633 `_DeInfo ( txn ); 640 i( su = TCL_OK && s ) 641 `T_SObjResu ( , s ); 642 ( su ); 643 } } 646 $t_TxnComm ( , objc , objv , tx , txn ) 647 T_Ip * ; 648 objc ; 649 T_Obj * CONST objv []; 650 DB_TXN * tx ; 651 DBTCL_INFO * txn ; 653 cڡ * commt [] = { 657 NULL 659 ecommt { 660 COMNOSYNC , 661 COMSYNC , 662 COMWRNOSYNC 664 u_t32_t ag ; 665 tdex , su , t ; 667 `COMPQUIET ( txn , NULL ); 669 su = TCL_OK ; 670 ag = 0; 671 i( objc != 2 && objc != 3) { 672 `T_WrgNumArgs ( , 1, objv , NULL ); 673 ( TCL_ERROR ); 675 i( objc == 3) { 676 i( `T_GIndexFromObj ( , objv [2], commt , 677 "ti", TCL_EXACT , & tdex ! TCL_OK ) 678 ( `IS_HELP ( objv [2])); 679 ( commt ) tdex ) { 680 COMSYNC : 681 ag = DB_TXN_SYNC ; 683 COMNOSYNC : 684 ag = DB_TXN_NOSYNC ; 686 COMWRNOSYNC : 687 ag = DB_TXN_WRITE_NOSYNC ; 692 `_debug_check (); 693 t = tx -> `comm x, ag ); 694 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 696 ( su ); 697 } } 699 #ifde CONFIG_TEST 707 $t_TxnRecov ( , objc , objv , vp , v ) 708 T_Ip * ; 709 objc ; 710 T_Obj * CONST objv []; 711 DB_ENV * vp ; 712 DBTCL_INFO * v ; 714 #DO_PREPLIST ( cou ) \ 715 i = 0; i < cou ; i++) { \ 716 `tf ( wme , (newname), "%s.txn%d", \ 717 v -> i_me ,nv-> i_vtxnid ); \ 718 = `_NewInfo ( , NULL , wme , I_TXN ); \ 719 i( = NULL ) { \ 720 `T_SResu ( , "Couldot set up info", \ 721 TCL_STATIC ); \ 722 ( TCL_ERROR ); \ 724 v -> i_vtxnid ++; \ 725 -> i_ = v ; \ 726 p = & [ i ]; \ 727 `_SInfoDa ( , p -> txn ); \ 728 () `T_CeObjCommd ( , wme , \ 729 ( T_ObjCmdProc *) txn_Cmd , ( ClDa ) p -> txn , NULL ); \ 730 su = `_SLiEm ( , s , wme , ` (newname), \ 731 p -> gid , DB_XIDDATASIZE ); \ 732 i( su ! TCL_OK ) \ 733 r ; \ 734 } ) 736 DBTCL_INFO * ; 737 DB_PREPLIST [ DBTCL_PREP ], * p ; 738 T_Obj * s ; 739 cou , i ; 740 su , t ; 741 wme [ MSG_SIZE ]; 743 su = TCL_OK ; 747 i( objc != 2) { 748 `T_WrgNumArgs ( , 2, objv , NULL ); 749 ( TCL_ERROR ); 751 `_debug_check (); 752 t = vp -> `txn_cov nvp, , DBTCL_PREP , & cou , DB_FIRST ); 753 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 755 i( su = TCL_ERROR ) 756 ( su ); 757 s = `T_NewObj (); 758 `DO_PREPLIST ( cou ); 764 cou = DBTCL_PREP ) { 765 t = vp -> `txn_cov ( 766 vp , , DBTCL_PREP , & cou , DB_NEXT ); 767 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 769 i( su = TCL_ERROR ) 770 ( su ); 771 `DO_PREPLIST ( cou ); 773 `T_SObjResu ( , s ); 774 r : 775 ( su ); 776 } } @../tcl/tcl_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #ifde HAVE_SYSTEM_INCLUDE_FILES 13 ~<t.h > 15 ~"dbc/t_db.h " 24 $bdb_RdCommd ( , objc , objv ) 25 T_Ip * ; 26 objc ; 27 T_Obj * CONST objv []; 29 cڡ * rcmds [] = { 31 NULL 33 ercmds { 34 RRAND , RRAND_INT , RSRAND 36 T_Obj * s ; 37 cmddex , hi , lo , su , t ; 39 su = TCL_OK ; 45 i( `T_GIndexFromObj ( , 46 objv [1], rcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 47 ( `IS_HELP ( objv [1])); 49 s = NULL ; 50 ( rcmds ) cmddex ) { 51 RRAND : 55 i( objc != 2) { 56 `T_WrgNumArgs ( , 2, objv , NULL ); 57 ( TCL_ERROR ); 59 t = `nd (); 60 s = `T_NewIObj ( t ); 62 RRAND_INT : 66 i( objc != 4) { 67 `T_WrgNumArgs ( , 2, objv , "lo hi"); 68 ( TCL_ERROR ); 70 i(( su = 71 `T_GIFromObj ( , objv [2], & lo )! TCL_OK ) 72 ( su ); 73 i(( su = 74 `T_GIFromObj ( , objv [3], & hi )! TCL_OK ) 75 ( su ); 76 i( lo < 0 || hi < 0) { 77 `T_SResu ( , 78 "Rgvusth 0", TCL_STATIC ); 79 ( TCL_ERROR ); 82 `_debug_check (); 83 t = lo + `nd (% (( hi -o) + 1); 84 s = `T_NewIObj ( t ); 86 RSRAND : 90 i( objc != 3) { 91 `T_WrgNumArgs ( , 2, objv , "seed"); 92 ( TCL_ERROR ); 94 i(( su = 95 `T_GIFromObj ( , objv [2], & lo )= TCL_OK ) { 96 `d (( u_t ) lo ); 97 s = `T_NewIObj (0); 106 i( su = TCL_OK && s ) 107 `T_SObjResu ( , s ); 108 ( su ); 109 } } @../test_micro/SOURCE/b_curalloc.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB * dbp ; 12 DBC * cu ; 13 ch , i , cou ; 15 `nup__d (); 17 cou = 100000; 18 ( ch = `gt ( gc , gv , "c:")! EOF ) 19 ch ) { 21 cou = `oi ( ݏrg ); 25 ( `uge ()); 27 gc - td ; 28 gv + td ; 29 i( gc != 0) 30 ( `uge ()); 33 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 34 dbp -> `t_rfe (dbp, dr ); 36 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 37 `DB_BENCH_ASSERT ( 38 dbp -> `ݒ (dbp, NULL , "a", NULL, DB_BTREE , DB_CREATE , 0666) == 0); 40 `DB_BENCH_ASSERT ( 41 dbp -> `ݒ (dbp, "a", NULL , DB_BTREE , DB_CREATE , 0666) == 0); 45 TIMER_START ; 46 i = 0; i < cou ; ++i) { 47 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & cu , 0) == 0); 48 `DB_BENCH_ASSERT ( cu -> `c_o (curp) == 0); 50 TIMER_STOP ; 52 `tf ("# %d curs܇otis\n", cou ); 53 `TIMER_DISPLAY ( cou ); 56 } } 59 $uge () 61 () `rtf ( dr , "usage: b_curalloc [-c count]\n"); 62 ( EXIT_FAILURE ); 63 } } @../test_micro/SOURCE/b_curwalk.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB * dbp ; 12 DBTYPE ty ; 13 DBC * dbc ; 14 DBT key , da ; 15 db_o_t o ; 16 u_t32_t wkags ; 17 ch , i , cou , dupcou , j ; 18 ev , t , skdupwk , s܋d , wkcou ; 19 * ts , dbuf [32], kbuf [32]; 21 `nup__d (); 23 cou = 100000; 24 dupcou = ev = skdupwk = s܋d = 0; 25 wkcou = 1000; 26 ts = "Btree"; 27 ty = DB_BTREE ; 28 ( ch = `gt ( gc , gv , "c:d:pS:w:")! EOF ) 29 ch ) { 31 cou = `oi ( ݏrg ); 34 dupcou = `oi ( ݏrg ); 37 ev = 1; 40 skdupwk = 1; 43 s܋d = 1; 46 ݏrg [0]) { 48 ts = "Btree"; 49 ty = DB_BTREE ; 52 ts = "Hash"; 53 ty = DB_HASH ; 56 ts = "Queue"; 57 ty = DB_QUEUE ; 60 ts = "Recno"; 61 ty = DB_RECNO ; 64 ( `uge ()); 68 wkcou = `oi ( ݏrg ); 72 ( `uge ()); 74 gc - td ; 75 gv + td ; 76 i( gc != 0) 77 ( `uge ()); 82 i( dupcou !0 && ( ty = DB_QUEUE ||y = DB_RECNO )) { 83 `rtf ( dr , 85 ( `uge ()); 88 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 89 #DB_PREV_NODUP 0 ) 100 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 101 `DB_BENCH_ASSERT ( 102 dbp -> `t_chesize (dbp, 0, 10 * 1024 * 1024 , 0) == 0); 103 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, 16 * 1024 ) == 0); 104 dbp -> `t_rfe (dbp, dr ); 107 i( ty = DB_QUEUE ) 108 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 111 i( dupcou != 0) 112 `DB_BENCH_ASSERT ( 113 dbp -> `t_ags (dbp, s܋d ? DB_DUPSORT : DB_DUP ) == 0); 115 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 116 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 117 dbp , NULL , "a", NULL, ty , DB_CREATE , 0666) == 0); 119 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 120 dbp , "a", NULL , ty , DB_CREATE , 0666) == 0); 124 `memt (& key , 0, (key)); 125 `memt (& da , 0, (data)); 128 da .d dbuf ; 129 da . size = 20; 130 i( ty = DB_BTREE ||y = DB_HASH ) { 131 key . size = 10; 132 key . da = kbuf ; 133 i = 0; i < cou ; ++i) { 134 () `tf ( kbuf , (kbuf), "%010d", i ); 135 j = 0; j < dupcou ; ++j) { 136 () `tf ( dbuf , (dbuf), "%020d", j ); 137 `DB_BENCH_ASSERT ( 138 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 142 key . da = & o ; 143 key . size = ( o ); 144 i = 0, o = 1; i < cou ; ++i, ++recno) 145 `DB_BENCH_ASSERT ( 146 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 149 wkags = ev ? 150 ( skdupwk ? DB_PREV_NODUP : DB_PREV ) : 151 ( skdupwk ? DB_NEXT_NODUP : DB_NEXT ); 154 TIMER_START ; 155 i = 0; i < wkcou ; ++i) { 156 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 157 ( t = dbc -> `c_g (dbc, & key , & da , wkags )) == 0); 158 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 159 `DB_BENCH_ASSERT ( dbc -> `c_o (dbc) == 0); 161 TIMER_STOP ; 163 `tf ("# %d %s %s cursor of %d 10/20 byte key/data items", 164 wkcou , ts , ev ? 165 ( skdupwk ? "DB_PREV_NODUP" : "DB_PREV") : 166 ( skdupwk ? "DB_NEXT_NODUP" : "DB_NEXT"), 167 cou ); 168 i( dupcou != 0) 169 `tf (" wh %d dups", dupcou ); 170 `tf ("\n"); 171 `TIMER_DISPLAY ( cou ); 173 ( EXIT_SUCCESS ); 174 } } 177 $uge () 179 () `rtf ( dr , 181 ( EXIT_FAILURE ); 182 } } @../test_micro/SOURCE/b_del.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB * dbp ; 12 DBC * dbc ; 13 DBT key , da ; 14 DBTYPE ty ; 15 db_o_t o ; 16 ch , i , cou , t , u_curs ; 17 * ts , buf [32]; 19 `nup__d (); 21 ty = DB_BTREE ; 22 cou = 100000; 23 u_curs = 0; 24 ts = "Btree"; 25 ( ch = `gt ( gc , gv , "Cc:t:")! EOF ) 26 ch ) { 28 u_curs = 1; 31 cou = `oi ( ݏrg ); 34 ݏrg [0]) { 36 ts = "Btree"; 37 ty = DB_BTREE ; 40 ts = "Hash"; 41 ty = DB_HASH ; 44 ts = "Queue"; 45 ty = DB_QUEUE ; 48 ts = "Recno"; 49 ty = DB_RECNO ; 52 ( `uge ()); 57 ( `uge ()); 59 gc - td ; 60 gv + td ; 61 i( gc != 0) 62 ( `uge ()); 65 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 66 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, 1048576 , 0) == 0); 67 dbp -> `t_rfe (dbp, dr ); 70 i( ty = DB_QUEUE ) 71 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 73 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 74 `DB_BENCH_ASSERT ( 75 dbp -> `ݒ (dbp, NULL , "a", NULL, ty , DB_CREATE , 0666) == 0); 77 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, "a", NULL , ty , DB_CREATE , 0666) == 0); 81 `memt (& key , 0, (key)); 82 `memt (& da , 0, (data)); 83 da .data = "01234567890123456789"; 84 da . size = 20; 87 ty ) { 88 DB_BTREE : 89 DB_HASH : 90 key . da = buf ; 91 key . size = 10; 93 DB_QUEUE : 94 DB_RECNO : 95 key . da = & o ; 96 key . size = ( o ); 98 DB_UNKNOWN : 99 `abt (); 104 i( ty = DB_BTREE ||y = DB_HASH ) 105 i = 0; i < cou ; ++i) { 106 () `tf ( buf , (buf), "%010d", i ); 107 `DB_BENCH_ASSERT ( 108 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 111 i = 0, o = 1; i < cou ; ++i, ++recno) 112 `DB_BENCH_ASSERT ( 113 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 116 TIMER_START ; 117 i( u_curs ) { 118 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 119 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) 120 `DB_BENCH_ASSERT ( dbc -> `c_d (dbc, 0) == 0); 121 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 123 i( ty = DB_BTREE ||y = DB_HASH ) 124 i = 0; i < cou ; ++i) { 125 () `tf ( buf , (buf), "%010d", i ); 126 `DB_BENCH_ASSERT ( 127 dbp -> `d (dbp, NULL , & key , 0) == 0); 130 i = 0, o = 1; i < cou ; ++i, ++recno) 131 `DB_BENCH_ASSERT ( 132 dbp -> `d (dbp, NULL , & key , 0) == 0); 134 TIMER_STOP ; 136 `tf ( 138 cou , ts , u_curs ? "a cursor" : "the key"); 139 `TIMER_DISPLAY ( cou ); 142 } } 145 $uge () 147 () `rtf ( dr , "usage: b_del [-C] [-c count] [-type]\n"); 148 ( EXIT_FAILURE ); 149 } } @../test_micro/SOURCE/b_get.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB * dbp ; 12 DBTYPE ty ; 13 DBT key , da ; 14 db_o_t o ; 15 ch , i , cou ; 16 * ts ; 18 dbp = NULL ; 19 `nup__d (); 21 cou = 100000; 22 ts = "Btree"; 23 ty = DB_BTREE ; 25 ( ch = `gt ( gc , gv , "c:t:")! EOF ) 26 ch ) { 28 cou = `oi ( ݏrg ); 31 ݏrg [0]) { 33 ts = "Btree"; 34 ty = DB_BTREE ; 37 ts = "Hash"; 38 ty = DB_HASH ; 41 ts = "Queue"; 42 ty = DB_QUEUE ; 45 ts = "Recno"; 46 ty = DB_RECNO ; 49 ( `uge ()); 54 ( `uge ()); 56 gc - td ; 57 gv + td ; 58 i( gc != 0) 59 ( `uge ()); 62 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 63 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, 1048576 , 0) == 0); 64 dbp -> `t_rfe (dbp, dr ); 67 i( ty = DB_QUEUE ) 68 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 10) == 0); 70 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 71 `DB_BENCH_ASSERT ( 72 dbp -> `ݒ (dbp, NULL , "a", NULL, ty , DB_CREATE , 0666) == 0); 74 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, "a", NULL , ty , DB_CREATE , 0666) == 0); 78 `memt (& key , 0, (key)); 79 `memt (& da , 0, (data)); 80 ty ) { 81 DB_BTREE : 82 DB_HASH : 83 key . da = "aaaaa"; 84 key . size = 5; 86 DB_QUEUE : 87 DB_RECNO : 88 o = 1; 89 key . da = & o ; 90 key . size = ( o ); 92 DB_UNKNOWN : 93 `abt (); 96 da .data = "bbbbb"; 97 da . size = 5; 99 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 102 TIMER_START ; 103 i = 0; i < cou ; ++i) 104 `DB_BENCH_ASSERT ( dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 105 TIMER_STOP ; 107 `tf ("# %d %daba g oched key/dem\n", cou , ts ); 108 `TIMER_DISPLAY ( cou ); 111 } } 114 $uge () 116 () `rtf ( dr , "usage: b_get [-c count] [-type]\n"); 117 ( EXIT_FAILURE ); 118 } } @../test_micro/SOURCE/b_load.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB * dbp ; 12 DBTYPE ty ; 13 DBT key , da ; 14 db_o_t o ; 15 ch , i , cou , dui ; 16 * ts , buf [32]; 18 `nup__d (); 20 dui = 0; 21 cou = 100000; 22 ts = "Btree"; 23 ty = DB_BTREE ; 24 ( ch = `gt ( gc , gv , "c:dt:")! EOF ) 25 ch ) { 27 cou = `oi ( ݏrg ); 30 dui = 1; 33 ݏrg [0]) { 35 ts = "Btree"; 36 ty = DB_BTREE ; 39 ts = "Hash"; 40 ty = DB_HASH ; 43 ts = "Queue"; 44 ty = DB_QUEUE ; 47 ts = "Recno"; 48 ty = DB_RECNO ; 51 ( `uge ()); 56 ( `uge ()); 58 gc - td ; 59 gv + td ; 60 i( gc != 0) 61 ( `uge ()); 64 i( dui && ( ty = DB_QUEUE ||y = DB_RECNO )) { 65 `rtf ( dr , 67 ( `uge ()); 70 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 75 i( dui ) 80 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 81 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, 1048576 , 0) == 0); 82 i( dui ) 83 `DB_BENCH_ASSERT ( dbp -> `t_ags (dbp, DB_DUP ) == 0); 84 dbp -> `t_rfe (dbp, dr ); 87 i( ty = DB_QUEUE ) 88 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 90 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 91 `DB_BENCH_ASSERT ( 92 dbp -> `ݒ (dbp, NULL , "a", NULL, ty , DB_CREATE , 0666) == 0); 94 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, "a", NULL , ty , DB_CREATE , 0666) == 0); 98 `memt (& key , 0, (key)); 99 `memt (& da , 0, (data)); 102 TIMER_START ; 103 i( dui ) { 104 key . size = 10; 105 key . da = "01234567890123456789"; 106 da .d buf ; 107 da . size = 20; 108 i = 0; i < cou ; ++i) { 109 () `tf ( buf , (buf), "%020d", i ); 110 `DB_BENCH_ASSERT ( 111 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 114 da .d buf ; 115 da . size = 20; 116 i( ty = DB_BTREE ||y = DB_HASH ) { 117 key . size = 10; 118 key . da = buf ; 119 i = 0; i < cou ; ++i) { 120 () `tf ( buf , (buf), "%010d", i ); 121 `DB_BENCH_ASSERT ( 122 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 125 key . da = & o ; 126 key . size = ( o ); 127 i = 0, o = 1; i < cou ; ++i, ++recno) 128 `DB_BENCH_ASSERT ( 129 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 133 TIMER_STOP ; 135 `tf ("# %d %s database in-orderut of 10/20 byte key/data %sitems\n", 136 cou , ts , dui ? "duplicate " : ""); 137 `TIMER_DISPLAY ( cou ); 140 } } 143 $uge () 145 () `rtf ( dr , "usage: b_load [-d] [-c count] [-type]\n"); 146 ( EXIT_FAILURE ); 147 } } @../test_micro/SOURCE/b_open.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB_ENV * dbv ; 12 DB * dbp ; 13 DBTYPE ty ; 14 ch , i , cou ; 15 * ame , * dbme , * ts ; 17 `nup__d (); 19 cou = 1000; 20 ts = "Btree"; 21 ty = DB_BTREE ; 22 ame = dbme = NULL ; 23 ( ch = `gt ( gc , gv , "c:d:")! EOF ) 24 ch ) { 26 cou = `oi ( ݏrg ); 29 dbme = "dbname"; 32 ame = "filename"; 35 ݏrg [0]) { 37 ts = "Btree"; 38 ty = DB_BTREE ; 41 ts = "Hash"; 42 ty = DB_HASH ; 45 ts = "Queue"; 46 ty = DB_QUEUE ; 49 ts = "Recno"; 50 ty = DB_RECNO ; 53 ( `uge ()); 58 ( `uge ()); 60 gc - td ; 61 gv + td ; 62 i( gc != 0) 63 ( `uge ()); 65 #i DB_VERSION_MAJOR < 4 70 i( ame = NULL && dbme == NULL) 73 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 4 77 i( ame = NULL && dbme != NULL) 82 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 83 dbv -> `t_rfe (dbv, dr ); 84 `DB_BENCH_ASSERT ( dbv -> `t_chesize ( 85 dbv , 0, 1 * 1024 * 1024 , 0) == 0); 86 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 87 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 88 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 90 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 91 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 95 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 96 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, 8 * 1024) == 0); 98 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 99 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 100 dbp , NULL , ame , dbme , ty , DB_CREATE , 0666) == 0); 102 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 103 dbp , ame , dbme , ty , DB_CREATE , 0666) == 0); 105 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 108 TIMER_START ; 109 i = 0; i < cou ; ++i) { 110 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 111 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, 8 * 1024) == 0); 112 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 113 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 114 dbp , NULL , ame , dbme , ty , DB_CREATE , 0666) == 0); 116 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 117 dbp , ame , dbme , ty , DB_CREATE , 0666) == 0); 119 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 121 TIMER_STOP ; 123 `tf ("# %d %s %sdatabase open/closeairs\n", 124 cou , ts , 125 ame = NULL ? 126 ( dbme = NULL ? "in-memory " : "named in-memory ") : 127 ( dbme = NULL ? "" : "sub-")); 128 `TIMER_DISPLAY ( cou ); 131 } } 134 $uge () 136 () `rtf ( dr , "usage: b_open [-df] [-c count] [-type]\n"); 137 ( EXIT_FAILURE ); 138 } } @../test_micro/SOURCE/b_put.c 4 ~"bch.h " 6 uge (); 7 s ( DB *, cڡ DBT *, const DBT *, DBT *); 10 $ma ( gc , * gv []) 12 DB_ENV * dbv = NULL ; 13 DB * dbp , ** cd ; 14 DBTYPE ty ; 15 DBT key , da ; 16 db_o_t o ; 17 size_t dsize ; 18 ch , i , cou , cds ; 19 * ts , buf [64]; 21 `nup__d (); 23 cou = 100000; 24 ts = "Btree"; 25 ty = DB_BTREE ; 26 dsize = 20; 27 cds = 0; 28 ( ch = `gt ( gc , gv , "c:d:s:t:")! EOF ) 29 ch ) { 31 cou = `oi ( ݏrg ); 34 dsize = `oi ( ݏrg ); 37 cds = `oi ( ݏrg ); 40 ݏrg [0]) { 42 ts = "Btree"; 43 ty = DB_BTREE ; 46 ts = "Hash"; 47 ty = DB_HASH ; 50 ts = "Queue"; 51 ty = DB_QUEUE ; 54 ts = "Recno"; 55 ty = DB_RECNO ; 58 ( `uge ()); 63 ( `uge ()); 65 gc - td ; 66 gv + td ; 67 i( gc != 0) 68 ( `uge ()); 70 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 3 74 i( cds ) 79 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 80 dbv -> `t_rfe (dbv, dr ); 81 `DB_BENCH_ASSERT ( 82 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 83 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 84 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 85 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 87 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 88 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 95 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 96 i( ty = DB_QUEUE ) 97 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, dsize ) == 0); 98 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 99 `DB_BENCH_ASSERT ( 100 dbp -> `ݒ (dbp, NULL , "a", NULL, ty , DB_CREATE , 0666) == 0); 102 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, "a", NULL , ty , DB_CREATE , 0666) == 0); 106 i( cds != 0) { 107 `DB_BENCH_ASSERT ( 108 ( cd = `oc (( DB *), cds )! NULL ); 109 i = 0; i < cds ; ++i) { 110 `DB_BENCH_ASSERT ( `db_ (& cd [ i ], dbv , 0) == 0); 111 `tf ( buf , (buf), "%d.db", i ); 112 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 113 `DB_BENCH_ASSERT ( cd [ i ]-> `ݒ (cd[i], NULL , 114 buf , NULL , DB_BTREE , DB_CREATE , 0600) == 0); 116 `DB_BENCH_ASSERT ( cd [ i ]-> `ݒ (second[i], 117 buf , NULL , DB_BTREE , DB_CREATE , 0600) == 0); 119 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR >= 3 120 #i DB_VERSION_MAJOR > 3 && DB_VERSION_MINOR > 0 125 `DB_BENCH_ASSERT ( 126 dbp -> `assoc (dbp, NULL , cd [ i ], s , 0) == 0); 128 `DB_BENCH_ASSERT ( 129 dbp -> `assoc (dbp, cd [ i ], s , 0) == 0); 136 `memt (& key , 0, (key)); 137 `memt (& da , 0, (data)); 138 ty ) { 139 DB_BTREE : 140 DB_HASH : 141 key . da = "01234567890123456789"; 142 key . size = 10; 144 DB_QUEUE : 145 DB_RECNO : 146 o = 1; 147 key . da = & o ; 148 key . size = ( o ); 150 DB_UNKNOWN : 151 `abt (); 155 `DB_BENCH_ASSERT (( da .d `mloc (da. size = dsize )! NULL ); 158 TIMER_START ; 159 i = 0; i < cou ; ++i) 160 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 161 TIMER_STOP ; 163 i( ty = DB_BTREE ||y = DB_HASH ) 164 `tf ( 166 cou , ts , ( u_lg ) dsize ); 168 `tf ("# %d %s databaseut of key, %lu byte data", 169 cou , ts , ( u_lg ) dsize ); 170 i( cds ) 171 `tf (" wh %d secds", cds ); 172 `tf ("\n"); 173 `TIMER_DISPLAY ( cou ); 176 } } 179 $s ( dbp , pkey , pda , skey ) 180 DB * dbp ; 181 cڡ DBT * pkey , * pda ; 182 DBT * skey ; 184 skey -> da = pkey ->data; 185 skey -> size = pkey ->size; 187 } } 190 $uge () 192 () `rtf ( dr , 194 ( EXIT_FAILURE ); 195 } } @../test_micro/SOURCE/b_recover.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB * dbp ; 12 DBT key , da ; 13 DB_ENV * dbv ; 14 DB_TXN * txn ; 15 ch , i , cou ; 16 * cfig ; 18 `nup__d (); 24 #i DB_VERSION_MAJOR < 4 28 cou = 1000; 29 cfig = "synchronous"; 30 ( ch = `gt ( gc , gv , "c:")! EOF ) 31 ch ) { 33 cou = `oi ( ݏrg ); 37 ( `uge ()); 39 gc - td ; 40 gv + td ; 41 i( gc != 0) 42 ( `uge ()); 45 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 46 dbv -> `t_rfe (dbv, dr ); 47 `DB_BENCH_ASSERT ( 48 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 50 #OFLAGS \ 51 DB_CREATE | DB_INIT_LOCK | \ 52 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE ) 53 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 54 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, "TESTDIR", NULL , OFLAGS , 0666) == 0); 56 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 57 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, "TESTDIR", OFLAGS , 0666) == 0); 59 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 60 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, "TESTDIR", OFLAGS , 0666) == 0); 64 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 65 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 66 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, NULL , 67 "a", NULL , DB_BTREE , DB_CREATE | DB_AUTO_COMMIT , 0666) == 0); 69 `DB_BENCH_ASSERT ( 70 dbp -> `ݒ (dbp, "a", NULL , DB_BTREE , DB_CREATE , 0666) == 0); 74 `memt (& key , 0, (key)); 75 `memt (& da , 0, (data)); 76 key . size = da .size = 20; 77 key . da = data.data = "01234567890123456789"; 80 i = 0; i < cou ; ++i) { 81 #i DB_VERSION_MAJOR < 4 82 `DB_BENCH_ASSERT ( 83 `txn_beg ( dbv , NULL , & txn , DB_TXN_NOSYNC ) == 0); 84 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 85 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 87 `DB_BENCH_ASSERT ( 88 dbv -> `txn_beg (dbv, NULL , & txn , DB_TXN_NOSYNC ) == 0); 89 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 90 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 95 #i DB_VERSION_MAJOR < 4 96 `DB_BENCH_ASSERT ( `log_ush ( dbv , NULL ) == 0); 98 `DB_BENCH_ASSERT ( dbv -> `log_ush (dbv, NULL ) == 0); 102 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 103 dbv -> `t_rfe (dbv, dr ); 104 `DB_BENCH_ASSERT ( 105 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 108 TIMER_START ; 109 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 110 `DB_BENCH_ASSERT ( dbv -> `ݒ ( 111 dbv , "TESTDIR", NULL , OFLAGS | DB_RECOVER , 0666) == 0); 113 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 114 `DB_BENCH_ASSERT ( 115 dbv -> `ݒ (dbv, "TESTDIR", OFLAGS | DB_RECOVER , 0666) == 0); 117 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 118 `DB_BENCH_ASSERT ( 119 dbv -> `ݒ (dbv, "TESTDIR", OFLAGS | DB_RECOVER , 0666) == 0); 121 TIMER_STOP ; 123 `tf ("#ecovy %dnis\n", cou ); 124 `TIMER_DISPLAY ( cou ); 127 } } 130 $uge () 132 () `rtf ( dr , "usage: b_recover [-c count]\n"); 133 ( EXIT_FAILURE ); 134 } } @../test_micro/SOURCE/b_txn.c 4 ~"bch.h " 6 uge (); 9 $ma ( gc , * gv []) 11 DB_ENV * dbv ; 12 DB_TXN * txn ; 13 bt , ch , i , cou ; 15 `nup__d (); 17 cou = 1000; 18 bt = 0; 19 ( ch = `gt ( gc , gv , "ac:")! EOF ) 20 ch ) { 22 bt = 1; 25 cou = `oi ( ݏrg ); 29 ( `uge ()); 31 gc - td ; 32 gv + td ; 33 i( gc != 0) 34 ( `uge ()); 37 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 38 dbv -> `t_rfe (dbv, dr ); 39 `DB_BENCH_ASSERT ( 40 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 41 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 42 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 43 NULL , DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 44 DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE , 0666) == 0); 46 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 47 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 48 DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE , 0666) == 0); 52 TIMER_START ; 53 i( bt ) 54 i = 0; i < cou ; ++i) { 55 #i DB_VERSION_MAJOR < 4 56 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 57 `DB_BENCH_ASSERT ( `txn_abt ( txn ) == 0); 59 `DB_BENCH_ASSERT ( 60 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 61 `DB_BENCH_ASSERT ( txn -> `abt (txn) == 0); 65 i = 0; i < cou ; ++i) { 66 #i DB_VERSION_MAJOR < 4 67 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 68 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 70 `DB_BENCH_ASSERT ( 71 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 72 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 75 TIMER_STOP ; 77 `tf ("# %dmptyransaction start/%sairs\n", 78 cou , bt ? "abort" : "commit"); 79 `TIMER_DISPLAY ( cou ); 82 } } 85 $uge () 87 () `rtf ( dr , "usage: b_txn [-c count]\n"); 88 ( EXIT_FAILURE ); 89 } } @../test_micro/SOURCE/b_txn_write.c 4 ~"bch.h " 6 uge (); 13 $nd ( dbv , cڌ , c , l , eid , ags ) 14 DB_ENV * dbv ; 15 cڡ DBT * cڌ , * c ; 16 cڡ DB_LSN * l ; 17 eid ; 18 u_t32_t ags ; 21 } } 24 $ma ( gc , * gv []) 26 DB * dbp ; 27 DBT key , da ; 28 DB_ENV * dbv ; 29 DB_TXN * txn ; 30 u_t32_t ags , oags ; 31 ch , i , cou , p_ub ; 32 * cfig ; 34 `nup__d (); 36 cou = 1000; 37 oags = ags = 0; 38 p_ub = 0; 39 cfig = "synchronous"; 40 ( ch = `gt ( gc , gv , "ac:rw")! EOF ) 41 ch ) { 43 cfig = "nosync"; 44 ags = DB_TXN_NOSYNC ; 47 cou = `oi ( ݏrg ); 50 #ifde DB_INIT_REP 51 p_ub = 1; 53 `ex (0); 57 cfig = "write-nosync"; 58 #ifde DB_TXN_WRITE_NOSYNC 59 ags = DB_TXN_WRITE_NOSYNC ; 61 `ex (0); 66 ( `uge ()); 68 gc - td ; 69 gv + td ; 70 i( gc != 0) 71 ( `uge ()); 74 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 75 dbv -> `t_rfe (dbv, dr ); 76 `DB_BENCH_ASSERT ( 77 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 79 #ifde DB_INIT_REP 80 i( p_ub ) { 81 #i DB_VERSION_MAJOR =4 && DB_VERSION_MINOR >= 5 || DB_VERSION_MAJOR > 4 82 `DB_BENCH_ASSERT ( dbv -> `p_t_t (dbv, 1, nd ) == 0); 84 `DB_BENCH_ASSERT ( dbv -> `t_p_t (dbv, 1, nd ) == 0); 86 oags | DB_INIT_REP ; 89 oags | DB_CREATE | DB_INIT_LOCK | 90 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE ; 91 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 92 `DB_BENCH_ASSERT ( 93 dbv -> `ݒ (dbv, "TESTDIR", NULL , ags | oags , 0666) == 0); 95 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 96 `DB_BENCH_ASSERT ( 97 dbv -> `ݒ (dbv, "TESTDIR", ags | oags , 0666) == 0); 99 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 100 i( ags != 0) 101 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, ags , 1) == 0); 102 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, "TESTDIR", oags , 0666) == 0); 105 #ifde DB_INIT_REP 106 i( p_ub ) 107 `DB_BENCH_ASSERT ( 108 dbv -> `p_t (dbv, NULL , DB_REP_MASTER ) == 0); 112 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 113 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 114 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, NULL , 115 "a", NULL , DB_BTREE , DB_CREATE | DB_AUTO_COMMIT , 0666) == 0); 117 `DB_BENCH_ASSERT ( 118 dbp -> `ݒ (dbp, "a", NULL , DB_BTREE , DB_CREATE , 0666) == 0); 122 `memt (& key , 0, (key)); 123 `memt (& da , 0, (data)); 124 key . size = da .size = 20; 125 key . da = data.data = "01234567890123456789"; 128 TIMER_START ; 129 i = 0; i < cou ; ++i) { 130 #i DB_VERSION_MAJOR < 4 131 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 132 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 133 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 135 `DB_BENCH_ASSERT ( dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 136 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 137 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 140 TIMER_STOP ; 142 `tf ("# %d %stransactions write %s commitairs\n", 143 cou , p_ub ? "id ": "", cfig ); 144 `TIMER_DISPLAY ( cou ); 147 } } 150 $uge () 152 () `rtf ( dr , "usage: b_txn_write [-arw] [-c count]\n"); 153 ( EXIT_FAILURE ); 154 } } @../test_micro/SOURCE/b_workload.c 5 ~"bch.h " 6 ~"b_wkld.h " 15 $ma ( gc , gv ) 16 gc ; 17 * gv []; 19 CONFIG cf ; 20 DB * dbp ; 21 DB_ENV * dbv ; 22 ch , f , ksz ; 24 dbv = NULL ; 25 `nup__d (); 26 `memt (& cf , 0, (conf)); 27 cf . ed = 124087; 28 `d ( cf . ed ); 30 cf . pcou = 100000; 31 cf . ts = "Btree"; 32 cf . ty = DB_BTREE ; 33 cf . dsize = 20; 34 cf . esize = 0; 35 cf . wkld = T_PUT_GET_DELETE ; 37 ( ch = `gt ( gc , gv , "b:c:d:e:g:ik:m::r:t:vw:")! EOF ) 38 ch ) { 40 cf . chesz = `oi ( ݏrg ); 43 cf . pcou = `oi ( ݏrg ); 46 cf . dsize = `oi ( ݏrg ); 49 cf . curs_d = `oi ( ݏrg ); 52 cf . gcou = `oi ( ݏrg ); 55 cf . esize = 1; 58 cf . ksize = `oi ( ݏrg ); 61 cf . mesge = ݏrg ; 64 cf . dedkeys = 1; 67 cf . gesz = `oi ( ݏrg ); 70 cf . num_dups = `oi ( ݏrg ); 73 ݏrg [0]) { 75 cf . ts = "Btree"; 76 cf . ty = DB_BTREE ; 79 cf . ts = "Hash"; 80 cf . ty = DB_HASH ; 83 ( `uge ()); 87 cf . vbo = 1; 90 ݏrg [0]) { 92 cf . wkld = T_PUT_GET_DELETE ; 95 cf . wkld = T_GET ; 98 cf . wkld = T_PUT ; 101 cf . wkld = T_DELETE ; 104 cf . wkld = T_PUT_GET ; 107 cf . wkld = T_PUT_DELETE ; 110 cf . wkld = T_GET_DELETE ; 113 cf . wkld = T_MIXED ; 116 ( `uge ()); 121 `rtf ( dr , "Invid oi: %c\n", ch ); 122 ( `uge ()); 124 gc - td ; 125 gv + td ; 126 i( gc != 0) 127 ( `uge ()); 132 i( cf . gesz != 0) 133 `DB_BENCH_ASSERT ( cf . gesz >= 512 && conf.pagesz <= 65536 && 134 (( cf . gesz & (conf.pagesz - 1)) == 0)); 136 i( cf . chesz != 0) 137 `DB_BENCH_ASSERT ( cf . chesz > 20480); 138 `DB_BENCH_ASSERT ( cf . ksize =0 || cf. dedkeys == 0); 141 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 142 dbv -> `t_rfe (dbv, dr ); 143 i( cf . chesz != 0) 144 `DB_BENCH_ASSERT ( 145 dbv -> `t_chesize (dbv, 0, cf . chesz , 0) == 0); 147 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 148 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 149 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 151 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 152 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 158 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 159 i( cf . gesz != 0) 160 `DB_BENCH_ASSERT ( 161 dbp -> `t_gesize (dbp, cf . gesz ) == 0); 162 i( cf . esize !0 && cf. ty = DB_HASH ) { 163 ksz = ( cf . dedkeys !0? ( u_t32_t : cf. ksize ; 164 i( ksz == 0) 165 ksz = 10; 166 f = ( cf . gesz - 32)/( ksz + cf. dsize + 8); 167 `rtf ( dr , "f: %d\n", f ); 168 `DB_BENCH_ASSERT ( 169 dbp -> `t_h_f (dbp, f ) == 0); 170 `DB_BENCH_ASSERT ( 171 dbp -> `t_h_m (dbp, cf . pcou *10) == 0); 173 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 174 `DB_BENCH_ASSERT ( 175 dbp -> `ݒ (dbp, NULL , "a", NULL, cf . ty , 176 DB_CREATE | DB_TRUNCATE , 0666) == 0); 178 `DB_BENCH_ASSERT ( 179 dbp -> `ݒ (dbp, "a", NULL , cf . ty , DB_CREATE , 0666) == 0); 182 i( cf . wkld = T_MIXED ) 183 `run_mixed_wkld ( dbp , & cf ); 185 `run_d_wkld ( dbp , & cf ); 187 i( `is_put_wkld ( cf . wkld ) == 0) 188 `timeedd (& cf . t_time , &cf. put_time ); 189 i( `is_g_wkld ( cf . wkld ) == 0) 190 `timeedd (& cf . t_time , &cf. g_time ); 191 i( `is_d_wkld ( cf . wkld ) == 0) 192 `timeedd (& cf . t_time , &cf. d_time ); 195 `DB_BENCH_ASSERT ( dbp -> `sync (dbp, 0) == 0); 197 i( cf . vbo != 0) 198 `dump_vbo_s ( dbp , & cf ); 200 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 201 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 208 `tf ("# workloadest: %s: %s<br>%lu ops", 209 cf . ts , `wkld_r (cf. wkld ), ( u_lg )cf. pcou ); 210 i( cf . ksize != 0) 211 `tf (", key size: %lu", ( u_lg ) cf . ksize ); 212 i( cf . dsize != 0) 213 `tf (", dsize: %lu", ( u_lg ) cf . dsize ); 214 i( cf . gesz != 0) 215 `tf (",agsize: %lu", ( u_lg ) cf . gesz ); 217 `tf (",age size: default"); 218 i( cf . chesz != 0) 219 `tf (", cachsize: %lu", ( u_lg ) cf . chesz ); 221 `tf (", cache size: default"); 222 `tf (", %keys", cf . dedkeys == 1 ? "ordered" : "unordered"); 223 `tf (",um dups: %lu", ( u_lg ) cf . num_dups ); 224 `tf ("\n"); 226 i( cf . wkld ! T_MIXED ) { 227 i( cf . mesge ! NULL ) 228 `tf ("%%", cf . mesge , cf. ts ); 229 `TIME_DISPLAY ( cf . pcou , cf. t_time ); 231 `TIMER_DISPLAY ( cf . pcou ); 234 } } 237 $s ( dbp , pkey , pda , skey ) 238 DB * dbp ; 239 cڡ DBT * pkey , * pda ; 240 DBT * skey ; 242 skey -> da = pkey ->data; 243 skey -> size = pkey ->size; 245 } } 258 #GET_PROPORTION 90 ) 259 #PUT_PROPORTION 7 ) 260 #DEL_PROPORTION 3 ) 263 $run_mixed_wkld ( dbp , cfig ) 264 DB * dbp ; 265 CONFIG * cfig ; 267 DBT key , da ; 268 size_t xt_ , i , ioff ; 269 kbuf [10]; 270 bch_q ݔi_queue ; 273 `DB_BENCH_ASSERT ( cfig -> dedkeys == 0); 275 `d ( cfig -> ed ); 276 `memt (& ݔi_queue , 0, ( bch_q )); 278 ioff = 0; 279 `INIT_KEY ( key , cfig ); 280 `memt (& da , 0, (data)); 281 `DB_BENCH_ASSERT ( 282 ( da .d `mloc (da. size = cfig -> dsize )! NULL ); 289 i = 0; i < 100000; ++i) { 290 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 291 `BENCH_Q_TAIL_INSERT ( ݔi_queue , kbuf ); 292 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 295 TIMER_START ; 296 i = 0; i < cfig -> pcou ; ++i) { 297 xt_ = `nd ()%100; 299 i( xt_ < GET_PROPORTION ) { 300 `BENCH_Q_POP_PUSH ( ݔi_queue , kbuf ); 301 key . da = kbuf ; 302 key . size = ( kbuf ); 303 dbp -> `g (dbp, NULL , & key , & da , 0); 304 } i( xt_ < GET_PROPORTION + PUT_PROPORTION ) { 305 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 306 `BENCH_Q_TAIL_INSERT ( ݔi_queue , kbuf ); 307 dbp -> `put (dbp, NULL , & key , & da , 0); 309 `BENCH_Q_POP ( ݔi_queue , kbuf ); 310 key . da = kbuf ; 311 key . size = ( kbuf ); 312 dbp -> `d (dbp, NULL , & key , 0); 315 TIMER_STOP ; 316 `TIMER_GET ( cfig -> t_time ); 319 } } 322 $run_d_wkld ( dbp , cfig ) 323 DB * dbp ; 324 CONFIG * cfig ; 326 DBT key , da ; 327 DBC * dbc ; 328 u_t32_t i , t ; 329 kbuf [10]; 332 `INIT_KEY ( key , cfig ); 333 `memt (& da , 0, (data)); 334 `DB_BENCH_ASSERT ( 335 ( da .d `mloc (da. size = cfig -> dsize )! NULL ); 338 TIMER_START ; 339 i = 0; i < cfig -> pcou ; ++i) { 340 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 341 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 343 TIMER_STOP ; 344 `TIMER_GET ( cfig -> put_time ); 346 i( `is_g_wkld ( cfig -> wkld ) == 0) { 347 TIMER_START ; 348 i = 0; i < cfig -> gcou ; ++i) { 349 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 350 ( dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0); 351 `DB_BENCH_ASSERT ( dbc -> `c_o (dbc) == 0); 353 TIMER_STOP ; 354 `TIMER_GET ( cfig -> g_time ); 357 i( `is_d_wkld ( cfig -> wkld ) == 0) { 359 `d ( cfig -> ed ); 361 TIMER_START ; 362 i( cfig -> curs_d != 0) { 363 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 365 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) 366 `DB_BENCH_ASSERT ( dbc -> `c_d (dbc, 0) == 0); 367 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 369 `INIT_KEY ( key , cfig ); 370 i = 0; i < cfig -> pcou ; ++i) { 371 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 373 t = dbp -> `d (dbp, NULL , & key , 0); 378 i( cfig -> ksize == 0) 379 DB_BENCH_ASSERT 380 ( t =0 || = DB_NOTFOUND ); 382 `DB_BENCH_ASSERT ( t == 0); 385 TIMER_STOP ; 386 `TIMER_GET ( cfig -> d_time ); 389 } } 392 $dump_vbo_s ( dbp , cfig ) 393 DB * dbp ; 394 CONFIG * cfig ; 400 #ifde DB_WIN32 401 _ f ; 403 f ; 405 DB_HASH_STAT * h ; 406 DB_BTREE_STAT * b ; 407 _ ; 409 #ifde DB_BENCH_INCLUDE_CONFIG_SUMMARY 410 `tf ("Completed workload benchmark.\n"); 411 `tf ("Configuration summary:\n"); 412 `tf ("\twkldy: %d\n", () cfig -> wkld ); 413 `tf ("\tdabay: %s\n", cfig -> ts ); 414 i( cfig -> chesz != 0) 415 `tf ("\tchsize: %lu\n", ( u_lg ) cfig -> chesz ); 416 i( cfig -> gesz != 0) 417 `tf ("\tdabaagsize: %lu\n", ( u_lg ) cfig -> gesz ); 418 `tf ("\uemcou: %lu\n", ( u_lg ) cfig -> pcou ); 419 i `is_g_wkld ( cfig -> wkld ) == 0) 420 `tf ("\tgmcou: %lu\n", ( u_lg ) cfig -> gcou ); 421 i( cfig -> dedkeys ) 422 `tf ("\tInserting items in order\n"); 423 i( cfig -> ksize == 0) 424 `tf ("\tInserting keys with size 10\n"); 426 `tf ( 427 "\tIng keywh size: %lu\n", ( u_lg ) cfig -> ksize ); 429 `tf ("\tIng demtsize: %lu\n", ( u_lg ) cfig -> dsize ); 431 i( `is_d_wkld ( cfig -> wkld ) == 0) { 432 i( cfig -> curs_d ) 433 `tf ("\tDeleting items using cursor\n"); 435 `tf ("\tDeleting items without cursor\n"); 439 i( `is_put_wkld ( cfig -> wkld ) == 0) 440 `tf ("%s Time spent inserting (%lu) (%s) items: %lu/%lu\n", 441 cfig -> mesge [0] == '\0' ? "" : config->message, 442 ( u_lg ) cfig -> pcou , cfig-> ts , 443 ( u_lg ) cfig -> put_time . tv_c , cfig->put_time. tv_nc ); 445 i( `is_g_wkld ( cfig -> wkld ) == 0) 446 `tf ("%s Time spent getting (%lu) (%s) items: %lu/%lu\n", 447 cfig -> mesge [0] == '\0' ? "" : config->message, 448 ( u_lg ) cfig -> pcou * ((cfig-> gcou == 0) ? 449 1 : cfig -> gcou ), cfig-> ts , 450 ( u_lg ) cfig -> g_time . tv_c , cfig->g_time. tv_nc ); 452 i( `is_d_wkld ( cfig -> wkld ) == 0) 453 `tf ("%s Time spent deleting (%lu) (%s) items: %lu/%lu\n", 454 cfig -> mesge [0] == '\0' ? "" : config->message, 455 ( u_lg ) cfig -> pcou , cfig-> ts , 456 ( u_lg ) cfig -> d_time . tv_c , cfig->d_time. tv_nc ); 458 #ifde DB_WIN32 459 i( `_ ("TESTDIR/a", & f ) == 0) { 461 i( ` ("TESTDIR/a", & f ) == 0) { 463 `tf ("%s Size of db file (%s): %lu K\n", 464 cfig -> mesge [0] == '\0' ? "" : config->message, 465 cfig -> ts , ( u_lg ) f . _size /1024); 468 i( cfig -> ty = DB_HASH ) { 469 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR <= 2 470 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & h , NULL , 0) == 0); 471 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR <= 2 472 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & h , 0) == 0); 474 `DB_BENCH_ASSERT ( dbp -> ` (dbp, NULL , & h , 0) == 0); 480 _ = h -> hash_gesize *h-> hash_bucks ; 481 _ + h -> hash_gesize *h-> hash_ovows ; 482 _ = 483 ( _ - h -> hash_b - h-> hash_ov_ )/ 484 _ ; 485 `tf ("%s db fill factor (%s): %.2f%%\n", 486 cfig -> mesge [0] == '\0' ? "" : config->message, 487 cfig -> ts , _ *100); 488 ` ( h ); 490 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR <= 2 491 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & b , NULL , 0) == 0); 492 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR <= 2 493 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & b , 0) == 0); 495 `DB_BENCH_ASSERT ( dbp -> ` (dbp, NULL , & b , 0) == 0); 497 _ = b -> bt_gesize *b-> bt_af_pg ; 498 _ = (_- b -> bt_af_pg )/free_prop; 499 `tf ("%s db fill factor (%s): %.2f%%\n", 500 cfig -> mesge [0] == '\0' ? "" : config->message, 501 cfig -> ts , _ *100); 502 ` ( b ); 505 } } 508 $wkld_r ( wkld ) 509 wkld ; 511 buf [128]; 513 wkld ) { 514 T_PUT_GET_DELETE : 517 T_GET : 520 T_PUT : 523 T_DELETE : 526 T_PUT_GET : 529 T_PUT_DELETE : 532 T_GET_DELETE : 535 T_MIXED : 536 `tf ( buf , (buf), "MIXED (get: %d,ut: %d, del: %d)", 537 () GET_PROPORTION , 538 () PUT_PROPORTION , () DEL_PROPORTION ); 539 ( buf ); 544 `ex ( `uge ()); 546 } } 549 $is_g_wkld ( wkld ) 550 wkld ; 552 wkld ) { 553 T_GET : 554 T_PUT_GET : 555 T_PUT_GET_DELETE : 556 T_GET_DELETE : 560 } } 563 $is_put_wkld ( wkld ) 564 wkld ; 566 wkld ) { 567 T_PUT : 568 T_PUT_GET : 569 T_PUT_GET_DELETE : 570 T_PUT_DELETE : 574 } } 577 $is_d_wkld ( wkld ) 578 wkld ; 580 wkld ) { 581 T_DELETE : 582 T_PUT_DELETE : 583 T_PUT_GET_DELETE : 584 T_GET_DELETE : 588 } } 591 $uge () 593 () `rtf ( dr , 595 () `rtf ( dr , 597 () `rtf ( dr , "\t[-r dup_count] [-type] [-wype]\n"); 599 () `rtf ( dr , "Where:\n"); 600 () `rtf ( dr , "\t-bhe size ofhe DB cache.\n"); 601 () `rtf ( dr , "\t-cheumber oflementso be measured.\n"); 602 () `rtf ( dr , "\t-dhe size ofach datalement.\n"); 603 () `rtf ( dr , "\t-e deletentries using cursor.\n"); 604 () `rtf ( dr , "\t-gumber of get cursorraverses.\n"); 605 () `rtf ( dr , "\t-i Pre-init hash DB bucket count.\n"); 606 () `rtf ( dr , "\t-khe size ofach key inserted.\n"); 607 () `rtf ( dr , "\t-m messagere-pendedoog output.\n"); 608 () `rtf ( dr , "\t-o keys should be ordered for insert.\n"); 609 () `rtf ( dr , "\t-pheage size forhe database.\n"); 610 () `rtf ( dr , "\t-rheumber of duplicateso insert\n"); 611 () `rtf ( dr , "\t-type ofhe underlying database.\n"); 612 () `rtf ( dr , "\t-whe workloado measure,vailable:\n"); 613 () `rtf ( dr , "\t\tA - PUT_GET_DELETE\n"); 614 () `rtf ( dr , "\t\tB - GET\n"); 615 () `rtf ( dr , "\t\tC - PUT\n"); 616 () `rtf ( dr , "\t\tD - DELETE\n"); 617 () `rtf ( dr , "\t\tE - PUT_GET\n"); 618 () `rtf ( dr , "\t\tF - PUT_DELETE\n"); 619 () `rtf ( dr , "\t\tG - GET_DELETE\n"); 620 () `rtf ( dr , "\t\tH - MIXED\n"); 621 ( EXIT_FAILURE ); 622 } } @../test_micro/SOURCE/inmem.c 5 ~"bch.h " 10 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 1 12 #unde MEGABYTE 13 #MEGABYTE (1024 * 1024) ) 15 u_t32_t gbulkbufsize = 4 * MEGABYTE ; 16 u_t32_t gchesize = 32 * MEGABYTE ; 17 u_t32_t gdasize = 32; 18 u_t32_t gkeysize = 8; 19 u_t32_t glogbufsize = 8 * MEGABYTE ; 20 u_t32_t gnumems ; 21 u_t32_t ggesize = 32 * 1024; 23 FILE * g ; 24 * gogme ; 26 _ds ( u_t , ); 27 _ds_bulk ( u_t , u_int *); 28 _tds ( u_t , , u_t32_t ); 29 uge __P (()); 32 $_ds ( u_t s , upde ) 34 * ˉs = "abcdefghijklmnopqrstuvwxuz"; 35 DB * dbp ; 36 DBT key , da ; 37 * keybuf , * dabuf ; 38 DB_MPOOL_STAT * g ; 40 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 41 `DB_BENCH_ASSERT (( dabuf = `mloc ( dasize )! NULL ); 43 `memt (& key , 0, (key)); 44 `memt (& da , 0, (data)); 45 key . da = keybuf ; 46 key . size = keysize ; 47 `memt ( keybuf , 'a', keysize ); 49 da .d dabuf ; 50 da . size = dasize ; 51 `memt ( dabuf , 'b', dasize ); 53 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 55 dbp -> `t_rfe (dbp, dr ); 57 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 58 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 59 dbp , NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0666) == 0); 61 dbp -> dbv -> `memp_ (dbp->dbv, & g , NULL , DB_STAT_CLEAR ); 63 i( upde ) { 64 TIMER_START ; 65 ; s > 0; --ops) { 66 keybuf [( s % keysize )] = ˉs [(ops % 26)]; 67 `DB_BENCH_ASSERT ( 68 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 70 TIMER_STOP ; 72 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 73 TIMER_START ; 74 ; s > 0; --ops) 75 `DB_BENCH_ASSERT ( 76 dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 77 TIMER_STOP ; 80 dbp -> dbv -> `memp_ (dbp->dbv, & g , NULL , 0); 81 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 83 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 84 } } 87 $_ds_bulk ( u_t s , u_* tٮp ) 89 DB * dbp ; 90 DBC * dbc ; 91 DBT key , da ; 92 u_t32_t n , kn ; 93 u_t i , tٮ ; 94 * keybuf , * dabuf ; 95 * por , * dp , * kp ; 96 DB_MPOOL_STAT * g ; 98 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 99 `DB_BENCH_ASSERT (( dabuf = `mloc ( bulkbufsize )! NULL ); 101 `memt (& key , 0, (key)); 102 `memt (& da , 0, (data)); 103 key . da = keybuf ; 104 key . size = keysize ; 106 da .d dabuf ; 107 da . size = dasize ; 108 `memt ( dabuf , 'b', dasize ); 110 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 112 dbp -> `t_rfe (dbp, dr ); 114 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 115 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 1) == 0); 116 `DB_BENCH_ASSERT ( 117 dbp -> `ݒ (dbp, NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0666) == 0); 119 i = 1; i < numems ; ++i) { 120 () `rtf ( keybuf , "%10d", i ); 121 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 125 = `fݒ ("before", "w"); 126 dbp -> `t_msgfe (dbp, ); 127 `DB_BENCH_ASSERT ( dbp -> `_t (dbp, DB_STAT_ALL ) == 0); 130 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 132 da . un = bulkbufsize ; 133 da . ags = DB_DBT_USERMEM ; 135 dbp -> dbv -> `memp_ (dbp->dbv, & g , NULL , DB_STAT_CLEAR ); 137 TIMER_START ; 138 tٮ = 0; s > 0; --ops) { 139 `DB_BENCH_ASSERT ( dbc -> `c_g ( 140 dbc , & key , & da , DB_FIRST | DB_MULTIPLE_KEY ) == 0); 141 `DB_MULTIPLE_INIT ( por , & da ); 142 por ! NULL ) { 143 `DB_MULTIPLE_KEY_NEXT ( por , & da , kp , kn , dp , n ); 144 i( kp ! NULL ) 145 ++ tٮ ; 148 TIMER_STOP ; 149 * tٮp = tٮ ; 151 dbp -> dbv -> `memp_ (dbp->dbv, & g , NULL , 0); 152 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 155 = `fݒ ("before", "w"); 156 dbp -> `t_msgfe (dbp, ); 157 `DB_BENCH_ASSERT ( dbp -> `_t (dbp, DB_STAT_ALL ) == 0); 160 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 161 } } 164 $_tds ( u_t s , upde , u_t32_t ags ) 166 DB * dbp ; 167 DBT key , da ; 168 DB_ENV * dbv ; 169 DB_TXN * txn ; 170 * keybuf , * dabuf ; 171 DB_MPOOL_STAT * g ; 173 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 174 `DB_BENCH_ASSERT (( dabuf = `mloc ( dasize )! NULL ); 176 `memt (& key , 0, (key)); 177 `memt (& da , 0, (data)); 178 key . da = keybuf ; 179 key . size = keysize ; 180 `memt ( keybuf , 'a', keysize ); 182 da .d dabuf ; 183 da . size = dasize ; 184 `memt ( dabuf , 'b', dasize ); 186 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 188 dbv -> `t_rfe (dbv, dr ); 190 #ifde DB_AUTO_COMMIT 191 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, DB_AUTO_COMMIT , 1) == 0); 193 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, ags , 1) == 0); 194 #ifde DB_LOG_INMEMORY 195 i(!( ags & DB_LOG_INMEMORY )) 197 `DB_BENCH_ASSERT ( dbv -> `t_lg_max (dbv, logbufsize * 10) == 0); 198 `DB_BENCH_ASSERT ( dbv -> `t_lg_bsize (dbv, logbufsize ) == 0); 199 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 200 DB_CREATE | DB_PRIVATE | DB_INIT_LOCK | 201 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 0666) == 0); 203 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 204 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 205 `DB_BENCH_ASSERT ( 206 dbp -> `ݒ (dbp, NULL , "a", NULL, DB_BTREE , DB_CREATE , 0666) == 0); 208 i( upde ) { 209 dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 211 TIMER_START ; 212 ; s > 0; --ops) 213 `DB_BENCH_ASSERT ( 214 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 215 TIMER_STOP ; 217 dbv -> `memp_ (dbv, & g , NULL , 0); 218 `DB_BENCH_ASSERT ( g -> _ge_out == 0); 220 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 221 dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 223 TIMER_START ; 224 ; s > 0; --ops) { 225 `DB_BENCH_ASSERT ( 226 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 227 `DB_BENCH_ASSERT ( 228 dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 229 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 231 TIMER_STOP ; 233 dbv -> `memp_ (dbv, & g , NULL , 0); 234 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 237 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 238 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 239 } } 241 #DEFAULT_OPS 1000000 ) 244 $ma ( gc , * gv []) 246 * ݏrg ; 247 td ; 248 u_t s , tٮ ; 249 ch ; 251 `nup__d (); 253 i(( ogme = `chr ( gv [0], '/')= NULL ) 254 ogme = gv [0]; 256 ++ ogme ; 258 s = 0; 259 ( ch = `gt ( gc , gv , "d:k:o:p:")! EOF ) 260 ch ) { 262 dasize = ( u_t ) `oi ( ݏrg ); 265 keysize = ( u_t ) `oi ( ݏrg ); 268 s = ( u_t ) `oi ( ݏrg ); 271 gesize = ( u_t32_t ) `oi ( ݏrg ); 275 ( `uge ()); 277 gc - td ; 278 gv + td ; 280 i( gc != 1) 281 ( `uge ()); 283 numems = ( chesize / ( keysize + dasize - 1)) / 2; 285 i( `rcmp ( gv [0], "read") == 0) { 286 i( s == 0) 287 s = DEFAULT_OPS ; 288 `_ds ( s , 0); 289 `tf ( 291 s , keysize , dasize ); 292 } i( `rcmp ( gv [0], "bulk") == 0) { 293 i( keysize < 8) { 294 `rtf ( dr , 295 "%s: bulkdequekey siz>10\n", ogme ); 296 ( EXIT_FAILURE ); 304 i( s == 0) 305 s = 100000; 306 `_ds_bulk ( s , & tٮ ); 307 s = tٮ ; 308 `tf ( 310 s , keysize , dasize ); 311 } i( `rcmp ( gv [0], "write") == 0) { 312 i( s == 0) 313 s = DEFAULT_OPS ; 314 `_ds ( s , 1); 315 `tf ( 317 s , keysize , dasize ); 318 } i( `rcmp ( gv [0], "txn-read") == 0) { 319 i( s == 0) 320 s = DEFAULT_OPS ; 321 `_tds ( s , 0, 0); 322 `tf ( 324 s , keysize , dasize ); 325 } i( `rcmp ( gv [0], "txn-write") == 0) { 326 i( s == 0) 327 s = DEFAULT_OPS ; 328 #ifde DB_LOG_INMEMORY 329 `_tds ( s , 1, DB_LOG_INMEMORY ); 330 `tf ( 332 s , keysize , dasize ); 334 ( EXIT_SUCCESS ); 336 } i( `rcmp ( gv [0], "txn-nosync") == 0) { 337 i( s == 0) 338 s = DEFAULT_OPS ; 339 `_tds ( s , 1, DB_TXN_NOSYNC ); 340 `tf ( 342 s , keysize , dasize ); 343 } i( `rcmp ( gv [0], "txn-write-nosync") == 0) { 344 i( s == 0) 345 s = DEFAULT_OPS ; 346 #ifde DB_TXN_WRITE_NOSYNC 347 `_tds ( s , 1, DB_TXN_WRITE_NOSYNC ); 348 `tf ( 350 s , keysize , dasize ); 352 ( EXIT_SUCCESS ); 354 } i( `rcmp ( gv [0], "txn-sync") == 0) { 359 i( s == 0) 360 s = 100000; 361 `_tds ( s , 1, 0); 362 `tf ( 364 s , keysize , dasize ); 366 `rtf ( dr , "%s: unknowkeywd %s\n", ogme , gv [0]); 367 ( EXIT_FAILURE ); 370 `TIMER_DISPLAY ( s ); 371 ( EXIT_SUCCESS ); 372 } } 375 $uge () 377 `rtf ( dr , "usage: %s %s%s%s", 378 ogme , 382 ( EXIT_FAILURE ); 383 } } 386 $ma () 389 } } @../test_micro/SOURCE/uname.c 1 ~<sys/tys.h > 2 ~<sys/utame.h > 4 ~<dio.h > 7 $ma () 9 utame me ; 11 i( `ume (& me ) == 0) 12 `tf ("<p>%s, %s<br>\n%s, %s, %s</p>\n", me . nodame , 13 me . mache ,ame. syame ,ame. a ,ame. vsi ); 15 } } @../txn/txn.c 40 ~"db_cfig.h " 42 ~"db_t.h " 43 ~"dbc/yo.h " 44 ~"dbc/hmac.h " 45 ~"dbc/db_ge.h " 46 ~"dbc/hash.h " 47 ~"dbc/lock.h " 48 ~"dbc/log.h " 49 ~"dbc/mp.h " 50 ~"dbc/txn.h " 52 #LOG_FLAGS ( txn ) \ 53 ( DB_LOG_COMMIT | ( `F_ISSET ( txn , TXN_SYNC ) ? \ 54 DB_FLUSH : ( `F_ISSET ( txn , TXN_WRITE_NOSYNC ) ? \ 55 DB_LOG_WRNOSYNC : 0))) ) 63 mTXN_OP_ABORT , 64 mTXN_OP_COMMIT , 65 mTXN_OP_DISCARD , 66 mTXN_OP_PREPARE 67 } ttxn_t ; 69 __txn_abt_ __P (( DB_TXN *)); 70 __txn_beg_t __P (( DB_TXN *)); 71 __txn_comm_ __P (( DB_TXN *, u_t32_t )); 72 __txn_disrd __P (( DB_TXN *, u_t32_t )); 73 __txn_dich_undo 74 __P (( DB_ENV *, DB_TXN *, DBT *, DB_LSN *, DB_TXNHEAD *)); 75 __txn_d __P (( DB_TXN *, )); 76 __txn_isvid __P ((cڡ DB_TXN *, txn_t )); 77 __txn_undo __P (( DB_TXN *)); 78 __txn_t_txn_lp __P (( DB_TXN *, DB_LSN **, DB_LSN **)); 87 $__txn_beg_ ( dbv , , txp , ags ) 88 DB_ENV * dbv ; 89 DB_TXN * , ** txp ; 90 u_t32_t ags ; 92 DB_THREAD_INFO * ; 93 p_check , t ; 95 `PANIC_CHECK ( dbv ); 96 `ENV_REQUIRES_CONFIG ( dbv , dbv-> tx_hd , "txn_beg", DB_INIT_TXN ); 98 i(( t = `__db_fchk ( dbv , 99 "txn_beg", ags , 100 DB_READ_COMMITTED | DB_READ_UNCOMMITTED | 101 DB_TXN_NOSYNC | DB_TXN_SNAPSHOT | DB_TXN_SYNC | 102 DB_TXN_WAIT | DB_TXN_WRITE_NOSYNC | DB_TXN_NOWAIT )) != 0) 103 ( t ); 104 i(( t = `__db_fcchk ( dbv , "txn_beg", ags , 105 DB_TXN_WRITE_NOSYNC | DB_TXN_NOSYNC , DB_TXN_SYNC )) != 0) 106 ( t ); 107 i(( t = `__db_fcchk ( dbv , "txn_begin", 108 ags , DB_TXN_WRITE_NOSYNC , DB_TXN_NOSYNC )) != 0) 109 ( t ); 110 i( ! NULL && ! `F_ISSET լt, TXN_SNAPSHOT ) && 111 `LF_ISSET ( DB_TXN_SNAPSHOT )) { 112 `__db_rx ( dbv , 114 ( EINVAL ); 117 `ENV_ENTER ( dbv , ); 119 i( = NULL ) { 120 p_check = `IS_ENV_REPLICATED ( dbv ) ? 1 : 0; 121 i( p_check && ( t = `___p_r ( dbv )) != 0) 122 r ; 124 p_check = 0; 125 t = `__txn_beg ( dbv , , txp , ags ); 131 i( t !0 && p_check ) 132 () `___p_ex ( dbv ); 134 r : `ENV_LEAVE ( dbv , ); 135 ( t ); 136 } } 153 $__txn_beg ( dbv , , txp , ags ) 154 DB_ENV * dbv ; 155 DB_TXN * , ** txp ; 156 u_t32_t ags ; 158 DB_LOCKREGION * gi ; 159 DB_TXN * txn ; 160 TXN_DETAIL * d , * td ; 161 t ; 163 * txp = NULL ; 164 i(( t = `__os_oc ( dbv , 1, ( DB_TXN ), & txn )) != 0) 165 ( t ); 167 txn -> mg = dbv -> tx_hd ; 168 txn -> =arent; 169 `TAILQ_INIT (& txn -> kids ); 170 `TAILQ_INIT (& txn -> evts ); 171 `STAILQ_INIT (& txn -> logs ); 172 txn -> ags = TXN_MALLOC ; 178 i( `LF_ISSET ( DB_TXN_SYNC )) 179 `F_SET ( txn , TXN_SYNC ); 180 i( `LF_ISSET ( DB_TXN_NOSYNC )) 181 `F_SET ( txn , TXN_NOSYNC ); 182 i( `LF_ISSET ( DB_TXN_WRITE_NOSYNC )) 183 `F_SET ( txn , TXN_WRITE_NOSYNC ); 184 i( `F_ISSET ( dbv , DB_ENV_TXN_NOSYNC )) 185 `F_SET ( txn , TXN_NOSYNC ); 186 i( `F_ISSET ( dbv , DB_ENV_TXN_WRITE_NOSYNC )) 187 `F_SET ( txn , TXN_WRITE_NOSYNC ); 189 `F_SET ( txn , TXN_SYNC ); 191 i( `LF_ISSET ( DB_TXN_NOWAIT ) || 192 ( `F_ISSET ( dbv , DB_ENV_TXN_NOWAIT && ! `LF_ISSET ( DB_TXN_WAIT ))) 193 `F_SET ( txn , TXN_NOWAIT ); 194 i( `LF_ISSET ( DB_READ_COMMITTED )) 195 `F_SET ( txn , TXN_READ_COMMITTED ); 196 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 197 `F_SET ( txn , TXN_READ_UNCOMMITTED ); 198 i( `LF_ISSET ( DB_TXN_SNAPSHOT || `F_ISSET ( dbv , DB_ENV_TXN_SNAPSHOT ) || 199 ( ! NULL && `F_ISSET լt, TXN_SNAPSHOT ))) 200 `F_SET ( txn , TXN_SNAPSHOT ); 202 i(( t = `__txn_beg_t ( txn )) != 0) 203 r ; 204 td = txn ->td; 206 i( ! NULL ) { 207 d = -> td ; 208 `TAILQ_INSERT_HEAD (& -> kids , txn , klks ); 209 `SH_TAILQ_INSERT_HEAD (& d -> kids , td , klks , __txn_da ); 212 i( `LOCKING_ON ( dbv )) { 213 gi = dbv -> lk_hd -> gfo . imy ; 214 i( ! NULL ) { 215 t = `__lock_h_timeout ( dbv , 216 -> lock , txn ->locker); 218 i( t = EINVAL ) { 219 = NULL ; 220 t = 0; 222 i( t != 0) 223 r ; 230 i( = NULL && gi -> tx_timeout != 0) 231 i(( t = `__lock_t_timeout ( dbv , txn -> lock , 232 gi -> tx_timeout , DB_SET_TXN_TIMEOUT )) != 0) 233 r ; 236 * txp = txn ; 239 r : 240 `__os_ ( dbv , txn ); 241 ( t ); 242 } } 251 $__txn_xa_beg ( dbv , txn ) 252 DB_ENV * dbv ; 253 DB_TXN * txn ; 255 `PANIC_CHECK ( dbv ); 261 txn -> mg = dbv -> tx_hd ; 262 `TAILQ_INIT (& txn -> kids ); 263 `TAILQ_INIT (& txn -> evts ); 264 `STAILQ_INIT (& txn -> logs ); 265 txn -> = NULL ; 266 txn -> txnid = TXN_INVALID ; 267 txn -> curss = 0; 268 `memt (& txn -> lock_timeout , 0, ( db_timeout_t )); 269 `memt (& txn -> expe , 0, ( db_timeout_t )); 271 ( `__txn_beg_t ( txn )); 272 } } 281 $__txn_cye_id ( dbv ) 282 DB_ENV * dbv ; 284 DB_LSN nu_l ; 285 DB_TXNMGR * mgr ; 286 DB_TXNREGION * gi ; 287 TXN_DETAIL * td ; 288 u_t32_t * ids ; 289 nids , t ; 291 mgr = dbv -> tx_hd ; 292 gi = mgr -> gfo . imy ; 294 i(( t = `__os_mloc ( dbv , 295 ( u_t32_t * gi -> maxtxns , & ids )) != 0) 296 ( t ); 297 nids = 0; 298 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) 299 ids [ nids ++] = td -> txnid ; 300 gi -> ϡ_txnid = TXN_MINIMUM - 1; 301 gi -> cur_maxid = TXN_MAXIMUM ; 302 i( nids != 0) 303 `__db_ida ( ids , nids , 304 & gi -> ϡ_txnid , &gi-> cur_maxid ); 305 `__os_ ( dbv , ids ); 311 i( `LOGGING_ON ( dbv )) 312 t = `__txn_cye_log ( dbv , NULL , & nu_l , 313 0, gi -> ϡ_txnid + 1,egi-> cur_maxid ); 315 ( t ); 316 } } 327 $__txn_comn_beg ( dbv , txp ) 328 DB_ENV * dbv ; 329 DB_TXN ** txp ; 331 DB_TXN * txn ; 332 t ; 334 `PANIC_CHECK ( dbv ); 336 i(( t = `__os_oc ( dbv , 1, ( DB_TXN ), & txn )) != 0) 337 ( t ); 339 txn -> mg = dbv -> tx_hd ; 340 `TAILQ_INIT (& txn -> kids ); 341 `TAILQ_INIT (& txn -> evts ); 342 `STAILQ_INIT (& txn -> logs ); 343 txn -> ags = TXN_COMPENSATE | TXN_MALLOC ; 345 * txp = txn ; 346 ( `__txn_beg_t ( txn )); 347 } } 354 $__txn_beg_t ( txn ) 355 DB_TXN * txn ; 357 DB_ENV * dbv ; 358 DB_TXNMGR * mgr ; 359 DB_TXNREGION * gi ; 360 TXN_DETAIL * td ; 361 u_t32_t id ; 362 t ; 364 mgr = txn -> mg ; 365 dbv = mgr ->dbenv; 366 gi = mgr -> gfo . imy ; 368 `TXN_SYSTEM_LOCK ( dbv ); 369 i(! `F_ISSET ( txn , TXN_COMPENSATE && F_ISSET( gi , TXN_IN_RECOVERY )) { 370 `__db_rx ( dbv , "operationotermitted duringecovery"); 371 t = EINVAL ; 372 r ; 379 i( gi -> ϡ_txnid = TXN_MAXIMUM && 380 gi -> cur_maxid ! TXN_MAXIMUM ) 381 gi -> ϡ_txnid = TXN_MINIMUM - 1; 383 i( gi -> ϡ_txnid =gi-> cur_maxid && 384 ( t = `__txn_cye_id ( dbv )) != 0) 385 r ; 388 i(( t = 389 `__v_loc (& mgr -> gfo , ( TXN_DETAIL ), & td )) != 0) { 390 `__db_rx ( dbv , 392 r ; 396 `SH_TAILQ_INSERT_HEAD (& gi -> aive_txn , td , lks , __txn_da ); 398 id = ++ gi -> ϡ_txnid ; 400 #ifde HAVE_STATISTICS 401 ++ gi -> . _nbegs ; 402 i(++ gi -> . _ive >egi->. _maxive ) 403 gi -> . _maxive =egi->. _ive ; 406 td -> txnid = id ; 407 dbv -> `thad_id (dbv, & td -> pid , &td-> tid ); 410 i( `LOCKING_ON ( dbv && ( t = 411 `__lock_glock ( dbv -> lk_hd , id , 1, & txn -> lock )) != 0) 412 r ; 414 `ZERO_LSN ( td -> ϡ_l ); 415 `ZERO_LSN ( td -> beg_l ); 416 `SH_TAILQ_INIT (& td -> kids ); 417 i( txn -> ! NULL ) 418 td -> = `R_OFFSET (& mgr -> gfo , txn ->parent->td); 420 td -> = INVALID_ROFF ; 421 td -> me = INVALID_ROFF ; 422 `MAX_LSN ( td -> ad_l ); 423 `MAX_LSN ( td -> visib_l ); 424 td -> mvcc_f = 0; 425 td -> mvcc_mtx = MUTEX_INVALID ; 426 td -> us = TXN_RUNNING ; 427 td -> ags = 0; 428 td -> xa_us = 0; 429 td -> og_dbs = 0; 430 td -> og_s = TXN_NSLOTS ; 431 td -> log_dbs = `R_OFFSET (& mgr -> gfo ,d-> s ); 433 `TXN_SYSTEM_UNLOCK ( dbv ); 435 txn -> txnid = id ; 436 txn -> td =d; 438 txn -> abt = __txn_abt_ ; 439 txn -> comm = __txn_comm_ ; 440 txn -> disrd = __txn_disrd ; 441 txn -> g_me = __txn_g_me ; 442 txn -> id = __txn_id ; 443 txn -> e = __txn_e ; 444 txn -> t_txn_lp = __txn_t_txn_lp ; 445 txn -> t_me = __txn_t_me ; 446 txn -> t_timeout = __txn_t_timeout ; 452 i( txn -> ! NULL && `LOCKING_ON ( dbv )) 453 i(( t = `__lock_addmylock ( dbv , 454 txn -> -> txnid ,xn->txnid)) != 0) 455 ( t ); 457 i( `F_ISSET ( txn , TXN_MALLOC )) { 458 `MUTEX_LOCK ( dbv , mgr -> mux ); 459 `TAILQ_INSERT_TAIL (& mgr -> txn_cha , txn , lks ); 460 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 465 r : `TXN_SYSTEM_UNLOCK ( dbv ); 466 ( t ); 467 } } 477 $__txn_ctue ( v , txn , td ) 478 DB_ENV * v ; 479 DB_TXN * txn ; 480 TXN_DETAIL * td ; 482 t ; 484 t = 0; 486 txn -> mg = v -> tx_hd ; 487 txn -> = NULL ; 488 txn -> txnid = td ->txnid; 489 txn -> td =d; 491 txn -> abt = __txn_abt_ ; 492 txn -> comm = __txn_comm_ ; 493 txn -> disrd = __txn_disrd ; 494 txn -> g_me = __txn_g_me ; 495 txn -> id = __txn_id ; 496 txn -> e = __txn_e ; 497 txn -> t_me = __txn_t_me ; 499 txn -> ags = 0; 506 i( `F_ISSET ( td , TXN_DTL_RESTORED )) 507 `F_SET ( txn , TXN_RESTORED ); 509 t = `__lock_glock ( v -> lk_hd , 510 txn -> txnid , 0, &txn-> lock ); 512 ( t ); 513 } } 520 $__txn_comm_ ( txn , ags ) 521 DB_TXN * txn ; 522 u_t32_t ags ; 524 DB_ENV * dbv ; 525 DB_THREAD_INFO * ; 526 n_chd , t , t_t ; 528 dbv = txn -> mg ->dbenv; 529 n_chd = txn -> = NULL ; 531 `ENV_ENTER ( dbv , ); 533 t = `__txn_comm ( txn , ags ); 534 i( n_chd && `IS_ENV_REPLICATED ( dbv ) && 535 ( t_t = `___p_ex ( dbv )!0 && t == 0) 536 t = t_t ; 537 `ENV_LEAVE ( dbv , ); 538 ( t ); 539 } } 548 $__txn_comm ( txn , ags ) 549 DB_TXN * txn ; 550 u_t32_t ags ; 552 DBT li_dbt ; 553 DB_ENV * dbv ; 554 DB_LOCKREQ que ; 555 DB_TXN * kid ; 556 REGENV * nv ; 557 REGINFO * f ; 558 TXN_DETAIL * td ; 559 u_t32_t id ; 560 t , t_t ; 562 dbv = txn -> mg ->dbenv; 563 td = txn ->td; 565 `PANIC_CHECK ( dbv ); 571 i( `F_ISSET ( txn , TXN_DEADLOCK )) { 572 t = `__db_txn_ddlock_r ( dbv , txn ); 573 r ; 576 i(( t = `__txn_isvid ( txn , TXN_OP_COMMIT )) != 0) 577 ( t ); 579 f = dbv -> gfo ; 580 nv = f -> imy ; 584 id = nv -> vid ; 593 i( `__db_fchk ( dbv , "DB_TXN->comm", ags , 594 DB_TXN_NOSYNC | DB_TXN_SYNC | DB_TXN_WRITE_NOSYNC ) != 0) 595 ags = DB_TXN_SYNC ; 596 i( `__db_fcchk ( dbv , "DB_TXN->comm", ags , 597 DB_TXN_SYNC , DB_TXN_NOSYNC | DB_TXN_WRITE_NOSYNC ) != 0) 598 ags = DB_TXN_SYNC ; 600 i( `LF_ISSET ( DB_TXN_WRITE_NOSYNC )) { 601 `F_CLR ( txn , TXN_SYNC_FLAGS ); 602 `F_SET ( txn , TXN_WRITE_NOSYNC ); 604 i( `LF_ISSET ( DB_TXN_NOSYNC )) { 605 `F_CLR ( txn , TXN_SYNC_FLAGS ); 606 `F_SET ( txn , TXN_NOSYNC ); 608 i( `LF_ISSET ( DB_TXN_SYNC )) { 609 `F_CLR ( txn , TXN_SYNC_FLAGS ); 610 `F_SET ( txn , TXN_SYNC ); 618 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 619 i(( t = `__txn_comm ( kid , ags )) != 0) 620 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 621 i(( t_t = `__txn_abt ( kid )) != 0) 622 ( `__db_nic ( dbv , t_t )); 631 i( `DBENV_LOGGING ( dbv && (! `IS_ZERO_LSN ( td -> ϡ_l ) || 632 `STAILQ_FIRST (& txn -> logs ! NULL )) { 633 i( txn -> = NULL ) { 642 i(( t = 643 `__txn_dvts ( dbv , txn , TXN_PREPARE , 1)) != 0) 644 r ; 646 `memt (& que , 0, (request)); 647 i( `LOCKING_ON ( dbv )) { 648 que . = DB_LOCK_PUT_READ ; 649 i( `IS_REP_MASTER ( dbv ) && 650 ! `IS_ZERO_LSN ( td -> ϡ_l )) { 651 `memt (& li_dbt , 0, (list_dbt)); 652 que . obj = & li_dbt ; 654 t = `__lock_vec ( dbv , 655 txn -> lock , 0, & que , 1, NULL ); 658 i( t =0 && ! `IS_ZERO_LSN ( td -> ϡ_l )) { 659 t = `__txn_g_log ( dbv , txn , 660 & td -> visib_l , `LOG_FLAGS ( txn ), 661 TXN_COMMIT , 662 ( t32_t ) `time ( NULL ), id , que . obj ); 663 i( t == 0) 664 td -> ϡ_l =d-> visib_l ; 665 #ifde DIAGNOSTIC 666 i( t == 0) { 667 DB_LSN s_l ; 669 `DB_ASSERT ( dbv , `__log_cut_l ( 670 dbv , & s_l , NULL , NULL) == 0); 671 `DB_ASSERT ( dbv , `LOG_COMPARE ( 672 & td -> visib_l , & s_l ) <= 0); 673 `COMPQUIET ( s_l . fe , 0); 678 i( que . obj ! NULL &&eque.obj-> da != NULL) 679 `__os_ ( dbv , que . obj -> da ); 680 i( t != 0) 681 r ; 684 i(! `IS_ZERO_LSN ( td -> ϡ_l ) && 685 ( t = `__txn_chd_log ( dbv , txn -> , 686 &(( TXN_DETAIL *) txn -> -> td )-> ϡ_l , 687 0, txn -> txnid , & td -> ϡ_l )) != 0) { 688 r ; 690 i( `STAILQ_FIRST (& txn -> logs ! NULL ) { 695 `STAILQ_CONCAT (& txn -> logs , &txn-> ->logs); 696 txn -> -> logs =xn->logs; 697 `STAILQ_INIT (& txn -> logs ); 700 `F_SET ( txn -> , TXN_CHILDCOMMIT ); 710 i( txn -> txn_li ! NULL ) { 711 #ide HAVE_FTRUNCATE 712 t_t = `__db_do_the_limbo ( dbv , 713 NULL , txn ,xn-> txn_li , LIMBO_NORMAL ); 714 i( t_t !0 && t == 0) 715 t = t_t ; 717 `__db_txi_d ( dbv , txn -> txn_li ); 718 txn -> txn_li = NULL ; 721 i( t != 0) 722 r ; 725 ( `__txn_d ( txn , 1)); 727 r : 735 i( td -> us = TXN_PREPARED ) 736 ( `__db_nic ( dbv , t )); 738 i(( t_t = `__txn_abt ( txn )) != 0) 739 t = t_t ; 740 ( t ); 741 } } 748 $__txn_abt_ ( txn ) 749 DB_TXN * txn ; 751 DB_ENV * dbv ; 752 DB_THREAD_INFO * ; 753 n_chd , t , t_t ; 755 dbv = txn -> mg ->dbenv; 756 n_chd = txn -> = NULL ; 758 `ENV_ENTER ( dbv , ); 760 t = `__txn_abt ( txn ); 761 i( n_chd && `IS_ENV_REPLICATED ( dbv ) && 762 ( t_t = `___p_ex ( dbv )!0 && t == 0) 763 t = t_t ; 764 `ENV_LEAVE ( dbv , ); 765 ( t ); 766 } } 775 $__txn_abt ( txn ) 776 DB_TXN * txn ; 778 DB_ENV * dbv ; 779 DB_LOCKREQ que ; 780 DB_TXN * kid ; 781 REGENV * nv ; 782 REGINFO * f ; 783 TXN_DETAIL * td ; 784 u_t32_t id ; 785 t ; 787 dbv = txn -> mg ->dbenv; 788 td = txn ->td; 790 `PANIC_CHECK ( dbv ); 793 i(( t = `__txn_isvid ( txn , TXN_OP_ABORT )) != 0) 794 ( `__db_nic ( dbv , t )); 803 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 804 i(( t = `__txn_abt ( kid )) != 0) 805 ( t ); 807 f = dbv -> gfo ; 808 nv = f -> imy ; 812 id = nv -> vid ; 820 i( `IS_ZERO_LSN ( td -> ϡ_l && `STAILQ_FIRST (& txn -> logs = NULL ) { 821 i( txn -> txn_li = NULL ) 822 de ; 824 undo ; 827 i( `LOCKING_ON ( dbv )) { 829 i( txn -> lock = NULL && 830 ( t = `__lock_glock ( dbv -> lk_hd , 831 txn -> txnid , 1, &txn-> lock )) != 0) 832 ( `__db_nic ( dbv , t )); 840 i(( t = `__txn_dvts ( dbv , txn , TXN_ABORT , 1)) != 0) 841 ( `__db_nic ( dbv , t )); 844 i(( t = `__lock_t_timeout ( dbv , 845 txn -> lock , 0, DB_SET_TXN_TIMEOUT )) != 0) 846 ( `__db_nic ( dbv , t )); 848 i(( t = `__lock_t_timeout ( dbv , 849 txn -> lock , 0, DB_SET_LOCK_TIMEOUT )) != 0) 850 ( `__db_nic ( dbv , t )); 852 que . = DB_LOCK_UPGRADE_WRITE ; 853 que . obj = NULL ; 854 i(( t = `__lock_vec ( 855 dbv , txn -> lock , DB_LOCK_ABORT , & que , 1, NULL )) != 0) 856 ( `__db_nic ( dbv , t )); 858 undo : i(( t = `__txn_undo ( txn )) != 0) 859 ( `__db_nic ( dbv , t )); 867 de : i( `DBENV_LOGGING ( dbv && td -> us = TXN_PREPARED && 868 ( t = `__txn_g_log ( dbv , txn , & td -> ϡ_l , 869 `LOG_FLAGS ( txn ), TXN_ABORT , ( t32_t ) `time ( NULL ), id , NULL)) != 0) 870 ( `__db_nic ( dbv , t )); 873 ( `__txn_d ( txn , 0)); 874 } } 881 $__txn_disrd ( txn , ags ) 882 DB_TXN * txn ; 883 u_t32_t ags ; 885 DB_ENV * dbv ; 886 DB_THREAD_INFO * ; 887 t , t_t ; 889 dbv = txn -> mg ->dbenv; 891 `ENV_ENTER ( dbv , ); 892 t = `__txn_disrd_t ( txn , ags ); 893 i( `IS_ENV_REPLICATED ( dbv ) && 894 ( t_t = `___p_ex ( dbv )!0 && t == 0) 895 t = t_t ; 896 `ENV_LEAVE ( dbv , ); 897 ( t ); 898 } } 907 $__txn_disrd_t ( txn , ags ) 908 DB_TXN * txn ; 909 u_t32_t ags ; 911 DB_ENV * dbv ; 912 DB_TXN * p ; 913 DB_TXNMGR * mgr ; 914 t ; 916 `COMPQUIET ( ags , 0); 918 mgr = txn -> mg ; 919 dbv = mgr ->dbenv; 920 p = NULL ; 922 `PANIC_CHECK ( dbv ); 924 i(( t = `__txn_isvid ( txn , TXN_OP_DISCARD )) != 0) 925 ( t ); 928 `DB_ASSERT ( dbv , `TAILQ_FIRST (& txn -> kids = NULL ); 931 `MUTEX_LOCK ( dbv , mgr -> mux ); 932 mgr -> n_disrds ++; 933 i( `F_ISSET ( txn , TXN_MALLOC )) { 934 `TAILQ_REMOVE (& mgr -> txn_cha , txn , lks ); 935 p = txn ; 937 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 938 i( p ! NULL ) 939 `__os_ ( dbv , p ); 942 } } 951 $__txn_e ( txn , gid ) 952 DB_TXN * txn ; 953 u_t8_t * gid ; 955 DBT li_dbt , xid ; 956 DB_ENV * dbv ; 957 DB_LOCKREQ que ; 958 DB_THREAD_INFO * ; 959 DB_TXN * kid ; 960 TXN_DETAIL * td ; 961 u_t32_t lags ; 962 t ; 964 dbv = txn -> mg ->dbenv; 965 td = txn ->td; 967 `PANIC_CHECK ( dbv ); 969 i(( t = `__txn_isvid ( txn , TXN_OP_PREPARE )) != 0) 970 ( t ); 971 i( `F_ISSET ( txn , TXN_DEADLOCK )) 972 ( `__db_txn_ddlock_r ( dbv , txn )); 974 `ENV_ENTER ( dbv , ); 977 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 978 i(( t = `__txn_comm ( kid , DB_TXN_NOSYNC )) != 0) 979 r ; 981 #ide HAVE_FTRUNCATE 982 i( txn -> txn_li ! NULL && 983 ( t = `__db_do_the_limbo ( dbv , 984 NULL , txn ,xn-> txn_li , LIMBO_PREPARE )) != 0) 985 r ; 995 i(( t = `__txn_dvts ( dbv , txn , TXN_PREPARE , 1)) != 0) 996 r ; 997 `memt (& que , 0, (request)); 998 i( `LOCKING_ON ( dbv )) { 999 que . = DB_LOCK_PUT_READ ; 1000 i(! `IS_ZERO_LSN ( td -> ϡ_l )) { 1001 `memt (& li_dbt , 0, (list_dbt)); 1002 que . obj = & li_dbt ; 1004 i(( t = `__lock_vec ( dbv , 1005 txn -> lock , 0, & que , 1, NULL )) != 0) 1006 r ; 1009 i( `DBENV_LOGGING ( dbv )) { 1010 `memt (& xid , 0, (xid)); 1011 i( td -> xa_us ! TXN_XA_ENDED && 1012 td -> xa_us ! TXN_XA_SUSPENDED ) 1014 `memy ( td -> xid , gid , (td->xid)); 1016 xid . size = ( td ->xid); 1017 xid . da = td ->xid; 1019 lags = DB_LOG_COMMIT | DB_FLUSH ; 1020 i(( t = `__txn_xa_g_log ( dbv , txn , & td -> ϡ_l , 1021 lags , TXN_PREPARE , & xid , td -> fm ,d-> gid ,d-> bqu , 1022 & td -> beg_l , que . obj )) != 0) 1023 `__db_r ( 1024 dbv , t , "DB_TXN->prepare:og_write failed"); 1026 i( que . obj ! NULL &&eque.obj-> da != NULL) 1027 `__os_ ( dbv , que . obj -> da ); 1028 i( t != 0) 1029 r ; 1033 `MUTEX_LOCK ( dbv , txn -> mg -> mux ); 1034 td -> us = TXN_PREPARED ; 1035 `MUTEX_UNLOCK ( dbv , txn -> mg -> mux ); 1036 r : `ENV_LEAVE ( dbv , ); 1037 ( t ); 1038 } } 1046 u_t32_t 1047 $__txn_id ( txn ) 1048 DB_TXN * txn ; 1050 ( txn -> txnid ); 1051 } } 1060 $__txn_g_me ( txn , m ) 1061 DB_TXN * txn ; 1062 cڡ ** m ; 1064 * m = txn -> me ; 1067 } } 1076 $__txn_t_me ( txn , me ) 1077 DB_TXN * txn ; 1078 cڡ * me ; 1080 DB_ENV * dbv ; 1081 DB_THREAD_INFO * ; 1082 DB_TXNMGR * mgr ; 1083 TXN_DETAIL * td ; 1084 size_t n ; 1085 t ; 1086 * p ; 1088 mgr = txn -> mg ; 1089 dbv = mgr ->dbenv; 1090 td = txn ->td; 1091 n = ` ( me ) + 1; 1093 i(( t = `__os_loc ( dbv , n , & txn -> me )) != 0) 1094 ( t ); 1095 `memy ( txn -> me ,ame, n ); 1097 `ENV_ENTER ( dbv , ); 1098 `TXN_SYSTEM_LOCK ( dbv ); 1099 i( td -> me ! INVALID_ROFF ) { 1100 `__v_loc_ ( 1101 & mgr -> gfo , `R_ADDR (&mgr->gfo, td -> me )); 1102 td -> me = INVALID_ROFF ; 1104 i(( t = `__v_loc (& mgr -> gfo , n , & p )) != 0) { 1105 `TXN_SYSTEM_UNLOCK ( dbv ); 1106 `__db_rx ( dbv , 1109 `__os_ ( dbv , txn -> me ); 1110 txn -> me = NULL ; 1112 `ENV_LEAVE ( dbv , ); 1113 ( t ); 1115 `TXN_SYSTEM_UNLOCK ( dbv ); 1116 td -> me = `R_OFFSET (& mgr -> gfo , p ); 1117 `memy ( p , me , n ); 1119 #ifde DIAGNOSTIC 1124 i( `DBENV_LOGGING ( dbv )) 1125 () `__log_tf ( dbv , txn , 1126 "i %#lxamed %s", ( u_lg ) txn -> txnid , me ); 1129 `ENV_LEAVE ( dbv , ); 1131 } } 1139 $__txn_t_timeout ( txn , timeout , ) 1140 DB_TXN * txn ; 1141 db_timeout_t timeout ; 1142 u_t32_t ; 1144 DB_ENV * dbv ; 1145 DB_THREAD_INFO * ; 1146 t ; 1148 dbv = txn -> mg ->dbenv; 1150 i( ! DB_SET_TXN_TIMEOUT && o! DB_SET_LOCK_TIMEOUT ) 1151 ( `__db_ ( dbv , "DB_TXN->set_timeout", 0)); 1153 `ENV_ENTER ( dbv , ); 1154 t = `__lock_t_timeout dbv , txn -> lock , timeout , ); 1155 `ENV_LEAVE ( txn -> mg -> dbv , ); 1156 ( t ); 1157 } } 1164 $__txn_isvid ( txn , ) 1165 cڡ DB_TXN * txn ; 1166 txn_t ; 1168 DB_ENV * dbv ; 1169 DB_TXNMGR * mgr ; 1170 DB_TXNREGION * gi ; 1171 TXN_DETAIL * td ; 1173 mgr = txn -> mg ; 1174 dbv = mgr ->dbenv; 1175 gi = mgr -> gfo . imy ; 1178 i(! `F_ISSET ( txn , TXN_COMPENSATE ) && 1179 `F_ISSET ( gi , TXN_IN_RECOVERY )) { 1180 `__db_rx ( dbv , "operationotermitted duringecovery"); 1181 r ; 1185 i( txn -> curss != 0) { 1186 `__db_rx ( dbv , "transaction hasctive cursors"); 1187 r ; 1191 td = txn ->td; 1194 ) { 1195 TXN_OP_DISCARD : 1202 i( txn -> txnid ! td ->txnid) 1209 i( td -> us ! TXN_PREPARED && 1210 ! `F_ISSET ( td , TXN_DTL_RESTORED )) { 1211 `__db_rx ( dbv , "notestoredransaction"); 1212 ( `__db_nic ( dbv , EINVAL )); 1216 TXN_OP_PREPARE : 1217 i( txn -> ! NULL ) { 1225 `__db_rx ( dbv , 1227 ( EINVAL ); 1230 TXN_OP_ABORT : 1231 TXN_OP_COMMIT : 1236 td -> us ) { 1237 TXN_PREPARED : 1238 i( = TXN_OP_PREPARE ) { 1239 `__db_rx ( dbv , "transactionlreadyrepared"); 1245 ( EINVAL ); 1248 TXN_RUNNING : 1250 TXN_ABORTED : 1251 TXN_COMMITTED : 1253 `__db_rx ( dbv , "transactionlready %s", 1254 td -> us = TXN_COMMITTED ? "committed" : "aborted"); 1255 r ; 1260 r : 1265 ( `__db_nic ( dbv , EINVAL )); 1266 } } 1273 $__txn_d ( txn , is_comm ) 1274 DB_TXN * txn ; 1275 is_comm ; 1277 DB_ENV * dbv ; 1278 DB_LOCKREQ que ; 1279 DB_TXNLOGREC * ; 1280 DB_TXNMGR * mgr ; 1281 DB_TXNREGION * gi ; 1282 TXN_DETAIL * d , * td ; 1283 db_mux_t mvcc_mtx ; 1284 do_ofes , t ; 1286 mgr = txn -> mg ; 1287 dbv = mgr ->dbenv; 1288 gi = mgr -> gfo . imy ; 1289 do_ofes = 0; 1292 i(( t = `__txn_dvts ( dbv , 1293 txn , is_comm ? TXN_COMMIT : TXN_ABORT , 0)) != 0) 1294 ( `__db_nic ( dbv , t )); 1305 i( `LOCKING_ON ( dbv )) { 1307 i( txn -> lock = NULL && 1308 ( t = `__lock_glock ( dbv -> lk_hd , 1309 txn -> txnid , 1, &txn-> lock )) != 0) 1310 ( `__db_nic ( dbv , t )); 1311 que . = txn -> = NULL || 1312 is_comm =0 ? DB_LOCK_PUT_ALL : DB_LOCK_INHERIT ; 1313 que . obj = NULL ; 1314 i(( t = `__lock_vec ( dbv , 1315 txn -> lock , 0, & que , 1, NULL )) != 0) 1316 ( `__db_nic ( dbv , t )); 1320 td = txn ->td; 1321 i( td -> og_dbs !0 && ( t = `__txn_df_ame ( dbv , txn )) != 0) 1322 ( `__db_nic ( dbv , t )); 1324 i( td -> mvcc_f !0 && `IS_MAX_LSN d-> visib_l )) { 1325 `DB_ASSERT ( dbv , ! is_comm ); 1333 i(( t = `__log_cut_l ( dbv , & td -> visib_l , 1334 NULL , NULL)) != 0) 1335 ( `__db_nic ( dbv , t )); 1338 `TXN_SYSTEM_LOCK ( dbv ); 1339 td -> us = is_comm ? TXN_COMMITTED : TXN_ABORTED ; 1340 `SH_TAILQ_REMOVE (& gi -> aive_txn , td , lks , __txn_da ); 1341 i( `F_ISSET ( td , TXN_DTL_RESTORED )) { 1342 gi -> . _ees --; 1343 do_ofes = gi -> . _ees == 0; 1346 i( td -> me ! INVALID_ROFF ) { 1347 `__v_loc_ ( 1348 & mgr -> gfo , `R_ADDR (&mgr->gfo, td -> me )); 1349 td -> me = INVALID_ROFF ; 1351 i( txn -> ! NULL ) { 1352 d = txn -> -> td ; 1353 `SH_TAILQ_REMOVE (& d -> kids , td , klks , __txn_da ); 1354 } i(( mvcc_mtx = td ->mvcc_mtx! MUTEX_INVALID ) { 1355 `MUTEX_LOCK ( dbv , mvcc_mtx ); 1356 i( td -> mvcc_f != 0) { 1357 `SH_TAILQ_INSERT_HEAD (& gi -> mvcc_txn , 1358 td , lks , __txn_da ); 1359 #ifde HAVE_STATISTICS 1360 i(++ gi -> . _nsh > 1361 gi -> . _maxnsh ) 1362 gi -> . _maxnsh = 1363 gi -> . _nsh ; 1365 td = NULL ; 1367 `MUTEX_UNLOCK ( dbv , mvcc_mtx ); 1368 i( td ! NULL ) 1369 i(( t = `__mux_ ( dbv , & td -> mvcc_mtx )) != 0) 1370 ( `__db_nic ( dbv , t )); 1373 i( td ! NULL ) { 1374 i( td -> og_s ! TXN_NSLOTS ) 1375 `__v_loc_ (& mgr -> gfo , 1376 `R_ADDR (& mgr -> gfo , td -> log_dbs )); 1377 `__v_loc_ (& mgr -> gfo , td ); 1380 #ifde HAVE_STATISTICS 1381 i( is_comm ) 1382 gi -> . _ncomms ++; 1384 gi -> . _bts ++; 1385 -- gi -> . _ive ; 1388 `TXN_SYSTEM_UNLOCK ( dbv ); 1394 i( `LOCKING_ON ( dbv && ( t = 1395 `__lock_mylock ( dbv -> lk_hd , txn -> lock )) != 0) 1396 ( `__db_nic ( dbv , t )); 1397 i( txn -> ! NULL ) 1398 `TAILQ_REMOVE (& txn -> -> kids ,xn, klks ); 1401 ( = `STAILQ_FIRST (& txn -> logs )! NULL ) { 1402 `STAILQ_REMOVE (& txn -> logs , , __txn_logc , lks ); 1403 `__os_ ( dbv , ); 1405 i( txn -> me ! NULL ) { 1406 `__os_ ( dbv , txn -> me ); 1407 txn -> me = NULL ; 1409 i( `F_ISSET ( txn , TXN_MALLOC )) { 1410 `MUTEX_LOCK ( dbv , mgr -> mux ); 1411 `TAILQ_REMOVE (& mgr -> txn_cha , txn , lks ); 1412 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 1414 `__os_ ( dbv , txn ); 1417 i( do_ofes ) { 1423 () `__dbg_vide_fes ( dbv , 1); 1424 () `__dbg_o_fes ( dbv , 1); 1425 i( `IS_REP_MASTER ( dbv )) 1426 `F_CLR ( dbv -> p_hd , DBREP_OPENFILES ); 1427 `F_CLR ( dbv -> lg_hd , DBLOG_OPENFILES ); 1428 mgr -> n_disrds = 0; 1429 () `__txn_checkpot ( dbv , 0, 0, 1430 DB_CKP_INTERNAL | DB_FORCE ); 1434 } } 1437 $__txn_dich_undo ( dbv , txn , rdbt , key_l , txi ) 1438 DB_ENV * dbv ; 1439 DB_TXN * txn ; 1440 DBT * rdbt ; 1441 DB_LSN * key_l ; 1442 DB_TXNHEAD * txi ; 1444 t ; 1446 txi -> td = txn ->td; 1447 t = `__db_dich ( dbv , dbv-> cov_db , 1448 dbv -> cov_db_size , rdbt , key_l , DB_TXN_ABORT , txi ); 1449 i( t = DB_SURPRISE_KID ) { 1450 `F_SET ( txn , TXN_CHILDCOMMIT ); 1451 t = 0; 1453 i( t =0 && `F_ISSET ( txn , TXN_CHILDCOMMIT && `IS_ZERO_LSN (* key_l )) 1454 t = `__db_txi_lg ( dbv , txi , key_l , 0); 1456 ( t ); 1457 } } 1464 $__txn_undo ( txn ) 1465 DB_TXN * txn ; 1467 DBT rdbt ; 1468 DB_ENV * dbv ; 1469 DB_LOGC * logc ; 1470 DB_LSN key_l ; 1471 DB_TXN * xn ; 1472 DB_TXNHEAD * txi ; 1473 DB_TXNLOGREC * ; 1474 DB_TXNMGR * mgr ; 1475 t , t_t ; 1477 mgr = txn -> mg ; 1478 dbv = mgr ->dbenv; 1479 logc = NULL ; 1480 txi = NULL ; 1481 t = 0; 1483 i(! `LOGGING_ON ( dbv )) 1491 `memt (& rdbt , 0, (rdbt)); 1499 xn = txn -> ;tx! NULL &&txn->parent != NULL;) 1500 xn =txn-> ; 1502 i( xn ! NULL &&txn-> txn_li != NULL) 1503 txi = xn -> txn_li ; 1504 i( txn -> txn_li ! NULL ) 1505 txi = txn -> txn_li ; 1506 i(( t = `__db_txi_ ( dbv , 0, 0, NULL , & txi )) != 0) 1507 ( t ); 1508 i( xn ! NULL ) 1509 xn -> txn_li = txi ; 1515 `STAILQ_FOREACH ( , & txn -> logs , lks ) { 1516 rdbt . da = ->data; 1517 rdbt . size = 0; 1518 `LSN_NOT_LOGGED ( key_l ); 1519 t = 1520 `__txn_dich_undo ( dbv , txn , & rdbt , & key_l , txi ); 1521 i( t != 0) { 1522 `__db_r ( dbv , t , 1524 r ; 1528 key_l = (( TXN_DETAIL *) txn -> td )-> ϡ_l ; 1530 i(! `IS_ZERO_LSN ( key_l ) && 1531 ( t = `__log_curs ( dbv , & logc )) != 0) 1532 r ; 1534 ! `IS_ZERO_LSN ( key_l )) { 1539 i(( t = `__logc_g ( logc , & key_l , & rdbt , DB_SET )) == 0) { 1540 t = `__txn_dich_undo ( dbv , 1541 txn , & rdbt , & key_l , txi ); 1544 i( t != 0) { 1545 `__db_r ( dbv , t , 1547 ( u_lg ) key_l . fe , (u_lg)key_l. offt ); 1548 r ; 1552 #ide HAVE_FTRUNCATE 1553 t = `__db_do_the_limbo ( dbv , xn , txn , txi , LIMBO_NORMAL ); 1556 r : i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 1557 t = t_t ; 1559 i( xn = NULL && txi != NULL) 1560 `__db_txi_d ( dbv , txi ); 1561 ( t ); 1562 } } 1571 $__txn_aivekids ( dbv , y , txn ) 1572 DB_ENV * dbv ; 1573 u_t32_t y ; 1574 DB_TXN * txn ; 1580 i( `F_ISSET ( txn , TXN_COMPENSATE || y = DB___txn_chd ) 1583 i( `TAILQ_FIRST (& txn -> kids ! NULL ) { 1584 `__db_rx ( dbv , "Childransaction isctive"); 1585 ( EPERM ); 1588 } } 1598 $__txn_f_abt ( dbv , bufr ) 1599 DB_ENV * dbv ; 1600 u_t8_t * bufr ; 1602 DB_CIPHER * db_ch ; 1603 HDR hdr , * hd ; 1604 u_t32_t offt , code , sum_n ; 1605 u_t8_t * bp , * key , chksum [ DB_MAC_KEY ]; 1606 size_t hdrsize , c_n ; 1607 t ; 1609 db_ch = dbv -> yo_hd ; 1617 hdrsize = `CRYPTO_ON ( dbv ? HDR_CRYPTO_SZ : HDR_NORMAL_SZ ; 1619 hd = ( HDR *) bufr ; 1620 `memy (& hdr . ev , bufr + `SSZ ( HDR ,rev), (hdr.prev)); 1621 `memy (& hdr . n , bufr + `SSZ ( HDR ,en), (hdr.len)); 1622 c_n = hdr . n - hdrsize ; 1624 offt = ( u_t32_t + (u_t32_t+ ( DB_LSN ); 1625 i( `CRYPTO_ON ( dbv )) { 1626 key = db_ch -> mac_key ; 1627 sum_n = DB_MAC_KEY ; 1628 i(( t = db_ch -> `dey ( dbv , db_ch-> da , 1629 & hd -> iv [0], bufr + hdrsize , c_n )) != 0) 1630 ( `__db_nic ( dbv , t )); 1632 key = NULL ; 1633 sum_n = ( u_t32_t ); 1635 bp = bufr + hdrsize + offt ; 1636 code = TXN_ABORT ; 1637 `memy ( bp , & code , (opcode)); 1639 i( `CRYPTO_ON ( dbv ) && 1640 ( t = db_ch -> `y ( dbv , 1641 db_ch -> da , & hd -> iv [0], bufr + hdrsize , c_n )) != 0) 1642 ( `__db_nic ( dbv , t )); 1644 `__db_chksum (& hdr , bufr + hdrsize , c_n , key , chksum ); 1645 `memy ( bufr + `SSZA ( HDR , chksum ), chksum, sum_n ); 1648 } } 1659 $__txn_eo ( dbv ) 1660 DB_ENV * dbv ; 1662 DB_TXNMGR * mgr ; 1663 DB_TXNREGION * gi ; 1664 do_ofes , t ; 1666 mgr = dbv -> tx_hd ; 1667 gi = mgr -> gfo . imy ; 1668 do_ofes = 0; 1670 `TXN_SYSTEM_LOCK ( dbv ); 1671 i( gi ! NULL && 1672 gi -> . _ees < mgr -> n_disrds && 1673 mgr -> n_disrds != 0) 1674 do_ofes = 1; 1675 `TXN_SYSTEM_UNLOCK ( dbv ); 1677 i( do_ofes ) { 1683 `F_SET ( dbv -> lg_hd , DBLOG_RECOVER ); 1684 t = `__dbg_o_fes ( dbv , 0); 1685 `F_CLR ( dbv -> lg_hd , DBLOG_RECOVER ); 1687 t = 0; 1689 ( t ); 1690 } } 1699 $__txn_t ( dbv ) 1700 DB_ENV * dbv ; 1702 DB_LSN s ; 1703 DB_TXNREGION * gi ; 1705 gi = dbv -> tx_hd -> gfo . imy ; 1706 gi -> ϡ_txnid = TXN_MINIMUM ; 1708 `DB_ASSERT ( dbv , `LOGGING_ON (dbenv)); 1709 ( `__txn_cye_log ( dbv , 1710 NULL , & s , 0, TXN_MINIMUM , TXN_MAXIMUM )); 1711 } } 1719 $__txn_t_txn_lp ( txn , blp , p ) 1720 DB_TXN * txn ; 1721 DB_LSN ** blp , ** p ; 1723 TXN_DETAIL * td ; 1725 td = txn ->td; 1726 * p = & td -> ϡ_l ; 1728 txn -> ! NULL ) 1729 txn =xn-> ; 1731 td = txn ->td; 1732 i( `IS_ZERO_LSN ( td -> beg_l )) 1733 * blp = & td -> beg_l ; 1734 } } @../txn/txn_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/lock.h " 11 ~"dbc/log.h " 12 ~"dbc/txn.h " 19 $__txn_g_42_ad ( dbv , cbuf , g ) 20 DB_ENV * dbv ; 21 * cbuf ; 22 __txn_g_42_gs ** g ; 24 __txn_g_42_gs * gp ; 25 u_t32_t ump ; 26 u_t8_t * bp ; 27 t ; 29 i(( t = `__os_mloc ( dbv , 30 ( __txn_g_42_gs + ( DB_TXN ), & gp )) != 0) 31 ( t ); 32 bp = cbuf ; 33 gp -> tx = ( DB_TXN *)&argp[1]; 34 `memt ( gp -> tx , 0, ( DB_TXN )); 36 `memy (& gp -> ty , bp , (argp->type)); 37 bp +( gp -> ty ); 39 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 40 bp +( gp -> tx -> txnid ); 42 `memy (& gp -> ev_l , bp , ( DB_LSN )); 43 bp +( DB_LSN ); 45 `memy (& ump , bp , (uinttmp)); 46 gp -> code = ( u_t32_t ) ump ; 47 bp +( ump ); 49 `memy (& ump , bp , (uinttmp)); 50 gp -> timeamp = ( t32_t ) ump ; 51 bp +( ump ); 53 `memt (& gp -> locks , 0, (argp->locks)); 54 `memy (& gp -> locks . size , bp , ( u_t32_t )); 55 bp +( u_t32_t ); 56 gp -> locks . da = bp ; 57 bp + gp -> locks . size ; 59 * g = gp ; 61 } } 68 $__txn_g_log ( dbv , tx , t_lp , ags , 69 code , timeamp , vid , locks ) 70 DB_ENV * dbv ; 71 DB_TXN * tx ; 72 DB_LSN * t_lp ; 73 u_t32_t ags ; 74 u_t32_t code ; 75 t32_t timeamp ; 76 u_t32_t vid ; 77 cڡ DBT * locks ; 79 DBT logc ; 80 DB_TXNLOGREC * ; 81 DB_LSN * lp , nu_l , * p ; 82 u_t32_t zo , ump , y , txn_num ; 83 u_t ad ; 84 u_t8_t * bp ; 85 is_dub , t ; 87 `COMPQUIET ( , NULL ); 89 y = DB___txn_g ; 90 ad = 0; 91 p = t_lp ; 93 t = 0; 95 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 96 i( tx = NULL ) 98 i( tx = NULL ) 100 is_dub = 0; 102 is_dub = 1; 104 i( tx = NULL ) { 105 txn_num = 0; 106 lp = & nu_l ; 107 nu_l . fe =u_l. offt = 0; 109 i( `TAILQ_FIRST (& tx -> kids ! NULL && 110 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 111 ( t ); 118 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 119 txn_num = tx -> txnid ; 122 logc . size = ( y + ( txn_num + ( DB_LSN ) 123 + ( u_t32_t ) 124 + ( u_t32_t ) 125 + ( u_t32_t ) 126 + ( u_t32_t + ( locks = NULL ? 0 :ocks-> size ); 127 i( `CRYPTO_ON ( dbv )) { 128 ad = 129 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 130 logc . size + ad ; 133 i( is_dub || tx = NULL ) { 134 i(( t = 135 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 136 ( t ); 138 i(( t = `__os_mloc ( dbv , 139 logc . size + ( DB_TXNLOGREC ), & )) != 0) 140 ( t ); 141 #ifde DIAGNOSTIC 142 i(( t = 143 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 144 `__os_ ( dbv , ); 145 ( t ); 148 logc . da = ->data; 151 i( ad > 0) 152 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 154 bp = logc . da ; 156 `memy ( bp , & y , (rectype)); 157 bp +( y ); 159 `memy ( bp , & txn_num , (txn_num)); 160 bp +( txn_num ); 162 `memy ( bp , lp , ( DB_LSN )); 163 bp +( DB_LSN ); 165 ump = ( u_t32_t ) code ; 166 `memy ( bp , & ump , (uinttmp)); 167 bp +( ump ); 169 ump = ( u_t32_t ) timeamp ; 170 `memy ( bp , & ump , (uinttmp)); 171 bp +( ump ); 173 ump = ( u_t32_t ) vid ; 174 `memy ( bp , & ump , (uinttmp)); 175 bp +( ump ); 177 i( locks = NULL ) { 178 zo = 0; 179 `memy ( bp , & zo , ( u_t32_t )); 180 bp +( u_t32_t ); 182 `memy ( bp , & locks -> size , (locks->size)); 183 bp +( locks -> size ); 184 `memy ( bp , locks -> da ,ocks-> size ); 185 bp + locks -> size ; 188 `DB_ASSERT ( dbv , 189 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 191 i( is_dub || tx = NULL ) { 192 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 193 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 194 * lp = * p ; 195 i( p ! t_lp ) 196 * t_lp = * p ; 199 t = 0; 200 #ifde DIAGNOSTIC 205 `memy ( -> da , logc .da,ogc. size ); 206 y | DB_debug_FLAG ; 207 `memy ( logc . da , & y , (rectype)); 209 i(! `IS_REP_CLIENT ( dbv )) 210 t = `__log_put ( dbv , 211 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 213 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 214 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 215 `LSN_NOT_LOGGED (* t_lp ); 218 #ifde LOG_DIAGNOSTIC 219 i( t != 0) 220 () `__txn_g_t ( dbv , 221 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 224 #ifde DIAGNOSTIC 225 `__os_ ( dbv , logc . da ); 227 i( is_dub || tx = NULL ) 228 `__os_ ( dbv , logc . da ); 230 ( t ); 231 } } 237 $__txn_g_ad ( dbv , cbuf , g ) 238 DB_ENV * dbv ; 239 * cbuf ; 240 __txn_g_gs ** g ; 242 __txn_g_gs * gp ; 243 u_t32_t ump ; 244 u_t8_t * bp ; 245 t ; 247 i(( t = `__os_mloc ( dbv , 248 ( __txn_g_gs + ( DB_TXN ), & gp )) != 0) 249 ( t ); 250 bp = cbuf ; 251 gp -> tx = ( DB_TXN *)&argp[1]; 252 `memt ( gp -> tx , 0, ( DB_TXN )); 254 `memy (& gp -> ty , bp , (argp->type)); 255 bp +( gp -> ty ); 257 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 258 bp +( gp -> tx -> txnid ); 260 `memy (& gp -> ev_l , bp , ( DB_LSN )); 261 bp +( DB_LSN ); 263 `memy (& ump , bp , (uinttmp)); 264 gp -> code = ( u_t32_t ) ump ; 265 bp +( ump ); 267 `memy (& ump , bp , (uinttmp)); 268 gp -> timeamp = ( t32_t ) ump ; 269 bp +( ump ); 271 `memy (& ump , bp , (uinttmp)); 272 gp -> vid = ( u_t32_t ) ump ; 273 bp +( ump ); 275 `memt (& gp -> locks , 0, (argp->locks)); 276 `memy (& gp -> locks . size , bp , ( u_t32_t )); 277 bp +( u_t32_t ); 278 gp -> locks . da = bp ; 279 bp + gp -> locks . size ; 281 * g = gp ; 283 } } 289 $__txn_ckp_42_ad ( dbv , cbuf , g ) 290 DB_ENV * dbv ; 291 * cbuf ; 292 __txn_ckp_42_gs ** g ; 294 __txn_ckp_42_gs * gp ; 295 u_t32_t ump ; 296 u_t8_t * bp ; 297 t ; 299 i(( t = `__os_mloc ( dbv , 300 ( __txn_ckp_42_gs + ( DB_TXN ), & gp )) != 0) 301 ( t ); 302 bp = cbuf ; 303 gp -> tx = ( DB_TXN *)&argp[1]; 304 `memt ( gp -> tx , 0, ( DB_TXN )); 306 `memy (& gp -> ty , bp , (argp->type)); 307 bp +( gp -> ty ); 309 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 310 bp +( gp -> tx -> txnid ); 312 `memy (& gp -> ev_l , bp , ( DB_LSN )); 313 bp +( DB_LSN ); 315 `memy (& gp -> ckp_l , bp , (argp->ckp_lsn)); 316 bp +( gp -> ckp_l ); 318 `memy (& gp -> ϡ_ckp , bp , (argp->last_ckp)); 319 bp +( gp -> ϡ_ckp ); 321 `memy (& ump , bp , (uinttmp)); 322 gp -> timeamp = ( t32_t ) ump ; 323 bp +( ump ); 325 `memy (& ump , bp , (uinttmp)); 326 gp -> p_g = ( u_t32_t ) ump ; 327 bp +( ump ); 329 * g = gp ; 331 } } 338 $__txn_ckp_log ( dbv , tx , t_lp , ags , 339 ckp_l , ϡ_ckp , timeamp , vid , e ) 340 DB_ENV * dbv ; 341 DB_TXN * tx ; 342 DB_LSN * t_lp ; 343 u_t32_t ags ; 344 DB_LSN * ckp_l ; 345 DB_LSN * ϡ_ckp ; 346 t32_t timeamp ; 347 u_t32_t vid ; 348 u_t32_t e ; 350 DBT logc ; 351 DB_TXNLOGREC * ; 352 DB_LSN * lp , nu_l , * p ; 353 u_t32_t ump , y , txn_num ; 354 u_t ad ; 355 u_t8_t * bp ; 356 is_dub , t ; 358 `COMPQUIET ( , NULL ); 360 y = DB___txn_ckp ; 361 ad = 0; 362 p = t_lp ; 364 t = 0; 366 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 367 i( tx = NULL ) 369 i( tx = NULL ) 371 is_dub = 0; 373 is_dub = 1; 375 i( tx = NULL ) { 376 txn_num = 0; 377 lp = & nu_l ; 378 nu_l . fe =u_l. offt = 0; 380 i( `TAILQ_FIRST (& tx -> kids ! NULL && 381 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 382 ( t ); 389 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 390 txn_num = tx -> txnid ; 393 logc . size = ( y + ( txn_num + ( DB_LSN ) 394 + (* ckp_l ) 395 + (* ϡ_ckp ) 396 + ( u_t32_t ) 397 + ( u_t32_t ) 398 + ( u_t32_t ); 399 i( `CRYPTO_ON ( dbv )) { 400 ad = 401 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 402 logc . size + ad ; 405 i( is_dub || tx = NULL ) { 406 i(( t = 407 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 408 ( t ); 410 i(( t = `__os_mloc ( dbv , 411 logc . size + ( DB_TXNLOGREC ), & )) != 0) 412 ( t ); 413 #ifde DIAGNOSTIC 414 i(( t = 415 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 416 `__os_ ( dbv , ); 417 ( t ); 420 logc . da = ->data; 423 i( ad > 0) 424 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 426 bp = logc . da ; 428 `memy ( bp , & y , (rectype)); 429 bp +( y ); 431 `memy ( bp , & txn_num , (txn_num)); 432 bp +( txn_num ); 434 `memy ( bp , lp , ( DB_LSN )); 435 bp +( DB_LSN ); 437 i( ckp_l ! NULL ) 438 `memy ( bp , ckp_l , (*ckp_lsn)); 440 `memt ( bp , 0, (* ckp_l )); 441 bp +(* ckp_l ); 443 i( ϡ_ckp ! NULL ) 444 `memy ( bp , ϡ_ckp , (*last_ckp)); 446 `memt ( bp , 0, (* ϡ_ckp )); 447 bp +(* ϡ_ckp ); 449 ump = ( u_t32_t ) timeamp ; 450 `memy ( bp , & ump , (uinttmp)); 451 bp +( ump ); 453 ump = ( u_t32_t ) vid ; 454 `memy ( bp , & ump , (uinttmp)); 455 bp +( ump ); 457 ump = ( u_t32_t ) e ; 458 `memy ( bp , & ump , (uinttmp)); 459 bp +( ump ); 461 `DB_ASSERT ( dbv , 462 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 464 i( is_dub || tx = NULL ) { 465 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 466 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 467 * lp = * p ; 468 i( p ! t_lp ) 469 * t_lp = * p ; 472 t = 0; 473 #ifde DIAGNOSTIC 478 `memy ( -> da , logc .da,ogc. size ); 479 y | DB_debug_FLAG ; 480 `memy ( logc . da , & y , (rectype)); 482 i(! `IS_REP_CLIENT ( dbv )) 483 t = `__log_put ( dbv , 484 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 486 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 487 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 488 `LSN_NOT_LOGGED (* t_lp ); 491 #ifde LOG_DIAGNOSTIC 492 i( t != 0) 493 () `__txn_ckp_t ( dbv , 494 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 497 #ifde DIAGNOSTIC 498 `__os_ ( dbv , logc . da ); 500 i( is_dub || tx = NULL ) 501 `__os_ ( dbv , logc . da ); 503 ( t ); 504 } } 510 $__txn_ckp_ad ( dbv , cbuf , g ) 511 DB_ENV * dbv ; 512 * cbuf ; 513 __txn_ckp_gs ** g ; 515 __txn_ckp_gs * gp ; 516 u_t32_t ump ; 517 u_t8_t * bp ; 518 t ; 520 i(( t = `__os_mloc ( dbv , 521 ( __txn_ckp_gs + ( DB_TXN ), & gp )) != 0) 522 ( t ); 523 bp = cbuf ; 524 gp -> tx = ( DB_TXN *)&argp[1]; 525 `memt ( gp -> tx , 0, ( DB_TXN )); 527 `memy (& gp -> ty , bp , (argp->type)); 528 bp +( gp -> ty ); 530 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 531 bp +( gp -> tx -> txnid ); 533 `memy (& gp -> ev_l , bp , ( DB_LSN )); 534 bp +( DB_LSN ); 536 `memy (& gp -> ckp_l , bp , (argp->ckp_lsn)); 537 bp +( gp -> ckp_l ); 539 `memy (& gp -> ϡ_ckp , bp , (argp->last_ckp)); 540 bp +( gp -> ϡ_ckp ); 542 `memy (& ump , bp , (uinttmp)); 543 gp -> timeamp = ( t32_t ) ump ; 544 bp +( ump ); 546 `memy (& ump , bp , (uinttmp)); 547 gp -> vid = ( u_t32_t ) ump ; 548 bp +( ump ); 550 `memy (& ump , bp , (uinttmp)); 551 gp -> e = ( u_t32_t ) ump ; 552 bp +( ump ); 554 * g = gp ; 556 } } 563 $__txn_chd_log ( dbv , tx , t_lp , ags , 564 chd , c_l ) 565 DB_ENV * dbv ; 566 DB_TXN * tx ; 567 DB_LSN * t_lp ; 568 u_t32_t ags ; 569 u_t32_t chd ; 570 DB_LSN * c_l ; 572 DBT logc ; 573 DB_TXNLOGREC * ; 574 DB_LSN * lp , nu_l , * p ; 575 u_t32_t ump , y , txn_num ; 576 u_t ad ; 577 u_t8_t * bp ; 578 is_dub , t ; 580 `COMPQUIET ( , NULL ); 582 y = DB___txn_chd ; 583 ad = 0; 584 p = t_lp ; 586 t = 0; 588 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 589 i( tx = NULL ) 591 i( tx = NULL ) 593 is_dub = 0; 595 is_dub = 1; 597 i( tx = NULL ) { 598 txn_num = 0; 599 lp = & nu_l ; 600 nu_l . fe =u_l. offt = 0; 602 i( `TAILQ_FIRST (& tx -> kids ! NULL && 603 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 604 ( t ); 611 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 612 txn_num = tx -> txnid ; 615 logc . size = ( y + ( txn_num + ( DB_LSN ) 616 + ( u_t32_t ) 617 + (* c_l ); 618 i( `CRYPTO_ON ( dbv )) { 619 ad = 620 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 621 logc . size + ad ; 624 i( is_dub || tx = NULL ) { 625 i(( t = 626 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 627 ( t ); 629 i(( t = `__os_mloc ( dbv , 630 logc . size + ( DB_TXNLOGREC ), & )) != 0) 631 ( t ); 632 #ifde DIAGNOSTIC 633 i(( t = 634 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 635 `__os_ ( dbv , ); 636 ( t ); 639 logc . da = ->data; 642 i( ad > 0) 643 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 645 bp = logc . da ; 647 `memy ( bp , & y , (rectype)); 648 bp +( y ); 650 `memy ( bp , & txn_num , (txn_num)); 651 bp +( txn_num ); 653 `memy ( bp , lp , ( DB_LSN )); 654 bp +( DB_LSN ); 656 ump = ( u_t32_t ) chd ; 657 `memy ( bp , & ump , (uinttmp)); 658 bp +( ump ); 660 i( c_l ! NULL ) 661 `memy ( bp , c_l , (*c_lsn)); 663 `memt ( bp , 0, (* c_l )); 664 bp +(* c_l ); 666 `DB_ASSERT ( dbv , 667 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 669 i( is_dub || tx = NULL ) { 670 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 671 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 672 * lp = * p ; 673 i( p ! t_lp ) 674 * t_lp = * p ; 677 t = 0; 678 #ifde DIAGNOSTIC 683 `memy ( -> da , logc .da,ogc. size ); 684 y | DB_debug_FLAG ; 685 `memy ( logc . da , & y , (rectype)); 687 i(! `IS_REP_CLIENT ( dbv )) 688 t = `__log_put ( dbv , 689 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 691 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 692 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 693 `LSN_NOT_LOGGED (* t_lp ); 696 #ifde LOG_DIAGNOSTIC 697 i( t != 0) 698 () `__txn_chd_t ( dbv , 699 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 702 #ifde DIAGNOSTIC 703 `__os_ ( dbv , logc . da ); 705 i( is_dub || tx = NULL ) 706 `__os_ ( dbv , logc . da ); 708 ( t ); 709 } } 715 $__txn_chd_ad ( dbv , cbuf , g ) 716 DB_ENV * dbv ; 717 * cbuf ; 718 __txn_chd_gs ** g ; 720 __txn_chd_gs * gp ; 721 u_t32_t ump ; 722 u_t8_t * bp ; 723 t ; 725 i(( t = `__os_mloc ( dbv , 726 ( __txn_chd_gs + ( DB_TXN ), & gp )) != 0) 727 ( t ); 728 bp = cbuf ; 729 gp -> tx = ( DB_TXN *)&argp[1]; 730 `memt ( gp -> tx , 0, ( DB_TXN )); 732 `memy (& gp -> ty , bp , (argp->type)); 733 bp +( gp -> ty ); 735 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 736 bp +( gp -> tx -> txnid ); 738 `memy (& gp -> ev_l , bp , ( DB_LSN )); 739 bp +( DB_LSN ); 741 `memy (& ump , bp , (uinttmp)); 742 gp -> chd = ( u_t32_t ) ump ; 743 bp +( ump ); 745 `memy (& gp -> c_l , bp , (argp->c_lsn)); 746 bp +( gp -> c_l ); 748 * g = gp ; 750 } } 758 $__txn_xa_g_log ( dbv , tx , t_lp , ags , 759 code , xid , fmID , gid , bqu , beg_l , 760 locks ) 761 DB_ENV * dbv ; 762 DB_TXN * tx ; 763 DB_LSN * t_lp ; 764 u_t32_t ags ; 765 u_t32_t code ; 766 cڡ DBT * xid ; 767 t32_t fmID ; 768 u_t32_t gid ; 769 u_t32_t bqu ; 770 DB_LSN * beg_l ; 771 cڡ DBT * locks ; 773 DBT logc ; 774 DB_TXNLOGREC * ; 775 DB_LSN * lp , nu_l , * p ; 776 u_t32_t zo , ump , y , txn_num ; 777 u_t ad ; 778 u_t8_t * bp ; 779 is_dub , t ; 781 `COMPQUIET ( , NULL ); 783 y = DB___txn_xa_g ; 784 ad = 0; 785 p = t_lp ; 787 t = 0; 789 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 790 i( tx = NULL ) 792 i( tx = NULL ) 794 is_dub = 0; 796 is_dub = 1; 798 i( tx = NULL ) { 799 txn_num = 0; 800 lp = & nu_l ; 801 nu_l . fe =u_l. offt = 0; 803 i( `TAILQ_FIRST (& tx -> kids ! NULL && 804 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 805 ( t ); 812 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 813 txn_num = tx -> txnid ; 816 logc . size = ( y + ( txn_num + ( DB_LSN ) 817 + ( u_t32_t ) 818 + ( u_t32_t + ( xid = NULL ? 0 : xid-> size ) 819 + ( u_t32_t ) 820 + ( u_t32_t ) 821 + ( u_t32_t ) 822 + (* beg_l ) 823 + ( u_t32_t + ( locks = NULL ? 0 :ocks-> size ); 824 i( `CRYPTO_ON ( dbv )) { 825 ad = 826 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 827 logc . size + ad ; 830 i( is_dub || tx = NULL ) { 831 i(( t = 832 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 833 ( t ); 835 i(( t = `__os_mloc ( dbv , 836 logc . size + ( DB_TXNLOGREC ), & )) != 0) 837 ( t ); 838 #ifde DIAGNOSTIC 839 i(( t = 840 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 841 `__os_ ( dbv , ); 842 ( t ); 845 logc . da = ->data; 848 i( ad > 0) 849 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 851 bp = logc . da ; 853 `memy ( bp , & y , (rectype)); 854 bp +( y ); 856 `memy ( bp , & txn_num , (txn_num)); 857 bp +( txn_num ); 859 `memy ( bp , lp , ( DB_LSN )); 860 bp +( DB_LSN ); 862 ump = ( u_t32_t ) code ; 863 `memy ( bp , & ump , (uinttmp)); 864 bp +( ump ); 866 i( xid = NULL ) { 867 zo = 0; 868 `memy ( bp , & zo , ( u_t32_t )); 869 bp +( u_t32_t ); 871 `memy ( bp , & xid -> size , (xid->size)); 872 bp +( xid -> size ); 873 `memy ( bp , xid -> da , xid-> size ); 874 bp + xid -> size ; 877 ump = ( u_t32_t ) fmID ; 878 `memy ( bp , & ump , (uinttmp)); 879 bp +( ump ); 881 ump = ( u_t32_t ) gid ; 882 `memy ( bp , & ump , (uinttmp)); 883 bp +( ump ); 885 ump = ( u_t32_t ) bqu ; 886 `memy ( bp , & ump , (uinttmp)); 887 bp +( ump ); 889 i( beg_l ! NULL ) 890 `memy ( bp , beg_l , (*begin_lsn)); 892 `memt ( bp , 0, (* beg_l )); 893 bp +(* beg_l ); 895 i( locks = NULL ) { 896 zo = 0; 897 `memy ( bp , & zo , ( u_t32_t )); 898 bp +( u_t32_t ); 900 `memy ( bp , & locks -> size , (locks->size)); 901 bp +( locks -> size ); 902 `memy ( bp , locks -> da ,ocks-> size ); 903 bp + locks -> size ; 906 `DB_ASSERT ( dbv , 907 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 909 i( is_dub || tx = NULL ) { 910 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 911 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 912 * lp = * p ; 913 i( p ! t_lp ) 914 * t_lp = * p ; 917 t = 0; 918 #ifde DIAGNOSTIC 923 `memy ( -> da , logc .da,ogc. size ); 924 y | DB_debug_FLAG ; 925 `memy ( logc . da , & y , (rectype)); 927 i(! `IS_REP_CLIENT ( dbv )) 928 t = `__log_put ( dbv , 929 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 931 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 932 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 933 `LSN_NOT_LOGGED (* t_lp ); 936 #ifde LOG_DIAGNOSTIC 937 i( t != 0) 938 () `__txn_xa_g_t ( dbv , 939 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 942 #ifde DIAGNOSTIC 943 `__os_ ( dbv , logc . da ); 945 i( is_dub || tx = NULL ) 946 `__os_ ( dbv , logc . da ); 948 ( t ); 949 } } 956 $__txn_xa_g_ad ( dbv , cbuf , g ) 957 DB_ENV * dbv ; 958 * cbuf ; 959 __txn_xa_g_gs ** g ; 961 __txn_xa_g_gs * gp ; 962 u_t32_t ump ; 963 u_t8_t * bp ; 964 t ; 966 i(( t = `__os_mloc ( dbv , 967 ( __txn_xa_g_gs + ( DB_TXN ), & gp )) != 0) 968 ( t ); 969 bp = cbuf ; 970 gp -> tx = ( DB_TXN *)&argp[1]; 971 `memt ( gp -> tx , 0, ( DB_TXN )); 973 `memy (& gp -> ty , bp , (argp->type)); 974 bp +( gp -> ty ); 976 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 977 bp +( gp -> tx -> txnid ); 979 `memy (& gp -> ev_l , bp , ( DB_LSN )); 980 bp +( DB_LSN ); 982 `memy (& ump , bp , (uinttmp)); 983 gp -> code = ( u_t32_t ) ump ; 984 bp +( ump ); 986 `memt (& gp -> xid , 0, (argp->xid)); 987 `memy (& gp -> xid . size , bp , ( u_t32_t )); 988 bp +( u_t32_t ); 989 gp -> xid . da = bp ; 990 bp + gp -> xid . size ; 992 `memy (& ump , bp , (uinttmp)); 993 gp -> fmID = ( t32_t ) ump ; 994 bp +( ump ); 996 `memy (& ump , bp , (uinttmp)); 997 gp -> gid = ( u_t32_t ) ump ; 998 bp +( ump ); 1000 `memy (& ump , bp , (uinttmp)); 1001 gp -> bqu = ( u_t32_t ) ump ; 1002 bp +( ump ); 1004 `memy (& gp -> beg_l , bp , (argp->begin_lsn)); 1005 bp +( gp -> beg_l ); 1007 `memt (& gp -> locks , 0, (argp->locks)); 1008 `memy (& gp -> locks . size , bp , ( u_t32_t )); 1009 bp +( u_t32_t ); 1010 gp -> locks . da = bp ; 1011 bp + gp -> locks . size ; 1013 * g = gp ; 1015 } } 1022 $__txn_cye_log ( dbv , tx , t_lp , ags , 1023 m , max ) 1024 DB_ENV * dbv ; 1025 DB_TXN * tx ; 1026 DB_LSN * t_lp ; 1027 u_t32_t ags ; 1028 u_t32_t m ; 1029 u_t32_t max ; 1031 DBT logc ; 1032 DB_TXNLOGREC * ; 1033 DB_LSN * lp , nu_l , * p ; 1034 u_t32_t ump , y , txn_num ; 1035 u_t ad ; 1036 u_t8_t * bp ; 1037 is_dub , t ; 1039 `COMPQUIET ( , NULL ); 1041 y = DB___txn_cye ; 1042 ad = 0; 1043 p = t_lp ; 1045 t = 0; 1047 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 1048 i( tx = NULL ) 1050 i( tx = NULL ) 1052 is_dub = 0; 1054 is_dub = 1; 1056 i( tx = NULL ) { 1057 txn_num = 0; 1058 lp = & nu_l ; 1059 nu_l . fe =u_l. offt = 0; 1061 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1062 ( t = `__txn_aivekids ( dbv , y , tx )) != 0) 1063 ( t ); 1070 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1071 txn_num = tx -> txnid ; 1074 logc . size = ( y + ( txn_num + ( DB_LSN ) 1075 + ( u_t32_t ) 1076 + ( u_t32_t ); 1077 i( `CRYPTO_ON ( dbv )) { 1078 ad = 1079 (( DB_CIPHER *) dbv -> yo_hd )-> `adj_size ( logc . size ); 1080 logc . size + ad ; 1083 i( is_dub || tx = NULL ) { 1084 i(( t = 1085 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) 1086 ( t ); 1088 i(( t = `__os_mloc ( dbv , 1089 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1090 ( t ); 1091 #ifde DIAGNOSTIC 1092 i(( t = 1093 `__os_mloc ( dbv , logc . size , &logc. da )) != 0) { 1094 `__os_ ( dbv , ); 1095 ( t ); 1098 logc . da = ->data; 1101 i( ad > 0) 1102 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1104 bp = logc . da ; 1106 `memy ( bp , & y , (rectype)); 1107 bp +( y ); 1109 `memy ( bp , & txn_num , (txn_num)); 1110 bp +( txn_num ); 1112 `memy ( bp , lp , ( DB_LSN )); 1113 bp +( DB_LSN ); 1115 ump = ( u_t32_t ) m ; 1116 `memy ( bp , & ump , (uinttmp)); 1117 bp +( ump ); 1119 ump = ( u_t32_t ) max ; 1120 `memy ( bp , & ump , (uinttmp)); 1121 bp +( ump ); 1123 `DB_ASSERT ( dbv , 1124 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1126 i( is_dub || tx = NULL ) { 1127 i(( t = `__log_put ( dbv , p ,( DBT *)& logc , 1128 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1129 * lp = * p ; 1130 i( p ! t_lp ) 1131 * t_lp = * p ; 1134 t = 0; 1135 #ifde DIAGNOSTIC 1140 `memy ( -> da , logc .da,ogc. size ); 1141 y | DB_debug_FLAG ; 1142 `memy ( logc . da , & y , (rectype)); 1144 i(! `IS_REP_CLIENT ( dbv )) 1145 t = `__log_put ( dbv , 1146 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1148 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1149 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1150 `LSN_NOT_LOGGED (* t_lp ); 1153 #ifde LOG_DIAGNOSTIC 1154 i( t != 0) 1155 () `__txn_cye_t ( dbv , 1156 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1159 #ifde DIAGNOSTIC 1160 `__os_ ( dbv , logc . da ); 1162 i( is_dub || tx = NULL ) 1163 `__os_ ( dbv , logc . da ); 1165 ( t ); 1166 } } 1173 $__txn_cye_ad ( dbv , cbuf , g ) 1174 DB_ENV * dbv ; 1175 * cbuf ; 1176 __txn_cye_gs ** g ; 1178 __txn_cye_gs * gp ; 1179 u_t32_t ump ; 1180 u_t8_t * bp ; 1181 t ; 1183 i(( t = `__os_mloc ( dbv , 1184 ( __txn_cye_gs + ( DB_TXN ), & gp )) != 0) 1185 ( t ); 1186 bp = cbuf ; 1187 gp -> tx = ( DB_TXN *)&argp[1]; 1188 `memt ( gp -> tx , 0, ( DB_TXN )); 1190 `memy (& gp -> ty , bp , (argp->type)); 1191 bp +( gp -> ty ); 1193 `memy (& gp -> tx -> txnid , bp , (argp->txnp->txnid)); 1194 bp +( gp -> tx -> txnid ); 1196 `memy (& gp -> ev_l , bp , ( DB_LSN )); 1197 bp +( DB_LSN ); 1199 `memy (& ump , bp , (uinttmp)); 1200 gp -> m = ( u_t32_t ) ump ; 1201 bp +( ump ); 1203 `memy (& ump , bp , (uinttmp)); 1204 gp -> max = ( u_t32_t ) ump ; 1205 bp +( ump ); 1207 * g = gp ; 1209 } } 1216 $__txn__cov ( dbv , dbp , dbsiz ) 1217 DB_ENV * dbv ; 1218 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 1219 size_t * dbsiz ; 1221 t ; 1223 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1224 __txn_g_cov , DB___txn_g )) != 0) 1225 ( t ); 1226 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1227 __txn_ckp_cov , DB___txn_ckp )) != 0) 1228 ( t ); 1229 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1230 __txn_chd_cov , DB___txn_chd )) != 0) 1231 ( t ); 1232 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1233 __txn_xa_g_cov , DB___txn_xa_g )) != 0) 1234 ( t ); 1235 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 1236 __txn_cye_cov , DB___txn_cye )) != 0) 1237 ( t ); 1239 } } @../txn/txn_autop.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/yo.h " 7 ~"dbc/db_ge.h " 8 ~"dbc/db_dich.h " 9 ~"dbc/db_am.h " 10 ~"dbc/lock.h " 11 ~"dbc/log.h " 12 ~"dbc/txn.h " 19 $__txn_g_42_t ( dbv , db , lp , nud2 , nud3 ) 20 DB_ENV * dbv ; 21 DBT * db ; 22 DB_LSN * lp ; 23 db_cs nud2 ; 24 * nud3 ; 26 __txn_g_42_gs * gp ; 27 tm * ; 28 time_t timev ; 29 time_buf [ CTIME_BUFLEN ]; 30 t ; 32 nud2 = DB_TXN_PRINT ; 33 nud3 = NULL ; 35 i(( t = `__txn_g_42_ad ( dbv , db -> da , & gp )) != 0) 36 ( t ); 37 () `tf ( 39 ( u_lg ) lp -> fe , (u_lgp-> offt , 40 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 41 ( u_lg ) gp -> ty , 42 ( u_lg ) gp -> tx -> txnid , 43 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 44 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 45 timev = ( time_t ) gp -> timeamp ; 46 = `loime (& timev ); 47 () `tf ( 49 () gp -> timeamp , `__db_ime (& timev , time_buf ), 50 ( u_lg ) -> tm_yr - 100, (u_lgt-> tm_m +1, 51 ( u_lg ) -> tm_mday , (u_lgt-> tm_hour , 52 ( u_lg ) -> tm_m , (u_lgt-> tm_c ); 53 () `tf ("\tlocks: \n"); 54 `__lock_li_t ( dbv , & gp -> locks ); 55 () `tf ("\n"); 56 `__os_ ( dbv , gp ); 58 } } 65 $__txn_g_t ( dbv , db , lp , nud2 , nud3 ) 66 DB_ENV * dbv ; 67 DBT * db ; 68 DB_LSN * lp ; 69 db_cs nud2 ; 70 * nud3 ; 72 __txn_g_gs * gp ; 73 tm * ; 74 time_t timev ; 75 time_buf [ CTIME_BUFLEN ]; 76 t ; 78 nud2 = DB_TXN_PRINT ; 79 nud3 = NULL ; 81 i(( t = `__txn_g_ad ( dbv , db -> da , & gp )) != 0) 82 ( t ); 83 () `tf ( 85 ( u_lg ) lp -> fe , (u_lgp-> offt , 86 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 87 ( u_lg ) gp -> ty , 88 ( u_lg ) gp -> tx -> txnid , 89 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 90 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 91 timev = ( time_t ) gp -> timeamp ; 92 = `loime (& timev ); 93 () `tf ( 95 () gp -> timeamp , `__db_ime (& timev , time_buf ), 96 ( u_lg ) -> tm_yr - 100, (u_lgt-> tm_m +1, 97 ( u_lg ) -> tm_mday , (u_lgt-> tm_hour , 98 ( u_lg ) -> tm_m , (u_lgt-> tm_c ); 99 () `tf ("\nvid: %lu\n", ( u_lg ) gp -> vid ); 100 () `tf ("\tlocks: \n"); 101 `__lock_li_t ( dbv , & gp -> locks ); 102 () `tf ("\n"); 103 `__os_ ( dbv , gp ); 105 } } 112 $__txn_ckp_42_t ( dbv , db , lp , nud2 , nud3 ) 113 DB_ENV * dbv ; 114 DBT * db ; 115 DB_LSN * lp ; 116 db_cs nud2 ; 117 * nud3 ; 119 __txn_ckp_42_gs * gp ; 120 tm * ; 121 time_t timev ; 122 time_buf [ CTIME_BUFLEN ]; 123 t ; 125 nud2 = DB_TXN_PRINT ; 126 nud3 = NULL ; 128 i(( t = `__txn_ckp_42_ad ( dbv , db -> da , & gp )) != 0) 129 ( t ); 130 () `tf ( 132 ( u_lg ) lp -> fe , (u_lgp-> offt , 133 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 134 ( u_lg ) gp -> ty , 135 ( u_lg ) gp -> tx -> txnid , 136 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 137 () `tf ("\tckp_lsn: [%lu][%lu]\n", 138 ( u_lg ) gp -> ckp_l . fe , (u_lgrgp->ckp_l. offt ); 139 () `tf ("\tlast_ckp: [%lu][%lu]\n", 140 ( u_lg ) gp -> ϡ_ckp . fe , (u_lgrgp->ϡ_ckp. offt ); 141 timev = ( time_t ) gp -> timeamp ; 142 = `loime (& timev ); 143 () `tf ( 145 () gp -> timeamp , `__db_ime (& timev , time_buf ), 146 ( u_lg ) -> tm_yr - 100, (u_lgt-> tm_m +1, 147 ( u_lg ) -> tm_mday , (u_lgt-> tm_hour , 148 ( u_lg ) -> tm_m , (u_lgt-> tm_c ); 149 () `tf ("\_g: %lu\n", ( u_lg ) gp -> p_g ); 150 () `tf ("\n"); 151 `__os_ ( dbv , gp ); 153 } } 160 $__txn_ckp_t ( dbv , db , lp , nud2 , nud3 ) 161 DB_ENV * dbv ; 162 DBT * db ; 163 DB_LSN * lp ; 164 db_cs nud2 ; 165 * nud3 ; 167 __txn_ckp_gs * gp ; 168 tm * ; 169 time_t timev ; 170 time_buf [ CTIME_BUFLEN ]; 171 t ; 173 nud2 = DB_TXN_PRINT ; 174 nud3 = NULL ; 176 i(( t = `__txn_ckp_ad ( dbv , db -> da , & gp )) != 0) 177 ( t ); 178 () `tf ( 180 ( u_lg ) lp -> fe , (u_lgp-> offt , 181 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 182 ( u_lg ) gp -> ty , 183 ( u_lg ) gp -> tx -> txnid , 184 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 185 () `tf ("\tckp_lsn: [%lu][%lu]\n", 186 ( u_lg ) gp -> ckp_l . fe , (u_lgrgp->ckp_l. offt ); 187 () `tf ("\tlast_ckp: [%lu][%lu]\n", 188 ( u_lg ) gp -> ϡ_ckp . fe , (u_lgrgp->ϡ_ckp. offt ); 189 timev = ( time_t ) gp -> timeamp ; 190 = `loime (& timev ); 191 () `tf ( 193 () gp -> timeamp , `__db_ime (& timev , time_buf ), 194 ( u_lg ) -> tm_yr - 100, (u_lgt-> tm_m +1, 195 ( u_lg ) -> tm_mday , (u_lgt-> tm_hour , 196 ( u_lg ) -> tm_m , (u_lgt-> tm_c ); 197 () `tf ("\nvid: %lu\n", ( u_lg ) gp -> vid ); 198 () `tf ("\te: %lu\n", ( u_lg ) gp -> e ); 199 () `tf ("\n"); 200 `__os_ ( dbv , gp ); 202 } } 209 $__txn_chd_t ( dbv , db , lp , nud2 , nud3 ) 210 DB_ENV * dbv ; 211 DBT * db ; 212 DB_LSN * lp ; 213 db_cs nud2 ; 214 * nud3 ; 216 __txn_chd_gs * gp ; 217 t ; 219 nud2 = DB_TXN_PRINT ; 220 nud3 = NULL ; 222 i(( t = `__txn_chd_ad ( dbv , db -> da , & gp )) != 0) 223 ( t ); 224 () `tf ( 226 ( u_lg ) lp -> fe , (u_lgp-> offt , 227 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 228 ( u_lg ) gp -> ty , 229 ( u_lg ) gp -> tx -> txnid , 230 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 231 () `tf ("\tchd: 0x%lx\n", ( u_lg ) gp -> chd ); 232 () `tf ("\tc_lsn: [%lu][%lu]\n", 233 ( u_lg ) gp -> c_l . fe , (u_lgrgp->c_l. offt ); 234 () `tf ("\n"); 235 `__os_ ( dbv , gp ); 237 } } 244 $__txn_xa_g_t ( dbv , db , lp , nud2 , nud3 ) 245 DB_ENV * dbv ; 246 DBT * db ; 247 DB_LSN * lp ; 248 db_cs nud2 ; 249 * nud3 ; 251 __txn_xa_g_gs * gp ; 252 u_t32_t i ; 253 ch ; 254 t ; 256 nud2 = DB_TXN_PRINT ; 257 nud3 = NULL ; 259 i(( t = `__txn_xa_g_ad ( dbv , db -> da , & gp )) != 0) 260 ( t ); 261 () `tf ( 263 ( u_lg ) lp -> fe , (u_lgp-> offt , 264 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 265 ( u_lg ) gp -> ty , 266 ( u_lg ) gp -> tx -> txnid , 267 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 268 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 269 () `tf ("\txid: "); 270 i = 0; i < gp -> xid . size ; i++) { 271 ch = (( u_t8_t *) gp -> xid . da )[ i ]; 272 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 274 () `tf ("\n"); 275 () `tf ("\tfmID: %ld\n", () gp -> fmID ); 276 () `tf ("\tgid: %lu\n", ( u_lg ) gp -> gid ); 277 () `tf ("\tbqu: %lu\n", ( u_lg ) gp -> bqu ); 278 () `tf ("\tbegin_lsn: [%lu][%lu]\n", 279 ( u_lg ) gp -> beg_l . fe , (u_lgrgp->beg_l. offt ); 280 () `tf ("\tlocks: \n"); 281 `__lock_li_t ( dbv , & gp -> locks ); 282 () `tf ("\n"); 283 `__os_ ( dbv , gp ); 285 } } 292 $__txn_cye_t ( dbv , db , lp , nud2 , nud3 ) 293 DB_ENV * dbv ; 294 DBT * db ; 295 DB_LSN * lp ; 296 db_cs nud2 ; 297 * nud3 ; 299 __txn_cye_gs * gp ; 300 t ; 302 nud2 = DB_TXN_PRINT ; 303 nud3 = NULL ; 305 i(( t = `__txn_cye_ad ( dbv , db -> da , & gp )) != 0) 306 ( t ); 307 () `tf ( 309 ( u_lg ) lp -> fe , (u_lgp-> offt , 310 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 311 ( u_lg ) gp -> ty , 312 ( u_lg ) gp -> tx -> txnid , 313 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 314 () `tf ("\tm: %lu\n", ( u_lg ) gp -> m ); 315 () `tf ("\tmax: %lu\n", ( u_lg ) gp -> max ); 316 () `tf ("\n"); 317 `__os_ ( dbv , gp ); 319 } } 326 $__txn__t ( dbv , dbp , dbsiz ) 327 DB_ENV * dbv ; 328 (*** dbp ) `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs , *)); 329 size_t * dbsiz ; 331 t ; 333 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 334 __txn_g_t , DB___txn_g )) != 0) 335 ( t ); 336 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 337 __txn_ckp_t , DB___txn_ckp )) != 0) 338 ( t ); 339 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 340 __txn_chd_t , DB___txn_chd )) != 0) 341 ( t ); 342 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 343 __txn_xa_g_t , DB___txn_xa_g )) != 0) 344 ( t ); 345 i(( t = `__db_add_covy ( dbv , dbp , dbsiz , 346 __txn_cye_t , DB___txn_cye )) != 0) 347 ( t ); 349 } } @../txn/txn_chkpt.c 40 ~"db_cfig.h " 42 ~"db_t.h " 43 ~"dbc/log.h " 44 ~"dbc/mp.h " 45 ~"dbc/txn.h " 55 $__txn_checkpot_ ( dbv , kbys , mus , ags ) 56 DB_ENV * dbv ; 57 u_t32_t kbys , mus , ags ; 59 DB_THREAD_INFO * ; 60 t ; 62 `PANIC_CHECK ( dbv ); 63 `ENV_REQUIRES_CONFIG ( dbv , 64 dbv -> tx_hd , "txn_checkpot", DB_INIT_TXN ); 75 i( `IS_REP_CLIENT ( dbv )) 78 `ENV_ENTER ( dbv , ); 79 `REPLICATION_WRAP ( dbv , 80 ( `__txn_checkpot ( dbv , kbys , mus , ags )), t ); 81 `ENV_LEAVE ( dbv , ); 82 ( t ); 83 } } 93 $__txn_checkpot ( dbv , kbys , mus , ags ) 94 DB_ENV * dbv ; 95 u_t32_t kbys , mus , ags ; 97 DB_LSN ckp_l , ϡ_ckp ; 98 DB_TXNMGR * mgr ; 99 DB_TXNREGION * gi ; 100 REGENV * nv ; 101 REGINFO * f ; 102 time_t ϡ_ckp_time , now ; 103 u_t32_t bys , id , logags , mbys , ; 104 t ; 106 `DB_ASSERT ( dbv , ! `IS_REP_CLIENT (dbenv)); 107 t = 0; 109 mgr = dbv -> tx_hd ; 110 gi = mgr -> gfo . imy ; 111 f = dbv -> gfo ; 112 nv = f -> imy ; 116 id = nv -> vid ; 123 i(( t = `__log_cut_l ( dbv , & ckp_l , & mbys , & bys )) != 0) 124 ( t ); 126 i(! `LF_ISSET ( DB_FORCE )) { 128 i( bys =0 && mbys == 0) 137 i( kbys != 0 && 138 mbys * 1024 + bys / 1024 >( u_t32_t ) kbys ) 139 do_ckp ; 141 i( mus != 0) { 142 () `time (& now ); 144 `TXN_SYSTEM_LOCK ( dbv ); 145 ϡ_ckp_time = gi -> time_ckp ; 146 `TXN_SYSTEM_UNLOCK ( dbv ); 148 i( now - ϡ_ckp_time >( time_t )( mus * 60)) 149 do_ckp ; 156 i( mus !0 || kbys != 0) 168 do_ckp : 169 `MUTEX_LOCK ( dbv , gi -> mtx_ckp ); 170 i(( t = `__txn_gaive ( dbv , & ckp_l )) != 0) 171 r ; 191 i( `LOGGING_ON ( dbv ) && 192 `IS_REP_MASTER ( dbv && dbv-> p_hd -> nd ! NULL ) 193 () `__p_nd_mesge ( dbv , 194 DB_EID_BROADCAST , REP_START_SYNC , & ckp_l , NULL , 0, 0); 197 i( `MPOOL_ON ( dbv ) && 198 ( t = `__memp_sync_t ( 199 dbv , NULL , 0, DB_SYNC_CHECKPOINT , NULL, NULL)) != 0) { 200 `__db_r ( dbv , t , 202 r ; 221 #idef CONFIG_TEST 222 i( `LOGGING_ON ( dbv ) && 223 `IS_REP_MASTER ( dbv && dbv-> p_hd -> nd ! NULL && 224 ! `LF_ISSET ( DB_CKP_INTERNAL ) && 225 dbv -> p_hd -> gi -> chk_day != 0) 226 `__os_p ( dbv , dbv-> p_hd -> gi -> chk_day , 0); 234 i( `LOGGING_ON ( dbv )) { 235 `TXN_SYSTEM_LOCK ( dbv ); 236 ϡ_ckp = gi ->last_ckp; 237 `TXN_SYSTEM_UNLOCK ( dbv ); 246 logags = DB_LOG_CHKPNT ; 253 = DBREG_CHKPNT ; 254 i(! `IS_RECOVERING ( dbv )) 255 logags | DB_FLUSH ; 256 i( gi -> . _ees == 0) 257 = DBREG_RCLOSE ; 258 i(( t = `__dbg_log_fes ( dbv , )) != 0 || 259 ( t = `__txn_ckp_log ( dbv , NULL , & ckp_l , logags , 260 & ckp_l , & ϡ_ckp , ( t32_t ) `time ( NULL ), id , 0)) != 0) { 261 `__db_r ( dbv , t , 263 () ckp_l . fe , ()ckp_l. offt ); 264 r ; 267 i(( t = `__txn_updeckp ( dbv , & ckp_l )) != 0) 268 r ; 271 r : `MUTEX_UNLOCK ( dbv , gi -> mtx_ckp ); 272 ( t ); 273 } } 290 $__txn_gaive ( dbv , lp ) 291 DB_ENV * dbv ; 292 DB_LSN * lp ; 294 DB_TXNMGR * mgr ; 295 DB_TXNREGION * gi ; 296 TXN_DETAIL * td ; 298 mgr = dbv -> tx_hd ; 299 gi = mgr -> gfo . imy ; 301 `TXN_SYSTEM_LOCK ( dbv ); 302 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) 303 i( td -> beg_l . fe != 0 && 304 td -> beg_l . offt != 0 && 305 `LOG_COMPARE (& td -> beg_l , lp ) < 0) 306 * lp = td -> beg_l ; 307 `TXN_SYSTEM_UNLOCK ( dbv ); 310 } } 319 $__txn_gckp ( dbv , lp ) 320 DB_ENV * dbv ; 321 DB_LSN * lp ; 323 DB_LSN l ; 324 DB_TXNMGR * mgr ; 325 DB_TXNREGION * gi ; 327 mgr = dbv -> tx_hd ; 328 gi = mgr -> gfo . imy ; 330 `TXN_SYSTEM_LOCK ( dbv ); 331 l = gi -> ϡ_ckp ; 332 `TXN_SYSTEM_UNLOCK ( dbv ); 334 i( `IS_ZERO_LSN ( l )) 335 ( DB_NOTFOUND ); 337 * lp = l ; 339 } } 350 $__txn_updeckp ( dbv , lp ) 351 DB_ENV * dbv ; 352 DB_LSN * lp ; 354 DB_TXNMGR * mgr ; 355 DB_TXNREGION * gi ; 357 mgr = dbv -> tx_hd ; 358 gi = mgr -> gfo . imy ; 366 `TXN_SYSTEM_LOCK ( dbv ); 367 i( `LOG_COMPARE (& gi -> ϡ_ckp , lp ) < 0) { 368 gi -> ϡ_ckp = * lp ; 369 () `time (& gi -> time_ckp ); 371 `TXN_SYSTEM_UNLOCK ( dbv ); 374 } } @../txn/txn_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 21 $__txn_chk ( dbv ) 22 DB_ENV * dbv ; 24 DB_TXN * ktxn , * txn ; 25 DB_TXNMGR * mgr ; 26 DB_TXNREGION * gi ; 27 TXN_DETAIL * ktd , * td ; 28 db_thadid_t tid ; 29 t ; 30 buf [ DB_THREADID_STRLEN ]; 31 pid_t pid ; 33 mgr = dbv -> tx_hd ; 34 gi = mgr -> gfo . imy ; 36 y : `TXN_SYSTEM_LOCK ( dbv ); 38 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) { 43 i( td -> ! INVALID_ROFF ) 49 i( td -> us = TXN_PREPARED ) 53 i( dbv -> `is_ive (dbv, td -> pid ,d-> tid , 0)) 56 i( `F_ISSET ( td , TXN_DTL_INMEMORY )) 57 ( `__db_ed ( dbv , 59 td -> pid ,d-> tid )); 62 `TXN_SYSTEM_UNLOCK ( dbv ); 63 i(( t = `__os_oc ( dbv , 1, ( DB_TXN ), & txn )) != 0) 64 ( t ); 65 i(( t = `__txn_ctue ( dbv , txn , td )) != 0) 66 ( t ); 67 `F_SET ( txn , TXN_MALLOC ); 68 `SH_TAILQ_FOREACH ( ktd , & td -> kids , klks , __txn_da ) { 69 i( `F_ISSET ( ktd , TXN_DTL_INMEMORY )) 70 ( `__db_ed ( dbv , 72 td -> pid ,d-> tid )); 73 i(( t = 74 `__os_oc ( dbv , 1, ( DB_TXN ), & ktxn )) != 0) 75 ( t ); 76 i(( t = `__txn_ctue ( dbv , ktxn , ktd )) != 0) 77 ( t ); 78 `F_SET ( ktxn , TXN_MALLOC ); 79 ktxn -> = txn ; 80 `TAILQ_INSERT_HEAD (& txn -> kids ,xn, klks ); 82 `TAILQ_INSERT_TAIL (& mgr -> txn_cha , txn , lks ); 83 pid = td ->pid; 84 tid = td ->tid; 85 () dbv -> `thad_id_rg (dbv, pid , tid , buf ); 86 `__db_msg ( dbv , 87 "Abtgx%#lx: %s", ( u_lg ) txn -> txnid , buf ); 88 i(( t = `__txn_abt ( txn )) != 0) 89 ( `__db_ed ( dbv , 90 "Tniڇb܈ed", pid , tid )); 91 y ; 94 `TXN_SYSTEM_UNLOCK ( dbv ); 97 } } @../txn/txn_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 21 $__txn_v_ ( dbv ) 22 DB_ENV * dbv ; 30 dbv -> tx_max = DEF_MAX_TXNS ; 33 } } 42 $__txn_v_deroy ( dbv ) 43 DB_ENV * dbv ; 45 `COMPQUIET ( dbv , NULL ); 46 } } 52 $__txn_g_tx_max ( dbv , tx_maxp ) 53 DB_ENV * dbv ; 54 u_t32_t * tx_maxp ; 56 `ENV_NOT_CONFIGURED ( dbv , 57 dbv -> tx_hd , "DB_ENV->g_tx_max", DB_INIT_TXN ); 59 i( `TXN_ON ( dbv )) { 61 * tx_maxp = (( DB_TXNREGION *) 62 dbv -> tx_hd -> gfo . imy )-> maxtxns ; 64 * tx_maxp = dbv -> tx_max ; 66 } } 75 $__txn_t_tx_max ( dbv , tx_max ) 76 DB_ENV * dbv ; 77 u_t32_t tx_max ; 79 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_tx_max"); 81 dbv -> tx_max =x_max; 83 } } 89 $__txn_g_tx_timeamp ( dbv , timeamp ) 90 DB_ENV * dbv ; 91 time_t * timeamp ; 93 * timeamp = dbv -> tx_timeamp ; 95 } } 104 $__txn_t_tx_timeamp ( dbv , timeamp ) 105 DB_ENV * dbv ; 106 time_t * timeamp ; 108 `ENV_ILLEGAL_AFTER_OPEN ( dbv , "DB_ENV->set_tx_timestamp"); 110 dbv -> tx_timeamp = * timeamp ; 112 } } @../txn/txn_rec.c 37 ~"db_cfig.h " 39 ~"db_t.h " 40 ~"dbc/db_ge.h " 41 ~"dbc/lock.h " 42 ~"dbc/txn.h " 43 ~"dbc/db_am.h " 54 $__txn_g_cov ( dbv , db , lp , , fo ) 55 DB_ENV * dbv ; 56 DBT * db ; 57 DB_LSN * lp ; 58 db_cs ; 59 * fo ; 61 DB_TXNHEAD * hdp ; 62 __txn_g_gs * gp ; 63 t ; 64 u_t32_t us ; 66 #ifde DEBUG_RECOVER 67 () `__txn_g_t ( dbv , db , lp , , fo ); 70 i(( t = `__txn_g_ad ( dbv , db -> da , & gp )) != 0) 71 ( t ); 73 hdp = fo ; 80 i( = DB_TXN_FORWARD_ROLL ) { 86 i(( t = `__db_txi_move ( dbv , 87 fo , gp -> tx -> txnid )! DB_NOTFOUND && t != 0) 88 r ; 89 } i(( dbv -> tx_timeamp != 0 && 90 gp -> timeamp > ( t32_t ) dbv -> tx_timeamp ) || 91 (! `IS_ZERO_LSN ( hdp -> unc_l ) && 92 `LOG_COMPARE (& hdp -> unc_l , lp ) < 0)) { 97 i(( t = `__db_txi_upde ( dbv , fo , 98 gp -> tx -> txnid , TXN_ABORT , NULL , & us , 1)) != 0) 99 r ; 100 i( us ! TXN_IGNORE && stu! TXN_OK ) 101 r ; 104 i(( t = `__db_txi_upde ( dbv , 105 fo , gp -> tx -> txnid ,rgp-> code , lp , 106 & us , 0)= DB_NOTFOUND ) { 107 i(( t = `__db_txi_add ( dbv , 108 fo , gp -> tx -> txnid , 109 gp -> code = TXN_ABORT ? 110 TXN_IGNORE : gp -> code , lp )) != 0) 111 r ; 112 } i( t != 0 || 113 ( us ! TXN_IGNORE && stu! TXN_OK )) 114 r ; 117 i( t == 0) 118 * lp = gp -> ev_l ; 121 r : `__db_rx ( dbv , 123 ( u_lg ) gp -> tx -> txnid ); 124 t = EINVAL ; 126 `__os_ ( dbv , gp ); 128 ( t ); 129 } } 138 $__txn_xa_g_cov ( dbv , db , lp , , fo ) 139 DB_ENV * dbv ; 140 DBT * db ; 141 DB_LSN * lp ; 142 db_cs ; 143 * fo ; 145 DBT * lock_dbt ; 146 DB_TXNHEAD * hdp ; 147 DB_LOCKTAB * ; 148 __txn_xa_g_gs * gp ; 149 t ; 150 u_t32_t us ; 152 #ifde DEBUG_RECOVER 153 () `__txn_xa_g_t ( dbv , db , lp , , fo ); 156 i(( t = `__txn_xa_g_ad ( dbv , db -> da , & gp )) != 0) 157 ( t ); 159 i( gp -> code ! TXN_PREPARE &&rgp->cod! TXN_ABORT ) { 160 t = EINVAL ; 161 r ; 163 hdp = fo ; 172 t = `__db_txi_fd ( dbv , fo , gp -> tx -> txnid , & us ); 180 i( = DB_TXN_FORWARD_ROLL ) { 181 i(( t = `__db_txi_move ( dbv , 182 fo , gp -> tx -> txnid )) != 0) 183 txn_r ; 184 } i( = DB_TXN_BACKWARD_ROLL && us = TXN_PREPARE ) { 196 i( gp -> code = TXN_ABORT ) { 197 i(( t = `__db_txi_upde ( dbv , 198 fo , gp -> tx -> txnid , 199 TXN_ABORT , NULL , & us , 0)) != 0 && 200 us ! TXN_PREPARE ) 201 txn_r ; 202 t = 0; 211 i(( t = `__db_txi_move ( dbv , 212 fo , gp -> tx -> txnid )) != 0) { 213 txn_r : `__db_rx ( dbv , 215 ( u_lg ) gp -> tx -> txnid ); 216 t = DB_NOTFOUND ; 217 } i( `IS_ZERO_LSN ( hdp -> unc_l ) || 218 `LOG_COMPARE (& hdp -> unc_l , lp ) >= 0) { 219 i(( t = `__db_txi_add ( dbv , 220 fo , gp -> tx -> txnid , TXN_COMMIT , lp )) == 0) { 222 lock_dbt = & gp -> locks ; 223 i( `LOCKING_ON ( dbv )) { 224 = dbv -> lk_hd ; 225 i(( t = `__lock_glock ( , 226 gp -> tx -> txnid , 1, 227 & gp -> tx -> lock )) != 0) 228 r ; 229 i(( t = `__lock_g_li ( dbv , 230 gp -> tx -> lock , 0, 231 DB_LOCK_WRITE , lock_dbt )) != 0) 232 r ; 235 t = `__txn_e_txn ( dbv , lp , gp ); 239 t = 0; 241 i( t == 0) 242 * lp = gp -> ev_l ; 244 r : `__os_ ( dbv , gp ); 246 ( t ); 247 } } 254 $__txn_ckp_cov ( dbv , db , lp , , fo ) 255 DB_ENV * dbv ; 256 DBT * db ; 257 DB_LSN * lp ; 258 db_cs ; 259 * fo ; 261 __txn_ckp_gs * gp ; 262 t ; 264 #ifde DEBUG_RECOVER 265 `__txn_ckp_t ( dbv , db , lp , , fo ); 267 i(( t = `__txn_ckp_ad ( dbv , db -> da , & gp )) != 0) 268 ( t ); 270 i( = DB_TXN_BACKWARD_ROLL ) 271 `__db_txi_ckp ( dbv , fo , lp ); 273 * lp = gp -> ϡ_ckp ; 274 `__os_ ( dbv , gp ); 275 ( DB_TXN_CKP ); 276 } } 286 $__txn_chd_cov ( dbv , db , lp , , fo ) 287 DB_ENV * dbv ; 288 DBT * db ; 289 DB_LSN * lp ; 290 db_cs ; 291 * fo ; 293 __txn_chd_gs * gp ; 294 t , t_t ; 295 u_t32_t c_ , p_ , tmp ; 297 #ifde DEBUG_RECOVER 298 () `__txn_chd_t ( dbv , db , lp , , fo ); 300 i(( t = `__txn_chd_ad ( dbv , db -> da , & gp )) != 0) 301 ( t ); 310 i( = DB_TXN_ABORT ) { 311 * lp = gp -> c_l ; 312 t = `__db_txi_ladd ( dbv , fo , & gp -> ev_l ); 313 out ; 314 } i( = DB_TXN_BACKWARD_ROLL ) { 316 t = `__db_txi_fd ( dbv , fo , gp -> chd , & c_ ); 317 t_t = 318 `__db_txi_fd ( dbv , fo , gp -> tx -> txnid , & p_ ); 319 i( t !0 && ! DB_NOTFOUND ) 320 out ; 321 i( t_t !0 &&_! DB_NOTFOUND ) { 322 t = t_t ; 323 out ; 330 i( t = DB_NOTFOUND || 331 c_ = TXN_OK || c_ = TXN_COMMIT ) { 332 i( t_t = DB_NOTFOUND || 333 ( p_ ! TXN_COMMIT &&_ ! TXN_IGNORE )) 334 c_ = TXN_ABORT ; 336 c_ = p_ ; 338 i( t = DB_NOTFOUND ) 339 t = `__db_txi_add ( dbv , 340 fo , gp -> chd , c_ , NULL ); 342 t = `__db_txi_upde ( dbv , fo , 343 gp -> chd , c_ , NULL , & tmp , 0); 344 } i( c_ = TXN_EXPECTED ) { 350 p_ ) { 351 TXN_COMMIT : 352 TXN_IGNORE : 353 c_ = TXN_IGNORE ; 356 c_ = TXN_ABORT ; 358 t = `__db_txi_upde ( dbv , 359 fo , gp -> chd , c_ , NULL , & tmp , 0); 360 } i( c_ = TXN_UNEXPECTED ) { 368 t = `__db_txi_upde ( dbv , fo , gp -> chd , 369 p_ = TXN_COMMIT ? TXN_COMMIT : TXN_IGNORE , 370 NULL , & tmp , 0); 372 } i( = DB_TXN_OPENFILES ) { 377 i(( t = `__db_txi_fd ( dbv , 378 fo , gp -> chd , & c_ )= DB_NOTFOUND ) 379 t = `__db_txi_upde ( dbv , fo , 380 gp -> tx -> txnid , TXN_IGNORE , 381 NULL , & p_ , 1); 382 } i( `DB_REDO ( )) { 384 i(( t = 385 `__db_txi_move ( dbv , fo , gp -> chd )) != 0) 386 `__db_rx ( dbv , 387 "Tniڂ ili %x", gp -> chd ); 390 i( t == 0) 391 * lp = gp -> ev_l ; 393 out : `__os_ ( dbv , gp ); 395 ( t ); 396 } } 412 $__txn_e_txn ( dbv , lp , gp ) 413 DB_ENV * dbv ; 414 DB_LSN * lp ; 415 __txn_xa_g_gs * gp ; 417 DB_TXNMGR * mgr ; 418 TXN_DETAIL * td ; 419 DB_TXNREGION * gi ; 420 t ; 422 i( gp -> xid . size == 0) 425 mgr = dbv -> tx_hd ; 426 gi = mgr -> gfo . imy ; 427 `TXN_SYSTEM_LOCK ( dbv ); 430 i(( t = `__v_loc (& mgr -> gfo , ( TXN_DETAIL ), & td )) != 0) { 431 `TXN_SYSTEM_UNLOCK ( dbv ); 432 ( t ); 436 `SH_TAILQ_INSERT_HEAD (& gi -> aive_txn , td , lks , __txn_da ); 438 td -> txnid = gp -> tx ->txnid; 439 `__os_id ( dbv , & td -> pid , &td-> tid ); 440 td -> ϡ_l = * lp ; 441 td -> beg_l = gp ->begin_lsn; 442 td -> = INVALID_ROFF ; 443 td -> me = INVALID_ROFF ; 444 `SH_TAILQ_INIT (& td -> kids ); 445 `MAX_LSN ( td -> ad_l ); 446 `MAX_LSN ( td -> visib_l ); 447 td -> mvcc_f = 0; 448 td -> mvcc_mtx = MUTEX_INVALID ; 449 td -> us = TXN_PREPARED ; 450 td -> ags = TXN_DTL_RESTORED ; 451 td -> xa_us = TXN_XA_PREPARED ; 452 `memy ( td -> xid , gp ->xid. da ,rgp->xid. size ); 453 td -> bqu = gp ->bqual; 454 td -> gid = gp ->gtrid; 455 td -> fm = gp -> fmID ; 456 td -> og_dbs = 0; 457 td -> og_s = TXN_NSLOTS ; 458 td -> log_dbs = `R_OFFSET (& mgr -> gfo ,d-> s ); 460 gi -> . _ees ++; 461 #ifde HAVE_STATISTICS 462 gi -> . _ive ++; 463 i( gi -> . _ive >egi->. _maxive ) 464 gi -> . _maxive =egi->. _ive ; 466 `TXN_SYSTEM_UNLOCK ( dbv ); 468 } } 478 $__txn_cye_cov ( dbv , db , lp , , fo ) 479 DB_ENV * dbv ; 480 DBT * db ; 481 DB_LSN * lp ; 482 db_cs ; 483 * fo ; 485 __txn_cye_gs * gp ; 486 t ; 488 #ifde DEBUG_RECOVER 489 () `__txn_chd_t ( dbv , db , lp , , fo ); 491 i(( t = `__txn_cye_ad ( dbv , db -> da , & gp )) != 0) 492 ( t ); 494 `COMPQUIET ( lp , NULL ); 496 i(( t = `__db_txi_g ( dbv , fo , 497 `DB_UNDO ( ? -1 : 1, gp -> m ,rgp-> max )) != 0) 498 ( t ); 500 `__os_ ( dbv , gp ); 503 } } 514 $__txn_g_42_cov ( dbv , db , lp , , fo ) 515 DB_ENV * dbv ; 516 DBT * db ; 517 DB_LSN * lp ; 518 db_cs ; 519 * fo ; 521 DB_TXNHEAD * hdp ; 522 __txn_g_42_gs * gp ; 523 t ; 524 u_t32_t us ; 526 #ifde DEBUG_RECOVER 527 () `__txn_g_42_t ( dbv , db , lp , , fo ); 530 i(( t = `__txn_g_42_ad ( dbv , db -> da , & gp )) != 0) 531 ( t ); 533 hdp = fo ; 540 i( = DB_TXN_FORWARD_ROLL ) { 546 i(( t = `__db_txi_move ( dbv , 547 fo , gp -> tx -> txnid )! DB_NOTFOUND && t != 0) 548 r ; 549 } i(( dbv -> tx_timeamp != 0 && 550 gp -> timeamp > ( t32_t ) dbv -> tx_timeamp ) || 551 (! `IS_ZERO_LSN ( hdp -> unc_l ) && 552 `LOG_COMPARE (& hdp -> unc_l , lp ) < 0)) { 557 i(( t = `__db_txi_upde ( dbv , fo , 558 gp -> tx -> txnid , TXN_ABORT , NULL , & us , 1)) != 0) 559 r ; 560 i( us ! TXN_IGNORE && stu! TXN_OK ) 561 r ; 564 i(( t = `__db_txi_upde ( dbv , 565 fo , gp -> tx -> txnid ,rgp-> code , lp , 566 & us , 0)= DB_NOTFOUND ) { 567 i(( t = `__db_txi_add ( dbv , 568 fo , gp -> tx -> txnid , 569 gp -> code = TXN_ABORT ? 570 TXN_IGNORE : gp -> code , lp )) != 0) 571 r ; 572 } i( t != 0 || 573 ( us ! TXN_IGNORE && stu! TXN_OK )) 574 r ; 577 i( t == 0) 578 * lp = gp -> ev_l ; 581 r : `__db_rx ( dbv , 583 ( u_lg ) gp -> tx -> txnid ); 584 t = EINVAL ; 586 `__os_ ( dbv , gp ); 588 ( t ); 589 } } 596 $__txn_ckp_42_cov ( dbv , db , lp , , fo ) 597 DB_ENV * dbv ; 598 DBT * db ; 599 DB_LSN * lp ; 600 db_cs ; 601 * fo ; 603 __txn_ckp_42_gs * gp ; 604 t ; 606 #ifde DEBUG_RECOVER 607 `__txn_ckp_42_t ( dbv , db , lp , , fo ); 609 i(( t = `__txn_ckp_42_ad ( dbv , db -> da , & gp )) != 0) 610 ( t ); 612 i( = DB_TXN_BACKWARD_ROLL ) 613 `__db_txi_ckp ( dbv , fo , lp ); 615 * lp = gp -> ϡ_ckp ; 616 `__os_ ( dbv , gp ); 617 ( DB_TXN_CKP ); 618 } } @../txn/txn_recover.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/db_dich.h " 15 ~"dbc/log.h " 16 ~"dbc_auto/db_auto.h " 17 ~"dbc_auto/d_auto.h " 18 ~"dbc_auto/db_ext.h " 28 $__txn_m_gid ( dbv , gid , tdp , of ) 29 DB_ENV * dbv ; 30 u_t8_t * gid ; 31 TXN_DETAIL ** tdp ; 32 roff_t * of ; 34 DB_TXNMGR * mgr ; 35 DB_TXNREGION * gi ; 37 mgr = dbv -> tx_hd ; 38 gi = mgr -> gfo . imy ; 45 `TXN_SYSTEM_LOCK ( dbv ); 46 `SH_TAILQ_FOREACH (* tdp , & gi -> aive_txn , lks , __txn_da ) 47 i( `memcmp ( gid , (* tdp )-> xid , ((*tdp)->xid)) == 0) 49 `TXN_SYSTEM_UNLOCK ( dbv ); 51 i(* tdp = NULL ) 52 ( EINVAL ); 54 * of = `R_OFFSET (& mgr -> gfo , * tdp ); 56 } } 66 $__txn_cov_ ( dbv , li , cou , , ags ) 67 DB_ENV * dbv ; 68 DB_PREPLIST * li ; 69 cou , * ; 70 u_t32_t ags ; 72 DB_THREAD_INFO * ; 73 t ; 75 `PANIC_CHECK ( dbv ); 76 `ENV_REQUIRES_CONFIG ( 77 dbv , dbv-> tx_hd , "txn_cov", DB_INIT_TXN ); 79 i( `F_ISSET (( DB_TXNREGION *) dbv -> tx_hd -> gfo . imy , 80 TXN_IN_RECOVERY )) { 81 `__db_rx ( dbv , "operationotermitted while inecovery"); 82 ( EINVAL ); 85 i( ags ! DB_FIRST && fg! DB_NEXT ) 86 ( `__db_ ( dbv , "DB_ENV->txn_recover", 0)); 88 `ENV_ENTER ( dbv , ); 89 `REPLICATION_WRAP ( dbv , 90 ( `__txn_cov ( dbv , li , cou , , ags )), t ); 91 `ENV_LEAVE ( dbv , ); 92 ( t ); 93 } } 103 $__txn_cov ( dbv , li , cou , , ags ) 104 DB_ENV * dbv ; 105 DB_PREPLIST * li ; 106 cou , * ; 107 u_t32_t ags ; 114 ( `__txn_g_ed ( dbv , NULL , li , cou , , ags )); 115 } } 131 $__txn_g_ed ( dbv , xids , txns , cou , , ags ) 132 DB_ENV * dbv ; 133 XID * xids ; 134 DB_PREPLIST * txns ; 135 cou ; 136 * ; 137 u_t32_t ags ; 139 DB_LSN m ; 140 DB_PREPLIST * p ; 141 DB_TXNMGR * mgr ; 142 DB_TXNREGION * gi ; 143 TXN_DETAIL * td ; 144 XID * xidp ; 145 i ; 146 ed , t ; 148 * = 0; 150 `MAX_LSN ( m ); 151 p = txns ; 152 xidp = xids ; 153 ed = t = 0; 163 mgr = dbv -> tx_hd ; 164 gi = mgr -> gfo . imy ; 173 `TXN_SYSTEM_LOCK ( dbv ); 176 td = `SH_TAILQ_FIRST (& gi -> aive_txn , __txn_da ); 177 td ! NULL && * < cou ; 178 td = `SH_TAILQ_NEXT d, lks , __txn_da )) { 179 i( td -> us ! TXN_PREPARED || 180 ( ags ! DB_FIRST && `F_ISSET ( td , TXN_DTL_COLLECTED ))) 183 i( `F_ISSET ( td , TXN_DTL_RESTORED )) 184 ed = 1; 186 i( xids ! NULL ) { 187 xidp -> fmID = td -> fm ; 193 xidp -> gid_ngth = () td -> gid ; 194 xidp -> bqu_ngth = () td -> bqu ; 195 `memy ( xidp -> da , td -> xid , (td->xid)); 196 xidp ++; 199 i( txns ! NULL ) { 200 i(( t = `__os_oc ( dbv , 201 1, ( DB_TXN ), & p -> txn )) != 0) { 202 `TXN_SYSTEM_UNLOCK ( dbv ); 203 r ; 205 i(( t = `__txn_ctue ( dbv , p -> txn , td )) != 0) 206 r ; 207 `F_SET ( p -> txn , TXN_MALLOC ); 208 `memy ( p -> gid , td -> xid , (td->xid)); 209 p ++; 212 i(! `IS_ZERO_LSN ( td -> beg_l ) && 213 `LOG_COMPARE (& td -> beg_l , & m ) < 0) 214 m = td -> beg_l ; 216 (* )++; 217 `F_SET ( td , TXN_DTL_COLLECTED ); 219 i( ags = DB_FIRST ) 220 ; td ! NULL ;d = `SH_TAILQ_NEXT d, lks , __txn_da )) 221 `F_CLR ( td , TXN_DTL_COLLECTED ); 222 `TXN_SYSTEM_UNLOCK ( dbv ); 227 i( txns ! NULL && * != 0) { 228 `MUTEX_LOCK ( dbv , mgr -> mux ); 229 i = 0; i < * ; i++) 230 `TAILQ_INSERT_TAIL (& mgr -> txn_cha , txns [ i ]. txn , lks ); 231 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 237 i( `REP_ON ( dbv )) { 238 `REP_SYSTEM_LOCK ( dbv ); 239 dbv -> p_hd -> gi -> _t +( u_lg )* ; 240 `REP_SYSTEM_UNLOCK ( dbv ); 248 i( ed !0 && ags = DB_FIRST && 249 ! `F_ISSET ( dbv -> lg_hd , DBLOG_OPENFILES )) 250 t = `__txn_ݒfes ( dbv , & m , 0); 253 r : `TXN_SYSTEM_UNLOCK ( dbv ); 255 ( t ); 256 } } 265 $__txn_ݒfes ( dbv , m , f ) 266 DB_ENV * dbv ; 267 DB_LSN * m ; 268 f ; 270 DBT da ; 271 DB_LOGC * logc ; 272 DB_LSN ݒ_l ; 273 DB_TXNHEAD * txnfo ; 274 __txn_ckp_gs * ckp_gs ; 275 t , t_t ; 281 logc = NULL ; 282 i(( t = `__log_curs ( dbv , & logc )) != 0) 283 r ; 285 `memt (& da , 0, (data)); 286 i(( t = `__txn_gckp ( dbv , & ݒ_l )) == 0) 287 ! `IS_ZERO_LSN ( ݒ_l && ( t = 288 `__logc_g ( logc , & ݒ_l , & da , DB_SET )) == 0 && 289 ( f || 290 ( m ! NULL && `LOG_COMPARE (m, & ݒ_l ) < 0))) { 292 i(( t = `__txn_ckp_ad ( dbv , 293 da .da, & ckp_gs )) != 0) { 294 `__db_rx ( dbv , 296 ( u_lg ) ݒ_l . fe , 297 ( u_lg ) ݒ_l . offt ); 298 r ; 305 ݒ_l = f ? ckp_gs -> ckp_l : 306 ckp_gs -> ϡ_ckp ; 307 `__os_ ( dbv , ckp_gs ); 308 i( f ) { 309 i(( t = `__logc_g ( logc , & ݒ_l , 310 & da , DB_SET )) != 0) 311 r ; 325 i(( t = DB_NOTFOUND || `IS_ZERO_LSN ( ݒ_l )) && (ret = 326 `__logc_g ( logc , & ݒ_l , & da , DB_FIRST )) != 0) { 327 `__db_rx ( dbv , "Noogecords"); 328 r ; 331 i(( t = `__db_txi_ ( dbv , 0, 0, NULL , & txnfo )) != 0) 332 r ; 333 t = `__v_ݒfes ( dbv , logc , 334 txnfo , & da , & ݒ_l , NULL , 0, 0); 335 i( txnfo ! NULL ) 336 `__db_txi_d ( dbv , txnfo ); 338 r : 339 i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 340 t = t_t ; 341 ( t ); 342 } } @../txn/txn_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/txn.h " 15 __txn_ __P (( DB_ENV *, DB_TXNMGR *)); 16 size_t __txn_gi_size __P (( DB_ENV *)); 25 $__txn_ݒ ( dbv , _ok ) 26 DB_ENV * dbv ; 27 _ok ; 29 DB_TXNMGR * mgr ; 30 t ; 33 i(( t = `__os_oc ( dbv , 1, ( DB_TXNMGR ), & mgr )) != 0) 34 ( t ); 35 `TAILQ_INIT (& mgr -> txn_cha ); 36 mgr -> dbv = dbenv; 39 mgr -> gfo . dbv = dbenv; 40 mgr -> gfo . ty = REGION_TYPE_TXN ; 41 mgr -> gfo . id = INVALID_REGION_ID ; 42 mgr -> gfo . ags = REGION_JOIN_OK ; 43 i( _ok ) 44 `F_SET (& mgr -> gfo , REGION_CREATE_OK ); 45 i(( t = `__v_gi_ch ( dbv , 46 & mgr -> gfo , `__txn_gi_size ( dbv ))) != 0) 47 r ; 50 i( `F_ISSET (& mgr -> gfo , REGION_CREATE )) 51 i(( t = `__txn_ ( dbv , mgr )) != 0) 52 r ; 55 mgr -> gfo . imy = 56 `R_ADDR (& mgr -> gfo , mgr->gfo. -> imy ); 59 i(( t = `__mux_loc ( 60 dbv , MTX_TXN_ACTIVE , DB_MUTEX_PROCESS_ONLY , & mgr -> mux )) != 0) 61 r ; 63 dbv -> tx_hd = mgr ; 66 r : dbv -> tx_hd = NULL ; 67 i( mgr -> gfo . addr ! NULL ) 68 () `__v_gi_dach ( dbv , & mgr -> gfo , 0); 70 () `__mux_ ( dbv , & mgr -> mux ); 71 `__os_ ( dbv , mgr ); 72 ( t ); 73 } } 80 $__txn_ ( dbv , mgr ) 81 DB_ENV * dbv ; 82 DB_TXNMGR * mgr ; 84 DB_LSN ϡ_ckp ; 85 DB_TXNREGION * gi ; 86 t ; 91 `ZERO_LSN ( ϡ_ckp ); 92 i( `LOGGING_ON ( dbv )) { 97 i(( t = `__log_g_ched_ckp_l ( dbv , & ϡ_ckp )) != 0) 98 ( t ); 104 i( `IS_ZERO_LSN ( ϡ_ckp ) && 105 ( t = `__txn_fdϡckp ( dbv , & ϡ_ckp , NULL )) != 0) 106 ( t ); 109 i(( t = `__v_loc (& mgr -> gfo , 110 ( DB_TXNREGION ), & mgr -> gfo . imy )) != 0) { 111 `__db_rx ( dbv , 113 ( t ); 115 mgr -> gfo . -> imy = 116 `R_OFFSET (& mgr -> gfo , mgr->gfo. imy ); 117 gi = mgr -> gfo . imy ; 118 `memt ( gi , 0, (*region)); 120 i(( t = `__mux_loc ( 121 dbv , MTX_TXN_REGION , 0, & gi -> mtx_gi )) != 0) 122 ( t ); 124 gi -> maxtxns = dbv -> tx_max ; 125 gi -> ϡ_txnid = TXN_MINIMUM ; 126 gi -> cur_maxid = TXN_MAXIMUM ; 128 i(( t = `__mux_loc ( 129 dbv , MTX_TXN_CHKPT , 0, & gi -> mtx_ckp )) != 0) 130 ( t ); 131 gi -> ϡ_ckp =ast_ckp; 132 gi -> time_ckp = `time ( NULL ); 134 `memt (& gi -> , 0, (region->stat)); 135 #ifde HAVE_STATISTICS 136 gi -> . _maxtxns =egi-> maxtxns ; 139 `SH_TAILQ_INIT (& gi -> aive_txn ); 140 `SH_TAILQ_INIT (& gi -> mvcc_txn ); 141 ( t ); 142 } } 153 $__txn_fdϡckp ( dbv , lp , max_l ) 154 DB_ENV * dbv ; 155 DB_LSN * lp ; 156 DB_LSN * max_l ; 158 DB_LOGC * logc ; 159 DB_LSN l ; 160 DBT dbt ; 161 t , t_t ; 162 u_t32_t y ; 164 `ZERO_LSN (* lp ); 166 i(( t = `__log_curs ( dbv , & logc )) != 0) 167 ( t ); 170 `memt (& dbt , 0, (dbt)); 171 i( max_l ! NULL ) { 172 l = * max_l ; 173 i(( t = `__logc_g ( logc , & l , & dbt , DB_SET )) != 0) 174 r ; 176 i(( t = `__logc_g ( logc , & l , & dbt , DB_LAST )) != 0) 177 r ; 183 l . offt = 0; 187 ( t = `__logc_g ( logc , & l , & dbt , DB_PREV )) == 0) { 188 i( dbt . size < ( u_t32_t )) 190 `memy (& y , dbt . da , ( u_t32_t )); 191 i( y = DB___txn_ckp ) { 192 * lp = l ; 197 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 198 t = t_t ; 204 (( t =0 || = DB_NOTFOUND ) ? 0 :et); 205 } } 214 $__txn_v_esh ( dbv ) 215 DB_ENV * dbv ; 217 DB_TXN * txn ; 218 DB_TXNMGR * mgr ; 219 REGINFO * gfo ; 220 u_t32_t txnid ; 221 ab܋d , t , t_t ; 223 t = 0; 224 mgr = dbv -> tx_hd ; 225 gfo = & mgr ->reginfo; 238 ab܋d = 0; 239 i( `TAILQ_FIRST (& mgr -> txn_cha ! NULL ) { 240 ( txn = `TAILQ_FIRST (& mgr -> txn_cha )! NULL ) { 242 txnid = txn ->txnid; 243 i((( TXN_DETAIL *) txn -> td )-> us = TXN_PREPARED ) { 244 i(( t = `__txn_disrd_t ( txn , 0)) != 0) { 245 `__db_r ( dbv , t , 247 ( u_lg ) txnid ); 252 ab܋d = 1; 253 i(( t_t = `__txn_abt ( txn )) != 0) { 254 `__db_r ( dbv , t_t , 256 ( u_lg ) txnid ); 257 t = `__db_nic ( dbv , t_t ); 261 i( ab܋d ) { 262 `__db_rx ( dbv , 264 i( t == 0) 265 t = EINVAL ; 270 i(( t_t = `__mux_ ( dbv , & mgr -> mux )!0 && t == 0) 271 t = t_t ; 274 i(( t_t = `__v_gi_dach ( dbv , gfo , 0)!0 && t == 0) 275 t = t_t ; 277 `__os_ ( dbv , mgr ); 279 dbv -> tx_hd = NULL ; 280 ( t ); 281 } } 289 u_t32_t 290 $__txn_gi_mux_cou ( dbv ) 291 DB_ENV * dbv ; 297 ( dbv -> tx_max + 1 + 2); 298 } } 304 size_t 305 $__txn_gi_size ( dbv ) 306 DB_ENV * dbv ; 308 size_t s ; 317 s = ( DB_TXNREGION ) + 318 dbv -> tx_max * (( TXN_DETAIL + `__v_loc_ovhd () + 20) + 320 ( s ); 321 } } 331 $__txn_id_t ( dbv , cur_txnid , max_txnid ) 332 DB_ENV * dbv ; 333 u_t32_t cur_txnid , max_txnid ; 335 DB_TXNMGR * mgr ; 336 DB_TXNREGION * gi ; 337 t ; 339 `ENV_REQUIRES_CONFIG ( dbv , dbv-> tx_hd , "txn_id_t", DB_INIT_TXN ); 341 mgr = dbv -> tx_hd ; 342 gi = mgr -> gfo . imy ; 343 gi -> ϡ_txnid = cur_txnid ; 344 gi -> cur_maxid = max_txnid ; 346 t = 0; 347 i( cur_txnid < TXN_MINIMUM ) { 348 `__db_rx ( dbv , "Current ID value %lu below minimum", 349 ( u_lg ) cur_txnid ); 350 t = EINVAL ; 352 i( max_txnid < TXN_MINIMUM ) { 353 `__db_rx ( dbv , "Maximum ID value %lu below minimum", 354 ( u_lg ) max_txnid ); 355 t = EINVAL ; 357 ( t ); 358 } } 368 $__txn_de_ad ( dbv , lp ) 369 DB_ENV * dbv ; 370 DB_LSN * lp ; 372 DB_LSN d_l ; 373 DB_TXNMGR * mgr ; 374 DB_TXNREGION * gi ; 375 TXN_DETAIL * td ; 376 t ; 378 i(( mgr = dbv -> tx_hd = NULL ) 380 gi = mgr -> gfo . imy ; 382 i(( t = `__log_cut_l ( dbv , & d_l , NULL , NULL)) != 0) 383 ( t ); 385 `TXN_SYSTEM_LOCK ( dbv ); 386 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) 387 i( `LOG_COMPARE (& td -> ad_l , & d_l ) < 0) 388 d_l = td -> ad_l ; 389 `TXN_SYSTEM_UNLOCK ( dbv ); 391 `DB_ASSERT ( dbv , `LOG_COMPARE (& d_l , lp ) >= 0); 392 * lp = d_l ; 395 } } 404 $__txn_add_bufr ( dbv , td ) 405 DB_ENV * dbv ; 406 TXN_DETAIL * td ; 408 `DB_ASSERT ( dbv , td ! NULL ); 410 `MUTEX_LOCK ( dbv , td -> mvcc_mtx ); 411 `DB_ASSERT ( dbv , td -> mvcc_f < UINT32_MAX ); 412 ++ td -> mvcc_f ; 413 `MUTEX_UNLOCK ( dbv , td -> mvcc_mtx ); 415 `COMPQUIET ( dbv , NULL ); 417 } } 426 $__txn_move_bufr ( dbv , td , hash_mtx ) 427 DB_ENV * dbv ; 428 TXN_DETAIL * td ; 429 db_mux_t hash_mtx ; 431 DB_TXNMGR * mgr ; 432 DB_TXNREGION * gi ; 433 ed_ , t ; 435 `DB_ASSERT ( dbv , td ! NULL ); 436 t = 0; 437 mgr = dbv -> tx_hd ; 438 gi = mgr -> gfo . imy ; 440 `MUTEX_LOCK ( dbv , td -> mvcc_mtx ); 441 `DB_ASSERT ( dbv , td -> mvcc_f > 0); 442 ed_ = (-- td -> mvcc_f == 0); 443 `MUTEX_UNLOCK ( dbv , td -> mvcc_mtx ); 445 i( ed_ && 446 ( td -> us = TXN_COMMITTED ||d->u= TXN_ABORTED )) { 447 `MUTEX_UNLOCK ( dbv , hash_mtx ); 449 t = `__mux_ ( dbv , & td -> mvcc_mtx ); 450 td -> mvcc_mtx = MUTEX_INVALID ; 452 `TXN_SYSTEM_LOCK ( dbv ); 453 `SH_TAILQ_REMOVE (& gi -> mvcc_txn , td , lks , __txn_da ); 454 #ifde HAVE_STATISTICS 455 -- gi -> . _nsh ; 457 `__v_loc_ (& mgr -> gfo , td ); 458 `TXN_SYSTEM_UNLOCK ( dbv ); 460 `MUTEX_LOCK ( dbv , hash_mtx ); 463 ( t ); 464 } } @../txn/txn_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/db_am.h " 14 ~"dbc/log.h " 15 ~"dbc/txn.h " 17 #ifde HAVE_STATISTICS 18 __txn_com __P ((const *, const *)); 19 __txn_t_l __P (( DB_ENV *, u_t32_t )); 20 __txn_t_s __P (( DB_ENV *, u_t32_t )); 21 __txn_ __P (( DB_ENV *, DB_TXN_STAT **, u_t32_t )); 22 * __txn_us __P (( DB_TXN_ACTIVE *)); 23 __txn_gid __P (( DB_ENV *, DB_MSGBUF *, DB_TXN_ACTIVE *)); 25 #XID_FIELD_IS_SET ( p ) \ 26 (( p )-> xa_us !0 || (p)-> us = TXN_PREPARED ) ) 35 $__txn__ ( dbv , p , ags ) 36 DB_ENV * dbv ; 37 DB_TXN_STAT ** p ; 38 u_t32_t ags ; 40 DB_THREAD_INFO * ; 41 t ; 43 `PANIC_CHECK ( dbv ); 44 `ENV_REQUIRES_CONFIG ( dbv , 45 dbv -> tx_hd , "DB_ENV->txn_", DB_INIT_TXN ); 47 i(( t = `__db_fchk ( dbv , 48 "DB_ENV->txn_", ags , DB_STAT_CLEAR )) != 0) 49 ( t ); 51 `ENV_ENTER ( dbv , ); 52 `REPLICATION_WRAP ( dbv , ( `__txn_ (dbv, p , ags )), t ); 53 `ENV_LEAVE ( dbv , ); 54 ( t ); 55 } } 62 $__txn_ ( dbv , p , ags ) 63 DB_ENV * dbv ; 64 DB_TXN_STAT ** p ; 65 u_t32_t ags ; 67 DB_TXNMGR * mgr ; 68 DB_TXNREGION * gi ; 69 DB_TXN_STAT * s ; 70 TXN_DETAIL * td ; 71 size_t nbys ; 72 u_t32_t maxtxn , ndx ; 73 t ; 75 * p = NULL ; 76 mgr = dbv -> tx_hd ; 77 gi = mgr -> gfo . imy ; 89 maxtxn = gi -> maxtxns + (region->maxtxns / 10) + 10; 90 nbys = ( DB_TXN_STAT + ( DB_TXN_ACTIVE * maxtxn ; 91 i(( t = `__os_umloc ( dbv , nbys , & s )) != 0) 92 ( t ); 94 `TXN_SYSTEM_LOCK ( dbv ); 95 `memy ( s , & gi -> , (*stats)); 96 s -> _ϡ_txnid = gi -> ϡ_txnid ; 97 s -> _ϡ_ckp = gi -> ϡ_ckp ; 98 s -> _time_ckp = gi -> time_ckp ; 99 s -> _txǼay = ( DB_TXN_ACTIVE *)&stats[1]; 101 ndx = 0, 102 td = `SH_TAILQ_FIRST (& gi -> aive_txn , __txn_da ); 103 td ! NULL && ndx < maxtxn ; 104 td = `SH_TAILQ_NEXT d, lks , __txn_da ), ++ ndx ) { 105 s -> _txǼay [ ndx ]. txnid = td ->txnid; 106 i( td -> = INVALID_ROFF ) 107 s -> _txǼay [ ndx ]. id = TXN_INVALID ; 109 s -> _txǼay [ ndx ]. id = 110 (( TXN_DETAIL *) `R_ADDR (& mgr -> gfo , 111 td -> ))-> txnid ; 112 s -> _txǼay [ ndx ]. pid = td ->pid; 113 s -> _txǼay [ ndx ]. tid = td ->tid; 114 s -> _txǼay [ ndx ]. l = td -> beg_l ; 115 s -> _txǼay [ ndx ]. ad_l = td ->read_lsn; 116 s -> _txǼay [ ndx ]. mvcc_f = td ->mvcc_ref; 117 s -> _txǼay [ ndx ]. us = td ->status; 118 s -> _txǼay [ ndx ]. xa_us = td ->xa_status; 119 i( `XID_FIELD_IS_SET ( td )) 120 `memy ( s -> _txǼay [ ndx ]. xid , 121 td -> xid , (td->xid)); 122 i( td -> me ! INVALID_ROFF ) { 123 () `y ( s -> _txǼay [ ndx ]. me , 124 `R_ADDR (& mgr -> gfo , td -> me ), 125 ( s -> _txǼay [ ndx ]. me ) - 1); 126 s -> _txǼay [ ndx ]. me [ 127 ( s -> _txǼay [ ndx ]. me ) - 1] = '\0'; 129 s -> _txǼay [ ndx ]. me [0] = '\0'; 132 `__mux_t_wa_fo ( dbv , gi -> mtx_gi , 133 & s -> _gi_wa , &s-> _gi_nowa ); 134 s -> _gsize = mgr -> gfo . -> size ; 135 i( `LF_ISSET ( DB_STAT_CLEAR )) { 136 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 137 `__mux_r ( dbv , gi -> mtx_gi ); 138 `memt (& gi -> , 0, (region->stat)); 139 gi -> . _maxtxns =egi-> maxtxns ; 140 gi -> . _maxive = 141 gi -> . _ive = s ->st_nactive; 142 gi -> . _maxnsh = 143 gi -> . _nsh = s ->st_nsnapshot; 146 `TXN_SYSTEM_UNLOCK ( dbv ); 148 * p = s ; 150 } } 159 $__txn__t_ ( dbv , ags ) 160 DB_ENV * dbv ; 161 u_t32_t ags ; 163 DB_THREAD_INFO * ; 164 t ; 166 `PANIC_CHECK ( dbv ); 167 `ENV_REQUIRES_CONFIG ( dbv , 168 dbv -> tx_hd , "DB_ENV->txn__t", DB_INIT_TXN ); 170 i(( t = `__db_fchk ( dbv , "DB_ENV->txn_stat_print", 171 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 172 ( t ); 174 `ENV_ENTER ( dbv , ); 175 `REPLICATION_WRAP ( dbv , ( `__txn__t (dbv, ags )), t ); 176 `ENV_LEAVE ( dbv , ); 177 ( t ); 178 } } 187 $__txn__t ( dbv , ags ) 188 DB_ENV * dbv ; 189 u_t32_t ags ; 191 u_t32_t ig_ags ; 192 t ; 194 ig_ags = ags ; 195 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 196 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 197 t = `__txn_t_s ( dbv , ig_ags ); 198 i( ags =0 || t != 0) 199 ( t ); 202 i( `LF_ISSET ( DB_STAT_ALL ) && 203 ( t = `__txn_t_l ( dbv , ig_ags )) != 0) 204 ( t ); 207 } } 214 $__txn_t_s ( dbv , ags ) 215 DB_ENV * dbv ; 216 u_t32_t ags ; 218 DB_MSGBUF mb ; 219 DB_TXN_STAT * ; 220 DB_TXN_ACTIVE * txn ; 221 u_t32_t i ; 222 t ; 223 buf [ DB_THREADID_STRLEN ], time_buf [ CTIME_BUFLEN ]; 225 i(( t = `__txn_ ( dbv , & , ags )) != 0) 226 ( t ); 228 i( `LF_ISSET ( DB_STAT_ALL )) 229 `__db_msg ( dbv , "Defaultransactionegion information:"); 230 `__db_msg ( dbv , "%lu/%lu\t%s", 231 ( u_lg ) -> _ϡ_ckp . fe , (u_lg)->_ϡ_ckp. offt , 232 -> _ϡ_ckp . fe == 0 ? 234 i( -> _time_ckp == 0) 235 `__db_msg ( dbv , "0\tNo checkpointimestamp"); 237 `__db_msg ( dbv , "%.24s\tCheckpointimestamp", 238 `__db_ime (& -> _time_ckp , time_buf )); 239 `__db_msg ( dbv , "%#lx\tLastransaction IDllocated", 240 ( u_lg ) -> _ϡ_txnid ); 241 `__db_dl ( dbv , "Maximumumber ofctiveransactions configured", 242 ( u_lg ) -> _maxtxns ); 243 `__db_dl ( dbv , "Aivis", ( u_lg ) -> _ive ); 244 `__db_dl ( dbv , 245 "Maximumivis", ( u_lg ) -> _maxive ); 246 `__db_dl ( dbv , 247 "Numb oiڠbegun", ( u_lg ) -> _nbegs ); 248 `__db_dl ( dbv , 249 "Numb oiڠab܋d", ( u_lg ) -> _bts ); 250 `__db_dl ( dbv , 251 "Numb oiڠcommd", ( u_lg ) -> _ncomms ); 252 `__db_dl ( dbv , "Spshفnis", ( u_lg ) -> _nsh ); 253 `__db_dl ( dbv , "Maximum snapshotransactions", 254 ( u_lg ) -> _maxnsh ); 255 `__db_dl ( dbv , 256 "Numb oiڠed", ( u_lg ) -> _ees ); 258 `__db_dlbys ( dbv , "Transactionegion size", 259 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 260 `__db_dl_p ( dbv , 262 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 263 -> _gi_wa + sp-> _gi_nowa ), NULL ); 265 `qst ( -> _txǼay , 266 -> _ive , (-> _txǼay [0]), __txn_com ); 267 `__db_msg ( dbv , "Activeransactions:"); 268 `DB_MSGBUF_INIT (& mb ); 269 i = 0; i < -> _ive ; ++i) { 270 txn = & -> _txǼay [ i ]; 271 `__db_msgadd ( dbv , & mb , 273 ( u_lg ) txn -> txnid , `__txn_us (txn), 274 dbv -> `thad_id_rg (dbv, txn -> pid ,xn-> tid , buf ), 275 ( u_lg ) txn -> l . fe , (u_lgxn->l. offt ); 276 i( txn -> id != 0) 277 `__db_msgadd ( dbv , & mb , 278 ";t: %lx", ( u_lg ) txn -> id ); 279 i(! `IS_MAX_LSN ( txn -> ad_l )) 280 `__db_msgadd ( dbv , & mb , ";ead LSN: %lu/%lu", 281 ( u_lg ) txn -> ad_l . fe , 282 ( u_lg ) txn -> ad_l . offt ); 283 i( txn -> mvcc_f != 0) 284 `__db_msgadd ( dbv , & mb , 285 "; mvcfcou: %lu", ( u_lg ) txn -> mvcc_f ); 286 i( txn -> me [0] != '\0') 287 `__db_msgadd ( dbv , & mb , "; \"%s\"", txn -> me ); 288 i( `XID_FIELD_IS_SET ( txn )) 289 `__txn_gid ( dbv , & mb , txn ); 290 `DB_MSGBUF_FLUSH ( dbv , & mb ); 293 `__os_u ( dbv , ); 296 } } 303 $__txn_t_l ( dbv , ags ) 304 DB_ENV * dbv ; 305 u_t32_t ags ; 307 cڡ FN [] = { 308 { TXN_IN_RECOVERY , "TXN_IN_RECOVERY" }, 309 { 0, NULL } 311 DB_TXNMGR * mgr ; 312 DB_TXNREGION * gi ; 313 time_buf [ CTIME_BUFLEN ]; 315 mgr = dbv -> tx_hd ; 316 gi = mgr -> gfo . imy ; 318 `TXN_SYSTEM_LOCK ( dbv ); 320 `__db_t_gfo ( dbv , & mgr -> gfo , "Tni", ags ); 322 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 323 `__db_msg ( dbv , "DB_TXNMGR handle information:"); 324 `__mux_t_debug_sg ( dbv , "DB_TXNMGR mux", mgr -> mux , ags ); 325 `__db_dl ( dbv , 326 "Numb oiڠdisrded", ( u_lg ) mgr -> n_disrds ); 328 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 329 `__db_msg ( dbv , "DB_TXNREGION handle information:"); 330 `__mux_t_debug_sg ( 331 dbv , "DB_TXNREGIONegi mux", gi -> mtx_gi , ags ); 332 `STAT_ULONG ("Maximumumb oaivtxns", gi -> maxtxns ); 333 `STAT_HEX ("Lani IDod", gi -> ϡ_txnid ); 334 `STAT_HEX ("Cumaximum unud ID", gi -> cur_maxid ); 336 `__mux_t_debug_sg ( 337 dbv , "checkpomux", gi -> mtx_ckp , ags ); 338 `STAT_LSN ("La checkpoLSN", & gi -> ϡ_ckp ); 339 `__db_msg ( dbv , 341 gi -> time_ckp == 0 ? "0" : 342 `__db_ime (& gi -> time_ckp , time_buf )); 344 `__db_ags ( dbv , NULL , gi -> ags , , NULL, "\tFlags"); 346 `__db_msg ( dbv , "%s", `DB_GLOBAL ( db_le )); 347 `__db_msg ( dbv , "XA information:"); 348 `STAT_LONG ("XA RMID", dbv -> xa_rmid ); 354 `TXN_SYSTEM_UNLOCK ( dbv ); 357 } } 360 $__txn_us ( txn ) 361 DB_TXN_ACTIVE * txn ; 363 txn -> xa_us ) { 365 txn -> us ) { 366 TXN_ABORTED : 368 TXN_COMMITTED : 370 TXN_PREPARED : 372 TXN_RUNNING : 378 TXN_XA_ABORTED : 380 TXN_XA_DEADLOCKED : 382 TXN_XA_ENDED : 384 TXN_XA_PREPARED : 386 TXN_XA_STARTED : 388 TXN_XA_SUSPENDED : 394 } } 397 $__txn_gid ( dbv , mbp , txn ) 398 DB_ENV * dbv ; 399 DB_MSGBUF * mbp ; 400 DB_TXN_ACTIVE * txn ; 402 u_t32_t v , * xp ; 403 u_t i ; 404 t ; 406 `__db_msgadd ( dbv , mbp , "\n\tGID/XID:"); 407 t = 0, xp = ( u_t32_t *) txn -> xid , i = 0;;) { 408 `memy (& v , xp ++, ( u_t32_t )); 409 `__db_msgadd ( dbv , mbp , "%#lx ", ( u_lg ) v ); 410 i(( i +( u_t32_t )> DB_XIDDATASIZE ) 412 i(++ t == 4) { 413 `DB_MSGBUF_FLUSH ( dbv , mbp ); 414 `__db_msgadd ( dbv , mbp , "\t\t"); 415 t = 0; 418 } } 421 $__txn_com ( a1 , b1 ) 422 cڡ * a1 , * b1 ; 424 cڡ DB_TXN_ACTIVE * a , * b ; 426 a = a1 ; 427 b = b1 ; 429 i( a -> txnid > b ->txnid) 431 i( a -> txnid < b ->txnid) 434 } } 439 $__txn__ ( dbv , p , ags ) 440 DB_ENV * dbv ; 441 DB_TXN_STAT ** p ; 442 u_t32_t ags ; 444 `COMPQUIET ( p , NULL ); 445 `COMPQUIET ( ags , 0); 447 ( `__db__n_but ( dbv )); 448 } } 451 $__txn__t_ ( dbv , ags ) 452 DB_ENV * dbv ; 453 u_t32_t ags ; 455 `COMPQUIET ( ags , 0); 457 ( `__db__n_but ( dbv )); 458 } } @../txn/txn_util.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/db_ge.h " 13 ~"dbc/lock.h " 14 ~"dbc/mp.h " 15 ~"dbc/txn.h " 16 ~"dbc/log.h " 17 ~"dbc/db_am.h " 19 __txn_evt tTXN_EVENT ; 20 s__txn_evt { 21 TXN_EVENT_T m ; 22 TAILQ_ENTRY ( __txn_evt mlks ; 26 DB * mdbp ; 27 } mc ; 30 * mme ; 31 u_t8_t * mfeid ; 32 mmem ; 33 } mr ; 36 DB_LOCK mlock ; 37 DB_LOCKER * mlock ; 38 DB * mdbp ; 39 } mt ; 40 } mu ; 52 $__txn_oevt ( dbv , txn , dbp ) 53 DB_ENV * dbv ; 54 DB_TXN * txn ; 55 DB * dbp ; 57 t ; 58 TXN_EVENT * e ; 60 e = NULL ; 61 i(( t = `__os_oc ( dbv , 1, ( TXN_EVENT ), & e )) != 0) 62 ( t ); 64 e -> u . c . dbp = dbp; 65 e -> = TXN_CLOSE ; 66 `TAILQ_INSERT_TAIL (& txn -> evts , e , lks ); 69 } } 80 $__txn_mevt ( dbv , txn , me , feid , mem ) 81 DB_ENV * dbv ; 82 DB_TXN * txn ; 83 cڡ * me ; 84 u_t8_t * feid ; 85 mem ; 87 t ; 88 TXN_EVENT * e ; 90 e = NULL ; 91 i(( t = `__os_oc ( dbv , 1, ( TXN_EVENT ), & e )) != 0) 92 ( t ); 94 i(( t = `__os_rdup ( dbv , me , & e -> u . r .name)) != 0) 95 r ; 97 i( feid ! NULL ) { 98 i(( t = `__os_oc ( dbv , 99 1, DB_FILE_ID_LEN , & e -> u . r . feid )) != 0) 100 ( t ); 101 `memy ( e -> u . r . feid , feid, DB_FILE_ID_LEN ); 104 e -> u . r . mem = inmem; 105 e -> = TXN_REMOVE ; 106 `TAILQ_INSERT_TAIL (& txn -> evts , e , lks ); 110 r : i( e ! NULL ) 111 `__os_ ( dbv , e ); 113 ( t ); 114 } } 124 $__txn_mm ( dbv , txn , me ) 125 DB_ENV * dbv ; 126 DB_TXN * txn ; 127 cڡ * me ; 129 TXN_EVENT * e , * xt_e ; 131 e = `TAILQ_FIRST (& txn -> evts ); ! NULL ; = xt_e ) { 132 xt_e = `TAILQ_NEXT ( e , lks ); 133 i( e -> ! TXN_REMOVE || `rcmp ( me ,-> u . r .name) != 0) 135 `TAILQ_REMOVE (& txn -> evts , e , lks ); 136 `__os_ ( dbv , e -> u . r . me ); 137 i( e -> u . r . feid ! NULL ) 138 `__os_ ( dbv , e -> u . r . feid ); 139 `__os_ ( dbv , e ); 143 } } 155 $__txn_lockevt ( dbv , txn , dbp , lock , lock ) 156 DB_ENV * dbv ; 157 DB_TXN * txn ; 158 DB * dbp ; 159 DB_LOCK * lock ; 160 DB_LOCKER * lock ; 162 t ; 163 TXN_EVENT * e ; 165 i(! `LOCKING_ON ( dbv )) 168 e = NULL ; 169 i(( t = `__os_oc ( dbv , 1, ( TXN_EVENT ), & e )) != 0) 170 ( t ); 172 e -> u . t . lock =ocker; 173 e -> u . t . lock = *lock; 174 e -> u . t . dbp = dbp; 175 e -> = TXN_TRADE ; 176 `TAILQ_INSERT_TAIL (& txn -> evts , e , lks ); 177 dbp -> cur_txn = txn ; 180 } } 190 $__txn_mlock ( dbv , txn , lock , lock ) 191 DB_ENV * dbv ; 192 DB_TXN * txn ; 193 DB_LOCK * lock ; 194 DB_LOCKER * lock ; 196 TXN_EVENT * e , * xt_e ; 198 e = `TAILQ_FIRST (& txn -> evts ); ! NULL ; = xt_e ) { 199 xt_e = `TAILQ_NEXT ( e , lks ); 200 i(( e -> ! TXN_TRADE &&-> ! TXN_TRADED ) || 201 ( e -> u . t . lock . off !lock->of&&->u.t. lock !=ocker)) 203 `TAILQ_REMOVE (& txn -> evts , e , lks ); 204 `__os_ ( dbv , e ); 208 } } 217 #DO_TRADE do { \ 218 `memt (& q , 0, (req)); \ 219 q . lock = e -> u . t .lock; \ 220 q . = DB_LOCK_TRADE ; \ 221 t_t = `__lock_vec ( dbv , e -> u . t . lock , 0, & q , 1, NULL ); \ 222 i( t_t == 0) { \ 223 e -> u . t . dbp -> cur_lock =->u.t. lock ; \ 224 e -> u . t . dbp -> cur_txn = NULL ; \ 225 } i( t_t = DB_NOTFOUND ) \ 226 t_t = 0; \ 227 i( t_t !0 && t == 0) \ 228 t = t_t ; \ 229 e -> = TXN_TRADED ; \ 230 } 0) ) 233 $__txn_dvts ( dbv , txn , code , ross ) 234 DB_ENV * dbv ; 235 DB_TXN * txn ; 236 code , ross ; 238 DB_LOCKREQ q ; 239 TXN_EVENT * e ; 240 t , t_t ; 242 t = 0; 251 i( ross ) { 252 e = `TAILQ_FIRST (& txn -> evts ); 253 e ! NULL ; = `TAILQ_NEXT , lks )) { 254 i( e -> ! TXN_TRADE || 255 `IS_WRITELOCK ( e -> u . t . lock . mode )) 257 DO_TRADE ; 259 ( t ); 266 `DB_ASSERT ( dbv , code ! TXN_PREPARE ); 267 ( e = `TAILQ_FIRST (& txn -> evts )! NULL ) { 268 `TAILQ_REMOVE (& txn -> evts , e , lks ); 276 i( code = TXN_ABORT && e -> ! TXN_CLOSE ) 277 do ; 278 e -> ) { 279 TXN_CLOSE : 280 i(( t_t = `__db_o ( e -> u . c . dbp , 281 NULL , DB_NOSYNC )!0 && t == 0) 282 t = t_t ; 284 TXN_REMOVE : 285 i( e -> u . r . feid ! NULL ) { 286 i(( t_t = `__memp_me ( dbv , 287 e -> u . r . feid , NULL ,->u.r. me , 288 NULL , e -> u . r . mem )!0 && t == 0) 289 t = t_t ; 290 } i(( t_t = 291 `__os_uƚk ( dbv , e -> u . r . me )!0 && t == 0) 292 t = t_t ; 294 TXN_TRADE : 295 DO_TRADE ; 297 TXN_TRADED : 299 i(( t_t = `__lock_downgde ( dbv , 300 & e -> u . t . lock , DB_LOCK_READ , 0)!0 && t == 0) 301 t = t_t ; 305 `DB_ASSERT ( dbv , 0); 307 do : 309 e -> ) { 310 TXN_REMOVE : 311 i( e -> u . r . feid ! NULL ) 312 `__os_ ( dbv , e -> u . r . feid ); 313 `__os_ ( dbv , e -> u . r . me ); 315 TXN_TRADE : 316 i( code = TXN_ABORT ) 317 e -> u . t . dbp -> cur_txn = NULL ; 318 TXN_CLOSE : 319 TXN_TRADED : 323 `__os_ ( dbv , e ); 326 ( t ); 327 } } 333 $__txn_cd_ame ( dbv , txn , ame ) 334 DB_ENV * dbv ; 335 DB_TXN * txn ; 336 FNAME * ame ; 338 DB_TXNMGR * mgr ; 339 DB_LOG * db ; 340 TXN_DETAIL * td ; 341 roff_t ame_off ; 342 roff_t * , * ldbs ; 343 u_t32_t i ; 344 t ; 346 i(( td = txn ->td= NULL ) 348 mgr = dbv -> tx_hd ; 349 db = dbv -> lg_hd ; 350 ame_off = `R_OFFSET (& db -> gfo , ame ); 353 ldbs = `R_ADDR (& mgr -> gfo , td -> log_dbs ); 354 i = 0, = ldbs ; i < td -> og_dbs ; i++,p++) 355 i(* = ame_off ) 358 i( td -> og_s <td-> og_dbs ) { 359 `TXN_SYSTEM_LOCK ( dbv ); 360 i(( t = `__v_loc (& mgr -> gfo , 361 ( roff_t * ( td -> og_s << 1), & )) != 0) 362 ( t ); 363 `memy ( , ldbs , td -> og_dbs * ( roff_t )); 364 i( td -> og_s > TXN_NSLOTS ) 365 `__v_loc_ (& mgr -> gfo , ldbs ); 367 `TXN_SYSTEM_UNLOCK ( dbv ); 368 td -> log_dbs = `R_OFFSET (& mgr -> gfo , ); 369 ldbs = ; 370 td -> og_s =d->nlog_slots << 1; 373 ldbs [ td -> og_dbs ] = ame_off ; 374 td -> og_dbs ++; 375 ame -> txn_f ++; 378 } } 388 $__txn_df_ame ( dbv , txn ) 389 DB_ENV * dbv ; 390 DB_TXN * txn ; 392 DB_TXNMGR * mgr ; 393 DB_LOG * db ; 394 FNAME * ame ; 395 roff_t * ; 396 TXN_DETAIL * d , * td ; 397 u_t32_t i ; 398 t ; 400 td = txn ->td; 402 i( td -> og_dbs == 0) 405 mgr = dbv -> tx_hd ; 406 db = dbv -> lg_hd ; 407 t = 0; 409 d = txn -> ! NULL ?xn->-> td : NULL; 411 = `R_ADDR (& mgr -> gfo , td -> log_dbs ); 412 i = 0; i < td -> og_dbs ; i++, ++) { 413 ame = `R_ADDR (& db -> gfo , * ); 414 `MUTEX_LOCK ( dbv , ame -> mux ); 415 i( d ! NULL ) { 416 ame -> txn_f --; 417 t = `__txn_cd_ame ( dbv , txn -> , ame ); 418 `MUTEX_UNLOCK ( dbv , ame -> mux ); 419 } i( ame -> txn_f == 1) { 420 `MUTEX_UNLOCK ( dbv , ame -> mux ); 421 `DB_ASSERT ( dbv , ame -> txn_f != 0); 422 t = `__dbg_o_id_t ( 423 dbv , ame , DBREG_CLOSE , 0); 425 ame -> txn_f --; 426 `MUTEX_UNLOCK ( dbv , ame -> mux ); 428 i( t != 0) 432 ( t ); 433 } } @../xa/xa.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 14 __db_xa_o __P ((*, , )); 15 __db_xa_comm __P (( XID *, , )); 16 __db_xa_come __P ((*, *, , )); 17 __db_xa_d __P (( XID *, , )); 18 __db_xa_fg __P (( XID *, , )); 19 __db_xa_ݒ __P ((*, , )); 20 __db_xa_e __P (( XID *, , )); 21 __db_xa_cov __P (( XID *, , , )); 22 __db_xa_rlback __P (( XID *, , )); 23 __db_xa_t __P (( XID *, , )); 24 __xa_put_txn __P (( DB_ENV *, DB_TXN *)); 36 cڡ xa_swch_t gdb_xa_swch = { 38 TMNOMIGRATE , 40 __db_xa_ݒ , 41 __db_xa_o , 42 __db_xa_t , 43 __db_xa_d , 44 __db_xa_rlback , 45 __db_xa_e , 46 __db_xa_comm , 47 __db_xa_cov , 48 __db_xa_fg , 49 __db_xa_come 59 #unde XA_MULTI_THREAD 70 $__xa_g_txn ( dbv , tx , do_ ) 71 DB_ENV * dbv ; 72 DB_TXN ** tx ; 73 do_ ; 75 #ifde XA_MULTI_THREAD 76 DB_TXN * t ; 77 DB_TXNMGR * mgr ; 78 TXN_DETAIL * td ; 79 db_thadid_t tid ; 80 pid_t pid ; 82 t ; 84 t = 0; 86 #ifde XA_MULTI_THREAD 87 dbv -> `thad_id (dbv, & pid , & tid ); 88 * tx = NULL ; 90 `DB_ASSERT ( dbv , dbv-> tx_hd ! NULL ); 91 mgr = dbv -> tx_hd ; 98 `MUTEX_LOCK ( dbv , mgr -> mux ); 99 `TAILQ_FOREACH ( t , & dbv -> xa_txn , xks ) { 100 td = t ->td; 101 i( td -> pid !=id) 103 #ifde HAVE_SIMPLE_THREAD_TYPE 104 i( t -> tid ==id) { 105 * tx = t ; 109 i( `memcmp (& t -> tid , &tid, (tid)) == 0) { 110 * tx = t ; 115 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 117 i(* tx = NULL ) { 118 i(! do_ ) 119 t = EINVAL ; 120 i(( t = 121 `__os_mloc ( dbv , ( DB_TXN ), tx )) == 0) { 122 (* tx )-> tid =id; 123 `MUTEX_LOCK ( dbv , mgr -> mux ); 124 `TAILQ_INSERT_HEAD (& dbv -> xa_txn , * tx , xks ); 125 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 129 `COMPQUIET ( do_ , 0); 131 * tx = `TAILQ_FIRST (& dbv -> xa_txn ); 132 i(* tx = NULL && 133 ( t = `__os_oc ( dbv , 1, ( DB_TXN ), tx )) == 0) { 134 (* tx )-> txnid = TXN_INVALID ; 135 `TAILQ_INSERT_HEAD (& dbv -> xa_txn , * tx , xks ); 139 ( t ); 140 } } 143 $__xa_put_txn ( dbv , tx ) 144 DB_ENV * dbv ; 145 DB_TXN * tx ; 147 #ifde XA_MULTI_THREAD 148 DB_TXNMGR * mgr ; 149 mgr = dbv -> tx_hd ; 151 `MUTEX_LOCK ( dbv , mgr -> mux ); 152 `TAILQ_REMOVE (& dbv -> xa_txn , tx , xks ); 153 `MUTEX_UNLOCK ( dbv , mgr -> mux ); 154 `__os_ ( dbv , tx ); 156 `COMPQUIET ( dbv , NULL ); 157 tx -> txnid = TXN_INVALID ; 160 } } 162 #ifde XA_MULTI_THREAD 163 #XA_FLAGS \ 164 ( DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | \ 165 DB_INIT_TXN | DB_THREAD ) ) 167 #XA_FLAGS \ 168 ( DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | \ 169 DB_INIT_TXN ) ) 187 $__db_xa_ݒ ( xa_fo , rmid , g_ags ) 188 * xa_fo ; 189 rmid ; 190 g_ags ; 192 DB_ENV * dbv ; 193 u_lg ags ; 195 ags = ( u_lg ) g_ags ; 197 i( `LF_ISSET ( TMASYNC )) 198 ( XAER_ASYNC ); 199 i( ags ! TMNOFLAGS ) 200 ( XAER_INVAL ); 203 i( `__db_rmid_to_v ( rmid , & dbv ) == 0) 204 ( XA_OK ); 207 i( `db_v_ (& dbv , 0) != 0) 208 ( XAER_RMERR ); 209 i( dbv -> `ݒ (dbv, xa_fo , XA_FLAGS , 0) != 0) 210 r ; 213 i( `__db_m_rmid ( rmid , dbv ) != 0) 214 r ; 217 `TAILQ_INIT (& dbv -> xa_txn ); 219 ( XA_OK ); 221 r : () dbv -> `o (dbenv, 0); 223 ( XAER_RMERR ); 224 } } 235 $__db_xa_o ( xa_fo , rmid , g_ags ) 236 * xa_fo ; 237 rmid ; 238 g_ags ; 240 DB_ENV * dbv ; 241 DB_TXN * t ; 242 t , t_t ; 243 u_lg ags ; 245 `COMPQUIET ( xa_fo , NULL ); 247 ags = ( u_lg ) g_ags ; 249 i( `LF_ISSET ( TMASYNC )) 250 ( XAER_ASYNC ); 251 i( ags ! TMNOFLAGS ) 252 ( XAER_INVAL ); 255 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 256 ( XA_OK ); 259 i(( t = `TAILQ_FIRST (& dbv -> xa_txn )! NULL && 260 t -> txnid ! TXN_INVALID ) 261 ( XAER_PROTO ); 264 t = `__db_unm_rmid ( rmid ); 267 ( t = `TAILQ_FIRST (& dbv -> xa_txn )! NULL ) { 268 `TAILQ_REMOVE (& dbv -> xa_txn , t , xks ); 269 `__os_ ( dbv , t ); 273 i(( t_t = dbv -> `o (dbv, 0)!0 && t == 0) 274 t = t_t ; 276 ( t =0 ? XA_OK : XAER_RMERR ); 277 } } 284 $__db_xa_t ( xid , rmid , g_ags ) 285 XID * xid ; 286 rmid ; 287 g_ags ; 289 DB_ENV * dbv ; 290 DB_TXN * tx ; 291 TXN_DETAIL * td ; 292 roff_t off ; 293 u_lg ags ; 294 is_known ; 296 ags = ( u_lg ) g_ags ; 298 #OK_FLAGS ( TMJOIN | TMRESUME | TMNOWAIT | TMASYNC | TMNOFLAGS ) ) 299 i( `LF_ISSET (~ OK_FLAGS )) 300 ( XAER_INVAL ); 302 i( `LF_ISSET ( TMJOIN && LF_ISSET( TMRESUME )) 303 ( XAER_INVAL ); 305 i( `LF_ISSET ( TMASYNC )) 306 ( XAER_ASYNC ); 308 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 309 ( XAER_PROTO ); 311 is_known = `__db_xid_to_txn ( dbv , xid , & off ) == 0; 313 i( is_known && ! `LF_ISSET ( TMRESUME && !LF_ISSET( TMJOIN )) 314 ( XAER_DUPID ); 316 i(! is_known && `LF_ISSET ( TMRESUME | TMJOIN )) 317 ( XAER_NOTA ); 324 i( is_known ) { 325 td = `R_ADDR (& dbv -> tx_hd -> gfo , off ); 326 i( td -> xa_us = TXN_XA_SUSPENDED && 327 ! `LF_ISSET ( TMRESUME | TMJOIN )) 328 ( XAER_PROTO ); 329 i( td -> xa_us = TXN_XA_DEADLOCKED ) 330 ( XA_RBDEADLOCK ); 331 i( td -> xa_us = TXN_XA_ABORTED ) 332 ( XA_RBOTHER ); 335 i( `__xa_g_txn ( dbv , & tx , 1) != 0) 336 ( XAER_RMERR ); 337 i( `__txn_ctue ( dbv , tx , td ) != 0) 338 ( XAER_RMERR ); 339 td -> xa_us = TXN_XA_STARTED ; 341 i( `__xa_g_txn ( dbv , & tx , 1) != 0) 342 ( XAER_RMERR ); 343 i( `__txn_xa_beg ( dbv , tx )) 344 ( XAER_RMERR ); 345 () `__db_m_xid ( dbv , xid , tx -> td ); 346 td = tx ->td; 347 td -> xa_us = TXN_XA_STARTED ; 349 ( XA_OK ); 350 } } 357 $__db_xa_d ( xid , rmid , ags ) 358 XID * xid ; 359 rmid ; 360 ags ; 362 DB_ENV * dbv ; 363 DB_TXN * txn ; 364 TXN_DETAIL * td ; 365 roff_t off ; 367 i( ags ! TMNOFLAGS && ! `LF_ISSET ( TMSUSPEND | TMSUCCESS | TMFAIL )) 368 ( XAER_INVAL ); 370 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 371 ( XAER_PROTO ); 373 i( `__db_xid_to_txn ( dbv , xid , & off ) != 0) 374 ( XAER_NOTA ); 376 i( `__xa_g_txn ( dbv , & txn , 0) != 0) 377 ( XAER_RMERR ); 379 td = `R_ADDR (& dbv -> tx_hd -> gfo , off ); 380 i( td ! txn ->td) 381 ( XAER_PROTO ); 383 i( td -> xa_us = TXN_XA_DEADLOCKED ) 384 ( XA_RBDEADLOCK ); 386 i( td -> us = TXN_ABORTED ) 387 ( XA_RBOTHER ); 389 i( td -> xa_us ! TXN_XA_STARTED ) 390 ( XAER_PROTO ); 396 i( `LF_ISSET ( TMSUSPEND )) 397 td -> xa_us = TXN_XA_SUSPENDED ; 399 td -> xa_us = TXN_XA_ENDED ; 405 () `__xa_put_txn ( dbv , txn ); 406 ( XA_OK ); 407 } } 414 $__db_xa_e ( xid , rmid , g_ags ) 415 XID * xid ; 416 rmid ; 417 g_ags ; 419 DB_ENV * dbv ; 420 DB_TXN * tx ; 421 TXN_DETAIL * td ; 422 roff_t off ; 423 u_lg ags ; 425 ags = ( u_lg ) g_ags ; 427 i( `LF_ISSET ( TMASYNC )) 428 ( XAER_ASYNC ); 429 i( ags ! TMNOFLAGS ) 430 ( XAER_INVAL ); 438 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 439 ( XAER_PROTO ); 441 i( `__db_xid_to_txn ( dbv , xid , & off ) != 0) 442 ( XAER_NOTA ); 443 td = `R_ADDR (& dbv -> tx_hd -> gfo , off ); 444 i( td -> xa_us = TXN_XA_DEADLOCKED ) 445 ( XA_RBDEADLOCK ); 447 i( td -> xa_us ! TXN_XA_ENDED &&d->xa_u! TXN_XA_SUSPENDED ) 448 ( XAER_PROTO ); 451 i( `__xa_g_txn ( dbv , & tx , 0) != 0) 452 ( XAER_PROTO ); 453 i( `__txn_ctue ( dbv , tx , td ) != 0) 454 ( XAER_RMERR ); 456 i( tx -> `e x, ( u_t8_t *) xid -> da ) != 0) 457 ( XAER_RMERR ); 459 td -> xa_us = TXN_XA_PREPARED ; 465 () `__xa_put_txn ( dbv , tx ); 466 ( XA_OK ); 467 } } 474 $__db_xa_comm ( xid , rmid , g_ags ) 475 XID * xid ; 476 rmid ; 477 g_ags ; 479 DB_ENV * dbv ; 480 DB_TXN * tx ; 481 TXN_DETAIL * td ; 482 roff_t off ; 483 u_lg ags ; 485 ags = ( u_lg ) g_ags ; 487 i( `LF_ISSET ( TMASYNC )) 488 ( XAER_ASYNC ); 489 #unde OK_FLAGS 490 #OK_FLAGS ( TMNOFLAGS | TMNOWAIT | TMONEPHASE ) ) 491 i( `LF_ISSET (~ OK_FLAGS )) 492 ( XAER_INVAL ); 498 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 499 ( XAER_PROTO ); 501 i( `__db_xid_to_txn ( dbv , xid , & off ) != 0) 502 ( XAER_NOTA ); 504 td = `R_ADDR (& dbv -> tx_hd -> gfo , off ); 505 i( td -> xa_us = TXN_XA_DEADLOCKED ) 506 ( XA_RBDEADLOCK ); 508 i( td -> xa_us = TXN_XA_ABORTED ) 509 ( XA_RBOTHER ); 511 i( `LF_ISSET ( TMONEPHASE ) && 512 td -> xa_us ! TXN_XA_ENDED &&d->xa_u! TXN_XA_SUSPENDED ) 513 ( XAER_PROTO ); 515 i(! `LF_ISSET ( TMONEPHASE && td -> xa_us ! TXN_XA_PREPARED ) 516 ( XAER_PROTO ); 519 i( `__xa_g_txn ( dbv , & tx , 0) != 0) 520 ( XAER_RMERR ); 521 i( `__txn_ctue ( dbv , tx , td ) != 0) 522 ( XAER_RMERR ); 524 i( tx -> `comm (txnp, 0) != 0) 525 ( XAER_RMERR ); 531 () `__xa_put_txn ( dbv , tx ); 532 ( XA_OK ); 533 } } 544 $__db_xa_cov ( xids , cou , rmid , ags ) 545 XID * xids ; 546 cou , ags ; 547 rmid ; 549 DB_ENV * dbv ; 550 u_t32_t wags ; 551 rv ; 554 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 555 ( XAER_PROTO ); 557 i( `LF_ISSET ( TMSTARTRSCAN )) 558 wags = DB_FIRST ; 559 i( `LF_ISSET ( TMENDRSCAN )) 560 wags = DB_LAST ; 562 wags = DB_NEXT ; 564 rv = 0; 565 i( `__txn_g_ed ( dbv , xids , NULL , cou , & rv , wags ) != 0) 566 ( XAER_RMERR ); 568 ( rv ); 569 } } 576 $__db_xa_rlback ( xid , rmid , g_ags ) 577 XID * xid ; 578 rmid ; 579 g_ags ; 581 DB_ENV * dbv ; 582 DB_TXN * tx ; 583 TXN_DETAIL * td ; 584 roff_t off ; 585 u_lg ags ; 587 ags = ( u_lg ) g_ags ; 589 i( `LF_ISSET ( TMASYNC )) 590 ( XAER_ASYNC ); 591 i( ags ! TMNOFLAGS ) 592 ( XAER_INVAL ); 594 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 595 ( XAER_PROTO ); 597 i( `__db_xid_to_txn ( dbv , xid , & off ) != 0) 598 ( XAER_NOTA ); 600 td = `R_ADDR (& dbv -> tx_hd -> gfo , off ); 601 i( td -> xa_us = TXN_XA_DEADLOCKED ) 602 ( XA_RBDEADLOCK ); 604 i( td -> xa_us = TXN_XA_ABORTED ) 605 ( XA_RBOTHER ); 607 i( td -> xa_us ! TXN_XA_ENDED && 608 td -> xa_us ! TXN_XA_SUSPENDED && 609 td -> xa_us ! TXN_XA_PREPARED ) 610 ( XAER_PROTO ); 613 i( `__xa_g_txn ( dbv , & tx , 0) != 0) 614 ( XAER_RMERR ); 615 i( `__txn_ctue ( dbv , tx , td ) != 0) 616 ( XAER_RMERR ); 617 i( tx -> `abt (txnp) != 0) 618 ( XAER_RMERR ); 624 () `__xa_put_txn ( dbv , tx ); 625 ( XA_OK ); 626 } } 636 $__db_xa_fg ( xid , rmid , g_ags ) 637 XID * xid ; 638 rmid ; 639 g_ags ; 641 DB_ENV * dbv ; 642 roff_t off ; 643 u_lg ags ; 645 ags = ( u_lg ) g_ags ; 647 i( `LF_ISSET ( TMASYNC )) 648 ( XAER_ASYNC ); 649 i( ags ! TMNOFLAGS ) 650 ( XAER_INVAL ); 652 i( `__db_rmid_to_v ( rmid , & dbv ) != 0) 653 ( XAER_PROTO ); 658 i( `__db_xid_to_txn ( dbv , xid , & off ) != 0) 659 ( XA_OK ); 661 `__db_unm_xid ( dbv , xid , off ); 664 ( XA_OK ); 665 } } 673 $__db_xa_come ( hd , tv , rmid , ags ) 674 * hd , * tv , rmid ; 675 ags ; 677 `COMPQUIET ( hd , NULL ); 678 `COMPQUIET ( tv , NULL ); 679 `COMPQUIET ( rmid , 0); 680 `COMPQUIET ( ags , 0); 682 ( XAER_INVAL ); 683 } } @../xa/xa_db.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 14 __xa_o __P (( DB *, u_t32_t )); 15 __xa_curs __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 16 __xa_d __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 17 __xa_g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 18 __xa_ݒ __P (( DB *, DB_TXN *, 19 cڡ *, cڡ *, DBTYPE , u_t32_t , )); 20 __xa_put __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 21 __xa_t_txn __P (( DB *, DB_TXN **, )); 22 __xa_un __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 24 s__xa_mhods { 25 (* mo __P (( DB *, u_t32_t )); 26 (* mcurs __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 27 (* md __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 28 (* mg __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 29 (* mݒ __P (( DB *, DB_TXN *, 30 cڡ *, cڡ *, DBTYPE , u_t32_t , )); 31 (* mput __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 32 (* mun __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 33 } tXA_METHODS ; 40 $__xa_t_txn ( dbp , txp , no_xa_txn ) 41 DB * dbp ; 42 DB_TXN ** txp ; 43 no_xa_txn ; 45 DB_ENV * dbv ; 46 t ; 48 dbv = dbp ->dbenv; 57 i(* txp ! NULL ) { 58 `__db_rx ( dbv , 60 ( EINVAL ); 64 i(( t = `__xa_g_txn ( dbv , txp , 0)) != 0) 65 ( t ); 66 i((* txp )-> txnid ! TXN_INVALID ) 75 i( no_xa_txn ) { 76 * txp = NULL ; 80 `__db_rx ( dbv , "no XAransaction declared"); 81 ( EINVAL ); 82 } } 91 $__db_xa_ ( dbp ) 92 DB * dbp ; 94 XA_METHODS * xam ; 95 t ; 101 i(( t = `__os_oc ( dbp -> dbv , 1, ( XA_METHODS ), & xam )) != 0) 102 ( t ); 104 dbp -> xa_ = xam ; 105 xam -> ݒ = dbp ->open; 106 dbp -> ݒ = __xa_ݒ ; 107 xam -> o = dbp ->close; 108 dbp -> o = __xa_o ; 111 } } 118 $__xa_ݒ ( dbp , txn , me , subdb , ty , ags , mode ) 119 DB * dbp ; 120 DB_TXN * txn ; 121 cڡ * me , * subdb ; 122 DBTYPE ty ; 123 u_t32_t ags ; 124 mode ; 126 XA_METHODS * xam ; 127 t ; 129 xam = ( XA_METHODS *) dbp -> xa_ ; 131 i(( t = 132 `__xa_t_txn ( dbp , & txn , `LF_ISSET ( DB_AUTO_COMMIT ) ? 1 : 0)) != 0) 133 ( t ); 134 i(( t = xam -> `ݒ ( dbp , txn , me , subdb , ty , ags , mode )) != 0) 135 ( t ); 138 xam -> curs = dbp ->cursor; 139 xam -> d = dbp ->del; 140 xam -> g = dbp ->get; 141 xam -> put = dbp ->put; 142 xam -> un = dbp ->truncate; 143 dbp -> curs = __xa_curs ; 144 dbp -> d = __xa_d ; 145 dbp -> g = __xa_g ; 146 dbp -> put = __xa_put ; 147 dbp -> un = __xa_un ; 150 } } 153 $__xa_curs ( dbp , txn , db , ags ) 154 DB * dbp ; 155 DB_TXN * txn ; 156 DBC ** db ; 157 u_t32_t ags ; 159 t ; 161 i(( t = `__xa_t_txn ( dbp , & txn , 0)) != 0) 162 ( t ); 163 ((( XA_METHODS *) 164 dbp -> xa_ )-> `curs (dbp, txn , db , ags )); 165 } } 168 $__xa_d ( dbp , txn , key , ags ) 169 DB * dbp ; 170 DB_TXN * txn ; 171 DBT * key ; 172 u_t32_t ags ; 174 t ; 176 i(( t = `__xa_t_txn ( dbp , & txn , 0)) != 0) 177 ( t ); 178 ((( XA_METHODS *) dbp -> xa_ )-> `d (dbp, txn , key , ags )); 179 } } 182 $__xa_o ( dbp , ags ) 183 DB * dbp ; 184 u_t32_t ags ; 186 (* _o `__P (( DB *, u_t32_t )); 188 _o = (( XA_METHODS *) dbp -> xa_ )-> o ; 190 `__os_ ( dbp -> dbv , dbp-> xa_ ); 191 dbp -> xa_ = NULL ; 193 ( `_o ( dbp , ags )); 194 } } 197 $__xa_g ( dbp , txn , key , da , ags ) 198 DB * dbp ; 199 DB_TXN * txn ; 200 DBT * key , * da ; 201 u_t32_t ags ; 203 t ; 205 i(( t = `__xa_t_txn ( dbp , & txn , 0)) != 0) 206 ( t ); 207 ((( XA_METHODS *) 208 dbp -> xa_ )-> `g (dbp, txn , key , da , ags )); 209 } } 212 $__xa_put ( dbp , txn , key , da , ags ) 213 DB * dbp ; 214 DB_TXN * txn ; 215 DBT * key , * da ; 216 u_t32_t ags ; 218 t ; 220 i(( t = `__xa_t_txn ( dbp , & txn , 0)) != 0) 221 ( t ); 222 ((( XA_METHODS *) 223 dbp -> xa_ )-> `put (dbp, txn , key , da , ags )); 224 } } 227 $__xa_un ( dbp , txn , coup , ags ) 228 DB * dbp ; 229 DB_TXN * txn ; 230 u_t32_t * coup , ags ; 232 t ; 234 i(( t = `__xa_t_txn ( dbp , & txn , 0)) != 0) 235 ( t ); 236 ((( XA_METHODS *) 237 dbp -> xa_ )-> `un (dbp, txn , coup , ags )); 238 } } @../xa/xa_map.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 26 $__db_rmid_to_v ( rmid , dbvp ) 27 rmid ; 28 DB_ENV ** dbvp ; 30 DB_ENV * dbv ; 32 dbv = `TAILQ_FIRST (& `DB_GLOBAL ( db_vq )); 33 i( dbv ! NULL && dbv-> xa_rmid = rmid ) { 34 * dbvp = dbv ; 43 ; dbv ! NULL ; dbv = `TAILQ_NEXT (dbv, lks )) 44 i( dbv -> xa_rmid = rmid ) { 45 `TAILQ_REMOVE (& `DB_GLOBAL ( db_vq ), dbv , lks ); 46 `TAILQ_INSERT_HEAD (& `DB_GLOBAL ( db_vq ), dbv , lks ); 47 * dbvp = dbv ; 52 } } 61 $__db_xid_to_txn ( dbv , xid , of ) 62 DB_ENV * dbv ; 63 XID * xid ; 64 roff_t * of ; 66 __txn_da * td ; 68 ( `__txn_m_gid ( dbv , ( u_t8_t *) xid -> da , & td , of )); 69 } } 78 $__db_m_rmid ( rmid , dbv ) 79 rmid ; 80 DB_ENV * dbv ; 82 dbv -> xa_rmid = rmid ; 83 `TAILQ_INSERT_TAIL (& `DB_GLOBAL ( db_vq ), dbv , lks ); 85 } } 94 $__db_unm_rmid ( rmid ) 95 rmid ; 97 DB_ENV * e ; 99 e = `TAILQ_FIRST (& `DB_GLOBAL ( db_vq )); 100 e -> xa_rmid ! rmid ; 101 e = `TAILQ_NEXT , lks )) 104 i( e = NULL ) 105 ( EINVAL ); 107 `TAILQ_REMOVE (& `DB_GLOBAL ( db_vq ), e , lks ); 109 } } 119 $__db_m_xid ( dbv , xid , td ) 120 DB_ENV * dbv ; 121 XID * xid ; 122 TXN_DETAIL * td ; 124 `TXN_SYSTEM_LOCK ( dbv ); 125 `memy ( td -> xid , xid-> da , XIDDATASIZE ); 126 td -> bqu = ( u_t32_t ) xid -> bqu_ngth ; 127 td -> gid = ( u_t32_t ) xid -> gid_ngth ; 128 td -> fm = ( t32_t ) xid -> fmID ; 129 `TXN_SYSTEM_UNLOCK ( dbv ); 132 } } 142 $__db_unm_xid ( dbv , xid , off ) 143 DB_ENV * dbv ; 144 XID * xid ; 145 size_t off ; 147 TXN_DETAIL * td ; 149 `COMPQUIET ( xid , NULL ); 151 td = `R_ADDR (& dbv -> tx_hd -> gfo , off ); 152 `memt ( td -> xid , 0, (td->xid)); 153 } } @../xa/xa_stub.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 18 __db_noxa __P (( DB_ENV *)); 25 $__db_noxa ( dbv ) 26 DB_ENV * dbv ; 28 `__db_rx ( dbv , 30 ( DB_OPNOTSUP ); 31 } } 34 $__db_xa_ ( dbp ) 35 DB * dbp ; 37 ( `__db_noxa ( dbp -> dbv )); 38 } } @ 1 . 0 526 11911 ../btree/bt_compact.c ../btree/bt_compare.c ../btree/bt_conv.c ../btree/bt_curadj.c ../btree/bt_cursor.c ../btree/bt_delete.c ../btree/bt_method.c ../btree/bt_open.c ../btree/bt_put.c ../btree/bt_rec.c ../btree/bt_reclaim.c ../btree/bt_recno.c ../btree/bt_rsearch.c ../btree/bt_search.c ../btree/bt_split.c ../btree/bt_stat.c ../btree/bt_upgrade.c ../btree/bt_verify.c ../btree/btree_auto.c ../btree/btree_autop.c ../build_vxworks/db_archive/db_archive.c ../build_vxworks/db_checkpoint/db_checkpoint.c ../build_vxworks/db_deadlock/db_deadlock.c ../build_vxworks/db_dump/db_dump.c ../build_vxworks/db_hotbackup/db_hotbackup.c ../build_vxworks/db_load/db_load.c ../build_vxworks/db_printlog/db_printlog.c ../build_vxworks/db_recover/db_recover.c ../build_vxworks/db_stat/db_stat.c ../build_vxworks/db_upgrade/db_upgrade.c ../build_vxworks/db_verify/db_verify.c ../build_vxworks/dbdemo/dbdemo.c ../build_windows/dbkill.cpp ../build_windows/libdb.def ../build_windows/libdb.rc ../build_windows/libdb_tcl.def ../clib/atoi.c ../clib/atol.c ../clib/ctime.c ../clib/getaddrinfo.c ../clib/getcwd.c ../clib/getopt.c ../clib/isalpha.c ../clib/isdigit.c ../clib/isprint.c ../clib/isspace.c ../clib/memcmp.c ../clib/memmove.c ../clib/printf.c ../clib/qsort.c ../clib/raise.c ../clib/rand.c ../clib/snprintf.c ../clib/strcasecmp.c ../clib/strcat.c ../clib/strchr.c ../clib/strdup.c ../clib/strerror.c ../clib/strncat.c ../clib/strncmp.c ../clib/strrchr.c ../clib/strsep.c ../clib/strtol.c ../clib/strtoul.c ../common/crypto_stub.c ../common/db_byteorder.c ../common/db_err.c ../common/db_getlong.c ../common/db_idspace.c ../common/db_log2.c ../common/db_shash.c ../common/mkpath.c ../common/util_arg.c ../common/util_cache.c ../common/util_log.c ../common/util_sig.c ../crypto/aes_method.c ../crypto/crypto.c ../crypto/mersenne/mt19937db.c ../crypto/rijndael/rijndael-alg-fst.c ../crypto/rijndael/rijndael-api-fst.c ../cxx/cxx_db.cpp ../cxx/cxx_dbc.cpp ../cxx/cxx_dbt.cpp ../cxx/cxx_env.cpp ../cxx/cxx_except.cpp ../cxx/cxx_lock.cpp ../cxx/cxx_logc.cpp ../cxx/cxx_mpool.cpp ../cxx/cxx_multi.cpp ../cxx/cxx_seq.cpp ../cxx/cxx_txn.cpp ../db/crdel_auto.c ../db/crdel_autop.c ../db/crdel_rec.c ../db/db.c ../db/db_am.c ../db/db_auto.c ../db/db_autop.c ../db/db_cam.c ../db/db_cds.c ../db/db_conv.c ../db/db_dispatch.c ../db/db_dup.c ../db/db_iface.c ../db/db_join.c ../db/db_meta.c ../db/db_method.c ../db/db_open.c ../db/db_overflow.c ../db/db_ovfl_vrfy.c ../db/db_pr.c ../db/db_rec.c ../db/db_reclaim.c ../db/db_remove.c ../db/db_rename.c ../db/db_ret.c ../db/db_setid.c ../db/db_setlsn.c ../db/db_stati.c ../db/db_truncate.c ../db/db_upg.c ../db/db_upg_opd.c ../db/db_vrfy.c ../db/db_vrfy_stub.c ../db/db_vrfyutil.c ../db185/db185.c ../db_archive/db_archive.c ../db_checkpoint/db_checkpoint.c ../db_codegen/code_capi.c ../db_codegen/code_parse.c ../db_codegen/db_codegen.c ../db_deadlock/db_deadlock.c ../db_dump/db_dump.c ../db_dump185/db_dump185.c ../db_hotbackup/db_hotbackup.c ../db_load/db_load.c ../db_printlog/db_printlog.c ../db_recover/db_recover.c ../db_stat/db_stat.c ../db_upgrade/db_upgrade.c ../db_verify/db_verify.c ../dbinc/btree.h ../dbinc/clock.h ../dbinc/crypto.h ../dbinc/cxx_int.h ../dbinc/db.in ../dbinc/db_185.in ../dbinc/db_am.h ../dbinc/db_cxx.in ../dbinc/db_dispatch.h ../dbinc/db_int.in ../dbinc/db_join.h ../dbinc/db_page.h ../dbinc/db_server_int.h ../dbinc/db_swap.h ../dbinc/db_upgrade.h ../dbinc/db_verify.h ../dbinc/debug.h ../dbinc/fop.h ../dbinc/globals.h ../dbinc/hash.h ../dbinc/hmac.h ../dbinc/lock.h ../dbinc/log.h ../dbinc/mp.h ../dbinc/mutex.h ../dbinc/mutex_int.h ../dbinc/os.h ../dbinc/qam.h ../dbinc/queue.h ../dbinc/region.h ../dbinc/rep.h ../dbinc/repmgr.h ../dbinc/shqueue.h ../dbinc/tcl_db.h ../dbinc/txn.h ../dbinc/win_db.h ../dbinc/xa.h ../dbinc_auto/btree_auto.h ../dbinc_auto/btree_ext.h ../dbinc_auto/clib_ext.h ../dbinc_auto/common_ext.h ../dbinc_auto/crdel_auto.h ../dbinc_auto/crypto_ext.h ../dbinc_auto/db_auto.h ../dbinc_auto/db_ext.h ../dbinc_auto/dbreg_auto.h ../dbinc_auto/dbreg_ext.h ../dbinc_auto/env_ext.h ../dbinc_auto/fileops_auto.h ../dbinc_auto/fileops_ext.h ../dbinc_auto/hash_auto.h ../dbinc_auto/hash_ext.h ../dbinc_auto/hmac_ext.h ../dbinc_auto/lock_ext.h ../dbinc_auto/log_ext.h ../dbinc_auto/mp_ext.h ../dbinc_auto/mutex_ext.h ../dbinc_auto/os_ext.h ../dbinc_auto/qam_auto.h ../dbinc_auto/qam_ext.h ../dbinc_auto/rep_auto.h ../dbinc_auto/rep_ext.h ../dbinc_auto/repmgr_ext.h ../dbinc_auto/rpc_client_ext.h ../dbinc_auto/rpc_server_ext.h ../dbinc_auto/sequence_ext.h ../dbinc_auto/tcl_ext.h ../dbinc_auto/txn_auto.h ../dbinc_auto/txn_ext.h ../dbinc_auto/xa_ext.h ../dbm/dbm.c ../dbreg/dbreg.c ../dbreg/dbreg_auto.c ../dbreg/dbreg_autop.c ../dbreg/dbreg_rec.c ../dbreg/dbreg_stat.c ../dbreg/dbreg_util.c ../env/env_alloc.c ../env/env_config.c ../env/env_failchk.c ../env/env_file.c ../env/env_globals.c ../env/env_method.c ../env/env_name.c ../env/env_open.c ../env/env_recover.c ../env/env_region.c ../env/env_register.c ../env/env_stat.c ../examples_c/bench_001.c ../examples_c/csv/DbRecord.c ../examples_c/csv/code.c ../examples_c/csv/db.c ../examples_c/csv/load.c ../examples_c/csv/load_main.c ../examples_c/csv/query.c ../examples_c/csv/query_main.c ../examples_c/csv/util.c ../examples_c/ex_access.c ../examples_c/ex_apprec/ex_apprec.c ../examples_c/ex_apprec/ex_apprec_auto.c ../examples_c/ex_apprec/ex_apprec_autop.c ../examples_c/ex_apprec/ex_apprec_rec.c ../examples_c/ex_btrec.c ../examples_c/ex_dbclient.c ../examples_c/ex_env.c ../examples_c/ex_lock.c ../examples_c/ex_mpool.c ../examples_c/ex_rep/base/rep_base.c ../examples_c/ex_rep/base/rep_msg.c ../examples_c/ex_rep/base/rep_net.c ../examples_c/ex_rep/common/rep_common.c ../examples_c/ex_rep/mgr/rep_mgr.c ../examples_c/ex_sequence.c ../examples_c/ex_thread.c ../examples_c/ex_tpcb.c ../examples_c/getting_started/example_database_load.c ../examples_c/getting_started/example_database_read.c ../examples_c/getting_started/gettingstarted_common.c ../examples_c/txn_guide/txn_guide.c ../examples_c/txn_guide/txn_guide_inmemory.c ../examples_cxx/AccessExample.cpp ../examples_cxx/BtRecExample.cpp ../examples_cxx/EnvExample.cpp ../examples_cxx/LockExample.cpp ../examples_cxx/MpoolExample.cpp ../examples_cxx/SequenceExample.cpp ../examples_cxx/TpcbExample.cpp ../examples_cxx/excxx_repquote/RepConfigInfo.cpp ../examples_cxx/excxx_repquote/RepQuoteExample.cpp ../examples_cxx/getting_started/MyDb.cpp ../examples_cxx/getting_started/excxx_example_database_load.cpp ../examples_cxx/getting_started/excxx_example_database_read.cpp ../examples_cxx/txn_guide/TxnGuide.cpp ../examples_cxx/txn_guide/TxnGuideInMemory.cpp ../examples_cxx/wce_tpcb/TpcbExample.cpp ../examples_cxx/wce_tpcb/TpcbUI.cpp ../examples_cxx/wce_tpcb/wce_tpcb.rc ../fileops/fileops_auto.c ../fileops/fileops_autop.c ../fileops/fop_basic.c ../fileops/fop_rec.c ../fileops/fop_util.c ../hash/hash.c ../hash/hash_auto.c ../hash/hash_autop.c ../hash/hash_conv.c ../hash/hash_dup.c ../hash/hash_func.c ../hash/hash_meta.c ../hash/hash_method.c ../hash/hash_open.c ../hash/hash_page.c ../hash/hash_rec.c ../hash/hash_reclaim.c ../hash/hash_stat.c ../hash/hash_stub.c ../hash/hash_upgrade.c ../hash/hash_verify.c ../hmac/hmac.c ../hmac/sha1.c ../hsearch/hsearch.c ../libdb_java/db_java_wrap.c ../lock/lock.c ../lock/lock_deadlock.c ../lock/lock_failchk.c ../lock/lock_id.c ../lock/lock_list.c ../lock/lock_method.c ../lock/lock_region.c ../lock/lock_stat.c ../lock/lock_stub.c ../lock/lock_timer.c ../lock/lock_util.c ../log/log.c ../log/log_archive.c ../log/log_compare.c ../log/log_debug.c ../log/log_get.c ../log/log_method.c ../log/log_put.c ../log/log_stat.c ../mp/mp_alloc.c ../mp/mp_bh.c ../mp/mp_fget.c ../mp/mp_fmethod.c ../mp/mp_fopen.c ../mp/mp_fput.c ../mp/mp_fset.c ../mp/mp_method.c ../mp/mp_mvcc.c ../mp/mp_region.c ../mp/mp_register.c ../mp/mp_resize.c ../mp/mp_stat.c ../mp/mp_sync.c ../mp/mp_trickle.c ../mutex/mut_alloc.c ../mutex/mut_failchk.c ../mutex/mut_fcntl.c ../mutex/mut_method.c ../mutex/mut_pthread.c ../mutex/mut_region.c ../mutex/mut_stat.c ../mutex/mut_stub.c ../mutex/mut_tas.c ../mutex/mut_win32.c ../mutex/test_mutex.c ../os/os_abort.c ../os/os_abs.c ../os/os_alloc.c ../os/os_clock.c ../os/os_config.c ../os/os_dir.c ../os/os_errno.c ../os/os_fid.c ../os/os_flock.c ../os/os_fsync.c ../os/os_fzero.c ../os/os_getenv.c ../os/os_handle.c ../os/os_map.c ../os/os_method.c ../os/os_mkdir.c ../os/os_oflags.c ../os/os_open.c ../os/os_pid.c ../os/os_region.c ../os/os_rename.c ../os/os_root.c ../os/os_rpath.c ../os/os_rw.c ../os/os_seek.c ../os/os_sleep.c ../os/os_spin.c ../os/os_stat.c ../os/os_tmpdir.c ../os/os_truncate.c ../os/os_uid.c ../os/os_unlink.c ../os/os_yield.c ../os_brew/ctime.c ../os_brew/fclose.c ../os_brew/fgetc.c ../os_brew/fgets.c ../os_brew/fopen.c ../os_brew/fwrite.c ../os_brew/getcwd.c ../os_brew/globals.c ../os_brew/localtime.c ../os_brew/os_abort.c ../os_brew/os_abs.c ../os_brew/os_config.c ../os_brew/os_dir.c ../os_brew/os_errno.c ../os_brew/os_handle.c ../os_brew/os_mkdir.c ../os_brew/os_oflags.c ../os_brew/os_open.c ../os_brew/os_pid.c ../os_brew/os_rename.c ../os_brew/os_rw.c ../os_brew/os_seek.c ../os_brew/os_sleep.c ../os_brew/os_stat.c ../os_brew/os_truncate.c ../os_brew/os_unlink.c ../os_brew/time.c ../os_qnx/os_qnx_open.c ../os_s60/os_config.c ../os_vxworks/os_vx_abs.c ../os_vxworks/os_vx_config.c ../os_vxworks/os_vx_map.c ../os_vxworks/os_vx_rpath.c ../os_windows/ce_ctime.c ../os_windows/ce_time.c ../os_windows/os_abs.c ../os_windows/os_clock.c ../os_windows/os_config.c ../os_windows/os_dir.c ../os_windows/os_errno.c ../os_windows/os_fid.c ../os_windows/os_flock.c ../os_windows/os_fsync.c ../os_windows/os_getenv.c ../os_windows/os_handle.c ../os_windows/os_map.c ../os_windows/os_mkdir.c ../os_windows/os_open.c ../os_windows/os_rename.c ../os_windows/os_rw.c ../os_windows/os_seek.c ../os_windows/os_sleep.c ../os_windows/os_spin.c ../os_windows/os_stat.c ../os_windows/os_truncate.c ../os_windows/os_unlink.c ../os_windows/os_yield.c ../qam/qam.c ../qam/qam_auto.c ../qam/qam_autop.c ../qam/qam_conv.c ../qam/qam_files.c ../qam/qam_method.c ../qam/qam_open.c ../qam/qam_rec.c ../qam/qam_stat.c ../qam/qam_stub.c ../qam/qam_upgrade.c ../qam/qam_verify.c ../rep/rep_auto.c ../rep/rep_autop.c ../rep/rep_backup.c ../rep/rep_elect.c ../rep/rep_lease.c ../rep/rep_log.c ../rep/rep_method.c ../rep/rep_record.c ../rep/rep_region.c ../rep/rep_stat.c ../rep/rep_stub.c ../rep/rep_util.c ../rep/rep_verify.c ../repmgr/repmgr_elect.c ../repmgr/repmgr_method.c ../repmgr/repmgr_msg.c ../repmgr/repmgr_net.c ../repmgr/repmgr_posix.c ../repmgr/repmgr_queue.c ../repmgr/repmgr_sel.c ../repmgr/repmgr_stat.c ../repmgr/repmgr_stub.c ../repmgr/repmgr_util.c ../repmgr/repmgr_windows.c ../rpc_client/client.c ../rpc_client/gen_client.c ../rpc_client/gen_client_ret.c ../rpc_server/c/db_server_proc.c ../rpc_server/c/db_server_util.c ../rpc_server/cxx/db_server_cxxproc.cpp ../rpc_server/cxx/db_server_cxxutil.cpp ../sequence/seq_stat.c ../sequence/sequence.c ../tcl/tcl_compat.c ../tcl/tcl_db.c ../tcl/tcl_db_pkg.c ../tcl/tcl_dbcursor.c ../tcl/tcl_env.c ../tcl/tcl_internal.c ../tcl/tcl_lock.c ../tcl/tcl_log.c ../tcl/tcl_mp.c ../tcl/tcl_rep.c ../tcl/tcl_seq.c ../tcl/tcl_txn.c ../tcl/tcl_util.c ../test_micro/SOURCE/b_curalloc.c ../test_micro/SOURCE/b_curwalk.c ../test_micro/SOURCE/b_del.c ../test_micro/SOURCE/b_get.c ../test_micro/SOURCE/b_load.c ../test_micro/SOURCE/b_open.c ../test_micro/SOURCE/b_put.c ../test_micro/SOURCE/b_recover.c ../test_micro/SOURCE/b_txn.c ../test_micro/SOURCE/b_txn_write.c ../test_micro/SOURCE/b_workload.c ../test_micro/SOURCE/inmem.c ../test_micro/SOURCE/uname.c ../txn/txn.c ../txn/txn_auto.c ../txn/txn_autop.c ../txn/txn_chkpt.c ../txn/txn_failchk.c ../txn/txn_method.c ../txn/txn_rec.c ../txn/txn_recover.c ../txn/txn_region.c ../txn/txn_stat.c ../txn/txn_util.c ../xa/xa.c ../xa/xa_db.c ../xa/xa_map.c ../xa/xa_stub.c