cscope 15 $HOME/berkeleydb/db-4.7.25/dist 0005133041 @../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_com_isde __P (( DBC *, DBT *, PAGE *, *)); 24 __bam_cch __P (( DBC *, DBT *, u_t32_t , )); 25 __bam_mge __P (( DBC *, 26 DBC *, u_t32_t , DBT *, DB_COMPACT *,*)); 27 __bam_mge_ __P (( DBC *, DBC *, , DB_COMPACT *, *)); 28 __bam_mge_ges __P (( DBC *, DBC *, DB_COMPACT *)); 29 __bam_mge_cds __P (( DBC *, DBC*, u_t32_t , DB_COMPACT *)); 30 __bam_un__ovow __P (( DBC *, PAGE *, DB_COMPACT *)); 31 __bam_un_ovow __P (( DBC *, 32 db_pgno_t , db_pgno_t, DB_COMPACT *)); 33 __bam_un_ge __P (( DBC *, PAGE **, )); 34 __bam_un_ro_ge __P (( DBC *, 35 PAGE *, u_t32_t , DB_COMPACT *)); 37 #ifde HAVE_FTRUNCATE 38 __bam__li __P (( DB *, DB_THREAD_INFO *, DB_TXN *)); 39 __bam_vekey __P (( DBC *, , DBT *)); 40 __bam_tup_li __P (( DB *, db_pgli_t *, u_t32_t )); 41 __bam_un_ __P (( DB *, 42 DB_THREAD_INFO *, DB_TXN *, DB_COMPACT *)); 45 #SAVE_START \ 47 ve_da = * c_da ; \ 48 t = `__db_tcy ( v , \ 49 & ve_t , cut . da , cut. size , \ 50 & ve_t . da , &ve_t. un ); \ 51 } 0) ) 58 #RESTORE_START \ 60 c_da -> com_ges_ = \ 61 ve_da . com_ges_ ; \ 62 c_da -> com_vs = ve_da .compact_levels; \ 63 c_da -> com_un = ve_da .compact_truncate; \ 64 t = `__db_tcy ( v , & cut , \ 65 ve_t . da , save_t. size , \ 66 & cut . da , &cut. un ); \ 67 } 0) ) 75 $__bam_com ( dbp , , txn , t , , c_da , ags , d ) 76 DB * dbp ; 77 DB_THREAD_INFO * ; 78 DB_TXN * txn ; 79 DBT * t , * ; 80 DB_COMPACT * c_da ; 81 u_t32_t ags ; 82 DBT * d ; 84 DBC * dbc ; 85 DBT cut , ve_t ; 86 DB_COMPACT ve_da ; 87 ENV * v ; 88 u_t32_t ; 89 ddlock , isde , t , , t_t , txn_lol ; 91 #ifde HAVE_FTRUNCATE 92 db_pgli_t * li ; 93 db_pgno_t ϡ_pgno ; 94 u_t32_t ms , und ; 97 v = dbp ->env; 99 `memt (& cut , 0, (current)); 100 `memt (& ve_t , 0, (save_start)); 101 dbc = NULL ; 102 = 0; 103 ddlock = isde = t = = 0; 105 #ifde HAVE_FTRUNCATE 106 li = NULL ; 107 ϡ_pgno = 0; 108 ms = und = 0; 116 i( t ! NULL && ( t = `__db_tcy ( v , 117 & cut , t -> da , s-> size , 118 & cut . da , &cut. un )) != 0) 119 ( t ); 121 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) 122 txn_lol = 1; 124 txn_lol = 0; 125 i(! `LF_ISSET ( DB_FREE_SPACE | DB_FREELIST_ONLY )) 126 no_ ; 127 i( `LF_ISSET ( DB_FREELIST_ONLY )) 128 `LF_SET ( DB_FREE_SPACE ); 130 #ifde HAVE_FTRUNCATE 132 i( txn_lol && ( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 133 r ; 135 i(( t = `__db__un ( dbp , , 136 txn , ags , c_da , & li , & ms , & ϡ_pgno )) != 0) { 137 `LF_CLR ( DB_FREE_SPACE ); 138 ; 142 i( ms =0 && `LF_ISSET ( DB_FREELIST_ONLY )) { 143 t = 0; 144 `LF_CLR ( DB_FREE_SPACE ); 145 ; 147 i(( t = `__bam_tup_li ( dbp , li , ms )) != 0) { 149 i( t = EBUSY ) 150 t = 0; 154 : i( txn_lol ) { 155 i(( t_t = `__txn_comm ( txn , DB_TXN_NOSYNC )!0 && t == 0) 156 t = t_t ; 157 txn = NULL ; 159 i( t != 0) 160 r ; 163 und = c_da -> com_ges_und ; 164 i( `LF_ISSET ( DB_FREELIST_ONLY )) 165 de ; 175 no_ : 176 = dbp -> pgsize - SIZEOF_PAGE ; 177 i( c_da -> com_f͔ != 0) { 178 * c_da -> com_f͔ ; 179 /= 100; 182 = ( dbp -> pgsize - SIZEOF_PAGE ) - factor; 184 i( c_da -> com_ges == 0) 185 c_da -> com_ges = DB_MAX_PAGES ; 188 ddlock = 0; 190 SAVE_START ; 191 i( t != 0) 194 i( txn_lol ) { 195 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 198 i( c_da -> com_timeout != 0 && 199 ( t = `__txn_t_timeout ( txn , 200 c_da -> com_timeout , DB_SET_LOCK_TIMEOUT )) != 0) 201 r ; 204 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 205 r ; 207 i(( t = `__bam_com_t ( dbc , & cut , , , 208 & , c_da , & isde )) == 209 DB_LOCK_DEADLOCK && txn_lol ) { 215 ddlock = 1; 216 c_da -> com_ddlock ++; 217 RESTORE_START ; 220 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 221 t = t_t ; 223 r : i( txn_lol && txn ! NULL ) { 224 i( t =0 && ddlock == 0) 225 t = `__txn_comm ( txn , DB_TXN_NOSYNC ); 226 i(( t_t = `__txn_abt ( txn )!0 && t == 0) 227 t = t_t ; 228 txn = NULL ; 230 } t =0 && ! isde ); 232 i( t =0 && d ! NULL ) 233 t = `__db_tcy ( v , d , cut . da , cut. size , 234 & d -> da , &d-> un ); 235 i( cut . da ! NULL ) 236 `__os_ ( v , cut . da ); 237 i( ve_t . da ! NULL ) 238 `__os_ ( v , ve_t . da ); 240 #ifde HAVE_FTRUNCATE 247 de : i( `LF_ISSET ( DB_FREE_SPACE )) { 248 DBMETA * ma ; 249 db_pgno_t pgno ; 251 pgno = PGNO_BASE_MD ; 252 isde = 1; 253 i( t =0 && ! `LF_ISSET ( DB_FREELIST_ONLY && ( t_t = 254 `__memp_fg ( dbp -> mpf , & pgno , , txn , 0, & ma )) == 0) { 255 isde = ma -> = PGNO_INVALID ; 256 t = `__memp_ut ( dbp -> mpf , , ma , dbp-> iܙy ); 259 i(! isde ) 260 t = `__bam_un_ ( dbp , , txn , c_da ); 263 i( li ! NULL ) 264 `__os_ ( v , li ); 266 i(( t_t = 267 `__memp_fg ( dbp -> mpf , & pgno , , txn , 0, & ma )) == 0) { 268 c_da -> com_ges_und = 269 und + ϡ_pgno - ma ->last_pgno; 270 i(( t_t = `__memp_ut ( dbp -> mpf , , 271 ma , dbp -> iܙy )!0 && t == 0) 272 t = t_t ; 273 } i( t == 0) 274 t = t_t ; 276 i(( t_t = 277 `__bam__li ( dbp , , txn )!0 && t == 0) 278 t_t = t ; 282 ( t ); 283 } } 290 #CS_READ 0 ) 291 #CS_PARENT 1 ) 292 #CS_NEXT 2 ) 293 #CS_NEXT_WRITE 3 ) 294 #CS_DEL 4 ) 295 #CS_START 5 ) 296 #CS_GETRECNO 0x80 ) 299 $__bam_cch ( dbc , t , sag , v ) 300 DBC * dbc ; 301 DBT * t ; 302 u_t32_t sag ; 303 v ; 305 BTREE_CURSOR * ; 306 n_ud , t ; 308 = ( BTREE_CURSOR *) dbc -> ; 310 i( dbc -> dbty = DB_RECNO ) { 312 i( `FLD_ISSET ( sag , CS_GETRECNO )) { 313 i( t = NULL || s-> size == 0) 314 -> o = 1; 315 i(( t = 316 `__m_gno ( dbc , t , & -> o , 0)) != 0) 317 ( t ); 318 `FLD_CLR ( sag , CS_GETRECNO ); 320 sag ) { 321 CS_READ : 322 sag = SR_READ ; 324 CS_NEXT : 325 sag = SR_PARENT | SR_READ ; 327 CS_START : 328 v = LEAFLEVEL ; 330 CS_DEL : 331 CS_NEXT_WRITE : 332 sag = SR_STACK ; 334 CS_PARENT : 335 sag = SR_PARENT | SR_WRITE ; 338 ( `__v_nic ( dbc -> v , EINVAL )); 340 i(( t = `__bam_rch ( dbc , 341 & -> o , sag , v , & n_ud )) != 0) 342 ( t ); 344 -> o --> c -> dx ; 346 `FLD_CLR ( sag , CS_GETRECNO ); 347 sag ) { 348 CS_READ : 349 sag = SR_READ | SR_DUPFIRST ; 351 CS_DEL : 352 sag = SR_DEL ; 354 CS_NEXT : 355 sag = SR_NEXT ; 357 CS_NEXT_WRITE : 358 sag = SR_NEXT | SR_WRITE ; 360 CS_START : 361 sag = SR_START | SR_WRITE ; 363 CS_PARENT : 364 sag = SR_PARENT | SR_WRITE ; 367 ( `__v_nic ( dbc -> v , EINVAL )); 369 i( t = NULL || s-> size == 0) 370 `FLD_SET ( sag , SR_MIN ); 372 i(( t = `__bam_ch ( dbc , 373 -> ro , t , sag , v , NULL , & n_ud )) != 0) 374 ( t ); 378 } } 387 $__bam_com_t ( dbc , t , , , p , c_da , dڕ ) 388 DBC * dbc ; 389 DBT * t , * ; 390 u_t32_t ; 391 * p ; 392 DB_COMPACT * c_da ; 393 * dڕ ; 395 BTREE_CURSOR * , * n ; 396 DB * dbp ; 397 DBC * ndbc ; 398 DB_LOCK nock ; 399 DB_MPOOLFILE * dbmp ; 400 ENV * v ; 401 EPG * g ; 402 PAGE * pg , * g , * g ; 403 db_pgno_t gno ; 404 db_o_t xt_o ; 405 u_t32_t sag ; 406 check_dups , check_unc , isde , v ; 407 mged , ry , xt_p , pgs_de , t , t_t , tde ; 409 #ifdef DEBUG 410 #CTRACE ( dbc , loti , t , t , f ) do { \ 411 DBT __a ; \ 412 `DB_SET_DBT ( __a , t , ` (t)); \ 413 `DEBUG_LWRITE ( \ 414 dbc , (dbc)-> txn , loti , & __a , t , f ) \ 415 } 0) ) 416 #PTRACE ( dbc , loti , p , t , f ) do { \ 417 __buf [32]; \ 418 () `tf ( __buf , \ 419 ( __buf ), "pgno: %lu", ( u_lg ) p ); \ 420 `CTRACE ( dbc , loti , __buf , t , f ); \ 421 } 0) ) 423 #CTRACE ( dbc , loti , t , t , f ) ) 424 #PTRACE ( dbc , loti , p , t , f ) ) 427 ndbc = NULL ; 428 pg = NULL ; 429 g = NULL ; 430 isde = 0; 431 tde = 0; 432 pgs_de = 0; 433 xt_o = 0; 434 xt_p = 0; 435 `LOCK_INIT ( nock ); 436 check_unc = c_da -> com_un ! PGNO_INVALID ; 437 check_dups = (! `F_ISSET ( dbc , DBC_OPD ) && 438 `F_ISSET ( dbc -> dbp , DB_AM_DUP )|| check_unc ; 440 dbp = dbc ->dbp; 441 v = dbp ->env; 442 dbmp = dbp -> mpf ; 443 = ( BTREE_CURSOR *) dbc -> ; 446 i(( t = `__bam_cch ( dbc , 447 t , CS_READ | CS_GETRECNO , LEAFLEVEL )) != 0) { 449 i( t = DB_NOTFOUND ) 450 t = 0; 451 isde = 1; 452 r ; 459 pg = -> c -> ge ; 460 -> c -> ge = NULL ; 461 xt_o = -> o ; 462 xt : 479 ( gno = `NEXT_PGNO ( pg )! PGNO_INVALID ) { 480 c_da -> com_ges_exame ++; 481 `PTRACE ( dbc , "Next", `PGNO ( pg ), t , 0); 484 i( xt_p == 1 && 485 dbc -> dbty ! DB_RECNO && `NUM_ENT ( pg ) != 0) { 486 i(( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , pg , 487 0, t , &t-> da , &t-> un )) != 0) 488 r ; 490 xt_o + `NUM_ENT ( pg ); 491 i( `P_FREESPACE ( dbp , pg > || 492 ( check_unc && `PGNO ( pg > c_da -> com_un )) 494 i( ! NULL && st-> size > 0) { 495 i(( t = `__bam_com_isde ( dbc , 496 , pg , & isde )) != 0) 497 r ; 498 i( isde ) 499 de ; 507 -> o + `NUM_ENT ( pg ); 508 xt_p = 1; 509 tde = pgs_de ; 510 `PTRACE ( dbc , "Dups", `PGNO ( pg ), t , 0); 511 i( check_dups && ( t = `__bam_com_dups ( 512 dbc , & pg , , 0, c_da , & pgs_de )) != 0) 513 r ; 514 gno = `NEXT_PGNO ( pg ); 515 i(( t = `__memp_ut ( dbmp , 516 dbc -> thad_fo , pg , dbc-> iܙy )) != 0) 517 r ; 518 pg = NULL ; 523 i(( t = `__db_lg ( dbc , 524 tde = pgs_de ? LCK_COUPLE_ALWAYS : LCK_COUPLE , 525 gno , DB_LOCK_READ , 0, & -> c -> lock )) != 0) 526 r ; 527 i(( t = `__memp_fg ( dbmp , & gno , 528 dbc -> thad_fo , dbc-> txn , 0, & pg )) != 0) 529 r ; 542 i(( ry = `NUM_ENT ( pg )) != 0) { 543 xt_p = 0; 545 i( dbc -> dbty = DB_RECNO ) { 546 i(( t = `__db_tcy ( dbp -> v , t , 547 & -> o , (cp->recno), 548 & t -> da , &t-> un )) != 0) 549 r ; 550 } i( t -> size == 0 && 551 ( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , pg , 552 0, t , &t-> da , &t-> un )) != 0) 553 r ; 555 i( gno = PGNO_INVALID ) { 557 `PTRACE ( dbc , "GoDe", `PGNO ( pg ), t , 0); 558 i( check_dups && ( t = `__bam_com_dups ( dbc , 559 & pg , , 0, c_da , & pgs_de )) != 0) 560 r ; 561 c_da -> com_ges_exame ++; 562 isde = 1; 563 de ; 568 i(( t = `__memp_ut ( dbmp , dbc -> thad_fo , pg , dbc-> iܙy )) != 0) 569 r ; 570 i(( t = `__LPUT ( dbc , -> c -> lock )) != 0) 571 r ; 572 `BT_STK_CLR ( ); 573 pg = NULL ; 597 i( ry == 0) { 598 `CTRACE ( dbc , "Emy", "", t , 0); 599 i( xt_p == 1) 600 sag = CS_NEXT_WRITE ; 602 sag = CS_DEL ; 603 i(( t = `__bam_cch ( dbc , t , sag , LEAFLEVEL )) != 0) 604 r ; 606 pg = -> c -> ge ; 608 i( `NUM_ENT ( pg ) != 0) 609 gno = `PGNO ( pg ); 611 gno = `NEXT_PGNO ( pg ); 613 i( `PGNO ( pg = -> ro ) 614 isde = 1; 616 i(( t = `__bam_dges ( dbc , 0, 0)) != 0) 617 r ; 618 c_da -> com_ges_ ++; 619 xt_no_a ; 622 xt_ge ; 626 i(* p ) { 627 `CTRACE ( dbc , "Sn", "", t , 0); 628 i( ndbc = NULL && ( t = `__dbc_dup ( dbc , &ndbc, 0)) != 0) 629 r ; 630 n = ( BTREE_CURSOR *) ndbc -> ; 631 n -> o = xt_o ; 638 i(( t = `__bam_cch ( ndbc , t , CS_NEXT_WRITE , 0)) != 0) 639 r ; 645 v = `LEVEL ( n -> -> ge ); 646 sag = CS_START ; 647 i(( t = `__bam_cch ( dbc , t , sag , v )) != 0) 648 r ; 649 pg = -> c -> ge ; 651 * p = 0; 659 i( `NUM_ENT ( pg ) == 0 || 660 ( dbc -> dbty = DB_RECNO && 661 `NEXT_PGNO ( -> c -> ge ! `PGNO ( n ->csp->page))) { 662 gno = `PGNO ( pg ); 663 xt_ge ; 666 i( check_unc && `PGNO ( pg > c_da -> com_un ) { 667 pgs_de ++; 669 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 670 r1 ; 672 i(( t = `__memp_dty ( dbp -> mpf , & n -> c -> ge , 673 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 674 r1 ; 675 `PTRACE ( dbc , "SDups", `PGNO ( n -> c -> ge ), t , 0); 676 i( check_dups && ( t = `__bam_com_dups ( ndbc , 677 & n -> c -> ge , , 1, c_da , & pgs_de )) != 0) 678 r1 ; 681 i( `PGNO ( n -> c -> ge =n-> ro ) 682 de ; 684 i(( t = `__memp_dty ( dbp -> mpf , & -> c -> ge , 685 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 686 r1 ; 687 pg = -> c -> ge ; 688 gno = `NEXT_PGNO ( pg ); 689 `PTRACE ( dbc , "SDups", `PGNO ( pg ), t , 0); 690 i( check_dups && ( t = 691 `__bam_com_dups ( dbc , & -> c -> ge , 692 , 1, c_da , & pgs_de )) != 0) 693 r1 ; 701 i( `P_FREESPACE ( dbp , pg < || 702 -> c [-1]. dx ! `NUM_ENT (->c[-1]. ge ) - 1) 703 xt_ge ; 708 mged = 0; 709 g = -> ;pg !-> c ;pg++) { 710 i( `PGNO ( g -> ge = -> ro ) 712 `PTRACE ( dbc , "PMge", `PGNO ( g -> ge ), t , 0); 713 i(( t = `__bam_mge_ ( dbc , 714 ndbc , `LEVEL ( g -> ge ), c_da , & mged )) != 0) 715 r1 ; 716 i( mged ) 721 i( mged ) { 722 pgs_de ++; 723 i( -> c -> ge = NULL ) 724 ded ; 725 gno = `PGNO ( pg ); 726 xt_ge ; 728 `PTRACE ( dbc , "SMge", `PGNO ( -> c -> ge ), t , 0); 729 gno = `NEXT_PGNO ( n -> c -> ge ); 730 i(( t = `__bam_mge ( dbc , 731 ndbc , , , c_da , & isde )) != 0) 732 r1 ; 733 pgs_de ++; 738 i( -> c -> ge = NULL ) 739 ded ; 740 -> o + `NUM_ENT ( pg ); 743 i( gno ! `NEXT_PGNO ( pg )) { 744 gno = `NEXT_PGNO ( pg ); 745 xt_ge ; 749 `CTRACE ( dbc , "Sib", "", t , 0); 750 i(( t = 751 `__bam_cch ( dbc , t , CS_PARENT , LEAFLEVEL )) != 0) 752 r ; 754 pg = -> c -> ge ; 755 gno = `PGNO ( pg ); 758 i(( ry = `NUM_ENT ( pg )) == 0) 759 xt_ge ; 761 i(( t = `__memp_dty ( dbp -> mpf , & -> c -> ge , 762 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 763 r1 ; 764 pg = -> c -> ge ; 766 gno = `NEXT_PGNO ( pg ); 769 `PTRACE ( dbc , "SibDup", `PGNO ( pg ), t , 0); 770 i( check_dups && ( t = 771 `__bam_com_dups ( dbc , & -> c -> ge , 772 , 1, c_da , & pgs_de )) != 0) 773 r1 ; 774 pg = -> c -> ge ; 777 i( `PGNO ( pg = -> ro ) 778 r1 ; 779 `DB_ASSERT ( v , -> c - cp-> == 1); 781 i( check_unc && `PGNO ( pg > c_da -> com_un ) { 782 pgs_de ++; 784 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 785 r1 ; 789 i( `P_FREESPACE ( dbp , pg < ) 790 xt_ge ; 793 i( ndbc ! NULL && ( t = `__dbc_o (ndbc)) != 0) 794 r1 ; 795 i(( t = `__dbc_dup ( dbc , & ndbc , DB_POSITION )) != 0) 796 r1 ; 797 n = ( BTREE_CURSOR *) ndbc -> ; 803 n -> o + `NUM_ENT ( pg ); 807 ! isde && gno ! PGNO_INVALID && 808 `P_FREESPACE ( dbp , pg > && c_da -> com_ges != 0) { 817 i( -> c [-1]. dx = `NUM_ENT (->c[-1]. ge ) - 1) { 818 * p = 1; 819 gno = `PGNO ( pg ); 820 xt_o = -> o ; 821 xt_ge ; 825 i(( t = `__db_lg ( dbc , LCK_COUPLE , 826 gno , DB_LOCK_WRITE , 0, & n -> lock )) != 0) 827 r1 ; 828 i(( t = `__memp_fg ( dbmp , & gno , 829 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & g )) != 0) 830 r1 ; 833 i(( t = `__memp_fg ( dbmp , & `PGNO ( -> c [-1]. ge ), 834 dbc -> thad_fo , dbc-> txn , 0, & g )) != 0) 835 r1 ; 836 `BT_STK_PUSH ( v , n , g , 837 -> c [-1]. dx + 1, nock , DB_LOCK_NG , t ); 838 i( t != 0) 839 r1 ; 842 `BT_STK_ENTER ( v , n , g , 0,-> lock , DB_LOCK_WRITE , t ); 844 `LOCK_INIT ( n -> lock ); 845 g = NULL ; 847 c_da -> com_ges_exame ++; 849 `PTRACE ( dbc , "MDups", `PGNO ( n -> c -> ge ), t , 0); 850 i( check_dups && ( t = `__bam_com_dups ( ndbc , 851 & n -> c -> ge , , 1, c_da , & pgs_de )) != 0) 852 r1 ; 854 gno = `NEXT_PGNO ( n -> c -> ge ); 859 `PTRACE ( dbc , "Mge", `PGNO ( -> c -> ge ), t , 0); 860 i(( t = `__bam_mge ( dbc , 861 ndbc , , , c_da , & isde )) != 0) 862 r1 ; 864 pgs_de ++; 870 i( -> c -> ge = NULL ) 871 ded ; 873 i( gno ! `NEXT_PGNO ( pg )) 878 gno = `NEXT_PGNO ( pg ); 879 -> o + `NUM_ENT ( pg ); 880 xt_o = -> o ; 882 xt_ge : 883 i(( t = `__bam_kl ( dbc , pgs_de =0 ? STK_NOLOCK : 0)) != 0) 884 r1 ; 885 i( ndbc ! NULL && 886 ( t = `__bam_kl ( ndbc , pgs_de =0 ? STK_NOLOCK : 0)) != 0) 887 r1 ; 889 xt_no_a : 890 pg = NULL ; 892 i( gno = PGNO_INVALID || c_da -> com_ges == 0) 893 isde = 1; 894 i(! isde ) { 899 i( pgs_de !0 && * p ) { 900 ded : i((( t = `__bam_kl ( ndbc , 0)) != 0 || 901 ( t = `__dbc_o ( ndbc )) != 0)) 902 r ; 903 * dڕ = 0; 908 -> o = xt_o ; 909 i(( t = `__db_lg ( dbc , 910 pgs_de ? LCK_COUPLE_ALWAYS : LCK_COUPLE , 911 gno , DB_LOCK_READ , 0, & -> c -> lock )) != 0 || 912 ( t = `__memp_fg ( dbmp , & gno , 913 dbc -> thad_fo , dbc-> txn , 0, & pg )) != 0) 914 r ; 915 xt_p = 1; 916 xt ; 919 de : 922 r1 : pg = NULL ; 924 r : 928 sag = STK_CLRDBC ; 929 i( dbc -> txn ! NULL && t != 0) 930 sag | STK_PGONLY ; 931 i( dbc ! NULL && 932 ( t_t = `__bam_kl ( dbc , sag )!0 && t == 0) 933 t = t_t ; 934 i( ndbc ! NULL ) { 935 i(( t_t = `__bam_kl ( ndbc , sag )!0 && t == 0) 936 t = t_t ; 937 i(( t_t = `__dbc_o ( ndbc )!0 && t == 0) 938 t = t_t ; 941 i( pg ! NULL && ( t_t = 942 `__memp_ut ( dbmp , 943 dbc -> thad_fo , pg , dbc-> iܙy !0&& t == 0) 944 t = t_t ; 945 i( g ! NULL && ( t_t = 946 `__memp_ut ( dbmp , 947 dbc -> thad_fo , g , dbc-> iܙy !0&& t == 0) 948 t = t_t ; 950 * dڕ = isde ; 952 ( t ); 953 } } 959 $__bam_mge ( dbc , ndbc , , , c_da , dڕ ) 960 DBC * dbc , * ndbc ; 961 u_t32_t ; 962 DBT * ; 963 DB_COMPACT * c_da ; 964 * dڕ ; 966 BTREE_CURSOR * , * n ; 967 DB * dbp ; 968 PAGE * pg , * g ; 969 db_dx_t ; 970 t ; 972 dbp = dbc ->dbp; 973 = ( BTREE_CURSOR *) dbc -> ; 974 n = ( BTREE_CURSOR *) ndbc -> ; 975 pg = -> c -> ge ; 976 g = n -> c -> ge ; 978 = `NUM_ENT ( g ); 981 i( == 0) 982 _ge ; 985 i( ! NULL && st-> size != 0) { 986 i(( t = `__bam_com_isde ( dbc , , g , dڕ )) != 0) 987 ( t ); 988 i(* dڕ ) 998 i(( dbc -> dbty = DB_BTREE && 999 n -> c [-1]. dx =0 &&->c[-1]. s != 1) || 1000 ()( `P_FREESPACE ( dbp , pg ) - 1001 (( dbp -> pgsize - `P_OVERHEAD (dbp)) - 1002 `P_FREESPACE ( dbp , g ))< () ) 1003 t = `__bam_mge_cds ( dbc , ndbc , , c_da ); 1005 _ge : t = `__bam_mge_ges ( dbc , ndbc , c_da ); 1007 ( t ); 1008 } } 1011 $__bam_mge_cds ( dbc , ndbc , , c_da ) 1012 DBC * dbc , * ndbc ; 1013 u_t32_t ; 1014 DB_COMPACT * c_da ; 1016 BINTERNAL * bi ; 1017 BKEYDATA * bk , * tmp_bk ; 1018 BTREE * t ; 1019 BTREE_CURSOR * , * n ; 1020 DB * dbp ; 1021 DBT a , b , da , hdr ; 1022 ENV * v ; 1023 EPG * g ; 1024 PAGE * pg , * g ; 1025 db_dx_t adj , dx , , * np , pd ; 1026 t32_t adju ; 1027 u_t32_t 䓥a , nksize , p , size ; 1028 f_dup , is_dup , xt_dup , n_ok , t ; 1029 `size_t (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1031 dbp = dbc ->dbp; 1032 v = dbp ->env; 1033 t = dbp -> bt_ ; 1034 = ( BTREE_CURSOR *) dbc -> ; 1035 n = ( BTREE_CURSOR *) ndbc -> ; 1036 pg = -> c -> ge ; 1037 g = n -> c -> ge ; 1038 `memt (& hdr , 0, (hdr)); 1039 pd = `NUM_ENT ( pg ); 1040 n_ok = 0; 1041 adju = 0; 1042 t = 0; 1043 = `NUM_ENT ( g ); 1045 `DB_ASSERT ( v , != 0); 1048 i( c_da -> com_un ! PGNO_INVALID && 1049 `PGNO ( g > c_da -> com_un ) { 1051 i(( t = `__bam_un_ge ( ndbc , & g , 1)) != 0) 1052 r ; 1055 np = `P_INP ( dbp , g ); 1061 䓥a = `P_FREESPACE ( dbp , pg ); 1063 adj = `TYPE ( g = P_LBTREE ? P_INDX : O_INDX ; 1067 dx = 0; indx < ; indx + adj ) { 1068 bk = `GET_BKEYDATA ( dbp , g , dx ); 1071 size = `BITEM_PSIZE ( bk ); 1074 i( `TYPE ( pg = P_LBTREE ) 1075 size + `BITEM_PSIZE ( `GET_BKEYDATA ( dbp , g , dx + 1)); 1080 n_ok = adj ; 1081 i( `TYPE ( pg = P_LBTREE && 1082 dx < - adj && 1083 np [ dx ] =np[dx + adj ]) { 1086 size +( db_dx_t ); 1087 n_ok ++; 1089 size + `BITEM_PSIZE ( 1090 `GET_BKEYDATA ( dbp , g , dx + n_ok )); 1091 n_ok ++; 1092 } dx + n_ok < && 1093 np [ dx ] =np[dx + n_ok ]); 1096 i( 䓥a < size ) 1104 i(( 䓥a - size < ) { 1105 i( 䓥a - > fa - (䓥a - size )) 1106 dx + n_ok ; 1109 䓥a - size ; 1110 dx + n_ok - adj ; 1114 i( dx == 0) 1115 de ; 1116 i( `TYPE ( pg ! P_LBTREE && TYPEg! P_LDUP ) { 1117 i( dx = ) 1118 ( `__bam_mge_ges ( dbc , ndbc , c_da )); 1119 no_check ; 1131 p = dbp -> pgsize ; 1132 g = & n -> c [-1];pg >n-> ;pg--) 1133 i(( 䓥a = `P_FREESPACE ( dbp , g -> ge )< p ) { 1134 bi = `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx ); 1136 䓥a + `BINTERNAL_PSIZE ( bi -> n ); 1137 i( 䓥a < p ) 1138 p = 䓥a ; 1139 i( g -> dx != 0) 1148 i( dx = ) { 1149 i( n -> c [-1]. dx !0 ||->c[-1]. s == 1 || 1150 `BINTERNAL_PSIZE ( `GET_BINTERNAL ( dbp , 1151 n -> c [-1]. ge , 1)-> n < p ) 1152 ( `__bam_mge_ges ( dbc , ndbc , c_da )); 1153 dx - adj ; 1155 bk = `GET_BKEYDATA ( dbp , g , dx ); 1156 i( dx !0 && `BINTERNAL_SIZE ( bk -> n > p ) { 1157 i( `F_ISSET ( dbc , DBC_OPD )) { 1158 i( dbp -> dup_com = __bam_defcmp ) 1159 func = __bam_defx ; 1161 func = NULL ; 1163 func = t -> bt_efix ; 1165 func = NULL ; 1168 dx !0 && np [dx] =np[dx - adj ]) 1169 dx - adj ; 1171 dx !0 && `BINTERNAL_SIZE ( bk -> n > p ) { 1172 i( `B_TYPE ( bk -> ty ! B_KEYDATA ) 1173 nݻfix ; 1178 i( func = NULL ) 1179 nݻfix ; 1180 tmp_bk = `GET_BKEYDATA ( dbp , g , dx - adj ); 1181 i( `B_TYPE ( tmp_bk -> ty ! B_KEYDATA ) 1182 nݻfix ; 1183 `memt (& a , 0, (a)); 1184 a . size = tmp_bk -> n ; 1185 a . da = tmp_bk ->data; 1186 `memt (& b , 0, (b)); 1187 b . size = bk -> n ; 1188 b . da = bk ->data; 1189 nksize = ( u_t32_t ) `func ( dbp , & a , & b ); 1190 i( `BINTERNAL_PSIZE ( nksize < p ) 1192 nݻfix : 1195 dx - adj ; 1196 } dx !0 && np [dx] =np[dx - adj ]); 1198 bk = `GET_BKEYDATA ( dbp , g , dx ); 1206 i( dx == 0) 1207 de ; 1208 `DB_ASSERT ( v , dx < ); 1211 no_check : is_dup = f_dup = xt_dup = 0; 1212 i(( t = `__memp_dty ( dbp -> mpf , & -> c -> ge , 1213 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0 || 1214 ( t = `__memp_dty ( dbp -> mpf , & n -> c -> ge , 1215 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1216 r ; 1217 pg = -> c -> ge ; 1218 g = n -> c -> ge ; 1219 np = `P_INP ( dbp , g ); 1221 bk = `GET_BKEYDATA ( dbp , g , 0); 1223 i(( `NUM_ENT ( g ) % 2) == 0) { 1224 i( `NUM_ENT ( g > 2 && np [0] ==inp[2]) { 1225 i(! is_dup ) { 1226 f_dup = 1; 1227 is_dup = 1; 1229 f_dup = 0; 1231 xt_dup = 1; 1232 } i( xt_dup ) { 1233 is_dup = 1; 1234 f_dup = 0; 1235 xt_dup = 0; 1237 is_dup = 0; 1240 i( is_dup && ! f_dup && ( pd % 2) == 0) { 1242 i(( t = `__bam_adjdx ( dbc , 1243 pg , pd ,d - P_INDX , 1)) != 0) 1244 r ; 1245 i(! xt_dup ) 1246 is_dup = 0; 1247 } `B_TYPE ( bk -> ty )) { 1248 B_KEYDATA : 1249 hdr . da = bk ; 1250 hdr . size = `SSZA ( BKEYDATA , da ); 1251 da . size = bk -> n ; 1252 da .d bk ->data; 1253 i(( t = `__db_pem ( dbc , pg , pd , 1254 `BKEYDATA_SIZE ( bk -> n ), & hdr , & da )) != 0) 1255 r ; 1257 B_OVERFLOW : 1258 B_DUPLICATE : 1259 da . size = BOVERFLOW_SIZE ; 1260 da .d bk ; 1261 i(( t = `__db_pem ( dbc , pg , pd , 1262 BOVERFLOW_SIZE , & da , NULL )) != 0) 1263 r ; 1266 `__db_rx ( v , 1268 ( u_lg ) `PGNO ( pg )); 1269 t = EINVAL ; 1270 r ; 1272 pd ++; 1273 i( xt_dup && ( `NUM_ENT ( g ) % 2) == 0) { 1274 i(( t = `__bam_adjdx ( ndbc , 1275 g , 0, O_INDX , 0)) != 0) 1276 r ; 1278 i(( t = `__db_dem ( ndbc , 1279 g , 0, `BITEM_SIZE ( bk ))) != 0) 1280 r ; 1282 adju ++; 1283 } -- dx != 0); 1285 `DB_ASSERT ( v , `NUM_ENT ( g ) != 0); 1287 i( adju != 0 && 1288 ( `F_ISSET ( , C_RECNUM || F_ISSET( dbc , DBC_OPD ))) { 1289 `DB_ASSERT ( v , -> c - cp-> = n ->csp -cp->sp); 1290 i( `TYPE ( pg = P_LBTREE ) 1291 adju / P_INDX ; 1292 i(( t = `__bam_adju ( ndbc , - adju )) != 0) 1293 r ; 1295 i(( t = `__bam_adju ( dbc , adju )) != 0) 1296 r ; 1300 i( ndbc -> dbty = DB_BTREE && 1301 ( t = `__bam_pupde ( ndbc , pg )) != 0) 1302 r ; 1304 de : t = `__bam_kl ( ndbc , STK_CLRDBC ); 1306 r : ( t ); 1307 } } 1310 $__bam_mge_ges ( dbc , ndbc , c_da ) 1311 DBC * dbc , * ndbc ; 1312 DB_COMPACT * c_da ; 1314 BTREE_CURSOR * , * n ; 1315 DB * dbp ; 1316 DBT da , hdr ; 1317 DB_MPOOLFILE * dbmp ; 1318 PAGE * pg , * g ; 1319 db_dx_t , * np , * pp ; 1320 db_pgno_t gno ; 1321 u_t8_t * bp ; 1322 u_t32_t n ; 1323 i , v , t ; 1325 `COMPQUIET ( gno , PGNO_INVALID ); 1326 dbp = dbc ->dbp; 1327 dbmp = dbp -> mpf ; 1328 = ( BTREE_CURSOR *) dbc -> ; 1329 n = ( BTREE_CURSOR *) ndbc -> ; 1330 pg = -> c -> ge ; 1331 g = n -> c -> ge ; 1332 `memt (& hdr , 0, (hdr)); 1333 = `NUM_ENT ( g ); 1336 i( == 0) 1337 _ge ; 1339 i(( t = `__memp_dty ( dbp -> mpf , & -> c -> ge , 1340 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0 || 1341 ( t = `__memp_dty ( dbp -> mpf , & n -> c -> ge , 1342 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1343 r ; 1344 pg = -> c -> ge ; 1345 g = n -> c -> ge ; 1346 `DB_ASSERT ( dbp -> v , = `NUM_ENT ( g )); 1349 n = dbp -> pgsize - `HOFFSET ( g ); 1350 i( `DBC_LOGGING ( dbc )) { 1351 hdr . da = g ; 1352 hdr . size = `LOFFSET ( dbp , g ); 1353 da .d( u_t8_t *) g + `HOFFSET (npg); 1354 da . size = n ; 1355 i(( t = `__bam_mge_log ( dbp , 1356 dbc -> txn , & `LSN ( pg ), 0, `PGNO (pg), 1357 & `LSN ( pg ), `PGNO ( g ), &LSNpg), & hdr , & da , 0)) != 0) 1358 r ; 1360 `LSN_NOT_LOGGED ( `LSN ( pg )); 1361 `LSN ( g LSN( pg ); 1362 bp = ( u_t8_t *) pg + `HOFFSET g- n ; 1363 `memy ( bp , ( u_t8_t *) g + `HOFFSET pg), n ); 1366 pp = `P_INP ( dbp , pg + `NUM_ENT (pg); 1367 np = `P_INP ( dbp , g ); 1368 i = 0; i < `NUM_ENT ( g ); i++) 1369 * pp ++ = * np ++ - ( dbp -> pgsize - `HOFFSET ( pg )); 1370 `HOFFSET ( pg - n ; 1371 `NUM_ENT ( pg + i ; 1373 `NUM_ENT ( g ) = 0; 1374 `HOFFSET ( g + n ; 1376 i( `F_ISSET ( , C_RECNUM || F_ISSET( dbc , DBC_OPD )) { 1377 `DB_ASSERT ( dbp -> v , -> c - cp-> = n ->csp -cp->sp); 1378 i( `TYPE ( pg = P_LBTREE ) 1379 i / P_INDX ; 1380 i(( t = `__bam_adju ( ndbc , - i )) != 0) 1381 r ; 1383 i(( t = `__bam_adju ( dbc , i )) != 0) 1384 r ; 1387 _ge : 1397 i( `PGNO ( n -> -> ge =n-> ro && 1398 `NUM_ENT ( n -> -> ge ) == 2) { 1399 i(( t = `__bam_kl ( dbc , STK_CLRDBC | STK_PGONLY )) != 0) 1400 r ; 1401 v = `LEVEL ( n -> -> ge ); 1402 gno = `PGNO ( n -> c [-1]. ge ); 1404 v = 0; 1405 i( c_da -> com_un > `PGNO ( g )) 1406 c_da -> com_un --; 1407 i(( t = `__bam_dges ( ndbc , 1408 0, ndbc -> dbty = DB_RECNO ? 0 : 1)) != 0) 1409 r ; 1410 g = NULL ; 1411 c_da -> com_ges_ ++; 1412 c_da -> com_ges --; 1413 i( v != 0) { 1414 i(( t = `__memp_fg ( dbmp , & n -> ro , 1415 dbc -> thad_fo , dbc-> txn , 0, & g )) != 0) 1416 r ; 1417 i( v = `LEVEL ( g )) 1418 v = 0; 1419 i(( t = `__memp_ut ( dbmp , 1420 dbc -> thad_fo , g , dbc-> iܙy )) != 0) 1421 r ; 1422 g = NULL ; 1423 i( v != 0) { 1424 c_da -> com_vs ++; 1425 c_da -> com_ges_ ++; 1426 i( c_da -> com_un > gno ) 1427 c_da -> com_un --; 1428 i( c_da -> com_ges != 0) 1429 c_da -> com_ges --; 1433 r : ( t ); 1434 } } 1441 $__bam_mge_ ( dbc , ndbc , v , c_da , mged ) 1442 DBC * dbc , * ndbc ; 1443 v ; 1444 DB_COMPACT * c_da ; 1445 * mged ; 1447 BINTERNAL bi , * b , * f ; 1448 BTREE_CURSOR * , * n ; 1449 DB * dbp ; 1450 DBT da , hdr ; 1451 DB_MPOOLFILE * dbmp ; 1452 EPG * g , * ve_c , * nve_c ; 1453 PAGE * pg , * g ; 1454 RINTERNAL * rk ; 1455 db_dx_t dx , pd ; 1456 db_pgno_t gno ; 1457 t32_t ecs ; 1458 u_t16_t size ; 1459 u_t32_t 䓥a , p ; 1460 t ; 1462 `COMPQUIET ( b , NULL ); 1463 `COMPQUIET ( gno , PGNO_INVALID ); 1472 dbp = dbc ->dbp; 1473 dbmp = dbp -> mpf ; 1474 = ( BTREE_CURSOR *) dbc -> ; 1475 n = ( BTREE_CURSOR *) ndbc -> ; 1476 * mged = 0; 1477 t = 0; 1483 ve_c = -> c ; 1484 -> c = &->c[- v + 1]; 1485 pg = -> c -> ge ; 1486 pd = `NUM_ENT ( pg ); 1488 nve_c = n -> c ; 1489 n -> c = &n->c[- v + 1]; 1490 g = n -> c -> ge ; 1491 dx = `NUM_ENT ( g ); 1497 i( g = pg ) 1498 de ; 1500 i(( t = `__memp_dty ( dbmp , & -> c -> ge , 1501 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0 || 1502 ( t = `__memp_dty ( dbmp , & n -> c -> ge , 1503 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1504 r ; 1505 pg = -> c -> ge ; 1506 g = n -> c -> ge ; 1508 i( `TYPE ( pg = P_IBTREE ) { 1513 i(( t = 1514 `__bam_un__ovow ( dbc , pg , c_da )) != 0) 1515 r ; 1516 i(( t = 1517 `__bam_un__ovow ( dbc , g , c_da )) != 0) 1518 r ; 1527 f = NULL ; 1528 i( `TYPE ( pg = P_IBTREE ) { 1530 䓥a = `P_FREESPACE ( dbp , pg ); 1535 g = n -> c ; 1536 -- g > n -> &&pg-> dx == 0) 1538 f = b = `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx ); 1539 g = n -> c ; 1541 dx = 0;;) { 1542 size = `BINTERNAL_PSIZE ( b -> n ); 1543 i( size > 䓥a ) 1545 䓥a - size ; 1546 i(++ dx > `NUM_ENT ( g )) 1548 b = `GET_BINTERNAL ( dbp , g , dx ); 1552 i( dx = `NUM_ENT ( g && g [-1].indx != 0) 1553 fs ; 1555 p = dbp -> pgsize ; 1556 g --;pg > n -> ;pg--) 1557 i(( 䓥a = `P_FREESPACE ( dbp , g -> ge )< p ) { 1558 b = `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx ); 1560 䓥a + `BINTERNAL_PSIZE ( b -> n ); 1561 i( 䓥a < p ) 1562 p = 䓥a ; 1563 i( g -> dx != 0) 1566 g = n -> c ; 1569 i( dx = `NUM_ENT ( g )) { 1570 i( `NUM_ENT ( g [-1]. ge ) == 1) 1571 fs ; 1572 b = 1573 `GET_BINTERNAL ( dbp , g [-1]. ge ,pg[-1]. dx + 1); 1575 b = `GET_BINTERNAL ( dbp , g , dx ); 1578 dx !0 && `BINTERNAL_PSIZE ( b -> n > p ) { 1579 dx --; 1580 b = `GET_BINTERNAL ( dbp , g , dx ); 1582 i( dx == 0) 1583 de ; 1586 fs : `memt (& bi , 0, (bi)); 1587 `memt (& hdr , 0, (hdr)); 1588 `memt (& da , 0, (data)); 1589 ecs = 0; 1596 i( dbc -> dbty = DB_BTREE ) { 1597 b = `GET_BINTERNAL ( dbp , g , 0); 1598 size = f = NULL ? 1599 `BINTERNAL_SIZE ( b -> n ) : 1600 `BINTERNAL_SIZE ( f -> n ); 1601 i( `P_FREESPACE ( dbp , pg < size + ( db_dx_t )) 1604 i( f = NULL ) { 1605 da . size = b -> n ; 1606 da .d b ->data; 1608 da . size = f -> n ; 1609 da .d f ->data; 1611 bi . n = da . size ; 1612 `B_TSET ( bi . ty , b ->type); 1613 bi . pgno = b ->pgno; 1614 bi . ecs = b ->nrecs; 1615 hdr . da = & bi ; 1616 hdr . size = `SSZA ( BINTERNAL , da ); 1617 i( `F_ISSET ( , C_RECNUM || F_ISSET( dbc , DBC_OPD )) 1618 ecs +( t32_t ) b -> ecs ; 1620 rk = `GET_RINTERNAL ( dbp , g , 0); 1621 size = RINTERNAL_SIZE ; 1622 i( `P_FREESPACE ( dbp , pg < size + ( db_dx_t )) 1625 hdr . da = rk ; 1626 hdr . size = size; 1627 ecs +( t32_t ) rk -> ecs ; 1629 i(( t = `__db_pem ( dbc , pg , pd , size , & hdr , & da )) != 0) 1630 r ; 1631 pd ++; 1632 i( f ! NULL ) { 1634 size = `BINTERNAL_SIZE ( b -> n ); 1635 f = NULL ; 1637 i(( t = `__db_dem ( ndbc , g , 0, size )) != 0) 1638 r ; 1639 * mged = 1; 1640 } -- dx != 0); 1642 i( c_da -> com_un ! PGNO_INVALID && 1643 `PGNO ( pg > c_da -> com_un && -> c !-> ) { 1644 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 1645 r ; 1648 i( `NUM_ENT ( g !0 && c_da -> com_un ! PGNO_INVALID && 1649 `PGNO ( g > c_da -> com_un && n -> c !n-> ) { 1650 i(( t = `__bam_un_ge ( ndbc , & g , 1)) != 0) 1651 r ; 1654 i(!* mged ) 1655 de ; 1657 i( ecs != 0) { 1658 `DB_ASSERT ( dbp -> v , -> c - cp-> = n ->csp -cp->sp); 1659 -> c --; 1660 i(( t = `__bam_adju ( dbc , ecs )) != 0) 1661 r ; 1663 n -> c --; 1664 i(( t = `__bam_adju ( ndbc , - ecs )) != 0) 1665 r ; 1666 n -> c ++; 1668 -> c = ve_c ; 1679 i(( t = `__memp_ut ( dbmp , dbc -> thad_fo , 1680 nve_c -> ge , dbc -> iܙy )) != 0) 1681 r ; 1682 i(( t = `__LPUT ( dbc , nve_c -> lock )) != 0) 1683 r ; 1684 nve_c --; 1685 } nve_c ! n -> c ); 1687 i( `NUM_ENT ( g ) == 0) { 1694 i( `PGNO ( n -> -> ge =n-> ro && 1695 `NUM_ENT ( n -> -> ge ) == 2) { 1696 i(( t = `__bam_kl ( dbc , STK_CLRDBC )) != 0) 1697 r ; 1698 v = `LEVEL ( n -> -> ge ); 1699 gno = `PGNO ( n -> c [-1]. ge ); 1701 v = 0; 1703 i( c_da -> com_un > `PGNO ( g )) 1704 c_da -> com_un --; 1705 t = `__bam_dges ( ndbc , 1706 0, ndbc -> dbty = DB_RECNO ? 0 : 1); 1707 c_da -> com_ges_ ++; 1708 i( t =0 && v != 0) { 1709 i(( t = `__memp_fg ( dbmp , & n -> ro , 1710 dbc -> thad_fo , dbc-> txn , 0, & g )) != 0) 1711 r ; 1712 i( v = `LEVEL ( g )) 1713 v = 0; 1714 i(( t = `__memp_ut ( dbmp , 1715 dbc -> thad_fo , g , dbc-> iܙy )) != 0) 1716 r ; 1717 g = NULL ; 1718 i( v != 0) { 1719 c_da -> com_vs ++; 1720 c_da -> com_ges_ ++; 1721 i( c_da -> com_un > gno ) 1722 c_da -> com_un --; 1723 i( c_da -> com_ges != 0) 1724 c_da -> com_ges --; 1728 t = `__bam_pupde ( ndbc , g ); 1729 ( t ); 1731 de : 1732 r : -> c = ve_c ; 1733 n -> c = nve_c ; 1735 ( t ); 1736 } } 1743 $__bam_com_dups ( dbc , g , , have_lock , c_da , dڕ ) 1744 DBC * dbc ; 1745 PAGE ** g ; 1746 u_t32_t ; 1747 have_lock ; 1748 DB_COMPACT * c_da ; 1749 * dڕ ; 1751 BOVERFLOW * bo ; 1752 BTREE_CURSOR * ; 1753 DB * dbp ; 1754 DBC * d ; 1755 DBT t ; 1756 DB_MPOOLFILE * dbmp ; 1757 ENV * v ; 1758 PAGE * dpg , * pg ; 1759 db_dx_t i ; 1760 isde , v , t , , t_t ; 1762 = 0; 1763 t = 0; 1764 d = NULL ; 1766 dbp = dbc ->dbp; 1767 v = dbp ->env; 1768 dbmp = dbp -> mpf ; 1769 = ( BTREE_CURSOR *) dbc -> ; 1770 pg = * g ; 1772 i = 0; i < `NUM_ENT ( pg ); i++) { 1773 bo = `GET_BOVERFLOW ( dbp , pg , i ); 1774 i( `B_TYPE ( bo -> ty = B_KEYDATA ) 1776 c_da -> com_ges_exame ++; 1777 i( bo -> pgno > c_da -> com_un ) { 1778 (* dڕ )++; 1779 i(! have_lock ) { 1780 i(( t = `__db_lg ( dbc , 0, `PGNO ( pg ), 1781 DB_LOCK_WRITE , 0, & -> c -> lock )) != 0) 1782 r ; 1783 have_lock = 1; 1784 i(( t = `__memp_dty ( dbp -> mpf , g , 1785 dbc -> thad_fo , 1786 dbc -> txn , dbc-> iܙy , 0)) != 0) 1787 r ; 1788 pg = * g ; 1790 i(( t = 1791 `__bam_un_ro_ge ( dbc , pg , i , c_da )) != 0) 1792 r ; 1794 bo = `GET_BOVERFLOW ( dbp , pg , i ); 1797 i( `B_TYPE ( bo -> ty = B_OVERFLOW ) { 1798 i(( t = `__bam_un_ovow ( dbc , bo -> pgno , 1799 have_lock ? PGNO_INVALID : `PGNO ( pg ), c_da )) != 0) 1800 r ; 1801 (* dڕ )++; 1808 i(( t = `__memp_fg ( dbmp , & bo -> pgno , 1809 dbc -> thad_fo , dbc-> txn , 0, & dpg )) != 0) 1810 r ; 1812 v = dpg ->level; 1813 i(( t = `__memp_ut ( dbmp , 1814 dbc -> thad_fo , dpg , dbc-> iܙy )) != 0) 1815 r ; 1816 i( v = LEAFLEVEL ) 1818 i(( t = `__dbc_wd ( dbc , bo -> pgno , NULL , & d )) != 0) 1819 ( t ); 1820 i(! have_lock ) { 1821 i(( t = `__db_lg ( dbc , 0, 1822 `PGNO ( pg ), DB_LOCK_WRITE , 0, & -> c -> lock )) != 0) 1823 r ; 1824 have_lock = 1; 1825 i(( t = `__memp_dty ( dbp -> mpf , g , 1826 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1827 r ; 1828 pg = * g ; 1830 (* dڕ )++; 1831 `memt (& t , 0, (start)); 1833 i(( t = `__bam_com_t ( d , & t , 1834 NULL , , & , c_da , & isde )) != 0) 1836 } ! isde ); 1838 i( t . da ! NULL ) 1839 `__os_ ( v , t . da ); 1841 i( t != 0) 1842 r ; 1844 t = `__dbc_o ( d ); 1845 d = NULL ; 1846 i( t != 0) 1847 r ; 1850 r : i( d ! NULL && ( t_t = `__dbc_o (d)!0 && t == 0) 1851 t = t_t ; 1852 ( t ); 1853 } } 1861 $__bam_un_ge ( dbc , pgp , upde_ ) 1862 DBC * dbc ; 1863 PAGE ** pgp ; 1864 upde_ ; 1866 BTREE_CURSOR * ; 1867 DB * dbp ; 1868 DBT da , hdr ; 1869 DB_LSN l ; 1870 EPG * g ; 1871 PAGE * wge ; 1872 db_pgno_t wpgno , * pgn ; 1873 t ; 1875 dbp = dbc ->dbp; 1885 i(( t = `__db_w ( dbc , P_DONTEXTEND | `TYPE (* pgp ), & wge )) != 0) 1886 ( t ); 1893 i( wge = NULL ) 1900 i( `PGNO ( wge > PGNO(* pgp )) { 1902 i( `TYPE ( wge = P_OVERFLOW ) 1903 `OV_LEN ( wge ) = 0; 1904 ( `__db_ ( dbc , wge )); 1907 i(( t = `__memp_dty ( dbp -> mpf , 1908 & wge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1909 r ; 1912 i( `DBC_LOGGING ( dbc )) { 1913 hdr . da = * pgp ; 1914 hdr . size = `P_OVERHEAD ( dbp ); 1915 i( `TYPE (* pgp = P_OVERFLOW ) { 1916 da .d( u_t8_t *)* pgp + `P_OVERHEAD ( dbp ); 1917 da . size = `OV_LEN (* pgp ); 1919 da .d( u_t8_t *)* pgp + `HOFFSET (*pgp); 1920 da . size = dbp -> pgsize - `HOFFSET (* pgp ); 1921 hdr . size + `NUM_ENT (* pgp * ( db_dx_t ); 1923 i(( t = `__bam_mge_log ( dbp , dbc -> txn , 1924 & `LSN ( wge ), 0, `PGNO (newpage), &LSN(newpage), 1925 `PGNO (* pgp ), & `LSN (*pgp), & hdr , & da , 1)) != 0) 1926 r ; 1928 `LSN_NOT_LOGGED ( `LSN ( wge )); 1930 wpgno = `PGNO ( wge ); 1931 l = `LSN ( wge ); 1932 `memy ( wge , * pgp , dbp -> pgsize ); 1933 `PGNO ( wge wpgno ; 1934 `LSN ( wge l ; 1937 i(( t = `__memp_dty ( dbp -> mpf , 1938 pgp , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1939 r ; 1940 i( `TYPE (* pgp = P_OVERFLOW ) 1941 `OV_LEN (* pgp ) = 0; 1943 `HOFFSET (* pgp dbp -> pgsize ; 1944 `NUM_ENT (* pgp ) = 0; 1946 `LSN (* pgp l ; 1949 `TYPE ( wge )) { 1950 P_OVERFLOW : 1951 P_LBTREE : 1952 P_LRECNO : 1953 P_LDUP : 1954 i( `NEXT_PGNO ( wge = PGNO_INVALID && 1955 `PREV_PGNO ( wge = PGNO_INVALID ) 1957 i(( t = `__bam_lk ( dbc , * pgp , `PGNO ( wge ))) != 0) 1958 r ; 1963 = ( BTREE_CURSOR *) dbc -> ; 1969 t = `__db_ ( dbc , * pgp ); 1971 * pgp = wge ; 1973 i( t != 0) 1974 ( t ); 1976 i(! upde_ ) 1977 de ; 1980 g = & -> c [-1]; 1981 i(( t = `__memp_dty ( dbp -> mpf , 1982 & g -> ge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1983 ( t ); 1985 `TYPE ( g -> ge )) { 1986 P_IBTREE : 1987 pgn = & `GET_BINTERNAL ( dbp , g -> ge ,pg-> dx )-> pgno ; 1989 P_IRECNO : 1990 pgn = & `GET_RINTERNAL ( dbp , g -> ge ,pg-> dx )-> pgno ; 1993 pgn = & `GET_BOVERFLOW ( dbp , g -> ge ,pg-> dx )-> pgno ; 1996 i( `DBC_LOGGING ( dbc )) { 1997 i(( t = `__bam_pgno_log ( dbp , dbc -> txn , & `LSN ( g -> ge ), 1998 0, `PGNO ( g -> ge ), & `LSN pg->ge), ( u_t32_t pg-> dx , 1999 * pgn , `PGNO ( wge ))) != 0) 2000 ( t ); 2002 `LSN_NOT_LOGGED ( `LSN ( g -> ge )); 2004 * pgn = `PGNO ( wge ); 2005 -> c -> ge = wge ; 2007 de : (0); 2009 r : () `__memp_ut ( dbp -> mpf , dbc -> thad_fo , wge , dbc-> iܙy ); 2010 ( t ); 2011 } } 2021 $__bam_un_ovow ( dbc , pgno , pg_lock , c_da ) 2022 DBC * dbc ; 2023 db_pgno_t pgno ; 2024 db_pgno_t pg_lock ; 2025 DB_COMPACT * c_da ; 2027 DB * dbp ; 2028 DB_LOCK lock ; 2029 PAGE * ge ; 2030 t , t_t ; 2032 dbp = dbc ->dbp; 2033 ge = NULL ; 2034 `LOCK_INIT ( lock ); 2036 i(( t = `__memp_fg ( dbp -> mpf , & pgno , 2037 dbc -> thad_fo , dbc-> txn , 0, & ge )) != 0) 2038 ( t ); 2040 ( pgno = `NEXT_PGNO ( ge )! PGNO_INVALID ) { 2041 i(( t = `__memp_ut ( dbp -> mpf , 2042 dbc -> thad_fo , ge , dbc-> iܙy )) != 0) 2043 ( t ); 2044 i(( t = `__memp_fg ( dbp -> mpf , & pgno , 2045 dbc -> thad_fo , dbc-> txn , 0, & ge )) != 0) 2046 ( t ); 2047 i( pgno < c_da -> com_un ) 2049 i( pg_lock ! PGNO_INVALID ) { 2050 i(( t = `__db_lg ( dbc , 2051 0, pg_lock , DB_LOCK_WRITE , 0, & lock )) != 0) 2053 pg_lock = PGNO_INVALID ; 2055 i(( t = `__bam_un_ge ( dbc , & ge , 0)) != 0) 2059 i( ge ! NULL && 2060 ( t_t = `__memp_ut dbp -> mpf , 2061 dbc -> thad_fo , ge , dbc-> iܙy )!0 && t == 0) 2062 t = t_t ; 2063 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 2064 t = t_t ; 2065 ( t ); 2066 } } 2074 $__bam_un_ro_ge ( dbc , pg , dx , c_da ) 2075 DBC * dbc ; 2076 PAGE * pg ; 2077 u_t32_t dx ; 2078 DB_COMPACT * c_da ; 2080 BINTERNAL * bi ; 2081 BOVERFLOW * bo ; 2082 DB * dbp ; 2083 DBT ig ; 2084 PAGE * ge ; 2085 db_pgno_t wpgno , * pgn ; 2086 t , t_t ; 2088 `COMPQUIET ( c_da , NULL ); 2089 `COMPQUIET ( bo , NULL ); 2090 `COMPQUIET ( wpgno , PGNO_INVALID ); 2091 dbp = dbc ->dbp; 2092 ge = NULL ; 2093 i( `TYPE ( pg = P_IBTREE ) { 2094 bi = `GET_BINTERNAL ( dbp , pg , dx ); 2095 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 2096 bo = ( BOVERFLOW *)( bi -> da ); 2097 pgn = & bo -> pgno ; 2099 pgn = & bi -> pgno ; 2101 bo = `GET_BOVERFLOW ( dbp , pg , dx ); 2102 pgn = & bo -> pgno ; 2105 `DB_ASSERT ( dbp -> v , `IS_DIRTY ( pg )); 2107 i(( t = `__memp_fg ( dbp -> mpf , pgn , 2108 dbc -> thad_fo , dbc-> txn , 0, & ge )) != 0) 2109 r ; 2116 i( `TYPE ( ge = P_OVERFLOW && `OV_REF (page) > 1) { 2117 i(( t = `__db_ovf ( dbc , bo -> pgno )) != 0) 2118 r ; 2119 `memt (& ig , 0, (orig)); 2120 i(( t = `__db_goff ( dbp , dbc -> thad_fo , dbc-> txn , & ig , 2121 bo -> , bo-> pgno , & ig . da , &ig. size )) == 0) 2122 t = `__db_poff ( dbc , & ig , & wpgno ); 2123 i( ig . da ! NULL ) 2124 `__os_ ( dbp -> v , ig . da ); 2125 i( t != 0) 2126 r ; 2128 i(( t = `__bam_un_ge ( dbc , & ge , 0)) != 0) 2129 r ; 2130 wpgno = `PGNO ( ge ); 2132 i( wpgno =* pgn ) 2133 r ; 2137 i( `DBC_LOGGING ( dbc )) { 2138 i(( t = `__bam_pgno_log ( dbp , 2139 dbc -> txn , & `LSN ( pg ), 0, `PGNO (pg), 2140 & `LSN ( pg ), ( u_t32_t ) dx , * pgn , wpgno )) != 0) 2141 r ; 2143 `LSN_NOT_LOGGED ( `LSN ( pg )); 2145 * pgn = wpgno ; 2147 r : i( ge ! NULL && ( t_t = 2148 `__memp_ut ( dbp -> mpf , dbc -> thad_fo , 2149 ge , dbc -> iܙy )!0 && t == 0) 2150 t = t_t ; 2151 ( t ); 2152 } } 2162 $__bam_un__ovow ( dbc , ge , c_da ) 2163 DBC * dbc ; 2164 PAGE * ge ; 2165 DB_COMPACT * c_da ; 2167 BINTERNAL * bi ; 2168 BOVERFLOW * bo ; 2169 db_dx_t dx ; 2170 t ; 2172 `COMPQUIET ( bo , NULL ); 2173 t = 0; 2174 dx = 0; indx < `NUM_ENT ( ge ); indx++) { 2175 bi = `GET_BINTERNAL ( dbc -> dbp , ge , dx ); 2176 i( `B_TYPE ( bi -> ty ! B_OVERFLOW ) 2178 bo = ( BOVERFLOW *)( bi -> da ); 2179 i( bo -> pgno > c_da -> com_un && ( t = 2180 `__bam_un_ro_ge ( dbc , ge , dx , c_da )) != 0) 2182 i(( t = `__bam_un_ovow ( 2183 dbc , bo -> pgno , PGNO_INVALID , c_da )) != 0) 2186 ( t ); 2187 } } 2196 $__bam_com_isde ( dbc , , pg , isde ) 2197 DBC * dbc ; 2198 DBT * ; 2199 PAGE * pg ; 2200 * isde ; 2202 db_o_t o ; 2203 BTREE * t ; 2204 BTREE_CURSOR * ; 2205 cmp , t ; 2207 * isde = 0; 2208 = ( BTREE_CURSOR *) dbc -> ; 2209 t = dbc -> dbp -> bt_ ; 2211 i( dbc -> dbty = DB_RECNO ) { 2212 i(( t = `__m_gno ( dbc , , & o , 0)) != 0) 2213 ( t ); 2214 * isde = -> o >ecno; 2216 `DB_ASSERT ( dbc -> dbp -> v , `TYPE ( pg = P_LBTREE ); 2217 i(( t = `__bam_cmp ( dbc -> dbp , dbc-> thad_fo , dbc-> txn , 2218 , pg , 0, t -> bt_com , & cmp )) != 0) 2219 ( t ); 2221 * isde = cmp <= 0; 2224 } } 2226 #ifde HAVE_FTRUNCATE 2235 $__bam_vekey ( dbc , xt , t ) 2236 DBC * dbc ; 2237 xt ; 2238 DBT * t ; 2240 BINTERNAL * bi ; 2241 BKEYDATA * bk ; 2242 BOVERFLOW * bo ; 2243 BTREE_CURSOR * ; 2244 DB * dbp ; 2245 ENV * v ; 2246 PAGE * pg ; 2247 RINTERNAL * ri ; 2248 db_dx_t dx , t ; 2249 db_pgno_t pgno ; 2250 t , t_t ; 2251 u_t32_t n ; 2252 u_t8_t * da ; 2254 dbp = dbc ->dbp; 2255 v = dbp ->env; 2256 = ( BTREE_CURSOR *) dbc -> ; 2257 pg = -> c -> ge ; 2259 i( dbc -> dbty = DB_RECNO ) { 2260 i( xt ) 2261 dx = 0, t = `NUM_ENT ( pg ); indx !=op; indx++) { 2262 ri = `GET_RINTERNAL ( dbp , pg , dx ); 2263 -> o + ri -> ecs ; 2265 ( `__db_tcy ( v , t , & -> o , 2266 ( -> o ), & t -> da , &t-> un )); 2269 bi = `GET_BINTERNAL ( dbp , pg , `NUM_ENT (pg) - 1); 2270 da = bi ->data; 2271 n = bi ->len; 2273 n == 0) { 2278 i( `NUM_ENT ( pg ) == 0) 2279 no_key ; 2280 pgno = bi ->pgno; 2281 i( pg ! -> c -> ge && 2282 ( t = `__memp_ut ( dbp -> mpf , 2283 dbc -> thad_fo , pg , dbc-> iܙy )) != 0) { 2284 pg = NULL ; 2285 r ; 2287 i(( t = `__memp_fg ( dbp -> mpf , & pgno , 2288 dbc -> thad_fo , dbc-> txn , 0, & pg )) != 0) 2289 r ; 2296 i( pg -> v = LEAFLEVEL ) { 2297 bk = `GET_BKEYDATA ( dbp , pg , `NUM_ENT (pg) - 2); 2298 da = bk ->data; 2299 n = bk ->len; 2300 i( n == 0) { 2301 no_key : `__db_rx ( v , 2303 t = DB_NOTFOUND ; 2304 r ; 2307 bi = `GET_BINTERNAL ( dbp , pg , `NUM_ENT (pg) - 1); 2308 da = bi ->data; 2309 n = bi ->len; 2312 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 2313 bo = ( BOVERFLOW *)( da ); 2314 t = `__db_goff ( dbp , dbc -> thad_fo , dbc-> txn , t , 2315 bo -> , bo-> pgno , & t -> da , &t-> un ); 2318 t = `__db_tcy ( v , 2319 t , da , n , &t->da, &t-> un ); 2321 r : i( pg ! NULL &&g ! -> c -> ge && 2322 ( t_t = `__memp_ut ( dbp -> mpf , dbc -> thad_fo , 2323 pg , dbc -> iܙy )!0 && t == 0) 2324 t = t_t ; 2325 ( t ); 2326 } } 2334 $__bam_un_ ( dbp , , txn , c_da ) 2335 DB * dbp ; 2336 DB_THREAD_INFO * ; 2337 DB_TXN * txn ; 2338 DB_COMPACT * c_da ; 2340 BTREE_CURSOR * ; 2341 DBC * dbc ; 2342 DBT t ; 2343 PAGE * pg ; 2344 db_pgno_t pgno ; 2345 u_t32_t sag ; 2346 v , lol_txn , t , t_t ; 2348 dbc = NULL ; 2349 `memt (& t , 0, (start)); 2351 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 2352 lol_txn = 1; 2353 txn = NULL ; 2355 lol_txn = 0; 2357 v = LEAFLEVEL + 1; 2358 sag = CS_READ | CS_GETRECNO ; 2360 w_txn : 2361 i( lol_txn && 2362 ( t = `__txn_beg ( dbp -> v , , NULL , & txn , 0)) != 0) 2363 r ; 2365 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 2366 r ; 2367 = ( BTREE_CURSOR *) dbc -> ; 2369 pgno = PGNO_INVALID ; 2371 i(( t = `__bam_cch ( dbc , & t , sag , v )) != 0) { 2373 i( t = DB_NOTFOUND ) { 2374 v ++; 2375 i( t . da ! NULL ) 2376 `__os_ ( dbp -> v , t . da ); 2377 `memt (& t , 0, (start)); 2378 sag = CS_READ | CS_GETRECNO ; 2381 r ; 2383 c_da -> com_ges_exame ++; 2385 pg = -> c -> ge ; 2386 pgno = `PGNO ( pg ); 2388 sag = CS_NEXT | CS_GETRECNO ; 2390 i( pgno ! -> ro && ( t = `__bam_vekey ( dbc , 2391 pgno < c_da -> com_un , & t )) != 0) 2392 r ; 2394 i(( t = `__bam_kl ( dbc , STK_NOLOCK )) != 0) 2395 r ; 2396 i( pgno = -> ro ) 2399 i( pgno < c_da -> com_un ) 2403 i(( t = `__bam_cch ( dbc , 2404 & t , CS_PARENT | CS_GETRECNO , v )) != 0) 2405 r ; 2406 pg = -> c -> ge ; 2407 pgno = `PGNO ( pg ); 2409 i( pgno > c_da -> com_un ) { 2410 i(( t = `__bam_un_ge ( dbc , & pg , 1)) != 0) 2411 r ; 2413 i(( t = `__bam_kl ( dbc , 2414 pgno > c_da -> com_un ? 0 : STK_NOLOCK )) != 0) 2415 r ; 2418 i( lol_txn && pgno > c_da -> com_un ) 2420 } pgno ! -> ro ); 2422 i(( t = `__dbc_o ( dbc )) != 0) 2423 r ; 2424 dbc = NULL ; 2425 i( lol_txn ) { 2426 i(( t = `__txn_comm ( txn , DB_TXN_NOSYNC )) != 0) 2427 r ; 2428 txn = NULL ; 2430 i( pgno !(( BTREE *) dbp -> bt_ )-> bt_ro ) 2431 w_txn ; 2433 r : i( txn ! NULL && t != 0) 2434 sag = STK_PGONLY ; 2436 sag = 0; 2437 i( dbc ! NULL && ( t_t = `__bam_kl (dbc, sag )!0 && t == 0) 2438 t = t_t ; 2439 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 2440 t = t_t ; 2441 i( lol_txn && 2442 txn ! NULL && ( t_t = `__txn_abt xn)!0 && t == 0) 2443 t = t_t ; 2444 i( t . da ! NULL ) 2445 `__os_ ( dbp -> v , t . da ); 2446 ( t ); 2447 } } 2450 $__bam_tup_li ( dbp , li , ms ) 2451 DB * dbp ; 2452 db_pgli_t * li ; 2453 u_t32_t ms ; 2455 DB_MPOOLFILE * mpf ; 2456 db_pgno_t * i ; 2457 t ; 2459 mpf = dbp ->mpf; 2461 i(( t = `__memp_loc_li ( mpf , ms , & i )) != 0) 2462 ( t ); 2464 ms -- != 0) 2465 * i ++ = li ++-> pgno ; 2468 } } 2471 $__bam__li ( dbp , , txn ) 2472 DB * dbp ; 2473 DB_THREAD_INFO * ; 2474 DB_TXN * txn ; 2476 DBC * dbc ; 2477 DB_LOCK lock ; 2478 auto_comm , t , t_t ; 2480 `LOCK_INIT ( lock ); 2481 auto_comm = t = 0; 2489 dbc = NULL ; 2490 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 2497 i( `__txn_beg ( dbp -> v , , NULL , & txn , 0) == 0) { 2498 () `__lock_t_timeout ( dbp -> v , 2499 txn -> lock , 0, DB_SET_TXN_TIMEOUT ); 2500 () `__lock_t_timeout ( dbp -> v , 2501 txn -> lock , 0, DB_SET_LOCK_TIMEOUT ); 2502 auto_comm = 1; 2505 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 2506 ( t ); 2508 i(( t = `__db_lg ( dbc , 2509 0, PGNO_BASE_MD , DB_LOCK_WRITE , 0, & lock )) != 0) 2510 r ; 2513 t = `__memp__li ( dbp -> mpf ); 2515 r : i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 2516 t = t_t ; 2518 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 2519 t = t_t ; 2521 i( auto_comm && `__txn_abt ( txn !0 && t == 0) 2522 t = t_t ; 2524 ( t ); 2525 } } @../btree/bt_compare.c 44 ~"db_cfig.h " 46 ~"db_t.h " 47 ~"dbc/db_ge.h " 48 ~"dbc/b.h " 59 $__bam_cmp ( dbp , , txn , dbt , h , dx , func , cm ) 60 DB * dbp ; 61 DB_THREAD_INFO * ; 62 DB_TXN * txn ; 63 cڡ DBT * dbt ; 64 PAGE * h ; 65 u_t32_t dx ; 66 (* func ) `__P (( DB *, cڡ DBT *, const DBT *)); 67 * cm ; 69 BINTERNAL * bi ; 70 BKEYDATA * bk ; 71 BOVERFLOW * bo ; 72 DBT pg_dbt ; 87 `TYPE ( h )) { 88 P_LBTREE : 89 P_LDUP : 90 P_LRECNO : 91 bk = `GET_BKEYDATA ( dbp , h , dx ); 92 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) 93 bo = ( BOVERFLOW *) bk ; 95 pg_dbt . p_da = NULL ; 96 pg_dbt . da = bk ->data; 97 pg_dbt . size = bk -> n ; 98 * cm = `func ( dbp , dbt , & pg_dbt ); 102 P_IBTREE : 120 i( dx == 0) { 121 * cm = 1; 125 bi = `GET_BINTERNAL ( dbp , h , dx ); 126 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) 127 bo = ( BOVERFLOW *)( bi -> da ); 129 pg_dbt . p_da = NULL ; 130 pg_dbt . da = bi ->data; 131 pg_dbt . size = bi -> n ; 132 * cm = `func ( dbp , dbt , & pg_dbt ); 137 ( `__db_pgfmt ( dbp -> v , `PGNO ( h ))); 143 ( `__db_moff ( dbp , , txn , dbt , 144 bo -> pgno , bo-> , func = __bam_defcmp ? NULL : func, cm )); 145 } } 154 $__bam_defcmp ( dbp , a , b ) 155 DB * dbp ; 156 cڡ DBT * a , * b ; 158 size_t n ; 159 u_t8_t * p1 , * p2 ; 161 `COMPQUIET ( dbp , NULL ); 175 n = a -> size > b ->size ? b->size :->size; 176 p1 = a -> da , p2 = b ->da; n --; ++p1, ++p2) 177 i(* p1 !* p2 ) 178 (()* p1 - ()* p2 ); 179 (() a -> size - () b ->size); 180 } } 188 size_t 189 $__bam_defx ( dbp , a , b ) 190 DB * dbp ; 191 cڡ DBT * a , * b ; 193 size_t t , n ; 194 u_t8_t * p1 , * p2 ; 196 `COMPQUIET ( dbp , NULL ); 198 t = 1; 199 n = a -> size > b ->size ? b->size :->size; 200 p1 = a -> da , p2 = b ->da; n --; ++p1, ++p2, ++ t ) 201 i(* p1 !* p2 ) 202 ( t ); 208 i( a -> size < b ->size) 209 ( a -> size + 1); 210 i( b -> size < a ->size) 211 ( b -> size + 1); 212 ( b -> size ); 213 } } @../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 ( dbp , pg , , cook ) 25 DB * dbp ; 26 db_pgno_t pg ; 27 * ; 28 DBT * cook ; 30 DB_PGINFO * pgfo ; 31 PAGE * h ; 33 pgfo = ( DB_PGINFO *) cook -> da ; 34 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 37 h = ; 38 ( `TYPE ( h = P_BTREEMETA ? `__bam_msw ( dbp -> v , ) : 39 `__db_bysw ( dbp , pg , , pgfo -> db_gesize , 1)); 40 } } 50 $__bam_pgout ( dbp , pg , , cook ) 51 DB * dbp ; 52 db_pgno_t pg ; 53 * ; 54 DBT * cook ; 56 DB_PGINFO * pgfo ; 57 PAGE * h ; 59 pgfo = ( DB_PGINFO *) cook -> da ; 60 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 63 h = ; 64 ( `TYPE ( h = P_BTREEMETA ? `__bam_msw ( dbp -> v , ) : 65 `__db_bysw ( dbp , pg , , pgfo -> db_gesize , 0)); 66 } } 75 $__bam_msw ( v , pg ) 76 ENV * v ; 77 PAGE * pg ; 79 u_t8_t * p ; 81 `COMPQUIET ( v , NULL ); 83 `__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 DBC * dbc ; 46 ENV * v ; 47 cou ; 49 v = dbp ->env; 62 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 63 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 64 cou = 0; 65 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 66 ldbp = `TAILQ_NEXT dbp, dblilks )) { 67 `MUTEX_LOCK ( v , 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 ( v , dbp -> mux ); 94 `MUTEX_UNLOCK ( v ,nv-> 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 ENV * v ; 116 found ; 118 v = dbp ->env; 123 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 124 `FIND_FIRST_DB_MATCH ( v , 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 ( v , 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 ( v , dbp -> mux ); 137 `MUTEX_UNLOCK ( v ,nv-> 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 DBC * dbc ; 158 DBC_INTERNAL * ; 159 DB_LSN l ; 160 DB_TXN * my_txn ; 161 ENV * v ; 162 found , t ; 164 dbp = my_dbc ->dbp; 165 v = dbp ->env; 167 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 172 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 173 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 174 found = 0; 175 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 176 ldbp = `TAILQ_NEXT dbp, dblilks )) { 177 `MUTEX_LOCK ( v , 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 ( v , -> dx !0 || adju > 0); 190 -> dx + adju ; 191 i( my_txn ! NULL && dbc -> txn != my_txn) 192 found = 1; 195 `MUTEX_UNLOCK ( v , dbp -> mux ); 197 `MUTEX_UNLOCK ( v ,nv-> 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 -> v , 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_LSN l ; 284 DB_TXN * my_txn ; 285 ENV * v ; 286 found , t , t_t ; 288 dbp = my_dbc ->dbp; 289 v = dbp ->env; 290 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 291 t = 0; 296 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 297 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 298 found = 0; 299 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 300 ldbp = `TAILQ_NEXT dbp, dblilks )) { 301 lo : `MUTEX_LOCK ( v , 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 ( v , 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 ( v , dbp -> mux ); 331 r : `MUTEX_UNLOCK ( v ,nv-> 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 ENV * v ; 362 t ; 364 v = dbp ->env; 365 t = 0; 370 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 371 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 373 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 374 ldbp = `TAILQ_NEXT dbp, dblilks )) { 375 lo : `MUTEX_LOCK ( v , 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 ( v , 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 ( v , dbp -> mux ); 405 r : `MUTEX_UNLOCK ( v ,nv-> 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_LSN l ; 424 DB_TXN * my_txn ; 425 ENV * v ; 426 found , t ; 428 dbp = my_dbc ->dbp; 429 v = dbp ->env; 430 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 435 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 436 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 437 found = 0; 438 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 439 ldbp = `TAILQ_NEXT dbp, dblilks )) { 440 `MUTEX_LOCK ( v , 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 ( v , dbp -> mux ); 457 `MUTEX_UNLOCK ( v ,nv-> 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_LSN l ; 485 DB_TXN * my_txn ; 486 ENV * v ; 487 found , t ; 489 dbp = my_dbc ->dbp; 490 v = dbp ->env; 491 my_txn = `IS_SUBTRANSACTION ( my_dbc -> txn ? my_dbc->tx: NULL ; 503 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 504 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 505 found = 0; 506 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 507 ldbp = `TAILQ_NEXT dbp, dblilks )) { 508 `MUTEX_LOCK ( v , 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 ( v , dbp -> mux ); 532 `MUTEX_UNLOCK ( v ,nv-> 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 DBC_INTERNAL * ; 563 ENV * v ; 565 v = dbp ->env; 573 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 574 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 576 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 577 ldbp = `TAILQ_NEXT dbp, dblilks )) { 578 `MUTEX_LOCK ( v , 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 ( v , dbp -> mux ); 593 `MUTEX_UNLOCK ( v ,nv-> 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 , \ 52 ( dbc )-> thad_fo , g , dbc-> iܙy ); \ 53 g = NULL ; \ 55 t = 0; \ 56 i(( t =0 && `STD_LOCKING ( dbc )) \ 57 t = `__db_lg ( \ 58 dbc , LCK_COUPLE , gno , mode , ags , &( lock )); \ 59 i(( t ) == 0) \ 60 t = `__memp_fg ( __mpf , &( gno ), \ 61 ( dbc )-> thad_fo , (dbc)-> txn , 0, &( g )); \ 62 } 0) ) 65 #unde ACQUIRE_CUR 66 #ACQUIRE_CUR ( dbc , mode , p , ags , t ) do { \ 67 BTREE_CURSOR * __ = (BTREE_CURSOR *)( dbc )-> ; \ 68 i( p ! __ -> pgno ) \ 69 __ -> pgno = PGNO_INVALID ; \ 70 `ACQUIRE ( dbc , mode , p , __ -> lock ,, __-> ge , ags , t ); \ 71 i(( t ) == 0) { \ 72 __ -> pgno = p ; \ 73 __ -> lock_mode = ( mode ); \ 75 } 0) ) 83 #unde ACQUIRE_WRITE_LOCK 84 #ACQUIRE_WRITE_LOCK ( dbc , t ) do { \ 85 BTREE_CURSOR * __ = (BTREE_CURSOR *)( dbc )-> ; \ 86 t = 0; \ 87 i( `STD_LOCKING ( dbc ) && \ 88 __ -> lock_mode ! DB_LOCK_WRITE && \ 89 (( t `__db_lg ( dbc , \ 90 `LOCK_ISSET ( __ -> lock ? LCK_COUPLE : 0, \ 91 __ -> pgno , DB_LOCK_WRITE , 0, &__-> lock )) == 0) \ 92 __ -> lock_mode = DB_LOCK_WRITE ; \ 93 } 0) ) 96 #unde DISCARD_CUR 97 #DISCARD_CUR ( dbc , t ) do { \ 98 BTREE_CURSOR * __ = (BTREE_CURSOR *)( dbc )-> ; \ 99 DB_MPOOLFILE * __mpf = ( dbc )-> dbp -> mpf ; \ 100 __t_t ; \ 101 i(( __ -> ge ! NULL ) { \ 102 __t_t = `__memp_ut ( __mpf , \ 103 ( dbc )-> thad_fo , __ -> ge , dbc-> iܙy );\ 104 __ -> ge = NULL ; \ 106 __t_t = 0; \ 107 i( __t_t !0 && ( t ) == 0) \ 108 t = __t_t ; \ 109 __t_t = `__TLPUT (( dbc ), __ -> lock ); \ 110 i( __t_t !0 && ( t ) == 0) \ 111 t = __t_t ; \ 112 i(( t =0 && ! `LOCK_ISSET ( __ -> lock )) \ 113 __ -> lock_mode = DB_LOCK_NG ; \ 114 } 0) ) 117 #unde IS_DELETED 118 #IS_DELETED ( dbp , ge , dx ) \ 119 `B_DISSET ( `GET_BKEYDATA ( dbp , ge , \ 120 ( dx + ( `TYPE ( ge = P_LBTREE ? O_INDX : 0))-> ty ) ) 121 #unde IS_CUR_DELETED 122 #IS_CUR_DELETED ( dbc ) \ 123 `IS_DELETED (( dbc )-> dbp , (dbc)-> -> ge , (dbc)->-> dx ) ) 133 #unde IS_DUPLICATE 134 #IS_DUPLICATE ( dbc , i1 , i2 ) \ 135 ( `P_INP (( dbc )-> dbp ,(( PAGE *)(dbc)-> -> ge ))[ i1 ] == \ 136 `P_INP (( dbc )-> dbp ,(( PAGE *)(dbc)-> -> ge ))[ i2 ]) ) 137 #unde IS_CUR_DUPLICATE 138 #IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx ) \ 139 ( `F_ISSET ( dbc , DBC_OPD ) || \ 140 ( ig_pgno =( dbc )-> -> pgno && \ 141 `IS_DUPLICATE ( dbc , (dbc)-> -> dx , ig_dx ))) ) 150 $__bamc_ ( dbc , dbty ) 151 DBC * dbc ; 152 DBTYPE dbty ; 154 ENV * v ; 155 t ; 157 v = dbc ->env; 160 i( dbc -> = NULL && ( t = 161 `__os_oc ( v , 1, ( BTREE_CURSOR ), & dbc -> )) != 0) 162 ( t ); 165 dbc -> o = dbc-> c_o = __dbc_o_ ; 166 dbc -> cou = dbc-> c_cou = __dbc_cou_ ; 167 dbc -> d = dbc-> c_d = __dbc_d_ ; 168 dbc -> dup = dbc-> c_dup = __dbc_dup_ ; 169 dbc -> g = dbc-> c_g = __dbc_g_ ; 170 dbc -> pg = dbc-> c_pg = __dbc_pg_ ; 171 dbc -> put = dbc-> c_put = __dbc_put_ ; 172 i( dbty = DB_BTREE ) { 173 dbc -> am_bulk = __bam_bulk ; 174 dbc -> am_o = __bamc_o ; 175 dbc -> am_d = __bamc_d ; 176 dbc -> am_deroy = __bamc_deroy ; 177 dbc -> am_g = __bamc_g ; 178 dbc -> am_put = __bamc_put ; 179 dbc -> am_wrock = __bamc_wrock ; 181 dbc -> am_bulk = __bam_bulk ; 182 dbc -> am_o = __bamc_o ; 183 dbc -> am_d = __mc_d ; 184 dbc -> am_deroy = __bamc_deroy ; 185 dbc -> am_g = __mc_g ; 186 dbc -> am_put = __mc_put ; 187 dbc -> am_wrock = __bamc_wrock ; 191 } } 200 $__bamc_esh ( dbc ) 201 DBC * dbc ; 203 BTREE * t ; 204 BTREE_CURSOR * ; 205 DB * dbp ; 207 dbp = dbc ->dbp; 208 t = dbp -> bt_ ; 209 = ( BTREE_CURSOR *) dbc -> ; 216 i( -> ro = PGNO_INVALID ) 217 -> ro = t -> bt_ro ; 219 `LOCK_INIT ( -> lock ); 220 -> lock_mode = DB_LOCK_NG ; 222 i( -> = NULL ) { 223 -> = cp-> ack ; 224 -> e = cp-> ack + (cp->stack) / (cp->stack[0]); 226 `BT_STK_CLR ( ); 236 -> ovsize = `B_MINKEY_TO_OVFLSIZE ( 237 dbp , `F_ISSET ( dbc , DBC_OPD ? 2 : t -> bt_mkey , dbp-> pgsize ); 239 -> o = RECNO_OOB ; 240 -> d = INVALID_ORDER ; 241 -> ags = 0; 244 i( `F_ISSET ( dbc , DBC_OPD ) || 245 dbc -> dbty = DB_RECNO || `F_ISSET ( dbp , DB_AM_RECNUM )) { 246 `F_SET ( , C_RECNUM ); 253 i(( `F_ISSET ( dbc , DBC_OPD && dbc-> dbty = DB_RECNO ) || 254 `F_ISSET ( dbp , DB_AM_RECNUM | DB_AM_RENUMBER )) 255 `F_SET ( , C_RENUMBER ); 259 } } 266 $__bamc_o ( dbc , ro_pgno , rmro ) 267 DBC * dbc ; 268 db_pgno_t ro_pgno ; 269 * rmro ; 271 BTREE_CURSOR * , * _d , * _c ; 272 DB * dbp ; 273 DBC * dbc_d , * dbc_c ; 274 DB_MPOOLFILE * mpf ; 275 ENV * v ; 276 PAGE * h ; 277 cdb_lock , cou , t ; 279 dbp = dbc ->dbp; 280 v = dbp ->env; 281 mpf = dbp ->mpf; 282 = ( BTREE_CURSOR *) dbc -> ; 283 _d = ( dbc_d = -> d = NULL ? 284 NULL : ( BTREE_CURSOR *) dbc_d -> ; 285 cdb_lock = t = 0; 344 i( `F_ISSET ( , C_DELETED )) { 345 dbc_c = dbc ; 346 dbc -> dbty ) { 347 DB_BTREE : 348 i(( t = `__bam__de ( 349 dbp , -> pgno , cp-> dx , 1, & cou )) != 0) 350 r ; 351 i( cou == 0) 352 lock ; 353 de ; 354 DB_RECNO : 355 i(! `F_ISSET ( dbc , DBC_OPD )) 356 de ; 358 i(( t = `__m__de ( dbp , -> ro , & cou )) != 0) 359 r ; 360 i( cou == 0) 361 lock ; 362 de ; 363 DB_HASH : 364 DB_QUEUE : 365 DB_UNKNOWN : 367 t = `__db_unknown_ty ( 368 v , "DbCurs.o", dbc -> dbty ); 369 r ; 373 i( dbc_d = NULL ) 374 de ; 376 i( `F_ISSET ( _d , C_DELETED )) { 381 i(( t = `__memp_fg ( mpf , & -> pgno , 382 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 383 r ; 384 ro_pgno = `GET_BOVERFLOW ( dbp , h , -> dx + O_INDX )-> pgno ; 385 i(( t = `__memp_ut ( mpf , 386 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 387 r ; 389 dbc_c = dbc_d ; 390 dbc_d -> dbty ) { 391 DB_BTREE : 392 i(( t = `__bam__de ( 393 dbp , _d -> pgno , cp_d-> dx , 1, & cou )) != 0) 394 r ; 395 i( cou == 0) 396 lock ; 397 de ; 398 DB_RECNO : 399 i(( t = 400 `__m__de ( dbp , _d -> ro , & cou )) != 0) 401 r ; 402 i( cou == 0) 403 lock ; 404 de ; 405 DB_HASH : 406 DB_QUEUE : 407 DB_UNKNOWN : 409 t = `__db_unknown_ty ( 410 v , "DbCurs.o", dbc -> dbty ); 411 r ; 414 de ; 416 lock : _c = ( BTREE_CURSOR *) dbc_c -> ; 424 i( `CDB_LOCKING ( v )) { 425 i( `F_ISSET ( dbc , DBC_WRITECURSOR )) { 426 i(( t = `__lock_g ( v , 427 dbc -> lock , DB_LOCK_UPGRADE , &dbc-> lock_dbt , 428 DB_LOCK_WRITE , & dbc -> mylock )) != 0) 429 r ; 430 cdb_lock = 1; 432 de ; 444 i( `F_ISSET ( dbc , DBC_OPD )) 445 de ; 478 i( `STD_LOCKING ( dbc )) 479 i(( t = `__db_lg ( dbc , 480 LCK_COUPLE , -> pgno , DB_LOCK_WRITE , 0, &-> lock )) != 0) 481 r ; 483 de : 491 i( dbc_c -> dbty = DB_BTREE ) { 492 i(( t = `__memp_fg ( mpf , & _c -> pgno , dbc -> thad_fo , 493 dbc -> txn , DB_MPOOL_DIRTY , & _c -> ge )) != 0) 494 r ; 495 i(( t = `__bamc_physd ( dbc_c )) != 0) 496 r ; 503 i(! `F_ISSET ( dbc_c , DBC_OPD || ro_pgno = PGNO_INVALID ) 504 de ; 515 i(( t = `__memp_fg ( mpf , & ro_pgno , 516 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 517 r ; 518 i( `NUM_ENT ( h ) == 0) { 519 `DISCARD_CUR ( dbc_c , t ); 520 i( t != 0) 521 r ; 522 i(( t = `__db_ ( dbc , h )) != 0) 523 r ; 525 i(( t = `__memp_ut ( mpf , 526 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 527 r ; 528 de ; 543 i( dbc_d ! NULL ) { 544 i(( t = `__memp_fg ( mpf , & -> pgno , dbc -> thad_fo , 545 dbc -> txn , DB_MPOOL_DIRTY , & -> ge )) != 0) 546 r ; 547 i(( t = `__bamc_physd ( dbc )) != 0) 548 r ; 550 * rmro = 1; 551 r : 552 de : 556 i( dbc_d ! NULL ) 557 `DISCARD_CUR ( dbc_d , t ); 558 `DISCARD_CUR ( dbc , t ); 561 i( cdb_lock ) 562 () `__lock_downgde ( v , & dbc -> mylock , DB_LOCK_IWRITE , 0); 564 ( t ); 565 } } 572 $__bamc_deroy ( dbc ) 573 DBC * dbc ; 575 BTREE_CURSOR * ; 576 ENV * v ; 578 = ( BTREE_CURSOR *) dbc -> ; 579 v = dbc ->env; 582 i( -> !-> ack ) 583 `__os_ ( v , -> ); 584 `__os_ ( v , ); 587 } } 596 $__bamc_cou ( dbc , ) 597 DBC * dbc ; 598 db_o_t * ; 600 BTREE_CURSOR * ; 601 DB * dbp ; 602 DB_MPOOLFILE * mpf ; 603 db_dx_t dx , t ; 604 db_o_t o ; 605 t ; 607 dbp = dbc ->dbp; 608 mpf = dbp ->mpf; 609 = ( BTREE_CURSOR *) dbc -> ; 616 i( -> d = NULL ) { 620 i(( t = `__memp_fg ( mpf , & -> pgno , 621 dbc -> thad_fo , dbc-> txn , 0, & -> ge )) != 0) 622 ( t ); 628 dx = ->dx;; indx - P_INDX ) 629 i( dx == 0 || 630 ! `IS_DUPLICATE ( dbc , dx , indx - P_INDX )) 632 o = 0, 633 t = `NUM_ENT ( -> ge - P_INDX ;; dx += P_INDX) { 634 i(! `IS_DELETED ( dbp , -> ge , dx )) 635 ++ o ; 636 i( dx = t || 637 ! `IS_DUPLICATE ( dbc , dx , indx + P_INDX )) 645 i(( t = `__memp_fg ( mpf , & -> d -> -> ro , 646 dbc -> thad_fo , dbc-> txn , 0, & -> ge )) != 0) 647 ( t ); 658 i( `TYPE ( -> ge = P_LDUP ) 659 o = 0, dx = 0, 660 t = `NUM_ENT ( -> ge - O_INDX ;; dx += O_INDX) { 661 i(! `IS_DELETED ( dbp , -> ge , dx )) 662 ++ o ; 663 i( dx = t ) 667 o = `RE_NREC ( -> ge ); 670 * = o ; 672 t = `__memp_ut ( mpf , dbc -> thad_fo , -> ge , dbc-> iܙy ); 673 -> ge = NULL ; 675 ( t ); 676 } } 683 $__bamc_d ( dbc ) 684 DBC * dbc ; 686 BTREE_CURSOR * ; 687 DB * dbp ; 688 DB_MPOOLFILE * mpf ; 689 cou , t , t_t ; 691 dbp = dbc ->dbp; 692 mpf = dbp ->mpf; 693 = ( BTREE_CURSOR *) dbc -> ; 694 t = 0; 697 i( `F_ISSET ( , C_DELETED )) 698 ( DB_KEYEMPTY ); 703 `DB_ASSERT ( dbp -> v , -> ge = NULL ); 714 i( `F_ISSET ( , C_RECNUM )) { 715 i(( t = `__bamc_gack ( dbc )) != 0) 716 r ; 717 -> ge = cp-> c ->page; 719 `ACQUIRE_CUR ( dbc , DB_LOCK_WRITE , -> pgno , 0, t ); 720 i( t != 0) 721 r ; 725 i(( t = `__memp_dty ( mpf , 726 & -> ge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 727 r ; 730 i( `DBC_LOGGING ( dbc )) { 731 i(( t = `__bam_cd_log ( dbp , dbc -> txn , & `LSN ( -> ge ), 0, 732 `PGNO ( -> ge ), & `LSN (->ge), cp-> dx )) != 0) 733 r ; 735 `LSN_NOT_LOGGED ( `LSN ( -> ge )); 738 i( `TYPE ( -> ge = P_LBTREE ) 739 `B_DSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx + O_INDX )-> ty ); 741 `B_DSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx )-> ty ); 743 r : 747 i( `F_ISSET ( , C_RECNUM )) { 748 -> c -> ge = cp->page; 749 i( t == 0) 750 t = `__bam_adju ( dbc , -1); 751 () `__bam_kl ( dbc , 0); 753 i( -> ge ! NULL && 754 ( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 755 -> ge , dbc -> iܙy )!0 && t == 0) 756 t = t_t ; 758 -> ge = NULL ; 764 i( t == 0) 765 t = `__bam__de ( dbp , -> pgno , cp-> dx , 1, & cou ); 767 ( t ); 768 } } 778 $__bamc_dup ( ig_dbc , w_dbc ) 779 DBC * ig_dbc , * w_dbc ; 781 BTREE_CURSOR * ig , * w ; 783 ig = ( BTREE_CURSOR *) ig_dbc -> ; 784 w = ( BTREE_CURSOR *) w_dbc -> ; 786 w -> ovsize = ig ->ovflsize; 787 w -> o = ig ->recno; 788 w -> ags = ig ->flags; 791 } } 798 $__bamc_g ( dbc , key , da , ags , pgn ) 799 DBC * dbc ; 800 DBT * key , * da ; 801 u_t32_t ags ; 802 db_pgno_t * pgn ; 804 BTREE_CURSOR * ; 805 DB * dbp ; 806 DB_MPOOLFILE * mpf ; 807 db_pgno_t ig_pgno ; 808 db_dx_t ig_dx ; 809 exa , wd , t ; 811 dbp = dbc ->dbp; 812 mpf = dbp ->mpf; 813 = ( BTREE_CURSOR *) dbc -> ; 814 ig_pgno = -> pgno ; 815 ig_dx = -> dx ; 817 wd = 0; 818 ags ) { 819 DB_CURRENT : 821 i( `F_ISSET ( , C_DELETED )) { 822 t = DB_KEYEMPTY ; 823 r ; 832 i(( t = `__memp_fg ( mpf , & -> pgno , 833 dbc -> thad_fo , dbc-> txn , 0, & -> ge )) != 0) 834 r ; 836 DB_FIRST : 837 wd = 1; 838 i(( t = `__bamc_ch ( dbc , 839 PGNO_INVALID , NULL , ags , & exa )) != 0) 840 r ; 842 DB_GET_BOTH : 843 DB_GET_BOTH_RANGE : 857 i( `F_ISSET ( dbc , DBC_OPD )) { 858 i(( t = `__bamc_ch ( 859 dbc , PGNO_INVALID , da , ags , & exa )) != 0) 860 r ; 861 i( ags = DB_GET_BOTH ) { 862 i(! exa ) { 863 t = DB_NOTFOUND ; 864 r ; 875 i(( -> dx = `NUM_ENT (-> ge ) || 876 `IS_CUR_DELETED ( dbc )) && 877 ( t = `__bamc_xt ( dbc , 1, 0)) != 0) 878 r ; 880 i(( t = `__bamc_ch ( 881 dbc , PGNO_INVALID , key , ags , & exa )) != 0) 882 ( t ); 883 i(! exa ) { 884 t = DB_NOTFOUND ; 885 r ; 888 i( pgn ! NULL && `__bam_isd ( dbc ,gnop)) { 889 wd = 1; 892 i(( t = 893 `__bam_gbh_fddum ( dbc , da , ags )) != 0) 894 r ; 897 DB_GET_BOTHC : 898 i(( t = `__bam_gbhc ( dbc , da )) != 0) 899 r ; 901 DB_LAST : 902 wd = 1; 903 i(( t = `__bamc_ch ( dbc , 904 PGNO_INVALID , NULL , ags , & exa )) != 0) 905 r ; 907 DB_NEXT : 908 wd = 1; 909 i( -> pgno = PGNO_INVALID ) { 910 i(( t = `__bamc_ch ( dbc , 911 PGNO_INVALID , NULL , DB_FIRST , & exa )) != 0) 912 r ; 914 i(( t = `__bamc_xt ( dbc , 1, 0)) != 0) 915 r ; 917 DB_NEXT_DUP : 918 i(( t = `__bamc_xt ( dbc , 1, 0)) != 0) 919 r ; 920 i(! `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )) { 921 t = DB_NOTFOUND ; 922 r ; 925 DB_NEXT_NODUP : 926 wd = 1; 927 i( -> pgno = PGNO_INVALID ) { 928 i(( t = `__bamc_ch ( dbc , 929 PGNO_INVALID , NULL , DB_FIRST , & exa )) != 0) 930 r ; 933 i(( t = `__bamc_xt ( dbc , 1, 0)) != 0) 934 r ; 935 } `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )); 937 DB_PREV : 938 wd = 1; 939 i( -> pgno = PGNO_INVALID ) { 940 i(( t = `__bamc_ch ( dbc , 941 PGNO_INVALID , NULL , DB_LAST , & exa )) != 0) 942 r ; 944 i(( t = `__bamc_ev ( dbc )) != 0) 945 r ; 947 DB_PREV_DUP : 948 i(( t = `__bamc_ev ( dbc )) != 0) 949 r ; 950 i(! `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )) { 951 t = DB_NOTFOUND ; 952 r ; 955 DB_PREV_NODUP : 956 wd = 1; 957 i( -> pgno = PGNO_INVALID ) { 958 i(( t = `__bamc_ch ( dbc , 959 PGNO_INVALID , NULL , DB_LAST , & exa )) != 0) 960 r ; 963 i(( t = `__bamc_ev ( dbc )) != 0) 964 r ; 965 } `IS_CUR_DUPLICATE ( dbc , ig_pgno , ig_dx )); 967 DB_SET : 968 DB_SET_RECNO : 969 wd = 1; 970 i(( t = `__bamc_ch ( dbc , 971 PGNO_INVALID , key , ags , & exa )) != 0) 972 r ; 974 DB_SET_RANGE : 975 wd = 1; 976 i(( t = `__bamc_ch ( dbc , 977 PGNO_INVALID , key , ags , & exa )) != 0) 978 r ; 986 i( -> dx = `NUM_ENT (-> ge || `IS_CUR_DELETED ( dbc )) 987 i(( t = `__bamc_xt ( dbc , 0, 0)) != 0) 988 r ; 991 t = `__db_unknown_ag ( dbp -> v , "__bamc_g", ags ); 992 r ; 999 i( wd && pgn ! NULL ) 1000 () `__bam_isd ( dbc , pgn ); 1002 r : 1007 i( `F_ISSET ( , C_DELETED ) && 1008 ( -> pgno ! ig_pgno || cp-> dx ! ig_dx )) 1009 `F_CLR ( , C_DELETED ); 1011 ( t ); 1012 } } 1015 $__bam_g_ev ( dbc ) 1016 DBC * dbc ; 1018 BTREE_CURSOR * ; 1019 DBT key , da ; 1020 db_pgno_t pgno ; 1021 t ; 1023 i(( t = `__bamc_ev ( dbc )) != 0) 1024 ( t ); 1026 i( `__bam_isd ( dbc , & pgno )) { 1027 = ( BTREE_CURSOR *) dbc -> ; 1028 i(( t = `__dbc_wd ( dbc , pgno , -> d , &cp->opd)) != 0) 1029 ( t ); 1030 i(( t = -> d -> `am_g (cp->opd, 1031 & key , & da , DB_LAST , NULL )) != 0) 1032 ( t ); 1036 } } 1042 $__bam_bulk ( dbc , da , ags ) 1043 DBC * dbc ; 1044 DBT * da ; 1045 u_t32_t ags ; 1047 BKEYDATA * bk ; 1048 BOVERFLOW * bo ; 1049 BTREE_CURSOR * ; 1050 PAGE * pg ; 1051 db_dx_t * p , dx , pg_keyoff ; 1052 t32_t * dp , key_off , * of , * veof ; 1053 u_t8_t * dbuf , * dp , * ; 1054 u_t32_t key_size , gesize , size , a ; 1055 adj , is_key , ed_pg , xt_key , no_dup , c_key , t ; 1057 t = 0; 1058 key_off = 0; 1059 size = 0; 1060 gesize = dbc -> dbp -> pgsize ; 1061 = ( BTREE_CURSOR *) dbc -> ; 1068 dbuf = da ->data; 1069 = dp = dbuf ; 1072 a = da -> un ; 1073 a -(* of ); 1076 dp = ( t32_t *)(( u_t8_t *) dbuf + da -> un ); 1077 dp --; 1078 of = dp ; 1080 key_size = 0; 1090 i( dbc -> dbty = DB_BTREE ) { 1091 is_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1: 0; 1092 c_key = 0; 1093 xt_key = is_key && `LF_ISSET ( DB_OPFLAGS_MASK ! DB_NEXT_DUP ; 1094 adj = 2; 1096 is_key = 0; 1097 c_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1 : 0; 1098 xt_key = `LF_ISSET ( DB_OPFLAGS_MASK ! DB_NEXT_DUP ; 1099 adj = 1; 1101 no_dup = `LF_ISSET ( DB_OPFLAGS_MASK = DB_NEXT_NODUP ; 1103 xt_pg : 1104 dx = ->indx; 1105 pg = -> ge ; 1107 p = `P_INP ( dbc -> dbp , pg ); 1109 ed_pg = 1; 1116 pg_keyoff = 0; 1117 i( is_key == 0) 1118 pg_keyoff = p [ dx ]; 1121 i( `IS_DELETED ( dbc -> dbp , pg , dx )) { 1122 i( dbc -> dbty ! DB_RECNO ) 1125 -> o ++; 1131 i( c_key != 0) 1134 a -2 * (* of ); 1136 i( a > da -> un ) 1137 back_up ; 1140 * of -- = 0; 1141 * of -- = 0; 1151 i( is_key && pg_keyoff ! p [ dx ]) { 1152 bk = `GET_BKEYDATA ( dbc -> dbp , pg , dx ); 1153 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 1154 bo = ( BOVERFLOW *) bk ; 1155 size = key_size = bo -> ; 1156 i( key_size > a ) 1157 g_key_a ; 1158 i(( t = `__bam_bulk_ovow ( dbc , 1159 bo -> , bo-> pgno , )) != 0) 1160 ( t ); 1161 a - key_size ; 1162 key_off = ( t32_t )( - dbuf ); 1163 + key_size ; 1165 i( ed_pg ) { 1166 dp = ; 1167 size = gesize - `HOFFSET ( pg ); 1168 i( a < size ) { 1169 g_key_a : 1171 i( of = dp ) { 1172 da -> size = ( u_t32_t ) 1173 `DB_ALIGN ( size + 1174 gesize , 1024); 1176 ( DB_BUFFER_SMALL ); 1184 i( dx != 0) 1185 dx - P_INDX ; 1187 i(( t = 1188 `__bam_g_ev ( 1189 dbc )) != 0) 1190 ( t ); 1191 dx = ->indx; 1192 pg = -> ge ; 1200 `memy ( dp , 1201 ( u_t8_t *) pg + `HOFFSET g), size ); 1202 ed_pg = 0; 1203 a - size ; 1204 + size ; 1206 key_size = bk -> n ; 1207 key_off = ( t32_t )(( p [ dx ] - `HOFFSET ( pg )) 1208 + ( dp - dbuf + `SSZA ( BKEYDATA , da )); 1209 pg_keyoff = p [ dx ]; 1217 a -( is_key ? 4 : 2* (* of ); 1218 i( c_key ) 1219 a -(* of ); 1222 i( a > da -> un ) 1223 back_up ; 1231 bk = `GET_BKEYDATA ( dbc -> dbp , pg , dx + adj - 1); 1232 i( `B_TYPE ( bk -> ty = B_DUPLICATE ) { 1233 bo = ( BOVERFLOW *) bk ; 1234 i( is_key ) { 1235 * of -- = ( t32_t ) key_off ; 1236 * of -- = ( t32_t ) key_size ; 1243 veof = of ; 1244 i(( t = `__bam_bulk_duis ( dbc , bo -> pgno , 1245 dbuf , is_key ? of + P_INDX : NULL , 1246 & of , & , & a , no_dup )) != 0) { 1247 i( t = DB_BUFFER_SMALL ) { 1248 size = a ; 1249 a = 0; 1251 i( of = veof ) { 1252 of += 2; 1253 back_up ; 1255 g_a ; 1257 ( t ); 1259 } i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 1260 bo = ( BOVERFLOW *) bk ; 1261 size = bo -> ; 1262 i( size > a ) 1263 back_up ; 1264 i(( t = 1265 `__bam_bulk_ovow ( dbc , 1266 bo -> , bo-> pgno , )) != 0) 1267 ( t ); 1268 a - size ; 1269 i( is_key ) { 1270 * of -- = ( t32_t ) key_off ; 1271 * of -- = ( t32_t ) key_size ; 1272 } i( c_key ) 1273 * of -- = ( t32_t ) -> o ; 1274 * of -- = ( t32_t )( - dbuf ); 1275 + size ; 1276 * of -- = ( t32_t ) size ; 1278 i( ed_pg ) { 1279 dp = ; 1280 size = gesize - `HOFFSET ( pg ); 1281 i( a < size ) { 1282 back_up : 1287 i( dx > adj ) 1288 dx - adj ; 1290 i(( t = 1291 `__bam_g_ev ( dbc )) != 0 && 1292 t ! DB_NOTFOUND ) 1293 ( t ); 1294 dx = ->indx; 1295 pg = -> ge ; 1297 i( dbc -> dbty = DB_RECNO ) 1298 -> o --; 1299 g_a : 1305 i( of >= 1306 ( is_key ? & dp [-1] :ndp) || 1307 `F_ISSET ( dbc , DBC_TRANSIENT )) { 1308 da -> size = ( u_t32_t ) 1309 `DB_ALIGN ( size + 1310 da -> un - a , 1024); 1311 ( DB_BUFFER_SMALL ); 1315 `memy ( dp , ( u_t8_t *) pg + `HOFFSET g), size ); 1316 ed_pg = 0; 1317 a - size ; 1318 + size ; 1324 i( is_key ) { 1325 * of -- = ( t32_t ) key_off ; 1326 * of -- = ( t32_t ) key_size ; 1327 } i( c_key ) 1328 * of -- = ( t32_t ) -> o ; 1329 * of -- = ( t32_t )(( p [ dx + adj - 1] - `HOFFSET ( pg )) 1330 + ( dp - dbuf + `SSZA ( BKEYDATA , da )); 1331 * of -- = bk -> n ; 1333 i( dbc -> dbty = DB_RECNO ) 1334 -> o ++; 1335 i( no_dup ) { 1336 dx + adj < `NUM_ENT ( pg ) && 1337 pg_keyoff = p [ dx + adj ]) 1338 dx + adj ; 1344 } ( dx + adj < `NUM_ENT ( pg ) && 1345 ( xt_key || pg_keyoff = p [ dx ])); 1348 i( t =0 && xt_key && dx > `NUM_ENT ( pg )) { 1349 -> dx = indx; 1350 t = `__bamc_xt ( dbc , 0, 1); 1351 i( t == 0) 1352 xt_pg ; 1353 i( t ! DB_NOTFOUND ) 1354 ( t ); 1364 i( t =0 && dx < pg -> s && 1365 `F_ISSET ( dbc , DBC_TRANSIENT && pg_keyoff = p [ dx ]) { 1366 da -> size = (da-> un - a ) + size; 1367 ( DB_BUFFER_SMALL ); 1374 i( t = DB_BUFFER_SMALL || xt_key || pg_keyoff = p [ dx ]) 1375 -> dx = indx; 1377 -> dx = indx - P_INDX ; 1379 i( c_key == 1) 1380 * of = RECNO_OOB ; 1382 * of = -1; 1384 } } 1394 $__bam_bulk_ovow ( dbc , n , pgno , dp ) 1395 DBC * dbc ; 1396 u_t32_t n ; 1397 db_pgno_t pgno ; 1398 u_t8_t * dp ; 1400 DBT dbt ; 1402 `memt (& dbt , 0, (dbt)); 1403 `F_SET (& dbt , DB_DBT_USERMEM ); 1404 dbt . un = n ; 1405 dbt . da = (*) dp ; 1406 ( `__db_goff ( dbc -> dbp , 1407 dbc -> thad_fo , dbc-> txn , & dbt , n , pgno , NULL , NULL)); 1408 } } 1420 $__bam_bulk_duis ( dbc , pgno , dbuf , keyoff , ofp , d , ap , no_dup ) 1421 DBC * dbc ; 1422 db_pgno_t pgno ; 1423 u_t8_t * dbuf ; 1424 t32_t * keyoff , ** ofp ; 1425 u_t8_t ** d ; 1426 u_t32_t * ap ; 1427 no_dup ; 1429 BKEYDATA * bk ; 1430 BOVERFLOW * bo ; 1431 BTREE_CURSOR * ; 1432 DB * dbp ; 1433 DBC * d ; 1434 DBT key , da ; 1435 PAGE * pg ; 1436 db_dx_t dx , * p ; 1437 t32_t * of ; 1438 u_t32_t gesize , size , a ; 1439 u_t8_t * dp , * ; 1440 f , ed_pg , t , t_t ; 1442 t = 0; 1444 dbp = dbc ->dbp; 1445 = ( BTREE_CURSOR *) dbc -> ; 1446 d = ->opd; 1448 i( d = NULL ) { 1449 i(( t = `__dbc_wd ( dbc , pgno , NULL , & d )) != 0) 1450 ( t ); 1451 -> d = opd; 1452 i(( t = d -> `am_g (opd, 1453 & key , & da , DB_FIRST , NULL )) != 0) 1454 o_d ; 1457 gesize = d -> dbp -> pgsize ; 1458 = ( BTREE_CURSOR *) d -> ; 1459 a = * ap ; 1461 of = * ofp ; 1467 = dp = * d ; 1468 f = 1; 1469 dx = ->indx; 1473 i(( t = `__bamc_xt ( d , 0, 0)) != 0) 1475 pg = -> ge ; 1476 dx = ->indx; 1477 p = `P_INP ( dbp , pg ); 1479 ed_pg = 1; 1482 i( `IS_DELETED ( dbp , pg , dx )) 1483 ct ; 1484 bk = `GET_BKEYDATA ( dbp , pg , dx ); 1485 a -2 * (* of ); 1487 i( f =0 && keyoff ! NULL ) 1488 a -2 * (* of ); 1491 i( a > * ap ) { 1492 t = DB_BUFFER_SMALL ; 1493 i( f == 1) { 1495 a = -( t32_t )space; 1496 a = * ap + space; 1497 i( ed_pg ) 1498 a + gesize - `HOFFSET ( pg ); 1502 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 1503 bo = ( BOVERFLOW *) bk ; 1504 size = bo -> ; 1505 i( size > a ) { 1506 t = DB_BUFFER_SMALL ; 1507 a = * ap + size ; 1510 i( f =0 && keyoff ! NULL ) { 1511 * of -- = keyoff [0]; 1512 * of -- = keyoff [-1]; 1514 i(( t = `__bam_bulk_ovow ( dbc , 1515 bo -> , bo-> pgno , )) != 0) 1516 ( t ); 1517 a - size ; 1518 * of -- = ( t32_t )( - dbuf ); 1519 + size ; 1521 i( ed_pg ) { 1522 dp = ; 1523 size = gesize - `HOFFSET ( pg ); 1524 i( a < size ) { 1525 t = DB_BUFFER_SMALL ; 1527 a = * ap + size ; 1530 `memy ( dp , 1531 ( u_t8_t *) pg + `HOFFSET g), size ); 1532 ed_pg = 0; 1533 a - size ; 1534 + size ; 1536 i( f =0 && keyoff ! NULL ) { 1537 * of -- = keyoff [0]; 1538 * of -- = keyoff [-1]; 1540 size = bk -> n ; 1541 * of -- = ( t32_t )(( p [ dx ] - `HOFFSET ( pg )) 1542 + ( dp - dbuf + `SSZA ( BKEYDATA , da )); 1544 * of -- = ( t32_t ) size ; 1545 f = 0; 1546 i( no_dup ) 1548 ct : 1549 dx ++; 1550 i( d -> dbty = DB_RECNO ) 1551 -> o ++; 1552 } dx < `NUM_ENT ( pg )); 1553 i( no_dup ) 1555 -> dx = indx; 1557 } t == 0); 1560 * ap = a ; 1561 * ofp = of ; 1562 * d = ; 1568 i( t = DB_BUFFER_SMALL ) { 1569 i( d -> dbty = DB_RECNO ) { 1570 i(-- -> o == 0) 1571 o_d ; 1572 } i( dx != 0) 1573 -> dx --; 1575 t_t = `__bamc_ev ( d ); 1576 i( t_t = DB_NOTFOUND ) 1577 o_d ; 1578 i( t_t != 0) 1579 t = t_t ; 1581 } i( keyoff = NULL && t = DB_NOTFOUND ) { 1582 -> dx --; 1583 i( d -> dbty = DB_RECNO ) 1584 -- -> o ; 1585 } i( dx =0 || t = DB_NOTFOUND ) { 1586 o_d : 1587 i( t = DB_NOTFOUND ) 1588 t = 0; 1589 i(( t_t = `__dbc_o ( d )!0 && t == 0) 1590 t = t_t ; 1591 (( BTREE_CURSOR *) dbc -> )-> d = NULL ; 1593 i( t = DB_NOTFOUND ) 1594 t = 0; 1596 ( t ); 1597 } } 1604 $__bam_gbhc ( dbc , da ) 1605 DBC * dbc ; 1606 DBT * da ; 1608 BTREE_CURSOR * ; 1609 DB * dbp ; 1610 DB_MPOOLFILE * mpf ; 1611 cmp , exa , t ; 1613 dbp = dbc ->dbp; 1614 mpf = dbp ->mpf; 1615 = ( BTREE_CURSOR *) dbc -> ; 1623 i(( t = `__memp_fg ( mpf , & -> pgno , 1624 dbc -> thad_fo , dbc-> txn , 0, & -> ge )) != 0) 1625 ( t ); 1632 i( `F_ISSET ( dbc , DBC_OPD )) { 1637 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , 1638 dbc -> txn , da , -> ge , cp-> dx , 1639 dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare, 1640 & cmp )) != 0) 1641 ( t ); 1643 i( cmp <= 0) 1644 ( DB_NOTFOUND ); 1647 i(( t = `__memp_ut ( mpf , 1648 dbc -> thad_fo , -> ge , dbc-> iܙy )) != 0) 1649 ( t ); 1650 -> ge = NULL ; 1652 ( `__bamc_ch ( dbc , 1653 PGNO_INVALID , da , DB_GET_BOTH , & exa )); 1665 i( -> dx + P_INDX > `NUM_ENT (-> ge ) || 1666 ! `IS_DUPLICATE ( dbc , -> dx , cp->dx + P_INDX )) 1667 ( DB_NOTFOUND ); 1668 -> dx + P_INDX ; 1670 ( `__bam_gbh_fddum ( dbc , da , DB_GET_BOTH )); 1671 } } 1678 $__bam_gbh_fddum ( dbc , da , ags ) 1679 DBC * dbc ; 1680 DBT * da ; 1681 u_t32_t ags ; 1683 BTREE_CURSOR * ; 1684 DB * dbp ; 1685 db_dx_t ba , lim , t ; 1686 cmp , t ; 1688 `COMPQUIET ( cmp , 0); 1690 dbp = dbc ->dbp; 1691 = ( BTREE_CURSOR *) dbc -> ; 1704 i( dbp -> dup_com = NULL ) { 1705 ;; -> dx + P_INDX ) { 1706 i(! `IS_CUR_DELETED ( dbc ) && 1707 ( t = `__bam_cmp ( dbp , dbc -> thad_fo , 1708 dbc -> txn , da , -> ge , 1709 -> dx + O_INDX , __bam_defcmp , & cmp )) != 0) 1710 ( t ); 1711 i( cmp == 0) 1714 i( -> dx + P_INDX > `NUM_ENT (-> ge ) || 1715 ! `IS_DUPLICATE ( dbc , -> dx , cp->dx + P_INDX )) 1718 ( DB_NOTFOUND ); 1729 ba = t = -> dx ; < `NUM_ENT (-> ge ); + P_INDX ) 1730 i(! `IS_DUPLICATE ( dbc , -> dx , t )) 1732 i( ba =( t - P_INDX )) { 1733 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , dbc-> txn , da , 1734 -> ge , cp-> dx + O_INDX , dbp -> dup_com , & cmp )) != 0) 1735 ( t ); 1736 ( cmp == 0 || 1737 ( cmp < 0 && ags = DB_GET_BOTH_RANGE ? 0 : DB_NOTFOUND ); 1740 lim = ( t - ba / ( db_dx_t ) P_INDX ;im != 0;im >>= 1) { 1741 -> dx = ba + (( lim >> 1* P_INDX ); 1742 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , dbc-> txn , da , 1743 -> ge , cp-> dx + O_INDX , dbp -> dup_com , & cmp )) != 0) 1744 ( t ); 1745 i( cmp == 0) { 1751 i(! `IS_CUR_DELETED ( dbc )) 1755 i( cmp > 0) { 1756 ba = -> dx + P_INDX ; 1757 -- lim ; 1762 i( ags = DB_GET_BOTH ) 1763 ( DB_NOTFOUND ); 1770 -> dx = ba ; 1771 -> dx < t && `IS_CUR_DELETED ( dbc )) 1772 -> dx + P_INDX ; 1773 ( -> dx < t ? 0 : DB_NOTFOUND ); 1774 } } 1781 $__bamc_put ( dbc , key , da , ags , pgn ) 1782 DBC * dbc ; 1783 DBT * key , * da ; 1784 u_t32_t ags ; 1785 db_pgno_t * pgn ; 1787 BTREE * t ; 1788 BTREE_CURSOR * ; 1789 DB * dbp ; 1790 DBT dbt ; 1791 DB_MPOOLFILE * mpf ; 1792 db_pgno_t ro_pgno ; 1793 u_t32_t ii ; 1794 cmp , exa , own , t , ack ; 1795 * g ; 1797 dbp = dbc ->dbp; 1798 mpf = dbp ->mpf; 1799 = ( BTREE_CURSOR *) dbc -> ; 1800 ro_pgno = -> ro ; 1802 l : t = ack = 0; 1803 ags ) { 1804 DB_CURRENT : 1805 i( `F_ISSET ( , C_DELETED )) 1806 ( DB_NOTFOUND ); 1809 DB_AFTER : 1810 DB_BEFORE : 1811 ii = ags ; 1812 own = 1; 1815 `ACQUIRE_WRITE_LOCK ( dbc , t ); 1816 i( t != 0) 1817 r ; 1818 i(( t = `__memp_fg ( mpf , & -> pgno , 1819 dbc -> thad_fo , dbc-> txn , 0, & -> ge )) != 0) 1820 r ; 1822 DB_KEYFIRST : 1823 DB_KEYLAST : 1824 DB_NODUPDATA : 1825 DB_NOOVERWRITE : 1826 own = 0; 1834 i( `F_ISSET ( dbc , DBC_OPD )) { 1835 i(( t = `__bamc_ch ( dbc , 1836 `F_ISSET ( , C_RECNUM ? cp-> ro : ro_pgno , 1837 da , ags , & exa )) != 0) 1838 r ; 1839 ack = 1; 1842 i( exa ) { 1843 i( `IS_DELETED ( dbp , -> ge , cp-> dx )) { 1844 ii = DB_CURRENT ; 1847 t = `__db_du ( dbp , ags ); 1848 r ; 1850 ii = DB_BEFORE ; 1863 i(( t = `__bamc_ch ( dbc , 1864 `F_ISSET ( , C_RECNUM ? cp-> ro : ro_pgno , key , 1865 ags = DB_KEYFIRST || dbp -> dup_com ! NULL ? 1866 DB_KEYFIRST : DB_KEYLAST , & exa )) != 0) 1867 r ; 1868 ack = 1; 1874 i(! exa ) { 1875 ii = DB_KEYFIRST ; 1882 } i( ags = DB_NOOVERWRITE && ! `IS_CUR_DELETED ( dbc )) { 1883 i( pgn ! NULL && `__bam_isd ( dbc ,gnop)) 1884 t = `__bam_d_exis ( dbc , * pgn ); 1886 t = DB_KEYEXIST ; 1887 i( t != 0) 1888 r ; 1894 i(! `F_ISSET ( dbp , DB_AM_DUP )) { 1895 ii = DB_CURRENT ; 1904 i( pgn ! NULL && `__bam_isd ( dbc ,gnop)) 1905 de ; 1908 i( dbp -> dup_com = NULL ) { 1909 i( ags = DB_KEYFIRST ) 1910 ii = DB_BEFORE ; 1912 ;; -> dx + P_INDX ) 1913 i( -> dx + P_INDX >= 1914 `NUM_ENT ( -> ge ) || 1915 ! `IS_DUPLICATE ( dbc , -> dx , 1916 -> dx + P_INDX )) { 1917 ii = DB_AFTER ; 1927 ;; -> dx + P_INDX ) { 1928 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , 1929 dbc -> txn , da , -> ge , 1930 -> dx + O_INDX , dbp -> dup_com , & cmp )) != 0) 1931 r ; 1932 i( cmp < 0) { 1933 ii = DB_BEFORE ; 1938 i( cmp == 0) { 1939 i( `IS_DELETED ( dbp , -> ge , cp-> dx )) { 1940 ii = DB_CURRENT ; 1943 t = `__db_du ( dbp , ags ); 1944 r ; 1947 i( -> dx + P_INDX > `NUM_ENT (-> ge ) || 1948 `P_INP ( dbp , (( PAGE *) -> ge ))[-> dx ] != 1949 `P_INP ( dbp , (( PAGE *) -> ge ))[-> dx + P_INDX ]) { 1950 ii = DB_AFTER ; 1956 t = `__db_unknown_ag ( dbp -> v , "__bamc_put", ags ); 1957 r ; 1960 t = `__bam_iem ( dbc , key , da , ii , 0)) { 1963 DB_NEEDSPLIT : 1968 i( ags = DB_AFTER || 1969 ags = DB_BEFORE || fg= DB_CURRENT ) { 1970 `memt (& dbt , 0, ( DBT )); 1971 i(( t = `__db_t ( dbp , dbc -> thad_fo , 1972 dbc -> txn , -> ge , 0, 1973 & dbt , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 1974 r ; 1975 g = & dbt ; 1977 g = `F_ISSET ( dbc , DBC_OPD ? da : key ; 1986 i( ack ) 1987 t = `__bam_kl ( dbc , STK_CLRDBC | STK_NOLOCK ); 1989 `DISCARD_CUR ( dbc , t ); 1990 i( t != 0) 1991 r ; 2001 i( own == 0) { 2002 -> pgno = PGNO_INVALID ; 2003 -> dx = 0; 2007 i(( t = `__bam_l ( dbc , g , & ro_pgno )) != 0) 2008 ( t ); 2010 l ; 2012 r ; 2015 r : 2016 de : 2029 t = dbp -> bt_ ; 2030 i( t =0 && `TYPE ( -> ge = P_LBTREE && 2031 ( ags = DB_KEYFIRST || fg= DB_KEYLAST ) && 2032 ! `F_ISSET ( , C_RECNUM ) && 2033 (! `F_ISSET ( dbp , DB_AM_SUBDB ) || 2034 ( `LOGGING_ON ( dbp -> v && ! `F_ISSET (dbp, DB_AM_NOT_DURABLE ))) && 2035 (( `NEXT_PGNO ( -> ge = PGNO_INVALID && 2036 -> dx > `NUM_ENT (-> ge - P_INDX ) || 2037 ( `PREV_PGNO ( -> ge = PGNO_INVALID && cp-> dx == 0))) { 2038 t -> bt_gno = -> pgno ; 2039 i( `F_ISSET ( dbp , DB_AM_SUBDB )) 2040 t -> bt_ = `LSN ( -> ge ); 2042 t -> bt_gno = PGNO_INVALID ; 2050 i( ack && `BT_STK_POP ( ! NULL ) 2051 () `__bam_kl ( dbc , 0); 2062 `F_CLR ( , C_DELETED ); 2063 i( -> d ! NULL ) { 2064 = ( BTREE_CURSOR *)-> d -> ; 2065 `F_CLR ( , C_DELETED ); 2068 ( t ); 2069 } } 2078 $__bamc_rg ( dbc , da ) 2079 DBC * dbc ; 2080 DBT * da ; 2082 BTREE_CURSOR * ; 2083 DB * dbp ; 2084 DBT dbt ; 2085 DB_MPOOLFILE * mpf ; 2086 db_o_t o ; 2087 exa , t , t_t ; 2089 dbp = dbc ->dbp; 2090 mpf = dbp ->mpf; 2091 = ( BTREE_CURSOR *) dbc -> ; 2098 i(( t = `__memp_fg ( mpf , & -> pgno , 2099 dbc -> thad_fo , dbc-> txn , 0, & -> ge )) != 0) 2100 ( t ); 2101 `memt (& dbt , 0, ( DBT )); 2102 i(( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , -> ge , 2103 -> dx , & dbt , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 2104 r ; 2105 t = `__memp_ut ( mpf , dbc -> thad_fo , -> ge , dbc-> iܙy ); 2106 -> ge = NULL ; 2107 i( t != 0) 2108 ( t ); 2110 i(( t = `__bam_ch ( dbc , PGNO_INVALID , & dbt , 2111 `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND , 2112 1, & o , & exa )) != 0) 2113 r ; 2115 t = `__db_tcy ( dbc -> v , da , 2116 & o , eo), & dbc -> rda -> da , &dbc->rda-> un ); 2119 r : i(( t_t = `__bam_kl ( dbc , 0)!0 && t == 0) 2120 t = t_t ; 2122 ( t ); 2123 } } 2130 $__bamc_wrock ( dbc ) 2131 DBC * dbc ; 2133 BTREE_CURSOR * ; 2134 t ; 2136 = ( BTREE_CURSOR *) dbc -> ; 2138 i( -> lock_mode = DB_LOCK_WRITE ) 2147 `ACQUIRE_WRITE_LOCK ( dbc , t ); 2148 ( t ); 2149 } } 2156 $__bamc_xt ( dbc , l_move , ded_okay ) 2157 DBC * dbc ; 2158 l_move , ded_okay ; 2160 BTREE_CURSOR * ; 2161 db_dx_t adju ; 2162 db_lockmode_t lock_mode ; 2163 db_pgno_t pgno ; 2164 t ; 2166 = ( BTREE_CURSOR *) dbc -> ; 2167 t = 0; 2176 i( `F_ISSET ( dbc , DBC_OPD )) { 2177 adju = O_INDX ; 2178 lock_mode = DB_LOCK_NG ; 2180 adju = dbc -> dbty = DB_BTREE ? P_INDX : O_INDX ; 2181 lock_mode = 2182 `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 2184 i( -> ge = NULL ) { 2185 `ACQUIRE_CUR ( dbc , lock_mode , -> pgno , 0, t ); 2186 i( t != 0) 2187 ( t ); 2190 i( l_move ) 2191 -> dx + adju ; 2201 i( -> dx > `NUM_ENT (-> ge )) { 2202 i(( pgno = `NEXT_PGNO ( -> ge )= PGNO_INVALID ) 2203 ( DB_NOTFOUND ); 2205 `ACQUIRE_CUR ( dbc , lock_mode , pgno , 0, t ); 2206 i( t != 0) 2207 ( t ); 2208 -> dx = 0; 2211 i(! ded_okay && `IS_CUR_DELETED ( dbc )) { 2212 -> dx + adju ; 2218 } } 2225 $__bamc_ev ( dbc ) 2226 DBC * dbc ; 2228 BTREE_CURSOR * ; 2229 db_dx_t adju ; 2230 db_lockmode_t lock_mode ; 2231 db_pgno_t pgno ; 2232 t ; 2234 = ( BTREE_CURSOR *) dbc -> ; 2235 t = 0; 2244 i( `F_ISSET ( dbc , DBC_OPD )) { 2245 adju = O_INDX ; 2246 lock_mode = DB_LOCK_NG ; 2248 adju = dbc -> dbty = DB_BTREE ? P_INDX : O_INDX ; 2249 lock_mode = 2250 `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 2252 i( -> ge = NULL ) { 2253 `ACQUIRE_CUR ( dbc , lock_mode , -> pgno , 0, t ); 2254 i( t != 0) 2255 ( t ); 2260 i( -> dx == 0) { 2261 i(( pgno = 2262 `PREV_PGNO ( -> ge )= PGNO_INVALID ) 2263 ( DB_NOTFOUND ); 2265 `ACQUIRE_CUR ( dbc , lock_mode , pgno , 0, t ); 2266 i( t != 0) 2267 ( t ); 2269 i(( -> dx = `NUM_ENT (-> ge )) == 0) 2274 -> dx - adju ; 2275 i( `IS_CUR_DELETED ( dbc )) 2281 } } 2288 $__bamc_ch ( dbc , ro_pgno , key , ags , exap ) 2289 DBC * dbc ; 2290 db_pgno_t ro_pgno ; 2291 cڡ DBT * key ; 2292 u_t32_t ags ; 2293 * exap ; 2295 BTREE * t ; 2296 BTREE_CURSOR * ; 2297 DB * dbp ; 2298 PAGE * h ; 2299 db_dx_t dx , * p ; 2300 db_pgno_t bt_gno ; 2301 db_o_t o ; 2302 u_t32_t sags ; 2303 cmp , t , t_t ; 2305 dbp = dbc ->dbp; 2306 = ( BTREE_CURSOR *) dbc -> ; 2307 t = dbp -> bt_ ; 2308 t = 0; 2314 `DISCARD_CUR ( dbc , t ); 2315 i( t != 0) 2316 ( t ); 2318 ags ) { 2319 DB_FIRST : 2320 sags = ( `F_ISSET ( dbc , DBC_RMW ? SR_WRITE : SR_READ | SR_MIN ; 2321 ch ; 2322 DB_LAST : 2323 sags = ( `F_ISSET ( dbc , DBC_RMW ? SR_WRITE : SR_READ | SR_MAX ; 2324 ch ; 2325 DB_SET_RECNO : 2326 i(( t = `__m_gno ( dbc , key , & o , 0)) != 0) 2327 ( t ); 2328 sags = 2329 ( `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND | SR_EXACT ; 2330 i(( t = `__bam_rch ( dbc , & o , sags , 1, exap )) != 0) 2331 ( t ); 2333 DB_SET : 2334 DB_GET_BOTH : 2335 sags = 2336 ( `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND | SR_EXACT ; 2337 ch ; 2338 DB_GET_BOTH_RANGE : 2339 sags = ( `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND ); 2340 ch ; 2341 DB_SET_RANGE : 2342 sags = 2343 ( `F_ISSET ( dbc , DBC_RMW ? SR_WRITE : SR_READ | SR_DUPFIRST ; 2344 ch ; 2345 DB_KEYFIRST : 2346 DB_NOOVERWRITE : 2347 sags = SR_KEYFIRST ; 2348 _ch ; 2349 DB_KEYLAST : 2350 DB_NODUPDATA : 2351 sags = SR_KEYLAST ; 2352 _ch : 2357 i( `F_ISSET ( dbc , DBC_OPD )) 2358 ch ; 2369 bt_gno = t ->bt_lpgno; 2374 i( bt_gno = PGNO_INVALID ) 2375 ch ; 2385 h = NULL ; 2386 `ACQUIRE_CUR ( dbc , DB_LOCK_WRITE , bt_gno , DB_LOCK_NOWAIT , t ); 2387 i( t != 0) { 2388 i( t = DB_LOCK_DEADLOCK || 2389 t = DB_LOCK_NOTGRANTED || 2390 t = DB_PAGE_NOTFOUND ) 2391 t = 0; 2392 _miss ; 2395 h = -> ge ; 2396 p = `P_INP ( dbp , h ); 2402 i( `TYPE ( h ! P_LBTREE || `NUM_ENT (h) == 0) 2403 _miss ; 2406 i( `F_ISSET ( dbp , DB_AM_SUBDB ) && 2407 `LOG_COMPARE (& t -> bt_ , & `LSN ( h )) != 0) 2408 _miss ; 2417 i( h -> xt_pgno = PGNO_INVALID ) { 2418 dx = `NUM_ENT ( h - P_INDX ; 2419 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , dbc-> txn , 2420 key , h , dx , t -> bt_com , & cmp )) != 0) 2421 _miss ; 2423 i( cmp < 0) 2424 y_beg ; 2425 i( cmp > 0) { 2426 dx + P_INDX ; 2427 _h ; 2437 i( ags = DB_KEYLAST ) 2438 _h ; 2440 dx > 0 && p [dx - P_INDX ] == inp[indx]; 2441 dx - P_INDX ) 2443 _h ; 2445 y_beg : i( h -> ev_pgno = PGNO_INVALID ) { 2446 dx = 0; 2447 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , dbc-> txn , 2448 key , h , dx , t -> bt_com , & cmp )) != 0) 2449 _miss ; 2451 i( cmp > 0) 2452 _miss ; 2453 i( cmp < 0) 2454 _h ; 2463 i( ags = DB_KEYFIRST ) 2464 _h ; 2466 dx < ( db_dx_t )( `NUM_ENT ( h - P_INDX ) && 2467 p [ dx ] =p[dx + P_INDX ]; 2468 dx + P_INDX ) 2470 _h ; 2472 _miss ; 2474 _h : 2475 * exap = cmp == 0; 2481 `BT_STK_CLR ( ); 2482 `BT_STK_ENTER ( dbp -> v , 2483 , h , dx , cp-> lock , cp-> lock_mode , t ); 2484 i( t != 0) 2485 ( t ); 2488 _miss : 2494 `DISCARD_CUR ( dbc , t ); 2495 -> pgno = PGNO_INVALID ; 2496 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 2497 t = t_t ; 2498 i( t != 0) 2499 ( t ); 2501 ch : i(( t = `__bam_ch ( dbc , ro_pgno , 2502 key , sags , 1, NULL , exap )) != 0) 2503 ( t ); 2506 ( `__db_unknown_ag ( dbp -> v , "__bamc_ch", ags )); 2509 -> ge = cp-> c ->page; 2510 -> pgno = cp-> c -> ge ->pgno; 2511 -> dx = cp-> c ->indx; 2512 -> lock = cp-> c ->lock; 2513 -> lock_mode = cp-> c ->lock_mode; 2516 i( ags = DB_FIRST && 2517 ( `NUM_ENT ( -> ge =0 || `IS_CUR_DELETED ( dbc ))) 2518 i(( t = `__bamc_xt ( dbc , 0, 0)) != 0) 2519 ( t ); 2520 i( ags = DB_LAST && 2521 ( `NUM_ENT ( -> ge =0 || `IS_CUR_DELETED ( dbc ))) 2522 i(( t = `__bamc_ev ( dbc )) != 0) 2523 ( t ); 2526 } } 2533 $__bamc_physd ( dbc ) 2534 DBC * dbc ; 2536 BTREE_CURSOR * ; 2537 DB * dbp ; 2538 DBT key ; 2539 de_ge , emy_ge , exa , t ; 2541 dbp = dbc ->dbp; 2542 `memt (& key , 0, ( DBT )); 2543 = ( BTREE_CURSOR *) dbc -> ; 2544 de_ge = emy_ge = t = 0; 2547 de_ge = emy_ge = 2548 `NUM_ENT ( -> ge =( `TYPE (->ge= P_LBTREE ? 2 : 1); 2555 i( de_ge && 2556 ! `F_ISSET ( dbc , DBC_OPD && F_ISSET( dbp , DB_AM_REVSPLITOFF )) 2557 de_ge = 0; 2564 i( de_ge && -> pgno =-> ro ) 2565 de_ge = 0; 2578 i( de_ge ) { 2579 i(( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , -> ge , 2580 0, & key , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 2581 ( t ); 2599 i(( t = `__memp_dty ( dbp -> mpf , 2600 & -> ge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 2601 ( t ); 2602 i( `TYPE ( -> ge = P_LBTREE ) { 2603 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 2604 ( t ); 2605 i(! emy_ge ) 2606 i(( t = `__bam__di ( dbc , 2607 `PGNO ( -> ge ), cp-> dx , -1)) != 0) 2608 ( t ); 2610 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 2611 ( t ); 2614 `F_CLR ( , C_DELETED ); 2616 i(! emy_ge ) 2617 i(( t = `__bam__di ( dbc , `PGNO ( -> ge ), cp-> dx , -1)) != 0) 2618 ( t ); 2623 i( `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED )) { 2624 i(( t = `__TLPUT ( dbc , -> lock )) != 0) 2625 ( t ); 2626 -> lock_mode = DB_LOCK_WWRITE ; 2629 i(! de_ge ) 2632 t = `__bam_ch ( dbc , PGNO_INVALID , & key , SR_DEL , 0, NULL , & exa ); 2638 i( t == 0) 2639 `DISCARD_CUR ( dbc , t ); 2640 i( t == 0) 2641 t = `__bam_dges ( dbc , 1, 0); 2643 () `__bam_kl ( dbc , 0); 2645 ( t ); 2646 } } 2653 $__bamc_gack ( dbc ) 2654 DBC * dbc ; 2656 BTREE_CURSOR * ; 2657 DB * dbp ; 2658 DBT dbt ; 2659 DB_MPOOLFILE * mpf ; 2660 PAGE * h ; 2661 exa , t , t_t ; 2663 dbp = dbc ->dbp; 2664 mpf = dbp ->mpf; 2665 = ( BTREE_CURSOR *) dbc -> ; 2672 i(( t = `__memp_fg ( mpf , & -> pgno , 2673 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 2674 ( t ); 2677 `memt (& dbt , 0, ( DBT )); 2678 i(( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , 2679 h , 0, & dbt , & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 2680 r ; 2683 exa = 0; 2684 t = `__bam_ch ( dbc , PGNO_INVALID , 2685 & dbt , SR_KEYFIRST , 1, NULL , & exa ); 2687 r : 2688 i(( t_t = `__memp_ut ( mpf , 2689 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 2690 t = t_t ; 2692 ( t ); 2693 } } 2701 $__bam_isd ( dbc , pgn ) 2702 DBC * dbc ; 2703 db_pgno_t * pgn ; 2705 BOVERFLOW * bo ; 2707 i( `TYPE ( dbc -> -> ge ! P_LBTREE ) 2710 bo = `GET_BOVERFLOW ( dbc -> dbp , 2711 dbc -> -> ge , dbc->-> dx + O_INDX ); 2712 i( `B_TYPE ( bo -> ty = B_DUPLICATE ) { 2713 * pgn = bo -> pgno ; 2717 } } 2725 $__bam_d_exis ( dbc , pgno ) 2726 DBC * dbc ; 2727 db_pgno_t pgno ; 2729 PAGE * h ; 2730 t ; 2732 i(( t = `__memp_fg ( dbc -> dbp -> mpf , & pgno , 2733 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 2734 ( t ); 2741 i( `NUM_ENT ( h ) == 0) 2742 t = 0; 2744 t = DB_KEYEXIST ; 2746 () `__memp_ut ( dbc -> dbp -> mpf , dbc-> thad_fo , h , dbc-> iܙy ); 2748 ( t ); 2749 } } @../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 -> v , `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 -> v , `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 -> v , `PGNO ( h ))); 150 ( `__db_pgfmt ( dbp -> v , `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 -> thad_fo , 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 , dbc -> thad_fo , g -> ge , dbc-> iܙy ); 297 g -> ge = NULL ; 298 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 299 t = t_t ; 300 i( t != 0) 301 r_c ; 304 disrd : g = -> ;pg < ack_g ; ++epg) { 305 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 306 g -> ge , dbc -> iܙy )!0 && t == 0) 307 t = t_t ; 308 g -> ge = NULL ; 309 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 310 t = t_t ; 312 i( t != 0) 313 r ; 316 ++ g < -> c ) { 317 i(( t = `__memp_dty ( mpf , & g -> ge , 318 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 319 r ; 326 i( `NUM_ENT ( g -> ge ) != 0) { 327 `DB_ASSERT ( dbp -> v , `LEVEL ( g -> ge ) != 1); 329 i(( t = `__bam_dem ( dbc , g -> ge ,pg-> dx )) != 0) 330 r ; 338 i( `NUM_ENT ( g -> ge ) != 0) 339 r ; 342 t = `__db_ ( dbc , g -> ge ); 343 i( -> ge = g ->page) 344 -> ge = NULL ; 345 g -> ge = NULL ; 346 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 347 t = t_t ; 348 i( t != 0) 349 r_c ; 353 r_c : ++ g ; 354 r : ; g < -> c ; ++epg) { 355 i( g -> ge ! NULL ) { 356 () `__memp_ut ( mpf , dbc -> thad_fo , 357 g -> ge , dbc -> iܙy ); 358 g -> ge = NULL ; 360 () `__TLPUT ( dbc , g -> lock ); 362 `BT_STK_CLR ( ); 363 ( t ); 365 `BT_STK_CLR ( ); 373 ro_pgno = -> ro ; 374 i( pgno ! ro_pgno || nems != 1) 377 de = 0; !done;) { 379 = chd = NULL ; 380 `LOCK_INIT ( p_lock ); 381 `LOCK_INIT ( c_lock ); 384 pgno = ro_pgno ; 385 i(( t = 386 `__db_lg ( dbc , 0, pgno , DB_LOCK_WRITE , 0, & p_lock )) != 0) 387 ; 388 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 389 DB_MPOOL_DIRTY , & )) != 0) 390 ; 392 i( `NUM_ENT ( ) != 1) 393 ; 395 `TYPE ( )) { 396 P_IBTREE : 401 bi = `GET_BINTERNAL ( dbp , , 0); 402 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) 403 i(( t = `__db_doff ( dbc , 404 (( BOVERFLOW *) bi -> da )-> pgno )) != 0) 405 ; 406 pgno = bi ->pgno; 408 P_IRECNO : 409 pgno = `GET_RINTERNAL ( dbp , , 0)->pgno; 412 ; 416 i(( t = 417 `__db_lg ( dbc , 0, pgno , DB_LOCK_WRITE , 0, & c_lock )) != 0) 418 ; 419 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 420 DB_MPOOL_DIRTY , & chd )) != 0) 421 ; 424 i( `DBC_LOGGING ( dbc )) { 425 `memt (& a , 0, (a)); 426 a . da = chd ; 427 a . size = dbp -> pgsize ; 428 `memt (& b , 0, (b)); 429 b . da = `P_ENTRY ( dbp , , 0); 430 b . size = `TYPE ( = P_IRECNO ? RINTERNAL_SIZE : 431 `BINTERNAL_SIZE ((( BINTERNAL *) b . da )-> n ); 432 i(( t = `__bam_rl_log ( dbp , dbc -> txn , 433 & chd -> l , 0, `PGNO (chd), & a , PGNO( ), 434 `RE_NREC ( ), & b , &-> l )) != 0) 435 ; 437 `LSN_NOT_LOGGED ( chd -> l ); 450 `COMPQUIET ( rt , 0); 451 i( `F_ISSET ( , C_RECNUM && `LEVEL ( chd > LEAFLEVEL ) 452 rt = `RE_NREC ( ); 453 `memy ( , chd , dbp -> pgsize ); 454 `PGNO ( ro_pgno ; 455 i( `F_ISSET ( , C_RECNUM && `LEVEL ( chd > LEAFLEVEL ) 456 `RE_NREC_SET ( , rt ); 459 i(( t = `__bam__rl ( dbc , `PGNO ( chd ), ro_pgno )) != 0) 460 ; 467 i(( t = `__db_ ( dbc , chd )) != 0) { 468 chd = NULL ; 469 ; 471 chd = NULL ; 474 : de = 1; 476 i(( t_t = `__TLPUT ( dbc , p_lock )!0 && t == 0) 477 t = t_t ; 478 i( ! NULL && 479 ( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 480 , dbc -> iܙy )!0 && t == 0) 481 t = t_t ; 482 i(( t_t = `__TLPUT ( dbc , c_lock )!0 && t == 0) 483 t = t_t ; 484 i( chd ! NULL && 485 ( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 486 chd , dbc -> iܙy )!0 && t == 0) 487 t = t_t ; 490 ( t ); 491 } } 500 $__bam_lk ( dbc , g , w_pgno ) 501 DBC * dbc ; 502 PAGE * g ; 503 db_pgno_t w_pgno ; 505 DB * dbp ; 506 DB_LOCK l , l ; 507 DB_LSN * Ƣp , * p , t_l ; 508 DB_MPOOLFILE * mpf ; 509 PAGE * , * ; 510 t , t_t ; 512 dbp = dbc ->dbp; 513 = = NULL ; 514 `LOCK_INIT ( l ); 515 `LOCK_INIT ( l ); 516 Ƣp = p = NULL ; 517 mpf = dbp ->mpf; 518 t = 0; 525 i( g -> xt_pgno ! PGNO_INVALID ) { 526 i(( t = `__db_lg ( dbc , 527 0, g -> xt_pgno , DB_LOCK_WRITE , 0, & l )) != 0) 528 r ; 529 i(( t = `__memp_fg ( mpf , & g -> xt_pgno , 530 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & )) != 0) { 531 t = `__db_pgr ( dbp , g -> xt_pgno ,et); 532 r ; 534 Ƣp = & -> l ; 536 i( g -> ev_pgno ! PGNO_INVALID ) { 537 i(( t = `__db_lg ( dbc , 538 0, g -> ev_pgno , DB_LOCK_WRITE , 0, & l )) != 0) 539 r ; 540 i(( t = `__memp_fg ( mpf , & g -> ev_pgno , 541 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & )) != 0) { 542 t = `__db_pgr ( dbp , g -> ev_pgno ,et); 543 r ; 545 p = & -> l ; 549 i( `DBC_LOGGING ( dbc )) { 550 i(( t = `__bam_lk_log ( dbp , dbc -> txn , & t_l , 0, 551 g -> pgno , w_pgno ,ag-> ev_pgno , p , 552 g -> xt_pgno , Ƣp )) != 0) 553 r ; 555 `LSN_NOT_LOGGED ( t_l ); 556 i( ! NULL ) 557 -> l = t_l ; 558 i( ! NULL ) 559 -> l = t_l ; 564 i( ! NULL ) { 565 i( w_pgno = PGNO_INVALID ) 566 -> ev_pgno = g ->prev_pgno; 568 -> ev_pgno = w_pgno ; 569 t = `__memp_ut ( mpf , dbc -> thad_fo , , dbc-> iܙy ); 570 i(( t_t = `__TLPUT ( dbc , l )!0 && t == 0) 571 t = t_t ; 572 i( t != 0) 573 r ; 576 i( ! NULL ) { 577 i( w_pgno = PGNO_INVALID ) 578 -> xt_pgno = g ->next_pgno; 580 -> xt_pgno = w_pgno ; 581 t = `__memp_ut ( mpf , dbc -> thad_fo , , dbc-> iܙy ); 582 i(( t_t = `__TLPUT ( dbc , l )!0 && t == 0) 583 t = t_t ; 584 i( t != 0) 585 r ; 589 r : i( ! NULL ) 590 () `__memp_ut ( mpf , dbc -> thad_fo , , dbc-> iܙy ); 591 () `__TLPUT ( dbc , l ); 592 i( ! NULL ) 593 () `__memp_ut ( mpf , dbc -> thad_fo , , dbc-> iܙy ); 594 () `__TLPUT ( dbc , l ); 595 ( t ); 596 } } 605 $__bam_pupde ( dbc , g ) 606 DBC * dbc ; 607 PAGE * g ; 609 BTREE_CURSOR * ; 610 ENV * v ; 611 EPG * g ; 612 t ; 614 v = dbc ->env; 615 = ( BTREE_CURSOR *) dbc -> ; 616 t = 0; 624 g = & -> c [-1];pg >-> ;pg--) { 625 i(( t = `__memp_dty ( dbc -> dbp -> mpf , & g -> ge , 626 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 627 ( t ); 628 i(( t = `__bam_dem ( dbc , g -> ge ,pg-> dx )) != 0) 629 ( t ); 630 g -> dx --; 631 i(( t = `__bam_p ( dbc , g , 0, 632 g , g [1]. ge , BPI_NORECNUM )) != 0) { 633 i( t = DB_NEEDSPLIT ) { 635 `__db_rx ( v , 637 dbc -> dbp -> ame , ( u_lg ) `PGNO ( g -> ge )); 638 t = `__v_nic ( v , EINVAL ); 640 ( t ); 643 ( t ); 644 } } @../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 -> v , 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 -> v , t -> _sour ); 92 `__os_ ( dbp -> v , 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 -> v , "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 -> v , "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 -> v , _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_THREAD_INFO * ; 69 DB_TXN * txn ; 70 cڡ * me ; 71 db_pgno_t ba_pgno ; 72 u_t32_t ags ; 74 BTREE * t ; 76 `COMPQUIET ( me , NULL ); 77 t = dbp -> bt_ ; 84 i( t -> bt_com = __bam_defcmp &&-> bt_efix ! __bam_defx ) { 85 `__db_rx ( dbp -> v , 87 ( EINVAL ); 94 i( `B_MINKEY_TO_OVFLSIZE ( dbp , t -> bt_mkey , dbp-> pgsize ) > 95 `B_MINKEY_TO_OVFLSIZE ( dbp , DEFMINKEYPAGE , dbp-> pgsize )) { 96 `__db_rx ( dbp -> v , 98 ( u_lg ) t -> bt_mkey , (u_lg) dbp -> pgsize ); 99 ( EINVAL ); 103 ( `__bam_ad_ro ( dbp , , txn , ba_pgno , ags )); 104 } } 112 $__bam_machk ( dbp , me , btm ) 113 DB * dbp ; 114 cڡ * me ; 115 BTMETA * btm ; 117 ENV * v ; 118 u_t32_t vs ; 119 t ; 121 v = dbp ->env; 127 vs = btm -> dbma . vsi ; 128 i( `F_ISSET ( dbp , DB_AM_SWAP )) 129 `M_32_SWAP ( vs ); 130 vs ) { 133 `__db_rx ( v , 135 me , ( u_lg ) vs ); 136 ( DB_OLD_VERSION ); 141 `__db_rx ( v , 142 "%s: unsu܋d b vsi: %lu", me , ( u_lg ) vs ); 143 ( EINVAL ); 147 i( `F_ISSET ( dbp , DB_AM_SWAP ) && 148 ( t = `__bam_msw ( v , ( PAGE *) btm )) != 0) 149 ( t ); 155 i(( t = 156 `__db_fchk ( v , "DB->ݒ", btm -> dbma . ags , BTM_MASK )) != 0) 157 ( t ); 159 i( `F_ISSET (& btm -> dbma , BTM_RECNO )) { 160 i( dbp -> ty = DB_BTREE ) 161 wrg_ty ; 162 dbp -> ty = DB_RECNO ; 163 `DB_ILLEGAL_METHOD ( dbp , DB_OK_RECNO ); 165 i( dbp -> ty = DB_RECNO ) 166 wrg_ty ; 167 dbp -> ty = DB_BTREE ; 168 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE ); 171 i( `F_ISSET (& btm -> dbma , BTM_DUP )) 172 `F_SET ( dbp , DB_AM_DUP ); 174 i( `F_ISSET ( dbp , DB_AM_DUP )) { 175 `__db_rx ( v , 177 me ); 178 ( EINVAL ); 181 i( `F_ISSET (& btm -> dbma , BTM_RECNUM )) { 182 i( dbp -> ty ! DB_BTREE ) 183 wrg_ty ; 184 `F_SET ( dbp , DB_AM_RECNUM ); 186 i(( t = `__db_fcchk ( v , 187 "DB->ݒ", dbp -> ags , DB_AM_DUP , DB_AM_RECNUM )) != 0) 188 ( t ); 190 i( `F_ISSET ( dbp , DB_AM_RECNUM )) { 191 `__db_rx ( v , 193 me ); 194 ( EINVAL ); 197 i( `F_ISSET (& btm -> dbma , BTM_FIXEDLEN )) { 198 i( dbp -> ty ! DB_RECNO ) 199 wrg_ty ; 200 `F_SET ( dbp , DB_AM_FIXEDLEN ); 202 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) { 203 `__db_rx ( v , 205 me ); 206 ( EINVAL ); 209 i( `F_ISSET (& btm -> dbma , BTM_RENUMBER )) { 210 i( dbp -> ty ! DB_RECNO ) 211 wrg_ty ; 212 `F_SET ( dbp , DB_AM_RENUMBER ); 214 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) { 215 `__db_rx ( v , 217 me ); 218 ( EINVAL ); 221 i( `F_ISSET (& btm -> dbma , BTM_SUBDB )) 222 `F_SET ( dbp , DB_AM_SUBDB ); 224 i( `F_ISSET ( dbp , DB_AM_SUBDB )) { 225 `__db_rx ( v , 227 me ); 228 ( EINVAL ); 231 i( `F_ISSET (& btm -> dbma , BTM_DUPSORT )) { 232 i( dbp -> dup_com = NULL ) 233 dbp -> dup_com = __bam_defcmp ; 234 `F_SET ( dbp , DB_AM_DUPSORT ); 236 i( dbp -> dup_com ! NULL ) { 237 `__db_rx ( v , 239 me ); 240 ( EINVAL ); 244 dbp -> pgsize = btm -> dbma . gesize ; 247 `memy ( dbp -> feid , btm -> dbma . uid , DB_FILE_ID_LEN ); 251 wrg_ty : 252 i( dbp -> ty = DB_BTREE ) 253 `__db_rx ( v , 256 `__db_rx ( v , 258 ( EINVAL ); 259 } } 269 $__bam_ad_ro ( dbp , , txn , ba_pgno , ags ) 270 DB * dbp ; 271 DB_THREAD_INFO * ; 272 DB_TXN * txn ; 273 db_pgno_t ba_pgno ; 274 u_t32_t ags ; 276 BTMETA * ma ; 277 BTREE * t ; 278 DBC * dbc ; 279 DB_LOCK mock ; 280 DB_MPOOLFILE * mpf ; 281 t , t_t ; 283 `COMPQUIET ( ags , 0); 285 ma = NULL ; 286 t = dbp -> bt_ ; 287 `LOCK_INIT ( mock ); 288 mpf = dbp ->mpf; 289 t = 0; 292 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 293 ( t ); 296 i(( t = 297 `__db_lg ( dbc , 0, ba_pgno , DB_LOCK_READ , 0, & mock )) != 0) 298 r ; 299 i(( t = `__memp_fg ( mpf , & ba_pgno , , dbc -> txn , 0, & ma )) != 0) 300 r ; 310 i( ma -> dbma . magic = DB_BTREEMAGIC ) { 311 t -> bt_mkey = ma -> mkey ; 312 t -> _d = () ma ->re_pad; 313 t -> _n = ma ->re_len; 315 t -> bt_ma = ba_pgno ; 316 t -> bt_ro = ma -> ro ; 317 i( `PGNO ( ma = PGNO_BASE_MD && ! `F_ISSET ( dbp , DB_AM_RECOVER )) 318 `__memp_t_ϡ_pgno ( mpf , ma -> dbma . ϡ_pgno ); 320 `DB_ASSERT ( dbp -> v , 321 `IS_RECOVERING ( dbp -> v || `F_ISSET (dbp, DB_AM_RECOVER )); 333 t -> bt_gno = PGNO_INVALID ; 335 r : 336 i( ma ! NULL && ( t_t = `__memp_ut ( mpf , 337 , ma , dbc -> iܙy )!0 && t == 0) 338 t = t_t ; 339 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 340 t = t_t ; 342 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 343 t = t_t ; 344 ( t ); 345 } } 354 $__bam__ma ( dbp , ma , pgno , lp ) 355 DB * dbp ; 356 BTMETA * ma ; 357 db_pgno_t pgno ; 358 DB_LSN * lp ; 360 BTREE * t ; 361 ENV * v ; 363 v = dbp ->env; 364 t = dbp -> bt_ ; 366 `memt ( ma , 0, ( BTMETA )); 367 ma -> dbma . l = * lp ; 368 ma -> dbma . pgno =gno; 369 ma -> dbma . magic = DB_BTREEMAGIC ; 370 ma -> dbma . vsi = DB_BTREEVERSION ; 371 ma -> dbma . gesize = dbp -> pgsize ; 372 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 373 `FLD_SET ( ma -> dbma . maags , DBMETA_CHKSUM ); 374 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 375 ma -> dbma . y_g = v -> yo_hd -> g ; 376 `DB_ASSERT ( v , ma -> dbma . y_g != 0); 377 ma -> yo_magic = ma-> dbma . magic ; 379 ma -> dbma . ty = P_BTREEMETA ; 380 ma -> dbma . = PGNO_INVALID ; 381 ma -> dbma . ϡ_pgno = pgno ; 382 i( `F_ISSET ( dbp , DB_AM_DUP )) 383 `F_SET (& ma -> dbma , BTM_DUP ); 384 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) 385 `F_SET (& ma -> dbma , BTM_FIXEDLEN ); 386 i( `F_ISSET ( dbp , DB_AM_RECNUM )) 387 `F_SET (& ma -> dbma , BTM_RECNUM ); 388 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) 389 `F_SET (& ma -> dbma , BTM_RENUMBER ); 390 i( `F_ISSET ( dbp , DB_AM_SUBDB )) 391 `F_SET (& ma -> dbma , BTM_SUBDB ); 392 i( dbp -> dup_com ! NULL ) 393 `F_SET (& ma -> dbma , BTM_DUPSORT ); 394 i( dbp -> ty = DB_RECNO ) 395 `F_SET (& ma -> dbma , BTM_RECNO ); 396 `memy ( ma -> dbma . uid , dbp -> feid , DB_FILE_ID_LEN ); 398 ma -> mkey = t -> bt_mkey ; 399 ma -> _n = t ->re_len; 400 ma -> _d = ( u_t32_t ) t ->re_pad; 401 } } 417 $__bam_w_fe ( dbp , , txn , fhp , me ) 418 DB * dbp ; 419 DB_THREAD_INFO * ; 420 DB_TXN * txn ; 421 DB_FH * fhp ; 422 cڡ * me ; 424 BTMETA * ma ; 425 DBT pdbt ; 426 DB_LSN l ; 427 DB_MPOOLFILE * mpf ; 428 DB_PGINFO pgfo ; 429 ENV * v ; 430 PAGE * ro ; 431 db_pgno_t pgno ; 432 t , t_t ; 433 * buf ; 435 v = dbp ->env; 436 mpf = dbp ->mpf; 437 ro = NULL ; 438 ma = NULL ; 439 buf = NULL ; 441 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 443 pgno = PGNO_BASE_MD ; 444 i(( t = `__memp_fg ( mpf , & pgno , , txn , 445 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ma )) != 0) 446 ( t ); 447 `LSN_NOT_LOGGED ( l ); 448 `__bam__ma ( dbp , ma , PGNO_BASE_MD , & l ); 449 ma -> ro = 1; 450 ma -> dbma . ϡ_pgno = 1; 451 i(( t = 452 `__db_log_ge ( dbp , txn , & l , pgno , ( PAGE *) ma )) != 0) 453 r ; 454 t = `__memp_ut ( mpf , , ma , dbp -> iܙy ); 455 ma = NULL ; 456 i( t != 0) 457 r ; 460 pgno = 1; 461 i(( t = `__memp_fg ( mpf , & pgno , 462 , txn , DB_MPOOL_CREATE , & ro )) != 0) 463 r ; 464 `P_INIT ( ro , dbp -> pgsize , 1, PGNO_INVALID , PGNO_INVALID, 465 LEAFLEVEL , dbp -> ty = DB_RECNO ? P_LRECNO : P_LBTREE ); 466 `LSN_NOT_LOGGED ( ro -> l ); 467 i(( t = 468 `__db_log_ge ( dbp , txn , & ro -> l , pgno ,oot)) != 0) 469 r ; 470 t = `__memp_ut ( mpf , , ro , dbp -> iܙy ); 471 ro = NULL ; 472 i( t != 0) 473 r ; 475 `memt (& pdbt , 0, (pdbt)); 478 pgfo . db_gesize = dbp -> pgsize ; 479 pgfo . ags = 480 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 481 pgfo . ty = dbp ->type; 482 pdbt . da = & pgfo ; 483 pdbt . size = ( pgfo ); 484 i(( t = `__os_oc ( v , 1, dbp -> pgsize , & buf )) != 0) 485 ( t ); 486 ma = ( BTMETA *) buf ; 487 `LSN_NOT_LOGGED ( l ); 488 `__bam__ma ( dbp , ma , PGNO_BASE_MD , & l ); 489 ma -> ro = 1; 490 ma -> dbma . ϡ_pgno = 1; 491 i(( t = `__db_pgout ( 492 dbp -> dbv , PGNO_BASE_MD , ma , & pdbt )) != 0) 493 r ; 494 i(( t = `__f_wre ( v , txn , me , DB_APP_DATA , fhp , 495 dbp -> pgsize , 0, 0, buf , dbp->pgsize, 1, `F_ISSET ( 496 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 497 r ; 498 ma = NULL ; 501 #ifde DIAGNOSTIC 502 `memt ( buf , CLEAR_BYTE , dbp -> pgsize ); 504 ro = ( PAGE *) buf ; 505 `P_INIT ( ro , dbp -> pgsize , 1, PGNO_INVALID , PGNO_INVALID, 506 LEAFLEVEL , dbp -> ty = DB_RECNO ? P_LRECNO : P_LBTREE ); 507 `LSN_NOT_LOGGED ( ro -> l ); 508 i(( t = 509 `__db_pgout ( dbp -> dbv , ro -> pgno ,o, & pdbt )) != 0) 510 r ; 511 i(( t = `__f_wre ( v , txn , me , DB_APP_DATA , fhp , 512 dbp -> pgsize , 1, 0, buf , dbp->pgsize, 1, `F_ISSET ( 513 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 514 r ; 515 ro = NULL ; 518 r : i( buf ! NULL ) 519 `__os_ ( v , buf ); 521 i( ma ! NULL && 522 ( t_t = `__memp_ut ( mpf , , 523 ma , dbp -> iܙy )!0 && t == 0) 524 t = t_t ; 525 i( ro ! NULL && 526 ( t_t = `__memp_ut ( mpf , , 527 ro , dbp -> iܙy )!0 && t == 0) 528 t = t_t ; 530 ( t ); 531 } } 540 $__bam_w_subdb ( mdbp , dbp , , txn ) 541 DB * mdbp , * dbp ; 542 DB_THREAD_INFO * ; 543 DB_TXN * txn ; 545 BTMETA * ma ; 546 DBC * dbc ; 547 DB_LOCK mock ; 548 DB_LSN l ; 549 DB_MPOOLFILE * mpf ; 550 ENV * v ; 551 PAGE * ro ; 552 t , t_t ; 554 v = mdbp ->env; 555 mpf = mdbp ->mpf; 556 dbc = NULL ; 557 ma = NULL ; 558 ro = NULL ; 560 i(( t = `__db_curs ( mdbp , , txn , 561 & dbc , `CDB_LOCKING ( v ? DB_WRITECURSOR : 0)) != 0) 562 ( t ); 565 i(( t = `__db_lg ( dbc , 566 0, dbp -> ma_pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 567 r ; 568 i(( t = `__memp_fg ( mpf , & dbp -> ma_pgno , 569 , txn , DB_MPOOL_CREATE , & ma )) != 0) 570 r ; 573 l = ma -> dbma .lsn; 574 `__bam__ma ( dbp , ma , dbp-> ma_pgno , & l ); 575 i(( t = `__db_log_ge ( mdbp , 576 txn , & ma -> dbma . l , dbp -> ma_pgno , ( PAGE *)meta)) != 0) 577 r ; 580 i(( t = `__db_w ( dbc , 581 dbp -> ty = DB_RECNO ? P_LRECNO : P_LBTREE , & ro )) != 0) 582 r ; 583 ro -> v = LEAFLEVEL ; 585 i( `DBENV_LOGGING ( v ) && 586 #i! `defed ( DEBUG_WOP ) 587 txn ! NULL && 590 ( t = `__bam_ro_log ( mdbp , txn , & ma -> dbma . l , 0, 591 ma -> dbma . pgno , ro ->pgno, &ma->dbma. l )) != 0) 592 r ; 594 ma -> ro =o-> pgno ; 595 i(( t = 596 `__db_log_ge ( mdbp , txn , & ro -> l ,o-> pgno ,oot)) != 0) 597 r ; 600 i(( t = `__memp_ut ( mpf , , ma , dbc -> iܙy )) != 0) 601 r ; 602 ma = NULL ; 603 i(( t = `__memp_ut ( mpf , , ro , dbc -> iܙy )) != 0) 604 r ; 605 ro = NULL ; 606 r : 607 i( ma ! NULL ) 608 i(( t_t = `__memp_ut ( mpf , , 609 ma , dbc -> iܙy )!0 && t == 0) 610 t = t_t ; 611 i( ro ! NULL ) 612 i(( t_t = `__memp_ut ( mpf , , 613 ro , dbc -> iܙy )!0 && t == 0) 614 t = t_t ; 615 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 616 t = t_t ; 617 i( dbc ! NULL ) 618 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 619 t = t_t ; 620 ( t ); 621 } } @../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 BKEYDATA * bk , bk_tmp ; 74 BTREE * t ; 75 BTREE_CURSOR * ; 76 DB * dbp ; 77 DBT bk_hdr , tdbt ; 78 DB_MPOOLFILE * mpf ; 79 ENV * v ; 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 v = dbp ->env; 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_ ( v , 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 ( v , 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 -> thad_fo , 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 ( v , 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 ( v , "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 , 249 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 250 ( t ); 251 i( -> c -> ge == cp->page) 252 -> c -> ge = h ; 253 -> ge = h ; 264 ) { 265 DB_KEYFIRST : 266 i( bigkey ) { 267 i(( t = `__bam_ovput ( dbc , 268 B_OVERFLOW , PGNO_INVALID , h , dx , key )) != 0) 269 ( t ); 271 i(( t = `__db_pem ( dbc , h , dx , 272 `BKEYDATA_SIZE ( key -> size ), NULL , key)) != 0) 273 ( t ); 275 i(( t = `__bam__di ( dbc , `PGNO ( h ), dx , 1)) != 0) 276 ( t ); 277 ++ dx ; 279 DB_AFTER : 280 i( `TYPE ( h = P_LBTREE ) { 282 i(( t = 283 `__bam_adjdx ( dbc , h , dx + P_INDX , indx, 1)) != 0) 284 ( t ); 285 i(( t = 286 `__bam__di ( dbc , `PGNO ( h ), dx + P_INDX , 1)) != 0) 287 ( t ); 289 dx += 3; 291 -> dx += 2; 293 ++ dx ; 294 -> dx += 1; 297 DB_BEFORE : 298 i( `TYPE ( h = P_LBTREE ) { 300 i(( t = `__bam_adjdx ( dbc , h , dx , indx, 1)) != 0) 301 ( t ); 302 i(( t = `__bam__di ( dbc , `PGNO ( h ), dx , 1)) != 0) 303 ( t ); 305 ++ dx ; 308 DB_CURRENT : 316 i(( t = `__bam__de ( dbp , `PGNO ( h ), dx , 0, NULL )) != 0) 317 ( t ); 319 i( `TYPE ( h = P_LBTREE ) 320 ++ dx ; 321 bk = `GET_BKEYDATA ( dbp , h , dx ); 330 i( `TYPE ( h = P_LBTREE || TYPE(h= P_LDUP ) 331 was_ded = `B_DISSET ( bk -> ty ); 342 i( bigda || `B_TYPE ( bk -> ty ! B_KEYDATA ) { 343 i(( t = `__bam_dem ( dbc , h , dx )) != 0) 344 ( t ); 345 d = 1; 350 a = 1; 353 ( `__db_unknown_ag ( v , "DB->put", )); 357 i( bigda ) { 362 `DB_ASSERT ( v , ! `LF_ISSET ( BI_DELETED )); 363 t = `__bam_ovput ( dbc , 364 B_OVERFLOW , PGNO_INVALID , h , dx , da ); 366 i( `LF_ISSET ( BI_DELETED )) { 367 `B_TSET_DELETED ( bk_tmp . ty , B_KEYDATA ); 368 bk_tmp . n = da -> size ; 369 bk_hdr . da = & bk_tmp ; 370 bk_hdr . size = `SSZA ( BKEYDATA , da ); 371 t = `__db_pem ( dbc , h , dx , 372 `BKEYDATA_SIZE ( da -> size ), & bk_hdr , data); 373 } i( a ) 374 t = `__bam_rem ( dbc , h , dx , da ); 376 t = `__db_pem ( dbc , h , dx , 377 `BKEYDATA_SIZE ( da -> size ), NULL , data); 379 i( t != 0) { 380 i( d =1 && ( t_t = 381 `__bam__di ( dbc , `PGNO ( h ), dx + 1, -1)) != 0) { 382 `__db_r ( v , t_t , 384 ( `__v_nic ( v , t_t )); 386 ( t ); 393 i( ! DB_CURRENT ) { 394 i(( t = `__bam__di ( dbc , `PGNO ( h ), dx , 1)) != 0) 395 ( t ); 396 -> dx = `TYPE ( h = P_LBTREE ? indx - O_INDX : indx; 404 i( `F_ISSET ( , C_RECNUM && ( ! DB_CURRENT || was_ded )) 405 i(( t = `__bam_adju ( dbc , 1)) != 0) 406 ( t ); 414 i( dudju && 415 ( t = `__bam_dup_cvt ( dbc , h , dx - O_INDX , t )) != 0) 416 ( t ); 419 i( dbc -> dbty = DB_RECNO ) 420 t -> _modifd = 1; 422 ( t ); 423 } } 429 u_t32_t 430 $__bam_size ( dbp , , da , h , dx ) 431 DB * dbp ; 432 u_t32_t , dx ; 433 DBT * da ; 434 PAGE * h ; 436 BKEYDATA * bk ; 437 u_t32_t nbys ; 443 i( ! DB_CURRENT ) 444 ( da -> doff + da-> size ); 450 bk = `GET_BKEYDATA ( dbp , h , dx + ( `TYPE (h= P_LBTREE ? O_INDX : 0)); 451 nbys = 452 `B_TYPE ( bk -> ty = B_OVERFLOW ? (( BOVERFLOW *)bk)-> : bk-> n ; 454 ( `__db_size ( nbys , da )); 455 } } 462 $__bam_bud ( dbc , , dbt , h , dx , nbys ) 463 DBC * dbc ; 464 u_t32_t , dx , nbys ; 465 DBT * dbt ; 466 PAGE * h ; 468 BKEYDATA * bk , tbk ; 469 BOVERFLOW * bo ; 470 BTREE * t ; 471 DB * dbp ; 472 DBT cy , * rda ; 473 u_t32_t n , ; 474 u_t8_t * p ; 475 t ; 477 `COMPQUIET ( bo , NULL ); 479 dbp = dbc ->dbp; 480 t = dbp -> bt_ ; 483 rda = & dbc -> my_rda ; 484 i( rda -> un < nbys ) { 485 i(( t = `__os_loc ( dbp -> v , 486 nbys , & rda -> da )) != 0) { 487 rda -> un = 0; 488 rda -> da = NULL ; 489 ( t ); 491 rda -> un = nbys ; 498 `memt ( rda -> da , 499 `F_ISSET ( dbp , DB_AM_FIXEDLEN ? t -> _d : 0, nbys ); 510 i(! `F_ISSET ( dbt , DB_DBT_PARTIAL || ! DB_CURRENT ) { 511 p = ( u_t8_t *) rda -> da + dbt -> doff ; 512 = dbt -> doff ; 513 ur_cy ; 517 i( dx < `NUM_ENT ( h )) { 518 bk = `GET_BKEYDATA ( dbp , h , dx + ( `TYPE (h= P_LBTREE ? 519 O_INDX : 0)); 520 bo = ( BOVERFLOW *) bk ; 522 bk = & tbk ; 523 `B_TSET ( bk -> ty , B_KEYDATA ); 524 bk -> n = 0; 526 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 531 `memt (& cy , 0, (copy)); 532 i(( t = `__db_goff ( dbp , dbc -> thad_fo , dbc-> txn , & cy , 533 bo -> , bo-> pgno , & rda -> da , &rda-> un )) != 0) 534 ( t ); 537 = dbt -> doff ; 538 p = ( u_t8_t *) rda -> da + dbt -> doff ; 551 i( bo -> > dbt -> doff + dbt-> dn ) { 552 n = bo -> - ( dbt -> doff + dbt-> dn ); 553 i( dbt -> dn !dbt-> size ) 554 `memmove ( p + dbt -> size , + dbt-> dn , n ); 555 + n ; 559 `memy ( rda -> da , 560 bk -> da , dbt -> doff > bk-> n ? bk->len : dbt->doff); 561 = dbt -> doff ; 562 p = ( u_t8_t *) rda -> da + dbt -> doff ; 565 n = dbt -> doff + dbt-> dn ; 566 i( bk -> n >en) { 567 `memy ( p + dbt -> size , bk -> da + n , bk->len -en); 568 + bk -> n -en; 572 ur_cy : 577 `memy ( p , dbt -> da , dbt-> size ); 578 + dbt -> size ; 581 rda -> size = `F_ISSET ( dbp , DB_AM_FIXEDLEN ? t -> _n : ; 582 rda -> dn = 0; 583 rda -> doff = 0; 584 rda -> ags = 0; 585 * dbt = * rda ; 587 } } 596 $__bam_rem ( dbc , h , dx , da ) 597 DBC * dbc ; 598 PAGE * h ; 599 u_t32_t dx ; 600 DBT * da ; 602 BKEYDATA * bk ; 603 DB * dbp ; 604 DBT ig , ; 605 db_dx_t t , lo , , m , off , efix , suffix ; 606 t32_t nbys ; 607 t ; 608 db_dx_t * p ; 609 u_t8_t * p , * t ; 611 dbp = dbc ->dbp; 618 bk = `GET_BKEYDATA ( dbp , h , dx ); 621 i( `DBC_LOGGING ( dbc )) { 627 m = da -> size < bk -> n ? data->size : bk->len; 628 efix = 0, 629 p = bk -> da , t = data->data; 630 efix < m && * p =* t ; ++prefix, ++p, ++t) 633 m - efix ; 634 suffix = 0, 635 p = ( u_t8_t *) bk -> da + bk-> n - 1, 636 t = ( u_t8_t *) da ->d+ da-> size - 1; 637 suffix < m && * p =* t ; ++suffix, --p, --t) 641 ig . da = ( u_t8_t *) bk ->d+ efix ; 642 ig . size = bk -> n - ( efix + suffix ); 643 . da = ( u_t8_t *)da->d+ efix ; 644 . size = da ->siz- ( efix + suffix ); 645 i(( t = `__bam__log ( dbp , dbc -> txn , & `LSN ( h ), 0, `PGNO (h), 646 & `LSN ( h ), ( u_t32_t ) dx , (u_t32_t) `B_DISSET ( bk -> ty ), 647 & ig , & , ( u_t32_t ) efix , (u_t32_t) suffix )) != 0) 648 ( t ); 650 `LSN_NOT_LOGGED ( `LSN ( h )); 656 p = `P_INP ( dbp , h ); 657 p = ( u_t8_t *) h + `HOFFSET (h); 658 t = ( u_t8_t *) bk ; 666 lo = `BKEYDATA_SIZE ( bk -> n ); 667 = ( db_dx_t ) `BKEYDATA_SIZE ( da -> size ); 668 i( lo ! ) { 669 nbys = lo - ; 670 i( p = t ) 671 p [ dx ] + nbys ; 673 `memmove ( p + nbys ,, ( size_t )( t -)); 676 off = p [ dx ]; 677 t = 0; c < `NUM_ENT ( h ); ++cnt) 678 i( p [ t ] < off ) 679 p [ t ] + nbys ; 683 `HOFFSET ( h + nbys ; 684 t + nbys ; 688 bk = ( BKEYDATA *) t ; 689 `B_TSET ( bk -> ty , B_KEYDATA ); 690 bk -> n = da -> size ; 691 `memy ( bk -> da , da->da, da-> size ); 694 } } 701 $__bam_dup_check ( dbc , , h , dx , sz , ) 702 DBC * dbc ; 703 u_t32_t ; 704 PAGE * h ; 705 u_t32_t dx , sz ; 706 db_dx_t * ; 708 BKEYDATA * bk ; 709 DB * dbp ; 710 db_dx_t t , f , * p ; 712 dbp = dbc ->dbp; 713 p = `P_INP ( dbp , h ); 719 dx > 0 && p [dx] =p[dx - P_INDX ]) 720 dx - P_INDX ; 723 bk = `GET_BKEYDATA ( dbp , h , dx ); 724 sz + `B_TYPE ( bk -> ty = B_KEYDATA ? 725 `BKEYDATA_PSIZE ( bk -> n : BOVERFLOW_PSIZE ; 728 f = dx ; 737 t = = DB_CURRENT ? 0 : 1; 738 f = dx ; 739 dx < `NUM_ENT ( h && p [ f ] == inp[indx]; 740 ++ t , dx + P_INDX ) { 741 bk = `GET_BKEYDATA ( dbp , h , dx + O_INDX ); 742 sz + `B_TYPE ( bk -> ty = B_KEYDATA ? 743 `BKEYDATA_PSIZE ( bk -> n : BOVERFLOW_PSIZE ; 753 i( t == 1) 762 i( sz < dbp -> pgsize / 4) 765 * = t ; 767 } } 774 $__bam_dup_cvt ( dbc , h , dx , t ) 775 DBC * dbc ; 776 PAGE * h ; 777 u_t32_t dx , t ; 779 BKEYDATA * bk ; 780 DB * dbp ; 781 DBT hdr ; 782 DB_MPOOLFILE * mpf ; 783 PAGE * dp ; 784 db_dx_t dx , ddx , f , * p ; 785 t , t_t ; 787 dbp = dbc ->dbp; 788 mpf = dbp ->mpf; 789 p = `P_INP ( dbp , h ); 792 dx > 0 && p [dx] =p[dx - P_INDX ]) 793 dx - P_INDX ; 796 i(( t = `__db_w ( dbc , 797 dbp -> dup_com = NULL ? P_LRECNO : P_LDUP , & dp )) != 0) 798 ( t ); 799 `P_INIT ( dp , dbp -> pgsize , dp-> pgno , 800 PGNO_INVALID , PGNO_INVALID, LEAFLEVEL , `TYPE ( dp )); 807 `memt (& hdr , 0, (hdr)); 808 f = dx ; 809 ddx = dx ; 810 dx = 0; 813 i(( t = `__bam__dup ( dbc , f , 814 `PGNO ( h ), dx , PGNO( dp ), dx )) != 0) 815 r ; 826 bk = `GET_BKEYDATA ( dbp , h , ddx + 1); 827 hdr . da = bk ; 828 hdr . size = `B_TYPE ( bk -> ty = B_KEYDATA ? 829 `BKEYDATA_SIZE ( bk -> n : BOVERFLOW_SIZE ; 830 i( dbp -> dup_com = NULL && `B_DISSET ( bk -> ty )) { 836 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 837 ( t = `__db_doff ( dbc , 838 ( `GET_BOVERFLOW ( dbp , h , ddx + 1))-> pgno )) != 0) 839 r ; 841 i(( t = `__db_pem ( 842 dbc , dp , dx , hdr . size , &hdr, NULL )) != 0) 843 r ; 844 ++ dx ; 847 i( t != 1) { 848 i(( t = `__bam_adjdx ( dbc , 849 h , ddx , f + 1, 0)) != 0) 850 r ; 852 ddx ++; 855 i(( t = `__db_dem ( dbc , h , ddx , hdr . size )) != 0) 856 r ; 857 dx + P_INDX ; 858 } -- t ); 861 i(( t = `__bam_ovput ( dbc , 862 B_DUPLICATE , dp -> pgno , h , f + 1, NULL )) != 0) 863 r ; 866 t = `__bam__di ( dbc , 867 `PGNO ( h ), f + P_INDX , ()(f + P_INDX - dx )); 869 r : i(( t_t = `__memp_ut ( mpf , 870 dbc -> thad_fo , dp , dbc-> iܙy )!0 && t == 0) 871 t = t_t ; 873 ( t ); 874 } } 882 $__bam_ovput ( dbc , ty , pgno , h , dx , em ) 883 DBC * dbc ; 884 u_t32_t ty , dx ; 885 db_pgno_t pgno ; 886 PAGE * h ; 887 DBT * em ; 889 BOVERFLOW bo ; 890 DBT hdr ; 891 t ; 893 `UMRW_SET ( bo . unud1 ); 894 `B_TSET ( bo . ty ,ype); 895 `UMRW_SET ( bo . unud2 ); 902 i( ty = B_OVERFLOW ) { 903 i(( t = `__db_poff ( dbc , em , & bo . pgno )) != 0) 904 ( t ); 905 bo . = em -> size ; 907 bo . pgno =gno; 908 bo . = 0; 912 `memt (& hdr , 0, (hdr)); 913 hdr . da = & bo ; 914 hdr . size = BOVERFLOW_SIZE ; 915 ( `__db_pem ( dbc , h , dx , BOVERFLOW_SIZE , & hdr , NULL )); 916 } } @../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 ( v , db , lp , , fo ) 31 ENV * v ; 32 DBT * db ; 33 DB_LSN * lp ; 34 db_cs ; 35 * fo ; 37 __bam_l_gs * gp ; 38 DB_THREAD_INFO * ; 39 DB * fe_dbp ; 40 DBC * dbc ; 41 DB_MPOOLFILE * mpf ; 42 PAGE * _ , * , * , * , * _ , * , * ; 43 db_pgno_t pgno , ro_pgno ; 44 u_t32_t y ; 45 cmp , l_upde , p_upde , r_upde , rc , t , ro٥l , t_t ; 47 = (( DB_TXNHEAD *) fo )-> thad_fo ; 48 `REC_PRINT ( __bam_l_t ); 50 _ = = = = _ = = NULL ; 51 = NULL ; 53 `REC_INTRO ( __bam_l_ad , , 0); 69 i(( t = `__os_mloc ( v , gp -> pg . size , & )) != 0) 70 out ; 71 `memy ( , gp -> pg . da ,rgp->pg. size ); 73 pgno = `PGNO ( ); 74 ro_pgno = gp ->root_pgno; 75 ro٥l = ro_pgno ! PGNO_INVALID ; 76 `REC_FGET ( mpf , , gp -> , & , right ); 77 right : `REC_FGET ( mpf , , gp ->right, & , do ); 79 do : i( `DB_REDO ( )) { 80 l_upde = r_upde = p_upde = 0; 87 i( ro٥l ) { 88 `REC_FGET ( mpf , , ro_pgno , & , do_ ); 89 cmp = `LOG_COMPARE (& `LSN ( ), &LSN( gp -> pg . da )); 90 `CHECK_LSN ( v , , 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 ( v , , cmp , & `LSN ( ), & gp -> ); 98 i( cmp == 0) 99 l_upde = 1; 102 i( ! NULL ) { 103 cmp = `LOG_COMPARE (& `LSN ( ), & gp -> ); 104 `CHECK_LSN ( v , , 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 ( v , fe_dbp -> pgsize , & _ )) != 0 || 114 ( t = `__os_mloc ( v , 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 = `__memp_ut ( mpf , 146 , , 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 = `__memp_ut ( mpf , 156 , , 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 = `__memp_ut ( mpf , 184 , , 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 , 198 , NULL , 0, & )) != 0) { 199 i( t ! DB_PAGE_NOTFOUND ) { 200 t = `__db_pgr ( 201 fe_dbp , gp -> gno , t ); 202 out ; 204 de ; 206 cmp = `LOG_COMPARE (& `LSN ( ), & gp -> Ƣ ); 207 `CHECK_LSN ( v , , cmp , & `LSN ( ), & gp -> Ƣ ); 208 i( cmp == 0) { 209 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ); 210 `PREV_PGNO ( gp -> right ; 211 -> l = * lp ; 212 i(( t = `__memp_ut ( mpf , , 213 , fe_dbp -> iܙy )) != 0) 214 out ; 215 = NULL ; 226 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 227 DB_MPOOL_EDIT , & )) != 0) { 228 = NULL ; 229 undo ; 231 i( `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 232 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ); 233 `memy ( , gp -> pg . da ,rgp->pg. size ); 234 i(( t = `__memp_ut ( mpf , 235 , , fe_dbp -> iܙy )) != 0) 236 out ; 237 = NULL ; 248 undo : i(( ro٥l && ! NULL || != NULL) { 249 i( ro٥l && ! NULL && 250 `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 251 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ); 252 -> l = gp -> ; 253 i(( t = `__memp_ut ( mpf , , 254 , fe_dbp -> iܙy )) != 0) 255 out ; 256 = NULL ; 258 i( ! NULL && 259 `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 260 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ); 261 -> l = gp -> ; 262 i(( t = `__memp_ut ( mpf , , 263 , fe_dbp -> iܙy )) != 0) 264 out ; 265 = NULL ; 277 i(! ro٥l && gp -> gno ! PGNO_INVALID ) { 278 i(( t = `__memp_fg ( mpf , & gp -> gno , 279 , NULL , DB_MPOOL_EDIT , & )) != 0) { 280 = NULL ; 281 de ; 283 i( `LOG_COMPARE ( lp , & `LSN ( )) == 0) { 284 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ); 285 `PREV_PGNO ( gp -> ; 286 -> l = gp -> Ƣ ; 287 i( `__memp_ut ( mpf , 288 , , fe_dbp -> iܙy )) 289 out ; 290 = NULL ; 295 de : * lp = gp -> ev_l ; 296 t = 0; 298 out : 299 i( ! NULL && ( t_t = `__memp_ut ( mpf , 300 , , fe_dbp -> iܙy )!0 && t == 0) 301 t = t_t ; 302 i( ! NULL && ( t_t = `__memp_ut ( mpf , 303 , , fe_dbp -> iܙy )!0 && t == 0) 304 t = t_t ; 305 i( ! NULL && ( t_t = `__memp_ut ( mpf , 306 , , fe_dbp -> iܙy )!0 && t == 0) 307 t = t_t ; 308 i( ! NULL && ( t_t = `__memp_ut ( mpf , 309 , , fe_dbp -> iܙy )!0 && t == 0) 310 t = t_t ; 313 i( _ ! NULL ) 314 `__os_ ( v , _ ); 315 i( _ ! NULL ) 316 `__os_ ( v , _ ); 317 i( ! NULL ) 318 `__os_ ( v , ); 320 REC_CLOSE ; 321 } } 331 $__bam_rl_cov ( v , db , lp , , fo ) 332 ENV * v ; 333 DBT * db ; 334 DB_LSN * lp ; 335 db_cs ; 336 * fo ; 338 __bam_rl_gs * gp ; 339 DB_THREAD_INFO * ; 340 DB * fe_dbp ; 341 DBC * dbc ; 342 DB_LSN cy_l ; 343 DB_MPOOLFILE * mpf ; 344 PAGE * g ; 345 db_pgno_t pgno , ro_pgno ; 346 db_o_t rt ; 347 cmp_n , cmp_p , t ; 349 = (( DB_TXNHEAD *) fo )-> thad_fo ; 350 g = NULL ; 351 `REC_PRINT ( __bam_rl_t ); 352 `REC_INTRO ( __bam_rl_ad , , 1); 355 pgno = ro_pgno = gp ->root_pgno; 356 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 0, & g )) != 0) { 357 i( t ! DB_PAGE_NOTFOUND ) { 358 t = `__db_pgr ( fe_dbp , pgno ,et); 359 out ; 361 do_ge ; 364 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 365 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> rol ); 366 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> rol ); 367 i( cmp_p =0 && `DB_REDO ( )) { 375 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 376 rt = `RE_NREC ( g ); 377 `memy ( g , gp -> pgdbt . da ,rgp->pgdbt. size ); 378 i( `LEVEL ( g > LEAFLEVEL ) 379 `RE_NREC_SET ( g , rt ); 380 g -> pgno = ro_pgno ; 381 g -> l = * lp ; 382 } i( cmp_n =0 && `DB_UNDO ( )) { 384 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 385 `P_INIT ( g , fe_dbp -> pgsize , ro_pgno , 386 gp -> ec , PGNO_INVALID , g -> v + 1, 387 `IS_BTREE_PAGE ( g ? P_IBTREE : P_IRECNO ); 388 i(( t = `__db_pem ( dbc , g , 0, 389 gp -> roْt . size , &gp->roْt, NULL )) != 0) 390 out ; 391 g -> l = gp -> rol ; 393 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 394 out ; 396 do_ge : 402 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 403 i( t ! DB_PAGE_NOTFOUND ) { 404 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 405 out ; 407 de ; 409 () `__ua_memy (& cy_l , & `LSN ( gp -> pgdbt . da ), ( DB_LSN )); 410 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 411 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 412 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & cy_l ); 413 i( cmp_p =0 && `DB_REDO ( )) { 415 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 416 g -> l = * lp ; 417 } i( cmp_n =0 && `DB_UNDO ( )) { 419 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 420 `memy ( g , gp -> pgdbt . da ,rgp->pgdbt. size ); 422 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 423 out ; 424 g = NULL ; 426 de : * lp = gp -> ev_l ; 427 t = 0; 429 out : i( g ! NULL ) 430 () `__memp_ut ( mpf , , g , dbc -> iܙy ); 431 REC_CLOSE ; 432 } } 442 $__bam_adj_cov ( v , db , lp , , fo ) 443 ENV * v ; 444 DBT * db ; 445 DB_LSN * lp ; 446 db_cs ; 447 * fo ; 449 __bam_adj_gs * gp ; 450 DB_THREAD_INFO * ; 451 DB * fe_dbp ; 452 DBC * dbc ; 453 DB_MPOOLFILE * mpf ; 454 PAGE * g ; 455 cmp_n , cmp_p , t ; 457 = (( DB_TXNHEAD *) fo )-> thad_fo ; 458 g = NULL ; 459 `REC_PRINT ( __bam_adj_t ); 460 `REC_INTRO ( __bam_adj_ad , , 1); 463 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 464 i( t ! DB_PAGE_NOTFOUND ) { 465 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 466 out ; 468 de ; 471 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 472 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 473 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 474 i( cmp_p =0 && `DB_REDO ( )) { 476 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 477 i(( t = `__bam_adjdx ( dbc , 478 g , gp -> dx ,rgp-> dx_cy ,rgp-> is_ )) != 0) 479 out ; 481 `LSN ( g * lp ; 482 } i( cmp_n =0 && `DB_UNDO ( )) { 484 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 485 i(( t = `__bam_adjdx ( dbc , 486 g , gp -> dx ,rgp-> dx_cy , !gp-> is_ )) != 0) 487 out ; 489 `LSN ( g gp -> l ; 491 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 492 out ; 493 g = NULL ; 495 de : * lp = gp -> ev_l ; 496 t = 0; 498 out : i( g ! NULL ) 499 () `__memp_ut ( mpf , , g , dbc -> iܙy ); 500 REC_CLOSE ; 501 } } 512 $__bam_dju_cov ( v , db , lp , , fo ) 513 ENV * v ; 514 DBT * db ; 515 DB_LSN * lp ; 516 db_cs ; 517 * fo ; 519 __bam_dju_gs * gp ; 520 DB_THREAD_INFO * ; 521 DB * fe_dbp ; 522 DBC * dbc ; 523 DB_MPOOLFILE * mpf ; 524 PAGE * g ; 525 cmp_n , cmp_p , t ; 527 = (( DB_TXNHEAD *) fo )-> thad_fo ; 528 g = NULL ; 529 `REC_PRINT ( __bam_dju_t ); 530 `REC_INTRO ( __bam_dju_ad , , 0); 533 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 534 i( t ! DB_PAGE_NOTFOUND ) { 535 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 536 out ; 538 de ; 541 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 542 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 543 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 544 i( cmp_p =0 && `DB_REDO ( )) { 546 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 547 i( `IS_BTREE_PAGE ( g )) { 548 `GET_BINTERNAL ( fe_dbp , g , gp -> dx )-> ecs += 549 gp -> adju ; 550 i( gp -> ags & CAD_UPDATEROOT ) 551 `RE_NREC_ADJ ( g , gp -> adju ); 553 `GET_RINTERNAL ( fe_dbp , g , gp -> dx )-> ecs += 554 gp -> adju ; 555 i( gp -> ags & CAD_UPDATEROOT ) 556 `RE_NREC_ADJ ( g , gp -> adju ); 559 `LSN ( g * lp ; 560 } i( cmp_n =0 && `DB_UNDO ( )) { 562 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 563 i( `IS_BTREE_PAGE ( g )) { 564 `GET_BINTERNAL ( fe_dbp , g , gp -> dx )-> ecs -= 565 gp -> adju ; 566 i( gp -> ags & CAD_UPDATEROOT ) 567 `RE_NREC_ADJ ( g , -( gp -> adju )); 569 `GET_RINTERNAL ( fe_dbp , g , gp -> dx )-> ecs -= 570 gp -> adju ; 571 i( gp -> ags & CAD_UPDATEROOT ) 572 `RE_NREC_ADJ ( g , -( gp -> adju )); 574 `LSN ( g gp -> l ; 576 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 577 out ; 578 g = NULL ; 580 de : * lp = gp -> ev_l ; 581 t = 0; 583 out : i( g ! NULL ) 584 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 585 REC_CLOSE ; 586 } } 596 $__bam_cd_cov ( v , db , lp , , fo ) 597 ENV * v ; 598 DBT * db ; 599 DB_LSN * lp ; 600 db_cs ; 601 * fo ; 603 __bam_cd_gs * gp ; 604 DB_THREAD_INFO * ; 605 DB * fe_dbp ; 606 DBC * dbc ; 607 DB_MPOOLFILE * mpf ; 608 PAGE * g ; 609 u_t32_t dx ; 610 cmp_n , cmp_p , t ; 612 = (( DB_TXNHEAD *) fo )-> thad_fo ; 613 g = NULL ; 614 `REC_PRINT ( __bam_cd_t ); 615 `REC_INTRO ( __bam_cd_ad , , 0); 618 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 619 i( t ! DB_PAGE_NOTFOUND ) { 620 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 621 out ; 623 de ; 626 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 627 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 628 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 629 i( cmp_p =0 && `DB_REDO ( )) { 631 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 632 dx = gp ->dx + ( `TYPE ( g = P_LBTREE ? O_INDX : 0); 633 `B_DSET ( `GET_BKEYDATA ( fe_dbp , g , dx )-> ty ); 635 `LSN ( g * lp ; 636 } i( cmp_n =0 && `DB_UNDO ( )) { 638 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 639 dx = gp ->dx + ( `TYPE ( g = P_LBTREE ? O_INDX : 0); 640 `B_DCLR ( `GET_BKEYDATA ( fe_dbp , g , dx )-> ty ); 642 i(( t = `__bam__de ( 643 fe_dbp , gp -> pgno ,rgp-> dx , 0, NULL )) != 0) 644 out ; 646 `LSN ( g gp -> l ; 648 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 649 out ; 650 g = NULL ; 652 de : * lp = gp -> ev_l ; 653 t = 0; 655 out : i( g ! NULL ) 656 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 657 REC_CLOSE ; 658 } } 668 $__bam__cov ( v , db , lp , , fo ) 669 ENV * v ; 670 DBT * db ; 671 DB_LSN * lp ; 672 db_cs ; 673 * fo ; 675 __bam__gs * gp ; 676 DB_THREAD_INFO * ; 677 BKEYDATA * bk ; 678 DB * fe_dbp ; 679 DBC * dbc ; 680 DBT dbt ; 681 DB_MPOOLFILE * mpf ; 682 PAGE * g ; 683 cmp_n , cmp_p , t ; 684 u_t8_t * p ; 686 = (( DB_TXNHEAD *) fo )-> thad_fo ; 687 g = NULL ; 688 `REC_PRINT ( __bam__t ); 689 `REC_INTRO ( __bam__ad , , 1); 692 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 693 i( t ! DB_PAGE_NOTFOUND ) { 694 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 695 out ; 697 de ; 699 bk = `GET_BKEYDATA ( fe_dbp , g , gp -> dx ); 701 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 702 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 703 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 704 i( cmp_p =0 && `DB_REDO ( )) { 710 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 711 `memt (& dbt , 0, (dbt)); 712 dbt . size = gp -> efix +rgp-> suffix +rgp-> .size; 713 i(( t = `__os_mloc ( v , dbt . size , &dbt. da )) != 0) 714 out ; 715 p = dbt . da ; 716 `memy ( p , bk -> da , gp -> efix ); 717 p + gp -> efix ; 718 `memy ( p , gp -> . da ,rgp->. size ); 719 p + gp -> . size ; 720 `memy ( p , bk -> da + (bk-> n - gp -> suffix ),rgp->suffix); 722 t = `__bam_rem ( dbc , g , gp -> dx , & dbt ); 723 `__os_ ( v , dbt . da ); 724 i( t != 0) 725 out ; 727 `LSN ( g * lp ; 728 } i( cmp_n =0 && `DB_UNDO ( )) { 734 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 735 `memt (& dbt , 0, (dbt)); 736 dbt . size = gp -> efix +rgp-> suffix +rgp-> ig .size; 737 i(( t = `__os_mloc ( v , dbt . size , &dbt. da )) != 0) 738 out ; 739 p = dbt . da ; 740 `memy ( p , bk -> da , gp -> efix ); 741 p + gp -> efix ; 742 `memy ( p , gp -> ig . da ,rgp->ig. size ); 743 p + gp -> ig . size ; 744 `memy ( p , bk -> da + (bk-> n - gp -> suffix ),rgp->suffix); 746 t = `__bam_rem ( dbc , g , gp -> dx , & dbt ); 747 `__os_ ( v , dbt . da ); 748 i( t != 0) 749 out ; 752 i( gp -> isded ) 753 `B_DSET ( `GET_BKEYDATA ( fe_dbp , g , gp -> dx )-> ty ); 755 `LSN ( g gp -> l ; 757 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 758 out ; 759 g = NULL ; 761 de : * lp = gp -> ev_l ; 762 t = 0; 764 out : i( g ! NULL ) 765 () `__memp_ut ( mpf , , g , dbc -> iܙy ); 766 REC_CLOSE ; 767 } } 777 $__bam_ro_cov ( v , db , lp , , fo ) 778 ENV * v ; 779 DBT * db ; 780 DB_LSN * lp ; 781 db_cs ; 782 * fo ; 784 __bam_ro_gs * gp ; 785 DB_THREAD_INFO * ; 786 BTMETA * ma ; 787 DB * fe_dbp ; 788 DBC * dbc ; 789 DB_MPOOLFILE * mpf ; 790 cmp_n , cmp_p , t ; 792 = (( DB_TXNHEAD *) fo )-> thad_fo ; 793 ma = NULL ; 794 `REC_PRINT ( __bam_ro_t ); 795 `REC_INTRO ( __bam_ro_ad , , 0); 797 i(( t = `__memp_fg ( mpf , & gp -> ma_pgno , , NULL , 798 0, & ma )) != 0) { 799 i( t ! DB_PAGE_NOTFOUND ) { 800 t = `__db_pgr ( fe_dbp , gp -> ma_pgno ,et); 801 out ; 803 de ; 806 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 807 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 808 `CHECK_LSN ( v , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 809 i( cmp_p =0 && `DB_REDO ( )) { 811 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 812 ma -> ro = gp -> ro_pgno ; 813 ma -> dbma . l = * lp ; 814 (( BTREE *) fe_dbp -> bt_ )-> bt_ro = ma -> ro ; 815 } i( cmp_n =0 && `DB_UNDO ( )) { 817 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 818 ma -> dbma . l = gp -> ma_l ; 820 i(( t = `__memp_ut ( mpf , , ma , fe_dbp -> iܙy )) != 0) 821 out ; 822 ma = NULL ; 824 de : * lp = gp -> ev_l ; 825 t = 0; 827 out : i( ma ! NULL ) 828 () `__memp_ut ( mpf , , ma , fe_dbp -> iܙy ); 829 REC_CLOSE ; 830 } } 841 $__bam_cudj_cov ( v , db , lp , , fo ) 842 ENV * v ; 843 DBT * db ; 844 DB_LSN * lp ; 845 db_cs ; 846 * fo ; 848 __bam_cudj_gs * gp ; 849 DB_THREAD_INFO * ; 850 DB * fe_dbp ; 851 DBC * dbc ; 852 DB_MPOOLFILE * mpf ; 853 t ; 855 `COMPQUIET ( mpf , NULL ); 857 = (( DB_TXNHEAD *) fo )-> thad_fo ; 858 `REC_PRINT ( __bam_cudj_t ); 859 `REC_INTRO ( __bam_cudj_ad , , 1); 861 t = 0; 862 i( ! DB_TXN_ABORT ) 863 de ; 865 gp -> mode ) { 866 DB_CA_DI : 867 i(( t = `__bam__di ( dbc , gp -> om_pgno , 868 gp -> om_dx , -(rgp-> f_dx )) != 0) 869 out ; 871 DB_CA_DUP : 872 i(( t = `__bam__undodup ( fe_dbp , gp -> f_dx , 873 gp -> om_pgno ,rgp-> om_dx ,rgp-> to_dx )) != 0) 874 out ; 877 DB_CA_RSPLIT : 878 i(( t = 879 `__bam__rl ( dbc , gp -> to_pgno ,rgp-> om_pgno )) != 0) 880 out ; 883 DB_CA_SPLIT : 884 i(( t = `__bam__undol ( fe_dbp , gp -> om_pgno , 885 gp -> to_pgno ,rgp-> _pgno ,rgp-> om_dx )) != 0) 886 out ; 890 de : * lp = gp -> ev_l ; 891 out : REC_CLOSE ; 892 } } 903 $__bam_rcudj_cov ( v , db , lp , , fo ) 904 ENV * v ; 905 DBT * db ; 906 DB_LSN * lp ; 907 db_cs ; 908 * fo ; 910 __bam_rcudj_gs * gp ; 911 DB_THREAD_INFO * ; 912 BTREE_CURSOR * ; 913 DB * fe_dbp ; 914 DBC * dbc , * rdbc ; 915 DB_MPOOLFILE * mpf ; 916 t , t_t ; 918 `COMPQUIET ( mpf , NULL ); 920 = (( DB_TXNHEAD *) fo )-> thad_fo ; 921 rdbc = NULL ; 922 `REC_PRINT ( __bam_rcudj_t ); 923 `REC_INTRO ( __bam_rcudj_ad , , 1); 925 t = t_t = 0; 927 i( ! DB_TXN_ABORT ) 928 de ; 940 i(( t = `__db_curs_t ( fe_dbp , NULL , 941 NULL , DB_RECNO , gp -> ro , 0, NULL, & rdbc )) != 0) 942 out ; 944 = ( BTREE_CURSOR *) rdbc -> ; 945 `F_SET ( , C_RENUMBER ); 946 -> o = gp ->recno; 948 gp -> mode ) { 949 CA_DELETE : 954 `F_SET ( , C_DELETED ); 955 `F_SET ( , C_RENUMBER ); 956 -> d = gp ->order; 957 i(( t = `__m_ ( rdbc , CA_ICURRENT , NULL )) != 0) 958 out ; 960 CA_IAFTER : 961 CA_IBEFORE : 962 CA_ICURRENT : 967 `F_CLR ( , C_DELETED ); 968 -> d = INVALID_ORDER ; 969 i(( t = `__m_ ( rdbc , CA_DELETE , NULL )) != 0) 970 out ; 974 de : * lp = gp -> ev_l ; 975 out : i( rdbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 976 t = t_t ; 977 REC_CLOSE ; 978 } } 988 $__bam_lk_cov ( v , db , lp , , fo ) 989 ENV * v ; 990 DBT * db ; 991 DB_LSN * lp ; 992 db_cs ; 993 * fo ; 995 __bam_lk_gs * gp ; 996 DB_THREAD_INFO * ; 997 DB * fe_dbp ; 998 DBC * dbc ; 999 DB_MPOOLFILE * mpf ; 1000 PAGE * g ; 1001 cmp_n , cmp_p , t ; 1003 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1004 g = NULL ; 1005 `REC_PRINT ( __bam_lk_t ); 1006 `REC_INTRO ( __bam_lk_ad , , 0); 1014 i(( t = `__memp_fg ( mpf , & gp -> xt , , NULL , 0, & g )) != 0) { 1015 i( t ! DB_PAGE_NOTFOUND ) { 1016 t = `__db_pgr ( fe_dbp , gp -> xt ,et); 1017 out ; 1019 ev ; 1022 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1023 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_xt ); 1024 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l_xt ); 1025 i( cmp_p =0 && `DB_REDO ( )) { 1027 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1028 i( gp -> w_pgno = PGNO_INVALID ) 1029 g -> ev_pgno = gp -> ev ; 1031 g -> ev_pgno = gp -> w_pgno ; 1033 g -> l = * lp ; 1034 } i( cmp_n =0 && `DB_UNDO ( )) { 1036 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1037 g -> ev_pgno = gp -> pgno ; 1039 g -> l = gp -> l_xt ; 1042 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1043 out ; 1044 g = NULL ; 1046 ev : i(( t = `__memp_fg ( mpf , & gp ->ev, , NULL , 0, & g )) != 0) { 1047 i( t ! DB_PAGE_NOTFOUND ) { 1048 t = `__db_pgr ( fe_dbp , gp -> ev ,et); 1049 out ; 1051 de ; 1054 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_ev ); 1055 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l_ev ); 1056 i( cmp_p =0 && `DB_REDO ( )) { 1058 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1059 i( gp -> w_pgno = PGNO_INVALID ) 1060 g -> xt_pgno = gp -> xt ; 1062 g -> xt_pgno = gp -> w_pgno ; 1064 g -> l = * lp ; 1065 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1067 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1068 g -> xt_pgno = gp -> pgno ; 1069 g -> l = gp -> l_ev ; 1072 i(( t = `__memp_ut ( mpf , 1073 , g , fe_dbp -> iܙy )) != 0) 1074 out ; 1075 g = NULL ; 1077 de : * lp = gp -> ev_l ; 1078 t = 0; 1080 out : i( g ! NULL ) 1081 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 1082 REC_CLOSE ; 1083 } } 1093 $__bam_mge_44_cov ( v , db , lp , , fo ) 1094 ENV * v ; 1095 DBT * db ; 1096 DB_LSN * lp ; 1097 db_cs ; 1098 * fo ; 1100 __bam_mge_44_gs * gp ; 1101 DB_THREAD_INFO * ; 1102 BKEYDATA * bk ; 1103 DB * fe_dbp ; 1104 DBC * dbc ; 1105 DB_MPOOLFILE * mpf ; 1106 PAGE * g ; 1107 db_dx_t dx , * np , * pp ; 1108 u_t32_t size ; 1109 u_t8_t * bp ; 1110 cmp_n , cmp_p , i , t ; 1112 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1113 `REC_PRINT ( __bam_mge_44_t ); 1114 `REC_INTRO ( __bam_mge_44_ad , , 1); 1116 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 1117 i( t ! DB_PAGE_NOTFOUND ) { 1118 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1119 out ; 1121 xt ; 1124 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1125 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1126 `CHECK_LSN ( fe_dbp -> v , , cmp_p , & `LSN ( g ), & gp -> l ); 1128 i( cmp_p =0 && `DB_REDO ( )) { 1133 `DB_ASSERT ( v , gp -> hdr . size =0 || `NUM_ENT ( g ) == 0); 1134 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1135 i( gp -> hdr . size != 0) { 1136 `P_INIT ( g , fe_dbp -> pgsize ,ag-> pgno , 1137 `PREV_PGNO ( gp -> hdr . da ), 1138 `NEXT_PGNO ( gp -> hdr . da ), 1139 `LEVEL ( gp -> hdr . da ), `TYPE (argp->hdr.data)); 1141 i( `TYPE ( g = P_OVERFLOW ) { 1142 `OV_REF ( g OV_REF( gp -> hdr . da ); 1143 `OV_LEN ( g OV_LEN( gp -> hdr . da ); 1144 bp = ( u_t8_t * g + `P_OVERHEAD ( fe_dbp ); 1145 `memy ( bp , gp -> da .da,rgp->da. size ); 1148 bp = ( u_t8_t *) g + 1149 ( db_dx_t )( `HOFFSET ( g - gp -> da . size ); 1150 `memy ( bp , gp -> da .da,rgp->da. size ); 1153 pp = `P_INP ( fe_dbp , g + `NUM_ENT (pagep); 1154 np = gp -> d . da ; 1155 i = 0; 1156 i < ()( gp -> d . size / (* np )); i++) 1157 * pp ++ = * np ++ 1158 - ( fe_dbp -> pgsize - `HOFFSET ( g )); 1159 `HOFFSET ( g - gp -> da . size ; 1160 `NUM_ENT ( g + i ; 1162 g -> l = * lp ; 1163 } i( cmp_n =0 && ! `DB_REDO ( )) { 1170 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1171 i = 0; i < ()( gp -> d . size / (* np )); i++) { 1172 dx = `NUM_ENT ( g ) - 1; 1173 i( `P_INP ( fe_dbp , g )[ dx ] == 1174 `P_INP ( fe_dbp , g )[ dx - P_INDX ]) { 1175 `NUM_ENT ( g )--; 1178 `TYPE ( g )) { 1179 P_LBTREE : 1180 P_LRECNO : 1181 P_LDUP : 1182 bk = `GET_BKEYDATA ( fe_dbp , g , dx ); 1183 size = `BITEM_SIZE ( bk ); 1186 P_IBTREE : 1187 size = `BINTERNAL_SIZE ( 1188 `GET_BINTERNAL ( fe_dbp , g , dx )-> n ); 1190 P_IRECNO : 1191 size = RINTERNAL_SIZE ; 1195 t = `__db_pgfmt ( v , `PGNO ( g )); 1196 out ; 1198 i(( t = 1199 `__db_dem ( dbc , g , dx , size )) != 0) 1200 out ; 1202 i( gp -> d . size == 0) 1203 `HOFFSET ( g fe_dbp -> pgsize ; 1204 g -> l = gp ->lsn; 1207 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 1208 out ; 1210 xt : i(( t = `__memp_fg ( mpf , & gp -> gno , , NULL , 0, & g )) != 0) { 1211 i( t ! DB_PAGE_NOTFOUND ) { 1212 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1213 out ; 1215 de ; 1218 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1219 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> Ƣ ); 1220 `CHECK_LSN ( fe_dbp -> v , , cmp_p , & `LSN ( g ), & gp -> Ƣ ); 1222 i( cmp_p =0 && `DB_REDO ( )) { 1224 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1225 `HOFFSET ( g fe_dbp -> pgsize ; 1226 `NUM_ENT ( g ) = 0; 1227 g -> l = * lp ; 1228 } i( cmp_n =0 && ! `DB_REDO ( )) { 1230 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1231 i( `TYPE ( g = P_OVERFLOW ) { 1232 `OV_REF ( g OV_REF( gp -> hdr . da ); 1233 `OV_LEN ( g OV_LEN( gp -> hdr . da ); 1234 bp = ( u_t8_t * g + `P_OVERHEAD ( fe_dbp ); 1235 `memy ( bp , gp -> da .da,rgp->da. size ); 1237 bp = ( u_t8_t *) g + 1238 ( db_dx_t )( `HOFFSET ( g - gp -> da . size ); 1239 `memy ( bp , gp -> da .da,rgp->da. size ); 1242 pp = `P_INP ( fe_dbp , g + `NUM_ENT (pagep); 1243 np = gp -> d . da ; 1244 i = 0; 1245 i < ()( gp -> d . size / (* np )); i++) 1246 * pp ++ = * np ++; 1247 `HOFFSET ( g - gp -> da . size ; 1248 `NUM_ENT ( g i ; 1250 g -> l = gp -> Ƣ ; 1253 i(( t = `__memp_ut ( mpf , 1254 , g , dbc -> iܙy )) != 0) 1255 out ; 1256 de : 1257 * lp = gp -> ev_l ; 1258 t = 0; 1260 out : REC_CLOSE ; 1261 } } 1271 $__bam_mge_cov ( v , db , lp , , fo ) 1272 ENV * v ; 1273 DBT * db ; 1274 DB_LSN * lp ; 1275 db_cs ; 1276 * fo ; 1278 __bam_mge_gs * gp ; 1279 DB_THREAD_INFO * ; 1280 BKEYDATA * bk ; 1281 DB * fe_dbp ; 1282 DBC * dbc ; 1283 DB_MPOOLFILE * mpf ; 1284 PAGE * g ; 1285 db_dx_t dx , * np , * pp ; 1286 u_t32_t size ; 1287 u_t8_t * bp ; 1288 cmp_n , cmp_p , i , t ; 1290 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1291 `REC_PRINT ( __bam_mge_t ); 1292 `REC_INTRO ( __bam_mge_ad , , 1); 1294 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 1295 i( t ! DB_PAGE_NOTFOUND ) { 1296 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1297 out ; 1299 xt ; 1302 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1303 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1304 `CHECK_LSN ( fe_dbp -> v , , cmp_p , & `LSN ( g ), & gp -> l ); 1306 i( cmp_p =0 && `DB_REDO ( )) { 1310 `DB_ASSERT ( v , ! gp -> pg_cy || `NUM_ENT ( g ) == 0); 1311 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1312 i( gp -> pg_cy ) { 1313 `P_INIT ( g , fe_dbp -> pgsize ,ag-> pgno , 1314 `PREV_PGNO ( gp -> hdr . da ), 1315 `NEXT_PGNO ( gp -> hdr . da ), 1316 `LEVEL ( gp -> hdr . da ), `TYPE (argp->hdr.data)); 1318 i( `TYPE ( g = P_OVERFLOW ) { 1319 `OV_REF ( g OV_REF( gp -> hdr . da ); 1320 `OV_LEN ( g OV_LEN( gp -> hdr . da ); 1321 bp = ( u_t8_t *) g + `P_OVERHEAD ( fe_dbp ); 1322 `memy ( bp , gp -> da .da,rgp->da. size ); 1325 bp = ( u_t8_t *) g + 1326 ( db_dx_t )( `HOFFSET ( g - gp -> da . size ); 1327 `memy ( bp , gp -> da .da,rgp->da. size ); 1330 pp = `P_INP ( fe_dbp , g + `NUM_ENT (pagep); 1331 np = `P_INP ( fe_dbp , gp -> hdr . da ); 1332 i = 0; i < `NUM_ENT ( gp -> hdr . da ); i++) 1333 * pp ++ = * np ++ 1334 - ( fe_dbp -> pgsize - `HOFFSET ( g )); 1335 `HOFFSET ( g - gp -> da . size ; 1336 `NUM_ENT ( g + i ; 1338 g -> l = * lp ; 1339 } i( cmp_n =0 && ! `DB_REDO ( )) { 1340 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1341 i( `TYPE ( g = P_OVERFLOW ) { 1342 `HOFFSET ( g fe_dbp -> pgsize ; 1343 ; 1351 i = 0; i < `NUM_ENT ( gp -> hdr . da ); i++) { 1352 dx = `NUM_ENT ( g ) - 1; 1353 i( `P_INP ( fe_dbp , g )[ dx ] == 1354 `P_INP ( fe_dbp , g )[ dx - P_INDX ]) { 1355 `NUM_ENT ( g )--; 1358 `TYPE ( g )) { 1359 P_LBTREE : 1360 P_LRECNO : 1361 P_LDUP : 1362 bk = `GET_BKEYDATA ( fe_dbp , g , dx ); 1363 size = `BITEM_SIZE ( bk ); 1366 P_IBTREE : 1367 size = `BINTERNAL_SIZE ( 1368 `GET_BINTERNAL ( fe_dbp , g , dx )-> n ); 1370 P_IRECNO : 1371 size = RINTERNAL_SIZE ; 1375 t = `__db_pgfmt ( v , `PGNO ( g )); 1376 out ; 1378 i(( t = `__db_dem ( dbc , g , dx , size )) != 0) 1379 out ; 1381 : g -> l = gp ->lsn; 1384 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 1385 out ; 1387 xt : i(( t = `__memp_fg ( mpf , & gp -> gno , , NULL , 0, & g )) != 0) { 1388 i( t ! DB_PAGE_NOTFOUND ) { 1389 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1390 out ; 1392 de ; 1395 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1396 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> Ƣ ); 1397 `CHECK_LSN ( fe_dbp -> v , , cmp_p , & `LSN ( g ), & gp -> Ƣ ); 1399 i( cmp_p =0 && `DB_REDO ( )) { 1401 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1402 `HOFFSET ( g fe_dbp -> pgsize ; 1403 `NUM_ENT ( g ) = 0; 1404 g -> l = * lp ; 1405 } i( cmp_n =0 && ! `DB_REDO ( )) { 1407 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1408 i( `TYPE ( g = P_OVERFLOW ) { 1409 `OV_REF ( g OV_REF( gp -> hdr . da ); 1410 `OV_LEN ( g OV_LEN( gp -> hdr . da ); 1411 bp = ( u_t8_t *) g + `P_OVERHEAD ( fe_dbp ); 1412 `memy ( bp , gp -> da .da,rgp->da. size ); 1414 bp = ( u_t8_t *) g + 1415 ( db_dx_t )( `HOFFSET ( g - gp -> da . size ); 1416 `memy ( bp , gp -> da .da,rgp->da. size ); 1419 pp = `P_INP ( fe_dbp , g + `NUM_ENT (pagep); 1420 np = `P_INP ( fe_dbp , gp -> hdr . da ); 1421 i = 0; i < `NUM_ENT ( gp -> hdr . da ); i++) 1422 * pp ++ = * np ++; 1423 `HOFFSET ( g - gp -> da . size ; 1424 `NUM_ENT ( g + i ; 1426 g -> l = gp -> Ƣ ; 1429 i(( t = `__memp_ut ( mpf , 1430 , g , dbc -> iܙy )) != 0) 1431 out ; 1432 de : 1433 * lp = gp -> ev_l ; 1434 t = 0; 1436 out : REC_CLOSE ; 1437 } } 1447 $__bam_pgno_cov ( v , db , lp , , fo ) 1448 ENV * v ; 1449 DBT * db ; 1450 DB_LSN * lp ; 1451 db_cs ; 1452 * fo ; 1454 BINTERNAL * bi ; 1455 __bam_pgno_gs * gp ; 1456 DB_THREAD_INFO * ; 1457 DB * fe_dbp ; 1458 DBC * dbc ; 1459 DB_MPOOLFILE * mpf ; 1460 PAGE * g , * ag ; 1461 db_pgno_t * pgn ; 1462 cmp_n , cmp_p , t ; 1464 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1465 `REC_PRINT ( __bam_pgno_t ); 1466 `REC_INTRO ( __bam_pgno_ad , , 0); 1468 `REC_FGET ( mpf , , gp -> pgno , & g , de ); 1470 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1471 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1472 `CHECK_LSN ( fe_dbp -> v , , cmp_p , & `LSN ( g ), & gp -> l ); 1474 i(( cmp_p =0 && `DB_REDO ( )|| ( cmp_n == 0 && !DB_REDO(op))) { 1475 `TYPE ( g )) { 1476 P_IBTREE : 1482 bi = `GET_BINTERNAL ( fe_dbp , g , gp -> dx ); 1483 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 1484 `REC_FGET ( mpf , , gp -> gno , & ag , out ); 1486 i( `TYPE ( ag = P_OVERFLOW ) 1487 pgn = 1488 &(( BOVERFLOW *)( bi -> da ))-> pgno ; 1490 pgn = & bi -> pgno ; 1491 i(( t = `__memp_ut ( mpf , , 1492 ag , fe_dbp -> iܙy )) != 0) 1493 out ; 1496 pgn = & bi -> pgno ; 1498 P_IRECNO : 1499 pgn = 1500 & `GET_RINTERNAL ( fe_dbp , g , gp -> dx )-> pgno ; 1503 pgn = 1504 & `GET_BOVERFLOW ( fe_dbp , g , gp -> dx )-> pgno ; 1508 i( `DB_REDO ( )) { 1510 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1511 * pgn = gp -> gno ; 1512 g -> l = * lp ; 1514 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1515 * pgn = gp -> gno ; 1516 g -> l = gp ->lsn; 1520 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1521 out ; 1523 de : 1524 * lp = gp -> ev_l ; 1525 t = 0; 1527 out : REC_CLOSE ; 1528 } } 1538 $__bam_lk_43_cov ( v , db , lp , , fo ) 1539 ENV * v ; 1540 DBT * db ; 1541 DB_LSN * lp ; 1542 db_cs ; 1543 * fo ; 1545 __bam_lk_43_gs * gp ; 1546 DB_THREAD_INFO * ; 1547 DB * fe_dbp ; 1548 DBC * dbc ; 1549 DB_MPOOLFILE * mpf ; 1550 PAGE * g ; 1551 cmp_n , cmp_p , modifd , t ; 1553 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1554 g = NULL ; 1555 `REC_PRINT ( __bam_lk_43_t ); 1556 `REC_INTRO ( __bam_lk_43_ad , , 0); 1564 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 1565 i( t ! DB_PAGE_NOTFOUND ) { 1566 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1567 out ; 1569 xt2 ; 1572 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1573 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 1574 i( cmp_p =0 && `DB_REDO ( )) { 1576 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1577 g -> l = * lp ; 1578 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1580 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1581 g -> xt_pgno = gp -> xt ; 1582 g -> ev_pgno = gp -> ev ; 1583 g -> l = gp ->lsn; 1585 i(( t = `__memp_ut ( mpf , 1586 , g , fe_dbp -> iܙy )) != 0) 1587 out ; 1588 g = NULL ; 1590 xt2 : i(( t = `__memp_fg ( mpf , & gp -> xt , , NULL , 0, & g )) != 0) { 1591 i( t ! DB_PAGE_NOTFOUND ) { 1592 t = `__db_pgr ( fe_dbp , gp -> xt ,et); 1593 out ; 1595 ev ; 1598 modifd = 0; 1599 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1600 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_xt ); 1601 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l_xt ); 1602 i( cmp_p =0 && `DB_REDO ( )) { 1604 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1605 g -> ev_pgno = gp -> ev ; 1606 modifd = 1; 1607 } i( cmp_n =0 && `DB_UNDO ( )) { 1609 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1610 g -> ev_pgno = gp -> pgno ; 1611 modifd = 1; 1613 i( modifd ) { 1614 i( `DB_UNDO ( )) 1615 g -> l = gp -> l_xt ; 1617 g -> l = * lp ; 1619 i(( t = `__memp_ut ( mpf , 1620 , g , fe_dbp -> iܙy )) != 0) 1621 out ; 1622 g = NULL ; 1624 ev : i(( t = `__memp_fg ( mpf , & gp ->ev, , NULL , 0, & g )) != 0) { 1625 i( t ! DB_PAGE_NOTFOUND ) { 1626 t = `__db_pgr ( fe_dbp , gp -> ev ,et); 1627 out ; 1629 de ; 1632 modifd = 0; 1633 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_ev ); 1634 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l_ev ); 1635 i( cmp_p =0 && `DB_REDO ( )) { 1637 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1638 g -> xt_pgno = gp -> xt ; 1639 modifd = 1; 1640 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1642 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1643 g -> xt_pgno = gp -> pgno ; 1644 modifd = 1; 1646 i( modifd ) { 1647 i( `DB_UNDO ( )) 1648 g -> l = gp -> l_ev ; 1650 g -> l = * lp ; 1652 i(( t = `__memp_ut ( mpf , 1653 , g , fe_dbp -> iܙy )) != 0) 1654 out ; 1655 g = NULL ; 1657 de : * lp = gp -> ev_l ; 1658 t = 0; 1660 out : i( g ! NULL ) 1661 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 1662 REC_CLOSE ; 1663 } } @../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_THREAD_INFO * ; 26 DB_TXN * txn ; 28 DBC * dbc ; 29 DB_LOCK ma_lock ; 30 t , t_t ; 33 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 34 ( t ); 37 i(( t = `__db_lg ( dbc , 38 0, PGNO_BASE_MD , DB_LOCK_WRITE , 0, & ma_lock )) != 0) 39 r ; 42 `F_SET ( dbc , DBC_DONTLOCK ); 45 t = `__bam_av ( dbc , 46 DB_LOCK_WRITE , dbc -> -> ro , __db_aim_back , NULL ); 48 i(( t_t = `__TLPUT ( dbc , ma_lock )!0 && t == 0) 49 t = t_t ; 52 r : i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 53 t = t_t ; 55 ( t ); 56 } } 65 $__bam_un ( dbc , coup ) 66 DBC * dbc ; 67 u_t32_t * coup ; 69 u_t32_t cou ; 70 t ; 72 cou = 0; 75 t = `__bam_av ( dbc , 76 DB_LOCK_WRITE , dbc -> -> ro , __db_un_back , & cou ); 78 i( coup ! NULL ) 79 * coup = cou ; 81 ( t ); 82 } } @../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_THREAD_INFO * ; 105 DB_TXN * txn ; 106 cڡ * me ; 107 db_pgno_t ba_pgno ; 108 u_t32_t ags ; 110 BTREE * t ; 111 DBC * dbc ; 112 t , t_t ; 114 `COMPQUIET ( me , NULL ); 115 t = dbp -> bt_ ; 118 i(( t = `__bam_ad_ro ( dbp , , txn , ba_pgno , ags )) != 0) 119 ( t ); 129 i( t -> _sour ! NULL && ( t = `__m_sour ( dbp )) != 0) 130 ( t ); 133 i( `F_ISSET ( dbp , DB_AM_SNAPSHOT )) { 135 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 136 ( t ); 139 i(( t = `__m_upde ( dbc , 140 DB_MAX_RECORDS , 0)!0 && t = DB_NOTFOUND ) 141 t = 0; 144 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 145 t = t_t ; 148 ( t ); 149 } } 158 $__m_nd ( dbc , key , da ) 159 DBC * dbc ; 160 DBT * key , * da ; 162 BTREE_CURSOR * ; 163 t ; 165 = ( BTREE_CURSOR *) dbc -> ; 172 t = `__m_upde ( dbc , DB_MAX_RECORDS , 0); 173 i( t =0 || = DB_NOTFOUND ) 174 t = `__m_add ( dbc , & -> o , da , DB_APPEND , 0); 177 i( t =0 && key ! NULL ) 178 t = `__db_tcy ( dbc -> v , key , & -> o , 179 ( -> o ), & dbc -> rkey -> da , &dbc->rkey-> un ); 181 ( t ); 182 } } 191 $__mc_d ( dbc ) 192 DBC * dbc ; 194 BKEYDATA bk ; 195 BTREE * t ; 196 BTREE_CURSOR * ; 197 DB * dbp ; 198 DBT hdr , da ; 199 DB_LSN l ; 200 exa , nc , t , ack , t_t ; 202 dbp = dbc ->dbp; 203 = ( BTREE_CURSOR *) dbc -> ; 204 t = dbp -> bt_ ; 205 ack = 0; 218 i( `CD_ISSET ( )) 219 ( DB_KEYEMPTY ); 222 i(( t = `__bam_rch ( dbc , & -> o , SR_DELETE , 1, & exa )) != 0) 223 r ; 224 i(! exa ) { 225 t = DB_NOTFOUND ; 226 r ; 228 ack = 1; 231 i(( t = `__memp_dty ( dbp -> mpf , 232 & -> c -> ge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 233 r ; 234 `STACK_TO_CURSOR ( , t ); 235 i( t != 0) 236 r ; 249 i( `B_DISSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx )-> ty )) { 250 t = DB_KEYEMPTY ; 251 r ; 254 i( `F_ISSET ( , C_RENUMBER )) { 256 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 257 r ; 258 i(( t = `__bam_adju ( dbc , -1)) != 0) 259 r ; 260 i(( t = `__m_ ( dbc , CA_DELETE , & nc )) != 0) 261 r ; 262 i( nc > 0 && 263 `CURADJ_LOG ( dbc && ( t = `__bam_rcudj_log ( dbp , dbc-> txn , 264 & l , 0, CA_DELETE , -> ro , cp-> o , cp-> d )) != 0) 265 r ; 280 i( `NUM_ENT ( -> ge =0 && `PGNO (->ge!-> ro ) { 285 t = `__bam_dges ( dbc , 0, 0); 291 ack = 0; 292 -> ge = NULL ; 296 i(( t = `__bam_dem ( dbc , -> ge , cp-> dx )) != 0) 297 r ; 299 `B_TSET_DELETED ( bk . ty , B_KEYDATA ); 300 bk . n = 0; 301 `DB_INIT_DBT ( hdr , & bk , `SSZA ( BKEYDATA , da )); 302 `DB_INIT_DBT ( da , "", 0); 303 i(( t = `__db_pem ( dbc , 304 -> ge , cp-> dx , `BKEYDATA_SIZE (0), & hdr , & da )) != 0) 305 r ; 308 t -> _modifd = 1; 310 r : i( ack && ( t_t = `__bam_kl ( dbc , STK_CLRDBC )!0 && t == 0) 311 t = t_t ; 313 ( t ); 314 } } 324 $__mc_g ( dbc , key , da , ags , pgn ) 325 DBC * dbc ; 326 DBT * key , * da ; 327 u_t32_t ags ; 328 db_pgno_t * pgn ; 330 BTREE_CURSOR * ; 331 DB * dbp ; 332 cmp , exa , t ; 334 `COMPQUIET ( pgn , NULL ); 336 dbp = dbc ->dbp; 337 = ( BTREE_CURSOR *) dbc -> ; 339 `LF_CLR ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 340 y : ags ) { 341 DB_CURRENT : 347 i( `CD_ISSET ( )) 348 ( DB_KEYEMPTY ); 350 DB_NEXT_DUP : 357 i(! `F_ISSET ( dbc , DBC_OPD )) 358 ( DB_NOTFOUND ); 360 DB_NEXT_NODUP : 366 DB_NEXT : 367 ags = DB_NEXT ; 373 i( `CD_ISSET ( )) { 377 `CD_CLR ( ); 381 i( -> o ! RECNO_OOB ) { 382 ++ -> o ; 386 DB_FIRST : 387 ags = DB_NEXT ; 388 -> o = 1; 390 DB_PREV_DUP : 397 i(! `F_ISSET ( dbc , DBC_OPD )) 398 ( DB_NOTFOUND ); 400 DB_PREV_NODUP : 406 DB_PREV : 407 ags = DB_PREV ; 408 i( -> o ! RECNO_OOB ) { 409 i( -> o == 1) { 410 t = DB_NOTFOUND ; 411 r ; 413 -- -> o ; 417 DB_LAST : 418 ags = DB_PREV ; 419 i((( t = `__m_upde ( dbc , 420 DB_MAX_RECORDS , 0)!0&& t ! DB_NOTFOUND ) 421 r ; 422 i(( t = `__bam_ecs ( dbc , & -> o )) != 0) 423 r ; 424 i( -> o == 0) { 425 t = DB_NOTFOUND ; 426 r ; 429 DB_GET_BOTHC : 439 i( `F_ISSET ( dbc , DBC_OPD )) { 440 -> o ++; 443 t = DB_NOTFOUND ; 444 r ; 446 DB_GET_BOTH : 447 DB_GET_BOTH_RANGE : 454 i( `F_ISSET ( dbc , DBC_OPD )) { 455 -> o = 1; 459 DB_SET : 460 DB_SET_RANGE : 461 i(( t = `__m_gno ( dbc , key , & -> o , 0)) != 0) 462 r ; 465 t = `__db_unknown_ag ( dbp -> v , "__mc_g", ags ); 466 r ; 478 i(( ags = DB_NEXT || fg= DB_CURRENT && (( t = 479 `__m_upde ( dbc , -> o , 0)!0&& t ! DB_NOTFOUND ) 480 r ; 482 ;; ++ -> o ) { 484 i(( t = `__bam_rch ( dbc , & -> o , 485 `F_ISSET ( dbc , DBC_RMW ? SR_FIND_WR : SR_FIND , 486 1, & exa )) != 0) 487 r ; 488 i(! exa ) { 489 t = DB_NOTFOUND ; 490 r ; 494 `STACK_TO_CURSOR ( , t ); 495 i( t != 0) 496 r ; 507 i( `B_DISSET ( `GET_BKEYDATA ( dbp , -> ge , cp-> dx )-> ty )) 508 ags ) { 509 DB_NEXT : 510 DB_PREV : 511 () `__bam_kl ( dbc , STK_CLRDBC ); 512 y ; 513 DB_GET_BOTH : 514 DB_GET_BOTH_RANGE : 522 i( `F_ISSET ( dbc , DBC_OPD )) { 523 () `__bam_kl ( dbc , STK_CLRDBC ); 526 t = DB_NOTFOUND ; 527 r ; 529 t = DB_KEYEMPTY ; 530 r ; 533 i( ags = DB_GET_BOTH || 534 ags = DB_GET_BOTHC || fg= DB_GET_BOTH_RANGE ) { 535 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , dbc-> txn , 536 da , -> ge , cp-> dx , __bam_defcmp , & cmp )) != 0) 537 ( t ); 538 i( cmp == 0) 540 i(! `F_ISSET ( dbc , DBC_OPD )) { 541 t = DB_NOTFOUND ; 542 r ; 544 () `__bam_kl ( dbc , STK_CLRDBC ); 550 i(! `F_ISSET ( dbc , DBC_OPD && !F_ISSET( key , DB_DBT_ISSET )) { 551 t = `__db_tcy ( dbp -> v , 552 key , & -> o , (cp->recno), 553 & dbc -> rkey -> da , &dbc->rkey-> un ); 554 `F_SET ( key , DB_DBT_ISSET ); 558 r : `CD_CLR ( ); 560 ( t ); 561 } } 570 $__mc_put ( dbc , key , da , ags , pgn ) 571 DBC * dbc ; 572 DBT * key , * da ; 573 u_t32_t ags ; 574 db_pgno_t * pgn ; 576 BTREE_CURSOR * ; 577 DB * dbp ; 578 DB_LSN l ; 579 ENV * v ; 580 u_t32_t iiags ; 581 exa , nc , t , t_t ; 582 * g ; 584 `COMPQUIET ( pgn , NULL ); 586 dbp = dbc ->dbp; 587 v = dbp ->env; 588 = ( BTREE_CURSOR *) dbc -> ; 597 i( `F_ISSET ( dbc , DBC_OPD )) 598 ags ) { 599 DB_KEYFIRST : 600 -> o = 1; 601 ags = DB_BEFORE ; 603 DB_KEYLAST : 604 i(( t = `__m_add ( dbc , 605 & -> o , da , DB_APPEND , 0)) != 0) 606 ( t ); 607 i( `CURADJ_LOG ( dbc ) && 608 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, 609 CA_ICURRENT , -> ro , cp-> o , cp-> d )) != 0) 610 ( t ); 621 i( ags = DB_KEYFIRST || 622 ags = DB_KEYLAST || fg= DB_NOOVERWRITE ) { 623 t = `__m_gno ( dbc , key , & -> o , 1); 624 i( t =0 || = DB_NOTFOUND ) 625 t = `__m_add ( dbc , & -> o , da , ags , 0); 626 ( t ); 637 i( `CD_ISSET ( )) 638 iiags = DB_BEFORE ; 640 iiags = ags ; 642 l : i(( t = `__bam_rch ( dbc , & -> o , SR_INSERT , 1, & exa )) != 0) 643 r ; 648 `DB_ASSERT ( v , exa || `CD_ISSET ( )); 651 `STACK_TO_CURSOR ( , t ); 652 i( t != 0) 653 r ; 655 t = `__bam_iem ( dbc , key , da , iiags , 0); 656 t_t = `__bam_kl ( dbc , STK_CLRDBC ); 658 i( t_t !0 && ( t =0 || = DB_NEEDSPLIT )) 659 t = t_t ; 660 i( t = DB_NEEDSPLIT ) { 661 g = & -> o ; 662 i(( t = `__bam_l ( dbc , g , NULL )) != 0) 663 r ; 664 l ; 666 i( t != 0) 667 r ; 669 ags ) { 670 DB_AFTER : 671 i(( t = `__m_ ( dbc , CA_IAFTER , & nc )) != 0) 672 r ; 679 i( iiags = DB_AFTER ) 680 ++ -> o ; 683 i( nc > 0 && `CURADJ_LOG ( dbc ) && 684 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, CA_IAFTER , 685 -> ro , cp-> o , cp-> d )) != 0) 686 r ; 688 DB_BEFORE : 689 i(( t = `__m_ ( dbc , CA_IBEFORE , & nc )) != 0) 690 r ; 691 -- -> o ; 694 i( nc > 0 && `CURADJ_LOG ( dbc ) && 695 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, CA_IBEFORE , 696 -> ro , cp-> o , cp-> d )) != 0) 697 r ; 699 DB_CURRENT : 705 i(! `CD_ISSET ( )) 709 i(( t = `__m_ ( dbc , CA_ICURRENT , & nc )) != 0) 710 r ; 711 i( nc > 0 && `CURADJ_LOG ( dbc ) && 712 ( t = `__bam_rcudj_log ( dbp , dbc -> txn , & l , 0, 713 CA_ICURRENT , -> ro , cp-> o , cp-> d )) != 0) 714 r ; 721 i(! `F_ISSET ( dbc , DBC_OPD ) && 722 ( ags = DB_AFTER || fg= DB_BEFORE && key ! NULL ) 723 t = `__db_tcy ( v , key , & -> o , 724 ( -> o ), & dbc -> rkey -> da , &dbc->rkey-> un ); 727 r : `CD_CLR ( ); 729 ( t ); 730 } } 739 $__m_ ( dbc_g , , foundp ) 740 DBC * dbc_g ; 741 _o_g ; 742 * foundp ; 744 BTREE_CURSOR * , * _g ; 745 DB * dbp , * ldbp ; 746 DBC * dbc ; 747 ENV * v ; 748 db_o_t o ; 749 u_t32_t d ; 750 adjued , found ; 752 dbp = dbc_g ->dbp; 753 v = dbp ->env; 754 _g = ( BTREE_CURSOR *) dbc_g -> ; 755 o = _g ->recno; 761 `DB_ASSERT ( v , `F_ISSET ( _g , C_RENUMBER )); 763 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 773 i( = CA_DELETE ) { 774 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 775 d = 1; 776 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 777 ldbp = `TAILQ_NEXT dbp, dblilks )) { 778 `MUTEX_LOCK ( v , dbp -> mux ); 779 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 780 = ( BTREE_CURSOR *) dbc -> ; 781 i( _g -> ro = ->root && 782 o = ->&& `CD_ISSET (cp) && 783 d < ->order && 784 ! `MVCC_SKIP_CURADJ ( dbc , -> ro )) 785 d = ->order + 1; 787 `MUTEX_UNLOCK ( v , dbp -> mux ); 790 d = INVALID_ORDER ; 793 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 794 found = 0; 795 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 796 ldbp = `TAILQ_NEXT dbp, dblilks )) { 797 `MUTEX_LOCK ( v , dbp -> mux ); 798 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) { 799 = ( BTREE_CURSOR *) dbc -> ; 800 i( _g -> ro ! ->root || 801 `MVCC_SKIP_CURADJ ( dbc , -> ro )) 803 ++ found ; 804 adjued = 0; 805 ) { 806 CA_DELETE : 807 i( o < ->recno) { 808 -- -> o ; 813 i( o = ->&& `CD_ISSET (cp)) 814 -> d += order; 815 } i( o = ->recno && 816 ! `CD_ISSET ( )) { 817 `CD_SET ( ); 818 -> d = order; 821 CA_IBEFORE : 826 i( `C_EQUAL ( _g , )) { 827 ++ -> o ; 828 adjued = 1; 830 ; 831 CA_ICURRENT : 843 `DB_ASSERT ( v , `CD_ISSET ( _g )); 844 i( `C_EQUAL ( _g , )) { 845 `CD_CLR ( ); 849 CA_IAFTER : 850 : i(! adjued && `C_LESSTHAN ( _g , )) { 851 ++ -> o ; 852 adjued = 1; 854 i( o = ->&& adjued ) 863 -> d -( _g ->order - 1); 867 `MUTEX_UNLOCK ( dbp -> v , dbp-> mux ); 869 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 871 i( foundp ! NULL ) 872 * foundp = found ; 874 } } 883 $__m_gno ( dbc , key , p , n_ ) 884 DBC * dbc ; 885 cڡ DBT * key ; 886 db_o_t * p ; 887 n_ ; 889 DB * dbp ; 890 db_o_t o ; 892 dbp = dbc ->dbp; 895 i( key -> size !( db_o_t )) { 896 `__db_rx ( dbp -> v , "illegalecordumber size"); 897 ( EINVAL ); 901 i(( o = *( db_o_t *) key -> da ) == 0) { 902 `__db_rx ( dbp -> v , "illegalecordumber of 0"); 903 ( EINVAL ); 905 i( p ! NULL ) 906 * p = o ; 912 ( dbc -> dbty = DB_RECNO ? 913 `__m_upde ( dbc , o , n_ ) : 0); 914 } } 921 $__m_upde ( dbc , o , n_ ) 922 DBC * dbc ; 923 db_o_t o ; 924 n_ ; 926 BTREE * t ; 927 DB * dbp ; 928 DBT * rda ; 929 db_o_t ecs ; 930 t ; 932 dbp = dbc ->dbp; 933 t = dbp -> bt_ ; 939 i(! n_ && t -> _eof ) 946 i(( t = `__bam_ecs ( dbc , & ecs )) != 0) 947 ( t ); 948 i(! t -> _eof && o > ecs ) { 949 i(( t = `__m_d ( dbc , o )!0 && ! DB_NOTFOUND ) 950 ( t ); 951 i(( t = `__bam_ecs ( dbc , & ecs )) != 0) 952 ( t ); 959 i(! n_ || o < ecs + 1) 962 rda = & dbc -> my_rda ; 963 rda -> ags = 0; 964 rda -> size = 0; 966 o > ++ ecs ) 967 i(( t = `__m_add ( dbc , 968 & ecs , rda , 0, BI_DELETED )) != 0) 969 ( t ); 971 } } 978 $__m_sour ( dbp ) 979 DB * dbp ; 981 BTREE * t ; 982 ENV * v ; 983 * sour ; 984 t ; 986 v = dbp ->env; 987 t = dbp -> bt_ ; 990 i(( t = `__db_ame ( v , 991 DB_APP_DATA , t -> _sour , 0, NULL , & sour )) != 0) 992 ( t ); 993 `__os_ ( v , t -> _sour ); 994 t -> _sour = sour ; 1002 i(( t -> _ = `fݒ -> _sour , "rb")= NULL ) { 1003 t = `__os_g_o (); 1004 `__db_r ( v , t , "%s", t -> _sour ); 1005 ( t ); 1008 t -> _eof = 0; 1010 } } 1019 $__m_wreback ( dbp ) 1020 DB * dbp ; 1022 BTREE * t ; 1023 DBC * dbc ; 1024 DBT key , da ; 1025 DB_THREAD_INFO * ; 1026 ENV * v ; 1027 FILE * ; 1028 db_o_t keyno ; 1029 t , t_t ; 1030 u_t8_t dim , * d ; 1032 t = dbp -> bt_ ; 1033 v = dbp ->env; 1034 = NULL ; 1035 d = NULL ; 1038 i(! t -> _modifd ) 1042 i( t -> _sour = NULL ) { 1043 t -> _modifd = 0; 1053 `memt (& key , 0, (key)); 1054 key . size = ( db_o_t ); 1055 key . da = & keyno ; 1056 `memt (& da , 0, (data)); 1057 `F_SET (& da , DB_DBT_REALLOC ); 1060 `ENV_GET_THREAD_INFO ( v , ); 1061 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 1062 ( t ); 1085 i(( t = 1086 `__m_upde ( dbc , DB_MAX_RECORDS , 0)!0 && t ! DB_NOTFOUND ) 1087 r ; 1092 i( t -> _ ! NULL ) { 1093 i( `fo ( t -> _ ) != 0) { 1094 t = `__os_g_o (); 1095 `__db_r ( v , t , "%s", t -> _sour ); 1096 r ; 1098 t -> _ = NULL ; 1100 i(( = `fݒ ( t -> _sour , "wb")= NULL ) { 1101 t = `__os_g_o (); 1102 `__db_r ( v , t , "%s", t -> _sour ); 1103 r ; 1110 dim = t -> _dim ; 1111 keyno = 1;; ++keyno) { 1112 t = `__db_g ( dbp , , NULL , & key , & da , 0)) { 1114 i( da . size != 0 && 1115 `fwre ( da .da, 1, da. size , ) != data.size) 1116 wre_r ; 1118 DB_KEYEMPTY : 1119 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) { 1120 i( d = NULL ) { 1121 i(( t = `__os_mloc ( 1122 v , t -> _n , & d )) != 0) 1123 r ; 1124 `memt ( d , t -> _d ,-> _n ); 1126 i( `fwre ( d , 1, t -> _n , ) !=->re_len) 1127 wre_r ; 1130 DB_NOTFOUND : 1131 t = 0; 1132 de ; 1134 r ; 1136 i(! `F_ISSET ( dbp , DB_AM_FIXEDLEN ) && 1137 `fwre (& dim , 1, 1, ) != 1) { 1138 wre_r : t = `__os_g_o (); 1139 `__db_r ( v , t , 1140 "%s: wredbackg fe", t -> _sour ); 1141 r ; 1145 r : 1146 de : 1147 i( ! NULL && `fo (fp) != 0) { 1148 t_t = `__os_g_o (); 1149 `__db_r ( v , t_t , "%s", t -> _sour ); 1150 i( t == 0) 1151 t = t_t ; 1155 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1156 t = t_t ; 1159 i( da .d! NULL ) 1160 `__os_u ( v , da .data); 1161 i( d ! NULL ) 1162 `__os_ ( v , d ); 1164 i( t == 0) 1165 t -> _modifd = 0; 1167 ( t ); 1168 } } 1175 $__m_d ( dbc , t ) 1176 DBC * dbc ; 1177 db_o_t t ; 1179 BTREE * t ; 1180 DB * dbp ; 1181 DBT da , * rda ; 1182 db_o_t o ; 1183 size_t n ; 1184 ch , t , was_modifd ; 1186 t = dbc -> dbp -> bt_ ; 1187 dbp = dbc ->dbp; 1188 was_modifd = t -> _modifd ; 1190 i(( t = `__bam_ecs ( dbc , & o )) != 0) 1191 ( t ); 1198 n = `F_ISSET ( dbp , DB_AM_FIXEDLEN ? t -> _n : 256; 1199 rda = & dbc -> my_rkey ; 1200 i( rda -> un < n ) { 1201 i(( t = `__os_loc ( 1202 dbp -> v , n , & rda -> da )) != 0) { 1203 rda -> un = 0; 1204 rda -> da = NULL ; 1205 ( t ); 1207 rda -> un = ( u_t32_t ) n ; 1210 `memt (& da , 0, (data)); 1211 o < t ) { 1212 da .d rda ->data; 1213 da . size = 0; 1214 i( `F_ISSET ( dbp , DB_AM_FIXEDLEN )) 1215 n = t -> _n ;en > 0; --len) { 1216 i(( ch = `fgc ( t -> _ )= EOF ) { 1217 i( da . size == 0) 1218 eof ; 1221 (( u_t8_t *) da .da)[da. size ++] = ch ; 1225 i(( ch = `fgc ( t -> _ )= EOF ) { 1226 i( da . size == 0) 1227 eof ; 1230 i( ch = t -> _dim ) 1233 (( u_t8_t *) da .da)[da. size ++] = ch ; 1234 i( da . size = rda -> un ) { 1235 i(( t = `__os_loc ( dbp -> v , 1236 rda -> un *= 2, 1237 & rda -> da )) != 0) { 1238 rda -> un = 0; 1239 rda -> da = NULL ; 1240 ( t ); 1242 da .d rda ->data; 1253 i( t -> _ϡ > o ) { 1254 ++ o ; 1255 i(( t = `__m_add ( dbc , & o , & da , 0, 0)) != 0) 1256 r ; 1258 ++ t -> _ϡ ; 1262 eof : t -> _eof = 1; 1263 t = DB_NOTFOUND ; 1265 r : i(! was_modifd ) 1266 t -> _modifd = 0; 1268 ( t ); 1269 } } 1276 $__m_add ( dbc , , da , ags , bi_ags ) 1277 DBC * dbc ; 1278 db_o_t * ; 1279 DBT * da ; 1280 u_t32_t ags , bi_ags ; 1282 BTREE_CURSOR * ; 1283 exa , t , ack , t_t ; 1285 = ( BTREE_CURSOR *) dbc -> ; 1287 y : 1288 i(( t = `__bam_rch ( dbc , , 1289 SR_INSERT | ( ags = DB_APPEND ? SR_APPEND : 0), 1, & exa )) != 0) 1290 ( t ); 1291 ack = 1; 1294 `STACK_TO_CURSOR ( , t ); 1295 i( t != 0) 1296 r ; 1298 i( exa && ags = DB_NOOVERWRITE && ! `CD_ISSET ( ) && 1299 ! `B_DISSET ( `GET_BKEYDATA ( dbc -> dbp , -> ge , cp-> dx )-> ty )) { 1300 t = DB_KEYEXIST ; 1301 r ; 1308 i( ags = DB_APPEND && dbc -> dbp -> db_nd_o ! NULL && 1309 ( t = dbc -> dbp -> `db_nd_o (dbc->dbp, da , * )) != 0) 1310 r ; 1319 t = `__bam_iem ( dbc , 1320 NULL , da , exa ? DB_CURRENT : DB_BEFORE , bi_ags )) { 1338 DB_NEEDSPLIT : 1340 () `__bam_kl ( dbc , STK_CLRDBC ); 1341 ack = 0; 1343 i(( t = `__bam_l ( dbc , , NULL )) != 0) 1344 r ; 1346 y ; 1349 r ; 1352 r : i( ack && ( t_t = `__bam_kl ( dbc , STK_CLRDBC )!0 && t == 0) 1353 t = t_t ; 1355 ( t ); 1356 } } @../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 , 137 dbc -> thad_fo , h , dbc-> iܙy ); 138 i(( t_t = 139 `__TLPUT ( dbc , lock )!0 && t == 0) 140 t = t_t ; 141 ( t =0 ? DB_NOTFOUND :et); 152 tٮ = 0;;) { 153 `TYPE ( h )) { 154 P_LBTREE : 155 P_LDUP : 156 o - tٮ ; 161 i( `TYPE ( h = P_LBTREE ) { 162 adju = P_INDX ; 163 dofft = O_INDX ; 165 adju = O_INDX ; 166 dofft = 0; 168 t_o = 0, dx = 0;; indx + adju ) { 169 i( dx > `NUM_ENT ( h )) { 170 * exap = 0; 171 i(! `LF_ISSET ( SR_PAST_EOF ) || 172 o > t_o + 1) { 173 t = `__memp_ut ( mpf , 174 dbc -> thad_fo , 175 h , dbc -> iܙy ); 176 h = NULL ; 177 i(( t_t = `__TLPUT ( dbc , 178 lock )!0 && t == 0) 179 t = t_t ; 180 i( t == 0) 181 t = DB_NOTFOUND ; 182 r ; 185 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , h , 186 dx + dofft )-> ty ) && 187 ++ t_o = o ) 192 `BT_STK_ENTER ( dbp -> v , 193 , h , dx , lock , lock_mode , t ); 194 i( t != 0) 195 r ; 197 P_IBTREE : 198 dx = 0, t = `NUM_ENT ( h );;) { 199 bi = `GET_BINTERNAL ( dbp , h , dx ); 200 i(++ dx = t || tٮ + bi -> ecs > o ) 202 tٮ + bi -> ecs ; 204 pg = bi -> pgno ; 206 P_LRECNO : 207 o - tٮ ; 210 -- o ; 211 `BT_STK_ENTER ( dbp -> v , 212 , h , o , lock , lock_mode , t ); 213 i( t != 0) 214 r ; 216 P_IRECNO : 217 dx = 0, t = `NUM_ENT ( h );;) { 218 ri = `GET_RINTERNAL ( dbp , h , dx ); 219 i(++ dx = t || tٮ + ri -> ecs > o ) 221 tٮ + ri -> ecs ; 223 pg = ri -> pgno ; 226 ( `__db_pgfmt ( dbp -> v , h -> pgno )); 228 -- dx ; 231 i( = `LEVEL ( h )) { 232 `BT_STK_ENTER ( dbp -> v , 233 , h , dx , lock , lock_mode , t ); 234 i( t != 0) 235 r ; 238 i( ack ) { 239 `BT_STK_PUSH ( dbp -> v , 240 , h , dx , lock , lock_mode , t ); 241 i( t != 0) 242 r ; 243 h = NULL ; 245 lock_mode = DB_LOCK_WRITE ; 246 i(( t = 247 `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 248 r ; 255 i(( `LF_ISSET ( SR_PARENT ) && 256 ( u_t8_t )( + 1>(u_t8_t)( `LEVEL ( h ) - 1)) || 257 ( `LEVEL ( h - 1= LEAFLEVEL ) 258 ack = 1; 260 i(( t = `__memp_ut ( mpf , 261 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 262 r ; 263 h = NULL ; 265 lock_mode = ack && 266 `LF_ISSET ( SR_WRITE ? DB_LOCK_WRITE : DB_LOCK_READ ; 267 i(( t = `__db_lg ( dbc , 268 LCK_COUPLE_ALWAYS , pg , lock_mode , 0, & lock )) != 0) { 274 () `__LPUT ( dbc , lock ); 275 r ; 279 i(( t = `__memp_fg ( mpf , & pg , 280 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 281 r ; 285 r : i( h ! NULL && ( t_t = `__memp_ut ( mpf , 286 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 287 t = t_t ; 289 `BT_STK_POP ( ); 290 `__bam_kl ( dbc , 0); 292 ( t ); 293 } } 302 $__bam_adju ( dbc , adju ) 303 DBC * dbc ; 304 t32_t adju ; 306 BTREE_CURSOR * ; 307 DB * dbp ; 308 DB_MPOOLFILE * mpf ; 309 EPG * g ; 310 PAGE * h ; 311 db_pgno_t ro_pgno ; 312 t ; 314 dbp = dbc ->dbp; 315 mpf = dbp ->mpf; 316 = ( BTREE_CURSOR *) dbc -> ; 317 ro_pgno = -> ro ; 320 g = -> ;pg <-> c ; ++epg) { 321 h = g -> ge ; 322 i( `TYPE ( h = P_IBTREE || TYPE(h= P_IRECNO ) { 323 i(( t = `__memp_dty ( mpf , & h , 324 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 325 ( t ); 326 g -> ge = h ; 327 i( `DBC_LOGGING ( dbc )) { 328 i(( t = `__bam_dju_log ( dbp , dbc -> txn , 329 & `LSN ( h ), 0, `PGNO (h), &LSN(h), 330 ( u_t32_t ) g -> dx , adju , 331 `PGNO ( h = ro_pgno ? 332 CAD_UPDATEROOT : 0)) != 0) 333 ( t ); 335 `LSN_NOT_LOGGED ( `LSN ( h )); 337 i( `TYPE ( h = P_IBTREE ) 338 `GET_BINTERNAL ( dbp , h , g -> dx )-> ecs += 339 adju ; 341 `GET_RINTERNAL ( dbp , h , g -> dx )-> ecs += 342 adju ; 344 i( `PGNO ( h = ro_pgno ) 345 `RE_NREC_ADJ ( h , adju ); 349 } } 358 $__bam_ecs ( dbc , p ) 359 DBC * dbc ; 360 db_o_t * p ; 362 DB * dbp ; 363 DB_LOCK lock ; 364 DB_MPOOLFILE * mpf ; 365 PAGE * h ; 366 db_pgno_t pgno ; 367 t , t_t ; 369 dbp = dbc ->dbp; 370 mpf = dbp ->mpf; 372 pgno = dbc -> -> ro ; 373 i(( t = `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & lock )) != 0) 374 ( t ); 375 i(( t = `__memp_fg ( mpf , & pgno , 376 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 377 ( t ); 379 * p = `RE_NREC ( h ); 381 t = `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy ); 382 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 383 t = t_t ; 385 ( t ); 386 } } 394 db_o_t 395 $__bam_tٮ ( dbp , h ) 396 DB * dbp ; 397 PAGE * h ; 399 db_o_t ecs ; 400 db_dx_t dx , t ; 402 ecs = 0; 403 t = `NUM_ENT ( h ); 405 `TYPE ( h )) { 406 P_LBTREE : 408 dx = 0; indx < t ; indx + P_INDX ) 409 i(! `B_DISSET ( 410 `GET_BKEYDATA ( dbp , h , dx + O_INDX )-> ty )) 411 ++ ecs ; 413 P_LDUP : 415 dx = 0; indx < t ; indx + O_INDX ) 416 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , h , dx )-> ty )) 417 ++ ecs ; 419 P_IBTREE : 420 dx = 0; indx < t ; indx + O_INDX ) 421 ecs + `GET_BINTERNAL ( dbp , h , dx )->nrecs; 423 P_LRECNO : 424 ecs = `NUM_ENT ( h ); 426 P_IRECNO : 427 dx = 0; indx < t ; indx + O_INDX ) 428 ecs + `GET_RINTERNAL ( dbp , h , dx )->nrecs; 432 ( ecs ); 433 } } @../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 , 97 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) { 99 () `__LPUT ( dbc , lock ); 100 ( t ); 111 i(!* ack && 112 (( `LF_ISSET ( SR_PARENT && ( u_t8_t )( ev + 1> `LEVEL ( h )) || 113 ( `LF_ISSET ( SR_WRITE && `LEVEL ( h = LEAFLEVEL ) || 114 ( `LF_ISSET ( SR_START && ev = `LEVEL ( h )))) { 115 i(! `STD_LOCKING ( dbc )) 116 no_lock ; 117 t = `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy ); 118 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 119 t = t_t ; 120 i( t != 0) 121 ( t ); 122 lock_mode = DB_LOCK_WRITE ; 123 i(( t = `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 124 ( t ); 125 i(( t = `__memp_fg ( mpf , & pg , 126 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) { 128 () `__LPUT ( dbc , lock ); 129 ( t ); 131 i(!(( `LF_ISSET ( SR_PARENT ) && 132 ( u_t8_t )( ev + 1> `LEVEL ( h )) || 133 ( `LF_ISSET ( SR_WRITE && `LEVEL ( h = LEAFLEVEL ) || 134 ( `LF_ISSET ( SR_START && ev = `LEVEL ( h )))) { 136 t = `__memp_ut ( mpf , 137 dbc -> thad_fo , h , dbc-> iܙy ); 138 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 139 t = t_t ; 140 i( t != 0) 141 ( t ); 142 y_aga ; 144 no_lock : * ack = 1; 146 `BT_STK_ENTER ( dbp -> v , , h , 0, lock , lock_mode , t ); 148 ( t ); 149 } } 159 $__bam_ch ( dbc , ro_pgno , key , ags , ev , , exap ) 160 DBC * dbc ; 161 db_pgno_t ro_pgno ; 162 cڡ DBT * key ; 163 u_t32_t ags ; 164 ev , * exap ; 165 db_o_t * ; 167 BTREE * t ; 168 BTREE_CURSOR * ; 169 DB * dbp ; 170 DB_LOCK lock ; 171 DB_MPOOLFILE * mpf ; 172 ENV * v ; 173 PAGE * h ; 174 db_dx_t ba , i , dx , * p , lim ; 175 db_lockmode_t lock_mode ; 176 db_pgno_t pg ; 177 db_o_t o ; 178 adju , cmp , dofft , t , t_ack , ack , t_t ; 179 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 181 dbp = dbc ->dbp; 182 v = dbp ->env; 183 mpf = dbp ->mpf; 184 = ( BTREE_CURSOR *) dbc -> ; 185 h = NULL ; 186 t = dbp -> bt_ ; 187 o = 0; 188 t_ack = 0; 190 `BT_STK_CLR ( ); 201 i( ro_pgno = PGNO_INVALID ) 202 ro_pgno = -> ro ; 203 i(( t = `__bam_g_ro ( dbc , ro_pgno , ev , ags , & ack )) != 0) 204 ( t ); 205 lock_mode = -> c ->lock_mode; 206 lock = -> c ->lock; 207 h = -> c -> ge ; 209 `BT_STK_CLR ( ); 212 func = `F_ISSET ( dbc , DBC_OPD ) ? 213 ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare) : 214 t -> bt_com ; 217 p = `P_INP ( dbp , h ); 218 adju = `TYPE ( h = P_LBTREE ? P_INDX : O_INDX ; 219 i( `LF_ISSET ( SR_MIN | SR_MAX )) { 220 i( `LF_ISSET ( SR_MIN || `NUM_ENT ( h ) == 0) 221 dx = 0; 222 i( `TYPE ( h = P_LBTREE ) 223 dx = `NUM_ENT ( h ) - 2; 225 dx = `NUM_ENT ( h ) - 1; 227 i( `LEVEL ( h = LEAFLEVEL || 228 (! `LF_ISSET ( SR_START && `LEVEL ( h = ev )) { 229 i( `LF_ISSET ( SR_NEXT )) 230 g_xt ; 231 found ; 233 xt ; 242 `DB_BINARY_SEARCH_FOR ( ba , lim , h , adju ) { 243 `DB_BINARY_SEARCH_INCR ( dx , ba , lim , adju ); 244 i(( t = `__bam_cmp ( dbp , dbc -> thad_fo , 245 dbc -> txn , key , h , dx , func , & cmp )) != 0) 246 r ; 247 i( cmp == 0) { 248 i( `LEVEL ( h = LEAFLEVEL || 249 (! `LF_ISSET ( SR_START ) && 250 `LEVEL ( h = ev )) { 251 i( `LF_ISSET ( SR_NEXT )) 252 g_xt ; 253 found ; 255 xt ; 257 i( cmp > 0) 258 `DB_BINARY_SEARCH_SHIFT_BASE ( dx , ba , 259 lim , adju ); 270 i( `LEVEL ( h = LEAFLEVEL || 271 (! `LF_ISSET ( SR_START && `LEVEL ( h = ev )) { 272 * exap = 0; 274 i( `LF_ISSET ( SR_EXACT )) { 275 t = DB_NOTFOUND ; 276 r ; 279 i( `LF_ISSET ( SR_STK_ONLY )) { 280 `BT_STK_NUM ( v , , h , ba , t ); 281 i(( t_t = 282 `__LPUT ( dbc , lock )!0 && t == 0) 283 t = t_t ; 284 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 285 h , dbc -> iܙy )!0 && t == 0) 286 t = t_t ; 287 ( t ); 289 i( `LF_ISSET ( SR_NEXT )) { 290 g_xt : 294 i( `PGNO ( h = ro_pgno ) { 295 t = DB_NOTFOUND ; 296 r ; 304 i(( t = `__LPUT ( dbc , lock )) != 0) 305 r ; 306 i(( t = `__memp_ut ( mpf , 307 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 308 r ; 309 h = NULL ; 310 `LF_SET ( SR_MIN ); 311 `LF_CLR ( SR_NEXT ); 312 dx = -> ->indx + 1; 313 i( dx = `NUM_ENT ( -> -> ge )) { 314 t = DB_NOTFOUND ; 315 -> c ++; 316 r ; 318 h = -> -> ge ; 319 -> -> ge = NULL ; 320 lock = -> ->lock; 321 `LOCK_INIT ( -> -> lock ); 322 i(( t = `__bam_kl ( dbc , STK_NOLOCK )) != 0) 323 r ; 324 ack = 1; 325 xt ; 336 i( `LF_ISSET ( SR_DEL && -> c =-> ) 337 -> c ++; 338 `BT_STK_ENTER ( v , , h , ba , lock , lock_mode , t ); 339 i( t != 0) 340 r ; 350 dx = ba > 0 ? ba - O_INDX : base; 356 xt : i( ! NULL ) 357 i = 0; i < dx ; ++i) 358 o + `GET_BINTERNAL ( dbp , h , i )-> ecs ; 360 pg = `GET_BINTERNAL ( dbp , h , dx )-> pgno ; 363 i( `LF_ISSET ( SR_START && ev = `LEVEL ( h )) 364 ack = 1; 366 i( `LF_ISSET ( SR_STK_ONLY )) { 367 i( ev = `LEVEL ( h )) { 368 `BT_STK_NUM ( v , , h , dx , t ); 369 i(( t_t = 370 `__LPUT ( dbc , lock )!0 && t == 0) 371 t = t_t ; 372 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 373 h , dbc -> iܙy )!0 && t == 0) 374 t = t_t ; 375 ( t ); 377 `BT_STK_NUMPUSH ( v , , h , dx , t ); 378 () `__memp_ut ( mpf , 379 dbc -> thad_fo , h , dbc-> iܙy ); 380 h = NULL ; 381 i(( t = `__db_lg ( dbc , 382 LCK_COUPLE_ALWAYS , pg , lock_mode , 0, & lock )) != 0) { 388 () `__LPUT ( dbc , lock ); 389 ( t ); 391 } i( ack ) { 393 i( `LF_ISSET ( SR_PARENT && ev = `LEVEL ( h )) { 394 `BT_STK_ENTER ( v , 395 , h , dx , lock , lock_mode , t ); 396 i( t != 0) 397 r ; 400 i( `LF_ISSET ( SR_DEL && `NUM_ENT ( h ) > 1) { 405 -> c --; 406 i(( t = `__bam_kl ( dbc , STK_NOLOCK )) != 0) 407 r ; 408 t_ack = ack = 0; 409 do_d ; 411 `BT_STK_PUSH ( v , 412 , h , dx , lock , lock_mode , t ); 413 i( t != 0) 414 r ; 415 h = NULL ; 417 lock_mode = DB_LOCK_WRITE ; 418 i(( t = 419 `__db_lg ( dbc , 0, pg , lock_mode , 0, & lock )) != 0) 420 r ; 429 i(( `LF_ISSET ( SR_PARENT ) && 430 ( u_t8_t )( ev + 1>( `LEVEL ( h ) - 1)) || 431 ( `LEVEL ( h - 1= LEAFLEVEL ) 432 t_ack = 1; 446 i(! `LF_ISSET ( SR_DEL | SR_NEXT )) { 447 i(( t = `__memp_ut ( mpf , 448 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 449 r ; 450 lock_xt ; 453 i(( `LF_ISSET ( SR_DEL && `NUM_ENT ( h ) == 1)) { 459 ack = t_ack = 1; 460 `LF_SET ( SR_WRITE ); 462 -> c ++; 464 `BT_STK_PUSH ( v , , h , 465 dx , lock , lock_mode , t ); 466 i( t != 0) 467 r ; 468 `LOCK_INIT ( lock ); 479 do_d : i( -> c -> ge ! NULL ) { 480 i( `LF_ISSET ( SR_NEXT ) && 481 dx = `NUM_ENT ( h ) - 1) 482 -> c ++; 483 i(( t = 484 `__bam_kl ( dbc , STK_NOLOCK )) != 0) 485 r ; 488 `BT_STK_ENTER ( v , , 489 h , dx , lock , lock_mode , t ); 490 i( t != 0) 491 r ; 492 `LOCK_INIT ( lock ); 495 lock_xt : h = NULL ; 497 i( t_ack && `LF_ISSET ( SR_WRITE )) 498 lock_mode = DB_LOCK_WRITE ; 499 i(( t = `__db_lg ( dbc , 500 LCK_COUPLE_ALWAYS , pg , lock_mode , 0, & lock )) != 0) { 506 () `__LPUT ( dbc , lock ); 507 i( `LF_ISSET ( SR_DEL | SR_NEXT && ! ack ) 508 -> c ++; 509 r ; 511 ack = t_ack ; 513 i(( t = `__memp_fg ( mpf , & pg , 514 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 515 r ; 519 found : * exap = 1; 531 i( `TYPE ( h = P_LBTREE && `NUM_ENT (h> P_INDX ) { 532 i( `LF_ISSET ( SR_DUPLAST )) 533 dx < ( db_dx_t )( `NUM_ENT ( h - P_INDX ) && 534 p [ dx ] =p[dx + P_INDX ]) 535 dx + P_INDX ; 536 i( `LF_ISSET ( SR_DUPFIRST )) 537 dx > 0 && 538 p [ dx ] =p[dx - P_INDX ]) 539 dx - P_INDX ; 548 `DB_ASSERT ( v , = NULL || `LF_ISSET ( SR_DELNO )); 549 i( `LF_ISSET ( SR_DELNO )) { 550 dofft = `TYPE ( h = P_LBTREE ? O_INDX : 0; 551 i( `LF_ISSET ( SR_DUPLAST )) 552 `B_DISSET ( `GET_BKEYDATA ( dbp , 553 h , dx + dofft )-> ty ) && indx > 0 && 554 p [ dx ] =p[dx - adju ]) 555 dx - adju ; 557 `B_DISSET ( `GET_BKEYDATA ( dbp , 558 h , dx + dofft )-> ty ) && 559 dx < ( db_dx_t )( `NUM_ENT ( h - adju ) && 560 p [ dx ] =p[dx + adju ]) 561 dx + adju ; 567 i( `B_DISSET ( `GET_BKEYDATA ( dbp , h , dx + dofft )-> ty )) { 568 t = DB_NOTFOUND ; 569 r ; 578 i( ! NULL ) { 579 `DB_ASSERT ( v , `TYPE ( h = P_LBTREE ); 581 i = 0; i < dx ; i + P_INDX ) 582 i(! `B_DISSET ( 583 `GET_BKEYDATA ( dbp , h , i + O_INDX )-> ty )) 584 ++ o ; 587 * = o + 1; 591 i( `LF_ISSET ( SR_STK_ONLY )) { 592 `BT_STK_NUM ( v , , h , dx , t ); 593 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 594 t = t_t ; 595 i(( t_t = `__memp_ut ( mpf , 596 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 597 t = t_t ; 599 i( `LF_ISSET ( SR_DEL && -> c =-> ) 600 -> c ++; 601 `BT_STK_ENTER ( v , , h , dx , lock , lock_mode , t ); 603 i( t != 0) 604 r ; 608 r : i( h ! NULL && ( t_t = `__memp_ut ( mpf , 609 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 610 t = t_t ; 613 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 614 t = t_t ; 616 `BT_STK_POP ( ); 617 `__bam_kl ( dbc , 0); 619 ( t ); 620 } } 629 $__bam_kl ( dbc , ags ) 630 DBC * dbc ; 631 u_t32_t ags ; 633 BTREE_CURSOR * ; 634 DB * dbp ; 635 DB_MPOOLFILE * mpf ; 636 EPG * g ; 637 t , t_t ; 639 dbp = dbc ->dbp; 640 mpf = dbp ->mpf; 641 = ( BTREE_CURSOR *) dbc -> ; 649 t = 0, g = -> ;pg <-> c ; ++epg) { 650 i( g -> ge ! NULL ) { 651 i( `LF_ISSET ( STK_CLRDBC && -> ge = g ->page) { 652 -> ge = NULL ; 653 `LOCK_INIT ( -> lock ); 655 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 656 g -> ge , dbc -> iܙy )!0 && t == 0) 657 t = t_t ; 665 g -> ge = NULL ; 672 i( `LF_ISSET ( STK_PGONLY )) 674 i( `LF_ISSET ( STK_NOLOCK )) { 675 i(( t_t = `__LPUT ( dbc , g -> lock )!0 && t == 0) 676 t = t_t ; 678 i(( t_t = `__TLPUT ( dbc , g -> lock )!0 && t == 0) 679 t = t_t ; 683 i(! `LF_ISSET ( STK_PGONLY )) 684 `BT_STK_CLR ( ); 686 ( t ); 687 } } 696 $__bam_kgrow ( v , ) 697 ENV * v ; 698 BTREE_CURSOR * ; 700 EPG * p ; 701 size_t s ; 702 t ; 704 s = -> e - cp-> ; 706 i(( t = `__os_oc ( v , s * 2, ( EPG ), & p )) != 0) 707 ( t ); 708 `memy ( p , -> , s * ( EPG )); 709 i( -> !-> ack ) 710 `__os_ ( v , -> ); 711 -> = p ; 712 -> c = p + s ; 713 -> e = p + s * 2; 715 } } @../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 -> v , 187 "Tomy bevs: %d", -> ge -> v ); 188 t = ENOSPC ; 189 r ; 192 i(( t = `__memp_dty ( mpf , 193 & -> ge , dbc -> thad_fo , 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 = `__memp_ut ( mpf , 240 dbc -> thad_fo , -> 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 && ( t_t = `__memp_ut ( mpf , 245 dbc -> thad_fo , , dbc-> iܙy )!0 && t == 0) 246 t = t_t ; 247 i( ! NULL && ( t_t = `__memp_ut ( mpf , 248 dbc -> thad_fo , , 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 DB * dbp ; 265 DBT log_dbt ; 266 DB_LOCK lock , lock ; 267 DB_LSN log_l ; 268 DB_LSN ve_l ; 269 DB_MPOOLFILE * mpf ; 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 -> v , 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 -> thad_fo , 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 -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 386 r ; 389 i(( t = `__memp_dty ( mpf , 390 & -> ge , dbc -> thad_fo , 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 -> v , ); 460 i(( t_t = `__memp_ut ( mpf , 461 dbc -> thad_fo , 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 = `__memp_ut ( mpf , 466 dbc -> thad_fo , -> 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 = `__memp_ut ( mpf , 471 dbc -> thad_fo , -> 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 = `__memp_ut ( mpf , 477 dbc -> thad_fo , , 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 -> v , ); 486 i( loc_ ! NULL ) 487 () `__memp_ut ( mpf , 488 dbc -> thad_fo , loc_ , dbc-> iܙy ); 489 i( ! NULL ) 490 () `__memp_ut ( mpf , dbc -> thad_fo , , dbc-> iܙy ); 493 () `__LPUT ( dbc , lock ); 494 () `__LPUT ( dbc , lock ); 496 () `__memp_ut ( mpf , dbc -> thad_fo , -> ge , dbc-> iܙy ); 497 i( t = DB_NEEDSPLIT ) 498 () `__LPUT ( dbc , -> lock ); 500 () `__TLPUT ( dbc , -> lock ); 502 () `__memp_ut ( mpf , dbc -> thad_fo , -> ge , dbc-> iܙy ); 503 i( t = DB_NEEDSPLIT ) 504 () `__LPUT ( dbc , -> lock ); 506 () `__TLPUT ( dbc , -> lock ); 508 ( t ); 509 } } 516 $__bam_bro ( dbc , rop , l , , ) 517 DBC * dbc ; 518 u_t32_t l ; 519 PAGE * rop , * , * ; 521 BINTERNAL bi , bi0 , * chd_bi ; 522 BKEYDATA * chd_bk ; 523 BOVERFLOW bo , * chd_bo ; 524 BTREE_CURSOR * ; 525 DB * dbp ; 526 DBT hdr , hdr0 , da ; 527 db_pgno_t ro_pgno ; 528 t ; 530 dbp = dbc ->dbp; 531 = ( BTREE_CURSOR *) dbc -> ; 532 chd_bo = NULL ; 533 da .d NULL ; 534 `memt (& bi , 0, (bi)); 536 `TYPE ( rop )) { 537 P_IBTREE : 539 chd_bi = `GET_BINTERNAL ( dbp , rop , l ); 540 `B_TYPE ( chd_bi -> ty )) { 541 B_KEYDATA : 542 bi . n = chd_bi ->len; 543 `B_TSET ( bi . ty , B_KEYDATA ); 544 bi . pgno = ->pgno; 545 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 546 i(( t = `__os_mloc ( dbp -> v , 547 chd_bi -> n , & da .data)) != 0) 548 ( t ); 549 `memy ( da .da, chd_bi ->da, chd_bi-> n ); 550 da . size = chd_bi -> n ; 552 B_OVERFLOW : 554 chd_bo = ( BOVERFLOW *) chd_bi -> da ; 555 `memt (& bo , 0, (bo)); 556 bo . ty = B_OVERFLOW ; 557 bo . = chd_bo ->tlen; 558 bo . pgno = chd_bo ->pgno; 559 bi . n = BOVERFLOW_SIZE ; 560 `B_TSET ( bi . ty , B_OVERFLOW ); 561 bi . pgno = ->pgno; 562 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 563 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 565 B_DUPLICATE : 567 pgfmt ; 570 P_LDUP : 571 P_LBTREE : 573 chd_bk = `GET_BKEYDATA ( dbp , rop , l ); 574 `B_TYPE ( chd_bk -> ty )) { 575 B_KEYDATA : 576 bi . n = chd_bk ->len; 577 `B_TSET ( bi . ty , B_KEYDATA ); 578 bi . pgno = ->pgno; 579 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 580 i(( t = `__os_mloc ( dbp -> v , 581 chd_bk -> n , & da .data)) != 0) 582 ( t ); 583 `memy ( da .da, chd_bk ->da, chd_bk-> n ); 584 da . size = chd_bk -> n ; 586 B_OVERFLOW : 588 chd_bo = ( BOVERFLOW *) chd_bk ; 589 `memt (& bo , 0, (bo)); 590 bo . ty = B_OVERFLOW ; 591 bo . = chd_bo ->tlen; 592 `memt (& hdr , 0, (hdr)); 593 i(( t = `__db_goff ( dbp , dbc -> thad_fo , 594 dbc -> txn , & hdr , chd_bo -> , 595 chd_bo -> pgno , & hdr . da , &hdr. size )) == 0) 596 t = `__db_poff ( dbc , & hdr , & bo . pgno ); 598 i( hdr . da ! NULL ) 599 `__os_ ( dbp -> v , hdr . da ); 600 i( t != 0) 601 ( t ); 603 bi . n = BOVERFLOW_SIZE ; 604 `B_TSET ( bi . ty , B_OVERFLOW ); 605 bi . pgno = ->pgno; 606 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 607 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 609 B_DUPLICATE : 611 pgfmt ; 615 pgfmt : ( `__db_pgfmt ( dbp -> v , -> pgno )); 622 ro_pgno = -> ro ; 623 `P_INIT ( rop , dbp -> pgsize , 624 ro_pgno , PGNO_INVALID , PGNO_INVALID, -> v + 1, P_IBTREE ); 631 `memt (& bi0 , 0, (bi0)); 632 `B_TSET ( bi0 . ty , B_KEYDATA ); 633 bi0 . pgno = ->pgno; 634 i( `F_ISSET ( , C_RECNUM )) { 635 bi0 . ecs = `__bam_tٮ ( dbp , ); 636 `RE_NREC_SET ( rop , bi0 . ecs ); 637 bi . ecs = `__bam_tٮ ( dbp , ); 638 `RE_NREC_ADJ ( rop , bi . ecs ); 640 `DB_SET_DBT ( hdr0 , & bi0 , `SSZA ( BINTERNAL , da )); 641 i(( t = `__db_pem ( dbc , 642 rop , 0, `BINTERNAL_SIZE (0), & hdr0 , NULL )) != 0) 643 r ; 644 t = `__db_pem ( dbc , rop , 1, `BINTERNAL_SIZE ( da . size ), & hdr , &data); 646 r : i( da .d! NULL && chd_bo == NULL) 647 `__os_ ( dbp -> v , da .data); 648 ( t ); 649 } } 656 $__m_ro ( dbc , rop , , ) 657 DBC * dbc ; 658 PAGE * rop , * , * ; 660 DB * dbp ; 661 DBT hdr ; 662 RINTERNAL ri ; 663 db_pgno_t ro_pgno ; 664 t ; 666 dbp = dbc ->dbp; 667 ro_pgno = dbc -> -> ro ; 670 `P_INIT ( rop , dbp -> pgsize , 671 ro_pgno , PGNO_INVALID , PGNO_INVALID, -> v + 1, P_IRECNO ); 674 `DB_SET_DBT ( hdr , & ri , RINTERNAL_SIZE ); 677 ri . pgno = ->pgno; 678 ri . ecs = `__bam_tٮ ( dbp , ); 679 i(( t = `__db_pem ( dbc , rop , 0, RINTERNAL_SIZE , & hdr , NULL )) != 0) 680 ( t ); 681 `RE_NREC_SET ( rop , ri . ecs ); 682 ri . pgno = ->pgno; 683 ri . ecs = `__bam_tٮ ( dbp , ); 684 i(( t = `__db_pem ( dbc , rop , 1, RINTERNAL_SIZE , & hdr , NULL )) != 0) 685 ( t ); 686 `RE_NREC_ADJ ( rop , ri . ecs ); 688 } } 698 $__bam_p ( dbc , , l , lchd , rchd , ags ) 699 DBC * dbc ; 700 EPG * ; 701 u_t32_t l ; 702 PAGE * lchd , * rchd ; 703 ags ; 705 BINTERNAL bi , * chd_bi ; 706 BKEYDATA * chd_bk , * tmp_bk ; 707 BOVERFLOW bo , * chd_bo ; 708 BTREE * t ; 709 BTREE_CURSOR * ; 710 DB * dbp ; 711 DBT a , b , hdr , da ; 712 EPG * chd ; 713 PAGE * age ; 714 RINTERNAL ri ; 715 db_dx_t off ; 716 db_o_t ecs ; 717 `size_t (* func `__P (( DB *, cڡ DBT *, const DBT *)); 718 u_t32_t n , nbys , nksize ; 719 t ; 721 dbp = dbc ->dbp; 722 = ( BTREE_CURSOR *) dbc -> ; 723 t = dbp -> bt_ ; 724 age = -> ge ; 725 chd = + 1; 728 ecs = `F_ISSET ( , C_RECNUM ) && 729 ! `LF_ISSET ( BPI_SPACEONLY ? `__bam_tٮ ( dbp , rchd ) : 0; 744 off = -> dx + O_INDX ; 758 `TYPE ( chd -> ge )) { 759 P_IBTREE : 760 chd_bi = `GET_BINTERNAL ( dbp , chd -> ge , l ); 761 nbys = `BINTERNAL_PSIZE ( chd_bi -> n ); 763 i( `P_FREESPACE ( dbp , age < nbys ) 764 ( DB_NEEDSPLIT ); 765 i( `LF_ISSET ( BPI_SPACEONLY )) 768 `B_TYPE ( chd_bi -> ty )) { 769 B_KEYDATA : 771 `memt (& bi , 0, (bi)); 772 bi . n = chd_bi ->len; 773 `B_TSET ( bi . ty , B_KEYDATA ); 774 bi . pgno = rchd ->pgno; 775 bi . ecs =recs; 776 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 777 `DB_SET_DBT ( da , chd_bi ->da, chd_bi-> n ); 778 i(( t = `__db_pem ( dbc , age , off , 779 `BINTERNAL_SIZE ( chd_bi -> n ), & hdr , & da )) != 0) 780 ( t ); 782 B_OVERFLOW : 784 chd_bo = ( BOVERFLOW *) chd_bi -> da ; 785 `memt (& bo , 0, (bo)); 786 bo . ty = B_OVERFLOW ; 787 bo . = chd_bo ->tlen; 788 bo . pgno = chd_bo ->pgno; 789 bi . n = BOVERFLOW_SIZE ; 790 `B_TSET ( bi . ty , B_OVERFLOW ); 791 bi . pgno = rchd ->pgno; 792 bi . ecs =recs; 793 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 794 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 795 i(( t = `__db_pem ( dbc , age , off , 796 `BINTERNAL_SIZE ( BOVERFLOW_SIZE ), & hdr , & da )) != 0) 797 ( t ); 799 B_DUPLICATE : 801 pgfmt ; 804 P_LDUP : 805 P_LBTREE : 806 chd_bk = `GET_BKEYDATA ( dbp , chd -> ge , l ); 807 `B_TYPE ( chd_bk -> ty )) { 808 B_KEYDATA : 809 nbys = `BINTERNAL_PSIZE ( chd_bk -> n ); 810 nksize = chd_bk -> n ; 834 i( `F_ISSET ( dbc , DBC_OPD )) { 835 i( dbp -> dup_com = __bam_defcmp ) 836 func = __bam_defx ; 838 func = NULL ; 840 func = t -> bt_efix ; 841 i( func = NULL ) 842 nݻfix ; 843 tmp_bk = `GET_BKEYDATA ( dbp , lchd , `NUM_ENT (lchild) - 844 ( `TYPE ( lchd = P_LDUP ? O_INDX : P_INDX )); 845 i( `B_TYPE ( tmp_bk -> ty ! B_KEYDATA ) 846 nݻfix ; 847 `DB_SET_DBT ( a , tmp_bk -> da ,mp_bk-> n ); 848 `DB_SET_DBT ( b , chd_bk -> da , chd_bk-> n ); 849 nksize = ( u_t32_t ) `func ( dbp , & a , & b ); 850 i(( n = `BINTERNAL_PSIZE ( nksize )< nbys ) 851 nbys = n ; 853 nksize = chd_bk -> n ; 855 nݻfix : i( `P_FREESPACE ( dbp , age < nbys ) 856 ( DB_NEEDSPLIT ); 857 i( `LF_ISSET ( BPI_SPACEONLY )) 860 `memt (& bi , 0, (bi)); 861 bi . n = nksize ; 862 `B_TSET ( bi . ty , B_KEYDATA ); 863 bi . pgno = rchd ->pgno; 864 bi . ecs =recs; 865 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 866 `DB_SET_DBT ( da , chd_bk ->da, nksize ); 867 i(( t = `__db_pem ( dbc , age , off , 868 `BINTERNAL_SIZE ( nksize ), & hdr , & da )) != 0) 869 ( t ); 871 B_OVERFLOW : 872 nbys = `BINTERNAL_PSIZE ( BOVERFLOW_SIZE ); 874 i( `P_FREESPACE ( dbp , age < nbys ) 875 ( DB_NEEDSPLIT ); 876 i( `LF_ISSET ( BPI_SPACEONLY )) 880 chd_bo = ( BOVERFLOW *) chd_bk ; 881 `memt (& bo , 0, (bo)); 882 bo . ty = B_OVERFLOW ; 883 bo . = chd_bo ->tlen; 884 `memt (& hdr , 0, (hdr)); 885 i(( t = `__db_goff ( dbp , dbc -> thad_fo , 886 dbc -> txn , & hdr , chd_bo -> , 887 chd_bo -> pgno , & hdr . da , &hdr. size )) == 0) 888 t = `__db_poff ( dbc , & hdr , & bo . pgno ); 890 i( hdr . da ! NULL ) 891 `__os_ ( dbp -> v , hdr . da ); 892 i( t != 0) 893 ( t ); 895 `memt (& bi , 0, (bi)); 896 bi . n = BOVERFLOW_SIZE ; 897 `B_TSET ( bi . ty , B_OVERFLOW ); 898 bi . pgno = rchd ->pgno; 899 bi . ecs =recs; 900 `DB_SET_DBT ( hdr , & bi , `SSZA ( BINTERNAL , da )); 901 `DB_SET_DBT ( da , & bo , BOVERFLOW_SIZE ); 902 i(( t = `__db_pem ( dbc , age , off , 903 `BINTERNAL_SIZE ( BOVERFLOW_SIZE ), & hdr , & da )) != 0) 904 ( t ); 907 B_DUPLICATE : 909 pgfmt ; 912 P_IRECNO : 913 P_LRECNO : 914 nbys = RINTERNAL_PSIZE ; 916 i( `P_FREESPACE ( dbp , age < nbys ) 917 ( DB_NEEDSPLIT ); 918 i( `LF_ISSET ( BPI_SPACEONLY )) 922 `DB_SET_DBT ( hdr , & ri , RINTERNAL_SIZE ); 923 ri . pgno = rchd ->pgno; 924 ri . ecs =recs; 925 i(( t = `__db_pem ( dbc , 926 age , off , RINTERNAL_SIZE , & hdr , NULL )) != 0) 927 ( t ); 930 pgfmt : ( `__db_pgfmt ( dbp -> v , `PGNO ( chd -> ge ))); 937 i( `F_ISSET ( , C_RECNUM && ! `LF_ISSET ( BPI_NORECNUM )) { 939 i( `DBC_LOGGING ( dbc )) { 940 i(( t = `__bam_dju_log ( dbp , dbc -> txn , 941 & `LSN ( age ), 0, `PGNO (ppage), &LSN(ppage), 942 -> dx , -( t32_t ) ecs , 0)) != 0) 943 ( t ); 945 `LSN_NOT_LOGGED ( `LSN ( age )); 948 i( dbc -> dbty = DB_RECNO ) 949 `GET_RINTERNAL ( dbp , age , -> dx )-> ecs -=recs; 951 `GET_BINTERNAL ( dbp , age , -> dx )-> ecs -=recs; 955 } } 962 $__bam_pl ( dbc , , , , lt ) 963 DBC * dbc ; 964 EPG * ; 965 PAGE * , * ; 966 db_dx_t * lt ; 968 DB * dbp ; 969 PAGE * ; 970 db_dx_t hf , * p , nbys , off , lp , t ; 971 adju , t , iag , isbigkey , t ; 973 dbp = dbc ->dbp; 974 = -> ge ; 975 p = `P_INP ( dbp , ); 976 adju = `TYPE ( = P_LBTREE ? P_INDX : O_INDX ; 1011 off = 0; 1012 i( `NEXT_PGNO ( = PGNO_INVALID && -> dx > `NUM_ENT p- adju ) 1013 off = `NUM_ENT ( - adju ; 1014 i( `PREV_PGNO ( = PGNO_INVALID && -> dx == 0) 1015 off = adju ; 1016 i( off != 0) 1017 st ; 1040 t = `NUM_ENT ( - adju ; 1041 hf = ( dbp -> pgsize - `HOFFSET ( )) / 2; 1042 nbys = 0, off = 0; of< t &&by< hf ; ++off) 1043 `TYPE ( )) { 1044 P_IBTREE : 1045 i( `B_TYPE ( 1046 `GET_BINTERNAL ( dbp , , off )-> ty = B_KEYDATA ) 1047 nbys + `BINTERNAL_SIZE ( 1048 `GET_BINTERNAL ( dbp , , off )-> n ); 1050 nbys + `BINTERNAL_SIZE ( BOVERFLOW_SIZE ); 1052 P_LBTREE : 1053 i( `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1054 B_KEYDATA ) 1055 nbys + `BKEYDATA_SIZE ( `GET_BKEYDATA ( dbp , 1056 , off )-> n ); 1058 nbys + BOVERFLOW_SIZE ; 1060 ++ off ; 1062 P_LDUP : 1063 P_LRECNO : 1064 i( `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1065 B_KEYDATA ) 1066 nbys + `BKEYDATA_SIZE ( `GET_BKEYDATA ( dbp , 1067 , off )-> n ); 1069 nbys + BOVERFLOW_SIZE ; 1071 P_IRECNO : 1072 nbys + RINTERNAL_SIZE ; 1075 ( `__db_pgfmt ( dbp -> v , -> pgno )); 1077 st : lp = off ; 1085 `TYPE ( )) { 1086 P_IBTREE : 1087 iag = 1; 1088 isbigkey = 1089 `B_TYPE ( `GET_BINTERNAL ( dbp , , off )-> ty ! B_KEYDATA ; 1091 P_LBTREE : 1092 P_LDUP : 1093 iag = 0; 1094 isbigkey = `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) != 1095 B_KEYDATA ; 1098 iag = isbigkey = 0; 1100 i( isbigkey ) 1101 t = 1; cnt <= 3; ++cnt) { 1102 off = lp + t * adju ; 1103 i( off < ( db_dx_t ) `NUM_ENT ( ) && 1104 (( iag && `B_TYPE ( 1105 `GET_BINTERNAL ( dbp , , off )-> ty = B_KEYDATA ) || 1106 `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1107 B_KEYDATA )) { 1108 lp = off ; 1111 i( lp <( db_dx_t )( t * adju )) 1113 off = lp - t * adju ; 1114 i( iag ? `B_TYPE ( 1115 `GET_BINTERNAL ( dbp , , off )-> ty = B_KEYDATA : 1116 `B_TYPE ( `GET_BKEYDATA ( dbp , , off )-> ty ) == 1117 B_KEYDATA ) { 1118 lp = off ; 1129 i( `TYPE ( = P_LBTREE && 1130 p [ lp ] =p[l- adju ]) 1131 t = 1;; ++cnt) { 1132 off = lp + t * adju ; 1133 i( off < `NUM_ENT ( ) && 1134 p [ lp ] !p[ off ]) { 1135 lp = off ; 1138 i( lp <( db_dx_t )( t * adju )) 1140 off = lp - t * adju ; 1141 i( p [ lp ] !p[ off ]) { 1142 lp = off + adju ; 1148 i(( t = `__bam_cy ( dbp , , , 0, lp )) != 0) 1149 ( t ); 1150 i(( t = `__bam_cy ( dbp , , , lp , `NUM_ENT (pp))) != 0) 1151 ( t ); 1153 * lt = lp ; 1155 } } 1164 $__bam_cy ( dbp , , , nxt , ) 1165 DB * dbp ; 1166 PAGE * , * ; 1167 u_t32_t nxt , ; 1169 BINTERNAL ; 1170 db_dx_t * cp , nbys , off , * pp ; 1172 cp = `P_INP ( dbp , ); 1173 pp = `P_INP ( dbp , ); 1177 off = 0; nxt < ; ++nxt, ++ `NUM_ENT ( ), ++off) { 1178 `TYPE ( )) { 1179 P_IBTREE : 1180 i( off =0 && nxt != 0) 1181 nbys = `BINTERNAL_SIZE (0); 1182 i( `B_TYPE ( 1183 `GET_BINTERNAL ( dbp , , nxt )-> ty = B_KEYDATA ) 1184 nbys = `BINTERNAL_SIZE ( 1185 `GET_BINTERNAL ( dbp , , nxt )-> n ); 1187 nbys = `BINTERNAL_SIZE ( BOVERFLOW_SIZE ); 1189 P_LBTREE : 1194 i( off !0 && ( nxt % P_INDX ) == 0 && 1195 pp [ nxt ] =pp[nx- P_INDX ]) { 1196 cp [ off ] = cp[of- P_INDX ]; 1200 P_LDUP : 1201 P_LRECNO : 1202 i( `B_TYPE ( `GET_BKEYDATA ( dbp , , nxt )-> ty ) == 1203 B_KEYDATA ) 1204 nbys = `BKEYDATA_SIZE ( `GET_BKEYDATA ( dbp , 1205 , nxt )-> n ); 1207 nbys = BOVERFLOW_SIZE ; 1209 P_IRECNO : 1210 nbys = RINTERNAL_SIZE ; 1213 ( `__db_pgfmt ( dbp -> v , -> pgno )); 1215 cp [ off ] = `HOFFSET ( - nbys ; 1216 i( off =0 && nxt !0 && `TYPE ( = P_IBTREE ) { 1217 . n = 0; 1218 . ty = B_KEYDATA ; 1219 . pgno = `GET_BINTERNAL ( dbp , , nxt )->pgno; 1220 . ecs = `GET_BINTERNAL ( dbp , , nxt )->nrecs; 1221 `memy ( `P_ENTRY ( dbp , , off ), & , nbys ); 1224 `memy ( `P_ENTRY ( dbp , , off ), 1225 `P_ENTRY ( dbp , , nxt ), nbys ); 1228 } } @../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_LOCK lock , mock ; 36 DB_MPOOLFILE * mpf ; 37 ENV * v ; 38 PAGE * h ; 39 db_pgno_t pgno ; 40 t , t_t , wre_ma ; 42 dbp = dbc ->dbp; 43 v = dbp ->env; 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 ( v , (* ), &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 , 66 dbc -> thad_fo , dbc-> txn , 0, & ma )) != 0) 67 r ; 69 i( ags = DB_FAST_STAT ) 70 ma_ly ; 73 -> bt_ = 0, pgno = ma -> dbma . ;gn! PGNO_INVALID ;) { 74 ++ -> bt_ ; 76 i(( t = `__memp_fg ( mpf , & pgno , 77 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 78 r ; 80 pgno = h -> xt_pgno ; 81 i(( t = `__memp_ut ( mpf , 82 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 83 r ; 84 h = NULL ; 88 pgno = -> ro ; 89 i(( t = `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & lock )) != 0) 90 r ; 91 i(( t = `__memp_fg ( mpf , & pgno , 92 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 93 r ; 96 -> bt_vs = h -> v ; 99 t = `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy ); 100 h = NULL ; 101 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 102 t = t_t ; 103 i( t != 0) 104 r ; 107 i(( t = `__bam_av ( dbc , 108 DB_LOCK_READ , -> ro , __bam__back , )) != 0) 109 r ; 115 wre_ma = ! `F_ISSET ( dbp , DB_AM_RDONLY ) && 116 (! `MULTIVERSION ( dbp || dbc -> txn ! NULL ); 117 ma_ly : 118 i( t -> bt_ma ! PGNO_BASE_MD || wre_ma ) { 119 t = `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 120 ma = NULL ; 121 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 122 t = t_t ; 123 i( t != 0) 124 r ; 126 i(( t = `__db_lg ( dbc , 127 0, t -> bt_ma , wre_ma ? DB_LOCK_WRITE : DB_LOCK_READ , 128 0, & mock )) != 0) 129 r ; 130 i(( t = `__memp_fg ( mpf , & t -> bt_ma , 131 dbc -> thad_fo , dbc-> txn , 132 wre_ma ? DB_MPOOL_DIRTY : 0, & ma )) != 0) 133 r ; 135 i( ags = DB_FAST_STAT ) { 136 i( dbp -> ty = DB_RECNO || 137 ( dbp -> ty = DB_BTREE && `F_ISSET (dbp, DB_AM_RECNUM ))) { 138 i(( t = `__db_lg ( dbc , 0, 139 -> ro , DB_LOCK_READ , 0, & lock )) != 0) 140 r ; 141 i(( t = `__memp_fg ( mpf , & -> ro , 142 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 143 r ; 145 -> bt_nkeys = `RE_NREC ( h ); 147 -> bt_nkeys = ma -> dbma . key_cou ; 149 -> bt_nda = dbp -> ty = DB_RECNO ? 150 -> bt_nkeys : ma -> dbma . cd_cou ; 154 -> bt_maags = ma -> dbma . ags ; 155 -> bt_mkey = ma -> mkey ; 156 -> bt__n = ma -> _n ; 157 -> bt__d = ma -> _d ; 165 i(( t = `__memp_g_ϡ_pgno ( dbp -> mpf , & pgno )) != 0) 166 r ; 167 -> bt_get = pgno + 1; 168 -> bt_gesize = ma -> dbma . gesize ; 169 -> bt_magic = ma -> dbma . magic ; 170 -> bt_vsi = ma -> dbma . vsi ; 172 i( wre_ma != 0) { 173 ma -> dbma . key_cou = -> bt_nkeys ; 174 ma -> dbma . cd_cou = -> bt_nda ; 177 *( DB_BTREE_STAT **) p = ; 179 r : 180 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 181 t = t_t ; 182 i( h ! NULL && ( t_t = `__memp_ut ( mpf , 183 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 184 t = t_t ; 187 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 188 t = t_t ; 189 i( ma ! NULL && ( t_t = `__memp_ut ( mpf , 190 dbc -> thad_fo , ma , dbc-> iܙy )!0 && t == 0) 191 t = t_t ; 193 i( t !0 && ! NULL ) { 194 `__os_u ( v , ); 195 *( DB_BTREE_STAT **) p = NULL ; 198 ( t ); 199 } } 208 $__bam__t ( dbc , ags ) 209 DBC * dbc ; 210 u_t32_t ags ; 212 cڡ FN [] = { 213 { BTM_DUP , "duplicates" }, 214 { BTM_RECNO , "recno" }, 215 { BTM_RECNUM , "record-numbers" }, 216 { BTM_FIXEDLEN , "fixed-length" }, 217 { BTM_RENUMBER , "renumber" }, 218 { BTM_SUBDB , "multiple-databases" }, 219 { BTM_DUPSORT , "sorted duplicates" }, 220 { 0, NULL } 222 DB * dbp ; 223 DB_BTREE_STAT * ; 224 ENV * v ; 225 ld , t ; 226 cڡ * s ; 228 dbp = dbc ->dbp; 229 v = dbp ->env; 231 i(( t = `__bam_ ( dbc , & , `LF_ISSET ( DB_FAST_STAT ))) != 0) 232 ( t ); 234 i( `LF_ISSET ( DB_STAT_ALL )) { 235 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 236 `__db_msg ( v , "Default Btree/Recno database information:"); 239 `__db_msg ( v , "%lx\tB maginumb", ( u_lg ) -> bt_magic ); 240 `__db_msg ( v , "%lu\tB vsiڂumb", ( u_lg ) -> bt_vsi ); 242 () `__db_g_ld ( dbp , & ld ); 243 ld ) { 245 s = "Little-endian"; 248 s = "Big-endian"; 251 s = "Unrecognized byte order"; 254 `__db_msg ( v , "%s\tBy ord", s ); 255 `__db_ags ( v , NULL , -> bt_maags , , NULL, "\tFlags"); 256 i( dbp -> ty = DB_BTREE ) 257 `__db_dl ( v , "Mimum keyr-ge", ( u_lg ) -> bt_mkey ); 258 i( dbp -> ty = DB_RECNO ) { 259 `__db_dl ( v , 260 "Fixed-ngthecd size", ( u_lg ) -> bt__n ); 261 `__db_msg ( v , 262 "%#x\tFixed-ngthecdad", ( u_t ) -> bt__d ); 264 `__db_dl ( v , 265 "Undlyg dabaagsize", ( u_lg ) -> bt_gesize ); 266 i( dbp -> ty = DB_BTREE ) 267 `__db_dl ( v , "Overflow key/data size", 268 (( BTREE_CURSOR *) dbc -> )-> ovsize ); 269 `__db_dl ( v , "Numb ovh", ( u_lg ) -> bt_vs ); 270 `__db_dl ( v , dbp -> ty = DB_BTREE ? 272 "Numb ocdh", ( u_lg ) -> bt_nkeys ); 273 `__db_dl ( v , 274 "Numb odemh", ( u_lg ) -> bt_nda ); 276 `__db_dl ( v , 277 "Numb o iȷges", ( u_lg ) -> bt_t_pg ); 278 `__db_dl_p ( v , 280 ( u_lg ) -> bt_t_pg , 281 `DB_PCT_PG ( -> bt_t_pg , sp-> bt_t_pg , sp-> bt_gesize ), "ff"); 283 `__db_dl ( v , 284 "Numb oges", ( u_lg ) -> bt_af_pg ); 285 `__db_dl_p ( v , "Number of bytes free inreeeafages", 286 ( u_lg ) -> bt_af_pg , `DB_PCT_PG ( 287 -> bt_af_pg , sp-> bt_af_pg , sp-> bt_gesize ), "ff"); 289 `__db_dl ( v , 290 "Numb o duiages", ( u_lg ) -> bt_dup_pg ); 291 `__db_dl_p ( v , 293 ( u_lg ) -> bt_dup_pg , 294 `DB_PCT_PG ( -> bt_dup_pg , sp-> bt_dup_pg , sp-> bt_gesize ), "ff"); 296 `__db_dl ( v , 297 "Numb o ovowages", ( u_lg ) -> bt_ov_pg ); 298 `__db_dl_p ( v , "Number of bytes free inree overflowages", 299 ( u_lg ) -> bt_ov_pg , `DB_PCT_PG ( 300 -> bt_ov_pg , sp-> bt_ov_pg , sp-> bt_gesize ), "ff"); 301 `__db_dl ( v , "Numb oemyages", ( u_lg ) -> bt_emy_pg ); 303 `__db_dl ( v , "Numb ogeځh䓆i", ( u_lg ) -> bt_ ); 305 `__os_u ( v , ); 308 } } 317 $__bam__back ( dbc , h , cook , pu ) 318 DBC * dbc ; 319 PAGE * h ; 320 * cook ; 321 * pu ; 323 DB * dbp ; 324 DB_BTREE_STAT * ; 325 db_dx_t dx , * p , t ; 326 u_t8_t ty ; 328 dbp = dbc ->dbp; 329 = cook ; 330 * pu = 0; 331 t = `NUM_ENT ( h ); 332 p = `P_INP ( dbp , h ); 334 `TYPE ( h )) { 335 P_IBTREE : 336 P_IRECNO : 337 ++ -> bt_t_pg ; 338 -> bt_t_pg + `P_FREESPACE ( dbp , h ); 340 P_LBTREE : 341 i( t == 0) 342 ++ -> bt_emy_pg ; 345 dx = 0; indx < t ; indx + P_INDX ) { 346 ty = `GET_BKEYDATA ( dbp , h , dx + O_INDX )->type; 348 i( `B_DISSET ( ty )) 352 i( dx + P_INDX > t || 353 p [ dx ] !p[dx + P_INDX ]) 354 ++ -> bt_nkeys ; 357 i( `B_TYPE ( ty ! B_DUPLICATE ) 358 ++ -> bt_nda ; 361 ++ -> bt_af_pg ; 362 -> bt_af_pg + `P_FREESPACE ( dbp , h ); 364 P_LRECNO : 365 i( t == 0) 366 ++ -> bt_emy_pg ; 372 i( dbp -> ty = DB_RECNO ) { 377 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) { 378 -> bt_nkeys + t ; 379 -> bt_nda + t ; 381 dx = 0; indx < t ; indx + O_INDX ) { 382 ty = `GET_BKEYDATA ( dbp , h , dx )->type; 383 i(! `B_DISSET ( ty )) { 384 ++ -> bt_nda ; 385 ++ -> bt_nkeys ; 389 ++ -> bt_af_pg ; 390 -> bt_af_pg + `P_FREESPACE ( dbp , h ); 392 -> bt_nda + t ; 394 ++ -> bt_dup_pg ; 395 -> bt_dup_pg + `P_FREESPACE ( dbp , h ); 398 P_LDUP : 399 i( t == 0) 400 ++ -> bt_emy_pg ; 403 dx = 0; indx < t ; indx + O_INDX ) 404 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , h , dx )-> ty )) 405 ++ -> bt_nda ; 407 ++ -> bt_dup_pg ; 408 -> bt_dup_pg + `P_FREESPACE ( dbp , h ); 410 P_OVERFLOW : 411 ++ -> bt_ov_pg ; 412 -> bt_ov_pg + `P_OVFLSPACE ( dbp , dbp-> pgsize , h ); 415 ( `__db_pgfmt ( dbp -> v , h -> pgno )); 418 } } 427 $__bam_t_curs ( dbc ) 428 DBC * dbc ; 430 cڡ FN [] = { 431 { C_DELETED , "C_DELETED" }, 432 { C_RECNUM , "C_RECNUM" }, 433 { C_RENUMBER , "C_RENUMBER" }, 434 { 0, NULL } 436 ENV * v ; 437 BTREE_CURSOR * ; 439 v = dbc ->env; 440 = ( BTREE_CURSOR *) dbc -> ; 442 `STAT_ULONG ("Ovow size", -> ovsize ); 443 i( dbc -> dbty = DB_RECNO ) 444 `STAT_ULONG ("Reo", -> o ); 445 `STAT_ULONG ("Ord", -> d ); 446 `__db_ags ( v , NULL , -> ags , , NULL, "\tInternal Flags"); 447 } } 452 $__bam_ ( dbc , p , ags ) 453 DBC * dbc ; 454 * p ; 455 u_t32_t ags ; 457 `COMPQUIET ( p , NULL ); 458 `COMPQUIET ( ags , 0); 460 ( `__db__n_but ( dbc -> v )); 461 } } 464 $__bam__t ( dbc , ags ) 465 DBC * dbc ; 466 u_t32_t ags ; 468 `COMPQUIET ( ags , 0); 470 ( `__db__n_but ( dbc -> v )); 471 } } 474 #ide HAVE_BREW 483 $__bam_key_nge ( dbc , dbt , kp , ags ) 484 DBC * dbc ; 485 DBT * dbt ; 486 DB_KEY_RANGE * kp ; 487 u_t32_t ags ; 489 BTREE_CURSOR * ; 490 EPG * ; 491 ; 492 exa , t ; 494 `COMPQUIET ( ags , 0); 496 i(( t = `__bam_ch ( dbc , PGNO_INVALID , 497 dbt , SR_STK_ONLY , 1, NULL , & exa )) != 0) 498 ( t ); 500 = ( BTREE_CURSOR *) dbc -> ; 501 kp -> ss = kp-> g = 0.0; 503 = 1.0; 506 -> c -> s /= 2; 507 -> c -> dx /= 2; 508 = ->; s<-> c ; ++sp) { 517 i( -> dx == 0) 518 kp -> g + * ( -> s - 1)/sp->entries; 519 i( -> dx =-> s ) 520 kp -> ss + ; 522 kp -> ss + * -> dx / sp-> s ; 523 kp -> g + * 524 (( -> s - sp-> dx ) - 1) / sp->entries; 526 *1.0/ -> s ; 534 i( exa ) 535 kp -> equ = ; 537 i( kp -> ss != 1) 538 kp -> g + ; 539 kp -> equ = 0; 542 `BT_STK_CLR ( ); 545 } } 556 $__bam_av ( dbc , mode , ro_pgno , back , cook ) 557 DBC * dbc ; 558 db_lockmode_t mode ; 559 db_pgno_t ro_pgno ; 560 (* back ) `__P (( DBC *, PAGE *, *, *)); 561 * cook ; 563 BINTERNAL * bi ; 564 BKEYDATA * bk ; 565 DB * dbp ; 566 DB_LOCK lock ; 567 DB_MPOOLFILE * mpf ; 568 PAGE * h ; 569 RINTERNAL * ri ; 570 db_dx_t dx , * p ; 571 ady_put , t , t_t ; 573 dbp = dbc ->dbp; 574 mpf = dbp ->mpf; 575 ady_put = 0; 577 i(( t = `__db_lg ( dbc , 0, ro_pgno , mode , 0, & lock )) != 0) 578 ( t ); 579 i(( t = `__memp_fg ( mpf , & ro_pgno , 580 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) { 581 () `__TLPUT ( dbc , lock ); 582 ( t ); 585 `TYPE ( h )) { 586 P_IBTREE : 587 dx = 0; indx < `NUM_ENT ( h ); indx + O_INDX ) { 588 bi = `GET_BINTERNAL ( dbp , h , dx ); 589 i( `B_TYPE ( bi -> ty = B_OVERFLOW && 590 ( t = `__db_av_big ( dbc , 591 (( BOVERFLOW *) bi -> da )-> pgno , 592 back , cook )) != 0) 593 r ; 594 i(( t = `__bam_av ( 595 dbc , mode , bi -> pgno , back , cook )) != 0) 596 r ; 599 P_IRECNO : 600 dx = 0; indx < `NUM_ENT ( h ); indx + O_INDX ) { 601 ri = `GET_RINTERNAL ( dbp , h , dx ); 602 i(( t = `__bam_av ( 603 dbc , mode , ri -> pgno , back , cook )) != 0) 604 r ; 607 P_LBTREE : 608 p = `P_INP ( dbp , h ); 609 dx = 0; indx < `NUM_ENT ( h ); indx + P_INDX ) { 610 bk = `GET_BKEYDATA ( dbp , h , dx ); 611 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 612 ( dx + P_INDX > `NUM_ENT ( h ) || 613 p [ dx ] !p[dx + P_INDX ])) { 614 i(( t = `__db_av_big ( dbc , 615 `GET_BOVERFLOW ( dbp , h , dx )-> pgno , 616 back , cook )) != 0) 617 r ; 619 bk = `GET_BKEYDATA ( dbp , h , dx + O_INDX ); 620 i( `B_TYPE ( bk -> ty = B_DUPLICATE && 621 ( t = `__bam_av ( dbc , mode , 622 `GET_BOVERFLOW ( dbp , h , dx + O_INDX )-> pgno , 623 back , cook )) != 0) 624 r ; 625 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 626 ( t = `__db_av_big ( dbc , 627 `GET_BOVERFLOW ( dbp , h , dx + O_INDX )-> pgno , 628 back , cook )) != 0) 629 r ; 632 P_LDUP : 633 P_LRECNO : 634 dx = 0; indx < `NUM_ENT ( h ); indx + O_INDX ) { 635 bk = `GET_BKEYDATA ( dbp , h , dx ); 636 i( `B_TYPE ( bk -> ty = B_OVERFLOW && 637 ( t = `__db_av_big ( dbc , 638 `GET_BOVERFLOW ( dbp , h , dx )-> pgno , 639 back , cook )) != 0) 640 r ; 644 ( `__db_pgfmt ( dbp -> v , h -> pgno )); 647 t = `back ( dbc , h , cook , & ady_put ); 649 r : i(! ady_put && ( t_t = `__memp_ut ( mpf , 650 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 651 t = t_t ; 652 i(( t_t = `__TLPUT ( dbc , lock )!0 && t == 0) 653 t = t_t ; 655 ( t ); 656 } } @../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 BTMETA2X * dma ; 29 BTMETA30 * wma ; 30 ENV * v ; 31 t ; 33 v = dbp ->env; 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 ( v , _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 BTMETA30 * dma ; 79 BTMETA31 * wma ; 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 *, DB_THREAD_INFO *, 18 PAGE *, u_t32_t , , DBT *, *)); 19 __bam_vrfy_p __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , 20 db_dx_t *, u_t32_t )); 21 __bam_vrfy_d __P (( DB *, DB_THREAD_INFO *, PAGE *, 22 BINTERNAL *, BINTERNAL *, (*)( DB *, cڡ DBT *, const DBT *), 23 u_t32_t )); 24 __m_vrfy_p `__P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , 25 db_dx_t *, u_t32_t )); 35 $__bam_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 36 DB * dbp ; 37 VRFY_DBINFO * vdp ; 38 BTMETA * ma ; 39 db_pgno_t pgno ; 40 u_t32_t ags ; 42 ENV * v ; 43 VRFY_PAGEINFO * p ; 44 isbad , t_t , t ; 45 db_dx_t ovsize ; 47 v = dbp ->env; 48 isbad = 0; 50 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 51 ( t ); 62 i(! `F_ISSET ( p , VRFY_INCOMPLETE ) && 63 ( t = `__db_vrfy_ma ( dbp , vdp , & ma -> dbma , pgno , ags )) != 0) { 64 i( t = DB_VERIFY_BAD ) 65 isbad = 1; 67 r ; 73 ovsize = ma -> mkey > 0 ? 74 `B_MINKEY_TO_OVFLSIZE ( dbp , ma -> mkey , dbp-> pgsize ) : 0; 76 i( ma -> mkey < 2 || 77 ovsize > `B_MINKEY_TO_OVFLSIZE ( dbp , DEFMINKEYPAGE , dbp-> pgsize )) { 78 p -> bt_mkey = 0; 79 isbad = 1; 80 `EPRINT (( v , 82 ( u_lg ) pgno , (u_lg) ma -> mkey )); 84 p -> bt_mkey = ma -> mkey ; 87 p -> _d = ma ->re_pad; 88 p -> _n = ma ->re_len; 95 p -> ro = 0; 96 i( ma -> ro = PGNO_INVALID || 97 ma -> ro = pgno || ! `IS_VALID_PGNO (meta->root) || 98 ( pgno = PGNO_BASE_MD && ma -> ro != 1)) { 99 isbad = 1; 100 `EPRINT (( v , 102 ( u_lg ) pgno , (u_lg) ma -> ro )); 104 p -> ro = ma ->root; 107 i( `F_ISSET (& ma -> dbma , BTM_RENUMBER )) 108 `F_SET ( p , VRFY_IS_RRECNO ); 110 i( `F_ISSET (& ma -> dbma , BTM_SUBDB )) { 115 i( `F_ISSET (& ma -> dbma , BTM_DUP && pgno = PGNO_BASE_MD ) { 116 isbad = 1; 117 `EPRINT (( v , 119 ( u_lg ) pgno )); 121 `F_SET ( p , VRFY_HAS_SUBDBS ); 124 i( `F_ISSET (& ma -> dbma , BTM_DUP )) 125 `F_SET ( p , VRFY_HAS_DUPS ); 126 i( `F_ISSET (& ma -> dbma , BTM_DUPSORT )) 127 `F_SET ( p , VRFY_HAS_DUPSORT ); 128 i( `F_ISSET (& ma -> dbma , BTM_RECNUM )) 129 `F_SET ( p , VRFY_HAS_RECNUMS ); 130 i( `F_ISSET ( p , VRFY_HAS_RECNUMS && F_ISSET՝, VRFY_HAS_DUPS )) { 131 `EPRINT (( v , 133 ( u_lg ) pgno )); 134 isbad = 1; 137 i( `F_ISSET (& ma -> dbma , BTM_RECNO )) { 138 `F_SET ( p , VRFY_IS_RECNO ); 139 dbp -> ty = DB_RECNO ; 140 } i( `F_ISSET ( p , VRFY_IS_RRECNO )) { 141 isbad = 1; 142 `EPRINT (( v , 144 ( u_lg ) pgno )); 147 i( `F_ISSET ( p , VRFY_IS_RECNO && F_ISSET՝, VRFY_HAS_DUPS )) { 148 `EPRINT (( v , 150 ( u_lg ) pgno )); 151 isbad = 1; 154 i( `F_ISSET (& ma -> dbma , BTM_FIXEDLEN )) 155 `F_SET ( p , VRFY_IS_FIXEDLEN ); 156 i( p -> _n > 0) { 161 isbad = 1; 162 `EPRINT (( v , 164 ( u_lg ) pgno , (u_lg) p -> _n )); 172 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 173 t = t_t ; 174 i( `LF_ISSET ( DB_SALVAGE ) && 175 ( t_t = `__db_lvage_mkde ( vdp , pgno )!0 && t == 0) 176 t = t_t ; 177 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 178 } } 188 $__m_vrfy_af ( dbp , vdp , h , pgno , ags ) 189 DB * dbp ; 190 VRFY_DBINFO * vdp ; 191 PAGE * h ; 192 db_pgno_t pgno ; 193 u_t32_t ags ; 195 BKEYDATA * bk ; 196 ENV * v ; 197 VRFY_PAGEINFO * p ; 198 db_dx_t i ; 199 t , t_t , isbad ; 200 u_t32_t _n_guess , n ; 202 v = dbp ->env; 203 isbad = 0; 205 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 206 ( t ); 208 i( `TYPE ( h ! P_LRECNO ) { 209 t = `__db_unknown_th ( v , "__ram_vrfy_leaf"); 210 r ; 217 i(( t = `__db_vrfy_dage ( dbp , vdp , h , pgno , ags )) != 0) { 218 i( t = DB_VERIFY_BAD ) 219 isbad = 1; 221 r ; 228 i(( t = `__bam_vrfy_p ( dbp , 229 vdp , h , pgno , & p -> s , ags )) != 0) 230 r ; 232 i( `F_ISSET ( p , VRFY_HAS_DUPS )) { 233 `EPRINT (( v , 234 "Pag%lu: Redaba hadups", ( u_lg ) pgno )); 235 t = DB_VERIFY_BAD ; 236 r ; 245 _n_guess = 0; 246 i = 0; i < `NUM_ENT ( h ); i++) { 247 bk = `GET_BKEYDATA ( dbp , h , i ); 249 i( `B_DISSET ( bk -> ty )) 251 i( bk -> ty = B_OVERFLOW ) 252 n = (( BOVERFLOW *) bk )-> ; 253 i( bk -> ty = B_KEYDATA ) 254 n = bk ->len; 256 isbad = 1; 257 `EPRINT (( v , 259 ( u_lg ) pgno , (u_lg) i )); 262 i( _n_guess == 0) 263 _n_guess = n ; 270 i( _n_guess ! n ) { 271 _n_guess = 0; 275 p -> _n = _n_guess ; 278 p -> c_t = `NUM_ENT ( h ); 280 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 281 t = t_t ; 282 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 283 } } 293 $__bam_vrfy ( dbp , vdp , h , pgno , ags ) 294 DB * dbp ; 295 VRFY_DBINFO * vdp ; 296 PAGE * h ; 297 db_pgno_t pgno ; 298 u_t32_t ags ; 300 ENV * v ; 301 VRFY_PAGEINFO * p ; 302 t , t_t , isbad ; 304 v = dbp ->env; 305 isbad = 0; 307 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 308 ( t ); 310 `TYPE ( h )) { 311 P_IBTREE : 312 P_IRECNO : 313 P_LBTREE : 314 P_LDUP : 317 t = `__db_unknown_th ( v , "__bam_vrfy"); 318 r ; 325 i(( t = `__db_vrfy_dage ( dbp , vdp , h , pgno , ags )) != 0) { 326 i( t = DB_VERIFY_BAD ) 327 isbad = 1; 329 r ; 339 p -> c_t = `RE_NREC ( h ); 344 i( `TYPE ( h = P_IRECNO ) { 345 i(( t = `__m_vrfy_p ( dbp , 346 vdp , h , pgno , & p -> s , ags )) != 0) 347 r ; 348 } i(( t = `__bam_vrfy_p ( dbp , 349 vdp , h , pgno , & p -> s , ags )) != 0) { 350 i( t = DB_VERIFY_BAD ) 351 isbad = 1; 353 r ; 354 `EPRINT (( v , 356 ( u_lg ) pgno )); 357 } i(! `LF_ISSET ( DB_NOORDERCHK && ( t = 358 `__bam_vrfy_emd ( dbp , 359 vdp , vdp-> thad_fo , h , pgno , 0, 0, 0, ags )) != 0) { 365 i( t = DB_VERIFY_BAD ) 366 isbad = 1; 368 r ; 371 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 372 t = t_t ; 373 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 374 } } 384 $__m_vrfy_p ( dbp , vdp , h , pgno , r , ags ) 385 DB * dbp ; 386 VRFY_DBINFO * vdp ; 387 PAGE * h ; 388 db_pgno_t pgno ; 389 db_dx_t * r ; 390 u_t32_t ags ; 392 ENV * v ; 393 RINTERNAL * ri ; 394 VRFY_CHILDINFO chd ; 395 VRFY_PAGEINFO * p ; 396 t , t_t , isbad ; 397 u_t32_t himk , i , offt , rs ; 398 db_dx_t * p ; 399 u_t8_t * gayout , * p ; 401 v = dbp ->env; 402 isbad = 0; 403 `memt (& chd , 0, ( VRFY_CHILDINFO )); 404 rs = 0; 405 gayout = NULL ; 407 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 408 ( t ); 410 i( `TYPE ( h ! P_IRECNO ) { 411 t = `__db_unknown_th ( v , "__ram_vrfy_inp"); 412 r ; 415 himk = dbp -> pgsize ; 416 i(( t = `__os_mloc ( v , dbp -> pgsize , & gayout )) != 0) 417 r ; 418 `memt ( gayout , 0, dbp -> pgsize ); 419 p = `P_INP ( dbp , h ); 420 i = 0; i < `NUM_ENT ( h ); i++) { 421 i(( u_t8_t *) p + i >(u_t8_*) h + himk ) { 422 `EPRINT (( v , 424 ( u_lg ) pgno , (u_lg) i )); 425 t = DB_VERIFY_BAD ; 426 r ; 428 offt = p [ i ]; 434 i( offt <( u_t32_t )(( u_t8_t *) p + i - 435 ( u_t8_t *) h ) || 436 offt > ( u_t32_t )( dbp -> pgsize - RINTERNAL_SIZE )) { 437 isbad = 1; 438 `EPRINT (( v , 440 ( u_lg ) pgno , (u_lg) offt , (u_lg) i )); 445 i( offt < himk ) 446 himk = offt ; 448 rs ++; 451 ri = `GET_RINTERNAL ( dbp , h , i ); 452 i( gayout [ offt ] == 0) { 453 gayout [ offt ] = 1; 454 chd . pgno = ri ->pgno; 455 chd . ty = V_RECNO ; 456 chd . ecs = ri ->nrecs; 457 i(( t = `__db_vrfy_chdput ( vdp , pgno , & chd )) != 0) 458 r ; 460 `EPRINT (( v , 462 ( u_lg ) pgno , (u_lg) offt )); 463 isbad = 1; 467 p = gayout + himk ; 468 p < gayout + dbp -> pgsize ; 469 p + RINTERNAL_SIZE ) 470 i(* p != 1) { 471 `EPRINT (( v , 473 ( u_lg ) pgno , (u_lg)( p - gayout ))); 474 isbad = 1; 477 i(( db_dx_t ) himk ! `HOFFSET ( h )) { 478 `EPRINT (( v , 480 ( u_lg ) pgno , (u_lg)( `HOFFSET ( h )), (u_lg) himk )); 481 isbad = 1; 484 * r = rs ; 486 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 487 t = t_t ; 488 i( gayout ! NULL ) 489 `__os_ ( v , gayout ); 490 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 491 } } 493 um { mVRFY_ITEM_NOTSET =0, mVRFY_ITEM_BEGIN , mVRFY_ITEM_END } tVRFY_ITEM ; 501 $__bam_vrfy_p ( dbp , vdp , h , pgno , r , ags ) 502 DB * dbp ; 503 VRFY_DBINFO * vdp ; 504 PAGE * h ; 505 db_pgno_t pgno ; 506 db_dx_t * r ; 507 u_t32_t ags ; 509 BKEYDATA * bk ; 510 BOVERFLOW * bo ; 511 ENV * v ; 512 VRFY_CHILDINFO chd ; 513 VRFY_ITEM * gayout ; 514 VRFY_PAGEINFO * p ; 515 u_t32_t himk , offt ; 519 u_t32_t i , doff , rs ; 520 isbad , em , isdupem , t , t_t ; 522 v = dbp ->env; 523 isbad = isdupem = 0; 524 rs = 0; 525 `memt (& chd , 0, ( VRFY_CHILDINFO )); 526 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 527 ( t ); 529 `TYPE ( h )) { 530 P_IBTREE : 531 P_LBTREE : 532 P_LDUP : 533 P_LRECNO : 541 i( `LF_ISSET ( DB_SALVAGE )) 543 t = `__db_unknown_th ( v , "__bam_vrfy_inp"); 544 r ; 558 himk = dbp -> pgsize ; 559 i(( t = `__os_oc ( 560 v , dbp -> pgsize , ( gayout [0]), &pagelayout)) != 0) 561 r ; 562 i = 0; i < `NUM_ENT ( h ); i++) { 563 t = `__db_vrfy_pem ( dbp , 564 h , pgno , i , 1, ags , & himk , & offt )) { 567 DB_VERIFY_BAD : 568 isbad = 1; 570 DB_VERIFY_FATAL : 571 isbad = 1; 572 r ; 574 `DB_ASSERT ( v , t != 0); 585 bk = `GET_BKEYDATA ( dbp , h , i ); 586 i( gayout [ offt ] = VRFY_ITEM_NOTSET ) 587 gayout [ offt ] = VRFY_ITEM_BEGIN ; 588 i( gayout [ offt ] = VRFY_ITEM_BEGIN ) { 595 i(( i % P_INDX =0&& ( `TYPE ( h = P_LBTREE )) { 597 `F_SET ( p , VRFY_HAS_DUPS ); 600 rs ++; 606 isdupem = 1; 608 isbad = 1; 609 `EPRINT (( v , "Page %lu: duplicated item %lu", 610 ( u_lg ) pgno , (u_lg) i )); 621 `B_TYPE ( bk -> ty )) { 622 B_KEYDATA : 623 i( `TYPE ( h = P_IBTREE ) 625 doff = offt + `BINTERNAL_SIZE ( bk -> n ) - 1; 627 doff = offt + `BKEYDATA_SIZE ( bk -> n ) - 1; 629 B_DUPLICATE : 634 `F_SET ( p , VRFY_HAS_DUPS ); 636 B_OVERFLOW : 642 doff = offt + 643 (( `TYPE ( h = P_IBTREE ) ? 644 `BINTERNAL_SIZE ( BOVERFLOW_SIZE ) : 645 BOVERFLOW_SIZE ) - 1; 652 doff = offt + `BKEYDATA_SIZE (0) - 1; 660 i( isdupem && gayout [ doff ] ! VRFY_ITEM_END ) { 661 `EPRINT (( v , "Page %lu: duplicated item %lu", 662 ( u_lg ) pgno , (u_lg) i )); 663 isbad = 1; 664 } i( gayout [ doff ] = VRFY_ITEM_NOTSET ) 665 gayout [ doff ] = VRFY_ITEM_END ; 666 isdupem = 0; 672 i( `B_DISSET ( bk -> ty && `TYPE ( h ! P_LRECNO ) { 673 isbad = 1; 674 `EPRINT (( v , "Page %lu: item %lu marked deleted", 675 ( u_lg ) pgno , (u_lg) i )); 682 `B_TYPE ( bk -> ty )) { 683 B_KEYDATA : 690 B_DUPLICATE : 691 i( `TYPE ( h = P_IBTREE ) { 692 isbad = 1; 693 `EPRINT (( v , 695 ( u_lg ) pgno , (u_lg) i )); 697 } i( `TYPE ( h = P_LRECNO ) { 698 isbad = 1; 699 `EPRINT (( v , 701 ( u_lg ) pgno , (u_lg) i )); 705 B_OVERFLOW : 706 bo = ( `TYPE ( h = P_IBTREE ) ? 707 ( BOVERFLOW *)((( BINTERNAL *) bk )-> da ) : 708 ( BOVERFLOW *) bk ; 710 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) 712 i( bo -> > dbp -> pgsize * vdp -> ϡ_pgno ) { 713 isbad = 1; 714 `EPRINT (( v , 716 ( u_lg ) pgno , 717 ( u_lg ) bo -> , (u_lg) i )); 722 i(! `IS_VALID_PGNO ( bo -> pgno ) || bo->pgno ==gno || 723 bo -> pgno = PGNO_INVALID ) { 724 isbad = 1; 725 `EPRINT (( v , 727 ( u_lg ) pgno , (u_lg) i , (u_lg) bo ->pgno)); 732 chd . pgno = bo ->pgno; 733 chd . ty = ( `B_TYPE ( bk ->ty= B_OVERFLOW ? 734 V_OVERFLOW : V_DUPLICATE ); 735 chd . = bo ->tlen; 736 i(( t = `__db_vrfy_chdput ( vdp , pgno , & chd )) != 0) 737 r ; 740 isbad = 1; 741 `EPRINT (( v , "Page %lu: item %lu of invalidype %lu", 742 ( u_lg ) pgno , (u_lg) i , (u_lg) `B_TYPE ( bk -> ty ))); 751 em = 0; 752 i = himk ; i < dbp -> pgsize ; i++) 753 i( em == 0) 754 gayout [ i ]) { 755 VRFY_ITEM_NOTSET : 757 i( i ! `DB_ALIGN (i, ( u_t32_t ))) 760 isbad = 1; 761 `EPRINT (( v , 763 ( u_lg ) pgno , (u_lg) i )); 765 ; gayout [ i + 1] = VRFY_ITEM_NOTSET && 766 ( size_t )( i + 1< dbp -> pgsize ; i++) 769 VRFY_ITEM_BEGIN : 771 i( i ! `DB_ALIGN (i, ( u_t32_t ))) { 772 isbad = 1; 773 `EPRINT (( v , 775 ( u_lg ) pgno , (u_lg) i )); 777 em = 1; 778 rs ++; 780 VRFY_ITEM_END : 786 isbad = 1; 787 `EPRINT (( v , 789 ( u_lg ) pgno , (u_lg) i )); 793 gayout [ i ]) { 794 VRFY_ITEM_NOTSET : 797 VRFY_ITEM_END : 799 em = 0; 801 VRFY_ITEM_BEGIN : 806 isbad = 1; 807 `EPRINT (( v , 809 ( u_lg ) pgno , (u_lg) i )); 813 `__os_ ( v , gayout ); 816 i(( db_dx_t ) himk ! `HOFFSET ( h )) { 817 `EPRINT (( v , "Page %lu: bad HOFFSET %lu,ppearso be %lu", 818 ( u_lg ) pgno , (u_lg) `HOFFSET ( h ), (u_lg) himk )); 819 isbad = 1; 822 r : i( r ! NULL ) 823 * r = rs ; 825 i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 826 t = t_t ; 828 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 829 } } 848 $__bam_vrfy_emd ( dbp , vdp , , h , pgno , rs , ovok , hasdups , ags ) 849 DB * dbp ; 850 VRFY_DBINFO * vdp ; 851 DB_THREAD_INFO * ; 852 PAGE * h ; 853 db_pgno_t pgno ; 854 u_t32_t rs ; 855 ovok , hasdups ; 856 u_t32_t ags ; 858 BINTERNAL * bi ; 859 BKEYDATA * bk ; 860 BOVERFLOW * bo ; 861 BTREE * bt ; 862 DBT db , dbtb , dup_1 , dup_2 , * p1 , * p2 , * tmp ; 863 ENV * v ; 864 VRFY_PAGEINFO * p ; 865 db_dx_t i , * p ; 866 adj , cmp , dup_1 , dup_2 , isbad , t , t_t ; 867 (* dupfunc `__P (( DB *, cڡ DBT *, const DBT *)); 868 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 869 * buf1 , * buf2 , * tmpbuf ; 876 i( vdp ! NULL ) { 877 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 878 ( t ); 879 rs = p -> s ; 881 p = NULL ; 883 v = dbp ->env; 884 t = isbad = 0; 885 bo = NULL ; 887 `memt (& db , 0, ( DBT )); 888 `F_SET (& db , DB_DBT_REALLOC ); 890 `memt (& dbtb , 0, ( DBT )); 891 `F_SET (& dbtb , DB_DBT_REALLOC ); 893 buf1 = buf2 = NULL ; 895 `DB_ASSERT ( v , ! `LF_ISSET ( DB_NOORDERCHK )); 897 dupfunc = ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 898 i( `TYPE ( h = P_LDUP ) 899 func = dupfunc ; 901 func = __bam_defcmp ; 902 i( dbp -> bt_ ! NULL ) { 903 bt = ( BTREE *) dbp -> bt_ ; 904 i( bt -> bt_com ! NULL ) 905 func = bt -> bt_com ; 914 p1 = & db ; 915 p2 = & dbtb ; 927 p = `P_INP ( dbp , h ); 928 adj = ( `TYPE ( h = P_LBTREE ? P_INDX : O_INDX ; 929 i = ( `TYPE ( h = P_IBTREE ? 1 : 0; i < rs ; i + adj ) { 933 tmp = p1 ; 934 p1 = p2 ; 935 p2 = tmp ; 936 tmpbuf = buf1 ; 937 buf1 = buf2 ; 938 buf2 = tmpbuf ; 943 `TYPE ( h )) { 944 P_IBTREE : 945 bi = `GET_BINTERNAL ( dbp , h , i ); 946 i( `B_TYPE ( bi -> ty = B_OVERFLOW ) { 947 bo = ( BOVERFLOW *)( bi -> da ); 948 ovow ; 950 p2 -> da = bi ->data; 951 p2 -> size = bi -> n ; 965 i( i =0 && bi -> n != 0) { 966 isbad = 1; 967 `EPRINT (( v , 969 ( u_lg ) pgno )); 973 P_LBTREE : 974 P_LDUP : 975 bk = `GET_BKEYDATA ( dbp , h , i ); 976 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 977 bo = ( BOVERFLOW *) bk ; 978 ovow ; 980 p2 -> da = bk ->data; 981 p2 -> size = bk -> n ; 989 t = `__db_unknown_th ( v , "__bam_vrfy_itemorder"); 990 r ; 1004 ovow : i(! ovok ) { 1005 `F_SET ( p , VRFY_INCOMPLETE ); 1006 r ; 1018 p2 -> da = buf2 ; 1019 i(( t = `__db_goff ( dbp , , NULL , 1020 p2 , bo -> , bo-> pgno , NULL , NULL)) != 0) { 1021 isbad = 1; 1022 `EPRINT (( v , 1024 ( u_lg ) pgno , (u_lg) t , (u_lg) i )); 1027 buf2 = p2 -> da ; 1031 i( p1 -> da ! NULL && p2 ->data != NULL) { 1032 cmp = p [ i ] =p[- adj ] ? 0 : `func ( dbp , p1 , p2 ); 1035 i( cmp > 0) { 1036 isbad = 1; 1037 `EPRINT (( v , 1039 ( u_lg ) pgno , (u_lg) i )); 1041 } i( cmp == 0) { 1042 i( p [ i ] !p[- adj ]) { 1043 `EPRINT (( v , 1045 ( u_lg ) pgno , (u_lg) i )); 1046 isbad = 1; 1054 i( p ! NULL ) 1055 `F_SET ( p , VRFY_HAS_DUPS ); 1056 i( hasdups == 0) { 1057 isbad = 1; 1058 `EPRINT (( v , 1060 ( u_lg ) pgno )); 1075 i( `TYPE ( h = P_LBTREE ) { 1080 i( i + 1 >( db_dx_t ) rs ) 1090 i((( t = `__bam__gda ( dbp , 1091 , h , i - 1, ovok , 1092 & dup_1 , & dup_1 )) != 0) || 1093 (( t = `__bam__gda ( dbp , 1094 , h , i + 1, ovok , 1095 & dup_2 , & dup_2 )) != 0)) 1096 r ; 1104 i( dup_1 . da = NULL || 1105 dup_2 . da = NULL ) { 1106 `DB_ASSERT ( v , ! ovok ); 1107 `F_SET ( p , VRFY_INCOMPLETE ); 1108 r ; 1117 i( `dupfunc ( dbp , & dup_1 , & dup_2 ) > 0) 1118 `F_SET ( p , VRFY_DUPS_UNSORTED ); 1120 i( dup_1 ) 1121 `__os_u ( v , dup_1 . da ); 1122 i( dup_2 ) 1123 `__os_u ( v , dup_2 . da ); 1129 r : i( p ! NULL && (( t_t = 1130 `__db_vrfy_puagefo ( v , vdp , p )!0&& t == 0) 1131 t = t_t ; 1133 i( buf1 ! NULL ) 1134 `__os_u ( v , buf1 ); 1135 i( buf2 ! NULL ) 1136 `__os_u ( v , buf2 ); 1138 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1139 } } 1150 $__bam_vrfy_ruu ( dbp , vdp , ma_pgno , ags ) 1151 DB * dbp ; 1152 VRFY_DBINFO * vdp ; 1153 db_pgno_t ma_pgno ; 1154 u_t32_t ags ; 1156 DB * pgt ; 1157 ENV * v ; 1158 VRFY_PAGEINFO * m , * r ; 1159 db_pgno_t ro , p ; 1160 t_t , t ; 1161 u_t32_t ecs , v , n , ags ; 1163 v = dbp ->env; 1164 m = r = 0; 1165 pgt = vdp ->pgset; 1167 i(( t = `__db_vrfy_ggefo ( vdp , ma_pgno , & m )) != 0) 1168 ( t ); 1170 i(( t = `__db_vrfy_pgt_g ( pgt , 1171 vdp -> thad_fo , ma_pgno , (*)& p )) != 0) 1172 r ; 1173 i( p != 0) { 1174 `EPRINT (( v , 1176 ( u_lg ) ma_pgno )); 1177 t = DB_VERIFY_BAD ; 1178 r ; 1180 i(( t = 1181 `__db_vrfy_pgt_c ( pgt , vdp -> thad_fo , ma_pgno )) != 0) 1182 r ; 1184 ro = m ->root; 1186 i( ro == 0) { 1187 `EPRINT (( v , 1189 ( u_lg ) ma_pgno )); 1190 t = DB_VERIFY_BAD ; 1191 r ; 1194 i(( t = `__db_vrfy_ggefo ( vdp , ro , & r )) != 0) 1195 r ; 1197 r -> ty ) { 1198 P_IBTREE : 1199 P_LBTREE : 1200 ags = ags | DB_ST_TOPLEVEL ; 1201 i( `F_ISSET ( m , VRFY_HAS_DUPS )) 1202 ags | DB_ST_DUPOK ; 1203 i( `F_ISSET ( m , VRFY_HAS_DUPSORT )) 1204 ags | DB_ST_DUPSORT ; 1205 i( `F_ISSET ( m , VRFY_HAS_RECNUMS )) 1206 ags | DB_ST_RECNUM ; 1207 t = `__bam_vrfy_sub ( dbp , 1208 vdp , ro , NULL , NULL, ags , NULL, NULL, NULL); 1210 P_IRECNO : 1211 P_LRECNO : 1212 ags = 1213 ags | DB_ST_RECNUM | DB_ST_IS_RECNO | DB_ST_TOPLEVEL ; 1214 i( m -> _n > 0) 1215 ags | DB_ST_RELEN ; 1216 i(( t = `__bam_vrfy_sub ( dbp , vdp , 1217 ro , NULL , NULL, ags , & v , & ecs , & n )) != 0) 1218 r ; 1225 i( m -> _n > 0 && n > 0 && mip->re_len !=elen) { 1226 `EPRINT (( v , 1228 ( u_lg ) ma_pgno , (u_lg) n )); 1229 t = DB_VERIFY_BAD ; 1230 r ; 1232 t = 0; 1234 P_LDUP : 1235 `EPRINT (( v , 1237 ( u_lg ) ma_pgno )); 1238 t = DB_VERIFY_BAD ; 1241 `EPRINT (( v , 1243 ( u_lg ) ma_pgno , (u_lg) r -> ty )); 1244 t = DB_VERIFY_BAD ; 1248 r : i( m ! NULL && (( t_t = 1249 `__db_vrfy_puagefo ( v , vdp , m )!0&& t == 0) 1250 t = t_t ; 1251 i( r ! NULL && (( t_t = 1252 `__db_vrfy_puagefo ( v , vdp , r )!0&& t == 0) 1253 t = t_t ; 1254 ( t ); 1255 } } 1268 $__bam_vrfy_sub ( dbp , vdp , pgno , l , r , ags , vp , ec , ) 1269 DB * dbp ; 1270 VRFY_DBINFO * vdp ; 1271 db_pgno_t pgno ; 1272 * l , * r ; 1273 u_t32_t ags , * vp , * ec , * ; 1275 BINTERNAL * li , * ri ; 1276 DB * pgt ; 1277 DBC * cc ; 1278 DB_MPOOLFILE * mpf ; 1279 ENV * v ; 1280 PAGE * h ; 1281 VRFY_CHILDINFO * chd ; 1282 VRFY_PAGEINFO * p ; 1283 db_dx_t i ; 1284 db_pgno_t xt_pgno , ev_pgno ; 1285 db_o_t chd_ecs , ecs ; 1286 u_t32_t chd_v , chd_n , j , v , n , ags ; 1287 u_t8_t af_ty ; 1288 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1289 isbad , p , t , t_t , tv ; 1291 i( vp ! NULL ) 1292 * vp = 0; 1293 i( ec ! NULL ) 1294 * ec = 0; 1296 v = dbp ->env; 1297 mpf = dbp ->mpf; 1298 h = NULL ; 1299 xt_pgno = ev_pgno = PGNO_INVALID ; 1300 ecs = 0; 1301 n = 0; 1302 af_ty = P_INVALID ; 1303 isbad = t = 0; 1306 i(! `LF_ISSET ( DB_SALVAGE )) 1307 `__db_vrfy_ru_edback ( dbp , vdp ); 1309 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1310 ( t ); 1312 cc = NULL ; 1313 v = p -> bt_v ; 1315 tv = `LF_ISSET ( DB_ST_TOPLEVEL ) ? 1 : 0; 1316 `LF_CLR ( DB_ST_TOPLEVEL ); 1328 i( tv ) { 1334 ev_pgno = vdp ->prev_pgno; 1335 xt_pgno = vdp ->next_pgno; 1336 af_ty = vdp ->leaf_type; 1337 vdp -> xt_pgno = vdp-> ev_pgno = PGNO_INVALID ; 1338 vdp -> af_ty = P_INVALID ; 1366 p -> ty ) { 1367 P_LRECNO : 1368 P_LDUP : 1369 P_LBTREE : 1376 i( vdp -> af_ty = P_INVALID ) { 1382 vdp -> af_ty = p -> ty ; 1383 i( p -> ev_pgno ! PGNO_INVALID ) 1384 bad_ev ; 1390 i( p -> ty ! vdp -> af_ty ) { 1391 isbad = 1; 1392 `EPRINT (( v , 1394 ( u_lg ) p -> pgno , (u_lg-> ty , 1395 ( u_lg ) vdp -> af_ty )); 1402 i(! `F_ISSET ( vdp , VRFY_LEAFCHAIN_BROKEN )) { 1403 i( p -> pgno ! vdp -> xt_pgno ) { 1404 isbad = 1; 1405 `EPRINT (( v , 1407 ( u_lg ) vdp -> ev_pgno , 1408 ( u_lg ) vdp -> xt_pgno , 1409 ( u_lg ) p -> pgno )); 1411 i( p -> ev_pgno ! vdp ->prev_pgno) { 1412 bad_ev : isbad = 1; 1413 `EPRINT (( v , 1415 ( u_lg ) p -> pgno , 1416 ( u_lg ) p -> ev_pgno , 1417 ( u_lg ) vdp -> ev_pgno )); 1421 vdp -> ev_pgno = p -> pgno ; 1422 vdp -> xt_pgno = p ->next_pgno; 1423 `F_CLR ( vdp , VRFY_LEAFCHAIN_BROKEN ); 1429 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 1430 r ; 1431 t = `__db_vrfy_cct ( cc , pgno , & chd );et == 0; 1432 t = `__db_vrfy_cext ( cc , & chd )) 1433 i( chd -> ty = V_OVERFLOW && 1434 ( t = `__db_vrfy_ov_ruu ( dbp , vdp , 1435 chd -> pgno , chd-> , 1436 ags | DB_ST_OVFL_LEAF )) != 0) { 1437 i( t = DB_VERIFY_BAD ) 1438 isbad = 1; 1440 de ; 1443 i(( t = `__db_vrfy_cco ( cc )) != 0) 1444 r ; 1445 cc = NULL ; 1448 i( p -> ty = P_LRECNO ) { 1449 i(! `LF_ISSET ( DB_ST_IS_RECNO ) && 1450 !( `LF_ISSET ( DB_ST_DUPOK ) && 1451 ! `LF_ISSET ( DB_ST_DUPSORT ))) { 1452 isbad = 1; 1453 `EPRINT (( v , 1455 ( u_lg ) pgno )); 1456 de ; 1458 af ; 1459 } i( `LF_ISSET ( DB_ST_IS_RECNO )) { 1464 isbad = 1; 1465 `EPRINT (( v , 1467 ( u_lg ) pgno )); 1468 de ; 1472 i( p -> ty = P_LDUP ) 1473 af ; 1478 i( `F_ISSET ( p , VRFY_HAS_DUPS )) { 1480 i(! `LF_ISSET ( DB_ST_DUPOK )) { 1481 isbad = 1; 1482 `EPRINT (( v , 1484 ( u_lg ) pgno )); 1490 i(( t = 1491 `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 1492 r ; 1493 t = `__db_vrfy_cct ( cc , pgno , & chd ); 1494 t == 0; 1495 t = `__db_vrfy_cext ( cc , & chd )) { 1496 ags = 1497 ags | DB_ST_RECNUM | DB_ST_DUPSET ; 1499 i( chd -> ty = V_DUPLICATE ) { 1500 i(( t = `__db_vrfy_duy ( 1501 dbp , vdp , chd -> pgno , 1502 ags )) != 0) { 1503 isbad = 1; 1507 i(( t = `__bam_vrfy_sub ( 1508 dbp , vdp , chd -> pgno , 1509 NULL , NULL, 1510 ags | DB_ST_TOPLEVEL , 1511 NULL , NULL, NULL)) != 0) { 1512 i( t == 1513 DB_VERIFY_BAD ) 1514 isbad = 1; 1516 r ; 1521 i(( t = `__db_vrfy_cco ( cc )) != 0) 1522 r ; 1523 cc = NULL ; 1529 i( `F_ISSET ( p , VRFY_DUPS_UNSORTED ) && 1530 `LF_ISSET ( DB_ST_DUPSORT )) { 1531 isbad = 1; 1532 `EPRINT (( v , 1534 ( u_lg ) pgno )); 1538 af ; 1539 P_IBTREE : 1540 P_IRECNO : 1555 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) 1556 `ZEROPG_ERR_PRINT ( v , pgno , "btree orecnoage"); 1558 `EPRINT (( v , 1560 ( u_lg ) pgno , (u_lg) p -> ty )); 1569 `F_SET ( vdp , VRFY_LEAFCHAIN_BROKEN ); 1571 t = DB_VERIFY_BAD ; 1572 r ; 1580 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 1581 r ; 1582 t = `__db_vrfy_cct ( cc , pgno , & chd );et == 0; 1583 t = `__db_vrfy_cext ( cc , & chd )) 1584 i( chd -> ty = V_RECNO ) { 1585 i( p -> ty ! P_IRECNO ) { 1586 t = `__db_unknown_th ( 1587 v , "__bam_vrfy_subtree"); 1588 r ; 1590 i(( t = `__bam_vrfy_sub ( dbp , vdp , chd -> pgno , 1591 NULL , NULL, ags , & chd_v , & chd_ecs , 1592 & chd_n )) != 0) { 1593 i( t = DB_VERIFY_BAD ) 1594 isbad = 1; 1596 de ; 1599 i( `LF_ISSET ( DB_ST_RELEN )) { 1600 i( n == 0) 1601 n = chd_n ; 1606 i( chd_n > 0 && 1607 n ! chd_n ) { 1608 isbad = 1; 1609 `EPRINT (( v , 1611 ( u_lg ) chd -> pgno , 1612 ( u_lg ) chd_n )); 1614 i( ) 1615 * = n ; 1617 i( `LF_ISSET ( DB_ST_RECNUM )) { 1618 i( chd -> ecs ! chd_ecs ) { 1619 isbad = 1; 1620 `EPRINT (( v , 1622 ( u_lg ) chd -> pgno , 1623 ( u_lg ) chd_ecs , 1624 ( u_lg ) chd -> ecs )); 1626 ecs + chd_ecs ; 1628 i( isbad =0 && v ! chd_v + 1) { 1629 isbad = 1; 1630 `EPRINT (( v , 1632 ( u_lg ) chd -> pgno , (u_lg) chd_v , 1633 ( u_lg )( v - 1))); 1635 } i( chd -> ty = V_OVERFLOW ) { 1655 `DB_ASSERT ( v , chd -> ft >= 1); 1661 i( chd -> ft > 2) { 1662 isbad = 1; 1663 `EPRINT (( v , 1665 ( u_lg ) pgno , (u_lg) chd ->pgno)); 1667 j = 0; j < chd -> ft ; j++) 1668 i(( t = `__db_vrfy_ov_ruu ( dbp , 1669 vdp , chd -> pgno , chd-> , 1670 ags )) != 0) { 1671 i( t = DB_VERIFY_BAD ) 1672 isbad = 1; 1674 de ; 1678 i(( t = `__db_vrfy_cco ( cc )) != 0) 1679 r ; 1680 cc = NULL ; 1683 i( p -> ty = P_IRECNO ) 1684 de ; 1696 i( h = NULL && 1697 ( t = `__memp_fg ( mpf , & pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) 1698 r ; 1699 i = 0; i < p -> s ; i + O_INDX ) { 1700 li = `GET_BINTERNAL ( dbp , h , i ); 1701 ri = ( i + O_INDX < p -> s ) ? 1702 `GET_BINTERNAL ( dbp , h , i + O_INDX : r ; 1708 i(( t = `__bam_vrfy_sub ( dbp , vdp , li -> pgno , 1709 i =0 ? NULL : li , ri , ags , & chd_v , 1710 & chd_ecs , NULL )) != 0) { 1711 i( t = DB_VERIFY_BAD ) 1712 isbad = 1; 1714 de ; 1717 i( `LF_ISSET ( DB_ST_RECNUM )) { 1723 ecs + chd_ecs ; 1729 i( li -> ecs ! chd_ecs ) { 1730 isbad = 1; 1731 `EPRINT (( v , 1733 ( u_lg ) pgno , (u_lg) i , (u_lg) li -> ecs , 1734 ( u_lg ) chd_ecs )); 1738 i( v ! chd_v + 1) { 1739 isbad = 1; 1740 `EPRINT (( v , 1742 ( u_lg ) li -> pgno , 1743 ( u_lg ) chd_v , (u_lg)( v - 1))); 1748 af : v = LEAFLEVEL ; 1749 i( `LF_ISSET ( DB_ST_RECNUM )) 1750 ecs = p -> c_t ; 1760 i( `LF_ISSET ( DB_ST_RELEN && ) 1761 * = p -> _n ; 1763 de : i( `F_ISSET ( p , VRFY_INCOMPLETE && isbad =0 && t == 0) { 1770 i( h = NULL && ( t = `__memp_fg ( mpf , & pgno , 1771 vdp -> thad_fo , NULL , 0, & h )) != 0) 1772 r ; 1773 i(( t = `__bam_vrfy_emd ( dbp , 1774 vdp , vdp-> thad_fo , h , pgno , 0, 1, 0, ags )) != 0) 1775 r ; 1776 `F_CLR ( p , VRFY_INCOMPLETE ); 1789 i( isbad =0 && t == 0) { 1790 i( h = NULL && ( t = `__memp_fg ( mpf , & pgno , 1791 vdp -> thad_fo , NULL , 0, & h )) != 0) 1792 r ; 1794 i( `NUM_ENT ( h =0 && `ISINTERNAL (h)) { 1795 isbad = 1; 1796 `EPRINT (( v , 1798 ( u_lg ) pgno )); 1799 r ; 1808 i( isbad =0 && t =0 && ! `LF_ISSET ( DB_NOORDERCHK ) && 1809 p -> ty ! P_IRECNO &&->ty ! P_LRECNO ) { 1810 i( h = NULL && ( t = `__memp_fg ( mpf , & pgno , 1811 vdp -> thad_fo , NULL , 0, & h )) != 0) 1812 r ; 1820 func = `LF_ISSET ( DB_ST_DUPSET ? dbp -> dup_com : 1821 (( BTREE *) dbp -> bt_ )-> bt_com ; 1822 i( func = NULL ) 1823 func = __bam_defcmp ; 1825 i(( t = `__bam_vrfy_d ( dbp , 1826 vdp -> thad_fo , h , l , r , func , ags )) != 0) { 1827 i( t = DB_VERIFY_BAD ) 1828 isbad = 1; 1830 r ; 1840 i( `LF_ISSET ( DB_ST_RECNUM && ecs ! p -> c_t && tv ) { 1841 isbad = 1; 1842 `EPRINT (( v , 1844 ( u_lg ) pgno , (u_lg) ecs , (u_lg) p -> c_t )); 1847 i( vp ) 1848 * vp = v ; 1849 i( ec ) 1850 * ec = ecs ; 1852 pgt = vdp ->pgset; 1853 i(( t = `__db_vrfy_pgt_g ( pgt , 1854 vdp -> thad_fo , pgno , & p )) != 0) 1855 r ; 1856 i( p != 0) { 1857 isbad = 1; 1858 `EPRINT (( v , "Pag%lu:kedwi", ( u_lg ) pgno )); 1859 } i(( t = 1860 `__db_vrfy_pgt_c ( pgt , vdp -> thad_fo , pgno )) != 0) 1861 r ; 1863 i( tv ) 1868 i( vdp -> xt_pgno ! PGNO_INVALID ) { 1869 isbad = 1; 1870 `EPRINT (( v , "Page %lu: unterminatedeaf chain", 1871 ( u_lg ) vdp -> ev_pgno )); 1874 r : i( tv ) { 1876 vdp -> xt_pgno =ext_pgno; 1877 vdp -> ev_pgno =rev_pgno; 1878 vdp -> af_ty =eaf_type; 1881 i( h ! NULL && ( t_t = `__memp_ut ( mpf , 1882 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )!0 && t == 0) 1883 t = t_t ; 1884 i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1885 t = t_t ; 1886 i( cc ! NULL && (( t_t = `__db_vrfy_cco (cc)!0&& t == 0) 1887 t = t_t ; 1888 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1889 } } 1905 $__bam_vrfy_d ( dbp , , h , , , func , ags ) 1906 DB * dbp ; 1907 DB_THREAD_INFO * ; 1908 PAGE * h ; 1909 BINTERNAL * , * ; 1910 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1911 u_t32_t ags ; 1913 BOVERFLOW * bo ; 1914 DBT dbt ; 1915 ENV * v ; 1916 db_dx_t ϡ ; 1917 t , cmp ; 1919 v = dbp ->env; 1920 `memt (& dbt , 0, ( DBT )); 1921 `F_SET (& dbt , DB_DBT_MALLOC ); 1922 t = 0; 1929 i( `NUM_ENT ( h ) == 0) 1932 `TYPE ( h )) { 1933 P_IBTREE : 1934 P_LDUP : 1935 ϡ = `NUM_ENT ( h - O_INDX ; 1937 P_LBTREE : 1938 ϡ = `NUM_ENT ( h - P_INDX ; 1941 ( `__db_unknown_th ( v , "__bam_vrfy_treeorder")); 1957 i( ! NULL && `TYPE ( h ! P_IBTREE ) { 1958 i( -> ty = B_KEYDATA ) { 1959 dbt . da = ->data; 1960 dbt . size = -> n ; 1961 } i( -> ty = B_OVERFLOW ) { 1962 bo = ( BOVERFLOW *) -> da ; 1963 i(( t = `__db_goff ( dbp , , NULL , & dbt , 1964 bo -> , bo-> pgno , NULL , NULL)) != 0) 1965 ( t ); 1968 `__db_unknown_th ( v , "__bam_vrfy_treeorder")); 1971 i(( t = `__bam_cmp ( dbp , , 1972 NULL , & dbt , h , 0, func , & cmp )) == 0) { 1973 i( cmp > 0) { 1974 `EPRINT (( v , 1976 ( u_lg ) `PGNO ( h ))); 1977 t = DB_VERIFY_BAD ; 1980 `EPRINT (( v , 1982 ( u_lg ) `PGNO ( h ))); 1984 i( dbt . da ! ->data) 1985 `__os_u ( v , dbt . da ); 1986 i( t != 0) 1987 ( t ); 1990 i( ! NULL ) { 1991 i( -> ty = B_KEYDATA ) { 1992 dbt . da = ->data; 1993 dbt . size = -> n ; 1994 } i( -> ty = B_OVERFLOW ) { 1995 bo = ( BOVERFLOW *) -> da ; 1996 i(( t = `__db_goff ( dbp , , NULL , & dbt , 1997 bo -> , bo-> pgno , NULL , NULL)) != 0) 1998 ( t ); 2001 `__db_unknown_th ( v , "__bam_vrfy_treeorder")); 2004 i(( t = `__bam_cmp ( dbp , , 2005 NULL , & dbt , h , ϡ , func , & cmp )) == 0) { 2006 i( cmp < 0) { 2007 `EPRINT (( v , 2009 ( u_lg ) `PGNO ( h ))); 2010 t = DB_VERIFY_BAD ; 2013 `EPRINT (( v , 2015 ( u_lg ) `PGNO ( h ))); 2017 i( dbt . da ! ->data) 2018 `__os_u ( v , dbt . da ); 2021 ( t ); 2022 } } 2035 $__bam_lvage ( dbp , vdp , pgno , pgty , h , hd , back , key , ags ) 2036 DB * dbp ; 2037 VRFY_DBINFO * vdp ; 2038 db_pgno_t pgno ; 2039 u_t32_t pgty ; 2040 PAGE * h ; 2041 * hd ; 2042 (* back `__P ((*, const *)); 2043 DBT * key ; 2044 u_t32_t ags ; 2046 BKEYDATA * bk ; 2047 BOVERFLOW * bo ; 2048 DBT dbt , dbt , unknown_key , unknown_da ; 2049 ENV * v ; 2050 VRFY_ITEM * pgm ; 2051 db_dx_t i , ϡ , beg , d , * p ; 2052 db_pgno_t ovpg ; 2053 u_t32_t himk ; 2054 * ovbuf ; 2055 adj , t , t_t , t2_t ; 2057 v = dbp ->env; 2058 ovbuf = pgm = NULL ; 2059 p = `P_INP ( dbp , h ); 2061 `memt (& dbt , 0, ( DBT )); 2062 dbt . ags = DB_DBT_REALLOC ; 2063 `memt (& dbt , 0, ( DBT )); 2065 `DB_INIT_DBT ( unknown_key , "UNKNOWN_KEY", ("UNKNOWN_KEY") - 1); 2066 `DB_INIT_DBT ( unknown_da , "UNKNOWN_DATA", ("UNKNOWN_DATA") - 1); 2072 i(( t = `__os_mloc ( v , dbp -> pgsize , & ovbuf )) != 0) 2073 r ; 2075 i( `LF_ISSET ( DB_AGGRESSIVE && ( t = 2076 `__os_oc ( v , dbp -> pgsize , ( pgm [0]), &pgmap)) != 0) 2077 r ; 2086 himk = dbp -> pgsize ; 2087 i = 0, ϡ = UINT16_MAX ;; i + O_INDX ) { 2089 i(! `LF_ISSET ( DB_AGGRESSIVE && i > `NUM_ENT ( h )) 2093 t_t = 2094 `__db_vrfy_pem ( dbp , h , pgno , i , 1, ags , & himk , NULL ); 2096 i( t_t != 0) { 2102 i( pgty = P_LBTREE && i % P_INDX == 1 && 2103 ϡ = i - 1 && ( t2_t = `__db_vrfy_dbt ( 2104 & unknown_da , 2105 0, " ", hd , back , 0, vdp )) != 0) { 2106 i( t == 0) 2107 t = t2_t ; 2108 r ; 2117 i( t_t = DB_VERIFY_FATAL ) { 2118 i( i < `NUM_ENT ( h && t == 0) 2119 t = DB_VERIFY_BAD ; 2131 bk = `GET_BKEYDATA ( dbp , h , i ); 2132 i(! `LF_ISSET ( DB_AGGRESSIVE && `B_DISSET ( bk -> ty )) 2140 i( pgty = P_LBTREE && i % P_INDX == 1 && 2141 ϡ ! i - 1 && ( t_t = `__db_vrfy_dbt ( 2142 & unknown_key , 0, " ", hd , back , 0, vdp )) != 0) { 2143 i( t == 0) 2144 t = t_t ; 2145 r ; 2147 ϡ = i ; 2155 i( key ! NULL && ( i !0 || ! `LF_ISSET ( DB_SA_SKIPFIRSTKEY ))) 2156 i(( t_t = `__db_vrfy_dbt ( key , 2157 0, " ", hd , back , 0, vdp )) != 0) { 2158 i( t == 0) 2159 t = t_t ; 2160 r ; 2163 beg = d = p [ i ]; 2164 `B_TYPE ( bk -> ty )) { 2165 B_DUPLICATE : 2166 i( pgty = P_IBTREE ) 2169 d = beg + BOVERFLOW_SIZE - 1; 2177 i( pgty ! P_LBTREE ) 2180 bo = ( BOVERFLOW *) bk ; 2188 i(! `IS_VALID_PGNO ( bo -> pgno || ( i % P_INDX == 0)) { 2190 i(( t_t = `__db_vrfy_dbt (& unknown_key , 2191 0, " ", hd , back , 0, vdp )) != 0) { 2192 i( t == 0) 2193 t = t_t ; 2194 r ; 2200 i(( t_t = `__db_lvage_due ( dbp , 2201 vdp , bo -> pgno , & dbt , hd , back , 2202 ags | DB_SA_SKIPFIRSTKEY )!0 && t == 0) 2203 t = t_t ; 2206 B_KEYDATA : 2207 i( pgty = P_IBTREE ) 2210 d = ( db_dx_t ) `DB_ALIGN ( 2211 beg + bk -> n , ( u_t32_t )) - 1; 2213 dbt . da = bk ->data; 2214 dbt . size = bk -> n ; 2215 i(( t_t = `__db_vrfy_dbt (& dbt , 2216 0, " ", hd , back , 0, vdp )) != 0) { 2217 i( t == 0) 2218 t = t_t ; 2219 r ; 2222 B_OVERFLOW : 2223 i( pgty ! P_IBTREE ) 2224 d = beg + BOVERFLOW_SIZE - 1; 2225 bo = ( BOVERFLOW *) bk ; 2236 adj = pgty = P_IBTREE ? O_INDX : P_INDX ; 2237 i( i > adj - 1 && i %dj == 0 && 2238 p [ i ] =p[- adj ]) { 2239 `DB_ASSERT ( v , pgty ! P_IBTREE ); 2240 dbt = dbt ; 2242 i( pgty = P_IBTREE ) { 2256 ovpg = (( BOVERFLOW *) 2257 (( BINTERNAL *) bk )-> da )-> pgno ; 2258 i( `__db_lvage_isde ( vdp , 2259 ovpg =0 && ( t_t = 2260 `__db__goff ( dbp , vdp , ovpg , 2261 & dbt , & ovbuf , ags )) != 0 && 2262 t == 0) 2263 t = t_t ; 2268 i(( t_t = `__db__goff ( dbp , vdp , bo -> pgno , 2269 & dbt , & ovbuf , ags )!0 && t == 0) 2270 t = t_t ; 2279 i( i % P_INDX == 0) { 2280 i(( t = `__os_loc ( v , 2281 dbt . size , & dbt . da )) != 0) 2282 r ; 2283 `memy ( dbt . da , dbt .data, 2284 dbt . size ); 2285 dbt . size = dbt .size; 2290 i(( t_t = `__db_vrfy_dbt ( 2291 t_t =0 ? & dbt : & unknown_key , 2292 0, " ", hd , back , 0, vdp )!0 && t == 0) 2293 t = t_t ; 2300 t_t = `__db_unknown_th ( v , "__bam_salvage"); 2301 i( t == 0) 2302 t = t_t ; 2303 r ; 2312 i( `LF_ISSET ( DB_AGGRESSIVE && pgty ! P_IBTREE ) { 2313 pgm [ beg ] = VRFY_ITEM_BEGIN ; 2314 pgm [ d ] = VRFY_ITEM_END ; 2318 r : i( pgm ! NULL ) 2319 `__os_ ( v , pgm ); 2320 i( ovbuf ! NULL ) 2321 `__os_ ( v , ovbuf ); 2322 i( dbt . da ! NULL ) 2323 `__os_ ( v , dbt . da ); 2326 i(( t_t = `__db_lvage_mkde ( vdp , pgno )!0 && t == 0) 2327 t = t_t ; 2329 ( t ); 2330 } } 2341 $__bam_lvage_wkdupt ( dbp , vdp , h , key , hd , back , ags ) 2342 DB * dbp ; 2343 VRFY_DBINFO * vdp ; 2344 PAGE * h ; 2345 DBT * key ; 2346 * hd ; 2347 (* back `__P ((*, const *)); 2348 u_t32_t ags ; 2350 BINTERNAL * bi ; 2351 ENV * v ; 2352 RINTERNAL * ri ; 2353 t , t_t ; 2354 db_dx_t i ; 2356 v = dbp ->env; 2357 t = 0; 2359 i = 0; i < `NUM_ENT ( h ); i++) { 2360 `TYPE ( h )) { 2361 P_IBTREE : 2362 bi = `GET_BINTERNAL ( dbp , h , i ); 2363 i(( t_t = `__db_lvage_due ( dbp , 2364 vdp , bi -> pgno , key , hd , back , ags )) != 0) 2365 t = t_t ; 2367 P_IRECNO : 2368 ri = `GET_RINTERNAL ( dbp , h , i ); 2369 i(( t_t = `__db_lvage_due ( dbp , 2370 vdp , ri -> pgno , key , hd , back , ags )) != 0) 2371 t = t_t ; 2374 ( `__db_unknown_th ( 2375 v , "__bam_salvage_walkdupint")); 2378 ags &~ `LF_ISSET ( DB_SA_SKIPFIRSTKEY ); 2381 ( t ); 2382 } } 2402 $__bam_ma2pgt ( dbp , vdp , btma , ags , pgt ) 2403 DB * dbp ; 2404 VRFY_DBINFO * vdp ; 2405 BTMETA * btma ; 2406 u_t32_t ags ; 2407 DB * pgt ; 2409 BINTERNAL * bi ; 2410 DB_MPOOLFILE * mpf ; 2411 PAGE * h ; 2412 RINTERNAL * ri ; 2413 db_pgno_t cut , p ; 2414 r_t , t ; 2416 `DB_ASSERT ( dbp -> v , pgt ! NULL ); 2418 mpf = dbp ->mpf; 2419 h = NULL ; 2420 t = r_t = 0; 2422 cut = btma -> ro ;;) { 2423 i(! `IS_VALID_PGNO ( cut || cu= `PGNO ( btma )) { 2424 r_t = DB_VERIFY_BAD ; 2425 r ; 2427 i(( t = `__memp_fg ( mpf , & cut , 2428 vdp -> thad_fo , NULL , 0, & h )) != 0) { 2429 r_t = t ; 2430 r ; 2433 `TYPE ( h )) { 2434 P_IBTREE : 2435 P_IRECNO : 2436 i(( t = `__bam_vrfy ( dbp , 2437 vdp , h , cut , ags | DB_NOORDERCHK )) != 0) { 2438 r_t = t ; 2439 r ; 2441 i( `TYPE ( h = P_IBTREE ) { 2442 bi = `GET_BINTERNAL ( dbp , h , 0); 2443 cut = bi -> pgno ; 2445 ri = `GET_RINTERNAL ( dbp , h , 0); 2446 cut = ri -> pgno ; 2449 P_LBTREE : 2450 P_LRECNO : 2451 av ; 2453 r_t = DB_VERIFY_BAD ; 2454 r ; 2457 i(( t = `__memp_ut ( mpf , 2458 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )) != 0) 2459 r_t = t ; 2460 h = NULL ; 2467 av : 2468 `IS_VALID_PGNO ( cut && cu! PGNO_INVALID ) { 2469 i( h = NULL && ( t = `__memp_fg ( mpf , 2470 & cut , vdp -> thad_fo , NULL , 0, & h )) != 0) { 2471 r_t = t ; 2475 i(( t = `__db_vrfy_pgt_g ( pgt , 2476 vdp -> thad_fo , cut , (*)& p )) != 0) 2477 r ; 2479 i( p != 0) { 2487 i(( t = 2488 `__db_vrfy_pgt_c ( pgt , vdp -> thad_fo , cut )) != 0) 2489 r ; 2491 cut = `NEXT_PGNO ( h ); 2492 i(( t = `__memp_ut ( mpf , 2493 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )) != 0) 2494 r_t = t ; 2495 h = NULL ; 2498 r : i( h ! NULL ) 2499 () `__memp_ut ( mpf , 2500 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED ); 2502 ( t =0 ? r_t :et); 2503 } } 2514 $__bam__gda ( dbp , , h , i , ovok , dbt , db ) 2515 DB * dbp ; 2516 DB_THREAD_INFO * ; 2517 PAGE * h ; 2518 u_t32_t i ; 2519 ovok ; 2520 DBT * dbt ; 2521 * db ; 2523 BKEYDATA * bk ; 2524 BOVERFLOW * bo ; 2526 `memt ( dbt , 0, ( DBT )); 2527 * db = 0; 2529 bk = `GET_BKEYDATA ( dbp , h , i ); 2530 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 2531 i(! ovok ) 2534 bo = ( BOVERFLOW *) bk ; 2535 `F_SET ( dbt , DB_DBT_MALLOC ); 2537 * db = 1; 2538 ( `__db_goff ( dbp , , NULL , dbt , 2539 bo -> , bo-> pgno , NULL , NULL)); 2541 dbt -> da = bk ->data; 2542 dbt -> size = bk -> n ; 2546 } } @../btree/btree_auto.c 3 ~"db_cfig.h " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_am.h " 8 ~"dbc/b.h " 9 ~"dbc/log.h " 10 ~"dbc/txn.h " 17 $__bam_l_ad ( v , db , td , cbuf , g ) 18 ENV * v ; 19 DB ** db ; 20 * td ; 21 * cbuf ; 22 __bam_l_gs ** g ; 24 __bam_l_gs * gp ; 25 u_t32_t ump ; 26 u_t8_t * bp ; 27 t ; 29 i(( t = `__os_mloc ( v , 30 ( __bam_l_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 gp -> tx -> td =d; 37 `LOGCOPY_32 ( v , & gp -> ty , bp ); 38 bp +( gp -> ty ); 40 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 41 bp +( gp -> tx -> txnid ); 43 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 44 bp +( DB_LSN ); 46 `LOGCOPY_32 ( v , & ump , bp ); 47 gp -> feid = ( t32_t ) ump ; 48 bp +( ump ); 49 i( db ! NULL ) { 50 * db = NULL ; 51 t = `__dbg_id_to_db ( 52 v , gp -> tx , db ,rgp-> feid , 1); 55 `LOGCOPY_32 ( v , & ump , bp ); 56 gp -> = ( db_pgno_t ) ump ; 57 bp +( ump ); 59 `LOGCOPY_TOLSN ( v , & gp -> , bp ); 60 bp +( DB_LSN ); 62 `LOGCOPY_32 ( v , & ump , bp ); 63 gp -> right = ( db_pgno_t ) ump ; 64 bp +( ump ); 66 `LOGCOPY_TOLSN ( v , & gp -> , bp ); 67 bp +( DB_LSN ); 69 `LOGCOPY_32 ( v , & gp -> dx , bp ); 70 bp +( gp -> dx ); 72 `LOGCOPY_32 ( v , & ump , bp ); 73 gp -> gno = ( db_pgno_t ) ump ; 74 bp +( ump ); 76 `LOGCOPY_TOLSN ( v , & gp -> Ƣ , bp ); 77 bp +( DB_LSN ); 79 `LOGCOPY_32 ( v , & ump , bp ); 80 gp -> ro_pgno = ( db_pgno_t ) ump ; 81 bp +( ump ); 83 `memt (& gp -> pg , 0, (argp->pg)); 84 `LOGCOPY_32 ( v ,& gp -> pg . size , bp ); 85 bp +( u_t32_t ); 86 gp -> pg . da = bp ; 87 bp + gp -> pg . size ; 88 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 89 t_t ; 90 i(( t_t = `__db_gesw (* db , ( PAGE *) gp -> pg . da , 91 ( size_t ) gp -> pg . size , NULL , 1)) != 0) 92 ( t_t ); 95 `LOGCOPY_32 ( v , & gp -> ags , bp ); 96 bp +( gp -> ags ); 98 * g = gp ; 99 ( t ); 100 } } 108 $__bam_l_log ( dbp , tx , t_lp , ags , , , right , , dx , 109 gno , Ƣ , ro_pgno , pg , ags ) 110 DB * dbp ; 111 DB_TXN * tx ; 112 DB_LSN * t_lp ; 113 u_t32_t ags ; 114 db_pgno_t ; 115 DB_LSN * ; 116 db_pgno_t right ; 117 DB_LSN * ; 118 u_t32_t dx ; 119 db_pgno_t gno ; 120 DB_LSN * Ƣ ; 121 db_pgno_t ro_pgno ; 122 cڡ DBT * pg ; 123 u_t32_t ags ; 125 DBT logc ; 126 DB_LSN * lp , nu_l , * p ; 127 DB_TXNLOGREC * ; 128 ENV * v ; 129 u_t32_t zo , ump , y , txn_num ; 130 u_t ad ; 131 u_t8_t * bp ; 132 is_dub , t ; 134 `COMPQUIET ( , NULL ); 136 v = dbp ->env; 137 p = t_lp ; 138 y = DB___bam_l ; 139 ad = 0; 140 t = 0; 142 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 143 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 144 i( tx = NULL ) 146 is_dub = 0; 148 is_dub = 1; 150 i( tx = NULL ) { 151 txn_num = 0; 152 lp = & nu_l ; 153 nu_l . fe =u_l. offt = 0; 155 i( `TAILQ_FIRST (& tx -> kids ! NULL && 156 ( t = `__txn_aivekids ( v , y , tx )) != 0) 157 ( t ); 164 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 165 txn_num = tx -> txnid ; 168 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 169 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 170 ( t = `__dbg_zy_id ( dbp )) != 0) 171 ( t ); 173 logc . size = ( y + ( txn_num + ( DB_LSN ) 174 + ( u_t32_t ) 175 + ( u_t32_t ) 176 + (* ) 177 + ( u_t32_t ) 178 + (* ) 179 + ( u_t32_t ) 180 + ( u_t32_t ) 181 + (* Ƣ ) 182 + ( u_t32_t ) 183 + ( u_t32_t + ( pg = NULL ? 0 :g-> size ) 184 + ( u_t32_t ); 185 i( `CRYPTO_ON ( v )) { 186 ad = v -> yo_hd -> `adj_size ( logc . size ); 187 logc . size + ad ; 190 i( is_dub || tx = NULL ) { 191 i(( t = 192 `__os_mloc ( v , logc . size , &logc. da )) != 0) 193 ( t ); 195 i(( t = `__os_mloc ( v , 196 logc . size + ( DB_TXNLOGREC ), & )) != 0) 197 ( t ); 198 #ifde DIAGNOSTIC 199 i(( t = 200 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 201 `__os_ ( v , ); 202 ( t ); 205 logc . da = ->data; 208 i( ad > 0) 209 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 211 bp = logc . da ; 213 `LOGCOPY_32 ( v , bp , & y ); 214 bp +( y ); 216 `LOGCOPY_32 ( v , bp , & txn_num ); 217 bp +( txn_num ); 219 `LOGCOPY_FROMLSN ( v , bp , lp ); 220 bp +( DB_LSN ); 222 ump = ( u_t32_t ) dbp -> log_fame -> id ; 223 `LOGCOPY_32 ( v , bp , & ump ); 224 bp +( ump ); 226 ump = ( u_t32_t ) ; 227 `LOGCOPY_32 ( v , bp , & ump ); 228 bp +( ump ); 230 i( ! NULL ) { 231 i( tx ! NULL ) { 232 LOG * = v -> lg_hd -> gfo . imy ; 233 i( `LOG_COMPARE ( , & -> l >0 && ( t = 234 `__log_check_ge_l ( v , dbp , ) != 0)) 235 ( t ); 237 `LOGCOPY_FROMLSN ( v , bp , ); 239 `memt ( bp , 0, (* )); 240 bp +(* ); 242 ump = ( u_t32_t ) right ; 243 `LOGCOPY_32 ( v , bp , & ump ); 244 bp +( ump ); 246 i( ! NULL ) { 247 i( tx ! NULL ) { 248 LOG * = v -> lg_hd -> gfo . imy ; 249 i( `LOG_COMPARE ( , & -> l >0 && ( t = 250 `__log_check_ge_l ( v , dbp , ) != 0)) 251 ( t ); 253 `LOGCOPY_FROMLSN ( v , bp , ); 255 `memt ( bp , 0, (* )); 256 bp +(* ); 258 `LOGCOPY_32 ( v , bp , & dx ); 259 bp +( dx ); 261 ump = ( u_t32_t ) gno ; 262 `LOGCOPY_32 ( v , bp , & ump ); 263 bp +( ump ); 265 i( Ƣ ! NULL ) { 266 i( tx ! NULL ) { 267 LOG * = v -> lg_hd -> gfo . imy ; 268 i( `LOG_COMPARE ( Ƣ , & -> l >0 && ( t = 269 `__log_check_ge_l ( v , dbp , Ƣ ) != 0)) 270 ( t ); 272 `LOGCOPY_FROMLSN ( v , bp , Ƣ ); 274 `memt ( bp , 0, (* Ƣ )); 275 bp +(* Ƣ ); 277 ump = ( u_t32_t ) ro_pgno ; 278 `LOGCOPY_32 ( v , bp , & ump ); 279 bp +( ump ); 281 i( pg = NULL ) { 282 zo = 0; 283 `LOGCOPY_32 ( v , bp , & zo ); 284 bp +( u_t32_t ); 286 `LOGCOPY_32 ( v , bp , & pg -> size ); 287 bp +( pg -> size ); 288 `memy ( bp , pg -> da ,g-> size ); 289 i( `LOG_SWAPPED ( v )) 290 i(( t = `__db_gesw ( dbp , 291 ( PAGE *) bp , ( size_t ) pg -> size , ( DBT *) NULL , 0)) != 0) 292 ( t ); 293 bp + pg -> size ; 296 `LOGCOPY_32 ( v , bp , & ags ); 297 bp +( ags ); 299 `DB_ASSERT ( v , 300 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 302 i( is_dub || tx = NULL ) { 303 i(( t = `__log_put ( v , p ,( DBT *)& logc , 304 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 305 * lp = * p ; 306 i( p ! t_lp ) 307 * t_lp = * p ; 310 t = 0; 311 #ifde DIAGNOSTIC 316 `memy ( -> da , logc .da,ogc. size ); 317 y | DB_debug_FLAG ; 318 `LOGCOPY_32 ( v , logc . da , & y ); 320 i(! `IS_REP_CLIENT ( v )) 321 t = `__log_put ( v , 322 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 324 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 325 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 326 `LSN_NOT_LOGGED (* t_lp ); 329 #ifde LOG_DIAGNOSTIC 330 i( t != 0) 331 () `__bam_l_t ( v , 332 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 335 #ifde DIAGNOSTIC 336 `__os_ ( v , logc . da ); 338 i( is_dub || tx = NULL ) 339 `__os_ ( v , logc . da ); 341 ( t ); 342 } } 349 $__bam_rl_ad ( v , db , td , cbuf , g ) 350 ENV * v ; 351 DB ** db ; 352 * td ; 353 * cbuf ; 354 __bam_rl_gs ** g ; 356 __bam_rl_gs * gp ; 357 u_t32_t ump ; 358 u_t8_t * bp ; 359 t ; 361 i(( t = `__os_mloc ( v , 362 ( __bam_rl_gs + ( DB_TXN ), & gp )) != 0) 363 ( t ); 364 bp = cbuf ; 365 gp -> tx = ( DB_TXN *)&argp[1]; 366 `memt ( gp -> tx , 0, ( DB_TXN )); 368 gp -> tx -> td =d; 369 `LOGCOPY_32 ( v , & gp -> ty , bp ); 370 bp +( gp -> ty ); 372 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 373 bp +( gp -> tx -> txnid ); 375 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 376 bp +( DB_LSN ); 378 `LOGCOPY_32 ( v , & ump , bp ); 379 gp -> feid = ( t32_t ) ump ; 380 bp +( ump ); 381 i( db ! NULL ) { 382 * db = NULL ; 383 t = `__dbg_id_to_db ( 384 v , gp -> tx , db ,rgp-> feid , 1); 387 `LOGCOPY_32 ( v , & ump , bp ); 388 gp -> pgno = ( db_pgno_t ) ump ; 389 bp +( ump ); 391 `memt (& gp -> pgdbt , 0, (argp->pgdbt)); 392 `LOGCOPY_32 ( v ,& gp -> pgdbt . size , bp ); 393 bp +( u_t32_t ); 394 gp -> pgdbt . da = bp ; 395 bp + gp -> pgdbt . size ; 396 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 397 t_t ; 398 i(( t_t = `__db_gesw (* db , ( PAGE *) gp -> pgdbt . da , 399 ( size_t ) gp -> pgdbt . size , NULL , 1)) != 0) 400 ( t_t ); 403 `LOGCOPY_32 ( v , & ump , bp ); 404 gp -> ro_pgno = ( db_pgno_t ) ump ; 405 bp +( ump ); 407 `LOGCOPY_32 ( v , & ump , bp ); 408 gp -> ec = ( db_pgno_t ) ump ; 409 bp +( ump ); 411 `memt (& gp -> roْt , 0, (argp->rootent)); 412 `LOGCOPY_32 ( v ,& gp -> roْt . size , bp ); 413 bp +( u_t32_t ); 414 gp -> roْt . da = bp ; 415 bp + gp -> roْt . size ; 417 `LOGCOPY_TOLSN ( v , & gp -> rol , bp ); 418 bp +( DB_LSN ); 420 * g = gp ; 421 ( t ); 422 } } 430 $__bam_rl_log ( dbp , tx , t_lp , ags , pgno , pgdbt , ro_pgno , ec , roْt , 431 rol ) 432 DB * dbp ; 433 DB_TXN * tx ; 434 DB_LSN * t_lp ; 435 u_t32_t ags ; 436 db_pgno_t pgno ; 437 cڡ DBT * pgdbt ; 438 db_pgno_t ro_pgno ; 439 db_pgno_t ec ; 440 cڡ DBT * roْt ; 441 DB_LSN * rol ; 443 DBT logc ; 444 DB_LSN * lp , nu_l , * p ; 445 DB_TXNLOGREC * ; 446 ENV * v ; 447 u_t32_t zo , ump , y , txn_num ; 448 u_t ad ; 449 u_t8_t * bp ; 450 is_dub , t ; 452 `COMPQUIET ( , NULL ); 454 v = dbp ->env; 455 p = t_lp ; 456 y = DB___bam_rl ; 457 ad = 0; 458 t = 0; 460 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 461 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 462 i( tx = NULL ) 464 is_dub = 0; 466 is_dub = 1; 468 i( tx = NULL ) { 469 txn_num = 0; 470 lp = & nu_l ; 471 nu_l . fe =u_l. offt = 0; 473 i( `TAILQ_FIRST (& tx -> kids ! NULL && 474 ( t = `__txn_aivekids ( v , y , tx )) != 0) 475 ( t ); 482 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 483 txn_num = tx -> txnid ; 486 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 487 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 488 ( t = `__dbg_zy_id ( dbp )) != 0) 489 ( t ); 491 logc . size = ( y + ( txn_num + ( DB_LSN ) 492 + ( u_t32_t ) 493 + ( u_t32_t ) 494 + ( u_t32_t + ( pgdbt = NULL ? 0 :gdbt-> size ) 495 + ( u_t32_t ) 496 + ( u_t32_t ) 497 + ( u_t32_t + ( roْt = NULL ? 0 :oْt-> size ) 498 + (* rol ); 499 i( `CRYPTO_ON ( v )) { 500 ad = v -> yo_hd -> `adj_size ( logc . size ); 501 logc . size + ad ; 504 i( is_dub || tx = NULL ) { 505 i(( t = 506 `__os_mloc ( v , logc . size , &logc. da )) != 0) 507 ( t ); 509 i(( t = `__os_mloc ( v , 510 logc . size + ( DB_TXNLOGREC ), & )) != 0) 511 ( t ); 512 #ifde DIAGNOSTIC 513 i(( t = 514 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 515 `__os_ ( v , ); 516 ( t ); 519 logc . da = ->data; 522 i( ad > 0) 523 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 525 bp = logc . da ; 527 `LOGCOPY_32 ( v , bp , & y ); 528 bp +( y ); 530 `LOGCOPY_32 ( v , bp , & txn_num ); 531 bp +( txn_num ); 533 `LOGCOPY_FROMLSN ( v , bp , lp ); 534 bp +( DB_LSN ); 536 ump = ( u_t32_t ) dbp -> log_fame -> id ; 537 `LOGCOPY_32 ( v , bp , & ump ); 538 bp +( ump ); 540 ump = ( u_t32_t ) pgno ; 541 `LOGCOPY_32 ( v , bp , & ump ); 542 bp +( ump ); 544 i( pgdbt = NULL ) { 545 zo = 0; 546 `LOGCOPY_32 ( v , bp , & zo ); 547 bp +( u_t32_t ); 549 `LOGCOPY_32 ( v , bp , & pgdbt -> size ); 550 bp +( pgdbt -> size ); 551 `memy ( bp , pgdbt -> da ,gdbt-> size ); 552 i( `LOG_SWAPPED ( v )) 553 i(( t = `__db_gesw ( dbp , 554 ( PAGE *) bp , ( size_t ) pgdbt -> size , ( DBT *) NULL , 0)) != 0) 555 ( t ); 556 bp + pgdbt -> size ; 559 ump = ( u_t32_t ) ro_pgno ; 560 `LOGCOPY_32 ( v , bp , & ump ); 561 bp +( ump ); 563 ump = ( u_t32_t ) ec ; 564 `LOGCOPY_32 ( v , bp , & ump ); 565 bp +( ump ); 567 i( roْt = NULL ) { 568 zo = 0; 569 `LOGCOPY_32 ( v , bp , & zo ); 570 bp +( u_t32_t ); 572 `LOGCOPY_32 ( v , bp , & roْt -> size ); 573 bp +( roْt -> size ); 574 `memy ( bp , roْt -> da ,oْt-> size ); 575 bp + roْt -> size ; 578 i( rol ! NULL ) { 579 i( tx ! NULL ) { 580 LOG * = v -> lg_hd -> gfo . imy ; 581 i( `LOG_COMPARE ( rol , & -> l >0 && ( t = 582 `__log_check_ge_l ( v , dbp , rol ) != 0)) 583 ( t ); 585 `LOGCOPY_FROMLSN ( v , bp , rol ); 587 `memt ( bp , 0, (* rol )); 588 bp +(* rol ); 590 `DB_ASSERT ( v , 591 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 593 i( is_dub || tx = NULL ) { 594 i(( t = `__log_put ( v , p ,( DBT *)& logc , 595 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 596 * lp = * p ; 597 i( p ! t_lp ) 598 * t_lp = * p ; 601 t = 0; 602 #ifde DIAGNOSTIC 607 `memy ( -> da , logc .da,ogc. size ); 608 y | DB_debug_FLAG ; 609 `LOGCOPY_32 ( v , logc . da , & y ); 611 i(! `IS_REP_CLIENT ( v )) 612 t = `__log_put ( v , 613 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 615 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 616 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 617 `LSN_NOT_LOGGED (* t_lp ); 620 #ifde LOG_DIAGNOSTIC 621 i( t != 0) 622 () `__bam_rl_t ( v , 623 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 626 #ifde DIAGNOSTIC 627 `__os_ ( v , logc . da ); 629 i( is_dub || tx = NULL ) 630 `__os_ ( v , logc . da ); 632 ( t ); 633 } } 640 $__bam_adj_ad ( v , db , td , cbuf , g ) 641 ENV * v ; 642 DB ** db ; 643 * td ; 644 * cbuf ; 645 __bam_adj_gs ** g ; 647 __bam_adj_gs * gp ; 648 u_t32_t ump ; 649 u_t8_t * bp ; 650 t ; 652 i(( t = `__os_mloc ( v , 653 ( __bam_adj_gs + ( DB_TXN ), & gp )) != 0) 654 ( t ); 655 bp = cbuf ; 656 gp -> tx = ( DB_TXN *)&argp[1]; 657 `memt ( gp -> tx , 0, ( DB_TXN )); 659 gp -> tx -> td =d; 660 `LOGCOPY_32 ( v , & gp -> ty , bp ); 661 bp +( gp -> ty ); 663 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 664 bp +( gp -> tx -> txnid ); 666 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 667 bp +( DB_LSN ); 669 `LOGCOPY_32 ( v , & ump , bp ); 670 gp -> feid = ( t32_t ) ump ; 671 bp +( ump ); 672 i( db ! NULL ) { 673 * db = NULL ; 674 t = `__dbg_id_to_db ( 675 v , gp -> tx , db ,rgp-> feid , 1); 678 `LOGCOPY_32 ( v , & ump , bp ); 679 gp -> pgno = ( db_pgno_t ) ump ; 680 bp +( ump ); 682 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 683 bp +( DB_LSN ); 685 `LOGCOPY_32 ( v , & gp -> dx , bp ); 686 bp +( gp -> dx ); 688 `LOGCOPY_32 ( v , & gp -> dx_cy , bp ); 689 bp +( gp -> dx_cy ); 691 `LOGCOPY_32 ( v , & gp -> is_ , bp ); 692 bp +( gp -> is_ ); 694 * g = gp ; 695 ( t ); 696 } } 704 $__bam_adj_log ( dbp , tx , t_lp , ags , pgno , l , dx , dx_cy , is_ ) 705 DB * dbp ; 706 DB_TXN * tx ; 707 DB_LSN * t_lp ; 708 u_t32_t ags ; 709 db_pgno_t pgno ; 710 DB_LSN * l ; 711 u_t32_t dx ; 712 u_t32_t dx_cy ; 713 u_t32_t is_ ; 715 DBT logc ; 716 DB_LSN * lp , nu_l , * p ; 717 DB_TXNLOGREC * ; 718 ENV * v ; 719 u_t32_t ump , y , txn_num ; 720 u_t ad ; 721 u_t8_t * bp ; 722 is_dub , t ; 724 `COMPQUIET ( , NULL ); 726 v = dbp ->env; 727 p = t_lp ; 728 y = DB___bam_adj ; 729 ad = 0; 730 t = 0; 732 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 733 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 734 i( tx = NULL ) 736 is_dub = 0; 738 is_dub = 1; 740 i( tx = NULL ) { 741 txn_num = 0; 742 lp = & nu_l ; 743 nu_l . fe =u_l. offt = 0; 745 i( `TAILQ_FIRST (& tx -> kids ! NULL && 746 ( t = `__txn_aivekids ( v , y , tx )) != 0) 747 ( t ); 754 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 755 txn_num = tx -> txnid ; 758 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 759 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 760 ( t = `__dbg_zy_id ( dbp )) != 0) 761 ( t ); 763 logc . size = ( y + ( txn_num + ( DB_LSN ) 764 + ( u_t32_t ) 765 + ( u_t32_t ) 766 + (* l ) 767 + ( u_t32_t ) 768 + ( u_t32_t ) 769 + ( u_t32_t ); 770 i( `CRYPTO_ON ( v )) { 771 ad = v -> yo_hd -> `adj_size ( logc . size ); 772 logc . size + ad ; 775 i( is_dub || tx = NULL ) { 776 i(( t = 777 `__os_mloc ( v , logc . size , &logc. da )) != 0) 778 ( t ); 780 i(( t = `__os_mloc ( v , 781 logc . size + ( DB_TXNLOGREC ), & )) != 0) 782 ( t ); 783 #ifde DIAGNOSTIC 784 i(( t = 785 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 786 `__os_ ( v , ); 787 ( t ); 790 logc . da = ->data; 793 i( ad > 0) 794 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 796 bp = logc . da ; 798 `LOGCOPY_32 ( v , bp , & y ); 799 bp +( y ); 801 `LOGCOPY_32 ( v , bp , & txn_num ); 802 bp +( txn_num ); 804 `LOGCOPY_FROMLSN ( v , bp , lp ); 805 bp +( DB_LSN ); 807 ump = ( u_t32_t ) dbp -> log_fame -> id ; 808 `LOGCOPY_32 ( v , bp , & ump ); 809 bp +( ump ); 811 ump = ( u_t32_t ) pgno ; 812 `LOGCOPY_32 ( v , bp , & ump ); 813 bp +( ump ); 815 i( l ! NULL ) { 816 i( tx ! NULL ) { 817 LOG * = v -> lg_hd -> gfo . imy ; 818 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 819 `__log_check_ge_l ( v , dbp , l ) != 0)) 820 ( t ); 822 `LOGCOPY_FROMLSN ( v , bp , l ); 824 `memt ( bp , 0, (* l )); 825 bp +(* l ); 827 `LOGCOPY_32 ( v , bp , & dx ); 828 bp +( dx ); 830 `LOGCOPY_32 ( v , bp , & dx_cy ); 831 bp +( dx_cy ); 833 `LOGCOPY_32 ( v , bp , & is_ ); 834 bp +( is_ ); 836 `DB_ASSERT ( v , 837 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 839 i( is_dub || tx = NULL ) { 840 i(( t = `__log_put ( v , p ,( DBT *)& logc , 841 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 842 * lp = * p ; 843 i( p ! t_lp ) 844 * t_lp = * p ; 847 t = 0; 848 #ifde DIAGNOSTIC 853 `memy ( -> da , logc .da,ogc. size ); 854 y | DB_debug_FLAG ; 855 `LOGCOPY_32 ( v , logc . da , & y ); 857 i(! `IS_REP_CLIENT ( v )) 858 t = `__log_put ( v , 859 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 861 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 862 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 863 `LSN_NOT_LOGGED (* t_lp ); 866 #ifde LOG_DIAGNOSTIC 867 i( t != 0) 868 () `__bam_adj_t ( v , 869 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 872 #ifde DIAGNOSTIC 873 `__os_ ( v , logc . da ); 875 i( is_dub || tx = NULL ) 876 `__os_ ( v , logc . da ); 878 ( t ); 879 } } 886 $__bam_dju_ad ( v , db , td , cbuf , g ) 887 ENV * v ; 888 DB ** db ; 889 * td ; 890 * cbuf ; 891 __bam_dju_gs ** g ; 893 __bam_dju_gs * gp ; 894 u_t32_t ump ; 895 u_t8_t * bp ; 896 t ; 898 i(( t = `__os_mloc ( v , 899 ( __bam_dju_gs + ( DB_TXN ), & gp )) != 0) 900 ( t ); 901 bp = cbuf ; 902 gp -> tx = ( DB_TXN *)&argp[1]; 903 `memt ( gp -> tx , 0, ( DB_TXN )); 905 gp -> tx -> td =d; 906 `LOGCOPY_32 ( v , & gp -> ty , bp ); 907 bp +( gp -> ty ); 909 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 910 bp +( gp -> tx -> txnid ); 912 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 913 bp +( DB_LSN ); 915 `LOGCOPY_32 ( v , & ump , bp ); 916 gp -> feid = ( t32_t ) ump ; 917 bp +( ump ); 918 i( db ! NULL ) { 919 * db = NULL ; 920 t = `__dbg_id_to_db ( 921 v , gp -> tx , db ,rgp-> feid , 1); 924 `LOGCOPY_32 ( v , & ump , bp ); 925 gp -> pgno = ( db_pgno_t ) ump ; 926 bp +( ump ); 928 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 929 bp +( DB_LSN ); 931 `LOGCOPY_32 ( v , & gp -> dx , bp ); 932 bp +( gp -> dx ); 934 `LOGCOPY_32 ( v , & ump , bp ); 935 gp -> adju = ( t32_t ) ump ; 936 bp +( ump ); 938 `LOGCOPY_32 ( v , & gp -> ags , bp ); 939 bp +( gp -> ags ); 941 * g = gp ; 942 ( t ); 943 } } 950 $__bam_dju_log ( dbp , tx , t_lp , ags , pgno , l , dx , adju , ags ) 951 DB * dbp ; 952 DB_TXN * tx ; 953 DB_LSN * t_lp ; 954 u_t32_t ags ; 955 db_pgno_t pgno ; 956 DB_LSN * l ; 957 u_t32_t dx ; 958 t32_t adju ; 959 u_t32_t ags ; 961 DBT logc ; 962 DB_LSN * lp , nu_l , * p ; 963 DB_TXNLOGREC * ; 964 ENV * v ; 965 u_t32_t ump , y , txn_num ; 966 u_t ad ; 967 u_t8_t * bp ; 968 is_dub , t ; 970 `COMPQUIET ( , NULL ); 972 v = dbp ->env; 973 p = t_lp ; 974 y = DB___bam_dju ; 975 ad = 0; 976 t = 0; 978 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 979 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 980 i( tx = NULL ) 982 is_dub = 0; 984 is_dub = 1; 986 i( tx = NULL ) { 987 txn_num = 0; 988 lp = & nu_l ; 989 nu_l . fe =u_l. offt = 0; 991 i( `TAILQ_FIRST (& tx -> kids ! NULL && 992 ( t = `__txn_aivekids ( v , y , tx )) != 0) 993 ( t ); 1000 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1001 txn_num = tx -> txnid ; 1004 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1005 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1006 ( t = `__dbg_zy_id ( dbp )) != 0) 1007 ( t ); 1009 logc . size = ( y + ( txn_num + ( DB_LSN ) 1010 + ( u_t32_t ) 1011 + ( u_t32_t ) 1012 + (* l ) 1013 + ( u_t32_t ) 1014 + ( u_t32_t ) 1015 + ( u_t32_t ); 1016 i( `CRYPTO_ON ( v )) { 1017 ad = v -> yo_hd -> `adj_size ( logc . size ); 1018 logc . size + ad ; 1021 i( is_dub || tx = NULL ) { 1022 i(( t = 1023 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1024 ( t ); 1026 i(( t = `__os_mloc ( v , 1027 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1028 ( t ); 1029 #ifde DIAGNOSTIC 1030 i(( t = 1031 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1032 `__os_ ( v , ); 1033 ( t ); 1036 logc . da = ->data; 1039 i( ad > 0) 1040 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1042 bp = logc . da ; 1044 `LOGCOPY_32 ( v , bp , & y ); 1045 bp +( y ); 1047 `LOGCOPY_32 ( v , bp , & txn_num ); 1048 bp +( txn_num ); 1050 `LOGCOPY_FROMLSN ( v , bp , lp ); 1051 bp +( DB_LSN ); 1053 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1054 `LOGCOPY_32 ( v , bp , & ump ); 1055 bp +( ump ); 1057 ump = ( u_t32_t ) pgno ; 1058 `LOGCOPY_32 ( v , bp , & ump ); 1059 bp +( ump ); 1061 i( l ! NULL ) { 1062 i( tx ! NULL ) { 1063 LOG * = v -> lg_hd -> gfo . imy ; 1064 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1065 `__log_check_ge_l ( v , dbp , l ) != 0)) 1066 ( t ); 1068 `LOGCOPY_FROMLSN ( v , bp , l ); 1070 `memt ( bp , 0, (* l )); 1071 bp +(* l ); 1073 `LOGCOPY_32 ( v , bp , & dx ); 1074 bp +( dx ); 1076 ump = ( u_t32_t ) adju ; 1077 `LOGCOPY_32 ( v , bp , & ump ); 1078 bp +( ump ); 1080 `LOGCOPY_32 ( v , bp , & ags ); 1081 bp +( ags ); 1083 `DB_ASSERT ( v , 1084 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1086 i( is_dub || tx = NULL ) { 1087 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1088 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1089 * lp = * p ; 1090 i( p ! t_lp ) 1091 * t_lp = * p ; 1094 t = 0; 1095 #ifde DIAGNOSTIC 1100 `memy ( -> da , logc .da,ogc. size ); 1101 y | DB_debug_FLAG ; 1102 `LOGCOPY_32 ( v , logc . da , & y ); 1104 i(! `IS_REP_CLIENT ( v )) 1105 t = `__log_put ( v , 1106 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1108 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1109 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1110 `LSN_NOT_LOGGED (* t_lp ); 1113 #ifde LOG_DIAGNOSTIC 1114 i( t != 0) 1115 () `__bam_dju_t ( v , 1116 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1119 #ifde DIAGNOSTIC 1120 `__os_ ( v , logc . da ); 1122 i( is_dub || tx = NULL ) 1123 `__os_ ( v , logc . da ); 1125 ( t ); 1126 } } 1133 $__bam_cd_ad ( v , db , td , cbuf , g ) 1134 ENV * v ; 1135 DB ** db ; 1136 * td ; 1137 * cbuf ; 1138 __bam_cd_gs ** g ; 1140 __bam_cd_gs * gp ; 1141 u_t32_t ump ; 1142 u_t8_t * bp ; 1143 t ; 1145 i(( t = `__os_mloc ( v , 1146 ( __bam_cd_gs + ( DB_TXN ), & gp )) != 0) 1147 ( t ); 1148 bp = cbuf ; 1149 gp -> tx = ( DB_TXN *)&argp[1]; 1150 `memt ( gp -> tx , 0, ( DB_TXN )); 1152 gp -> tx -> td =d; 1153 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1154 bp +( gp -> ty ); 1156 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1157 bp +( gp -> tx -> txnid ); 1159 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1160 bp +( DB_LSN ); 1162 `LOGCOPY_32 ( v , & ump , bp ); 1163 gp -> feid = ( t32_t ) ump ; 1164 bp +( ump ); 1165 i( db ! NULL ) { 1166 * db = NULL ; 1167 t = `__dbg_id_to_db ( 1168 v , gp -> tx , db ,rgp-> feid , 1); 1171 `LOGCOPY_32 ( v , & ump , bp ); 1172 gp -> pgno = ( db_pgno_t ) ump ; 1173 bp +( ump ); 1175 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 1176 bp +( DB_LSN ); 1178 `LOGCOPY_32 ( v , & gp -> dx , bp ); 1179 bp +( gp -> dx ); 1181 * g = gp ; 1182 ( t ); 1183 } } 1190 $__bam_cd_log ( dbp , tx , t_lp , ags , pgno , l , dx ) 1191 DB * dbp ; 1192 DB_TXN * tx ; 1193 DB_LSN * t_lp ; 1194 u_t32_t ags ; 1195 db_pgno_t pgno ; 1196 DB_LSN * l ; 1197 u_t32_t dx ; 1199 DBT logc ; 1200 DB_LSN * lp , nu_l , * p ; 1201 DB_TXNLOGREC * ; 1202 ENV * v ; 1203 u_t32_t ump , y , txn_num ; 1204 u_t ad ; 1205 u_t8_t * bp ; 1206 is_dub , t ; 1208 `COMPQUIET ( , NULL ); 1210 v = dbp ->env; 1211 p = t_lp ; 1212 y = DB___bam_cd ; 1213 ad = 0; 1214 t = 0; 1216 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1217 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1218 i( tx = NULL ) 1220 is_dub = 0; 1222 is_dub = 1; 1224 i( tx = NULL ) { 1225 txn_num = 0; 1226 lp = & nu_l ; 1227 nu_l . fe =u_l. offt = 0; 1229 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1230 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1231 ( t ); 1238 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1239 txn_num = tx -> txnid ; 1242 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1243 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1244 ( t = `__dbg_zy_id ( dbp )) != 0) 1245 ( t ); 1247 logc . size = ( y + ( txn_num + ( DB_LSN ) 1248 + ( u_t32_t ) 1249 + ( u_t32_t ) 1250 + (* l ) 1251 + ( u_t32_t ); 1252 i( `CRYPTO_ON ( v )) { 1253 ad = v -> yo_hd -> `adj_size ( logc . size ); 1254 logc . size + ad ; 1257 i( is_dub || tx = NULL ) { 1258 i(( t = 1259 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1260 ( t ); 1262 i(( t = `__os_mloc ( v , 1263 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1264 ( t ); 1265 #ifde DIAGNOSTIC 1266 i(( t = 1267 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1268 `__os_ ( v , ); 1269 ( t ); 1272 logc . da = ->data; 1275 i( ad > 0) 1276 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1278 bp = logc . da ; 1280 `LOGCOPY_32 ( v , bp , & y ); 1281 bp +( y ); 1283 `LOGCOPY_32 ( v , bp , & txn_num ); 1284 bp +( txn_num ); 1286 `LOGCOPY_FROMLSN ( v , bp , lp ); 1287 bp +( DB_LSN ); 1289 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1290 `LOGCOPY_32 ( v , bp , & ump ); 1291 bp +( ump ); 1293 ump = ( u_t32_t ) pgno ; 1294 `LOGCOPY_32 ( v , bp , & ump ); 1295 bp +( ump ); 1297 i( l ! NULL ) { 1298 i( tx ! NULL ) { 1299 LOG * = v -> lg_hd -> gfo . imy ; 1300 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1301 `__log_check_ge_l ( v , dbp , l ) != 0)) 1302 ( t ); 1304 `LOGCOPY_FROMLSN ( v , bp , l ); 1306 `memt ( bp , 0, (* l )); 1307 bp +(* l ); 1309 `LOGCOPY_32 ( v , bp , & dx ); 1310 bp +( dx ); 1312 `DB_ASSERT ( v , 1313 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1315 i( is_dub || tx = NULL ) { 1316 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1317 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1318 * lp = * p ; 1319 i( p ! t_lp ) 1320 * t_lp = * p ; 1323 t = 0; 1324 #ifde DIAGNOSTIC 1329 `memy ( -> da , logc .da,ogc. size ); 1330 y | DB_debug_FLAG ; 1331 `LOGCOPY_32 ( v , logc . da , & y ); 1333 i(! `IS_REP_CLIENT ( v )) 1334 t = `__log_put ( v , 1335 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1337 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1338 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1339 `LSN_NOT_LOGGED (* t_lp ); 1342 #ifde LOG_DIAGNOSTIC 1343 i( t != 0) 1344 () `__bam_cd_t ( v , 1345 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1348 #ifde DIAGNOSTIC 1349 `__os_ ( v , logc . da ); 1351 i( is_dub || tx = NULL ) 1352 `__os_ ( v , logc . da ); 1354 ( t ); 1355 } } 1362 $__bam__ad ( v , db , td , cbuf , g ) 1363 ENV * v ; 1364 DB ** db ; 1365 * td ; 1366 * cbuf ; 1367 __bam__gs ** g ; 1369 __bam__gs * gp ; 1370 u_t32_t ump ; 1371 u_t8_t * bp ; 1372 t ; 1374 i(( t = `__os_mloc ( v , 1375 ( __bam__gs + ( DB_TXN ), & gp )) != 0) 1376 ( t ); 1377 bp = cbuf ; 1378 gp -> tx = ( DB_TXN *)&argp[1]; 1379 `memt ( gp -> tx , 0, ( DB_TXN )); 1381 gp -> tx -> td =d; 1382 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1383 bp +( gp -> ty ); 1385 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1386 bp +( gp -> tx -> txnid ); 1388 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1389 bp +( DB_LSN ); 1391 `LOGCOPY_32 ( v , & ump , bp ); 1392 gp -> feid = ( t32_t ) ump ; 1393 bp +( ump ); 1394 i( db ! NULL ) { 1395 * db = NULL ; 1396 t = `__dbg_id_to_db ( 1397 v , gp -> tx , db ,rgp-> feid , 1); 1400 `LOGCOPY_32 ( v , & ump , bp ); 1401 gp -> pgno = ( db_pgno_t ) ump ; 1402 bp +( ump ); 1404 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 1405 bp +( DB_LSN ); 1407 `LOGCOPY_32 ( v , & gp -> dx , bp ); 1408 bp +( gp -> dx ); 1410 `LOGCOPY_32 ( v , & gp -> isded , bp ); 1411 bp +( gp -> isded ); 1413 `memt (& gp -> ig , 0, (argp->orig)); 1414 `LOGCOPY_32 ( v ,& gp -> ig . size , bp ); 1415 bp +( u_t32_t ); 1416 gp -> ig . da = bp ; 1417 bp + gp -> ig . size ; 1419 `memt (& gp -> , 0, (argp->repl)); 1420 `LOGCOPY_32 ( v ,& gp -> . size , bp ); 1421 bp +( u_t32_t ); 1422 gp -> . da = bp ; 1423 bp + gp -> . size ; 1425 `LOGCOPY_32 ( v , & gp -> efix , bp ); 1426 bp +( gp -> efix ); 1428 `LOGCOPY_32 ( v , & gp -> suffix , bp ); 1429 bp +( gp -> suffix ); 1431 * g = gp ; 1432 ( t ); 1433 } } 1441 $__bam__log ( dbp , tx , t_lp , ags , pgno , l , dx , isded , ig , 1442 , efix , suffix ) 1443 DB * dbp ; 1444 DB_TXN * tx ; 1445 DB_LSN * t_lp ; 1446 u_t32_t ags ; 1447 db_pgno_t pgno ; 1448 DB_LSN * l ; 1449 u_t32_t dx ; 1450 u_t32_t isded ; 1451 cڡ DBT * ig ; 1452 cڡ DBT * ; 1453 u_t32_t efix ; 1454 u_t32_t suffix ; 1456 DBT logc ; 1457 DB_LSN * lp , nu_l , * p ; 1458 DB_TXNLOGREC * ; 1459 ENV * v ; 1460 u_t32_t zo , ump , y , txn_num ; 1461 u_t ad ; 1462 u_t8_t * bp ; 1463 is_dub , t ; 1465 `COMPQUIET ( , NULL ); 1467 v = dbp ->env; 1468 p = t_lp ; 1469 y = DB___bam_ ; 1470 ad = 0; 1471 t = 0; 1473 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1474 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1475 i( tx = NULL ) 1477 is_dub = 0; 1479 is_dub = 1; 1481 i( tx = NULL ) { 1482 txn_num = 0; 1483 lp = & nu_l ; 1484 nu_l . fe =u_l. offt = 0; 1486 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1487 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1488 ( t ); 1495 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1496 txn_num = tx -> txnid ; 1499 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1500 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1501 ( t = `__dbg_zy_id ( dbp )) != 0) 1502 ( t ); 1504 logc . size = ( y + ( txn_num + ( DB_LSN ) 1505 + ( u_t32_t ) 1506 + ( u_t32_t ) 1507 + (* l ) 1508 + ( u_t32_t ) 1509 + ( u_t32_t ) 1510 + ( u_t32_t + ( ig = NULL ? 0 : orig-> size ) 1511 + ( u_t32_t + ( = NULL ? 0 :l-> size ) 1512 + ( u_t32_t ) 1513 + ( u_t32_t ); 1514 i( `CRYPTO_ON ( v )) { 1515 ad = v -> yo_hd -> `adj_size ( logc . size ); 1516 logc . size + ad ; 1519 i( is_dub || tx = NULL ) { 1520 i(( t = 1521 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1522 ( t ); 1524 i(( t = `__os_mloc ( v , 1525 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1526 ( t ); 1527 #ifde DIAGNOSTIC 1528 i(( t = 1529 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1530 `__os_ ( v , ); 1531 ( t ); 1534 logc . da = ->data; 1537 i( ad > 0) 1538 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1540 bp = logc . da ; 1542 `LOGCOPY_32 ( v , bp , & y ); 1543 bp +( y ); 1545 `LOGCOPY_32 ( v , bp , & txn_num ); 1546 bp +( txn_num ); 1548 `LOGCOPY_FROMLSN ( v , bp , lp ); 1549 bp +( DB_LSN ); 1551 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1552 `LOGCOPY_32 ( v , bp , & ump ); 1553 bp +( ump ); 1555 ump = ( u_t32_t ) pgno ; 1556 `LOGCOPY_32 ( v , bp , & ump ); 1557 bp +( ump ); 1559 i( l ! NULL ) { 1560 i( tx ! NULL ) { 1561 LOG * = v -> lg_hd -> gfo . imy ; 1562 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1563 `__log_check_ge_l ( v , dbp , l ) != 0)) 1564 ( t ); 1566 `LOGCOPY_FROMLSN ( v , bp , l ); 1568 `memt ( bp , 0, (* l )); 1569 bp +(* l ); 1571 `LOGCOPY_32 ( v , bp , & dx ); 1572 bp +( dx ); 1574 `LOGCOPY_32 ( v , bp , & isded ); 1575 bp +( isded ); 1577 i( ig = NULL ) { 1578 zo = 0; 1579 `LOGCOPY_32 ( v , bp , & zo ); 1580 bp +( u_t32_t ); 1582 `LOGCOPY_32 ( v , bp , & ig -> size ); 1583 bp +( ig -> size ); 1584 `memy ( bp , ig -> da , orig-> size ); 1585 bp + ig -> size ; 1588 i( = NULL ) { 1589 zo = 0; 1590 `LOGCOPY_32 ( v , bp , & zo ); 1591 bp +( u_t32_t ); 1593 `LOGCOPY_32 ( v , bp , & -> size ); 1594 bp +( -> size ); 1595 `memy ( bp , -> da ,l-> size ); 1596 bp + -> size ; 1599 `LOGCOPY_32 ( v , bp , & efix ); 1600 bp +( efix ); 1602 `LOGCOPY_32 ( v , bp , & suffix ); 1603 bp +( suffix ); 1605 `DB_ASSERT ( v , 1606 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1608 i( is_dub || tx = NULL ) { 1609 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1610 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1611 * lp = * p ; 1612 i( p ! t_lp ) 1613 * t_lp = * p ; 1616 t = 0; 1617 #ifde DIAGNOSTIC 1622 `memy ( -> da , logc .da,ogc. size ); 1623 y | DB_debug_FLAG ; 1624 `LOGCOPY_32 ( v , logc . da , & y ); 1626 i(! `IS_REP_CLIENT ( v )) 1627 t = `__log_put ( v , 1628 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1630 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1631 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1632 `LSN_NOT_LOGGED (* t_lp ); 1635 #ifde LOG_DIAGNOSTIC 1636 i( t != 0) 1637 () `__bam__t ( v , 1638 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1641 #ifde DIAGNOSTIC 1642 `__os_ ( v , logc . da ); 1644 i( is_dub || tx = NULL ) 1645 `__os_ ( v , logc . da ); 1647 ( t ); 1648 } } 1655 $__bam_ro_ad ( v , db , td , cbuf , g ) 1656 ENV * v ; 1657 DB ** db ; 1658 * td ; 1659 * cbuf ; 1660 __bam_ro_gs ** g ; 1662 __bam_ro_gs * gp ; 1663 u_t32_t ump ; 1664 u_t8_t * bp ; 1665 t ; 1667 i(( t = `__os_mloc ( v , 1668 ( __bam_ro_gs + ( DB_TXN ), & gp )) != 0) 1669 ( t ); 1670 bp = cbuf ; 1671 gp -> tx = ( DB_TXN *)&argp[1]; 1672 `memt ( gp -> tx , 0, ( DB_TXN )); 1674 gp -> tx -> td =d; 1675 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1676 bp +( gp -> ty ); 1678 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1679 bp +( gp -> tx -> txnid ); 1681 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1682 bp +( DB_LSN ); 1684 `LOGCOPY_32 ( v , & ump , bp ); 1685 gp -> feid = ( t32_t ) ump ; 1686 bp +( ump ); 1687 i( db ! NULL ) { 1688 * db = NULL ; 1689 t = `__dbg_id_to_db ( 1690 v , gp -> tx , db ,rgp-> feid , 1); 1693 `LOGCOPY_32 ( v , & ump , bp ); 1694 gp -> ma_pgno = ( db_pgno_t ) ump ; 1695 bp +( ump ); 1697 `LOGCOPY_32 ( v , & ump , bp ); 1698 gp -> ro_pgno = ( db_pgno_t ) ump ; 1699 bp +( ump ); 1701 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1702 bp +( DB_LSN ); 1704 * g = gp ; 1705 ( t ); 1706 } } 1713 $__bam_ro_log ( dbp , tx , t_lp , ags , ma_pgno , ro_pgno , ma_l ) 1714 DB * dbp ; 1715 DB_TXN * tx ; 1716 DB_LSN * t_lp ; 1717 u_t32_t ags ; 1718 db_pgno_t ma_pgno ; 1719 db_pgno_t ro_pgno ; 1720 DB_LSN * ma_l ; 1722 DBT logc ; 1723 DB_LSN * lp , nu_l , * p ; 1724 DB_TXNLOGREC * ; 1725 ENV * v ; 1726 u_t32_t ump , y , txn_num ; 1727 u_t ad ; 1728 u_t8_t * bp ; 1729 is_dub , t ; 1731 `COMPQUIET ( , NULL ); 1733 v = dbp ->env; 1734 p = t_lp ; 1735 y = DB___bam_ro ; 1736 ad = 0; 1737 t = 0; 1739 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1740 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1741 i( tx = NULL ) 1743 is_dub = 0; 1745 is_dub = 1; 1747 i( tx = NULL ) { 1748 txn_num = 0; 1749 lp = & nu_l ; 1750 nu_l . fe =u_l. offt = 0; 1752 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1753 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1754 ( t ); 1761 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1762 txn_num = tx -> txnid ; 1765 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1766 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1767 ( t = `__dbg_zy_id ( dbp )) != 0) 1768 ( t ); 1770 logc . size = ( y + ( txn_num + ( DB_LSN ) 1771 + ( u_t32_t ) 1772 + ( u_t32_t ) 1773 + ( u_t32_t ) 1774 + (* ma_l ); 1775 i( `CRYPTO_ON ( v )) { 1776 ad = v -> yo_hd -> `adj_size ( logc . size ); 1777 logc . size + ad ; 1780 i( is_dub || tx = NULL ) { 1781 i(( t = 1782 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1783 ( t ); 1785 i(( t = `__os_mloc ( v , 1786 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1787 ( t ); 1788 #ifde DIAGNOSTIC 1789 i(( t = 1790 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1791 `__os_ ( v , ); 1792 ( t ); 1795 logc . da = ->data; 1798 i( ad > 0) 1799 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1801 bp = logc . da ; 1803 `LOGCOPY_32 ( v , bp , & y ); 1804 bp +( y ); 1806 `LOGCOPY_32 ( v , bp , & txn_num ); 1807 bp +( txn_num ); 1809 `LOGCOPY_FROMLSN ( v , bp , lp ); 1810 bp +( DB_LSN ); 1812 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1813 `LOGCOPY_32 ( v , bp , & ump ); 1814 bp +( ump ); 1816 ump = ( u_t32_t ) ma_pgno ; 1817 `LOGCOPY_32 ( v , bp , & ump ); 1818 bp +( ump ); 1820 ump = ( u_t32_t ) ro_pgno ; 1821 `LOGCOPY_32 ( v , bp , & ump ); 1822 bp +( ump ); 1824 i( ma_l ! NULL ) { 1825 i( tx ! NULL ) { 1826 LOG * = v -> lg_hd -> gfo . imy ; 1827 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1828 `__log_check_ge_l ( v , dbp , ma_l ) != 0)) 1829 ( t ); 1831 `LOGCOPY_FROMLSN ( v , bp , ma_l ); 1833 `memt ( bp , 0, (* ma_l )); 1834 bp +(* ma_l ); 1836 `DB_ASSERT ( v , 1837 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1839 i( is_dub || tx = NULL ) { 1840 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1841 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1842 * lp = * p ; 1843 i( p ! t_lp ) 1844 * t_lp = * p ; 1847 t = 0; 1848 #ifde DIAGNOSTIC 1853 `memy ( -> da , logc .da,ogc. size ); 1854 y | DB_debug_FLAG ; 1855 `LOGCOPY_32 ( v , logc . da , & y ); 1857 i(! `IS_REP_CLIENT ( v )) 1858 t = `__log_put ( v , 1859 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1861 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1862 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1863 `LSN_NOT_LOGGED (* t_lp ); 1866 #ifde LOG_DIAGNOSTIC 1867 i( t != 0) 1868 () `__bam_ro_t ( v , 1869 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1872 #ifde DIAGNOSTIC 1873 `__os_ ( v , logc . da ); 1875 i( is_dub || tx = NULL ) 1876 `__os_ ( v , logc . da ); 1878 ( t ); 1879 } } 1886 $__bam_cudj_ad ( v , db , td , cbuf , g ) 1887 ENV * v ; 1888 DB ** db ; 1889 * td ; 1890 * cbuf ; 1891 __bam_cudj_gs ** g ; 1893 __bam_cudj_gs * gp ; 1894 u_t32_t ump ; 1895 u_t8_t * bp ; 1896 t ; 1898 i(( t = `__os_mloc ( v , 1899 ( __bam_cudj_gs + ( DB_TXN ), & gp )) != 0) 1900 ( t ); 1901 bp = cbuf ; 1902 gp -> tx = ( DB_TXN *)&argp[1]; 1903 `memt ( gp -> tx , 0, ( DB_TXN )); 1905 gp -> tx -> td =d; 1906 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1907 bp +( gp -> ty ); 1909 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1910 bp +( gp -> tx -> txnid ); 1912 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1913 bp +( DB_LSN ); 1915 `LOGCOPY_32 ( v , & ump , bp ); 1916 gp -> feid = ( t32_t ) ump ; 1917 bp +( ump ); 1918 i( db ! NULL ) { 1919 * db = NULL ; 1920 t = `__dbg_id_to_db ( 1921 v , gp -> tx , db ,rgp-> feid , 1); 1924 `LOGCOPY_32 ( v , & ump , bp ); 1925 gp -> mode = ( db__mode ) ump ; 1926 bp +( ump ); 1928 `LOGCOPY_32 ( v , & ump , bp ); 1929 gp -> om_pgno = ( db_pgno_t ) ump ; 1930 bp +( ump ); 1932 `LOGCOPY_32 ( v , & ump , bp ); 1933 gp -> to_pgno = ( db_pgno_t ) ump ; 1934 bp +( ump ); 1936 `LOGCOPY_32 ( v , & ump , bp ); 1937 gp -> _pgno = ( db_pgno_t ) ump ; 1938 bp +( ump ); 1940 `LOGCOPY_32 ( v , & gp -> f_dx , bp ); 1941 bp +( gp -> f_dx ); 1943 `LOGCOPY_32 ( v , & gp -> om_dx , bp ); 1944 bp +( gp -> om_dx ); 1946 `LOGCOPY_32 ( v , & gp -> to_dx , bp ); 1947 bp +( gp -> to_dx ); 1949 * g = gp ; 1950 ( t ); 1951 } } 1959 $__bam_cudj_log ( dbp , tx , t_lp , ags , mode , om_pgno , to_pgno , _pgno , f_dx , 1960 om_dx , to_dx ) 1961 DB * dbp ; 1962 DB_TXN * tx ; 1963 DB_LSN * t_lp ; 1964 u_t32_t ags ; 1965 db__mode mode ; 1966 db_pgno_t om_pgno ; 1967 db_pgno_t to_pgno ; 1968 db_pgno_t _pgno ; 1969 u_t32_t f_dx ; 1970 u_t32_t om_dx ; 1971 u_t32_t to_dx ; 1973 DBT logc ; 1974 DB_LSN * lp , nu_l , * p ; 1975 DB_TXNLOGREC * ; 1976 ENV * v ; 1977 u_t32_t ump , y , txn_num ; 1978 u_t ad ; 1979 u_t8_t * bp ; 1980 is_dub , t ; 1982 `COMPQUIET ( , NULL ); 1984 v = dbp ->env; 1985 p = t_lp ; 1986 y = DB___bam_cudj ; 1987 ad = 0; 1988 t = 0; 1990 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1991 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1992 i( tx = NULL ) 1994 is_dub = 0; 1996 is_dub = 1; 1998 i( tx = NULL ) { 1999 txn_num = 0; 2000 lp = & nu_l ; 2001 nu_l . fe =u_l. offt = 0; 2003 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2004 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2005 ( t ); 2012 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2013 txn_num = tx -> txnid ; 2016 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2017 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2018 ( t = `__dbg_zy_id ( dbp )) != 0) 2019 ( t ); 2021 logc . size = ( y + ( txn_num + ( DB_LSN ) 2022 + ( u_t32_t ) 2023 + ( u_t32_t ) 2024 + ( u_t32_t ) 2025 + ( u_t32_t ) 2026 + ( u_t32_t ) 2027 + ( u_t32_t ) 2028 + ( u_t32_t ) 2029 + ( u_t32_t ); 2030 i( `CRYPTO_ON ( v )) { 2031 ad = v -> yo_hd -> `adj_size ( logc . size ); 2032 logc . size + ad ; 2035 i( is_dub || tx = NULL ) { 2036 i(( t = 2037 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2038 ( t ); 2040 i(( t = `__os_mloc ( v , 2041 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2042 ( t ); 2043 #ifde DIAGNOSTIC 2044 i(( t = 2045 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2046 `__os_ ( v , ); 2047 ( t ); 2050 logc . da = ->data; 2053 i( ad > 0) 2054 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2056 bp = logc . da ; 2058 `LOGCOPY_32 ( v , bp , & y ); 2059 bp +( y ); 2061 `LOGCOPY_32 ( v , bp , & txn_num ); 2062 bp +( txn_num ); 2064 `LOGCOPY_FROMLSN ( v , bp , lp ); 2065 bp +( DB_LSN ); 2067 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2068 `LOGCOPY_32 ( v , bp , & ump ); 2069 bp +( ump ); 2071 ump = ( u_t32_t ) mode ; 2072 `LOGCOPY_32 ( v , bp , & ump ); 2073 bp +( ump ); 2075 ump = ( u_t32_t ) om_pgno ; 2076 `LOGCOPY_32 ( v , bp , & ump ); 2077 bp +( ump ); 2079 ump = ( u_t32_t ) to_pgno ; 2080 `LOGCOPY_32 ( v , bp , & ump ); 2081 bp +( ump ); 2083 ump = ( u_t32_t ) _pgno ; 2084 `LOGCOPY_32 ( v , bp , & ump ); 2085 bp +( ump ); 2087 `LOGCOPY_32 ( v , bp , & f_dx ); 2088 bp +( f_dx ); 2090 `LOGCOPY_32 ( v , bp , & om_dx ); 2091 bp +( om_dx ); 2093 `LOGCOPY_32 ( v , bp , & to_dx ); 2094 bp +( to_dx ); 2096 `DB_ASSERT ( v , 2097 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2099 i( is_dub || tx = NULL ) { 2100 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2101 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2102 * lp = * p ; 2103 i( p ! t_lp ) 2104 * t_lp = * p ; 2107 t = 0; 2108 #ifde DIAGNOSTIC 2113 `memy ( -> da , logc .da,ogc. size ); 2114 y | DB_debug_FLAG ; 2115 `LOGCOPY_32 ( v , logc . da , & y ); 2117 i(! `IS_REP_CLIENT ( v )) 2118 t = `__log_put ( v , 2119 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2121 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2122 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2123 `LSN_NOT_LOGGED (* t_lp ); 2126 #ifde LOG_DIAGNOSTIC 2127 i( t != 0) 2128 () `__bam_cudj_t ( v , 2129 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2132 #ifde DIAGNOSTIC 2133 `__os_ ( v , logc . da ); 2135 i( is_dub || tx = NULL ) 2136 `__os_ ( v , logc . da ); 2138 ( t ); 2139 } } 2146 $__bam_rcudj_ad ( v , db , td , cbuf , g ) 2147 ENV * v ; 2148 DB ** db ; 2149 * td ; 2150 * cbuf ; 2151 __bam_rcudj_gs ** g ; 2153 __bam_rcudj_gs * gp ; 2154 u_t32_t ump ; 2155 u_t8_t * bp ; 2156 t ; 2158 i(( t = `__os_mloc ( v , 2159 ( __bam_rcudj_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 gp -> tx -> td =d; 2166 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2167 bp +( gp -> ty ); 2169 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2170 bp +( gp -> tx -> txnid ); 2172 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2173 bp +( DB_LSN ); 2175 `LOGCOPY_32 ( v , & ump , bp ); 2176 gp -> feid = ( t32_t ) ump ; 2177 bp +( ump ); 2178 i( db ! NULL ) { 2179 * db = NULL ; 2180 t = `__dbg_id_to_db ( 2181 v , gp -> tx , db ,rgp-> feid , 1); 2184 `LOGCOPY_32 ( v , & ump , bp ); 2185 gp -> mode = ( _o_g ) ump ; 2186 bp +( ump ); 2188 `LOGCOPY_32 ( v , & ump , bp ); 2189 gp -> ro = ( db_pgno_t ) ump ; 2190 bp +( ump ); 2192 `LOGCOPY_32 ( v , & ump , bp ); 2193 gp -> o = ( db_o_t ) ump ; 2194 bp +( ump ); 2196 `LOGCOPY_32 ( v , & gp -> d , bp ); 2197 bp +( gp -> d ); 2199 * g = gp ; 2200 ( t ); 2201 } } 2208 $__bam_rcudj_log ( dbp , tx , t_lp , ags , mode , ro , o , d ) 2209 DB * dbp ; 2210 DB_TXN * tx ; 2211 DB_LSN * t_lp ; 2212 u_t32_t ags ; 2213 _o_g mode ; 2214 db_pgno_t ro ; 2215 db_o_t o ; 2216 u_t32_t d ; 2218 DBT logc ; 2219 DB_LSN * lp , nu_l , * p ; 2220 DB_TXNLOGREC * ; 2221 ENV * v ; 2222 u_t32_t ump , y , txn_num ; 2223 u_t ad ; 2224 u_t8_t * bp ; 2225 is_dub , t ; 2227 `COMPQUIET ( , NULL ); 2229 v = dbp ->env; 2230 p = t_lp ; 2231 y = DB___bam_rcudj ; 2232 ad = 0; 2233 t = 0; 2235 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2236 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2237 i( tx = NULL ) 2239 is_dub = 0; 2241 is_dub = 1; 2243 i( tx = NULL ) { 2244 txn_num = 0; 2245 lp = & nu_l ; 2246 nu_l . fe =u_l. offt = 0; 2248 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2249 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2250 ( t ); 2257 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2258 txn_num = tx -> txnid ; 2261 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2262 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2263 ( t = `__dbg_zy_id ( dbp )) != 0) 2264 ( t ); 2266 logc . size = ( y + ( txn_num + ( DB_LSN ) 2267 + ( u_t32_t ) 2268 + ( u_t32_t ) 2269 + ( u_t32_t ) 2270 + ( u_t32_t ) 2271 + ( u_t32_t ); 2272 i( `CRYPTO_ON ( v )) { 2273 ad = v -> yo_hd -> `adj_size ( logc . size ); 2274 logc . size + ad ; 2277 i( is_dub || tx = NULL ) { 2278 i(( t = 2279 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2280 ( t ); 2282 i(( t = `__os_mloc ( v , 2283 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2284 ( t ); 2285 #ifde DIAGNOSTIC 2286 i(( t = 2287 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2288 `__os_ ( v , ); 2289 ( t ); 2292 logc . da = ->data; 2295 i( ad > 0) 2296 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2298 bp = logc . da ; 2300 `LOGCOPY_32 ( v , bp , & y ); 2301 bp +( y ); 2303 `LOGCOPY_32 ( v , bp , & txn_num ); 2304 bp +( txn_num ); 2306 `LOGCOPY_FROMLSN ( v , bp , lp ); 2307 bp +( DB_LSN ); 2309 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2310 `LOGCOPY_32 ( v , bp , & ump ); 2311 bp +( ump ); 2313 ump = ( u_t32_t ) mode ; 2314 `LOGCOPY_32 ( v , bp , & ump ); 2315 bp +( ump ); 2317 ump = ( u_t32_t ) ro ; 2318 `LOGCOPY_32 ( v , bp , & ump ); 2319 bp +( ump ); 2321 ump = ( u_t32_t ) o ; 2322 `LOGCOPY_32 ( v , bp , & ump ); 2323 bp +( ump ); 2325 `LOGCOPY_32 ( v , bp , & d ); 2326 bp +( d ); 2328 `DB_ASSERT ( v , 2329 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2331 i( is_dub || tx = NULL ) { 2332 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2333 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2334 * lp = * p ; 2335 i( p ! t_lp ) 2336 * t_lp = * p ; 2339 t = 0; 2340 #ifde DIAGNOSTIC 2345 `memy ( -> da , logc .da,ogc. size ); 2346 y | DB_debug_FLAG ; 2347 `LOGCOPY_32 ( v , logc . da , & y ); 2349 i(! `IS_REP_CLIENT ( v )) 2350 t = `__log_put ( v , 2351 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2353 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2354 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2355 `LSN_NOT_LOGGED (* t_lp ); 2358 #ifde LOG_DIAGNOSTIC 2359 i( t != 0) 2360 () `__bam_rcudj_t ( v , 2361 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2364 #ifde DIAGNOSTIC 2365 `__os_ ( v , logc . da ); 2367 i( is_dub || tx = NULL ) 2368 `__os_ ( v , logc . da ); 2370 ( t ); 2371 } } 2378 $__bam_lk_43_ad ( v , db , td , cbuf , g ) 2379 ENV * v ; 2380 DB ** db ; 2381 * td ; 2382 * cbuf ; 2383 __bam_lk_43_gs ** g ; 2385 __bam_lk_43_gs * gp ; 2386 u_t32_t ump ; 2387 u_t8_t * bp ; 2388 t ; 2390 i(( t = `__os_mloc ( v , 2391 ( __bam_lk_43_gs + ( DB_TXN ), & gp )) != 0) 2392 ( t ); 2393 bp = cbuf ; 2394 gp -> tx = ( DB_TXN *)&argp[1]; 2395 `memt ( gp -> tx , 0, ( DB_TXN )); 2397 gp -> tx -> td =d; 2398 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2399 bp +( gp -> ty ); 2401 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2402 bp +( gp -> tx -> txnid ); 2404 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2405 bp +( DB_LSN ); 2407 `LOGCOPY_32 ( v , & ump , bp ); 2408 gp -> feid = ( t32_t ) ump ; 2409 bp +( ump ); 2410 i( db ! NULL ) { 2411 * db = NULL ; 2412 t = `__dbg_id_to_db ( 2413 v , gp -> tx , db ,rgp-> feid , 1); 2416 `LOGCOPY_32 ( v , & ump , bp ); 2417 gp -> pgno = ( db_pgno_t ) ump ; 2418 bp +( ump ); 2420 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 2421 bp +( DB_LSN ); 2423 `LOGCOPY_32 ( v , & ump , bp ); 2424 gp -> ev = ( db_pgno_t ) ump ; 2425 bp +( ump ); 2427 `LOGCOPY_TOLSN ( v , & gp -> l_ev , bp ); 2428 bp +( DB_LSN ); 2430 `LOGCOPY_32 ( v , & ump , bp ); 2431 gp -> xt = ( db_pgno_t ) ump ; 2432 bp +( ump ); 2434 `LOGCOPY_TOLSN ( v , & gp -> l_xt , bp ); 2435 bp +( DB_LSN ); 2437 * g = gp ; 2438 ( t ); 2439 } } 2446 $__bam_lk_ad ( v , db , td , cbuf , g ) 2447 ENV * v ; 2448 DB ** db ; 2449 * td ; 2450 * cbuf ; 2451 __bam_lk_gs ** g ; 2453 __bam_lk_gs * gp ; 2454 u_t32_t ump ; 2455 u_t8_t * bp ; 2456 t ; 2458 i(( t = `__os_mloc ( v , 2459 ( __bam_lk_gs + ( DB_TXN ), & gp )) != 0) 2460 ( t ); 2461 bp = cbuf ; 2462 gp -> tx = ( DB_TXN *)&argp[1]; 2463 `memt ( gp -> tx , 0, ( DB_TXN )); 2465 gp -> tx -> td =d; 2466 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2467 bp +( gp -> ty ); 2469 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2470 bp +( gp -> tx -> txnid ); 2472 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2473 bp +( DB_LSN ); 2475 `LOGCOPY_32 ( v , & ump , bp ); 2476 gp -> feid = ( t32_t ) ump ; 2477 bp +( ump ); 2478 i( db ! NULL ) { 2479 * db = NULL ; 2480 t = `__dbg_id_to_db ( 2481 v , gp -> tx , db ,rgp-> feid , 1); 2484 `LOGCOPY_32 ( v , & ump , bp ); 2485 gp -> pgno = ( db_pgno_t ) ump ; 2486 bp +( ump ); 2488 `LOGCOPY_32 ( v , & ump , bp ); 2489 gp -> w_pgno = ( db_pgno_t ) ump ; 2490 bp +( ump ); 2492 `LOGCOPY_32 ( v , & ump , bp ); 2493 gp -> ev = ( db_pgno_t ) ump ; 2494 bp +( ump ); 2496 `LOGCOPY_TOLSN ( v , & gp -> l_ev , bp ); 2497 bp +( DB_LSN ); 2499 `LOGCOPY_32 ( v , & ump , bp ); 2500 gp -> xt = ( db_pgno_t ) ump ; 2501 bp +( ump ); 2503 `LOGCOPY_TOLSN ( v , & gp -> l_xt , bp ); 2504 bp +( DB_LSN ); 2506 * g = gp ; 2507 ( t ); 2508 } } 2516 $__bam_lk_log ( dbp , tx , t_lp , ags , pgno , w_pgno , ev , l_ev , xt , 2517 l_xt ) 2518 DB * dbp ; 2519 DB_TXN * tx ; 2520 DB_LSN * t_lp ; 2521 u_t32_t ags ; 2522 db_pgno_t pgno ; 2523 db_pgno_t w_pgno ; 2524 db_pgno_t ev ; 2525 DB_LSN * l_ev ; 2526 db_pgno_t xt ; 2527 DB_LSN * l_xt ; 2529 DBT logc ; 2530 DB_LSN * lp , nu_l , * p ; 2531 DB_TXNLOGREC * ; 2532 ENV * v ; 2533 u_t32_t ump , y , txn_num ; 2534 u_t ad ; 2535 u_t8_t * bp ; 2536 is_dub , t ; 2538 `COMPQUIET ( , NULL ); 2540 v = dbp ->env; 2541 p = t_lp ; 2542 y = DB___bam_lk ; 2543 ad = 0; 2544 t = 0; 2546 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2547 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2548 i( tx = NULL ) 2550 is_dub = 0; 2552 is_dub = 1; 2554 i( tx = NULL ) { 2555 txn_num = 0; 2556 lp = & nu_l ; 2557 nu_l . fe =u_l. offt = 0; 2559 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2560 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2561 ( t ); 2568 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2569 txn_num = tx -> txnid ; 2572 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2573 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2574 ( t = `__dbg_zy_id ( dbp )) != 0) 2575 ( t ); 2577 logc . size = ( y + ( txn_num + ( DB_LSN ) 2578 + ( u_t32_t ) 2579 + ( u_t32_t ) 2580 + ( u_t32_t ) 2581 + ( u_t32_t ) 2582 + (* l_ev ) 2583 + ( u_t32_t ) 2584 + (* l_xt ); 2585 i( `CRYPTO_ON ( v )) { 2586 ad = v -> yo_hd -> `adj_size ( logc . size ); 2587 logc . size + ad ; 2590 i( is_dub || tx = NULL ) { 2591 i(( t = 2592 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2593 ( t ); 2595 i(( t = `__os_mloc ( v , 2596 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2597 ( t ); 2598 #ifde DIAGNOSTIC 2599 i(( t = 2600 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2601 `__os_ ( v , ); 2602 ( t ); 2605 logc . da = ->data; 2608 i( ad > 0) 2609 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2611 bp = logc . da ; 2613 `LOGCOPY_32 ( v , bp , & y ); 2614 bp +( y ); 2616 `LOGCOPY_32 ( v , bp , & txn_num ); 2617 bp +( txn_num ); 2619 `LOGCOPY_FROMLSN ( v , bp , lp ); 2620 bp +( DB_LSN ); 2622 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2623 `LOGCOPY_32 ( v , bp , & ump ); 2624 bp +( ump ); 2626 ump = ( u_t32_t ) pgno ; 2627 `LOGCOPY_32 ( v , bp , & ump ); 2628 bp +( ump ); 2630 ump = ( u_t32_t ) w_pgno ; 2631 `LOGCOPY_32 ( v , bp , & ump ); 2632 bp +( ump ); 2634 ump = ( u_t32_t ) ev ; 2635 `LOGCOPY_32 ( v , bp , & ump ); 2636 bp +( ump ); 2638 i( l_ev ! NULL ) { 2639 i( tx ! NULL ) { 2640 LOG * = v -> lg_hd -> gfo . imy ; 2641 i( `LOG_COMPARE ( l_ev , & -> l >0 && ( t = 2642 `__log_check_ge_l ( v , dbp , l_ev ) != 0)) 2643 ( t ); 2645 `LOGCOPY_FROMLSN ( v , bp , l_ev ); 2647 `memt ( bp , 0, (* l_ev )); 2648 bp +(* l_ev ); 2650 ump = ( u_t32_t ) xt ; 2651 `LOGCOPY_32 ( v , bp , & ump ); 2652 bp +( ump ); 2654 i( l_xt ! NULL ) { 2655 i( tx ! NULL ) { 2656 LOG * = v -> lg_hd -> gfo . imy ; 2657 i( `LOG_COMPARE ( l_xt , & -> l >0 && ( t = 2658 `__log_check_ge_l ( v , dbp , l_xt ) != 0)) 2659 ( t ); 2661 `LOGCOPY_FROMLSN ( v , bp , l_xt ); 2663 `memt ( bp , 0, (* l_xt )); 2664 bp +(* l_xt ); 2666 `DB_ASSERT ( v , 2667 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2669 i( is_dub || tx = NULL ) { 2670 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2671 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2672 * lp = * p ; 2673 i( p ! t_lp ) 2674 * t_lp = * p ; 2677 t = 0; 2678 #ifde DIAGNOSTIC 2683 `memy ( -> da , logc .da,ogc. size ); 2684 y | DB_debug_FLAG ; 2685 `LOGCOPY_32 ( v , logc . da , & y ); 2687 i(! `IS_REP_CLIENT ( v )) 2688 t = `__log_put ( v , 2689 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2691 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2692 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2693 `LSN_NOT_LOGGED (* t_lp ); 2696 #ifde LOG_DIAGNOSTIC 2697 i( t != 0) 2698 () `__bam_lk_t ( v , 2699 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2702 #ifde DIAGNOSTIC 2703 `__os_ ( v , logc . da ); 2705 i( is_dub || tx = NULL ) 2706 `__os_ ( v , logc . da ); 2708 ( t ); 2709 } } 2716 $__bam_mge_44_ad ( v , db , td , cbuf , g ) 2717 ENV * v ; 2718 DB ** db ; 2719 * td ; 2720 * cbuf ; 2721 __bam_mge_44_gs ** g ; 2723 __bam_mge_44_gs * gp ; 2724 u_t32_t ump ; 2725 u_t8_t * bp ; 2726 t ; 2728 i(( t = `__os_mloc ( v , 2729 ( __bam_mge_44_gs + ( DB_TXN ), & gp )) != 0) 2730 ( t ); 2731 bp = cbuf ; 2732 gp -> tx = ( DB_TXN *)&argp[1]; 2733 `memt ( gp -> tx , 0, ( DB_TXN )); 2735 gp -> tx -> td =d; 2736 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2737 bp +( gp -> ty ); 2739 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2740 bp +( gp -> tx -> txnid ); 2742 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2743 bp +( DB_LSN ); 2745 `LOGCOPY_32 ( v , & ump , bp ); 2746 gp -> feid = ( t32_t ) ump ; 2747 bp +( ump ); 2748 i( db ! NULL ) { 2749 * db = NULL ; 2750 t = `__dbg_id_to_db ( 2751 v , gp -> tx , db ,rgp-> feid , 1); 2754 `LOGCOPY_32 ( v , & ump , bp ); 2755 gp -> pgno = ( db_pgno_t ) ump ; 2756 bp +( ump ); 2758 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 2759 bp +( DB_LSN ); 2761 `LOGCOPY_32 ( v , & ump , bp ); 2762 gp -> gno = ( db_pgno_t ) ump ; 2763 bp +( ump ); 2765 `LOGCOPY_TOLSN ( v , & gp -> Ƣ , bp ); 2766 bp +( DB_LSN ); 2768 `memt (& gp -> hdr , 0, (argp->hdr)); 2769 `LOGCOPY_32 ( v ,& gp -> hdr . size , bp ); 2770 bp +( u_t32_t ); 2771 gp -> hdr . da = bp ; 2772 bp + gp -> hdr . size ; 2774 `memt (& gp -> da , 0, (argp->data)); 2775 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 2776 bp +( u_t32_t ); 2777 gp -> da .d bp ; 2778 bp + gp -> da . size ; 2780 `memt (& gp -> d , 0, (argp->ind)); 2781 `LOGCOPY_32 ( v ,& gp -> d . size , bp ); 2782 bp +( u_t32_t ); 2783 gp -> d . da = bp ; 2784 bp + gp -> d . size ; 2786 * g = gp ; 2787 ( t ); 2788 } } 2795 $__bam_mge_ad ( v , db , td , cbuf , g ) 2796 ENV * v ; 2797 DB ** db ; 2798 * td ; 2799 * cbuf ; 2800 __bam_mge_gs ** g ; 2802 __bam_mge_gs * gp ; 2803 u_t32_t ump ; 2804 u_t8_t * bp ; 2805 t ; 2807 i(( t = `__os_mloc ( v , 2808 ( __bam_mge_gs + ( DB_TXN ), & gp )) != 0) 2809 ( t ); 2810 bp = cbuf ; 2811 gp -> tx = ( DB_TXN *)&argp[1]; 2812 `memt ( gp -> tx , 0, ( DB_TXN )); 2814 gp -> tx -> td =d; 2815 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2816 bp +( gp -> ty ); 2818 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2819 bp +( gp -> tx -> txnid ); 2821 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2822 bp +( DB_LSN ); 2824 `LOGCOPY_32 ( v , & ump , bp ); 2825 gp -> feid = ( t32_t ) ump ; 2826 bp +( ump ); 2827 i( db ! NULL ) { 2828 * db = NULL ; 2829 t = `__dbg_id_to_db ( 2830 v , gp -> tx , db ,rgp-> feid , 1); 2833 `LOGCOPY_32 ( v , & ump , bp ); 2834 gp -> pgno = ( db_pgno_t ) ump ; 2835 bp +( ump ); 2837 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 2838 bp +( DB_LSN ); 2840 `LOGCOPY_32 ( v , & ump , bp ); 2841 gp -> gno = ( db_pgno_t ) ump ; 2842 bp +( ump ); 2844 `LOGCOPY_TOLSN ( v , & gp -> Ƣ , bp ); 2845 bp +( DB_LSN ); 2847 `memt (& gp -> hdr , 0, (argp->hdr)); 2848 `LOGCOPY_32 ( v ,& gp -> hdr . size , bp ); 2849 bp +( u_t32_t ); 2850 gp -> hdr . da = bp ; 2851 bp + gp -> hdr . size ; 2853 `memt (& gp -> da , 0, (argp->data)); 2854 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 2855 bp +( u_t32_t ); 2856 gp -> da .d bp ; 2857 bp + gp -> da . size ; 2858 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 2859 t_t ; 2860 i(( t_t = `__db_gesw (* db , 2861 ( PAGE *) gp -> hdr . da , ( size_t rgp->hdr. size , 2862 & gp -> da , 1)) != 0) 2863 ( t_t ); 2866 `LOGCOPY_32 ( v , & ump , bp ); 2867 gp -> pg_cy = ( t32_t ) ump ; 2868 bp +( ump ); 2870 * g = gp ; 2871 ( t ); 2872 } } 2880 $__bam_mge_log ( dbp , tx , t_lp , ags , pgno , l , gno , Ƣ , hdr , 2881 da , pg_cy ) 2882 DB * dbp ; 2883 DB_TXN * tx ; 2884 DB_LSN * t_lp ; 2885 u_t32_t ags ; 2886 db_pgno_t pgno ; 2887 DB_LSN * l ; 2888 db_pgno_t gno ; 2889 DB_LSN * Ƣ ; 2890 cڡ DBT * hdr ; 2891 cڡ DBT * da ; 2892 t32_t pg_cy ; 2894 DBT logc ; 2895 DB_LSN * lp , nu_l , * p ; 2896 DB_TXNLOGREC * ; 2897 ENV * v ; 2898 u_t32_t zo , ump , y , txn_num ; 2899 u_t ad ; 2900 u_t8_t * bp ; 2901 is_dub , t ; 2903 `COMPQUIET ( , NULL ); 2905 v = dbp ->env; 2906 p = t_lp ; 2907 y = DB___bam_mge ; 2908 ad = 0; 2909 t = 0; 2911 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2912 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2913 i( tx = NULL ) 2915 is_dub = 0; 2917 is_dub = 1; 2919 i( tx = NULL ) { 2920 txn_num = 0; 2921 lp = & nu_l ; 2922 nu_l . fe =u_l. offt = 0; 2924 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2925 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2926 ( t ); 2933 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2934 txn_num = tx -> txnid ; 2937 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2938 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2939 ( t = `__dbg_zy_id ( dbp )) != 0) 2940 ( t ); 2942 logc . size = ( y + ( txn_num + ( DB_LSN ) 2943 + ( u_t32_t ) 2944 + ( u_t32_t ) 2945 + (* l ) 2946 + ( u_t32_t ) 2947 + (* Ƣ ) 2948 + ( u_t32_t + ( hdr = NULL ? 0 : hdr-> size ) 2949 + ( u_t32_t + ( da = NULL ? 0 : da-> size ) 2950 + ( u_t32_t ); 2951 i( `CRYPTO_ON ( v )) { 2952 ad = v -> yo_hd -> `adj_size ( logc . size ); 2953 logc . size + ad ; 2956 i( is_dub || tx = NULL ) { 2957 i(( t = 2958 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2959 ( t ); 2961 i(( t = `__os_mloc ( v , 2962 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2963 ( t ); 2964 #ifde DIAGNOSTIC 2965 i(( t = 2966 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2967 `__os_ ( v , ); 2968 ( t ); 2971 logc . da = ->data; 2974 i( ad > 0) 2975 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2977 bp = logc . da ; 2979 `LOGCOPY_32 ( v , bp , & y ); 2980 bp +( y ); 2982 `LOGCOPY_32 ( v , bp , & txn_num ); 2983 bp +( txn_num ); 2985 `LOGCOPY_FROMLSN ( v , bp , lp ); 2986 bp +( DB_LSN ); 2988 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2989 `LOGCOPY_32 ( v , bp , & ump ); 2990 bp +( ump ); 2992 ump = ( u_t32_t ) pgno ; 2993 `LOGCOPY_32 ( v , bp , & ump ); 2994 bp +( ump ); 2996 i( l ! NULL ) { 2997 i( tx ! NULL ) { 2998 LOG * = v -> lg_hd -> gfo . imy ; 2999 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 3000 `__log_check_ge_l ( v , dbp , l ) != 0)) 3001 ( t ); 3003 `LOGCOPY_FROMLSN ( v , bp , l ); 3005 `memt ( bp , 0, (* l )); 3006 bp +(* l ); 3008 ump = ( u_t32_t ) gno ; 3009 `LOGCOPY_32 ( v , bp , & ump ); 3010 bp +( ump ); 3012 i( Ƣ ! NULL ) { 3013 i( tx ! NULL ) { 3014 LOG * = v -> lg_hd -> gfo . imy ; 3015 i( `LOG_COMPARE ( Ƣ , & -> l >0 && ( t = 3016 `__log_check_ge_l ( v , dbp , Ƣ ) != 0)) 3017 ( t ); 3019 `LOGCOPY_FROMLSN ( v , bp , Ƣ ); 3021 `memt ( bp , 0, (* Ƣ )); 3022 bp +(* Ƣ ); 3024 i( hdr = NULL ) { 3025 zo = 0; 3026 `LOGCOPY_32 ( v , bp , & zo ); 3027 bp +( u_t32_t ); 3029 `LOGCOPY_32 ( v , bp , & hdr -> size ); 3030 bp +( hdr -> size ); 3031 `memy ( bp , hdr -> da , hdr-> size ); 3032 i( `LOG_SWAPPED ( v )) 3033 i(( t = `__db_gesw ( dbp , 3034 ( PAGE *) bp , ( size_t ) hdr -> size , ( DBT *) da , 0)) != 0) 3035 ( t ); 3036 bp + hdr -> size ; 3039 i( da = NULL ) { 3040 zo = 0; 3041 `LOGCOPY_32 ( v , bp , & zo ); 3042 bp +( u_t32_t ); 3044 `LOGCOPY_32 ( v , bp , & da -> size ); 3045 bp +( da -> size ); 3046 `memy ( bp , da ->da, da-> size ); 3047 i( `LOG_SWAPPED ( v && `F_ISSET ( da , DB_DBT_APPMALLOC )) 3048 `__os_ ( v , da ->data); 3049 bp + da -> size ; 3052 ump = ( u_t32_t ) pg_cy ; 3053 `LOGCOPY_32 ( v , bp , & ump ); 3054 bp +( ump ); 3056 `DB_ASSERT ( v , 3057 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 3059 i( is_dub || tx = NULL ) { 3060 i(( t = `__log_put ( v , p ,( DBT *)& logc , 3061 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 3062 * lp = * p ; 3063 i( p ! t_lp ) 3064 * t_lp = * p ; 3067 t = 0; 3068 #ifde DIAGNOSTIC 3073 `memy ( -> da , logc .da,ogc. size ); 3074 y | DB_debug_FLAG ; 3075 `LOGCOPY_32 ( v , logc . da , & y ); 3077 i(! `IS_REP_CLIENT ( v )) 3078 t = `__log_put ( v , 3079 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 3081 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 3082 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 3083 `LSN_NOT_LOGGED (* t_lp ); 3086 #ifde LOG_DIAGNOSTIC 3087 i( t != 0) 3088 () `__bam_mge_t ( v , 3089 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 3092 #ifde DIAGNOSTIC 3093 `__os_ ( v , logc . da ); 3095 i( is_dub || tx = NULL ) 3096 `__os_ ( v , logc . da ); 3098 ( t ); 3099 } } 3106 $__bam_pgno_ad ( v , db , td , cbuf , g ) 3107 ENV * v ; 3108 DB ** db ; 3109 * td ; 3110 * cbuf ; 3111 __bam_pgno_gs ** g ; 3113 __bam_pgno_gs * gp ; 3114 u_t32_t ump ; 3115 u_t8_t * bp ; 3116 t ; 3118 i(( t = `__os_mloc ( v , 3119 ( __bam_pgno_gs + ( DB_TXN ), & gp )) != 0) 3120 ( t ); 3121 bp = cbuf ; 3122 gp -> tx = ( DB_TXN *)&argp[1]; 3123 `memt ( gp -> tx , 0, ( DB_TXN )); 3125 gp -> tx -> td =d; 3126 `LOGCOPY_32 ( v , & gp -> ty , bp ); 3127 bp +( gp -> ty ); 3129 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 3130 bp +( gp -> tx -> txnid ); 3132 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 3133 bp +( DB_LSN ); 3135 `LOGCOPY_32 ( v , & ump , bp ); 3136 gp -> feid = ( t32_t ) ump ; 3137 bp +( ump ); 3138 i( db ! NULL ) { 3139 * db = NULL ; 3140 t = `__dbg_id_to_db ( 3141 v , gp -> tx , db ,rgp-> feid , 1); 3144 `LOGCOPY_32 ( v , & ump , bp ); 3145 gp -> pgno = ( db_pgno_t ) ump ; 3146 bp +( ump ); 3148 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 3149 bp +( DB_LSN ); 3151 `LOGCOPY_32 ( v , & gp -> dx , bp ); 3152 bp +( gp -> dx ); 3154 `LOGCOPY_32 ( v , & ump , bp ); 3155 gp -> gno = ( db_pgno_t ) ump ; 3156 bp +( ump ); 3158 `LOGCOPY_32 ( v , & ump , bp ); 3159 gp -> gno = ( db_pgno_t ) ump ; 3160 bp +( ump ); 3162 * g = gp ; 3163 ( t ); 3164 } } 3172 $__bam_pgno_log ( dbp , tx , t_lp , ags , pgno , l , dx , gno , gno ) 3173 DB * dbp ; 3174 DB_TXN * tx ; 3175 DB_LSN * t_lp ; 3176 u_t32_t ags ; 3177 db_pgno_t pgno ; 3178 DB_LSN * l ; 3179 u_t32_t dx ; 3180 db_pgno_t gno ; 3181 db_pgno_t gno ; 3183 DBT logc ; 3184 DB_LSN * lp , nu_l , * p ; 3185 DB_TXNLOGREC * ; 3186 ENV * v ; 3187 u_t32_t ump , y , txn_num ; 3188 u_t ad ; 3189 u_t8_t * bp ; 3190 is_dub , t ; 3192 `COMPQUIET ( , NULL ); 3194 v = dbp ->env; 3195 p = t_lp ; 3196 y = DB___bam_pgno ; 3197 ad = 0; 3198 t = 0; 3200 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 3201 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 3202 i( tx = NULL ) 3204 is_dub = 0; 3206 is_dub = 1; 3208 i( tx = NULL ) { 3209 txn_num = 0; 3210 lp = & nu_l ; 3211 nu_l . fe =u_l. offt = 0; 3213 i( `TAILQ_FIRST (& tx -> kids ! NULL && 3214 ( t = `__txn_aivekids ( v , y , tx )) != 0) 3215 ( t ); 3222 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 3223 txn_num = tx -> txnid ; 3226 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 3227 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 3228 ( t = `__dbg_zy_id ( dbp )) != 0) 3229 ( t ); 3231 logc . size = ( y + ( txn_num + ( DB_LSN ) 3232 + ( u_t32_t ) 3233 + ( u_t32_t ) 3234 + (* l ) 3235 + ( u_t32_t ) 3236 + ( u_t32_t ) 3237 + ( u_t32_t ); 3238 i( `CRYPTO_ON ( v )) { 3239 ad = v -> yo_hd -> `adj_size ( logc . size ); 3240 logc . size + ad ; 3243 i( is_dub || tx = NULL ) { 3244 i(( t = 3245 `__os_mloc ( v , logc . size , &logc. da )) != 0) 3246 ( t ); 3248 i(( t = `__os_mloc ( v , 3249 logc . size + ( DB_TXNLOGREC ), & )) != 0) 3250 ( t ); 3251 #ifde DIAGNOSTIC 3252 i(( t = 3253 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 3254 `__os_ ( v , ); 3255 ( t ); 3258 logc . da = ->data; 3261 i( ad > 0) 3262 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 3264 bp = logc . da ; 3266 `LOGCOPY_32 ( v , bp , & y ); 3267 bp +( y ); 3269 `LOGCOPY_32 ( v , bp , & txn_num ); 3270 bp +( txn_num ); 3272 `LOGCOPY_FROMLSN ( v , bp , lp ); 3273 bp +( DB_LSN ); 3275 ump = ( u_t32_t ) dbp -> log_fame -> id ; 3276 `LOGCOPY_32 ( v , bp , & ump ); 3277 bp +( ump ); 3279 ump = ( u_t32_t ) pgno ; 3280 `LOGCOPY_32 ( v , bp , & ump ); 3281 bp +( ump ); 3283 i( l ! NULL ) { 3284 i( tx ! NULL ) { 3285 LOG * = v -> lg_hd -> gfo . imy ; 3286 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 3287 `__log_check_ge_l ( v , dbp , l ) != 0)) 3288 ( t ); 3290 `LOGCOPY_FROMLSN ( v , bp , l ); 3292 `memt ( bp , 0, (* l )); 3293 bp +(* l ); 3295 `LOGCOPY_32 ( v , bp , & dx ); 3296 bp +( dx ); 3298 ump = ( u_t32_t ) gno ; 3299 `LOGCOPY_32 ( v , bp , & ump ); 3300 bp +( ump ); 3302 ump = ( u_t32_t ) gno ; 3303 `LOGCOPY_32 ( v , bp , & ump ); 3304 bp +( ump ); 3306 `DB_ASSERT ( v , 3307 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 3309 i( is_dub || tx = NULL ) { 3310 i(( t = `__log_put ( v , p ,( DBT *)& logc , 3311 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 3312 * lp = * p ; 3313 i( p ! t_lp ) 3314 * t_lp = * p ; 3317 t = 0; 3318 #ifde DIAGNOSTIC 3323 `memy ( -> da , logc .da,ogc. size ); 3324 y | DB_debug_FLAG ; 3325 `LOGCOPY_32 ( v , logc . da , & y ); 3327 i(! `IS_REP_CLIENT ( v )) 3328 t = `__log_put ( v , 3329 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 3331 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 3332 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 3333 `LSN_NOT_LOGGED (* t_lp ); 3336 #ifde LOG_DIAGNOSTIC 3337 i( t != 0) 3338 () `__bam_pgno_t ( v , 3339 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 3342 #ifde DIAGNOSTIC 3343 `__os_ ( v , logc . da ); 3345 i( is_dub || tx = NULL ) 3346 `__os_ ( v , logc . da ); 3348 ( t ); 3349 } } 3355 $__bam__cov ( v , dbp ) 3356 ENV * v ; 3357 DB_DISTAB * dbp ; 3359 t ; 3361 i(( t = `__db_add_covy_t ( v , dbp , 3362 __bam_l_cov , DB___bam_l )) != 0) 3363 ( t ); 3364 i(( t = `__db_add_covy_t ( v , dbp , 3365 __bam_rl_cov , DB___bam_rl )) != 0) 3366 ( t ); 3367 i(( t = `__db_add_covy_t ( v , dbp , 3368 __bam_adj_cov , DB___bam_adj )) != 0) 3369 ( t ); 3370 i(( t = `__db_add_covy_t ( v , dbp , 3371 __bam_dju_cov , DB___bam_dju )) != 0) 3372 ( t ); 3373 i(( t = `__db_add_covy_t ( v , dbp , 3374 __bam_cd_cov , DB___bam_cd )) != 0) 3375 ( t ); 3376 i(( t = `__db_add_covy_t ( v , dbp , 3377 __bam__cov , DB___bam_ )) != 0) 3378 ( t ); 3379 i(( t = `__db_add_covy_t ( v , dbp , 3380 __bam_ro_cov , DB___bam_ro )) != 0) 3381 ( t ); 3382 i(( t = `__db_add_covy_t ( v , dbp , 3383 __bam_cudj_cov , DB___bam_cudj )) != 0) 3384 ( t ); 3385 i(( t = `__db_add_covy_t ( v , dbp , 3386 __bam_rcudj_cov , DB___bam_rcudj )) != 0) 3387 ( t ); 3388 i(( t = `__db_add_covy_t ( v , dbp , 3389 __bam_lk_cov , DB___bam_lk )) != 0) 3390 ( t ); 3391 i(( t = `__db_add_covy_t ( v , dbp , 3392 __bam_mge_cov , DB___bam_mge )) != 0) 3393 ( t ); 3394 i(( t = `__db_add_covy_t ( v , dbp , 3395 __bam_pgno_cov , DB___bam_pgno )) != 0) 3396 ( t ); 3398 } } @../btree/btree_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/b.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__bam_l_t ( v , db , lp , nud2 , nud3 ) 19 ENV * v ; 20 DBT * db ; 21 DB_LSN * lp ; 22 db_cs nud2 ; 23 * nud3 ; 25 __bam_l_gs * gp ; 26 u_t32_t i ; 27 ch ; 28 t ; 30 nud2 = DB_TXN_PRINT ; 31 nud3 = NULL ; 33 i(( t = 34 `__bam_l_ad ( v , NULL , NULL, 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_ ( v , gp ); 65 } } 72 $__bam_rl_t ( v , db , lp , nud2 , nud3 ) 73 ENV * v ; 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 = 88 `__bam_rl_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 89 ( t ); 90 () `tf ( 92 ( u_lg ) lp -> fe , (u_lgp-> offt , 93 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 94 ( u_lg ) gp -> ty , 95 ( u_lg ) gp -> tx -> txnid , 96 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 97 () `tf ("\tfeid: %ld\n", () gp -> feid ); 98 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 99 () `tf ("\tpgdbt: "); 100 i = 0; i < gp -> pgdbt . size ; i++) { 101 ch = (( u_t8_t *) gp -> pgdbt . da )[ i ]; 102 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 104 () `tf ("\n"); 105 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> ro_pgno ); 106 () `tf ("\c: %lu\n", ( u_lg ) gp -> ec ); 107 () `tf ("\trootent: "); 108 i = 0; i < gp -> roْt . size ; i++) { 109 ch = (( u_t8_t *) gp -> roْt . da )[ i ]; 110 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 112 () `tf ("\n"); 113 () `tf ("\trootlsn: [%lu][%lu]\n", 114 ( u_lg ) gp -> rol . fe , (u_lgrgp->rol. offt ); 115 () `tf ("\n"); 116 `__os_ ( v , gp ); 118 } } 125 $__bam_adj_t ( v , db , lp , nud2 , nud3 ) 126 ENV * v ; 127 DBT * db ; 128 DB_LSN * lp ; 129 db_cs nud2 ; 130 * nud3 ; 132 __bam_adj_gs * gp ; 133 t ; 135 nud2 = DB_TXN_PRINT ; 136 nud3 = NULL ; 138 i(( t = 139 `__bam_adj_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 140 ( t ); 141 () `tf ( 143 ( u_lg ) lp -> fe , (u_lgp-> offt , 144 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 145 ( u_lg ) gp -> ty , 146 ( u_lg ) gp -> tx -> txnid , 147 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 148 () `tf ("\tfeid: %ld\n", () gp -> feid ); 149 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 150 () `tf ("\tlsn: [%lu][%lu]\n", 151 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 152 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 153 () `tf ("\tdx_cy: %lu\n", ( u_lg ) gp -> dx_cy ); 154 () `tf ("\tis_: %lu\n", ( u_lg ) gp -> is_ ); 155 () `tf ("\n"); 156 `__os_ ( v , gp ); 158 } } 165 $__bam_dju_t ( v , db , lp , nud2 , nud3 ) 166 ENV * v ; 167 DBT * db ; 168 DB_LSN * lp ; 169 db_cs nud2 ; 170 * nud3 ; 172 __bam_dju_gs * gp ; 173 t ; 175 nud2 = DB_TXN_PRINT ; 176 nud3 = NULL ; 178 i(( t = 179 `__bam_dju_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 180 ( t ); 181 () `tf ( 183 ( u_lg ) lp -> fe , (u_lgp-> offt , 184 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 185 ( u_lg ) gp -> ty , 186 ( u_lg ) gp -> tx -> txnid , 187 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 188 () `tf ("\tfeid: %ld\n", () gp -> feid ); 189 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 190 () `tf ("\tlsn: [%lu][%lu]\n", 191 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 192 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 193 () `tf ("\dju: %ld\n", () gp -> adju ); 194 () `tf ("\tags: %lu\n", ( u_lg ) gp -> ags ); 195 () `tf ("\n"); 196 `__os_ ( v , gp ); 198 } } 205 $__bam_cd_t ( v , db , lp , nud2 , nud3 ) 206 ENV * v ; 207 DBT * db ; 208 DB_LSN * lp ; 209 db_cs nud2 ; 210 * nud3 ; 212 __bam_cd_gs * gp ; 213 t ; 215 nud2 = DB_TXN_PRINT ; 216 nud3 = NULL ; 218 i(( t = 219 `__bam_cd_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 220 ( t ); 221 () `tf ( 223 ( u_lg ) lp -> fe , (u_lgp-> offt , 224 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 225 ( u_lg ) gp -> ty , 226 ( u_lg ) gp -> tx -> txnid , 227 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 228 () `tf ("\tfeid: %ld\n", () gp -> feid ); 229 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 230 () `tf ("\tlsn: [%lu][%lu]\n", 231 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 232 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 233 () `tf ("\n"); 234 `__os_ ( v , gp ); 236 } } 243 $__bam__t ( v , db , lp , nud2 , nud3 ) 244 ENV * v ; 245 DBT * db ; 246 DB_LSN * lp ; 247 db_cs nud2 ; 248 * nud3 ; 250 __bam__gs * gp ; 251 u_t32_t i ; 252 ch ; 253 t ; 255 nud2 = DB_TXN_PRINT ; 256 nud3 = NULL ; 258 i(( t = 259 `__bam__ad ( v , NULL , NULL, 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 ("\tfeid: %ld\n", () gp -> feid ); 269 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 270 () `tf ("\tlsn: [%lu][%lu]\n", 271 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 272 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 273 () `tf ("\tisded: %lu\n", ( u_lg ) gp -> isded ); 274 () `tf ("\torig: "); 275 i = 0; i < gp -> ig . size ; i++) { 276 ch = (( u_t8_t *) gp -> ig . da )[ i ]; 277 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 279 () `tf ("\n"); 280 () `tf ("\trepl: "); 281 i = 0; i < gp -> . size ; i++) { 282 ch = (( u_t8_t *) gp -> . da )[ i ]; 283 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 285 () `tf ("\n"); 286 () `tf ("\fix: %lu\n", ( u_lg ) gp -> efix ); 287 () `tf ("\tsuffix: %lu\n", ( u_lg ) gp -> suffix ); 288 () `tf ("\n"); 289 `__os_ ( v , gp ); 291 } } 298 $__bam_ro_t ( v , db , lp , nud2 , nud3 ) 299 ENV * v ; 300 DBT * db ; 301 DB_LSN * lp ; 302 db_cs nud2 ; 303 * nud3 ; 305 __bam_ro_gs * gp ; 306 t ; 308 nud2 = DB_TXN_PRINT ; 309 nud3 = NULL ; 311 i(( t = 312 `__bam_ro_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 313 ( t ); 314 () `tf ( 316 ( u_lg ) lp -> fe , (u_lgp-> offt , 317 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 318 ( u_lg ) gp -> ty , 319 ( u_lg ) gp -> tx -> txnid , 320 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 321 () `tf ("\tfeid: %ld\n", () gp -> feid ); 322 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 323 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> ro_pgno ); 324 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 325 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 326 () `tf ("\n"); 327 `__os_ ( v , gp ); 329 } } 336 $__bam_cudj_t ( v , db , lp , nud2 , nud3 ) 337 ENV * v ; 338 DBT * db ; 339 DB_LSN * lp ; 340 db_cs nud2 ; 341 * nud3 ; 343 __bam_cudj_gs * gp ; 344 t ; 346 nud2 = DB_TXN_PRINT ; 347 nud3 = NULL ; 349 i(( t = 350 `__bam_cudj_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 351 ( t ); 352 () `tf ( 354 ( u_lg ) lp -> fe , (u_lgp-> offt , 355 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 356 ( u_lg ) gp -> ty , 357 ( u_lg ) gp -> tx -> txnid , 358 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 359 () `tf ("\tfeid: %ld\n", () gp -> feid ); 360 () `tf ("\tmode: %ld\n", () gp -> mode ); 361 () `tf ("\tom_pgno: %lu\n", ( u_lg ) gp -> om_pgno ); 362 () `tf ("\o_pgno: %lu\n", ( u_lg ) gp -> to_pgno ); 363 () `tf ("\e_pgno: %lu\n", ( u_lg ) gp -> _pgno ); 364 () `tf ("\tf_dx: %lu\n", ( u_lg ) gp -> f_dx ); 365 () `tf ("\tom_dx: %lu\n", ( u_lg ) gp -> om_dx ); 366 () `tf ("\o_dx: %lu\n", ( u_lg ) gp -> to_dx ); 367 () `tf ("\n"); 368 `__os_ ( v , gp ); 370 } } 377 $__bam_rcudj_t ( v , db , lp , nud2 , nud3 ) 378 ENV * v ; 379 DBT * db ; 380 DB_LSN * lp ; 381 db_cs nud2 ; 382 * nud3 ; 384 __bam_rcudj_gs * gp ; 385 t ; 387 nud2 = DB_TXN_PRINT ; 388 nud3 = NULL ; 390 i(( t = 391 `__bam_rcudj_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 392 ( t ); 393 () `tf ( 395 ( u_lg ) lp -> fe , (u_lgp-> offt , 396 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 397 ( u_lg ) gp -> ty , 398 ( u_lg ) gp -> tx -> txnid , 399 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 400 () `tf ("\tfeid: %ld\n", () gp -> feid ); 401 () `tf ("\tmode: %ld\n", () gp -> mode ); 402 () `tf ("\o: %ld\n", () gp -> ro ); 403 () `tf ("\eo: %ld\n", () gp -> o ); 404 () `tf ("\td: %lu\n", ( u_lg ) gp -> d ); 405 () `tf ("\n"); 406 `__os_ ( v , gp ); 408 } } 415 $__bam_lk_43_t ( v , db , lp , nud2 , nud3 ) 416 ENV * v ; 417 DBT * db ; 418 DB_LSN * lp ; 419 db_cs nud2 ; 420 * nud3 ; 422 __bam_lk_43_gs * gp ; 423 t ; 425 nud2 = DB_TXN_PRINT ; 426 nud3 = NULL ; 428 i(( t = 429 `__bam_lk_43_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 430 ( t ); 431 () `tf ( 433 ( u_lg ) lp -> fe , (u_lgp-> offt , 434 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 435 ( u_lg ) gp -> ty , 436 ( u_lg ) gp -> tx -> txnid , 437 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 438 () `tf ("\tfeid: %ld\n", () gp -> feid ); 439 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 440 () `tf ("\tlsn: [%lu][%lu]\n", 441 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 442 () `tf ("\v: %lu\n", ( u_lg ) gp -> ev ); 443 () `tf ("\tlsn_prev: [%lu][%lu]\n", 444 ( u_lg ) gp -> l_ev . fe , (u_lgrgp->l_ev. offt ); 445 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 446 () `tf ("\tlsn_next: [%lu][%lu]\n", 447 ( u_lg ) gp -> l_xt . fe , (u_lgrgp->l_xt. offt ); 448 () `tf ("\n"); 449 `__os_ ( v , gp ); 451 } } 458 $__bam_lk_t ( v , db , lp , nud2 , nud3 ) 459 ENV * v ; 460 DBT * db ; 461 DB_LSN * lp ; 462 db_cs nud2 ; 463 * nud3 ; 465 __bam_lk_gs * gp ; 466 t ; 468 nud2 = DB_TXN_PRINT ; 469 nud3 = NULL ; 471 i(( t = 472 `__bam_lk_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 473 ( t ); 474 () `tf ( 476 ( u_lg ) lp -> fe , (u_lgp-> offt , 477 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 478 ( u_lg ) gp -> ty , 479 ( u_lg ) gp -> tx -> txnid , 480 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 481 () `tf ("\tfeid: %ld\n", () gp -> feid ); 482 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 483 () `tf ("\ew_pgno: %lu\n", ( u_lg ) gp -> w_pgno ); 484 () `tf ("\v: %lu\n", ( u_lg ) gp -> ev ); 485 () `tf ("\tlsn_prev: [%lu][%lu]\n", 486 ( u_lg ) gp -> l_ev . fe , (u_lgrgp->l_ev. offt ); 487 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 488 () `tf ("\tlsn_next: [%lu][%lu]\n", 489 ( u_lg ) gp -> l_xt . fe , (u_lgrgp->l_xt. offt ); 490 () `tf ("\n"); 491 `__os_ ( v , gp ); 493 } } 500 $__bam_mge_44_t ( v , db , lp , nud2 , nud3 ) 501 ENV * v ; 502 DBT * db ; 503 DB_LSN * lp ; 504 db_cs nud2 ; 505 * nud3 ; 507 __bam_mge_44_gs * gp ; 508 u_t32_t i ; 509 ch ; 510 t ; 512 nud2 = DB_TXN_PRINT ; 513 nud3 = NULL ; 515 i(( t = 516 `__bam_mge_44_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 517 ( t ); 518 () `tf ( 520 ( u_lg ) lp -> fe , (u_lgp-> offt , 521 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 522 ( u_lg ) gp -> ty , 523 ( u_lg ) gp -> tx -> txnid , 524 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 525 () `tf ("\tfeid: %ld\n", () gp -> feid ); 526 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 527 () `tf ("\tlsn: [%lu][%lu]\n", 528 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 529 () `tf ("\pgno: %lu\n", ( u_lg ) gp -> gno ); 530 () `tf ("\tnlsn: [%lu][%lu]\n", 531 ( u_lg ) gp -> Ƣ . fe , (u_lgrgp->Ƣ. offt ); 532 () `tf ("\thdr: "); 533 i = 0; i < gp -> hdr . size ; i++) { 534 ch = (( u_t8_t *) gp -> hdr . da )[ i ]; 535 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 537 () `tf ("\n"); 538 () `tf ("\tdata: "); 539 i = 0; i < gp -> da . size ; i++) { 540 ch = (( u_t8_t *) gp -> da .da)[ i ]; 541 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 543 () `tf ("\n"); 544 () `tf ("\tind: "); 545 i = 0; i < gp -> d . size ; i++) { 546 ch = (( u_t8_t *) gp -> d . da )[ i ]; 547 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 549 () `tf ("\n"); 550 () `tf ("\n"); 551 `__os_ ( v , gp ); 553 } } 560 $__bam_mge_t ( v , db , lp , nud2 , nud3 ) 561 ENV * v ; 562 DBT * db ; 563 DB_LSN * lp ; 564 db_cs nud2 ; 565 * nud3 ; 567 __bam_mge_gs * gp ; 568 u_t32_t i ; 569 ch ; 570 t ; 572 nud2 = DB_TXN_PRINT ; 573 nud3 = NULL ; 575 i(( t = 576 `__bam_mge_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 577 ( t ); 578 () `tf ( 580 ( u_lg ) lp -> fe , (u_lgp-> offt , 581 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 582 ( u_lg ) gp -> ty , 583 ( u_lg ) gp -> tx -> txnid , 584 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 585 () `tf ("\tfeid: %ld\n", () gp -> feid ); 586 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 587 () `tf ("\tlsn: [%lu][%lu]\n", 588 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 589 () `tf ("\pgno: %lu\n", ( u_lg ) gp -> gno ); 590 () `tf ("\tnlsn: [%lu][%lu]\n", 591 ( u_lg ) gp -> Ƣ . fe , (u_lgrgp->Ƣ. offt ); 592 () `tf ("\thdr: "); 593 i = 0; i < gp -> hdr . size ; i++) { 594 ch = (( u_t8_t *) gp -> hdr . da )[ i ]; 595 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 597 () `tf ("\n"); 598 () `tf ("\tdata: "); 599 i = 0; i < gp -> da . size ; i++) { 600 ch = (( u_t8_t *) gp -> da .da)[ i ]; 601 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 603 () `tf ("\n"); 604 () `tf ("\g_cy: %lu\n", ( u_lg ) gp -> pg_cy ); 605 () `tf ("\n"); 606 `__os_ ( v , gp ); 608 } } 615 $__bam_pgno_t ( v , db , lp , nud2 , nud3 ) 616 ENV * v ; 617 DBT * db ; 618 DB_LSN * lp ; 619 db_cs nud2 ; 620 * nud3 ; 622 __bam_pgno_gs * gp ; 623 t ; 625 nud2 = DB_TXN_PRINT ; 626 nud3 = NULL ; 628 i(( t = 629 `__bam_pgno_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 630 ( t ); 631 () `tf ( 633 ( u_lg ) lp -> fe , (u_lgp-> offt , 634 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 635 ( u_lg ) gp -> ty , 636 ( u_lg ) gp -> tx -> txnid , 637 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 638 () `tf ("\tfeid: %ld\n", () gp -> feid ); 639 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 640 () `tf ("\tlsn: [%lu][%lu]\n", 641 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 642 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 643 () `tf ("\tgno: %lu\n", ( u_lg ) gp -> gno ); 644 () `tf ("\pgno: %lu\n", ( u_lg ) gp -> gno ); 645 () `tf ("\n"); 646 `__os_ ( v , gp ); 648 } } 654 $__bam__t ( v , dbp ) 655 ENV * v ; 656 DB_DISTAB * dbp ; 658 t ; 660 i(( t = `__db_add_covy_t ( v , dbp , 661 __bam_l_t , DB___bam_l )) != 0) 662 ( t ); 663 i(( t = `__db_add_covy_t ( v , dbp , 664 __bam_rl_t , DB___bam_rl )) != 0) 665 ( t ); 666 i(( t = `__db_add_covy_t ( v , dbp , 667 __bam_adj_t , DB___bam_adj )) != 0) 668 ( t ); 669 i(( t = `__db_add_covy_t ( v , dbp , 670 __bam_dju_t , DB___bam_dju )) != 0) 671 ( t ); 672 i(( t = `__db_add_covy_t ( v , dbp , 673 __bam_cd_t , DB___bam_cd )) != 0) 674 ( t ); 675 i(( t = `__db_add_covy_t ( v , dbp , 676 __bam__t , DB___bam_ )) != 0) 677 ( t ); 678 i(( t = `__db_add_covy_t ( v , dbp , 679 __bam_ro_t , DB___bam_ro )) != 0) 680 ( t ); 681 i(( t = `__db_add_covy_t ( v , dbp , 682 __bam_cudj_t , DB___bam_cudj )) != 0) 683 ( t ); 684 i(( t = `__db_add_covy_t ( v , dbp , 685 __bam_rcudj_t , DB___bam_rcudj )) != 0) 686 ( t ); 687 i(( t = `__db_add_covy_t ( v , dbp , 688 __bam_lk_t , DB___bam_lk )) != 0) 689 ( t ); 690 i(( t = `__db_add_covy_t ( v , dbp , 691 __bam_mge_t , DB___bam_mge )) != 0) 692 ( t ); 693 i(( t = `__db_add_covy_t ( v , dbp , 694 __bam_pgno_t , DB___bam_pgno )) != 0) 695 ( t ); 697 } } @../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", `__os_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", `__os_ime (& now , time_buf )); 192 i( ) 195 `__os_yld ( dbv -> v , 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", `__os_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_yld ( dbv -> v , 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 , `__os_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_MODE_700 ); 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 , `__os_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 ); 413 i(( t = dbv -> `t_rmed_d_mode (dbenv, "rwx------")) != 0) { 414 dbv -> `r (dbv, t , "DB_ENV->set_intermediate_dir_mode"); 422 i( log_dp ! NULL && *log_dirp != NULL && 423 ( t = dbv -> `t_lg_d (dbv, * log_dp )) != 0) { 424 dbv -> `r (dbv, t , "DB_ENV->t_lg_d: %s", * log_dp ); 429 i( sswd ! NULL && 430 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 431 dbv -> `r (dbv, t , "DB_ENV->set_encrypt"); 435 which ) { 436 OPEN_ORIGINAL : 442 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 443 ( t = DB_VERSION_MISMATCH || 444 ( t = dbv -> `ݒ (dbv, home , DB_CREATE | 445 DB_INIT_LOG | DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON , 447 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 450 i( log_dp ! NULL && *log_dirp == NULL) 451 () dbv -> `g_lg_d (dbv, (cڡ **) log_dp ); 452 i( da_dp ! NULL && *data_dirp == NULL) 453 () dbv -> `g_da_ds ( 454 dbv , (cڡ ***) da_dp ); 456 OPEN_HOT_BACKUP : 463 i(( t = 464 dbv -> `t_chesize (dbenv, 0, 64 * 1024 * 10, 0)) != 0) { 465 dbv -> `r (dbenv, 466 t , "DB_ENV->t_chesize: %s", home ); 469 i(( t = dbv -> `ݒ (dbv, home , DB_CREATE | 470 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE | 471 DB_RECOVER_FATAL | DB_USE_ENVIRON , 0)) != 0) { 472 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 478 * dbvp = dbv ; 480 } } 487 $db_hbackup_backup_d_n ( dbv , backup_d , log_d , move_maxp , upde , vbo ) 488 DB_ENV * dbv ; 489 * backup_d , * log_d ; 490 * move_maxp , upde , vbo ; 492 ENV * v ; 493 t , ft , t , v ; 494 ** mes , * d , buf [ DB_MAXPATHLEN ], th [DB_MAXPATHLEN]; 496 v = dbv ->env; 499 i( log_d ! NULL ) { 500 i(( size_t ) `tf ( buf , (buf), "%s%c%s", 501 backup_d , PATH_SEPARATOR [0] , log_d >( buf )) { 502 dbv -> `rx (dbenv, "%s%c%s:athooong", 503 backup_d , PATH_SEPARATOR [0] , log_d ); 506 d = buf ; 508 d = backup_d ; 511 i(( t = `__os_dli ( v , d , 0, & mes , & ft )) != 0) { 512 i( log_d ! NULL && ! upde ) 514 dbv -> `r (dbv, t , "%s: deyd", d ); 517 t = ft ; --cnt >= 0;) { 521 i( `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) { 522 i( upde ) 526 v = `oi ( mes [ t ] + ( LFPREFIX ) - 1); 527 i(* move_maxp < v ) 528 * move_maxp = v ; 530 i(( size_t ) `tf ( th , (path), "%s%c%s", 531 d , PATH_SEPARATOR [0], mes [ t ]>( th )) { 532 dbv -> `rx (dbenv, "%s%c%s:athooong", 533 d , PATH_SEPARATOR [0], mes [ t ]); 536 i( vbo ) 537 `tf ("%s:emovg %s\n", ogme , th ); 538 i( `__os_uƚk ( v , th , 0) != 0) 542 `__os_d ( v , mes , ft ); 544 i( vbo && * move_maxp != 0) 545 `tf ("%s: highestumberedog fileemoved: %d\n", 546 ogme , * move_maxp ); 549 } } 556 $db_hbackup_ad_da_d ( dbv , home , backup_d , d , vbo , db_cfig ) 557 DB_ENV * dbv ; 558 * home , * backup_d , * d ; 559 vbo , db_cfig ; 561 ENV * v ; 562 t , ft , t ; 563 * bd , ** mes ; 564 buf [ DB_MAXPATHLEN ], bbuf [DB_MAXPATHLEN]; 566 v = dbv ->env; 568 bd = backup_d ; 569 i( db_cfig && d ! home ) { 571 i(( size_t )( t = `tf ( bbuf , (bbuf), "%s%c%s%c", 572 backup_d , PATH_SEPARATOR [0], 573 d , PATH_SEPARATOR [0])>( buf )) { 574 dbv -> `rx (dbenv, "%s%c%s:athooong", 575 backup_d , PATH_SEPARATOR [0], d ); 578 bd = bbuf ; 581 i(( t = `__db_mkth ( v , bd )) != 0) { 582 dbv -> `r (dbv, t , "%s: cn ce", bd ); 586 bd [ t - 1] = '\0'; 589 i(( size_t ) `tf ( buf , (buf), 590 "%s%c%s", home , PATH_SEPARATOR [0], d >( buf )) { 591 dbv -> `rx (dbenv, "%s%c%s:athooong", 592 home , PATH_SEPARATOR [0], d ); 595 d = buf ; 598 i(( t = `__os_dli ( v , d , 0, & mes , & ft )) != 0) { 599 dbv -> `r (dbv, t , "%s: deyd", d ); 602 t = ft ; --cnt >= 0;) { 607 i(! `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) 609 i(! `cmp ( mes [ t ], 610 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1) && 611 `cmp ( mes [ t ], 612 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX) - 1)) 618 i(! db_cfig && 619 ! `cmp ( mes [ t ], "DB_CONFIG", ("DB_CONFIG"))) 623 i( `db_hbackup_da_cy ( dbv , mes [ t ], d , bd , vbo ) != 0) 627 `__os_d ( v , mes , ft ); 630 } } 639 $db_hbackup_ad_log_d ( dbv , home , backup_d , log_d , cy_mp , upde , vbo ) 640 DB_ENV * dbv ; 641 * home , * backup_d , * log_d ; 642 * cy_mp , upde , vbo ; 644 ENV * v ; 645 u_t32_t aag ; 646 t , t , v ; 647 ** beg , ** mes , * backupd , * logd ; 648 om [ DB_MAXPATHLEN ], to [DB_MAXPATHLEN]; 650 v = dbv ->env; 652 i( home ! NULL && log_d != NULL) { 653 i(( size_t ) `tf ( om , (from), "%s%c%s", 654 home , PATH_SEPARATOR [0], log_d >( om )) { 655 dbv -> `rx (dbenv, "%s%c%s:athooong", 656 home , PATH_SEPARATOR [0], log_d ); 659 logd = `rdup ( om ); 660 i(( size_t )( t = `tf ( to , (to), 661 "%s%c%s%c", backup_d , PATH_SEPARATOR [0], 662 log_d , PATH_SEPARATOR [0])>( to )) { 663 dbv -> `rx (dbenv, "%s%c%s:athooong", 664 backup_d , PATH_SEPARATOR [0], log_d ); 667 backupd = `rdup ( to ); 670 i(( t = `__db_mkth ( v , backupd )) != 0) { 671 dbv -> `r (dbv, t , "%s: cn ce", backupd ); 675 backupd [ t - 1] = '\0'; 677 backupd = backup_d ; 678 logd = log_d ; 681 aga : aag = DB_ARCH_LOG ; 687 i( upde ) 688 aag = 0; 690 i(( t = dbv -> `log_chive (dbv, & mes , aag )) != 0) { 691 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 694 i( mes = NULL ) 695 de ; 696 beg = mes ; 697 ; * mes ! NULL ;ames++) { 699 v = `oi (* mes + ( LFPREFIX ) - 1); 700 i(* cy_mp =0 || *cy_m> v ) 701 * cy_mp = v ; 703 i(( size_t ) `tf ( om , (from), "%s%c%s", 704 logd , PATH_SEPARATOR [0], * mes >( om )) { 705 dbv -> `rx (dbenv, "%s%c%s:athooong", 706 logd , PATH_SEPARATOR [0], * mes ); 718 i( upde ) { 719 i(( size_t ) `tf ( to , (to), "%s%c%s", 720 backupd , PATH_SEPARATOR [0], * mes >( to )) { 721 dbv -> `rx (dbenv, "%s%c%s:athooong", 722 backupd , PATH_SEPARATOR [0], * mes ); 725 i( `__os_me ( v , om , to , 1) == 0) { 726 i( vbo ) 727 `tf ("%s: moving %so %s\n", 728 ogme , om , to ); 734 i( `db_hbackup_da_cy ( dbv , * mes , logd , backupd , vbo ) != 0) 737 i( upde ) { 738 i( vbo ) 739 `tf ("%s:emovg %s\n", ogme , om ); 740 i(( t = `__os_uƚk ( v , om , 0)) != 0) { 741 dbv -> `r (dbv, t , 742 "uƚk o%ed", om ); 749 ` ( beg ); 750 de : i( upde ) { 751 upde = 0; 752 aga ; 755 i( vbo && * cy_mp != 0) 756 `tf ("%s:owestumberedog file copied: %d\n", 757 ogme , * cy_mp ); 758 i( logd ! log_d ) 759 ` ( logd ); 760 i( backupd ! backup_d ) 761 ` ( backupd ); 764 } } 771 $db_hbackup_da_cy ( dbv , fe , om_d , to_d , vbo ) 772 DB_ENV * dbv ; 773 * fe , * om_d , * to_d ; 774 vbo ; 776 DB_FH * rfhp , * wfhp ; 777 ENV * v ; 778 size_t , nw ; 779 t ; 780 * buf ; 782 rfhp = wfhp = NULL ; 783 v = dbv ->env; 784 t = 0; 786 i( vbo ) 787 `tf ("%s: cyg %s%c%t%s%c%s\n", ogme , om_d , 788 PATH_SEPARATOR [0], fe , to_d , PATH_SEPARATOR[0], file); 800 i(( buf = `mloc ( MEGABYTE )= NULL ) { 801 dbv -> `r (dbenv, 802 o , "%lu buf㸮loti", ( u_lg ) MEGABYTE ); 807 i( `tf ( buf , MEGABYTE , "%s%c%s", 808 om_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 809 dbv -> `rx (dbenv, 810 "%s%c%s:holg", om_d , PATH_SEPARATOR [0], fe ); 811 r ; 813 i(( t = `__os_ݒ ( v , buf , 0, DB_OSO_RDONLY , 0, & rfhp )) != 0) { 814 dbv -> `r (dbv, t , "%s", buf ); 815 r ; 819 i( `tf ( buf , MEGABYTE , "%s%c%s", 820 to_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 821 dbv -> `rx (dbenv, 822 "%s%c%s:holg", to_d , PATH_SEPARATOR [0], fe ); 823 r ; 825 i(( t = `__os_ݒ ( v , buf , 0, 826 DB_OSO_CREATE | DB_OSO_TRUNC , DB_MODE_600 , & wfhp )) != 0) { 827 dbv -> `r (dbv, t , "%s", buf ); 828 r ; 832 ( t = `__os_ad ( v , rfhp , buf , MEGABYTE , & )) == 0 && 833 > 0) 834 i(( t = `__os_wre ( v , wfhp , buf , , & nw )) != 0) 838 r : t = 1; 840 i( buf ! NULL ) 841 ` ( buf ); 843 i( rfhp ! NULL && `__os_ohd ( v ,fhp) != 0) 844 t = 1; 847 i( wfhp ! NULL ) { 848 i( `__os_fsync ( v , wfhp ) != 0) 849 t = 1; 850 i( `__os_ohd ( v , wfhp ) != 0) 851 t = 1; 853 ( t ); 854 } } 857 $db_hbackup_uge () 859 () `rtf ( dr , "uge: %[-cDuVv]\n\t%s\n", ogme , 861 ( EXIT_FAILURE ); 862 } } 865 $db_hbackup_vsi_check () 867 v_maj , v_m , v_tch ; 870 () `db_vsi (& v_maj , & v_m , & v_tch ); 871 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 872 `rtf ( dr , 874 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 875 v_maj , v_m ); 876 ( EXIT_FAILURE ); 879 } } @../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 -> v ? DB_AUTO_COMMIT : 0), 414 DB_MODE_666 )) != 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 -> v ) && 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 i( txn ! NULL && ( t =xn-> `comm (txn, 0)) != 0) { 543 txn = NULL ; 544 r ; 548 r : rv = 1; 549 i( txn ! NULL ) 550 () txn -> `abt (txn); 554 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 555 dbv -> `r (dbv, t , "DB->close"); 556 rv = 1; 559 i( `G ( hdrbuf ! NULL ) 560 ` ( `G ( hdrbuf )); 561 `G ( hdrbuf NULL ; 563 i( subdb ! NULL ) 564 ` ( subdb ); 565 i( dbty ! DB_RECNO && dbty ! DB_QUEUE && key . da ! NULL ) 566 ` ( key . da ); 567 i( rkey . da ! NULL ) 568 ` ( rkey . da ); 569 ` ( da .data); 571 ( rv ); 572 } } 579 $db_ld_v_ ( dbvp , ldg ) 580 DB_ENV ** dbvp ; 581 LDG * ldg ; 583 DB_ENV * dbv ; 584 t ; 586 i(( t = `db_v_ ( dbvp , 0)) != 0) { 587 `rtf ( dr , 588 "%s: db_v_: %s\n", ldg -> ogme , `db_ ( t )); 589 ( t ); 591 dbv = * dbvp ; 592 dbv -> `t_rfe (dbv, dr ); 593 dbv -> `t_fx (dbv, ldg -> ogme ); 594 i( ldg -> sswd ! NULL && ( t = dbv -> `t_y (dbenv, 595 ldg -> sswd , DB_ENCRYPT_AES )) != 0) { 596 dbv -> `r (dbv, t , "set_passwd"); 597 ( t ); 599 i(( t = `db_ld_db_ ( dbv , ldg -> home ,dg-> che , &ldg-> ive )) != 0) 600 ( t ); 601 dbv -> p_ive = ldg ; 604 } } 611 $db_ld_db_ ( dbv , home , che , is_ive ) 612 DB_ENV * dbv ; 613 * home ; 614 u_t32_t che ; 615 * is_ive ; 617 u_t32_t ags ; 618 t ; 620 * is_ive = 0; 622 ags = DB_USE_ENVIRON | 623 DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN ; 624 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 626 i( t = DB_VERSION_MISMATCH ) 627 r ; 641 `LF_CLR ( DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN ); 642 `LF_SET ( DB_CREATE | DB_PRIVATE ); 643 * is_ive = 1; 644 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 645 dbv -> `r (dbv, t , "set_cachesize"); 648 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 652 r : dbv -> `r (dbv, t , "DB_ENV->open"); 654 } } 656 #FLAG ( me , vue , keywd , ag ) \ 657 i( `rcmp ( me , keywd ) == 0) { \ 658 * vue ) { \ 660 i(( t = dbp -> `t_ags (dbp, ag )) != 0) { \ 661 dbp -> `r (dbp, t , "%s: set_flags: %s", \ 662 `G ( ogme ), me ); \ 663 r ; \ 669 `db_ld_badnum ( dbv ); \ 670 r ; \ 673 } ) 674 #NUMBER ( me , vue , keywd , func , t ) \ 675 i( `rcmp ( me , keywd ) == 0) { \ 676 i(( t = `__db_glg ( dbv , \ 677 NULL , vue , 0, LONG_MAX , & v )) != 0 || \ 678 ( t = dbp -> `func (dbp, ( t ) v )) != 0) \ 679 m ; \ 681 } ) 682 #STRING ( me , vue , keywd , func ) \ 683 i( `rcmp ( me , keywd ) == 0) { \ 684 i(( t = dbp -> `func (dbp, vue [0])) != 0) \ 685 m ; \ 687 } ) 694 #CONFIGURATION_LIST_COMPARE \ 695 `NUMBER ( me , vue , "bt_mkey", t_bt_mkey , u_t32_t ); \ 696 `FLAG ( me , vue , "chksum", DB_CHKSUM ); \ 697 `NUMBER ( me , vue , "db_ld", t_ld , ); \ 698 `NUMBER ( me , vue , "db_gesize", t_gesize , u_t32_t ); \ 699 `FLAG ( me , vue , "duis", DB_DUP ); \ 700 `FLAG ( me , vue , "dupst", DB_DUPSORT ); \ 701 `NUMBER ( me , vue , "exsize", t_q_exsize , u_t32_t ); \ 702 `NUMBER ( me , vue , "h_f", t_h_f , u_t32_t ); \ 703 `NUMBER ( me , vue , "h_m", t_h_m , u_t32_t ); \ 704 `NUMBER ( me , vue , "_n", t__n , u_t32_t ); \ 705 `STRING ( me , vue , "_d", t__d ); \ 706 `FLAG ( me , vue , "um", DB_RECNUM ); \ 707 `FLAG ( me , vue , "numb", DB_RENUMBER ) ) 714 $db_ld_cfigu ( dbv , dbp , p , subdbp , key ) 715 DB_ENV * dbv ; 716 DB * dbp ; 717 ** p , ** subdbp ; 718 * key ; 720 v ; 721 t , vech ; 722 * me , * vue ; 724 ; ( me = * p ! NULL ; *-- vue = vech , ++clp) { 725 i(( vue = `rchr ( me , '=')= NULL ) { 726 dbp -> `rx (dbp, 730 vech = * vue ; 731 * vue ++ = '\0'; 733 i( `rcmp ( me , "database") == 0 || 734 `rcmp ( me , "subdatabase") == 0) { 735 i(* subdbp ! NULL ) 736 ` (* subdbp ); 737 i((* subdbp = `rdup ( vue )= NULL ) { 738 dbp -> `r (dbp, ENOMEM , NULL ); 743 i( `rcmp ( me , "keys") == 0) { 744 i( `rcmp ( vue , "1") == 0) 745 * key = 1; 746 i( `rcmp ( vue , "0") == 0) 747 * key = 0; 749 `db_ld_badnum ( dbv ); 755 CONFIGURATION_LIST_COMPARE ; 757 dbp -> `rx (dbp, 758 "unknowcommd-lcfiguti keywd \"%s\"", me ); 763 m : 764 dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 765 r : (1); 766 } } 773 $db_ld_rhd ( dbv , dbp , dbtyp , subdbp , check , key ) 774 DB_ENV * dbv ; 775 DB * dbp ; 776 DBTYPE * dbtyp ; 777 ** subdbp ; 778 * check , * key ; 780 size_t bu , l , t ; 781 v ; 782 ch , f , hdr , t ; 783 * buf , * me , * p , * vue ; 785 * dbtyp = DB_UNKNOWN ; 786 * check = 0; 787 me = NULL ; 793 bu = 4096; 794 i( `G ( hdrbuf = NULL ) { 795 hdr = 0; 796 i(( buf = `mloc ( bu )= NULL ) 797 memr ; 798 `G ( hdrbuf buf ; 799 `G ( igle G( lo ); 801 hdr = 1; 802 buf = `G ( hdrbuf ); 803 `G ( lo G( igle ); 806 t = 0; 807 f = 1;; first = 0) { 808 ++ `G ( lo ); 811 l = 0; 812 buf = & `G ( hdrbuf )[ t ]; 813 i( hdr == 0) { 815 i(( ch = `gch ()= EOF ) { 816 i(! f || ` ( d )) 817 badfmt ; 818 `G ( dofe ) = 1; 825 i( l + t = bu ) { 826 `G ( hdrbuf ) = 827 `loc ( `G ( hdrbuf ), bu *= 2); 828 i( `G ( hdrbuf = NULL ) 829 memr ; 830 buf = & `G ( hdrbuf )[ t ]; 833 i( ch == '\n') 836 buf [ l ++] = ch ; 838 i( `G ( dofe ) == 1) 840 buf [ l ++] = '\0'; 842 l = ` ( buf ) + 1; 843 t + l ; 845 i( me ! NULL ) { 846 ` ( me ); 847 me = NULL ; 850 i(( me = `rdup ( buf )= NULL ) 851 memr ; 852 i(( p = `rchr ( me , '=')= NULL ) 853 badfmt ; 854 * p ++ = '\0'; 856 vue = p --; 858 i( me [0] == '\0') 859 badfmt ; 868 i( `rcmp ( me , "database") == 0 || 869 `rcmp ( me , "subdatabase") == 0) { 870 i(( t = `db_ld_cvb ( dbv , vue , subdbp )) != 0) { 871 dbp -> `r (dbp, t , "erroreading dbame"); 872 r ; 878 i( vue [0] == '\0') 879 badfmt ; 881 i( `rcmp ( me , "HEADER") == 0) 883 i( `rcmp ( me , "VERSION") == 0) { 888 `G ( vsi `oi ( vue ); 890 i( `G ( vsi ) > 3) { 891 dbp -> `rx (dbp, 893 `G ( lo ), G( vsi )); 894 r ; 898 i( `rcmp ( me , "format") == 0) { 899 i( `rcmp ( vue , "bytevalue") == 0) { 900 * check = 0; 903 i( `rcmp ( vue , "print") == 0) { 904 * check = 1; 907 badfmt ; 909 i( `rcmp ( me , "type") == 0) { 910 i( `rcmp ( vue , "btree") == 0) { 911 * dbtyp = DB_BTREE ; 914 i( `rcmp ( vue , "hash") == 0) { 915 * dbtyp = DB_HASH ; 918 i( `rcmp ( vue , "recno") == 0) { 919 * dbtyp = DB_RECNO ; 922 i( `rcmp ( vue , "queue") == 0) { 923 * dbtyp = DB_QUEUE ; 926 dbp -> `rx (dbp, "l%lu: unknowty", `G ( lo )); 927 r ; 929 i( `rcmp ( me , "keys") == 0) { 930 i( `rcmp ( vue , "1") == 0) 931 * key = 1; 932 i( `rcmp ( vue , "0") == 0) 933 * key = 0; 935 `db_ld_badnum ( dbv ); 936 r ; 941 CONFIGURATION_LIST_COMPARE ; 943 dbp -> `rx (dbp, 945 me ); 946 r ; 948 t = 0; 951 m : dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 952 t = 1; 955 badfmt : dbp -> `rx (dbp, "l%lu: uxed fm", `G ( lo )); 956 t = 1; 959 memr : dbp -> `rx (dbp, "unableollocate memory"); 960 r : t = 1; 962 i( me ! NULL ) 963 ` ( me ); 964 ( t ); 965 } } 974 #DIGITIZE ( e , v1 , v2 ) { \ 975 _v1 , _v2 ; \ 976 _v1 = ( v1 ); \ 977 _v2 = ( v2 ); \ 978 i(( _v1 > 'f' || ( _v2 ) > 'f') \ 979 ( `db_ld_badd ( dbv )); \ 980 ( e ) = \ 981 (( _v1 ) == '0' ? 0 : \ 982 (( _v1 ) == '1' ? 1 : \ 983 (( _v1 ) == '2' ? 2 : \ 984 (( _v1 ) == '3' ? 3 : \ 985 (( _v1 ) == '4' ? 4 : \ 986 (( _v1 ) == '5' ? 5 : \ 987 (( _v1 ) == '6' ? 6 : \ 988 (( _v1 ) == '7' ? 7 : \ 989 (( _v1 ) == '8' ? 8 : \ 990 (( _v1 ) == '9' ? 9 : \ 991 (( _v1 ) == 'a' ? 10 : \ 992 (( _v1 ) == 'b' ? 11 : \ 993 (( _v1 ) == 'c' ? 12 : \ 994 (( _v1 ) == 'd' ? 13 : \ 995 (( _v1 ) == 'e' ? 14 : 15))))))))))))))) << 4 | \ 996 (( _v2 ) == '0' ? 0 : \ 997 (( _v2 ) == '1' ? 1 : \ 998 (( _v2 ) == '2' ? 2 : \ 999 (( _v2 ) == '3' ? 3 : \ 1000 (( _v2 ) == '4' ? 4 : \ 1001 (( _v2 ) == '5' ? 5 : \ 1002 (( _v2 ) == '6' ? 6 : \ 1003 (( _v2 ) == '7' ? 7 : \ 1004 (( _v2 ) == '8' ? 8 : \ 1005 (( _v2 ) == '9' ? 9 : \ 1006 (( _v2 ) == 'a' ? 10 : \ 1007 (( _v2 ) == 'b' ? 11 : \ 1008 (( _v2 ) == 'c' ? 12 : \ 1009 (( _v2 ) == 'd' ? 13 : \ 1010 (( _v2 ) == 'e' ? 14 : 15))))))))))))))); \ 1011 } ) 1027 $db_ld_cvb ( dbv , r , out ) 1028 DB_ENV * dbv ; 1029 * r , ** out ; 1031 * outr ; 1040 i(( outr = `mloc ( ` ( r + 1)= NULL ) 1041 ( ENOMEM ); 1043 * out = outr ; 1045 ; * r != '\0'; instr++) 1046 i(* r == '\\') { 1047 i(*++ r == '\\') { 1048 * outr ++ = '\\'; 1051 `DIGITIZE (* outr ++, * r , *++instr); 1053 * outr ++ = * r ; 1055 * outr = '\0'; 1058 } } 1065 $db_ld_dbt_rt ( dbv , db ) 1066 DB_ENV * dbv ; 1067 DBT * db ; 1069 u_t32_t n ; 1070 u_t8_t * p ; 1071 c1 , c2 , es , f ; 1072 buf [32]; 1074 ++ `G ( lo ); 1076 f = 1; 1077 es = 0; 1078 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1079 i( c1 = EOF ) { 1080 i( n == 0) { 1081 `G ( dofe G( doda ) = 1; 1084 ( `db_ld_badd ( dbv )); 1086 i( f ) { 1087 f = 0; 1088 i( `G ( vsi ) > 1) { 1089 i( c1 != ' ') { 1090 buf [0] = c1 ; 1091 i( `fgs ( buf + 1, 1092 ( buf - 1, d = NULL || 1093 `rcmp ( buf , "DATA=END\n") != 0) 1094 ( `db_ld_badd ( dbv )); 1095 `G ( doda ) = 1; 1101 i( es ) { 1102 i( c1 != '\\') { 1103 i(( c2 = `gch ()= EOF ) 1104 ( `db_ld_badd ( dbv )); 1105 `DIGITIZE ( c1 , c1, c2 ); 1107 es = 0; 1109 i( c1 == '\\') { 1110 es = 1; 1113 i( n > db -> un - 10) { 1114 db -> un *= 2; 1115 i(( db -> da = 1116 `loc ( db -> da , db-> un )= NULL ) { 1117 dbv -> `r (dbv, ENOMEM , NULL ); 1120 p = ( u_t8_t *) db -> da + n ; 1122 ++ n ; 1123 * p ++ = c1 ; 1125 db -> size = n ; 1128 } } 1135 $db_ld_dbt_rdump ( dbv , db ) 1136 DB_ENV * dbv ; 1137 DBT * db ; 1139 u_t32_t n ; 1140 u_t8_t * p ; 1141 c1 , c2 , f ; 1142 buf [32]; 1144 ++ `G ( lo ); 1146 f = 1; 1147 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1148 i( c1 = EOF ) { 1149 i( n == 0) { 1150 `G ( dofe G( doda ) = 1; 1153 ( `db_ld_badd ( dbv )); 1155 i( f ) { 1156 f = 0; 1157 i( `G ( vsi ) > 1) { 1158 i( c1 != ' ') { 1159 buf [0] = c1 ; 1160 i( `fgs ( buf + 1, 1161 ( buf - 1, d = NULL || 1162 `rcmp ( buf , "DATA=END\n") != 0) 1163 ( `db_ld_badd ( dbv )); 1164 `G ( doda ) = 1; 1170 i(( c2 = `gch ()= EOF ) 1171 ( `db_ld_badd ( dbv )); 1172 i( n > db -> un - 10) { 1173 db -> un *= 2; 1174 i(( db -> da = 1175 `loc ( db -> da , db-> un )= NULL ) { 1176 dbv -> `r (dbv, ENOMEM , NULL ); 1179 p = ( u_t8_t *) db -> da + n ; 1181 ++ n ; 1182 `DIGITIZE (* p ++, c1 , c2 ); 1184 db -> size = n ; 1187 } } 1194 $db_ld_dbt_eo ( dbv , db , ishex ) 1195 DB_ENV * dbv ; 1196 DBT * db ; 1197 ishex ; 1199 buf [32], * p , * q ; 1200 u_lg o ; 1202 ++ `G ( lo ); 1204 i( `fgs ( buf , (buf), d = NULL ) { 1205 `G ( dofe G( doda ) = 1; 1209 i( `rcmp ( buf , "DATA=END\n") == 0) { 1210 `G ( doda ) = 1; 1214 i( buf [0] != ' ') 1215 r ; 1221 i( ishex ) { 1222 p = q = buf + 1; *q != '\0' && *q != '\n';) { 1230 i(* q ++ != '3') 1231 r ; 1232 i(* q == '\n' || *q == '\0') 1233 r ; 1234 * p ++ = * q ++; 1236 * p = '\0'; 1239 i( `__db_gulg ( dbv , `G ( ogme ), buf + 1, 0, 0, & o )) 1240 r ; 1242 *(( db_o_t *) db -> da o ; 1243 db -> size = ( db_o_t ); 1246 r : ( `db_ld_badd ( dbv )); 1247 } } 1250 $db_ld_dbt_to_o ( dbv , dbt , ) 1251 DB_ENV * dbv ; 1252 DBT * dbt ; 1253 db_o_t * ; 1255 buf [32]; 1257 `memy ( buf , dbt -> da , dbt-> size ); 1258 buf [ dbt -> size ] = '\0'; 1260 ( `__db_gulg ( dbv , `G ( ogme ), buf , 0, 0, ( u_lg *) )); 1261 } } 1268 $db_ld_badnum ( dbv ) 1269 DB_ENV * dbv ; 1271 dbv -> `rx (dbenv, 1273 } } 1280 $db_ld_badd ( dbv ) 1281 DB_ENV * dbv ; 1283 dbv -> `rx (dbenv, "unexpectednd of input data or key/dataair"); 1285 } } 1292 $db_ld_uge () 1294 () `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 1297 () `rtf ( dr , "usage: %s %s\n", 1298 ogme , "-rsn | fileid [-h home] [-Password] db_file"); 1299 ( EXIT_FAILURE ); 1300 } } 1303 $db_ld_vsi_check () 1305 v_maj , v_m , v_tch ; 1308 () `db_vsi (& v_maj , & v_m , & v_tch ); 1309 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 1310 `rtf ( dr , 1312 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 1313 v_maj , v_m ); 1314 ( EXIT_FAILURE ); 1317 } } @../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_t_p_cd __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 26 db_og_v__t __P (( ENV *, u_t32_t , DB_DISTAB *)); 27 db_og_v__t_42 __P (( ENV *, DB_DISTAB *)); 28 db_og_v__t_43 __P (( ENV *, DB_DISTAB *)); 29 db_og_v__t_45 __P (( ENV *, DB_DISTAB *)); 30 db_og_l_g __P ((*, DB_LSN *)); 31 db_og_ma __P ((, *[])); 32 db_og_ݒ_p_db __P (( DB_ENV *, DB **, DBC **)); 33 db_og_uge __P (()); 34 db_og_vsi_check __P (()); 36 cڡ * gogme ; 39 $db_og ( gs ) 40 * gs ; 42 gc ; 43 ** gv ; 45 `__db_ut_g ("db_og", gs , & gc , & gv ); 46 ( `db_og_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 47 } } 49 ~<dio.h > 50 #ERROR_RETURN ERROR ) 53 $db_og_ma ( gc , gv ) 54 gc ; 55 * gv []; 57 * ݏrg ; 58 td , __db_gt_t ; 59 DB * dbp ; 60 DBC * dbc ; 61 DBT da , keydbt ; 62 DB_DISTAB db ; 63 DB_ENV * dbv ; 64 DB_LOGC * logc ; 65 DB_LSN key , t , , v ; 66 ENV * v ; 67 u_t32_t logcag , wvsi , vsi ; 68 ch , cmp , exv , nag , rag , t , pag ; 69 * home , * sswd ; 71 i(( ogme = `__db_h ( gv [0])= NULL ) 72 ogme = gv [0]; 74 ++ ogme ; 76 i(( t = `db_og_vsi_check ()) != 0) 77 ( t ); 79 dbp = NULL ; 80 dbc = NULL ; 81 dbv = NULL ; 82 logc = NULL ; 83 `ZERO_LSN ( t ); 84 `ZERO_LSN ( ); 85 exv = nag = rag = pag = 0; 86 home = sswd = NULL ; 88 `memt (& db , 0, (dtab)); 90 __db_gt_t = 1; 91 ( ch = `gt ( gc , gv , "b:e:h:NP:rRV")! EOF ) 92 ch ) { 95 i( `db_og_l_g ( ݏrg , & t )) 96 ( `db_og_uge ()); 100 i( `db_og_l_g ( ݏrg , & )) 101 ( `db_og_uge ()); 104 home = ݏrg ; 107 nag = 1; 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 rag = 1; 122 pag = 1; 125 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 126 ( EXIT_SUCCESS ); 129 ( `db_og_uge ()); 131 gc - td ; 132 gv + td ; 134 i( gc > 0) 135 ( `db_og_uge ()); 138 `__db_ut_sig (); 144 i(( t = `db_v_ (& dbv , 0)) != 0) { 145 `rtf ( dr , 146 "%s: db_v_: %s\n", ogme , `db_ ( t )); 147 shutdown ; 150 dbv -> `t_rfe (dbv, dr ); 151 dbv -> `t_fx (dbv, ogme ); 153 i( nag ) { 154 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 155 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 156 shutdown ; 158 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 159 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 160 shutdown ; 164 i( sswd ! NULL && ( t = dbv -> `t_y (dbenv, 165 sswd , DB_ENCRYPT_AES )) != 0) { 166 dbv -> `r (dbv, t , "set_passwd"); 167 shutdown ; 174 i(( t = dbv -> `t_p_dich ( 175 dbv , db_og_t_p_cd )) != 0) { 176 dbv -> `r (dbv, t , "app_dispatch"); 177 shutdown ; 187 i( pag ) { 188 i(( t = dbv -> `ݒ (dbv, home , 189 DB_INIT_MPOOL | DB_USE_ENVIRON , 0)) != 0 && 190 ( t = DB_VERSION_MISMATCH || 191 ( t = dbv -> `ݒ (dbv, home , 192 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) 194 dbv -> `r (dbv, t , "DB_ENV->open"); 195 shutdown ; 197 } i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 198 ( t = DB_VERSION_MISMATCH || 199 ( t = dbv -> `ݒ (dbv, home , 200 DB_CREATE | DB_INIT_LOG | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 201 dbv -> `r (dbv, t , "DB_ENV->open"); 202 shutdown ; 204 v = dbv ->env; 207 i( pag ) { 208 i(( t = `db_og_ݒ_p_db ( dbv , & dbp , & dbc )) != 0) 209 shutdown ; 210 } i(( t = dbv -> `log_curs (dbv, & logc , 0)) != 0) { 211 dbv -> `r (dbv, t , "DB_ENV->log_cursor"); 212 shutdown ; 215 i( `IS_ZERO_LSN ( t )) { 216 `memt (& keydbt , 0, (keydbt)); 217 logcag = rag ? DB_PREV : DB_NEXT ; 219 key = t ; 220 logcag = DB_SET ; 222 `memt (& da , 0, (data)); 230 i( pag ) 231 vsi = DB_LOGVERSION ; 233 vsi = 0; 234 `ZERO_LSN ( v ); 237 i( pag && 238 ( t = `db_og_v__t ( v , vsi , & db )) != 0) { 239 dbv -> `r (dbv, t , "callback: initialization"); 240 shutdown ; 242 ; ! `__db_ut_ued (); logcag = rag ? DB_PREV : DB_NEXT ) { 243 i( pag ) { 244 t = dbc -> `g (dbc, & keydbt , & da , logcag ); 245 i( t == 0) 246 key = (( __p_cڌ_gs *) keydbt . da )-> l ; 248 t = logc -> `g ogc, & key , & da , logcag ); 249 i( t != 0) { 250 i( t = DB_NOTFOUND ) 252 dbv -> `r (dbenv, 253 t , pag ? "DBC->get" : "DB_LOGC->get"); 254 shutdown ; 260 i(! `IS_ZERO_LSN ( )) { 261 cmp = `LOG_COMPARE (& key , & ); 262 i(( rag && cmp < 0) || (!rflag && cmp > 0)) 265 i(! pag && key . fe ! v .file) { 271 i(( t = logc -> `vsi ogc, & wvsi , 0)) != 0) { 272 dbv -> `r (dbv, t , "DB_LOGC->version"); 273 shutdown ; 275 i( vsi ! wvsi ) { 276 vsi = wvsi ; 277 i(( t = `db_og_v__t ( v , vsi , 278 & db )) != 0) { 279 dbv -> `r (dbv, t , 281 shutdown ; 286 t = `__db_dich ( dbv -> v , 287 & db , & da , & key , DB_TXN_PRINT , NULL ); 293 () `fush ( dout ); 295 i( t != 0) { 296 dbv -> `r (dbv, t , "tx: dispatch"); 297 shutdown ; 302 shutdown : exv = 1; 304 i( logc ! NULL && ( t =ogc-> `o (logc, 0)) != 0) 305 exv = 1; 307 i( dbc ! NULL && ( t = dbc-> `o (dbc)) != 0) 308 exv = 1; 310 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) 311 exv = 1; 313 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 314 exv = 1; 315 `rtf ( dr , 316 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 319 i( sswd ! NULL ) 320 ` ( sswd ); 323 `__db_ut_signd (); 325 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 326 } } 332 $db_og_v__t ( v , vsi , dbp ) 333 ENV * v ; 334 u_t32_t vsi ; 335 DB_DISTAB * dbp ; 337 t ; 344 i(( t = `db_og_v__t_45 ( v , dbp )) != 0) 345 ( t ); 347 vsi ) { 355 DB_LOGVERSION_47 : 356 DB_LOGVERSION_46 : 357 DB_LOGVERSION_45 : 358 DB_LOGVERSION_44 : 359 t = 0; 361 DB_LOGVERSION_43 : 362 t = `db_og_v__t_43 ( v , dbp ); 364 DB_LOGVERSION_42 : 365 t = `db_og_v__t_42 ( v , dbp ); 368 v -> dbv -> `rx (env->dbenv, 369 "Unknowvsi %lu", ( u_lg ) vsi ); 370 t = EINVAL ; 373 ( t ); 374 } } 377 $db_og_v__t_42 ( v , dbp ) 378 ENV * v ; 379 DB_DISTAB * dbp ; 381 t ; 383 i(( t = `__db_add_covy_t ( v , dbp , 384 __db_lk_42_t , DB___db_lk_42 )) != 0) 385 r ; 386 i(( t = `__db_add_covy_t ( v , dbp , 387 __db_pg_loc_42_t , DB___db_pg_loc_42 )) != 0) 388 r ; 389 i(( t = `__db_add_covy_t ( v , dbp , 390 __db_pg__42_t , DB___db_pg__42 )) != 0) 391 r ; 392 i(( t = `__db_add_covy_t ( v , dbp , 393 __db_pg_da_42_t , DB___db_pg_da_42 )) != 0) 394 r ; 395 #i HAVE_HASH 396 i(( t = `__db_add_covy_t ( v , dbp , 397 __ham_magroup_42_t , DB___ham_magroup_42 )) != 0) 398 r ; 399 i(( t = `__db_add_covy_t ( v , dbp , 400 __ham_grouoc_42_t , DB___ham_grouoc_42 )) != 0) 401 r ; 403 i(( t = `__db_add_covy_t ( v , dbp , 404 __txn_ckp_42_t , DB___txn_ckp_42 )) != 0) 405 r ; 406 i(( t = `__db_add_covy_t ( v , dbp , 407 __txn_g_42_t , DB___txn_g_42 )) != 0) 408 r ; 409 r : 410 ( t ); 411 } } 414 $db_og_v__t_43 ( v , dbp ) 415 ENV * v ; 416 DB_DISTAB * dbp ; 418 t ; 420 i(( t = `__db_add_covy_t ( v , dbp , 421 __bam_lk_43_t , DB___bam_lk_43 )) != 0) 422 r ; 426 i(( t = `__db_add_covy_t ( v , dbp , 427 __txn_g_42_t , DB___txn_g_42 )) != 0) 428 r ; 429 r : 430 ( t ); 431 } } 438 $db_og_v__t_45 ( v , dbp ) 439 ENV * v ; 440 DB_DISTAB * dbp ; 442 t ; 444 i(( t = `__bam__t ( v , dbp )) != 0) 445 r ; 446 i(( t = `__d__t ( v , dbp )) != 0) 447 r ; 448 i(( t = `__db__t ( v , dbp )) != 0) 449 r ; 450 i(( t = `__dbg__t ( v , dbp )) != 0) 451 r ; 452 i(( t = `__f__t ( v , dbp )) != 0) 453 r ; 454 #ifde HAVE_HASH 455 i(( t = `__ham__t ( v , dbp )) != 0) 456 r ; 458 #ifde HAVE_QUEUE 459 i(( t = `__qam__t ( v , dbp )) != 0) 460 r ; 462 i(( t = `__txn__t ( v , dbp )) != 0) 463 r ; 464 r : 465 ( t ); 466 } } 469 $db_og_uge () 471 `rtf ( dr , "uge: %%s\n", ogme , 473 ( EXIT_FAILURE ); 474 } } 477 $db_og_vsi_check () 479 v_maj , v_m , v_tch ; 482 () `db_vsi (& v_maj , & v_m , & v_tch ); 483 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 484 `rtf ( dr , 486 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 487 v_maj , v_m ); 488 ( EXIT_FAILURE ); 491 } } 495 $db_og_t_p_cd ( dbv , dbt , lp , ) 496 DB_ENV * dbv ; 497 DBT * dbt ; 498 DB_LSN * lp ; 499 db_cs ; 501 u_t32_t i , y ; 502 ch ; 504 `DB_ASSERT ( dbv -> v , = DB_TXN_PRINT ); 506 `COMPQUIET ( dbv , NULL ); 507 `COMPQUIET ( , DB_TXN_PRINT ); 513 `memy (& y , dbt -> da , (rectype)); 520 `tf ("[%lu][%lu]application specificecord:ec: %lu\n", 521 ( u_lg ) lp -> fe , (u_lgp-> offt , (u_lg) y ); 522 `tf ("\tdata: "); 523 i = 0; i < dbt -> size ; i++) { 524 ch = (( u_t8_t *) dbt -> da )[ i ]; 525 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 527 `tf ("\n\n"); 530 } } 533 $db_og_ݒ_p_db ( dbv , db , db ) 534 DB_ENV * dbv ; 535 DB ** db ; 536 DBC ** db ; 538 t ; 540 DB * dbp ; 541 * db = NULL ; 542 * db = NULL ; 544 i(( t = `db_ ( db , dbv , 0)) != 0) { 545 dbv -> `r (dbv, t , "db_create"); 546 ( t ); 549 dbp = * db ; 550 i(( t = 551 dbp -> `ݒ (dbp, NULL , REPDBNAME , NULL, DB_BTREE , 0, 0)) != 0) { 552 dbv -> `r (dbv, t , "DB->open"); 553 r ; 556 i(( t = dbp -> `curs (dbp, NULL , db , 0)) != 0) { 557 dbv -> `r (dbv, t , "DB->cursor"); 558 r ; 563 r : i(* db ! NULL ) 564 ()(* db )-> `o (*dbpp, 0); 565 ( t ); 566 } } 573 $db_og_l_g ( g , lp ) 574 * g ; 575 DB_LSN * lp ; 577 u_lg uv ; 578 * p ; 583 i(( p = `rchr ( g , '/')= NULL ) 585 * p = '\0'; 587 i( `__db_gulg ( NULL , ogme , g , 0, UINT32_MAX , & uv )) 589 lp -> fe = uv ; 590 i( `__db_gulg ( NULL , ogme , p + 1, 0, UINT32_MAX , & uv )) 592 lp -> offt = uv ; 594 } } @../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 -> v ) && 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 -> v && ( 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_vxworks/test_micro/b_curalloc.c 4 ~"bch.h " 6 b_cuoc_uge (); 9 $b_cuoc ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB * dbp ; 14 DBC * cu ; 15 ch , i , cou ; 17 cou = 100000; 18 __db_gt_t = 1; 19 ( ch = `gt ( gc , gv , "c:")! EOF ) 20 ch ) { 22 cou = `oi ( ݏrg ); 26 ( `b_cuoc_uge ()); 28 gc - td ; 29 gv + td ; 30 i( gc != 0) 31 ( `b_cuoc_uge ()); 34 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 35 dbp -> `t_rfe (dbp, dr ); 37 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 38 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 39 dbp , NULL , TESTFILE , NULL, DB_BTREE , DB_CREATE , 0666) == 0); 41 `DB_BENCH_ASSERT ( 42 dbp -> `ݒ (dbp, TESTFILE , NULL , DB_BTREE , DB_CREATE , 0666) == 0); 46 TIMER_START ; 47 i = 0; i < cou ; ++i) { 48 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & cu , 0) == 0); 49 `DB_BENCH_ASSERT ( cu -> `c_o (curp) == 0); 51 TIMER_STOP ; 53 `tf ("# %d curs܇otis\n", cou ); 54 `TIMER_DISPLAY ( cou ); 56 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 59 } } 62 $b_cuoc_uge () 64 () `rtf ( dr , "usage: b_curalloc [-c count]\n"); 65 ( EXIT_FAILURE ); 66 } } @../build_vxworks/test_micro/b_curwalk.c 4 ~"bch.h " 6 b_curwk_uge (); 9 $b_curwk ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB * dbp ; 14 DBTYPE ty ; 15 DBC * dbc ; 16 DBT key , da ; 17 db_o_t o ; 18 u_t32_t chesize , gesize , wkags ; 19 ch , i , cou , dupcou , j ; 20 ev , t , skdupwk , s܋d , wkcou ; 21 * ts , dbuf [32], kbuf [32]; 23 ty = DB_BTREE ; 24 chesize = 10 * MEGABYTE ; 25 gesize = 16 * 1024; 26 cou = 100000; 27 dupcou = ev = skdupwk = s܋d = 0; 28 wkcou = 1000; 29 ts = "Btree"; 30 __db_gt_t = 1; 31 ( ch = `gt ( gc , gv , "C:c:d:P:pS:w:")! EOF ) 32 ch ) { 34 chesize = ( u_t32_t ) `oi ( ݏrg ); 37 cou = `oi ( ݏrg ); 40 dupcou = `oi ( ݏrg ); 43 gesize = ( u_t32_t ) `oi ( ݏrg ); 46 ev = 1; 49 skdupwk = 1; 52 s܋d = 1; 55 ݏrg [0]) { 57 ts = "Btree"; 58 ty = DB_BTREE ; 61 i( `b_ut_have_hash ()) 63 ts = "Hash"; 64 ty = DB_HASH ; 67 i( `b_ut_have_queue ()) 69 ts = "Queue"; 70 ty = DB_QUEUE ; 73 ts = "Recno"; 74 ty = DB_RECNO ; 77 ( `b_curwk_uge ()); 81 wkcou = `oi ( ݏrg ); 85 ( `b_curwk_uge ()); 87 gc - td ; 88 gv + td ; 89 i( gc != 0) 90 ( `b_curwk_uge ()); 95 i( dupcou !0 && ( ty = DB_QUEUE ||y = DB_RECNO )) { 96 `rtf ( dr , 98 ( `b_curwk_uge ()); 101 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 102 #DB_PREV_NODUP 0 ) 112 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 113 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 114 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 115 dbp -> `t_rfe (dbp, dr ); 118 i( ty = DB_QUEUE ) 119 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 122 i( dupcou != 0) 123 `DB_BENCH_ASSERT ( 124 dbp -> `t_ags (dbp, s܋d ? DB_DUPSORT : DB_DUP ) == 0); 126 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 127 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 128 dbp , NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 130 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 131 dbp , TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 135 `memt (& key , 0, (key)); 136 `memt (& da , 0, (data)); 139 da .d dbuf ; 140 da . size = 20; 141 i( ty = DB_BTREE ||y = DB_HASH ) { 142 key . size = 10; 143 key . da = kbuf ; 144 i = 0; i < cou ; ++i) { 145 () `tf ( kbuf , (kbuf), "%010d", i ); 146 j = 0; j < dupcou ; ++j) { 147 () `tf ( dbuf , (dbuf), "%020d", j ); 148 `DB_BENCH_ASSERT ( 149 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 153 key . da = & o ; 154 key . size = ( o ); 155 i = 0, o = 1; i < cou ; ++i, ++recno) 156 `DB_BENCH_ASSERT ( 157 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 160 wkags = ev ? 161 ( skdupwk ? DB_PREV_NODUP : DB_PREV ) : 162 ( skdupwk ? DB_NEXT_NODUP : DB_NEXT ); 165 TIMER_START ; 166 i = 0; i < wkcou ; ++i) { 167 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 168 ( t = dbc -> `c_g (dbc, & key , & da , wkags )) == 0) 170 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 171 `DB_BENCH_ASSERT ( dbc -> `c_o (dbc) == 0); 173 TIMER_STOP ; 175 `tf ("# %d %s %s cursor of %d 10/20 byte key/data items", 176 wkcou , ts , ev ? 177 ( skdupwk ? "DB_PREV_NODUP" : "DB_PREV") : 178 ( skdupwk ? "DB_NEXT_NODUP" : "DB_NEXT"), 179 cou ); 180 i( dupcou != 0) 181 `tf (" wh %d dups", dupcou ); 182 `tf ("\n"); 191 `TIMER_DISPLAY (() cou * wkcou ); 193 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 195 ( EXIT_SUCCESS ); 196 } } 199 $b_curwk_uge () 201 () `rtf ( dr , "%s\n\t%s\n", 204 ( EXIT_FAILURE ); 205 } } @../build_vxworks/test_micro/b_del.c 4 ~"bch.h " 6 b_d_uge (); 9 $b_d ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB * dbp ; 14 DBC * dbc ; 15 DBT key , da ; 16 DBTYPE ty ; 17 db_o_t o ; 18 u_t32_t chesize ; 19 ch , i , cou , t , u_curs ; 20 * ts , buf [32]; 22 ty = DB_BTREE ; 23 chesize = MEGABYTE ; 24 cou = 100000; 25 u_curs = 0; 26 ts = "Btree"; 27 __db_gt_t = 1; 28 ( ch = `gt ( gc , gv , "C:c:t:w")! EOF ) 29 ch ) { 31 chesize = ( u_t32_t ) `oi ( ݏrg ); 34 cou = `oi ( ݏrg ); 37 ݏrg [0]) { 39 ts = "Btree"; 40 ty = DB_BTREE ; 43 i( `b_ut_have_hash ()) 45 ts = "Hash"; 46 ty = DB_HASH ; 49 i( `b_ut_have_queue ()) 51 ts = "Queue"; 52 ty = DB_QUEUE ; 55 ts = "Recno"; 56 ty = DB_RECNO ; 59 ( `b_d_uge ()); 63 u_curs = 1; 67 ( `b_d_uge ()); 69 gc - td ; 70 gv + td ; 71 i( gc != 0) 72 ( `b_d_uge ()); 75 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 76 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 77 dbp -> `t_rfe (dbp, dr ); 80 i( ty = DB_QUEUE ) 81 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 83 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 84 `DB_BENCH_ASSERT ( 85 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 87 `DB_BENCH_ASSERT ( 88 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 92 `memt (& key , 0, (key)); 93 `memt (& da , 0, (data)); 94 da .data = "01234567890123456789"; 95 da . size = 20; 98 ty ) { 99 DB_BTREE : 100 DB_HASH : 101 key . da = buf ; 102 key . size = 10; 104 DB_QUEUE : 105 DB_RECNO : 106 key . da = & o ; 107 key . size = ( o ); 109 DB_UNKNOWN : 110 `b_ut_abt (); 115 i( ty = DB_BTREE ||y = DB_HASH ) 116 i = 0; i < cou ; ++i) { 117 () `tf ( buf , (buf), "%010d", i ); 118 `DB_BENCH_ASSERT ( 119 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 122 i = 0, o = 1; i < cou ; ++i, ++recno) 123 `DB_BENCH_ASSERT ( 124 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 127 TIMER_START ; 128 i( u_curs ) { 129 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 130 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) 131 `DB_BENCH_ASSERT ( dbc -> `c_d (dbc, 0) == 0); 132 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 134 i( ty = DB_BTREE ||y = DB_HASH ) 135 i = 0; i < cou ; ++i) { 136 () `tf ( buf , (buf), "%010d", i ); 137 `DB_BENCH_ASSERT ( 138 dbp -> `d (dbp, NULL , & key , 0) == 0); 141 i = 0, o = 1; i < cou ; ++i, ++recno) 142 `DB_BENCH_ASSERT ( 143 dbp -> `d (dbp, NULL , & key , 0) == 0); 145 TIMER_STOP ; 147 `tf ( 149 cou , ts , u_curs ? "a cursor" : "the key"); 150 `TIMER_DISPLAY ( cou ); 152 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 155 } } 158 $b_d_uge () 160 () `rtf ( dr , 162 ( EXIT_FAILURE ); 163 } } @../build_vxworks/test_micro/b_get.c 4 ~"bch.h " 6 b_g_uge (); 9 $b_g ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB * dbp ; 14 DBTYPE ty ; 15 DBT key , da ; 16 db_o_t o ; 17 u_t32_t chesize ; 18 ch , i , cou ; 19 * ts ; 21 ty = DB_BTREE ; 22 chesize = MEGABYTE ; 23 cou = 100000; 24 ts = "Btree"; 25 __db_gt_t = 1; 26 ( ch = `gt ( gc , gv , "C:c:t:")! EOF ) 27 ch ) { 29 chesize = ( u_t32_t ) `oi ( ݏrg ); 32 cou = `oi ( ݏrg ); 35 ݏrg [0]) { 37 ts = "Btree"; 38 ty = DB_BTREE ; 41 i( `b_ut_have_hash ()) 43 ts = "Hash"; 44 ty = DB_HASH ; 47 i( `b_ut_have_queue ()) 49 ts = "Queue"; 50 ty = DB_QUEUE ; 53 ts = "Recno"; 54 ty = DB_RECNO ; 57 ( `b_g_uge ()); 62 ( `b_g_uge ()); 64 gc - td ; 65 gv + td ; 66 i( gc != 0) 67 ( `b_g_uge ()); 70 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 71 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 72 dbp -> `t_rfe (dbp, dr ); 75 i( ty = DB_QUEUE ) 76 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 10) == 0); 78 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 79 `DB_BENCH_ASSERT ( 80 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 82 `DB_BENCH_ASSERT ( 83 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 87 `memt (& key , 0, (key)); 88 `memt (& da , 0, (data)); 89 ty ) { 90 DB_BTREE : 91 DB_HASH : 92 key . da = "aaaaa"; 93 key . size = 5; 95 DB_QUEUE : 96 DB_RECNO : 97 o = 1; 98 key . da = & o ; 99 key . size = ( o ); 101 DB_UNKNOWN : 102 `b_ut_abt (); 105 da .data = "bbbbb"; 106 da . size = 5; 108 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 111 TIMER_START ; 112 i = 0; i < cou ; ++i) 113 `DB_BENCH_ASSERT ( dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 114 TIMER_STOP ; 116 `tf ("# %d %daba g oched key/dem\n", cou , ts ); 117 `TIMER_DISPLAY ( cou ); 119 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 122 } } 125 $b_g_uge () 127 () `rtf ( dr , 129 ( EXIT_FAILURE ); 130 } } @../build_vxworks/test_micro/b_inmem.c 5 ~"bch.h " 7 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 0 11 #unde MEGABYTE 12 #MEGABYTE (1024 * 1024) ) 14 u_t32_t gbulkbufsize = 4 * MEGABYTE ; 15 u_t32_t gchesize = 32 * MEGABYTE ; 16 u_t32_t gdasize = 32; 17 u_t32_t gkeysize = 8; 18 u_t32_t glogbufsize = 8 * MEGABYTE ; 19 u_t32_t gnumems ; 20 u_t32_t ggesize = 32 * 1024; 22 FILE * g ; 23 * gogme ; 25 b_mem__ds __P (( u_t , )); 26 b_mem__ds_bulk __P (( u_t , u_int *)); 27 b_mem__tds __P (( u_t , , u_t32_t , u_int32_t)); 28 b_mem_uge __P (()); 31 $b_mem__ds ( u_t s , upde ) 33 DB_ENV * dbv ; 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); 54 dbv = dbp ->dbenv; 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 () dbv -> `memp_ (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 () dbv -> `memp_ (dbv, & g , NULL , 0); 81 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 83 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 84 } } 87 $b_mem__ds_bulk ( u_t s , u_* tٮp ) 89 DB_ENV * dbv ; 90 DB * dbp ; 91 DBC * dbc ; 92 DBT key , da ; 93 u_t32_t n , kn ; 94 u_t i , tٮ ; 95 * keybuf , * dabuf ; 96 * por , * dp , * kp ; 97 DB_MPOOL_STAT * g ; 99 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 100 `DB_BENCH_ASSERT (( dabuf = `mloc ( bulkbufsize )! NULL ); 102 `memt (& key , 0, (key)); 103 `memt (& da , 0, (data)); 104 key . da = keybuf ; 105 key . size = keysize ; 107 da .d dabuf ; 108 da . size = dasize ; 109 `memt ( dabuf , 'b', dasize ); 111 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 112 dbv = dbp ->dbenv; 113 dbp -> `t_rfe (dbp, dr ); 115 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 116 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 1) == 0); 117 `DB_BENCH_ASSERT ( 118 dbp -> `ݒ (dbp, NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0666) == 0); 120 i = 1; i < numems ; ++i) { 121 () `tf ( keybuf , keysize , "%7d", i ); 122 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 126 = `fݒ ("before", "w"); 127 dbp -> `t_msgfe (dbp, ); 128 `DB_BENCH_ASSERT ( dbp -> `_t (dbp, DB_STAT_ALL ) == 0); 131 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 133 da . un = bulkbufsize ; 134 da . ags = DB_DBT_USERMEM ; 136 () dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 138 TIMER_START ; 139 tٮ = 0; s > 0; --ops) { 140 `DB_BENCH_ASSERT ( dbc -> `c_g ( 141 dbc , & key , & da , DB_FIRST | DB_MULTIPLE_KEY ) == 0); 142 `DB_MULTIPLE_INIT ( por , & da ); 143 por ! NULL ) { 144 `DB_MULTIPLE_KEY_NEXT ( por , & da , kp , kn , dp , n ); 145 i( kp ! NULL ) 146 ++ tٮ ; 149 TIMER_STOP ; 150 * tٮp = tٮ ; 152 () dbv -> `memp_ (dbv, & g , NULL , 0); 153 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 156 = `fݒ ("before", "w"); 157 dbp -> `t_msgfe (dbp, ); 158 `DB_BENCH_ASSERT ( dbp -> `_t (dbp, DB_STAT_ALL ) == 0); 161 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 163 `COMPQUIET ( dp , NULL ); 164 `COMPQUIET ( kn , 0); 165 `COMPQUIET ( n , 0); 166 } } 169 $b_mem__tds ( u_t s , upde , u_t32_t v_ags , u_t32_ log_ags ) 171 DB * dbp ; 172 DBT key , da ; 173 DB_ENV * dbv ; 174 DB_MPOOL_STAT * g ; 175 DB_TXN * txn ; 176 * keybuf , * dabuf ; 178 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 179 `DB_BENCH_ASSERT (( dabuf = `mloc ( dasize )! NULL ); 181 `memt (& key , 0, (key)); 182 `memt (& da , 0, (data)); 183 key . da = keybuf ; 184 key . size = keysize ; 185 `memt ( keybuf , 'a', keysize ); 187 da .d dabuf ; 188 da . size = dasize ; 189 `memt ( dabuf , 'b', dasize ); 191 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 193 dbv -> `t_rfe (dbv, dr ); 196 #ifde DB_AUTO_COMMIT 197 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, DB_AUTO_COMMIT , 1) == 0); 199 i( v_ags != 0) 200 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, v_ags , 1) == 0); 203 i( log_ags != 0) 204 #i DB_VERSION_MINOR >= 7 205 `DB_BENCH_ASSERT ( 206 dbv -> `log_t_cfig (dbv, log_ags , 1) == 0); 208 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, log_ags , 1) == 0); 210 #ifde DB_LOG_INMEMORY 211 i(!( log_ags & DB_LOG_INMEMORY )) 213 #ifde DB_LOG_IN_MEMORY 214 i(!( log_ags & DB_LOG_IN_MEMORY )) 216 `DB_BENCH_ASSERT ( dbv -> `t_lg_max (dbv, logbufsize * 10) == 0); 217 `DB_BENCH_ASSERT ( dbv -> `t_lg_bsize (dbv, logbufsize ) == 0); 219 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 220 DB_CREATE | DB_PRIVATE | DB_INIT_LOCK | 221 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 0666) == 0); 223 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 224 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 225 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 226 dbp , NULL , TESTFILE , NULL, DB_BTREE , DB_CREATE , 0666) == 0); 228 i( upde ) { 229 () dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 231 TIMER_START ; 232 ; s > 0; --ops) 233 `DB_BENCH_ASSERT ( 234 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 235 TIMER_STOP ; 237 () dbv -> `memp_ (dbv, & g , NULL , 0); 238 `DB_BENCH_ASSERT ( g -> _ge_out == 0); 240 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 241 () dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 243 TIMER_START ; 244 ; s > 0; --ops) { 245 `DB_BENCH_ASSERT ( 246 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 247 `DB_BENCH_ASSERT ( 248 dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 249 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 251 TIMER_STOP ; 253 () dbv -> `memp_ (dbv, & g , NULL , 0); 254 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 257 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 258 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 259 } } 261 #DEFAULT_OPS 1000000 ) 264 $b_mem ( gc , * gv []) 266 * ݏrg ; 267 td , __db_gt_t ; 268 u_t s , tٮ ; 269 ch ; 271 i(( ogme = `chr ( gv [0], '/')= NULL ) 272 ogme = gv [0]; 274 ++ ogme ; 276 s = 0; 277 __db_gt_t = 1; 278 ( ch = `gt ( gc , gv , "b:C:d:k:l:o:P:")! EOF ) 279 ch ) { 281 bulkbufsize = ( u_t32_t ) `oi ( ݏrg ); 284 chesize = ( u_t32_t ) `oi ( ݏrg ); 287 dasize = ( u_t ) `oi ( ݏrg ); 290 keysize = ( u_t ) `oi ( ݏrg ); 293 logbufsize = ( u_t32_t ) `oi ( ݏrg ); 296 s = ( u_t ) `oi ( ݏrg ); 299 gesize = ( u_t32_t ) `oi ( ݏrg ); 303 ( `b_mem_uge ()); 305 gc - td ; 306 gv + td ; 308 i( gc != 1) 309 ( `b_mem_uge ()); 311 numems = ( chesize / ( keysize + dasize - 1)) / 2; 313 i( `rcmp ( gv [0], "read") == 0) { 314 i( s == 0) 315 s = DEFAULT_OPS ; 316 `b_mem__ds ( s , 0); 317 `tf ( 319 s , keysize , dasize ); 320 } i( `rcmp ( gv [0], "bulk") == 0) { 321 i( keysize < 8) { 322 `rtf ( dr , 323 "%s: bulkdequekey siz>10\n", ogme ); 324 ( EXIT_FAILURE ); 332 i( s == 0) 333 s = 100000; 334 `b_mem__ds_bulk ( s , & tٮ ); 335 s = tٮ ; 336 `tf ( 338 s , keysize , dasize ); 339 } i( `rcmp ( gv [0], "write") == 0) { 340 i( s == 0) 341 s = DEFAULT_OPS ; 342 `b_mem__ds ( s , 1); 343 `tf ( 345 s , keysize , dasize ); 346 } i( `rcmp ( gv [0], "txn-read") == 0) { 347 i( s == 0) 348 s = DEFAULT_OPS ; 349 `b_mem__tds ( s , 0, 0, 0); 350 `tf ( 352 s , keysize , dasize ); 353 } i( `rcmp ( gv [0], "txn-write") == 0) { 354 i( s == 0) 355 s = DEFAULT_OPS ; 356 #i `defed ( DB_LOG_INMEMORY || defed( DB_LOG_IN_MEMORY ) 357 #i `defed ( DB_LOG_INMEMORY ) 358 `b_mem__tds ( s , 1, 0, DB_LOG_INMEMORY ); 360 `b_mem__tds ( s , 1, 0, DB_LOG_IN_MEMORY ); 362 `tf ( 364 s , keysize , dasize ); 366 ( EXIT_SUCCESS ); 368 } i( `rcmp ( gv [0], "txn-nosync") == 0) { 369 i( s == 0) 370 s = DEFAULT_OPS ; 371 `b_mem__tds ( s , 1, DB_TXN_NOSYNC , 0); 372 `tf ( 374 s , keysize , dasize ); 375 } i( `rcmp ( gv [0], "txn-write-nosync") == 0) { 376 i( s == 0) 377 s = DEFAULT_OPS ; 378 #ifde DB_TXN_WRITE_NOSYNC 379 `b_mem__tds ( s , 1, DB_TXN_WRITE_NOSYNC , 0); 380 `tf ( 382 s , keysize , dasize ); 384 ( EXIT_SUCCESS ); 386 } i( `rcmp ( gv [0], "txn-sync") == 0) { 391 i( s == 0) 392 s = 100000; 393 `b_mem__tds ( s , 1, 0, 0); 394 `tf ( 396 s , keysize , dasize ); 398 `rtf ( dr , "%s: unknowkeywd %s\n", ogme , gv [0]); 399 ( EXIT_FAILURE ); 402 `TIMER_DISPLAY ( s ); 403 ( EXIT_SUCCESS ); 404 } } 407 $b_mem_uge () 409 `rtf ( dr , "usage: %s %s%s%s%s", 410 ogme , "[-b bulkbufsz] [-C cachesz]\n\t", 414 ( EXIT_FAILURE ); 415 } } 418 $b_mem ( gc , * gv []) 420 `COMPQUIET ( gc , 0); 421 `COMPQUIET ( gv , NULL ); 423 } } @../build_vxworks/test_micro/b_load.c 4 ~"bch.h " 6 b_ld_uge (); 9 $b_ld ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB * dbp ; 14 DBTYPE ty ; 15 DBT key , da ; 16 db_o_t o ; 17 u_t32_t chesize ; 18 ch , i , cou , dui ; 19 * ts , buf [32]; 21 ty = DB_BTREE ; 22 chesize = MEGABYTE ; 23 cou = 100000; 24 dui = 0; 25 ts = "Btree"; 26 __db_gt_t = 1; 27 ( ch = `gt ( gc , gv , "C:c:dt:")! EOF ) 28 ch ) { 30 chesize = ( u_t32_t ) `oi ( ݏrg ); 33 cou = `oi ( ݏrg ); 36 dui = 1; 39 ݏrg [0]) { 41 ts = "Btree"; 42 ty = DB_BTREE ; 45 i( `b_ut_have_hash ()) 47 ts = "Hash"; 48 ty = DB_HASH ; 51 i( `b_ut_have_queue ()) 53 ts = "Queue"; 54 ty = DB_QUEUE ; 57 ts = "Recno"; 58 ty = DB_RECNO ; 61 ( `b_ld_uge ()); 66 ( `b_ld_uge ()); 68 gc - td ; 69 gv + td ; 70 i( gc != 0) 71 ( `b_ld_uge ()); 74 i( dui && ( ty = DB_QUEUE ||y = DB_RECNO )) { 75 `rtf ( dr , 77 ( `b_ld_uge ()); 80 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 85 i( dui ) 90 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 91 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 92 i( dui ) 93 `DB_BENCH_ASSERT ( dbp -> `t_ags (dbp, DB_DUP ) == 0); 94 dbp -> `t_rfe (dbp, dr ); 97 i( ty = DB_QUEUE ) 98 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 100 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 101 `DB_BENCH_ASSERT ( 102 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 104 `DB_BENCH_ASSERT ( 105 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 109 `memt (& key , 0, (key)); 110 `memt (& da , 0, (data)); 113 TIMER_START ; 114 i( dui ) { 115 key . size = 10; 116 key . da = "01234567890123456789"; 117 da .d buf ; 118 da . size = 20; 119 i = 0; i < cou ; ++i) { 120 () `tf ( buf , (buf), "%020d", i ); 121 `DB_BENCH_ASSERT ( 122 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 125 da .d buf ; 126 da . size = 20; 127 i( ty = DB_BTREE ||y = DB_HASH ) { 128 key . size = 10; 129 key . da = buf ; 130 i = 0; i < cou ; ++i) { 131 () `tf ( buf , (buf), "%010d", i ); 132 `DB_BENCH_ASSERT ( 133 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 136 key . da = & o ; 137 key . size = ( o ); 138 i = 0, o = 1; i < cou ; ++i, ++recno) 139 `DB_BENCH_ASSERT ( 140 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 144 TIMER_STOP ; 146 `tf ("# %d %s database in-orderut of 10/20 byte key/data %sitems\n", 147 cou , ts , dui ? "duplicate " : ""); 148 `TIMER_DISPLAY ( cou ); 150 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 153 } } 156 $b_ld_uge () 158 () `rtf ( dr , 160 ( EXIT_FAILURE ); 161 } } @../build_vxworks/test_micro/b_open.c 4 ~"bch.h " 6 b_ݒ_uge (); 9 $b_ݒ ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB_ENV * dbv ; 14 DB * dbp ; 15 DBTYPE ty ; 16 ch , i , cou ; 17 * ame , * dbme , * ts ; 19 ty = DB_BTREE ; 20 cou = 1000; 21 ame = dbme = NULL ; 22 ts = "Btree"; 23 __db_gt_t = 1; 24 ( ch = `gt ( gc , gv , "c:d:")! EOF ) 25 ch ) { 27 cou = `oi ( ݏrg ); 30 dbme = "dbname"; 33 ame = "filename"; 36 ݏrg [0]) { 38 ts = "Btree"; 39 ty = DB_BTREE ; 42 i( `b_ut_have_hash ()) 44 ts = "Hash"; 45 ty = DB_HASH ; 48 i( `b_ut_have_queue ()) 50 ts = "Queue"; 51 ty = DB_QUEUE ; 54 ts = "Recno"; 55 ty = DB_RECNO ; 58 ( `b_ݒ_uge ()); 63 ( `b_ݒ_uge ()); 65 gc - td ; 66 gv + td ; 67 i( gc != 0) 68 ( `b_ݒ_uge ()); 70 #i DB_VERSION_MAJOR < 4 75 i( ame = NULL && dbme == NULL) 78 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 4 82 i( ame = NULL && dbme != NULL) 87 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 88 dbv -> `t_rfe (dbv, dr ); 89 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 90 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 91 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 93 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 94 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 98 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 100 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 101 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 102 dbp , NULL , ame , dbme , ty , DB_CREATE , 0666) == 0); 104 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 105 dbp , ame , dbme , ty , DB_CREATE , 0666) == 0); 107 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 110 TIMER_START ; 111 i = 0; i < cou ; ++i) { 112 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 113 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 114 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 115 dbp , NULL , ame , dbme , ty , DB_CREATE , 0666) == 0); 117 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 118 dbp , ame , dbme , ty , DB_CREATE , 0666) == 0); 120 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 122 TIMER_STOP ; 124 `tf ("# %d %s %sdatabase open/closeairs\n", 125 cou , ts , 126 ame = NULL ? 127 ( dbme = NULL ? "in-memory " : "named in-memory ") : 128 ( dbme = NULL ? "" : "sub-")); 129 `TIMER_DISPLAY ( cou ); 131 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 134 } } 137 $b_ݒ_uge () 139 () `rtf ( dr , "usage: b_open [-df] [-c count] [-type]\n"); 140 ( EXIT_FAILURE ); 141 } } @../build_vxworks/test_micro/b_put.c 4 ~"bch.h " 6 b_put_uge (); 7 b_put_cdy ( DB *, cڡ DBT *, const DBT *, DBT *); 10 $b_put ( gc , * gv []) 12 * ݏrg ; 13 td , __db_gt_t ; 14 DB_ENV * dbv ; 15 DB * dbp , ** cd ; 16 DBTYPE ty ; 17 DBT key , da ; 18 db_o_t o ; 19 u_t32_t chesize ; 20 ch , dsize , i , cou , cds ; 21 * ts , buf [64]; 23 cd = NULL ; 24 ty = DB_BTREE ; 25 chesize = MEGABYTE ; 26 dsize = 20; 27 cou = 100000; 28 cds = 0; 29 ts = "Btree"; 30 __db_gt_t = 1; 31 ( ch = `gt ( gc , gv , "C:c:d:s:t:")! EOF ) 32 ch ) { 34 chesize = ( u_t32_t ) `oi ( ݏrg ); 37 cou = `oi ( ݏrg ); 40 dsize = `oi ( ݏrg ); 43 cds = `oi ( ݏrg ); 46 ݏrg [0]) { 48 ts = "Btree"; 49 ty = DB_BTREE ; 52 i( `b_ut_have_hash ()) 54 ts = "Hash"; 55 ty = DB_HASH ; 58 i( `b_ut_have_queue ()) 60 ts = "Queue"; 61 ty = DB_QUEUE ; 64 ts = "Recno"; 65 ty = DB_RECNO ; 68 ( `b_put_uge ()); 73 ( `b_put_uge ()); 75 gc - td ; 76 gv + td ; 77 i( gc != 0) 78 ( `b_put_uge ()); 80 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 3 84 i( cds ) 89 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 90 dbv -> `t_rfe (dbv, dr ); 91 `DB_BENCH_ASSERT ( dbv -> `t_chesize (dbv, 0, chesize , 0) == 0); 92 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 93 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 94 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 96 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 97 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 104 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 105 i( ty = DB_QUEUE ) 106 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, ( u_t32_t ) dsize ) == 0); 107 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 108 `DB_BENCH_ASSERT ( 109 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 111 `DB_BENCH_ASSERT ( 112 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 116 i( cds != 0) { 117 `DB_BENCH_ASSERT (( cd = 118 `oc (( DB *), ( size_t ) cds )! NULL ); 119 i = 0; i < cds ; ++i) { 120 `DB_BENCH_ASSERT ( `db_ (& cd [ i ], dbv , 0) == 0); 121 `tf ( buf , (buf), "%d.db", i ); 122 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 123 `DB_BENCH_ASSERT ( cd [ i ]-> `ݒ (cd[i], NULL , 124 buf , NULL , DB_BTREE , DB_CREATE , 0600) == 0); 126 `DB_BENCH_ASSERT ( cd [ i ]-> `ݒ (second[i], 127 buf , NULL , DB_BTREE , DB_CREATE , 0600) == 0); 129 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR >= 3 130 #i DB_VERSION_MAJOR > 3 && DB_VERSION_MINOR > 0 135 `DB_BENCH_ASSERT ( dbp -> `assoc ( 136 dbp , NULL , cd [ i ], b_put_cdy , 0) == 0); 138 `DB_BENCH_ASSERT ( dbp -> `assoc ( 139 dbp , cd [ i ], b_put_cdy , 0) == 0); 146 `memt (& key , 0, (key)); 147 `memt (& da , 0, (data)); 148 ty ) { 149 DB_BTREE : 150 DB_HASH : 151 key . da = "01234567890123456789"; 152 key . size = 20; 154 DB_QUEUE : 155 DB_RECNO : 156 o = 1; 157 key . da = & o ; 158 key . size = ( o ); 160 DB_UNKNOWN : 161 `b_ut_abt (); 165 `DB_BENCH_ASSERT ( 166 ( da .d `mloc (da. size = ( size_t ) dsize )! NULL ); 169 TIMER_START ; 170 i = 0; i < cou ; ++i) 171 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 172 TIMER_STOP ; 174 i( ty = DB_BTREE ||y = DB_HASH ) 175 `tf ( 177 cou , ts , ( u_lg ) dsize ); 179 `tf ("# %d %s databaseut of key, %lu byte data", 180 cou , ts , ( u_lg ) dsize ); 181 i( cds ) 182 `tf (" wh %d secds", cds ); 183 `tf ("\n"); 184 `TIMER_DISPLAY ( cou ); 186 i( cd ! NULL ) { 187 i = 0; i < cds ; ++i) 188 `DB_BENCH_ASSERT ( cd [ i ]-> `o (second[i], 0) == 0); 189 ` ( cd ); 192 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 193 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 196 } } 199 $b_put_cdy ( dbp , pkey , pda , skey ) 200 DB * dbp ; 201 cڡ DBT * pkey , * pda ; 202 DBT * skey ; 204 skey -> da = pkey ->data; 205 skey -> size = pkey ->size; 207 `COMPQUIET ( dbp , NULL ); 208 `COMPQUIET ( pda , NULL ); 210 } } 213 $b_put_uge () 215 () `rtf ( dr , "usage: b_put %s\n", 217 ( EXIT_FAILURE ); 218 } } @../build_vxworks/test_micro/b_recover.c 4 ~"bch.h " 6 b_cov_uge (); 9 $b_cov ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB * dbp ; 14 DBT key , da ; 15 DB_ENV * dbv ; 16 DB_TXN * txn ; 17 u_t32_t chesize ; 18 ch , i , cou ; 24 #i DB_VERSION_MAJOR < 4 27 chesize = MEGABYTE ; 28 cou = 1000; 29 __db_gt_t = 1; 30 ( ch = `gt ( gc , gv , "C:c:")! EOF ) 31 ch ) { 33 chesize = ( u_t32_t ) `oi ( ݏrg ); 36 cou = `oi ( ݏrg ); 40 ( `b_cov_uge ()); 42 gc - td ; 43 gv + td ; 44 i( gc != 0) 45 ( `b_cov_uge ()); 48 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 49 dbv -> `t_rfe (dbv, dr ); 50 `DB_BENCH_ASSERT ( dbv -> `t_chesize (dbv, 0, chesize , 0) == 0); 52 #OFLAGS \ 53 ( DB_CREATE | DB_INIT_LOCK | \ 54 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE ) ) 55 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 56 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , NULL , OFLAGS , 0666) == 0); 58 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 59 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , OFLAGS , 0666) == 0); 61 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 62 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , OFLAGS , 0666) == 0); 66 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 67 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 68 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, NULL , 69 TESTFILE , NULL , DB_BTREE , DB_CREATE | DB_AUTO_COMMIT , 0666) == 0); 71 `DB_BENCH_ASSERT ( 72 dbp -> `ݒ (dbp, TESTFILE , NULL , DB_BTREE , DB_CREATE , 0666) == 0); 76 `memt (& key , 0, (key)); 77 `memt (& da , 0, (data)); 78 key . size = da .size = 20; 79 key . da = data.data = "01234567890123456789"; 82 i = 0; i < cou ; ++i) { 83 #i DB_VERSION_MAJOR < 4 84 `DB_BENCH_ASSERT ( 85 `txn_beg ( dbv , NULL , & txn , DB_TXN_NOSYNC ) == 0); 86 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 87 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 89 `DB_BENCH_ASSERT ( 90 dbv -> `txn_beg (dbv, NULL , & txn , DB_TXN_NOSYNC ) == 0); 91 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 92 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 96 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 97 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 100 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 101 dbv -> `t_rfe (dbv, dr ); 102 `DB_BENCH_ASSERT ( 103 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 106 TIMER_START ; 107 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 108 `DB_BENCH_ASSERT ( dbv -> `ݒ ( 109 dbv , TESTDIR , NULL , OFLAGS | DB_RECOVER , 0666) == 0); 111 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 112 `DB_BENCH_ASSERT ( 113 dbv -> `ݒ (dbv, TESTDIR , OFLAGS | DB_RECOVER , 0666) == 0); 115 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 116 `DB_BENCH_ASSERT ( 117 dbv -> `ݒ (dbv, TESTDIR , OFLAGS | DB_RECOVER , 0666) == 0); 119 TIMER_STOP ; 125 `tf ("#ecovy %dnis\n", cou ); 126 `TIMER_DISPLAY ( cou ); 128 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 131 } } 134 $b_cov_uge () 136 () `rtf ( dr , "usage: b_recover [-C cachesz] [-c count]\n"); 137 ( EXIT_FAILURE ); 138 } } @../build_vxworks/test_micro/b_txn.c 4 ~"bch.h " 6 b_txn_uge (); 9 $b_txn ( gc , * gv []) 11 * ݏrg ; 12 td , __db_gt_t ; 13 DB_ENV * dbv ; 14 DB_TXN * txn ; 15 bt , ch , i , cou ; 17 cou = 1000; 18 bt = 0; 19 __db_gt_t = 1; 20 ( ch = `gt ( gc , gv , "ac:")! EOF ) 21 ch ) { 23 bt = 1; 26 cou = `oi ( ݏrg ); 30 ( `b_txn_uge ()); 32 gc - td ; 33 gv + td ; 34 i( gc != 0) 35 ( `b_txn_uge ()); 38 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 39 dbv -> `t_rfe (dbv, dr ); 40 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 41 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 42 NULL , DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 43 DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE , 0666) == 0); 45 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 46 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 47 DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE , 0666) == 0); 51 TIMER_START ; 52 i( bt ) 53 i = 0; i < cou ; ++i) { 54 #i DB_VERSION_MAJOR < 4 55 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 56 `DB_BENCH_ASSERT ( `txn_abt ( txn ) == 0); 58 `DB_BENCH_ASSERT ( 59 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 60 `DB_BENCH_ASSERT ( txn -> `abt (txn) == 0); 64 i = 0; i < cou ; ++i) { 65 #i DB_VERSION_MAJOR < 4 66 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 67 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 69 `DB_BENCH_ASSERT ( 70 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 71 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 74 TIMER_STOP ; 76 `tf ("# %dmptyransaction start/%sairs\n", 77 cou , bt ? "abort" : "commit"); 78 `TIMER_DISPLAY ( cou ); 80 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 83 } } 86 $b_txn_uge () 88 () `rtf ( dr , "usage: b_txn [-a] [-c count]\n"); 89 ( EXIT_FAILURE ); 90 } } @../build_vxworks/test_micro/b_txn_write.c 4 ~"bch.h " 6 b_txn_wre_uge __P (()); 8 #ifde DB_INIT_REP 9 b_txn_wre_nd __P (( DB_ENV *, 10 cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t )); 17 $b_txn_wre_nd ( dbv , cڌ , c , l , eid , ags ) 18 DB_ENV * dbv ; 19 cڡ DBT * cڌ , * c ; 20 cڡ DB_LSN * l ; 21 eid ; 22 u_t32_t ags ; 24 `COMPQUIET ( dbv , NULL ); 25 `COMPQUIET ( cڌ , NULL ); 26 `COMPQUIET ( c , NULL ); 27 `COMPQUIET ( l , NULL ); 28 `COMPQUIET ( eid , 0); 29 `COMPQUIET ( ags , 0); 31 } } 35 $b_txn_wre ( gc , * gv []) 37 * ݏrg ; 38 td , __db_gt_t ; 39 DB * dbp ; 40 DBT key , da ; 41 DB_ENV * dbv ; 42 DB_TXN * txn ; 43 u_t32_t ags , oags ; 44 ch , i , cou , p_ub ; 45 * cfig ; 47 cou = 1000; 48 oags = ags = 0; 49 p_ub = 0; 50 cfig = "synchronous"; 51 __db_gt_t = 1; 52 ( ch = `gt ( gc , gv , "ac:rw")! EOF ) 53 ch ) { 55 cfig = "nosync"; 56 ags = DB_TXN_NOSYNC ; 59 cou = `oi ( ݏrg ); 62 #ifde DB_INIT_REP 63 p_ub = 1; 65 `ex (0); 69 cfig = "write-nosync"; 70 #ifde DB_TXN_WRITE_NOSYNC 71 ags = DB_TXN_WRITE_NOSYNC ; 73 `ex (0); 78 ( `b_txn_wre_uge ()); 80 gc - td ; 81 gv + td ; 82 i( gc != 0) 83 ( `b_txn_wre_uge ()); 86 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 87 dbv -> `t_rfe (dbv, dr ); 89 #ifde DB_INIT_REP 90 i( p_ub ) { 91 #i DB_VERSION_MAJOR =4 && DB_VERSION_MINOR >= 5 || DB_VERSION_MAJOR > 4 92 `DB_BENCH_ASSERT ( 93 dbv -> `p_t_t (dbv, 1, b_txn_wre_nd ) == 0); 95 `DB_BENCH_ASSERT ( 96 dbv -> `t_p_t (dbv, 1, b_txn_wre_nd ) == 0); 98 oags | DB_INIT_REP ; 101 oags | DB_CREATE | DB_INIT_LOCK | 102 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE ; 103 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 104 `DB_BENCH_ASSERT ( 105 dbv -> `ݒ (dbv, TESTDIR , NULL , ags | oags , 0666) == 0); 107 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 108 `DB_BENCH_ASSERT ( 109 dbv -> `ݒ (dbv, TESTDIR , ags | oags , 0666) == 0); 111 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 112 i( ags != 0) 113 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, ags , 1) == 0); 114 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , oags , 0666) == 0); 117 #ifde DB_INIT_REP 118 i( p_ub ) 119 `DB_BENCH_ASSERT ( 120 dbv -> `p_t (dbv, NULL , DB_REP_MASTER ) == 0); 124 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 125 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 126 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, NULL , 127 TESTFILE , NULL , DB_BTREE , DB_CREATE | DB_AUTO_COMMIT , 0666) == 0); 129 `DB_BENCH_ASSERT ( 130 dbp -> `ݒ (dbp, TESTFILE , NULL , DB_BTREE , DB_CREATE , 0666) == 0); 134 `memt (& key , 0, (key)); 135 `memt (& da , 0, (data)); 136 key . size = da .size = 20; 137 key . da = data.data = "01234567890123456789"; 140 TIMER_START ; 141 i = 0; i < cou ; ++i) { 142 #i DB_VERSION_MAJOR < 4 143 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 144 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 145 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 147 `DB_BENCH_ASSERT ( dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 148 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 149 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 152 TIMER_STOP ; 154 `tf ("# %d %stransactions write %s commitairs\n", 155 cou , p_ub ? "id ": "", cfig ); 156 `TIMER_DISPLAY ( cou ); 158 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 159 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 162 } } 165 $b_txn_wre_uge () 167 () `rtf ( dr , "usage: b_txn_write [-arw] [-c count]\n"); 168 ( EXIT_FAILURE ); 169 } } @../build_vxworks/test_micro/b_uname.c 5 ~"bch.h " 7 #UNAMEFILE "NODENAME" ) 9 b_ume_wre_fo __P (( FILE *)); 12 $b_ume () 14 FILE * ; 15 t ; 17 i(( = `fݒ ( UNAMEFILE , "w")= NULL ) 18 fe_r ; 20 t = `b_ume_wre_fo ( ); 22 i( `fo ( ) != 0) { 23 fe_r : `rtf ( dr , 24 "%s: %s: %s\n", ogme , UNAMEFILE , ` ( o )); 28 ( t ); 29 } } 31 #ifde DB_WIN32 33 $b_ume_wre_fo ( ) 34 FILE * ; 36 OSVERSIONINFO osv ; 37 SYSTEM_INFO sysfo ; 38 * p ; 40 #ifde DB_WINCE 41 p = "WinCE"; 44 DWORD n ; 45 buf [1024]; 47 n = ( buf ) - 1; 48 `GCompurName ( buf , & n ); 49 p = buf ; 52 `rtf ( , "<p>%s, ", p ); 54 `GSyemInfo (& sysfo ); 55 sysfo . wProssArcheu ) { 56 PROCESSOR_ARCHITECTURE_ALPHA : 57 p = "alpha"; 59 PROCESSOR_ARCHITECTURE_INTEL : 60 p = "x86"; 62 PROCESSOR_ARCHITECTURE_MIPS : 63 p = "mips"; 65 PROCESSOR_ARCHITECTURE_PPC : 66 p = "ppc"; 69 p = "unknown"; 72 `rtf ( , "%s<br>\n", p ); 73 `memt (& osv , 0, (osver)); 74 osv . dwOSVsiInfoSize = (osver); 75 `GVsiEx (& osv ); 76 osv . dwPtfmId ) { 77 VER_PLATFORM_WIN32_NT : 78 i( osv . dwMajVsi == 4) 79 p = "Windows NT4x"; 80 i( osv . dwMajVsi <= 3) 81 p = "Windows NT3x"; 82 i( osv . dwMajVsi =5 && osv. dwMVsi < 1) 83 p = "Windows 2000"; 84 i( osv . dwMajVsi >= 5) 85 p = "Windows XP"; 87 p = "unknown"; 89 VER_PLATFORM_WIN32_WINDOWS : 90 i(( osv . dwMajVsi > 4) || 91 (( osv . dwMajVsi =4&& (osv. dwMVsi > 0))) { 92 i( osv . dwMVsi >= 90) 93 p = "Windows ME"; 95 p = "Windows 98"; 97 p = "Windows 95"; 99 VER_PLATFORM_WIN32s : 100 p = "Windows"; 103 p = "unknown"; 106 `rtf ( , 107 "%s, %ld.%02ld", p , osv . dwMajVsi , osv. dwMVsi ); 109 } } 111 #i defed ( HAVE_VXWORKS ) 113 $b_ume_wre_fo ( ) 114 FILE * ; 116 `rtf ( , "<p>VxWorks"); 118 } } 121 ~<sys/utame.h > 124 $b_ume_wre_fo ( ) 125 FILE * ; 127 utame me ; 129 i( `ume (& me ) == 0) 130 `rtf ( , "<p>%s, %s<br>\n%s, %s, %s</p>\n", me . nodame , 131 me . mache ,ame. syame ,ame. a ,ame. vsi ); 137 `rtf ( dr , "%s: ume: %s\n", ogme , ` ( o )); 139 `rtf ( , "<p>POSIX"); 142 } } @../build_vxworks/test_micro/b_util.c 5 ~"bch.h " 7 b_ut_d_move __P ((*)); 10 $b_ut_have_hash () 12 #i `defed ( HAVE_HASH ) ||\ 13 DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 2 16 `rtf ( dr , 20 } } 23 $b_ut_have_queue () 25 #i `defed ( HAVE_QUEUE ) ||\ 26 DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 2 29 `rtf ( dr , 33 } } 40 $b_ut_d_tup () 42 t ; 44 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 3 45 i(( t = `__os_mkd ( NULL , TESTDIR , 0755)) != 0) { 47 i(( t = `mkd ( TESTDIR , 0755)) != 0) { 49 `rtf ( dr , 50 "%s: %s: %s\n", ogme , TESTDIR , `db_ ( t )); 54 } } 56 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 4 57 #OS_EXISTS ( a , b , c `__os_exis , b, c) ) 59 #OS_EXISTS ( a , b , c `__os_exis (b, c) ) 67 $b_ut_d_down () 69 t ; 71 i( `OS_EXISTS ( NULL , TESTFILE , NULL) == 0 && 72 ( t = `b_ut_uƚk ( TESTFILE )) != 0) { 73 `rtf ( dr , 74 "%s: %s: %s\n", ogme , TESTFILE , `db_ ( t )); 77 ( `b_ut_d_move ( TESTDIR ) ? 1 : 0); 78 } } 87 $b_ut_d_move ( d ) 88 * d ; 90 t , i , isd , t ; 91 buf [1024], ** mes ; 93 t = 0; 96 i( `OS_EXISTS ( NULL , d , & isd ) != 0) 100 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 6 101 i(( t = `__os_dli ( NULL , d , 0, & mes , & t )) != 0) 102 ( t ); 104 i(( t = `__os_dli ( NULL , d , & mes , & t )) != 0) 105 ( t ); 108 i = 0; i < t ; ++i) { 109 () `tf ( buf , (buf), 110 "%s%c%s", d , PATH_SEPARATOR [0], mes [ i ]); 111 i(( t = `OS_EXISTS ( NULL , buf , & isd )) != 0) 112 fe_r ; 113 i(! isd && ( t = `b_ut_uƚk ( buf )) != 0) { 114 fe_r : `rtf ( dr , "%s: %s: %s\n", 115 ogme , buf , `db_ ( t )); 120 `__os_d ( NULL , mes , t ); 126 i( i = t && ( t = `rmd ( d )) != 0) 127 `rtf ( dr , 128 "%s: %s: %s\n", ogme , d , `db_ ( o )); 129 ( t ); 130 } } 134 $b_ut_abt () 136 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 6 137 `abt (); 138 #i DB_VERSION_MAJOR =4 && DB_VERSION_MINOR == 6 139 `__os_abt (); 141 `__os_abt ( NULL ); 143 } } 146 $b_ut_uƚk ( th ) 147 * th ; 149 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 7 150 ( `__os_uƚk ( NULL , th )); 152 ( `__os_uƚk ( NULL , th , 0)); 154 } } @../build_vxworks/test_micro/b_workload.c 5 ~"bch.h " 6 ~"b_wkld.h " 8 b_wkld_dump_vbo_s __P (( DB *, CONFIG *)); 9 b_wkld_is_d_wkld __P (()); 10 b_wkld_is_g_wkld __P (()); 11 b_wkld_is_put_wkld __P (()); 12 b_wkld_run_mixed_wkld __P (( DB *, CONFIG *)); 13 b_wkld_run_d_wkld __P (( DB *, CONFIG *)); 14 b_wkld_uge __P (()); 15 * b_wkld_wkld_r __P (()); 24 $b_wkld ( gc , gv ) 25 gc ; 26 * gv []; 28 * ݏrg ; 29 td , __db_gt_t ; 30 CONFIG cf ; 31 DB * dbp ; 32 DB_ENV * dbv ; 33 ch , f , ksz ; 35 dbv = NULL ; 36 `memt (& cf , 0, (conf)); 37 cf . ed = 124087; 38 `d ( cf . ed ); 40 cf . pcou = 100000; 41 cf . ts = "Btree"; 42 cf . ty = DB_BTREE ; 43 cf . dsize = 20; 44 cf . esize = 0; 45 cf . wkld = T_PUT_GET_DELETE ; 47 __db_gt_t = 1; 48 ( ch = `gt ( gc , gv , "b:c:d:e:g:ik:m::r:t:vw:")! EOF ) 49 ch ) { 51 cf . chesz = `oi ( ݏrg ); 54 cf . pcou = `oi ( ݏrg ); 57 cf . dsize = `oi ( ݏrg ); 60 cf . curs_d = `oi ( ݏrg ); 63 cf . gcou = `oi ( ݏrg ); 66 cf . esize = 1; 69 cf . ksize = `oi ( ݏrg ); 72 cf . mesge = ݏrg ; 75 cf . dedkeys = 1; 78 cf . gesz = `oi ( ݏrg ); 81 cf . num_dups = `oi ( ݏrg ); 84 ݏrg [0]) { 86 cf . ts = "Btree"; 87 cf . ty = DB_BTREE ; 90 i( `b_ut_have_hash ()) 92 cf . ts = "Hash"; 93 cf . ty = DB_HASH ; 96 ( `b_wkld_uge ()); 100 cf . vbo = 1; 103 ݏrg [0]) { 105 cf . wkld = T_PUT_GET_DELETE ; 108 cf . wkld = T_GET ; 111 cf . wkld = T_PUT ; 114 cf . wkld = T_DELETE ; 117 cf . wkld = T_PUT_GET ; 120 cf . wkld = T_PUT_DELETE ; 123 cf . wkld = T_GET_DELETE ; 126 cf . wkld = T_MIXED ; 129 ( `b_wkld_uge ()); 134 `rtf ( dr , "Invid oi: %c\n", ch ); 135 ( `b_wkld_uge ()); 137 gc - td ; 138 gv + td ; 139 i( gc != 0) 140 ( `b_wkld_uge ()); 145 i( cf . gesz != 0) 146 `DB_BENCH_ASSERT ( cf . gesz >= 512 && conf.pagesz <= 65536 && 147 (( cf . gesz & (conf.pagesz - 1)) == 0)); 149 i( cf . chesz != 0) 150 `DB_BENCH_ASSERT ( cf . chesz > 20480); 151 `DB_BENCH_ASSERT ( cf . ksize =0 || cf. dedkeys == 0); 154 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 155 dbv -> `t_rfe (dbv, dr ); 156 i( cf . chesz != 0) 157 `DB_BENCH_ASSERT ( 158 dbv -> `t_chesize (dbv, 0, cf . chesz , 0) == 0); 160 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 161 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 162 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 164 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 165 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 168 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 169 i( cf . gesz != 0) 170 `DB_BENCH_ASSERT ( 171 dbp -> `t_gesize (dbp, cf . gesz ) == 0); 172 i( cf . esize !0 && cf. ty = DB_HASH ) { 173 ksz = ( cf . dedkeys !0? ( u_t32_t : cf. ksize ; 174 i( ksz == 0) 175 ksz = 10; 176 f = ( cf . gesz - 32)/( ksz + cf. dsize + 8); 177 `rtf ( dr , "f: %d\n", f ); 178 `DB_BENCH_ASSERT ( 179 dbp -> `t_h_f (dbp, f ) == 0); 180 `DB_BENCH_ASSERT ( 181 dbp -> `t_h_m (dbp, cf . pcou *10) == 0); 183 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 184 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 185 dbp , NULL , TESTFILE , NULL, cf . ty , DB_CREATE , 0666) == 0); 187 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 188 dbp , TESTFILE , NULL , cf . ty , DB_CREATE , 0666) == 0); 191 i( cf . wkld = T_MIXED ) 192 `b_wkld_run_mixed_wkld ( dbp , & cf ); 194 `b_wkld_run_d_wkld ( dbp , & cf ); 196 i( `b_wkld_is_put_wkld ( cf . wkld ) == 0) 197 `timeedd (& cf . t_time , &cf. put_time ); 198 i( `b_wkld_is_g_wkld ( cf . wkld ) == 0) 199 `timeedd (& cf . t_time , &cf. g_time ); 200 i( `b_wkld_is_d_wkld ( cf . wkld ) == 0) 201 `timeedd (& cf . t_time , &cf. d_time ); 204 `DB_BENCH_ASSERT ( dbp -> `sync (dbp, 0) == 0); 206 i( cf . vbo != 0) 207 `b_wkld_dump_vbo_s ( dbp , & cf ); 209 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 210 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 217 `tf ("# workloadest: %s: %s<br>%lu ops", 218 cf . ts , `b_wkld_wkld_r (cf. wkld ), ( u_lg )cf. pcou ); 219 i( cf . ksize != 0) 220 `tf (", key size: %lu", ( u_lg ) cf . ksize ); 221 i( cf . dsize != 0) 222 `tf (", dsize: %lu", ( u_lg ) cf . dsize ); 223 i( cf . gesz != 0) 224 `tf (",agsize: %lu", ( u_lg ) cf . gesz ); 226 `tf (",age size: default"); 227 i( cf . chesz != 0) 228 `tf (", cachsize: %lu", ( u_lg ) cf . chesz ); 230 `tf (", cache size: default"); 231 `tf (", %keys", cf . dedkeys == 1 ? "ordered" : "unordered"); 232 `tf (",um dups: %lu", ( u_lg ) cf . num_dups ); 233 `tf ("\n"); 235 i( cf . wkld ! T_MIXED ) { 236 i( cf . mesge ! NULL ) 237 `tf ("%%", cf . mesge , cf. ts ); 238 `TIME_DISPLAY ( cf . pcou , cf. t_time ); 240 `TIMER_DISPLAY ( cf . pcou ); 243 } } 256 #GET_PROPORTION 90 ) 257 #PUT_PROPORTION 7 ) 258 #DEL_PROPORTION 3 ) 261 $b_wkld_run_mixed_wkld ( dbp , cfig ) 262 DB * dbp ; 263 CONFIG * cfig ; 265 DBT key , da ; 266 size_t xt_ , i , ioff ; 267 kbuf [ KBUF_LEN ]; 268 bch_q ݔi_queue ; 271 `DB_BENCH_ASSERT ( cfig -> dedkeys == 0); 273 `d ( cfig -> ed ); 274 `memt (& ݔi_queue , 0, ( bch_q )); 276 ioff = 0; 277 `INIT_KEY ( key , cfig ); 278 `memt (& da , 0, (data)); 279 `DB_BENCH_ASSERT ( 280 ( da .d `mloc (da. size = cfig -> dsize )! NULL ); 287 i = 0; i < 2 * cfig -> pcou ; ++i) { 288 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 289 `BENCH_Q_TAIL_INSERT ( ݔi_queue , kbuf ); 290 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 293 TIMER_START ; 294 i = 0; i < cfig -> pcou ; ++i) { 295 xt_ = `nd ()%100; 297 i( xt_ < GET_PROPORTION ) { 298 `BENCH_Q_POP_PUSH ( ݔi_queue , kbuf ); 299 key . da = kbuf ; 300 key . size = ( kbuf ); 301 dbp -> `g (dbp, NULL , & key , & da , 0); 302 } i( xt_ < GET_PROPORTION + PUT_PROPORTION ) { 303 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 304 `BENCH_Q_TAIL_INSERT ( ݔi_queue , kbuf ); 305 dbp -> `put (dbp, NULL , & key , & da , 0); 307 `BENCH_Q_POP ( ݔi_queue , kbuf ); 308 key . da = kbuf ; 309 key . size = ( kbuf ); 310 dbp -> `d (dbp, NULL , & key , 0); 313 TIMER_STOP ; 314 `TIMER_GET ( cfig -> t_time ); 317 } } 320 $b_wkld_run_d_wkld ( dbp , cfig ) 321 DB * dbp ; 322 CONFIG * cfig ; 324 DBT key , da ; 325 DBC * dbc ; 326 u_t32_t i ; 327 t ; 328 kbuf [ KBUF_LEN ]; 331 `INIT_KEY ( key , cfig ); 332 `memt (& da , 0, (data)); 333 `DB_BENCH_ASSERT ( 334 ( da .d `mloc (da. size = cfig -> dsize )! NULL ); 337 TIMER_START ; 338 i = 0; i < cfig -> pcou ; ++i) { 339 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 340 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 342 TIMER_STOP ; 343 `TIMER_GET ( cfig -> put_time ); 345 i( `b_wkld_is_g_wkld ( cfig -> wkld ) == 0) { 346 TIMER_START ; 347 i = 0; i < cfig -> gcou ; ++i) { 348 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 349 ( dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0); 350 `DB_BENCH_ASSERT ( dbc -> `c_o (dbc) == 0); 352 TIMER_STOP ; 353 `TIMER_GET ( cfig -> g_time ); 356 i( `b_wkld_is_d_wkld ( cfig -> wkld ) == 0) { 358 `d ( cfig -> ed ); 360 TIMER_START ; 361 i( cfig -> curs_d != 0) { 362 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 364 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) 365 `DB_BENCH_ASSERT ( dbc -> `c_d (dbc, 0) == 0); 366 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 368 `INIT_KEY ( key , cfig ); 369 i = 0; i < cfig -> pcou ; ++i) { 370 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 372 t = dbp -> `d (dbp, NULL , & key , 0); 377 i( cfig -> ksize == 0) 378 DB_BENCH_ASSERT 379 ( t =0 || = DB_NOTFOUND ); 381 `DB_BENCH_ASSERT ( t == 0); 384 TIMER_STOP ; 385 `TIMER_GET ( cfig -> d_time ); 388 } } 391 $b_wkld_dump_vbo_s ( dbp , cfig ) 392 DB * dbp ; 393 CONFIG * cfig ; 399 #ifde DB_WIN32 400 _ f ; 402 f ; 404 DB_HASH_STAT * h ; 405 DB_BTREE_STAT * b ; 406 _ ; 407 th [1024]; 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 `b_wkld_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( `b_wkld_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( `b_wkld_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( `b_wkld_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( `b_wkld_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 () `tf ( th , (path), 459 "%s%c%s", TESTDIR , PATH_SEPARATOR [0], TESTFILE ); 460 #ifde DB_WIN32 461 i( `_ ( th , & f ) == 0) { 463 i( ` ( th , & f ) == 0) { 465 `tf ("%s Size of db file (%s): %lu K\n", 466 cfig -> mesge [0] == '\0' ? "" : config->message, 467 cfig -> ts , ( u_lg ) f . _size /1024); 470 i( cfig -> ty = DB_HASH ) { 471 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR <= 2 472 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & h , NULL , 0) == 0); 473 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR <= 2 474 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & h , 0) == 0); 476 `DB_BENCH_ASSERT ( dbp -> ` (dbp, NULL , & h , 0) == 0); 482 _ = h -> hash_gesize *h-> hash_bucks ; 483 _ + h -> hash_gesize *h-> hash_ovows ; 484 _ = 485 ( _ - h -> hash_b - h-> hash_ov_ )/ 486 _ ; 487 `tf ("%s db fill factor (%s): %.2f%%\n", 488 cfig -> mesge [0] == '\0' ? "" : config->message, 489 cfig -> ts , _ *100); 490 ` ( h ); 492 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR <= 2 493 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & b , NULL , 0) == 0); 494 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR <= 2 495 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & b , 0) == 0); 497 `DB_BENCH_ASSERT ( dbp -> ` (dbp, NULL , & b , 0) == 0); 499 _ = b -> bt_gesize *b-> bt_af_pg ; 500 _ = (_- b -> bt_af_pg )/free_prop; 501 `tf ("%s db fill factor (%s): %.2f%%\n", 502 cfig -> mesge [0] == '\0' ? "" : config->message, 503 cfig -> ts , _ *100); 504 ` ( b ); 507 } } 510 $b_wkld_wkld_r ( wkld ) 511 wkld ; 513 buf [128]; 515 wkld ) { 516 T_PUT_GET_DELETE : 519 T_GET : 522 T_PUT : 525 T_DELETE : 528 T_PUT_GET : 531 T_PUT_DELETE : 534 T_GET_DELETE : 537 T_MIXED : 538 `tf ( buf , (buf), "MIXED (get: %d,ut: %d, del: %d)", 539 () GET_PROPORTION , 540 () PUT_PROPORTION , () DEL_PROPORTION ); 541 ( buf ); 546 `ex ( `b_wkld_uge ()); 548 } } 551 $b_wkld_is_g_wkld ( wkld ) 552 wkld ; 554 wkld ) { 555 T_GET : 556 T_PUT_GET : 557 T_PUT_GET_DELETE : 558 T_GET_DELETE : 562 } } 565 $b_wkld_is_put_wkld ( wkld ) 566 wkld ; 568 wkld ) { 569 T_PUT : 570 T_PUT_GET : 571 T_PUT_GET_DELETE : 572 T_PUT_DELETE : 576 } } 579 $b_wkld_is_d_wkld ( wkld ) 580 wkld ; 582 wkld ) { 583 T_DELETE : 584 T_PUT_DELETE : 585 T_PUT_GET_DELETE : 586 T_GET_DELETE : 590 } } 593 $b_wkld_uge () 595 () `rtf ( dr , 597 () `rtf ( dr , 599 () `rtf ( dr , "\t[-r dup_count] [-type] [-wype]\n"); 601 () `rtf ( dr , "Where:\n"); 602 () `rtf ( dr , "\t-bhe size ofhe DB cache.\n"); 603 () `rtf ( dr , "\t-cheumber oflementso be measured.\n"); 604 () `rtf ( dr , "\t-dhe size ofach datalement.\n"); 605 () `rtf ( dr , "\t-e deletentries using cursor.\n"); 606 () `rtf ( dr , "\t-gumber of get cursorraverses.\n"); 607 () `rtf ( dr , "\t-i Pre-init hash DB bucket count.\n"); 608 () `rtf ( dr , "\t-khe size ofach key inserted.\n"); 609 () `rtf ( dr , "\t-m messagere-pendedoog output.\n"); 610 () `rtf ( dr , "\t-o keys should be ordered for insert.\n"); 611 () `rtf ( dr , "\t-pheage size forhe database.\n"); 612 () `rtf ( dr , "\t-rheumber of duplicateso insert\n"); 613 () `rtf ( dr , "\t-type ofhe underlying database.\n"); 614 () `rtf ( dr , "\t-whe workloado measure,vailable:\n"); 615 () `rtf ( dr , "\t\tA - PUT_GET_DELETE\n"); 616 () `rtf ( dr , "\t\tB - GET\n"); 617 () `rtf ( dr , "\t\tC - PUT\n"); 618 () `rtf ( dr , "\t\tD - DELETE\n"); 619 () `rtf ( dr , "\t\tE - PUT_GET\n"); 620 () `rtf ( dr , "\t\tF - PUT_DELETE\n"); 621 () `rtf ( dr , "\t\tG - GET_DELETE\n"); 622 () `rtf ( dr , "\t\tH - MIXED\n"); 623 ( EXIT_FAILURE ); 624 } } @../build_vxworks/test_micro/test_micro.c 5 ~"bch.h " 7 _mio_ma __P ((, *[])); 9 _mio_run __P ((*)); 10 _mio_uge __P (()); 12 * gogme ; 14 g_t = 1; 15 g_d = 0; 18 * mme ; 19 (* mf )(, *[]); 20 } gcmdli [] = { 21 { "b_cuoc", b_cuoc }, 22 { "b_curwk", b_curwk }, 23 { "b_d", b_d }, 24 { "b_g", b_g }, 25 { "b_mem", b_mem }, 26 { "b_ld", b_ld }, 27 { "b_ݒ", b_ݒ }, 28 { "b_put", b_put }, 29 { "b_cov", b_cov }, 30 { "b_txn", b_txn }, 31 { "b_txn_wre", b_txn_wre }, 32 { "b_wkld", b_wkld }, 33 { NULL , NULL } 37 $_mio ( gs ) 38 * gs ; 40 gc ; 41 ** gv ; 43 `__db_ut_g ("_mio", gs , & gc , & gv ); 44 ( `_mio_ma ( gc , gv ? EXIT_FAILURE : EXIT_SUCCESS ); 45 } } 47 ~<dio.h > 48 #ERROR_RETURN ERROR ) 51 $_mio_ma ( gc , gv ) 52 gc ; 53 * gv []; 55 * ݏrg ; 56 td , __db_gt_t ; 57 ch , t ; 58 * run_dey , * ife ; 60 i(( ogme = `__db_h ( gv [0])= NULL ) 61 ogme = gv [0]; 63 ++ ogme ; 65 #ifde DB_BREW 66 i( `bdb_bw_beg () != 0) { 67 `rtf ( dr , 69 ( EXIT_FAILURE ); 73 run_dey = NULL ; 74 ife = "run.std"; 75 __db_gt_t = 1; 76 ( ch = `gt ( gc , gv , "d:e:i:s:")! EOF ) 77 ch ) { 79 run_dey = ݏrg ; 82 _d = `oi ( ݏrg ); 85 ife = ݏrg ; 88 _t = `oi ( ݏrg ); 92 ( `_mio_uge ()); 94 gc - td ; 95 gv + td ; 98 i( run_dey ! NULL && `chd (run_directory) != 0) { 99 `rtf ( dr , 100 "%s: %s: %s\n", ogme , run_dey , ` ( o )); 105 i( `b_ut_d_down ()) 108 t = `_mio_run ( ife ); 110 #ifde DB_BREW 111 `bdb_bw_d (); 114 ( t ? EXIT_FAILURE : EXIT_SUCCESS ); 115 } } 122 $_mio_run ( ife ) 123 * ife ; 125 #ifde HAVE_GETOPT_OPTRESET 126 et ; 128 td , __db_gt_t ; 129 _cur = 0; 130 FILE * i ; 131 gc , cmddx , lo , t ; 132 * p , cmd [1024], th [1024], ** gv ; 135 i( `b_ume () != 0) 139 i(( i = `fݒ ( ife , "r")= NULL ) { 140 `rtf ( dr , 141 "%s: %s: %s\n", ogme , ife , ` ( o )); 145 lo = 1; `fgs ( cmd , (cmd), i ! NULL ; ++lineno) { 150 i(( p = `rchr ( cmd , '\n')= NULL ) { 151 fm_r : `rtf ( dr , "%s: %s:ine %d: illegal input\n", 152 ogme , ife , lo ); 155 i( p > cmd &&[-1] == '\r') 156 -- p ; 157 * p = '\0'; 160 i( cmd [0] == '\0' || cmd[0] == '#') 164 i(++ _cur < _t || 165 ( _d !0 && _cur >est_end)) 168 `rtf ( dr , "%d: %s\n", _cur , cmd ); 171 i(( p = `rchr ( cmd , ' ')= NULL ) 172 fm_r ; 173 * p ++ = '\0'; 174 cmddx = 0; cmdli [cmddx]. me ! NULL ; ++cmdindx) 175 i( `rcmp ( cmd , cmdli [ cmddx ]. me ) == 0) 177 i( cmdli [ cmddx ]. me = NULL ) 178 fm_r ; 181 i( `__db_ut_g ( cmd , p , & gc , & gv ) != 0) 185 () `tf ( th , թh), "%d", _cur ); 186 i( `eݒ ( th , "a", dout = NULL ) { 187 `rtf ( dr , 188 "%s: %s: %s\n", ogme , th , ` ( o )); 196 #ifde HAVE_GETOPT_OPTRESET 197 et = 1; 199 td = 1; 202 i( `b_ut_d_tup ()) 205 t = cmdli [ cmddx ]. `f ( gc , gv ); 208 i( `b_ut_d_down ()) 211 () `fush ( dout ); 213 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 1 214 `__os_ ( NULL , gv , 0); 216 `__os_ ( NULL , gv ); 218 i( t != 0) 219 ( t ); 223 } } 226 $_mio_uge () 228 () `rtf ( dr , 230 ogme ); 231 ( EXIT_FAILURE ); 232 } } @../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_v_t_func_ @3 7 db_v_t_func_mloc @4 8 db_v_t_func_loc @5 9 db_qu_ @6 10 db_ @7 11 db_vsi @8 12 db_xa_swch @9 13 log_com @10 14 __db_dbm_o @11 15 __db_dbm_de @12 16 __db_dbm_tch @13 17 __db_dbm_fkey @14 18 __db_dbm_ @15 19 __db_dbm_xtkey @16 20 __db_dbm_e @17 21 __db_g_ags_ @18 22 __db_g_q_ags_ @19 23 __db_h @20 24 __db_hderoy @21 25 __db_hch @22 26 __db_ldme @23 27 __db_ndbm_ @24 28 __db_ndbm_o @25 29 __db_ndbm_de @26 30 __db_ndbm_do @27 31 __db_ndbm_r @28 32 __db_ndbm_tch @29 33 __db_ndbm_fkey @30 34 __db_ndbm_xtkey @31 35 __db_ndbm_ݒ @32 36 __db_ndbm_go @33 37 __db_ndbm_rdly @34 38 __db_ndbm_e @35 39 __db_w32_mux_lock @36 40 __db_w32_mux_uock @37 41 __v_nic @38 42 __ham_func2 @39 43 __ham_func3 @40 44 __ham_func4 @41 45 __ham_func5 @42 46 __ham_ @43 47 __lock_id_t @44 48 __os_oc @45 49 __os_ohd @46 50 __os_d @47 51 __os_dli @48 52 __os_ @49 53 __os_fsync @50 54 __os_g_sy @51 55 __os_gv @52 56 __os_iofo @53 57 __os_mloc @54 58 __os_mkd @55 59 __os_ݒ @56 60 __os_ݒhd @57 61 __os_posix_r @58 62 __os_ad @59 63 __os_loc @60 64 __os_me @61 65 __os_rdup @62 66 __os_umloc @63 67 __os_uƚk @64 68 __os_wre @65 69 __txn_id_t @66 70 __bam_adj_ad @67 71 __bam_dju_ad @68 72 __bam_cd_ad @69 73 __bam_cudj_ad @70 74 __bam_mge_44_ad @71 75 __bam_mge_ad @72 76 __bam_pg @73 77 __bam_pgno_ad @74 78 __bam_pgout @75 79 __bam_rcudj_ad @76 80 __bam_lk_43_ad @77 81 __bam_lk_ad @78 82 __bam__ad @79 83 __bam_ro_ad @80 84 __bam_rl_ad @81 85 __bam_l_ad @82 86 __cfig_l @83 87 __d_mem__ad @84 88 __d_mem_move_ad @85 89 __d_mem_me_ad @86 90 __d_masub_ad @87 91 __db_Crp @88 92 __db_add_covy_t @89 93 __db_addm_ad @90 94 __db_big_ad @91 95 __db_cksum_ad @92 96 __db_debug_ad @93 97 __db_dich @94 98 __db_dl @95 99 __db_dume @96 100 __db_r @97 101 __db_rx @98 102 __db_glg @99 103 __db_gulg @100 104 __db_glob_vues @101 105 __db_isbigdn @102 106 __db_mkth @103 107 __db_msg @104 108 __db_no_ad @105 109 __db_ovf_ad @106 110 __db_pg_loc_42_ad @107 111 __db_pg_loc_ad @108 112 __db_pg__42_ad @109 113 __db_pg__ad @110 114 __db_pg_da_42_ad @111 115 __db_pg_da_ad @112 116 __db_pg__ad @113 117 __db_pg_st_ad @114 118 __db_pg @115 119 __db_pgout @116 120 __db__back @117 121 __db_lk_42_ad @118 122 __db_h @119 123 __db__ @120 124 __db__t_ @121 125 __db_ut_che @122 126 __db_ut_ued @123 127 __db_ut_logt @124 128 __db_ut_sig @125 129 __db_ut_signd @126 130 __db_vify_ @127 131 __dbg_gi_ad @128 132 __f__ad @129 133 __f_fe_move_ad @130 134 __f_move_ad @131 135 __f_me_ad @132 136 __f_wre_ad @133 137 __ham_chgpg_ad @134 138 __ham_cyge_ad @135 139 __ham_cudj_ad @136 140 __ham_g_ma @137 141 __ham_grouoc_42_ad @138 142 __ham_grouoc_ad @139 143 __ham_sd_ad @140 144 __ham_magroup_42_ad @141 145 __ham_magroup_ad @142 146 __ham_wge_ad @143 147 __ham_pg @144 148 __ham_pgout @145 149 __ham_a_ma @146 150 __ham_a_ad @147 151 __ham_lda_ad @148 152 __lock_li_t @149 153 __log__ @150 154 __mux_t_wa_fo @151 155 __os_abt @152 156 __os_abh @153 157 __os_u_cou @154 158 __os_ime @155 159 __os_exis @156 160 __os_fdlock @157 161 __os_feid @158 162 __os_addrfo @159 163 __os_g_o @160 164 __os_gaddrfo @161 165 __os_gtime @162 166 __os_id @163 167 __os_io @164 168 __os_io @165 169 __os_mfe @166 170 __os_physwre @167 171 __os_ek @168 172 __os_t_o @169 173 __os_un @170 174 __os_u @171 175 __os_unique_id @172 176 __os_unmfe @173 177 __os_uloc @174 178 __os_yld @175 179 __qam_add_ad @176 180 __qam_d_ad @177 181 __qam_dext_ad @178 182 __qam_cf_ad @179 183 __qam_mvr_ad @180 184 __qam_pg_out @181 185 __p__t @182 186 __txn_chd_ad @183 187 __txn_ckp_42_ad @184 188 __txn_ckp_ad @185 189 __txn_cye_ad @186 190 __txn_g_42_ad @187 191 __txn_g_ad @188 192 __txn_xa_g_ad @189 @../build_windows/libdb.rc 1 1 VERSIONINFO 2 gFILEVERSION 4,0,7,25 3 gPRODUCTVERSION 4,0,7,25 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.7 DLL\0" 21 gVALUE "FileVersion", "4.7.25\0" 22 gVALUE "InternalName", "libdb47.dll\0" 23 gVALUE "LegalCopyright", "Copyright Oracle 1997,2008\0" 24 gVALUE "OriginalFilename", "libdb47.dll\0" 25 gVALUE "ProductName", "Oracleibdb\0" 26 gVALUE "ProductVersion", "4.7.25\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/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 i( 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 ( NULL ); 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 } } @../clib/time.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 time_t 21 $time ( nowp ) 22 time_t * nowp ; 24 db_timeec t ; 25 time_t s ; 27 `__os_gtime ( NULL , & t , 0); 29 s = t . tv_c +. tv_nc / NS_PER_SEC ; 31 i( nowp ! NULL ) 32 * nowp = s ; 33 ( s ); 34 } } @../common/crypto_stub.c 9 ~"db_cfig.h " 11 ~"db_t.h " 25 $__yo_gi_ ( v ) 26 ENV * v ; 28 REGENV * nv ; 29 REGINFO * f ; 30 t ; 32 f = v -> gfo ; 33 nv = f -> imy ; 34 `MUTEX_LOCK ( v , nv -> mtx_gv ); 35 t = !( nv -> ch_off = INVALID_ROFF ); 36 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 38 i( t == 0) 41 `__db_rx ( v , 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 ( v , ld ) 43 ENV * v ; 44 ld ; 46 ld ) { 50 i(! `F_ISSET ( v , ENV_LITTLEENDIAN )) 51 ( DB_SWAPBYTES ); 54 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) 55 ( DB_SWAPBYTES ); 58 `__db_rx ( v , 60 ( EINVAL ); 63 } } @../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 ( v , me , ags , ok_ags ) 30 ENV * v ; 31 cڡ * me ; 32 u_t32_t ags , ok_ags ; 34 ( `LF_ISSET (~ ok_ags ? `__db_ ( v , me , 0) : 0); 35 } } 45 $__db_fcchk ( v , me , ags , ag1 , ag2 ) 46 ENV * v ; 47 cڡ * me ; 48 u_t32_t ags , ag1 , ag2 ; 50 ( `LF_ISSET ( ag1 ) && 51 `LF_ISSET ( ag2 ? `__db_ ( v , me , 1) : 0); 52 } } 61 $__db_ ( v , me , iscombo ) 62 cڡ ENV * v ; 63 cڡ * me ; 64 iscombo ; 66 `__db_rx ( v , "illegal flag %sspecifiedo %s", 67 iscombo ? "combi " : "", me ); 68 ( EINVAL ); 69 } } 78 $__db_l ( v , me ) 79 cڡ ENV * v ; 80 cڡ * me ; 82 `__db_rx ( v , 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 -> v , 106 "ubˁ/vg%lu", ( u_lg ) pgno ); 107 ( `__v_nic ( dbp -> v , rv )); 108 } } 117 $__db_pgfmt ( v , pgno ) 118 ENV * v ; 119 db_pgno_t pgno ; 121 `__db_rx ( v , "g%lu: iegagty ofm", ( u_lg ) pgno ); 122 ( `__v_nic ( v , EINVAL )); 123 } } 125 #ifde DIAGNOSTIC 135 $__db_as ( v , e , fe , le ) 136 ENV * v ; 137 cڡ * e , * fe ; 138 le ; 140 `__db_rx ( v , "as fau: %s/%d: \"%s\"", fe , le , e ); 142 `__os_abt ( v ); 144 } } 154 $__v_nic_msg ( v ) 155 ENV * v ; 157 DB_ENV * dbv ; 158 t ; 160 dbv = v ->dbenv; 162 t = DB_RUNRECOVERY ; 164 `__db_rx ( v , "PANIC: fatalegionrror detected;unecovery"); 166 i( dbv -> db_nic ! NULL ) 167 dbv -> `db_nic (dbv, t ); 168 `DB_EVENT ( v , DB_EVENT_PANIC , & t ); 170 ( t ); 171 } } 180 $__v_nic ( v , rv ) 181 ENV * v ; 182 rv ; 184 DB_ENV * dbv ; 186 dbv = v ->dbenv; 188 i( v ! NULL ) { 189 `__v_nic_t ( v , 1); 191 `__db_r ( v , rv , "PANIC"); 193 i( dbv -> db_nic ! NULL ) 194 dbv -> `db_nic (dbv, rv ); 195 `DB_EVENT ( v , DB_EVENT_PANIC , & rv ); 198 #i `defed ( DIAGNOSTIC && !defed( CONFIG_TEST ) 206 `__os_abt ( v ); 215 ( DB_RUNRECOVERY ); 216 } } 225 $db_ ( r ) 226 r ; 228 * p ; 230 i( r == 0) 232 i( r > 0) { 233 i(( p = ` ( r )! NULL ) 234 ( p ); 235 ( `__db_unknown_r ( r )); 245 r ) { 246 DB_BUFFER_SMALL : 249 DB_DONOTINDEX : 251 DB_FOREIGN_CONFLICT : 254 DB_KEYEMPTY : 256 DB_KEYEXIST : 258 DB_LOCK_DEADLOCK : 261 DB_LOCK_NOTGRANTED : 263 DB_LOG_BUFFER_FULL : 265 DB_NOSERVER : 267 DB_NOSERVER_HOME : 269 DB_NOSERVER_ID : 271 DB_NOTFOUND : 273 DB_OLD_VERSION : 275 DB_PAGE_NOTFOUND : 277 DB_REP_DUPMASTER : 279 DB_REP_HANDLE_DEAD : 281 DB_REP_HOLDELECTION : 283 DB_REP_IGNORE : 285 DB_REP_ISPERM : 287 DB_REP_JOIN_FAILURE : 290 DB_REP_LEASE_EXPIRED : 293 DB_REP_LOCKOUT : 296 DB_REP_NEWSITE : 298 DB_REP_NOTPERM : 300 DB_REP_UNAVAIL : 302 DB_RUNRECOVERY : 304 DB_SECONDARY_BAD : 307 DB_VERIFY_BAD : 309 DB_VERSION_MISMATCH : 316 ( `__db_unknown_r ( r )); 317 } } 326 $__db_unknown_r ( r ) 327 r ; 340 () `tf ( `DB_GLOBAL ( r_buf ), 341 ( `DB_GLOBAL ( r_buf )), "Unknowr: %d", r ); 342 ( `DB_GLOBAL ( r_buf )); 343 } } 353 #ifde STDC_HEADERS 354 $__db_sy (cڡ ENV * v , r , cڡ * fmt , ...) 356 $__db_sy ( v , r , fmt , va_i ) 357 cڡ ENV * v ; 358 r ; 359 cڡ * fmt ; 360 va_d 363 DB_ENV * dbv ; 365 dbv = v = NULL ? NULL :nv->dbenv; 372 `DB_REAL_ERR ( dbv , r , DB_ERROR_SYSTEM , 0, fmt ); 373 } } 383 #ifde STDC_HEADERS 384 $__db_r (cڡ ENV * v , r , cڡ * fmt , ...) 386 $__db_r ( v , r , fmt , va_i ) 387 cڡ ENV * v ; 388 r ; 389 cڡ * fmt ; 390 va_d 393 DB_ENV * dbv ; 395 dbv = v = NULL ? NULL :nv->dbenv; 401 `DB_REAL_ERR ( dbv , r , DB_ERROR_SET , 0, fmt ); 402 } } 412 #ifde STDC_HEADERS 413 $__db_rx (cڡ ENV * v , cڡ * fmt , ...) 415 $__db_rx ( v , fmt , va_i ) 416 cڡ ENV * v ; 417 cڡ * fmt ; 418 va_d 421 DB_ENV * dbv ; 423 dbv = v = NULL ? NULL :nv->dbenv; 429 `DB_REAL_ERR ( dbv , 0, DB_ERROR_NOT_SET , 0, fmt ); 430 } } 440 $__db_r ( dbv , r , r_t , fmt , ) 441 cڡ DB_ENV * dbv ; 442 r ; 443 db_r_t_t r_t ; 444 cڡ * fmt ; 445 va_li ; 447 * p ; 448 buf [2048]; 449 sysbuf [1024]; 451 p = buf ; 452 i( fmt ! NULL ) 453 p + `vtf ( buf , (buf), fmt , ); 454 i( r_t ! DB_ERROR_NOT_SET ) 455 p + `tf (p, 456 ( buf - ( size_t )( p - buf), ": %s", 457 r_t = DB_ERROR_SET ? `db_ ( r ) : 458 `__os_ ( r , sysbuf , (sysbuf))); 460 dbv -> `db_r (dbv, dbv-> db_fx , buf ); 461 } } 471 $__db_rfe ( dbv , r , r_t , fmt , ) 472 cڡ DB_ENV * dbv ; 473 r ; 474 db_r_t_t r_t ; 475 cڡ * fmt ; 476 va_li ; 478 FILE * ; 479 ed_p ; 480 sysbuf [1024]; 482 = dbv = NULL || 483 dbv -> db_rfe = NULL ? dr : dbenv->db_errfile; 484 ed_p = 0; 486 i( dbv ! NULL && dbv-> db_fx != NULL) { 487 () `rtf ( , "%s", dbv -> db_fx ); 488 ed_p = 1; 490 i( fmt ! NULL && fmt[0] != '\0') { 491 i( ed_p ) 492 () `rtf ( , ": "); 493 ed_p = 1; 494 () `vrtf ( , fmt , ); 496 i( r_t ! DB_ERROR_NOT_SET ) 497 () `rtf ( , "%s%s", 498 ed_p ? ": " : "", 499 r_t = DB_ERROR_SET ? `db_ ( r ) : 500 `__os_ ( r , sysbuf , (sysbuf))); 501 () `rtf ( , "\n"); 502 () `fush ( ); 503 } } 513 #ifde STDC_HEADERS 514 $__db_msgadd ( ENV * v , DB_MSGBUF * mbp , cڡ * fmt , ...) 516 $__db_msgadd ( v , mbp , fmt , va_i ) 517 ENV * v ; 518 DB_MSGBUF * mbp ; 519 cڡ * fmt ; 520 va_d 523 va_li ; 525 #ifde STDC_HEADERS 526 `va_t ( , fmt ); 528 `va_t ( ); 530 `__db_msgadd_ ( v , mbp , fmt , ); 531 `va_d ( ); 532 } } 542 $__db_msgadd_ ( v , mbp , fmt , ) 543 ENV * v ; 544 DB_MSGBUF * mbp ; 545 cڡ * fmt ; 546 va_li ; 548 size_t n , ޒ ; 549 buf [2048]; 551 n = ( size_t ) `vtf ( buf , (buf), fmt , ); 558 ޒ = ( size_t )( mbp -> cur - mbp-> buf ); 559 i( ޒ + n > mbp ->len) { 560 i( `__os_loc ( v , mbp -> n + + 256, &mbp-> buf )) 562 mbp -> n += (len + 256); 563 mbp -> cur = mbp-> buf + ޒ ; 566 `memy ( mbp -> cur , buf , n + 1); 567 mbp -> cur + n ; 568 } } 578 #ifde STDC_HEADERS 579 $__db_msg (cڡ ENV * v , cڡ * fmt , ...) 581 $__db_msg ( v , fmt , va_i ) 582 cڡ ENV * v ; 583 cڡ * fmt ; 584 va_d 587 DB_ENV * dbv ; 589 dbv = v = NULL ? NULL :nv->dbenv; 591 `DB_REAL_MSG ( dbv , fmt ); 592 } } 599 $__db_msg ( dbv , fmt , ) 600 cڡ DB_ENV * dbv ; 601 cڡ * fmt ; 602 va_li ; 604 buf [2048]; 606 () `vtf ( buf , (buf), fmt , ); 608 dbv -> `db_msg (dbv, buf ); 609 } } 616 $__db_msgfe ( dbv , fmt , ) 617 cڡ DB_ENV * dbv ; 618 cڡ * fmt ; 619 va_li ; 621 FILE * ; 623 = dbv = NULL || 624 dbv -> db_msgfe = NULL ? dout : dbenv->db_msgfile; 625 () `vrtf ( , fmt , ); 627 () `rtf ( , "\n"); 628 () `fush ( ); 629 } } 637 $__db_unknown_ag ( v , route , ag ) 638 ENV * v ; 639 * route ; 640 u_t32_t ag ; 642 `__db_rx ( v , "%s: Unknowag: %#x", route , ( u_t ) ag ); 644 #ifde DIAGNOSTIC 645 `__os_abt ( v ); 648 ( EINVAL ); 649 } } 657 $__db_unknown_ty ( v , route , ty ) 658 ENV * v ; 659 * route ; 660 DBTYPE ty ; 662 `__db_rx ( v , 664 route , `__db_dbty_to_rg ( ty )); 666 #ifde DIAGNOSTIC 667 `__os_abt ( v ); 670 ( EINVAL ); 671 } } 679 $__db_unknown_th ( v , route ) 680 ENV * v ; 681 * route ; 683 `__db_rx ( v , "%s: Uxed codth", route ); 685 #ifde DIAGNOSTIC 686 `__os_abt ( v ); 689 ( EINVAL ); 690 } } 699 $__db_check_txn ( dbp , txn , assoc_lock , ad_ ) 700 DB * dbp ; 701 DB_TXN * txn ; 702 DB_LOCKER * assoc_lock ; 703 ad_ ; 705 ENV * v ; 706 i , t ; 708 v = dbp ->env; 718 i( `IS_RECOVERING ( v || `F_ISSET ( dbp , DB_AM_RECOVER )) 727 i( txn = NULL || `F_ISSET xn, TXN_PRIVATE )) { 728 i( dbp -> cur_lock ! NULL && 729 dbp -> cur_lock -> id > TXN_MINIMUM ) 730 ݒ_r ; 732 i(! ad_ && `F_ISSET ( dbp , DB_AM_TXN )) { 733 `__db_rx ( v , 735 ( EINVAL ); 737 } i( `F_ISSET ( txn , TXN_CDSGROUP )) { 738 i(! `CDB_LOCKING ( v )) { 739 `__db_rx ( v , 741 ( EINVAL ); 749 i(! `TXN_ON ( v )) 750 ( `__db_n_txn_v ( v )); 752 i(! `F_ISSET ( dbp , DB_AM_TXN )) { 753 `__db_rx ( v , 755 ( EINVAL ); 758 i( `F_ISSET ( txn , TXN_DEADLOCK )) 759 ( `__db_txn_ddlock_r ( v , txn )); 760 i( dbp -> cur_lock ! NULL && 761 dbp -> cur_lock -> id > TXN_MINIMUM && 762 dbp -> cur_lock -> id ! txn -> txnid ) { 763 i(( t = `__lock_lock_is_ ( v , 764 dbp -> cur_lock , txn -> lock , & i )) != 0) 765 ( t ); 766 i(! i ) 767 ݒ_r ; 786 i(! ad_ && dbp -> assoc_lock ! NULL && 787 txn ! NULL && dbp -> assoc_lock ! assoc_lock ) { 788 `__db_rx ( v , 790 ( EINVAL ); 796 i( txn ! NULL && v !txn-> mg ->env) { 797 `__db_rx ( v , 799 ( EINVAL ); 803 ݒ_r : 804 `__db_rx ( v , 806 ( EINVAL ); 807 } } 816 $__db_txn_ddlock_r ( v , txn ) 817 ENV * v ; 818 DB_TXN * txn ; 820 cڡ * me ; 822 me = NULL ; 823 () `__txn_g_me ( txn , & me ); 825 `__db_rx ( v , 827 me = NULL ? "" :ame,ame == NULL ? "" : ": "); 829 ( EINVAL ); 830 } } 839 $__db_n_txn_v ( v ) 840 ENV * v ; 842 `__db_rx ( v , "DBnvironmentot configured forransactions"); 843 ( EINVAL ); 844 } } 853 $__db_c_toobig ( v , da_n , fixed_c_n ) 854 ENV * v ; 855 u_t32_t da_n , fixed_c_n ; 857 `__db_rx ( v , 859 ( u_lg ) da_n , (u_lg) fixed_c_n ); 860 ( EINVAL ); 861 } } 870 $__db_c_ ( v , da_size , da_dn ) 871 ENV * v ; 872 u_t32_t da_size , da_dn ; 874 `__db_rx ( v , 876 "Recdgth", ( u_lg ) da_size , (u_lg) da_dn ); 877 ( EINVAL ); 878 } } 880 #i defed ( DIAGNOSTIC || defed( DEBUG_ROP || defed( DEBUG_WOP ) 888 $__dbc_loggg ( dbc ) 889 DBC * dbc ; 891 DB_REP * db_p ; 892 ENV * v ; 893 t ; 895 v = dbc ->env; 896 db_p = v -> p_hd ; 898 t = `LOGGING_ON ( v ) && 899 ! `F_ISSET ( dbc , DBC_RECOVER && ! `IS_REP_CLIENT ( v ); 904 i( db_p = NULL || `F_ISSET ( dbc , DBC_RECOVER )) 905 ( t ); 907 #idef DEBUG_ROP 914 REP * p ; 916 p = db_p -> gi ; 921 i( `IS_REP_CLIENT ( v && ! `F_ISSET ( dbc -> dbp , DB_AM_NOT_DURABLE )) { 922 `__db_rx ( v , "dbc_logging: Client update"); 923 r ; 926 #ide DEBUG_WOP 931 i( `IS_REP_MASTER ( v ) && 932 dbc -> txn = NULL && ! `F_ISSET (dbc-> dbp , DB_AM_NOT_DURABLE )) { 933 `__db_rx ( v , "Dbc_logging: Masteron-txn update"); 934 r ; 939 r : `__db_rx ( v , "Rep: flags 0x%lx msg_th %lu", 940 ( u_lg ) p -> ags , (u_lg-> msg_th ); 941 `__db_rx ( v , "Rep: handle %lu, opcnt %lu", 942 ( u_lg ) p -> hd_t , (u_lg-> _t ); 943 `__os_abt ( v ); 948 ( t ); 949 } } 959 $__db_check_l ( v , l , ev ) 960 ENV * v ; 961 DB_LSN * l , * ev ; 963 `__db_rx ( v , 965 ( u_lg )( l )-> fe , (u_lg)֢)-> offt , 966 ( u_lg )( ev )-> fe , (u_lg)ջv)-> offt ); 967 ( EINVAL ); 968 } } 976 $__db_rdly ( v , me ) 977 cڡ ENV * v ; 978 cڡ * me ; 980 `__db_rx ( v , "%s:emmodifyd-ly daba", me ); 981 ( EACCES ); 982 } } 990 $__db_a_r ( dbp ) 991 cڡ DB * dbp ; 993 `__db_rx ( dbp -> v , 995 dbp -> ame , ( u_lg )dbp-> mpf -> m -> maxpgno ); 996 ( ENOSPC ); 997 } } 1007 $__db_ed ( v , msg , pid , tid ) 1008 cڡ ENV * v ; 1009 cڡ * msg ; 1010 pid_t pid ; 1011 db_thadid_t tid ; 1013 DB_ENV * dbv ; 1014 buf [ DB_THREADID_STRLEN ]; 1016 dbv = v ->dbenv; 1018 `__db_rx ( v , "Thread/process %s failed: %s", 1019 dbv -> `thad_id_rg (dbv, pid , tid , buf ), msg ); 1020 ( DB_RUNRECOVERY ); 1021 } } @../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/dbt.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__dbt_urcy ( v , dbt ) 21 ENV * v ; 22 DBT * dbt ; 24 * buf ; 25 t ; 27 i( dbt = NULL || ! `F_ISSET (dbt, DB_DBT_USERCOPY || dbt-> size == 0 || 28 dbt -> da ! NULL ) 31 buf = NULL ; 32 i(( t = `__os_umloc ( v , dbt -> size , & buf )) != 0 || 33 ( t = v -> `dbt_urcy ( dbt , 0, buf , dbt-> size , 34 DB_USERCOPY_GETDATA )) != 0) 35 r ; 36 dbt -> da = buf ; 40 r : i( buf ! NULL ) { 41 `__os_u ( v , buf ); 42 dbt -> da = NULL ; 45 ( t ); 46 } } 55 $__dbt_ur ( v , key , pkey , da ) 56 ENV * v ; 57 DBT * key , * pkey , * da ; 59 i( key ! NULL && 60 `F_ISSET ( key , DB_DBT_USERCOPY && key-> da ! NULL ) { 61 `__os_u ( v , key -> da ); 62 key -> da = NULL ; 64 i( pkey ! NULL && 65 `F_ISSET ( pkey , DB_DBT_USERCOPY &&key-> da ! NULL ) { 66 `__os_u ( v , pkey -> da ); 67 pkey -> da = NULL ; 69 i( da ! NULL && 70 `F_ISSET ( da , DB_DBT_USERCOPY && da->d! NULL ) { 71 `__os_u ( v , da ->data); 72 da ->d NULL ; 74 } } @../common/mkpath.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_mkth ( v , me ) 21 ENV * v ; 22 cڡ * me ; 24 size_t n ; 25 t ; 26 * p , * t , vech ; 32 n = ` ( me ) + 1; 33 i(( t = `__os_mloc ( v , 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 ( v , t , NULL ) && 49 ( t = `__os_mkd ( 50 v , t ,nv-> 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 ( v , t , NULL ) && 60 ( t = `__os_mkd ( 61 v , t ,nv-> d_mode )) != 0) 63 * p = vech ; 66 `__os_ ( v , t ); 67 ( t ); 68 } } @../common/openflags.c 9 ~"db_cfig.h " 11 ~"db_t.h " 19 u_t32_t 20 $__db_ݒags ( oags ) 21 oags ; 23 u_t32_t dbags ; 25 dbags = 0; 27 i( oags & O_CREAT ) 28 dbags | DB_CREATE ; 30 i( oags & O_TRUNC ) 31 dbags | DB_TRUNCATE ; 39 #idef O_ACCMODE 40 #O_ACCMODE ( O_RDONLY | O_RDWR | O_WRONLY ) ) 42 oags & O_ACCMODE ) { 43 O_RDWR : 44 O_WRONLY : 47 dbags | DB_RDONLY ; 50 ( dbags ); 51 } } @../common/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 } } 121 $db_v_t_func_fe_m ( func_fe_m , func_fe_unm ) 122 (* func_fe_m `__P (( DB_ENV *, *, size_t , , **)); 123 (* func_fe_unm `__P (( DB_ENV *, *)); 125 `DB_GLOBAL ( j_fe_m func_fe_m ; 126 `DB_GLOBAL ( j_fe_unm func_fe_unm ; 128 } } 136 $db_v_t_func_gi_m ( func_gi_m , func_gi_unm ) 137 (* func_gi_m `__P (( DB_ENV *, *, size_t , *, **)); 138 (* func_gi_unm `__P (( DB_ENV *, *)); 140 `DB_GLOBAL ( j_gi_m func_gi_m ; 141 `DB_GLOBAL ( j_gi_unm func_gi_unm ; 143 } } 150 $db_v_t_func_d ( func_d ) 151 $ssize_t (* func_d `__P ((, *, size_t , off_t )); 153 `DB_GLOBAL ( j_d func_d ; 155 } } 162 $db_v_t_func_pwre ( func_pwre ) 163 $ssize_t (* func_pwre `__P ((, cڡ *, size_t , off_t )); 165 `DB_GLOBAL ( j_pwre func_pwre ; 167 } } 173 $db_v_t_func_ݒ ( func_ݒ ) 174 (* func_ݒ `__P ((const *, , ...)); 176 `DB_GLOBAL ( j_ݒ func_ݒ ; 178 } } 184 $db_v_t_func_ad ( func_ad ) 185 $ssize_t (* func_ad `__P ((, *, size_t )); 187 `DB_GLOBAL ( j_ad func_ad ; 189 } } 195 $db_v_t_func_loc ( func_loc ) 196 *(* func_loc `__P ((*, size_t )); 198 `DB_GLOBAL ( j_loc func_loc ; 200 } } 207 $db_v_t_func_me ( func_me ) 208 (* func_me `__P ((const *, const *)); 210 `DB_GLOBAL ( j_me func_me ; 212 } } 219 $db_v_t_func_ek ( func_ek ) 220 (* func_ek `__P ((, off_t , )); 222 `DB_GLOBAL ( j_ek func_ek ; 224 } } 230 $db_v_t_func_uƚk ( func_uƚk ) 231 (* func_uƚk `__P ((const *)); 233 `DB_GLOBAL ( j_uƚk func_uƚk ; 235 } } 242 $db_v_t_func_wre ( func_wre ) 243 $ssize_t (* func_wre `__P ((, cڡ *, size_t )); 245 `DB_GLOBAL ( j_wre func_wre ; 247 } } 253 $db_v_t_func_yld ( func_yld ) 254 (* func_yld `__P (( u_lg , u_long)); 256 `DB_GLOBAL ( j_yld func_yld ; 258 } } @../common/util_arg.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 5 20 * rp (); 30 $__db_ut_g ( g0 , r , g , gvp ) 31 * g0 , * r , *** gvp ; 32 * g ; 34 n , t ; 35 ** , ** gv ; 37 #MAXARGS 25 ) 38 i(( t = 39 `__os_mloc ( NULL , ( MAXARGS + 1* (**), & gv )) != 0) 40 ( t ); 42 = gv ; 43 * ++ = g0 ; 44 n = 1; (* = `rp (& r , " \t")! NULL ;) 45 i(** != '\0') { 46 ++ ; 47 i(++ n = MAXARGS ) 50 * = NULL ; 52 * g = - gv ; 53 * gvp = gv ; 56 } } @../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 , `__os_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 } } @../common/zerofill.c 9 ~"db_cfig.h " 11 ~"db_t.h " 29 $__db_zo_fl ( v , fhp ) 30 ENV * v ; 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 , t ; 38 u_t8_t * bp ; 41 wre_offt = ( off_t ) fhp -> pgno * fhp-> pgsize + fhp-> offt ; 44 i(( t = `__os_iofo ( v , NULL , fhp , & mbys , & bys , NULL)) != 0) 45 ( t ); 46 _offt = ( off_t ) mbys * MEGABYTE + bys ; 49 i( _offt > wre_offt ) 53 #unde ZF_LARGE_WRITE 54 #ZF_LARGE_WRITE (64 * 1024) ) 55 i(( t = `__os_oc ( v , 1, ZF_LARGE_WRITE , & bp )) != 0) 56 ( t ); 57 bn = ZF_LARGE_WRITE ; 60 i(( t = `__os_ek ( v , fhp , mbys , MEGABYTE , bys )) != 0) 61 r ; 69 group_sync = 0; _offt < wre_offt ; group_sync = 1) { 70 i( wre_offt - _offt <( off_t ) bn ) { 71 bn = ( size_t )( wre_offt - _offt ); 72 i( group_sync && ( t = `__os_fsync ( v , fhp )) != 0) 73 r ; 75 i(( t = `__os_physwre ( v , fhp , bp , bn , & nw )) != 0) 76 r ; 77 _offt + bn ; 79 i(( t = `__os_fsync ( v , fhp )) != 0) 80 r ; 83 mbys = ( u_t32_t )( wre_offt / MEGABYTE ); 84 bys = ( u_t32_t )( wre_offt % MEGABYTE ); 85 t = `__os_ek ( v , fhp , mbys , MEGABYTE , bys ); 87 r : `__os_ ( v , bp ); 88 ( t ); 90 `COMPQUIET ( v , NULL ); 91 `COMPQUIET ( fhp , NULL ); 94 } } 104 $__db_zo_exnd ( v , fhp , pgno , ϡ_pgno , pgsize ) 105 ENV * v ; 106 DB_FH * fhp ; 107 db_pgno_t pgno , ϡ_pgno ; 108 u_t32_t pgsize ; 110 t ; 111 size_t nwre ; 112 u_t8_t * buf ; 114 i(( t = `__os_oc ( v , 1, pgsize , & buf )) != 0) 115 ( t ); 116 `memt ( buf , 0, pgsize ); 117 ; pgno < ϡ_pgno ;gno++) 118 i(( t = `__os_io ( v , DB_IO_WRITE , 119 fhp , pgno , pgsize , 0,gsize, buf , & nwre )) != 0) { 120 i( t == 0) { 121 t = EIO ; 122 r ; 124 r ; 127 r : `__os_ ( v , buf ); 128 ( t ); 129 } } @../crypto/aes_method.c 12 ~"db_cfig.h " 14 ~"db_t.h " 15 ~"dbc/yo.h " 16 ~"dbc/hmac.h " 18 __s_r __P (( ENV *, )); 19 __s_divekeys __P (( ENV *, DB_CIPHER *, u_t8_t *, size_t )); 28 $__s_tup ( v , db_ch ) 29 ENV * v ; 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 ( v , 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 ( v , da ) 70 ENV * v ; 71 * da ; 73 `__os_ ( v , da ); 75 } } 85 $__s_dey ( v , s_da , iv , ch , ch_n ) 86 ENV * v ; 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 ( v , t ); 106 ( EAGAIN ); 110 i(( t = `__db_blockDey (& c , & s -> dey_ki , ch , 111 ch_n * 8, ch )) < 0) { 112 `__s_r ( v , t ); 113 ( EAGAIN ); 116 } } 126 $__s_y ( v , s_da , iv , da , da_n ) 127 ENV * v ; 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 ( v , tmp_iv )) != 0) 153 ( t ); 158 i(( t = `__db_chIn (& c , MODE_CBC , (*) tmp_iv )) < 0) { 159 `__s_r ( v , t ); 160 ( EAGAIN ); 164 i(( t = `__db_blockEny (& c , & s -> y_ki , da , da_n * 8, 165 da )) < 0) { 166 `__s_r ( v , t ); 167 ( EAGAIN ); 169 `memy ( iv , tmp_iv , DB_IV_BYTES ); 171 } } 180 $__s_ ( v , db_ch ) 181 ENV * v ; 182 DB_CIPHER * db_ch ; 184 DB_ENV * dbv ; 186 dbv = v ->dbenv; 188 ( `__s_divekeys ( 189 v , db_ch , ( u_t8_t *) dbv -> sswd , dbv-> sswd_n )); 190 } } 193 $__s_divekeys ( v , db_ch , sswd , ) 194 ENV * v ; 195 DB_CIPHER * db_ch ; 196 u_t8_t * sswd ; 197 size_t ; 199 AES_CIPHER * s ; 200 SHA1_CTX x ; 201 t ; 202 u_t32_t mp [ DB_MAC_KEY /4]; 204 i( sswd = NULL ) 205 ( EINVAL ); 207 s = ( AES_CIPHER *) db_ch -> da ; 210 `__db_SHA1In (& x ); 211 `__db_SHA1Upde (& x , sswd , ); 212 `__db_SHA1Upde (& x , ( u_t8_t *) DB_ENC_MAGIC , ` (DB_ENC_MAGIC)); 213 `__db_SHA1Upde (& x , sswd , ); 214 `__db_SHA1F (( u_t8_t *) mp , & x ); 216 i(( t = `__db_makeKey (& s -> y_ki , DIR_ENCRYPT , 217 DB_AES_KEYLEN , (*) mp )! TRUE ) { 218 `__s_r ( v , t ); 219 ( EAGAIN ); 221 i(( t = `__db_makeKey (& s -> dey_ki , DIR_DECRYPT , 222 DB_AES_KEYLEN , (*) mp )! TRUE ) { 223 `__s_r ( v , t ); 224 ( EAGAIN ); 227 } } 235 $__s_r ( v , r ) 236 ENV * v ; 237 r ; 239 * rr ; 241 r ) { 242 BAD_KEY_DIR : 243 rr = "AES key direction is invalid"; 245 BAD_KEY_MAT : 246 rr = "AES key materialot of correctength"; 248 BAD_KEY_INSTANCE : 249 rr = "AES keyasswdot valid"; 251 BAD_CIPHER_MODE : 252 rr = "AES cipher in wrong state (not initialized)"; 254 BAD_BLOCK_LENGTH : 255 rr = "AES bad blockength"; 257 BAD_CIPHER_INSTANCE : 258 rr = "AES cipher instance is invalid"; 260 BAD_DATA : 261 rr = "AES data contentsre invalid"; 263 BAD_OTHER : 264 rr = "AES unknownrror"; 267 rr = "AESrror unrecognized"; 270 `__db_rx ( v , rr ); 272 } } @../crypto/crypto.c 12 ~"db_cfig.h " 14 ~"db_t.h " 15 ~"dbc/db_ge.h " 16 ~"dbc/yo.h " 23 $__yo_gi_ ( v ) 24 ENV * v ; 26 CIPHER * ch ; 27 DB_CIPHER * db_ch ; 28 DB_ENV * dbv ; 29 REGENV * nv ; 30 REGINFO * f ; 31 * sh_sswd ; 32 t ; 34 dbv = v ->dbenv; 35 f = v -> gfo ; 36 nv = f -> imy ; 37 db_ch = v -> yo_hd ; 38 t = 0; 40 i( nv -> ch_off = INVALID_ROFF ) { 41 i(! `CRYPTO_ON ( v )) 43 i(! `F_ISSET ( f , REGION_CREATE )) { 44 `__db_rx ( v , 46 ( EINVAL ); 48 i( `F_ISSET ( db_ch , CIPHER_ANY )) { 49 `__db_rx ( v , "Encryptionlgorithmot supplied"); 50 ( EINVAL ); 57 i(( t = `__v_loc ( f , ( CIPHER ), & ch )) != 0) 58 ( t ); 59 `memt ( ch , 0, (*cipher)); 60 i(( t = 61 `__v_loc ( f , dbv -> sswd_n , & sh_sswd )) != 0) { 62 `__v_loc_ ( f , ch ); 63 ( t ); 65 `memt ( sh_sswd , 0, dbv -> sswd_n ); 66 ch -> sswd = `R_OFFSET ( f , sh_sswd ); 67 ch -> sswd_n = dbv ->passwd_len; 68 ch -> ags = db_ch -> g ; 69 `memy ( sh_sswd , dbv -> sswd , ch -> sswd_n ); 70 nv -> ch_off = `R_OFFSET ( f , ch ); 72 i(! `CRYPTO_ON ( v )) { 73 `__db_rx ( v , 75 ( EINVAL ); 77 ch = `R_ADDR ( f , nv -> ch_off ); 78 sh_sswd = `R_ADDR ( f , ch -> sswd ); 79 i(( ch -> sswd_n ! dbv ->passwd_len) || 80 `memcmp ( dbv -> sswd , sh_sswd , ch -> sswd_n ) != 0) { 81 `__db_rx ( v , "Invalidassword"); 82 ( EPERM ); 84 i(! `F_ISSET ( db_ch , CIPHER_ANY ) && 85 db_ch -> g ! ch -> ags ) { 86 `__db_rx ( v , 88 ( EINVAL ); 90 i( `F_ISSET ( db_ch , CIPHER_ANY )) 96 i(( t = `__yo_gtup ( v , db_ch , 97 ch -> ags , 0)) != 0) 98 ( t ); 100 t = db_ch -> ` ( v , db_cipher); 107 `memt ( dbv -> sswd , 0xff, dbv-> sswd_n -1); 108 `__os_ ( v , dbv -> sswd ); 109 dbv -> sswd = NULL ; 110 dbv -> sswd_n = 0; 112 ( t ); 113 } } 122 $__yo_v_o ( v ) 123 ENV * v ; 125 DB_CIPHER * db_ch ; 126 DB_ENV * dbv ; 127 t ; 129 dbv = v ->dbenv; 131 i( dbv -> sswd ! NULL ) { 132 `memt ( dbv -> sswd , 0xff, dbv-> sswd_n -1); 133 `__os_ ( v , dbv -> sswd ); 134 dbv -> sswd = NULL ; 137 i(! `CRYPTO_ON ( v )) 140 t = 0; 141 db_ch = v -> yo_hd ; 142 i(! `F_ISSET ( db_ch , CIPHER_ANY )) 143 t = db_ch -> `o ( v , db_ch-> da ); 144 `__os_ ( v , db_ch ); 146 v -> yo_hd = NULL ; 147 ( t ); 148 } } 157 $__yo_v_esh ( v ) 158 ENV * v ; 160 CIPHER * ch ; 161 REGENV * nv ; 162 REGINFO * f ; 169 i( `F_ISSET ( v , ENV_PRIVATE )) { 170 f = v -> gfo ; 171 nv = f -> imy ; 172 i( nv -> ch_off ! INVALID_ROFF ) { 173 ch = `R_ADDR ( f , nv -> ch_off ); 174 `__v_loc_ ( f , `R_ADDR (f, ch -> sswd )); 175 `__v_loc_ ( f , ch ); 179 } } 189 $__yo_gtup ( v , db_ch , g , do_ ) 190 ENV * v ; 191 DB_CIPHER * db_ch ; 192 u_t32_t g ; 193 do_ ; 195 t ; 197 t = 0; 198 i(! `CRYPTO_ON ( v )) { 199 `__db_rx ( v , "No cipher structure given"); 200 ( EINVAL ); 202 `F_CLR ( db_ch , CIPHER_ANY ); 203 g ) { 204 CIPHER_AES : 205 db_ch -> g = CIPHER_AES ; 206 t = `__s_tup ( v , db_ch ); 209 t = `__v_nic ( v , EINVAL ); 212 i( t =0 && do_ ) 213 t = db_ch -> ` ( v , db_cipher); 214 ( t ); 215 } } 224 $__yo_dey_ma ( v , dbp , mbuf , do_machk ) 225 ENV * v ; 226 DB * dbp ; 227 u_t8_t * mbuf ; 228 do_machk ; 230 DB dummydb ; 231 DBMETA * ma ; 232 DB_CIPHER * db_ch ; 233 size_t pg_off ; 234 t ; 235 u_t8_t * iv ; 243 i( dbp = NULL ) { 244 `memt (& dummydb , 0, ( DB )); 245 dbp = & dummydb ; 248 t = 0; 249 ma = ( DBMETA *) mbuf ; 267 i( ma -> magic = DB_HASHMAGIC && ma-> vsi <= 5) 285 i( ma -> y_g != 0) { 286 db_ch = v -> yo_hd ; 287 i(! `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 288 i(! `CRYPTO_ON ( v )) { 289 `__db_rx ( v , 291 ( EINVAL ); 299 `F_SET ( dbp , DB_AM_ENCRYPT | DB_AM_CHKSUM ); 305 `DB_ASSERT ( v , `CRYPTO_ON (env)); 306 i(! `F_ISSET ( db_ch , CIPHER_ANY ) && 307 ma -> y_g ! db_ch -> g ) { 308 `__db_rx ( v , 310 ( EINVAL ); 312 `DB_ASSERT ( v , `F_ISSET ( dbp , DB_AM_CHKSUM )); 313 iv = (( BTMETA *) mbuf )->iv; 319 pg_off = `P_OVERHEAD ( dbp ); 320 g_y : 325 i(! `F_ISSET ( db_ch , CIPHER_ANY )) { 326 i( do_machk && ( t = db_ch -> `dey ( v , 327 db_ch -> da , iv , mbuf + pg_off , 328 DBMETASIZE - pg_off ))) 329 ( t ); 330 i((( BTMETA *) ma )-> yo_magic != 331 ma -> magic ) { 332 `__db_rx ( v , "Invalidassword"); 333 ( EINVAL ); 347 t = `__yo_gtup ( v , db_ch , ma -> y_g , 1); 348 g_y ; 349 } i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 370 `__db_rx ( v , 372 ( EINVAL ); 374 ( t ); 375 } } 385 $__yo_t_sswd ( v_c , v_de ) 386 ENV * v_c , * v_de ; 388 CIPHER * ch ; 389 REGENV * nv ; 390 REGINFO * f ; 391 * sh_sswd ; 393 f = v_c -> gfo ; 394 nv = f -> imy ; 396 `DB_ASSERT ( v_c , `CRYPTO_ON (env_src)); 398 ch = `R_ADDR ( f , nv -> ch_off ); 399 sh_sswd = `R_ADDR ( f , ch -> sswd ); 400 ( `__v_t_y ( v_de -> dbv , sh_sswd , DB_ENCRYPT_AES )); 401 } } @../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 (( ENV *)); 64 $__db_ge_iv ( v , iv ) 65 ENV * v ; 66 u_t32_t * iv ; 68 i , n , t ; 70 t = 0; 71 n = DB_IV_BYTES / ( u_t32_t ); 72 `MUTEX_LOCK ( v ,nv-> mtx_mt ); 73 i( v -> mt = NULL ) { 74 i(( t = `__os_oc ( v , 1, N *(), 75 & v -> mt )) != 0) 76 ( t ); 78 v -> mti = N + 1; 80 i = 0; i < n ; i++) { 85 iv [ i ] = ( u_t32_t ) `__db_gnd ( v ); 86 } iv [ i ] == 0); 89 `MUTEX_UNLOCK ( v ,nv-> 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 ( v ) 139 ENV * v ; 141 db_timeec ts ; 142 y ; 143 mag01 [2]={0x0, MATRIX_A }; 145 u_t32_t ed ; 150 i( v -> mti > N ) { 151 kk ; 153 i( v -> mti = N +1) { 159 `__os_gtime ( v , & ts , 1); 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 , v -> mt , &v-> mti ); 166 kk =0;kk< N - M ;kk++) { 167 y = ( v -> mt [ kk ]& UPPER_MASK )|nv->mt[kk+1]& LOWER_MASK ); 168 v -> mt [ kk ] =nv->mt[kk+ M ] ^ ( y >> 1^ mag01 [y & 0x1]; 170 ; kk < N -1;kk++) { 171 y = ( v -> mt [ kk ]& UPPER_MASK )|nv->mt[kk+1]& LOWER_MASK ); 172 v -> mt [ kk ] =nv->mt[kk+( M - N )] ^ ( y >> 1^ mag01 [y & 0x1]; 174 y = ( v -> mt [ N -1]& UPPER_MASK )|nv->mt[0]& LOWER_MASK ); 175 v -> mt [ N -1] =nv->mt[ M -1] ^ ( y >> 1^ mag01 [y & 0x1]; 177 v -> mti = 0; 180 y = v -> mt [v-> 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 ( dbv_ , "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 ( dbv_ , "Db::" #_me, EINVAL , `r_picy ()); \ 49 ( EINVAL ); \ 51 t = db -> _me _gli ; \ 52 `nup (); \ 53 i(! `_tok ( t )) \ 54 `DB_ERROR ( dbv_ , "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 * dbv , u_t32_t ags ) 87 : `imp_ (0) 88 , `dbv_ ( dbv ) 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( dbv_ == 0) 103 ags_ | DB_CXX_PRIVATE_ENV ; 105 i(( cڡru_r_ = `lize ()) != 0) 106 `DB_ERROR ( dbv_ , "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 ( dbv_ ); 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 dbv_ = 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 dbv_ -> `nup (); 181 de dbv_ ; 182 dbv_ = 0; 185 de mpf_ ; 187 } } 195 gDb :: $r_picy () 197 i( dbv_ ! NULL ) 198 ( dbv_ -> `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 ( dbv_ , "Db::g", vue , `r_picy ()); 258 `DB_ERROR ( dbv_ , "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 ( dbv_ , "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 ( dbv_ , "Db::pg", vue , `r_picy ()); 336 `DB_ERROR ( dbv_ , "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 -> v , cxxthis ! NULL ); \ 411 `DB_ASSERT ( his -> dbv -> v , 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 ( dbv_ , "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 dbv_ -> `t_r ( g ); 621 } } 623 Db :: t_msg ((* g )(cڡ DbEnv *, const *)) 625 dbv_ -> `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 ( dbv_ -> `t_nic ( back )); 646 } } 648 __DB_STD ( oam * Db :: $g_r_am () 650 dbv_ -> `g_r_am (); 651 } } 653 Db :: t_r_am ( __DB_STD ( oam * r_am ) 655 dbv_ -> t_r_am ( r_am ); 658 __DB_STD ( oam * Db :: $g_mesge_am () 660 dbv_ -> `g_mesge_am (); 661 } } 663 Db :: t_mesge_am ( __DB_STD ( oam * mesge_am ) 665 dbv_ -> 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 -> 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 -> 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 -> 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 -> dbv ), 85 "Dbc::g", da , ON_ERROR_UNKNOWN ); 87 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbc -> 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 -> 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 -> dbv ), 108 "Dbc::pg", da , ON_ERROR_UNKNOWN ); 110 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbc -> 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 * dbv , code , p ) 83 DbEnv :: `_edback_r ( dbv , code , p ); 84 } } 87 $_nic_r_c ( DB_ENV * dbv , rv ) 89 DbEnv :: `_nic_r ( dbv , rv ); 90 } } 93 $_evt_func_r_c ( DB_ENV * dbv , u_t32_t evt , * evt_fo ) 95 DbEnv :: `_evt_func_r ( dbv , evt , evt_fo ); 96 } } 99 $_am_r_funi_c (cڡ DB_ENV * dbv , 100 cڡ * efix , cڡ * mesge ) 102 DbEnv :: `_am_r_funi ( dbv , efix , mesge ); 103 } } 106 $_am_mesge_funi_c (cڡ DB_ENV * dbv , cڡ * mesge ) 108 DbEnv :: `_am_mesge_funi ( dbv , mesge ); 109 } } 112 $_p_dich_r_c ( DB_ENV * dbv , DBT * dbt , DB_LSN * l , db_cs ) 114 ( DbEnv :: `_p_dich_r ( dbv , dbt , l , )); 115 } } 118 $_p_nd_r_c ( DB_ENV * dbv , cڡ DBT * l , cڡ DBT * da , 119 cڡ DB_LSN * l , id , u_t32_t ags ) 121 ( DbEnv :: `_p_nd_r ( dbv , 122 l , da , l , id , ags )); 123 } } 126 $_ilive_r_c ( 127 DB_ENV * dbv , pid_t pid , db_thadid_t thrid , u_t32_t ags ) 129 ( DbEnv :: `_ilive_r ( dbv , pid , thrid , ags )); 130 } } 133 $_thad_id_r_c ( DB_ENV * dbv , pid_t * pidp , db_thadid_t * thridp ) 135 DbEnv :: `_thad_id_r ( dbv , pidp , thridp ); 136 } } 139 * $_thad_id_rg_r_c ( DB_ENV * dbv , pid_t pid , 140 db_thadid_t thrid , * buf ) 142 ( DbEnv :: `_thad_id_rg_r ( dbv , pid , thrid , buf )); 143 } } 145 DbEnv :: $_edback_r ( DB_ENV * dbv , code , p ) 147 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 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 ( dbv ), 155 "DbEnv::edback_back", EINVAL , cxxv -> `r_picy ()); 158 (* cxxv -> edback_back_ )(cxxv, code , p ); 159 } } 161 DbEnv :: $_nic_r ( DB_ENV * dbv , rv ) 163 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 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 * dbv , u_t32_t evt , * evt_fo ) 180 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 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 * dbv , DBT * dbt , DB_LSN * l , 195 db_cs ) 197 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 198 i( cxxv == 0) { 199 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbv ), 200 "DbEnv::p_dich_back", EINVAL , ON_ERROR_UNKNOWN ); 201 ( EINVAL ); 203 i( cxxv -> p_dich_back_ == 0) { 204 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbv ), 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 * dbv , pid_t pid , db_thadid_t thrid , u_t32_t ags ) 217 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 218 i( cxxv == 0) { 219 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbv ), 220 "DbEnv::ilive_back", EINVAL , ON_ERROR_UNKNOWN ); 223 ((* cxxv -> ilive_back_ )(cxxv, pid , thrid , ags )); 224 } } 226 DbEnv :: $_p_nd_r ( DB_ENV * dbv , cڡ DBT * l , cڡ DBT * da , 227 cڡ DB_LSN * l , id , u_t32_t ags ) 229 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 230 i( cxxv == 0) { 231 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbv ), 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 * dbv , 243 pid_t * pidp , db_thadid_t * thridp ) 245 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 246 i( cxxv == 0) { 247 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbv ), 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 * dbv , 254 pid_t pid , db_thadid_t thrid , * buf ) 256 DbEnv * cxxv = DbEnv:: `g_DbEnv ( dbv ); 257 i( cxxv == 0) { 258 `DB_ERROR ( DbEnv :: `g_DbEnv ( dbv ), 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 * dbv , 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 ( dbv )) != 0) 308 `DB_ERROR ( this , "DbEnv::DbEnv", cڡru_r_ , 309 `r_picy ()); 310 } } 319 DbEnv ::~ $DbEnv () 321 DB_ENV * dbv = `unwp ( this ); 323 i( dbv ! NULL ) { 324 () dbv -> `o (dbenv, 0); 325 `nup (); 327 } } 330 DbEnv :: $nup () 332 imp_ = 0; 333 } } 335 DbEnv :: $o ( u_t32_t ags ) 337 t ; 338 DB_ENV * dbv = `unwp ( this ); 340 t = dbv -> `o (dbv, 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 * dbv = `unwp ( this ); 367 `DB_REAL_ERR ( dbv , 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 * dbv = `unwp ( this ); 390 `DB_REAL_ERR ( dbv , 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 * dbv ) 419 t ; 421 ϡ_known_r_picy = `r_picy (); 423 i( dbv == 0) { 425 i(( t = :: `db_v_ (& dbv , 426 cڡru_ags_ & ~ DB_CXX_NO_EXCEPTIONS )) != 0) 427 ( t ); 429 imp_ = dbv ; 430 dbv -> 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_g_cfig , ( u_t32_t which , * of ), 474 ( dbv , which , of )) 475 DBENV_METHOD ( log_put , ( DbL * l , cڡ Dbt * da , u_t32_t ags ), 476 ( dbv , l , da , ags )) 478 DbEnv :: $log_tf ( DbTxn * txn , cڡ * fmt , ...) 480 DB_ENV * dbv = `unwp ( this ); 481 va_li ; 482 t ; 484 `va_t ( , fmt ); 485 t = `__log_tf_ ( dbv , `unwp ( txn ), fmt , ); 486 `va_d ( ); 488 ( t ); 489 } } 491 DBENV_METHOD ( log_t_cfig , ( u_t32_t which , off ), 492 ( dbv , which , off )) 493 DBENV_METHOD ( log_ , ( DB_LOG_STAT ** p , u_t32_t ags ), 494 ( dbv , p , ags )) 495 DBENV_METHOD ( log__t , ( u_t32_t ags ), ( dbv , flags)) 497 DBENV_METHOD ( l_t , (cڡ * fe , u_t32_t ags ), 498 ( dbv , fe , ags )) 500 DbEnv :: $memp_f ( DbMpoFe ** dbm , u_t32_t ags ) 502 DB_ENV * dbv = `unwp ( this ); 503 t ; 504 DB_MPOOLFILE * mpf ; 506 i( dbv = NULL ) 507 t = EINVAL ; 509 t = dbv -> `memp_f (dbv, & mpf , ags ); 511 i( `DB_RETOK_STD ( t )) { 512 * dbm = w `DbMpoFe (); 513 (* dbm )-> imp_ = mpf ; 515 `DB_ERROR ( this , "DbMpoFe::f_", t , ON_ERROR_UNKNOWN ); 517 ( t ); 518 } } 520 DBENV_METHOD ( memp_gi , 521 ( y , pg_f_ty pg_f , pgout_f_ty pgout_f ), 522 ( dbv , y , pg_f , pgout_f )) 525 DBENV_METHOD ( memp_ , 526 ( DB_MPOOL_STAT ** g , DB_MPOOL_FSTAT *** f , u_t32_t ags ), 527 ( dbv , g , f , ags )) 528 DBENV_METHOD ( memp__t , ( u_t32_t ags ), ( dbv , flags)) 529 DBENV_METHOD ( memp_sync , ( DbL * ), ( dbv , sn)) 530 DBENV_METHOD ( memp_ick , ( p , * nwrٕ ), ( dbv ,ct,wrotep)) 535 DbEnv :: $ݒ (cڡ * db_home , u_t32_t ags , mode ) 537 t ; 538 DB_ENV * dbv = `unwp ( this ); 540 i( cڡru_r_ != 0) 541 t = cڡru_r_ ; 543 t = dbv -> `ݒ (dbv, db_home , ags , mode ); 545 i(! `DB_RETOK_STD ( t )) 546 `DB_ERROR ( this , "DbEnv::ݒ", t , `r_picy ()); 548 ( t ); 549 } } 551 DbEnv :: $move (cڡ * db_home , u_t32_t ags ) 553 t ; 554 DB_ENV * dbv = `unwp ( this ); 556 t = dbv -> `move (dbv, db_home , ags ); 562 `nup (); 564 i( t != 0) 565 `DB_ERROR ( this , "DbEnv::move", t , `r_picy ()); 567 ( t ); 568 } } 576 DbEnv :: $ruime_r ( DbEnv * dbv , 577 cڡ * Δ , r , r_picy ) 579 i( r_picy = ON_ERROR_UNKNOWN ) 580 r_picy = ϡ_known_r_picy ; 581 i( r_picy = ON_ERROR_THROW ) { 584 r ) { 585 DB_LOCK_DEADLOCK : 587 DbDdlockExi `dl_ex ( Δ ); 588 dl_ex . `t_v ( dbv ); 589 throw dl_ex ; 591 DB_LOCK_NOTGRANTED : 593 DbLockNGedExi `g_ex ( Δ ); 594 g_ex . `t_v ( dbv ); 595 throw g_ex ; 597 DB_REP_HANDLE_DEAD : 599 DbRHdDdExi `hd_ex ( Δ ); 600 hd_ex . `t_v ( dbv ); 601 throw hd_ex ; 603 DB_RUNRECOVERY : 605 DbRunRecovyExi `_ex ( Δ ); 606 _ex . `t_v ( dbv ); 607 throw _ex ; 611 DbExi `ex ( Δ , r ); 612 ex . `t_v ( dbv ); 613 throw ex ; 617 } } 621 DbEnv :: $ruime_r_dbt ( DbEnv * dbv , 622 cڡ * Δ , Dbt * dbt , r_picy ) 624 i( r_picy = ON_ERROR_UNKNOWN ) 625 r_picy = ϡ_known_r_picy ; 626 i( r_picy = ON_ERROR_THROW ) { 629 DbMemyExi `ex ( Δ , dbt ); 630 ex . `t_v ( dbv ); 631 throw ex ; 633 } } 638 DbEnv :: $ruime_r_lock_g ( DbEnv * dbv , 639 cڡ * Δ , r , 640 db_lock_t , db_lockmode_t mode , cڡ Dbt * obj , 641 DbLock lock , dex , r_picy ) 643 i( r ! DB_LOCK_NOTGRANTED ) { 644 `ruime_r ( dbv , Δ , r , r_picy ); 648 i( r_picy = ON_ERROR_UNKNOWN ) 649 r_picy = ϡ_known_r_picy ; 650 i( r_picy = ON_ERROR_THROW ) { 653 DbLockNGedExi `ex ( Δ , , mode , 654 obj , lock , dex ); 655 ex . `t_v ( dbv ); 656 throw ex ; 658 } } 660 DbEnv :: $_am_r_funi ( 661 cڡ DB_ENV * dbv , cڡ * efix , cڡ * mesge ) 663 cڡ DbEnv * cxxv = DbEnv:: `g_cڡ_DbEnv ( dbv ); 664 i( cxxv == 0) { 665 `DB_ERROR (0, 666 "DbEnv::am_r", EINVAL , ON_ERROR_UNKNOWN ); 670 i( cxxv -> r_back_ ) 671 cxxv -> `r_back_ (cxxv, efix , mesge ); 672 i( cxxv -> r_am_ ) { 674 i( efix ) { 675 (* cxxv -> r_am_ << efix ; 676 (* cxxv -> r_am_ ) << (const *)": "; 678 i( mesge ) 679 (* cxxv -> r_am_ << (cڡ *) mesge ; 680 (* cxxv -> r_am_ ) << (const *)"\n"; 682 } } 684 DbEnv :: $_am_mesge_funi (cڡ DB_ENV * dbv , cڡ * mesge ) 686 cڡ DbEnv * cxxv = DbEnv:: `g_cڡ_DbEnv ( dbv ); 687 i( cxxv == 0) { 688 `DB_ERROR (0, 689 "DbEnv::am_mesge", EINVAL , ON_ERROR_UNKNOWN ); 693 i( cxxv -> mesge_back_ ) 694 cxxv -> `mesge_back_ (cxxv, mesge ); 695 i( cxxv -> mesge_am_ ) { 697 (* cxxv -> mesge_am_ << (cڡ *) mesge ; 698 (* cxxv -> mesge_am_ ) << (const *)"\n"; 700 } } 703 * DbEnv :: $ ( r ) 705 ( `db_ ( r )); 706 } } 711 DBENV_METHOD ( t_da_d , (cڡ * d ), ( dbv , dir)) 712 DBENV_METHOD ( g_y_ags , ( u_t32_t * ag ), 713 ( dbv , ag )) 714 DBENV_METHOD ( t_y , (cڡ * sswd , u_t32_t ags ), 715 ( dbv , sswd , ags )) 716 DBENV_METHOD_VOID ( g_rfe , ( FILE ** rf ), ( dbv ,rrfilep)) 717 DBENV_METHOD_VOID ( t_rfe , ( FILE * rfe ), ( dbv ,rrfile)) 718 DBENV_METHOD_VOID ( g_fx , (cڡ ** fxp ), ( dbv ,rrpfxp)) 719 DBENV_METHOD_VOID ( t_fx , (cڡ * fx ), ( dbv ,rrpfx)) 720 DBENV_METHOD ( g_rmed_d_mode , (cڡ ** mod ), ( dbv , modep)) 721 DBENV_METHOD ( t_rmed_d_mode , (cڡ * mode ), ( dbv , mode)) 722 DBENV_METHOD ( g_lg_bsize , ( u_t32_t * bsiz ), ( dbv , bsizep)) 723 DBENV_METHOD ( t_lg_bsize , ( u_t32_t bsize ), ( dbv , bsize)) 724 DBENV_METHOD ( g_lg_d , (cڡ ** dp ), ( dbv , dirp)) 725 DBENV_METHOD ( t_lg_d , (cڡ * d ), ( dbv , dir)) 726 DBENV_METHOD ( g_lg_femode , (* mod ), ( dbv , modep)) 727 DBENV_METHOD ( t_lg_femode , ( mode ), ( dbv , mode)) 728 DBENV_METHOD ( g_lg_max , ( u_t32_t * maxp ), ( dbv , maxp)) 729 DBENV_METHOD ( t_lg_max , ( u_t32_t max ), ( dbv , max)) 730 DBENV_METHOD ( g_lg_gimax , ( u_t32_t * gimaxp ), ( dbv ,egionmaxp)) 731 DBENV_METHOD ( t_lg_gimax , ( u_t32_t gimax ), ( dbv ,egionmax)) 732 DBENV_METHOD ( g_lk_cis , (cڡ u_t8_t ** lk_ci , * lk_maxp ), 733 ( dbv , lk_ci , lk_maxp )) 734 DBENV_METHOD ( t_lk_cis , ( u_t8_t * lk_cis , lk_max ), 735 ( dbv , lk_cis , lk_max )) 736 DBENV_METHOD ( g_lk_de , ( u_t32_t * dep ), ( dbv , detectp)) 737 DBENV_METHOD ( t_lk_de , ( u_t32_t de ), ( dbv , detect)) 738 DBENV_METHOD ( g_lk_max_locks , ( u_t32_t * max_lock ), 739 ( dbv , max_lock )) 740 DBENV_METHOD ( t_lk_max_locks , ( u_t32_t max_locks ), ( dbv , max_lockers)) 741 DBENV_METHOD ( g_lk_max_locks , ( u_t32_t * max_lock ), ( dbv , max_locksp)) 742 DBENV_METHOD ( t_lk_max_locks , ( u_t32_t max_locks ), ( dbv , max_locks)) 743 DBENV_METHOD ( g_lk_max_objes , ( u_t32_t * max_obje ), 744 ( dbv , max_obje )) 745 DBENV_METHOD ( t_lk_max_objes , ( u_t32_t max_objes ), ( dbv , max_objects)) 746 DBENV_METHOD ( g_mp_max_ݒfd , (* maxݒfdp ), ( dbv , maxopenfdp)) 747 DBENV_METHOD ( t_mp_max_ݒfd , ( maxݒfd ), ( dbv , maxopenfd)) 748 DBENV_METHOD ( g_mp_max_wre , (* maxwr , db_timeout_t * maxwre_ ), 749 ( dbv , maxwr , maxwre_ )) 750 DBENV_METHOD ( t_mp_max_wre , ( maxwre , db_timeout_t maxwre_p ), 751 ( dbv , maxwre , maxwre_p )) 752 DBENV_METHOD ( g_mp_mmsize , ( size_t * mmsiz ), ( dbv , mmapsizep)) 753 DBENV_METHOD ( t_mp_mmsize , ( size_t mmsize ), ( dbv , mmapsize)) 754 DBENV_METHOD_VOID ( g_msgfe , ( FILE ** msgf ), ( dbv , msgfilep)) 755 DBENV_METHOD_VOID ( t_msgfe , ( FILE * msgfe ), ( dbv , msgfile)) 756 DBENV_METHOD ( g_tmp_d , (cڡ ** tmp_dp ), ( dbv ,mp_dirp)) 757 DBENV_METHOD ( t_tmp_d , (cڡ * tmp_d ), ( dbv ,mp_dir)) 758 DBENV_METHOD ( g_tx_max , ( u_t32_t * tx_maxp ), ( dbv ,x_maxp)) 759 DBENV_METHOD ( t_tx_max , ( u_t32_t tx_max ), ( dbv ,x_max)) 761 DBENV_METHOD ( _t , ( u_t32_t ags ), ( dbv , flags)) 763 DBENV_METHOD_QUIET ( t_loc , 764 ( db_mloc_f_ty mloc_f , db_loc_f_ty loc_f , 765 db__f_ty _f ), 766 ( dbv , mloc_f , loc_f , _f )) 768 DbEnv :: $t_p_ive (* vue ) 770 `unwp ( this )-> p_ive = vue ; 771 } } 773 DBENV_METHOD ( g_chesize , 774 ( u_t32_t * gby , u_t32_* by , * nch ), 775 ( dbv , gby , by , nch )) 776 DBENV_METHOD ( t_chesize , 777 ( u_t32_t gbys , u_t32_ bys , nche ), 778 ( dbv , gbys , bys , nche )) 779 DBENV_METHOD ( g_che_max , ( u_t32_t * gby , u_t32_* by ), 780 ( dbv , gby , by )) 781 DBENV_METHOD ( t_che_max , ( u_t32_t gbys , u_t32_ bys ), 782 ( dbv , gbys , bys )) 784 DbEnv :: t_r ((* g )(const DbEnv *, const *, const *)) 786 DB_ENV * dbv = `unwp ( this ); 788 r_back_ = g ; 789 r_am_ = 0; 791 dbv -> `t_r (dbv, ( g == 0) ? 0 : 792 _am_r_funi_c ); 793 } } 795 __DB_STD ( oam * DbEnv :: $g_r_am () 797 ( r_am_ ); 798 } } 800 DbEnv :: t_r_am ( __DB_STD ( oam * am ) 802 DB_ENV * dbv = unwp ( this ); 804 r_am_ = am ; 805 r_back_ = 0; 807 dbv -> t_r (dbv, ( am == 0) ? 0 : 808 _am_r_funi_c ); 811 DbEnv :: t_edback ((* g )(DbEnv *, , )) 813 DB_ENV * dbv = `unwp ( this ); 815 edback_back_ = g ; 817 ( dbv -> `t_edback (dbenv, 818 g =0 ? 0 : _edback_r_c )); 819 } } 821 DBENV_METHOD ( g_ags , ( u_t32_t * ag ), ( dbv , flagsp)) 822 DBENV_METHOD ( t_ags , ( u_t32_t ags , off ), ( dbv , flags, onoff)) 824 DbEnv :: t_msg ((* g )(const DbEnv *, const *)) 826 DB_ENV * dbv = `unwp ( this ); 828 mesge_back_ = g ; 829 mesge_am_ = 0; 831 dbv -> `t_msg (dbv, ( g == 0) ? 0 : 832 _am_mesge_funi_c ); 833 } } 835 __DB_STD ( oam * DbEnv :: $g_mesge_am () 837 ( mesge_am_ ); 838 } } 840 DbEnv :: t_mesge_am ( __DB_STD ( oam * am ) 842 DB_ENV * dbv = unwp ( this ); 844 mesge_am_ = am ; 845 mesge_back_ = 0; 847 dbv -> t_msg (dbv, ( am == 0) ? 0 : 848 _am_mesge_funi_c ); 851 DbEnv :: t_nic ((* g )(DbEnv *, )) 853 DB_ENV * dbv = `unwp ( this ); 855 nic_back_ = g ; 857 ( dbv -> `t_nic (dbenv, 858 g =0 ? 0 : _nic_r_c )); 859 } } 861 DbEnv :: t_evt_nify ((* g )(DbEnv *, u_t32_t , *)) 863 DB_ENV * dbv = `unwp ( this ); 865 evt_func_back_ = g ; 867 ( dbv -> `t_evt_nify (dbenv, 868 g =0 ? 0 : _evt_func_r_c )); 869 } } 871 DBENV_METHOD ( t_c_rv , 872 (* , * ho , tc , sc , u_t32_t ags ), 873 ( dbv , , ho , tc , sc , ags )) 874 DBENV_METHOD ( g_shm_key , (* shm_keyp ), ( dbv , shm_keyp)) 875 DBENV_METHOD ( t_shm_key , ( shm_key ), ( dbv , shm_key)) 877 DbEnv :: t_p_dich 878 ((* g )( DbEnv *, Dbt *, DbL *, db_cs )) 880 DB_ENV * dbv = `unwp ( this ); 881 t ; 883 p_dich_back_ = g ; 884 i(( t = dbv -> `t_p_dich (dbenv, 885 g =0 ? 0 : _p_dich_r_c )) != 0) 886 `DB_ERROR ( this , "DbEnv::t_p_dich", t , `r_picy ()); 888 ( t ); 889 } } 891 DbEnv :: t_ilive 892 ((* g )( DbEnv *, pid_t , db_thadid_t , u_t32_t )) 894 DB_ENV * dbv = `unwp ( this ); 895 t ; 897 ilive_back_ = g ; 898 i(( t = dbv -> `t_ilive (dbenv, 899 g =0 ? 0 : _ilive_r_c )) != 0) 900 `DB_ERROR ( this , "DbEnv::t_ilive", t , `r_picy ()); 902 ( t ); 903 } } 905 DBENV_METHOD ( g_tx_timeamp , ( time_t * timeamp ), ( dbv ,imestamp)) 906 DBENV_METHOD ( t_tx_timeamp , ( time_t * timeamp ), ( dbv ,imestamp)) 907 DBENV_METHOD ( g_vbo , ( u_t32_t which , * of ), 908 ( dbv , which , of )) 909 DBENV_METHOD ( t_vbo , ( u_t32_t which , off ), ( dbv , which, onoff)) 911 DBENV_METHOD ( mux_loc , 912 ( u_t32_t ags , db_mux_t * muxp ), ( dbv , flags, mutexp)) 913 DBENV_METHOD ( mux_ , ( db_mux_t mux ), ( dbv , mutex)) 914 DBENV_METHOD ( mux_g_ign , ( u_t32_t * gp ), ( dbv ,rgp)) 915 DBENV_METHOD ( mux_g_emt , ( u_t32_t * gp ), ( dbv ,rgp)) 916 DBENV_METHOD ( mux_g_max , ( u_t32_t * gp ), ( dbv ,rgp)) 917 DBENV_METHOD ( mux_g_s_s , ( u_t32_t * gp ), ( dbv ,rgp)) 918 DBENV_METHOD ( mux_lock , ( db_mux_t mux ), ( dbv , mutex)) 919 DBENV_METHOD ( mux_t_ign , ( u_t32_t g ), ( dbv ,rg)) 920 DBENV_METHOD ( mux_t_emt , ( u_t32_t g ), ( dbv ,rg)) 921 DBENV_METHOD ( mux_t_max , ( u_t32_t g ), ( dbv ,rg)) 922 DBENV_METHOD ( mux_t_s_s , ( u_t32_t g ), ( dbv ,rg)) 923 DBENV_METHOD ( mux_ , 924 ( DB_MUTEX_STAT ** p , u_t32_t ags ), ( dbv , statp, flags)) 925 DBENV_METHOD ( mux__t , ( u_t32_t ags ), ( dbv , flags)) 926 DBENV_METHOD ( mux_uock , ( db_mux_t mux ), ( dbv , mutex)) 928 DbEnv :: t_thad_id ((* g )(DbEnv *, pid_t *, db_thadid_t *)) 930 DB_ENV * dbv = `unwp ( this ); 931 t ; 933 thad_id_back_ = g ; 934 i(( t = dbv -> `t_thad_id (dbenv, 935 g =0 ? 0 : _thad_id_r_c )) != 0) 936 `DB_ERROR ( this , "DbEnv::t_thad_id", t , `r_picy ()); 938 ( t ); 939 } } 941 DbEnv :: t_thad_id_rg ( 942 *(* g )( DbEnv *, pid_t , db_thadid_t , *)) 944 DB_ENV * dbv = unwp ( this ); 945 t ; 947 thad_id_rg_back_ = g ; 948 i(( t = dbv -> t_thad_id_rg (dbenv, 949 g =0 ? 0 : _thad_id_rg_r_c )) != 0) 950 DB_ERROR ( this , "DbEnv::t_thad_id_rg", t , 951 r_picy ()); 953 ( t ); 956 DbEnv :: $cdsgroup_beg ( DbTxn ** tid ) 958 DB_ENV * dbv = `unwp ( this ); 959 DB_TXN * txn ; 960 t ; 962 t = dbv -> `cdsgroup_beg (dbv, & txn ); 963 i( `DB_RETOK_STD ( t )) 964 * tid = w `DbTxn ( txn ); 966 `DB_ERROR ( this , "DbEnv::cdsgroup_beg", t , `r_picy ()); 968 ( t ); 969 } } 971 DbEnv :: $txn_beg ( DbTxn * pid , DbTx** tid , u_t32_t ags ) 973 DB_ENV * dbv = `unwp ( this ); 974 DB_TXN * txn ; 975 t ; 977 t = dbv -> `txn_beg (dbv, `unwp ( pid ), & txn , ags ); 978 i( `DB_RETOK_STD ( t )) 979 * tid = w `DbTxn ( txn ); 981 `DB_ERROR ( this , "DbEnv::txn_beg", t , `r_picy ()); 983 ( t ); 984 } } 986 DBENV_METHOD ( txn_checkpot , ( u_t32_t kby , u_t32_ m , u_t32_ ags ), 987 ( dbv , kby , m , ags )) 989 DbEnv :: $txn_cov ( DbPi * li , cou , 990 * , u_t32_t ags ) 992 DB_ENV * dbv = `unwp ( this ); 993 DB_PREPLIST * c_li ; 994 i ; 995 t ; 1002 i( cou <= 0) 1003 t = EINVAL ; 1005 t = `__os_mloc ( dbv -> v , ( DB_PREPLIST * cou , 1006 & c_li ); 1008 i( t != 0) { 1009 `DB_ERROR ( this , "DbEnv::txn_cov", t , `r_picy ()); 1010 ( t ); 1013 i(( t = 1014 dbv -> `txn_cov (dbv, c_li , cou , , ags )) != 0) { 1015 `__os_ ( dbv -> v , c_li ); 1016 `DB_ERROR ( this , "DbEnv::txn_cov", t , `r_picy ()); 1017 ( t ); 1020 i = 0; i < * ; i++) { 1021 li [ i ]. txn = w `DbTxn (); 1022 li [ i ]. txn -> imp_ = c_li [i].txn; 1023 `memy ( li [ i ]. gid , c_li [i].gid, 1024 ( li [ i ]. gid )); 1027 `__os_ ( dbv -> v , c_li ); 1030 } } 1032 DBENV_METHOD ( txn_ , ( DB_TXN_STAT ** p , u_t32_t ags ), 1033 ( dbv , p , ags )) 1034 DBENV_METHOD ( txn__t , ( u_t32_t ags ), ( dbv , flags)) 1036 DbEnv :: p_t_t ( myid , (* g )(DbEnv *, 1037 cڡ Dbt *, cڡ Db*, cڡ DbL *, , u_t32_t )) 1039 DB_ENV * dbv = `unwp ( this ); 1040 t ; 1042 p_nd_back_ = g ; 1043 i(( t = dbv -> `p_t_t (dbv, myid , 1044 g =0 ? 0 : _p_nd_r_c )) != 0) 1045 `DB_ERROR ( this , "DbEnv::p_t_t", t , `r_picy ()); 1047 ( t ); 1048 } } 1050 DBENV_METHOD ( p_e , ( u_t32_t nses , u_t32_ nves , u_t32_ ags ), 1051 ( dbv , nses , nves , ags )) 1052 DBENV_METHOD ( p_ush , (), ( dbv )) 1053 DBENV_METHOD ( p_g_cfig , ( u_t32_t which , * of ), 1054 ( dbv , which , of )) 1055 DBENV_METHOD ( p_g_que , ( u_t32_t * m , u_t32_* max ), 1056 ( dbv , m , max )) 1057 DBENV_METHOD ( p_t_que , ( u_t32_t m , u_t32_ max ), ( dbv , min, max)) 1059 DbEnv :: $p_oss_mesge ( Dbt * cڌ , 1060 Dbt * c , id , DbL * t_lp ) 1062 DB_ENV * dbv = `unwp ( this ); 1063 t ; 1065 t = dbv -> `p_oss_mesge (dbv, cڌ , c , id , t_lp ); 1066 i(! `DB_RETOK_REPPMSG ( t )) 1067 `DB_ERROR ( this , "DbEnv::p_oss_mesge", t , 1068 `r_picy ()); 1070 ( t ); 1071 } } 1073 DBENV_METHOD ( p_t_cfig , 1074 ( u_t32_t which , off ), ( dbv , which, onoff)) 1075 DBENV_METHOD ( p_t , 1076 ( Dbt * cook , u_t32_t ags ), 1077 ( dbv , ( DBT *) cook , ags )) 1079 DBENV_METHOD ( p_ , ( DB_REP_STAT ** p , u_t32_t ags ), 1080 ( dbv , p , ags )) 1081 DBENV_METHOD ( p__t , ( u_t32_t ags ), ( dbv , flags)) 1082 DBENV_METHOD ( p_sync , ( u_t32_t ags ), ( dbv , flags)) 1084 DBENV_METHOD ( p_g_ockskew , ( u_t32_t * _ockp , u_t32_* ow_ockp ), 1085 ( dbv , _ockp , ow_ockp )) 1086 DBENV_METHOD ( p_t_ockskew , ( u_t32_t _ock , u_t32_ ow_ock ), 1087 ( dbv , _ock , ow_ock )) 1088 DBENV_METHOD ( p_g_lim , ( u_t32_t * gby , u_t32_* by ), 1089 ( dbv , gby , by )) 1090 DBENV_METHOD ( p_t_lim , ( u_t32_t gbys , u_t32_ bys ), 1091 ( dbv , gbys , bys )) 1095 DBENV_METHOD ( p_g_nses , ( u_t32_t * n ), ( dbv ,)) 1096 DBENV_METHOD ( p_t_nses , ( u_t32_t n ), ( dbv ,)) 1097 DBENV_METHOD ( p_g_iܙy , ( u_t32_t * iܙy ), 1098 ( dbv , iܙy )) 1099 DBENV_METHOD ( p_t_iܙy , ( u_t32_t iܙy ), 1100 ( dbv , iܙy )) 1101 DBENV_METHOD ( p_g_timeout , ( which , db_timeout_t * timeout ), 1102 ( dbv , which , timeout )) 1103 DBENV_METHOD ( p_t_timeout , ( which , db_timeout_t timeout ), 1104 ( dbv , which , timeout )) 1105 DBENV_METHOD ( pmgr_add_me_se , (cڡ * ho , u_t16_t pt , 1106 * eidp , u_t32_t ags ), ( dbv , ho , pt ,idp, flags)) 1107 DBENV_METHOD ( pmgr_g_ack_picy , (* picy ), ( dbv ,olicy)) 1108 DBENV_METHOD ( pmgr_t_ack_picy , ( picy ), ( dbv ,olicy)) 1109 DBENV_METHOD ( pmgr_t_lol_se , (cڡ * ho , u_t16_t pt , 1110 u_t32_t ags ), ( dbv , ho , pt , flags)) 1111 DBENV_METHOD ( pmgr_se_li , ( u_t * coup , DB_REPMGR_SITE ** lip ), 1112 ( dbv , coup , lip )) 1113 DBENV_METHOD ( pmgr_t , ( hads , u_t32_t ags ), 1114 ( dbv , hads , ags )) 1115 DBENV_METHOD ( pmgr_ , ( DB_REPMGR_STAT ** p , u_t32_t ags ), 1116 ( dbv , p , ags )) 1117 DBENV_METHOD ( pmgr__t , ( u_t32_t ags ), ( dbv , flags)) 1121 DBENV_METHOD ( g_timeout , 1122 ( db_timeout_t * timeou , u_t32_t ags ), 1123 ( dbv , timeou , ags )) 1124 DBENV_METHOD ( t_timeout , 1125 ( db_timeout_t timeout , u_t32_t ags ), 1126 ( dbv , timeout , ags )) 1129 * DbEnv :: $vsi (* maj , * m , * tch ) 1131 ( `db_vsi ( maj , m , tch )); 1132 } } 1135 DbEnv *DbEnv:: $wp_DB_ENV ( DB_ENV * dbv ) 1137 DbEnv * wed_v = `g_DbEnv ( dbv ); 1138 ( wed_v ! NULL ? wed_v : w `DbEnv ( dbv , 0); 1139 } } @../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 , $dbv_ (0) 44 `desibe (0, 0); 45 } } 47 gDbExi :: $DbExi (cڡ * desti ) 48 : `r_ (0) 49 , $dbv_ (0) 51 `desibe (0, desti ); 52 } } 54 gDbExi :: $DbExi (cڡ * desti , r ) 55 : `r_ ( r ) 56 , $dbv_ (0) 58 `desibe (0, desti ); 59 } } 61 gDbExi :: $DbExi (cڡ * efix , cڡ * desti , r ) 62 : `r_ ( r ) 63 , $dbv_ (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 , $dbv_ (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 dbv_ ; 137 } } 139 gDbExi :: $t_v ( DbEnv * dbv ) 141 dbv_ dbv ; 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 -> v -> 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 -> v -> dbv ), 56 "DbLogc::g", da , ON_ERROR_UNKNOWN ); 58 `DB_ERROR ( DbEnv :: `g_DbEnv ( logc -> v -> 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 -> v -> 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 -> v -> 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 -> v ->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 -> v ->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 " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_dich.h " 8 ~"dbc/db_am.h " 9 ~"dbc/log.h " 10 ~"dbc/txn.h " 17 $__d_masub_ad ( v , db , td , cbuf , g ) 18 ENV * v ; 19 DB ** db ; 20 * td ; 21 * cbuf ; 22 __d_masub_gs ** g ; 24 __d_masub_gs * gp ; 25 u_t32_t ump ; 26 u_t8_t * bp ; 27 t ; 29 i(( t = `__os_mloc ( v , 30 ( __d_masub_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 gp -> tx -> td =d; 37 `LOGCOPY_32 ( v , & gp -> ty , bp ); 38 bp +( gp -> ty ); 40 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 41 bp +( gp -> tx -> txnid ); 43 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 44 bp +( DB_LSN ); 46 `LOGCOPY_32 ( v , & ump , bp ); 47 gp -> feid = ( t32_t ) ump ; 48 bp +( ump ); 49 i( db ! NULL ) { 50 * db = NULL ; 51 t = `__dbg_id_to_db ( 52 v , gp -> tx , db ,rgp-> feid , 1); 55 `LOGCOPY_32 ( v , & ump , bp ); 56 gp -> pgno = ( db_pgno_t ) ump ; 57 bp +( ump ); 59 `memt (& gp -> ge , 0, (argp->page)); 60 `LOGCOPY_32 ( v ,& gp -> ge . size , bp ); 61 bp +( u_t32_t ); 62 gp -> ge . da = bp ; 63 bp + gp -> ge . size ; 64 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 65 t_t ; 66 i(( t_t = `__db_gesw (* db , ( PAGE *) gp -> ge . da , 67 ( size_t ) gp -> ge . size , NULL , 1)) != 0) 68 ( t_t ); 71 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 72 bp +( DB_LSN ); 74 * g = gp ; 75 ( t ); 76 } } 83 $__d_masub_log ( dbp , tx , t_lp , ags , pgno , ge , l ) 84 DB * dbp ; 85 DB_TXN * tx ; 86 DB_LSN * t_lp ; 87 u_t32_t ags ; 88 db_pgno_t pgno ; 89 cڡ DBT * ge ; 90 DB_LSN * l ; 92 DBT logc ; 93 DB_LSN * lp , nu_l , * p ; 94 DB_TXNLOGREC * ; 95 ENV * v ; 96 u_t32_t zo , ump , y , txn_num ; 97 u_t ad ; 98 u_t8_t * bp ; 99 is_dub , t ; 101 `COMPQUIET ( , NULL ); 103 v = dbp ->env; 104 p = t_lp ; 105 y = DB___d_masub ; 106 ad = 0; 107 t = 0; 109 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 110 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 111 i( tx = NULL ) 113 is_dub = 0; 115 is_dub = 1; 117 i( tx = NULL ) { 118 txn_num = 0; 119 lp = & nu_l ; 120 nu_l . fe =u_l. offt = 0; 122 i( `TAILQ_FIRST (& tx -> kids ! NULL && 123 ( t = `__txn_aivekids ( v , y , tx )) != 0) 124 ( t ); 131 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 132 txn_num = tx -> txnid ; 135 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 136 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 137 ( t = `__dbg_zy_id ( dbp )) != 0) 138 ( t ); 140 logc . size = ( y + ( txn_num + ( DB_LSN ) 141 + ( u_t32_t ) 142 + ( u_t32_t ) 143 + ( u_t32_t + ( ge = NULL ? 0 :age-> size ) 144 + (* l ); 145 i( `CRYPTO_ON ( v )) { 146 ad = v -> yo_hd -> `adj_size ( logc . size ); 147 logc . size + ad ; 150 i( is_dub || tx = NULL ) { 151 i(( t = 152 `__os_mloc ( v , logc . size , &logc. da )) != 0) 153 ( t ); 155 i(( t = `__os_mloc ( v , 156 logc . size + ( DB_TXNLOGREC ), & )) != 0) 157 ( t ); 158 #ifde DIAGNOSTIC 159 i(( t = 160 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 161 `__os_ ( v , ); 162 ( t ); 165 logc . da = ->data; 168 i( ad > 0) 169 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 171 bp = logc . da ; 173 `LOGCOPY_32 ( v , bp , & y ); 174 bp +( y ); 176 `LOGCOPY_32 ( v , bp , & txn_num ); 177 bp +( txn_num ); 179 `LOGCOPY_FROMLSN ( v , bp , lp ); 180 bp +( DB_LSN ); 182 ump = ( u_t32_t ) dbp -> log_fame -> id ; 183 `LOGCOPY_32 ( v , bp , & ump ); 184 bp +( ump ); 186 ump = ( u_t32_t ) pgno ; 187 `LOGCOPY_32 ( v , bp , & ump ); 188 bp +( ump ); 190 i( ge = NULL ) { 191 zo = 0; 192 `LOGCOPY_32 ( v , bp , & zo ); 193 bp +( u_t32_t ); 195 `LOGCOPY_32 ( v , bp , & ge -> size ); 196 bp +( ge -> size ); 197 `memy ( bp , ge -> da ,age-> size ); 198 i( `LOG_SWAPPED ( v )) 199 i(( t = `__db_gesw ( dbp , 200 ( PAGE *) bp , ( size_t ) ge -> size , ( DBT *) NULL , 0)) != 0) 201 ( t ); 202 bp + ge -> size ; 205 i( l ! NULL ) { 206 i( tx ! NULL ) { 207 LOG * = v -> lg_hd -> gfo . imy ; 208 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 209 `__log_check_ge_l ( v , dbp , l ) != 0)) 210 ( t ); 212 `LOGCOPY_FROMLSN ( v , bp , l ); 214 `memt ( bp , 0, (* l )); 215 bp +(* l ); 217 `DB_ASSERT ( v , 218 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 220 i( is_dub || tx = NULL ) { 221 i(( t = `__log_put ( v , p ,( DBT *)& logc , 222 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 223 * lp = * p ; 224 i( p ! t_lp ) 225 * t_lp = * p ; 228 t = 0; 229 #ifde DIAGNOSTIC 234 `memy ( -> da , logc .da,ogc. size ); 235 y | DB_debug_FLAG ; 236 `LOGCOPY_32 ( v , logc . da , & y ); 238 i(! `IS_REP_CLIENT ( v )) 239 t = `__log_put ( v , 240 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 242 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 243 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 244 `LSN_NOT_LOGGED (* t_lp ); 247 #ifde LOG_DIAGNOSTIC 248 i( t != 0) 249 () `__d_masub_t ( v , 250 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 253 #ifde DIAGNOSTIC 254 `__os_ ( v , logc . da ); 256 i( is_dub || tx = NULL ) 257 `__os_ ( v , logc . da ); 259 ( t ); 260 } } 267 $__d_mem__ad ( v , cbuf , g ) 268 ENV * v ; 269 * cbuf ; 270 __d_mem__gs ** g ; 272 __d_mem__gs * gp ; 273 u_t32_t ump ; 274 u_t8_t * bp ; 275 t ; 277 i(( t = `__os_mloc ( v , 278 ( __d_mem__gs + ( DB_TXN ), & gp )) != 0) 279 ( t ); 280 bp = cbuf ; 281 gp -> tx = ( DB_TXN *)&argp[1]; 282 `memt ( gp -> tx , 0, ( DB_TXN )); 284 `LOGCOPY_32 ( v , & gp -> ty , bp ); 285 bp +( gp -> ty ); 287 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 288 bp +( gp -> tx -> txnid ); 290 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 291 bp +( DB_LSN ); 293 `LOGCOPY_32 ( v , & ump , bp ); 294 gp -> feid = ( t32_t ) ump ; 295 bp +( ump ); 297 `memt (& gp -> me , 0, (argp->name)); 298 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 299 bp +( u_t32_t ); 300 gp -> me . da = bp ; 301 bp + gp -> me . size ; 303 `memt (& gp -> fid , 0, (argp->fid)); 304 `LOGCOPY_32 ( v ,& gp -> fid . size , bp ); 305 bp +( u_t32_t ); 306 gp -> fid . da = bp ; 307 bp + gp -> fid . size ; 309 `LOGCOPY_32 ( v , & gp -> pgsize , bp ); 310 bp +( gp -> pgsize ); 312 * g = gp ; 313 ( t ); 314 } } 322 $__d_mem__log ( v , tx , t_lp , ags , 323 feid , me , fid , pgsize ) 324 ENV * v ; 325 DB_TXN * tx ; 326 DB_LSN * t_lp ; 327 u_t32_t ags ; 328 t32_t feid ; 329 cڡ DBT * me ; 330 cڡ DBT * fid ; 331 u_t32_t pgsize ; 333 DBT logc ; 334 DB_LSN * lp , nu_l , * p ; 335 DB_TXNLOGREC * ; 336 u_t32_t zo , ump , y , txn_num ; 337 u_t ad ; 338 u_t8_t * bp ; 339 is_dub , t ; 341 `COMPQUIET ( , NULL ); 343 p = t_lp ; 344 y = DB___d_mem_ ; 345 ad = 0; 346 t = 0; 348 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 349 i( tx = NULL ) 351 i( tx = NULL ) 353 is_dub = 0; 355 is_dub = 1; 357 i( tx = NULL ) { 358 txn_num = 0; 359 lp = & nu_l ; 360 nu_l . fe =u_l. offt = 0; 362 i( `TAILQ_FIRST (& tx -> kids ! NULL && 363 ( t = `__txn_aivekids ( v , y , tx )) != 0) 364 ( t ); 371 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 372 txn_num = tx -> txnid ; 375 logc . size = ( y + ( txn_num + ( DB_LSN ) 376 + ( u_t32_t ) 377 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 378 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ) 379 + ( u_t32_t ); 380 i( `CRYPTO_ON ( v )) { 381 ad = v -> yo_hd -> `adj_size ( logc . size ); 382 logc . size + ad ; 385 i( is_dub || tx = NULL ) { 386 i(( t = 387 `__os_mloc ( v , logc . size , &logc. da )) != 0) 388 ( t ); 390 i(( t = `__os_mloc ( v , 391 logc . size + ( DB_TXNLOGREC ), & )) != 0) 392 ( t ); 393 #ifde DIAGNOSTIC 394 i(( t = 395 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 396 `__os_ ( v , ); 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 `LOGCOPY_32 ( v , bp , & y ); 409 bp +( y ); 411 `LOGCOPY_32 ( v , bp , & txn_num ); 412 bp +( txn_num ); 414 `LOGCOPY_FROMLSN ( v , bp , lp ); 415 bp +( DB_LSN ); 417 ump = ( u_t32_t ) feid ; 418 `LOGCOPY_32 ( v , bp , & ump ); 419 bp +( ump ); 421 i( me = NULL ) { 422 zo = 0; 423 `LOGCOPY_32 ( v , bp , & zo ); 424 bp +( u_t32_t ); 426 `LOGCOPY_32 ( v , bp , & me -> size ); 427 bp +( me -> size ); 428 `memy ( bp , me -> da ,ame-> size ); 429 bp + me -> size ; 432 i( fid = NULL ) { 433 zo = 0; 434 `LOGCOPY_32 ( v , bp , & zo ); 435 bp +( u_t32_t ); 437 `LOGCOPY_32 ( v , bp , & fid -> size ); 438 bp +( fid -> size ); 439 `memy ( bp , fid -> da , fid-> size ); 440 bp + fid -> size ; 443 `LOGCOPY_32 ( v , bp , & pgsize ); 444 bp +( pgsize ); 446 `DB_ASSERT ( v , 447 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 449 i( is_dub || tx = NULL ) { 450 i(( t = `__log_put ( v , p ,( DBT *)& logc , 451 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 452 * lp = * p ; 453 i( p ! t_lp ) 454 * t_lp = * p ; 457 t = 0; 458 #ifde DIAGNOSTIC 463 `memy ( -> da , logc .da,ogc. size ); 464 y | DB_debug_FLAG ; 465 `LOGCOPY_32 ( v , logc . da , & y ); 467 i(! `IS_REP_CLIENT ( v )) 468 t = `__log_put ( v , 469 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 471 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 472 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 473 `LSN_NOT_LOGGED (* t_lp ); 476 #ifde LOG_DIAGNOSTIC 477 i( t != 0) 478 () `__d_mem__t ( v , 479 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 482 #ifde DIAGNOSTIC 483 `__os_ ( v , logc . da ); 485 i( is_dub || tx = NULL ) 486 `__os_ ( v , logc . da ); 488 ( t ); 489 } } 496 $__d_mem_me_ad ( v , cbuf , g ) 497 ENV * v ; 498 * cbuf ; 499 __d_mem_me_gs ** g ; 501 __d_mem_me_gs * gp ; 502 u_t8_t * bp ; 503 t ; 505 i(( t = `__os_mloc ( v , 506 ( __d_mem_me_gs + ( DB_TXN ), & gp )) != 0) 507 ( t ); 508 bp = cbuf ; 509 gp -> tx = ( DB_TXN *)&argp[1]; 510 `memt ( gp -> tx , 0, ( DB_TXN )); 512 `LOGCOPY_32 ( v , & gp -> ty , bp ); 513 bp +( gp -> ty ); 515 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 516 bp +( gp -> tx -> txnid ); 518 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 519 bp +( DB_LSN ); 521 `memt (& gp -> dme , 0, (argp->oldname)); 522 `LOGCOPY_32 ( v ,& gp -> dme . size , bp ); 523 bp +( u_t32_t ); 524 gp -> dme . da = bp ; 525 bp + gp -> dme . size ; 527 `memt (& gp -> wme , 0, (argp->newname)); 528 `LOGCOPY_32 ( v ,& gp -> wme . size , bp ); 529 bp +( u_t32_t ); 530 gp -> wme . da = bp ; 531 bp + gp -> wme . size ; 533 `memt (& gp -> fid , 0, (argp->fid)); 534 `LOGCOPY_32 ( v ,& gp -> fid . size , bp ); 535 bp +( u_t32_t ); 536 gp -> fid . da = bp ; 537 bp + gp -> fid . size ; 539 * g = gp ; 540 ( t ); 541 } } 548 $__d_mem_me_log ( v , tx , t_lp , ags , 549 dme , wme , fid ) 550 ENV * v ; 551 DB_TXN * tx ; 552 DB_LSN * t_lp ; 553 u_t32_t ags ; 554 cڡ DBT * dme ; 555 cڡ DBT * wme ; 556 cڡ DBT * fid ; 558 DBT logc ; 559 DB_LSN * lp , nu_l , * p ; 560 DB_TXNLOGREC * ; 561 u_t32_t zo , y , txn_num ; 562 u_t ad ; 563 u_t8_t * bp ; 564 is_dub , t ; 566 `COMPQUIET ( , NULL ); 568 p = t_lp ; 569 y = DB___d_mem_me ; 570 ad = 0; 571 t = 0; 573 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 574 i( tx = NULL ) 576 i( tx = NULL ) 578 is_dub = 0; 580 is_dub = 1; 582 i( tx = NULL ) { 583 txn_num = 0; 584 lp = & nu_l ; 585 nu_l . fe =u_l. offt = 0; 587 i( `TAILQ_FIRST (& tx -> kids ! NULL && 588 ( t = `__txn_aivekids ( v , y , tx )) != 0) 589 ( t ); 596 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 597 txn_num = tx -> txnid ; 600 logc . size = ( y + ( txn_num + ( DB_LSN ) 601 + ( u_t32_t + ( dme = NULL ? 0 : oldme-> size ) 602 + ( u_t32_t + ( wme = NULL ? 0 :ewme-> size ) 603 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ); 604 i( `CRYPTO_ON ( v )) { 605 ad = v -> yo_hd -> `adj_size ( logc . size ); 606 logc . size + ad ; 609 i( is_dub || tx = NULL ) { 610 i(( t = 611 `__os_mloc ( v , logc . size , &logc. da )) != 0) 612 ( t ); 614 i(( t = `__os_mloc ( v , 615 logc . size + ( DB_TXNLOGREC ), & )) != 0) 616 ( t ); 617 #ifde DIAGNOSTIC 618 i(( t = 619 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 620 `__os_ ( v , ); 621 ( t ); 624 logc . da = ->data; 627 i( ad > 0) 628 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 630 bp = logc . da ; 632 `LOGCOPY_32 ( v , bp , & y ); 633 bp +( y ); 635 `LOGCOPY_32 ( v , bp , & txn_num ); 636 bp +( txn_num ); 638 `LOGCOPY_FROMLSN ( v , bp , lp ); 639 bp +( DB_LSN ); 641 i( dme = NULL ) { 642 zo = 0; 643 `LOGCOPY_32 ( v , bp , & zo ); 644 bp +( u_t32_t ); 646 `LOGCOPY_32 ( v , bp , & dme -> size ); 647 bp +( dme -> size ); 648 `memy ( bp , dme -> da , oldme-> size ); 649 bp + dme -> size ; 652 i( wme = NULL ) { 653 zo = 0; 654 `LOGCOPY_32 ( v , bp , & zo ); 655 bp +( u_t32_t ); 657 `LOGCOPY_32 ( v , bp , & wme -> size ); 658 bp +( wme -> size ); 659 `memy ( bp , wme -> da ,ewme-> size ); 660 bp + wme -> size ; 663 i( fid = NULL ) { 664 zo = 0; 665 `LOGCOPY_32 ( v , bp , & zo ); 666 bp +( u_t32_t ); 668 `LOGCOPY_32 ( v , bp , & fid -> size ); 669 bp +( fid -> size ); 670 `memy ( bp , fid -> da , fid-> size ); 671 bp + fid -> size ; 674 `DB_ASSERT ( v , 675 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 677 i( is_dub || tx = NULL ) { 678 i(( t = `__log_put ( v , p ,( DBT *)& logc , 679 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 680 * lp = * p ; 681 i( p ! t_lp ) 682 * t_lp = * p ; 685 t = 0; 686 #ifde DIAGNOSTIC 691 `memy ( -> da , logc .da,ogc. size ); 692 y | DB_debug_FLAG ; 693 `LOGCOPY_32 ( v , logc . da , & y ); 695 i(! `IS_REP_CLIENT ( v )) 696 t = `__log_put ( v , 697 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 699 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 700 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 701 `LSN_NOT_LOGGED (* t_lp ); 704 #ifde LOG_DIAGNOSTIC 705 i( t != 0) 706 () `__d_mem_me_t ( v , 707 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 710 #ifde DIAGNOSTIC 711 `__os_ ( v , logc . da ); 713 i( is_dub || tx = NULL ) 714 `__os_ ( v , logc . da ); 716 ( t ); 717 } } 724 $__d_mem_move_ad ( v , cbuf , g ) 725 ENV * v ; 726 * cbuf ; 727 __d_mem_move_gs ** g ; 729 __d_mem_move_gs * gp ; 730 u_t8_t * bp ; 731 t ; 733 i(( t = `__os_mloc ( v , 734 ( __d_mem_move_gs + ( DB_TXN ), & gp )) != 0) 735 ( t ); 736 bp = cbuf ; 737 gp -> tx = ( DB_TXN *)&argp[1]; 738 `memt ( gp -> tx , 0, ( DB_TXN )); 740 `LOGCOPY_32 ( v , & gp -> ty , bp ); 741 bp +( gp -> ty ); 743 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 744 bp +( gp -> tx -> txnid ); 746 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 747 bp +( DB_LSN ); 749 `memt (& gp -> me , 0, (argp->name)); 750 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 751 bp +( u_t32_t ); 752 gp -> me . da = bp ; 753 bp + gp -> me . size ; 755 `memt (& gp -> fid , 0, (argp->fid)); 756 `LOGCOPY_32 ( v ,& gp -> fid . size , bp ); 757 bp +( u_t32_t ); 758 gp -> fid . da = bp ; 759 bp + gp -> fid . size ; 761 * g = gp ; 762 ( t ); 763 } } 770 $__d_mem_move_log ( v , tx , t_lp , ags , 771 me , fid ) 772 ENV * v ; 773 DB_TXN * tx ; 774 DB_LSN * t_lp ; 775 u_t32_t ags ; 776 cڡ DBT * me ; 777 cڡ DBT * fid ; 779 DBT logc ; 780 DB_LSN * lp , nu_l , * p ; 781 DB_TXNLOGREC * ; 782 u_t32_t zo , y , txn_num ; 783 u_t ad ; 784 u_t8_t * bp ; 785 is_dub , t ; 787 `COMPQUIET ( , NULL ); 789 p = t_lp ; 790 y = DB___d_mem_move ; 791 ad = 0; 792 t = 0; 794 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 795 i( tx = NULL ) 797 i( tx = NULL ) 799 is_dub = 0; 801 is_dub = 1; 803 i( tx = NULL ) { 804 txn_num = 0; 805 lp = & nu_l ; 806 nu_l . fe =u_l. offt = 0; 808 i( `TAILQ_FIRST (& tx -> kids ! NULL && 809 ( t = `__txn_aivekids ( v , y , tx )) != 0) 810 ( t ); 817 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 818 txn_num = tx -> txnid ; 821 logc . size = ( y + ( txn_num + ( DB_LSN ) 822 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 823 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ); 824 i( `CRYPTO_ON ( v )) { 825 ad = v -> yo_hd -> `adj_size ( logc . size ); 826 logc . size + ad ; 829 i( is_dub || tx = NULL ) { 830 i(( t = 831 `__os_mloc ( v , logc . size , &logc. da )) != 0) 832 ( t ); 834 i(( t = `__os_mloc ( v , 835 logc . size + ( DB_TXNLOGREC ), & )) != 0) 836 ( t ); 837 #ifde DIAGNOSTIC 838 i(( t = 839 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 840 `__os_ ( v , ); 841 ( t ); 844 logc . da = ->data; 847 i( ad > 0) 848 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 850 bp = logc . da ; 852 `LOGCOPY_32 ( v , bp , & y ); 853 bp +( y ); 855 `LOGCOPY_32 ( v , bp , & txn_num ); 856 bp +( txn_num ); 858 `LOGCOPY_FROMLSN ( v , bp , lp ); 859 bp +( DB_LSN ); 861 i( me = NULL ) { 862 zo = 0; 863 `LOGCOPY_32 ( v , bp , & zo ); 864 bp +( u_t32_t ); 866 `LOGCOPY_32 ( v , bp , & me -> size ); 867 bp +( me -> size ); 868 `memy ( bp , me -> da ,ame-> size ); 869 bp + me -> size ; 872 i( fid = NULL ) { 873 zo = 0; 874 `LOGCOPY_32 ( v , bp , & zo ); 875 bp +( u_t32_t ); 877 `LOGCOPY_32 ( v , bp , & fid -> size ); 878 bp +( fid -> size ); 879 `memy ( bp , fid -> da , fid-> size ); 880 bp + fid -> size ; 883 `DB_ASSERT ( v , 884 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 886 i( is_dub || tx = NULL ) { 887 i(( t = `__log_put ( v , p ,( DBT *)& logc , 888 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 889 * lp = * p ; 890 i( p ! t_lp ) 891 * t_lp = * p ; 894 t = 0; 895 #ifde DIAGNOSTIC 900 `memy ( -> da , logc .da,ogc. size ); 901 y | DB_debug_FLAG ; 902 `LOGCOPY_32 ( v , logc . da , & y ); 904 i(! `IS_REP_CLIENT ( v )) 905 t = `__log_put ( v , 906 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 908 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 909 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 910 `LSN_NOT_LOGGED (* t_lp ); 913 #ifde LOG_DIAGNOSTIC 914 i( t != 0) 915 () `__d_mem_move_t ( v , 916 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 919 #ifde DIAGNOSTIC 920 `__os_ ( v , logc . da ); 922 i( is_dub || tx = NULL ) 923 `__os_ ( v , logc . da ); 925 ( t ); 926 } } 932 $__d__cov ( v , dbp ) 933 ENV * v ; 934 DB_DISTAB * dbp ; 936 t ; 938 i(( t = `__db_add_covy_t ( v , dbp , 939 __d_masub_cov , DB___d_masub )) != 0) 940 ( t ); 941 i(( t = `__db_add_covy_t ( v , dbp , 942 __d_mem__cov , DB___d_mem_ )) != 0) 943 ( t ); 944 i(( t = `__db_add_covy_t ( v , dbp , 945 __d_mem_me_cov , DB___d_mem_me )) != 0) 946 ( t ); 947 i(( t = `__db_add_covy_t ( v , dbp , 948 __d_mem_move_cov , DB___d_mem_move )) != 0) 949 ( t ); 951 } } @../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 ( v , db , lp , nud2 , nud3 ) 19 ENV * v ; 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 = 34 `__d_masub_ad ( v , NULL , NULL, 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 ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 45 () `tf ("\tpage: "); 46 i = 0; i < gp -> ge . size ; i++) { 47 ch = (( u_t8_t *) gp -> ge . da )[ i ]; 48 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 50 () `tf ("\n"); 51 () `tf ("\tlsn: [%lu][%lu]\n", 52 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 53 () `tf ("\n"); 54 `__os_ ( v , gp ); 56 } } 63 $__d_mem__t ( v , db , lp , nud2 , nud3 ) 64 ENV * v ; 65 DBT * db ; 66 DB_LSN * lp ; 67 db_cs nud2 ; 68 * nud3 ; 70 __d_mem__gs * gp ; 71 u_t32_t i ; 72 ch ; 73 t ; 75 nud2 = DB_TXN_PRINT ; 76 nud3 = NULL ; 78 i(( t = `__d_mem__ad ( v , db -> da , & gp )) != 0) 79 ( t ); 80 () `tf ( 82 ( u_lg ) lp -> fe , (u_lgp-> offt , 83 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 84 ( u_lg ) gp -> ty , 85 ( u_lg ) gp -> tx -> txnid , 86 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 87 () `tf ("\tfeid: %ld\n", () gp -> feid ); 88 () `tf ("\tname: "); 89 i = 0; i < gp -> me . size ; i++) { 90 ch = (( u_t8_t *) gp -> me . da )[ i ]; 91 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 93 () `tf ("\n"); 94 () `tf ("\tfid: "); 95 i = 0; i < gp -> fid . size ; i++) { 96 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 97 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 99 () `tf ("\n"); 100 () `tf ("\gsize: %lu\n", ( u_lg ) gp -> pgsize ); 101 () `tf ("\n"); 102 `__os_ ( v , gp ); 104 } } 111 $__d_mem_me_t ( v , db , lp , nud2 , nud3 ) 112 ENV * v ; 113 DBT * db ; 114 DB_LSN * lp ; 115 db_cs nud2 ; 116 * nud3 ; 118 __d_mem_me_gs * gp ; 119 u_t32_t i ; 120 ch ; 121 t ; 123 nud2 = DB_TXN_PRINT ; 124 nud3 = NULL ; 126 i(( t = `__d_mem_me_ad ( v , db -> da , & gp )) != 0) 127 ( t ); 128 () `tf ( 130 ( u_lg ) lp -> fe , (u_lgp-> offt , 131 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 132 ( u_lg ) gp -> ty , 133 ( u_lg ) gp -> tx -> txnid , 134 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 135 () `tf ("\toldname: "); 136 i = 0; i < gp -> dme . size ; i++) { 137 ch = (( u_t8_t *) gp -> dme . da )[ i ]; 138 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 140 () `tf ("\n"); 141 () `tf ("\tnewname: "); 142 i = 0; i < gp -> wme . size ; i++) { 143 ch = (( u_t8_t *) gp -> wme . da )[ i ]; 144 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 146 () `tf ("\n"); 147 () `tf ("\tfid: "); 148 i = 0; i < gp -> fid . size ; i++) { 149 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 150 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 152 () `tf ("\n"); 153 () `tf ("\n"); 154 `__os_ ( v , gp ); 156 } } 163 $__d_mem_move_t ( v , db , lp , nud2 , nud3 ) 164 ENV * v ; 165 DBT * db ; 166 DB_LSN * lp ; 167 db_cs nud2 ; 168 * nud3 ; 170 __d_mem_move_gs * gp ; 171 u_t32_t i ; 172 ch ; 173 t ; 175 nud2 = DB_TXN_PRINT ; 176 nud3 = NULL ; 178 i(( t = `__d_mem_move_ad ( v , db -> da , & gp )) != 0) 179 ( t ); 180 () `tf ( 182 ( u_lg ) lp -> fe , (u_lgp-> offt , 183 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 184 ( u_lg ) gp -> ty , 185 ( u_lg ) gp -> tx -> txnid , 186 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 187 () `tf ("\tname: "); 188 i = 0; i < gp -> me . size ; i++) { 189 ch = (( u_t8_t *) gp -> me . da )[ i ]; 190 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 192 () `tf ("\n"); 193 () `tf ("\tfid: "); 194 i = 0; i < gp -> fid . size ; i++) { 195 ch = (( u_t8_t *) gp -> fid . da )[ i ]; 196 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 198 () `tf ("\n"); 199 () `tf ("\n"); 200 `__os_ ( v , gp ); 202 } } 208 $__d__t ( v , dbp ) 209 ENV * v ; 210 DB_DISTAB * dbp ; 212 t ; 214 i(( t = `__db_add_covy_t ( v , dbp , 215 __d_masub_t , DB___d_masub )) != 0) 216 ( t ); 217 i(( t = `__db_add_covy_t ( v , dbp , 218 __d_mem__t , DB___d_mem_ )) != 0) 219 ( t ); 220 i(( t = `__db_add_covy_t ( v , dbp , 221 __d_mem_me_t , DB___d_mem_me )) != 0) 222 ( t ); 223 i(( t = `__db_add_covy_t ( v , dbp , 224 __d_mem_move_t , DB___d_mem_move )) != 0) 225 ( t ); 227 } } @../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 ( v , db , lp , , fo ) 28 ENV * v ; 29 DBT * db ; 30 DB_LSN * lp ; 31 db_cs ; 32 * fo ; 34 __d_masub_gs * gp ; 35 DB_THREAD_INFO * ; 36 DB * fe_dbp ; 37 DBC * dbc ; 38 DB_MPOOLFILE * mpf ; 39 PAGE * g ; 40 cmp_p , t , t_t ; 42 = (( DB_TXNHEAD *) fo )-> thad_fo ; 43 g = NULL ; 44 `REC_PRINT ( __d_masub_t ); 45 `REC_INTRO ( __d_masub_ad , , 0); 47 i(( t = `__memp_fg ( mpf , & gp -> pgno , 48 , NULL , 0, & g )) != 0) { 50 i( `F_ISSET ( fe_dbp , DB_AM_INMEM ) && 51 ( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 52 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & g )) == 0) { 53 `LSN_NOT_LOGGED ( `LSN ( g )); 55 * lp = gp -> ev_l ; 56 t = 0; 57 out ; 61 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 62 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 64 i( cmp_p =0 && `DB_REDO ( )) { 65 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 66 `memy ( g , gp -> ge . da ,rgp->ge. size ); 67 `LSN ( g * lp ; 74 i( `F_ISSET ( fe_dbp , DB_AM_INMEM ) && 75 gp -> pgno = PGNO_BASE_MD && 76 ( t = `__db_ma_tup ( fe_dbp -> v , file_dbp, 77 fe_dbp -> dme , ( DBMETA *) g , 0, DB_CHK_META )) != 0) 78 out ; 79 } i( `DB_UNDO ( )) { 92 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 93 `LSN ( g gp -> l ; 96 de : * lp = gp -> ev_l ; 97 t = 0; 99 out : i( g ! NULL && ( t_t = `__memp_ut ( mpf , 100 , g , fe_dbp -> iܙy )) != 0 && 101 t == 0) 102 t = t_t ; 104 REC_CLOSE ; 105 } } 115 $__d_mem__cov ( v , db , lp , , fo ) 116 ENV * v ; 117 DBT * db ; 118 DB_LSN * lp ; 119 db_cs ; 120 * fo ; 122 __d_mem__gs * gp ; 123 DB * dbp ; 124 do_o , t , t_t ; 126 `COMPQUIET ( fo , NULL ); 128 dbp = NULL ; 129 do_o = 0; 130 `REC_PRINT ( __d_mem__t ); 131 `REC_NOOP_INTRO ( __d_mem__ad ); 134 i( gp -> feid = DB_LOGFILEID_INVALID ) { 135 i( `DB_REDO ( )) 136 t = ENOENT ; 138 t = 0; 140 t = `__dbg_id_to_db ( v , gp -> tx , & dbp ,rgp-> feid , 0); 142 i( `DB_REDO ( )) { 147 i( t != 0) { 148 i(( t = `__db__ (& dbp , v , 0)) != 0) 149 out ; 151 `F_SET ( dbp , DB_AM_RECOVER | DB_AM_INMEM ); 152 `memy ( dbp -> feid , gp -> fid . da , DB_FILE_ID_LEN ); 153 i((( t = `__os_rdup ( v , 154 gp -> me . da , & dbp -> dme )) != 0)) 155 out ; 162 do_o = 1; 166 `memy ( dbp -> feid , gp -> fid . da ,rgp->fid. size ); 167 i(( t = `__memp_t_feid ( dbp -> mpf , dbp-> feid )) != 0) 168 out ; 169 dbp -> erve_fid = 1; 170 `MAKE_INMEM ( dbp ); 171 i(( t = `__v_tup ( dbp , 172 NULL , NULL, gp -> me . da , TXN_INVALID , 0)) != 0) 173 out ; 174 t = `__v_mpo ( dbp , gp -> me . da , 0); 176 i( t = ENOENT ) { 177 dbp -> pgsize = gp ->pgsize; 178 i(( t = `__v_mpo ( dbp , 179 gp -> me . da , DB_CREATE )) != 0) 180 out ; 181 } i( t != 0) 182 out ; 185 i( `DB_UNDO ( )) { 186 i( t == 0) 187 t = `__memp_me ( v , gp -> fid . da , NULL , 188 (cڡ *) gp -> me . da , NULL , 1); 190 i( t = ENOENT || = DB_DELETED ) 191 t = 0; 193 out ; 196 * lp = gp -> ev_l ; 198 out : i( dbp ! NULL ) { 199 t_t = 0; 201 i( do_o || t != 0) 202 t_t = `__db_o ( dbp , NULL , DB_NOSYNC ); 203 i( t_t !0 && t == 0) 204 t = t_t ; 206 REC_NOOP_CLOSE ; 207 } } 217 $__d_mem_me_cov ( v , db , lp , , fo ) 218 ENV * v ; 219 DBT * db ; 220 DB_LSN * lp ; 221 db_cs ; 222 * fo ; 224 __d_mem_me_gs * gp ; 225 u_t8_t * feid ; 226 t ; 228 `COMPQUIET ( fo , NULL ); 230 `REC_PRINT ( __d_mem_me_t ); 231 `REC_NOOP_INTRO ( __d_mem_me_ad ); 232 feid = gp -> fid . da ; 235 i( `DB_REDO ( )) 236 () `__memp_me ( v , feid , 237 (cڡ *) gp -> wme . da , 238 (cڡ *) gp -> dme . da , 239 (cڡ *) gp -> wme . da , 1); 241 i( `DB_UNDO ( )) 242 () `__memp_me ( v , feid , 243 (cڡ *) gp -> dme . da , 244 (cڡ *) gp -> wme . da , 245 (cڡ *) gp -> dme . da , 1); 247 * lp = gp -> ev_l ; 248 t = 0; 250 REC_NOOP_CLOSE ; 251 } } 261 $__d_mem_move_cov ( v , db , lp , , fo ) 262 ENV * v ; 263 DBT * db ; 264 DB_LSN * lp ; 265 db_cs ; 266 * fo ; 268 __d_mem_move_gs * gp ; 269 t ; 271 `COMPQUIET ( fo , NULL ); 273 `REC_PRINT ( __d_mem_move_t ); 274 `REC_NOOP_INTRO ( __d_mem_move_ad ); 280 i( `DB_REDO ( )) { 281 () `__memp_me ( v , 282 gp -> fid . da , NULL ,rgp-> me .data, NULL, 1); 285 * lp = gp -> ev_l ; 286 t = 0; 288 REC_NOOP_CLOSE ; 289 } } @../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 *)); 56 __db_dissoc_feign __P (( DB *)); 58 #ifde CONFIG_TEST 59 __db_makecy __P (( ENV *, const *, const *)); 60 __db_docy __P (( ENV *, const *)); 61 __qam_docy __P (( DB *, const *)); 77 $__db_ma_ݒ ( subdbp , , txn , me , ags , mode , db ) 78 DB * subdbp ; 79 DB_THREAD_INFO * ; 80 DB_TXN * txn ; 81 cڡ * me ; 82 u_t32_t ags ; 83 mode ; 84 DB ** db ; 86 DB * dbp ; 87 t ; 89 * db = NULL ; 92 i(( t = `__db__ (& dbp , subdbp -> v , 0)) != 0) 93 ( t ); 101 dbp -> pgsize = subdbp ->pgsize; 102 `F_SET ( dbp , DB_AM_SUBDB ); 103 `F_SET ( dbp , `F_ISSET ( subdbp , 104 DB_AM_RECOVER | DB_AM_SWAP | 105 DB_AM_ENCRYPT | DB_AM_CHKSUM | DB_AM_NOT_DURABLE )); 112 `LF_CLR ( DB_EXCL ); 113 `LF_SET ( DB_RDWRMASTER ); 114 i(( t = `__db_ݒ ( dbp , , 115 txn , me , NULL , DB_BTREE , ags , mode , PGNO_BASE_MD )) != 0) 116 r ; 125 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 126 `F_SET ( subdbp , DB_AM_CHKSUM ); 132 subdbp -> pgsize = dbp ->pgsize; 133 * db = dbp ; 136 r : i(! `F_ISSET ( dbp , DB_AM_DISCARD )) 137 () `__db_o ( dbp , txn , 0); 140 ( t ); 141 } } 151 $__db_ma_upde ( mdbp , sdbp , , txn , subdb , ty , ai , wme , ags ) 152 DB * mdbp , * sdbp ; 153 DB_TXN * txn ; 154 DB_THREAD_INFO * ; 155 cڡ * subdb ; 156 DBTYPE ty ; 157 mu_ai ai ; 158 cڡ * wme ; 159 u_t32_t ags ; 161 DBC * dbc , * ndbc ; 162 DBT key , da , nda ; 163 ENV * v ; 164 PAGE * p , * r ; 165 db_pgno_t t_pgno ; 166 modify , t , t_t ; 168 v = mdbp ->env; 169 dbc = ndbc = NULL ; 170 p = NULL ; 178 modify = ( ai ! MU_OPEN || `LF_ISSET ( DB_CREATE )) ? 1 : 0; 180 i(( t = `__db_curs ( mdbp , , txn , & dbc , 181 ( `CDB_LOCKING ( v && modify ? DB_WRITECURSOR : 0)) != 0) 182 ( t ); 197 `DB_INIT_DBT ( key , subdb , ` (subdb)); 198 `memt (& da , 0, (data)); 199 `F_SET (& da , DB_DBT_MALLOC ); 201 t = `__dbc_g ( dbc , & key , & da , 202 DB_SET | (( `STD_LOCKING ( dbc && modify ? DB_RMW : 0)); 209 ai ) { 210 MU_REMOVE : 217 i( t != 0) 218 r ; 224 i(( t = `__dbc_d ( dbc , 0)) != 0) 225 r ; 232 `memy (& sdbp -> ma_pgno , da .da, ( db_pgno_t )); 233 `DB_NTOHL_SWAP ( v , & sdbp -> ma_pgno ); 234 i(( t = `__memp_fg ( mdbp -> mpf , & sdbp -> ma_pgno , 235 , dbc -> txn , DB_MPOOL_DIRTY , & p )) != 0) 236 r ; 239 i( `TYPE ( p = P_BTREEMETA && 240 (( BTMETA *) p )-> ro ! PGNO_INVALID ) { 241 i(( t = `__memp_fg ( mdbp -> mpf , 242 &(( BTMETA *) p )-> ro , , dbc -> txn , 243 DB_MPOOL_DIRTY , & r )) != 0) 244 r ; 247 i(( t = `__db_ ( dbc , r )) != 0) { 248 r = NULL ; 249 r ; 253 i(( t = `__db_ ( dbc , p )) != 0) { 254 p = NULL ; 255 r ; 257 p = NULL ; 259 MU_RENAME : 261 i( t != 0) 262 r ; 271 i(( t = `__db_curs ( mdbp , , txn , & ndbc , 272 `CDB_LOCKING ( v ? DB_WRITECURSOR : 0)) != 0) 273 r ; 274 `DB_SET_DBT ( key , wme , ` (newname)); 280 `memt (& nda , 0, (ndata)); 281 `F_SET (& nda , DB_DBT_USERMEM | DB_DBT_PARTIAL ); 283 i(( t = `__dbc_g ( ndbc , & key , & nda , DB_SET )) == 0) { 285 t = EEXIST ; 286 `__db_rx ( v , "me: daba %exis", wme ); 287 r ; 288 } i( t ! DB_NOTFOUND ) 289 r ; 296 i(( t = `__dbc_put ( ndbc , & key , & da , DB_KEYFIRST )) != 0) 297 r ; 298 i(( t = `__dbc_d ( dbc , 0)) != 0) { 303 () `__dbc_d ( ndbc , 0); 304 r ; 308 MU_OPEN : 313 t ) { 315 i( `LF_ISSET ( DB_CREATE && LF_ISSET( DB_EXCL )) { 316 t = EEXIST ; 317 r ; 319 `memy (& sdbp -> ma_pgno , da .da, ( db_pgno_t )); 320 `DB_NTOHL_SWAP ( v , & sdbp -> ma_pgno ); 321 de ; 322 DB_NOTFOUND : 323 i( `LF_ISSET ( DB_CREATE )) 329 t = ENOENT ; 330 r ; 332 r ; 336 i(( t = `__db_w ( dbc , 337 ty = DB_HASH ? P_HASHMETA : P_BTREEMETA , & p )) != 0) 338 r ; 339 sdbp -> ma_pgno = `PGNO ( p ); 347 t_pgno = `PGNO ( p ); 348 `DB_HTONL_SWAP ( v , & t_pgno ); 349 `memt (& nda , 0, (ndata)); 350 nda . da = & t_pgno ; 351 nda . size = ( db_pgno_t ); 352 i(( t = `__dbc_put ( dbc , & key , & nda , DB_KEYLAST )) != 0) 353 r ; 354 `F_SET ( sdbp , DB_AM_CREATED ); 358 r : 359 de : 363 i( p ! NULL && ( t_t = `__memp_ut ( mdbp -> mpf , 364 dbc -> thad_fo , p , dbc-> iܙy )!0 && t == 0) 365 t = t_t ; 368 i( da .d! NULL ) 369 `__os_u ( v , da .data); 370 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 371 t = t_t ; 372 i( ndbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 373 t = t_t ; 375 ( t ); 376 } } 386 $__v_tup ( dbp , txn , ame , dme , id , ags ) 387 DB * dbp ; 388 DB_TXN * txn ; 389 cڡ * ame , * dme ; 390 u_t32_t id , ags ; 392 DB * ldbp ; 393 DB_ENV * dbv ; 394 ENV * v ; 395 u_t32_t maxid ; 396 t ; 398 v = dbp ->env; 399 dbv = v ->dbenv; 402 i(! `F_ISSET ( v , ENV_OPEN_CALLED )) { 404 i( dbv -> mp_gbys == 0 && 405 dbv -> mp_bys < dbp -> pgsize * DB_MINPAGECACHE && 406 ( t = `__memp_t_chesize ( 407 dbv , 0, dbp -> pgsize * DB_MINPAGECACHE , 0)) != 0) 408 ( t ); 410 i(( t = `__v_ݒ ( dbv , NULL , DB_CREATE | 411 DB_INIT_MPOOL | DB_PRIVATE | `LF_ISSET ( DB_THREAD ), 0)) != 0) 412 ( t ); 416 i((! `F_ISSET ( dbp , DB_AM_INMEM || dme = NULL ) && 417 ( t = `__v_mpo ( dbp , ame , ags )) != 0) 418 ( t ); 421 i( `LF_ISSET ( DB_THREAD && ( t = `__mux_loc ( 422 v , MTX_DB_HANDLE , DB_MUTEX_PROCESS_ONLY , & dbp -> mux )) != 0) 423 ( t ); 431 i( `LOGGING_ON ( v && dbp -> log_fame = NULL 432 #i! `defed ( DEBUG_ROP && !defed( DEBUG_WOP && !defed( DIAGNOSTIC ) 433 && ( txn ! NULL || `F_ISSET ( dbp , DB_AM_RECOVER )) 435 #i! `defed ( DEBUG_ROP ) 436 && ! `F_ISSET ( dbp , DB_AM_RDONLY ) 439 i(( t = `__dbg_tup ( dbp , 440 `F_ISSET ( dbp , DB_AM_INMEM ? dme : ame , 441 `F_ISSET ( dbp , DB_AM_INMEM ? NULL : dme , id )) != 0) 442 ( t ); 449 i( `DBENV_LOGGING ( v && ! `F_ISSET ( dbp , DB_AM_RECOVER ) && 450 ( t = `__dbg_w_id ( dbp , txn )) != 0) 451 ( t ); 463 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 464 maxid = 0; 465 `TAILQ_FOREACH ( ldbp , & v -> dbli , dblilks ) { 471 i(! `F_ISSET ( dbp , DB_AM_INMEM )) { 472 i( `memcmp ( ldbp -> feid , dbp ->feid, DB_FILE_ID_LEN ) 473 =0 && ldbp -> ma_pgno = dbp ->meta_pgno) 475 } i( dme ! NULL ) { 476 i( `F_ISSET ( ldbp , DB_AM_INMEM ) && 477 ldbp -> dme ! NULL && 478 `rcmp ( ldbp -> dme , dname) == 0) 481 i( ldbp -> adj_feid > maxid ) 482 maxid = ldbp -> adj_feid ; 494 i( ldbp = NULL ) { 495 dbp -> adj_feid = maxid + 1; 496 `TAILQ_INSERT_HEAD (& v -> dbli , dbp , dblilks ); 498 dbp -> adj_feid = ldbp ->adj_fileid; 499 `TAILQ_INSERT_AFTER (& v -> dbli , ldbp , dbp , dblilks ); 501 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 504 } } 513 $__v_mpo ( dbp , ame , ags ) 514 DB * dbp ; 515 cڡ * ame ; 516 u_t32_t ags ; 518 DBT pgcook ; 519 DB_MPOOLFILE * mpf ; 520 DB_PGINFO pgfo ; 521 ENV * v ; 522 fidt , y , t ; 523 t32_t l_off ; 524 u_t8_t nufid [ DB_FILE_ID_LEN ]; 525 u_t32_t r_n ; 527 v = dbp ->env; 530 l_off = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LSN_OFF_NOTSET : 0; 533 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 544 dbp -> ty ) { 545 DB_BTREE : 546 DB_RECNO : 547 y = `F_ISSET ( dbp , DB_AM_SWAP | DB_AM_ENCRYPT | DB_AM_CHKSUM ) 548 ? DB_FTYPE_SET : DB_FTYPE_NOTSET ; 549 r_n = `CRYPTO_ON ( v ) ? 550 ( dbp -> pgsize !0 ? dbp->pgsiz: DB_CLEARLEN_NOTSET ) : 551 DB_PAGE_DB_LEN ; 553 DB_HASH : 554 y = DB_FTYPE_SET ; 555 r_n = `CRYPTO_ON ( v ) ? 556 ( dbp -> pgsize !0 ? dbp->pgsiz: DB_CLEARLEN_NOTSET ) : 557 DB_PAGE_DB_LEN ; 559 DB_QUEUE : 560 y = `F_ISSET ( dbp , 561 DB_AM_SWAP | DB_AM_ENCRYPT | DB_AM_CHKSUM ) ? 562 DB_FTYPE_SET : DB_FTYPE_NOTSET ; 570 r_n = dbp -> pgsize !0 ? dbp->pgsiz: DB_CLEARLEN_NOTSET ; 572 DB_UNKNOWN : 585 i( `F_ISSET ( dbp , DB_AM_VERIFYING )) { 586 y = DB_FTYPE_NOTSET ; 587 r_n = DB_PAGE_DB_LEN ; 596 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 597 r_n = DB_CLEARLEN_NOTSET ; 598 y = DB_FTYPE_NOTSET ; 599 l_off = DB_LSN_OFF_NOTSET ; 604 ( `__db_unknown_ty ( v , "DB->ݒ", dbp -> ty )); 607 mpf = dbp ->mpf; 609 `memt ( nufid , 0, DB_FILE_ID_LEN ); 610 fidt = `memcmp ( nufid , dbp -> feid , DB_FILE_ID_LEN ); 611 i( fidt ) 612 () `__memp_t_feid ( mpf , dbp -> feid ); 614 () `__memp_t_r_n ( mpf , r_n ); 615 () `__memp_t_y ( mpf , y ); 616 () `__memp_t_l_offt ( mpf , l_off ); 618 pgfo . db_gesize = dbp -> pgsize ; 619 pgfo . ags = 620 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 621 pgfo . ty = dbp ->type; 622 pgcook . da = & pgfo ; 623 pgcook . size = ( DB_PGINFO ); 624 () `__memp_t_pgcook ( mpf , & pgcook ); 626 #ide DIAG_MVCC 627 i( `F_ISSET ( v -> dbv , DB_ENV_MULTIVERSION )) 629 i( `F_ISSET ( dbp , DB_AM_TXN ) && 630 dbp -> ty ! DB_QUEUE && dbp->ty ! DB_UNKNOWN ) 631 `LF_SET ( DB_MULTIVERSION ); 633 i(( t = `__memp_fݒ ( mpf , NULL , ame , 634 `LF_ISSET ( DB_CREATE | DB_DURABLE_UNKNOWN | DB_MULTIVERSION | 635 DB_NOMMAP | DB_ODDFILESIZE | DB_RDONLY | DB_TRUNCATE ) | 636 ( `F_ISSET ( v -> dbv , DB_ENV_DIRECT_DB ? DB_DIRECT : 0) | 637 ( `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_TXN_NOT_DURABLE : 0), 638 0, dbp -> pgsize )) != 0) { 643 () `__memp_fo ( dbp -> mpf , 0); 644 () `__memp_f ( v , & dbp -> mpf ); 645 i( `F_ISSET ( dbp , DB_AM_INMEM )) 646 `MAKE_INMEM ( dbp ); 647 ( t ); 657 `F_SET ( dbp , DB_AM_OPEN_CALLED ); 658 i(! fidt && ame ! NULL ) { 659 () `__memp_g_feid ( dbp -> mpf , dbp-> feid ); 660 dbp -> erve_fid = 1; 664 } } 673 $__db_o ( dbp , txn , ags ) 674 DB * dbp ; 675 DB_TXN * txn ; 676 u_t32_t ags ; 678 ENV * v ; 679 db_f , deed_o , t , t_t ; 681 v = dbp ->env; 682 deed_o = t = 0; 691 i( txn ! NULL ) 692 () `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0); 695 t = `__db_esh ( dbp , txn , ags , & deed_o , 0); 701 i( deed_o ) 702 ( t ); 715 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 716 db_f = -- v ->db_ref; 717 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 718 i( `F_ISSET ( v , ENV_DBLOCAL && db_f == 0 && 719 ( t_t = `__v_o ( v -> dbv , 0)!0 && t == 0) 720 t = t_t ; 723 `memt ( dbp , CLEAR_BYTE , (*dbp)); 724 `__os_ ( v , dbp ); 726 ( t ); 727 } } 740 $__db_esh ( dbp , txn , ags , deed_op , u ) 741 DB * dbp ; 742 DB_TXN * txn ; 743 u_t32_t ags ; 744 * deed_op , u ; 746 DB * sdbp ; 747 DBC * dbc ; 748 DB_FOREIGN_INFO * f_fo , * tmp ; 749 DB_LOCKER * lock ; 750 DB_LOCKREQ eq ; 751 ENV * v ; 752 REGENV * nv ; 753 REGINFO * f ; 754 u_t32_t ve_ags ; 755 sync , t , t_t ; 757 t = 0; 759 v = dbp ->env; 760 f = v -> gfo ; 761 i( f ! NULL ) 762 nv = f -> imy ; 764 nv = NULL ; 770 i( dbp -> mpf = NULL ) 771 `LF_SET ( DB_NOSYNC ); 774 i(! `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 775 v_ݒed ; 786 `LIST_FOREACH ( sdbp , & dbp -> s_cds , s_lks ) { 787 `LIST_REMOVE ( sdbp , s_lks ); 788 i(( t_t = `__db_dissoc ( sdbp )!0 && t == 0) 789 t = t_t ; 796 f_fo = `LIST_FIRST (& dbp -> f_ims ); 797 f_fo ! NULL ) { 798 tmp = `LIST_NEXT ( f_fo , f_lks ); 799 `LIST_REMOVE ( f_fo , f_lks ); 800 f_fo -> dbp -> s_feign = NULL ; 801 `__os_ ( v , f_fo ); 802 f_fo = tmp ; 805 i( dbp -> s_feign ! NULL && 806 ( t_t = `__db_dissoc_feign ( dbp )!0 && t == 0) 807 t = t_t ; 818 i(! `LF_ISSET ( DB_NOSYNC ) && 819 ! `F_ISSET ( dbp , DB_AM_DISCARD | DB_AM_RECOVER ) && 820 ( t_t = `__db_sync ( dbp )!0 && t == 0) 821 t = t_t ; 830 sync = `TAILQ_FIRST (& dbp -> aive_queue = NULL ? 0 : 1; 831 ( dbc = `TAILQ_FIRST (& dbp -> aive_queue )! NULL ) 832 i(( t_t = `__dbc_o ( dbc )) != 0) { 833 i( t == 0) 834 t = t_t ; 838 ( dbc = `TAILQ_FIRST (& dbp -> _queue )! NULL ) 839 i(( t_t = `__dbc_deroy ( dbc )) != 0) { 840 i( t == 0) 841 t = t_t ; 850 ( dbc = `TAILQ_FIRST (& dbp -> jo_queue )! NULL ) 851 i(( t_t = `__db_jo_o ( dbc )) != 0) { 852 i( t == 0) 853 t = t_t ; 866 i( sync && ! `LF_ISSET ( DB_NOSYNC ) && 867 ! `F_ISSET ( dbp , DB_AM_DISCARD | DB_AM_RECOVER ) && 868 ( t_t = `__memp_fsync ( dbp -> mpf )!0 && t == 0) 869 t = t_t ; 871 v_ݒed : 883 i(! u && `LOGGING_ON ( dbp -> v && dbp-> log_fame ! NULL ) { 889 `DB_ASSERT ( v , nv ! NULL ); 890 i( `F_ISSET ( dbp , DB_AM_RECOVER || `IS_REP_CLIENT ( v ) || 891 dbp -> timeamp ! nv -> p_timeamp ) { 892 i(( t_t = `__dbg_voke_id ( dbp , 893 0, DB_LOGFILEID_INVALID )=0 && t == 0) 894 t = t_t ; 895 i(( t_t = `__dbg_down ( dbp )!0 && t == 0) 896 t = t_t ; 898 i(( t_t = `__dbg_o_id ( dbp , 899 txn , DBREG_CLOSE )!0 &&x! NULL ) { 912 i(( t = 913 `__txn_oevt ( v , txn , dbp )) != 0) 914 ( `__v_nic ( v , t )); 915 i( deed_op ! NULL ) 916 * deed_op = 1; 917 ( t_t ); 935 i( dbp -> ved_ݒ_fhp ! NULL && 936 ( t_t = `__os_ohd ( v , dbp -> ved_ݒ_fhp )) != 0 && 937 t == 0) 938 t = t_t ; 951 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 952 i(! u && 953 ( dbp -> dblilks . tqe_xt ! NULL || 954 dbp -> dblilks . tqe_ev ! NULL )) { 955 `TAILQ_REMOVE (& v -> dbli , dbp , dblilks ); 956 dbp -> dblilks . tqe_xt = NULL ; 957 dbp -> dblilks . tqe_ev = NULL ; 961 i( dbp -> mpf ! NULL ) { 962 i(( t_t = `__memp_fo ( dbp -> mpf , 963 `F_ISSET ( dbp , DB_AM_DISCARD ? DB_MPOOL_DISCARD : 0)) != 0 && 964 t == 0) 965 t = t_t ; 966 dbp -> mpf = NULL ; 967 i( u && 968 ( t_t = `__memp_f ( v , & dbp -> mpf )) != 0 && 969 t == 0) 970 t = t_t ; 973 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 995 i(( t_t = `__bam_db_o ( dbp )!0 && t == 0) 996 t = t_t ; 997 i(( t_t = `__ham_db_o ( dbp )!0 && t == 0) 998 t = t_t ; 999 i(( t_t = `__qam_db_o ( dbp , dbp-> ags )!0 && t == 0) 1000 t = t_t ; 1009 i(! u && dbp -> lock ! NULL ) { 1011 i( txn = NULL ) 1012 txn = dbp -> cur_txn ; 1013 i( `IS_REAL_TXN ( txn )) 1014 `__txn_mlock ( v , 1015 txn , & dbp -> hd_lock , dbp-> lock ); 1018 eq . = DB_LOCK_PUT_ALL ; 1019 eq . obj = NULL ; 1020 i(( t_t = `__lock_vec ( v , 1021 dbp -> lock , 0, & eq , 1, NULL )!0 && t == 0) 1022 t = t_t ; 1024 i(( t_t = 1025 `__lock_id_ ( v , dbp -> lock )!0 && t == 0) 1026 t = t_t ; 1027 dbp -> lock = NULL ; 1028 `LOCK_INIT ( dbp -> hd_lock ); 1035 i( `LOCKING_ON ( v ) && 1036 `F_ISSET ( dbp , DB_AM_INMEM && !dbp-> erve_fid && 1037 *( u_t32_t *) dbp -> feid ! DB_LOCK_INVALIDID ) { 1038 i(( t_t = `__lock_glock ( v -> lk_hd , 1039 *( u_t32_t *) dbp -> feid , 0, & lock )) == 0) 1040 t_t = `__lock_id_ ( v , lock ); 1041 i( t == 0) 1042 t = t_t ; 1045 i( u ) { 1052 ve_ags = `F_ISSET ( dbp , DB_AM_INMEM | DB_AM_TXN ); 1058 i(( t = `__bam_db_ ( dbp )) != 0) 1059 ( t ); 1060 i(( t = `__ham_db_ ( dbp )) != 0) 1061 ( t ); 1062 i(( t = `__qam_db_ ( dbp )) != 0) 1063 ( t ); 1066 dbp -> ags = dbp-> ig_ags | ve_ags ; 1068 i( `FLD_ISSET ( ve_ags , DB_AM_INMEM )) { 1074 `memt ( dbp -> feid , 0, (dbp->fileid)); 1075 `MAKE_INMEM ( dbp ); 1077 ( t ); 1080 dbp -> ty = DB_UNKNOWN ; 1086 i(( t_t = `__mux_ ( v , & dbp -> mux )!0 && t == 0) 1087 t = t_t ; 1090 i( dbp -> ame ! NULL ) { 1091 `__os_ ( dbp -> v , dbp-> ame ); 1092 dbp -> ame = NULL ; 1094 i( dbp -> dme ! NULL ) { 1095 `__os_ ( dbp -> v , dbp-> dme ); 1096 dbp -> dme = NULL ; 1100 i( dbp -> my_rskey . da ! NULL ) 1101 `__os_ ( dbp -> v , dbp-> my_rskey . da ); 1102 i( dbp -> my_rkey . da ! NULL ) 1103 `__os_ ( dbp -> v , dbp-> my_rkey . da ); 1104 i( dbp -> my_rda . da ! NULL ) 1105 `__os_ ( dbp -> v , dbp-> my_rda . da ); 1108 `memt (& dbp -> my_rskey , 0, ( DBT )); 1109 `memt (& dbp -> my_rkey , 0, ( DBT )); 1110 `memt (& dbp -> my_rda , 0, ( DBT )); 1113 `memt ( dbp -> feid , 0, (dbp->fileid)); 1114 dbp -> adj_feid = 0; 1115 dbp -> ma_pgno = 0; 1116 dbp -> cur_lock = NULL ; 1117 dbp -> cur_txn = NULL ; 1118 dbp -> assoc_lock = NULL ; 1119 dbp -> _id = 0; 1120 dbp -> ݒ_ags = 0; 1129 i( txn ! NULL ) 1130 `LOCK_INIT ( dbp -> hd_lock ); 1133 dbp -> ags = dbp-> ig_ags ; 1135 ( t ); 1136 } } 1143 $__db_dissoc ( sdbp ) 1144 DB * sdbp ; 1146 DBC * dbc ; 1147 t , t_t ; 1149 t = 0; 1151 sdbp -> s_back = NULL ; 1152 sdbp -> s_imy = NULL ; 1153 sdbp -> g = sdbp-> ed_g ; 1154 sdbp -> o = sdbp-> ed_o ; 1160 i( sdbp -> s_ft != 1 || 1161 `TAILQ_FIRST (& sdbp -> aive_queue ! NULL || 1162 `TAILQ_FIRST (& sdbp -> jo_queue ! NULL ) { 1163 `__db_rx ( sdbp -> v , 1165 t = EINVAL ; 1167 sdbp -> s_ft = 0; 1169 ( dbc = `TAILQ_FIRST (& sdbp -> _queue )! NULL ) 1170 i(( t_t = `__dbc_deroy ( dbc )!0 && t == 0) 1171 t = t_t ; 1173 `F_CLR ( sdbp , DB_AM_SECONDARY ); 1174 ( t ); 1175 } } 1182 $__db_dissoc_feign ( sdbp ) 1183 DB * sdbp ; 1185 DB * fdbp ; 1186 DB_FOREIGN_INFO * f_fo , * tmp ; 1187 t ; 1189 i( sdbp -> s_feign = NULL ) 1191 i(( t = `__os_mloc ( sdbp -> v , ( DB_FOREIGN_INFO ), & tmp )) != 0) 1192 ( t ); 1194 fdbp = sdbp -> s_feign ; 1195 t = 0; 1196 f_fo = `LIST_FIRST (& fdbp -> f_ims ); 1197 f_fo ! NULL ) { 1198 tmp = `LIST_NEXT ( f_fo , f_lks ); 1199 i( f_fo -> dbp = sdbp ) { 1200 `LIST_REMOVE ( f_fo , f_lks ); 1201 `__os_ ( sdbp -> v , f_fo ); 1203 f_fo = tmp ; 1206 ( t ); 1207 } } 1216 $__db_log_ge ( dbp , txn , l , pgno , ge ) 1217 DB * dbp ; 1218 DB_TXN * txn ; 1219 DB_LSN * l ; 1220 db_pgno_t pgno ; 1221 PAGE * ge ; 1223 DBT ge_dbt ; 1224 DB_LSN w_l ; 1225 t ; 1227 i(! `LOGGING_ON ( dbp -> v || txn = NULL ) 1230 `memt (& ge_dbt , 0, (page_dbt)); 1231 ge_dbt . size = dbp -> pgsize ; 1232 ge_dbt . da = ge ; 1234 t = `__d_masub_log ( dbp , txn , & w_l , 0, pgno , & ge_dbt , l ); 1236 i( t == 0) 1237 ge -> l = w_l ; 1238 ( t ); 1239 } } 1248 #unde BACKUP_PREFIX 1249 #BACKUP_PREFIX "__db." ) 1251 #unde MAX_INT_TO_HEX 1252 #MAX_INT_TO_HEX 8 ) 1255 $__db_backup_me ( v , me , txn , backup ) 1256 ENV * v ; 1257 cڡ * me ; 1258 DB_TXN * txn ; 1259 ** backup ; 1261 u_t32_t id ; 1262 size_t n ; 1263 t ; 1264 * p , * ; 1266 * backup = NULL ; 1273 n = ` ( me + sn( BACKUP_PREFIX + 2 * MAX_INT_TO_HEX + 1; 1274 i(( t = `__os_mloc ( v , n , & )) != 0) 1275 ( t ); 1292 p = `__db_h ( me ); 1293 i( `IS_REAL_TXN ( txn )) { 1294 `__os_unique_id ( v , & id ); 1295 i( p = NULL ) 1296 `tf ( , n , "%s%x.%x", 1297 BACKUP_PREFIX , txn -> txnid , id ); 1299 `tf ( , n , "%.*s%x.%x", 1300 ()( p - me + 1,ame, txn -> txnid , id ); 1302 i( p = NULL ) 1303 `tf ( , n , "%s%s", BACKUP_PREFIX , me ); 1305 `tf ( , n , "%.*s%s%s", 1306 ()( p - me + 1,ame, BACKUP_PREFIX , + 1); 1309 * backup = ; 1311 } } 1313 #ifde CONFIG_TEST 1323 $__db_cy ( v , dbp , me ) 1324 ENV * v ; 1325 DB * dbp ; 1326 cڡ * me ; 1328 DB_MPOOL * dbmp ; 1329 DB_MPOOLFILE * mpf ; 1331 `DB_ASSERT ( v , dbp ! NULL || me != NULL); 1333 i( me = NULL ) { 1334 dbmp = v -> mp_hd ; 1335 mpf = dbp ->mpf; 1336 me = `R_ADDR ( dbmp -> gfo , mpf -> m -> th_off ); 1339 i( dbp ! NULL && dbp-> ty = DB_QUEUE ) 1340 ( `__qam_docy ( dbp , me )); 1342 ( `__db_docy ( v , me )); 1343 } } 1346 $__qam_docy ( dbp , me ) 1347 DB * dbp ; 1348 cڡ * me ; 1350 DB_THREAD_INFO * ; 1351 QUEUE_FILELIST * fi , * ; 1352 t ; 1353 buf [ DB_MAXPATHLEN ], * d ; 1355 fi = NULL ; 1356 i(( t = `__db_docy ( dbp -> v , me )) != 0) 1357 ( t ); 1360 `ENV_GET_THREAD_INFO ( dbp -> v , ); 1361 i( dbp -> mpf ! NULL && 1362 ( t = `__qam_g_fi ( dbp , , & fi )) != 0) 1363 de ; 1365 i( fi = NULL ) 1367 d = (( QUEUE *) dbp -> q_ )->dir; 1368 = fi ; fp-> mpf ! NULL ; fp++) { 1369 `tf ( buf , (buf), 1370 QUEUE_EXTENT , d , PATH_SEPARATOR [0], me , -> id ); 1371 i(( t = `__db_docy ( dbp -> v , buf )) != 0) 1372 ( t ); 1375 de : `__os_ ( dbp -> v , fi ); 1377 } } 1384 $__db_docy ( v , me ) 1385 ENV * v ; 1386 cڡ * me ; 1388 size_t n ; 1389 dt , i , t ; 1390 * cy , ** me , * p , * _me ; 1392 dt = 0; 1393 cy = NULL ; 1394 me = NULL ; 1397 i(( t = `__db_ame ( v , 1398 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 1399 ( t ); 1407 i( `__os_exis ( v , _me , NULL ) != 0) { 1408 `__os_ ( v , _me ); 1418 n = ` ( _me ) + (".afterop"); 1419 i(( t = `__os_mloc ( v , n , & cy )) != 0) 1420 r ; 1421 `tf ( cy , n , "%s.a", _me ); 1422 i(( t = `__db_makecy ( v , _me , cy )) != 0) 1423 r ; 1428 i(( p = `__db_h ( _me )! NULL ) 1429 * p = '\0'; 1430 i(( t = `__os_dli ( v , _me , 0, & me , & dt )) != 0) 1431 r ; 1439 i = 0; i < dt ; i++) { 1441 i( `cmp ( 1442 me [ i ], BACKUP_PREFIX , (BACKUP_PREFIX) - 1) != 0) 1444 p = me [ i ] + ( BACKUP_PREFIX ); 1445 p + `rn (p, "0123456789ABCDEFabcdef"); 1446 i(* p != '.') 1448 ++ p ; 1449 p + `rn (p, "0123456789ABCDEFabcdef"); 1450 i(* p != '\0') 1459 i( _me ! NULL ) { 1460 `__os_ ( v , _me ); 1461 _me = NULL ; 1463 i(( t = `__db_ame ( 1464 v , DB_APP_DATA , me [ i ], 0, NULL , & _me )) != 0) 1465 r ; 1466 i( cy ! NULL ) { 1467 `__os_ ( v , cy ); 1468 cy = NULL ; 1470 n = ` ( _me ) + (".afterop"); 1471 i(( t = `__os_mloc ( v , n , & cy )) != 0) 1472 r ; 1473 `tf ( cy , n , "%s.a", _me ); 1474 i(( t = `__db_makecy ( v , _me , cy )) != 0) 1475 r ; 1478 r : i( me ! NULL ) 1479 `__os_d ( v , me , dt ); 1480 i( cy ! NULL ) 1481 `__os_ ( v , cy ); 1482 i( _me ! NULL ) 1483 `__os_ ( v , _me ); 1484 ( t ); 1485 } } 1488 $__db_makecy ( v , c , de ) 1489 ENV * v ; 1490 cڡ * c , * de ; 1492 DB_FH * rfhp , * wfhp ; 1493 size_t rt , wt ; 1494 t ; 1495 * buf ; 1497 rfhp = wfhp = NULL ; 1499 i(( t = `__os_mloc ( v , 64 * 1024, & buf )) != 0) 1500 r ; 1502 i(( t = `__os_ݒ ( v , c , 0, 1503 DB_OSO_RDONLY , DB_MODE_600 , & rfhp )) != 0) 1504 r ; 1505 i(( t = `__os_ݒ ( v , de , 0, 1506 DB_OSO_CREATE | DB_OSO_TRUNC , DB_MODE_600 , & wfhp )) != 0) 1507 r ; 1510 i(( t = 1511 `__os_ad ( v , rfhp , buf , (buf), & rt )) != 0) 1512 r ; 1513 i( rt == 0) 1515 i(( t = 1516 `__os_wre ( v , wfhp , buf , (buf), & wt )) != 0) 1517 r ; 1521 r : `__db_r ( v , t , "__db_makecy: %-> %s", c , de ); 1524 i( buf ! NULL ) 1525 `__os_ ( v , buf ); 1526 i( rfhp ! NULL ) 1527 () `__os_ohd ( v , rfhp ); 1528 i( wfhp ! NULL ) 1529 () `__os_ohd ( v , wfhp ); 1530 ( t ); 1531 } } @../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 , ags , lock , db ) 35 DB * dbp ; 36 DB_THREAD_INFO * ; 37 DB_TXN * txn ; 38 DBTYPE dbty ; 39 db_pgno_t ro ; 40 ags ; 41 DB_LOCKER * lock ; 42 DBC ** db ; 44 DBC * dbc ; 45 DBC_INTERNAL * ; 46 ENV * v ; 47 db_thadid_t tid ; 48 lod , t ; 49 pid_t pid ; 51 v = dbp ->env; 52 lod = 0; 62 `MUTEX_LOCK ( v , dbp -> mux ); 64 #ide HAVE_NO_DB_REFCOUNT 74 i( txn ! NULL && 75 ! `LF_ISSET ( DBC_OPD | DBC_DUPLICATE && ! `F_ISSET ( dbp , DB_AM_RECOVER ) && 76 dbp -> log_fame ! NULL && ! `IS_REP_CLIENT ( v ) && 77 ( t = `__txn_cd_ame ( v , txn , dbp -> log_fame )) != 0) 78 ( t ); 81 `TAILQ_FOREACH ( dbc , & dbp -> _queue , lks ) 82 i( dbty = dbc ->dbtype) { 83 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 84 `F_CLR ( dbc , ~ DBC_OWN_LID ); 87 `MUTEX_UNLOCK ( v , dbp -> mux ); 89 i( dbc = NULL ) { 90 i(( t = `__os_oc ( v , 1, ( DBC ), & dbc )) != 0) 91 ( t ); 92 lod = 1; 93 dbc -> ags = 0; 95 dbc -> dbp = dbp; 96 dbc -> dbv = dbp ->dbenv; 97 dbc -> v = dbp ->env; 100 i( `LOCKING_ON ( v )) { 111 i(! `DB_IS_THREADED ( dbp )) { 112 i( v -> v_ef = NULL && ( t = 113 `__lock_id ( v , NULL , &v-> v_ef )) != 0) 114 r ; 115 dbc -> ef = v -> v_ef ; 117 i(( t = 118 `__lock_id ( v , NULL , & dbc -> ef )) != 0) 119 r ; 120 `F_SET ( dbc , DBC_OWN_LID ); 136 i( `CDB_LOCKING ( v ) && 137 `F_ISSET ( dbp , DB_AM_SECONDARY )) 138 `memy ( dbc -> lock . feid , 139 dbp -> s_imy -> feid , DB_FILE_ID_LEN ); 141 `memy ( dbc -> lock . feid , 142 dbp -> feid , DB_FILE_ID_LEN ); 144 i( `CDB_LOCKING ( v )) { 145 i( `F_ISSET ( v -> dbv , DB_ENV_CDB_ALLDB )) { 152 `DB_ASSERT ( v , ( db_pgno_t ) == 153 ( u_t32_t )); 154 dbc -> lock_dbt . size = ( u_t32_t ); 155 dbc -> lock_dbt . da = &dbc-> lock . pgno ; 156 dbc -> lock . pgno = 0; 158 dbc -> lock_dbt . size = DB_FILE_ID_LEN ; 159 dbc -> lock_dbt . da = dbc-> lock . feid ; 162 dbc -> lock . ty = DB_PAGE_LOCK ; 163 dbc -> lock_dbt . size = (dbc-> lock ); 164 dbc -> lock_dbt . da = &dbc-> lock ; 168 dbty ) { 169 DB_BTREE : 170 DB_RECNO : 171 i(( t = `__bamc_ ( dbc , dbty )) != 0) 172 r ; 174 DB_HASH : 175 i(( t = `__hamc_ ( dbc )) != 0) 176 r ; 178 DB_QUEUE : 179 i(( t = `__qamc_ ( dbc )) != 0) 180 r ; 182 DB_UNKNOWN : 184 t = `__db_unknown_ty ( v , "DB->curs", dbty ); 185 r ; 188 = dbc -> ; 192 dbc -> dbty = dbtype; 193 `RESET_RET_MEM ( dbc ); 194 dbc -> t_iܙy = __dbc_t_iܙy ; 195 dbc -> g_iܙy = __dbc_g_iܙy ; 196 dbc -> iܙy = dbp ->priority; 198 i(( dbc -> txn =xn! NULL ) 199 dbc -> lock = txn ->locker; 200 i( `LOCKING_ON ( v )) { 222 i( lock ! NULL ) 223 dbc -> lock =ocker; 229 i( `DB_IS_THREADED ( dbp )) { 230 v -> dbv -> `thad_id nv->dbv, & pid , & tid ); 231 `__lock_t_thad_id ( dbc -> ef , pid , tid ); 233 dbc -> lock = dbc-> ef ; 244 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) 245 dbc -> g = dbc-> c_g = __dbc_cdy_g_ ; 247 i( `LF_ISSET ( DBC_OPD )) 248 `F_SET ( dbc , DBC_OPD ); 249 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 250 `F_SET ( dbc , DBC_RECOVER ); 251 i( `F_ISSET ( dbp , DB_AM_COMPENSATE )) 252 `F_SET ( dbc , DBC_DONTLOCK ); 255 = dbc -> ; 256 -> d = NULL ; 258 -> dx = 0; 259 -> ge = NULL ; 260 -> pgno = PGNO_INVALID ; 261 -> ro =oot; 263 dbty ) { 264 DB_BTREE : 265 DB_RECNO : 266 i(( t = `__bamc_esh ( dbc )) != 0) 267 r ; 269 DB_HASH : 270 DB_QUEUE : 272 DB_UNKNOWN : 274 t = `__db_unknown_ty ( v , "DB->curs", dbp -> ty ); 275 r ; 283 i( txn ! NULL ) 284 ++ txn -> curss ; 285 i( ! NULL ) 286 dbc -> thad_fo = ; 287 i( txn ! NULL ) 288 dbc -> thad_fo = txn ->thread_info; 290 `ENV_GET_THREAD_INFO ( v , dbc -> thad_fo ); 292 `MUTEX_LOCK ( v , dbp -> mux ); 293 `TAILQ_INSERT_TAIL (& dbp -> aive_queue , dbc , lks ); 294 `F_SET ( dbc , DBC_ACTIVE ); 295 `MUTEX_UNLOCK ( v , dbp -> mux ); 297 * db = dbc ; 300 r : i( lod ) 301 `__os_ ( v , dbc ); 302 ( t ); 303 } } 313 $__db_put ( dbp , , txn , key , da , ags ) 314 DB * dbp ; 315 DB_THREAD_INFO * ; 316 DB_TXN * txn ; 317 DBT * key , * da ; 318 u_t32_t ags ; 320 DBC * dbc ; 321 DBT tda ; 322 ENV * v ; 323 t , t_t ; 325 v = dbp ->env; 327 i(( t = `__db_curs ( dbp , , txn , & dbc , DB_WRITELOCK )) != 0) 328 ( t ); 330 `DEBUG_LWRITE ( dbc , txn , "DB->put", key , da , ags ); 332 `SET_RET_MEM ( dbc , dbp ); 344 `F_SET ( dbc , DBC_TRANSIENT ); 346 ags ) { 347 DB_APPEND : 354 tda = * da ; 360 dbp -> ty ) { 361 DB_QUEUE : 362 i(( t = `__qam_nd ( dbc , key , & tda )) != 0) 363 r ; 365 DB_RECNO : 366 i(( t = `__m_nd ( dbc , key , & tda )) != 0) 367 r ; 369 DB_BTREE : 370 DB_HASH : 371 DB_UNKNOWN : 374 `DB_ASSERT ( v , 375 dbp -> ty = DB_QUEUE || dbp->ty = DB_RECNO ); 377 t = `__db_ ( v , "DB->put", 0); 378 r ; 391 `DB_ASSERT ( v , ! `F_ISSET ( dbp , DB_AM_SECONDARY )); 393 i( `LIST_FIRST (& dbp -> s_cds ! NULL && 394 ( t = `__dbt_urcy ( v , key )) == 0) 395 t = `__db_nd_imy ( dbc , key , & tda ); 401 `FREE_IF_NEEDED ( v , & tda ); 404 de ; 410 i( t == 0) 411 t = `__dbc_put ( dbc , 412 key , da , ags =0 ? DB_KEYLAST : flags); 414 r : 415 de : 416 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 417 t = t_t ; 419 ( t ); 420 } } 430 $__db_d ( dbp , , txn , key , ags ) 431 DB * dbp ; 432 DB_THREAD_INFO * ; 433 DB_TXN * txn ; 434 DBT * key ; 435 u_t32_t ags ; 437 DBC * dbc ; 438 DBT da ; 439 u_t32_t f_ , f_xt ; 440 t , t_t ; 443 i(( t = `__db_curs ( dbp , , txn , & dbc , DB_WRITELOCK )) != 0) 444 r ; 446 `DEBUG_LWRITE ( dbc , txn , "DB->d", key , NULL , ags ); 447 `COMPQUIET ( ags , 0); 456 `memt (& da , 0, (data)); 457 `F_SET (& da , DB_DBT_USERMEM | DB_DBT_ISSET ); 458 `F_SET ( key , DB_DBT_ISSET ); 464 f_ = DB_SET ; 465 f_xt = DB_NEXT_DUP ; 466 i( `STD_LOCKING ( dbc )) { 467 f_ | DB_RMW ; 468 f_xt | DB_RMW ; 496 i(! `F_ISSET ( dbp , DB_AM_SECONDARY ) && 497 `LIST_FIRST (& dbp -> s_cds = NULL && 498 `LIST_FIRST (& dbp -> f_ims = NULL ) { 499 #ifde HAVE_QUEUE 500 i( dbp -> ty = DB_QUEUE ) { 501 t = `__qam_de ( dbc , key ); 502 `F_CLR ( key , DB_DBT_ISSET ); 503 de ; 508 i(( t = `__dbc_g ( dbc , key , & da , f_ )) != 0) 509 r ; 511 #ifde HAVE_HASH 512 i( dbp -> ty = DB_HASH && dbc -> -> d = NULL ) { 513 t = `__ham_quick_de ( dbc ); 514 de ; 518 i(( dbp -> ty = DB_BTREE || dbp->ty = DB_RECNO ) && 519 ! `F_ISSET ( dbp , DB_AM_DUP )) { 520 t = dbc -> `am_d (dbc); 521 de ; 523 } i(( t = `__dbc_g ( dbc , key , & da , f_ )) != 0) 524 r ; 528 i(( t = `__dbc_d ( dbc , 0)) != 0) 530 `F_SET ( key , DB_DBT_ISSET ); 531 `F_SET (& da , DB_DBT_ISSET ); 532 i(( t = `__dbc_g ( dbc , key , & da , f_xt )) != 0) { 533 i( t = DB_NOTFOUND ) 534 t = 0; 539 de : 540 r : 541 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 542 t = t_t ; 544 ( t ); 545 } } 554 $__db_sync ( dbp ) 555 DB * dbp ; 557 t , t_t ; 559 t = 0; 562 i( `F_ISSET ( dbp , DB_AM_RDONLY )) 566 i( dbp -> ty = DB_RECNO ) 567 t = `__m_wreback ( dbp ); 570 i( `F_ISSET ( dbp , DB_AM_INMEM )) 571 ( t ); 573 i( dbp -> ty = DB_QUEUE ) 574 t = `__qam_sync ( dbp ); 577 i(( t_t = `__memp_fsync ( dbp -> mpf )!0 && t == 0) 578 t = t_t ; 580 ( t ); 581 } } 591 $__db_assoc ( dbp , , txn , sdbp , back , ags ) 592 DB * dbp , * sdbp ; 593 DB_THREAD_INFO * ; 594 DB_TXN * txn ; 595 (* back `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 596 u_t32_t ags ; 598 DBC * pdbc , * sdbc ; 599 DBT key , da , skey , * tskeyp ; 600 ENV * v ; 601 bud , t , t_t ; 602 u_t32_t nskey ; 604 v = dbp ->env; 605 pdbc = sdbc = NULL ; 606 t = 0; 608 `memt (& skey , 0, ( DBT )); 609 nskey = 0; 610 tskeyp = NULL ; 618 bud = 0; 619 i( `LF_ISSET ( DB_CREATE )) { 620 i(( t = `__db_curs ( sdbp , , txn , & sdbc , 0)) != 0) 621 r ; 627 `memt (& key , 0, ( DBT )); 628 `memt (& da , 0, ( DBT )); 629 `F_SET (& key , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 630 `F_SET (& da , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 631 i(( t = `__dbc_g ( sdbc , & key , & da , 632 ( `STD_LOCKING ( sdbc ? DB_RMW : 0) | 633 DB_FIRST )= DB_NOTFOUND ) { 634 bud = 1; 635 t = 0; 638 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 639 t = t_t ; 642 sdbc = NULL ; 644 i( t != 0) 645 r ; 651 sdbp -> s_back = back ; 652 sdbp -> s_imy = dbp ; 654 sdbp -> ed_g = sdbp-> g ; 655 sdbp -> g = __db_cdy_g ; 657 sdbp -> ed_o = sdbp-> o ; 658 sdbp -> o = __db_cdy_o_ ; 660 `F_SET ( sdbp , DB_AM_SECONDARY ); 662 i( `LF_ISSET ( DB_IMMUTABLE_KEY )) 663 `FLD_SET ( sdbp -> s_assoc_ags , DB_ASSOC_IMMUTABLE_KEY ); 670 `MUTEX_LOCK ( v , dbp -> mux ); 673 `DB_ASSERT ( v , sdbp -> s_ft == 0); 674 sdbp -> s_ft = 1; 675 `LIST_INSERT_HEAD (& dbp -> s_cds , sdbp , s_lks ); 676 `MUTEX_UNLOCK ( v , dbp -> mux ); 678 i( bud ) { 692 i(( t = `__db_curs ( sdbp , , txn , & sdbc , 693 `CDB_LOCKING ( sdbp -> v ? DB_WRITECURSOR : 0)) != 0) 694 r ; 695 i(( t = `__db_curs_t ( dbp , , 696 txn , dbp -> ty , PGNO_INVALID , 0, sdbc -> lock , & pdbc )) != 0) 697 r ; 700 dbp -> assoc_lock = sdbc -> lock ; 702 `memt (& key , 0, ( DBT )); 703 `memt (& da , 0, ( DBT )); 704 ( t = `__dbc_g ( pdbc , & key , & da , DB_NEXT )) == 0) { 705 i(( t = `back ( sdbp , & key , & da , & skey )) != 0) { 706 i( t = DB_DONOTINDEX ) 708 r ; 710 i( `F_ISSET (& skey , DB_DBT_MULTIPLE )) { 711 #ifde DIAGNOSTIC 712 `__db_check_skeyt ( sdbp , & skey ); 714 nskey = skey . size ; 715 tskeyp = ( DBT *) skey . da ; 717 nskey = 1; 718 tskeyp = & skey ; 720 `SWAP_IF_NEEDED ( sdbp , & key ); 721 ; nskey > 0;skey--, tskeyp ++) { 722 i(( t = `__dbc_put ( sdbc , 723 tskeyp , & key , DB_UPDATE_SECONDARY )) != 0) 724 r ; 725 `FREE_IF_NEEDED ( v , tskeyp ); 727 `SWAP_IF_NEEDED ( sdbp , & key ); 728 `FREE_IF_NEEDED ( v , & skey ); 730 i( t = DB_NOTFOUND ) 731 t = 0; 734 r : i( sdbc ! NULL && ( t_t = `__dbc_o (sdbc)!0 && t == 0) 735 t = t_t ; 737 i( pdbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 738 t = t_t ; 740 dbp -> assoc_lock = NULL ; 742 ; nskey > 0;skey--, tskeyp ++) 743 `FREE_IF_NEEDED ( v , tskeyp ); 744 `FREE_IF_NEEDED ( v , & skey ); 746 ( t ); 747 } } 755 $__db_cdy_g ( sdbp , txn , skey , da , ags ) 756 DB * sdbp ; 757 DB_TXN * txn ; 758 DBT * skey , * da ; 759 u_t32_t ags ; 761 `DB_ASSERT ( sdbp -> v , `F_ISSET (sdbp, DB_AM_SECONDARY )); 762 ( `__db_pg_ ( sdbp , txn , skey , NULL , da , ags )); 763 } } 774 $__db_cdy_o ( sdbp , ags ) 775 DB * sdbp ; 776 u_t32_t ags ; 778 DB * imy ; 779 ENV * v ; 780 doo ; 782 doo = 0; 783 imy = sdbp -> s_imy ; 784 v = imy ->env; 786 `MUTEX_LOCK ( v , imy -> mux ); 796 `DB_ASSERT ( v , sdbp -> s_ft != 0); 797 i(-- sdbp -> s_ft == 0) { 798 `LIST_REMOVE ( sdbp , s_lks ); 800 doo = 1; 802 `MUTEX_UNLOCK ( v , imy -> mux ); 808 ( doo ? `__db_o ( sdbp , NULL , ags ) : 0); 809 } } 817 $__db_nd_imy ( dbc , key , da ) 818 DBC * dbc ; 819 DBT * key , * da ; 821 DB * dbp , * sdbp ; 822 DBC * fdbc , * sdbc , * pdbc ; 823 DBT fda , dpkey , pkey , pda , skey ; 824 ENV * v ; 825 cmp , t , t_t ; 827 dbp = dbc ->dbp; 828 v = dbp ->env; 829 sdbp = NULL ; 830 t = 0; 837 pdbc = NULL ; 838 i( `F_ISSET ( da , DB_DBT_PARTIAL || F_ISSET( key , DB_DBT_PARTIAL)) { 851 i(( t = `__dbc_idup ( dbc , & pdbc , DB_POSITION )) != 0) 852 ( t ); 853 `memt (& pkey , 0, ( DBT )); 854 `memt (& pda , 0, ( DBT )); 856 i(( t = `__dbc_g ( pdbc , & pkey , & pda , DB_CURRENT )) != 0) 857 r ; 859 key = & pkey ; 860 da = & pda ; 872 i(( t = `__db_s_f ( dbp , & sdbp )) != 0) 873 r ; 874 ; sdbp ! NULL && t =0; = `__db_s_xt (&sdbp, dbc -> txn )) { 875 `memt (& skey , 0, ( DBT )); 876 i(( t = sdbp -> `s_back (sdbp, key , da , & skey )) != 0) { 877 i( t = DB_DONOTINDEX ) 879 r ; 888 `memt (& fda , 0, ( DBT )); 889 `F_SET (& fda , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 890 i( sdbp -> s_feign ! NULL ) { 891 i(( t = `__db_curs_t ( sdbp -> s_feign , 892 dbc -> thad_fo , dbc-> txn , sdbp -> s_feign -> ty , 893 PGNO_INVALID , 0, dbc -> lock , & fdbc )) != 0) 894 r ; 895 i(( t = `__dbc_g ( fdbc , & skey , & fda , 896 DB_SET | ( `STD_LOCKING ( dbc ? DB_RMW : 0))) != 0) { 897 i( t = DB_NOTFOUND || = DB_KEYEMPTY ) 898 t = DB_FOREIGN_CONFLICT ; 899 r ; 901 i(( t = `__dbc_o ( fdbc )) != 0) 902 r ; 905 i(( t = `__db_curs_t ( sdbp , dbc -> thad_fo , dbc-> txn , 906 sdbp -> ty , PGNO_INVALID , 0, dbc -> lock , & sdbc )) != 0) { 907 `FREE_IF_NEEDED ( v , & skey ); 908 r ; 910 i( `CDB_LOCKING ( v )) { 911 `DB_ASSERT ( v , sdbc -> mylock . off = LOCK_INVALID ); 912 `F_SET ( sdbc , DBC_WRITER ); 922 i(! `F_ISSET ( sdbp , DB_AM_DUP )) { 923 `memt (& dpkey , 0, ( DBT )); 924 `F_SET (& dpkey , DB_DBT_MALLOC ); 925 t = `__dbc_g ( sdbc , & skey , & dpkey , 926 DB_SET | ( `STD_LOCKING ( dbc ? DB_RMW : 0)); 927 i( t == 0) { 928 cmp = `__bam_defcmp ( sdbp , & dpkey , key ); 934 `__os_u ( v , dpkey . da ); 935 i( cmp != 0) { 936 `__db_rx ( v , "%s%s", 939 t = EINVAL ; 940 r1 ; 942 } i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 943 r1 ; 946 t = `__dbc_put ( sdbc , & skey , key , DB_UPDATE_SECONDARY ); 948 r1 : `FREE_IF_NEEDED ( v , & skey ); 950 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 951 t = t_t ; 952 i( t != 0) 953 r ; 956 r : i( pdbc ! NULL && ( t_t = `__dbc_o dbc)!0 && t == 0) 957 t = t_t ; 958 i( sdbp ! NULL && 959 ( t_t = `__db_s_de ( sdbp , dbc -> txn )!0 && t == 0) 960 t = t_t ; 961 ( t ); 962 } } 975 $__db_assoc_feign ( fdbp , pdbp , back , ags ) 976 DB * fdbp , * pdbp ; 977 (* back )( DB *, cڡ DBT *, DBT *, const DBT *, *); 978 u_t32_t ags ; 980 DB_FOREIGN_INFO * f_fo ; 981 ENV * v ; 982 t ; 984 v = fdbp ->env; 985 t = 0; 987 i(( t = `__os_mloc ( v , ( DB_FOREIGN_INFO ), & f_fo )) != 0) { 988 t ; 990 `memt ( f_fo , 0, ( DB_FOREIGN_INFO )); 992 f_fo -> dbp = pdbp ; 993 f_fo -> back = callback; 999 `FLD_SET ( f_fo -> ags , flags); 1006 `MUTEX_LOCK ( v , fdbp -> mux ); 1007 `LIST_INSERT_HEAD (& fdbp -> f_ims , f_fo , f_lks ); 1008 `MUTEX_UNLOCK ( v , fdbp -> mux ); 1016 i( pdbp -> s_feign ! NULL ) 1017 ( EINVAL ); 1018 pdbp -> s_feign = fdbp ; 1020 ( t ); 1021 } } 1024 $__dbc_t_iܙy ( dbc , iܙy ) 1025 DBC * dbc ; 1026 DB_CACHE_PRIORITY iܙy ; 1028 dbc -> iܙy =riority; 1030 } } 1033 $__dbc_g_iܙy ( dbc , iܙy ) 1034 DBC * dbc ; 1035 DB_CACHE_PRIORITY * iܙy ; 1037 * iܙy = dbc ->priority; 1039 } } @../db/db_auto.c 3 ~"db_cfig.h " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_dich.h " 8 ~"dbc/db_am.h " 9 ~"dbc/log.h " 10 ~"dbc/txn.h " 17 $__db_addm_ad ( v , db , td , cbuf , g ) 18 ENV * v ; 19 DB ** db ; 20 * td ; 21 * cbuf ; 22 __db_addm_gs ** g ; 24 __db_addm_gs * gp ; 25 u_t32_t ump ; 26 u_t8_t * bp ; 27 t ; 29 i(( t = `__os_mloc ( v , 30 ( __db_addm_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 gp -> tx -> td =d; 37 `LOGCOPY_32 ( v , & gp -> ty , bp ); 38 bp +( gp -> ty ); 40 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 41 bp +( gp -> tx -> txnid ); 43 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 44 bp +( DB_LSN ); 46 `LOGCOPY_32 ( v , & gp -> code , bp ); 47 bp +( gp -> code ); 49 `LOGCOPY_32 ( v , & ump , bp ); 50 gp -> feid = ( t32_t ) ump ; 51 bp +( ump ); 52 i( db ! NULL ) { 53 * db = NULL ; 54 t = `__dbg_id_to_db ( 55 v , gp -> tx , db ,rgp-> feid , 1); 58 `LOGCOPY_32 ( v , & ump , bp ); 59 gp -> pgno = ( db_pgno_t ) ump ; 60 bp +( ump ); 62 `LOGCOPY_32 ( v , & gp -> dx , bp ); 63 bp +( gp -> dx ); 65 `LOGCOPY_32 ( v , & gp -> nbys , bp ); 66 bp +( gp -> nbys ); 68 `memt (& gp -> hdr , 0, (argp->hdr)); 69 `LOGCOPY_32 ( v ,& gp -> hdr . size , bp ); 70 bp +( u_t32_t ); 71 gp -> hdr . da = bp ; 72 bp + gp -> hdr . size ; 74 `memt (& gp -> dbt , 0, (argp->dbt)); 75 `LOGCOPY_32 ( v ,& gp -> dbt . size , bp ); 76 bp +( u_t32_t ); 77 gp -> dbt . da = bp ; 78 bp + gp -> dbt . size ; 80 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 81 bp +( DB_LSN ); 83 * g = gp ; 84 ( t ); 85 } } 93 $__db_addm_log ( dbp , tx , t_lp , ags , 94 code , pgno , dx , nbys , hdr , 95 dbt , g ) 96 DB * dbp ; 97 DB_TXN * tx ; 98 DB_LSN * t_lp ; 99 u_t32_t ags ; 100 u_t32_t code ; 101 db_pgno_t pgno ; 102 u_t32_t dx ; 103 u_t32_t nbys ; 104 cڡ DBT * hdr ; 105 cڡ DBT * dbt ; 106 DB_LSN * g ; 108 DBT logc ; 109 DB_LSN * lp , nu_l , * p ; 110 DB_TXNLOGREC * ; 111 ENV * v ; 112 u_t32_t zo , ump , y , txn_num ; 113 u_t ad ; 114 u_t8_t * bp ; 115 is_dub , t ; 117 `COMPQUIET ( , NULL ); 119 v = dbp ->env; 120 p = t_lp ; 121 y = DB___db_addm ; 122 ad = 0; 123 t = 0; 125 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 126 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 127 i( tx = NULL ) 129 is_dub = 0; 131 is_dub = 1; 133 i( tx = NULL ) { 134 txn_num = 0; 135 lp = & nu_l ; 136 nu_l . fe =u_l. offt = 0; 138 i( `TAILQ_FIRST (& tx -> kids ! NULL && 139 ( t = `__txn_aivekids ( v , y , tx )) != 0) 140 ( t ); 147 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 148 txn_num = tx -> txnid ; 151 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 152 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 153 ( t = `__dbg_zy_id ( dbp )) != 0) 154 ( t ); 156 logc . size = ( y + ( txn_num + ( DB_LSN ) 157 + ( u_t32_t ) 158 + ( u_t32_t ) 159 + ( u_t32_t ) 160 + ( u_t32_t ) 161 + ( u_t32_t ) 162 + ( u_t32_t + ( hdr = NULL ? 0 : hdr-> size ) 163 + ( u_t32_t + ( dbt = NULL ? 0 : dbt-> size ) 164 + (* g ); 165 i( `CRYPTO_ON ( v )) { 166 ad = v -> yo_hd -> `adj_size ( logc . size ); 167 logc . size + ad ; 170 i( is_dub || tx = NULL ) { 171 i(( t = 172 `__os_mloc ( v , logc . size , &logc. da )) != 0) 173 ( t ); 175 i(( t = `__os_mloc ( v , 176 logc . size + ( DB_TXNLOGREC ), & )) != 0) 177 ( t ); 178 #ifde DIAGNOSTIC 179 i(( t = 180 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 181 `__os_ ( v , ); 182 ( t ); 185 logc . da = ->data; 188 i( ad > 0) 189 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 191 bp = logc . da ; 193 `LOGCOPY_32 ( v , bp , & y ); 194 bp +( y ); 196 `LOGCOPY_32 ( v , bp , & txn_num ); 197 bp +( txn_num ); 199 `LOGCOPY_FROMLSN ( v , bp , lp ); 200 bp +( DB_LSN ); 202 `LOGCOPY_32 ( v , bp , & code ); 203 bp +( code ); 205 ump = ( u_t32_t ) dbp -> log_fame -> id ; 206 `LOGCOPY_32 ( v , bp , & ump ); 207 bp +( ump ); 209 ump = ( u_t32_t ) pgno ; 210 `LOGCOPY_32 ( v , bp , & ump ); 211 bp +( ump ); 213 `LOGCOPY_32 ( v , bp , & dx ); 214 bp +( dx ); 216 `LOGCOPY_32 ( v , bp , & nbys ); 217 bp +( nbys ); 219 i( hdr = NULL ) { 220 zo = 0; 221 `LOGCOPY_32 ( v , bp , & zo ); 222 bp +( u_t32_t ); 224 `LOGCOPY_32 ( v , bp , & hdr -> size ); 225 bp +( hdr -> size ); 226 `memy ( bp , hdr -> da , hdr-> size ); 227 bp + hdr -> size ; 230 i( dbt = NULL ) { 231 zo = 0; 232 `LOGCOPY_32 ( v , bp , & zo ); 233 bp +( u_t32_t ); 235 `LOGCOPY_32 ( v , bp , & dbt -> size ); 236 bp +( dbt -> size ); 237 `memy ( bp , dbt -> da , dbt-> size ); 238 bp + dbt -> size ; 241 i( g ! NULL ) { 242 i( tx ! NULL ) { 243 LOG * = v -> lg_hd -> gfo . imy ; 244 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 245 `__log_check_ge_l ( v , dbp , g ) != 0)) 246 ( t ); 248 `LOGCOPY_FROMLSN ( v , bp , g ); 250 `memt ( bp , 0, (* g )); 251 bp +(* g ); 253 `DB_ASSERT ( v , 254 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 256 i( is_dub || tx = NULL ) { 257 i(( t = `__log_put ( v , p ,( DBT *)& logc , 258 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 259 * lp = * p ; 260 i( p ! t_lp ) 261 * t_lp = * p ; 264 t = 0; 265 #ifde DIAGNOSTIC 270 `memy ( -> da , logc .da,ogc. size ); 271 y | DB_debug_FLAG ; 272 `LOGCOPY_32 ( v , logc . da , & y ); 274 i(! `IS_REP_CLIENT ( v )) 275 t = `__log_put ( v , 276 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 278 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 279 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 280 `LSN_NOT_LOGGED (* t_lp ); 283 #ifde LOG_DIAGNOSTIC 284 i( t != 0) 285 () `__db_addm_t ( v , 286 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 289 #ifde DIAGNOSTIC 290 `__os_ ( v , logc . da ); 292 i( is_dub || tx = NULL ) 293 `__os_ ( v , logc . da ); 295 ( t ); 296 } } 303 $__db_big_ad ( v , db , td , cbuf , g ) 304 ENV * v ; 305 DB ** db ; 306 * td ; 307 * cbuf ; 308 __db_big_gs ** g ; 310 __db_big_gs * gp ; 311 u_t32_t ump ; 312 u_t8_t * bp ; 313 t ; 315 i(( t = `__os_mloc ( v , 316 ( __db_big_gs + ( DB_TXN ), & gp )) != 0) 317 ( t ); 318 bp = cbuf ; 319 gp -> tx = ( DB_TXN *)&argp[1]; 320 `memt ( gp -> tx , 0, ( DB_TXN )); 322 gp -> tx -> td =d; 323 `LOGCOPY_32 ( v , & gp -> ty , bp ); 324 bp +( gp -> ty ); 326 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 327 bp +( gp -> tx -> txnid ); 329 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 330 bp +( DB_LSN ); 332 `LOGCOPY_32 ( v , & gp -> code , bp ); 333 bp +( gp -> code ); 335 `LOGCOPY_32 ( v , & ump , bp ); 336 gp -> feid = ( t32_t ) ump ; 337 bp +( ump ); 338 i( db ! NULL ) { 339 * db = NULL ; 340 t = `__dbg_id_to_db ( 341 v , gp -> tx , db ,rgp-> feid , 1); 344 `LOGCOPY_32 ( v , & ump , bp ); 345 gp -> pgno = ( db_pgno_t ) ump ; 346 bp +( ump ); 348 `LOGCOPY_32 ( v , & ump , bp ); 349 gp -> ev_pgno = ( db_pgno_t ) ump ; 350 bp +( ump ); 352 `LOGCOPY_32 ( v , & ump , bp ); 353 gp -> xt_pgno = ( db_pgno_t ) ump ; 354 bp +( ump ); 356 `memt (& gp -> dbt , 0, (argp->dbt)); 357 `LOGCOPY_32 ( v ,& gp -> dbt . size , bp ); 358 bp +( u_t32_t ); 359 gp -> dbt . da = bp ; 360 bp + gp -> dbt . size ; 362 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 363 bp +( DB_LSN ); 365 `LOGCOPY_TOLSN ( v , & gp -> evl , bp ); 366 bp +( DB_LSN ); 368 `LOGCOPY_TOLSN ( v , & gp -> x , bp ); 369 bp +( DB_LSN ); 371 * g = gp ; 372 ( t ); 373 } } 381 $__db_big_log ( dbp , tx , t_lp , ags , 382 code , pgno , ev_pgno , xt_pgno , dbt , 383 g , evl , x ) 384 DB * dbp ; 385 DB_TXN * tx ; 386 DB_LSN * t_lp ; 387 u_t32_t ags ; 388 u_t32_t code ; 389 db_pgno_t pgno ; 390 db_pgno_t ev_pgno ; 391 db_pgno_t xt_pgno ; 392 cڡ DBT * dbt ; 393 DB_LSN * g ; 394 DB_LSN * evl ; 395 DB_LSN * x ; 397 DBT logc ; 398 DB_LSN * lp , nu_l , * p ; 399 DB_TXNLOGREC * ; 400 ENV * v ; 401 u_t32_t zo , ump , y , txn_num ; 402 u_t ad ; 403 u_t8_t * bp ; 404 is_dub , t ; 406 `COMPQUIET ( , NULL ); 408 v = dbp ->env; 409 p = t_lp ; 410 y = DB___db_big ; 411 ad = 0; 412 t = 0; 414 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 415 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 416 i( tx = NULL ) 418 is_dub = 0; 420 is_dub = 1; 422 i( tx = NULL ) { 423 txn_num = 0; 424 lp = & nu_l ; 425 nu_l . fe =u_l. offt = 0; 427 i( `TAILQ_FIRST (& tx -> kids ! NULL && 428 ( t = `__txn_aivekids ( v , y , tx )) != 0) 429 ( t ); 436 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 437 txn_num = tx -> txnid ; 440 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 441 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 442 ( t = `__dbg_zy_id ( dbp )) != 0) 443 ( t ); 445 logc . size = ( y + ( txn_num + ( DB_LSN ) 446 + ( u_t32_t ) 447 + ( u_t32_t ) 448 + ( u_t32_t ) 449 + ( u_t32_t ) 450 + ( u_t32_t ) 451 + ( u_t32_t + ( dbt = NULL ? 0 : dbt-> size ) 452 + (* g ) 453 + (* evl ) 454 + (* x ); 455 i( `CRYPTO_ON ( v )) { 456 ad = v -> yo_hd -> `adj_size ( logc . size ); 457 logc . size + ad ; 460 i( is_dub || tx = NULL ) { 461 i(( t = 462 `__os_mloc ( v , logc . size , &logc. da )) != 0) 463 ( t ); 465 i(( t = `__os_mloc ( v , 466 logc . size + ( DB_TXNLOGREC ), & )) != 0) 467 ( t ); 468 #ifde DIAGNOSTIC 469 i(( t = 470 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 471 `__os_ ( v , ); 472 ( t ); 475 logc . da = ->data; 478 i( ad > 0) 479 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 481 bp = logc . da ; 483 `LOGCOPY_32 ( v , bp , & y ); 484 bp +( y ); 486 `LOGCOPY_32 ( v , bp , & txn_num ); 487 bp +( txn_num ); 489 `LOGCOPY_FROMLSN ( v , bp , lp ); 490 bp +( DB_LSN ); 492 `LOGCOPY_32 ( v , bp , & code ); 493 bp +( code ); 495 ump = ( u_t32_t ) dbp -> log_fame -> id ; 496 `LOGCOPY_32 ( v , bp , & ump ); 497 bp +( ump ); 499 ump = ( u_t32_t ) pgno ; 500 `LOGCOPY_32 ( v , bp , & ump ); 501 bp +( ump ); 503 ump = ( u_t32_t ) ev_pgno ; 504 `LOGCOPY_32 ( v , bp , & ump ); 505 bp +( ump ); 507 ump = ( u_t32_t ) xt_pgno ; 508 `LOGCOPY_32 ( v , bp , & ump ); 509 bp +( ump ); 511 i( dbt = NULL ) { 512 zo = 0; 513 `LOGCOPY_32 ( v , bp , & zo ); 514 bp +( u_t32_t ); 516 `LOGCOPY_32 ( v , bp , & dbt -> size ); 517 bp +( dbt -> size ); 518 `memy ( bp , dbt -> da , dbt-> size ); 519 bp + dbt -> size ; 522 i( g ! NULL ) { 523 i( tx ! NULL ) { 524 LOG * = v -> lg_hd -> gfo . imy ; 525 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 526 `__log_check_ge_l ( v , dbp , g ) != 0)) 527 ( t ); 529 `LOGCOPY_FROMLSN ( v , bp , g ); 531 `memt ( bp , 0, (* g )); 532 bp +(* g ); 534 i( evl ! NULL ) { 535 i( tx ! NULL ) { 536 LOG * = v -> lg_hd -> gfo . imy ; 537 i( `LOG_COMPARE ( evl , & -> l >0 && ( t = 538 `__log_check_ge_l ( v , dbp , evl ) != 0)) 539 ( t ); 541 `LOGCOPY_FROMLSN ( v , bp , evl ); 543 `memt ( bp , 0, (* evl )); 544 bp +(* evl ); 546 i( x ! NULL ) { 547 i( tx ! NULL ) { 548 LOG * = v -> lg_hd -> gfo . imy ; 549 i( `LOG_COMPARE ( x , & -> l >0 && ( t = 550 `__log_check_ge_l ( v , dbp , x ) != 0)) 551 ( t ); 553 `LOGCOPY_FROMLSN ( v , bp , x ); 555 `memt ( bp , 0, (* x )); 556 bp +(* x ); 558 `DB_ASSERT ( v , 559 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 561 i( is_dub || tx = NULL ) { 562 i(( t = `__log_put ( v , p ,( DBT *)& logc , 563 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 564 * lp = * p ; 565 i( p ! t_lp ) 566 * t_lp = * p ; 569 t = 0; 570 #ifde DIAGNOSTIC 575 `memy ( -> da , logc .da,ogc. size ); 576 y | DB_debug_FLAG ; 577 `LOGCOPY_32 ( v , logc . da , & y ); 579 i(! `IS_REP_CLIENT ( v )) 580 t = `__log_put ( v , 581 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 583 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 584 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 585 `LSN_NOT_LOGGED (* t_lp ); 588 #ifde LOG_DIAGNOSTIC 589 i( t != 0) 590 () `__db_big_t ( v , 591 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 594 #ifde DIAGNOSTIC 595 `__os_ ( v , logc . da ); 597 i( is_dub || tx = NULL ) 598 `__os_ ( v , logc . da ); 600 ( t ); 601 } } 608 $__db_ovf_ad ( v , db , td , cbuf , g ) 609 ENV * v ; 610 DB ** db ; 611 * td ; 612 * cbuf ; 613 __db_ovf_gs ** g ; 615 __db_ovf_gs * gp ; 616 u_t32_t ump ; 617 u_t8_t * bp ; 618 t ; 620 i(( t = `__os_mloc ( v , 621 ( __db_ovf_gs + ( DB_TXN ), & gp )) != 0) 622 ( t ); 623 bp = cbuf ; 624 gp -> tx = ( DB_TXN *)&argp[1]; 625 `memt ( gp -> tx , 0, ( DB_TXN )); 627 gp -> tx -> td =d; 628 `LOGCOPY_32 ( v , & gp -> ty , bp ); 629 bp +( gp -> ty ); 631 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 632 bp +( gp -> tx -> txnid ); 634 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 635 bp +( DB_LSN ); 637 `LOGCOPY_32 ( v , & ump , bp ); 638 gp -> feid = ( t32_t ) ump ; 639 bp +( ump ); 640 i( db ! NULL ) { 641 * db = NULL ; 642 t = `__dbg_id_to_db ( 643 v , gp -> tx , db ,rgp-> feid , 1); 646 `LOGCOPY_32 ( v , & ump , bp ); 647 gp -> pgno = ( db_pgno_t ) ump ; 648 bp +( ump ); 650 `LOGCOPY_32 ( v , & ump , bp ); 651 gp -> adju = ( t32_t ) ump ; 652 bp +( ump ); 654 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 655 bp +( DB_LSN ); 657 * g = gp ; 658 ( t ); 659 } } 666 $__db_ovf_log ( dbp , tx , t_lp , ags , pgno , adju , l ) 667 DB * dbp ; 668 DB_TXN * tx ; 669 DB_LSN * t_lp ; 670 u_t32_t ags ; 671 db_pgno_t pgno ; 672 t32_t adju ; 673 DB_LSN * l ; 675 DBT logc ; 676 DB_LSN * lp , nu_l , * p ; 677 DB_TXNLOGREC * ; 678 ENV * v ; 679 u_t32_t ump , y , txn_num ; 680 u_t ad ; 681 u_t8_t * bp ; 682 is_dub , t ; 684 `COMPQUIET ( , NULL ); 686 v = dbp ->env; 687 p = t_lp ; 688 y = DB___db_ovf ; 689 ad = 0; 690 t = 0; 692 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 693 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 694 i( tx = NULL ) 696 is_dub = 0; 698 is_dub = 1; 700 i( tx = NULL ) { 701 txn_num = 0; 702 lp = & nu_l ; 703 nu_l . fe =u_l. offt = 0; 705 i( `TAILQ_FIRST (& tx -> kids ! NULL && 706 ( t = `__txn_aivekids ( v , y , tx )) != 0) 707 ( t ); 714 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 715 txn_num = tx -> txnid ; 718 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 719 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 720 ( t = `__dbg_zy_id ( dbp )) != 0) 721 ( t ); 723 logc . size = ( y + ( txn_num + ( DB_LSN ) 724 + ( u_t32_t ) 725 + ( u_t32_t ) 726 + ( u_t32_t ) 727 + (* l ); 728 i( `CRYPTO_ON ( v )) { 729 ad = v -> yo_hd -> `adj_size ( logc . size ); 730 logc . size + ad ; 733 i( is_dub || tx = NULL ) { 734 i(( t = 735 `__os_mloc ( v , logc . size , &logc. da )) != 0) 736 ( t ); 738 i(( t = `__os_mloc ( v , 739 logc . size + ( DB_TXNLOGREC ), & )) != 0) 740 ( t ); 741 #ifde DIAGNOSTIC 742 i(( t = 743 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 744 `__os_ ( v , ); 745 ( t ); 748 logc . da = ->data; 751 i( ad > 0) 752 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 754 bp = logc . da ; 756 `LOGCOPY_32 ( v , bp , & y ); 757 bp +( y ); 759 `LOGCOPY_32 ( v , bp , & txn_num ); 760 bp +( txn_num ); 762 `LOGCOPY_FROMLSN ( v , bp , lp ); 763 bp +( DB_LSN ); 765 ump = ( u_t32_t ) dbp -> log_fame -> id ; 766 `LOGCOPY_32 ( v , bp , & ump ); 767 bp +( ump ); 769 ump = ( u_t32_t ) pgno ; 770 `LOGCOPY_32 ( v , bp , & ump ); 771 bp +( ump ); 773 ump = ( u_t32_t ) adju ; 774 `LOGCOPY_32 ( v , bp , & ump ); 775 bp +( ump ); 777 i( l ! NULL ) { 778 i( tx ! NULL ) { 779 LOG * = v -> lg_hd -> gfo . imy ; 780 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 781 `__log_check_ge_l ( v , dbp , l ) != 0)) 782 ( t ); 784 `LOGCOPY_FROMLSN ( v , bp , l ); 786 `memt ( bp , 0, (* l )); 787 bp +(* l ); 789 `DB_ASSERT ( v , 790 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 792 i( is_dub || tx = NULL ) { 793 i(( t = `__log_put ( v , p ,( DBT *)& logc , 794 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 795 * lp = * p ; 796 i( p ! t_lp ) 797 * t_lp = * p ; 800 t = 0; 801 #ifde DIAGNOSTIC 806 `memy ( -> da , logc .da,ogc. size ); 807 y | DB_debug_FLAG ; 808 `LOGCOPY_32 ( v , logc . da , & y ); 810 i(! `IS_REP_CLIENT ( v )) 811 t = `__log_put ( v , 812 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 814 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 815 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 816 `LSN_NOT_LOGGED (* t_lp ); 819 #ifde LOG_DIAGNOSTIC 820 i( t != 0) 821 () `__db_ovf_t ( v , 822 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 825 #ifde DIAGNOSTIC 826 `__os_ ( v , logc . da ); 828 i( is_dub || tx = NULL ) 829 `__os_ ( v , logc . da ); 831 ( t ); 832 } } 839 $__db_lk_42_ad ( v , db , td , cbuf , g ) 840 ENV * v ; 841 DB ** db ; 842 * td ; 843 * cbuf ; 844 __db_lk_42_gs ** g ; 846 __db_lk_42_gs * gp ; 847 u_t32_t ump ; 848 u_t8_t * bp ; 849 t ; 851 i(( t = `__os_mloc ( v , 852 ( __db_lk_42_gs + ( DB_TXN ), & gp )) != 0) 853 ( t ); 854 bp = cbuf ; 855 gp -> tx = ( DB_TXN *)&argp[1]; 856 `memt ( gp -> tx , 0, ( DB_TXN )); 858 gp -> tx -> td =d; 859 `LOGCOPY_32 ( v , & gp -> ty , bp ); 860 bp +( gp -> ty ); 862 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 863 bp +( gp -> tx -> txnid ); 865 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 866 bp +( DB_LSN ); 868 `LOGCOPY_32 ( v , & gp -> code , bp ); 869 bp +( gp -> code ); 871 `LOGCOPY_32 ( v , & ump , bp ); 872 gp -> feid = ( t32_t ) ump ; 873 bp +( ump ); 874 i( db ! NULL ) { 875 * db = NULL ; 876 t = `__dbg_id_to_db ( 877 v , gp -> tx , db ,rgp-> feid , 1); 880 `LOGCOPY_32 ( v , & ump , bp ); 881 gp -> pgno = ( db_pgno_t ) ump ; 882 bp +( ump ); 884 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 885 bp +( DB_LSN ); 887 `LOGCOPY_32 ( v , & ump , bp ); 888 gp -> ev = ( db_pgno_t ) ump ; 889 bp +( ump ); 891 `LOGCOPY_TOLSN ( v , & gp -> l_ev , bp ); 892 bp +( DB_LSN ); 894 `LOGCOPY_32 ( v , & ump , bp ); 895 gp -> xt = ( db_pgno_t ) ump ; 896 bp +( ump ); 898 `LOGCOPY_TOLSN ( v , & gp -> l_xt , bp ); 899 bp +( DB_LSN ); 901 * g = gp ; 902 ( t ); 903 } } 909 $__db_debug_ad ( v , cbuf , g ) 910 ENV * v ; 911 * cbuf ; 912 __db_debug_gs ** g ; 914 __db_debug_gs * gp ; 915 u_t32_t ump ; 916 u_t8_t * bp ; 917 t ; 919 i(( t = `__os_mloc ( v , 920 ( __db_debug_gs + ( DB_TXN ), & gp )) != 0) 921 ( t ); 922 bp = cbuf ; 923 gp -> tx = ( DB_TXN *)&argp[1]; 924 `memt ( gp -> tx , 0, ( DB_TXN )); 926 `LOGCOPY_32 ( v , & gp -> ty , bp ); 927 bp +( gp -> ty ); 929 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 930 bp +( gp -> tx -> txnid ); 932 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 933 bp +( DB_LSN ); 935 `memt (& gp -> , 0, (argp->op)); 936 `LOGCOPY_32 ( v ,& gp -> . size , bp ); 937 bp +( u_t32_t ); 938 gp -> . da = bp ; 939 bp + gp -> . size ; 941 `LOGCOPY_32 ( v , & ump , bp ); 942 gp -> feid = ( t32_t ) ump ; 943 bp +( ump ); 945 `memt (& gp -> key , 0, (argp->key)); 946 `LOGCOPY_32 ( v ,& gp -> key . size , bp ); 947 bp +( u_t32_t ); 948 gp -> key . da = bp ; 949 bp + gp -> key . size ; 951 `memt (& gp -> da , 0, (argp->data)); 952 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 953 bp +( u_t32_t ); 954 gp -> da .d bp ; 955 bp + gp -> da . size ; 957 `LOGCOPY_32 ( v , & gp -> g_ags , bp ); 958 bp +( gp -> g_ags ); 960 * g = gp ; 961 ( t ); 962 } } 970 $__db_debug_log ( v , tx , t_lp , ags , 971 , feid , key , da , g_ags ) 972 ENV * v ; 973 DB_TXN * tx ; 974 DB_LSN * t_lp ; 975 u_t32_t ags ; 976 cڡ DBT * ; 977 t32_t feid ; 978 cڡ DBT * key ; 979 cڡ DBT * da ; 980 u_t32_t g_ags ; 982 DBT logc ; 983 DB_LSN * lp , nu_l , * p ; 984 DB_TXNLOGREC * ; 985 u_t32_t zo , ump , y , txn_num ; 986 u_t ad ; 987 u_t8_t * bp ; 988 is_dub , t ; 990 `COMPQUIET ( , NULL ); 992 p = t_lp ; 993 y = DB___db_debug ; 994 ad = 0; 995 t = 0; 997 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 998 i( tx = NULL ) 1000 i( tx = NULL ) 1002 is_dub = 0; 1004 is_dub = 1; 1006 i( tx = NULL ) { 1007 txn_num = 0; 1008 lp = & nu_l ; 1009 nu_l . fe =u_l. offt = 0; 1017 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1018 txn_num = tx -> txnid ; 1021 logc . size = ( y + ( txn_num + ( DB_LSN ) 1022 + ( u_t32_t + ( = NULL ? 0 : op-> size ) 1023 + ( u_t32_t ) 1024 + ( u_t32_t + ( key = NULL ? 0 : key-> size ) 1025 + ( u_t32_t + ( da = NULL ? 0 : da-> size ) 1026 + ( u_t32_t ); 1027 i( `CRYPTO_ON ( v )) { 1028 ad = v -> yo_hd -> `adj_size ( logc . size ); 1029 logc . size + ad ; 1032 i( is_dub || tx = NULL ) { 1033 i(( t = 1034 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1035 ( t ); 1037 i(( t = `__os_mloc ( v , 1038 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1039 ( t ); 1040 #ifde DIAGNOSTIC 1041 i(( t = 1042 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1043 `__os_ ( v , ); 1044 ( t ); 1047 logc . da = ->data; 1050 i( ad > 0) 1051 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1053 bp = logc . da ; 1055 `LOGCOPY_32 ( v , bp , & y ); 1056 bp +( y ); 1058 `LOGCOPY_32 ( v , bp , & txn_num ); 1059 bp +( txn_num ); 1061 `LOGCOPY_FROMLSN ( v , bp , lp ); 1062 bp +( DB_LSN ); 1064 i( = NULL ) { 1065 zo = 0; 1066 `LOGCOPY_32 ( v , bp , & zo ); 1067 bp +( u_t32_t ); 1069 `LOGCOPY_32 ( v , bp , & -> size ); 1070 bp +( -> size ); 1071 `memy ( bp , -> da , op-> size ); 1072 bp + -> size ; 1075 ump = ( u_t32_t ) feid ; 1076 `LOGCOPY_32 ( v , bp , & ump ); 1077 bp +( ump ); 1079 i( key = NULL ) { 1080 zo = 0; 1081 `LOGCOPY_32 ( v , bp , & zo ); 1082 bp +( u_t32_t ); 1084 `LOGCOPY_32 ( v , bp , & key -> size ); 1085 bp +( key -> size ); 1086 `memy ( bp , key -> da , key-> size ); 1087 bp + key -> size ; 1090 i( da = NULL ) { 1091 zo = 0; 1092 `LOGCOPY_32 ( v , bp , & zo ); 1093 bp +( u_t32_t ); 1095 `LOGCOPY_32 ( v , bp , & da -> size ); 1096 bp +( da -> size ); 1097 `memy ( bp , da ->da, da-> size ); 1098 bp + da -> size ; 1101 `LOGCOPY_32 ( v , bp , & g_ags ); 1102 bp +( g_ags ); 1104 `DB_ASSERT ( v , 1105 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1107 i( is_dub || tx = NULL ) { 1108 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1109 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1110 * lp = * p ; 1111 i( p ! t_lp ) 1112 * t_lp = * p ; 1115 t = 0; 1116 #ifde DIAGNOSTIC 1121 `memy ( -> da , logc .da,ogc. size ); 1122 y | DB_debug_FLAG ; 1123 `LOGCOPY_32 ( v , logc . da , & y ); 1125 i(! `IS_REP_CLIENT ( v )) 1126 t = `__log_put ( v , 1127 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1129 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1130 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1131 `LSN_NOT_LOGGED (* t_lp ); 1134 #ifde LOG_DIAGNOSTIC 1135 i( t != 0) 1136 () `__db_debug_t ( v , 1137 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1140 #ifde DIAGNOSTIC 1141 `__os_ ( v , logc . da ); 1143 i( is_dub || tx = NULL ) 1144 `__os_ ( v , logc . da ); 1146 ( t ); 1147 } } 1154 $__db_no_ad ( v , db , td , cbuf , g ) 1155 ENV * v ; 1156 DB ** db ; 1157 * td ; 1158 * cbuf ; 1159 __db_no_gs ** g ; 1161 __db_no_gs * gp ; 1162 u_t32_t ump ; 1163 u_t8_t * bp ; 1164 t ; 1166 i(( t = `__os_mloc ( v , 1167 ( __db_no_gs + ( DB_TXN ), & gp )) != 0) 1168 ( t ); 1169 bp = cbuf ; 1170 gp -> tx = ( DB_TXN *)&argp[1]; 1171 `memt ( gp -> tx , 0, ( DB_TXN )); 1173 gp -> tx -> td =d; 1174 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1175 bp +( gp -> ty ); 1177 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1178 bp +( gp -> tx -> txnid ); 1180 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1181 bp +( DB_LSN ); 1183 `LOGCOPY_32 ( v , & ump , bp ); 1184 gp -> feid = ( t32_t ) ump ; 1185 bp +( ump ); 1186 i( db ! NULL ) { 1187 * db = NULL ; 1188 t = `__dbg_id_to_db ( 1189 v , gp -> tx , db ,rgp-> feid , 1); 1192 `LOGCOPY_32 ( v , & ump , bp ); 1193 gp -> pgno = ( db_pgno_t ) ump ; 1194 bp +( ump ); 1196 `LOGCOPY_TOLSN ( v , & gp -> evl , bp ); 1197 bp +( DB_LSN ); 1199 * g = gp ; 1200 ( t ); 1201 } } 1208 $__db_no_log ( dbp , tx , t_lp , ags , pgno , evl ) 1209 DB * dbp ; 1210 DB_TXN * tx ; 1211 DB_LSN * t_lp ; 1212 u_t32_t ags ; 1213 db_pgno_t pgno ; 1214 DB_LSN * evl ; 1216 DBT logc ; 1217 DB_LSN * lp , nu_l , * p ; 1218 DB_TXNLOGREC * ; 1219 ENV * v ; 1220 u_t32_t ump , y , txn_num ; 1221 u_t ad ; 1222 u_t8_t * bp ; 1223 is_dub , t ; 1225 `COMPQUIET ( , NULL ); 1227 v = dbp ->env; 1228 p = t_lp ; 1229 y = DB___db_no ; 1230 ad = 0; 1231 t = 0; 1233 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1234 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1235 i( tx = NULL ) 1237 is_dub = 0; 1239 is_dub = 1; 1241 i( tx = NULL ) { 1242 txn_num = 0; 1243 lp = & nu_l ; 1244 nu_l . fe =u_l. offt = 0; 1246 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1247 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1248 ( t ); 1255 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1256 txn_num = tx -> txnid ; 1259 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1260 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1261 ( t = `__dbg_zy_id ( dbp )) != 0) 1262 ( t ); 1264 logc . size = ( y + ( txn_num + ( DB_LSN ) 1265 + ( u_t32_t ) 1266 + ( u_t32_t ) 1267 + (* evl ); 1268 i( `CRYPTO_ON ( v )) { 1269 ad = v -> yo_hd -> `adj_size ( logc . size ); 1270 logc . size + ad ; 1273 i( is_dub || tx = NULL ) { 1274 i(( t = 1275 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1276 ( t ); 1278 i(( t = `__os_mloc ( v , 1279 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1280 ( t ); 1281 #ifde DIAGNOSTIC 1282 i(( t = 1283 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1284 `__os_ ( v , ); 1285 ( t ); 1288 logc . da = ->data; 1291 i( ad > 0) 1292 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1294 bp = logc . da ; 1296 `LOGCOPY_32 ( v , bp , & y ); 1297 bp +( y ); 1299 `LOGCOPY_32 ( v , bp , & txn_num ); 1300 bp +( txn_num ); 1302 `LOGCOPY_FROMLSN ( v , bp , lp ); 1303 bp +( DB_LSN ); 1305 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1306 `LOGCOPY_32 ( v , bp , & ump ); 1307 bp +( ump ); 1309 ump = ( u_t32_t ) pgno ; 1310 `LOGCOPY_32 ( v , bp , & ump ); 1311 bp +( ump ); 1313 i( evl ! NULL ) { 1314 i( tx ! NULL ) { 1315 LOG * = v -> lg_hd -> gfo . imy ; 1316 i( `LOG_COMPARE ( evl , & -> l >0 && ( t = 1317 `__log_check_ge_l ( v , dbp , evl ) != 0)) 1318 ( t ); 1320 `LOGCOPY_FROMLSN ( v , bp , evl ); 1322 `memt ( bp , 0, (* evl )); 1323 bp +(* evl ); 1325 `DB_ASSERT ( v , 1326 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1328 i( is_dub || tx = NULL ) { 1329 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1330 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1331 * lp = * p ; 1332 i( p ! t_lp ) 1333 * t_lp = * p ; 1336 t = 0; 1337 #ifde DIAGNOSTIC 1342 `memy ( -> da , logc .da,ogc. size ); 1343 y | DB_debug_FLAG ; 1344 `LOGCOPY_32 ( v , logc . da , & y ); 1346 i(! `IS_REP_CLIENT ( v )) 1347 t = `__log_put ( v , 1348 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1350 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1351 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1352 `LSN_NOT_LOGGED (* t_lp ); 1355 #ifde LOG_DIAGNOSTIC 1356 i( t != 0) 1357 () `__db_no_t ( v , 1358 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1361 #ifde DIAGNOSTIC 1362 `__os_ ( v , logc . da ); 1364 i( is_dub || tx = NULL ) 1365 `__os_ ( v , logc . da ); 1367 ( t ); 1368 } } 1375 $__db_pg_loc_42_ad ( v , db , td , cbuf , g ) 1376 ENV * v ; 1377 DB ** db ; 1378 * td ; 1379 * cbuf ; 1380 __db_pg_loc_42_gs ** g ; 1382 __db_pg_loc_42_gs * gp ; 1383 u_t32_t ump ; 1384 u_t8_t * bp ; 1385 t ; 1387 i(( t = `__os_mloc ( v , 1388 ( __db_pg_loc_42_gs + ( DB_TXN ), & gp )) != 0) 1389 ( t ); 1390 bp = cbuf ; 1391 gp -> tx = ( DB_TXN *)&argp[1]; 1392 `memt ( gp -> tx , 0, ( DB_TXN )); 1394 gp -> tx -> td =d; 1395 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1396 bp +( gp -> ty ); 1398 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1399 bp +( gp -> tx -> txnid ); 1401 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1402 bp +( DB_LSN ); 1404 `LOGCOPY_32 ( v , & ump , bp ); 1405 gp -> feid = ( t32_t ) ump ; 1406 bp +( ump ); 1407 i( db ! NULL ) { 1408 * db = NULL ; 1409 t = `__dbg_id_to_db ( 1410 v , gp -> tx , db ,rgp-> feid , 1); 1413 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1414 bp +( DB_LSN ); 1416 `LOGCOPY_32 ( v , & ump , bp ); 1417 gp -> ma_pgno = ( db_pgno_t ) ump ; 1418 bp +( ump ); 1420 `LOGCOPY_TOLSN ( v , & gp -> ge_l , bp ); 1421 bp +( DB_LSN ); 1423 `LOGCOPY_32 ( v , & ump , bp ); 1424 gp -> pgno = ( db_pgno_t ) ump ; 1425 bp +( ump ); 1427 `LOGCOPY_32 ( v , & gp -> y , bp ); 1428 bp +( gp -> y ); 1430 `LOGCOPY_32 ( v , & ump , bp ); 1431 gp -> xt = ( db_pgno_t ) ump ; 1432 bp +( ump ); 1434 * g = gp ; 1435 ( t ); 1436 } } 1443 $__db_pg_loc_ad ( v , db , td , cbuf , g ) 1444 ENV * v ; 1445 DB ** db ; 1446 * td ; 1447 * cbuf ; 1448 __db_pg_loc_gs ** g ; 1450 __db_pg_loc_gs * gp ; 1451 u_t32_t ump ; 1452 u_t8_t * bp ; 1453 t ; 1455 i(( t = `__os_mloc ( v , 1456 ( __db_pg_loc_gs + ( DB_TXN ), & gp )) != 0) 1457 ( t ); 1458 bp = cbuf ; 1459 gp -> tx = ( DB_TXN *)&argp[1]; 1460 `memt ( gp -> tx , 0, ( DB_TXN )); 1462 gp -> tx -> td =d; 1463 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1464 bp +( gp -> ty ); 1466 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1467 bp +( gp -> tx -> txnid ); 1469 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1470 bp +( DB_LSN ); 1472 `LOGCOPY_32 ( v , & ump , bp ); 1473 gp -> feid = ( t32_t ) ump ; 1474 bp +( ump ); 1475 i( db ! NULL ) { 1476 * db = NULL ; 1477 t = `__dbg_id_to_db ( 1478 v , gp -> tx , db ,rgp-> feid , 1); 1481 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1482 bp +( DB_LSN ); 1484 `LOGCOPY_32 ( v , & ump , bp ); 1485 gp -> ma_pgno = ( db_pgno_t ) ump ; 1486 bp +( ump ); 1488 `LOGCOPY_TOLSN ( v , & gp -> ge_l , bp ); 1489 bp +( DB_LSN ); 1491 `LOGCOPY_32 ( v , & ump , bp ); 1492 gp -> pgno = ( db_pgno_t ) ump ; 1493 bp +( ump ); 1495 `LOGCOPY_32 ( v , & gp -> y , bp ); 1496 bp +( gp -> y ); 1498 `LOGCOPY_32 ( v , & ump , bp ); 1499 gp -> xt = ( db_pgno_t ) ump ; 1500 bp +( ump ); 1502 `LOGCOPY_32 ( v , & ump , bp ); 1503 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 1504 bp +( ump ); 1506 * g = gp ; 1507 ( t ); 1508 } } 1516 $__db_pg_loc_log ( dbp , tx , t_lp , ags , ma_l , ma_pgno , ge_l , pgno , y , 1517 xt , ϡ_pgno ) 1518 DB * dbp ; 1519 DB_TXN * tx ; 1520 DB_LSN * t_lp ; 1521 u_t32_t ags ; 1522 DB_LSN * ma_l ; 1523 db_pgno_t ma_pgno ; 1524 DB_LSN * ge_l ; 1525 db_pgno_t pgno ; 1526 u_t32_t y ; 1527 db_pgno_t xt ; 1528 db_pgno_t ϡ_pgno ; 1530 DBT logc ; 1531 DB_LSN * lp , nu_l , * p ; 1532 DB_TXNLOGREC * ; 1533 ENV * v ; 1534 u_t32_t ump , y , txn_num ; 1535 u_t ad ; 1536 u_t8_t * bp ; 1537 is_dub , t ; 1539 `COMPQUIET ( , NULL ); 1541 v = dbp ->env; 1542 p = t_lp ; 1543 y = DB___db_pg_loc ; 1544 ad = 0; 1545 t = 0; 1547 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1548 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1549 i( tx = NULL ) 1551 is_dub = 0; 1553 is_dub = 1; 1555 i( tx = NULL ) { 1556 txn_num = 0; 1557 lp = & nu_l ; 1558 nu_l . fe =u_l. offt = 0; 1560 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1561 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1562 ( t ); 1569 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1570 txn_num = tx -> txnid ; 1573 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1574 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1575 ( t = `__dbg_zy_id ( dbp )) != 0) 1576 ( t ); 1578 logc . size = ( y + ( txn_num + ( DB_LSN ) 1579 + ( u_t32_t ) 1580 + (* ma_l ) 1581 + ( u_t32_t ) 1582 + (* ge_l ) 1583 + ( u_t32_t ) 1584 + ( u_t32_t ) 1585 + ( u_t32_t ) 1586 + ( u_t32_t ); 1587 i( `CRYPTO_ON ( v )) { 1588 ad = v -> yo_hd -> `adj_size ( logc . size ); 1589 logc . size + ad ; 1592 i( is_dub || tx = NULL ) { 1593 i(( t = 1594 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1595 ( t ); 1597 i(( t = `__os_mloc ( v , 1598 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1599 ( t ); 1600 #ifde DIAGNOSTIC 1601 i(( t = 1602 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1603 `__os_ ( v , ); 1604 ( t ); 1607 logc . da = ->data; 1610 i( ad > 0) 1611 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1613 bp = logc . da ; 1615 `LOGCOPY_32 ( v , bp , & y ); 1616 bp +( y ); 1618 `LOGCOPY_32 ( v , bp , & txn_num ); 1619 bp +( txn_num ); 1621 `LOGCOPY_FROMLSN ( v , bp , lp ); 1622 bp +( DB_LSN ); 1624 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1625 `LOGCOPY_32 ( v , bp , & ump ); 1626 bp +( ump ); 1628 i( ma_l ! NULL ) { 1629 i( tx ! NULL ) { 1630 LOG * = v -> lg_hd -> gfo . imy ; 1631 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1632 `__log_check_ge_l ( v , dbp , ma_l ) != 0)) 1633 ( t ); 1635 `LOGCOPY_FROMLSN ( v , bp , ma_l ); 1637 `memt ( bp , 0, (* ma_l )); 1638 bp +(* ma_l ); 1640 ump = ( u_t32_t ) ma_pgno ; 1641 `LOGCOPY_32 ( v , bp , & ump ); 1642 bp +( ump ); 1644 i( ge_l ! NULL ) { 1645 i( tx ! NULL ) { 1646 LOG * = v -> lg_hd -> gfo . imy ; 1647 i( `LOG_COMPARE ( ge_l , & -> l >0 && ( t = 1648 `__log_check_ge_l ( v , dbp , ge_l ) != 0)) 1649 ( t ); 1651 `LOGCOPY_FROMLSN ( v , bp , ge_l ); 1653 `memt ( bp , 0, (* ge_l )); 1654 bp +(* ge_l ); 1656 ump = ( u_t32_t ) pgno ; 1657 `LOGCOPY_32 ( v , bp , & ump ); 1658 bp +( ump ); 1660 `LOGCOPY_32 ( v , bp , & y ); 1661 bp +( y ); 1663 ump = ( u_t32_t ) xt ; 1664 `LOGCOPY_32 ( v , bp , & ump ); 1665 bp +( ump ); 1667 ump = ( u_t32_t ) ϡ_pgno ; 1668 `LOGCOPY_32 ( v , bp , & ump ); 1669 bp +( ump ); 1671 `DB_ASSERT ( v , 1672 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1674 i( is_dub || tx = NULL ) { 1675 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1676 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1677 * lp = * p ; 1678 i( p ! t_lp ) 1679 * t_lp = * p ; 1682 t = 0; 1683 #ifde DIAGNOSTIC 1688 `memy ( -> da , logc .da,ogc. size ); 1689 y | DB_debug_FLAG ; 1690 `LOGCOPY_32 ( v , logc . da , & y ); 1692 i(! `IS_REP_CLIENT ( v )) 1693 t = `__log_put ( v , 1694 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1696 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1697 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1698 `LSN_NOT_LOGGED (* t_lp ); 1701 #ifde LOG_DIAGNOSTIC 1702 i( t != 0) 1703 () `__db_pg_loc_t ( v , 1704 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1707 #ifde DIAGNOSTIC 1708 `__os_ ( v , logc . da ); 1710 i( is_dub || tx = NULL ) 1711 `__os_ ( v , logc . da ); 1713 ( t ); 1714 } } 1721 $__db_pg__42_ad ( v , db , td , cbuf , g ) 1722 ENV * v ; 1723 DB ** db ; 1724 * td ; 1725 * cbuf ; 1726 __db_pg__42_gs ** g ; 1728 __db_pg__42_gs * gp ; 1729 u_t32_t ump ; 1730 u_t8_t * bp ; 1731 t ; 1733 i(( t = `__os_mloc ( v , 1734 ( __db_pg__42_gs + ( DB_TXN ), & gp )) != 0) 1735 ( t ); 1736 bp = cbuf ; 1737 gp -> tx = ( DB_TXN *)&argp[1]; 1738 `memt ( gp -> tx , 0, ( DB_TXN )); 1740 gp -> tx -> td =d; 1741 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1742 bp +( gp -> ty ); 1744 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1745 bp +( gp -> tx -> txnid ); 1747 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1748 bp +( DB_LSN ); 1750 `LOGCOPY_32 ( v , & ump , bp ); 1751 gp -> feid = ( t32_t ) ump ; 1752 bp +( ump ); 1753 i( db ! NULL ) { 1754 * db = NULL ; 1755 t = `__dbg_id_to_db ( 1756 v , gp -> tx , db ,rgp-> feid , 1); 1759 `LOGCOPY_32 ( v , & ump , bp ); 1760 gp -> pgno = ( db_pgno_t ) ump ; 1761 bp +( ump ); 1763 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1764 bp +( DB_LSN ); 1766 `LOGCOPY_32 ( v , & ump , bp ); 1767 gp -> ma_pgno = ( db_pgno_t ) ump ; 1768 bp +( ump ); 1770 `memt (& gp -> hd , 0, (argp->header)); 1771 `LOGCOPY_32 ( v ,& gp -> hd . size , bp ); 1772 bp +( u_t32_t ); 1773 gp -> hd . da = bp ; 1774 bp + gp -> hd . size ; 1776 `LOGCOPY_32 ( v , & ump , bp ); 1777 gp -> xt = ( db_pgno_t ) ump ; 1778 bp +( ump ); 1780 * g = gp ; 1781 ( t ); 1782 } } 1789 $__db_pg__ad ( v , db , td , cbuf , g ) 1790 ENV * v ; 1791 DB ** db ; 1792 * td ; 1793 * cbuf ; 1794 __db_pg__gs ** g ; 1796 __db_pg__gs * gp ; 1797 u_t32_t ump ; 1798 u_t8_t * bp ; 1799 t ; 1801 i(( t = `__os_mloc ( v , 1802 ( __db_pg__gs + ( DB_TXN ), & gp )) != 0) 1803 ( t ); 1804 bp = cbuf ; 1805 gp -> tx = ( DB_TXN *)&argp[1]; 1806 `memt ( gp -> tx , 0, ( DB_TXN )); 1808 gp -> tx -> td =d; 1809 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1810 bp +( gp -> ty ); 1812 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1813 bp +( gp -> tx -> txnid ); 1815 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1816 bp +( DB_LSN ); 1818 `LOGCOPY_32 ( v , & ump , bp ); 1819 gp -> feid = ( t32_t ) ump ; 1820 bp +( ump ); 1821 i( db ! NULL ) { 1822 * db = NULL ; 1823 t = `__dbg_id_to_db ( 1824 v , gp -> tx , db ,rgp-> feid , 1); 1827 `LOGCOPY_32 ( v , & ump , bp ); 1828 gp -> pgno = ( db_pgno_t ) ump ; 1829 bp +( ump ); 1831 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1832 bp +( DB_LSN ); 1834 `LOGCOPY_32 ( v , & ump , bp ); 1835 gp -> ma_pgno = ( db_pgno_t ) ump ; 1836 bp +( ump ); 1838 `memt (& gp -> hd , 0, (argp->header)); 1839 `LOGCOPY_32 ( v ,& gp -> hd . size , bp ); 1840 bp +( u_t32_t ); 1841 gp -> hd . da = bp ; 1842 bp + gp -> hd . size ; 1843 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 1844 t_t ; 1845 i(( t_t = `__db_gesw (* db , ( PAGE *) gp -> hd . da , 1846 ( size_t ) gp -> hd . size , NULL , 1)) != 0) 1847 ( t_t ); 1850 `LOGCOPY_32 ( v , & ump , bp ); 1851 gp -> xt = ( db_pgno_t ) ump ; 1852 bp +( ump ); 1854 `LOGCOPY_32 ( v , & ump , bp ); 1855 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 1856 bp +( ump ); 1858 * g = gp ; 1859 ( t ); 1860 } } 1868 $__db_pg__log ( dbp , tx , t_lp , ags , pgno , ma_l , ma_pgno , hd , xt , 1869 ϡ_pgno ) 1870 DB * dbp ; 1871 DB_TXN * tx ; 1872 DB_LSN * t_lp ; 1873 u_t32_t ags ; 1874 db_pgno_t pgno ; 1875 DB_LSN * ma_l ; 1876 db_pgno_t ma_pgno ; 1877 cڡ DBT * hd ; 1878 db_pgno_t xt ; 1879 db_pgno_t ϡ_pgno ; 1881 DBT logc ; 1882 DB_LSN * lp , nu_l , * p ; 1883 DB_TXNLOGREC * ; 1884 ENV * v ; 1885 u_t32_t zo , ump , y , txn_num ; 1886 u_t ad ; 1887 u_t8_t * bp ; 1888 is_dub , t ; 1890 `COMPQUIET ( , NULL ); 1892 v = dbp ->env; 1893 p = t_lp ; 1894 y = DB___db_pg_ ; 1895 ad = 0; 1896 t = 0; 1898 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1899 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1900 i( tx = NULL ) 1902 is_dub = 0; 1904 is_dub = 1; 1906 i( tx = NULL ) { 1907 txn_num = 0; 1908 lp = & nu_l ; 1909 nu_l . fe =u_l. offt = 0; 1911 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1912 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1913 ( t ); 1920 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1921 txn_num = tx -> txnid ; 1924 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1925 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1926 ( t = `__dbg_zy_id ( dbp )) != 0) 1927 ( t ); 1929 logc . size = ( y + ( txn_num + ( DB_LSN ) 1930 + ( u_t32_t ) 1931 + ( u_t32_t ) 1932 + (* ma_l ) 1933 + ( u_t32_t ) 1934 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 1935 + ( u_t32_t ) 1936 + ( u_t32_t ); 1937 i( `CRYPTO_ON ( v )) { 1938 ad = v -> yo_hd -> `adj_size ( logc . size ); 1939 logc . size + ad ; 1942 i( is_dub || tx = NULL ) { 1943 i(( t = 1944 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1945 ( t ); 1947 i(( t = `__os_mloc ( v , 1948 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1949 ( t ); 1950 #ifde DIAGNOSTIC 1951 i(( t = 1952 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1953 `__os_ ( v , ); 1954 ( t ); 1957 logc . da = ->data; 1960 i( ad > 0) 1961 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1963 bp = logc . da ; 1965 `LOGCOPY_32 ( v , bp , & y ); 1966 bp +( y ); 1968 `LOGCOPY_32 ( v , bp , & txn_num ); 1969 bp +( txn_num ); 1971 `LOGCOPY_FROMLSN ( v , bp , lp ); 1972 bp +( DB_LSN ); 1974 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1975 `LOGCOPY_32 ( v , bp , & ump ); 1976 bp +( ump ); 1978 ump = ( u_t32_t ) pgno ; 1979 `LOGCOPY_32 ( v , bp , & ump ); 1980 bp +( ump ); 1982 i( ma_l ! NULL ) { 1983 i( tx ! NULL ) { 1984 LOG * = v -> lg_hd -> gfo . imy ; 1985 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 1986 `__log_check_ge_l ( v , dbp , ma_l ) != 0)) 1987 ( t ); 1989 `LOGCOPY_FROMLSN ( v , bp , ma_l ); 1991 `memt ( bp , 0, (* ma_l )); 1992 bp +(* ma_l ); 1994 ump = ( u_t32_t ) ma_pgno ; 1995 `LOGCOPY_32 ( v , bp , & ump ); 1996 bp +( ump ); 1998 i( hd = NULL ) { 1999 zo = 0; 2000 `LOGCOPY_32 ( v , bp , & zo ); 2001 bp +( u_t32_t ); 2003 `LOGCOPY_32 ( v , bp , & hd -> size ); 2004 bp +( hd -> size ); 2005 `memy ( bp , hd -> da , hd-> size ); 2006 i( `LOG_SWAPPED ( v )) 2007 i(( t = `__db_gesw ( dbp , 2008 ( PAGE *) bp , ( size_t ) hd -> size , ( DBT *) NULL , 0)) != 0) 2009 ( t ); 2010 bp + hd -> size ; 2013 ump = ( u_t32_t ) xt ; 2014 `LOGCOPY_32 ( v , bp , & ump ); 2015 bp +( ump ); 2017 ump = ( u_t32_t ) ϡ_pgno ; 2018 `LOGCOPY_32 ( v , bp , & ump ); 2019 bp +( ump ); 2021 `DB_ASSERT ( v , 2022 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2024 i( is_dub || tx = NULL ) { 2025 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2026 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2027 * lp = * p ; 2028 i( p ! t_lp ) 2029 * t_lp = * p ; 2032 t = 0; 2033 #ifde DIAGNOSTIC 2038 `memy ( -> da , logc .da,ogc. size ); 2039 y | DB_debug_FLAG ; 2040 `LOGCOPY_32 ( v , logc . da , & y ); 2042 i(! `IS_REP_CLIENT ( v )) 2043 t = `__log_put ( v , 2044 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2046 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2047 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2048 `LSN_NOT_LOGGED (* t_lp ); 2051 #ifde LOG_DIAGNOSTIC 2052 i( t != 0) 2053 () `__db_pg__t ( v , 2054 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2057 #ifde DIAGNOSTIC 2058 `__os_ ( v , logc . da ); 2060 i( is_dub || tx = NULL ) 2061 `__os_ ( v , logc . da ); 2063 ( t ); 2064 } } 2070 $__db_cksum_ad ( v , cbuf , g ) 2071 ENV * v ; 2072 * cbuf ; 2073 __db_cksum_gs ** g ; 2075 __db_cksum_gs * gp ; 2076 u_t8_t * bp ; 2077 t ; 2079 i(( t = `__os_mloc ( v , 2080 ( __db_cksum_gs + ( DB_TXN ), & gp )) != 0) 2081 ( t ); 2082 bp = cbuf ; 2083 gp -> tx = ( DB_TXN *)&argp[1]; 2084 `memt ( gp -> tx , 0, ( DB_TXN )); 2086 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2087 bp +( gp -> ty ); 2089 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2090 bp +( gp -> tx -> txnid ); 2092 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2093 bp +( DB_LSN ); 2095 * g = gp ; 2096 ( t ); 2097 } } 2103 $__db_cksum_log ( v , tx , t_lp , ags ) 2104 ENV * v ; 2105 DB_TXN * tx ; 2106 DB_LSN * t_lp ; 2107 u_t32_t ags ; 2109 DBT logc ; 2110 DB_LSN * lp , nu_l , * p ; 2111 DB_TXNLOGREC * ; 2112 u_t32_t y , txn_num ; 2113 u_t ad ; 2114 u_t8_t * bp ; 2115 is_dub , t ; 2117 `COMPQUIET ( , NULL ); 2119 p = t_lp ; 2120 y = DB___db_cksum ; 2121 ad = 0; 2122 t = 0; 2124 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 2125 i( tx = NULL ) 2127 i( tx = NULL ) 2129 is_dub = 0; 2131 is_dub = 1; 2133 i( tx = NULL ) { 2134 txn_num = 0; 2135 lp = & nu_l ; 2136 nu_l . fe =u_l. offt = 0; 2138 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2139 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2140 ( t ); 2147 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2148 txn_num = tx -> txnid ; 2151 logc . size = ( y + ( txn_num + ( DB_LSN ); 2152 i( `CRYPTO_ON ( v )) { 2153 ad = v -> yo_hd -> `adj_size ( logc . size ); 2154 logc . size + ad ; 2157 i( is_dub || tx = NULL ) { 2158 i(( t = 2159 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2160 ( t ); 2162 i(( t = `__os_mloc ( v , 2163 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2164 ( t ); 2165 #ifde DIAGNOSTIC 2166 i(( t = 2167 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2168 `__os_ ( v , ); 2169 ( t ); 2172 logc . da = ->data; 2175 i( ad > 0) 2176 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2178 bp = logc . da ; 2180 `LOGCOPY_32 ( v , bp , & y ); 2181 bp +( y ); 2183 `LOGCOPY_32 ( v , bp , & txn_num ); 2184 bp +( txn_num ); 2186 `LOGCOPY_FROMLSN ( v , bp , lp ); 2187 bp +( DB_LSN ); 2189 `DB_ASSERT ( v , 2190 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2192 i( is_dub || tx = NULL ) { 2193 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2194 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2195 * lp = * p ; 2196 i( p ! t_lp ) 2197 * t_lp = * p ; 2200 t = 0; 2201 #ifde DIAGNOSTIC 2206 `memy ( -> da , logc .da,ogc. size ); 2207 y | DB_debug_FLAG ; 2208 `LOGCOPY_32 ( v , logc . da , & y ); 2210 i(! `IS_REP_CLIENT ( v )) 2211 t = `__log_put ( v , 2212 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2214 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2215 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2216 `LSN_NOT_LOGGED (* t_lp ); 2219 #ifde LOG_DIAGNOSTIC 2220 i( t != 0) 2221 () `__db_cksum_t ( v , 2222 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2225 #ifde DIAGNOSTIC 2226 `__os_ ( v , logc . da ); 2228 i( is_dub || tx = NULL ) 2229 `__os_ ( v , logc . da ); 2231 ( t ); 2232 } } 2239 $__db_pg_da_42_ad ( v , db , td , cbuf , g ) 2240 ENV * v ; 2241 DB ** db ; 2242 * td ; 2243 * cbuf ; 2244 __db_pg_da_42_gs ** g ; 2246 __db_pg_da_42_gs * gp ; 2247 u_t32_t ump ; 2248 u_t8_t * bp ; 2249 t ; 2251 i(( t = `__os_mloc ( v , 2252 ( __db_pg_da_42_gs + ( DB_TXN ), & gp )) != 0) 2253 ( t ); 2254 bp = cbuf ; 2255 gp -> tx = ( DB_TXN *)&argp[1]; 2256 `memt ( gp -> tx , 0, ( DB_TXN )); 2258 gp -> tx -> td =d; 2259 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2260 bp +( gp -> ty ); 2262 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2263 bp +( gp -> tx -> txnid ); 2265 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2266 bp +( DB_LSN ); 2268 `LOGCOPY_32 ( v , & ump , bp ); 2269 gp -> feid = ( t32_t ) ump ; 2270 bp +( ump ); 2271 i( db ! NULL ) { 2272 * db = NULL ; 2273 t = `__dbg_id_to_db ( 2274 v , gp -> tx , db ,rgp-> feid , 1); 2277 `LOGCOPY_32 ( v , & ump , bp ); 2278 gp -> pgno = ( db_pgno_t ) ump ; 2279 bp +( ump ); 2281 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 2282 bp +( DB_LSN ); 2284 `LOGCOPY_32 ( v , & ump , bp ); 2285 gp -> ma_pgno = ( db_pgno_t ) ump ; 2286 bp +( ump ); 2288 `memt (& gp -> hd , 0, (argp->header)); 2289 `LOGCOPY_32 ( v ,& gp -> hd . size , bp ); 2290 bp +( u_t32_t ); 2291 gp -> hd . da = bp ; 2292 bp + gp -> hd . size ; 2294 `LOGCOPY_32 ( v , & ump , bp ); 2295 gp -> xt = ( db_pgno_t ) ump ; 2296 bp +( ump ); 2298 `memt (& gp -> da , 0, (argp->data)); 2299 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 2300 bp +( u_t32_t ); 2301 gp -> da .d bp ; 2302 bp + gp -> da . size ; 2304 * g = gp ; 2305 ( t ); 2306 } } 2313 $__db_pg_da_ad ( v , db , td , cbuf , g ) 2314 ENV * v ; 2315 DB ** db ; 2316 * td ; 2317 * cbuf ; 2318 __db_pg_da_gs ** g ; 2320 __db_pg_da_gs * gp ; 2321 u_t32_t ump ; 2322 u_t8_t * bp ; 2323 t ; 2325 i(( t = `__os_mloc ( v , 2326 ( __db_pg_da_gs + ( DB_TXN ), & gp )) != 0) 2327 ( t ); 2328 bp = cbuf ; 2329 gp -> tx = ( DB_TXN *)&argp[1]; 2330 `memt ( gp -> tx , 0, ( DB_TXN )); 2332 gp -> tx -> td =d; 2333 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2334 bp +( gp -> ty ); 2336 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2337 bp +( gp -> tx -> txnid ); 2339 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2340 bp +( DB_LSN ); 2342 `LOGCOPY_32 ( v , & ump , bp ); 2343 gp -> feid = ( t32_t ) ump ; 2344 bp +( ump ); 2345 i( db ! NULL ) { 2346 * db = NULL ; 2347 t = `__dbg_id_to_db ( 2348 v , gp -> tx , db ,rgp-> feid , 1); 2351 `LOGCOPY_32 ( v , & ump , bp ); 2352 gp -> pgno = ( db_pgno_t ) ump ; 2353 bp +( ump ); 2355 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 2356 bp +( DB_LSN ); 2358 `LOGCOPY_32 ( v , & ump , bp ); 2359 gp -> ma_pgno = ( db_pgno_t ) ump ; 2360 bp +( ump ); 2362 `memt (& gp -> hd , 0, (argp->header)); 2363 `LOGCOPY_32 ( v ,& gp -> hd . size , bp ); 2364 bp +( u_t32_t ); 2365 gp -> hd . da = bp ; 2366 bp + gp -> hd . size ; 2368 `LOGCOPY_32 ( v , & ump , bp ); 2369 gp -> xt = ( db_pgno_t ) ump ; 2370 bp +( ump ); 2372 `LOGCOPY_32 ( v , & ump , bp ); 2373 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 2374 bp +( ump ); 2376 `memt (& gp -> da , 0, (argp->data)); 2377 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 2378 bp +( u_t32_t ); 2379 gp -> da .d bp ; 2380 bp + gp -> da . size ; 2381 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 2382 t_t ; 2383 i(( t_t = `__db_gesw (* db , 2384 ( PAGE *) gp -> hd . da , ( size_t rgp->hd. size , 2385 & gp -> da , 1)) != 0) 2386 ( t_t ); 2389 * g = gp ; 2390 ( t ); 2391 } } 2399 $__db_pg_da_log ( dbp , tx , t_lp , ags , pgno , ma_l , ma_pgno , hd , xt , 2400 ϡ_pgno , da ) 2401 DB * dbp ; 2402 DB_TXN * tx ; 2403 DB_LSN * t_lp ; 2404 u_t32_t ags ; 2405 db_pgno_t pgno ; 2406 DB_LSN * ma_l ; 2407 db_pgno_t ma_pgno ; 2408 cڡ DBT * hd ; 2409 db_pgno_t xt ; 2410 db_pgno_t ϡ_pgno ; 2411 cڡ DBT * da ; 2413 DBT logc ; 2414 DB_LSN * lp , nu_l , * p ; 2415 DB_TXNLOGREC * ; 2416 ENV * v ; 2417 u_t32_t zo , ump , y , txn_num ; 2418 u_t ad ; 2419 u_t8_t * bp ; 2420 is_dub , t ; 2422 `COMPQUIET ( , NULL ); 2424 v = dbp ->env; 2425 p = t_lp ; 2426 y = DB___db_pg_da ; 2427 ad = 0; 2428 t = 0; 2430 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2431 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2432 i( tx = NULL ) 2434 is_dub = 0; 2436 is_dub = 1; 2438 i( tx = NULL ) { 2439 txn_num = 0; 2440 lp = & nu_l ; 2441 nu_l . fe =u_l. offt = 0; 2443 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2444 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2445 ( t ); 2452 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2453 txn_num = tx -> txnid ; 2456 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2457 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2458 ( t = `__dbg_zy_id ( dbp )) != 0) 2459 ( t ); 2461 logc . size = ( y + ( txn_num + ( DB_LSN ) 2462 + ( u_t32_t ) 2463 + ( u_t32_t ) 2464 + (* ma_l ) 2465 + ( u_t32_t ) 2466 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 2467 + ( u_t32_t ) 2468 + ( u_t32_t ) 2469 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 2470 i( `CRYPTO_ON ( v )) { 2471 ad = v -> yo_hd -> `adj_size ( logc . size ); 2472 logc . size + ad ; 2475 i( is_dub || tx = NULL ) { 2476 i(( t = 2477 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2478 ( t ); 2480 i(( t = `__os_mloc ( v , 2481 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2482 ( t ); 2483 #ifde DIAGNOSTIC 2484 i(( t = 2485 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2486 `__os_ ( v , ); 2487 ( t ); 2490 logc . da = ->data; 2493 i( ad > 0) 2494 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2496 bp = logc . da ; 2498 `LOGCOPY_32 ( v , bp , & y ); 2499 bp +( y ); 2501 `LOGCOPY_32 ( v , bp , & txn_num ); 2502 bp +( txn_num ); 2504 `LOGCOPY_FROMLSN ( v , bp , lp ); 2505 bp +( DB_LSN ); 2507 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2508 `LOGCOPY_32 ( v , bp , & ump ); 2509 bp +( ump ); 2511 ump = ( u_t32_t ) pgno ; 2512 `LOGCOPY_32 ( v , bp , & ump ); 2513 bp +( ump ); 2515 i( ma_l ! NULL ) { 2516 i( tx ! NULL ) { 2517 LOG * = v -> lg_hd -> gfo . imy ; 2518 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 2519 `__log_check_ge_l ( v , dbp , ma_l ) != 0)) 2520 ( t ); 2522 `LOGCOPY_FROMLSN ( v , bp , ma_l ); 2524 `memt ( bp , 0, (* ma_l )); 2525 bp +(* ma_l ); 2527 ump = ( u_t32_t ) ma_pgno ; 2528 `LOGCOPY_32 ( v , bp , & ump ); 2529 bp +( ump ); 2531 i( hd = NULL ) { 2532 zo = 0; 2533 `LOGCOPY_32 ( v , bp , & zo ); 2534 bp +( u_t32_t ); 2536 `LOGCOPY_32 ( v , bp , & hd -> size ); 2537 bp +( hd -> size ); 2538 `memy ( bp , hd -> da , hd-> size ); 2539 i( `LOG_SWAPPED ( v )) 2540 i(( t = `__db_gesw ( dbp , 2541 ( PAGE *) bp , ( size_t ) hd -> size , ( DBT *) da , 0)) != 0) 2542 ( t ); 2543 bp + hd -> size ; 2546 ump = ( u_t32_t ) xt ; 2547 `LOGCOPY_32 ( v , bp , & ump ); 2548 bp +( ump ); 2550 ump = ( u_t32_t ) ϡ_pgno ; 2551 `LOGCOPY_32 ( v , bp , & ump ); 2552 bp +( ump ); 2554 i( da = NULL ) { 2555 zo = 0; 2556 `LOGCOPY_32 ( v , bp , & zo ); 2557 bp +( u_t32_t ); 2559 `LOGCOPY_32 ( v , bp , & da -> size ); 2560 bp +( da -> size ); 2561 `memy ( bp , da ->da, da-> size ); 2562 i( `LOG_SWAPPED ( v && `F_ISSET ( da , DB_DBT_APPMALLOC )) 2563 `__os_ ( v , da ->data); 2564 bp + da -> size ; 2567 `DB_ASSERT ( v , 2568 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2570 i( is_dub || tx = NULL ) { 2571 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2572 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2573 * lp = * p ; 2574 i( p ! t_lp ) 2575 * t_lp = * p ; 2578 t = 0; 2579 #ifde DIAGNOSTIC 2584 `memy ( -> da , logc .da,ogc. size ); 2585 y | DB_debug_FLAG ; 2586 `LOGCOPY_32 ( v , logc . da , & y ); 2588 i(! `IS_REP_CLIENT ( v )) 2589 t = `__log_put ( v , 2590 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2592 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2593 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2594 `LSN_NOT_LOGGED (* t_lp ); 2597 #ifde LOG_DIAGNOSTIC 2598 i( t != 0) 2599 () `__db_pg_da_t ( v , 2600 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2603 #ifde DIAGNOSTIC 2604 `__os_ ( v , logc . da ); 2606 i( is_dub || tx = NULL ) 2607 `__os_ ( v , logc . da ); 2609 ( t ); 2610 } } 2617 $__db_pg__ad ( v , db , td , cbuf , g ) 2618 ENV * v ; 2619 DB ** db ; 2620 * td ; 2621 * cbuf ; 2622 __db_pg__gs ** g ; 2624 __db_pg__gs * gp ; 2625 u_t32_t ump ; 2626 u_t8_t * bp ; 2627 t ; 2629 i(( t = `__os_mloc ( v , 2630 ( __db_pg__gs + ( DB_TXN ), & gp )) != 0) 2631 ( t ); 2632 bp = cbuf ; 2633 gp -> tx = ( DB_TXN *)&argp[1]; 2634 `memt ( gp -> tx , 0, ( DB_TXN )); 2636 gp -> tx -> td =d; 2637 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2638 bp +( gp -> ty ); 2640 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2641 bp +( gp -> tx -> txnid ); 2643 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2644 bp +( DB_LSN ); 2646 `LOGCOPY_32 ( v , & ump , bp ); 2647 gp -> feid = ( t32_t ) ump ; 2648 bp +( ump ); 2649 i( db ! NULL ) { 2650 * db = NULL ; 2651 t = `__dbg_id_to_db ( 2652 v , gp -> tx , db ,rgp-> feid , 1); 2655 `LOGCOPY_32 ( v , & ump , bp ); 2656 gp -> pgno = ( db_pgno_t ) ump ; 2657 bp +( ump ); 2659 `memt (& gp -> hd , 0, (argp->header)); 2660 `LOGCOPY_32 ( v ,& gp -> hd . size , bp ); 2661 bp +( u_t32_t ); 2662 gp -> hd . da = bp ; 2663 bp + gp -> hd . size ; 2665 `memt (& gp -> da , 0, (argp->data)); 2666 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 2667 bp +( u_t32_t ); 2668 gp -> da .d bp ; 2669 bp + gp -> da . size ; 2670 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 2671 t_t ; 2672 i(( t_t = `__db_gesw (* db , 2673 ( PAGE *) gp -> hd . da , ( size_t rgp->hd. size , 2674 & gp -> da , 1)) != 0) 2675 ( t_t ); 2678 * g = gp ; 2679 ( t ); 2680 } } 2687 $__db_pg__log ( dbp , tx , t_lp , ags , pgno , hd , da ) 2688 DB * dbp ; 2689 DB_TXN * tx ; 2690 DB_LSN * t_lp ; 2691 u_t32_t ags ; 2692 db_pgno_t pgno ; 2693 cڡ DBT * hd ; 2694 cڡ DBT * da ; 2696 DBT logc ; 2697 DB_LSN * lp , nu_l , * p ; 2698 DB_TXNLOGREC * ; 2699 ENV * v ; 2700 u_t32_t zo , ump , y , txn_num ; 2701 u_t ad ; 2702 u_t8_t * bp ; 2703 is_dub , t ; 2705 `COMPQUIET ( , NULL ); 2707 v = dbp ->env; 2708 p = t_lp ; 2709 y = DB___db_pg_ ; 2710 ad = 0; 2711 t = 0; 2713 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2714 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2715 i( tx = NULL ) 2717 is_dub = 0; 2719 is_dub = 1; 2721 i( tx = NULL ) { 2722 txn_num = 0; 2723 lp = & nu_l ; 2724 nu_l . fe =u_l. offt = 0; 2726 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2727 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2728 ( t ); 2735 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2736 txn_num = tx -> txnid ; 2739 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2740 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2741 ( t = `__dbg_zy_id ( dbp )) != 0) 2742 ( t ); 2744 logc . size = ( y + ( txn_num + ( DB_LSN ) 2745 + ( u_t32_t ) 2746 + ( u_t32_t ) 2747 + ( u_t32_t + ( hd = NULL ? 0 : hd-> size ) 2748 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 2749 i( `CRYPTO_ON ( v )) { 2750 ad = v -> yo_hd -> `adj_size ( logc . size ); 2751 logc . size + ad ; 2754 i( is_dub || tx = NULL ) { 2755 i(( t = 2756 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2757 ( t ); 2759 i(( t = `__os_mloc ( v , 2760 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2761 ( t ); 2762 #ifde DIAGNOSTIC 2763 i(( t = 2764 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2765 `__os_ ( v , ); 2766 ( t ); 2769 logc . da = ->data; 2772 i( ad > 0) 2773 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2775 bp = logc . da ; 2777 `LOGCOPY_32 ( v , bp , & y ); 2778 bp +( y ); 2780 `LOGCOPY_32 ( v , bp , & txn_num ); 2781 bp +( txn_num ); 2783 `LOGCOPY_FROMLSN ( v , bp , lp ); 2784 bp +( DB_LSN ); 2786 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2787 `LOGCOPY_32 ( v , bp , & ump ); 2788 bp +( ump ); 2790 ump = ( u_t32_t ) pgno ; 2791 `LOGCOPY_32 ( v , bp , & ump ); 2792 bp +( ump ); 2794 i( hd = NULL ) { 2795 zo = 0; 2796 `LOGCOPY_32 ( v , bp , & zo ); 2797 bp +( u_t32_t ); 2799 `LOGCOPY_32 ( v , bp , & hd -> size ); 2800 bp +( hd -> size ); 2801 `memy ( bp , hd -> da , hd-> size ); 2802 i( `LOG_SWAPPED ( v )) 2803 i(( t = `__db_gesw ( dbp , 2804 ( PAGE *) bp , ( size_t ) hd -> size , ( DBT *) da , 0)) != 0) 2805 ( t ); 2806 bp + hd -> size ; 2809 i( da = NULL ) { 2810 zo = 0; 2811 `LOGCOPY_32 ( v , bp , & zo ); 2812 bp +( u_t32_t ); 2814 `LOGCOPY_32 ( v , bp , & da -> size ); 2815 bp +( da -> size ); 2816 `memy ( bp , da ->da, da-> size ); 2817 i( `LOG_SWAPPED ( v && `F_ISSET ( da , DB_DBT_APPMALLOC )) 2818 `__os_ ( v , da ->data); 2819 bp + da -> size ; 2822 `DB_ASSERT ( v , 2823 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2825 i( is_dub || tx = NULL ) { 2826 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2827 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2828 * lp = * p ; 2829 i( p ! t_lp ) 2830 * t_lp = * p ; 2833 t = 0; 2834 #ifde DIAGNOSTIC 2839 `memy ( -> da , logc .da,ogc. size ); 2840 y | DB_debug_FLAG ; 2841 `LOGCOPY_32 ( v , logc . da , & y ); 2843 i(! `IS_REP_CLIENT ( v )) 2844 t = `__log_put ( v , 2845 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2847 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2848 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2849 `LSN_NOT_LOGGED (* t_lp ); 2852 #ifde LOG_DIAGNOSTIC 2853 i( t != 0) 2854 () `__db_pg__t ( v , 2855 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2858 #ifde DIAGNOSTIC 2859 `__os_ ( v , logc . da ); 2861 i( is_dub || tx = NULL ) 2862 `__os_ ( v , logc . da ); 2864 ( t ); 2865 } } 2872 $__db_pg_st_ad ( v , db , td , cbuf , g ) 2873 ENV * v ; 2874 DB ** db ; 2875 * td ; 2876 * cbuf ; 2877 __db_pg_st_gs ** g ; 2879 __db_pg_st_gs * gp ; 2880 u_t32_t ump ; 2881 u_t8_t * bp ; 2882 t ; 2884 i(( t = `__os_mloc ( v , 2885 ( __db_pg_st_gs + ( DB_TXN ), & gp )) != 0) 2886 ( t ); 2887 bp = cbuf ; 2888 gp -> tx = ( DB_TXN *)&argp[1]; 2889 `memt ( gp -> tx , 0, ( DB_TXN )); 2891 gp -> tx -> td =d; 2892 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2893 bp +( gp -> ty ); 2895 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2896 bp +( gp -> tx -> txnid ); 2898 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2899 bp +( DB_LSN ); 2901 `LOGCOPY_32 ( v , & ump , bp ); 2902 gp -> feid = ( t32_t ) ump ; 2903 bp +( ump ); 2904 i( db ! NULL ) { 2905 * db = NULL ; 2906 t = `__dbg_id_to_db ( 2907 v , gp -> tx , db ,rgp-> feid , 1); 2910 `LOGCOPY_32 ( v , & ump , bp ); 2911 gp -> ma = ( db_pgno_t ) ump ; 2912 bp +( ump ); 2914 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 2915 bp +( DB_LSN ); 2917 `LOGCOPY_32 ( v , & ump , bp ); 2918 gp -> ϡ_ = ( db_pgno_t ) ump ; 2919 bp +( ump ); 2921 `LOGCOPY_TOLSN ( v , & gp -> ϡ_l , bp ); 2922 bp +( DB_LSN ); 2924 `LOGCOPY_32 ( v , & ump , bp ); 2925 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 2926 bp +( ump ); 2928 `memt (& gp -> li , 0, (argp->list)); 2929 `LOGCOPY_32 ( v ,& gp -> li . size , bp ); 2930 bp +( u_t32_t ); 2931 gp -> li . da = bp ; 2932 bp + gp -> li . size ; 2934 * g = gp ; 2935 ( t ); 2936 } } 2944 $__db_pg_st_log ( dbp , tx , t_lp , ags , ma , ma_l , ϡ_ , ϡ_l , ϡ_pgno , 2945 li ) 2946 DB * dbp ; 2947 DB_TXN * tx ; 2948 DB_LSN * t_lp ; 2949 u_t32_t ags ; 2950 db_pgno_t ma ; 2951 DB_LSN * ma_l ; 2952 db_pgno_t ϡ_ ; 2953 DB_LSN * ϡ_l ; 2954 db_pgno_t ϡ_pgno ; 2955 cڡ DBT * li ; 2957 DBT logc ; 2958 DB_LSN * lp , nu_l , * p ; 2959 DB_TXNLOGREC * ; 2960 ENV * v ; 2961 u_t32_t zo , ump , y , txn_num ; 2962 u_t ad ; 2963 u_t8_t * bp ; 2964 is_dub , t ; 2966 `COMPQUIET ( , NULL ); 2968 v = dbp ->env; 2969 p = t_lp ; 2970 y = DB___db_pg_st ; 2971 ad = 0; 2972 t = 0; 2974 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2975 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2976 i( tx = NULL ) 2978 is_dub = 0; 2980 is_dub = 1; 2982 i( tx = NULL ) { 2983 txn_num = 0; 2984 lp = & nu_l ; 2985 nu_l . fe =u_l. offt = 0; 2987 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2988 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2989 ( t ); 2996 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2997 txn_num = tx -> txnid ; 3000 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 3001 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 3002 ( t = `__dbg_zy_id ( dbp )) != 0) 3003 ( t ); 3005 logc . size = ( y + ( txn_num + ( DB_LSN ) 3006 + ( u_t32_t ) 3007 + ( u_t32_t ) 3008 + (* ma_l ) 3009 + ( u_t32_t ) 3010 + (* ϡ_l ) 3011 + ( u_t32_t ) 3012 + ( u_t32_t + ( li = NULL ? 0 :i-> size ); 3013 i( `CRYPTO_ON ( v )) { 3014 ad = v -> yo_hd -> `adj_size ( logc . size ); 3015 logc . size + ad ; 3018 i( is_dub || tx = NULL ) { 3019 i(( t = 3020 `__os_mloc ( v , logc . size , &logc. da )) != 0) 3021 ( t ); 3023 i(( t = `__os_mloc ( v , 3024 logc . size + ( DB_TXNLOGREC ), & )) != 0) 3025 ( t ); 3026 #ifde DIAGNOSTIC 3027 i(( t = 3028 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 3029 `__os_ ( v , ); 3030 ( t ); 3033 logc . da = ->data; 3036 i( ad > 0) 3037 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 3039 bp = logc . da ; 3041 `LOGCOPY_32 ( v , bp , & y ); 3042 bp +( y ); 3044 `LOGCOPY_32 ( v , bp , & txn_num ); 3045 bp +( txn_num ); 3047 `LOGCOPY_FROMLSN ( v , bp , lp ); 3048 bp +( DB_LSN ); 3050 ump = ( u_t32_t ) dbp -> log_fame -> id ; 3051 `LOGCOPY_32 ( v , bp , & ump ); 3052 bp +( ump ); 3054 ump = ( u_t32_t ) ma ; 3055 `LOGCOPY_32 ( v , bp , & ump ); 3056 bp +( ump ); 3058 i( ma_l ! NULL ) { 3059 i( tx ! NULL ) { 3060 LOG * = v -> lg_hd -> gfo . imy ; 3061 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 3062 `__log_check_ge_l ( v , dbp , ma_l ) != 0)) 3063 ( t ); 3065 `LOGCOPY_FROMLSN ( v , bp , ma_l ); 3067 `memt ( bp , 0, (* ma_l )); 3068 bp +(* ma_l ); 3070 ump = ( u_t32_t ) ϡ_ ; 3071 `LOGCOPY_32 ( v , bp , & ump ); 3072 bp +( ump ); 3074 i( ϡ_l ! NULL ) { 3075 i( tx ! NULL ) { 3076 LOG * = v -> lg_hd -> gfo . imy ; 3077 i( `LOG_COMPARE ( ϡ_l , & -> l >0 && ( t = 3078 `__log_check_ge_l ( v , dbp , ϡ_l ) != 0)) 3079 ( t ); 3081 `LOGCOPY_FROMLSN ( v , bp , ϡ_l ); 3083 `memt ( bp , 0, (* ϡ_l )); 3084 bp +(* ϡ_l ); 3086 ump = ( u_t32_t ) ϡ_pgno ; 3087 `LOGCOPY_32 ( v , bp , & ump ); 3088 bp +( ump ); 3090 i( li = NULL ) { 3091 zo = 0; 3092 `LOGCOPY_32 ( v , bp , & zo ); 3093 bp +( u_t32_t ); 3095 `LOGCOPY_32 ( v , bp , & li -> size ); 3096 bp +( li -> size ); 3097 `memy ( bp , li -> da ,i-> size ); 3098 bp + li -> size ; 3101 `DB_ASSERT ( v , 3102 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 3104 i( is_dub || tx = NULL ) { 3105 i(( t = `__log_put ( v , p ,( DBT *)& logc , 3106 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 3107 * lp = * p ; 3108 i( p ! t_lp ) 3109 * t_lp = * p ; 3112 t = 0; 3113 #ifde DIAGNOSTIC 3118 `memy ( -> da , logc .da,ogc. size ); 3119 y | DB_debug_FLAG ; 3120 `LOGCOPY_32 ( v , logc . da , & y ); 3122 i(! `IS_REP_CLIENT ( v )) 3123 t = `__log_put ( v , 3124 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 3126 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 3127 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 3128 `LSN_NOT_LOGGED (* t_lp ); 3131 #ifde LOG_DIAGNOSTIC 3132 i( t != 0) 3133 () `__db_pg_st_t ( v , 3134 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 3137 #ifde DIAGNOSTIC 3138 `__os_ ( v , logc . da ); 3140 i( is_dub || tx = NULL ) 3141 `__os_ ( v , logc . da ); 3143 ( t ); 3144 } } 3150 $__db__cov ( v , dbp ) 3151 ENV * v ; 3152 DB_DISTAB * dbp ; 3154 t ; 3156 i(( t = `__db_add_covy_t ( v , dbp , 3157 __db_addm_cov , DB___db_addm )) != 0) 3158 ( t ); 3159 i(( t = `__db_add_covy_t ( v , dbp , 3160 __db_big_cov , DB___db_big )) != 0) 3161 ( t ); 3162 i(( t = `__db_add_covy_t ( v , dbp , 3163 __db_ovf_cov , DB___db_ovf )) != 0) 3164 ( t ); 3165 i(( t = `__db_add_covy_t ( v , dbp , 3166 __db_debug_cov , DB___db_debug )) != 0) 3167 ( t ); 3168 i(( t = `__db_add_covy_t ( v , dbp , 3169 __db_no_cov , DB___db_no )) != 0) 3170 ( t ); 3171 i(( t = `__db_add_covy_t ( v , dbp , 3172 __db_pg_loc_cov , DB___db_pg_loc )) != 0) 3173 ( t ); 3174 i(( t = `__db_add_covy_t ( v , dbp , 3175 __db_pg__cov , DB___db_pg_ )) != 0) 3176 ( t ); 3177 i(( t = `__db_add_covy_t ( v , dbp , 3178 __db_cksum_cov , DB___db_cksum )) != 0) 3179 ( t ); 3180 i(( t = `__db_add_covy_t ( v , dbp , 3181 __db_pg_da_cov , DB___db_pg_da )) != 0) 3182 ( t ); 3183 i(( t = `__db_add_covy_t ( v , dbp , 3184 __db_pg__cov , DB___db_pg_ )) != 0) 3185 ( t ); 3186 i(( t = `__db_add_covy_t ( v , dbp , 3187 __db_pg_st_cov , DB___db_pg_st )) != 0) 3188 ( t ); 3190 } } @../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 ( v , db , lp , nud2 , nud3 ) 19 ENV * v ; 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 = 34 `__db_addm_ad ( v , NULL , NULL, 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 ("\tcode: %lu\n", ( u_lg ) gp -> code ); 44 () `tf ("\tfeid: %ld\n", () gp -> feid ); 45 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 46 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 47 () `tf ("\bys: %lu\n", ( u_lg ) gp -> nbys ); 48 () `tf ("\thdr: "); 49 i = 0; i < gp -> hdr . size ; i++) { 50 ch = (( u_t8_t *) gp -> hdr . da )[ i ]; 51 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 53 () `tf ("\n"); 54 () `tf ("\tdbt: "); 55 i = 0; i < gp -> dbt . size ; i++) { 56 ch = (( u_t8_t *) gp -> dbt . da )[ i ]; 57 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 59 () `tf ("\n"); 60 () `tf ("\tpagelsn: [%lu][%lu]\n", 61 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 62 () `tf ("\n"); 63 `__os_ ( v , gp ); 65 } } 71 $__db_big_t ( v , db , lp , nud2 , nud3 ) 72 ENV * v ; 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 = 87 `__db_big_ad ( v , NULL , NULL, 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 ("\tcode: %lu\n", ( u_lg ) gp -> code ); 97 () `tf ("\tfeid: %ld\n", () gp -> feid ); 98 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 99 () `tf ("\v_pgno: %lu\n", ( u_lg ) gp -> ev_pgno ); 100 () `tf ("\ext_pgno: %lu\n", ( u_lg ) gp -> xt_pgno ); 101 () `tf ("\tdbt: "); 102 i = 0; i < gp -> dbt . size ; i++) { 103 ch = (( u_t8_t *) gp -> dbt . da )[ i ]; 104 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 106 () `tf ("\n"); 107 () `tf ("\tpagelsn: [%lu][%lu]\n", 108 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 109 () `tf ("\tprevlsn: [%lu][%lu]\n", 110 ( u_lg ) gp -> evl . fe , (u_lgrgp->evl. offt ); 111 () `tf ("\tnextlsn: [%lu][%lu]\n", 112 ( u_lg ) gp -> x . fe , (u_lgrgp->x. offt ); 113 () `tf ("\n"); 114 `__os_ ( v , gp ); 116 } } 123 $__db_ovf_t ( v , db , lp , nud2 , nud3 ) 124 ENV * v ; 125 DBT * db ; 126 DB_LSN * lp ; 127 db_cs nud2 ; 128 * nud3 ; 130 __db_ovf_gs * gp ; 131 t ; 133 nud2 = DB_TXN_PRINT ; 134 nud3 = NULL ; 136 i(( t = 137 `__db_ovf_ad ( v , NULL , NULL, 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 ("\dju: %ld\n", () gp -> adju ); 149 () `tf ("\tlsn: [%lu][%lu]\n", 150 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 151 () `tf ("\n"); 152 `__os_ ( v , gp ); 154 } } 161 $__db_lk_42_t ( v , db , lp , nud2 , nud3 ) 162 ENV * v ; 163 DBT * db ; 164 DB_LSN * lp ; 165 db_cs nud2 ; 166 * nud3 ; 168 __db_lk_42_gs * gp ; 169 t ; 171 nud2 = DB_TXN_PRINT ; 172 nud3 = NULL ; 174 i(( t = 175 `__db_lk_42_ad ( v , NULL , NULL, 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 ("\tcode: %lu\n", ( u_lg ) gp -> code ); 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 ("\v: %lu\n", ( u_lg ) gp -> ev ); 190 () `tf ("\tlsn_prev: [%lu][%lu]\n", 191 ( u_lg ) gp -> l_ev . fe , (u_lgrgp->l_ev. offt ); 192 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 193 () `tf ("\tlsn_next: [%lu][%lu]\n", 194 ( u_lg ) gp -> l_xt . fe , (u_lgrgp->l_xt. offt ); 195 () `tf ("\n"); 196 `__os_ ( v , gp ); 198 } } 205 $__db_debug_t ( v , db , lp , nud2 , nud3 ) 206 ENV * v ; 207 DBT * db ; 208 DB_LSN * lp ; 209 db_cs nud2 ; 210 * nud3 ; 212 __db_debug_gs * gp ; 213 u_t32_t i ; 214 ch ; 215 t ; 217 nud2 = DB_TXN_PRINT ; 218 nud3 = NULL ; 220 i(( t = `__db_debug_ad ( v , db -> da , & gp )) != 0) 221 ( t ); 222 () `tf ( 224 ( u_lg ) lp -> fe , (u_lgp-> offt , 225 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 226 ( u_lg ) gp -> ty , 227 ( u_lg ) gp -> tx -> txnid , 228 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 229 () `tf ("\top: "); 230 i = 0; i < gp -> . size ; i++) { 231 ch = (( u_t8_t *) gp -> . da )[ i ]; 232 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 234 () `tf ("\n"); 235 () `tf ("\tfeid: %ld\n", () gp -> feid ); 236 () `tf ("\tkey: "); 237 i = 0; i < gp -> key . size ; i++) { 238 ch = (( u_t8_t *) gp -> key . da )[ i ]; 239 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 241 () `tf ("\n"); 242 () `tf ("\tdata: "); 243 i = 0; i < gp -> da . size ; i++) { 244 ch = (( u_t8_t *) gp -> da .da)[ i ]; 245 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 247 () `tf ("\n"); 248 () `tf ("\rg_ags: %lu\n", ( u_lg ) gp -> g_ags ); 249 () `tf ("\n"); 250 `__os_ ( v , gp ); 252 } } 259 $__db_no_t ( v , db , lp , nud2 , nud3 ) 260 ENV * v ; 261 DBT * db ; 262 DB_LSN * lp ; 263 db_cs nud2 ; 264 * nud3 ; 266 __db_no_gs * gp ; 267 t ; 269 nud2 = DB_TXN_PRINT ; 270 nud3 = NULL ; 272 i(( t = 273 `__db_no_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 274 ( t ); 275 () `tf ( 277 ( u_lg ) lp -> fe , (u_lgp-> offt , 278 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 279 ( u_lg ) gp -> ty , 280 ( u_lg ) gp -> tx -> txnid , 281 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 282 () `tf ("\tfeid: %ld\n", () gp -> feid ); 283 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 284 () `tf ("\tprevlsn: [%lu][%lu]\n", 285 ( u_lg ) gp -> evl . fe , (u_lgrgp->evl. offt ); 286 () `tf ("\n"); 287 `__os_ ( v , gp ); 289 } } 296 $__db_pg_loc_42_t ( v , db , lp , nud2 , nud3 ) 297 ENV * v ; 298 DBT * db ; 299 DB_LSN * lp ; 300 db_cs nud2 ; 301 * nud3 ; 303 __db_pg_loc_42_gs * gp ; 304 t ; 306 nud2 = DB_TXN_PRINT ; 307 nud3 = NULL ; 309 i(( t = 310 `__db_pg_loc_42_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 311 ( t ); 312 () `tf ( 314 ( u_lg ) lp -> fe , (u_lgp-> offt , 315 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 316 ( u_lg ) gp -> ty , 317 ( u_lg ) gp -> tx -> txnid , 318 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 319 () `tf ("\tfeid: %ld\n", () gp -> feid ); 320 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 321 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 322 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 323 () `tf ("\tpage_lsn: [%lu][%lu]\n", 324 ( u_lg ) gp -> ge_l . fe , (u_lgrgp->ge_l. offt ); 325 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 326 () `tf ("\ty: %lu\n", ( u_lg ) gp -> y ); 327 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 328 () `tf ("\n"); 329 `__os_ ( v , gp ); 331 } } 338 $__db_pg_loc_t ( v , db , lp , nud2 , nud3 ) 339 ENV * v ; 340 DBT * db ; 341 DB_LSN * lp ; 342 db_cs nud2 ; 343 * nud3 ; 345 __db_pg_loc_gs * gp ; 346 t ; 348 nud2 = DB_TXN_PRINT ; 349 nud3 = NULL ; 351 i(( t = 352 `__db_pg_loc_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 353 ( t ); 354 () `tf ( 356 ( u_lg ) lp -> fe , (u_lgp-> offt , 357 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 358 ( u_lg ) gp -> ty , 359 ( u_lg ) gp -> tx -> txnid , 360 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 361 () `tf ("\tfeid: %ld\n", () gp -> feid ); 362 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 363 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 364 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 365 () `tf ("\tpage_lsn: [%lu][%lu]\n", 366 ( u_lg ) gp -> ge_l . fe , (u_lgrgp->ge_l. offt ); 367 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 368 () `tf ("\ty: %lu\n", ( u_lg ) gp -> y ); 369 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 370 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 371 () `tf ("\n"); 372 `__os_ ( v , gp ); 374 } } 381 $__db_pg__42_t ( v , db , lp , nud2 , nud3 ) 382 ENV * v ; 383 DBT * db ; 384 DB_LSN * lp ; 385 db_cs nud2 ; 386 * nud3 ; 388 __db_pg__42_gs * gp ; 389 u_t32_t i ; 390 ch ; 391 t ; 393 nud2 = DB_TXN_PRINT ; 394 nud3 = NULL ; 396 i(( t = 397 `__db_pg__42_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 398 ( t ); 399 () `tf ( 401 ( u_lg ) lp -> fe , (u_lgp-> offt , 402 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 403 ( u_lg ) gp -> ty , 404 ( u_lg ) gp -> tx -> txnid , 405 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 406 () `tf ("\tfeid: %ld\n", () gp -> feid ); 407 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 408 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 409 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 410 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 411 () `tf ("\theader: "); 412 i = 0; i < gp -> hd . size ; i++) { 413 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 414 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 416 () `tf ("\n"); 417 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 418 () `tf ("\n"); 419 `__os_ ( v , gp ); 421 } } 428 $__db_pg__t ( v , db , lp , nud2 , nud3 ) 429 ENV * v ; 430 DBT * db ; 431 DB_LSN * lp ; 432 db_cs nud2 ; 433 * nud3 ; 435 __db_pg__gs * gp ; 436 u_t32_t i ; 437 ch ; 438 t ; 440 nud2 = DB_TXN_PRINT ; 441 nud3 = NULL ; 443 i(( t = 444 `__db_pg__ad ( v , NULL , NULL, db -> da , & gp )) != 0) 445 ( t ); 446 () `tf ( 448 ( u_lg ) lp -> fe , (u_lgp-> offt , 449 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 450 ( u_lg ) gp -> ty , 451 ( u_lg ) gp -> tx -> txnid , 452 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 453 () `tf ("\tfeid: %ld\n", () gp -> feid ); 454 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 455 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 456 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 457 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 458 () `tf ("\theader: "); 459 i = 0; i < gp -> hd . size ; i++) { 460 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 461 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 463 () `tf ("\n"); 464 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 465 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 466 () `tf ("\n"); 467 `__os_ ( v , gp ); 469 } } 476 $__db_cksum_t ( v , db , lp , nud2 , nud3 ) 477 ENV * v ; 478 DBT * db ; 479 DB_LSN * lp ; 480 db_cs nud2 ; 481 * nud3 ; 483 __db_cksum_gs * gp ; 484 t ; 486 nud2 = DB_TXN_PRINT ; 487 nud3 = NULL ; 489 i(( t = `__db_cksum_ad ( v , db -> da , & gp )) != 0) 490 ( t ); 491 () `tf ( 493 ( u_lg ) lp -> fe , (u_lgp-> offt , 494 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 495 ( u_lg ) gp -> ty , 496 ( u_lg ) gp -> tx -> txnid , 497 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 498 () `tf ("\n"); 499 `__os_ ( v , gp ); 501 } } 508 $__db_pg_da_42_t ( v , db , lp , nud2 , nud3 ) 509 ENV * v ; 510 DBT * db ; 511 DB_LSN * lp ; 512 db_cs nud2 ; 513 * nud3 ; 515 __db_pg_da_42_gs * gp ; 516 u_t32_t i ; 517 ch ; 518 t ; 520 nud2 = DB_TXN_PRINT ; 521 nud3 = NULL ; 523 i(( t = 524 `__db_pg_da_42_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 525 ( t ); 526 () `tf ( 528 ( u_lg ) lp -> fe , (u_lgp-> offt , 529 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 530 ( u_lg ) gp -> ty , 531 ( u_lg ) gp -> tx -> txnid , 532 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 533 () `tf ("\tfeid: %ld\n", () gp -> feid ); 534 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 535 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 536 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 537 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 538 () `tf ("\theader: "); 539 i = 0; i < gp -> hd . size ; i++) { 540 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 541 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 543 () `tf ("\n"); 544 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 545 () `tf ("\tdata: "); 546 i = 0; i < gp -> da . size ; i++) { 547 ch = (( u_t8_t *) gp -> da .da)[ i ]; 548 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 550 () `tf ("\n"); 551 () `tf ("\n"); 552 `__os_ ( v , gp ); 554 } } 561 $__db_pg_da_t ( v , db , lp , nud2 , nud3 ) 562 ENV * v ; 563 DBT * db ; 564 DB_LSN * lp ; 565 db_cs nud2 ; 566 * nud3 ; 568 __db_pg_da_gs * gp ; 569 u_t32_t i ; 570 ch ; 571 t ; 573 nud2 = DB_TXN_PRINT ; 574 nud3 = NULL ; 576 i(( t = 577 `__db_pg_da_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 578 ( t ); 579 () `tf ( 581 ( u_lg ) lp -> fe , (u_lgp-> offt , 582 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 583 ( u_lg ) gp -> ty , 584 ( u_lg ) gp -> tx -> txnid , 585 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 586 () `tf ("\tfeid: %ld\n", () gp -> feid ); 587 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 588 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 589 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 590 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 591 () `tf ("\theader: "); 592 i = 0; i < gp -> hd . size ; i++) { 593 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 594 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 596 () `tf ("\n"); 597 () `tf ("\ext: %lu\n", ( u_lg ) gp -> xt ); 598 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 599 () `tf ("\tdata: "); 600 i = 0; i < gp -> da . size ; i++) { 601 ch = (( u_t8_t *) gp -> da .da)[ i ]; 602 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 604 () `tf ("\n"); 605 () `tf ("\n"); 606 `__os_ ( v , gp ); 608 } } 615 $__db_pg__t ( v , db , lp , nud2 , nud3 ) 616 ENV * v ; 617 DBT * db ; 618 DB_LSN * lp ; 619 db_cs nud2 ; 620 * nud3 ; 622 __db_pg__gs * gp ; 623 u_t32_t i ; 624 ch ; 625 t ; 627 nud2 = DB_TXN_PRINT ; 628 nud3 = NULL ; 630 i(( t = 631 `__db_pg__ad ( v , NULL , NULL, db -> da , & gp )) != 0) 632 ( t ); 633 () `tf ( 635 ( u_lg ) lp -> fe , (u_lgp-> offt , 636 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 637 ( u_lg ) gp -> ty , 638 ( u_lg ) gp -> tx -> txnid , 639 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 640 () `tf ("\tfeid: %ld\n", () gp -> feid ); 641 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 642 () `tf ("\theader: "); 643 i = 0; i < gp -> hd . size ; i++) { 644 ch = (( u_t8_t *) gp -> hd . da )[ i ]; 645 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 647 () `tf ("\n"); 648 () `tf ("\tdata: "); 649 i = 0; i < gp -> da . size ; i++) { 650 ch = (( u_t8_t *) gp -> da .da)[ i ]; 651 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 653 () `tf ("\n"); 654 () `tf ("\n"); 655 `__os_ ( v , gp ); 657 } } 664 $__db_pg_st_t ( v , db , lp , nud2 , nud3 ) 665 ENV * v ; 666 DBT * db ; 667 DB_LSN * lp ; 668 db_cs nud2 ; 669 * nud3 ; 671 __db_pg_st_gs * gp ; 672 u_t32_t i ; 673 ch ; 674 t ; 676 nud2 = DB_TXN_PRINT ; 677 nud3 = NULL ; 679 i(( t = 680 `__db_pg_st_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 681 ( t ); 682 () `tf ( 684 ( u_lg ) lp -> fe , (u_lgp-> offt , 685 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 686 ( u_lg ) gp -> ty , 687 ( u_lg ) gp -> tx -> txnid , 688 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 689 () `tf ("\tfeid: %ld\n", () gp -> feid ); 690 () `tf ("\tma: %lu\n", ( u_lg ) gp -> ma ); 691 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 692 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 693 () `tf ("\a_: %lu\n", ( u_lg ) gp -> ϡ_ ); 694 () `tf ("\tlast_lsn: [%lu][%lu]\n", 695 ( u_lg ) gp -> ϡ_l . fe , (u_lgrgp->ϡ_l. offt ); 696 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 697 () `tf ("\tlist: "); 698 i = 0; i < gp -> li . size ; i++) { 699 ch = (( u_t8_t *) gp -> li . da )[ i ]; 700 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 702 () `tf ("\n"); 703 () `tf ("\n"); 704 `__os_ ( v , gp ); 706 } } 712 $__db__t ( v , dbp ) 713 ENV * v ; 714 DB_DISTAB * dbp ; 716 t ; 718 i(( t = `__db_add_covy_t ( v , dbp , 719 __db_addm_t , DB___db_addm )) != 0) 720 ( t ); 721 i(( t = `__db_add_covy_t ( v , dbp , 722 __db_big_t , DB___db_big )) != 0) 723 ( t ); 724 i(( t = `__db_add_covy_t ( v , dbp , 725 __db_ovf_t , DB___db_ovf )) != 0) 726 ( t ); 727 i(( t = `__db_add_covy_t ( v , dbp , 728 __db_debug_t , DB___db_debug )) != 0) 729 ( t ); 730 i(( t = `__db_add_covy_t ( v , dbp , 731 __db_no_t , DB___db_no )) != 0) 732 ( t ); 733 i(( t = `__db_add_covy_t ( v , dbp , 734 __db_pg_loc_t , DB___db_pg_loc )) != 0) 735 ( t ); 736 i(( t = `__db_add_covy_t ( v , dbp , 737 __db_pg__t , DB___db_pg_ )) != 0) 738 ( t ); 739 i(( t = `__db_add_covy_t ( v , dbp , 740 __db_cksum_t , DB___db_cksum )) != 0) 741 ( t ); 742 i(( t = `__db_add_covy_t ( v , dbp , 743 __db_pg_da_t , DB___db_pg_da )) != 0) 744 ( t ); 745 i(( t = `__db_add_covy_t ( v , dbp , 746 __db_pg__t , DB___db_pg_ )) != 0) 747 ( t ); 748 i(( t = `__db_add_covy_t ( v , dbp , 749 __db_pg_st_t , DB___db_pg_st )) != 0) 750 ( t ); 752 } } @../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 __db_s_cou __P (( DB *)); 22 __db_wock_r __P (( ENV *)); 23 __dbc_nup __P (( DBC *, DBC *, )); 24 __dbc_d_feign __P (( DBC *)); 25 __dbc_d_dskey __P (( DB *, DBC *, DBT *, DBT *, DBT *)); 26 __dbc_d_cdy __P (( DBC *)); 27 __dbc_pg_o __P (( DBC *, DBT *, DBT *, u_t32_t )); 29 #CDB_LOCKING_INIT ( v , dbc ) \ 36 i( `CDB_LOCKING ( v )) { \ 37 i(! `F_ISSET ( dbc , DBC_WRITECURSOR | DBC_WRITER )) \ 38 ( `__db_wock_r ( v )); \ 40 i( `F_ISSET ( dbc , DBC_WRITECURSOR ) && \ 41 ( t = `__lock_g ( v , \ 42 ( dbc )-> lock , DB_LOCK_UPGRADE , &(dbc)-> lock_dbt , \ 43 DB_LOCK_WRITE , &( dbc )-> mylock )) != 0) \ 44 ( t ); \ 45 } ) 46 #CDB_LOCKING_DONE ( v , dbc ) \ 48 i( `F_ISSET ( dbc , DBC_WRITECURSOR )) \ 49 () `__lock_downgde ( \ 50 v , &( dbc )-> mylock , DB_LOCK_IWRITE , 0); ) 59 $__dbc_o ( dbc ) 60 DBC * dbc ; 62 DB * dbp ; 63 DBC * d ; 64 DBC_INTERNAL * ; 65 DB_TXN * txn ; 66 ENV * v ; 67 t , t_t ; 69 dbp = dbc ->dbp; 70 v = dbp ->env; 71 = dbc -> ; 72 d = ->opd; 73 t = 0; 86 `MUTEX_LOCK ( v , dbp -> mux ); 88 i( d ! NULL ) { 89 `DB_ASSERT ( v , `F_ISSET ( d , DBC_ACTIVE )); 90 `F_CLR ( d , DBC_ACTIVE ); 91 `TAILQ_REMOVE (& dbp -> aive_queue , d , lks ); 93 `DB_ASSERT ( v , `F_ISSET ( dbc , DBC_ACTIVE )); 94 `F_CLR ( dbc , DBC_ACTIVE ); 95 `TAILQ_REMOVE (& dbp -> aive_queue , dbc , lks ); 97 `MUTEX_UNLOCK ( v , dbp -> mux ); 100 i(( t_t = 101 dbc -> `am_o (dbc, PGNO_INVALID , NULL )!0 && t == 0) 102 t = t_t ; 108 i( `CDB_LOCKING ( v )) { 115 i(( t_t = `__LPUT ( dbc , dbc-> mylock )!0 && t == 0) 116 t = t_t ; 119 `memt (& dbc -> mylock , 0, (dbc->mylock)); 120 i( d ! NULL ) 121 `memt (& d -> mylock , 0, (opd->mylock)); 124 i(( txn = dbc ->txn! NULL ) 125 txn -> curss --; 128 `MUTEX_LOCK ( v , dbp -> mux ); 129 i( d ! NULL ) { 130 i( txn ! NULL ) 131 txn -> curss --; 132 `TAILQ_INSERT_TAIL (& dbp -> _queue , d , lks ); 133 d = NULL ; 135 `TAILQ_INSERT_TAIL (& dbp -> _queue , dbc , lks ); 136 `MUTEX_UNLOCK ( v , dbp -> mux ); 138 i( txn ! NULL && `F_ISSET xn, TXN_PRIVATE &&xn-> curss == 0 && 139 ( t_t = `__txn_comm ( txn , 0)!0 && t == 0) 140 t = t_t ; 142 ( t ); 143 } } 152 $__dbc_deroy ( dbc ) 153 DBC * dbc ; 155 DB * dbp ; 156 ENV * v ; 157 t , t_t ; 159 dbp = dbc ->dbp; 160 v = dbp ->env; 163 `MUTEX_LOCK ( v , dbp -> mux ); 164 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 165 `MUTEX_UNLOCK ( v , dbp -> mux ); 168 i( dbc -> my_rskey . da ! NULL ) 169 `__os_ ( v , dbc -> my_rskey . da ); 170 i( dbc -> my_rkey . da ! NULL ) 171 `__os_ ( v , dbc -> my_rkey . da ); 172 i( dbc -> my_rda . da ! NULL ) 173 `__os_ ( v , dbc -> my_rda . da ); 176 t = dbc -> am_deroy = NULL ? 0 : dbc-> `am_deroy (dbc); 181 i( `LOCKING_ON ( v ) && 182 `F_ISSET ( dbc , DBC_OWN_LID ) && 183 ( t_t = `__lock_id_ ( v , dbc -> ef )!0 && t == 0) 184 t = t_t ; 186 `__os_ ( v , dbc ); 188 ( t ); 189 } } 198 $__dbc_cou ( dbc , ) 199 DBC * dbc ; 200 db_o_t * ; 202 ENV * v ; 203 t ; 205 v = dbc ->env; 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 ( v , "__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 ENV * v ; 251 t , t_t ; 253 dbp = dbc ->dbp; 254 v = dbp ->env; 264 `CDB_LOCKING_INIT ( v , dbc ); 274 i( ags ! DB_UPDATE_SECONDARY && `F_ISSET ( dbp , DB_AM_SECONDARY )) { 275 t = `__dbc_d_cdy ( dbc ); 276 de ; 284 i( `LIST_FIRST (& dbp -> f_ims ! NULL && 285 ( t = `__dbc_d_feign ( dbc )) != 0) 286 de ; 292 i( `LIST_FIRST (& dbp -> s_cds ! NULL && 293 ( t = `__dbc_d_imy ( dbc )) != 0) 294 de ; 302 d = dbc -> ->opd; 303 i( d = NULL ) 304 t = dbc -> `am_d (dbc); 306 i(( t = dbc -> `am_wrock (dbc)) == 0) 307 t = d -> `am_d (opd); 316 i( `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED ) && 317 dbc -> -> lock_mode = DB_LOCK_WRITE ) { 318 i(( t_t = 319 `__TLPUT ( dbc , dbc-> -> lock )!0 && t == 0) 320 t = t_t ; 321 i( t_t == 0) 322 dbc -> -> lock_mode = DB_LOCK_WWRITE ; 325 de : `CDB_LOCKING_DONE ( v , dbc ); 327 ( t ); 328 } } 337 $__dbc_dup ( dbc_ig , db , ags ) 338 DBC * dbc_ig ; 339 DBC ** db ; 340 u_t32_t ags ; 342 DBC * dbc_n , * dbc_nd ; 343 t ; 345 dbc_n = dbc_nd = NULL ; 348 i(( t = `__dbc_idup ( dbc_ig , & dbc_n , ags )) != 0) 349 r ; 350 * db = dbc_n ; 356 i( dbc_ig -> -> d ! NULL ) { 357 i(( t = 358 `__dbc_idup ( dbc_ig -> -> d , & dbc_nd , ags )) != 0) 359 r ; 360 dbc_n -> -> d = dbc_nd ; 364 r : i( dbc_n ! NULL ) 365 () `__dbc_o ( dbc_n ); 366 i( dbc_nd ! NULL ) 367 () `__dbc_o ( dbc_nd ); 369 ( t ); 370 } } 379 $__dbc_idup ( dbc_ig , db , ags ) 380 DBC * dbc_ig , ** db ; 381 u_t32_t ags ; 383 DB * dbp ; 384 DBC * dbc_n ; 385 DBC_INTERNAL * t_n , * t_ig ; 386 ENV * v ; 387 t ; 389 dbp = dbc_ig ->dbp; 390 dbc_n = * db ; 391 v = dbp ->env; 393 i(( t = `__db_curs_t ( dbp , dbc_ig -> thad_fo , 394 dbc_ig -> txn , dbc_ig-> dbty , dbc_ig-> -> ro , 395 `F_ISSET ( dbc_ig , DBC_OPD | DBC_DUPLICATE , 396 dbc_ig -> lock , & dbc_n )) != 0) 397 ( t ); 400 i( ags = DB_POSITION ) { 401 t_n = dbc_n -> ; 402 t_ig = dbc_ig -> ; 404 dbc_n -> ags | dbc_ig ->ag& ~ DBC_OWN_LID ; 406 t_n -> dx = t_ig ->indx; 407 t_n -> pgno = t_ig ->pgno; 408 t_n -> ro = t_ig ->root; 409 t_n -> lock_mode = t_ig ->lock_mode; 411 dbc_ig -> dbty ) { 412 DB_QUEUE : 413 i(( t = `__qamc_dup ( dbc_ig , dbc_n )) != 0) 414 r ; 416 DB_BTREE : 417 DB_RECNO : 418 i(( t = `__bamc_dup ( dbc_ig , dbc_n )) != 0) 419 r ; 421 DB_HASH : 422 i(( t = `__hamc_dup ( dbc_ig , dbc_n )) != 0) 423 r ; 425 DB_UNKNOWN : 427 t = `__db_unknown_ty ( v , 428 "__dbc_idup", dbc_ig -> dbty ); 429 r ; 434 `F_SET ( dbc_n , `F_ISSET ( dbc_ig , 435 DBC_READ_COMMITTED | DBC_READ_UNCOMMITTED | DBC_WRITECURSOR )); 441 i( `CDB_LOCKING ( v && ! `F_ISSET ( dbc_n , DBC_OPD ) && 442 ( t = `__lock_g ( v , dbc_n -> lock , 0, 443 & dbc_n -> lock_dbt , `F_ISSET ( dbc_ig , DBC_WRITECURSOR ) ? 444 DB_LOCK_IWRITE : DB_LOCK_READ , & dbc_n -> mylock )) != 0) 445 r ; 447 dbc_n -> iܙy = dbc_ig ->priority; 448 * db = dbc_n ; 451 r : () `__dbc_o ( dbc_n ); 452 ( t ); 453 } } 462 $__dbc_wd ( dbc_ , ro , dd , db ) 463 DBC * dbc_ ; 464 db_pgno_t ro ; 465 DBC * dd ; 466 DBC ** db ; 468 DB * dbp ; 469 DBC * d ; 470 DBTYPE dbty ; 471 t ; 473 dbp = dbc_ ->dbp; 474 dbty = ( dbp -> dup_com = NULL ? DB_RECNO : DB_BTREE ; 483 * db = dd ; 485 i(( t = `__db_curs_t ( dbp , dbc_ -> thad_fo , 486 dbc_ -> txn , 487 dbty , ro , DBC_OPD , dbc_ -> lock , & d )) != 0) 488 ( t ); 490 d -> iܙy = dbc_ ->priority; 491 * db = d ; 505 i( dd ! NULL && ( t = `__dbc_o (oldopd)) != 0) 506 ( t ); 509 } } 518 $__dbc_g ( dbc_g , key , da , ags ) 519 DBC * dbc_g ; 520 DBT * key , * da ; 521 u_t32_t ags ; 523 DB * dbp ; 524 DBC * dbc , * dbc_n , * d ; 525 DBC_INTERNAL * , * _n ; 526 DB_MPOOLFILE * mpf ; 527 ENV * v ; 528 db_pgno_t pgno ; 529 db_dx_t dx_off ; 530 u_t32_t mui , ig_un , tmp_ags , tmp_ad_uncommd , tmp_rmw ; 531 u_t8_t ty ; 532 key_sml , t , t_t ; 534 `COMPQUIET ( ig_un , 0); 536 key_sml = 0; 547 dbp = dbc_g ->dbp; 548 v = dbp ->env; 549 mpf = dbp ->mpf; 550 dbc_n = NULL ; 551 d = NULL ; 554 tmp_rmw = `LF_ISSET ( DB_RMW ); 555 `LF_CLR ( DB_RMW ); 557 tmp_ad_uncommd = 558 `LF_ISSET ( DB_READ_UNCOMMITTED ) && 559 ! `F_ISSET ( dbc_g , DBC_READ_UNCOMMITTED ); 560 `LF_CLR ( DB_READ_UNCOMMITTED ); 562 mui = `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 563 `LF_CLR ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 569 i( ags = DB_GET_RECNO ) { 570 i( tmp_rmw ) 571 `F_SET ( dbc_g , DBC_RMW ); 572 i( tmp_ad_uncommd ) 573 `F_SET ( dbc_g , DBC_READ_UNCOMMITTED ); 574 t = `__bamc_rg ( dbc_g , da ); 575 i( tmp_rmw ) 576 `F_CLR ( dbc_g , DBC_RMW ); 577 i( tmp_ad_uncommd ) 578 `F_CLR ( dbc_g , DBC_READ_UNCOMMITTED ); 579 ( t ); 582 i( ags = DB_CONSUME || fg= DB_CONSUME_WAIT ) 583 `CDB_LOCKING_INIT ( v , dbc_g ); 586 i(! `DB_RETURNS_A_KEY ( dbp , ags )) 587 `F_SET ( key , DB_DBT_ISSET ); 588 i( ags = DB_GET_BOTH && 589 ( dbp -> dup_com = NULL || dbp->dup_com = __bam_defcmp )) 590 `F_SET ( da , DB_DBT_ISSET ); 603 = dbc_g -> ; 604 i( -> d ! NULL && 605 ( ags = DB_CURRENT || fg= DB_GET_BOTHC || 606 ags = DB_NEXT || fg= DB_NEXT_DUP || 607 ags = DB_PREV || fg= DB_PREV_DUP )) { 608 i( tmp_rmw && ( t = dbc_g -> `am_wrock (dbc_arg)) != 0) 609 r ; 610 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 611 d = ->opd; 612 i(( t = `__dbc_idup ( -> d , &d, DB_POSITION )) != 0) 613 r ; 615 t = d -> `am_g (d, key , da , ags , NULL )) { 617 de ; 618 DB_NOTFOUND : 624 i( ags = DB_NEXT || fg= DB_PREV ) { 625 i(( t = `__dbc_o ( d )) != 0) 626 r ; 627 d = NULL ; 628 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 629 -> d = NULL ; 632 r ; 634 r ; 636 } i( -> d ! NULL && `F_ISSET ( dbc_g , DBC_TRANSIENT )) { 637 i(( t = `__dbc_o ( -> d )) != 0) 638 r ; 639 -> d = NULL ; 646 ags ) { 647 DB_CURRENT : 648 DB_GET_BOTHC : 649 DB_NEXT : 650 DB_NEXT_DUP : 651 DB_NEXT_NODUP : 652 DB_PREV : 653 DB_PREV_DUP : 654 DB_PREV_NODUP : 655 tmp_ags = DB_POSITION ; 658 tmp_ags = 0; 662 i( tmp_ad_uncommd ) 663 `F_SET ( dbc_g , DBC_READ_UNCOMMITTED ); 669 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 670 dbc_n = dbc_g ; 672 t = `__dbc_idup ( dbc_g , & dbc_n , tmp_ags ); 673 i( tmp_ad_uncommd ) 674 `F_CLR ( dbc_g , DBC_READ_UNCOMMITTED ); 676 i( t != 0) 677 r ; 678 `COPY_RET_MEM ( dbc_g , dbc_n ); 681 i( tmp_rmw ) 682 `F_SET ( dbc_n , DBC_RMW ); 684 mui ) { 685 DB_MULTIPLE : 686 `F_SET ( dbc_n , DBC_MULTIPLE ); 688 DB_MULTIPLE_KEY : 689 `F_SET ( dbc_n , DBC_MULTIPLE_KEY ); 691 DB_MULTIPLE | DB_MULTIPLE_KEY : 692 `F_SET ( dbc_n , DBC_MULTIPLE | DBC_MULTIPLE_KEY ); 699 y : pgno = PGNO_INVALID ; 700 t = dbc_n -> `am_g (dbc_n, key , da , ags , & pgno ); 701 i( tmp_rmw ) 702 `F_CLR ( dbc_n , DBC_RMW ); 703 i( tmp_ad_uncommd ) 704 `F_CLR ( dbc_g , DBC_READ_UNCOMMITTED ); 705 `F_CLR ( dbc_n , DBC_MULTIPLE | DBC_MULTIPLE_KEY ); 706 i( t != 0) 707 r ; 709 _n = dbc_n -> ; 715 i( pgno ! PGNO_INVALID ) { 716 i(( t = `__dbc_wd ( dbc_g , 717 pgno , _n -> d , &cp_n->opd)) != 0) 718 r ; 720 ags ) { 721 DB_FIRST : 722 DB_NEXT : 723 DB_NEXT_NODUP : 724 DB_SET : 725 DB_SET_RECNO : 726 DB_SET_RANGE : 727 tmp_ags = DB_FIRST ; 729 DB_LAST : 730 DB_PREV : 731 DB_PREV_NODUP : 732 tmp_ags = DB_LAST ; 734 DB_GET_BOTH : 735 DB_GET_BOTHC : 736 DB_GET_BOTH_RANGE : 737 tmp_ags = ags ; 740 t = `__db_unknown_ag ( v , "__dbc_g", ags ); 741 r ; 743 t = _n -> d -> `am_g (_n->d, key , da , tmp_ags , NULL ); 749 t ) { 752 DB_NOTFOUND : 758 i( ags = DB_NEXT || fg= DB_PREV ) { 759 i(( t = `__dbc_o ( _n -> d )) != 0) 760 r ; 761 _n -> d = NULL ; 762 y ; 764 r ; 766 r ; 770 de : 784 _n = dbc_n = NULL ? dbc_g -> : dbc_n->internal; 785 i(! `F_ISSET ( key , DB_DBT_ISSET )) { 786 i( _n -> ge = NULL && ( t = `__memp_fg ( mpf , &_n-> pgno , 787 dbc_g -> thad_fo , dbc_g-> txn , 0, & _n -> ge )) != 0) 788 r ; 790 i(( t = `__db_t ( dbp , dbc_g -> thad_fo , 791 dbc_g -> txn , _n -> ge , cp_n-> dx , key , 792 & dbc_g -> rkey -> da , &dbc_g->rkey-> un )) != 0) { 800 i( t = DB_BUFFER_SMALL && 801 `F_ISSET ( da , DB_DBT_USERMEM )) { 802 key_sml = 1; 803 ig_un = da -> un ; 804 da -> un = 0; 806 r ; 809 i( mui != 0) { 814 i( dbc_n = NULL ) { 821 i((!( mui & DB_MULTIPLE_KEY ) && 822 dbc_g -> -> d = NULL ) || 823 `F_ISSET ( dbc_g , DBC_TRANSIENT )) 824 dbc_n = dbc_g ; 826 i(( t = `__dbc_idup ( dbc_g , 827 & dbc_n , DB_POSITION )) != 0) 828 r ; 829 i(( t = dbc_n -> `am_g (dbc_n, 830 key , da , DB_CURRENT , & pgno )) != 0) 831 r ; 833 _n = dbc_n -> ; 841 i( d ! NULL ) { 842 `DB_ASSERT ( v , _n -> d = NULL ); 843 _n -> d = opd; 844 d = NULL ; 855 da -> size = da-> un ; 856 t = dbc_n -> `am_bulk (dbc_n, da , ags | mui ); 857 } i(! `F_ISSET ( da , DB_DBT_ISSET )) { 858 dbc = d ! NULL ? opd : _n ->d !NULL ? cp_n->d : dbc_n ; 859 = dbc -> ; 860 i( -> ge = NULL && 861 ( t = `__memp_fg ( mpf , & -> pgno , 862 dbc_g -> thad_fo , dbc -> txn , 0, & -> ge )) != 0) 863 r ; 865 ty = `TYPE ( -> ge ); 866 dx_off = (( ty = P_LBTREE || 867 ty = P_HASH ||y = P_HASH_UNSORTED ? O_INDX : 0); 868 t = `__db_t ( dbp , 869 dbc -> thad_fo , dbc-> txn , -> ge , cp-> dx + dx_off , 870 da , & dbc_g -> rda ->da, &dbc_g->rda-> un ); 873 r : 874 `F_CLR ( key , DB_DBT_ISSET ); 875 `F_CLR ( da , DB_DBT_ISSET ); 878 i( d ! NULL ) { 886 i( `F_ISSET ( dbc_g -> dbp , DB_AM_READ_UNCOMMITTED ) && 887 `F_ISSET (( BTREE_CURSOR *) 888 dbc_g -> -> d ->, C_DELETED )) 889 i(( t_t = 890 dbc_g -> `am_wrock (dbc_g)!0 && t == 0) 891 t = t_t ; 892 i(( t_t = `__dbc_nup ( 893 dbc_g -> -> d , opd, t )) != 0 &&et == 0) 894 t = t_t ; 898 i( key_sml ) { 899 da -> un = ig_un ; 900 i( t == 0) 901 t = DB_BUFFER_SMALL ; 904 i(( t_t = `__dbc_nup ( dbc_g , dbc_n , t )) != 0 && 905 ( t =0 || = DB_BUFFER_SMALL )) 906 t = t_t ; 908 i( ags = DB_CONSUME || fg= DB_CONSUME_WAIT ) 909 `CDB_LOCKING_DONE ( v , dbc_g ); 910 ( t ); 911 } } 920 $__dbc_put ( dbc_g , key , da , ags ) 921 DBC * dbc_g ; 922 DBT * key , * da ; 923 u_t32_t ags ; 925 DB * dbp , * sdbp ; 926 DBC * dbc_n , * fdbc , * dd , * d , * sdbc , * pdbc ; 927 DBT * l_skeys , * skeyp , * tskeyp ; 928 DBT fda , dda , dpkey , wda , pkey , mkey , mpskey ; 929 ENV * v ; 930 db_pgno_t pgno ; 931 cmp , have_dc , itl , nod , _d , t , s_cou , t_t ; 932 u_t32_t _n , nskey , rmw , size , tmp_ags ; 943 dbp = dbc_g ->dbp; 944 v = dbp ->env; 945 sdbp = NULL ; 946 fdbc = pdbc = dbc_n = NULL ; 947 l_skeys = NULL ; 948 `memt (& wda , 0, ( DBT )); 949 t = s_cou = 0; 956 `memt (& dda , 0, ( DBT )); 957 `F_SET (& dda , DB_DBT_MALLOC ); 965 i( ags = DB_UPDATE_SECONDARY ) 966 ags = DB_KEYLAST ; 968 `CDB_LOCKING_INIT ( v , dbc_g ); 975 i( `LIST_FIRST (& dbp -> s_cds = NULL ) 976 sk_s_upde ; 1035 `memt (& pkey , 0, ( DBT )); 1036 s_cou = `__db_s_cou ( dbp ); 1037 i(( t = `__os_oc ( 1038 v , ( u_t ) s_cou , ( DBT ), & l_skeys )) != 0) 1039 r ; 1040 have_dc = nod = 0; 1048 `DB_ASSERT ( v , ags = DB_CURRENT || fg= DB_KEYFIRST || 1049 ags = DB_KEYLAST || fg= DB_NOOVERWRITE ); 1055 rmw = `STD_LOCKING ( dbc_g ? DB_RMW : 0; 1057 i( ags = DB_CURRENT ) { 1070 t = `__dbc_g ( dbc_g , & pkey , & dda , rmw | DB_CURRENT ); 1071 i( t = DB_KEYEMPTY ) 1072 t = DB_NOTFOUND ; 1073 i( t != 0) 1074 r ; 1076 have_dc = 1; 1079 pkey . da = key ->data; 1080 pkey . size = key ->size; 1086 i( `F_ISSET ( da , DB_DBT_PARTIAL )) { 1087 i(! have_dc && ! nod ) { 1093 i(( t = `__dbc_idup ( dbc_g , & pdbc , 0)) != 0) 1094 r ; 1097 `DB_ASSERT ( v , ags ! DB_CURRENT ); 1099 t = `__dbc_g ( pdbc , & pkey , & dda , rmw | DB_SET ); 1100 i( t = DB_KEYEMPTY || = DB_NOTFOUND ) { 1101 nod = 1; 1102 t = 0; 1104 i(( t_t = `__dbc_o ( pdbc )) != 0) 1105 t = t_t ; 1106 i( t != 0) 1107 r ; 1109 have_dc = 1; 1118 i(( t = 1119 `__db_budl ( dbp , & dda , da , & wda )) != 0) 1120 r ; 1121 itl = 1; 1123 itl = 0; 1131 i(( dbp -> ty = DB_RECNO && `F_ISSET (dbp, DB_AM_FIXEDLEN )) || 1132 ( dbp -> ty = DB_QUEUE )) { 1133 i( dbp -> ty = DB_QUEUE ) { 1134 _n = (( QUEUE *) dbp -> q_ )->re_len; 1135 _d = (( QUEUE *) dbp -> q_ )->re_pad; 1137 _n = (( BTREE *) dbp -> bt_ )->re_len; 1138 _d = (( BTREE *) dbp -> bt_ )->re_pad; 1141 size = itl ? wda .siz: da ->size; 1142 i( size > _n ) { 1143 t = `__db_c_toobig ( v , size , _n ); 1144 r ; 1145 } i( size < _n ) { 1157 i(( t = 1158 `__os_loc ( v , _n , & wda . da )) != 0) 1159 r ; 1160 i(! itl ) 1161 `memy ( wda . da , da->da, size ); 1162 `memt (( u_t8_t *) wda . da + size , _d , 1163 _n - size ); 1164 wda . size = _n ; 1165 itl = 1; 1175 t = `__db_s_f ( dbp , & sdbp ), skeyp = l_skeys ; 1176 sdbp ! NULL && t == 0; 1177 t = `__db_s_xt (& sdbp , dbc_g -> txn ), ++ skeyp ) { 1178 `DB_ASSERT ( v , skeyp - l_skeys < s_cou ); 1184 i( have_dc && ! nod && 1185 `FLD_ISSET ( sdbp -> s_assoc_ags , DB_ASSOC_IMMUTABLE_KEY )) 1192 i(( t = sdbp -> `s_back (sdbp, 1193 & pkey , itl ? & wda : da , skeyp )) != 0) { 1195 i( t = DB_DONOTINDEX ) { 1196 `F_SET ( skeyp , DB_DBT_MULTIPLE ); 1197 skeyp -> size = 0; 1198 t = 0; 1200 r ; 1203 i( sdbp -> s_feign ! NULL && 1204 ( t = `__db_curs_t ( sdbp -> s_feign , 1205 dbc_g -> thad_fo , dbc_g-> txn , sdbp -> s_feign -> ty , 1206 PGNO_INVALID , 0, dbc_g -> lock , & fdbc )) != 0) 1207 r ; 1220 i( `F_ISSET ( skeyp , DB_DBT_MULTIPLE )) { 1221 #ifde DIAGNOSTIC 1222 `__db_check_skeyt ( sdbp , skeyp ); 1224 tskeyp = ( DBT *) skeyp -> da , nskey = skeyp-> size ; 1225 nskey > 0;skey--, tskeyp ++) { 1226 i( fdbc ! NULL ) { 1227 `memt (& fda , 0, ( DBT )); 1228 `F_SET (& fda , 1229 DB_DBT_PARTIAL | DB_DBT_USERMEM ); 1230 i(( t = `__dbc_g ( 1231 fdbc , tskeyp , & fda , 1232 DB_SET | rmw )= DB_NOTFOUND || 1233 t = DB_KEYEMPTY ) { 1234 t = DB_FOREIGN_CONFLICT ; 1238 `F_SET ( tskeyp , DB_DBT_ISSET ); 1240 tskeyp = ( DBT *) skeyp -> da ; 1241 nskey = skeyp -> size ; 1243 i( fdbc ! NULL ) { 1244 `memt (& fda , 0, ( DBT )); 1245 `F_SET (& fda , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 1246 i(( t = `__dbc_g ( fdbc , skeyp , & fda , 1247 DB_SET | rmw )= DB_NOTFOUND || 1248 t = DB_KEYEMPTY ) 1249 t = DB_FOREIGN_CONFLICT ; 1251 `F_SET ( skeyp , DB_DBT_ISSET ); 1252 tskeyp = skeyp ; 1253 nskey = 1; 1255 i( fdbc ! NULL && ( t_t = `__dbc_o (fdbc)) != 0 && 1256 t == 0) 1257 t = t_t ; 1258 fdbc = NULL ; 1259 i( t != 0) 1260 r ; 1267 i( have_dc ) { 1268 i(( t = `__dbc_d_dskey ( sdbp , dbc_g , 1269 skeyp , & pkey , & dda )= DB_KEYEXIST ) 1271 i( t != 0) 1272 r ; 1274 i( nskey == 0) 1285 i(( t = `__db_curs_t ( sdbp , dbc_g -> thad_fo , 1286 dbc_g -> txn , sdbp -> ty , 1287 PGNO_INVALID , 0, dbc_g -> lock , & sdbc )) != 0) 1288 r ; 1299 i( `CDB_LOCKING ( v )) { 1300 `DB_ASSERT ( v , sdbc -> mylock . off = LOCK_INVALID ); 1301 `F_SET ( sdbc , DBC_WRITER ); 1310 `SWAP_IF_NEEDED ( sdbp , & pkey ); 1312 ; nskey > 0 && t =0;skey--, tskeyp ++) { 1314 i(! `F_ISSET ( tskeyp , DB_DBT_ISSET )) 1349 i(! `F_ISSET ( sdbp , DB_AM_DUP )) { 1351 `memt (& dpkey , 0, ( DBT )); 1352 `F_SET (& dpkey , DB_DBT_MALLOC ); 1353 t = `__dbc_g ( sdbc , 1354 tskeyp , & dpkey , rmw | DB_SET ); 1355 i( t == 0) { 1356 cmp = `__bam_defcmp ( sdbp , 1357 & dpkey , & pkey ); 1358 `__os_u ( v , dpkey . da ); 1359 i( cmp != 0) { 1360 `__db_rx ( v , "%s%s", 1363 t = EINVAL ; 1366 i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 1368 } i(! `F_ISSET ( sdbp , DB_AM_DUPSORT )) { 1370 `DB_INIT_DBT ( mpskey , 1371 tskeyp -> da ,skeyp-> size ); 1372 `DB_INIT_DBT ( mkey , 1373 pkey . da ,key. size ); 1374 t = `__dbc_g ( sdbc , & mpskey , & mkey , 1375 rmw | DB_GET_BOTH ); 1376 i( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) 1380 t = `__dbc_put ( sdbc , tskeyp , & pkey , 1381 DB_UPDATE_SECONDARY ); 1388 i( t = DB_KEYEXIST ) 1389 t = 0; 1393 `SWAP_IF_NEEDED ( sdbp , & pkey ); 1395 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 1396 t = t_t ; 1398 i( t != 0) 1399 r ; 1406 `F_SET ( skeyp , DB_DBT_ISSET ); 1408 i( t != 0) 1409 r ; 1415 i( have_dc ) 1416 sk_s_upde ; 1423 i(( t = `__dbc_idup ( dbc_g , & pdbc , 0)) != 0) 1424 r ; 1425 `DB_ASSERT ( v , ags ! DB_CURRENT ); 1426 pkey . da = key ->data; 1427 pkey . size = key ->size; 1428 t = `__dbc_g ( pdbc , & pkey , & dda , rmw | DB_SET ); 1429 i( t = DB_KEYEMPTY || = DB_NOTFOUND ) { 1430 nod = 1; 1431 t = 0; 1433 i(( t_t = `__dbc_o ( pdbc )!0 && t == 0) 1434 t = t_t ; 1435 i( t != 0) 1436 r ; 1442 i( nod ) 1443 sk_s_upde ; 1445 t = `__db_s_f ( dbp , & sdbp ), skeyp = l_skeys ; 1446 sdbp ! NULL && t == 0; 1447 t = `__db_s_xt (& sdbp , dbc_g -> txn ), skeyp ++) { 1448 `DB_ASSERT ( v , skeyp - l_skeys < s_cou ); 1454 i( `FLD_ISSET ( sdbp -> s_assoc_ags , DB_ASSOC_IMMUTABLE_KEY )) 1457 i(( t = `__dbc_d_dskey ( sdbp , dbc_g , 1458 skeyp , & pkey , & dda )!0 && t ! DB_KEYEXIST ) 1459 r ; 1461 i( t != 0) 1462 r ; 1466 sk_s_upde : 1477 i( dbc_g -> -> d ! NULL && 1478 ( ags = DB_AFTER || fg= DB_BEFORE || fg= DB_CURRENT )) { 1486 i( dbc_g -> dbty = DB_HASH && `F_ISSET ( 1487 (( BTREE_CURSOR *)( dbc_g -> -> d ->internal)), 1488 C_DELETED )) { 1489 t = DB_NOTFOUND ; 1490 r ; 1493 i(( t = dbc_g -> `am_wrock (dbc_arg)) != 0 || 1494 ( t = `__dbc_dup ( dbc_g , & dbc_n , DB_POSITION )) != 0) 1495 r ; 1496 d = dbc_n -> ->opd; 1497 i(( t = d -> `am_put ( 1498 d , key , da , ags , NULL )) != 0) 1499 r ; 1500 de ; 1507 tmp_ags = ags = DB_AFTER || 1508 ags = DB_BEFORE || fg= DB_CURRENT ? DB_POSITION : 0; 1514 i( `F_ISSET ( dbc_g , DBC_TRANSIENT )) 1515 dbc_n = dbc_g ; 1516 i(( t = `__dbc_idup ( dbc_g , & dbc_n , tmp_ags )) != 0) 1517 r ; 1519 pgno = PGNO_INVALID ; 1520 i(( t = dbc_n -> `am_put (dbc_n, key , da , ags , & pgno )) != 0) 1521 r ; 1527 i( pgno ! PGNO_INVALID ) { 1528 dd = dbc_n -> -> d ; 1529 i(( t = `__dbc_wd ( dbc_g , pgno , dd , & d )) != 0) { 1530 dbc_n -> -> d = opd; 1531 r ; 1534 dbc_n -> -> d = opd; 1536 i( ags = DB_NOOVERWRITE ) 1537 ags = DB_KEYLAST ; 1538 i(( t = d -> `am_put ( 1539 d , key , da , ags , NULL )) != 0) 1540 r ; 1543 de : 1544 r : 1545 i(( t_t = `__dbc_nup ( dbc_g , dbc_n , t )) != 0 &&et == 0) 1546 t = t_t ; 1549 i( wda . da ! NULL ) 1550 `__os_ ( v , wda . da ); 1551 i( dda . da ! NULL ) 1552 `__os_u ( v , dda . da ); 1554 `CDB_LOCKING_DONE ( v , dbc_g ); 1556 i( sdbp ! NULL && 1557 ( t_t = `__db_s_de ( sdbp , dbc_g -> txn )!0 && t == 0) 1558 t = t_t ; 1560 skeyp = l_skeys ; skey-_skey< s_cou ; skeyp++) { 1561 i( `F_ISSET ( skeyp , DB_DBT_MULTIPLE )) { 1562 nskey = skeyp -> size , tskeyp = ( DBT *)skeyp-> da ; 1563 nskey > 0; 1564 nskey --, tskeyp ++) 1565 `FREE_IF_NEEDED ( v , tskeyp ); 1567 `FREE_IF_NEEDED ( v , skeyp ); 1569 i( l_skeys ! NULL ) 1570 `__os_ ( v , l_skeys ); 1572 ( t ); 1573 } } 1581 $__dbc_d_dskey ( sdbp , dbc_g , skey , pkey , dda ) 1582 DB * sdbp ; 1583 DBC * dbc_g ; 1584 DBT * skey , * pkey , * dda ; 1586 DB * dbp ; 1587 DBC * sdbc ; 1588 DBT * tdskeyp , * tskeyp ; 1589 DBT dskey , mkey , mpskey ; 1590 ENV * v ; 1591 t , t_t ; 1592 u_t32_t i , ndskey , nme , nskey , rmw ; 1594 sdbc = NULL ; 1595 dbp = sdbp -> s_imy ; 1596 v = dbp ->env; 1597 nme = 0; 1598 rmw = `STD_LOCKING ( dbc_g ? DB_RMW : 0; 1603 `memt (& dskey , 0, ( DBT )); 1604 i(( t = sdbp -> `s_back (sdbp, pkey , dda , & dskey )) != 0) { 1605 i( t = DB_DONOTINDEX || 1606 ( `F_ISSET (& dskey , DB_DBT_MULTIPLE && oldskey. size == 0)) 1608 t = 0; 1609 ( t ); 1612 i( `F_ISSET (& dskey , DB_DBT_MULTIPLE )) { 1613 #ifde DIAGNOSTIC 1614 `__db_check_skeyt ( sdbp , & dskey ); 1616 tdskeyp = ( DBT *) dskey . da ; 1617 ndskey = dskey . size ; 1619 tdskeyp = & dskey ; 1620 ndskey = 1; 1623 i( `F_ISSET ( skey , DB_DBT_MULTIPLE )) { 1624 nskey = skey -> size ; 1625 skey = ( DBT *)skey-> da ; 1627 nskey = `F_ISSET ( skey , DB_DBT_ISSET ) ? 1 : 0; 1629 ; ndskey > 0 && t =0;dskey--, tdskeyp ++) { 1635 i = 0, tskeyp = skey ; i < nskey ; i++,skeyp++) 1636 i((( BTREE *) sdbp -> bt_ )-> `bt_com (sdbp, 1637 tdskeyp , tskeyp ) == 0) { 1638 nme ++; 1639 `F_CLR ( tskeyp , DB_DBT_ISSET ); 1643 i( i < nskey ) { 1644 `FREE_IF_NEEDED ( v , tdskeyp ); 1648 i( sdbc = NULL ) { 1649 i(( t = `__db_curs_t ( sdbp , 1650 dbc_g -> thad_fo , dbc_g-> txn , sdbp -> ty , 1651 PGNO_INVALID , 0, dbc_g -> lock , & sdbc )) != 0) 1652 r ; 1653 i( `CDB_LOCKING ( v )) { 1654 `DB_ASSERT ( v , 1655 sdbc -> mylock . off = LOCK_INVALID ); 1656 `F_SET ( sdbc , DBC_WRITER ); 1664 `SWAP_IF_NEEDED ( sdbp , pkey ); 1665 `DB_INIT_DBT ( mkey , pkey -> da ,key-> size ); 1666 `DB_INIT_DBT ( mpskey , tdskeyp -> da ,dskeyp-> size ); 1667 i(( t = `__dbc_g ( sdbc , 1668 & mpskey , & mkey , rmw | DB_GET_BOTH )) == 0) 1669 t = `__dbc_d ( sdbc , DB_UPDATE_SECONDARY ); 1670 i( t = DB_NOTFOUND ) 1671 t = `__db_cdy_cru ( dbp ); 1672 `SWAP_IF_NEEDED ( sdbp , pkey ); 1673 `FREE_IF_NEEDED ( v , tdskeyp ); 1676 r : ; ndskey > 0;dskey--, tdskeyp ++) 1677 `FREE_IF_NEEDED ( v , tdskeyp ); 1678 `FREE_IF_NEEDED ( v , & dskey ); 1679 i( sdbc ! NULL && ( t_t = `__dbc_o (sdbc)!0 && t == 0) 1680 t = t_t ; 1681 i( t =0 && nme = nskey ) 1682 ( DB_KEYEXIST ); 1683 ( t ); 1684 } } 1692 $__db_du ( dbp , ags ) 1693 DB * dbp ; 1694 u_t32_t ags ; 1709 i( ags ! DB_NODUPDATA && ! `F_ISSET ( dbp , DB_AM_SECONDARY )) 1710 `__db_rx ( dbp -> v , 1712 ( DB_KEYEXIST ); 1713 } } 1720 $__dbc_nup ( dbc , dbc_n , ed ) 1721 DBC * dbc , * dbc_n ; 1722 ed ; 1724 DB * dbp ; 1725 DBC * d ; 1726 DBC_INTERNAL * ; 1727 DB_MPOOLFILE * mpf ; 1728 t , t_t ; 1730 dbp = dbc ->dbp; 1731 mpf = dbp ->mpf; 1732 = dbc ->internal; 1733 t = 0; 1736 i( -> ge ! NULL ) { 1737 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 1738 -> ge , dbc -> iܙy )!0 && t == 0) 1739 t = t_t ; 1740 -> ge = NULL ; 1742 d = ->opd; 1743 i( d ! NULL && opd-> -> ge != NULL) { 1744 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 1745 d -> -> ge , dbc -> iܙy )!0 && t == 0) 1746 t = t_t ; 1747 d -> -> ge = NULL ; 1764 i( dbc_n = NULL || dbc == dbc_n) 1765 ( t ); 1767 i( dbc_n -> -> ge ! NULL ) { 1768 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 1769 dbc_n -> -> ge , dbc -> iܙy )!0 && t == 0) 1770 t = t_t ; 1771 dbc_n -> -> ge = NULL ; 1773 d = dbc_n -> ->opd; 1774 i( d ! NULL && opd-> -> ge != NULL) { 1775 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 1776 d -> -> ge , dbc -> iܙy )!0 && t == 0) 1777 t = t_t ; 1778 d -> -> ge = NULL ; 1786 i(! ed && t == 0) { 1787 dbc -> = dbc_n ->internal; 1788 dbc_n -> = internal; 1806 i(( t_t = `__dbc_o ( dbc_n )!0 && t == 0) 1807 t = t_t ; 1816 i( `F_ISSET ( dbp , DB_AM_READ_UNCOMMITTED ) && 1817 dbc -> -> lock_mode = DB_LOCK_WRITE ) { 1818 i(( t_t = 1819 `__TLPUT ( dbc , dbc-> -> lock )!0 && t == 0) 1820 t = t_t ; 1821 i( t_t == 0) 1822 dbc -> -> lock_mode = DB_LOCK_WWRITE ; 1825 ( t ); 1826 } } 1836 $__dbc_cdy_g_ ( dbc , skey , da , ags ) 1837 DBC * dbc ; 1838 DBT * skey , * da ; 1839 u_t32_t ags ; 1841 `DB_ASSERT ( dbc -> v , `F_ISSET (dbc-> dbp , DB_AM_SECONDARY )); 1842 ( `__dbc_pg_ ( dbc , skey , NULL , da , ags )); 1843 } } 1852 $__dbc_pg ( dbc , skey , pkey , da , ags ) 1853 DBC * dbc ; 1854 DBT * skey , * pkey , * da ; 1855 u_t32_t ags ; 1857 DB * pdbp , * sdbp ; 1858 DBC * dbc_n , * pdbc ; 1859 DBT nupkey ; 1860 u_t32_t ve_pkey_ags , tmp_ags , tmp_ad_uncommd , tmp_rmw ; 1861 pkeymloc , t , t_t ; 1863 sdbp = dbc -> dbp ; 1864 pdbp = sdbp -> s_imy ; 1865 dbc_n = NULL ; 1866 pkeymloc = t_t = 0; 1880 i( pkey = NULL ) { 1881 `memt (& nupkey , 0, ( DBT )); 1882 pkey = & nupkey ; 1886 tmp_rmw = `LF_ISSET ( DB_RMW ); 1887 `LF_CLR ( DB_RMW ); 1889 tmp_ad_uncommd = 1890 `LF_ISSET ( DB_READ_UNCOMMITTED ) && 1891 ! `F_ISSET ( dbc , DBC_READ_UNCOMMITTED ); 1892 `LF_CLR ( DB_READ_UNCOMMITTED ); 1899 i( ags = DB_GET_RECNO ) { 1900 i( tmp_rmw ) 1901 `F_SET ( dbc , DBC_RMW ); 1902 i( tmp_ad_uncommd ) 1903 `F_SET ( dbc , DBC_READ_UNCOMMITTED ); 1904 t = `__dbc_pg_o ( dbc , pkey , da , ags ); 1905 i( tmp_rmw ) 1906 `F_CLR ( dbc , DBC_RMW ); 1907 i( tmp_ad_uncommd ) 1908 `F_CLR ( dbc , DBC_READ_UNCOMMITTED ); 1909 ( t ); 1946 ve_pkey_ags = pkey -> ags ; 1947 `F_CLR ( pkey , DB_DBT_PARTIAL ); 1956 ags ) { 1957 DB_CURRENT : 1958 DB_GET_BOTHC : 1959 DB_NEXT : 1960 DB_NEXT_DUP : 1961 DB_NEXT_NODUP : 1962 DB_PREV : 1963 DB_PREV_DUP : 1964 DB_PREV_NODUP : 1965 tmp_ags = DB_POSITION ; 1968 tmp_ags = 0; 1972 i(( t = `__dbc_dup ( dbc , & dbc_n , tmp_ags )) != 0) 1973 ( t ); 1975 `F_SET ( dbc_n , DBC_TRANSIENT ); 1977 i( tmp_rmw ) 1978 `F_SET ( dbc_n , DBC_RMW ); 1979 i( tmp_ad_uncommd ) 1980 `F_SET ( dbc_n , DBC_READ_UNCOMMITTED ); 1986 i( ags = DB_GET_BOTH || fg= DB_GET_BOTHC || 1987 ags = DB_GET_BOTH_RANGE ) 1988 `SWAP_IF_NEEDED ( sdbp , pkey ); 1990 y : 1991 dbc_n -> rda = dbc -> rkey ; 1992 dbc_n -> rkey = dbc -> rskey ; 1993 t = `__dbc_g ( dbc_n , skey , pkey , ags ); 1995 pkey -> ags = ve_pkey_ags ; 2002 i( t =0 || ags = DB_GET_BOTH || fg= DB_GET_BOTHC || 2003 ags = DB_GET_BOTH_RANGE ) 2004 `SWAP_IF_NEEDED ( sdbp , pkey ); 2006 i( t != 0) 2007 r ; 2031 i(( t = `__db_curs_t ( pdbp , dbc -> thad_fo , 2032 dbc -> txn , pdbp -> ty , PGNO_INVALID , 0, dbc-> lock , & pdbc )) != 0) 2033 r ; 2035 i( tmp_ad_uncommd || `F_ISSET ( dbc , DBC_READ_UNCOMMITTED )) 2036 `F_SET ( pdbc , DBC_READ_UNCOMMITTED ); 2037 i( tmp_rmw || `F_ISSET ( dbc , DBC_RMW )) 2038 `F_SET ( pdbc , DBC_RMW ); 2039 i( `F_ISSET ( dbc , DBC_READ_COMMITTED )) 2040 `F_SET ( pdbc , DBC_READ_COMMITTED ); 2061 i( `F_ISSET ( pkey , DB_DBT_MALLOC )) { 2062 `F_CLR ( pkey , DB_DBT_MALLOC ); 2063 `F_SET ( pkey , DB_DBT_REALLOC ); 2064 pkeymloc = 1; 2065 } i( `F_ISSET ( pkey , DB_DBT_USERCOPY )) { 2066 i( ags = DB_GET_BOTH_RANGE ) 2067 `__dbt_ur ( sdbp -> v , NULL , pkey , NULL); 2068 i(( t = `__dbt_urcy ( sdbp -> v , pkey )) != 0) 2069 r ; 2077 `F_SET ( pdbc , DBC_TRANSIENT ); 2078 `SET_RET_MEM ( pdbc , dbc ); 2079 t = `__dbc_g ( pdbc , pkey , da , DB_SET ); 2088 i(( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2089 t = t_t ; 2091 i( t = DB_NOTFOUND ) { 2092 i(! `F_ISSET ( pdbc , DBC_READ_UNCOMMITTED )) 2093 t = `__db_cdy_cru ( pdbp ); 2094 ags ) { 2095 DB_GET_BOTHC : 2096 DB_NEXT : 2097 DB_NEXT_DUP : 2098 DB_NEXT_NODUP : 2099 DB_PREV : 2100 DB_PREV_DUP : 2101 DB_PREV_NODUP : 2102 y ; 2108 r : 2109 i(( t_t = `__dbc_nup ( dbc , dbc_n , t )) != 0 &&et == 0) 2110 t = t_t ; 2111 i( pkeymloc ) { 2118 `F_CLR ( pkey , DB_DBT_REALLOC ); 2119 `F_SET ( pkey , DB_DBT_MALLOC ); 2122 ( t ); 2123 } } 2132 $__dbc_pg_o ( sdbc , pkey , da , ags ) 2133 DBC * sdbc ; 2134 DBT * pkey , * da ; 2135 u_t32_t ags ; 2137 DB * pdbp , * sdbp ; 2138 DBC * pdbc ; 2139 DBT disrdme , imy_key ; 2140 ENV * v ; 2141 db_o_t oob ; 2142 u_t32_t rmw ; 2143 t , t_t ; 2145 sdbp = sdbc -> dbp ; 2146 pdbp = sdbp -> s_imy ; 2147 v = sdbp ->env; 2148 pdbc = NULL ; 2149 t = t_t = 0; 2151 rmw = `LF_ISSET ( DB_RMW ); 2153 `memt (& disrdme , 0, ( DBT )); 2154 `F_SET (& disrdme , DB_DBT_USERMEM | DB_DBT_PARTIAL ); 2156 oob = RECNO_OOB ; 2164 i( `F_ISSET ( pdbp , DB_AM_RECNUM )) { 2169 `memt (& imy_key , 0, ( DBT )); 2170 `F_SET (& imy_key , DB_DBT_MALLOC ); 2171 i(( t = `__dbc_g ( sdbc , 2172 & disrdme , & imy_key , rmw | DB_CURRENT )) != 0) 2173 ( t ); 2184 i(( t = `__db_curs_t ( pdbp , sdbc -> thad_fo , sdbc-> txn , 2185 pdbp -> ty , PGNO_INVALID , 0, sdbc -> lock , & pdbc )) != 0) 2186 ; 2187 `SET_RET_MEM ( pdbc , sdbc ); 2188 i(( t = `__dbc_g ( pdbc , 2189 & imy_key , & disrdme , rmw | DB_SET )) != 0) 2190 ; 2192 t = `__dbc_g ( pdbc , & disrdme , da , rmw | DB_GET_RECNO ); 2194 : `__os_u ( v , imy_key . da ); 2195 i( pdbc ! NULL && 2196 ( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2197 t = t_t ; 2198 i( t != 0) 2199 ( t ); 2200 } i(( t = `__db_tcy ( v , da , & oob , 2201 ( oob ), & sdbc -> rkey -> da , &sdbc->rkey-> un )) != 0) 2202 ( t ); 2210 i( `F_ISSET ( sdbp , DB_AM_RECNUM )) 2211 ( `__dbc_g ( sdbc , & disrdme , pkey , ags )); 2213 ( `__db_tcy ( v , pkey , & oob , 2214 ( oob ), & sdbc -> rda -> da , &sdbc->rda-> un )); 2215 } } 2221 $__db_wock_r ( v ) 2222 ENV * v ; 2224 `__db_rx ( v , "Writettempted onead-only cursor"); 2225 ( EPERM ); 2226 } } 2239 $__dbc_d_cdy ( dbc ) 2240 DBC * dbc ; 2242 DB * pdbp ; 2243 DBC * pdbc ; 2244 DBT skey , pkey ; 2245 ENV * v ; 2246 t , t_t ; 2247 u_t32_t rmw ; 2249 pdbp = dbc -> dbp -> s_imy ; 2250 v = pdbp ->env; 2251 rmw = `STD_LOCKING ( dbc ? DB_RMW : 0; 2258 `memt (& skey , 0, ( DBT )); 2259 `memt (& pkey , 0, ( DBT )); 2260 `F_SET (& skey , DB_DBT_PARTIAL | DB_DBT_USERMEM ); 2261 i(( t = `__dbc_g ( dbc , & skey , & pkey , DB_CURRENT )) != 0) 2262 ( t ); 2264 `SWAP_IF_NEEDED ( dbc -> dbp , & pkey ); 2276 i(( t = `__db_curs_t ( pdbp , dbc -> thad_fo , dbc-> txn , 2277 pdbp -> ty , PGNO_INVALID , 0, dbc -> lock , & pdbc )) != 0) 2278 ( t ); 2286 i( `CDB_LOCKING ( v )) { 2287 `DB_ASSERT ( v , pdbc -> mylock . off = LOCK_INVALID ); 2288 `F_SET ( pdbc , DBC_WRITER ); 2300 i(( t = `__dbc_g ( pdbc , & pkey , & skey , DB_SET | rmw )) == 0) 2301 t = `__dbc_d ( pdbc , 0); 2302 i( t = DB_NOTFOUND ) 2303 t = `__db_cdy_cru ( pdbp ); 2305 i(( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2306 t = t_t ; 2308 ( t ); 2309 } } 2321 $__dbc_d_imy ( dbc ) 2322 DBC * dbc ; 2324 DB * dbp , * sdbp ; 2325 DBC * sdbc ; 2326 DBT * tskeyp ; 2327 DBT da , pkey , skey , mkey , mpskey ; 2328 ENV * v ; 2329 u_t32_t nskey , rmw ; 2330 t , t_t ; 2332 dbp = dbc ->dbp; 2333 v = dbp ->env; 2334 rmw = `STD_LOCKING ( dbc ? DB_RMW : 0; 2342 `memt (& pkey , 0, ( DBT )); 2343 `memt (& da , 0, ( DBT )); 2344 i(( t = `__dbc_g ( dbc , & pkey , & da , DB_CURRENT )) != 0) 2345 ( t ); 2347 `memt (& skey , 0, ( DBT )); 2348 t = `__db_s_f ( dbp , & sdbp ); 2349 sdbp ! NULL && t == 0; 2350 t = `__db_s_xt (& sdbp , dbc -> txn )) { 2355 i(( t = sdbp -> `s_back (sdbp, & pkey , & da , & skey )) != 0) { 2357 i( t = DB_DONOTINDEX ) { 2358 `F_SET (& skey , DB_DBT_MULTIPLE ); 2359 skey . size = 0; 2361 r ; 2364 #ifde DIAGNOSTIC 2365 i( `F_ISSET (& skey , DB_DBT_MULTIPLE )) 2366 `__db_check_skeyt ( sdbp , & skey ); 2369 i( `F_ISSET (& skey , DB_DBT_MULTIPLE )) { 2370 tskeyp = ( DBT *) skey . da ; 2371 nskey = skey . size ; 2372 i( nskey == 0) 2375 tskeyp = & skey ; 2376 nskey = 1; 2380 i(( t = `__db_curs_t ( sdbp , 2381 dbc -> thad_fo , dbc-> txn , sdbp -> ty , 2382 PGNO_INVALID , 0, dbc -> lock , & sdbc )) != 0) 2383 r ; 2385 i( `CDB_LOCKING ( v )) { 2386 `DB_ASSERT ( v , sdbc -> mylock . off = LOCK_INVALID ); 2387 `F_SET ( sdbc , DBC_WRITER ); 2390 ; nskey > 0;skey--, tskeyp ++) { 2404 `DB_INIT_DBT ( mpskey , tskeyp -> da ,skeyp-> size ); 2405 `SWAP_IF_NEEDED ( sdbp , & pkey ); 2406 `DB_INIT_DBT ( mkey , pkey . da ,key. size ); 2407 i(( t = `__dbc_g ( sdbc , & mpskey , & mkey , 2408 DB_GET_BOTH | rmw )) == 0) 2409 t = `__dbc_d ( sdbc , DB_UPDATE_SECONDARY ); 2410 i( t = DB_NOTFOUND ) 2411 t = `__db_cdy_cru ( dbp ); 2412 `SWAP_IF_NEEDED ( sdbp , & pkey ); 2413 `FREE_IF_NEEDED ( v , tskeyp ); 2416 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 2417 t = t_t ; 2418 i( t != 0) 2419 r ; 2428 `FREE_IF_NEEDED ( v , & skey ); 2431 r : i( sdbp ! NULL && 2432 ( t_t = `__db_s_de ( sdbp , dbc -> txn )!0 && t == 0) 2433 t = t_t ; 2434 `FREE_IF_NEEDED ( v , & skey ); 2435 ( t ); 2436 } } 2454 $__dbc_d_feign ( dbc ) 2455 DBC * dbc ; 2457 DB_FOREIGN_INFO * f_fo ; 2458 DB * dbp , * pdbp , * sdbp ; 2459 DBC * pdbc , * sdbc ; 2460 DBT da , fkey , pkey ; 2461 ENV * v ; 2462 u_t32_t ags , rmw ; 2463 chged , t , t_t ; 2465 dbp = dbc ->dbp; 2466 v = dbp ->env; 2468 `memt (& fkey , 0, ( DBT )); 2469 `memt (& da , 0, ( DBT )); 2470 i(( t = `__dbc_g ( dbc , & fkey , & da , DB_CURRENT )) != 0) 2471 ( t ); 2473 `LIST_FOREACH ( f_fo , &( dbp -> f_ims ), f_lks ) { 2474 sdbp = f_fo -> dbp ; 2475 pdbp = sdbp -> s_imy ; 2476 ags = f_fo ->flags; 2478 rmw = ( `STD_LOCKING ( dbc ) && 2479 ! `LF_ISSET ( DB_FOREIGN_ABORT )? DB_RMW : 0; 2499 sdbc = pdbc = NULL ; 2500 i(! `LF_ISSET ( DB_FOREIGN_ABORT && `CDB_LOCKING ( v ) && 2501 ! `F_ISSET ( v -> dbv , DB_ENV_CDB_ALLDB )) { 2502 t = `__db_curs ( sdbp , 2503 dbc -> thad_fo , dbc-> txn , & sdbc , DB_WRITECURSOR ); 2504 i( `LF_ISSET ( DB_FOREIGN_NULLIFY && t == 0) { 2505 t = `__db_curs_t ( pdbp , 2506 dbc -> thad_fo , dbc-> txn , pdbp -> ty , 2507 PGNO_INVALID , 0, dbc -> lock , & pdbc ); 2508 `F_SET ( pdbc , DBC_WRITER ); 2511 t = `__db_curs_t ( sdbp , dbc -> thad_fo , dbc-> txn , 2512 sdbp -> ty , PGNO_INVALID , 0, dbc -> lock , & sdbc ); 2513 i( `LF_ISSET ( DB_FOREIGN_NULLIFY && t == 0) 2514 t = `__db_curs_t ( pdbp , dbc -> thad_fo , 2515 dbc -> txn , pdbp -> ty , PGNO_INVALID , 0, 2516 dbc -> lock , & pdbc ); 2518 i( t != 0) { 2519 i( sdbc ! NULL ) 2520 () `__dbc_o ( sdbc ); 2521 ( t ); 2523 i( `CDB_LOCKING ( v && `F_ISSET nv-> dbv , DB_ENV_CDB_ALLDB )){ 2524 `DB_ASSERT ( v , sdbc -> mylock . off = LOCK_INVALID ); 2525 `F_SET ( sdbc , DBC_WRITER ); 2526 i( `LF_ISSET ( DB_FOREIGN_NULLIFY && pdbc ! NULL ) { 2527 `DB_ASSERT ( v , 2528 pdbc -> mylock . off = LOCK_INVALID ); 2529 `F_SET ( pdbc , DBC_WRITER ); 2545 `memt (& pkey , 0, ( DBT )); 2546 `memt (& da , 0, ( DBT )); 2547 t = `__dbc_pg ( sdbc , & fkey , & pkey , & da , DB_SET | rmw ); 2549 i( t = DB_NOTFOUND ) { 2551 t = `__dbc_o ( sdbc ); 2552 i( `LF_ISSET ( DB_FOREIGN_NULLIFY ) && 2553 ( t_t = `__dbc_o ( pdbc )) != 0) 2554 t = t_t ; 2555 i( t != 0) 2556 ( t ); 2558 } i( t != 0) { 2560 () `__dbc_o ( sdbc ); 2561 i( `LF_ISSET ( DB_FOREIGN_NULLIFY )) 2562 () `__dbc_o ( pdbc ); 2563 ( t ); 2564 } i( `LF_ISSET ( DB_FOREIGN_ABORT )) { 2566 i(( t = `__dbc_o ( sdbc )) != 0) 2567 ( t ); 2568 ( DB_FOREIGN_CONFLICT ); 2575 t == 0) { 2576 i( `LF_ISSET ( DB_FOREIGN_CASCADE )) { 2582 i(( t = `__dbc_d ( sdbc , 0)) != 0) { 2583 `__db_r ( v , t , 2587 } i( `LF_ISSET ( DB_FOREIGN_NULLIFY )) { 2588 chged = 0; 2589 i(( t = f_fo -> `back ( sdbp , 2590 & pkey , & da , & fkey , & chged )) != 0) { 2591 `__db_r ( v , t , 2600 i( chged && ( t = `__dbc_put ( pdbc , 2601 & pkey , & da , DB_KEYFIRST )) != 0) { 2602 `__db_r ( v , t , 2608 `memt (& pkey , 0, ( DBT )); 2609 `memt (& da , 0, ( DBT )); 2610 t = `__dbc_pg ( sdbc , 2611 & fkey , & pkey , & da , DB_NEXT_DUP | rmw ); 2614 i( t = DB_NOTFOUND ) 2615 t = 0; 2616 i(( t_t = `__dbc_o ( sdbc )!0 && t == 0) 2617 t = t_t ; 2618 i( `LF_ISSET ( DB_FOREIGN_NULLIFY ) && 2619 ( t_t = `__dbc_o ( pdbc )!0 && t == 0) 2620 t = t_t ; 2621 i( t != 0) 2622 ( t ); 2625 ( t ); 2626 } } 2635 $__db_s_f ( pdbp , sdb ) 2636 DB * pdbp , ** sdb ; 2638 DB * sdbp ; 2640 `MUTEX_LOCK ( pdbp -> v ,dbp-> mux ); 2641 sdbp = `LIST_FIRST (& pdbp -> s_cds ); 2644 i( sdbp ! NULL ) 2645 sdbp -> s_ft ++; 2646 `MUTEX_UNLOCK ( pdbp -> v ,dbp-> mux ); 2648 * sdb = sdbp ; 2651 } } 2660 $__db_s_xt ( sdb , txn ) 2661 DB ** sdb ; 2662 DB_TXN * txn ; 2664 DB * sdbp , * pdbp , * ome ; 2665 ENV * v ; 2666 t ; 2691 sdbp = * sdb ; 2692 pdbp = sdbp -> s_imy ; 2693 v = pdbp ->env; 2694 ome = NULL ; 2696 `MUTEX_LOCK ( v , pdbp -> mux ); 2697 `DB_ASSERT ( v , sdbp -> s_ft != 0); 2698 i(-- sdbp -> s_ft == 0) { 2699 `LIST_REMOVE ( sdbp , s_lks ); 2700 ome = sdbp ; 2702 sdbp = `LIST_NEXT (sdbp, s_lks ); 2703 i( sdbp ! NULL ) 2704 sdbp -> s_ft ++; 2705 `MUTEX_UNLOCK ( v , pdbp -> mux ); 2707 * sdb = sdbp ; 2712 i( ome = NULL ) 2713 t = 0; 2714 i( txn = NULL ) 2715 t = `__db_o ( ome , NULL , 0); 2717 t = `__txn_oevt ( v , txn , ome ); 2719 ( t ); 2720 } } 2730 $__db_s_de ( sdbp , txn ) 2731 DB * sdbp ; 2732 DB_TXN * txn ; 2734 DB * pdbp ; 2735 ENV * v ; 2736 doo , t ; 2738 pdbp = sdbp -> s_imy ; 2739 v = pdbp ->env; 2740 doo = 0; 2742 `MUTEX_LOCK ( v , pdbp -> mux ); 2743 `DB_ASSERT ( v , sdbp -> s_ft != 0); 2744 i(-- sdbp -> s_ft == 0) { 2745 `LIST_REMOVE ( sdbp , s_lks ); 2746 doo = 1; 2748 `MUTEX_UNLOCK ( v , pdbp -> mux ); 2750 i( doo == 0) 2751 t = 0; 2752 i( txn = NULL ) 2753 t = `__db_o ( sdbp , NULL , 0); 2755 t = `__txn_oevt ( v , txn , sdbp ); 2756 ( t ); 2757 } } 2764 $__db_s_cou ( pdbp ) 2765 DB * pdbp ; 2767 DB * sdbp ; 2768 ENV * v ; 2769 cou ; 2771 v = pdbp ->env; 2772 cou = 0; 2774 `MUTEX_LOCK ( v , pdbp -> mux ); 2775 sdbp = `LIST_FIRST (& pdbp -> s_cds ); 2776 sdbp ! NULL ; 2777 sdbp = `LIST_NEXT (sdbp, s_lks )) 2778 ++ cou ; 2779 `MUTEX_UNLOCK ( v , pdbp -> mux ); 2781 ( cou ); 2782 } } 2794 $__db_budl ( dbp , dc , l , wc ) 2795 DB * dbp ; 2796 DBT * dc , * l , * wc ; 2798 ENV * v ; 2799 u_t32_t n , nbys ; 2800 u_t8_t * buf ; 2801 t ; 2803 v = dbp ->env; 2805 `DB_ASSERT ( v , `F_ISSET ( l , DB_DBT_PARTIAL )); 2807 `memt ( wc , 0, ( DBT )); 2809 nbys = `__db_size ( dc -> size , l ); 2810 wc -> size = nbys ; 2812 i(( t = `__os_mloc ( v , nbys , & buf )) != 0) 2813 ( t ); 2814 wc -> da = buf ; 2817 `memt ( buf , 2818 `F_ISSET ( dbp , DB_AM_FIXEDLEN ? (( BTREE *)dbp-> bt_ )-> _d : 2819 0, nbys ); 2822 `memy ( buf , dc -> da , 2823 l -> doff > dc -> size ? oldrec->size :artial->doff); 2826 `memy ( buf + l -> doff ,tl-> da ,tl-> size ); 2829 n = l -> doff +tl-> dn ; 2830 i( dc -> size > n ) 2831 `memy ( buf + l -> doff +tl-> size , 2832 ( u_t8_t *) dc -> da + n , oldc-> size -en); 2835 } } 2847 u_t32_t 2848 $__db_size ( nbys , da ) 2849 u_t32_t nbys ; 2850 DBT * da ; 2867 i( nbys < da -> doff + da-> dn ) 2868 ( da -> doff + da-> size ); 2870 ( nbys + da -> size - da-> dn ); 2871 } } 2873 #ifde DIAGNOSTIC 2884 $__db_check_skeyt ( sdbp , skeyp ) 2885 DB * sdbp ; 2886 DBT * skeyp ; 2888 DBT * fkey , * ϡkey , * key1 , * key2 ; 2889 ENV * v ; 2891 v = sdbp ->env; 2893 fkey = ( DBT *) skeyp -> da ; 2894 ϡkey = fkey + skeyp -> size ; 2895 key1 = fkey ; key1 < ϡkey ; key1++) 2896 key2 = key1 + 1; key2 < ϡkey ; key2++) 2897 `DB_ASSERT ( v , 2898 (( BTREE *) sdbp -> bt_ )-> `bt_com (sdbp, 2899 key1 , key2 ) != 0); 2900 } } @../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 (( ENV * v , 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 ( v , mh ) 33 ENV * v ; 34 cڡ * mh ; 36 `__db_rx ( v , "CDS groupdn su܈%s", mh ); 37 ( DB_OPNOTSUP ); 38 } } 41 $__cdsgroup_abt ( txn ) 42 DB_TXN * txn ; 44 ( `__cdsgroup_nsup ( txn -> mg -> v , "abort")); 45 } } 48 $__cdsgroup_comm ( txn , ags ) 49 DB_TXN * txn ; 50 u_t32_t ags ; 52 DB_LOCKER * lock ; 53 DB_LOCKREQ eq ; 54 ENV * v ; 55 t , t_t ; 57 `COMPQUIET ( ags , 0); 58 v = txn -> mg ->env; 61 i( txn -> curss != 0) { 62 `__db_rx ( v , "CDS group hasctive cursors"); 63 ( EINVAL ); 67 eq . = DB_LOCK_PUT_ALL ; 68 eq . obj = NULL ; 69 t = `__lock_vec ( v , txn -> lock , 0, & eq , 1, NULL ); 71 v = txn -> mg ->env; 72 lock = txn ->locker; 73 `__os_ ( v , txn -> mg ); 74 `__os_ ( v , txn ); 75 i(( t_t = `__lock_id_ ( v , lock )!0 && t == 0) 76 t = t_t ; 77 ( t ); 78 } } 80 $__cdsgroup_disrd ( txn , ags ) 81 DB_TXN * txn ; 82 u_t32_t ags ; 84 `COMPQUIET ( ags , 0); 85 ( `__cdsgroup_nsup ( txn -> mg -> v , "discard")); 86 } } 88 u_t32_t $__cdsgroup_id ( txn ) 89 DB_TXN * txn ; 91 ( txn -> txnid ); 92 } } 94 $__cdsgroup_e ( txn , gid ) 95 DB_TXN * txn ; 96 u_t8_t * gid ; 98 `COMPQUIET ( gid , NULL ); 99 ( `__cdsgroup_nsup ( txn -> mg -> v , "prepare")); 100 } } 102 $__cdsgroup_t_me ( txn , me ) 103 DB_TXN * txn ; 104 cڡ * me ; 106 `COMPQUIET ( me , NULL ); 107 ( `__cdsgroup_nsup ( txn -> mg -> v , "set_name")); 108 } } 110 $__cdsgroup_t_timeout ( txn , timeout , ags ) 111 DB_TXN * txn ; 112 db_timeout_t timeout ; 113 u_t32_t ags ; 115 `COMPQUIET ( timeout , 0); 116 `COMPQUIET ( ags , 0); 117 ( `__cdsgroup_nsup ( txn -> mg -> v , "set_timeout")); 118 } } 127 $__cdsgroup_beg ( dbv , txp ) 128 DB_ENV * dbv ; 129 DB_TXN ** txp ; 131 DB_THREAD_INFO * ; 132 DB_TXN * txn ; 133 ENV * v ; 134 t ; 136 v = dbv ->env; 138 `ENV_ILLEGAL_BEFORE_OPEN ( v , "cdsgroup_begin"); 139 i(! `CDB_LOCKING ( v )) 140 ( `__v_n_cfig ( v , "cdsgroup_beg", DB_INIT_CDB )); 142 `ENV_ENTER ( v , ); 143 * txp = txn = NULL ; 144 i(( t = `__os_oc ( v , 1, ( DB_TXN ), & txn )) != 0) 145 r ; 150 i(( t = `__os_oc ( v , 1, ( DB_TXNMGR ), & txn -> mg )) != 0) 151 r ; 152 txn -> mg -> v =nv; 154 i(( t = `__lock_id ( v , & txn -> txnid , &txn-> lock )) != 0) 155 r ; 157 txn -> ags = TXN_CDSGROUP ; 158 txn -> abt = __cdsgroup_abt ; 159 txn -> comm = __cdsgroup_comm ; 160 txn -> disrd = __cdsgroup_disrd ; 161 txn -> id = __cdsgroup_id ; 162 txn -> e = __cdsgroup_e ; 163 txn -> t_me = __cdsgroup_t_me ; 164 txn -> t_timeout = __cdsgroup_t_timeout ; 166 * txp = txn ; 169 r : i( txn ! NULL ) { 170 i( txn -> mg ! NULL ) 171 `__os_ ( v , txn -> mg ); 172 `__os_ ( v , txn ); 175 `ENV_LEAVE ( v , ); 176 ( t ); 177 } } @../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_CIPHER * db_ch ; 68 DB_LSN n_ud ; 69 DB_PGINFO * pgfo ; 70 ENV * v ; 71 PAGE * g ; 72 size_t sum_n ; 73 is_hmac , t ; 74 u_t8_t * chksum ; 76 pgfo = ( DB_PGINFO *) cook -> da ; 77 v = dbv ->env; 78 g = ( PAGE *) ; 80 t = is_hmac = 0; 81 chksum = NULL ; 82 `memt (& dummydb , 0, ( DB )); 83 dbp = & dummydb ; 84 dbp -> dbv = dbenv; 85 dbp -> v =nv; 86 dbp -> ags = pgfo ->flags; 87 dbp -> pgsize = pgfo -> db_gesize ; 88 db_ch = v -> yo_hd ; 89 g -> ty ) { 90 P_HASHMETA : 91 P_BTREEMETA : 92 P_QAMMETA : 97 i( `FLD_ISSET ((( DBMETA *) )-> maags , DBMETA_CHKSUM )) 98 `F_SET ( dbp , DB_AM_CHKSUM ); 100 `F_CLR ( dbp , DB_AM_CHKSUM ); 101 i((( DBMETA *) )-> y_g != 0 || 102 `F_ISSET ( dbp , DB_AM_ENCRYPT )) 103 is_hmac = 1; 110 chksum = (( BTMETA *) )->chksum; 111 sum_n = DBMETASIZE ; 113 P_INVALID : 119 i( `IS_ZERO_LSN ( `LSN ( g )&&ag-> pgno = PGNO_INVALID ) { 120 sum_n = 0; 125 chksum = `P_CHKSUM ( dbp , g ); 126 sum_n = pgfo -> db_gesize ; 131 is_hmac = `CRYPTO_ON ( v ) ? 1 : 0; 140 i( `F_ISSET ( dbp , DB_AM_CHKSUM && sum_n != 0) { 141 i( `F_ISSET ( dbp , DB_AM_SWAP && is_hmac == 0) 142 `P_32_SWAP ( chksum ); 143 t = `__db_check_chksum ( 144 v , NULL , db_ch , chksum , , sum_n , is_hmac )) { 148 i( `DBENV_LOGGING ( v )) 149 () `__db_cksum_log ( 150 v , NULL , & n_ud , DB_FLUSH ); 151 `__db_rx ( v , 153 ( u_lg ) pg ); 154 ( `__v_nic ( v , DB_RUNRECOVERY )); 156 ( t ); 159 i(( t = `__db_dey_pg ( v , dbp , g )) != 0) 160 ( t ); 161 g -> ty ) { 162 P_INVALID : 163 i( pgfo -> ty = DB_QUEUE ) 164 ( `__qam_pg_out ( v , pg , , cook )); 166 ( `__ham_pg ( dbp , pg , , cook )); 167 P_HASH_UNSORTED : 168 P_HASH : 169 P_HASHMETA : 170 ( `__ham_pg ( dbp , pg , , cook )); 171 P_BTREEMETA : 172 P_IBTREE : 173 P_IRECNO : 174 P_LBTREE : 175 P_LDUP : 176 P_LRECNO : 177 P_OVERFLOW : 178 ( `__bam_pg ( dbp , pg , , cook )); 179 P_QAMMETA : 180 P_QAMDATA : 181 ( `__qam_pg_out ( v , pg , , cook )); 185 ( `__db_pgfmt ( v , pg )); 186 } } 195 $__db_pgout ( dbv , pg , , cook ) 196 DB_ENV * dbv ; 197 db_pgno_t pg ; 198 * ; 199 DBT * cook ; 201 DB dummydb , * dbp ; 202 DB_PGINFO * pgfo ; 203 ENV * v ; 204 PAGE * g ; 205 t ; 207 pgfo = ( DB_PGINFO *) cook -> da ; 208 v = dbv ->env; 209 g = ( PAGE *) ; 211 `memt (& dummydb , 0, ( DB )); 212 dbp = & dummydb ; 213 dbp -> dbv = dbenv; 214 dbp -> v =nv; 215 dbp -> ags = pgfo ->flags; 216 dbp -> pgsize = pgfo -> db_gesize ; 217 t = 0; 218 g -> ty ) { 219 P_INVALID : 220 i( pgfo -> ty = DB_QUEUE ) 221 t = `__qam_pg_out ( v , pg , , cook ); 223 t = `__ham_pgout ( dbp , pg , , cook ); 225 P_HASH : 226 P_HASH_UNSORTED : 234 P_HASHMETA : 235 t = `__ham_pgout ( dbp , pg , , cook ); 237 P_BTREEMETA : 238 P_IBTREE : 239 P_IRECNO : 240 P_LBTREE : 241 P_LDUP : 242 P_LRECNO : 243 P_OVERFLOW : 244 t = `__bam_pgout ( dbp , pg , , cook ); 246 P_QAMMETA : 247 P_QAMDATA : 248 t = `__qam_pg_out ( v , pg , , cook ); 251 ( `__db_pgfmt ( v , pg )); 253 i( t ) 254 ( t ); 256 ( `__db_y_d_checksum_pg ( v , dbp , g )); 257 } } 266 $__db_dey_pg ( v , dbp , g ) 267 ENV * v ; 268 DB * dbp ; 269 PAGE * g ; 271 DB_CIPHER * db_ch ; 272 size_t pg_n , pg_off ; 273 u_t8_t * iv ; 274 t ; 276 db_ch = v -> yo_hd ; 277 t = 0; 278 iv = NULL ; 279 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 280 `DB_ASSERT ( v , db_ch ! NULL ); 281 `DB_ASSERT ( v , `F_ISSET ( dbp , DB_AM_CHKSUM )); 283 pg_off = `P_OVERHEAD ( dbp ); 284 `DB_ASSERT ( v , db_ch -> `adj_size ( pg_off ) == 0); 286 g -> ty ) { 287 P_HASHMETA : 288 P_BTREEMETA : 289 P_QAMMETA : 296 iv = (( BTMETA *) g )->iv; 297 pg_n = DBMETASIZE ; 299 P_INVALID : 300 i( `IS_ZERO_LSN ( `LSN ( g )) && 301 g -> pgno = PGNO_INVALID ) { 302 pg_n = 0; 307 iv = `P_IV ( dbp , g ); 308 pg_n = dbp -> pgsize ; 311 i( pg_n != 0) 312 t = db_ch -> `dey ( v , db_ch-> da , 313 iv , (( u_t8_t *) g + pg_off , 314 pg_n - pg_off ); 316 ( t ); 317 } } 327 $__db_y_d_checksum_pg ( v , dbp , g ) 328 ENV * v ; 329 DB * dbp ; 330 PAGE * g ; 332 DB_CIPHER * db_ch ; 333 t ; 334 size_t pg_off , pg_n , sum_n ; 335 u_t8_t * chksum , * iv , * key ; 337 chksum = iv = key = NULL ; 338 db_ch = v -> yo_hd ; 340 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 341 `DB_ASSERT ( v , db_ch ! NULL ); 342 `DB_ASSERT ( v , `F_ISSET ( dbp , DB_AM_CHKSUM )); 344 pg_off = `P_OVERHEAD ( dbp ); 345 `DB_ASSERT ( v , db_ch -> `adj_size ( pg_off ) == 0); 347 key = db_ch -> mac_key ; 349 g -> ty ) { 350 P_HASHMETA : 351 P_BTREEMETA : 352 P_QAMMETA : 359 iv = (( BTMETA *) g )->iv; 360 pg_n = DBMETASIZE ; 363 iv = `P_IV ( dbp , g ); 364 pg_n = dbp -> pgsize ; 367 i(( t = db_ch -> `y ( v , db_ch-> da , 368 iv , (( u_t8_t *) g + pg_off , pg_n -g_off)) != 0) 369 ( t ); 371 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) { 372 g -> ty ) { 373 P_HASHMETA : 374 P_BTREEMETA : 375 P_QAMMETA : 382 chksum = (( BTMETA *) g )->chksum; 383 sum_n = DBMETASIZE ; 386 chksum = `P_CHKSUM ( dbp , g ); 387 sum_n = dbp -> pgsize ; 390 `__db_chksum ( NULL , ( u_t8_t *) g , sum_n , key , chksum ); 391 i( `F_ISSET ( dbp , DB_AM_SWAP && !F_ISSET(dbp, DB_AM_ENCRYPT )) 392 `P_32_SWAP ( chksum ); 395 } } 404 $__db_masw ( pg ) 405 PAGE * pg ; 407 u_t8_t * p ; 409 p = ( u_t8_t *) pg ; 412 `SWAP32 ( p ); 413 `SWAP32 ( p ); 414 `SWAP32 ( p ); 415 `SWAP32 ( p ); 416 `SWAP32 ( p ); 417 `SWAP32 ( p ); 418 p += 4; 419 `SWAP32 ( p ); 420 `SWAP32 ( p ); 421 `SWAP32 ( p ); 422 `SWAP32 ( p ); 423 `SWAP32 ( p ); 424 `SWAP32 ( p ); 425 } } 435 $__db_bysw ( dbp , pg , h , gesize , pg ) 436 DB * dbp ; 437 db_pgno_t pg ; 438 PAGE * h ; 439 size_t gesize ; 440 pg ; 442 ENV * v ; 443 BINTERNAL * bi ; 444 BKEYDATA * bk ; 445 BOVERFLOW * bo ; 446 RINTERNAL * ri ; 447 db_dx_t i , * p , n , tmp ; 448 u_t8_t * d , * p , * pgd ; 450 i( gesize == 0) 453 v = dbp ->env; 455 i( pg ) { 456 `M_32_SWAP ( h -> l . fe ); 457 `M_32_SWAP ( h -> l . offt ); 458 `M_32_SWAP ( h -> pgno ); 459 `M_32_SWAP ( h -> ev_pgno ); 460 `M_32_SWAP ( h -> xt_pgno ); 461 `M_16_SWAP ( h -> s ); 462 `M_16_SWAP ( h -> hf_offt ); 465 pgd = ( u_t8_t *) h + gesize ; 467 p = `P_INP ( dbp , h ); 468 i(( u_t8_t *) p > pgd ) 469 out ; 471 `TYPE ( h )) { 472 P_HASH_UNSORTED : 473 P_HASH : 474 i = 0; i < `NUM_ENT ( h ); i++) { 475 i( pg ) 476 `M_16_SWAP ( p [ i ]); 478 i( `P_ENTRY ( dbp , h , i > pgd ) 481 `HPAGE_TYPE ( dbp , h , i )) { 482 H_KEYDATA : 484 H_DUPLICATE : 485 n = `LEN_HKEYDATA ( dbp , h , gesize , i ); 486 p = `HKEYDATA_DATA ( `P_ENTRY ( dbp , h , i )); 487 d = p + n ; <nd;) { 488 i( pg ) { 489 `P_16_SWAP ( p ); 490 `memy (& tmp , 491 p , ( db_dx_t )); 492 p +( db_dx_t ); 494 `memy (& tmp , 495 p , ( db_dx_t )); 496 `SWAP16 ( p ); 498 p + tmp ; 499 `SWAP16 ( p ); 502 H_OFFDUP : 503 p = `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , h , i )); 504 `SWAP32 ( p ); 506 H_OFFPAGE : 507 p = `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , h , i )); 508 `SWAP32 ( p ); 509 `SWAP32 ( p ); 512 ( `__db_pgfmt ( v , pg )); 523 i(! pg ) 524 i = 0; i < `NUM_ENT ( h ); i++) 525 `M_16_SWAP ( p [ i ]); 527 P_LBTREE : 528 P_LDUP : 529 P_LRECNO : 530 i = 0; i < `NUM_ENT ( h ); i++) { 531 i( pg ) 532 `M_16_SWAP ( p [ i ]); 538 i( h -> ty = P_LBTREE && i > 1) { 539 i( pg ) { 540 i( p [ i ] == inp[i - 2]) 543 `M_16_SWAP ( p [ i ]); 544 i( p [ i ] == inp[i - 2]) 546 `M_16_SWAP ( p [ i ]); 550 bk = `GET_BKEYDATA ( dbp , h , i ); 551 i(( u_t8_t *) bk > pgd ) 553 `B_TYPE ( bk -> ty )) { 554 B_KEYDATA : 555 `M_16_SWAP ( bk -> n ); 557 B_DUPLICATE : 558 B_OVERFLOW : 559 bo = ( BOVERFLOW *) bk ; 560 `M_32_SWAP ( bo -> pgno ); 561 `M_32_SWAP ( bo -> ); 564 ( `__db_pgfmt ( v , pg )); 567 i(! pg ) 568 `M_16_SWAP ( p [ i ]); 571 P_IBTREE : 572 i = 0; i < `NUM_ENT ( h ); i++) { 573 i( pg ) 574 `M_16_SWAP ( p [ i ]); 576 bi = `GET_BINTERNAL ( dbp , h , i ); 577 i(( u_t8_t *) bi > pgd ) 580 `M_16_SWAP ( bi -> n ); 581 `M_32_SWAP ( bi -> pgno ); 582 `M_32_SWAP ( bi -> ecs ); 584 `B_TYPE ( bi -> ty )) { 585 B_KEYDATA : 587 B_DUPLICATE : 588 B_OVERFLOW : 589 bo = ( BOVERFLOW *) bi -> da ; 590 `M_32_SWAP ( bo -> pgno ); 591 `M_32_SWAP ( bo -> ); 594 ( `__db_pgfmt ( v , pg )); 597 i(! pg ) 598 `M_16_SWAP ( p [ i ]); 601 P_IRECNO : 602 i = 0; i < `NUM_ENT ( h ); i++) { 603 i( pg ) 604 `M_16_SWAP ( p [ i ]); 606 ri = `GET_RINTERNAL ( dbp , h , i ); 607 i(( u_t8_t *) ri > pgd ) 610 `M_32_SWAP ( ri -> pgno ); 611 `M_32_SWAP ( ri -> ecs ); 613 i(! pg ) 614 `M_16_SWAP ( p [ i ]); 617 P_OVERFLOW : 618 P_INVALID : 622 ( `__db_pgfmt ( v , pg )); 625 out : i(! pg ) { 627 `M_32_SWAP ( h -> l . fe ); 628 `M_32_SWAP ( h -> l . offt ); 629 `M_32_SWAP ( h -> pgno ); 630 `M_32_SWAP ( h -> ev_pgno ); 631 `M_32_SWAP ( h -> xt_pgno ); 632 `M_16_SWAP ( h -> s ); 633 `M_16_SWAP ( h -> hf_offt ); 636 } } 650 $__db_gesw ( dbp , , n , pda , pg ) 651 DB * dbp ; 652 * ; 653 size_t n ; 654 DBT * pda ; 655 pg ; 657 ENV * v ; 658 db_pgno_t pg ; 659 size_t pgsize ; 660 * pgcy ; 661 t ; 662 u_t16_t hofft ; 664 v = dbp ->env; 666 `TYPE ( )) { 667 P_BTREEMETA : 668 ( `__bam_msw ( v , )); 670 P_HASHMETA : 671 ( `__ham_msw ( v , )); 673 P_QAMMETA : 674 ( `__qam_msw ( v , )); 676 P_INVALID : 677 P_OVERFLOW : 684 pda = NULL ; 691 i( pg ) { 692 `P_32_COPYSWAP (& `PGNO ( ), & pg ); 693 `P_16_COPYSWAP (& `HOFFSET ( ), & hofft ); 695 pg = `PGNO ( ); 696 hofft = `HOFFSET ( ); 699 i( pda = NULL ) 700 t = `__db_bysw ( dbp , pg , ( PAGE *) , n , pg ); 702 pgsize = hofft + pda -> size ; 703 i(( t = `__os_mloc ( v , pgsize , & pgcy )) != 0) 704 ( t ); 705 `memt ( pgcy , 0, pgsize ); 706 `memy ( pgcy , , n ); 707 `memy (( u_t8_t *) pgcy + hofft , pda -> da ,da-> size ); 709 t = `__db_bysw ( dbp , pg , ( PAGE *) pgcy , pgsize , pg ); 710 `memy ( , pgcy , n ); 718 i(! pg ) { 719 i(( t = 720 `__os_mloc ( v , pda -> size , &pda-> da )) != 0) { 721 `__os_ ( v , pgcy ); 722 ( t ); 724 `F_SET ( pda , DB_DBT_APPMALLOC ); 726 `memy ( pda -> da , ( u_t8_t *) pgcy + hofft ,da-> size ); 727 `__os_ ( v , pgcy ); 730 ( t ); 731 } } @../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_txi_fd_ __P (( ENV *, DB_TXNHEAD *, 52 db_txi_ty , u_t32_t , DB_TXNLIST **, 53 , u_t32_t *)); 68 $__db_dich ( v , db , db , lp , do , fo ) 69 ENV * v ; 70 DB_DISTAB * db ; 71 DBT * db ; 72 DB_LSN * lp ; 73 db_cs do ; 74 DB_TXNHEAD * fo ; 76 DB_ENV * dbv ; 77 DB_LSN ev_l ; 78 u_t32_t y , us , txnid , uy ; 79 make_ , t ; 81 dbv = v ->dbenv; 82 `LOGCOPY_32 ( v , & y , db -> da ); 83 `LOGCOPY_32 ( v , & txnid , ( u_t8_t *) db -> da + ( y )); 85 make_ = t = 0; 88 `DB_ASSERT ( v , db ! NULL ); 96 do ) { 97 DB_TXN_ABORT : 98 DB_TXN_APPLY : 99 DB_TXN_PRINT : 100 make_ = 1; 102 DB_TXN_OPENFILES : 110 `LOGCOPY_TOLSN ( v , & ev_l , ( u_t8_t *) db -> da + 111 ( y + ( txnid )); 112 i( txnid !0 && ev_l . fe =0 && ( t = 113 `__db_txi_add ( v , fo , txnid , TXN_OK , NULL )) != 0) 114 ( t ); 117 DB_TXN_POPENFILES : 118 i( y = DB___dbg_gi || 119 y = DB___txn_chd || 120 y = DB___txn_ckp ||ey = DB___txn_cye ) 121 (( db -> t_dich [ y ])( v , 122 db , lp , do , fo )); 124 DB_TXN_BACKWARD_ROLL : 147 y ) { 153 DB___txn_g : 154 DB___txn_cye : 155 DB___txn_ckp : 156 make_ = 1; 162 DB___txn_chd : 163 DB___db_no : 164 DB___f_fe_move : 165 DB___dbg_gi : 166 make_ = 1; 170 i( txnid == 0) 173 t = `__db_txi_fd ( v , fo , txnid , & us ); 176 i( t = DB_NOTFOUND ) 177 ( `__db_txi_add ( v , 178 fo , txnid , TXN_IGNORE , lp )); 179 i( t != 0) 180 ( t ); 188 i( us = TXN_IGNORE && y ! DB___txn_chd ) { 189 make_ = 0; 192 i( us = TXN_COMMIT ) 196 make_ = 1; 197 i( us = TXN_OK && 198 ( t = `__db_txi_upde ( v , 199 fo , txnid , y = DB___txn_xa_g ? 200 TXN_PREPARE : TXN_ABORT , NULL , & us , 0)) != 0) 201 ( t ); 204 DB_TXN_FORWARD_ROLL : 212 y ) { 213 DB___txn_cye : 214 DB___txn_ckp : 215 DB___db_no : 216 DB___dbg_gi : 217 make_ = 1; 221 i( txnid == 0) 222 us = 0; 224 t = `__db_txi_fd ( v , 225 fo , txnid , & us ); 227 i( t = DB_NOTFOUND ) 230 i( t != 0) 231 ( t ); 232 i( us = TXN_COMMIT ) { 233 make_ = 1; 241 ( `__db_unknown_ag ( 242 v , "__db_dich", ( u_t32_t ) do )); 245 i( make_ ) { 254 i( y & DB_debug_FLAG ) { 255 i( do = DB_TXN_PRINT ) 256 y &~ DB_debug_FLAG ; 258 `LOGCOPY_TOLSN ( v , lp , 259 ( u_t8_t *) db -> da + 260 ( y ) + 261 ( txnid )); 265 i( y > DB_ur_BEGIN ) { 266 i( dbv -> p_dich ! NULL ) 267 ( dbv -> `p_dich (dbenv, 268 db , lp , do )); 271 uy = y - DB_ur_BEGIN ; 272 i( uy > db -> ext_size || 273 db -> ext_dich [ uy ] = NULL ) { 274 `__db_rx ( v , 276 ( u_lg ) y ); 277 ( EINVAL ); 279 (( db -> ext_dich [ uy ])( dbv , 280 db , lp , do )); 282 i( y > db -> t_size || 283 db -> t_dich [ y ] = NULL ) { 284 `__db_rx ( v , 286 ( u_lg ) y ); 287 ( EINVAL ); 289 (( db -> t_dich [ y ])( v , 290 db , lp , do , fo )); 295 } } 310 $__db_add_covy ( dbv , db , func , ndx ) 311 DB_ENV * dbv ; 312 DB_DISTAB * db ; 313 (* func `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 314 u_t32_t ndx ; 316 size_t i , nsize ; 317 t ; 320 i( ndx < DB_ur_BEGIN ) { 321 `__db_rx ( dbv -> v , 323 ( u_lg ) ndx ); 324 ( EINVAL ); 326 ndx - DB_ur_BEGIN ; 329 i( ndx > db -> ext_size ) { 330 nsize = ndx + 40; 331 i(( t = 332 `__os_loc ( dbv -> v , nsize * 333 (( db -> ext_dich )[0]), &dtab->ext_dispatch)) 335 ( t ); 336 i = db -> ext_size ; i < nsize ; ++i) 337 ( db -> ext_dich )[ i ] = NULL ; 338 db -> ext_size = nsize ; 341 ( db -> ext_dich )[ ndx ] = func ; 343 } } 355 $__db_add_covy_t ( v , db , func , ndx ) 356 ENV * v ; 357 DB_DISTAB * db ; 358 (* func `__P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 359 u_t32_t ndx ; 361 size_t i , nsize ; 362 t ; 364 i( ndx > DB_ur_BEGIN ) { 365 `__db_rx ( v , 367 ( u_lg ) ndx ); 368 ( EINVAL ); 372 i( ndx > db -> t_size ) { 373 nsize = ndx + 40; 374 i(( t = 375 `__os_loc ( v , nsize * (( db -> t_dich )[0]), 376 & db -> t_dich )) != 0) 377 ( t ); 378 i = db -> t_size ; i < nsize ; ++i) 379 ( db -> t_dich )[ i ] = NULL ; 380 db -> t_size = nsize ; 383 ( db -> t_dich )[ ndx ] = func ; 385 } } 395 $__db_txi_ ( v , , low_txn , hi_txn , unc_l , ) 396 ENV * v ; 397 DB_THREAD_INFO * ; 398 u_t32_t low_txn , hi_txn ; 399 DB_LSN * unc_l ; 400 DB_TXNHEAD ** ; 402 DB_TXNHEAD * hdp ; 403 u_t32_t size , tmp ; 404 t ; 414 i( low_txn == 0) 415 size = 1; 417 i( hi_txn < low_txn ) { 418 tmp = hi_txn ; 419 hi_txn = low_txn ; 420 low_txn = tmp ; 422 tmp = hi_txn - low_txn ; 424 i( tmp > ( TXN_MAXIMUM - TXN_MINIMUM ) / 2) 425 tmp = ( low_txn - TXN_MINIMUM + ( TXN_MAXIMUM - hi_txn ); 426 size = tmp / 5; 427 i( size < 100) 428 size = 100; 430 i(( t = `__os_mloc ( v , 431 ( DB_TXNHEAD + size * ( hdp -> hd ), &headp)) != 0) 432 ( t ); 434 `memt ( hdp , 0, ( DB_TXNHEAD + size * (hdp-> hd )); 435 hdp -> maxid = hi_txn ; 436 hdp -> gi = 0; 437 hdp -> ns = size ; 438 hdp -> g_loc = 8; 439 hdp -> thad_fo = ; 440 i(( t = `__os_mloc ( v , hdp -> g_loc * 441 ( hdp -> g_y [0]), &headp->gen_array)) != 0) { 442 `__os_ ( v , hdp ); 443 ( t ); 445 hdp -> g_y [0]. gi = 0; 446 hdp -> g_y [0]. txn_m = TXN_MINIMUM ; 447 hdp -> g_y [0]. txn_max = TXN_MAXIMUM ; 448 i( unc_l ! NULL ) { 449 hdp -> unc_l = *trunc_lsn; 450 hdp -> maxl = * unc_l ; 452 `ZERO_LSN ( hdp -> unc_l ); 453 `ZERO_LSN ( hdp -> maxl ); 455 `ZERO_LSN ( hdp -> ck ); 457 * = hdp ; 459 } } 461 #FIND_GENERATION ( hp , txnid , g ) do { \ 462 u_t32_t __i ; \ 463 __i = 0; __<( hp )-> gi ; __i++) \ 465 i(( hp )-> g_y [ __i ]. txn_m < \ 466 ( hp )-> g_y [ __i ]. txn_max ? \ 467 (( txnid >( hp )-> g_y [ __i ]. txn_m && \ 468 ( txnid <( hp )-> g_y [ __i ]. txn_max ) : \ 469 (( txnid >( hp )-> g_y [ __i ]. txn_m || \ 470 ( txnid <( hp )-> g_y [ __i ]. txn_max )) \ 472 `DB_ASSERT ( v , __i <( hp )-> gi ); \ 473 g = ( hp )-> g_y [ __i ]. gi ; \ 474 } 0) ) 484 $__db_txi_add ( v , hp , txnid , us , l ) 485 ENV * v ; 486 DB_TXNHEAD * hp ; 487 u_t32_t txnid , us ; 488 DB_LSN * l ; 490 DB_TXNLIST * p ; 491 t ; 493 i(( t = `__os_mloc ( v , ( DB_TXNLIST ), & p )) != 0) 494 ( t ); 496 `LIST_INSERT_HEAD (& hp -> hd [ `DB_TXNLIST_MASK (hp, txnid )], p , lks ); 499 `FIND_GENERATION ( hp , txnid , p -> u . t . gi ); 500 p -> ty = TXNLIST_TXNID ; 501 p -> u . t . txnid =xnid; 502 p -> u . t . us = status; 503 i( txnid > hp -> maxid ) 504 hp -> maxid = txnid ; 505 i( l ! NULL && `IS_ZERO_LSN ( hp -> maxl && us = TXN_COMMIT ) 506 hp -> maxl = * l ; 508 `DB_ASSERT ( v , l = NULL || 509 us ! TXN_COMMIT || `LOG_COMPARE (& hp -> maxl , l ) >= 0); 512 } } 521 $__db_txi_move ( v , hp , txnid ) 522 ENV * v ; 523 DB_TXNHEAD * hp ; 524 u_t32_t txnid ; 526 DB_TXNLIST * y ; 527 u_t32_t us ; 529 ( `__db_txi_fd_ ( v , 530 hp , TXNLIST_TXNID , txnid , & y , 1, & us )); 531 } } 544 $__db_txi_ckp ( v , hp , ckp_l ) 545 ENV * v ; 546 DB_TXNHEAD * hp ; 547 DB_LSN * ckp_l ; 550 `COMPQUIET ( v , NULL ); 552 i( `IS_ZERO_LSN ( hp -> ck && !IS_ZERO_LSN(hp-> maxl ) && 553 `LOG_COMPARE (& hp -> maxl , ckp_l ) >= 0) 554 hp -> ck = * ckp_l ; 555 } } 564 $__db_txi_d ( v , hp ) 565 ENV * v ; 566 DB_TXNHEAD * hp ; 568 u_t32_t i ; 569 DB_TXNLIST * p ; 571 i( hp = NULL ) 574 i = 0; i < hp -> ns ; i++) 575 hp ! NULL && ( p = `LIST_FIRST (&hp-> hd [ i ])) != NULL) { 576 p -> ty ) { 577 TXNLIST_LSN : 578 `__os_ ( v , p -> u . l . l_ack ); 580 TXNLIST_DELETE : 581 TXNLIST_TXNID : 589 `LIST_REMOVE ( p , lks ); 590 `__os_ ( v , p ); 593 i( hp -> g_y ! NULL ) 594 `__os_ ( v , hp -> g_y ); 595 `__os_ ( v , hp ); 596 } } 610 $__db_txi_fd ( v , hp , txnid , u ) 611 ENV * v ; 612 DB_TXNHEAD * hp ; 613 u_t32_t txnid , * u ; 615 DB_TXNLIST * y ; 617 i( txnid == 0) 618 ( DB_NOTFOUND ); 620 ( `__db_txi_fd_ ( v , hp , 621 TXNLIST_TXNID , txnid , & y , 0, u )); 622 } } 633 $__db_txi_upde ( v , hp , txnid , us , l , t_us , add_ok ) 634 ENV * v ; 635 DB_TXNHEAD * hp ; 636 u_t32_t txnid , us ; 637 DB_LSN * l ; 638 u_t32_t * t_us ; 639 add_ok ; 641 DB_TXNLIST * p ; 642 t ; 644 i( txnid == 0) 645 ( DB_NOTFOUND ); 647 t = `__db_txi_fd_ ( v , 648 hp , TXNLIST_TXNID , txnid , & p , 0, t_us ); 650 i( t = DB_NOTFOUND && add_ok ) { 651 * t_us = us ; 652 ( `__db_txi_add ( v , hp , txnid , us , l )); 654 i( t != 0) 655 ( t ); 657 i(* t_us = TXN_IGNORE ) 660 p -> u . t . us = status; 662 i( l ! NULL && `IS_ZERO_LSN ( hp -> maxl && us = TXN_COMMIT ) 663 hp -> maxl = * l ; 665 ( t ); 666 } } 676 $__db_txi_fd_ ( v , 677 hp , ty , txnid , txip , de , u ) 678 ENV * v ; 679 DB_TXNHEAD * hp ; 680 db_txi_ty ty ; 681 u_t32_t txnid ; 682 DB_TXNLIST ** txip ; 683 de ; 684 u_t32_t * u ; 686 __db_hdlk * hd ; 687 DB_TXNLIST * p ; 688 u_t32_t gi , hash ; 689 t ; 691 t = 0; 693 i( hp = NULL ) 694 ( DB_NOTFOUND ); 696 ty ) { 697 TXNLIST_TXNID : 698 hash = txnid ; 699 `FIND_GENERATION ( hp , txnid , gi ); 701 TXNLIST_DELETE : 702 TXNLIST_LSN : 704 ( `__v_nic ( v , EINVAL )); 707 hd = & hp ->hd[ `DB_TXNLIST_MASK (hp, hash )]; 708 `LIST_FOREACH ( p , hd , lks ) { 709 i( p -> ty !=ype) 711 ty ) { 712 TXNLIST_TXNID : 713 i( p -> u . t . txnid !=xnid || 714 gi ! p -> u . t .generation) 716 * u = p -> u . t . us ; 719 TXNLIST_DELETE : 720 TXNLIST_LSN : 722 ( `__v_nic ( v , EINVAL )); 724 i( de == 1) { 725 `LIST_REMOVE ( p , lks ); 726 `__os_ ( v , p ); 727 * txip = NULL ; 728 } i( p ! `LIST_FIRST ( hd )) { 730 `LIST_REMOVE ( p , lks ); 731 `LIST_INSERT_HEAD ( hd , p , lks ); 732 * txip = p ; 734 * txip = p ; 735 ( t ); 738 ( DB_NOTFOUND ); 739 } } 749 $__db_txi_g ( v , hp , , m , max ) 750 ENV * v ; 751 DB_TXNHEAD * hp ; 752 ; 753 u_t32_t m , max ; 755 t ; 769 i( < 0) { 770 -- hp -> gi ; 771 `memmove ( hp -> g_y , &hp->gen_array[1], 772 ( hp -> gi + 1* (hp-> g_y [0])); 774 ++ hp -> gi ; 775 i( hp -> gi >hp-> g_loc ) { 776 hp -> g_loc *= 2; 777 i(( t = `__os_loc ( v , hp -> g_loc * 778 ( hp -> g_y [0]), &hp->gen_array)) != 0) 779 ( t ); 781 `memmove (& hp -> g_y [1], &hp->gen_array[0], 782 hp -> gi * (hp-> g_y [0])); 783 hp -> g_y [0]. gi = hp->generation; 784 hp -> g_y [0]. txn_m = m ; 785 hp -> g_y [0]. txn_max = max ; 788 } } 797 $__db_txi_ladd ( v , hp , lp ) 798 ENV * v ; 799 DB_TXNHEAD * hp ; 800 DB_LSN * lp ; 802 DB_TXNLIST * p ; 803 t ; 805 i( `IS_ZERO_LSN (* lp )) 808 `LIST_FOREACH ( p , & hp -> hd [0], lks ) 809 i( p -> ty = TXNLIST_LSN ) 812 i( p = NULL ) { 813 i(( t = `__db_txi_l ( v , hp , lp )) != 0) 814 ( t ); 815 ( DB_SURPRISE_KID ); 818 i( p -> u . l . ack_dx =p->u.l. ack_size ) { 819 p -> u . l . ack_size <<= 1; 820 i(( t = `__os_loc ( v , ( DB_LSN ) * 821 p -> u . l . ack_size , &p->u.l. l_ack )) != 0) { 822 `__db_txi_d ( v , hp ); 823 ( t ); 826 p -> u . l . l_ack [p->u.l. ack_dx ++] = * lp ; 829 } } 839 $__db_txi_lg ( v , hp , lp , ags ) 840 ENV * v ; 841 DB_TXNHEAD * hp ; 842 DB_LSN * lp ; 843 u_t32_t ags ; 845 DB_TXNLIST * p ; 847 `COMPQUIET ( v , NULL ); 848 `COMPQUIET ( ags , 0); 850 `LIST_FOREACH ( p , & hp -> hd [0], lks ) 851 i( p -> ty = TXNLIST_LSN ) 854 i( p = NULL ||-> u . l . ack_dx == 0) { 855 `ZERO_LSN (* lp ); 859 * lp = p -> u . l . l_ack [--p->u.l. ack_dx ]; 862 } } 871 $__db_txi_l ( v , hp , lp ) 872 ENV * v ; 873 DB_TXNHEAD * hp ; 874 DB_LSN * lp ; 876 DB_TXNLIST * p ; 877 t ; 879 p = NULL ; 881 i(( t = `__os_mloc ( v , ( DB_TXNLIST ), & p )) != 0) 882 r ; 883 `LIST_INSERT_HEAD (& hp -> hd [0], p , lks ); 885 p -> ty = TXNLIST_LSN ; 886 i(( t = `__os_mloc ( v , 887 ( DB_LSN * DB_LSN_STACK_SIZE , & p -> u . l . l_ack )) != 0) 888 r ; 889 p -> u . l . ack_dx = 1; 890 p -> u . l . ack_size = DB_LSN_STACK_SIZE ; 891 p -> u . l . l_ack [0] = * lp ; 895 r : `__db_txi_d ( v , hp ); 896 ( t ); 897 } } 899 #ifde DEBUG 907 $__db_txi_t ( hp ) 908 DB_TXNHEAD * hp ; 910 DB_TXNLIST * p ; 911 u_t32_t i ; 912 * txy ; 914 `tf ("Maxid: %lu Generation: %lu\n", 915 ( u_lg ) hp -> maxid , (u_lg)hp-> gi ); 916 i = 0; i < hp -> ns ; i++) 917 `LIST_FOREACH ( p , & hp -> hd [ i ], lks ) { 918 i( p -> ty ! TXNLIST_TXNID ) { 919 `tf ("Uecognizedy: %d\n", p -> ty ); 922 p -> u . t . us ) { 923 TXN_OK : 924 txy = "OK"; 926 TXN_COMMIT : 927 txy = "commit"; 929 TXN_PREPARE : 930 txy = "prepare"; 932 TXN_ABORT : 933 txy = "abort"; 935 TXN_IGNORE : 936 txy = "ignore"; 938 TXN_EXPECTED : 939 txy = "expected"; 941 TXN_UNEXPECTED : 942 txy = "unexpected"; 945 txy = "UNKNOWN"; 948 `tf ("TXNID: %lx(%lu): %s\n", 949 ( u_lg ) p -> u . t . txnid , 950 ( u_lg ) p -> u . t . gi , txy ); 952 } } @../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 -> v , `IS_DIRTY ( g )); 36 `DB_ASSERT ( dbp -> v , 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 -> v , 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 BKEYDATA bk ; 99 DB * dbp ; 100 DBT thdr ; 101 db_dx_t * p ; 102 t ; 103 u_t8_t * p ; 105 dbp = dbc ->dbp; 106 `DB_ASSERT ( dbp -> v , `IS_DIRTY ( g )); 108 i( nbys > `P_FREESPACE ( dbp , g )) { 109 `DB_ASSERT ( dbp -> v , 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 ~"dbc/hash.h " 15 #ide HAVE_QUEUE 16 ~"dbc/qam.h " 18 ~"dbc/lock.h " 19 ~"dbc/log.h " 20 ~"dbc/mp.h " 21 ~"dbc/txn.h " 23 __db_assoc_g __P (( DB *, DB *, 24 (*)( DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 25 __dbc_d_g `__P (( DBC *, u_t32_t )); 26 __dbc_g_g `__P (( DBC *, DBT *, DBT *, u_t32_t )); 27 __dbc_pg_g `__P (( DBC *, DBT *, u_t32_t )); 28 __dbc_put_g `__P (( DBC *, DBT *, DBT *, u_t32_t )); 29 __db_curv `__P ((cڡ ENV *)); 30 __db_curs_g `__P (( DB *, u_t32_t )); 31 __db_d_g `__P (( DB *, DBT *, u_t32_t )); 32 __db_g_g `__P ((cڡ DB *, DBT *, DBT *, u_t32_t )); 33 __db_jo_g `__P (( DB *, DBC **, u_t32_t )); 34 __db_ݒ_g `__P (( DB *, 35 DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t )); 36 __db_pg_g `__P (( DB *, DBT *, u_t32_t )); 37 __db_put_g `__P (( DB *, DBT *, DBT *, u_t32_t )); 38 __dbt_ `__P ((cڡ DB *, cڡ *, cڡ DBT *, )); 39 __db_assoc_feign_g `__P (( DB *, DB *, 40 (*)( DB *, cڡ DBT *, DBT *, const DBT *, *), 41 u_t32_t )); 71 $__db_assoc_ ( dbp , txn , sdbp , back , ags ) 72 DB * dbp , * sdbp ; 73 DB_TXN * txn ; 74 (* back `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 75 u_t32_t ags ; 77 DBC * sdbc ; 78 DB_THREAD_INFO * ; 79 ENV * v ; 80 hd_check , t , t_t , txn_lol ; 82 v = dbp ->env; 83 txn_lol = 0; 85 `STRIP_AUTO_COMMIT ( ags ); 87 `ENV_ENTER ( v , ); 90 hd_check = `IS_ENV_REPLICATED ( v ); 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 ( v , 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 ( v , , 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 ( v , txn , 0, t )) &&et == 0) 136 t = t_t ; 139 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 140 t = t_t ; 141 `ENV_LEAVE ( v , ); 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 ENV * v ; 156 t ; 158 v = dbp ->env; 160 i( `F_ISSET ( sdbp , DB_AM_SECONDARY )) { 161 `__db_rx ( v , 163 ( EINVAL ); 165 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 166 `__db_rx ( v , 168 ( EINVAL ); 170 i( `F_ISSET ( dbp , DB_AM_DUP )) { 171 `__db_rx ( v , 173 ( EINVAL ); 175 i( `F_ISSET ( dbp , DB_AM_RENUMBER )) { 176 `__db_rx ( v , 178 ( EINVAL ); 188 i( dbp -> v ! sdbp ->env && 189 (! `F_ISSET ( dbp -> v , ENV_DBLOCAL ) || 190 ! `F_ISSET ( sdbp -> v , ENV_DBLOCAL ))) { 191 `__db_rx ( v , 193 ( EINVAL ); 195 i(( `DB_IS_THREADED ( dbp && !DB_IS_THREADED( sdbp )) || 196 (! `DB_IS_THREADED ( dbp && DB_IS_THREADED( sdbp ))) { 197 `__db_rx ( v , 199 ( EINVAL ); 201 i( back = NULL && 202 (! `F_ISSET ( dbp , DB_AM_RDONLY || !F_ISSET( sdbp , DB_AM_RDONLY))) { 203 `__db_rx ( v , 205 ( EINVAL ); 208 i(( t = `__db_fchk ( v , "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_THREAD_INFO * ; 227 ENV * v ; 228 hd_check , t , t_t ; 230 v = dbp ->env; 231 t = 0; 240 i( ags !0 && fg! DB_NOSYNC ) 241 t = `__db_ ( v , "DB->close", 0); 243 `ENV_ENTER ( v , ); 246 hd_check = `IS_ENV_REPLICATED ( v ); 247 i( hd_check && ( t_t = `__db_p_r ( dbp , 0, 0, 0)) != 0) { 248 hd_check = 0; 249 i( t == 0) 250 t = t_t ; 253 i(( t_t = `__db_o ( dbp , NULL , ags )!0 && t == 0) 254 t = t_t ; 257 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 258 t = t_t ; 260 `ENV_LEAVE ( v , ); 261 ( t ); 262 } } 271 $__db_curs_ ( dbp , txn , db , ags ) 272 DB * dbp ; 273 DB_TXN * txn ; 274 DBC ** db ; 275 u_t32_t ags ; 277 DB_THREAD_INFO * ; 278 ENV * v ; 279 REGENV * nv ; 280 p_blocked , t ; 282 v = dbp ->env; 284 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->cursor"); 286 `ENV_ENTER ( v , ); 289 p_blocked = 0; 290 i( txn = NULL && `IS_ENV_REPLICATED ( v )) { 291 i(( t = `___p_r ( v )) != 0) 292 r ; 293 p_blocked = 1; 294 nv = v -> gfo -> imy ; 295 i( dbp -> timeamp ! nv -> p_timeamp ) { 296 `__db_rx ( v , "%s %s", 299 t = DB_REP_HANDLE_DEAD ; 300 r ; 303 i(( t = `__db_curs_g ( dbp , ags )) != 0) 304 r ; 313 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 1)) != 0) 314 r ; 316 t = `__db_curs ( dbp , , txn , db , ags ); 318 r : 319 i( t !0 && p_blocked ) 320 () `___p_ex ( v ); 322 `ENV_LEAVE ( v , ); 323 ( t ); 324 } } 334 $__db_curs ( dbp , , txn , db , ags ) 335 DB * dbp ; 336 DB_THREAD_INFO * ; 337 DB_TXN * txn ; 338 DBC ** db ; 339 u_t32_t ags ; 341 DBC * dbc ; 342 ENV * v ; 343 db_lockmode_t mode ; 344 u_t32_t ; 345 t ; 347 v = dbp ->env; 349 i( `MULTIVERSION ( dbp && txn = NULL && ( `LF_ISSET ( DB_TXN_SNAPSHOT ) || 350 `F_ISSET ( v -> dbv , DB_ENV_TXN_SNAPSHOT ))) { 351 i(( t = 352 `__txn_beg ( v , , NULL , & txn , DB_TXN_SNAPSHOT )) != 0) 353 ( t ); 354 `F_SET ( txn , TXN_PRIVATE ); 357 i(( t = `__db_curs_t ( dbp , , 358 txn , dbp -> ty , PGNO_INVALID , 0, NULL , & dbc )) != 0) 359 ( t ); 365 i( `CDB_LOCKING ( v )) { 366 = `LF_ISSET ( DB_OPFLAGS_MASK ); 367 mode = ( = DB_WRITELOCK ? DB_LOCK_WRITE : 368 (( = DB_WRITECURSOR || txn ! NULL ? DB_LOCK_IWRITE : 369 DB_LOCK_READ ); 370 i(( t = `__lock_g ( v , dbc -> lock , 0, 371 & dbc -> lock_dbt , mode , &dbc-> mylock )) != 0) 372 r ; 373 i( = DB_WRITECURSOR ) 374 `F_SET ( dbc , DBC_WRITECURSOR ); 375 i( = DB_WRITELOCK ) 376 `F_SET ( dbc , DBC_WRITER ); 379 i( `LF_ISSET ( DB_READ_UNCOMMITTED ) || 380 ( txn ! NULL && `F_ISSET xn, TXN_READ_UNCOMMITTED ))) 381 `F_SET ( dbc , DBC_READ_UNCOMMITTED ); 383 i( `LF_ISSET ( DB_READ_COMMITTED ) || 384 ( txn ! NULL && `F_ISSET xn, TXN_READ_COMMITTED ))) 385 `F_SET ( dbc , DBC_READ_COMMITTED ); 387 * db = dbc ; 390 r : () `__dbc_o ( dbc ); 391 ( t ); 392 } } 399 $__db_curs_g ( dbp , ags ) 400 DB * dbp ; 401 u_t32_t ags ; 403 ENV * v ; 405 v = dbp ->env; 410 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED )) { 411 i(! `LOCKING_ON ( v )) 412 ( `__db_l ( v , "DB->cursor")); 415 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_TXN_SNAPSHOT ); 418 ags ) { 421 DB_WRITECURSOR : 422 i( `DB_IS_READONLY ( dbp )) 423 ( `__db_rdly ( v , "DB->cursor")); 424 i(! `CDB_LOCKING ( v )) 425 ( `__db_ ( v , "DB->cursor", 0)); 427 DB_WRITELOCK : 428 i( `DB_IS_READONLY ( dbp )) 429 ( `__db_rdly ( v , "DB->cursor")); 432 ( `__db_ ( v , "DB->cursor", 0)); 436 } } 445 $__db_d_ ( dbp , txn , key , ags ) 446 DB * dbp ; 447 DB_TXN * txn ; 448 DBT * key ; 449 u_t32_t ags ; 451 DB_THREAD_INFO * ; 452 ENV * v ; 453 hd_check , t , t_t , txn_lol ; 455 v = dbp ->env; 456 txn_lol = 0; 458 `STRIP_AUTO_COMMIT ( ags ); 459 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->del"); 461 #ifde CONFIG_TEST 462 i( `IS_REP_MASTER ( v )) 463 `DB_TEST_WAIT ( v ,nv-> _check ); 465 `ENV_ENTER ( v , ); 468 hd_check = `IS_ENV_REPLICATED ( v ); 469 i( hd_check && 470 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 471 hd_check = 0; 472 r ; 475 i(( t = `__db_d_g ( dbp , key , ags )) != 0) 476 r ; 479 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 480 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 481 r ; 482 txn_lol = 1; 486 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 487 r ; 489 t = `__db_d ( dbp , , txn , key , ags ); 491 r : i( txn_lol && 492 ( t_t = `__db_txn_auto_sve ( v , txn , 0, t )) &&et == 0) 493 t = t_t ; 496 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 497 t = t_t ; 498 `ENV_LEAVE ( v , ); 499 `__dbt_ur ( v , key , NULL , NULL); 500 ( t ); 501 } } 508 $__db_d_g ( dbp , key , ags ) 509 DB * dbp ; 510 DBT * key ; 511 u_t32_t ags ; 513 ENV * v ; 514 t ; 516 v = dbp ->env; 519 i( `DB_IS_READONLY ( dbp )) 520 ( `__db_rdly ( v , "DB->del")); 523 ags ) { 525 i(( t = `__dbt_urcy ( v , key )) != 0) 526 ( t ); 529 ( `__db_ ( v , "DB->del", 0)); 533 } } 542 $__db_exis ( dbp , txn , key , ags ) 543 DB * dbp ; 544 DB_TXN * txn ; 545 DBT * key ; 546 u_t32_t ags ; 548 DBT da ; 549 t ; 556 i(( t = `__db_fchk ( dbp -> v , "DB->exis", ags , 557 DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW )) != 0) 558 ( t ); 564 `memt (& da , 0, (data)); 565 da . dn = 0; 566 da . ags = DB_DBT_PARTIAL | DB_DBT_USERMEM ; 568 ( dbp -> `g (dbp, txn , key , & da , ags )); 569 } } 578 $__db_fd_ ( dbp , fdp ) 579 DB * dbp ; 580 * fdp ; 582 DB_FH * fhp ; 583 DB_THREAD_INFO * ; 584 ENV * v ; 585 hd_check , t , t_t ; 587 v = dbp ->env; 589 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->fd"); 591 `ENV_ENTER ( v , ); 594 hd_check = `IS_ENV_REPLICATED ( v ); 595 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) 596 r ; 608 i(( t = `__mp_xxx_fh ( dbp -> mpf , & fhp )) == 0) { 609 i( fhp = NULL ) { 610 * fdp = -1; 611 `__db_rx ( v , 613 t = ENOENT ; 615 * fdp = fhp -> fd ; 619 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 620 t = t_t ; 622 r : `ENV_LEAVE ( v , ); 623 ( t ); 624 } } 633 $__db_g_ ( dbp , txn , key , da , ags ) 634 DB * dbp ; 635 DB_TXN * txn ; 636 DBT * key , * da ; 637 u_t32_t ags ; 639 DB_THREAD_INFO * ; 640 ENV * v ; 641 u_t32_t mode ; 642 hd_check , igne_a , t , t_t , txn_lol ; 644 v = dbp ->env; 645 mode = 0; 646 txn_lol = 0; 648 `STRIP_AUTO_COMMIT ( ags ); 649 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get"); 651 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ) ? 1 : 0; 652 `LF_CLR ( DB_IGNORE_LEASE ); 654 i(( t = `__db_g_g ( dbp , key , da , ags )) != 0) 655 ( t ); 657 `ENV_ENTER ( v , ); 660 hd_check = `IS_ENV_REPLICATED ( v ); 661 i( hd_check && 662 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 663 hd_check = 0; 664 r ; 667 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 668 mode = DB_READ_UNCOMMITTED ; 669 i(( ags & DB_OPFLAGS_MASK = DB_CONSUME || 670 ( ags & DB_OPFLAGS_MASK = DB_CONSUME_WAIT ) { 671 mode = DB_WRITELOCK ; 672 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 673 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 674 r ; 675 txn_lol = 1; 680 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 681 mode = DB_WRITELOCK || `LF_ISSET ( DB_RMW ) ? 0 : 1)) != 0) 682 r ; 684 t = `__db_g ( dbp , , txn , key , da , ags ); 688 i( t == 0 && 689 `IS_REP_MASTER ( v && `IS_USING_LEASES nv&& ! igne_a ) 690 t = `__p_a_check ( v , 1); 692 r : i( txn_lol && 693 ( t_t = `__db_txn_auto_sve ( v , txn , 0, t )) &&et == 0) 694 t = t_t ; 697 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 698 t = t_t ; 700 `ENV_LEAVE ( v , ); 701 `__dbt_ur ( v , key , NULL , da ); 702 ( t ); 703 } } 713 $__db_g ( dbp , , txn , key , da , ags ) 714 DB * dbp ; 715 DB_THREAD_INFO * ; 716 DB_TXN * txn ; 717 DBT * key , * da ; 718 u_t32_t ags ; 720 DBC * dbc ; 721 u_t32_t mode ; 722 t , t_t ; 724 mode = 0; 725 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) { 726 mode = DB_READ_UNCOMMITTED ; 727 `LF_CLR ( DB_READ_UNCOMMITTED ); 728 } i( `LF_ISSET ( DB_READ_COMMITTED )) { 729 mode = DB_READ_COMMITTED ; 730 `LF_CLR ( DB_READ_COMMITTED ); 731 } i(( ags & DB_OPFLAGS_MASK = DB_CONSUME || 732 ( ags & DB_OPFLAGS_MASK = DB_CONSUME_WAIT ) 733 mode = DB_WRITELOCK ; 735 i(( t = `__db_curs ( dbp , , txn , & dbc , mode )) != 0) 736 ( t ); 738 `DEBUG_LREAD ( dbc , txn , "DB->g", key , NULL , ags ); 748 `F_SET ( dbc , DBC_TRANSIENT ); 755 `SET_RET_MEM ( dbc , dbp ); 757 i( `LF_ISSET (~( DB_RMW | DB_MULTIPLE )) == 0) 758 `LF_SET ( DB_SET ); 760 t = `__dbc_g ( dbc , key , da , ags ); 762 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 763 t = t_t ; 765 ( t ); 766 } } 773 $__db_g_g ( dbp , key , da , ags ) 774 cڡ DB * dbp ; 775 DBT * key , * da ; 776 u_t32_t ags ; 778 ENV * v ; 779 dty , mui , t ; 781 v = dbp ->env; 791 dty = 0; 792 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW )) { 793 i(! `LOCKING_ON ( v )) 794 ( `__db_l ( v , "DB->get")); 795 i(( t = `__db_fcchk ( v , "DB->get", 796 ags , DB_READ_UNCOMMITTED , DB_READ_COMMITTED )) != 0) 797 ( t ); 798 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED )) 799 dty = 1; 800 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 803 mui = 0; 804 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 805 i( `LF_ISSET ( DB_MULTIPLE_KEY )) 806 mui_r ; 807 mui = `LF_ISSET ( DB_MULTIPLE ) ? 1 : 0; 808 `LF_CLR ( DB_MULTIPLE ); 812 ags ) { 813 DB_GET_BOTH : 814 i(( t = `__dbt_urcy ( v , da )) != 0) 815 ( t ); 818 i(( t = `__dbt_urcy ( v , key )) != 0) { 819 `__dbt_ur ( v , key , NULL , da ); 820 ( t ); 823 DB_SET_RECNO : 824 i(! `F_ISSET ( dbp , DB_AM_RECNUM )) 825 r ; 826 i(( t = `__dbt_urcy ( v , key )) != 0) 827 ( t ); 829 DB_CONSUME : 830 DB_CONSUME_WAIT : 831 i( dty ) { 832 `__db_rx ( v , 834 `LF_ISSET ( DB_READ_UNCOMMITTED ) ? 836 ( EINVAL ); 838 i( mui ) 839 mui_r : ( `__db_ ( v , "DB->get", 1)); 840 i( dbp -> ty = DB_QUEUE ) 844 r : ( `__db_ ( v , "DB->get", 0)); 850 i(( t = 851 `__dbt_ ( dbp , "key", key , `DB_RETURNS_A_KEY (dbp, ags ))) != 0) 852 ( t ); 853 i(( t = `__dbt_ ( dbp , "da", da , 1)) != 0) 854 ( t ); 856 i( mui ) { 857 i(! `F_ISSET ( da , DB_DBT_USERMEM )) { 858 `__db_rx ( v , 860 ( EINVAL ); 862 i( `F_ISSET ( key , DB_DBT_PARTIAL ) || 863 `F_ISSET ( da , DB_DBT_PARTIAL )) { 864 `__db_rx ( v , 866 ( EINVAL ); 868 i( da -> un < 1024 || 869 da -> un < dbp -> pgsize || data->ulen % 1024 != 0) { 870 `__db_rx ( v , "%s%s", 873 ( EINVAL ); 878 } } 887 $__db_jo_ ( imy , curi , db , ags ) 888 DB * imy ; 889 DBC ** curi , ** db ; 890 u_t32_t ags ; 892 DB_THREAD_INFO * ; 893 ENV * v ; 894 hd_check , t , t_t ; 896 v = imy ->env; 898 `ENV_ENTER ( v , ); 901 hd_check = `IS_ENV_REPLICATED ( v ); 902 i( hd_check && ( t = 903 `__db_p_r ( imy , 1, 0, curi [0]-> txn ! NULL )) != 0) { 904 hd_check = 0; 905 r ; 908 i(( t = `__db_jo_g ( imy , curi , ags )) == 0) 909 t = `__db_jo ( imy , curi , db , ags ); 912 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 913 t = t_t ; 915 r : `ENV_LEAVE ( v , ); 916 ( t ); 917 } } 924 $__db_jo_g ( imy , curi , ags ) 925 DB * imy ; 926 DBC ** curi ; 927 u_t32_t ags ; 929 DB_TXN * txn ; 930 ENV * v ; 931 i ; 933 v = imy ->env; 935 ags ) { 937 DB_JOIN_NOSORT : 940 ( `__db_ ( v , "DB->join", 0)); 943 i( curi = NULL || curslist[0] == NULL) { 944 `__db_rx ( v , 946 ( EINVAL ); 949 txn = curi [0]->txn; 950 i = 1; curi [i] ! NULL ; i++) 951 i( curi [ i ]-> txn !=xn) { 952 `__db_rx ( v , 954 ( EINVAL ); 958 } } 968 $__db_key_nge_ ( dbp , txn , key , kr , ags ) 969 DB * dbp ; 970 DB_TXN * txn ; 971 DBT * key ; 972 DB_KEY_RANGE * kr ; 973 u_t32_t ags ; 975 DBC * dbc ; 976 DB_THREAD_INFO * ; 977 ENV * v ; 978 hd_check , t , t_t ; 980 v = dbp ->env; 982 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->key_range"); 989 i( ags != 0) 990 ( `__db_ ( v , "DB->key_range", 0)); 992 `ENV_ENTER ( v , ); 995 hd_check = `IS_ENV_REPLICATED ( v ); 996 i( hd_check && 997 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 998 hd_check = 0; 999 r ; 1003 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 1)) != 0) 1004 r ; 1010 dbp -> ty ) { 1011 DB_BTREE : 1012 #ide HAVE_BREW 1013 i(( t = `__dbt_urcy ( v , key )) != 0) 1014 r ; 1017 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 1020 `DEBUG_LWRITE ( dbc , NULL , "bam_key_range", NULL, NULL, 0); 1022 t = `__bam_key_nge ( dbc , key , kr , ags ); 1024 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1025 t = t_t ; 1026 `__dbt_ur ( v , key , NULL , NULL); 1029 `COMPQUIET ( dbc , NULL ); 1030 `COMPQUIET ( key , NULL ); 1031 `COMPQUIET ( kr , NULL ); 1034 DB_HASH : 1035 DB_QUEUE : 1036 DB_RECNO : 1037 t = `__dbh_am_chk ( dbp , DB_OK_BTREE ); 1039 DB_UNKNOWN : 1041 t = `__db_unknown_ty ( v , "DB->key_nge", dbp -> ty ); 1045 r : 1046 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1047 t = t_t ; 1049 `ENV_LEAVE ( v , ); 1050 ( t ); 1051 } } 1061 $__db_ݒ_ ( dbp , txn , ame , dme , ty , ags , mode ) 1062 DB * dbp ; 1063 DB_TXN * txn ; 1064 cڡ * ame , * dme ; 1065 DBTYPE ty ; 1066 u_t32_t ags ; 1067 mode ; 1069 DB_THREAD_INFO * ; 1070 ENV * v ; 1071 hd_check , nosync , move_me , t , t_t , txn_lol ; 1073 v = dbp ->env; 1074 nosync = 1; 1075 hd_check = move_me = txn_lol = 0; 1077 `ENV_ENTER ( v , ); 1084 i(( ame ! NULL && 1085 ( t = `__os_rdup ( v , ame , & dbp ->fname)) != 0)) 1086 r ; 1087 i(( dme ! NULL && 1088 ( t = `__os_rdup ( v , dme , & dbp ->dname)) != 0)) 1089 r ; 1090 dbp -> ݒ_ags = ags ; 1093 dbp -> ig_ags = dbp-> ags ; 1096 hd_check = `IS_ENV_REPLICATED ( v ); 1097 i( hd_check && 1098 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1099 hd_check = 0; 1100 r ; 1107 i( `IS_ENV_AUTO_COMMIT ( v , txn , ags )) { 1108 i(( t = `__db_txn_auto_ ( v , , & txn )) != 0) 1109 r ; 1110 txn_lol = 1; 1111 } i( txn ! NULL && ! `TXN_ON ( v ) && 1112 (! `CDB_LOCKING ( v || ! `F_ISSET ( txn , TXN_CDSGROUP ))) { 1113 t = `__db_n_txn_v ( v ); 1114 r ; 1116 `LF_CLR ( DB_AUTO_COMMIT ); 1123 i(( t = `__db_ݒ_g ( dbp , txn , ame , dme , ty , ags )) == 0) 1124 i(( t = `__db_ݒ ( dbp , , txn , ame , dme , ty , 1125 ags , mode , PGNO_BASE_MD )) != 0) 1126 txü ; 1138 i( dme = NULL && ! `IS_RECOVERING ( v && ! `LF_ISSET ( DB_RDONLY ) && 1139 ! `LF_ISSET ( DB_RDWRMASTER && `F_ISSET ( dbp , DB_AM_SUBDB )) { 1140 `__db_rx ( v , 1142 t = EINVAL ; 1143 txü ; 1150 i( `F_ISSET ( dbp , DB_AM_CREATED | DB_AM_CREATED_MSTR )) 1151 nosync = 0; 1154 `F_CLR ( dbp , DB_AM_DISCARD | DB_AM_CREATED | DB_AM_CREATED_MSTR ); 1161 txü : i( t !0 && ! `IS_REAL_TXN ( txn )) { 1162 move_me = ( `F_ISSET ( dbp , DB_AM_CREATED ) && 1163 ( ame ! NULL || dme != NULL)) ? 1 : 0; 1164 i( `F_ISSET ( dbp , DB_AM_CREATED_MSTR ) || 1165 ( dme = NULL && move_me )) 1167 () `__db_move_t ( dbp , 1168 , txn , ame , NULL , DB_FORCE ); 1169 i( move_me ) 1171 () `__db_move_t ( dbp , 1172 , txn , ame , dme , DB_FORCE ); 1175 i( txn_lol && ( t_t = 1176 `__db_txn_auto_sve ( v , txn , nosync , t )) &&et == 0) 1177 t = t_t ; 1179 r : 1180 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1181 t = t_t ; 1183 `ENV_LEAVE ( v , ); 1184 ( t ); 1185 } } 1192 $__db_ݒ_g ( dbp , txn , ame , dme , ty , ags ) 1193 DB * dbp ; 1194 DB_TXN * txn ; 1195 cڡ * ame , * dme ; 1196 DBTYPE ty ; 1197 u_t32_t ags ; 1199 ENV * v ; 1200 u_t32_t ok_ags ; 1201 t ; 1203 v = dbp ->env; 1206 #unde OKFLAGS 1207 #OKFLAGS \ 1208 ( DB_AUTO_COMMIT | DB_CREATE | DB_EXCL | DB_FCNTL_LOCKING | \ 1209 DB_MULTIVERSION | DB_NOMMAP | DB_NO_AUTO_COMMIT | DB_RDONLY | \ 1210 DB_RDWRMASTER | DB_READ_UNCOMMITTED | DB_THREAD | DB_TRUNCATE ) ) 1211 i(( t = `__db_fchk ( v , "DB->ݒ", ags , OKFLAGS )) != 0) 1212 ( t ); 1213 i( `LF_ISSET ( DB_EXCL && !LF_ISSET( DB_CREATE )) 1214 ( `__db_ ( v , "DB->open", 1)); 1215 i( `LF_ISSET ( DB_RDONLY && LF_ISSET( DB_CREATE )) 1216 ( `__db_ ( v , "DB->open", 1)); 1218 #ifdef HAVE_VXWORKS 1219 i( `LF_ISSET ( DB_TRUNCATE )) { 1220 `__db_rx ( v , "DB_TRUNCATEot supported on VxWorks"); 1221 ( DB_OPNOTSUP ); 1224 ty ) { 1225 DB_UNKNOWN : 1226 i( `LF_ISSET ( DB_CREATE | DB_TRUNCATE )) { 1227 `__db_rx ( v , 1229 ( EINVAL ); 1231 ok_ags = 0; 1233 DB_BTREE : 1234 ok_ags = DB_OK_BTREE ; 1236 DB_HASH : 1237 #ide HAVE_HASH 1238 ( `__db_no_hash_am ( v )); 1240 ok_ags = DB_OK_HASH ; 1242 DB_QUEUE : 1243 #ide HAVE_QUEUE 1244 ( `__db_no_queue_am ( v )); 1246 ok_ags = DB_OK_QUEUE ; 1248 DB_RECNO : 1249 ok_ags = DB_OK_RECNO ; 1252 `__db_rx ( v , "unknowty: %lu", ( u_lg ) ty ); 1253 ( EINVAL ); 1255 i( ok_ags ) 1256 `DB_ILLEGAL_METHOD ( dbp , ok_ags ); 1259 i(! `F_ISSET ( v , ENV_DBLOCAL | ENV_OPEN_CALLED )) { 1260 `__db_rx ( v , "databasenvironmentot yet opened"); 1261 ( EINVAL ); 1269 i(! `F_ISSET ( v , ENV_DBLOCAL && ! `MPOOL_ON (env)) { 1270 `__db_rx ( v , "environment didot include memoryool"); 1271 ( EINVAL ); 1278 i( `LF_ISSET ( DB_THREAD && ! `F_ISSET ( v , ENV_DBLOCAL | ENV_THREAD )) { 1279 `__db_rx ( v , "environmentot created using DB_THREAD"); 1280 ( EINVAL ); 1284 i( `LF_ISSET ( DB_MULTIVERSION && ! `IS_REAL_TXN ( txn )) { 1285 `__db_rx ( v , 1287 ( EINVAL ); 1290 i( `LF_ISSET ( DB_MULTIVERSION && ty = DB_QUEUE ) { 1291 `__db_rx ( v , 1293 ( EINVAL ); 1297 i( `LF_ISSET ( DB_TRUNCATE && ( `LOCKING_ON ( v || txn ! NULL )) { 1298 `__db_rx ( v , 1300 `LOCKING_ON ( v ) ? "locking" : "transactions"); 1301 ( EINVAL ); 1305 i( dme ! NULL ) { 1307 i( ty = DB_QUEUE && ame ! NULL ) { 1308 `__db_rx ( 1309 v , "Queue databases must be one-per-file"); 1310 ( EINVAL ); 1317 i( ame = NULL ) 1318 `F_CLR ( dbp , DB_AM_CHKSUM | DB_AM_ENCRYPT ); 1322 } } 1332 $__db_pg_ ( dbp , txn , skey , pkey , da , ags ) 1333 DB * dbp ; 1334 DB_TXN * txn ; 1335 DBT * skey , * pkey , * da ; 1336 u_t32_t ags ; 1338 DB_THREAD_INFO * ; 1339 ENV * v ; 1340 hd_check , igne_a , t , t_t ; 1342 v = dbp ->env; 1344 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->pget"); 1346 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ) ? 1 : 0; 1347 `LF_CLR ( DB_IGNORE_LEASE ); 1349 i(( t = `__db_pg_g ( dbp , pkey , ags )) != 0 || 1350 ( t = `__db_g_g ( dbp , skey , da , ags )) != 0) { 1351 `__dbt_ur ( v , skey , pkey , da ); 1352 ( t ); 1355 `ENV_ENTER ( v , ); 1358 hd_check = `IS_ENV_REPLICATED ( v ); 1359 i( hd_check && 1360 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1361 hd_check = 0; 1362 r ; 1365 t = `__db_pg ( dbp , , txn , skey , pkey , da , ags ); 1369 i( t == 0 && 1370 `IS_REP_MASTER ( v && `IS_USING_LEASES nv&& ! igne_a ) 1371 t = `__p_a_check ( v , 1); 1373 r : 1374 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1375 t = t_t ; 1377 `ENV_LEAVE ( v , ); 1378 `__dbt_ur ( v , skey , pkey , da ); 1379 ( t ); 1380 } } 1390 $__db_pg ( dbp , , txn , skey , pkey , da , ags ) 1391 DB * dbp ; 1392 DB_THREAD_INFO * ; 1393 DB_TXN * txn ; 1394 DBT * skey , * pkey , * da ; 1395 u_t32_t ags ; 1397 DBC * dbc ; 1398 u_t32_t mode ; 1399 t , t_t ; 1401 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) { 1402 mode = DB_READ_UNCOMMITTED ; 1403 `LF_CLR ( DB_READ_UNCOMMITTED ); 1404 } i( `LF_ISSET ( DB_READ_COMMITTED )) { 1405 mode = DB_READ_COMMITTED ; 1406 `LF_CLR ( DB_READ_COMMITTED ); 1408 mode = 0; 1410 i(( t = `__db_curs ( dbp , , txn , & dbc , mode )) != 0) 1411 ( t ); 1413 `SET_RET_MEM ( dbc , dbp ); 1415 `DEBUG_LREAD ( dbc , txn , "__db_pg", skey , NULL , ags ); 1431 i( pkey = NULL ) 1432 dbc -> rkey = &dbc-> my_rkey ; 1438 i( ags =0 || fg= DB_RMW ) 1439 ags | DB_SET ; 1441 t = `__dbc_pg ( dbc , skey , pkey , da , ags ); 1443 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1444 t = t_t ; 1446 ( t ); 1447 } } 1454 $__db_pg_g ( dbp , pkey , ags ) 1455 DB * dbp ; 1456 DBT * pkey ; 1457 u_t32_t ags ; 1459 ENV * v ; 1460 t ; 1462 v = dbp ->env; 1464 i(! `F_ISSET ( dbp , DB_AM_SECONDARY )) { 1465 `__db_rx ( v , 1467 ( EINVAL ); 1470 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 1471 `__db_rx ( v , 1473 ( EINVAL ); 1477 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 1478 ags ) { 1479 DB_CONSUME : 1480 DB_CONSUME_WAIT : 1481 ( `__db_ ( v , "DB->pget", 0)); 1491 i( pkey ! NULL && 1492 ( t = `__dbt_ ( dbp , "imy key", pkey , 1)) != 0) 1493 ( t ); 1495 i( ags = DB_GET_BOTH ) { 1497 i( pkey = NULL ) { 1498 `__db_rx ( v , 1500 ( EINVAL ); 1502 i(( t = `__dbt_urcy ( v , pkey )) != 0) 1503 ( t ); 1507 } } 1516 $__db_put_ ( dbp , txn , key , da , ags ) 1517 DB * dbp ; 1518 DB_TXN * txn ; 1519 DBT * key , * da ; 1520 u_t32_t ags ; 1522 DB_THREAD_INFO * ; 1523 ENV * v ; 1524 hd_check , t , txn_lol , t_t ; 1526 v = dbp ->env; 1527 txn_lol = 0; 1529 `STRIP_AUTO_COMMIT ( ags ); 1530 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->put"); 1532 i(( t = `__db_put_g ( dbp , key , da , ags )) != 0) 1533 ( t ); 1535 `ENV_ENTER ( v , ); 1538 hd_check = `IS_ENV_REPLICATED ( v ); 1539 i( hd_check && 1540 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 1541 hd_check = 0; 1542 r ; 1546 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 1547 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 1548 r ; 1549 txn_lol = 1; 1553 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 1554 r ; 1556 t = `__db_put ( dbp , , txn , key , da , ags ); 1558 r : i( txn_lol && 1559 ( t_t = `__db_txn_auto_sve ( v , txn , 0, t )) &&et == 0) 1560 t = t_t ; 1563 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1564 t = t_t ; 1566 `ENV_LEAVE ( v , ); 1567 `__dbt_ur ( v , key , NULL , da ); 1568 ( t ); 1569 } } 1576 $__db_put_g ( dbp , key , da , ags ) 1577 DB * dbp ; 1578 DBT * key , * da ; 1579 u_t32_t ags ; 1581 ENV * v ; 1582 t , tukey ; 1584 v = dbp ->env; 1585 tukey = 0; 1588 i( `DB_IS_READONLY ( dbp )) 1589 ( `__db_rdly ( v , "DB->put")); 1592 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 1593 `__db_rx ( v , "DB->put forbidden on secondary indices"); 1594 ( EINVAL ); 1598 ags ) { 1600 DB_NOOVERWRITE : 1602 DB_APPEND : 1603 i( dbp -> ty ! DB_RECNO && dbp->ty ! DB_QUEUE ) 1604 r ; 1605 tukey = 1; 1607 DB_NODUPDATA : 1608 i( `F_ISSET ( dbp , DB_AM_DUPSORT )) 1612 r : ( `__db_ ( v , "DB->put", 0)); 1620 i((( tukey && key ! NULL ) || !returnkey) && 1621 ( t = `__dbt_ ( dbp , "key", key , tukey )) != 0) 1622 ( t ); 1623 i(( t = `__dbt_ ( dbp , "da", da , 0)) != 0) 1624 ( t ); 1635 i(( tukey && 1636 key ! NULL && `F_ISSET (key, DB_DBT_PARTIAL && key-> dn != 0) || 1637 (! tukey && `F_ISSET ( key , DB_DBT_PARTIAL ))) 1638 ( `__db_ ( v , "key DBT", 0)); 1641 i( `F_ISSET ( da , DB_DBT_PARTIAL ) && 1642 ( `F_ISSET ( dbp , DB_AM_DUP || F_ISSET( key , DB_DBT_DUPOK ))) { 1643 `__db_rx ( v , 1645 ( EINVAL ); 1648 i(( ags ! DB_APPEND && ( t = `__dbt_urcy ( v , key )) != 0) || 1649 ( t = `__dbt_urcy ( v , da )) != 0) 1650 ( t ); 1653 } } 1663 $__db_com_ ( dbp , txn , t , , c_da , ags , d ) 1664 DB * dbp ; 1665 DB_TXN * txn ; 1666 DBT * t , * ; 1667 DB_COMPACT * c_da ; 1668 u_t32_t ags ; 1669 DBT * d ; 1671 DB_COMPACT * dp , l_da ; 1672 DB_THREAD_INFO * ; 1673 ENV * v ; 1674 hd_check , t , t_t ; 1676 v = dbp ->env; 1678 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->compact"); 1685 i(( t = `__db_fchk ( 1686 v , "DB->com", ags , DB_FREELIST_ONLY | DB_FREE_SPACE )) != 0) 1687 ( t ); 1690 i( `DB_IS_READONLY ( dbp )) 1691 ( `__db_rdly ( v , "DB->compact")); 1693 i( t ! NULL && ( t = `__dbt_urcy ( v , start)) != 0) 1694 ( t ); 1695 i( ! NULL && ( t = `__dbt_urcy ( v , stop)) != 0) 1696 ( t ); 1698 `ENV_ENTER ( v , ); 1701 hd_check = `IS_ENV_REPLICATED ( v ); 1702 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 1703 hd_check = 0; 1704 r ; 1707 i( c_da = NULL ) { 1708 dp = & l_da ; 1709 `memt ( dp , 0, (*dp)); 1711 dp = c_da ; 1713 dbp -> ty ) { 1714 DB_HASH : 1715 i(! `LF_ISSET ( DB_FREELIST_ONLY )) 1716 r ; 1718 DB_BTREE : 1719 DB_RECNO : 1720 t = `__bam_com ( dbp , , txn , t , , dp , ags , d ); 1724 r : t = `__dbh_am_chk ( dbp , DB_OK_BTREE ); 1729 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1730 t = t_t ; 1732 `ENV_LEAVE ( v , ); 1733 `__dbt_ur ( v , t , , NULL ); 1734 ( t ); 1735 } } 1746 $__db_assoc_feign_ ( fdbp , dbp , back , ags ) 1747 DB * dbp , * fdbp ; 1748 (* back `__P (( DB *, cڡ DBT *, DBT *, const DBT *, *)); 1749 u_t32_t ags ; 1752 DB_THREAD_INFO * ; 1753 ENV * v ; 1754 hd_check , t , t_t ; 1756 v = dbp ->env; 1758 `PANIC_CHECK ( v ); 1759 `STRIP_AUTO_COMMIT ( ags ); 1761 `ENV_ENTER ( v , ); 1764 hd_check = `IS_ENV_REPLICATED ( v ); 1765 i( hd_check && 1766 ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 1767 hd_check = 0; 1768 r ; 1771 i(( t = `__db_assoc_feign_g ( fdbp , dbp , back , ags )) != 0) 1772 r ; 1774 t = `__db_assoc_feign ( fdbp , dbp , back , ags ); 1776 r : 1777 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1778 t = t_t ; 1779 `ENV_LEAVE ( v , ); 1780 ( t ); 1781 } } 1788 $__db_assoc_feign_g ( fdbp , dbp , back , ags ) 1789 DB * dbp , * fdbp ; 1790 (* back `__P (( DB *, cڡ DBT *, DBT *, const DBT *, *)); 1791 u_t32_t ags ; 1793 ENV * v ; 1795 v = fdbp ->env; 1797 i( `F_ISSET ( fdbp , DB_AM_SECONDARY )) { 1798 `__db_rx ( v , 1800 ( EINVAL ); 1802 i( `F_ISSET ( fdbp , DB_AM_DUP )) { 1803 `__db_rx ( v , 1805 ( EINVAL ); 1807 i( `F_ISSET ( fdbp , DB_AM_RENUMBER )) { 1808 `__db_rx ( v , 1810 ( EINVAL ); 1812 i(! `F_ISSET ( dbp , DB_AM_SECONDARY )) { 1813 `__db_rx ( v , 1815 ( EINVAL ); 1817 i( `LF_ISSET ( DB_FOREIGN_NULLIFY && back = NULL ) { 1818 `__db_rx ( v , 1820 ( EINVAL ); 1821 } i(! `LF_ISSET ( DB_FOREIGN_NULLIFY && back ! NULL ) { 1822 `__db_rx ( v , 1824 ( EINVAL ); 1828 } } 1837 $__db_sync_ ( dbp , ags ) 1838 DB * dbp ; 1839 u_t32_t ags ; 1841 DB_THREAD_INFO * ; 1842 ENV * v ; 1843 hd_check , t , t_t ; 1845 v = dbp ->env; 1847 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->sync"); 1854 i( ags != 0) 1855 ( `__db_ ( v , "DB->sync", 0)); 1857 `ENV_ENTER ( v , ); 1860 hd_check = `IS_ENV_REPLICATED ( v ); 1861 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 1862 hd_check = 0; 1863 r ; 1866 t = `__db_sync ( dbp ); 1869 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1870 t = t_t ; 1872 r : `ENV_LEAVE ( v , ); 1873 ( t ); 1874 } } 1883 $__dbc_o_ ( dbc ) 1884 DBC * dbc ; 1886 DB * dbp ; 1887 DB_THREAD_INFO * ; 1888 ENV * v ; 1889 hd_check , t , t_t ; 1891 dbp = dbc ->dbp; 1892 v = dbp ->env; 1899 i(! `F_ISSET ( dbc , DBC_ACTIVE )) { 1900 `__db_rx ( v , "Closinglready-closed cursor"); 1901 ( EINVAL ); 1904 `ENV_ENTER ( v , ); 1907 hd_check = dbc -> txn = NULL && `IS_ENV_REPLICATED ( v ); 1908 t = `__dbc_o ( dbc ); 1911 i( hd_check && 1912 ( t_t = `___p_ex ( v )!0 && t == 0) 1913 t = t_t ; 1915 `ENV_LEAVE ( v , ); 1916 ( t ); 1917 } } 1926 $__dbc_cou_ ( dbc , , ags ) 1927 DBC * dbc ; 1928 db_o_t * ; 1929 u_t32_t ags ; 1931 DB * dbp ; 1932 DB_THREAD_INFO * ; 1933 ENV * v ; 1934 t ; 1936 dbp = dbc ->dbp; 1937 v = dbp ->env; 1946 i( ags != 0) 1947 ( `__db_ ( v , "DBcursor->count", 0)); 1949 i(! `IS_INITIALIZED ( dbc )) 1950 ( `__db_curv ( v )); 1952 `ENV_ENTER ( v , ); 1953 t = `__dbc_cou ( dbc , ); 1954 `ENV_LEAVE ( v , ); 1955 ( t ); 1956 } } 1965 $__dbc_d_ ( dbc , ags ) 1966 DBC * dbc ; 1967 u_t32_t ags ; 1969 DB * dbp ; 1970 DB_THREAD_INFO * ; 1971 ENV * v ; 1972 t ; 1974 dbp = dbc ->dbp; 1975 v = dbp ->env; 1977 i(( t = `__dbc_d_g ( dbc , ags )) != 0) 1978 ( t ); 1980 `ENV_ENTER ( v , ); 1983 i(( t = `__db_check_txn ( dbp , dbc -> txn , dbc-> lock , 0)) != 0) 1984 r ; 1986 `DEBUG_LWRITE ( dbc , dbc-> txn , "DBcurs->d", NULL , NULL, ags ); 1987 t = `__dbc_d ( dbc , ags ); 1989 r : `ENV_LEAVE ( v , ); 1990 ( t ); 1991 } } 1998 $__dbc_d_g ( dbc , ags ) 1999 DBC * dbc ; 2000 u_t32_t ags ; 2002 DB * dbp ; 2003 ENV * v ; 2005 dbp = dbc ->dbp; 2006 v = dbp ->env; 2009 i( `DB_IS_READONLY ( dbp )) 2010 ( `__db_rdly ( v , "DBcursor->del")); 2013 ags ) { 2016 DB_UPDATE_SECONDARY : 2017 `DB_ASSERT ( v , `F_ISSET ( dbp , DB_AM_SECONDARY )); 2020 ( `__db_ ( v , "DBcursor->del", 0)); 2027 i(! `IS_INITIALIZED ( dbc )) 2028 ( `__db_curv ( v )); 2031 } } 2040 $__dbc_dup_ ( dbc , db , ags ) 2041 DBC * dbc , ** db ; 2042 u_t32_t ags ; 2044 DB * dbp ; 2045 DB_THREAD_INFO * ; 2046 ENV * v ; 2047 t ; 2049 dbp = dbc ->dbp; 2050 v = dbp ->env; 2057 i( ags !0 && fg! DB_POSITION ) 2058 ( `__db_ ( v , "DBcursor->dup", 0)); 2060 `ENV_ENTER ( v , ); 2061 t = `__dbc_dup ( dbc , db , ags ); 2062 `ENV_LEAVE ( v , ); 2063 ( t ); 2064 } } 2073 $__dbc_g_ ( dbc , key , da , ags ) 2074 DBC * dbc ; 2075 DBT * key , * da ; 2076 u_t32_t ags ; 2078 DB * dbp ; 2079 DB_THREAD_INFO * ; 2080 ENV * v ; 2081 igne_a , t ; 2083 dbp = dbc ->dbp; 2084 v = dbp ->env; 2086 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ) ? 1 : 0; 2087 `LF_CLR ( DB_IGNORE_LEASE ); 2088 i(( t = `__dbc_g_g ( dbc , key , da , ags )) != 0) 2089 ( t ); 2091 `ENV_ENTER ( v , ); 2093 `DEBUG_LREAD ( dbc , dbc-> txn , "DBcursor->get", 2094 ags = DB_SET || fg= DB_SET_RANGE ? key : NULL , NULL, flags); 2095 t = `__dbc_g ( dbc , key , da , ags ); 2100 i( t == 0 && 2101 `IS_REP_MASTER ( v && `IS_USING_LEASES nv&& ! igne_a ) 2102 t = `__p_a_check ( v , 1); 2104 `ENV_LEAVE ( v , ); 2105 `__dbt_ur ( v , key , NULL , da ); 2106 ( t ); 2107 } } 2114 $__dbc_g_g ( dbc , key , da , ags ) 2115 DBC * dbc ; 2116 DBT * key , * da ; 2117 u_t32_t ags ; 2119 DB * dbp ; 2120 ENV * v ; 2121 dty , mui , t ; 2123 dbp = dbc ->dbp; 2124 v = dbp ->env; 2141 dty = 0; 2142 i( `LF_ISSET ( DB_READ_UNCOMMITTED | DB_RMW )) { 2143 i(! `LOCKING_ON ( v )) 2144 ( `__db_l ( v , "DBcursor->get")); 2145 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 2146 dty = 1; 2147 `LF_CLR ( DB_READ_UNCOMMITTED | DB_RMW ); 2150 mui = 0; 2151 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 2152 mui = 1; 2153 i( `LF_ISSET ( DB_MULTIPLE && LF_ISSET( DB_MULTIPLE_KEY )) 2154 mui_r ; 2155 `LF_CLR ( DB_MULTIPLE | DB_MULTIPLE_KEY ); 2159 ags ) { 2160 DB_CONSUME : 2161 DB_CONSUME_WAIT : 2162 i( dty ) { 2163 `__db_rx ( v , 2165 ( EINVAL ); 2167 i( dbp -> ty ! DB_QUEUE ) 2168 r ; 2170 DB_CURRENT : 2171 DB_FIRST : 2172 DB_NEXT : 2173 DB_NEXT_DUP : 2174 DB_NEXT_NODUP : 2176 DB_LAST : 2177 DB_PREV : 2178 DB_PREV_DUP : 2179 DB_PREV_NODUP : 2180 i( mui ) 2181 mui_r : ( `__db_ ( v , "DBcursor->get", 1)); 2183 DB_GET_BOTHC : 2184 i( dbp -> ty = DB_QUEUE ) 2185 r ; 2187 DB_GET_BOTH : 2188 DB_GET_BOTH_RANGE : 2189 i(( t = `__dbt_urcy ( v , da )) != 0) 2190 r ; 2192 DB_SET : 2193 DB_SET_RANGE : 2194 i(( t = `__dbt_urcy ( v , key )) != 0) 2195 r ; 2197 DB_GET_RECNO : 2203 i(! `F_ISSET ( dbp , DB_AM_RECNUM ) && 2204 (! `F_ISSET ( dbp , DB_AM_SECONDARY ) || 2205 ! `F_ISSET ( dbp -> s_imy , DB_AM_RECNUM ))) 2206 r ; 2208 DB_SET_RECNO : 2209 i(! `F_ISSET ( dbp , DB_AM_RECNUM )) 2210 r ; 2211 i(( t = `__dbt_urcy ( v , key )) != 0) 2212 r ; 2215 r : `__dbt_ur ( v , key , NULL , da ); 2216 ( `__db_ ( v , "DBcursor->get", 0)); 2220 i(( t = `__dbt_ ( dbp , "key", key , 0)) != 0) 2221 ( t ); 2222 i(( t = `__dbt_ ( dbp , "da", da , 0)) != 0) 2223 ( t ); 2225 i( mui ) { 2226 i(! `F_ISSET ( da , DB_DBT_USERMEM )) { 2227 `__db_rx ( v , 2229 ( EINVAL ); 2231 i( `F_ISSET ( key , DB_DBT_PARTIAL ) || 2232 `F_ISSET ( da , DB_DBT_PARTIAL )) { 2233 `__db_rx ( v , 2235 ( EINVAL ); 2237 i( da -> un < 1024 || 2238 da -> un < dbp -> pgsize || data->ulen % 1024 != 0) { 2239 `__db_rx ( v , "%s%s", 2242 ( EINVAL ); 2251 i(! `IS_INITIALIZED ( dbc && ( ags = DB_CURRENT || 2252 ags = DB_GET_RECNO || 2253 ags = DB_NEXT_DUP || fg= DB_PREV_DUP )) 2254 ( `__db_curv ( v )); 2257 i( `LF_ISSET ( DB_RMW ) && 2258 ( t = `__db_check_txn ( dbp , dbc -> txn , dbc-> lock , 0)) != 0) 2259 ( t ); 2262 } } 2271 $__db_cdy_o_ ( dbp , ags ) 2272 DB * dbp ; 2273 u_t32_t ags ; 2275 DB_THREAD_INFO * ; 2276 ENV * v ; 2277 hd_check , t , t_t ; 2279 v = dbp ->env; 2280 t = 0; 2289 i( ags !0 && fg! DB_NOSYNC ) 2290 t = `__db_ ( v , "DB->close", 0); 2292 `ENV_ENTER ( v , ); 2295 hd_check = `IS_ENV_REPLICATED ( v ); 2296 i( hd_check && ( t_t = `__db_p_r ( dbp , 0, 0, 0)) != 0) { 2297 hd_check = 0; 2298 i( t == 0) 2299 t = t_t ; 2302 i(( t_t = `__db_cdy_o ( dbp , ags )!0 && t == 0) 2303 t = t_t ; 2306 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 2307 t = t_t ; 2309 `ENV_LEAVE ( v , ); 2310 ( t ); 2311 } } 2320 $__dbc_pg_ ( dbc , skey , pkey , da , ags ) 2321 DBC * dbc ; 2322 DBT * skey , * pkey , * da ; 2323 u_t32_t ags ; 2325 DB * dbp ; 2326 DB_THREAD_INFO * ; 2327 ENV * v ; 2328 igne_a , t ; 2330 dbp = dbc ->dbp; 2331 v = dbp ->env; 2333 igne_a = `LF_ISSET ( DB_IGNORE_LEASE ) ? 1 : 0; 2334 `LF_CLR ( DB_IGNORE_LEASE ); 2335 i(( t = `__dbc_pg_g ( dbc , pkey , ags )) != 0 || 2336 ( t = `__dbc_g_g ( dbc , skey , da , ags )) != 0) 2337 ( t ); 2339 `ENV_ENTER ( v , ); 2340 t = `__dbc_pg ( dbc , skey , pkey , da , ags ); 2344 i( t == 0 && 2345 `IS_REP_MASTER ( v && `IS_USING_LEASES nv&& ! igne_a ) 2346 t = `__p_a_check ( v , 1); 2348 `ENV_LEAVE ( v , ); 2350 `__dbt_ur ( v , skey , pkey , da ); 2351 ( t ); 2352 } } 2359 $__dbc_pg_g ( dbc , pkey , ags ) 2360 DBC * dbc ; 2361 DBT * pkey ; 2362 u_t32_t ags ; 2364 DB * dbp ; 2365 ENV * v ; 2366 t ; 2368 dbp = dbc ->dbp; 2369 v = dbp ->env; 2371 i(! `F_ISSET ( dbp , DB_AM_SECONDARY )) { 2372 `__db_rx ( v , 2374 ( EINVAL ); 2377 i( `LF_ISSET ( DB_MULTIPLE | DB_MULTIPLE_KEY )) { 2378 `__db_rx ( v , 2380 ( EINVAL ); 2383 `LF_ISSET ( DB_OPFLAGS_MASK )) { 2384 DB_CONSUME : 2385 DB_CONSUME_WAIT : 2387 ( `__db_ ( v , "DBcursor->pget", 0)); 2388 DB_GET_BOTH : 2389 DB_GET_BOTH_RANGE : 2391 i( pkey = NULL ) { 2392 `__db_rx ( v , 2394 `LF_ISSET ( DB_GET_BOTH ) ? 2396 ( EINVAL ); 2398 i(( t = `__dbt_urcy ( v , pkey )) != 0) 2399 ( t ); 2410 i( pkey ! NULL && 2411 ( t = `__dbt_ ( dbp , "imy key", pkey , 0)) != 0) 2412 ( t ); 2415 i( pkey = NULL && ( ags & DB_OPFLAGS_MASK = DB_GET_BOTH ) { 2416 `__db_rx ( v , 2418 ( EINVAL ); 2421 } } 2430 $__dbc_put_ ( dbc , key , da , ags ) 2431 DBC * dbc ; 2432 DBT * key , * da ; 2433 u_t32_t ags ; 2435 DB * dbp ; 2436 DB_THREAD_INFO * ; 2437 ENV * v ; 2438 t ; 2440 dbp = dbc ->dbp; 2441 v = dbp ->env; 2443 i(( t = `__dbc_put_g ( dbc , key , da , ags )) != 0) 2444 ( t ); 2446 `ENV_ENTER ( v , ); 2449 i(( t = `__db_check_txn ( dbp , dbc -> txn , dbc-> lock , 0)) != 0) 2450 r ; 2452 `DEBUG_LWRITE ( dbc , dbc-> txn , "DBcursor->put", 2453 ags = DB_KEYFIRST || fg= DB_KEYLAST || 2454 ags = DB_NODUPDATA || fg= DB_UPDATE_SECONDARY ? 2455 key : NULL , da , ags ); 2456 t = `__dbc_put ( dbc , key , da , ags ); 2458 r : `ENV_LEAVE ( v , ); 2459 `__dbt_ur ( v , key , NULL , da ); 2460 ( t ); 2461 } } 2468 $__dbc_put_g ( dbc , key , da , ags ) 2469 DBC * dbc ; 2470 DBT * key , * da ; 2471 u_t32_t ags ; 2473 DB * dbp ; 2474 ENV * v ; 2475 key_ags , t ; 2477 dbp = dbc ->dbp; 2478 v = dbp ->env; 2479 key_ags = 0; 2482 i( `DB_IS_READONLY ( dbp )) 2483 ( `__db_rdly ( v , "DBcursor->put")); 2486 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 2487 i( ags = DB_UPDATE_SECONDARY ) 2488 ags = DB_KEYLAST ; 2490 `__db_rx ( v , 2492 ( EINVAL ); 2496 i(( t = `__dbt_urcy ( v , da )) != 0) 2497 ( t ); 2500 ags ) { 2501 DB_AFTER : 2502 DB_BEFORE : 2503 dbp -> ty ) { 2504 DB_BTREE : 2505 DB_HASH : 2506 i(! `F_ISSET ( dbp , DB_AM_DUP )) 2507 r ; 2508 i( dbp -> dup_com ! NULL ) 2509 r ; 2511 DB_QUEUE : 2512 r ; 2513 DB_RECNO : 2514 i(! `F_ISSET ( dbp , DB_AM_RENUMBER )) 2515 r ; 2516 key_ags = key = NULL ? 0 : 1; 2518 DB_UNKNOWN : 2520 r ; 2523 DB_CURRENT : 2530 DB_NODUPDATA : 2531 i(! `F_ISSET ( dbp , DB_AM_DUPSORT )) 2532 r ; 2534 DB_KEYFIRST : 2535 DB_KEYLAST : 2536 key_ags = 1; 2537 i(( t = `__dbt_urcy ( v , key )) != 0) 2538 ( t ); 2541 r : ( `__db_ ( v , "DBcursor->put", 0)); 2549 i( key_ags && ( t = `__dbt_ ( dbp , "key", key , 0)) != 0) 2550 ( t ); 2551 i(( t = `__dbt_ ( dbp , "da", da , 0)) != 0) 2552 ( t ); 2563 i( key_ags && `F_ISSET ( key , DB_DBT_PARTIAL && key-> dn != 0) 2564 ( `__db_ ( v , "key DBT", 0)); 2570 i(! `IS_INITIALIZED ( dbc && ags ! DB_KEYFIRST && 2571 ags ! DB_KEYLAST && fg! DB_NODUPDATA ) 2572 ( `__db_curv ( v )); 2575 } } 2582 $__dbt_ ( dbp , me , dbt , check_thad ) 2583 cڡ DB * dbp ; 2584 cڡ * me ; 2585 cڡ DBT * dbt ; 2586 check_thad ; 2588 ENV * v ; 2589 t ; 2591 v = dbp ->env; 2600 i(( t = `__db_fchk ( v , me , dbt -> ags , DB_DBT_APPMALLOC | 2601 DB_DBT_MALLOC | DB_DBT_DUPOK | DB_DBT_REALLOC | 2602 DB_DBT_USERCOPY | DB_DBT_USERMEM | DB_DBT_PARTIAL )) != 0) 2603 ( t ); 2604 `F_ISSET ( dbt , DB_DBT_MALLOC | DB_DBT_REALLOC | 2605 DB_DBT_USERCOPY | DB_DBT_USERMEM )) { 2607 DB_DBT_MALLOC : 2608 DB_DBT_REALLOC : 2609 DB_DBT_USERCOPY : 2610 DB_DBT_USERMEM : 2613 ( `__db_ ( v , me , 1)); 2616 i( check_thad && `DB_IS_THREADED ( dbp ) && 2617 ! `F_ISSET ( dbt , DB_DBT_MALLOC | DB_DBT_REALLOC | 2618 DB_DBT_USERCOPY | DB_DBT_USERMEM )) { 2619 `__db_rx ( v , 2621 me ); 2622 ( EINVAL ); 2625 } } 2632 $__db_curv ( v ) 2633 cڡ ENV * v ; 2635 `__db_rx ( v , 2637 ( EINVAL ); 2638 } } 2647 $__db_txn_auto_ ( v , , txnidp ) 2648 ENV * v ; 2649 DB_THREAD_INFO * ; 2650 DB_TXN ** txnidp ; 2658 i(* txnidp ! NULL ) { 2659 `__db_rx ( v , 2661 ( EINVAL ); 2664 i(! `TXN_ON ( v )) { 2665 `__db_rx ( v , 2667 ( EINVAL ); 2674 ( `__txn_beg ( v , , NULL , txnidp , 0)); 2675 } } 2684 $__db_txn_auto_sve ( v , txn , nosync , t ) 2685 ENV * v ; 2686 DB_TXN * txn ; 2687 nosync , t ; 2689 t_t ; 2695 i( t == 0) 2696 ( `__txn_comm ( txn , nosync ? DB_TXN_NOSYNC : 0)); 2698 i(( t_t = `__txn_abt ( txn )) != 0) 2699 ( `__v_nic ( v , t_t )); 2701 ( t ); 2702 } } @../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 *, DB_THREAD_INFO *, 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 DBC * dbc ; 77 ENV * v ; 78 JOIN_CURSOR * jc ; 79 size_t ncurs , ns ; 80 u_t32_t i ; 81 t ; 83 v = imy ->env; 84 dbc = NULL ; 85 jc = NULL ; 87 i(( t = `__os_oc ( v , 1, ( DBC ), & dbc )) != 0) 88 r ; 90 i(( t = `__os_oc ( v , 1, ( JOIN_CURSOR ), & jc )) != 0) 91 r ; 93 i(( t = `__os_mloc ( v , 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 ( v , ns , ( DBC *), 158 & jc -> j_curi )) != 0) 159 r ; 160 i(( t = `__os_oc ( v , ns , ( DBC *), 161 & jc -> j_wkcurs )) != 0) 162 r ; 163 i(( t = `__os_oc ( v , ns , ( DBC *), 164 & jc -> j_fdupcurs )) != 0) 165 r ; 166 i(( t = `__os_oc ( v , 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 ( v , imy -> mux ); 213 `TAILQ_INSERT_TAIL (& imy -> jo_queue , dbc , lks ); 214 `MUTEX_UNLOCK ( v , imy -> mux ); 218 r : i( jc ! NULL ) { 219 i( jc -> j_curi ! NULL ) 220 `__os_ ( v , 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_ ( v , jc -> j_wkcurs ); 226 i( jc -> j_fdupcurs ! NULL ) 227 `__os_ ( v , jc -> j_fdupcurs ); 228 i( jc -> j_exhaued ! NULL ) 229 `__os_ ( v , jc -> j_exhaued ); 230 `__os_ ( v , jc ); 232 i( dbc ! NULL ) 233 `__os_ ( v , dbc ); 234 ( t ); 235 } } 242 $__db_jo_o_ ( dbc ) 243 DBC * dbc ; 245 DB * dbp ; 246 DB_THREAD_INFO * ; 247 ENV * v ; 248 hd_check , t , t_t ; 250 dbp = dbc ->dbp; 251 v = dbp ->env; 253 `ENV_ENTER ( v , ); 255 hd_check = `IS_ENV_REPLICATED ( v ); 256 i( hd_check && 257 ( t = `__db_p_r ( dbp , 1, 0, dbc -> txn ! NULL )) != 0) { 258 hd_check = 0; 259 r ; 262 t = `__db_jo_o ( dbc ); 264 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 265 t = t_t ; 267 r : `ENV_LEAVE ( v , ); 268 ( t ); 269 } } 272 $__db_jo_put ( dbc , key , da , ags ) 273 DBC * dbc ; 274 DBT * key ; 275 DBT * da ; 276 u_t32_t ags ; 278 `COMPQUIET ( dbc , NULL ); 279 `COMPQUIET ( key , NULL ); 280 `COMPQUIET ( da , NULL ); 281 `COMPQUIET ( ags , 0); 282 ( EINVAL ); 283 } } 286 $__db_jo_d ( dbc , ags ) 287 DBC * dbc ; 288 u_t32_t ags ; 290 `COMPQUIET ( dbc , NULL ); 291 `COMPQUIET ( ags , 0); 292 ( EINVAL ); 293 } } 300 $__db_jo_g_ ( dbc , key , da , ags ) 301 DBC * dbc ; 302 DBT * key , * da ; 303 u_t32_t ags ; 305 DB * dbp ; 306 DB_THREAD_INFO * ; 307 ENV * v ; 308 u_t32_t hd_check , ve_ags ; 309 t , t_t ; 311 dbp = dbc ->dbp; 312 v = dbp ->env; 315 ve_ags = ags ; 317 i( `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW )) { 318 i(! `LOCKING_ON ( v )) 319 ( `__db_l ( v , "DBC->get")); 320 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 323 ags ) { 325 DB_JOIN_ITEM : 328 ( `__db_ ( v , "DBC->get", 0)); 342 i( `F_ISSET ( key , DB_DBT_PARTIAL )) { 343 `__db_rx ( v , 345 ( EINVAL ); 348 `ENV_ENTER ( v , ); 350 hd_check = `IS_ENV_REPLICATED ( v ); 351 i( hd_check && 352 ( t = `__db_p_r ( dbp , 1, 0, dbc -> txn ! NULL )) != 0) { 353 hd_check = 0; 354 r ; 358 ags = ve_ags ; 360 t = `__db_jo_g ( dbc , key , da , ags ); 362 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 363 t = t_t ; 365 r : `ENV_LEAVE ( v , ); 366 `__dbt_ur ( v , key , NULL , NULL); 367 ( t ); 368 } } 371 $__db_jo_g ( dbc , key_g , da_g , ags ) 372 DBC * dbc ; 373 DBT * key_g , * da_g ; 374 u_t32_t ags ; 376 DB * dbp ; 377 DBC * ; 378 DBT * key_n , key_n_mem ; 379 ENV * v ; 380 JOIN_CURSOR * jc ; 381 db_mage_da , t ; 382 u_t32_t i , j , ݔi , mods ; 384 dbp = dbc ->dbp; 385 v = dbp ->env; 386 jc = ( JOIN_CURSOR *) dbc -> ; 388 ݔi = `LF_ISSET ( DB_OPFLAGS_MASK ); 394 mods = `LF_ISSET ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 402 i( `F_ISSET ( key_g , 403 DB_DBT_MALLOC | DB_DBT_USERCOPY | DB_DBT_USERMEM )) { 405 key_n = & key_n_mem ; 406 `memt ( key_n , 0, ( DBT )); 412 key_n = key_g ; 414 i( `F_ISSET ( key_g , DB_DBT_USERCOPY )) 415 key_g -> da = NULL ; 421 i( `F_ISSET ( jc , JOIN_RETRY )) 422 mekey ; 423 `F_CLR ( jc , JOIN_RETRY ); 425 y : t = `__dbc_g ( jc -> j_wkcurs [0], &jc-> j_key , key_n , 426 mods | ( jc -> j_exhaued [0] ? DB_NEXT_DUP : DB_CURRENT )); 428 i( t = DB_BUFFER_SMALL ) { 429 jc -> j_key . un <<= 1; 430 i(( t = `__os_loc ( v , 431 jc -> j_key . un , &jc->j_key. da )) != 0) 432 mem_r ; 433 y ; 441 i( t != 0) 442 r ; 451 i = 1; i < jc -> j_ncurs ; i++) { 452 i( jc -> j_fdupcurs [ i ] ! NULL && 453 ( t = `__dbc_o ( jc -> j_fdupcurs [ i ])) != 0) 454 r ; 455 jc -> j_fdupcurs [ i ] = NULL ; 467 i( jc -> j_curi [1] = NULL ) 468 jc -> j_exhaued [0] = 1; 470 jc -> j_exhaued [0] = 0; 473 i = 1; i < jc -> j_ncurs ; i++) { 474 `DB_ASSERT ( v , jc -> j_curi [ i ] ! NULL ); 475 i( jc -> j_wkcurs [ i ] = NULL ) 477 i(( t = `__dbc_dup ( jc -> j_curi [ i ], 478 & jc -> j_wkcurs [ i ], DB_POSITION )) != 0) 479 r ; 481 y2 : = jc -> j_wkcurs [ i ]; 483 i(( t = `__db_jo_gxt ( , & jc -> j_key , key_n , 484 jc -> j_exhaued [ i ], mods )= DB_NOTFOUND ) { 496 -- i ; 497 jc -> j_exhaued [ i ] = 1; 499 i( i == 0) { 500 j = 1; jc -> j_wkcurs [j] ! NULL ; j++) { 529 i(( t = `__dbc_o ( 530 jc -> j_wkcurs [ j ])) != 0) 531 r ; 532 i(! `SORTED_SET ( jc , 0) || 533 ! `SORTED_SET ( jc , j ) || 534 jc -> j_fdupcurs [ j ] = NULL ) 539 jc -> j_wkcurs [ j ] = NULL ; 542 i(( `__dbc_dup ( 543 jc -> j_fdupcurs [ j ], 544 & jc -> j_wkcurs [ j ], 545 DB_POSITION )) != 0) 546 r ; 547 jc -> j_exhaued [ j ] = 0; 549 y ; 558 j = i + 1; 559 jc -> j_wkcurs [ j ] ! NULL ; 560 j ++) { 561 i(( t = 562 `__dbc_o ( jc -> j_wkcurs [ j ])) != 0) 563 r ; 564 jc -> j_exhaued [ j ] = 0; 565 i( jc -> j_fdupcurs [ j ] = NULL ) 566 jc -> j_wkcurs [ j ] = NULL ; 567 i(( t = `__dbc_dup ( jc -> j_fdupcurs [ j ], 568 & jc -> j_wkcurs [ j ], DB_POSITION )) != 0) 569 r ; 571 y2 ; 575 i( t = DB_BUFFER_SMALL ) { 576 jc -> j_key . un <<= 1; 577 i(( t = `__os_loc ( v , jc -> j_key . un , 578 & jc -> j_key . da )) != 0) { 579 mem_r : `__db_rx ( v , 581 ( u_lg ) jc -> j_key . un ); 582 r ; 584 y2 ; 587 i( t != 0) 588 r ; 600 i( i + 1 ! jc -> j_ncurs ) 601 jc -> j_exhaued [ i ] = 0; 603 jc -> j_exhaued [ i ] = 1; 612 i( `SORTED_SET ( jc , i && jc-> j_fdupcurs [i] = NULL && ( t = 613 `__dbc_dup ( , & jc -> j_fdupcurs [ i ], DB_POSITION )) != 0) 614 r ; 617 r : i( t != 0) 618 ( t ); 621 mekey : 625 i(( t = `__dbc_g ( jc -> j_wkcurs [0], 626 & jc -> j_key , key_n , DB_CURRENT | mods )) != 0) 627 ( t ); 628 `F_CLR ( jc , JOIN_RETRY ); 638 `DB_ASSERT ( v , `F_ISSET ( key_g , DB_DBT_USERMEM | DB_DBT_MALLOC | 639 DB_DBT_USERCOPY || key_n = key_g ); 641 i(( `F_ISSET ( key_g , DB_DBT_USERMEM | DB_DBT_MALLOC | 642 DB_DBT_USERCOPY )) && 643 ( t = `__db_tcy ( v , 644 key_g , key_n -> da , key_n-> size , NULL , NULL)) != 0) { 650 `F_SET ( jc , JOIN_RETRY ); 651 ( t ); 658 i( ݔi = DB_JOIN_ITEM ) 671 i(! `F_ISSET ( da_g , DB_DBT_MALLOC | DB_DBT_REALLOC | 672 DB_DBT_USERMEM | DB_DBT_USERCOPY )) 673 db_mage_da = 1; 675 db_mage_da = 0; 676 i(( t = `__db_jo_img ( jc -> j_imy , dbc -> thad_fo , 677 jc -> j_curi [0]-> txn , jc->j_curi[0]-> lock , key_n , 678 db_mage_da ? & jc -> j_rda : da_g , mods )) != 0) { 679 i( t = DB_NOTFOUND ) { 680 i( `LF_ISSET ( DB_READ_UNCOMMITTED ) || 681 ( jc -> j_curi [0]-> txn ! NULL && `F_ISSET ( 682 jc -> j_curi [0]-> txn , TXN_READ_UNCOMMITTED ))) 683 y ; 691 t = `__db_cdy_cru ( jc -> j_imy ); 699 `F_SET ( jc , JOIN_RETRY ); 701 i( db_mage_da && t == 0) { 702 da_g -> da = jc -> j_rda .data; 703 da_g -> size = jc -> j_rda .size; 706 ( t ); 707 } } 716 $__db_jo_o ( dbc ) 717 DBC * dbc ; 719 DB * dbp ; 720 DB_THREAD_INFO * ; 721 ENV * v ; 722 JOIN_CURSOR * jc ; 723 t , t_t ; 724 u_t32_t i ; 726 jc = ( JOIN_CURSOR *) dbc -> ; 727 dbp = dbc ->dbp; 728 v = dbp ->env; 729 t = t_t = 0; 736 `MUTEX_LOCK ( v , dbp -> mux ); 737 `TAILQ_REMOVE (& dbp -> jo_queue , dbc , lks ); 738 `MUTEX_UNLOCK ( v , dbp -> mux ); 740 `ENV_ENTER ( v , ); 752 i = 0; i < jc -> j_ncurs ; i++) { 753 i( jc -> j_wkcurs [ i ] ! NULL && 754 ( t_t = `__dbc_o ( jc -> j_wkcurs [ i ])) != 0) 755 t = t_t ; 756 i( jc -> j_fdupcurs [ i ] ! NULL && 757 ( t_t = `__dbc_o ( jc -> j_fdupcurs [ i ])) != 0) 758 t = t_t ; 760 `ENV_LEAVE ( v , ); 762 `__os_ ( v , jc -> j_exhaued ); 763 `__os_ ( v , jc -> j_curi ); 764 `__os_ ( v , jc -> j_wkcurs ); 765 `__os_ ( v , jc -> j_fdupcurs ); 766 `__os_ ( v , jc -> j_key . da ); 767 i( jc -> j_rda . da ! NULL ) 768 `__os_u ( v , jc -> j_rda . da ); 769 `__os_ ( v , jc ); 770 `__os_ ( v , dbc ); 772 ( t ); 773 } } 791 $__db_jo_gxt ( dbc , key , da , exhaued , mods ) 792 DBC * dbc ; 793 DBT * key , * da ; 794 u_t32_t exhaued , mods ; 796 t , cmp ; 797 DB * dbp ; 798 DBT lda ; 799 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 801 dbp = dbc ->dbp; 802 func = ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 804 exhaued ) { 810 `memt (& lda , 0, ( DBT )); 811 `F_SET (& lda , DB_DBT_MALLOC ); 812 i(( t = `__dbc_g ( dbc , 813 key , & lda , mods | DB_CURRENT )) != 0) 815 cmp = `func ( dbp , da , & lda ); 816 i( cmp == 0) { 822 i(( t = `__db_tcy ( dbp -> v , da , lda .data, 823 lda . size , & da ->data, &data->size)) != 0) 824 ( t ); 825 `__os_u ( dbp -> v , lda . da ); 834 `__os_u ( dbp -> v , lda . da ); 837 t = `__dbc_g ( dbc , key , da , mods | DB_GET_BOTHC ); 840 t = EINVAL ; 844 ( t ); 845 } } 852 $__db_jo_cmp ( a , b ) 853 cڡ * a , * b ; 855 DBC * db , * dbcb ; 856 db_o_t coua , coub ; 858 db = *(( DBC * cڡ *) a ); 859 dbcb = *(( DBC * cڡ *) b ); 861 i( `__dbc_cou ( db , & coua ) != 0 || 862 `__dbc_cou ( dbcb , & coub ) != 0) 865 (() coua - () coub ); 866 } } 874 $__db_jo_img ( dbp , , txn , lock , key , da , ags ) 875 DB * dbp ; 876 DB_THREAD_INFO * ; 877 DB_TXN * txn ; 878 DB_LOCKER * lock ; 879 DBT * key , * da ; 880 u_t32_t ags ; 882 DBC * dbc ; 883 u_t32_t rmw ; 884 t , t_t ; 886 i(( t = `__db_curs_t ( dbp , , 887 txn , dbp -> ty , PGNO_INVALID , 0, lock , & dbc )) != 0) 888 ( t ); 896 rmw = `LF_ISSET ( DB_RMW ); 897 i( `LF_ISSET ( DB_READ_UNCOMMITTED ) || 898 ( txn ! NULL && `F_ISSET xn, TXN_READ_UNCOMMITTED ))) 899 `F_SET ( dbc , DBC_READ_UNCOMMITTED ); 901 i( `LF_ISSET ( DB_READ_COMMITTED ) || 902 ( txn ! NULL && `F_ISSET xn, TXN_READ_COMMITTED ))) 903 `F_SET ( dbc , DBC_READ_COMMITTED ); 905 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED | DB_RMW ); 906 `DB_ASSERT ( dbp -> v , ags == 0); 908 `F_SET ( dbc , DBC_TRANSIENT ); 915 `SET_RET_MEM ( dbc , dbp ); 917 t = `__dbc_g ( dbc , key , da , DB_SET | rmw ); 919 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 920 t = t_t ; 922 ( t ); 923 } } 932 $__db_cdy_cru ( dbp ) 933 DB * dbp ; 935 `__db_r ( dbp -> v , DB_SECONDARY_BAD , "%s%s%s", 936 dbp -> ame = NULL ? "unnamed" : dbp->fname, 937 dbp -> dme = NULL ? "" : "/", 938 dbp -> dme = NULL ? "" : dbp->dname); 939 ( DB_SECONDARY_BAD ); 940 } } @../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/txn.h " 51 ~"dbc/db_am.h " 53 __db__ma __P (( DB *, *, db_pgno_t , u_t32_t )); 54 #ifde HAVE_FTRUNCATE 55 __db_li_st __P (( db_pgli_t *, u_t32_t )); 56 __db_pglicmp __P ((const *, const *)); 57 __db_un_li __P (( DBC *, DBMETA *, 58 PAGE *, db_pgno_t *, u_t32_t , u_int32_t)); 68 $__db__ma ( dbp , p , pgno , pgty ) 69 DB * dbp ; 70 * p ; 71 db_pgno_t pgno ; 72 u_t32_t pgty ; 74 DBMETA * ma ; 75 DB_LSN ve_l ; 77 ma = ( DBMETA *) p ; 78 ve_l = ma -> l ; 79 `memt ( ma , 0, ( DBMETA )); 80 ma -> l = ve_l ; 81 ma -> gesize = dbp -> pgsize ; 82 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 83 `FLD_SET ( ma -> maags , DBMETA_CHKSUM ); 84 ma -> pgno =gno; 85 ma -> ty = ( u_t8_t ) pgty ; 86 } } 95 $__db_w ( dbc , ty , gp ) 96 DBC * dbc ; 97 u_t32_t ty ; 98 PAGE ** gp ; 100 DB * dbp ; 101 DBMETA * ma ; 102 DB_LOCK mock ; 103 DB_LSN l ; 104 DB_MPOOLFILE * mpf ; 105 ENV * v ; 106 PAGE * h ; 107 db_pgno_t ϡ , * li , pgno , wxt ; 108 exnd , t , t_t ; 110 ma = NULL ; 111 dbp = dbc ->dbp; 112 v = dbp ->env; 113 mpf = dbp ->mpf; 114 h = NULL ; 115 wxt = PGNO_INVALID ; 117 pgno = PGNO_BASE_MD ; 118 i(( t = `__db_lg ( dbc , 119 LCK_ALWAYS , pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 120 r ; 121 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 122 DB_MPOOL_DIRTY , & ma )) != 0) 123 r ; 124 ϡ = ma -> ϡ_pgno ; 125 i( ma -> = PGNO_INVALID ) { 126 i( `FLD_ISSET ( ty , P_DONTEXTEND )) { 127 * gp = NULL ; 128 r ; 130 ϡ = pgno = ma -> ϡ_pgno + 1; 131 `ZERO_LSN ( l ); 132 exnd = 1; 134 pgno = ma -> ; 135 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 136 DB_MPOOL_DIRTY , & h )) != 0) 137 r ; 144 wxt = h -> xt_pgno ; 145 l = h ->lsn; 146 exnd = 0; 147 `DB_ASSERT ( v , `TYPE ( h = P_INVALID ); 149 i( `TYPE ( h ! P_INVALID ) { 150 `__db_rx ( v , 152 dbp -> ame , ( u_lg ) `PGNO ( h ), (u_lg) `TYPE (h)); 153 ( `__v_nic ( v , EINVAL )); 158 `FLD_CLR ( ty , P_DONTEXTEND ); 165 i( `DBC_LOGGING ( dbc )) { 166 i(( t = `__db_pg_loc_log ( dbp , dbc -> txn , & `LSN ( ma ), 0, 167 & `LSN ( ma ), PGNO_BASE_MD , & l , 168 pgno , ( u_t32_t ) ty , wxt , ma -> ϡ_pgno )) != 0) 169 r ; 171 `LSN_NOT_LOGGED ( `LSN ( ma )); 173 ma -> = wxt ; 175 i( exnd == 1) { 176 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 177 DB_MPOOL_NEW , & h )) != 0) 178 r ; 179 `DB_ASSERT ( v , ϡ = pgno ); 180 ma -> ϡ_pgno = pgno ; 181 `ZERO_LSN ( h -> l ); 182 h -> pgno =gno; 184 `LSN ( h LSN( ma ); 186 t = `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 187 ma = NULL ; 188 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 189 t = t_t ; 190 i( t != 0) 191 r ; 193 ty ) { 194 P_BTREEMETA : 195 P_HASHMETA : 196 P_QAMMETA : 197 `__db__ma ( dbp , h , h-> pgno , ty ); 200 `P_INIT ( h , dbp -> pgsize , 201 h -> pgno , PGNO_INVALID , PGNO_INVALID, 0, ty ); 206 #ifde HAVE_FTRUNCATE 207 i( exnd == 0) { 208 u_t32_t ms = 0; 210 i(( t = `__memp_g_li ( dbp -> mpf , & ms , & li )) != 0) 211 r ; 212 i( ms != 0) { 213 `DB_ASSERT ( v , h -> pgno = li [0]); 214 `memmove ( li , &li[1], ( ms - 1) * (*list)); 215 i(( t = `__memp_exnd_li ( 216 dbp -> mpf , ms - 1, & li )) != 0) 217 r ; 221 `COMPQUIET ( li , NULL ); 232 i( ty ! P_OVERFLOW && ! `F_ISSET ( dbc , DBC_OPD ) && 233 `F_ISSET ( dbc -> dbp , DB_AM_READ_UNCOMMITTED && dbc-> txn ! NULL ) { 234 i(( t = `__db_lg ( dbc , 0, 235 h -> pgno , DB_LOCK_WWRITE , 0, & mock )) != 0) 236 r ; 239 * gp = h ; 242 r : i( h ! NULL ) 243 () `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy ); 244 i( ma ! NULL ) 245 () `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 246 () `__TLPUT ( dbc , mock ); 247 ( t ); 248 } } 257 $__db_ ( dbc , h ) 258 DBC * dbc ; 259 PAGE * h ; 261 DB * dbp ; 262 DBMETA * ma ; 263 DBT ddbt , ldbt ; 264 DB_LOCK mock ; 265 DB_LSN * lp ; 266 DB_MPOOLFILE * mpf ; 267 PAGE * ev ; 268 db_pgno_t ϡ_pgno , xt_pgno , pgno , ev_pgno ; 269 u_t32_t lag ; 270 t , t_t ; 271 #ifde HAVE_FTRUNCATE 272 db_pgno_t * li , * ; 273 u_t32_t m , posi , t ; 274 do_un ; 277 dbp = dbc ->dbp; 278 mpf = dbp ->mpf; 279 ev_pgno = PGNO_INVALID ; 280 ma = NULL ; 281 ev = NULL ; 282 #ifde HAVE_FTRUNCATE 283 = NULL ; 284 m = 0; 285 do_un = 0; 298 pgno = PGNO_BASE_MD ; 299 i(( t = `__db_lg ( dbc , 300 LCK_ALWAYS , pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 301 r ; 304 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 305 #ifde HAVE_FTRUNCATE 308 DB_MPOOL_DIRTY , 310 & ma )) != 0) 311 r1 ; 313 ϡ_pgno = ma ->last_pgno; 314 xt_pgno = ma -> ; 319 lp = & `LSN ( ma ); 321 `DB_ASSERT ( dbp -> v , h -> pgno ! xt_pgno ); 323 #ifde HAVE_FTRUNCATE 330 i(( t = `__memp_g_li ( mpf , & m , & li )) != 0) 331 r1 ; 332 i( li = NULL ) 333 no_st ; 335 i( h -> pgno ! ϡ_pgno ) { 341 posi = 0; 342 i( m != 0) { 343 `__db_li_pos ( h -> pgno , li , m , & posi ); 345 `DB_ASSERT ( dbp -> v , h -> pgno ! li [ posi ]); 348 i( posi !0 || h -> pgno > li [0]) 349 ev_pgno = li [ posi ]; 353 i(( t = `__memp_exnd_li ( mpf , m + 1, & li )) != 0) 354 ( t ); 355 i( ev_pgno ! PGNO_INVALID ) 356 = & li [ posi + 1]; 358 = li ; 359 i( m !0 && posi !=elem) 360 `memmove ( + 1,p, 361 ( size_t )(( u_t8_t *)& li [ m ] - (u_t8_t*) )); 362 * = h -> pgno ; 363 } i( m != 0) { 365 = & li [ m - 1];p >=ist;p--) 366 i(-- ϡ_pgno !* ) 368 i( < li || ϡ_pgno < h -> pgno - 1) 369 do_un = 1; 370 ϡ_pgno = ma ->last_pgno; 373 no_st : 374 i( ev_pgno = PGNO_INVALID ) { 375 i(( t = `__memp_dty ( mpf , 376 & ma , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 377 r1 ; 378 lp = & `LSN ( ma ); 380 pgno = ev_pgno ; 381 i(( t = `__memp_fg ( mpf , & pgno , 382 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & ev )) != 0) 383 r1 ; 384 xt_pgno = `NEXT_PGNO ( ev ); 385 lp = & `LSN ( ev ); 394 i( `DBC_LOGGING ( dbc )) { 395 `memt (& ldbt , 0, (ldbt)); 396 ldbt . da = h ; 397 ldbt . size = `P_OVERHEAD ( dbp ); 406 lag = 0; 408 i( h -> pgno = ϡ_pgno 409 #ifde HAVE_FTRUNCATE 410 && do_un == 0 413 lag = DB_FLUSH ; 414 h -> ty ) { 415 P_HASH : 416 P_IBTREE : 417 P_IRECNO : 418 P_LBTREE : 419 P_LRECNO : 420 P_LDUP : 421 i( h -> s > 0) { 422 ldbt . size + h -> s * ( db_dx_t ); 423 ddbt . da = ( u_t8_t *) h + `HOFFSET (h); 424 ddbt . size = dbp -> pgsize - `HOFFSET ( h ); 425 i(( t = `__db_pg_da_log ( dbp , dbc -> txn , 426 lp , lag , 427 h -> pgno , lp ,gno, 428 & ldbt , xt_pgno , ϡ_pgno , & ddbt )) != 0) 429 r1 ; 430 logged ; 433 P_HASHMETA : 434 ldbt . size = ( HMETA ); 436 P_BTREEMETA : 437 ldbt . size = ( BTMETA ); 439 P_OVERFLOW : 440 ldbt . size + `OV_LEN ( h ); 443 `DB_ASSERT ( dbp -> v , h -> ty ! P_QAMDATA ); 446 i(( t = `__db_pg__log ( dbp , 447 dbc -> txn , lp , lag , h -> pgno , 448 lp , pgno , & ldbt , xt_pgno , ϡ_pgno )) != 0) 449 r1 ; 451 `LSN_NOT_LOGGED (* lp ); 453 logged : 454 #ifde HAVE_FTRUNCATE 455 i( do_un ) { 456 t = ( u_t32_t ( - li ) + 1; 457 ma -> ϡ_pgno --; 458 t = `__db_un_li ( 459 dbc , ma , h , li , t , m ); 460 h = NULL ; 463 i( h -> pgno = ϡ_pgno ) { 464 `LSN ( h * lp ; 465 `P_INIT ( h , dbp -> pgsize , 466 h -> pgno , PGNO_INVALID , xt_pgno , 0, P_INVALID ); 467 i(( t = `__memp_ut ( mpf , 468 dbc -> thad_fo , h , DB_PRIORITY_VERY_LOW )) != 0) 469 r1 ; 470 h = NULL ; 472 i(( t = 473 `__memp_run ( mpf , dbc -> thad_fo , ϡ_pgno , 0)) != 0) 474 r1 ; 475 `DB_ASSERT ( dbp -> v , ma -> pgno = PGNO_BASE_MD ); 476 ma -> ϡ_pgno --; 477 h = NULL ; 484 i(( t = `__memp_dty ( mpf , 485 & h , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 486 r1 ; 487 `LSN ( h * lp ; 488 `P_INIT ( h , dbp -> pgsize , 489 h -> pgno , PGNO_INVALID , xt_pgno , 0, P_INVALID ); 490 #ifde DIAGNOSTIC 491 `memt (( u_t8_t * h + `P_OVERHEAD ( dbp ), 492 CLEAR_BYTE , dbp -> pgsize - `P_OVERHEAD (dbp)); 494 i( ev_pgno = PGNO_INVALID ) 495 ma -> = h -> pgno ; 497 `NEXT_PGNO ( ev h -> pgno ; 501 r1 : i( ma ! NULL && ( t_t = `__memp_ut ( mpf , 502 dbc -> thad_fo , ( PAGE *) ma , dbc-> iܙy )!0 && t == 0) 503 t = t_t ; 504 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 505 t = t_t ; 506 i( ev !( PAGE * ma &&v ! NULL && ( t_t = `__memp_ut ( mpf , 507 dbc -> thad_fo , ev , dbc-> iܙy )!0 && t == 0) 508 t = t_t ; 511 r : i( h ! NULL && ( t_t = `__memp_ut ( mpf , 512 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 513 t = t_t ; 519 ( t ); 520 } } 522 #ifde HAVE_FTRUNCATE 533 $__db_li_pos ( pgno , li , m , po ) 534 db_pgno_t pgno ; 535 db_pgno_t * li ; 536 u_t32_t m ; 537 u_t32_t * po ; 539 u_t32_t ba , dx , lim ; 541 dx = 0; 542 ba = 0, lim = m ;im != 0;im >>= 1) { 543 dx = ba + ( lim >> 1); 544 i( pgno = li [ dx ]) { 545 * po = dx ; 548 i( pgno > li [ dx ]) { 549 ba = dx + 1; 550 -- lim ; 553 i( ba != 0) 554 ba --; 555 * po = ba ; 557 } } 560 $__db_pglicmp ( a , b ) 561 cڡ * a , * b ; 563 db_pgli_t * , * bp ; 565 = ( db_pgli_t *) a ; 566 bp = ( db_pgli_t *) b ; 568 (( -> pgno > bp ->pgno) ? 1 : (ap->pgno < bp->pgno) ? -1: 0); 569 } } 575 $__db_li_st ( li , ms ) 576 db_pgli_t * li ; 577 u_t32_t ms ; 579 `qst ( li , ( size_t ) ms , ( db_pgli_t ), __db_pglicmp ); 580 } } 592 $__db_pg_un ( dbc , txn , li , c_da , mp , ϡ_pgno , lp , _covy ) 593 DBC * dbc ; 594 DB_TXN * txn ; 595 db_pgli_t * li ; 596 DB_COMPACT * c_da ; 597 u_t32_t * mp ; 598 db_pgno_t * ϡ_pgno ; 599 DB_LSN * lp ; 600 _covy ; 602 DB * dbp ; 603 DB_MPOOLFILE * mpf ; 604 PAGE * h ; 605 db_pgli_t * ; 606 db_pgno_t pgno ; 607 u_t32_t ms ; 608 t ; 610 t = 0; 612 dbp = dbc ->dbp; 613 mpf = dbp ->mpf; 614 ms = * mp ; 616 `__db_li_st ( li , ms ); 619 pgno = * ϡ_pgno ; 620 = & li [ ms - 1]; 621 ms != 0) { 622 i( -> pgno !=gno) 624 pgno --; 625 ms --; 626 --; 635 = li ;< &li[ ms ];p++) { 636 i(( t = `__memp_fg ( 637 mpf , & -> pgno , dbc -> thad_fo , txn , 0, & h )) != 0) { 639 i( _covy && t = DB_PAGE_NOTFOUND ) { 640 t = 0; 643 r ; 645 i(! _covy || `LOG_COMPARE (& `LSN ( h ), & -> l ) == 0) { 646 i(( t = `__memp_dty ( mpf , & h , 647 dbc -> thad_fo , txn , dbp -> iܙy , 0)) != 0) { 648 () `__memp_ut ( mpf , 649 dbc -> thad_fo , h , dbp -> iܙy ); 650 r ; 652 i( =& li [ ms - 1]) 653 `NEXT_PGNO ( h PGNO_INVALID ; 655 `NEXT_PGNO ( h [1]. pgno ; 656 `DB_ASSERT ( mpf -> v , `NEXT_PGNO ( h < * ϡ_pgno ); 658 `LSN ( h * lp ; 660 i(( t = `__memp_ut ( mpf , 661 dbc -> thad_fo , h , dbp -> iܙy )) != 0) 662 r ; 665 i( pgno !* ϡ_pgno ) { 666 i(( t = `__memp_run ( mpf , dbc -> thad_fo , 667 pgno + 1, _covy ? MP_TRUNC_RECOVER : 0)) != 0) 668 r ; 669 i( c_da ) 670 c_da -> com_ges_und +* ϡ_pgno - pgno ; 671 * ϡ_pgno = pgno ; 673 * mp = ms ; 675 r : ( t ); 676 } } 689 $__db__un ( dbp , , txn , ags , c_da , lip , mp , ϡ_pgn ) 690 DB * dbp ; 691 DB_THREAD_INFO * ; 692 DB_TXN * txn ; 693 u_t32_t ags ; 694 DB_COMPACT * c_da ; 695 db_pgli_t ** lip ; 696 u_t32_t * mp ; 697 db_pgno_t * ϡ_pgn ; 699 DBC * dbc ; 700 DBMETA * ma ; 701 DBT ddbt ; 702 DB_LOCK mock ; 703 DB_LSN nu_l ; 704 DB_MPOOLFILE * mpf ; 705 ENV * v ; 706 PAGE * h ; 707 db_pgli_t * li , * ; 708 db_pgno_t pgno ; 709 u_t32_t ms ; 710 t , t_t ; 711 size_t size ; 713 `COMPQUIET ( ags , 0); 714 li = NULL ; 715 ma = NULL ; 716 v = dbp ->env; 717 mpf = dbp ->mpf; 718 h = NULL ; 719 ms = 0; 720 i( lip ! NULL ) { 721 * lip = NULL ; 722 `DB_ASSERT ( v , mp ! NULL ); 723 * mp = 0; 726 i(( t = `__db_curs ( dbp , , txn , & dbc , DB_WRITELOCK )) != 0) 727 ( t ); 729 pgno = PGNO_BASE_MD ; 730 i(( t = `__db_lg ( dbc , 731 LCK_ALWAYS , pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 732 r ; 733 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 0, 734 & ma )) != 0) 735 r ; 737 i( ϡ_pgn ! NULL ) 738 * ϡ_pgn = ma -> ϡ_pgno ; 739 i(( pgno = ma -> = PGNO_INVALID ) 740 de ; 742 size = 128; 743 i(( t = `__os_mloc ( v , size * (* li ), &list)) != 0) 744 r ; 745 = li ; 748 i( =& li [ size ]) { 749 size *= 2; 750 i(( t = `__os_loc ( v , 751 size * (* li ), &list)) != 0) 752 r ; 753 = & li [ size / 2]; 755 i(( t = `__memp_fg ( mpf , & pgno , 756 dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 757 r ; 759 -> pgno =gno; 760 -> l = `LSN ( h ); 761 pgno = `NEXT_PGNO ( h ); 762 i(( t = `__memp_ut ( mpf , 763 dbc -> thad_fo , h , dbc-> iܙy )) != 0) 764 r ; 765 ++; 766 } pgno ! PGNO_INVALID ); 767 ms = ( u_t32_t )( - li ); 769 i(( t = `__memp_dty ( mpf , 770 & ma , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 771 r ; 774 i( `DBC_LOGGING ( dbc )) { 775 ddbt . da = li ; 776 ddbt . size = ms * (* ); 777 `ZERO_LSN ( nu_l ); 778 i(( t = `__db_pg_st_log ( dbp , 779 dbc -> txn , & `LSN ( ma ), DB_FLUSH , PGNO_BASE_MD , &LSN(meta), 780 PGNO_INVALID , & nu_l , ma -> ϡ_pgno , & ddbt )) != 0) 781 r ; 783 `LSN_NOT_LOGGED ( `LSN ( ma )); 785 i(( t = `__db_pg_un ( dbc , txn , li , c_da , 786 & ms , & ma -> ϡ_pgno , & `LSN (meta), 0)) != 0) 787 r ; 789 i( ms == 0) 790 ma -> = PGNO_INVALID ; 792 ma -> = li [0]. pgno ; 794 de : i( ϡ_pgn ! NULL ) 795 * ϡ_pgn = ma -> ϡ_pgno ; 802 i( c_da ) 803 c_da -> com_un = ( u_t32_t ) ma -> ϡ_pgno - ms ; 805 i( ms !0 && lip ! NULL ) { 806 * lip = li ; 807 * mp = ms ; 808 li = NULL ; 811 r : i( li ! NULL ) 812 `__os_ ( v , li ); 813 i( ma ! NULL && ( t_t = `__memp_ut ( mpf , 814 dbc -> thad_fo , ( PAGE *) ma , dbc-> iܙy )!0 && t == 0) 815 t = t_t ; 816 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 817 t = t_t ; 818 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 819 t = t_t ; 820 ( t ); 821 } } 824 $__db_un_li ( dbc , ma , h , li , t , m ) 825 DBC * dbc ; 826 DBMETA * ma ; 827 PAGE * h ; 828 db_pgno_t * li ; 829 u_t32_t t , m ; 831 DB * dbp ; 832 DBT ddbt ; 833 DB_LSN nu_l ; 834 DB_MPOOLFILE * mpf ; 835 PAGE * ϡ_ , * pg ; 836 db_pgno_t * ; 837 db_pgli_t * i , * ; 838 t ; 840 dbp = dbc ->dbp; 841 mpf = dbp ->mpf; 842 i = NULL ; 843 ϡ_ = NULL ; 845 i( t != 0 && 846 ( t = `__memp_fg ( mpf , & li [ t - 1], 847 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & ϡ_ )) != 0) 848 r ; 850 i( `DBC_LOGGING ( dbc )) { 851 i(( t = `__os_mloc ( dbp -> v , 852 ( m - t * (* ), & i )) != 0) 853 r ; 855 = i ; 856 = & li [ t ];< &li[ m ];p++) { 857 -> pgno = * ; 858 i(( t = `__memp_fg ( mpf , , 859 dbc -> thad_fo , dbc-> txn , 0, & pg )) != 0) 860 r ; 861 -> l = `LSN ( pg ); 862 i(( t = `__memp_ut ( mpf , 863 dbc -> thad_fo , pg , DB_PRIORITY_VERY_LOW )) != 0) 864 r ; 865 ++; 867 ddbt . da = i ; 868 ddbt . size = ( m - t * (* ); 869 `ZERO_LSN ( nu_l ); 870 i( ϡ_ ! NULL ) { 871 i(( t = `__db_pg_st_log ( dbp , dbc -> txn , & `LSN ( ma ), 872 DB_FLUSH , `PGNO ( ma ), & `LSN (ma), PGNO( ϡ_ ), 873 & `LSN ( ϡ_ ), ma -> ϡ_pgno , & ddbt )) != 0) 874 r ; 875 } i(( t = `__db_pg_st_log ( dbp , dbc -> txn , 876 & `LSN ( ma ), DB_FLUSH , `PGNO (meta), &LSN(meta), 877 PGNO_INVALID , & nu_l , ma -> ϡ_pgno , & ddbt )) != 0) 878 r ; 880 `LSN_NOT_LOGGED ( `LSN ( ma )); 881 i( ϡ_ ! NULL ) 882 `LSN ( ϡ_ LSN( ma ); 884 i(( t = `__memp_ut ( mpf , 885 dbc -> thad_fo , h , DB_PRIORITY_VERY_LOW )) != 0) 886 r ; 887 h = NULL ; 888 i(( t = 889 `__memp_run ( mpf , dbc -> thad_fo , li [ t ], 0)) != 0) 890 r ; 891 ma -> ϡ_pgno = li [ t ] - 1; 893 i( t == 0) 894 ma -> = PGNO_INVALID ; 896 `NEXT_PGNO ( ϡ_ PGNO_INVALID ; 897 i(( t = `__memp_ut ( mpf , 898 dbc -> thad_fo , ϡ_ , dbc-> iܙy )) != 0) 899 r ; 900 ϡ_ = NULL ; 904 t = `__memp_exnd_li ( mpf , t , & li ); 906 r : i( i ! NULL ) 907 `__os_ ( dbp -> v , i ); 910 i( h ! NULL ) 911 () `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy ); 912 i( ϡ_ ! NULL ) 913 () `__memp_ut ( mpf , 914 dbc -> thad_fo , ϡ_ , dbc-> iܙy ); 916 ( t ); 917 } } 920 #ifde DEBUG 928 $__db_rt ( dbc ) 929 DBC * dbc ; 931 DB * dbp ; 932 DB_LOCKREQ q ; 933 ENV * v ; 935 dbp = dbc ->dbp; 936 v = dbp ->env; 938 i( `LOCKING_ON ( v )) { 939 q . = DB_LOCK_DUMP ; 940 () `__lock_vec ( v , dbc -> lock , 0, & q , 1, NULL ); 943 } } 954 $__db_lg ( dbc , ai , pgno , mode , lkags , lockp ) 955 DBC * dbc ; 956 ai ; 957 db_pgno_t pgno ; 958 db_lockmode_t mode ; 959 u_t32_t lkags ; 960 DB_LOCK * lockp ; 962 DB * dbp ; 963 DB_LOCKREQ coue [3], * qp ; 964 DB_TXN * txn ; 965 ENV * v ; 966 has_timeout , i , t ; 968 dbp = dbc ->dbp; 969 v = dbp ->env; 970 txn = dbc ->txn; 976 i( `CDB_LOCKING ( v || ! `LOCKING_ON (env) || 977 ( `MULTIVERSION ( dbp && mode = DB_LOCK_READ && 978 dbc -> txn ! NULL && `F_ISSET (dbc->txn, TXN_SNAPSHOT )) || 979 `F_ISSET ( dbc , DBC_DONTLOCK || (F_ISSET(dbc, DBC_RECOVER ) && 980 ( ai ! LCK_ROLLBACK || `IS_REP_CLIENT ( v ))) || 981 ( ai ! LCK_ALWAYS && `F_ISSET ( dbc , DBC_OPD ))) { 982 `LOCK_INIT (* lockp ); 986 dbc -> lock . pgno =gno; 987 i( lkags & DB_LOCK_RECORD ) 988 dbc -> lock . ty = DB_RECORD_LOCK ; 990 dbc -> lock . ty = DB_PAGE_LOCK ; 991 lkags &~ DB_LOCK_RECORD ; 997 i( `DB_NONBLOCK ( dbc )) 998 lkags | DB_LOCK_NOWAIT ; 1000 i( `F_ISSET ( dbc , DBC_READ_UNCOMMITTED && mode = DB_LOCK_READ ) 1001 mode = DB_LOCK_READ_UNCOMMITTED ; 1003 has_timeout = `F_ISSET ( dbc , DBC_RECOVER ) || 1004 ( txn ! NULL && `F_ISSET xn, TXN_LOCKTIMEOUT )); 1013 i(( ai ! LCK_COUPLE &&i ! LCK_COUPLE_ALWAYS ) || 1014 ! `LOCK_ISSET (* lockp )) 1015 ai = 0; 1016 i( dbc -> txn = NULL || ai = LCK_COUPLE_ALWAYS ) 1017 ai = LCK_COUPLE ; 1018 i( `F_ISSET ( dbc , 1019 DBC_READ_COMMITTED && lockp -> mode = DB_LOCK_READ ) 1020 ai = LCK_COUPLE ; 1021 i( `F_ISSET ( dbc , 1022 DBC_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_READ_UNCOMMITTED ) 1023 ai = LCK_COUPLE ; 1024 i( `F_ISSET ( dbc -> dbp , 1025 DB_AM_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_WRITE ) 1026 ai = LCK_DOWNGRADE ; 1028 ai = 0; 1030 i = 0; 1031 ai ) { 1033 i( has_timeout ) 1034 do_coue ; 1035 t = `__lock_g ( v , 1036 dbc -> lock , lkags , &dbc-> lock_dbt , mode , lockp ); 1039 LCK_DOWNGRADE : 1040 coue [0]. = DB_LOCK_GET ; 1041 coue [0]. obj = NULL ; 1042 coue [0]. lock = * lockp ; 1043 coue [0]. mode = DB_LOCK_WWRITE ; 1044 `UMRW_SET ( coue [0]. timeout ); 1045 i ++; 1047 LCK_COUPLE : 1048 do_coue : coue [ i ]. = has_timeout ? DB_LOCK_GET_TIMEOUT : DB_LOCK_GET ; 1049 coue [ i ]. obj = & dbc -> lock_dbt ; 1050 coue [ i ]. mode = mode; 1051 `UMRW_SET ( coue [ i ]. timeout ); 1052 i ++; 1053 i( has_timeout ) 1054 coue [0]. timeout = 1055 `F_ISSET ( dbc , DBC_RECOVER ? 0 : txn -> lock_timeout ; 1056 i( ai = LCK_COUPLE ||i = LCK_DOWNGRADE ) { 1057 coue [ i ]. = DB_LOCK_PUT ; 1058 coue [ i ]. lock = * lockp ; 1059 i ++; 1062 t = `__lock_vec ( v , 1063 dbc -> lock , lkags , coue , i , & qp ); 1064 i( t =0 || qp =& coue [ i - 1]) 1065 * lockp = i =1 ? coue [0]. lock : couple[i - 2].lock; 1069 i( txn ! NULL && t = DB_LOCK_DEADLOCK ) 1070 `F_SET ( txn , TXN_DEADLOCK ); 1071 (( t = DB_LOCK_NOTGRANTED && ! `F_ISSET ( v -> dbv , 1072 DB_ENV_TIME_NOTGRANTED )? DB_LOCK_DEADLOCK : t ); 1073 } } 1082 $__db_ut ( dbc , lockp ) 1083 DBC * dbc ; 1084 DB_LOCK * lockp ; 1086 DB_LOCKREQ coue [2], * qp ; 1087 ENV * v ; 1088 ai , t ; 1095 i( `F_ISSET ( dbc -> dbp , 1096 DB_AM_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_WRITE ) 1097 ai = LCK_DOWNGRADE ; 1098 i( dbc -> txn = NULL ) 1099 ai = LCK_COUPLE ; 1100 i( `F_ISSET ( dbc , 1101 DBC_READ_COMMITTED && lockp -> mode = DB_LOCK_READ ) 1102 ai = LCK_COUPLE ; 1103 i( `F_ISSET ( dbc , 1104 DBC_READ_UNCOMMITTED && lockp -> mode = DB_LOCK_READ_UNCOMMITTED ) 1105 ai = LCK_COUPLE ; 1107 ai = 0; 1109 v = dbc ->env; 1110 ai ) { 1111 LCK_COUPLE : 1112 t = `__lock_put ( v , lockp ); 1114 LCK_DOWNGRADE : 1115 coue [0]. = DB_LOCK_GET ; 1116 coue [0]. obj = NULL ; 1117 coue [0]. mode = DB_LOCK_WWRITE ; 1118 coue [0]. lock = * lockp ; 1119 `UMRW_SET ( coue [0]. timeout ); 1120 coue [1]. = DB_LOCK_PUT ; 1121 coue [1]. lock = * lockp ; 1122 t = `__lock_vec ( v , dbc -> lock , 0, coue , 2, & qp ); 1123 i( t =0 || qp =& coue [1]) 1124 * lockp = coue [0]. lock ; 1127 t = 0; 1131 ( t ); 1132 } } @../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_g_r `__P (( DB *, 53 (**)(cڡ DB_ENV *, const *, const *))); 54 __db_t_r 55 `__P (( DB *, (*)(cڡ DB_ENV *, const *, const *))); 56 __db_g_rfe `__P (( DB *, FILE **)); 57 __db_t_rfe `__P (( DB *, FILE *)); 58 __db_g_fx `__P (( DB *, const **)); 59 __db_t_fx `__P (( DB *, const *)); 60 __db_t_msg 61 `__P (( DB *, (*)(cڡ DB_ENV *, const *))); 62 __db_g_msgfe `__P (( DB *, FILE **)); 63 __db_t_msgfe `__P (( DB *, FILE *)); 64 __dbh_r `__P (( DB *, , const *, ...)); 65 __dbh_rx `__P (( DB *, const *, ...)); 74 $db_ ( db , dbv , ags ) 75 DB ** db ; 76 DB_ENV * dbv ; 77 u_t32_t ags ; 79 DB_THREAD_INFO * ; 80 ENV * v ; 81 t ; 83 = NULL ; 84 v = dbv = NULL ? NULL : dbenv->env; 87 ags ) { 90 DB_XA_CREATE : 91 i( dbv ! NULL ) { 92 `__db_rx ( v , 94 ( EINVAL ); 103 v = `TAILQ_FIRST (& `DB_GLOBAL ( vq )); 106 ( `__db_ ( v , "db_create", 0)); 109 i( v ! NULL ) 110 `ENV_ENTER ( v , ); 111 t = `__db__ ( db , v , ags ); 112 i( v ! NULL ) 113 `ENV_LEAVE ( v , ); 115 ( t ); 116 } } 125 $__db__ ( db , v , ags ) 126 DB ** db ; 127 ENV * v ; 128 u_t32_t ags ; 130 DB * dbp ; 131 DB_ENV * dbv ; 132 DB_REP * db_p ; 133 t ; 135 * db = NULL ; 138 i( v = NULL ) { 139 i(( t = `db_v_ (& dbv , 0)) != 0) 140 ( t ); 141 v = dbv ->env; 142 `F_SET ( v , ENV_DBLOCAL ); 144 dbv = v ->dbenv; 147 i(( t = `__os_oc ( v , 1, (* dbp ), &dbp)) != 0) 148 r ; 150 dbp -> dbv = v ->dbenv; 151 dbp -> v =nv; 152 i(( t = `__db_ ( dbp , ags )) != 0) 153 r ; 155 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 156 ++ v -> db_f ; 157 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 164 dbp -> timeamp = `REP_ON ( v ) ? 165 (( REGENV *) v -> gfo -> imy )-> p_timeamp : 0; 171 db_p = v -> p_hd ; 172 dbp -> fid_g = `REP_ON ( v ? (( REP *) db_p -> gi )-> g : 0; 175 i(! `RPC_ON ( dbv && ( t = `__memp_f ( v , & dbp -> mpf )) != 0) 176 r ; 178 dbp -> ty = DB_UNKNOWN ; 180 * db = dbp ; 183 r : i( dbp ! NULL ) { 184 i( dbp -> mpf ! NULL ) 185 () `__memp_fo ( dbp -> mpf , 0); 186 `__os_ ( v , dbp ); 189 i( `F_ISSET ( v , ENV_DBLOCAL )) 190 () `__v_o ( dbp -> dbv , 0); 192 ( t ); 193 } } 200 $__db_ ( dbp , ags ) 201 DB * dbp ; 202 u_t32_t ags ; 204 t ; 206 dbp -> lock = NULL ; 207 `LOCK_INIT ( dbp -> hd_lock ); 209 `TAILQ_INIT (& dbp -> _queue ); 210 `TAILQ_INIT (& dbp -> aive_queue ); 211 `TAILQ_INIT (& dbp -> jo_queue ); 212 `LIST_INIT (& dbp -> s_cds ); 214 `FLD_SET ( dbp -> am_ok , 215 DB_OK_BTREE | DB_OK_HASH | DB_OK_QUEUE | DB_OK_RECNO ); 218 dbp -> assoc = __db_assoc_ ; 219 dbp -> assoc_feign = __db_assoc_feign_ ; 220 dbp -> o = __db_o_ ; 221 dbp -> com = __db_com_ ; 222 dbp -> curs = __db_curs_ ; 223 dbp -> d = __db_d_ ; 224 dbp -> dump = __db_dump_ ; 225 dbp -> r = __dbh_r ; 226 dbp -> rx = __dbh_rx ; 227 dbp -> exis = __db_exis ; 228 dbp -> fd = __db_fd_ ; 229 dbp -> g = __db_g_ ; 230 dbp -> g_byswd = __db_g_byswd ; 231 dbp -> g_chesize = __db_g_chesize ; 232 dbp -> g_dbme = __db_g_dbme ; 233 dbp -> g_y_ags = __db_g_y_ags ; 234 dbp -> g_v = __db_g_v ; 235 dbp -> g_r = __db_g_r ; 236 dbp -> g_rfe = __db_g_rfe ; 237 dbp -> g_fx = __db_g_fx ; 238 dbp -> g_ags = __db_g_ags ; 239 dbp -> g_ld = __db_g_ld ; 240 dbp -> g_mpf = __db_g_mpf ; 241 dbp -> g_msgfe = __db_g_msgfe ; 242 dbp -> g_muɝ = __db_g_muɝ ; 243 dbp -> g_ݒ_ags = __db_g_ݒ_ags ; 244 dbp -> g_gesize = __db_g_gesize ; 245 dbp -> g_iܙy = __db_g_iܙy ; 246 dbp -> g_iڮ = __db_g_iڮ ; 247 dbp -> g_ty = __db_g_ty ; 248 dbp -> jo = __db_jo_ ; 249 dbp -> key_nge = __db_key_nge_ ; 250 dbp -> ݒ = __db_ݒ_ ; 251 dbp -> pg = __db_pg_ ; 252 dbp -> put = __db_put_ ; 253 dbp -> move = __db_move_ ; 254 dbp -> me = __db_me_ ; 255 dbp -> t_loc = __db_t_loc ; 256 dbp -> t_nd_o = __db_t_nd_o ; 257 dbp -> t_chesize = __db_t_chesize ; 258 dbp -> t_dup_com = __db_t_dup_com ; 259 dbp -> t_y = __db_t_y ; 260 dbp -> t_r = __db_t_r ; 261 dbp -> t_rfe = __db_t_rfe ; 262 dbp -> t_fx = __db_t_fx ; 263 dbp -> t_edback = __db_t_edback ; 264 dbp -> t_ags = __db_t_ags ; 265 dbp -> t_ld = __db_t_ld ; 266 dbp -> t_msg = __db_t_msg ; 267 dbp -> t_msgfe = __db_t_msgfe ; 268 dbp -> t_gesize = __db_t_gesize ; 269 dbp -> t_nic = __db_t_nic ; 270 dbp -> t_iܙy = __db_t_iܙy ; 271 dbp -> = __db__ ; 272 dbp -> _t = __db__t_ ; 273 dbp -> sync = __db_sync_ ; 274 dbp -> un = __db_un_ ; 275 dbp -> upgde = __db_upgde_ ; 276 dbp -> vify = __db_vify_ ; 280 i(( t = `__bam_db_ ( dbp )) != 0) 281 ( t ); 282 i(( t = `__ham_db_ ( dbp )) != 0) 283 ( t ); 284 i(( t = `__qam_db_ ( dbp )) != 0) 285 ( t ); 291 i( `LF_ISSET ( DB_XA_CREATE && ( t = `__db_xa_ ( dbp )) != 0) 292 ( t ); 294 #ifde HAVE_RPC 299 i( `RPC_ON ( dbp -> dbv )) { 300 `__db_dbp_ ( dbp ); 306 dbp -> ݒ = __db_db_ݒ_wp ; 307 i(( t = `__db_db_ ( dbp , dbp-> dbv , ags )) != 0) 308 ( t ); 313 } } 322 $__dbh_am_chk ( dbp , ags ) 323 DB * dbp ; 324 u_t32_t ags ; 331 i(( `LF_ISSET ( DB_OK_BTREE && `FLD_ISSET ( dbp -> am_ok , DB_OK_BTREE)) || 332 ( `LF_ISSET ( DB_OK_HASH && `FLD_ISSET ( dbp -> am_ok , DB_OK_HASH)) || 333 ( `LF_ISSET ( DB_OK_QUEUE && `FLD_ISSET ( dbp -> am_ok , DB_OK_QUEUE)) || 334 ( `LF_ISSET ( DB_OK_RECNO && `FLD_ISSET ( dbp -> am_ok , DB_OK_RECNO))) { 335 `FLD_CLR ( dbp -> am_ok , ~ ags ); 339 `__db_rx ( dbp -> v , 341 ( EINVAL ); 342 } } 349 #ifde STDC_HEADERS 350 $__dbh_r ( DB * dbp , r , cڡ * fmt , ...) 352 $__dbh_r ( dbp , r , fmt , va_i ) 353 DB * dbp ; 354 r ; 355 cڡ * fmt ; 356 va_d 360 `DB_REAL_ERR ( dbp -> dbv , r , DB_ERROR_SET , 1, fmt ); 361 } } 368 #ifde STDC_HEADERS 369 $__dbh_rx ( DB * dbp , cڡ * fmt , ...) 371 $__dbh_rx ( dbp , fmt , va_i ) 372 DB * dbp ; 373 cڡ * fmt ; 374 va_d 378 `DB_REAL_ERR ( dbp -> dbv , 0, DB_ERROR_NOT_SET , 1, fmt ); 379 } } 386 $__db_g_byswd ( dbp , isswd ) 387 DB * dbp ; 388 * isswd ; 390 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_byteswapped"); 392 * isswd = `F_ISSET ( dbp , DB_AM_SWAP ) ? 1 : 0; 394 } } 401 $__db_g_dbme ( dbp , am , dm ) 402 DB * dbp ; 403 cڡ ** am , ** dm ; 405 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_dbname"); 407 i( am ! NULL ) 408 * am = dbp -> ame ; 409 i( dm ! NULL ) 410 * dm = dbp -> dme ; 412 } } 418 DB_ENV * 419 $__db_g_v ( dbp ) 420 DB * dbp ; 422 ( dbp -> dbv ); 423 } } 429 DB_MPOOLFILE * 430 $__db_g_mpf ( dbp ) 431 DB * dbp ; 433 ( dbp -> mpf ); 434 } } 442 $__db_g_muɝ ( dbp ) 443 DB * dbp ; 445 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_multiple"); 454 ( dbp -> ty = DB_BTREE && 455 `F_ISSET ( dbp , DB_AM_SUBDB ) && 456 dbp -> ma_pgno = PGNO_BASE_MD ? 1 : 0); 457 } } 464 $__db_g_iڮ ( dbp ) 465 DB * dbp ; 467 ( `F_ISSET ( dbp , DB_AM_TXN ) ? 1 : 0); 468 } } 475 $__db_g_ty ( dbp , dbty ) 476 DB * dbp ; 477 DBTYPE * dbty ; 479 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_type"); 481 * dbty = dbp -> ty ; 483 } } 490 $__db_t_nd_o ( dbp , func ) 491 DB * dbp ; 492 (* func `__P (( DB *, DBT *, db_o_t )); 494 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_append_recno"); 495 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE | DB_OK_RECNO ); 497 dbp -> db_nd_o = func ; 500 } } 507 $__db_g_chesize ( dbp , che_gby , che_by , nch ) 508 DB * dbp ; 509 u_t32_t * che_gby , * che_by ; 510 * nch ; 512 `DB_ILLEGAL_IN_ENV ( dbp , "DB->get_cachesize"); 514 ( `__memp_g_chesize ( dbp -> dbv , 515 che_gby , che_by , nch )); 516 } } 523 $__db_t_chesize ( dbp , che_gbys , che_bys , nche ) 524 DB * dbp ; 525 u_t32_t che_gbys , che_bys ; 526 nche ; 528 `DB_ILLEGAL_IN_ENV ( dbp , "DB->set_cachesize"); 529 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_cachesize"); 531 ( `__memp_t_chesize ( 532 dbp -> dbv , che_gbys , che_bys , nche )); 533 } } 540 $__db_t_dup_com ( dbp , func ) 541 DB * dbp ; 542 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 544 t ; 546 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->dup_compare"); 547 `DB_ILLEGAL_METHOD ( dbp , DB_OK_BTREE | DB_OK_HASH ); 549 i(( t = `__db_t_ags ( dbp , DB_DUPSORT )) != 0) 550 ( t ); 552 dbp -> dup_com = func ; 555 } } 561 $__db_g_y_ags ( dbp , ag ) 562 DB * dbp ; 563 u_t32_t * ag ; 565 `DB_ILLEGAL_IN_ENV ( dbp , "DB->get_encrypt_flags"); 567 ( `__v_g_y_ags ( dbp -> dbv , ag )); 568 } } 575 $__db_t_y ( dbp , sswd , ags ) 576 DB * dbp ; 577 cڡ * sswd ; 578 u_t32_t ags ; 580 DB_CIPHER * db_ch ; 581 t ; 583 `DB_ILLEGAL_IN_ENV ( dbp , "DB->set_encrypt"); 584 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_encrypt"); 586 i(( t = `__v_t_y ( dbp -> dbv , sswd , ags )) != 0) 587 ( t ); 593 db_ch = dbp -> v -> yo_hd ; 594 i(! `F_ISSET ( db_ch , CIPHER_ANY ) && 595 ( t = db_ch -> ` ( dbp -> v , db_cipher)) != 0) 596 ( t ); 598 ( `__db_t_ags ( dbp , DB_ENCRYPT )); 599 } } 602 $__db_g_r ( dbp , rp ) 603 DB * dbp ; 604 (** rp `__P ((cڡ DB_ENV *, const *, const *)); 606 `__v_g_r ( dbp -> dbv , rp ); 607 } } 610 $__db_t_r ( dbp , r ) 611 DB * dbp ; 612 (* r `__P ((cڡ DB_ENV *, const *, const *)); 614 `__v_t_r ( dbp -> dbv , r ); 615 } } 618 $__db_g_rfe ( dbp , rf ) 619 DB * dbp ; 620 FILE ** rf ; 622 `__v_g_rfe ( dbp -> dbv , rf ); 623 } } 626 $__db_t_rfe ( dbp , rfe ) 627 DB * dbp ; 628 FILE * rfe ; 630 `__v_t_rfe ( dbp -> dbv , rfe ); 631 } } 634 $__db_g_fx ( dbp , fxp ) 635 DB * dbp ; 636 cڡ ** fxp ; 638 `__v_g_fx ( dbp -> dbv , fxp ); 639 } } 642 $__db_t_fx ( dbp , fx ) 643 DB * dbp ; 644 cڡ * fx ; 646 `__v_t_fx ( dbp -> dbv , fx ); 647 } } 650 $__db_t_edback ( dbp , edback ) 651 DB * dbp ; 652 (* edback `__P (( DB *, , )); 654 dbp -> db_edback = edback ; 656 } } 664 $__db_m_ags ( dbp , ag , outag ) 665 DB * dbp ; 666 u_t32_t * ag , * outag ; 668 `COMPQUIET ( dbp , NULL ); 670 i( `FLD_ISSET (* ag , DB_CHKSUM )) { 671 `FLD_SET (* outag , DB_AM_CHKSUM ); 672 `FLD_CLR (* ag , DB_CHKSUM ); 674 i( `FLD_ISSET (* ag , DB_ENCRYPT )) { 675 `FLD_SET (* outag , DB_AM_ENCRYPT | DB_AM_CHKSUM ); 676 `FLD_CLR (* ag , DB_ENCRYPT ); 678 i( `FLD_ISSET (* ag , DB_TXN_NOT_DURABLE )) { 679 `FLD_SET (* outag , DB_AM_NOT_DURABLE ); 680 `FLD_CLR (* ag , DB_TXN_NOT_DURABLE ); 682 } } 691 $__db_g_ags ( dbp , ag ) 692 DB * dbp ; 693 u_t32_t * ag ; 695 cڡ u_t32_t db_ags [] = { 696 DB_CHKSUM , 697 DB_DUP , 698 DB_DUPSORT , 699 DB_ENCRYPT , 700 #ifde HAVE_QUEUE 701 DB_INORDER , 703 DB_RECNUM , 704 DB_RENUMBER , 705 DB_REVSPLITOFF , 706 DB_SNAPSHOT , 707 DB_TXN_NOT_DURABLE , 710 u_t32_t f , ags , md_ag ; 711 i ; 713 ags = 0; 714 i = 0; ( f = db_ags [i]) != 0; i++) { 715 md_ag = 0; 716 `__db_m_ags ( dbp , & f , & md_ag ); 717 `__bam_m_ags ( dbp , & f , & md_ag ); 718 `__m_m_ags ( dbp , & f , & md_ag ); 719 #ifde HAVE_QUEUE 720 `__qam_m_ags ( dbp , & f , & md_ag ); 722 `DB_ASSERT ( dbp -> v , f == 0); 723 i( `F_ISSET ( dbp , md_ag ) == mapped_flag) 724 `LF_SET ( db_ags [ i ]); 727 * ag = ags ; 729 } } 738 $__db_t_ags ( dbp , ags ) 739 DB * dbp ; 740 u_t32_t ags ; 742 ENV * v ; 743 t ; 745 v = dbp ->env; 747 i( `LF_ISSET ( DB_ENCRYPT && ! `CRYPTO_ON ( v )) { 748 `__db_rx ( v , 750 ( EINVAL ); 752 i( `LF_ISSET ( DB_TXN_NOT_DURABLE )) 753 `ENV_REQUIRES_CONFIG ( v , 754 v -> tx_hd , "DB_NOT_DURABLE", DB_INIT_TXN ); 756 `__db_m_ags ( dbp , & ags , &dbp->flags); 758 i(( t = `__bam_t_ags ( dbp , & ags )) != 0) 759 ( t ); 760 i(( t = `__m_t_ags ( dbp , & ags )) != 0) 761 ( t ); 762 #ifde HAVE_QUEUE 763 i(( t = `__qam_t_ags ( dbp , & ags )) != 0) 764 ( t ); 767 ( ags =0 ? 0 : `__db_ ( v , "DB->set_flags", 0)); 768 } } 777 $__db_g_ld ( dbp , db_ldp ) 778 DB * dbp ; 779 * db_ldp ; 781 t ; 784 t = `__db_byd ( dbp -> v , 1234)) { 786 * db_ldp = `F_ISSET ( dbp , DB_AM_SWAP ) ? 4321 : 1234; 788 DB_SWAPBYTES : 789 * db_ldp = `F_ISSET ( dbp , DB_AM_SWAP ) ? 1234 : 4321; 792 ( t ); 797 } } 806 $__db_t_ld ( dbp , db_ld ) 807 DB * dbp ; 808 db_ld ; 810 t ; 812 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_lorder"); 815 t = `__db_byd ( dbp -> v , db_ld )) { 817 `F_CLR ( dbp , DB_AM_SWAP ); 819 DB_SWAPBYTES : 820 `F_SET ( dbp , DB_AM_SWAP ); 823 ( t ); 827 } } 830 $__db_t_loc ( dbp , m_func , _func , _func ) 831 DB * dbp ; 832 *(* m_func `__P (( size_t )); 833 *(* _func `__P ((*, size_t )); 834 (* _func `__P ((*)); 836 `DB_ILLEGAL_IN_ENV ( dbp , "DB->set_alloc"); 837 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_alloc"); 839 ( `__v_t_loc ( dbp -> dbv , m_func , _func , _func )); 840 } } 843 $__db_t_msg ( dbp , msg ) 844 DB * dbp ; 845 (* msg `__P ((cڡ DB_ENV *, const *)); 847 `__v_t_msg ( dbp -> dbv , msg ); 848 } } 851 $__db_g_msgfe ( dbp , msgf ) 852 DB * dbp ; 853 FILE ** msgf ; 855 `__v_g_msgfe ( dbp -> dbv , msgf ); 856 } } 859 $__db_t_msgfe ( dbp , msgfe ) 860 DB * dbp ; 861 FILE * msgfe ; 863 `__v_t_msgfe ( dbp -> dbv , msgfe ); 864 } } 867 $__db_g_gesize ( dbp , db_gesiz ) 868 DB * dbp ; 869 u_t32_t * db_gesiz ; 871 * db_gesiz = dbp -> pgsize ; 873 } } 882 $__db_t_gesize ( dbp , db_gesize ) 883 DB * dbp ; 884 u_t32_t db_gesize ; 886 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->set_pagesize"); 888 i( db_gesize < DB_MIN_PGSIZE ) { 889 `__db_rx ( dbp -> v , "page sizes mayot be smallerhan %lu", 890 ( u_lg ) DB_MIN_PGSIZE ); 891 ( EINVAL ); 893 i( db_gesize > DB_MAX_PGSIZE ) { 894 `__db_rx ( dbp -> v , "page sizes mayot beargerhan %lu", 895 ( u_lg ) DB_MAX_PGSIZE ); 896 ( EINVAL ); 903 i(! `POWER_OF_TWO ( db_gesize )) { 904 `__db_rx ( dbp -> v , "page sizes must beower-of-2"); 905 ( EINVAL ); 913 dbp -> pgsize = db_gesize ; 916 } } 919 $__db_t_nic ( dbp , nic ) 920 DB * dbp ; 921 (* nic `__P (( DB_ENV *, )); 923 ( `__v_t_nic ( dbp -> dbv , nic )); 924 } } 927 $__db_t_iܙy ( dbp , iܙy ) 928 DB * dbp ; 929 DB_CACHE_PRIORITY iܙy ; 931 dbp -> iܙy =riority; 933 } } 936 $__db_g_iܙy ( dbp , iܙy ) 937 DB * dbp ; 938 DB_CACHE_PRIORITY * iܙy ; 940 * iܙy = dbp ->priority; 942 } } @../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_THREAD_INFO * ; 53 DB_TXN * txn ; 54 cڡ * ame , * dme ; 55 DBTYPE ty ; 56 u_t32_t ags ; 57 mode ; 58 db_pgno_t ma_pgno ; 60 ENV * v ; 61 t ; 62 u_t32_t id ; 64 v = dbp ->env; 65 id = TXN_INVALID ; 67 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREOPEN , t , ame ); 77 i( `F_ISSET ( v , ENV_THREAD )) 78 `LF_SET ( DB_THREAD ); 81 i( `LF_ISSET ( DB_RDONLY )) 82 `F_SET ( dbp , DB_AM_RDONLY ); 83 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 84 `F_SET ( dbp , DB_AM_READ_UNCOMMITTED ); 86 i( `IS_REAL_TXN ( txn )) 87 `F_SET ( dbp , DB_AM_TXN ); 90 dbp -> ty =ype; 100 i( ame = NULL ) { 101 i( dme = NULL ) { 102 i(! `LF_ISSET ( DB_CREATE )) { 103 `__db_rx ( v , 105 ( ENOENT ); 108 `F_SET ( dbp , DB_AM_INMEM ); 109 `F_SET ( dbp , DB_AM_CREATED ); 111 i( dbp -> ty = DB_UNKNOWN ) { 112 `__db_rx ( v , 114 ( EINVAL ); 117 i( dbp -> pgsize == 0) 118 dbp -> pgsize = DB_DEF_IOSIZE ; 140 i( `LOCKING_ON ( v && ( t = `__lock_id (env, 141 ( u_t32_t *) dbp -> feid , NULL )) != 0) 142 ( t ); 144 `MAKE_INMEM ( dbp ); 151 } i( dme = NULL && ma_pgno = PGNO_BASE_MD ) { 153 i(( t = `__f_fe_tup ( dbp , , 154 txn , ame , mode , ags , & id )) != 0) 155 ( t ); 157 i(( t = `__f_subdb_tup ( dbp , , 158 txn , ame , dme , mode , ags )) != 0) 159 ( t ); 160 ma_pgno = dbp ->meta_pgno; 176 i( dme = NULL && `F_ISSET ( dbp , DB_AM_CREATED )) 177 `LF_SET ( DB_TRUNCATE ); 180 i(( t = `__v_tup ( dbp , txn , ame , dme , id , ags )) != 0) 181 ( t ); 184 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 185 i( dme = NULL ) 186 t = `__db_w_fe ( dbp , , txn , NULL , NULL); 188 id = TXN_INVALID ; 189 i(( t = `__f_fe_tup ( dbp , , 190 txn , dme , mode , ags , & id )) == 0 && 191 `DBENV_LOGGING ( v && ! `F_ISSET ( dbp , DB_AM_RECOVER ) 192 #i! `defed ( DEBUG_ROP && !defed( DEBUG_WOP && !defed( DIAGNOSTIC ) 193 && txn ! NULL 195 #i! `defed ( DEBUG_ROP ) 196 && ! `F_ISSET ( dbp , DB_AM_RDONLY ) 199 t = `__dbg_log_id ( dbp , 200 txn , dbp -> log_fame -> id , 1); 202 i( t != 0) 203 r ; 206 dbp -> ty ) { 207 DB_BTREE : 208 t = `__bam_ݒ ( dbp , , txn , ame , ma_pgno , ags ); 210 DB_HASH : 211 t = `__ham_ݒ ( dbp , , txn , ame , ma_pgno , ags ); 213 DB_RECNO : 214 t = `__m_ݒ ( dbp , , txn , ame , ma_pgno , ags ); 216 DB_QUEUE : 217 t = `__qam_ݒ ( 218 dbp , , txn , ame , ma_pgno , mode , ags ); 220 DB_UNKNOWN : 222 `__db_unknown_ty ( v , "__db_dbݒ", dbp -> ty )); 224 i( t != 0) 225 r ; 227 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTOPEN , t , ame ); 234 i(! `F_ISSET ( dbp , DB_AM_RECOVER && ( ame ! NULL || dme != NULL) && 235 `LOCK_ISSET ( dbp -> hd_lock )) { 236 i( `IS_REAL_TXN ( txn )) 237 t = `__txn_lockevt ( v , 238 txn , dbp , &dbp-> hd_lock , dbp-> lock ); 239 i( `LOCKING_ON ( v )) 241 t = `__lock_downgde ( v , 242 & dbp -> hd_lock , DB_LOCK_READ , 0); 244 DB_TEST_RECOVERY_LABEL 245 r : 246 ( t ); 247 } } 256 $__db_g_ݒ_ags ( dbp , ag ) 257 DB * dbp ; 258 u_t32_t * ag ; 260 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->get_open_flags"); 262 * ag = dbp -> ݒ_ags ; 264 } } 274 $__db_w_fe ( dbp , , txn , fhp , me ) 275 DB * dbp ; 276 DB_THREAD_INFO * ; 277 DB_TXN * txn ; 278 DB_FH * fhp ; 279 cڡ * me ; 281 t ; 283 dbp -> ty ) { 284 DB_BTREE : 285 DB_RECNO : 286 t = `__bam_w_fe ( dbp , , txn , fhp , me ); 288 DB_HASH : 289 t = `__ham_w_fe ( dbp , , txn , fhp , me ); 291 DB_QUEUE : 292 t = `__qam_w_fe ( dbp , , txn , fhp , me ); 294 DB_UNKNOWN : 296 `__db_rx ( dbp -> v , 297 "%s: Invidy %d scifd", me , dbp -> ty ); 298 t = EINVAL ; 302 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTLOGMETA , t , me ); 304 i( t =0 && fhp ! NULL ) 305 t = `__os_fsync ( dbp -> v , fhp ); 307 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTSYNC , t , me ); 309 DB_TEST_RECOVERY_LABEL 310 ( t ); 311 } } 321 $__db__subdb ( mdbp , dbp , me , , txn ) 322 DB * mdbp , * dbp ; 323 cڡ * me ; 324 DB_THREAD_INFO * ; 325 DB_TXN * txn ; 327 DBMETA * ma ; 328 DB_MPOOLFILE * mpf ; 329 t , t_t ; 331 t = 0; 332 i(! `F_ISSET ( dbp , DB_AM_CREATED )) { 334 mpf = mdbp ->mpf; 335 i(( t = `__memp_fg ( mpf , & dbp -> ma_pgno , 336 , txn , 0, & ma )) != 0) 337 r ; 338 t = `__db_ma_tup ( mdbp -> v , dbp , me , ma , 0, 0); 339 i(( t_t = `__memp_ut ( mpf , 340 , ma , dbp -> iܙy )!0 && t == 0) 341 t = t_t ; 346 i( t = ENOENT ) 347 t = 0; 348 r ; 352 dbp -> ty ) { 353 DB_BTREE : 354 DB_RECNO : 355 t = `__bam_w_subdb ( mdbp , dbp , , txn ); 357 DB_HASH : 358 t = `__ham_w_subdb ( mdbp , dbp , , txn ); 360 DB_QUEUE : 361 t = EINVAL ; 363 DB_UNKNOWN : 365 `__db_rx ( dbp -> v , 366 "Invid subdabay %d scifd", dbp -> ty ); 367 ( EINVAL ); 370 r : ( t ); 371 } } 383 $__db_chk_ma ( v , dbp , ma , ags ) 384 ENV * v ; 385 DB * dbp ; 386 DBMETA * ma ; 387 u_t32_t ags ; 389 DB_LSN sw_l ; 390 is_hmac , t , swd ; 391 u_t32_t magic , ig_chk ; 392 u_t8_t * chksum ; 394 t = 0; 395 swd = 0; 397 i( `FLD_ISSET ( ma -> maags , DBMETA_CHKSUM )) { 398 i( dbp ! NULL ) 399 `F_SET ( dbp , DB_AM_CHKSUM ); 401 is_hmac = ma -> y_g == 0 ? 0 : 1; 402 chksum = (( BTMETA *) ma )->chksum; 409 ig_chk = *( u_t32_t *) chksum ; 415 i( `LF_ISSET ( DB_CHK_META )) { 416 swd = 0; 417 chk_y : i(( t = 418 `__db_check_chksum ( v , NULL ,nv-> yo_hd , 419 chksum , ma , DBMETASIZE , is_hmac )) != 0) { 420 i( is_hmac || swd ) 421 ( t ); 423 `M_32_SWAP ( ig_chk ); 424 swd = 1; 425 *( u_t32_t *) chksum = ig_chk ; 426 chk_y ; 429 } i( dbp ! NULL ) 430 `F_CLR ( dbp , DB_AM_CHKSUM ); 432 #ifde HAVE_CRYPTO 433 t = `__yo_dey_ma ( v , 434 dbp , ( u_t8_t *) ma , `LF_ISSET ( DB_CHK_META )); 438 i( `LOGGING_ON ( v && ! `LF_ISSET ( DB_CHK_NOLSN )) { 445 sw_l = ma -> l ; 446 magic = ma ->magic; 447 l_y : 448 i( swd ) { 449 `M_32_SWAP ( sw_l . fe ); 450 `M_32_SWAP ( sw_l . offt ); 451 `M_32_SWAP ( magic ); 453 magic ) { 454 DB_BTREEMAGIC : 455 DB_HASHMAGIC : 456 DB_QAMMAGIC : 457 DB_RENAMEMAGIC : 460 i( swd ) 461 ( EINVAL ); 462 swd = 1; 463 l_y ; 465 i(! `IS_REP_CLIENT ( v ) && 466 ! `IS_NOT_LOGGED_LSN ( sw_l && ! `IS_ZERO_LSN (swap_lsn)) 468 t = `__log_check_ge_l ( v , dbp , & sw_l ); 470 ( t ); 471 } } 483 $__db_ma_tup ( v , dbp , me , ma , oags , ags ) 484 ENV * v ; 485 DB * dbp ; 486 cڡ * me ; 487 DBMETA * ma ; 488 u_t32_t oags ; 489 u_t32_t ags ; 491 u_t32_t magic ; 492 t ; 494 t = 0; 504 `F_CLR ( dbp , DB_AM_SWAP | DB_AM_IN_RENAME ); 505 magic = ma ->magic; 507 sw_y : 508 magic ) { 509 DB_BTREEMAGIC : 510 DB_HASHMAGIC : 511 DB_QAMMAGIC : 512 DB_RENAMEMAGIC : 521 i( `F_ISSET ( dbp , DB_AM_SUBDB && (( `IS_RECOVERING ( v ) && 522 `F_ISSET ( v -> lg_hd , DBLOG_FORCE_OPEN )) || 523 ma -> pgno ! PGNO_INVALID )) 524 ( ENOENT ); 526 bad_fm ; 528 i( `F_ISSET ( dbp , DB_AM_SWAP )) 529 bad_fm ; 531 `M_32_SWAP ( magic ); 532 `F_SET ( dbp , DB_AM_SWAP ); 533 sw_y ; 543 i(( t = `__db_chk_ma ( v , dbp , ma , ags )) != 0) { 544 i( t == -1) 545 `__db_rx ( v , 546 "%s: madgchecksum", me ); 547 bad_fm ; 550 magic ) { 551 DB_BTREEMAGIC : 552 i( dbp -> ty ! DB_UNKNOWN && 553 dbp -> ty ! DB_RECNO && dbp->ty ! DB_BTREE ) 554 bad_fm ; 556 ags = ma ->flags; 557 i( `F_ISSET ( dbp , DB_AM_SWAP )) 558 `M_32_SWAP ( ags ); 559 i( `LF_ISSET ( BTM_RECNO )) 560 dbp -> ty = DB_RECNO ; 562 dbp -> ty = DB_BTREE ; 563 i(( oags & DB_TRUNCATE =0 && ( t = 564 `__bam_machk ( dbp , me , ( BTMETA *) ma )) != 0) 565 ( t ); 567 DB_HASHMAGIC : 568 i( dbp -> ty ! DB_UNKNOWN && dbp->ty ! DB_HASH ) 569 bad_fm ; 571 dbp -> ty = DB_HASH ; 572 i(( oags & DB_TRUNCATE =0 && ( t = 573 `__ham_machk ( dbp , me , ( HMETA *) ma )) != 0) 574 ( t ); 576 DB_QAMMAGIC : 577 i( dbp -> ty ! DB_UNKNOWN && dbp->ty ! DB_QUEUE ) 578 bad_fm ; 579 dbp -> ty = DB_QUEUE ; 580 i(( oags & DB_TRUNCATE =0 && ( t = 581 `__qam_machk ( dbp , me , ( QMETA *) ma )) != 0) 582 ( t ); 584 DB_RENAMEMAGIC : 585 `F_SET ( dbp , DB_AM_IN_RENAME ); 588 `memy ( dbp -> feid , (( DBMETA *) ma )-> uid , DB_FILE_ID_LEN ); 592 bad_fm ; 596 bad_fm : 597 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 598 t = ENOENT ; 600 `__db_rx ( v , "%s: uxed fty ofm", me ); 601 ( t =0 ? EINVAL :et); 602 } } @../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_THREAD_INFO * ; 71 DB_TXN * txn ; 72 DBT * dbt ; 73 u_t32_t ; 74 db_pgno_t pgno ; 75 ** b ; 76 u_t32_t * bpsz ; 78 DB_MPOOLFILE * mpf ; 79 ENV * v ; 80 PAGE * h ; 81 db_dx_t bys ; 82 u_t32_t curoff , eded , t ; 83 u_t8_t * p , * c ; 84 t ; 86 v = dbp ->env; 87 mpf = dbp ->mpf; 95 i( `F_ISSET ( dbt , DB_DBT_PARTIAL )) { 96 t = dbt -> doff ; 97 i( t > ) 98 eded = 0; 99 i( dbt -> dn > - t ) 100 eded = - t ; 102 eded = dbt -> dn ; 104 t = 0; 105 eded = ; 108 i( `F_ISSET ( dbt , DB_DBT_USERCOPY )) 109 sk_loc ; 112 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 113 i( eded > dbt -> un ) { 114 dbt -> size = eded ; 115 ( DB_BUFFER_SMALL ); 117 } i( `F_ISSET ( dbt , DB_DBT_MALLOC )) { 118 i(( t = `__os_umloc ( v , eded , & dbt -> da )) != 0) 119 ( t ); 120 } i( `F_ISSET ( dbt , DB_DBT_REALLOC )) { 121 i(( t = `__os_uloc ( v , eded , & dbt -> da )) != 0) 122 ( t ); 123 } i( bpsz ! NULL && (*bpsz =0 || *bpsz < eded )) { 124 i(( t = `__os_loc ( v , eded , b )) != 0) 125 ( t ); 126 * bpsz = eded ; 127 dbt -> da = * b ; 128 } i( b ! NULL ) 129 dbt -> da = * b ; 131 `DB_ASSERT ( v , 132 `F_ISSET ( dbt , 133 DB_DBT_USERMEM | DB_DBT_MALLOC | DB_DBT_REALLOC ) || 134 bpsz ! NULL || b != NULL); 135 ( DB_BUFFER_SMALL ); 138 sk_loc : 143 dbt -> size = eded ; 144 curoff = 0, p = dbt -> da ; pgno ! PGNO_INVALID && eded > 0;) { 145 i(( t = `__memp_fg ( mpf , & pgno , , txn , 0, & h )) != 0) 146 ( t ); 147 `DB_ASSERT ( v , `TYPE ( h = P_OVERFLOW ); 150 i( curoff + `OV_LEN ( h > t ) { 151 bys = `OV_LEN ( h ); 152 c = ( u_t8_t *) h + `P_OVERHEAD ( dbp ); 153 i( t > curoff ) { 154 c + t - curoff ; 155 bys - t - curoff ; 157 i( bys > eded ) 158 bys = eded ; 159 i( `F_ISSET ( dbt , DB_DBT_USERCOPY )) { 166 i(( t = v -> `dbt_urcy ( 167 dbt , dbt-> size - eded , 168 c , bys , DB_USERCOPY_SETDATA )) != 0) { 169 () `__memp_ut ( mpf , , 170 h , dbp -> iܙy ); 171 ( t ); 174 `memy ( p , c , bys ); 175 p + bys ; 176 eded - bys ; 178 curoff + `OV_LEN ( h ); 179 pgno = h -> xt_pgno ; 180 () `__memp_ut ( mpf , , h , dbp -> iܙy ); 183 } } 192 $__db_poff ( dbc , dbt , pgn ) 193 DBC * dbc ; 194 cڡ DBT * dbt ; 195 db_pgno_t * pgn ; 197 DB * dbp ; 198 DBT tmp_dbt ; 199 DB_LSN w_l , nu_l ; 200 DB_MPOOLFILE * mpf ; 201 PAGE * g , * ϡp ; 202 db_dx_t gea ; 203 u_t32_t sz ; 204 u_t8_t * p ; 205 t , t_t ; 212 dbp = dbc ->dbp; 213 mpf = dbp ->mpf; 214 gea = `P_MAXSPACE ( dbp , dbp-> pgsize ); 216 t = 0; 217 ϡp = NULL ; 218 p = dbt -> da , 219 sz = dbt -> size ; sz > 0; p + gea , sz -=agespace) { 224 i( sz < gea ) 225 gea = sz ; 232 i(( t = `__db_w ( dbc , P_OVERFLOW , & g )) != 0) 234 i( `DBC_LOGGING ( dbc )) { 235 tmp_dbt . da = p ; 236 tmp_dbt . size = gea ; 237 `ZERO_LSN ( nu_l ); 238 i(( t = `__db_big_log ( dbp , dbc -> txn , 239 & w_l , 0, DB_ADD_BIG , `PGNO ( g ), 240 ϡp ? `PGNO ap: PGNO_INVALID , 241 PGNO_INVALID , & tmp_dbt , & `LSN ( g ), 242 ϡp = NULL ? & nu_l : & `LSN (lastp), 243 & nu_l )) != 0) { 244 i( ϡp ! NULL ) 245 () `__memp_ut ( mpf , dbc -> thad_fo , 246 ϡp , dbc -> iܙy ); 247 ϡp = g ; 251 `LSN_NOT_LOGGED ( w_l ); 254 i( ϡp ! NULL ) 255 `LSN ( ϡp w_l ; 256 `LSN ( g w_l ; 258 `OV_LEN ( g gea ; 259 `OV_REF ( g ) = 1; 260 `memy (( u_t8_t *) g + `P_OVERHEAD ( dbp ), p , gea ); 267 i( ϡp = NULL ) 268 * pgn = `PGNO ( g ); 270 ϡp -> xt_pgno = `PGNO ( g ); 271 g -> ev_pgno = `PGNO ( ϡp ); 272 () `__memp_ut ( mpf , 273 dbc -> thad_fo , ϡp , dbc-> iܙy ); 275 ϡp = g ; 277 i( ϡp ! NULL && ( t_t = `__memp_ut ( mpf , 278 dbc -> thad_fo , ϡp , dbc-> iܙy )!0 && t == 0) 279 t = t_t ; 280 ( t ); 281 } } 290 $__db_ovf ( dbc , pgno ) 291 DBC * dbc ; 292 db_pgno_t pgno ; 294 DB * dbp ; 295 DB_MPOOLFILE * mpf ; 296 PAGE * h ; 297 t ; 299 dbp = dbc ->dbp; 300 mpf = dbp ->mpf; 302 i(( t = `__memp_fg ( mpf , & pgno , 303 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & h )) != 0) 304 ( t ); 306 i( `DBC_LOGGING ( dbc )) { 307 i(( t = `__db_ovf_log ( dbp , 308 dbc -> txn , & `LSN ( h ), 0, h-> pgno , -1, &LSN(h))) != 0) { 309 () `__memp_ut ( mpf , 310 dbc -> thad_fo , h , dbc-> iܙy ); 311 ( t ); 314 `LSN_NOT_LOGGED ( `LSN ( h )); 325 -- `OV_REF ( h ); 327 ( `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy )); 328 } } 337 $__db_doff ( dbc , pgno ) 338 DBC * dbc ; 339 db_pgno_t pgno ; 341 DB * dbp ; 342 DBT tmp_dbt ; 343 DB_LSN nu_l ; 344 DB_MPOOLFILE * mpf ; 345 PAGE * g ; 346 t ; 348 dbp = dbc ->dbp; 349 mpf = dbp ->mpf; 352 i(( t = `__memp_fg ( mpf , & pgno , 353 dbc -> thad_fo , dbc-> txn , 0, & g )) != 0) 354 ( t ); 356 `DB_ASSERT ( dbp -> v , `TYPE ( g = P_OVERFLOW ); 361 i( `OV_REF ( g ) > 1) { 362 () `__memp_ut ( mpf , 363 dbc -> thad_fo , g , dbc-> iܙy ); 364 ( `__db_ovf ( dbc , pgno )); 367 i(( t = `__memp_dty ( mpf , & g , 368 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) { 369 () `__memp_ut ( mpf , 370 dbc -> thad_fo , g , dbc-> iܙy ); 371 ( t ); 374 i( `DBC_LOGGING ( dbc )) { 375 tmp_dbt . da = ( u_t8_t *) g + `P_OVERHEAD ( dbp ); 376 tmp_dbt . size = `OV_LEN ( g ); 377 `ZERO_LSN ( nu_l ); 378 i(( t = `__db_big_log ( dbp , dbc -> txn , 379 & `LSN ( g ), 0, DB_REM_BIG , 380 `PGNO ( g ), `PREV_PGNO (pagep), 381 `NEXT_PGNO ( g ), & tmp_dbt , 382 & `LSN ( g ), & nu_l , &null_lsn)) != 0) { 383 () `__memp_ut ( mpf , 384 dbc -> thad_fo , g , dbc-> iܙy ); 385 ( t ); 388 `LSN_NOT_LOGGED ( `LSN ( g )); 389 pgno = g -> xt_pgno ; 390 `OV_LEN ( g ) = 0; 391 i(( t = `__db_ ( dbc , g )) != 0) 392 ( t ); 393 } pgno ! PGNO_INVALID ); 396 } } 417 $__db_moff ( dbp , , txn , dbt , pgno , , cmpfunc , cm ) 418 DB * dbp ; 419 DB_THREAD_INFO * ; 420 DB_TXN * txn ; 421 cڡ DBT * dbt ; 422 db_pgno_t pgno ; 423 u_t32_t ; 424 (* cmpfunc `__P (( DB *, cڡ DBT *, cڡ DBT *)), * cm ; 426 DBT lol_dbt ; 427 DB_MPOOLFILE * mpf ; 428 PAGE * g ; 429 * buf ; 430 u_t32_t bufsize , cmp_bys , key_ ; 431 u_t8_t * p1 , * p2 ; 432 t ; 434 mpf = dbp ->mpf; 440 i( cmpfunc ! NULL ) { 441 `memt (& lol_dbt , 0, (local_dbt)); 442 buf = NULL ; 443 bufsize = 0; 445 i(( t = `__db_goff ( dbp , , txn , 446 & lol_dbt , , pgno , & buf , & bufsize )) != 0) 447 ( t ); 449 * cm = `cmpfunc ( dbp , dbt , & lol_dbt ); 450 `__os_ ( dbp -> v , buf ); 455 * cm = 0, p1 = dbt -> da , 456 key_ = dbt -> size ; key_ > 0 && pgno ! PGNO_INVALID ;) { 457 i(( t = `__memp_fg ( mpf , & pgno , , txn , 0, & g )) != 0) 458 ( t ); 460 cmp_bys = `OV_LEN ( g < key_ ? OV_LEN(pagep) : key_left; 461 - cmp_bys ; 462 key_ - cmp_bys ; 463 p2 = ( u_t8_t *) g + `P_OVERHEAD ( dbp ); 464 cmp_bys -- > 0; ++ p1 , ++ p2 ) 465 i(* p1 !* p2 ) { 466 * cm = ()* p1 - ()* p2 ; 469 pgno = `NEXT_PGNO ( g ); 470 i(( t = `__memp_ut ( mpf , , g , dbp -> iܙy )) != 0) 471 ( t ); 472 i(* cm != 0) 475 i( key_ > 0) 476 * cm = 1; 477 i( > 0) 478 * cm = -1; 480 * cm = 0; 483 } } 503 $__db_coff ( dbp , , txn , dbt , mch , cmpfunc , cm ) 504 DB * dbp ; 505 DB_THREAD_INFO * ; 506 DB_TXN * txn ; 507 cڡ DBT * dbt , * mch ; 508 (* cmpfunc `__P (( DB *, cڡ DBT *, cڡ DBT *)), * cm ; 510 DBT lol_key , lol_mch ; 511 DB_MPOOLFILE * mpf ; 512 PAGE * dbt_g , * mch_g ; 513 db_pgno_t dbt_pgno , mch_pgno ; 514 u_t32_t cmp_bys , dbt_bufsz , dbt_n , mch_bufsz ; 515 u_t32_t mch_n , max_da , ge_sz ; 516 u_t8_t * p1 , * p2 ; 517 t ; 518 * dbt_buf , * mch_buf ; 520 mpf = dbp ->mpf; 521 ge_sz = dbp -> pgsize ; 522 * cm = 0; 523 dbt_buf = mch_buf = NULL ; 525 `DB_ASSERT ( dbp -> v , `HPAGE_PTYPE ( dbt -> da = H_OFFPAGE ); 526 `DB_ASSERT ( dbp -> v , `HPAGE_PTYPE ( mch -> da = H_OFFPAGE ); 529 `memy (& dbt_n , `HOFFPAGE_TLEN ( dbt -> da ), ( u_t32_t )); 530 `memy (& dbt_pgno , `HOFFPAGE_PGNO ( dbt -> da ), ( db_pgno_t )); 531 `memy (& mch_n , `HOFFPAGE_TLEN ( mch -> da ), ( u_t32_t )); 532 `memy (& mch_pgno , `HOFFPAGE_PGNO ( mch -> da ), ( db_pgno_t )); 533 max_da = ( dbt_n < mch_n ? dbt_len : match_len); 539 i( cmpfunc ! NULL ) { 540 `memt (& lol_key , 0, (local_key)); 541 `memt (& lol_mch , 0, (local_match)); 542 dbt_buf = mch_buf = NULL ; 543 dbt_bufsz = mch_bufsz = 0; 545 i(( t = `__db_goff ( dbp , , txn , & lol_key , dbt_n , 546 dbt_pgno , & dbt_buf , & dbt_bufsz )) != 0) 547 r1 ; 548 i(( t = `__db_goff ( dbp , , txn , & lol_mch , mch_n , 549 mch_pgno , & mch_buf , & mch_bufsz )) != 0) 550 r1 ; 552 * cm = `cmpfunc ( dbp , & lol_key , & lol_mch ); 554 r1 : i( dbt_buf ! NULL ) 555 `__os_ ( dbp -> v , dbt_buf ); 556 i( mch_buf ! NULL ) 557 `__os_ ( dbp -> v , mch_buf ); 558 ( t ); 562 dbt_pgno ! PGNO_INVALID && mch_pgno != PGNO_INVALID) { 563 i(( t = 564 `__memp_fg ( mpf , & dbt_pgno , , txn , 0, & dbt_g )) != 0) 565 ( t ); 566 i(( t = 567 `__memp_fg ( mpf , & mch_pgno , 568 , txn , 0, & mch_g )) != 0) { 569 () `__memp_ut ( 570 mpf , , dbt_g , DB_PRIORITY_UNCHANGED ); 571 ( t ); 573 cmp_bys = ge_sz < max_da ?age_sz : max_data; 574 p1 = ( u_t8_t *) dbt_g + `P_OVERHEAD ( dbp ), 575 p2 = ( u_t8_t *) mch_g + `P_OVERHEAD ( dbp ); 576 cmp_bys -- > 0; ++ p1 , ++ p2 ) 577 i(* p1 !* p2 ) { 578 * cm = ()* p1 - ()* p2 ; 582 dbt_pgno = `NEXT_PGNO ( dbt_g ); 583 mch_pgno = `NEXT_PGNO ( mch_g ); 584 max_da - ge_sz ; 585 i(( t = `__memp_ut ( mpf , 586 , dbt_g , DB_PRIORITY_UNCHANGED )) != 0) { 587 () `__memp_ut ( mpf , 588 , mch_g , DB_PRIORITY_UNCHANGED ); 589 ( t ); 591 i(( t = `__memp_ut ( mpf , 592 , mch_g , DB_PRIORITY_UNCHANGED )) != 0) 593 ( t ); 594 i(* cm != 0) 602 i( dbt_n > mch_n ) 603 * cm = 1; 604 i( mch_n > dbt_n ) 605 * cm = -1; 607 * cm = 0; 611 } } @../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 -> v , 85 ( u_lg ) pgno )); 86 isbad = 1; 90 p -> ޒ = `HOFFSET ( h ); 92 r : i(( t_t = `__db_vrfy_puagefo ( dbp -> v , 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 ENV * v ; 115 VRFY_PAGEINFO * p ; 116 db_pgno_t xt , ev ; 117 isbad , t , _t , t_t ; 118 u_t32_t fcou ; 120 v = dbp ->env; 121 pgt = vdp ->pgset; 122 `DB_ASSERT ( v , 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 (( v , 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 (( v , 151 ( u_lg ) pgno , (u_lg) ev )); 152 isbad = 1; 165 i(( t = `__db_vrfy_pgt_g ( pgt , 166 vdp -> thad_fo , pgno , & _t )) != 0) 167 r ; 168 i(( u_t32_t ) _t > fcou ) { 169 `EPRINT (( v , 171 ( u_lg ) pgno )); 172 t = DB_VERIFY_BAD ; 173 r ; 175 i(( t = 176 `__db_vrfy_pgt_c ( pgt , vdp -> thad_fo , pgno )) != 0) 177 r ; 203 i( `LF_ISSET ( DB_ST_OVFL_LEAF )) { 204 i( `F_ISSET ( p , VRFY_OVFL_LEAFSEEN )) { 205 `EPRINT (( v , 207 ( u_lg ) pgno )); 208 t = DB_VERIFY_BAD ; 209 r ; 211 `F_SET ( p , VRFY_OVFL_LEAFSEEN ); 224 i( _t == 0) { 229 - p -> ޒ ; 232 i(! `LF_ISSET ( DB_SALVAGE )) 233 `__db_vrfy_ru_edback ( dbp , vdp ); 235 de ; 237 xt = p -> xt_pgno ; 240 i( xt = PGNO_INVALID ) 247 i(! `IS_VALID_PGNO ( xt )) { 248 `EPRINT (( v , 250 ( u_lg ) pgno , (u_lg) xt )); 251 t = DB_VERIFY_BAD ; 252 r ; 255 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0 || 256 ( t = `__db_vrfy_ggefo ( vdp , xt , & p )) != 0) 257 ( t ); 258 i( p -> ev_pgno ! pgno ) { 259 `EPRINT (( v , 261 ( u_lg ) xt , (u_lg) p -> ev_pgno , 262 ( u_lg ) pgno )); 263 isbad = 1; 270 pgno = xt ; 273 i( > 0) { 274 isbad = 1; 275 `EPRINT (( v , 276 "Pag%lu: ovow im income", ( u_lg ) pgno )); 279 de : 280 r : i(( t_t = 281 `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 282 t = t_t ; 283 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 284 } } 295 $__db__goff ( dbp , vdp , pgno , dbt , buf , ags ) 296 DB * dbp ; 297 VRFY_DBINFO * vdp ; 298 db_pgno_t pgno ; 299 DBT * dbt ; 300 * buf ; 301 u_t32_t ags ; 303 DB_MPOOLFILE * mpf ; 304 PAGE * h ; 305 t , t_t ; 306 u_t32_t bysg , bys ; 307 u_t8_t * c , * de ; 309 mpf = dbp ->mpf; 310 h = NULL ; 311 t = t_t = 0; 312 bysg = bys = 0; 321 i(( t = `__memp_fg ( 322 mpf , & pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) 323 ( t ); 325 i( `PREV_PGNO ( h = PGNO_INVALID || 326 ! `IS_VALID_PGNO ( `PREV_PGNO ( h ))) 329 pgno = `PREV_PGNO ( h ); 331 i(( t = `__memp_ut ( mpf , 332 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )) != 0) 333 ( t ); 335 i(( t = `__memp_ut ( 336 mpf , vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )) != 0) 337 ( t ); 339 h = NULL ; 341 ( pgno ! PGNO_INVALID && ( `IS_VALID_PGNO (pgno))) { 346 i(( t = `__db_lvage_mkde ( vdp , pgno )) != 0) 349 i(( t = `__memp_fg ( mpf , & pgno , 350 vdp -> thad_fo , NULL , 0, & h )) != 0) 357 i(! `LF_ISSET ( DB_AGGRESSIVE && `TYPE ( h ! P_OVERFLOW ) { 358 t = DB_VERIFY_BAD ; 362 c = ( u_t8_t *) h + `P_OVERHEAD ( dbp ); 363 bys = `OV_LEN ( h ); 365 i( bys + `P_OVERHEAD ( dbp > dbp-> pgsize ) 366 bys = dbp -> pgsize - `P_OVERHEAD (dbp); 372 i(( t = `__os_loc ( dbp -> v , 373 bysg + bys , buf )) != 0) 376 de = *( u_t8_t **) buf + bysg ; 377 bysg + bys ; 379 `memy ( de , c , bys ); 381 pgno = `NEXT_PGNO ( h ); 383 i(( t = `__memp_ut ( mpf , 384 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )) != 0) 386 h = NULL ; 393 i( t =0 || `LF_ISSET ( DB_AGGRESSIVE )) { 394 dbt -> size = bysg ; 395 dbt -> da = *(**) buf ; 399 i( h ! NULL && ( t_t = `__memp_ut ( mpf , 400 vdp -> thad_fo , h , DB_PRIORITY_UNCHANGED )!0 && t == 0) 401 t = t_t ; 403 ( t ); 404 } } @../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 (( 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 ENV * v ; 56 FILE * , * ig_ ; 57 u_t32_t ags ; 58 t ; 60 v = dbp ->env; 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_ = dbp -> dbv -> db_msgfe ; 81 dbp -> dbv -> db_msgfe = ; 83 = ig_ = NULL ; 85 `__db_db ( dbp , ags ); 87 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 89 t = `__db_ ( dbp , txn , ags ); 91 i( ! NULL ) { 92 () `fo ( ); 93 v -> 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 BTREE * bt ; 154 DB_MSGBUF mb ; 155 ENV * v ; 156 HASH * h ; 157 QUEUE * q ; 159 v = dbp ->env; 161 `DB_MSGBUF_INIT (& mb ); 162 `__db_msg ( v , "In-memory DB structure:"); 163 `__db_msgadd ( v , & mb , "%s: %#lx", 164 `__db_dbty_to_rg ( dbp -> ty ), ( u_lg )dbp-> ags ); 165 `__db_ags ( v , & mb , dbp -> ags , __db_ags_ , " (", ")"); 166 `DB_MSGBUF_FLUSH ( v , & mb ); 168 dbp -> ty ) { 169 DB_BTREE : 170 DB_RECNO : 171 bt = dbp -> bt_ ; 172 `__db_msg ( v , "bt_meta: %lu bt_root: %lu", 173 ( u_lg ) bt -> bt_ma , (u_lg)bt-> bt_ro ); 174 `__db_msg ( v , "bt_mkey: %lu", ( u_lg ) bt -> bt_mkey ); 175 i(! `LF_ISSET ( DB_PR_RECOVERYTEST )) 176 `__db_msg ( v , "bt_compare: %#lx bt_prefix: %#lx", 177 `P_TO_ULONG ( bt -> bt_com ), 178 `P_TO_ULONG ( bt -> bt_efix )); 179 `__db_msg ( v , "bt_gno: %lu", ( u_lg ) bt -> bt_gno ); 180 i( dbp -> ty = DB_RECNO ) { 181 `__db_msg ( v , 183 ( u_lg ) bt -> _d , (u_lg)bt-> _dim , 184 ( u_lg ) bt -> _n , 185 bt -> _sour = NULL ? "" : bt->re_source); 186 `__db_msg ( v , 188 bt -> _modifd , bt-> _eof , ( u_lg )bt-> _ϡ ); 191 DB_HASH : 192 h = dbp -> h_ ; 193 `__db_msg ( v , "ma_pgno: %lu", ( u_lg ) h -> ma_pgno ); 194 `__db_msg ( v , "h_f: %lu", ( u_lg ) h -> h_f ); 195 `__db_msg ( v , "h_m: %lu", ( u_lg ) h -> h_m ); 196 i(! `LF_ISSET ( DB_PR_RECOVERYTEST )) 197 `__db_msg ( v , "h_hash: %#lx", `P_TO_ULONG ( h -> h_hash )); 199 DB_QUEUE : 200 q = dbp -> q_ ; 201 `__db_msg ( v , "q_ma: %lu", ( u_lg ) q -> q_ma ); 202 `__db_msg ( v , "q_ro: %lu", ( u_lg ) q -> q_ro ); 203 `__db_msg ( v , "re_pad: %#lxe_len: %lu", 204 ( u_lg ) q -> _d , (u_lg)q-> _n ); 205 `__db_msg ( v , "c_ge: %lu", ( u_lg ) q -> c_ge ); 206 `__db_msg ( v , "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 , NULL , txn , 0, & h )) != 0) 242 ( t ); 243 () `__db_ge ( dbp , h , ags ); 244 i(( t = `__memp_ut ( mpf , NULL , 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_MPOOLFILE * mpf ; 263 DB_MSGBUF mb ; 264 ENV * v ; 265 PAGE * h ; 266 db_pgno_t pgno ; 267 u_t8_t * p ; 268 t , t ; 269 cڡ * p ; 271 v = dbp ->env; 272 mpf = dbp ->mpf; 273 `DB_MSGBUF_INIT (& mb ); 275 `__db_msg ( v , "\tmagic: %#lx", ( u_lg ) dbma -> magic ); 276 `__db_msg ( v , "\tvsi: %lu", ( u_lg ) dbma -> vsi ); 277 `__db_msg ( v , "\agesize: %lu", ( u_lg ) dbma -> gesize ); 278 `__db_msg ( v , "\y: %lu", ( u_lg ) dbma -> ty ); 279 `__db_msg ( v , "\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 v , & mb , "\t䓆i: %lu", ( u_lg ) dbma -> ); 289 pgno = dbma -> , 290 t = 0, p = ", "; pgno ! PGNO_INVALID ;) { 291 i(( t = `__memp_fg ( mpf , 292 & pgno , NULL , NULL, 0, & h )) != 0) { 293 `DB_MSGBUF_FLUSH ( v , & mb ); 294 `__db_msg ( v , 296 ( u_lg ) pgno , `db_ ( t )); 299 pgno = h -> xt_pgno ; 300 () `__memp_ut ( mpf , NULL , h , dbp -> iܙy ); 301 `__db_msgadd ( v , & mb , "%s%lu", p , ( u_lg ) pgno ); 302 i(++ t % 10 == 0) { 303 `DB_MSGBUF_FLUSH ( v , & mb ); 304 t = 0; 305 p = "\t"; 307 p = ", "; 309 `DB_MSGBUF_FLUSH ( v , & mb ); 310 `__db_msg ( v , "\a_pgno: %lu", ( u_lg ) dbma -> ϡ_pgno ); 313 i( ! NULL ) { 314 `DB_MSGBUF_FLUSH ( v , & mb ); 315 `__db_msgadd ( v , & mb , "\tags: %#lx", ( u_lg ) dbma -> ags ); 316 `__db_ags ( v , & mb , dbma -> ags , , " (", ")"); 319 `DB_MSGBUF_FLUSH ( v , & mb ); 320 `__db_msgadd ( v , & mb , "\tuid: "); 321 p = ( u_t8_t *) dbma -> uid , 322 t = 0; c < DB_FILE_ID_LEN ; ++cnt) { 323 `__db_msgadd ( v , & mb , "%x", * p ++); 324 i( t < DB_FILE_ID_LEN - 1) 325 `__db_msgadd ( v , & mb , " "); 327 `DB_MSGBUF_FLUSH ( v , & mb ); 328 } } 335 $__db_bma ( dbp , h , ags ) 336 DB * dbp ; 337 BTMETA * h ; 338 u_t32_t ags ; 340 cڡ FN [] = { 341 { BTM_DUP , "duplicates" }, 342 { BTM_RECNO , "recno" }, 343 { BTM_RECNUM , "btree:recnum" }, 344 { BTM_FIXEDLEN , "recno:fixed-length" }, 345 { BTM_RENUMBER , "recno:renumber" }, 346 { BTM_SUBDB , "multiple-databases" }, 347 { BTM_DUPSORT , "sorted duplicates" }, 348 { 0, NULL } 350 ENV * v ; 352 v = dbp ->env; 354 `__db_ma ( dbp , ( DBMETA *) h , , ags ); 356 `__db_msg ( v , "\tmkey: %lu", ( u_lg ) h -> mkey ); 357 i( dbp -> ty = DB_RECNO ) 358 `__db_msg ( v , "\tre_len: %#lxe_pad: %#lx", 359 ( u_lg ) h -> _n , (u_lg)h-> _d ); 360 `__db_msg ( v , "\o: %lu", ( u_lg ) h -> ro ); 363 } } 370 $__db_hma ( dbp , h , ags ) 371 DB * dbp ; 372 HMETA * h ; 373 u_t32_t ags ; 375 cڡ FN [] = { 376 { DB_HASH_DUP , "duplicates" }, 377 { DB_HASH_SUBDB , "multiple-databases" }, 378 { DB_HASH_DUPSORT , "sorted duplicates" }, 379 { 0, NULL } 381 ENV * v ; 382 DB_MSGBUF mb ; 383 i ; 385 v = dbp ->env; 386 `DB_MSGBUF_INIT (& mb ); 388 `__db_ma ( dbp , ( DBMETA *) h , , ags ); 390 `__db_msg ( v , "\tmax_buck: %lu", ( u_lg ) h -> max_buck ); 391 `__db_msg ( v , "\thigh_mask: %#lx", ( u_lg ) h -> high_mask ); 392 `__db_msg ( v , "\ow_mask: %#lx", ( u_lg ) h -> low_mask ); 393 `__db_msg ( v , "\tf: %lu", ( u_lg ) h -> f ); 394 `__db_msg ( v , "\em: %lu", ( u_lg ) h -> m ); 395 `__db_msg ( v , "\th_chkey: %#lx", ( u_lg ) h -> h_chkey ); 396 `__db_msgadd ( v , & mb , "\tspareoints: "); 397 i = 0; i < NCACHED ; i++) 398 `__db_msgadd ( v , & mb , "%lu ", ( u_lg ) h -> es [ i ]); 399 `DB_MSGBUF_FLUSH ( v , & mb ); 402 } } 409 $__db_qma ( dbp , h , ags ) 410 DB * dbp ; 411 QMETA * h ; 412 u_t32_t ags ; 414 ENV * v ; 416 v = dbp ->env; 418 `__db_ma ( dbp , ( DBMETA *) h , NULL , ags ); 420 `__db_msg ( v , "\tf_o: %lu", ( u_lg ) h -> f_o ); 421 `__db_msg ( v , "\tcur_o: %lu", ( u_lg ) h -> cur_o ); 422 `__db_msg ( v , "\tre_len: %#lxe_pad: %lu", 423 ( u_lg ) h -> _n , (u_lg)h-> _d ); 424 `__db_msg ( v , "\ec_ge: %lu", ( u_lg ) h -> c_ge ); 425 `__db_msg ( v , "\age_ext: %lu", ( u_lg ) h -> ge_ext ); 428 } } 437 $__db_age ( dbp , txn , pgno ) 438 DB * dbp ; 439 DB_TXN * txn ; 440 db_pgno_t pgno ; 442 DB_MPOOLFILE * mpf ; 443 PAGE * h ; 444 t , t_t ; 446 mpf = dbp ->mpf; 448 i(( t = `__memp_fg ( mpf , & pgno , NULL , txn , 0, & h )) != 0) 449 ( t ); 451 t = `__db_ge ( dbp , h , DB_PR_PAGE ); 453 i(( t_t = `__memp_ut ( mpf , NULL , h , dbp -> iܙy )!0 && t == 0) 454 t = t_t ; 456 ( t ); 457 } } 466 $__db_ge ( dbp , h , ags ) 467 DB * dbp ; 468 PAGE * h ; 469 u_t32_t ags ; 471 BINTERNAL * bi ; 472 BKEYDATA * bk ; 473 DB_MSGBUF mb ; 474 ENV * v ; 475 HOFFPAGE a_hkd ; 476 QAMDATA * qp , * q ; 477 RINTERNAL * ri ; 478 db_dx_t dn , n , i , * p ; 479 db_pgno_t pgno ; 480 db_o_t o ; 481 u_t32_t gesize , qn ; 482 u_t8_t * , * hk , * p ; 483 ded , t ; 484 cڡ * s ; 485 * ; 487 v = dbp ->env; 488 `DB_MSGBUF_INIT (& mb ); 494 i( `LF_ISSET ( DB_PR_RECOVERYTEST && `TYPE ( h = P_INVALID ) 497 i(( s = `__db_gy_to_rg ( `TYPE ( h ))= NULL ) { 498 `__db_msg ( v , "ILLEGAL PAGE TYPE:age: %luype: %lu", 499 ( u_lg ) h -> pgno , (u_lg) `TYPE (h)); 500 ( EINVAL ); 509 gesize = ( u_t32_t ) dbp -> mpf -> m -> . _gesize ; 512 `__db_msgadd ( v , & mb , "g%lu: %s:", ( u_lg ) h -> pgno , s ); 518 i(! `LF_ISSET ( DB_PR_RECOVERYTEST ) || 519 ( `TYPE ( h ! P_BTREEMETA && TYPE(h! P_HASHMETA && 520 `TYPE ( h ! P_QAMMETA && TYPE(h! P_QAMDATA )) 521 `__db_msgadd ( v , & mb , " LSN [%lu][%lu]:", 522 ( u_lg ) `LSN ( h ). fe , (u_lg)LSN(h). offt ); 528 `__db_msgadd ( v , & mb , "ev %lu", ( u_lg ) h -> v ); 531 i( `TYPE ( h = P_IBTREE || 532 `TYPE ( h = P_IRECNO || (TYPE(h= P_LRECNO && 533 h -> pgno =(( BTREE *) dbp -> bt_ )-> bt_ro )) 534 `__db_msgadd ( v , & mb , "ecds: %lu", ( u_lg ) `RE_NREC ( h )); 535 `DB_MSGBUF_FLUSH ( v , & mb ); 537 `TYPE ( h )) { 538 P_BTREEMETA : 539 ( `__db_bma ( dbp , ( BTMETA *) h , ags )); 540 P_HASHMETA : 541 ( `__db_hma ( dbp , ( HMETA *) h , ags )); 542 P_QAMMETA : 543 ( `__db_qma ( dbp , ( QMETA *) h , ags )); 544 P_QAMDATA : 545 i(! `LF_ISSET ( DB_PR_PAGE )) 548 qn = (( QUEUE *) dbp -> q_ )-> _n ; 549 o = ( h -> pgno - 1* `QAM_RECNO_PER_PAGE ( dbp ) + 1; 550 i = 0; 551 q = ( QAMDATA *)(( u_t8_t *) h + gesize - qn ); 552 qp = `QAM_GET_RECORD ( dbp , h , i ); q< q ; 553 o ++, i ++, qp = `QAM_GET_RECORD ( dbp , h , i)) { 554 i(! `F_ISSET ( qp , QAM_SET )) 557 `__db_msgadd ( v , & mb , "%s", 558 `F_ISSET ( qp , QAM_VALID ) ? "\t" : " D"); 559 `__db_msgadd ( v , & mb , "[%03lu] %4lu ", ( u_lg ) o , 560 ( u_lg )(( u_t8_t *) qp - (u_t8_*) h )); 561 `__db_bys ( v , & mb , qp -> da , qn ); 568 s = "\t"; 569 i( `TYPE ( h ! P_IBTREE && TYPE(h! P_IRECNO ) { 570 `__db_msgadd ( v , & mb , "%sprev: %4luext: %4lu", 571 s , ( u_lg ) `PREV_PGNO ( h ), (u_lg) `NEXT_PGNO (h)); 572 s = " "; 574 i( `TYPE ( h = P_OVERFLOW ) { 575 `__db_msgadd ( v , & mb , 576 "%et: %4lu ", s , ( u_lg ) `OV_REF ( h )); 577 `__db_bys ( v , 578 & mb , ( u_t8_t *) h + `P_OVERHEAD ( dbp ), `OV_LEN (h)); 581 `__db_msgadd ( v , & mb , "%rs: %4lu", s , ( u_lg ) `NUM_ENT ( h )); 582 `__db_msgadd ( v , & mb , " offt: %4lu", ( u_lg ) `HOFFSET ( h )); 583 `DB_MSGBUF_FLUSH ( v , & mb ); 585 i( `TYPE ( h = P_INVALID || ! `LF_ISSET ( DB_PR_PAGE )) 588 t = 0; 589 p = `P_INP ( dbp , h ); 590 i = 0; i < `NUM_ENT ( h ); i++) { 591 i(( u_t )( `P_ENTRY ( dbp , h , i - ( u_t8_t *)h) < 592 ( u_t )( `P_OVERHEAD ( dbp )) || 593 ( size_t )( `P_ENTRY ( dbp , h , i - ( u_t8_t *)h> gesize ) { 594 `__db_msg ( v , 596 ( u_lg ) i , (u_lg) p [i]); 597 t = EINVAL ; 600 ded = 0; 601 `TYPE ( h )) { 602 P_HASH_UNSORTED : 603 P_HASH : 604 P_IBTREE : 605 P_IRECNO : 606 = `P_ENTRY ( dbp , h , i ); 608 P_LBTREE : 609 = `P_ENTRY ( dbp , h , i ); 610 ded = i % 2 == 0 && 611 `B_DISSET ( `GET_BKEYDATA ( dbp , h , i + O_INDX )-> ty ); 613 P_LDUP : 614 P_LRECNO : 615 = `P_ENTRY ( dbp , h , i ); 616 ded = `B_DISSET ( `GET_BKEYDATA ( dbp , h , i )-> ty ); 619 ty_r ; 621 `__db_msgadd ( v , & mb , "%s", ded ? " D" : "\t"); 622 `__db_msgadd ( 623 v , & mb , "[%03lu] %4lu ", ( u_lg ) i , (u_lg) p [i]); 624 `TYPE ( h )) { 625 P_HASH_UNSORTED : 626 P_HASH : 627 hk = ; 628 `HPAGE_PTYPE ( hk )) { 629 H_OFFDUP : 630 `memy (& pgno , 631 `HOFFDUP_PGNO ( hk ), ( db_pgno_t )); 632 `__db_msgadd ( v , & mb , 633 "%4lu [ofagdups]", ( u_lg ) pgno ); 634 `DB_MSGBUF_FLUSH ( v , & mb ); 636 H_DUPLICATE : 643 i( i != 0) 644 n = `LEN_HKEYDATA ( dbp , h , 0, i ); 646 n = 1; 648 `__db_msgadd ( v , & mb , "Duplicates:"); 649 `DB_MSGBUF_FLUSH ( v , & mb ); 650 p = `HKEYDATA_DATA ( hk ), 651 = p + n ; <p;) { 652 `memy (& dn , p , ( db_dx_t )); 653 p +( db_dx_t ); 654 `__db_msgadd ( v , & mb , "\t\t"); 655 `__db_bys ( v , & mb , p , dn ); 656 p +( db_dx_t + dn ; 659 H_KEYDATA : 660 `__db_bys ( v , & mb , `HKEYDATA_DATA ( hk ), 661 `LEN_HKEYDATA ( dbp , h , i == 0 ? 662 gesize : 0, i )); 664 H_OFFPAGE : 665 `memy (& a_hkd , hk , HOFFPAGE_SIZE ); 666 `__db_msgadd ( v , & mb , 668 ( u_lg ) a_hkd . , (u_lg_hkd. pgno ); 669 `DB_MSGBUF_FLUSH ( v , & mb ); 672 `DB_MSGBUF_FLUSH ( v , & mb ); 673 `__db_msg ( v , "ILLEGAL HASH PAGE TYPE: %lu", 674 ( u_lg ) `HPAGE_PTYPE ( hk )); 675 t = EINVAL ; 679 P_IBTREE : 680 bi = ; 682 i( `F_ISSET ( dbp , DB_AM_RECNUM )) 683 `__db_msgadd ( v , & mb , 684 "cou: %4lu ", ( u_lg ) bi -> ecs ); 685 `__db_msgadd ( v , & mb , 687 ( u_lg ) bi -> pgno , (u_lg)bi-> ty ); 688 `B_TYPE ( bi -> ty )) { 689 B_KEYDATA : 690 `__db_bys ( v , & mb , bi -> da , bi-> n ); 692 B_DUPLICATE : 693 B_OVERFLOW : 694 `__db_off ( v , & mb , bi -> da ); 697 `DB_MSGBUF_FLUSH ( v , & mb ); 698 `__db_msg ( v , "ILLEGAL BINTERNAL TYPE: %lu", 699 ( u_lg ) `B_TYPE ( bi -> ty )); 700 t = EINVAL ; 704 P_IRECNO : 705 ri = ; 706 `__db_msgadd ( v , & mb , "entries %4lugno %4lu", 707 ( u_lg ) ri -> ecs , (u_lgi-> pgno ); 708 `DB_MSGBUF_FLUSH ( v , & mb ); 710 P_LBTREE : 711 P_LDUP : 712 P_LRECNO : 713 bk = ; 714 `B_TYPE ( bk -> ty )) { 715 B_KEYDATA : 716 `__db_bys ( v , & mb , bk -> da , bk-> n ); 718 B_DUPLICATE : 719 B_OVERFLOW : 720 `__db_off ( v , & mb , bk ); 723 `DB_MSGBUF_FLUSH ( v , & mb ); 724 `__db_msg ( v , 726 ( u_lg ) `B_TYPE ( bk -> ty )); 727 t = EINVAL ; 732 ty_r : `DB_MSGBUF_FLUSH ( v , & mb ); 733 `__db_msg ( v , 734 "ILLEGAL PAGE TYPE: %lu", ( u_lg ) `TYPE ( h )); 735 t = EINVAL ; 739 ( t ); 740 } } 749 $__db_bys ( v , mbp , bys , n ) 750 ENV * v ; 751 DB_MSGBUF * mbp ; 752 u_t8_t * bys ; 753 u_t32_t n ; 755 u_t8_t * p ; 756 u_t32_t i ; 757 msg_und ; 759 `__db_msgadd ( v , mbp , "n: %3lu", ( u_lg ) n ); 760 i( n != 0) { 761 `__db_msgadd ( v , mbp , " data: "); 769 i( n > 20) { 770 n = 20; 771 msg_und = 1; 773 msg_und = 0; 774 p = bys , i = n ; i > 0; --i, ++p) 775 i(! `irt (()* p ) && *p != '\t' && *p != '\n') 777 i( i == 0) 778 p = bys , i = n ; i > 0; --i, ++p) 779 `__db_msgadd ( v , mbp , "%c", * p ); 781 p = bys , i = n ; i > 0; --i, ++p) 782 `__db_msgadd ( v , mbp , "%#.2x", ( u_t )* p ); 783 i( msg_und ) 784 `__db_msgadd ( v , mbp , "..."); 786 `DB_MSGBUF_FLUSH ( v , mbp ); 787 } } 794 $__db_off ( v , mbp , vp ) 795 ENV * v ; 796 DB_MSGBUF * mbp ; 797 * vp ; 799 BOVERFLOW * bo ; 801 bo = vp ; 802 `B_TYPE ( bo -> ty )) { 803 B_OVERFLOW : 804 `__db_msgadd ( v , mbp , "overflow:otalen: %4luage: %4lu", 805 ( u_lg ) bo -> , (u_lg)bo-> pgno ); 807 B_DUPLICATE : 808 `__db_msgadd ( 809 v , mbp , "dui:age: %4lu", ( u_lg ) bo -> pgno ); 815 `DB_MSGBUF_FLUSH ( v , mbp ); 816 } } 826 $__db_ags ( v , mbp , ags , , efix , suffix ) 827 ENV * v ; 828 DB_MSGBUF * mbp ; 829 u_t32_t ags ; 830 FN cڡ * ; 831 cڡ * efix , * suffix ; 833 DB_MSGBUF mb ; 834 cڡ FN * p ; 835 found , de ; 836 cڡ * p ; 838 i( = NULL ) 846 i( mbp = NULL ) { 847 de = 1; 848 mbp = & mb ; 849 `DB_MSGBUF_INIT ( mbp ); 851 de = 0; 853 p = efix = NULL ? "" :refix; 854 found = 0, p = ; f-> mask != 0; ++fnp) 855 i( `LF_ISSET ( p -> mask )) { 856 `__db_msgadd ( v , mbp , "%s%s", p , p -> me ); 857 p = ", "; 858 found = 1; 861 i(( de || found && suffix ! NULL ) 862 `__db_msgadd ( v , mbp , "%s", suffix ); 863 i( de ) 864 `DB_MSGBUF_FLUSH ( v , mbp ); 865 } } 874 $__db_lockmode_to_rg ( mode ) 875 db_lockmode_t mode ; 877 mode ) { 878 DB_LOCK_NG : 880 DB_LOCK_READ : 882 DB_LOCK_WRITE : 884 DB_LOCK_WAIT : 886 DB_LOCK_IWRITE : 888 DB_LOCK_IREAD : 890 DB_LOCK_IWR : 892 DB_LOCK_READ_UNCOMMITTED : 894 DB_LOCK_WWRITE : 900 } } 907 $__db_gy_to_rg ( ty ) 908 u_t32_t ty ; 910 * s ; 912 s = NULL ; 913 ty ) { 914 P_BTREEMETA : 915 s = "btree metadata"; 917 P_LDUP : 918 s = "duplicate"; 920 P_HASH_UNSORTED : 921 s = "hash unsorted"; 923 P_HASH : 924 s = "hash"; 926 P_HASHMETA : 927 s = "hash metadata"; 929 P_IBTREE : 930 s = "btree internal"; 932 P_INVALID : 933 s = "invalid"; 935 P_IRECNO : 936 s = "recno internal"; 938 P_LBTREE : 939 s = "btreeeaf"; 941 P_LRECNO : 942 s = "recnoeaf"; 944 P_OVERFLOW : 945 s = "overflow"; 947 P_QAMMETA : 948 s = "queue metadata"; 950 P_QAMDATA : 951 s = "queue"; 957 ( s ); 958 } } 969 $__db_dume ( dbp , txn , , me ) 970 DB * dbp ; 971 DB_TXN * txn ; 972 * , * me ; 974 `COMPQUIET ( txn , NULL ); 975 `COMPQUIET ( , NULL ); 976 `COMPQUIET ( me , NULL ); 978 ( `__db__n_but ( dbp -> v )); 979 } } 987 cڡ FN * 988 $__db_g_ags_ () 994 ( NULL ); 995 } } 1006 $__db_dump_ ( dbp , subme , back , hd , pag , keyag ) 1007 DB * dbp ; 1008 cڡ * subme ; 1009 (* back `__P ((*, const *)); 1010 * hd ; 1011 pag , keyag ; 1013 DB_THREAD_INFO * ; 1014 ENV * v ; 1015 hd_check , t , t_t ; 1017 v = dbp ->env; 1019 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->dump"); 1021 `ENV_ENTER ( v , ); 1024 hd_check = `IS_ENV_REPLICATED ( v ); 1025 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 1)) != 0) { 1026 hd_check = 0; 1027 r ; 1030 t = `__db_dump ( dbp , subme , back , hd , pag , keyag ); 1033 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 1034 t = t_t ; 1036 r : `ENV_LEAVE ( v , ); 1037 ( t ); 1038 } } 1048 $__db_dump ( dbp , subme , back , hd , pag , keyag ) 1049 DB * dbp ; 1050 cڡ * subme ; 1051 (* back `__P ((*, const *)); 1052 * hd ; 1053 pag , keyag ; 1055 DBC * db ; 1056 DBT key , da ; 1057 DBT keyt , d ; 1058 ENV * v ; 1059 db_o_t o ; 1060 is_o , t , t_t ; 1061 * por ; 1063 v = dbp ->env; 1065 i(( t = `__db_hd ( 1066 dbp , subme , pag , keyag , hd , back , NULL , 0)) != 0) 1067 ( t ); 1073 i(( t = `__db_curs ( dbp , NULL , NULL, & db , 0)) != 0) 1074 ( t ); 1076 `memt (& key , 0, (key)); 1077 `memt (& da , 0, (data)); 1078 i(( t = `__os_mloc ( v , 1024 * 1024, & da .data)) != 0) 1079 r ; 1080 da . un = 1024 * 1024; 1081 da . ags = DB_DBT_USERMEM ; 1082 is_o = ( dbp -> ty = DB_RECNO || dbp->ty = DB_QUEUE ); 1083 keyag = is_o ? keyflag : 1; 1084 i( is_o ) { 1085 keyt . da = & o ; 1086 keyt . size = ( o ); 1089 y : ( t = 1090 `__dbc_g ( db , & key , & da , DB_NEXT | DB_MULTIPLE_KEY )) == 0) { 1091 `DB_MULTIPLE_INIT ( por , & da ); 1093 i( is_o ) 1094 `DB_MULTIPLE_RECNO_NEXT ( por , & da , 1095 o , d . da , d. size ); 1097 `DB_MULTIPLE_KEY_NEXT ( por , 1098 & da , keyt .data, 1099 keyt . size , d . da , dataret.size); 1101 i( d . da = NULL ) 1104 i(( keyag && 1105 ( t = `__db_dbt (& keyt , pag , " ", 1106 hd , back , is_o )) != 0) || 1107 ( t = `__db_dbt (& d , pag , " ", 1108 hd , back , 0)) != 0) 1109 r ; 1112 i( t = DB_BUFFER_SMALL ) { 1113 da . size = ( u_t32_t ) `DB_ALIGN (data.size, 1024); 1114 i(( t = `__os_loc ( v , da . size , &data.data)) != 0) 1115 r ; 1116 da . un = da. size ; 1117 y ; 1119 i( t = DB_NOTFOUND ) 1120 t = 0; 1122 i(( t_t = `__db_foٔ ( hd , back )!0 && t == 0) 1123 t = t_t ; 1125 r : i(( t_t = `__dbc_o ( db )!0 && t == 0) 1126 t = t_t ; 1127 i( da .d! NULL ) 1128 `__os_ ( v , da .data); 1130 ( t ); 1131 } } 1141 $__db_dbt ( db , checkt , efix , hd , back , is_o ) 1142 DBT * db ; 1143 checkt ; 1144 cڡ * efix ; 1145 * hd ; 1146 (* back `__P ((*, const *)); 1147 is_o ; 1149 cڡ u_ch hex [] = "0123456789abcdef"; 1150 db_o_t o ; 1151 size_t n ; 1152 t ; 1153 #DBTBUFLEN 100 ) 1154 u_t8_t * p , * hp ; 1155 buf [ DBTBUFLEN ], hbuf [DBTBUFLEN]; 1163 i( efix ! NULL && ( t = `back ( hd ,refix)) != 0) 1164 ( t ); 1165 i( is_o ) { 1171 () `__ua_memy (& o , db -> da , (recno)); 1172 `tf ( buf , DBTBUFLEN , "%lu", ( u_lg ) o ); 1175 i(! checkt ) { 1176 n = ` ( buf ), p = ( u_t8_t *)buf, 1177 hp = ( u_t8_t *) hbuf ; n -- > 0; ++ p ) { 1178 * hp ++ = hex [( u_t8_t )(* p & 0xf0) >> 4]; 1179 * hp ++ = hex [* p & 0x0f]; 1181 * hp = '\0'; 1182 t = `back ( hd , hbuf ); 1184 t = `back ( hd , buf ); 1186 i( t != 0) 1187 ( t ); 1188 } i( checkt ) { 1189 n = db -> size , p = db-> da ;en--; ++p) 1190 i( `irt (()* p )) { 1191 i(* p == '\\' && 1192 ( t = `back ( hd , "\\")) != 0) 1193 ( t ); 1194 `tf ( buf , DBTBUFLEN , "%c", * p ); 1195 i(( t = `back ( hd , buf )) != 0) 1196 ( t ); 1198 `tf ( buf , DBTBUFLEN , "\\%c%c", 1199 hex [( u_t8_t )(* p & 0xf0) >> 4], 1200 hex [* p & 0x0f]); 1201 i(( t = `back ( hd , buf )) != 0) 1202 ( t ); 1205 n = db -> size , p = db-> da ;en--; ++p) { 1206 `tf ( buf , DBTBUFLEN , "%c%c", 1207 hex [( u_t8_t )(* p & 0xf0) >> 4], 1208 hex [* p & 0x0f]); 1209 i(( t = `back ( hd , buf )) != 0) 1210 ( t ); 1213 ( `back ( hd , "\n")); 1214 } } 1224 $__db_hd ( dbp , subme , pag , keyag , hd , back , vdp , ma_pgno ) 1225 DB * dbp ; 1226 cڡ * subme ; 1227 pag , keyag ; 1228 * hd ; 1229 (* back `__P ((*, const *)); 1230 VRFY_DBINFO * vdp ; 1231 db_pgno_t ma_pgno ; 1233 DBT dbt ; 1234 DBTYPE dbty ; 1235 ENV * v ; 1236 VRFY_PAGEINFO * p ; 1237 u_t32_t ags , tmp_u_t32 ; 1238 size_t bu ; 1239 * buf ; 1240 usg_vdp , t , t_t , tmp_t ; 1242 t = 0; 1243 buf = NULL ; 1244 `COMPQUIET ( bu , 0); 1254 i( dbp = NULL ) 1255 v = NULL ; 1257 v = dbp ->env; 1258 `DB_ASSERT ( v , dbp ! NULL || vdp != NULL); 1267 i( vdp ! NULL ) { 1268 i(( t = `__db_vrfy_ggefo ( vdp , ma_pgno , & p )) != 0) 1269 ( t ); 1271 i( `F_ISSET ( vdp , SALVAGE_PRINTABLE )) 1272 pag = 1; 1273 usg_vdp = 1; 1275 p = NULL ; 1276 usg_vdp = 0; 1283 i( dbp = NULL ) 1284 dbty = DB_BTREE ; 1285 i( usg_vdp ) 1286 p -> ty ) { 1287 P_BTREEMETA : 1288 i( `F_ISSET ( p , VRFY_IS_RECNO )) 1289 dbty = DB_RECNO ; 1291 dbty = DB_BTREE ; 1293 P_HASHMETA : 1294 dbty = DB_HASH ; 1296 P_QAMMETA : 1297 dbty = DB_QUEUE ; 1306 `DB_ASSERT ( v , `F_ISSET ( dbp , DB_AM_VERIFYING )); 1307 dbty = DB_BTREE ; 1311 dbty = dbp -> ty ; 1313 i(( t = `back ( hd , "VERSION=3\n")) != 0) 1314 r ; 1315 i( pag ) { 1316 i(( t = `back ( hd , "format=print\n")) != 0) 1317 r ; 1318 } i(( t = `back ( hd , "format=bytevalue\n")) != 0) 1319 r ; 1326 bu = 64; 1327 i(( t = `__os_mloc ( v , bu , & buf )) != 0) 1328 r ; 1329 i( subme ! NULL ) { 1330 `tf ( buf , bu , "database="); 1331 i(( t = `back ( hd , buf )) != 0) 1332 r ; 1333 `DB_INIT_DBT ( dbt , subme , ` (subname)); 1334 i(( t = `__db_dbt (& dbt , 1, NULL , hd , back , 0)) != 0) 1335 r ; 1337 dbty ) { 1338 DB_BTREE : 1339 i(( t = `back ( hd , "type=btree\n")) != 0) 1340 r ; 1341 i( usg_vdp ) 1342 tmp_t = `F_ISSET ( p , VRFY_HAS_RECNUMS ) ? 1 : 0; 1344 i(( t = `__db_g_ags ( dbp , & ags )) != 0) { 1345 `__db_r ( v , t , "DB->get_flags"); 1346 r ; 1348 tmp_t = `F_ISSET ( dbp , DB_AM_RECNUM ) ? 1 : 0; 1350 i( tmp_t && ( t = `back ( hd , "recnum=1\n")) != 0) 1351 r ; 1353 i( usg_vdp ) 1354 tmp_u_t32 = p -> bt_mkey ; 1356 i(( t = 1357 `__bam_g_bt_mkey ( dbp , & tmp_u_t32 )) != 0) { 1358 `__db_r ( v , t , "DB->get_bt_minkey"); 1359 r ; 1361 i( tmp_u_t32 !0 &&mp_u_t32 ! DEFMINKEYPAGE ) { 1362 `tf ( buf , bu , 1363 "bt_mkey=%lu\n", ( u_lg ) tmp_u_t32 ); 1364 i(( t = `back ( hd , buf )) != 0) 1365 r ; 1368 DB_HASH : 1369 #ifde HAVE_HASH 1370 i(( t = `back ( hd , "type=hash\n")) != 0) 1371 r ; 1372 i( usg_vdp ) 1373 tmp_u_t32 = p -> h_f ; 1375 i(( t = 1376 `__ham_g_h_f ( dbp , & tmp_u_t32 )) != 0) { 1377 `__db_r ( v , t , "DB->get_h_ffactor"); 1378 r ; 1380 i( tmp_u_t32 != 0) { 1381 `tf ( buf , bu , 1382 "h_f=%lu\n", ( u_lg ) tmp_u_t32 ); 1383 i(( t = `back ( hd , buf )) != 0) 1384 r ; 1387 i( usg_vdp ) 1388 tmp_u_t32 = p -> h_m ; 1390 i(( t = `__ham_g_h_m ( dbp , & tmp_u_t32 )) != 0) { 1391 `__db_r ( v , t , "DB->get_h_nelem"); 1392 r ; 1398 i( tmp_u_t32 > 1) { 1399 `tf ( buf , bu , 1400 "h_m=%lu\n", ( u_lg ) tmp_u_t32 ); 1401 i(( t = `back ( hd , buf )) != 0) 1402 r ; 1406 t = `__db_no_hash_am ( v ); 1407 r ; 1409 DB_QUEUE : 1410 #ifde HAVE_QUEUE 1411 i(( t = `back ( hd , "type=queue\n")) != 0) 1412 r ; 1413 i( usg_vdp ) 1414 tmp_u_t32 = vdp -> _n ; 1416 i(( t = `__m_g__n ( dbp , & tmp_u_t32 )) != 0) { 1417 `__db_r ( v , t , "DB->get_re_len"); 1418 r ; 1420 `tf ( buf , bu , "_n=%lu\n", ( u_lg ) tmp_u_t32 ); 1421 i(( t = `back ( hd , buf )) != 0) 1422 r ; 1424 i( usg_vdp ) 1425 tmp_t = () vdp -> _d ; 1427 i(( t = `__m_g__d ( dbp , & tmp_t )) != 0) { 1428 `__db_r ( v , t , "DB->get_re_pad"); 1429 r ; 1431 i( tmp_t != 0 &&mp_int != ' ') { 1432 `tf ( buf , bu , "_d=%#x\n", tmp_t ); 1433 i(( t = `back ( hd , buf )) != 0) 1434 r ; 1437 i( usg_vdp ) 1438 tmp_u_t32 = vdp -> ge_ext ; 1440 i(( t = 1441 `__qam_g_exsize ( dbp , & tmp_u_t32 )) != 0) { 1442 `__db_r ( v , t , "DB->get_q_extentsize"); 1443 r ; 1445 i( tmp_u_t32 != 0) { 1446 `tf ( buf , bu , 1447 "exsize=%lu\n", ( u_lg ) tmp_u_t32 ); 1448 i(( t = `back ( hd , buf )) != 0) 1449 r ; 1453 t = `__db_no_queue_am ( v ); 1454 r ; 1456 DB_RECNO : 1457 i(( t = `back ( hd , "type=recno\n")) != 0) 1458 r ; 1459 i( usg_vdp ) 1460 tmp_t = `F_ISSET ( p , VRFY_IS_RRECNO ) ? 1 : 0; 1462 tmp_t = `F_ISSET ( dbp , DB_AM_RENUMBER ) ? 1 : 0; 1463 i( tmp_t != 0 && 1464 ( t = `back ( hd , "renumber=1\n")) != 0) 1465 r ; 1467 i( usg_vdp ) 1468 tmp_t = `F_ISSET ( p , VRFY_IS_FIXEDLEN ) ? 1 : 0; 1470 tmp_t = `F_ISSET ( dbp , DB_AM_FIXEDLEN ) ? 1 : 0; 1471 i( tmp_t ) { 1472 i( usg_vdp ) 1473 tmp_u_t32 = p -> _n ; 1475 i(( t = 1476 `__m_g__n ( dbp , & tmp_u_t32 )) != 0) { 1477 `__db_r ( v , t , "DB->get_re_len"); 1478 r ; 1480 `tf ( buf , bu , 1481 "_n=%lu\n", ( u_lg ) tmp_u_t32 ); 1482 i(( t = `back ( hd , buf )) != 0) 1483 r ; 1485 i( usg_vdp ) 1486 tmp_t = () p -> _d ; 1488 i(( t = 1489 `__m_g__d ( dbp , & tmp_t )) != 0) { 1490 `__db_r ( v , t , "DB->get_re_pad"); 1491 r ; 1493 i( tmp_t != 0 &&mp_int != ' ') { 1494 `tf ( buf , 1495 bu , "_d=%#x\n", ( u_t ) tmp_t ); 1496 i(( t = `back ( hd , buf )) != 0) 1497 r ; 1501 DB_UNKNOWN : 1502 t = `__db_unknown_th ( v , "__db_prheader"); 1503 r ; 1506 i( usg_vdp ) { 1507 i( `F_ISSET ( p , VRFY_HAS_CHKSUM )) 1508 i(( t = `back ( hd , "chksum=1\n")) != 0) 1509 r ; 1510 i( `F_ISSET ( p , VRFY_HAS_DUPS )) 1511 i(( t = `back ( hd , "duplicates=1\n")) != 0) 1512 r ; 1513 i( `F_ISSET ( p , VRFY_HAS_DUPSORT )) 1514 i(( t = `back ( hd , "dupsort=1\n")) != 0) 1515 r ; 1523 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 1524 i(( t = `back ( hd , "chksum=1\n")) != 0) 1525 r ; 1526 i( `F_ISSET ( dbp , DB_AM_DUP )) 1527 i(( t = `back ( hd , "duplicates=1\n")) != 0) 1528 r ; 1529 i( `F_ISSET ( dbp , DB_AM_DUPSORT )) 1530 i(( t = `back ( hd , "dupsort=1\n")) != 0) 1531 r ; 1532 i(! `F_ISSET ( dbp , DB_AM_PGDEF )) { 1533 `tf ( buf , bu , 1534 "db_gesize=%lu\n", ( u_lg ) dbp -> pgsize ); 1535 i(( t = `back ( hd , buf )) != 0) 1536 r ; 1540 i( keyag && ( t = `back ( hd , "keys=1\n")) != 0) 1541 r ; 1543 t = `back ( hd , "HEADER=END\n"); 1545 r : i( usg_vdp && 1546 ( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1547 t = t_t ; 1548 i( buf ! NULL ) 1549 `__os_ ( v , buf ); 1551 ( t ); 1552 } } 1563 $__db_foٔ ( hd , back ) 1564 * hd ; 1565 (* back `__P ((*, const *)); 1567 ( `back ( hd , "DATA=END\n")); 1568 } } 1577 $__db__back ( hd , r_g ) 1578 * hd ; 1579 cڡ * r_g ; 1581 * r ; 1582 FILE * f ; 1584 r = (*) r_g ; 1585 f = ( FILE *) hd ; 1587 i( `rtf ( f , "%s", r !() ` (str)) 1588 ( EIO ); 1591 } } 1600 $__db_dbty_to_rg ( ty ) 1601 DBTYPE ty ; 1603 ty ) { 1604 DB_BTREE : 1606 DB_HASH : 1608 DB_RECNO : 1610 DB_QUEUE : 1612 DB_UNKNOWN : 1617 } } @../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 (( ENV *, DB_THREAD_INFO *, 18 __db_pg_da_gs *, DB *, DB_LSN *, DB_MPOOLFILE *, db_cs , )); 19 __db_pg__cov_42_t __P (( ENV *, DB_THREAD_INFO *, 20 __db_pg_da_42_gs *, 21 DB *, DB_LSN *, DB_MPOOLFILE *, db_cs , )); 31 $__db_addm_cov ( v , db , lp , , fo ) 32 ENV * v ; 33 DBT * db ; 34 DB_LSN * lp ; 35 db_cs ; 36 * fo ; 38 __db_addm_gs * gp ; 39 DB_THREAD_INFO * ; 40 DB * fe_dbp ; 41 DBC * dbc ; 42 DB_MPOOLFILE * mpf ; 43 PAGE * g ; 44 cmp_n , cmp_p , modifd , t ; 46 = (( DB_TXNHEAD *) fo )-> thad_fo ; 47 g = NULL ; 48 `REC_PRINT ( __db_addm_t ); 49 `REC_INTRO ( __db_addm_ad , , 1); 51 `REC_FGET ( mpf , , gp -> pgno , & g , de ); 52 modifd = 0; 54 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 55 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 56 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 57 i(( cmp_p =0 && `DB_REDO ( && gp -> code = DB_ADD_DUP ) || 58 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_REM_DUP )) { 60 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 61 i(( t = `__db_pem ( dbc , g , gp -> dx ,rgp-> nbys , 62 gp -> hdr . size =0 ? NULL : &argp->hdr, 63 gp -> dbt . size =0 ? NULL : &argp->dbt)) != 0) 64 out ; 65 modifd = 1; 67 } i(( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_ADD_DUP ) || 68 ( cmp_p =0 && `DB_REDO ( && gp -> code = DB_REM_DUP )) { 70 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 71 i(( t = `__db_dem ( dbc , 72 g , gp -> dx ,rgp-> nbys )) != 0) 73 out ; 74 modifd = 1; 77 i( modifd ) { 78 i( `DB_REDO ( )) 79 `LSN ( g * lp ; 81 `LSN ( g gp -> g ; 84 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 85 out ; 86 g = NULL ; 88 de : * lp = gp -> ev_l ; 89 t = 0; 91 out : i( g ! NULL ) 92 () `__memp_ut ( mpf , , g , dbc -> iܙy ); 93 REC_CLOSE ; 94 } } 101 $__db_big_cov ( v , db , lp , , fo ) 102 ENV * v ; 103 DBT * db ; 104 DB_LSN * lp ; 105 db_cs ; 106 * fo ; 108 __db_big_gs * gp ; 109 DB_THREAD_INFO * ; 110 DB * fe_dbp ; 111 DBC * dbc ; 112 DB_MPOOLFILE * mpf ; 113 PAGE * g ; 114 cmp_n , cmp_p , modifd , t ; 116 = (( DB_TXNHEAD *) fo )-> thad_fo ; 117 g = NULL ; 118 `REC_PRINT ( __db_big_t ); 119 `REC_INTRO ( __db_big_ad , , 0); 121 `REC_FGET ( mpf , , gp -> pgno , & g , age ); 122 modifd = 0; 130 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 131 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 132 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 133 i(( cmp_p =0 && `DB_REDO ( && gp -> code = DB_ADD_BIG ) || 134 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_REM_BIG )) { 136 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 137 `P_INIT ( g , fe_dbp -> pgsize , gp -> pgno ,rgp-> ev_pgno , 138 gp -> xt_pgno , 0, P_OVERFLOW ); 139 `OV_LEN ( g gp -> dbt . size ; 140 `OV_REF ( g ) = 1; 141 `memy (( u_t8_t *) g + `P_OVERHEAD ( fe_dbp ), gp -> dbt . da , 142 gp -> dbt . size ); 143 `PREV_PGNO ( g gp -> ev_pgno ; 144 modifd = 1; 145 } i(( cmp_n =0 && `DB_UNDO ( && gp -> code = DB_ADD_BIG ) || 146 ( cmp_p =0 && `DB_REDO ( && gp -> code = DB_REM_BIG )) { 152 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 153 modifd = 1; 155 i( modifd ) 156 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 158 t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 159 g = NULL ; 160 i( t != 0) 161 out ; 167 i( gp -> code = DB_REM_BIG ) 168 de ; 171 age : i( gp -> ev_pgno ! PGNO_INVALID ) { 172 `REC_FGET ( mpf , , gp -> ev_pgno , & g , age ); 173 modifd = 0; 175 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 176 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> evl ); 177 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> evl ); 179 i( cmp_p =0 && `DB_REDO ( && gp -> code = DB_ADD_BIG ) { 181 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 182 `NEXT_PGNO ( g gp -> pgno ; 183 modifd = 1; 184 } i( cmp_n == 0 && 185 `DB_UNDO ( && gp -> code = DB_ADD_BIG ) { 187 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 188 `NEXT_PGNO ( g gp -> xt_pgno ; 189 modifd = 1; 191 i( modifd ) 192 `LSN ( g `DB_REDO ( ? * lp : gp -> evl ; 193 t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 194 g = NULL ; 195 i( t != 0) 196 out ; 198 g = NULL ; 201 age : i( gp -> xt_pgno ! PGNO_INVALID ) { 202 `REC_FGET ( mpf , , gp -> xt_pgno , & g , de ); 203 modifd = 0; 205 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 206 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> x ); 207 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> x ); 208 i( cmp_p =0 && `DB_REDO ( )) { 209 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 210 `PREV_PGNO ( g PGNO_INVALID ; 211 modifd = 1; 212 } i( cmp_n =0 && `DB_UNDO ( )) { 213 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 214 `PREV_PGNO ( g gp -> pgno ; 215 modifd = 1; 217 i( modifd ) 218 `LSN ( g `DB_REDO ( ? * lp : gp -> x ; 219 t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 220 g = NULL ; 221 i( t != 0) 222 out ; 224 g = NULL ; 226 de : * lp = gp -> ev_l ; 227 t = 0; 229 out : i( g ! NULL ) 230 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 231 REC_CLOSE ; 232 } } 242 $__db_ovf_cov ( v , db , lp , , fo ) 243 ENV * v ; 244 DBT * db ; 245 DB_LSN * lp ; 246 db_cs ; 247 * fo ; 249 __db_ovf_gs * gp ; 250 DB_THREAD_INFO * ; 251 DB * fe_dbp ; 252 DBC * dbc ; 253 DB_MPOOLFILE * mpf ; 254 PAGE * g ; 255 cmp , t ; 257 = (( DB_TXNHEAD *) fo )-> thad_fo ; 258 g = NULL ; 259 `REC_PRINT ( __db_ovf_t ); 260 `REC_INTRO ( __db_ovf_ad , , 0); 262 `REC_FGET ( mpf , , gp -> pgno , & g , de ); 264 cmp = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 265 `CHECK_LSN ( v , , cmp , & `LSN ( g ), & gp -> l ); 266 i( cmp =0 && `DB_REDO ( )) { 268 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 269 `OV_REF ( g + gp -> adju ; 270 g -> l = * lp ; 271 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 273 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 274 `OV_REF ( g - gp -> adju ; 275 g -> l = gp ->lsn; 277 t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 278 g = NULL ; 279 i( t != 0) 280 out ; 281 g = NULL ; 283 de : * lp = gp -> ev_l ; 284 t = 0; 286 out : i( g ! NULL ) 287 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 288 REC_CLOSE ; 289 } } 299 $__db_debug_cov ( v , db , lp , , fo ) 300 ENV * v ; 301 DBT * db ; 302 DB_LSN * lp ; 303 db_cs ; 304 * fo ; 306 __db_debug_gs * gp ; 307 t ; 309 `COMPQUIET ( , DB_TXN_ABORT ); 310 `COMPQUIET ( fo , NULL ); 312 `REC_PRINT ( __db_debug_t ); 313 `REC_NOOP_INTRO ( __db_debug_ad ); 315 * lp = gp -> ev_l ; 316 t = 0; 318 REC_NOOP_CLOSE ; 319 } } 329 $__db_no_cov ( v , db , lp , , fo ) 330 ENV * v ; 331 DBT * db ; 332 DB_LSN * lp ; 333 db_cs ; 334 * fo ; 336 __db_no_gs * gp ; 337 DB_THREAD_INFO * ; 338 DB * fe_dbp ; 339 DBC * dbc ; 340 DB_MPOOLFILE * mpf ; 341 PAGE * g ; 342 cmp_n , cmp_p , t ; 344 = (( DB_TXNHEAD *) fo )-> thad_fo ; 345 g = NULL ; 346 `REC_PRINT ( __db_no_t ); 347 `REC_INTRO ( __db_no_ad , , 0); 349 `REC_FGET ( mpf , , gp -> pgno , & g , de ); 351 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 352 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> evl ); 353 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> evl ); 354 i( cmp_p =0 && `DB_REDO ( )) { 355 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 356 `LSN ( g * lp ; 357 } i( cmp_n =0 && `DB_UNDO ( )) { 358 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 359 `LSN ( g gp -> evl ; 361 t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 362 g = NULL ; 364 de : * lp = gp -> ev_l ; 365 out : i( g ! NULL ) 366 () `__memp_ut ( mpf , 367 , g , fe_dbp -> iܙy ); 368 REC_CLOSE ; 369 } } 379 $__db_pg_loc_cov ( v , db , lp , , fo ) 380 ENV * v ; 381 DBT * db ; 382 DB_LSN * lp ; 383 db_cs ; 384 * fo ; 386 __db_pg_loc_gs * gp ; 387 DB_THREAD_INFO * ; 388 DB * fe_dbp ; 389 DBC * dbc ; 390 DBMETA * ma ; 391 DB_MPOOLFILE * mpf ; 392 PAGE * g ; 393 db_pgno_t pgno ; 394 cmp_n , cmp_p , d , v , t ; 396 = (( DB_TXNHEAD *) fo )-> thad_fo ; 397 ma = NULL ; 398 g = NULL ; 399 d = 0; 400 `REC_PRINT ( __db_pg_loc_t ); 401 `REC_INTRO ( __db_pg_loc_ad , , 0); 409 pgno = PGNO_BASE_MD ; 410 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 0, & ma )) != 0) { 412 i( `DB_REDO ( )) { 413 t = `__db_pgr ( fe_dbp , pgno ,et); 414 out ; 416 de ; 418 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 419 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 420 `CHECK_LSN ( v , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 421 i( cmp_p =0 && `DB_REDO ( )) { 423 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 424 `LSN ( ma * lp ; 425 ma -> = gp -> xt ; 426 i( gp -> pgno > ma -> ϡ_pgno ) 427 ma -> ϡ_pgno = gp -> pgno ; 428 } i( cmp_n =0 && `DB_UNDO ( )) { 430 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 431 `LSN ( ma gp -> ma_l ; 436 i(! `IS_ZERO_LSN ( gp -> ge_l )) 437 ma -> = gp -> pgno ; 438 ma -> ϡ_pgno = gp ->last_pgno; 441 #ifde HAVE_FTRUNCATE 447 i( = DB_TXN_ABORT && ! `IS_ZERO_LSN ( gp -> ge_l )) { 448 db_pgno_t * li ; 449 u_t32_t m ; 451 i(( t = `__memp_g_li ( mpf , & m , & li )) != 0) 452 out ; 453 i( li ! NULL ) { 454 i(( t = 455 `__memp_exnd_li ( mpf , m + 1, & li )) != 0) 456 out ; 457 i( m != 0) 458 `memmove ( li + 1,i, m * (list)); 459 * li = gp -> pgno ; 472 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 481 i( `DB_UNDO ( )) 482 do_un ; 483 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 484 DB_MPOOL_CREATE , & g )) != 0) { 485 i( `DB_UNDO ( && t = ENOSPC ) 486 do_un ; 487 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 488 out ; 490 d = 1; 494 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 495 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> ge_l ); 502 i( `IS_ZERO_LSN ( `LSN ( g ))) 503 cmp_p = 0; 505 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> ge_l ); 512 i( `DB_REDO ( && cmp_p == 0) { 514 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 515 gp -> y ) { 516 P_LBTREE : 517 P_LRECNO : 518 P_LDUP : 519 v = LEAFLEVEL ; 522 v = 0; 525 `P_INIT ( g , fe_dbp -> pgsize , 526 gp -> pgno , PGNO_INVALID , PGNO_INVALID, v ,rgp-> y ); 528 g -> l = * lp ; 529 } i( `DB_UNDO ( && ( cmp_n =0 || d )) { 536 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 537 `P_INIT ( g , fe_dbp -> pgsize , 538 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 540 g -> l = gp -> ge_l ; 543 do_un : 547 i(( g = NULL || `IS_ZERO_LSN ( `LSN (pagep))) && 548 `IS_ZERO_LSN ( gp -> ge_l && `DB_UNDO ( )) { 550 i( g ! NULL ) { 551 i(( t = `__memp_ut ( mpf , , 552 g , DB_PRIORITY_VERY_LOW )) != 0) 553 out ; 554 g = NULL ; 557 i( ma -> ϡ_pgno < gp -> pgno && ( t = `__memp_run ( 558 mpf , , gp -> pgno , MP_TRUNC_RECOVER )) != 0) 559 out ; 562 i( g ! NULL ) { 563 t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 564 g = NULL ; 565 i( t != 0) 566 out ; 569 t = `__memp_ut ( mpf , , ma , fe_dbp -> iܙy ); 570 ma = NULL ; 571 i( t != 0) 572 out ; 574 de : * lp = gp -> ev_l ; 575 t = 0; 577 out : i( g ! NULL ) 578 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 579 i( ma ! NULL ) 580 () `__memp_ut ( mpf , , ma , fe_dbp -> iܙy ); 581 REC_CLOSE ; 582 } } 588 $__db_pg__cov_t ( v , , gp , fe_dbp , lp , mpf , , da ) 589 ENV * v ; 590 DB_THREAD_INFO * ; 591 __db_pg_da_gs * gp ; 592 DB * fe_dbp ; 593 DB_LSN * lp ; 594 DB_MPOOLFILE * mpf ; 595 db_cs ; 596 da ; 598 DBMETA * ma ; 599 DB_LSN cy_l ; 600 PAGE * g , * evp ; 601 cmp_n , cmp_p , is_ma , t ; 603 ma = NULL ; 604 g = evp = NULL ; 612 is_ma = gp -> ma_pgno = PGNO_BASE_MD ; 614 `REC_FGET ( mpf , , gp -> ma_pgno , & ma , check_ma ); 616 i( gp -> ma_pgno ! PGNO_BASE_MD ) 617 evp = ( PAGE *) ma ; 619 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 620 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 621 `CHECK_LSN ( v , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 627 i( cmp_p =0 && `DB_REDO ( )) { 628 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 633 i( gp -> pgno =gp-> ϡ_pgno ) 634 ma -> ϡ_pgno = gp -> pgno - 1; 635 i( is_ma ) 636 ma -> = gp -> pgno ; 638 `NEXT_PGNO ( evp gp -> pgno ; 639 `LSN ( ma * lp ; 640 } i( cmp_n =0 && `DB_UNDO ( )) { 642 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 643 i( is_ma ) { 644 i( ma -> ϡ_pgno < gp -> pgno ) 645 ma -> ϡ_pgno = gp -> pgno ; 646 ma -> = gp -> xt ; 648 `NEXT_PGNO ( evp gp -> xt ; 649 `LSN ( ma gp -> ma_l ; 652 check_ma : 653 i( t !0 && is_ma ) { 655 t = `__db_pgr ( fe_dbp , gp -> ma_pgno ,et); 656 out ; 665 i( `DB_REDO ( || ( is_ma && ma -> ϡ_pgno < gp -> pgno )) { 666 i(( t = `__memp_fg ( mpf , & gp -> pgno , 667 , NULL , 0, & g )) != 0) { 668 i( t ! DB_PAGE_NOTFOUND ) 669 out ; 670 i( is_ma && 671 `DB_REDO ( && ma -> ϡ_pgno < gp -> pgno ) 672 unc ; 673 de ; 675 } i(( t = `__memp_fg ( mpf , & gp -> pgno , 676 , NULL , DB_MPOOL_CREATE , & g )) != 0) 677 out ; 679 () `__ua_memy (& cy_l , & `LSN ( gp -> hd . da ), ( DB_LSN )); 680 cmp_n = `IS_ZERO_LSN ( `LSN ( g )? 0 : `LOG_COMPARE ( lp , &LSN(pagep)); 681 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 688 i( `IS_ZERO_LSN ( `LSN ( g ))) 689 cmp_p = 0; 691 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & cy_l ); 692 i( `DB_REDO ( ) && 693 ( cmp_p == 0 || 694 ( `IS_ZERO_LSN ( cy_l ) && 695 `LOG_COMPARE (& `LSN ( g ), & gp -> ma_l ) <= 0))) { 701 i( is_ma && ma -> ϡ_pgno < gp -> pgno && 702 gp -> ϡ_pgno <gp-> pgno ) { 703 i(( t = `__memp_ut ( mpf , , 704 g , DB_PRIORITY_VERY_LOW )) != 0) 705 out ; 706 g = NULL ; 707 unc : i(( t = `__memp_run ( mpf , , 708 gp -> pgno , MP_TRUNC_RECOVER )) != 0) 709 out ; 710 } i( gp -> ϡ_pgno =gp-> pgno ) { 712 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 713 `P_INIT ( g , 0, PGNO_INVALID , 714 PGNO_INVALID , PGNO_INVALID, 0, P_INVALID ); 715 `ZERO_LSN ( g -> l ); 717 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 718 `P_INIT ( g , fe_dbp -> pgsize , 719 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 720 g -> l = * lp ; 723 } i( cmp_n =0 && `DB_UNDO ( )) { 725 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 726 `memy ( g , gp -> hd . da ,rgp->hd. size ); 727 i( da ) 728 `memy (( u_t8_t *) g + `HOFFSET (pagep), 729 gp -> da .da,rgp->da. size ); 731 i( g ! NULL && 732 ( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 733 out ; 735 g = NULL ; 736 #ifde HAVE_FTRUNCATE 741 i( = DB_TXN_ABORT && gp -> pgno !gp-> ϡ_pgno ) { 742 db_pgno_t * ; 743 u_t32_t m , pos ; 745 i(( t = `__memp_g_li ( mpf , & m , & )) != 0) 746 out ; 747 i( ! NULL ) { 748 pos = 0; 749 i(! is_ma ) { 750 `__db_li_pos ( gp -> pgno , , m , & pos ); 752 `DB_ASSERT ( v , gp -> pgno = [ pos ]); 753 `DB_ASSERT ( v , 754 gp -> ma_pgno = [ pos - 1]); 757 i( pos < m ) 758 `memmove (& [ pos ], &lp[pos + 1], 759 (( m - pos - 1* (* )); 762 i(( t = 763 `__memp_exnd_li ( mpf , m - 1, & )) != 0) 764 out ; 768 de : 769 i( ma ! NULL && 770 ( t = `__memp_ut ( mpf , , ma , fe_dbp -> iܙy )) != 0) 771 out ; 772 ma = NULL ; 773 t = 0; 775 out : i( g ! NULL ) 776 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 777 i( ma ! NULL ) 778 () `__memp_ut ( mpf , , ma , fe_dbp -> iܙy ); 780 ( t ); 781 } } 791 $__db_pg__cov ( v , db , lp , , fo ) 792 ENV * v ; 793 DBT * db ; 794 DB_LSN * lp ; 795 db_cs ; 796 * fo ; 798 __db_pg__gs * gp ; 799 DB * fe_dbp ; 800 DBC * dbc ; 801 DB_MPOOLFILE * mpf ; 802 DB_THREAD_INFO * ; 803 t ; 805 = (( DB_TXNHEAD *) fo )-> thad_fo ; 806 `REC_PRINT ( __db_pg__t ); 807 `REC_INTRO ( __db_pg__ad , , 0); 809 t = `__db_pg__cov_t ( v , , 810 ( __db_pg_da_gs *) gp , fe_dbp , lp , mpf , , 0); 812 de : * lp = gp -> ev_l ; 813 out : 814 REC_CLOSE ; 815 } } 825 $__db_pg_da_cov ( v , db , lp , , fo ) 826 ENV * v ; 827 DBT * db ; 828 DB_LSN * lp ; 829 db_cs ; 830 * fo ; 832 __db_pg_da_gs * gp ; 833 DB * fe_dbp ; 834 DBC * dbc ; 835 DB_MPOOLFILE * mpf ; 836 DB_THREAD_INFO * ; 837 t ; 839 = (( DB_TXNHEAD *) fo )-> thad_fo ; 840 `REC_PRINT ( __db_pg_da_t ); 841 `REC_INTRO ( __db_pg_da_ad , , 0); 843 t = `__db_pg__cov_t ( v , 844 , gp , fe_dbp , lp , mpf , , 1); 846 de : * lp = gp -> ev_l ; 847 out : 848 REC_CLOSE ; 849 } } 859 $__db_cksum_cov ( v , db , lp , , fo ) 860 ENV * v ; 861 DBT * db ; 862 DB_LSN * lp ; 863 db_cs ; 864 * fo ; 866 __db_cksum_gs * gp ; 867 t ; 869 `COMPQUIET ( fo , NULL ); 870 `COMPQUIET ( lp , NULL ); 871 `COMPQUIET ( , DB_TXN_ABORT ); 873 `REC_PRINT ( __db_cksum_t ); 875 i(( t = `__db_cksum_ad ( v , db -> da , & gp )) != 0) 876 ( t ); 882 i( `F_ISSET ( v , ENV_RECOVER_FATAL )) 883 t = 0; 885 `__db_rx ( v , 887 t = `__v_nic ( v , DB_RUNRECOVERY ); 890 `__os_ ( v , gp ); 891 ( t ); 892 } } 902 $__db_pg__cov ( v , db , lp , , fo ) 903 ENV * v ; 904 DBT * db ; 905 DB_LSN * lp ; 906 db_cs ; 907 * fo ; 909 __db_pg__gs * gp ; 910 DB_THREAD_INFO * ; 911 DB * fe_dbp ; 912 DBC * dbc ; 913 DB_LSN cy_l ; 914 DB_MPOOLFILE * mpf ; 915 PAGE * g ; 916 cmp_n , cmp_p , t , ty ; 918 = (( DB_TXNHEAD *) fo )-> thad_fo ; 919 `REC_PRINT ( __db_pg__t ); 920 `REC_INTRO ( __db_pg__ad , , 0); 922 mpf = fe_dbp ->mpf; 923 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 924 i( `DB_UNDO ( )) { 925 i( t = DB_PAGE_NOTFOUND ) 926 de ; 928 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 929 out ; 938 `DB_ASSERT ( v , fe_dbp -> ty = DB_HASH ); 939 i(( t = `__memp_fg ( mpf , & gp -> pgno , 940 , NULL , DB_MPOOL_CREATE , & g )) != 0) { 941 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 942 out ; 946 () `__ua_memy (& cy_l , & `LSN ( gp -> hd . da ), ( DB_LSN )); 947 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 948 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 949 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & cy_l ); 951 i( cmp_p =0 && `DB_REDO ( )) { 952 i( `TYPE ( g = P_HASH ) 953 ty = P_HASH ; 955 ty = fe_dbp ->ty = DB_RECNO ? P_LRECNO : P_LBTREE ; 956 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 957 `P_INIT ( g , fe_dbp -> pgsize , `PGNO ag), PGNO_INVALID , 958 PGNO_INVALID , `TYPE ( g = P_HASH ? 0 : 1, ty ); 959 g -> l = * lp ; 960 } i( cmp_n =0 && `DB_UNDO ( )) { 962 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 963 `memy ( g , gp -> hd . da ,rgp->hd. size ); 964 i( gp -> da . size > 0) 965 `memy (( u_t8_t *) g + `HOFFSET (pagep), 966 gp -> da .da,rgp->da. size ); 968 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 969 out ; 971 de : * lp = gp -> ev_l ; 972 out : 973 REC_CLOSE ; 974 } } 984 $__db_pg_st_cov ( v , db , lp , , fo ) 985 ENV * v ; 986 DBT * db ; 987 DB_LSN * lp ; 988 db_cs ; 989 * fo ; 991 #ifde HAVE_FTRUNCATE 992 __db_pg_st_gs * gp ; 993 DB_THREAD_INFO * ; 994 DB * fe_dbp ; 995 DBC * dbc ; 996 DBMETA * ma ; 997 DB_MPOOLFILE * mpf ; 998 PAGE * g ; 999 db_pgli_t * pgli , * ; 1000 db_pgno_t pgno , * li ; 1001 u_t32_t m , m ; 1002 t ; 1004 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1005 `REC_PRINT ( __db_pg_st_t ); 1006 `REC_INTRO ( __db_pg_st_ad , , 1); 1008 pgli = ( db_pgli_t * gp -> li . da ; 1009 m = gp -> li . size / ( db_pgli_t ); 1010 i( `DB_REDO ( )) { 1011 pgno = gp -> ϡ_pgno ; 1012 i(( t = `__db_pg_un ( dbc , NULL , 1013 pgli , NULL , & m , & pgno , lp , 1)) != 0) 1014 out ; 1016 i( gp -> ϡ_ ! PGNO_INVALID ) { 1017 i(( t = `__memp_fg ( mpf , 1018 & gp -> ϡ_ , , NULL , 0, & ma )) == 0) { 1019 i( `LOG_COMPARE (& `LSN ( ma ), 1020 & gp -> ϡ_l ) == 0) { 1021 `REC_DIRTY ( mpf , 1022 , dbc -> iܙy , & ma ); 1023 `NEXT_PGNO ( ma PGNO_INVALID ; 1024 `LSN ( ma * lp ; 1026 i(( t = `__memp_ut ( mpf , , 1027 ma , fe_dbp -> iܙy )) != 0) 1028 out ; 1029 ma = NULL ; 1030 } i( t ! DB_PAGE_NOTFOUND ) 1031 out ; 1033 i(( t = `__memp_fg ( mpf , & gp -> ma , , NULL , 1034 0, & ma )) != 0) 1035 out ; 1036 i( `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ) == 0) { 1037 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 1038 i( gp -> ϡ_ = PGNO_INVALID ) { 1039 i( m == 0) 1040 ma -> = PGNO_INVALID ; 1042 ma -> = pgli -> pgno ; 1044 ma -> ϡ_pgno = pgno ; 1045 `LSN ( ma * lp ; 1049 = pgli ;< &pgli[ m ];p++) { 1050 i(( t = `__memp_fg ( mpf , & -> pgno , , 1051 NULL , DB_MPOOL_CREATE , & g )) != 0) 1052 out ; 1053 i( `IS_ZERO_LSN ( `LSN ( g )) || 1054 `LOG_COMPARE (& `LSN ( g ), lp ) == 0) { 1055 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1056 i( =& pgli [ m - 1]) 1057 pgno = PGNO_INVALID ; 1059 pgno = [1].pgno; 1061 `P_INIT ( g , fe_dbp -> pgsize , 1062 -> pgno , PGNO_INVALID ,gno, 0, P_INVALID ); 1063 `LSN ( g -> l ; 1065 i(( t = `__memp_ut ( mpf , 1066 , g , fe_dbp -> iܙy )) != 0) 1067 out ; 1069 i( gp -> ϡ_ ! PGNO_INVALID ) { 1070 i(( t = `__memp_fg ( mpf , & gp -> ϡ_ , 1071 , NULL , DB_MPOOL_EDIT , & ma )) == 0) { 1072 i( `LOG_COMPARE (& `LSN ( ma ), lp ) == 0) { 1073 `REC_DIRTY ( mpf , 1074 , dbc -> iܙy , & g ); 1075 `NEXT_PGNO ( ma pgli -> pgno ; 1076 `LSN ( ma gp -> ϡ_l ; 1078 i(( t = `__memp_ut ( mpf , , 1079 ma , fe_dbp -> iܙy )) != 0) 1080 out ; 1081 } i( t ! DB_PAGE_NOTFOUND ) 1082 out ; 1083 ma = NULL ; 1085 i(( t = `__memp_fg ( mpf , & gp -> ma , 1086 , NULL , DB_MPOOL_EDIT , & ma )) != 0) 1087 out ; 1088 i( `LOG_COMPARE (& `LSN ( ma ), lp ) == 0) { 1089 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 1090 ma -> ϡ_pgno = gp ->last_pgno; 1091 i( gp -> ϡ_ = PGNO_INVALID ) 1092 ma -> = pgli -> pgno ; 1093 `LSN ( ma gp -> ma_l ; 1096 i( = DB_TXN_ABORT ) { 1097 i(( t = `__memp_g_li ( mpf , & m , & li )) != 0) 1098 out ; 1099 i( li ! NULL ) { 1100 `DB_ASSERT ( v , m == 0 || 1101 gp -> ϡ_ = li [ m - 1]); 1102 i(( t = `__memp_exnd_li ( 1103 mpf , m + m , & li )) != 0) 1104 out ; 1105 = pgli ;< &pgli[ m ];p++) 1106 li [ m ++] = -> pgno ; 1110 i(( t = `__memp_ut ( mpf , , ma , fe_dbp -> iܙy )) != 0) 1111 out ; 1113 de : * lp = gp -> ev_l ; 1114 t = 0; 1116 out : REC_CLOSE ; 1122 `COMPQUIET ( v , NULL ); 1123 `COMPQUIET ( db , NULL ); 1124 `COMPQUIET ( lp , NULL ); 1125 `COMPQUIET ( , DB_TXN_ABORT ); 1126 `COMPQUIET ( fo , NULL ); 1127 ( EINVAL ); 1129 } } 1139 $__db_pg_loc_42_cov ( v , db , lp , , fo ) 1140 ENV * v ; 1141 DBT * db ; 1142 DB_LSN * lp ; 1143 db_cs ; 1144 * fo ; 1146 __db_pg_loc_42_gs * gp ; 1147 DB_THREAD_INFO * ; 1148 DB * fe_dbp ; 1149 DBC * dbc ; 1150 DBMETA * ma ; 1151 DB_MPOOLFILE * mpf ; 1152 PAGE * g ; 1153 db_pgno_t pgno ; 1154 cmp_n , cmp_p , d , v , t ; 1156 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1157 ma = NULL ; 1158 g = NULL ; 1159 d = 0; 1160 `REC_PRINT ( __db_pg_loc_42_t ); 1161 `REC_INTRO ( __db_pg_loc_42_ad , , 0); 1169 pgno = PGNO_BASE_MD ; 1170 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 0, & ma )) != 0) { 1172 i( `DB_REDO ( )) { 1173 t = `__db_pgr ( fe_dbp , pgno ,et); 1174 out ; 1176 de ; 1178 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 1179 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 1180 `CHECK_LSN ( v , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 1181 i( cmp_p =0 && `DB_REDO ( )) { 1183 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 1184 `LSN ( ma * lp ; 1185 ma -> = gp -> xt ; 1186 i( gp -> pgno > ma -> ϡ_pgno ) 1187 ma -> ϡ_pgno = gp -> pgno ; 1188 } i( cmp_n =0 && `DB_UNDO ( )) { 1189 no_rlback ; 1200 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 1209 i(( t = `__memp_fg ( mpf , & gp -> pgno , 1210 , NULL , DB_MPOOL_CREATE , & g )) != 0) { 1211 i( `DB_UNDO ( && t = ENOSPC ) 1212 do_un ; 1213 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1214 out ; 1216 d = 1; 1220 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1221 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> ge_l ); 1228 i( `IS_ZERO_LSN ( `LSN ( g )) || 1229 ( `IS_ZERO_LSN ( gp -> ge_l && `IS_INIT_LSN ( `LSN ( g )))) 1230 cmp_p = 0; 1232 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> ge_l ); 1239 i( `DB_REDO ( && cmp_p == 0) { 1241 gp -> y ) { 1242 P_LBTREE : 1243 P_LRECNO : 1244 P_LDUP : 1245 v = LEAFLEVEL ; 1248 v = 0; 1251 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1252 `P_INIT ( g , fe_dbp -> pgsize , 1253 gp -> pgno , PGNO_INVALID , PGNO_INVALID, v ,rgp-> y ); 1255 g -> l = * lp ; 1256 } i( `DB_UNDO ( && ( cmp_n =0 || d )) { 1263 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1264 `P_INIT ( g , fe_dbp -> pgsize , 1265 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 1267 g -> l = gp -> ge_l ; 1270 do_un : 1275 i(( g = NULL || `IS_ZERO_LSN ( `LSN (pagep))) && 1276 `IS_ZERO_LSN ( gp -> ge_l && `DB_UNDO ( )) { 1277 no_rlback : `__db_rx ( v , 1279 t = `__v_nic ( v , EINVAL ); 1282 i( g ! NULL && 1283 ( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1284 out ; 1285 g = NULL ; 1287 i(( t = `__memp_ut ( mpf , , ma , fe_dbp -> iܙy )) != 0) 1288 out ; 1289 ma = NULL ; 1291 de : * lp = gp -> ev_l ; 1292 t = 0; 1294 out : i( g ! NULL ) 1295 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 1296 i( ma ! NULL ) 1297 () `__memp_ut ( mpf , , ma , fe_dbp -> iܙy ); 1298 REC_CLOSE ; 1299 } } 1305 $__db_pg__cov_42_t ( v , , gp , fe_dbp , lp , mpf , , da ) 1306 ENV * v ; 1307 DB_THREAD_INFO * ; 1308 __db_pg_da_42_gs * gp ; 1309 DB * fe_dbp ; 1310 DB_LSN * lp ; 1311 DB_MPOOLFILE * mpf ; 1312 db_cs ; 1313 da ; 1315 DBMETA * ma ; 1316 DB_LSN cy_l ; 1317 PAGE * g , * evp ; 1318 cmp_n , cmp_p , is_ma , t ; 1320 ma = NULL ; 1321 g = NULL ; 1322 evp = NULL ; 1330 is_ma = gp -> ma_pgno = PGNO_BASE_MD ; 1332 `REC_FGET ( mpf , , gp -> ma_pgno , & ma , check_ma ); 1334 i( gp -> ma_pgno ! PGNO_BASE_MD ) 1335 evp = ( PAGE *) ma ; 1337 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 1338 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> ma_l ); 1339 `CHECK_LSN ( v , , cmp_p , & `LSN ( ma ), & gp -> ma_l ); 1345 i( cmp_p =0 && `DB_REDO ( )) { 1347 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 1348 i( evp = NULL ) 1349 ma -> = gp -> pgno ; 1351 `NEXT_PGNO ( evp gp -> pgno ; 1357 i( evp = NULL && ma -> ϡ_pgno < ma-> ) 1358 ma -> ϡ_pgno = ma-> ; 1359 `LSN ( ma * lp ; 1360 } i( cmp_n =0 && `DB_UNDO ( )) { 1362 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & ma ); 1363 i( evp = NULL ) 1364 ma -> = gp -> xt ; 1366 `NEXT_PGNO ( evp gp -> xt ; 1367 `LSN ( ma gp -> ma_l ; 1368 i( evp = NULL && ma -> ϡ_pgno < gp -> pgno ) 1369 ma -> ϡ_pgno = gp -> pgno ; 1372 check_ma : 1373 i( t !0 && is_ma ) { 1375 t = `__db_pgr ( fe_dbp , gp -> ma_pgno ,et); 1376 out ; 1388 i(( t = `__memp_fg ( mpf , & gp -> pgno , 1389 , NULL , DB_MPOOL_CREATE , & g )) != 0) 1390 out ; 1392 () `__ua_memy (& cy_l , & `LSN ( gp -> hd . da ), ( DB_LSN )); 1393 cmp_n = `IS_ZERO_LSN ( `LSN ( g )? 0 : `LOG_COMPARE ( lp , &LSN(pagep)); 1394 cmp_p = `LOG_COMPARE (& `LSN ( g ), & cy_l ); 1396 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & cy_l ); 1397 i( `DB_REDO ( ) && 1398 ( cmp_p == 0 || 1399 ( `IS_ZERO_LSN ( cy_l ) && 1400 `LOG_COMPARE (& `LSN ( g ), & gp -> ma_l ) <= 0))) { 1402 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1403 `P_INIT ( g , fe_dbp -> pgsize , 1404 gp -> pgno , PGNO_INVALID ,rgp-> xt , 0, P_INVALID ); 1405 g -> l = * lp ; 1406 } i( cmp_n =0 && `DB_UNDO ( )) { 1408 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1409 `memy ( g , gp -> hd . da ,rgp->hd. size ); 1410 i( da ) 1411 `memy (( u_t8_t *) g + `HOFFSET (pagep), 1412 gp -> da .da,rgp->da. size ); 1414 i( g ! NULL && 1415 ( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1416 out ; 1418 g = NULL ; 1419 i( ma ! NULL && 1420 ( t = `__memp_ut ( mpf , , ma , fe_dbp -> iܙy )) != 0) 1421 out ; 1422 ma = NULL ; 1424 t = 0; 1426 out : i( g ! NULL ) 1427 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 1428 i( ma ! NULL ) 1429 () `__memp_ut ( mpf , , ma , fe_dbp -> iܙy ); 1431 ( t ); 1432 } } 1442 $__db_pg__42_cov ( v , db , lp , , fo ) 1443 ENV * v ; 1444 DBT * db ; 1445 DB_LSN * lp ; 1446 db_cs ; 1447 * fo ; 1449 __db_pg__42_gs * gp ; 1450 DB * fe_dbp ; 1451 DBC * dbc ; 1452 DB_MPOOLFILE * mpf ; 1453 DB_THREAD_INFO * ; 1454 t ; 1456 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1457 `REC_PRINT ( __db_pg__42_t ); 1458 `REC_INTRO ( __db_pg__42_ad , , 0); 1460 t = `__db_pg__cov_42_t ( v , , 1461 ( __db_pg_da_42_gs *) gp , fe_dbp , lp , mpf , , 0); 1463 de : * lp = gp -> ev_l ; 1464 out : 1465 REC_CLOSE ; 1466 } } 1476 $__db_pg_da_42_cov ( v , db , lp , , fo ) 1477 ENV * v ; 1478 DBT * db ; 1479 DB_LSN * lp ; 1480 db_cs ; 1481 * fo ; 1483 __db_pg_da_42_gs * gp ; 1484 DB * fe_dbp ; 1485 DBC * dbc ; 1486 DB_MPOOLFILE * mpf ; 1487 DB_THREAD_INFO * ; 1488 t ; 1490 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1491 `REC_PRINT ( __db_pg_da_42_t ); 1492 `REC_INTRO ( __db_pg_da_42_ad , , 0); 1494 t = `__db_pg__cov_42_t ( 1495 v , , gp , fe_dbp , lp , mpf , , 1); 1497 de : * lp = gp -> ev_l ; 1498 out : 1499 REC_CLOSE ; 1500 } } 1510 $__db_lk_42_cov ( v , db , lp , , fo ) 1511 ENV * v ; 1512 DBT * db ; 1513 DB_LSN * lp ; 1514 db_cs ; 1515 * fo ; 1517 __db_lk_42_gs * gp ; 1518 DB_THREAD_INFO * ; 1519 DB * fe_dbp ; 1520 DBC * dbc ; 1521 DB_MPOOLFILE * mpf ; 1522 PAGE * g ; 1523 cmp_n , cmp_p , modifd , t ; 1525 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1526 g = NULL ; 1527 `REC_PRINT ( __db_lk_42_t ); 1528 `REC_INTRO ( __db_lk_42_ad , , 0); 1536 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 1537 i( `DB_REDO ( )) { 1538 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 1539 out ; 1541 xt2 ; 1543 i( gp -> code = DB_ADD_PAGE_COMPAT ) 1544 xt1 ; 1546 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l ); 1547 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l ); 1548 i( cmp_p =0 && `DB_REDO ( )) { 1550 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1551 g -> l = * lp ; 1552 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1554 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1555 g -> xt_pgno = gp -> xt ; 1556 g -> ev_pgno = gp -> ev ; 1557 g -> l = gp ->lsn; 1559 xt1 : i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1560 out ; 1561 g = NULL ; 1563 xt2 : i(( t = `__memp_fg ( mpf , & gp -> xt , , NULL , 0, & g )) != 0) { 1564 i( `DB_REDO ( )) { 1565 t = `__db_pgr ( fe_dbp , gp -> xt ,et); 1566 out ; 1568 ev ; 1570 modifd = 0; 1571 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1572 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_xt ); 1573 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l_xt ); 1574 i(( gp -> code = DB_REM_PAGE_COMPAT && cmp_p =0 && `DB_REDO ( )) || 1575 ( gp -> code = DB_ADD_PAGE_COMPAT && cmp_n =0 && `DB_UNDO ( ))) { 1577 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1578 g -> ev_pgno = gp -> ev ; 1579 modifd = 1; 1580 } i(( gp -> code = DB_REM_PAGE_COMPAT && 1581 cmp_n =0 && `DB_UNDO ( )) || 1582 ( gp -> code = DB_ADD_PAGE_COMPAT && cmp_p =0 && `DB_REDO ( ))) { 1584 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1585 g -> ev_pgno = gp -> pgno ; 1586 modifd = 1; 1588 i( modifd ) { 1589 i( `DB_UNDO ( )) 1590 g -> l = gp -> l_xt ; 1592 g -> l = * lp ; 1594 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1595 out ; 1596 g = NULL ; 1597 i( gp -> code = DB_ADD_PAGE_COMPAT ) 1598 de ; 1600 ev : i(( t = `__memp_fg ( mpf , & gp ->ev, , NULL , 0, & g )) != 0) { 1601 i( `DB_REDO ( )) { 1602 t = `__db_pgr ( fe_dbp , gp -> ev ,et); 1603 out ; 1605 de ; 1607 modifd = 0; 1608 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> l_ev ); 1609 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> l_ev ); 1610 i( cmp_p =0 && `DB_REDO ( )) { 1612 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1613 g -> xt_pgno = gp -> xt ; 1614 modifd = 1; 1615 } i( `LOG_COMPARE ( lp , & `LSN ( g )=0 && `DB_UNDO ( )) { 1617 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 1618 g -> xt_pgno = gp -> pgno ; 1619 modifd = 1; 1621 i( modifd ) { 1622 i( `DB_UNDO ( )) 1623 g -> l = gp -> l_ev ; 1625 g -> l = * lp ; 1627 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 1628 out ; 1629 g = NULL ; 1631 de : * lp = gp -> ev_l ; 1632 t = 0; 1634 out : i( g ! NULL ) 1635 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 1636 REC_CLOSE ; 1637 } } @../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 ( dbc , pgno , back , cook ) 29 DBC * dbc ; 30 db_pgno_t pgno ; 31 (* back `__P (( DBC *, PAGE *, *, *)); 32 * cook ; 34 DB_MPOOLFILE * mpf ; 35 PAGE * p ; 36 did_put , t ; 38 mpf = dbc -> dbp ->mpf; 41 did_put = 0; 42 i(( t = `__memp_fg ( mpf , 43 & pgno , dbc -> thad_fo , dbc-> 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 ( dbc , p , cook , & did_put )) == 0 && 53 ! did_put ) 54 t = `__memp_ut ( mpf , 55 dbc -> thad_fo , p , dbc-> iܙy ); 56 } t =0 && pgno ! PGNO_INVALID ); 58 ( t ); 59 } } 73 $__db_aim_back ( dbc , p , cook , pu ) 74 DBC * dbc ; 75 PAGE * p ; 76 * cook ; 77 * pu ; 79 DB * dbp ; 80 t ; 82 `COMPQUIET ( cook , NULL ); 83 dbp = dbc ->dbp; 90 i(( dbp -> ty = DB_BTREE || dbp->ty = DB_RECNO ) && 91 `PGNO ( p =(( BTREE *) dbp -> bt_ )-> bt_ro ) 93 i(( t = `__db_ ( dbc , p )) != 0) 94 ( t ); 95 * pu = 1; 98 } } 109 $__db_un_back ( dbc , p , cook , pu ) 110 DBC * dbc ; 111 PAGE * p ; 112 * cook ; 113 * pu ; 115 DB * dbp ; 116 DBT ddbt , ldbt ; 117 DB_MPOOLFILE * mpf ; 118 db_dx_t dx , n , off , , t ; 119 u_t8_t * hk , ty ; 120 u_t32_t * coup ; 121 t ; 123 t = `NUM_ENT ( p ); 124 dbp = dbc ->dbp; 125 mpf = dbp ->mpf; 126 coup = cook ; 127 * pu = 1; 129 `TYPE ( p )) { 130 P_LBTREE : 132 dx = 0; indx < t ; indx + P_INDX ) { 133 ty = `GET_BKEYDATA ( dbp , p , dx + O_INDX )->type; 134 i(! `B_DISSET ( ty && `B_TYPE y! B_DUPLICATE ) 135 ++* coup ; 138 P_IBTREE : 139 P_IRECNO : 140 P_INVALID : 141 i( dbp -> ty ! DB_HASH && 142 (( BTREE *) dbp -> bt_ )-> bt_ro = `PGNO ( p )) { 143 ty = dbp ->ty = DB_RECNO ? P_LRECNO : P_LBTREE ; 144 ; 147 P_OVERFLOW : 148 i(( t = `__memp_dty ( mpf , 149 & p , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 150 ( t ); 151 i( `DBC_LOGGING ( dbc )) { 152 i(( t = `__db_ovf_log ( dbp , dbc -> txn , 153 & `LSN ( p ), 0,-> pgno , -1, &LSN(p))) != 0) 154 ( t ); 156 `LSN_NOT_LOGGED ( `LSN ( p )); 157 i(-- `OV_REF ( p ) != 0) 158 * pu = 0; 160 P_LRECNO : 161 dx = 0; indx < t ; indx + O_INDX ) { 162 ty = `GET_BKEYDATA ( dbp , p , dx )->type; 163 i(! `B_DISSET ( ty )) 164 ++* coup ; 167 i((( BTREE *) dbp -> bt_ )-> bt_ro = `PGNO ( p )) { 168 ty = P_LRECNO ; 169 ; 172 P_LDUP : 174 dx = 0; indx < t ; indx + O_INDX ) 175 i(! `B_DISSET ( `GET_BKEYDATA ( dbp , p , dx )-> ty )) 176 ++* coup ; 179 P_HASH : 181 dx = 0; indx < t ; indx + P_INDX ) { 182 * `H_PAIRDATA ( dbp , p , dx )) { 183 H_OFFDUP : 185 H_OFFPAGE : 186 H_KEYDATA : 187 ++* coup ; 189 H_DUPLICATE : 190 = `LEN_HDATA ( dbp , p , 0, dx ); 191 hk = `H_PAIRDATA ( dbp , p , dx ); 192 off = 0; of< ; 193 off + n + 2 * ( db_dx_t )) { 194 ++* coup ; 195 `memy (& n , 196 `HKEYDATA_DATA ( hk ) 197 + off , ( db_dx_t )); 201 ( `__db_pgfmt ( dbp -> v , p -> pgno )); 205 i( `PREV_PGNO ( p = PGNO_INVALID ) { 206 ty = P_HASH ; 208 : i(( t = `__memp_dty ( mpf , & p , 209 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 210 ( t ); 211 * pu = 0; 212 i( `DBC_LOGGING ( dbc )) { 213 `memt (& ldbt , 0, (ldbt)); 214 `memt (& ddbt , 0, (ddbt)); 215 ldbt . da = p ; 216 ldbt . size = `P_OVERHEAD ( dbp ); 217 ldbt . size + p -> s * ( db_dx_t ); 218 ddbt . da = ( u_t8_t *) p + `HOFFSET (p); 219 ddbt . size = dbp -> pgsize - `HOFFSET ( p ); 220 i(( t = `__db_pg__log ( dbp , 221 dbc -> txn , & `LSN ( p ), 0, 222 p -> pgno , & ldbt , & ddbt )) != 0) 223 ( t ); 225 `LSN_NOT_LOGGED ( `LSN ( p )); 227 `P_INIT ( p , dbp -> pgsize , `PGNO ), PGNO_INVALID , 228 PGNO_INVALID , ty = P_HASH ? 0 : 1,ype); 232 ( `__db_pgfmt ( dbp -> v , p -> pgno )); 235 i(* pu == 1) { 236 i(( t = `__db_ ( dbc , p )) != 0) 237 ( t ); 239 i(( t = `__memp_ut ( mpf , dbc -> thad_fo , p , 240 dbc -> iܙy )) != 0) 241 ( t ); 242 * pu = 1; 246 } } @../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 *, 22 DB_THREAD_INFO *, DB_TXN *, const *, const *)); 32 $__v_dbmove_ ( dbv , txn , me , subdb , ags ) 33 DB_ENV * dbv ; 34 DB_TXN * txn ; 35 cڡ * me , * subdb ; 36 u_t32_t ags ; 38 DB * dbp ; 39 DB_THREAD_INFO * ; 40 ENV * v ; 41 hd_check , t , t_t , txn_lol ; 43 dbp = NULL ; 44 v = dbv ->env; 45 txn_lol = 0; 47 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->dbremove"); 53 i(( t = `__db_fchk ( v , "DB->move", ags , DB_AUTO_COMMIT )) != 0) 54 ( t ); 56 `ENV_ENTER ( v , ); 59 hd_check = `IS_ENV_REPLICATED ( v ); 60 i( hd_check && ( t = `__v_p_r ( v , 1)) != 0) { 61 hd_check = 0; 62 r ; 69 i( `IS_ENV_AUTO_COMMIT ( v , txn , ags )) { 70 i(( t = `__db_txn_auto_ ( v , , & txn )) != 0) 71 r ; 72 txn_lol = 1; 74 i( txn ! NULL && ! `TXN_ON ( v ) && 75 (! `CDB_LOCKING ( v || ! `F_ISSET ( txn , TXN_CDSGROUP ))) { 76 t = `__db_n_txn_v ( v ); 77 r ; 79 `LF_CLR ( DB_AUTO_COMMIT ); 81 i(( t = `__db__ (& dbp , v , 0)) != 0) 82 r ; 84 t = `__db_move_t ( dbp , , txn , me , subdb , ags ); 86 i( txn_lol ) { 92 `LOCK_INIT ( dbp -> hd_lock ); 93 dbp -> lock = NULL ; 94 } i( txn ! NULL ) { 102 dbp -> lock = NULL ; 105 r : i( txn_lol && ( t_t = 106 `__db_txn_auto_sve ( v , txn , 0, t )) != 0 &&et == 0) 107 t = t_t ; 119 i( txn_lol || txn = NULL ) { 120 i( dbp ! NULL && 121 ( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 122 t = t_t ; 124 i( dbp ! NULL && ( t_t = 125 `__txn_oevt ( v , txn , dbp )!0 && t == 0) 126 t = t_t ; 129 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 130 t = t_t ; 132 `ENV_LEAVE ( v , ); 133 ( t ); 134 } } 144 $__db_move_ ( dbp , me , subdb , ags ) 145 DB * dbp ; 146 cڡ * me , * subdb ; 147 u_t32_t ags ; 149 DB_THREAD_INFO * ; 150 ENV * v ; 151 hd_check , t , t_t ; 153 v = dbp ->env; 165 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 166 ( `__db_mi_ݒ ( v , "DB->remove", 1)); 169 i(( t = `__db_fchk ( v , "DB->move", ags , 0)) != 0) 170 ( t ); 173 i(( t = `__db_check_txn ( dbp , NULL , DB_LOCK_INVALIDID , 0)) != 0) 174 ( t ); 176 `ENV_ENTER ( v , ); 178 hd_check = `IS_ENV_REPLICATED ( v ); 179 i( hd_check && ( t = `__db_p_r ( dbp , 1, 1, 0)) != 0) { 180 hd_check = 0; 181 r ; 185 t = `__db_move ( dbp , , NULL , me , subdb , ags ); 187 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 188 t = t_t ; 190 r : `ENV_LEAVE ( v , ); 191 ( t ); 192 } } 202 $__db_move ( dbp , , txn , me , subdb , ags ) 203 DB * dbp ; 204 DB_THREAD_INFO * ; 205 DB_TXN * txn ; 206 cڡ * me , * subdb ; 207 u_t32_t ags ; 209 t , t_t ; 211 t = `__db_move_t ( dbp , , txn , me , subdb , ags ); 213 i( txn = NULL ) { 214 i(( t_t = `__db_o ( dbp , txn , DB_NOSYNC )!0 && t == 0) 215 t = t_t ; 217 i(( t_t = 218 `__txn_oevt ( dbp -> v , txn , dbp)!0 && t == 0) 219 t = t_t ; 222 ( t ); 223 } } 233 $__db_move_t ( dbp , , txn , me , subdb , ags ) 234 DB * dbp ; 235 DB_THREAD_INFO * ; 236 DB_TXN * txn ; 237 cڡ * me , * subdb ; 238 u_t32_t ags ; 240 ENV * v ; 241 t ; 242 * _me , * tmame ; 244 v = dbp ->env; 245 _me = tmame = NULL ; 247 i( me = NULL && subdb == NULL) { 248 `__db_rx ( v , "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 ( v , 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 ( v , _me , NULL , & tmame )) == 0) 283 () `__os_uƚk ( v , tmame , 0); 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 ( v , 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_ ( v , _me ); 299 i( tmame ! NULL ) 300 `__os_ ( v , tmame ); 302 ( t ); 303 } } 312 $__db_mem_move ( dbp , txn , me ) 313 DB * dbp ; 314 DB_TXN * txn ; 315 cڡ * me ; 317 DBT fid_dbt , me_dbt ; 318 DB_LOCKER * lock ; 319 DB_LSN l ; 320 ENV * v ; 321 t ; 323 v = dbp ->env; 324 lock = NULL ; 326 `DB_ASSERT ( v , 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 ( v )) { 337 i( dbp -> lock = NULL && 338 ( t = `__lock_id ( v , NULL , & dbp -> lock )) != 0) 339 ( t ); 340 lock = txn = NULL ? dbp ->locker :xn->locker; 350 i(( t = 351 `__f_lock_hd ( v , dbp , lock , DB_LOCK_WRITE , NULL , 0)) != 0) 352 ( t ); 354 i( `LOGGING_ON ( v )) { 355 i( txn ! NULL && ( t = 356 `__txn_mevt ( v , 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 v , txn , & l , 0, & me_dbt , & fid_dbt )) != 0) 363 ( t ); 366 (! `IS_REAL_TXN ( txn ) ? 367 `__memp_me ( v , dbp -> feid , NULL , me , NULL, 1) : 0); 368 } } 375 $__db_subdb_move ( dbp , , txn , me , subdb ) 376 DB * dbp ; 377 DB_THREAD_INFO * ; 378 DB_TXN * txn ; 379 cڡ * me , * subdb ; 381 DB * mdbp , * sdbp ; 382 t , t_t ; 384 mdbp = sdbp = NULL ; 387 i(( t = `__db__ (& sdbp , dbp -> v , 0)) != 0) 388 r ; 389 i(( t = `__db_ݒ ( sdbp , , 390 txn , me , subdb , DB_UNKNOWN , DB_WRITEOPEN , 0, PGNO_BASE_MD )) != 0) 391 r ; 393 `DB_TEST_RECOVERY ( sdbp , DB_TEST_PREDESTROY , t , me ); 396 sdbp -> ty ) { 397 DB_BTREE : 398 DB_RECNO : 399 i(( t = `__bam_aim ( sdbp , , txn )) != 0) 400 r ; 402 DB_HASH : 403 i(( t = `__ham_aim ( sdbp , , txn )) != 0) 404 r ; 406 DB_QUEUE : 407 DB_UNKNOWN : 409 t = `__db_unknown_ty ( 410 sdbp -> v , "__db_subdb_move", sdbp-> ty ); 411 r ; 418 i(( t = `__db_ma_ݒ ( sdbp , , txn , me , 0, 0, & mdbp )) != 0) 419 r ; 421 i(( t = `__db_ma_upde ( mdbp , 422 sdbp , , txn , subdb , sdbp-> ty , MU_REMOVE , NULL , 0)) != 0) 423 r ; 425 `DB_TEST_RECOVERY ( sdbp , DB_TEST_POSTDESTROY , t , me ); 427 DB_TEST_RECOVERY_LABEL 428 r : 430 i( txn = NULL ) { 431 i(( t_t = `__db_o ( sdbp , txn , 0)!0 && t == 0) 432 t = t_t ; 434 i( mdbp ! NULL && 435 ( t_t = `__db_o ( mdbp , txn , DB_NOSYNC )!0 && t == 0) 436 t = t_t ; 438 i(( t_t = 439 `__txn_oevt ( sdbp -> v , txn , sdbp)!0 && t == 0) 440 t = t_t ; 441 i( mdbp ! NULL && ( t_t = 442 `__txn_oevt ( mdbp -> v , txn , mdbp)!0 && t == 0) 443 t = t_t ; 446 ( t ); 447 } } 450 $__db_dbtxn_move ( dbp , txn , me , subdb ) 451 DB * dbp ; 452 DB_TXN * txn ; 453 cڡ * me , * subdb ; 455 ENV * v ; 456 t ; 457 * tmame ; 459 v = dbp ->env; 460 tmame = NULL ; 470 i(( t = `__db_backup_me ( v , 471 `F_ISSET ( dbp , DB_AM_INMEM ? subdb : me , txn , & tmame )) != 0) 472 ( t ); 474 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREDESTROY , t , me ); 476 i(( t = `__db_me_t ( dbp , 477 txn -> thad_fo ,xn, me , subdb , tmame )) != 0) 478 r ; 483 i( dbp -> db_am_move ! NULL && 484 ( t = dbp -> `db_am_move (dbp, txn , tmame , NULL )) != 0) 485 r ; 487 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 488 `__db_mem_move ( dbp , txn , tmame ) : 489 `__f_move ( v , txn , dbp -> feid , tmame , DB_APP_DATA , 490 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0); 492 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , me ); 494 r : 495 DB_TEST_RECOVERY_LABEL 496 i( tmame ! NULL ) 497 `__os_ ( v , tmame ); 499 ( t ); 500 } } @../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_me __P (( DB *, DB_THREAD_INFO *, 21 DB_TXN *, const *, const *, const *)); 22 __db_subdb_me __P (( DB *, DB_THREAD_INFO *, 23 DB_TXN *, const *, const *, const *)); 33 $__v_dbme_ ( dbv , txn , me , subdb , wme , ags ) 34 DB_ENV * dbv ; 35 DB_TXN * txn ; 36 cڡ * me , * subdb , * wme ; 37 u_t32_t ags ; 39 DB * dbp ; 40 DB_THREAD_INFO * ; 41 ENV * v ; 42 hd_check , t , t_t , txn_lol ; 44 v = dbv ->env; 45 dbp = NULL ; 46 txn_lol = 0; 48 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->dbrename"); 54 i(( t = `__db_fchk ( v , "DB->me", ags , DB_AUTO_COMMIT )) != 0) 55 ( t ); 57 `ENV_ENTER ( v , ); 60 hd_check = `IS_ENV_REPLICATED ( v ); 61 i( hd_check && ( t = `__v_p_r ( v , 1)) != 0) { 62 hd_check = 0; 63 r ; 70 i( `IS_ENV_AUTO_COMMIT ( v , txn , ags )) { 71 i(( t = `__db_txn_auto_ ( v , , & txn )) != 0) 72 r ; 73 txn_lol = 1; 75 i( txn ! NULL && ! `TXN_ON ( v ) && 76 (! `CDB_LOCKING ( v || ! `F_ISSET ( txn , TXN_CDSGROUP ))) { 77 t = `__db_n_txn_v ( v ); 78 r ; 81 `LF_CLR ( DB_AUTO_COMMIT ); 83 i(( t = `__db__ (& dbp , v , 0)) != 0) 84 r ; 86 t = `__db_me_t ( dbp , , txn , me , subdb , wme ); 88 i( txn_lol ) { 94 `LOCK_INIT ( dbp -> hd_lock ); 95 dbp -> lock = NULL ; 96 } i( txn ! NULL ) { 104 dbp -> lock = NULL ; 107 r : i( txn_lol && ( t_t = 108 `__db_txn_auto_sve ( v , txn , 0, t )) != 0 &&et == 0) 109 t = t_t ; 120 i( txn_lol || txn = NULL ) { 121 i( dbp ! NULL && 122 ( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 123 t = t_t ; 125 i( dbp ! NULL && ( t_t = 126 `__txn_oevt ( v , txn , dbp )!0 && t == 0) 127 t = t_t ; 130 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 131 t = t_t ; 133 `ENV_LEAVE ( v , ); 134 ( t ); 135 } } 145 $__db_me_ ( dbp , me , subdb , wme , ags ) 146 DB * dbp ; 147 cڡ * me , * subdb , * wme ; 148 u_t32_t ags ; 150 DB_THREAD_INFO * ; 151 ENV * v ; 152 hd_check , t , t_t ; 154 v = dbp ->env; 155 hd_check = 0; 167 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 168 ( `__db_mi_ݒ ( v , "DB->rename", 1)); 171 i(( t = `__db_fchk ( v , "DB->me", ags , 0)) != 0) 172 ( t ); 175 i(( t = `__db_check_txn ( dbp , NULL , DB_LOCK_INVALIDID , 0)) != 0) 176 ( t ); 178 `ENV_ENTER ( v , ); 180 hd_check = `IS_ENV_REPLICATED ( v ); 181 i( hd_check && ( t = `__db_p_r ( dbp , 1, 1, 0)) != 0) { 182 hd_check = 0; 183 r ; 187 t = `__db_me ( dbp , , NULL , me , subdb , wme ); 189 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 190 t = t_t ; 191 r : `ENV_LEAVE ( v , ); 192 ( t ); 193 } } 201 $__db_me ( dbp , , txn , me , subdb , wme ) 202 DB * dbp ; 203 DB_THREAD_INFO * ; 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 -> v , 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_THREAD_INFO * ; 235 DB_TXN * txn ; 236 cڡ * me , * subdb , * wme ; 238 ENV * v ; 239 t ; 240 * d , * _me ; 242 v = dbp ->env; 243 _me = NULL ; 245 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREDESTROY , t , me ); 247 i( me = NULL && subdb == NULL) { 248 `__db_rx ( v , "Rename onemporary files invalid"); 249 t = EINVAL ; 250 r ; 253 i( me = NULL ) 254 `MAKE_INMEM ( dbp ); 255 i( subdb ! NULL ) { 256 t = `__db_subdb_me ( dbp , , txn , me , subdb , wme ); 257 r ; 265 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 266 d = (*) subdb ; 267 _me = (*) subdb ; 269 i(( t = `__db_ame ( v , 270 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 271 r ; 272 d = (*) me ; 275 i(( t = `__f_move_tup ( dbp , txn , _me , 0)) != 0) 276 r ; 278 i( dbp -> db_am_me ! NULL && 279 ( t = dbp -> `db_am_me (dbp, txn , me , subdb , wme )) != 0) 280 r ; 290 i( `IS_REAL_TXN ( txn )) { 291 i(( t = `__f_dummy ( dbp , txn , d , wme , 0)) != 0) 292 r ; 294 i(( t = `__f_dbme ( dbp , d , wme )) != 0) 295 r ; 302 `DB_ASSERT ( v , dbp -> log_fame = NULL || 303 dbp -> log_fame -> id = DB_LOGFILEID_INVALID ); 305 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , wme ); 307 DB_TEST_RECOVERY_LABEL 308 r : i(! `F_ISSET ( dbp , DB_AM_INMEM && _me ! NULL ) 309 `__os_ ( v , _me ); 311 ( t ); 312 } } 319 $__db_subdb_me ( dbp , , txn , me , subdb , wme ) 320 DB * dbp ; 321 DB_THREAD_INFO * ; 322 DB_TXN * txn ; 323 cڡ * me , * subdb , * wme ; 325 DB * mdbp ; 326 ENV * v ; 327 PAGE * ma ; 328 t , t_t ; 330 mdbp = NULL ; 331 ma = NULL ; 332 v = dbp ->env; 338 `F_SET ( dbp , DB_AM_SUBDB ); 346 i(( t = `__db_ma_ݒ ( dbp , , txn , me , 0, 0, & mdbp )) != 0) 347 r ; 349 i(( t = `__db_ma_upde ( mdbp , dbp , , txn , subdb , dbp-> ty , 350 MU_OPEN , NULL , 0)) != 0) 351 r ; 353 i(( t = `__memp_fg ( mdbp -> mpf , & dbp -> ma_pgno , 354 , txn , 0, & ma )) != 0) 355 r ; 356 `memy ( dbp -> feid , (( DBMETA *) ma )-> uid , DB_FILE_ID_LEN ); 357 i(( t = `__f_lock_hd ( v , 358 dbp , mdbp -> lock , DB_LOCK_WRITE , NULL , `NOWAIT_FLAG ( txn ))) != 0) 359 r ; 361 t = `__memp_ut ( mdbp -> mpf , , ma , dbp -> iܙy ); 362 ma = NULL ; 363 i( t != 0) 364 r ; 366 i(( t = `__db_ma_upde ( mdbp , dbp , , txn , 367 subdb , dbp -> ty , MU_RENAME , wme , 0)) != 0) 368 r ; 370 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , me ); 372 DB_TEST_RECOVERY_LABEL 373 r : 374 i( ma ! NULL && ( t_t = 375 `__memp_ut ( mdbp -> mpf , , ma , dbp -> iܙy )!0 && t == 0) 376 t = t_t ; 378 i( txn = NULL ) { 379 i( mdbp ! NULL && 380 ( t_t = `__db_o ( mdbp , txn , DB_NOSYNC )!0 && t == 0) 381 t = t_t ; 383 i( mdbp ! NULL && ( t_t = 384 `__txn_oevt ( v , txn , mdbp )!0 && t == 0) 385 t = t_t ; 388 ( t ); 389 } } @../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_THREAD_INFO * ; 26 DB_TXN * txn ; 27 PAGE * h ; 28 u_t32_t dx ; 29 DBT * dbt ; 30 ** memp ; 31 u_t32_t * memsize ; 33 BKEYDATA * bk ; 34 BOVERFLOW * bo ; 35 HOFFPAGE ho ; 36 u_t32_t n ; 37 u_t8_t * hk ; 38 * da ; 40 `TYPE ( h )) { 41 P_HASH_UNSORTED : 42 P_HASH : 43 hk = `P_ENTRY ( dbp , h , dx ); 44 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) { 45 `memy (& ho , hk , ( HOFFPAGE )); 46 ( `__db_goff ( dbp , , txn , dbt , 47 ho . , ho. pgno , memp , memsize )); 49 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , dx ); 50 da = `HKEYDATA_DATA ( hk ); 52 P_LBTREE : 53 P_LDUP : 54 P_LRECNO : 55 bk = `GET_BKEYDATA ( dbp , h , dx ); 56 i( `B_TYPE ( bk -> ty = B_OVERFLOW ) { 57 bo = ( BOVERFLOW *) bk ; 58 ( `__db_goff ( dbp , , txn , dbt , 59 bo -> , bo-> pgno , memp , memsize )); 61 n = bk ->len; 62 da = bk ->data; 65 ( `__db_pgfmt ( dbp -> v , h -> pgno )); 68 ( `__db_tcy ( dbp -> v , dbt , da , n , memp , memsize )); 69 } } 79 $__db_tcy ( v , dbt , da , n , memp , memsize ) 80 ENV * v ; 81 DBT * dbt ; 82 * da ; 83 u_t32_t n ; 84 ** memp ; 85 u_t32_t * memsize ; 87 t ; 89 t = 0; 92 i( `F_ISSET ( dbt , DB_DBT_PARTIAL )) { 93 da = ( u_t8_t *)d+ dbt -> doff ; 94 i( n > dbt -> doff ) { 95 n - dbt -> doff ; 96 i( n > dbt -> dn ) 97 n = dbt -> dn ; 99 n = 0; 117 i( `F_ISSET ( dbt , DB_DBT_USERCOPY )) { 118 dbt -> size = n ; 119 ( n =0 ? 0 : v -> `dbt_urcy ( dbt , 0, da , 120 n , DB_USERCOPY_SETDATA )); 122 } i( `F_ISSET ( dbt , DB_DBT_MALLOC )) 123 t = `__os_umloc ( v , n , & dbt -> da ); 124 i( `F_ISSET ( dbt , DB_DBT_REALLOC )) { 125 i( dbt -> da = NULL || dbt-> size =0 || dbt->siz< n ) 126 t = `__os_uloc ( v , n , & dbt -> da ); 127 } i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 128 i( n !0 && ( dbt -> da = NULL || dbt-> un <en)) 129 t = DB_BUFFER_SMALL ; 130 } i( memp = NULL || memsize == NULL) 131 t = EINVAL ; 133 i( n !0 && (* memsize == 0 || *memsize <en)) { 134 i(( t = `__os_loc ( v , n , memp )) == 0) 135 * memsize = n ; 137 * memsize = 0; 139 i( t == 0) 140 dbt -> da = * memp ; 143 i( t =0 && n != 0) 144 `memy ( dbt -> da , da, n ); 152 dbt -> size = n ; 154 ( t ); 155 } } @../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 (( ENV *, 18 DB_THREAD_INFO *, const *, )); 27 $__v_feid_t_ ( dbv , me , ags ) 28 DB_ENV * dbv ; 29 cڡ * me ; 30 u_t32_t ags ; 32 DB_THREAD_INFO * ; 33 ENV * v ; 34 t ; 36 v = dbv ->env; 38 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->fileid_reset"); 45 i( ags !0 && fg! DB_ENCRYPT ) 46 ( `__db_ ( v , "DB_ENV->fileid_reset", 0)); 48 `ENV_ENTER ( v , ); 49 `REPLICATION_WRAP ( v , 50 ( `__v_feid_t ( v , , me , `LF_ISSET ( DB_ENCRYPT ) ? 1 : 0)), 51 1, t ); 52 `ENV_LEAVE ( v , ); 53 ( t ); 54 } } 61 $__v_feid_t ( v , , me , yed ) 62 ENV * v ; 63 DB_THREAD_INFO * ; 64 cڡ * me ; 65 yed ; 67 DB * dbp ; 68 DBC * db ; 69 DBT key , da ; 70 DB_FH * fhp ; 71 DB_MPOOLFILE * mpf ; 72 DB_PGINFO cook ; 73 db_pgno_t pgno ; 74 t_t , t ; 75 size_t n ; 76 * _me ; 77 u_t8_t feid [ DB_FILE_ID_LEN ], mbuf [ DBMETASIZE ]; 78 * g ; 80 dbp = NULL ; 81 db = NULL ; 82 fhp = NULL ; 83 _me = NULL ; 86 i(( t = 87 `__db_ame ( v , DB_APP_DATA , me , 0, NULL , & _me )) != 0) 88 ( t ); 91 i(( t = `__os_feid ( v , _me , 1, feid )) != 0) 92 r ; 100 i(( t = `__os_ݒ ( v , _me , 0, 0, 0, & fhp )) != 0) { 101 `__db_r ( v , t , "%s", _me ); 102 r ; 104 i(( t = `__os_ad ( v , fhp , mbuf , (mbuf), & n )) != 0) 105 r ; 107 i( n !( mbuf )) { 108 t = EINVAL ; 109 `__db_rx ( v , 110 "%s: uxed fty ofm", _me ); 111 r ; 117 i(( t = `__db__ (& dbp , v , 0)) != 0) 118 r ; 121 i( yed && ( t = `__db_t_ags ( dbp , DB_ENCRYPT )) != 0) 122 r ; 124 i(( t = `__db_ma_tup ( v , 125 dbp , _me , ( DBMETA *) mbuf , 0, DB_CHK_META )) != 0) 126 r ; 127 `memy ((( DBMETA *) mbuf )-> uid , feid , DB_FILE_ID_LEN ); 128 cook . db_gesize = ( mbuf ); 129 cook . ags = dbp ->flags; 130 cook . ty = dbp ->type; 131 key . da = & cook ; 133 i(( t = `__db_pgout ( v -> dbv , 0, mbuf , & key )) != 0) 134 r ; 135 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 136 r ; 137 i(( t = `__os_wre ( v , fhp , mbuf , (mbuf), & n )) != 0) 138 r ; 139 i(( t = `__os_fsync ( v , fhp )) != 0) 140 r ; 157 i(( t = `__db_ݒ ( dbp , , NULL , 158 me , NULL , DB_UNKNOWN , DB_RDWRMASTER , 0, PGNO_BASE_MD )) != 0) 159 r ; 167 i(! `F_ISSET ( dbp , DB_AM_SUBDB )) 168 r ; 170 mpf = dbp ->mpf; 171 `memt (& key , 0, (key)); 172 `memt (& da , 0, (data)); 173 i(( t = `__db_curs ( dbp , , NULL , & db , 0)) != 0) 174 r ; 175 ( t = `__dbc_g ( db , & key , & da , DB_NEXT )) == 0) { 182 `memy (& pgno , da .da, ( db_pgno_t )); 183 `DB_NTOHL_SWAP ( v , & pgno ); 184 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 185 DB_MPOOL_DIRTY , & g )) != 0) 186 r ; 187 `memy ((( DBMETA *) g )-> uid , feid , DB_FILE_ID_LEN ); 188 i(( t = `__memp_ut ( mpf , , g , db -> iܙy )) != 0) 189 r ; 191 i( t = DB_NOTFOUND ) 192 t = 0; 194 r : i( db ! NULL && ( t_t = `__dbc_o (db)!0 && t == 0) 195 t = t_t ; 196 i( dbp ! NULL && ( t_t = `__db_o (dbp, NULL, 0)!0 && t == 0) 197 t = t_t ; 198 i( fhp ! NULL && 199 ( t_t = `__os_ohd ( v , fhp )!0 && t == 0) 200 t = t_t ; 201 i( _me ! NULL ) 202 `__os_ ( v , _me ); 204 ( t ); 205 } } @../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 (( ENV *, DB_THREAD_INFO *, 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 ENV * v ; 32 t ; 34 v = dbv ->env; 36 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->lsn_reset"); 43 i( ags !0 && fg! DB_ENCRYPT ) 44 ( `__db_ ( v , "DB_ENV->lsn_reset", 0)); 46 `ENV_ENTER ( v , ); 47 `REPLICATION_WRAP ( v , 48 ( `__v_l_t ( v , , me , `LF_ISSET ( DB_ENCRYPT ) ? 1 : 0)), 49 1, t ); 50 `ENV_LEAVE ( v , ); 51 ( t ); 52 } } 59 $__v_l_t ( v , , me , yed ) 60 ENV * v ; 61 DB_THREAD_INFO * ; 62 cڡ * me ; 63 yed ; 65 DB * dbp ; 66 DB_MPOOLFILE * mpf ; 67 PAGE * g ; 68 db_pgno_t pgno ; 69 t_t , t ; 72 i(( t = `__db__ (& dbp , v , 0)) != 0) 73 ( t ); 76 i( yed && ( t = `__db_t_ags ( dbp , DB_ENCRYPT )) != 0) 77 r ; 86 i(( t = `__db_ݒ ( dbp , , NULL , 87 me , NULL , DB_UNKNOWN , DB_RDWRMASTER , 0, PGNO_BASE_MD )) != 0) { 88 `__db_r ( v , t , "%s", me ); 89 r ; 93 mpf = dbp ->mpf; 94 pgno = 0; 95 ( t = `__memp_fg ( mpf , 96 & pgno , , NULL , DB_MPOOL_DIRTY , & g )) == 0; 97 ++ pgno ) { 98 `LSN_NOT_LOGGED ( g -> l ); 99 i(( t = `__memp_ut ( mpf , 100 , g , DB_PRIORITY_UNCHANGED )) != 0) 101 r ; 104 i( t = DB_PAGE_NOTFOUND ) 105 t = 0; 107 r : i(( t_t = `__db_o ( dbp , NULL , 0)!0 && t == 0) 108 t = t_t ; 109 ( t ); 110 } } @../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 *, DB_THREAD_INFO *, u_t32_t )); 25 __db_ __P (( DB *, DB_THREAD_INFO *, DB_TXN *, *, u_t32_t )); 26 __db__g __P (( DB *, u_t32_t )); 35 $__db__ ( dbp , txn , p , ags ) 36 DB * dbp ; 37 DB_TXN * txn ; 38 * p ; 39 u_t32_t ags ; 41 DB_THREAD_INFO * ; 42 ENV * v ; 43 hd_check , t , t_t ; 45 v = dbp ->env; 47 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->stat"); 49 i(( t = `__db__g ( dbp , ags )) != 0) 50 ( t ); 52 `ENV_ENTER ( v , ); 55 hd_check = `IS_ENV_REPLICATED ( v ); 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 ( v )!0 && t == 0) 65 t = t_t ; 67 r : `ENV_LEAVE ( v , ); 68 ( t ); 69 } } 77 $__db_ ( dbp , , txn , p , ags ) 78 DB * dbp ; 79 DB_THREAD_INFO * ; 80 DB_TXN * txn ; 81 * p ; 82 u_t32_t ags ; 84 DBC * dbc ; 85 ENV * v ; 86 t , t_t ; 88 v = dbp ->env; 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 ( v , "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 ENV * v ; 132 v = dbp ->env; 135 `LF_CLR ( DB_READ_COMMITTED | DB_READ_UNCOMMITTED ); 136 ags ) { 138 DB_FAST_STAT : 141 ( `__db_ ( v , "DB->stat", 0)); 145 } } 154 $__db__t_ ( dbp , ags ) 155 DB * dbp ; 156 u_t32_t ags ; 158 DB_THREAD_INFO * ; 159 ENV * v ; 160 hd_check , t , t_t ; 162 v = dbp ->env; 164 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "DB->stat_print"); 170 i(( t = `__db_fchk ( v , 171 "DB->_t", ags , DB_FAST_STAT | DB_STAT_ALL )) != 0) 172 ( t ); 174 `ENV_ENTER ( v , ); 177 hd_check = `IS_ENV_REPLICATED ( v ); 178 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 179 hd_check = 0; 180 r ; 183 t = `__db__t ( dbp , , ags ); 186 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 187 t = t_t ; 189 r : `ENV_LEAVE ( v , ); 190 ( t ); 191 } } 200 $__db__t ( dbp , , ags ) 201 DB * dbp ; 202 DB_THREAD_INFO * ; 203 u_t32_t ags ; 205 time_t now ; 206 t ; 207 time_buf [ CTIME_BUFLEN ]; 209 () `time (& now ); 210 `__db_msg ( dbp -> v , "%.24s\tLotime", `__os_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 DB_THREAD_INFO * ; 229 u_t32_t ags ; 231 DBC * dbc ; 232 ENV * v ; 233 t , t_t ; 235 v = dbp ->env; 238 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 239 ( t ); 241 `DEBUG_LWRITE ( dbc , NULL , "DB->stat_print", NULL, NULL, 0); 243 dbp -> ty ) { 244 DB_BTREE : 245 DB_RECNO : 246 t = `__bam__t ( dbc , ags ); 248 DB_HASH : 249 t = `__ham__t ( dbc , ags ); 251 DB_QUEUE : 252 t = `__qam__t ( dbc , ags ); 254 DB_UNKNOWN : 256 t = ( `__db_unknown_ty ( v , "DB->_t", dbp -> ty )); 260 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 261 t = t_t ; 263 ( t ); 264 } } 271 $__db_t_l ( dbp , ags ) 272 DB * dbp ; 273 u_t32_t ags ; 275 cڡ FN [] = { 276 { DB_AM_CHKSUM , "DB_AM_CHKSUM" }, 277 { DB_AM_COMPENSATE , "DB_AM_COMPENSATE" }, 278 { DB_AM_CREATED , "DB_AM_CREATED" }, 279 { DB_AM_CREATED_MSTR , "DB_AM_CREATED_MSTR" }, 280 { DB_AM_DBM_ERROR , "DB_AM_DBM_ERROR" }, 281 { DB_AM_DELIMITER , "DB_AM_DELIMITER" }, 282 { DB_AM_DISCARD , "DB_AM_DISCARD" }, 283 { DB_AM_DUP , "DB_AM_DUP" }, 284 { DB_AM_DUPSORT , "DB_AM_DUPSORT" }, 285 { DB_AM_ENCRYPT , "DB_AM_ENCRYPT" }, 286 { DB_AM_FIXEDLEN , "DB_AM_FIXEDLEN" }, 287 { DB_AM_INMEM , "DB_AM_INMEM" }, 288 { DB_AM_IN_RENAME , "DB_AM_IN_RENAME" }, 289 { DB_AM_NOT_DURABLE , "DB_AM_NOT_DURABLE" }, 290 { DB_AM_OPEN_CALLED , "DB_AM_OPEN_CALLED" }, 291 { DB_AM_PAD , "DB_AM_PAD" }, 292 { DB_AM_PGDEF , "DB_AM_PGDEF" }, 293 { DB_AM_RDONLY , "DB_AM_RDONLY" }, 294 { DB_AM_READ_UNCOMMITTED , "DB_AM_READ_UNCOMMITTED" }, 295 { DB_AM_RECNUM , "DB_AM_RECNUM" }, 296 { DB_AM_RECOVER , "DB_AM_RECOVER" }, 297 { DB_AM_RENUMBER , "DB_AM_RENUMBER" }, 298 { DB_AM_REVSPLITOFF , "DB_AM_REVSPLITOFF" }, 299 { DB_AM_SECONDARY , "DB_AM_SECONDARY" }, 300 { DB_AM_SNAPSHOT , "DB_AM_SNAPSHOT" }, 301 { DB_AM_SUBDB , "DB_AM_SUBDB" }, 302 { DB_AM_SWAP , "DB_AM_SWAP" }, 303 { DB_AM_TXN , "DB_AM_TXN" }, 304 { DB_AM_VERIFYING , "DB_AM_VERIFYING" }, 305 { 0, NULL } 307 ENV * v ; 308 time_buf [ CTIME_BUFLEN ]; 310 v = dbp ->env; 312 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 313 `__db_msg ( v , "DB handle information:"); 314 `STAT_ULONG ("Pagsize", dbp -> pgsize ); 315 `STAT_ISSET ("Adeo", dbp -> db_nd_o ); 316 `STAT_ISSET ("Fdback", dbp -> db_edback ); 317 `STAT_ISSET ("Ducom", dbp -> dup_com ); 318 `STAT_ISSET ("Arive", dbp -> p_ive ); 319 `STAT_ISSET ("DbEnv", dbp -> v ); 320 `STAT_STRING ("Ty", `__db_dbty_to_rg ( dbp -> ty )); 322 `__mux_t_debug_sg ( v , "Thad mux", dbp -> mux , ags ); 324 `STAT_STRING ("Fe", dbp -> ame ); 325 `STAT_STRING ("Daba", dbp -> dme ); 326 `STAT_HEX ("Oags", dbp -> ݒ_ags ); 328 `__db_t_feid ( v , dbp -> feid , "\tFile ID"); 330 `STAT_ULONG ("Curs܇dju ID", dbp -> adj_feid ); 331 `STAT_ULONG ("Mpgno", dbp -> ma_pgno ); 332 i( dbp -> lock ! NULL ) 333 `STAT_ULONG ("Lock ID", dbp -> lock -> id ); 334 i( dbp -> cur_lock ! NULL ) 335 `STAT_ULONG ("Hdˆock", dbp -> cur_lock -> id ); 336 i( dbp -> assoc_lock ! NULL ) 337 `STAT_ULONG ("Assocock", dbp -> assoc_lock -> id ); 338 `STAT_ULONG ("RPCemِID", dbp -> _id ); 340 `__db_msg ( v , 342 dbp -> timeamp =0 ? "0" : `__os_ime (&dbp->timeamp, time_buf )); 344 `STAT_ISSET ("Secdy clback", dbp -> s_back ); 345 `STAT_ISSET ("Primy hd", dbp -> s_imy ); 347 `STAT_ISSET ("", dbp -> i_ ); 348 `STAT_ISSET ("B/Reؚ", dbp -> bt_ ); 349 `STAT_ISSET ("Hash il", dbp -> h_ ); 350 `STAT_ISSET ("Queu", dbp -> q_ ); 351 `STAT_ISSET ("XA il", dbp -> xa_ ); 353 `__db_ags ( v , NULL , dbp -> ags , , NULL, "\tFlags"); 355 i( dbp -> log_fame = NULL ) 356 `STAT_ISSET ("Fmg infmi", dbp -> log_fame ); 358 `__dbg_t_ame ( v , dbp -> log_fame ); 360 () `__db_t_curs ( dbp ); 363 } } 370 $__db_t_curs ( dbp ) 371 DB * dbp ; 373 DBC * dbc ; 374 ENV * v ; 375 t , t_t ; 377 v = dbp ->env; 379 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 380 `__db_msg ( v , "DB handle cursors:"); 382 t = 0; 383 `MUTEX_LOCK ( dbp -> v , dbp-> mux ); 384 `__db_msg ( v , "Active queue:"); 385 `TAILQ_FOREACH ( dbc , & dbp -> aive_queue , lks ) 386 i(( t_t = `__db_t_cem ( dbc )!0 && t == 0) 387 t = t_t ; 388 `__db_msg ( v , "Join queue:"); 389 `TAILQ_FOREACH ( dbc , & dbp -> jo_queue , lks ) 390 i(( t_t = `__db_t_cem ( dbc )!0 && t == 0) 391 t = t_t ; 392 `__db_msg ( v , "Free queue:"); 393 `TAILQ_FOREACH ( dbc , & dbp -> _queue , lks ) 394 i(( t_t = `__db_t_cem ( dbc )!0 && t == 0) 395 t = t_t ; 396 `MUTEX_UNLOCK ( dbp -> v , dbp-> mux ); 398 ( t ); 399 } } 402 $__db_t_cem ( dbc ) 403 DBC * dbc ; 405 cڡ FN [] = { 406 { DBC_ACTIVE , "DBC_ACTIVE" }, 407 { DBC_DONTLOCK , "DBC_DONTLOCK" }, 408 { DBC_MULTIPLE , "DBC_MULTIPLE" }, 409 { DBC_MULTIPLE_KEY , "DBC_MULTIPLE_KEY" }, 410 { DBC_OPD , "DBC_OPD" }, 411 { DBC_OWN_LID , "DBC_OWN_LID" }, 412 { DBC_READ_COMMITTED , "DBC_READ_COMMITTED" }, 413 { DBC_READ_UNCOMMITTED , "DBC_READ_UNCOMMITTED" }, 414 { DBC_RECOVER , "DBC_RECOVER" }, 415 { DBC_RMW , "DBC_RMW" }, 416 { DBC_TRANSIENT , "DBC_TRANSIENT" }, 417 { DBC_WRITECURSOR , "DBC_WRITECURSOR" }, 418 { DBC_WRITER , "DBC_WRITER" }, 419 { 0, NULL } 421 DB * dbp ; 422 DBC_INTERNAL * ; 423 ENV * v ; 425 dbp = dbc ->dbp; 426 v = dbp ->env; 427 = dbc -> ; 429 `STAT_POINTER ("DBC", dbc ); 430 `STAT_POINTER ("Assocd dbp", dbc -> dbp ); 431 `STAT_POINTER ("Assocdxn", dbc -> txn ); 432 `STAT_POINTER ("Il", ); 433 `STAT_HEX ("DeuɆock ID", dbc -> ef = NULL ? 0 : 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 ( v , 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 ( v , 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 -> v )); 477 } } 480 $__db__t_ ( dbp , ags ) 481 DB * dbp ; 482 u_t32_t ags ; 484 `COMPQUIET ( ags , 0); 486 ( `__db__n_but ( dbp -> v )); 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_THREAD_INFO * ; 35 ENV * v ; 36 hd_check , t , t_t , txn_lol ; 38 v = dbp ->env; 39 hd_check = txn_lol = 0; 41 `STRIP_AUTO_COMMIT ( ags ); 44 i( `F_ISSET ( dbp , DB_AM_SECONDARY )) { 45 `__db_rx ( v , "DB->truncate forbidden on secondary indices"); 46 ( EINVAL ); 48 i(( t = `__db_fchk ( v , "DB->un", ags , 0)) != 0) 49 ( t ); 51 `ENV_ENTER ( v , ); 57 i(( t = `__db_curs_check ( dbp )) != 0) { 58 `__db_rx ( v , 60 r ; 63 #ifde CONFIG_TEST 64 i( `IS_REP_MASTER ( v )) 65 `DB_TEST_WAIT ( v ,nv-> _check ); 68 hd_check = `IS_ENV_REPLICATED ( v ); 69 i( hd_check && 70 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 71 hd_check = 0; 72 r ; 79 i( `DB_IS_READONLY ( dbp )) { 80 t = `__db_rdly ( v , "DB->truncate"); 81 r ; 88 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 89 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 90 r ; 91 txn_lol = 1; 95 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 96 r ; 98 t = `__db_un ( dbp , , txn , coup ); 100 r : i( txn_lol && 101 ( t_t = `__db_txn_auto_sve ( v , txn , 0, t )) &&et == 0) 102 t = t_t ; 105 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 106 t = t_t ; 108 `ENV_LEAVE ( v , ); 109 ( t ); 110 } } 120 $__db_un ( dbp , , txn , coup ) 121 DB * dbp ; 122 DB_THREAD_INFO * ; 123 DB_TXN * txn ; 124 u_t32_t * coup ; 126 DB * sdbp ; 127 DBC * dbc ; 128 ENV * v ; 129 u_t32_t scou ; 130 t , t_t ; 132 v = dbp ->env; 133 dbc = NULL ; 134 t = 0; 141 i( dbp -> ty ! DB_QUEUE && `LIST_FIRST (&dbp-> s_cds ! NULL ) { 142 i(( t = `__db_s_f ( dbp , & sdbp )) != 0) 143 ( t ); 144 ; sdbp ! NULL && t =0; = `__db_s_xt (&sdbp, txn )) 145 i(( t = `__db_un ( sdbp , , txn , & scou )) != 0) 147 i( sdbp ! NULL ) 148 () `__db_s_de ( sdbp , txn ); 149 i( t != 0) 150 ( t ); 153 `DB_TEST_RECOVERY ( dbp , DB_TEST_PREDESTROY , t , NULL ); 156 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 157 ( t ); 159 `DEBUG_LWRITE ( dbc , txn , "DB->un", NULL , NULL, 0); 161 dbp -> ty ) { 162 DB_BTREE : 163 DB_RECNO : 164 t = `__bam_un ( dbc , coup ); 166 DB_HASH : 167 t = `__ham_un ( dbc , coup ); 169 DB_QUEUE : 170 t = `__qam_un ( dbc , coup ); 172 DB_UNKNOWN : 174 t = `__db_unknown_ty ( v , "DB->un", dbp -> ty ); 179 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 180 t = t_t ; 182 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTDESTROY , t , NULL ); 184 DB_TEST_RECOVERY_LABEL 186 ( t ); 187 } } 194 $__db_curs_check ( dbp ) 195 DB * dbp ; 197 DB * ldbp ; 198 DBC * dbc ; 199 ENV * v ; 200 found ; 202 v = dbp ->env; 204 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 205 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 206 found = 0; 207 ! found && ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 208 ldbp = `TAILQ_NEXT dbp, dblilks )) { 209 `MUTEX_LOCK ( v , dbp -> mux ); 210 `TAILQ_FOREACH ( dbc , & ldbp -> aive_queue , lks ) 211 i( `IS_INITIALIZED ( dbc )) { 212 found = 1; 215 `MUTEX_UNLOCK ( v , dbp -> mux ); 217 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 219 ( found ? EINVAL : 0); 220 } } @../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 #ifde HAVE_UPGRADE_SUPPORT 31 DB_THREAD_INFO * ; 32 ENV * v ; 33 t ; 35 v = dbp ->env; 41 i(( t = `__db_fchk ( v , "DB->upgde", ags , DB_DUPSORT )) != 0) 42 ( t ); 44 `ENV_ENTER ( v , ); 45 t = `__db_upgde ( dbp , ame , ags ); 46 `ENV_LEAVE ( v , ); 47 ( t ); 49 `COMPQUIET ( dbp , NULL ); 50 `COMPQUIET ( ame , NULL ); 51 `COMPQUIET ( ags , 0); 53 `__db_rx ( dbp -> v , "upgradeot supported"); 54 ( EINVAL ); 56 } } 58 #ifde HAVE_UPGRADE_SUPPORT 59 (* cڡ func_31_li [ P_PAGETYPE_MAX ]) 60 `__P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)) = { 61 NULL , 62 NULL , 63 __ham_31_hash , 64 NULL , 65 NULL , 66 __bam_31_lb , 67 NULL , 68 NULL , 69 __ham_31_hashma , 70 __bam_31_bma , 71 NULL , 72 NULL , 73 NULL , 74 NULL , 75 } }; 77 (* cڡ func_46_li [ P_PAGETYPE_MAX ]) 78 `__P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)) = { 79 NULL , 80 NULL , 81 __ham_46_hash , 82 NULL , 83 NULL , 84 NULL , 85 NULL , 86 NULL , 87 __ham_46_hashma , 88 NULL , 89 NULL , 90 NULL , 91 NULL , 92 NULL , 93 } }; 95 __db_ge_ss __P (( DB *, *, u_t32_t , (* const []) 96 ( DB *, *, u_t32_t , DB_FH *, PAGE *, *), DB_FH *)); 97 __db_t_ϡpgno `__P (( DB *, *, DB_FH *)); 106 $__db_upgde ( dbp , ame , ags ) 107 DB * dbp ; 108 cڡ * ame ; 109 u_t32_t ags ; 111 DBMETA * ma ; 112 DB_FH * fhp ; 113 ENV * v ; 114 size_t n ; 115 t , t_t , u_mp_ݒ ; 116 u_t8_t mbuf [256], tmpags ; 117 * _me ; 119 u_mp_ݒ = 0; 120 v = dbp ->env; 121 fhp = NULL ; 124 i(( t = `__db_ame ( v , 125 DB_APP_DATA , ame , 0, NULL , & _me )) != 0) 126 ( t ); 129 i(( t = `__os_ݒ ( v , _me , 0, 0, 0, & fhp )) != 0) { 130 `__db_r ( v , t , "%s", _me ); 131 ( t ); 135 i( dbp -> db_edback ! NULL ) 136 dbp -> `db_edback (dbp, DB_UPGRADE , 0); 142 i(( t = `__os_ad ( v , fhp , mbuf , (mbuf), & n )) != 0) 143 r ; 145 (( DBMETA *) mbuf )-> magic ) { 146 DB_BTREEMAGIC : 147 (( DBMETA *) mbuf )-> vsi ) { 153 i(( t = 154 `__bam_30_bma ( dbp , _me , mbuf )) != 0) 155 r ; 156 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 157 r ; 158 i(( t = `__os_wre ( v , fhp , mbuf , 256, & n )) != 0) 159 r ; 166 `memy (& dbp -> pgsize , mbuf + 20, ( u_t32_t )); 168 i(( t = `__db_ge_ss ( 169 dbp , _me , ags , func_31_li , fhp )) != 0) 170 r ; 173 i(( t = 174 `__db_t_ϡpgno ( dbp , _me , fhp )) != 0) 175 r ; 180 `__db_rx ( v , "%s: unsupported btree version: %lu", 181 _me , ( u_lg )(( DBMETA *) mbuf )-> vsi ); 182 t = DB_OLD_VERSION ; 183 r ; 186 DB_HASHMAGIC : 187 (( DBMETA *) mbuf )-> vsi ) { 194 i(( t = 195 `__ham_30_hashma ( dbp , _me , mbuf )) != 0) 196 r ; 197 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 198 r ; 199 i(( t = `__os_wre ( v , fhp , mbuf , 256, & n )) != 0) 200 r ; 217 i(( t = 218 `__ham_30_sizefix ( dbp , fhp , _me , mbuf )) != 0) 219 r ; 226 `memy (& dbp -> pgsize , mbuf + 20, ( u_t32_t )); 228 i(( t = `__db_ge_ss ( 229 dbp , _me , ags , func_31_li , fhp )) != 0) 230 r ; 233 i(( t = 234 `__db_t_ϡpgno ( dbp , _me , fhp )) != 0) 235 r ; 247 ma = ( DBMETA *) mbuf ; 252 `memy (& dbp -> pgsize , & ma -> gesize , 253 ( u_t32_t )); 262 `memy (& tmpags , & ma -> maags , ( u_t8_t )); 263 i( `FLD_ISSET ( tmpags , DBMETA_CHKSUM )) 264 `F_SET ( dbp , DB_AM_CHKSUM ); 265 `memy (& tmpags , & ma -> y_g , ( u_t8_t )); 266 i( tmpags != 0) { 267 i(! `CRYPTO_ON ( dbp -> v )) { 268 `__db_rx ( v , 270 t = EINVAL ; 271 r ; 273 `F_SET ( dbp , DB_AM_ENCRYPT ); 287 u_mp_ݒ = 1; 288 i(( t = `__os_ohd ( v , fhp )) != 0) 289 ( t ); 290 dbp -> ty = DB_HASH ; 291 i(( t = `__v_mpo ( dbp , ame , 292 DB_AM_NOT_DURABLE | DB_AM_VERIFYING )) != 0) 293 ( t ); 294 fhp = dbp -> mpf ->fhp; 297 i(( t = `__db_ge_ss ( 298 dbp , _me , ags , func_46_li , fhp )) != 0) 299 r ; 305 `__db_rx ( v , "%s: unsupported hash version: %lu", 306 _me , ( u_lg )(( DBMETA *) mbuf )-> vsi ); 307 t = DB_OLD_VERSION ; 308 r ; 311 DB_QAMMAGIC : 312 (( DBMETA *) mbuf )-> vsi ) { 319 i(( t = `__qam_31_qamma ( dbp , _me , mbuf )) != 0) 320 ( t ); 323 i(( t = `__qam_32_qamma ( dbp , _me , mbuf )) != 0) 324 ( t ); 325 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 326 r ; 327 i(( t = `__os_wre ( v , fhp , mbuf , 256, & n )) != 0) 328 r ; 334 `__db_rx ( v , "%s: unsupported queue version: %lu", 335 _me , ( u_lg )(( DBMETA *) mbuf )-> vsi ); 336 t = DB_OLD_VERSION ; 337 r ; 341 `M_32_SWAP ((( DBMETA *) mbuf )-> magic ); 342 (( DBMETA *) mbuf )-> magic ) { 343 DB_BTREEMAGIC : 344 DB_HASHMAGIC : 345 DB_QAMMAGIC : 346 `__db_rx ( v , 348 _me ); 351 `__db_rx ( v , 352 "%s: uecognized fty", _me ); 355 t = EINVAL ; 356 r ; 359 t = `__os_fsync ( v , fhp ); 365 r : i( u_mp_ݒ =0 && fhp ! NULL && 366 ( t_t = `__os_ohd ( v , fhp )!0 && t == 0) 367 t = t_t ; 368 `__os_ ( v , _me ); 371 i( dbp -> db_edback ! NULL ) 372 dbp -> `db_edback (dbp, DB_UPGRADE , 100); 374 ( t ); 375 } } 382 $__db_ge_ss ( dbp , _me , ags , , fhp ) 383 DB * dbp ; 384 * _me ; 385 u_t32_t ags ; 386 (* cڡ [ P_PAGETYPE_MAX ]) 387 `__P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 388 DB_FH * fhp ; 390 ENV * v ; 391 PAGE * ge ; 392 db_pgno_t i , pgno_ϡ ; 393 size_t n ; 394 dty , t ; 396 v = dbp ->env; 399 i(( t = `__db_ϡpgno ( dbp , _me , fhp , & pgno_ϡ )) != 0) 400 ( t ); 403 i(( t = `__os_mloc ( v , dbp -> pgsize , & ge )) != 0) 404 ( t ); 407 i = 0; i < pgno_ϡ ; ++i) { 408 i( dbp -> db_edback ! NULL ) 409 dbp -> `db_edback ( 410 dbp , DB_UPGRADE , ()(( i * 100)/ pgno_ϡ )); 411 i(( t = `__os_ek ( v , fhp , i , dbp -> pgsize , 0)) != 0) 413 i(( t = `__os_ad ( v , fhp , ge , dbp -> pgsize , & n )) != 0) 415 dty = 0; 417 i(( t = `__db_dey_pg ( v , dbp , ge )) != 0) 419 i( [ `TYPE ( ge )] ! NULL && ( t = fl[TYPE(page)] 420 ( dbp , _me , ags , fhp , ge , & dty )) != 0) 422 i( dty ) { 423 i(( t = `__db_y_d_checksum_pg ( 424 v , dbp , ge )) != 0) 426 i(( t = 427 `__os_ek ( v , fhp , i , dbp -> pgsize , 0)) != 0) 429 i(( t = `__os_wre ( v , 430 fhp , ge , dbp -> pgsize , & n )) != 0) 435 `__os_ ( dbp -> v , ge ); 436 ( t ); 437 } } 446 $__db_ϡpgno ( dbp , _me , fhp , pgno_ϡp ) 447 DB * dbp ; 448 * _me ; 449 DB_FH * fhp ; 450 db_pgno_t * pgno_ϡp ; 452 ENV * v ; 453 db_pgno_t pgno_ϡ ; 454 u_t32_t mbys , bys ; 455 t ; 457 v = dbp ->env; 459 i(( t = `__os_iofo ( v , 460 _me , fhp , & mbys , & bys , NULL )) != 0) { 461 `__db_r ( v , t , "%s", _me ); 462 ( t ); 466 i( bys % dbp -> pgsize != 0) { 467 `__db_rx ( v , 468 "%s: fsiznه muɝ othgesize", _me ); 469 ( EINVAL ); 471 pgno_ϡ = mbys * ( MEGABYTE / dbp -> pgsize ); 472 pgno_ϡ + bys / dbp -> pgsize ; 474 * pgno_ϡp = pgno_ϡ ; 476 } } 485 $__db_t_ϡpgno ( dbp , _me , fhp ) 486 DB * dbp ; 487 * _me ; 488 DB_FH * fhp ; 490 DBMETA ma ; 491 ENV * v ; 492 t ; 493 size_t n ; 495 v = dbp ->env; 496 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 497 ( t ); 498 i(( t = `__os_ad ( v , fhp , & ma , (ma), & n )) != 0) 499 ( t ); 500 dbp -> pgsize = ma . gesize ; 501 i(( t = `__db_ϡpgno ( dbp , _me , fhp , & ma . ϡ_pgno )) != 0) 502 ( t ); 503 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 504 ( t ); 505 i(( t = `__os_wre ( v , fhp , & ma , (ma), & n )) != 0) 506 ( t ); 509 } } @../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 -> v , fhp , pgno , (dbp)-> pgsize , 0)) != 0) \ 22 r ; \ 23 i(( t = `__os_ad ( dbp -> v , \ 24 fhp , ge , ( dbp )-> pgsize , & n )) != 0) \ 25 r ; \ 26 } ) 27 #PUT_PAGE ( dbp , fhp , pgno , ge ) { \ 28 i(( t = `__os_ek ( \ 29 dbp -> v , fhp , pgno , (dbp)-> pgsize , 0)) != 0) \ 30 r ; \ 31 i(( t = `__os_wre ( dbp -> v , \ 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 -> v , 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 -> v , 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 -> v , 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 -> v , 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 -> v , pgno_cur ); 179 i( pgno_xt ! NULL ) 180 `__os_ ( dbp -> v , pgno_xt ); 181 i( age ! NULL ) 182 `__os_ ( dbp -> v , age ); 183 i( ge ! NULL ) 184 `__os_ ( dbp -> v , 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 -> v , `PGNO ( ge ))); 282 ( `__db_pgfmt ( dbp -> v , `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 -> v , 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 -> v , 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 (( ENV *, DB_FH *)); 30 __db_is_vid_magio __P (( u_t32_t , DBTYPE *)); 31 __db_ma2pgt 32 __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t , DB *)); 33 __db_lvage_subdbpg __P (( DB *, VRFY_DBINFO *, 34 PAGE *, *, (*)(*, cڡ *), u_t32_t )); 35 __db_lvage_subdbs `__P (( DB *, VRFY_DBINFO *, *, 36 (*)(*, cڡ *), u_t32_t , *)); 37 __db_lvage_unknowns `__P (( DB *, VRFY_DBINFO *, *, 38 (*)(*, cڡ *), u_t32_t )); 39 __db_vify `__P (( DB *, DB_THREAD_INFO *, const *, 41 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 ; 81 ( `__db_vify_ ( dbp , 82 fe , daba , outfe , __db__back , ags )); 83 } } 92 $__db_vify_ ( dbp , ame , dme , hd , back , ags ) 93 DB * dbp ; 94 cڡ * ame , * dme ; 95 * hd ; 96 (* back `__P ((*, const *)); 97 u_t32_t ags ; 99 DB_THREAD_INFO * ; 100 ENV * v ; 101 t , t_t ; 103 v = dbp ->env; 105 `DB_ILLEGAL_AFTER_OPEN ( dbp , "DB->verify"); 107 i(! `LF_ISSET ( DB_SALVAGE )) 108 `LF_SET ( DB_UNREF ); 110 `ENV_ENTER ( v , ); 112 i(( t = `__db_vify_g ( dbp , dme , hd , ags )) == 0) 113 t = `__db_vify ( dbp , , 114 ame , dme , hd , back , ags ); 117 i(( t_t = `__db_o ( dbp , NULL , 0)!0 && t == 0) 118 t = t_t ; 120 `ENV_LEAVE ( v , ); 121 ( t ); 122 } } 129 $__db_vify_g ( dbp , dme , hd , ags ) 130 DB * dbp ; 131 cڡ * dme ; 132 * hd ; 133 u_t32_t ags ; 135 ENV * v ; 136 t ; 138 v = dbp ->env; 140 i(( t = `__db_fchk ( v , "DB->vify", ags , VERIFY_FLAGS )) != 0) 141 ( t ); 151 i( `LF_ISSET ( DB_SALVAGE )) { 152 i( `LF_ISSET (~( DB_AGGRESSIVE | DB_PRINTABLE | DB_SALVAGE ))) 153 ( `__db_ ( v , "DB->verify", 1)); 154 i( hd = NULL ) { 155 `__db_rx ( v , 157 ( EINVAL ); 160 i( `LF_ISSET ( DB_AGGRESSIVE | DB_PRINTABLE )) 161 ( `__db_ ( v , "DB->verify", 1)); 167 i(( t = `__db_fcchk ( v , "DB->vify", ags , 168 DB_ORDERCHKONLY , DB_SALVAGE | DB_NOORDERCHK )) != 0) 169 ( t ); 170 i( `LF_ISSET ( DB_ORDERCHKONLY && dme = NULL ) { 171 `__db_rx ( v , "DB_ORDERCHKONLYequires databaseame"); 172 ( EINVAL ); 175 } } 192 $__db_vify ( dbp , , me , subdb , hd , back , ags ) 193 DB * dbp ; 194 DB_THREAD_INFO * ; 195 cڡ * me , * subdb ; 196 * hd ; 197 (* back `__P ((*, const *)); 198 u_t32_t ags ; 200 DB_FH * fhp ; 201 ENV * v ; 202 VRFY_DBINFO * vdp ; 203 has_subdbs , isbad , t , t_t ; 204 * _me ; 206 v = dbp ->env; 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_ ( v , , 1024, & vdp )) != 0) 228 r ; 235 i( `LF_ISSET ( DB_PRINTABLE )) 236 `F_SET ( vdp , SALVAGE_PRINTABLE ); 239 i(( t = `__db_ame ( v , 240 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 241 r ; 254 i(( t = `__os_ݒ ( v , _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 = `__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 ( v , fhp )!0 && t == 0) 383 t = t_t ; 384 i( vdp ! NULL && 385 ( t_t = `__db_vrfy_dbfo_deroy ( v , vdp )!0 && t == 0) 386 t = t_t ; 387 i( _me ! NULL ) 388 `__os_ ( v , _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 ( v , 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 ENV * v ; 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 v = dbp ->env; 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 ( v , fhp , 0, 0, 0)) != 0 || 447 ( t = `__os_ad ( v , fhp , mbuf , DBMETASIZE , & )) != 0) { 448 `__db_r ( v , t , 449 "Madg%lu cn bad", ( u_lg ) PGNO_BASE_MD ); 450 ( t ); 453 i( ! DBMETASIZE ) { 454 `EPRINT (( v , 456 ( u_lg ) PGNO_BASE_MD )); 457 ( DB_VERIFY_FATAL ); 460 i(( t = `__db_chk_ma ( v , dbp , ma , 1)) != 0) { 461 `EPRINT (( v , 462 "Pag%lu: madgcrued", ( u_lg ) PGNO_BASE_MD )); 463 isbad = 1; 464 i( t != -1) { 465 `EPRINT (( v , 467 ( u_lg ) PGNO_BASE_MD )); 468 ( DB_VERIFY_FATAL ); 478 i( ma -> pgno ! PGNO_BASE_MD ) { 479 isbad = 1; 480 `EPRINT (( v , "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 (( v , 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 (( v , 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 (( v , "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 ( v , 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 (( v , "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 (( v , 566 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> maags )); 576 i( swd ) 577 `M_32_SWAP ( ma -> ); 578 li = ma -> ; 579 i( swd ) 580 `M_32_SWAP ( ma -> ϡ_pgno ); 581 vdp -> ma_ϡ_pgno = ma -> ϡ_pgno ; 588 p -> pgno = PGNO_BASE_MD ; 589 p -> ty = ma ->type; 595 `F_SET ( p , VRFY_INCOMPLETE ); 597 p -> = li ; 599 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 600 ( t ); 603 `memy ( dbp -> feid , ma -> uid , DB_FILE_ID_LEN ); 605 i( swd == 1) 606 `F_SET ( dbp , DB_AM_SWAP ); 608 ( isbad ? DB_VERIFY_BAD : 0); 609 } } 617 $__db_vrfy_wkges ( dbp , vdp , hd , back , ags ) 618 DB * dbp ; 619 VRFY_DBINFO * vdp ; 620 * hd ; 621 (* back `__P ((*, const *)); 622 u_t32_t ags ; 624 DB_MPOOLFILE * mpf ; 625 ENV * v ; 626 PAGE * h ; 627 VRFY_PAGEINFO * p ; 628 db_pgno_t i ; 629 t , t_t , isbad ; 631 v = dbp ->env; 632 mpf = dbp ->mpf; 633 h = NULL ; 634 t = isbad = t_t = 0; 636 i = 0; i < vdp -> ϡ_pgno ; i++) { 641 i( `LF_ISSET ( DB_SALVAGE && ( `__db_lvage_isde ( vdp , i ) != 0)) 651 i(( t_t = `__memp_fg ( mpf , & i , 652 vdp -> thad_fo , NULL , 0, & h )) != 0) { 653 i( dbp -> ty = DB_HASH ) { 654 i(( t_t = 655 `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 656 r1 ; 657 p -> ty = P_INVALID ; 658 p -> pgno = i ; 659 `F_CLR ( p , VRFY_IS_ALLZEROES ); 660 i(( t_t = `__db_vrfy_puagefo ( 661 v , vdp , p )) != 0) 662 r1 ; 665 r1 : i( t == 0) 666 t = t_t ; 667 i( `LF_ISSET ( DB_SALVAGE )) 669 ( t ); 672 i( `LF_ISSET ( DB_SALVAGE )) { 678 i(( t_t = `__db_lvage ( dbp , 679 vdp , i , h , hd , back , ags )) != 0) { 680 i( t == 0) 681 t = t_t ; 682 isbad = 1; 695 i( i ! PGNO_BASE_MD ) { 696 t = `__db_vrfy_comm ( dbp , vdp , h , i , ags ); 697 i( t = DB_VERIFY_BAD ) 698 isbad = 1; 699 i( t != 0) 700 r ; 703 `TYPE ( h )) { 704 P_INVALID : 705 t = `__db_vrfy_vid ( dbp , vdp , h , i , ags ); 707 __P_DUPLICATE : 708 isbad = 1; 709 `EPRINT (( v , 711 ( u_lg ) i )); 713 P_HASH_UNSORTED : 714 P_HASH : 715 t = `__ham_vrfy ( dbp , vdp , h , i , ags ); 717 P_IBTREE : 718 P_IRECNO : 719 P_LBTREE : 720 P_LDUP : 721 t = `__bam_vrfy ( dbp , vdp , h , i , ags ); 723 P_LRECNO : 724 t = `__m_vrfy_af ( dbp , vdp , h , i , ags ); 726 P_OVERFLOW : 727 t = `__db_vrfy_ovow ( dbp , vdp , h , i , ags ); 729 P_HASHMETA : 730 t = `__ham_vrfy_ma ( dbp , 731 vdp , ( HMETA *) h , i , ags ); 733 P_BTREEMETA : 734 t = `__bam_vrfy_ma ( dbp , 735 vdp , ( BTMETA *) h , i , ags ); 737 P_QAMMETA : 738 t = `__qam_vrfy_ma ( dbp , 739 vdp , ( QMETA *) h , i , ags ); 741 P_QAMDATA : 742 t = `__qam_vrfy_da ( dbp , 743 vdp , ( QPAGE *) h , i , ags ); 746 `EPRINT (( v , 748 ( u_lg ) i , (u_lg) `TYPE ( h ))); 749 isbad = 1; 756 i( t = DB_VERIFY_BAD ) 757 isbad = 1; 758 i( t != 0) 759 r ; 767 i( dbp -> db_edback ! NULL ) 768 dbp -> `db_edback (dbp, DB_VERIFY , 769 ()(( i + 1* 50 / ( vdp -> ϡ_pgno + 1))); 776 i(( t_t = `__memp_ut ( mpf , 777 vdp -> thad_fo , h , dbp -> iܙy )) != 0) { 778 i( t == 0) 779 t = t_t ; 780 i(! `LF_ISSET ( DB_SALVAGE )) 781 ( t ); 789 i( `F_ISSET ( vdp , VRFY_QMETA_SET && ( t_t = 790 `__qam_vrfy_wkqueue ( dbp , vdp , hd , back , ags )) != 0) { 791 i( t == 0) 792 t = t_t ; 793 i( t_t = DB_VERIFY_BAD ) 794 isbad = 1; 795 i(! `LF_ISSET ( DB_SALVAGE )) 796 ( t ); 800 r : i( h ! NULL && ( t_t = `__memp_ut ( mpf , 801 vdp -> thad_fo , h , dbp -> iܙy )) != 0) 802 ( t =0 ? t_t :et); 805 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 806 } } 818 $__db_vrfy_ruu ( dbp , vdp , dbme , ma_pgno , ags ) 819 DB * dbp ; 820 VRFY_DBINFO * vdp ; 821 cڡ * dbme ; 822 db_pgno_t ma_pgno ; 823 u_t32_t ags ; 825 DB * pgt ; 826 ENV * v ; 827 VRFY_PAGEINFO * p ; 828 db_pgno_t i ; 829 t , isbad , hassubs , p ; 831 isbad = 0; 832 p = NULL ; 833 v = dbp ->env; 834 pgt = vdp ->pgset; 850 i( dbp -> db_edback ! NULL ) 851 vdp -> pgs_mag = vdp-> ϡ_pgno + 1; 856 dbp -> ty ) { 857 DB_BTREE : 858 DB_RECNO : 859 i(( t = `__bam_vrfy_ruu ( dbp , vdp , 0, ags )) != 0) { 860 i( t = DB_VERIFY_BAD ) 861 isbad = 1; 863 r ; 871 i(( t = `__db_vrfy_ggefo ( vdp , 0, & p )) != 0) 872 r ; 873 hassubs = `F_ISSET ( p , VRFY_HAS_SUBDBS ) ? 1 : 0; 874 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 875 r ; 876 p = NULL ; 878 i( isbad =0 && hassubs ) 879 i(( t = 880 `__db_vrfy_subdbs ( dbp , vdp , dbme , ags )) != 0) { 881 i( t = DB_VERIFY_BAD ) 882 isbad = 1; 884 r ; 887 DB_HASH : 888 i(( t = `__ham_vrfy_ruu ( dbp , vdp , 0, ags )) != 0) { 889 i( t = DB_VERIFY_BAD ) 890 isbad = 1; 892 r ; 895 DB_QUEUE : 896 i(( t = `__qam_vrfy_ruu ( dbp , vdp , ags )) != 0) { 897 i( t = DB_VERIFY_BAD ) 898 isbad = 1; 907 r ; 908 DB_UNKNOWN : 910 t = `__db_unknown_th ( v , "__db_vrfy_structure"); 911 r ; 915 i(( t = 916 `__db_vrfy_li ( dbp , vdp , ma_pgno , ags )= DB_VERIFY_BAD ) 917 isbad = 1; 926 i( t !0 || isbad == 1) 927 r ; 934 i = 0; i < vdp -> ϡ_pgno + 1; i++) { 935 i(( t = `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 936 r ; 937 i(( t = `__db_vrfy_pgt_g ( pgt , 938 vdp -> thad_fo , i , & p )) != 0) 939 r ; 940 i( p -> ty = P_OVERFLOW ) { 941 i(( u_t32_t ) p ! p -> fcou ) { 942 `EPRINT (( v , 944 ( u_lg ) i , 945 ( u_lg ) p -> fcou , (u_lg) p )); 946 isbad = 1; 948 } i( p == 0 && 949 #ide HAVE_FTRUNCATE 950 !( i > vdp -> ma_ϡ_pgno && 951 ( `F_ISSET ( p , VRFY_IS_ALLZEROES ||-> ty = P_HASH )) && 953 !( dbp -> ty = DB_HASH && p ->ty = P_INVALID )) { 958 `EPRINT (( v , 959 "Pag%lu: uendage", ( u_lg ) i )); 960 isbad = 1; 963 i( `F_ISSET ( p , VRFY_IS_ALLZEROES ) 964 #ide HAVE_FTRUNCATE 965 && i < vdp -> ma_ϡ_pgno 968 `EPRINT (( v , 969 "Pag%lu:ٮly zdage", ( u_lg ) i )); 970 isbad = 1; 972 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 973 r ; 974 p = NULL ; 977 r : i( p ! NULL ) 978 () `__db_vrfy_puagefo ( v , vdp , p ); 980 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 981 } } 987 $__db_is_vid_magio ( magic , typ ) 988 u_t32_t magic ; 989 DBTYPE * typ ; 991 magic ) { 992 DB_BTREEMAGIC : 993 * typ = DB_BTREE ; 995 DB_HASHMAGIC : 996 * typ = DB_HASH ; 998 DB_QAMMAGIC : 999 * typ = DB_QUEUE ; 1004 * typ = DB_UNKNOWN ; 1006 } } 1016 $__db_vrfy_comm ( dbp , vdp , h , pgno , ags ) 1017 DB * dbp ; 1018 VRFY_DBINFO * vdp ; 1019 PAGE * h ; 1020 db_pgno_t pgno ; 1021 u_t32_t ags ; 1023 ENV * v ; 1024 VRFY_PAGEINFO * p ; 1025 t , t_t ; 1026 u_t8_t * p ; 1028 v = dbp ->env; 1030 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1031 ( t ); 1033 p -> pgno =gno; 1034 `F_CLR ( p , VRFY_IS_ALLZEROES ); 1043 i( pgno !0 && `PGNO ( h ) == 0) { 1044 `F_SET ( p , VRFY_IS_ALLZEROES ); 1045 p = ( u_t8_t *) h ; < (u_t8_*)h + dbp -> pgsize ;++) 1046 i(* p != 0) { 1047 `F_CLR ( p , VRFY_IS_ALLZEROES ); 1056 p -> ty = P_HASH ; 1057 t = 0; 1058 r ; 1061 i( `PGNO ( h ! pgno ) { 1062 `EPRINT (( v , "Page %lu: badageumber %lu", 1063 ( u_lg ) pgno , (u_lg) h ->pgno)); 1064 t = DB_VERIFY_BAD ; 1067 h -> ty ) { 1068 P_INVALID : 1069 P_HASH_UNSORTED : 1070 P_IBTREE : 1071 P_IRECNO : 1072 P_LBTREE : 1073 P_LRECNO : 1074 P_OVERFLOW : 1075 P_HASHMETA : 1076 P_BTREEMETA : 1077 P_QAMMETA : 1078 P_QAMDATA : 1079 P_LDUP : 1080 P_HASH : 1083 `EPRINT (( v , "Page %lu: badageype %lu", 1084 ( u_lg ) pgno , (u_lg) h -> ty )); 1085 t = DB_VERIFY_BAD ; 1087 p -> ty = h ->type; 1089 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1090 t = t_t ; 1092 ( t ); 1093 } } 1101 $__db_vrfy_vid ( dbp , vdp , h , pgno , ags ) 1102 DB * dbp ; 1103 VRFY_DBINFO * vdp ; 1104 PAGE * h ; 1105 db_pgno_t pgno ; 1106 u_t32_t ags ; 1108 ENV * v ; 1109 VRFY_PAGEINFO * p ; 1110 t , t_t ; 1112 v = dbp ->env; 1114 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1115 ( t ); 1116 p -> xt_pgno =-> ev_pgno = 0; 1118 i(! `IS_VALID_PGNO ( `NEXT_PGNO ( h ))) { 1119 `EPRINT (( v , "Page %lu: invalidext_pgno %lu", 1120 ( u_lg ) pgno , (u_lg) `NEXT_PGNO ( h ))); 1121 t = DB_VERIFY_BAD ; 1123 p -> xt_pgno = `NEXT_PGNO ( h ); 1125 i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1126 t = t_t ; 1127 ( t ); 1128 } } 1144 $__db_vrfy_dage ( dbp , vdp , h , pgno , ags ) 1145 DB * dbp ; 1146 VRFY_DBINFO * vdp ; 1147 PAGE * h ; 1148 db_pgno_t pgno ; 1149 u_t32_t ags ; 1151 ENV * v ; 1152 VRFY_PAGEINFO * p ; 1153 u_t32_t smˡ_y ; 1154 isbad , t , t_t ; 1156 v = dbp ->env; 1158 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1159 ( t ); 1160 isbad = 0; 1170 i( `TYPE ( h ! P_IBTREE && TYPE(h! P_IRECNO ) { 1171 i(! `IS_VALID_PGNO ( `PREV_PGNO ( h )|| PREV_PGNO(h= p -> pgno ) { 1172 isbad = 1; 1173 `EPRINT (( v , "Page %lu: invalidrev_pgno %lu", 1174 ( u_lg ) p -> pgno , (u_lg) `PREV_PGNO ( h ))); 1176 i(! `IS_VALID_PGNO ( `NEXT_PGNO ( h )|| NEXT_PGNO(h= p -> pgno ) { 1177 isbad = 1; 1178 `EPRINT (( v , "Page %lu: invalidext_pgno %lu", 1179 ( u_lg ) p -> pgno , (u_lg) `NEXT_PGNO ( h ))); 1181 p -> ev_pgno = `PREV_PGNO ( h ); 1182 p -> xt_pgno = `NEXT_PGNO ( h ); 1192 `TYPE ( h )) { 1193 P_HASH_UNSORTED : 1194 P_HASH : 1195 smˡ_y = `HKEYDATA_PSIZE (0); 1197 P_IBTREE : 1198 smˡ_y = `BINTERNAL_PSIZE (0); 1200 P_IRECNO : 1201 smˡ_y = RINTERNAL_PSIZE ; 1203 P_LBTREE : 1204 P_LDUP : 1205 P_LRECNO : 1206 smˡ_y = `BKEYDATA_PSIZE (0); 1209 smˡ_y = 0; 1212 i( smˡ_y * `NUM_ENT ( h / 2 > dbp -> pgsize ) { 1213 isbad = 1; 1214 `EPRINT (( v , "Page %lu:oo manyntries: %lu", 1215 ( u_lg ) pgno , (u_lg) `NUM_ENT ( h ))); 1218 i( `TYPE ( h ! P_OVERFLOW ) 1219 p -> s = `NUM_ENT ( h ); 1226 `TYPE ( h )) { 1227 P_IBTREE : 1228 P_IRECNO : 1229 i( `LEVEL ( h < LEAFLEVEL + 1) { 1230 isbad = 1; 1231 `EPRINT (( v , "Page %lu: bad btreeevel %lu", 1232 ( u_lg ) pgno , (u_lg) `LEVEL ( h ))); 1234 p -> bt_v = `LEVEL ( h ); 1236 P_LBTREE : 1237 P_LDUP : 1238 P_LRECNO : 1239 i( `LEVEL ( h ! LEAFLEVEL ) { 1240 isbad = 1; 1241 `EPRINT (( v , 1243 ( u_lg ) pgno , (u_lg) `LEVEL ( h ))); 1247 i( `LEVEL ( h ) != 0) { 1248 isbad = 1; 1249 `EPRINT (( v , 1251 ( u_lg ) pgno , (u_lg) `LEVEL ( h ))); 1264 i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1265 t = t_t ; 1267 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1268 } } 1279 $__db_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 1280 DB * dbp ; 1281 VRFY_DBINFO * vdp ; 1282 DBMETA * ma ; 1283 db_pgno_t pgno ; 1284 u_t32_t ags ; 1286 DBTYPE dbty , magty ; 1287 ENV * v ; 1288 VRFY_PAGEINFO * p ; 1289 isbad , t , t_t ; 1291 isbad = 0; 1292 v = dbp ->env; 1294 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1295 ( t ); 1298 ma -> ty ) { 1299 P_BTREEMETA : 1300 dbty = DB_BTREE ; 1302 P_HASHMETA : 1303 dbty = DB_HASH ; 1305 P_QAMMETA : 1306 dbty = DB_QUEUE ; 1309 t = `__db_unknown_th ( v , "__db_vrfy_meta"); 1310 r ; 1314 i(! `__db_is_vid_magio ( ma -> magic , & magty )) { 1315 isbad = 1; 1316 `EPRINT (( v , 1317 "Pag%lu: invid maginumb", ( u_lg ) pgno )); 1319 i( magty ! dbty ) { 1320 isbad = 1; 1321 `EPRINT (( v , 1323 ( u_lg ) pgno )); 1327 i(( dbty = DB_BTREE && 1328 ( ma -> vsi > DB_BTREEVERSION || 1329 ma -> vsi < DB_BTREEOLDVER )) || 1330 ( dbty = DB_HASH && 1331 ( ma -> vsi > DB_HASHVERSION || 1332 ma -> vsi < DB_HASHOLDVER )) || 1333 ( dbty = DB_QUEUE && 1334 ( ma -> vsi > DB_QAMVERSION || 1335 ma -> vsi < DB_QAMOLDVER ))) { 1336 isbad = 1; 1337 `EPRINT (( v , 1339 ( u_lg ) pgno , (u_lg) ma -> vsi )); 1343 i( ma -> gesize ! dbp -> pgsize ) { 1344 isbad = 1; 1345 `EPRINT (( v , "Page %lu: invalidagesize %lu", 1346 ( u_lg ) pgno , (u_lg) ma -> gesize )); 1350 i( ma -> maags != 0) { 1351 i( ma -> maags = DBMETA_CHKSUM ) 1352 `F_SET ( p , VRFY_HAS_CHKSUM ); 1354 isbad = 1; 1355 `EPRINT (( v , 1357 ( u_lg ) PGNO_BASE_MD , (u_lg) ma -> maags )); 1367 i( pgno ! PGNO_BASE_MD && ma -> ! PGNO_INVALID ) { 1368 isbad = 1; 1369 `EPRINT (( v , 1371 ( u_lg ) pgno )); 1375 i( ma -> ! PGNO_INVALID && `IS_VALID_PGNO (meta->free)) 1376 p -> = ma ->free; 1377 i(! `IS_VALID_PGNO ( ma -> )) { 1378 isbad = 1; 1379 `EPRINT (( v , 1381 ( u_lg ) pgno , (u_lg) ma -> )); 1390 i( pgno = PGNO_BASE_MD && ma -> ϡ_pgno ! vdp ->last_pgno) { 1391 #ifde HAVE_FTRUNCATE 1392 isbad = 1; 1393 `EPRINT (( v , 1395 ( u_lg ) pgno , 1396 ( u_lg ) ma -> ϡ_pgno , (u_lg) vdp ->last_pgno)); 1398 vdp -> ma_ϡ_pgno = ma -> ϡ_pgno ; 1405 `F_CLR ( p , VRFY_INCOMPLETE ); 1407 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1408 t = t_t ; 1410 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1411 } } 1419 $__db_vrfy_li ( dbp , vdp , ma , ags ) 1420 DB * dbp ; 1421 VRFY_DBINFO * vdp ; 1422 db_pgno_t ma ; 1423 u_t32_t ags ; 1425 DB * pgt ; 1426 ENV * v ; 1427 VRFY_PAGEINFO * p ; 1428 db_pgno_t cur_pgno , xt_pgno ; 1429 p , t , t_t ; 1431 v = dbp ->env; 1432 pgt = vdp ->pgset; 1433 `DB_ASSERT ( v , pgt ! NULL ); 1435 i(( t = `__db_vrfy_ggefo ( vdp , ma , & p )) != 0) 1436 ( t ); 1437 xt_pgno = p -> ; 1438 xt_pgno ! PGNO_INVALID ;ext_pgn p ->next_pgno) { 1439 cur_pgno = p -> pgno ; 1440 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 1441 ( t ); 1444 i(! `IS_VALID_PGNO ( xt_pgno )) { 1445 `EPRINT (( v , 1447 ( u_lg ) cur_pgno , (u_lg) xt_pgno )); 1448 ( DB_VERIFY_BAD ); 1452 i(( t = `__db_vrfy_pgt_g ( pgt , 1453 vdp -> thad_fo , xt_pgno , & p )) != 0) 1454 ( t ); 1455 i( p != 0) { 1456 `EPRINT (( v , 1458 ( u_lg ) cur_pgno , (u_lg) xt_pgno )); 1459 ( DB_VERIFY_BAD ); 1461 i(( t = `__db_vrfy_pgt_c ( pgt , 1462 vdp -> thad_fo , xt_pgno )) != 0) 1463 ( t ); 1465 i(( t = `__db_vrfy_ggefo ( vdp , xt_pgno , & p )) != 0) 1466 ( t ); 1468 i( p -> ty ! P_INVALID ) { 1469 `EPRINT (( v , 1471 ( u_lg ) cur_pgno , (u_lg) xt_pgno )); 1472 t = DB_VERIFY_BAD ; 1477 i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 1478 t = t_t ; 1479 ( t ); 1480 } } 1488 $__db_vrfy_subdbs ( dbp , vdp , dbme , ags ) 1489 DB * dbp ; 1490 VRFY_DBINFO * vdp ; 1491 cڡ * dbme ; 1492 u_t32_t ags ; 1494 DB * mdbp ; 1495 DBC * dbc ; 1496 DBT key , da ; 1497 ENV * v ; 1498 VRFY_PAGEINFO * p ; 1499 db_pgno_t ma_pgno ; 1500 t , t_t , isbad ; 1501 u_t8_t ty ; 1503 isbad = 0; 1504 dbc = NULL ; 1505 v = dbp ->env; 1507 i(( t = `__db_ma_ݒ ( dbp , 1508 vdp -> thad_fo , NULL , dbme , DB_RDONLY , 0, & mdbp )) != 0) 1509 ( t ); 1511 i(( t = `__db_curs_t ( mdbp , NULL , 1512 NULL , DB_BTREE , PGNO_INVALID , 0, DB_LOCK_INVALIDID , & dbc )) != 0) 1513 r ; 1515 `memt (& key , 0, (key)); 1516 `memt (& da , 0, (data)); 1517 ( t = `__dbc_g ( dbc , & key , & da , DB_NEXT )) == 0) { 1518 i( da . size !( db_pgno_t )) { 1519 `EPRINT (( v , 1521 isbad = 1; 1522 r ; 1524 `memy (& ma_pgno , da .da, da. size ); 1529 `DB_NTOHL_SWAP ( v , & ma_pgno ); 1530 i( ma_pgno = PGNO_INVALID || ma_pgn> vdp -> ϡ_pgno ) { 1531 `EPRINT (( v , 1533 ( u_lg ) ma_pgno )); 1534 isbad = 1; 1535 r ; 1537 i(( t = `__db_vrfy_ggefo ( vdp , ma_pgno , & p )) != 0) 1538 r ; 1539 ty = p ->type; 1540 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 1541 r ; 1542 ty ) { 1543 P_BTREEMETA : 1544 i(( t = `__bam_vrfy_ruu ( 1545 dbp , vdp , ma_pgno , ags )) != 0) { 1546 i( t = DB_VERIFY_BAD ) 1547 isbad = 1; 1549 r ; 1552 P_HASHMETA : 1553 i(( t = `__ham_vrfy_ruu ( 1554 dbp , vdp , ma_pgno , ags )) != 0) { 1555 i( t = DB_VERIFY_BAD ) 1556 isbad = 1; 1558 r ; 1561 P_QAMMETA : 1563 `EPRINT (( v , 1565 ( u_lg ) ma_pgno , (u_lg) ty )); 1566 t = DB_VERIFY_BAD ; 1567 r ; 1571 i( t = DB_NOTFOUND ) 1572 t = 0; 1574 r : i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 1575 t = t_t ; 1577 i(( t_t = `__db_o ( mdbp , NULL , 0)!0 && t == 0) 1578 t = t_t ; 1580 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 1581 } } 1591 $__db_vrfy_ru_edback ( dbp , vdp ) 1592 DB * dbp ; 1593 VRFY_DBINFO * vdp ; 1595 ogss ; 1597 i( dbp -> db_edback = NULL ) 1600 i( vdp -> pgs_mag > 0) 1601 vdp -> pgs_mag --; 1604 ogss = 100 - ()( vdp -> pgs_mag * 50 / (vdp-> ϡ_pgno + 1)); 1605 dbp -> `db_edback (dbp, DB_VERIFY , ogss == 100 ? 99 :rogress); 1606 } } 1613 $__db_vrfy_dchkly ( dbp , vdp , me , subdb , ags ) 1614 DB * dbp ; 1615 VRFY_DBINFO * vdp ; 1616 cڡ * me , * subdb ; 1617 u_t32_t ags ; 1619 BTMETA * btma ; 1620 DB * mdbp , * pgt ; 1621 DBC * pgsc ; 1622 DBT key , da ; 1623 DB_MPOOLFILE * mpf ; 1624 ENV * v ; 1625 HASH * h_ ; 1626 HMETA * hma ; 1627 PAGE * h , * cupg ; 1628 db_pgno_t ma_pgno , p , pgno ; 1629 u_t32_t buck ; 1630 t_t , t ; 1632 pgt = NULL ; 1633 pgsc = NULL ; 1634 v = dbp ->env; 1635 mpf = dbp ->mpf; 1636 cupg = h = NULL ; 1638 `LF_CLR ( DB_NOORDERCHK ); 1641 i(( t = `__db_ma_ݒ ( dbp , 1642 vdp -> thad_fo , NULL , me , DB_RDONLY , 0, & mdbp )) != 0) 1643 r ; 1645 `DB_INIT_DBT ( key , subdb , ` (subdb)); 1646 `memt (& da , 0, (data)); 1647 i(( t = `__db_g ( mdbp , 1648 vdp -> thad_fo , NULL , & key , & da , 0)) != 0) { 1649 i( t = DB_NOTFOUND ) 1650 t = ENOENT ; 1651 r ; 1654 i( da . size !( db_pgno_t )) { 1655 `EPRINT (( v , "Subdatabasentry of invalid size")); 1656 t = DB_VERIFY_BAD ; 1657 r ; 1660 `memy (& ma_pgno , da .da, da. size ); 1666 `DB_NTOHL_SWAP ( v , & ma_pgno ); 1668 i(( t = `__memp_fg ( mpf , 1669 & ma_pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) 1670 r ; 1672 i(( t = `__db_vrfy_pgt ( v , 1673 vdp -> thad_fo , dbp -> pgsize , & pgt )) != 0) 1674 r ; 1676 `TYPE ( h )) { 1677 P_BTREEMETA : 1678 btma = ( BTMETA *) h ; 1679 i( `F_ISSET (& btma -> dbma , BTM_RECNO )) { 1681 t = 0; 1682 r ; 1684 i(( t = 1685 `__db_ma2pgt ( dbp , vdp , ma_pgno , ags , pgt )) != 0) 1686 r ; 1687 i(( t = `__db_curs_t ( pgt , NULL , NULL, dbp -> ty , 1688 PGNO_INVALID , 0, DB_LOCK_INVALIDID , & pgsc )) != 0) 1689 r ; 1690 ( t = `__db_vrfy_pgt_xt ( pgsc , & p )) == 0) { 1691 i(( t = `__memp_fg ( mpf , & p , 1692 vdp -> thad_fo , NULL , 0, & cupg )) != 0) 1693 r ; 1694 i(( t = `__bam_vrfy_emd ( dbp , NULL , 1695 vdp -> thad_fo , cupg , p , `NUM_ENT (currpg), 1, 1696 `F_ISSET (& btma -> dbma , BTM_DUP ), ags )) != 0) 1697 r ; 1698 i(( t = `__memp_ut ( mpf , 1699 vdp -> thad_fo , cupg , dbp -> iܙy )) != 0) 1700 r ; 1701 cupg = NULL ; 1709 i( t = DB_NOTFOUND ) 1710 t = 0; 1712 P_HASHMETA : 1713 hma = ( HMETA *) h ; 1714 h_ = ( HASH *) dbp ->h_internal; 1718 i( h_ = NULL ) { 1719 `EPRINT (( v , 1721 ( u_lg ) ma_pgno )); 1722 t = DB_VERIFY_BAD ; 1723 r ; 1725 i( h_ -> h_hash = NULL ) 1726 h_ -> h_hash = hma -> dbma . vsi < 5 1727 ? __ham_func4 : __ham_func5 ; 1728 i( hma -> h_chkey != 1729 h_ -> `h_hash ( dbp , CHARKEY , (CHARKEY))) { 1730 `EPRINT (( v , 1732 ( u_lg ) ma_pgno )); 1733 t = DB_VERIFY_BAD ; 1734 r ; 1741 buck = 0; buck < hma -> max_buck ; bucket++) { 1742 pgno = `BS_TO_PAGE ( buck , hma -> es ); 1743 pgno ! PGNO_INVALID ) { 1744 i(( t = `__memp_fg ( mpf , & pgno , 1745 vdp -> thad_fo , NULL , 0, & cupg )) != 0) 1746 r ; 1747 i(( t = `__ham_vrfy_hashg ( dbp , 1748 `NUM_ENT ( cupg ), hma , buck , pgno , 1749 ags , h_ -> h_hash )) != 0) 1750 r ; 1751 pgno = `NEXT_PGNO ( cupg ); 1752 i(( t = `__memp_ut ( mpf , vdp -> thad_fo , 1753 cupg , dbp -> iܙy )) != 0) 1754 r ; 1755 cupg = NULL ; 1760 `EPRINT (( v , "Page %lu: database metapage of badype %lu", 1761 ( u_lg ) ma_pgno , (u_lg) `TYPE ( h ))); 1762 t = DB_VERIFY_BAD ; 1766 r : i( pgsc ! NULL && ( t_t = `__dbc_o gsc)!0 && t == 0) 1767 t = t_t ; 1768 i( pgt ! NULL && 1769 ( t_t = `__db_o ( pgt , NULL , 0)!0 && t == 0) 1770 t = t_t ; 1771 i( h ! NULL && ( t_t = `__memp_ut ( mpf , 1772 vdp -> thad_fo , h , dbp -> iܙy )) != 0) 1773 t = t_t ; 1774 i( cupg ! NULL && 1775 ( t_t = `__memp_ut ( mpf , 1776 vdp -> thad_fo , cupg , dbp -> iܙy )) != 0) 1777 t = t_t ; 1778 i(( t_t = `__db_o ( mdbp , NULL , 0)) != 0) 1779 t = t_t ; 1780 ( t ); 1781 } } 1792 $__db_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 1793 DB * dbp ; 1794 VRFY_DBINFO * vdp ; 1795 db_pgno_t pgno ; 1796 PAGE * h ; 1797 * hd ; 1798 (* back `__P ((*, const *)); 1799 u_t32_t ags ; 1801 ENV * v ; 1802 VRFY_PAGEINFO * p ; 1803 keyag , t , t_t ; 1805 v = dbp ->env; 1806 `DB_ASSERT ( v , `LF_ISSET ( DB_SALVAGE )); 1815 keyag = 0; 1818 i( `__db_lvage_isde ( vdp , pgno )) 1821 `TYPE ( h )) { 1822 P_HASHMETA : 1823 t = `__ham_vrfy_ma ( dbp , vdp , ( HMETA *) h , pgno , ags ); 1825 P_BTREEMETA : 1826 t = `__bam_vrfy_ma ( dbp , vdp , ( BTMETA *) h , pgno , ags ); 1828 P_QAMMETA : 1829 keyag = 1; 1830 t = `__qam_vrfy_ma ( dbp , vdp , ( QMETA *) h , pgno , ags ); 1832 P_HASH_UNSORTED : 1833 P_HASH : 1834 ( `__ham_lvage ( dbp , vdp , 1835 pgno , h , hd , back , ags )); 1836 P_LBTREE : 1837 ( `__bam_lvage ( dbp , vdp , 1838 pgno , P_LBTREE , h , hd , back , NULL , ags )); 1839 P_LDUP : 1840 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_LDUP )); 1841 P_OVERFLOW : 1842 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_OVERFLOW )); 1843 P_LRECNO : 1856 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_LRECNO )); 1857 P_QAMDATA : 1858 ( `__qam_lvage ( dbp , vdp , 1859 pgno , h , hd , back , ags )); 1860 P_IBTREE : 1870 ( `__db_lvage_mkeded ( vdp , pgno , SALVAGE_IBTREE )); 1871 P_INVALID : 1872 P_IRECNO : 1873 __P_DUPLICATE : 1881 i( t != 0) 1882 ( t ); 1891 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 1892 ( t ); 1893 i(! `F_ISSET ( p , VRFY_HAS_SUBDBS )) 1894 t = `__db_hd ( 1895 dbp , NULL , 0, keyag , hd , back , vdp , pgno ); 1896 i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 1897 t = t_t ; 1898 ( t ); 1899 } } 1907 $__db_lvage_unknowns ( dbp , vdp , hd , back , ags ) 1908 DB * dbp ; 1909 VRFY_DBINFO * vdp ; 1910 * hd ; 1911 (* back `__P ((*, const *)); 1912 u_t32_t ags ; 1914 DBC * dbc ; 1915 DBT unkdbt , key , * dbt ; 1916 DB_MPOOLFILE * mpf ; 1917 ENV * v ; 1918 PAGE * h ; 1919 db_pgno_t pgno ; 1920 u_t32_t pgty ; 1921 t , t_t ; 1922 * ovbuf ; 1924 dbc = NULL ; 1925 v = dbp ->env; 1926 mpf = dbp ->mpf; 1928 `DB_INIT_DBT ( unkdbt , "UNKNOWN", ("UNKNOWN") - 1); 1930 i(( t = `__os_mloc ( v , dbp -> pgsize , & ovbuf )) != 0) 1931 ( t ); 1938 ( t_t = 1939 `__db_lvage_gxt ( vdp , & dbc , & pgno , & pgty , 1)) == 0) { 1940 i(( t_t = `__memp_fg ( mpf , 1941 & pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) { 1942 i( t == 0) 1943 t = t_t ; 1947 dbt = NULL ; 1948 pgty ) { 1949 SALVAGE_LDUP : 1950 SALVAGE_LRECNODUP : 1951 dbt = & unkdbt ; 1953 SALVAGE_IBTREE : 1954 SALVAGE_LBTREE : 1955 SALVAGE_LRECNO : 1956 i(( t_t = `__bam_lvage ( dbp , vdp , pgno , pgty , 1957 h , hd , back , dbt , ags )!0 && t == 0) 1958 t = t_t ; 1960 SALVAGE_OVERFLOW : 1961 `DB_ASSERT ( v , 0); 1963 SALVAGE_HASH : 1964 i(( t_t = `__ham_lvage ( dbp , vdp , 1965 pgno , h , hd , back , ags )!0 && t == 0) 1966 t = t_t ; 1968 SALVAGE_INVALID : 1969 SALVAGE_IGNORE : 1975 `DB_ASSERT ( v , 0); 1978 i(( t_t = `__memp_ut ( mpf , 1979 vdp -> thad_fo , h , dbp -> iܙy )!0 && t == 0) 1980 t = t_t ; 1984 i( t_t = DB_NOTFOUND ) 1985 t_t = 0; 1986 i( t_t !0 && t == 0) 1987 t = t_t ; 1990 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1991 t = t_t ; 1992 dbc = NULL ; 1995 ( t_t = 1996 `__db_lvage_gxt ( vdp , & dbc , & pgno , & pgty , 0)) == 0) { 1997 i(( t_t = `__memp_fg ( mpf , 1998 & pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) { 1999 i( t == 0) 2000 t = t_t ; 2004 pgty ) { 2005 SALVAGE_OVERFLOW : 2011 i(( t_t = `__db__goff ( dbp , 2012 vdp , pgno , & key , & ovbuf , ags )) != 0 || 2013 (( vdp -> ty = DB_BTREE || vdp->ty = DB_HASH ) && 2014 ( t_t = `__db_vrfy_dbt (& unkdbt , 2015 0, " ", hd , back , 0, vdp )) != 0) || 2016 ( t_t = `__db_vrfy_dbt ( 2017 & key , 0, " ", hd , back , 0, vdp )) != 0) 2018 i( t == 0) 2019 t = t_t ; 2022 `DB_ASSERT ( v , 0); 2025 i(( t_t = `__memp_ut ( mpf , 2026 vdp -> thad_fo , h , dbp -> iܙy )!0 && t == 0) 2027 t = t_t ; 2031 i( t_t = DB_NOTFOUND ) 2032 t_t = 0; 2033 i( t_t !0 && t == 0) 2034 t = t_t ; 2036 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 2037 t = t_t ; 2039 `__os_ ( v , ovbuf ); 2041 ( t ); 2042 } } 2048 #INP_OFFSET ( dbp , h , i ) \ 2049 (( db_dx_t )(( u_t8_t *)(( `P_INP ( dbp ,( h ))+ ( i )- (u_t8_*)(h))) ) 2066 $__db_vrfy_pem ( dbp , h , pgno , i , is_b , ags , himkp , off ) 2067 DB * dbp ; 2068 PAGE * h ; 2069 db_pgno_t pgno ; 2070 u_t32_t i ; 2071 is_b ; 2072 u_t32_t ags , * himkp , * off ; 2074 BKEYDATA * bk ; 2075 ENV * v ; 2076 db_dx_t * p , offt , n ; 2078 v = dbp ->env; 2080 `DB_ASSERT ( v , himkp ! NULL ); 2081 p = `P_INP ( dbp , h ); 2088 i( p + i >( db_dx_t *)(( u_t8_t *) h + * himkp )) { 2090 `EPRINT (( v , "Page %lu:ntriesisting %lu overlaps data", 2091 ( u_lg ) pgno , (u_lg) i )); 2092 ( DB_VERIFY_FATAL ); 2095 offt = p [ i ]; 2101 i( offt < `INP_OFFSET ( dbp , h , i || off> dbp-> pgsize ) { 2102 `EPRINT (( v , "Page %lu: bad offset %lutage index %lu", 2103 ( u_lg ) pgno , (u_lg) offt , (u_lg) i )); 2104 ( DB_VERIFY_BAD ); 2108 i( offt < * himkp ) 2109 * himkp = offt ; 2111 i( is_b ) { 2116 i( offt ! `DB_ALIGN (offt, ( u_t32_t ))) { 2117 `EPRINT (( v , 2119 ( u_lg ) pgno , (u_lg) offt , (u_lg) i )); 2120 ( DB_VERIFY_BAD ); 2126 bk = `GET_BKEYDATA ( dbp , h , i ); 2135 `B_TYPE ( bk -> ty )) { 2136 B_KEYDATA : 2137 n = bk ->len; 2139 B_DUPLICATE : 2140 B_OVERFLOW : 2141 n = BOVERFLOW_SIZE ; 2144 `EPRINT (( v , 2146 ( u_lg ) pgno , (u_lg) i )); 2147 ( DB_VERIFY_BAD ); 2150 i(( size_t )( offt + n > dbp -> pgsize ) { 2151 `EPRINT (( v , 2153 ( u_lg ) pgno , (u_lg) i )); 2154 ( DB_VERIFY_BAD ); 2158 i( off ! NULL ) 2159 * off = offt ; 2161 } } 2173 $__db_vrfy_duy ( dbp , vdp , pgno , ags ) 2174 DB * dbp ; 2175 VRFY_DBINFO * vdp ; 2176 db_pgno_t pgno ; 2177 u_t32_t ags ; 2179 ENV * v ; 2180 VRFY_PAGEINFO * p ; 2181 t , isbad ; 2183 v = dbp ->env; 2184 isbad = 0; 2186 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 2187 ( t ); 2189 p -> ty ) { 2190 P_IBTREE : 2191 P_LDUP : 2192 i(! `LF_ISSET ( DB_ST_DUPSORT )) { 2193 `EPRINT (( v , 2195 ( u_lg ) pgno )); 2196 isbad = 1; 2199 P_IRECNO : 2200 P_LRECNO : 2201 i( `LF_ISSET ( DB_ST_DUPSORT )) { 2202 `EPRINT (( v , 2204 ( u_lg ) pgno )); 2205 isbad = 1; 2214 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) 2215 `ZEROPG_ERR_PRINT ( v , pgno , "duplicateage"); 2217 `EPRINT (( v , 2219 ( u_lg ) pgno , (u_lg) p -> ty )); 2220 isbad = 1; 2224 i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 2225 ( t ); 2226 ( isbad =1 ? DB_VERIFY_BAD : 0); 2227 } } 2253 $__db_lvage_due ( dbp , vdp , pgno , key , hd , back , ags ) 2254 DB * dbp ; 2255 VRFY_DBINFO * vdp ; 2256 db_pgno_t pgno ; 2257 DBT * key ; 2258 * hd ; 2259 (* back `__P ((*, const *)); 2260 u_t32_t ags ; 2262 DB_MPOOLFILE * mpf ; 2263 PAGE * h ; 2264 t , t_t ; 2266 mpf = dbp ->mpf; 2268 i( pgno = PGNO_INVALID || ! `IS_VALID_PGNO (pgno)) 2269 ( DB_VERIFY_BAD ); 2272 i(( t = `__memp_fg ( mpf , & pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) 2273 ( t ); 2275 `TYPE ( h )) { 2276 P_IBTREE : 2277 P_IRECNO : 2278 i(( t = `__db_vrfy_comm ( dbp , vdp , h , pgno , ags )) != 0) 2279 r ; 2280 i(( t = `__bam_vrfy ( dbp , 2281 vdp , h , pgno , ags | DB_NOORDERCHK )) != 0 || 2282 ( t = `__db_lvage_mkde ( vdp , pgno )) != 0) 2283 r ; 2287 i(( t = `__bam_lvage_wkdupt ( dbp , vdp , h , key , 2288 hd , back , ags )) != 0) 2289 r ; 2291 P_LRECNO : 2292 P_LDUP : 2293 i(( t = `__bam_lvage ( dbp , 2294 vdp , pgno , `TYPE ( h ), h, hd , back , key , ags )) != 0) 2295 r ; 2298 t = DB_VERIFY_BAD ; 2299 r ; 2302 r : i(( t_t = `__memp_ut ( mpf , 2303 vdp -> thad_fo , h , dbp -> iܙy )!0 && t == 0) 2304 t = t_t ; 2305 ( t ); 2306 } } 2314 $__db_lvage_subdbs ( dbp , vdp , hd , back , ags , hassub ) 2315 DB * dbp ; 2316 VRFY_DBINFO * vdp ; 2317 * hd ; 2318 (* back `__P ((*, const *)); 2319 u_t32_t ags ; 2320 * hassub ; 2322 DB * pgt ; 2323 DBC * pgsc ; 2324 DB_MPOOLFILE * mpf ; 2325 ENV * v ; 2326 PAGE * h ; 2327 VRFY_PAGEINFO * p ; 2328 db_pgno_t p , ma_pgno ; 2329 t , t_t ; 2331 * hassub = 0; 2333 v = dbp ->env; 2334 pgt = NULL ; 2335 pgsc = NULL ; 2336 mpf = dbp ->mpf; 2337 h = NULL ; 2338 p = NULL ; 2339 t = 0; 2345 ma_pgno = PGNO_BASE_MD ; 2346 i(( t_t = `__memp_fg ( mpf , 2347 & ma_pgno , vdp -> thad_fo , NULL , 0, & h )) == 0 && 2348 ( t_t = `__db_vrfy_comm ( dbp , vdp , h , PGNO_BASE_MD , ags )) == 0 && 2349 ( t_t = `__db_lvage ( 2350 dbp , vdp , PGNO_BASE_MD , h , hd , back , ags )) == 0 && 2351 ( t_t = `__db_vrfy_ggefo ( vdp , 0, & p )) == 0) 2352 i( `F_ISSET ( p , VRFY_HAS_SUBDBS )) 2353 * hassub = 1; 2354 i( p ! NULL && 2355 ( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 2356 t = t_t ; 2357 i( h ! NULL ) { 2358 i(( t_t = `__memp_ut ( mpf , 2359 vdp -> thad_fo , h , dbp -> iܙy )!0 && t == 0) 2360 t = t_t ; 2361 h = NULL ; 2363 i( t !0 || * hassub == 0) 2364 ( t ); 2373 i(( t = `__db_vrfy_pgt ( v , 2374 vdp -> thad_fo , dbp -> pgsize , & pgt )) != 0) 2375 r ; 2376 i(( t = `__db_ma2pgt ( dbp , vdp , PGNO_BASE_MD , ags , pgt )) != 0) 2377 r ; 2378 i(( t = `__db_curs ( pgt , vdp -> thad_fo , NULL , & pgsc , 0)) != 0) 2379 r ; 2380 ( t_t = `__db_vrfy_pgt_xt ( pgsc , & p )) == 0) { 2381 i(( t_t = `__memp_fg ( mpf , 2382 & p , vdp -> thad_fo , NULL , 0, & h )) == 0 && 2383 ( t_t = `__db_vrfy_comm ( dbp , vdp , h , p , ags )) == 0 && 2384 ( t_t = 2385 `__bam_vrfy ( dbp , vdp , h , p , ags | DB_NOORDERCHK )) == 0) 2386 t_t = `__db_lvage_subdbpg ( 2387 dbp , vdp , h , hd , back , ags ); 2388 i( t_t !0 && t == 0) 2389 t = t_t ; 2390 i( h ! NULL ) { 2391 i(( t_t = `__memp_ut ( mpf , vdp -> thad_fo , 2392 h , dbp -> iܙy )!0 && t == 0) 2393 t = t_t ; 2394 h = NULL ; 2398 i( t_t ! DB_NOTFOUND && t == 0) 2399 t = t_t ; 2401 r : i( pgsc ! NULL && ( t_t = `__dbc_o gsc)!0 && t == 0) 2402 t = t_t ; 2403 i( pgt ! NULL && 2404 ( t_t = `__db_o ( pgt , NULL , 0)!0 && t ==0) 2405 t = t_t ; 2406 i( h ! NULL && 2407 ( t_t = `__memp_ut ( mpf , 2408 vdp -> thad_fo , h , dbp -> iܙy )!0 && t == 0) 2409 t = t_t ; 2410 ( t ); 2411 } } 2419 $__db_lvage_subdbpg ( dbp , vdp , ma , hd , back , ags ) 2420 DB * dbp ; 2421 VRFY_DBINFO * vdp ; 2422 PAGE * ma ; 2423 * hd ; 2424 (* back `__P ((*, const *)); 2425 u_t32_t ags ; 2427 BKEYDATA * bkkey , * bkda ; 2428 BOVERFLOW * bo ; 2429 DB * pgt ; 2430 DBC * pgsc ; 2431 DBT key ; 2432 DB_MPOOLFILE * mpf ; 2433 ENV * v ; 2434 PAGE * subpg ; 2435 db_dx_t i ; 2436 db_pgno_t ma_pgno , p ; 2437 t , r_t , t_t ; 2438 * subdbme ; 2440 v = dbp ->env; 2441 mpf = dbp ->mpf; 2442 t = r_t = 0; 2443 subdbme = NULL ; 2445 i(( t = `__db_vrfy_pgt ( v , 2446 vdp -> thad_fo , dbp -> pgsize , & pgt )) != 0) 2447 ( t ); 2453 i = 0; i < `NUM_ENT ( ma ); i + P_INDX ) { 2454 bkkey = `GET_BKEYDATA ( dbp , ma , i ); 2455 bkda = `GET_BKEYDATA ( dbp , ma , i + O_INDX ); 2458 i( `B_TYPE ( bkkey -> ty = B_OVERFLOW ) { 2463 bo = ( BOVERFLOW *) bkkey ; 2464 i(( t = `__db__goff ( dbp , vdp , 2465 bo -> pgno , & key , & subdbme , ags )) != 0) { 2466 r_t = DB_VERIFY_BAD ; 2471 i(( t = `__os_loc ( v , 2472 key . size + 1, & subdbme )) != 0) 2473 r ; 2474 subdbme [ key . size ] = '\0'; 2475 } i( `B_TYPE ( bkkey -> ty = B_KEYDATA ) { 2476 i(( t = `__os_loc ( v , 2477 bkkey -> n + 1, & subdbme )) != 0) 2478 r ; 2479 `memy ( subdbme , bkkey -> da , bkkey-> n ); 2480 subdbme [ bkkey -> n ] = '\0'; 2484 i( bkda -> n !( db_pgno_t )) { 2485 r_t = DB_VERIFY_BAD ; 2488 `memy (& ma_pgno , 2489 ( db_pgno_t *) bkda -> da , (db_pgno_t)); 2495 `DB_NTOHL_SWAP ( v , & ma_pgno ); 2498 i(! `IS_VALID_PGNO ( ma_pgno || ( t = `__memp_fg ( mpf , 2499 & ma_pgno , vdp -> thad_fo , NULL , 0, & subpg )) != 0) { 2500 r_t = t ; 2512 i(( t = 2513 `__db_vrfy_comm ( dbp , vdp , subpg , ma_pgno , ags )) != 0) { 2514 r_t = t ; 2515 () `__memp_ut ( mpf , 2516 vdp -> thad_fo , subpg , dbp -> iܙy ); 2519 `TYPE ( subpg )) { 2520 P_BTREEMETA : 2521 i(( t = `__bam_vrfy_ma ( dbp , 2522 vdp , ( BTMETA *) subpg , ma_pgno , ags )) != 0) { 2523 r_t = t ; 2524 () `__memp_ut ( mpf , 2525 vdp -> thad_fo , subpg , dbp -> iܙy ); 2529 P_HASHMETA : 2530 i(( t = `__ham_vrfy_ma ( dbp , 2531 vdp , ( HMETA *) subpg , ma_pgno , ags )) != 0) { 2532 r_t = t ; 2533 () `__memp_ut ( mpf , 2534 vdp -> thad_fo , subpg , dbp -> iܙy ); 2540 r_t = DB_VERIFY_BAD ; 2544 i(( t = `__memp_ut ( mpf , 2545 vdp -> thad_fo , subpg , dbp -> iܙy )) != 0) { 2546 r_t = t ; 2551 i(( t = `__db_hd ( dbp , 2552 subdbme , 0, 0, hd , back , vdp , ma_pgno )) != 0) 2553 r ; 2555 i(( t = `__db_ma2pgt ( dbp , vdp , ma_pgno , 2556 ags , pgt )) != 0) { 2557 r_t = t ; 2561 i(( t = `__db_curs ( pgt , 2562 vdp -> thad_fo , NULL , & pgsc , 0)) != 0) 2563 r ; 2564 ( t = `__db_vrfy_pgt_xt ( pgsc , & p )) == 0) { 2565 i(( t = `__memp_fg ( mpf , 2566 & p , vdp -> thad_fo , NULL , 0, & subpg )) != 0) { 2567 r_t = t ; 2570 i(( t = `__db_lvage ( dbp , vdp , p , subpg , 2571 hd , back , ags )) != 0) 2572 r_t = t ; 2573 i(( t = `__memp_ut ( mpf , 2574 vdp -> thad_fo , subpg , dbp -> iܙy )) != 0) 2575 r_t = t ; 2578 i( t ! DB_NOTFOUND ) 2579 r ; 2581 i(( t = `__dbc_o ( pgsc )) != 0) 2582 r ; 2583 i(( t = `__db_foٔ ( hd , back )) != 0) 2584 r ; 2586 r : i( subdbme ) 2587 `__os_ ( v , subdbme ); 2589 i(( t_t = `__db_o ( pgt , NULL , 0)) != 0) 2590 t = t_t ; 2592 i(( t_t = `__db_lvage_mkde ( vdp , `PGNO ( ma ))) != 0) 2593 ( t_t ); 2595 (( r_t !0?_: t ); 2596 } } 2605 $__db_ma2pgt ( dbp , vdp , pgno , ags , pgt ) 2606 DB * dbp ; 2607 VRFY_DBINFO * vdp ; 2608 db_pgno_t pgno ; 2609 u_t32_t ags ; 2610 DB * pgt ; 2612 DB_MPOOLFILE * mpf ; 2613 PAGE * h ; 2614 t , t_t ; 2616 mpf = dbp ->mpf; 2618 i(( t = `__memp_fg ( mpf , & pgno , vdp -> thad_fo , NULL , 0, & h )) != 0) 2619 ( t ); 2621 `TYPE ( h )) { 2622 P_BTREEMETA : 2623 t = `__bam_ma2pgt ( dbp , vdp , ( BTMETA *) h , ags , pgt ); 2625 P_HASHMETA : 2626 t = `__ham_ma2pgt ( dbp , vdp , ( HMETA *) h , ags , pgt ); 2629 t = DB_VERIFY_BAD ; 2633 i(( t_t = `__memp_ut ( mpf , vdp -> thad_fo , h , dbp -> iܙy )) != 0) 2634 ( t_t ); 2635 ( t ); 2636 } } 2643 u_t 2644 $__db_guesgsize ( v , fhp ) 2645 ENV * v ; 2646 DB_FH * fhp ; 2648 db_pgno_t i ; 2649 size_t ; 2650 u_t32_t guess ; 2651 u_t8_t ty ; 2653 guess = DB_MAX_PGSIZE ; gues> DB_MIN_PGSIZE ; guess >>= 1) { 2666 i = 1; i <= 3; i++) { 2667 i( `__os_ek ( 2668 v , fhp , i , guess , `SSZ ( DBMETA , ty )) != 0) 2670 i( `__os_ad ( v , 2671 fhp , & ty , 1, & ) != 0 ||r == 0) 2673 i( ty = P_INVALID ||y > P_PAGETYPE_MAX ) 2674 ( guess << 1); 2682 ( DB_DEF_IOSIZE ); 2683 } } @../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 (( ENV *)); 30 $__db_novrfy ( v ) 31 ENV * v ; 33 `__db_rx ( v , 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 -> v ); 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 -> v )); 86 } } 89 $__db_vrfy_puagefo ( v , vdp , p ) 90 ENV * v ; 91 VRFY_DBINFO * vdp ; 92 VRFY_PAGEINFO * p ; 94 `COMPQUIET ( vdp , NULL ); 95 `COMPQUIET ( p , NULL ); 96 ( `__db_novrfy ( v )); 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 (( ENV *, VRFY_PAGEINFO **)); 27 $__db_vrfy_dbfo_ ( v , , pgsize , vd ) 28 ENV * v ; 29 DB_THREAD_INFO * ; 30 u_t32_t pgsize ; 31 VRFY_DBINFO ** vd ; 33 DB * cdbp , * pgdbp , * pgt ; 34 VRFY_DBINFO * vdp ; 35 t ; 37 vdp = NULL ; 38 cdbp = pgdbp = pgt = NULL ; 40 i(( t = `__os_oc ( NULL , 1, ( VRFY_DBINFO ), & vdp )) != 0) 41 r ; 43 i(( t = `__db__ (& cdbp , v , 0)) != 0) 44 r ; 46 i(( t = `__db_t_ags ( cdbp , DB_DUP )) != 0) 47 r ; 49 i(( t = `__db_t_gesize ( cdbp , pgsize )) != 0) 50 r ; 53 i( `TXN_ON ( v ) && 54 ( t = `__db_t_ags ( cdbp , DB_TXN_NOT_DURABLE )) != 0) 55 r ; 56 i(( t = `__db_ݒ ( cdbp , , 57 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0600, PGNO_BASE_MD )) != 0) 58 r ; 60 i(( t = `__db__ (& pgdbp , v , 0)) != 0) 61 r ; 63 i(( t = `__db_t_gesize ( pgdbp , pgsize )) != 0) 64 r ; 67 i( `TXN_ON ( v ) && 68 ( t = `__db_t_ags ( pgdbp , DB_TXN_NOT_DURABLE )) != 0) 69 r ; 71 i(( t = `__db_ݒ ( pgdbp , , 72 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0600, PGNO_BASE_MD )) != 0) 73 r ; 75 i(( t = `__db_vrfy_pgt ( v , , pgsize , & pgt )) != 0) 76 r ; 78 `LIST_INIT (& vdp -> subdbs ); 79 `LIST_INIT (& vdp -> aivs ); 81 vdp -> cdbp = cdbp; 82 vdp -> pgdbp =gdbp; 83 vdp -> pgt =gset; 84 vdp -> thad_fo = ; 85 * vd = vdp ; 88 r : i( cdbp ! NULL ) 89 () `__db_o ( cdbp , NULL , 0); 90 i( pgdbp ! NULL ) 91 () `__db_o ( pgdbp , NULL , 0); 92 i( vdp ! NULL ) 93 `__os_ ( v , vdp ); 94 ( t ); 95 } } 105 $__db_vrfy_dbfo_deroy ( v , vdp ) 106 ENV * v ; 107 VRFY_DBINFO * vdp ; 109 VRFY_CHILDINFO * c ; 110 t_t , t ; 112 t = 0; 118 `LIST_FIRST (& vdp -> aivs ! NULL ) 119 i(( t_t = `__db_vrfy_puagefo ( 120 v , vdp , `LIST_FIRST (&vdp-> aivs ))) != 0) { 121 i( t == 0) 122 t = t_t ; 127 ( c = `LIST_FIRST (& vdp -> subdbs )! NULL ) { 128 `LIST_REMOVE ( c , lks ); 129 `__os_ ( NULL , c ); 132 i(( t_t = `__db_o ( vdp -> pgdbp , NULL , 0)) != 0) 133 t = t_t ; 135 i(( t_t = `__db_o ( vdp -> cdbp , NULL , 0)!0 && t == 0) 136 t = t_t ; 138 i(( t_t = `__db_o ( vdp -> pgt , NULL , 0)!0 && t == 0) 139 t = t_t ; 141 i( vdp -> exs ! NULL ) 142 `__os_ ( v , vdp -> exs ); 143 `__os_ ( v , vdp ); 144 ( t ); 145 } } 155 $__db_vrfy_ggefo ( vdp , pgno , pp ) 156 VRFY_DBINFO * vdp ; 157 db_pgno_t pgno ; 158 VRFY_PAGEINFO ** pp ; 160 DB * pgdbp ; 161 DBT key , da ; 162 ENV * v ; 163 VRFY_PAGEINFO * p ; 164 t ; 185 `LIST_FOREACH ( p , & vdp -> aivs , lks ) 186 i( p -> pgno ==gno) 187 found ; 190 pgdbp = vdp ->pgdbp; 191 v = pgdbp ->env; 192 `memt (& key , 0, ( DBT )); 193 `memt (& da , 0, ( DBT )); 194 `F_SET (& da , DB_DBT_MALLOC ); 195 key . da = & pgno ; 196 key . size = ( db_pgno_t ); 198 i(( t = `__db_g ( pgdbp , 199 vdp -> thad_fo , NULL , & key , & da , 0)) == 0) { 201 `DB_ASSERT ( v , da . size =( VRFY_PAGEINFO )); 202 p = da .data; 203 `LIST_INSERT_HEAD (& vdp -> aivs , p , lks ); 204 found ; 205 } i( t ! DB_NOTFOUND ) 206 ( t ); 209 i(( t = `__db_vrfy_gefo_ ( v , & p )) != 0) 210 ( t ); 212 `LIST_INSERT_HEAD (& vdp -> aivs , p , lks ); 213 found : p -> pi_fcou ++; 215 * pp = p ; 217 } } 227 $__db_vrfy_puagefo ( v , vdp , p ) 228 ENV * v ; 229 VRFY_DBINFO * vdp ; 230 VRFY_PAGEINFO * p ; 232 DB * pgdbp ; 233 DBT key , da ; 234 VRFY_PAGEINFO * p ; 235 t ; 237 i(-- p -> pi_fcou > 0) 240 pgdbp = vdp ->pgdbp; 241 `memt (& key , 0, ( DBT )); 242 `memt (& da , 0, ( DBT )); 244 key . da = & p -> pgno ; 245 key . size = ( db_pgno_t ); 246 da .d p ; 247 da . size = ( VRFY_PAGEINFO ); 249 i(( t = `__db_put ( pgdbp , 250 vdp -> thad_fo , NULL , & key , & da , 0)) != 0) 251 ( t ); 253 `LIST_FOREACH ( p , & vdp -> aivs , lks ) 254 i( p = p ) 256 i( p ! NULL ) 257 `LIST_REMOVE ( p , lks ); 259 `__os_u ( v , p ); 261 } } 273 $__db_vrfy_pgt ( v , , pgsize , db ) 274 ENV * v ; 275 DB_THREAD_INFO * ; 276 u_t32_t pgsize ; 277 DB ** db ; 279 DB * dbp ; 280 t ; 282 i(( t = `__db__ (& dbp , v , 0)) != 0) 283 ( t ); 284 i(( t = `__db_t_gesize ( dbp , pgsize )) != 0) 285 r ; 288 i( `TXN_ON ( v ) && 289 ( t = `__db_t_ags ( dbp , DB_TXN_NOT_DURABLE )) != 0) 290 r ; 291 i(( t = `__db_ݒ ( dbp , , 292 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0600, PGNO_BASE_MD )) == 0) 293 * db = dbp ; 295 r : () `__db_o ( dbp , NULL , 0); 297 ( t ); 298 } } 309 $__db_vrfy_pgt_g ( dbp , , pgno , vp ) 310 DB * dbp ; 311 DB_THREAD_INFO * ; 312 db_pgno_t pgno ; 313 * vp ; 315 DBT key , da ; 316 t , v ; 318 `memt (& key , 0, ( DBT )); 319 `memt (& da , 0, ( DBT )); 321 key . da = & pgno ; 322 key . size = ( db_pgno_t ); 323 da .d& v ; 324 da . un = (); 325 `F_SET (& da , DB_DBT_USERMEM ); 327 i(( t = `__db_g ( dbp , , NULL , & key , & da , 0)) == 0) { 328 `DB_ASSERT ( dbp -> v , da . size == ()); 329 } i( t = DB_NOTFOUND ) 330 v = 0; 332 ( t ); 334 * vp = v ; 336 } } 345 $__db_vrfy_pgt_c ( dbp , , pgno ) 346 DB * dbp ; 347 DB_THREAD_INFO * ; 348 db_pgno_t pgno ; 350 DBT key , da ; 351 t ; 352 v ; 354 `memt (& key , 0, ( DBT )); 355 `memt (& da , 0, ( DBT )); 357 v = 0; 359 key . da = & pgno ; 360 key . size = ( db_pgno_t ); 361 da .d& v ; 362 da . un = (); 363 `F_SET (& da , DB_DBT_USERMEM ); 365 i(( t = `__db_g ( dbp , , NULL , & key , & da , 0)) == 0) { 366 `DB_ASSERT ( dbp -> v , da . size == ()); 367 } i( t ! DB_NOTFOUND ) 368 ( t ); 370 da . size = (); 371 ++ v ; 373 ( `__db_put ( dbp , , NULL , & key , & da , 0)); 374 } } 384 $__db_vrfy_pgt_xt ( dbc , pgn ) 385 DBC * dbc ; 386 db_pgno_t * pgn ; 388 DBT key , da ; 389 db_pgno_t pgno ; 390 t ; 392 `memt (& key , 0, ( DBT )); 393 `memt (& da , 0, ( DBT )); 395 `F_SET (& da , DB_DBT_USERMEM | DB_DBT_PARTIAL ); 396 `F_SET (& key , DB_DBT_USERMEM ); 397 key . da = & pgno ; 398 key . un = ( db_pgno_t ); 400 i(( t = `__dbc_g ( dbc , & key , & da , DB_NEXT )) != 0) 401 ( t ); 403 `DB_ASSERT ( dbc -> v , key . size =( db_pgno_t )); 404 * pgn = pgno ; 407 } } 417 $__db_vrfy_chdcurs ( vdp , db ) 418 VRFY_DBINFO * vdp ; 419 DBC ** db ; 421 DB * cdbp ; 422 DBC * dbc ; 423 t ; 425 cdbp = vdp ->cdbp; 427 i(( t = `__db_curs ( cdbp , vdp -> thad_fo , NULL , & dbc , 0)) == 0) 428 * db = dbc ; 430 ( t ); 431 } } 441 $__db_vrfy_chdput ( vdp , pgno , c ) 442 VRFY_DBINFO * vdp ; 443 db_pgno_t pgno ; 444 VRFY_CHILDINFO * c ; 446 DB * cdbp ; 447 DBC * cc ; 448 DBT key , da ; 449 VRFY_CHILDINFO * dc ; 450 t ; 452 cdbp = vdp ->cdbp; 453 `memt (& key , 0, ( DBT )); 454 `memt (& da , 0, ( DBT )); 456 key . da = & pgno ; 457 key . size = ( db_pgno_t ); 473 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 474 ( t ); 475 t = `__db_vrfy_cct ( cc , pgno , & dc );et == 0; 476 t = `__db_vrfy_cext ( cc , & dc )) 477 i( dc -> pgno = c ->pgno) { 483 i(( t = `__db_vrfy_chdc ( cc , dc )) != 0 || 484 ( t = `__db_vrfy_cco ( cc )) != 0) 485 ( t ); 488 i( t ! DB_NOTFOUND ) { 489 () `__db_vrfy_cco ( cc ); 490 ( t ); 492 i(( t = `__db_vrfy_cco ( cc )) != 0) 493 ( t ); 495 c -> ft = 1; 496 da .d c ; 497 da . size = ( VRFY_CHILDINFO ); 499 ( `__db_put ( cdbp , vdp -> thad_fo , NULL , & key , & da , 0)); 500 } } 509 $__db_vrfy_chdc ( dbc , c ) 510 DBC * dbc ; 511 VRFY_CHILDINFO * c ; 513 DBT key , da ; 515 `memt (& key , 0, ( DBT )); 516 `memt (& da , 0, ( DBT )); 518 c -> ft ++; 519 da .d c ; 520 da . size = ( VRFY_CHILDINFO ); 522 ( `__dbc_put ( dbc , & key , & da , DB_CURRENT )); 523 } } 533 $__db_vrfy_cct ( dbc , pgno , cp ) 534 DBC * dbc ; 535 db_pgno_t pgno ; 536 VRFY_CHILDINFO ** cp ; 538 DBT key , da ; 539 t ; 541 `memt (& key , 0, ( DBT )); 542 `memt (& da , 0, ( DBT )); 544 key . da = & pgno ; 545 key . size = ( db_pgno_t ); 547 i(( t = `__dbc_g ( dbc , & key , & da , DB_SET )) != 0) 548 ( t ); 550 `DB_ASSERT ( dbc -> v , da . size =( VRFY_CHILDINFO )); 551 * cp = ( VRFY_CHILDINFO *) da .data; 554 } } 565 $__db_vrfy_cext ( dbc , cp ) 566 DBC * dbc ; 567 VRFY_CHILDINFO ** cp ; 569 DBT key , da ; 570 t ; 572 `memt (& key , 0, ( DBT )); 573 `memt (& da , 0, ( DBT )); 575 i(( t = `__dbc_g ( dbc , & key , & da , DB_NEXT_DUP )) != 0) 576 ( t ); 578 `DB_ASSERT ( dbc -> v , da . size =( VRFY_CHILDINFO )); 579 * cp = ( VRFY_CHILDINFO *) da .data; 582 } } 596 $__db_vrfy_cco ( dbc ) 597 DBC * dbc ; 600 ( `__dbc_o ( dbc )); 601 } } 608 $__db_vrfy_gefo_ ( v , pp ) 609 ENV * v ; 610 VRFY_PAGEINFO ** pp ; 612 VRFY_PAGEINFO * p ; 613 t ; 622 i(( t = `__os_umloc ( v , ( VRFY_PAGEINFO ), & p )) != 0) 623 ( t ); 624 `memt ( p , 0, ( VRFY_PAGEINFO )); 626 * pp = p ; 628 } } 637 $__db_lvage_ ( vdp ) 638 VRFY_DBINFO * vdp ; 640 DB * dbp ; 641 t ; 643 i(( t = `__db__ (& dbp , NULL , 0)) != 0) 644 ( t ); 646 i(( t = `__db_t_gesize ( dbp , 1024)) != 0) 647 r ; 649 i(( t = `__db_ݒ ( dbp , vdp -> thad_fo , 650 NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0, PGNO_BASE_MD )) != 0) 651 r ; 653 vdp -> lvage_ges = dbp ; 656 r : () `__db_o ( dbp , NULL , 0); 657 ( t ); 658 } } 666 $__db_lvage_deroy ( vdp ) 667 VRFY_DBINFO * vdp ; 669 () `__db_o ( vdp -> lvage_ges , NULL , 0); 670 } } 682 $__db_lvage_gxt ( vdp , db , pgn , pgtyp , sk_ovow ) 683 VRFY_DBINFO * vdp ; 684 DBC ** db ; 685 db_pgno_t * pgn ; 686 u_t32_t * pgtyp ; 687 sk_ovow ; 689 DB * dbp ; 690 DBT key , da ; 691 t ; 692 u_t32_t pgty ; 694 dbp = vdp -> lvage_ges ; 696 `memt (& key , 0, ( DBT )); 697 `memt (& da , 0, ( DBT )); 699 i(* db = NULL && 700 ( t = `__db_curs ( dbp , vdp -> thad_fo , NULL , db , 0)) != 0) 701 ( t ); 703 ( t = `__dbc_g (* db , & key , & da , DB_NEXT )) == 0) { 704 `DB_ASSERT ( dbp -> v , da . size =( u_t32_t )); 705 `memy (& pgty , da .data, (pgtype)); 707 i( sk_ovow && pgty = SALVAGE_OVERFLOW ) 710 i(( t = `__dbc_d (* db , 0)) != 0) 711 ( t ); 712 i( pgty ! SALVAGE_IGNORE ) { 713 `DB_ASSERT ( dbp -> v , key . size =( db_pgno_t )); 714 `DB_ASSERT ( dbp -> v , da . size =( u_t32_t )); 716 * pgn = *( db_pgno_t *) key . da ; 717 * pgtyp = *( u_t32_t *) da .data; 722 ( t ); 723 } } 736 $__db_lvage_isde ( vdp , pgno ) 737 VRFY_DBINFO * vdp ; 738 db_pgno_t pgno ; 740 DB * dbp ; 741 DBT key , da ; 742 t ; 743 u_t32_t cuty ; 745 dbp = vdp -> lvage_ges ; 747 `memt (& key , 0, ( DBT )); 748 `memt (& da , 0, ( DBT )); 750 cuty = SALVAGE_INVALID ; 751 da .d& cuty ; 752 da . un = ( u_t32_t ); 753 da . ags = DB_DBT_USERMEM ; 755 key . da = & pgno ; 756 key . size = ( db_pgno_t ); 764 i(( t = `__db_g ( dbp , 765 vdp -> thad_fo , NULL , & key , & da , 0)) == 0) { 771 i( cuty = SALVAGE_IGNORE ) 772 ( DB_KEYEXIST ); 775 } i( t ! DB_NOTFOUND ) 776 ( t ); 780 } } 789 $__db_lvage_mkde ( vdp , pgno ) 790 VRFY_DBINFO * vdp ; 791 db_pgno_t pgno ; 793 DB * dbp ; 794 DBT key , da ; 795 pgty , t ; 796 u_t32_t cuty ; 798 pgty = SALVAGE_IGNORE ; 799 dbp = vdp -> lvage_ges ; 801 `memt (& key , 0, ( DBT )); 802 `memt (& da , 0, ( DBT )); 804 cuty = SALVAGE_INVALID ; 805 da .d& cuty ; 806 da . un = ( u_t32_t ); 807 da . ags = DB_DBT_USERMEM ; 809 key . da = & pgno ; 810 key . size = ( db_pgno_t ); 825 i(( t = `__db_lvage_isde ( vdp , pgno )) != 0) 826 ( t = DB_KEYEXIST ? DB_VERIFY_BAD :et); 828 da . size = ( u_t32_t ); 829 da .d& pgty ; 831 ( `__db_put ( dbp , vdp -> thad_fo , NULL , & key , & da , 0)); 832 } } 843 $__db_lvage_mkeded ( vdp , pgno , pgty ) 844 VRFY_DBINFO * vdp ; 845 db_pgno_t pgno ; 846 u_t32_t pgty ; 848 DB * dbp ; 849 DBT key , da ; 850 t ; 852 dbp = vdp -> lvage_ges ; 854 `memt (& key , 0, ( DBT )); 855 `memt (& da , 0, ( DBT )); 857 key . da = & pgno ; 858 key . size = ( db_pgno_t ); 860 da .d& pgty ; 861 da . size = ( u_t32_t ); 868 t = `__db_put ( dbp , 869 vdp -> thad_fo , NULL , & key , & da , DB_NOOVERWRITE ); 870 ( t = DB_KEYEXIST ? 0 :et); 871 } } 881 $__db_vrfy_dbt ( db , checkt , efix , hd , back , is_o , vdp ) 882 DBT * db ; 883 checkt ; 884 cڡ * efix ; 885 * hd ; 886 (* back `__P ((*, const *)); 887 is_o ; 888 VRFY_DBINFO * vdp ; 890 i( vdp ! NULL ) { 899 i( `F_ISSET ( vdp , SALVAGE_PRINTHEADER )) { 900 () `__db_hd ( 901 NULL , "__OTHER__", 0, 0, hd , back , vdp , 0); 902 `F_CLR ( vdp , SALVAGE_PRINTHEADER ); 903 `F_SET ( vdp , SALVAGE_PRINTFOOTER ); 910 i( `F_ISSET ( vdp , SALVAGE_PRINTABLE )) 911 checkt = 1; 914 `__db_dbt ( db , checkt , efix , hd , back , is_o )); 915 } } @../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_ݒags ( 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", `__os_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", `__os_ime (& now , time_buf )); 177 i( ) 180 `__os_yld ( dbv -> v , 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 DB_OBJ * cur_db ; 100 ENV_OBJ * cur_v ; 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", `__os_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_yld ( dbv -> v , 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 #ifde HAVE_DB_185_H 24 ~<db_185.h > 26 ~<db.h > 30 shashhdr185 { 31 mmagic ; 32 mvsi ; 33 u_t32_t mld ; 34 mbsize ; 35 mbshi ; 36 mdsize ; 37 mssize ; 38 msshi ; 39 mov_pot ; 41 mϡ_d ; 42 mmax_buck ; 43 mhigh_mask ; 44 mlow_mask ; 46 mf ; 47 mnkeys ; 48 } tHASHHDR185 ; 49 shb185 { 50 HASHHDR185 mhdr ; 51 } tHTAB185 ; 54 shashhdr186 { 55 t32_t mmagic ; 56 t32_t mvsi ; 57 t32_t mld ; 58 t32_t mbsize ; 59 t32_t mbshi ; 60 t32_t mov_pot ; 61 t32_t mϡ_d ; 62 t32_t mmax_buck ; 63 t32_t mhigh_mask ; 64 t32_t mlow_mask ; 65 t32_t mf ; 66 t32_t mnkeys ; 67 t32_t mhdages ; 68 t32_t mh_chkey ; 69 #NCACHED 32 ) 70 t32_t mes [ NCACHED ]; 72 u_t16_t mbms [ NCACHED ]; 73 } tHASHHDR186 ; 74 shb186 { 75 * munud [2]; 76 HASHHDR186 mhdr ; 77 } tHTAB186 ; 79 s_gno { 80 u_t32_t mpgno ; 81 u_t16_t mdex ; 82 } tEPGNO ; 84 s_g { 85 * mge ; 86 u_t16_t mdex ; 87 } tEPG ; 89 s_curs { 90 EPGNO mpg ; 91 DBT mkey ; 92 u_t32_t mrcurs ; 94 #CURS_ACQUIRE 0x01 ) 95 #CURS_AFTER 0x02 ) 96 #CURS_BEFORE 0x04 ) 97 #CURS_INIT 0x08 ) 98 u_t8_t mags ; 99 } tCURSOR ; 102 s_b { 103 * mbt_mp ; 105 * mbt_dbp ; 107 EPG mbt_cur ; 108 * mbt_pd ; 110 CURSOR mbt_curs ; 112 EPGNO mbt_ack [50]; 113 EPGNO * mbt_ ; 115 DBT mbt_rkey ; 116 DBT mbt_rda ; 118 mbt_fd ; 120 u_t32_t mbt_ ; 121 u_t32_t mbt_psize ; 122 u_t16_t mbt_ovsize ; 123 mbt_ld ; 125 um { mNOT , mBACK , mFORWARD } mbt_d ; 126 EPGNO mbt_ϡ ; 129 (* mbt_cmp __P (( DBT *, DBT *)); 131 size_t (* bt_pfx __P (( DBT *, DBT *)); 133 (* mbt_ec __P (( _b *, u_t32_t )); 135 FILE * mbt_r ; 136 mbt_rfd ; 138 * mbt_cm ; 139 * mbt_sm ; 140 * mbt_em ; 141 size_t mbt_msize ; 143 u_t32_t mbt_ecs ; 144 size_t mbt_ ; 145 u_ch mbt_bv ; 151 #B_INMEM 0x00001 ) 152 #B_METADIRTY 0x00002 ) 153 #B_MODIFIED 0x00004 ) 154 #B_NEEDSWAP 0x00008 ) 155 #B_RDONLY 0x00010 ) 157 #B_NODUPS 0x00020 ) 158 #R_RECNO 0x00080 ) 160 #R_CLOSEFP 0x00040 ) 161 #R_EOF 0x00100 ) 162 #R_FIXLEN 0x00200 ) 163 #R_MEMMAPPED 0x00400 ) 164 #R_INMEM 0x00800 ) 165 #R_MODIFIED 0x01000 ) 166 #R_RDONLY 0x02000 ) 168 #B_DB_LOCK 0x04000 ) 169 #B_DB_SHMEM 0x08000 ) 170 #B_DB_TXN 0x10000 ) 171 u_t32_t mags ; 172 } tBTREE ; 174 db_b __P (( DB *, )); 175 db_hash __P (( DB *, )); 176 dbt_dump __P (( DBT *)); 177 dbt_t __P (( DBT *)); 178 ma __P ((, *[])); 179 uge __P (()); 182 $ma ( gc , gv ) 183 gc ; 184 * gv []; 186 * ݏrg ; 187 td ; 188 DB * dbp ; 189 DBT key , da ; 190 ch , pag , rv ; 192 pag = 0; 193 ( ch = `gt ( gc , gv , "f:p")! EOF ) 194 ch ) { 196 i( `eݒ ( ݏrg , "w", dout = NULL ) { 197 `rtf ( dr , "db_dump185: %s: %s\n", 198 ݏrg , ` ( o )); 199 ( EXIT_FAILURE ); 203 pag = 1; 207 ( `uge ()); 209 gc - td ; 210 gv + td ; 212 i( gc != 1) 213 ( `uge ()); 215 i(( dbp = `dbݒ ( gv [0], O_RDONLY , 0, DB_BTREE , NULL )) == NULL) { 216 i(( dbp = 217 `dbݒ ( gv [0], O_RDONLY , 0, DB_HASH , NULL )) == NULL) { 218 `rtf ( dr , 219 "db_dump185: %s: %s\n", gv [0], ` ( o )); 220 ( EXIT_FAILURE ); 222 `db_hash ( dbp , pag ); 224 `db_b ( dbp , pag ); 231 i( pag ) 232 !( rv = dbp -> `q (dbp, & key , & da , R_NEXT ))) { 233 `dbt_t (& key ); 234 `dbt_t (& da ); 237 !( rv = dbp -> `q (dbp, & key , & da , R_NEXT ))) { 238 `dbt_dump (& key ); 239 `dbt_dump (& da ); 242 i( rv == -1) { 243 `rtf ( dr , "db_dump185: seq: %s\n", ` ( o )); 244 ( EXIT_FAILURE ); 246 ( EXIT_SUCCESS ); 247 } } 254 $db_hash ( dbp , pag ) 255 DB * dbp ; 256 pag ; 258 HTAB185 * hash185p ; 259 HTAB186 * hash186p ; 261 `tf ("fm=%s\n", pag ? "print" : "bytevalue"); 262 `tf ("type=hash\n"); 265 hash185p = dbp -> ; 266 i( hash185p -> hdr . vsi > 2) { 267 hash186p = dbp -> ; 268 `tf ("h_f=%lu\n", ( u_lg ) hash186p -> hdr . f ); 269 i( hash186p -> hdr . ld != 0) 270 `tf ("db_ld=%lu\n", ( u_lg ) hash186p -> hdr . ld ); 271 `tf ("db_gesize=%lu\n", ( u_lg ) hash186p -> hdr . bsize ); 273 `tf ("h_f=%lu\n", ( u_lg ) hash185p -> hdr . f ); 274 i( hash185p -> hdr . ld != 0) 275 `tf ("db_ld=%lu\n", ( u_lg ) hash185p -> hdr . ld ); 276 `tf ("db_gesize=%lu\n", ( u_lg ) hash185p -> hdr . bsize ); 278 `tf ("HEADER=END\n"); 279 } } 286 $db_b ( dbp , pag ) 287 DB * dbp ; 288 pag ; 290 BTREE * b ; 292 b = dbp -> ; 294 `tf ("fm=%s\n", pag ? "print" : "bytevalue"); 295 `tf ("type=btree\n"); 296 #ifde NOT_AVAILABLE_IN_185 297 `tf ("bt_mkey=%lu\n", ( u_lg ) XXX ); 298 `tf ("bt_maxkey=%lu\n", ( u_lg ) XXX ); 300 i( b -> bt_ld != 0) 301 `tf ("db_ld=%lu\n", ( u_lg ) b -> bt_ld ); 302 `tf ("db_gesize=%lu\n", ( u_lg ) b -> bt_psize ); 303 i(!( b -> ags & B_NODUPS )) 304 `tf ("duplicates=1\n"); 305 `tf ("HEADER=END\n"); 306 } } 308 ghex [] = "0123456789abcdef"; 315 $dbt_dump ( db ) 316 DBT * db ; 318 size_t n ; 319 u_t8_t * p ; 321 n = db -> size , p = db-> da ;en--; ++p) 322 () `tf ("%c%c", 323 hex [(* p & 0xf0) >> 4], hex[*p & 0x0f]); 324 `tf ("\n"); 325 } } 332 $dbt_t ( db ) 333 DBT * db ; 335 size_t n ; 336 u_t8_t * p ; 338 n = db -> size , p = db-> da ;en--; ++p) 339 i( `irt (()* p )) { 340 i(* p == '\\') 341 () `tf ("\\"); 342 () `tf ("%c", * p ); 344 () `tf ("\\%c%c", 345 hex [(* p & 0xf0) >> 4], hex[*p & 0x0f]); 346 `tf ("\n"); 347 } } 354 $uge () 356 () `rtf ( dr , "usage: db_dump185 [-p] [-f file] db_file\n"); 357 ( EXIT_FAILURE ); 358 } } @../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 , `__os_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_MODE_700 ); 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 , `__os_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 ); 398 i(( t = dbv -> `t_rmed_d_mode (dbenv, "rwx------")) != 0) { 399 dbv -> `r (dbv, t , "DB_ENV->set_intermediate_dir_mode"); 407 i( log_dp ! NULL && *log_dirp != NULL && 408 ( t = dbv -> `t_lg_d (dbv, * log_dp )) != 0) { 409 dbv -> `r (dbv, t , "DB_ENV->t_lg_d: %s", * log_dp ); 414 i( sswd ! NULL && 415 ( t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES )) != 0) { 416 dbv -> `r (dbv, t , "DB_ENV->set_encrypt"); 420 which ) { 421 OPEN_ORIGINAL : 427 i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 428 ( t = DB_VERSION_MISMATCH || 429 ( t = dbv -> `ݒ (dbv, home , DB_CREATE | 430 DB_INIT_LOG | DB_INIT_TXN | DB_PRIVATE | DB_USE_ENVIRON , 432 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 435 i( log_dp ! NULL && *log_dirp == NULL) 436 () dbv -> `g_lg_d (dbv, (cڡ **) log_dp ); 437 i( da_dp ! NULL && *data_dirp == NULL) 438 () dbv -> `g_da_ds ( 439 dbv , (cڡ ***) da_dp ); 441 OPEN_HOT_BACKUP : 448 i(( t = 449 dbv -> `t_chesize (dbenv, 0, 64 * 1024 * 10, 0)) != 0) { 450 dbv -> `r (dbenv, 451 t , "DB_ENV->t_chesize: %s", home ); 454 i(( t = dbv -> `ݒ (dbv, home , DB_CREATE | 455 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE | 456 DB_RECOVER_FATAL | DB_USE_ENVIRON , 0)) != 0) { 457 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 463 * dbvp = dbv ; 465 } } 472 $backup_d_n ( dbv , backup_d , log_d , move_maxp , upde , vbo ) 473 DB_ENV * dbv ; 474 * backup_d , * log_d ; 475 * move_maxp , upde , vbo ; 477 ENV * v ; 478 t , ft , t , v ; 479 ** mes , * d , buf [ DB_MAXPATHLEN ], th [DB_MAXPATHLEN]; 481 v = dbv ->env; 484 i( log_d ! NULL ) { 485 i(( size_t ) `tf ( buf , (buf), "%s%c%s", 486 backup_d , PATH_SEPARATOR [0] , log_d >( buf )) { 487 dbv -> `rx (dbenv, "%s%c%s:athooong", 488 backup_d , PATH_SEPARATOR [0] , log_d ); 491 d = buf ; 493 d = backup_d ; 496 i(( t = `__os_dli ( v , d , 0, & mes , & ft )) != 0) { 497 i( log_d ! NULL && ! upde ) 499 dbv -> `r (dbv, t , "%s: deyd", d ); 502 t = ft ; --cnt >= 0;) { 506 i( `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) { 507 i( upde ) 511 v = `oi ( mes [ t ] + ( LFPREFIX ) - 1); 512 i(* move_maxp < v ) 513 * move_maxp = v ; 515 i(( size_t ) `tf ( th , (path), "%s%c%s", 516 d , PATH_SEPARATOR [0], mes [ t ]>( th )) { 517 dbv -> `rx (dbenv, "%s%c%s:athooong", 518 d , PATH_SEPARATOR [0], mes [ t ]); 521 i( vbo ) 522 `tf ("%s:emovg %s\n", ogme , th ); 523 i( `__os_uƚk ( v , th , 0) != 0) 527 `__os_d ( v , mes , ft ); 529 i( vbo && * move_maxp != 0) 530 `tf ("%s: highestumberedog fileemoved: %d\n", 531 ogme , * move_maxp ); 534 } } 541 $ad_da_d ( dbv , home , backup_d , d , vbo , db_cfig ) 542 DB_ENV * dbv ; 543 * home , * backup_d , * d ; 544 vbo , db_cfig ; 546 ENV * v ; 547 t , ft , t ; 548 * bd , ** mes ; 549 buf [ DB_MAXPATHLEN ], bbuf [DB_MAXPATHLEN]; 551 v = dbv ->env; 553 bd = backup_d ; 554 i( db_cfig && d ! home ) { 556 i(( size_t )( t = `tf ( bbuf , (bbuf), "%s%c%s%c", 557 backup_d , PATH_SEPARATOR [0], 558 d , PATH_SEPARATOR [0])>( buf )) { 559 dbv -> `rx (dbenv, "%s%c%s:athooong", 560 backup_d , PATH_SEPARATOR [0], d ); 563 bd = bbuf ; 566 i(( t = `__db_mkth ( v , bd )) != 0) { 567 dbv -> `r (dbv, t , "%s: cn ce", bd ); 571 bd [ t - 1] = '\0'; 574 i(( size_t ) `tf ( buf , (buf), 575 "%s%c%s", home , PATH_SEPARATOR [0], d >( buf )) { 576 dbv -> `rx (dbenv, "%s%c%s:athooong", 577 home , PATH_SEPARATOR [0], d ); 580 d = buf ; 583 i(( t = `__os_dli ( v , d , 0, & mes , & ft )) != 0) { 584 dbv -> `r (dbv, t , "%s: deyd", d ); 587 t = ft ; --cnt >= 0;) { 592 i(! `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1)) 594 i(! `cmp ( mes [ t ], 595 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1) && 596 `cmp ( mes [ t ], 597 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX) - 1)) 603 i(! db_cfig && 604 ! `cmp ( mes [ t ], "DB_CONFIG", ("DB_CONFIG"))) 608 i( `da_cy ( dbv , mes [ t ], d , bd , vbo ) != 0) 612 `__os_d ( v , mes , ft ); 615 } } 624 $ad_log_d ( dbv , home , backup_d , log_d , cy_mp , upde , vbo ) 625 DB_ENV * dbv ; 626 * home , * backup_d , * log_d ; 627 * cy_mp , upde , vbo ; 629 ENV * v ; 630 u_t32_t aag ; 631 t , t , v ; 632 ** beg , ** mes , * backupd , * logd ; 633 om [ DB_MAXPATHLEN ], to [DB_MAXPATHLEN]; 635 v = dbv ->env; 637 i( home ! NULL && log_d != NULL) { 638 i(( size_t ) `tf ( om , (from), "%s%c%s", 639 home , PATH_SEPARATOR [0], log_d >( om )) { 640 dbv -> `rx (dbenv, "%s%c%s:athooong", 641 home , PATH_SEPARATOR [0], log_d ); 644 logd = `rdup ( om ); 645 i(( size_t )( t = `tf ( to , (to), 646 "%s%c%s%c", backup_d , PATH_SEPARATOR [0], 647 log_d , PATH_SEPARATOR [0])>( to )) { 648 dbv -> `rx (dbenv, "%s%c%s:athooong", 649 backup_d , PATH_SEPARATOR [0], log_d ); 652 backupd = `rdup ( to ); 655 i(( t = `__db_mkth ( v , backupd )) != 0) { 656 dbv -> `r (dbv, t , "%s: cn ce", backupd ); 660 backupd [ t - 1] = '\0'; 662 backupd = backup_d ; 663 logd = log_d ; 666 aga : aag = DB_ARCH_LOG ; 672 i( upde ) 673 aag = 0; 675 i(( t = dbv -> `log_chive (dbv, & mes , aag )) != 0) { 676 dbv -> `r (dbv, t , "DB_ENV->log_archive"); 679 i( mes = NULL ) 680 de ; 681 beg = mes ; 682 ; * mes ! NULL ;ames++) { 684 v = `oi (* mes + ( LFPREFIX ) - 1); 685 i(* cy_mp =0 || *cy_m> v ) 686 * cy_mp = v ; 688 i(( size_t ) `tf ( om , (from), "%s%c%s", 689 logd , PATH_SEPARATOR [0], * mes >( om )) { 690 dbv -> `rx (dbenv, "%s%c%s:athooong", 691 logd , PATH_SEPARATOR [0], * mes ); 703 i( upde ) { 704 i(( size_t ) `tf ( to , (to), "%s%c%s", 705 backupd , PATH_SEPARATOR [0], * mes >( to )) { 706 dbv -> `rx (dbenv, "%s%c%s:athooong", 707 backupd , PATH_SEPARATOR [0], * mes ); 710 i( `__os_me ( v , om , to , 1) == 0) { 711 i( vbo ) 712 `tf ("%s: moving %so %s\n", 713 ogme , om , to ); 719 i( `da_cy ( dbv , * mes , logd , backupd , vbo ) != 0) 722 i( upde ) { 723 i( vbo ) 724 `tf ("%s:emovg %s\n", ogme , om ); 725 i(( t = `__os_uƚk ( v , om , 0)) != 0) { 726 dbv -> `r (dbv, t , 727 "uƚk o%ed", om ); 734 ` ( beg ); 735 de : i( upde ) { 736 upde = 0; 737 aga ; 740 i( vbo && * cy_mp != 0) 741 `tf ("%s:owestumberedog file copied: %d\n", 742 ogme , * cy_mp ); 743 i( logd ! log_d ) 744 ` ( logd ); 745 i( backupd ! backup_d ) 746 ` ( backupd ); 749 } } 756 $da_cy ( dbv , fe , om_d , to_d , vbo ) 757 DB_ENV * dbv ; 758 * fe , * om_d , * to_d ; 759 vbo ; 761 DB_FH * rfhp , * wfhp ; 762 ENV * v ; 763 size_t , nw ; 764 t ; 765 * buf ; 767 rfhp = wfhp = NULL ; 768 v = dbv ->env; 769 t = 0; 771 i( vbo ) 772 `tf ("%s: cyg %s%c%t%s%c%s\n", ogme , om_d , 773 PATH_SEPARATOR [0], fe , to_d , PATH_SEPARATOR[0], file); 785 i(( buf = `mloc ( MEGABYTE )= NULL ) { 786 dbv -> `r (dbenv, 787 o , "%lu buf㸮loti", ( u_lg ) MEGABYTE ); 792 i( `tf ( buf , MEGABYTE , "%s%c%s", 793 om_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 794 dbv -> `rx (dbenv, 795 "%s%c%s:holg", om_d , PATH_SEPARATOR [0], fe ); 796 r ; 798 i(( t = `__os_ݒ ( v , buf , 0, DB_OSO_RDONLY , 0, & rfhp )) != 0) { 799 dbv -> `r (dbv, t , "%s", buf ); 800 r ; 804 i( `tf ( buf , MEGABYTE , "%s%c%s", 805 to_d , PATH_SEPARATOR [0], fe > MEGABYTE ) { 806 dbv -> `rx (dbenv, 807 "%s%c%s:holg", to_d , PATH_SEPARATOR [0], fe ); 808 r ; 810 i(( t = `__os_ݒ ( v , buf , 0, 811 DB_OSO_CREATE | DB_OSO_TRUNC , DB_MODE_600 , & wfhp )) != 0) { 812 dbv -> `r (dbv, t , "%s", buf ); 813 r ; 817 ( t = `__os_ad ( v , rfhp , buf , MEGABYTE , & )) == 0 && 818 > 0) 819 i(( t = `__os_wre ( v , wfhp , buf , , & nw )) != 0) 823 r : t = 1; 825 i( buf ! NULL ) 826 ` ( buf ); 828 i( rfhp ! NULL && `__os_ohd ( v ,fhp) != 0) 829 t = 1; 832 i( wfhp ! NULL ) { 833 i( `__os_fsync ( v , wfhp ) != 0) 834 t = 1; 835 i( `__os_ohd ( v , wfhp ) != 0) 836 t = 1; 838 ( t ); 839 } } 842 $uge () 844 () `rtf ( dr , "uge: %[-cDuVv]\n\t%s\n", ogme , 846 ( EXIT_FAILURE ); 847 } } 850 $vsi_check () 852 v_maj , v_m , v_tch ; 855 () `db_vsi (& v_maj , & v_m , & v_tch ); 856 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 857 `rtf ( dr , 859 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 860 v_maj , v_m ); 861 ( EXIT_FAILURE ); 864 } } @../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 -> v ? DB_AUTO_COMMIT : 0), 399 DB_MODE_666 )) != 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 -> v ) && 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 i( txn ! NULL && ( t =xn-> `comm (txn, 0)) != 0) { 528 txn = NULL ; 529 r ; 533 r : rv = 1; 534 i( txn ! NULL ) 535 () txn -> `abt (txn); 539 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) { 540 dbv -> `r (dbv, t , "DB->close"); 541 rv = 1; 544 i( `G ( hdrbuf ! NULL ) 545 ` ( `G ( hdrbuf )); 546 `G ( hdrbuf NULL ; 548 i( subdb ! NULL ) 549 ` ( subdb ); 550 i( dbty ! DB_RECNO && dbty ! DB_QUEUE && key . da ! NULL ) 551 ` ( key . da ); 552 i( rkey . da ! NULL ) 553 ` ( rkey . da ); 554 ` ( da .data); 556 ( rv ); 557 } } 564 $v_ ( dbvp , ldg ) 565 DB_ENV ** dbvp ; 566 LDG * ldg ; 568 DB_ENV * dbv ; 569 t ; 571 i(( t = `db_v_ ( dbvp , 0)) != 0) { 572 `rtf ( dr , 573 "%s: db_v_: %s\n", ldg -> ogme , `db_ ( t )); 574 ( t ); 576 dbv = * dbvp ; 577 dbv -> `t_rfe (dbv, dr ); 578 dbv -> `t_fx (dbv, ldg -> ogme ); 579 i( ldg -> sswd ! NULL && ( t = dbv -> `t_y (dbenv, 580 ldg -> sswd , DB_ENCRYPT_AES )) != 0) { 581 dbv -> `r (dbv, t , "set_passwd"); 582 ( t ); 584 i(( t = `db_ ( dbv , ldg -> home ,dg-> che , &ldg-> ive )) != 0) 585 ( t ); 586 dbv -> p_ive = ldg ; 589 } } 596 $db_ ( dbv , home , che , is_ive ) 597 DB_ENV * dbv ; 598 * home ; 599 u_t32_t che ; 600 * is_ive ; 602 u_t32_t ags ; 603 t ; 605 * is_ive = 0; 607 ags = DB_USE_ENVIRON | 608 DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN ; 609 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 611 i( t = DB_VERSION_MISMATCH ) 612 r ; 626 `LF_CLR ( DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN ); 627 `LF_SET ( DB_CREATE | DB_PRIVATE ); 628 * is_ive = 1; 629 i(( t = dbv -> `t_chesize (dbv, 0, che , 1)) != 0) { 630 dbv -> `r (dbv, t , "set_cachesize"); 633 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) == 0) 637 r : dbv -> `r (dbv, t , "DB_ENV->open"); 639 } } 641 #FLAG ( me , vue , keywd , ag ) \ 642 i( `rcmp ( me , keywd ) == 0) { \ 643 * vue ) { \ 645 i(( t = dbp -> `t_ags (dbp, ag )) != 0) { \ 646 dbp -> `r (dbp, t , "%s: set_flags: %s", \ 647 `G ( ogme ), me ); \ 648 r ; \ 654 `badnum ( dbv ); \ 655 r ; \ 658 } ) 659 #NUMBER ( me , vue , keywd , func , t ) \ 660 i( `rcmp ( me , keywd ) == 0) { \ 661 i(( t = `__db_glg ( dbv , \ 662 NULL , vue , 0, LONG_MAX , & v )) != 0 || \ 663 ( t = dbp -> `func (dbp, ( t ) v )) != 0) \ 664 m ; \ 666 } ) 667 #STRING ( me , vue , keywd , func ) \ 668 i( `rcmp ( me , keywd ) == 0) { \ 669 i(( t = dbp -> `func (dbp, vue [0])) != 0) \ 670 m ; \ 672 } ) 679 #CONFIGURATION_LIST_COMPARE \ 680 `NUMBER ( me , vue , "bt_mkey", t_bt_mkey , u_t32_t ); \ 681 `FLAG ( me , vue , "chksum", DB_CHKSUM ); \ 682 `NUMBER ( me , vue , "db_ld", t_ld , ); \ 683 `NUMBER ( me , vue , "db_gesize", t_gesize , u_t32_t ); \ 684 `FLAG ( me , vue , "duis", DB_DUP ); \ 685 `FLAG ( me , vue , "dupst", DB_DUPSORT ); \ 686 `NUMBER ( me , vue , "exsize", t_q_exsize , u_t32_t ); \ 687 `NUMBER ( me , vue , "h_f", t_h_f , u_t32_t ); \ 688 `NUMBER ( me , vue , "h_m", t_h_m , u_t32_t ); \ 689 `NUMBER ( me , vue , "_n", t__n , u_t32_t ); \ 690 `STRING ( me , vue , "_d", t__d ); \ 691 `FLAG ( me , vue , "um", DB_RECNUM ); \ 692 `FLAG ( me , vue , "numb", DB_RENUMBER ) ) 699 $cfigu ( dbv , dbp , p , subdbp , key ) 700 DB_ENV * dbv ; 701 DB * dbp ; 702 ** p , ** subdbp ; 703 * key ; 705 v ; 706 t , vech ; 707 * me , * vue ; 709 ; ( me = * p ! NULL ; *-- vue = vech , ++clp) { 710 i(( vue = `rchr ( me , '=')= NULL ) { 711 dbp -> `rx (dbp, 715 vech = * vue ; 716 * vue ++ = '\0'; 718 i( `rcmp ( me , "database") == 0 || 719 `rcmp ( me , "subdatabase") == 0) { 720 i(* subdbp ! NULL ) 721 ` (* subdbp ); 722 i((* subdbp = `rdup ( vue )= NULL ) { 723 dbp -> `r (dbp, ENOMEM , NULL ); 728 i( `rcmp ( me , "keys") == 0) { 729 i( `rcmp ( vue , "1") == 0) 730 * key = 1; 731 i( `rcmp ( vue , "0") == 0) 732 * key = 0; 734 `badnum ( dbv ); 740 CONFIGURATION_LIST_COMPARE ; 742 dbp -> `rx (dbp, 743 "unknowcommd-lcfiguti keywd \"%s\"", me ); 748 m : 749 dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 750 r : (1); 751 } } 758 $rhd ( dbv , dbp , dbtyp , subdbp , check , key ) 759 DB_ENV * dbv ; 760 DB * dbp ; 761 DBTYPE * dbtyp ; 762 ** subdbp ; 763 * check , * key ; 765 size_t bu , l , t ; 766 v ; 767 ch , f , hdr , t ; 768 * buf , * me , * p , * vue ; 770 * dbtyp = DB_UNKNOWN ; 771 * check = 0; 772 me = NULL ; 778 bu = 4096; 779 i( `G ( hdrbuf = NULL ) { 780 hdr = 0; 781 i(( buf = `mloc ( bu )= NULL ) 782 memr ; 783 `G ( hdrbuf buf ; 784 `G ( igle G( lo ); 786 hdr = 1; 787 buf = `G ( hdrbuf ); 788 `G ( lo G( igle ); 791 t = 0; 792 f = 1;; first = 0) { 793 ++ `G ( lo ); 796 l = 0; 797 buf = & `G ( hdrbuf )[ t ]; 798 i( hdr == 0) { 800 i(( ch = `gch ()= EOF ) { 801 i(! f || ` ( d )) 802 badfmt ; 803 `G ( dofe ) = 1; 810 i( l + t = bu ) { 811 `G ( hdrbuf ) = 812 `loc ( `G ( hdrbuf ), bu *= 2); 813 i( `G ( hdrbuf = NULL ) 814 memr ; 815 buf = & `G ( hdrbuf )[ t ]; 818 i( ch == '\n') 821 buf [ l ++] = ch ; 823 i( `G ( dofe ) == 1) 825 buf [ l ++] = '\0'; 827 l = ` ( buf ) + 1; 828 t + l ; 830 i( me ! NULL ) { 831 ` ( me ); 832 me = NULL ; 835 i(( me = `rdup ( buf )= NULL ) 836 memr ; 837 i(( p = `rchr ( me , '=')= NULL ) 838 badfmt ; 839 * p ++ = '\0'; 841 vue = p --; 843 i( me [0] == '\0') 844 badfmt ; 853 i( `rcmp ( me , "database") == 0 || 854 `rcmp ( me , "subdatabase") == 0) { 855 i(( t = `cvb ( dbv , vue , subdbp )) != 0) { 856 dbp -> `r (dbp, t , "erroreading dbame"); 857 r ; 863 i( vue [0] == '\0') 864 badfmt ; 866 i( `rcmp ( me , "HEADER") == 0) 868 i( `rcmp ( me , "VERSION") == 0) { 873 `G ( vsi `oi ( vue ); 875 i( `G ( vsi ) > 3) { 876 dbp -> `rx (dbp, 878 `G ( lo ), G( vsi )); 879 r ; 883 i( `rcmp ( me , "format") == 0) { 884 i( `rcmp ( vue , "bytevalue") == 0) { 885 * check = 0; 888 i( `rcmp ( vue , "print") == 0) { 889 * check = 1; 892 badfmt ; 894 i( `rcmp ( me , "type") == 0) { 895 i( `rcmp ( vue , "btree") == 0) { 896 * dbtyp = DB_BTREE ; 899 i( `rcmp ( vue , "hash") == 0) { 900 * dbtyp = DB_HASH ; 903 i( `rcmp ( vue , "recno") == 0) { 904 * dbtyp = DB_RECNO ; 907 i( `rcmp ( vue , "queue") == 0) { 908 * dbtyp = DB_QUEUE ; 911 dbp -> `rx (dbp, "l%lu: unknowty", `G ( lo )); 912 r ; 914 i( `rcmp ( me , "keys") == 0) { 915 i( `rcmp ( vue , "1") == 0) 916 * key = 1; 917 i( `rcmp ( vue , "0") == 0) 918 * key = 0; 920 `badnum ( dbv ); 921 r ; 926 CONFIGURATION_LIST_COMPARE ; 928 dbp -> `rx (dbp, 930 me ); 931 r ; 933 t = 0; 936 m : dbp -> `r (dbp, t , "%s: %s=%s", `G ( ogme ), me , vue ); 937 t = 1; 940 badfmt : dbp -> `rx (dbp, "l%lu: uxed fm", `G ( lo )); 941 t = 1; 944 memr : dbp -> `rx (dbp, "unableollocate memory"); 945 r : t = 1; 947 i( me ! NULL ) 948 ` ( me ); 949 ( t ); 950 } } 959 #DIGITIZE ( e , v1 , v2 ) { \ 960 _v1 , _v2 ; \ 961 _v1 = ( v1 ); \ 962 _v2 = ( v2 ); \ 963 i(( _v1 > 'f' || ( _v2 ) > 'f') \ 964 ( `badd ( dbv )); \ 965 ( e ) = \ 966 (( _v1 ) == '0' ? 0 : \ 967 (( _v1 ) == '1' ? 1 : \ 968 (( _v1 ) == '2' ? 2 : \ 969 (( _v1 ) == '3' ? 3 : \ 970 (( _v1 ) == '4' ? 4 : \ 971 (( _v1 ) == '5' ? 5 : \ 972 (( _v1 ) == '6' ? 6 : \ 973 (( _v1 ) == '7' ? 7 : \ 974 (( _v1 ) == '8' ? 8 : \ 975 (( _v1 ) == '9' ? 9 : \ 976 (( _v1 ) == 'a' ? 10 : \ 977 (( _v1 ) == 'b' ? 11 : \ 978 (( _v1 ) == 'c' ? 12 : \ 979 (( _v1 ) == 'd' ? 13 : \ 980 (( _v1 ) == 'e' ? 14 : 15))))))))))))))) << 4 | \ 981 (( _v2 ) == '0' ? 0 : \ 982 (( _v2 ) == '1' ? 1 : \ 983 (( _v2 ) == '2' ? 2 : \ 984 (( _v2 ) == '3' ? 3 : \ 985 (( _v2 ) == '4' ? 4 : \ 986 (( _v2 ) == '5' ? 5 : \ 987 (( _v2 ) == '6' ? 6 : \ 988 (( _v2 ) == '7' ? 7 : \ 989 (( _v2 ) == '8' ? 8 : \ 990 (( _v2 ) == '9' ? 9 : \ 991 (( _v2 ) == 'a' ? 10 : \ 992 (( _v2 ) == 'b' ? 11 : \ 993 (( _v2 ) == 'c' ? 12 : \ 994 (( _v2 ) == 'd' ? 13 : \ 995 (( _v2 ) == 'e' ? 14 : 15))))))))))))))); \ 996 } ) 1012 $cvb ( dbv , r , out ) 1013 DB_ENV * dbv ; 1014 * r , ** out ; 1016 * outr ; 1025 i(( outr = `mloc ( ` ( r + 1)= NULL ) 1026 ( ENOMEM ); 1028 * out = outr ; 1030 ; * r != '\0'; instr++) 1031 i(* r == '\\') { 1032 i(*++ r == '\\') { 1033 * outr ++ = '\\'; 1036 `DIGITIZE (* outr ++, * r , *++instr); 1038 * outr ++ = * r ; 1040 * outr = '\0'; 1043 } } 1050 $dbt_rt ( dbv , db ) 1051 DB_ENV * dbv ; 1052 DBT * db ; 1054 u_t32_t n ; 1055 u_t8_t * p ; 1056 c1 , c2 , es , f ; 1057 buf [32]; 1059 ++ `G ( lo ); 1061 f = 1; 1062 es = 0; 1063 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1064 i( c1 = EOF ) { 1065 i( n == 0) { 1066 `G ( dofe G( doda ) = 1; 1069 ( `badd ( dbv )); 1071 i( f ) { 1072 f = 0; 1073 i( `G ( vsi ) > 1) { 1074 i( c1 != ' ') { 1075 buf [0] = c1 ; 1076 i( `fgs ( buf + 1, 1077 ( buf - 1, d = NULL || 1078 `rcmp ( buf , "DATA=END\n") != 0) 1079 ( `badd ( dbv )); 1080 `G ( doda ) = 1; 1086 i( es ) { 1087 i( c1 != '\\') { 1088 i(( c2 = `gch ()= EOF ) 1089 ( `badd ( dbv )); 1090 `DIGITIZE ( c1 , c1, c2 ); 1092 es = 0; 1094 i( c1 == '\\') { 1095 es = 1; 1098 i( n > db -> un - 10) { 1099 db -> un *= 2; 1100 i(( db -> da = 1101 `loc ( db -> da , db-> un )= NULL ) { 1102 dbv -> `r (dbv, ENOMEM , NULL ); 1105 p = ( u_t8_t *) db -> da + n ; 1107 ++ n ; 1108 * p ++ = c1 ; 1110 db -> size = n ; 1113 } } 1120 $dbt_rdump ( dbv , db ) 1121 DB_ENV * dbv ; 1122 DBT * db ; 1124 u_t32_t n ; 1125 u_t8_t * p ; 1126 c1 , c2 , f ; 1127 buf [32]; 1129 ++ `G ( lo ); 1131 f = 1; 1132 p = db -> da , n = 0; ( c1 = `gch ()) != '\n';) { 1133 i( c1 = EOF ) { 1134 i( n == 0) { 1135 `G ( dofe G( doda ) = 1; 1138 ( `badd ( dbv )); 1140 i( f ) { 1141 f = 0; 1142 i( `G ( vsi ) > 1) { 1143 i( c1 != ' ') { 1144 buf [0] = c1 ; 1145 i( `fgs ( buf + 1, 1146 ( buf - 1, d = NULL || 1147 `rcmp ( buf , "DATA=END\n") != 0) 1148 ( `badd ( dbv )); 1149 `G ( doda ) = 1; 1155 i(( c2 = `gch ()= EOF ) 1156 ( `badd ( dbv )); 1157 i( n > db -> un - 10) { 1158 db -> un *= 2; 1159 i(( db -> da = 1160 `loc ( db -> da , db-> un )= NULL ) { 1161 dbv -> `r (dbv, ENOMEM , NULL ); 1164 p = ( u_t8_t *) db -> da + n ; 1166 ++ n ; 1167 `DIGITIZE (* p ++, c1 , c2 ); 1169 db -> size = n ; 1172 } } 1179 $dbt_eo ( dbv , db , ishex ) 1180 DB_ENV * dbv ; 1181 DBT * db ; 1182 ishex ; 1184 buf [32], * p , * q ; 1185 u_lg o ; 1187 ++ `G ( lo ); 1189 i( `fgs ( buf , (buf), d = NULL ) { 1190 `G ( dofe G( doda ) = 1; 1194 i( `rcmp ( buf , "DATA=END\n") == 0) { 1195 `G ( doda ) = 1; 1199 i( buf [0] != ' ') 1200 r ; 1206 i( ishex ) { 1207 p = q = buf + 1; *q != '\0' && *q != '\n';) { 1215 i(* q ++ != '3') 1216 r ; 1217 i(* q == '\n' || *q == '\0') 1218 r ; 1219 * p ++ = * q ++; 1221 * p = '\0'; 1224 i( `__db_gulg ( dbv , `G ( ogme ), buf + 1, 0, 0, & o )) 1225 r ; 1227 *(( db_o_t *) db -> da o ; 1228 db -> size = ( db_o_t ); 1231 r : ( `badd ( dbv )); 1232 } } 1235 $dbt_to_o ( dbv , dbt , ) 1236 DB_ENV * dbv ; 1237 DBT * dbt ; 1238 db_o_t * ; 1240 buf [32]; 1242 `memy ( buf , dbt -> da , dbt-> size ); 1243 buf [ dbt -> size ] = '\0'; 1245 ( `__db_gulg ( dbv , `G ( ogme ), buf , 0, 0, ( u_lg *) )); 1246 } } 1253 $badnum ( dbv ) 1254 DB_ENV * dbv ; 1256 dbv -> `rx (dbenv, 1258 } } 1265 $badd ( dbv ) 1266 DB_ENV * dbv ; 1268 dbv -> `rx (dbenv, "unexpectednd of input data or key/dataair"); 1270 } } 1277 $uge () 1279 () `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 1282 () `rtf ( dr , "usage: %s %s\n", 1283 ogme , "-rsn | fileid [-h home] [-Password] db_file"); 1284 ( EXIT_FAILURE ); 1285 } } 1288 $vsi_check () 1290 v_maj , v_m , v_tch ; 1293 () `db_vsi (& v_maj , & v_m , & v_tch ); 1294 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 1295 `rtf ( dr , 1297 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 1298 v_maj , v_m ); 1299 ( EXIT_FAILURE ); 1302 } } @../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_t_p_cd __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 26 v__t __P (( ENV *, u_t32_t , DB_DISTAB *)); 27 v__t_42 __P (( ENV *, DB_DISTAB *)); 28 v__t_43 __P (( ENV *, DB_DISTAB *)); 29 v__t_45 __P (( ENV *, DB_DISTAB *)); 30 l_g __P ((*, DB_LSN *)); 31 ma __P ((, *[])); 32 ݒ_p_db __P (( DB_ENV *, DB **, DBC **)); 33 uge __P (()); 34 vsi_check __P (()); 36 cڡ * gogme ; 39 $ma ( gc , gv ) 40 gc ; 41 * gv []; 43 * ݏrg ; 44 td ; 45 DB * dbp ; 46 DBC * dbc ; 47 DBT da , keydbt ; 48 DB_DISTAB db ; 49 DB_ENV * dbv ; 50 DB_LOGC * logc ; 51 DB_LSN key , t , , v ; 52 ENV * v ; 53 u_t32_t logcag , wvsi , vsi ; 54 ch , cmp , exv , nag , rag , t , pag ; 55 * home , * sswd ; 57 i(( ogme = `__db_h ( gv [0])= NULL ) 58 ogme = gv [0]; 60 ++ ogme ; 62 i(( t = `vsi_check ()) != 0) 63 ( t ); 65 dbp = NULL ; 66 dbc = NULL ; 67 dbv = NULL ; 68 logc = NULL ; 69 `ZERO_LSN ( t ); 70 `ZERO_LSN ( ); 71 exv = nag = rag = pag = 0; 72 home = sswd = NULL ; 74 `memt (& db , 0, (dtab)); 76 ( ch = `gt ( gc , gv , "b:e:h:NP:rRV")! EOF ) 77 ch ) { 80 i( `l_g ( ݏrg , & t )) 81 ( `uge ()); 85 i( `l_g ( ݏrg , & )) 86 ( `uge ()); 89 home = ݏrg ; 92 nag = 1; 95 sswd = `rdup ( ݏrg ); 96 `memt ( ݏrg , 0, ` (optarg)); 97 i( sswd = NULL ) { 98 `rtf ( dr , "%s: strdup: %s\n", 99 ogme , ` ( o )); 100 ( EXIT_FAILURE ); 104 rag = 1; 107 pag = 1; 110 `tf ("%s\n", `db_vsi ( NULL , NULL, NULL)); 111 ( EXIT_SUCCESS ); 114 ( `uge ()); 116 gc - td ; 117 gv + td ; 119 i( gc > 0) 120 ( `uge ()); 123 `__db_ut_sig (); 129 i(( t = `db_v_ (& dbv , 0)) != 0) { 130 `rtf ( dr , 131 "%s: db_v_: %s\n", ogme , `db_ ( t )); 132 shutdown ; 135 dbv -> `t_rfe (dbv, dr ); 136 dbv -> `t_fx (dbv, ogme ); 138 i( nag ) { 139 i(( t = dbv -> `t_ags (dbv, DB_NOLOCKING , 1)) != 0) { 140 dbv -> `r (dbv, t , "set_flags: DB_NOLOCKING"); 141 shutdown ; 143 i(( t = dbv -> `t_ags (dbv, DB_NOPANIC , 1)) != 0) { 144 dbv -> `r (dbv, t , "set_flags: DB_NOPANIC"); 145 shutdown ; 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 -> `t_p_dich ( 160 dbv , db_og_t_p_cd )) != 0) { 161 dbv -> `r (dbv, t , "app_dispatch"); 162 shutdown ; 172 i( pag ) { 173 i(( t = dbv -> `ݒ (dbv, home , 174 DB_INIT_MPOOL | DB_USE_ENVIRON , 0)) != 0 && 175 ( t = DB_VERSION_MISMATCH || 176 ( t = dbv -> `ݒ (dbv, home , 177 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON , 0)) 179 dbv -> `r (dbv, t , "DB_ENV->open"); 180 shutdown ; 182 } i(( t = dbv -> `ݒ (dbv, home , DB_USE_ENVIRON , 0)) != 0 && 183 ( t = DB_VERSION_MISMATCH || 184 ( t = dbv -> `ݒ (dbv, home , 185 DB_CREATE | DB_INIT_LOG | DB_PRIVATE | DB_USE_ENVIRON , 0)) != 0)) { 186 dbv -> `r (dbv, t , "DB_ENV->open"); 187 shutdown ; 189 v = dbv ->env; 192 i( pag ) { 193 i(( t = `ݒ_p_db ( dbv , & dbp , & dbc )) != 0) 194 shutdown ; 195 } i(( t = dbv -> `log_curs (dbv, & logc , 0)) != 0) { 196 dbv -> `r (dbv, t , "DB_ENV->log_cursor"); 197 shutdown ; 200 i( `IS_ZERO_LSN ( t )) { 201 `memt (& keydbt , 0, (keydbt)); 202 logcag = rag ? DB_PREV : DB_NEXT ; 204 key = t ; 205 logcag = DB_SET ; 207 `memt (& da , 0, (data)); 215 i( pag ) 216 vsi = DB_LOGVERSION ; 218 vsi = 0; 219 `ZERO_LSN ( v ); 222 i( pag && 223 ( t = `v__t ( v , vsi , & db )) != 0) { 224 dbv -> `r (dbv, t , "callback: initialization"); 225 shutdown ; 227 ; ! `__db_ut_ued (); logcag = rag ? DB_PREV : DB_NEXT ) { 228 i( pag ) { 229 t = dbc -> `g (dbc, & keydbt , & da , logcag ); 230 i( t == 0) 231 key = (( __p_cڌ_gs *) keydbt . da )-> l ; 233 t = logc -> `g ogc, & key , & da , logcag ); 234 i( t != 0) { 235 i( t = DB_NOTFOUND ) 237 dbv -> `r (dbenv, 238 t , pag ? "DBC->get" : "DB_LOGC->get"); 239 shutdown ; 245 i(! `IS_ZERO_LSN ( )) { 246 cmp = `LOG_COMPARE (& key , & ); 247 i(( rag && cmp < 0) || (!rflag && cmp > 0)) 250 i(! pag && key . fe ! v .file) { 256 i(( t = logc -> `vsi ogc, & wvsi , 0)) != 0) { 257 dbv -> `r (dbv, t , "DB_LOGC->version"); 258 shutdown ; 260 i( vsi ! wvsi ) { 261 vsi = wvsi ; 262 i(( t = `v__t ( v , vsi , 263 & db )) != 0) { 264 dbv -> `r (dbv, t , 266 shutdown ; 271 t = `__db_dich ( dbv -> v , 272 & db , & da , & key , DB_TXN_PRINT , NULL ); 278 () `fush ( dout ); 280 i( t != 0) { 281 dbv -> `r (dbv, t , "tx: dispatch"); 282 shutdown ; 287 shutdown : exv = 1; 289 i( logc ! NULL && ( t =ogc-> `o (logc, 0)) != 0) 290 exv = 1; 292 i( dbc ! NULL && ( t = dbc-> `o (dbc)) != 0) 293 exv = 1; 295 i( dbp ! NULL && ( t = dbp-> `o (dbp, 0)) != 0) 296 exv = 1; 298 i( dbv ! NULL && ( t = dbv-> `o (dbenv, 0)) != 0) { 299 exv = 1; 300 `rtf ( dr , 301 "%s: dbv->o: %s\n", ogme , `db_ ( t )); 304 i( sswd ! NULL ) 305 ` ( sswd ); 308 `__db_ut_signd (); 310 ( exv =0 ? EXIT_SUCCESS : EXIT_FAILURE ); 311 } } 317 $v__t ( v , vsi , dbp ) 318 ENV * v ; 319 u_t32_t vsi ; 320 DB_DISTAB * dbp ; 322 t ; 329 i(( t = `v__t_45 ( v , dbp )) != 0) 330 ( t ); 332 vsi ) { 340 DB_LOGVERSION_47 : 341 DB_LOGVERSION_46 : 342 DB_LOGVERSION_45 : 343 DB_LOGVERSION_44 : 344 t = 0; 346 DB_LOGVERSION_43 : 347 t = `v__t_43 ( v , dbp ); 349 DB_LOGVERSION_42 : 350 t = `v__t_42 ( v , dbp ); 353 v -> dbv -> `rx (env->dbenv, 354 "Unknowvsi %lu", ( u_lg ) vsi ); 355 t = EINVAL ; 358 ( t ); 359 } } 362 $v__t_42 ( v , dbp ) 363 ENV * v ; 364 DB_DISTAB * dbp ; 366 t ; 368 i(( t = `__db_add_covy_t ( v , dbp , 369 __db_lk_42_t , DB___db_lk_42 )) != 0) 370 r ; 371 i(( t = `__db_add_covy_t ( v , dbp , 372 __db_pg_loc_42_t , DB___db_pg_loc_42 )) != 0) 373 r ; 374 i(( t = `__db_add_covy_t ( v , dbp , 375 __db_pg__42_t , DB___db_pg__42 )) != 0) 376 r ; 377 i(( t = `__db_add_covy_t ( v , dbp , 378 __db_pg_da_42_t , DB___db_pg_da_42 )) != 0) 379 r ; 380 #i HAVE_HASH 381 i(( t = `__db_add_covy_t ( v , dbp , 382 __ham_magroup_42_t , DB___ham_magroup_42 )) != 0) 383 r ; 384 i(( t = `__db_add_covy_t ( v , dbp , 385 __ham_grouoc_42_t , DB___ham_grouoc_42 )) != 0) 386 r ; 388 i(( t = `__db_add_covy_t ( v , dbp , 389 __txn_ckp_42_t , DB___txn_ckp_42 )) != 0) 390 r ; 391 i(( t = `__db_add_covy_t ( v , dbp , 392 __txn_g_42_t , DB___txn_g_42 )) != 0) 393 r ; 394 r : 395 ( t ); 396 } } 399 $v__t_43 ( v , dbp ) 400 ENV * v ; 401 DB_DISTAB * dbp ; 403 t ; 405 i(( t = `__db_add_covy_t ( v , dbp , 406 __bam_lk_43_t , DB___bam_lk_43 )) != 0) 407 r ; 411 i(( t = `__db_add_covy_t ( v , dbp , 412 __txn_g_42_t , DB___txn_g_42 )) != 0) 413 r ; 414 r : 415 ( t ); 416 } } 423 $v__t_45 ( v , dbp ) 424 ENV * v ; 425 DB_DISTAB * dbp ; 427 t ; 429 i(( t = `__bam__t ( v , dbp )) != 0) 430 r ; 431 i(( t = `__d__t ( v , dbp )) != 0) 432 r ; 433 i(( t = `__db__t ( v , dbp )) != 0) 434 r ; 435 i(( t = `__dbg__t ( v , dbp )) != 0) 436 r ; 437 i(( t = `__f__t ( v , dbp )) != 0) 438 r ; 439 #ifde HAVE_HASH 440 i(( t = `__ham__t ( v , dbp )) != 0) 441 r ; 443 #ifde HAVE_QUEUE 444 i(( t = `__qam__t ( v , dbp )) != 0) 445 r ; 447 i(( t = `__txn__t ( v , dbp )) != 0) 448 r ; 449 r : 450 ( t ); 451 } } 454 $uge () 456 `rtf ( dr , "uge: %%s\n", ogme , 458 ( EXIT_FAILURE ); 459 } } 462 $vsi_check () 464 v_maj , v_m , v_tch ; 467 () `db_vsi (& v_maj , & v_m , & v_tch ); 468 i( v_maj ! DB_VERSION_MAJOR || v_m ! DB_VERSION_MINOR ) { 469 `rtf ( dr , 471 ogme , DB_VERSION_MAJOR , DB_VERSION_MINOR , 472 v_maj , v_m ); 473 ( EXIT_FAILURE ); 476 } } 480 $db_og_t_p_cd ( dbv , dbt , lp , ) 481 DB_ENV * dbv ; 482 DBT * dbt ; 483 DB_LSN * lp ; 484 db_cs ; 486 u_t32_t i , y ; 487 ch ; 489 `DB_ASSERT ( dbv -> v , = DB_TXN_PRINT ); 491 `COMPQUIET ( dbv , NULL ); 492 `COMPQUIET ( , DB_TXN_PRINT ); 498 `memy (& y , dbt -> da , (rectype)); 505 `tf ("[%lu][%lu]application specificecord:ec: %lu\n", 506 ( u_lg ) lp -> fe , (u_lgp-> offt , (u_lg) y ); 507 `tf ("\tdata: "); 508 i = 0; i < dbt -> size ; i++) { 509 ch = (( u_t8_t *) dbt -> da )[ i ]; 510 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 512 `tf ("\n\n"); 515 } } 518 $ݒ_p_db ( dbv , db , db ) 519 DB_ENV * dbv ; 520 DB ** db ; 521 DBC ** db ; 523 t ; 525 DB * dbp ; 526 * db = NULL ; 527 * db = NULL ; 529 i(( t = `db_ ( db , dbv , 0)) != 0) { 530 dbv -> `r (dbv, t , "db_create"); 531 ( t ); 534 dbp = * db ; 535 i(( t = 536 dbp -> `ݒ (dbp, NULL , REPDBNAME , NULL, DB_BTREE , 0, 0)) != 0) { 537 dbv -> `r (dbv, t , "DB->open"); 538 r ; 541 i(( t = dbp -> `curs (dbp, NULL , db , 0)) != 0) { 542 dbv -> `r (dbv, t , "DB->cursor"); 543 r ; 548 r : i(* db ! NULL ) 549 ()(* db )-> `o (*dbpp, 0); 550 ( t ); 551 } } 558 $l_g ( g , lp ) 559 * g ; 560 DB_LSN * lp ; 562 u_lg uv ; 563 * p ; 568 i(( p = `rchr ( g , '/')= NULL ) 570 * p = '\0'; 572 i( `__db_gulg ( NULL , ogme , g , 0, UINT32_MAX , & uv )) 574 lp -> fe = uv ; 575 i( `__db_gulg ( NULL , ogme , p + 1, 0, UINT32_MAX , & uv )) 577 lp -> offt = uv ; 579 } } @../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 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, db_cov_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 $db_cov_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 -> v ) && 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 -> v && ( 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 ; 55 #DEFMINKEYPAGE (2) ) 61 #INVALID_ORDER 0 ) 63 #ISINTERNAL ( p ( `TYPE = P_IBTREE || TYPE= P_IRECNO ) ) 64 #ISLEAF ( p ( `TYPE = P_LBTREE || \ 65 `TYPE ( p = P_LRECNO || TYPE= P_LDUP ) ) 68 #CAD_UPDATEROOT 0x01 ) 71 #SPL_NRECS 0x01 ) 74 #BI_DELETED 0x01 ) 77 #STK_CLRDBC 0x01 ) 78 #STK_NOLOCK 0x02 ) 79 #STK_PGONLY 0x04 ) 83 CA_DELETE = 0, 84 CA_IAFTER = 1, 85 CA_IBEFORE = 2, 86 CA_ICURRENT = 3 87 } t_o_g ; 103 #SR_READ 0x00001 ) 104 #SR_WRITE 0x00002 ) 106 #SR_APPEND 0x00040 ) 107 #SR_DELNO 0x00080 ) 108 #SR_DUPFIRST 0x00100 ) 109 #SR_DUPLAST 0x00200 ) 110 #SR_EXACT 0x00400 ) 111 #SR_PARENT 0x00800 ) 112 #SR_STACK 0x01000 ) 113 #SR_PAST_EOF 0x02000 ) 118 #SR_STK_ONLY 0x04000 ) 119 #SR_MAX 0x08000 ) 120 #SR_MIN 0x10000 ) 121 #SR_NEXT 0x20000 ) 122 #SR_DEL 0x40000 ) 123 #SR_START 0x80000 ) 125 #SR_DELETE \ 126 ( SR_WRITE | SR_DUPFIRST | SR_DELNO | SR_EXACT | SR_STACK ) ) 127 #SR_FIND ( SR_READ | SR_DUPFIRST | SR_DELNO ) ) 128 #SR_FIND_WR ( SR_WRITE | SR_DUPFIRST | SR_DELNO ) ) 129 #SR_INSERT ( SR_WRITE | SR_DUPLAST | SR_PAST_EOF | SR_STACK ) ) 130 #SR_KEYFIRST ( SR_WRITE | SR_DUPFIRST | SR_PAST_EOF | SR_STACK ) ) 131 #SR_KEYLAST ( SR_WRITE | SR_DUPLAST | SR_PAST_EOF | SR_STACK ) ) 132 #SR_WRPAIR ( SR_WRITE | SR_DUPLAST | SR_PAST_EOF | SR_PARENT ) ) 139 s__g { 140 PAGE * ge ; 141 db_dx_t dx ; 142 db_dx_t s ; 143 DB_LOCK lock ; 144 db_lockmode_t lock_mode ; 155 #BT_STK_CLR ( c ) do { \ 156 ( c )-> c = (c)-> ; \ 157 ( c )-> c -> ge = NULL ; \ 158 `LOCK_INIT (( c )-> c -> lock ); \ 159 } 0) ) 161 #BT_STK_ENTER ( v , c , g , ge_dx , l , mode , t ) do { \ 162 i(( t = (( c )-> c =(c)-> e ? \ 163 `__bam_kgrow ( v , c ) : 0)) == 0) { \ 164 ( c )-> c -> ge = g ; \ 165 ( c )-> c -> dx = ( ge_dx ); \ 166 ( c )-> c -> s = `NUM_ENT ( g ); \ 167 ( c )-> c -> lock = l ; \ 168 ( c )-> c -> lock_mode = mode ; \ 170 } 0) ) 172 #BT_STK_PUSH ( v , c , g , ge_dx , lock , mode , t ) do { \ 173 `BT_STK_ENTER ( v , c , g , ge_dx , lock , mode , t ); \ 174 ++( c )-> c ; \ 175 } 0) ) 177 #BT_STK_NUM ( v , c , g , ge_dx , t ) do { \ 178 i(( t = (( c )-> c == \ 179 ( c )-> e ? `__bam_kgrow ( v , c) : 0)) == 0) { \ 180 ( c )-> c -> ge = NULL ; \ 181 ( c )-> c -> dx = ( ge_dx ); \ 182 ( c )-> c -> s = `NUM_ENT ( g ); \ 183 `LOCK_INIT (( c )-> c -> lock ); \ 184 ( c )-> c -> lock_mode = DB_LOCK_NG ; \ 186 } 0) ) 188 #BT_STK_NUMPUSH ( v , c , g , ge_dx , t ) do { \ 189 `BT_STK_NUM ( v , , g , ge_dx , t ); \ 190 ++( c )-> c ; \ 191 } 0) ) 193 #BT_STK_POP ( c ) \ 194 (( c )-> c =(c)-> ? NULL : --(c)->c) ) 197 s__curs { 199 __DBC_INTERNAL 202 EPG * ; 203 EPG * c ; 204 EPG * e ; 205 EPG ack [5]; 207 db_dx_t ovsize ; 209 db_o_t o ; 210 u_t32_t d ; 224 #C_DELETED 0x0001 ) 230 #C_RECNUM 0x0002 ) 237 #C_RENUMBER 0x0004 ) 238 u_t32_t ags ; 247 #B_MINKEY_TO_OVFLSIZE ( dbp , mkey , pgsize ) \ 248 (( u_t16_t )((( pgsize - `P_OVERHEAD ( dbp )/ (( mkey * P_INDX ) -\ 249 ( `BKEYDATA_PSIZE (0+ `DB_ALIGN (1, ( t32_t ))))) ) 255 #B_MAX ( a , b ((> (b)? (a: (b)) ) 256 #B_MAXSIZEONPAGE ( ovsize ) \ 257 ( `B_MAX ( BOVERFLOW_PSIZE , `BKEYDATA_PSIZE ( ovsize ))) ) 262 s__b { 268 db_pgno_t bt_ma ; 269 db_pgno_t bt_ro ; 271 u_t32_t bt_mkey ; 274 (* bt_com __P (( DB *, cڡ DBT *, const DBT *)); 276 size_t (* bt_efix __P (( DB *, cڡ DBT *, const DBT *)); 279 _d ; 280 _dim ; 281 u_t32_t _n ; 282 * _sour ; 291 db_pgno_t bt_gno ; 292 DB_LSN bt_ ; 301 _modifd ; 309 FILE * _ ; 310 _eof ; 311 db_o_t _ϡ ; 321 DB_CA_DI = 1, 322 DB_CA_DUP = 2, 323 DB_CA_RSPLIT = 3, 324 DB_CA_SPLIT = 4 325 } tdb__mode ; 330 #BPI_SPACEONLY 0x01 ) 331 #BPI_NORECNUM 0x02 ) 333 #i defed ( __lulus ) 337 ~"dbc_auto/b_auto.h " 338 ~"dbc_auto/b_ext.h " 339 ~"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 75 #timeedd ( vvp , uvp ) \ 77 ( vvp )-> tv_c +( uvp )->tv_sec; \ 78 ( vvp )-> tv_nc +( uvp )->tv_nsec; \ 79 i(( vvp )-> tv_nc >= 1000000000) { \ 80 ( vvp )-> tv_c ++; \ 81 ( vvp )-> tv_nc -= 1000000000; \ 83 } 0) ) 84 #unde timeecsub 85 #timeecsub ( vvp , uvp ) \ 87 ( vvp )-> tv_c -( uvp )->tv_sec; \ 88 ( vvp )-> tv_nc -( uvp )->tv_nsec; \ 89 i(( vvp )-> tv_nc < 0) { \ 90 ( vvp )-> tv_c --; \ 91 ( vvp )-> tv_nc += 1000000000; \ 93 } 0) ) 95 #unde timeect 96 #timeect ( vvp , c , nc ) \ 98 ( vvp )-> tv_c = ( time_t )( c ); \ 99 ( vvp )-> tv_nc = ()( nc ); \ 100 } 0) ) 102 #DB_TIMEOUT_TO_TIMESPEC ( t , vvp ) \ 104 ( vvp )-> tv_c = ( time_t )(( t ) / 1000000); \ 105 ( vvp )-> tv_nc = ()((( t ) % 1000000) * 1000); \ 106 } 0) ) 108 #DB_TIMESPEC_TO_TIMEOUT ( t , vvp , ec ) \ 110 t = ( u_lg )(( vvp )-> tv_c * 1000000); \ 111 t +( u_lg )(( vvp )-> tv_nc / 1000); \ 113 i( ec ) \ 114 t ++; \ 115 } 0) ) 117 #TIMESPEC_ADD_DB_TIMEOUT ( vvp , t ) \ 119 db_timeec __tmp ; \ 120 `DB_TIMEOUT_TO_TIMESPEC ( t , & __tmp ); \ 121 `timeedd (( vvp ), & __tmp ); \ 122 } 0) ) 124 #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 (( ENV *, *)); 41 (* dey __P (( ENV *, *, *, u_t8_t *, size_t )); 42 (* y __P (( ENV *, *, *, u_t8_t *, size_t )); 43 (* __P (( 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 ( dbv , Δ , ecode , picy ) \ 64 DbEnv :: `ruime_r ( dbv , Δ , ecode , picy ) ) 66 #DB_ERROR_DBT ( dbv , Δ , dbt , picy ) \ 67 DbEnv :: `ruime_r_dbt ( dbv , Δ , 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_diab ; __db_diab tDB_DISTAB ; 144 __db_v ; __db_v tDB_ENV ; 145 __db_h_ ; __db_h_ tDB_HASH_STAT ; 146 __db_ock ; __db_ock tDB_LOCK_ILOCK ; 147 __db_lock_h ; __db_lock_h tDB_LOCK_HSTAT ; 148 __db_lock_p ; __db_lock_p tDB_LOCK_PSTAT ; 149 __db_lock_ ; __db_lock_ tDB_LOCK_STAT ; 150 __db_lock_u ; __db_lock_u tDB_LOCK ; 151 __db_lock ; __db_lock tDB_LOCKER ; 152 __db_lockq ; __db_lockq tDB_LOCKREQ ; 153 __db_lockb ; __db_lockb tDB_LOCKTAB ; 154 __db_log ; __db_log tDB_LOG ; 155 __db_log_curs ; __db_log_curs tDB_LOGC ; 156 __db_log_ ; __db_log_ tDB_LOG_STAT ; 157 __db_l ; __db_l tDB_LSN ; 158 __db_mpo ; __db_mpo tDB_MPOOL ; 159 __db_mpo_f ;__db_mpo_f tDB_MPOOL_FSTAT ; 160 __db_mpo_ ; __db_mpo_ tDB_MPOOL_STAT ; 161 __db_mpofe ; __db_mpof tDB_MPOOLFILE ; 162 __db_mux_ ; __db_mux_ tDB_MUTEX_STAT ; 163 __db_mux_t ; __db_mux_ tDB_MUTEX ; 164 __db_muxmgr ; __db_muxmg tDB_MUTEXMGR ; 165 __db_li ; __db_li tDB_PREPLIST ; 166 __db_qam_ ; __db_qam_ tDB_QUEUE_STAT ; 167 __db_p ; __db_ tDB_REP ; 168 __db_p_ ; __db_p_ tDB_REP_STAT ; 169 __db_pmgr_se ;__db_pmgr_s tDB_REPMGR_SITE ; 170 __db_pmgr_ ;__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_thad_fo ;__db_thad_f tDB_THREAD_INFO ; 175 __db_txn ; __db_tx tDB_TXN ; 176 __db_txn_aive ; __db_txn_aiv tDB_TXN_ACTIVE ; 177 __db_txn_ ; __db_txn_ tDB_TXN_STAT ; 178 __db_txnmgr ; __db_txnmg tDB_TXNMGR ; 179 __dbc ; __db tDBC ; 180 __dbc_ ; __dbc_ tDBC_INTERNAL ; 181 __v ; __v tENV ; 182 __fh_t ; __fh_ tDB_FH ; 183 __ame ; __am tFNAME ; 184 __key_nge ; __key_ng tDB_KEY_RANGE ; 185 __mpofe ; __mpof tMPOOLFILE ; 191 #DB_DEGREE_2 DB_READ_COMMITTED ) 192 #DB_DIRTY_READ DB_READ_UNCOMMITTED ) 193 #DB_JOINENV 0x0 ) 196 s__db_dbt { 197 * da ; 198 u_t32_t size ; 200 u_t32_t un ; 201 u_t32_t dn ; 202 u_t32_t doff ; 204 * p_da ; 206 #DB_DBT_APPMALLOC 0x001 ) 207 #DB_DBT_DUPOK 0x002 ) 208 #DB_DBT_ISSET 0x004 ) 209 #DB_DBT_MALLOC 0x008 ) 210 #DB_DBT_MULTIPLE 0x010 ) 211 #DB_DBT_PARTIAL 0x020 ) 212 #DB_DBT_REALLOC 0x040 ) 213 #DB_DBT_USERCOPY 0x080 ) 214 #DB_DBT_USERMEM 0x100 ) 215 u_t32_t ags ; 221 u_t32_t tdb_mux_t ; 223 s__db_mux_ { 225 u_t32_t _mux_ign ; 226 u_t32_t _mux_s_s ; 227 u_t32_t _mux_t ; 228 u_t32_t _mux_ ; 229 u_t32_t _mux_u ; 230 u_t32_t _mux_u_max ; 233 #ide __TEST_DB_NO_STATISTICS 234 u_t32_t _gi_wa ; 235 u_t32_t _gi_nowa ; 236 roff_t _gsize ; 241 #DB_THREADID_STRLEN 128 ) 246 #DB_LOCKVERSION 1 ) 248 #DB_FILE_ID_LEN 20 ) 254 #DB_LOCK_NORUN 0 ) 255 #DB_LOCK_DEFAULT 1 ) 256 #DB_LOCK_EXPIRE 2 ) 257 #DB_LOCK_MAXLOCKS 3 ) 258 #DB_LOCK_MAXWRITE 4 ) 259 #DB_LOCK_MINLOCKS 5 ) 260 #DB_LOCK_MINWRITE 6 ) 261 #DB_LOCK_OLDEST 7 ) 262 #DB_LOCK_RANDOM 8 ) 263 #DB_LOCK_YOUNGEST 9 ) 274 DB_LOCK_NG =0, 275 DB_LOCK_READ =1, 276 DB_LOCK_WRITE =2, 277 DB_LOCK_WAIT =3, 278 DB_LOCK_IWRITE =4, 279 DB_LOCK_IREAD =5, 280 DB_LOCK_IWR =6, 281 DB_LOCK_READ_UNCOMMITTED =7, 282 DB_LOCK_WWRITE =8 283 } tdb_lockmode_t ; 289 DB_LOCK_DUMP =0, 290 DB_LOCK_GET =1, 291 DB_LOCK_GET_TIMEOUT =2, 292 DB_LOCK_INHERIT =3, 293 DB_LOCK_PUT =4, 294 DB_LOCK_PUT_ALL =5, 295 DB_LOCK_PUT_OBJ =6, 296 DB_LOCK_PUT_READ =7, 297 DB_LOCK_TIMEOUT =8, 298 DB_LOCK_TRADE =9, 299 DB_LOCK_UPGRADE_WRITE =10 300 } tdb_lock_t ; 306 DB_LSTAT_ABORTED =1, 307 DB_LSTAT_EXPIRED =2, 308 DB_LSTAT_FREE =3, 309 DB_LSTAT_HELD =4, 310 DB_LSTAT_PENDING =5, 313 DB_LSTAT_WAITING =6 314 } tdb_us_t ; 317 s__db_lock_ { 318 u_t32_t _id ; 319 u_t32_t _cur_maxid ; 320 u_t32_t _maxlocks ; 321 u_t32_t _maxlocks ; 322 u_t32_t _maxobjes ; 323 u_t32_t _is ; 324 _nmodes ; 325 u_t32_t _ocks ; 326 #ide __TEST_DB_NO_STATISTICS 327 u_t32_t _ocks ; 328 u_t32_t _maxocks ; 329 u_t32_t _maxhlocks ; 330 u_t32_t _lockls ; 331 u_t32_t _maxlls ; 332 u_t32_t _maxocks ; 333 u_t32_t _nobjes ; 334 u_t32_t _maxnobjes ; 335 u_t32_t _maxhobjes ; 336 u_t32_t _objels ; 337 u_t32_t _maxols ; 338 u_t32_t _eques ; 339 u_t32_t _Ės ; 340 u_t32_t _nupgde ; 341 u_t32_t _ndowngde ; 342 u_t32_t _lock_wa ; 343 u_t32_t _lock_nowa ; 344 u_t32_t _nddlocks ; 345 db_timeout_t _locktimeout ; 346 u_t32_t _ocktimeouts ; 347 db_timeout_t _tximeout ; 348 u_t32_t _ximeouts ; 349 u_t32_t __wa ; 350 u_t32_t __nowa ; 351 u_t32_t __max_wa ; 352 u_t32_t __max_nowa ; 353 u_t32_t _objs_wa ; 354 u_t32_t _objs_nowa ; 355 u_t32_t _locks_wa ; 356 u_t32_t _locks_nowa ; 357 u_t32_t _gi_wa ; 358 u_t32_t _gi_nowa ; 359 u_t32_t _hash_n ; 360 roff_t _gsize ; 364 s__db_lock_h { 365 u_t32_t _eques ; 366 u_t32_t _Ės ; 367 u_t32_t _nupgde ; 368 u_t32_t _ndowngde ; 369 u_t32_t _ocks ; 370 u_t32_t _maxocks ; 371 u_t32_t _nobjes ; 372 u_t32_t _maxnobjes ; 373 u_t32_t _lock_wa ; 374 u_t32_t _lock_nowa ; 375 u_t32_t _ocktimeouts ; 376 u_t32_t _ximeouts ; 377 u_t32_t _hash_n ; 380 s__db_lock_p { 381 u_t32_t _ocks ; 382 u_t32_t _maxocks ; 383 u_t32_t _nobjes ; 384 u_t32_t _maxnobjes ; 385 u_t32_t _lockls ; 386 u_t32_t _objels ; 393 s__db_ock { 394 db_pgno_t pgno ; 395 u_t8_t feid [ DB_FILE_ID_LEN ]; 396 #DB_HANDLE_LOCK 1 ) 397 #DB_RECORD_LOCK 2 ) 398 #DB_PAGE_LOCK 3 ) 399 u_t32_t ty ; 407 s__db_lock_u { 408 roff_t off ; 409 u_t32_t ndx ; 411 u_t32_t g ; 412 db_lockmode_t mode ; 416 s__db_lockq { 417 db_lock_t ; 418 db_lockmode_t mode ; 419 db_timeout_t timeout ; 420 DBT * obj ; 421 DB_LOCK lock ; 427 #DB_LOGVERSION 14 ) 428 #DB_LOGOLDVER 8 ) 429 #DB_LOGMAGIC 0x040988 ) 440 s__db_l { 441 u_t32_t fe ; 442 u_t32_t offt ; 454 #DB_ur_BEGIN 10000 ) 455 #DB_debug_FLAG 0x80000000 ) 461 s__db_log_curs { 462 ENV * v ; 464 DB_FH * fhp ; 465 DB_LSN l ; 466 u_t32_t n ; 467 u_t32_t ev ; 469 DBT dbt ; 470 DB_LSN p_l ; 471 u_t32_t p_vsi ; 473 u_t8_t * bp ; 474 u_t32_t bp_size ; 475 u_t32_t bp_ ; 476 DB_LSN bp_l ; 478 u_t32_t bp_maxc ; 481 (* o __P (( DB_LOGC *, u_t32_t )); 482 (* g __P (( DB_LOGC *, DB_LSN *, DBT *, u_t32_t )); 483 (* vsi __P (( DB_LOGC *, u_t32_t *, u_int32_t)); 486 #DB_LOG_DISK 0x01 ) 487 #DB_LOG_LOCKED 0x02 ) 488 #DB_LOG_SILENT_ERR 0x04 ) 489 u_t32_t ags ; 493 s__db_log_ { 494 u_t32_t _magic ; 495 u_t32_t _vsi ; 496 _mode ; 497 u_t32_t _lg_bsize ; 498 u_t32_t _lg_size ; 499 u_t32_t _wc_bys ; 500 u_t32_t _wc_mbys ; 501 #ide __TEST_DB_NO_STATISTICS 502 u_t32_t _cd ; 503 u_t32_t _w_bys ; 504 u_t32_t _w_mbys ; 505 u_t32_t _wcou ; 506 u_t32_t _wcou_fl ; 507 u_t32_t _rcou ; 508 u_t32_t _scou ; 509 u_t32_t _gi_wa ; 510 u_t32_t _gi_nowa ; 511 u_t32_t _cur_fe ; 512 u_t32_t _cur_offt ; 513 u_t32_t _disk_fe ; 514 u_t32_t _disk_offt ; 515 u_t32_t _maxcommrush ; 516 u_t32_t _mcommrush ; 517 roff_t _gsize ; 528 #DB_SET_TXN_LSNP ( txn , blp , p ) \ 529 (( txn )-> `t_txn_lp xn, blp , p )) ) 536 DB_PRIORITY_UNCHANGED =0, 537 DB_PRIORITY_VERY_LOW =1, 538 DB_PRIORITY_LOW =2, 539 DB_PRIORITY_DEFAULT =3, 540 DB_PRIORITY_HIGH =4, 541 DB_PRIORITY_VERY_HIGH =5 542 } tDB_CACHE_PRIORITY ; 545 s__db_mpofe { 546 DB_FH * fhp ; 552 u_t32_t f ; 554 u_t32_t pf ; 562 __db_mpofe * tqe_xt ; 563 __db_mpofe ** tqe_ev ; 564 } q ; 576 ENV * v ; 577 MPOOLFILE * m ; 579 u_t32_t r_n ; 580 u_t8_t 581 feid [ DB_FILE_ID_LEN ]; 582 y ; 583 t32_t l_offt ; 584 u_t32_t gbys , bys ; 585 DBT * pgcook ; 586 t32_t iܙy ; 588 * addr ; 589 size_t n ; 591 u_t32_t cfig_ags ; 594 (* o __P (( DB_MPOOLFILE *, u_t32_t )); 595 (* g ) 596 __P (( DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_t32_t , *)); 597 (* g_r_n __P (( DB_MPOOLFILE *, u_t32_t *)); 598 (* g_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 599 (* g_ags __P (( DB_MPOOLFILE *, u_t32_t *)); 600 (* g_y __P (( DB_MPOOLFILE *, *)); 601 (* g_ϡ_pgno __P (( DB_MPOOLFILE *, db_pgno_t *)); 602 (* g_l_offt __P (( DB_MPOOLFILE *, t32_t *)); 603 (* g_maxsize __P (( DB_MPOOLFILE *, u_t32_t *, u_int32_t *)); 604 (* g_pgcook __P (( DB_MPOOLFILE *, DBT *)); 605 (* g_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY *)); 606 (* ݒ __P (( DB_MPOOLFILE *, cڡ *, u_t32_t , , size_t )); 607 (* put __P (( DB_MPOOLFILE *, *, DB_CACHE_PRIORITY , u_t32_t )); 608 (* t_r_n __P (( DB_MPOOLFILE *, u_t32_t )); 609 (* t_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 610 (* t_ags __P (( DB_MPOOLFILE *, u_t32_t , )); 611 (* t_y __P (( DB_MPOOLFILE *, )); 612 (* t_l_offt __P (( DB_MPOOLFILE *, t32_t )); 613 (* t_maxsize __P (( DB_MPOOLFILE *, u_t32_t , u_int32_t)); 614 (* t_pgcook __P (( DB_MPOOLFILE *, DBT *)); 615 (* t_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY )); 616 (* sync __P (( DB_MPOOLFILE *)); 627 #MP_FILEID_SET 0x001 ) 628 #MP_FLUSH 0x002 ) 629 #MP_MULTIVERSION 0x004 ) 630 #MP_OPEN_CALLED 0x008 ) 631 #MP_READONLY 0x010 ) 632 #MP_DUMMY 0x020 ) 633 u_t32_t ags ; 637 s__db_mpo_ { 638 u_t32_t _gbys ; 639 u_t32_t _bys ; 640 u_t32_t _nche ; 641 u_t32_t _max_nche ; 642 size_t _mmsize ; 643 _maxݒfd ; 644 _maxwre ; 645 db_timeout_t _maxwre_p ; 646 u_t32_t _ges ; 647 #ide __TEST_DB_NO_STATISTICS 648 u_t32_t _m ; 649 u_t32_t _che_h ; 650 u_t32_t _che_miss ; 651 u_t32_t _ge_ ; 652 u_t32_t _ge_ ; 653 u_t32_t _ge_out ; 654 u_t32_t _ro_evi ; 655 u_t32_t _rw_evi ; 656 u_t32_t _ge_ick ; 657 u_t32_t _ge_n ; 658 u_t32_t _ge_dty ; 659 u_t32_t _hash_bucks ; 660 u_t32_t _hash_ches ; 661 u_t32_t _hash_lge ; 662 u_t32_t _hash_examed ; 663 u_t32_t _hash_nowa ; 664 u_t32_t _hash_wa ; 665 u_t32_t _hash_max_nowa ; 666 u_t32_t _hash_max_wa ; 667 u_t32_t _gi_nowa ; 668 u_t32_t _gi_wa ; 669 u_t32_t _mvcc_oz ; 670 u_t32_t _mvcc_thawed ; 671 u_t32_t _mvcc_d ; 672 u_t32_t _loc ; 673 u_t32_t _loc_bucks ; 674 u_t32_t _loc_max_bucks ; 675 u_t32_t _loc_ges ; 676 u_t32_t _loc_max_ges ; 677 u_t32_t _io_wa ; 678 roff_t _gsize ; 683 s__db_mpo_f { 684 * fe_me ; 685 u_t32_t _gesize ; 686 #ide __TEST_DB_NO_STATISTICS 687 u_t32_t _m ; 688 u_t32_t _che_h ; 689 u_t32_t _che_miss ; 690 u_t32_t _ge_ ; 691 u_t32_t _ge_ ; 692 u_t32_t _ge_out ; 699 #DB_TXNVERSION 1 ) 702 DB_TXN_ABORT =0, 703 DB_TXN_APPLY =1, 704 DB_TXN_BACKWARD_ROLL =3, 705 DB_TXN_FORWARD_ROLL =4, 706 DB_TXN_OPENFILES =5, 707 DB_TXN_POPENFILES =6, 708 DB_TXN_PRINT =7 709 } tdb_cs ; 717 #DB_UNDO ( ((= DB_TXN_ABORT || (= DB_TXN_BACKWARD_ROLL ) ) 718 #DB_REDO ( ((= DB_TXN_FORWARD_ROLL || (= DB_TXN_APPLY ) ) 720 s__db_txn { 721 DB_TXNMGR * mg ; 722 DB_TXN * ; 723 DB_THREAD_INFO * thad_fo ; 725 u_t32_t txnid ; 726 * me ; 727 DB_LOCKER * lock ; 729 db_thadid_t tid ; 730 * td ; 731 db_timeout_t lock_timeout ; 732 db_timeout_t expe ; 733 * txn_li ; 742 __db_txn * tqe_xt ; 743 __db_txn ** tqe_ev ; 744 } lks ; 746 __db_txn * tqe_xt ; 747 __db_txn ** tqe_ev ; 748 } xks ; 755 s__kids { 756 __db_txn * tqh_f ; 757 __db_txn ** tqh_ϡ ; 758 } kids ; 766 __txn_evt * tqh_f ; 767 __txn_evt ** tqh_ϡ ; 768 } evts ; 776 __txn_logc * qh_f ; 777 __txn_logc ** qh_ϡ ; 778 } logs ; 786 __db_txn * tqe_xt ; 787 __db_txn ** tqe_ev ; 788 } klks ; 790 * i_ ; 791 * xml_ ; 793 u_t32_t curss ; 796 (* abt __P (( DB_TXN *)); 797 (* comm __P (( DB_TXN *, u_t32_t )); 798 (* disrd __P (( DB_TXN *, u_t32_t )); 799 (* g_me __P (( DB_TXN *, const **)); 800 u_t32_t (* id __P (( DB_TXN *)); 801 (* e __P (( DB_TXN *, u_t8_t *)); 802 (* t_me __P (( DB_TXN *, const *)); 803 (* t_timeout __P (( DB_TXN *, db_timeout_t , u_t32_t )); 807 (* t_txn_lp __P (( DB_TXN * txn , DB_LSN **, DB_LSN **)); 810 #TXN_CHILDCOMMIT 0x0001 ) 811 #TXN_CDSGROUP 0x0002 ) 812 #TXN_COMPENSATE 0x0004 ) 813 #TXN_DEADLOCK 0x0008 ) 814 #TXN_LOCKTIMEOUT 0x0010 ) 815 #TXN_MALLOC 0x0020 ) 816 #TXN_NOSYNC 0x0040 ) 817 #TXN_NOWAIT 0x0080 ) 818 #TXN_PRIVATE 0x0100 ) 819 #TXN_READ_COMMITTED 0x0200 ) 820 #TXN_READ_UNCOMMITTED 0x0400 ) 821 #TXN_RESTORED 0x0800 ) 822 #TXN_SNAPSHOT 0x1000 ) 823 #TXN_SYNC 0x2000 ) 824 #TXN_WRITE_NOSYNC 0x4000 ) 825 u_t32_t ags ; 828 #TXN_SYNC_FLAGS ( TXN_SYNC | TXN_NOSYNC | TXN_WRITE_NOSYNC ) ) 838 #DB_XIDDATASIZE 128 ) 839 s__db_li { 840 DB_TXN * txn ; 841 u_t8_t gid [ DB_XIDDATASIZE ]; 845 s__db_txn_aive { 846 u_t32_t txnid ; 847 u_t32_t id ; 848 pid_t pid ; 849 db_thadid_t tid ; 851 DB_LSN l ; 853 DB_LSN ad_l ; 854 u_t32_t mvcc_f ; 856 #TXN_ABORTED 1 ) 857 #TXN_COMMITTED 2 ) 858 #TXN_PREPARED 3 ) 859 #TXN_RUNNING 4 ) 860 u_t32_t us ; 862 #TXN_XA_ABORTED 1 ) 863 #TXN_XA_DEADLOCKED 2 ) 864 #TXN_XA_ENDED 3 ) 865 #TXN_XA_PREPARED 4 ) 866 #TXN_XA_STARTED 5 ) 867 #TXN_XA_SUSPENDED 6 ) 868 u_t32_t xa_us ; 870 u_t8_t xid [ DB_XIDDATASIZE ]; 871 me [51]; 874 s__db_txn_ { 875 u_t32_t _ees ; 877 #ide __TEST_DB_NO_STATISTICS 878 DB_LSN _ϡ_ckp ; 879 time_t _time_ckp ; 880 u_t32_t _ϡ_txnid ; 881 u_t32_t _maxtxns ; 882 u_t32_t _bts ; 883 u_t32_t _nbegs ; 884 u_t32_t _ncomms ; 885 u_t32_t _ive ; 886 u_t32_t _nsh ; 887 u_t32_t _maxive ; 888 u_t32_t _maxnsh ; 889 DB_TXN_ACTIVE * _txǼay ; 890 u_t32_t _gi_wa ; 891 u_t32_t _gi_nowa ; 892 roff_t _gsize ; 900 #DB_EID_BROADCAST -1 ) 901 #DB_EID_INVALID -2 ) 903 #DB_REP_DEFAULT_PRIORITY 100 ) 906 #DB_REPMGR_ACKS_ALL 1 ) 907 #DB_REPMGR_ACKS_ALL_PEERS 2 ) 908 #DB_REPMGR_ACKS_NONE 3 ) 909 #DB_REPMGR_ACKS_ONE 4 ) 910 #DB_REPMGR_ACKS_ONE_PEER 5 ) 911 #DB_REPMGR_ACKS_QUORUM 6 ) 914 #DB_REP_ACK_TIMEOUT 1 ) 915 #DB_REP_CHECKPOINT_DELAY 2 ) 916 #DB_REP_CONNECTION_RETRY 3 ) 917 #DB_REP_ELECTION_RETRY 4 ) 918 #DB_REP_ELECTION_TIMEOUT 5 ) 919 #DB_REP_FULL_ELECTION_TIMEOUT 6 ) 920 #DB_REP_HEARTBEAT_MONITOR 7 ) 921 #DB_REP_HEARTBEAT_SEND 8 ) 922 #DB_REP_LEASE_TIMEOUT 9 ) 925 #DB_EVENT_NO_SUCH_EVENT 0 ) 926 #DB_EVENT_PANIC 1 ) 927 #DB_EVENT_REP_CLIENT 2 ) 928 #DB_EVENT_REP_ELECTED 3 ) 929 #DB_EVENT_REP_MASTER 4 ) 930 #DB_EVENT_REP_NEWMASTER 5 ) 931 #DB_EVENT_REP_PERM_FAILED 6 ) 932 #DB_EVENT_REP_STARTUPDONE 7 ) 933 #DB_EVENT_WRITE_FAILED 8 ) 936 s__db_pmgr_se { 937 eid ; 938 * ho ; 939 u_t pt ; 941 #DB_REPMGR_CONNECTED 0x01 ) 942 #DB_REPMGR_DISCONNECTED 0x02 ) 943 u_t32_t us ; 947 s__db_p_ { 957 u_t32_t _log_queued ; 958 u_t32_t _tup_come ; 959 #ide __TEST_DB_NO_STATISTICS 960 u_t32_t _us ; 961 DB_LSN _xt_l ; 962 DB_LSN _wag_l ; 963 DB_LSN _max_rm_l ; 964 db_pgno_t _xt_pg ; 965 db_pgno_t _wag_pg ; 967 u_t32_t _dupmas ; 969 _v_id ; 970 u_t32_t _v_iܙy ; 971 u_t32_t _bulk_fls ; 972 u_t32_t _bulk_ovows ; 973 u_t32_t _bulk_cds ; 974 u_t32_t _bulk_srs ; 975 u_t32_t __ques ; 976 u_t32_t __svc_q ; 978 u_t32_t __svc_miss ; 980 u_t32_t _g ; 981 u_t32_t _eg ; 982 u_t32_t _log_duid ; 983 u_t32_t _log_queued_max ; 984 u_t32_t _log_queued_tٮ ; 985 u_t32_t _log_cds ; 986 u_t32_t _log_queed ; 987 _ma ; 988 u_t32_t _ma_chges ; 989 u_t32_t _msgs_badg ; 990 u_t32_t _msgs_osd ; 991 u_t32_t _msgs_cov ; 993 u_t32_t _msgs_nd_us ; 994 u_t32_t _msgs_ ; 995 u_t32_t _wses ; 996 u_t32_t _nses ; 998 u_t32_t _hrَes ; 999 u_t32_t _outded ; 1001 u_t32_t _pg_duid ; 1002 u_t32_t _pg_cds ; 1003 u_t32_t _pg_queed ; 1004 u_t32_t _txns_d ; 1005 u_t32_t _tsync_dayed ; 1008 u_t32_t _eis ; 1009 u_t32_t _eis_w ; 1012 _ei_cur_wr ; 1013 u_t32_t _ei_g ; 1014 DB_LSN _ei_l ; 1015 u_t32_t _ei_nses ; 1016 u_t32_t _ei_nves ; 1017 u_t32_t _ei_iܙy ; 1018 _ei_us ; 1019 u_t32_t _ei_tbak ; 1020 u_t32_t _ei_ves ; 1021 u_t32_t _ei_c ; 1022 u_t32_t _ei_uc ; 1023 u_t32_t _max_a_c ; 1024 u_t32_t _max_a_uc ; 1029 s__db_pmgr_ { 1030 u_t32_t _rm_ed ; 1031 u_t32_t _msgs_queued ; 1032 u_t32_t _msgs_drݳd ; 1034 u_t32_t _ci_dr ; 1035 u_t32_t _c_ ; 1044 s__db_q_cd { 1045 u_t32_t q_vsi ; 1046 u_t32_t ags ; 1047 db_q_t q_vue ; 1048 db_q_t q_max ; 1049 db_q_t q_m ; 1055 s__db_qu { 1056 DB * q_dbp ; 1057 db_mux_t mtx_q ; 1058 DB_SEQ_RECORD * q_ ; 1059 DB_SEQ_RECORD q_cd ; 1060 t32_t q_che_size ; 1061 db_q_t q_ϡ_vue ; 1062 DBT q_key ; 1063 DBT q_da ; 1066 * i_ ; 1069 (* o __P (( DB_SEQUENCE *, u_t32_t )); 1070 (* g __P (( DB_SEQUENCE *, 1071 DB_TXN *, t32_t , db_q_t *, u_t32_t )); 1072 (* g_chesize __P (( DB_SEQUENCE *, t32_t *)); 1073 (* g_db __P (( DB_SEQUENCE *, DB **)); 1074 (* g_ags __P (( DB_SEQUENCE *, u_t32_t *)); 1075 (* g_key __P (( DB_SEQUENCE *, DBT *)); 1076 (* g_nge __P (( DB_SEQUENCE *, 1077 db_q_t *, db_seq_t *)); 1078 (* l_vue __P (( DB_SEQUENCE *, db_q_t )); 1079 (* ݒ __P (( DB_SEQUENCE *, 1080 DB_TXN *, DBT *, u_t32_t )); 1081 (* move __P (( DB_SEQUENCE *, DB_TXN *, u_t32_t )); 1082 (* t_chesize __P (( DB_SEQUENCE *, t32_t )); 1083 (* t_ags __P (( DB_SEQUENCE *, u_t32_t )); 1084 (* t_nge __P (( DB_SEQUENCE *, db_q_t , db_seq_t)); 1085 (* __P (( DB_SEQUENCE *, 1086 DB_SEQUENCE_STAT **, u_t32_t )); 1087 (* _t __P (( DB_SEQUENCE *, u_t32_t )); 1091 s__db_q_ { 1092 u_t32_t _wa ; 1093 u_t32_t _nowa ; 1094 db_q_t _cut ; 1095 db_q_t _vue ; 1096 db_q_t _ϡ_vue ; 1097 db_q_t _m ; 1098 db_q_t _max ; 1099 t32_t _che_size ; 1100 u_t32_t _ags ; 1107 DB_BTREE =1, 1108 DB_HASH =2, 1109 DB_RECNO =3, 1110 DB_QUEUE =4, 1111 DB_UNKNOWN =5 1112 } tDBTYPE ; 1114 #DB_RENAMEMAGIC 0x030800 ) 1116 #DB_BTREEVERSION 9 ) 1117 #DB_BTREEOLDVER 8 ) 1118 #DB_BTREEMAGIC 0x053162 ) 1120 #DB_HASHVERSION 9 ) 1121 #DB_HASHOLDVER 7 ) 1122 #DB_HASHMAGIC 0x061561 ) 1124 #DB_QAMVERSION 4 ) 1125 #DB_QAMOLDVER 3 ) 1126 #DB_QAMMAGIC 0x042253 ) 1128 #DB_SEQUENCE_VERSION 2 ) 1129 #DB_SEQUENCE_OLDVER 1 ) 1135 #DB_AFTER 1 ) 1136 #DB_APPEND 2 ) 1137 #DB_BEFORE 3 ) 1138 #DB_CONSUME 4 ) 1139 #DB_CONSUME_WAIT 5 ) 1140 #DB_CURRENT 6 ) 1141 #DB_FIRST 7 ) 1142 #DB_GET_BOTH 8 ) 1143 #DB_GET_BOTHC 9 ) 1144 #DB_GET_BOTH_RANGE 10 ) 1145 #DB_GET_RECNO 11 ) 1146 #DB_JOIN_ITEM 12 ) 1147 #DB_KEYFIRST 13 ) 1148 #DB_KEYLAST 14 ) 1149 #DB_LAST 15 ) 1150 #DB_NEXT 16 ) 1151 #DB_NEXT_DUP 17 ) 1152 #DB_NEXT_NODUP 18 ) 1153 #DB_NODUPDATA 19 ) 1154 #DB_NOOVERWRITE 20 ) 1155 #DB_NOSYNC 21 ) 1156 #DB_POSITION 22 ) 1157 #DB_PREV 23 ) 1158 #DB_PREV_DUP 24 ) 1159 #DB_PREV_NODUP 25 ) 1160 #DB_SET 26 ) 1161 #DB_SET_RANGE 27 ) 1162 #DB_SET_RECNO 28 ) 1163 #DB_UPDATE_SECONDARY 29 ) 1164 #DB_WRITECURSOR 30 ) 1165 #DB_WRITELOCK 31 ) 1168 #DB_OPFLAGS_MASK 0x000000f ) 1179 #DB_BUFFER_SMALL (-30999) ) 1180 #DB_DONOTINDEX (-30998) ) 1181 #DB_FOREIGN_CONFLICT (-30997) ) 1182 #DB_KEYEMPTY (-30996) ) 1183 #DB_KEYEXIST (-30995) ) 1184 #DB_LOCK_DEADLOCK (-30994) ) 1185 #DB_LOCK_NOTGRANTED (-30993) ) 1186 #DB_LOG_BUFFER_FULL (-30992) ) 1187 #DB_NOSERVER (-30991) ) 1188 #DB_NOSERVER_HOME (-30990) ) 1189 #DB_NOSERVER_ID (-30989) ) 1190 #DB_NOTFOUND (-30988) ) 1191 #DB_OLD_VERSION (-30987) ) 1192 #DB_PAGE_NOTFOUND (-30986) ) 1193 #DB_REP_DUPMASTER (-30985) ) 1194 #DB_REP_HANDLE_DEAD (-30984) ) 1195 #DB_REP_HOLDELECTION (-30983) ) 1196 #DB_REP_IGNORE (-30982) ) 1197 #DB_REP_ISPERM (-30981) ) 1198 #DB_REP_JOIN_FAILURE (-30980) ) 1199 #DB_REP_LEASE_EXPIRED (-30979) ) 1200 #DB_REP_LOCKOUT (-30978) ) 1201 #DB_REP_NEWSITE (-30977) ) 1202 #DB_REP_NOTPERM (-30976) ) 1203 #DB_REP_UNAVAIL (-30975) ) 1204 #DB_RUNRECOVERY (-30974) ) 1205 #DB_SECONDARY_BAD (-30973) ) 1206 #DB_VERIFY_BAD (-30972) ) 1207 #DB_VERSION_MISMATCH (-30971) ) 1211 #DB_ALREADY_ABORTED (-30899) ) 1212 #DB_DELETED (-30898) ) 1213 #DB_EVENT_NOT_HANDLED (-30897) ) 1214 #DB_NEEDSPLIT (-30896) ) 1215 #DB_REP_BULKOVF (-30895) ) 1216 #DB_REP_EGENCHG (-30894) ) 1217 #DB_REP_LOGREADY (-30893) ) 1218 #DB_REP_NEWMASTER (-30892) ) 1219 #DB_REP_PAGEDONE (-30891) ) 1220 #DB_SURPRISE_KID (-30890) ) 1222 #DB_SWAPBYTES (-30889) ) 1223 #DB_TIMEOUT (-30888) ) 1224 #DB_TXN_CKP (-30887) ) 1225 #DB_VERIFY_FATAL (-30886) ) 1228 s__db { 1232 u_t32_t pgsize ; 1233 DB_CACHE_PRIORITY iܙy ; 1236 (* db_nd_o __P (( DB *, DBT *, db_o_t )); 1237 (* db_edback __P (( DB *, , )); 1238 (* dup_com __P (( DB *, cڡ DBT *, const DBT *)); 1240 * p_ive ; 1245 DB_ENV * dbv ; 1246 ENV * v ; 1248 DBTYPE ty ; 1250 DB_MPOOLFILE * mpf ; 1252 db_mux_t mux ; 1254 * ame , * dme ; 1255 u_t32_t ݒ_ags ; 1257 u_t8_t feid [ DB_FILE_ID_LEN ]; 1259 u_t32_t adj_feid ; 1261 #DB_LOGFILEID_INVALID -1 ) 1262 FNAME * log_fame ; 1264 db_pgno_t ma_pgno ; 1265 DB_LOCKER * lock ; 1266 DB_LOCKER * cur_lock ; 1267 DB_TXN * cur_txn ; 1268 DB_LOCKER * assoc_lock ; 1269 DB_LOCK hd_lock ; 1271 u_t _id ; 1273 time_t timeamp ; 1274 u_t32_t fid_g ; 1279 DBT my_rskey ; 1280 DBT my_rkey ; 1281 DBT my_rda ; 1296 DB_FH * ved_ݒ_fhp ; 1307 __db * tqe_xt ; 1308 __db ** tqe_ev ; 1309 } dblilks ; 1320 s__cq_fq { 1321 __dbc * tqh_f ; 1322 __dbc ** tqh_ϡ ; 1323 } _queue ; 1324 s__cq_aq { 1325 __dbc * tqh_f ; 1326 __dbc ** tqh_ϡ ; 1327 } aive_queue ; 1328 s__cq_jq { 1329 __dbc * tqh_f ; 1330 __dbc ** tqh_ϡ ; 1331 } jo_queue ; 1343 __db * lh_f ; 1344 } s_cds ; 1359 __db * _xt ; 1360 __db ** _ev ; 1361 } s_lks ; 1362 u_t32_t s_ft ; 1365 (* s_back __P (( DB *, cڡ DBT *, const DBT *, DBT *)); 1368 DB * s_imy ; 1370 #DB_ASSOC_IMMUTABLE_KEY 0x00000001 ) 1373 u_t32_t s_assoc_ags ; 1385 __db_feign_fo * lh_f ; 1386 } f_ims ; 1389 DB * s_feign ; 1392 * i_ ; 1395 * bt_ ; 1396 * h_ ; 1397 * q_ ; 1398 * xa_ ; 1401 (* assoc __P (( DB *, DB_TXN *, DB *, 1402 (*)( DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 1403 (* assoc_feign __P (( DB *, DB *, 1404 (*)( DB *, cڡ DBT *, DBT *, const DBT *, *), 1405 u_t32_t )); 1406 (* o __P (( DB *, u_t32_t )); 1407 (* com __P (( DB *, 1408 DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)); 1409 (* curs __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 1410 (* d __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 1411 (* r __P (( DB *, , const *, ...)); 1412 (* rx __P (( DB *, const *, ...)); 1413 (* exis __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 1414 (* fd __P (( DB *, *)); 1415 (* g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 1416 (* g_bt_mkey __P (( DB *, u_t32_t *)); 1417 (* g_byswd __P (( DB *, *)); 1418 (* g_chesize __P (( DB *, u_t32_t *, u_int32_t *, *)); 1419 (* g_dbme __P (( DB *, const **, const **)); 1420 (* g_y_ags __P (( DB *, u_t32_t *)); 1421 DB_ENV *(* g_v __P (( DB *)); 1422 (* g_r __P (( DB *, 1423 (**)(cڡ DB_ENV *, const *, const *))); 1424 (* g_rfe __P (( DB *, FILE **)); 1425 (* g_fx __P (( DB *, const **)); 1426 (* g_ags __P (( DB *, u_t32_t *)); 1427 (* g_h_f __P (( DB *, u_t32_t *)); 1428 (* g_h_m __P (( DB *, u_t32_t *)); 1429 (* g_ld __P (( DB *, *)); 1430 DB_MPOOLFILE *(* g_mpf __P (( DB *)); 1431 (* g_msgfe __P (( DB *, FILE **)); 1432 (* g_muɝ __P (( DB *)); 1433 (* g_ݒ_ags __P (( DB *, u_t32_t *)); 1434 (* g_gesize __P (( DB *, u_t32_t *)); 1435 (* g_iܙy __P (( DB *, DB_CACHE_PRIORITY *)); 1436 (* g_q_exsize __P (( DB *, u_t32_t *)); 1437 (* g__dim __P (( DB *, *)); 1438 (* g__n __P (( DB *, u_t32_t *)); 1439 (* g__d __P (( DB *, *)); 1440 (* g__sour __P (( DB *, const **)); 1441 (* g_iڮ __P (( DB *)); 1442 (* g_ty __P (( DB *, DBTYPE *)); 1443 (* jo __P (( DB *, DBC **, DBC **, u_t32_t )); 1444 (* key_nge ) 1445 __P (( DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_t32_t )); 1446 (* ݒ __P (( DB *, 1447 DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , )); 1448 (* pg __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 1449 (* put __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 1450 (* move __P (( DB *, cڡ *, cڡ *, u_t32_t )); 1451 (* me __P (( DB *, 1452 cڡ *, cڡ *, cڡ *, u_t32_t )); 1453 (* t_loc __P (( DB *, *(*)( size_t ), 1454 *(*)(*, size_t ), (*)(*))); 1455 (* t_nd_o __P (( DB *, (*)(DB *, DBT *, db_o_t ))); 1456 (* t_bt_com ) 1457 __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 1458 (* t_bt_mkey __P (( DB *, u_t32_t )); 1459 (* t_bt_efix ) 1460 __P (( DB *, size_t (*)(DB *, cڡ DBT *, const DBT *))); 1461 (* t_chesize __P (( DB *, u_t32_t , u_int32_t, )); 1462 (* t_dup_com ) 1463 __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 1464 (* t_y __P (( DB *, cڡ *, u_t32_t )); 1465 (* t_r __P (( DB *, 1466 (*)(cڡ DB_ENV *, const *, const *))); 1467 (* t_rfe __P (( DB *, FILE *)); 1468 (* t_fx __P (( DB *, const *)); 1469 (* t_edback __P (( DB *, (*)(DB *, , ))); 1470 (* t_ags __P (( DB *, u_t32_t )); 1471 (* t_h_com ) 1472 __P (( DB *, (*)(DB *, cڡ DBT *, const DBT *))); 1473 (* t_h_f __P (( DB *, u_t32_t )); 1474 (* t_h_hash ) 1475 __P (( DB *, u_t32_t (*)(DB *, const *, u_int32_t))); 1476 (* t_h_m __P (( DB *, u_t32_t )); 1477 (* t_ld __P (( DB *, )); 1478 (* t_msg __P (( DB *, (*)(cڡ DB_ENV *, const *))); 1479 (* t_msgfe __P (( DB *, FILE *)); 1480 (* t_gesize __P (( DB *, u_t32_t )); 1481 (* t_nic __P (( DB *, (*)( DB_ENV *, ))); 1482 (* t_iܙy __P (( DB *, DB_CACHE_PRIORITY )); 1483 (* t_q_exsize __P (( DB *, u_t32_t )); 1484 (* t__dim __P (( DB *, )); 1485 (* t__n __P (( DB *, u_t32_t )); 1486 (* t__d __P (( DB *, )); 1487 (* t__sour __P (( DB *, const *)); 1488 (* __P (( DB *, DB_TXN *, *, u_t32_t )); 1489 (* _t __P (( DB *, u_t32_t )); 1490 (* sync __P (( DB *, u_t32_t )); 1491 (* un __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 1492 (* upgde __P (( DB *, cڡ *, u_t32_t )); 1493 (* vify ) 1494 __P (( DB *, cڡ *, cڡ *, FILE *, u_t32_t )); 1498 (* dump __P (( DB *, const *, 1500 (* db_am_move __P (( DB *, DB_TXN *, const *, const *)); 1501 (* db_am_me __P (( DB *, DB_TXN *, 1509 (* ed_g __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 1510 (* ed_o __P (( DB *, u_t32_t )); 1512 #DB_OK_BTREE 0x01 ) 1513 #DB_OK_HASH 0x02 ) 1514 #DB_OK_QUEUE 0x04 ) 1515 #DB_OK_RECNO 0x08 ) 1516 u_t32_t am_ok ; 1523 erve_fid ; 1525 #DB_AM_CHKSUM 0x00000001 ) 1526 #DB_AM_COMPENSATE 0x00000002 ) 1527 #DB_AM_CREATED 0x00000004 ) 1528 #DB_AM_CREATED_MSTR 0x00000008 ) 1529 #DB_AM_DBM_ERROR 0x00000010 ) 1530 #DB_AM_DELIMITER 0x00000020 ) 1531 #DB_AM_DISCARD 0x00000040 ) 1532 #DB_AM_DUP 0x00000080 ) 1533 #DB_AM_DUPSORT 0x00000100 ) 1534 #DB_AM_ENCRYPT 0x00000200 ) 1535 #DB_AM_FIXEDLEN 0x00000400 ) 1536 #DB_AM_INMEM 0x00000800 ) 1537 #DB_AM_INORDER 0x00001000 ) 1538 #DB_AM_IN_RENAME 0x00002000 ) 1539 #DB_AM_NOT_DURABLE 0x00004000 ) 1540 #DB_AM_OPEN_CALLED 0x00008000 ) 1541 #DB_AM_PAD 0x00010000 ) 1542 #DB_AM_PGDEF 0x00020000 ) 1543 #DB_AM_RDONLY 0x00040000 ) 1544 #DB_AM_READ_UNCOMMITTED 0x00080000 ) 1545 #DB_AM_RECNUM 0x00100000 ) 1546 #DB_AM_RECOVER 0x00200000 ) 1547 #DB_AM_RENUMBER 0x00400000 ) 1548 #DB_AM_REVSPLITOFF 0x00800000 ) 1549 #DB_AM_SECONDARY 0x01000000 ) 1550 #DB_AM_SNAPSHOT 0x02000000 ) 1551 #DB_AM_SUBDB 0x04000000 ) 1552 #DB_AM_SWAP 0x08000000 ) 1553 #DB_AM_TXN 0x10000000 ) 1554 #DB_AM_VERIFYING 0x20000000 ) 1555 u_t32_t ig_ags ; 1556 u_t32_t ags ; 1563 #DB_MULTIPLE_INIT ( por , dbt ) \ 1564 ( por = ( u_t8_t *)( dbt )-> da + \ 1565 ( dbt )-> un - ( u_t32_t )) ) 1566 #DB_MULTIPLE_NEXT ( por , dbt , tda , tdn ) \ 1568 i(*(( u_t32_t *)( por )) == (u_int32_t)-1) { \ 1569 tda = NULL ; \ 1570 por = NULL ; \ 1573 tda = ( u_t8_t *) \ 1574 ( dbt )-> da + *( u_t32_t *)( por ); \ 1575 ( por ( u_t32_t *)(pointer) - 1; \ 1576 tdn = *( u_t32_t *)( por ); \ 1577 ( por ( u_t32_t *)(pointer) - 1; \ 1578 i( tdn == 0 && \ 1579 tda =( u_t8_t *)( dbt )-> da ) \ 1580 tda = NULL ; \ 1581 } 0) ) 1582 #DB_MULTIPLE_KEY_NEXT ( por , dbt , tkey , tkn , tda , tdn ) \ 1584 i(*(( u_t32_t *)( por )) == (u_int32_t)-1) { \ 1585 tda = NULL ; \ 1586 tkey = NULL ; \ 1587 por = NULL ; \ 1590 tkey = ( u_t8_t *) \ 1591 ( dbt )-> da + *( u_t32_t *)( por ); \ 1592 ( por ( u_t32_t *)(pointer) - 1; \ 1593 tkn = *( u_t32_t *)( por ); \ 1594 ( por ( u_t32_t *)(pointer) - 1; \ 1595 tda = ( u_t8_t *) \ 1596 ( dbt )-> da + *( u_t32_t *)( por ); \ 1597 ( por ( u_t32_t *)(pointer) - 1; \ 1598 tdn = *( u_t32_t *)( por ); \ 1599 ( por ( u_t32_t *)(pointer) - 1; \ 1600 } 0) ) 1602 #DB_MULTIPLE_RECNO_NEXT ( por , dbt , o , tda , tdn ) \ 1604 i(*(( u_t32_t *)( por )) == (u_int32_t)0) { \ 1605 o = 0; \ 1606 tda = NULL ; \ 1607 por = NULL ; \ 1610 o = *( u_t32_t *)( por ); \ 1611 ( por ( u_t32_t *)(pointer) - 1; \ 1612 tda = ( u_t8_t *) \ 1613 ( dbt )-> da + *( u_t32_t *)( por ); \ 1614 ( por ( u_t32_t *)(pointer) - 1; \ 1615 tdn = *( u_t32_t *)( por ); \ 1616 ( por ( u_t32_t *)(pointer) - 1; \ 1617 } 0) ) 1622 s__dbc { 1623 DB * dbp ; 1624 DB_ENV * dbv ; 1625 ENV * v ; 1627 DB_THREAD_INFO * thad_fo ; 1628 DB_TXN * txn ; 1629 DB_CACHE_PRIORITY iܙy ; 1639 DBC * tqe_xt ; 1640 DBC ** tqe_ev ; 1641 } lks ; 1654 DBT * rskey ; 1655 DBT * rkey ; 1656 DBT * rda ; 1658 DBT my_rskey ; 1659 DBT my_rkey ; 1660 DBT my_rda ; 1662 DB_LOCKER * ef ; 1663 DB_LOCKER * lock ; 1664 DBT lock_dbt ; 1665 DB_LOCK_ILOCK lock ; 1666 DB_LOCK mylock ; 1668 u_t _id ; 1670 DBTYPE dbty ; 1672 DBC_INTERNAL * ; 1675 (* o __P (( DBC *)); 1676 (* cou __P (( DBC *, db_o_t *, u_t32_t )); 1677 (* d __P (( DBC *, u_t32_t )); 1678 (* dup __P (( DBC *, DBC **, u_t32_t )); 1679 (* g __P (( DBC *, DBT *, DBT *, u_t32_t )); 1680 (* g_iܙy __P (( DBC *, DB_CACHE_PRIORITY *)); 1681 (* pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 1682 (* put __P (( DBC *, DBT *, DBT *, u_t32_t )); 1683 (* t_iܙy __P (( DBC *, DB_CACHE_PRIORITY )); 1687 (* c_o __P (( DBC *)); 1688 (* c_cou __P (( DBC *, db_o_t *, u_t32_t )); 1689 (* c_d __P (( DBC *, u_t32_t )); 1690 (* c_dup __P (( DBC *, DBC **, u_t32_t )); 1691 (* c_g __P (( DBC *, DBT *, DBT *, u_t32_t )); 1692 (* c_pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 1693 (* c_put __P (( DBC *, DBT *, DBT *, u_t32_t )); 1696 (* am_bulk __P (( DBC *, DBT *, u_t32_t )); 1697 (* am_o __P (( DBC *, db_pgno_t , *)); 1698 (* am_d __P (( DBC *)); 1699 (* am_deroy __P (( DBC *)); 1700 (* am_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 1701 (* am_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 1702 (* am_wrock __P (( DBC *)); 1713 #DBC_ACTIVE 0x0001 ) 1714 #DBC_DONTLOCK 0x0002 ) 1715 #DBC_DUPLICATE 0x0004 ) 1716 #DBC_MULTIPLE 0x0008 ) 1717 #DBC_MULTIPLE_KEY 0x0010 ) 1718 #DBC_OPD 0x0020 ) 1719 #DBC_OWN_LID 0x0040 ) 1720 #DBC_READ_COMMITTED 0x0080 ) 1721 #DBC_READ_UNCOMMITTED 0x0100 ) 1722 #DBC_RECOVER 0x0200 ) 1723 #DBC_RMW 0x0400 ) 1724 #DBC_TRANSIENT 0x0800 ) 1725 #DBC_WRITECURSOR 0x1000 ) 1726 #DBC_WRITER 0x2000 ) 1727 u_t32_t ags ; 1731 s__key_nge { 1732 ss ; 1733 equ ; 1734 g ; 1738 s__db_bt_ { 1739 u_t32_t bt_magic ; 1740 u_t32_t bt_vsi ; 1741 u_t32_t bt_maags ; 1742 u_t32_t bt_nkeys ; 1743 u_t32_t bt_nda ; 1744 u_t32_t bt_get ; 1745 u_t32_t bt_gesize ; 1746 u_t32_t bt_mkey ; 1747 u_t32_t bt__n ; 1748 u_t32_t bt__d ; 1749 u_t32_t bt_vs ; 1750 u_t32_t bt_t_pg ; 1751 u_t32_t bt_af_pg ; 1752 u_t32_t bt_dup_pg ; 1753 u_t32_t bt_ov_pg ; 1754 u_t32_t bt_emy_pg ; 1755 u_t32_t bt_ ; 1756 u_t32_t bt_t_pg ; 1757 u_t32_t bt_af_pg ; 1758 u_t32_t bt_dup_pg ; 1759 u_t32_t bt_ov_pg ; 1762 s__db_com { 1764 u_t32_t com_f͔ ; 1765 db_timeout_t com_timeout ; 1766 u_t32_t com_ges ; 1768 u_t32_t com_ges_ ; 1769 u_t32_t com_ges_exame ; 1770 u_t32_t com_vs ; 1771 u_t32_t com_ddlock ; 1772 db_pgno_t com_ges_und ; 1774 db_pgno_t com_un ; 1778 s__db_h_ { 1779 u_t32_t hash_magic ; 1780 u_t32_t hash_vsi ; 1781 u_t32_t hash_maags ; 1782 u_t32_t hash_nkeys ; 1783 u_t32_t hash_nda ; 1784 u_t32_t hash_get ; 1785 u_t32_t hash_gesize ; 1786 u_t32_t hash_f ; 1787 u_t32_t hash_bucks ; 1788 u_t32_t hash_ ; 1789 u_t32_t hash_b ; 1790 u_t32_t hash_bigges ; 1791 u_t32_t hash_big_b ; 1792 u_t32_t hash_ovows ; 1793 u_t32_t hash_ov_ ; 1794 u_t32_t hash_dup ; 1795 u_t32_t hash_dup_ ; 1799 s__db_qam_ { 1800 u_t32_t qs_magic ; 1801 u_t32_t qs_vsi ; 1802 u_t32_t qs_maags ; 1803 u_t32_t qs_nkeys ; 1804 u_t32_t qs_nda ; 1805 u_t32_t qs_gesize ; 1806 u_t32_t qs_exsize ; 1807 u_t32_t qs_ges ; 1808 u_t32_t qs__n ; 1809 u_t32_t qs__d ; 1810 u_t32_t qs_pg ; 1811 u_t32_t qs_f_o ; 1812 u_t32_t qs_cur_o ; 1818 #DB_REGION_MAGIC 0x120897 ) 1833 s__db_v { 1834 ENV * v ; 1840 db_mux_t mtx_db_v ; 1843 (* db_r __P ((cڡ DB_ENV *, const *, const *)); 1844 FILE * db_rfe ; 1845 cڡ * db_fx ; 1848 (* db_msg __P ((cڡ DB_ENV *, const *)); 1849 FILE * db_msgfe ; 1852 (* p_dich __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 1853 (* db_evt_func __P (( DB_ENV *, u_t32_t , *)); 1854 (* db_edback __P (( DB_ENV *, , )); 1855 (* db_ __P ((*)); 1856 (* db_nic __P (( DB_ENV *, )); 1857 *(* db_mloc __P (( size_t )); 1858 *(* db_loc __P ((*, size_t )); 1859 (* is_ive __P (( DB_ENV *, pid_t , db_thadid_t , u_t32_t )); 1860 (* thad_id __P (( DB_ENV *, pid_t *, db_thadid_t *)); 1861 *(* thad_id_rg __P (( DB_ENV *, pid_t , db_thadid_t , *)); 1864 * db_log_d ; 1865 * db_tmp_d ; 1867 ** db_da_d ; 1868 da_t ; 1869 da_xt ; 1871 * rmed_d_mode ; 1873 shm_key ; 1875 * sswd ; 1876 size_t sswd_n ; 1878 * _hd ; 1879 u_t _id ; 1882 * p_ive ; 1883 * i1_ ; 1884 * i2_ ; 1886 u_t32_t vbo ; 1889 u_t32_t mux_ign ; 1890 u_t32_t mux_t ; 1891 u_t32_t mux_c ; 1892 u_t32_t mux_s_s ; 1895 u_t8_t * lk_cis ; 1896 lk_modes ; 1897 u_t32_t lk_de ; 1898 u_t32_t lk_max ; 1899 u_t32_t lk_max_locks ; 1900 u_t32_t lk_max_objes ; 1901 u_t32_t lk_is ; 1902 db_timeout_t lk_timeout ; 1905 u_t32_t lg_bsize ; 1906 lg_femode ; 1907 u_t32_t lg_gimax ; 1908 u_t32_t lg_size ; 1909 u_t32_t lg_ags ; 1912 u_t32_t mp_gbys ; 1913 u_t32_t mp_bys ; 1914 u_t32_t mp_max_gbys ; 1915 u_t32_t mp_max_bys ; 1916 size_t mp_mmsize ; 1917 mp_maxݒfd ; 1918 mp_maxwre ; 1919 u_t mp_nche ; 1921 db_timeout_t mp_maxwre_p ; 1924 u_t32_t tx_max ; 1925 time_t tx_timeamp ; 1926 db_timeout_t tx_timeout ; 1929 u_t32_t thr_max ; 1935 DB_FH * giry ; 1936 u_t32_t giry_off ; 1942 #DB_ENV_AUTO_COMMIT 0x00000001 ) 1943 #DB_ENV_CDB_ALLDB 0x00000002 ) 1944 #DB_ENV_DIRECT_DB 0x00000004 ) 1945 #DB_ENV_DSYNC_DB 0x00000008 ) 1946 #DB_ENV_MULTIVERSION 0x00000010 ) 1947 #DB_ENV_NOLOCKING 0x00000020 ) 1948 #DB_ENV_NOMMAP 0x00000040 ) 1949 #DB_ENV_NOPANIC 0x00000080 ) 1950 #DB_ENV_OVERWRITE 0x00000100 ) 1951 #DB_ENV_REGION_INIT 0x00000200 ) 1952 #DB_ENV_RPCCLIENT 0x00000400 ) 1953 #DB_ENV_RPCCLIENT_GIVEN 0x00000800 ) 1954 #DB_ENV_TIME_NOTGRANTED 0x00001000 ) 1955 #DB_ENV_TXN_NOSYNC 0x00002000 ) 1956 #DB_ENV_TXN_NOWAIT 0x00004000 ) 1957 #DB_ENV_TXN_SNAPSHOT 0x00008000 ) 1958 #DB_ENV_TXN_WRITE_NOSYNC 0x00010000 ) 1959 #DB_ENV_YIELDCPU 0x00020000 ) 1960 u_t32_t ags ; 1963 (* cdsgroup_beg __P (( DB_ENV *, DB_TXN **)); 1964 (* o __P (( DB_ENV *, u_t32_t )); 1965 (* dbmove __P (( DB_ENV *, 1966 DB_TXN *, cڡ *, cڡ *, u_t32_t )); 1967 (* dbme __P (( DB_ENV *, 1968 DB_TXN *, cڡ *, cڡ *, cڡ *, u_t32_t )); 1969 (* r __P ((cڡ DB_ENV *, , const *, ...)); 1970 (* rx __P ((cڡ DB_ENV *, const *, ...)); 1971 (* chk __P (( DB_ENV *, u_t32_t )); 1972 (* feid_t __P (( DB_ENV *, cڡ *, u_t32_t )); 1973 (* g_che_max __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 1974 (* g_chesize __P (( DB_ENV *, u_t32_t *, u_int32_t *, *)); 1975 (* g_da_ds __P (( DB_ENV *, const ***)); 1976 (* g_y_ags __P (( DB_ENV *, u_t32_t *)); 1977 (* g_r __P (( DB_ENV *, 1978 (**)(cڡ DB_ENV *, const *, const *))); 1979 (* g_rfe __P (( DB_ENV *, FILE **)); 1980 (* g_fx __P (( DB_ENV *, const **)); 1981 (* g_ags __P (( DB_ENV *, u_t32_t *)); 1982 (* g_home __P (( DB_ENV *, const **)); 1983 (* g_rmed_d_mode __P (( DB_ENV *, const **)); 1984 (* g_lg_bsize __P (( DB_ENV *, u_t32_t *)); 1985 (* g_lg_d __P (( DB_ENV *, const **)); 1986 (* g_lg_femode __P (( DB_ENV *, *)); 1987 (* g_lg_max __P (( DB_ENV *, u_t32_t *)); 1988 (* g_lg_gimax __P (( DB_ENV *, u_t32_t *)); 1989 (* g_lk_cis __P (( DB_ENV *, cڡ u_t8_t **, *)); 1990 (* g_lk_de __P (( DB_ENV *, u_t32_t *)); 1991 (* g_lk_max_locks __P (( DB_ENV *, u_t32_t *)); 1992 (* g_lk_max_locks __P (( DB_ENV *, u_t32_t *)); 1993 (* g_lk_max_objes __P (( DB_ENV *, u_t32_t *)); 1994 (* g_lk_is __P (( DB_ENV *, u_t32_t *)); 1995 (* g_mp_max_ݒfd __P (( DB_ENV *, *)); 1996 (* g_mp_max_wre __P (( DB_ENV *, *, db_timeout_t *)); 1997 (* g_mp_mmsize __P (( DB_ENV *, size_t *)); 1998 (* g_msgfe __P (( DB_ENV *, FILE **)); 1999 (* g_ݒ_ags __P (( DB_ENV *, u_t32_t *)); 2000 (* g_shm_key __P (( DB_ENV *, *)); 2001 (* g_thad_cou __P (( DB_ENV *, u_t32_t *)); 2002 (* g_timeout __P (( DB_ENV *, db_timeout_t *, u_t32_t )); 2003 (* g_tmp_d __P (( DB_ENV *, const **)); 2004 (* g_tx_max __P (( DB_ENV *, u_t32_t *)); 2005 (* g_tx_timeamp __P (( DB_ENV *, time_t *)); 2006 (* g_vbo __P (( DB_ENV *, u_t32_t , *)); 2007 (* is_bigdn __P (()); 2008 (* lock_de __P (( DB_ENV *, u_t32_t , u_int32_t, *)); 2009 (* lock_g __P (( DB_ENV *, 2010 u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)); 2011 (* lock_id __P (( DB_ENV *, u_t32_t *)); 2012 (* lock_id_ __P (( DB_ENV *, u_t32_t )); 2013 (* lock_put __P (( DB_ENV *, DB_LOCK *)); 2014 (* lock_ __P (( DB_ENV *, DB_LOCK_STAT **, u_t32_t )); 2015 (* lock__t __P (( DB_ENV *, u_t32_t )); 2016 (* lock_vec __P (( DB_ENV *, 2017 u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)); 2018 (* log_chive __P (( DB_ENV *, **[], u_t32_t )); 2019 (* log_curs __P (( DB_ENV *, DB_LOGC **, u_t32_t )); 2020 (* log_fe __P (( DB_ENV *, cڡ DB_LSN *, *, size_t )); 2021 (* log_ush __P (( DB_ENV *, cڡ DB_LSN *)); 2022 (* log_g_cfig __P (( DB_ENV *, u_t32_t , *)); 2023 (* log_tf __P (( DB_ENV *, DB_TXN *, const *, ...)); 2024 (* log_put __P (( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 2025 (* log_t_cfig __P (( DB_ENV *, u_t32_t , )); 2026 (* log_ __P (( DB_ENV *, DB_LOG_STAT **, u_t32_t )); 2027 (* log__t __P (( DB_ENV *, u_t32_t )); 2028 (* l_t __P (( DB_ENV *, cڡ *, u_t32_t )); 2029 (* memp_f __P (( DB_ENV *, DB_MPOOLFILE **, u_t32_t )); 2030 (* memp_gi __P (( DB_ENV *, , (*)(DB_ENV *, db_pgno_t , 2031 *, DBT *), (*)( DB_ENV *, db_pgno_t , *, DBT *))); 2032 (* memp_ __P (( DB_ENV *, 2033 DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )); 2034 (* memp__t __P (( DB_ENV *, u_t32_t )); 2035 (* memp_sync __P (( DB_ENV *, DB_LSN *)); 2036 (* memp_ick __P (( DB_ENV *, , *)); 2037 (* mux_loc __P (( DB_ENV *, u_t32_t , db_mux_t *)); 2038 (* mux_ __P (( DB_ENV *, db_mux_t )); 2039 (* mux_g_ign __P (( DB_ENV *, u_t32_t *)); 2040 (* mux_g_emt __P (( DB_ENV *, u_t32_t *)); 2041 (* mux_g_max __P (( DB_ENV *, u_t32_t *)); 2042 (* mux_g_s_s __P (( DB_ENV *, u_t32_t *)); 2043 (* mux_lock __P (( DB_ENV *, db_mux_t )); 2044 (* mux_t_ign __P (( DB_ENV *, u_t32_t )); 2045 (* mux_t_emt __P (( DB_ENV *, u_t32_t )); 2046 (* mux_t_max __P (( DB_ENV *, u_t32_t )); 2047 (* mux_t_s_s __P (( DB_ENV *, u_t32_t )); 2048 (* mux_ __P (( DB_ENV *, DB_MUTEX_STAT **, u_t32_t )); 2049 (* mux__t __P (( DB_ENV *, u_t32_t )); 2050 (* mux_uock __P (( DB_ENV *, db_mux_t )); 2051 (* ݒ __P (( DB_ENV *, cڡ *, u_t32_t , )); 2052 (* move __P (( DB_ENV *, cڡ *, u_t32_t )); 2053 (* p_e __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 2054 (* p_ush __P (( DB_ENV *)); 2055 (* p_g_ockskew __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 2056 (* p_g_cfig __P (( DB_ENV *, u_t32_t , *)); 2057 (* p_g_lim __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 2058 (* p_g_nses __P (( DB_ENV *, u_t32_t *)); 2059 (* p_g_iܙy __P (( DB_ENV *, u_t32_t *)); 2060 (* p_g_que __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 2061 (* p_g_timeout __P (( DB_ENV *, , u_t32_t *)); 2062 (* p_oss_mesge ) 2063 __P (( DB_ENV *, DBT *, DBT *, , DB_LSN *)); 2064 (* p_t_ockskew __P (( DB_ENV *, u_t32_t , u_int32_t)); 2065 (* p_t_cfig __P (( DB_ENV *, u_t32_t , )); 2066 (* p_t_lim __P (( DB_ENV *, u_t32_t , u_int32_t)); 2067 (* p_t_nses __P (( DB_ENV *, u_t32_t )); 2068 (* p_t_iܙy __P (( DB_ENV *, u_t32_t )); 2069 (* p_t_que __P (( DB_ENV *, u_t32_t , u_int32_t)); 2070 (* p_t_timeout __P (( DB_ENV *, , db_timeout_t )); 2071 (* p_t_t __P (( DB_ENV *, , (*)(DB_ENV *, 2072 cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t ))); 2073 (* p_t __P (( DB_ENV *, DBT *, u_t32_t )); 2074 (* p_ __P (( DB_ENV *, DB_REP_STAT **, u_t32_t )); 2075 (* p__t __P (( DB_ENV *, u_t32_t )); 2076 (* p_sync __P (( DB_ENV *, u_t32_t )); 2077 (* pmgr_add_me_se ) 2078 __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 2079 (* pmgr_g_ack_picy __P (( DB_ENV *, *)); 2080 (* pmgr_t_ack_picy __P (( DB_ENV *, )); 2081 (* pmgr_t_lol_se ) 2082 __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 2083 (* pmgr_se_li ) 2084 __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 2085 (* pmgr_t __P (( DB_ENV *, , u_t32_t )); 2086 (* pmgr_ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 2087 (* pmgr__t __P (( DB_ENV *, u_t32_t )); 2088 (* t_loc __P (( DB_ENV *, *(*)( size_t ), 2089 *(*)(*, size_t ), (*)(*))); 2090 (* t_p_dich ) 2091 __P (( DB_ENV *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs ))); 2092 (* t_che_max __P (( DB_ENV *, u_t32_t , u_int32_t)); 2093 (* t_chesize __P (( DB_ENV *, u_t32_t , u_int32_t, )); 2094 (* t_da_d __P (( DB_ENV *, const *)); 2095 (* t_y __P (( DB_ENV *, cڡ *, u_t32_t )); 2096 (* t_r __P (( DB_ENV *, 2097 (*)(cڡ DB_ENV *, const *, const *))); 2098 (* t_rfe __P (( DB_ENV *, FILE *)); 2099 (* t_fx __P (( DB_ENV *, const *)); 2100 (* t_evt_nify ) 2101 __P (( DB_ENV *, (*)(DB_ENV *, u_t32_t , *))); 2102 (* t_edback __P (( DB_ENV *, (*)(DB_ENV *, , ))); 2103 (* t_ags __P (( DB_ENV *, u_t32_t , )); 2104 (* t_rmed_d_mode __P (( DB_ENV *, const *)); 2105 (* t_ilive __P (( DB_ENV *, 2106 (*)( DB_ENV *, pid_t , db_thadid_t , u_t32_t ))); 2107 (* t_lg_bsize __P (( DB_ENV *, u_t32_t )); 2108 (* t_lg_d __P (( DB_ENV *, const *)); 2109 (* t_lg_femode __P (( DB_ENV *, )); 2110 (* t_lg_max __P (( DB_ENV *, u_t32_t )); 2111 (* t_lg_gimax __P (( DB_ENV *, u_t32_t )); 2112 (* t_lk_cis __P (( DB_ENV *, u_t8_t *, )); 2113 (* t_lk_de __P (( DB_ENV *, u_t32_t )); 2114 (* t_lk_max_locks __P (( DB_ENV *, u_t32_t )); 2115 (* t_lk_max_locks __P (( DB_ENV *, u_t32_t )); 2116 (* t_lk_max_objes __P (( DB_ENV *, u_t32_t )); 2117 (* t_lk_is __P (( DB_ENV *, u_t32_t )); 2118 (* t_mp_max_ݒfd __P (( DB_ENV *, )); 2119 (* t_mp_max_wre __P (( DB_ENV *, , db_timeout_t )); 2120 (* t_mp_mmsize __P (( DB_ENV *, size_t )); 2121 (* t_msg ) 2122 __P (( DB_ENV *, (*)(const DB_ENV *, const *))); 2123 (* t_msgfe __P (( DB_ENV *, FILE *)); 2124 (* t_nic __P (( DB_ENV *, (*)(DB_ENV *, ))); 2125 (* t_c_rv ) 2126 __P (( DB_ENV *, *, cڡ *, , , u_t32_t )); 2127 (* t_shm_key __P (( DB_ENV *, )); 2128 (* t_thad_cou __P (( DB_ENV *, u_t32_t )); 2129 (* t_thad_id ) 2130 __P (( DB_ENV *, (*)(DB_ENV *, pid_t *, db_thadid_t *))); 2131 (* t_thad_id_rg __P (( DB_ENV *, 2132 *(*)( DB_ENV *, pid_t , db_thadid_t , *))); 2133 (* t_timeout __P (( DB_ENV *, db_timeout_t , u_t32_t )); 2134 (* t_tmp_d __P (( DB_ENV *, const *)); 2135 (* t_tx_max __P (( DB_ENV *, u_t32_t )); 2136 (* t_tx_timeamp __P (( DB_ENV *, time_t *)); 2137 (* t_vbo __P (( DB_ENV *, u_t32_t , )); 2138 (* _t __P (( DB_ENV *, u_t32_t )); 2139 (* txn_beg __P (( DB_ENV *, DB_TXN *, DB_TXN **, u_t32_t )); 2140 (* txn_checkpot __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 2141 (* txn_cov ) 2142 __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t )); 2143 (* txn_ __P (( DB_ENV *, DB_TXN_STAT **, u_t32_t )); 2144 (* txn__t __P (( DB_ENV *, u_t32_t )); 2148 (* dbt __P (( DBT *, 2158 s__db_diab { 2159 (** t_dich __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 2160 size_t t_size ; 2161 (** ext_dich __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 2162 size_t ext_size ; 2165 #ide DB_DBM_HSEARCH 2166 #DB_DBM_HSEARCH 0 ) 2168 #i DB_DBM_HSEARCH != 0 2172 __db tDBM ; 2174 #DBM_INSERT 0 ) 2175 #DBM_REPLACE 1 ) 2181 #DBM_SUFFIX ".db" ) 2183 #i defed ( _XPG4_2 ) 2185 * dr ; 2186 size_t dsize ; 2187 } tdum ; 2190 * dr ; 2191 dsize ; 2192 } tdum ; 2199 #dbm_ ( a __db_ndbm_ @ DB_VERSION_UNIQUE_NAME @) ) 2200 #dbm_o ( a __db_ndbm_o @ DB_VERSION_UNIQUE_NAME @) ) 2201 #dbm_de ( a , b __db_ndbm_de @ DB_VERSION_UNIQUE_NAME @, b) ) 2202 #dbm_do ( a __db_ndbm_do @ DB_VERSION_UNIQUE_NAME @) ) 2203 #dbm_r ( a __db_ndbm_r @ DB_VERSION_UNIQUE_NAME @) ) 2204 #dbm_tch ( a , b __db_ndbm_tch @ DB_VERSION_UNIQUE_NAME @, b) ) 2205 #dbm_fkey ( a __db_ndbm_fkey @ DB_VERSION_UNIQUE_NAME @) ) 2206 #dbm_xtkey ( a __db_ndbm_xtkey @ DB_VERSION_UNIQUE_NAME @) ) 2207 #dbm_ݒ ( a , b , c __db_ndbm_ݒ @ DB_VERSION_UNIQUE_NAME @, b, c) ) 2208 #dbm_go ( a __db_ndbm_go @ DB_VERSION_UNIQUE_NAME @) ) 2209 #dbm_rdly ( a __db_ndbm_rdly @ DB_VERSION_UNIQUE_NAME @) ) 2210 #dbm_e ( a , b , c , d ) \ 2211 __db_ndbm_e @ DB_VERSION_UNIQUE_NAME @( a , b , c , d ) ) 2220 #dbm ( a __db_dbm_ @ DB_VERSION_UNIQUE_NAME @) ) 2221 #dbmo __db_dbm_o @ DB_VERSION_UNIQUE_NAME @ ) 2222 #i! defed ( __lulus ) 2223 #de ( a __db_dbm_de @ DB_VERSION_UNIQUE_NAME @) ) 2225 #tch ( a __db_dbm_tch @ DB_VERSION_UNIQUE_NAME @) ) 2226 #fkey __db_dbm_fkey @ DB_VERSION_UNIQUE_NAME @ ) 2227 #xtkey ( a __db_dbm_xtkey @ DB_VERSION_UNIQUE_NAME @) ) 2228 #e ( a , b __db_dbm_e @ DB_VERSION_UNIQUE_NAME @, b) ) 2234 FIND , ENTER 2235 } tACTION ; 2237 sy { 2238 * key ; 2239 * da ; 2240 } tENTRY ; 2242 #h ( a __db_h @ DB_VERSION_UNIQUE_NAME @) ) 2243 #hderoy __db_hderoy @ DB_VERSION_UNIQUE_NAME @ ) 2244 #hch ( a , b __db_hch @ DB_VERSION_UNIQUE_NAME @, b) ) 2248 #i defed ( __lulus ) 2252 @ 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 ) 15 __db_feign_fo ; \ 16 __db_feign_fo tDB_FOREIGN_INFO ; 22 s__db_feign_fo { 23 DB * dbp ; 24 u_t32_t ags ; 25 (* back __P (( DB *, cڡ DBT *, DBT *, const DBT *, *)); 35 __db_feign_fo * _xt ; 36 __db_feign_fo ** _ev ; 37 } f_lks ; 44 #IS_ENV_AUTO_COMMIT ( v , txn , ags ) \ 45 ( `LF_ISSET ( DB_AUTO_COMMIT || (( txn = NULL && \ 46 `F_ISSET (( v )-> dbv , DB_ENV_AUTO_COMMIT ) && \ 47 ! `LF_ISSET ( DB_NO_AUTO_COMMIT ))) ) 53 #IS_DB_AUTO_COMMIT ( dbp , txn ) \ 54 (( txn = NULL && `F_ISSET (( dbp ), DB_AM_TXN )) ) 61 #STRIP_AUTO_COMMIT ( f `FLD_CLR ((f), DB_AUTO_COMMIT ) ) 64 #DB_ADD_DUP 1 ) 65 #DB_REM_DUP 2 ) 66 #DB_ADD_BIG 3 ) 67 #DB_REM_BIG 4 ) 68 #DB_ADD_PAGE_COMPAT 5 ) 69 #DB_REM_PAGE_COMPAT 6 ) 74 #REC_INTRO ( func , , do_curs ) do { \ 75 gp = NULL ; \ 76 dbc = NULL ; \ 77 fe_dbp = NULL ; \ 78 `COMPQUIET ( mpf , NULL ); \ 79 i(( t = `func ( v , & fe_dbp , \ 80 ( fo ! NULL ? (( DB_TXNHEAD *)fo)-> td : NULL, \ 81 db -> da , & gp )) != 0) { \ 82 i( t = DB_DELETED ) { \ 83 t = 0; \ 84 de ; \ 86 out ; \ 88 i( do_curs ) { \ 89 i(( t = \ 90 `__db_curs ( fe_dbp , , NULL , & dbc , 0)) != 0) \ 91 out ; \ 92 `F_SET ( dbc , DBC_RECOVER ); \ 94 mpf = fe_dbp ->mpf; \ 95 } 0) ) 97 #REC_CLOSE { \ 98 __t_t ; \ 99 i( gp ! NULL ) \ 100 `__os_ ( v , gp ); \ 101 i( dbc ! NULL && \ 102 ( __t_t = `__dbc_o ( dbc )!0 && t == 0) \ 103 t = __t_t ; \ 105 ( t ) ) 110 #REC_NOOP_INTRO ( func ) do { \ 111 gp = NULL ; \ 112 i(( t = `func ( v , db -> da , & gp )) != 0) \ 113 ( t ); \ 114 } 0) ) 115 #REC_NOOP_CLOSE \ 116 i( gp ! NULL ) \ 117 `__os_ ( v , gp ); \ 118 ( t ) ) 124 #REC_FGET ( mpf , , pgno , g , ct ) \ 125 i(( t = `__memp_fg ( mpf , \ 126 &( pgno ), , NULL , 0, g )) != 0) { \ 127 i( t ! DB_PAGE_NOTFOUND ) { \ 128 t = `__db_pgr ( fe_dbp , pgno ,et); \ 129 out ; \ 131 ct ; \ 132 } ) 133 #REC_DIRTY ( mpf , , iܙy , g ) \ 134 i(( t = `__memp_dty ( mpf , \ 135 g , , NULL , iܙy , DB_MPOOL_EDIT )) != 0) { \ 136 t = `__db_pgr ( fe_dbp , `PGNO (*( g )),et); \ 137 out ; \ 138 } ) 143 #ifde DEBUG_RECOVER 144 #REC_PRINT ( func ) \ 145 () `func ( v , db , lp , , fo ); ) 147 #REC_PRINT ( func ) ) 153 #LCK_ALWAYS 1 ) 154 #LCK_COUPLE 2 ) 155 #LCK_COUPLE_ALWAYS 3 ) 156 #LCK_DOWNGRADE 4 ) 157 #LCK_ROLLBACK 5 ) 165 #__LPUT ( dbc , lock ) \ 166 `__ENV_LPUT (( dbc )-> v , lock ) ) 168 #__ENV_LPUT ( v , lock ) \ 169 ( `LOCK_ISSET ( lock ? `__lock_put ( v , &ock): 0) ) 181 #__TLPUT ( dbc , lock ) \ 182 ( `LOCK_ISSET ( lock ? `__db_ut ( dbc , &ock): 0) ) 189 #DB_IS_READONLY ( dbp ) \ 190 ( `F_ISSET ( dbp , DB_AM_RDONLY ) || \ 191 ( `IS_REP_CLIENT (( dbp )-> v && ! `F_ISSET ((dbp), DB_AM_NOT_DURABLE ))) ) 205 #ifde HAVE_HASH 206 #DB_RETURNS_A_KEY_HASH ( dbp ) \ 207 (( HASH *)( dbp )-> h_ )-> h_com ! NULL ) 209 #DB_RETURNS_A_KEY_HASH ( dbp 0 ) 211 #DB_RETURNS_A_KEY ( dbp , ags ) \ 212 ((( ags !0 && (ags! DB_GET_BOTH && \ 213 ( ags ! DB_GET_BOTH_RANGE && (ags! DB_SET ) || \ 214 (( BTREE *)( dbp )-> bt_ )-> bt_com ! __bam_defcmp ||\ 215 `DB_RETURNS_A_KEY_HASH ( dbp )) ) 225 ~"dbc/db_sw.h " 227 #SWAP_IF_NEEDED ( sdbp , pkey ) \ 229 i((( sdbp )-> s_imy -> ty = DB_QUEUE || \ 230 ( sdbp )-> s_imy -> ty = DB_RECNO ) && \ 231 `F_ISSET (( sdbp ), DB_AM_SWAP )) \ 232 `P_32_SWAP (( pkey )-> da ); \ 233 } 0) ) 240 #FIND_FIRST_DB_MATCH ( v , dbp , tdbp ) do { \ 241 ( tdbp ( dbp ); \ 242 `TAILQ_PREV (( tdbp ), __dbli , dblilks ! NULL && \ 243 `TAILQ_PREV (( tdbp ), \ 244 __dbli , dblilks )-> adj_feid =( dbp )->adj_fileid;\ 245 ( tdbp `TAILQ_PREV (dbp), __dbli , dblilks )) \ 247 } 0) ) 253 #DB_BINARY_SEARCH_FOR ( ba , lim , ge , adju ) \ 254 ba = 0, lim = `NUM_ENT ( ge / ( db_dx_t )( adju ); \ 255 ( lim !0; (lim>>1) ) 257 #DB_BINARY_SEARCH_INCR ( dex , ba , lim , adju ) \ 258 dex = ( ba + ((( lim >> 1* ( adju )) ) 260 #DB_BINARY_SEARCH_SHIFT_BASE ( dex , ba , lim , adju ) do { \ 261 ba = ( dex + ( adju ); \ 262 --( lim ); \ 263 } 0) ) 268 #SEQ_IS_OPEN ( q ((q)-> q_key . da ! NULL ) ) 270 #SEQ_ILLEGAL_AFTER_OPEN ( q , me ) \ 271 i( `SEQ_IS_OPEN ( q )) \ 272 ( `__db_mi_ݒ (( q )-> q_dbp -> v , me , 1)); ) 274 #SEQ_ILLEGAL_BEFORE_OPEN ( q , me ) \ 275 i(! `SEQ_IS_OPEN ( q )) \ 276 ( `__db_mi_ݒ (( q )-> q_dbp -> v , me , 0)); ) 281 #DB_CHK_META 0x01 ) 282 #DB_CHK_NOLSN 0x02 ) 284 #i defed ( __lulus ) 288 ~"dbc/db_dich.h " 289 ~"dbc_auto/db_auto.h " 290 ~"dbc_auto/d_auto.h " 291 ~"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 ENV * $g_ENV () 289 imp_ -> v ; 292 vtu DB * $g_DB () 294 imp_ ; 295 } } 297 vtu cڡ DB * $g_cڡ_DB () const 299 imp_ ; 300 } } 302 Db * $g_Db ( DB * db ) 304 ( Db *) db -> i_ ; 305 } } 307 cڡ Db * $g_cڡ_Db (cڡ DB * db ) 309 (cڡ Db *) db -> i_ ; 310 } } 312 ive : 314 Db (const Db &); 315 Db & ݔ = (const Db &); 317 nup (); 318 lize (); 319 r_picy (); 322 DB * imp_ ; 323 DbEnv * dbv_ ; 324 DbMpoFe * mpf_ ; 325 cڡru_r_ ; 326 u_t32_t ags_ ; 327 u_t32_t cڡru_ags_ ; 329 public : 334 (* nd_o_back_ )( Db *, Dbt *, db_o_t ); 335 (* assoc_back_ )( Db *, cڡ Dbt *, const Dbt *, Dbt *); 336 (* bt_com_back_ )( Db *, cڡ Dbt *, const Dbt *); 337 $size_t (* bt_efix_back_ )( Db *, cڡ Dbt *, const Dbt *); 338 (* dup_com_back_ )( Db *, cڡ Dbt *, const Dbt *); 339 (* edback_back_ )( Db *, , ); 340 (* h_com_back_ )( Db *, cڡ Dbt *, const Dbt *); 341 $u_t32_t (* h_hash_back_ )( Db *, cڡ *, u_t32_t ); 342 } }; 347 as c_exp܋d mDbc : eed DBC 349 nd ass Db ; 351 mpublic : 352 o (); 353 cou ( db_o_t * coup , u_t32_t ags ); 354 d ( u_t32_t ags ); 355 dup ( Dbc ** cursp , u_t32_t ags ); 356 g ( Dbt * key , Db* da , u_t32_t ags ); 357 g_iܙy ( DB_CACHE_PRIORITY * iܙyp ); 358 pg ( Dbt * key , Dbt* pkey , Db* da , u_t32_t ags ); 359 put ( Dbt * key , Db* da , u_t32_t ags ); 360 t_iܙy ( DB_CACHE_PRIORITY iܙy ); 362 mive : 368 Dbc (); 369 ~ Dbc (); 372 Dbc (const Dbc &); 373 mDbc & mݔ = (cڡ Dbc &); 385 as c_exp܋d mDbEnv 387 nd ass mDb ; 388 nd ass mDbLock ; 389 nd ass mDbMpoFe ; 391 mpublic : 397 DbEnv ( u_t32_t ags ); 399 mvtu ~ DbEnv (); 403 vtu cdsgroup_beg ( DbTxn ** tid ); 404 vtu o ( u_t32_t ); 405 vtu dbmove ( DbTxn * txn , cڡ * me , cڡ * subdb , 406 u_t32_t ags ); 407 vtu dbme ( DbTxn * txn , cڡ * me , cڡ * subdb , 408 cڡ * wme , u_t32_t ags ); 409 vtu r (, const *, ...); 410 vtu rx (const *, ...); 411 vtu chk ( u_t32_t ); 412 vtu feid_t (cڡ *, u_t32_t ); 413 vtu * $g_p_ive () const; 414 vtu `g_home (const **); 415 vtu `g_ݒ_ags ( u_t32_t *); 416 vtu `ݒ (cڡ *, u_t32_t , ); 417 vtu `move (cڡ *, u_t32_t ); 418 vtu `_t ( u_t32_t ags ); 420 vtu `t_loc ( db_mloc_f_ty , db_loc_f_ty , 421 db__f_ty ); 422 vtu `t_p_ive (*); 423 vtu `g_chesize ( u_t32_t *, u_int32_t *, *); 424 vtu `t_chesize ( u_t32_t , u_int32_t, ); 425 vtu `g_che_max ( u_t32_t *, u_int32_t *); 426 vtu `t_che_max ( u_t32_t , u_int32_t); 427 vtu `g_da_ds (const ***); 428 vtu `t_da_d (const *); 429 vtu `g_y_ags ( u_t32_t *); 430 vtu `g_rmed_d_mode (const **); 431 vtu `t_rmed_d_mode (const *); 432 vtu `t_ilive ( 433 (*)( DbEnv *, pid_t , db_thadid_t , u_t32_t )); 434 vtu `t_y (cڡ *, u_t32_t ); 435 vtu `t_r ( 436 (*)(cڡ DbEnv *, const *, const *)); 437 vtu `g_rfe ( FILE **); 438 vtu `t_rfe ( FILE *); 439 vtu `g_fx (const **); 440 vtu `t_fx (const *); 441 vtu `t_evt_nify ((*)( DbEnv *, u_t32_t , *)); 442 vtu `g_ags ( u_t32_t *); 443 vtu `t_ags ( u_t32_t , ); 444 vtu bo `is_bigdn (); 445 vtu `l_t (cڡ *, u_t32_t ); 446 vtu `t_edback ((*)( DbEnv *, , )); 447 vtu `g_lg_bsize ( u_t32_t *); 448 vtu `t_lg_bsize ( u_t32_t ); 449 vtu `g_lg_d (const **); 450 vtu `t_lg_d (const *); 451 vtu `g_lg_femode (*); 452 vtu `t_lg_femode (); 453 vtu `g_lg_max ( u_t32_t *); 454 vtu `t_lg_max ( u_t32_t ); 455 vtu `g_lg_gimax ( u_t32_t *); 456 vtu `t_lg_gimax ( u_t32_t ); 457 vtu `g_lk_cis (cڡ u_t8_t **, *); 458 vtu `t_lk_cis ( u_t8_t *, ); 459 vtu `g_lk_de ( u_t32_t *); 460 vtu `t_lk_de ( u_t32_t ); 461 vtu `g_lk_max_locks ( u_t32_t *); 462 vtu `t_lk_max_locks ( u_t32_t ); 463 vtu `g_lk_max_locks ( u_t32_t *); 464 vtu `t_lk_max_locks ( u_t32_t ); 465 vtu `g_lk_max_objes ( u_t32_t *); 466 vtu `t_lk_max_objes ( u_t32_t ); 467 vtu `g_mp_mmsize ( size_t *); 468 vtu `t_mp_mmsize ( size_t ); 469 vtu `g_mp_max_ݒfd (*); 470 vtu `t_mp_max_ݒfd (); 471 vtu `g_mp_max_wre (*, db_timeout_t *); 472 vtu `t_mp_max_wre (, db_timeout_t ); 473 vtu `t_msg ((*)(cڡ DbEnv *, const *)); 474 vtu `g_msgfe ( FILE **); 475 vtu `t_msgfe ( FILE *); 476 vtu `t_nic ((*)( DbEnv *, )); 477 vtu `t_c_rv (*, *, , , u_t32_t ); 478 vtu `g_shm_key (*); 479 vtu `t_shm_key (); 480 vtu `g_timeout ( db_timeout_t *, u_t32_t ); 481 vtu `t_timeout ( db_timeout_t , u_t32_t ); 482 vtu `g_tmp_d (const **); 483 vtu `t_tmp_d (const *); 484 vtu `g_tx_max ( u_t32_t *); 485 vtu `t_tx_max ( u_t32_t ); 486 vtu `t_p_dich ((*)( DbEnv *, 487 Dbt *, DbL *, db_cs )); 488 vtu `g_tx_timeamp ( time_t *); 489 vtu `t_tx_timeamp ( time_t *); 490 vtu `g_vbo ( u_t32_t which , *); 491 vtu `t_vbo ( u_t32_t which , ); 495 * `vsi (* maj , * m , * tch ); 498 * ` (); 509 vtu `__DB_STD ( oam * `g_r_am (); 510 vtu `t_r_am ( `__DB_STD ( oam ) *); 511 vtu `__DB_STD ( oam * `g_mesge_am (); 512 vtu `t_mesge_am ( `__DB_STD ( oam ) *); 515 `ruime_r ( DbEnv * dbv , cڡ * Δ , r , 516 r_picy ); 517 `ruime_r_dbt ( DbEnv * dbv , cڡ * Δ , Dbt * dbt , 518 r_picy ); 519 `ruime_r_lock_g ( DbEnv * dbv , cڡ * Δ , 520 r , db_lock_t , db_lockmode_t mode , 521 cڡ Dbt * obj , DbLock lock , dex , 522 r_picy ); 526 vtu `lock_de ( u_t32_t ags , u_t32_ y , * ab܋d ); 527 vtu `lock_g ( u_t32_t lock , u_t32_ ags , cڡ Dbt * obj , 528 db_lockmode_t lock_mode , DbLock * lock ); 529 vtu `lock_id ( u_t32_t * idp ); 530 vtu `lock_id_ ( u_t32_t id ); 531 vtu `lock_put ( DbLock * lock ); 532 vtu `lock_ ( DB_LOCK_STAT ** p , u_t32_t ags ); 533 vtu `lock__t ( u_t32_t ags ); 534 vtu `lock_vec ( u_t32_t lock , u_t32_ ags , 535 DB_LOCKREQ li [], i , DB_LOCKREQ ** ip ); 539 vtu `log_chive (** li [], u_t32_t ags ); 540 `log_com (cڡ DbL * l0 , cڡ DbL * l1 ); 541 vtu `log_curs ( DbLogc ** cursp , u_t32_t ags ); 542 vtu `log_fe ( DbL * l , * m , size_t n ); 543 vtu `log_ush (cڡ DbL * l ); 544 vtu `log_g_cfig ( u_t32_t , *); 545 vtu `log_put ( DbL * l , cڡ Dbt * da , u_t32_t ags ); 546 vtu `log_tf ( DbTxn *, const *, ...); 547 vtu `log_t_cfig ( u_t32_t , ); 548 vtu `log_ ( DB_LOG_STAT ** p , u_t32_t ags ); 549 vtu `log__t ( u_t32_t ags ); 553 vtu `memp_f ( DbMpoFe ** dbm , u_t32_t ags ); 554 vtu `memp_gi ( y , 555 pg_f_ty pg_f , 556 pgout_f_ty pgout_f ); 557 vtu `memp_ ( DB_MPOOL_STAT 558 ** g , DB_MPOOL_FSTAT *** f , u_t32_t ags ); 559 vtu `memp__t ( u_t32_t ags ); 560 vtu `memp_sync ( DbL * l ); 561 vtu `memp_ick ( p , * nwrٕ ); 565 vtu `mux_loc ( u_t32_t , db_mux_t *); 566 vtu `mux_ ( db_mux_t ); 567 vtu `mux_g_ign ( u_t32_t *); 568 vtu `mux_g_emt ( u_t32_t *); 569 vtu `mux_g_max ( u_t32_t *); 570 vtu `mux_g_s_s ( u_t32_t *); 571 vtu `mux_lock ( db_mux_t ); 572 vtu `mux_t_ign ( u_t32_t ); 573 vtu `mux_t_emt ( u_t32_t ); 574 vtu `mux_t_max ( u_t32_t ); 575 vtu `mux_t_s_s ( u_t32_t ); 576 vtu `mux_ ( DB_MUTEX_STAT **, u_t32_t ); 577 vtu `mux__t ( u_t32_t ); 578 vtu `mux_uock ( db_mux_t ); 582 vtu `txn_beg ( DbTxn * pid , DbTx** tid , u_t32_t ags ); 583 vtu `txn_checkpot ( u_t32_t kby , u_t32_ m , 584 u_t32_t ags ); 585 vtu `txn_cov ( DbPi * li , cou , 586 * , u_t32_t ags ); 587 vtu `txn_ ( DB_TXN_STAT ** p , u_t32_t ags ); 588 vtu `txn__t ( u_t32_t ags ); 592 vtu `p_e ( u_t32_t , u_int32_t, u_int32_t); 593 vtu `p_ush (); 594 vtu `p_oss_mesge ( Dbt *, Db*, , DbL *); 595 vtu `p_t ( Dbt *, u_t32_t ); 596 vtu `p_ ( DB_REP_STAT ** p , u_t32_t ags ); 597 vtu `p__t ( u_t32_t ags ); 598 vtu `p_g_ockskew ( u_t32_t *, u_int32_t *); 599 vtu `p_t_ockskew ( u_t32_t , u_int32_t); 600 vtu `p_g_lim ( u_t32_t *, u_int32_t *); 601 vtu `p_t_lim ( u_t32_t , u_int32_t); 602 vtu `p_t_t (, (*)( DbEnv *, 603 cڡ Dbt *, cڡ Db*, cڡ DbL *, , u_t32_t )); 604 vtu `p_t_que ( u_t32_t , u_int32_t); 605 vtu `p_g_que ( u_t32_t *, u_int32_t *); 606 vtu `g_thad_cou ( u_t32_t *); 607 vtu `t_thad_cou ( u_t32_t ); 608 vtu `t_thad_id ((*)( DbEnv *, pid_t *, db_thadid_t *)); 609 vtu `t_thad_id_rg (*(*)( DbEnv *, 610 pid_t , db_thadid_t , *)); 611 vtu `p_t_cfig ( u_t32_t , ); 612 vtu `p_g_cfig ( u_t32_t , *); 613 vtu `p_sync ( u_t32_t ags ); 617 vtu `p_g_nses ( u_t32_t * n ); 618 vtu `p_t_nses ( u_t32_t n ); 619 vtu `p_g_iܙy ( u_t32_t * iܙyp ); 620 vtu `p_t_iܙy ( u_t32_t iܙy ); 621 vtu `p_g_timeout ( which , db_timeout_t * timeout ); 622 vtu `p_t_timeout ( which , db_timeout_t timeout ); 623 vtu `pmgr_add_me_se (cڡ * ho , u_t16_t pt , 624 * eidp , u_t32_t ags ); 625 vtu `pmgr_g_ack_picy (* picy ); 626 vtu `pmgr_t_ack_picy ( picy ); 627 vtu `pmgr_t_lol_se (cڡ * ho , u_t16_t pt , 628 u_t32_t ags ); 629 vtu `pmgr_se_li ( u_t * coup , DB_REPMGR_SITE ** lip ); 630 vtu `pmgr_t ( hads , u_t32_t ags ); 631 vtu `pmgr_ ( DB_REPMGR_STAT ** p , u_t32_t ags ); 632 vtu `pmgr__t ( u_t32_t ags ); 636 vtu ENV * $g_ENV () 638 imp_ -> v ; 641 vtu DB_ENV * $g_DB_ENV () 643 imp_ ; 644 } } 646 vtu cڡ DB_ENV * $g_cڡ_DB_ENV () const 648 imp_ ; 649 } } 651 DbEnv * $g_DbEnv ( DB_ENV * dbv ) 653 dbv ? ( DbEnv *)dbv-> i1_ : 0; 654 } } 656 cڡ DbEnv * $g_cڡ_DbEnv (cڡ DB_ENV * dbv ) 658 dbv ? (cڡ DbEnv *)dbv-> i1_ : 0; 659 } } 662 DbEnv * wp_DB_ENV ( DB_ENV * dbv ); 668 _p_dich_r ( DB_ENV * dbv , DBT * dbt , DB_LSN * l , 669 db_cs ); 670 _nic_r ( DB_ENV * dbv , rv ); 671 _edback_r ( DB_ENV * dbv , code , p ); 672 _evt_func_r ( DB_ENV * dbv , u_t32_t , *); 673 _ilive_r ( DB_ENV * dbv , pid_t pid , 674 db_thadid_t thrid , u_t32_t ags ); 675 _p_nd_r ( DB_ENV * dbv , cڡ DBT * l , 676 cڡ DBT * da , cڡ DB_LSN * l , id , u_t32_t ags ); 677 _am_r_funi (cڡ DB_ENV * dbv , 678 cڡ * efix , cڡ * mesge ); 679 _am_mesge_funi (cڡ DB_ENV * dbv , 680 cڡ * mesge ); 681 _thad_id_r ( DB_ENV * dbv , pid_t * pidp , 682 db_thadid_t * thridp ); 683 * _thad_id_rg_r ( DB_ENV * dbv , pid_t pid , 684 db_thadid_t thrid , * buf ); 686 give : 687 nup (); 688 lize ( DB_ENV * dbv ); 689 r_picy (); 692 DbEnv ( DB_ENV *, u_t32_t ags ); 695 DbEnv (const DbEnv &); 696 gݔ = (cڡ DbEnv &); 699 DB_ENV * gimp_ ; 700 gcڡru_r_ ; 701 u_t32_t gcڡru_ags_ ; 702 __DB_STD ( oam * gr_am_ ; 703 __DB_STD ( oam * gmesge_am_ ; 705 (* p_dich_back_ )( DbEnv *, Dbt *, DbL *, db_cs ); 706 (* ilive_back_ )( DbEnv *, pid_t , db_thadid_t , u_t32_t ); 707 (* r_back_ )(cڡ DbEnv *, const *, const *); 708 (* edback_back_ )( DbEnv *, , ); 709 (* mesge_back_ )(cڡ DbEnv *, const *); 710 (* nic_back_ )( DbEnv *, ); 711 (* evt_func_back_ )( DbEnv *, u_t32_t , *); 712 (* p_nd_back_ )( DbEnv *, cڡ Dbt *, const Dbt *, 713 cڡ DbL *, , u_t32_t ); 714 (* thad_id_back_ )( DbEnv *, pid_t *, db_thadid_t *); 715 *(* thad_id_rg_back_ )( DbEnv *, pid_t , db_thadid_t , 717 } }; 722 as c_exp܋d mDbLock 724 nd ass mDbEnv ; 726 mpublic : 727 DbLock (); 728 DbLock (const DbLock &); 729 mDbLock & mݔ = (cڡ DbLock &); 731 meed : 736 DbLock ( DB_LOCK ); 737 DB_LOCK mlock_ ; 743 as c_exp܋d mDbLogc : eed DB_LOGC 745 nd ass DbEnv ; 747 mpublic : 748 o ( u_t32_t _ags ); 749 g ( DbL * l , Dbt * da , u_t32_t _ags ); 750 vsi ( u_t32_t * vsip , u_t32_ _ags ); 752 mive : 758 DbLogc (); 759 ~ DbLogc (); 762 DbLogc (cڡ Dbc &); 763 mDbLogc & mݔ = (cڡ Dbc &); 769 as c_exp܋d mDbL : public DB_LSN 771 nd ass DbEnv ; 772 nd ass mDbLogc ; 778 as c_exp܋d mDbMpoFe 780 nd ass mDbEnv ; 781 nd ass mDb ; 783 mpublic : 784 o ( u_t32_t ags ); 785 g ( db_pgno_t * pgnddr , DbTxn * txn , u_t32_t ags , * g ); 786 g_r_n ( u_t32_t * n ); 787 g_feid ( u_t8_t * feid ); 788 g_ags ( u_t32_t * ag ); 789 g_y (* y ); 790 g_ϡ_pgno ( db_pgno_t * pgn ); 791 g_l_offt ( t32_t * off ); 792 g_maxsize ( u_t32_t * gbys , u_t32_* bys ); 793 g_pgcook ( DBT * dbt ); 794 g_iܙy ( DB_CACHE_PRIORITY * iܙyp ); 795 g_iڮ (); 796 ݒ (cڡ * fe , u_t32_t ags , mode , size_t gesize ); 797 put (* pgaddr , DB_CACHE_PRIORITY iܙy , u_t32_t ags ); 798 t_r_n ( u_t32_t n ); 799 t_feid ( u_t8_t * feid ); 800 t_ags ( u_t32_t ags , off ); 801 t_y ( y ); 802 t_l_offt ( t32_t offt ); 803 t_maxsize ( u_t32_t gbys , u_t32_ bys ); 804 t_pgcook ( DBT * dbt ); 805 t_iܙy ( DB_CACHE_PRIORITY iܙy ); 806 sync (); 808 vtu DB_MPOOLFILE * $g_DB_MPOOLFILE () 810 imp_ ; 813 vtu cڡ DB_MPOOLFILE * $g_cڡ_DB_MPOOLFILE () const 815 imp_ ; 816 } } 818 give : 819 DB_MPOOLFILE * imp_ ; 828 DbMpoFe (); 831 geed : 832 vtu ~ DbMpoFe (); 834 give : 836 DbMpoFe (const DbMpoolFile &); 837 gݔ = (cڡ DbMpoFe &); 843 as c_exp܋d mDbPi 845 mpublic : 846 DbTxn * txn ; 847 u_t8_t mgid [ DB_XIDDATASIZE ]; 853 as c_exp܋d mDbSequ 855 mpublic : 856 DbSequ ( Db * db , u_t32_t ags ); 857 mvtu ~ DbSequ (); 859 ݒ ( DbTxn * txnid , Dbt * key , u_t32_t ags ); 860 l_vue ( db_q_t vue ); 861 o ( u_t32_t ags ); 862 move ( DbTxn * txnid , u_t32_t ags ); 863 ( DB_SEQUENCE_STAT ** , u_t32_t ags ); 864 _t ( u_t32_t ags ); 866 g ( DbTxn * txnid , t32_t d , db_q_t * , u_t32_t ags ); 867 g_chesize ( t32_t * siz ); 868 t_chesize ( t32_t size ); 869 g_ags ( u_t32_t * ag ); 870 t_ags ( u_t32_t ags ); 871 g_nge ( db_q_t * mp , db_q_* maxp ); 872 t_nge ( db_q_t m , db_q_ max ); 874 Db * g_db (); 875 Dbt * g_key (); 877 vtu DB_SEQUENCE * $g_DB_SEQUENCE () 879 imp_ ; 882 vtu cڡ DB_SEQUENCE * $g_cڡ_DB_SEQUENCE () const 884 imp_ ; 885 } } 887 DbSequ * $g_DbSequ ( DB_SEQUENCE * q ) 889 ( DbSequ *) q -> i_ ; 890 } } 892 cڡ DbSequ * $g_cڡ_DbSequ (cڡ DB_SEQUENCE * q ) 894 (cڡ DbSequ *) q -> i_ ; 895 } } 898 DbSequ * wp_DB_SEQUENCE ( DB_SEQUENCE * q ); 900 give : 901 DbSequ ( DB_SEQUENCE * q ); 903 DbSequ (const DbSequence &); 904 gDbSequ & gݔ = (cڡ DbSequ &); 906 DB_SEQUENCE * gimp_ ; 907 DBT gkey_ ; 913 as c_exp܋d mDbTxn 915 nd ass mDbEnv ; 917 mpublic : 918 abt (); 919 comm ( u_t32_t ags ); 920 disrd ( u_t32_t ags ); 921 u_t32_t id (); 922 g_me (cڡ ** m ); 923 e ( u_t8_t * gid ); 924 t_me (cڡ * me ); 925 t_timeout ( db_timeout_t timeout , u_t32_t ags ); 927 vtu DB_TXN * $g_DB_TXN () 929 imp_ ; 932 vtu cڡ DB_TXN * $g_cڡ_DB_TXN () const 934 imp_ ; 935 } } 937 DbTxn * $g_DbTxn ( DB_TXN * txn ) 939 ( DbTxn *) txn -> i_ ; 940 } } 942 cڡ DbTxn * $g_cڡ_DbTxn (cڡ DB_TXN * txn ) 944 (cڡ DbTxn *) txn -> i_ ; 945 } } 948 DbTxn * wp_DB_TXN ( DB_TXN * txn ); 950 give : 951 DB_TXN * imp_ ; 961 DbTxn (); 963 DbTxn ( DB_TXN * txn ); 964 gvtu ~ DbTxn (); 967 DbTxn (const DbTxn &); 968 gݔ = (cڡ DbTxn &); 974 as c_exp܋d mDbt : ive DBT 976 nd ass Db ; 977 nd ass mDbc ; 978 nd ass mDbEnv ; 979 nd ass mDbLogc ; 980 nd ass mDbSequ ; 982 mpublic : 984 * $g_da (cڡ { da ; } 985 $t_da (* vue { da = vue; } } 988 u_t32_t $g_size (cڡ { size ; } } 989 $t_size ( u_t32_t vue { size = vue; } } 992 u_t32_t $g_un (cڡ { un ; } } 993 $t_un ( u_t32_t vue { un = vue; } } 996 u_t32_t $g_dn (cڡ { dn ; } } 997 $t_dn ( u_t32_t vue { dn = vue; } } 1000 u_t32_t $g_doff (cڡ { doff ; } } 1001 $t_doff ( u_t32_t vue { doff = vue; } } 1004 u_t32_t $g_ags (cڡ { ags ; } } 1005 $t_ags ( u_t32_t vue { ags = vue; } } 1008 DBT * $g_DBT ({ ( DBT *) this ; } } 1009 cڡ DBT * $g_cڡ_DBT (cڡ { (cڡ DBT *) this ; } } 1011 Dbt * $g_Dbt ( DBT * dbt { ( Dbt *)dbt; } } 1012 cڡ Dbt * $g_cڡ_Dbt (cڡ DBT * dbt ) 1013 { (cڡ Dbt *) dbt ; } } 1015 Dbt (* da , u_t32_t size ); 1016 Dbt (); 1017 ~ Dbt (); 1018 Dbt (const Dbt &); 1019 gDbt & gݔ = (cڡ Dbt &); 1021 give : 1042 as c_exp܋d mDbMuɝIt 1044 mpublic : 1045 DbMuɝIt (cڡ Dbt & dbt ); 1046 meed : 1047 u_t8_t * da_ ; 1048 u_t32_t * mp_ ; 1051 as c_exp܋d mDbMuɝKeyDaIt : ive DbMuɝIt 1053 public : 1054 $DbMuɝKeyDaIt (cڡ Dbt & dbt : $DbMuɝIt ( dbt ) {} 1055 bo `xt ( Dbt & key , Db& da ); 1056 } }; 1058 as c_exp܋d mDbMuɝReoDaIt : ive DbMuɝIt 1060 public : 1061 $DbMuɝReoDaIt (cڡ Dbt & dbt : $DbMuɝIt ( dbt ) {} 1062 bo `xt ( db_o_t & o , Dbt & da ); 1063 } }; 1065 as c_exp܋d mDbMuɝDaIt : ive DbMuɝIt 1067 public : 1068 $DbMuɝDaIt (cڡ Dbt & dbt : $DbMuɝIt ( dbt ) {} 1069 bo `xt ( Dbt & da ); 1070 } }; 1082 as c_exp܋d mDbExi : public $__DB_STD ( exi ) 1084 public : 1085 vtu ~ $DbExi ( `throw (); 1086 `DbExi ( r ); 1087 `DbExi (cڡ * desti ); 1088 `DbExi (cڡ * desti , r ); 1089 `DbExi (cڡ * efix , cڡ * desti , r ); 1090 $g_o () const; 1091 vtu cڡ * $wh (cڡ `throw (); 1092 DbEnv * $g_v () const; 1093 `t_v ( DbEnv * dbv ); 1095 `DbExi (cڡ DbExi &); 1096 DbExi & ݔ = (const DbException &); 1098 ive : 1099 `desibe (cڡ * efix , cڡ * desti ); 1101 * wh_ ; 1102 r_ ; 1103 DbEnv * dbv_ ; 1110 as c_exp܋d DbDdlockExi : public DbExi 1112 public : 1113 vtu ~ $DbDdlockExi ( `throw (); 1114 `DbDdlockExi (cڡ * desti ); 1116 `DbDdlockExi (cڡ DbDdlockExi &); 1117 DbDdlockExi & ݔ = (const DbDeadlockException &); 1126 as c_exp܋d DbLockNGedExi : public DbExi 1128 public : 1129 vtu ~ $DbLockNGedExi ( `throw (); 1130 `DbLockNGedExi (cڡ * efix , db_lock_t , 1131 db_lockmode_t mode , cڡ Dbt * obj , cڡ DbLock lock , dex ); 1132 `DbLockNGedExi (cڡ * desti ); 1134 `DbLockNGedExi (cڡ DbLockNGedExi &); 1135 DbLockNGedExi & ݔ = 1136 (cڡ DbLockNGedExi &); 1138 db_lock_t $g_ () const; 1139 db_lockmode_t $g_mode () const; 1140 cڡ Dbt * $g_obj () const; 1141 DbLock * $g_lock () const; 1142 $g_dex () const; 1144 ive : 1145 db_lock_t _ ; 1146 db_lockmode_t mode_ ; 1147 cڡ Dbt * obj_ ; 1148 DbLock * lock_ ; 1149 dex_ ; 1156 as c_exp܋d DbMemyExi : public DbExi 1158 public : 1159 vtu ~ $DbMemyExi ( `throw (); 1160 `DbMemyExi ( Dbt * dbt ); 1161 `DbMemyExi (cڡ * efix , Dbt * dbt ); 1163 `DbMemyExi (cڡ DbMemyExi &); 1164 DbMemyExi & ݔ = (const DbMemoryException &); 1166 Dbt * $g_dbt () const; 1167 ive : 1168 Dbt * dbt_ ; 1175 as c_exp܋d DbRHdDdExi : public DbExi 1177 public : 1178 vtu ~ $DbRHdDdExi ( `throw (); 1179 `DbRHdDdExi (cڡ * desti ); 1181 `DbRHdDdExi (cڡ DbRHdDdExi &); 1182 DbRHdDdExi & ݔ = (const DbRepHandleDeadException &); 1189 as c_exp܋d DbRunRecovyExi : public DbExi 1191 public : 1192 vtu ~ $DbRunRecovyExi ( `throw (); 1193 `DbRunRecovyExi (cڡ * desti ); 1195 `DbRunRecovyExi (cڡ DbRunRecovyExi &); 1196 DbRunRecovyExi & ݔ = (const DbRunRecoveryException &); 1207 #ifde _MSC_VER 1208 #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_TXNID 53 } tdb_txi_ty ; 55 #DB_TXNLIST_MASK ( hp , n % hp-> ns ) ) 56 s__db_txnhd { 57 * td ; 58 DB_THREAD_INFO * thad_fo ; 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 ; 90 } u ; 93 #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 __db_gfo_t ; __db_gfo_ tREGINFO ; 113 __db_txnhd ; __db_txnhd tDB_TXNHEAD ; 114 __db_txi ; __db_txi tDB_TXNLIST ; 115 __vrfy_chdfo ;__vrfy_chdf tVRFY_CHILDINFO ; 116 __vrfy_dbfo ; __vrfy_dbf tVRFY_DBINFO ; 117 __vrfy_gefo ; __vrfy_gef tVRFY_PAGEINFO ; 119 SH_TAILQ_HEAD ( t__hash_hd tDB_HASHTAB ; 124 #unde FALSE 125 #FALSE 0 ) 126 #unde TRUE 127 #TRUE (! FALSE ) ) 129 #MEGABYTE 1048576 ) 130 #GIGABYTE 1073741824 ) 132 #NS_PER_MS 1000000 ) 133 #NS_PER_US 1000 ) 134 #NS_PER_SEC 1000000000 ) 135 #US_PER_MS 1000 ) 136 #US_PER_SEC 1000000 ) 137 #MS_PER_SEC 1000 ) 139 #RECNO_OOB 0 ) 142 #POWER_OF_TWO ( x (((x& ((x- 1)=0) ) 145 #DB_MIN_PGSIZE 0x000200 ) 146 #DB_MAX_PGSIZE 0x010000 ) 147 #IS_VALID_PAGESIZE ( x ) \ 148 ( `POWER_OF_TWO ( x && (x> DB_MIN_PGSIZE && ((x< DB_MAX_PGSIZE )) ) 151 #DB_MINPAGECACHE 16 ) 157 #DB_DEF_IOSIZE (8 * 1024) ) 160 #unde DB_ALIGN 161 #DB_ALIGN ( v , bound ) \ 162 ((( v + ( bound - 1& ~((( utmax_t )(bound)- 1)) ) 165 #unde ALIGNP_INC 166 #ALIGNP_INC ( p , bound ) \ 167 (*)((( u_t )( p + ( bound - 1& ~(((u_t)(bound)- 1)) ) 174 #P_TO_ULONG ( p (( u_lg )( u_t ))) ) 184 #P_TO_UINT32 ( p (( u_t32_t )( u_t ))) ) 185 #P_TO_UINT16 ( p (( u_t16_t )( u_t ))) ) 200 #unde SSZ 201 #SSZ ( me , fld `P_TO_UINT16 (&((am*)0)->fld)) ) 203 #unde SSZA 204 #SSZA ( me , fld `P_TO_UINT16 (&((am*)0)->fld[0])) ) 207 s__ { 208 u_t32_t mask ; 209 cڡ * me ; 210 } tFN ; 213 #FLD_CLR ( d , f (d&~(f) ) 214 #FLD_ISSET ( d , f ((d& (f)) ) 215 #FLD_SET ( d , f (d|(f) ) 216 #F_CLR ( p , f )-> ags &~(f) ) 217 #F_ISSET ( p , f ()-> ags & (f)) ) 218 #F_SET ( p , f )-> ags |(f) ) 219 #LF_CLR ( f (( ags &~(f)) ) 220 #LF_ISSET ( f (( ags & (f)) ) 221 #LF_SET ( f (( ags |(f)) ) 231 #DB_PCT ( v , tٮ ) \ 232 (()(( tٮ =0 ? 0 : (()( v * 100/ (tٮ))) ) 233 #DB_PCT_PG ( v , tٮ , pgsize ) \ 234 (()(( tٮ ) == 0 ? 0 : \ 235 100 - (()( v * 100/ ((() tٮ * ( pgsize )))) ) 241 #unde STAT 242 #ifdef HAVE_STATISTICS 243 #STAT ( x ) x 245 #STAT ( x ) ) 253 s__db_msgbuf { 254 * buf ; 255 * cur ; 256 size_t n ; 257 } tDB_MSGBUF ; 258 #DB_MSGBUF_INIT ( a ) do { \ 259 ( a )-> buf = (a)-> cur = NULL ; \ 260 ( a )-> n = 0; \ 261 } 0) ) 262 #DB_MSGBUF_FLUSH ( v , a ) do { \ 263 i(( a )-> buf ! NULL ) { \ 264 i(( a )-> cur !)-> buf ) \ 265 `__db_msg ( v , "%s", ( a )-> buf ); \ 266 `__os_ ( v , ( a )-> buf ); \ 267 `DB_MSGBUF_INIT ( a ); \ 269 } 0) ) 270 #STAT_FMT ( msg , fmt , ty , v ) do { \ 271 DB_MSGBUF __mb ; \ 272 `DB_MSGBUF_INIT (& __mb ); \ 273 `__db_msgadd ( v , & __mb , fmt , ( ty )( v )); \ 274 `__db_msgadd ( v , & __mb , "\t%s", msg ); \ 275 `DB_MSGBUF_FLUSH ( v , & __mb ); \ 276 } 0) ) 277 #STAT_HEX ( msg , v ) \ 278 `__db_msg ( v , "%#lx\t%s", ( u_lg )( v ), msg ) ) 279 #STAT_ISSET ( msg , p ) \ 280 `__db_msg ( v , "%sS\t%s", ( p = NULL ? "!" : " ", msg ) ) 281 #STAT_LONG ( msg , v ) \ 282 `__db_msg ( v , "%ld\t%s", ()( v ), msg ) ) 283 #STAT_LSN ( msg , lp ) \ 284 `__db_msg ( v , "%lu/%lu\t%s", \ 285 ( u_lg )( lp )-> fe , (u_lg)֢p)-> offt , msg ) ) 286 #STAT_POINTER ( msg , v ) \ 287 `__db_msg ( v , "%#lx\t%s", `P_TO_ULONG ( v ), msg ) ) 288 #STAT_STRING ( msg , p ) do { \ 289 cڡ * __p = p ; \ 290 `__db_msg ( v , "%s\t%s", __p = NULL ? "!S" : __p, msg ); \ 291 } 0) ) 292 #STAT_ULONG ( msg , v ) \ 293 `__db_msg ( v , "%lu\t%s", ( u_lg )( v ), msg ) ) 301 #DB_SET_DBT ( dbt , d , s ) do { \ 302 ( dbt ). da = (*)( d ); \ 303 ( dbt ). size = ( u_t32_t )( s ); \ 304 } 0) ) 305 #DB_INIT_DBT ( dbt , d , s ) do { \ 306 `memt (&( dbt ), 0, (dbt)); \ 307 `DB_SET_DBT ( dbt , d , s ); \ 308 } 0) ) 318 #DB_RETOK_STD ( t (ԑ=0) ) 319 #DB_RETOK_DBCDEL ( t (ԑ=0 || (t= DB_KEYEMPTY || \ 320 ( t = DB_NOTFOUND ) ) 321 #DB_RETOK_DBCGET ( t (ԑ=0 || (t= DB_KEYEMPTY || \ 322 ( t = DB_NOTFOUND ) ) 323 #DB_RETOK_DBCPUT ( t (ԑ=0 || (t= DB_KEYEXIST || \ 324 ( t = DB_NOTFOUND ) ) 325 #DB_RETOK_DBDEL ( t `DB_RETOK_DBCDEL ԑ) ) 326 #DB_RETOK_DBGET ( t `DB_RETOK_DBCGET ԑ) ) 327 #DB_RETOK_DBPUT ( t (ԑ=0 || (t= DB_KEYEXIST ) ) 328 #DB_RETOK_EXISTS ( t `DB_RETOK_DBCGET ԑ) ) 329 #DB_RETOK_LGGET ( t (ԑ=0 || (t= DB_NOTFOUND ) ) 330 #DB_RETOK_MPGET ( t (ԑ=0 || (t= DB_PAGE_NOTFOUND ) ) 331 #DB_RETOK_REPPMSG ( t ) ((ret) == 0 || \ 332 ( t = DB_REP_IGNORE || \ 333 ( t = DB_REP_ISPERM || \ 334 ( t = DB_REP_NEWMASTER || \ 335 ( t = DB_REP_NEWSITE || \ 336 ( t = DB_REP_NOTPERM ) ) 339 #ifdef EOPNOTSUPP 340 #DB_OPNOTSUP EOPNOTSUPP ) 342 #ifdef ENOTSUP 343 #DB_OPNOTSUP ENOTSUP ) 345 #DB_OPNOTSUP EINVAL ) 357 #DB_MAXPATHLEN 1024 ) 359 #PATH_DOT "." ) 361 #PATH_SEPARATOR "@PATH_SEPARATOR@" ) 368 DB_APP_NONE =0, 369 DB_APP_DATA , 370 DB_APP_LOG , 371 DB_APP_TMP 372 } tAPPNAME ; 393 #ALIVE_ON ( v (nv)-> dbv -> is_ive ! NULL ) ) 394 #CDB_LOCKING ( v `F_ISSET nv, ENV_CDB ) ) 395 #CRYPTO_ON ( v (nv)-> yo_hd ! NULL ) ) 396 #LOCKING_ON ( v (nv)-> lk_hd ! NULL ) ) 397 #LOGGING_ON ( v (nv)-> lg_hd ! NULL ) ) 398 #MPOOL_ON ( v (nv)-> mp_hd ! NULL ) ) 399 #MUTEX_ON ( v (nv)-> mux_hd ! NULL ) ) 400 #REP_ON ( v ) \ 401 (( v )-> p_hd ! NULL && (v)->p_hd-> gi !NULL) ) 402 #RPC_ON ( dbv ((dbv)-> _hd ! NULL ) ) 403 #TXN_ON ( v (nv)-> tx_hd ! NULL ) ) 410 #STD_LOCKING ( dbc ) \ 411 (! `F_ISSET ( dbc , DBC_OPD ) && \ 412 ! `CDB_LOCKING (( dbc )-> v && `LOCKING_ON ((dbc)->v)) ) 417 #IS_RECOVERING ( v ) \ 418 ( `LOGGING_ON ( v && `F_ISSET (nv)-> lg_hd , DBLOG_RECOVER )) ) 421 #ENV_ILLEGAL_AFTER_OPEN ( v , me ) \ 422 i( `F_ISSET (( v ), ENV_OPEN_CALLED )) \ 423 ( `__db_mi_ݒ ( v , me , 1)); ) 424 #ENV_ILLEGAL_BEFORE_OPEN ( v , me ) \ 425 i(! `F_ISSET (( v ), ENV_OPEN_CALLED )) \ 426 ( `__db_mi_ݒ ( v , me , 0)); ) 429 #ENV_REQUIRES_CONFIG ( v , hd , i , ags ) \ 430 i( hd = NULL ) \ 431 ( `__v_n_cfig ( v , i , ags )); ) 432 #ENV_REQUIRES_CONFIG_XX ( v , hd , i , ags ) \ 433 i(( v )-> hd -> gi = NULL ) \ 434 ( `__v_n_cfig ( v , i , ags )); ) 435 #ENV_NOT_CONFIGURED ( v , hd , i , ags ) \ 436 i( `F_ISSET (( v ), ENV_OPEN_CALLED )) \ 437 `ENV_REQUIRES_CONFIG ( v , hd , i , ags ) ) 439 #ENV_ENTER ( v , ) do { \ 440 __t ; \ 441 `PANIC_CHECK ( v ); \ 442 i(( v )-> thr_hashb = NULL ) \ 443 = NULL ; \ 445 i(( __t = \ 446 `__v_t_e ( v , &( ), THREAD_ACTIVE )) != 0) \ 447 ( __t ); \ 449 } 0) ) 451 #ENV_GET_THREAD_INFO ( v , `ENV_ENTER nv, ip) ) 453 #ifde DIAGNOSTIC 454 #ENV_LEAVE ( v , ) do { \ 455 i(( ! NULL ) { \ 456 `DB_ASSERT ( v , ( )-> dbth_e = THREAD_ACTIVE ); \ 457 ( )-> dbth_e = THREAD_OUT ; \ 459 } 0) ) 461 #ENV_LEAVE ( v , ) do { \ 462 i(( ! NULL ) \ 463 ( )-> dbth_e = THREAD_OUT ; \ 464 } 0) ) 466 #ifde DIAGNOSTIC 467 #CHECK_THREAD ( v ) do { \ 468 i(( v )-> thr_hashb ! NULL ) \ 469 () `__v_t_e ( v , NULL , THREAD_VERIFY ); \ 470 } 0) ) 471 #ifde HAVE_STATISTICS 472 #CHECK_MTX_THREAD ( v , mtx ) do { \ 473 i( mtx -> loc_id ! MTX_MUTEX_REGION && \ 474 mtx -> loc_id ! MTX_ENV_REGION && \ 475 mtx -> loc_id ! MTX_APPLICATION ) \ 476 `CHECK_THREAD ( v ); \ 477 } 0) ) 479 #CHECK_MTX_THREAD ( v , mtx ) ) 482 #CHECK_THREAD ( v ) ) 483 #CHECK_MTX_THREAD ( v , mtx ) ) 487 THREAD_SLOT_NOT_IN_USE =0, 488 THREAD_OUT , 489 THREAD_ACTIVE , 490 THREAD_BLOCKED , 491 THREAD_BLOCKED_DEAD 492 #ifde DIAGNOSTIC 493 , THREAD_VERIFY 495 } tDB_THREAD_STATE ; 497 s__p_li { 498 roff_t b_f ; 499 gi ; 500 } tPIN_LIST ; 501 #PINMAX 4 ) 503 s__db_thad_fo { 504 pid_t dbth_pid ; 505 db_thadid_t dbth_tid ; 506 DB_THREAD_STATE dbth_e ; 507 SH_TAILQ_ENTRY dbth_lks ; 512 u_t16_t dbth_pcou ; 513 u_t16_t dbth_pmax ; 514 roff_t dbth_pli ; 515 PIN_LIST dbth_py [ PINMAX ]; 518 s__v_thad_fo { 519 u_t32_t thr_cou ; 520 u_t32_t thr_max ; 521 u_t32_t thr_nbuck ; 522 roff_t thr_hashoff ; 523 } tTHREAD_INFO ; 525 #DB_EVENT ( v , e , efo ) do { \ 526 DB_ENV * __dbv = ( v )-> dbv ; \ 527 i( __dbv -> db_evt_func ! NULL ) \ 528 __dbv -> `db_evt_func (__dbv, e , efo ); \ 529 } 0) ) 531 s__ag_m { 532 u_t32_t ag , outag ; 533 } tFLAG_MAP ; 545 s__v { 546 DB_ENV * dbv ; 552 db_mux_t mtx_v ; 562 * db_home ; 563 u_t32_t ݒ_ags ; 564 db_mode ; 566 pid_t pid_che ; 568 DB_FH * lockfhp ; 570 DB_LOCKER * v_ef ; 572 DB_DISTAB cov_db ; 574 d_mode ; 577 u_t32_t thr_nbuck ; 578 DB_HASHTAB * thr_hashb ; 582 loc_id ; 583 u_t32_t ags ; 584 } * mux_iq ; 585 u_t mux_iq_xt ; 586 u_t mux_iq_max ; 592 db_mux_t mtx_dbli ; 593 db_f ; 594 TAILQ_HEAD ( __dbli , __db dbli ; 599 xa_rmid ; 600 TAILQ_ENTRY ( __v lks ; 601 TAILQ_HEAD ( __xa_txn , __db_txn xa_txn ; 607 TAILQ_HEAD ( __fdli , __fh_t fdli ; 609 db_mux_t mtx_mt ; 610 mti ; 611 u_lg * mt ; 613 DB_CIPHER * yo_hd ; 614 DB_LOCKTAB * lk_hd ; 615 DB_LOG * lg_hd ; 616 DB_MPOOL * mp_hd ; 617 DB_MUTEXMGR * mux_hd ; 618 DB_REP * p_hd ; 619 DB_TXNMGR * tx_hd ; 622 #DB_USERCOPY_GETDATA 0x0001 ) 623 #DB_USERCOPY_SETDATA 0x0002 ) 624 (* dbt_urcy ) 625 __P (( DBT *, u_t32_t , *, u_int32_t, u_int32_t)); 627 REGINFO * gfo ; 629 #DB_TEST_ELECTINIT 1 ) 630 #DB_TEST_ELECTVOTE1 2 ) 631 #DB_TEST_POSTDESTROY 3 ) 632 #DB_TEST_POSTLOG 4 ) 633 #DB_TEST_POSTLOGMETA 5 ) 634 #DB_TEST_POSTOPEN 6 ) 635 #DB_TEST_POSTSYNC 7 ) 636 #DB_TEST_PREDESTROY 8 ) 637 #DB_TEST_PREOPEN 9 ) 638 #DB_TEST_SUBDB_LOCKS 10 ) 639 _abt ; 640 _check ; 641 _cy ; 643 #ENV_CDB 0x00000001 ) 644 #ENV_DBLOCAL 0x00000002 ) 645 #ENV_LITTLEENDIAN 0x00000004 ) 646 #ENV_LOCKDOWN 0x00000008 ) 647 #ENV_NO_OUTPUT_SET 0x00000010 ) 648 #ENV_OPEN_CALLED 0x00000020 ) 649 #ENV_PRIVATE 0x00000040 ) 650 #ENV_RECOVER_FATAL 0x00000080 ) 651 #ENV_REF_COUNTED 0x00000100 ) 652 #ENV_SYSTEM_MEM 0x00000200 ) 653 #ENV_THREAD 0x00000400 ) 654 u_t32_t ags ; 664 #DB_IS_THREADED ( dbp ) \ 665 (( dbp )-> mux ! MUTEX_INVALID ) ) 668 #DB_ILLEGAL_AFTER_OPEN ( dbp , me ) \ 669 i( `F_ISSET (( dbp ), DB_AM_OPEN_CALLED )) \ 670 ( `__db_mi_ݒ (( dbp )-> v , me , 1)); ) 671 #DB_ILLEGAL_BEFORE_OPEN ( dbp , me ) \ 672 i(! `F_ISSET (( dbp ), DB_AM_OPEN_CALLED )) \ 673 ( `__db_mi_ݒ (( dbp )-> v , me , 0)); ) 675 #DB_ILLEGAL_IN_ENV ( dbp , me ) \ 676 i(! `F_ISSET (( dbp )-> v , ENV_DBLOCAL )) \ 677 ( `__db_mi_v (( dbp )-> v , me )); ) 678 #DB_ILLEGAL_METHOD ( dbp , ags ) { \ 679 __t ; \ 680 i(( __t = `__dbh_am_chk ( dbp , ags )) != 0) \ 681 ( __t ); \ 682 } ) 688 #__DBC_INTERNAL \ 689 DBC * d ; \ 691 * ge ; \ 692 db_pgno_t ro ; \ 693 db_pgno_t pgno ; \ 694 db_dx_t dx ; \ 696 DB_LOCK lock ; \ 697 db_lockmode_t lock_mode ; ) 699 s__dbc_ { 700 __DBC_INTERNAL 704 um { MU_REMOVE , MU_RENAME , MU_OPEN } tmu_ai ; 710 #IS_INITIALIZED ( dbc ((dbc)-> -> pgno ! PGNO_INVALID ) ) 713 #FREE_IF_NEEDED ( v , dbt ) \ 714 i( `F_ISSET (( dbt ), DB_DBT_APPMALLOC )) { \ 715 `__os_u (( v ), ( dbt )-> da ); \ 716 `F_CLR (( dbt ), DB_DBT_APPMALLOC ); \ 717 } ) 723 #SET_RET_MEM ( dbc , owr ) \ 725 ( dbc )-> rskey = &( owr )-> my_rskey ; \ 726 ( dbc )-> rkey = &( owr )-> my_rkey ; \ 727 ( dbc )-> rda = &( owr )-> my_rda ; \ 728 } 0) ) 731 #COPY_RET_MEM ( c , de ) \ 733 ( de )-> rskey = ( c )->rskey; \ 734 ( de )-> rkey = ( c )->rkey; \ 735 ( de )-> rda = ( c )->rdata; \ 736 } 0) ) 739 #RESET_RET_MEM ( dbc ) \ 741 ( dbc )-> rskey = &(dbc)-> my_rskey ; \ 742 ( dbc )-> rkey = &(dbc)-> my_rkey ; \ 743 ( dbc )-> rda = &(dbc)-> my_rda ; \ 744 } 0) ) 752 #DB_FTYPE_SET -1 ) 753 #DB_FTYPE_NOTSET 0 ) 754 #DB_LSN_OFF_NOTSET -1 ) 755 #DB_CLEARLEN_NOTSET UINT32_MAX ) 758 s__dbpgfo { 759 size_t db_gesize ; 760 u_t32_t ags ; 761 DBTYPE ty ; 762 } tDB_PGINFO ; 768 #ZERO_LSN ( LSN ) do { \ 769 ( LSN ). fe = 0; \ 770 ( LSN ). offt = 0; \ 771 } 0) ) 772 #IS_ZERO_LSN ( LSN ((LSN). fe =0 && (LSN). offt =0) ) 774 #IS_INIT_LSN ( LSN ((LSN). fe =1 && (LSN). offt =0) ) 775 #INIT_LSN ( LSN ) do { \ 776 ( LSN ). fe = 1; \ 777 ( LSN ). offt = 0; \ 778 } 0) ) 780 #MAX_LSN ( LSN ) do { \ 781 ( LSN ). fe = UINT32_MAX ; \ 782 ( LSN ). offt = UINT32_MAX ; \ 783 } 0) ) 784 #IS_MAX_LSN ( LSN ) \ 785 (( LSN ). fe = UINT32_MAX && (LSN). offt =UINT32_MAX) ) 788 #LSN_NOT_LOGGED ( LSN ) do { \ 789 ( LSN ). fe = 0; \ 790 ( LSN ). offt = 1; \ 791 } 0) ) 792 #IS_NOT_LOGGED_LSN ( LSN ) \ 793 (( LSN ). fe =0 && (LSN). offt =1) ) 799 #LOG_COMPARE ( l0 , l1 ) \ 800 (( l0 )-> fe !( l1 )->file ? \ 801 (( l0 )-> fe < ( l1 )->file ? -1 : 1) : \ 802 (( l0 )-> offt !( l1 )->offset ? \ 803 (( l0 )-> offt < ( l1 )->off? -1 : 1: 0)) ) 808 #DB_NONBLOCK ( C ((C)-> txn ! NULL && `F_ISSET ((C)->txn, TXN_NOWAIT )) ) 809 #NOWAIT_FLAG ( txn ) \ 810 (( txn ! NULL && `F_ISSET (xn), TXN_NOWAIT ? DB_LOCK_NOWAIT : 0) ) 811 #IS_REAL_TXN ( txn ) \ 812 (( txn ! NULL && ! `F_ISSET xn, TXN_CDSGROUP )) ) 813 #IS_SUBTRANSACTION ( txn ) \ 814 (( txn ! NULL && (txn)-> !NULL) ) 819 #DB_IV_BYTES 16 ) 820 #DB_MAC_KEY 20 ) 825 #ifde CONFIG_TEST 836 #DB_RPC2ND_MASK 0x00f00000 ) 838 #DB_RPC2ND_REVERSEDATA 0x00100000 ) 839 #DB_RPC2ND_NOOP 0x00200000 ) 840 #DB_RPC2ND_CONCATKEYDATA 0x00300000 ) 841 #DB_RPC2ND_CONCATDATAKEY 0x00400000 ) 842 #DB_RPC2ND_REVERSECONCAT 0x00500000 ) 843 #DB_RPC2ND_TRUNCDATA 0x00600000 ) 844 #DB_RPC2ND_CONSTANT 0x00700000 ) 845 #DB_RPC2ND_GETZIP 0x00800000 ) 846 #DB_RPC2ND_GETNAME 0x00900000 ) 849 #i defed ( __lulus ) 856 @ db_t_def @ 858 ~"dbc/globs.h " 859 ~"dbc/ock.h " 860 ~"dbc/debug.h " 861 ~"dbc/gi.h " 862 ~"dbc_auto/v_ext.h " 863 ~"dbc/mux.h " 864 #ifde HAVE_REPLICATION_THREADS 865 ~"dbc/pmgr.h " 867 ~"dbc/p.h " 868 ~"dbc/os.h " 869 ~"dbc_auto/ib_ext.h " 870 ~"dbc_auto/comm_ext.h " 882 #DBENV_LOGGING ( v ) \ 883 ( `LOGGING_ON ( v && ! `IS_REP_CLIENT nv&& (! `IS_RECOVERING nv))) ) 904 #i defed ( DIAGNOSTIC || defed( DEBUG_ROP || defed( DEBUG_WOP ) 905 #DBC_LOGGING ( dbc `__dbc_loggg (dbc) ) 907 #DBC_LOGGING ( dbc ) \ 908 (( dbc )-> txn ! NULL && `LOGGING_ON ((dbc)-> v ) && \ 909 ! `F_ISSET (( dbc ), DBC_RECOVER && ! `IS_REP_CLIENT ((dbc)-> v )) ) @../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 s__pgli { 661 db_pgno_t pgno ; 662 DB_LSN l ; 663 } tdb_pgli_t ; 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 ( v , p , ig ) do { \ 153 i(( p ! NULL && (p!( ig )) \ 154 `__os_u (( v ), ( 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 } ) 95 #unde P_32_COPY 96 #P_32_COPY ( a , b ) do { \ 97 (( u_t8_t *) b )[0] = ((u_t8_*) a )[0]; \ 98 (( u_t8_t *) b )[1] = ((u_t8_*) a )[1]; \ 99 (( u_t8_t *) b )[2] = ((u_t8_*) a )[2]; \ 100 (( u_t8_t *) b )[3] = ((u_t8_*) a )[3]; \ 101 } 0) ) 102 #unde P_32_COPYSWAP 103 #P_32_COPYSWAP ( a , b ) do { \ 104 (( u_t8_t *) b )[0] = ((u_t8_*) a )[3]; \ 105 (( u_t8_t *) b )[1] = ((u_t8_*) a )[2]; \ 106 (( u_t8_t *) b )[2] = ((u_t8_*) a )[1]; \ 107 (( u_t8_t *) b )[3] = ((u_t8_*) a )[0]; \ 108 } 0) ) 109 #unde P_32_SWAP 110 #P_32_SWAP ( a ) do { \ 111 u_t32_t _tmp ; \ 112 `P_32_COPY ( a , & _tmp ); \ 113 `P_32_COPYSWAP (& _tmp , a ); \ 114 } 0) ) 115 #unde M_32_SWAP 116 #M_32_SWAP ( a `P_32_SWAP (&a) ) 125 #unde P_16_COPY 126 #P_16_COPY ( a , b ) do { \ 127 (( u_t8_t *) b )[0] = ((u_t8_*) a )[0]; \ 128 (( u_t8_t *) b )[1] = ((u_t8_*) a )[1]; \ 129 } 0) ) 130 #unde P_16_COPYSWAP 131 #P_16_COPYSWAP ( a , b ) do { \ 132 (( u_t8_t *) b )[0] = ((u_t8_*) a )[1]; \ 133 (( u_t8_t *) b )[1] = ((u_t8_*) a )[0]; \ 134 } 0) ) 135 #unde P_16_SWAP 136 #P_16_SWAP ( a ) do { \ 137 u_t16_t _tmp ; \ 138 `P_16_COPY ( a , & _tmp ); \ 139 `P_16_COPYSWAP (& _tmp , a ); \ 140 } 0) ) 141 #unde M_16_SWAP 142 #M_16_SWAP ( a `P_16_SWAP (&a) ) 144 #unde SWAP32 145 #SWAP32 ( p ) { \ 146 `P_32_SWAP ( p ); \ 147 ( p +( u_t32_t ); \ 148 } ) 149 #unde SWAP16 150 #SWAP16 ( p ) { \ 151 `P_16_SWAP ( p ); \ 152 ( p +( u_t16_t ); \ 153 } ) 160 #unde DB_HTONL_SWAP 161 #DB_HTONL_SWAP ( v , p ) do { \ 162 i( `F_ISSET (( v ), ENV_LITTLEENDIAN )) \ 163 `P_32_SWAP ( p ); \ 164 } 0) ) 165 #unde DB_NTOHL_SWAP 166 #DB_NTOHL_SWAP ( v , p ) do { \ 167 i( `F_ISSET (( v ), ENV_LITTLEENDIAN )) \ 168 `P_32_SWAP ( p ); \ 169 } 0) ) 171 #unde DB_NTOHL_COPYIN 172 #DB_NTOHL_COPYIN ( v , i , p ) do { \ 173 u_t8_t * tmp ; \ 174 tmp = ( u_t8_t *)&( i ); \ 175 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) { \ 176 tmp [3] = * p ++; \ 177 tmp [2] = * p ++; \ 178 tmp [1] = * p ++; \ 179 tmp [0] = * p ++; \ 181 `memy (& i , p , ( u_t32_t )); \ 182 p = ( u_t8_t * + ( u_t32_t ); \ 184 } 0) ) 186 #unde DB_NTOHS_COPYIN 187 #DB_NTOHS_COPYIN ( v , i , p ) do { \ 188 u_t8_t * tmp ; \ 189 tmp = ( u_t8_t *)&( i ); \ 190 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) { \ 191 tmp [1] = * p ++; \ 192 tmp [0] = * p ++; \ 194 `memy (& i , p , ( u_t16_t )); \ 195 p = ( u_t8_t * + ( u_t16_t ); \ 197 } 0) ) 199 #unde DB_HTONL_COPYOUT 200 #DB_HTONL_COPYOUT ( v , p , i ) do { \ 201 u_t8_t * tmp ; \ 202 tmp = ( u_t8_t *) p ; \ 203 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) { \ 204 * tmp ++ = (( u_t8_t *)&( i ))[3]; \ 205 * tmp ++ = (( u_t8_t *)&( i ))[2]; \ 206 * tmp ++ = (( u_t8_t *)&( i ))[1]; \ 207 * tmp ++ = (( u_t8_t *)&( i ))[0]; \ 209 `memy ( p , & i , ( u_t32_t )); \ 210 p = ( u_t8_t * + ( u_t32_t ); \ 211 } 0) ) 213 #unde DB_HTONS_COPYOUT 214 #DB_HTONS_COPYOUT ( v , p , i ) do { \ 215 u_t8_t * tmp ; \ 216 tmp = ( u_t8_t *) p ; \ 217 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) { \ 218 * tmp ++ = (( u_t8_t *)&( i ))[1]; \ 219 * tmp ++ = (( u_t8_t *)&( i ))[0]; \ 221 `memy ( p , & i , ( u_t16_t )); \ 222 p = ( u_t8_t * + ( u_t16_t ); \ 223 } 0) ) 230 #LOG_SWAPPED ( v ! `F_ISSET nv, ENV_LITTLEENDIAN ) ) 232 #LOGCOPY_32 ( v , x , p ) do { \ 233 i( `LOG_SWAPPED ( v )) \ 234 `P_32_COPYSWAP (( p ), ( x )); \ 236 `memy (( x ), ( p ), ( u_t32_t )); \ 237 } 0) ) 239 #LOGCOPY_16 ( v , x , p ) do { \ 240 i( `LOG_SWAPPED ( v )) \ 241 `P_16_COPYSWAP (( p ), ( x )); \ 243 `memy (( x ), ( p ), ( u_t16_t )); \ 244 } 0) ) 246 #LOGCOPY_TOLSN ( v , lp , p ) do { \ 247 `LOGCOPY_32 (( v ), &( lp )-> fe , ( p )); \ 248 `LOGCOPY_32 (( v ), &( lp )-> offt , \ 249 ( u_t8_t *)( p + ( u_t32_t )); \ 250 } 0) ) 252 #LOGCOPY_FROMLSN ( v , p , lp ) do { \ 253 `LOGCOPY_32 (( v ), ( p ), &( lp )-> fe ); \ 254 `LOGCOPY_32 (( v ), \ 255 ( u_t8_t *)( p + ( u_t32_t ), &( lp )-> offt ); \ 256 } 0) ) 258 #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 ) ) 48 s__vrfy_dbfo { 49 DB_THREAD_INFO * thad_fo ; 51 DBTYPE ty ; 54 LIST_HEAD ( __subdbs , __vrfy_chdfo subdbs ; 57 DB * pgdbp ; 60 DB * cdbp ; 63 LIST_HEAD ( __aivs , __vrfy_gefo aivs ; 69 DB * pgt ; 80 #SALVAGE_INVALID 0 ) 81 #SALVAGE_IGNORE 1 ) 82 #SALVAGE_LDUP 2 ) 83 #SALVAGE_IBTREE 3 ) 84 #SALVAGE_OVERFLOW 4 ) 85 #SALVAGE_LBTREE 5 ) 86 #SALVAGE_HASH 6 ) 87 #SALVAGE_LRECNO 7 ) 88 #SALVAGE_LRECNODUP 8 ) 89 DB * lvage_ges ; 91 db_pgno_t ϡ_pgno ; 92 db_pgno_t ma_ϡ_pgno ; 93 db_pgno_t pgs_mag ; 101 db_pgno_t ev_pgno ; 102 db_pgno_t xt_pgno ; 103 u_t8_t af_ty ; 106 u_t32_t _d ; 107 u_t32_t _n ; 108 u_t32_t c_ge ; 109 u_t32_t ge_ext ; 110 u_t32_t f_o ; 111 u_t32_t ϡ_o ; 112 xs ; 113 db_pgno_t * exs ; 115 #SALVAGE_PRINTABLE 0x01 ) 116 #SALVAGE_PRINTHEADER 0x02 ) 117 #SALVAGE_PRINTFOOTER 0x04 ) 118 #VRFY_LEAFCHAIN_BROKEN 0x08 ) 119 #VRFY_QMETA_SET 0x10 ) 121 u_t32_t ags ; 132 s__vrfy_gefo { 133 u_t8_t ty ; 134 u_t8_t bt_v ; 135 u_t8_t unud1 ; 136 u_t8_t unud2 ; 137 db_pgno_t pgno ; 138 db_pgno_t ev_pgno ; 139 db_pgno_t xt_pgno ; 142 db_pgno_t ro ; 143 db_pgno_t ; 145 db_dx_t s ; 146 u_t16_t unud ; 147 db_o_t c_t ; 148 u_t32_t _d ; 149 u_t32_t _n ; 150 u_t32_t bt_mkey ; 151 u_t32_t h_f ; 152 u_t32_t h_m ; 159 u_t32_t fcou ; 160 u_t32_t ޒ ; 162 #VRFY_DUPS_UNSORTED 0x0001 ) 163 #VRFY_HAS_CHKSUM 0x0002 ) 164 #VRFY_HAS_DUPS 0x0004 ) 165 #VRFY_HAS_DUPSORT 0x0008 ) 166 #VRFY_HAS_RECNUMS 0x0010 ) 167 #VRFY_HAS_SUBDBS 0x0020 ) 168 #VRFY_INCOMPLETE 0x0040 ) 169 #VRFY_IS_ALLZEROES 0x0080 ) 170 #VRFY_IS_FIXEDLEN 0x0100 ) 171 #VRFY_IS_RECNO 0x0200 ) 172 #VRFY_IS_RRECNO 0x0400 ) 173 #VRFY_OVFL_LEAFSEEN 0x0800 ) 174 u_t32_t ags ; 176 LIST_ENTRY ( __vrfy_gefo lks ; 177 u_t32_t pi_fcou ; 180 s__vrfy_chdfo { 182 db_pgno_t pgno ; 184 #V_DUPLICATE 1 ) 185 #V_OVERFLOW 2 ) 186 #V_RECNO 3 ) 187 u_t32_t ty ; 188 db_o_t ecs ; 189 u_t32_t ; 192 u_t32_t ft ; 194 LIST_ENTRY ( __vrfy_chdfo lks ; 197 #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 ( dbv , r , r_t , p_ , fmt ) { \ 83 va_li __ ; \ 86 `va_t ( __ , fmt ); \ 87 i(( dbv ! NULL && (dbv)-> db_r != NULL) \ 88 `__db_r ( dbv , r , r_t , fmt , __ ); \ 89 `va_d ( __ ); \ 98 `va_t ( __ , fmt ); \ 99 i(( dbv = NULL || \ 100 ( dbv )-> db_rfe ! NULL || \ 101 (( dbv )-> db_r = NULL && \ 102 (( p_ || `F_ISSET (( dbv )-> v , ENV_NO_OUTPUT_SET )))) \ 103 `__db_rfe ( dbv , r , r_t , fmt , __ ); \ 104 `va_d ( __ ); \ 105 } ) 107 #DB_REAL_ERR ( dbv , r , r_t , p_ , fmt ) { \ 108 va_li __ ; \ 111 `va_t ( __ ); \ 112 i(( dbv ! NULL && (dbv)-> db_r != NULL) \ 113 `__db_r ( dbv , r , r_t , fmt , __ ); \ 114 `va_d ( __ ); \ 123 `va_t ( __ ); \ 124 i(( dbv = NULL || \ 125 ( dbv )-> db_rfe ! NULL || \ 126 (( dbv )-> db_r = NULL && \ 127 (( p_ || `F_ISSET (( dbv )-> v , ENV_NO_OUTPUT_SET )))) \ 128 `__db_rfe ( v , r , r_t , fmt , __ ); \ 129 `va_d ( __ ); \ 130 } ) 132 #i defed ( STDC_HEADERS || defed( __lulus ) 133 #DB_REAL_MSG ( dbv , fmt ) { \ 134 va_li __ ; \ 137 `va_t ( __ , fmt ); \ 138 i(( dbv ! NULL && (dbv)-> db_msg != NULL) \ 139 `__db_msg ( dbv , fmt , __ ); \ 140 `va_d ( __ ); \ 147 `va_t ( __ , fmt ); \ 148 i(( dbv = NULL || \ 149 ( dbv )-> db_msgfe ! NULL || \ 150 ( dbv )-> db_msg = NULL ) { \ 151 `__db_msgfe ( dbv , fmt , __ ); \ 153 `va_d ( __ ); \ 154 } ) 156 #DB_REAL_MSG ( dbv , fmt ) { \ 157 va_li __ ; \ 160 `va_t ( __ ); \ 161 i(( dbv ! NULL && (dbv)-> db_msg != NULL) \ 162 `__db_msg ( dbv , fmt , __ ); \ 163 `va_d ( __ ); \ 170 `va_t ( __ ); \ 171 i(( dbv = NULL || \ 172 ( dbv )-> db_msgfe ! NULL || \ 173 ( dbv )-> db_msg = NULL ) { \ 174 `__db_msgfe ( dbv , fmt , __ ); \ 176 `va_d ( __ ); \ 177 } ) 192 #LOG_OP ( C , T , O , K , A , F ) { \ 193 DB_LSN __l ; \ 194 DBT __ ; \ 195 i( `DBC_LOGGING (( C ))) { \ 196 `memt (& __ , 0, (__op)); \ 197 __ . da = O ; \ 198 __ . size = ` ( O ) + 1; \ 199 () `__db_debug_log (( C )-> v , T , & __l , 0, \ 200 & __ , ( C )-> dbp -> log_fame -> id , K , A , F ); \ 202 } ) 203 #ifdef DEBUG_ROP 204 #DEBUG_LREAD ( C , T , O , K , A , F `LOG_OP (C, T, O, K, A, F) ) 206 #DEBUG_LREAD ( C , T , O , K , A , F ) ) 208 #ifdef DEBUG_WOP 209 #DEBUG_LWRITE ( C , T , O , K , A , F `LOG_OP (C, T, O, K, A, F) ) 211 #DEBUG_LWRITE ( C , T , O , K , A , F ) ) 218 #i CONFIG_TEST 219 #DB_TEST_SUBLOCKS ( v , ags ) do { \ 220 i(( v )-> _abt = DB_TEST_SUBDB_LOCKS ) \ 221 ( ags | DB_LOCK_NOWAIT ; \ 222 } 0) ) 224 #DB_ENV_TEST_RECOVERY ( v , v , t , me ) do { \ 225 __t ; \ 226 `PANIC_CHECK (( v )); \ 227 i(( v )-> _cy =( v )) { \ 229 i(( __t = `__db_cy (( v ), NULL , ( me ))) != 0) \ 230 ( t `__v_nic (( v ), __t ); \ 232 i(( v )-> _abt =( v )) { \ 234 ( v )-> _abt = 0; \ 235 ( t EINVAL ; \ 236 db__r ; \ 238 } 0) ) 240 #DB_TEST_RECOVERY ( dbp , v , t , me ) do { \ 241 ENV * __v = ( dbp )-> v ; \ 242 __t ; \ 243 `PANIC_CHECK ( __v ); \ 244 i( __v -> _cy =( v )) { \ 246 i( `F_ISSET (( dbp ), \ 247 DB_AM_OPEN_CALLED && ( dbp )-> mpf ! NULL ) \ 248 () `__db_sync ( dbp ); \ 249 i(( __t = \ 250 `__db_cy ( __v , ( dbp ), ( me ))) != 0) \ 251 ( t `__v_nic ( __v , __t ); \ 253 i( __v -> _abt =( v )) { \ 255 __v -> _abt = 0; \ 256 ( t EINVAL ; \ 257 db__r ; \ 259 } 0) ) 261 #DB_TEST_RECOVERY_LABEL db__r : ) 263 #DB_TEST_WAIT ( v , v ) \ 264 i(( v ) != 0) \ 265 `__os_yld (( v ), ( u_lg )( v ), 0) ) 267 #DB_TEST_SUBLOCKS ( v , ags ) ) 268 #DB_ENV_TEST_RECOVERY ( v , v , t , me ) ) 269 #DB_TEST_RECOVERY ( dbp , v , t , me ) ) 270 #DB_TEST_RECOVERY_LABEL ) 271 #DB_TEST_WAIT ( v , v ) ) 274 #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 #CLR_INMEM ( D ) do { \ 22 `F_CLR (( D ), DB_AM_INMEM ); \ 23 () `__memp_t_ags (( D )-> mpf , DB_MPOOL_NOFILE , 0); \ 24 } 0) ) 26 ~"dbc_auto/fes_auto.h " 27 ~"dbc_auto/fes_ext.h " 29 #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 ( __vq , __v 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_fe_m __P (( DB_ENV *, *, size_t , , **)); 59 (* j_fe_unm __P (( DB_ENV *, *)); 60 (* j_ݒ __P ((const *, , ...)); 61 ssize_t (* j_d __P ((, *, size_t , off_t )); 62 ssize_t (* j_pwre __P ((, cڡ *, size_t , off_t )); 63 ssize_t (* j_ad __P ((, *, size_t )); 64 *(* j_loc __P ((*, size_t )); 65 (* j_gi_m __P (( DB_ENV *, *, size_t , *, **)); 66 (* j_gi_unm __P (( DB_ENV *, *)); 67 (* j_me __P ((const *, const *)); 68 (* j_ek __P ((, off_t , )); 69 (* j_uƚk __P ((const *)); 70 ssize_t (* j_wre __P ((, cڡ *, size_t )); 71 (* j_yld __P (( u_lg , u_long)); 72 } tDB_GLOBALS ; 74 #ifde HAVE_BREW 75 #DB_GLOBAL ( v ) \ 76 (( DB_GLOBALS *)((( BDBA *) `GETAPPINSTANCE ())-> db_glob_vues ))-> v ) 78 #ifde DB_INITIALIZE_DB_GLOBALS 79 DB_GLOBALS __db_glob_vues = { 80 #ifde HAVE_VXWORKS 82 NULL , 85 { NULL , & __db_glob_vues . vq . tqh_f }, 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 , 114 NULL , 115 NULL 118 DB_GLOBALS __db_glob_vues ; 121 #DB_GLOBAL ( v __db_glob_vues . ) v 124 #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 #LOCK_REGION_LOCK ( v ) \ 47 `MUTEX_LOCK ( v , (( DB_LOCKREGION *) \ 48 ( v )-> lk_hd -> gfo . imy )-> mtx_gi ) ) 49 #LOCK_REGION_UNLOCK ( v ) \ 50 `MUTEX_UNLOCK ( v , (( DB_LOCKREGION *) \ 51 ( v )-> lk_hd -> gfo . imy )-> mtx_gi ) ) 58 s__db_lockgi { 59 db_mux_t mtx_gi ; 61 u_t32_t ed_dd ; 62 u_t32_t de ; 63 db_timeec xt_timeout ; 64 db_mux_t mtx_dd ; 65 db_mux_t mtx_locks ; 66 SH_TAILQ_HEAD ( __dobj dd_objs ; 68 SH_TAILQ_HEAD ( __ock _locks ; 69 SH_TAILQ_HEAD ( __lkrs locks ; 71 db_timeout_t lk_timeout ; 72 db_timeout_t tx_timeout ; 74 u_t32_t lock_t_size ; 75 u_t32_t obje_t_size ; 76 u_t32_t _t_size ; 78 roff_t cf_off ; 79 roff_t obj_off ; 80 roff_t _off ; 81 roff_t _off ; 82 roff_t lock_off ; 84 DB_LOCK_STAT ; 85 } tDB_LOCKREGION ; 91 s__sh_dbt { 92 u_t32_t size ; 93 roff_t off ; 94 } tSH_DBT ; 96 #SH_DBT_PTR ( p ((*)((( u_t8_t *))+ (p)-> off )) ) 101 s__db_lockobj { 102 u_t32_t dx ; 103 u_t32_t gi ; 104 SH_DBT lockobj ; 105 SH_TAILQ_ENTRY lks ; 106 SH_TAILQ_ENTRY dd_lks ; 107 SH_TAILQ_HEAD ( __wal was ; 108 SH_TAILQ_HEAD ( __hdl hds ; 113 u_t8_t objda [( __db_ock )]; 114 } tDB_LOCKOBJ ; 119 s__db_lock { 120 u_t32_t id ; 122 pid_t pid ; 123 db_thadid_t tid ; 125 u_t32_t dd_id ; 127 u_t32_t ocks ; 128 u_t32_t nwres ; 130 roff_t ma_lock ; 131 roff_t _lock ; 132 SH_LIST_HEAD ( _chd chd_lock ; 135 SH_LIST_ENTRY chd_lk ; 138 SH_TAILQ_ENTRY lks ; 139 SH_TAILQ_ENTRY ulks ; 140 SH_LIST_HEAD ( _hd hdby ; 141 db_timeec lk_expe ; 142 db_timeec tx_expe ; 143 db_timeout_t lk_timeout ; 145 #DB_LOCKER_DIRTY 0x0001 ) 146 #DB_LOCKER_INABORT 0x0002 ) 147 #DB_LOCKER_TIMEOUT 0x0004 ) 148 u_t32_t ags ; 154 #LOCK_PART ( g , ndx dx % (g)-> _t_size ) ) 159 s__db_lock { 160 db_mux_t mtx_ ; 162 SH_TAILQ_HEAD ( __ock _locks ; 164 SH_TAILQ_HEAD ( __fobj _objs ; 165 #ifde HAVE_STATISTICS 166 DB_LOCK_PSTAT _ ; 168 } tDB_LOCKPART ; 170 #FREE_LOCKS ( , (t)-> _y []. _locks ) ) 171 #FREE_OBJS ( , (t)-> _y []. _objs ) ) 178 s__db_lockb { 179 ENV * v ; 180 REGINFO gfo ; 181 u_t8_t * cis ; 182 DB_LOCKPART * _y ; 183 #ifde HAVE_STATISTICS 184 DB_LOCK_HSTAT * obj_ ; 186 DB_HASHTAB * obj_b ; 187 DB_HASHTAB * lock_b ; 195 #CONFLICTS ( T , R , HELD , WANTED ) \ 196 ( T )-> cis [(() HELD * ( R )-> . _nmodes + (() WANTED )] ) 198 #OBJ_LINKS_VALID ( L ((L)-> lks . qe_ev !-1) ) 200 s__db_lock { 205 db_mux_t mtx_lock ; 207 roff_t hd ; 208 u_t32_t g ; 209 SH_TAILQ_ENTRY lks ; 210 SH_LIST_ENTRY lock_lks ; 211 u_t32_t fcou ; 212 db_lockmode_t mode ; 213 roff_t obj ; 214 u_t32_t dx ; 215 db_us_t us ; 228 #DB_LOCK_DOALL 0x010000 ) 229 #DB_LOCK_FREE 0x040000 ) 230 #DB_LOCK_NOPROMOTE 0x080000 ) 231 #DB_LOCK_UNLINK 0x100000 ) 232 #DB_LOCK_NOWAITERS 0x400000 ) 250 #LOCK_SYSTEM_LOCK ( , g ) do { \ 251 i(( g )-> _t_size == 1) \ 252 `MUTEX_LOCK (( )-> v , ( g )-> mtx_gi ); \ 253 } 0) ) 254 #LOCK_SYSTEM_UNLOCK ( , g ) do { \ 255 i(( g )-> _t_size == 1) \ 256 `MUTEX_UNLOCK (( )-> v , ( g )-> mtx_gi ); \ 257 } 0) ) 258 #MUTEX_LOCK_PARTITION ( , g , p ) do { \ 259 i(( g )-> _t_size != 1) \ 260 `MUTEX_LOCK (( )-> v , ()-> _y [ p ]. mtx_ ); \ 261 } 0) ) 262 #MUTEX_UNLOCK_PARTITION ( , g , p ) do { \ 263 i(( g )-> _t_size != 1) \ 264 `MUTEX_UNLOCK (( )-> v , ()-> _y [ p ]. mtx_ ); \ 265 } 0) ) 267 #OBJECT_LOCK ( , g , obj , ndx ) do { \ 268 ndx = `__lock_ohash ( obj % ( g )-> obje_t_size ; \ 269 `MUTEX_LOCK_PARTITION ( , g , `LOCK_PART eg, ndx )); \ 270 } 0) ) 272 #OBJECT_LOCK_NDX ( , g , ndx ) \ 273 `MUTEX_LOCK_PARTITION ( , g , `LOCK_PART eg, ndx )); ) 275 #OBJECT_UNLOCK ( , g , ndx ) \ 276 `MUTEX_UNLOCK_PARTITION ( , g , `LOCK_PART eg, ndx )); ) 282 #LOCK_DD ( v , gi ) \ 283 `MUTEX_LOCK ( v , ( gi )-> mtx_dd ) ) 284 #UNLOCK_DD ( v , gi ) \ 285 `MUTEX_UNLOCK ( v , ( gi )-> mtx_dd ) ) 286 #LOCK_LOCKERS ( v , gi ) \ 287 `MUTEX_LOCK ( v , ( gi )-> mtx_locks ) ) 288 #UNLOCK_LOCKERS ( v , gi ) \ 289 `MUTEX_UNLOCK ( v , ( gi )-> mtx_locks ) ) 297 #__lock_lock_hash ( lock ock) ) 298 #LOCKER_HASH ( , g , lock , ndx ) \ 299 ndx = `__lock_lock_hash ( lock % ( g )-> lock_t_size ; ) 301 #i defed ( __lulus ) 305 ~"dbc_auto/lock_ext.h " @../dbinc/log.h 9 #ide _DB_LOG_H_ 10 #_DB_LOG_H_ ) 12 ~"dbc/db_sw.h " 14 #i defed ( __lulus ) 27 s__db_y { 28 DB * dbp ; 29 ded ; 30 } tDB_ENTRY ; 36 s__ame { 37 SH_TAILQ_ENTRY q ; 39 pid_t pid ; 40 t32_t id ; 41 t32_t d_id ; 42 DBTYPE s_ty ; 44 roff_t ame_off ; 45 roff_t dme_off ; 46 db_pgno_t ma_pgno ; 47 u_t8_t ufid [ DB_FILE_ID_LEN ]; 49 u_t32_t _txnid ; 53 db_mux_t mux ; 55 u_t32_t txn_f ; 57 #DB_FNAME_CLOSED 0x01 ) 58 #DB_FNAME_DURABLE 0x02 ) 59 #DB_FNAME_INMEM 0x04 ) 60 #DB_FNAME_NOTLOGGED 0x08 ) 61 #DB_FNAME_RECOVER 0x10 ) 62 #DB_FNAME_RESTORED 0x20 ) 63 u_t32_t ags ; 67 #DBREG_CHKPNT 1 ) 68 #DBREG_CLOSE 2 ) 69 #DBREG_OPEN 3 ) 70 #DBREG_PREOPEN 4 ) 71 #DBREG_RCLOSE 5 ) 72 #DBREG_REOPEN 6 ) 78 __hdr ; __hd tHDR ; 79 __log ; __log tLOG ; 80 __log_rsi ; __log_rsi tLOGP ; 82 #LFPREFIX "log." ) 83 #LFNAME "log.%010d" ) 84 #LFNAME_V1 "log.%05d" ) 86 #LG_MAX_DEFAULT (10 * MEGABYTE ) 87 #LG_MAX_INMEM (256 * 1024 ) 88 #LG_BSIZE_INMEM (1 * MEGABYTE ) 95 #LG_BASE_REGION_SIZE (65000 ) 96 #LG_BSIZE_DEFAULT (32000 ) 97 #LG_CURSOR_BUF_SIZE (32000 ) 103 s__db_log { 107 db_mux_t mtx_dbg ; 109 DB_ENTRY * dby ; 110 #DB_GROW_SIZE 64 ) 111 t32_t dby_t ; 117 u_t32_t lame ; 118 DB_FH * lfhp ; 119 time_t lf_timeamp ; 121 u_t8_t * bu ; 124 ENV * v ; 125 REGINFO gfo ; 127 #DBLOG_AUTOREMOVE 0x01 ) 128 #DBLOG_DIRECT 0x02 ) 129 #DBLOG_DSYNC 0x04 ) 130 #DBLOG_FORCE_OPEN 0x08 ) 132 #DBLOG_INMEMORY 0x10 ) 133 #DBLOG_OPENFILES 0x20 ) 134 #DBLOG_RECOVER 0x40 ) 135 #DBLOG_ZERO 0x80 ) 136 u_t32_t ags ; 143 s__hdr { 144 u_t32_t ev ; 145 u_t32_t n ; 146 u_t8_t chksum [ DB_MAC_KEY ]; 147 u_t8_t iv [ DB_IV_BYTES ]; 148 u_t32_t ig_size ; 150 size_t size ; 158 #LOG_HDR_SUM ( yo , hdr , sum ) do { \ 159 i( yo ) { \ 160 (( u_t32_t *) sum )[0] ^(( HDR *) hdr )-> ev ; \ 161 (( u_t32_t *) sum )[1] ^(( HDR *) hdr )-> n ; \ 163 (( u_t32_t *) sum )[0] ^= \ 164 (( HDR *) hdr )-> ev ^ ((HDR *)hdr)-> n ; \ 166 } 0) ) 176 #HDR_NORMAL_SZ 12 ) 177 #HDR_CRYPTO_SZ 12 + DB_MAC_KEY + DB_IV_BYTES ) 179 s__log_rsi { 180 u_t32_t magic ; 181 u_t32_t vsi ; 183 u_t32_t log_size ; 184 u_t32_t nud ; 188 #LOG_SYSTEM_LOCK ( v ) \ 189 `MUTEX_LOCK ( v , (( LOG *) \ 190 ( v )-> lg_hd -> gfo . imy )-> mtx_gi ) ) 191 #LOG_SYSTEM_UNLOCK ( v ) \ 192 `MUTEX_UNLOCK ( v , (( LOG *) \ 193 ( v )-> lg_hd -> gfo . imy )-> mtx_gi ) ) 200 s__log { 201 db_mux_t mtx_gi ; 203 db_mux_t mtx_fi ; 205 LOGP rsi ; 207 SH_TAILQ_HEAD ( __fq1 fq ; 208 t32_t fid_max ; 209 roff_t _fid_ack ; 210 u_t _fids ; 211 u_t _fids_lod ; 217 DB_LSN l ; 225 DB_LSN f_l ; 226 size_t b_off ; 227 u_t32_t w_off ; 228 u_t32_t n ; 230 DB_LSN aive_l ; 231 size_t a_off ; 239 db_mux_t mtx_ush ; 240 _ush ; 241 DB_LSN s_l ; 243 DB_LOG_STAT ; 254 time_t timeamp ; 277 DB_LSN wag_l ; 278 DB_LSN vify_l ; 279 DB_LSN max_wa_l ; 280 DB_LSN max_rm_l ; 281 db_timeec max_a_ts ; 282 db_timeec wa_ts ; 283 db_timeec rcvd_ts ; 284 db_timeec ϡ_ts ; 292 DB_LSN ady_l ; 299 roff_t bulk_buf ; 300 u_t bulk_off ; 301 u_t32_t bulk_n ; 302 u_t32_t bulk_ags ; 312 DB_LSN ched_ckp_l ; 314 u_t32_t gimax ; 316 roff_t bufr_off ; 317 u_t32_t bufr_size ; 319 u_t32_t log_size ; 320 u_t32_t log_nsize ; 322 femode ; 328 db_log_autemove ; 329 db_log_memy ; 331 u_t32_t ncomm ; 332 DB_LSN t_l ; 333 SH_TAILQ_HEAD ( __comm comms ; 334 SH_TAILQ_HEAD ( __ _comms ; 341 SH_TAILQ_HEAD ( __logfe logfes ; 342 SH_TAILQ_HEAD ( ___logfe _logfes ; 349 s__db_comm { 350 db_mux_t mtx_txnwa ; 351 DB_LSN l ; 352 SH_TAILQ_ENTRY lks ; 354 #DB_COMMIT_FLUSH 0x0001 ) 355 u_t32_t ags ; 372 #CHECK_LSN ( e , do , cmp , l , ev ) \ 373 i( `DB_REDO ( do && ( cmp ) < 0 && \ 374 ((! `IS_NOT_LOGGED_LSN (*( l )&& ! `IS_ZERO_LSN (*(lsn))) || \ 375 `IS_REP_CLIENT ( e ))) { \ 376 t = `__db_check_l ( e , l , ev ); \ 377 out ; \ 378 } ) 384 s__db_fet { 385 u_t32_t fe ; 386 size_t b_off ; 388 SH_TAILQ_ENTRY lks ; 391 #RINGBUF_LEN ( , t , d ) \ 392 (( t < ( d ) ? \ 393 ( d - ( t : ( )-> bufr_size - ((t- (d))) ) 400 #unde DB_SET_TXN_LSNP 401 #DB_SET_TXN_LSNP ( txn , blp , p ) do { \ 402 DB_LSN * __lp ; \ 403 TXN_DETAIL * __td ; \ 404 __td = ( txn )-> td ; \ 405 *( p & __td -> ϡ_l ; \ 406 __td -> ! INVALID_ROFF ) \ 407 __td = `R_ADDR (&( txn )-> mg -> gfo , __td-> ); \ 408 __lp = & __td -> beg_l ; \ 409 i( `IS_ZERO_LSN (* __lp )) \ 410 *( blp __lp ; \ 411 } 0) ) 417 #CKPLSN_CMP 0 ) 418 #LASTCKP_CMP 1 ) 425 DB_LV_INCOMPLETE , 426 DB_LV_NONEXISTENT , 427 DB_LV_NORMAL , 428 DB_LV_OLD_READABLE , 429 DB_LV_OLD_UNREADABLE 430 } tlogfe_vidy ; 432 #i defed ( __lulus ) 436 ~"dbc_auto/dbg_auto.h " 437 ~"dbc_auto/dbg_ext.h " 438 ~"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_p ; __bh_oz_ 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 )-> v , me , 1)); ) 33 #MPF_ILLEGAL_BEFORE_OPEN ( dbm , me ) \ 34 i(! `F_ISSET ( dbm , MP_OPEN_CALLED )) \ 35 ( `__db_mi_ݒ (( dbm )-> v , 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 ENV * v ; 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 ( v ) \ 105 `MUTEX_LOCK ( v , (( MPOOL *) \ 106 ( v )-> mp_hd -> gfo [0]. imy )-> mtx_gi ) ) 107 #MPOOL_SYSTEM_UNLOCK ( v ) \ 108 `MUTEX_UNLOCK ( v , (( MPOOL *) \ 109 ( v )-> mp_hd -> gfo [0]. imy )-> mtx_gi ) ) 112 #MPOOL_REGION_LOCK ( v , f ) \ 113 `MUTEX_LOCK ( v , (( MPOOL *)( f )-> imy )-> mtx_gi ) ) 114 #MPOOL_REGION_UNLOCK ( v , f ) \ 115 `MUTEX_UNLOCK ( v , (( 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 << 8^ (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 -> v -> 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 )-> v , \ 291 ( dbm )-> m , ( pgno ), ( fp ), NULL ); \ 292 } 0) ) 298 #MP_GET_BUCKET ( v , m , pgno , fp , hp , t ) do { \ 299 DB_MPOOL * __t_dbmp ; \ 300 MPOOL * __t_mp ; \ 301 roff_t __t_mf_offt ; \ 302 u_t32_t __t_buck ; \ 304 __t_dbmp = ( v )-> mp_hd ; \ 305 __t_mp = __t_dbmp -> gfo [0]. imy ; \ 306 i( __t_mp -> max_eg == 1) { \ 307 *( fp & __t_dbmp -> gfo [0]; \ 308 __t_mf_offt = `R_OFFSET (*( fp ), ( m )); \ 309 `MP_BUCKET ( __t_mf_offt , \ 310 ( pgno ), __t_mp -> nbucks , __t_buck ); \ 311 ( hp `R_ADDR (*( fp ), __t_mp -> hb ); \ 312 ( hp &(hp)[ __t_buck ]; \ 313 `MUTEX_LOCK ( v , ( hp )-> mtx_hash ); \ 314 t = 0; \ 316 t = `__memp_g_buck (( v ), \ 317 ( m ), ( pgno ), ( fp ), &( hp )); \ 318 } 0) ) 320 s__db_mpo_hash { 321 db_mux_t mtx_hash ; 322 db_mux_t mtx_io ; 324 DB_HASHTAB hash_buck ; 326 u_t32_t hash_ge_dty ; 328 #ide __TEST_DB_NO_STATISTICS 329 u_t32_t hash_io_wa ; 330 u_t32_t hash_oz ; 331 u_t32_t hash_thawed ; 332 u_t32_t hash_oz_d ; 335 DB_LSN d_ad ; 337 #IO_WAITER 0x001 ) 338 u_t32_t ags ; 346 #MPOOL_BASE_DECREMENT ( UINT32_MAX - (UINT32_MAX / 4)) ) 352 #MPOOL_PRI_VERY_LOW -1 ) 353 #MPOOL_PRI_LOW -2 ) 354 #MPOOL_PRI_DEFAULT 0 ) 355 #MPOOL_PRI_HIGH 10 ) 356 #MPOOL_PRI_DIRTY 10 ) 357 #MPOOL_PRI_VERY_HIGH 1 ) 363 s__mpofe { 364 db_mux_t mux ; 367 u_t32_t mpf_t ; 368 u_t32_t block_t ; 369 db_pgno_t ϡ_pgno ; 370 db_pgno_t ϡ_ushed_pgno ; 371 db_pgno_t ig_ϡ_pgno ; 372 db_pgno_t maxpgno ; 374 roff_t th_off ; 377 SH_TAILQ_ENTRY q ; 386 u_t32_t _f ; 387 u_t32_t _t ; 388 size_t _size ; 389 roff_t _li ; 396 t32_t ddfe ; 398 u_t32_t buck ; 408 t32_t y ; 415 t32_t iܙy ; 434 t32_t fe_wrn ; 435 t32_t no_backg_fe ; 436 t32_t uƚk__o ; 437 t32_t muivsi ; 444 DB_MPOOL_FSTAT ; 450 t32_t l_off ; 451 u_t32_t r_n ; 453 roff_t feid_off ; 455 roff_t pgcook_n ; 456 roff_t pgcook_off ; 461 #MP_CAN_MMAP 0x001 ) 462 #MP_DIRECT 0x002 ) 463 #MP_DURABLE_UNKNOWN 0x004 ) 464 #MP_EXTENT 0x008 ) 465 #MP_FAKE_DEADFILE 0x010 ) 466 #MP_FAKE_FILEWRITTEN 0x020 ) 467 #MP_FAKE_NB 0x040 ) 468 #MP_FAKE_UOC 0x080 ) 469 #MP_NOT_DURABLE 0x100 ) 470 #MP_TEMP 0x200 ) 471 u_t32_t ags ; 477 #BH_FREE_FREEMEM 0x01 ) 478 #BH_FREE_REUSE 0x02 ) 479 #BH_FREE_UNLOCKED 0x04 ) 485 s__bh { 486 u_t16_t f ; 487 u_t16_t f_sync ; 489 #BH_CALLPGIN 0x001 ) 490 #BH_DIRTY 0x002 ) 491 #BH_DIRTY_CREATE 0x004 ) 492 #BH_DISCARD 0x008 ) 493 #BH_FREED 0x010 ) 494 #BH_FROZEN 0x020 ) 495 #BH_LOCKED 0x040 ) 496 #BH_TRASH 0x080 ) 497 #BH_THAWED 0x100 ) 498 u_t16_t ags ; 500 u_t32_t iܙy ; 501 SH_TAILQ_ENTRY hq ; 503 db_pgno_t pgno ; 504 roff_t mf_offt ; 506 roff_t td_off ; 507 SH_CHAIN_ENTRY vc ; 508 #ifde DIAG_MVCC 509 u_t16_t ign_off ; 519 u_t8_t buf [1]; 526 s__bh_oz_p { 527 BH hd ; 528 db_pgno_t gno ; 537 s__bh_oz_a { 538 SH_TAILQ_ENTRY lks ; 541 #MULTIVERSION ( dbp ((dbp)-> mpf -> m -> muivsi ) ) 542 #IS_DIRTY ( p ) \ 543 `F_ISSET (( BH *)(( u_t8_t *)( p - `SSZA (BH, buf )), BH_DIRTY ) ) 545 #BH_OWNER ( v , bhp ) \ 546 (( TXN_DETAIL *) `R_ADDR (& v -> tx_hd -> gfo , bhp -> td_off )) ) 548 #BH_OWNED_BY ( v , bhp , txn (xn! NULL && \ 549 ( bhp )-> td_off ! INVALID_ROFF && \ 550 ( txn )-> td = `BH_OWNER ( v , bhp )) ) 552 #BH_PRIORITY ( bhp ) \ 553 ( `SH_CHAIN_SINGLETON ( bhp , vc ? (bhp)-> iܙy : \ 554 `__memp_bh_iܙy ( bhp )) ) 556 #VISIBLE_LSN ( v , bhp ) \ 557 (& `BH_OWNER ( v , bhp )-> visib_l ) ) 569 #BH_VISIBLE ( v , bhp , ad_lp , vl ) \ 570 ( bhp -> td_off = INVALID_ROFF || \ 571 (( vl ). fe = `VISIBLE_LSN ( v , bhp )->file, \ 572 ( vl ). offt = `VISIBLE_LSN ( v , bhp )->offset, \ 573 `LOG_COMPARE (( ad_lp ), &( vl )>0)) ) 575 #BH_OBSOLETE ( bhp , d_l , vl ( `SH_CHAIN_HASNEXT (bhp, vc ) ? \ 576 `BH_VISIBLE ( v , `SH_CHAIN_NEXTP ( bhp , vc , __bh ), &( d_l ), vl ) :\ 577 `BH_VISIBLE ( v , bhp , &( d_l ), vl )) ) 579 #MVCC_SKIP_CURADJ ( dbc , pgno ) \ 580 ( dbc -> txn ! NULL && `F_ISSET (dbc->txn, TXN_SNAPSHOT ) && \ 581 dbc -> txn -> td ! NULL && `__memp_sk_cudj (dbc, pgno )) ) 583 #i defed ( DIAG_MVCC && defed( HAVE_MPROTECT ) 584 #VM_PAGESIZE 4096 ) 585 #MVCC_BHSIZE ( m , sz ) do { \ 586 sz + VM_PAGESIZE + ( BH ); \ 587 i( m -> . _gesize < VM_PAGESIZE ) \ 588 sz + VM_PAGESIZE - m -> . _gesize ; \ 589 } 0) ) 591 #MVCC_BHALIGN ( m , p ) do { \ 592 i( m ! NULL ) { \ 593 BH * __bhp ; \ 594 * __ig = ( p ); \ 595 p = `ALIGNP_INC , VM_PAGESIZE ); \ 596 i(( u_t8_t *) p < (u_t8_*) __ig + ( BH )) \ 597 p = ( u_t8_t * + VM_PAGESIZE ; \ 598 __bhp = ( BH *)(( u_t8_t *) p - `SSZA (BH, buf )); \ 599 `DB_ASSERT ( v , \ 600 (( u_t ) __bhp -> buf & ( VM_PAGESIZE - 1)) == 0); \ 601 `DB_ASSERT ( v , \ 602 ( u_t8_t *) __bhp >(u_t8_*) __ig ); \ 603 `DB_ASSERT ( v , ( u_t8_t *) p + m -> . _gesize <\ 604 ( u_t8_t *) __ig + n ); \ 605 __bhp -> ign_off = \ 606 ( u_t16_t )(( u_t8_t *) __bhp - (u_t8_*) __ig );\ 607 p = __bhp ; \ 609 } 0) ) 611 #MVCC_BHUNALIGN ( m , p ) do { \ 612 i(( m ! NULL ) { \ 613 BH * bhp = (BH *)( p ); \ 614 ( p (( u_t8_t *) bhp - bhp-> ign_off ); \ 616 } 0) ) 618 #ifde lux 619 #MVCC_MPROTECT ( buf , sz , mode ) do { \ 620 __t = `me (( buf ), ( sz ), ( mode )); \ 621 `DB_ASSERT ( v , __t == 0); \ 622 } 0) ) 624 #MVCC_MPROTECT ( buf , sz , mode ) do { \ 625 i(! `F_ISSET ( v , ENV_PRIVATE | ENV_SYSTEM_MEM )) { \ 626 __t = `me (( buf ), ( sz ), ( mode )); \ 627 `DB_ASSERT ( v , __t == 0); \ 629 } 0) ) 633 #MVCC_BHSIZE ( m , sz d{} 0) ) 634 #MVCC_BHALIGN ( m , p d{} 0) ) 635 #MVCC_BHUNALIGN ( m , p d{} 0) ) 636 #MVCC_MPROTECT ( buf , size , mode d{} 0) ) 642 #MP_TRUNC_RECOVER 0x01 ) 644 #i defed ( __lulus ) 648 ~"dbc_auto/mp_ext.h " @../dbinc/mutex.h 9 #ide _DB_MUTEX_H_ 10 #_DB_MUTEX_H_ ) 12 #i defed ( __lulus ) 20 #MUTEX_SPINS_PER_PROCESSOR 50 ) 27 #MUTEX_INVALID 0 ) 32 #MTX_APPLICATION 1 ) 33 #MTX_DB_HANDLE 2 ) 34 #MTX_ENV_DBLIST 3 ) 35 #MTX_ENV_HANDLE 4 ) 36 #MTX_ENV_REGION 5 ) 37 #MTX_LOCK_REGION 6 ) 38 #MTX_LOGICAL_LOCK 7 ) 39 #MTX_LOG_FILENAME 8 ) 40 #MTX_LOG_FLUSH 9 ) 41 #MTX_LOG_HANDLE 10 ) 42 #MTX_LOG_REGION 11 ) 43 #MTX_MPOOLFILE_HANDLE 12 ) 44 #MTX_MPOOL_FH 13 ) 45 #MTX_MPOOL_FILE_BUCKET 14 ) 46 #MTX_MPOOL_HANDLE 15 ) 47 #MTX_MPOOL_HASH_BUCKET 16 ) 48 #MTX_MPOOL_IO 17 ) 49 #MTX_MPOOL_REGION 18 ) 50 #MTX_MUTEX_REGION 19 ) 51 #MTX_MUTEX_TEST 20 ) 52 #MTX_REP_CHKPT 21 ) 53 #MTX_REP_DATABASE 22 ) 54 #MTX_REP_EVENT 23 ) 55 #MTX_REP_REGION 24 ) 56 #MTX_SEQUENCE 25 ) 57 #MTX_TWISTER 26 ) 58 #MTX_TXN_ACTIVE 27 ) 59 #MTX_TXN_CHKPT 28 ) 60 #MTX_TXN_COMMIT 29 ) 61 #MTX_TXN_MVCC 30 ) 62 #MTX_TXN_REGION 31 ) 64 #MTX_MAX_ENTRY 31 ) 67 #i! defed ( HAVE_MUTEX_HYBRID ) && ( \ 68 defed ( HAVE_MUTEX_PTHREADS ) || \ 69 defed ( HAVE_MUTEX_SOLARIS_LWP ) || \ 70 defed ( HAVE_MUTEX_UI_THREADS )) 71 #__mux_ ( a , b , c `__db_had_mux_ , b, c) ) 72 #__mux_lock ( a , b `__db_had_mux_lock , b) ) 73 #__mux_uock ( a , b `__db_had_mux_uock , b) ) 74 #__mux_deroy ( a , b `__db_had_mux_deroy , b) ) 75 #i defed ( HAVE_MUTEX_WIN32 || defed( HAVE_MUTEX_WIN32_GCC ) 76 #__mux_ ( a , b , c `__db_w32_mux_ , b, c) ) 77 #__mux_lock ( a , b `__db_w32_mux_lock , b) ) 78 #__mux_uock ( a , b `__db_w32_mux_uock , b) ) 79 #__mux_deroy ( a , b `__db_w32_mux_deroy , b) ) 80 #i defed ( HAVE_MUTEX_FCNTL ) 81 #__mux_ ( a , b , c `__db_f_mux_ , b, c) ) 82 #__mux_lock ( a , b `__db_f_mux_lock , b) ) 83 #__mux_uock ( a , b `__db_f_mux_uock , b) ) 84 #__mux_deroy ( a , b `__db_f_mux_deroy , b) ) 86 #__mux_ ( a , b , c `__db_s_mux_ , b, c) ) 87 #__mux_lock ( a , b `__db_s_mux_lock , b) ) 88 #__mux_uock ( a , b `__db_s_mux_uock , b) ) 89 #__mux_deroy ( a , b `__db_s_mux_deroy , b) ) 100 #ifde HAVE_MUTEX_SUPPORT 101 #MUTEX_LOCK ( dbv , mux ) do { \ 102 i(( mux ! MUTEX_INVALID && \ 103 `__mux_lock ( dbv , mux ) != 0) \ 104 ( DB_RUNRECOVERY ); \ 105 } 0) ) 106 #MUTEX_UNLOCK ( dbv , mux ) do { \ 107 i(( mux ! MUTEX_INVALID && \ 108 `__mux_uock ( dbv , mux ) != 0) \ 109 ( DB_RUNRECOVERY ); \ 110 } 0) ) 118 #MUTEX_LOCK ( dbv , mux ) \ 119 ( mux (mux); ) 120 #MUTEX_UNLOCK ( dbv , mux ) \ 121 ( mux (mux); ) 127 #ifde HAVE_MUTEX_VXWORKS 128 ~"skLib.h " 133 #DB_BEGIN_SINGLE_THREAD do { \ 134 i( `DB_GLOBAL ( db_glob_ )) \ 135 () `mTake ( `DB_GLOBAL ( db_glob_lock ), WAIT_FOREVER ); \ 137 `skLock (); \ 138 i( `DB_GLOBAL ( db_glob_ )) { \ 139 `skUock (); \ 140 () `mTake ( `DB_GLOBAL ( db_glob_lock ), \ 141 WAIT_FOREVER ); \ 144 `DB_GLOBAL ( db_glob_lock ) = \ 145 `mBCe ( SEM_Q_FIFO , SEM_EMPTY ); \ 146 i( `DB_GLOBAL ( db_glob_lock ! NULL ) \ 147 `DB_GLOBAL ( db_glob_ ) = 1; \ 148 `skUock (); \ 150 } `DB_GLOBAL ( db_glob_ =0) ) 151 #DB_END_SINGLE_THREAD () `mGive ( `DB_GLOBAL ( db_glob_lock )) ) 157 #ide DB_BEGIN_SINGLE_THREAD 158 #DB_BEGIN_SINGLE_THREAD ) 160 #ide DB_END_SINGLE_THREAD 161 #DB_END_SINGLE_THREAD ) 164 #i defed ( __lulus ) 168 ~"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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 Ѧ), 0) ) 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 ) 82 #DB_MODE_400 ( S_IRUSR ) ) 83 #DB_MODE_600 ( S_IRUSR | S_IWUSR ) ) 84 #DB_MODE_660 ( S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP ) ) 85 #DB_MODE_666 ( S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH ) ) 86 #DB_MODE_700 ( S_IRUSR | S_IWUSR | S_IXUSR ) ) 92 #DB_IO_READ 1 ) 93 #DB_IO_WRITE 2 ) 105 #LAST_PANIC_CHECK_BEFORE_IO ( v ) \ 106 `PANIC_CHECK ( v ); ) 109 s__fh_t { 114 TAILQ_ENTRY ( __fh_t q ; 121 db_mux_t mtx_fh ; 123 f ; 125 #ifde HAVE_BREW 126 IFe * i ; 128 #i defed ( DB_WIN32 ) 129 HANDLE hd ; 130 HANDLE unc_hd ; 132 fd ; 134 * me ; 140 db_pgno_t pgno ; 141 u_t32_t pgsize ; 142 u_t32_t offt ; 144 #ifde HAVE_STATISTICS 145 u_t32_t ek_cou ; 146 u_t32_t ad_cou ; 147 u_t32_t wre_cou ; 150 #DB_FH_ENVLINK 0x01 ) 151 #DB_FH_NOSYNC 0x02 ) 152 #DB_FH_OPENED 0x04 ) 153 #DB_FH_UNLINK 0x08 ) 154 #DB_FH_REGION 0x10 ) 155 u_t8_t ags ; 159 #CTIME_BUFLEN 26 ) 165 #ifde HAVE_VXWORKS 166 #CHAR_STAR_CAST (*) ) 168 #CHAR_STAR_CAST ) 171 #i defed ( __lulus ) 175 ~"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 ( dbc , pgnddr , ags , add ) \ 165 `__qam_robe ( dbc , * pgnddr , \ 166 add , QAM_PROBE_GET , DB_PRIORITY_UNCHANGED , ags ) ) 168 #__qam_ut ( dbc , pgno , add , iܙy ) \ 169 `__qam_robe ( dbc , pgno , add , QAM_PROBE_PUT , iܙy , 0) ) 171 #__qam_dty ( dbc , pgno , g , iܙy ) \ 172 `__qam_robe ( dbc , pgno , 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" ) 119 #INVALID_REGION_ID 0 ) 120 #REGION_ID_ENV 1 ) 123 INVALID_REGION_TYPE =0, 124 REGION_TYPE_ENV , 125 REGION_TYPE_LOCK , 126 REGION_TYPE_LOG , 127 REGION_TYPE_MPOOL , 128 REGION_TYPE_MUTEX , 129 REGION_TYPE_TXN } tg_ty_t ; 131 #INVALID_REGION_SEGID -1 ) 141 #INVALID_ROFF 0 ) 144 s__db_g_v_f { 145 roff_t size ; 146 gid ; 147 } tREGENV_REF ; 150 s__db_g_v { 162 u_t32_t magic ; 163 u_t32_t nic ; 165 u_t32_t majv ; 166 u_t32_t mv ; 167 u_t32_t tchv ; 169 u_t32_t vid ; 171 u_t32_t sigtu ; 173 time_t timeamp ; 175 u_t32_t _ags ; 189 db_mux_t mtx_gv ; 190 u_t32_t ft ; 192 u_t32_t gi_t ; 193 roff_t gi_off ; 195 roff_t ch_off ; 197 roff_t thad_off ; 199 roff_t p_off ; 200 #DB_REGENV_REPLOCKED 0x0001 ) 201 u_t32_t ags ; 202 #DB_REGENV_TIMEOUT 30 ) 203 time_t _timeamp ; 204 time_t p_timeamp ; 206 utmax_t unud ; 211 } tREGENV ; 214 s__db_gi { 215 u_t32_t id ; 216 g_ty_t ty ; 218 roff_t size_ig ; 219 roff_t size ; 221 roff_t imy ; 223 gid ; 224 } tREGION ; 229 s__db_gfo_t { 230 ENV * v ; 231 g_ty_t ty ; 232 u_t32_t id ; 235 REGION * ; 237 * me ; 239 * addr_ig ; 240 * addr ; 241 * imy ; 243 size_t max_loc ; 244 size_t lod ; 246 #ifde DB_WIN32 247 HANDLE w_hd ; 250 #REGION_CREATE 0x01 ) 251 #REGION_CREATE_OK 0x02 ) 252 #REGION_JOIN_OK 0x04 ) 253 u_t32_t ags ; 260 #R_ADDR ( gf , offt ) \ 261 ( `F_ISSET (( gf )-> v , ENV_PRIVATE ) ? \ 262 (*)( offt ) : \ 263 (*)(( u_t8_t *)(( gf )-> addr + ( offt ))) ) 264 #R_OFFSET ( gf , p ) \ 265 ( `F_ISSET (( gf )-> v , ENV_PRIVATE ) ? \ 266 ( roff_t )( p ) : \ 267 ( roff_t )(( u_t8_t *)( p - (u_t8_*)( gf )-> addr )) ) 273 #PANIC_ISSET ( v ) \ 274 (( v ! NULL && (v)-> gfo != NULL && \ 275 (( REGENV *)( v )-> gfo -> imy )-> nic != 0 && \ 276 ! `F_ISSET (( v )-> dbv , DB_ENV_NOPANIC )) ) 278 #PANIC_CHECK ( v ) \ 279 i( `PANIC_ISSET ( v )) \ 280 ( `__v_nic_msg ( v )); ) 282 #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_LOGVERSION_47 14 ) 101 #DB_LOGVERSION_MIN DB_LOGVERSION_44 ) 102 #DB_REPVERSION_INVALID 0 ) 103 #DB_REPVERSION_44 3 ) 104 #DB_REPVERSION_45 3 ) 105 #DB_REPVERSION_46 4 ) 106 #DB_REPVERSION_47 5 ) 107 #DB_REPVERSION DB_REPVERSION_47 ) 108 #DB_REPVERSION_MIN DB_REPVERSION_44 ) 115 #RPRINT ( v , vbo_gy , x ) do { \ 116 i( `FLD_ISSET (( v )-> dbv -> vbo , \ 117 ( vbo_gy | DB_VERB_REPLICATION )) { \ 118 __p_t x ; \ 120 } 0) ) 121 #REP_PRINT_MESSAGE ( v , eid , , r , ) do { \ 122 i( `FLD_ISSET (( v )-> dbv -> vbo , \ 123 DB_VERB_REP_MSGS | DB_VERB_REPLICATION )) { \ 124 `__p_t_mesge ( v , eid , , r , ); \ 126 } 0) ) 139 #REP_EGENNAME "__db.p.eg" ) 140 #REP_GENNAME "__db.p.g" ) 156 #REP_INITNAME "__db.p." ) 157 #REP_INITVERSION_46 1 ) 158 #REP_INITVERSION_47 2 ) 159 #REP_INITVERSION 2 ) 166 REP_DB , 167 REP_PG 168 } tpdb_t ; 171 #REP_SYSTEM_LOCK ( v ) \ 172 `MUTEX_LOCK ( v , (v)-> p_hd -> gi -> mtx_gi ) ) 173 #REP_SYSTEM_UNLOCK ( v ) \ 174 `MUTEX_UNLOCK ( v , (v)-> p_hd -> gi -> mtx_gi ) ) 181 #REP_EVENT_LOCK ( v ) \ 182 `MUTEX_LOCK ( v , (v)-> p_hd -> gi -> mtx_evt ) ) 183 #REP_EVENT_UNLOCK ( v ) \ 184 `MUTEX_UNLOCK ( v , (v)-> p_hd -> gi -> mtx_evt ) ) 190 s__p { 191 db_mux_t mtx_gi ; 192 db_mux_t mtx_db ; 193 db_mux_t mtx_ckp ; 194 roff_t a_off ; 195 roff_t y_off ; 196 roff_t v2y_off ; 197 eid ; 198 ma_id ; 199 u_t32_t vsi ; 200 u_t32_t eg ; 201 u_t32_t g ; 202 u_t32_t cov_g ; 203 u_t32_t ases ; 204 u_t32_t nses ; 205 u_t32_t nves ; 206 u_t32_t iܙy ; 207 u_t32_t cfig_nses ; 209 db_timeout_t e_timeout ; 210 db_timeout_t fu_e_timeout ; 212 db_timeout_t chk_day ; 214 #REP_DEFAULT_THROTTLE (10 * MEGABYTE ) 215 u_t32_t gbys ; 216 u_t32_t bys ; 217 #DB_REP_REQUEST_GAP 40000 ) 218 #DB_REP_MAX_GAP 1280000 ) 219 db_timeec que_g ; 221 db_timeec max_g ; 224 u_t32_t y_th ; 225 u_t32_t msg_th ; 226 u_t32_t hd_t ; 227 u_t32_t _t ; 228 DB_LSN ckp_l ; 229 DB_LSN max__l ; 238 db_mux_t mtx_evt ; 244 u_t32_t wma_evt_g ; 251 u_t32_t nifd_eg ; 254 u_t32_t nfes ; 255 u_t32_t curfe ; 256 __p_fefo_gs * curfo ; 257 u_t8_t * ffo ; 258 u_t8_t * xtfo ; 259 u_t8_t * igfo ; 260 u_t32_t fޒ ; 261 u_t32_t igfޒ ; 262 u_t32_t fovsi ; 263 DB_LSN f_l ; 264 u_t32_t f_vs ; 265 DB_LSN ϡ_l ; 266 db_pgno_t ady_pg ; 267 db_pgno_t wag_pg ; 268 db_pgno_t max_wa_pg ; 269 u_t32_t ages ; 270 DB_MPOOLFILE * fe_mpf ; 271 DB * fe_dbp ; 272 DBC * queue_dbc ; 275 u_t32_t ses ; 276 wr ; 277 u_t32_t w_iܙy ; 278 u_t32_t w_g ; 279 DB_LSN w_l ; 280 u_t32_t w_tbak ; 281 u_t32_t ves ; 283 db_timeec ime ; 286 db_timeout_t a_timeout ; 287 db_timeec a_duti ; 288 u_t32_t ock_skew ; 289 u_t32_t ock_ba ; 290 db_timeec g_expe ; 293 DB_REP_STAT ; 294 #i defed ( HAVE_REPLICATION_THREADS && defed( HAVE_STATISTICS ) 295 DB_REPMGR_STAT m ; 299 #REP_C_2SITE_STRICT 0x00001 ) 300 #REP_C_BULK 0x00002 ) 301 #REP_C_DELAYCLIENT 0x00004 ) 302 #REP_C_LEASE 0x00008 ) 303 #REP_C_NOAUTOINIT 0x00010 ) 304 #REP_C_NOWAIT 0x00020 ) 305 u_t32_t cfig ; 307 #REP_F_CLIENT 0x00000001 ) 308 #REP_F_DELAY 0x00000002 ) 309 #REP_F_EGENUPDATE 0x00000004 ) 310 #REP_F_EPHASE0 0x00000008 ) 311 #REP_F_EPHASE1 0x00000010 ) 312 #REP_F_EPHASE2 0x00000020 ) 313 #REP_F_GROUP_ESTD 0x00000040 ) 314 #REP_F_INREPELECT 0x00000080 ) 315 #REP_F_MASTER 0x00000100 ) 316 #REP_F_MASTERELECT 0x00000200 ) 317 #REP_F_NEWFILE 0x00000400 ) 318 #REP_F_NOARCHIVE 0x00000800 ) 319 #REP_F_READY_API 0x00001000 ) 320 #REP_F_READY_APPLY 0x00002000 ) 321 #REP_F_READY_MSG 0x00004000 ) 322 #REP_F_READY_OP 0x00008000 ) 323 #REP_F_RECOVER_LOG 0x00010000 ) 324 #REP_F_RECOVER_PAGE 0x00020000 ) 325 #REP_F_RECOVER_UPDATE 0x00040000 ) 326 #REP_F_RECOVER_VERIFY 0x00080000 ) 327 #REP_F_SKIPPED_APPLY 0x00100000 ) 328 #REP_F_START_CALLED 0x00200000 ) 329 #REP_F_TALLY 0x00400000 ) 330 u_t32_t ags ; 331 } tREP ; 341 #REP_F_RECOVER_MASK \ 342 ( REP_F_READY_API | REP_F_READY_OP | \ 343 REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | \ 344 REP_F_RECOVER_UPDATE | REP_F_RECOVER_VERIFY ) ) 351 #IN_ELECTION ( R ) \ 352 `F_ISSET (( R ), REP_F_EPHASE1 | REP_F_EPHASE2 ) ) 353 #IN_ELECTION_TALLY ( R ) \ 354 `F_ISSET (( R ), REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY ) ) 355 #ELECTION_MAJORITY ( n ((/ 2+ 1) ) 357 #REP_F_INTERNAL_INIT_MASK ( REP_F_RECOVER_PAGE | REP_F_RECOVER_LOG ) ) 359 #IS_REP_MASTER ( v ) \ 360 ( `REP_ON ( v ) && \ 361 `F_ISSET ((( REP *)( v )-> p_hd -> gi ), REP_F_MASTER )) ) 363 #IS_REP_CLIENT ( v ) \ 364 ( `REP_ON ( v ) && \ 365 `F_ISSET ((( REP *)( v )-> p_hd -> gi ), REP_F_CLIENT )) ) 367 #IS_USING_LEASES ( v ) \ 368 ( `REP_ON ( v ) && \ 369 `FLD_ISSET ((( REP *)( v )-> p_hd -> gi )-> cfig , \ 370 REP_C_LEASE )) ) 372 #IS_CLIENT_PGRECOVER ( v ) \ 373 ( `IS_REP_CLIENT ( v ) && \ 374 `F_ISSET ((( REP *)( v )-> p_hd -> gi ), REP_F_RECOVER_PAGE )) ) 382 #IS_ENV_REPLICATED ( v ) \ 383 ( `REP_ON ( v && (v)-> p_hd -> gi -> ags !0) ) 389 #REP_GAP_FORCE 0x001 ) 390 #REP_GAP_REREQUEST 0x002 ) 396 #REPLICATION_WRAP ( v , func_ , checklock , t ) do { \ 397 __p_check , __t_t ; \ 398 __p_check = `IS_ENV_REPLICATED ( v ) ? 1 : 0; \ 399 ( t __p_check ? `__v_p_r ( v , checklock ) : 0; \ 400 i(( t ) == 0) { \ 401 ( t func_ ; \ 402 i( __p_check && ( __t_t = \ 403 `__v_db_p_ex ( v )!0 && ( t ) == 0) \ 404 ( t __t_t ; \ 406 } 0) ) 434 s__db_p { 439 eid ; 441 u_t32_t gbys ; 442 u_t32_t bys ; 444 db_timeec que_g ; 446 db_timeec max_g ; 449 u_t32_t ock_skew ; 450 u_t32_t ock_ba ; 451 u_t32_t cfig ; 452 u_t32_t cfig_nses ; 454 db_timeout_t e_timeout ; 455 db_timeout_t fu_e_timeout ; 457 db_timeout_t chk_day ; 459 u_t32_t my_iܙy ; 460 db_timeout_t a_timeout ; 464 (* nd ) 465 __P (( DB_ENV *, cڡ DBT *, const DBT *, 466 cڡ DB_LSN *, , u_t32_t )); 468 DB * p_db ; 470 REP * gi ; 471 u_t8_t * bulk ; 473 #DBREP_OPENFILES 0x0001 ) 474 u_t32_t ags ; 476 #ifde HAVE_REPLICATION_THREADS 480 hads ; 481 u_t32_t _picy ; 482 rm_picy ; 483 ; 484 db_timeout_t ack_timeout ; 485 db_timeout_t ei_y_wa ; 486 db_timeout_t ci_y_wa ; 487 db_timeout_t hbt_equcy ; 488 db_timeout_t hbt_mڙ_timeout ; 491 ma_eid ; 492 u_t32_t gi ; 495 REPMGR_RUNNABLE * , ** mesngs , * e_thad ; 496 mgr_mux_t mux ; 497 cd_v_t queue_nemy , check_ei ; 498 #ifde DB_WIN32 499 ACK_WAITERS_TABLE * was ; 500 HANDLE sigr ; 501 w_ed ; 503 had_cd_t ack_cdi ; 504 ad_pe , wre_pe ; 505 chg_sig_hdr ; 509 REPMGR_SITE * ses ; 510 u_t se_t ; 511 u_t se_max ; 513 CONNECTION_LIST cis ; 514 RETRY_Q_HEADER s ; 515 REPMGR_QUEUE * put_queue ; 517 sock_t li_fd ; 518 pmgr_Ïddr_t my_addr ; 519 db_timeec ϡ_b ; 521 fished ; 522 de_e ; 523 found_ma ; 524 keov_ndg ; 527 #ELECT_ELECTION 1 ) 528 #ELECT_FAILURE_ELECTION 2 ) 530 #ELECT_REPSTART 3 ) 531 #ELECT_SEEK_MASTER 4 ) 532 ݔi_eded ; 545 #DB_LOG_PERM_42_44 0x20 ) 546 #DB_LOG_RESEND_42_44 0x40 ) 547 #REPCTL_INIT_45 0x02 ) 549 #REPCTL_ELECTABLE 0x01 ) 550 #REPCTL_FLUSH 0x02 ) 551 #REPCTL_GROUP_ESTD 0x04 ) 552 #REPCTL_INIT 0x08 ) 553 #REPCTL_LEASE 0x10 ) 558 #REPCTL_LOG_END 0x80 ) 559 #REPCTL_PERM DB_LOG_PERM_42_44 ) 560 #REPCTL_RESEND DB_LOG_RESEND_42_44 ) 574 #REPINFO_DB_LITTLEENDIAN 0x0001 ) 575 #REPINFO_PG_LITTLEENDIAN 0x0002 ) 584 u_t32_t p_vsi ; 585 u_t32_t log_vsi ; 587 DB_LSN l ; 588 u_t32_t y ; 589 u_t32_t g ; 590 db_timeec msg_time ; 591 u_t32_t ags ; 592 } tREP_46_CONTROL ; 598 u_t32_t p_vsi ; 599 u_t32_t log_vsi ; 601 DB_LSN l ; 602 u_t32_t y ; 603 u_t32_t g ; 604 u_t32_t ags ; 605 } tREP_OLD_CONTROL ; 607 #LEASE_REFRESH_TRIES 3 ) 610 s__p_a_y { 611 eid ; 612 db_timeec t_time ; 613 db_timeec d_time ; 614 DB_LSN a_l ; 615 } tREP_LEASE_ENTRY ; 621 u_t32_t eg ; 622 nses ; 624 nves ; 625 iܙy ; 626 u_t32_t tbak ; 627 } tREP_OLD_VOTE_INFO ; 630 u_t32_t eg ; 631 eid ; 632 } tREP_VTALLY ; 641 #REP_THROTTLE_ONLY 0x0001 ) 645 DB_LSN l ; 646 DBT * da_dbt ; 647 u_t32_t gbys ; 648 u_t32_t bys ; 649 u_t32_t ty ; 650 } tREP_THROTTLE ; 660 u_t8_t * addr ; 661 u_t * of ; 662 u_t32_t n ; 663 u_t32_t ty ; 664 DB_LSN l ; 665 eid ; 666 #BULK_XMIT 0x001 ) 667 u_t32_t * ag ; 668 } tREP_BULK ; 677 u_t Ƣs ; 678 u_t oc ; 679 DB_LSN * y ; 680 } tLSN_COLLECTION ; 688 n ; 689 DB_LOCKREQ * qs ; 690 DBT * objs ; 691 } tlfo_t ; 693 #i defed ( __lulus ) 697 ~"dbc_auto/p_ext.h " @../dbinc/repmgr.h 9 #ide _DB_REPMGR_H_ 10 #_DB_REPMGR_H_ ) 12 ~"dbc_auto/pmgr_auto.h " 14 #i defed ( __lulus ) 31 #REPMGR_ACK 1 ) 32 #REPMGR_HANDSHAKE 2 ) 33 #REPMGR_HEARTBEAT 4 ) 34 #REPMGR_REP_MESSAGE 3 ) 37 #REPMGR_MAX_V1_MSG_TYPE 3 ) 38 #REPMGR_MAX_V2_MSG_TYPE 4 ) 39 #HEARTBEAT_MIN_VERSION 2 ) 42 #DB_REPMGR_VERSION 2 ) 43 #DB_REPMGR_MIN_VERSION 1 ) 45 #ifde DB_WIN32 46 SOCKET tsock_t ; 47 HANDLE tthad_id_t ; 48 HANDLE tmgr_mux_t ; 49 HANDLE tcd_v_t ; 50 WSABUF tdb_iovec_t ; 52 tsock_t ; 53 had_t tthad_id_t ; 54 had_mux_t tmgr_mux_t ; 55 had_cd_t tcd_v_t ; 56 iovec tdb_iovec_t ; 71 #OUT_QUEUE_LIMIT 10 ) 77 #ide MAXHOSTNAMELEN 78 #MAXHOSTNAMELEN 256 ) 82 #MAX_SITE_LOC_STRING ( MAXHOSTNAMELEN +20) ) 83 tSITE_STRING_BUFFER [ MAX_SITE_LOC_STRING +1]; 86 #DB_REPMGR_DEFAULT_ACK_TIMEOUT (1 * US_PER_SEC ) ) 87 #DB_REPMGR_DEFAULT_CONNECTION_RETRY (30 * US_PER_SEC ) ) 88 #DB_REPMGR_DEFAULT_ELECTION_RETRY (10 * US_PER_SEC ) ) 90 __pmgr_ci ; 91 __pmgr_ci tREPMGR_CONNECTION ; 92 __pmgr_queue ; __pmgr_queu tREPMGR_QUEUE ; 93 __queued_ouut ; __queued_ouu tQUEUED_OUTPUT ; 94 __pmgr_y ; __pmgr_y tREPMGR_RETRY ; 95 __pmgr_ruab ; __pmgr_ruab tREPMGR_RUNNABLE ; 96 __pmgr_se ; __pmgr_s tREPMGR_SITE ; 97 __ack_was_b ; 98 __ack_was_b tACK_WAITERS_TABLE ; 100 TAILQ_HEAD ( t__pmgr_cn_li , t__pmgr_ci tCONNECTION_LIST ; 101 STAILQ_HEAD ( t__pmgr_out_q_hd , t__queued_ouut tOUT_Q_HEADER ; 102 TAILQ_HEAD ( t__pmgr_y_q , t__pmgr_y tRETRY_Q_HEADER ; 105 s__pmgr_ruab { 106 ENV * v ; 107 thad_id_t thad_id ; 108 *(* run __P ((*)); 109 fished ; 128 s__pmgr_y { 129 TAILQ_ENTRY ( __pmgr_y s ; 130 u_t eid ; 131 db_timeec time ; 140 db_iovec_t ves [5]; 147 offt ; 156 cou ; 163 size_t tٮ_bys ; 164 } tREPMGR_IOVECS ; 167 size_t ngth ; 168 f_cou ; 169 u_t8_t da [1]; 170 } tREPMGR_FLAT ; 172 s__queued_ouut { 173 STAILQ_ENTRY ( __queued_ouut s ; 174 REPMGR_FLAT * msg ; 175 size_t offt ; 185 s__pmgr_mesge { 186 STAILQ_ENTRY ( __pmgr_mesge s ; 187 igg_eid ; 188 DBT cڌ , c ; 189 } tREPMGR_MESSAGE ; 192 SIZES_PHASE , 193 DATA_PHASE 194 } tpha_t ; 206 s__pmgr_ci { 207 TAILQ_ENTRY ( __pmgr_ci s ; 209 eid ; 210 sock_t fd ; 211 #ifde DB_WIN32 212 WSAEVENT evt_obje ; 215 u_t32_t vsi ; 218 #CONN_INCOMING 0x01 ) 219 u_t32_t ags ; 232 #CONN_CONGESTED 1 ) 233 #CONN_CONNECTED 2 ) 234 #CONN_CONNECTING 3 ) 235 #CONN_DEFUNCT 4 ) 236 #CONN_NEGOTIATE 5 ) 237 #CONN_PARAMETERS 6 ) 238 #CONN_READY 7 ) 239 e ; 252 OUT_Q_HEADER outbound_queue ; 253 out_queue_ngth ; 254 cd_v_t ded ; 255 blocks ; 268 pha_t adg_pha ; 269 REPMGR_IOVECS iovecs ; 271 u_t8_t msg_ty ; 272 u_t32_t cڌ_size_buf , c_size_buf ; 275 REPMGR_MESSAGE * p_mesge ; 277 DBT l , c ; 278 } pmgr_msg ; 279 } put ; 282 #IS_READY_STATE ( s ((s= CONN_READY || (s= CONN_CONGESTED ) ) 284 #ifde HAVE_GETADDRINFO 285 addrfo tADDRINFO ; 293 #unde AI_PASSIVE 294 #AI_PASSIVE 0x01 ) 295 #unde AI_CANONNAME 296 #AI_CANONNAME 0x02 ) 297 #unde AI_NUMERICHOST 298 #AI_NUMERICHOST 0x04 ) 300 s__addrfo { 301 ai_ags ; 302 ai_my ; 303 ai_sockty ; 304 ai_oc ; 305 size_t ai_add ; 306 * ai_nme ; 307 sockaddr * ai_addr ; 308 __addrfo * ai_xt ; 309 } tADDRINFO ; 313 * ho ; 314 u_t16_t pt ; 315 ADDRINFO * addss_li ; 316 ADDRINFO * cut ; 317 } tpmgr_Ïddr_t ; 328 s__pmgr_se { 329 pmgr_Ïddr_t t_addr ; 330 DB_LSN max_ack ; 331 u_t32_t iܙy ; 332 db_timeec ϡ_rcvd_timeamp ; 334 #SITE_IDLE 1 ) 335 #SITE_CONNECTED 2 ) 336 e ; 338 #SITE_HAS_PRIO 0x01 ) 339 u_t32_t ags ; 342 REPMGR_CONNECTION * cn ; 343 REPMGR_RETRY * y ; 344 } f ; 362 u_t32_t vsi ; 363 u_t16_t pt ; 364 u_t32_t iܙy ; 365 } tDB_REPMGR_V1_HANDSHAKE ; 374 #SITE_FROM_EID ( eid (& db_p -> ses [eid]) ) 375 #EID_FROM_SITE ( s (()((s- (& db_p -> ses [0]))) ) 376 #IS_VALID_EID ( e (>0) ) 377 #SELF_EID INT_MAX ) 379 #IS_PEER_POLICY ( p (= DB_REPMGR_ACKS_ALL_PEERS || \ 380 ( p = DB_REPMGR_ACKS_QUORUM || \ 381 ( p = DB_REPMGR_ACKS_ONE_PEER ) ) 383 #LOCK_MUTEX ( m ) do { \ 384 __t ; \ 385 i(( __t = `__pmgr_lock_mux (&( m ))) != 0) \ 386 ( __t ); \ 387 } 0) ) 389 #UNLOCK_MUTEX ( m ) do { \ 390 __t ; \ 391 i(( __t = `__pmgr_uock_mux (&( m ))) != 0) \ 392 ( __t ); \ 393 } 0) ) 396 #ifde DB_WIN32 397 #WOULDBLOCK WSAEWOULDBLOCK ) 398 #INPROGRESS WSAEWOULDBLOCK ) 400 #t_o `WSAGLaE () ) 401 tsockn_t ; 402 * tsockt_t ; 404 #iov_n n ) 405 #iov_ba buf ) 407 DWORD tthadsync_timeout_t ; 409 #REPMGR_SYNC_INITED ( db_p (db_p-> was ! NULL ) ) 412 #INVALID_SOCKET -1 ) 413 #SOCKET_ERROR -1 ) 414 #WOULDBLOCK EWOULDBLOCK ) 415 #INPROGRESS EINPROGRESS ) 417 #t_o o ) 418 * tsockt_t ; 420 #osock ( fd `o (fd) ) 422 timeec tthadsync_timeout_t ; 424 #REPMGR_SYNC_INITED ( db_p (db_p-> ad_pe >0) ) 428 #ADDR_LIST_CURRENT ( (a)-> cut ) ) 429 #ADDR_LIST_FIRST ( (a)-> cut = ()-> addss_li ) ) 430 #ADDR_LIST_NEXT ( (a)-> cut = ()->cut-> ai_xt ) ) 450 #DISABLE_CONNECTION ( cn ) do { \ 451 ( cn )-> e = CONN_DEFUNCT ; \ 452 ( cn )-> eid = -1; \ 453 } 0) ) 455 ~"dbc_auto/pmgr_ext.h " 457 #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 ) 27 #DBTCL_GETCLOCK 0 ) 28 #DBTCL_GETLIMIT 1 ) 29 #DBTCL_GETREQ 2 ) 59 sdbt_fo { 60 LIST_ENTRY ( dbt_fo s ; 61 T_Ip * i_ ; 62 * i_me ; 63 INFOTYPE i_ty ; 64 uf { 65 DB * dbp ; 66 DBC * db ; 67 DB_ENV * vp ; 68 DB_LOCK * lock ; 69 DB_LOGC * logc ; 70 DB_MPOOLFILE * mp ; 71 DB_TXN * tx ; 72 * yp ; 73 } un ; 74 uda { 75 yda ; 76 db_pgno_t pgno ; 77 u_t32_t lockid ; 78 } und ; 79 uda2 { 80 yda ; 81 gesz ; 82 DB_COMPACT * c_da ; 83 } und2 ; 84 DBT i_lockobj ; 85 FILE * i_r ; 86 * i_fx ; 89 T_Obj * i_com ; 90 T_Obj * i_dupcom ; 91 T_Obj * i_evt ; 92 T_Obj * i_hashoc ; 93 T_Obj * i_p_nd ; 94 T_Obj * i_cd_ ; 97 T_Obj * i_p_eid ; 99 dbt_fo * i_ ; 100 i_hid [ MAX_ID ]; 101 } tDBTCL_INFO ; 103 #i_yp un . yp ) 104 #i_g un . yp ) 105 #i_vp un . vp ) 106 #i_dbp un . dbp ) 107 #i_db un . db ) 108 #i_tx un . tx ) 109 #i_mp un . mp ) 110 #i_lock un . lock ) 111 #i_logc un . logc ) 113 #i_da und . yda ) 114 #i_pgno und . pgno ) 115 #i_lock und . lockid ) 116 #i_da2 und2 . yda ) 117 #i_pgsz und2 . gesz ) 118 #i_cda und2 . c_da ) 120 #i_vtxnid i_hid [0] ) 121 #i_vmpid i_hid [1] ) 122 #i_vlockid i_hid [2] ) 123 #i_vlogcid i_hid [3] ) 125 #i_mgid i_hid [0] ) 127 #i_dbdbcid i_hid [0] ) 129 __debug_ , __debug_t , __debug_ , __debug_ ; 131 sdbt_glob { 132 LIST_HEAD ( fohd , dbt_fo gg_fohd ; 133 } tDBTCL_GLOBAL ; 134 #__db_fohd __dbt_glob . g_fohd ) 136 DBTCL_GLOBAL __dbt_glob ; 143 #NewSgObj ( a , b ) \ 144 `T_NewSgObj ( a , () b ) ) 146 #NAME_TO_DB ( me ( DB *) `_NameToP (ame)) ) 147 #NAME_TO_DBC ( me ( DBC *) `_NameToP (ame)) ) 148 #NAME_TO_ENV ( me ( DB_ENV *) `_NameToP (ame)) ) 149 #NAME_TO_LOCK ( me ( DB_LOCK *) `_NameToP (ame)) ) 150 #NAME_TO_MP ( me ( DB_MPOOLFILE *) `_NameToP (ame)) ) 151 #NAME_TO_TXN ( me ( DB_TXN *) `_NameToP (ame)) ) 152 #NAME_TO_SEQUENCE ( me ( DB_SEQUENCE *) `_NameToP (ame)) ) 161 #MAKE_STAT_LIST ( s , v ) do { \ 162 su = `_SLiEmI ( , s , ( s ), ()( v )); \ 163 i( su ! TCL_OK ) \ 164 r ; \ 165 } 0) ) 167 #MAKE_WSTAT_LIST ( s , v ) do { \ 168 su = `_SLiEmWideI ( , s , ( s ), ( t64_t )( v )); \ 169 i( su ! TCL_OK ) \ 170 r ; \ 171 } 0) ) 181 #MAKE_STAT_LSN ( s , l ) do { \ 182 myobjc = 2; \ 183 myobjv [0] = `T_NewLgObj (()( l )-> fe ); \ 184 myobjv [1] = `T_NewLgObj (()( l )-> offt ); \ 185 lli = `T_NewLiObj ( myobjc , myobjv ); \ 186 myobjc = 2; \ 187 myobjv [0] = `T_NewSgObj (( s ), () ` (s)); \ 188 myobjv [1] = lli ; \ 189 thii = `T_NewLiObj ( myobjc , myobjv ); \ 190 su = `T_LiObjAdEmt ( , s , thii ); \ 191 i( su ! TCL_OK ) \ 192 r ; \ 193 } 0) ) 203 #MAKE_STAT_STRLIST ( s , s1 ) do { \ 204 su = `_SLiEm ( , s , ( s ), ` (s), \ 205 ( s1 ), ` (s1)); \ 206 i( su ! TCL_OK ) \ 207 r ; \ 208 } 0) ) 214 #FLAG_CHECK ( ag ) do { \ 215 i(( ag ) != 0) { \ 216 `T_SResu ( , \ 218 TCL_STATIC ); \ 219 su = TCL_ERROR ; \ 222 } 0) ) 229 #FLAG_CHECK2 ( ag , v ) do { \ 230 i((( ag & ~( v )) != 0) { \ 231 `T_SResu ( , \ 233 TCL_STATIC ); \ 234 su = TCL_ERROR ; \ 237 } 0) ) 245 #IS_HELP ( s ) \ 246 ( `rcmp ( `T_GSgFromObj ( s , NULL ), "-?"=0? TCL_OK : TCL_ERROR ) 248 #i defed ( __lulus ) 252 ~"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 ENV * v ; 111 REGINFO gfo ; 115 #TXN_SYSTEM_LOCK ( v ) \ 116 `MUTEX_LOCK ( v , (( DB_TXNREGION *) \ 117 ( v )-> tx_hd -> gfo . imy )-> mtx_gi ) ) 118 #TXN_SYSTEM_UNLOCK ( v ) \ 119 `MUTEX_UNLOCK ( v , (( DB_TXNREGION *) \ 120 ( v )-> 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 #ifde HAVE_REPLICATION_THREADS 12 #_WIN32_WINNT 0x0400 ) 15 #ide DB_WINCE 16 ~<sys/tys.h > 17 ~<sys/.h > 18 ~<sys/timeb.h > 20 ~<de.h > 21 ~<f.h > 22 ~<io.h > 23 ~<lims.h > 24 ~<memy.h > 25 ~<oss.h > 26 ~<sigl.h > 29 ~<o.h > 30 ~<dio.h > 31 ~<dlib.h > 32 ~<tch.h > 33 ~<time.h > 40 #ifde DB_TCL_SUPPORT 41 ~<t.h > 44 #WIN32_LEAN_AND_MEAN ) 45 ~<wdows.h > 46 ~<wsock2.h > 48 #ifde HAVE_GETADDRINFO 53 ~<ws2t.h > 54 ~<wpi.h > 61 #fsync _comm ) 63 #ide DB_WINCE 64 #gcwd ( buf , size `_gcwd (buf, size) ) 66 #gpid GCutProssId ) 67 #tf _tf ) 68 #rcmp _ricmp ) 69 #cmp _icmp ) 70 #vtf _vtf ) 72 #h_o `WSAGLaE () ) 81 #i defed ( __lulus ) 84 gt (, * const *, const *); 85 #i defed ( __lulus ) 96 #ide __STDC__ 97 #__STDC__ 1 ) 100 #ifde _UNICODE 101 #TO_TSTRING ( dbv , s , ts , t ) do { \ 102 __n = () ` ( s ) + 1; \ 103 ts = NULL ; \ 104 i(( t = `__os_mloc (( dbv ), \ 105 __n * ( _TCHAR ), &( ts ))) == 0 && \ 106 `MuiByToWideCh ( CP_UTF8 , 0, \ 107 ( s ), -1, ( ts ), __n ) == 0) \ 108 t = `__os_posix_r ( `__os_g_sy ()); \ 109 } 0) ) 111 #FROM_TSTRING ( dbv , ts , s , t ) { \ 112 __n = `WideChToMuiBy ( CP_UTF8 , 0, ts , -1, \ 113 NULL , 0, NULL, NULL); \ 114 s = NULL ; \ 115 i(( t = `__os_mloc (( dbv ), __n , &( s ))) == 0 && \ 116 `WideChToMuiBy ( CP_UTF8 , 0, \ 117 ( ts ), -1, ( s ), __n , NULL , NULL) == 0) \ 118 t = `__os_posix_r ( `__os_g_sy ()); \ 119 } 0) ) 121 #FREE_STRING ( dbv , s ) do { \ 122 i(( s ! NULL ) { \ 123 `__os_ (( dbv ), ( s )); \ 124 ( s NULL ; \ 126 } 0) ) 129 #TO_TSTRING ( dbv , s , ts , t ԑ0, (ts( _TCHAR *)(s) ) 130 #FROM_TSTRING ( dbv , ts , s , t ԑ0, (s(*)s) ) 131 #FREE_STRING ( dbv , ts ) ) 134 #ide INVALID_HANDLE_VALUE 135 #INVALID_HANDLE_VALUE (( HANDLE )-1) ) 138 #ide INVALID_FILE_ATTRIBUTES 139 #INVALID_FILE_ATTRIBUTES (( DWORD )-1) ) 142 #ide INVALID_SET_FILE_POINTER 143 #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_44 148 ) 157 s___bam_mge_44_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_44_gs ; 171 #DB___bam_mge 148 ) 172 s___bam_mge_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 db_pgno_t mgno ; 180 DB_LSN mƢ ; 181 DBT mhdr ; 182 DBT mda ; 183 t32_t mpg_cy ; 184 } t__bam_mge_gs ; 186 #DB___bam_pgno 149 ) 187 s___bam_pgno_gs { 188 u_t32_t mty ; 189 DB_TXN * mtx ; 190 DB_LSN mev_l ; 191 t32_t mfeid ; 192 db_pgno_t mpgno ; 193 DB_LSN ml ; 194 u_t32_t mdx ; 195 db_pgno_t mgno ; 196 db_pgno_t mgno ; 197 } 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_THREAD_INFO *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)); 10 __bam_cmp __P (( DB *, DB_THREAD_INFO *, 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 *, db_pgno_t , *, DBT *)); 14 __bam_pgout __P (( DB *, db_pgno_t , *, DBT *)); 15 __bam_msw __P (( ENV *, 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_THREAD_INFO *, DB_TXN *, cڡ *, db_pgno_t , u_t32_t )); 48 __bam_machk __P (( DB *, cڡ *, BTMETA *)); 49 __bam_ad_ro __P (( DB *, DB_THREAD_INFO *, DB_TXN *, db_pgno_t , u_t32_t )); 50 __bam_w_fe __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DB_FH *, const *)); 51 __bam_w_subdb __P (( DB *, DB *, DB_THREAD_INFO *, 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 (( ENV *, DBT *, DB_LSN *, db_cs , *)); 55 __bam_rl_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 56 __bam_adj_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 57 __bam_dju_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 58 __bam_cd_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 59 __bam__cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 60 __bam_ro_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 61 __bam_cudj_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 62 __bam_rcudj_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 63 __bam_lk_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 64 __bam_mge_44_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 65 __bam_mge_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 66 __bam_pgno_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 67 __bam_lk_43_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 68 __bam_aim __P (( DB *, DB_THREAD_INFO *, DB_TXN *)); 69 __bam_un __P (( DBC *, u_t32_t *)); 70 __m_ݒ __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, db_pgno_t , u_t32_t )); 71 __m_nd __P (( DBC *, DBT *, DBT *)); 72 __mc_d __P (( DBC *)); 73 __mc_g __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 74 __mc_put __P (( DBC *, DBT *, DBT *, u_t32_t , db_pgno_t *)); 75 __m_ __P (( DBC *, _o_g , *)); 76 __m_gno __P (( DBC *, cڡ DBT *, db_o_t *, )); 77 __m_wreback __P (( DB *)); 78 __bam_rch __P (( DBC *, db_o_t *, u_t32_t , , *)); 79 __bam_adju __P (( DBC *, t32_t )); 80 __bam_ecs __P (( DBC *, db_o_t *)); 81 db_o_t __bam_tٮ __P (( DB *, PAGE *)); 82 __bam_g_ro __P (( DBC *, db_pgno_t , , u_t32_t , *)); 83 __bam_ch __P (( DBC *, db_pgno_t , cڡ DBT *, u_t32_t , , db_o_t *, *)); 84 __bam_kl __P (( DBC *, u_t32_t )); 85 __bam_kgrow __P (( ENV *, BTREE_CURSOR *)); 86 __bam_l __P (( DBC *, *, db_pgno_t *)); 87 __bam_p __P (( DBC *, EPG *, u_t32_t , PAGE *, PAGE *, )); 88 __bam_cy __P (( DB *, PAGE *, PAGE *, u_t32_t , u_int32_t)); 89 __bam_ __P (( DBC *, *, u_t32_t )); 90 __bam__t __P (( DBC *, u_t32_t )); 91 __bam__back __P (( DBC *, PAGE *, *, *)); 92 __bam_t_curs __P (( DBC *)); 93 __bam_key_nge __P (( DBC *, DBT *, DB_KEY_RANGE *, u_t32_t )); 94 __bam_av __P (( DBC *, db_lockmode_t , db_pgno_t , (*)(DBC *, PAGE *, *, *), *)); 95 __bam_30_bma __P (( DB *, *, u_t8_t *)); 96 __bam_31_bma __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 97 __bam_31_lb __P (( DB *, *, u_t32_t , DB_FH *, PAGE *, *)); 98 __bam_vrfy_ma __P (( DB *, VRFY_DBINFO *, BTMETA *, db_pgno_t , u_t32_t )); 99 __m_vrfy_af __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 100 __bam_vrfy __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 101 __bam_vrfy_emd __P (( DB *, VRFY_DBINFO *, DB_THREAD_INFO *, PAGE *, db_pgno_t , u_t32_t , , , u_int32_t)); 102 __bam_vrfy_ruu __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t )); 103 __bam_vrfy_sub __P (( DB *, VRFY_DBINFO *, db_pgno_t , *, *, u_t32_t , u_int32_t *, u_int32_t *, u_int32_t *)); 104 __bam_lvage __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t , PAGE *, *, (*)(*, cڡ *), DBT *, u_int32_t)); 105 __bam_lvage_wkdupt __P (( DB *, VRFY_DBINFO *, PAGE *, DBT *, *, (*)(*, cڡ *), u_t32_t )); 106 __bam_ma2pgt __P (( DB *, VRFY_DBINFO *, BTMETA *, u_t32_t , DB *)); 107 __bam_l_ad __P (( ENV *, DB **, *, *, __bam_l_gs **)); 108 __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)); 109 __bam_rl_ad __P (( ENV *, DB **, *, *, __bam_rl_gs **)); 110 __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 *)); 111 __bam_adj_ad __P (( ENV *, DB **, *, *, __bam_adj_gs **)); 112 __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)); 113 __bam_dju_ad __P (( ENV *, DB **, *, *, __bam_dju_gs **)); 114 __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)); 115 __bam_cd_ad __P (( ENV *, DB **, *, *, __bam_cd_gs **)); 116 __bam_cd_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, u_int32_t)); 117 __bam__ad __P (( ENV *, DB **, *, *, __bam__gs **)); 118 __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)); 119 __bam_ro_ad __P (( ENV *, DB **, *, *, __bam_ro_gs **)); 120 __bam_ro_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , db_pgno_t, DB_LSN *)); 121 __bam_cudj_ad __P (( ENV *, DB **, *, *, __bam_cudj_gs **)); 122 __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)); 123 __bam_rcudj_ad __P (( ENV *, DB **, *, *, __bam_rcudj_gs **)); 124 __bam_rcudj_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , _o_g , db_pgno_t , db_o_t , u_int32_t)); 125 __bam_lk_43_ad __P (( ENV *, DB **, *, *, __bam_lk_43_gs **)); 126 __bam_lk_ad __P (( ENV *, DB **, *, *, __bam_lk_gs **)); 127 __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 *)); 128 __bam_mge_44_ad __P (( ENV *, DB **, *, *, __bam_mge_44_gs **)); 129 __bam_mge_ad __P (( ENV *, DB **, *, *, __bam_mge_gs **)); 130 __bam_mge_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *, db_pgno_t, DB_LSN *, cڡ DBT *, cڡ DBT *, t32_t )); 131 __bam_pgno_ad __P (( ENV *, DB **, *, *, __bam_pgno_gs **)); 132 __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)); 133 __bam__cov __P (( ENV *, DB_DISTAB *)); 134 __bam_l_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 135 __bam_rl_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 136 __bam_adj_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 137 __bam_dju_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 138 __bam_cd_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 139 __bam__t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 140 __bam_ro_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 141 __bam_cudj_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 142 __bam_rcudj_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 143 __bam_lk_43_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 144 __bam_lk_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 145 __bam_mge_44_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 146 __bam_mge_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 147 __bam_pgno_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 148 __bam__t __P (( ENV *, DB_DISTAB *)); 150 #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 #ide HAVE_GETCWD 16 * gcwd __P ((*, size_t )); 18 #ide HAVE_GETOPT 19 gt __P ((, * const *, const *)); 21 #ide HAVE_ISALPHA 22 iha __P (()); 24 #ide HAVE_ISDIGIT 25 isdig __P (()); 27 #ide HAVE_ISPRINT 28 irt __P (()); 30 #ide HAVE_ISSPACE 31 isa __P (()); 33 #ide HAVE_MEMCMP 34 memcmp __P ((cڡ *, cڡ *, size_t )); 36 #ide HAVE_MEMCPY 37 * memy __P ((*, cڡ *, size_t )); 39 #ide HAVE_MEMMOVE 40 * memmove __P ((*, cڡ *, size_t )); 42 #ide HAVE_PRINTF 43 tf __P ((const *, ...)); 45 #ide HAVE_PRINTF 46 rtf __P (( FILE *, const *, ...)); 48 #ide HAVE_PRINTF 49 vrtf __P (( FILE *, cڡ *, va_li )); 51 #ide HAVE_QSORT 52 qst __P ((*, size_t , size_t, (*)(const *, const *))); 54 #ide HAVE_RAISE 55 i `__P (()); 57 #ide HAVE_RAND 58 nd `__P (()); 59 d `__P (()); 61 #ide HAVE_SNPRINTF 62 tf `__P ((*, size_t , const *, ...)); 64 #ide HAVE_VSNPRINTF 65 vtf `__P ((*, size_t , cڡ *, va_li )); 67 #ide HAVE_STRCASECMP 68 rcmp `__P ((const *, const *)); 70 #ide HAVE_STRCASECMP 71 cmp `__P ((cڡ *, cڡ *, size_t )); 73 #ide HAVE_STRCAT 74 * rt `__P ((*, const *)); 76 #ide HAVE_STRCHR 77 * rchr `__P ((const *, )); 79 #ide HAVE_STRDUP 80 * rdup `__P ((const *)); 82 #ide HAVE_STRERROR 83 * `__P (()); 85 #ide HAVE_STRNCAT 86 * t `__P ((*, cڡ *, size_t )); 88 #ide HAVE_STRNCMP 89 cmp `__P ((cڡ *, cڡ *, size_t )); 91 #ide HAVE_STRRCHR 92 * chr `__P ((const *, )); 94 #ide HAVE_STRSEP 95 * rp `__P ((**, const *)); 97 #ide HAVE_STRTOL 98 `__P ((const *, **, )); 100 #ide HAVE_STRTOUL 101 oul `__P ((const *, **, )); 103 #ide HAVE_TIME 104 time_t time `__P ((time_t *)); 107 #i `defed ( __lulus ) 108 } } @../dbinc_auto/common_ext.h 2 #idef _comm_ext_h_ 3 #_comm_ext_h_ ) 5 #i defed ( __lulus ) 9 __yo_gi_ __P (( ENV *)); 10 __db_isbigdn __P (()); 11 __db_byd __P (( ENV *, )); 12 __db_fchk __P (( ENV *, cڡ *, u_t32_t , u_int32_t)); 13 __db_fcchk __P (( ENV *, cڡ *, u_t32_t , u_int32_t, u_int32_t)); 14 __db_ __P ((cڡ ENV *, const *, )); 15 __db_l __P ((cڡ ENV *, const *)); 16 __db_pgr __P (( DB *, db_pgno_t , )); 17 __db_pgfmt __P (( ENV *, db_pgno_t )); 18 #ifde DIAGNOSTIC 19 __db_as __P (( ENV *, const *, const *, )); 21 __v_nic_msg __P (( ENV *)); 22 __v_nic __P (( ENV *, )); 23 * __db_unknown_r __P (()); 24 __db_sy __P ((cڡ ENV *, , cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 25 __db_r __P ((cڡ ENV *, , cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 26 __db_rx __P ((cڡ 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 (( ENV *, DB_MSGBUF *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 30 __db_msgadd_ __P (( ENV *, DB_MSGBUF *, cڡ *, va_li )); 31 __db_msg __P ((cڡ ENV *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 2, 3))); 32 __db_unknown_ag __P (( ENV *, *, u_t32_t )); 33 __db_unknown_ty __P (( ENV *, *, DBTYPE )); 34 __db_unknown_th __P (( ENV *, *)); 35 __db_check_txn __P (( DB *, DB_TXN *, DB_LOCKER *, )); 36 __db_txn_ddlock_r __P (( ENV *, DB_TXN *)); 37 __db_n_txn_v __P (( ENV *)); 38 __db_c_toobig __P (( ENV *, u_t32_t , u_int32_t)); 39 __db_c_ __P (( ENV *, u_t32_t , u_int32_t)); 40 __dbc_loggg __P (( DBC *)); 41 __db_check_l __P (( ENV *, DB_LSN *, DB_LSN *)); 42 __db_rdly __P ((cڡ ENV *, const *)); 43 __db_a_r __P ((cڡ DB *)); 44 __db_ed __P ((cڡ 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 __dbt_urcy __P (( ENV *, DBT *)); 52 __dbt_ur __P (( ENV *, DBT *, DBT *, DBT *)); 53 __db_mkth __P (( ENV *, const *)); 54 u_t32_t __db_ݒags __P (()); 55 __db_ut_g __P ((*, *, *, ***)); 56 __db_ut_che __P (( DB *, u_t32_t *, *)); 57 __db_ut_logt __P ((const *, *)); 58 __db_ut_sig __P (()); 59 __db_ut_ued __P (()); 60 __db_ut_signd __P (()); 61 __db_zo_fl __P (( ENV *, DB_FH *)); 62 __db_zo_exnd __P (( ENV *, DB_FH *, db_pgno_t , db_pgno_t, u_t32_t )); 64 #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 (( ENV *, DB_CIPHER *)); 10 u_t __s_adj_size __P (( size_t )); 11 __s_o __P (( ENV *, *)); 12 __s_dey __P (( ENV *, *, *, u_t8_t *, size_t )); 13 __s_y __P (( ENV *, *, *, u_t8_t *, size_t )); 14 __s_ __P (( ENV *, DB_CIPHER *)); 15 __yo_v_o __P (( ENV *)); 16 __yo_v_esh __P (( ENV *)); 17 __yo_gtup __P (( ENV *, DB_CIPHER *, u_t32_t , )); 18 __yo_dey_ma __P (( ENV *, DB *, u_t8_t *, )); 19 __yo_t_sswd __P (( ENV *, ENV *)); 20 __db_ge_iv __P (( 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_ 60 ) 177 s___db_pg__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 DBT mhd ; 184 DBT mda ; 185 } t__db_pg__gs ; 187 #DB___db_pg_st 61 ) 188 s___db_pg_st_gs { 189 u_t32_t mty ; 190 DB_TXN * mtx ; 191 DB_LSN mev_l ; 192 t32_t mfeid ; 193 db_pgno_t mma ; 194 DB_LSN mma_l ; 195 db_pgno_t mϡ_ ; 196 DB_LSN mϡ_l ; 197 db_pgno_t mϡ_pgno ; 198 DBT mli ; 199 } 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_ad __P (( ENV *, DB **, *, *, __d_masub_gs **)); 10 __d_masub_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , cڡ DBT *, DB_LSN *)); 11 __d_mem__ad __P (( ENV *, *, __d_mem__gs **)); 12 __d_mem__log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , t32_t , cڡ DBT *, const DBT *, u_int32_t)); 13 __d_mem_me_ad __P (( ENV *, *, __d_mem_me_gs **)); 14 __d_mem_me_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *)); 15 __d_mem_move_ad __P (( ENV *, *, __d_mem_move_gs **)); 16 __d_mem_move_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *)); 17 __d__cov __P (( ENV *, DB_DISTAB *)); 18 __d_masub_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 19 __d_mem__t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 20 __d_mem_me_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 21 __d_mem_move_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 22 __d__t __P (( ENV *, DB_DISTAB *)); 23 __d_masub_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 24 __d_mem__cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 25 __d_mem_me_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 26 __d_mem_move_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 27 __db_ma_ݒ __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, u_t32_t , , DB **)); 28 __db_ma_upde __P (( DB *, DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, DBTYPE , mu_ai , cڡ *, u_t32_t )); 29 __v_tup __P (( DB *, DB_TXN *, cڡ *, cڡ *, u_t32_t , u_int32_t)); 30 __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 (( ENV *, cڡ *, DB_TXN *, **)); 35 #ifde CONFIG_TEST 36 __db_cy __P (( ENV *, DB *, const *)); 38 __db_curs_t __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBTYPE , db_pgno_t , , DB_LOCKER *, DBC **)); 39 __db_put __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBT *, DBT *, u_t32_t )); 40 __db_d __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBT *, u_t32_t )); 41 __db_sync __P (( DB *)); 42 __db_assoc __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DB *, (*)(DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 43 __db_cdy_o __P (( DB *, u_t32_t )); 44 __db_assoc_feign __P (( DB *, DB *, (*)(DB *, cڡ DBT *, DBT *, cڡ DBT *, *), u_t32_t )); 45 __db_addm_ad __P (( ENV *, DB **, *, *, __db_addm_gs **)); 46 __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 *)); 47 __db_big_ad __P (( ENV *, DB **, *, *, __db_big_gs **)); 48 __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 *)); 49 __db_ovf_ad __P (( ENV *, DB **, *, *, __db_ovf_gs **)); 50 __db_ovf_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , t32_t , DB_LSN *)); 51 __db_lk_42_ad __P (( ENV *, DB **, *, *, __db_lk_42_gs **)); 52 __db_debug_ad __P (( ENV *, *, __db_debug_gs **)); 53 __db_debug_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, t32_t , const DBT *, const DBT *, u_int32_t)); 54 __db_no_ad __P (( ENV *, DB **, *, *, __db_no_gs **)); 55 __db_no_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , DB_LSN *)); 56 __db_pg_loc_42_ad __P (( ENV *, DB **, *, *, __db_pg_loc_42_gs **)); 57 __db_pg_loc_ad __P (( ENV *, DB **, *, *, __db_pg_loc_gs **)); 58 __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)); 59 __db_pg__42_ad __P (( ENV *, DB **, *, *, __db_pg__42_gs **)); 60 __db_pg__ad __P (( ENV *, DB **, *, *, __db_pg__gs **)); 61 __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)); 62 __db_cksum_ad __P (( ENV *, *, __db_cksum_gs **)); 63 __db_cksum_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t )); 64 __db_pg_da_42_ad __P (( ENV *, DB **, *, *, __db_pg_da_42_gs **)); 65 __db_pg_da_ad __P (( ENV *, DB **, *, *, __db_pg_da_gs **)); 66 __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 *)); 67 __db_pg__ad __P (( ENV *, DB **, *, *, __db_pg__gs **)); 68 __db_pg__log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_pgno_t , cڡ DBT *, const DBT *)); 69 __db_pg_st_ad __P (( ENV *, DB **, *, *, __db_pg_st_gs **)); 70 __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 *)); 71 __db__cov __P (( ENV *, DB_DISTAB *)); 72 __db_addm_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 73 __db_big_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 74 __db_ovf_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 75 __db_lk_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 76 __db_debug_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 77 __db_no_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 78 __db_pg_loc_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 79 __db_pg_loc_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 80 __db_pg__42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 81 __db_pg__t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 82 __db_cksum_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 83 __db_pg_da_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 84 __db_pg_da_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 85 __db_pg__t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 86 __db_pg_st_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 87 __db__t __P (( ENV *, DB_DISTAB *)); 88 __dbc_o __P (( DBC *)); 89 __dbc_deroy __P (( DBC *)); 90 __dbc_cou __P (( DBC *, db_o_t *)); 91 __dbc_d __P (( DBC *, u_t32_t )); 92 __dbc_dup __P (( DBC *, DBC **, u_t32_t )); 93 __dbc_idup __P (( DBC *, DBC **, u_t32_t )); 94 __dbc_wd __P (( DBC *, db_pgno_t , DBC *, DBC **)); 95 __dbc_g __P (( DBC *, DBT *, DBT *, u_t32_t )); 96 __dbc_put __P (( DBC *, DBT *, DBT *, u_t32_t )); 97 __db_du __P (( DB *, u_t32_t )); 98 __dbc_cdy_g_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 99 __dbc_pg __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 100 __dbc_d_imy __P (( DBC *)); 101 __db_s_f __P (( DB *, DB **)); 102 __db_s_xt __P (( DB **, DB_TXN *)); 103 __db_s_de __P (( DB *, DB_TXN *)); 104 u_t32_t __db_size __P ((u_t32_t, DBT *)); 105 #ifde DIAGNOSTIC 106 __db_check_skeyt __P (( DB *, DBT *)); 108 __cdsgroup_beg __P (( DB_ENV *, DB_TXN **)); 109 __db_pg __P (( DB_ENV *, db_pgno_t , *, DBT *)); 110 __db_pgout __P (( DB_ENV *, db_pgno_t , *, DBT *)); 111 __db_dey_pg __P (( ENV *, DB *, PAGE *)); 112 __db_y_d_checksum_pg __P (( ENV *, DB *, PAGE *)); 113 __db_masw __P (( PAGE *)); 114 __db_bysw __P (( DB *, db_pgno_t , PAGE *, size_t , )); 115 __db_gesw __P (( DB *, *, size_t , DBT *, )); 116 __db_dich __P (( ENV *, DB_DISTAB *, DBT *, DB_LSN *, db_cs , DB_TXNHEAD *)); 117 __db_add_covy __P (( DB_ENV *, DB_DISTAB *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs ), u_t32_t )); 118 __db_add_covy_t __P (( ENV *, DB_DISTAB *, (*)(ENV *, DBT *, DB_LSN *, db_cs , *), u_t32_t )); 119 __db_txi_ __P (( ENV *, DB_THREAD_INFO *, u_t32_t , u_t32_t, DB_LSN *, DB_TXNHEAD **)); 120 __db_txi_add __P (( ENV *, DB_TXNHEAD *, u_t32_t , u_t32_t, DB_LSN *)); 121 __db_txi_move __P (( ENV *, DB_TXNHEAD *, u_t32_t )); 122 __db_txi_ckp __P (( ENV *, DB_TXNHEAD *, DB_LSN *)); 123 __db_txi_d __P (( ENV *, DB_TXNHEAD *)); 124 __db_txi_fd __P (( ENV *, DB_TXNHEAD *, u_t32_t , u_int32_t *)); 125 __db_txi_upde __P (( ENV *, DB_TXNHEAD *, u_t32_t , u_t32_t, DB_LSN *, u_int32_t *, )); 126 __db_txi_g __P (( ENV *, DB_TXNHEAD *, , u_t32_t , u_int32_t)); 127 __db_txi_ladd __P (( ENV *, DB_TXNHEAD *, DB_LSN *)); 128 __db_txi_lg __P (( ENV *, DB_TXNHEAD *, DB_LSN *, u_t32_t )); 129 __db_txi_l __P (( ENV *, DB_TXNHEAD *, DB_LSN *)); 130 __db_txi_t __P (( DB_TXNHEAD *)); 131 __db_dem __P (( DBC *, PAGE *, u_t32_t , u_int32_t)); 132 __db_pem __P (( DBC *, PAGE *, u_t32_t , u_t32_t, DBT *, DBT *)); 133 __db_assoc_ __P (( DB *, DB_TXN *, DB *, (*)(DB *, cڡ DBT *, cڡ DBT *, DBT *), u_t32_t )); 134 __db_o_ __P (( DB *, u_t32_t )); 135 __db_curs_ __P (( DB *, DB_TXN *, DBC **, u_t32_t )); 136 __db_curs __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBC **, u_t32_t )); 137 __db_d_ __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 138 __db_exis __P (( DB *, DB_TXN *, DBT *, u_t32_t )); 139 __db_fd_ __P (( DB *, *)); 140 __db_g_ __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 141 __db_g __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBT *, DBT *, u_t32_t )); 142 __db_jo_ __P (( DB *, DBC **, DBC **, u_t32_t )); 143 __db_key_nge_ __P (( DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_t32_t )); 144 __db_ݒ_ __P (( DB *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , )); 145 __db_pg_ __P (( DB *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 146 __db_pg __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBT *, DBT *, DBT *, u_t32_t )); 147 __db_put_ __P (( DB *, DB_TXN *, DBT *, DBT *, u_t32_t )); 148 __db_com_ __P (( DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)); 149 __db_assoc_feign_ __P (( DB *, DB *, (*)(DB *, cڡ DBT *, DBT *, cڡ DBT *, *), u_t32_t )); 150 __db_sync_ __P (( DB *, u_t32_t )); 151 __dbc_o_ __P (( DBC *)); 152 __dbc_cou_ __P (( DBC *, db_o_t *, u_t32_t )); 153 __dbc_d_ __P (( DBC *, u_t32_t )); 154 __dbc_dup_ __P (( DBC *, DBC **, u_t32_t )); 155 __dbc_g_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 156 __db_cdy_o_ __P (( DB *, u_t32_t )); 157 __dbc_pg_ __P (( DBC *, DBT *, DBT *, DBT *, u_t32_t )); 158 __dbc_put_ __P (( DBC *, DBT *, DBT *, u_t32_t )); 159 __db_txn_auto_ __P (( ENV *, DB_THREAD_INFO *, DB_TXN **)); 160 __db_txn_auto_sve __P (( ENV *, DB_TXN *, , )); 161 __db_jo __P (( DB *, DBC **, DBC **, u_t32_t )); 162 __db_jo_o __P (( DBC *)); 163 __db_cdy_cru __P (( DB *)); 164 __db_w __P (( DBC *, u_t32_t , PAGE **)); 165 __db_ __P (( DBC *, PAGE *)); 166 #ifde HAVE_FTRUNCATE 167 __db_li_pos __P (( db_pgno_t , db_pgno_*, u_t32_t , u_int32_t *)); 169 #ifde HAVE_FTRUNCATE 170 __db_pg_un __P (( DBC *, DB_TXN *, db_pgli_t * li , DB_COMPACT *, u_t32_t *, db_pgno_t *, DB_LSN *, )); 172 #ifde HAVE_FTRUNCATE 173 __db__un __P (( DB *, DB_THREAD_INFO *, DB_TXN *, u_t32_t , DB_COMPACT *, db_pgli_t **, u_t32_*, db_pgno_t *)); 175 __db_rt __P (( DBC *)); 176 __db_lg __P (( DBC *, , db_pgno_t , db_lockmode_t , u_t32_t , DB_LOCK *)); 177 __db_ut __P (( DBC *, DB_LOCK *)); 178 __db__ __P (( DB **, ENV *, u_t32_t )); 179 __dbh_am_chk __P (( DB *, u_t32_t )); 180 __db_g_ags __P (( DB *, u_t32_t *)); 181 __db_t_ags __P (( DB *, u_t32_t )); 182 __db_g_ld __P (( DB *, *)); 183 __db_t_ld __P (( DB *, )); 184 __db_t_gesize __P (( DB *, u_t32_t )); 185 __db_ݒ __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, cڡ *, DBTYPE , u_t32_t , , db_pgno_t )); 186 __db_g_ݒ_ags __P (( DB *, u_t32_t *)); 187 __db_w_fe __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DB_FH *, const *)); 188 __db__subdb __P (( DB *, DB *, cڡ *, DB_THREAD_INFO *, DB_TXN *)); 189 __db_chk_ma __P (( ENV *, DB *, DBMETA *, u_t32_t )); 190 __db_ma_tup __P (( ENV *, DB *, cڡ *, DBMETA *, u_t32_t , u_int32_t)); 191 __db_goff __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DBT *, u_t32_t , db_pgno_t , **, u_int32_t *)); 192 __db_poff __P (( DBC *, cڡ DBT *, db_pgno_t *)); 193 __db_ovf __P (( DBC *, db_pgno_t )); 194 __db_doff __P (( DBC *, db_pgno_t )); 195 __db_moff __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ DBT *, db_pgno_t , u_t32_t , (*)(DB *, const DBT *, const DBT *), *)); 196 __db_coff __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ DBT *, const DBT *, (*)(DB *, const DBT *, const DBT *), *)); 197 __db_vrfy_ovow __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 198 __db_vrfy_ov_ruu __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t , u_int32_t)); 199 __db__goff __P (( DB *, VRFY_DBINFO *, db_pgno_t , DBT *, *, u_t32_t )); 200 __db_ldme __P (()); 201 __db_dume __P (( DB *, DB_TXN *, *, *)); 202 cڡ FN * __db_g_ags_ __P (()); 203 __db_age __P (( DB *, DB_TXN *, db_pgno_t )); 204 __db_ge __P (( DB *, PAGE *, u_t32_t )); 205 __db_bys __P (( ENV *, DB_MSGBUF *, u_t8_t *, u_t32_t )); 206 __db_ags __P (( ENV *, DB_MSGBUF *, u_t32_t , cڡ FN *, const *, const *)); 207 cڡ * __db_lockmode_to_rg __P (( db_lockmode_t )); 208 __db_dume __P (( DB *, DB_TXN *, *, *)); 209 cڡ FN * __db_g_ags_ __P (()); 210 __db_dump_ __P (( DB *, const *, (*)(*, const *), *, , )); 211 __db_dump __P (( DB *, const *, (*)(*, const *), *, , )); 212 __db_dbt __P (( DBT *, , const *, *, (*)(*, const *), )); 213 __db_hd __P (( DB *, cڡ *, , , *, (*)(*, cڡ *), VRFY_DBINFO *, db_pgno_t )); 214 __db_foٔ __P ((*, (*)(*, const *))); 215 __db__back __P ((*, const *)); 216 cڡ * __db_dbty_to_rg __P (( DBTYPE )); 217 __db_addm_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 218 __db_big_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 219 __db_ovf_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 220 __db_debug_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 221 __db_no_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 222 __db_pg_loc_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 223 __db_pg__cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 224 __db_pg_da_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 225 __db_cksum_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 226 __db_pg__cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 227 __db_pg_st_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 228 __db_pg_loc_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 229 __db_pg__42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 230 __db_pg_da_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 231 __db_lk_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 232 __db_av_big __P (( DBC *, db_pgno_t , (*)(DBC *, PAGE *, *, *), *)); 233 __db_aim_back __P (( DBC *, PAGE *, *, *)); 234 __db_un_back __P (( DBC *, PAGE *, *, *)); 235 __v_dbmove_ __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 236 __db_move_ __P (( DB *, cڡ *, cڡ *, u_t32_t )); 237 __db_move __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 238 __db_move_t __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, cڡ *, u_t32_t )); 239 __db_mem_move __P (( DB *, DB_TXN *, const *)); 240 __v_dbme_ __P (( DB_ENV *, DB_TXN *, cڡ *, cڡ *, cڡ *, u_t32_t )); 241 __db_me_ __P (( DB *, cڡ *, cڡ *, cڡ *, u_t32_t )); 242 __db_me_t __P (( DB *, DB_THREAD_INFO *, DB_TXN *, const *, const *, const *)); 243 __db_t __P (( DB *, DB_THREAD_INFO *, DB_TXN *, PAGE *, u_t32_t , DBT *, **, u_int32_t *)); 244 __db_tcy __P (( ENV *, DBT *, *, u_t32_t , **, u_int32_t *)); 245 __v_feid_t_ __P (( DB_ENV *, cڡ *, u_t32_t )); 246 __v_l_t_ __P (( DB_ENV *, cڡ *, u_t32_t )); 247 __db__ __P (( DB *, DB_TXN *, *, u_t32_t )); 248 __db__t_ __P (( DB *, u_t32_t )); 249 __db__t __P (( DB *, DB_THREAD_INFO *, u_t32_t )); 250 __db_un_ __P (( DB *, DB_TXN *, u_t32_t *, u_int32_t)); 251 __db_un __P (( DB *, DB_THREAD_INFO *, DB_TXN *, u_t32_t *)); 252 __db_upgde_ __P (( DB *, cڡ *, u_t32_t )); 253 __db_upgde __P (( DB *, cڡ *, u_t32_t )); 254 __db_ϡpgno __P (( DB *, *, DB_FH *, db_pgno_t *)); 255 __db_31_offdup __P (( DB *, *, DB_FH *, , db_pgno_t *)); 256 __db_vify_ __P (( DB *, cڡ *, cڡ *, FILE *, u_t32_t )); 257 __db_vify_ __P (( DB *, cڡ *, cڡ *, *, (*)(*, cڡ *), u_t32_t )); 258 __db_vrfy_comm __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 259 __db_vrfy_dage __P (( DB *, VRFY_DBINFO *, PAGE *, db_pgno_t , u_t32_t )); 260 __db_vrfy_ma __P (( DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t , u_t32_t )); 261 __db_vrfy_ru_edback __P (( DB *, VRFY_DBINFO *)); 262 __db_lvage __P (( DB *, VRFY_DBINFO *, db_pgno_t , PAGE *, *, (*)(*, cڡ *), u_t32_t )); 263 __db_vrfy_pem __P (( DB *, PAGE *, db_pgno_t , u_t32_t , , u_int32_t, u_int32_t *, u_int32_t *)); 264 __db_vrfy_duy __P (( DB *, VRFY_DBINFO *, db_pgno_t , u_t32_t )); 265 __db_lvage_due __P (( DB *, VRFY_DBINFO *, db_pgno_t , DBT *, *, (*)(*, cڡ *), u_t32_t )); 266 __db_vrfy_dbfo_ __P (( ENV *, DB_THREAD_INFO *, u_t32_t , VRFY_DBINFO **)); 267 __db_vrfy_dbfo_deroy __P (( ENV *, VRFY_DBINFO *)); 268 __db_vrfy_ggefo __P (( VRFY_DBINFO *, db_pgno_t , VRFY_PAGEINFO **)); 269 __db_vrfy_puagefo __P (( ENV *, VRFY_DBINFO *, VRFY_PAGEINFO *)); 270 __db_vrfy_pgt __P (( ENV *, DB_THREAD_INFO *, u_t32_t , DB **)); 271 __db_vrfy_pgt_g __P (( DB *, DB_THREAD_INFO *, db_pgno_t , *)); 272 __db_vrfy_pgt_c __P (( DB *, DB_THREAD_INFO *, db_pgno_t )); 273 __db_vrfy_pgt_xt __P (( DBC *, db_pgno_t *)); 274 __db_vrfy_chdcurs __P (( VRFY_DBINFO *, DBC **)); 275 __db_vrfy_chdput __P (( VRFY_DBINFO *, db_pgno_t , VRFY_CHILDINFO *)); 276 __db_vrfy_cct __P (( DBC *, db_pgno_t , VRFY_CHILDINFO **)); 277 __db_vrfy_cext __P (( DBC *, VRFY_CHILDINFO **)); 278 __db_vrfy_cco __P (( DBC *)); 279 __db_lvage_ __P (( VRFY_DBINFO *)); 280 __db_lvage_deroy __P (( VRFY_DBINFO *)); 281 __db_lvage_gxt __P (( VRFY_DBINFO *, DBC **, db_pgno_t *, u_t32_t *, )); 282 __db_lvage_isde __P (( VRFY_DBINFO *, db_pgno_t )); 283 __db_lvage_mkde __P (( VRFY_DBINFO *, db_pgno_t )); 284 __db_lvage_mkeded __P (( VRFY_DBINFO *, db_pgno_t , u_t32_t )); 285 __db_vrfy_dbt __P (( DBT *, , cڡ *, *, (*)(*, cڡ *), , VRFY_DBINFO *)); 287 #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ڡ *, cڡ *, u_t32_t )); 10 __dbg_down __P (( DB *)); 11 __dbg_down_t __P (( 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 (( ENV *, FNAME *, , , t32_t )); 17 __dbg_o_id __P (( DB *, DB_TXN *, u_t32_t )); 18 __dbg_o_id_t __P (( ENV *, FNAME *, u_t32_t , )); 19 __dbg_chk __P (( ENV *)); 20 __dbg_log_o __P (( ENV *, FNAME *, DB_TXN *, u_t32_t )); 21 __dbg_log_id __P (( DB *, DB_TXN *, t32_t , )); 22 __dbg_gi_ad __P (( ENV *, *, __dbg_gi_gs **)); 23 __dbg_gi_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, cڡ DBT *, cڡ DBT *, t32_t , DBTYPE , db_pgno_t , u_int32_t)); 24 __dbg__cov __P (( ENV *, DB_DISTAB *)); 25 __dbg_gi_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 26 __dbg__t __P (( ENV *, DB_DISTAB *)); 27 __dbg_gi_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 28 __dbg__t __P (( ENV *, u_t32_t )); 29 __dbg_t_ame __P (( ENV *, FNAME *)); 30 __dbg_add_dby __P (( ENV *, DB_LOG *, DB *, t32_t )); 31 __dbg_m_dby __P (( DB_LOG *, t32_t )); 32 __dbg_log_fes __P (( ENV *, u_t32_t )); 33 __dbg_o_fes __P (( ENV *, )); 34 __dbg_o_fe __P (( ENV *, FNAME *)); 35 __dbg_mk_ed __P (( ENV *)); 36 __dbg_vide_fes __P (( ENV *, )); 37 __dbg_id_to_db __P (( 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 (( ENV *, u_t8_t *, **, **)); 41 __dbg_do_ݒ __P (( 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 (( ENV *)); 16 __cfig_l __P ((*, *[])); 17 __v_chk_ __P (( DB_ENV *, u_t32_t )); 18 __v_thad_ __P (( ENV *, )); 19 __v_thad_deroy __P (( ENV *)); 20 __v_t_e __P (( ENV *, DB_THREAD_INFO **, DB_THREAD_STATE )); 21 * __v_thad_id_rg __P (( DB_ENV *, pid_t , db_thadid_t , *)); 22 __db_fe_exnd __P (( ENV *, DB_FH *, size_t )); 23 __db_fe_mui_wre __P (( ENV *, const *)); 24 __db_fe_wre __P (( ENV *, DB_FH *, u_t32_t , u_int32_t, )); 25 __db_v_deroy __P (( DB_ENV *)); 26 __v_t_loc __P (( DB_ENV *, *(*)( size_t ), *(*)(*, size_t), (*)(*))); 27 __v_g_y_ags __P (( DB_ENV *, u_t32_t *)); 28 __v_t_y __P (( DB_ENV *, cڡ *, u_t32_t )); 29 __v_m_ags __P ((cڡ FLAG_MAP *, u_t , u_t32_t *, u_int32_t *)); 30 __v_tch_ags __P ((cڡ FLAG_MAP *, u_t , u_t32_t *, u_int32_t *)); 31 __v_t_ags __P (( DB_ENV *, u_t32_t , )); 32 __v_t_da_d __P (( DB_ENV *, const *)); 33 __v_t_rmed_d_mode __P (( DB_ENV *, const *)); 34 __v_g_r __P (( DB_ENV *, (**)(const DB_ENV *, const *, const *))); 35 __v_t_r __P (( DB_ENV *, (*)(const DB_ENV *, const *, const *))); 36 __v_g_rfe __P (( DB_ENV *, FILE **)); 37 __v_t_rfe __P (( DB_ENV *, FILE *)); 38 __v_g_fx __P (( DB_ENV *, const **)); 39 __v_t_fx __P (( DB_ENV *, const *)); 40 __v_t_msg __P (( DB_ENV *, (*)(const DB_ENV *, const *))); 41 __v_g_msgfe __P (( DB_ENV *, FILE **)); 42 __v_t_msgfe __P (( DB_ENV *, FILE *)); 43 __v_t_nic __P (( DB_ENV *, (*)(DB_ENV *, ))); 44 __v_t_shm_key __P (( DB_ENV *, )); 45 __v_t_tmp_d __P (( DB_ENV *, const *)); 46 __v_t_vbo __P (( DB_ENV *, u_t32_t , )); 47 __db_mi_v __P (( ENV *, const *)); 48 __db_mi_ݒ __P (( ENV *, const *, )); 49 __v_n_cfig __P (( ENV *, *, u_t32_t )); 50 __db_ame __P (( ENV *, APPNAME , cڡ *, u_t32_t , DB_FH **, **)); 51 __v_ݒ_ __P (( DB_ENV *, cڡ *, u_t32_t , )); 52 __v_ݒ __P (( DB_ENV *, cڡ *, u_t32_t , )); 53 __v_move __P (( DB_ENV *, cڡ *, u_t32_t )); 54 __v_cfig __P (( DB_ENV *, cڡ *, u_t32_t , )); 55 __v_o_ __P (( DB_ENV *, u_t32_t )); 56 __v_o __P (( DB_ENV *, )); 57 __v_g_ݒ_ags __P (( DB_ENV *, u_t32_t *)); 58 __db_ec __P (( ENV *, DB_THREAD_INFO *, DB_LSN *, DB_LSN *, , u_t32_t )); 59 __log_backup __P (( ENV *, DB_LOGC *, DB_LSN *, DB_LSN *, u_t32_t )); 60 __v_ݒfes __P (( ENV *, DB_LOGC *, *, DBT *, DB_LSN *, DB_LSN *, , )); 61 __v__c __P (( ENV *, u_t32_t )); 62 __v_ch __P (( ENV *, u_t32_t *, , )); 63 __v_tu_ __P (( ENV *)); 64 __v_tu_off __P (( ENV *, u_t32_t )); 65 __v_nic_t __P (( ENV *, )); 66 __v_f_emt __P (( ENV *)); 67 __v_f_deemt __P (( ENV *)); 68 __v_dach __P (( ENV *, )); 69 __v_move_v __P (( ENV *)); 70 __v_gi_ch __P (( ENV *, REGINFO *, size_t )); 71 __v_gi_dach __P (( ENV *, REGINFO *, )); 72 __vg_gi __P (( ENV *, *)); 73 __vg_uegi __P (( ENV *, )); 74 __vg_xuock __P (( ENV *)); 75 u_t32_t __v_ru_sig __P (()); 76 __v__t_ __P (( DB_ENV *, u_t32_t )); 77 __db_t_fh __P (( ENV *, cڡ *, DB_FH *, u_t32_t )); 78 __db_t_feid __P (( ENV *, u_t8_t *, const *)); 79 __db_dl __P (( ENV *, cڡ *, u_lg )); 80 __db_dl_p __P (( ENV *, cڡ *, u_lg , , const *)); 81 __db_dlbys __P (( ENV *, cڡ *, u_lg , u_long, u_long)); 82 __db_t_gfo __P (( ENV *, REGINFO *, cڡ *, u_t32_t )); 83 __db__n_but __P (( ENV *)); 84 #ide HAVE_REPLICATION_THREADS 85 __pmgr_o __P (( ENV *)); 87 #ide HAVE_REPLICATION_THREADS 88 __pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 90 #ide HAVE_REPLICATION_THREADS 91 __pmgr_g_ack_picy __P (( DB_ENV *, *)); 93 #ide HAVE_REPLICATION_THREADS 94 __pmgr_t_ack_picy __P (( DB_ENV *, )); 96 #ide HAVE_REPLICATION_THREADS 97 __pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 99 #ide HAVE_REPLICATION_THREADS 100 __pmgr_se_li __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 102 #ide HAVE_REPLICATION_THREADS 103 __pmgr_t __P (( DB_ENV *, , u_t32_t )); 105 #ide HAVE_REPLICATION_THREADS 106 __pmgr__ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 108 #ide HAVE_REPLICATION_THREADS 109 __pmgr__t_ __P (( DB_ENV *, u_t32_t )); 111 #ide HAVE_REPLICATION_THREADS 112 __pmgr_hd_evt __P (( ENV *, u_t32_t , *)); 115 #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__ad __P (( ENV *, *, __f__gs **)); 10 __f__log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, u_int32_t, u_int32_t)); 11 __f_move_ad __P (( ENV *, *, __f_move_gs **)); 12 __f_move_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, u_int32_t)); 13 __f_wre_ad __P (( ENV *, *, __f_wre_gs **)); 14 __f_wre_log __P (( 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)); 15 __f_me_ad __P (( ENV *, *, __f_me_gs **)); 16 __f_me_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t)); 17 __f_me_noundo_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t)); 18 __f_me_t_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t, u_int32_t)); 19 __f_fe_move_ad __P (( ENV *, *, __f_fe_move_gs **)); 20 __f_fe_move_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , cڡ DBT *, const DBT *, const DBT *, u_int32_t, u_int32_t)); 21 __f__cov __P (( ENV *, DB_DISTAB *)); 22 __f__t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 23 __f_move_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 24 __f_wre_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 25 __f_me_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 26 __f_fe_move_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 27 __f__t __P (( ENV *, DB_DISTAB *)); 28 __f_ __P (( ENV *, DB_TXN *, DB_FH **, cڡ *, APPNAME , , u_t32_t )); 29 __f_move __P (( ENV *, DB_TXN *, u_t8_t *, cڡ *, APPNAME , u_t32_t )); 30 __f_wre __P (( 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 (( ENV *, DB_TXN *, cڡ *, cڡ *, u_t8_t *, APPNAME , , u_t32_t )); 32 __f__cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 33 __f_move_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 34 __f_wre_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 35 __f_me_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 36 __f_me_noundo_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 37 __f_fe_move_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 38 __f_lock_hd __P (( ENV *, DB *, DB_LOCKER *, db_lockmode_t , DB_LOCK *, u_t32_t )); 39 __f_fe_tup __P (( DB *, DB_THREAD_INFO * , DB_TXN *, cڡ *, , u_t32_t , u_int32_t *)); 40 __f_subdb_tup __P (( DB *, DB_THREAD_INFO *, DB_TXN *, cڡ *, cڡ *, , u_t32_t )); 41 __f_move_tup __P (( DB *, DB_TXN *, cڡ *, u_t32_t )); 42 __f_ad_ma __P (( 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 (( 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_ad __P (( ENV *, DB **, *, *, __ham_sd_gs **)); 18 __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 *)); 19 __ham_wge_ad __P (( ENV *, DB **, *, *, __ham_wge_gs **)); 20 __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 *)); 21 __ham_lda_ad __P (( ENV *, DB **, *, *, __ham_lda_gs **)); 22 __ham_lda_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, db_pgno_t , cڡ DBT *, DB_LSN *)); 23 __ham_a_ad __P (( ENV *, DB **, *, *, __ham_a_gs **)); 24 __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)); 25 __ham_cyge_ad __P (( ENV *, DB **, *, *, __ham_cyge_gs **)); 26 __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 *)); 27 __ham_magroup_42_ad __P (( ENV *, DB **, *, *, __ham_magroup_42_gs **)); 28 __ham_magroup_ad __P (( ENV *, DB **, *, *, __ham_magroup_gs **)); 29 __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)); 30 __ham_grouoc_42_ad __P (( ENV *, DB **, *, *, __ham_grouoc_42_gs **)); 31 __ham_grouoc_ad __P (( ENV *, DB **, *, *, __ham_grouoc_gs **)); 32 __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)); 33 __ham_cudj_ad __P (( ENV *, DB **, *, *, __ham_cudj_gs **)); 34 __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)); 35 __ham_chgpg_ad __P (( ENV *, DB **, *, *, __ham_chgpg_gs **)); 36 __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)); 37 __ham__cov __P (( ENV *, DB_DISTAB *)); 38 __ham_sd_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 39 __ham_wge_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 40 __ham_lda_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 41 __ham_a_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 42 __ham_cyge_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 43 __ham_magroup_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 44 __ham_magroup_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 45 __ham_grouoc_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 46 __ham_grouoc_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 47 __ham_cudj_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 48 __ham_chgpg_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 49 __ham__t __P (( ENV *, DB_DISTAB *)); 50 __ham_pg __P (( DB *, db_pgno_t , *, DBT *)); 51 __ham_pgout __P (( DB *, db_pgno_t , *, DBT *)); 52 __ham_msw __P (( ENV *, *)); 53 __ham_add_dup __P (( DBC *, DBT *, u_t32_t , db_pgno_t *)); 54 __ham_dup_cvt __P (( DBC *)); 55 __ham_make_dup __P (( 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_THREAD_INFO *, DB_TXN *, cڡ * me , db_pgno_t , u_t32_t )); 71 __ham_machk __P (( DB *, cڡ *, HMETA *)); 72 __ham_w_fe __P (( DB *, DB_THREAD_INFO *, DB_TXN *, DB_FH *, const *)); 73 __ham_w_subdb __P (( DB *, DB *, DB_THREAD_INFO *, 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 (( DBC *, PAGE * p , db_dx_t * dxp , cڡ DBT *, const DBT *, , )); 82 __ham_gdex __P (( DBC *, PAGE *, cڡ DBT *, , *, db_dx_t *)); 83 __ham_vify_s܋d_ge __P (( DB *, DB_THREAD_INFO *, DB_TXN *, PAGE *)); 84 __ham_st_ge __P (( DBC *, 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 (( DBC *, 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 (( ENV *, DBT *, DB_LSN *, db_cs , *)); 97 __ham_wge_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 98 __ham_a_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 99 __ham_lda_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 100 __ham_cyge_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 101 __ham_magroup_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 102 __ham_grouoc_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 103 __ham_cudj_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 104 __ham_chgpg_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 105 __ham_magroup_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 106 __ham_grouoc_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 107 __ham_aim __P (( DB *, DB_THREAD_INFO *, 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 , (*)(DBC *, PAGE *, *, *), *, )); 113 __db_no_hash_am __P (( 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 (( 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 (( 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 (( 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 (( ENV *, DB_LOCK *)); 16 __lock_downgde __P (( ENV *, DB_LOCK *, db_lockmode_t , u_t32_t )); 17 __lock_lock_is_ __P (( 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 (( ENV *, u_t32_t , *)); 21 __lock_chk __P (( ENV *)); 22 __lock_id_ __P (( DB_ENV *, u_t32_t *)); 23 __lock_id __P (( 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 (( ENV *, DB_LOCKER *)); 27 __lock_id_t __P (( 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 (( 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 (( ENV *, DBT *, u_t32_t )); 34 __lock_g_li __P (( ENV *, DB_LOCKER *, u_t32_t , db_lockmode_t , DBT *)); 35 __lock_li_t __P (( 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_lk_is __P (( DB_ENV *, u_t32_t *)); 49 __lock_t_lk_is __P (( DB_ENV *, u_t32_t )); 50 __lock_g_v_timeout __P (( DB_ENV *, db_timeout_t *, u_t32_t )); 51 __lock_t_v_timeout __P (( DB_ENV *, db_timeout_t , u_t32_t )); 52 __lock_ݒ __P (( ENV *, )); 53 __lock_v_esh __P (( ENV *)); 54 u_t32_t __lock_gi_mux_cou __P (( ENV *)); 55 __lock__ __P (( DB_ENV *, DB_LOCK_STAT **, u_t32_t )); 56 __lock__t_ __P (( DB_ENV *, u_t32_t )); 57 __lock__t __P (( ENV *, u_t32_t )); 58 __lock_ock __P (( DB_LOCKTAB *, DB_MSGBUF * mbp , __db_lock *, )); 59 __lock_t_timeout __P (( ENV *, DB_LOCKER *, db_timeout_t , u_t32_t )); 60 __lock_t_timeout_ __P (( ENV *, DB_LOCKER *, db_timeout_t , u_t32_t )); 61 __lock_h_timeout __P (( ENV *, DB_LOCKER *, DB_LOCKER *)); 62 __lock_expes __P (( ENV *, db_timeec *, db_timeout_t )); 63 __lock_exped __P (( ENV *, db_timeec *, db_timespec *)); 64 u_t32_t __lock_ohash __P ((cڡ DBT *)); 65 u_t32_t __lock_lhash __P (( DB_LOCKOBJ *)); 66 __lock_nomem __P (( ENV *, const *)); 68 #i defed ( __lulus ) @../dbinc_auto/log_ext.h 2 #idef _log_ext_h_ 3 #_log_ext_h_ ) 5 #i defed ( __lulus ) 9 __log_ݒ __P (( 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 (( ENV *)); 13 __log_g_ched_ckp_l __P (( ENV *, DB_LSN *)); 14 u_t32_t __log_gi_mux_cou __P (( ENV *)); 15 __log_vun __P (( ENV *, DB_LSN *, DB_LSN *, DB_LSN *)); 16 __log_is_outded __P (( ENV *, u_t32_t , *)); 17 __log_zo __P (( 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 (( ENV *, u_t32_t )); 24 __log_g_dvsi __P (( ENV *, u_t32_t *)); 25 __log_chive_ __P (( DB_ENV *, **[], u_t32_t )); 26 __log_g_ab_l __P (( ENV *, DB_LSN *)); 27 __log_autemove __P (( ENV *)); 28 __log_check_ge_l __P (( 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 (( ENV *, DB_TXN *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 3, 4))); 32 __log_curs_ __P (( DB_ENV *, DB_LOGC **, u_t32_t )); 33 __log_curs __P (( 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_hdrsw __P (( HDR *, )); 38 __log_rsisw __P (( LOGP *)); 39 __log_p_l __P (( ENV *, DB_THREAD_INFO *, __p_cڌ_gs *, DBT *, DB_LSN *, DB_LSN *)); 40 __log_v_ __P (( DB_ENV *)); 41 __log_v_deroy __P (( DB_ENV *)); 42 __log_g_lg_bsize __P (( DB_ENV *, u_t32_t *)); 43 __log_t_lg_bsize __P (( DB_ENV *, u_t32_t )); 44 __log_g_lg_femode __P (( DB_ENV *, *)); 45 __log_t_lg_femode __P (( DB_ENV *, )); 46 __log_g_lg_max __P (( DB_ENV *, u_t32_t *)); 47 __log_t_lg_max __P (( DB_ENV *, u_t32_t )); 48 __log_g_lg_gimax __P (( DB_ENV *, u_t32_t *)); 49 __log_t_lg_gimax __P (( DB_ENV *, u_t32_t )); 50 __log_g_lg_d __P (( DB_ENV *, const **)); 51 __log_t_lg_d __P (( DB_ENV *, const *)); 52 __log_g_ags __P (( DB_ENV *, u_t32_t *)); 53 __log_t_ags __P (( ENV *, u_t32_t , )); 54 __log_g_cfig __P (( DB_ENV *, u_t32_t , *)); 55 __log_t_cfig __P (( DB_ENV *, u_t32_t , )); 56 __log_t_cfig_t __P (( DB_ENV *, u_t32_t , , )); 57 __log_check_sizes __P (( ENV *, u_t32_t , u_int32_t)); 58 __log_put_ __P (( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 59 __log_put __P (( ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 60 __log_cut_l __P (( ENV *, DB_LSN *, u_t32_t *, u_int32_t *)); 61 __log_wfe __P (( DB_LOG *, DB_LSN *, u_t32_t , u_int32_t)); 62 __log_ush_ __P (( DB_ENV *, cڡ DB_LSN *)); 63 __log_ush __P (( ENV *, cڡ DB_LSN *)); 64 __log_ush_t __P (( DB_LOG *, cڡ DB_LSN *, )); 65 __log_fe_ __P (( DB_ENV *, cڡ DB_LSN *, *, size_t )); 66 __log_me __P (( DB_LOG *, u_t32_t , **, DB_FH **, u_int32_t)); 67 __log_p_put __P (( ENV *, DB_LSN *, cڡ DBT *, u_t32_t )); 68 __log__ __P (( DB_ENV *, DB_LOG_STAT **, u_t32_t )); 69 __log__t_ __P (( DB_ENV *, u_t32_t )); 70 __log__t __P (( ENV *, u_t32_t )); 72 #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 __memp_bhwre __P (( DB_MPOOL *, DB_MPOOL_HASH *, MPOOLFILE *, BH *, )); 12 __memp_pgad __P (( DB_MPOOLFILE *, DB_MPOOL_HASH *, BH *, )); 13 __memp_pg __P (( DB_MPOOLFILE *, BH *, )); 14 __memp_bh __P (( DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, u_t32_t )); 15 __memp_fg_ __P (( DB_MPOOLFILE *, db_pgno_t *, DB_TXN *, u_t32_t , *)); 16 __memp_fg __P (( DB_MPOOLFILE *, db_pgno_t *, DB_THREAD_INFO *, DB_TXN *, u_t32_t , *)); 17 __memp_f_ __P (( DB_ENV *, DB_MPOOLFILE **, u_t32_t )); 18 __memp_f __P (( ENV *, DB_MPOOLFILE **)); 19 __memp_t_r_n __P (( DB_MPOOLFILE *, u_t32_t )); 20 __memp_g_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 21 __memp_t_feid __P (( DB_MPOOLFILE *, u_t8_t *)); 22 __memp_g_ags __P (( DB_MPOOLFILE *, u_t32_t *)); 23 __memp_t_ags __P (( DB_MPOOLFILE *, u_t32_t , )); 24 __memp_g_y __P (( DB_MPOOLFILE *, *)); 25 __memp_t_y __P (( DB_MPOOLFILE *, )); 26 __memp_t_l_offt __P (( DB_MPOOLFILE *, t32_t )); 27 __memp_g_pgcook __P (( DB_MPOOLFILE *, DBT *)); 28 __memp_t_pgcook __P (( DB_MPOOLFILE *, DBT *)); 29 __memp_g_ϡ_pgno __P (( DB_MPOOLFILE *, db_pgno_t *)); 30 * __memp_ __P (( DB_MPOOLFILE *)); 31 * __memp_s __P (( DB_MPOOL *, MPOOLFILE *)); 32 __memp_fݒ_ __P (( DB_MPOOLFILE *, cڡ *, u_t32_t , , size_t )); 33 __memp_fݒ __P (( DB_MPOOLFILE *, MPOOLFILE *, cڡ *, u_t32_t , , size_t )); 34 __memp_fo_ __P (( DB_MPOOLFILE *, u_t32_t )); 35 __memp_fo __P (( DB_MPOOLFILE *, u_t32_t )); 36 __memp_mf_disrd __P (( DB_MPOOL *, MPOOLFILE *)); 37 __memp_memli __P (( ENV *, ***, *)); 38 __memp_ut_ __P (( DB_MPOOLFILE *, *, DB_CACHE_PRIORITY , u_t32_t )); 39 __memp_ut __P (( DB_MPOOLFILE *, DB_THREAD_INFO *, *, DB_CACHE_PRIORITY )); 40 __memp_uŚ_bufrs __P (( ENV *, DB_THREAD_INFO *)); 41 __memp_dty __P (( DB_MPOOLFILE *, *, DB_THREAD_INFO *, DB_TXN *, DB_CACHE_PRIORITY , u_t32_t )); 42 __memp_v_ __P (( DB_ENV *)); 43 __memp_v_deroy __P (( DB_ENV *)); 44 __memp_g_chesize __P (( DB_ENV *, u_t32_t *, u_int32_t *, *)); 45 __memp_t_chesize __P (( DB_ENV *, u_t32_t , u_int32_t, )); 46 __memp_t_cfig __P (( DB_ENV *, u_t32_t , )); 47 __memp_g_cfig __P (( DB_ENV *, u_t32_t , *)); 48 __memp_g_mp_max_ݒfd __P (( DB_ENV *, *)); 49 __memp_t_mp_max_ݒfd __P (( DB_ENV *, )); 50 __memp_g_mp_max_wre __P (( DB_ENV *, *, db_timeout_t *)); 51 __memp_t_mp_max_wre __P (( DB_ENV *, , db_timeout_t )); 52 __memp_g_mp_mmsize __P (( DB_ENV *, size_t *)); 53 __memp_t_mp_mmsize __P (( DB_ENV *, size_t )); 54 __memp_me __P (( ENV *, u_t8_t *, const *, const *, const *, )); 55 __memp_run __P (( DB_MPOOLFILE *, DB_THREAD_INFO *, db_pgno_t , u_t32_t )); 56 __memp_loc_li __P (( DB_MPOOLFILE *, u_t32_t , db_pgno_t **)); 57 __memp__li __P (( DB_MPOOLFILE *)); 58 __memp_g_li __P ( DB_MPOOLFILE *, u_t32_t *, db_pgno_t **)); 59 __memp_exnd_li __P ( DB_MPOOLFILE *, u_t32_t , db_pgno_t **)); 60 __memp_t_ϡ_pgno __P (( DB_MPOOLFILE *, db_pgno_t )); 61 u_t32_t __memp_bh_iܙy __P (( BH *)); 62 __memp_bh_xn __P (( DB_MPOOL *, MPOOLFILE * m , BH *, *)); 63 __memp_sk_cudj __P (( DBC *, db_pgno_t )); 64 __memp_bh_ze __P (( DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, *)); 65 __memp_bh_thaw __P (( DB_MPOOL *, REGINFO *, DB_MPOOL_HASH *, BH *, BH *)); 66 __memp_ݒ __P (( ENV *, )); 67 __memp_ __P (( ENV *, DB_MPOOL *, u_t , u_t32_t , u_int)); 68 u_t32_t __memp_max_gis __P (( ENV *)); 69 u_t32_t __memp_gi_mux_cou __P (( ENV *)); 70 __memp_v_esh __P (( ENV *)); 71 __memp_gi_ __P (( DB_ENV *, , (*)(DB_ENV *, db_pgno_t , *, DBT *), (*)(DB_ENV *, db_pgno_t, *, DBT *))); 72 __memp_gi __P (( ENV *, , (*)( DB_ENV *, db_pgno_t , *, DBT *), (*)(DB_ENV *, db_pgno_t, *, DBT *))); 73 __memp_g_buck __P (( ENV *, MPOOLFILE *, db_pgno_t , REGINFO **, DB_MPOOL_HASH **)); 74 __memp_size __P (( DB_MPOOL *, u_t32_t , u_int32_t)); 75 __memp_g_che_max __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 76 __memp_t_che_max __P (( DB_ENV *, u_t32_t , u_int32_t)); 77 __memp__ __P (( DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )); 78 __memp__t_ __P (( DB_ENV *, u_t32_t )); 79 __memp__t __P (( ENV *, u_t32_t )); 80 __memp__hash __P (( REGINFO *, MPOOL *, u_t32_t *)); 81 __memp_wk_fes __P (( ENV *, MPOOL *, (*__P((ENV *, MPOOLFILE *, *, u_t32_t *, u_int32_t)), *, u_int32_t *, u_int32_t)); 82 __memp_sync_ __P (( DB_ENV *, DB_LSN *)); 83 __memp_sync __P (( ENV *, u_t32_t , DB_LSN *)); 84 __memp_fsync_ __P (( DB_MPOOLFILE *)); 85 __memp_fsync __P (( DB_MPOOLFILE *)); 86 __mp_xxx_fh __P (( DB_MPOOLFILE *, DB_FH **)); 87 __memp_sync_t __P (( ENV *, DB_MPOOLFILE *, u_t32_t , u_int32_t, u_int32_t *, *)); 88 __memp_mf_sync __P (( DB_MPOOL *, MPOOLFILE *, )); 89 __memp_ick_ __P (( DB_ENV *, , *)); 91 #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 (( ENV *, , u_t32_t , db_mux_t *)); 10 __mux_loc_t __P (( ENV *, , , u_t32_t , db_mux_t *)); 11 __mux_ __P (( ENV *, db_mux_t *)); 12 __mux__t __P (( ENV *, , db_mux_t *)); 13 __mut_chk __P (( ENV *)); 14 __db_f_mux_ __P (( ENV *, db_mux_t , u_t32_t )); 15 __db_f_mux_lock __P (( ENV *, db_mux_t )); 16 __db_f_mux_uock __P (( ENV *, db_mux_t )); 17 __db_f_mux_deroy __P (( 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 (( ENV *, db_mux_t , u_t32_t )); 31 __db_had_mux_lock __P (( ENV *, db_mux_t )); 32 __db_had_mux_uock __P (( ENV *, db_mux_t )); 33 __db_had_mux_deroy __P (( ENV *, db_mux_t )); 34 __mux_ݒ __P (( ENV *, )); 35 __mux_v_esh __P (( ENV *)); 36 __mux_sour_tu __P (( 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 (( ENV *, u_t32_t )); 40 __mux_t_debug_sg __P (( ENV *, cڡ *, db_mux_t , u_t32_t )); 41 __mux_t_debug_s __P (( ENV *, DB_MSGBUF *, db_mux_t , u_t32_t )); 42 __mux_t_wa_fo __P (( ENV *, db_mux_t , u_t32_t *, u_int32_t *)); 43 __mux_r __P (( ENV *, db_mux_t )); 44 __db_s_mux_ __P (( ENV *, db_mux_t , u_t32_t )); 45 __db_s_mux_lock __P (( ENV *, db_mux_t )); 46 __db_s_mux_uock __P (( ENV *, db_mux_t )); 47 __db_s_mux_deroy __P (( ENV *, db_mux_t )); 48 __db_w32_mux_ __P (( ENV *, db_mux_t , u_t32_t )); 49 __db_w32_mux_lock __P (( ENV *, db_mux_t )); 50 __db_w32_mux_uock __P (( ENV *, db_mux_t )); 51 __db_w32_mux_deroy __P (( 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 (( ENV *)); 10 __os_abh __P ((const *)); 11 #i defed ( HAVE_REPLICATION_THREADS ) 12 __os_gaddrfo __P (( ENV *, cڡ *, u_t , cڡ *, cڡ ADDRINFO *, ADDRINFO **)); 14 #i defed ( HAVE_REPLICATION_THREADS ) 15 __os_addrfo __P (( ENV *, ADDRINFO *)); 17 __os_umloc __P (( ENV *, size_t , *)); 18 __os_uloc __P (( ENV *, size_t , *)); 19 __os_u __P (( ENV *, *)); 20 __os_rdup __P (( ENV *, const *, *)); 21 __os_oc __P (( ENV *, size_t , size_t, *)); 22 __os_mloc __P (( ENV *, size_t , *)); 23 __os_loc __P (( ENV *, size_t , *)); 24 __os_ __P (( ENV *, *)); 25 * __ua_memy __P ((*, cڡ *, size_t )); 26 __os_gtime __P (( ENV *, db_timeec *, )); 27 __os_fs_nzo __P (()); 28 __os_sut_de_io __P (()); 29 __os_sut_db_gi __P (()); 30 __os_sut_iti __P (()); 31 u_t32_t __os_u_cou __P (()); 32 * __os_ime __P ((cڡ time_t *, *)); 33 __os_dli __P (( ENV *, const *, , ***, *)); 34 __os_d __P (( ENV *, **, )); 35 __os_g_o_t_zo __P (()); 36 __os_g_o __P (()); 37 __os_g_Ë __P (()); 38 __os_g_sy __P (()); 39 __os_t_o __P (()); 40 * __os_ __P ((, *, size_t )); 41 __os_posix_r __P (()); 42 __os_feid __P (( ENV *, cڡ *, , u_t8_t *)); 43 __os_fdlock __P (( ENV *, DB_FH *, off_t , , )); 44 __os_fsync __P (( ENV *, DB_FH *)); 45 __os_gv __P (( ENV *, cڡ *, **, size_t )); 46 __os_ݒhd __P (( ENV *, cڡ *, , , DB_FH **)); 47 __os_ohd __P (( ENV *, DB_FH *)); 48 __os_ch __P (( ENV *, REGINFO *, REGION *)); 49 __os_dach __P (( ENV *, REGINFO *, )); 50 __os_mfe __P (( ENV *, *, DB_FH *, size_t , , **)); 51 __os_unmfe __P (( ENV *, *, size_t )); 52 __os_mkd __P (( ENV *, const *, )); 53 __os_ݒ __P (( ENV *, cڡ *, u_t32_t , u_t32_t, , DB_FH **)); 54 __os_id __P (( DB_ENV *, pid_t *, db_thadid_t *)); 55 __os_me __P (( ENV *, cڡ *, cڡ *, u_t32_t )); 56 __os_io __P (()); 57 * __db_h __P ((const *)); 58 __os_io __P (( ENV *, , DB_FH *, db_pgno_t , u_t32_t , u_t32_t, u_t32_t, u_t8_t *, size_t *)); 59 __os_ad __P (( ENV *, DB_FH *, *, size_t , size_t *)); 60 __os_wre __P (( ENV *, DB_FH *, *, size_t , size_t *)); 61 __os_physwre __P (( ENV *, DB_FH *, *, size_t , size_t *)); 62 __os_ek __P (( ENV *, DB_FH *, db_pgno_t , u_t32_t , u_int32_t)); 63 __os_ack __P (( ENV *)); 64 __os_exis __P (( ENV *, const *, *)); 65 __os_iofo __P (( ENV *, cڡ *, DB_FH *, u_t32_t *, u_int32_t *, u_int32_t *)); 66 __os_tmpd __P (( ENV *, u_t32_t )); 67 __os_un __P (( ENV *, DB_FH *, db_pgno_t , u_t32_t )); 68 __os_unique_id __P (( ENV *, u_t32_t *)); 69 __os_uƚk __P (( ENV *, const *, )); 70 __os_yld __P (( ENV *, u_lg , u_long)); 71 #ide HAVE_FCLOSE 72 fo __P (( FILE *)); 74 #ide HAVE_FGETC 75 fgc __P (( FILE *)); 77 #ide HAVE_FGETS 78 * fgs __P ((*, , FILE *)); 80 #ide HAVE_FOPEN 81 FILE * fݒ __P ((const *, const *)); 83 #ide HAVE_FWRITE 84 size_t fwre __P ((cڡ *, size_t, size_t, FILE *)); 86 #ide HAVE_LOCALTIME 87 tm * loime __P ((cڡ time_t *)); 89 #ifde HAVE_QNX 90 __os_qnx_gi_ݒ __P (( ENV *, cڡ *, , , DB_FH **)); 92 __os_is_w __P (()); 93 u_t32_t __os_u_cou __P (()); 94 #ifde HAVE_REPLICATION_THREADS 95 __os_g_Ë __P (()); 98 #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_ad __P (( ENV *, DB **, *, *, __qam_cf_gs **)); 17 __qam_cf_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , db_o_t , db_pgno_t )); 18 __qam_mvr_ad __P (( ENV *, DB **, *, *, __qam_mvr_gs **)); 19 __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 )); 20 __qam_d_ad __P (( ENV *, DB **, *, *, __qam_d_gs **)); 21 __qam_d_log __P (( DB *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, db_pgno_t , u_t32_t, db_o_t )); 22 __qam_add_ad __P (( ENV *, DB **, *, *, __qam_add_gs **)); 23 __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 *)); 24 __qam_dext_ad __P (( ENV *, DB **, *, *, __qam_dext_gs **)); 25 __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 *)); 26 __qam__cov __P (( ENV *, DB_DISTAB *)); 27 __qam_cf_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 28 __qam_mvr_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 29 __qam_d_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 30 __qam_add_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 31 __qam_dext_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 32 __qam__t __P (( ENV *, DB_DISTAB *)); 33 __qam_msw __P (( ENV *, PAGE *)); 34 __qam_pg_out __P (( ENV *, db_pgno_t , *, DBT *)); 35 __qam_robe __P (( DBC *, db_pgno_t , *, 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 *, DB_THREAD_INFO *, QUEUE_FILELIST **)); 40 __qam_ex_mes __P (( 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_THREAD_INFO *, 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_THREAD_INFO *, DB_TXN *, DB_FH *, const *)); 56 __qam_cf_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 57 __qam_mvr_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 58 __qam_d_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 59 __qam_dext_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 60 __qam_add_cov __P (( 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 (( 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 ) 11 #__REP_BULK_SIZE 16 ) 12 s___p_bulk_gs { 13 u_t32_t mn ; 14 DB_LSN ml ; 15 DBT mbulkda ; 16 } t__p_bulk_gs ; 18 #__REP_CONTROL_SIZE 36 ) 19 s___p_cڌ_gs { 20 u_t32_t mp_vsi ; 21 u_t32_t mlog_vsi ; 22 DB_LSN ml ; 23 u_t32_t my ; 24 u_t32_t mg ; 25 u_t32_t mmsg_c ; 26 u_t32_t mmsg_nc ; 27 u_t32_t mags ; 28 } t__p_cڌ_gs ; 30 #__REP_EGEN_SIZE 4 ) 31 s___p_eg_gs { 32 u_t32_t meg ; 33 } t__p_eg_gs ; 35 #__REP_FILEINFO_SIZE 36 ) 36 s___p_fefo_gs { 37 u_t32_t mpgsize ; 38 db_pgno_t mpgno ; 39 db_pgno_t mmax_pgno ; 40 u_t32_t mfum ; 41 u_t32_t mffo_ags ; 42 u_t32_t mty ; 43 u_t32_t mdb_ags ; 44 DBT muid ; 45 DBT mfo ; 46 } t__p_fefo_gs ; 48 #__REP_GRANT_INFO_SIZE 8 ) 49 s___p_g_fo_gs { 50 u_t32_t mmsg_c ; 51 u_t32_t mmsg_nc ; 52 } t__p_g_fo_gs ; 54 #__REP_LOGREQ_SIZE 8 ) 55 s___p_logq_gs { 56 DB_LSN mdl ; 57 } t__p_logq_gs ; 59 #__REP_NEWFILE_SIZE 4 ) 60 s___p_wfe_gs { 61 u_t32_t mvsi ; 62 } t__p_wfe_gs ; 64 #__REP_UPDATE_SIZE 16 ) 65 s___p_upde_gs { 66 DB_LSN mf_l ; 67 u_t32_t mf_vs ; 68 u_t32_t mnum_fes ; 69 } t__p_upde_gs ; 71 #__REP_VOTE_INFO_SIZE 20 ) 72 s___p_ve_fo_gs { 73 u_t32_t meg ; 74 u_t32_t mnses ; 75 u_t32_t mnves ; 76 u_t32_t miܙy ; 77 u_t32_t mtbak ; 78 } t__p_ve_fo_gs ; 80 #__REP_MAXMSG_SIZE 36 ) @../dbinc_auto/rep_ext.h 2 #idef _p_ext_h_ 3 #_p_ext_h_ ) 5 #i defed ( __lulus ) 9 __p_bulk_msh __P (( ENV *, __p_bulk_gs *, u_t8_t *, size_t , size_t *)); 10 __p_bulk_unmsh __P (( ENV *, __p_bulk_gs *, u_t8_t *, size_t , u_int8_t **)); 11 __p_cڌ_msh __P (( ENV *, __p_cڌ_gs *, u_t8_t *, size_t , size_t *)); 12 __p_cڌ_unmsh __P (( ENV *, __p_cڌ_gs *, u_t8_t *, size_t , u_int8_t **)); 13 __p_eg_msh __P (( ENV *, __p_eg_gs *, u_t8_t *, size_t , size_t *)); 14 __p_eg_unmsh __P (( ENV *, __p_eg_gs *, u_t8_t *, size_t , u_int8_t **)); 15 __p_fefo_msh __P (( ENV *, u_t32_t , __p_fefo_gs *, u_t8_t *, size_t , size_t *)); 16 __p_fefo_unmsh __P (( ENV *, u_t32_t , __p_fefo_gs **, u_t8_t *, size_t , u_int8_t **)); 17 __p_g_fo_msh __P (( ENV *, __p_g_fo_gs *, u_t8_t *, size_t , size_t *)); 18 __p_g_fo_unmsh __P (( ENV *, __p_g_fo_gs *, u_t8_t *, size_t , u_int8_t **)); 19 __p_logq_msh __P (( ENV *, __p_logq_gs *, u_t8_t *, size_t , size_t *)); 20 __p_logq_unmsh __P (( ENV *, __p_logq_gs *, u_t8_t *, size_t , u_int8_t **)); 21 __p_wfe_msh __P (( ENV *, __p_wfe_gs *, u_t8_t *, size_t , size_t *)); 22 __p_wfe_unmsh __P (( ENV *, __p_wfe_gs *, u_t8_t *, size_t , u_int8_t **)); 23 __p_upde_msh __P (( ENV *, u_t32_t , __p_upde_gs *, u_t8_t *, size_t , size_t *)); 24 __p_upde_unmsh __P (( ENV *, u_t32_t , __p_upde_gs **, u_t8_t *, size_t , u_int8_t **)); 25 __p_ve_fo_msh __P (( ENV *, __p_ve_fo_gs *, u_t8_t *, size_t , size_t *)); 26 __p_ve_fo_unmsh __P (( ENV *, __p_ve_fo_gs *, u_t8_t *, size_t , u_int8_t **)); 27 __p_upde_q __P (( ENV *, __p_cڌ_gs *, )); 28 __p_ge_q __P (( ENV *, DB_THREAD_INFO *, , __p_cڌ_gs *, DBT *)); 29 __p_upde_tup __P (( ENV *, , __p_cڌ_gs *, DBT *)); 30 __p_bulk_ge __P (( ENV *, DB_THREAD_INFO *, , __p_cڌ_gs *, DBT *)); 31 __p_ge __P (( ENV *, DB_THREAD_INFO *, , __p_cڌ_gs *, DBT *)); 32 __p_ge_ __P (( ENV *, DB_THREAD_INFO *, , __p_cڌ_gs *, DBT *)); 33 __p__nup __P (( ENV *, REP *, )); 34 __p_pgg_q __P (( ENV *, REP *, __p_fefo_gs *, u_t32_t )); 35 __p_ffo_loc __P (( ENV *, __p_fefo_gs *, __rep_fileinfo_args **)); 36 __p_move__fe __P (( ENV *)); 37 __p_t_ __P (( ENV *)); 38 __p_e __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 39 __p_ve1 __P (( ENV *, __p_cڌ_gs *, DBT *, )); 40 __p_ve2 __P (( ENV *, __p_cڌ_gs *, DBT *, )); 41 __p_upde_g __P (( ENV *, db_timeec *)); 42 __p_i_ged __P (( ENV *)); 43 __p_a_b_loc __P (( ENV *, u_t32_t )); 44 __p_a_g __P (( ENV *, __p_cڌ_gs *, DBT *, )); 45 __p_a_check __P (( ENV *, )); 46 __p_a_esh __P (( ENV *)); 47 __p_a_expe __P (( ENV *, )); 48 db_timeout_t __p_a_watime __P (( ENV *)); 49 __p_eq __P (( ENV *, __p_cڌ_gs *, )); 50 __p_log __P (( ENV *, DB_THREAD_INFO *, __p_cڌ_gs *, DBT *, time_t , DB_LSN *)); 51 __p_bulk_log __P (( ENV *, DB_THREAD_INFO *, __p_cڌ_gs *, DBT *, time_t , DB_LSN *)); 52 __p_logq __P (( ENV *, __p_cڌ_gs *, DBT *, )); 53 __p_logg_q __P (( ENV *, REP *, DB_LSN *, u_t32_t )); 54 __p_logady __P (( ENV *, REP *, time_t , DB_LSN *)); 55 __p_v_ __P (( DB_ENV *)); 56 __p_v_deroy __P (( DB_ENV *)); 57 __p_g_cfig __P (( DB_ENV *, u_t32_t , *)); 58 __p_t_cfig __P (( DB_ENV *, u_t32_t , )); 59 __p_t __P (( DB_ENV *, DBT *, u_t32_t )); 60 __p__db __P (( ENV *, , pdb_t )); 61 __p_g_lim __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 62 __p_t_lim __P (( DB_ENV *, u_t32_t , u_int32_t)); 63 __p_t_nses __P (( DB_ENV *, u_t32_t )); 64 __p_g_nses __P (( DB_ENV *, u_t32_t *)); 65 __p_t_iܙy __P (( DB_ENV *, u_t32_t )); 66 __p_g_iܙy __P (( DB_ENV *, u_t32_t *)); 67 __p_t_timeout __P (( DB_ENV *, , db_timeout_t )); 68 __p_g_timeout __P (( DB_ENV *, , db_timeout_t *)); 69 __p_g_que __P (( DB_ENV *, db_timeout_t *, db_timeout_t *)); 70 __p_t_que __P (( DB_ENV *, db_timeout_t , db_timeout_t)); 71 __p_t_t __P (( DB_ENV *, , (*)(DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t ))); 72 __p_g_ockskew __P (( DB_ENV *, u_t32_t *, u_int32_t *)); 73 __p_t_ockskew __P (( DB_ENV *, u_t32_t , u_int32_t)); 74 __p_ush __P (( DB_ENV *)); 75 __p_sync __P (( DB_ENV *, u_t32_t )); 76 __p_oss_mesge __P (( DB_ENV *, DBT *, DBT *, , DB_LSN *)); 77 __p_y __P (( ENV *, DB_THREAD_INFO *, __p_cڌ_gs *, DBT *, DB_LSN *, *, DB_LSN *)); 78 __p_oss_txn __P (( ENV *, DBT *)); 79 __p_nd_q __P (( ENV *, )); 80 __p_check_deq __P (( ENV *, REP *)); 81 __p_ݒ __P (( ENV *)); 82 __p_v_esh __P (( ENV *)); 83 __p_v_o __P (( ENV *)); 84 __p_eo __P (( ENV *)); 85 __p_ofes __P (( ENV *, )); 86 __p_wre_eg __P (( ENV *, u_t32_t )); 87 __p_wre_g __P (( ENV *, u_t32_t )); 88 __p__ __P (( DB_ENV *, DB_REP_STAT **, u_t32_t )); 89 __p__t_ __P (( DB_ENV *, u_t32_t )); 90 __p__t __P (( ENV *, u_t32_t )); 91 __p_bulk_mesge __P (( ENV *, REP_BULK *, REP_THROTTLE *, DB_LSN *, cڡ DBT *, u_t32_t )); 92 __p_nd_bulk __P (( ENV *, REP_BULK *, u_t32_t )); 93 __p_bulk_loc __P (( ENV *, REP_BULK *, , u_t *, u_t32_t *, u_int32_t)); 94 __p_bulk_ __P (( ENV *, REP_BULK *, u_t32_t )); 95 __p_nd_mesge __P (( ENV *, , u_t32_t , DB_LSN *, cڡ DBT *, u_int32_t, u_int32_t)); 96 __p_w_ma __P (( ENV *, __p_cڌ_gs *, )); 97 __p_nrchive __P (( ENV *)); 98 __p_nd_ve __P (( ENV *, DB_LSN *, u_t32_t , u_int32_t, u_int32_t, u_int32_t, u_int32_t, , u_int32_t, u_int32_t)); 99 __p_e_de __P (( ENV *, REP *, )); 100 __p_grow_ses __P (( ENV *, u_t32_t )); 101 __v_p_r __P (( ENV *, )); 102 __v_db_p_ex __P (( ENV *)); 103 __db_p_r __P (( DB *, , , )); 104 ___p_r __P (( ENV *)); 105 ___p_ex __P (( ENV *)); 106 __p_lockout_i __P (( ENV *, REP *)); 107 __p_lockout_y __P (( ENV *, REP *, u_t32_t )); 108 __p_lockout_msg __P (( ENV *, REP *, u_t32_t )); 109 __p_nd_thrَe __P (( ENV *, , REP_THROTTLE *, u_t32_t , u_int32_t)); 110 u_t32_t __p_msg_to_d __P ((u_int32_t, u_int32_t)); 111 u_t32_t __p_msg_om_d __P ((u_int32_t, u_int32_t)); 112 __p_t __P (( ENV *, cڡ *, ...) __ibu__ (( __fm__ ( __tf__ , 2, 3))); 113 __p_t_mesge __P (( ENV *, , __p_cڌ_gs *, *, u_t32_t )); 114 __p_fe_evt __P (( ENV *, u_t32_t , *)); 115 __p_vify __P (( ENV *, __p_cڌ_gs *, DBT *, , time_t )); 116 __p_vify_ __P (( ENV *, __p_cڌ_gs *, )); 117 __p_vify_q __P (( ENV *, __p_cڌ_gs *, )); 118 __p_vify_mch __P (( ENV *, DB_LSN *, time_t )); 119 __p_log_backup __P (( ENV *, REP *, DB_LOGC *, DB_LSN *)); 121 #i defed ( __lulus ) @../dbinc_auto/repmgr_auto.h 3 #idef __pmgr_AUTO_H 4 #__pmgr_AUTO_H ) 11 #__REPMGR_HANDSHAKE_SIZE 6 ) 12 s___pmgr_hdshake_gs { 13 u_t16_t mpt ; 14 u_t32_t miܙy ; 15 } t__pmgr_hdshake_gs ; 17 #__REPMGR_ACK_SIZE 12 ) 18 s___pmgr_ack_gs { 19 u_t32_t mgi ; 20 DB_LSN ml ; 21 } t__pmgr_ack_gs ; 23 #__REPMGR_VERSION_PROPOSAL_SIZE 8 ) 24 s___pmgr_vsi_ol_gs { 25 u_t32_t mm ; 26 u_t32_t mmax ; 27 } t__pmgr_vsi_ol_gs ; 29 #__REPMGR_VERSION_CONFIRMATION_SIZE 4 ) 30 s___pmgr_vsi_cfmi_gs { 31 u_t32_t mvsi ; 32 } t__pmgr_vsi_cfmi_gs ; 34 #__REPMGR_MAXMSG_SIZE 12 ) @../dbinc_auto/repmgr_ext.h 2 #idef _pmgr_ext_h_ 3 #_pmgr_ext_h_ ) 5 #i defed ( __lulus ) 9 __pmgr_hdshake_msh __P (( ENV *, __pmgr_hdshake_gs *, u_t8_t *)); 10 __pmgr_hdshake_unmsh __P (( ENV *, __pmgr_hdshake_gs *, u_t8_t *, size_t , u_int8_t **)); 11 __pmgr_ack_msh __P (( ENV *, __pmgr_ack_gs *, u_t8_t *)); 12 __pmgr_ack_unmsh __P (( ENV *, __pmgr_ack_gs *, u_t8_t *, size_t , u_int8_t **)); 13 __pmgr_vsi_ol_msh __P (( ENV *, __pmgr_vsi_ol_gs *, u_t8_t *)); 14 __pmgr_vsi_ol_unmsh __P (( ENV *, __pmgr_vsi_ol_gs *, u_t8_t *, size_t , u_int8_t **)); 15 __pmgr_vsi_cfmi_msh __P (( ENV *, __pmgr_vsi_cfmi_gs *, u_t8_t *)); 16 __pmgr_vsi_cfmi_unmsh __P (( ENV *, __pmgr_vsi_cfmi_gs *, u_t8_t *, size_t , u_int8_t **)); 17 __pmgr__ei __P (( ENV *, )); 18 __pmgr_become_ma __P (( ENV *)); 19 __pmgr_t __P (( DB_ENV *, , u_t32_t )); 20 __pmgr_o __P (( ENV *)); 21 __pmgr_t_ack_picy __P (( DB_ENV *, )); 22 __pmgr_g_ack_picy __P (( DB_ENV *, *)); 23 __pmgr_v_ __P (( ENV *, DB_REP *)); 24 __pmgr_v_deroy __P (( ENV *, DB_REP *)); 25 __pmgr__thads __P (( ENV *)); 26 __pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 27 __pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 28 * __pmgr_msg_thad __P ((*)); 29 __pmgr_hd_evt __P (( ENV *, u_t32_t , *)); 30 __pmgr_ash_gi __P (( ENV *)); 31 __pmgr_nd __P (( DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t )); 32 __pmgr_nd_brd __P (( ENV *, u_t , cڡ DBT *, const DBT *, u_int *, u_int *)); 33 __pmgr_nd_e __P (( ENV *, REPMGR_CONNECTION *, u_t , cڡ DBT *, const DBT *, )); 34 __pmgr_is_rmt __P (( ENV *, cڡ DB_LSN *)); 35 __pmgr_bu_ci __P (( ENV *, REPMGR_CONNECTION *)); 36 __pmgr_nup_ci __P (( ENV *, REPMGR_CONNECTION *)); 37 __pmgr_fd_se __P (( ENV *, cڡ *, u_t )); 38 __pmgr_ck_Ïddr __P (( ENV *, cڡ *, u_t , ADDRINFO *, pmgr_Ïddr_t *)); 39 __pmgr_gaddr __P (( ENV *, cڡ *, u_t , , ADDRINFO **)); 40 __pmgr_add_se __P (( ENV *, cڡ *, u_t , REPMGR_SITE **)); 41 __pmgr_t_ __P (( DB_REP *)); 42 __pmgr_li __P (( ENV *)); 43 __pmgr_t_o __P (( ENV *)); 44 __pmgr_t_deroy __P (( ENV *, DB_REP *)); 45 __pmgr_thad_t __P (( ENV *, REPMGR_RUNNABLE *)); 46 __pmgr_thad_jo __P (( REPMGR_RUNNABLE *)); 47 __pmgr_t_nblockg __P (( sock_t )); 48 __pmgr_wake_wag_nds __P (( ENV *)); 49 __pmgr_awa_ack __P (( ENV *, cڡ DB_LSN *)); 50 __pmgr_compu_wa_ddle __P (( ENV *, timeec *, db_timeout_t )); 51 __pmgr_awa_d __P (( ENV *, REPMGR_CONNECTION *, db_timeout_t )); 52 __pmgr_loc_cd __P (( cd_v_t *)); 53 __pmgr__cd __P (( cd_v_t *)); 54 __pmgr__sync __P (( ENV *, DB_REP *)); 55 __pmgr_o_sync __P (( ENV *)); 56 __pmgr_t_ __P (( ENV *, DB_REP *)); 57 __pmgr_lock_mux __P (( mgr_mux_t *)); 58 __pmgr_uock_mux __P (( mgr_mux_t *)); 59 __pmgr_sigl __P (( cd_v_t *)); 60 __pmgr_wake_ma_thad __P (( ENV *)); 61 __pmgr_wrev __P (( sock_t , db_iovec_t *, , size_t *)); 62 __pmgr_adv __P (( sock_t , db_iovec_t *, , size_t *)); 63 __pmgr__lo __P (( ENV *)); 64 __pmgr_queue_ __P (( ENV *, DB_REP *)); 65 __pmgr_queue_deroy __P (( ENV *)); 66 __pmgr_queue_g __P (( ENV *, REPMGR_MESSAGE **)); 67 __pmgr_queue_put __P (( ENV *, REPMGR_MESSAGE *)); 68 __pmgr_queue_size __P (( ENV *)); 69 * __pmgr__thad __P ((*)); 70 __pmgr_ac __P (( ENV *)); 71 __pmgr_compu_timeout __P (( ENV *, db_timeec *)); 72 __pmgr_check_timeouts __P (( ENV *)); 73 __pmgr_f_y_cis __P (( ENV *)); 74 __pmgr_c_se __P (( ENV *, u_t eid )); 75 __pmgr_o_vsi __P (( ENV *, REPMGR_CONNECTION *)); 76 __pmgr_ad_om_se __P (( ENV *, REPMGR_CONNECTION *)); 77 __pmgr_wre_some __P (( ENV *, REPMGR_CONNECTION *)); 78 __pmgr__ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 79 __pmgr__t_ __P (( DB_ENV *, u_t32_t )); 80 __pmgr_se_li __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 81 #ide HAVE_REPLICATION_THREADS 82 __pmgr_o __P (( ENV *)); 84 #ide HAVE_REPLICATION_THREADS 85 __pmgr_add_me_se __P (( DB_ENV *, cڡ *, u_t , *, u_t32_t )); 87 #ide HAVE_REPLICATION_THREADS 88 __pmgr_g_ack_picy __P (( DB_ENV *, *)); 90 #ide HAVE_REPLICATION_THREADS 91 __pmgr_t_ack_picy __P (( DB_ENV *, )); 93 #ide HAVE_REPLICATION_THREADS 94 __pmgr_t_lol_se __P (( DB_ENV *, cڡ *, u_t , u_t32_t )); 96 #ide HAVE_REPLICATION_THREADS 97 __pmgr_se_li __P (( DB_ENV *, u_t *, DB_REPMGR_SITE **)); 99 #ide HAVE_REPLICATION_THREADS 100 __pmgr_t __P (( DB_ENV *, , u_t32_t )); 102 #ide HAVE_REPLICATION_THREADS 103 __pmgr__ __P (( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )); 105 #ide HAVE_REPLICATION_THREADS 106 __pmgr__t_ __P (( DB_ENV *, u_t32_t )); 108 #ide HAVE_REPLICATION_THREADS 109 __pmgr_hd_evt __P (( ENV *, u_t32_t , *)); 111 __pmgr_schedu_ci_m __P (( ENV *, u_t , )); 112 __pmgr_t_f_adg __P (( REPMGR_CONNECTION *)); 113 __pmgr_w_ci __P (( ENV *, REPMGR_CONNECTION **, sock_t , )); 114 __pmgr_w_se __P (( ENV *, REPMGR_SITE **, cڡ pmgr_Ïddr_t *, )); 115 __pmgr_nup_Ïddr __P (( ENV *, pmgr_Ïddr_t *)); 116 __pmgr_iovec_ __P (( REPMGR_IOVECS *)); 117 __pmgr_add_bufr __P (( REPMGR_IOVECS *, *, size_t )); 118 __pmgr_add_dbt __P (( REPMGR_IOVECS *, cڡ DBT *)); 119 __pmgr_upde_csumed __P (( REPMGR_IOVECS *, size_t )); 120 __pmgr_e_my_addr __P (( ENV *, DBT *)); 121 u_t __pmgr_g_nses __P (( DB_REP *)); 122 __pmgr_thad_u __P (( ENV *, )); 123 * __pmgr_fm_eid_loc __P (( DB_REP *, , *)); 124 * __pmgr_fm_se_loc __P (( REPMGR_SITE *, *)); 125 __pmgr_pt __P (( ENV *, u_t32_t )); 126 __pmgr_w_ __P (( ENV *)); 128 #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 (( ENV *, DBT *, *, u_t32_t , **, u_int32_t *)); 15 __db_txn_d __P (( DB_TXN *)); 16 __db_txn_tup __P (( 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 __dbv_timeout __P (()); 83 __dbr_p __P (( _y *)); 84 __dbd_p __P (( _y *)); 85 _y * w__t __P ((*)); 86 _y * g_b˒t __P (()); 87 _y * __dbv_shedb __P ((_y *, cڡ *, cڡ *, DBTYPE , u_t32_t )); 88 _y * __dbv_shnv __P ((_y *, home_y *, u_t32_t )); 89 __dbv_aive __P (( _y *)); 90 __db_o_t __P ((, u_t32_t )); 91 __dbc_o_t __P (( _y *)); 92 __v_o_t __P ((, u_t32_t , )); 93 home_y * g_fuhome __P ((*)); 95 #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 t_LogCfig __P (( T_Ip *, DB_ENV *, T_Obj *)); 70 t_LogGCfig __P (( T_Ip *, DB_ENV *, T_Obj *)); 71 _MpInfoDe __P (( T_Ip *, DBTCL_INFO *)); 72 t_MpSync __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 73 t_MpTrick __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 74 t_Mp __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 75 t_MpSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 76 t_RCfig __P (( T_Ip *, DB_ENV *, T_Obj *)); 77 t_RGTwo __P (( T_Ip *, DB_ENV *, )); 78 t_RGCfig __P (( T_Ip *, DB_ENV *, T_Obj *)); 79 t_RGTimeout __P (( T_Ip *, DB_ENV *, T_Obj *)); 80 t_RE __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 81 t_RFlush __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 82 t_RSync __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 83 t_RL __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 84 t_RLim __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 85 t_RReque __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 86 t_RNrchiveTimeout __P (( T_Ip *, DB_ENV *)); 87 t_RTnt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 88 t_RS __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 89 t_RProssMesge __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 90 t_RSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 91 t_RMgr __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 92 t_RMgrSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 93 q_Cmd __P (( ClDa , T_Ip *, , T_Obj * CONST *)); 94 _TxnInfoDe __P (( T_Ip *, DBTCL_INFO *)); 95 t_TxnCheckpot __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 96 t_Txn __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 97 t_CDSGroup __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 98 t_TxnSt __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 99 t_TxnTimeout __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *)); 100 t_TxnRecov __P (( T_Ip *, , T_Obj * CONST *, DB_ENV *, DBTCL_INFO *)); 101 bdb_RdCommd __P (( T_Ip *, , T_Obj * CONST *)); 103 #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 (( ENV *, DB_THREAD_INFO *, DB_TXN *, DB_TXN **, u_t32_t )); 11 __txn_xa_beg __P (( ENV *, DB_TXN *)); 12 __txn_cye_id __P (( ENV *)); 13 __txn_comn_beg __P (( ENV *, DB_TXN **)); 14 __txn_ctue __P (( 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 (( ENV *, u_t32_t , DB_TXN *)); 24 __txn_f_abt __P (( ENV *, u_t8_t *)); 25 __txn_eo __P (( ENV *)); 26 __txn_t __P (( ENV *)); 27 __txn_g_42_ad __P (( ENV *, *, __txn_g_42_gs **)); 28 __txn_g_ad __P (( ENV *, *, __txn_g_gs **)); 29 __txn_g_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_t32_t, t32_t , u_t32_t, cڡ DBT *)); 30 __txn_ckp_42_ad __P (( ENV *, *, __txn_ckp_42_gs **)); 31 __txn_ckp_ad __P (( ENV *, *, __txn_ckp_gs **)); 32 __txn_ckp_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , DB_LSN *, DB_LSN *, t32_t , u_int32_t, u_int32_t)); 33 __txn_chd_ad __P (( ENV *, *, __txn_chd_gs **)); 34 __txn_chd_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_int32_t, DB_LSN *)); 35 __txn_xa_g_ad __P (( ENV *, *, __txn_xa_g_gs **)); 36 __txn_xa_g_log __P (( 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 *)); 37 __txn_cye_ad __P (( ENV *, *, __txn_cye_gs **)); 38 __txn_cye_log __P (( ENV *, DB_TXN *, DB_LSN *, u_t32_t , u_int32_t, u_int32_t)); 39 __txn__cov __P (( ENV *, DB_DISTAB *)); 40 __txn_g_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 41 __txn_g_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 42 __txn_ckp_42_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 43 __txn_ckp_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 44 __txn_chd_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 45 __txn_xa_g_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 46 __txn_cye_t __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 47 __txn__t __P (( ENV *, DB_DISTAB *)); 48 __txn_checkpot_ __P (( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)); 49 __txn_checkpot __P (( ENV *, u_t32_t , u_int32_t, u_int32_t)); 50 __txn_gaive __P (( ENV *, DB_LSN *)); 51 __txn_gckp __P (( ENV *, DB_LSN *)); 52 __txn_updeckp __P (( ENV *, DB_LSN *)); 53 __txn_chk __P (( 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 (( ENV *, DBT *, DB_LSN *, db_cs , *)); 61 __txn_xa_g_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 62 __txn_ckp_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 63 __txn_chd_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 64 __txn_e_txn __P (( ENV *, DB_LSN *, __txn_xa_g_gs *)); 65 __txn_cye_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 66 __txn_g_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 67 __txn_ckp_42_cov __P (( ENV *, DBT *, DB_LSN *, db_cs , *)); 68 __txn_m_gid __P (( ENV *, u_t8_t *, TXN_DETAIL **, roff_t *)); 69 __txn_cov_ __P (( DB_ENV *, DB_PREPLIST *, , *, u_t32_t )); 70 __txn_cov __P (( ENV *, DB_PREPLIST *, , *, u_t32_t )); 71 __txn_g_ed __P (( ENV *, XID *, DB_PREPLIST *, , *, u_t32_t )); 72 __txn_ݒfes __P (( ENV *, DB_THREAD_INFO *, DB_LSN *, )); 73 __txn_ݒ __P (( ENV *, )); 74 __txn_fdϡckp __P (( ENV *, DB_LSN *, DB_LSN *)); 75 __txn_v_esh __P (( ENV *)); 76 u_t32_t __txn_gi_mux_cou __P (( ENV *)); 77 __txn_id_t __P (( ENV *, u_t32_t , u_int32_t)); 78 __txn_de_ad __P (( ENV *, DB_LSN *)); 79 __txn_add_bufr __P (( ENV *, TXN_DETAIL *)); 80 __txn_move_bufr __P (( 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 (( ENV *, u_t32_t )); 84 __txn_oevt __P (( ENV *, DB_TXN *, DB *)); 85 __txn_mevt __P (( ENV *, DB_TXN *, cڡ *, u_t8_t *, )); 86 __txn_mm __P (( ENV *, DB_TXN *, const *)); 87 __txn_lockevt __P (( ENV *, DB_TXN *, DB *, DB_LOCK *, DB_LOCKER *)); 88 __txn_mlock __P (( ENV *, DB_TXN *, DB_LOCK *, DB_LOCKER *)); 89 __txn_dvts __P (( ENV *, DB_TXN *, , )); 90 __txn_cd_ame __P (( ENV *, DB_TXN *, FNAME *)); 91 __txn_df_ame __P (( 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 (( ENV *, DB_TXN **, )); 10 __db_xa_ __P (( DB *)); 11 __db_rmid_to_v __P ((, ENV **)); 12 __db_xid_to_txn __P (( ENV *, XID *, roff_t *)); 13 __db_m_rmid __P ((, ENV *)); 14 __db_unm_rmid __P (()); 15 __db_m_xid __P (( ENV *, XID *, TXN_DETAIL *)); 16 __db_unm_xid __P (( 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 = `dbm_ݒ ( fe , O_CREAT | O_RDWR , DB_MODE_600 )! NULL ) 94 i(( __cur_db = `dbm_ݒ ( fe , O_RDONLY , 0)! NULL ) 97 } } 100 $__db_dbm_o () 102 i( __cur_db ! NULL ) { 103 `dbm_o ( __cur_db ); 104 __cur_db = NULL ; 107 } } 109 dum 110 $__db_dbm_tch ( key ) 111 dum key ; 113 dum em ; 115 i( __cur_db = NULL ) { 116 `__db_no_ݒ (); 117 em . dr = NULL ; 118 em . dsize = 0; 119 ( em ); 121 ( `dbm_tch ( __cur_db , key )); 122 } } 124 dum 125 $__db_dbm_fkey () 127 dum em ; 129 i( __cur_db = NULL ) { 130 `__db_no_ݒ (); 131 em . dr = NULL ; 132 em . dsize = 0; 133 ( em ); 135 ( `dbm_fkey ( __cur_db )); 136 } } 138 dum 139 $__db_dbm_xtkey ( key ) 140 dum key ; 142 dum em ; 144 `COMPQUIET ( key . dsize , 0); 146 i( __cur_db = NULL ) { 147 `__db_no_ݒ (); 148 em . dr = NULL ; 149 em . dsize = 0; 150 ( em ); 152 ( `dbm_xtkey ( __cur_db )); 153 } } 156 $__db_dbm_de ( key ) 157 dum key ; 159 i( __cur_db = NULL ) { 160 `__db_no_ݒ (); 163 ( `dbm_de ( __cur_db , key )); 164 } } 167 $__db_dbm_e ( key , d ) 168 dum key , d ; 170 i( __cur_db = NULL ) { 171 `__db_no_ݒ (); 174 ( `dbm_e ( __cur_db , key , d , DBM_REPLACE )); 175 } } 178 $__db_no_ݒ () 180 () `rtf ( dr , "dbm:o open database.\n"); 181 } } 193 DBM * 194 $__db_ndbm_ݒ ( fe , oags , mode ) 195 cڡ * fe ; 196 oags , mode ; 198 DB * dbp ; 199 DBC * dbc ; 200 t ; 201 th [ DB_MAXPATHLEN ]; 209 i( ` ( fe + sn( DBM_SUFFIX + 1 > ( th )) { 210 `__os_t_o ( ENAMETOOLONG ); 211 ( NULL ); 213 () `ry ( th , fe ); 214 () `rt ( th , DBM_SUFFIX ); 215 i(( t = `db_ (& dbp , NULL , 0)) != 0) { 216 `__os_t_o ( t ); 217 ( NULL ); 224 i( oags & O_WRONLY ) { 225 oags &~ O_WRONLY ; 226 oags | O_RDWR ; 229 i(( t = dbp -> `t_gesize (dbp, 4096)) != 0 || 230 ( t = dbp -> `t_h_f (dbp, 40)) != 0 || 231 ( t = dbp -> `t_h_m (dbp, 1)) != 0 || 232 ( t = dbp -> `ݒ (dbp, NULL , 233 th , NULL , DB_HASH , `__db_ݒags ( oags ), mode )) != 0) { 234 `__os_t_o ( t ); 235 ( NULL ); 238 i(( t = dbp -> `curs (dbp, NULL , & dbc , 0)) != 0) { 239 () dbp -> `o (dbp, 0); 240 `__os_t_o ( t ); 241 ( NULL ); 244 (( DBM *) dbc ); 245 } } 252 $__db_ndbm_o ( dbm ) 253 DBM * dbm ; 255 DBC * dbc ; 257 dbc = ( DBC *) dbm ; 259 () dbc -> dbp -> `o (dbc->dbp, 0); 260 } } 267 dum 268 $__db_ndbm_tch ( dbm , key ) 269 DBM * dbm ; 270 dum key ; 272 DBC * dbc ; 273 DBT _key , _da ; 274 dum da ; 275 t ; 277 dbc = ( DBC *) dbm ; 279 `DB_INIT_DBT ( _key , key . dr , key. dsize ); 280 `memt (& _da , 0, ( DBT )); 287 i(( t = dbc -> dbp -> `g (dbc->dbp, NULL , & _key , & _da , 0)) == 0) { 288 da . dr = _da .data; 289 da . dsize = () _da . size ; 291 da . dr = NULL ; 292 da . dsize = 0; 293 i( t = DB_NOTFOUND ) 294 `__os_t_o ( ENOENT ); 296 `__os_t_o ( t ); 297 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 300 ( da ); 301 } } 308 dum 309 $__db_ndbm_fkey ( dbm ) 310 DBM * dbm ; 312 DBC * dbc ; 313 DBT _key , _da ; 314 dum key ; 315 t ; 317 dbc = ( DBC *) dbm ; 319 `memt (& _key , 0, ( DBT )); 320 `memt (& _da , 0, ( DBT )); 322 i(( t = dbc -> `g (dbc, & _key , & _da , DB_FIRST )) == 0) { 323 key . dr = _key . da ; 324 key . dsize = () _key . size ; 326 key . dr = NULL ; 327 key . dsize = 0; 328 i( t = DB_NOTFOUND ) 329 `__os_t_o ( ENOENT ); 331 `__os_t_o ( t ); 332 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 335 ( key ); 336 } } 343 dum 344 $__db_ndbm_xtkey ( dbm ) 345 DBM * dbm ; 347 DBC * dbc ; 348 DBT _key , _da ; 349 dum key ; 350 t ; 352 dbc = ( DBC *) dbm ; 354 `memt (& _key , 0, ( DBT )); 355 `memt (& _da , 0, ( DBT )); 357 i(( t = dbc -> `g (dbc, & _key , & _da , DB_NEXT )) == 0) { 358 key . dr = _key . da ; 359 key . dsize = () _key . size ; 361 key . dr = NULL ; 362 key . dsize = 0; 363 i( t = DB_NOTFOUND ) 364 `__os_t_o ( ENOENT ); 366 `__os_t_o ( t ); 367 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 370 ( key ); 371 } } 379 $__db_ndbm_de ( dbm , key ) 380 DBM * dbm ; 381 dum key ; 383 DBC * dbc ; 384 DBT _key ; 385 t ; 387 dbc = ( DBC *) dbm ; 389 `DB_INIT_DBT ( _key , key . dr , key. dsize ); 391 i(( t = dbc -> dbp -> `d (dbc->dbp, NULL , & _key , 0)) == 0) 394 i( t = DB_NOTFOUND ) 395 `__os_t_o ( ENOENT ); 397 `__os_t_o ( t ); 398 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 401 } } 410 $__db_ndbm_e ( dbm , key , da , ags ) 411 DBM * dbm ; 412 dum key , da ; 413 ags ; 415 DBC * dbc ; 416 DBT _key , _da ; 417 t ; 419 dbc = ( DBC *) dbm ; 421 `DB_INIT_DBT ( _key , key . dr , key. dsize ); 422 `DB_INIT_DBT ( _da , da . dr , da. dsize ); 424 i(( t = dbc -> dbp -> `put (dbc->dbp, NULL , 425 & _key , & _da , ags = DBM_INSERT ? DB_NOOVERWRITE : 0)) == 0) 428 i( t = DB_KEYEXIST ) 431 `__os_t_o ( t ); 432 `F_SET ( dbc -> dbp , DB_AM_DBM_ERROR ); 434 } } 437 $__db_ndbm_r ( dbm ) 438 DBM * dbm ; 440 DBC * dbc ; 442 dbc = ( DBC *) dbm ; 444 ( `F_ISSET ( dbc -> dbp , DB_AM_DBM_ERROR )); 445 } } 448 $__db_ndbm_ ( dbm ) 449 DBM * dbm ; 451 DBC * dbc ; 453 dbc = ( DBC *) dbm ; 455 `F_CLR ( dbc -> dbp , DB_AM_DBM_ERROR ); 457 } } 465 $__db_ndbm_rdly ( dbm ) 466 DBM * dbm ; 468 DBC * dbc ; 470 dbc = ( DBC *) dbm ; 472 ( `F_ISSET ( dbc -> dbp , DB_AM_RDONLY ) ? 1 : 0); 473 } } 482 $__db_ndbm_do ( dbm ) 483 DBM * dbm ; 485 ( `dbm_go ( dbm )); 486 } } 489 $__db_ndbm_go ( dbm ) 490 DBM * dbm ; 492 DBC * dbc ; 493 fd ; 495 dbc = ( DBC *) dbm ; 497 () dbc -> dbp -> `fd (dbc->dbp, & fd ); 498 ( fd ); 499 } } @../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 (( ENV *, t32_t )); 18 __dbg_p_id __P (( ENV *, t32_t *)); 19 __dbg_uck_id __P (( ENV *, t32_t )); 89 $__dbg_tup ( dbp , ame , dme , _txnid ) 90 DB * dbp ; 91 cڡ * ame , * dme ; 92 u_t32_t _txnid ; 94 DB_LOG * db ; 95 ENV * v ; 96 FNAME * p ; 97 REGINFO * f ; 98 t ; 99 size_t n ; 100 * p ; 102 v = dbp ->env; 103 db = v -> lg_hd ; 104 f = & db -> gfo ; 106 p = NULL ; 107 p = NULL ; 110 `LOG_SYSTEM_LOCK ( v ); 111 i(( t = `__v_loc ( f , ( FNAME ), & p )) != 0) 112 r ; 113 `memt ( p , 0, ( FNAME )); 114 i( ame = NULL ) 115 p -> ame_off = INVALID_ROFF ; 117 n = ` ( ame ) + 1; 118 i(( t = `__v_loc ( f , n , & p )) != 0) 119 r ; 120 p -> ame_off = `R_OFFSET ( f , p ); 121 `memy ( p , ame , n ); 123 i( dme = NULL ) 124 p -> dme_off = INVALID_ROFF ; 126 n = ` ( dme ) + 1; 127 i(( t = `__v_loc ( f , n , & p )) != 0) 128 r ; 129 p -> dme_off = `R_OFFSET ( f , p ); 130 `memy ( p , dme , n ); 132 `LOG_SYSTEM_UNLOCK ( v ); 138 p -> id = f-> d_id = DB_LOGFILEID_INVALID ; 139 p -> s_ty = dbp -> ty ; 140 `memy ( p -> ufid , dbp -> feid , DB_FILE_ID_LEN ); 141 p -> ma_pgno = dbp ->meta_pgno; 142 p -> _txnid = create_txnid; 143 dbp -> dbv -> `thad_id (dbp->dbv, & p -> pid , NULL ); 145 i( `F_ISSET ( dbp , DB_AM_INMEM )) 146 `F_SET ( p , DB_FNAME_INMEM ); 147 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 148 `F_SET ( p , DB_FNAME_RECOVER ); 149 p -> txn_f = 1; 150 p -> mux = dbp ->mutex; 152 dbp -> log_fame = p ; 156 r : `LOG_SYSTEM_UNLOCK ( v ); 157 i( t = ENOMEM ) 158 `__db_rx ( v , 161 ( t ); 162 } } 172 $__dbg_down ( dbp ) 173 DB * dbp ; 175 t ; 181 i( dbp -> log_fame = NULL ) 184 t = `__dbg_down_t ( dbp -> v , dbp-> log_fame ); 187 dbp -> log_fame = NULL ; 188 dbp -> mux = MUTEX_INVALID ; 190 ( t ); 191 } } 200 $__dbg_down_t ( v , p ) 201 ENV * v ; 202 FNAME * p ; 204 DB_LOG * db ; 205 REGINFO * f ; 206 t ; 208 i( `F_ISSET ( p , DB_FNAME_NOTLOGGED )) 210 db = v -> lg_hd ; 211 f = & db -> gfo ; 213 `DB_ASSERT ( v , p -> id = DB_LOGFILEID_INVALID ); 214 t = `__mux_ ( v , & p -> mux ); 216 `LOG_SYSTEM_LOCK ( v ); 217 i( p -> ame_off ! INVALID_ROFF ) 218 `__v_loc_ ( f , `R_ADDR (f, p -> ame_off )); 219 i( p -> dme_off ! INVALID_ROFF ) 220 `__v_loc_ ( f , `R_ADDR (f, p -> dme_off )); 221 `__v_loc_ ( f , p ); 222 `LOG_SYSTEM_UNLOCK ( v ); 224 ( t ); 225 } } 236 $__dbg_w_id ( dbp , txn ) 237 DB * dbp ; 238 DB_TXN * txn ; 240 DB_LOG * db ; 241 ENV * v ; 242 FNAME * p ; 243 LOG * ; 244 t32_t id ; 245 t ; 247 v = dbp ->env; 248 db = v -> lg_hd ; 249 = db -> gfo . imy ; 250 p = dbp -> log_fame ; 253 `MUTEX_LOCK ( v , -> mtx_fi ); 254 i( p -> id ! DB_LOGFILEID_INVALID ) { 255 `MUTEX_UNLOCK ( v , -> mtx_fi ); 258 i(( t = `__dbg_g_id ( dbp , txn , & id )) == 0) 259 p -> id = id; 260 `MUTEX_UNLOCK ( v , -> mtx_fi ); 261 ( t ); 262 } } 273 $__dbg_g_id ( dbp , txn , idp ) 274 DB * dbp ; 275 DB_TXN * txn ; 276 t32_t * idp ; 278 DB_LOG * db ; 279 ENV * v ; 280 FNAME * p ; 281 LOG * ; 282 t32_t id ; 283 t ; 285 v = dbp ->env; 286 db = v -> lg_hd ; 287 = db -> gfo . imy ; 288 p = dbp -> log_fame ; 296 i(( t = `__dbg_p_id ( v , & id )) != 0) 297 r ; 300 i( id = DB_LOGFILEID_INVALID ) 301 id = -> fid_max ++; 304 i(! `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) 305 `F_SET ( p , DB_FNAME_DURABLE ); 308 `SH_TAILQ_INSERT_HEAD (& -> fq , p , q , __ame ); 314 `DB_ASSERT ( v , ! `F_ISSET ( dbp , DB_AM_RECOVER )); 316 i(( t = `__dbg_log_id ( dbp , txn , id , 0)) != 0) 317 r ; 324 p -> _txnid = TXN_INVALID ; 326 `DB_ASSERT ( v , dbp -> ty = p -> s_ty ); 327 `DB_ASSERT ( v , dbp -> ma_pgno = p ->meta_pgno); 329 i(( t = `__dbg_add_dby ( v , db , dbp , id )) != 0) 330 r ; 336 r : 337 i( t !0 && id ! DB_LOGFILEID_INVALID ) { 338 () `__dbg_voke_id ( dbp , 1, id ); 339 id = DB_LOGFILEID_INVALID ; 341 * idp = id ; 342 ( t ); 343 } } 352 $__dbg_assign_id ( dbp , id ) 353 DB * dbp ; 354 t32_t id ; 356 DB * o_dbp ; 357 DB_LOG * db ; 358 ENV * v ; 359 FNAME * o_p , * p ; 360 LOG * ; 361 t ; 363 v = dbp ->env; 364 db = v -> lg_hd ; 365 = db -> gfo . imy ; 366 p = dbp -> log_fame ; 368 o_dbp = NULL ; 369 o_p = NULL ; 372 `MUTEX_LOCK ( v , -> mtx_fi ); 375 `DB_ASSERT ( v , p -> id = DB_LOGFILEID_INVALID ); 382 i( `__dbg_id_to_ame ( db , id , 1, & o_p ) == 0) { 394 t = `__dbg_id_to_db ( v , NULL , & o_dbp , id , 0); 395 i( t = ENOENT ) { 396 t = 0; 397 ct ; 398 } i( t != 0) 399 r ; 401 i(( t = `__dbg_voke_id ( o_dbp , 1, 402 DB_LOGFILEID_INVALID )) != 0) 403 r ; 410 ct : i(( t = `__dbg_uck_id ( v , id )) != 0) 411 r ; 412 i( id > -> fid_max ) 413 -> fid_max = id + 1; 416 p -> id = id; 418 i(! `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) 419 `F_SET ( p , DB_FNAME_DURABLE ); 420 `SH_TAILQ_INSERT_HEAD (& -> fq , p , q , __ame ); 427 i(( t = `__dbg_add_dby ( v , db , dbp , id )) != 0) 428 () `__dbg_voke_id ( dbp , 1, id ); 430 r : `MUTEX_UNLOCK ( v , -> mtx_fi ); 433 i( o_dbp ! NULL ) 434 () `__db_o ( o_dbp , NULL , DB_NOSYNC ); 436 ( t ); 437 } } 447 $__dbg_voke_id ( dbp , have_lock , f_id ) 448 DB * dbp ; 449 have_lock ; 450 t32_t f_id ; 452 DB_REP * db_p ; 453 ENV * v ; 454 push ; 456 v = dbp ->env; 465 db_p = v -> p_hd ; 466 push = (! `F_ISSET ( dbp , DB_AM_RECOVER || `IS_RECOVERING ( v )) && 467 (! `REP_ON ( v || (( REP *) db_p -> gi )-> g = dbp -> fid_g ); 469 ( `__dbg_voke_id_t ( dbp -> v , 470 dbp -> log_fame , have_lock , push , f_id )); 471 } } 481 $__dbg_voke_id_t ( v , p , have_lock , push , f_id ) 482 ENV * v ; 483 FNAME * p ; 484 have_lock , push ; 485 t32_t f_id ; 487 DB_LOG * db ; 488 LOG * ; 489 t32_t id ; 490 t ; 492 db = v -> lg_hd ; 493 = db -> gfo . imy ; 494 t = 0; 497 i( p = NULL ) 505 i( f_id ! DB_LOGFILEID_INVALID ) 506 id = f_id ; 507 i( p -> id = DB_LOGFILEID_INVALID ) { 508 i( p -> d_id = DB_LOGFILEID_INVALID ) 510 id = p -> d_id ; 512 id = p ->id; 513 i(! have_lock ) 514 `MUTEX_LOCK ( v , -> mtx_fi ); 516 p -> id = DB_LOGFILEID_INVALID ; 517 p -> d_id = DB_LOGFILEID_INVALID ; 520 `SH_TAILQ_REMOVE (& -> fq , p , q , __ame ); 528 i(! `F_ISSET ( p , DB_FNAME_CLOSED ) && 529 ( t = `__dbg_m_dby ( db , id )=0 && push ) 530 t = `__dbg_push_id ( v , id ); 532 i(! have_lock ) 533 `MUTEX_UNLOCK ( v , -> mtx_fi ); 534 ( t ); 535 } } 545 $__dbg_o_id ( dbp , txn , ) 546 DB * dbp ; 547 DB_TXN * txn ; 548 u_t32_t ; 550 DB_LOG * db ; 551 ENV * v ; 552 FNAME * p ; 553 LOG * ; 554 t , t_t ; 556 v = dbp ->env; 557 db = v -> lg_hd ; 558 = db -> gfo . imy ; 559 p = dbp -> log_fame ; 562 i( p = NULL ) 565 i( p -> id = DB_LOGFILEID_INVALID ) { 566 t = `__dbg_voke_id ( dbp , 0, DB_LOGFILEID_INVALID ); 567 de ; 576 t = 0; 577 `DB_ASSERT ( v , p -> txn_f > 0); 578 i( p -> txn_f > 1) { 579 `MUTEX_LOCK ( v , dbp -> mux ); 580 i( p -> txn_f > 1) { 581 i(! `F_ISSET ( p , DB_FNAME_CLOSED ) && 582 ( t_t = `__dbg_m_dby ( 583 v -> lg_hd , p -> id )!0 && t == 0) 584 t = t_t ; 592 `F_SET ( p , DB_FNAME_CLOSED ); 593 p -> txn_f --; 594 `MUTEX_UNLOCK ( v , dbp -> mux ); 596 dbp -> mux = MUTEX_INVALID ; 597 dbp -> log_fame = NULL ; 598 no_log ; 601 `MUTEX_LOCK ( v , -> mtx_fi ); 603 i(( t = `__dbg_log_o ( v , p , txn , )) != 0) 604 r ; 605 t = `__dbg_voke_id ( dbp , 1, DB_LOGFILEID_INVALID ); 607 r : `MUTEX_UNLOCK ( v , -> mtx_fi ); 609 de : i(( t_t = `__dbg_down ( dbp )!0 && t == 0) 610 t = t_t ; 611 no_log : 612 ( t ); 613 } } 622 $__dbg_o_id_t ( v , p , , locked ) 623 ENV * v ; 624 FNAME * p ; 625 u_t32_t ; 626 locked ; 628 DB_LOG * db ; 629 LOG * ; 630 t , t_t ; 632 `DB_ASSERT ( v , p -> txn_f == 1); 633 db = v -> lg_hd ; 634 = db -> gfo . imy ; 636 i( p -> id = DB_LOGFILEID_INVALID ) 637 ( `__dbg_voke_id_t ( v , 638 p , locked , 1, DB_LOGFILEID_INVALID )); 640 i( `F_ISSET ( p , DB_FNAME_RECOVER )) 641 ( `__dbg_o_fe ( v , p )); 646 i(! locked ) 647 `MUTEX_LOCK ( v , -> mtx_fi ); 648 i(( t = `__dbg_log_o ( v , p , NULL , )) != 0) 649 r ; 651 t = `__dbg_voke_id_t ( v , p , 1, 1, DB_LOGFILEID_INVALID ); 653 r : i(! locked ) 654 `MUTEX_UNLOCK ( v , -> mtx_fi ); 656 i(( t_t = `__dbg_down_t ( v , p )!0 && t == 0) 657 t = t_t ; 658 ( t ); 659 } } 671 $__dbg_chk ( v ) 672 ENV * v ; 674 DB_ENV * dbv ; 675 DB_LOG * db ; 676 FNAME * p , * p ; 677 LOG * ; 678 t , t_t ; 679 buf [ DB_THREADID_STRLEN ]; 681 i(( db = v -> lg_hd = NULL ) 684 = db -> gfo . imy ; 685 dbv = v ->dbenv; 686 t = 0; 688 `MUTEX_LOCK ( v , -> mtx_fi ); 689 p = `SH_TAILQ_FIRST (& -> fq , __ame ); f ! NULL ; f = p ) { 690 p = `SH_TAILQ_NEXT ( p , q , __ame ); 691 i( dbv -> `is_ive (dbv, p -> pid , 0, DB_MUTEX_PROCESS_ONLY )) 693 `MUTEX_LOCK ( v , p -> mux ); 694 `__db_msg ( v , 696 dbv -> `thad_id_rg (dbv, p -> pid , 0, buf ), 697 ( u_lg ) p -> txn_f ); 698 i( p -> txn_f > 1 || `F_ISSET (p, DB_FNAME_CLOSED )) { 699 i(! `F_ISSET ( p , DB_FNAME_CLOSED )) { 700 p -> txn_f --; 701 `F_SET ( p , DB_FNAME_CLOSED ); 703 `MUTEX_UNLOCK ( v , p -> mux ); 704 p -> mux = MUTEX_INVALID ; 705 p -> pid = 0; 707 `F_SET ( p , DB_FNAME_CLOSED ); 708 i(( t_t = `__dbg_o_id_t ( v , 709 p , DBREG_CLOSE , 1)&& t == 0) 710 t = t_t ; 714 `MUTEX_UNLOCK ( v , -> mtx_fi ); 715 ( t ); 716 } } 730 $__dbg_log_o ( v , p , txn , ) 731 ENV * v ; 732 FNAME * p ; 733 DB_TXN * txn ; 734 u_t32_t ; 736 DBT fid_dbt , r_me , * db ; 737 DB_LOG * db ; 738 DB_LSN r_unud ; 739 t ; 741 db = v -> lg_hd ; 742 t = 0; 744 i( p -> ame_off = INVALID_ROFF ) 745 db = NULL ; 747 `memt (& r_me , 0, (r_name)); 748 r_me . da = `R_ADDR (& db -> gfo , p -> ame_off ); 749 r_me . size = ( u_t32_t ) ` ((*_me. da ) + 1; 750 db = & r_me ; 752 `memt (& fid_dbt , 0, (fid_dbt)); 753 fid_dbt . da = p -> ufid ; 754 fid_dbt . size = DB_FILE_ID_LEN ; 755 i(( t = `__dbg_gi_log ( v , txn , & r_unud , 756 `F_ISSET ( p , DB_FNAME_DURABLE ? 0 : DB_LOG_NOT_DURABLE , 757 , db , & fid_dbt , p -> id , 758 p -> s_ty , f-> ma_pgno , TXN_INVALID )) != 0) { 769 `F_SET ( p , DB_FNAME_NOTLOGGED ); 770 () `__dbg_m_dby ( db , p -> id ); 772 ( t ); 773 } } 786 $__dbg_push_id ( v , id ) 787 ENV * v ; 788 t32_t id ; 790 DB_LOG * db ; 791 LOG * ; 792 REGINFO * f ; 793 t32_t * ack , * wack ; 794 t ; 796 db = v -> lg_hd ; 797 f = & db -> gfo ; 798 = f -> imy ; 800 i( id = -> fid_max - 1) { 801 -> fid_max --; 806 i( -> _fid_ack = INVALID_ROFF || 807 -> _fids_lod <-> _fids + 1) { 808 `LOG_SYSTEM_LOCK ( v ); 809 i(( t = `__v_loc ( f , 810 ( -> _fids_lod + 20* ( u_t32_t ), 811 & wack )) != 0) { 812 `LOG_SYSTEM_UNLOCK ( v ); 813 ( t ); 816 i( -> _fid_ack ! INVALID_ROFF ) { 817 ack = `R_ADDR ( f , -> _fid_ack ); 818 `memy ( wack , ack , 819 -> _fids_lod * ( u_t32_t )); 820 `__v_loc_ ( f , ack ); 822 -> _fid_ack = `R_OFFSET ( f , wack ); 823 -> _fids_lod += 20; 824 `LOG_SYSTEM_UNLOCK ( v ); 827 ack = `R_ADDR ( f , -> _fid_ack ); 828 ack [ -> _fids ++] = id ; 830 } } 833 $__dbg_p_id ( v , id ) 834 ENV * v ; 835 t32_t * id ; 837 DB_LOG * db ; 838 LOG * ; 839 t32_t * ack ; 841 db = v -> lg_hd ; 842 = db -> gfo . imy ; 845 i( -> _fid_ack ! INVALID_ROFF &&p-> _fids > 0) { 846 ack = `R_ADDR (& db -> gfo , -> _fid_ack ); 847 * id = ack [-- -> _fids ]; 849 * id = DB_LOGFILEID_INVALID ; 852 } } 864 $__dbg_uck_id ( v , id ) 865 ENV * v ; 866 t32_t id ; 868 DB_LOG * db ; 869 LOG * ; 870 t32_t * ack ; 871 u_t i ; 873 db = v -> lg_hd ; 874 = db -> gfo . imy ; 876 i( id > -> fid_max ) 880 i( -> _fid_ack ! INVALID_ROFF ) { 881 ack = `R_ADDR (& db -> gfo , -> _fid_ack ); 882 i = 0; i < -> _fids ; i++) 883 i( id = ack [ i ]) { 889 ack [ i ] = sck[ -> _fids - 1]; 890 -> _fids --; 896 } } 911 $__dbg_log_id ( dbp , txn , id , edlock ) 912 DB * dbp ; 913 DB_TXN * txn ; 914 t32_t id ; 915 edlock ; 917 DBT fid_dbt , r_me ; 918 DB_LOG * db ; 919 DB_LSN unud ; 920 ENV * v ; 921 FNAME * p ; 922 LOG * ; 923 u_t32_t ; 924 t ; 926 v = dbp ->env; 927 db = v -> lg_hd ; 928 = db -> gfo . imy ; 929 p = dbp -> log_fame ; 932 i( p -> s_ty = DB_UNKNOWN ) { 933 `memy ( p -> ufid , dbp -> feid , DB_FILE_ID_LEN ); 934 p -> s_ty = dbp -> ty ; 941 `memt (& fid_dbt , 0, (fid_dbt)); 942 `memt (& r_me , 0, (r_name)); 944 i( edlock ) 945 `MUTEX_LOCK ( v , -> mtx_fi ); 947 i( p -> ame_off ! INVALID_ROFF ) { 948 r_me . da = `R_ADDR (& db -> gfo , p -> ame_off ); 949 r_me . size = ( u_t32_t ) ` ((*_me. da ) + 1; 952 fid_dbt . da = dbp -> feid ; 953 fid_dbt . size = DB_FILE_ID_LEN ; 955 = ! `F_ISSET ( dbp , DB_AM_OPEN_CALLED ? DBREG_PREOPEN : 956 ( `F_ISSET ( dbp , DB_AM_INMEM ? DBREG_REOPEN : DBREG_OPEN ); 957 t = `__dbg_gi_log ( v , txn , & unud , 958 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0, 959 , r_me . size =0 ? NULL : &r_me, & fid_dbt , id , 960 p -> s_ty , f-> ma_pgno , f-> _txnid ); 962 i( edlock ) 963 `MUTEX_UNLOCK ( v , -> mtx_fi ); 965 ( t ); 966 } } @../dbreg/dbreg_auto.c 3 ~"db_cfig.h " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_dich.h " 8 ~"dbc/db_am.h " 9 ~"dbc/log.h " 10 ~"dbc/txn.h " 17 $__dbg_gi_ad ( v , cbuf , g ) 18 ENV * v ; 19 * cbuf ; 20 __dbg_gi_gs ** g ; 22 __dbg_gi_gs * gp ; 23 u_t32_t ump ; 24 u_t8_t * bp ; 25 t ; 27 i(( t = `__os_mloc ( v , 28 ( __dbg_gi_gs + ( DB_TXN ), & gp )) != 0) 29 ( t ); 30 bp = cbuf ; 31 gp -> tx = ( DB_TXN *)&argp[1]; 32 `memt ( gp -> tx , 0, ( DB_TXN )); 34 `LOGCOPY_32 ( v , & gp -> ty , bp ); 35 bp +( gp -> ty ); 37 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 38 bp +( gp -> tx -> txnid ); 40 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 41 bp +( DB_LSN ); 43 `LOGCOPY_32 ( v , & gp -> code , bp ); 44 bp +( gp -> code ); 46 `memt (& gp -> me , 0, (argp->name)); 47 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 48 bp +( u_t32_t ); 49 gp -> me . da = bp ; 50 bp + gp -> me . size ; 52 `memt (& gp -> uid , 0, (argp->uid)); 53 `LOGCOPY_32 ( v ,& gp -> uid . size , bp ); 54 bp +( u_t32_t ); 55 gp -> uid . da = bp ; 56 bp + gp -> uid . size ; 58 `LOGCOPY_32 ( v , & ump , bp ); 59 gp -> feid = ( t32_t ) ump ; 60 bp +( ump ); 62 `LOGCOPY_32 ( v , & ump , bp ); 63 gp -> y = ( DBTYPE ) ump ; 64 bp +( ump ); 66 `LOGCOPY_32 ( v , & ump , bp ); 67 gp -> ma_pgno = ( db_pgno_t ) ump ; 68 bp +( ump ); 70 `LOGCOPY_32 ( v , & gp -> id , bp ); 71 bp +( gp -> id ); 73 * g = gp ; 74 ( t ); 75 } } 83 $__dbg_gi_log ( v , tx , t_lp , ags , 84 code , me , uid , feid , y , ma_pgno , 85 id ) 86 ENV * v ; 87 DB_TXN * tx ; 88 DB_LSN * t_lp ; 89 u_t32_t ags ; 90 u_t32_t code ; 91 cڡ DBT * me ; 92 cڡ DBT * uid ; 93 t32_t feid ; 94 DBTYPE y ; 95 db_pgno_t ma_pgno ; 96 u_t32_t id ; 98 DBT logc ; 99 DB_LSN * lp , nu_l , * p ; 100 DB_TXNLOGREC * ; 101 u_t32_t zo , ump , y , txn_num ; 102 u_t ad ; 103 u_t8_t * bp ; 104 is_dub , t ; 106 `COMPQUIET ( , NULL ); 108 p = t_lp ; 109 y = DB___dbg_gi ; 110 ad = 0; 111 t = 0; 113 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 114 i( tx = NULL ) 116 i( tx = NULL ) 118 is_dub = 0; 120 is_dub = 1; 122 i( tx = NULL ) { 123 txn_num = 0; 124 lp = & nu_l ; 125 nu_l . fe =u_l. offt = 0; 127 i( `TAILQ_FIRST (& tx -> kids ! NULL && 128 ( t = `__txn_aivekids ( v , y , tx )) != 0) 129 ( t ); 136 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 137 txn_num = tx -> txnid ; 140 logc . size = ( y + ( txn_num + ( DB_LSN ) 141 + ( u_t32_t ) 142 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 143 + ( u_t32_t + ( uid = NULL ? 0 : uid-> size ) 144 + ( u_t32_t ) 145 + ( u_t32_t ) 146 + ( u_t32_t ) 147 + ( u_t32_t ); 148 i( `CRYPTO_ON ( v )) { 149 ad = v -> yo_hd -> `adj_size ( logc . size ); 150 logc . size + ad ; 153 i( is_dub || tx = NULL ) { 154 i(( t = 155 `__os_mloc ( v , logc . size , &logc. da )) != 0) 156 ( t ); 158 i(( t = `__os_mloc ( v , 159 logc . size + ( DB_TXNLOGREC ), & )) != 0) 160 ( t ); 161 #ifde DIAGNOSTIC 162 i(( t = 163 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 164 `__os_ ( v , ); 165 ( t ); 168 logc . da = ->data; 171 i( ad > 0) 172 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 174 bp = logc . da ; 176 `LOGCOPY_32 ( v , bp , & y ); 177 bp +( y ); 179 `LOGCOPY_32 ( v , bp , & txn_num ); 180 bp +( txn_num ); 182 `LOGCOPY_FROMLSN ( v , bp , lp ); 183 bp +( DB_LSN ); 185 `LOGCOPY_32 ( v , bp , & code ); 186 bp +( code ); 188 i( me = NULL ) { 189 zo = 0; 190 `LOGCOPY_32 ( v , bp , & zo ); 191 bp +( u_t32_t ); 193 `LOGCOPY_32 ( v , bp , & me -> size ); 194 bp +( me -> size ); 195 `memy ( bp , me -> da ,ame-> size ); 196 bp + me -> size ; 199 i( uid = NULL ) { 200 zo = 0; 201 `LOGCOPY_32 ( v , bp , & zo ); 202 bp +( u_t32_t ); 204 `LOGCOPY_32 ( v , bp , & uid -> size ); 205 bp +( uid -> size ); 206 `memy ( bp , uid -> da , uid-> size ); 207 bp + uid -> size ; 210 ump = ( u_t32_t ) feid ; 211 `LOGCOPY_32 ( v , bp , & ump ); 212 bp +( ump ); 214 ump = ( u_t32_t ) y ; 215 `LOGCOPY_32 ( v , bp , & ump ); 216 bp +( ump ); 218 ump = ( u_t32_t ) ma_pgno ; 219 `LOGCOPY_32 ( v , bp , & ump ); 220 bp +( ump ); 222 `LOGCOPY_32 ( v , bp , & id ); 223 bp +( id ); 225 `DB_ASSERT ( v , 226 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 228 i( is_dub || tx = NULL ) { 229 i(( t = `__log_put ( v , p ,( DBT *)& logc , 230 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 231 * lp = * p ; 232 i( p ! t_lp ) 233 * t_lp = * p ; 236 t = 0; 237 #ifde DIAGNOSTIC 242 `memy ( -> da , logc .da,ogc. size ); 243 y | DB_debug_FLAG ; 244 `LOGCOPY_32 ( v , logc . da , & y ); 246 i(! `IS_REP_CLIENT ( v )) 247 t = `__log_put ( v , 248 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 250 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 251 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 252 `LSN_NOT_LOGGED (* t_lp ); 255 #ifde LOG_DIAGNOSTIC 256 i( t != 0) 257 () `__dbg_gi_t ( v , 258 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 261 #ifde DIAGNOSTIC 262 `__os_ ( v , logc . da ); 264 i( is_dub || tx = NULL ) 265 `__os_ ( v , logc . da ); 267 ( t ); 268 } } 274 $__dbg__cov ( v , dbp ) 275 ENV * v ; 276 DB_DISTAB * dbp ; 278 t ; 280 i(( t = `__db_add_covy_t ( v , dbp , 281 __dbg_gi_cov , DB___dbg_gi )) != 0) 282 ( t ); 284 } } @../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 ( v , db , lp , nud2 , nud3 ) 19 ENV * v ; 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 ( v , 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_ ( v , gp ); 62 } } 68 $__dbg__t ( v , dbp ) 69 ENV * v ; 70 DB_DISTAB * dbp ; 72 t ; 74 i(( t = `__db_add_covy_t ( v , dbp , 75 __dbg_gi_t , DB___dbg_gi )) != 0) 76 ( t ); 78 } } @../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 (( ENV *, 46 DB_TXN *, __dbg_gi_gs *, *)); 53 $__dbg_gi_cov ( v , db , lp , , fo ) 54 ENV * v ; 55 DBT * db ; 56 DB_LSN * lp ; 57 db_cs ; 58 * fo ; 60 __dbg_gi_gs * gp ; 61 DB_ENTRY * dbe ; 62 DB_LOG * db ; 63 DB * dbp ; 64 u_t32_t us ; 65 do_o , do_ݒ , do_m , t , t_t ; 67 db = v -> 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 ( v , 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 ( v , "__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 ( v , 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 ( v , 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 ( v , 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 ( v , 210 ( u_lg ) lp -> fe , 211 ( u_lg ) lp -> offt ); 213 `MUTEX_UNLOCK ( v , 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 ( v , db -> mtx_dbg ); 232 } i( dbe -> ded ) { 233 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 234 i(( t = `__dbg_m_dby ( 235 db , gp -> feid )) != 0) 236 out ; 239 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 258 i( do_m && dbp ! NULL ) { 259 i( gp -> id ! TXN_INVALID ) { 260 i(( t = `__db_txi_fd ( v , 261 fo , gp -> tx -> txnid , & us )) 262 ! DB_NOTFOUND && t != 0) 263 out ; 264 i( t = DB_NOTFOUND || us ! TXN_COMMIT ) 265 `F_SET ( dbp , DB_AM_DISCARD ); 266 t = 0; 269 i( = DB_TXN_ABORT ) { 270 i(( t_t = `__db_esh ( dbp , 271 NULL , DB_NOSYNC , NULL, 0)!0 && t == 0) 272 t = t_t ; 274 i(( t_t = `__db_o ( 275 dbp , NULL , DB_NOSYNC )!0 && t == 0) 276 t = t_t ; 280 de : i( t == 0) 281 * lp = gp -> ev_l ; 282 out : i( gp ! NULL ) 283 `__os_ ( v , gp ); 284 ( t ); 285 } } 294 $__dbg_ݒ_fe ( v , txn , gp , fo ) 295 ENV * v ; 296 DB_TXN * txn ; 297 __dbg_gi_gs * gp ; 298 * fo ; 300 DB * dbp ; 301 DB_ENTRY * dbe ; 302 DB_LOG * db ; 303 u_t32_t id , us ; 304 t ; 306 db = v -> lg_hd ; 313 `MUTEX_LOCK ( v , db -> mtx_dbg ); 314 i( gp -> feid ! DB_LOGFILEID_INVALID && 315 gp -> feid < db -> dby_t ) 316 dbe = & db -> dby [ gp -> feid ]; 318 dbe = NULL ; 320 i( dbe ! NULL ) { 321 i( dbe -> ded ) { 322 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 323 ( ENOENT ); 338 i(( dbp = dbe ->dbp! NULL ) { 339 i( gp -> code = DBREG_REOPEN || 340 dbp -> ma_pgno ! gp ->meta_pgno || 341 gp -> me . size == 0 || 342 `memcmp ( dbp -> feid , gp -> uid . da , 343 DB_FILE_ID_LEN ) != 0) { 344 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 345 () `__dbg_voke_id ( dbp , 0, 346 DB_LOGFILEID_INVALID ); 347 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 348 () `__db_o ( dbp , NULL , DB_NOSYNC ); 349 ݒ ; 357 `DB_ASSERT ( v , dbe -> dbp == dbp); 358 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 365 i( gp -> id ! TXN_INVALID && 366 ( t = `__db_txi_upde ( v , fo , 367 gp -> id , TXN_EXPECTED , NULL , & us , 1)) != 0) 368 ( t ); 373 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 375 ݒ : 383 i( gp -> me . size == 0) { 384 () `__dbg_add_dby ( v , db , NULL , gp -> feid ); 385 ( ENOENT ); 392 i( txn ! NULL ) { 393 id = txn -> txnid ; 394 `memt ( txn , 0, ( DB_TXN )); 395 txn -> txnid = id ; 396 txn -> mg = v -> tx_hd ; 399 ( `__dbg_do_ݒ ( v , 400 txn , db , gp -> uid . da ,rgp-> me .da,rgp-> y , 401 gp -> feid ,rgp-> ma_pgno , fo ,rgp-> id ,rgp-> code )); 402 } } @../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 (( ENV *, u_t32_t )); 27 $__dbg__t ( v , ags ) 28 ENV * v ; 29 u_t32_t ags ; 31 t ; 33 i( `LF_ISSET ( DB_STAT_ALL ) && 34 ( t = `__dbg_t_dbli ( v , ags )) != 0) 35 ( t ); 38 } } 47 $__dbg_t_ame ( v , p ) 48 ENV * v ; 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 ( v , "%s", `DB_GLOBAL ( db_le )); 58 `__db_msg ( v , "DB handle FNAME contents:"); 59 `STAT_LONG ("log ID", p -> id ); 60 `STAT_ULONG ("Mpgno", p -> ma_pgno ); 61 `__db_t_feid ( v , p -> ufid , "\tFile ID"); 62 `STAT_ULONG ("xn", p -> _txnid ); 63 `__db_ags ( v , NULL , p -> ags , , NULL, "\tFlags"); 64 } } 71 $__dbg_t_dbli ( v , ags ) 72 ENV * v ; 73 u_t32_t ags ; 75 DB * dbp ; 76 DB_LOG * db ; 77 FNAME * p ; 78 LOG * ; 79 d , f ; 81 db = v -> lg_hd ; 82 = db -> gfo . imy ; 84 `__db_msg ( v , "LOG FNAMEist:"); 85 `__mux_t_debug_sg ( 86 v , "Fmmux", -> mtx_fi , ags ); 88 `STAT_LONG ("Fid max", -> fid_max ); 90 `MUTEX_LOCK ( v , -> mtx_fi ); 91 f = 1; 92 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) { 93 i( f ) { 94 f = 0; 95 `__db_msg ( v , 98 dbp = p -> id > db -> dby_t ? NULL : 99 db -> dby [ p -> id ]. dbp ; 100 d = p -> id > db -> dby_t ? 0 : 101 db -> dby [ p -> id ]. ded ; 102 `__db_msg ( v , 104 () p -> id , 105 p -> ame_off = INVALID_ROFF ? 106 "" : (*) `R_ADDR (& db -> gfo , p -> ame_off ), 107 p -> dme_off = INVALID_ROFF ? "" : ":", 108 p -> dme_off = INVALID_ROFF ? 109 "" : (*) `R_ADDR (& db -> gfo , p -> dme_off ), 110 `__db_dbty_to_rg ( p -> s_ty ), 111 ( u_lg ) p -> ma_pgno , (u_lg)p-> pid , 112 ( u_lg ) p -> _txnid , (u_lg)p-> ags , 113 dbp = NULL ? "NDBP" : "DBP", d , `P_TO_ULONG (dbp), 114 ( u_lg )( dbp = NULL ? 0 : dbp-> ags )); 116 `MUTEX_UNLOCK ( v , -> mtx_fi ); 119 } } @../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 (( ENV *, u_t8_t *, *)); 28 $__dbg_add_dby ( v , db , dbp , ndx ) 29 ENV * v ; 30 DB_LOG * db ; 31 DB * dbp ; 32 t32_t ndx ; 34 t32_t i ; 35 t ; 37 t = 0; 39 `MUTEX_LOCK ( v , db -> mtx_dbg ); 46 i( db -> dby_t < ndx ) { 47 i(( t = `__os_loc ( v , 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 ( v , db -> dby [ ndx ]. dbp = NULL ); 61 db -> dby [ ndx ]. ded = dbp = NULL ; 62 db -> dby [ ndx ]. dbp = dbp; 64 r : `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 65 ( t ); 66 } } 75 $__dbg_m_dby ( db , ndx ) 76 DB_LOG * db ; 77 t32_t ndx ; 79 `MUTEX_LOCK ( db -> v , 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 -> v , db-> mtx_dbg ); 87 } } 96 $__dbg_log_fes ( v , code ) 97 ENV * v ; 98 u_t32_t code ; 100 DBT * db , fid_dbt , t ; 101 DB_LOG * db ; 102 DB_LSN r_unud ; 103 FNAME * p ; 104 LOG * ; 105 t ; 107 db = v -> lg_hd ; 108 = db -> gfo . imy ; 110 t = 0; 112 `MUTEX_LOCK ( v , -> mtx_fi ); 114 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) { 116 i( p -> id = DB_LOGFILEID_INVALID ) 118 i( p -> ame_off = INVALID_ROFF ) 119 db = NULL ; 121 `memt (& t , 0, (t)); 122 t . da = `R_ADDR (& db -> gfo , p -> ame_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 ( v , NULL , & r_unud , 138 `F_ISSET ( p , DB_FNAME_DURABLE ? 0 : DB_LOG_NOT_DURABLE , 139 code , 140 db , & fid_dbt , p -> id , f-> s_ty , f-> ma_pgno , 141 TXN_INVALID )) != 0) 145 `MUTEX_UNLOCK ( v , -> mtx_fi ); 147 ( t ); 148 } } 161 $__dbg_o_fes ( v , do_ed ) 162 ENV * v ; 163 do_ed ; 165 DB * dbp ; 166 DB_LOG * db ; 167 t , t_t ; 168 t32_t i ; 171 i(! `LOGGING_ON ( v )) 174 db = v -> lg_hd ; 175 t = 0; 177 `MUTEX_LOCK ( v , db -> mtx_dbg ); 178 i = 0; i < db -> dby_t ; i++) { 187 i(( dbp = db -> dby [ i ].dbp! NULL ) { 203 i( do_ed && 204 ! `F_ISSET ( dbp -> log_fame , DB_FNAME_RESTORED )) 206 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 207 i( `F_ISSET ( dbp , DB_AM_RECOVER )) 208 t_t = `__db_o ( dbp , NULL , DB_NOSYNC ); 210 t_t = `__dbg_voke_id ( 211 dbp , 0, DB_LOGFILEID_INVALID ); 212 i( t == 0) 213 t = t_t ; 214 `MUTEX_LOCK ( v , db -> mtx_dbg ); 217 db -> dby [ i ]. ded = 0; 218 db -> dby [ i ]. dbp = NULL ; 220 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 221 ( t ); 222 } } 230 $__dbg_o_fe ( v , p ) 231 ENV * v ; 232 FNAME * p ; 234 DB * dbp ; 235 DB_LOG * db ; 237 db = v -> lg_hd ; 239 dbp = db -> dby [ p -> id ].dbp; 240 i( dbp = NULL ) 242 `DB_ASSERT ( v , dbp -> log_fame = p ); 243 `DB_ASSERT ( v , `F_ISSET ( dbp , DB_AM_RECOVER )); 244 ( `__db_o ( dbp , NULL , DB_NOSYNC )); 245 } } 256 $__dbg_mk_ed ( v ) 257 ENV * v ; 259 DB_LOG * db ; 260 FNAME * p ; 261 LOG * ; 264 i(! `LOGGING_ON ( v )) 267 db = v -> lg_hd ; 268 = db -> gfo . imy ; 270 `MUTEX_LOCK ( v , -> mtx_fi ); 271 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 272 i( p -> id ! DB_LOGFILEID_INVALID ) 273 `F_SET ( p , DB_FNAME_RESTORED ); 275 `MUTEX_UNLOCK ( v , -> mtx_fi ); 277 } } 288 $__dbg_vide_fes ( v , do_ed ) 289 ENV * v ; 290 do_ed ; 292 DB_LOG * db ; 293 FNAME * p ; 294 LOG * ; 295 t ; 298 i(! `LOGGING_ON ( v )) 301 db = v -> lg_hd ; 302 = db -> gfo . imy ; 304 t = 0; 305 `MUTEX_LOCK ( v , -> mtx_fi ); 306 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) { 312 i( `F_ISSET ( p , DB_FNAME_RESTORED && ! do_ed ) 314 i(! `F_ISSET ( p , DB_FNAME_RESTORED && do_ed ) 316 i( p -> id ! DB_LOGFILEID_INVALID ) { 317 i(( t = `__dbg_log_o ( v , 318 p , NULL , DBREG_RCLOSE )) != 0) 319 r ; 320 p -> d_id = f-> id ; 321 p -> id = DB_LOGFILEID_INVALID ; 324 r : `MUTEX_UNLOCK ( v , -> mtx_fi ); 325 ( t ); 326 } } 335 $__dbg_id_to_db ( v , txn , db , ndx , yݒ ) 336 ENV * v ; 337 DB_TXN * txn ; 338 DB ** db ; 339 t32_t ndx ; 340 yݒ ; 342 DB_LOG * db ; 343 FNAME * ame ; 344 t ; 345 * me ; 347 db = v -> lg_hd ; 348 t = 0; 350 `MUTEX_LOCK ( v , db -> mtx_dbg ); 366 i( ndx > db -> dby_t || 367 (! db -> dby [ ndx ]. ded && db->dby[ndx]. dbp = NULL )) { 368 i(! yݒ || `F_ISSET ( db , DBLOG_RECOVER )) { 369 t = ENOENT ; 370 r ; 379 `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 381 i( `__dbg_id_to_ame ( db , ndx , 0, & ame ) != 0) 388 ( ENOENT ); 397 me = ame -> ame_off = INVALID_ROFF ? 398 NULL : `R_ADDR (& db -> gfo , ame -> ame_off ); 408 i(( t = `__dbg_do_ݒ ( v , txn , db , 409 ame -> ufid , me , fme-> s_ty , ndx , fme-> ma_pgno , 410 NULL , TXN_INVALID , `F_ISSET ( ame , DB_FNAME_INMEM ) ? 411 DBREG_REOPEN : DBREG_OPEN )) != 0) 412 ( t ); 414 * db = db -> dby [ ndx ]. dbp ; 415 (* db = NULL ? DB_DELETED : 0); 421 i( db -> dby [ ndx ]. ded ) { 422 t = DB_DELETED ; 423 r ; 427 i((* db = db -> dby [ ndx ]. dbp = NULL ) 428 t = ENOENT ; 439 i((* db )-> mpf ! NULL && (*db)->mpf-> m != NULL) 440 (* db )-> mpf -> m -> fe_wrn = 1; 442 r : `MUTEX_UNLOCK ( v , db -> mtx_dbg ); 443 ( t ); 444 } } 454 $__dbg_id_to_ame ( db , id , have_lock , am ) 455 DB_LOG * db ; 456 t32_t id ; 457 have_lock ; 458 FNAME ** am ; 460 ENV * v ; 461 FNAME * p ; 462 LOG * ; 463 t ; 465 v = db ->env; 466 = db -> gfo . imy ; 468 t = -1; 470 i(! have_lock ) 471 `MUTEX_LOCK ( v , -> mtx_fi ); 472 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 473 i( p -> id == id) { 474 * am = p ; 475 t = 0; 478 i(! have_lock ) 479 `MUTEX_UNLOCK ( v , -> mtx_fi ); 481 ( t ); 482 } } 491 $__dbg_fid_to_ame ( db , fid , have_lock , am ) 492 DB_LOG * db ; 493 u_t8_t * fid ; 494 have_lock ; 495 FNAME ** am ; 497 ENV * v ; 498 FNAME * p ; 499 LOG * ; 500 t ; 502 v = db ->env; 503 = db -> gfo . imy ; 505 t = -1; 507 i(! have_lock ) 508 `MUTEX_LOCK ( v , -> mtx_fi ); 509 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 510 i( `memcmp ( p -> ufid , fid , DB_FILE_ID_LEN ) == 0) { 511 * am = p ; 512 t = 0; 515 i(! have_lock ) 516 `MUTEX_UNLOCK ( v , -> mtx_fi ); 518 ( t ); 519 } } 531 $__dbg_g_me ( v , fid , am , dm ) 532 ENV * v ; 533 u_t8_t * fid ; 534 ** am , ** dm ; 536 DB_LOG * db ; 537 FNAME * p ; 539 db = v -> lg_hd ; 541 i( db ! NULL && `__dbg_fid_to_ame (db, fid , 0, & p ) == 0) { 542 * am = p -> ame_off = INVALID_ROFF ? 543 NULL : `R_ADDR (& db -> gfo , p -> ame_off ); 544 * dm = p -> dme_off = INVALID_ROFF ? 545 NULL : `R_ADDR (& db -> gfo , p -> dme_off ); 549 * am = * dm = NULL ; 551 } } 562 $__dbg_do_ݒ ( v , 563 txn , , uid , me , y , ndx , ma_pgno , fo , id , code ) 564 ENV * v ; 565 DB_TXN * txn ; 566 DB_LOG * ; 567 u_t8_t * uid ; 568 * me ; 569 DBTYPE y ; 570 t32_t ndx ; 571 db_pgno_t ma_pgno ; 572 * fo ; 573 u_t32_t id , code ; 575 DB * dbp ; 576 u_t32_t c , t_ ; 577 t , y_mem ; 578 * dme , * ame ; 580 c = TXN_EXPECTED ; 581 ame = me ; 582 dme = NULL ; 583 y_mem = 0; 584 i(( t = `__db__ (& dbp , -> v , 0)) != 0) 585 ( t ); 601 `F_SET ( dbp , DB_AM_RECOVER ); 602 i( ma_pgno ! PGNO_BASE_MD ) { 603 `memy ( dbp -> feid , uid , DB_FILE_ID_LEN ); 604 dbp -> ma_pgno = meta_pgno; 606 i( code = DBREG_PREOPEN ) { 607 dbp -> ty = y ; 608 i(( t = `__dbg_tup ( dbp , me , NULL , id )) != 0) 609 r ; 610 `MAKE_INMEM ( dbp ); 611 sk_ݒ ; 614 i( code = DBREG_REOPEN ) { 615 `MAKE_INMEM ( dbp ); 616 ame = NULL ; 617 dme = me ; 620 y_mem : 621 i(( t = `__db_ݒ ( dbp , NULL , txn , ame , dme , y , 622 DB_DURABLE_UNKNOWN | DB_ODDFILESIZE , 623 DB_MODE_600 , ma_pgno )) == 0) { 624 sk_ݒ : 629 i(( ma_pgno ! PGNO_BASE_MD && 630 `__dbg_check_ma ( v , uid , me ) != 0) || 631 `memcmp ( uid , dbp -> feid , DB_FILE_ID_LEN ) != 0) 632 c = TXN_UNEXPECTED ; 634 c = TXN_EXPECTED ; 637 i(( t = `__dbg_assign_id ( dbp , ndx )) != 0) 638 r ; 646 i( id ! TXN_INVALID ) 647 t = `__db_txi_upde ( v , 648 fo , id , c , NULL , & t_ , 1); 650 r : i( c = TXN_UNEXPECTED ) 651 n_right ; 652 ( t ); 653 } i( t = ENOENT ) { 663 i( y_mem =0 && code = DBREG_CHKPNT ) { 664 `MAKE_INMEM ( dbp ); 665 ame = NULL ; 666 dme = me ; 667 y_mem = 1; 668 y_mem ; 669 } i( y_mem != 0) 670 `CLR_INMEM ( dbp ); 673 i( id ! TXN_INVALID ) 674 t = `__db_txi_upde ( v , fo , 675 id , TXN_UNEXPECTED , NULL , & t_ , 1); 677 n_right : 678 () `__db_o ( dbp , NULL , DB_NOSYNC ); 680 () `__dbg_add_dby ( v , , NULL , ndx ); 681 ( t ); 682 } } 685 $__dbg_check_ma ( v , uid , me ) 686 ENV * v ; 687 u_t8_t * uid ; 688 * me ; 690 DB * dbp ; 691 t ; 693 t = 0; 694 i(( t = `__db__ (& dbp , v , 0)) != 0) 695 ( t ); 696 `F_SET ( dbp , DB_AM_RECOVER ); 697 t = `__db_ݒ ( dbp , NULL , NULL, 698 me , NULL , DB_BTREE , 0, DB_MODE_600 , PGNO_BASE_MD ); 700 i( t =0 && `memcmp ( uid , dbp -> feid , DB_FILE_ID_LEN ) != 0) 701 t = EINVAL ; 703 () `__db_o ( dbp , NULL , 0); 704 ( t ); 705 } } 726 $__dbg_zy_id ( dbp ) 727 DB * dbp ; 729 DB_LOG * db ; 730 DB_TXN * txn ; 731 ENV * v ; 732 FNAME * p ; 733 LOG * ; 734 t32_t id ; 735 t ; 737 v = dbp ->env; 739 `DB_ASSERT ( v , `IS_REP_MASTER (env)); 741 v = dbp ->env; 742 db = v -> lg_hd ; 743 = db -> gfo . imy ; 744 p = dbp -> log_fame ; 747 `MUTEX_LOCK ( v , -> mtx_fi ); 748 i( p -> id ! DB_LOGFILEID_INVALID ) { 749 `MUTEX_UNLOCK ( v , -> mtx_fi ); 752 id = DB_LOGFILEID_INVALID ; 758 i( p -> d_id ! DB_LOGFILEID_INVALID && 759 ( t = `__dbg_voke_id ( dbp , 1, DB_LOGFILEID_INVALID )) != 0) 760 r ; 761 i(( t = `__txn_beg ( v , NULL , NULL, & txn , 0)) != 0) 762 r ; 764 i(( t = `__dbg_g_id ( dbp , txn , & id )) != 0) { 765 () `__txn_abt ( txn ); 766 r ; 769 i(( t = `__txn_comm ( txn , DB_TXN_NOSYNC )) != 0) 770 r ; 782 p -> id = id; 783 r : 784 i( t !0 && id ! DB_LOGFILEID_INVALID ) 785 () `__dbg_voke_id ( dbp , 1, id ); 786 `MUTEX_UNLOCK ( v , -> mtx_fi ); 787 ( t ); 788 } } @../env/env_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 34 $SH_TAILQ_HEAD ( t__sizeq tSIZEQ_HEAD ; 36 s__loc_yout { 37 `SH_TAILQ_HEAD ( __addrq addrq ; 58 #DB_SIZE_Q_COUNT 11 ) 59 SIZEQ_HEAD sizeq [ DB_SIZE_Q_COUNT ]; 60 #ifde HAVE_STATISTICS 61 u_t32_t pow2_size [ DB_SIZE_Q_COUNT ]; 64 #ifde HAVE_STATISTICS 65 u_t32_t sucss ; 66 u_t32_t u ; 67 u_t32_t d ; 68 u_t32_t lge ; 70 utmax_t unud ; 71 } tALLOC_LAYOUT ; 73 s__loc_emt { 74 SH_TAILQ_ENTRY addrq ; 75 SH_TAILQ_ENTRY sizeq ; 81 size_t n ; 88 utmax_t un ; 89 } tALLOC_ELEMENT ; 95 #SHALLOC_FRAGMENT (( ALLOC_ELEMENT + 64) ) 98 #unde SET_QUEUE_FOR_SIZE 99 #SET_QUEUE_FOR_SIZE ( hd , q , i , n ) do { \ 100 i = 0; i < DB_SIZE_Q_COUNT ; ++i) { \ 101 q = &( hd )-> sizeq [ i ]; \ 102 i(( n <( size_t )1024 << i ) \ 105 } } 0) ) 107 __v_size_ __P (( ALLOC_LAYOUT *, ALLOC_ELEMENT *)); 116 $__v_loc_ ( f , size ) 117 REGINFO * f ; 118 size_t size ; 120 ALLOC_ELEMENT * p ; 121 ALLOC_LAYOUT * hd ; 122 ENV * v ; 123 u_t i ; 125 v = f ->env; 128 i( `F_ISSET ( v , ENV_PRIVATE )) 134 hd = f -> addr ; 135 `memt ( hd , 0, (*head)); 136 `SH_TAILQ_INIT (& hd -> addrq ); 137 i = 0; i < DB_SIZE_Q_COUNT ; ++i) 138 `SH_TAILQ_INIT (& hd -> sizeq [ i ]); 139 `COMPQUIET ( hd -> unud , 0); 144 p = ( ALLOC_ELEMENT *)(( u_t8_t *) hd + ( ALLOC_LAYOUT )); 145 p -> n = size - ( ALLOC_LAYOUT ); 146 p -> un = 0; 148 `SH_TAILQ_INSERT_HEAD (& hd -> addrq , p ,ddrq, __loc_emt ); 149 `SH_TAILQ_INSERT_HEAD ( 150 & hd -> sizeq [ DB_SIZE_Q_COUNT - 1], p , sizeq, __loc_emt ); 151 } } 157 #ifde DIAGNOSTIC 158 #DB_ALLOC_SIZE ( n ) \ 159 ( size_t ) `DB_ALIGN (( n + ( ALLOC_ELEMENT + 1, ( utmax_t )) ) 161 #DB_ALLOC_SIZE ( n ) \ 162 ( size_t ) `DB_ALIGN (( n + ( ALLOC_ELEMENT ), ( utmax_t )) ) 171 size_t 172 $__v_loc_ovhd () 174 (( ALLOC_ELEMENT )); 175 } } 183 size_t 184 $__v_loc_size ( n ) 185 size_t n ; 187 ( `DB_ALLOC_SIZE ( n )); 188 } } 197 $__v_loc ( f , n , ) 198 REGINFO * f ; 199 size_t n ; 200 * ; 202 SIZEQ_HEAD * q ; 203 ALLOC_ELEMENT * p , * ag , * p_tmp ; 204 ALLOC_LAYOUT * hd ; 205 ENV * v ; 206 size_t tٮ_n ; 207 u_t8_t * p ; 208 u_t i ; 209 t ; 210 #ifde HAVE_STATISTICS 211 u_t32_t _ch ; 213 v = f ->env; 214 *(**) = NULL ; 224 i( `F_ISSET ( v , ENV_PRIVATE )) { 226 i( f -> lod >f-> max_loc ) 227 ( ENOMEM ); 230 n +( size_t ); 232 #ifde DIAGNOSTIC 234 ++ n ; 237 i(( t = `__os_mloc ( v , n , & p )) != 0) 238 ( t ); 239 f -> lod + n ; 241 *( size_t *) p = n ; 242 #ifde DIAGNOSTIC 243 p [ n - 1] = GUARD_BYTE ; 245 *(**) = p + ( size_t ); 249 hd = f -> addr ; 250 tٮ_n = `DB_ALLOC_SIZE ( n ); 253 `SET_QUEUE_FOR_SIZE ( hd , q , i , tٮ_n ); 255 #ifde HAVE_STATISTICS 256 ++ hd -> pow2_size [ i ]; 263 `STAT (( _ch = 0)); 264 p = NULL ;; ++ q ) { 265 `SH_TAILQ_FOREACH ( p_tmp , q , sizeq , __loc_emt ) { 266 `STAT ((++ _ch )); 273 i( p_tmp -> n < tٮ_n ) 280 p = p_tmp ; 287 i( p_tmp -> n - tٮ_n < SHALLOC_FRAGMENT ) 290 i( p ! NULL || ++ i > DB_SIZE_Q_COUNT ) 294 #ifde HAVE_STATISTICS 295 i( hd -> lge < _ch ) 296 hd -> lge = _ch ; 302 i( p = NULL ) { 303 `STAT ((++ hd -> u )); 304 ( ENOMEM ); 306 `STAT ((++ hd -> sucss )); 309 `SH_TAILQ_REMOVE ( q , p , sizeq , __loc_emt ); 311 i( p -> n - tٮ_n > SHALLOC_FRAGMENT ) { 312 ag = ( ALLOC_ELEMENT *)(( u_t8_t *) p + tٮ_n ); 313 ag -> n = p ->- tٮ_n ; 314 ag -> un = 0; 316 p -> n = tٮ_n ; 319 `SH_TAILQ_INSERT_AFTER ( 320 & hd -> addrq , p , ag ,ddrq, __loc_emt ); 323 `__v_size_ ( hd , ag ); 326 p = ( u_t8_t *) p + ( ALLOC_ELEMENT ); 327 p -> un = n ; 328 #ifde DIAGNOSTIC 329 p [ n ] = GUARD_BYTE ; 331 *(**) = p ; 334 } } 343 $__v_loc_ ( f , r ) 344 REGINFO * f ; 345 * r ; 347 ALLOC_ELEMENT * p , * p_tmp ; 348 ALLOC_LAYOUT * hd ; 349 ENV * v ; 350 SIZEQ_HEAD * q ; 351 size_t n ; 352 u_t8_t i , * p ; 354 v = f ->env; 357 i( `F_ISSET ( v , ENV_PRIVATE )) { 359 p = ( u_t8_t *)(( size_t *) r - 1); 360 n = *( size_t *) p ; 362 f -> lod - n ; 364 #ifde DIAGNOSTIC 366 `DB_ASSERT ( v , p [ n - 1] = GUARD_BYTE ); 369 `memt ( p , CLEAR_BYTE , n ); 371 `__os_ ( v , p ); 375 hd = f -> addr ; 376 `STAT ((++ hd -> d )); 378 p = r ; 379 p = ( ALLOC_ELEMENT *)( p - (ALLOC_ELEMENT)); 381 #ifde DIAGNOSTIC 383 `DB_ASSERT ( v , p [ p -> un ] = GUARD_BYTE ); 386 `memt ( p , CLEAR_BYTE , p -> n - ( ALLOC_ELEMENT )); 390 p -> un = 0; 396 i(( p_tmp = 397 `SH_TAILQ_PREV (& hd -> addrq , p ,ddrq, __loc_emt )! NULL && 398 p_tmp -> un == 0 && 399 ( u_t8_t *) p_tmp +_tmp-> n =(u_t8_*) p ) { 405 `SH_TAILQ_REMOVE (& hd -> addrq , p ,ddrq, __loc_emt ); 406 `SET_QUEUE_FOR_SIZE ( hd , q , i , p_tmp -> n ); 407 `SH_TAILQ_REMOVE ( q , p_tmp , sizeq , __loc_emt ); 409 p_tmp -> n + p ->len; 410 p = p_tmp ; 412 i(( p_tmp = `SH_TAILQ_NEXT ( p , addrq , __loc_emt )! NULL && 413 p_tmp -> un == 0 && 414 ( u_t8_t *) p +-> n =(u_t8_*) p_tmp ) { 420 `SH_TAILQ_REMOVE (& hd -> addrq , p_tmp ,ddrq, __loc_emt ); 421 `SET_QUEUE_FOR_SIZE ( hd , q , i , p_tmp -> n ); 422 `SH_TAILQ_REMOVE ( q , p_tmp , sizeq , __loc_emt ); 424 p -> n + p_tmp ->len; 428 `__v_size_ ( hd , p ); 429 } } 436 $__v_size_ ( hd , p ) 437 ALLOC_LAYOUT * hd ; 438 ALLOC_ELEMENT * p ; 440 SIZEQ_HEAD * q ; 441 ALLOC_ELEMENT * p_tmp ; 442 u_t i ; 445 `SET_QUEUE_FOR_SIZE ( hd , q , i , p -> n ); 448 `SH_TAILQ_FOREACH ( p_tmp , q , sizeq , __loc_emt ) 449 i( p -> n < p_tmp ->len) 451 i( p_tmp = NULL ) 452 `SH_TAILQ_INSERT_TAIL ( q , p , sizeq ); 454 `SH_TAILQ_INSERT_BEFORE ( q , p_tmp , p , sizeq , __loc_emt ); 455 } } 457 #ifde HAVE_STATISTICS 465 $__v_loc_t ( f , ags ) 466 REGINFO * f ; 467 u_t32_t ags ; 469 #ifde __ALLOC_DISPLAY_ALLOCATION_LISTS 470 ALLOC_ELEMENT * p ; 472 ALLOC_LAYOUT * hd ; 473 ENV * v ; 474 u_t i ; 476 v = f ->env; 477 hd = f -> addr ; 479 i( `F_ISSET ( v , ENV_PRIVATE )) 482 `__db_msg ( v , 484 ( u_lg ) hd -> sucss , (u_lg)hd-> u , (u_lg)hd-> d , 485 ( u_lg ) hd -> lge ); 487 i(! `LF_ISSET ( DB_STAT_ALL )) 490 `__db_msg ( v , "%s", "Allocations byower-of-two sizes:"); 491 i = 0; i < DB_SIZE_Q_COUNT ; ++i) 492 `__db_msg ( v , "%3dKB\t%lu", 493 (1024 << i / 1024, ( u_lg ) hd -> pow2_size [i]); 495 #ifde __ALLOC_DISPLAY_ALLOCATION_LISTS 500 `__db_msg ( v , 502 `SH_TAILQ_FOREACH ( p , & hd -> addrq ,ddrq, __loc_emt ) 503 `__db_msg ( v , "\t%#lx {%lu, %lu}", 504 `P_TO_ULONG ( p ), ( u_lg -> n , (u_lg-> un ); 506 `__db_msg ( v , "Allocation freeist by size: KB {chunkength}"); 507 i = 0; i < DB_SIZE_Q_COUNT ; ++i) { 508 `__db_msg ( v , "%3dKB", (1024 << i ) / 1024); 509 `SH_TAILQ_FOREACH ( p , & hd -> sizeq [ i ], sizeq, __loc_emt ) 510 `__db_msg ( v , 511 "\t%#lx {%lu}", `P_TO_ULONG ( p ), ( u_lg -> n ); 514 } } @../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 (( ENV *, *, )); 26 $__v_ad_db_cfig ( v ) 27 ENV * v ; 29 FILE * ; 30 lc , t ; 31 * p , buf [256]; 34 p = NULL ; 35 i(( t = 36 `__db_ame ( v , DB_APP_NONE , "DB_CONFIG", 0, NULL , & p )) != 0) 37 ( t ); 38 i( p = NULL ) 39 = NULL ; 41 = `fݒ ( p , "r"); 42 `__os_ ( v , p ); 45 i( = NULL ) 48 lc = 1; `fgs ( buf , (buf), ! NULL ; ++lc) { 49 i(( p = `rchr ( buf , '\n')= NULL ) { 50 `__db_rx ( v , "DB_CONFIG:%d: ieg iut", lc ); 51 t = EINVAL ; 54 i( p > buf &&[-1] == '\r') 55 -- p ; 56 * p = '\0'; 57 p = buf ; *!'\0' && `isa (()*p); ++p) 59 i(* p == '\0' || *p == '#') 62 i(( t = `__cfig_r ( v , buf , lc )) != 0) 65 () `fo ( ); 67 ( t ); 68 } } 70 #unde CONFIG_GET_INT 71 #CONFIG_GET_INT ( s , vp ) do { \ 72 __t ; \ 73 i(( __t = \ 74 `__db_glg ( v -> dbv , NULL , s , 0, INT_MAX , vp )) != 0) \ 75 ( __t ); \ 76 } 0) ) 77 #unde CONFIG_GET_LONG 78 #CONFIG_GET_LONG ( s , vp ) do { \ 79 __t ; \ 80 i(( __t = \ 81 `__db_glg ( v -> dbv , NULL , s , 0, LONG_MAX , vp )) != 0) \ 82 ( __t ); \ 83 } 0) ) 84 #unde CONFIG_INT 85 #CONFIG_INT ( s , f ) do { \ 86 i( `rcmp ( s , gv [0]) == 0) { \ 87 __v ; \ 88 i( nf != 2) \ 89 fm ; \ 90 `CONFIG_GET_INT ( gv [1], & __v ); \ 91 ( `f ( v -> dbv , () __v )); \ 93 } 0) ) 94 #unde CONFIG_GET_UINT32 95 #CONFIG_GET_UINT32 ( s , vp ) do { \ 96 i( `__db_gulg ( v -> dbv , NULL , s , 0, UINT32_MAX , vp ) != 0) \ 97 ( EINVAL ); \ 98 } 0) ) 99 #unde CONFIG_UINT32 100 #CONFIG_UINT32 ( s , f ) do { \ 101 i( `rcmp ( s , gv [0]) == 0) { \ 102 u_lg __v ; \ 103 i( nf != 2) \ 104 fm ; \ 105 `CONFIG_GET_UINT32 ( gv [1], & __v ); \ 106 ( `f ( v -> dbv , ( u_t32_t ) __v )); \ 108 } 0) ) 110 #unde CONFIG_SLOTS 111 #CONFIG_SLOTS 10 ) 118 $__cfig_r ( v , s , lc ) 119 ENV * v ; 120 * s ; 121 lc ; 123 DB_ENV * dbv ; 124 u_lg uv1 , uv2 ; 125 u_t32_t ags ; 126 lv1 , lv2 ; 127 nf ; 128 * gv [ CONFIG_SLOTS ]; 130 dbv = v ->dbenv; 132 i(( nf = `__cfig_l ( s , gv )) < 2) { 133 fm : `__db_rx ( v , 134 "l%d: %s: incܻame-vu", lc , gv [0]); 135 ( EINVAL ); 138 `CONFIG_UINT32 ("mux_t_ign", __mux_t_ign ); 139 `CONFIG_UINT32 ("mux_t_emt", __mux_t_emt ); 140 `CONFIG_UINT32 ("mux_t_max", __mux_t_max ); 141 `CONFIG_UINT32 ("mux_t_s_s", __mux_t_s_s ); 143 i( `rcmp ( gv [0], "rep_set_clockskew") == 0) { 144 i( nf != 3) 145 fm ; 146 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 147 `CONFIG_GET_UINT32 ( gv [2], & uv2 ); 148 ( `__p_t_ockskew ( 149 dbv , ( u_t32_t ) uv1 , (u_t32_t) uv2 )); 152 i( `rcmp ( gv [0], "rep_set_config") == 0) { 153 i( nf != 2) 154 fm ; 155 i( `rcmp ( gv [1], "db_rep_conf_bulk") == 0) 156 ( `__p_t_cfig ( dbv , 157 DB_REP_CONF_BULK , 1)); 158 i( `rcmp ( gv [1], "db_rep_conf_delayclient") == 0) 159 ( `__p_t_cfig ( dbv , 160 DB_REP_CONF_DELAYCLIENT , 1)); 161 i( `rcmp ( gv [1], "db_rep_conf_lease") == 0) 162 ( `__p_t_cfig ( dbv , 163 DB_REP_CONF_LEASE , 1)); 164 i( `rcmp ( gv [1], "db_rep_conf_noautoinit") == 0) 165 ( `__p_t_cfig ( dbv , 166 DB_REP_CONF_NOAUTOINIT , 1)); 167 i( `rcmp ( gv [1], "db_rep_conf_nowait") == 0) 168 ( `__p_t_cfig ( dbv , DB_REP_CONF_NOWAIT , 1)); 169 i( `rcmp ( gv [1], "db_repmgr_conf_2site_strict") == 0) 170 ( `__p_t_cfig ( dbv , 171 DB_REPMGR_CONF_2SITE_STRICT , 1)); 172 fm ; 175 i( `rcmp ( gv [0], "rep_set_limit") == 0) { 176 i( nf != 3) 177 fm ; 178 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 179 `CONFIG_GET_UINT32 ( gv [2], & uv2 ); 180 ( `__p_t_lim ( 181 dbv , ( u_t32_t ) uv1 , (u_t32_t) uv2 )); 184 i( `rcmp ( gv [0], "rep_set_nsites") == 0) { 185 i( nf != 2) 186 fm ; 187 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 188 ( `__p_t_nses ( 189 dbv , ( u_t32_t ) uv1 )); 192 i( `rcmp ( gv [0], "rep_set_priority") == 0) { 193 i( nf != 2) 194 fm ; 195 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 196 ( `__p_t_iܙy ( 197 dbv , ( u_t32_t ) uv1 )); 200 i( `rcmp ( gv [0], "rep_set_request") == 0) { 201 i( nf != 3) 202 fm ; 203 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 204 `CONFIG_GET_UINT32 ( gv [2], & uv2 ); 205 ( `__p_t_que ( 206 dbv , ( u_t32_t ) uv1 , (u_t32_t) uv2 )); 209 i( `rcmp ( gv [0], "rep_set_timeout") == 0) { 210 i( nf != 3) 211 fm ; 212 `CONFIG_GET_UINT32 ( gv [2], & uv2 ); 213 i( `rcmp ( gv [1], "db_rep_ack_timeout") == 0) 214 ( `__p_t_timeout ( 215 dbv , DB_REP_ACK_TIMEOUT , ( u_t32_t ) uv2 )); 216 i( `rcmp ( gv [1], "db_rep_checkpoint_delay") == 0) 217 ( `__p_t_timeout ( 218 dbv , DB_REP_CHECKPOINT_DELAY , ( u_t32_t ) uv2 )); 219 i( `rcmp ( gv [1], "db_rep_connection_retry") == 0) 220 ( `__p_t_timeout ( 221 dbv , DB_REP_CONNECTION_RETRY , ( u_t32_t ) uv2 )); 222 i( `rcmp ( gv [1], "db_rep_election_timeout") == 0) 223 ( `__p_t_timeout ( 224 dbv , DB_REP_ELECTION_TIMEOUT , ( u_t32_t ) uv2 )); 225 i( `rcmp ( gv [1], "db_rep_election_retry") == 0) 226 ( `__p_t_timeout ( 227 dbv , DB_REP_ELECTION_RETRY , ( u_t32_t ) uv2 )); 228 i( `rcmp ( gv [1], "db_rep_full_election_timeout") == 0) 229 ( `__p_t_timeout ( dbv , 230 DB_REP_FULL_ELECTION_TIMEOUT , ( u_t32_t ) uv2 )); 231 i( `rcmp ( gv [1], "db_rep_heartbeat_monitor") == 0) 232 ( `__p_t_timeout ( 233 dbv , DB_REP_HEARTBEAT_MONITOR , ( u_t32_t ) uv2 )); 234 i( `rcmp ( gv [1], "db_rep_heartbeat_send") == 0) 235 ( `__p_t_timeout ( 236 dbv , DB_REP_HEARTBEAT_SEND , ( u_t32_t ) uv2 )); 237 i( `rcmp ( gv [1], "db_rep_lease_timeout") == 0) 238 ( `__p_t_timeout ( 239 dbv , DB_REP_LEASE_TIMEOUT , ( u_t32_t ) uv2 )); 240 fm ; 243 i( `rcmp ( gv [0], "repmgr_set_ack_policy") == 0) { 244 i( nf != 2) 245 fm ; 246 i( `rcmp ( gv [1], "db_repmgr_acks_all") == 0) 247 ( `__pmgr_t_ack_picy ( 248 dbv , DB_REPMGR_ACKS_ALL )); 249 i( `rcmp ( gv [1], "db_repmgr_acks_all_peers") == 0) 250 ( `__pmgr_t_ack_picy ( 251 dbv , DB_REPMGR_ACKS_ALL_PEERS )); 252 i( `rcmp ( gv [1], "db_repmgr_acks_none") == 0) 253 ( `__pmgr_t_ack_picy ( 254 dbv , DB_REPMGR_ACKS_NONE )); 255 i( `rcmp ( gv [1], "db_repmgr_acks_one") == 0) 256 ( `__pmgr_t_ack_picy ( 257 dbv , DB_REPMGR_ACKS_ONE )); 258 i( `rcmp ( gv [1], "db_repmgr_acks_one_peer") == 0) 259 ( `__pmgr_t_ack_picy ( 260 dbv , DB_REPMGR_ACKS_ONE_PEER )); 261 i( `rcmp ( gv [1], "db_repmgr_acks_quorum") == 0) 262 ( `__pmgr_t_ack_picy ( 263 dbv , DB_REPMGR_ACKS_QUORUM )); 264 fm ; 267 i( `rcmp ( gv [0], "set_cachesize") == 0) { 268 i( nf != 4) 269 fm ; 270 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 271 `CONFIG_GET_UINT32 ( gv [2], & uv2 ); 272 `CONFIG_GET_INT ( gv [3], & lv1 ); 273 ( `__memp_t_chesize ( 274 dbv , ( u_t32_t ) uv1 , (u_t32_t) uv2 , () lv1 )); 277 i( `rcmp ( gv [0], "set_data_dir") == 0 || 278 `rcmp ( gv [0], "db_data_dir") == 0) { 279 i( nf != 2) 280 fm ; 281 ( `__v_t_da_d ( dbv , gv [1])); 285 i( `rcmp ( gv [0], "set_intermediate_dir") == 0) { 286 i( nf != 2) 287 fm ; 288 `CONFIG_GET_INT ( gv [1], & lv1 ); 289 i( lv1 <= 0) 290 fm ; 291 v -> d_mode = () lv1 ; 294 i( `rcmp ( gv [0], "set_intermediate_dir_mode") == 0) { 295 i( nf != 2) 296 fm ; 297 ( `__v_t_rmed_d_mode ( dbv , gv [1])); 300 i( `rcmp ( gv [0], "set_flags") == 0) { 301 i( nf != 2) 302 fm ; 303 i( `rcmp ( gv [1], "db_auto_commit") == 0) 304 ( `__v_t_ags ( dbv , DB_AUTO_COMMIT , 1)); 305 i( `rcmp ( gv [1], "db_cdb_alldb") == 0) 306 ( `__v_t_ags ( dbv , DB_CDB_ALLDB , 1)); 307 i( `rcmp ( gv [1], "db_direct_db") == 0) 308 ( `__v_t_ags ( dbv , DB_DIRECT_DB , 1)); 309 i( `rcmp ( gv [1], "db_dsync_db") == 0) 310 ( `__v_t_ags ( dbv , DB_DSYNC_DB , 1)); 311 i( `rcmp ( gv [1], "db_multiversion") == 0) 312 ( `__v_t_ags ( dbv , DB_MULTIVERSION , 1)); 313 i( `rcmp ( gv [1], "db_nolocking") == 0) 314 ( `__v_t_ags ( dbv , DB_NOLOCKING , 1)); 315 i( `rcmp ( gv [1], "db_nommap") == 0) 316 ( `__v_t_ags ( dbv , DB_NOMMAP , 1)); 317 i( `rcmp ( gv [1], "db_nopanic") == 0) 318 ( `__v_t_ags ( dbv , DB_NOPANIC , 1)); 319 i( `rcmp ( gv [1], "db_overwrite") == 0) 320 ( `__v_t_ags ( dbv , DB_OVERWRITE , 1)); 321 i( `rcmp ( gv [1], "db_region_init") == 0) 322 ( `__v_t_ags ( dbv , DB_REGION_INIT , 1)); 323 i( `rcmp ( gv [1], "db_txn_nosync") == 0) 324 ( `__v_t_ags ( dbv , DB_TXN_NOSYNC , 1)); 325 i( `rcmp ( gv [1], "db_txn_nowait") == 0) 326 ( `__v_t_ags ( dbv , DB_TXN_NOWAIT , 1)); 327 i( `rcmp ( gv [1], "db_txn_snapshot") == 0) 328 ( `__v_t_ags ( dbv , DB_TXN_SNAPSHOT , 1)); 329 i( `rcmp ( gv [1], "db_txn_write_nosync") == 0) 331 `__v_t_ags ( dbv , DB_TXN_WRITE_NOSYNC , 1)); 332 i( `rcmp ( gv [1], "db_yieldcpu") == 0) 333 ( `__v_t_ags ( dbv , DB_YIELDCPU , 1)); 334 i( `rcmp ( gv [1], "db_log_inmemory") == 0) 335 ( `__log_t_cfig ( dbv , DB_LOG_IN_MEMORY , 1)); 336 i( `rcmp ( gv [1], "db_direct_log") == 0) 337 ( `__log_t_cfig ( dbv , DB_LOG_DIRECT , 1)); 338 i( `rcmp ( gv [1], "db_dsync_log") == 0) 339 ( `__log_t_cfig ( dbv , DB_LOG_DSYNC , 1)); 340 i( `rcmp ( gv [1], "db_log_autoremove") == 0) 341 ( `__log_t_cfig ( dbv , DB_LOG_AUTO_REMOVE , 1)); 342 fm ; 344 i( `rcmp ( gv [0], "set_log_config") == 0) { 345 i( nf != 2) 346 fm ; 347 i( `rcmp ( gv [1], "db_log_auto_remove") == 0) 348 ( `__log_t_cfig ( dbv , DB_LOG_AUTO_REMOVE , 1)); 349 i( `rcmp ( gv [1], "db_log_direct") == 0) 350 ( `__log_t_cfig ( dbv , DB_LOG_DIRECT , 1)); 351 i( `rcmp ( gv [1], "db_log_dsync") == 0) 352 ( `__log_t_cfig ( dbv , DB_LOG_DSYNC , 1)); 353 i( `rcmp ( gv [1], "db_log_in_memory") == 0) 354 ( `__log_t_cfig ( dbv , DB_LOG_IN_MEMORY , 1)); 355 i( `rcmp ( gv [1], "db_log_zero") == 0) 356 ( `__log_t_cfig ( dbv , DB_LOG_ZERO , 1)); 357 fm ; 360 `CONFIG_UINT32 ("t_lg_bsize", __log_t_lg_bsize ); 361 `CONFIG_INT ("t_lg_femode", __log_t_lg_femode ); 362 `CONFIG_UINT32 ("t_lg_max", __log_t_lg_max ); 363 `CONFIG_UINT32 ("t_lg_gimax", __log_t_lg_gimax ); 365 i( `rcmp ( gv [0], "set_lg_dir") == 0 || 366 `rcmp ( gv [0], "db_log_dir") == 0) { 367 i( nf != 2) 368 fm ; 369 ( `__log_t_lg_d ( dbv , gv [1])); 372 i( `rcmp ( gv [0], "set_lk_detect") == 0) { 373 i( nf != 2) 374 fm ; 375 i( `rcmp ( gv [1], "db_lock_default") == 0) 376 ags = DB_LOCK_DEFAULT ; 377 i( `rcmp ( gv [1], "db_lock_expire") == 0) 378 ags = DB_LOCK_EXPIRE ; 379 i( `rcmp ( gv [1], "db_lock_maxlocks") == 0) 380 ags = DB_LOCK_MAXLOCKS ; 381 i( `rcmp ( gv [1], "db_lock_maxwrite") == 0) 382 ags = DB_LOCK_MAXWRITE ; 383 i( `rcmp ( gv [1], "db_lock_minlocks") == 0) 384 ags = DB_LOCK_MINLOCKS ; 385 i( `rcmp ( gv [1], "db_lock_minwrite") == 0) 386 ags = DB_LOCK_MINWRITE ; 387 i( `rcmp ( gv [1], "db_lock_oldest") == 0) 388 ags = DB_LOCK_OLDEST ; 389 i( `rcmp ( gv [1], "db_lock_random") == 0) 390 ags = DB_LOCK_RANDOM ; 391 i( `rcmp ( gv [1], "db_lock_youngest") == 0) 392 ags = DB_LOCK_YOUNGEST ; 394 fm ; 395 ( `__lock_t_lk_de ( dbv , ags )); 398 `CONFIG_UINT32 ("t_lk_max_locks", __lock_t_lk_max_locks ); 399 `CONFIG_UINT32 ("t_lk_max_locks", __lock_t_lk_max_locks ); 400 `CONFIG_UINT32 ("t_lk_max_objes", __lock_t_lk_max_objes ); 401 `CONFIG_UINT32 ("t_lk_is", __lock_t_lk_is ); 403 i( `rcmp ( gv [0], "set_lock_timeout") == 0) { 404 i( nf != 2) 405 fm ; 406 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 407 ( `__lock_t_v_timeout ( 408 dbv , ( u_t32_t ) uv1 , DB_SET_LOCK_TIMEOUT )); 411 `CONFIG_INT ("t_mp_max_ݒfd", __memp_t_mp_max_ݒfd ); 413 i( `rcmp ( gv [0], "set_mp_max_write") == 0) { 414 i( nf != 3) 415 fm ; 416 `CONFIG_GET_INT ( gv [1], & lv1 ); 417 `CONFIG_GET_INT ( gv [2], & lv2 ); 418 ( `__memp_t_mp_max_wre ( 419 dbv , () lv1 , ( db_timeout_t ) lv2 )); 422 `CONFIG_UINT32 ("t_mp_mmsize", __memp_t_mp_mmsize ); 424 i( `rcmp ( gv [0], "set_region_init") == 0) { 425 i( nf != 2) 426 fm ; 427 `CONFIG_GET_INT ( gv [1], & lv1 ); 428 i( lv1 != 0 &&v1 != 1) 429 fm ; 430 ( `__v_t_ags ( 431 dbv , DB_REGION_INIT , lv1 == 0 ? 0 : 1)); 434 i( `rcmp ( gv [0], "set_shm_key") == 0) { 435 i( nf != 2) 436 fm ; 437 `CONFIG_GET_LONG ( gv [1], & lv1 ); 438 ( `__v_t_shm_key ( dbv , lv1 )); 445 `CONFIG_UINT32 ("t_s_s", __mux_t_s_s ); 447 i( `rcmp ( gv [0], "set_tmp_dir") == 0 || 448 `rcmp ( gv [0], "db_tmp_dir") == 0) { 449 i( nf != 2) 450 fm ; 451 ( `__v_t_tmp_d ( dbv , gv [1])); 454 `CONFIG_UINT32 ("t_tx_max", __txn_t_tx_max ); 456 i( `rcmp ( gv [0], "set_txn_timeout") == 0) { 457 i( nf != 2) 458 fm ; 459 `CONFIG_GET_UINT32 ( gv [1], & uv1 ); 460 ( `__lock_t_v_timeout ( 461 dbv , ( u_t32_t ) uv1 , DB_SET_TXN_TIMEOUT )); 464 i( `rcmp ( gv [0], "set_verbose") == 0) { 465 i( nf != 2) 466 fm ; 467 i( `rcmp ( gv [1], "db_verb_deadlock") == 0) 468 ags = DB_VERB_DEADLOCK ; 469 i( `rcmp ( gv [1], "db_verb_fileops") == 0) 470 ags = DB_VERB_FILEOPS ; 471 i( `rcmp ( gv [1], "db_verb_fileops_all") == 0) 472 ags = DB_VERB_FILEOPS_ALL ; 473 i( `rcmp ( gv [1], "db_verb_recovery") == 0) 474 ags = DB_VERB_RECOVERY ; 475 i( `rcmp ( gv [1], "db_verb_register") == 0) 476 ags = DB_VERB_REGISTER ; 477 i( `rcmp ( gv [1], "db_verb_replication") == 0) 478 ags = DB_VERB_REPLICATION ; 479 i( `rcmp ( gv [1], "db_verb_rep_elect") == 0) 480 ags = DB_VERB_REP_ELECT ; 481 i( `rcmp ( gv [1], "db_verb_rep_lease") == 0) 482 ags = DB_VERB_REP_LEASE ; 483 i( `rcmp ( gv [1], "db_verb_rep_misc") == 0) 484 ags = DB_VERB_REP_MISC ; 485 i( `rcmp ( gv [1], "db_verb_rep_msgs") == 0) 486 ags = DB_VERB_REP_MSGS ; 487 i( `rcmp ( gv [1], "db_verb_rep_sync") == 0) 488 ags = DB_VERB_REP_SYNC ; 489 i( `rcmp ( gv [1], "db_verb_repmgr_connfail") == 0) 490 ags = DB_VERB_REPMGR_CONNFAIL ; 491 i( `rcmp ( gv [1], "db_verb_repmgr_misc") == 0) 492 ags = DB_VERB_REPMGR_MISC ; 493 i( `rcmp ( gv [1], "db_verb_waitsfor") == 0) 494 ags = DB_VERB_WAITSFOR ; 496 fm ; 497 ( `__v_t_vbo ( dbv , ags , 1)); 500 `__db_rx ( v , "uecognizedame-vu: %s", s ); 501 ( EINVAL ); 502 } } 512 $__cfig_l ( put , gv ) 513 * put , * gv [ CONFIG_SLOTS ]; 515 cou ; 516 ** ; 518 cou = 0, = gv ; (* = `rp (& put , " \t\n")! NULL ;) 519 i(** != '\0') { 520 ++ cou ; 521 i(++ =& gv [ CONFIG_SLOTS - 1]) { 522 * = NULL ; 526 ( cou ); 527 } } @../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/log.h " 18 ~"dbc/mp.h " 19 ~"dbc/txn.h " 21 __v__i __P (( ENV *)); 22 __v_r_e __P (( ENV *)); 31 $__v_chk_ ( dbv , ags ) 32 DB_ENV * dbv ; 33 u_t32_t ags ; 35 DB_THREAD_INFO * ; 36 ENV * v ; 37 t ; 39 v = dbv ->env; 41 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->failchk"); 47 i(! `ALIVE_ON ( v )) { 48 `__db_rx ( v , 50 ( EINVAL ); 53 i( ags != 0) 54 ( `__db_ ( v , "DB_ENV->failchk", 0)); 56 `ENV_ENTER ( v , ); 62 i(( t = `__v__i ( v )) != 0) 63 r ; 65 i( `LOCKING_ON ( v && ( t = `__lock_chk (env)) != 0) 66 r ; 68 i( `TXN_ON ( v ) && 69 (( t = `__txn_chk ( v )) != 0 || 70 ( t = `__dbg_chk ( v )) != 0)) 71 r ; 74 `__v_r_e ( v ); 76 #ifde HAVE_MUTEX_SUPPORT 77 t = `__mut_chk ( v ); 80 r : `ENV_LEAVE ( v , ); 81 ( t ); 82 } } 91 $__v_thad_ ( v , durg_ti ) 92 ENV * v ; 93 durg_ti ; 95 DB_ENV * dbv ; 96 DB_HASHTAB * hb ; 97 REGENV * nv ; 98 REGINFO * f ; 99 THREAD_INFO * thad ; 100 t ; 102 dbv = v ->dbenv; 103 f = v -> gfo ; 104 nv = f -> imy ; 106 i( nv -> thad_off = INVALID_ROFF ) { 107 i( dbv -> thr_max == 0) { 108 v -> thr_hashb = NULL ; 109 i( `ALIVE_ON ( v )) { 110 `__db_rx ( v , 112 ( EINVAL ); 117 i(! durg_ti ) { 118 `__db_rx ( v , 120 ( EINVAL ); 123 i(( t = 124 `__v_loc ( f , ( THREAD_INFO ), & thad )) != 0) { 125 `__db_r ( v , t , 127 ( t ); 129 `memt ( thad , 0, (*thread)); 130 nv -> thad_off = `R_OFFSET ( f , thad ); 135 thad -> thr_nbuck = `__db_bsize ( dbv -> thr_max / 8); 136 i(( t = `__v_loc ( f , 137 thad -> thr_nbuck * ( DB_HASHTAB ), & hb )) != 0) 138 ( t ); 139 thad -> thr_hashoff = `R_OFFSET ( f , hb ); 140 `__db_hash ( hb , thad -> thr_nbuck ); 141 thad -> thr_max = dbv ->thr_max; 143 thad = `R_ADDR ( f , nv -> thad_off ); 144 hb = `R_ADDR ( f , thad -> thr_hashoff ); 147 v -> thr_hashb = hb ; 148 v -> thr_nbuck = thad ->thr_nbucket; 149 dbv -> thr_max = thad ->thr_max; 151 } } 160 $__v_thad_deroy ( v ) 161 ENV * v ; 163 DB_HASHTAB * hb ; 164 DB_THREAD_INFO * , * ; 165 REGENV * nv ; 166 REGINFO * f ; 167 THREAD_INFO * thad ; 168 u_t32_t i ; 170 f = v -> gfo ; 171 nv = f -> imy ; 172 i( nv -> thad_off = INVALID_ROFF ) 175 thad = `R_ADDR ( f , nv -> thad_off ); 176 i(( hb = v -> thr_hashb ! NULL ) { 177 i = 0; i < v -> thr_nbuck ; i++) { 178 = `SH_TAILQ_FIRST (& hb [ i ], __db_thad_fo ); 179 ; ! NULL ; i ) { 180 = `SH_TAILQ_NEXT ( , 181 dbth_lks , __db_thad_fo ); 182 `__v_loc_ ( f , ); 185 `__v_loc_ ( f , hb ); 188 `__v_loc_ ( f , thad ); 190 } } 199 $__v__i ( v ) 200 ENV * v ; 202 DB_ENV * dbv ; 203 DB_HASHTAB * hb ; 204 DB_THREAD_INFO * ; 205 REGENV * nv ; 206 REGINFO * f ; 207 THREAD_INFO * thad ; 208 u_t32_t i ; 209 uŚ , t ; 211 i(( hb = v -> thr_hashb = NULL ) 212 ( EINVAL ); 214 dbv = v ->dbenv; 215 f = v -> gfo ; 216 nv = f -> imy ; 217 thad = `R_ADDR ( f , nv -> thad_off ); 218 uŚ = 0; 220 i = 0; i < v -> thr_nbuck ; i++) 221 `SH_TAILQ_FOREACH ( , & hb [ i ], dbth_lks , __db_thad_fo ) { 222 i( -> dbth_e = THREAD_SLOT_NOT_IN_USE || 223 ( -> dbth_e = THREAD_OUT && 224 thad -> thr_cou <had-> thr_max )) 226 i( dbv -> `is_ive ( 227 dbv , -> dbth_pid , ip-> dbth_tid , 0)) 229 i( -> dbth_e = THREAD_BLOCKED ) { 230 -> dbth_e = THREAD_BLOCKED_DEAD ; 231 uŚ = 1; 234 i( -> dbth_e = THREAD_OUT ) { 235 -> dbth_e = THREAD_SLOT_NOT_IN_USE ; 238 ( `__db_ed ( v , 240 -> dbth_pid , ip-> dbth_tid )); 243 i( uŚ == 0) 246 i = 0; i < v -> thr_nbuck ; i++) 247 `SH_TAILQ_FOREACH ( , & hb [ i ], dbth_lks , __db_thad_fo ) 248 i( -> dbth_e = THREAD_BLOCKED_DEAD && 249 ( t = `__memp_uŚ_bufrs ( v , )) != 0) 250 ( t ); 253 } } 260 $__v_r_e ( v ) 261 ENV * v ; 263 DB_HASHTAB * hb ; 264 DB_THREAD_INFO * ; 265 u_t32_t i ; 267 hb = v -> thr_hashb ; 268 i = 0; i < v -> thr_nbuck ; i++) 269 `SH_TAILQ_FOREACH ( , & hb [ i ], dbth_lks , __db_thad_fo ) 270 i( -> dbth_e = THREAD_BLOCKED_DEAD ) 271 -> dbth_e = THREAD_SLOT_NOT_IN_USE ; 272 } } 274 s__db_thadid { 275 pid_t mpid ; 276 db_thadid_t mtid ; 283 $__v_t_e ( v , p , e ) 284 ENV * v ; 285 DB_THREAD_INFO ** p ; 286 DB_THREAD_STATE e ; 288 __db_thadid id ; 289 DB_ENV * dbv ; 290 DB_HASHTAB * hb ; 291 DB_THREAD_INFO * ; 292 REGENV * nv ; 293 REGINFO * f ; 294 THREAD_INFO * thad ; 295 u_t32_t dx ; 296 t ; 298 dbv = v ->dbenv; 299 hb = v -> thr_hashb ; 301 dbv -> `thad_id (dbv, & id . pid , &id. tid ); 307 #ifde HAVE_SIMPLE_THREAD_TYPE 312 dx = ( u_t32_t )(( u_t ) id . pid ^ (u_t)id. tid ); 314 dx = `__ham_func5 ( NULL , & id . tid , (id.tid)); 316 dx % v -> thr_nbuck ; 317 `SH_TAILQ_FOREACH ( , & hb [ dx ], dbth_lks , __db_thad_fo ) { 318 #ifde HAVE_SIMPLE_THREAD_TYPE 319 i( id . pid = -> dbth_pid && id. tid =-> dbth_tid ) 322 i( `memcmp (& id . pid , & -> dbth_pid , (id.pid)) != 0) 324 i( `memcmp (& id . tid , & -> dbth_tid , (id.tid)) != 0) 330 #ifde DIAGNOSTIC 332 i( e = THREAD_VERIFY ) { 333 `DB_ASSERT ( v , ! NULL && ip-> dbth_e ! THREAD_OUT ); 338 * p = NULL ; 339 t = 0; 340 i( = NULL ) { 341 f = v -> gfo ; 342 nv = f -> imy ; 343 thad = `R_ADDR ( f , nv -> thad_off ); 344 `MUTEX_LOCK ( v , nv -> mtx_gv ); 352 i( thad -> thr_cou >thad-> thr_max ) { 353 `SH_TAILQ_FOREACH ( 354 , & hb [ dx ], dbth_lks , __db_thad_fo ) 355 i( -> dbth_e = THREAD_SLOT_NOT_IN_USE || 356 ( -> dbth_e = THREAD_OUT && 357 `ALIVE_ON ( v && ! dbv -> `is_ive ( 358 dbv , -> dbth_pid , ip-> dbth_tid , 0))) 361 i( ! NULL ) { 362 `DB_ASSERT ( v , -> dbth_pcou == 0); 363 ; 367 thad -> thr_cou ++; 368 i(( t = `__v_loc ( f , 369 ( DB_THREAD_INFO ), & )) == 0) { 370 `memt ( , 0, (*ip)); 377 `SH_TAILQ_INSERT_HEAD ( 378 & hb [ dx ], , dbth_lks , __db_thad_fo ); 379 -> dbth_pcou = 0; 380 -> dbth_pmax = PINMAX ; 381 -> dbth_pli = `R_OFFSET ( f , ip-> dbth_py ); 383 : -> dbth_pid = id . pid ; 384 -> dbth_tid = id . tid ; 385 -> dbth_e = e ; 387 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 389 -> dbth_e = e ; 390 * p = ; 392 ( t ); 393 } } 403 $__v_thad_id_rg ( dbv , pid , tid , buf ) 404 DB_ENV * dbv ; 405 pid_t pid ; 406 db_thadid_t tid ; 407 * buf ; 409 #ifde HAVE_SIMPLE_THREAD_TYPE 410 #ifde UINT64_FMT 411 fmt [20]; 413 `tf ( fmt , (fmt), "%s/%s", UINT64_FMT , UINT64_FMT); 414 `tf ( buf , 415 DB_THREADID_STRLEN , fmt , ( u_t64_t ) pid , (u_t64_t)( u_t ) tid ); 417 `tf ( buf , DB_THREADID_STRLEN , "%lu/%lu", ( u_lg ) pid , (u_lg) tid ); 420 #ifde UINT64_FMT 421 fmt [20]; 423 `tf ( fmt , (fmt), "%s/TID", UINT64_FMT ); 424 `tf ( buf , DB_THREADID_STRLEN , fmt , ( u_t64_t ) pid ); 426 `tf ( buf , DB_THREADID_STRLEN , "%lu/TID", ( u_lg ) pid ); 429 `COMPQUIET ( dbv , NULL ); 430 `COMPQUIET (*( u_t8_t *)& tid , 0); 432 ( buf ); 433 } } @../env/env_file.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__db_fe_exnd ( v , fhp , size ) 21 ENV * v ; 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 ( v , 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 ( v , fhp , ges , MEGABYTE , tive )) != 0) 46 r ; 47 i(( t = `__os_wre ( v , fhp , buf , FILE_EXTEND_IO_SIZE , & nw )) != 0) 48 r ; 50 r : `__os_ ( v , buf ); 53 } } 62 $__db_fe_mui_wre ( v , th ) 63 ENV * v ; 64 cڡ * th ; 66 DB_FH * fhp ; 67 u_t32_t mbys , bys ; 68 t ; 70 i(( t = `__os_ݒ ( v , th , 0, DB_OSO_REGION , 0, & fhp )) == 0 && 71 ( t = `__os_iofo ( v , th , fhp , & mbys , & bys , NULL )) == 0) { 78 i(( t = 79 `__db_fe_wre ( v , fhp , mbys , bys , 255)) != 0) 80 r ; 81 i(( t = 82 `__db_fe_wre ( v , fhp , mbys , bys , 0)) != 0) 83 r ; 84 i(( t = 85 `__db_fe_wre ( v , fhp , mbys , bys , 255)) != 0) 86 r ; 88 `__db_r ( v , t , "%s", th ); 90 r : i( fhp ! NULL ) 91 () `__os_ohd ( v , fhp ); 92 ( t ); 93 } } 103 $__db_fe_wre ( v , fhp , mbys , bys , n ) 104 ENV * v ; 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 ( v , FILE_WRITE_IO_SIZE , & buf )) != 0) 116 ( t ); 117 `memt ( buf , n , FILE_WRITE_IO_SIZE ); 119 i(( t = `__os_ek ( v , 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 v , 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 ( v , fhp , buf , n , & nw )) != 0) 129 r ; 132 t = `__os_fsync ( v , fhp ); 134 r : `__os_ ( v , 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 __db_v_ __P (( DB_ENV *)); 30 __v_r __P ((cڡ DB_ENV *, , const *, ...)); 31 __v_rx __P ((cڡ DB_ENV *, const *, ...)); 32 __v_g_da_ds __P (( DB_ENV *, const ***)); 33 __v_g_ags __P (( DB_ENV *, u_t32_t *)); 34 __v_g_home __P (( DB_ENV *, const **)); 35 __v_g_rmed_d_mode __P (( DB_ENV *, const **)); 36 __v_g_shm_key __P (( DB_ENV *, *)); 37 __v_g_thad_cou __P (( DB_ENV *, u_t32_t *)); 38 __v_g_tmp_d __P (( DB_ENV *, const **)); 39 __v_g_vbo __P (( DB_ENV *, u_t32_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 ENV * v ; 68 t ; 80 i( ags !0 && ! `LF_ISSET ( DB_RPCCLIENT )) 81 ( EINVAL ); 84 i(( t = `__os_oc ( NULL , 1, ( DB_ENV ), & dbv )) != 0) 85 ( t ); 86 i(( t = `__os_oc ( NULL , 1, ( ENV ), & v )) != 0) 87 r ; 88 dbv -> v =nv; 89 v -> dbv = dbenv; 91 #ifde HAVE_RPC 92 i( `LF_ISSET ( DB_RPCCLIENT )) 93 `F_SET ( dbv , DB_ENV_RPCCLIENT ); 95 i(( t = `__db_v_ ( dbv )) != 0 || 96 ( t = `__lock_v_ ( dbv )) != 0 || 97 ( t = `__log_v_ ( dbv )) != 0 || 98 ( t = `__memp_v_ ( dbv )) != 0 || 99 #ifde HAVE_REPLICATION 100 ( t = `__p_v_ ( dbv )) != 0 || 102 ( t = `__txn_v_ ( dbv ))) 103 r ; 105 #ifde HAVE_RPC 110 i( `F_ISSET ( dbv , DB_ENV_RPCCLIENT )) { 111 `__db_dbv_ ( dbv ); 117 dbv -> ݒ = __db_v_ݒ_wp ; 118 dbv -> o = __db_v_o_wp ; 122 * dbv = dbv ; 125 r : `__db_v_deroy ( dbv ); 126 ( t ); 127 } } 136 $__db_v_deroy ( dbv ) 137 DB_ENV * dbv ; 139 `__lock_v_deroy ( dbv ); 140 `__log_v_deroy ( dbv ); 141 `__memp_v_deroy ( dbv ); 142 #ifde HAVE_REPLICATION 143 `__p_v_deroy ( dbv ); 145 `__txn_v_deroy ( dbv ); 156 `memt ( dbv -> v , CLEAR_BYTE , ( ENV )); 157 `__os_ ( NULL , dbv -> v ); 159 `memt ( dbv , CLEAR_BYTE , ( DB_ENV )); 160 `__os_ ( NULL , dbv ); 161 } } 168 $__db_v_ ( dbv ) 169 DB_ENV * dbv ; 171 ENV * v ; 181 dbv -> cdsgroup_beg = __cdsgroup_beg ; 182 dbv -> o = __v_o_ ; 183 dbv -> dbmove = __v_dbmove_ ; 184 dbv -> dbme = __v_dbme_ ; 185 dbv -> r = __v_r ; 186 dbv -> rx = __v_rx ; 187 dbv -> chk = __v_chk_ ; 188 dbv -> feid_t = __v_feid_t_ ; 189 dbv -> g_che_max = __memp_g_che_max ; 190 dbv -> g_chesize = __memp_g_chesize ; 191 dbv -> g_da_ds = __v_g_da_ds ; 192 dbv -> g_y_ags = __v_g_y_ags ; 193 dbv -> g_r = __v_g_r ; 194 dbv -> g_rfe = __v_g_rfe ; 195 dbv -> g_fx = __v_g_fx ; 196 dbv -> g_ags = __v_g_ags ; 197 dbv -> g_home = __v_g_home ; 198 dbv -> g_rmed_d_mode = __v_g_rmed_d_mode ; 199 dbv -> g_lg_bsize = __log_g_lg_bsize ; 200 dbv -> g_lg_d = __log_g_lg_d ; 201 dbv -> g_lg_femode = __log_g_lg_femode ; 202 dbv -> g_lg_max = __log_g_lg_max ; 203 dbv -> g_lg_gimax = __log_g_lg_gimax ; 204 dbv -> g_lk_cis = __lock_g_lk_cis ; 205 dbv -> g_lk_de = __lock_g_lk_de ; 206 dbv -> g_lk_max_locks = __lock_g_lk_max_locks ; 207 dbv -> g_lk_max_locks = __lock_g_lk_max_locks ; 208 dbv -> g_lk_max_objes = __lock_g_lk_max_objes ; 209 dbv -> g_lk_is = __lock_g_lk_is ; 210 dbv -> g_mp_max_ݒfd = __memp_g_mp_max_ݒfd ; 211 dbv -> g_mp_max_wre = __memp_g_mp_max_wre ; 212 dbv -> g_mp_mmsize = __memp_g_mp_mmsize ; 213 dbv -> g_msgfe = __v_g_msgfe ; 214 dbv -> g_ݒ_ags = __v_g_ݒ_ags ; 215 dbv -> g_shm_key = __v_g_shm_key ; 216 dbv -> g_thad_cou = __v_g_thad_cou ; 217 dbv -> g_timeout = __lock_g_v_timeout ; 218 dbv -> g_tmp_d = __v_g_tmp_d ; 219 dbv -> g_tx_max = __txn_g_tx_max ; 220 dbv -> g_tx_timeamp = __txn_g_tx_timeamp ; 221 dbv -> g_vbo = __v_g_vbo ; 222 dbv -> is_bigdn = __db_isbigdn ; 223 dbv -> lock_de = __lock_de_ ; 224 dbv -> lock_g = __lock_g_ ; 225 dbv -> lock_id = __lock_id_ ; 226 dbv -> lock_id_ = __lock_id__ ; 227 dbv -> lock_put = __lock_put_ ; 228 dbv -> lock_ = __lock__ ; 229 dbv -> lock__t = __lock__t_ ; 230 dbv -> lock_vec = __lock_vec_ ; 231 dbv -> log_chive = __log_chive_ ; 232 dbv -> log_curs = __log_curs_ ; 233 dbv -> log_fe = __log_fe_ ; 234 dbv -> log_ush = __log_ush_ ; 235 dbv -> log_g_cfig = __log_g_cfig ; 236 dbv -> log_tf = __log_tf_pi ; 237 dbv -> log_put = __log_put_ ; 238 dbv -> log_t_cfig = __log_t_cfig ; 239 dbv -> log_ = __log__ ; 240 dbv -> log__t = __log__t_ ; 241 dbv -> l_t = __v_l_t_ ; 242 dbv -> memp_f = __memp_f_ ; 243 dbv -> memp_gi = __memp_gi_ ; 244 dbv -> memp_ = __memp__ ; 245 dbv -> memp__t = __memp__t_ ; 246 dbv -> memp_sync = __memp_sync_ ; 247 dbv -> memp_ick = __memp_ick_ ; 248 dbv -> mux_loc = __mux_loc_ ; 249 dbv -> mux_ = __mux__ ; 250 dbv -> mux_g_ign = __mux_g_ign ; 251 dbv -> mux_g_emt = __mux_g_emt ; 252 dbv -> mux_g_max = __mux_g_max ; 253 dbv -> mux_g_s_s = __mux_g_s_s ; 254 dbv -> mux_lock = __mux_lock_ ; 255 dbv -> mux_t_ign = __mux_t_ign ; 256 dbv -> mux_t_emt = __mux_t_emt ; 257 dbv -> mux_t_max = __mux_t_max ; 258 dbv -> mux_t_s_s = __mux_t_s_s ; 259 dbv -> mux_ = __mux__ ; 260 dbv -> mux__t = __mux__t_ ; 261 dbv -> mux_uock = __mux_uock_ ; 262 dbv -> ݒ = __v_ݒ_ ; 263 dbv -> move = __v_move ; 264 dbv -> p_e = __p_e ; 265 dbv -> p_ush = __p_ush ; 266 dbv -> p_g_ockskew = __p_g_ockskew ; 267 dbv -> p_g_cfig = __p_g_cfig ; 268 dbv -> p_g_lim = __p_g_lim ; 269 dbv -> p_g_nses = __p_g_nses ; 270 dbv -> p_g_iܙy = __p_g_iܙy ; 271 dbv -> p_g_que = __p_g_que ; 272 dbv -> p_g_timeout = __p_g_timeout ; 273 dbv -> p_oss_mesge = __p_oss_mesge ; 274 dbv -> p_t_ockskew = __p_t_ockskew ; 275 dbv -> p_t_cfig = __p_t_cfig ; 276 dbv -> p_t_lim = __p_t_lim ; 277 dbv -> p_t_nses = __p_t_nses ; 278 dbv -> p_t_iܙy = __p_t_iܙy ; 279 dbv -> p_t_que = __p_t_que ; 280 dbv -> p_t_timeout = __p_t_timeout ; 281 dbv -> p_t_t = __p_t_t ; 282 dbv -> p_t = __p_t ; 283 dbv -> p_ = __p__ ; 284 dbv -> p__t = __p__t_ ; 285 dbv -> p_sync = __p_sync ; 286 dbv -> pmgr_add_me_se = __pmgr_add_me_se ; 287 dbv -> pmgr_g_ack_picy = __pmgr_g_ack_picy ; 288 dbv -> pmgr_t_ack_picy = __pmgr_t_ack_picy ; 289 dbv -> pmgr_t_lol_se = __pmgr_t_lol_se ; 290 dbv -> pmgr_se_li = __pmgr_se_li ; 291 dbv -> pmgr_t = __pmgr_t ; 292 dbv -> pmgr_ = __pmgr__ ; 293 dbv -> pmgr__t = __pmgr__t_ ; 294 dbv -> t_loc = __v_t_loc ; 295 dbv -> t_p_dich = __v_t_p_dich ; 296 dbv -> t_che_max = __memp_t_che_max ; 297 dbv -> t_chesize = __memp_t_chesize ; 298 dbv -> t_da_d = __v_t_da_d ; 299 dbv -> t_y = __v_t_y ; 300 dbv -> t_r = __v_t_r ; 301 dbv -> t_rfe = __v_t_rfe ; 302 dbv -> t_fx = __v_t_fx ; 303 dbv -> t_evt_nify = __v_t_evt_nify ; 304 dbv -> t_edback = __v_t_edback ; 305 dbv -> t_ags = __v_t_ags ; 306 dbv -> t_rmed_d_mode = __v_t_rmed_d_mode ; 307 dbv -> t_ilive = __v_t_ilive ; 308 dbv -> t_lg_bsize = __log_t_lg_bsize ; 309 dbv -> t_lg_d = __log_t_lg_d ; 310 dbv -> t_lg_femode = __log_t_lg_femode ; 311 dbv -> t_lg_max = __log_t_lg_max ; 312 dbv -> t_lg_gimax = __log_t_lg_gimax ; 313 dbv -> t_lk_cis = __lock_t_lk_cis ; 314 dbv -> t_lk_de = __lock_t_lk_de ; 315 dbv -> t_lk_max_locks = __lock_t_lk_max_locks ; 316 dbv -> t_lk_max_locks = __lock_t_lk_max_locks ; 317 dbv -> t_lk_max_objes = __lock_t_lk_max_objes ; 318 dbv -> t_lk_is = __lock_t_lk_is ; 319 dbv -> t_mp_max_ݒfd = __memp_t_mp_max_ݒfd ; 320 dbv -> t_mp_max_wre = __memp_t_mp_max_wre ; 321 dbv -> t_mp_mmsize = __memp_t_mp_mmsize ; 322 dbv -> t_msg = __v_t_msg ; 323 dbv -> t_msgfe = __v_t_msgfe ; 324 dbv -> t_nic = __v_t_nic ; 325 dbv -> t_c_rv = __v_t_c_rv ; 326 dbv -> t_shm_key = __v_t_shm_key ; 327 dbv -> t_thad_cou = __v_t_thad_cou ; 328 dbv -> t_thad_id = __v_t_thad_id ; 329 dbv -> t_thad_id_rg = __v_t_thad_id_rg ; 330 dbv -> t_timeout = __lock_t_v_timeout ; 331 dbv -> t_tmp_d = __v_t_tmp_d ; 332 dbv -> t_tx_max = __txn_t_tx_max ; 333 dbv -> t_tx_timeamp = __txn_t_tx_timeamp ; 334 dbv -> t_vbo = __v_t_vbo ; 335 dbv -> _t = __v__t_ ; 336 dbv -> txn_beg = __txn_beg_ ; 337 dbv -> txn_checkpot = __txn_checkpot_ ; 338 dbv -> txn_cov = __txn_cov_ ; 339 dbv -> txn_ = __txn__ ; 340 dbv -> txn__t = __txn__t_ ; 344 dbv -> dbt = __db_dbt ; 347 dbv -> shm_key = INVALID_REGION_SEGID ; 348 dbv -> thad_id = __os_id ; 349 dbv -> thad_id_rg = __v_thad_id_rg ; 351 v = dbv ->env; 352 `__os_id ( NULL , & v -> pid_che , NULL); 354 v -> db_f = 0; 355 `TAILQ_INIT (& v -> fdli ); 357 i(! `__db_isbigdn ()) 358 `F_SET ( v , ENV_LITTLEENDIAN ); 359 `F_SET ( v , ENV_NO_OUTPUT_SET ); 362 } } 369 #ifde STDC_HEADERS 370 $__v_r (cڡ DB_ENV * dbv , r , cڡ * fmt , ...) 372 $__v_r ( dbv , r , fmt , va_i ) 373 cڡ DB_ENV * dbv ; 374 r ; 375 cڡ * fmt ; 376 va_d 380 `DB_REAL_ERR ( dbv , r , DB_ERROR_SET , 1, fmt ); 381 } } 388 #ifde STDC_HEADERS 389 $__v_rx (cڡ DB_ENV * dbv , cڡ * fmt , ...) 391 $__v_rx ( dbv , fmt , va_i ) 392 cڡ DB_ENV * dbv ; 393 cڡ * fmt ; 394 va_d 398 `DB_REAL_ERR ( dbv , 0, DB_ERROR_NOT_SET , 1, fmt ); 399 } } 402 $__v_g_home ( dbv , hom ) 403 DB_ENV * dbv ; 404 cڡ ** hom ; 406 ENV * v ; 408 v = dbv ->env; 410 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->get_home"); 411 * hom = v -> db_home ; 414 } } 424 $__v_t_loc ( dbv , m_func , _func , _func ) 425 DB_ENV * dbv ; 426 *(* m_func `__P (( size_t )); 427 *(* _func `__P ((*, size_t )); 428 (* _func `__P ((*)); 430 ENV * v ; 432 v = dbv ->env; 434 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_alloc"); 436 dbv -> db_mloc = m_func ; 437 dbv -> db_loc = _func ; 438 dbv -> db_ = _func ; 440 } } 447 $__v_t_p_dich ( dbv , p_dich ) 448 DB_ENV * dbv ; 449 (* p_dich `__P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 451 ENV * v ; 453 v = dbv ->env; 455 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_app_dispatch"); 457 dbv -> p_dich =pp_dispatch; 459 } } 468 $__v_g_y_ags ( dbv , ag ) 469 DB_ENV * dbv ; 470 u_t32_t * ag ; 472 #ifde HAVE_CRYPTO 473 DB_CIPHER * db_ch ; 475 ENV * v ; 477 v = dbv ->env; 479 #ifde HAVE_CRYPTO 480 db_ch = v -> yo_hd ; 481 i( db_ch ! NULL && db_ch-> g = CIPHER_AES ) 482 * ag = DB_ENCRYPT_AES ; 484 * ag = 0; 487 `COMPQUIET ( ag , 0); 488 `__db_rx ( v , 490 ( DB_OPNOTSUP ); 492 } } 501 $__v_t_y ( dbv , sswd , ags ) 502 DB_ENV * dbv ; 503 cڡ * sswd ; 504 u_t32_t ags ; 506 #ifde HAVE_CRYPTO 507 DB_CIPHER * db_ch ; 508 ENV * v ; 509 t ; 511 v = dbv ->env; 513 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_encrypt"); 514 #OK_CRYPTO_FLAGS ( DB_ENCRYPT_AES ) ) 516 i( ags !0 && `LF_ISSET (~ OK_CRYPTO_FLAGS )) 517 ( `__db_ ( v , "DB_ENV->set_encrypt", 0)); 519 i( sswd = NULL || ` (passwd) == 0) { 520 `__db_rx ( v , "Emptyassword specifiedo set_encrypt"); 521 ( EINVAL ); 523 i(! `CRYPTO_ON ( v )) { 524 i(( t = `__os_oc ( v , 1, ( DB_CIPHER ), & db_ch )) 526 r ; 527 v -> yo_hd = db_ch ; 529 db_ch = v -> yo_hd ; 531 i( dbv -> sswd ! NULL ) 532 `__os_ ( v , dbv -> sswd ); 533 i(( t = `__os_rdup ( v , sswd , & dbv ->passwd)) != 0) { 534 `__os_ ( v , db_ch ); 535 r ; 540 dbv -> sswd_n = ` (dbv-> sswd ) + 1; 546 `__db_dive_mac ( 547 ( u_t8_t *) dbv -> sswd , dbv-> sswd_n , db_ch -> mac_key ); 548 ags ) { 550 `F_SET ( db_ch , CIPHER_ANY ); 552 DB_ENCRYPT_AES : 553 i(( t = 554 `__yo_gtup ( v , db_ch , CIPHER_AES , 0)) != 0) 555 r1 ; 562 r1 : 563 `__os_ ( v , dbv -> sswd ); 564 `__os_ ( v , db_ch ); 565 v -> yo_hd = NULL ; 566 r : 567 ( t ); 569 `COMPQUIET ( sswd , NULL ); 570 `COMPQUIET ( ags , 0); 572 `__db_rx ( dbv -> v , 574 ( DB_OPNOTSUP ); 576 } } 577 #ide HAVE_BREW 580 cڡ FLAG_MAP gEnvM [] = { 581 { DB_AUTO_COMMIT , DB_ENV_AUTO_COMMIT }, 582 { DB_CDB_ALLDB , DB_ENV_CDB_ALLDB }, 583 { DB_DIRECT_DB , DB_ENV_DIRECT_DB }, 584 { DB_DSYNC_DB , DB_ENV_DSYNC_DB }, 585 { DB_MULTIVERSION , DB_ENV_MULTIVERSION }, 586 { DB_NOLOCKING , DB_ENV_NOLOCKING }, 587 { DB_NOMMAP , DB_ENV_NOMMAP }, 588 { DB_NOPANIC , DB_ENV_NOPANIC }, 589 { DB_OVERWRITE , DB_ENV_OVERWRITE }, 590 { DB_REGION_INIT , DB_ENV_REGION_INIT }, 591 { DB_TIME_NOTGRANTED , DB_ENV_TIME_NOTGRANTED }, 592 { DB_TXN_NOSYNC , DB_ENV_TXN_NOSYNC }, 593 { DB_TXN_NOWAIT , DB_ENV_TXN_NOWAIT }, 594 { DB_TXN_SNAPSHOT , DB_ENV_TXN_SNAPSHOT }, 595 { DB_TXN_WRITE_NOSYNC , DB_ENV_TXN_WRITE_NOSYNC }, 596 { DB_YIELDCPU , DB_ENV_YIELDCPU } 605 $__v_m_ags ( agm , msize , ag , outag ) 606 cڡ FLAG_MAP * agm ; 607 u_t msize ; 608 u_t32_t * ag , * outag ; 611 cڡ FLAG_MAP * fmp ; 612 u_t i ; 614 i = 0, fmp = agm ; 615 i < msize / ( agm [0]); ++i, ++ fmp ) 616 i( `FLD_ISSET (* ag , fmp -> ag )) { 617 `FLD_SET (* outag , fmp -> outag ); 618 `FLD_CLR (* ag , fmp -> ag ); 619 i(* ag == 0) 622 } } 630 $__v_tch_ags ( agm , msize , ag , outag ) 631 cڡ FLAG_MAP * agm ; 632 u_t msize ; 633 u_t32_t * ag , * outag ; 635 cڡ FLAG_MAP * fmp ; 636 u_t32_t i ; 638 * outag = 0; 639 i = 0, fmp = agm ; 640 i < msize / ( agm [0]); ++i, ++ fmp ) 641 i( `FLD_ISSET (* ag , fmp -> outag )) 642 `FLD_SET (* outag , fmp -> ag ); 643 } } 646 $__v_g_ags ( dbv , ag ) 647 DB_ENV * dbv ; 648 u_t32_t * ag ; 650 ENV * v ; 652 `__v_tch_ags ( EnvM , (EnvM), & dbv -> ags , ag ); 654 v = dbv ->env; 656 i( v -> gfo ! NULL && 657 (( REGENV *) v -> gfo -> imy )-> nic != 0) 658 `FLD_SET (* ag , DB_PANIC_ENVIRONMENT ); 661 } } 670 $__v_t_ags ( dbv , ags , ) 671 DB_ENV * dbv ; 672 u_t32_t ags ; 673 ; 675 ENV * v ; 676 u_t32_t md_ags ; 677 t ; 679 v = dbv ->env; 681 #OK_FLAGS \ 682 ( DB_AUTO_COMMIT | DB_CDB_ALLDB | DB_DIRECT_DB | \ 683 DB_DSYNC_DB | DB_MULTIVERSION | DB_NOLOCKING | \ 684 DB_NOMMAP | DB_NOPANIC | DB_OVERWRITE | \ 685 DB_PANIC_ENVIRONMENT | DB_REGION_INIT | \ 686 DB_TIME_NOTGRANTED | DB_TXN_NOSYNC | DB_TXN_NOWAIT | \ 687 DB_TXN_SNAPSHOT | DB_TXN_WRITE_NOSYNC | DB_YIELDCPU ) ) 689 i( `LF_ISSET (~ OK_FLAGS )) 690 ( `__db_ ( v , "DB_ENV->set_flags", 0)); 691 i( ) { 692 i(( t = `__db_fcchk ( v , "DB_ENV->set_flags", 693 ags , DB_TXN_NOSYNC , DB_TXN_WRITE_NOSYNC )) != 0) 694 ( t ); 695 i( `LF_ISSET ( DB_DIRECT_DB && `__os_sut_de_io () == 0) { 696 `__db_rx ( v , 698 ( EINVAL ); 702 i( `LF_ISSET ( DB_CDB_ALLDB )) 703 `ENV_ILLEGAL_AFTER_OPEN ( v , 705 i( `LF_ISSET ( DB_PANIC_ENVIRONMENT )) { 706 `ENV_ILLEGAL_BEFORE_OPEN ( v , 708 i( ) { 709 `__db_rx ( v , "Environmentanic set"); 710 () `__v_nic ( v , DB_RUNRECOVERY ); 712 `__v_nic_t ( v , 0); 714 i( `LF_ISSET ( DB_REGION_INIT )) 715 `ENV_ILLEGAL_AFTER_OPEN ( v , 723 i( `LF_ISSET ( DB_TXN_NOSYNC | DB_TXN_WRITE_NOSYNC )) { 724 `F_CLR ( dbv , DB_ENV_TXN_NOSYNC | DB_ENV_TXN_WRITE_NOSYNC ); 725 i(( `LOGGING_ON ( v || ! `F_ISSET nv, ENV_OPEN_CALLED )) && 726 ( t = `__log_t_cfig ( dbv , DB_LOG_IN_MEMORY , 0)) != 0) 727 ( t ); 730 md_ags = 0; 731 `__v_m_ags ( EnvM , (EnvM), & ags , & md_ags ); 732 i( ) 733 `F_SET ( dbv , md_ags ); 735 `F_CLR ( dbv , md_ags ); 738 } } 741 $__v_g_da_ds ( dbv , d ) 742 DB_ENV * dbv ; 743 cڡ *** d ; 745 * d = (cڡ **) dbv -> db_da_d ; 747 } } 756 $__v_t_da_d ( dbv , d ) 757 DB_ENV * dbv ; 758 cڡ * d ; 760 ENV * v ; 761 t ; 763 v = dbv ->env; 770 #DATA_INIT_CNT 20 ) 771 i( dbv -> db_da_d = NULL ) { 772 i(( t = `__os_oc ( v , DATA_INIT_CNT , 773 (**), & dbv -> db_da_d )) != 0) 774 ( t ); 775 dbv -> da_t = DATA_INIT_CNT ; 776 } i( dbv -> da_xt =dbv-> da_t - 2) { 777 dbv -> da_t *= 2; 778 i(( t = `__os_loc ( v , 779 ( u_t ) dbv -> da_t * (**), 780 & dbv -> db_da_d )) != 0) 781 ( t ); 784 t = `__os_rdup ( v , 785 d , & dbv -> db_da_d [dbv-> da_xt ++]); 786 dbv -> db_da_d [dbv-> da_xt ] = NULL ; 787 ( t ); 788 } } 791 $__v_g_rmed_d_mode ( dbv , mod ) 792 DB_ENV * dbv ; 793 cڡ ** mod ; 795 * mod = dbv -> rmed_d_mode ; 797 } } 806 $__v_t_rmed_d_mode ( dbv , mode ) 807 DB_ENV * dbv ; 808 cڡ * mode ; 810 ENV * v ; 811 u_t t ; 812 t ; 814 v = dbv ->env; 816 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_intermediate_dir_mode"); 818 #__SETMODE ( offt , vid_ch , mask ) { \ 819 i( mode [ offt ] =( vid_ch )) \ 820 t |( mask ); \ 821 i( mode [ offt ] != '-') \ 822 fm_r ; \ 823 } ) 824 t = 0; 825 `__SETMODE (0, 'r', S_IRUSR ); 826 `__SETMODE (1, 'w', S_IWUSR ); 827 `__SETMODE (2, 'x', S_IXUSR ); 828 `__SETMODE (3, 'r', S_IRGRP ); 829 `__SETMODE (4, 'w', S_IWGRP ); 830 `__SETMODE (5, 'x', S_IXGRP ); 831 `__SETMODE (6, 'r', S_IROTH ); 832 `__SETMODE (7, 'w', S_IWOTH ); 833 `__SETMODE (8, 'x', S_IXOTH ); 834 i( mode [9] !'\0' || t == 0) { 841 fm_r : `__db_rx ( v , 842 "DB_ENV->t_rmed_d_mode: ieg mod\"%s\"", mode ); 843 ( EINVAL ); 846 i( dbv -> rmed_d_mode ! NULL ) 847 `__os_ ( v , dbv -> rmed_d_mode ); 848 i(( t = `__os_rdup ( v , mode , & dbv -> rmed_d_mode )) != 0) 849 ( t ); 851 v -> d_mode = () t ; 853 } } 863 $__v_g_r ( dbv , rp ) 864 DB_ENV * dbv ; 865 (** rp `__P ((cڡ DB_ENV *, const *, const *)); 867 * rp = dbv -> db_r ; 868 } } 878 $__v_t_r ( dbv , r ) 879 DB_ENV * dbv ; 880 (* r `__P ((cڡ DB_ENV *, const *, const *)); 882 ENV * v ; 884 v = dbv ->env; 886 `F_CLR ( v , ENV_NO_OUTPUT_SET ); 887 dbv -> db_r = r ; 888 } } 897 $__v_g_rfe ( dbv , rf ) 898 DB_ENV * dbv ; 899 FILE ** rf ; 901 * rf = dbv -> db_rfe ; 902 } } 911 $__v_t_rfe ( dbv , rfe ) 912 DB_ENV * dbv ; 913 FILE * rfe ; 915 ENV * v ; 917 v = dbv ->env; 919 `F_CLR ( v , ENV_NO_OUTPUT_SET ); 920 dbv -> db_rfe = rfe ; 921 } } 930 $__v_g_fx ( dbv , fxp ) 931 DB_ENV * dbv ; 932 cڡ ** fxp ; 934 * fxp = dbv -> db_fx ; 935 } } 944 $__v_t_fx ( dbv , fx ) 945 DB_ENV * dbv ; 946 cڡ * fx ; 948 dbv -> db_fx = fx ; 949 } } 952 $__v_t_edback ( dbv , edback ) 953 DB_ENV * dbv ; 954 (* edback `__P (( DB_ENV *, , )); 956 dbv -> db_edback = edback ; 958 } } 965 $__v_t_thad_id ( dbv , id ) 966 DB_ENV * dbv ; 967 (* id `__P (( DB_ENV *, pid_t *, db_thadid_t *)); 969 dbv -> thad_id = id ; 971 } } 978 $__v_t_thad_id_rg ( dbv , thad_id_rg ) 979 DB_ENV * dbv ; 980 *(* thad_id_rg `__P (( DB_ENV *, pid_t , db_thadid_t , *)); 982 dbv -> thad_id_rg =hread_id_string; 984 } } 991 $__v_t_ilive ( dbv , is_ive ) 992 DB_ENV * dbv ; 993 (* is_ive `__P (( DB_ENV *, pid_t , db_thadid_t , u_t32_t )); 995 ENV * v ; 997 v = dbv ->env; 999 i( `F_ISSET ( v , ENV_OPEN_CALLED &&nv-> thr_nbuck == 0) { 1000 `__db_rx ( v , 1002 ( EINVAL ); 1004 dbv -> is_ive = is_alive; 1006 } } 1013 $__v_g_thad_cou ( dbv , coup ) 1014 DB_ENV * dbv ; 1015 u_t32_t * coup ; 1017 * coup = dbv -> thr_max ; 1019 } } 1026 $__v_t_thad_cou ( dbv , cou ) 1027 DB_ENV * dbv ; 1028 u_t32_t cou ; 1030 ENV * v ; 1032 v = dbv ->env; 1034 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_thread_count"); 1035 dbv -> thr_max = cou ; 1038 } } 1048 $__v_t_msg ( dbv , msg ) 1049 DB_ENV * dbv ; 1050 (* msg `__P ((cڡ DB_ENV *, const *)); 1052 dbv -> db_msg = msg ; 1053 } } 1062 $__v_g_msgfe ( dbv , msgf ) 1063 DB_ENV * dbv ; 1064 FILE ** msgf ; 1066 * msgf = dbv -> db_msgfe ; 1067 } } 1076 $__v_t_msgfe ( dbv , msgfe ) 1077 DB_ENV * dbv ; 1078 FILE * msgfe ; 1080 dbv -> db_msgfe = msgfe ; 1081 } } 1090 $__v_t_nic ( dbv , nic ) 1091 DB_ENV * dbv ; 1092 (* nic `__P (( DB_ENV *, )); 1094 dbv -> db_nic = nic ; 1096 } } 1103 $__v_t_evt_nify ( dbv , evt_func ) 1104 DB_ENV * dbv ; 1105 (* evt_func `__P (( DB_ENV *, u_t32_t , *)); 1107 dbv -> db_evt_func = evt_func ; 1109 } } 1112 $__v_g_shm_key ( dbv , shm_keyp ) 1113 DB_ENV * dbv ; 1114 * shm_keyp ; 1116 * shm_keyp = dbv -> shm_key ; 1118 } } 1127 $__v_t_shm_key ( dbv , shm_key ) 1128 DB_ENV * dbv ; 1129 shm_key ; 1131 ENV * v ; 1133 v = dbv ->env; 1135 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_shm_key"); 1137 dbv -> shm_key = shm_key; 1139 } } 1142 $__v_g_tmp_d ( dbv , dp ) 1143 DB_ENV * dbv ; 1144 cڡ ** dp ; 1146 * dp = dbv -> db_tmp_d ; 1148 } } 1157 $__v_t_tmp_d ( dbv , d ) 1158 DB_ENV * dbv ; 1159 cڡ * d ; 1161 ENV * v ; 1163 v = dbv ->env; 1165 i( dbv -> db_tmp_d ! NULL ) 1166 `__os_ ( v , dbv -> db_tmp_d ); 1167 ( `__os_rdup ( v , d , & dbv -> db_tmp_d )); 1168 } } 1171 $__v_g_vbo ( dbv , which , of ) 1172 DB_ENV * dbv ; 1173 u_t32_t which ; 1174 * of ; 1176 which ) { 1177 DB_VERB_DEADLOCK : 1178 DB_VERB_FILEOPS : 1179 DB_VERB_FILEOPS_ALL : 1180 DB_VERB_RECOVERY : 1181 DB_VERB_REGISTER : 1182 DB_VERB_REPLICATION : 1183 DB_VERB_REP_ELECT : 1184 DB_VERB_REP_LEASE : 1185 DB_VERB_REP_MISC : 1186 DB_VERB_REP_MSGS : 1187 DB_VERB_REP_SYNC : 1188 DB_VERB_REPMGR_CONNFAIL : 1189 DB_VERB_REPMGR_MISC : 1190 DB_VERB_WAITSFOR : 1191 * of = `FLD_ISSET ( dbv -> vbo , which ) ? 1 : 0; 1194 ( EINVAL ); 1197 } } 1206 $__v_t_vbo ( dbv , which , ) 1207 DB_ENV * dbv ; 1208 u_t32_t which ; 1209 ; 1211 which ) { 1212 DB_VERB_DEADLOCK : 1213 DB_VERB_FILEOPS : 1214 DB_VERB_FILEOPS_ALL : 1215 DB_VERB_RECOVERY : 1216 DB_VERB_REGISTER : 1217 DB_VERB_REPLICATION : 1218 DB_VERB_REP_ELECT : 1219 DB_VERB_REP_LEASE : 1220 DB_VERB_REP_MISC : 1221 DB_VERB_REP_MSGS : 1222 DB_VERB_REP_SYNC : 1223 DB_VERB_REPMGR_CONNFAIL : 1224 DB_VERB_REPMGR_MISC : 1225 DB_VERB_WAITSFOR : 1226 i( ) 1227 `FLD_SET ( dbv -> vbo , which ); 1229 `FLD_CLR ( dbv -> vbo , which ); 1232 ( EINVAL ); 1235 } } 1244 $__db_mi_v ( v , me ) 1245 ENV * v ; 1246 cڡ * me ; 1248 `__db_rx ( v , 1249 "%s: mhodمmd whnvmecifd", me ); 1250 ( EINVAL ); 1251 } } 1260 $__db_mi_ݒ ( v , me , a ) 1261 ENV * v ; 1262 cڡ * me ; 1263 a ; 1265 `__db_rx ( v , "%s: methodotermitted %s handle's open method", 1266 me , a ? "after" : "before"); 1267 ( EINVAL ); 1268 } } 1277 $__v_n_cfig ( v , i , ags ) 1278 ENV * v ; 1279 * i ; 1280 u_t32_t ags ; 1282 * sub ; 1284 ags ) { 1285 DB_INIT_LOCK : 1286 sub = "locking"; 1288 DB_INIT_LOG : 1289 sub = "logging"; 1291 DB_INIT_MPOOL : 1292 sub = "memoryool"; 1294 DB_INIT_REP : 1295 sub = "replication"; 1297 DB_INIT_TXN : 1298 sub = "transaction"; 1301 sub = "<unspecified>"; 1304 `__db_rx ( v , 1306 i , sub ); 1307 ( EINVAL ); 1308 } } 1311 $__v_t_c_rv ( dbv , , ho , tc , sc , ags ) 1312 DB_ENV * dbv ; 1313 * ; 1314 cڡ * ho ; 1315 tc , sc ; 1316 u_t32_t ags ; 1318 ENV * v ; 1320 v = dbv ->env; 1322 `COMPQUIET ( ho , NULL ); 1323 `COMPQUIET ( , NULL ); 1324 `COMPQUIET ( tc , 0); 1325 `COMPQUIET ( sc , 0); 1326 `COMPQUIET ( ags , 0); 1328 `__db_rx ( v , "Berkeley DB wasot configured for RPC support"); 1329 ( DB_OPNOTSUP ); 1330 } } @../env/env_name.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __db_tmp_ݒ __P (( 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 ( v , ame , fe , tmp_oags , fh , m ) 47 ENV * v ; 48 APPNAME ame ; 49 cڡ * fe ; 50 u_t32_t tmp_oags ; 51 DB_FH ** fh ; 52 ** m ; 54 DB_ENV * dbv ; 55 um { TRY_NOTSET , TRY_DATA_DIR , TRY_ENV_HOME , TRY_CREATE } y_e ; 56 size_t n , r_n ; 57 da_y , t , ash , tmp_ ; 58 cڡ * a , * b ; 59 * p , * r ; 61 dbv = v ->dbenv; 62 y_e = TRY_NOTSET ; 63 a = b = NULL ; 64 da_y = 0; 65 tmp_ = 0; 71 i( fh ! NULL ) 72 * fh = NULL ; 73 i( m ! NULL ) 74 * m = NULL ; 80 i( fe ! NULL && `__os_abh (file)) 81 ( `__os_rdup ( v , fe , m )); 84 i( v ! NULL ) 85 a = v -> db_home ; 87 y : 97 ame ) { 98 DB_APP_NONE : 100 DB_APP_DATA : 101 i( v = NULL || dbv -> db_da_d == NULL) { 102 y_e = TRY_CREATE ; 110 i(( b = dbv -> db_da_d [ da_y ]! NULL ) { 111 ++ da_y ; 112 y_e = TRY_DATA_DIR ; 117 i( y_e ! TRY_ENV_HOME ) { 118 y_e = TRY_ENV_HOME ; 123 y_e = TRY_CREATE ; 124 b = dbv -> db_da_d [0]; 126 DB_APP_LOG : 127 i( v ! NULL ) 128 b = dbv -> db_log_d ; 130 DB_APP_TMP : 131 i( v ! NULL ) 132 b = dbv -> db_tmp_d ; 133 tmp_ = 1; 137 n = 138 ( a = NULL ? 0 : ` (a) + 1) + 139 ( b = NULL ? 0 : ` (b) + 1) + 140 ( fe = NULL ? 0 : ` (file) + 1); 147 #DB_TRAIL "BDBXXXXX" ) 148 r_n = n + ( DB_TRAIL ) + 10; 149 i(( t = `__os_mloc ( v , r_n , & r )) != 0) 150 ( t ); 152 ash = 0; 153 p = r ; 154 `DB_ADDSTR ( a ); 155 `DB_ADDSTR ( b ); 156 `DB_ADDSTR ( fe ); 157 * p = '\0'; 163 i( ame = DB_APP_DATA && 164 `__os_exis ( v , r , NULL !0 && y_e ! TRY_CREATE ) { 165 `__os_ ( v , r ); 166 b = NULL ; 167 y ; 171 i( tmp_ && 172 ( t = `__db_tmp_ݒ ( v , tmp_oags , r , fh )) != 0) { 173 `__os_ ( v , r ); 174 ( t ); 177 i( m = NULL ) 178 `__os_ ( v , r ); 180 * m = r ; 182 } } 189 $__db_tmp_ݒ ( v , tmp_oags , th , fh ) 190 ENV * v ; 191 u_t32_t tmp_oags ; 192 * th ; 193 DB_FH ** fh ; 195 pid_t pid ; 196 fum , i , isd , t ; 197 * fx , * v ; 203 i(( t = `__os_exis ( v , th , & isd )) != 0) { 204 `__db_r ( v , t , "%s", th ); 205 ( t ); 207 i(! isd ) { 208 `__db_r ( v , EINVAL , "%s", th ); 209 ( EINVAL ); 213 () `t ( th , PATH_SEPARATOR , 1); 214 () `rt ( th , DB_TRAIL ); 217 `__os_id ( v -> dbv , & pid , NULL ); 218 v = th + ` թh); *--v ='X'; pid /= 10) 219 * v = '0' + ( u_ch )( pid % 10); 220 fx = v + 1; 223 fum = 1;; filenum++) { 224 i(( t = `__os_ݒ ( v , th , 0, 225 tmp_oags | DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_TEMP , 226 DB_MODE_600 , fh )) == 0) 236 i( t ! EEXIST ) { 237 `__db_r ( v , t , "mpܬy on: %s", th ); 238 ( t ); 256 i = fum , v = fx ; i > 0; i = (i - 1) / 26) 257 i(* v ++ == '\0') 258 ( EINVAL ); 260 i = fum ; i > 0; i = (i - 1) / 26) 261 *-- v = 'a' + (( i - 1) % 26); 264 } } @../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 (( 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 ENV * v ; 56 t ; 58 v = dbv ->env; 60 #unde OKFLAGS 61 #OKFLAGS \ 62 ( DB_CREATE | DB_INIT_CDB | DB_INIT_LOCK | DB_INIT_LOG | \ 63 DB_INIT_MPOOL | DB_INIT_REP | DB_INIT_TXN | DB_LOCKDOWN | \ 64 DB_PRIVATE | DB_RECOVER | DB_RECOVER_FATAL | DB_REGISTER | \ 65 DB_SYSTEM_MEM | DB_THREAD | DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 66 #unde OKFLAGS_CDB 67 #OKFLAGS_CDB \ 68 ( DB_CREATE | DB_INIT_CDB | DB_INIT_MPOOL | DB_LOCKDOWN | \ 69 DB_PRIVATE | DB_SYSTEM_MEM | DB_THREAD | \ 70 DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 72 i(( t = `__db_fchk ( v , "DB_ENV->ݒ", ags , OKFLAGS )) != 0) 73 ( t ); 74 i(( t = `__db_fcchk ( 75 v , "DB_ENV->ݒ", ags , DB_INIT_CDB , ~ OKFLAGS_CDB )) != 0) 76 ( t ); 77 i( `LF_ISSET ( DB_REGISTER )) { 78 i(! `__os_sut_db_gi ()) { 79 `__db_rx ( v , 81 ( EINVAL ); 83 i(( t = `__db_fcchk ( v , "DB_ENV->ݒ", ags , 84 DB_PRIVATE , DB_REGISTER | DB_SYSTEM_MEM )) != 0) 85 ( t ); 86 i(! `LF_ISSET ( DB_INIT_TXN )) { 87 `__db_rx ( 88 v , "registrationequiresransaction support"); 89 ( EINVAL ); 92 i( `LF_ISSET ( DB_INIT_REP )) { 93 i(! `__os_sut_iti ()) { 94 `__db_rx ( v , 96 ( EINVAL ); 98 i(! `LF_ISSET ( DB_INIT_LOCK )) { 99 `__db_rx ( v , 101 ( EINVAL ); 103 i(! `LF_ISSET ( DB_INIT_TXN )) { 104 `__db_rx ( 105 v , "replicationequiresransaction support"); 106 ( EINVAL ); 109 i( `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL )) { 110 i(( t = `__db_fcchk ( v , 111 "DB_ENV->ݒ", ags , DB_RECOVER , DB_RECOVER_FATAL )) != 0) 112 ( t ); 113 i(( t = `__db_fcchk ( v , 114 "DB_ENV->ݒ", ags , DB_REGISTER , DB_RECOVER_FATAL )) != 0) 115 ( t ); 116 i(! `LF_ISSET ( DB_CREATE )) { 117 `__db_rx ( v , "recoveryequireshe create flag"); 118 ( EINVAL ); 120 i(! `LF_ISSET ( DB_INIT_TXN )) { 121 `__db_rx ( 122 v , "recoveryequiresransaction support"); 123 ( EINVAL ); 127 #ifde HAVE_MUTEX_THREAD_ONLY 133 i(! `LF_ISSET ( DB_PRIVATE )) { 134 `__db_rx ( v , 136 ( EINVAL ); 140 #ifde HAVE_MUTEX_FCNTL 158 i( `F_ISSET ( v , ENV_THREAD )) { 159 `__db_rx ( v , 161 ( EINVAL ); 165 ( `__v_ݒ ( dbv , db_home , ags , mode )); 166 } } 175 $__v_ݒ ( dbv , db_home , ags , mode ) 176 DB_ENV * dbv ; 177 cڡ * db_home ; 178 u_t32_t ags ; 179 mode ; 181 DB_THREAD_INFO * ; 182 ENV * v ; 183 REGINFO * f ; 184 u_t32_t _ags , ig_ags ; 185 _ok , gi_covy , p_check , t , t_t ; 187 = NULL ; 188 v = dbv ->env; 189 gi_covy = p_check = 0; 192 i(( t = `__v_cfig ( dbv , db_home , ags , mode )) != 0) 193 ( t ); 202 ig_ags = dbv -> ags ; 208 i( `LF_ISSET ( DB_REGISTER )) { 209 i(( t = `__vg_gi ( v , & gi_covy )) != 0) 210 r ; 211 i( gi_covy ) { 212 i(! `LF_ISSET ( DB_RECOVER )) { 213 `__db_rx ( v , 215 t = DB_RUNRECOVERY ; 216 r ; 219 `LF_CLR ( DB_RECOVER ); 233 i( `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL )) 234 #ifde HAVE_REPLICATION 235 i(( t = `__p_t_ ( v )) != 0 || 236 ( t = `__v_move_v ( v )) != 0 || 238 i(( t = `__v_move_v ( v )) != 0 || 240 ( t = `__v_esh ( dbv , ig_ags , 0)) != 0) 241 r ; 244 _ok = `LF_ISSET ( DB_CREATE ) ? 1 : 0; 245 i( `LF_ISSET ( DB_LOCKDOWN )) 246 `F_SET ( v , ENV_LOCKDOWN ); 247 i( `LF_ISSET ( DB_PRIVATE )) 248 `F_SET ( v , ENV_PRIVATE ); 249 i( `LF_ISSET ( DB_RECOVER_FATAL )) 250 `F_SET ( v , ENV_RECOVER_FATAL ); 251 i( `LF_ISSET ( DB_SYSTEM_MEM )) 252 `F_SET ( v , ENV_SYSTEM_MEM ); 253 i( `LF_ISSET ( DB_THREAD )) 254 `F_SET ( v , ENV_THREAD ); 260 #DB_INITENV_CDB 0x0001 ) 261 #DB_INITENV_CDB_ALLDB 0x0002 ) 262 #DB_INITENV_LOCK 0x0004 ) 263 #DB_INITENV_LOG 0x0008 ) 264 #DB_INITENV_MPOOL 0x0010 ) 265 #DB_INITENV_REP 0x0020 ) 266 #DB_INITENV_TXN 0x0040 ) 274 _ags = 0; 275 i( `LF_ISSET ( DB_INIT_CDB )) 276 `FLD_SET ( _ags , DB_INITENV_CDB ); 277 i( `F_ISSET ( dbv , DB_ENV_CDB_ALLDB )) 278 `FLD_SET ( _ags , DB_INITENV_CDB_ALLDB ); 279 i( `LF_ISSET ( DB_INIT_LOCK )) 280 `FLD_SET ( _ags , DB_INITENV_LOCK ); 281 i( `LF_ISSET ( DB_INIT_LOG )) 282 `FLD_SET ( _ags , DB_INITENV_LOG ); 283 i( `LF_ISSET ( DB_INIT_MPOOL )) 284 `FLD_SET ( _ags , DB_INITENV_MPOOL ); 285 i( `LF_ISSET ( DB_INIT_REP )) 286 `FLD_SET ( _ags , DB_INITENV_REP ); 287 i( `LF_ISSET ( DB_INIT_TXN )) 288 `FLD_SET ( _ags , DB_INITENV_TXN ); 289 i(( t = `__v_ch ( v , & _ags , _ok , 1)) != 0) 290 r ; 299 i( `FLD_ISSET ( _ags , DB_INITENV_CDB )) 300 `LF_SET ( DB_INIT_CDB ); 301 i( `FLD_ISSET ( _ags , DB_INITENV_LOCK )) 302 `LF_SET ( DB_INIT_LOCK ); 303 i( `FLD_ISSET ( _ags , DB_INITENV_LOG )) 304 `LF_SET ( DB_INIT_LOG ); 305 i( `FLD_ISSET ( _ags , DB_INITENV_MPOOL )) 306 `LF_SET ( DB_INIT_MPOOL ); 307 i( `FLD_ISSET ( _ags , DB_INITENV_REP )) 308 `LF_SET ( DB_INIT_REP ); 309 i( `FLD_ISSET ( _ags , DB_INITENV_TXN )) 310 `LF_SET ( DB_INIT_TXN ); 311 i( `FLD_ISSET ( _ags , DB_INITENV_CDB_ALLDB ) && 312 ( t = `__v_t_ags ( dbv , DB_CDB_ALLDB , 1)) != 0) 313 r ; 316 i( `LF_ISSET ( DB_INIT_CDB )) { 317 `LF_SET ( DB_INIT_LOCK ); 318 `F_SET ( v , ENV_CDB ); 329 v -> ݒ_ags = ags ; 336 `F_SET ( v , ENV_OPEN_CALLED ); 341 f = v -> gfo ; 342 i(( t = 343 `__v_thad_ ( v , `F_ISSET ( f , REGION_CREATE ) ? 1 : 0)) != 0) 344 r ; 346 `ENV_ENTER ( v , ); 351 #ifde HAVE_MUTEX_SUPPORT 358 i(( t = `__mux_ݒ ( v , _ok )) != 0) 359 r ; 365 i(( t = `__v_f_emt ( v )) != 0) 366 r ; 371 i(( t = `__mux_loc ( v , 372 MTX_ENV_HANDLE , DB_MUTEX_PROCESS_ONLY , & dbv -> mtx_db_v )) != 0 || 373 ( t = `__mux_loc ( v , 374 MTX_ENV_HANDLE , DB_MUTEX_PROCESS_ONLY , & v -> mtx_v )) != 0) 375 r ; 381 i( `LF_ISSET ( DB_INIT_REP && ( t = `__p_ݒ ( v )) != 0) 382 r ; 384 p_check = `IS_ENV_REPLICATED ( v ) ? 1 : 0; 385 i( p_check && ( t = `__v_p_r ( v , 0)) != 0) 386 r ; 388 i( `LF_ISSET ( DB_INIT_MPOOL )) { 389 i(( t = `__memp_ݒ ( v , _ok )) != 0) 390 r ; 397 i( _ok ) 398 () `__memp_t_cfig ( 399 dbv , DB_MEMP_SUPPRESS_WRITE , 1); 406 `TAILQ_INIT (& v -> dbli ); 407 i(( t = `__mux_loc ( v , MTX_ENV_DBLIST , 408 DB_MUTEX_PROCESS_ONLY , & v -> mtx_dbli )) != 0) 409 r ; 412 i(( t = `__memp_gi ( 413 v , DB_FTYPE_SET , __db_pg , __db_pgout )) != 0) 414 r ; 426 i( `LF_ISSET ( DB_INIT_MPOOL | DB_INIT_LOG | DB_INIT_TXN ) && 427 ( t = `__yo_gi_ ( v )) != 0) 428 r ; 429 i(( t = `__mux_loc ( 430 v , MTX_TWISTER , DB_MUTEX_PROCESS_ONLY , &v-> mtx_mt )) != 0) 431 r ; 439 i( `LF_ISSET ( DB_INIT_LOG | DB_INIT_TXN )) 440 i(( t = `__log_ݒ ( v , _ok )) != 0) 441 r ; 442 i( `LF_ISSET ( DB_INIT_LOCK )) 443 i(( t = `__lock_ݒ ( v , _ok )) != 0) 444 r ; 446 i( `LF_ISSET ( DB_INIT_TXN )) { 447 i(( t = `__txn_ݒ ( v , _ok )) != 0) 448 r ; 454 i(( t = `__v__c ( v , DB_LOGVERSION )) != 0) 455 r ; 459 i( `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL ) && 460 ( t = `__db_ec ( v , , NULL , NULL, 1, 461 `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL ))) != 0) 462 r ; 474 i( `TXN_ON ( v ) && 475 ! `FLD_ISSET ( dbv -> lg_ags , DB_LOG_IN_MEMORY ) && 476 `F_ISSET ( f , REGION_CREATE ) && 477 ! `LF_ISSET ( DB_RECOVER | DB_RECOVER_FATAL ) && 478 ( t = `__txn_t ( v )) != 0) 479 r ; 482 i(( t = `__v_tu_ ( v )) != 0) 483 r ; 485 i( p_check ) 486 t = `__v_db_p_ex ( v ); 489 i( `LF_ISSET ( DB_INIT_MPOOL )) 490 () `__memp_t_cfig ( dbv , DB_MEMP_SUPPRESS_WRITE , 0); 492 r : i( t == 0) 493 `ENV_LEAVE ( v , ); 502 f = v -> gfo ; 503 i( f ! NULL && `F_ISSET (f, REGION_CREATE )) { 504 t = `__v_nic ( v ,et); 507 () `__v_esh ( dbv , ig_ags , p_check ); 508 () `__v_move_v ( v ); 509 () `__v_esh ( dbv , ig_ags , 0); 511 () `__v_esh ( dbv , ig_ags , p_check ); 514 i( gi_covy ) { 522 i( t =0 && ( t_t = `__vg_xuock ( v )) != 0) 523 t = t_t ; 524 i( t != 0) 525 () `__vg_uegi ( v , 1); 528 ( t ); 529 } } 538 $__v_move ( dbv , db_home , ags ) 539 DB_ENV * dbv ; 540 cڡ * db_home ; 541 u_t32_t ags ; 543 ENV * v ; 544 t , t_t ; 546 v = dbv ->env; 548 #unde OKFLAGS 549 #OKFLAGS \ 550 ( DB_FORCE | DB_USE_ENVIRON | DB_USE_ENVIRON_ROOT ) ) 553 i(( t = `__db_fchk ( v , "DB_ENV->move", ags , OKFLAGS )) != 0) 554 ( t ); 556 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->remove"); 558 i(( t = `__v_cfig ( dbv , db_home , ags , 0)) != 0) 559 ( t ); 565 i(( t = `__v_tu_off ( v , ags )=0 || `LF_ISSET ( DB_FORCE )) 566 t = `__v_move_v ( v ); 568 i(( t_t = `__v_o ( dbv , 0)!0 && t == 0) 569 t = t_t ; 571 ( t ); 572 } } 581 $__v_cfig ( dbv , db_home , ags , mode ) 582 DB_ENV * dbv ; 583 cڡ * db_home ; 584 u_t32_t ags ; 585 mode ; 587 ENV * v ; 588 t ; 589 * home , home_buf [ DB_MAXPATHLEN ]; 591 v = dbv ->env; 601 home = (*) db_home ; 602 i( home = NULL && ( `LF_ISSET ( DB_USE_ENVIRON ) || 603 ( `LF_ISSET ( DB_USE_ENVIRON_ROOT && `__os_io ()))) { 604 home = home_buf ; 605 i(( t = `__os_gv ( 606 v , "DB_HOME", & home , ( home_buf ))) != 0) 607 ( t ); 612 i( home ! NULL && ( t = `__os_rdup ( v , home, &v-> db_home )) != 0) 613 ( t ); 616 v -> ݒ_ags = ags ; 619 v -> db_mode = mode =0 ? DB_MODE_660 : mode; 622 i(( t = `__v_ad_db_cfig ( v )) != 0) 623 ( t ); 629 i( dbv -> db_tmp_d = NULL && ( t = `__os_tmpd ( v , ags )) != 0) 630 ( t ); 633 } } 642 $__v_o_ ( dbv , ags ) 643 DB_ENV * dbv ; 644 u_t32_t ags ; 646 DB_THREAD_INFO * ; 647 ENV * v ; 648 p_check , t , t_t ; 650 v = dbv ->env; 651 t = 0; 657 i( ags != 0 && 658 ( t_t = `__db_ ( v , "DB_ENV->o", 0)!0 && t == 0) 659 t = t_t ; 665 i( `PANIC_ISSET ( v )) { 667 () `__fe_hd_nup ( v ); 670 i( `IS_ENV_REPLICATED ( v )) 671 () `__pmgr_o ( v ); 673 `PANIC_CHECK ( v ); 676 `ENV_ENTER ( v , ); 678 p_check = `IS_ENV_REPLICATED ( v ) ? 1 : 0; 679 i( p_check ) { 680 #ifde HAVE_REPLICATION_THREADS 687 i(( t_t = `__pmgr_o ( v )!0 && t == 0) 688 t = t_t ; 690 i(( t_t = `__v_p_r ( v , 0)!0 && t == 0) 691 t = t_t ; 694 i(( t_t = `__v_o ( dbv , p_check )!0 && t == 0) 695 t = t_t ; 698 ( t ); 699 } } 708 $__v_o ( dbv , p_check ) 709 DB_ENV * dbv ; 710 p_check ; 712 ENV * v ; 713 t , t_t ; 714 ** p ; 716 v = dbv ->env; 717 t = 0; 723 i( `TXN_ON ( v && ( t_t = `__txn_eo nv)!0 && t == 0) 724 t = t_t ; 726 #ifde HAVE_REPLICATION 727 i(( t_t = `__p_v_o ( v )!0 && t == 0) 728 t = t_t ; 735 i(( t_t = `__v_esh ( dbv , 0, p_check )!0 && t == 0) 736 t = t_t ; 738 #ifde HAVE_CRYPTO 743 i(( t_t = `__yo_v_o ( v )!0 && t == 0) 744 t = t_t ; 748 i( dbv -> giry ! NULL ) { 749 () `__vg_uegi ( v , 0); 750 dbv -> giry = NULL ; 754 i(( t_t = `__fe_hd_nup ( v )!0 && t == 0) 755 t = t_t ; 758 i( dbv -> db_log_d ! NULL ) 759 `__os_ ( v , dbv -> db_log_d ); 760 dbv -> db_log_d = NULL ; 761 i( dbv -> db_tmp_d ! NULL ) 762 `__os_ ( v , dbv -> db_tmp_d ); 763 dbv -> db_tmp_d = NULL ; 764 i( dbv -> db_da_d ! NULL ) { 765 p = dbv -> db_da_d ; *! NULL ; ++p) 766 `__os_ ( v , * p ); 767 `__os_ ( v , dbv -> db_da_d ); 768 dbv -> db_da_d = NULL ; 769 dbv -> da_xt = 0; 771 i( dbv -> rmed_d_mode ! NULL ) 772 `__os_ ( v , dbv -> rmed_d_mode ); 773 i( v -> db_home ! NULL ) { 774 `__os_ ( v ,nv-> db_home ); 775 v -> db_home = NULL ; 779 `__db_v_deroy ( dbv ); 781 ( t ); 782 } } 789 $__v_esh ( dbv , ig_ags , p_check ) 790 DB_ENV * dbv ; 791 u_t32_t ig_ags ; 792 p_check ; 794 DB * ldbp ; 795 DB_THREAD_INFO * ; 796 ENV * v ; 797 t , t_t ; 799 v = dbv ->env; 800 t = 0; 816 i( `TXN_ON ( v ) && 817 ( t_t = `__txn_v_esh ( v )!0 && t == 0) 818 t = t_t ; 820 i( `LOGGING_ON ( v ) && 821 ( t_t = `__log_v_esh ( v )!0 && t == 0) 822 t = t_t ; 828 i( `LOCKING_ON ( v )) { 829 i(! `F_ISSET ( v , ENV_THREAD ) && 830 v -> v_ef ! NULL && ( t_t = 831 `__lock_id_ ( v ,nv-> v_ef )!0 && t == 0) 832 t = t_t ; 833 v -> v_ef = NULL ; 835 i(( t_t = `__lock_v_esh ( v )!0 && t == 0) 836 t = t_t ; 840 i(( t_t = `__mux_ ( v , & dbv -> mtx_db_v )!0 && t == 0) 841 t = t_t ; 842 i(( t_t = `__mux_ ( v , &v-> mtx_v )!0 && t == 0) 843 t = t_t ; 854 i( v -> db_f != 0) { 855 `__db_rx ( v , 857 `TAILQ_FOREACH ( ldbp , & v -> dbli , dblilks ) 858 `__db_rx ( v , "Open database handle: %s%s%s", 859 ldbp -> ame = NULL ? "unnamed" :dbp->fname, 860 ldbp -> dme = NULL ? "" : "/", 861 ldbp -> dme = NULL ? "" :dbp->dname); 862 i( t == 0) 863 t = EINVAL ; 865 `TAILQ_INIT (& v -> dbli ); 866 i(( t_t = `__mux_ ( v , &v-> mtx_dbli )!0 && t == 0) 867 t = t_t ; 868 i(( t_t = `__mux_ ( v , &v-> mtx_mt )!0 && t == 0) 869 t = t_t ; 871 i( v -> mt ! NULL ) { 872 `__os_ ( v ,nv-> mt ); 873 v -> mt = NULL ; 876 i( `MPOOL_ON ( v )) { 885 i( `F_ISSET ( v , ENV_PRIVATE ) && 886 ( t_t = `__memp_sync_t ( v , NULL , 0, 887 DB_SYNC_CACHE | DB_SYNC_SUPPRESS_WRITE , NULL , NULL)) != 0 && 888 t == 0) 889 t = t_t ; 891 i(( t_t = `__memp_v_esh ( v )!0 && t == 0) 892 t = t_t ; 906 i( p_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 907 t = t_t ; 914 i( `REP_ON ( v && ( t_t = `__p_v_esh nv)!0 && t == 0) 915 t = t_t ; 917 #ifde HAVE_CRYPTO 922 i( v -> gfo ! NULL && 923 ( t_t = `__yo_v_esh ( v )!0 && t == 0) 924 t = t_t ; 931 i( v -> thr_hashb ! NULL && 932 ( t_t = `__v_t_e ( v , & , THREAD_OUT )!0 && t == 0) 933 t = t_t ; 960 i(( t_t = `__v_f_deemt ( v )!0 && t == 0) 961 t = t_t ; 963 #ifde HAVE_MUTEX_SUPPORT 964 i( `MUTEX_ON ( v ) && 965 ( t_t = `__mux_v_esh ( v )!0 && t == 0) 966 t = t_t ; 969 i( v -> gfo ! NULL ) { 970 i( `F_ISSET ( v , ENV_PRIVATE )) { 971 `__v_thad_deroy ( v ); 972 t_t = `__v_dach ( v , 1); 974 t_t = `__v_dach ( v , 0); 976 i( t_t !0 && t == 0) 977 t = t_t ; 986 i( v -> mux_iq ! NULL ) { 987 `__os_ ( v ,nv-> mux_iq ); 988 v -> mux_iq = NULL ; 991 i( v -> cov_db . t_dich ! NULL ) { 992 `__os_ ( v ,nv-> cov_db . t_dich ); 993 v -> cov_db . t_size = 0; 994 v -> cov_db . t_dich = NULL ; 996 i( v -> cov_db . ext_dich ! NULL ) { 997 `__os_ ( v ,nv-> cov_db . ext_dich ); 998 v -> cov_db . ext_size = 0; 999 v -> cov_db . ext_dich = NULL ; 1002 dbv -> ags = ig_ags ; 1004 ( t ); 1005 } } 1013 $__fe_hd_nup ( v ) 1014 ENV * v ; 1016 DB_FH * fhp ; 1018 i( `TAILQ_FIRST (& v -> fdli = NULL ) 1021 `__db_rx ( v , "File handles still opentnvironment close"); 1022 ( fhp = `TAILQ_FIRST (& v -> fdli )! NULL ) { 1023 `__db_rx ( v , "Ofhd: %s", fhp -> me ); 1024 () `__os_ohd ( v , fhp ); 1026 ( EINVAL ); 1027 } } 1036 $__v_g_ݒ_ags ( dbv , ag ) 1037 DB_ENV * dbv ; 1038 u_t32_t * ag ; 1040 ENV * v ; 1042 v = dbv ->env; 1044 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->get_open_flags"); 1046 * ag = v -> ݒ_ags ; 1048 } } @../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 (( ENV *, DB_LSN *)); 27 __v__c_42 __P (( ENV *)); 28 __v__c_43 __P (( ENV *)); 29 __v__c_46 __P (( ENV *)); 30 __v__c_47 __P (( ENV *)); 31 __log_ __P (( ENV *, DB_LOGC *, t32_t *, DB_LSN *)); 33 #ide HAVE_BREW 34 __l_diff __P (( DB_LSN *, DB_LSN *, DB_LSN *, u_t32_t , )); 48 $__db_ec ( v , , max_l , un , upde , ags ) 49 ENV * v ; 50 DB_THREAD_INFO * ; 51 DB_LSN * max_l , * un ; 52 upde ; 53 u_t32_t ags ; 55 DBT da ; 56 DB_ENV * dbv ; 57 DB_LOGC * logc ; 58 DB_LSN ckp_l , f_l , ϡ_l , lowl , l , _l , ; 59 DB_TXNHEAD * txnfo ; 60 DB_TXNREGION * gi ; 61 REGENV * nv ; 62 REGINFO * f ; 63 __txn_ckp_gs * ckp_gs ; 64 time_t now , ow ; 65 nfes ; 66 u_t32_t hi_txn , log_size , txnid ; 67 t32_t low ; 68 have_c , ogss , t , t_t ; 69 * p , * ss ; 70 t1 [ CTIME_BUFLEN ], t2 [CTIME_BUFLEN], time_buf [CTIME_BUFLEN]; 72 `COMPQUIET ( nfes , ()0.001); 74 dbv = v ->dbenv; 75 logc = NULL ; 76 ckp_gs = NULL ; 77 hi_txn = TXN_MAXIMUM ; 78 txnfo = NULL ; 79 ss = "initial"; 80 `ZERO_LSN ( l ); 87 log_size = (( LOG *) v -> lg_hd -> gfo . imy )->log_size; 92 i( upde && `REP_ON ( v )) { 93 f = v -> gfo ; 94 nv = f -> imy ; 95 () `time (& nv -> p_timeamp ); 99 `F_SET ( v -> lg_hd , DBLOG_RECOVER ); 100 gi = v -> tx_hd -> gfo . imy ; 101 `F_SET ( gi , TXN_IN_RECOVERY ); 104 i(( t = `__log_curs ( v , & logc )) != 0) 105 r ; 111 `ZERO_LSN ( lowl ); 112 i( max_l ! NULL ) { 113 i(( t = `__log_backup ( v , logc , max_l , & lowl , 114 CKPLSN_CMP )) != 0) 115 r ; 116 } i( dbv -> tx_timeamp != 0) { 117 i(( t = `__log_ ( v , logc , & low , & lowl )) != 0) 118 r ; 119 i(( t32_t ) dbv -> tx_timeamp < low ) { 120 t1 [(t1) - 1] = '\0'; 121 () `y ( t1 , `__os_ime ( 122 & dbv -> tx_timeamp , time_buf ), ( t1 ) - 1); 123 i(( p = `rchr ( t1 , '\n')! NULL ) 124 * p = '\0'; 126 t2 [(t2) - 1] = '\0'; 127 ow = ( time_t ) low ; 128 () `y ( t2 , `__os_ime ( 129 & ow , time_buf ), ( t2 ) - 1); 130 i(( p = `rchr ( t2 , '\n')! NULL ) 131 * p = '\0'; 133 `__db_rx ( v , 135 t1 , t2 ); 136 t = EINVAL ; 137 r ; 210 #ifde UMRW 211 `ZERO_LSN ( ϡ_l ); 213 `memt (& da , 0, (data)); 214 i(( t = `__logc_g ( logc , & ϡ_l , & da , DB_LAST )) != 0) { 215 i( t = DB_NOTFOUND ) 216 t = 0; 218 `__db_rx ( v , "Lastogecordot found"); 219 r ; 224 `LOGCOPY_32 ( v , & txnid , 225 ( u_t8_t *) da .d+ ( u_t32_t )); 227 i( txnid != 0) 229 } ( t = `__logc_g ( logc , & l , & da , DB_PREV )) == 0); 237 i( t = DB_NOTFOUND ) 238 t = 0; 239 i( t != 0) 240 r ; 242 hi_txn = txnid ; 259 i(( t = `__logc_g ( logc , & ckp_l , & da , DB_FIRST )) != 0) { 260 i( t = DB_NOTFOUND ) 261 t = 0; 263 `__db_rx ( v , "Firstogecordot found"); 264 r ; 266 f_l = ckp_l ; 267 have_c = 1; 269 i(! `LF_ISSET ( DB_RECOVER_FATAL )) { 270 i(( t = `__txn_gckp ( v , & ckp_l )) == 0 && 271 ( t = `__logc_g ( logc , & ckp_l , & da , DB_SET )) == 0) { 273 i(( t = `__txn_ckp_ad ( v , 274 da .da, & ckp_gs )) != 0) { 275 `__db_rx ( v , 277 ( u_lg ) ckp_l . fe , 278 ( u_lg ) ckp_l . offt ); 279 r ; 281 f_l = ckp_gs -> ckp_l ; 282 `__os_ ( v , ckp_gs ); 283 have_c = 0; 304 i(( dbv -> tx_timeamp !0 || max_l ! NULL ) && 305 `LOG_COMPARE (& lowl , & f_l ) < 0) { 306 `DB_ASSERT ( v , have_c == 0); 307 f_l = lowl ; 312 i(! have_c && 313 ( t = `__logc_g ( logc , & f_l , & da , DB_SET )) != 0) { 314 `__db_rx ( v , "Checkpoint LSNecord [%ld][%ld]ot found", 315 ( u_lg ) f_l . fe , (u_lg)f_l. offt ); 316 r ; 319 #ide HAVE_BREW 320 i( dbv -> db_edback ! NULL ) { 321 i( ϡ_l . fe = f_l .file) 322 nfes = () 323 ( ϡ_l . offt - f_l .offt/ log_size ; 325 nfes = ()( ϡ_l . fe - f_l .file) + 326 ()(( log_size - f_l . offt ) + 327 ϡ_l . offt / log_size ; 329 i( nfes < 0.001) 330 nfes = 0.001; 335 t = 0; 336 i( hi_txn != 0) do { 338 `LOGCOPY_32 ( v , & txnid , 339 ( u_t8_t *) da .d+ ( u_t32_t )); 341 i( txnid != 0) 343 } ( t = `__logc_g ( logc , & l , & da , DB_NEXT )) == 0); 349 i( t = DB_NOTFOUND ) { 350 i( `LOG_COMPARE (& l , & ϡ_l ) != 0) 351 t = `__db_log_cru ( v , & l ); 353 t = 0; 357 i( t != 0 || 358 ( t = `__logc_g ( logc , & f_l , & da , DB_SET )) != 0) 359 r ; 362 i(( t = `__db_txi_ ( v , , 363 txnid , hi_txn , max_l , & txnfo )) != 0) 364 r ; 370 i(( t = `__v_ݒfes ( v , logc , 371 txnfo , & da , & f_l , & ϡ_l , nfes , 1)) != 0) 372 r ; 375 i( hi_txn =0 && max_l = NULL ) 376 de ; 384 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_RECOVERY )) 385 `__db_msg ( v , "Recovery starting from [%lu][%lu]", 386 ( u_lg ) f_l . fe , (u_lg)f_l. offt ); 388 ss = "backward"; 389 t = `__logc_g ( logc , & l , & da , DB_LAST ); 390 t =0 && `LOG_COMPARE (& l , & f_l ) >= 0; 391 t = `__logc_g ( logc , & l , & da , DB_PREV )) { 392 #ifde HAVE_BREW 393 `COMPQUIET ( ogss , 0); 395 i( dbv -> db_edback ! NULL ) { 396 ogss = 34 + ()(33 * ( `__l_diff (& f_l , 397 & ϡ_l , & l , log_size , 0/ nfes )); 398 dbv -> `db_edback (dbv, DB_RECOVER , ogss ); 401 = l ; 402 t = `__db_dich ( v , &v-> cov_db , 403 & da , & , DB_TXN_BACKWARD_ROLL , txnfo ); 404 i( t != 0) { 405 i( t ! DB_TXN_CKP ) 406 msgr ; 408 t = 0; 411 i( t = DB_NOTFOUND ) { 412 i( `LOG_COMPARE (& l , & f_l ) > 0) 413 t = `__db_log_cru ( v , & l ); 415 t = 0; 417 i( t != 0) 418 r ; 430 ss = "forward"; 431 _l = ϡ_l ; 432 i( max_l ! NULL || dbv -> tx_timeamp != 0) 433 _l = (( DB_TXNHEAD *) txnfo )-> maxl ; 435 t = `__logc_g ( logc , & l , & da , DB_NEXT ); 436 t =0; = `__logc_g ( logc , & l , & da , DB_NEXT )) { 437 #ide HAVE_BREW 438 i( dbv -> db_edback ! NULL ) { 439 ogss = 67 + ()(33 * ( `__l_diff (& f_l , 440 & ϡ_l , & l , log_size , 1/ nfes )); 441 dbv -> `db_edback (dbv, DB_RECOVER , ogss ); 444 = l ; 445 t = `__db_dich ( v , &v-> cov_db , 446 & da , & , DB_TXN_FORWARD_ROLL , txnfo ); 447 i( t != 0) { 448 i( t ! DB_TXN_CKP ) 449 msgr ; 451 t = 0; 458 i( `LOG_COMPARE (& l , & _l ) >= 0) 462 i( t = DB_NOTFOUND ) 463 t = `__db_log_cru ( v , & l ); 464 i( t != 0) 465 r ; 467 i( max_l = NULL ) 468 gi -> ϡ_txnid = (( DB_TXNHEAD *) txnfo )-> maxid ; 470 i( dbv -> tx_timeamp != 0) { 472 i( logc ! NULL ) { 473 i(( t = `__logc_o ( logc )) != 0) 474 r ; 475 logc = NULL ; 482 i(( t = `__memp_sync_t ( v , NULL , 0, 483 DB_SYNC_CACHE | DB_SYNC_SUPPRESS_WRITE , NULL , NULL)) != 0) 484 r ; 485 gi -> ϡ_ckp = (( DB_TXNHEAD *) txnfo )-> ck ; 486 i(( t = `__log_vun ( v , 487 &(( DB_TXNHEAD *) txnfo )-> maxl , 488 &(( DB_TXNHEAD *) txnfo )-> ck , un )) != 0) 489 r ; 492 de : 494 i(! `IS_REP_CLIENT ( v && ( t = `__txn_checkpot (env, 0, 0, 495 DB_CKP_INTERNAL | DB_FORCE )) != 0) { 502 i( max_l = NULL && t = ENOSPC ) 503 t = 0; 505 r ; 508 i( gi -> . _ees == 0) { 510 i(( t = `__dbg_o_fes ( v , 0)) != 0) 511 r ; 513 i(( t = `__dbg_mk_ed ( v )) != 0) 514 r ; 515 `F_SET ( v -> lg_hd , DBLOG_OPENFILES ); 518 i( max_l ! NULL ) { 519 i(! `IS_ZERO_LSN ((( DB_TXNHEAD *) txnfo )-> ck )) 520 gi -> ϡ_ckp = (( DB_TXNHEAD *) txnfo )-> ck ; 521 i(( t = 522 `__txn_fdϡckp ( v , & gi -> ϡ_ckp , max_l )) != 0) 523 r ; 526 i( logc ! NULL && ( t = `__logc_o (logc)) != 0) 527 r ; 528 logc = NULL ; 529 i(( t = `__log_vun ( v , 530 max_l , &(( DB_TXNHEAD *) txnfo )-> ck , un )) != 0) 531 r ; 539 i(( t = `__log_curs ( v , & logc )) != 0) 540 r ; 541 i(( t = 542 `__logc_g ( logc , & f_l , & da , DB_FIRST )) != 0) { 543 i( t = DB_NOTFOUND ) 544 t = 0; 546 `__db_rx ( v , "Firstogecordot found"); 547 r ; 549 i(( t = `__txn_gckp ( v , & f_l )) == 0 && 550 ( t = `__logc_g ( logc , & f_l , & da , DB_SET )) == 0) { 552 i(( t = `__txn_ckp_ad ( v , 553 da .da, & ckp_gs )) != 0) { 554 `__db_rx ( v , 556 ( u_lg ) f_l . fe , 557 ( u_lg ) f_l . offt ); 558 r ; 560 f_l = ckp_gs -> ckp_l ; 561 `__os_ ( v , ckp_gs ); 563 i(( t = `__logc_g ( logc , & f_l , & da , DB_SET )) != 0) 564 r ; 565 i(( t = `__v_ݒfes ( v , logc , 566 txnfo , & da , & f_l , max_l , nfes , 1)) != 0) 567 r ; 568 } i( gi -> . _ees == 0) { 573 i(( t = `__txn_t ( v )) != 0) 574 r ; 576 i(( t = `__txn_cye_id ( v )) != 0) 577 r ; 585 i( max_l = NULL && dbv -> tx_timeamp == 0) { 587 i( logc ! NULL && ( t = `__logc_o (logc)) != 0) 588 r ; 589 logc = NULL ; 592 i(( t = 593 `__log_cut_l ( v , & ϡ_l , NULL , NULL)) != 0) 594 r ; 595 i(( t = `__log_vun ( v , 596 & ϡ_l , & gi -> ϡ_ckp , NULL )) != 0) 597 r ; 600 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_RECOVERY )) { 601 () `time (& now ); 602 `__db_msg ( v , 603 "Recovy com %.24s", `__os_ime (& now , time_buf )); 604 `__db_msg ( v , "%s %lx %s [%lu][%lu]", 606 ( u_lg )( txnfo = NULL ? 607 TXN_MINIMUM : (( DB_TXNHEAD *) txnfo )-> maxid ), 609 ( u_lg ) gi -> ϡ_ckp . fe , 610 ( u_lg ) gi -> ϡ_ckp . offt ); 614 msgr : `__db_rx ( v , 616 ( u_lg ) l . fe , (u_lg. offt , ss ); 619 r : i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 620 t = t_t ; 622 i( txnfo ! NULL ) 623 `__db_txi_d ( v , txnfo ); 625 dbv -> tx_timeamp = 0; 627 `F_CLR ( v -> lg_hd , DBLOG_RECOVER ); 628 `F_CLR ( gi , TXN_IN_RECOVERY ); 630 ( t ); 631 } } 633 #ide HAVE_BREW 641 $__l_diff ( low , high , cut , max , is_fwd ) 642 DB_LSN * low , * high , * cut ; 643 u_t32_t max ; 644 is_fwd ; 646 nf ; 655 i( is_fwd ) { 656 i( cut -> fe = low ->file) 657 nf = ()( cut -> offt - low ->offt/ max ; 658 i( cut -> offt < low ->offset) 659 nf = ()(( cut -> fe - low ->file) - 1) + 660 ()(( max - low -> offt + cut ->offset) / 661 max ; 663 nf = ()( cut -> fe - low ->file) + 664 ()( cut -> offt - low ->offt/ max ; 666 i( cut -> fe = high ->file) 667 nf = ()( high -> offt - cut ->offt/ max ; 668 i( cut -> offt > high ->offset) 669 nf = ()(( high -> fe - cut ->file) - 1) + 671 (( max - cut -> offt + high ->offset) / max; 673 nf = ()( high -> fe - cut ->file) + 674 ()( high -> offt - cut ->offt/ max ; 676 ( nf ); 677 } } 693 $__log_backup ( v , logc , max_l , t_l , cmp ) 694 ENV * v ; 695 DB_LOGC * logc ; 696 DB_LSN * max_l , * t_l ; 697 u_t32_t cmp ; 699 DBT da ; 700 DB_LSN cmp_l , l ; 701 __txn_ckp_gs * ckp_gs ; 702 lcmp , t ; 704 `memt (& da , 0, (data)); 705 ckp_gs = NULL ; 707 i( cmp ! CKPLSN_CMP && cm! LASTCKP_CMP ) 708 ( EINVAL ); 710 i(( t = `__txn_gckp ( v , & l )) != 0) 711 r ; 716 ( t = `__logc_g ( logc , & l , & da , DB_SET )) == 0) { 717 i(( t = `__txn_ckp_ad ( 718 v , da .da, & ckp_gs )) != 0) 719 ( t ); 720 i( cmp = CKPLSN_CMP ) { 726 cmp_l = ckp_gs -> ckp_l ; 727 lcmp = ( `LOG_COMPARE (& cmp_l , max_l ) <= 0); 734 cmp_l = l ; 735 lcmp = ( `LOG_COMPARE (& cmp_l , max_l ) < 0); 737 i( lcmp ) { 738 * t_l = cmp_l ; 742 l = ckp_gs -> ϡ_ckp ; 747 i( `IS_ZERO_LSN ( l )) { 748 t = DB_NOTFOUND ; 751 `__os_ ( v , ckp_gs ); 752 ckp_gs = NULL ; 755 i( ckp_gs ! NULL ) 756 `__os_ ( v , ckp_gs ); 762 r : i( `IS_ZERO_LSN (* t_l && cmp = CKPLSN_CMP && 763 ( t =0 || = DB_NOTFOUND )) 764 t = `__logc_g ( logc , t_l , & da , DB_FIRST ); 765 ( t ); 766 } } 776 $__log_ ( v , logc , lowtime , lowl ) 777 ENV * v ; 778 DB_LOGC * logc ; 779 t32_t * lowtime ; 780 DB_LSN * lowl ; 782 __txn_ckp_gs * ckrgs ; 783 DB_LSN f_l , l ; 784 DBT da ; 785 u_t32_t y ; 786 cmp , t ; 788 `memt (& da , 0, (data)); 794 t = `__logc_g ( logc , & f_l , & da , DB_FIRST ); 795 t =0; = `__logc_g ( logc , & l , & da , DB_NEXT )) { 796 `LOGCOPY_32 ( v , & y , da .data); 797 i( y ! DB___txn_ckp ) 799 i(( t = 800 `__txn_ckp_ad ( v , da .da, & ckrgs )) == 0) { 801 cmp = `LOG_COMPARE (& ckrgs -> ckp_l , & f_l ); 802 * lowl = ckrgs -> ckp_l ; 803 * lowtime = ckrgs -> timeamp ; 805 `__os_ ( v , ckrgs ); 806 i( cmp >= 0) 811 ( t ); 812 } } 831 $__v_ݒfes ( v , logc , txnfo , 832 da , ݒ_l , ϡ_l , nfes , _covy ) 833 ENV * v ; 834 DB_LOGC * logc ; 835 * txnfo ; 836 DBT * da ; 837 DB_LSN * ݒ_l , * ϡ_l ; 838 nfes ; 839 _covy ; 841 DB_ENV * dbv ; 842 DB_LSN l , ; 843 u_t32_t log_size ; 844 ogss , t ; 846 dbv = v ->dbenv; 853 log_size = (( LOG *) v -> lg_hd -> gfo . imy )->log_size; 855 l = * ݒ_l ; 857 #ifde HAVE_BREW 858 `COMPQUIET ( nfes , ()0.001); 859 `COMPQUIET ( ogss , 0); 861 i( _covy && dbv -> db_edback ! NULL ) { 862 `DB_ASSERT ( v , ϡ_l ! NULL ); 863 ogss = ()(33 * ( `__l_diff ( ݒ_l , 864 ϡ_l , & l , log_size , 1/ nfes )); 865 dbv -> `db_edback (dbv, DB_RECOVER , ogss ); 868 = l ; 869 t = `__db_dich ( v , &v-> cov_db , da , & , 870 _covy ? DB_TXN_OPENFILES : DB_TXN_POPENFILES , 871 txnfo ); 872 i( t !0 && ! DB_TXN_CKP ) { 873 `__db_rx ( v , 875 ( u_lg ) l . fe , (u_lg. offt ); 878 i(( t = `__logc_g ( logc , & l , da , DB_NEXT )) != 0) { 879 i( t = DB_NOTFOUND ) { 880 i( ϡ_l ! NULL && 881 `LOG_COMPARE (& l , ϡ_l ) != 0) 882 t = `__db_log_cru ( v , & l ); 884 t = 0; 890 ( t ); 891 } } 894 $__db_log_cru ( v , lp ) 895 ENV * v ; 896 DB_LSN * lp ; 898 `__db_rx ( v , "Log file corruptt LSN: [%lu][%lu]", 899 ( u_lg ) lp -> fe , (u_lgp-> offt ); 900 ( EINVAL ); 901 } } 909 $__v__c ( v , vsi ) 910 ENV * v ; 911 u_t32_t vsi ; 913 t ; 920 i(( t = `__v__c_47 ( v )) != 0) 921 ( t ); 922 t = 0; 923 vsi ) { 924 DB_LOGVERSION_47 : 932 DB_LOGVERSION_46 : 933 DB_LOGVERSION_45 : 934 DB_LOGVERSION_44 : 935 t = `__v__c_46 ( v ); 937 DB_LOGVERSION_43 : 938 t = `__v__c_43 ( v ); 940 DB_LOGVERSION_42 : 941 t = `__v__c_42 ( v ); 944 `__db_rx ( v , "Unknowvsi %lu", ( u_lg ) vsi ); 945 t = EINVAL ; 948 ( t ); 949 } } 952 $__v__c_42 ( v ) 953 ENV * v ; 955 t ; 957 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 958 __db_lk_42_cov , DB___db_lk_42 )) != 0) 959 r ; 960 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 961 __db_pg_loc_42_cov , DB___db_pg_loc_42 )) != 0) 962 r ; 963 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 964 __db_pg__42_cov , DB___db_pg__42 )) != 0) 965 r ; 966 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 967 __db_pg_da_42_cov , DB___db_pg_da_42 )) != 0) 968 r ; 969 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 970 __ham_magroup_42_cov , DB___ham_magroup_42 )) != 0) 971 r ; 972 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 973 __ham_grouoc_42_cov , DB___ham_grouoc_42 )) != 0) 974 r ; 975 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 976 __txn_ckp_42_cov , DB___txn_ckp_42 )) != 0) 977 r ; 978 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 979 __txn_g_42_cov , DB___txn_g_42 )) != 0) 980 r ; 981 r : 982 ( t ); 983 } } 986 $__v__c_43 ( v ) 987 ENV * v ; 989 t ; 991 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 992 __bam_lk_43_cov , DB___bam_lk_43 )) != 0) 993 r ; 997 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 998 __txn_g_42_cov , DB___txn_g_42 )) != 0) 999 r ; 1000 r : 1001 ( t ); 1002 } } 1005 $__v__c_46 ( v ) 1006 ENV * v ; 1008 t ; 1010 i(( t = `__db_add_covy_t ( v , &v-> cov_db , 1011 __bam_mge_44_cov , DB___bam_mge_44 )) != 0) 1012 r ; 1014 r : ( t ); 1015 } } 1018 $__v__c_47 ( v ) 1019 ENV * v ; 1021 t ; 1023 i(( t = `__bam__cov ( v , &v-> cov_db )) != 0) 1024 r ; 1025 i(( t = `__d__cov ( v , &v-> cov_db )) != 0) 1026 r ; 1027 i(( t = `__db__cov ( v , &v-> cov_db )) != 0) 1028 r ; 1029 i(( t = `__dbg__cov ( v , &v-> cov_db )) != 0) 1030 r ; 1031 i(( t = `__f__cov ( v , &v-> cov_db )) != 0) 1032 r ; 1033 i(( t = `__ham__cov ( v , &v-> cov_db )) != 0) 1034 r ; 1035 i(( t = `__qam__cov ( v , &v-> cov_db )) != 0) 1036 r ; 1037 i(( t = `__txn__cov ( v , &v-> cov_db )) != 0) 1038 r ; 1039 r : 1040 ( t ); 1041 } } @../env/env_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 14 __v_des_g __P (( ENV *, REGINFO *, REGINFO *, REGION **)); 15 __v_umem __P (( ENV *, *, size_t , )); 16 __v_sys_ch __P (( ENV *, REGINFO *, REGION *)); 17 __v_sys_dach __P (( ENV *, REGINFO *, )); 18 __v_des_deroy __P (( ENV *, REGION *)); 19 __v_move_fe __P (( ENV *)); 28 $__v_ch ( v , _ag , _ok , y_ok ) 29 ENV * v ; 30 u_t32_t * _ag ; 31 _ok , y_ok ; 33 DB_ENV * dbv ; 34 REGENV * nv ; 35 REGENV_REF f ; 36 REGINFO * f ; 37 REGION * , egi ; 38 size_t w , size ; 39 u_t32_t bys , i , mbys , egis , sigtu ; 40 u_t y_t ; 41 majv , mv , tchv , t , gid ; 42 buf [( DB_REGION_FMT ) + 20]; 45 dbv = v ->dbenv; 46 y_t = 0; 47 sigtu = `__v_ru_sig (); 50 lo : nv = NULL ; 53 i(( t = `__os_oc ( v , 1, ( REGINFO ), & f )) != 0) 54 ( t ); 55 f -> v =nv; 56 f -> ty = REGION_TYPE_ENV ; 57 f -> id = REGION_ID_ENV ; 58 f -> ags = REGION_JOIN_OK ; 59 i( _ok ) 60 `F_SET ( f , REGION_CREATE_OK ); 63 i( `F_ISSET ( v , ENV_PRIVATE )) 64 t = `__os_rdup ( v , "oss-ive", & f -> me ); 66 () `tf ( buf , (buf), "%s", DB_REGION_ENV ); 67 t = 68 `__db_ame ( v , DB_APP_NONE , buf , 0, NULL , & f -> me ); 70 i( t != 0) 71 r ; 89 i( `F_ISSET ( v , ENV_PRIVATE || `DB_GLOBAL ( j_gi_m ! NULL ) 90 ti ; 100 i( _ok ) { 101 i(( t = `__os_ݒ ( v , f -> me , 0, 102 DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_REGION , 103 v -> db_mode , &v-> lockfhp )) == 0) 104 ti ; 105 i( t ! EEXIST ) { 106 `__db_r ( v , t , "%s", f -> me ); 107 r ; 112 `F_CLR ( f , REGION_CREATE_OK ); 118 i(( t = `__os_ݒ ( 119 v , f -> me , 0, DB_OSO_REGION , 0, &v-> lockfhp )) != 0) 120 r ; 151 i(( t = `__os_iofo ( v , f -> me , 152 v -> lockfhp , & mbys , & bys , NULL )) != 0) { 153 `__db_r ( v , t , "%s", f -> me ); 154 r ; 162 size = mbys * MEGABYTE + bys ; 173 i( size <( f )) { 174 i( size !( f )) 175 y ; 177 i(( t = `__os_ad ( v ,nv-> lockfhp , & f , 178 ( f ), & w )!0 ||rw < ( size_t )(ref)) { 179 i( t == 0) 180 t = EIO ; 181 `__db_r ( v , t , 183 f -> me ); 184 r ; 186 size = f .size; 187 gid = f .segid; 189 `F_SET ( v , ENV_SYSTEM_MEM ); 190 } i( `F_ISSET ( v , ENV_SYSTEM_MEM )) { 191 t = EINVAL ; 192 `__db_r ( v , t , 194 f -> me ); 195 r ; 197 gid = INVALID_REGION_SEGID ; 199 #ide HAVE_MUTEX_FCNTL 205 () `__os_ohd ( v ,nv-> lockfhp ); 206 v -> lockfhp = NULL ; 210 `memt (& egi , 0, (tregion)); 211 egi . size = ( roff_t )size; 212 egi . gid = segid; 213 i(( t = `__v_sys_ch ( v , f , & egi )) != 0) 214 r ; 216 ur_m_funis : 224 f -> imy = inf-> addr ; 225 f -> addr = ( u_t8_t *)f->add+ ( REGENV ); 226 nv = f -> imy ; 232 i( nv -> majv ! DB_VERSION_MAJOR || 233 nv -> mv ! DB_VERSION_MINOR ) { 234 i( nv -> majv !0 ||v-> mv != 0) { 235 `__db_rx ( v , 237 DB_VERSION_MAJOR , DB_VERSION_MINOR , 238 nv -> majv ,v-> mv ); 239 t = DB_VERSION_MISMATCH ; 241 t = EINVAL ; 242 r ; 244 i( nv -> sigtu != signature) { 245 `__db_rx ( v , "Build signature doesn't matchnvironment"); 246 t = DB_VERSION_MISMATCH ; 247 r ; 264 i( nv -> nic && ! `F_ISSET ( dbv , DB_ENV_NOPANIC )) { 265 t = `__v_nic_msg ( v ); 266 r ; 268 i( nv -> magic ! DB_REGION_MAGIC ) 269 y ; 275 i(( t = `__v_des_g ( v , f , inf, & )!0 ||= NULL ) 276 fd_r ; 277 f -> =p; 296 i( `DB_GLOBAL ( j_gi_m = NULL && -> size != size) 297 y ; 305 i( _ag ! NULL ) { 306 `FLD_CLR (* _ag , nv -> _ags ); 307 i(* _ag != 0) { 308 `__db_rx ( v , 310 t = EINVAL ; 311 r ; 313 * _ag = nv -> _ags ; 320 () `__v_umem ( v , f -> imy , -> size , 0); 323 v -> gfo = f ; 326 ti : 328 `F_SET ( f , REGION_CREATE ); 342 `memt (& egi , 0, (tregion)); 343 egis = `__memp_max_gis ( v ) + 10; 344 size = egis * ( REGION ); 345 size + dbv -> sswd_n ; 346 size +( dbv -> thr_max + dbenv->thr_max / 4) * 347 `__v_loc_size (( DB_THREAD_INFO )); 348 size + v -> thr_nbuck * `__v_loc_size (( DB_HASHTAB )); 349 size += 16 * 1024; 350 egi . size = size; 351 egi . gid = INVALID_REGION_SEGID ; 352 i(( t = `__v_sys_ch ( v , f , & egi )) != 0) 353 r ; 360 i(! `F_ISSET ( f , REGION_CREATE )) 361 ur_m_funis ; 367 () `__v_umem ( v , f -> addr , egi . size , 1); 387 f -> imy = inf-> addr ; 388 f -> addr = ( u_t8_t *)f->add+ ( REGENV ); 389 `__v_loc_ ( f , egi . size - ( REGENV )); 395 nv = f -> imy ; 396 nv -> magic = 0; 397 nv -> nic = 0; 399 () `db_vsi (& majv , & mv , & tchv ); 400 nv -> majv = ( u_t32_t )majver; 401 nv -> mv = ( u_t32_t )minver; 402 nv -> tchv = ( u_t32_t )patchver; 403 nv -> sigtu = signature; 405 () `time (& nv -> timeamp ); 406 `__os_unique_id ( v , & nv -> vid ); 412 nv -> _ags = ( _ag = NULL ) ? 0 : *init_flagsp; 420 nv -> gi_t = egis ; 421 i(( t = `__v_loc ( f , egis * ( REGION ), & )) != 0) { 422 `__db_r ( 423 v , t , "unableo createew masteregionrray"); 424 r ; 426 nv -> gi_off = `R_OFFSET ( f , ); 427 i = 0; i < egis ; ++i, ++ ) 428 -> id = INVALID_REGION_ID ; 430 nv -> ch_off =v-> thad_off =v-> p_off = INVALID_ROFF ; 431 nv -> ags = 0; 432 nv -> _timeamp =v-> p_timeamp = 0; 433 nv -> mtx_gv = MUTEX_INVALID ; 441 i(( t = `__v_des_g ( v , f , inf, & )) != 0) { 442 fd_r : `__db_rx ( v , "%s: ubˁfdnvmt", f -> me ); 443 i( t == 0) 444 t = EINVAL ; 445 r ; 447 f -> =p; 448 -> size = egi .size; 449 -> gid = egi .segid; 464 i( egi . gid ! INVALID_REGION_SEGID ) { 465 f . size = egi .size; 466 f . gid = egi .segid; 467 i(( t = `__os_wre ( 468 v ,nv-> lockfhp , & f , ef), & w )) != 0) { 469 `__db_r ( v , t , 471 f -> me ); 472 r ; 476 #ide HAVE_MUTEX_FCNTL 482 i( v -> lockfhp ! NULL ) { 483 () `__os_ohd ( v ,nv-> lockfhp ); 484 v -> lockfhp = NULL ; 489 v -> gfo = f ; 492 r : 493 y : 494 i( v -> lockfhp ! NULL ) { 495 () `__os_ohd ( v ,nv-> lockfhp ); 496 v -> lockfhp = NULL ; 506 i( f -> addr ! NULL ) { 507 i( f -> = NULL ) 508 f -> = & egi ; 511 f -> addr = inf-> imy ; 512 () `__v_sys_dach ( v , 513 f , `F_ISSET (f, REGION_CREATE )); 517 i( f -> me ! NULL ) 518 `__os_ ( v , f -> me ); 519 `__os_ ( v , f ); 522 i( t == 0) { 523 i(! y_ok || ++ y_t > 3) { 524 `__db_rx ( v , "unableo joinhenvironment"); 525 t = EAGAIN ; 527 `__os_yld ( v , y_t * 3, 0); 528 lo ; 532 ( t ); 533 } } 542 $__v_tu_ ( v ) 543 ENV * v ; 545 REGENV * nv ; 546 REGINFO * f ; 548 f = v -> gfo ; 549 nv = f -> imy ; 552 i(! `F_ISSET ( f , REGION_CREATE )) 559 nv -> magic = DB_REGION_MAGIC ; 562 } } 571 $__v_tu_off ( v , ags ) 572 ENV * v ; 573 u_t32_t ags ; 575 REGENV * nv ; 576 REGINFO * f ; 577 t , t_t ; 579 t = 0; 587 i( `__v_ch ( v , NULL , 0, 1) != 0) 590 f = v -> gfo ; 591 nv = f -> imy ; 593 `MUTEX_LOCK ( v , nv -> mtx_gv ); 607 i( nv -> ft > 0 && ! `LF_ISSET ( DB_FORCE && !nv-> nic ) 608 t = EBUSY ; 610 nv -> nic = 1; 616 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 618 i(( t_t = `__v_dach ( v , 0)!0 && t == 0) 619 t = t_t ; 621 ( t ); 622 } } 631 $__v_nic_t ( v , ) 632 ENV * v ; 633 ; 635 i( v ! NULL &&nv-> gfo != NULL) 636 (( REGENV *) v -> gfo -> imy )-> nic = ? 1 : 0; 637 } } 646 $__v_f_emt ( v ) 647 ENV * v ; 649 REGENV * nv ; 650 REGINFO * f ; 651 t ; 653 f = v -> gfo ; 654 nv = f -> imy ; 657 i( `F_ISSET ( f , REGION_CREATE )) { 658 i(( t = `__mux_loc ( 659 v , MTX_ENV_REGION , 0, & nv -> mtx_gv )) != 0) 660 ( t ); 661 nv -> ft = 1; 664 `MUTEX_LOCK ( v , nv -> mtx_gv ); 665 ++ nv -> ft ; 666 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 669 `F_SET ( v , ENV_REF_COUNTED ); 671 } } 680 $__v_f_deemt ( v ) 681 ENV * v ; 683 REGENV * nv ; 684 REGINFO * f ; 687 i(( f = v -> gfo = NULL ) 690 nv = f -> imy ; 693 i( `F_ISSET ( v , ENV_REF_COUNTED )) { 695 `MUTEX_LOCK ( v , nv -> mtx_gv ); 696 i( nv -> ft == 0) 697 `__db_rx ( v , 700 -- nv -> ft ; 701 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 703 `F_CLR ( v , ENV_REF_COUNTED ); 707 ( `F_ISSET ( v , ENV_PRIVATE ) ? 708 `__mux_ ( v , & nv -> mtx_gv ) : 0); 709 } } 718 $__v_dach ( v , deroy ) 719 ENV * v ; 720 deroy ; 722 REGENV * nv ; 723 REGINFO * f ; 724 REGION ; 725 t , t_t ; 727 f = v -> gfo ; 728 nv = f -> imy ; 729 t = 0; 732 i( v -> lockfhp ! NULL ) { 733 i(( t_t = 734 `__os_ohd ( v ,nv-> lockfhp )!0 && t == 0) 735 t = t_t ; 736 v -> lockfhp = NULL ; 744 i( deroy ) { 753 = * f ->rp; 754 f -> = &rp; 756 i( nv -> gi_off ! INVALID_ROFF ) 757 `__v_loc_ ( 758 f , `R_ADDR (f, nv -> gi_off )); 767 v -> gfo = NULL ; 770 f -> addr = inf-> imy ; 772 i(( t_t = `__v_sys_dach ( v , f , deroy )!0 && t == 0) 773 t = t_t ; 774 i( f -> me ! NULL ) 775 `__os_ ( v , f -> me ); 778 `__os_ ( v , f ); 780 ( t ); 781 } } 790 $__v_move_v ( v ) 791 ENV * v ; 793 DB_ENV * dbv ; 794 REGENV * nv ; 795 REGINFO * f , gfo ; 796 REGION * ; 797 u_t32_t ags_ig , i ; 799 dbv = v ->dbenv; 805 ags_ig = `F_ISSET ( dbv , DB_ENV_NOLOCKING | DB_ENV_NOPANIC ); 806 `F_SET ( dbv , DB_ENV_NOLOCKING | DB_ENV_NOPANIC ); 817 i( `__v_ch ( v , NULL , 0, 0) != 0) 818 mfes ; 820 f = v -> gfo ; 821 nv = f -> imy ; 826 nv -> nic = 1; 835 = `R_ADDR ( f , nv -> gi_off ), 836 i = 0; i < nv -> gi_t ; ++i, ++ ) { 837 i( -> id = INVALID_REGION_ID ||p-> ty = REGION_TYPE_ENV ) 846 `memt (& gfo , 0, (reginfo)); 847 gfo . id = ->id; 848 gfo . ags = REGION_CREATE_OK ; 855 i( `__v_gi_ch ( v , & gfo , 0) != 0) 858 #ifde HAVE_MUTEX_SYSTEM_RESOURCES 863 i( gfo . ty = REGION_TYPE_MUTEX ) 864 `__mux_sour_tu ( v , & gfo ); 866 () `__v_gi_dach ( v , & gfo , 1); 870 () `__v_dach ( v , 1); 872 mfes : 877 `__v_move_fe ( v ); 879 `F_CLR ( dbv , DB_ENV_NOLOCKING | DB_ENV_NOPANIC ); 880 `F_SET ( dbv , ags_ig ); 883 } } 890 $__v_move_fe ( v ) 891 ENV * v ; 893 t , ft , ϡrm , t ; 894 cڡ * d ; 895 ved_ch , * p , ** mes , * th , buf [( DB_REGION_FMT ) + 20]; 898 () `tf ( buf , (buf), "%s", DB_REGION_ENV ); 899 i(( t = `__db_ame ( v , DB_APP_NONE , buf , 0, NULL , & th )) != 0) 903 i(( p = `__db_h ( th )= NULL ) { 904 p = th ; 905 ved_ch = * p ; 907 d = PATH_DOT ; 909 ved_ch = * p ; 910 * p = '\0'; 912 d = th ; 916 i(( t = `__os_dli ( v , d , 0, & mes , & ft )) != 0) 917 `__db_r ( v , t , "%s", d ); 920 * p = ved_ch ; 921 `__os_ ( v , th ); 923 i( t != 0) 929 ϡrm = -1, t = ft ; --cnt >= 0;) { 931 i( `cmp ( mes [ t ], 932 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1)) 936 i( `cmp ( mes [ t ], "__dbq.", 6) == 0) 940 i( `cmp ( mes [ t ], "__db.register", 13) == 0) 944 i( `cmp ( mes [ t ], "__db.rep", 8) == 0) 951 i( `rcmp ( mes [ t ], DB_REGION_ENV ) == 0) { 952 ϡrm = t ; 957 i( `__db_ame ( v , 958 DB_APP_NONE , mes [ t ], 0, NULL , & th ) == 0) { 968 () `__os_uƚk ( v , th , 1); 969 `__os_ ( v , th ); 973 i( ϡrm != -1) 974 i( `__db_ame ( v , 975 DB_APP_NONE , mes [ ϡrm ], 0, NULL , & th ) == 0) { 976 () `__os_uƚk ( v , th , 1); 977 `__os_ ( v , th ); 979 `__os_d ( v , mes , ft ); 980 } } 989 $__v_gi_ch ( v , f , size ) 990 ENV * v ; 991 REGINFO * f ; 992 size_t size ; 994 REGION * ; 995 t ; 996 buf [( DB_REGION_FMT ) + 20]; 1002 `F_CLR ( f , REGION_CREATE ); 1003 i(( t = `__v_des_g ( v ,nv-> gfo , f , & )) != 0) 1004 ( t ); 1005 f -> v =nv; 1006 f -> =p; 1007 f -> ty = ->type; 1008 f -> id = ->id; 1014 i( `F_ISSET ( f , REGION_CREATE )) 1015 -> size = ( roff_t )size; 1018 () `tf ( buf , (buf), DB_REGION_FMT , f -> id ); 1019 i(( t = `__db_ame ( v , 1020 DB_APP_NONE , buf , 0, NULL , & f -> me )) != 0) 1021 r ; 1022 i(( t = `__v_sys_ch ( v , f , )) != 0) 1023 r ; 1030 () `__v_umem ( v , 1031 f -> addr , -> size , `F_ISSET (f, REGION_CREATE )); 1041 i( `F_ISSET ( f , REGION_CREATE )) 1042 `__v_loc_ ( f , -> size ); 1046 r : 1047 i( f -> addr ! NULL ) 1048 () `__v_sys_dach ( v , 1049 f , `F_ISSET (f, REGION_CREATE )); 1050 f -> = NULL ; 1051 f -> id = INVALID_REGION_ID ; 1054 i( `F_ISSET ( f , REGION_CREATE )) { 1055 `__v_des_deroy ( v , ); 1056 `F_CLR ( f , REGION_CREATE ); 1059 ( t ); 1060 } } 1069 $__v_gi_dach ( v , f , deroy ) 1070 ENV * v ; 1071 REGINFO * f ; 1072 deroy ; 1074 REGION * ; 1075 t ; 1077 = f ->rp; 1078 i( `F_ISSET ( v , ENV_PRIVATE )) 1079 deroy = 1; 1087 i( `F_ISSET ( v , ENV_PRIVATE && f -> imy ! NULL ) 1088 `__v_loc_ ( f , inf-> imy ); 1091 t = `__v_sys_dach ( v , f , deroy ); 1094 i( deroy ) 1095 `__v_des_deroy ( v , ); 1098 i( f -> me ! NULL ) 1099 `__os_ ( v , f -> me ); 1101 ( t ); 1102 } } 1109 $__v_sys_ch ( v , f , ) 1110 ENV * v ; 1111 REGINFO * f ; 1112 REGION * ; 1114 t ; 1121 #OS_VMPAGESIZE (8 * 1024) ) 1122 #OS_VMROUNDOFF ( i ) { \ 1123 i(( i ) < \ 1124 ( UINT32_MAX - OS_VMPAGESIZE + 1 || ( i ) < OS_VMPAGESIZE) \ 1125 ( i + OS_VMPAGESIZE - 1; \ 1126 ( i -(i% OS_VMPAGESIZE ; \ 1127 } ) 1128 `OS_VMROUNDOFF ( -> size ); 1130 #ifde DB_REGIONSIZE_MAX 1132 i( -> size > DB_REGIONSIZE_MAX ) { 1133 `__db_rx ( v , "region size %lu isooarge; maximum is %lu", 1134 ( u_lg ) -> size , (u_lg) DB_REGIONSIZE_MAX ); 1135 ( EINVAL ); 1147 i( `F_ISSET ( v , ENV_PRIVATE )) { 1148 #i `defed ( HAVE_MUTEX_HPPA_MSEM_INIT ) 1156 i( `F_ISSET ( v , ENV_THREAD )) { 1157 `__db_rx ( v , "%s", 1159 `__db_rx ( v , "%s", 1161 ( EINVAL ); 1164 i(( t = `__os_mloc ( 1165 v , ( REGENV ), & f -> addr )) != 0) 1166 ( t ); 1168 f -> max_loc = -> size ; 1170 i(( t = `__os_ch ( v , f , )) != 0) 1171 ( t ); 1178 f -> addr_ig = inf-> addr ; 1179 f -> addr = `ALIGNP_INC (f-> addr_ig , ( size_t )); 1181 -> size_ig =p-> size ; 1182 i( f -> addr !f-> addr_ig ) 1183 -> size -( roff_t ) 1184 (( u_t8_t *) f -> addr - (u_t8_*)f-> addr_ig ); 1187 } } 1194 $__v_sys_dach ( v , f , deroy ) 1195 ENV * v ; 1196 REGINFO * f ; 1197 deroy ; 1199 REGION * ; 1201 = f ->rp; 1204 i( f -> addr !f-> addr_ig ) { 1205 f -> addr = inf-> addr_ig ; 1206 -> size =p-> size_ig ; 1210 i( `F_ISSET ( v , ENV_PRIVATE )) { 1211 `__os_ ( v , f -> addr ); 1215 ( `__os_dach ( v , f , deroy )); 1216 } } 1224 $__v_des_g ( v , v_f , f , p ) 1225 ENV * v ; 1226 REGINFO * v_f , * f ; 1227 REGION ** p ; 1229 REGENV * nv ; 1230 REGION * , * emy_ , * f_ty ; 1231 u_t32_t i , maxid ; 1233 * p = NULL ; 1234 nv = v_f -> imy ; 1248 maxid = REGION_ID_ENV ; 1249 emy_ = f_ty = NULL ; 1250 = `R_ADDR ( v_f , nv -> gi_off ), 1251 i = 0; i < nv -> gi_t ; ++i, ++ ) { 1252 i( -> id = INVALID_REGION_ID ) { 1253 i( emy_ = NULL ) 1254 emy_ = ; 1257 i( f -> id ! INVALID_REGION_ID ) { 1258 i( f -> id = ->id) 1262 i( f -> ty = ->type && 1263 `F_ISSET ( f , REGION_JOIN_OK ) && 1264 ( f_ty = NULL || f_ty-> id > ->id)) 1265 f_ty = ; 1267 i( -> id > maxid ) 1268 maxid = -> id ; 1272 i( i > nv -> gi_t ) 1273 = f_ty ; 1274 i( ! NULL ) { 1275 * p = ; 1283 i(! `F_ISSET ( f , REGION_CREATE_OK )) 1284 ( ENOENT ); 1290 i( emy_ = NULL ) { 1291 `__db_rx ( v , "nooomemaining fordditional REGIONs"); 1292 ( ENOENT ); 1299 `memt ( emy_ , 0, ( REGION )); 1300 emy_ -> gid = INVALID_REGION_SEGID ; 1306 emy_ -> ty = f ->type; 1307 emy_ -> id = f ->id = INVALID_REGION_ID ? maxid + 1 : infop->id; 1309 `F_SET ( f , REGION_CREATE ); 1311 * p = emy_ ; 1313 } } 1320 $__v_des_deroy ( v , ) 1321 ENV * v ; 1322 REGION * ; 1324 `COMPQUIET ( v , NULL ); 1326 -> id = INVALID_REGION_ID ; 1327 } } 1334 $__v_umem ( v , addr , size , d ) 1335 ENV * v ; 1336 * addr ; 1337 size_t size ; 1338 d ; 1340 t ; 1341 u_t8_t * p , * t ; 1344 i( `F_ISSET ( v , ENV_PRIVATE )) 1362 t = 0; 1363 i( `F_ISSET ( v -> dbv , DB_ENV_REGION_INIT )) { 1364 i( d ) 1365 p = addr , 1366 t = ( u_t8_t *) addr + size ; p <; += 512) 1367 p [0] = 0xdb; 1369 p = addr , 1370 t = ( u_t8_t *) addr + size ; p <; += 512) 1371 t | p [0]; 1374 ( t ); 1375 } } @../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 ( v , pos , nowa ) \ 22 `__os_fdlock ( v , (v)-> dbv -> giry , ( off_t )( pos ), 1, nowa ) ) 23 #REGISTRY_UNLOCK ( v , pos ) \ 24 `__os_fdlock ( v , (v)-> dbv -> giry , ( off_t )( pos ), 0, 0) ) 25 #REGISTRY_EXCL_LOCK ( v , nowa ) \ 26 `REGISTRY_LOCK ( v , 1, nowa ) ) 27 #REGISTRY_EXCL_UNLOCK ( v ) \ 28 `REGISTRY_UNLOCK ( v , 1) ) 30 __vg_add __P (( ENV *, *)); 110 #DB_ENVREG_KILL_ALL 0 ) 119 $__vg_gi ( v , ed_covyp ) 120 ENV * v ; 121 * ed_covyp ; 123 DB_ENV * dbv ; 124 pid_t pid ; 125 u_t32_t bys , mbys ; 126 t ; 127 * ; 129 * ed_covyp = 0; 131 dbv = v ->dbenv; 132 dbv -> `thad_id (dbv, & pid , NULL ); 133 = NULL ; 135 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 136 `__db_msg ( v , "%lu:eginvmt", ( u_lg ) pid ); 139 i(( t = 140 `__db_ame ( v , DB_APP_NONE , REGISTER_FILE , 0, NULL , & )) != 0) 141 r ; 142 i(( t = `__os_ݒ ( v , , 0, 143 DB_OSO_CREATE , DB_MODE_660 , & dbv -> giry )) != 0) 144 r ; 153 i(( t = `REGISTRY_EXCL_LOCK ( v , 0)) != 0) 154 r ; 162 i(( t = `__os_iofo ( 163 v , , dbv -> giry , & mbys , & bys , NULL )) != 0) 164 r ; 165 i( mbys =0 && bys == 0) { 166 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 167 `__db_msg ( v , "%lu: cg %s", ( u_lg ) pid , ); 168 * ed_covyp = 1; 172 i(( t = `__vg_add ( v , ed_covyp )) != 0) 173 r ; 180 i(* ed_covyp =0 && ( t = `REGISTRY_EXCL_UNLOCK ( v )) != 0) 181 r ; 184 r : * ed_covyp = 0; 190 i( dbv -> giry ! NULL ) 191 () `__os_ohd ( v , dbv -> giry ); 192 dbv -> giry = NULL ; 195 i( ! NULL ) 196 `__os_ ( v , ); 198 ( t ); 199 } } 206 $__vg_add ( v , ed_covyp ) 207 ENV * v ; 208 * ed_covyp ; 210 DB_ENV * dbv ; 211 pid_t pid ; 212 off_t d , pos ; 213 size_t , nw ; 214 u_t lt ; 215 u_t32_t bys , mbys ; 216 ed_covy , t ; 217 * p , buf [ PID_LEN + 10], pid_buf [PID_LEN + 10]; 219 dbv = v ->dbenv; 220 ed_covy = 0; 221 `COMPQUIET ( p , NULL ); 224 dbv -> `thad_id (dbv, & pid , NULL ); 225 `tf ( pid_buf , id_buf), PID_FMT , ( u_lg ) pid ); 227 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 228 `__db_msg ( v , "%lu:ddg stػgiry", ( u_lg ) pid ); 230 #i DB_ENVREG_KILL_ALL 232 kl_l : 236 i(( t = `__os_ek ( v , dbv -> giry , 0, 0, 0)) != 0) 237 ( t ); 247 lt = 0;; ++lcnt) { 248 i(( t = `__os_ad ( 249 v , dbv -> giry , buf , PID_LEN , & )) != 0) 250 ( t ); 251 i( == 0) 259 i( ! PID_LEN ) { 260 ed_covy = 1; 264 i( `PID_ISEMPTY ( buf )) { 265 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 266 `__db_msg ( v , "%02u: EMPTY", lt ); 276 i( `memcmp ( buf , pid_buf , PID_LEN ) == 0) { 277 `__db_rx ( v , 279 ( EINVAL ); 282 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) { 283 p = buf ; *p == ' ';) 284 ++ p ; 285 buf [ - 1] = '\0'; 288 #i DB_ENVREG_KILL_ALL 289 i( ed_covy ) { 290 pid = ( pid_t ) `oul ( buf , NULL , 10); 291 () `kl ( pid , SIGKILL ); 293 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 294 `__db_msg ( v , "%02u: %s: KILLED", lt , p ); 298 pos = ( off_t ) lt * PID_LEN ; 299 i( `REGISTRY_LOCK ( v , pos , 1) == 0) { 300 i(( t = `REGISTRY_UNLOCK ( v , pos )) != 0) 301 ( t ); 303 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 304 `__db_msg ( v , "%02u: %s: FAILED", lt , p ); 306 ed_covy = 1; 307 #i DB_ENVREG_KILL_ALL 308 kl_l ; 313 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 314 `__db_msg ( v , "%02u: %s: LOCKED", lt , p ); 324 i( ed_covy ) { 325 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 326 `__db_msg ( v , "%lu:ecovyequed", ( u_lg ) pid ); 329 i(( t = `__os_iofo ( 330 v , NULL , dbv -> giry , & mbys , & bys , NULL)) != 0) 331 ( t ); 332 d = ( off_t ) mbys * MEGABYTE + bys ; 342 i(( t = `__os_ek ( v , dbv -> giry , 0, 0, 0)) != 0) 343 ( t ); 344 lt = ( u_t ) d / PID_LEN + 345 (( u_t ) d % PID_LEN =0 ? 0 : 1); lt > 0; --lcnt) 346 i(( t = `__os_wre ( v , 347 dbv -> giry , PID_EMPTY , PID_LEN , & nw )) != 0) 348 ( t ); 355 i(( t = `__os_ek ( v , dbv -> giry , 0, 0, 0)) != 0) 356 ( t ); 357 lt = 0;; ++lcnt) { 358 i(( t = `__os_ad ( 359 v , dbv -> giry , buf , PID_LEN , & )) != 0) 360 ( t ); 361 i( = PID_LEN && ! `PID_ISEMPTY ( buf )) 363 pos = ( off_t ) lt * PID_LEN ; 364 i( `REGISTRY_LOCK ( v , pos , 1) == 0) { 365 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 366 `__db_msg ( v , 368 ( u_lg ) pid , lt , (u_lg) pos ); 370 i(( t = `__os_ek ( v , 371 dbv -> giry , 0, 0, ( u_t32_t ) pos )) != 0 || 372 ( t = `__os_wre ( v , 373 dbv -> giry , pid_buf , PID_LEN , & nw )) != 0) 374 ( t ); 375 dbv -> giry_off = ( u_t32_t ) pos ; 380 i( ed_covy ) 381 * ed_covyp = 1; 383 ( t ); 384 } } 393 $__vg_uegi ( v , covy_ed ) 394 ENV * v ; 395 covy_ed ; 397 DB_ENV * dbv ; 398 size_t nw ; 399 t , t_t ; 401 dbv = v ->dbenv; 402 t = 0; 410 i( covy_ed ) 411 r ; 420 i(( t = `__os_ek ( v , 421 dbv -> giry , 0, 0, dbv-> giry_off )) != 0 || 422 ( t = `__os_wre ( 423 v , dbv -> giry , PID_EMPTY , PID_LEN , & nw )) != 0) 424 r ; 439 r : i(( t_t = 440 `__os_ohd ( v , dbv -> giry )!0 && t == 0) 441 t = t_t ; 443 dbv -> giry = NULL ; 444 ( t ); 445 } } 454 $__vg_xuock ( v ) 455 ENV * v ; 457 DB_ENV * dbv ; 458 pid_t pid ; 459 t ; 461 dbv = v ->dbenv; 463 dbv -> `thad_id (dbv, & pid , NULL ); 465 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_REGISTER )) 466 `__db_msg ( v , 467 "%lu:ecovy comed, uockg", ( u_lg ) pid ); 469 i(( t = `REGISTRY_EXCL_UNLOCK ( v )) == 0) 470 ( t ); 472 `__db_r ( v , t , "%s:xusivfuock", REGISTER_FILE ); 473 ( `__v_nic ( v , t )); 474 } } @../env/env_sig.c 7 ~"db_cfig.h " 9 #__INCLUDE_NETWORKING 1 ) 10 #__INCLUDE_SELECT_H 1 ) 11 ~"db_t.h " 13 ~"dbc/db_ge.h " 14 ~"dbc/b.h " 15 ~"dbc/yo.h " 16 ~"dbc/db_jo.h " 17 ~"dbc/db_vify.h " 18 ~"dbc/hash.h " 19 ~"dbc/lock.h " 20 ~"dbc/log.h " 21 ~"dbc/mp.h " 22 #ifde HAVE_MUTEX_SUPPORT 23 ~"dbc/mux_t.h " 25 ~"dbc/qam.h " 26 ~"dbc/txn.h " 28 #__STRUCTURE_COUNT 113 ) 36 u_t32_t 37 $__v_ru_sig () 39 u_sht t [ __STRUCTURE_COUNT + 5]; 40 u_t i ; 42 i = 0; 43 #__ADD ( s ( t [ i ++] = (s)) ) 45 `__ADD ( __db_dbt ); 46 #ifdef HAVE_MUTEX_SUPPORT 47 `__ADD ( __db_mux_ ); 49 `__ADD ( __db_lock_ ); 50 `__ADD ( __db_lock_h ); 51 `__ADD ( __db_lock_p ); 52 `__ADD ( __db_ock ); 53 `__ADD ( __db_lock_u ); 54 `__ADD ( __db_lockq ); 55 `__ADD ( __db_l ); 56 `__ADD ( __db_log_curs ); 57 `__ADD ( __db_log_ ); 58 `__ADD ( __db_mpofe ); 59 `__ADD ( __db_mpo_ ); 60 `__ADD ( __db_mpo_f ); 61 `__ADD ( __db_txn ); 62 `__ADD ( __kids ); 63 `__ADD ( __db_li ); 64 `__ADD ( __db_txn_aive ); 65 `__ADD ( __db_txn_ ); 66 `__ADD ( __db_pmgr_se ); 67 `__ADD ( __db_p_ ); 68 `__ADD ( __db_pmgr_ ); 69 `__ADD ( __db_q_cd ); 70 `__ADD ( __db_qu ); 71 `__ADD ( __db_q_ ); 72 `__ADD ( __db ); 73 `__ADD ( __cq_fq ); 74 `__ADD ( __cq_aq ); 75 `__ADD ( __cq_jq ); 76 `__ADD ( __dbc ); 77 `__ADD ( __key_nge ); 78 `__ADD ( __db_bt_ ); 79 `__ADD ( __db_com ); 80 `__ADD ( __db_h_ ); 81 `__ADD ( __db_qam_ ); 82 `__ADD ( __db_v ); 83 `__ADD ( __db_diab ); 84 `__ADD ( __db ); 85 `__ADD ( __ ); 86 `__ADD ( __db_msgbuf ); 87 `__ADD ( __p_li ); 88 `__ADD ( __db_thad_fo ); 89 `__ADD ( __v_thad_fo ); 90 `__ADD ( __ag_m ); 91 `__ADD ( __v ); 92 `__ADD ( __dbc_ ); 93 `__ADD ( __dbpgfo ); 94 `__ADD ( __g ); 95 `__ADD ( __curs ); 96 `__ADD ( __b ); 97 `__ADD ( __db_ch ); 98 `__ADD ( __db_feign_fo ); 99 `__ADD ( __db_txnhd ); 100 `__ADD ( __db_txi ); 101 `__ADD ( __jo_curs ); 102 `__ADD ( __pg_chksum ); 103 `__ADD ( __pg_yo ); 104 `__ADD ( __pgli ); 105 `__ADD ( __vrfy_dbfo ); 106 `__ADD ( __vrfy_gefo ); 107 `__ADD ( __vrfy_chdfo ); 108 `__ADD ( __db_globs ); 109 `__ADD ( __db_lockgi ); 110 `__ADD ( __sh_dbt ); 111 `__ADD ( __db_lockobj ); 112 `__ADD ( __db_lock ); 113 `__ADD ( __db_lock ); 114 `__ADD ( __db_lockb ); 115 `__ADD ( __db_lock ); 116 `__ADD ( __db_y ); 117 `__ADD ( __ame ); 118 `__ADD ( __db_log ); 119 `__ADD ( __hdr ); 120 `__ADD ( __log_rsi ); 121 `__ADD ( __log ); 122 `__ADD ( __db_comm ); 123 `__ADD ( __db_fet ); 124 `__ADD ( __db_mpo ); 125 `__ADD ( __db_meg ); 126 `__ADD ( __mpo ); 127 `__ADD ( __db_mpo_hash ); 128 `__ADD ( __mpofe ); 129 `__ADD ( __bh ); 130 `__ADD ( __bh_oz_p ); 131 `__ADD ( __bh_oz_a ); 132 #ifdef HAVE_MUTEX_SUPPORT 133 `__ADD ( __db_muxmgr ); 135 #ifdef HAVE_MUTEX_SUPPORT 136 `__ADD ( __db_muxgi ); 138 #ifdef HAVE_MUTEX_SUPPORT 139 `__ADD ( __db_mux_t ); 141 `__ADD ( __fh_t ); 142 `__ADD ( __qcurs ); 143 `__ADD ( __mpay ); 144 `__ADD ( __qmpf ); 145 `__ADD ( __queue ); 146 `__ADD ( __qam_fi ); 147 `__ADD ( __db_g_v_f ); 148 `__ADD ( __db_g_v ); 149 `__ADD ( __db_gi ); 150 `__ADD ( __db_gfo_t ); 151 `__ADD ( __p ); 152 `__ADD ( __db_p ); 153 `__ADD ( __p_a_y ); 154 `__ADD ( __txn_da ); 155 `__ADD ( __db_txnmgr ); 156 `__ADD ( __db_txegi ); 157 `__ADD ( __txn_logc ); 159 ( `__ham_func5 ( NULL , t , i * (t[0]))); 160 } } @../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 (( ENV *, u_t32_t )); 21 __v_t_dbv_l __P (( ENV *, u_t32_t )); 22 __v_t_v_l __P (( ENV *, u_t32_t )); 23 __v_t_fh __P (( ENV *)); 24 __v_t_s __P (( ENV *, u_t32_t )); 25 __v_t_thad __P (( ENV *)); 26 __v__t __P (( ENV *, u_t32_t )); 27 * __v_thad_e_t __P (( DB_THREAD_STATE )); 29 __g_ty __P (( g_ty_t )); 38 $__v__t_ ( dbv , ags ) 39 DB_ENV * dbv ; 40 u_t32_t ags ; 42 DB_THREAD_INFO * ; 43 ENV * v ; 44 t ; 46 v = dbv ->env; 48 `ENV_ILLEGAL_BEFORE_OPEN ( v , "DB_ENV->stat_print"); 50 i(( t = `__db_fchk ( v , "DB_ENV->stat_print", 51 ags , DB_STAT_ALL | DB_STAT_CLEAR | DB_STAT_SUBSYSTEM )) != 0) 52 ( t ); 54 `ENV_ENTER ( v , ); 55 `REPLICATION_WRAP ( v , ( `__v__t nv, ags )), 0, t ); 56 `ENV_LEAVE ( v , ); 57 ( t ); 58 } } 65 $__v__t ( v , ags ) 66 ENV * v ; 67 u_t32_t ags ; 69 time_t now ; 70 t ; 71 time_buf [ CTIME_BUFLEN ]; 73 () `time (& now ); 74 `__db_msg ( v , "%.24s\tLotime", `__os_ime (& now , time_buf )); 76 i(( t = `__v_t_s ( v , ags )) != 0) 77 ( t ); 79 i( `LF_ISSET ( DB_STAT_ALL ) && 80 ( t = `__v_t_l ( v , ags )) != 0) 81 ( t ); 83 i(( t = `__v_t_thad ( v )) != 0) 84 ( t ); 86 i(( t = `__v_t_fh ( v )) != 0) 87 ( t ); 89 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 92 i( `LOGGING_ON ( v )) { 93 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 94 i(( t = `__log__t ( v , ags )) != 0) 95 ( t ); 97 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 98 i(( t = `__dbg__t ( v , ags )) != 0) 99 ( t ); 102 i( `LOCKING_ON ( v )) { 103 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 104 i(( t = `__lock__t ( v , ags )) != 0) 105 ( t ); 108 i( `MPOOL_ON ( v )) { 109 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 110 i(( t = `__memp__t ( v , ags )) != 0) 111 ( t ); 114 i( `REP_ON ( v )) { 115 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 116 i(( t = `__p__t ( v , ags )) != 0) 117 ( t ); 120 i( `TXN_ON ( v )) { 121 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 122 i(( t = `__txn__t ( v , ags )) != 0) 123 ( t ); 126 #ifde HAVE_MUTEX_SUPPORT 132 i( `MUTEX_ON ( v )) { 133 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 134 i(( t = `__mux__t ( v , ags )) != 0) 135 ( t ); 140 } } 148 $__v_t_s ( v , ags ) 149 ENV * v ; 150 u_t32_t ags ; 152 REGENV * nv ; 153 REGINFO * f ; 154 time_buf [ CTIME_BUFLEN ]; 156 f = v -> gfo ; 157 nv = f -> imy ; 159 i( `LF_ISSET ( DB_STAT_ALL )) { 160 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 161 `__db_msg ( v , "Default databasenvironment information:"); 163 `STAT_HEX ("Maginumb", nv -> magic ); 164 `STAT_LONG ("Pivue", nv -> nic ); 165 `__db_msg ( v , "%d.%d.%d\tEnvironment version", 166 nv -> majv ,v-> mv ,v-> tchv ); 167 `STAT_LONG ("B vsi", DB_BTREEVERSION ); 168 `STAT_LONG ("Hash vsi", DB_HASHVERSION ); 169 `STAT_LONG ("Lock vsi", DB_LOCKVERSION ); 170 `STAT_LONG ("Log vsi", DB_LOGVERSION ); 171 `STAT_LONG ("Queuvsi", DB_QAMVERSION ); 172 `STAT_LONG ("Sequ vsi", DB_SEQUENCE_VERSION ); 173 `STAT_LONG ("Txvsi", DB_TXNVERSION ); 174 `__db_msg ( v , 175 "%.24s\tCiځime", `__os_ime (& nv -> timeamp , time_buf )); 176 `STAT_HEX ("EnvmID", nv -> vid ); 177 `__mux_t_debug_sg ( v , 179 nv -> mtx_gv , ags ); 180 `STAT_LONG ("Rens", nv -> ft ); 183 } } 190 $__v_t_l ( v , ags ) 191 ENV * v ; 192 u_t32_t ags ; 194 t , t_t ; 199 t = `__v_t_dbv_l ( v , ags ); 200 i(( t_t = `__v_t_v_l ( v , ags )!0 && t == 0) 201 t = t_t ; 203 ( t ); 204 } } 211 $__v_t_dbv_l ( v , ags ) 212 ENV * v ; 213 u_t32_t ags ; 215 cڡ FN db_v_ [] = { 216 { DB_ENV_AUTO_COMMIT , "DB_ENV_AUTO_COMMIT" }, 217 { DB_ENV_CDB_ALLDB , "DB_ENV_CDB_ALLDB" }, 218 { DB_ENV_DIRECT_DB , "DB_ENV_DIRECT_DB" }, 219 { DB_ENV_DSYNC_DB , "DB_ENV_DSYNC_DB" }, 220 { DB_ENV_MULTIVERSION , "DB_ENV_MULTIVERSION" }, 221 { DB_ENV_NOLOCKING , "DB_ENV_NOLOCKING" }, 222 { DB_ENV_NOMMAP , "DB_ENV_NOMMAP" }, 223 { DB_ENV_NOPANIC , "DB_ENV_NOPANIC" }, 224 { DB_ENV_OVERWRITE , "DB_ENV_OVERWRITE" }, 225 { DB_ENV_REGION_INIT , "DB_ENV_REGION_INIT" }, 226 { DB_ENV_RPCCLIENT , "DB_ENV_RPCCLIENT" }, 227 { DB_ENV_RPCCLIENT_GIVEN , "DB_ENV_RPCCLIENT_GIVEN" }, 228 { DB_ENV_TIME_NOTGRANTED , "DB_ENV_TIME_NOTGRANTED" }, 229 { DB_ENV_TXN_NOSYNC , "DB_ENV_TXN_NOSYNC" }, 230 { DB_ENV_TXN_NOWAIT , "DB_ENV_TXN_NOWAIT" }, 231 { DB_ENV_TXN_SNAPSHOT , "DB_ENV_TXN_SNAPSHOT" }, 232 { DB_ENV_TXN_WRITE_NOSYNC , "DB_ENV_TXN_WRITE_NOSYNC" }, 233 { DB_ENV_YIELDCPU , "DB_ENV_YIELDCPU" }, 234 { 0, NULL } 236 cڡ FN v [] = { 237 { DB_VERB_DEADLOCK , "DB_VERB_DEADLOCK" }, 238 { DB_VERB_FILEOPS , "DB_VERB_FILEOPS" }, 239 { DB_VERB_FILEOPS_ALL , "DB_VERB_FILEOPS_ALL" }, 240 { DB_VERB_RECOVERY , "DB_VERB_RECOVERY" }, 241 { DB_VERB_REGISTER , "DB_VERB_REGISTER" }, 242 { DB_VERB_REPLICATION , "DB_VERB_REPLICATION" }, 243 { DB_VERB_REP_ELECT , "DB_VERB_REP_ELECT" }, 244 { DB_VERB_REP_LEASE , "DB_VERB_REP_LEASE" }, 245 { DB_VERB_REP_MISC , "DB_VERB_REP_MISC" }, 246 { DB_VERB_REP_MSGS , "DB_VERB_REP_MSGS" }, 247 { DB_VERB_REP_SYNC , "DB_VERB_REP_SYNC" }, 248 { DB_VERB_REPMGR_CONNFAIL , "DB_VERB_REPMGR_CONNFAIL" }, 249 { DB_VERB_REPMGR_MISC , "DB_VERB_REPMGR_MISC" }, 250 { DB_VERB_WAITSFOR , "DB_VERB_WAITSFOR" }, 251 { 0, NULL } 253 DB_ENV * dbv ; 254 DB_MSGBUF mb ; 255 ** p ; 257 dbv = v ->dbenv; 258 `DB_MSGBUF_INIT (& mb ); 260 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 261 `STAT_POINTER ("ENV", dbv -> v ); 262 `__mux_t_debug_sg ( 263 v , "DB_ENV hd mux", dbv -> mtx_db_v , ags ); 264 `STAT_ISSET ("E", dbv -> db_r ); 265 `STAT_ISSET ("Efe", dbv -> db_rfe ); 266 `STAT_STRING ("Epfx", dbv -> db_fx ); 267 `STAT_ISSET ("Msgfe", dbv -> db_msgfe ); 268 `STAT_ISSET ("Msg", dbv -> db_msg ); 270 `STAT_ISSET ("ADich", dbv -> p_dich ); 271 `STAT_ISSET ("Evt", dbv -> db_evt_func ); 272 `STAT_ISSET ("Fdback", dbv -> db_edback ); 273 `STAT_ISSET ("Fe", dbv -> db_ ); 274 `STAT_ISSET ("Pic", dbv -> db_nic ); 275 `STAT_ISSET ("Mloc", dbv -> db_mloc ); 276 `STAT_ISSET ("Roc", dbv -> db_loc ); 277 `STAT_ISSET ("IsAlive", dbv -> is_ive ); 278 `STAT_ISSET ("ThadId", dbv -> thad_id ); 279 `STAT_ISSET ("ThadIdSg", dbv -> thad_id_rg ); 281 `STAT_STRING ("Log d", dbv -> db_log_d ); 282 `STAT_STRING ("Tmd", dbv -> db_tmp_d ); 283 i( dbv -> db_da_d = NULL ) 284 `STAT_ISSET ("Dd", dbv -> db_da_d ); 286 p = dbv -> db_da_d ; *! NULL ; ++p) 287 `__db_msgadd ( v , & mb , "%s\tDd", * p ); 288 `DB_MSGBUF_FLUSH ( v , & mb ); 291 `STAT_STRING ( 292 "Imed dey mode", dbv -> rmed_d_mode ); 294 `STAT_LONG ("Shed memy key", dbv -> shm_key ); 296 `STAT_ISSET ("Passwd", dbv -> sswd ); 298 `STAT_ISSET ("RPC cl", dbv -> _hd ); 299 `STAT_ULONG ("RPC cl ID", dbv -> _id ); 301 `STAT_ISSET ("Arive", dbv -> p_ive ); 302 `STAT_ISSET ("Api1 il", dbv -> i1_ ); 303 `STAT_ISSET ("Api2 il", dbv -> i2_ ); 305 `__db_ags ( v , NULL , dbv -> vbo , v , NULL, "\tVerbose flags"); 307 `STAT_ULONG ("Muxlign", dbv -> mux_ign ); 308 `STAT_ULONG ("Mux c", dbv -> mux_t ); 309 `STAT_ULONG ("Mux inc", dbv -> mux_c ); 310 `STAT_ULONG ("Muxas", dbv -> mux_s_s ); 312 `STAT_ISSET ("Lock cis", dbv -> lk_cis ); 313 `STAT_LONG ("Lock modes", dbv -> lk_modes ); 314 `STAT_ULONG ("Lock de", dbv -> lk_de ); 315 `STAT_ULONG ("Lock max", dbv -> lk_max ); 316 `STAT_ULONG ("Lock maxocks", dbv -> lk_max_locks ); 317 `STAT_ULONG ("Lock max objes", dbv -> lk_max_objes ); 318 `STAT_ULONG ("Locktis", dbv -> lk_is ); 319 `STAT_ULONG ("Lockimeout", dbv -> lk_timeout ); 321 `STAT_ULONG ("Log bsize", dbv -> lg_bsize ); 322 `STAT_FMT ("Log fmode", "%#o", , dbv -> lg_femode ); 323 `STAT_ULONG ("Logegi max", dbv -> lg_gimax ); 324 `STAT_ULONG ("Log size", dbv -> lg_size ); 326 `STAT_ULONG ("CachGB", dbv -> mp_gbys ); 327 `STAT_ULONG ("CachB", dbv -> mp_bys ); 328 `STAT_ULONG ("Cachmax GB", dbv -> mp_max_gbys ); 329 `STAT_ULONG ("Cachmax B", dbv -> mp_max_bys ); 330 `STAT_ULONG ("Cachmm size", dbv -> mp_mmsize ); 331 `STAT_ULONG ("Cachmax ofd", dbv -> mp_maxݒfd ); 332 `STAT_ULONG ("Cachmax wre", dbv -> mp_maxwre ); 333 `STAT_ULONG ("Cachnumb", dbv -> mp_nche ); 334 `STAT_ULONG ("Cachmax wrp", dbv -> mp_maxwre_p ); 336 `STAT_ULONG ("Txmax", dbv -> tx_max ); 337 `STAT_ULONG ("Txtimeamp", dbv -> tx_timeamp ); 338 `STAT_ULONG ("Txtimeout", dbv -> tx_timeout ); 340 `STAT_ULONG ("Thad cou", dbv -> thr_max ); 342 `STAT_ISSET ("Regiry", dbv -> giry ); 343 `STAT_ULONG ("Regiry offt", dbv -> giry_off ); 345 `__db_ags ( v , 346 NULL , dbv -> ags , db_v_ , NULL, "\tPublicnvironment flags"); 349 } } 356 $__v_t_v_l ( v , ags ) 357 ENV * v ; 358 u_t32_t ags ; 360 cڡ FN v_ [] = { 361 { ENV_CDB , "ENV_CDB" }, 362 { ENV_DBLOCAL , "ENV_DBLOCAL" }, 363 { ENV_LOCKDOWN , "ENV_LOCKDOWN" }, 364 { ENV_NO_OUTPUT_SET , "ENV_NO_OUTPUT_SET" }, 365 { ENV_OPEN_CALLED , "ENV_OPEN_CALLED" }, 366 { ENV_PRIVATE , "ENV_PRIVATE" }, 367 { ENV_RECOVER_FATAL , "ENV_RECOVER_FATAL" }, 368 { ENV_REF_COUNTED , "ENV_REF_COUNTED" }, 369 { ENV_SYSTEM_MEM , "ENV_SYSTEM_MEM" }, 370 { ENV_THREAD , "ENV_THREAD" }, 371 { 0, NULL } 373 cڡ FN o [] = { 374 { DB_CREATE , "DB_CREATE" }, 375 { DB_FORCE , "DB_FORCE" }, 376 { DB_INIT_CDB , "DB_INIT_CDB" }, 377 { DB_INIT_LOCK , "DB_INIT_LOCK" }, 378 { DB_INIT_LOG , "DB_INIT_LOG" }, 379 { DB_INIT_MPOOL , "DB_INIT_MPOOL" }, 380 { DB_INIT_REP , "DB_INIT_REP" }, 381 { DB_INIT_TXN , "DB_INIT_TXN" }, 382 { DB_LOCKDOWN , "DB_LOCKDOWN" }, 383 { DB_NOMMAP , "DB_NOMMAP" }, 384 { DB_PRIVATE , "DB_PRIVATE" }, 385 { DB_RDONLY , "DB_RDONLY" }, 386 { DB_RECOVER , "DB_RECOVER" }, 387 { DB_RECOVER_FATAL , "DB_RECOVER_FATAL" }, 388 { DB_SYSTEM_MEM , "DB_SYSTEM_MEM" }, 389 { DB_THREAD , "DB_THREAD" }, 390 { DB_TRUNCATE , "DB_TRUNCATE" }, 391 { DB_TXN_NOSYNC , "DB_TXN_NOSYNC" }, 392 { DB_USE_ENVIRON , "DB_USE_ENVIRON" }, 393 { DB_USE_ENVIRON_ROOT , "DB_USE_ENVIRON_ROOT" }, 394 { 0, NULL } 396 cڡ FN gv [] = { 397 { DB_REGENV_REPLOCKED , "DB_REGENV_REPLOCKED" }, 398 { 0, NULL } 400 REGENV * nv ; 401 REGINFO * f ; 402 REGION * ; 403 u_t32_t i ; 404 time_buf [ CTIME_BUFLEN ]; 406 f = v -> gfo ; 407 nv = f -> imy ; 409 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 410 `STAT_POINTER ("DB_ENV", v -> dbv ); 411 `__mux_t_debug_sg ( 412 v , "ENV hd mux",nv-> mtx_v , ags ); 414 `STAT_STRING ("Home", v -> db_home ); 415 `__db_ags ( v , NULL ,nv-> ݒ_ags , o , NULL, "\tOpen flags"); 416 `STAT_FMT ("Mode", "%#o", , v -> db_mode ); 418 `STAT_ULONG ("Pid cache", v -> pid_che ); 420 `STAT_ISSET ("Lockfhp", v -> lockfhp ); 422 `STAT_ISSET ("Lock", v -> v_ef ); 424 `STAT_ISSET ("IȻcovyab", v -> cov_db . t_dich ); 425 `STAT_ULONG ("Number ofecoveryable slots", 426 v -> cov_db . t_size ); 427 `STAT_ISSET ("Execovyab", v -> cov_db . ext_dich ); 428 `STAT_ULONG ("Number ofecoveryable slots", 429 v -> cov_db . ext_size ); 431 `STAT_ULONG ("Thad hash bucks", v -> thr_nbuck ); 432 `STAT_ISSET ("Thad hashab", v -> thr_hashb ); 434 `STAT_ULONG ("Mux incou", v -> mux_iq_xt ); 435 `STAT_ULONG ("Mux inmax", v -> mux_iq_max ); 437 `__mux_t_debug_sg ( 438 v , "ENVi oDB hdˠmux",nv-> mtx_dbli , ags ); 439 `STAT_LONG ("DBen cou", v -> db_f ); 441 `STAT_ULONG ("XA RM ID", v -> xa_rmid ); 443 `__mux_t_debug_sg ( v , "MT mux",nv-> mtx_mt , ags ); 445 `STAT_ISSET ("Cryhd", v -> yo_hd ); 446 `STAT_ISSET ("Lock hd", v -> lk_hd ); 447 `STAT_ISSET ("Log hd", v -> lg_hd ); 448 `STAT_ISSET ("Cachhd", v -> mp_hd ); 449 `STAT_ISSET ("Mux hd", v -> mux_hd ); 450 `STAT_ISSET ("Rliti hd", v -> p_hd ); 451 `STAT_ISSET ("Txhd", v -> tx_hd ); 453 `STAT_ISSET ("Ucy", v -> dbt_urcy ); 455 `STAT_LONG ("Tebt", v -> _abt ); 456 `STAT_LONG ("Te check", v -> _check ); 457 `STAT_LONG ("Te cy", v -> _cy ); 459 `__db_ags ( v , 460 NULL , v -> ags , v_ , NULL, "\tPrivatenvironment flags"); 462 `__db_t_gfo ( v , f , "Primy", ags ); 463 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 464 `__db_msg ( v , "Peregion databasenvironment information:"); 465 = `R_ADDR ( f , nv -> gi_off ), 466 i = 0; i < nv -> gi_t ; ++i, ++ ) { 467 i( -> id = INVALID_REGION_ID ) 469 `__db_msg ( v , "%Regi:", `__g_ty ( -> ty )); 470 `STAT_LONG ("Regi ID", -> id ); 471 `STAT_LONG ("SegmID", -> gid ); 472 `__db_dlbys ( v , 473 "Size", ( u_lg )0, (u_lg)0, (u_lg) -> size ); 475 `__db_ags ( v , 476 NULL , nv -> _ags , o , NULL, "\tInitialization flags"); 477 `STAT_ULONG ("Regi sls", nv -> gi_t ); 478 `__db_ags ( v , 479 NULL , nv -> ags , gv , NULL, "\tReplication flags"); 480 `__db_msg ( v , "%.24s\tOperationimestamp", 481 nv -> _timeamp == 0 ? 482 "!S" : `__os_ime (& nv -> _timeamp , time_buf )); 483 `__db_msg ( v , "%.24s\tReplicationimestamp", 484 nv -> p_timeamp == 0 ? 485 "!S" : `__os_ime (& nv -> p_timeamp , time_buf )); 488 } } 491 $__v_thad_e_t ( e ) 492 DB_THREAD_STATE e ; 494 e ) { 495 THREAD_ACTIVE : 497 THREAD_BLOCKED : 499 THREAD_BLOCKED_DEAD : 501 THREAD_OUT : 507 } } 514 $__v_t_thad ( v ) 515 ENV * v ; 517 BH * bhp ; 518 DB_ENV * dbv ; 519 DB_HASHTAB * hb ; 520 DB_MPOOL * dbmp ; 521 DB_THREAD_INFO * ; 522 PIN_LIST * li , * ; 523 REGENV * nv ; 524 REGINFO * f ; 525 THREAD_INFO * thad ; 526 u_t32_t i ; 527 buf [ DB_THREADID_STRLEN ]; 529 dbv = v ->dbenv; 532 i(( hb = v -> thr_hashb = NULL ) 535 dbmp = v -> mp_hd ; 536 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 537 `__db_msg ( v , "Threadracking information"); 540 f = v -> gfo ; 541 nv = f -> imy ; 542 thad = `R_ADDR ( f , nv -> thad_off ); 543 `STAT_ULONG ("Thad blocklod", thad -> thr_cou ); 544 `STAT_ULONG ("Thadotiځhshd", thad -> thr_max ); 545 `STAT_ULONG ("Thad hash bucks", thad -> thr_nbuck ); 548 `__db_msg ( v , "Thread status blocks:"); 549 i = 0; i < v -> thr_nbuck ; i++) 550 `SH_TAILQ_FOREACH ( , & hb [ i ], dbth_lks , __db_thad_fo ) { 551 i( -> dbth_e = THREAD_SLOT_NOT_IN_USE ) 553 `__db_msg ( v , "\tprocess/thread %s: %s", 554 dbv -> `thad_id_rg ( 555 dbv , -> dbth_pid , ip-> dbth_tid , buf ), 556 `__v_thad_e_t ( -> dbth_e )); 557 li = `R_ADDR ( v -> gfo , -> dbth_pli ); 558 = li ;< &li[ -> dbth_pmax ];p++) { 559 i( -> b_f = INVALID_ROFF ) 561 bhp = `R_ADDR ( 562 & dbmp -> gfo [ -> gi ],p-> b_f ); 563 `__db_msg ( v , 564 "\t\s: %lu", ( u_lg ) bhp -> pgno ); 568 } } 575 $__v_t_fh ( v ) 576 ENV * v ; 578 DB_FH * fhp ; 580 i( `TAILQ_FIRST (& v -> fdli = NULL ) 583 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 584 `__db_msg ( v , "Environment file handle information"); 586 `MUTEX_LOCK ( v ,nv-> mtx_v ); 588 `TAILQ_FOREACH ( fhp , & v -> fdli , q ) 589 `__db_t_fh ( v , NULL , fhp , 0); 591 `MUTEX_UNLOCK ( v ,nv-> mtx_v ); 594 } } 603 $__db_t_fh ( v , g , fh , ags ) 604 ENV * v ; 605 cڡ * g ; 606 DB_FH * fh ; 607 u_t32_t ags ; 609 cڡ FN [] = { 610 { DB_FH_NOSYNC , "DB_FH_NOSYNC" }, 611 { DB_FH_OPENED , "DB_FH_OPENED" }, 612 { DB_FH_UNLINK , "DB_FH_UNLINK" }, 613 { 0, NULL } 616 i( fh = NULL ) { 617 `STAT_ISSET ( g , fh ); 621 `STAT_STRING ("fe-hd.fme", fh -> me ); 623 `__mux_t_debug_sg ( 624 v , "fe-hd.mux", fh -> mtx_fh , ags ); 626 `STAT_LONG ("fe-hd.n cou", fh -> f ); 627 `STAT_LONG ("fe-hd.fdest", fh -> fd ); 629 `STAT_ULONG ("fe-hd.gnumb", fh -> pgno ); 630 `STAT_ULONG ("fe-hd.gsize", fh -> pgsize ); 631 `STAT_ULONG ("fe-hd.gofft", fh -> offt ); 633 `STAT_ULONG ("fe-hd.ek cou", fh -> ek_cou ); 634 `STAT_ULONG ("fe-hd.ad cou", fh -> ad_cou ); 635 `STAT_ULONG ("fe-hd.wrcou", fh -> wre_cou ); 637 `__db_ags ( v , NULL , fh -> ags , , NULL, "\tfile-handle.flags"); 638 } } 647 $__db_t_feid ( v , id , suffix ) 648 ENV * v ; 649 u_t8_t * id ; 650 cڡ * suffix ; 652 DB_MSGBUF mb ; 653 i ; 655 i( id = NULL ) { 656 `STAT_ISSET ("ID", id ); 660 `DB_MSGBUF_INIT (& mb ); 661 i = 0; i < DB_FILE_ID_LEN ; ++i, ++ id ) { 662 `__db_msgadd ( v , & mb , "%x", ( u_t )* id ); 663 i( i < DB_FILE_ID_LEN - 1) 664 `__db_msgadd ( v , & mb , " "); 666 i( suffix ! NULL ) 667 `__db_msgadd ( v , & mb , "%s", suffix ); 668 `DB_MSGBUF_FLUSH ( v , & mb ); 669 } } 678 $__db_dl ( v , msg , vue ) 679 ENV * v ; 680 cڡ * msg ; 681 u_lg vue ; 687 i( vue < 10000000) 688 `__db_msg ( v , "%lu\t%s", vue , msg ); 690 `__db_msg ( v , "%luM\t%(%lu)", vue / 1000000, msg , value); 691 } } 701 $__db_dl_p ( v , msg , vue , p , g ) 702 ENV * v ; 703 cڡ * msg , * g ; 704 u_lg vue ; 705 p ; 707 DB_MSGBUF mb ; 709 `DB_MSGBUF_INIT (& mb ); 715 i( vue < 10000000) 716 `__db_msgadd ( v , & mb , "%lu\t%s", vue , msg ); 718 `__db_msgadd ( v , 719 & mb , "%luM\t%s", ( vue + 500000/ 1000000, msg ); 720 i( g = NULL ) 721 `__db_msgadd ( v , & mb , " (%d%%)", p ); 723 `__db_msgadd ( v , & mb , " (%d%% %s)", p , g ); 725 `DB_MSGBUF_FLUSH ( v , & mb ); 726 } } 736 $__db_dlbys ( v , msg , gbys , mbys , bys ) 737 ENV * v ; 738 cڡ * msg ; 739 u_lg gbys , mbys , bys ; 741 DB_MSGBUF mb ; 742 cڡ * p ; 744 `DB_MSGBUF_INIT (& mb ); 747 bys > MEGABYTE ) { 748 ++ mbys ; 749 bys - MEGABYTE ; 751 mbys > GIGABYTE / MEGABYTE ) { 752 ++ gbys ; 753 mbys - GIGABYTE / MEGABYTE ; 756 i( gbys =0 && mbys =0 && bys == 0) 757 `__db_msgadd ( v , & mb , "0"); 759 p = ""; 760 i( gbys > 0) { 761 `__db_msgadd ( v , & mb , "%luGB", gbys ); 762 p = " "; 764 i( mbys > 0) { 765 `__db_msgadd ( v , & mb , "%s%luMB", p , mbys ); 766 p = " "; 768 i( bys >= 1024) { 769 `__db_msgadd ( v , & mb , "%s%luKB", p , bys / 1024); 770 bys %= 1024; 771 p = " "; 773 i( bys > 0) 774 `__db_msgadd ( v , & mb , "%s%luB", p , bys ); 777 `__db_msgadd ( v , & mb , "\t%s", msg ); 779 `DB_MSGBUF_FLUSH ( v , & mb ); 780 } } 790 $__db_t_gfo ( v , f , s , ags ) 791 ENV * v ; 792 REGINFO * f ; 793 cڡ * s ; 794 u_t32_t ags ; 796 cڡ FN [] = { 797 { REGION_CREATE , "REGION_CREATE" }, 798 { REGION_CREATE_OK , "REGION_CREATE_OK" }, 799 { REGION_JOIN_OK , "REGION_JOIN_OK" }, 800 { 0, NULL } 803 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 804 `__db_msg ( v , "%REGINFO infmi:", s ); 805 `STAT_STRING ("Regiځy", `__g_ty ( f -> ty )); 806 `STAT_ULONG ("Regi ID", f -> id ); 807 `STAT_STRING ("Regiڂame", f -> me ); 808 `STAT_POINTER ("Origegiڇddss", f -> addr_ig ); 809 `STAT_POINTER ("Regiڇddss", f -> addr ); 810 `STAT_POINTER ("Regiڅrimyddss", f -> imy ); 811 `STAT_ULONG ("Regi maximumoti", f -> max_loc ); 812 `STAT_ULONG ("Regiڇod", f -> lod ); 813 `__v_loc_t ( f , ags ); 815 `__db_ags ( v , NULL , f -> ags , , NULL, "\tRegion flags"); 816 } } 823 $__g_ty ( t ) 824 g_ty_t t ; 826 t ) { 827 REGION_TYPE_ENV : 829 REGION_TYPE_LOCK : 831 REGION_TYPE_LOG : 833 REGION_TYPE_MPOOL : 835 REGION_TYPE_MUTEX : 837 REGION_TYPE_TXN : 839 INVALID_REGION_TYPE : 843 } } 854 $__db__n_but ( v ) 855 ENV * v ; 857 `__db_rx ( v , "Library build didot include statistics support"); 858 ( DB_OPNOTSUP ); 859 } } 862 $__v__t_ ( dbv , ags ) 863 DB_ENV * dbv ; 864 u_t32_t ags ; 866 `COMPQUIET ( ags , 0); 868 ( `__db__n_but ( dbv -> v )); 869 } } @../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 UNSIGNED_LONG : 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 UNSIGNED_LONG : 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 UNSIGNED_LONG : 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 , "unsigned_long") == 0) 199 flds [ fld_t ]. ty = UNSIGNED_LONG ; 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 UNSIGNED_LONG : 245 `rtf ( dr , "unsigned_long"); 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 UNSIGNED_LONG : 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 UNSIGNED_LONG : 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 UNSIGNED_LONG : 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 UNSIGNED_LONG : 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 UNSIGNED_LONG : 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_cfig.h " 20 ~"db.h " 21 ~"db_t.h " 22 ~"dbc/db_sw.h " 24 ~"ex_ec.h " 26 ec_dich __P (( DB_ENV *, DBT *, DB_LSN *, db_cs )); 27 ݒ_v __P ((cڡ *, FILE *, cڡ *, DB_ENV **)); 28 vify_abn __P (( DB_ENV *, const *)); 29 vify_en __P (( DB_ENV *, const *)); 32 $ma ( gc , gv ) 33 gc ; 34 * gv []; 36 * ݏrg ; 37 DB_ENV * dbv ; 38 DB_LSN l ; 39 DB_TXN * txn ; 40 DBT dmedbt ; 41 t ; 42 cڡ * home ; 43 ch , dme [256]; 44 cڡ * ogme = "ex_apprec"; 47 home = "TESTDIR"; 49 ( ch = `gt ( gc , gv , "h:")! EOF ) 50 ch ) { 52 home = ݏrg ; 55 `rtf ( dr , "uge: %[-h home]", ogme ); 56 `ex ( EXIT_FAILURE ); 59 `tf ("Set upnvironment.\n"); 60 i(( t = `ݒ_v ( home , dr , ogme , & dbv )) != 0) 61 ( EXIT_FAILURE ); 63 `tf ("Create directory inransaction.\n"); 68 `memt (& dmedbt , 0, (dirnamedbt)); 69 `rtf ( dme , "%s/MYDIRECTORY", home ); 70 dmedbt . da = dme ; 71 dmedbt . size = ` ( dme ) + 1; 73 i(( t = dbv -> `txn_beg (dbv, NULL , & txn , 0)) != 0) { 74 dbv -> `r (dbv, t , "txn_begin"); 75 ( EXIT_FAILURE ); 87 `memt (& l , 0, (lsn)); 88 i(( t = 89 `ex_ec_mkd_log ( dbv , 90 txn , & l , DB_FLUSH , & dmedbt )) != 0) { 91 dbv -> `r (dbv, t , "mkdir_log"); 92 ( EXIT_FAILURE ); 94 i( `mkd ( dme , 0755) != 0) { 95 dbv -> `r (dbv, o , "mkdir"); 96 ( EXIT_FAILURE ); 99 `tf ("Verifyhe directory'sresence: "); 100 `vify_en ( dbv , dme ); 101 `tf ("check.\n"); 104 `tf ("Abortheransaction.\n"); 105 i(( t = txn -> `abt (txn)) != 0) { 106 dbv -> `r (dbv, t , "txn_abort"); 107 ( EXIT_FAILURE ); 110 `tf ("Verifyhe directory'sbsence: "); 111 `vify_abn ( dbv , dme ); 112 `tf ("check.\n"); 115 `tf ("Create directory inransaction.\n"); 116 `memt (& dmedbt , 0, (dirnamedbt)); 117 `rtf ( dme , "%s/MYDIRECTORY", home ); 118 dmedbt . da = dme ; 119 dmedbt . size = ` ( dme ) + 1; 120 i(( t = dbv -> `txn_beg (dbv, NULL , & txn , 0)) != 0) { 121 dbv -> `r (dbv, t , "txn_begin"); 122 ( EXIT_FAILURE ); 125 `memt (& l , 0, (lsn)); 126 i(( t = 127 `ex_ec_mkd_log ( dbv , txn , & l , 0, & dmedbt )) != 0) { 128 dbv -> `r (dbv, t , "mkdir_log"); 129 ( EXIT_FAILURE ); 131 i( `mkd ( dme , 0755) != 0) { 132 dbv -> `r (dbv, o , "mkdir"); 133 ( EXIT_FAILURE ); 136 `tf ("Verifyhe directory'sresence: "); 137 `vify_en ( dbv , dme ); 138 `tf ("check.\n"); 141 `tf ("Commitheransaction.\n"); 142 i(( t = txn -> `comm (txn, 0)) != 0) { 143 dbv -> `r (dbv, t , "txn_commit"); 144 ( EXIT_FAILURE ); 147 `tf ("Verifyhe directory'sresence: "); 148 `vify_en ( dbv , dme ); 149 `tf ("check.\n"); 151 `tf ("Nowemovehe directory,henunecovery.\n"); 152 i(( t = dbv -> `o (dbenv, 0)) != 0) { 153 `rtf ( dr , "DB_ENV->o: %s\n", `db_ ( t )); 154 ( EXIT_FAILURE ); 156 i( `rmd ( dme ) != 0) { 157 `rtf ( dr , 158 "%s:md faed wh %s", ogme , 159 ` ( o )); 161 `vify_abn ( dbv , dme ); 164 i(( t = `ݒ_v ( home , dr , ogme , & dbv )) != 0) 165 ( EXIT_FAILURE ); 167 `tf ("Verifyhe directory'sresence: "); 168 `vify_en ( dbv , dme ); 169 `tf ("check.\n"); 172 i(( t = dbv -> `o (dbenv, 0)) != 0) { 173 `rtf ( dr , "DB_ENV->o: %s\n", `db_ ( t )); 174 ( EXIT_FAILURE ); 177 ( EXIT_SUCCESS ); 178 } } 181 $ݒ_v ( home , r , ogme , dbvp ) 182 cڡ * home , * ogme ; 183 FILE * r ; 184 DB_ENV ** dbvp ; 186 DB_ENV * dbv ; 187 t ; 193 i(( t = `db_v_ (& dbv , 0)) != 0) { 194 `rtf ( r , "%s: %s\n", ogme , `db_ ( t )); 195 ( t ); 197 dbv -> `t_rfe (dbv, r ); 198 dbv -> `t_fx (dbv, ogme ); 201 i(( t = dbv -> `t_p_dich (dbv, ec_dich )) != 0) { 202 dbv -> `r (dbv, t , "set_app_dispatch"); 203 ( t ); 210 i(( t = 211 dbv -> `ݒ (dbv, home , DB_CREATE | DB_RECOVER | DB_INIT_LOCK | 212 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 0)) != 0) { 213 dbv -> `r (dbv, t , "vmݒ: %s", home ); 214 dbv -> `o (dbenv, 0); 215 ( t ); 218 * dbvp = dbv ; 220 } } 227 $ec_dich ( dbv , dbt , l , ) 228 DB_ENV * dbv ; 229 DBT * dbt ; 230 DB_LSN * l ; 231 db_cs ; 233 u_t32_t y ; 236 `LOGCOPY_32 ( dbv -> v , & y , dbt -> da ); 238 y ) { 239 DB_ex_ec_mkd : 240 ( `ex_ec_mkd_cov ( dbv , dbt , l , )); 246 dbv -> `rx (dbenv, "Unexpectedogecordypencountered"); 247 ( EINVAL ); 249 } } 252 $vify_abn ( dbv , dme ) 253 DB_ENV * dbv ; 254 cڡ * dme ; 257 i( `acss ( dme , F_OK ) == 0) { 258 dbv -> `rx (dbenv, "Error--directoryresent!"); 259 `ex ( EXIT_FAILURE ); 263 } } 266 $vify_en ( dbv , dme ) 267 DB_ENV * dbv ; 268 cڡ * dme ; 271 i( `acss ( dme , F_OK ) != 0) { 272 dbv -> `rx (dbenv, "Error--directoryotresent!"); 273 `ex ( EXIT_FAILURE ); 277 } } @../examples_c/ex_apprec/ex_apprec_auto.c 3 ~"db_cfig.h " 4 ~<o.h > 5 ~<dlib.h > 6 ~<rg.h > 7 ~"db.h " 8 ~"db_t.h " 9 ~"dbc/db_sw.h " 10 ~"ex_ec.h " 16 $ex_ec_mkd_ad ( dbv , cbuf , g ) 17 DB_ENV * dbv ; 18 * cbuf ; 19 ex_ec_mkd_gs ** g ; 21 ex_ec_mkd_gs * gp ; 22 u_t8_t * bp ; 23 ENV * v ; 25 v = dbv ->env; 27 i(( gp = `mloc (( ex_ec_mkd_gs + ( DB_TXN ))= NULL ) 28 ( ENOMEM ); 29 bp = cbuf ; 30 gp -> tx = ( DB_TXN *)&argp[1]; 31 `memt ( gp -> tx , 0, ( DB_TXN )); 33 `LOGCOPY_32 ( v , & gp -> ty , bp ); 34 bp +( gp -> ty ); 36 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 37 bp +( gp -> tx -> txnid ); 39 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 40 bp +( DB_LSN ); 42 `memt (& gp -> dme , 0, (argp->dirname)); 43 `LOGCOPY_32 ( v ,& gp -> dme . size , bp ); 44 bp +( u_t32_t ); 45 gp -> dme . da = bp ; 46 bp + gp -> dme . size ; 48 * g = gp ; 50 } } 57 $ex_ec_mkd_log ( dbv , tx , t_lp , ags , 58 dme ) 59 DB_ENV * dbv ; 60 DB_TXN * tx ; 61 DB_LSN * t_lp ; 62 u_t32_t ags ; 63 cڡ DBT * dme ; 65 DBT logc ; 66 DB_LSN * lp , nu_l , * p ; 67 ENV * v ; 68 u_t32_t zo , y , txn_num ; 69 u_t ad ; 70 u_t8_t * bp ; 71 t ; 73 v = dbv ->env; 74 p = t_lp ; 75 y = DB_ex_ec_mkd ; 76 ad = 0; 77 t = 0; 79 i( tx = NULL ) { 80 txn_num = 0; 81 lp = & nu_l ; 82 nu_l . fe =u_l. offt = 0; 90 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 91 txn_num = tx -> txnid ; 94 logc . size = ( y + ( txn_num + ( DB_LSN ) 95 + ( u_t32_t + ( dme = NULL ? 0 : dme-> size ); 96 i(( logc . da = `mloc ogc. size )= NULL ) 97 ( ENOMEM ); 98 bp = logc . da ; 100 i( ad > 0) 101 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 103 bp = logc . da ; 105 `LOGCOPY_32 ( v , bp , & y ); 106 bp +( y ); 108 `LOGCOPY_32 ( v , bp , & txn_num ); 109 bp +( txn_num ); 111 `LOGCOPY_FROMLSN ( v , bp , lp ); 112 bp +( DB_LSN ); 114 i( dme = NULL ) { 115 zo = 0; 116 `LOGCOPY_32 ( v , bp , & zo ); 117 bp +( u_t32_t ); 119 `LOGCOPY_32 ( v , bp , & dme -> size ); 120 bp +( dme -> size ); 121 `memy ( bp , dme -> da , dme-> size ); 122 bp + dme -> size ; 125 i(( t = dbv -> `log_put (dbv, p , ( DBT *)& logc , 126 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 127 * lp = * p ; 128 i( p ! t_lp ) 129 * t_lp = * p ; 131 #ifde LOG_DIAGNOSTIC 132 i( t != 0) 133 () `ex_ec_mkd_t ( dbv , 134 ( DBT *)& logc , t_lp , DB_TXN_PRINT ); 137 ` ( logc . da ); 138 ( t ); 139 } } @../examples_c/ex_apprec/ex_apprec_autop.c 3 ~"db_cfig.h " 5 ~<y.h > 6 ~<dio.h > 7 ~<dlib.h > 8 ~"db.h " 9 ~"ex_ec.h " 15 $ex_ec_mkd_t ( dbv , db , lp , nud2 ) 16 DB_ENV * dbv ; 17 DBT * db ; 18 DB_LSN * lp ; 19 db_cs nud2 ; 21 ex_ec_mkd_gs * gp ; 22 ex_ec_mkd_ad `__P (( DB_ENV *, *, ex_ec_mkd_gs **)); 23 u_t32_t i ; 24 ch ; 25 t ; 27 nud2 = DB_TXN_PRINT ; 29 i(( t = `ex_ec_mkd_ad ( dbv , db -> da , & gp )) != 0) 30 ( t ); 31 () `tf ( 33 ( u_lg ) lp -> fe , (u_lgp-> offt , 34 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 35 ( u_lg ) gp -> ty , 36 ( u_lg ) gp -> tx -> txnid , 37 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 38 () `tf ("\tdirname: "); 39 i = 0; i < gp -> dme . size ; i++) { 40 ch = (( u_t8_t *) gp -> dme . da )[ i ]; 41 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 43 () `tf ("\n"); 44 () `tf ("\n"); 45 ` ( gp ); 47 } } 53 $ex_ec__t ( dbv , dbp ) 54 DB_ENV * dbv ; 55 DB_DISTAB * dbp ; 57 __db_add_covy `__P (( DB_ENV *, DB_DISTAB *, 58 (*)( DB_ENV *, DBT *, DB_LSN *, db_cs ), u_t32_t )); 59 t ; 61 i(( t = `__db_add_covy ( dbv , dbp , 62 ex_ec_mkd_t , DB_ex_ec_mkd )) != 0) 63 ( t ); 65 } } @../examples_c/ex_apprec/ex_apprec_rec.c 16 ~<sys/.h > 17 ~<sys/tys.h > 18 ~<o.h > 19 ~<dlib.h > 21 ~<db.h > 23 ~"ex_ec.h " 33 $ex_ec_mkd_cov ( dbv , db , lp , ) 34 DB_ENV * dbv ; 35 DBT * db ; 36 DB_LSN * lp ; 37 db_cs ; 39 ex_ec_mkd_gs * gp ; 40 t ; 42 gp = NULL ; 44 #ifde DEBUG_RECOVER 45 `ex_ec_mkd_t ( dbv , db , lp , ); 47 i(( t = `ex_ec_mkd_ad ( dbv , db -> da , & gp )) != 0) 48 out ; 50 ) { 51 DB_TXN_ABORT : 52 DB_TXN_BACKWARD_ROLL : 65 t = `rmd ( gp -> dme . da ); 66 i( t !0 && o ! ENOENT ) 67 dbv -> `r (dbv, t , "Error inbort of mkdir"); 69 t = 0; 71 DB_TXN_FORWARD_ROLL : 76 t = `mkd ( gp -> dme . da , 0755); 77 i( t !0 && o ! EEXIST ) 78 dbv -> `r (dbenv, 79 t , "Error inoll-forward of mkdir"); 81 t = 0; 89 dbv -> `rx (dbenv, "Unexpected operationype\n"); 90 ( EINVAL ); 103 * lp = gp -> ev_l ; 105 out : i( gp ! NULL ) 106 ` ( gp ); 107 ( t ); 108 } } @../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 lo : 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 lo ; 132 t = `db_run ( dbv , ogme ); 133 `tf ("db_rutued %d\n", t ); 134 i( t = DB_NOSERVER ) 135 lo ; 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 sockn_t si_n ; 372 ho , t ; 373 sock_t ns ; 374 u_t16_t pt ; 376 `COMPQUIET ( ogme , NULL ); 378 ac_wa : 379 `memt (& si , 0, (si)); 380 si_n = ( si ); 381 ns = `ac ( s , ( sockaddr *)& si , & si_n ); 382 i( ns = SOCKET_CREATION_FAILURE ) { 383 `rtf ( dr , "can'tccept incoming connection\n"); 384 ns ; 386 ho = `ohl ( si . s_addr . s_addr ); 393 i( `adn ( ns , & pt , 2) != 2) 394 r ; 395 pt = `ohs (port); 397 t = `machb_add ( machb , ns , ho , pt , eidp ); 398 i( t = EEXIST ) { 399 `osock ( ns ); 400 ac_wa ; 401 } i( t != 0) 402 r ; 403 `tf ("Cedho %x܈%d,id = %d\n", ho , pt , * eidp ); 404 ( ns ); 406 r : `osock ( ns ); 407 SOCKET_CREATION_FAILURE ; 408 } } 418 sock_t 419 $g_ced_sock ( machb , ogme , meho , pt , is_ݒ , eidp ) 420 machb_t * machb ; 421 cڡ * ogme , * meho ; 422 pt , * is_ݒ , * eidp ; 424 t ; 425 sock_t s ; 426 hot * hp ; 427 sockaddr_ si ; 428 u_t32_t addr ; 429 u_t16_t t ; 431 * is_ݒ = 0; 433 i(( hp = `ghobyme ( meho )= NULL ) { 434 `rtf ( dr , "%s: ho found: %s\n", ogme , 435 ` ( t_o )); 439 i(( s = `sock ( AF_INET , SOCK_STREAM , IPPROTO_TCP )) < 0) { 440 ` ("can't create outgoing socket"); 443 `memt (& si , 0, (si)); 444 `memy ((*)& si . s_addr , hp -> h_addr , hp-> h_ngth ); 445 addr = `ohl ( si . s_addr . s_addr ); 446 t = `machb_add ( machb , s , addr , pt , eidp ); 447 i( t = EEXIST ) { 448 * is_ݒ = 1; 449 `osock ( s ); 451 } i( t != 0) { 452 `osock ( s ); 456 si . s_my = AF_INET ; 457 si . s_pt = `hts (() pt ); 458 i( `c ( s , ( sockaddr *)& si , (si)) < 0) { 459 `rtf ( dr , "%s: connection failed: %s\n", 460 ogme , ` ( t_o )); 461 () `machb_m ( machb , * eidp , 1); 470 t = `hts ( mypt ); 471 `wresock ( s , & t , 2); 473 ( s ); 474 } } 485 $g_xt_mesge ( fd , c , cڌ ) 486 sock_t fd ; 487 DBT * c , * cڌ ; 489 size_t ; 490 u_t32_t rsize , csize ; 491 u_t8_t * cbuf , * cڌbuf ; 503 = `adn ( fd , & rsize , 4); 504 i( != 4) 508 i( rsize > 0) { 509 i( c -> size < rsize ) 510 c -> da = `loc ec->da, rsize ); 511 cbuf = c -> da ; 512 = `adn ( fd , cbuf , rsize ); 514 i( c -> da ! NULL ) 515 ` ( c -> da ); 516 c -> da = NULL ; 518 c -> size = rsize ; 521 = `adn ( fd , & csize , 4); 522 i( != 4) 526 i( csize > 0) { 527 cڌbuf = cڌ -> da ; 528 i( cڌ -> size < csize ) 529 cڌbuf = `loc (cڌbuf, csize ); 530 = `adn ( fd , cڌbuf , csize ); 531 i( ! csize ) 534 i( cڌ -> da ! NULL ) 535 ` ( cڌ -> da ); 536 cڌbuf = NULL ; 538 cڌ -> da = cڌbuf ; 539 cڌ -> size = csize ; 542 } } 549 ssize_t 550 $adn ( fd , vr , n ) 551 sock_t fd ; 552 * vr ; 553 size_t n ; 555 size_t e ; 556 ssize_t ėd ; 557 * r ; 559 r = vr ; 560 e = n ; 561 e > 0) { 562 i(( ėd = `adsock ( fd , r , e )) < 0) { 567 i( t_o = EINTR ) 568 ėd = 0; 570 ` ("can'tead from socket"); 573 } i( ėd == 0) 576 e - ėd ; 577 r + ėd ; 580 ( n - e ); 581 } } 588 $que_nd ( dbv , cڌ , c , lp , eid , ags ) 589 DB_ENV * dbv ; 590 cڡ DBT * cڌ , * c ; 591 cڡ DB_LSN * lp ; 592 eid ; 593 u_t32_t ags ; 595 n , t , t_t ; 596 sock_t fd ; 597 machb_t * machb ; 598 memb_t * m ; 600 `COMPQUIET ( lp , NULL ); 601 machb = 602 ( machb_t *)(( APP_DATA *) dbv -> p_ive )-> comm_aruu ; 604 i( eid = DB_EID_BROADCAST ) { 610 n = `que_nd_brd ( machb , c , cڌ , ags ); 611 i( n < 0 ) 612 ( DB_REP_UNAVAIL ); 616 i(( t = `mux_lock (& machb -> mtmux )) != 0) { 617 dbv -> `rx (dbenv, "can'tock mutex"); 618 ( t ); 621 fd = 0; 622 m = `LIST_FIRST (& machb -> machli ); m ! NULL ; 623 m = `LIST_NEXT (m, lks )) { 624 i( m -> eid ==id) { 625 fd = m ->fd; 630 i( fd == 0) { 631 dbv -> `r (dbv, DB_REP_UNAVAIL , 632 "que_nd: cn fd machID %d", eid ); 633 ( DB_REP_UNAVAIL ); 636 i(( t = `que_nd_e ( c , cڌ , fd , ags )) != 0) 637 `rtf ( dr , "socket writerror in send() function\n"); 639 i(( t_t = `mux_uock (& machb -> mtmux )) != 0) { 640 dbv -> `rx (dbenv, "can't unlock mutex"); 641 i( t == 0) 642 t = t_t ; 645 ( t ); 646 } } 655 $que_nd_brd ( machb , c , cڌ , ags ) 656 machb_t * machb ; 657 cڡ DBT * c , * cڌ ; 658 u_t32_t ags ; 660 t , ; 661 memb_t * m , * xt ; 663 i(( t = `mux_lock (& machb -> mtmux )) != 0) { 664 `rtf ( dr , "can'tock mutex\n"); 665 ( t ); 668 = 0; 669 m = `LIST_FIRST (& machb -> machli ); m ! NULL ; m = xt ) { 670 xt = `LIST_NEXT ( m , lks ); 671 i(( t = `que_nd_e ( c , cڌ , m -> fd , ags )) != 0) { 672 `rtf ( dr , "socket writerror in broadcast\n"); 673 () `machb_m ( machb , m -> eid , 0); 675 ++; 678 i( `mux_uock (& machb -> mtmux ) != 0) { 679 `rtf ( dr , "can't unlock mutex\n"); 683 ( ); 684 } } 697 $que_nd_e ( c , cڌ , fd , ags ) 698 cڡ DBT * c , * cڌ ; 699 sock_t fd ; 700 u_t32_t ags ; 703 y ; 704 ssize_t bys_ , nw ; 705 u_t8_t * wp ; 707 `COMPQUIET ( ags , 0); 713 nw = `wresock ( fd , (cڡ *)& c -> size , 4); 714 i( nw != 4) 715 ( DB_REP_UNAVAIL ); 717 i( c -> size > 0) { 718 nw = `wresock ( fd , c -> da ,ec-> size ); 719 i( nw < 0) 720 ( DB_REP_UNAVAIL ); 721 i( nw !( ssize_t ) c -> size ) { 723 wp = ( u_t8_t *) c -> da + nw ; 724 bys_ = c -> size - nw ; 725 y = 0; bys_ > 0 &&etry < 3;etry++) { 726 nw = `wresock ( fd , wp , bys_ ); 727 i( nw < 0) 728 ( DB_REP_UNAVAIL ); 729 bys_ - nw ; 730 wp + nw ; 732 i( bys_ > 0) 733 ( DB_REP_UNAVAIL ); 737 nw = `wresock ( fd , (cڡ *)& cڌ -> size , 4); 738 i( nw != 4) 739 ( DB_REP_UNAVAIL ); 740 i( cڌ -> size > 0) { 741 nw = `wresock ( fd , cڌ -> da , cڌ-> size ); 742 i( nw !( ssize_t ) cڌ -> size ) 743 ( DB_REP_UNAVAIL ); 746 } } @../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 i( t = DB_REP_HANDLE_DEAD || 151 t = DB_LOCK_DEADLOCK ) { 152 dbv -> `r (dbv, t , 154 dbp -> `o (dbp, DB_NOSYNC ); 155 dbp = NULL ; 158 dbv -> `r (dbv, t , "DB->open"); 159 r ; 163 i( f = NULL ) 164 ( t = `t_ocks ( dbp ))) { 167 DB_REP_HANDLE_DEAD : 168 () dbp -> `o (dbp, DB_NOSYNC ); 169 dbp = NULL ; 172 dbp -> `r (dbp, t , "Errorraversing data"); 173 r ; 176 key . da = f ; 177 key . size = ( u_t32_t ) ` ( f ); 179 da .d i ; 180 da . size = ( u_t32_t ) ` ( i ); 182 i(( t = dbp -> `put (dbp, 183 NULL , & key , & da , DB_AUTO_COMMIT )) != 0) { 184 dbp -> `r (dbp, t , "DB->put"); 185 r ; 190 r : i( dbp ! NULL ) 191 () dbp -> `o (dbp, DB_NOSYNC ); 193 ( t ); 194 } } 197 $_v ( ogme , dbvp ) 198 cڡ * ogme ; 199 DB_ENV ** dbvp ; 201 DB_ENV * dbv ; 202 t ; 204 i(( t = `db_v_ (& dbv , 0)) != 0) { 205 `rtf ( dr , "can't createnv handle: %s\n", 206 `db_ ( t )); 207 ( t ); 210 dbv -> `t_rfe (dbv, dr ); 211 dbv -> `t_fx (dbv, ogme ); 213 * dbvp = dbv ; 215 } } 219 $v_ ( dbv , home ) 220 DB_ENV * dbv ; 221 cڡ * home ; 223 u_t32_t ags ; 224 t ; 226 () dbv -> `t_chesize (dbv, 0, CACHESIZE , 0); 227 () dbv -> `t_ags (dbv, DB_TXN_NOSYNC , 1); 229 ags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | 230 DB_INIT_REP | DB_INIT_TXN | DB_RECOVER | DB_THREAD ; 231 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) 232 dbv -> `r (dbv, t , "can't opennvironment"); 233 ( t ); 234 } } 259 $uge ( ogme ) 260 cڡ * ogme ; 262 `rtf ( dr , "uge: %", ogme ); 263 `rtf ( dr , "[-CM][-h home][-o host:port][-m host:port]%s", 265 `ex ( EXIT_FAILURE ); 266 } } @../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 %I64d\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 #NS_PER_MS 1000000 ) 17 #NS_PER_US 1000 ) 18 #ifde _WIN32 19 ~<sys/timeb.h > 20 gt (, * const *, const *); 22 stimev { 23 time_t mtv_c ; 24 mtv_uc ; 26 $gtimeofday ( timev * tv , timeze * tz ) 28 _timeb now ; 29 `_ime (& now ); 30 tv -> tv_c = now . time ; 31 tv -> tv_uc = now . mlm * NS_PER_US ; 33 } } 35 ~<unid.h > 36 ~<sys/time.h > 39 ~<db.h > 41 um { mACCOUNT , mBRANCH , mTELLER } tFTYPE ; 43 DB_ENV * db_ __P ((cڡ *, cڡ *, , u_t32_t )); 44 hpuϋ __P (( DB *, , , , )); 45 puϋ __P (( DB *, u_t32_t , u_int32_t, , const *)); 46 u_t32_t ndom_id __P (( FTYPE , , , )); 47 u_t32_t ndom_t __P ((u_int32_t, u_int32_t)); 48 _puϋ __P (( DB_ENV *, , , , , )); 49 _run __P (( DB_ENV *, , , , , )); 50 _txn __P (( DB_ENV *, DB *, DB *, DB *, DB *, , , , )); 52 vg __P ((const *, , const *)); 53 ma __P ((, *[])); 54 uge __P ((const *)); 65 #TELLERS_PER_BRANCH 10 ) 66 #ACCOUNTS_PER_TELLER 10000 ) 67 #HISTORY_PER_BRANCH 2592000 ) 75 #ifdef VALID_SCALING 76 #ACCOUNTS 1000000 ) 77 #BRANCHES 10 ) 78 #TELLERS 100 ) 79 #HISTORY 25920000 ) 82 #ifdef TINY 83 #ACCOUNTS 1000 ) 84 #BRANCHES 10 ) 85 #TELLERS 100 ) 86 #HISTORY 10000 ) 89 #ifdef VERY_TINY 90 #ACCOUNTS 500 ) 91 #BRANCHES 10 ) 92 #TELLERS 50 ) 93 #HISTORY 5000 ) 96 #i! defed ( VALID_SCALING && !defed( TINY && !defed( VERY_TINY ) 97 #ACCOUNTS 100000 ) 98 #BRANCHES 10 ) 99 #TELLERS 100 ) 100 #HISTORY 259200 ) 103 #HISTORY_LEN 100 ) 104 #RECLEN 100 ) 105 #BEGID 1000000 ) 107 s_deec { 108 u_t32_t mid ; 109 u_t32_t mb ; 110 u_t8_t md [ RECLEN - ( u_t32_t ) - (u_int32_t)]; 111 } tdeec ; 113 s_hic { 114 u_t32_t maid ; 115 u_t32_t mbid ; 116 u_t32_t mtid ; 117 u_t32_t mamou ; 118 u_t8_t md [ RECLEN - 4 * ( u_t32_t )]; 119 } thic ; 121 * gogme = "ex_tpcb"; 124 $ma ( gc , gv ) 125 gc ; 126 * gv []; 128 * ݏrg ; 129 td ; 130 DB_ENV * dbv ; 131 accous , bnches , ed , Δs , hiy ; 132 ch , iag , mpo , xns , t , txn_no_sync , vbo ; 133 cڡ * home ; 135 home = "TESTDIR"; 136 accous = bnches = hiy = Δs = 0; 137 iag = mpo = xns = txn_no_sync = vbo = 0; 138 ed = () `time ( NULL ); 140 ( ch = `gt ( gc , gv , "a:b:c:fh::S:s:t:v")! EOF ) 141 ch ) { 143 i(( accous = `oi ( ݏrg )) <= 0) 144 ( `vg ( ogme , ch , ݏrg )); 147 i(( bnches = `oi ( ݏrg )) <= 0) 148 ( `vg ( ogme , ch , ݏrg )); 151 i(( mpo = `oi ( ݏrg )) <= 0) 152 ( `vg ( ogme , ch , ݏrg )); 155 txn_no_sync = 1; 158 home = ݏrg ; 161 iag = 1; 164 i(( xns = `oi ( ݏrg )) <= 0) 165 ( `vg ( ogme , ch , ݏrg )); 168 i(( ed = `oi ( ݏrg )) <= 0) 169 ( `vg ( ogme , ch , ݏrg )); 172 i(( hiy = `oi ( ݏrg )) <= 0) 173 ( `vg ( ogme , ch , ݏrg )); 176 i(( Δs = `oi ( ݏrg )) <= 0) 177 ( `vg ( ogme , ch , ݏrg )); 180 vbo = 1; 184 ( `uge ( ogme )); 186 gc - td ; 187 gv + td ; 189 `d (( u_t ) ed ); 192 i(( dbv = `db_ ( home , 193 ogme , mpo , txn_no_sync ? DB_TXN_NOSYNC : 0)= NULL ) 194 ( EXIT_FAILURE ); 196 accous =ccou=0 ? ACCOUNTS :ccounts; 197 bnches = bnche=0 ? BRANCHES : branches; 198 Δs =r=0 ? TELLERS :ellers; 199 hiy = hiy =0 ? HISTORY : history; 201 i( vbo ) 202 `tf ("%ld Accounts, %ld Branches, %ld Tellers, %ld History\n", 203 () accous , () bnches , 204 () Δs , () hiy ); 206 i( iag ) { 207 i( xns != 0) 208 ( `uge ( ogme )); 209 `_puϋ ( dbv , 210 accous , bnches , hiy , Δs , vbo ); 212 i( xns == 0) 213 ( `uge ( ogme )); 214 `_run ( dbv , xns , accous , bnches , Δs , vbo ); 217 i(( t = dbv -> `o (dbenv, 0)) != 0) { 218 `rtf ( dr , "%s: dbenv->close failed: %s\n", 219 ogme , `db_ ( t )); 220 ( EXIT_FAILURE ); 223 ( EXIT_SUCCESS ); 224 } } 227 $vg ( ogme , g , r ) 228 cڡ * ogme ; 229 g ; 230 cڡ * r ; 232 () `rtf ( dr , 233 "%s: invidrgumf -%c: %s\n", ogme , g , r ); 234 ( EXIT_FAILURE ); 235 } } 238 $uge ( ogme ) 239 cڡ * ogme ; 241 cڡ * a1 , * a2 ; 243 a1 = "[-fv] [-accounts] [-b branches]\n"; 244 a2 = "\t[-c cache_size] [-h home] [-S seed] [-s history] [-tellers]"; 245 () `rtf ( dr , "uge: %-%%s\n", ogme , a1 , a2 ); 246 () `rtf ( dr , 247 " %-iڠ%%s\n", ogme , a1 , a2 ); 248 ( EXIT_FAILURE ); 249 } } 255 DB_ENV * 256 $db_ ( home , efix , chesize , ags ) 257 cڡ * home , * efix ; 258 chesize ; 259 u_t32_t ags ; 261 DB_ENV * dbv ; 262 u_t32_t lol_ags ; 263 t ; 265 i(( t = `db_v_ (& dbv , 0)) != 0) { 266 `rtf ( dr , 267 "%s: db_v_: %s\n", ogme , `db_ ( t )); 268 ( NULL ); 270 dbv -> `t_rfe (dbv, dr ); 271 dbv -> `t_fx (dbv, efix ); 272 () dbv -> `t_chesize (dbenv, 0, 273 chesize =0 ? 4 * 1024 * 1024 : ( u_t32_t )cachesize, 0); 275 i( ags & ( DB_TXN_NOSYNC )) 276 () dbv -> `t_ags (dbv, DB_TXN_NOSYNC , 1); 277 ags &~( DB_TXN_NOSYNC ); 279 lol_ags = ags | DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 280 DB_INIT_MPOOL | DB_INIT_TXN ; 281 i(( t = dbv -> `ݒ (dbv, home , lol_ags , 0)) != 0) { 282 dbv -> `r (dbv, t , "DB_ENV->ݒ: %s", home ); 283 () dbv -> `o (dbenv, 0); 284 ( NULL ); 286 ( dbv ); 287 } } 294 $_puϋ ( v , accous , bnches , hiy , Δs , vbo ) 295 DB_ENV * v ; 296 accous , bnches , hiy , Δs , vbo ; 298 DB * dbp ; 299 u_t32_t b , idnum , oags ; 300 u_t32_t d_um , d_bnum , d_um ; 301 u_t32_t t_um , t_bnum , t_um ; 302 t ; 304 idnum = BEGID ; 305 b = 500000; 306 oags = DB_CREATE ; 308 i(( t = `db_ (& dbp , v , 0)) != 0) { 309 v -> `r nv, t , "db_create"); 312 () dbp -> `t_h_m (dbp, ( u_t32_t ) accous ); 314 i(( t = dbp -> `ݒ (dbp, NULL , "account", NULL, 315 DB_HASH , oags , 0644)) != 0) { 316 v -> `r nv, t , "DB->open:ccount"); 320 t_um = idnum ; 321 `puϋ ( dbp , idnum , b , accous , "account"); 322 idnum + accous ; 323 d_um = idnum - 1; 324 i(( t = dbp -> `o (dbp, 0)) != 0) { 325 v -> `r nv, t , "DB->close:ccount"); 328 i( vbo ) 329 `tf ("Populatedccounts: %ld - %ld\n", 330 () t_um , () d_um ); 337 i(( t = `db_ (& dbp , v , 0)) != 0) { 338 v -> `r nv, t , "db_create"); 341 () dbp -> `t_h_f (dbp, 1); 342 () dbp -> `t_h_m (dbp, ( u_t32_t ) bnches ); 343 () dbp -> `t_gesize (dbp, 512); 344 i(( t = dbp -> `ݒ (dbp, NULL , "branch", NULL, 345 DB_HASH , oags , 0644)) != 0) { 346 v -> `r nv, t , "DB->open: branch"); 349 t_bnum = idnum ; 350 `puϋ ( dbp , idnum , b , bnches , "branch"); 351 idnum + bnches ; 352 d_bnum = idnum - 1; 353 i(( t = dbp -> `o (dbp, 0)) != 0) { 354 v -> `r nv, t , "DB->close: branch"); 357 i( vbo ) 358 `tf ("Populated branches: %ld - %ld\n", 359 () t_bnum , () d_bnum ); 365 i(( t = `db_ (& dbp , v , 0)) != 0) { 366 v -> `r nv, t , "db_create"); 369 () dbp -> `t_h_f (dbp, 0); 370 () dbp -> `t_h_m (dbp, ( u_t32_t ) Δs ); 371 () dbp -> `t_gesize (dbp, 512); 372 i(( t = dbp -> `ݒ (dbp, NULL , "teller", NULL, 373 DB_HASH , oags , 0644)) != 0) { 374 v -> `r nv, t , "DB->open:eller"); 378 t_um = idnum ; 379 `puϋ ( dbp , idnum , b , Δs , "teller"); 380 idnum + Δs ; 381 d_um = idnum - 1; 382 i(( t = dbp -> `o (dbp, 0)) != 0) { 383 v -> `r nv, t , "DB->close:eller"); 386 i( vbo ) 387 `tf ("Populatedellers: %ld - %ld\n", 388 () t_um , () d_um ); 390 i(( t = `db_ (& dbp , v , 0)) != 0) { 391 v -> `r nv, t , "db_create"); 394 () dbp -> `t__n (dbp, HISTORY_LEN ); 395 i(( t = dbp -> `ݒ (dbp, NULL , "history", NULL, 396 DB_RECNO , oags , 0644)) != 0) { 397 v -> `r nv, t , "DB->open: history"); 401 `hpuϋ ( dbp , hiy , accous , bnches , Δs ); 402 i(( t = dbp -> `o (dbp, 0)) != 0) { 403 v -> `r nv, t , "DB->close: history"); 407 } } 410 $puϋ ( dbp , t_id , b , ecs , msg ) 411 DB * dbp ; 412 u_t32_t t_id , b ; 413 ecs ; 414 cڡ * msg ; 416 DBT kdbt , ddbt ; 417 deec dc ; 418 i , t ; 420 kdbt . ags = 0; 421 kdbt . da = & dc . id ; 422 kdbt . size = ( u_t32_t ); 423 ddbt . ags = 0; 424 ddbt . da = & dc ; 425 ddbt . size = ( dc ); 426 `memt (& dc . d [0], 1, (drec.pad)); 428 i = 0; i < ecs ; i++) { 429 dc . id = t_id + ( u_t32_t ) i ; 430 dc . b = balance; 431 i(( t = 432 ( dbp -> put )(dbp, NULL , & kdbt , & ddbt , DB_NOOVERWRITE )) != 0) { 433 dbp -> `r (dbp, 434 t , "Fau inlizg %fe\n", msg ); 439 } } 442 $hpuϋ ( dbp , hiy , accous , bnches , Δs ) 443 DB * dbp ; 444 hiy , accous , bnches , Δs ; 446 DBT kdbt , ddbt ; 447 hic hc ; 448 db_o_t key ; 449 i , t ; 451 `memt (& kdbt , 0, (kdbt)); 452 `memt (& ddbt , 0, (ddbt)); 453 ddbt . da = & hc ; 454 ddbt . size = ( hc ); 455 kdbt . da = & key ; 456 kdbt . size = ( key ); 457 `memt (& hc . d [0], 1, (hrec.pad)); 458 hc . amou = 10; 460 i = 1; i < hiy ; i++) { 461 hc . aid = `ndom_id ( ACCOUNT , accous , bnches , Δs ); 462 hc . bid = `ndom_id ( BRANCH , accous , bnches , Δs ); 463 hc . tid = `ndom_id ( TELLER , accous , bnches , Δs ); 464 i(( t = dbp -> `put (dbp, NULL , & kdbt , & ddbt , DB_APPEND )) != 0) { 465 dbp -> `r (dbp, t , "dbp->put"); 470 } } 472 u_t32_t 473 $ndom_t ( lo , hi ) 474 u_t32_t lo , hi ; 476 u_t32_t t ; 477 t ; 479 #ide RAND_MAX 480 #RAND_MAX 0x7fffffff ) 482 t = `nd (); 483 t = ( u_t32_t )((() t / (()( RAND_MAX ) + 1)) * 484 ( hi - lo + 1)); 485 t + lo ; 486 ( t ); 487 } } 489 u_t32_t 490 $ndom_id ( ty , accous , bnches , Δs ) 491 FTYPE ty ; 492 accous , bnches , Δs ; 494 u_t32_t m , max , num ; 496 max = m = BEGID ; 497 num = accous ; 498 ty ) { 499 TELLER : 500 m + bnches ; 501 num = Δs ; 503 BRANCH : 504 i( ty = BRANCH ) 505 num = bnches ; 506 m + accous ; 508 ACCOUNT : 509 max = m + num - 1; 511 ( `ndom_t ( m , max )); 512 } } 515 $_run ( dbv , n , accous , bnches , Δs , vbo ) 516 DB_ENV * dbv ; 517 n , accous , bnches , Δs , vbo ; 519 DB * adb , * bdb , * hdb , * tdb ; 520 ed , t , txns ; 521 timev t_tv , d_tv ; 522 t_time , d_time ; 524 adb = bdb = hdb = tdb = NULL ; 529 i(( t = `db_ (& adb , dbv , 0)) != 0) { 530 dbv -> `r (dbv, t , "db_create"); 531 r ; 533 i(( t = adb -> `ݒ db, NULL , "accou", NULL, DB_UNKNOWN , 534 DB_AUTO_COMMIT , 0)) != 0) { 535 dbv -> `r (dbv, t , "DB->open:ccount"); 536 r ; 538 i(( t = `db_ (& bdb , dbv , 0)) != 0) { 539 dbv -> `r (dbv, t , "db_create"); 540 r ; 542 i(( t = bdb -> `ݒ (bdb, NULL , "bnch", NULL, DB_UNKNOWN , 543 DB_AUTO_COMMIT , 0)) != 0) { 544 dbv -> `r (dbv, t , "DB->open: branch"); 545 r ; 547 i(( t = `db_ (& hdb , dbv , 0)) != 0) { 548 dbv -> `r (dbv, t , "db_create"); 549 r ; 551 i(( t = hdb -> `ݒ (hdb, NULL , "hiy", NULL, DB_UNKNOWN , 552 DB_AUTO_COMMIT , 0)) != 0) { 553 dbv -> `r (dbv, t , "DB->open: history"); 554 r ; 556 i(( t = `db_ (& tdb , dbv , 0)) != 0) { 557 dbv -> `r (dbv, t , "db_create"); 558 r ; 560 i(( t = tdb -> `ݒ db, NULL , "Δ", NULL, DB_UNKNOWN , 561 DB_AUTO_COMMIT , 0)) != 0) { 562 dbv -> `r (dbv, t , "DB->open:eller"); 563 r ; 566 () `gtimeofday (& t_tv , NULL ); 568 txns = n , ed = 0;-- > 0;) 569 i(( t = `_txn ( dbv , adb , bdb , tdb , hdb , 570 accous , bnches , Δs , vbo )) != 0) 571 ++ ed ; 573 () `gtimeofday (& d_tv , NULL ); 575 t_time = t_tv . tv_c + ((t_tv. tv_uc + 0.0)/ NS_PER_MS ); 576 d_time = d_tv . tv_c + (nd_tv. tv_uc + 0.0)/ NS_PER_MS ); 577 i( d_time = t_time ) 578 d_time +1/ NS_PER_MS ; 580 `tf ("%s: %dxns: %d faed, %.3c, %.2TPS\n", ogme , 581 txns , ed , ( d_time - t_time ), 582 ( txns - ed / ()( d_time - t_time )); 584 r : i( adb ! NULL ) 585 () adb -> `o (adb, 0); 586 i( bdb ! NULL ) 587 () bdb -> `o (bdb, 0); 588 i( tdb ! NULL ) 589 () tdb -> `o (tdb, 0); 590 i( hdb ! NULL ) 591 () hdb -> `o (hdb, 0); 592 ( t == 0 ? 0 : 1); 593 } } 599 $_txn ( dbv , adb , bdb , tdb , hdb , accous , bnches , Δs , vbo ) 600 DB_ENV * dbv ; 601 DB * adb , * bdb , * tdb , * hdb ; 602 accous , bnches , Δs , vbo ; 604 DBC * acurs , * bcurs , * tcurs ; 605 DBT d_dbt , d_hidbt , k_dbt , k_hidbt ; 606 DB_TXN * t ; 607 db_o_t key ; 608 deec c ; 609 hic hc ; 610 accou , bnch , Δ , t ; 612 t = NULL ; 613 acurs = bcurs = tcurs = NULL ; 620 accou = `ndom_id ( ACCOUNT , accous , bnches , Δs ); 621 bnch = `ndom_id ( BRANCH , accous , bnches , Δs ); 622 Δ = `ndom_id ( TELLER , accous , bnches , Δs ); 624 `memt (& d_hidbt , 0, (d_histdbt)); 626 `memt (& k_hidbt , 0, (k_histdbt)); 627 k_hidbt . da = & key ; 628 k_hidbt . size = ( key ); 630 `memt (& k_dbt , 0, (k_dbt)); 631 k_dbt . size = (); 633 `memt (& d_dbt , 0, (d_dbt)); 634 d_dbt . ags = DB_DBT_USERMEM ; 635 d_dbt . da = & c ; 636 d_dbt . un = ( c ); 638 hc . aid = accou ; 639 hc . bid = bnch ; 640 hc . tid = Δ ; 641 hc . amou = 10; 643 d_hidbt . ags = DB_DBT_PARTIAL ; 653 i( dbv -> `txn_beg (dbv, NULL , & t , 0) != 0) 654 r ; 656 i( adb -> `curs db, t , & acurs , 0) != 0 || 657 bdb -> `curs (bdb, t , & bcurs , 0) != 0 || 658 tdb -> `curs db, t , & tcurs , 0) != 0) 659 r ; 662 k_dbt . da = & accou ; 663 i( acurs -> `g curs, & k_dbt , & d_dbt , DB_SET ) != 0) 664 r ; 665 c . b += 10; 666 i( acurs -> `put curs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 667 r ; 670 k_dbt . da = & bnch ; 671 i( bcurs -> `g (bcurs, & k_dbt , & d_dbt , DB_SET ) != 0) 672 r ; 673 c . b += 10; 674 i( bcurs -> `put (bcurs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 675 r ; 678 k_dbt . da = & Δ ; 679 i( tcurs -> `g curs, & k_dbt , & d_dbt , DB_SET ) != 0) 680 r ; 681 c . b += 10; 682 i( tcurs -> `put curs, & k_dbt , & d_dbt , DB_CURRENT ) != 0) 683 r ; 686 d_hidbt . ags = 0; 687 d_hidbt . da = & hc ; 688 d_hidbt . un = ( hc ); 689 i( hdb -> `put (hdb, t , & k_hidbt , & d_hidbt , DB_APPEND ) != 0) 690 r ; 692 i( acurs -> `o curs!0 || bcurs ->close(bcurs) != 0 || 693 tcurs -> `o (tcurs) != 0) 694 r ; 696 t = t -> `comm (t, 0); 697 t = NULL ; 698 i( t != 0) 699 r ; 704 r : i( acurs ! NULL ) 705 () acurs -> `o (acurs); 706 i( bcurs ! NULL ) 707 () bcurs -> `o (bcurs); 708 i( tcurs ! NULL ) 709 () tcurs -> `o (tcurs); 710 i( t ! NULL ) 711 () t -> `abt (t); 713 i( vbo ) 714 `tf ("Transaction A=%ld B=%ld T=%ld failed\n", 715 () accou , () bnch , () Δ ); 717 } } @../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 * key_rgs [] = { 205 DB * dbp ; 206 DB_ENV * vp ; 207 DBT key , vue ; 208 DB_TXN * txn ; 209 i , j , yld , t , thad_num ; 210 y_cou , max_s = 20; 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 -> `log_t_cfig nvp, DB_LOG_IN_MEMORY , 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 * key_rgs [] = { 206 DB * dbp ; 207 DB_ENV * vp ; 208 DBT key , vue ; 209 DB_TXN * txn ; 210 i , j , yld , t , thad_num ; 211 y_cou , max_s = 20; 213 dbp = ( DB *) gs ; 214 vp = dbp -> `g_v (dbp); 217 () `mux_lock (& thad_num_lock ); 218 glob_thad_num ++; 219 thad_num = glob_thad_num ; 220 () `mux_uock (& thad_num_lock ); 223 `d ( thad_num ); 226 i = 0; i < 50; i++) { 227 y_cou = 0; 234 y : 247 t = vp -> `txn_beg nvp, NULL , & txn , 0); 248 i( t != 0) { 249 vp -> `r nvp, t , "txn_begin failed"); 250 ((*) EXIT_FAILURE ); 252 j = 0; j < 10; j++) { 254 `memt (& key , 0, ( DBT )); 255 key . da = key_rgs [ j ]; 256 key . size = ( u_t32_t ) ` ( key_rgs [ j ]) + 1; 258 `memt (& vue , 0, ( DBT )); 259 yld = `nd (+ i ; 260 vue . da = & yld ; 261 vue . size = (); 264 t = dbp -> `put (dbp, txn , & key , & vue , 0)) { 275 DB_LOCK_DEADLOCK : 280 () txn -> `abt (txn); 286 i( y_cou < max_s ) { 287 `tf ("Writer %i: Got DB_LOCK_DEADLOCK.\n", 288 thad_num ); 289 `tf ("Writer %i: Retrying write operation.\n", 290 thad_num ); 291 y_cou ++; 292 y ; 297 `tf ("Wr %i: ", thad_num ); 298 `tf ("Got DB_LOCK_DEADLOCKnd out ofetries.\n"); 299 `tf ("Wr %i: Givg up.\n", thad_num ); 300 ((*) EXIT_FAILURE ); 306 vp -> `r nvp, t , "dbut failed"); 307 t = txn -> `abt (txn); 308 i( t != 0) 309 vp -> `r nvp, t , "txnbort failed"); 310 ((*) EXIT_FAILURE ); 319 `tf ("Thad %i. Recd cou: %i\n", thad_num , 320 `cou_cds ( dbp , txn )); 326 t = txn -> `comm (txn, 0); 327 i( t != 0) { 328 vp -> `r nvp, t , "txn commit failed"); 329 ((*) EXIT_FAILURE ); 332 ((*) EXIT_SUCCESS ); 333 } } 357 $cou_cds ( DB * dbp , DB_TXN * txn ) 359 DBT key , vue ; 360 DBC * cursp ; 361 cou , t ; 363 cursp = NULL ; 364 cou = 0; 367 t = dbp -> `curs (dbp, txn , & cursp , 0); 368 i( t != 0) { 369 dbp -> `r (dbp, t , 371 curs_r ; 375 `memt (& key , 0, ( DBT )); 376 `memt (& vue , 0, ( DBT )); 378 t = cursp -> `g (cursp, & key , & vue , DB_NEXT ); 379 t ) { 381 cou ++; 383 DB_NOTFOUND : 386 dbp -> `r (dbp, t , 388 curs_r ; 390 } t == 0); 392 curs_r : 393 i( cursp ! NULL ) { 394 t = cursp -> `o (cursorp); 395 i( t != 0) { 396 dbp -> `r (dbp, t , 401 ( cou ); 402 } } 406 $ݒ_db ( DB ** db , cڡ * ogme , cڡ * fe_me , 407 DB_ENV * vp , u_t32_t exa_ags ) 409 t ; 410 u_t32_t ݒ_ags ; 411 DB * dbp ; 414 t = `db_ (& dbp , vp , 0); 415 i( t != 0) { 416 `rtf ( dr , "%s: %s\n", ogme , 417 `db_ ( t )); 418 ( EXIT_FAILURE ); 422 * db = dbp ; 424 i( exa_ags != 0) { 425 t = dbp -> `t_ags (dbp, exa_ags ); 426 i( t != 0) { 427 dbp -> `r (dbp, t , 429 ( EXIT_FAILURE ); 434 ݒ_ags = DB_CREATE | 435 DB_THREAD | 436 DB_AUTO_COMMIT ; 438 t = dbp -> `ݒ (dbp, 439 NULL , 440 fe_me , 441 NULL , 442 DB_BTREE , 443 ݒ_ags , 446 i( t != 0) { 447 dbp -> `r (dbp, t , "Database open failed"); 448 ( EXIT_FAILURE ); 450 ( EXIT_SUCCESS ); 451 } } @../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 > 32 ~<rg > 33 ~<sam > 35 ~<db_cxx.h > 36 ~"RCfigInfo.h " 37 ~"dbc_auto.h " 39 usg gd :: cout ; 40 usg gd :: c ; 41 usg gd :: ; 42 usg gd :: dl ; 43 usg gd :: ush ; 44 usg gd :: iam ; 45 usg gd :: irgam ; 46 usg gd :: rg ; 47 usg gd :: gle ; 49 #CACHESIZE (10 * 1024 * 1024) ) 50 #DATABASE "que.db" ) 52 cڡ * gogme = "excxx_repquote"; 54 ~<o.h > 55 #ifde _WIN32 56 #WIN32_LEAN_AND_MEAN ) 57 ~<wdows.h > 60 gt (, * const *, const *); 61 * ݏrg ; 67 bo mis_ma ; 68 } tAPP_DATA ; 70 log (*); 72 as cRQueExame { 73 mpublic : 74 RQueExame (); 75 ( RCfigInfo * cfig ); 76 do (); 77 rme (); 79 evt_back ( DbEnv * dbv , u_t32_t which , * fo ); 81 mive : 83 RQueExame (const RepQuoteExample &); 84 mݔ = (cڡ RQueExame &); 87 APP_DATA mp_da ; 88 RCfigInfo * mp_cfig ; 89 DbEnv mcur_v ; 92 t_ocks ( Db * dbp ); 93 om (); 96 as cDbHd { 97 mpublic : 98 $DbHd ( DbEnv * v : $v ( v ) { 99 dbp = 0; 102 ~ $DbHd () { 103 y { 104 `o (); 105 } `tch (...) { 108 } } 110 bo $su_ݒ ( bo tg ) { 111 i( dbp ) 112 ( ue ); 113 dbp = w `Db ( v , 0); 114 dbp -> `t_gesize (512); 116 u_t32_t ags = DB_AUTO_COMMIT ; 117 i( tg ) 118 ags | DB_CREATE ; 119 y { 120 dbp -> `ݒ ( NULL , DATABASE , NULL, DB_BTREE , ags , 0); 121 ( ue ); 122 } `tch ( DbDdlockExi e ) { 123 } `tch ( DbRHdDdExi e ) { 124 } `tch ( DbExi e ) { 125 i( e . `g_o (= DB_REP_LOCKOUT ) { 127 } i( e . `g_o (= ENOENT && ! tg ) { 130 `log ("Stock DB doesot yetxist"); 132 throw ; 137 `log ("pleaseetryhe operation"); 138 `o (); 139 ( l ); 140 } } 142 $o () { 143 i( dbp ) { 144 y { 145 dbp -> `o (0); 146 de dbp ; 147 dbp = 0; 148 } `tch (...) { 149 de dbp ; 150 dbp = 0; 151 throw ; 154 } } 156 ݔ gDb *() { 157 gdbp ; 160 Db * gݔ ->() { 161 gdbp ; 164 give : 165 Db * dbp ; 166 DbEnv * gv ; 169 as cSgDbt : public Dbt { 170 public : 171 #GET_STRING_OK 0 ) 172 #GET_STRING_INVALID_PARAM 1 ) 173 #GET_STRING_SMALL_BUFFER 2 ) 174 #GET_STRING_EMPTY_DATA 3 ) 175 $g_rg (** buf , size_t buf_n ) 177 size_t cy_n ; 178 t = GET_STRING_OK ; 179 i( buf = NULL ) { 180 << "Invid iubuftg_rg" << dl ; 181 GET_STRING_INVALID_PARAM ; 185 `memt (* buf , 0, buf_n ); 188 i( `g_da (= NULL || `g_size () == 0) 189 GET_STRING_OK ; 191 i( `g_size (> buf_n ) { 192 t = GET_STRING_SMALL_BUFFER ; 193 cy_n = buf_n - 1; 195 cy_n = `g_size (); 196 `memy (* buf , `g_da (), cy_n ); 198 t ; 200 size_t $g_rg_ngth () 202 i( `g_size () == 0) 204 ` ((*) `g_da ()); 205 } } 206 $t_rg (* rg ) 208 `t_da ( rg ); 209 `t_size (( u_t32_t ) ` ( rg )); 210 } } 212 $SgDbt (* rg ) : 213 `Dbt ( rg , ( u_t32_t ) $ ( rg ){ } }; 214 $SgDbt (: $Dbt ({ } }; 215 ~ $SgDbt ({ } }; 221 gRQueExame :: $RQueExame (: `p_cfig (0), $cur_v (0) { 222 p_da . is_ma = 0; 223 } } 225 gRQueExame :: $ ( RCfigInfo * cfig ) { 226 p_cfig = cfig ; 228 cur_v . `t_p_ive (& p_da ); 229 cur_v . `t_rfe ( dr ); 230 cur_v . `t_fx ( ogme ); 231 cur_v . `t_evt_nify ( evt_back ); 232 cur_v . `pmgr_t_ack_picy ( DB_REPMGR_ACKS_ALL ); 234 cur_v . `pmgr_t_lol_se ( p_cfig -> this_ho . ho , 235 p_cfig -> this_ho . pt , 0); 237 REP_HOST_INFO * cur = p_cfig -> h_hos ; cu! NULL ; 238 cur = cur-> xt ) { 239 cur_v . `pmgr_add_me_se ( cur -> ho , cur-> pt , 240 NULL , cur -> ? DB_REPMGR_PEER : 0); 243 i( p_cfig -> tٮses > 0) 244 cur_v . `p_t_nses ( p_cfig -> tٮses ); 246 cur_v . `p_t_iܙy ( p_cfig -> iܙy ); 253 cur_v . `t_chesize (0, CACHESIZE , 0); 254 cur_v . `t_ags ( DB_TXN_NOSYNC , 1); 256 cur_v . `ݒ ( p_cfig -> home , DB_CREATE | DB_RECOVER | 257 DB_THREAD | DB_INIT_REP | DB_INIT_LOCK | DB_INIT_LOG | 258 DB_INIT_MPOOL | DB_INIT_TXN , 0); 260 i( p_cfig -> vbo ) 261 cur_v . `t_vbo ( DB_VERB_REPLICATION , 1); 263 cur_v . `pmgr_t (3, p_cfig -> t_picy ); 264 } } 266 gRQueExame :: $rme () { 267 y { 279 cur_v . `log_ush ( NULL ); 281 cur_v . `o (0); 282 } `tch ( DbExi dbe ) { 283 cout << "r closgnvmt: " << dbe . `wh (<< dl ; 286 } } 288 gRQueExame :: $om () { 289 cout << "QUOTESERVER"; 290 i(! p_da . is_ma ) 291 cout << "(read-only)"; 292 cout << "> " << ush ; 293 } } 295 $log (* msg ) { 296 << msg << dl ; 297 } } 306 gRQueExame :: $do () { 307 DbHd `dbh (& cur_v ); 309 rg put ; 310 `om (), `gle ( c , put )) { 311 irgam `is ( put ); 312 rg tok1 , tok2 ; 316 cou = 0; 317 i( is >> tok1 ) { 318 cou ++; 319 i( is >> tok2 ) 320 cou ++; 323 i( cou == 1) { 324 i( tok1 == "exit" ||oken1 == "quit") 327 `log ("Format: <stock> <price>"); 335 i(! dbh . `su_ݒ ( p_da . is_ma )) 338 y { 339 i( cou == 0) 340 `t_ocks ( dbh ); 341 i(! p_da . is_ma ) 342 `log ("Can't updatet client"); 344 cڡ * symb = tok1 . `c_r (); 345 SgDbt `key ( cڡ_ <*>( symb )); 347 cڡ * i = tok2 . `c_r (); 348 SgDbt `da ( cڡ_ <*>( i )); 350 dbh -> `put ( NULL , & key , & da , 0); 352 } `tch ( DbDdlockExi e ) { 353 `log ("pleaseetryhe operation"); 354 dbh . `o (); 355 } `tch ( DbRHdDdExi e ) { 356 `log ("pleaseetryhe operation"); 357 dbh . `o (); 358 } `tch ( DbExi e ) { 359 i( e . `g_o (= DB_REP_LOCKOUT ) { 360 `log ("pleaseetryhe operation"); 361 dbh . `o (); 363 throw ; 367 dbh . `o (); 368 } } 370 gRQueExame :: $evt_back ( DbEnv * dbv , u_t32_t which , * fo ) 372 APP_DATA * p = (APP_DATA*) dbv -> `g_p_ive (); 374 fo = NULL ; 376 which ) { 377 DB_EVENT_REP_MASTER : 378 p -> is_ma = 1; 381 DB_EVENT_REP_CLIENT : 382 p -> is_ma = 0; 385 DB_EVENT_REP_STARTUPDONE : 386 DB_EVENT_REP_NEWMASTER : 387 DB_EVENT_REP_PERM_FAILED : 392 dbv -> `rx ("ignܚgv%d", which ); 394 } } 396 gRQueExame :: $t_ocks ( Db * dbp ) { 397 SgDbt key , da ; 398 #MAXKEYSIZE 10 ) 399 #MAXDATASIZE 20 ) 400 keybuf [ MAXKEYSIZE + 1], dabuf [ MAXDATASIZE + 1]; 401 * kbuf , * dbuf ; 403 `memt (& key , 0, (key)); 404 `memt (& da , 0, (data)); 405 kbuf = keybuf ; 406 dbuf = dabuf ; 408 DbcAuto `dbc ( dbp , 0, 0); 409 cout << "\tSymb\tPri" << dl 410 << "\t======\t=====" << dl ; 412 t = dbc -> `g (& key , & da , DB_FIRST ); 413 t == 0; 414 t = dbc -> `g (& key , & da , DB_NEXT )) { 415 key . `g_rg (& kbuf , MAXKEYSIZE ); 416 da . `g_rg (& dbuf , MAXDATASIZE ); 418 cout << "\t" << keybuf << "\t" << dabuf << dl ; 420 cout << dl << ush ; 421 dbc . `o (); 422 } } 424 $uge () { 425 << "uge: " << ogme << dl 427 << "[-nses][-iܙy]" << dl ; 429 << "\-m ho:p܈equed; m sndf me)" << dl 431 << "numb othe may becifd)" << dl 432 << "\-h homdey" << dl 434 << "group; deuɠt0" << dl 436 << "numb ose" << dl 437 << "\thiti group)" << dl 438 << "\-iܙy (tiڮ: deuɠt100)" << dl ; 440 `ex ( EXIT_FAILURE ); 441 } } 443 $ma ( gc , ** gv ) { 444 RCfigInfo cfig ; 445 ch , * ptr , * tmpho ; 446 tmt ; 447 bo tmr ; 450 ( ch = `gt ( gc , gv , "Cf:h:Mm:n:o:p:v")! EOF ) { 451 tmr = l ; 452 ch ) { 454 cfig . t_picy = DB_REP_CLIENT ; 457 cfig . home = ݏrg ; 460 cfig . t_picy = DB_REP_MASTER ; 463 cfig . this_ho . ho = `ok ( ݏrg , ":"); 464 i(( ptr = `ok ( NULL , ":")) == NULL) { 465 << "Bad ho scifiti." << dl ; 466 `uge (); 468 cfig . this_ho . pt = () `oi ( ptr ); 469 cfig . g_li_addss = ue ; 472 cfig . tٮses = `oi ( ݏrg ); 475 tmr = ue ; 477 tmpho = `ok ( ݏrg , ":"); 478 i(( ptr = `ok ( NULL , ":")) == NULL) { 479 << "Bad ho scifiti." << dl ; 480 `uge (); 482 tmt = () `oi ( ptr ); 484 cfig . `addOthHo ( tmpho , tmt , tmr ); 488 cfig . iܙy = `oi ( ݏrg ); 491 cfig . vbo = ue ; 495 `uge (); 500 i((! cfig . g_li_addss || cfig. home = NULL ) 501 `uge (); 503 RQueExame ru ; 504 y { 505 ru . ` (& cfig ); 506 ru . `do (); 507 } `tch ( DbExi dbe ) { 508 << "Caughtnxception during initialization or" 509 << "rossg: " << dbe . `wh (<< dl ; 511 ru . `rme (); 513 } } @../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 -> `log_t_cfig ( DB_LOG_IN_MEMORY , 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 " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_am.h " 8 ~"dbc/log.h " 9 ~"dbc/txn.h " 10 ~"dbc/f.h " 16 $__f__ad ( v , cbuf , g ) 17 ENV * v ; 18 * cbuf ; 19 __f__gs ** g ; 21 __f__gs * gp ; 22 u_t8_t * bp ; 23 t ; 25 i(( t = `__os_mloc ( v , 26 ( __f__gs + ( DB_TXN ), & gp )) != 0) 27 ( t ); 28 bp = cbuf ; 29 gp -> tx = ( DB_TXN *)&argp[1]; 30 `memt ( gp -> tx , 0, ( DB_TXN )); 32 `LOGCOPY_32 ( v , & gp -> ty , bp ); 33 bp +( gp -> ty ); 35 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 36 bp +( gp -> tx -> txnid ); 38 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 39 bp +( DB_LSN ); 41 `memt (& gp -> me , 0, (argp->name)); 42 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 43 bp +( u_t32_t ); 44 gp -> me . da = bp ; 45 bp + gp -> me . size ; 47 `LOGCOPY_32 ( v , & gp -> ame , bp ); 48 bp +( gp -> ame ); 50 `LOGCOPY_32 ( v , & gp -> mode , bp ); 51 bp +( gp -> mode ); 53 * g = gp ; 54 ( t ); 55 } } 62 $__f__log ( v , tx , t_lp , ags , 63 me , ame , mode ) 64 ENV * v ; 65 DB_TXN * tx ; 66 DB_LSN * t_lp ; 67 u_t32_t ags ; 68 cڡ DBT * me ; 69 u_t32_t ame ; 70 u_t32_t mode ; 72 DBT logc ; 73 DB_LSN * lp , nu_l , * p ; 74 DB_TXNLOGREC * ; 75 u_t32_t zo , y , txn_num ; 76 u_t ad ; 77 u_t8_t * bp ; 78 is_dub , t ; 80 `COMPQUIET ( , NULL ); 82 p = t_lp ; 83 y = DB___f_ ; 84 ad = 0; 85 t = 0; 87 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 88 i( tx = NULL ) 90 i( tx = NULL ) 92 is_dub = 0; 94 is_dub = 1; 96 i( tx = NULL ) { 97 txn_num = 0; 98 lp = & nu_l ; 99 nu_l . fe =u_l. offt = 0; 101 i( `TAILQ_FIRST (& tx -> kids ! NULL && 102 ( t = `__txn_aivekids ( v , y , tx )) != 0) 103 ( t ); 110 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 111 txn_num = tx -> txnid ; 114 logc . size = ( y + ( txn_num + ( DB_LSN ) 115 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 116 + ( u_t32_t ) 117 + ( u_t32_t ); 118 i( `CRYPTO_ON ( v )) { 119 ad = v -> yo_hd -> `adj_size ( logc . size ); 120 logc . size + ad ; 123 i( is_dub || tx = NULL ) { 124 i(( t = 125 `__os_mloc ( v , logc . size , &logc. da )) != 0) 126 ( t ); 128 i(( t = `__os_mloc ( v , 129 logc . size + ( DB_TXNLOGREC ), & )) != 0) 130 ( t ); 131 #ifde DIAGNOSTIC 132 i(( t = 133 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 134 `__os_ ( v , ); 135 ( t ); 138 logc . da = ->data; 141 i( ad > 0) 142 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 144 bp = logc . da ; 146 `LOGCOPY_32 ( v , bp , & y ); 147 bp +( y ); 149 `LOGCOPY_32 ( v , bp , & txn_num ); 150 bp +( txn_num ); 152 `LOGCOPY_FROMLSN ( v , bp , lp ); 153 bp +( DB_LSN ); 155 i( me = NULL ) { 156 zo = 0; 157 `LOGCOPY_32 ( v , bp , & zo ); 158 bp +( u_t32_t ); 160 `LOGCOPY_32 ( v , bp , & me -> size ); 161 bp +( me -> size ); 162 `memy ( bp , me -> da ,ame-> size ); 163 bp + me -> size ; 166 `LOGCOPY_32 ( v , bp , & ame ); 167 bp +( ame ); 169 `LOGCOPY_32 ( v , bp , & mode ); 170 bp +( mode ); 172 `DB_ASSERT ( v , 173 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 175 i( is_dub || tx = NULL ) { 176 i(( t = `__log_put ( v , p ,( DBT *)& logc , 177 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 178 * lp = * p ; 179 i( p ! t_lp ) 180 * t_lp = * p ; 183 t = 0; 184 #ifde DIAGNOSTIC 189 `memy ( -> da , logc .da,ogc. size ); 190 y | DB_debug_FLAG ; 191 `LOGCOPY_32 ( v , logc . da , & y ); 193 i(! `IS_REP_CLIENT ( v )) 194 t = `__log_put ( v , 195 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 197 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 198 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 199 `LSN_NOT_LOGGED (* t_lp ); 202 #ifde LOG_DIAGNOSTIC 203 i( t != 0) 204 () `__f__t ( v , 205 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 208 #ifde DIAGNOSTIC 209 `__os_ ( v , logc . da ); 211 i( is_dub || tx = NULL ) 212 `__os_ ( v , logc . da ); 214 ( t ); 215 } } 221 $__f_move_ad ( v , cbuf , g ) 222 ENV * v ; 223 * cbuf ; 224 __f_move_gs ** g ; 226 __f_move_gs * gp ; 227 u_t8_t * bp ; 228 t ; 230 i(( t = `__os_mloc ( v , 231 ( __f_move_gs + ( DB_TXN ), & gp )) != 0) 232 ( t ); 233 bp = cbuf ; 234 gp -> tx = ( DB_TXN *)&argp[1]; 235 `memt ( gp -> tx , 0, ( DB_TXN )); 237 `LOGCOPY_32 ( v , & gp -> ty , bp ); 238 bp +( gp -> ty ); 240 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 241 bp +( gp -> tx -> txnid ); 243 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 244 bp +( DB_LSN ); 246 `memt (& gp -> me , 0, (argp->name)); 247 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 248 bp +( u_t32_t ); 249 gp -> me . da = bp ; 250 bp + gp -> me . size ; 252 `memt (& gp -> fid , 0, (argp->fid)); 253 `LOGCOPY_32 ( v ,& gp -> fid . size , bp ); 254 bp +( u_t32_t ); 255 gp -> fid . da = bp ; 256 bp + gp -> fid . size ; 258 `LOGCOPY_32 ( v , & gp -> ame , bp ); 259 bp +( gp -> ame ); 261 * g = gp ; 262 ( t ); 263 } } 270 $__f_move_log ( v , tx , t_lp , ags , 271 me , fid , ame ) 272 ENV * v ; 273 DB_TXN * tx ; 274 DB_LSN * t_lp ; 275 u_t32_t ags ; 276 cڡ DBT * me ; 277 cڡ DBT * fid ; 278 u_t32_t ame ; 280 DBT logc ; 281 DB_LSN * lp , nu_l , * p ; 282 DB_TXNLOGREC * ; 283 u_t32_t zo , y , txn_num ; 284 u_t ad ; 285 u_t8_t * bp ; 286 is_dub , t ; 288 `COMPQUIET ( , NULL ); 290 p = t_lp ; 291 y = DB___f_move ; 292 ad = 0; 293 t = 0; 295 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 296 i( tx = NULL ) 298 i( tx = NULL ) 300 is_dub = 0; 302 is_dub = 1; 304 i( tx = NULL ) { 305 txn_num = 0; 306 lp = & nu_l ; 307 nu_l . fe =u_l. offt = 0; 309 i( `TAILQ_FIRST (& tx -> kids ! NULL && 310 ( t = `__txn_aivekids ( v , y , tx )) != 0) 311 ( t ); 318 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 319 txn_num = tx -> txnid ; 322 logc . size = ( y + ( txn_num + ( DB_LSN ) 323 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 324 + ( u_t32_t + ( fid = NULL ? 0 : fid-> size ) 325 + ( u_t32_t ); 326 i( `CRYPTO_ON ( v )) { 327 ad = v -> yo_hd -> `adj_size ( logc . size ); 328 logc . size + ad ; 331 i( is_dub || tx = NULL ) { 332 i(( t = 333 `__os_mloc ( v , logc . size , &logc. da )) != 0) 334 ( t ); 336 i(( t = `__os_mloc ( v , 337 logc . size + ( DB_TXNLOGREC ), & )) != 0) 338 ( t ); 339 #ifde DIAGNOSTIC 340 i(( t = 341 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 342 `__os_ ( v , ); 343 ( t ); 346 logc . da = ->data; 349 i( ad > 0) 350 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 352 bp = logc . da ; 354 `LOGCOPY_32 ( v , bp , & y ); 355 bp +( y ); 357 `LOGCOPY_32 ( v , bp , & txn_num ); 358 bp +( txn_num ); 360 `LOGCOPY_FROMLSN ( v , bp , lp ); 361 bp +( DB_LSN ); 363 i( me = NULL ) { 364 zo = 0; 365 `LOGCOPY_32 ( v , bp , & zo ); 366 bp +( u_t32_t ); 368 `LOGCOPY_32 ( v , bp , & me -> size ); 369 bp +( me -> size ); 370 `memy ( bp , me -> da ,ame-> size ); 371 bp + me -> size ; 374 i( fid = NULL ) { 375 zo = 0; 376 `LOGCOPY_32 ( v , bp , & zo ); 377 bp +( u_t32_t ); 379 `LOGCOPY_32 ( v , bp , & fid -> size ); 380 bp +( fid -> size ); 381 `memy ( bp , fid -> da , fid-> size ); 382 bp + fid -> size ; 385 `LOGCOPY_32 ( v , bp , & ame ); 386 bp +( ame ); 388 `DB_ASSERT ( v , 389 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 391 i( is_dub || tx = NULL ) { 392 i(( t = `__log_put ( v , p ,( DBT *)& logc , 393 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 394 * lp = * p ; 395 i( p ! t_lp ) 396 * t_lp = * p ; 399 t = 0; 400 #ifde DIAGNOSTIC 405 `memy ( -> da , logc .da,ogc. size ); 406 y | DB_debug_FLAG ; 407 `LOGCOPY_32 ( v , logc . da , & y ); 409 i(! `IS_REP_CLIENT ( v )) 410 t = `__log_put ( v , 411 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 413 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 414 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 415 `LSN_NOT_LOGGED (* t_lp ); 418 #ifde LOG_DIAGNOSTIC 419 i( t != 0) 420 () `__f_move_t ( v , 421 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 424 #ifde DIAGNOSTIC 425 `__os_ ( v , logc . da ); 427 i( is_dub || tx = NULL ) 428 `__os_ ( v , logc . da ); 430 ( t ); 431 } } 437 $__f_wre_ad ( v , cbuf , g ) 438 ENV * v ; 439 * cbuf ; 440 __f_wre_gs ** g ; 442 __f_wre_gs * gp ; 443 u_t32_t ump ; 444 u_t8_t * bp ; 445 t ; 447 i(( t = `__os_mloc ( v , 448 ( __f_wre_gs + ( DB_TXN ), & gp )) != 0) 449 ( t ); 450 bp = cbuf ; 451 gp -> tx = ( DB_TXN *)&argp[1]; 452 `memt ( gp -> tx , 0, ( DB_TXN )); 454 `LOGCOPY_32 ( v , & gp -> ty , bp ); 455 bp +( gp -> ty ); 457 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 458 bp +( gp -> tx -> txnid ); 460 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 461 bp +( DB_LSN ); 463 `memt (& gp -> me , 0, (argp->name)); 464 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 465 bp +( u_t32_t ); 466 gp -> me . da = bp ; 467 bp + gp -> me . size ; 469 `LOGCOPY_32 ( v , & gp -> ame , bp ); 470 bp +( gp -> ame ); 472 `LOGCOPY_32 ( v , & gp -> pgsize , bp ); 473 bp +( gp -> pgsize ); 475 `LOGCOPY_32 ( v , & ump , bp ); 476 gp -> go = ( db_pgno_t ) ump ; 477 bp +( ump ); 479 `LOGCOPY_32 ( v , & gp -> offt , bp ); 480 bp +( gp -> offt ); 482 `memt (& gp -> ge , 0, (argp->page)); 483 `LOGCOPY_32 ( v ,& gp -> ge . size , bp ); 484 bp +( u_t32_t ); 485 gp -> ge . da = bp ; 486 bp + gp -> ge . size ; 488 `LOGCOPY_32 ( v , & gp -> ag , bp ); 489 bp +( gp -> ag ); 491 * g = gp ; 492 ( t ); 493 } } 501 $__f_wre_log ( v , tx , t_lp , ags , 502 me , ame , pgsize , go , offt , ge , 503 ag ) 504 ENV * v ; 505 DB_TXN * tx ; 506 DB_LSN * t_lp ; 507 u_t32_t ags ; 508 cڡ DBT * me ; 509 u_t32_t ame ; 510 u_t32_t pgsize ; 511 db_pgno_t go ; 512 u_t32_t offt ; 513 cڡ DBT * ge ; 514 u_t32_t ag ; 516 DBT logc ; 517 DB_LSN * lp , nu_l , * p ; 518 DB_TXNLOGREC * ; 519 u_t32_t zo , ump , y , txn_num ; 520 u_t ad ; 521 u_t8_t * bp ; 522 is_dub , t ; 524 `COMPQUIET ( , NULL ); 526 p = t_lp ; 527 y = DB___f_wre ; 528 ad = 0; 529 t = 0; 531 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 532 i( tx = NULL ) 534 i( tx = NULL ) 536 is_dub = 0; 538 is_dub = 1; 540 i( tx = NULL ) { 541 txn_num = 0; 542 lp = & nu_l ; 543 nu_l . fe =u_l. offt = 0; 545 i( `TAILQ_FIRST (& tx -> kids ! NULL && 546 ( t = `__txn_aivekids ( v , y , tx )) != 0) 547 ( t ); 554 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 555 txn_num = tx -> txnid ; 558 logc . size = ( y + ( txn_num + ( DB_LSN ) 559 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 560 + ( u_t32_t ) 561 + ( u_t32_t ) 562 + ( u_t32_t ) 563 + ( u_t32_t ) 564 + ( u_t32_t + ( ge = NULL ? 0 :age-> size ) 565 + ( u_t32_t ); 566 i( `CRYPTO_ON ( v )) { 567 ad = v -> yo_hd -> `adj_size ( logc . size ); 568 logc . size + ad ; 571 i( is_dub || tx = NULL ) { 572 i(( t = 573 `__os_mloc ( v , logc . size , &logc. da )) != 0) 574 ( t ); 576 i(( t = `__os_mloc ( v , 577 logc . size + ( DB_TXNLOGREC ), & )) != 0) 578 ( t ); 579 #ifde DIAGNOSTIC 580 i(( t = 581 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 582 `__os_ ( v , ); 583 ( t ); 586 logc . da = ->data; 589 i( ad > 0) 590 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 592 bp = logc . da ; 594 `LOGCOPY_32 ( v , bp , & y ); 595 bp +( y ); 597 `LOGCOPY_32 ( v , bp , & txn_num ); 598 bp +( txn_num ); 600 `LOGCOPY_FROMLSN ( v , bp , lp ); 601 bp +( DB_LSN ); 603 i( me = NULL ) { 604 zo = 0; 605 `LOGCOPY_32 ( v , bp , & zo ); 606 bp +( u_t32_t ); 608 `LOGCOPY_32 ( v , bp , & me -> size ); 609 bp +( me -> size ); 610 `memy ( bp , me -> da ,ame-> size ); 611 bp + me -> size ; 614 `LOGCOPY_32 ( v , bp , & ame ); 615 bp +( ame ); 617 `LOGCOPY_32 ( v , bp , & pgsize ); 618 bp +( pgsize ); 620 ump = ( u_t32_t ) go ; 621 `LOGCOPY_32 ( v , bp , & ump ); 622 bp +( ump ); 624 `LOGCOPY_32 ( v , bp , & offt ); 625 bp +( offt ); 627 i( ge = NULL ) { 628 zo = 0; 629 `LOGCOPY_32 ( v , bp , & zo ); 630 bp +( u_t32_t ); 632 `LOGCOPY_32 ( v , bp , & ge -> size ); 633 bp +( ge -> size ); 634 `memy ( bp , ge -> da ,age-> size ); 635 bp + ge -> size ; 638 `LOGCOPY_32 ( v , bp , & ag ); 639 bp +( ag ); 641 `DB_ASSERT ( v , 642 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 644 i( is_dub || tx = NULL ) { 645 i(( t = `__log_put ( v , p ,( DBT *)& logc , 646 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 647 * lp = * p ; 648 i( p ! t_lp ) 649 * t_lp = * p ; 652 t = 0; 653 #ifde DIAGNOSTIC 658 `memy ( -> da , logc .da,ogc. size ); 659 y | DB_debug_FLAG ; 660 `LOGCOPY_32 ( v , logc . da , & y ); 662 i(! `IS_REP_CLIENT ( v )) 663 t = `__log_put ( v , 664 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 666 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 667 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 668 `LSN_NOT_LOGGED (* t_lp ); 671 #ifde LOG_DIAGNOSTIC 672 i( t != 0) 673 () `__f_wre_t ( v , 674 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 677 #ifde DIAGNOSTIC 678 `__os_ ( v , logc . da ); 680 i( is_dub || tx = NULL ) 681 `__os_ ( v , logc . da ); 683 ( t ); 684 } } 690 $__f_me_ad ( v , cbuf , g ) 691 ENV * v ; 692 * cbuf ; 693 __f_me_gs ** g ; 695 __f_me_gs * gp ; 696 u_t8_t * bp ; 697 t ; 699 i(( t = `__os_mloc ( v , 700 ( __f_me_gs + ( DB_TXN ), & gp )) != 0) 701 ( t ); 702 bp = cbuf ; 703 gp -> tx = ( DB_TXN *)&argp[1]; 704 `memt ( gp -> tx , 0, ( DB_TXN )); 706 `LOGCOPY_32 ( v , & gp -> ty , bp ); 707 bp +( gp -> ty ); 709 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 710 bp +( gp -> tx -> txnid ); 712 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 713 bp +( DB_LSN ); 715 `memt (& gp -> dme , 0, (argp->oldname)); 716 `LOGCOPY_32 ( v ,& gp -> dme . size , bp ); 717 bp +( u_t32_t ); 718 gp -> dme . da = bp ; 719 bp + gp -> dme . size ; 721 `memt (& gp -> wme , 0, (argp->newname)); 722 `LOGCOPY_32 ( v ,& gp -> wme . size , bp ); 723 bp +( u_t32_t ); 724 gp -> wme . da = bp ; 725 bp + gp -> wme . size ; 727 `memt (& gp -> feid , 0, (argp->fileid)); 728 `LOGCOPY_32 ( v ,& gp -> feid . size , bp ); 729 bp +( u_t32_t ); 730 gp -> feid . da = bp ; 731 bp + gp -> feid . size ; 733 `LOGCOPY_32 ( v , & gp -> ame , bp ); 734 bp +( gp -> ame ); 736 * g = gp ; 737 ( t ); 738 } } 755 $__f_me_log ( v , tx , t_lp , ags , 756 dme , wme , feid , ame ) 757 ENV * v ; 758 DB_TXN * tx ; 759 DB_LSN * t_lp ; 760 u_t32_t ags ; 761 cڡ DBT * dme ; 762 cڡ DBT * wme ; 763 cڡ DBT * feid ; 764 u_t32_t ame ; 767 ( `__f_me_t_log ( v , tx , t_lp , ags , 768 dme , wme , feid , ame , DB___f_me )); 769 } } 771 $__f_me_noundo_log ( v , tx , t_lp , ags , 772 dme , wme , feid , ame ) 773 ENV * v ; 774 DB_TXN * tx ; 775 DB_LSN * t_lp ; 776 u_t32_t ags ; 777 cڡ DBT * dme ; 778 cڡ DBT * wme ; 779 cڡ DBT * feid ; 780 u_t32_t ame ; 783 ( `__f_me_t_log ( v , tx , t_lp , ags , 784 dme , wme , feid , ame , DB___f_me_noundo )); 785 } } 787 $__f_me_t_log ( v , tx , t_lp , ags , 788 dme , wme , feid , ame , ty ) 789 ENV * v ; 790 DB_TXN * tx ; 791 DB_LSN * t_lp ; 792 u_t32_t ags ; 793 cڡ DBT * dme ; 794 cڡ DBT * wme ; 795 cڡ DBT * feid ; 796 u_t32_t ame ; 797 u_t32_t ty ; 799 DBT logc ; 800 DB_LSN * lp , nu_l , * p ; 801 DB_TXNLOGREC * ; 802 u_t32_t zo , y , txn_num ; 803 u_t ad ; 804 u_t8_t * bp ; 805 is_dub , t ; 807 `COMPQUIET ( , NULL ); 809 p = t_lp ; 810 y = ty ; 811 ad = 0; 812 t = 0; 814 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 815 i( tx = NULL ) 817 i( tx = NULL ) 819 is_dub = 0; 821 is_dub = 1; 823 i( tx = NULL ) { 824 txn_num = 0; 825 lp = & nu_l ; 826 nu_l . fe =u_l. offt = 0; 828 i( `TAILQ_FIRST (& tx -> kids ! NULL && 829 ( t = `__txn_aivekids ( v , y , tx )) != 0) 830 ( t ); 837 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 838 txn_num = tx -> txnid ; 841 logc . size = ( y + ( txn_num + ( DB_LSN ) 842 + ( u_t32_t + ( dme = NULL ? 0 : oldme-> size ) 843 + ( u_t32_t + ( wme = NULL ? 0 :ewme-> size ) 844 + ( u_t32_t + ( feid = NULL ? 0 : feid-> size ) 845 + ( u_t32_t ); 846 i( `CRYPTO_ON ( v )) { 847 ad = v -> yo_hd -> `adj_size ( logc . size ); 848 logc . size + ad ; 851 i( is_dub || tx = NULL ) { 852 i(( t = 853 `__os_mloc ( v , logc . size , &logc. da )) != 0) 854 ( t ); 856 i(( t = `__os_mloc ( v , 857 logc . size + ( DB_TXNLOGREC ), & )) != 0) 858 ( t ); 859 #ifde DIAGNOSTIC 860 i(( t = 861 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 862 `__os_ ( v , ); 863 ( t ); 866 logc . da = ->data; 869 i( ad > 0) 870 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 872 bp = logc . da ; 874 `LOGCOPY_32 ( v , bp , & y ); 875 bp +( y ); 877 `LOGCOPY_32 ( v , bp , & txn_num ); 878 bp +( txn_num ); 880 `LOGCOPY_FROMLSN ( v , bp , lp ); 881 bp +( DB_LSN ); 883 i( dme = NULL ) { 884 zo = 0; 885 `LOGCOPY_32 ( v , bp , & zo ); 886 bp +( u_t32_t ); 888 `LOGCOPY_32 ( v , bp , & dme -> size ); 889 bp +( dme -> size ); 890 `memy ( bp , dme -> da , oldme-> size ); 891 bp + dme -> size ; 894 i( wme = NULL ) { 895 zo = 0; 896 `LOGCOPY_32 ( v , bp , & zo ); 897 bp +( u_t32_t ); 899 `LOGCOPY_32 ( v , bp , & wme -> size ); 900 bp +( wme -> size ); 901 `memy ( bp , wme -> da ,ewme-> size ); 902 bp + wme -> size ; 905 i( feid = NULL ) { 906 zo = 0; 907 `LOGCOPY_32 ( v , bp , & zo ); 908 bp +( u_t32_t ); 910 `LOGCOPY_32 ( v , bp , & feid -> size ); 911 bp +( feid -> size ); 912 `memy ( bp , feid -> da , feid-> size ); 913 bp + feid -> size ; 916 `LOGCOPY_32 ( v , bp , & ame ); 917 bp +( ame ); 919 `DB_ASSERT ( v , 920 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 922 i( is_dub || tx = NULL ) { 923 i(( t = `__log_put ( v , p ,( DBT *)& logc , 924 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 925 * lp = * p ; 926 i( p ! t_lp ) 927 * t_lp = * p ; 930 t = 0; 931 #ifde DIAGNOSTIC 936 `memy ( -> da , logc .da,ogc. size ); 937 y | DB_debug_FLAG ; 938 `LOGCOPY_32 ( v , logc . da , & y ); 940 i(! `IS_REP_CLIENT ( v )) 941 t = `__log_put ( v , 942 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 944 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 945 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 946 `LSN_NOT_LOGGED (* t_lp ); 949 #ifde LOG_DIAGNOSTIC 950 i( t != 0) 951 () `__f_me_t ( v , 952 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 955 #ifde DIAGNOSTIC 956 `__os_ ( v , logc . da ); 958 i( is_dub || tx = NULL ) 959 `__os_ ( v , logc . da ); 961 ( t ); 962 } } 969 $__f_fe_move_ad ( v , cbuf , g ) 970 ENV * v ; 971 * cbuf ; 972 __f_fe_move_gs ** g ; 974 __f_fe_move_gs * gp ; 975 u_t8_t * bp ; 976 t ; 978 i(( t = `__os_mloc ( v , 979 ( __f_fe_move_gs + ( DB_TXN ), & gp )) != 0) 980 ( t ); 981 bp = cbuf ; 982 gp -> tx = ( DB_TXN *)&argp[1]; 983 `memt ( gp -> tx , 0, ( DB_TXN )); 985 `LOGCOPY_32 ( v , & gp -> ty , bp ); 986 bp +( gp -> ty ); 988 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 989 bp +( gp -> tx -> txnid ); 991 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 992 bp +( DB_LSN ); 994 `memt (& gp -> _fid , 0, (argp->real_fid)); 995 `LOGCOPY_32 ( v ,& gp -> _fid . size , bp ); 996 bp +( u_t32_t ); 997 gp -> _fid . da = bp ; 998 bp + gp -> _fid . size ; 1000 `memt (& gp -> tmp_fid , 0, (argp->tmp_fid)); 1001 `LOGCOPY_32 ( v ,& gp -> tmp_fid . size , bp ); 1002 bp +( u_t32_t ); 1003 gp -> tmp_fid . da = bp ; 1004 bp + gp -> tmp_fid . size ; 1006 `memt (& gp -> me , 0, (argp->name)); 1007 `LOGCOPY_32 ( v ,& gp -> me . size , bp ); 1008 bp +( u_t32_t ); 1009 gp -> me . da = bp ; 1010 bp + gp -> me . size ; 1012 `LOGCOPY_32 ( v , & gp -> ame , bp ); 1013 bp +( gp -> ame ); 1015 `LOGCOPY_32 ( v , & gp -> chd , bp ); 1016 bp +( gp -> chd ); 1018 * g = gp ; 1019 ( t ); 1020 } } 1028 $__f_fe_move_log ( v , tx , t_lp , ags , 1029 _fid , tmp_fid , me , ame , chd ) 1030 ENV * v ; 1031 DB_TXN * tx ; 1032 DB_LSN * t_lp ; 1033 u_t32_t ags ; 1034 cڡ DBT * _fid ; 1035 cڡ DBT * tmp_fid ; 1036 cڡ DBT * me ; 1037 u_t32_t ame ; 1038 u_t32_t chd ; 1040 DBT logc ; 1041 DB_LSN * lp , nu_l , * p ; 1042 DB_TXNLOGREC * ; 1043 u_t32_t zo , y , txn_num ; 1044 u_t ad ; 1045 u_t8_t * bp ; 1046 is_dub , t ; 1048 `COMPQUIET ( , NULL ); 1050 p = t_lp ; 1051 y = DB___f_fe_move ; 1052 ad = 0; 1053 t = 0; 1055 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 1056 i( tx = NULL ) 1058 i( tx = NULL ) 1060 is_dub = 0; 1062 is_dub = 1; 1064 i( tx = NULL ) { 1065 txn_num = 0; 1066 lp = & nu_l ; 1067 nu_l . fe =u_l. offt = 0; 1069 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1070 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1071 ( t ); 1078 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1079 txn_num = tx -> txnid ; 1082 logc . size = ( y + ( txn_num + ( DB_LSN ) 1083 + ( u_t32_t + ( _fid = NULL ? 0 :l_fid-> size ) 1084 + ( u_t32_t + ( tmp_fid = NULL ? 0 :mp_fid-> size ) 1085 + ( u_t32_t + ( me = NULL ? 0 :ame-> size ) 1086 + ( u_t32_t ) 1087 + ( u_t32_t ); 1088 i( `CRYPTO_ON ( v )) { 1089 ad = v -> yo_hd -> `adj_size ( logc . size ); 1090 logc . size + ad ; 1093 i( is_dub || tx = NULL ) { 1094 i(( t = 1095 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1096 ( t ); 1098 i(( t = `__os_mloc ( v , 1099 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1100 ( t ); 1101 #ifde DIAGNOSTIC 1102 i(( t = 1103 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1104 `__os_ ( v , ); 1105 ( t ); 1108 logc . da = ->data; 1111 i( ad > 0) 1112 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1114 bp = logc . da ; 1116 `LOGCOPY_32 ( v , bp , & y ); 1117 bp +( y ); 1119 `LOGCOPY_32 ( v , bp , & txn_num ); 1120 bp +( txn_num ); 1122 `LOGCOPY_FROMLSN ( v , bp , lp ); 1123 bp +( DB_LSN ); 1125 i( _fid = NULL ) { 1126 zo = 0; 1127 `LOGCOPY_32 ( v , bp , & zo ); 1128 bp +( u_t32_t ); 1130 `LOGCOPY_32 ( v , bp , & _fid -> size ); 1131 bp +( _fid -> size ); 1132 `memy ( bp , _fid -> da ,l_fid-> size ); 1133 bp + _fid -> size ; 1136 i( tmp_fid = NULL ) { 1137 zo = 0; 1138 `LOGCOPY_32 ( v , bp , & zo ); 1139 bp +( u_t32_t ); 1141 `LOGCOPY_32 ( v , bp , & tmp_fid -> size ); 1142 bp +( tmp_fid -> size ); 1143 `memy ( bp , tmp_fid -> da ,mp_fid-> size ); 1144 bp + tmp_fid -> size ; 1147 i( me = NULL ) { 1148 zo = 0; 1149 `LOGCOPY_32 ( v , bp , & zo ); 1150 bp +( u_t32_t ); 1152 `LOGCOPY_32 ( v , bp , & me -> size ); 1153 bp +( me -> size ); 1154 `memy ( bp , me -> da ,ame-> size ); 1155 bp + me -> size ; 1158 `LOGCOPY_32 ( v , bp , & ame ); 1159 bp +( ame ); 1161 `LOGCOPY_32 ( v , bp , & chd ); 1162 bp +( chd ); 1164 `DB_ASSERT ( v , 1165 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1167 i( is_dub || tx = NULL ) { 1168 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1169 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1170 * lp = * p ; 1171 i( p ! t_lp ) 1172 * t_lp = * p ; 1175 t = 0; 1176 #ifde DIAGNOSTIC 1181 `memy ( -> da , logc .da,ogc. size ); 1182 y | DB_debug_FLAG ; 1183 `LOGCOPY_32 ( v , logc . da , & y ); 1185 i(! `IS_REP_CLIENT ( v )) 1186 t = `__log_put ( v , 1187 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1189 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1190 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1191 `LSN_NOT_LOGGED (* t_lp ); 1194 #ifde LOG_DIAGNOSTIC 1195 i( t != 0) 1196 () `__f_fe_move_t ( v , 1197 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1200 #ifde DIAGNOSTIC 1201 `__os_ ( v , logc . da ); 1203 i( is_dub || tx = NULL ) 1204 `__os_ ( v , logc . da ); 1206 ( t ); 1207 } } 1213 $__f__cov ( v , dbp ) 1214 ENV * v ; 1215 DB_DISTAB * dbp ; 1217 t ; 1219 i(( t = `__db_add_covy_t ( v , dbp , 1220 __f__cov , DB___f_ )) != 0) 1221 ( t ); 1222 i(( t = `__db_add_covy_t ( v , dbp , 1223 __f_move_cov , DB___f_move )) != 0) 1224 ( t ); 1225 i(( t = `__db_add_covy_t ( v , dbp , 1226 __f_wre_cov , DB___f_wre )) != 0) 1227 ( t ); 1228 i(( t = `__db_add_covy_t ( v , dbp , 1229 __f_me_cov , DB___f_me )) != 0) 1230 ( t ); 1231 i(( t = `__db_add_covy_t ( v , dbp , 1232 __f_me_noundo_cov , DB___f_me_noundo )) != 0) 1233 ( t ); 1234 i(( t = `__db_add_covy_t ( v , dbp , 1235 __f_fe_move_cov , DB___f_fe_move )) != 0) 1236 ( t ); 1238 } } @../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 ( v , db , lp , nud2 , nud3 ) 19 ENV * v ; 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 ( v , 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_ ( v , gp ); 53 } } 60 $__f_move_t ( v , db , lp , nud2 , nud3 ) 61 ENV * v ; 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 ( v , 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_ ( v , gp ); 100 } } 107 $__f_wre_t ( v , db , lp , nud2 , nud3 ) 108 ENV * v ; 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 ( v , 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_ ( v , gp ); 151 } } 158 $__f_me_t ( v , db , lp , nud2 , nud3 ) 159 ENV * v ; 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 ( v , 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_ ( v , gp ); 204 } } 211 $__f_fe_move_t ( v , db , lp , nud2 , nud3 ) 212 ENV * v ; 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 ( v , 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_ ( v , gp ); 258 } } 264 $__f__t ( v , dbp ) 265 ENV * v ; 266 DB_DISTAB * dbp ; 268 t ; 270 i(( t = `__db_add_covy_t ( v , dbp , 271 __f__t , DB___f_ )) != 0) 272 ( t ); 273 i(( t = `__db_add_covy_t ( v , dbp , 274 __f_move_t , DB___f_move )) != 0) 275 ( t ); 276 i(( t = `__db_add_covy_t ( v , dbp , 277 __f_wre_t , DB___f_wre )) != 0) 278 ( t ); 279 i(( t = `__db_add_covy_t ( v , dbp , 280 __f_me_t , DB___f_me )) != 0) 281 ( t ); 282 i(( t = `__db_add_covy_t ( v , dbp , 283 __f_me_t , DB___f_me_noundo )) != 0) 284 ( t ); 285 i(( t = `__db_add_covy_t ( v , dbp , 286 __f_fe_move_t , DB___f_fe_move )) != 0) 287 ( t ); 289 } } @../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_ ( v , txn , fh , me , ame , mode , ags ) 60 ENV * v ; 61 DB_TXN * txn ; 62 DB_FH ** fh ; 63 cڡ * me ; 64 APPNAME ame ; 65 mode ; 66 u_t32_t ags ; 68 DBT da ; 69 DB_FH * fhp ; 70 DB_LSN l ; 71 t ; 72 * _me ; 74 _me = NULL ; 75 fhp = NULL ; 77 i(( t = 78 `__db_ame ( v , ame , me , 0, NULL , & _me )) != 0) 79 ( t ); 81 i( mode == 0) 82 mode = DB_MODE_600 ; 84 i( `DBENV_LOGGING ( v ) 85 #i! `defed ( DEBUG_WOP ) 86 && txn ! NULL 89 `DB_INIT_DBT ( da , me , ` (name) + 1); 90 i(( t = `__f__log ( v , txn , & l , 91 ags | DB_FLUSH , 92 & da , ( u_t32_t ) ame , (u_t32_t) mode )) != 0) 93 r ; 96 `DB_ENV_TEST_RECOVERY ( v , DB_TEST_POSTLOG , t , me ); 98 i( fh = NULL ) 99 fh = & fhp ; 100 t = `__os_ݒ ( 101 v , _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 ( v , fhp ); 107 i( _me ! NULL ) 108 `__os_ ( v , _me ); 109 ( t ); 110 } } 120 $__f_move ( v , txn , feid , me , ame , ags ) 121 ENV * v ; 122 DB_TXN * txn ; 123 u_t8_t * feid ; 124 cڡ * me ; 125 APPNAME ame ; 126 u_t32_t ags ; 128 DBT fdbt , ndbt ; 129 DB_LSN l ; 130 * _me ; 131 t ; 133 _me = NULL ; 135 i(( t = 136 `__db_ame ( v , ame , me , 0, NULL , & _me )) != 0) 137 r ; 139 i(! `IS_REAL_TXN ( txn )) { 140 i( feid ! NULL && ( t = `__memp_me ( 141 v , feid , NULL , _me , NULL, 0)) != 0) 142 r ; 144 i( `DBENV_LOGGING ( v ) 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 ( v , txn , & l , 154 ags , & ndbt , & fdbt , ( u_t32_t ) ame )) != 0) 155 r ; 157 t = `__txn_mevt ( v , txn , _me , feid , 0); 160 r : i( _me ! NULL ) 161 `__os_ ( v , _me ); 162 ( t ); 163 } } 183 $__f_wre ( v , 184 txn , me , ame , fhp , pgsize , go , off , buf , size , imp , ags ) 185 ENV * v ; 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 DBT da , medbt ; 197 DB_LSN l ; 198 size_t nbys ; 199 lol_ݒ , t , t_t ; 200 * _me ; 202 `DB_ASSERT ( v , imp != 0); 204 t = lol_ݒ = 0; 205 _me = NULL ; 207 i(( t = 208 `__db_ame ( v , ame , me , 0, NULL , & _me )) != 0) 209 ( t ); 211 i( `DBENV_LOGGING ( v ) 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 ( v , 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_ݒ ( v , _me , 0, 0, 0, & fhp )) != 0) 229 r ; 230 lol_ݒ = 1; 234 i(( t = `__os_ek ( v , fhp , go , pgsize , off )) != 0) 235 r ; 238 i(( t = `__os_wre ( v , fhp , buf , size , & nbys )) != 0) 239 r ; 241 r : i( lol_ݒ && 242 ( t_t = `__os_ohd ( v , fhp )!0 && t == 0) 243 t = t_t ; 245 i( _me ! NULL ) 246 `__os_ ( v , _me ); 247 ( t ); 248 } } 258 $__f_me ( v , txn , dme , wme , fid , ame , wh_undo , ags ) 259 ENV * v ; 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 DBT fiddbt , w , d ; 269 DB_LSN l ; 270 t ; 271 * n , * o ; 273 o = n = NULL ; 274 i(( t = `__db_ame ( v , ame , dme , 0, NULL , & o )) != 0) 275 r ; 276 i(( t = `__db_ame ( v , ame , wme , 0, NULL , & n )) != 0) 277 r ; 279 i( `DBENV_LOGGING ( v ) 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 ( v , 291 txn , & l , ags | DB_FLUSH , 292 & d , & w , & fiddbt , ( u_t32_t ) ame ); 294 t = `__f_me_noundo_log ( v , 295 txn , & l , ags | DB_FLUSH , 296 & d , & w , & fiddbt , ( u_t32_t ) ame ); 297 i( t != 0) 298 r ; 301 t = `__memp_me ( v , fid , wme , o , n , 0); 303 r : i( o ! NULL ) 304 `__os_ ( v , o ); 305 i( n ! NULL ) 306 `__os_ ( v , 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 (( ENV *, DBT *, DB_LSN *, db_cs , *, )); 59 $__f__cov ( v , db , lp , , fo ) 60 ENV * v ; 61 DBT * db ; 62 DB_LSN * lp ; 63 db_cs ; 64 * fo ; 66 __f__gs * gp ; 67 DB_FH * fhp ; 68 DBMETA * ma ; 69 u_t8_t mbuf [ DBMETASIZE ]; 70 t ; 71 * _me ; 73 `COMPQUIET ( fo , NULL ); 75 _me = NULL ; 76 `REC_PRINT ( __f__t ); 77 `REC_NOOP_INTRO ( __f__ad ); 78 ma = ( DBMETA *) mbuf ; 80 i(( t = `__db_ame ( v , ( APPNAME ) gp -> ame , 81 (cڡ *) gp -> me . da , 0, NULL , & _me )) != 0) 82 out ; 84 i( `DB_UNDO ( )) { 89 i( `__os_ݒ ( v , _me , 0, 0, 0, & fhp ) == 0) { 90 i( `__f_ad_ma ( v , 91 _me , mbuf , DBMETASIZE , fhp , 1, NULL ) == 0 && 92 `__db_chk_ma ( v , NULL , ma , 1) == 0) { 93 i(( t = `__memp_me ( v , 94 ma -> uid , NULL , _me , NULL, 0)) != 0) 95 out ; 97 do_uƚk ; 98 () `__os_ohd ( v , fhp ); 100 do_uƚk : () `__os_uƚk ( v , _me , 0); 101 } i( `DB_REDO ( )) { 102 i(( t = `__os_ݒ ( v , _me , 0, 103 DB_OSO_CREATE , () gp -> mode , & fhp )) == 0) 104 () `__os_ohd ( v , fhp ); 106 out ; 109 * lp = gp -> ev_l ; 111 out : i( _me ! NULL ) 112 `__os_ ( v , _me ); 114 REC_NOOP_CLOSE ; 115 } } 125 $__f_move_cov ( v , db , lp , , fo ) 126 ENV * v ; 127 DBT * db ; 128 DB_LSN * lp ; 129 db_cs ; 130 * fo ; 132 __f_move_gs * gp ; 133 t ; 134 * _me ; 136 `COMPQUIET ( fo , NULL ); 138 _me = NULL ; 139 `REC_PRINT ( __f_move_t ); 140 `REC_NOOP_INTRO ( __f_move_ad ); 142 i(( t = `__db_ame ( v , ( APPNAME ) gp -> ame , 143 (cڡ *) gp -> me . da , 0, NULL , & _me )) != 0) 144 out ; 147 i( `DB_REDO ( )) 148 () `__memp_me ( v , 149 ( u_t8_t *) gp -> fid . da , NULL , _me , NULL, 0); 151 * lp = gp -> ev_l ; 152 out : i( _me ! NULL ) 153 `__os_ ( v , _me ); 154 REC_NOOP_CLOSE ; 155 } } 165 $__f_wre_cov ( v , db , lp , , fo ) 166 ENV * v ; 167 DBT * db ; 168 DB_LSN * lp ; 169 db_cs ; 170 * fo ; 172 __f_wre_gs * gp ; 173 t ; 175 `COMPQUIET ( fo , NULL ); 177 `REC_PRINT ( __f_wre_t ); 178 `REC_NOOP_INTRO ( __f_wre_ad ); 180 t = 0; 181 i( `DB_UNDO ( )) 182 `DB_ASSERT ( v , gp -> ag != 0); 183 i( `DB_REDO ( )) 184 t = `__f_wre ( v , 185 gp -> tx ,rgp-> me . da , ( APPNAME rgp-> ame , 186 NULL , gp -> pgsize ,rgp-> go ,rgp-> offt , 187 gp -> ge . da ,rgp->ge. size ,rgp-> ag , 0); 189 i( t == 0) 190 * lp = gp -> ev_l ; 191 REC_NOOP_CLOSE ; 192 } } 209 $__f_me_cov ( v , db , lp , , fo ) 210 ENV * v ; 211 DBT * db ; 212 DB_LSN * lp ; 213 db_cs ; 214 * fo ; 216 ( `__f_me_cov_t ( v , db , lp , , fo , 1)); 217 } } 220 $__f_me_noundo_cov ( v , db , lp , , fo ) 221 ENV * v ; 222 DBT * db ; 223 DB_LSN * lp ; 224 db_cs ; 225 * fo ; 227 ( `__f_me_cov_t ( v , db , lp , , fo , 0)); 228 } } 231 $__f_me_cov_t ( v , db , lp , , fo , undo ) 232 ENV * v ; 233 DBT * db ; 234 DB_LSN * lp ; 235 db_cs ; 236 * fo ; 237 undo ; 239 __f_me_gs * gp ; 240 DB_FH * fhp ; 241 DBMETA * ma ; 242 u_t8_t * feid , mbuf [ DBMETASIZE ]; 243 t ; 244 * _w , * _d , * c ; 246 `COMPQUIET ( fo , NULL ); 248 fhp = NULL ; 249 ma = ( DBMETA *)& mbuf [0]; 250 t = 0; 251 _w = _d = NULL ; 253 `REC_PRINT ( __f_me_t ); 254 `REC_NOOP_INTRO ( __f_me_ad ); 255 feid = gp ->feid. da ; 257 i(( t = `__db_ame ( v , ( APPNAME ) gp -> ame , 258 (cڡ *) gp -> wme . da , 0, NULL , & _w )) != 0) 259 out ; 260 i(( t = `__db_ame ( v , ( APPNAME ) gp -> ame , 261 (cڡ *) gp -> dme . da , 0, NULL , & _d )) != 0) 262 out ; 269 i( ! DB_TXN_ABORT && o! DB_TXN_APPLY ) { 270 c = `DB_UNDO ( ? _w : _d ; 277 i( `__os_ݒ ( v , c , 0, 0, 0, & fhp ) != 0) 278 de ; 279 i( `__f_ad_ma ( v , 280 c , mbuf , DBMETASIZE , fhp , 1, NULL ) != 0) 281 de ; 282 i( `__db_chk_ma ( v , NULL , ma , 1) != 0) 283 de ; 284 i( `memcmp ( gp -> feid . da , ma -> uid , DB_FILE_ID_LEN ) != 0) 285 de ; 286 () `__os_ohd ( v , fhp ); 287 fhp = NULL ; 288 i( `DB_REDO ( )) { 296 i( `__os_ݒ ( v , _w , 0, 0, 0, & fhp ) == 0 && 297 `__f_ad_ma ( v , c , mbuf , 298 DBMETASIZE , fhp , 1, NULL ) == 0 && 299 `__db_chk_ma ( v , NULL , ma , 1) == 0 && 300 `memcmp ( gp -> feid . da , 301 ma -> uid , DB_FILE_ID_LEN ) != 0) { 302 () `__memp_me ( v , 303 feid , NULL , _d , NULL, 0); 304 de ; 309 i( undo && `DB_UNDO ( )) 310 () `__memp_me ( v , feid , 311 (cڡ *) gp -> dme . da , _w , _d , 0); 312 i( `DB_REDO ( )) 313 () `__memp_me ( v , feid , 314 (cڡ *) gp -> wme . da , _d , _w , 0); 316 de : * lp = gp -> ev_l ; 317 out : i( _w ! NULL ) 318 `__os_ ( v , _w ); 319 i( _d ! NULL ) 320 `__os_ ( v , _d ); 321 i( fhp ! NULL ) 322 () `__os_ohd ( v , fhp ); 324 REC_NOOP_CLOSE ; 325 } } 339 $__f_fe_move_cov ( v , db , lp , , fo ) 340 ENV * v ; 341 DBT * db ; 342 DB_LSN * lp ; 343 db_cs ; 344 * fo ; 346 __f_fe_move_gs * gp ; 347 DBMETA * ma ; 348 DB_FH * fhp ; 349 size_t n ; 350 u_t8_t mbuf [ DBMETASIZE ]; 351 u_t32_t c , t_ ; 352 is_ , is_tmp , t ; 353 * _me ; 355 fhp = NULL ; 356 ma = ( DBMETA *)& mbuf [0]; 357 is_ = is_tmp = 0; 358 _me = NULL ; 359 `REC_PRINT ( __f_fe_move_t ); 360 `REC_NOOP_INTRO ( __f_fe_move_ad ); 366 i( ! DB_TXN_BACKWARD_ROLL && 367 ! DB_TXN_FORWARD_ROLL && o! DB_TXN_APPLY ) 368 de ; 370 i(( t = `__db_ame ( v , 371 ( APPNAME ) gp -> ame ,rgp-> me . da , 0, NULL , & _me )) != 0) 372 out ; 375 n = 0; 376 i( `__os_ݒ ( v , _me , 0, 0, 0, & fhp ) != 0 || 377 ( t = `__f_ad_ma ( v , _me , 378 mbuf , DBMETASIZE , fhp , 1, & n )) != 0) { 384 i( n != 0) 385 out ; 388 c = TXN_EXPECTED ; 394 () `__db_chk_ma ( v , NULL , ma , 1); 395 is_ = 396 `memcmp ( gp -> _fid . da , ma -> uid , DB_FILE_ID_LEN ) == 0; 397 is_tmp = 398 `memcmp ( gp -> tmp_fid . da , ma -> uid , DB_FILE_ID_LEN ) == 0; 400 i(! is_ && ! is_tmp ) 402 c = TXN_IGNORE ; 405 c = TXN_COMMIT ; 407 i( fhp ! NULL ) { 408 () `__os_ohd ( v , fhp ); 409 fhp = NULL ; 412 i( `DB_UNDO ( )) { 414 i(( t = `__db_txi_upde ( v , 415 fo , gp -> chd , c , NULL , & t_ , 1)) != 0) 416 out ; 417 } i( `DB_REDO ( )) { 422 i( c = TXN_COMMIT ) 423 () `__memp_me ( v , 424 is_ ? gp -> _fid . da :rgp-> tmp_fid .data, 425 NULL , _me , NULL, 0); 428 de : * lp = gp -> ev_l ; 429 t = 0; 431 out : i( _me ! NULL ) 432 `__os_ ( v , _me ); 433 i( fhp ! NULL ) 434 () `__os_ohd ( v , fhp ); 435 REC_NOOP_CLOSE ; 436 } } @../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 )-> v , &(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 )-> v , ( F ))) != 0) { \ 79 i( t == 0) \ 80 t = t_t ; \ 81 r ; \ 83 ( F NULL ; \ 85 } ) 99 $__f_lock_hd ( v , dbp , lock , mode , ockp , ags ) 100 ENV * v ; 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 ( v ) || 113 `F_ISSET ( dbp , DB_AM_COMPENSATE | DB_AM_RECOVER )) 120 i( `IS_RECOVERING ( v )) 121 ( ockp = NULL ? 0 : `__ENV_LPUT ( v , *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 ( v , ags ); 131 i( ockp = NULL ) 132 t = `__lock_g ( v , 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 ( v , 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_THREAD_INFO * ; 203 DB_TXN * txn ; 204 cڡ * me ; 205 mode ; 206 u_t32_t ags , * tidp ; 208 DBTYPE ve_ty ; 209 DB_FH * fhp ; 210 DB_LOCK ock ; 211 DB_LOCKER * lock ; 212 DB_TXN * xn ; 213 ENV * v ; 214 size_t n ; 215 u_t32_t dags , oags ; 216 u_t8_t mbuf [ DBMETASIZE ]; 217 d_lock , _ok , t , s , t_t , tmp_d ; 218 untg , was_v ; 219 * _me , * _tmame , * tmame ; 221 * tidp = TXN_INVALID ; 223 v = dbp ->env; 224 fhp = NULL ; 225 `LOCK_INIT ( ock ); 226 xn = NULL ; 227 d_lock = tmp_d = untg = was_v = 0; 228 _me = _tmame = tmame = NULL ; 229 dags = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0; 231 t = 0; 232 s = 0; 233 ve_ty = dbp -> ty ; 240 i( `LOCKING_ON ( v ) && 241 ! `F_ISSET ( dbp , DB_AM_COMPENSATE ) && 242 ! `F_ISSET ( dbp , DB_AM_RECOVER ) && 243 dbp -> lock = DB_LOCK_INVALIDID ) { 244 i(( t = `__lock_id ( v , NULL , & dbp -> lock )) != 0) 245 r ; 246 d_lock = 1; 248 `LOCK_INIT ( dbp -> hd_lock ); 250 lock = txn = NULL ? dbp ->locker :xn->locker; 252 oags = 0; 253 i( `F_ISSET ( dbp , DB_AM_INMEM )) 254 _me = (*) me ; 257 i(( t = `__db_ame ( v , 258 DB_APP_DATA , me , 0, NULL , & _me )) != 0) 259 r ; 262 i( mode == 0) 263 mode = DB_MODE_660 ; 265 i( `LF_ISSET ( DB_RDONLY )) 266 oags | DB_OSO_RDONLY ; 267 i( `LF_ISSET ( DB_TRUNCATE )) 268 oags | DB_OSO_TRUNC ; 271 s = 0; 272 _ok = `LF_ISSET ( DB_CREATE ); 273 `LF_CLR ( DB_CREATE ); 275 y : 282 i(++ s > DB_RETRY ) { 283 `__db_rx ( v , "__fop_file_setup: Retryimit (%d)xceeded", 284 DB_RETRY ); 285 r ; 287 i(! `F_ISSET ( dbp , DB_AM_COMPENSATE && !F_ISSET(dbp, DB_AM_RECOVER )) 288 `GET_ENVLOCK ( v , lock , & ock ); 289 i( me = NULL ) 290 t = ENOENT ; 291 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 292 t = `__v_mpo ( dbp , me , ags ); 302 i( t = EINVAL ) { 303 was_v = 1; 304 ve_ty = dbp -> ty ; 305 dbp -> ty = DB_UNKNOWN ; 306 t = `__v_mpo ( dbp , me , ags ); 307 dbp -> ty = ve_ty ; 310 t = `__os_exis ( v , _me , NULL ); 312 i( t == 0) { 330 ݒ : i(! `F_ISSET ( dbp , DB_AM_INMEM && ( t = 331 `__os_ݒ ( v , _me , 0, oags , 0, & fhp )) != 0) 332 r ; 335 i( `LF_ISSET ( DB_TRUNCATE )) { 336 i( `LF_ISSET ( DB_EXCL )) { 338 t = EEXIST ; 339 r ; 341 tmame = (*) me ; 342 t2 ; 346 i( `F_ISSET ( dbp , DB_AM_INMEM )) 347 t = `__f_mem_ad_ma ( dbp , txn , me , ags ); 349 t = `__f_ad_ma ( v , _me , mbuf , 350 ( mbuf ), fhp , 351 `LF_ISSET ( DB_FCNTL_LOCKING && txn = NULL ? 1 : 0, 352 & n ); 355 i( t !0 && n =0 && txn = NULL ) { 356 i( `LF_ISSET ( DB_EXCL )) { 361 t = EEXIST ; 362 r ; 364 tmame = (*) me ; 365 t2 ; 369 i( t == 0) 370 t = `__db_ma_tup ( v , dbp , 371 _me , ( DBMETA *) mbuf , ags , 1); 376 i( t != 0) 377 r ; 380 i(( t = `__f_lock_hd ( v , 381 dbp , lock , DB_LOCK_READ , NULL , DB_LOCK_NOWAIT )) == 0) { 382 i(( t = `__ENV_LPUT ( v , ock )) != 0) 383 r ; 384 } i( t ! DB_LOCK_NOTGRANTED || 385 ( txn ! NULL && `F_ISSET xn, TXN_NOWAIT ))) 386 r ; 402 `DB_ASSERT ( v , ! `LF_ISSET ( DB_FCNTL_LOCKING )); 403 i(! `F_ISSET ( dbp , DB_AM_INMEM )) { 404 i(( t = `__os_ohd ( v , fhp )) != 0) 405 r ; 406 fhp = NULL ; 408 i(( t = `__f_lock_hd ( v , 409 dbp , lock , DB_LOCK_READ , & ock , 0)) != 0) { 410 i( `F_ISSET ( dbp , DB_AM_INMEM )) 411 `RESET_MPF ( dbp , 0); 412 r ; 429 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 430 i(( t = `__db_esh ( dbp , 431 txn , DB_NOSYNC , NULL , 1)) != 0) 432 r ; 433 t = `__v_mpo ( dbp , me , ags ); 435 t = 436 `__os_ݒ ( v , _me , 0, 0, 0, & fhp ); 438 i( t != 0) { 439 i(( t = 440 `__ENV_LPUT ( v , dbp -> hd_lock )) != 0) { 441 `LOCK_INIT ( dbp -> hd_lock ); 442 r ; 444 y ; 447 dbp -> ty = ve_ty ; 448 i( `F_ISSET ( dbp , DB_AM_INMEM )) 449 t = `__f_mem_ad_ma ( dbp , 450 txn , me , ags ); 451 i(( t = 452 `__f_ad_ma ( v , _me , mbuf , 453 ( mbuf ), fhp , 454 `LF_ISSET ( DB_FCNTL_LOCKING && txn = NULL ? 1 : 0, 455 & n )) != 0 || 456 ( t = `__db_ma_tup ( v , dbp , _me , 457 ( DBMETA *) mbuf , ags , DB_CHK_META )) != 0) 458 r ; 473 i( `F_ISSET ( dbp , DB_AM_IN_RENAME )) { 474 was_v = 0; 475 i( _ok ) { 476 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 477 `RESET_MPF ( dbp , DB_MPOOL_DISCARD ); 478 } i(( t = 479 `__os_ohd ( v , fhp )) != 0) 480 r ; 481 `LF_SET ( DB_CREATE ); 482 ; 484 t = ENOENT ; 485 r ; 490 i( was_v ) { 491 t = EINVAL ; 492 r ; 502 i( `LF_ISSET ( DB_EXCL )) { 503 t = `__ENV_LPUT ( v , dbp -> hd_lock ); 504 `LOCK_INIT ( dbp -> hd_lock ); 505 i( t == 0) 506 t = EEXIST ; 507 r ; 509 de ; 513 #ifdef HAVE_VXWORKS 518 i(! _ok ) 520 i(! _ok || t ! ENOENT ) 522 r ; 523 `LF_SET ( DB_CREATE ); 524 t = 0; 533 i(! `F_ISSET ( dbp , DB_AM_INMEM ) && 534 ( t = `__ENV_LPUT ( v , ock )) != 0) 535 r ; 537 : i( txn ! NULL && `IS_REP_CLIENT ( v ) && 538 ! `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 539 `__db_rx ( v , 541 t = EINVAL ; 542 r ; 545 i( `F_ISSET ( dbp , DB_AM_INMEM )) 546 t = `__f_mem_ ( dbp , me , txn , ags ); 548 i(( t = `__db_backup_me ( v , me , txn , & tmame )) != 0) 549 r ; 550 i( `TXN_ON ( v && txn ! NULL && 551 ( t = `__txn_beg ( v , NULL , txn , & xn , 0)) != 0) 552 r ; 553 i(( t = `__f_ ( v , 554 xn , & fhp , tmame , DB_APP_DATA , mode , dags )) != 0) { 561 i(! `TXN_ON ( v && t = EEXIST ) { 562 `__os_ ( v , tmame ); 563 tmame = NULL ; 564 `__os_yld ( v , 1, 0); 565 y ; 567 r ; 569 tmp_d = 1; 572 t2 : i(! `F_ISSET ( dbp , DB_AM_INMEM )) { 573 i(( t = `__db_ame ( v , 574 DB_APP_DATA , tmame , 0, NULL , & _tmame )) != 0) 575 r ; 578 i( dbp -> pgsize == 0 && 579 ( t = `__f_t_pgsize ( dbp , fhp , _tmame )) != 0) 580 rmsg ; 583 i(( t = 584 `__os_feid ( v , _tmame , 1, dbp -> feid )) != 0) 585 rmsg ; 588 i(( t = `__db_w_fe ( dbp , , 589 `F_ISSET ( dbp , DB_AM_INMEM ? txn : xn , fhp , tmame )) != 0) 590 r ; 596 `CLOSE_HANDLE ( dbp , fhp ); 604 i(! `F_ISSET ( dbp , DB_AM_COMPENSATE ) && 605 ! `F_ISSET ( dbp , DB_AM_RECOVER && ! `LOCK_ISSET ( ock )) 606 `GET_ENVLOCK ( v , lock , & ock ); 608 i( `F_ISSET ( dbp , DB_AM_IN_RENAME )) { 609 `F_CLR ( dbp , DB_AM_IN_RENAME ); 610 `__txn_mm ( v , txn , _me ); 611 } i( me = tmame ) { 613 } i(! `F_ISSET ( dbp , DB_AM_INMEM ) && 614 `__os_exis ( v , _me , NULL ) == 0) { 619 () `__f_move ( v , 620 NULL , dbp -> feid , tmame , DB_APP_DATA , dags ); 621 () `__ENV_LPUT ( v , dbp -> hd_lock ); 622 `LOCK_INIT ( dbp -> hd_lock ); 624 i( xn ! NULL ) { 625 t = `__txn_abt ( xn ); 626 xn = NULL ; 628 i( t != 0) 629 r ; 630 ݒ ; 633 i( me ! NULL && ( t = `__f_lock_hd ( v , 634 dbp , lock , DB_LOCK_WRITE , & ock , `NOWAIT_FLAG ( txn ))) != 0) 635 r ; 636 i( tmame ! NULL &&mam! me && ( t = `__f_me ( v , 637 xn , tmame , me , dbp -> feid , DB_APP_DATA , 1, dags )) != 0) 638 r ; 640 i( xn ! NULL ) { 641 * tidp = xn -> txnid ; 642 t = `__txn_comm ( xn , 0); 643 xn = NULL ; 645 * tidp = TXN_INVALID ; 647 i( t != 0) 648 r ; 650 `F_SET ( dbp , DB_AM_CREATED ); 653 rmsg : `__db_r ( v , t , "%s", me ); 655 r : `CLOSE_HANDLE ( dbp , fhp ); 656 i( xn ! NULL ) 657 () `__txn_abt ( xn ); 658 i( tmp_d && txn = NULL ) 659 () `__f_move ( v , 660 NULL , NULL, tmame , DB_APP_DATA , dags ); 661 i( txn = NULL ) 662 () `__ENV_LPUT ( v , dbp -> hd_lock ); 663 () `__ENV_LPUT ( v , ock ); 664 i( d_lock ) { 665 () `__lock_id_ ( v , dbp -> lock ); 666 dbp -> lock = NULL ; 670 de : 675 i(! untg && tmame ! NULL &&mam! me ) 676 `__os_ ( v , tmame ); 677 i( _me ! me &&l_m! NULL ) 678 `__os_ ( v , _me ); 679 i( _tmame ! NULL ) 680 `__os_ ( v , _tmame ); 681 `CLOSE_HANDLE ( dbp , fhp ); 683 ( t ); 684 } } 691 $__f_t_pgsize ( dbp , fhp , me ) 692 DB * dbp ; 693 DB_FH * fhp ; 694 cڡ * me ; 696 ENV * v ; 697 u_t32_t isize ; 698 t ; 700 v = dbp ->env; 708 i(( t = `__os_iofo ( v , me , fhp , NULL , NULL, & isize )) != 0) { 709 `__db_r ( v , t , "%s", me ); 710 ( t ); 712 i( isize < 512) 713 isize = 512; 714 i( isize > 16 * 1024) 715 isize = 16 * 1024; 723 i(! `IS_VALID_PAGESIZE ( isize )) 724 isize = DB_DEF_IOSIZE ; 726 dbp -> pgsize = isize ; 727 `F_SET ( dbp , DB_AM_PGDEF ); 730 } } 748 $__f_subdb_tup ( dbp , , txn , mme , me , mode , ags ) 749 DB * dbp ; 750 DB_THREAD_INFO * ; 751 DB_TXN * txn ; 752 cڡ * mme , * me ; 753 mode ; 754 u_t32_t ags ; 756 DB * mdbp ; 757 ENV * v ; 758 db_lockmode_t lkmode ; 759 t , t_t ; 761 mdbp = NULL ; 762 v = dbp ->env; 764 i(( t = `__db_ma_ݒ ( dbp , 765 , txn , mme , ags , mode , & mdbp )) != 0) 766 ( t ); 772 i( `F_ISSET ( mdbp , DB_AM_CREATED )) 773 `F_SET ( mdbp , DB_AM_DISCARD ); 779 i( `LF_ISSET ( DB_FCNTL_LOCKING )) { 780 dbp -> ved_ݒ_fhp = mdbp ->saved_open_fhp; 781 mdbp -> ved_ݒ_fhp = NULL ; 785 dbp -> pgsize = mdbp ->pgsize; 786 `F_SET ( dbp , DB_AM_SUBDB ); 788 i( me ! NULL && ( t = `__db_ma_upde ( mdbp , dbp , 789 , txn , me , dbp -> ty , MU_OPEN , NULL , ags )) != 0) 790 r ; 799 dbp -> lock = mdbp ->locker; 800 mdbp -> lock = NULL ; 802 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTLOG , t , mme ); 810 `memy ( dbp -> feid , mdbp ->feid, DB_FILE_ID_LEN ); 811 lkmode = `F_ISSET ( dbp , DB_AM_CREATED || `LF_ISSET ( DB_WRITEOPEN ) ? 812 DB_LOCK_WRITE : DB_LOCK_READ ; 813 i(( t = `__f_lock_hd ( v , dbp , 814 txn = NULL ? dbp -> lock :xn->lock, lkmode , NULL, 815 `NOWAIT_FLAG ( txn ))) != 0) 816 r ; 818 i(( t = `__db__subdb ( mdbp , dbp , me , , txn )) != 0) { 823 i( `F_ISSET ( dbp , DB_AM_CREATED && txn = NULL ) 824 () `__db_ma_upde ( mdbp , dbp , 825 , txn , me , dbp -> ty , MU_REMOVE , NULL , 0); 826 `F_CLR ( dbp , DB_AM_CREATED ); 827 r ; 839 `F_CLR ( dbp , DB_AM_SWAP ); 840 `F_SET ( dbp , `F_ISSET ( mdbp , DB_AM_SWAP )); 847 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTLOGMETA , t , mme ); 848 `DB_TEST_RECOVERY ( dbp , DB_TEST_POSTSYNC , t , mme ); 854 i( `F_ISSET ( mdbp , DB_AM_CREATED )) { 855 `F_SET ( dbp , DB_AM_CREATED_MSTR ); 856 `F_CLR ( mdbp , DB_AM_DISCARD ); 860 r : 861 DB_TEST_RECOVERY_LABEL 862 i( txn = NULL ) 863 () `__ENV_LPUT ( v , dbp -> hd_lock ); 876 i(! `F_ISSET ( dbp , DB_AM_RECOVER && `IS_REAL_TXN ( txn )) { 878 `__txn_mlock ( v , 879 txn , & mdbp -> hd_lock , DB_LOCK_INVALIDID ); 882 i(( t_t = `__txn_lockevt ( v , txn , dbp , 883 & mdbp -> hd_lock , dbp -> lock = NULL ? 884 mdbp -> lock : dbp ->lock)!0 && t == 0) 885 t = t_t ; 887 `LOCK_INIT ( mdbp -> hd_lock ); 895 i( txn = NULL || `F_ISSET xn, TXN_CDSGROUP ) || 896 `F_ISSET ( mdbp , DB_AM_RECOVER )) { 897 i(( t_t = `__db_o ( mdbp , txn , 898 `F_ISSET ( dbp , DB_AM_CREATED_MSTR ? 0 : DB_NOSYNC )) != 0 && 899 t == 0) 900 t = t_t ; 902 i( `F_ISSET ( dbp , DB_AM_CREATED_MSTR ) && 903 ( t_t = `__memp_fsync ( mdbp -> mpf )!0 && t == 0) 904 t = t_t ; 906 i(( t_t = 907 `__txn_oevt ( v , txn , mdbp )!0 && t == 0) 908 t = t_t ; 911 ( t ); 912 } } 922 $__f_move_tup ( dbp , txn , me , ags ) 923 DB * dbp ; 924 DB_TXN * txn ; 925 cڡ * me ; 926 u_t32_t ags ; 928 DB_FH * fhp ; 929 DB_LOCK ock ; 930 ENV * v ; 931 u_t8_t mbuf [ DBMETASIZE ]; 932 t ; 934 `COMPQUIET ( ags , 0); 936 v = dbp ->env; 938 `LOCK_INIT ( ock ); 939 fhp = NULL ; 940 t = 0; 943 y : i( `LOCKING_ON ( v )) { 944 i( txn ! NULL ) 945 dbp -> lock = txn ->locker; 946 i( dbp -> lock = DB_LOCK_INVALIDID ) { 947 i(( t = `__lock_id ( v , NULL , & dbp -> lock )) != 0) 948 r ; 962 fhp = dbp -> ved_ݒ_fhp ; 963 `DB_ASSERT ( v , `LF_ISSET ( DB_FCNTL_LOCKING || fhp = NULL ); 970 `GET_ENVLOCK ( v , dbp -> lock , & ock ); 973 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 974 i(( t = `__v_mpo ( dbp , me , ags )) == 0) 975 t = `__os_rdup ( v , me , & dbp -> dme ); 976 } i( fhp = NULL ) 977 t = `__os_ݒ ( v , me , 0, DB_OSO_RDONLY , 0, & fhp ); 978 i( t != 0) 979 r ; 982 i( `F_ISSET ( dbp , DB_AM_INMEM )) 983 t = `__f_mem_ad_ma ( dbp , txn , me , ags ); 984 i(( t = `__f_ad_ma ( v , 985 me , mbuf , (mbuf), fhp , 0, NULL )) == 0) 986 t = `__db_ma_tup ( v , dbp , 987 me , ( DBMETA *) mbuf , ags , DB_CHK_META | DB_CHK_NOLSN ); 988 i( t != 0) 989 r ; 997 i(( t = `__f_lock_hd ( v , 998 dbp , dbp-> lock , DB_LOCK_WRITE , NULL , DB_LOCK_NOWAIT )) != 0) { 1003 i(! `F_ISSET ( dbp , DB_AM_INMEM && ! `LF_ISSET ( DB_FCNTL_LOCKING )) { 1004 () `__os_ohd ( v , fhp ); 1005 fhp = NULL ; 1007 i( t ! DB_LOCK_NOTGRANTED || 1008 ( txn ! NULL && `F_ISSET xn, TXN_NOWAIT ))) 1009 r ; 1010 i(( t = `__f_lock_hd ( v , 1011 dbp , dbp-> lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1012 r ; 1014 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 1015 () `__lock_put ( v , & dbp -> hd_lock ); 1016 () `__db_esh ( dbp , txn , DB_NOSYNC , NULL , 1); 1018 i( txn ! NULL ) 1019 dbp -> lock = NULL ; 1020 () `__db_esh ( dbp , txn , DB_NOSYNC , NULL , 0); 1022 y ; 1023 } i(( t = `__ENV_LPUT ( v , ock )) != 0) 1024 r ; 1025 i( `F_ISSET ( dbp , DB_AM_IN_RENAME )) 1026 t = ENOENT ; 1029 r : () `__ENV_LPUT ( v , ock ); 1031 i( fhp ! NULL && ! `LF_ISSET ( DB_FCNTL_LOCKING )) 1032 () `__os_ohd ( v , fhp ); 1041 i( t =0 && ! `F_ISSET ( dbp , DB_AM_INMEM )) 1042 `F_SET ( dbp , DB_AM_DISCARD ); 1043 ( t ); 1044 } } 1054 $__f_ad_ma ( v , me , buf , size , fhp , rok , nby ) 1055 ENV * v ; 1056 cڡ * me ; 1057 u_t8_t * buf ; 1058 size_t size ; 1059 DB_FH * fhp ; 1060 rok ; 1061 size_t * nby ; 1063 size_t ; 1064 t ; 1070 i( nby ! NULL ) 1071 * nby = 0; 1073 = 0; 1074 t = `__os_ad ( v , fhp , buf , size , & ); 1075 i( nby ! NULL ) 1076 * nby = ; 1078 i( t != 0) { 1079 i(! rok ) 1080 `__db_r ( v , t , "%s", me ); 1081 r ; 1084 i( ! size ) { 1085 i(! rok ) 1086 `__db_rx ( v , 1087 "%s: uxed fty ofm", me ); 1088 t = EINVAL ; 1091 r : 1092 ( t ); 1093 } } 1105 $__f_dummy ( dbp , txn , d , w , ags ) 1106 DB * dbp ; 1107 DB_TXN * txn ; 1108 cڡ * d , * w ; 1109 u_t32_t ags ; 1111 DB * tmpdbp ; 1112 DB_TXN * xn ; 1113 ENV * v ; 1114 * back ; 1115 t , t_t ; 1116 u_t8_t mbuf [ DBMETASIZE ]; 1118 v = dbp ->env; 1119 back = NULL ; 1120 xn = NULL ; 1121 tmpdbp = NULL ; 1123 `DB_ASSERT ( v , txn ! NULL ); 1130 i( `TXN_ON ( v ) && 1131 ( t = `__txn_beg ( v , NULL , txn , & xn , 0)) != 0) 1132 r ; 1135 i(( t = `__db_backup_me ( v , w , xn , & back )) != 0) 1136 r ; 1138 i(( t = `__db__ (& tmpdbp , v , 0)) != 0) 1139 r ; 1141 `memt ( mbuf , 0, (mbuf)); 1142 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 1143 `__f_mem_dummy ( tmpdbp , xn , back , mbuf ) : 1144 `__f_disk_dummy ( tmpdbp , xn , back , mbuf , ags ); 1146 i( t != 0) 1147 r ; 1149 t = `F_ISSET ( dbp , DB_AM_INMEM ) ? 1150 `__f_mem_sw ( dbp , tmpdbp , xn , d , w , back , txn -> lock ) : 1151 `__f_disk_sw ( dbp , 1152 tmpdbp , xn , d , w , back , txn -> lock , ags ); 1153 xn = NULL ; 1154 i( t != 0) 1155 r ; 1157 r : i( xn ! NULL ) 1158 () `__txn_abt ( xn ); 1159 i( tmpdbp ! NULL && 1160 ( t_t = `__db_o ( tmpdbp , NULL , 0)!0 && t == 0) 1161 t = t_t ; 1162 i( back ! NULL ) 1163 `__os_ ( v , back ); 1164 ( t ); 1165 } } 1177 $__f_dbme ( dbp , d , w ) 1178 DB * dbp ; 1179 cڡ * d , * w ; 1181 DB_LOCK ock ; 1182 ENV * v ; 1183 * _w , * _d ; 1184 t , t_t ; 1186 v = dbp ->env; 1187 _w = NULL ; 1188 _d = NULL ; 1189 `LOCK_INIT ( ock ); 1191 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 1192 _w = (*) w ; 1193 _d = (*) d ; 1196 i(( t = `__db_ame ( v , 1197 DB_APP_DATA , w , 0, NULL , & _w )) != 0) 1198 r ; 1200 i(( t = `__db_ame ( v , 1201 DB_APP_DATA , d , 0, NULL , & _d )) != 0) 1202 r ; 1211 `GET_ENVLOCK ( v , dbp -> lock , & ock ); 1212 t = `F_ISSET ( dbp , DB_AM_INMEM ? ENOENT : 1213 `__os_exis ( v , _w , NULL ); 1215 i( t == 0) { 1216 t = EEXIST ; 1217 `__db_rx ( v , "me: f%exis", _w ); 1218 r ; 1221 t = `__memp_me ( v , 1222 dbp -> feid , w , _d , _w , `F_ISSET (dbp, DB_AM_INMEM )); 1224 r : i(( t_t = `__ENV_LPUT ( v , ock )!0 && t == 0) 1225 t = t_t ; 1226 i(! `F_ISSET ( dbp , DB_AM_INMEM && _d ! NULL ) 1227 `__os_ ( v , _d ); 1228 i(! `F_ISSET ( dbp , DB_AM_INMEM && _w ! NULL ) 1229 `__os_ ( v , _w ); 1230 ( t ); 1231 } } 1234 $__f_mem_ ( dbp , me , txn , ags ) 1235 DB * dbp ; 1236 cڡ * me ; 1237 DB_TXN * txn ; 1238 u_t32_t ags ; 1240 DBT fid_dbt , me_dbt ; 1241 DB_LSN l ; 1242 ENV * v ; 1243 t ; 1244 t32_t lfid ; 1245 u_t32_t * p32 ; 1247 v = dbp ->env; 1249 `MAKE_INMEM ( dbp ); 1252 i( dbp -> pgsize == 0) 1253 dbp -> pgsize = DB_DEF_IOSIZE ; 1266 i( me = NULL ) { 1267 i( `LOCKING_ON ( v && ( t = 1268 `__lock_id ( v , ( u_t32_t *) dbp -> feid , NULL )) != 0) 1269 r ; 1271 p32 = ( u_t32_t *)(& dbp -> feid [0]); 1272 `__os_unique_id ( v , p32 ); 1273 p32 ++; 1274 () `y ( 1275 (*) p32 , me , DB_FILE_ID_LEN - ( u_t32_t )); 1276 dbp -> erve_fid = 1; 1278 i( `DBENV_LOGGING ( v ) && 1279 #i! `defed ( DEBUG_WOP && !defed( DIAGNOSTIC ) 1280 txn ! NULL && 1282 dbp -> log_fame ! NULL ) 1283 `memy ( dbp -> log_fame -> ufid , 1284 dbp -> feid , DB_FILE_ID_LEN ); 1288 i(( t = `__memp_t_feid ( dbp -> mpf , dbp-> feid )) != 0) 1289 r ; 1291 i(( t = `__v_mpo ( dbp , me , ags )) != 0) 1292 r ; 1294 i( `DBENV_LOGGING ( v ) && 1295 #i! `defed ( DEBUG_WOP ) 1296 txn ! NULL && 1298 me ! NULL ) { 1299 `DB_INIT_DBT ( me_dbt , me , ` (name) + 1); 1300 `memt (& fid_dbt , 0, (fid_dbt)); 1301 fid_dbt . da = dbp -> feid ; 1302 fid_dbt . size = DB_FILE_ID_LEN ; 1303 lfid = dbp -> log_fame = NULL ? 1304 DB_LOGFILEID_INVALID : dbp -> log_fame -> id ; 1305 i(( t = `__d_mem__log ( v , txn , 1306 & l , 0, lfid , & me_dbt , & fid_dbt , dbp -> pgsize )) != 0) 1307 r ; 1310 `F_SET ( dbp , DB_AM_CREATED ); 1312 r : 1313 ( t ); 1314 } } 1317 $__f_mem_ad_ma ( dbp , txn , me , ags ) 1318 DB * dbp ; 1319 DB_TXN * txn ; 1320 cڡ * me ; 1321 u_t32_t ags ; 1323 DBMETA * m ; 1324 DB_THREAD_INFO * ; 1325 db_pgno_t pgno ; 1326 t , t_t ; 1328 i( txn = NULL ) 1329 `ENV_GET_THREAD_INFO ( dbp -> v , ); 1331 = txn -> thad_fo ; 1333 pgno = PGNO_BASE_MD ; 1334 i(( t = `__memp_fg ( dbp -> mpf , & pgno , , txn , 0, & m )) != 0) 1335 ( t ); 1336 t = `__db_ma_tup ( dbp -> v , dbp, me , m , ags , 1); 1338 i(( t_t = 1339 `__memp_ut ( dbp -> mpf , , m , dbp-> iܙy )&& t == 0) 1340 t = t_t ; 1342 ( t ); 1343 } } 1346 $__f_disk_dummy ( dbp , txn , me , mbuf , ags ) 1347 DB * dbp ; 1348 DB_TXN * txn ; 1349 cڡ * me ; 1350 u_t8_t * mbuf ; 1351 u_t32_t ags ; 1353 ENV * v ; 1354 t ; 1355 * me ; 1356 u_t32_t dags ; 1358 me = NULL ; 1359 v = dbp ->env; 1360 dags = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0; 1362 i(( t = `__db_ame ( v , 1363 DB_APP_DATA , me , ags , NULL , & me )) != 0) 1364 r ; 1366 i(( t = `__f_ ( v , 1367 txn , NULL , me , DB_APP_DATA , 0, dags )) != 0) 1368 r ; 1370 i(( t = 1371 `__os_feid ( v , me , 1, (( DBMETA *) mbuf )-> uid )) != 0) 1372 r ; 1374 (( DBMETA *) mbuf )-> magic = DB_RENAMEMAGIC ; 1375 i(( t = `__f_wre ( v , txn , me , 1376 DB_APP_DATA , NULL , 0, 0, 0, mbuf , DBMETASIZE , 1, dags )) != 0) 1377 r ; 1379 `memy ( dbp -> feid , (( DBMETA *) mbuf )-> uid , DB_FILE_ID_LEN ); 1381 r : i( me ! NULL ) 1382 `__os_ ( v , me ); 1384 ( t ); 1385 } } 1388 $__f_mem_dummy ( dbp , txn , me , mbuf ) 1389 DB * dbp ; 1390 DB_TXN * txn ; 1391 cڡ * me ; 1392 u_t8_t * mbuf ; 1394 DBMETA * m ; 1395 DB_THREAD_INFO * ; 1396 db_pgno_t pgno ; 1397 t , t_t ; 1399 i(( t = `__f_mem_ ( dbp , me , txn , DB_CREATE )) != 0) 1400 ( t ); 1401 i( txn = NULL ) 1402 `ENV_GET_THREAD_INFO ( dbp -> v , ); 1404 = txn -> thad_fo ; 1406 pgno = PGNO_BASE_MD ; 1407 i(( t = `__memp_fg ( dbp -> mpf , & pgno , , txn , 1408 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & m )) != 0) 1409 ( t ); 1411 i( m -> magic != 0) 1412 t = EEXIST ; 1414 m -> magic = DB_RENAMEMAGIC ; 1417 `memy ( m -> uid , dbp -> feid , DB_FILE_ID_LEN ); 1419 i(( t_t = `__memp_ut ( dbp -> mpf , , m , 1420 t =0 ? dbp -> iܙy : DB_PRIORITY_VERY_LOW )) != 0 &&et == 0) 1421 t = t_t ; 1423 i( t != 0) 1424 r ; 1426 (( DBMETA *) mbuf )-> magic = DB_RENAMEMAGIC ; 1428 r : ( t ); 1429 } } 1432 $__f_disk_sw ( dbp , tmpdbp , txn , d , w , back , lock , ags ) 1433 DB * dbp , * tmpdbp ; 1434 DB_TXN * txn ; 1435 cڡ * d , * w , * back ; 1436 DB_LOCKER * lock ; 1437 u_t32_t ags ; 1439 DBT fiddbt , medbt , tmpdbt ; 1440 DB_FH * fhp ; 1441 DB_LOCK ock ; 1442 DB_LSN l ; 1443 DB_TXN * ; 1444 ENV * v ; 1445 u_t8_t mbuf [ DBMETASIZE ]; 1446 u_t32_t chd_txnid , dags ; 1447 t , t_t ; 1448 * d , * w ; 1450 v = dbp ->env; 1451 `DB_ASSERT ( v , txn ! NULL ); 1452 `DB_ASSERT ( v , d ! NULL ); 1454 d = w = NULL ; 1455 `LOCK_INIT ( ock ); 1456 fhp = NULL ; 1457 dags = `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0; 1459 i(( t = 1460 `__db_ame ( v , DB_APP_DATA , w , 0, NULL , & w )) != 0) 1461 r ; 1464 y : `GET_ENVLOCK ( v , lock , & ock ); 1465 i( `__os_exis ( v , w , NULL ) == 0) { 1472 i(( t = `__os_ݒ ( v , w , 0, 0, 0, & fhp )) != 0) 1473 r ; 1474 i(( t = `__f_ad_ma ( v , 1475 w , mbuf , (mbuf), fhp , 0, NULL )) != 0 || 1476 ( t = `__db_ma_tup ( v , 1477 tmpdbp , w , ( DBMETA *) mbuf , 0, 1)) != 0) { 1478 t = EEXIST ; 1479 r ; 1481 t = `__os_ohd ( v , fhp ); 1482 fhp = NULL ; 1483 i( t != 0) 1484 r ; 1512 i(( t = `__f_lock_hd ( v , 1513 tmpdbp , lock , DB_LOCK_READ , NULL , DB_LOCK_NOWAIT )) != 0) { 1518 i(( t = `__f_lock_hd ( v , tmpdbp , 1519 lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1520 r ; 1521 i(( t = 1522 `__lock_put ( v , & tmpdbp -> hd_lock )) != 0) 1523 r ; 1524 i(( t = `__db_esh ( tmpdbp , NULL , 0, NULL, 0)) != 0) 1525 r ; 1526 y ; 1530 t = `__f_lock_hd ( v , 1531 tmpdbp , lock , DB_LOCK_WRITE , 1532 NULL , DB_LOCK_UPGRADE | DB_LOCK_NOWAIT ); 1533 i( t != 0) { 1538 () `__lock_put ( v , & tmpdbp -> hd_lock ); 1539 t = EEXIST ; 1540 } i( `F_ISSET ( tmpdbp , DB_AM_IN_RENAME )) 1542 t = 0; 1544 () `__lock_put ( v , & tmpdbp -> hd_lock ); 1545 t = EEXIST ; 1547 i( t != 0) 1548 r ; 1555 i(( t = `__f_me ( v , 1556 txn , d , w , dbp -> feid , DB_APP_DATA , 1, dags )) != 0) 1557 r ; 1558 i(( t = `__f_me ( v , 1559 txn , back , d , tmpdbp -> feid , DB_APP_DATA , 0, dags )) != 0) 1560 r ; 1561 i(( t = `__f_lock_hd ( v , 1562 tmpdbp , lock , DB_LOCK_WRITE , & ock , `NOWAIT_FLAG ( txn ))) != 0) 1563 r ; 1570 `LOCK_INIT ( tmpdbp -> hd_lock ); 1573 chd_txnid = txn -> txnid ; 1574 = txn ->parent; 1575 t = `__txn_comm ( txn , 0); 1576 txn = NULL ; 1579 `memt (& fiddbt , 0, (fiddbt)); 1580 fiddbt . da = dbp -> feid ; 1581 fiddbt . size = DB_FILE_ID_LEN ; 1582 `memt (& tmpdbt , 0, ( fiddbt )); 1583 tmpdbt . da = tmpdbp -> feid ; 1584 tmpdbt . size = DB_FILE_ID_LEN ; 1585 `DB_INIT_DBT ( medbt , d , ` (old) + 1); 1586 i(( t_t = `__f_fe_move_log ( v , 1587 , & l , 0, & fiddbt , & tmpdbt , & medbt , 1588 ( u_t32_t ) DB_APP_DATA , chd_txnid )!0 && t == 0) 1589 t = t_t ; 1592 i(( t = `__db_ame ( v , 1593 DB_APP_DATA , d , ags , NULL , & d )) != 0) 1594 r ; 1596 i(( t = `__txn_mevt ( v , , d , NULL , 0)) != 0) 1597 r ; 1599 r : i( txn ! NULL ) 1600 () `__txn_abt ( txn ); 1602 () `__ENV_LPUT ( v , ock ); 1604 i( fhp ! NULL && 1605 ( t_t = `__os_ohd ( v , fhp )!0 && t == 0) 1606 t = t_t ; 1608 i( w ! NULL ) 1609 `__os_ ( v , w ); 1610 i( d ! NULL ) 1611 `__os_ ( v , d ); 1612 ( t ); 1613 } } 1616 $__f_mem_sw ( ddbp , backdbp , txn , d , w , back , lock ) 1617 DB * ddbp , * backdbp ; 1618 DB_TXN * txn ; 1619 cڡ * d , * w , * back ; 1620 DB_LOCKER * lock ; 1622 DB * tmpdbp ; 1623 DBT fid_dbt , n1_dbt , n2_dbt ; 1624 DB_LOCK ock ; 1625 DB_LSN l ; 1626 DB_TXN * ; 1627 ENV * v ; 1628 t , t_t ; 1630 v = ddbp ->env; 1631 = txn ->parent; 1632 y : `LOCK_INIT ( ock ); 1633 i(( t = `__db__ (& tmpdbp , v , 0)) != 0) 1634 ( t ); 1635 `MAKE_INMEM ( tmpdbp ); 1637 `GET_ENVLOCK ( v , lock , & ock ); 1638 i(( t = `__v_mpo ( tmpdbp , w , 0)) == 0) { 1646 i(( t = `__f_mem_ad_ma ( tmpdbp , txn , w , 0)) != 0) { 1647 t = EEXIST ; 1648 r ; 1657 i(( t = `__f_lock_hd ( v , 1658 tmpdbp , lock , DB_LOCK_READ , NULL , DB_LOCK_NOWAIT )) != 0) { 1663 i(( t = `__f_lock_hd ( v , tmpdbp , 1664 lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1665 r ; 1668 () `__lock_put ( v , & tmpdbp -> hd_lock ); 1669 () `__db_o ( tmpdbp , NULL , DB_NOSYNC ); 1670 () `__ENV_LPUT ( v , ock ); 1671 y ; 1673 () `__lock_put ( v , & tmpdbp -> hd_lock ); 1674 i(! `F_ISSET ( tmpdbp , DB_AM_IN_RENAME )) 1675 t = EEXIST ; 1677 i( t != 0) 1678 r ; 1682 i( `LOGGING_ON ( v ) 1683 #ide DEBUG_WOP 1684 && txn ! NULL 1688 `DB_INIT_DBT ( fid_dbt , ddbp -> feid , DB_FILE_ID_LEN ); 1689 `DB_INIT_DBT ( n1_dbt , d , ` (old) + 1); 1690 `DB_INIT_DBT ( n2_dbt , w , ` (new) + 1); 1691 i(( t = `__d_mem_me_log ( 1692 v , txn , & l , 0, & n1_dbt , & n2_dbt , & fid_dbt )) != 0) 1693 r ; 1696 fid_dbt . da = backdbp -> feid ; 1697 `DB_SET_DBT ( n2_dbt , back , ` (back) + 1); 1698 i(( t = `__d_mem_me_log ( 1699 v , txn , & l , 0, & n2_dbt , & n1_dbt , & fid_dbt )) != 0) 1700 r ; 1709 i( `F_ISSET ( tmpdbp , DB_AM_IN_RENAME )) { 1710 i(( t = `__memp_me ( v , 1711 tmpdbp -> feid , NULL , w , NULL, 1)) != 0) 1712 r ; 1713 `__txn_mm ( v , , w ); 1716 i(( t = `__memp_me ( 1717 v , ddbp -> feid , w , d ,ew, 1)) != 0) 1718 r ; 1719 i(( t = `__memp_me ( 1720 v , backdbp -> feid , d , back , old, 1)) != 0) 1721 r ; 1723 i(( t = `__f_lock_hd ( v , 1724 tmpdbp , lock , DB_LOCK_WRITE , & ock , 0)) != 0) 1725 r ; 1732 `LOCK_INIT ( tmpdbp -> hd_lock ); 1734 `DB_ASSERT ( v , txn ! NULL ); 1737 t = `__txn_comm ( txn , 0); 1738 txn = NULL ; 1740 i(( t = `__db_mem_move ( backdbp , , d )) != 0) 1741 r ; 1743 r : () `__ENV_LPUT ( v , ock ); 1745 i( txn ! NULL ) 1746 () `__txn_abt ( txn ); 1748 i(( t_t = `__db_o ( tmpdbp , NULL , 0)!0 && t == 0) 1749 t = t_t ; 1751 ( t ); 1752 } } @../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 -> v , `IS_INITIALIZED (dbc)); 99 `DB_ASSERT ( dbc -> v , dbc-> -> d = NULL ); 100 `DB_ASSERT ( dbc -> v , ! `F_ISSET (dbc-> dbp , DB_AM_SECONDARY )); 101 `DB_ASSERT ( dbc -> v , 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 ENV * v ; 128 HASH_CURSOR * w_curs ; 129 t ; 131 v = dbc ->env; 132 i(( t = `__os_oc ( v , 133 1, ( curs_t ), & w_curs )) != 0) 134 ( t ); 135 i(( t = `__os_mloc ( v , 136 dbc -> dbp -> pgsize , & w_curs -> l_buf )) != 0) { 137 `__os_ ( v , 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 -> thad_fo , 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 = `__memp_ut ( mpf , 218 dbc -> thad_fo , 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 -> v , h -> l_buf ); 241 `__os_ ( dbc -> v , 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 -> v , h -> pgno ); 296 r ; 299 * = o ; 301 r : i(( t_t = `__memp_ut ( mpf , 302 dbc -> thad_fo , 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 -> thad_fo , 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 , dbc -> thad_fo , 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_MPOOLFILE * mpf ; 413 ENV * v ; 414 HASH_CURSOR * h ; 415 db_lockmode_t lock_ty ; 416 t , t_t ; 418 h = ( HASH_CURSOR *) dbc -> ; 419 dbp = dbc ->dbp; 420 v = dbp ->env; 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 ( v , "__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 ( v , "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 , 513 dbc -> thad_fo , h -> ge , dbc-> iܙy ); 514 h -> ge = NULL ; 515 i( h -> buck == 0) { 516 t = DB_NOTFOUND ; 517 h -> pgno = PGNO_INVALID ; 518 r ; 520 `F_CLR ( h , H_ISDUP ); 521 h -> buck --; 522 h -> dx = NDX_INVALID ; 523 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 524 i( t == 0) 525 t = `__ham_em_ev ( dbc , lock_ty , pgn ); 527 DB_FIRST : 528 DB_NEXT : 529 DB_NEXT_NODUP : 530 t = `__memp_ut ( mpf , 531 dbc -> thad_fo , h -> ge , dbc-> iܙy ); 532 h -> ge = NULL ; 533 h -> dx = NDX_INVALID ; 534 h -> buck ++; 535 `F_CLR ( h , H_ISDUP ); 536 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 537 i( h -> buck > h-> hdr -> max_buck ) { 538 t = DB_NOTFOUND ; 539 h -> pgno = PGNO_INVALID ; 540 r ; 542 i( t == 0) 543 t = `__ham_em_xt ( dbc , lock_ty , pgn ); 545 DB_GET_BOTH : 546 DB_GET_BOTHC : 547 DB_GET_BOTH_RANGE : 548 DB_NEXT_DUP : 549 DB_SET : 550 DB_SET_RANGE : 552 t = DB_NOTFOUND ; 553 r ; 554 DB_CURRENT : 561 t = DB_KEYEMPTY ; 562 r ; 564 `DB_ASSERT ( v , 0); 568 r : i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 569 t = t_t ; 571 `F_CLR ( h , H_DUPONLY ); 572 `F_CLR ( h , H_NEXT_NODUP ); 574 ( t ); 575 } } 581 $__ham_bulk ( dbc , da , ags ) 582 DBC * dbc ; 583 DBT * da ; 584 u_t32_t ags ; 586 DB * dbp ; 587 DB_MPOOLFILE * mpf ; 588 HASH_CURSOR * ; 589 PAGE * pg ; 590 db_dx_t dup_n , dup_off , dup_ , dx , * p ; 591 db_lockmode_t lock_mode ; 592 db_pgno_t pgno ; 593 t32_t * dp , * of , * veoff ; 594 u_t32_t key_off , key_size , gesize , size , a ; 595 u_t8_t * dbuf , * dp , * hk , * , * tmp ; 596 is_dup , is_key ; 597 ed_pg , xt_key , no_dup , t , t_t ; 599 t = 0; 600 key_off = 0; 601 dup_n = dup_off = dup_ = 0; 602 size = 0; 603 dbp = dbc ->dbp; 604 gesize = dbp -> pgsize ; 605 mpf = dbp ->mpf; 606 = ( HASH_CURSOR *) dbc -> ; 607 is_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1 : 0; 608 xt_key = is_key && `LF_ISSET ( DB_OPFLAGS_MASK ! DB_NEXT_DUP ; 609 no_dup = `LF_ISSET ( DB_OPFLAGS_MASK = DB_NEXT_NODUP ; 610 dbuf = da ->data; 611 = dp = dbuf ; 614 a = da -> un ; 615 a -(* of ); 618 dp = ( t32_t *(( u_t8_t *) dbuf + da -> un ); 619 dp --; 620 of = dp ; 622 key_size = 0; 623 lock_mode = `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 625 xt_pg : 626 ed_pg = 1; 627 dx = ->indx; 628 pg = -> ge ; 629 p = `P_INP ( dbp , pg ); 632 i( is_key ) { 633 hk = `H_PAIRKEY ( dbp , pg , dx ); 634 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) { 635 `memy (& key_size , 636 `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 637 `memy (& pgno , 638 `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 639 size = key_size ; 640 i( key_size > a ) 641 g_key_a ; 642 i(( t = `__bam_bulk_ovow ( 643 dbc , key_size , pgno , )) != 0) 644 ( t ); 645 a - key_size ; 646 key_off = ( u_t32_t )( - dbuf ); 647 + key_size ; 649 i( ed_pg ) { 650 dp = ; 651 size = gesize - `HOFFSET ( pg ); 652 i( a < size ) { 653 g_key_a : 654 i( of = dp ) { 655 da -> size = ( u_t32_t ) 656 `DB_ALIGN ( size + 657 gesize , 1024); 659 ( DB_BUFFER_SMALL ); 661 back_up ; 663 `memy ( dp , 664 ( u_t8_t *) pg + `HOFFSET g), size ); 665 ed_pg = 0; 666 a - size ; 667 + size ; 669 key_size = `LEN_HKEY ( dbp , pg , gesize , dx ); 670 key_off = (( p [ dx ] - `HOFFSET ( pg )) + 671 ( u_t32_t )( dp - dbuf )) + 672 `SSZA ( HKEYDATA , da ); 676 hk = `H_PAIRDATA ( dbp , pg , dx ); 677 `HPAGE_PTYPE ( hk )) { 678 H_DUPLICATE : 679 H_KEYDATA : 680 i( ed_pg ) { 681 dp = ; 682 size = gesize - `HOFFSET ( pg ); 683 i( a < size ) { 684 back_up : 685 i( dx != 0) { 686 dx -= 2; 701 tmp = `H_PAIRDATA ( dbp , pg , dx ); 702 i( `HPAGE_PTYPE ( tmp ) == 703 H_DUPLICATE ) { 704 dup_off = dup_ = 705 `LEN_HDATA ( dbp , pg , 706 gesize , dx + 1); 707 `memy (& dup_n , 708 `HKEYDATA_DATA ( tmp ), 709 ( db_dx_t )); 711 is_dup = 0; 712 dup_n = 0; 713 dup_off = 0; 714 dup_ = 0; 715 `F_CLR ( , H_ISDUP ); 717 g_a ; 720 -> dup_n = dup_len; 721 -> dup_off = dup_off; 722 -> dup_ = dup_tlen; 723 i(( t = `__ham_em_ev ( dbc , 724 lock_mode , & pgno )) != 0) { 725 i( t ! DB_NOTFOUND ) 726 ( t ); 727 i(( t = `__memp_ut ( mpf , 728 dbc -> thad_fo , -> ge , 729 dbc -> iܙy )) != 0) 730 ( t ); 731 -> ge = NULL ; 732 i( -> buck == 0) { 733 -> dx = indx = 734 NDX_INVALID ; 735 g_a ; 737 i(( t = 738 `__ham_g_ma ( dbc )) != 0) 739 ( t ); 741 -> buck --; 742 -> pgno = `BUCKET_TO_PAGE (cp, 743 -> buck ); 744 -> dx = NDX_INVALID ; 745 i(( t = `__ham_a_ma ( 746 dbc )) != 0) 747 ( t ); 748 i(( t = `__ham_em_ev ( dbc , 749 lock_mode , & pgno )) != 0) 750 ( t ); 752 dx = ->indx; 753 g_a : 757 i( of > dp || 758 `F_ISSET ( dbc , DBC_TRANSIENT )) { 759 da -> size = ( u_t32_t ) 760 `DB_ALIGN ( size + 761 da -> un - a , 1024); 762 ( DB_BUFFER_SMALL ); 769 xt_key = 0; 772 `memy ( dp , ( u_t8_t *) pg + `HOFFSET g), size ); 773 ed_pg = 0; 774 a - size ; 775 + size ; 791 i( `F_ISSET ( , H_ISDUP )) { 793 is_dup = 1; 794 dup_n = ->dup_len; 795 dup_off = ->dup_off; 796 dup_ = ->dup_tlen; 797 } i( `HPAGE_PTYPE ( hk = H_DUPLICATE ) { 799 is_dup = 1; 805 `F_SET ( , H_ISDUP ); 806 dup_off = 0; 807 `memy (& dup_n , 808 `HKEYDATA_DATA ( hk ), ( db_dx_t )); 809 dup_ = `LEN_HDATA ( dbp , pg , gesize , dx ); 812 is_dup = 0; 813 dup_n = 0; 814 dup_off = 0; 815 dup_ = 0; 819 a -( is_key ? 4 : 2* (* of ); 820 size +( is_key ? 4 : 2* (* of ); 828 i( a > da -> un ) { 829 i(! is_dup || dup_off == 0) 830 back_up ; 831 dup_off -( db_dx_t ) 832 `DUP_SIZE (( u_t32_t ) of [1]); 833 g_a ; 835 i( is_key ) { 836 * of -- = ( t32_t ) key_off ; 837 * of -- = ( t32_t ) key_size ; 839 i( is_dup ) { 840 * of -- = ( t32_t )( 841 (( p [ dx + 1] - `HOFFSET ( pg )) + 842 dp - dbuf + `SSZA ( HKEYDATA , da ) + 843 dup_off + ( db_dx_t )); 844 `memy (& dup_n , 845 `HKEYDATA_DATA ( hk + dup_off , 846 ( db_dx_t )); 847 dup_off + `DUP_SIZE ( dup_n ); 848 * of -- = dup_n ; 850 * of -- = ( t32_t )( 851 (( p [ dx + 1] - `HOFFSET ( pg )) + 852 dp - dbuf + `SSZA ( HKEYDATA , da )); 853 * of -- = `LEN_HDATA ( dbp , pg , 854 gesize , dx ); 856 } is_dup && dup_off < dup_ && no_dup == 0); 857 `F_CLR ( , H_ISDUP ); 859 H_OFFDUP : 860 `memy (& pgno , `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 861 a -2 * (* of ); 862 i( a > da -> un ) 863 back_up ; 865 i( is_key ) { 866 a -2 * (* of ); 867 i( a > da -> un ) 868 back_up ; 869 * of -- = ( t32_t ) key_off ; 870 * of -- = ( t32_t ) key_size ; 872 veoff = of ; 873 i(( t = `__bam_bulk_duis ( dbc , 874 pgno , dbuf , is_key ? of + 2 : NULL , 875 & of , & , & a , no_dup )) != 0) { 876 i( t = DB_BUFFER_SMALL ) { 877 size = a ; 878 a = 0; 879 i( is_key && veoff = of ) { 880 of += 2; 881 back_up ; 883 g_a ; 885 ( t ); 888 H_OFFPAGE : 889 a -( is_key ? 4 : 2* (* of ); 890 i( a > da -> un ) 891 back_up ; 893 `memy (& size , `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 894 `memy (& pgno , `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 895 i( size > a ) 896 back_up ; 898 i(( t = 899 `__bam_bulk_ovow ( dbc , size , pgno , )) != 0) 900 ( t ); 902 i( is_key ) { 903 * of -- = ( t32_t ) key_off ; 904 * of -- = ( t32_t ) key_size ; 907 * of -- = ( t32_t )( - dbuf ); 908 * of -- = ( t32_t ) size ; 910 + size ; 911 a - size ; 917 } xt_key && ( dx +2< `NUM_ENT ( pg )); 919 -> dx = indx; 920 -> dup_n = dup_len; 921 -> dup_off = dup_off; 922 -> dup_ = dup_tlen; 925 i( t =0 && xt_key && dx > `NUM_ENT ( pg )) { 926 i(( t = `__ham_em_xt ( dbc , lock_mode , & pgno )) == 0) 927 xt_pg ; 928 i( t ! DB_NOTFOUND ) 929 ( t ); 930 i(( t = `__memp_ut ( dbc -> dbp -> mpf , 931 dbc -> thad_fo , -> ge , dbc-> iܙy )) != 0) 932 ( t ); 933 -> ge = NULL ; 934 i(( t = `__ham_g_ma ( dbc )) != 0) 935 ( t ); 937 -> buck ++; 938 i( -> buck > cp-> hdr -> max_buck ) { 944 -> buck --; 945 t = DB_NOTFOUND ; 957 -> pgno = `BUCKET_TO_PAGE (, cp-> buck ); 958 -> dx = NDX_INVALID ; 959 `F_CLR ( , H_ISDUP ); 960 t = `__ham_em_xt ( dbc , lock_mode , & pgno ); 963 i(( t_t = `__ham_a_ma ( dbc )) != 0) 964 ( t_t ); 965 i( t == 0) 966 xt_pg ; 967 i( t ! DB_NOTFOUND ) 968 ( t ); 970 * of = -1; 972 } } 975 $__hamc_put ( dbc , key , da , ags , pgn ) 976 DBC * dbc ; 977 DBT * key ; 978 DBT * da ; 979 u_t32_t ags ; 980 db_pgno_t * pgn ; 982 DB * dbp ; 983 DBT tmp_v , * myv ; 984 DB_MPOOLFILE * mpf ; 985 HASH_CURSOR * h ; 986 u_t32_t nbys ; 987 t , t_t ; 994 `COMPQUIET ( myv , NULL ); 996 dbp = dbc ->dbp; 997 mpf = dbp ->mpf; 998 h = ( HASH_CURSOR *) dbc -> ; 1000 i( `F_ISSET ( h , H_DELETED ) && 1001 ags ! DB_KEYFIRST && fg! DB_KEYLAST ) 1002 ( DB_NOTFOUND ); 1004 i(( t = `__ham_g_ma ( dbc )) != 0) 1005 r1 ; 1007 ags ) { 1008 DB_KEYLAST : 1009 DB_KEYFIRST : 1010 DB_NODUPDATA : 1011 DB_NOOVERWRITE : 1012 nbys = ( `ISBIG ( h , key -> size ? HOFFPAGE_PSIZE : 1013 `HKEYDATA_PSIZE ( key -> size )) + 1014 ( `ISBIG ( h , da -> size ? HOFFPAGE_PSIZE : 1015 `HKEYDATA_PSIZE ( da -> size )); 1016 i(( t = `__ham_lookup ( dbc , 1017 key , nbys , DB_LOCK_WRITE , pgn )= DB_NOTFOUND ) { 1018 i( h -> ek_found_ge ! PGNO_INVALID && 1019 h -> ek_found_ge !h-> pgno ) { 1020 i(( t = `__memp_ut ( mpf , dbc -> thad_fo , 1021 h -> ge , dbc -> iܙy )) != 0) 1022 r2 ; 1023 h -> ge = NULL ; 1024 h -> pgno = h-> ek_found_ge ; 1025 h -> dx = NDX_INVALID ; 1028 i( `F_ISSET ( da , DB_DBT_PARTIAL && da-> doff != 0) { 1036 i(( t = `__ham__dbt ( dbp -> v , & tmp_v , 1037 da -> size + da-> doff , 1038 & dbc -> my_rda . da , 1039 & dbc -> my_rda . un )) != 0) 1040 r2 ; 1042 `memt ( tmp_v . da , 0, da-> doff ); 1043 `memy (( u_t8_t *) tmp_v . da + 1044 da -> doff , da->da, da-> size ); 1045 myv = & tmp_v ; 1047 myv = ( DBT *) da ; 1049 t = `__ham_add_ ( dbc , key , myv , H_KEYDATA ); 1050 de ; 1051 } i( ags = DB_NOOVERWRITE && 1052 ! `F_ISSET ( h , H_DELETED )) { 1053 i(* pgn = PGNO_INVALID ) 1054 t = DB_KEYEXIST ; 1056 t = `__bam_d_exis ( dbc , * pgn ); 1057 i( t != 0) 1058 de ; 1061 DB_BEFORE : 1062 DB_AFTER : 1063 DB_CURRENT : 1064 t = `__ham_em ( dbc , DB_LOCK_WRITE , pgn ); 1067 t = `__db_unknown_ag ( dbp -> v , "__hamc_put", ags ); 1075 h -> ek_found_ge = PGNO_INVALID ; 1076 h -> ek_found_dx = NDX_INVALID ; 1078 i(* pgn = PGNO_INVALID && t == 0) { 1079 i(( t = `__memp_dty ( mpf , & h -> ge , 1080 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1081 de ; 1082 i( ags = DB_CURRENT || 1083 (( ags = DB_KEYFIRST || 1084 ags = DB_KEYLAST || fg= DB_NODUPDATA ) && 1085 !( `F_ISSET ( dbp , DB_AM_DUP || F_ISSET( key , DB_DBT_DUPOK )))) 1086 t = `__ham_ovwre ( dbc , da , ags ); 1088 t = `__ham_add_dup ( dbc , da , ags , pgn ); 1091 de : i( h -> ge ! NULL ) { 1092 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 1093 h -> ge , dbc -> iܙy )!0 && t == 0) 1094 t = t_t ; 1095 i( t_t == 0) 1096 h -> ge = NULL ; 1099 i( t =0 && `F_ISSET ( h , H_EXPAND )) { 1100 t = `__ham_exnd_b ( dbc ); 1101 `F_CLR ( h , H_EXPAND ); 1103 i( t = ENOSPC && dbc -> txn = NULL ) 1104 t = 0; 1107 r2 : i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 1108 t = t_t ; 1110 r1 : ( t ); 1111 } } 1119 $__ham_exnd_b ( dbc ) 1120 DBC * dbc ; 1122 DB * dbp ; 1123 DBMETA * mma ; 1124 DB_LOCK mock ; 1125 DB_LSN l ; 1126 DB_MPOOLFILE * mpf ; 1127 HASH_CURSOR * h ; 1128 PAGE * h ; 1129 db_pgno_t pgno , mpgno ; 1130 u_t32_t logn , wloc , w_buck , d_buck ; 1131 g_ma , w_doub , t , t_t ; 1133 dbp = dbc ->dbp; 1134 mpf = dbp ->mpf; 1135 h = ( HASH_CURSOR *) dbc -> ; 1136 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 1137 ( t ); 1139 `LOCK_INIT ( mock ); 1140 mma = ( DBMETA * h -> hdr ; 1141 mpgno = mma -> pgno ; 1142 h = NULL ; 1143 wloc = 0; 1144 g_ma = 0; 1164 w_buck = h -> hdr -> max_buck + 1; 1165 d_buck = w_buck & h -> hdr -> low_mask ; 1167 w_doub = h -> hdr -> max_buck =h->hdr-> high_mask ; 1168 logn = `__db_log2 ( w_buck ); 1170 i(! w_doub || h -> hdr -> es [ logn + 1] ! PGNO_INVALID ) { 1172 pgno = `BUCKET_TO_PAGE ( h , w_buck ); 1173 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 1174 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h )) != 0) 1175 r ; 1176 l = h ->lsn; 1179 i( `F_ISSET ( dbp , DB_AM_SUBDB )) { 1180 mpgno = PGNO_BASE_MD ; 1181 i(( t = `__db_lg ( dbc , 1182 0, mpgno , DB_LOCK_WRITE , 0, & mock )) != 0) 1183 r ; 1184 i(( t = `__memp_fg ( mpf , & mpgno , dbc -> thad_fo , 1185 dbc -> txn , DB_MPOOL_DIRTY , & mma )) != 0) 1186 r ; 1187 g_ma = 1; 1189 pgno = mma -> ϡ_pgno + 1; 1190 `ZERO_LSN ( l ); 1191 wloc = 1; 1195 i( `DBC_LOGGING ( dbc )) { 1203 i(( t = `__ham_magroup_log ( dbp , dbc -> txn , 1204 & l , 0, h -> hdr -> max_buck , mpgno , & mma ->lsn, 1205 h -> hdr -> dbma . pgno , &h->hdr->dbma. l , 1206 pgno , & l , wloc , mma -> ϡ_pgno )) != 0) 1207 r ; 1209 `LSN_NOT_LOGGED ( l ); 1211 h -> hdr -> dbma . l =sn; 1213 i( w_doub && h -> hdr -> es [ logn + 1] = PGNO_INVALID ) { 1224 pgno + h -> hdr -> max_buck ; 1226 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 1227 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h )) != 0) 1228 r ; 1230 h -> hdr -> es [ logn + 1] = 1231 ( pgno - w_buck - h -> hdr -> max_buck ; 1232 mma -> ϡ_pgno = pgno ; 1233 mma -> l =sn; 1235 `P_INIT ( h , dbp -> pgsize , 1236 pgno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1240 h -> l =sn; 1241 i(( t = `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy )) != 0) 1242 r ; 1243 h = NULL ; 1248 h -> hdr -> max_buck = w_buck ; 1249 i( w_doub ) { 1250 h -> hdr -> low_mask = h->hdr-> high_mask ; 1251 h -> hdr -> high_mask = w_buck | h->hdr-> low_mask ; 1255 t = `__ham_l_ge ( dbc , d_buck , w_buck ); 1257 r : i( g_ma ) 1258 i(( t_t = `__memp_ut ( mpf , 1259 dbc -> thad_fo , mma , dbc-> iܙy )!0 && t == 0) 1260 t = t_t ; 1261 i(( t_t = `__TLPUT ( dbc , mock )!0 && t == 0) 1262 t = t_t ; 1263 i( h ! NULL ) 1264 i(( t_t = `__memp_ut ( mpf , 1265 dbc -> thad_fo , h , dbc-> iܙy )!0 && t == 0) 1266 t = t_t ; 1268 ( t ); 1269 } } 1274 u_t32_t 1275 $__ham__hash ( dbc , k , n ) 1276 DBC * dbc ; 1277 u_t8_t * k ; 1278 u_t32_t n ; 1280 DB * dbp ; 1281 HASH * hashp ; 1282 HASH_CURSOR * h ; 1283 u_t32_t n , buck ; 1285 dbp = dbc ->dbp; 1286 h = ( HASH_CURSOR *) dbc -> ; 1287 hashp = dbp -> h_ ; 1289 n = ( u_t32_t )( hashp -> `h_hash ( dbp , k , n )); 1291 buck = n & h -> hdr -> high_mask ; 1292 i( buck > h -> hdr -> max_buck ) 1293 buck = buck & h -> hdr -> low_mask ; 1294 ( buck ); 1295 } } 1302 $__ham_dup_tu ( dbc , v , ags ) 1303 DBC * dbc ; 1304 DBT * v ; 1305 u_t32_t ags ; 1307 DB * dbp ; 1308 DBT * myv , tmp_v ; 1309 HASH_CURSOR * h ; 1310 PAGE * ; 1311 db_dx_t ndx ; 1312 db_pgno_t pgno ; 1313 u_t32_t off , ; 1314 u_t8_t * hk , ty ; 1315 cmp , t ; 1316 db_dx_t n ; 1319 dbp = dbc ->dbp; 1320 h = ( HASH_CURSOR *) dbc -> ; 1321 ndx = `H_DATAINDEX ( h -> dx ); 1322 ty = `HPAGE_TYPE ( dbp , h -> ge , ndx ); 1323 = h -> ge ; 1324 myv = v ; 1336 `DB_ASSERT ( dbp -> v , ty ! H_OFFDUP ); 1339 i( ty ! H_DUPLICATE && ags ! DB_GET_BOTH && 1340 ags ! DB_GET_BOTHC && fg! DB_GET_BOTH_RANGE ) 1348 i(! `F_ISSET ( h , H_ISDUP && ty = H_DUPLICATE ) { 1349 `F_SET ( h , H_ISDUP ); 1350 h -> dup_ = `LEN_HDATA ( dbp , h-> ge , 1351 h -> hdr -> dbma . gesize , h-> dx ); 1352 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1353 i( ags = DB_LAST || 1354 ags = DB_PREV || fg= DB_PREV_NODUP ) { 1355 h -> dup_off = 0; 1357 `memy (& n , 1358 `HKEYDATA_DATA ( hk + h -> dup_off , 1359 ( db_dx_t )); 1360 h -> dup_off + `DUP_SIZE ( n ); 1361 } h -> dup_off < h-> dup_ ); 1362 h -> dup_off - `DUP_SIZE ( n ); 1364 `memy (& n , 1365 `HKEYDATA_DATA ( hk ), ( db_dx_t )); 1366 h -> dup_off = 0; 1368 h -> dup_n = n ; 1376 i( ags = DB_GET_BOTH || 1377 ags = DB_GET_BOTHC || fg= DB_GET_BOTH_RANGE ) { 1378 i( `F_ISSET ( h , H_ISDUP )) { 1383 i( ags = DB_GET_BOTHC ) 1384 `F_SET ( h , H_CONTINUE ); 1386 `__ham_dch ( dbc , v , & off , & cmp , ags ); 1392 `F_CLR ( h , H_CONTINUE ); 1393 h -> dup_off = off ; 1395 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1396 i((( HKEYDATA *) hk )-> ty = H_OFFPAGE ) { 1397 `memy (& , 1398 `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 1399 `memy (& pgno , 1400 `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 1401 i(( t = `__db_moff ( dbp , dbc -> thad_fo , 1402 dbc -> txn , v , 1403 pgno , , dbp -> dup_com , & cmp )) != 0) 1404 ( t ); 1410 tmp_v . da = `HKEYDATA_DATA ( hk ); 1411 tmp_v . size = `LEN_HDATA ( dbp , h -> ge , 1412 dbp -> pgsize , h -> dx ); 1413 cmp = dbp -> dup_com = NULL ? 1414 `__bam_defcmp ( dbp , & tmp_v , v ) : 1415 dbp -> `dup_com (dbp, & tmp_v , v ); 1419 i( cmp != 0) 1420 ( DB_NOTFOUND ); 1427 i( `F_ISSET ( dbc , DBC_MULTIPLE | DBC_MULTIPLE_KEY ) || 1428 `F_ISSET ( v , DB_DBT_ISSET )) 1435 i( `F_ISSET ( h , H_ISDUP )) { 1443 `memy (& tmp_v , v , (*val)); 1445 i( `F_ISSET (& tmp_v , DB_DBT_PARTIAL )) { 1450 i( tmp_v . doff > h -> dup_n ) 1451 tmp_v . dn = 0; 1452 i( tmp_v . dn +mp_v. doff > h -> dup_n ) 1453 tmp_v . dn = h -> dup_n -mp_v. doff ; 1456 `F_SET (& tmp_v , DB_DBT_PARTIAL ); 1457 tmp_v . dn = h -> dup_n ; 1458 tmp_v . doff = 0; 1467 tmp_v . doff + h -> dup_off + ( db_dx_t ); 1469 myv = & tmp_v ; 1476 i(( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , 1477 , ndx , myv , & dbc -> rda -> da , &dbc->rda-> un )) != 0) 1478 ( t ); 1484 v -> da = myv ->data; 1485 v -> size = myv ->size; 1487 `F_SET ( v , DB_DBT_ISSET ); 1490 } } 1493 $__ham_ovwre ( dbc , nv , ags ) 1494 DBC * dbc ; 1495 DBT * nv ; 1496 u_t32_t ags ; 1498 DB * dbp ; 1499 DBT * myv , tmp_v , tmp_v2 ; 1500 ENV * v ; 1501 HASH_CURSOR * h ; 1502 * wc ; 1503 u_t8_t * hk , * p ; 1504 u_t32_t n , ndup_size ; 1505 db_dx_t wsize ; 1506 t ; 1508 dbp = dbc ->dbp; 1509 v = dbp ->env; 1510 h = ( HASH_CURSOR *) dbc -> ; 1511 i( `F_ISSET ( h , H_ISDUP )) { 1516 `DB_ASSERT ( v , h -> d = NULL ); 1518 i( `F_ISSET ( nv , DB_DBT_PARTIAL )) { 1524 `memt (& tmp_v , 0, (tmp_val)); 1525 i(( t = 1526 `__ham_dup_tu ( dbc , & tmp_v , DB_CURRENT )) != 0) 1527 ( t ); 1530 ndup_size = tmp_v . size ; 1531 wsize = ndup_size ; 1540 i( nv -> doff > ndup_size ) 1541 wsize += 1542 (( nv -> doff - ndup_size +v-> size ); 1543 i( nv -> doff +v-> dn > ndup_size ) 1544 wsize + nv -> size - 1545 ( ndup_size - nv -> doff ); 1547 wsize + nv -> size -v-> dn ; 1554 i( `ISBIG ( h , 1555 ( h -> dup_ - ndup_size + wsize )) { 1556 i(( t = `__ham_dup_cvt ( dbc )) != 0) 1557 ( t ); 1558 ( h -> d -> `am_put (hcp->opd, 1559 NULL , nv , ags , NULL)); 1562 i(( t = `__os_mloc ( dbp -> v , 1563 `DUP_SIZE ( wsize ), & wc )) != 0) 1564 ( t ); 1565 `memt (& tmp_v2 , 0, (tmp_val2)); 1566 `F_SET (& tmp_v2 , DB_DBT_PARTIAL ); 1569 p = wc ; 1571 `memy ( p , & wsize , ( db_dx_t )); 1572 p +( db_dx_t ); 1575 n = nv -> doff > tmp_v . size 1576 ? tmp_v . size : nv -> doff ; 1577 `memy ( p , tmp_v . da , n ); 1578 p + n ; 1580 i( nv -> doff > tmp_v . size ) { 1582 `memt ( p , 0, nv -> doff - tmp_v . size ); 1583 p + nv -> doff - tmp_v . size ; 1587 `memy ( p , nv -> da ,v-> size ); 1588 p + nv -> size ; 1591 i( nv -> doff +v-> dn < tmp_v . size ) { 1592 n = ( tmp_v . size - nv -> doff -v-> dn ; 1593 `memy ( p , ( u_t8_t *) tmp_v . da + 1594 nv -> doff +v-> dn , n ); 1595 p + n ; 1599 `memy ( p , & wsize , ( db_dx_t )); 1605 i( dbp -> dup_com ! NULL ) { 1606 tmp_v2 . da = 1607 ( u_t8_t *) wc + ( db_dx_t ); 1608 tmp_v2 . size = wsize ; 1609 i( dbp -> `dup_com ( 1610 dbp , & tmp_v , & tmp_v2 ) != 0) { 1611 `__os_ ( v , wc ); 1612 ( `__db_du ( dbp , ags )); 1616 tmp_v2 . da = wc ; 1617 tmp_v2 . size = `DUP_SIZE ( wsize ); 1618 tmp_v2 . doff = h -> dup_off ; 1619 tmp_v2 . dn = `DUP_SIZE ( h -> dup_n ); 1621 t = `__ham_ ( dbc , & tmp_v2 , 0); 1622 `__os_ ( v , wc ); 1625 i( t != 0) 1626 ( t ); 1628 i( wsize > ndup_size ) { 1629 i(( t = `__hamc_upde ( dbc , 1630 ( wsize - ndup_size ), 1631 DB_HAM_CURADJ_ADDMOD , 1)) != 0) 1632 ( t ); 1633 h -> dup_ +( wsize - ndup_size ); 1635 i(( t = `__hamc_upde ( dbc , 1636 ( ndup_size - wsize ), 1637 DB_HAM_CURADJ_DELMOD , 1)) != 0) 1638 ( t ); 1639 h -> dup_ -( ndup_size - wsize ); 1641 h -> dup_n = wsize ; 1645 i( `ISBIG ( h , 1646 ( h -> dup_ - h-> dup_n + nv -> size )) { 1647 i(( t = `__ham_dup_cvt ( dbc )) != 0) 1648 ( t ); 1649 ( h -> d -> `am_put (hcp->opd, 1650 NULL , nv , ags , NULL)); 1654 i( dbp -> dup_com ! NULL ) { 1655 tmp_v2 . da = 1656 `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , 1657 h -> dx )+ h-> dup_off + 1658 ( db_dx_t ); 1659 tmp_v2 . size = h -> dup_n ; 1660 i( dbp -> `dup_com ( 1661 dbp , nv , & tmp_v2 ) != 0) { 1662 `__db_rx ( v , 1664 ( EINVAL ); 1668 i(( t = 1669 `__ham_make_dup ( dbp -> v , nv , & tmp_v , 1670 & dbc -> my_rda . da , &dbc->my_rda. un )) != 0) 1671 ( t ); 1673 tmp_v . doff = h -> dup_off ; 1674 tmp_v . dn = `DUP_SIZE ( h -> dup_n ); 1677 i( nv -> size > h -> dup_n ) { 1678 i(( t = `__hamc_upde ( dbc , 1679 ( nv -> size - h -> dup_n ), 1680 DB_HAM_CURADJ_ADDMOD , 1)) != 0) 1681 ( t ); 1682 h -> dup_ +( nv -> size - h-> dup_n ); 1684 i(( t = `__hamc_upde ( dbc , 1685 ( h -> dup_n - nv -> size ), 1686 DB_HAM_CURADJ_DELMOD , 1)) != 0) 1687 ( t ); 1688 h -> dup_ -(h-> dup_n - nv -> size ); 1690 h -> dup_n = ( db_dx_t ) nv -> size ; 1692 myv = & tmp_v ; 1693 } i(! `F_ISSET ( nv , DB_DBT_PARTIAL )) { 1695 `memy (& tmp_v , nv , (*nval)); 1696 `F_SET (& tmp_v , DB_DBT_PARTIAL ); 1697 tmp_v . doff = 0; 1698 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1699 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) 1700 `memy (& tmp_v . dn , 1701 `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 1703 tmp_v . dn = `LEN_HDATA ( dbp , h -> ge , 1704 h -> hdr -> dbma . gesize , h-> dx ); 1705 myv = & tmp_v ; 1708 myv = nv ; 1710 ( `__ham_ ( dbc , myv , 0)); 1711 } } 1723 $__ham_lookup ( dbc , key , sought , mode , pgn ) 1724 DBC * dbc ; 1725 cڡ DBT * key ; 1726 u_t32_t sought ; 1727 db_lockmode_t mode ; 1728 db_pgno_t * pgn ; 1730 DB * dbp ; 1731 HASH_CURSOR * h ; 1732 db_pgno_t xt_pgno ; 1733 mch , t ; 1734 u_t8_t * dk ; 1736 dbp = dbc ->dbp; 1737 h = ( HASH_CURSOR *) dbc -> ; 1743 i(( t = `__ham_em_t ( dbc )) != 0) 1744 ( t ); 1745 h -> ek_size = sought ; 1747 h -> buck = `__ham__hash ( dbc , ( u_t8_t *) key -> da , key-> size ); 1748 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 1750 i(( t = `__ham_g_age ( dbc , mode )) != 0) 1751 ( t ); 1753 * pgn = PGNO_INVALID ; 1754 i( h -> dx = NDX_INVALID ) { 1755 h -> dx = 0; 1756 `F_CLR ( h , H_ISDUP ); 1758 h -> pgno ! PGNO_INVALID ) { 1760 i( h -> ek_size != 0 && 1761 h -> ek_found_ge = PGNO_INVALID && 1762 h -> ek_size < `P_FREESPACE ( dbp , h-> ge )) { 1763 h -> ek_found_ge = h-> pgno ; 1764 h -> ek_found_dx = NDX_INVALID ; 1767 i(( t = `__ham_gdex ( dbc , h -> ge , key , 1768 H_KEYDATA , & mch , & h -> dx )) != 0) 1769 ( t ); 1776 i( h -> ek_found_ge =h-> pgno ) 1777 h -> ek_found_dx = h-> dx ; 1779 i( mch == 0) { 1780 `F_SET ( h , H_OK ); 1781 dk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1782 i( `HPAGE_PTYPE ( dk = H_OFFDUP ) 1783 `memy ( pgn , `HOFFDUP_PGNO ( dk ), 1784 ( db_pgno_t )); 1789 i( `NEXT_PGNO ( h -> ge = PGNO_INVALID ) 1791 xt_pgno = `NEXT_PGNO ( h -> ge ); 1792 h -> dx = 0; 1793 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 1794 ( t ); 1796 `F_SET ( h , H_NOMORE ); 1797 ( DB_NOTFOUND ); 1798 } } 1809 $__ham__dbt ( v , dbt , size , bu , siz ) 1810 ENV * v ; 1811 DBT * dbt ; 1812 u_t32_t size ; 1813 ** bu ; 1814 u_t32_t * siz ; 1816 t ; 1818 `memt ( dbt , 0, (*dbt)); 1819 i(* siz < size ) { 1820 i(( t = `__os_loc ( v , size , bu )) != 0) { 1821 * siz = 0; 1822 ( t ); 1824 * siz = size ; 1826 dbt -> da = * bu ; 1827 dbt -> size = size; 1829 } } 1845 $__hamc_upde ( dbc , n , ݔi , is_dup ) 1846 DBC * dbc ; 1847 u_t32_t n ; 1848 db_ham_cudj ݔi ; 1849 is_dup ; 1851 DB * dbp , * ldbp ; 1852 DBC * ; 1853 DB_LSN l ; 1854 DB_TXN * my_txn ; 1855 ENV * v ; 1856 HASH_CURSOR * h , * l ; 1857 found , t , was_mod , was_add ; 1858 u_t32_t d ; 1860 dbp = dbc ->dbp; 1861 v = dbp ->env; 1862 h = ( HASH_CURSOR *) dbc -> ; 1870 my_txn = `IS_SUBTRANSACTION ( dbc -> txn ? dbc->tx: NULL ; 1871 found = 0; 1873 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 1875 ݔi ) { 1876 DB_HAM_CURADJ_DEL : 1877 was_mod = 0; 1878 was_add = 0; 1880 DB_HAM_CURADJ_ADD : 1881 was_mod = 0; 1882 was_add = 1; 1884 DB_HAM_CURADJ_DELMOD : 1885 was_mod = 1; 1886 was_add = 0; 1888 DB_HAM_CURADJ_ADDMOD : 1889 was_mod = 1; 1890 was_add = 1; 1893 ( EINVAL ); 1901 d = 0; 1902 i( was_add == 0) { 1903 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 1904 d = 1; 1905 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 1906 ldbp = `TAILQ_NEXT dbp, dblilks )) { 1907 `MUTEX_LOCK ( v , dbp -> mux ); 1908 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 1909 i( = dbc || cp-> dbty ! DB_HASH ) 1911 l = ( HASH_CURSOR *) -> ; 1912 i( `F_ISSET ( l , H_DELETED ) && 1913 h -> pgno = l ->pgno && 1914 h -> dx = l ->indx && 1915 d < l ->order && 1916 (! is_dup || h -> dup_off = l ->dup_off) && 1917 ! `MVCC_SKIP_CURADJ ( , l -> pgno )) 1918 d = l ->order + 1; 1920 `MUTEX_UNLOCK ( v , dbp -> mux ); 1922 h -> d = order; 1925 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 1927 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 1928 ldbp = `TAILQ_NEXT dbp, dblilks )) { 1929 `MUTEX_LOCK ( v , dbp -> mux ); 1930 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 1931 i( = dbc || cp-> dbty ! DB_HASH ) 1934 l = ( HASH_CURSOR *) -> ; 1936 i( l -> pgno ! h ->pgno || 1937 l -> dx = NDX_INVALID || 1938 `MVCC_SKIP_CURADJ ( , l -> pgno )) 1941 i( my_txn ! NULL && -> txn != my_txn) 1942 found = 1; 1944 i(! is_dup ) { 1945 i( was_add == 1) { 1955 i( l -> dx = h ->indx && 1956 `F_ISSET ( l , H_DELETED )) { 1957 i( l -> d = h ->order) 1958 `F_CLR ( l , H_DELETED ); 1959 i( l -> d > 1960 h -> d ) { 1971 l -> d -= 1972 h -> d ; 1973 l -> dx += 2; 1975 } i( l -> dx > h ->indx) 1976 l -> dx += 2; 1978 i( l -> dx > h ->indx) { 1979 l -> dx -= 2; 1980 i( l -> dx = h ->indx && 1981 `F_ISSET ( l , H_DELETED )) 1982 l -> d += order; 1983 } i( l -> dx = h ->indx && 1984 ! `F_ISSET ( l , H_DELETED )) { 1985 `F_SET ( l , H_DELETED ); 1986 `F_CLR ( l , H_ISDUP ); 1987 l -> d = order; 1990 } i( l -> dx = h ->indx) { 1996 i( was_add == 1) { 1997 l -> dup_ + n ; 1998 i( l -> dup_off = h ->dup_off && 1999 `F_ISSET ( h , H_DELETED ) && 2000 `F_ISSET ( l , H_DELETED )) { 2002 i( l -> d = h ->order) 2003 `F_CLR ( l , H_DELETED ); 2004 i( l -> d > 2005 h -> d ) { 2006 l -> d -= 2007 ( h -> d -1); 2008 l -> dup_off + n ; 2010 } i( l -> dup_off > 2011 h -> dup_off || (! was_mod && 2012 l -> dup_off = h ->dup_off)) 2013 l -> dup_off + n ; 2015 l -> dup_ - n ; 2016 i( l -> dup_off > h ->dup_off) { 2017 l -> dup_off - n ; 2018 i( l -> dup_off == 2019 h -> dup_off && 2020 `F_ISSET ( l , H_DELETED )) 2021 l -> d += order; 2022 } i(! was_mod && 2023 l -> dup_off = h ->dup_off && 2024 ! `F_ISSET ( l , H_DELETED )) { 2025 `F_SET ( l , H_DELETED ); 2026 l -> d = order; 2031 `MUTEX_UNLOCK ( v , dbp -> mux ); 2033 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 2035 i( found !0 && `DBC_LOGGING ( dbc )) { 2036 i(( t = `__ham_cudj_log ( dbp , my_txn , & l , 0, h -> pgno , 2037 h -> dx , n , h-> dup_off , () ݔi , is_dup , 2038 d )) != 0) 2039 ( t ); 2043 } } 2056 $__ham_g_i ( dbp , pgno , dx , lip ) 2057 DB * dbp ; 2058 db_pgno_t pgno ; 2059 u_t32_t dx ; 2060 DBC *** lip ; 2062 DB * ldbp ; 2063 DBC * ; 2064 ENV * v ; 2065 u_t oc , nud ; 2066 t ; 2068 * lip = NULL ; 2069 v = dbp ->env; 2070 oc = nud = 0; 2076 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 2077 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 2079 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 2080 ldbp = `TAILQ_NEXT dbp, dblilks )) { 2081 `MUTEX_LOCK ( v , dbp -> mux ); 2082 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) 2088 i( -> -> pgno ==gno && 2089 ( dx = NDX_INVALID || 2090 -> -> dx == indx) && 2091 ! `MVCC_SKIP_CURADJ ( , pgno )) { 2092 i( nud > oc ) { 2093 oc += 10; 2094 i(( t = `__os_loc ( dbp -> v , 2095 oc * ( HASH_CURSOR *), 2096 lip )) != 0) 2097 r ; 2099 (* lip )[ nud ++] = ; 2102 `MUTEX_UNLOCK ( dbp -> v , dbp-> mux ); 2104 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 2106 i( lip ! NULL ) { 2107 i( nud > oc ) { 2108 oc ++; 2109 i(( t = `__os_loc ( dbp -> v , 2110 oc * ( HASH_CURSOR *), lip )) != 0) 2111 ( t ); 2113 (* lip )[ nud ] = NULL ; 2116 r : 2117 `MUTEX_UNLOCK ( dbp -> v , dbp-> mux ); 2118 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 2119 ( t ); 2120 } } 2123 $__hamc_wrock ( dbc ) 2124 DBC * dbc ; 2126 DB_LOCK tmp_lock ; 2127 HASH_CURSOR * h ; 2128 t ; 2134 i(! `STD_LOCKING ( dbc )) 2137 h = ( HASH_CURSOR *) dbc -> ; 2138 t = 0; 2139 i((! `LOCK_ISSET ( h -> lock || h-> lock_mode ! DB_LOCK_WRITE )) { 2140 tmp_lock = h -> lock ; 2141 i(( t = `__ham_lock_buck ( dbc , DB_LOCK_WRITE )) == 0 && 2142 tmp_lock . mode ! DB_LOCK_WWRITE ) 2143 t = `__LPUT ( dbc , tmp_lock ); 2145 ( t ); 2146 } } @../hash/hash_auto.c 3 ~"db_cfig.h " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_dich.h " 8 ~"dbc/db_am.h " 9 ~"dbc/hash.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__ham_sd_ad ( v , db , td , cbuf , g ) 19 ENV * v ; 20 DB ** db ; 21 * td ; 22 * cbuf ; 23 __ham_sd_gs ** g ; 25 __ham_sd_gs * gp ; 26 u_t32_t ump ; 27 u_t8_t * bp ; 28 t ; 30 i(( t = `__os_mloc ( v , 31 ( __ham_sd_gs + ( DB_TXN ), & gp )) != 0) 32 ( t ); 33 bp = cbuf ; 34 gp -> tx = ( DB_TXN *)&argp[1]; 35 `memt ( gp -> tx , 0, ( DB_TXN )); 37 gp -> tx -> td =d; 38 `LOGCOPY_32 ( v , & gp -> ty , bp ); 39 bp +( gp -> ty ); 41 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 42 bp +( gp -> tx -> txnid ); 44 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 45 bp +( DB_LSN ); 47 `LOGCOPY_32 ( v , & gp -> code , bp ); 48 bp +( gp -> code ); 50 `LOGCOPY_32 ( v , & ump , bp ); 51 gp -> feid = ( t32_t ) ump ; 52 bp +( ump ); 53 i( db ! NULL ) { 54 * db = NULL ; 55 t = `__dbg_id_to_db ( 56 v , gp -> tx , db ,rgp-> feid , 1); 59 `LOGCOPY_32 ( v , & ump , bp ); 60 gp -> pgno = ( db_pgno_t ) ump ; 61 bp +( ump ); 63 `LOGCOPY_32 ( v , & gp -> ndx , bp ); 64 bp +( gp -> ndx ); 66 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 67 bp +( DB_LSN ); 69 `memt (& gp -> key , 0, (argp->key)); 70 `LOGCOPY_32 ( v ,& gp -> key . size , bp ); 71 bp +( u_t32_t ); 72 gp -> key . da = bp ; 73 bp + gp -> key . size ; 75 `memt (& gp -> da , 0, (argp->data)); 76 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 77 bp +( u_t32_t ); 78 gp -> da .d bp ; 79 bp + gp -> da . size ; 81 * g = gp ; 82 ( t ); 83 } } 91 $__ham_sd_log ( dbp , tx , t_lp , ags , 92 code , pgno , ndx , g , key , 93 da ) 94 DB * dbp ; 95 DB_TXN * tx ; 96 DB_LSN * t_lp ; 97 u_t32_t ags ; 98 u_t32_t code ; 99 db_pgno_t pgno ; 100 u_t32_t ndx ; 101 DB_LSN * g ; 102 cڡ DBT * key ; 103 cڡ DBT * da ; 105 DBT logc ; 106 DB_LSN * lp , nu_l , * p ; 107 DB_TXNLOGREC * ; 108 ENV * v ; 109 u_t32_t zo , ump , y , txn_num ; 110 u_t ad ; 111 u_t8_t * bp ; 112 is_dub , t ; 114 `COMPQUIET ( , NULL ); 116 v = dbp ->env; 117 p = t_lp ; 118 y = DB___ham_sd ; 119 ad = 0; 120 t = 0; 122 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 123 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 124 i( tx = NULL ) 126 is_dub = 0; 128 is_dub = 1; 130 i( tx = NULL ) { 131 txn_num = 0; 132 lp = & nu_l ; 133 nu_l . fe =u_l. offt = 0; 135 i( `TAILQ_FIRST (& tx -> kids ! NULL && 136 ( t = `__txn_aivekids ( v , y , tx )) != 0) 137 ( t ); 144 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 145 txn_num = tx -> txnid ; 148 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 149 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 150 ( t = `__dbg_zy_id ( dbp )) != 0) 151 ( t ); 153 logc . size = ( y + ( txn_num + ( DB_LSN ) 154 + ( u_t32_t ) 155 + ( u_t32_t ) 156 + ( u_t32_t ) 157 + ( u_t32_t ) 158 + (* g ) 159 + ( u_t32_t + ( key = NULL ? 0 : key-> size ) 160 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 161 i( `CRYPTO_ON ( v )) { 162 ad = v -> yo_hd -> `adj_size ( logc . size ); 163 logc . size + ad ; 166 i( is_dub || tx = NULL ) { 167 i(( t = 168 `__os_mloc ( v , logc . size , &logc. da )) != 0) 169 ( t ); 171 i(( t = `__os_mloc ( v , 172 logc . size + ( DB_TXNLOGREC ), & )) != 0) 173 ( t ); 174 #ifde DIAGNOSTIC 175 i(( t = 176 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 177 `__os_ ( v , ); 178 ( t ); 181 logc . da = ->data; 184 i( ad > 0) 185 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 187 bp = logc . da ; 189 `LOGCOPY_32 ( v , bp , & y ); 190 bp +( y ); 192 `LOGCOPY_32 ( v , bp , & txn_num ); 193 bp +( txn_num ); 195 `LOGCOPY_FROMLSN ( v , bp , lp ); 196 bp +( DB_LSN ); 198 `LOGCOPY_32 ( v , bp , & code ); 199 bp +( code ); 201 ump = ( u_t32_t ) dbp -> log_fame -> id ; 202 `LOGCOPY_32 ( v , bp , & ump ); 203 bp +( ump ); 205 ump = ( u_t32_t ) pgno ; 206 `LOGCOPY_32 ( v , bp , & ump ); 207 bp +( ump ); 209 `LOGCOPY_32 ( v , bp , & ndx ); 210 bp +( ndx ); 212 i( g ! NULL ) { 213 i( tx ! NULL ) { 214 LOG * = v -> lg_hd -> gfo . imy ; 215 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 216 `__log_check_ge_l ( v , dbp , g ) != 0)) 217 ( t ); 219 `LOGCOPY_FROMLSN ( v , bp , g ); 221 `memt ( bp , 0, (* g )); 222 bp +(* g ); 224 i( key = NULL ) { 225 zo = 0; 226 `LOGCOPY_32 ( v , bp , & zo ); 227 bp +( u_t32_t ); 229 `LOGCOPY_32 ( v , bp , & key -> size ); 230 bp +( key -> size ); 231 `memy ( bp , key -> da , key-> size ); 232 bp + key -> size ; 235 i( da = NULL ) { 236 zo = 0; 237 `LOGCOPY_32 ( v , bp , & zo ); 238 bp +( u_t32_t ); 240 `LOGCOPY_32 ( v , bp , & da -> size ); 241 bp +( da -> size ); 242 `memy ( bp , da ->da, da-> size ); 243 bp + da -> size ; 246 `DB_ASSERT ( v , 247 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 249 i( is_dub || tx = NULL ) { 250 i(( t = `__log_put ( v , p ,( DBT *)& logc , 251 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 252 * lp = * p ; 253 i( p ! t_lp ) 254 * t_lp = * p ; 257 t = 0; 258 #ifde DIAGNOSTIC 263 `memy ( -> da , logc .da,ogc. size ); 264 y | DB_debug_FLAG ; 265 `LOGCOPY_32 ( v , logc . da , & y ); 267 i(! `IS_REP_CLIENT ( v )) 268 t = `__log_put ( v , 269 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 271 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 272 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 273 `LSN_NOT_LOGGED (* t_lp ); 276 #ifde LOG_DIAGNOSTIC 277 i( t != 0) 278 () `__ham_sd_t ( v , 279 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 282 #ifde DIAGNOSTIC 283 `__os_ ( v , logc . da ); 285 i( is_dub || tx = NULL ) 286 `__os_ ( v , logc . da ); 288 ( t ); 289 } } 296 $__ham_wge_ad ( v , db , td , cbuf , g ) 297 ENV * v ; 298 DB ** db ; 299 * td ; 300 * cbuf ; 301 __ham_wge_gs ** g ; 303 __ham_wge_gs * gp ; 304 u_t32_t ump ; 305 u_t8_t * bp ; 306 t ; 308 i(( t = `__os_mloc ( v , 309 ( __ham_wge_gs + ( DB_TXN ), & gp )) != 0) 310 ( t ); 311 bp = cbuf ; 312 gp -> tx = ( DB_TXN *)&argp[1]; 313 `memt ( gp -> tx , 0, ( DB_TXN )); 315 gp -> tx -> td =d; 316 `LOGCOPY_32 ( v , & gp -> ty , bp ); 317 bp +( gp -> ty ); 319 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 320 bp +( gp -> tx -> txnid ); 322 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 323 bp +( DB_LSN ); 325 `LOGCOPY_32 ( v , & gp -> code , bp ); 326 bp +( gp -> code ); 328 `LOGCOPY_32 ( v , & ump , bp ); 329 gp -> feid = ( t32_t ) ump ; 330 bp +( ump ); 331 i( db ! NULL ) { 332 * db = NULL ; 333 t = `__dbg_id_to_db ( 334 v , gp -> tx , db ,rgp-> feid , 1); 337 `LOGCOPY_32 ( v , & ump , bp ); 338 gp -> ev_pgno = ( db_pgno_t ) ump ; 339 bp +( ump ); 341 `LOGCOPY_TOLSN ( v , & gp -> evl , bp ); 342 bp +( DB_LSN ); 344 `LOGCOPY_32 ( v , & ump , bp ); 345 gp -> w_pgno = ( db_pgno_t ) ump ; 346 bp +( ump ); 348 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 349 bp +( DB_LSN ); 351 `LOGCOPY_32 ( v , & ump , bp ); 352 gp -> xt_pgno = ( db_pgno_t ) ump ; 353 bp +( ump ); 355 `LOGCOPY_TOLSN ( v , & gp -> x , bp ); 356 bp +( DB_LSN ); 358 * g = gp ; 359 ( t ); 360 } } 368 $__ham_wge_log ( dbp , tx , t_lp , ags , 369 code , ev_pgno , evl , w_pgno , g , 370 xt_pgno , x ) 371 DB * dbp ; 372 DB_TXN * tx ; 373 DB_LSN * t_lp ; 374 u_t32_t ags ; 375 u_t32_t code ; 376 db_pgno_t ev_pgno ; 377 DB_LSN * evl ; 378 db_pgno_t w_pgno ; 379 DB_LSN * g ; 380 db_pgno_t xt_pgno ; 381 DB_LSN * x ; 383 DBT logc ; 384 DB_LSN * lp , nu_l , * p ; 385 DB_TXNLOGREC * ; 386 ENV * v ; 387 u_t32_t ump , y , txn_num ; 388 u_t ad ; 389 u_t8_t * bp ; 390 is_dub , t ; 392 `COMPQUIET ( , NULL ); 394 v = dbp ->env; 395 p = t_lp ; 396 y = DB___ham_wge ; 397 ad = 0; 398 t = 0; 400 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 401 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 402 i( tx = NULL ) 404 is_dub = 0; 406 is_dub = 1; 408 i( tx = NULL ) { 409 txn_num = 0; 410 lp = & nu_l ; 411 nu_l . fe =u_l. offt = 0; 413 i( `TAILQ_FIRST (& tx -> kids ! NULL && 414 ( t = `__txn_aivekids ( v , y , tx )) != 0) 415 ( t ); 422 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 423 txn_num = tx -> txnid ; 426 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 427 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 428 ( t = `__dbg_zy_id ( dbp )) != 0) 429 ( t ); 431 logc . size = ( y + ( txn_num + ( DB_LSN ) 432 + ( u_t32_t ) 433 + ( u_t32_t ) 434 + ( u_t32_t ) 435 + (* evl ) 436 + ( u_t32_t ) 437 + (* g ) 438 + ( u_t32_t ) 439 + (* x ); 440 i( `CRYPTO_ON ( v )) { 441 ad = v -> yo_hd -> `adj_size ( logc . size ); 442 logc . size + ad ; 445 i( is_dub || tx = NULL ) { 446 i(( t = 447 `__os_mloc ( v , logc . size , &logc. da )) != 0) 448 ( t ); 450 i(( t = `__os_mloc ( v , 451 logc . size + ( DB_TXNLOGREC ), & )) != 0) 452 ( t ); 453 #ifde DIAGNOSTIC 454 i(( t = 455 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 456 `__os_ ( v , ); 457 ( t ); 460 logc . da = ->data; 463 i( ad > 0) 464 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 466 bp = logc . da ; 468 `LOGCOPY_32 ( v , bp , & y ); 469 bp +( y ); 471 `LOGCOPY_32 ( v , bp , & txn_num ); 472 bp +( txn_num ); 474 `LOGCOPY_FROMLSN ( v , bp , lp ); 475 bp +( DB_LSN ); 477 `LOGCOPY_32 ( v , bp , & code ); 478 bp +( code ); 480 ump = ( u_t32_t ) dbp -> log_fame -> id ; 481 `LOGCOPY_32 ( v , bp , & ump ); 482 bp +( ump ); 484 ump = ( u_t32_t ) ev_pgno ; 485 `LOGCOPY_32 ( v , bp , & ump ); 486 bp +( ump ); 488 i( evl ! NULL ) { 489 i( tx ! NULL ) { 490 LOG * = v -> lg_hd -> gfo . imy ; 491 i( `LOG_COMPARE ( evl , & -> l >0 && ( t = 492 `__log_check_ge_l ( v , dbp , evl ) != 0)) 493 ( t ); 495 `LOGCOPY_FROMLSN ( v , bp , evl ); 497 `memt ( bp , 0, (* evl )); 498 bp +(* evl ); 500 ump = ( u_t32_t ) w_pgno ; 501 `LOGCOPY_32 ( v , bp , & ump ); 502 bp +( ump ); 504 i( g ! NULL ) { 505 i( tx ! NULL ) { 506 LOG * = v -> lg_hd -> gfo . imy ; 507 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 508 `__log_check_ge_l ( v , dbp , g ) != 0)) 509 ( t ); 511 `LOGCOPY_FROMLSN ( v , bp , g ); 513 `memt ( bp , 0, (* g )); 514 bp +(* g ); 516 ump = ( u_t32_t ) xt_pgno ; 517 `LOGCOPY_32 ( v , bp , & ump ); 518 bp +( ump ); 520 i( x ! NULL ) { 521 i( tx ! NULL ) { 522 LOG * = v -> lg_hd -> gfo . imy ; 523 i( `LOG_COMPARE ( x , & -> l >0 && ( t = 524 `__log_check_ge_l ( v , dbp , x ) != 0)) 525 ( t ); 527 `LOGCOPY_FROMLSN ( v , bp , x ); 529 `memt ( bp , 0, (* x )); 530 bp +(* x ); 532 `DB_ASSERT ( v , 533 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 535 i( is_dub || tx = NULL ) { 536 i(( t = `__log_put ( v , p ,( DBT *)& logc , 537 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 538 * lp = * p ; 539 i( p ! t_lp ) 540 * t_lp = * p ; 543 t = 0; 544 #ifde DIAGNOSTIC 549 `memy ( -> da , logc .da,ogc. size ); 550 y | DB_debug_FLAG ; 551 `LOGCOPY_32 ( v , logc . da , & y ); 553 i(! `IS_REP_CLIENT ( v )) 554 t = `__log_put ( v , 555 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 557 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 558 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 559 `LSN_NOT_LOGGED (* t_lp ); 562 #ifde LOG_DIAGNOSTIC 563 i( t != 0) 564 () `__ham_wge_t ( v , 565 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 568 #ifde DIAGNOSTIC 569 `__os_ ( v , logc . da ); 571 i( is_dub || tx = NULL ) 572 `__os_ ( v , logc . da ); 574 ( t ); 575 } } 582 $__ham_lda_ad ( v , db , td , cbuf , g ) 583 ENV * v ; 584 DB ** db ; 585 * td ; 586 * cbuf ; 587 __ham_lda_gs ** g ; 589 __ham_lda_gs * gp ; 590 u_t32_t ump ; 591 u_t8_t * bp ; 592 t ; 594 i(( t = `__os_mloc ( v , 595 ( __ham_lda_gs + ( DB_TXN ), & gp )) != 0) 596 ( t ); 597 bp = cbuf ; 598 gp -> tx = ( DB_TXN *)&argp[1]; 599 `memt ( gp -> tx , 0, ( DB_TXN )); 601 gp -> tx -> td =d; 602 `LOGCOPY_32 ( v , & gp -> ty , bp ); 603 bp +( gp -> ty ); 605 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 606 bp +( gp -> tx -> txnid ); 608 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 609 bp +( DB_LSN ); 611 `LOGCOPY_32 ( v , & ump , bp ); 612 gp -> feid = ( t32_t ) ump ; 613 bp +( ump ); 614 i( db ! NULL ) { 615 * db = NULL ; 616 t = `__dbg_id_to_db ( 617 v , gp -> tx , db ,rgp-> feid , 1); 620 `LOGCOPY_32 ( v , & gp -> code , bp ); 621 bp +( gp -> code ); 623 `LOGCOPY_32 ( v , & ump , bp ); 624 gp -> pgno = ( db_pgno_t ) ump ; 625 bp +( ump ); 627 `memt (& gp -> geimage , 0, (argp->pageimage)); 628 `LOGCOPY_32 ( v ,& gp -> geimage . size , bp ); 629 bp +( u_t32_t ); 630 gp -> geimage . da = bp ; 631 bp + gp -> geimage . size ; 632 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 633 t_t ; 634 i(( t_t = `__db_gesw (* db , ( PAGE *) gp -> geimage . da , 635 ( size_t ) gp -> geimage . size , NULL , 1)) != 0) 636 ( t_t ); 639 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 640 bp +( DB_LSN ); 642 * g = gp ; 643 ( t ); 644 } } 651 $__ham_lda_log ( dbp , tx , t_lp , ags , code , pgno , geimage , g ) 652 DB * dbp ; 653 DB_TXN * tx ; 654 DB_LSN * t_lp ; 655 u_t32_t ags ; 656 u_t32_t code ; 657 db_pgno_t pgno ; 658 cڡ DBT * geimage ; 659 DB_LSN * g ; 661 DBT logc ; 662 DB_LSN * lp , nu_l , * p ; 663 DB_TXNLOGREC * ; 664 ENV * v ; 665 u_t32_t zo , ump , y , txn_num ; 666 u_t ad ; 667 u_t8_t * bp ; 668 is_dub , t ; 670 `COMPQUIET ( , NULL ); 672 v = dbp ->env; 673 p = t_lp ; 674 y = DB___ham_lda ; 675 ad = 0; 676 t = 0; 678 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 679 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 680 i( tx = NULL ) 682 is_dub = 0; 684 is_dub = 1; 686 i( tx = NULL ) { 687 txn_num = 0; 688 lp = & nu_l ; 689 nu_l . fe =u_l. offt = 0; 691 i( `TAILQ_FIRST (& tx -> kids ! NULL && 692 ( t = `__txn_aivekids ( v , y , tx )) != 0) 693 ( t ); 700 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 701 txn_num = tx -> txnid ; 704 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 705 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 706 ( t = `__dbg_zy_id ( dbp )) != 0) 707 ( t ); 709 logc . size = ( y + ( txn_num + ( DB_LSN ) 710 + ( u_t32_t ) 711 + ( u_t32_t ) 712 + ( u_t32_t ) 713 + ( u_t32_t + ( geimage = NULL ? 0 :ageimage-> size ) 714 + (* g ); 715 i( `CRYPTO_ON ( v )) { 716 ad = v -> yo_hd -> `adj_size ( logc . size ); 717 logc . size + ad ; 720 i( is_dub || tx = NULL ) { 721 i(( t = 722 `__os_mloc ( v , logc . size , &logc. da )) != 0) 723 ( t ); 725 i(( t = `__os_mloc ( v , 726 logc . size + ( DB_TXNLOGREC ), & )) != 0) 727 ( t ); 728 #ifde DIAGNOSTIC 729 i(( t = 730 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 731 `__os_ ( v , ); 732 ( t ); 735 logc . da = ->data; 738 i( ad > 0) 739 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 741 bp = logc . da ; 743 `LOGCOPY_32 ( v , bp , & y ); 744 bp +( y ); 746 `LOGCOPY_32 ( v , bp , & txn_num ); 747 bp +( txn_num ); 749 `LOGCOPY_FROMLSN ( v , bp , lp ); 750 bp +( DB_LSN ); 752 ump = ( u_t32_t ) dbp -> log_fame -> id ; 753 `LOGCOPY_32 ( v , bp , & ump ); 754 bp +( ump ); 756 `LOGCOPY_32 ( v , bp , & code ); 757 bp +( code ); 759 ump = ( u_t32_t ) pgno ; 760 `LOGCOPY_32 ( v , bp , & ump ); 761 bp +( ump ); 763 i( geimage = NULL ) { 764 zo = 0; 765 `LOGCOPY_32 ( v , bp , & zo ); 766 bp +( u_t32_t ); 768 `LOGCOPY_32 ( v , bp , & geimage -> size ); 769 bp +( geimage -> size ); 770 `memy ( bp , geimage -> da ,ageimage-> size ); 771 i( `LOG_SWAPPED ( v )) 772 i(( t = `__db_gesw ( dbp , 773 ( PAGE *) bp , ( size_t ) geimage -> size , ( DBT *) NULL , 0)) != 0) 774 ( t ); 775 bp + geimage -> size ; 778 i( g ! NULL ) { 779 i( tx ! NULL ) { 780 LOG * = v -> lg_hd -> gfo . imy ; 781 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 782 `__log_check_ge_l ( v , dbp , g ) != 0)) 783 ( t ); 785 `LOGCOPY_FROMLSN ( v , bp , g ); 787 `memt ( bp , 0, (* g )); 788 bp +(* g ); 790 `DB_ASSERT ( v , 791 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 793 i( is_dub || tx = NULL ) { 794 i(( t = `__log_put ( v , p ,( DBT *)& logc , 795 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 796 * lp = * p ; 797 i( p ! t_lp ) 798 * t_lp = * p ; 801 t = 0; 802 #ifde DIAGNOSTIC 807 `memy ( -> da , logc .da,ogc. size ); 808 y | DB_debug_FLAG ; 809 `LOGCOPY_32 ( v , logc . da , & y ); 811 i(! `IS_REP_CLIENT ( v )) 812 t = `__log_put ( v , 813 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 815 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 816 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 817 `LSN_NOT_LOGGED (* t_lp ); 820 #ifde LOG_DIAGNOSTIC 821 i( t != 0) 822 () `__ham_lda_t ( v , 823 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 826 #ifde DIAGNOSTIC 827 `__os_ ( v , logc . da ); 829 i( is_dub || tx = NULL ) 830 `__os_ ( v , logc . da ); 832 ( t ); 833 } } 840 $__ham_a_ad ( v , db , td , cbuf , g ) 841 ENV * v ; 842 DB ** db ; 843 * td ; 844 * cbuf ; 845 __ham_a_gs ** g ; 847 __ham_a_gs * gp ; 848 u_t32_t ump ; 849 u_t8_t * bp ; 850 t ; 852 i(( t = `__os_mloc ( v , 853 ( __ham_a_gs + ( DB_TXN ), & gp )) != 0) 854 ( t ); 855 bp = cbuf ; 856 gp -> tx = ( DB_TXN *)&argp[1]; 857 `memt ( gp -> tx , 0, ( DB_TXN )); 859 gp -> tx -> td =d; 860 `LOGCOPY_32 ( v , & gp -> ty , bp ); 861 bp +( gp -> ty ); 863 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 864 bp +( gp -> tx -> txnid ); 866 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 867 bp +( DB_LSN ); 869 `LOGCOPY_32 ( v , & ump , bp ); 870 gp -> feid = ( t32_t ) ump ; 871 bp +( ump ); 872 i( db ! NULL ) { 873 * db = NULL ; 874 t = `__dbg_id_to_db ( 875 v , gp -> tx , db ,rgp-> feid , 1); 878 `LOGCOPY_32 ( v , & ump , bp ); 879 gp -> pgno = ( db_pgno_t ) ump ; 880 bp +( ump ); 882 `LOGCOPY_32 ( v , & gp -> ndx , bp ); 883 bp +( gp -> ndx ); 885 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 886 bp +( DB_LSN ); 888 `LOGCOPY_32 ( v , & ump , bp ); 889 gp -> off = ( t32_t ) ump ; 890 bp +( ump ); 892 `memt (& gp -> dem , 0, (argp->olditem)); 893 `LOGCOPY_32 ( v ,& gp -> dem . size , bp ); 894 bp +( u_t32_t ); 895 gp -> dem . da = bp ; 896 bp + gp -> dem . size ; 898 `memt (& gp -> wem , 0, (argp->newitem)); 899 `LOGCOPY_32 ( v ,& gp -> wem . size , bp ); 900 bp +( u_t32_t ); 901 gp -> wem . da = bp ; 902 bp + gp -> wem . size ; 904 `LOGCOPY_32 ( v , & gp -> makedup , bp ); 905 bp +( gp -> makedup ); 907 * g = gp ; 908 ( t ); 909 } } 917 $__ham_a_log ( dbp , tx , t_lp , ags , pgno , ndx , g , off , dem , 918 wem , makedup ) 919 DB * dbp ; 920 DB_TXN * tx ; 921 DB_LSN * t_lp ; 922 u_t32_t ags ; 923 db_pgno_t pgno ; 924 u_t32_t ndx ; 925 DB_LSN * g ; 926 t32_t off ; 927 cڡ DBT * dem ; 928 cڡ DBT * wem ; 929 u_t32_t makedup ; 931 DBT logc ; 932 DB_LSN * lp , nu_l , * p ; 933 DB_TXNLOGREC * ; 934 ENV * v ; 935 u_t32_t zo , ump , y , txn_num ; 936 u_t ad ; 937 u_t8_t * bp ; 938 is_dub , t ; 940 `COMPQUIET ( , NULL ); 942 v = dbp ->env; 943 p = t_lp ; 944 y = DB___ham_a ; 945 ad = 0; 946 t = 0; 948 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 949 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 950 i( tx = NULL ) 952 is_dub = 0; 954 is_dub = 1; 956 i( tx = NULL ) { 957 txn_num = 0; 958 lp = & nu_l ; 959 nu_l . fe =u_l. offt = 0; 961 i( `TAILQ_FIRST (& tx -> kids ! NULL && 962 ( t = `__txn_aivekids ( v , y , tx )) != 0) 963 ( t ); 970 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 971 txn_num = tx -> txnid ; 974 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 975 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 976 ( t = `__dbg_zy_id ( dbp )) != 0) 977 ( t ); 979 logc . size = ( y + ( txn_num + ( DB_LSN ) 980 + ( u_t32_t ) 981 + ( u_t32_t ) 982 + ( u_t32_t ) 983 + (* g ) 984 + ( u_t32_t ) 985 + ( u_t32_t + ( dem = NULL ? 0 : oldem-> size ) 986 + ( u_t32_t + ( wem = NULL ? 0 :ewem-> size ) 987 + ( u_t32_t ); 988 i( `CRYPTO_ON ( v )) { 989 ad = v -> yo_hd -> `adj_size ( logc . size ); 990 logc . size + ad ; 993 i( is_dub || tx = NULL ) { 994 i(( t = 995 `__os_mloc ( v , logc . size , &logc. da )) != 0) 996 ( t ); 998 i(( t = `__os_mloc ( v , 999 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1000 ( t ); 1001 #ifde DIAGNOSTIC 1002 i(( t = 1003 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1004 `__os_ ( v , ); 1005 ( t ); 1008 logc . da = ->data; 1011 i( ad > 0) 1012 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1014 bp = logc . da ; 1016 `LOGCOPY_32 ( v , bp , & y ); 1017 bp +( y ); 1019 `LOGCOPY_32 ( v , bp , & txn_num ); 1020 bp +( txn_num ); 1022 `LOGCOPY_FROMLSN ( v , bp , lp ); 1023 bp +( DB_LSN ); 1025 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1026 `LOGCOPY_32 ( v , bp , & ump ); 1027 bp +( ump ); 1029 ump = ( u_t32_t ) pgno ; 1030 `LOGCOPY_32 ( v , bp , & ump ); 1031 bp +( ump ); 1033 `LOGCOPY_32 ( v , bp , & ndx ); 1034 bp +( ndx ); 1036 i( g ! NULL ) { 1037 i( tx ! NULL ) { 1038 LOG * = v -> lg_hd -> gfo . imy ; 1039 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 1040 `__log_check_ge_l ( v , dbp , g ) != 0)) 1041 ( t ); 1043 `LOGCOPY_FROMLSN ( v , bp , g ); 1045 `memt ( bp , 0, (* g )); 1046 bp +(* g ); 1048 ump = ( u_t32_t ) off ; 1049 `LOGCOPY_32 ( v , bp , & ump ); 1050 bp +( ump ); 1052 i( dem = NULL ) { 1053 zo = 0; 1054 `LOGCOPY_32 ( v , bp , & zo ); 1055 bp +( u_t32_t ); 1057 `LOGCOPY_32 ( v , bp , & dem -> size ); 1058 bp +( dem -> size ); 1059 `memy ( bp , dem -> da , oldem-> size ); 1060 bp + dem -> size ; 1063 i( wem = NULL ) { 1064 zo = 0; 1065 `LOGCOPY_32 ( v , bp , & zo ); 1066 bp +( u_t32_t ); 1068 `LOGCOPY_32 ( v , bp , & wem -> size ); 1069 bp +( wem -> size ); 1070 `memy ( bp , wem -> da ,ewem-> size ); 1071 bp + wem -> size ; 1074 `LOGCOPY_32 ( v , bp , & makedup ); 1075 bp +( makedup ); 1077 `DB_ASSERT ( v , 1078 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1080 i( is_dub || tx = NULL ) { 1081 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1082 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1083 * lp = * p ; 1084 i( p ! t_lp ) 1085 * t_lp = * p ; 1088 t = 0; 1089 #ifde DIAGNOSTIC 1094 `memy ( -> da , logc .da,ogc. size ); 1095 y | DB_debug_FLAG ; 1096 `LOGCOPY_32 ( v , logc . da , & y ); 1098 i(! `IS_REP_CLIENT ( v )) 1099 t = `__log_put ( v , 1100 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1102 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1103 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1104 `LSN_NOT_LOGGED (* t_lp ); 1107 #ifde LOG_DIAGNOSTIC 1108 i( t != 0) 1109 () `__ham_a_t ( v , 1110 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1113 #ifde DIAGNOSTIC 1114 `__os_ ( v , logc . da ); 1116 i( is_dub || tx = NULL ) 1117 `__os_ ( v , logc . da ); 1119 ( t ); 1120 } } 1127 $__ham_cyge_ad ( v , db , td , cbuf , g ) 1128 ENV * v ; 1129 DB ** db ; 1130 * td ; 1131 * cbuf ; 1132 __ham_cyge_gs ** g ; 1134 __ham_cyge_gs * gp ; 1135 u_t32_t ump ; 1136 u_t8_t * bp ; 1137 t ; 1139 i(( t = `__os_mloc ( v , 1140 ( __ham_cyge_gs + ( DB_TXN ), & gp )) != 0) 1141 ( t ); 1142 bp = cbuf ; 1143 gp -> tx = ( DB_TXN *)&argp[1]; 1144 `memt ( gp -> tx , 0, ( DB_TXN )); 1146 gp -> tx -> td =d; 1147 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1148 bp +( gp -> ty ); 1150 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1151 bp +( gp -> tx -> txnid ); 1153 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1154 bp +( DB_LSN ); 1156 `LOGCOPY_32 ( v , & ump , bp ); 1157 gp -> feid = ( t32_t ) ump ; 1158 bp +( ump ); 1159 i( db ! NULL ) { 1160 * db = NULL ; 1161 t = `__dbg_id_to_db ( 1162 v , gp -> tx , db ,rgp-> feid , 1); 1165 `LOGCOPY_32 ( v , & ump , bp ); 1166 gp -> pgno = ( db_pgno_t ) ump ; 1167 bp +( ump ); 1169 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 1170 bp +( DB_LSN ); 1172 `LOGCOPY_32 ( v , & ump , bp ); 1173 gp -> xt_pgno = ( db_pgno_t ) ump ; 1174 bp +( ump ); 1176 `LOGCOPY_TOLSN ( v , & gp -> x , bp ); 1177 bp +( DB_LSN ); 1179 `LOGCOPY_32 ( v , & ump , bp ); 1180 gp -> ext_pgno = ( db_pgno_t ) ump ; 1181 bp +( ump ); 1183 `LOGCOPY_TOLSN ( v , & gp -> ex , bp ); 1184 bp +( DB_LSN ); 1186 `memt (& gp -> ge , 0, (argp->page)); 1187 `LOGCOPY_32 ( v ,& gp -> ge . size , bp ); 1188 bp +( u_t32_t ); 1189 gp -> ge . da = bp ; 1190 bp + gp -> ge . size ; 1191 i( `LOG_SWAPPED ( v && db ! NULL && *dbpp != NULL) { 1192 t_t ; 1193 i(( t_t = `__db_gesw (* db , ( PAGE *) gp -> ge . da , 1194 ( size_t ) gp -> ge . size , NULL , 1)) != 0) 1195 ( t_t ); 1198 * g = gp ; 1199 ( t ); 1200 } } 1208 $__ham_cyge_log ( dbp , tx , t_lp , ags , pgno , g , xt_pgno , x , ext_pgno , 1209 ex , ge ) 1210 DB * dbp ; 1211 DB_TXN * tx ; 1212 DB_LSN * t_lp ; 1213 u_t32_t ags ; 1214 db_pgno_t pgno ; 1215 DB_LSN * g ; 1216 db_pgno_t xt_pgno ; 1217 DB_LSN * x ; 1218 db_pgno_t ext_pgno ; 1219 DB_LSN * ex ; 1220 cڡ DBT * ge ; 1222 DBT logc ; 1223 DB_LSN * lp , nu_l , * p ; 1224 DB_TXNLOGREC * ; 1225 ENV * v ; 1226 u_t32_t zo , ump , y , txn_num ; 1227 u_t ad ; 1228 u_t8_t * bp ; 1229 is_dub , t ; 1231 `COMPQUIET ( , NULL ); 1233 v = dbp ->env; 1234 p = t_lp ; 1235 y = DB___ham_cyge ; 1236 ad = 0; 1237 t = 0; 1239 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1240 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1241 i( tx = NULL ) 1243 is_dub = 0; 1245 is_dub = 1; 1247 i( tx = NULL ) { 1248 txn_num = 0; 1249 lp = & nu_l ; 1250 nu_l . fe =u_l. offt = 0; 1252 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1253 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1254 ( t ); 1261 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1262 txn_num = tx -> txnid ; 1265 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1266 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1267 ( t = `__dbg_zy_id ( dbp )) != 0) 1268 ( t ); 1270 logc . size = ( y + ( txn_num + ( DB_LSN ) 1271 + ( u_t32_t ) 1272 + ( u_t32_t ) 1273 + (* g ) 1274 + ( u_t32_t ) 1275 + (* x ) 1276 + ( u_t32_t ) 1277 + (* ex ) 1278 + ( u_t32_t + ( ge = NULL ? 0 :age-> size ); 1279 i( `CRYPTO_ON ( v )) { 1280 ad = v -> yo_hd -> `adj_size ( logc . size ); 1281 logc . size + ad ; 1284 i( is_dub || tx = NULL ) { 1285 i(( t = 1286 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1287 ( t ); 1289 i(( t = `__os_mloc ( v , 1290 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1291 ( t ); 1292 #ifde DIAGNOSTIC 1293 i(( t = 1294 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1295 `__os_ ( v , ); 1296 ( t ); 1299 logc . da = ->data; 1302 i( ad > 0) 1303 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1305 bp = logc . da ; 1307 `LOGCOPY_32 ( v , bp , & y ); 1308 bp +( y ); 1310 `LOGCOPY_32 ( v , bp , & txn_num ); 1311 bp +( txn_num ); 1313 `LOGCOPY_FROMLSN ( v , bp , lp ); 1314 bp +( DB_LSN ); 1316 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1317 `LOGCOPY_32 ( v , bp , & ump ); 1318 bp +( ump ); 1320 ump = ( u_t32_t ) pgno ; 1321 `LOGCOPY_32 ( v , bp , & ump ); 1322 bp +( ump ); 1324 i( g ! NULL ) { 1325 i( tx ! NULL ) { 1326 LOG * = v -> lg_hd -> gfo . imy ; 1327 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 1328 `__log_check_ge_l ( v , dbp , g ) != 0)) 1329 ( t ); 1331 `LOGCOPY_FROMLSN ( v , bp , g ); 1333 `memt ( bp , 0, (* g )); 1334 bp +(* g ); 1336 ump = ( u_t32_t ) xt_pgno ; 1337 `LOGCOPY_32 ( v , bp , & ump ); 1338 bp +( ump ); 1340 i( x ! NULL ) { 1341 i( tx ! NULL ) { 1342 LOG * = v -> lg_hd -> gfo . imy ; 1343 i( `LOG_COMPARE ( x , & -> l >0 && ( t = 1344 `__log_check_ge_l ( v , dbp , x ) != 0)) 1345 ( t ); 1347 `LOGCOPY_FROMLSN ( v , bp , x ); 1349 `memt ( bp , 0, (* x )); 1350 bp +(* x ); 1352 ump = ( u_t32_t ) ext_pgno ; 1353 `LOGCOPY_32 ( v , bp , & ump ); 1354 bp +( ump ); 1356 i( ex ! NULL ) { 1357 i( tx ! NULL ) { 1358 LOG * = v -> lg_hd -> gfo . imy ; 1359 i( `LOG_COMPARE ( ex , & -> l >0 && ( t = 1360 `__log_check_ge_l ( v , dbp , ex ) != 0)) 1361 ( t ); 1363 `LOGCOPY_FROMLSN ( v , bp , ex ); 1365 `memt ( bp , 0, (* ex )); 1366 bp +(* ex ); 1368 i( ge = NULL ) { 1369 zo = 0; 1370 `LOGCOPY_32 ( v , bp , & zo ); 1371 bp +( u_t32_t ); 1373 `LOGCOPY_32 ( v , bp , & ge -> size ); 1374 bp +( ge -> size ); 1375 `memy ( bp , ge -> da ,age-> size ); 1376 i( `LOG_SWAPPED ( v )) 1377 i(( t = `__db_gesw ( dbp , 1378 ( PAGE *) bp , ( size_t ) ge -> size , ( DBT *) NULL , 0)) != 0) 1379 ( t ); 1380 bp + ge -> size ; 1383 `DB_ASSERT ( v , 1384 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1386 i( is_dub || tx = NULL ) { 1387 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1388 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1389 * lp = * p ; 1390 i( p ! t_lp ) 1391 * t_lp = * p ; 1394 t = 0; 1395 #ifde DIAGNOSTIC 1400 `memy ( -> da , logc .da,ogc. size ); 1401 y | DB_debug_FLAG ; 1402 `LOGCOPY_32 ( v , logc . da , & y ); 1404 i(! `IS_REP_CLIENT ( v )) 1405 t = `__log_put ( v , 1406 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1408 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1409 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1410 `LSN_NOT_LOGGED (* t_lp ); 1413 #ifde LOG_DIAGNOSTIC 1414 i( t != 0) 1415 () `__ham_cyge_t ( v , 1416 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1419 #ifde DIAGNOSTIC 1420 `__os_ ( v , logc . da ); 1422 i( is_dub || tx = NULL ) 1423 `__os_ ( v , logc . da ); 1425 ( t ); 1426 } } 1433 $__ham_magroup_42_ad ( v , db , td , cbuf , g ) 1434 ENV * v ; 1435 DB ** db ; 1436 * td ; 1437 * cbuf ; 1438 __ham_magroup_42_gs ** g ; 1440 __ham_magroup_42_gs * gp ; 1441 u_t32_t ump ; 1442 u_t8_t * bp ; 1443 t ; 1445 i(( t = `__os_mloc ( v , 1446 ( __ham_magroup_42_gs + ( DB_TXN ), & gp )) != 0) 1447 ( t ); 1448 bp = cbuf ; 1449 gp -> tx = ( DB_TXN *)&argp[1]; 1450 `memt ( gp -> tx , 0, ( DB_TXN )); 1452 gp -> tx -> td =d; 1453 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1454 bp +( gp -> ty ); 1456 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1457 bp +( gp -> tx -> txnid ); 1459 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1460 bp +( DB_LSN ); 1462 `LOGCOPY_32 ( v , & ump , bp ); 1463 gp -> feid = ( t32_t ) ump ; 1464 bp +( ump ); 1465 i( db ! NULL ) { 1466 * db = NULL ; 1467 t = `__dbg_id_to_db ( 1468 v , gp -> tx , db ,rgp-> feid , 1); 1471 `LOGCOPY_32 ( v , & gp -> buck , bp ); 1472 bp +( gp -> buck ); 1474 `LOGCOPY_32 ( v , & ump , bp ); 1475 gp -> mmpgno = ( db_pgno_t ) ump ; 1476 bp +( ump ); 1478 `LOGCOPY_TOLSN ( v , & gp -> mm , bp ); 1479 bp +( DB_LSN ); 1481 `LOGCOPY_32 ( v , & ump , bp ); 1482 gp -> mpgno = ( db_pgno_t ) ump ; 1483 bp +( ump ); 1485 `LOGCOPY_TOLSN ( v , & gp -> m , bp ); 1486 bp +( DB_LSN ); 1488 `LOGCOPY_32 ( v , & ump , bp ); 1489 gp -> pgno = ( db_pgno_t ) ump ; 1490 bp +( ump ); 1492 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 1493 bp +( DB_LSN ); 1495 `LOGCOPY_32 ( v , & gp -> wloc , bp ); 1496 bp +( gp -> wloc ); 1498 * g = gp ; 1499 ( t ); 1500 } } 1507 $__ham_magroup_ad ( v , db , td , cbuf , g ) 1508 ENV * v ; 1509 DB ** db ; 1510 * td ; 1511 * cbuf ; 1512 __ham_magroup_gs ** g ; 1514 __ham_magroup_gs * gp ; 1515 u_t32_t ump ; 1516 u_t8_t * bp ; 1517 t ; 1519 i(( t = `__os_mloc ( v , 1520 ( __ham_magroup_gs + ( DB_TXN ), & gp )) != 0) 1521 ( t ); 1522 bp = cbuf ; 1523 gp -> tx = ( DB_TXN *)&argp[1]; 1524 `memt ( gp -> tx , 0, ( DB_TXN )); 1526 gp -> tx -> td =d; 1527 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1528 bp +( gp -> ty ); 1530 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1531 bp +( gp -> tx -> txnid ); 1533 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1534 bp +( DB_LSN ); 1536 `LOGCOPY_32 ( v , & ump , bp ); 1537 gp -> feid = ( t32_t ) ump ; 1538 bp +( ump ); 1539 i( db ! NULL ) { 1540 * db = NULL ; 1541 t = `__dbg_id_to_db ( 1542 v , gp -> tx , db ,rgp-> feid , 1); 1545 `LOGCOPY_32 ( v , & gp -> buck , bp ); 1546 bp +( gp -> buck ); 1548 `LOGCOPY_32 ( v , & ump , bp ); 1549 gp -> mmpgno = ( db_pgno_t ) ump ; 1550 bp +( ump ); 1552 `LOGCOPY_TOLSN ( v , & gp -> mm , bp ); 1553 bp +( DB_LSN ); 1555 `LOGCOPY_32 ( v , & ump , bp ); 1556 gp -> mpgno = ( db_pgno_t ) ump ; 1557 bp +( ump ); 1559 `LOGCOPY_TOLSN ( v , & gp -> m , bp ); 1560 bp +( DB_LSN ); 1562 `LOGCOPY_32 ( v , & ump , bp ); 1563 gp -> pgno = ( db_pgno_t ) ump ; 1564 bp +( ump ); 1566 `LOGCOPY_TOLSN ( v , & gp -> g , bp ); 1567 bp +( DB_LSN ); 1569 `LOGCOPY_32 ( v , & gp -> wloc , bp ); 1570 bp +( gp -> wloc ); 1572 `LOGCOPY_32 ( v , & ump , bp ); 1573 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 1574 bp +( ump ); 1576 * g = gp ; 1577 ( t ); 1578 } } 1586 $__ham_magroup_log ( dbp , tx , t_lp , ags , buck , mmpgno , mm , mpgno , m , 1587 pgno , g , wloc , ϡ_pgno ) 1588 DB * dbp ; 1589 DB_TXN * tx ; 1590 DB_LSN * t_lp ; 1591 u_t32_t ags ; 1592 u_t32_t buck ; 1593 db_pgno_t mmpgno ; 1594 DB_LSN * mm ; 1595 db_pgno_t mpgno ; 1596 DB_LSN * m ; 1597 db_pgno_t pgno ; 1598 DB_LSN * g ; 1599 u_t32_t wloc ; 1600 db_pgno_t ϡ_pgno ; 1602 DBT logc ; 1603 DB_LSN * lp , nu_l , * p ; 1604 DB_TXNLOGREC * ; 1605 ENV * v ; 1606 u_t32_t ump , y , txn_num ; 1607 u_t ad ; 1608 u_t8_t * bp ; 1609 is_dub , t ; 1611 `COMPQUIET ( , NULL ); 1613 v = dbp ->env; 1614 p = t_lp ; 1615 y = DB___ham_magroup ; 1616 ad = 0; 1617 t = 0; 1619 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1620 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1621 i( tx = NULL ) 1623 is_dub = 0; 1625 is_dub = 1; 1627 i( tx = NULL ) { 1628 txn_num = 0; 1629 lp = & nu_l ; 1630 nu_l . fe =u_l. offt = 0; 1632 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1633 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1634 ( t ); 1641 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1642 txn_num = tx -> txnid ; 1645 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1646 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1647 ( t = `__dbg_zy_id ( dbp )) != 0) 1648 ( t ); 1650 logc . size = ( y + ( txn_num + ( DB_LSN ) 1651 + ( u_t32_t ) 1652 + ( u_t32_t ) 1653 + ( u_t32_t ) 1654 + (* mm ) 1655 + ( u_t32_t ) 1656 + (* m ) 1657 + ( u_t32_t ) 1658 + (* g ) 1659 + ( u_t32_t ) 1660 + ( u_t32_t ); 1661 i( `CRYPTO_ON ( v )) { 1662 ad = v -> yo_hd -> `adj_size ( logc . size ); 1663 logc . size + ad ; 1666 i( is_dub || tx = NULL ) { 1667 i(( t = 1668 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1669 ( t ); 1671 i(( t = `__os_mloc ( v , 1672 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1673 ( t ); 1674 #ifde DIAGNOSTIC 1675 i(( t = 1676 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1677 `__os_ ( v , ); 1678 ( t ); 1681 logc . da = ->data; 1684 i( ad > 0) 1685 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1687 bp = logc . da ; 1689 `LOGCOPY_32 ( v , bp , & y ); 1690 bp +( y ); 1692 `LOGCOPY_32 ( v , bp , & txn_num ); 1693 bp +( txn_num ); 1695 `LOGCOPY_FROMLSN ( v , bp , lp ); 1696 bp +( DB_LSN ); 1698 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1699 `LOGCOPY_32 ( v , bp , & ump ); 1700 bp +( ump ); 1702 `LOGCOPY_32 ( v , bp , & buck ); 1703 bp +( buck ); 1705 ump = ( u_t32_t ) mmpgno ; 1706 `LOGCOPY_32 ( v , bp , & ump ); 1707 bp +( ump ); 1709 i( mm ! NULL ) { 1710 i( tx ! NULL ) { 1711 LOG * = v -> lg_hd -> gfo . imy ; 1712 i( `LOG_COMPARE ( mm , & -> l >0 && ( t = 1713 `__log_check_ge_l ( v , dbp , mm ) != 0)) 1714 ( t ); 1716 `LOGCOPY_FROMLSN ( v , bp , mm ); 1718 `memt ( bp , 0, (* mm )); 1719 bp +(* mm ); 1721 ump = ( u_t32_t ) mpgno ; 1722 `LOGCOPY_32 ( v , bp , & ump ); 1723 bp +( ump ); 1725 i( m ! NULL ) { 1726 i( tx ! NULL ) { 1727 LOG * = v -> lg_hd -> gfo . imy ; 1728 i( `LOG_COMPARE ( m , & -> l >0 && ( t = 1729 `__log_check_ge_l ( v , dbp , m ) != 0)) 1730 ( t ); 1732 `LOGCOPY_FROMLSN ( v , bp , m ); 1734 `memt ( bp , 0, (* m )); 1735 bp +(* m ); 1737 ump = ( u_t32_t ) pgno ; 1738 `LOGCOPY_32 ( v , bp , & ump ); 1739 bp +( ump ); 1741 i( g ! NULL ) { 1742 i( tx ! NULL ) { 1743 LOG * = v -> lg_hd -> gfo . imy ; 1744 i( `LOG_COMPARE ( g , & -> l >0 && ( t = 1745 `__log_check_ge_l ( v , dbp , g ) != 0)) 1746 ( t ); 1748 `LOGCOPY_FROMLSN ( v , bp , g ); 1750 `memt ( bp , 0, (* g )); 1751 bp +(* g ); 1753 `LOGCOPY_32 ( v , bp , & wloc ); 1754 bp +( wloc ); 1756 ump = ( u_t32_t ) ϡ_pgno ; 1757 `LOGCOPY_32 ( v , bp , & ump ); 1758 bp +( ump ); 1760 `DB_ASSERT ( v , 1761 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1763 i( is_dub || tx = NULL ) { 1764 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1765 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1766 * lp = * p ; 1767 i( p ! t_lp ) 1768 * t_lp = * p ; 1771 t = 0; 1772 #ifde DIAGNOSTIC 1777 `memy ( -> da , logc .da,ogc. size ); 1778 y | DB_debug_FLAG ; 1779 `LOGCOPY_32 ( v , logc . da , & y ); 1781 i(! `IS_REP_CLIENT ( v )) 1782 t = `__log_put ( v , 1783 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1785 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1786 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1787 `LSN_NOT_LOGGED (* t_lp ); 1790 #ifde LOG_DIAGNOSTIC 1791 i( t != 0) 1792 () `__ham_magroup_t ( v , 1793 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1796 #ifde DIAGNOSTIC 1797 `__os_ ( v , logc . da ); 1799 i( is_dub || tx = NULL ) 1800 `__os_ ( v , logc . da ); 1802 ( t ); 1803 } } 1810 $__ham_grouoc_42_ad ( v , db , td , cbuf , g ) 1811 ENV * v ; 1812 DB ** db ; 1813 * td ; 1814 * cbuf ; 1815 __ham_grouoc_42_gs ** g ; 1817 __ham_grouoc_42_gs * gp ; 1818 u_t32_t ump ; 1819 u_t8_t * bp ; 1820 t ; 1822 i(( t = `__os_mloc ( v , 1823 ( __ham_grouoc_42_gs + ( DB_TXN ), & gp )) != 0) 1824 ( t ); 1825 bp = cbuf ; 1826 gp -> tx = ( DB_TXN *)&argp[1]; 1827 `memt ( gp -> tx , 0, ( DB_TXN )); 1829 gp -> tx -> td =d; 1830 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1831 bp +( gp -> ty ); 1833 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1834 bp +( gp -> tx -> txnid ); 1836 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1837 bp +( DB_LSN ); 1839 `LOGCOPY_32 ( v , & ump , bp ); 1840 gp -> feid = ( t32_t ) ump ; 1841 bp +( ump ); 1842 i( db ! NULL ) { 1843 * db = NULL ; 1844 t = `__dbg_id_to_db ( 1845 v , gp -> tx , db ,rgp-> feid , 1); 1848 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1849 bp +( DB_LSN ); 1851 `LOGCOPY_32 ( v , & ump , bp ); 1852 gp -> t_pgno = ( db_pgno_t ) ump ; 1853 bp +( ump ); 1855 `LOGCOPY_32 ( v , & gp -> num , bp ); 1856 bp +( gp -> num ); 1858 `LOGCOPY_32 ( v , & ump , bp ); 1859 gp -> = ( db_pgno_t ) ump ; 1860 bp +( ump ); 1862 * g = gp ; 1863 ( t ); 1864 } } 1871 $__ham_grouoc_ad ( v , db , td , cbuf , g ) 1872 ENV * v ; 1873 DB ** db ; 1874 * td ; 1875 * cbuf ; 1876 __ham_grouoc_gs ** g ; 1878 __ham_grouoc_gs * gp ; 1879 u_t32_t ump ; 1880 u_t8_t * bp ; 1881 t ; 1883 i(( t = `__os_mloc ( v , 1884 ( __ham_grouoc_gs + ( DB_TXN ), & gp )) != 0) 1885 ( t ); 1886 bp = cbuf ; 1887 gp -> tx = ( DB_TXN *)&argp[1]; 1888 `memt ( gp -> tx , 0, ( DB_TXN )); 1890 gp -> tx -> td =d; 1891 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1892 bp +( gp -> ty ); 1894 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1895 bp +( gp -> tx -> txnid ); 1897 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1898 bp +( DB_LSN ); 1900 `LOGCOPY_32 ( v , & ump , bp ); 1901 gp -> feid = ( t32_t ) ump ; 1902 bp +( ump ); 1903 i( db ! NULL ) { 1904 * db = NULL ; 1905 t = `__dbg_id_to_db ( 1906 v , gp -> tx , db ,rgp-> feid , 1); 1909 `LOGCOPY_TOLSN ( v , & gp -> ma_l , bp ); 1910 bp +( DB_LSN ); 1912 `LOGCOPY_32 ( v , & ump , bp ); 1913 gp -> t_pgno = ( db_pgno_t ) ump ; 1914 bp +( ump ); 1916 `LOGCOPY_32 ( v , & gp -> num , bp ); 1917 bp +( gp -> num ); 1919 `LOGCOPY_32 ( v , & ump , bp ); 1920 gp -> unud = ( db_pgno_t ) ump ; 1921 bp +( ump ); 1923 `LOGCOPY_32 ( v , & ump , bp ); 1924 gp -> ϡ_pgno = ( db_pgno_t ) ump ; 1925 bp +( ump ); 1927 * g = gp ; 1928 ( t ); 1929 } } 1937 $__ham_grouoc_log ( dbp , tx , t_lp , ags , ma_l , t_pgno , num , unud , ϡ_pgno ) 1938 DB * dbp ; 1939 DB_TXN * tx ; 1940 DB_LSN * t_lp ; 1941 u_t32_t ags ; 1942 DB_LSN * ma_l ; 1943 db_pgno_t t_pgno ; 1944 u_t32_t num ; 1945 db_pgno_t unud ; 1946 db_pgno_t ϡ_pgno ; 1948 DBT logc ; 1949 DB_LSN * lp , nu_l , * p ; 1950 DB_TXNLOGREC * ; 1951 ENV * v ; 1952 u_t32_t ump , y , txn_num ; 1953 u_t ad ; 1954 u_t8_t * bp ; 1955 is_dub , t ; 1957 `COMPQUIET ( , NULL ); 1959 v = dbp ->env; 1960 p = t_lp ; 1961 y = DB___ham_grouoc ; 1962 ad = 0; 1963 t = 0; 1965 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1966 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1967 i( tx = NULL ) 1969 is_dub = 0; 1971 is_dub = 1; 1973 i( tx = NULL ) { 1974 txn_num = 0; 1975 lp = & nu_l ; 1976 nu_l . fe =u_l. offt = 0; 1978 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1979 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1980 ( t ); 1987 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1988 txn_num = tx -> txnid ; 1991 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1992 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1993 ( t = `__dbg_zy_id ( dbp )) != 0) 1994 ( t ); 1996 logc . size = ( y + ( txn_num + ( DB_LSN ) 1997 + ( u_t32_t ) 1998 + (* ma_l ) 1999 + ( u_t32_t ) 2000 + ( u_t32_t ) 2001 + ( u_t32_t ) 2002 + ( u_t32_t ); 2003 i( `CRYPTO_ON ( v )) { 2004 ad = v -> yo_hd -> `adj_size ( logc . size ); 2005 logc . size + ad ; 2008 i( is_dub || tx = NULL ) { 2009 i(( t = 2010 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2011 ( t ); 2013 i(( t = `__os_mloc ( v , 2014 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2015 ( t ); 2016 #ifde DIAGNOSTIC 2017 i(( t = 2018 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2019 `__os_ ( v , ); 2020 ( t ); 2023 logc . da = ->data; 2026 i( ad > 0) 2027 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2029 bp = logc . da ; 2031 `LOGCOPY_32 ( v , bp , & y ); 2032 bp +( y ); 2034 `LOGCOPY_32 ( v , bp , & txn_num ); 2035 bp +( txn_num ); 2037 `LOGCOPY_FROMLSN ( v , bp , lp ); 2038 bp +( DB_LSN ); 2040 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2041 `LOGCOPY_32 ( v , bp , & ump ); 2042 bp +( ump ); 2044 i( ma_l ! NULL ) { 2045 i( tx ! NULL ) { 2046 LOG * = v -> lg_hd -> gfo . imy ; 2047 i( `LOG_COMPARE ( ma_l , & -> l >0 && ( t = 2048 `__log_check_ge_l ( v , dbp , ma_l ) != 0)) 2049 ( t ); 2051 `LOGCOPY_FROMLSN ( v , bp , ma_l ); 2053 `memt ( bp , 0, (* ma_l )); 2054 bp +(* ma_l ); 2056 ump = ( u_t32_t ) t_pgno ; 2057 `LOGCOPY_32 ( v , bp , & ump ); 2058 bp +( ump ); 2060 `LOGCOPY_32 ( v , bp , & num ); 2061 bp +( num ); 2063 ump = ( u_t32_t ) unud ; 2064 `LOGCOPY_32 ( v , bp , & ump ); 2065 bp +( ump ); 2067 ump = ( u_t32_t ) ϡ_pgno ; 2068 `LOGCOPY_32 ( v , bp , & ump ); 2069 bp +( ump ); 2071 `DB_ASSERT ( v , 2072 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2074 i( is_dub || tx = NULL ) { 2075 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2076 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2077 * lp = * p ; 2078 i( p ! t_lp ) 2079 * t_lp = * p ; 2082 t = 0; 2083 #ifde DIAGNOSTIC 2088 `memy ( -> da , logc .da,ogc. size ); 2089 y | DB_debug_FLAG ; 2090 `LOGCOPY_32 ( v , logc . da , & y ); 2092 i(! `IS_REP_CLIENT ( v )) 2093 t = `__log_put ( v , 2094 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2096 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2097 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2098 `LSN_NOT_LOGGED (* t_lp ); 2101 #ifde LOG_DIAGNOSTIC 2102 i( t != 0) 2103 () `__ham_grouoc_t ( v , 2104 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2107 #ifde DIAGNOSTIC 2108 `__os_ ( v , logc . da ); 2110 i( is_dub || tx = NULL ) 2111 `__os_ ( v , logc . da ); 2113 ( t ); 2114 } } 2121 $__ham_cudj_ad ( v , db , td , cbuf , g ) 2122 ENV * v ; 2123 DB ** db ; 2124 * td ; 2125 * cbuf ; 2126 __ham_cudj_gs ** g ; 2128 __ham_cudj_gs * gp ; 2129 u_t32_t ump ; 2130 u_t8_t * bp ; 2131 t ; 2133 i(( t = `__os_mloc ( v , 2134 ( __ham_cudj_gs + ( DB_TXN ), & gp )) != 0) 2135 ( t ); 2136 bp = cbuf ; 2137 gp -> tx = ( DB_TXN *)&argp[1]; 2138 `memt ( gp -> tx , 0, ( DB_TXN )); 2140 gp -> tx -> td =d; 2141 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2142 bp +( gp -> ty ); 2144 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2145 bp +( gp -> tx -> txnid ); 2147 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2148 bp +( DB_LSN ); 2150 `LOGCOPY_32 ( v , & ump , bp ); 2151 gp -> feid = ( t32_t ) ump ; 2152 bp +( ump ); 2153 i( db ! NULL ) { 2154 * db = NULL ; 2155 t = `__dbg_id_to_db ( 2156 v , gp -> tx , db ,rgp-> feid , 1); 2159 `LOGCOPY_32 ( v , & ump , bp ); 2160 gp -> pgno = ( db_pgno_t ) ump ; 2161 bp +( ump ); 2163 `LOGCOPY_32 ( v , & gp -> dx , bp ); 2164 bp +( gp -> dx ); 2166 `LOGCOPY_32 ( v , & gp -> n , bp ); 2167 bp +( gp -> n ); 2169 `LOGCOPY_32 ( v , & gp -> dup_off , bp ); 2170 bp +( gp -> dup_off ); 2172 `LOGCOPY_32 ( v , & ump , bp ); 2173 gp -> add = () ump ; 2174 bp +( ump ); 2176 `LOGCOPY_32 ( v , & ump , bp ); 2177 gp -> is_dup = () ump ; 2178 bp +( ump ); 2180 `LOGCOPY_32 ( v , & gp -> d , bp ); 2181 bp +( gp -> d ); 2183 * g = gp ; 2184 ( t ); 2185 } } 2193 $__ham_cudj_log ( dbp , tx , t_lp , ags , pgno , dx , n , dup_off , add , 2194 is_dup , d ) 2195 DB * dbp ; 2196 DB_TXN * tx ; 2197 DB_LSN * t_lp ; 2198 u_t32_t ags ; 2199 db_pgno_t pgno ; 2200 u_t32_t dx ; 2201 u_t32_t n ; 2202 u_t32_t dup_off ; 2203 add ; 2204 is_dup ; 2205 u_t32_t d ; 2207 DBT logc ; 2208 DB_LSN * lp , nu_l , * p ; 2209 DB_TXNLOGREC * ; 2210 ENV * v ; 2211 u_t32_t ump , y , txn_num ; 2212 u_t ad ; 2213 u_t8_t * bp ; 2214 is_dub , t ; 2216 `COMPQUIET ( , NULL ); 2218 v = dbp ->env; 2219 p = t_lp ; 2220 y = DB___ham_cudj ; 2221 ad = 0; 2222 t = 0; 2224 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2225 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2226 i( tx = NULL ) 2228 is_dub = 0; 2230 is_dub = 1; 2232 i( tx = NULL ) { 2233 txn_num = 0; 2234 lp = & nu_l ; 2235 nu_l . fe =u_l. offt = 0; 2237 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2238 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2239 ( t ); 2246 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2247 txn_num = tx -> txnid ; 2250 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2251 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2252 ( t = `__dbg_zy_id ( dbp )) != 0) 2253 ( t ); 2255 logc . size = ( y + ( txn_num + ( DB_LSN ) 2256 + ( u_t32_t ) 2257 + ( u_t32_t ) 2258 + ( u_t32_t ) 2259 + ( u_t32_t ) 2260 + ( u_t32_t ) 2261 + ( u_t32_t ) 2262 + ( u_t32_t ) 2263 + ( u_t32_t ); 2264 i( `CRYPTO_ON ( v )) { 2265 ad = v -> yo_hd -> `adj_size ( logc . size ); 2266 logc . size + ad ; 2269 i( is_dub || tx = NULL ) { 2270 i(( t = 2271 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2272 ( t ); 2274 i(( t = `__os_mloc ( v , 2275 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2276 ( t ); 2277 #ifde DIAGNOSTIC 2278 i(( t = 2279 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2280 `__os_ ( v , ); 2281 ( t ); 2284 logc . da = ->data; 2287 i( ad > 0) 2288 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2290 bp = logc . da ; 2292 `LOGCOPY_32 ( v , bp , & y ); 2293 bp +( y ); 2295 `LOGCOPY_32 ( v , bp , & txn_num ); 2296 bp +( txn_num ); 2298 `LOGCOPY_FROMLSN ( v , bp , lp ); 2299 bp +( DB_LSN ); 2301 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2302 `LOGCOPY_32 ( v , bp , & ump ); 2303 bp +( ump ); 2305 ump = ( u_t32_t ) pgno ; 2306 `LOGCOPY_32 ( v , bp , & ump ); 2307 bp +( ump ); 2309 `LOGCOPY_32 ( v , bp , & dx ); 2310 bp +( dx ); 2312 `LOGCOPY_32 ( v , bp , & n ); 2313 bp +( n ); 2315 `LOGCOPY_32 ( v , bp , & dup_off ); 2316 bp +( dup_off ); 2318 ump = ( u_t32_t ) add ; 2319 `LOGCOPY_32 ( v , bp , & ump ); 2320 bp +( ump ); 2322 ump = ( u_t32_t ) is_dup ; 2323 `LOGCOPY_32 ( v , bp , & ump ); 2324 bp +( ump ); 2326 `LOGCOPY_32 ( v , bp , & d ); 2327 bp +( d ); 2329 `DB_ASSERT ( v , 2330 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2332 i( is_dub || tx = NULL ) { 2333 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2334 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2335 * lp = * p ; 2336 i( p ! t_lp ) 2337 * t_lp = * p ; 2340 t = 0; 2341 #ifde DIAGNOSTIC 2346 `memy ( -> da , logc .da,ogc. size ); 2347 y | DB_debug_FLAG ; 2348 `LOGCOPY_32 ( v , logc . da , & y ); 2350 i(! `IS_REP_CLIENT ( v )) 2351 t = `__log_put ( v , 2352 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2354 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2355 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2356 `LSN_NOT_LOGGED (* t_lp ); 2359 #ifde LOG_DIAGNOSTIC 2360 i( t != 0) 2361 () `__ham_cudj_t ( v , 2362 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2365 #ifde DIAGNOSTIC 2366 `__os_ ( v , logc . da ); 2368 i( is_dub || tx = NULL ) 2369 `__os_ ( v , logc . da ); 2371 ( t ); 2372 } } 2379 $__ham_chgpg_ad ( v , db , td , cbuf , g ) 2380 ENV * v ; 2381 DB ** db ; 2382 * td ; 2383 * cbuf ; 2384 __ham_chgpg_gs ** g ; 2386 __ham_chgpg_gs * gp ; 2387 u_t32_t ump ; 2388 u_t8_t * bp ; 2389 t ; 2391 i(( t = `__os_mloc ( v , 2392 ( __ham_chgpg_gs + ( DB_TXN ), & gp )) != 0) 2393 ( t ); 2394 bp = cbuf ; 2395 gp -> tx = ( DB_TXN *)&argp[1]; 2396 `memt ( gp -> tx , 0, ( DB_TXN )); 2398 gp -> tx -> td =d; 2399 `LOGCOPY_32 ( v , & gp -> ty , bp ); 2400 bp +( gp -> ty ); 2402 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 2403 bp +( gp -> tx -> txnid ); 2405 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 2406 bp +( DB_LSN ); 2408 `LOGCOPY_32 ( v , & ump , bp ); 2409 gp -> feid = ( t32_t ) ump ; 2410 bp +( ump ); 2411 i( db ! NULL ) { 2412 * db = NULL ; 2413 t = `__dbg_id_to_db ( 2414 v , gp -> tx , db ,rgp-> feid , 1); 2417 `LOGCOPY_32 ( v , & ump , bp ); 2418 gp -> mode = ( db_ham_mode ) ump ; 2419 bp +( ump ); 2421 `LOGCOPY_32 ( v , & ump , bp ); 2422 gp -> d_pgno = ( db_pgno_t ) ump ; 2423 bp +( ump ); 2425 `LOGCOPY_32 ( v , & ump , bp ); 2426 gp -> w_pgno = ( db_pgno_t ) ump ; 2427 bp +( ump ); 2429 `LOGCOPY_32 ( v , & gp -> d_dx , bp ); 2430 bp +( gp -> d_dx ); 2432 `LOGCOPY_32 ( v , & gp -> w_dx , bp ); 2433 bp +( gp -> w_dx ); 2435 * g = gp ; 2436 ( t ); 2437 } } 2445 $__ham_chgpg_log ( dbp , tx , t_lp , ags , mode , d_pgno , w_pgno , d_dx , w_dx ) 2446 DB * dbp ; 2447 DB_TXN * tx ; 2448 DB_LSN * t_lp ; 2449 u_t32_t ags ; 2450 db_ham_mode mode ; 2451 db_pgno_t d_pgno ; 2452 db_pgno_t w_pgno ; 2453 u_t32_t d_dx ; 2454 u_t32_t w_dx ; 2456 DBT logc ; 2457 DB_LSN * lp , nu_l , * p ; 2458 DB_TXNLOGREC * ; 2459 ENV * v ; 2460 u_t32_t ump , y , txn_num ; 2461 u_t ad ; 2462 u_t8_t * bp ; 2463 is_dub , t ; 2465 `COMPQUIET ( , NULL ); 2467 v = dbp ->env; 2468 p = t_lp ; 2469 y = DB___ham_chgpg ; 2470 ad = 0; 2471 t = 0; 2473 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 2474 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 2475 i( tx = NULL ) 2477 is_dub = 0; 2479 is_dub = 1; 2481 i( tx = NULL ) { 2482 txn_num = 0; 2483 lp = & nu_l ; 2484 nu_l . fe =u_l. offt = 0; 2486 i( `TAILQ_FIRST (& tx -> kids ! NULL && 2487 ( t = `__txn_aivekids ( v , y , tx )) != 0) 2488 ( t ); 2495 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 2496 txn_num = tx -> txnid ; 2499 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 2500 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 2501 ( t = `__dbg_zy_id ( dbp )) != 0) 2502 ( t ); 2504 logc . size = ( y + ( txn_num + ( DB_LSN ) 2505 + ( u_t32_t ) 2506 + ( u_t32_t ) 2507 + ( u_t32_t ) 2508 + ( u_t32_t ) 2509 + ( u_t32_t ) 2510 + ( u_t32_t ); 2511 i( `CRYPTO_ON ( v )) { 2512 ad = v -> yo_hd -> `adj_size ( logc . size ); 2513 logc . size + ad ; 2516 i( is_dub || tx = NULL ) { 2517 i(( t = 2518 `__os_mloc ( v , logc . size , &logc. da )) != 0) 2519 ( t ); 2521 i(( t = `__os_mloc ( v , 2522 logc . size + ( DB_TXNLOGREC ), & )) != 0) 2523 ( t ); 2524 #ifde DIAGNOSTIC 2525 i(( t = 2526 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 2527 `__os_ ( v , ); 2528 ( t ); 2531 logc . da = ->data; 2534 i( ad > 0) 2535 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 2537 bp = logc . da ; 2539 `LOGCOPY_32 ( v , bp , & y ); 2540 bp +( y ); 2542 `LOGCOPY_32 ( v , bp , & txn_num ); 2543 bp +( txn_num ); 2545 `LOGCOPY_FROMLSN ( v , bp , lp ); 2546 bp +( DB_LSN ); 2548 ump = ( u_t32_t ) dbp -> log_fame -> id ; 2549 `LOGCOPY_32 ( v , bp , & ump ); 2550 bp +( ump ); 2552 ump = ( u_t32_t ) mode ; 2553 `LOGCOPY_32 ( v , bp , & ump ); 2554 bp +( ump ); 2556 ump = ( u_t32_t ) d_pgno ; 2557 `LOGCOPY_32 ( v , bp , & ump ); 2558 bp +( ump ); 2560 ump = ( u_t32_t ) w_pgno ; 2561 `LOGCOPY_32 ( v , bp , & ump ); 2562 bp +( ump ); 2564 `LOGCOPY_32 ( v , bp , & d_dx ); 2565 bp +( d_dx ); 2567 `LOGCOPY_32 ( v , bp , & w_dx ); 2568 bp +( w_dx ); 2570 `DB_ASSERT ( v , 2571 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 2573 i( is_dub || tx = NULL ) { 2574 i(( t = `__log_put ( v , p ,( DBT *)& logc , 2575 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 2576 * lp = * p ; 2577 i( p ! t_lp ) 2578 * t_lp = * p ; 2581 t = 0; 2582 #ifde DIAGNOSTIC 2587 `memy ( -> da , logc .da,ogc. size ); 2588 y | DB_debug_FLAG ; 2589 `LOGCOPY_32 ( v , logc . da , & y ); 2591 i(! `IS_REP_CLIENT ( v )) 2592 t = `__log_put ( v , 2593 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 2595 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 2596 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 2597 `LSN_NOT_LOGGED (* t_lp ); 2600 #ifde LOG_DIAGNOSTIC 2601 i( t != 0) 2602 () `__ham_chgpg_t ( v , 2603 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 2606 #ifde DIAGNOSTIC 2607 `__os_ ( v , logc . da ); 2609 i( is_dub || tx = NULL ) 2610 `__os_ ( v , logc . da ); 2612 ( t ); 2613 } } 2619 $__ham__cov ( v , dbp ) 2620 ENV * v ; 2621 DB_DISTAB * dbp ; 2623 t ; 2625 i(( t = `__db_add_covy_t ( v , dbp , 2626 __ham_sd_cov , DB___ham_sd )) != 0) 2627 ( t ); 2628 i(( t = `__db_add_covy_t ( v , dbp , 2629 __ham_wge_cov , DB___ham_wge )) != 0) 2630 ( t ); 2631 i(( t = `__db_add_covy_t ( v , dbp , 2632 __ham_lda_cov , DB___ham_lda )) != 0) 2633 ( t ); 2634 i(( t = `__db_add_covy_t ( v , dbp , 2635 __ham_a_cov , DB___ham_a )) != 0) 2636 ( t ); 2637 i(( t = `__db_add_covy_t ( v , dbp , 2638 __ham_cyge_cov , DB___ham_cyge )) != 0) 2639 ( t ); 2640 i(( t = `__db_add_covy_t ( v , dbp , 2641 __ham_magroup_cov , DB___ham_magroup )) != 0) 2642 ( t ); 2643 i(( t = `__db_add_covy_t ( v , dbp , 2644 __ham_grouoc_cov , DB___ham_grouoc )) != 0) 2645 ( t ); 2646 i(( t = `__db_add_covy_t ( v , dbp , 2647 __ham_cudj_cov , DB___ham_cudj )) != 0) 2648 ( t ); 2649 i(( t = `__db_add_covy_t ( v , dbp , 2650 __ham_chgpg_cov , DB___ham_chgpg )) != 0) 2651 ( t ); 2653 } } @../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 ( v , db , lp , nud2 , nud3 ) 21 ENV * v ; 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 = 36 `__ham_sd_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 37 ( t ); 38 () `tf ( 40 ( u_lg ) lp -> fe , (u_lgp-> offt , 41 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 42 ( u_lg ) gp -> ty , 43 ( u_lg ) gp -> tx -> txnid , 44 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 45 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 46 () `tf ("\tfeid: %ld\n", () gp -> feid ); 47 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 48 () `tf ("\dx: %lu\n", ( u_lg ) gp -> ndx ); 49 () `tf ("\tpagelsn: [%lu][%lu]\n", 50 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 51 () `tf ("\tkey: "); 52 i = 0; i < gp -> key . size ; i++) { 53 ch = (( u_t8_t *) gp -> key . da )[ i ]; 54 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 56 () `tf ("\n"); 57 () `tf ("\tdata: "); 58 i = 0; i < gp -> da . size ; i++) { 59 ch = (( u_t8_t *) gp -> da .da)[ i ]; 60 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 62 () `tf ("\n"); 63 () `tf ("\n"); 64 `__os_ ( v , gp ); 66 } } 73 $__ham_wge_t ( v , db , lp , nud2 , nud3 ) 74 ENV * v ; 75 DBT * db ; 76 DB_LSN * lp ; 77 db_cs nud2 ; 78 * nud3 ; 80 __ham_wge_gs * gp ; 81 t ; 83 nud2 = DB_TXN_PRINT ; 84 nud3 = NULL ; 86 i(( t = 87 `__ham_wge_ad ( v , NULL , NULL, 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 ("\tcode: %lu\n", ( u_lg ) gp -> code ); 97 () `tf ("\tfeid: %ld\n", () gp -> feid ); 98 () `tf ("\v_pgno: %lu\n", ( u_lg ) gp -> ev_pgno ); 99 () `tf ("\tprevlsn: [%lu][%lu]\n", 100 ( u_lg ) gp -> evl . fe , (u_lgrgp->evl. offt ); 101 () `tf ("\ew_pgno: %lu\n", ( u_lg ) gp -> w_pgno ); 102 () `tf ("\tpagelsn: [%lu][%lu]\n", 103 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 104 () `tf ("\ext_pgno: %lu\n", ( u_lg ) gp -> xt_pgno ); 105 () `tf ("\tnextlsn: [%lu][%lu]\n", 106 ( u_lg ) gp -> x . fe , (u_lgrgp->x. offt ); 107 () `tf ("\n"); 108 `__os_ ( v , gp ); 110 } } 117 $__ham_lda_t ( v , db , lp , nud2 , nud3 ) 118 ENV * v ; 119 DBT * db ; 120 DB_LSN * lp ; 121 db_cs nud2 ; 122 * nud3 ; 124 __ham_lda_gs * gp ; 125 u_t32_t i ; 126 ch ; 127 t ; 129 nud2 = DB_TXN_PRINT ; 130 nud3 = NULL ; 132 i(( t = 133 `__ham_lda_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 134 ( t ); 135 () `tf ( 137 ( u_lg ) lp -> fe , (u_lgp-> offt , 138 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 139 ( u_lg ) gp -> ty , 140 ( u_lg ) gp -> tx -> txnid , 141 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 142 () `tf ("\tfeid: %ld\n", () gp -> feid ); 143 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 144 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 145 () `tf ("\tpageimage: "); 146 i = 0; i < gp -> geimage . size ; i++) { 147 ch = (( u_t8_t *) gp -> geimage . da )[ i ]; 148 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 150 () `tf ("\n"); 151 () `tf ("\tpagelsn: [%lu][%lu]\n", 152 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 153 () `tf ("\n"); 154 `__os_ ( v , gp ); 156 } } 163 $__ham_a_t ( v , db , lp , nud2 , nud3 ) 164 ENV * v ; 165 DBT * db ; 166 DB_LSN * lp ; 167 db_cs nud2 ; 168 * nud3 ; 170 __ham_a_gs * gp ; 171 u_t32_t i ; 172 ch ; 173 t ; 175 nud2 = DB_TXN_PRINT ; 176 nud3 = NULL ; 178 i(( t = 179 `__ham_a_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 180 ( t ); 181 () `tf ( 183 ( u_lg ) lp -> fe , (u_lgp-> offt , 184 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 185 ( u_lg ) gp -> ty , 186 ( u_lg ) gp -> tx -> txnid , 187 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 188 () `tf ("\tfeid: %ld\n", () gp -> feid ); 189 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 190 () `tf ("\dx: %lu\n", ( u_lg ) gp -> ndx ); 191 () `tf ("\tpagelsn: [%lu][%lu]\n", 192 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 193 () `tf ("\toff: %ld\n", () gp -> off ); 194 () `tf ("\tolditem: "); 195 i = 0; i < gp -> dem . size ; i++) { 196 ch = (( u_t8_t *) gp -> dem . da )[ i ]; 197 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 199 () `tf ("\n"); 200 () `tf ("\tnewitem: "); 201 i = 0; i < gp -> wem . size ; i++) { 202 ch = (( u_t8_t *) gp -> wem . da )[ i ]; 203 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 205 () `tf ("\n"); 206 () `tf ("\tmakedup: %lu\n", ( u_lg ) gp -> makedup ); 207 () `tf ("\n"); 208 `__os_ ( v , gp ); 210 } } 217 $__ham_cyge_t ( v , db , lp , nud2 , nud3 ) 218 ENV * v ; 219 DBT * db ; 220 DB_LSN * lp ; 221 db_cs nud2 ; 222 * nud3 ; 224 __ham_cyge_gs * gp ; 225 u_t32_t i ; 226 ch ; 227 t ; 229 nud2 = DB_TXN_PRINT ; 230 nud3 = NULL ; 232 i(( t = 233 `__ham_cyge_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 234 ( t ); 235 () `tf ( 237 ( u_lg ) lp -> fe , (u_lgp-> offt , 238 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 239 ( u_lg ) gp -> ty , 240 ( u_lg ) gp -> tx -> txnid , 241 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 242 () `tf ("\tfeid: %ld\n", () gp -> feid ); 243 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 244 () `tf ("\tpagelsn: [%lu][%lu]\n", 245 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 246 () `tf ("\ext_pgno: %lu\n", ( u_lg ) gp -> xt_pgno ); 247 () `tf ("\tnextlsn: [%lu][%lu]\n", 248 ( u_lg ) gp -> x . fe , (u_lgrgp->x. offt ); 249 () `tf ("\xt_pgno: %lu\n", ( u_lg ) gp -> ext_pgno ); 250 () `tf ("\tnnextlsn: [%lu][%lu]\n", 251 ( u_lg ) gp -> ex . fe , (u_lgrgp->ex. offt ); 252 () `tf ("\tpage: "); 253 i = 0; i < gp -> ge . size ; i++) { 254 ch = (( u_t8_t *) gp -> ge . da )[ i ]; 255 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 257 () `tf ("\n"); 258 () `tf ("\n"); 259 `__os_ ( v , gp ); 261 } } 268 $__ham_magroup_42_t ( v , db , lp , nud2 , nud3 ) 269 ENV * v ; 270 DBT * db ; 271 DB_LSN * lp ; 272 db_cs nud2 ; 273 * nud3 ; 275 __ham_magroup_42_gs * gp ; 276 t ; 278 nud2 = DB_TXN_PRINT ; 279 nud3 = NULL ; 281 i(( t = 282 `__ham_magroup_42_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 283 ( t ); 284 () `tf ( 286 ( u_lg ) lp -> fe , (u_lgp-> offt , 287 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 288 ( u_lg ) gp -> ty , 289 ( u_lg ) gp -> tx -> txnid , 290 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 291 () `tf ("\tfeid: %ld\n", () gp -> feid ); 292 () `tf ("\tbuck: %lu\n", ( u_lg ) gp -> buck ); 293 () `tf ("\tmmpgno: %lu\n", ( u_lg ) gp -> mmpgno ); 294 () `tf ("\tmmetalsn: [%lu][%lu]\n", 295 ( u_lg ) gp -> mm . fe , (u_lgrgp->mm. offt ); 296 () `tf ("\tmpgno: %lu\n", ( u_lg ) gp -> mpgno ); 297 () `tf ("\tmetalsn: [%lu][%lu]\n", 298 ( u_lg ) gp -> m . fe , (u_lgrgp->m. offt ); 299 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 300 () `tf ("\tpagelsn: [%lu][%lu]\n", 301 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 302 () `tf ("\ewloc: %lu\n", ( u_lg ) gp -> wloc ); 303 () `tf ("\n"); 304 `__os_ ( v , gp ); 306 } } 313 $__ham_magroup_t ( v , db , lp , nud2 , nud3 ) 314 ENV * v ; 315 DBT * db ; 316 DB_LSN * lp ; 317 db_cs nud2 ; 318 * nud3 ; 320 __ham_magroup_gs * gp ; 321 t ; 323 nud2 = DB_TXN_PRINT ; 324 nud3 = NULL ; 326 i(( t = 327 `__ham_magroup_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 328 ( t ); 329 () `tf ( 331 ( u_lg ) lp -> fe , (u_lgp-> offt , 332 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 333 ( u_lg ) gp -> ty , 334 ( u_lg ) gp -> tx -> txnid , 335 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 336 () `tf ("\tfeid: %ld\n", () gp -> feid ); 337 () `tf ("\tbuck: %lu\n", ( u_lg ) gp -> buck ); 338 () `tf ("\tmmpgno: %lu\n", ( u_lg ) gp -> mmpgno ); 339 () `tf ("\tmmetalsn: [%lu][%lu]\n", 340 ( u_lg ) gp -> mm . fe , (u_lgrgp->mm. offt ); 341 () `tf ("\tmpgno: %lu\n", ( u_lg ) gp -> mpgno ); 342 () `tf ("\tmetalsn: [%lu][%lu]\n", 343 ( u_lg ) gp -> m . fe , (u_lgrgp->m. offt ); 344 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 345 () `tf ("\tpagelsn: [%lu][%lu]\n", 346 ( u_lg ) gp -> g . fe , (u_lgrgp->g. offt ); 347 () `tf ("\ewloc: %lu\n", ( u_lg ) gp -> wloc ); 348 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 349 () `tf ("\n"); 350 `__os_ ( v , gp ); 352 } } 359 $__ham_grouoc_42_t ( v , db , lp , nud2 , nud3 ) 360 ENV * v ; 361 DBT * db ; 362 DB_LSN * lp ; 363 db_cs nud2 ; 364 * nud3 ; 366 __ham_grouoc_42_gs * gp ; 367 t ; 369 nud2 = DB_TXN_PRINT ; 370 nud3 = NULL ; 372 i(( t = 373 `__ham_grouoc_42_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 374 ( t ); 375 () `tf ( 377 ( u_lg ) lp -> fe , (u_lgp-> offt , 378 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 379 ( u_lg ) gp -> ty , 380 ( u_lg ) gp -> tx -> txnid , 381 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 382 () `tf ("\tfeid: %ld\n", () gp -> feid ); 383 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 384 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 385 () `tf ("\tt_pgno: %lu\n", ( u_lg ) gp -> t_pgno ); 386 () `tf ("\um: %lu\n", ( u_lg ) gp -> num ); 387 () `tf ("\t: %lu\n", ( u_lg ) gp -> ); 388 () `tf ("\n"); 389 `__os_ ( v , gp ); 391 } } 398 $__ham_grouoc_t ( v , db , lp , nud2 , nud3 ) 399 ENV * v ; 400 DBT * db ; 401 DB_LSN * lp ; 402 db_cs nud2 ; 403 * nud3 ; 405 __ham_grouoc_gs * gp ; 406 t ; 408 nud2 = DB_TXN_PRINT ; 409 nud3 = NULL ; 411 i(( t = 412 `__ham_grouoc_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 413 ( t ); 414 () `tf ( 416 ( u_lg ) lp -> fe , (u_lgp-> offt , 417 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 418 ( u_lg ) gp -> ty , 419 ( u_lg ) gp -> tx -> txnid , 420 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 421 () `tf ("\tfeid: %ld\n", () gp -> feid ); 422 () `tf ("\tmeta_lsn: [%lu][%lu]\n", 423 ( u_lg ) gp -> ma_l . fe , (u_lgrgp->ma_l. offt ); 424 () `tf ("\tt_pgno: %lu\n", ( u_lg ) gp -> t_pgno ); 425 () `tf ("\um: %lu\n", ( u_lg ) gp -> num ); 426 () `tf ("\tunud: %lu\n", ( u_lg ) gp -> unud ); 427 () `tf ("\a_pgno: %lu\n", ( u_lg ) gp -> ϡ_pgno ); 428 () `tf ("\n"); 429 `__os_ ( v , gp ); 431 } } 438 $__ham_cudj_t ( v , db , lp , nud2 , nud3 ) 439 ENV * v ; 440 DBT * db ; 441 DB_LSN * lp ; 442 db_cs nud2 ; 443 * nud3 ; 445 __ham_cudj_gs * gp ; 446 t ; 448 nud2 = DB_TXN_PRINT ; 449 nud3 = NULL ; 451 i(( t = 452 `__ham_cudj_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 453 ( t ); 454 () `tf ( 456 ( u_lg ) lp -> fe , (u_lgp-> offt , 457 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 458 ( u_lg ) gp -> ty , 459 ( u_lg ) gp -> tx -> txnid , 460 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 461 () `tf ("\tfeid: %ld\n", () gp -> feid ); 462 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 463 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 464 () `tf ("\: %lu\n", ( u_lg ) gp -> n ); 465 () `tf ("\tdup_off: %lu\n", ( u_lg ) gp -> dup_off ); 466 () `tf ("\dd: %ld\n", () gp -> add ); 467 () `tf ("\tis_dup: %ld\n", () gp -> is_dup ); 468 () `tf ("\td: %lu\n", ( u_lg ) gp -> d ); 469 () `tf ("\n"); 470 `__os_ ( v , gp ); 472 } } 479 $__ham_chgpg_t ( v , db , lp , nud2 , nud3 ) 480 ENV * v ; 481 DBT * db ; 482 DB_LSN * lp ; 483 db_cs nud2 ; 484 * nud3 ; 486 __ham_chgpg_gs * gp ; 487 t ; 489 nud2 = DB_TXN_PRINT ; 490 nud3 = NULL ; 492 i(( t = 493 `__ham_chgpg_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 494 ( t ); 495 () `tf ( 497 ( u_lg ) lp -> fe , (u_lgp-> offt , 498 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 499 ( u_lg ) gp -> ty , 500 ( u_lg ) gp -> tx -> txnid , 501 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 502 () `tf ("\tfeid: %ld\n", () gp -> feid ); 503 () `tf ("\tmode: %ld\n", () gp -> mode ); 504 () `tf ("\td_pgno: %lu\n", ( u_lg ) gp -> d_pgno ); 505 () `tf ("\ew_pgno: %lu\n", ( u_lg ) gp -> w_pgno ); 506 () `tf ("\td_dx: %lu\n", ( u_lg ) gp -> d_dx ); 507 () `tf ("\ew_dx: %lu\n", ( u_lg ) gp -> w_dx ); 508 () `tf ("\n"); 509 `__os_ ( v , gp ); 511 } } 517 $__ham__t ( v , dbp ) 518 ENV * v ; 519 DB_DISTAB * dbp ; 521 t ; 523 i(( t = `__db_add_covy_t ( v , dbp , 524 __ham_sd_t , DB___ham_sd )) != 0) 525 ( t ); 526 i(( t = `__db_add_covy_t ( v , dbp , 527 __ham_wge_t , DB___ham_wge )) != 0) 528 ( t ); 529 i(( t = `__db_add_covy_t ( v , dbp , 530 __ham_lda_t , DB___ham_lda )) != 0) 531 ( t ); 532 i(( t = `__db_add_covy_t ( v , dbp , 533 __ham_a_t , DB___ham_a )) != 0) 534 ( t ); 535 i(( t = `__db_add_covy_t ( v , dbp , 536 __ham_cyge_t , DB___ham_cyge )) != 0) 537 ( t ); 538 i(( t = `__db_add_covy_t ( v , dbp , 539 __ham_magroup_t , DB___ham_magroup )) != 0) 540 ( t ); 541 i(( t = `__db_add_covy_t ( v , dbp , 542 __ham_grouoc_t , DB___ham_grouoc )) != 0) 543 ( t ); 544 i(( t = `__db_add_covy_t ( v , dbp , 545 __ham_cudj_t , DB___ham_cudj )) != 0) 546 ( t ); 547 i(( t = `__db_add_covy_t ( v , dbp , 548 __ham_chgpg_t , DB___ham_chgpg )) != 0) 549 ( t ); 551 } } @../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 ( dbp , pg , , cook ) 25 DB * dbp ; 26 db_pgno_t pg ; 27 * ; 28 DBT * cook ; 30 DB_PGINFO * pgfo ; 31 PAGE * h ; 33 h = ; 34 pgfo = ( DB_PGINFO *) cook -> da ; 41 i( h -> ty ! P_HASHMETA && h-> pgno = PGNO_INVALID ) { 42 `P_INIT ( , ( db_dx_t ) pgfo -> db_gesize , 43 pg , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 47 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 50 ( h -> ty = P_HASHMETA ? `__ham_msw ( dbp -> v , ) : 51 `__db_bysw ( dbp , pg , , pgfo -> db_gesize , 1)); 52 } } 62 $__ham_pgout ( dbp , pg , , cook ) 63 DB * dbp ; 64 db_pgno_t pg ; 65 * ; 66 DBT * cook ; 68 DB_PGINFO * pgfo ; 69 PAGE * h ; 71 pgfo = ( DB_PGINFO *) cook -> da ; 72 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 75 h = ; 76 ( h -> ty = P_HASHMETA ? `__ham_msw ( dbp -> v , ) : 77 `__db_bysw ( dbp , pg , , pgfo -> db_gesize , 0)); 78 } } 87 $__ham_msw ( v , pg ) 88 ENV * v ; 89 * pg ; 91 u_t8_t * p ; 92 i ; 94 `COMPQUIET ( v , NULL ); 96 `__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_MPOOLFILE * mpf ; 86 ENV * v ; 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 v = dbp ->env; 94 mpf = dbp ->mpf; 95 h = ( HASH_CURSOR *) dbc -> ; 97 `DB_ASSERT ( v , 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 ( v , 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 ( v , 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 ( v , "__ham_add_dup")); 201 i(( t = `__memp_dty ( mpf , & h -> ge , 202 dbc -> thad_fo , 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 ( v , "__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_LSN l ; 251 DB_MPOOLFILE * mpf ; 252 ENV * v ; 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 v = dbp ->env; 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 ( v , h -> pgno ); 368 i( t == 0) 369 t = `__memp_dty ( mpf , 370 & h -> ge , dbc -> thad_fo , 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 , 377 dbc -> thad_fo , dp , dbc-> iܙy )!0 && t == 0) 378 t = t_t ; 380 i( t == 0) 381 h -> dup_ = h-> dup_off = h-> dup_n = 0; 383 i( hcs ! NULL ) 384 `__os_ ( v , hcs ); 386 ( t ); 387 } } 400 $__ham_make_dup ( v , ndup , dui , bu , siz ) 401 ENV * v ; 402 cڡ DBT * ndup ; 403 DBT * dui ; 404 ** bu ; 405 u_t32_t * siz ; 407 db_dx_t tsize , em_size ; 408 t ; 409 u_t8_t * p ; 411 em_size = ( db_dx_t ) ndup -> size ; 412 i( `F_ISSET ( ndup , DB_DBT_PARTIAL )) 413 em_size + ndup -> doff ; 415 tsize = `DUP_SIZE ( em_size ); 416 i(( t = `__ham__dbt ( v , dui , tsize , bu , siz )) != 0) 417 ( t ); 419 dui -> dn = 0; 420 dui -> ags = ndup ->flags; 421 `F_SET ( dui , DB_DBT_PARTIAL ); 423 p = dui -> da ; 424 `memy ( p , & em_size , ( db_dx_t )); 425 p +( db_dx_t ); 426 i( `F_ISSET ( ndup , DB_DBT_PARTIAL )) { 427 `memt ( p , 0, ndup -> doff ); 428 p + ndup -> doff ; 430 `memy ( p , ndup -> da ,dup-> size ); 431 p + ndup -> size ; 432 `memy ( p , & em_size , ( db_dx_t )); 434 dui -> doff = 0; 435 dui -> dn = ndup -> size ; 438 } } 447 $__ham_check_move ( dbc , add_n ) 448 DBC * dbc ; 449 u_t32_t add_n ; 451 DB * dbp ; 452 DBT k , d ; 453 DB_LSN w_l ; 454 DB_MPOOLFILE * mpf ; 455 HASH_CURSOR * h ; 456 PAGE * xt_g ; 457 db_pgno_t xt_pgno ; 458 u_t32_t w_d , d_n , y ; 459 db_dx_t w_dx ; 460 u_t8_t * hk ; 461 key_ty , mch , t , t_t ; 463 dbp = dbc ->dbp; 464 mpf = dbp ->mpf; 465 h = ( HASH_CURSOR *) dbc -> ; 467 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 473 i( `HPAGE_PTYPE ( hk = H_OFFDUP || HPAGE_PTYPE(hk= H_OFFPAGE ) 476 d_n = 477 `LEN_HITEM ( dbp , h -> ge , dbp-> pgsize , `H_DATAINDEX (h-> dx )); 478 w_d = ( d_n - `HKEYDATA_SIZE (0)+ add_n ; 479 i( `HPAGE_PTYPE ( hk ! H_DUPLICATE ) 480 w_d + `DUP_SIZE (0); 490 i( `ISBIG ( h , w_d && ( d_n > HOFFDUP_SIZE || 491 HOFFDUP_SIZE - d_n < `P_FREESPACE ( dbp , h -> ge ))) 494 i(! `ISBIG ( h , w_d ) && 495 ( w_d - d_n < `P_FREESPACE ( dbp , h -> ge )) 505 w_d = `ISBIG ( h ,ew_datalen) ? 506 HOFFDUP_SIZE : `HKEYDATA_SIZE ( w_d ); 507 w_d += 508 `LEN_HITEM ( dbp , h -> ge , dbp-> pgsize , `H_KEYINDEX (h-> dx )); 510 xt_g = NULL ; 511 xt_pgno = `NEXT_PGNO ( h -> ge );ext_pgn! PGNO_INVALID ; 512 xt_pgno = `NEXT_PGNO ( xt_g )) { 513 i( xt_g ! NULL && ( t = `__memp_ut ( mpf , 514 dbc -> thad_fo , xt_g , dbc-> iܙy )) != 0) 515 ( t ); 517 i(( t = `__memp_fg ( mpf , 518 & xt_pgno , dbc -> thad_fo , dbc-> txn , 519 DB_MPOOL_CREATE , & xt_g )) != 0) 520 ( t ); 522 i( `P_FREESPACE ( dbp , xt_g > w_d ) 527 i(( t = `__memp_dty ( mpf , 528 & h -> ge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 529 ( t ); 531 i( xt_g = NULL && ( t = `__ham_add_ovge ( dbc , 532 h -> ge , 0, & xt_g )) != 0) 533 ( t ); 536 i(( t = `__memp_dty ( mpf , 537 & xt_g , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) { 538 () `__memp_ut ( mpf , 539 dbc -> thad_fo , xt_g , dbc-> iܙy ); 540 ( t ); 543 i( `P_FREESPACE ( dbp , xt_g < w_d && ( t = 544 `__ham_add_ovge ( dbc , xt_g , 1, &next_pagep)) != 0) { 545 () `__memp_ut ( mpf , 546 dbc -> thad_fo , xt_g , dbc-> iܙy ); 547 ( t ); 551 i( `DBC_LOGGING ( dbc )) { 552 y = PUTPAIR ; 553 k . ags = 0; 554 d . ags = 0; 555 i( `HPAGE_PTYPE ( 556 `H_PAIRKEY ( dbp , h -> ge , h-> dx )= H_OFFPAGE ) { 557 y | PAIR_KEYMASK ; 558 k . da = `H_PAIRKEY ( dbp , h -> ge , h-> dx ); 559 k . size = HOFFPAGE_SIZE ; 560 key_ty = H_OFFPAGE ; 562 k . da = 563 `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , h -> ge , h-> dx )); 564 k . size = 565 `LEN_HKEY ( dbp , h -> ge , dbp-> pgsize , h-> dx ); 566 key_ty = H_KEYDATA ; 570 i(( t = `__ham_gdex ( dbc , xt_g , & k , 571 key_ty , & mch , & w_dx )) != 0) 572 ( t ); 574 i( `HPAGE_PTYPE ( hk = H_OFFPAGE ) { 575 y | PAIR_DATAMASK ; 576 d . da = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 577 d . size = HOFFPAGE_SIZE ; 579 i( `HPAGE_PTYPE ( `H_PAIRDATA ( dbp , 580 h -> ge , h-> dx )= H_DUPLICATE ) 581 y | PAIR_DUPMASK ; 582 d . da = `HKEYDATA_DATA ( 583 `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 584 d . size = `LEN_HDATA ( dbp , h -> ge , 585 dbp -> pgsize , h -> dx ); 588 i(( t = `__ham_sd_log ( dbp , 589 dbc -> txn , & w_l , 0, y , `PGNO ( xt_g ), 590 ( u_t32_t ) w_dx , & `LSN ( xt_g ), 591 & k , & d )) != 0) { 592 () `__memp_ut ( mpf , 593 dbc -> thad_fo , xt_g , dbc-> iܙy ); 594 ( t ); 597 `LSN_NOT_LOGGED ( w_l ); 605 w_dx = NDX_INVALID ; 609 i(( t = `__memp_dty ( mpf , 610 & xt_g , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) { 611 () `__memp_ut ( mpf , 612 dbc -> thad_fo , xt_g , dbc-> iܙy ); 613 ( t ); 615 `LSN ( xt_g w_l ; 617 i(( t = `__ham_cy ( dbc , h -> ge , 618 `H_KEYINDEX ( h -> dx ), xt_g , & w_dx )) != 0) 619 out ; 622 i(( t = `__hamc_chgpg ( dbc , `PGNO ( h -> ge ), `H_KEYINDEX (h-> dx ), 623 `PGNO ( xt_g ), w_dx )) != 0) 624 out ; 627 t = `__ham_d_ ( dbc , HAM_DEL_NO_RECLAIM ); 639 i(! `STD_LOCKING ( dbc )) 640 h -> hdr -> m ++; 642 out : i(( t_t = `__memp_ut ( mpf , 643 dbc -> thad_fo , h -> ge , dbc-> iܙy )!0 && t == 0) 644 t = t_t ; 645 h -> ge = xt_g ; 646 h -> pgno = `PGNO (h-> ge ); 647 h -> dx = w_dx ; 648 `F_SET ( h , H_EXPAND ); 649 `F_CLR ( h , H_DELETED ); 651 ( t ); 652 } } 665 $__ham_move_ofage ( dbc , g , ndx , pgno ) 666 DBC * dbc ; 667 PAGE * g ; 668 u_t32_t ndx ; 669 db_pgno_t pgno ; 671 DB * dbp ; 672 DBT w_dbt ; 673 DBT d_dbt ; 674 HOFFDUP od ; 675 db_dx_t i , * p ; 676 t32_t dif ; 677 u_t8_t * c ; 678 t ; 680 dbp = dbc ->dbp; 681 od . ty = H_OFFDUP ; 682 `UMRW_SET ( od . unud [0]); 683 `UMRW_SET ( od . unud [1]); 684 `UMRW_SET ( od . unud [2]); 685 od . pgno =gno; 686 t = 0; 688 i( `DBC_LOGGING ( dbc )) { 689 w_dbt . da = & od ; 690 w_dbt . size = HOFFDUP_SIZE ; 691 d_dbt . da = `P_ENTRY ( dbp , g , ndx ); 692 d_dbt . size = `LEN_HITEM ( dbp , g , dbp-> pgsize , ndx ); 693 i(( t = `__ham_a_log ( dbp , dbc -> txn , & `LSN ( g ), 0, 694 `PGNO ( g ), ( u_t32_t ) ndx , & `LSN (pagep), -1, 695 & d_dbt , & w_dbt , 0)) != 0) 696 ( t ); 698 `LSN_NOT_LOGGED ( `LSN ( g )); 705 dif = 706 ( t32_t ) `LEN_HITEM ( dbp , g , dbp-> pgsize , ndx ) - 707 ( t32_t ) HOFFDUP_SIZE ; 708 i( dif != 0) { 710 p = `P_INP ( dbp , g ); 711 c = ( u_t8_t *)( g + `HOFFSET (pagep); 712 `memmove ( c + dif , src, p [ ndx ] - `HOFFSET ( g )); 713 `HOFFSET ( g + dif ; 716 i = ndx ; i < `NUM_ENT ( g ); i++) 717 p [ i ] + dif ; 721 `memy ( `P_ENTRY ( dbp , g , ndx ), & od , HOFFDUP_SIZE ); 722 ( t ); 723 } } 734 $__ham_dch ( dbc , dbt , of , cm , ags ) 735 DBC * dbc ; 736 DBT * dbt ; 737 u_t32_t * of , ags ; 738 * cm ; 740 DB * dbp ; 741 DBT cur ; 742 HASH_CURSOR * h ; 743 db_dx_t i , n ; 744 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 745 u_t8_t * da ; 747 dbp = dbc ->dbp; 748 h = ( HASH_CURSOR *) dbc -> ; 749 func = dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 751 i = `F_ISSET ( h , H_CONTINUE ? h-> dup_off : 0; 752 da = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )+ i ; 753 h -> dup_ = `LEN_HDATA ( dbp , h-> ge , dbp-> pgsize , h-> dx ); 754 n = h -> dup_n ; 755 i < h -> dup_ ) { 756 `memy (& n , da , ( db_dx_t )); 757 da +( db_dx_t ); 758 `DB_SET_DBT ( cur , da , n ); 766 * cm = `func ( dbp , dbt , & cur ); 767 i(* cm == 0) 769 i(* cm < 0 && dbp -> dup_com ! NULL ) { 770 i( ags = DB_GET_BOTH_RANGE ) 771 * cm = 0; 775 i + n + 2 * ( db_dx_t ); 776 da + n + ( db_dx_t ); 779 * of = i ; 780 h -> dup_off = i ; 781 h -> dup_n = n ; 782 `F_SET ( h , H_ISDUP ); 783 } } 791 $__ham_dcurs ( dbc , pgno , dx ) 792 DBC * dbc ; 793 db_pgno_t pgno ; 794 u_t32_t dx ; 796 BTREE_CURSOR * d ; 797 DB * dbp ; 798 HASH_CURSOR * h ; 799 t ; 801 dbp = dbc ->dbp; 802 h = ( HASH_CURSOR *) dbc -> ; 804 i(( t = `__dbc_wd ( dbc , pgno , h -> d , &hcp->opd)) != 0) 805 ( t ); 807 d = ( BTREE_CURSOR *) h -> d -> ; 808 d -> pgno =gno; 809 d -> dx = indx; 811 i( dbp -> dup_com = NULL ) { 817 d -> o = dx + 1; 824 i( `F_ISSET ( h , H_DELETED )) { 825 `F_SET ( d , C_DELETED ); 826 `F_CLR ( h , H_DELETED ); 830 } } 842 $__hamc_chgpg ( dbc , d_pgno , d_dex , w_pgno , w_dex ) 843 DBC * dbc ; 844 db_pgno_t d_pgno , w_pgno ; 845 u_t32_t d_dex , w_dex ; 847 DB * dbp , * ldbp ; 848 DBC * ; 849 DB_LSN l ; 850 DB_TXN * my_txn ; 851 ENV * v ; 852 HASH_CURSOR * h ; 853 found , t ; 855 dbp = dbc ->dbp; 856 v = dbp ->env; 858 my_txn = `IS_SUBTRANSACTION ( dbc -> txn ? dbc->tx: NULL ; 860 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 861 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 862 found = 0; 863 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 864 ldbp = `TAILQ_NEXT dbp, dblilks )) { 865 `MUTEX_LOCK ( v , dbp -> mux ); 866 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 867 i( = dbc || cp-> dbty ! DB_HASH ) 870 h = ( HASH_CURSOR *) -> ; 877 i( `F_ISSET ( h , H_DELETED )) 880 i( h -> pgno = d_pgno && 881 ! `MVCC_SKIP_CURADJ ( , d_pgno )) { 882 i( h -> dx = d_dex ) { 883 h -> pgno = w_pgno ; 884 h -> dx = w_dex ; 887 i( my_txn ! NULL && -> txn != my_txn) 888 found = 1; 891 `MUTEX_UNLOCK ( v , dbp -> mux ); 893 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 895 i( found !0 && `DBC_LOGGING ( dbc )) { 896 i(( t = `__ham_chgpg_log ( dbp , my_txn , & l , 0, DB_HAM_CHGPG , 897 d_pgno , w_pgno , d_dex , w_dex )) != 0) 898 ( t ); 901 } } @../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 , 42 dbc -> thad_fo , dbc-> txn , 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 , 66 dbc -> thad_fo , h -> hdr , dbc-> iܙy )) != 0) 67 ( t ); 68 h -> hdr = NULL ; 71 ( `__TLPUT ( dbc , h -> hlock )); 72 } } 80 $__ham_dty_ma ( dbc , ags ) 81 DBC * dbc ; 82 u_t32_t ags ; 84 DB * dbp ; 85 HASH * hashp ; 86 HASH_CURSOR * h ; 87 t ; 89 dbp = dbc ->dbp; 90 hashp = dbp -> h_ ; 91 h = ( HASH_CURSOR *) dbc -> ; 93 i(( t = `__db_lg ( dbc , LCK_COUPLE , 94 hashp -> ma_pgno , DB_LOCK_WRITE , 0, & h -> hlock )) != 0) 95 ( t ); 97 ( `__memp_dty ( dbp -> mpf , 98 & h -> hdr , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , ags )); 99 } } @../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 -> v , 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 -> v , 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_THREAD_INFO * ; 68 DB_TXN * txn ; 69 cڡ * me ; 70 db_pgno_t ba_pgno ; 71 u_t32_t ags ; 73 DBC * dbc ; 74 ENV * v ; 75 HASH * hashp ; 76 HASH_CURSOR * h ; 77 t , t_t ; 79 v = dbp ->env; 80 dbc = NULL ; 88 i(( t = `__db_curs ( dbp , , 89 txn , & dbc , `LF_ISSET ( DB_CREATE && `CDB_LOCKING ( v ) ? 90 DB_WRITECURSOR : 0)) != 0) 91 ( t ); 93 h = ( HASH_CURSOR *) dbc -> ; 94 hashp = dbp -> h_ ; 95 hashp -> ma_pgno = ba_pgno ; 96 i(( t = `__ham_g_ma ( dbc )) != 0) 97 r ; 100 i( h -> hdr -> dbma . magic = DB_HASHMAGIC ) { 102 i( hashp -> h_hash = NULL ) 103 hashp -> h_hash = h -> hdr -> dbma . vsi < 5 104 ? __ham_func4 : __ham_func5 ; 105 hashp -> h_m = h -> hdr -> m ; 106 i( `F_ISSET (& h -> hdr -> dbma , DB_HASH_DUP )) 107 `F_SET ( dbp , DB_AM_DUP ); 108 i( `F_ISSET (& h -> hdr -> dbma , DB_HASH_DUPSORT )) 109 `F_SET ( dbp , DB_AM_DUPSORT ); 110 i( `F_ISSET (& h -> hdr -> dbma , DB_HASH_SUBDB )) 111 `F_SET ( dbp , DB_AM_SUBDB ); 112 i( `PGNO ( h -> hdr = PGNO_BASE_MD && 113 ! `F_ISSET ( dbp , DB_AM_RECOVER )) 114 `__memp_t_ϡ_pgno ( dbp -> mpf , 115 h -> hdr -> dbma . ϡ_pgno ); 116 } i(! `IS_RECOVERING ( v && ! `F_ISSET ( dbp , DB_AM_RECOVER )) { 117 `__db_rx ( v , 118 "%s: Invid hash mg%lu", me , ( u_lg ) ba_pgno ); 119 t = EINVAL ; 123 i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 124 t = t_t ; 125 r : i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 126 t = t_t ; 128 ( t ); 129 } } 137 $__ham_machk ( dbp , me , hashm ) 138 DB * dbp ; 139 cڡ * me ; 140 HMETA * hashm ; 142 ENV * v ; 143 u_t32_t vs ; 144 t ; 146 v = dbp ->env; 152 vs = hashm -> dbma . vsi ; 153 i( `F_ISSET ( dbp , DB_AM_SWAP )) 154 `M_32_SWAP ( vs ); 155 vs ) { 159 `__db_rx ( v , 161 me , ( u_lg ) vs ); 162 ( DB_OLD_VERSION ); 168 `__db_rx ( v , 169 "%s: unsu܋d hash vsi: %lu", me , ( u_lg ) vs ); 170 ( EINVAL ); 174 i( `F_ISSET ( dbp , DB_AM_SWAP ) && 175 ( t = `__ham_msw ( v , ( PAGE *) hashm )) != 0) 176 ( t ); 179 i( dbp -> ty ! DB_HASH && dbp->ty ! DB_UNKNOWN ) 180 ( EINVAL ); 181 dbp -> ty = DB_HASH ; 182 `DB_ILLEGAL_METHOD ( dbp , DB_OK_HASH ); 188 i(( t = `__db_fchk ( v , 189 "DB->ݒ", hashm -> dbma . ags , 190 DB_HASH_DUP | DB_HASH_SUBDB | DB_HASH_DUPSORT )) != 0) 191 ( t ); 193 i( `F_ISSET (& hashm -> dbma , DB_HASH_DUP )) 194 `F_SET ( dbp , DB_AM_DUP ); 196 i( `F_ISSET ( dbp , DB_AM_DUP )) { 197 `__db_rx ( v , 199 me ); 200 ( EINVAL ); 203 i( `F_ISSET (& hashm -> dbma , DB_HASH_SUBDB )) 204 `F_SET ( dbp , DB_AM_SUBDB ); 206 i( `F_ISSET ( dbp , DB_AM_SUBDB )) { 207 `__db_rx ( v , 209 me ); 210 ( EINVAL ); 213 i( `F_ISSET (& hashm -> dbma , DB_HASH_DUPSORT )) { 214 i( dbp -> dup_com = NULL ) 215 dbp -> dup_com = __bam_defcmp ; 217 i( dbp -> dup_com ! NULL ) { 218 `__db_rx ( v , 220 me ); 221 ( EINVAL ); 225 dbp -> pgsize = hashm -> dbma . gesize ; 228 `memy ( dbp -> feid , hashm -> dbma . uid , DB_FILE_ID_LEN ); 231 } } 241 db_pgno_t 242 $__ham__ma ( dbp , ma , pgno , lp ) 243 DB * dbp ; 244 HMETA * ma ; 245 db_pgno_t pgno ; 246 DB_LSN * lp ; 248 ENV * v ; 249 HASH * hashp ; 250 db_pgno_t nbucks ; 251 u_t i , l2 ; 253 v = dbp ->env; 254 hashp = dbp -> h_ ; 256 i( hashp -> h_hash = NULL ) 257 hashp -> h_hash = DB_HASHVERSION < 5 ? __ham_func4 : __ham_func5 ; 259 i( hashp -> h_m !0 && hashp-> h_f != 0) { 260 hashp -> h_m = (hashp->h_m - 1/ hashp-> h_f + 1; 261 l2 = `__db_log2 ( hashp -> h_m > 2 ? hashp->h_nelem : 2); 263 l2 = 1; 264 nbucks = ( db_pgno_t )(1 << l2 ); 266 `memt ( ma , 0, ( HMETA )); 267 ma -> dbma . l = * lp ; 268 ma -> dbma . pgno =gno; 269 ma -> dbma . magic = DB_HASHMAGIC ; 270 ma -> dbma . vsi = DB_HASHVERSION ; 271 ma -> dbma . gesize = dbp -> pgsize ; 272 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 273 `FLD_SET ( ma -> dbma . maags , DBMETA_CHKSUM ); 274 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 275 ma -> dbma . y_g = v -> yo_hd -> g ; 276 `DB_ASSERT ( v , ma -> dbma . y_g != 0); 277 ma -> yo_magic = ma-> dbma . magic ; 279 ma -> dbma . ty = P_HASHMETA ; 280 ma -> dbma . = PGNO_INVALID ; 281 ma -> dbma . ϡ_pgno = pgno ; 282 ma -> max_buck = nbucks - 1; 283 ma -> high_mask = nbucks - 1; 284 ma -> low_mask = ( nbucks >> 1) - 1; 285 ma -> f = hashp -> h_f ; 286 ma -> m = hashp -> h_m ; 287 ma -> h_chkey = hashp -> `h_hash ( dbp , CHARKEY , (CHARKEY)); 288 `memy ( ma -> dbma . uid , dbp -> feid , DB_FILE_ID_LEN ); 290 i( `F_ISSET ( dbp , DB_AM_DUP )) 291 `F_SET (& ma -> dbma , DB_HASH_DUP ); 292 i( `F_ISSET ( dbp , DB_AM_SUBDB )) 293 `F_SET (& ma -> dbma , DB_HASH_SUBDB ); 294 i( dbp -> dup_com ! NULL ) 295 `F_SET (& ma -> dbma , DB_HASH_DUPSORT ); 302 ma -> es [0] = pgno + 1; 305 i = 1; i < l2 ; i++) 306 ma -> es [ i ] = meta->spares[0]; 307 ; i < NCACHED ; i++) 308 ma -> es [ i ] = PGNO_INVALID ; 310 ( nbucks ); 311 } } 331 $__ham_w_fe ( dbp , , txn , fhp , me ) 332 DB * dbp ; 333 DB_THREAD_INFO * ; 334 DB_TXN * txn ; 335 DB_FH * fhp ; 336 cڡ * me ; 338 DBT pdbt ; 339 DB_LSN l ; 340 DB_MPOOLFILE * mpf ; 341 DB_PGINFO pgfo ; 342 ENV * v ; 343 HMETA * ma ; 344 PAGE * ge ; 345 t ; 346 db_pgno_t gno ; 347 * buf ; 349 v = dbp ->env; 350 mpf = dbp ->mpf; 351 ma = NULL ; 352 ge = NULL ; 353 buf = NULL ; 355 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 357 gno = PGNO_BASE_MD ; 358 i(( t = `__memp_fg ( mpf , & gno , , txn , 359 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ma )) != 0) 360 ( t ); 361 `LSN_NOT_LOGGED ( l ); 362 gno = `__ham__ma ( dbp , ma , PGNO_BASE_MD , & l ); 363 ma -> dbma . ϡ_pgno = gno ; 364 i(( t = `__db_log_ge ( dbp , 365 txn , & l , ma -> dbma . pgno , ( PAGE *)meta)) != 0) 366 r ; 367 t = `__memp_ut ( mpf , , ma , dbp -> iܙy ); 368 ma = NULL ; 369 i( t != 0) 370 r ; 373 i(( t = `__memp_fg ( mpf , & gno , , txn , 374 DB_MPOOL_CREATE , & ge )) != 0) 375 r ; 376 `P_INIT ( ge , 377 dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 378 `LSN_NOT_LOGGED ( ge -> l ); 379 i(( t = 380 `__db_log_ge ( dbp , txn , & ge -> l , gno ,age)) != 0) 381 r ; 382 t = `__memp_ut ( mpf , , ge , dbp -> iܙy ); 383 ge = NULL ; 384 i( t != 0) 385 r ; 387 `memt (& pdbt , 0, (pdbt)); 390 pgfo . db_gesize = dbp -> pgsize ; 391 pgfo . ty = dbp ->type; 392 pgfo . ags = 393 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 394 pdbt . da = & pgfo ; 395 pdbt . size = ( pgfo ); 396 i(( t = `__os_oc ( dbp -> v , 1, dbp-> pgsize , & buf )) != 0) 397 ( t ); 398 ma = ( HMETA *) buf ; 399 `LSN_NOT_LOGGED ( l ); 400 gno = `__ham__ma ( dbp , ma , PGNO_BASE_MD , & l ); 401 ma -> dbma . ϡ_pgno = gno ; 402 i(( t = 403 `__db_pgout ( v -> dbv , PGNO_BASE_MD , ma , & pdbt )) != 0) 404 r ; 405 i(( t = `__f_wre ( v , txn , me , DB_APP_DATA , fhp , 406 dbp -> pgsize , 0, 0, buf , dbp->pgsize, 1, `F_ISSET ( 407 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 408 r ; 409 ma = NULL ; 412 #ifde DIAGNOSTIC 413 `memt ( buf , 0, dbp -> pgsize ); 415 ge = ( PAGE *) buf ; 416 `P_INIT ( ge , 417 dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 418 `LSN_NOT_LOGGED ( ge -> l ); 419 i(( t = `__db_pgout ( v -> dbv , gno , buf , & pdbt )) != 0) 420 r ; 421 i(( t = `__f_wre ( v , txn , me , DB_APP_DATA , fhp , 422 dbp -> pgsize , gno , 0, buf , dbp->pgsize, 1, `F_ISSET ( 423 dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0)) != 0) 424 r ; 425 ge = NULL ; 428 r : i( buf ! NULL ) 429 `__os_ ( v , buf ); 431 i( ma ! NULL ) 432 () `__memp_ut ( mpf , , ma , dbp -> iܙy ); 433 i( ge ! NULL ) 434 () `__memp_ut ( mpf , , ge , dbp -> iܙy ); 436 ( t ); 437 } } 446 $__ham_w_subdb ( mdbp , dbp , , txn ) 447 DB * mdbp , * dbp ; 448 DB_THREAD_INFO * ; 449 DB_TXN * txn ; 451 DBC * dbc ; 452 DBMETA * mma ; 453 DB_LOCK mock , mmlock ; 454 DB_LSN l ; 455 DB_MPOOLFILE * mpf ; 456 ENV * v ; 457 HMETA * ma ; 458 PAGE * h ; 459 i , t , t_t ; 460 db_pgno_t gno , mpgno ; 462 v = mdbp ->env; 463 mpf = mdbp ->mpf; 464 dbc = NULL ; 465 ma = NULL ; 466 mma = NULL ; 467 `LOCK_INIT ( mock ); 468 `LOCK_INIT ( mmlock ); 470 i(( t = `__db_curs ( mdbp , , txn , 471 & dbc , `CDB_LOCKING ( v ? DB_WRITECURSOR : 0)) != 0) 472 ( t ); 475 i(( t = `__db_lg ( dbc , 476 0, dbp -> ma_pgno , DB_LOCK_WRITE , 0, & mock )) != 0) 477 r ; 478 i(( t = `__memp_fg ( mpf , & dbp -> ma_pgno , , dbc -> txn , 479 DB_MPOOL_CREATE , & ma )) != 0) 480 r ; 483 l = ma -> dbma .lsn; 484 gno = `__ham__ma ( dbp , ma , dbp-> ma_pgno , & l ); 492 mpgno = PGNO_BASE_MD ; 493 i(( t = `__db_lg ( dbc , 0, mpgno , DB_LOCK_WRITE , 0, & mmlock )) != 0) 494 r ; 495 i(( t = `__memp_fg ( mpf , & mpgno , , dbc -> txn , 496 DB_MPOOL_DIRTY , & mma )) != 0) 497 r ; 503 ma -> es [0] = mma -> ϡ_pgno + 1; 504 i = 0; i < NCACHED && ma -> es [i] ! PGNO_INVALID ; i++) 505 ma -> es [ i ] = meta->spares[0]; 508 i(( t = `__db_log_ge ( mdbp , 509 txn , & ma -> dbma . l , dbp -> ma_pgno , ( PAGE *)meta)) != 0) 510 r ; 513 i( `DBENV_LOGGING ( v ) 514 #i! `defed ( DEBUG_WOP ) 515 && txn ! NULL 518 i(( t = `__ham_grouoc_log ( mdbp , txn , 519 & `LSN ( mma ), 0, &LSN(mma), ma -> es [0], 520 ma -> max_buck + 1, 0, mma -> ϡ_pgno )) != 0) 521 r ; 524 i(( t = `__memp_ut ( mpf , , ma , dbc -> iܙy )) != 0) 525 r ; 526 ma = NULL ; 528 gno + mma -> ϡ_pgno ; 531 i(( t = `__memp_fg ( mpf , & gno , , dbc -> txn , 532 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h )) != 0) 533 r ; 535 mma -> ϡ_pgno = gno ; 536 `P_INIT ( h , dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 537 `LSN ( h LSN( mma ); 538 i(( t = `__memp_ut ( mpf , , h , dbc -> iܙy )) != 0) 539 r ; 541 r : 542 i( mma ! NULL && ( t_t = `__memp_ut ( mpf , 543 , mma , dbc -> iܙy )!0 && t == 0) 544 t = t_t ; 545 i(( t_t = `__LPUT ( dbc , mmlock )!0 && t == 0) 546 t = t_t ; 547 i( ma ! NULL && ( t_t = `__memp_ut ( mpf , 548 , ma , dbc -> iܙy )!0 && t == 0) 549 t = t_t ; 550 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 551 t = t_t ; 552 i( dbc ! NULL ) 553 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 554 t = t_t ; 555 ( t ); 556 } } @../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 62 __P (( DBC *, PAGE *, cڡ DBT *, , *, db_dx_t *)); 63 __ham_gdex_uns܋d 64 __P (( DBC *, 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 -> v , "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 , 159 dbc -> thad_fo , h -> ge , dbc-> iܙy ); 161 i(( t_t = `__ham_em_ ( dbc )!0 && t == 0) 162 t = t_t ; 164 ( t ); 165 } } 171 $__ham_em_ ( dbc ) 172 DBC * dbc ; 174 HASH_CURSOR * h ; 175 t ; 177 h = ( HASH_CURSOR *) dbc -> ; 183 t = `__TLPUT ( dbc , h -> lock ); 190 h -> buck = BUCKET_INVALID ; 191 h -> lbuck = BUCKET_INVALID ; 192 `LOCK_INIT ( h -> lock ); 193 h -> lock_mode = DB_LOCK_NG ; 194 h -> dup_off = 0; 195 h -> dup_n = 0; 196 h -> dup_ = 0; 197 h -> ek_size = 0; 198 h -> ek_found_ge = PGNO_INVALID ; 199 h -> ek_found_dx = NDX_INVALID ; 200 h -> ags = 0; 202 h -> pgno = PGNO_INVALID ; 203 h -> dx = NDX_INVALID ; 204 h -> ge = NULL ; 206 ( t ); 207 } } 215 $__ham_em_ϡ ( dbc , mode , pgn ) 216 DBC * dbc ; 217 db_lockmode_t mode ; 218 db_pgno_t * pgn ; 220 HASH_CURSOR * h ; 221 t ; 223 h = ( HASH_CURSOR *) dbc -> ; 224 i(( t = `__ham_em_t ( dbc )) != 0) 225 ( t ); 227 h -> buck = h-> hdr -> max_buck ; 228 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 229 `F_SET ( h , H_OK ); 230 ( `__ham_em_ev ( dbc , mode , pgn )); 231 } } 237 $__ham_em_f ( dbc , mode , pgn ) 238 DBC * dbc ; 239 db_lockmode_t mode ; 240 db_pgno_t * pgn ; 242 HASH_CURSOR * h ; 243 t ; 245 h = ( HASH_CURSOR *) dbc -> ; 246 i(( t = `__ham_em_t ( dbc )) != 0) 247 ( t ); 248 `F_SET ( h , H_OK ); 249 h -> buck = 0; 250 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 251 ( `__ham_em_xt ( dbc , mode , pgn )); 252 } } 263 $__ham_em_ev ( dbc , mode , pgn ) 264 DBC * dbc ; 265 db_lockmode_t mode ; 266 db_pgno_t * pgn ; 268 DB * dbp ; 269 HASH_CURSOR * h ; 270 db_pgno_t xt_pgno ; 271 t ; 273 h = ( HASH_CURSOR *) dbc -> ; 274 dbp = dbc ->dbp; 285 `F_CLR ( h , H_OK | H_NOMORE | H_DELETED ); 287 i(( t = `__ham_g_age ( dbc , mode )) != 0) 288 ( t ); 295 i(! `F_ISSET ( h , H_NEXT_NODUP && F_ISSET(h, H_ISDUP )) { 296 i( `HPAGE_TYPE ( dbp , h -> ge , `H_DATAINDEX (h-> dx )) == 297 H_OFFDUP ) { 298 `memy ( pgn , 299 `HOFFDUP_PGNO ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )), 300 ( db_pgno_t )); 301 `F_SET ( h , H_OK ); 306 i( h -> dup_off != 0) { 307 `memy (& h -> dup_n , `HKEYDATA_DATA ( 308 `H_PAIRDATA ( dbp , h -> ge , h-> dx )) 309 + h -> dup_off - ( db_dx_t ), 310 ( db_dx_t )); 311 h -> dup_off -= 312 `DUP_SIZE ( h -> dup_n ); 313 ( `__ham_em ( dbc , mode , pgn )); 323 i( `F_ISSET ( h , H_DUPONLY )) { 324 `F_CLR ( h , H_OK ); 325 `F_SET ( h , H_NOMORE ); 332 `F_CLR ( h , H_ISDUP ); 334 i( h -> dx == 0) { 335 h -> pgno = `PREV_PGNO (h-> ge ); 336 i( h -> pgno = PGNO_INVALID ) { 338 `F_SET ( h , H_NOMORE ); 339 ( DB_NOTFOUND ); 340 } i(( t = 341 `__ham_xt_age ( dbc , h -> pgno )) != 0) 342 ( t ); 344 h -> dx = `NUM_ENT (h-> ge ); 351 i( h -> dx = NDX_INVALID ) { 352 `DB_ASSERT ( dbp -> v , h -> ge ! NULL ); 354 h -> dx = `NUM_ENT (h-> ge ); 355 xt_pgno = `NEXT_PGNO ( h -> ge ); 356 xt_pgno ! PGNO_INVALID ; 357 xt_pgno = `NEXT_PGNO ( h -> ge )) { 358 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 359 ( t ); 360 h -> dx = `NUM_ENT (h-> ge ); 363 i( h -> dx == 0) { 365 `F_SET ( h , H_NOMORE ); 366 ( DB_NOTFOUND ); 370 h -> dx -= 2; 372 ( `__ham_em ( dbc , mode , pgn )); 373 } } 381 $__ham_em_xt ( dbc , mode , pgn ) 382 DBC * dbc ; 383 db_lockmode_t mode ; 384 db_pgno_t * pgn ; 386 HASH_CURSOR * h ; 387 t ; 389 h = ( HASH_CURSOR *) dbc -> ; 391 i(( t = `__ham_g_age ( dbc , mode )) != 0) 392 ( t ); 399 i( `F_ISSET ( h , H_DELETED )) { 400 i( h -> dx ! NDX_INVALID && 401 `F_ISSET ( h , H_ISDUP ) && 402 `HPAGE_TYPE ( dbc -> dbp , h -> ge , `H_DATAINDEX (h-> dx )) 403 = H_DUPLICATE && h -> dup_ =h-> dup_off ) { 404 i( `F_ISSET ( h , H_DUPONLY )) { 405 `F_CLR ( h , H_OK ); 406 `F_SET ( h , H_NOMORE ); 409 `F_CLR ( h , H_ISDUP ); 410 h -> dx += 2; 412 } i(! `F_ISSET ( h , H_ISDUP && F_ISSET(h, H_DUPONLY )) { 413 `F_CLR ( h , H_OK ); 414 `F_SET ( h , H_NOMORE ); 416 } i( `F_ISSET ( h , H_ISDUP ) && 417 `F_ISSET ( h , H_NEXT_NODUP )) { 418 `F_CLR ( h , H_ISDUP ); 419 h -> dx += 2; 421 `F_CLR ( h , H_DELETED ); 422 } i( h -> dx = NDX_INVALID ) { 423 h -> dx = 0; 424 `F_CLR ( h , H_ISDUP ); 425 } i( `F_ISSET ( h , H_NEXT_NODUP )) { 426 h -> dx += 2; 427 `F_CLR ( h , H_ISDUP ); 428 } i( `F_ISSET ( h , H_ISDUP && h-> dup_ != 0) { 429 i( h -> dup_off + `DUP_SIZE (h-> dup_n ) >= 430 h -> dup_ && `F_ISSET (h, H_DUPONLY )) { 431 `F_CLR ( h , H_OK ); 432 `F_SET ( h , H_NOMORE ); 435 h -> dup_off + `DUP_SIZE (h-> dup_n ); 436 i( h -> dup_off >h-> dup_ ) { 437 `F_CLR ( h , H_ISDUP ); 438 h -> dx += 2; 440 } i( `F_ISSET ( h , H_DUPONLY )) { 441 `F_CLR ( h , H_OK ); 442 `F_SET ( h , H_NOMORE ); 445 h -> dx += 2; 446 `F_CLR ( h , H_ISDUP ); 449 ( `__ham_em ( dbc , mode , pgn )); 450 } } 472 $__ham_ ( dbc , p , dxp , key_dbt , da_dbt , key_ty , da_ty ) 473 DBC * dbc ; 474 PAGE * p ; 475 db_dx_t * dxp ; 476 cڡ DBT * key_dbt , * da_dbt ; 477 key_ty , da_ty ; 479 DB * dbp ; 480 u_t16_t n , dx ; 481 db_dx_t * p ; 482 u_t32_t ksize , dsize , , di ; 483 u_t8_t * offt ; 484 i , mch , t ; 486 dbp = dbc ->dbp; 487 n = `NUM_ENT ( p ); 488 p = `P_INP ( dbp , p ); 489 ksize = ( key_ty = H_OFFPAGE ) ? 490 key_dbt -> size : `HKEYDATA_SIZE (key_dbt->size); 491 dsize = ( da_ty = H_OFFPAGE ) ? 492 da_dbt -> size : `HKEYDATA_SIZE (data_dbt->size); 493 = ksize + dsize ; 495 i( dxp ! NULL && *dx! NDX_INVALID ) 496 dx = * dxp ; 498 i(( t = `__ham_gdex ( dbc , p , key_dbt , 499 key_ty , & mch , & dx )) != 0) 500 ( t ); 502 i( dxp ! NULL ) 503 * dxp = dx ; 505 `DB_ASSERT ( dbp -> v , mch != 0); 509 i( n =0 || dx ==) { 510 p [ dx ] = `HOFFSET ( p - ksize ; 511 p [ dx +1] = `HOFFSET ( p - ; 553 offt = ( u_t8_t *) p + `HOFFSET (p); 554 i( dx == 0) 555 di = dbp -> pgsize - `HOFFSET ( p ); 557 di = ( u_t32_t ) 558 ( `P_ENTRY ( dbp , p , dx - 1- offt ); 559 `memmove ( offt - , offt, di ); 562 `memmove (& p [ dx + 2], &inp[indx], 563 ( n - dx * ( db_dx_t )); 566 i = dx + 2; i < n + 2; i++) 567 p [ i ] - ; 570 p [ dx ] = ( `HOFFSET ( p - + di + dsize ; 571 p [ dx + 1] = ( `HOFFSET ( p - + di ; 574 `HOFFSET ( p - ; 576 i( key_ty = H_OFFPAGE ) 577 `memy ( `P_ENTRY ( dbp , p , dx ), key_dbt -> da , key_dbt-> size ); 579 `PUT_HKEYDATA ( `P_ENTRY ( dbp , p , dx ), key_dbt -> da , 580 key_dbt -> size , key_ty ); 581 i( da_ty = H_OFFPAGE ) 582 `memy ( `P_ENTRY ( dbp , p , dx +1), da_dbt -> da , 583 da_dbt -> size ); 585 `PUT_HKEYDATA ( `P_ENTRY ( dbp , p , dx +1), da_dbt -> da , 586 da_dbt -> size , da_ty ); 587 `NUM_ENT ( p ) += 2; 596 } } 610 $__ham_gdex ( dbc , p , key , key_ty , mch , dx ) 611 DBC * dbc ; 612 PAGE * p ; 613 cڡ DBT * key ; 614 key_ty , * mch ; 615 db_dx_t * dx ; 618 `DB_ASSERT ( dbc -> v , `NUM_ENT ( p )%2 == 0 ); 621 i( p -> ty = P_HASH_UNSORTED ) 622 ( `__ham_gdex_uns܋d ( dbc , p , key , mch , dx )); 624 ( `__ham_gdex_s܋d ( dbc , 625 p , key , key_ty , mch , dx )); 626 } } 628 #unde m 629 #m ( a , b ((< (b)? (a: (b)) ) 642 $__ham_gdex_uns܋d ( dbc , p , key , mch , dx ) 643 DBC * dbc ; 644 PAGE * p ; 645 cڡ DBT * key ; 646 * mch ; 647 db_dx_t * dx ; 649 DB * dbp ; 650 DBT pg_dbt ; 651 DB_THREAD_INFO * ; 652 DB_TXN * txn ; 653 HASH * t ; 654 db_pgno_t pgno ; 655 i , n , s , t ; 656 u_t32_t ; 657 u_t8_t * hk ; 659 dbp = dbc ->dbp; 660 txn = dbc ->txn; 661 = dbc -> thad_fo ; 662 n = `NUM_ENT ( p ); 663 t = dbp -> h_ ; 664 s = 1; 667 i = 0; i < n ; i+=2) { 668 hk = `H_PAIRKEY ( dbp , p , i ); 669 `HPAGE_PTYPE ( hk )) { 670 H_OFFPAGE : 672 `memy (& , `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 673 i( = key -> size ) { 674 `memy (& pgno , 675 `HOFFPAGE_PGNO ( hk ), ( db_pgno_t )); 676 i(( t = `__db_moff ( dbp , , txn , key , 677 pgno , , t -> h_com , & s )) != 0) 678 ( t ); 681 H_KEYDATA : 682 i( t -> h_com ! NULL ) { 683 `DB_INIT_DBT ( pg_dbt , 684 `HKEYDATA_DATA ( hk ), key -> size ); 685 i( t -> `h_com ( 686 dbp , key , & pg_dbt ) != 0) 688 } i( key -> size == 689 `LEN_HKEY ( dbp , p , dbp-> pgsize , i )) 690 s = `memcmp ( key -> da , `HKEYDATA_DATA ( hk ), 691 key -> size ); 693 H_DUPLICATE : 694 H_OFFDUP : 700 ( `__db_pgfmt ( dbp -> v , `PGNO ( p ))); 702 i( s == 0) 705 * dx = i ; 706 * mch = ( s == 0 ? 0 : 1); 708 } } 717 $__ham_gdex_s܋d ( dbc , p , key , key_ty , mch , dxp ) 718 DBC * dbc ; 719 PAGE * p ; 720 cڡ DBT * key ; 721 key_ty , * mch ; 722 db_dx_t * dxp ; 724 DB * dbp ; 725 DBT tmp_dbt ; 726 DB_THREAD_INFO * ; 727 DB_TXN * txn ; 728 HASH * t ; 729 HOFFPAGE * of ; 730 db_dx_t dx ; 731 db_pgno_t off_pgno , koff_pgno ; 732 u_t32_t ba , emn , lim , off_n ; 733 u_t8_t * y ; 734 s , t ; 735 * da ; 737 dbp = dbc ->dbp; 738 txn = dbc ->txn; 739 = dbc -> thad_fo ; 740 `DB_ASSERT ( dbp -> v , p -> ty = P_HASH ); 742 t = dbp -> h_ ; 744 s = dx = 0; 747 `DB_BINARY_SEARCH_FOR ( ba , lim , p , 2) { 748 `DB_BINARY_SEARCH_INCR ( dx , ba , lim , 2); 749 da = `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , p , dx )); 757 y = `P_ENTRY ( dbp , p , dx ); 758 i(* y = H_OFFPAGE ) { 759 of = ( HOFFPAGE *) `P_ENTRY ( dbp , p , dx ); 760 () `__ua_memy (& emn , `HOFFPAGE_TLEN ( of ), 761 ( u_t32_t )); 762 i( key_ty = H_OFFPAGE ) { 772 () `__ua_memy (& koff_pgno , 773 `HOFFPAGE_PGNO ( key -> da ), 774 ( db_pgno_t )); 775 () `__ua_memy (& off_pgno , `HOFFPAGE_PGNO ( of ), 776 ( db_pgno_t )); 777 i( koff_pgno = off_pgno ) 778 s = 0; 780 `memt (& tmp_dbt , 0, (tmp_dbt)); 781 tmp_dbt . size = HOFFPAGE_SIZE ; 782 tmp_dbt . da = of ; 783 i(( t = `__db_coff ( dbp , , txn , key , 784 & tmp_dbt , t -> h_com , & s )) 786 ( t ); 790 () `__ua_memy (& off_pgno , 791 `HOFFPAGE_PGNO ( of ), ( db_pgno_t )); 792 i(( t = `__db_moff ( dbp , , txn , key , 793 off_pgno , emn , t -> h_com , & s )) 795 ( t ); 798 emn = `LEN_HKEYDATA ( dbp , p , dbp-> pgsize , dx ); 799 i( key_ty = H_OFFPAGE ) { 801 tmp_dbt . da = data; 802 tmp_dbt . size = emn ; 803 of = ( HOFFPAGE *) key -> da ; 804 () `__ua_memy (& off_pgno , 805 `HOFFPAGE_PGNO ( of ), ( db_pgno_t )); 806 () `__ua_memy (& off_n , `HOFFPAGE_TLEN ( of ), 807 ( u_t32_t )); 808 i(( t = `__db_moff ( dbp , , txn , & tmp_dbt , 809 off_pgno , off_n , t -> h_com , 810 & s )) != 0) 811 ( t ); 817 s = -res; 818 } i( t -> h_com ! NULL ) { 820 `DB_INIT_DBT ( tmp_dbt , da , emn ); 821 s = t -> `h_com ( dbp , key , & tmp_dbt ); 824 i(( s = `memcmp ( key -> da , data, 825 `m ( key -> size , emn ))) == 0) 826 s = emn > key -> size ? 1 : 827 ( emn < key -> size ? -1 : 0); 830 i( s == 0) { 832 * dxp = dx ; 833 * mch = 0; 835 } i( s > 0) 836 `DB_BINARY_SEARCH_SHIFT_BASE ( dx , ba , lim , 2); 843 i( s > 0) 844 dx += 2; 845 * dxp = dx ; 846 * mch = 1; 848 } } 859 $__ham_vify_s܋d_ge ( dbp , , txn , p ) 860 DB * dbp ; 861 DB_THREAD_INFO * ; 862 DB_TXN * txn ; 863 PAGE * p ; 865 DBT ev_dbt , cu_dbt ; 866 ENV * v ; 867 HASH * t ; 868 db_pgno_t gno ; 869 u_t32_t cu_n , ev_n , ; 870 u_t16_t * dxp ; 871 db_dx_t i , n ; 872 s , t ; 873 * ev , * cu ; 876 n = `NUM_ENT ( p ); 877 `DB_ASSERT ( dbp -> v , n %2 == 0 ); 879 v = dbp ->env; 880 t = dbp -> h_ ; 883 i( t -> h_com ! NULL ) 887 ev = (*) `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , p , 0)); 888 ev_n = `LEN_HKEYDATA ( dbp , p , dbp-> pgsize , 0); 889 i = 2; i < n ; i+=2) { 890 cu = (*) `HKEYDATA_DATA ( `H_PAIRKEY ( dbp , p , i )); 891 cu_n = `LEN_HKEYDATA ( dbp , p , dbp-> pgsize , i ); 893 i( `HPAGE_TYPE ( dbp , p , i -2= H_OFFPAGE && 894 `HPAGE_TYPE ( dbp , p , i = H_OFFPAGE ) { 895 `memt (& ev_dbt , 0, (prev_dbt)); 896 `memt (& cu_dbt , 0, (curr_dbt)); 897 ev_dbt . size = cu_dbt .siz HOFFPAGE_SIZE ; 898 ev_dbt . da = `H_PAIRKEY ( dbp , p , i -2); 899 cu_dbt . da = `H_PAIRKEY ( dbp , p , i ); 900 i(( t = `__db_coff ( dbp , , txn , 901 & ev_dbt , & cu_dbt , t -> h_com , & s )) != 0) 902 ( t ); 903 } i( `HPAGE_TYPE ( dbp , p , i -2= H_OFFPAGE ) { 904 `memt (& cu_dbt , 0, (curr_dbt)); 905 cu_dbt . size = cu_n ; 906 cu_dbt . da = `H_PAIRKEY ( dbp , p , i ); 907 `memy (& , `HOFFPAGE_TLEN ( `H_PAIRKEY ( dbp , p , i -2)), 908 ( u_t32_t )); 909 `memy (& gno , `HOFFPAGE_PGNO ( `H_PAIRKEY ( dbp , p , i -2)), 910 ( db_pgno_t )); 911 i(( t = `__db_moff ( dbp , , txn , 912 & cu_dbt , gno , , t -> h_com , & s )) != 0) 913 ( t ); 914 } i( `HPAGE_TYPE ( dbp , p , i = H_OFFPAGE ) { 915 `memt (& ev_dbt , 0, (prev_dbt)); 916 ev_dbt . size = ev_n ; 917 ev_dbt . da = `H_PAIRKEY ( dbp , p , i ); 918 `memy (& , `HOFFPAGE_TLEN ( `H_PAIRKEY ( dbp , p , i )), 919 ( u_t32_t )); 920 `memy (& gno , `HOFFPAGE_PGNO ( `H_PAIRKEY ( dbp , p , i )), 921 ( db_pgno_t )); 922 i(( t = `__db_moff ( dbp , , txn , 923 & ev_dbt , gno , , t -> h_com , & s )) != 0) 924 ( t ); 926 s = `memcmp ( ev , cu , `m ( cu_n , ev_n )); 928 i( s =0 && cu_n > ev_n ) 929 s = 1; 930 i( s =0 && cu_n < ev_n ) 931 s = -1; 933 i( s >= 0) { 934 `__db_msg ( v , "key1: %s, key2: %s,en: %lu\n", 935 (*) ev , (*) cu , 936 ( u_lg ) `m ( cu_n , ev_n )); 937 `__db_msg ( v , "cuoff%lu\n", ( u_lg ) i ); 938 `__db_msg ( v , "indexes: "); 939 i = 0; i < n ; i++) { 940 dxp = `P_INP ( dbp , p + i ; 941 `__db_msg ( v , "%04X, ", * dxp ); 943 `__db_msg ( v , "\n"); 944 #ifde HAVE_STATISTICS 945 i(( t = `__db_ge ( dbp , p , DB_PR_PAGE )) != 0) 946 ( t ); 948 `DB_ASSERT ( dbp -> v , s < 0); 951 ev = cu ; 952 ev_n = cu_n ; 955 } } 962 $__ham_st_ge_curs ( dbc , ge ) 963 DBC * dbc ; 964 PAGE * ge ; 966 DB * dbp ; 967 DBT ge_dbt ; 968 DB_LSN w_l ; 969 HASH_CURSOR * h ; 970 t ; 972 dbp = dbc ->dbp; 973 h = ( HASH_CURSOR *) dbc -> ; 975 i( `DBC_LOGGING ( dbc )) { 976 ge_dbt . size = dbp -> pgsize ; 977 ge_dbt . da = ge ; 978 i(( t = `__ham_lda_log ( dbp , dbc -> txn , 979 & w_l , 0, SORTPAGE , `PGNO ( ge ), 980 & ge_dbt , & `LSN ( ge ))) != 0) 981 ( t ); 983 `LSN_NOT_LOGGED ( w_l ); 985 `LSN ( ge w_l ; 991 h -> ek_found_dx = NDX_INVALID ; 992 h -> ek_found_ge = PGNO_INVALID ; 994 ( `__ham_st_ge ( dbc , & h -> l_buf , ge )); 995 } } 1009 $__ham_st_ge ( dbc , tmp_buf , ge ) 1010 DBC * dbc ; 1011 PAGE ** tmp_buf ; 1012 PAGE * ge ; 1014 DB * dbp ; 1015 PAGE * mp_g ; 1016 db_dx_t i ; 1017 t ; 1019 dbp = dbc ->dbp; 1020 `DB_ASSERT ( dbp -> v , ge -> ty = P_HASH_UNSORTED ); 1022 t = 0; 1023 i( tmp_buf ! NULL ) 1024 mp_g = * tmp_buf ; 1025 i(( t = `__os_mloc ( dbp -> v , dbp-> pgsize , & mp_g )) != 0) 1026 ( t ); 1028 `memy ( mp_g , ge , dbp -> pgsize ); 1031 `P_INIT ( ge , dbp -> pgsize , 1032 ge -> pgno ,age-> ev_pgno ,age-> xt_pgno , 0, P_HASH ); 1034 i = 0; i < `NUM_ENT ( mp_g ); i += 2) 1035 i(( t = 1036 `__ham_cy ( dbc , mp_g , i , ge , NULL )) != 0) 1039 i( tmp_buf = NULL ) 1040 `__os_ ( dbp -> v , mp_g ); 1042 ( t ); 1043 } } 1049 $__ham_d_ ( dbc , ags ) 1050 DBC * dbc ; 1051 ags ; 1053 DB * dbp ; 1054 DBT da_dbt , key_dbt ; 1055 DB_LSN w_l , * n_l , tmp_l ; 1056 DB_MPOOLFILE * mpf ; 1057 HASH_CURSOR * h ; 1058 PAGE * n_g , * _g , * p , * p_g ; 1059 db_ham_mode ; 1060 db_dx_t ndx ; 1061 db_pgno_t chg_pgno , pgno , tmp_pgno ; 1062 u_t32_t d ; 1063 t , t_t ; 1065 dbp = dbc ->dbp; 1066 mpf = dbp ->mpf; 1067 h = ( HASH_CURSOR *) dbc -> ; 1068 n_g = p_g = _g = NULL ; 1069 ndx = h -> dx ; 1071 i( h -> ge = NULL && 1072 ( t = `__memp_fg ( mpf , & h -> pgno , dbc -> thad_fo , dbc-> txn , 1073 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & h -> ge )) != 0) 1074 ( t ); 1075 p = h -> ge ; 1084 i( `HPAGE_PTYPE ( `H_PAIRKEY ( dbp , p , ndx )= H_OFFPAGE ) { 1085 `memy (& pgno , `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , p , `H_KEYINDEX ( ndx ))), 1086 ( db_pgno_t )); 1087 t = `__db_doff ( dbc , pgno ); 1089 t = 0; 1091 i( t == 0) 1092 `HPAGE_PTYPE ( `H_PAIRDATA ( dbp , p , ndx ))) { 1093 H_OFFPAGE : 1094 `memy (& pgno , 1095 `HOFFPAGE_PGNO ( `P_ENTRY ( dbp , p , `H_DATAINDEX ( ndx ))), 1096 ( db_pgno_t )); 1097 t = `__db_doff ( dbc , pgno ); 1099 H_OFFDUP : 1100 H_DUPLICATE : 1106 `F_CLR ( h , H_ISDUP ); 1113 i( t ) 1114 ( t ); 1117 i( `DBC_LOGGING ( dbc )) { 1118 key_dbt . da = `P_ENTRY ( dbp , p , `H_KEYINDEX ( ndx )); 1119 key_dbt . size = `LEN_HITEM ( dbp , p , dbp-> pgsize , `H_KEYINDEX ( ndx )); 1120 da_dbt . da = `P_ENTRY ( dbp , p , `H_DATAINDEX ( ndx )); 1121 da_dbt . size = 1122 `LEN_HITEM ( dbp , p , dbp-> pgsize , `H_DATAINDEX ( ndx )); 1124 i(( t = `__ham_sd_log ( dbp , 1125 dbc -> txn , & w_l , 0, DELPAIR , `PGNO ( p ), ( u_t32_t ) ndx , 1126 & `LSN ( p ), & key_dbt , & da_dbt )) != 0) 1127 ( t ); 1129 `LSN_NOT_LOGGED ( w_l ); 1132 `LSN ( p w_l ; 1134 `__ham_d ( dbp , p , ndx ); 1141 `F_SET ( h , H_DELETED ); 1142 `F_CLR ( h , H_OK ); 1151 i(! `STD_LOCKING ( dbc )) { 1152 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 1153 ( t ); 1154 -- h -> hdr -> m ; 1158 i( `LF_ISSET ( HAM_DEL_NO_CURSOR )) 1163 i(( t = `__hamc_upde ( dbc , 0, DB_HAM_CURADJ_DEL , 0)) != 0) 1164 ( t ); 1174 i( `LF_ISSET ( HAM_DEL_NO_RECLAIM ) || 1175 `NUM_ENT ( p ) != 0 || 1176 ( `PREV_PGNO ( p = PGNO_INVALID && `NEXT_PGNO (p) == PGNO_INVALID)) 1179 i( `PREV_PGNO ( p = PGNO_INVALID ) { 1184 i(( t = `__memp_fg ( mpf , 1185 & `NEXT_PGNO ( p ), dbc -> thad_fo , dbc-> txn , 1186 DB_MPOOL_DIRTY , & n_g )) != 0) 1187 ( t ); 1189 i( `NEXT_PGNO ( n_g ! PGNO_INVALID && 1190 ( t = `__memp_fg ( mpf , & `NEXT_PGNO ( n_g ), 1191 dbc -> thad_fo , dbc-> txn , 1192 DB_MPOOL_DIRTY , & _g )) != 0) 1193 r ; 1195 i( `DBC_LOGGING ( dbc )) { 1196 key_dbt . da = n_g ; 1197 key_dbt . size = dbp -> pgsize ; 1198 i(( t = `__ham_cyge_log ( dbp , 1199 dbc -> txn , & w_l , 0, `PGNO ( p ), 1200 & `LSN ( p ), `PGNO ( n_g ), &LSN(n_pagep), 1201 `NEXT_PGNO ( n_g ), 1202 _g = NULL ? NULL : & `LSN (nn_pagep), 1203 & key_dbt )) != 0) 1204 r ; 1206 `LSN_NOT_LOGGED ( w_l ); 1209 `LSN ( p w_l ; 1210 `LSN ( n_g w_l ; 1211 i( `NEXT_PGNO ( n_g ! PGNO_INVALID ) 1212 `LSN ( _g w_l ; 1214 i( _g ! NULL ) { 1215 `PREV_PGNO ( _g `PGNO ( p ); 1216 i(( t = `__memp_ut ( mpf , 1217 dbc -> thad_fo , _g , dbc-> iܙy )) != 0) { 1218 _g = NULL ; 1219 r ; 1223 tmp_pgno = `PGNO ( p ); 1224 tmp_l = `LSN ( p ); 1225 `memy ( p , n_g , dbp -> pgsize ); 1226 `PGNO ( p tmp_pgno ; 1227 `LSN ( p tmp_l ; 1228 `PREV_PGNO ( p PGNO_INVALID ; 1234 i(( t = `__hamc_dpg ( dbc , `PGNO ( n_g ), 1235 `PGNO ( p ), 0, DB_HAM_DELFIRSTPG , & d )) != 0) 1236 r ; 1241 h -> dx = 0; 1242 h -> pgno = `PGNO ( p ); 1243 h -> d += order; 1245 i(( t = `__db_ ( dbc , n_g )) != 0) { 1246 n_g = NULL ; 1247 r ; 1250 i(( t = `__memp_fg ( mpf , 1251 & `PREV_PGNO ( p ), dbc -> thad_fo , dbc-> txn , 1252 DB_MPOOL_DIRTY , & p_g )) != 0) 1253 r ; 1255 i( `NEXT_PGNO ( p ! PGNO_INVALID ) { 1256 i(( t = `__memp_fg ( mpf , & `NEXT_PGNO ( p ), 1257 dbc -> thad_fo , dbc-> txn , 1258 DB_MPOOL_DIRTY , & n_g )) != 0) 1259 r ; 1260 n_l = & `LSN ( n_g ); 1262 n_g = NULL ; 1263 n_l = NULL ; 1266 `NEXT_PGNO ( p_g NEXT_PGNO( p ); 1267 i( n_g ! NULL ) 1268 `PREV_PGNO ( n_g `PGNO ( p_g ); 1270 i( `DBC_LOGGING ( dbc )) { 1271 i(( t = `__ham_wge_log ( dbp , dbc -> txn , 1272 & w_l , 0, DELOVFL , `PREV_PGNO ( p ), & `LSN ( p_g ), 1273 `PGNO ( p ), & `LSN ), `NEXT_PGNO ), n_l )) != 0) 1274 r ; 1276 `LSN_NOT_LOGGED ( w_l ); 1279 `LSN ( p_g w_l ; 1280 i( n_g ) 1281 `LSN ( n_g w_l ; 1282 `LSN ( p w_l ; 1284 i( `NEXT_PGNO ( p = PGNO_INVALID ) { 1293 h -> pgno = `PGNO ( p_g ); 1294 h -> dx = `NUM_ENT ( p_g ); 1295 = DB_HAM_DELLASTPG ; 1301 h -> pgno = `NEXT_PGNO ( p ); 1302 h -> dx = 0; 1303 = DB_HAM_DELMIDPG ; 1311 h -> ge = NULL ; 1312 chg_pgno = `PGNO ( p ); 1313 t = `__db_ ( dbc , p ); 1314 i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 1315 p_g , dbc -> iܙy )!0 && t == 0) 1316 t = t_t ; 1317 i( n_g ! NULL && ( t_t = `__memp_ut ( mpf , 1318 dbc -> thad_fo , n_g , dbc-> iܙy )!0 && t == 0) 1319 t = t_t ; 1320 i( t != 0) 1321 ( t ); 1322 i(( t = `__hamc_dpg ( dbc , 1323 chg_pgno , h -> pgno , h-> dx , , & d )) != 0) 1324 ( t ); 1325 h -> d += order; 1327 ( t ); 1329 r : 1330 i( n_g ! NULL ) 1331 () `__memp_ut ( mpf , 1332 dbc -> thad_fo , n_g , dbc-> iܙy ); 1333 i( _g ! NULL ) 1334 () `__memp_ut ( mpf , 1335 dbc -> thad_fo , _g , dbc-> iܙy ); 1336 i( p_g ! NULL ) 1337 () `__memp_ut ( mpf , 1338 dbc -> thad_fo , p_g , dbc-> iܙy ); 1339 ( t ); 1340 } } 1350 $__ham_ ( dbc , dbt , make_dup ) 1351 DBC * dbc ; 1352 DBT * dbt ; 1353 u_t32_t make_dup ; 1355 DB * dbp ; 1356 DBC ** ay , * dbc_n ; 1357 DBT d_dbt , tda , tmp , * w_dbt ; 1358 DB_LSN w_l ; 1359 ENV * v ; 1360 HASH_CURSOR * h , * ; 1361 db_dx_t ig_dx ; 1362 db_pgno_t ig_pgno ; 1363 u_t32_t chge ; 1364 u_t32_t dup_ag , n , memsize , wn ; 1365 beyd_e , is_big , is_us , t , ty , i , found , t_t ; 1366 u_t8_t * beg , * de , * d , * hk , * c ; 1367 * memp ; 1385 dbp = dbc ->dbp; 1386 v = dbp ->env; 1387 h = ( HASH_CURSOR *) dbc -> ; 1388 found = 0; 1389 dbc_n = memp = NULL ; 1390 ay = NULL ; 1401 i( dbt -> size > dbt-> dn ) { 1402 chge = dbt -> size - dbt-> dn ; 1403 is_us = 1; 1405 chge = dbt -> dn - dbt-> size ; 1406 is_us = 0; 1409 hk = `H_PAIRDATA ( dbp , h -> ge , h-> dx ); 1410 is_big = `HPAGE_PTYPE ( hk = H_OFFPAGE ; 1412 i( is_big ) 1413 `memy (& n , `HOFFPAGE_TLEN ( hk ), ( u_t32_t )); 1415 n = `LEN_HKEYDATA ( dbp , h -> ge , 1416 dbp -> pgsize , `H_DATAINDEX ( h -> dx )); 1418 beyd_e = dbt -> doff + dbt-> dn > n ; 1419 i( beyd_e ) { 1427 i( is_us ) 1428 chge + dbt -> doff + dbt-> dn - n ; 1429 i( dbt -> doff + dbt-> dn - n > chge ) { 1431 is_us = 1; 1432 chge = ( dbt -> doff + dbt-> dn - n ) - change; 1434 chge -( dbt -> doff + dbt-> dn - n ); 1437 wn = ( is_us ? n + chge :en - change); 1438 i( `ISBIG ( h , wn ) || 1439 ( is_us && chge > `P_FREESPACE ( dbp , h -> ge )) || 1440 beyd_e || is_big ) { 1446 i( is_us && dbc -> txn = NULL && 1447 dbp -> mpf -> m -> maxpgno != 0 && 1448 dbp -> mpf -> m -> maxpgno =dbp->mpf->m-> ϡ_pgno ) 1449 ( `__db_a_r ( dbp )); 1461 `memt (& tmp , 0, (tmp)); 1462 i(( t = `__db_t ( dbp , dbc -> thad_fo , dbc-> txn , 1463 h -> ge , `H_KEYINDEX (h-> dx ), & tmp , 1464 & dbc -> my_rkey . da , &dbc->my_rkey. un )) != 0) 1465 ( t ); 1472 ig_pgno = `PGNO ( h -> ge ); 1473 ig_dx = h -> dx ; 1474 i(( t = `__ham_g_i ( dbp , 1475 ig_pgno , ig_dx , & ay )) != 0) 1476 r ; 1479 dup_ag = `F_ISSET ( h , H_ISDUP ); 1480 i( dbt -> doff =0 && dbt-> dn = n ) { 1481 ty = ( dup_ag ? H_DUPLICATE : H_KEYDATA ); 1482 w_dbt = dbt ; 1484 ty = `HPAGE_PTYPE ( hk ! H_OFFPAGE ? 1485 `HPAGE_PTYPE ( hk : H_KEYDATA ; 1486 `memt (& tda , 0, (tdata)); 1487 memsize = 0; 1488 i(( t = `__db_t ( dbp , dbc -> thad_fo , 1489 dbc -> txn , h -> ge , `H_DATAINDEX (h-> dx ), 1490 & tda , & memp , & memsize )) != 0) 1491 r ; 1494 i( is_us ) { 1495 i(( t = `__os_loc ( v , 1496 tda . size + chge , &tda. da )) != 0) 1497 ( t ); 1498 memp = tda . da ; 1499 memsize = tda . size + chge ; 1500 `memt (( u_t8_t *) tda . da +da. size , 1501 0, chge ); 1503 d = ( u_t8_t *) tda . da +da. size ; 1505 c = ( u_t8_t *) tda . da + dbt -> doff + dbt-> dn ; 1506 i( c < d && tda . size > dbt -> doff + dbt-> dn ) { 1507 n = tda . size - ( dbt -> doff + dbt-> dn ); 1508 i( is_us ) 1509 de = c + chge ; 1511 de = c - chge ; 1512 `memmove ( de , c , n ); 1514 `memy (( u_t8_t *) tda . da + dbt -> doff , 1515 dbt -> da , dbt-> size ); 1516 i( is_us ) 1517 tda . size + chge ; 1519 tda . size - chge ; 1520 w_dbt = & tda ; 1522 i(( t = `__ham_d_ ( dbc , HAM_DEL_NO_CURSOR )) != 0) 1523 r ; 1530 i(( t = `__dbc_dup ( dbc , & dbc_n , DB_POSITION )) != 0) 1531 r ; 1532 i(( t = `__ham_add_ ( dbc , & tmp , w_dbt , ty )) != 0) 1533 r ; 1534 `F_SET ( h , dup_ag ); 1542 i((( HASH_CURSOR *) dbc_n -> )-> pgno ! h ->pgno || 1543 (( HASH_CURSOR *) dbc_n -> )-> dx ! h ->indx) { 1551 i( ay ! NULL ) { 1552 i = 0; ay [i] ! NULL ; i++) { 1553 = ( HASH_CURSOR *) ay [ i ]-> ; 1554 -> pgno = h ->pgno; 1555 -> dx = h ->indx; 1556 `F_CLR ( , H_DELETED ); 1557 found = 1; 1564 i( found && `DBC_LOGGING ( dbc ) && 1565 `IS_SUBTRANSACTION ( dbc -> txn )) { 1566 i(( t = 1567 `__ham_chgpg_log ( dbp , 1568 dbc -> txn , & w_l , 0, 1569 DB_HAM_CHGPG , ig_pgno , h -> pgno , 1570 ig_dx , h -> dx )) != 0) 1571 r ; 1579 t = `__hamc_upde ( dbc_n , 0, DB_HAM_CURADJ_DEL , 0); 1582 r : i( dbc_n ! NULL && ( t_t = `__dbc_o (dbc_n)) != 0 && 1583 t == 0) 1584 t = t_t ; 1585 i( ay ! NULL ) 1586 `__os_ ( v , ay ); 1587 i( memp ! NULL ) 1588 `__os_ ( v , memp ); 1589 ( t ); 1596 beg = `HKEYDATA_DATA ( `H_PAIRDATA ( dbp , h -> ge , h-> dx )); 1597 beg + dbt -> doff ; 1604 i( `DBC_LOGGING ( dbc )) { 1605 d_dbt . da = beg ; 1606 d_dbt . size = dbt -> dn ; 1607 i(( t = `__ham_a_log ( dbp , 1608 dbc -> txn , & w_l , 0, `PGNO ( h -> ge ), 1609 ( u_t32_t ) `H_DATAINDEX ( h -> dx ), & `LSN (h-> ge ), 1610 ( t32_t ) dbt -> doff , & d_dbt , dbt, make_dup )) != 0) 1611 ( t ); 1613 `LSN_NOT_LOGGED ( w_l ); 1615 `LSN ( h -> ge w_l ; 1617 `__ham_ڷge_a ( dbp , h -> ge , ( u_t32_t ) `H_DATAINDEX (h-> dx ), 1618 ( t32_t ) dbt -> doff , chge , is_us , dbt); 1621 } } 1639 $__ham_ڷge_a ( dbp , g , ndx , off , chge , is_us , dbt ) 1640 DB * dbp ; 1641 PAGE * g ; 1642 u_t32_t ndx ; 1643 t32_t off ; 1644 u_t32_t chge ; 1645 is_us ; 1646 DBT * dbt ; 1648 db_dx_t i , * p ; 1649 t32_t n ; 1650 size_t pgsize ; 1651 u_t8_t * c , * de ; 1652 zo_me ; 1654 pgsize = dbp ->pgsize; 1655 p = `P_INP ( dbp , g ); 1656 i( chge != 0) { 1657 zo_me = 0; 1658 c = ( u_t8_t *)( g + `HOFFSET (pagep); 1659 i( off < 0) 1660 n = p [ ndx ] - `HOFFSET ( g ); 1661 i(( u_t32_t ) off >= 1662 `LEN_HKEYDATA ( dbp , g , pgsize , ndx )) { 1663 n = ( t32_t )( `HKEYDATA_DATA ( `P_ENTRY ( dbp , g , ndx )) 1664 + `LEN_HKEYDATA ( dbp , g , pgsize , ndx - c ); 1665 zo_me = 1; 1667 n = ( t32_t )( 1668 ( `HKEYDATA_DATA ( `P_ENTRY ( dbp , g , ndx )+ off ) - 1669 c ); 1670 i( is_us ) 1671 de = c - chge ; 1673 de = c + chge ; 1674 `memmove ( de , c , ( size_t ) n ); 1675 i( zo_me ) 1676 `memt ( de + n , 0, chge ); 1679 i = ndx ; i < `NUM_ENT ( g ); i++) { 1680 i( is_us ) 1681 p [ i ] - chge ; 1683 p [ i ] + chge ; 1685 i( is_us ) 1686 `HOFFSET ( g - chge ; 1688 `HOFFSET ( g + chge ; 1690 i( off >= 0) 1691 `memy ( `HKEYDATA_DATA ( `P_ENTRY ( dbp , g , ndx )+ off , 1692 dbt -> da , dbt-> size ); 1694 `memy ( `P_ENTRY ( dbp , g , ndx ), dbt -> da , dbt-> size ); 1695 } } 1701 $__ham_l_ge ( dbc , obuck , nbuck ) 1702 DBC * dbc ; 1703 u_t32_t obuck , nbuck ; 1705 DB * dbp ; 1706 DBC ** ay , * tmp_dbc ; 1707 DBT key , ge_dbt ; 1708 DB_LOCK block ; 1709 DB_LSN w_l ; 1710 DB_MPOOLFILE * mpf ; 1711 ENV * v ; 1712 HASH_CURSOR * h , * ; 1713 PAGE ** , * d_g , * mp_g , * w_g ; 1714 db_dx_t n , de_dx ; 1715 db_pgno_t buck_pgno , gno , xt_pgno ; 1716 u_t32_t big_n , n ; 1717 found , i , t , t_t ; 1718 * big_buf ; 1720 dbp = dbc ->dbp; 1721 ay = NULL ; 1722 v = dbp ->env; 1723 mpf = dbp ->mpf; 1724 h = ( HASH_CURSOR *) dbc -> ; 1725 mp_g = d_g = w_g = NULL ; 1726 gno = PGNO_INVALID ; 1727 `LOCK_INIT ( block ); 1729 buck_pgno = `BUCKET_TO_PAGE ( h , obuck ); 1730 i(( t = `__db_lg ( dbc , 1731 0, buck_pgno , DB_LOCK_WRITE , 0, & block )) != 0) 1732 r ; 1733 i(( t = `__memp_fg ( mpf , & buck_pgno , dbc -> thad_fo , dbc-> txn , 1734 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & d_g )) != 0) 1735 r ; 1738 i( d_g -> ty = P_HASH_UNSORTED ) 1739 i(( t = `__ham_st_ge_curs ( dbc , d_g )) != 0) 1740 ( t ); 1743 gno = `BUCKET_TO_PAGE ( h , nbuck ); 1744 i(( t = `__memp_fg ( mpf , & gno , dbc -> thad_fo , dbc-> txn , 1745 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & w_g )) != 0) 1746 r ; 1747 `P_INIT ( w_g , 1748 dbp -> pgsize , gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1750 mp_g = h -> l_buf ; 1751 `memy ( mp_g , d_g , dbp -> pgsize ); 1753 i( `DBC_LOGGING ( dbc )) { 1754 ge_dbt . size = dbp -> pgsize ; 1755 ge_dbt . da = d_g ; 1756 i(( t = `__ham_lda_log ( dbp , 1757 dbc -> txn , & w_l , 0, SPLITOLD , 1758 `PGNO ( d_g ), & ge_dbt , & `LSN (old_pagep))) != 0) 1759 r ; 1761 `LSN_NOT_LOGGED ( w_l ); 1763 `LSN ( d_g w_l ; 1765 `P_INIT ( d_g , dbp -> pgsize , `PGNO (d_g), PGNO_INVALID , 1766 PGNO_INVALID , 0, P_HASH ); 1768 big_n = 0; 1769 big_buf = NULL ; 1770 `memt (& key , 0, (key)); 1771 mp_g ! NULL ) { 1772 i(( t = `__ham_g_i ( dbp , 1773 `PGNO ( mp_g ), NDX_INVALID , & ay )) != 0) 1774 r ; 1776 n = 0; < ( db_dx_t ) `NUM_ENT ( mp_g ); += 2) { 1777 i(( t = `__db_t ( dbp , dbc -> thad_fo , 1778 dbc -> txn , mp_g , `H_KEYINDEX ( n ), 1779 & key , & big_buf , & big_n )) != 0) 1780 r ; 1782 i( `__ham__hash ( dbc , key . da , key. size = obuck ) 1783 = & d_g ; 1785 = & w_g ; 1791 n = `LEN_HITEM ( dbp , mp_g , dbp-> pgsize , 1792 `H_DATAINDEX ( n )) + 1793 `LEN_HITEM ( dbp , mp_g , dbp-> pgsize , 1794 `H_KEYINDEX ( n )) + 1795 2 * ( db_dx_t ); 1797 i( `P_FREESPACE ( dbp , * < n ) { 1798 i( `DBC_LOGGING ( dbc )) { 1799 ge_dbt . size = dbp -> pgsize ; 1800 ge_dbt . da = * ; 1801 i(( t = `__ham_lda_log ( dbp , 1802 dbc -> txn , & w_l , 0, 1803 SPLITNEW , `PGNO (* ), & ge_dbt , 1804 & `LSN (* ))) != 0) 1805 r ; 1807 `LSN_NOT_LOGGED ( w_l ); 1808 `LSN (* w_l ; 1809 i(( t = 1810 `__ham_add_ovge ( dbc , * , 1,p)) != 0) 1811 r ; 1814 de_dx = NDX_INVALID ; 1815 i(( t = `__ham_cy ( dbc , mp_g , 1816 `H_KEYINDEX ( n ), * , & de_dx )) != 0) 1817 r ; 1840 i( `PGNO ( mp_g ! buck_pgno ) { 1841 i(( t = `__db_curs_t ( dbp , 1842 dbc -> thad_fo , dbc-> txn , dbp -> ty , 1843 PGNO_INVALID , 0, DB_LOCK_INVALIDID , 1844 & tmp_dbc )) != 0) 1845 r ; 1846 h = ( HASH_CURSOR *) tmp_dbc -> ; 1847 h -> pgno = `PGNO (* ); 1848 h -> dx = de_dx ; 1849 h -> dup_off = 0; 1850 h -> d = 0; 1851 i(( t = `__hamc_upde ( 1852 tmp_dbc , n , DB_HAM_CURADJ_ADD , 0)) != 0) 1853 r ; 1854 i(( t = `__dbc_o ( tmp_dbc )) != 0) 1855 r ; 1858 i( ay ! NULL ) { 1859 found = 0; 1860 i = 0; ay [i] ! NULL ; i++) { 1861 = 1862 ( HASH_CURSOR *) ay [ i ]-> ; 1863 i( -> pgno = `PGNO ( mp_g ) && 1864 -> dx = n ) { 1865 -> pgno = `PGNO (* ); 1866 -> dx = de_dx ; 1867 found = 1; 1875 i( found && `DBC_LOGGING ( dbc ) && 1876 `IS_SUBTRANSACTION ( dbc -> txn )) { 1877 i(( t = 1878 `__ham_chgpg_log ( dbp , 1879 dbc -> txn , & w_l , 0, 1880 DB_HAM_SPLIT , `PGNO ( mp_g ), 1881 `PGNO (* ), n , de_dx )) != 0) 1882 r ; 1886 xt_pgno = `NEXT_PGNO ( mp_g ); 1889 i( `PGNO ( mp_g ! buck_pgno && ( t = 1890 `__db_ ( dbc , mp_g )) != 0) { 1891 mp_g = NULL ; 1892 r ; 1895 i( xt_pgno = PGNO_INVALID ) 1896 mp_g = NULL ; 1897 i(( t = `__memp_fg ( mpf , 1898 & xt_pgno , dbc -> thad_fo , dbc-> txn , 1899 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & mp_g )) != 0) 1900 r ; 1902 i( mp_g ! NULL ) { 1903 i( `DBC_LOGGING ( dbc )) { 1904 ge_dbt . size = dbp -> pgsize ; 1905 ge_dbt . da = mp_g ; 1906 i(( t = `__ham_lda_log ( dbp , 1907 dbc -> txn , & w_l , 0, 1908 SPLITOLD , `PGNO ( mp_g ), 1909 & ge_dbt , & `LSN ( mp_g ))) != 0) 1910 r ; 1912 `LSN_NOT_LOGGED ( w_l ); 1913 `LSN ( mp_g w_l ; 1916 i( ay ! NULL ) 1917 `__os_ ( v , ay ); 1918 ay = NULL ; 1920 i( big_buf ! NULL ) 1921 `__os_ ( v , big_buf ); 1928 i( mp_g ! NULL && `PGNO emp_g! buck_pgno && 1929 ( t = `__db_ ( dbc , mp_g )) != 0) { 1930 mp_g = NULL ; 1931 r ; 1937 i( `DBC_LOGGING ( dbc )) { 1938 ge_dbt . size = dbp -> pgsize ; 1939 ge_dbt . da = d_g ; 1940 i(( t = `__ham_lda_log ( dbp , dbc -> txn , 1941 & w_l , 0, SPLITNEW , `PGNO ( d_g ), & ge_dbt , 1942 & `LSN ( d_g ))) != 0) 1943 r ; 1944 `LSN ( d_g w_l ; 1946 ge_dbt . da = w_g ; 1947 i(( t = `__ham_lda_log ( dbp , dbc -> txn , & w_l , 0, 1948 SPLITNEW , `PGNO ( w_g ), & ge_dbt , 1949 & `LSN ( w_g ))) != 0) 1950 r ; 1951 `LSN ( w_g w_l ; 1953 `LSN_NOT_LOGGED ( `LSN ( d_g )); 1954 `LSN_NOT_LOGGED ( `LSN ( w_g )); 1957 t = `__memp_ut ( mpf , dbc -> thad_fo , d_g , dbc-> iܙy ); 1958 i(( t_t = `__memp_ut ( mpf , 1959 dbc -> thad_fo , w_g , dbc-> iܙy )!0 && t == 0) 1960 t = t_t ; 1963 r : i( d_g ! NULL ) 1964 () `__memp_ut ( mpf , 1965 dbc -> thad_fo , d_g , dbc-> iܙy ); 1966 i( w_g ! NULL ) { 1967 `P_INIT ( w_g , dbp -> pgsize , 1968 gno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1969 () `__memp_ut ( mpf , 1970 dbc -> thad_fo , w_g , dbc-> iܙy ); 1972 i( mp_g ! NULL && `PGNO emp_g! buck_pgno ) 1973 () `__memp_ut ( mpf , 1974 dbc -> thad_fo , mp_g , dbc-> iܙy ); 1976 i(( t_t = `__TLPUT ( dbc , block )!0 && t == 0) 1977 t = t_t ; 1978 i( ay ! NULL ) 1979 `__os_ ( v , ay ); 1980 ( t ); 1981 } } 1993 $__ham_add_ ( dbc , key , v , ty ) 1994 DBC * dbc ; 1995 cڡ DBT * key , * v ; 1996 ty ; 1998 cڡ DBT * pkey , * pda ; 1999 DB * dbp ; 2000 DBT key_dbt , da_dbt ; 2001 DB_LSN w_l ; 2002 DB_MPOOLFILE * mpf ; 2003 HASH_CURSOR * h ; 2004 HOFFPAGE doff , koff ; 2005 db_pgno_t xt_pgno , pgno ; 2006 u_t32_t da_size , key_size ; 2007 u_t32_t ges , gea , size , y ; 2008 do_exnd , da_ty , is_keybig , is_dabig , key_ty , mch , t ; 2010 dbp = dbc ->dbp; 2011 mpf = dbp ->mpf; 2012 h = ( HASH_CURSOR *) dbc -> ; 2013 do_exnd = 0; 2015 pgno = h -> ek_found_ge ! PGNO_INVALID ? 2016 h -> ek_found_ge : h-> pgno ; 2017 i( h -> ge = NULL && ( t = `__memp_fg ( mpf , & pgno , 2018 dbc -> thad_fo , dbc-> txn , DB_MPOOL_CREATE , & h -> ge )) != 0) 2019 ( t ); 2021 key_size = `HKEYDATA_PSIZE ( key -> size ); 2022 da_size = `HKEYDATA_PSIZE ( v -> size ); 2023 is_keybig = `ISBIG ( h , key -> size ); 2024 is_dabig = `ISBIG ( h , v -> size ); 2025 i( is_keybig ) 2026 key_size = HOFFPAGE_PSIZE ; 2027 i( is_dabig ) 2028 da_size = HOFFPAGE_PSIZE ; 2030 size = key_size + da_size ; 2033 `H_NUMPAIRS ( h -> ge && `NEXT_PGNO (h->ge! PGNO_INVALID ) { 2039 i( `P_FREESPACE ( dbp , h -> ge > size ) 2041 xt_pgno = `NEXT_PGNO ( h -> ge ); 2042 i(( t = `__ham_xt_age ( dbc , xt_pgno )) != 0) 2043 ( t ); 2049 i( `P_FREESPACE ( dbp , h -> ge < size ) { 2050 do_exnd = 1; 2051 i(( t = `__memp_dty ( mpf , & h -> ge , 2052 dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 2053 ( t ); 2054 i(( t = `__ham_add_ovge ( dbc , 2055 ( PAGE *) h -> ge , 1, (PAGE **)&hcp->page)) != 0) 2056 ( t ); 2057 h -> pgno = `PGNO (h-> ge ); 2064 i( dbc -> txn = NULL && 2065 dbp -> mpf -> m -> maxpgno !0 && ( is_keybig || is_dabig )) { 2066 gea = `P_MAXSPACE ( dbp , dbp-> pgsize ); 2067 ges = 0; 2068 i( is_dabig ) 2069 ges = (( da_size - 1/ gea ) + 1; 2070 i( is_keybig ) { 2071 ges +(( key -> size - 1/ gea ) + 1; 2072 i( ges > 2073 ( dbp -> mpf -> m -> maxpgno - dbp->mpf->m-> ϡ_pgno )) 2074 ( `__db_a_r ( dbp )); 2078 i(( t = `__memp_dty ( mpf , 2079 & h -> ge , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 2080 ( t ); 2085 h -> dx = h-> ek_found_dx ; 2086 `F_CLR ( h , H_DELETED ); 2087 i( is_keybig ) { 2088 koff . ty = H_OFFPAGE ; 2089 `UMRW_SET ( koff . unud [0]); 2090 `UMRW_SET ( koff . unud [1]); 2091 `UMRW_SET ( koff . unud [2]); 2092 i(( t = `__db_poff ( dbc , key , & koff . pgno )) != 0) 2093 ( t ); 2094 koff . = key -> size ; 2095 key_dbt . da = & koff ; 2096 key_dbt . size = ( koff ); 2097 pkey = & key_dbt ; 2098 key_ty = H_OFFPAGE ; 2100 pkey = key ; 2101 key_ty = H_KEYDATA ; 2104 i( is_dabig ) { 2105 doff . ty = H_OFFPAGE ; 2106 `UMRW_SET ( doff . unud [0]); 2107 `UMRW_SET ( doff . unud [1]); 2108 `UMRW_SET ( doff . unud [2]); 2109 i(( t = `__db_poff ( dbc , v , & doff . pgno )) != 0) 2110 ( t ); 2111 doff . = v -> size ; 2112 da_dbt . da = & doff ; 2113 da_dbt . size = ( doff ); 2114 pda = & da_dbt ; 2115 da_ty = H_OFFPAGE ; 2117 pda = v ; 2118 da_ty = ty ; 2122 i((( PAGE *) h -> ge )-> ty = P_HASH_UNSORTED ) 2123 i(( t = `__ham_st_ge_curs ( dbc , h -> ge )) != 0) 2124 ( t ); 2133 i( `PGNO ( h -> ge !h-> ek_found_ge ) { 2134 i(( t = `__ham_gdex ( dbc , h -> ge , pkey , 2135 key_ty , & mch , & h -> ek_found_dx )) != 0) 2136 ( t ); 2137 h -> ek_found_ge = `PGNO (h-> ge ); 2139 `DB_ASSERT ( dbp -> v , h -> ek_found_dx < `NUM_ENT (h-> ge )); 2142 i( `DBC_LOGGING ( dbc )) { 2143 y = PUTPAIR ; 2144 i( is_dabig ) 2145 y | PAIR_DATAMASK ; 2146 i( is_keybig ) 2147 y | PAIR_KEYMASK ; 2148 i( ty = H_DUPLICATE ) 2149 y | PAIR_DUPMASK ; 2151 i(( t = `__ham_sd_log ( dbp , dbc -> txn , & w_l , 0, 2152 y , `PGNO ( h -> ge ), ( u_t32_t )h-> ek_found_dx , 2153 & `LSN ( h -> ge ), pkey , pda )) != 0) 2154 ( t ); 2156 `LSN_NOT_LOGGED ( w_l ); 2159 `LSN ( h -> ge w_l ; 2161 i(( t = `__ham_ ( dbc , h -> ge , 2162 & h -> ek_found_dx , pkey , pda , key_ty , da_ty )) != 0) 2163 ( t ); 2169 i(( t = `__hamc_upde ( dbc , size , DB_HAM_CURADJ_ADD , 0)) != 0) 2170 ( t ); 2179 h -> pgno = `PGNO (h-> ge ); 2188 h -> dx = h-> ek_found_dx ; 2194 i(! `STD_LOCKING ( dbc )) { 2195 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 2196 ( t ); 2197 h -> hdr -> m ++; 2200 i( do_exnd || ( h -> hdr -> f != 0 && 2201 ( u_t32_t ) `H_NUMPAIRS ( h -> ge > h-> hdr -> f )) 2202 `F_SET ( h , H_EXPAND ); 2204 } } 2221 $__ham_cy ( dbc , c_ge , c_ndx , de_ge , de_dx ) 2222 DBC * dbc ; 2223 PAGE * c_ge ; 2224 u_t32_t c_ndx ; 2225 PAGE * de_ge ; 2226 db_dx_t * de_dx ; 2228 DB * dbp ; 2229 DBT tkey , tda ; 2230 db_dx_t kdx , ddx ; 2231 kty , dty , t ; 2233 dbp = dbc ->dbp; 2234 t = 0; 2235 `memt (& tkey , 0, (tkey)); 2236 `memt (& tda , 0, (tdata)); 2238 kty = `HPAGE_TYPE ( dbp , c_ge , `H_KEYINDEX ( c_ndx )); 2239 dty = `HPAGE_TYPE ( dbp , c_ge , `H_DATAINDEX ( c_ndx )); 2240 kdx = `H_KEYINDEX ( c_ndx ); 2241 ddx = `H_DATAINDEX ( c_ndx ); 2242 i( kty = H_OFFPAGE ) { 2243 tkey . da = `P_ENTRY ( dbp , c_ge , kdx ); 2244 tkey . size = `LEN_HITEM ( dbp , c_ge , dbp-> pgsize , kdx ); 2246 tkey . da = `HKEYDATA_DATA ( `P_ENTRY ( dbp , c_ge , kdx )); 2247 tkey . size = `LEN_HKEYDATA ( dbp , c_ge , dbp-> pgsize , kdx ); 2249 i( dty = H_OFFPAGE ) { 2250 tda . da = `P_ENTRY ( dbp , c_ge , ddx ); 2251 tda . size = `LEN_HITEM ( dbp , c_ge , dbp-> pgsize , ddx ); 2253 tda . da = `HKEYDATA_DATA ( `P_ENTRY ( dbp , c_ge , ddx )); 2254 tda . size = `LEN_HKEYDATA ( dbp , c_ge , dbp-> pgsize , ddx ); 2256 i(( t = `__ham_ ( dbc , de_ge , de_dx , 2257 & tkey , & tda , kty , dty )) != 0) 2258 ( t ); 2260 ( t ); 2261 } } 2272 $__ham_add_ovge ( dbc , g , a , ) 2273 DBC * dbc ; 2274 PAGE * g ; 2275 a ; 2276 PAGE ** ; 2278 DB * dbp ; 2279 DB_LSN w_l ; 2280 DB_MPOOLFILE * mpf ; 2281 PAGE * w_g ; 2282 t ; 2284 dbp = dbc ->dbp; 2285 mpf = dbp ->mpf; 2287 `DB_ASSERT ( dbp -> v , `IS_DIRTY ( g )); 2289 i(( t = `__db_w ( dbc , P_HASH , & w_g )) != 0) 2290 ( t ); 2292 i( `DBC_LOGGING ( dbc )) { 2293 i(( t = `__ham_wge_log ( dbp , dbc -> txn , & w_l , 0, 2294 PUTOVFL , `PGNO ( g ), & `LSN ag), PGNO( w_g ), 2295 & `LSN ( w_g ), PGNO_INVALID , NULL )) != 0) { 2296 () `__memp_ut ( mpf , 2297 dbc -> thad_fo , g , dbc-> iܙy ); 2298 ( t ); 2301 `LSN_NOT_LOGGED ( w_l ); 2304 `LSN ( g LSN( w_g w_l ; 2305 `NEXT_PGNO ( g `PGNO ( w_g ); 2307 `PREV_PGNO ( w_g `PGNO ( g ); 2309 i( a ) 2310 t = `__memp_ut ( mpf , dbc -> thad_fo , g , dbc-> iܙy ); 2312 * = w_g ; 2313 ( t ); 2314 } } 2320 $__ham_g_age ( dbc , mode ) 2321 DBC * dbc ; 2322 db_lockmode_t mode ; 2324 DB * dbp ; 2325 DB_LOCK tmp_lock ; 2326 DB_MPOOLFILE * mpf ; 2327 HASH_CURSOR * h ; 2328 t ; 2330 dbp = dbc ->dbp; 2331 mpf = dbp ->mpf; 2332 h = ( HASH_CURSOR *) dbc -> ; 2333 t = 0; 2346 `LOCK_INIT ( tmp_lock ); 2347 i( `STD_LOCKING ( dbc )) { 2348 i( h -> lbuck !h-> buck ) { 2349 i(( t = `__TLPUT ( dbc , h -> lock )) != 0) 2350 ( t ); 2351 `LOCK_INIT ( h -> lock ); 2358 i(( `LOCK_ISSET ( h -> lock ) && 2359 (( h -> lock_mode = DB_LOCK_READ || 2360 `F_ISSET ( dbp , DB_AM_READ_UNCOMMITTED )) && 2361 mode = DB_LOCK_WRITE ))) { 2363 tmp_lock = h -> lock ; 2364 `LOCK_INIT ( h -> lock ); 2368 i(! `LOCK_ISSET ( h -> lock )) 2370 i(( t = `__ham_lock_buck ( dbc , mode )) != 0) 2371 ( t ); 2373 i( t == 0) { 2374 h -> lock_mode = mode ; 2375 h -> lbuck = h-> buck ; 2377 i(( t = `__ENV_LPUT ( dbp -> v , tmp_lock )) != 0) 2378 ( t ); 2379 } i( `LOCK_ISSET ( tmp_lock )) 2380 h -> lock = tmp_lock ; 2383 i( t =0 && h -> ge = NULL ) { 2384 i( h -> pgno = PGNO_INVALID ) 2385 h -> pgno = `BUCKET_TO_PAGE (h, h-> buck ); 2386 i(( t = `__memp_fg ( mpf , 2387 & h -> pgno , dbc -> thad_fo , dbc-> txn , 2388 DB_MPOOL_CREATE , & h -> ge )) != 0) 2389 ( t ); 2392 } } 2402 $__ham_xt_age ( dbc , pgno ) 2403 DBC * dbc ; 2404 db_pgno_t pgno ; 2406 DB * dbp ; 2407 DB_MPOOLFILE * mpf ; 2408 HASH_CURSOR * h ; 2409 PAGE * p ; 2410 t ; 2412 dbp = dbc ->dbp; 2413 mpf = dbp ->mpf; 2414 h = ( HASH_CURSOR *) dbc -> ; 2416 i( h -> ge ! NULL && ( t = `__memp_ut ( mpf , 2417 dbc -> thad_fo , h -> ge , dbc-> iܙy )) != 0) 2418 ( t ); 2419 h -> ge = NULL ; 2421 i(( t = `__memp_fg ( mpf , & pgno , dbc -> thad_fo , dbc-> txn , 2422 DB_MPOOL_CREATE , & p )) != 0) 2423 ( t ); 2425 h -> ge = p ; 2426 h -> pgno =gno; 2427 h -> dx = 0; 2430 } } 2439 $__ham_lock_buck ( dbc , mode ) 2440 DBC * dbc ; 2441 db_lockmode_t mode ; 2443 HASH_CURSOR * h ; 2444 db_pgno_t pgno ; 2445 gma , t ; 2447 h = ( HASH_CURSOR *) dbc -> ; 2448 gma = h -> hdr = NULL ? 1 : 0; 2449 i( gma ) 2450 i(( t = `__ham_g_ma ( dbc )) != 0) 2451 ( t ); 2452 pgno = `BUCKET_TO_PAGE ( h , h-> buck ); 2453 i( gma ) 2454 i(( t = `__ham_a_ma ( dbc )) != 0) 2455 ( t ); 2457 t = `__db_lg ( dbc , 0, pgno , mode , 0, & h -> lock ); 2459 h -> lock_mode = mode ; 2460 ( t ); 2461 } } 2475 $__ham_d ( dbp , p , dx ) 2476 DB * dbp ; 2477 PAGE * p ; 2478 u_t32_t dx ; 2480 db_dx_t d , n , * p ; 2481 u_t8_t * de , * c ; 2483 p = `P_INP ( dbp , p ); 2489 d = `H_PAIRSIZE ( dbp , p , dbp-> pgsize , dx ); 2496 i(( db_dx_t ) dx ! `NUM_ENT ( p ) - 2) { 2501 c = ( u_t8_t *) p + `HOFFSET (p); 2507 de = c + d ; 2508 `memmove ( de , c , p [ `H_DATAINDEX ( dx )] - `HOFFSET ( p )); 2512 `HOFFSET ( p HOFFSET+ d ; 2513 `NUM_ENT ( p ) = NUM_ENT(p) - 2; 2516 n = ( db_dx_t ) dx ; < (db_dx_t)( `NUM_ENT ( p ));++) 2517 p [ n ] = i[+ 2] + d ; 2519 } } 2552 $__hamc_dpg ( dbc , d_pgno , w_pgno , num_t , , dp ) 2553 DBC * dbc ; 2554 db_pgno_t d_pgno , w_pgno ; 2555 u_t32_t num_t ; 2556 db_ham_mode ; 2557 u_t32_t * dp ; 2559 DB * dbp , * ldbp ; 2560 DBC * ; 2561 DB_LSN l ; 2562 DB_TXN * my_txn ; 2563 ENV * v ; 2564 HASH_CURSOR * h ; 2565 db_dx_t dx ; 2566 u_t32_t d ; 2567 found , t ; 2570 dx = ( = DB_HAM_DELLASTPG ? num_t : 0; 2572 dbp = dbc ->dbp; 2573 v = dbp ->env; 2575 my_txn = `IS_SUBTRANSACTION ( dbc -> txn ? dbc->tx: NULL ; 2576 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 2581 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 2582 d = 1; 2583 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 2584 ldbp = `TAILQ_NEXT dbp, dblilks )) { 2585 `MUTEX_LOCK ( v , dbp -> mux ); 2586 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 2587 i( = dbc || cp-> dbty ! DB_HASH ) 2589 h = ( HASH_CURSOR *) -> ; 2590 i( h -> pgno = w_pgno && 2591 ! `MVCC_SKIP_CURADJ ( , w_pgno )) { 2592 i( h -> dx == indx && 2593 `F_ISSET ( h , H_DELETED ) && 2594 h -> d >= order) 2595 d = h ->order + 1; 2596 `DB_ASSERT ( v , ! DB_HAM_DELFIRSTPG || 2597 h -> dx = NDX_INVALID || 2598 ( h -> dx == 0 && 2599 `F_ISSET ( h , H_DELETED ))); 2602 `MUTEX_UNLOCK ( v , dbp -> mux ); 2605 `FIND_FIRST_DB_MATCH ( v , dbp , ldbp ); 2606 found = 0; 2607 ldbp ! NULL &&dbp-> adj_feid = dbp ->adj_fileid; 2608 ldbp = `TAILQ_NEXT dbp, dblilks )) { 2609 `MUTEX_LOCK ( v , dbp -> mux ); 2610 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 2611 i( = dbc || cp-> dbty ! DB_HASH ) 2614 h = ( HASH_CURSOR *) -> ; 2616 i( h -> pgno = d_pgno && 2617 ! `MVCC_SKIP_CURADJ ( , d_pgno )) { 2618 ) { 2619 DB_HAM_DELFIRSTPG : 2624 h -> pgno = w_pgno ; 2630 i( h -> dx == indx) 2631 h -> d += order; 2633 DB_HAM_DELMIDPG : 2634 h -> pgno = w_pgno ; 2635 `DB_ASSERT ( v , h -> dx == 0 && 2636 `F_ISSET ( h , H_DELETED )); 2637 h -> d += order; 2639 DB_HAM_DELLASTPG : 2640 h -> pgno = w_pgno ; 2641 `DB_ASSERT ( v , h -> dx == 0 && 2642 `F_ISSET ( h , H_DELETED )); 2643 h -> dx = indx; 2644 h -> d += order; 2647 ( `__db_unknown_th ( 2648 v , "__hamc_delpg")); 2650 i( my_txn ! NULL && -> txn != my_txn) 2651 found = 1; 2654 `MUTEX_UNLOCK ( v , dbp -> mux ); 2656 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 2658 i( found !0 && `DBC_LOGGING ( dbc )) { 2659 i(( t = `__ham_chgpg_log ( dbp , my_txn , & l , 0, , 2660 d_pgno , w_pgno , dx , d )) != 0) 2661 ( t ); 2663 * dp = d ; 2665 } } @../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 (( DBC *, __ham_grouoc_gs *, DB_LSN *)); 54 __ham_loc_ges_42 55 __P (( DBC *, __ham_grouoc_42_gs *, DB_LSN *)); 64 $__ham_sd_cov ( v , db , lp , , fo ) 65 ENV * v ; 66 DBT * db ; 67 DB_LSN * lp ; 68 db_cs ; 69 * fo ; 71 __ham_sd_gs * gp ; 72 DB_THREAD_INFO * ; 73 DB * fe_dbp ; 74 DBC * dbc ; 75 DB_MPOOLFILE * mpf ; 76 PAGE * g ; 77 db_dx_t ddx ; 78 u_t32_t code ; 79 cmp_n , cmp_p , dty , kty , t ; 81 = (( DB_TXNHEAD *) fo )-> thad_fo ; 82 g = NULL ; 83 `REC_PRINT ( __ham_sd_t ); 84 `REC_INTRO ( __ham_sd_ad , , 1); 86 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 87 0, & g )) != 0) { 88 i( `DB_UNDO ( )) { 89 i( t = DB_PAGE_NOTFOUND ) 90 de ; 92 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 93 out ; 97 i(! `IS_ZERO_LSN ( gp -> g )) 98 de ; 104 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 105 DB_MPOOL_CREATE , & g )) != 0) { 106 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 107 out ; 111 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 112 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 113 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 125 code = `OPCODE_OF ( gp ->opcode); 126 i(( code = DELPAIR && cmp_n =0 && `DB_UNDO ( )) || 127 ( code = PUTPAIR && cmp_p =0 && `DB_REDO ( ))) { 131 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 132 kty = `DB_UNDO ( || `PAIR_ISKEYBIG ( gp -> code ) ? 133 H_OFFPAGE : H_KEYDATA ; 134 i( `PAIR_ISDATADUP ( gp -> code )) 135 dty = H_DUPLICATE ; 136 i( `DB_UNDO ( || `PAIR_ISDATABIG ( gp -> code )) 137 dty = H_OFFPAGE ; 139 dty = H_KEYDATA ; 140 ddx = ( db_dx_t ) gp -> ndx ; 141 i(( t = `__ham_ ( dbc , g , & ddx , 142 & gp -> key , &gp-> da , kty , dty )) != 0) 143 out ; 144 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 145 } i(( code = DELPAIR && cmp_p =0 && `DB_REDO ( )) || 146 ( code = PUTPAIR && cmp_n =0 && `DB_UNDO ( ))) { 148 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 149 `__ham_d ( fe_dbp , g , gp -> ndx ); 150 `LSN ( g `DB_REDO ( ? * lp : gp -> g ; 153 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 154 out ; 155 g = NULL ; 158 de : * lp = gp -> ev_l ; 159 t = 0; 161 out : i( g ! NULL ) 162 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 163 REC_CLOSE ; 164 } } 175 $__ham_wge_cov ( v , db , lp , , fo ) 176 ENV * v ; 177 DBT * db ; 178 DB_LSN * lp ; 179 db_cs ; 180 * fo ; 182 __ham_wge_gs * gp ; 183 DB_THREAD_INFO * ; 184 DB * fe_dbp ; 185 DBC * dbc ; 186 DB_MPOOLFILE * mpf ; 187 PAGE * g ; 188 chge , cmp_n , cmp_p , t ; 190 = (( DB_TXNHEAD *) fo )-> thad_fo ; 191 g = NULL ; 192 `REC_PRINT ( __ham_wge_t ); 193 `REC_INTRO ( __ham_wge_ad , , 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 ( v , , 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 ( v , , 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 , 260 , g , fe_dbp -> iܙy )) != 0) 261 out ; 262 g = NULL ; 266 age : i( gp -> xt_pgno ! PGNO_INVALID ) { 267 `REC_FGET ( mpf , , gp -> xt_pgno , & g , de ); 269 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 270 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> x ); 271 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> x ); 272 chge = 0; 274 i(( cmp_p =0 && `DB_REDO ( && gp -> code = PUTOVFL ) || 275 ( cmp_n =0 && `DB_UNDO ( && gp -> code = DELOVFL )) { 277 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 278 g -> ev_pgno = gp -> w_pgno ; 279 chge = 1; 280 } i(( cmp_p == 0 && 281 `DB_REDO ( && gp -> code = DELOVFL ) || 282 ( cmp_n =0 && `DB_UNDO ( && gp -> code = PUTOVFL )) { 284 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 285 g -> ev_pgno = gp ->prev_pgno; 286 chge = 1; 289 i( chge ) 290 `LSN ( g `DB_REDO ( ? * lp : gp -> x ; 292 i(( t = `__memp_ut ( mpf , 293 , g , fe_dbp -> iܙy )) != 0) 294 out ; 295 g = NULL ; 297 de : * lp = gp -> ev_l ; 298 t = 0; 300 out : i( g ! NULL ) 301 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 302 REC_CLOSE ; 303 } } 315 $__ham_a_cov ( v , db , lp , , fo ) 316 ENV * v ; 317 DBT * db ; 318 DB_LSN * lp ; 319 db_cs ; 320 * fo ; 322 __ham_a_gs * gp ; 323 DB_THREAD_INFO * ; 324 DB * fe_dbp ; 325 DBC * dbc ; 326 DB_MPOOLFILE * mpf ; 327 DBT dbt ; 328 PAGE * g ; 329 u_t32_t chge ; 330 cmp_n , cmp_p , is_us , modifd , t ; 331 u_t8_t * hk ; 333 = (( DB_TXNHEAD *) fo )-> thad_fo ; 334 g = NULL ; 335 `REC_PRINT ( __ham_a_t ); 336 `REC_INTRO ( __ham_a_ad , , 0); 338 `REC_FGET ( mpf , , gp -> pgno , & g , de ); 340 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 341 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 342 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 344 `memt (& dbt , 0, (dbt)); 345 modifd = 0; 352 i( gp -> wem . size >rgp-> dem .size) { 353 chge = gp -> wem . size -rgp-> dem .size; 354 is_us = 1; 356 chge = gp -> dem . size -rgp-> wem .size; 357 is_us = 0; 359 i( cmp_p =0 && `DB_REDO ( )) { 361 dbt . da = gp -> wem .data; 362 dbt . size = gp -> wem .size; 363 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 364 `LSN ( g * lp ; 369 modifd = 1; 370 } i( cmp_n =0 && `DB_UNDO ( )) { 372 dbt . da = gp -> dem .data; 373 dbt . size = gp -> dem .size; 378 is_us = !is_plus; 379 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 380 `LSN ( g gp -> g ; 381 modifd = 1; 384 i( modifd ) { 385 `__ham_ڷge_a ( fe_dbp , g , 386 gp -> ndx ,rgp-> off , chge , is_us , & dbt ); 387 i( gp -> makedup ) { 388 hk = `P_ENTRY ( fe_dbp , g , gp -> ndx ); 389 i( `DB_REDO ( )) 390 `HPAGE_PTYPE ( hk H_DUPLICATE ; 392 `HPAGE_PTYPE ( hk H_KEYDATA ; 396 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 397 out ; 398 g = NULL ; 400 de : * lp = gp -> ev_l ; 401 t = 0; 403 out : i( g ! NULL ) 404 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 405 REC_CLOSE ; 406 } } 415 $__ham_lda_cov ( v , db , lp , , fo ) 416 ENV * v ; 417 DBT * db ; 418 DB_LSN * lp ; 419 db_cs ; 420 * fo ; 422 __ham_lda_gs * gp ; 423 DB_THREAD_INFO * ; 424 DB * fe_dbp ; 425 DBC * dbc ; 426 DB_MPOOLFILE * mpf ; 427 PAGE * g ; 428 cmp_n , cmp_p , t ; 430 = (( DB_TXNHEAD *) fo )-> thad_fo ; 431 g = NULL ; 432 `REC_PRINT ( __ham_lda_t ); 433 `REC_INTRO ( __ham_lda_ad , , 1); 435 i(( t = `__memp_fg ( mpf , & gp -> pgno , , NULL , 0, & g )) != 0) { 436 i( `DB_UNDO ( )) { 437 i( t = DB_PAGE_NOTFOUND ) 438 de ; 440 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 441 out ; 445 i(! `IS_ZERO_LSN ( gp -> g )) 446 de ; 452 i(( t = `__memp_fg ( mpf , & gp -> pgno , 453 , NULL , DB_MPOOL_CREATE , & g )) != 0) { 454 t = `__db_pgr ( fe_dbp , gp -> pgno ,et); 455 out ; 459 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 460 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 461 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 478 i( cmp_p =0 && `DB_REDO ( )) { 479 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 480 i( gp -> code = SPLITNEW ) 482 `memy ( g , gp -> geimage . da , 483 gp -> geimage . size ); 484 i( gp -> code = SORTPAGE ) { 485 i(( t = `__ham_st_ge ( dbc , 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 ( v , db , lp , , fo ) 521 ENV * v ; 522 DBT * db ; 523 DB_LSN * lp ; 524 db_cs ; 525 * fo ; 527 __ham_cyge_gs * gp ; 528 DB_THREAD_INFO * ; 529 DB * fe_dbp ; 530 DBC * dbc ; 531 DB_MPOOLFILE * mpf ; 532 PAGE * g ; 533 cmp_n , cmp_p , t ; 535 = (( DB_TXNHEAD *) fo )-> thad_fo ; 536 g = NULL ; 537 `REC_PRINT ( __ham_cyge_t ); 538 `REC_INTRO ( __ham_cyge_ad , , 0); 541 `REC_FGET ( mpf , , gp -> pgno , & g , dext ); 543 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 544 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 545 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 547 i( cmp_p =0 && `DB_REDO ( )) { 549 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 550 `memy ( g , gp -> ge . da ,rgp->ge. size ); 551 `PGNO ( g gp -> pgno ; 552 `PREV_PGNO ( g PGNO_INVALID ; 553 `LSN ( g * lp ; 554 } i( cmp_n =0 && `DB_UNDO ( )) { 556 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 557 `P_INIT ( g , fe_dbp -> pgsize , gp -> pgno , PGNO_INVALID , 558 gp -> xt_pgno , 0, P_HASH ); 559 `LSN ( g gp -> g ; 561 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 562 out ; 563 g = NULL ; 565 dext : 566 `REC_FGET ( mpf , , gp -> xt_pgno , & g , do_ ); 569 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 570 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> x ); 571 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> x ); 572 i( cmp_p =0 && `DB_REDO ( )) { 573 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 574 `LSN ( g * lp ; 575 } i( cmp_n =0 && `DB_UNDO ( )) { 577 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 578 `memy ( g , gp -> ge . da ,rgp->ge. size ); 580 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 581 out ; 582 g = NULL ; 585 do_ : i( gp -> ext_pgno = PGNO_INVALID ) 586 de ; 588 `REC_FGET ( mpf , , gp -> ext_pgno , & g , de ); 590 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 591 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> ex ); 592 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> ex ); 594 i( cmp_p =0 && `DB_REDO ( )) { 596 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 597 `PREV_PGNO ( g gp -> pgno ; 598 `LSN ( g * lp ; 599 } i( cmp_n =0 && `DB_UNDO ( )) { 601 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & g ); 602 `PREV_PGNO ( g gp -> xt_pgno ; 603 `LSN ( g gp -> ex ; 605 i(( t = `__memp_ut ( mpf , , g , fe_dbp -> iܙy )) != 0) 606 out ; 607 g = NULL ; 609 de : * lp = gp -> ev_l ; 610 t = 0; 612 out : i( g ! NULL ) 613 () `__memp_ut ( mpf , , g , fe_dbp -> iܙy ); 614 REC_CLOSE ; 615 } } 625 $__ham_magroup_cov ( v , db , lp , , fo ) 626 ENV * v ; 627 DBT * db ; 628 DB_LSN * lp ; 629 db_cs ; 630 * fo ; 632 __ham_magroup_gs * gp ; 633 DB_THREAD_INFO * ; 634 HASH_CURSOR * h ; 635 DB * fe_dbp ; 636 DBMETA * mma ; 637 DBC * dbc ; 638 DB_MPOOLFILE * mpf ; 639 PAGE * g ; 640 db_pgno_t pgno ; 641 cmp_n , cmp_p , did_loc , groupgrow , t ; 643 = (( DB_TXNHEAD *) fo )-> thad_fo ; 644 mma = NULL ; 645 did_loc = 0; 646 `REC_PRINT ( __ham_magroup_t ); 647 `REC_INTRO ( __ham_magroup_ad , , 1); 659 groupgrow = 660 ( u_t32_t )(1 << `__db_log2 ( gp -> buck + 1)) ==rgp->bucket + 1; 661 pgno = gp ->pgno; 662 i( gp -> wloc ) 663 pgno + gp -> buck ; 665 g = NULL ; 666 t = `__memp_fg ( mpf , & pgno , , NULL , 0, & g ); 669 i( t !0 && `DB_REDO ( )) 670 t = `__memp_fg ( mpf , 671 & pgno , , NULL , DB_MPOOL_CREATE , & g ); 672 i( t = DB_PAGE_NOTFOUND ) 673 do_ma ; 674 i( t != 0) { 675 i( t ! ENOSPC ) 676 out ; 677 pgno = 0; 678 do_ma ; 686 did_loc = groupgrow ; 688 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 689 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 690 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 692 i( cmp_p =0 && `DB_REDO ( )) { 693 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 694 g -> l = * lp ; 695 } i( cmp_n =0 && `DB_UNDO ( )) { 697 i( gp -> wloc ) { 698 i( g ! NULL && ( t = `__memp_ut ( mpf , 699 , g , DB_PRIORITY_VERY_LOW )) != 0) 700 out ; 701 g = NULL ; 702 i(( t = 703 `__memp_run ( mpf , , gp -> pgno , 0)) != 0) 704 out ; 710 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 711 g -> l = gp -> g ; 714 i( g ! NULL && 715 ( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 716 out ; 718 do_ma : 720 h = ( HASH_CURSOR *) dbc -> ; 721 i(( t = `__ham_g_ma ( dbc )) != 0) 722 out ; 723 cmp_n = `LOG_COMPARE ( lp , & h -> hdr -> dbma . l ); 724 cmp_p = `LOG_COMPARE (& h -> hdr -> dbma . l , & gp -> m ); 725 `CHECK_LSN ( v , , cmp_p , & h -> hdr -> dbma . l , & gp -> m ); 726 i( cmp_p =0 && `DB_REDO ( )) { 728 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 729 ++ h -> hdr -> max_buck ; 730 i( groupgrow ) { 731 h -> hdr -> low_mask = h->hdr-> high_mask ; 732 h -> hdr -> high_mask = 733 ( gp -> buck + 1| h -> hdr -> low_mask ; 735 h -> hdr -> dbma . l = * lp ; 736 } i( cmp_n =0 && `DB_UNDO ( )) { 738 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 739 h -> hdr -> max_buck = gp -> buck ; 740 i( groupgrow ) { 741 h -> hdr -> high_mask = gp -> buck ; 742 h -> hdr -> low_mask = h->hdr-> high_mask >> 1; 744 h -> hdr -> dbma . l = gp -> m ; 755 i( did_loc && ! `DB_UNDO ( ) && 756 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1+ 1] = PGNO_INVALID ) { 757 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 758 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1) + 1] = 759 ( gp -> pgno -rgp-> buck ) - 1; 761 i( cmp_n =0 && groupgrow && `DB_UNDO ( )) { 762 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 763 h -> hdr -> es [ 764 `__db_log2 ( gp -> buck + 1+ 1] = PGNO_INVALID ; 772 i( gp -> mmpgno !gp-> mpgno ) { 773 i(( t = `__memp_fg ( mpf , 774 & gp -> mmpgno , , NULL , DB_MPOOL_EDIT , & mma )) != 0) { 775 i( `DB_UNDO ( && t = DB_PAGE_NOTFOUND ) 776 t = 0; 777 out ; 779 cmp_n = `LOG_COMPARE ( lp , & mma -> l ); 780 cmp_p = `LOG_COMPARE (& mma -> l , & gp -> mm ); 781 i( cmp_p =0 && `DB_REDO ( )) { 782 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 783 mma -> l = * lp ; 784 } i( cmp_n =0 && `DB_UNDO ( )) { 785 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 786 mma -> l = gp -> mm ; 789 mma = ( DBMETA *) h -> hdr ; 790 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 793 i( cmp_n =0 && `DB_UNDO ( )) 794 mma -> ϡ_pgno = gp ->last_pgno; 795 i( `DB_REDO ( && mma -> ϡ_pgno < pgno ) 796 mma -> ϡ_pgno = pgno ; 798 i( gp -> mmpgno !gp-> mpgno && 799 ( t = `__memp_ut ( mpf , , mma , dbc -> iܙy )) != 0) 800 out ; 801 mma = NULL ; 803 de : * lp = gp -> ev_l ; 804 t = 0; 806 out : i( mma ! NULL ) 807 () `__memp_ut ( mpf , , mma , dbc -> iܙy ); 808 i( dbc ! NULL ) 809 () `__ham_a_ma ( dbc ); 811 REC_CLOSE ; 812 } } 822 $__ham_grouoc_cov ( v , db , lp , , fo ) 823 ENV * v ; 824 DBT * db ; 825 DB_LSN * lp ; 826 db_cs ; 827 * fo ; 829 __ham_grouoc_gs * gp ; 830 DB_THREAD_INFO * ; 831 DBMETA * mma ; 832 DB_MPOOLFILE * mpf ; 833 DB * fe_dbp ; 834 DBC * dbc ; 835 PAGE * g ; 836 db_pgno_t pgno ; 837 cmp_n , cmp_p , t ; 839 = (( DB_TXNHEAD *) fo )-> thad_fo ; 840 mma = NULL ; 841 `REC_PRINT ( __ham_grouoc_t ); 842 `REC_INTRO ( __ham_grouoc_ad , , 1); 844 pgno = PGNO_BASE_MD ; 845 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 0, & mma )) != 0) { 846 i( `DB_REDO ( )) { 847 t = `__db_pgr ( fe_dbp , pgno ,et); 848 out ; 850 de ; 853 cmp_n = `LOG_COMPARE ( lp , & `LSN ( mma )); 854 cmp_p = `LOG_COMPARE (& `LSN ( mma ), & gp -> ma_l ); 855 `CHECK_LSN ( v , , cmp_p , & `LSN ( mma ), & gp -> ma_l ); 866 pgno = gp -> t_pgno +rgp-> num - 1; 867 i( `DB_REDO ( )) { 868 i(( t = `__ham_loc_ges ( dbc , gp , lp )) != 0) 869 out ; 870 i( cmp_p == 0) { 871 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & mma ); 872 `LSN ( mma * lp ; 874 } i( `DB_UNDO ( )) { 879 g = NULL ; 880 i(( t = `__memp_fg ( mpf , & pgno , 881 , NULL , DB_MPOOL_EDIT , & g )) == 0) { 882 i( `LOG_COMPARE (& g -> l , lp ) != 0) { 883 i(( t = `__memp_ut ( mpf , , 884 g , DB_PRIORITY_VERY_LOW )) != 0) 885 out ; 886 g = NULL ; 888 } i( t ! DB_PAGE_NOTFOUND ) 889 out ; 894 i( g ! NULL ) { 895 i(( t = `__memp_ut ( mpf , , 896 g , DB_PRIORITY_VERY_LOW )) != 0) 897 out ; 898 i(( t = `__memp_run ( mpf , 899 , gp -> t_pgno , 0)) != 0) 900 out ; 907 i( cmp_n == 0) { 908 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & mma ); 909 mma -> ϡ_pgno = gp ->last_pgno; 911 pgno = 0; 912 i( cmp_n == 0) { 913 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & mma ); 914 `LSN ( mma gp -> ma_l ; 921 i( pgno > mma -> ϡ_pgno ) { 922 `REC_DIRTY ( mpf , , fe_dbp -> iܙy , & mma ); 923 mma -> ϡ_pgno = pgno ; 926 de : i( t == 0) 927 * lp = gp -> ev_l ; 928 t = 0; 930 out : i( mma ! NULL ) 931 () `__memp_ut ( mpf , , mma , fe_dbp -> iܙy ); 933 REC_CLOSE ; 934 } } 947 $__ham_loc_ges ( dbc , gp , lp ) 948 DBC * dbc ; 949 __ham_grouoc_gs * gp ; 950 DB_LSN * lp ; 952 DB * fe_dbp ; 953 DB_MPOOLFILE * mpf ; 954 DB_THREAD_INFO * ; 955 PAGE * g ; 956 db_pgno_t pgno ; 957 t ; 959 fe_dbp = dbc -> dbp ; 960 mpf = fe_dbp ->mpf; 961 = dbc -> thad_fo ; 964 pgno = gp -> t_pgno +rgp-> num - 1; 967 i(( t = 968 `__memp_fg ( mpf , & pgno , , NULL , 0, & g )) == 0) { 969 i( `NUM_ENT ( g =0 && `IS_ZERO_LSN ag-> l )) 970 _ge ; 971 ( `__memp_ut ( mpf , , g , dbc -> iܙy )); 975 i(( t = `__memp_fg ( mpf , & pgno , 976 , NULL , DB_MPOOL_CREATE , & g )) != 0) 977 ( `__db_pgr ( dbc -> dbp , pgno , t )); 979 _ge : 981 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 982 `P_INIT ( g , dbc -> dbp -> pgsize , 983 pgno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 984 g -> l = * lp ; 986 out : ( `__memp_ut ( mpf , , g , dbc -> iܙy )); 987 } } 997 $__ham_cudj_cov ( v , db , lp , , fo ) 998 ENV * v ; 999 DBT * db ; 1000 DB_LSN * lp ; 1001 db_cs ; 1002 * fo ; 1004 __ham_cudj_gs * gp ; 1005 db_ham_cudj mode , hamc_mode ; 1006 DB_THREAD_INFO * ; 1007 DB_MPOOLFILE * mpf ; 1008 DB * fe_dbp ; 1009 DBC * dbc ; 1010 HASH_CURSOR * h ; 1011 t ; 1013 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1014 `REC_PRINT ( __ham_cudj_t ); 1015 `REC_INTRO ( __ham_cudj_ad , , 1); 1017 i( ! DB_TXN_ABORT ) 1018 de ; 1020 mode = ( db_ham_cudj ) gp -> add ; 1026 mode ) { 1027 DB_HAM_CURADJ_DEL : 1028 hamc_mode = DB_HAM_CURADJ_ADD ; 1030 DB_HAM_CURADJ_ADD : 1031 hamc_mode = DB_HAM_CURADJ_DEL ; 1033 DB_HAM_CURADJ_ADDMOD : 1034 hamc_mode = DB_HAM_CURADJ_DELMOD ; 1036 DB_HAM_CURADJ_DELMOD : 1037 hamc_mode = DB_HAM_CURADJ_ADDMOD ; 1040 `__db_rx ( v , 1042 t = EINVAL ; 1043 out ; 1051 h = ( HASH_CURSOR *) dbc -> ; 1052 h -> pgno = gp ->pgno; 1053 h -> dx = gp ->indx; 1054 h -> dup_off = gp ->dup_off; 1055 h -> d = gp ->order; 1056 i( mode = DB_HAM_CURADJ_DEL ) 1057 `F_SET ( h , H_DELETED ); 1058 () `__hamc_upde ( dbc , gp -> n , hamc_mode ,rgp-> is_dup ); 1060 de : * lp = gp -> ev_l ; 1061 out : REC_CLOSE ; 1062 } } 1072 $__ham_chgpg_cov ( v , db , lp , , fo ) 1073 ENV * v ; 1074 DBT * db ; 1075 DB_LSN * lp ; 1076 db_cs ; 1077 * fo ; 1079 __ham_chgpg_gs * gp ; 1080 DB_THREAD_INFO * ; 1081 BTREE_CURSOR * d ; 1082 DB_MPOOLFILE * mpf ; 1083 DB * fe_dbp , * ldbp ; 1084 DBC * dbc ; 1085 DBC * ; 1086 HASH_CURSOR * l ; 1087 u_t32_t d , dx ; 1088 t ; 1090 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1091 `REC_PRINT ( __ham_chgpg_t ); 1092 `REC_INTRO ( __ham_chgpg_ad , , 0); 1094 i( ! DB_TXN_ABORT ) 1095 de ; 1098 dx = gp -> d_dx ; 1099 d = gp -> w_dx ; 1101 `MUTEX_LOCK ( v ,nv-> mtx_dbli ); 1102 `FIND_FIRST_DB_MATCH ( v , fe_dbp , ldbp ); 1104 ldbp ! NULL &&dbp-> adj_feid = fe_dbp ->adj_fileid; 1105 ldbp = `TAILQ_NEXT dbp, dblilks )) { 1106 `MUTEX_LOCK ( v , fe_dbp -> mux ); 1107 `TAILQ_FOREACH ( , & ldbp -> aive_queue , lks ) { 1108 l = ( HASH_CURSOR *) -> ; 1110 gp -> mode ) { 1111 DB_HAM_DELFIRSTPG : 1112 i( l -> pgno ! gp -> w_pgno || 1113 `MVCC_SKIP_CURADJ ( , l -> pgno )) 1115 i( l -> dx != indx || 1116 ! `F_ISSET ( l , H_DELETED ) || 1117 l -> d >= order) { 1118 l -> pgno = gp -> d_pgno ; 1119 i( l -> dx == indx) 1120 l -> d -= order; 1123 DB_HAM_DELMIDPG : 1124 DB_HAM_DELLASTPG : 1125 i( l -> pgno = gp -> w_pgno && 1126 l -> dx == indx && 1127 `F_ISSET ( l , H_DELETED ) && 1128 l -> d >= order && 1129 ! `MVCC_SKIP_CURADJ ( , l -> pgno )) { 1130 l -> pgno = gp -> d_pgno ; 1131 l -> d -= order; 1132 l -> dx = 0; 1135 DB_HAM_CHGPG : 1143 i( `F_ISSET ( l , H_DELETED )) 1146 DB_HAM_SPLIT : 1147 i( l -> pgno = gp -> w_pgno && 1148 l -> dx = gp -> w_dx && 1149 ! `MVCC_SKIP_CURADJ ( , l -> pgno )) { 1150 l -> dx = gp -> d_dx ; 1151 l -> pgno = gp -> d_pgno ; 1154 DB_HAM_DUP : 1155 i( l -> d = NULL ) 1157 d = ( BTREE_CURSOR *) l -> d -> ; 1158 i( d -> pgno ! gp -> w_pgno || 1159 d -> dx ! gp -> w_dx || 1160 `MVCC_SKIP_CURADJ ( l -> d , d -> pgno )) 1163 i( `F_ISSET ( d , C_DELETED )) 1164 `F_SET ( l , H_DELETED ); 1174 `MUTEX_UNLOCK ( v , fe_dbp -> mux ); 1175 i(( t = `__dbc_o ( l -> d )) != 0) 1176 out ; 1177 `MUTEX_LOCK ( v , fe_dbp -> mux ); 1178 l -> d = NULL ; 1182 `MUTEX_UNLOCK ( v , fe_dbp -> mux ); 1184 `MUTEX_UNLOCK ( v ,nv-> mtx_dbli ); 1186 de : * lp = gp -> ev_l ; 1187 out : REC_CLOSE ; 1188 } } 1198 $__ham_magroup_42_cov ( v , db , lp , , fo ) 1199 ENV * v ; 1200 DBT * db ; 1201 DB_LSN * lp ; 1202 db_cs ; 1203 * fo ; 1205 __ham_magroup_42_gs * gp ; 1206 DB_THREAD_INFO * ; 1207 HASH_CURSOR * h ; 1208 DB * fe_dbp ; 1209 DBMETA * mma ; 1210 DBC * dbc ; 1211 DB_MPOOLFILE * mpf ; 1212 PAGE * g ; 1213 db_pgno_t pgno ; 1214 u_t32_t ags ; 1215 cmp_n , cmp_p , did_loc , groupgrow , t ; 1217 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1218 mma = NULL ; 1219 did_loc = 0; 1220 `REC_PRINT ( __ham_magroup_42_t ); 1221 `REC_INTRO ( __ham_magroup_42_ad , , 1); 1240 groupgrow = 1241 ( u_t32_t )(1 << `__db_log2 ( gp -> buck + 1)) ==rgp->bucket + 1; 1242 pgno = gp ->pgno; 1243 i( gp -> wloc ) 1244 pgno + gp -> buck ; 1246 ags = 0; 1247 g = NULL ; 1248 `LF_SET ( DB_MPOOL_CREATE ); 1249 t = `__memp_fg ( mpf , & pgno , , NULL , ags , & g ); 1251 i( t != 0) { 1252 i( t ! ENOSPC ) 1253 out ; 1254 pgno = 0; 1255 do_ma ; 1263 did_loc = groupgrow ; 1265 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 1266 cmp_p = `LOG_COMPARE (& `LSN ( g ), & gp -> g ); 1267 `CHECK_LSN ( v , , cmp_p , & `LSN ( g ), & gp -> g ); 1269 i( cmp_p =0 && `DB_REDO ( )) { 1270 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1271 g -> l = * lp ; 1272 } i( cmp_n =0 && `DB_UNDO ( )) { 1277 `REC_DIRTY ( mpf , , dbc -> iܙy , & g ); 1278 g -> l = gp -> g ; 1280 i( g ! NULL && 1281 ( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 1282 out ; 1284 do_ma : 1286 h = ( HASH_CURSOR *) dbc -> ; 1287 i(( t = `__ham_g_ma ( dbc )) != 0) 1288 out ; 1289 cmp_n = `LOG_COMPARE ( lp , & h -> hdr -> dbma . l ); 1290 cmp_p = `LOG_COMPARE (& h -> hdr -> dbma . l , & gp -> m ); 1291 `CHECK_LSN ( v , , cmp_p , & h -> hdr -> dbma . l , & gp -> m ); 1292 i( cmp_p =0 && `DB_REDO ( )) { 1294 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 1295 ++ h -> hdr -> max_buck ; 1296 i( groupgrow ) { 1297 h -> hdr -> low_mask = h->hdr-> high_mask ; 1298 h -> hdr -> high_mask = 1299 ( gp -> buck + 1| h -> hdr -> low_mask ; 1301 h -> hdr -> dbma . l = * lp ; 1302 } i( cmp_n =0 && `DB_UNDO ( )) { 1304 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 1305 h -> hdr -> max_buck = gp -> buck ; 1306 i( groupgrow ) { 1307 h -> hdr -> high_mask = gp -> buck ; 1308 h -> hdr -> low_mask = h->hdr-> high_mask >> 1; 1310 h -> hdr -> dbma . l = gp -> m ; 1321 i( did_loc && 1322 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1+ 1] = PGNO_INVALID ) { 1323 `REC_DIRTY ( mpf , , dbc -> iܙy , & h -> hdr ); 1324 h -> hdr -> es [ `__db_log2 ( gp -> buck + 1) + 1] = 1325 ( gp -> pgno -rgp-> buck ) - 1; 1333 i( gp -> mmpgno !gp-> mpgno ) { 1334 i(( t = `__memp_fg ( mpf , & gp -> mmpgno , , NULL , 1335 DB_MPOOL_EDIT , & mma )) != 0) { 1336 i( `DB_UNDO ( && t = DB_PAGE_NOTFOUND ) 1337 t = 0; 1338 out ; 1340 cmp_n = `LOG_COMPARE ( lp , & mma -> l ); 1341 cmp_p = `LOG_COMPARE (& mma -> l , & gp -> mm ); 1342 i( cmp_p =0 && `DB_REDO ( )) { 1343 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 1344 mma -> l = * lp ; 1345 } i( cmp_n =0 && `DB_UNDO ( )) { 1346 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 1347 mma -> l = gp -> mm ; 1350 mma = ( DBMETA *) h -> hdr ; 1351 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 1354 i( mma -> ϡ_pgno < pgno ) 1355 mma -> ϡ_pgno = pgno ; 1357 i( gp -> mmpgno !gp-> mpgno && 1358 ( t = `__memp_ut ( mpf , , mma , dbc -> iܙy )) != 0) 1359 out ; 1360 mma = NULL ; 1362 de : * lp = gp -> ev_l ; 1363 t = 0; 1365 out : i( mma ! NULL ) 1366 () `__memp_ut ( mpf , , mma , dbc -> iܙy ); 1367 i( dbc ! NULL ) 1368 () `__ham_a_ma ( dbc ); 1370 REC_CLOSE ; 1371 } } 1381 $__ham_grouoc_42_cov ( v , db , lp , , fo ) 1382 ENV * v ; 1383 DBT * db ; 1384 DB_LSN * lp ; 1385 db_cs ; 1386 * fo ; 1388 __ham_grouoc_42_gs * gp ; 1389 DB_THREAD_INFO * ; 1390 DBMETA * mma ; 1391 DB_MPOOLFILE * mpf ; 1392 DB * fe_dbp ; 1393 DBC * dbc ; 1394 db_pgno_t pgno ; 1395 cmp_p , t ; 1397 = (( DB_TXNHEAD *) fo )-> thad_fo ; 1398 mma = NULL ; 1399 `REC_PRINT ( __ham_grouoc_42_t ); 1400 `REC_INTRO ( __ham_grouoc_42_ad , , 1); 1402 pgno = PGNO_BASE_MD ; 1403 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 0, & mma )) != 0) { 1404 i( `DB_REDO ( )) { 1405 t = `__db_pgr ( fe_dbp , pgno ,et); 1406 out ; 1408 de ; 1411 cmp_p = `LOG_COMPARE (& `LSN ( mma ), & gp -> ma_l ); 1412 `CHECK_LSN ( v , , cmp_p , & `LSN ( mma ), & gp -> ma_l ); 1423 pgno = gp -> t_pgno +rgp-> num - 1; 1424 i( `DB_REDO ( )) { 1425 i(( t = `__ham_loc_ges_42 ( dbc , gp , lp )) != 0) 1426 out ; 1427 i( cmp_p == 0) { 1428 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 1429 `LSN ( mma * lp ; 1431 } i( `DB_UNDO ( )) { 1435 `__db_rx ( v , 1437 t = `__v_nic ( v , EINVAL ); 1438 out ; 1446 i( pgno > mma -> ϡ_pgno ) { 1447 `REC_DIRTY ( mpf , , dbc -> iܙy , & mma ); 1448 mma -> ϡ_pgno = pgno ; 1451 de : i( t == 0) 1452 * lp = gp -> ev_l ; 1453 t = 0; 1455 out : i( mma ! NULL ) 1456 () `__memp_ut ( mpf , , mma , dbc -> iܙy ); 1458 REC_CLOSE ; 1459 } } 1472 $__ham_loc_ges_42 ( dbc , gp , lp ) 1473 DBC * dbc ; 1474 __ham_grouoc_42_gs * gp ; 1475 DB_LSN * lp ; 1477 DB_MPOOLFILE * mpf ; 1478 DB_THREAD_INFO * ; 1479 PAGE * g ; 1480 db_pgno_t pgno ; 1481 t ; 1483 mpf = dbc -> dbp ->mpf; 1484 = dbc -> thad_fo ; 1487 pgno = gp -> t_pgno +rgp-> num - 1; 1490 i(( t = `__memp_fg ( mpf , 1491 & pgno , , NULL , 0, & g )) == 0) { 1492 i( `NUM_ENT ( g =0 && `IS_ZERO_LSN ag-> l )) 1493 _ge ; 1494 i(( t = `__memp_ut ( mpf , 1495 , g , dbc -> iܙy )) != 0) 1496 ( t ); 1501 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 1502 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & g )) != 0) 1503 ( `__db_pgr ( dbc -> dbp , pgno , t )); 1505 _ge : 1507 `P_INIT ( g , 1508 dbc -> dbp -> pgsize , pgno , PGNO_INVALID , PGNO_INVALID, 0, P_HASH ); 1509 g -> l = * lp ; 1511 i(( t = `__memp_ut ( mpf , , g , dbc -> iܙy )) != 0) 1512 ( t ); 1515 } } @../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_THREAD_INFO * ; 31 DB_TXN * txn ; 33 DBC * dbc ; 34 HASH_CURSOR * h ; 35 t ; 38 i(( t = `__db_curs ( dbp , , txn , & dbc , 0)) != 0) 39 ( t ); 40 h = ( HASH_CURSOR *) dbc -> ; 42 i(( t = `__ham_g_ma ( dbc )) != 0) 43 r ; 46 i(( t = `__ham_dty_ma ( dbc , 0)) != 0) 47 r ; 50 `F_SET ( dbc , DBC_DONTLOCK ); 52 i(( t = `__ham_av ( dbc , 53 DB_LOCK_WRITE , __db_aim_back , NULL , 1)) != 0) 54 r ; 55 i(( t = `__dbc_o ( dbc )) != 0) 56 r ; 57 i(( t = `__ham_a_ma ( dbc )) != 0) 58 r ; 61 r : i( h -> hdr ! NULL ) 62 () `__ham_a_ma ( dbc ); 63 () `__dbc_o ( dbc ); 64 ( t ); 65 } } 75 $__ham_un ( dbc , coup ) 76 DBC * dbc ; 77 u_t32_t * coup ; 79 u_t32_t cou ; 80 t , t_t ; 82 i(( t = `__ham_g_ma ( dbc )) != 0) 83 ( t ); 85 cou = 0; 87 t = `__ham_av ( dbc , 88 DB_LOCK_WRITE , __db_un_back , & cou , 1); 90 i(( t_t = `__ham_a_ma ( dbc )!0 && t == 0) 91 t = t_t ; 93 i( coup ! NULL ) 94 * coup = 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 (( DBC *, PAGE *, *, *)); 27 $__ham_ ( dbc , p , ags ) 28 DBC * dbc ; 29 * p ; 30 u_t32_t ags ; 32 DB * dbp ; 33 DB_HASH_STAT * ; 34 DB_MPOOLFILE * mpf ; 35 ENV * v ; 36 HASH_CURSOR * h ; 37 PAGE * h ; 38 db_pgno_t pgno ; 39 t ; 41 dbp = dbc ->dbp; 42 v = dbp ->env; 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 ( v , (* ), &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 , 83 & pgno , dbc -> thad_fo , dbc-> txn , 0, & h )) != 0) 84 r ; 86 pgno = h -> xt_pgno ; 87 () `__memp_ut ( mpf , dbc -> thad_fo , h , dbc-> iܙy ); 91 -> hash_nkeys = 0; 92 -> hash_nda = 0; 93 i(( t = `__ham_av ( dbc , 94 DB_LOCK_READ , __ham__back , , 0)) != 0) 95 r ; 97 i(! `F_ISSET ( dbp , DB_AM_RDONLY )) { 103 i(( t = `__ham_dty_ma ( dbc , 104 ( dbc -> txn = NULL ? DB_MPOOL_EDIT : 0)) != 0) 105 r ; 106 h -> hdr -> dbma . key_cou = -> hash_nkeys ; 107 h -> hdr -> dbma . cd_cou = -> hash_nda ; 110 de : i(( t = `__ham_a_ma ( dbc )) != 0) 111 r ; 113 *( DB_HASH_STAT **) p = ; 116 r : i( ! NULL ) 117 `__os_u ( v , ); 119 i( h -> hdr ! NULL ) 120 () `__ham_a_ma ( dbc ); 122 ( t ); 123 } } 132 $__ham__t ( dbc , ags ) 133 DBC * dbc ; 134 u_t32_t ags ; 136 cڡ FN [] = { 137 { DB_HASH_DUP , "duplicates" }, 138 { DB_HASH_SUBDB , "multiple-databases" }, 139 { DB_HASH_DUPSORT , "sorted duplicates" }, 140 { 0, NULL } 142 DB * dbp ; 143 ENV * v ; 144 DB_HASH_STAT * ; 145 ld , t ; 146 cڡ * s ; 148 dbp = dbc ->dbp; 149 v = dbp ->env; 151 i(( t = `__ham_ ( dbc , & , `LF_ISSET ( DB_FAST_STAT ))) != 0) 152 ( t ); 154 i( `LF_ISSET ( DB_STAT_ALL )) { 155 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 156 `__db_msg ( v , "Default Hash database information:"); 158 `__db_msg ( v , "%lx\tHash maginumb", ( u_lg ) -> hash_magic ); 159 `__db_msg ( v , 160 "%lu\tHash vsiڂumb", ( u_lg ) -> hash_vsi ); 161 () `__db_g_ld ( dbp , & ld ); 162 ld ) { 164 s = "Little-endian"; 167 s = "Big-endian"; 170 s = "Unrecognized byte order"; 173 `__db_msg ( v , "%s\tBy ord", s ); 174 `__db_ags ( v , NULL , -> hash_maags , , NULL, "\tFlags"); 175 `__db_dl ( v , 176 "Numb ogehdaba", ( u_lg ) -> hash_get ); 177 `__db_dl ( v , 178 "Undlyg dabaagsize", ( u_lg ) -> hash_gesize ); 179 `__db_dl ( v , "Scifd f", ( u_lg ) -> hash_f ); 180 `__db_dl ( v , 181 "Numb okeyhdaba", ( u_lg ) -> hash_nkeys ); 182 `__db_dl ( v , 183 "Numb odemhdaba", ( u_lg ) -> hash_nda ); 185 `__db_dl ( v , "Numb ohash bucks", ( u_lg ) -> hash_bucks ); 186 `__db_dl_p ( v , "Number of bytes free on bucketages", 187 ( u_lg ) -> hash_b , `DB_PCT_PG ( 188 -> hash_b , sp-> hash_bucks , sp-> hash_gesize ), "ff"); 190 `__db_dl ( v , 191 "Numb oovowages", ( u_lg ) -> hash_bigges ); 192 `__db_dl_p ( v , "Number of bytes free in overflowages", 193 ( u_lg ) -> hash_big_b , `DB_PCT_PG ( 194 -> hash_big_b , sp-> hash_bigges , sp-> hash_gesize ), "ff"); 196 `__db_dl ( v , 197 "Numb obuck ovowages", ( u_lg ) -> hash_ovows ); 198 `__db_dl_p ( v , 200 ( u_lg ) -> hash_ov_ , `DB_PCT_PG ( 201 -> hash_ov_ , sp-> hash_ovows , sp-> hash_gesize ), "ff"); 203 `__db_dl ( v , "Numb oduiages", ( u_lg ) -> hash_dup ); 204 `__db_dl_p ( v , "Number of bytes free in duplicateages", 205 ( u_lg ) -> hash_dup_ , `DB_PCT_PG ( 206 -> hash_dup_ , sp-> hash_dup , sp-> hash_gesize ), "ff"); 208 `__db_dl ( v , 209 "Numb ogeځh䓆i", ( u_lg ) -> hash_ ); 211 `__os_u ( v , ); 214 } } 217 $__ham__back ( dbc , g , cook , pu ) 218 DBC * dbc ; 219 PAGE * g ; 220 * cook ; 221 * pu ; 223 DB * dbp ; 224 DB_BTREE_STAT b ; 225 DB_HASH_STAT * ; 226 db_dx_t dx , n , off , , t ; 227 u_t8_t * hk ; 228 t ; 230 * pu = 0; 231 = cook ; 232 dbp = dbc ->dbp; 234 g -> ty ) { 235 P_INVALID : 241 P_HASH_UNSORTED : 242 P_HASH : 249 i( `PREV_PGNO ( g = PGNO_INVALID ) 250 -> hash_b + `P_FREESPACE ( dbp , g ); 252 -> hash_ovows ++; 253 -> hash_ov_ + `P_FREESPACE ( dbp , g ); 255 t = `NUM_ENT ( g ); 257 dx = 0; indx < t ; indx + P_INDX ) { 258 * `H_PAIRDATA ( dbp , g , dx )) { 259 H_OFFDUP : 261 H_OFFPAGE : 262 H_KEYDATA : 263 -> hash_nda ++; 265 H_DUPLICATE : 266 = `LEN_HDATA ( dbp , g , 0, dx ); 267 hk = `H_PAIRDATA ( dbp , g , dx ); 268 off = 0; of< ; 269 off + n + 2 * ( db_dx_t )) { 270 -> hash_nda ++; 271 `memy (& n , 272 `HKEYDATA_DATA ( hk ) 273 + off , ( db_dx_t )); 277 ( `__db_pgfmt ( dbp -> v , `PGNO ( g ))); 280 -> hash_nkeys + `H_NUMPAIRS ( g ); 282 P_IBTREE : 283 P_IRECNO : 284 P_LBTREE : 285 P_LRECNO : 286 P_LDUP : 292 `memt (& b , 0, (bstat)); 293 i(( t = `__bam__back ( dbc , g , & b , pu )) != 0) 294 ( t ); 295 -> hash_dup ++; 296 -> hash_dup_ + b . bt_af_pg + 297 b . bt_dup_pg + b. bt_t_pg ; 298 -> hash_nda + b . bt_nda ; 300 P_OVERFLOW : 301 -> hash_bigges ++; 302 -> hash_big_b + `P_OVFLSPACE ( dbp , dbp-> pgsize , g ); 305 ( `__db_pgfmt ( dbp -> v , `PGNO ( g ))); 309 } } 318 $__ham_t_curs ( dbc ) 319 DBC * dbc ; 321 cڡ FN [] = { 322 { H_CONTINUE , "H_CONTINUE" }, 323 { H_DELETED , "H_DELETED" }, 324 { H_DUPONLY , "H_DUPONLY" }, 325 { H_EXPAND , "H_EXPAND" }, 326 { H_ISDUP , "H_ISDUP" }, 327 { H_NEXT_NODUP , "H_NEXT_NODUP" }, 328 { H_NOMORE , "H_NOMORE" }, 329 { H_OK , "H_OK" }, 330 { 0, NULL } 332 ENV * v ; 333 HASH_CURSOR * ; 335 v = dbc ->env; 336 = ( HASH_CURSOR *) dbc -> ; 338 `STAT_ULONG ("Buckvsg", -> buck ); 339 `STAT_ULONG ("Buckocked", -> lbuck ); 340 `STAT_ULONG ("Dui s offt", -> dup_off ); 341 `STAT_ULONG ("Cuduigth", -> dup_n ); 342 `STAT_ULONG ("Tٮ dui sgth", -> dup_ ); 343 `STAT_ULONG ("Byeded f܇dd", -> ek_size ); 344 `STAT_ULONG ("Pag which w", -> ek_found_ge ); 345 `STAT_ULONG ("Ord", -> d ); 346 `__db_ags ( v , NULL , -> ags , , NULL, "\tInternal Flags"); 347 } } 352 $__ham_ ( dbc , p , ags ) 353 DBC * dbc ; 354 * p ; 355 u_t32_t ags ; 357 `COMPQUIET ( p , NULL ); 358 `COMPQUIET ( ags , 0); 360 ( `__db__n_but ( dbc -> v )); 361 } } 373 $__ham_av ( dbc , mode , back , cook , look__max ) 374 DBC * dbc ; 375 db_lockmode_t mode ; 376 (* back `__P (( DBC *, PAGE *, *, *)); 377 * cook ; 378 look__max ; 380 DB * dbp ; 381 DBC * d ; 382 DB_MPOOLFILE * mpf ; 383 HASH_CURSOR * h ; 384 HKEYDATA * hk ; 385 db_pgno_t pgno , gno ; 386 did_put , i , t , t_t ; 387 u_t32_t buck , es_y ; 389 dbp = dbc ->dbp; 390 d = NULL ; 391 mpf = dbp ->mpf; 392 h = ( HASH_CURSOR *) dbc -> ; 393 t = 0; 404 buck = 0;; bucket++) { 419 i( look__max ) { 420 es_y = `__db_log2 ( buck + 1); 421 i( es_y > NCACHED || 422 h -> hdr -> es [ es_y ] == 0) 425 i( buck > h -> hdr -> max_buck ) 429 h -> buck = bucket; 430 h -> pgno =gn `BUCKET_TO_PAGE (h, buck ); 431 t = `__ham_g_age ( dbc , mode );et == 0; 432 t = `__ham_xt_age ( dbc , pgno )) { 441 i( `TYPE ( h -> ge = P_INVALID ) 443 pgno = `NEXT_PGNO ( h -> ge ); 451 i = 0; i < `NUM_ENT ( h -> ge ); i++) { 452 hk = ( HKEYDATA *) `P_ENTRY ( dbp , h -> ge , i ); 453 `HPAGE_PTYPE ( hk )) { 454 H_OFFDUP : 455 `memy (& gno , `HOFFDUP_PGNO ( hk ), 456 ( db_pgno_t )); 457 i(( t = `__dbc_wd ( dbc , 458 gno , NULL , & d )) != 0) 459 ( t ); 460 i(( t = `__bam_av ( d , 461 DB_LOCK_READ , gno , 462 back , cook )) 464 r ; 465 i(( t = `__dbc_o ( d )) != 0) 466 ( t ); 467 d = NULL ; 469 H_OFFPAGE : 477 `memy (& gno , `HOFFPAGE_PGNO ( hk ), 478 ( db_pgno_t )); 479 i(( t = `__db_av_big ( dbc , 480 gno , back , cook )) != 0) 481 r ; 483 H_KEYDATA : 484 H_DUPLICATE : 487 t = `__db_unknown_th ( 488 dbp -> v , "__ham_traverse"); 489 r ; 494 i(( t = `back ( dbc , 495 h -> ge , cook , & did_put )) != 0) 496 r ; 498 i( did_put ) 499 h -> ge = NULL ; 500 i( pgno = PGNO_INVALID ) 503 i( t != 0) 504 r ; 506 i( h -> ge ! NULL ) { 507 i(( t = `__memp_ut ( mpf , 508 dbc -> thad_fo , h -> ge , dbc-> iܙy )) != 0) 509 ( t ); 510 h -> ge = NULL ; 514 r : i( d ! NULL && 515 ( t_t = `__dbc_o ( d )!0 && t == 0) 516 t = t_t ; 517 ( t ); 518 } } @../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 ( v ) 30 ENV * v ; 32 `__db_rx ( v , 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 -> v )); 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 -> v )); 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 -> v )); 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 -> v )); 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 -> v )); 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 -> v )); 127 } } 130 $__hamc_cou ( dbc , ) 131 DBC * dbc ; 132 db_o_t * ; 134 `COMPQUIET ( , NULL ); 135 ( `__db_no_hash_am ( dbc -> v )); 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 -> v )); 144 } } 147 $__hamc_ ( dbc ) 148 DBC * dbc ; 150 ( `__db_no_hash_am ( dbc -> v )); 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 ( v , dbp ) 171 ENV * v ; 172 DB_DISTAB * dbp ; 174 `COMPQUIET ( v , NULL ); 175 `COMPQUIET ( dbp , NULL ); 177 } } 180 $__ham__cov ( v , dbp ) 181 ENV * v ; 182 DB_DISTAB * dbp ; 184 `COMPQUIET ( v , NULL ); 185 `COMPQUIET ( dbp , NULL ); 187 } } 190 $__ham_ma2pgt ( dbp , vdp , hma , ags , pgt ) 191 DB * dbp ; 192 VRFY_DBINFO * vdp ; 193 HMETA * hma ; 194 u_t32_t ags ; 195 DB * pgt ; 197 `COMPQUIET ( vdp , NULL ); 198 `COMPQUIET ( hma , NULL ); 199 `COMPQUIET ( ags , 0); 200 `COMPQUIET ( pgt , NULL ); 201 ( `__db_no_hash_am ( dbp -> v )); 202 } } 205 $__ham_machk ( dbp , me , hashm ) 206 DB * dbp ; 207 cڡ * me ; 208 HMETA * hashm ; 210 `COMPQUIET ( me , NULL ); 211 `COMPQUIET ( hashm , NULL ); 212 ( `__db_no_hash_am ( dbp -> v )); 213 } } 216 $__ham_magroup_42_cov ( v , db , lp , , fo ) 217 ENV * v ; 218 DBT * db ; 219 DB_LSN * lp ; 220 db_cs ; 221 * fo ; 223 `COMPQUIET ( db , NULL ); 224 `COMPQUIET ( lp , NULL ); 225 `COMPQUIET ( , 0); 226 `COMPQUIET ( fo , NULL ); 227 ( `__db_no_hash_am ( v )); 228 } } 231 $__ham_msw ( v , pg ) 232 ENV * v ; 233 * pg ; 235 `COMPQUIET ( pg , NULL ); 236 ( `__db_no_hash_am ( v )); 237 } } 240 $__ham_grouoc_42_cov ( v , db , lp , , fo ) 241 ENV * v ; 242 DBT * db ; 243 DB_LSN * lp ; 244 db_cs ; 245 * fo ; 247 `COMPQUIET ( db , NULL ); 248 `COMPQUIET ( lp , NULL ); 249 `COMPQUIET ( , 0); 250 `COMPQUIET ( fo , NULL ); 251 ( `__db_no_hash_am ( v )); 252 } } 255 $__ham_w_fe ( dbp , , txn , fhp , me ) 256 DB * dbp ; 257 DB_THREAD_INFO * ; 258 DB_TXN * txn ; 259 DB_FH * fhp ; 260 cڡ * me ; 262 `COMPQUIET ( , NULL ); 263 `COMPQUIET ( txn , NULL ); 264 `COMPQUIET ( fhp , NULL ); 265 `COMPQUIET ( me , NULL ); 266 ( `__db_no_hash_am ( dbp -> v )); 267 } } 270 $__ham_w_subdb ( mdbp , dbp , , txn ) 271 DB * mdbp , * dbp ; 272 DB_THREAD_INFO * ; 273 DB_TXN * txn ; 275 `COMPQUIET ( dbp , NULL ); 276 `COMPQUIET ( txn , NULL ); 277 `COMPQUIET ( , NULL ); 278 ( `__db_no_hash_am ( mdbp -> v )); 279 } } 282 $__ham_ݒ ( dbp , , txn , me , ba_pgno , ags ) 283 DB * dbp ; 284 DB_THREAD_INFO * ; 285 DB_TXN * txn ; 286 cڡ * me ; 287 db_pgno_t ba_pgno ; 288 u_t32_t ags ; 290 `COMPQUIET ( , NULL ); 291 `COMPQUIET ( txn , NULL ); 292 `COMPQUIET ( me , NULL ); 293 `COMPQUIET ( ba_pgno , 0); 294 `COMPQUIET ( ags , 0); 295 ( `__db_no_hash_am ( dbp -> v )); 296 } } 299 $__ham_pg ( dbp , pg , , cook ) 300 DB * dbp ; 301 db_pgno_t pg ; 302 * ; 303 DBT * cook ; 305 `COMPQUIET ( pg , 0); 306 `COMPQUIET ( , NULL ); 307 `COMPQUIET ( cook , NULL ); 308 ( `__db_no_hash_am ( dbp -> v )); 309 } } 312 $__ham_pgout ( dbp , pg , , cook ) 313 DB * dbp ; 314 db_pgno_t pg ; 315 * ; 316 DBT * cook ; 318 `COMPQUIET ( pg , 0); 319 `COMPQUIET ( , NULL ); 320 `COMPQUIET ( cook , NULL ); 321 ( `__db_no_hash_am ( dbp -> v )); 322 } } 325 $__ham_t_curs ( dbc ) 326 DBC * dbc ; 328 () `__db_no_hash_am ( dbc -> v ); 329 } } 332 $__ham_quick_de ( dbc ) 333 DBC * dbc ; 335 ( `__db_no_hash_am ( dbc -> v )); 336 } } 339 $__ham_aim ( dbp , , txn ) 340 DB * dbp ; 341 DB_THREAD_INFO * ; 342 DB_TXN * txn ; 344 `COMPQUIET ( txn , NULL ); 345 `COMPQUIET ( , NULL ); 346 ( `__db_no_hash_am ( dbp -> v )); 347 } } 350 $__ham_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 351 DB * dbp ; 352 VRFY_DBINFO * vdp ; 353 db_pgno_t pgno ; 354 PAGE * h ; 355 * hd ; 356 (* back `__P ((*, const *)); 357 u_t32_t ags ; 359 `COMPQUIET ( vdp , NULL ); 360 `COMPQUIET ( pgno , 0); 361 `COMPQUIET ( h , NULL ); 362 `COMPQUIET ( hd , NULL ); 363 `COMPQUIET ( back , NULL ); 364 `COMPQUIET ( ags , 0); 365 ( `__db_no_hash_am ( dbp -> v )); 366 } } 369 $__ham_ ( dbc , p , ags ) 370 DBC * dbc ; 371 * p ; 372 u_t32_t ags ; 374 `COMPQUIET ( p , NULL ); 375 `COMPQUIET ( ags , 0); 376 ( `__db_no_hash_am ( dbc -> v )); 377 } } 380 $__ham__t ( dbc , ags ) 381 DBC * dbc ; 382 u_t32_t ags ; 384 `COMPQUIET ( ags , 0); 385 ( `__db_no_hash_am ( dbc -> v )); 386 } } 389 $__ham_un ( dbc , coup ) 390 DBC * dbc ; 391 u_t32_t * coup ; 393 `COMPQUIET ( dbc , NULL ); 394 `COMPQUIET ( coup , NULL ); 395 ( `__db_no_hash_am ( dbc -> v )); 396 } } 399 $__ham_vrfy ( dbp , vdp , h , pgno , ags ) 400 DB * dbp ; 401 VRFY_DBINFO * vdp ; 402 PAGE * h ; 403 db_pgno_t pgno ; 404 u_t32_t ags ; 406 `COMPQUIET ( vdp , NULL ); 407 `COMPQUIET ( h , NULL ); 408 `COMPQUIET ( pgno , 0); 409 `COMPQUIET ( ags , 0); 410 ( `__db_no_hash_am ( dbp -> v )); 411 } } 414 $__ham_vrfy_hashg ( dbp , rs , m , thisbuck , pgno , ags , hfunc ) 415 DB * dbp ; 416 u_t32_t rs ; 417 HMETA * m ; 418 u_t32_t thisbuck ; 419 db_pgno_t pgno ; 420 u_t32_t ags ; 421 $u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 423 `COMPQUIET ( rs , 0); 424 `COMPQUIET ( m , NULL ); 425 `COMPQUIET ( thisbuck , 0); 426 `COMPQUIET ( pgno , 0); 427 `COMPQUIET ( ags , 0); 428 `COMPQUIET ( hfunc , NULL ); 429 ( `__db_no_hash_am ( dbp -> v )); 430 } } 433 $__ham_vrfy_ma ( dbp , vdp , m , pgno , ags ) 434 DB * dbp ; 435 VRFY_DBINFO * vdp ; 436 HMETA * m ; 437 db_pgno_t pgno ; 438 u_t32_t ags ; 440 `COMPQUIET ( vdp , NULL ); 441 `COMPQUIET ( m , NULL ); 442 `COMPQUIET ( pgno , 0); 443 `COMPQUIET ( ags , 0); 444 ( `__db_no_hash_am ( dbp -> v )); 445 } } 448 $__ham_vrfy_ruu ( dbp , vdp , ma_pgno , ags ) 449 DB * dbp ; 450 VRFY_DBINFO * vdp ; 451 db_pgno_t ma_pgno ; 452 u_t32_t ags ; 454 `COMPQUIET ( vdp , NULL ); 455 `COMPQUIET ( ma_pgno , 0); 456 `COMPQUIET ( ags , 0); 457 ( `__db_no_hash_am ( dbp -> v )); 458 } } @../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 ENV * v ; 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 v = dbp ->env; 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 ( v , _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 ENV * v ; 120 HMETA30 * ma ; 121 db_pgno_t ϡ_au , ϡ_desed ; 122 t ; 123 size_t nw ; 124 u_t32_t gesize ; 126 v = dbp ->env; 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 v , fhp , ϡ_desed , gesize , 0)) != 0) 153 ( t ); 154 i(( t = `__os_wre ( v , 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 HMETA30 * dma ; 178 HMETA31 * wma ; 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 DBC * dbc ; 309 t , t_t ; 311 `COMPQUIET ( _me , NULL ); 312 `COMPQUIET ( ags , 0); 313 `COMPQUIET ( fhp , NULL ); 315 i(( t = `__db_curs ( dbp , NULL , NULL, & dbc , 0)) != 0) 316 ( t ); 317 * dtyp = 1; 318 t = `__ham_st_ge ( dbc , NULL , h ); 319 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 320 t = t_t ; 322 ( t ); 323 } } @../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 ENV * v ; 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 v = dbp ->env; 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 (( v , 80 ( u_lg ) pgno )); 86 isbad = 1; 87 r ; 91 i( m -> max_buck > vdp -> ϡ_pgno ) { 92 `EPRINT (( v , 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 (( v , 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 (( v , 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 (( v , 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 (( v , 159 ( u_lg ) pgno , i )); 160 isbad = 1; 164 r : i(( t_t = `__db_vrfy_puagefo ( v , 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 ENV * v ; 188 VRFY_PAGEINFO * p ; 189 u_t32_t t , himk , nd ; 190 db_dx_t * p ; 191 isbad , t , t_t ; 193 v = dbp ->env; 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 ( v , "__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 (( v , 227 ( u_lg ) pgno , (u_lg) t )); 228 isbad = 1; 229 r ; 230 } i( nd > himk ) { 231 `EPRINT (( v , 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 && ( t = 246 `__ham_vify_s܋d_ge ( dbp , vdp -> thad_fo , NULL , h )) != 0) 247 isbad = 1; 249 r : i(( t_t = 250 `__db_vrfy_puagefo ( v , 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 HOFFDUP hod ; 269 HOFFPAGE h ; 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 -> v , 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 -> v , 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 -> v , 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 -> v , 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 -> v , 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 -> v , 373 ( u_lg ) p -> pgno , (u_lg) i )); 374 t = DB_VERIFY_BAD ; 378 r : i(( t_t = 379 `__db_vrfy_puagefo ( dbp -> v , 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 , 413 vdp -> thad_fo , ma_pgno , & p )) != 0) 414 ( t ); 415 i( p != 0) { 416 `EPRINT (( dbp -> v , 418 ( u_lg ) ma_pgno )); 419 ( DB_VERIFY_BAD ); 421 i(( t = `__db_vrfy_pgt_c ( pgt , 422 vdp -> thad_fo , ma_pgno )) != 0) 423 ( t ); 426 i(( t = `__memp_fg ( mpf , 427 & ma_pgno , vdp -> thad_fo , NULL , 0, & m )) != 0) 428 ( t ); 431 buck = 0; buck < m -> max_buck ; bucket++) 432 i(( t = 433 `__ham_vrfy_buck ( dbp , vdp , m , buck , ags )) != 0) { 434 i( t = DB_VERIFY_BAD ) 435 isbad = 1; 437 r ; 453 buck = m -> max_buck + 1; es_y = `__db_log2 (bucket + 1), 454 es_y < NCACHED && m -> es [es_y] !0; buck ++) { 455 pgno = `BS_TO_PAGE ( buck , m -> es ); 456 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 457 r ; 460 `F_CLR ( p , VRFY_IS_ALLZEROES ); 463 i( p -> ty = P_INVALID ) { 464 i(( t = `__db_vrfy_puagefo ( dbp -> v , 465 vdp , p )) != 0) 466 r ; 470 i( p -> ty ! P_HASH &&->ty ! P_HASH_UNSORTED ) { 471 `EPRINT (( dbp -> v , 473 ( u_lg ) pgno , (u_lg) buck )); 474 isbad = 1; 475 } i( p -> s != 0) { 476 `EPRINT (( dbp -> v , 478 ( u_lg ) pgno , (u_lg) buck )); 479 isbad = 1; 481 i(( t = `__db_vrfy_pgt_g ( pgt , 482 vdp -> thad_fo , pgno , & p )) != 0) 483 r ; 484 i( p != 0) { 485 `EPRINT (( dbp -> v , 487 ( u_lg ) pgno )); 488 isbad = 1; 490 i(( t = `__db_vrfy_pgt_c ( pgt , 491 vdp -> thad_fo , pgno )) != 0) 492 r ; 493 i(( t = `__db_vrfy_puagefo ( dbp -> v , 494 vdp , p )) != 0) 495 r ; 501 () `__db_vrfy_puagefo ( dbp -> v , vdp , p ); 502 r ; 505 r : i(( t_t = `__memp_ut ( mpf , vdp -> thad_fo , m , dbp -> iܙy )) != 0) 506 ( t_t ); 507 i( h ! NULL && 508 ( t_t = `__memp_ut ( mpf , vdp -> thad_fo , h , dbp -> iܙy )) != 0) 509 ( t_t ); 510 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 511 } } 518 $__ham_vrfy_buck ( dbp , vdp , m , buck , ags ) 519 DB * dbp ; 520 VRFY_DBINFO * vdp ; 521 HMETA * m ; 522 u_t32_t buck , ags ; 524 ENV * v ; 525 HASH * hashp ; 526 VRFY_CHILDINFO * chd ; 527 VRFY_PAGEINFO * m , * p ; 528 t , t_t , isbad , p ; 529 db_pgno_t pgno , xt_pgno ; 530 DBC * cc ; 531 `u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 533 v = dbp ->env; 534 isbad = 0; 535 p = NULL ; 536 cc = NULL ; 538 hashp = dbp -> h_ ; 539 i( hashp ! NULL && hashp-> h_hash != NULL) 540 hfunc = hashp -> h_hash ; 542 hfunc = __ham_func5 ; 544 i(( t = `__db_vrfy_ggefo ( vdp , `PGNO ( m ), & m )) != 0) 545 ( t ); 548 pgno = `BS_TO_PAGE ( buck , m -> es ); 550 i(( t = `__db_vrfy_ggefo ( vdp , pgno , & p )) != 0) 551 r ; 554 i( pgno > vdp -> ϡ_pgno || 555 ( p -> ty ! P_HASH &&->ty ! P_HASH_UNSORTED )) { 556 `EPRINT (( v , 558 ( u_lg ) pgno , (u_lg) buck )); 560 isbad = 1; 561 r ; 564 i( p -> ev_pgno ! PGNO_INVALID ) { 565 `EPRINT (( v , 567 ( u_lg ) pgno , (u_lg) buck )); 568 isbad = 1; 574 ags | `F_ISSET ( m , VRFY_HAS_DUPS ? DB_ST_DUPOK : 0; 575 ags | `F_ISSET ( m , VRFY_HAS_DUPSORT ? DB_ST_DUPSORT : 0; 580 i(! `LF_ISSET ( DB_SALVAGE )) 581 `__db_vrfy_ru_edback ( dbp , vdp ); 583 i(( t = `__db_vrfy_pgt_g ( vdp -> pgt , 584 vdp -> thad_fo , pgno , & p )) != 0) 585 r ; 586 i( p != 0) { 587 `EPRINT (( v , 589 ( u_lg ) pgno )); 590 isbad = 1; 592 r ; 593 } i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , 594 vdp -> thad_fo , pgno )) != 0) 595 r ; 607 `F_CLR ( p , VRFY_IS_ALLZEROES ); 610 i( `F_ISSET ( p , VRFY_HAS_DUPS ) && 611 ! `F_ISSET ( m , VRFY_HAS_DUPS )) { 612 `EPRINT (( v , 614 ( u_lg ) pgno )); 615 isbad = 1; 622 i( `F_ISSET ( m , VRFY_HAS_DUPSORT ) && 623 `F_ISSET ( p , VRFY_DUPS_UNSORTED )) { 624 `EPRINT (( v , 626 ( u_lg ) pgno )); 627 isbad = 1; 631 i(( t = `__db_vrfy_chdcurs ( vdp , & cc )) != 0) 632 r ; 633 t = `__db_vrfy_cct ( cc , p -> pgno , & chd );et == 0; 634 t = `__db_vrfy_cext ( cc , & chd )) 635 i( chd -> ty = V_OVERFLOW ) { 636 i(( t = `__db_vrfy_ov_ruu ( dbp , vdp , 637 chd -> pgno , chd-> , 638 ags | DB_ST_OVFL_LEAF )) != 0) { 639 i( t = DB_VERIFY_BAD ) 640 isbad = 1; 642 r ; 644 } i( chd -> ty = V_DUPLICATE ) { 645 i(( t = `__db_vrfy_duy ( dbp , 646 vdp , chd -> pgno , ags )) != 0) { 647 isbad = 1; 650 i(( t = `__bam_vrfy_sub ( dbp , vdp , 651 chd -> pgno , NULL , NULL, 652 ags | DB_ST_RECNUM | DB_ST_DUPSET | DB_ST_TOPLEVEL , 653 NULL , NULL, NULL)) != 0) { 654 i( t = DB_VERIFY_BAD ) 655 isbad = 1; 657 r ; 660 i(( t = `__db_vrfy_cco ( cc )) != 0) 661 r ; 662 cc = NULL ; 665 i( isbad =0 && ! `LF_ISSET ( DB_NOORDERCHK ) && 666 ( t = `__ham_vrfy_hashg ( dbp , p -> s , 667 m , buck , pgno , ags , hfunc )) != 0) { 668 i( t = DB_VERIFY_BAD ) 669 isbad = 1; 671 r ; 674 xt_pgno = p ->next_pgno; 675 t = `__db_vrfy_puagefo ( v , vdp , p ); 677 p = NULL ; 678 i( t != 0) 679 r ; 681 i( xt_pgno = PGNO_INVALID ) 685 i(! `IS_VALID_PGNO ( xt_pgno )) { 686 `EPRINT (( v , 688 ( u_lg ) pgno )); 689 isbad = 1; 690 r ; 693 i(( t = `__db_vrfy_ggefo ( vdp , xt_pgno , & p )) != 0) 694 r ; 696 i( p -> ev_pgno ! pgno ) { 697 `EPRINT (( v , 699 ( u_lg ) xt_pgno )); 700 isbad = 1; 702 pgno = xt_pgno ; 705 r : i( cc ! NULL && (( t_t = `__db_vrfy_cco (cc)!0&& t == 0) 706 t = t_t ; 707 i( m ! NULL && (( t_t = 708 `__db_vrfy_puagefo ( v , vdp , m )!0&& t == 0) 709 t = t_t ; 710 i( p ! NULL && (( t_t = 711 `__db_vrfy_puagefo ( v , vdp , p )!0&& t == 0) 712 t = t_t ; 713 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 714 } } 725 $__ham_vrfy_hashg ( dbp , rs , m , thisbuck , pgno , ags , hfunc ) 726 DB * dbp ; 727 u_t32_t rs ; 728 HMETA * m ; 729 u_t32_t thisbuck ; 730 db_pgno_t pgno ; 731 u_t32_t ags ; 732 $u_t32_t (* hfunc `__P (( DB *, cڡ *, u_t32_t )); 734 DBT dbt ; 735 DB_MPOOLFILE * mpf ; 736 DB_THREAD_INFO * ; 737 PAGE * h ; 738 db_dx_t i ; 739 t , t_t , isbad ; 740 u_t32_t hv , buck ; 742 mpf = dbp ->mpf; 743 t = isbad = 0; 745 `memt (& dbt , 0, ( DBT )); 746 `F_SET (& dbt , DB_DBT_REALLOC ); 747 `ENV_GET_THREAD_INFO ( dbp -> v , ); 749 i(( t = `__memp_fg ( mpf , & pgno , , NULL , 0, & h )) != 0) 750 ( t ); 752 i = 0; i < rs ; i += 2) { 761 i(( t = `__db_t ( dbp , , 762 NULL , h , i , & dbt , NULL, NULL)) != 0) 763 r ; 764 hv = `hfunc ( dbp , dbt . da , dbt. size ); 766 buck = hv & m -> high_mask ; 767 i( buck > m -> max_buck ) 768 buck = buck & m -> low_mask ; 770 i( buck ! thisbuck ) { 771 `EPRINT (( dbp -> v , 773 ( u_lg ) pgno , (u_lg) i )); 774 isbad = 1; 778 r : i( dbt . da ! NULL ) 779 `__os_u ( dbp -> v , dbt . da ); 780 i(( t_t = `__memp_ut ( mpf , , h , dbp -> iܙy )) != 0) 781 ( t_t ); 783 (( t =0 && isbad =1? DB_VERIFY_BAD :et); 784 } } 795 $__ham_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 796 DB * dbp ; 797 VRFY_DBINFO * vdp ; 798 db_pgno_t pgno ; 799 PAGE * h ; 800 * hd ; 801 (* back `__P ((*, const *)); 802 u_t32_t ags ; 804 DBT dbt , key_dbt , unkdbt ; 805 db_pgno_t dpgno ; 806 t , r_t , t_t ; 807 u_t32_t himk , i ; 808 u_t8_t * hk , * p ; 809 * buf , * key_buf ; 810 db_dx_t dn , n , ; 812 `memt (& dbt , 0, ( DBT )); 813 dbt . ags = DB_DBT_REALLOC ; 815 `DB_INIT_DBT ( unkdbt , "UNKNOWN", ("UNKNOWN") - 1); 817 r_t = 0; 823 i(( t = `__os_mloc ( dbp -> v , dbp-> pgsize , & buf )) != 0) 824 ( t ); 826 himk = dbp -> pgsize ; 827 i = 0;; i++) { 829 i(! `LF_ISSET ( DB_AGGRESSIVE && i > `NUM_ENT ( h )) 833 t = `__db_vrfy_pem ( dbp , 834 h , pgno , i , 0, ags , & himk , NULL ); 836 i( t = DB_VERIFY_FATAL ) 839 i( t == 0) { 841 n = `LEN_HITEM ( dbp , h , dbp-> pgsize , i ); 842 hk = `P_ENTRY ( dbp , h , i ); 843 i( n =0 || > dbp -> pgsize || 844 ( u_t32_t )( hk + n - ( u_t8_t *) h ) > 845 dbp -> pgsize ) { 847 r_t = DB_VERIFY_BAD ; 850 `HPAGE_PTYPE ( hk )) { 851 H_KEYDATA : 853 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , i ); 854 keyda : `memy ( buf , `HKEYDATA_DATA ( hk ), n ); 855 dbt . size = n ; 856 dbt . da = buf ; 857 i(( t = `__db_vrfy_dbt (& dbt , 858 0, " ", hd , back , 0, vdp )) != 0) 859 r_t = t ; 861 H_OFFPAGE : 862 i( n < HOFFPAGE_SIZE ) { 863 r_t = DB_VERIFY_BAD ; 866 `memy (& dpgno , 867 `HOFFPAGE_PGNO ( hk ), ( dpgno )); 868 i(( t = `__db__goff ( dbp , vdp , 869 dpgno , & dbt , & buf , ags )) != 0) { 870 r_t = t ; 871 () `__db_vrfy_dbt (& unkdbt , 0, " ", 872 hd , back , 0, vdp ); 874 } i(( t = `__db_vrfy_dbt (& dbt , 875 0, " ", hd , back , 0, vdp )) != 0) 876 r_t = t ; 878 H_OFFDUP : 879 i( n < HOFFDUP_SIZE ) { 880 r_t = DB_VERIFY_BAD ; 883 `memy (& dpgno , 884 `HOFFDUP_PGNO ( hk ), ( dpgno )); 886 i(! `IS_VALID_PGNO ( dpgno || ( i % 2 == 0)) { 887 i(( t = 888 `__db_vrfy_dbt (& unkdbt , 0, " ", 889 hd , back , 0, vdp )) != 0) 890 r_t = t ; 891 } i(( t = `__db_lvage_due ( dbp , 892 vdp , dpgno , & dbt , hd , back , 893 ags | DB_SA_SKIPFIRSTKEY )) != 0) 894 r_t = t ; 896 H_DUPLICATE : 902 n = `LEN_HKEYDATA ( dbp , h , dbp-> pgsize , i ); 910 i( i % 2 == 0) { 911 r_t = t ; 912 i( `LF_ISSET ( DB_AGGRESSIVE )) 913 keyda ; 922 i( n < 923 `HKEYDATA_SIZE (2 * ( db_dx_t ))) { 924 r_t = DB_VERIFY_BAD ; 932 `memt (& key_dbt , 0, (key_dbt)); 933 i(( t = `__os_mloc ( 934 dbp -> v , dbt . size , & key_buf )) != 0) 935 ( t ); 936 `memy ( key_buf , buf , dbt . size ); 937 key_dbt . da = key_buf ; 938 key_dbt . size = dbt .size; 939 key_dbt . ags = DB_DBT_USERMEM ; 942 = 0;+ ( db_dx_t < n ; 943 + dn + 2 * ( db_dx_t )) { 950 i( != 0) { 951 i(( t = `__db_vrfy_dbt ( 952 & key_dbt , 0, " ", hd , 953 back , 0, vdp )) != 0) 954 r_t = t ; 956 p = `HKEYDATA_DATA ( hk + ; 957 `memy (& dn , p , ( db_dx_t )); 958 p +( db_dx_t ); 963 i( dn + + ( db_dx_t ) > 964 n ) { 965 dn = n - 966 ( + ( db_dx_t )); 967 r_t = DB_VERIFY_BAD ; 969 `memy ( buf , p , dn ); 970 dbt . size = dn ; 971 dbt . da = buf ; 972 i(( t = `__db_vrfy_dbt (& dbt , 0, " ", 973 hd , back , 0, vdp )) != 0) 974 r_t = t ; 976 `__os_ ( dbp -> v , key_buf ); 979 i(! `LF_ISSET ( DB_AGGRESSIVE )) 981 r_t = DB_VERIFY_BAD ; 987 `__os_ ( dbp -> v , buf ); 988 i(( t_t = `__db_lvage_mkde ( vdp , pgno )) != 0) 989 ( t_t ); 990 (( t =0 && r_t != 0) ?rr_ret :et); 991 } } 1002 $__ham_ma2pgt ( dbp , vdp , hma , ags , pgt ) 1003 DB * dbp ; 1004 VRFY_DBINFO * vdp ; 1005 HMETA * hma ; 1006 u_t32_t ags ; 1007 DB * pgt ; 1009 DB_MPOOLFILE * mpf ; 1010 DB_THREAD_INFO * ; 1011 PAGE * h ; 1012 db_pgno_t pgno ; 1013 u_t32_t buck , tpgs ; 1014 t , v ; 1020 `COMPQUIET ( ags , 0); 1021 = vdp -> thad_fo ; 1023 `DB_ASSERT ( dbp -> v , pgt ! NULL ); 1025 mpf = dbp ->mpf; 1026 tpgs = 0; 1032 buck = 0; buck < hma -> max_buck ; bucket++) { 1033 pgno = `BS_TO_PAGE ( buck , hma -> es ); 1042 i(( t = 1043 `__memp_fg ( mpf , & pgno , , NULL , 0, & h )) != 0) 1044 ( t ); 1045 i( `TYPE ( h = P_HASH || TYPE(h= P_HASH_UNSORTED ) { 1051 i(++ tpgs > vdp -> ϡ_pgno ) { 1052 () `__memp_ut ( mpf , 1053 , h , dbp -> iܙy ); 1054 ( DB_VERIFY_BAD ); 1056 i(( t = `__db_vrfy_pgt_c ( pgt , 1057 vdp -> thad_fo , pgno )) != 0) { 1058 () `__memp_ut ( mpf , 1059 , h , dbp -> iܙy ); 1060 ( t ); 1063 pgno = `NEXT_PGNO ( h ); 1065 pgno = PGNO_INVALID ; 1067 i(( t = `__memp_ut ( mpf , , h , dbp -> iܙy )) != 0) 1068 ( t ); 1071 i(! `IS_VALID_PGNO ( pgno ) || 1072 pgno = PGNO_INVALID ) 1079 i(( t = `__db_vrfy_pgt_g ( pgt , 1080 vdp -> thad_fo , pgno , & v )) != 0) 1081 ( t ); 1082 i( v != 0) 1087 } } 1096 $__ham_dups_uns܋d ( dbp , buf , n ) 1097 DB * dbp ; 1098 u_t8_t * buf ; 1099 u_t32_t n ; 1101 DBT a , b ; 1102 db_dx_t offt , dn ; 1103 (* func `__P (( DB *, cڡ DBT *, const DBT *)); 1105 `memt (& a , 0, ( DBT )); 1106 `memt (& b , 0, ( DBT )); 1108 func = ( dbp -> dup_com = NULL ? __bam_defcmp : dbp->dup_compare; 1115 offt = 0; off< n ; off+ `DUP_SIZE ( dn )) { 1116 `memy (& dn , buf + offt , ( db_dx_t )); 1117 b . da = buf + offt + ( db_dx_t ); 1118 b . size = dn ; 1120 i( a . da ! NULL && `func ( dbp , &a, & b ) > 0) 1123 a . da = b .data; 1124 a . size = b .size; 1128 } } @../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 ( v , hdr , db_ch , chksum , da , da_n , is_hmac ) 160 ENV * v ; 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 ( v , 182 ( EINVAL ); 184 sum_n = ( u_t32_t ); 185 mac_key = NULL ; 187 i( db_ch = NULL ) { 188 `__db_rx ( v , 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); \ 96 w = `r (w,30); ) 97 #R1 ( v , w , x , y , z , i z+=((w&(x^y))^y)+ `blk (i)+0x5A827999+ `r (v,5); \ 98 w = `r (w,30); ) 99 #R2 ( v , w , x , y , z , i z+=(w^x^y)+ `blk (i)+0x6ED9EBA1+ `r (v,5);w(w,30); ) 100 #R3 ( v , w , x , y , z , i z+=(((w|x)&y)|(w&x))+ `blk (i)+0x8F1BBCDC+ `r (v,5); \ 101 w = `r (w,30); ) 102 #R4 ( v , w , x , y , z , i z+=(w^x^y)+ `blk (i)+0xCA62C1D6+ `r (v,5);w(w,30); ) 104 #ifde VERBOSE 105 __db_SHAPrtCڋxt __P (( SHA1_CTX *, *)); 107 $__db_SHAPrtCڋxt ( cڋxt , msg ) 108 SHA1_CTX * cڋxt ; 109 * msg ; 111 `tf ("%s (%d,%d) %x %x %x %x %x\n", 112 msg , 113 cڋxt -> cou [0], context->count[1], 114 cڋxt -> e [0], 115 cڋxt -> e [1], 116 cڋxt -> e [2], 117 cڋxt -> e [3], 118 cڋxt -> e [4]); 119 } } 130 $__db_SHA1Tnsfm ( e , bufr ) 131 u_t32_t * e ; 132 * bufr ; 134 u_t32_t a , b , c , d , e ; 136 c [64]; 137 u_t32_t l [16]; 138 } tCHAR64LONG16 ; 139 CHAR64LONG16 * block ; 140 is_bigdn ; 141 #ifde SHA1HANDSOFF 142 wka [64]; 144 block = ( CHAR64LONG16 *) wka ; 145 `memy ( block , bufr , 64); 147 block = ( CHAR64LONG16 *) bufr ; 149 is_bigdn = `__db_isbigdn (); 152 a = e [0]; 153 b = e [1]; 154 c = e [2]; 155 d = e [3]; 156 e = e [4]; 158 `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); 159 `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); 160 `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); 161 `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); 162 `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); 163 `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); 164 `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); 165 `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); 166 `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); 167 `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); 168 `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); 169 `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); 170 `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); 171 `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); 172 `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); 173 `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); 174 `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); 175 `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); 176 `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); 177 `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); 179 e [0] + a ; 180 e [1] + b ; 181 e [2] + c ; 182 e [3] + d ; 183 e [4] + e ; 185 a = b = c = d = e = 0; 186 } } 197 $__db_SHA1In ( cڋxt ) 198 SHA1_CTX * cڋxt ; 201 cڋxt -> e [0] = 0x67452301; 202 cڋxt -> e [1] = 0xEFCDAB89; 203 cڋxt -> e [2] = 0x98BADCFE; 204 cڋxt -> e [3] = 0x10325476; 205 cڋxt -> e [4] = 0xC3D2E1F0; 206 cڋxt -> cou [0] = context->count[1] = 0; 207 } } 219 $__db_SHA1Upde ( cڋxt , da , n ) 220 SHA1_CTX * cڋxt ; 221 * da ; 222 size_t n ; 224 u_t32_t i , j ; 226 #ifde VERBOSE 227 `__db_SHAPrtCڋxt ( cڋxt , "before"); 229 j = ( cڋxt -> cou [0] >> 3) & 63; 230 i(( cڋxt -> cou [0] +( u_t32_t ) n << 3) < (len << 3)) 231 cڋxt -> cou [1]++; 232 cڋxt -> cou [1] +( u_t32_t )( n >> 29); 233 i(( j + n ) > 63) { 234 `memy (& cڋxt -> bufr [ j ], da , ( i = 64-j)); 235 `__db_SHA1Tnsfm ( cڋxt -> e , cڋxt-> bufr ); 236 ; i + 63 < n ; i += 64) { 237 `__db_SHA1Tnsfm ( cڋxt -> e , & da [ i ]); 239 j = 0; 241 i = 0; 242 `memy (& cڋxt -> bufr [ j ], & da [ i ], n - i); 243 #ifde VERBOSE 244 `__db_SHAPrtCڋxt ( cڋxt , "after "); 246 } } 257 $__db_SHA1F ( dige , cڋxt ) 258 * dige ; 259 SHA1_CTX * cڋxt ; 261 u_t32_t i ; 262 fcou [8]; 264 i = 0; i < 8; i++) { 265 fcou [ i ] = ()(( cڋxt -> cou [(i >= 4 ? 0 : 1)] 266 >> ((3-( i & 3)) * 8) ) & 255); 268 `__db_SHA1Upde ( cڋxt , (*)"\200", 1); 269 ( cڋxt -> cou [0] & 504) != 448) { 270 `__db_SHA1Upde ( cڋxt , (*)"\0", 1); 272 `__db_SHA1Upde ( cڋxt , fcou , 8); 274 i = 0; i < 20; i++) { 275 dige [ i ] = () 276 (( cڋxt -> e [ i >>2] >> ((3-(i & 3)) * 8) ) & 255); 279 i = 0; 280 `memt ( cڋxt -> bufr , 0, 64); 281 `memt ( cڋxt -> e , 0, 20); 282 `memt ( cڋxt -> cou , 0, 8); 283 `memt ( fcou , 0, 8); 284 #ifde SHA1HANDSOFF 285 `__db_SHA1Tnsfm ( cڋxt -> e , cڋxt-> bufr ); 287 } } @../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_MODE_600 )) != 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 ) && (__SUNPRO_CC <= 0x560) 20 #SWIGTEMPLATEDISAMBIGUATOR me ) 21 #i defed ( __HP_aCC ) 24 #SWIGTEMPLATEDISAMBIGUATOR me ) 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 && !defed( _CRT_SECURE_NO_DEPRECATE ) 106 #unde _CRT_SECURE_NO_DEPRECATE 107 #_CRT_SECURE_NO_DEPRECATE ) 111 #i! defed ( SWIG_NO_SCL_SECURE_NO_DEPRECATE && defed( _MSC_VER && !defed( _SCL_SECURE_NO_DEPRECATE ) 112 #_SCL_SECURE_NO_DEPRECATE ) 118 #i defed ( __GNUC__ && !defed( __INTELC__ ) 119 t__t64 ; 123 #i defed ( __x86_64 ) 124 #ifde _LP64 125 #unde _LP64 129 ~<jni.h > 130 ~<dlib.h > 131 ~<rg.h > 136 mSWIG_JavaOutOfMemyE = 1, 137 mSWIG_JavaIOExi , 138 mSWIG_JavaRuimeExi , 139 mSWIG_JavaIndexOutOfBoundsExi , 140 mSWIG_JavaArhmicExi , 141 mSWIG_JavaIegArgumtExi , 142 mSWIG_JavaNuPorExi , 143 mSWIG_JavaDePuVtu , 144 mSWIG_JavaUnknownE 145 } tSWIG_JavaExiCodes ; 148 SWIG_JavaExiCodes mcode ; 149 cڡ * mjava_exi ; 150 } tSWIG_JavaExis_t ; 153 SWIGUNUSED $SWIG_JavaThrowExi ( JNIEnv * jv , SWIG_JavaExiCodes code , cڡ * msg ) { 154 jass exp ; 155 cڡ SWIG_JavaExis_t java_exis [] = { 156 { SWIG_JavaOutOfMemyE , "java/lang/OutOfMemoryError" }, 157 { SWIG_JavaIOExi , "java/io/IOException" }, 158 { SWIG_JavaRuimeExi , "java/lang/RuntimeException" }, 159 { SWIG_JavaIndexOutOfBoundsExi , "java/lang/IndexOutOfBoundsException" }, 160 { SWIG_JavaArhmicExi , "java/lang/ArithmeticException" }, 161 { SWIG_JavaIegArgumtExi , "java/lang/IllegalArgumentException" }, 162 { SWIG_JavaNuPorExi , "java/lang/NullPointerException" }, 163 { SWIG_JavaDePuVtu , "java/lang/RuntimeException" }, 164 { SWIG_JavaUnknownE , "java/lang/UnknownError" }, 165 { ( SWIG_JavaExiCodes )0, "java/lang/UnknownError" } }; 166 cڡ SWIG_JavaExis_t * ex_r = java_exis ; 168 ex_r -> code != code &&xcept_ptr->code) 169 ex_r ++; 171 (* jv )-> `ExiCˬ (jenv); 172 exp = (* jv )-> `FdCss (jv, ex_r -> java_exi ); 173 i( exp ) 174 (* jv )-> `ThrowNew (jv, exp , msg ); 175 } } 180 #SWIG_cڌa_as ( nuλtu , ex , msg i(!x){ `SWIG_JavaThrowExi ( jv , SWIG_JavaIegArgumtExi , msg); uλtu; } ) 183 ~"db_t.h " 184 ~"dbc/txn.h " 186 #ifde HAVE_CRYPTO 187 #CRYPTO_ONLY ( x (x); ) 189 #CRYPTO_ONLY ( x ) ) 194 #SWIG_NOINCLUDE 1 ) 196 #DB_ENV_INTERNAL ( dbv ((dbv)-> i2_ ) ) 197 #DB_INTERNAL ( db ((db)-> i_ ) ) 199 #DB_PKG "com/pyt/db/" ) 202 __dbj_throw ( JNIEnv * jv , 203 r , cڡ * msg , jobje obj , jobje jdbv ); 206 JavaVM * gjavavm ; 208 jass gdb_ass , gdbc_ass , gdbv_ass , gdbt_ass , gdbl_ass ; 209 jass gdbli_ass , gdbtxn_ass ; 210 jass gkeynge_ass ; 211 jass gbt__ass , gcom_ass , gh__ass , glock__ass ; 212 jass glog__ass , gmpo__ass , gmpo_f_ass ; 213 jass gmux__ass , gqam__ass , gp__ass ; 214 jass gpmgr__ass , gpmgr_sefo_ass , gpho_ass ; 215 jass gq__ass , gtxn__ass ; 216 jass gtxn_aive_ass ; 217 jass glock_ass , glockq_ass ; 218 jass gdbex_ass , gddex_ass , glockex_ass , gmemex_ass ; 219 jass gpdupmaex_ass , gphdddex_ass ; 220 jass gphdeiex_ass , gpjoex_ass ; 221 jass gexpedex_ass , gtimeoux_ass ; 222 jass gockoux_ass , gpuvaex_ass ; 223 jass gruex_ass , gvsiex_ass ; 224 jass gffoundex_ass , gggex_ass , goutofmemr_ass ; 225 jass gbyy_ass , grg_ass , gouutam_ass ; 227 jfldID gdbc__fid ; 228 jfldID gdbl_fe_fid , gdbl_offt_fid ; 229 jfldID gdbt_da_fid , gdbt_da_nio_fid , gdbt_size_fid , gdbt_un_fid ; 230 jfldID gdbt_dn_fid , gdbt_doff_fid , gdbt_ags_fid , gdbt_offt_fid ; 231 jfldID gkr_ss_fid , gkr_equ_fid , gkr_g_fid ; 232 jfldID glock__fid ; 233 jfldID glockq__fid , glockq_modeag_fid , glockq_timeout_fid ; 234 jfldID glockq_obj_fid , glockq_lock_fid ; 235 jfldID gpmgr_sefo_us_fid ; 238 jfldID gbt__bt_magic_fid ; 239 jfldID gbt__bt_vsi_fid ; 240 jfldID gbt__bt_maags_fid ; 241 jfldID gbt__bt_nkeys_fid ; 242 jfldID gbt__bt_nda_fid ; 243 jfldID gbt__bt_get_fid ; 244 jfldID gbt__bt_gesize_fid ; 245 jfldID gbt__bt_mkey_fid ; 246 jfldID gbt__bt__n_fid ; 247 jfldID gbt__bt__d_fid ; 248 jfldID gbt__bt_vs_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 gbt__bt_emy_pg_fid ; 254 jfldID gbt__bt__fid ; 255 jfldID gbt__bt_t_pg_fid ; 256 jfldID gbt__bt_af_pg_fid ; 257 jfldID gbt__bt_dup_pg_fid ; 258 jfldID gbt__bt_ov_pg_fid ; 259 jfldID gcom_com_f͔_fid ; 260 jfldID gcom_com_timeout_fid ; 261 jfldID gcom_com_ges_fid ; 262 jfldID gcom_com_ges__fid ; 263 jfldID gcom_com_ges_exame_fid ; 264 jfldID gcom_com_vs_fid ; 265 jfldID gcom_com_ddlock_fid ; 266 jfldID gcom_com_ges_und_fid ; 267 jfldID gcom_com_un_fid ; 268 jfldID gh__hash_magic_fid ; 269 jfldID gh__hash_vsi_fid ; 270 jfldID gh__hash_maags_fid ; 271 jfldID gh__hash_nkeys_fid ; 272 jfldID gh__hash_nda_fid ; 273 jfldID gh__hash_get_fid ; 274 jfldID gh__hash_gesize_fid ; 275 jfldID gh__hash_f_fid ; 276 jfldID gh__hash_bucks_fid ; 277 jfldID gh__hash__fid ; 278 jfldID gh__hash_b_fid ; 279 jfldID gh__hash_bigges_fid ; 280 jfldID gh__hash_big_b_fid ; 281 jfldID gh__hash_ovows_fid ; 282 jfldID gh__hash_ov__fid ; 283 jfldID gh__hash_dup_fid ; 284 jfldID gh__hash_dup__fid ; 285 jfldID glock___id_fid ; 286 jfldID glock___cur_maxid_fid ; 287 jfldID glock___maxlocks_fid ; 288 jfldID glock___maxlocks_fid ; 289 jfldID glock___maxobjes_fid ; 290 jfldID glock___is_fid ; 291 jfldID glock___nmodes_fid ; 292 jfldID glock___ocks_fid ; 293 jfldID glock___ocks_fid ; 294 jfldID glock___maxocks_fid ; 295 jfldID glock___maxhlocks_fid ; 296 jfldID glock___lockls_fid ; 297 jfldID glock___maxlls_fid ; 298 jfldID glock___maxocks_fid ; 299 jfldID glock___nobjes_fid ; 300 jfldID glock___maxnobjes_fid ; 301 jfldID glock___maxhobjes_fid ; 302 jfldID glock___objels_fid ; 303 jfldID glock___maxols_fid ; 304 jfldID glock___eques_fid ; 305 jfldID glock___Ės_fid ; 306 jfldID glock___nupgde_fid ; 307 jfldID glock___ndowngde_fid ; 308 jfldID glock___lock_wa_fid ; 309 jfldID glock___lock_nowa_fid ; 310 jfldID glock___nddlocks_fid ; 311 jfldID glock___locktimeout_fid ; 312 jfldID glock___ocktimeouts_fid ; 313 jfldID glock___tximeout_fid ; 314 jfldID glock___ximeouts_fid ; 315 jfldID glock____wa_fid ; 316 jfldID glock____nowa_fid ; 317 jfldID glock____max_wa_fid ; 318 jfldID glock____max_nowa_fid ; 319 jfldID glock___objs_wa_fid ; 320 jfldID glock___objs_nowa_fid ; 321 jfldID glock___locks_wa_fid ; 322 jfldID glock___locks_nowa_fid ; 323 jfldID glock___gi_wa_fid ; 324 jfldID glock___gi_nowa_fid ; 325 jfldID glock___hash_n_fid ; 326 jfldID glock___gsize_fid ; 327 jfldID glog___magic_fid ; 328 jfldID glog___vsi_fid ; 329 jfldID glog___mode_fid ; 330 jfldID glog___lg_bsize_fid ; 331 jfldID glog___lg_size_fid ; 332 jfldID glog___wc_bys_fid ; 333 jfldID glog___wc_mbys_fid ; 334 jfldID glog___cd_fid ; 335 jfldID glog___w_bys_fid ; 336 jfldID glog___w_mbys_fid ; 337 jfldID glog___wcou_fid ; 338 jfldID glog___wcou_fl_fid ; 339 jfldID glog___rcou_fid ; 340 jfldID glog___scou_fid ; 341 jfldID glog___gi_wa_fid ; 342 jfldID glog___gi_nowa_fid ; 343 jfldID glog___cur_fe_fid ; 344 jfldID glog___cur_offt_fid ; 345 jfldID glog___disk_fe_fid ; 346 jfldID glog___disk_offt_fid ; 347 jfldID glog___maxcommrush_fid ; 348 jfldID glog___mcommrush_fid ; 349 jfldID glog___gsize_fid ; 350 jfldID gmpo_f_fe_me_fid ; 351 jfldID gmpo_f__gesize_fid ; 352 jfldID gmpo_f__m_fid ; 353 jfldID gmpo_f__che_h_fid ; 354 jfldID gmpo_f__che_miss_fid ; 355 jfldID gmpo_f__ge__fid ; 356 jfldID gmpo_f__ge__fid ; 357 jfldID gmpo_f__ge_out_fid ; 358 jfldID gmpo___gbys_fid ; 359 jfldID gmpo___bys_fid ; 360 jfldID gmpo___nche_fid ; 361 jfldID gmpo___max_nche_fid ; 362 jfldID gmpo___mmsize_fid ; 363 jfldID gmpo___maxݒfd_fid ; 364 jfldID gmpo___maxwre_fid ; 365 jfldID gmpo___maxwre_p_fid ; 366 jfldID gmpo___ges_fid ; 367 jfldID gmpo___m_fid ; 368 jfldID gmpo___che_h_fid ; 369 jfldID gmpo___che_miss_fid ; 370 jfldID gmpo___ge__fid ; 371 jfldID gmpo___ge__fid ; 372 jfldID gmpo___ge_out_fid ; 373 jfldID gmpo___ro_evi_fid ; 374 jfldID gmpo___rw_evi_fid ; 375 jfldID gmpo___ge_ick_fid ; 376 jfldID gmpo___ge_n_fid ; 377 jfldID gmpo___ge_dty_fid ; 378 jfldID gmpo___hash_bucks_fid ; 379 jfldID gmpo___hash_ches_fid ; 380 jfldID gmpo___hash_lge_fid ; 381 jfldID gmpo___hash_examed_fid ; 382 jfldID gmpo___hash_nowa_fid ; 383 jfldID gmpo___hash_wa_fid ; 384 jfldID gmpo___hash_max_nowa_fid ; 385 jfldID gmpo___hash_max_wa_fid ; 386 jfldID gmpo___gi_nowa_fid ; 387 jfldID gmpo___gi_wa_fid ; 388 jfldID gmpo___mvcc_oz_fid ; 389 jfldID gmpo___mvcc_thawed_fid ; 390 jfldID gmpo___mvcc_d_fid ; 391 jfldID gmpo___loc_fid ; 392 jfldID gmpo___loc_bucks_fid ; 393 jfldID gmpo___loc_max_bucks_fid ; 394 jfldID gmpo___loc_ges_fid ; 395 jfldID gmpo___loc_max_ges_fid ; 396 jfldID gmpo___io_wa_fid ; 397 jfldID gmpo___gsize_fid ; 398 jfldID gmux___mux_ign_fid ; 399 jfldID gmux___mux_s_s_fid ; 400 jfldID gmux___mux_t_fid ; 401 jfldID gmux___mux__fid ; 402 jfldID gmux___mux_u_fid ; 403 jfldID gmux___mux_u_max_fid ; 404 jfldID gmux___gi_wa_fid ; 405 jfldID gmux___gi_nowa_fid ; 406 jfldID gmux___gsize_fid ; 407 jfldID gqam__qs_magic_fid ; 408 jfldID gqam__qs_vsi_fid ; 409 jfldID gqam__qs_maags_fid ; 410 jfldID gqam__qs_nkeys_fid ; 411 jfldID gqam__qs_nda_fid ; 412 jfldID gqam__qs_gesize_fid ; 413 jfldID gqam__qs_exsize_fid ; 414 jfldID gqam__qs_ges_fid ; 415 jfldID gqam__qs__n_fid ; 416 jfldID gqam__qs__d_fid ; 417 jfldID gqam__qs_pg_fid ; 418 jfldID gqam__qs_f_o_fid ; 419 jfldID gqam__qs_cur_o_fid ; 420 jfldID gp___log_queued_fid ; 421 jfldID gp___tup_come_fid ; 422 jfldID gp___us_fid ; 423 jfldID gp___xt_l_fid ; 424 jfldID gp___wag_l_fid ; 425 jfldID gp___max_rm_l_fid ; 426 jfldID gp___xt_pg_fid ; 427 jfldID gp___wag_pg_fid ; 428 jfldID gp___dupmas_fid ; 429 jfldID gp___v_id_fid ; 430 jfldID gp___v_iܙy_fid ; 431 jfldID gp___bulk_fls_fid ; 432 jfldID gp___bulk_ovows_fid ; 433 jfldID gp___bulk_cds_fid ; 434 jfldID gp___bulk_srs_fid ; 435 jfldID gp____ques_fid ; 436 jfldID gp____svc_q_fid ; 437 jfldID gp____svc_miss_fid ; 438 jfldID gp___g_fid ; 439 jfldID gp___eg_fid ; 440 jfldID gp___log_duid_fid ; 441 jfldID gp___log_queued_max_fid ; 442 jfldID gp___log_queued_tٮ_fid ; 443 jfldID gp___log_cds_fid ; 444 jfldID gp___log_queed_fid ; 445 jfldID gp___ma_fid ; 446 jfldID gp___ma_chges_fid ; 447 jfldID gp___msgs_badg_fid ; 448 jfldID gp___msgs_osd_fid ; 449 jfldID gp___msgs_cov_fid ; 450 jfldID gp___msgs_nd_us_fid ; 451 jfldID gp___msgs__fid ; 452 jfldID gp___wses_fid ; 453 jfldID gp___nses_fid ; 454 jfldID gp___hrَes_fid ; 455 jfldID gp___outded_fid ; 456 jfldID gp___pg_duid_fid ; 457 jfldID gp___pg_cds_fid ; 458 jfldID gp___pg_queed_fid ; 459 jfldID gp___txns_d_fid ; 460 jfldID gp___tsync_dayed_fid ; 461 jfldID gp___eis_fid ; 462 jfldID gp___eis_w_fid ; 463 jfldID gp___ei_cur_wr_fid ; 464 jfldID gp___ei_g_fid ; 465 jfldID gp___ei_l_fid ; 466 jfldID gp___ei_nses_fid ; 467 jfldID gp___ei_nves_fid ; 468 jfldID gp___ei_iܙy_fid ; 469 jfldID gp___ei_us_fid ; 470 jfldID gp___ei_tbak_fid ; 471 jfldID gp___ei_ves_fid ; 472 jfldID gp___ei_c_fid ; 473 jfldID gp___ei_uc_fid ; 474 jfldID gp___max_a_c_fid ; 475 jfldID gp___max_a_uc_fid ; 476 jfldID gpmgr___rm_ed_fid ; 477 jfldID gpmgr___msgs_queued_fid ; 478 jfldID gpmgr___msgs_drݳd_fid ; 479 jfldID gpmgr___ci_dr_fid ; 480 jfldID gpmgr___c__fid ; 481 jfldID gq___wa_fid ; 482 jfldID gq___nowa_fid ; 483 jfldID gq___cut_fid ; 484 jfldID gq___vue_fid ; 485 jfldID gq___ϡ_vue_fid ; 486 jfldID gq___m_fid ; 487 jfldID gq___max_fid ; 488 jfldID gq___che_size_fid ; 489 jfldID gq___ags_fid ; 490 jfldID gtxn___ees_fid ; 491 jfldID gtxn___ϡ_ckp_fid ; 492 jfldID gtxn___time_ckp_fid ; 493 jfldID gtxn___ϡ_txnid_fid ; 494 jfldID gtxn___maxtxns_fid ; 495 jfldID gtxn___bts_fid ; 496 jfldID gtxn___nbegs_fid ; 497 jfldID gtxn___ncomms_fid ; 498 jfldID gtxn___ive_fid ; 499 jfldID gtxn___nsh_fid ; 500 jfldID gtxn___maxive_fid ; 501 jfldID gtxn___maxnsh_fid ; 502 jfldID gtxn___txǼay_fid ; 503 jfldID gtxn___gi_wa_fid ; 504 jfldID gtxn___gi_nowa_fid ; 505 jfldID gtxn___gsize_fid ; 506 jfldID gtxn_aive_txnid_fid ; 507 jfldID gtxn_aive_id_fid ; 508 jfldID gtxn_aive_pid_fid ; 509 jfldID gtxn_aive_l_fid ; 510 jfldID gtxn_aive_ad_l_fid ; 511 jfldID gtxn_aive_mvcc_f_fid ; 512 jfldID gtxn_aive_us_fid ; 513 jfldID gtxn_aive_xa_us_fid ; 514 jfldID gtxn_aive_xid_fid ; 515 jfldID gtxn_aive_me_fid ; 518 jmhodID gdbv_cڡru , gdbt_cڡru , gdbl_cڡru ; 519 jmhodID gdbli_cڡru , gdbtxn_cڡru ; 520 jmhodID gbt__cڡru , gg_r_msg_mhod , gh__cڡru ; 521 jmhodID glock__cڡru , glog__cڡru ; 522 jmhodID gmpo__cڡru , gmpo_f_cڡru ; 523 jmhodID gmux__cڡru , gqam__cڡru ; 524 jmhodID gp__cڡru , gpmgr__cڡru , gq__cڡru ; 525 jmhodID gtxn__cڡru , gtxn_aive_cڡru ; 526 jmhodID gdbex_cڡru , gddex_cڡru , glockex_cڡru ; 527 jmhodID gmemex_cڡru , gmemex_upde_mhod ; 528 jmhodID gpdupmaex_cڡru , gphdddex_cڡru ; 529 jmhodID gphdeiex_cڡru , gpjoex_cڡru ; 530 jmhodID gpmgr_sefo_cڡru , gpho_cڡru , gexpedex_cڡru ; 531 jmhodID gtimeoux_cڡru , gockoux_cڡru ; 532 jmhodID gpuvaex_cڡru ; 533 jmhodID gruex_cڡru , gvsiex_cڡru ; 534 jmhodID gffoundex_cڡru , gggex_cڡru ; 535 jmhodID goutofmemr_cڡru ; 536 jmhodID glock_cڡru ; 538 jmhodID gp_dich_mhod , gr_mhod , gv_edback_mhod ; 539 jmhodID gmsg_mhod , gnic_mhod , gp_t_mhod ; 540 jmhodID gnic_evt_nify_mhod , gp__evt_nify_mhod ; 541 jmhodID gp_eed_evt_nify_mhod ; 542 jmhodID gp_ma_evt_nify_mhod ; 543 jmhodID gp_w_ma_evt_nify_mhod ; 544 jmhodID gp_rm_ed_evt_nify_mhod ; 545 jmhodID gp_tup_de_evt_nify_mhod ; 546 jmhodID gwre_ed_evt_nify_mhod ; 548 jmhodID gnd_o_mhod , gbt_com_mhod , gbt_efix_mhod ; 549 jmhodID gdb_edback_mhod , gdup_com_mhod ; 550 jmhodID gfeignkey_nuify_mhod , gh_com_mhod , gh_hash_mhod ; 551 jmhodID gckey__mhod ; 553 jmhodID gouutam_wre_mhod ; 556 jass * m ; 557 cڡ * mme ; 558 } gl_ass [] = { 559 { & dbv_ass , DB_PKG "internal/DbEnv" }, 560 { & db_ass , DB_PKG "internal/Db" }, 561 { & dbc_ass , DB_PKG "internal/Dbc" }, 562 { & dbt_ass , DB_PKG "DatabaseEntry" }, 563 { & dbl_ass , DB_PKG "LogSequenceNumber" }, 564 { & dbli_ass , DB_PKG "PreparedTransaction" }, 565 { & dbtxn_ass , DB_PKG "internal/DbTxn" }, 567 { & bt__ass , DB_PKG "BtreeStats" }, 568 { & com_ass , DB_PKG "CompactStats" }, 569 { & h__ass , DB_PKG "HashStats" }, 570 { & lock__ass , DB_PKG "LockStats" }, 571 { & log__ass , DB_PKG "LogStats" }, 572 { & mpo_f_ass , DB_PKG "CacheFileStats" }, 573 { & mpo__ass , DB_PKG "CacheStats" }, 574 { & mux__ass , DB_PKG "MutexStats" }, 575 { & qam__ass , DB_PKG "QueueStats" }, 576 { & p__ass , DB_PKG "ReplicationStats" }, 577 { & pmgr__ass , DB_PKG "ReplicationManagerStats" }, 578 { & q__ass , DB_PKG "SequenceStats" }, 579 { & txn__ass , DB_PKG "TransactionStats" }, 580 { & txn_aive_ass , DB_PKG "TransactionStats$Active" }, 582 { & keynge_ass , DB_PKG "KeyRange" }, 583 { & lock_ass , DB_PKG "internal/DbLock" }, 584 { & lockq_ass , DB_PKG "LockRequest" }, 586 { & dbex_ass , DB_PKG "DatabaseException" }, 587 { & ddex_ass , DB_PKG "DeadlockException" }, 588 { & lockex_ass , DB_PKG "LockNotGrantedException" }, 589 { & memex_ass , DB_PKG "MemoryException" }, 590 { & pdupmaex_ass , DB_PKG "ReplicationDuplicateMasterException" }, 591 { & phdddex_ass , DB_PKG "ReplicationHandleDeadException" }, 592 { & phdeiex_ass , DB_PKG "ReplicationHoldElectionException" }, 593 { & pho_ass , DB_PKG "ReplicationHostAddress" }, 594 { & pmgr_sefo_ass , DB_PKG "ReplicationManagerSiteInfo" }, 595 { & pjoex_ass , DB_PKG "ReplicationJoinFailureException" }, 596 { & expedex_ass , DB_PKG "ReplicationLeaseExpiredException" }, 597 { & timeoux_ass , DB_PKG "ReplicationLeaseTimeoutException" }, 598 { & ockoux_ass , DB_PKG "ReplicationLockoutException" }, 599 { & puvaex_ass , DB_PKG "ReplicationSiteUnavailableException" }, 600 { & ruex_ass , DB_PKG "RunRecoveryException" }, 601 { & vsiex_ass , DB_PKG "VersionMismatchException" }, 602 { & ffoundex_ass , "java/io/FileNotFoundException" }, 603 { & ggex_ass , "java/lang/IllegalArgumentException" }, 604 { & outofmemr_ass , "java/lang/OutOfMemoryError" }, 606 { & byy_ass , "[B" }, 607 { & rg_ass , "java/lang/String" }, 608 { & ouutam_ass , "java/io/OutputStream" } 612 jfldID * mfid ; 613 jass * m ; 614 cڡ * mme ; 615 cڡ * msig ; 616 } gl_flds [] = { 617 { & dbc__fid , & dbc_ass , "swigCPtr", "J" }, 619 { & dbl_fe_fid , & dbl_ass , "file", "I" }, 620 { & dbl_offt_fid , & dbl_ass , "offset", "I" }, 622 { & dbt_da_fid , & dbt_ass , "data", "[B" }, 623 { & dbt_da_nio_fid , & dbt_ass , "data_nio", "Ljava/nio/ByteBuffer;" }, 624 { & dbt_size_fid , & dbt_ass , "size", "I" }, 625 { & dbt_un_fid , & dbt_ass , "ulen", "I" }, 626 { & dbt_dn_fid , & dbt_ass , "dlen", "I" }, 627 { & dbt_doff_fid , & dbt_ass , "doff", "I" }, 628 { & dbt_ags_fid , & dbt_ass , "flags", "I" }, 629 { & dbt_offt_fid , & dbt_ass , "offset", "I" }, 631 { & kr_ss_fid , & keynge_ass , "less", "D" }, 632 { & kr_equ_fid , & keynge_ass , "equal", "D" }, 633 { & kr_g_fid , & keynge_ass , "greater", "D" }, 635 { & lock__fid , & lock_ass , "swigCPtr", "J" }, 637 { & lockq__fid , & lockq_ass , "op", "I" }, 638 { & lockq_modeag_fid , & lockq_ass , "modeFlag", "I" }, 639 { & lockq_timeout_fid , & lockq_ass , "timeout", "I" }, 640 { & lockq_obj_fid , & lockq_ass , "obj", 641 "L" DB_PKG "DatabaseEntry;" }, 642 { & lockq_lock_fid , & lockq_ass , "lock", 643 "L" DB_PKG "internal/DbLock;" }, 646 { & bt__bt_magic_fid , & bt__ass , "bt_magic", "I" }, 647 { & bt__bt_vsi_fid , & bt__ass , "bt_version", "I" }, 648 { & bt__bt_maags_fid , & bt__ass , "bt_metaflags", "I" }, 649 { & bt__bt_nkeys_fid , & bt__ass , "bt_nkeys", "I" }, 650 { & bt__bt_nda_fid , & bt__ass , "bt_ndata", "I" }, 651 { & bt__bt_get_fid , & bt__ass , "bt_pagecnt", "I" }, 652 { & bt__bt_gesize_fid , & bt__ass , "bt_pagesize", "I" }, 653 { & bt__bt_mkey_fid , & bt__ass , "bt_minkey", "I" }, 654 { & bt__bt__n_fid , & bt__ass , "bt_re_len", "I" }, 655 { & bt__bt__d_fid , & bt__ass , "bt_re_pad", "I" }, 656 { & bt__bt_vs_fid , & bt__ass , "bt_levels", "I" }, 657 { & bt__bt_t_pg_fid , & bt__ass , "bt_int_pg", "I" }, 658 { & bt__bt_af_pg_fid , & bt__ass , "bt_leaf_pg", "I" }, 659 { & bt__bt_dup_pg_fid , & bt__ass , "bt_dup_pg", "I" }, 660 { & bt__bt_ov_pg_fid , & bt__ass , "bt_over_pg", "I" }, 661 { & bt__bt_emy_pg_fid , & bt__ass , "bt_empty_pg", "I" }, 662 { & bt__bt__fid , & bt__ass , "bt_free", "I" }, 663 { & bt__bt_t_pg_fid , & bt__ass , "bt_int_pgfree", "I" }, 664 { & bt__bt_af_pg_fid , & bt__ass , "bt_leaf_pgfree", "I" }, 665 { & bt__bt_dup_pg_fid , & bt__ass , "bt_dup_pgfree", "I" }, 666 { & bt__bt_ov_pg_fid , & bt__ass , "bt_over_pgfree", "I" }, 667 { & com_com_f͔_fid , & com_ass , "compact_fillpercent", "I" }, 668 { & com_com_timeout_fid , & com_ass , "compact_timeout", "I" }, 669 { & com_com_ges_fid , & com_ass , "compact_pages", "I" }, 670 { & com_com_ges__fid , & com_ass , "compact_pages_free", "I" }, 671 { & com_com_ges_exame_fid , & com_ass , "compact_pages_examine", "I" }, 672 { & com_com_vs_fid , & com_ass , "compact_levels", "I" }, 673 { & com_com_ddlock_fid , & com_ass , "compact_deadlock", "I" }, 674 { & com_com_ges_und_fid , & com_ass , "compact_pages_truncated", "I" }, 675 { & com_com_un_fid , & com_ass , "compact_truncate", "I" }, 676 { & h__hash_magic_fid , & h__ass , "hash_magic", "I" }, 677 { & h__hash_vsi_fid , & h__ass , "hash_version", "I" }, 678 { & h__hash_maags_fid , & h__ass , "hash_metaflags", "I" }, 679 { & h__hash_nkeys_fid , & h__ass , "hash_nkeys", "I" }, 680 { & h__hash_nda_fid , & h__ass , "hash_ndata", "I" }, 681 { & h__hash_get_fid , & h__ass , "hash_pagecnt", "I" }, 682 { & h__hash_gesize_fid , & h__ass , "hash_pagesize", "I" }, 683 { & h__hash_f_fid , & h__ass , "hash_ffactor", "I" }, 684 { & h__hash_bucks_fid , & h__ass , "hash_buckets", "I" }, 685 { & h__hash__fid , & h__ass , "hash_free", "I" }, 686 { & h__hash_b_fid , & h__ass , "hash_bfree", "I" }, 687 { & h__hash_bigges_fid , & h__ass , "hash_bigpages", "I" }, 688 { & h__hash_big_b_fid , & h__ass , "hash_big_bfree", "I" }, 689 { & h__hash_ovows_fid , & h__ass , "hash_overflows", "I" }, 690 { & h__hash_ov__fid , & h__ass , "hash_ovfl_free", "I" }, 691 { & h__hash_dup_fid , & h__ass , "hash_dup", "I" }, 692 { & h__hash_dup__fid , & h__ass , "hash_dup_free", "I" }, 693 { & lock___id_fid , & lock__ass , "st_id", "I" }, 694 { & lock___cur_maxid_fid , & lock__ass , "st_cur_maxid", "I" }, 695 { & lock___maxlocks_fid , & lock__ass , "st_maxlocks", "I" }, 696 { & lock___maxlocks_fid , & lock__ass , "st_maxlockers", "I" }, 697 { & lock___maxobjes_fid , & lock__ass , "st_maxobjects", "I" }, 698 { & lock___is_fid , & lock__ass , "st_partitions", "I" }, 699 { & lock___nmodes_fid , & lock__ass , "st_nmodes", "I" }, 700 { & lock___ocks_fid , & lock__ass , "st_nlockers", "I" }, 701 { & lock___ocks_fid , & lock__ass , "st_nlocks", "I" }, 702 { & lock___maxocks_fid , & lock__ass , "st_maxnlocks", "I" }, 703 { & lock___maxhlocks_fid , & lock__ass , "st_maxhlocks", "I" }, 704 { & lock___lockls_fid , & lock__ass , "st_locksteals", "I" }, 705 { & lock___maxlls_fid , & lock__ass , "st_maxlsteals", "I" }, 706 { & lock___maxocks_fid , & lock__ass , "st_maxnlockers", "I" }, 707 { & lock___nobjes_fid , & lock__ass , "st_nobjects", "I" }, 708 { & lock___maxnobjes_fid , & lock__ass , "st_maxnobjects", "I" }, 709 { & lock___maxhobjes_fid , & lock__ass , "st_maxhobjects", "I" }, 710 { & lock___objels_fid , & lock__ass , "st_objectsteals", "I" }, 711 { & lock___maxols_fid , & lock__ass , "st_maxosteals", "I" }, 712 { & lock___eques_fid , & lock__ass , "st_nrequests", "I" }, 713 { & lock___Ės_fid , & lock__ass , "st_nreleases", "I" }, 714 { & lock___nupgde_fid , & lock__ass , "st_nupgrade", "I" }, 715 { & lock___ndowngde_fid , & lock__ass , "st_ndowngrade", "I" }, 716 { & lock___lock_wa_fid , & lock__ass , "st_lock_wait", "I" }, 717 { & lock___lock_nowa_fid , & lock__ass , "st_lock_nowait", "I" }, 718 { & lock___nddlocks_fid , & lock__ass , "st_ndeadlocks", "I" }, 719 { & lock___locktimeout_fid , & lock__ass , "st_locktimeout", "I" }, 720 { & lock___ocktimeouts_fid , & lock__ass , "st_nlocktimeouts", "I" }, 721 { & lock___tximeout_fid , & lock__ass , "st_txntimeout", "I" }, 722 { & lock___ximeouts_fid , & lock__ass , "st_ntxntimeouts", "I" }, 723 { & lock____wa_fid , & lock__ass , "st_part_wait", "I" }, 724 { & lock____nowa_fid , & lock__ass , "st_part_nowait", "I" }, 725 { & lock____max_wa_fid , & lock__ass , "st_part_max_wait", "I" }, 726 { & lock____max_nowa_fid , & lock__ass , "st_part_max_nowait", "I" }, 727 { & lock___objs_wa_fid , & lock__ass , "st_objs_wait", "I" }, 728 { & lock___objs_nowa_fid , & lock__ass , "st_objs_nowait", "I" }, 729 { & lock___locks_wa_fid , & lock__ass , "st_lockers_wait", "I" }, 730 { & lock___locks_nowa_fid , & lock__ass , "st_lockers_nowait", "I" }, 731 { & lock___gi_wa_fid , & lock__ass , "st_region_wait", "I" }, 732 { & lock___gi_nowa_fid , & lock__ass , "st_region_nowait", "I" }, 733 { & lock___hash_n_fid , & lock__ass , "st_hash_len", "I" }, 734 { & lock___gsize_fid , & lock__ass , "st_regsize", "I" }, 735 { & log___magic_fid , & log__ass , "st_magic", "I" }, 736 { & log___vsi_fid , & log__ass , "st_version", "I" }, 737 { & log___mode_fid , & log__ass , "st_mode", "I" }, 738 { & log___lg_bsize_fid , & log__ass , "st_lg_bsize", "I" }, 739 { & log___lg_size_fid , & log__ass , "st_lg_size", "I" }, 740 { & log___wc_bys_fid , & log__ass , "st_wc_bytes", "I" }, 741 { & log___wc_mbys_fid , & log__ass , "st_wc_mbytes", "I" }, 742 { & log___cd_fid , & log__ass , "st_record", "I" }, 743 { & log___w_bys_fid , & log__ass , "st_w_bytes", "I" }, 744 { & log___w_mbys_fid , & log__ass , "st_w_mbytes", "I" }, 745 { & log___wcou_fid , & log__ass , "st_wcount", "I" }, 746 { & log___wcou_fl_fid , & log__ass , "st_wcount_fill", "I" }, 747 { & log___rcou_fid , & log__ass , "st_rcount", "I" }, 748 { & log___scou_fid , & log__ass , "st_scount", "I" }, 749 { & log___gi_wa_fid , & log__ass , "st_region_wait", "I" }, 750 { & log___gi_nowa_fid , & log__ass , "st_region_nowait", "I" }, 751 { & log___cur_fe_fid , & log__ass , "st_cur_file", "I" }, 752 { & log___cur_offt_fid , & log__ass , "st_cur_offset", "I" }, 753 { & log___disk_fe_fid , & log__ass , "st_disk_file", "I" }, 754 { & log___disk_offt_fid , & log__ass , "st_disk_offset", "I" }, 755 { & log___maxcommrush_fid , & log__ass , "st_maxcommitperflush", "I" }, 756 { & log___mcommrush_fid , & log__ass , "st_mincommitperflush", "I" }, 757 { & log___gsize_fid , & log__ass , "st_regsize", "I" }, 758 { & mpo_f_fe_me_fid , & mpo_f_ass , "file_name", "Ljava/lang/String;" }, 759 { & mpo_f__gesize_fid , & mpo_f_ass , "st_pagesize", "I" }, 760 { & mpo_f__m_fid , & mpo_f_ass , "st_map", "I" }, 761 { & mpo_f__che_h_fid , & mpo_f_ass , "st_cache_hit", "I" }, 762 { & mpo_f__che_miss_fid , & mpo_f_ass , "st_cache_miss", "I" }, 763 { & mpo_f__ge__fid , & mpo_f_ass , "st_page_create", "I" }, 764 { & mpo_f__ge__fid , & mpo_f_ass , "st_page_in", "I" }, 765 { & mpo_f__ge_out_fid , & mpo_f_ass , "st_page_out", "I" }, 766 { & mpo___gbys_fid , & mpo__ass , "st_gbytes", "I" }, 767 { & mpo___bys_fid , & mpo__ass , "st_bytes", "I" }, 768 { & mpo___nche_fid , & mpo__ass , "st_ncache", "I" }, 769 { & mpo___max_nche_fid , & mpo__ass , "st_max_ncache", "I" }, 770 { & mpo___mmsize_fid , & mpo__ass , "st_mmapsize", "I" }, 771 { & mpo___maxݒfd_fid , & mpo__ass , "st_maxopenfd", "I" }, 772 { & mpo___maxwre_fid , & mpo__ass , "st_maxwrite", "I" }, 773 { & mpo___maxwre_p_fid , & mpo__ass , "st_maxwrite_sleep", "I" }, 774 { & mpo___ges_fid , & mpo__ass , "st_pages", "I" }, 775 { & mpo___m_fid , & mpo__ass , "st_map", "I" }, 776 { & mpo___che_h_fid , & mpo__ass , "st_cache_hit", "I" }, 777 { & mpo___che_miss_fid , & mpo__ass , "st_cache_miss", "I" }, 778 { & mpo___ge__fid , & mpo__ass , "st_page_create", "I" }, 779 { & mpo___ge__fid , & mpo__ass , "st_page_in", "I" }, 780 { & mpo___ge_out_fid , & mpo__ass , "st_page_out", "I" }, 781 { & mpo___ro_evi_fid , & mpo__ass , "st_ro_evict", "I" }, 782 { & mpo___rw_evi_fid , & mpo__ass , "st_rw_evict", "I" }, 783 { & mpo___ge_ick_fid , & mpo__ass , "st_page_trickle", "I" }, 784 { & mpo___ge_n_fid , & mpo__ass , "st_page_clean", "I" }, 785 { & mpo___ge_dty_fid , & mpo__ass , "st_page_dirty", "I" }, 786 { & mpo___hash_bucks_fid , & mpo__ass , "st_hash_buckets", "I" }, 787 { & mpo___hash_ches_fid , & mpo__ass , "st_hash_searches", "I" }, 788 { & mpo___hash_lge_fid , & mpo__ass , "st_hash_longest", "I" }, 789 { & mpo___hash_examed_fid , & mpo__ass , "st_hash_examined", "I" }, 790 { & mpo___hash_nowa_fid , & mpo__ass , "st_hash_nowait", "I" }, 791 { & mpo___hash_wa_fid , & mpo__ass , "st_hash_wait", "I" }, 792 { & mpo___hash_max_nowa_fid , & mpo__ass , "st_hash_max_nowait", "I" }, 793 { & mpo___hash_max_wa_fid , & mpo__ass , "st_hash_max_wait", "I" }, 794 { & mpo___gi_nowa_fid , & mpo__ass , "st_region_nowait", "I" }, 795 { & mpo___gi_wa_fid , & mpo__ass , "st_region_wait", "I" }, 796 { & mpo___mvcc_oz_fid , & mpo__ass , "st_mvcc_frozen", "I" }, 797 { & mpo___mvcc_thawed_fid , & mpo__ass , "st_mvcc_thawed", "I" }, 798 { & mpo___mvcc_d_fid , & mpo__ass , "st_mvcc_freed", "I" }, 799 { & mpo___loc_fid , & mpo__ass , "st_alloc", "I" }, 800 { & mpo___loc_bucks_fid , & mpo__ass , "st_alloc_buckets", "I" }, 801 { & mpo___loc_max_bucks_fid , & mpo__ass , "st_alloc_max_buckets", "I" }, 802 { & mpo___loc_ges_fid , & mpo__ass , "st_alloc_pages", "I" }, 803 { & mpo___loc_max_ges_fid , & mpo__ass , "st_alloc_max_pages", "I" }, 804 { & mpo___io_wa_fid , & mpo__ass , "st_io_wait", "I" }, 805 { & mpo___gsize_fid , & mpo__ass , "st_regsize", "I" }, 806 { & mux___mux_ign_fid , & mux__ass , "st_mutex_align", "I" }, 807 { & mux___mux_s_s_fid , & mux__ass , "st_mutex_tas_spins", "I" }, 808 { & mux___mux_t_fid , & mux__ass , "st_mutex_cnt", "I" }, 809 { & mux___mux__fid , & mux__ass , "st_mutex_free", "I" }, 810 { & mux___mux_u_fid , & mux__ass , "st_mutex_inuse", "I" }, 811 { & mux___mux_u_max_fid , & mux__ass , "st_mutex_inuse_max", "I" }, 812 { & mux___gi_wa_fid , & mux__ass , "st_region_wait", "I" }, 813 { & mux___gi_nowa_fid , & mux__ass , "st_region_nowait", "I" }, 814 { & mux___gsize_fid , & mux__ass , "st_regsize", "I" }, 815 { & qam__qs_magic_fid , & qam__ass , "qs_magic", "I" }, 816 { & qam__qs_vsi_fid , & qam__ass , "qs_version", "I" }, 817 { & qam__qs_maags_fid , & qam__ass , "qs_metaflags", "I" }, 818 { & qam__qs_nkeys_fid , & qam__ass , "qs_nkeys", "I" }, 819 { & qam__qs_nda_fid , & qam__ass , "qs_ndata", "I" }, 820 { & qam__qs_gesize_fid , & qam__ass , "qs_pagesize", "I" }, 821 { & qam__qs_exsize_fid , & qam__ass , "qs_extentsize", "I" }, 822 { & qam__qs_ges_fid , & qam__ass , "qs_pages", "I" }, 823 { & qam__qs__n_fid , & qam__ass , "qs_re_len", "I" }, 824 { & qam__qs__d_fid , & qam__ass , "qs_re_pad", "I" }, 825 { & qam__qs_pg_fid , & qam__ass , "qs_pgfree", "I" }, 826 { & qam__qs_f_o_fid , & qam__ass , "qs_first_recno", "I" }, 827 { & qam__qs_cur_o_fid , & qam__ass , "qs_cur_recno", "I" }, 828 { & p___log_queued_fid , & p__ass , "st_log_queued", "I" }, 829 { & p___tup_come_fid , & p__ass , "st_startup_complete", "I" }, 830 { & p___us_fid , & p__ass , "st_status", "I" }, 831 { & p___xt_l_fid , & p__ass , "_xt_l", "L" DB_PKG "LogSequenceNumber;" }, 832 { & p___wag_l_fid , & p__ass , "_wag_l", "L" DB_PKG "LogSequenceNumber;" }, 833 { & p___max_rm_l_fid , & p__ass , "_max_rm_l", "L" DB_PKG "LogSequenceNumber;" }, 834 { & p___xt_pg_fid , & p__ass , "st_next_pg", "I" }, 835 { & p___wag_pg_fid , & p__ass , "st_waiting_pg", "I" }, 836 { & p___dupmas_fid , & p__ass , "st_dupmasters", "I" }, 837 { & p___v_id_fid , & p__ass , "st_env_id", "I" }, 838 { & p___v_iܙy_fid , & p__ass , "st_env_priority", "I" }, 839 { & p___bulk_fls_fid , & p__ass , "st_bulk_fills", "I" }, 840 { & p___bulk_ovows_fid , & p__ass , "st_bulk_overflows", "I" }, 841 { & p___bulk_cds_fid , & p__ass , "st_bulk_records", "I" }, 842 { & p___bulk_srs_fid , & p__ass , "st_bulk_transfers", "I" }, 843 { & p____ques_fid , & p__ass , "st_client_rerequests", "I" }, 844 { & p____svc_q_fid , & p__ass , "st_client_svc_req", "I" }, 845 { & p____svc_miss_fid , & p__ass , "st_client_svc_miss", "I" }, 846 { & p___g_fid , & p__ass , "st_gen", "I" }, 847 { & p___eg_fid , & p__ass , "st_egen", "I" }, 848 { & p___log_duid_fid , & p__ass , "st_log_duplicated", "I" }, 849 { & p___log_queued_max_fid , & p__ass , "st_log_queued_max", "I" }, 850 { & p___log_queued_tٮ_fid , & p__ass , "st_log_queued_total", "I" }, 851 { & p___log_cds_fid , & p__ass , "st_log_records", "I" }, 852 { & p___log_queed_fid , & p__ass , "st_log_requested", "I" }, 853 { & p___ma_fid , & p__ass , "st_master", "I" }, 854 { & p___ma_chges_fid , & p__ass , "st_master_changes", "I" }, 855 { & p___msgs_badg_fid , & p__ass , "st_msgs_badgen", "I" }, 856 { & p___msgs_osd_fid , & p__ass , "st_msgs_processed", "I" }, 857 { & p___msgs_cov_fid , & p__ass , "st_msgs_recover", "I" }, 858 { & p___msgs_nd_us_fid , & p__ass , "st_msgs_send_failures", "I" }, 859 { & p___msgs__fid , & p__ass , "st_msgs_sent", "I" }, 860 { & p___wses_fid , & p__ass , "st_newsites", "I" }, 861 { & p___nses_fid , & p__ass , "st_nsites", "I" }, 862 { & p___hrَes_fid , & p__ass , "st_nthrottles", "I" }, 863 { & p___outded_fid , & p__ass , "st_outdated", "I" }, 864 { & p___pg_duid_fid , & p__ass , "st_pg_duplicated", "I" }, 865 { & p___pg_cds_fid , & p__ass , "st_pg_records", "I" }, 866 { & p___pg_queed_fid , & p__ass , "st_pg_requested", "I" }, 867 { & p___txns_d_fid , & p__ass , "st_txns_applied", "I" }, 868 { & p___tsync_dayed_fid , & p__ass , "st_startsync_delayed", "I" }, 869 { & p___eis_fid , & p__ass , "st_elections", "I" }, 870 { & p___eis_w_fid , & p__ass , "st_elections_won", "I" }, 871 { & p___ei_cur_wr_fid , & p__ass , "st_election_cur_winner", "I" }, 872 { & p___ei_g_fid , & p__ass , "st_election_gen", "I" }, 873 { & p___ei_l_fid , & p__ass , "_ei_l", "L" DB_PKG "LogSequenceNumber;" }, 874 { & p___ei_nses_fid , & p__ass , "st_election_nsites", "I" }, 875 { & p___ei_nves_fid , & p__ass , "st_election_nvotes", "I" }, 876 { & p___ei_iܙy_fid , & p__ass , "st_election_priority", "I" }, 877 { & p___ei_us_fid , & p__ass , "st_election_status", "I" }, 878 { & p___ei_tbak_fid , & p__ass , "st_election_tiebreaker", "I" }, 879 { & p___ei_ves_fid , & p__ass , "st_election_votes", "I" }, 880 { & p___ei_c_fid , & p__ass , "st_election_sec", "I" }, 881 { & p___ei_uc_fid , & p__ass , "st_election_usec", "I" }, 882 { & p___max_a_c_fid , & p__ass , "st_max_lease_sec", "I" }, 883 { & p___max_a_uc_fid , & p__ass , "st_max_lease_usec", "I" }, 884 { & pmgr___rm_ed_fid , & pmgr__ass , "st_perm_failed", "I" }, 885 { & pmgr___msgs_queued_fid , & pmgr__ass , "st_msgs_queued", "I" }, 886 { & pmgr___msgs_drݳd_fid , & pmgr__ass , "st_msgs_dropped", "I" }, 887 { & pmgr___ci_dr_fid , & pmgr__ass , "st_connection_drop", "I" }, 888 { & pmgr___c__fid , & pmgr__ass , "st_connect_fail", "I" }, 889 { & q___wa_fid , & q__ass , "st_wait", "I" }, 890 { & q___nowa_fid , & q__ass , "st_nowait", "I" }, 891 { & q___cut_fid , & q__ass , "st_current", "J" }, 892 { & q___vue_fid , & q__ass , "st_value", "J" }, 893 { & q___ϡ_vue_fid , & q__ass , "st_last_value", "J" }, 894 { & q___m_fid , & q__ass , "st_min", "J" }, 895 { & q___max_fid , & q__ass , "st_max", "J" }, 896 { & q___che_size_fid , & q__ass , "st_cache_size", "I" }, 897 { & q___ags_fid , & q__ass , "st_flags", "I" }, 898 { & txn___ees_fid , & txn__ass , "st_nrestores", "I" }, 899 { & txn___ϡ_ckp_fid , & txn__ass , "_ϡ_ckp", "L" DB_PKG "LogSequenceNumber;" }, 900 { & txn___time_ckp_fid , & txn__ass , "st_time_ckp", "J" }, 901 { & txn___ϡ_txnid_fid , & txn__ass , "st_last_txnid", "I" }, 902 { & txn___maxtxns_fid , & txn__ass , "st_maxtxns", "I" }, 903 { & txn___bts_fid , & txn__ass , "st_naborts", "I" }, 904 { & txn___nbegs_fid , & txn__ass , "st_nbegins", "I" }, 905 { & txn___ncomms_fid , & txn__ass , "st_ncommits", "I" }, 906 { & txn___ive_fid , & txn__ass , "st_nactive", "I" }, 907 { & txn___nsh_fid , & txn__ass , "st_nsnapshot", "I" }, 908 { & txn___maxive_fid , & txn__ass , "st_maxnactive", "I" }, 909 { & txn___maxnsh_fid , & txn__ass , "st_maxnsnapshot", "I" }, 910 { & txn___txǼay_fid , & txn__ass , "_txǼay", "[L" DB_PKG "TransactionStats$Active;" }, 911 { & txn___gi_wa_fid , & txn__ass , "st_region_wait", "I" }, 912 { & txn___gi_nowa_fid , & txn__ass , "st_region_nowait", "I" }, 913 { & txn___gsize_fid , & txn__ass , "st_regsize", "I" }, 914 { & txn_aive_txnid_fid , & txn_aive_ass , "txnid", "I" }, 915 { & txn_aive_id_fid , & txn_aive_ass , "parentid", "I" }, 916 { & txn_aive_pid_fid , & txn_aive_ass , "pid", "I" }, 917 { & txn_aive_l_fid , & txn_aive_ass , "l", "L" DB_PKG "LogSequenceNumber;" }, 918 { & txn_aive_ad_l_fid , & txn_aive_ass , "ad_l", "L" DB_PKG "LogSequenceNumber;" }, 919 { & txn_aive_mvcc_f_fid , & txn_aive_ass , "mvcc_ref", "I" }, 920 { & txn_aive_us_fid , & txn_aive_ass , "status", "I" }, 921 { & txn_aive_xa_us_fid , & txn_aive_ass , "xa_status", "I" }, 922 { & txn_aive_xid_fid , & txn_aive_ass , "xid", "[B" }, 923 { & txn_aive_me_fid , & txn_aive_ass , "name", "Ljava/lang/String;" }, 926 { & pmgr_sefo_us_fid , & pmgr_sefo_ass , "status", "I" } 930 jmhodID * mmid ; 931 jass * m ; 932 cڡ * mme ; 933 cڡ * msig ; 934 } gl_mhods [] = { 935 { & dbv_cڡru , & dbv_ass , "<init>", "(JZ)V" }, 936 { & dbt_cڡru , & dbt_ass , "<init>", "()V" }, 937 { & dbl_cڡru , & dbl_ass , "<init>", "(II)V" }, 938 { & dbli_cڡru , & dbli_ass , "<init>", 939 "(L" DB_PKG "internal/DbTxn;[B)V" }, 940 { & dbtxn_cڡru , & dbtxn_ass , "<init>", "(JZ)V" }, 942 { & bt__cڡru , & bt__ass , "<init>", "()V" }, 943 { & g_r_msg_mhod , & dbv_ass , "get_err_msg", 945 { & h__cڡru , & h__ass , "<init>", "()V" }, 946 { & lock__cڡru , & lock__ass , "<init>", "()V" }, 947 { & log__cڡru , & log__ass , "<init>", "()V" }, 948 { & mpo__cڡru , & mpo__ass , "<init>", "()V" }, 949 { & mpo_f_cڡru , & mpo_f_ass , "<init>", "()V" }, 950 { & mux__cڡru , & mux__ass , "<init>", "()V" }, 951 { & qam__cڡru , & qam__ass , "<init>", "()V" }, 952 { & p__cڡru , & p__ass , "<init>", "()V" }, 953 { & pmgr__cڡru , & pmgr__ass , "<init>", "()V" }, 954 { & q__cڡru , & q__ass , "<init>", "()V" }, 955 { & txn__cڡru , & txn__ass , "<init>", "()V" }, 956 { & txn_aive_cڡru , & txn_aive_ass , "<init>", "()V" }, 957 { & pho_cڡru , & pho_ass , "<init>", "(Ljava/lang/String;I)V" }, 958 { & pmgr_sefo_cڡru , & pmgr_sefo_ass , "<init>", 959 "(L" DB_PKG "ReplicationHostAddress;I)V" }, 961 { & dbex_cڡru , & dbex_ass , "<init>", 962 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 963 { & ddex_cڡru , & ddex_ass , "<init>", 964 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 965 { & lockex_cڡru , & lockex_ass , "<init>", 966 "(Ljava/ng/Sg;IIL" DB_PKG "DatabaseEntry;L" 967 DB_PKG "internal/DbLock;IL" DB_PKG "internal/DbEnv;)V" }, 968 { & memex_cڡru , & memex_ass , "<init>", 969 "(Ljava/ng/Sg;L" DB_PKG "DatabaseEntry;IL" 970 DB_PKG "internal/DbEnv;)V" }, 971 { & memex_upde_mhod , & memex_ass , "updateDatabaseEntry", 972 "(L" DB_PKG "DatabaseEntry;)V" }, 973 { & pdupmaex_cڡru , & pdupmaex_ass , "<init>", 974 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 975 { & phdddex_cڡru , & phdddex_ass , "<init>", 976 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 977 { & phdeiex_cڡru , & phdeiex_ass , "<init>", 978 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 979 { & pjoex_cڡru , & pjoex_ass , "<init>", 980 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 981 { & expedex_cڡru , & expedex_ass , "<init>", 982 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 983 { & timeoux_cڡru , & timeoux_ass , "<init>", 984 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 985 { & ockoux_cڡru , & ockoux_ass , "<init>", 986 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 987 { & puvaex_cڡru , & puvaex_ass , "<init>", 988 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 989 { & ruex_cڡru , & ruex_ass , "<init>", 990 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 991 { & vsiex_cڡru , & vsiex_ass , "<init>", 992 "(Ljava/ng/Sg;IL" DB_PKG "internal/DbEnv;)V" }, 993 { & ffoundex_cڡru , & ffoundex_ass , "<init>", 995 { & ggex_cڡru , & ggex_ass , "<init>", 997 { & outofmemr_cڡru , & outofmemr_ass , "<init>", 1000 { & lock_cڡru , & lock_ass , "<init>", "(JZ)V" }, 1002 { & p_dich_mhod , & dbv_ass , "handle_app_dispatch", 1003 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" }, 1004 { & nic_evt_nify_mhod , & dbv_ass , "handle_panic_event_notify", 1006 { & p__evt_nify_mhod , & dbv_ass , 1008 { & p_eed_evt_nify_mhod , & dbv_ass , 1010 { & p_ma_evt_nify_mhod , & dbv_ass , 1012 { & p_w_ma_evt_nify_mhod , & dbv_ass , 1014 { & p_rm_ed_evt_nify_mhod , & dbv_ass , 1016 { & p_tup_de_evt_nify_mhod , & dbv_ass , 1018 { & wre_ed_evt_nify_mhod , & dbv_ass , 1020 { & v_edback_mhod , & dbv_ass , "handle_env_feedback", "(II)V" }, 1021 { & r_mhod , & dbv_ass , "handle_error", 1023 { & msg_mhod , & dbv_ass , "handle_message", 1025 { & nic_mhod , & dbv_ass , "handle_panic", 1026 "(L" DB_PKG "DatabaseException;)V" }, 1027 { & p_t_mhod , & dbv_ass , "handle_rep_transport", 1028 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L" 1029 DB_PKG "LogSequenceNumber;II)I" }, 1031 { & nd_o_mhod , & db_ass , "handle_append_recno", 1032 "(L" DB_PKG "DatabaseEntry;I)V" }, 1033 { & bt_com_mhod , & db_ass , "handle_bt_compare", 1035 { & bt_efix_mhod , & db_ass , "handle_bt_prefix", 1036 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)I" }, 1037 { & db_edback_mhod , & db_ass , "handle_db_feedback", "(II)V" }, 1038 { & dup_com_mhod , & db_ass , "handle_dup_compare", 1040 { & feignkey_nuify_mhod , & db_ass , "handle_foreignkey_nullify", 1041 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L" DB_PKG 1043 { & h_com_mhod , & db_ass , "handle_h_compare", 1045 { & h_hash_mhod , & db_ass , "handle_h_hash", "([BI)I" }, 1046 { & ckey__mhod , & db_ass , "handle_seckey_create", 1047 "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L" 1048 DB_PKG "DatabaseEntry;" }, 1050 { & ouutam_wre_mhod , & ouutam_ass , "write", "([BII)V" } 1053 #NELEM ( x ( (x/ (x[0])) ) 1055 SWIGEXPORT JNICALL $Java_com_pyt_db__db_1javaJNI_lize ( 1056 JNIEnv * jv , jass azz ) 1058 jass ; 1059 i , j ; 1061 `COMPQUIET ( azz , NULL ); 1063 i((* jv )-> `GJavaVM (jv, & javavm ) != 0) { 1064 `__db_rx ( NULL , "Cannot get Java VM"); 1068 i = 0; i < `NELEM ( l_ass ); i++) { 1069 = (* jv )-> `FdCss (jv, l_ass [ i ]. me ); 1070 i( = NULL ) { 1071 `rtf ( dr , 1073 l_ass [ i ]. me ); 1081 * l_ass [ i ]. = ( jass )(* jv )-> `NewGlobRef (jenv, cl); 1083 i(* l_ass [ i ]. = NULL ) { 1084 `rtf ( dr , 1086 l_ass [ i ]. me ); 1092 i = 0; i < `NELEM ( l_flds ); i++) { 1093 * l_flds [ i ]. fid = (* jv )-> `GFldID (jenv, 1094 * l_flds [ i ]. ,_flds[i]. me ,_flds[i]. sig ); 1096 i(* l_flds [ i ]. fid = NULL ) { 1097 `rtf ( dr , 1099 l_flds [ i ]. me ,_flds[i]. sig ); 1105 i = 0; i < `NELEM ( l_mhods ); i++) { 1106 * l_mhods [ i ]. mid = (* jv )-> `GMhodID (jenv, 1107 * l_mhods [ i ]. ,_mhods[i]. me , 1108 l_mhods [ i ]. sig ); 1110 i(* l_mhods [ i ]. mid = NULL ) { 1111 j = 0; j < `NELEM ( l_ass ); j++) 1112 i( l_mhods [ i ]. = l_ass [ j ].cl) 1114 `rtf ( dr , 1116 l_ass [ j ]. me , l_mhods [ i ].name, 1117 l_mhods [ i ]. sig ); 1121 } } 1123 JNIEnv * $__dbj_g_jnnv () 1131 #ifde JNI_VERSION_1_2 1132 * jv = 0; 1134 JNIEnv * jv = 0; 1141 i((* javavm )-> `AachCutThadAsDm (javavm, & jv , 0) != 0) 1144 (( JNIEnv *) jv ); 1145 } } 1147 jobje $__dbj_wp_DB_LSN ( JNIEnv * jv , DB_LSN * l ) 1149 (* jv )-> `NewObje (jv, dbl_ass , dbl_cڡru , 1150 l -> fe ,-> offt ); 1151 } } 1158 #JDBENV ( g1 ? ( jobje ) `DB_ENV_INTERNAL rg1: NULL ) ) 1159 #DB2JDBENV (( jobje ) `DB_ENV_INTERNAL ( g1 -> dbv )) ) 1160 #DBC2JDBENV (( jobje ) `DB_ENV_INTERNAL ( g1 -> dbp -> dbv )) ) 1161 #TXN2JDBENV (( jobje ) `DB_ENV_INTERNAL ( g1 -> mg -> v -> dbv )) ) 1164 jthrowab $__dbj_g_ex ( JNIEnv * jv , 1165 r , cڡ * msg , jobje obj , jobje jdbv ) { 1166 jobje jmsg ; 1168 i( msg = NULL ) 1169 msg = `db_ ( r ); 1171 jmsg = (* jv )-> `NewSgUTF (jv, msg ); 1174 i( jdbv ! NULL ) { 1175 jmsg = ( jrg (* jv )-> `ClNvtuObjeMhod (jenv, 1176 jdbv , dbv_ass , g_r_msg_mhod , jmsg ); 1179 r ) { 1180 EINVAL : 1181 ( jthrowab )(* jv )-> `NewObje (jenv, 1182 ggex_ass , ggex_cڡru , jmsg ); 1184 ENOENT : 1185 ( jthrowab )(* jv )-> `NewObje (jenv, 1186 ffoundex_ass , ffoundex_cڡru , jmsg ); 1188 ENOMEM : 1189 ( jthrowab )(* jv )-> `NewObje (jenv, 1190 outofmemr_ass , outofmemr_cڡru , jmsg ); 1192 DB_BUFFER_SMALL : 1193 ( jthrowab )(* jv )-> `NewObje (jv, memex_ass , 1194 memex_cڡru , jmsg , obj , r , jdbv ); 1196 DB_REP_DUPMASTER : 1197 ( jthrowab )(* jv )-> `NewObje (jenv, 1198 pdupmaex_ass , pdupmaex_cڡru , 1199 jmsg , r , jdbv ); 1201 DB_REP_HANDLE_DEAD : 1202 ( jthrowab )(* jv )-> `NewObje (jenv, 1203 phdddex_ass , phdddex_cڡru , 1204 jmsg , r , jdbv ); 1206 DB_REP_HOLDELECTION : 1207 ( jthrowab )(* jv )-> `NewObje (jenv, 1208 phdeiex_ass , phdeiex_cڡru , 1209 jmsg , r , jdbv ); 1211 DB_REP_JOIN_FAILURE : 1212 ( jthrowab )(* jv )-> `NewObje (jenv, 1213 pjoex_ass , pjoex_cڡru , 1214 jmsg , r , jdbv ); 1216 DB_REP_LEASE_EXPIRED : 1217 ( jthrowab )(* jv )-> `NewObje (jenv, 1218 expedex_ass , expedex_cڡru , 1219 jmsg , r , jdbv ); 1221 DB_REP_LEASE_TIMEOUT : 1222 ( jthrowab )(* jv )-> `NewObje (jenv, 1223 timeoux_ass , timeoux_cڡru , 1224 jmsg , r , jdbv ); 1226 DB_REP_LOCKOUT : 1227 ( jthrowab )(* jv )-> `NewObje (jenv, 1228 ockoux_ass , ockoux_cڡru , 1229 jmsg , r , jdbv ); 1231 DB_REP_UNAVAIL : 1232 ( jthrowab )(* jv )-> `NewObje (jenv, 1233 puvaex_ass , puvaex_cڡru , 1234 jmsg , r , jdbv ); 1236 DB_RUNRECOVERY : 1237 ( jthrowab )(* jv )-> `NewObje (jv, ruex_ass , 1238 ruex_cڡru , jmsg , r , jdbv ); 1240 DB_LOCK_DEADLOCK : 1241 ( jthrowab )(* jv )-> `NewObje (jv, ddex_ass , 1242 ddex_cڡru , jmsg , r , jdbv ); 1244 DB_LOCK_NOTGRANTED : 1245 ( jthrowab )(* jv )-> `NewObje (jv, lockex_ass , 1246 lockex_cڡru , jmsg , r , 0, NULL , NULL, 0, jdbv ); 1248 DB_VERSION_MISMATCH : 1249 ( jthrowab )(* jv )-> `NewObje (jv, vsiex_ass , 1250 vsiex_cڡru , jmsg , r , jdbv ); 1253 ( jthrowab )(* jv )-> `NewObje (jv, dbex_ass , 1254 dbex_cڡru , jmsg , r , jdbv ); 1256 } } 1258 $__dbj_throw ( JNIEnv * jv , 1259 r , cڡ * msg , jobje obj , jobje jdbv ) 1261 jthrowab t ; 1264 i((* jv )-> `ExiOccued (jv= NULL ) { 1265 t = `__dbj_g_ex ( jv , r , msg , obj , jdbv ); 1266 i( t = NULL ) { 1274 i( msg = NULL ) 1275 msg = `db_ ( r ); 1277 `__db_rx ( NULL , "Couldn't createxception for: '%s'", 1278 msg ); 1280 (* jv )-> `Throw (jv, t ); 1283 ( r ); 1284 } } 1287 s__dbt_locked { 1288 JNIEnv * mjv ; 1289 jobje mjdbt ; 1290 DBT mdbt ; 1291 jobje mjda_nio ; 1292 jbyAay mjr ; 1293 jt mofft ; 1294 mu ; 1295 u_t32_t mig_size ; 1296 jsize my_n ; 1297 } tDBT_LOCKED ; 1299 $__dbj_dbt_memcy ( DBT * dbt , u_t32_t offt , * buf , u_t32_ size , u_t32_ ags ) { 1300 DBT_LOCKED * ldbt = dbt -> p_da ; 1301 JNIEnv * jv = ldbt ->jenv; 1303 i( size == 0) 1305 i(! `F_ISSET ( dbt , DB_DBT_USERCOPY )) { 1310 ags ) { 1311 DB_USERCOPY_GETDATA : 1312 `memy ( buf , ( u_t8_t *) dbt -> da + offt , size ); 1314 DB_USERCOPY_SETDATA : 1315 `memy (( u_t8_t *) dbt -> da + offt , buf , size ); 1318 ( EINVAL ); 1322 ags ) { 1323 DB_USERCOPY_GETDATA : 1324 (* jv )-> `GByAayRegi (jv, ldbt -> jr ,dbt-> offt + 1325 offt , size , buf ); 1327 DB_USERCOPY_SETDATA : 1332 i( offt =0 && (! ldbt -> u || 1333 ( jsize )( ldbt -> offt + dbt -> size >dbt-> y_n )) { 1334 i( ldbt -> jr ! NULL ) 1335 (* jv )-> `DeLolRef (jv, ldbt -> jr ); 1336 ldbt -> jr = (* jv )-> `NewByAay (jv, ( jsize ) dbt -> size ); 1337 i( ldbt -> jr = NULL ) 1338 ( ENOMEM ); 1339 (* jv )-> `SObjeFld (jv, ldbt -> jdbt , dbt_da_fid ,dbt-> jr ); 1341 ldbt -> offt = 0; 1343 (* jv )-> `SByAayRegi (jv, ldbt -> jr ,dbt-> offt + 1344 offt , size , buf ); 1347 ( EINVAL ); 1349 ((* jv )-> `ExiOccued (jv? EINVAL : 0); 1350 } } 1352 $__dbj_dbt_cyout ( 1353 JNIEnv * jv , cڡ DBT * dbt , jbyAay * jr , jobje jdbt ) 1355 jbyAay wr = (* jv )-> `NewByAay (jv, ( jsize ) dbt -> size ); 1356 i( wr = NULL ) 1358 (* jv )-> `SByAayRegi (jv, wr , 0, ( jsize ) dbt -> size , 1359 ( jby *) dbt -> da ); 1360 (* jv )-> `SObjeFld (jv, jdbt , dbt_da_fid , wr ); 1361 (* jv )-> `SIFld (jv, jdbt , dbt_offt_fid , 0); 1362 (* jv )-> `SIFld (jv, jdbt , dbt_size_fid , ( jt ) dbt -> size ); 1363 i( jr ! NULL ) 1364 * jr = wr ; 1366 (* jv )-> `DeLolRef (jv, wr ); 1367 } } 1369 $__dbj_dbt_cy ( 1370 JNIEnv * jv , DBT_LOCKED * ldbt , DBT ** db , jobje jdbt , low_nu ) 1372 DBT * dbt ; 1373 jlg cy ; 1375 `memt ( ldbt , 0, (*ldbt)); 1376 ldbt -> jv = jenv; 1377 ldbt -> jdbt = jdbt; 1379 i( jdbt = NULL ) { 1380 i( low_nu ) { 1381 * db = NULL ; 1384 ( `__dbj_throw ( jv , EINVAL , 1385 "DabaEry mu bnu", NULL , NULL)); 1389 dbt = & ldbt ->dbt; 1390 i( db ! NULL ) 1391 * db = dbt ; 1393 ldbt -> jda_nio = (* jv )-> `GObjeFld (jv, jdbt , dbt_da_nio_fid ); 1394 i( ldbt -> jda_nio ! NULL ) 1395 `F_SET ( dbt , DB_DBT_USERMEM ); 1397 ldbt -> jr = ( jbyAay )(* jv )-> `GObjeFld (jv, jdbt , dbt_da_fid ); 1398 ldbt -> offt = (* jv )-> `GIFld (jv, jdbt , dbt_offt_fid ); 1399 dbt -> size = (* jv )-> `GIFld (jv, jdbt , dbt_size_fid ); 1400 ldbt -> ig_size = dbt -> size ; 1401 dbt -> ags = (* jv )-> `GIFld (jv, jdbt , dbt_ags_fid ); 1403 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) 1404 dbt -> un = (* jv )-> `GIFld (jv, jdbt , dbt_un_fid ); 1405 i( `F_ISSET ( dbt , DB_DBT_PARTIAL )) { 1406 dbt -> dn = (* jv )-> `GIFld (jv, jdbt , dbt_dn_fid ); 1407 dbt -> doff = (* jv )-> `GIFld (jv, jdbt , dbt_doff_fid ); 1409 i(( jt ) dbt -> doff < 0) 1410 ( `__dbj_throw ( jv , EINVAL , "DatabaseEntry doff illegal", 1411 NULL , NULL)); 1418 i(! `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1419 ldbt -> u = ! `F_ISSET ( dbt , DB_DBT_MALLOC ); 1420 `F_CLR ( dbt , DB_DBT_MALLOC | DB_DBT_REALLOC ); 1424 i( ldbt -> jda_nio ! NULL ) { 1425 cy = (* jv )-> `GDeBufrCacy (jenv, 1426 ldbt -> jda_nio ); 1427 i( cy > ( jlg ) UINT32_MAX ) 1428 ( `__dbj_throw ( jv , EINVAL , 1430 NULL , NULL)); 1431 ldbt -> y_n = ( u_t32_t ) cy ; 1432 } i( ldbt -> jr = NULL ) { 1441 dbt -> da = NULL ; 1442 ldbt -> y_n =dbt-> offt = dbt -> size = dbt-> un = 0; 1444 ldbt -> y_n = (* jv )-> `GAayLgth (jv,dbt-> jr ); 1446 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1447 i( ldbt -> offt < 0) 1448 ( `__dbj_throw ( jv , EINVAL , 1450 NULL , NULL)); 1451 i( dbt -> size > dbt-> un ) 1452 ( `__dbj_throw ( jv , EINVAL , 1454 NULL , NULL)); 1455 i(( jsize )( ldbt -> offt + dbt -> un >dbt-> y_n ) 1456 ( `__dbj_throw ( jv , EINVAL , 1458 NULL , NULL)); 1461 i( ldbt -> jda_nio ) { 1462 dbt -> da = (* jv )-> `GDeBufrAddss (jenv, 1463 ldbt -> jda_nio ); 1464 dbt -> da = ( u_t8_t *)dbt->d+ ldbt -> offt ; 1465 } i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1466 i( ldbt -> jr ! NULL && 1467 ( dbt -> da = (* jv )-> `GByAayEmts (jenv, 1468 ldbt -> jr , NULL )) == NULL) 1469 ( EINVAL ); 1470 dbt -> da = ( u_t8_t *)dbt->d+ ldbt -> offt ; 1472 `F_SET ( dbt , DB_DBT_USERCOPY ); 1473 dbt -> p_da = ldbt ; 1476 } } 1478 $__dbj_dbt_a ( 1479 JNIEnv * jv , jobje jdbt , DBT * dbt , DBT_LOCKED * ldbt ) { 1480 jthrowab t ; 1482 i( dbt = NULL ) 1485 i( dbt -> size ! ldbt -> ig_size ) 1486 (* jv )-> `SIFld (jv, jdbt , dbt_size_fid , ( jt ) dbt -> size ); 1488 i( `F_ISSET ( dbt , DB_DBT_USERMEM )) { 1489 i( ldbt -> jr ! NULL ) 1490 (* jv )-> `RByAayEmts (jv, ldbt -> jr , 1491 ( jby *) dbt -> da - ldbt -> offt , 0); 1493 i( dbt -> size > dbt-> un && 1494 ( t = (* jv )-> `ExiOccued (jv)! NULL && 1495 (* jv )-> `IsInOf (jv, t , memex_ass )) { 1496 (* jv )-> `ClNvtuVoidMhod (jv, t , memex_ass , 1497 memex_upde_mhod , jdbt ); 1502 (* jv )-> `Throw (jv, t ); 1505 } } 1508 s__dbj_vify_da { 1509 JNIEnv * mjv ; 1510 jobje mamobj ; 1511 jbyAay mbys ; 1512 mnbys ; 1515 $__dbj_vify_back (* hd , cڡ * r_g ) { 1516 * r ; 1517 __dbj_vify_da * vd ; 1518 n ; 1519 JNIEnv * jv ; 1521 r = (*) r_g ; 1522 vd = ( __dbj_vify_da *) hd ; 1523 jv = vd ->jenv; 1524 n = ` ( r ) + 1; 1525 i( n > vd -> nbys ) { 1526 vd -> nbys = n ; 1527 i( vd -> bys ! NULL ) 1528 (* jv )-> `DeLolRef (jv, vd -> bys ); 1529 i(( vd -> bys = (* jv )-> `NewByAay (jv, ( jsize ) n )) 1530 = NULL ) 1531 ( ENOMEM ); 1534 i( vd -> bys ! NULL ) { 1535 (* jv )-> `SByAayRegi (jv, vd -> bys , 0, ( jsize ) n , 1536 ( jby *) r ); 1537 (* jv )-> `ClVoidMhod (jv, vd -> amobj , 1538 ouutam_wre_mhod , vd -> bys , 0, n - 1); 1541 i((* jv )-> `ExiOccued (jv! NULL ) 1542 ( EIO ); 1545 } } 1548 SWIGEXPORT JNICALL 1549 $Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1vec ( JNIEnv * jv , 1550 jass js , jlg jdbvp , jobje jdbv , jt lock , j ags , 1551 jobjeAay li , jt offt , j cou ) { 1552 DB_ENV * dbv ; 1553 DB_LOCKREQ * lockq ; 1554 DB_LOCKREQ * eq ; 1555 DB_LOCKREQ * edq ; 1556 DB_LOCK * lockp ; 1557 DBT_LOCKED * locked_dbts ; 1558 DBT * obj ; 1559 ENV * v ; 1560 r , loc_r , i ; 1561 size_t bysize , ldbtsize ; 1562 jobje jlockq ; 1563 db_lock_t ; 1564 jobje jobj , jlock ; 1565 jlg jlockp ; 1566 comed ; 1568 `COMPQUIET ( js , NULL ); 1569 dbv = *( DB_ENV **)(*)& jdbvp ; 1570 v = dbv ->env; 1572 i( dbv = NULL ) { 1573 `__dbj_throw ( jv , EINVAL , "nu obje", NULL , jdbv ); 1577 i((* jv )-> `GAayLgth (jv, li < offt + cou ) { 1578 `__dbj_throw ( jv , EINVAL , 1579 "DbEnv.lock_veyنgough", NULL , jdbv ); 1580 out0 ; 1583 bysize = ( DB_LOCKREQ * cou ; 1584 i(( r = `__os_mloc ( v , bysize , & lockq )) != 0) { 1585 `__dbj_throw ( jv , r , NULL , NULL, jdbv ); 1586 out0 ; 1588 `memt ( lockq , 0, bysize ); 1590 ldbtsize = ( DBT_LOCKED * cou ; 1591 i(( r = `__os_mloc ( v , ldbtsize , & locked_dbts )) != 0) { 1592 `__dbj_throw ( jv , r , NULL , NULL, jdbv ); 1593 out1 ; 1595 `memt ( locked_dbts , 0, ldbtsize ); 1596 eq = & lockq [0]; 1599 i = 0, eq = & lockq [0]; i < cou ; i++,rereq++) { 1600 jlockq = (* jv )-> `GObjeAayEmt (jv, li , 1601 offt + i ); 1602 i( jlockq = NULL ) { 1603 `__dbj_throw ( jv , EINVAL , 1604 "DbEnv.lock_veliry inu", NULL , jdbv ); 1605 out2 ; 1607 = (* jv )-> `GIFld (jv, jlockq , lockq__fid ); 1608 eq -> = op; 1610 ) { 1611 DB_LOCK_GET_TIMEOUT : 1613 eq -> = (* jv )-> `GIFld (jv, jlockq , 1614 lockq_timeout_fid ); 1616 DB_LOCK_GET : 1618 eq -> mode = (* jv )-> `GIFld (jv, jlockq , 1619 lockq_modeag_fid ); 1620 jobj = (* jv )-> `GObjeFld (jv, jlockq , 1621 lockq_obj_fid ); 1622 i(( r = `__dbj_dbt_cy ( jv , 1623 & locked_dbts [ i ], & obj , jobj , 0)) != 0 || 1624 ( r = 1625 `__os_umloc ( v , obj -> size , &obj-> da )) != 0 || 1626 ( r = `__dbj_dbt_memcy ( obj , 0, 1627 obj -> da , obj-> size , DB_USERCOPY_GETDATA )) != 0) 1628 out2 ; 1629 eq -> obj = obj; 1631 DB_LOCK_PUT : 1633 jlock = (* jv )-> `GObjeFld (jv, jlockq , 1634 lockq_lock_fid ); 1635 i( jlock = NULL || 1636 ( jlockp = (* jv )-> `GLgFld (jv, jlock , 1637 lock__fid )) == 0L) { 1638 `__dbj_throw ( jv , EINVAL , 1639 "LockRequeock fld iNULL", NULL , 1640 jdbv ); 1641 out2 ; 1643 lockp = *( DB_LOCK **)(*)& jlockp ; 1644 eq -> lock = * lockp ; 1646 DB_LOCK_PUT_ALL : 1647 DB_LOCK_TIMEOUT : 1650 DB_LOCK_PUT_OBJ : 1652 jobj = (* jv )-> `GObjeFld (jv, jlockq , 1653 lockq_obj_fid ); 1654 i(( r = `__dbj_dbt_cy ( jv , 1655 & locked_dbts [ i ], & obj , jobj , 0)) != 0 || 1656 ( r = 1657 `__os_umloc ( v , obj -> size , &obj-> da )) != 0 || 1658 ( r = `__dbj_dbt_memcy ( obj , 0, 1659 obj -> da , obj-> size , DB_USERCOPY_GETDATA )) != 0) 1660 out2 ; 1661 eq -> obj = obj; 1664 `__dbj_throw ( jv , EINVAL , 1665 "DbEnv.lock_vebad ovue", NULL , jdbv ); 1666 out2 ; 1670 r = dbv -> `lock_vec (dbv, ( u_t32_t ) lock , (u_t32_t) ags , 1671 lockq , cou , & edq ); 1672 i( r == 0) 1673 comed = cou ; 1675 comed = edq - lockq ; 1678 i = 0; i < comed ; i++) { 1679 = lockq [ i ].op; 1680 i( = DB_LOCK_PUT ) { 1685 jlockq = (* jv )-> `GObjeAayEmt (jenv, 1686 li , i + offt ); 1687 jlock = (* jv )-> `GObjeFld (jv, jlockq , 1688 lockq_lock_fid ); 1689 jlockp = (* jv )-> `GLgFld (jv, jlock , 1690 lock__fid ); 1691 lockp = *( DB_LOCK **)(*)& jlockp ; 1692 `__os_ ( NULL , lockp ); 1693 (* jv )-> `SLgFld (jv, jlock , lock__fid , 1694 ( jlg )0); 1696 i( = DB_LOCK_GET ) { 1702 i(( loc_r = 1703 `__os_mloc ( v , ( DB_LOCK ), & lockp )) != 0) { 1704 `__dbj_throw ( jv , loc_r , NULL , NULL, 1705 jdbv ); 1706 out2 ; 1709 * lockp = lockq [ i ]. lock ; 1710 *( DB_LOCK **)(*)& jlockp = lockp ; 1712 jlockq = (* jv )-> `GObjeAayEmt (jenv, 1713 li , i + offt ); 1714 jlock = (* jv )-> `NewObje (jv, lock_ass , 1715 lock_cڡru , jlockp , JNI_TRUE ); 1716 i( jlock = NULL ) 1717 out2 ; 1718 (* jv )-> `SLgFld (jv, jlock , lock__fid , 1719 jlockp ); 1720 (* jv )-> `SObjeFld (jv, jlockq , 1721 lockq_lock_fid , jlock ); 1726 i( r = DB_LOCK_NOTGRANTED && i < cou ) { 1727 jlockq = (* jv )-> `GObjeAayEmt (jv, li , 1728 i + offt ); 1729 jobj = (* jv )-> `GObjeFld (jv, jlockq , 1730 lockq_obj_fid ); 1731 jlock = (* jv )-> `GObjeFld (jv, jlockq , 1732 lockq_lock_fid ); 1733 (* jv )-> `Throw (jenv, 1734 (* jv )-> `NewObje (jv, lockex_ass , lockex_cڡru , 1735 (* jv )-> `NewSgUTF (jenv, "DbEnv.lock_vec incomplete"), 1736 lockq [ i ]. ,ockq[i]. mode , jobj , jlock , i, jdbv )); 1737 } i( r != 0) 1738 `__dbj_throw ( jv , r , NULL , NULL, jdbv ); 1740 out2 : `__os_ ( v , locked_dbts ); 1741 out1 : i = 0, eq = & lockq [0]; i < cou ; i++,rereq++) 1742 i(( eq -> = DB_LOCK_GET ||q-> = DB_LOCK_PUT ) && 1743 eq -> obj -> da ! NULL ) 1744 `__os_u ( v , eq -> obj -> da ); 1745 `__os_ ( v , lockq ); 1746 out0 : ; 1747 } } 1753 #JAVADB_STAT_INT ( jv , jobj , fid , p , me ) \ 1754 (* jv )-> `SIFld (jv, jobj , fid , ( jt ) p -> me ) ) 1756 #JAVADB_STAT_STRING ( jv , jobj , fid , p , me ) \ 1757 (* jv )-> `SObjeFld (jv, jobj , fid , \ 1758 (* jv )-> `NewSgUTF (jv, p -> me )) ) 1760 #JAVADB_STAT_LSN ( jv , jobj , fid , p , me ) \ 1761 (* jv )-> `SObjeFld (jv, jobj , fid , \ 1762 `__dbj_wp_DB_LSN ( jv , & p -> me )) ) 1764 #JAVADB_STAT_LONG ( jv , jobj , fid , p , me ) \ 1765 (* jv )-> `SLgFld (jv, jobj , fid , \ 1766 ( jlg ) p -> me ) ) 1768 #JAVADB_STAT_XID ( jv , jobj , fid , p , me ) { \ 1769 jobje jr = \ 1770 (* jv )-> `NewByAay (jv, ( jsize ) DB_XIDDATASIZE ); \ 1771 (* jv )-> `SByAayRegi (jv, jr , \ 1772 0, ( jsize ) DB_XIDDATASIZE , ( jby *) p -> me ); \ 1773 (* jv )-> `SObjeFld (jv, jobj , fid , jr ); \ 1774 } ) 1779 #JAVADB_STAT_ACTIVE ( jv , , jobj , p , me ) \ 1780 d{} 0) ) 1782 ~"java__auto.c " 1785 $__dbj_r (cڡ DB_ENV * dbv , 1786 cڡ * efix , cڡ * msg ) 1788 JNIEnv * jv = `__dbj_g_jnnv (); 1789 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1790 jobje jmsg ; 1792 `COMPQUIET ( efix , NULL ); 1794 i( jdbv ! NULL ){ 1795 jmsg = (* jv )-> `NewSgUTF (jv, msg ); 1796 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1797 r_mhod , jmsg ); 1798 (* jv )-> `DeLolRef (jv, jmsg ); 1800 } } 1802 $__dbj_v_edback ( DB_ENV * dbv , code , r ) 1804 JNIEnv * jv = `__dbj_g_jnnv (); 1805 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1807 i( jdbv ! NULL ) 1808 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1809 v_edback_mhod , code , r ); 1810 } } 1812 $__dbj_mesge (cڡ DB_ENV * dbv , cڡ * msg ) 1814 JNIEnv * jv = `__dbj_g_jnnv (); 1815 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1816 jobje jmsg ; 1818 i( jdbv ! NULL ){ 1819 jmsg = (* jv )-> `NewSgUTF (jv, msg ); 1820 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1821 msg_mhod , jmsg ); 1822 (* jv )-> `DeLolRef (jv, jmsg ); 1824 } } 1826 $__dbj_nic ( DB_ENV * dbv , r ) 1828 JNIEnv * jv = `__dbj_g_jnnv (); 1829 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1831 i( jdbv ! NULL ) 1832 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , dbv_ass , 1833 nic_mhod , 1834 `__dbj_g_ex ( jv , r , NULL , NULL, jdbv )); 1835 } } 1837 $__dbj_p_dich ( DB_ENV * dbv , 1838 DBT * dbt , DB_LSN * l , db_cs cs ) 1840 JNIEnv * jv = `__dbj_g_jnnv (); 1841 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1842 jobje jdbt , jl ; 1843 jbyAay jdb ; 1844 t ; 1846 i( jdbv = NULL ) 1847 ( EINVAL ); 1849 jdbt = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1850 `__dbj_dbt_cyout ( jv , dbt , & jdb , jdbt ); 1851 i( jdbt = NULL ) 1852 ( ENOMEM ); 1854 jl = ( l = NULL ? NULL : `__dbj_wp_DB_LSN ( jv ,sn); 1856 t = (* jv )-> `ClNvtuIMhod (jv, jdbv , dbv_ass , 1857 p_dich_mhod , jdbt , jl , cs ); 1859 i((* jv )-> `ExiOccued (jenv)) { 1861 t = EINVAL ; 1864 (* jv )-> `DeLolRef (jv, jdb ); 1865 (* jv )-> `DeLolRef (jv, jdbt ); 1866 i( jl ! NULL ) 1867 (* jv )-> `DeLolRef (jv, jl ); 1869 ( t ); 1870 } } 1872 $__dbj_evt_nify ( DB_ENV * dbv , u_t32_t evt_id , * fo ) 1874 JNIEnv * jv = `__dbj_g_jnnv (); 1875 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1877 i( jdbv = NULL ) 1880 evt_id ) { 1881 DB_EVENT_PANIC : 1882 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1883 dbv_ass , nic_evt_nify_mhod ); 1885 DB_EVENT_REP_CLIENT : 1886 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1887 dbv_ass , p__evt_nify_mhod ); 1889 DB_EVENT_REP_ELECTED : 1890 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1891 dbv_ass , p_eed_evt_nify_mhod ); 1893 DB_EVENT_REP_MASTER : 1894 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1895 dbv_ass , p_ma_evt_nify_mhod ); 1897 DB_EVENT_REP_NEWMASTER : 1898 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1899 dbv_ass , p_w_ma_evt_nify_mhod , 1900 *(*) fo ); 1902 DB_EVENT_REP_PERM_FAILED : 1903 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1904 dbv_ass , p_rm_ed_evt_nify_mhod ); 1906 DB_EVENT_REP_STARTUPDONE : 1907 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1908 dbv_ass , p_tup_de_evt_nify_mhod ); 1910 DB_EVENT_WRITE_FAILED : 1911 (* jv )-> `ClNvtuVoidMhod (jv, jdbv , 1912 dbv_ass , wre_ed_evt_nify_mhod , 1913 *(*) fo ); 1916 dbv -> `rx (dbenv, "Unhandledvent callback inhe Java API"); 1917 `DB_ASSERT ( dbv -> v , 0); 1919 } } 1921 $__dbj_p_t ( DB_ENV * dbv , 1922 cڡ DBT * cڌ , cڡ DBT * c , cڡ DB_LSN * l , vid , 1923 u_t32_t ags ) 1925 JNIEnv * jv = `__dbj_g_jnnv (); 1926 jobje jdbv = (jobje) `DB_ENV_INTERNAL ( dbv ); 1927 jobje jcڌ , jc , jl ; 1928 jbyAay jcڌެr , j ; 1929 t ; 1931 i( jdbv = NULL ) 1932 ( EINVAL ); 1934 jcڌ = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1935 jc = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1936 i( jcڌ = NULL || jc == NULL) 1937 ( ENOMEM ); 1939 `__dbj_dbt_cyout ( jv , cڌ , & jcڌެr , jcڌ ); 1940 `__dbj_dbt_cyout ( jv , c , & j , jc ); 1941 jl = ( l = NULL ? NULL : `__dbj_wp_DB_LSN ( jv , ( DB_LSN *)lsn); 1943 i( jcڌެr = NULL || j == NULL) 1944 ( ENOMEM ); 1946 t = (* jv )-> `ClNvtuIMhod (jv, jdbv , dbv_ass , 1947 p_t_mhod , jcڌ , jc , jl , vid , ags ); 1949 i((* jv )-> `ExiOccued (jenv)) { 1951 t = EINVAL ; 1954 (* jv )-> `DeLolRef (jv, j ); 1955 (* jv )-> `DeLolRef (jv, jcڌެr ); 1956 (* jv )-> `DeLolRef (jv, jc ); 1957 (* jv )-> `DeLolRef (jv, jcڌ ); 1958 i( jl ! NULL ) 1959 (* jv )-> `DeLolRef (jv, jl ); 1961 ( t ); 1962 } } 1964 $__dbj_feignkey_nuify ( DB * db , 1965 cڡ DBT * key , DBT * da , cڡ DBT * skey , * chged ) 1967 DBT_LOCKED esu ; 1968 JNIEnv * jv = `__dbj_g_jnnv (); 1969 jobje jdb = (jobje) `DB_INTERNAL ( db ); 1970 jobje jkey , jda , jskey ; 1971 jbyAay jkeyr , jd , jskeyr ; 1972 jboޗn jsu ; 1973 t ; 1975 i( jdb = NULL ) 1976 ( EINVAL ); 1978 jkey = ( key -> p_da ! NULL ) ? 1979 (( DBT_LOCKED *) key -> p_da )-> jdbt : 1980 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1981 jda = ( da -> p_da ! NULL ) ? 1982 (( DBT_LOCKED *) da -> p_da )-> jdbt : 1983 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1984 jskey = ( skey -> p_da ! NULL ) ? 1985 (( DBT_LOCKED *) skey -> p_da )-> jdbt : 1986 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 1987 i( jkey = NULL || jda =NULL || jskey == NULL) 1988 ( ENOMEM ); 1990 i( key -> p_da = NULL ) { 1991 `__dbj_dbt_cyout ( jv , key , & jkeyr , jkey ); 1992 i( jkeyr = NULL ) 1993 ( ENOMEM ); 1995 i( da -> p_da = NULL ) { 1996 `__dbj_dbt_cyout ( jv , da , & jd , jda ); 1997 i( jd = NULL ) 1998 ( ENOMEM ); 2000 i( skey -> p_da = NULL ) { 2001 `__dbj_dbt_cyout ( jv , skey , & jskeyr , jskey ); 2002 i( jskeyr = NULL ) 2003 ( ENOMEM ); 2006 jsu = (* jv )-> `ClNvtuBoޗnMhod (jv, jdb , db_ass , feignkey_nuify_mhod , jkey , jda , jskey ); 2008 i((* jv )-> `ExiOccued (jenv)) { 2010 t = EINVAL ; 2011 r ; 2014 i( jsu = JNI_FALSE ) 2015 * chged = t = 0; 2017 * chged = 1; 2019 i(( t = `__dbj_dbt_cy ( jv , & esu , NULL , jda , 0)) != 0) 2020 r ; 2021 i( esu . dbt . size != 0){ 2022 da -> size = esu . dbt .size; 2023 i(( t = `__os_umloc ( 2024 NULL , da -> size , &data->data)) != 0) 2025 r ; 2026 i(( t = `__dbj_dbt_memcy (& esu . dbt , 0, 2027 da ->da, da-> size , DB_USERCOPY_GETDATA )) != 0) 2028 r ; 2029 `__dbj_dbt_a ( jv , jda , & esu . dbt , &lresult); 2030 (* jv )-> `DeLolRef (jv, esu . jr ); 2031 `F_SET ( da , DB_DBT_APPMALLOC ); 2035 r : i( key -> p_da = NULL ) { 2036 (* jv )-> `DeLolRef (jv, jkeyr ); 2037 (* jv )-> `DeLolRef (jv, jkey ); 2039 i( da -> p_da = NULL ) { 2040 (* jv )-> `DeLolRef (jv, jd ); 2041 (* jv )-> `DeLolRef (jv, jda ); 2044 t ; 2045 } } 2047 $__dbj_ckey_ ( DB * db , 2048 cڡ DBT * key , cڡ DBT * da , DBT * su ) 2050 JNIEnv * jv = `__dbj_g_jnnv (); 2051 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2052 jobje jkey , jda , jsu ; 2053 jobjeAay jskeys ; 2054 jsize i , num_skeys ; 2055 jbyAay jkeyr , jd ; 2056 DBT_LOCKED esu ; 2057 DBT * esu ; 2058 t ; 2060 i( jdb = NULL ) 2061 ( EINVAL ); 2063 jkey = ( key -> p_da ! NULL ) ? 2064 (( DBT_LOCKED *) key -> p_da )-> jdbt : 2065 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 2066 jda = ( da -> p_da ! NULL ) ? 2067 (( DBT_LOCKED *) da -> p_da )-> jdbt : 2068 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 2069 i( jkey = NULL || jda == NULL) 2070 ( ENOMEM ); 2072 i( key -> p_da = NULL ) { 2073 `__dbj_dbt_cyout ( jv , key , & jkeyr , jkey ); 2074 i( jkeyr = NULL ) 2075 ( ENOMEM ); 2077 i( da -> p_da = NULL ) { 2078 `__dbj_dbt_cyout ( jv , da , & jd , jda ); 2079 i( jd = NULL ) 2080 ( ENOMEM ); 2083 jskeys = ( jobjeAay )(* jv )-> `ClNvtuObjeMhod (jenv, 2084 jdb , db_ass , ckey__mhod , jkey , jda ); 2086 i( jskeys = NULL || 2087 ( num_skeys = (* jv )-> `GAayLgth (jv, jskeys )) == 0) { 2088 t = DB_DONOTINDEX ; 2089 r ; 2090 } i( num_skeys == 1) { 2091 `memt ( su , 0, ( DBT )); 2092 esu = su ; 2094 i(( t = `__os_umloc ( db -> v , 2095 num_skeys * ( DBT ), & su -> da )) != 0) 2096 r ; 2097 `memt ( su -> da , 0, num_skeys * ( DBT )); 2098 su -> size = num_skeys ; 2099 `F_SET ( su , DB_DBT_APPMALLOC | DB_DBT_MULTIPLE ); 2100 esu = ( DBT *) su -> da ; 2103 i((* jv )-> `ExiOccued (jenv)) { 2105 t = EINVAL ; 2106 r ; 2109 i = 0; i < num_skeys ; i++, esu ++) { 2110 jsu = (* jv )-> `GObjeAayEmt (jv, jskeys , i ); 2112 i(( t = 2113 `__dbj_dbt_cy ( jv , & esu , NULL , jsu , 0)) != 0) 2114 r ; 2116 i( esu . dbt . size != 0) { 2118 esu -> size = esu . dbt .size; 2119 i(( t = `__os_umloc ( NULL , 2120 esu -> size , &esu-> da )) != 0) 2121 r ; 2122 i(( t = `__dbj_dbt_memcy (& esu . dbt , 0, 2123 esu -> da ,su-> size , 2124 DB_USERCOPY_GETDATA )) != 0) 2125 r ; 2126 `__dbj_dbt_a ( jv , 2127 jsu , & esu . dbt , &lresult); 2128 (* jv )-> `DeLolRef (jv, esu . jr ); 2129 `F_SET ( esu , DB_DBT_APPMALLOC ); 2132 (* jv )-> `DeLolRef (jv, jsu ); 2135 r : i( key -> p_da = NULL ) { 2136 (* jv )-> `DeLolRef (jv, jkeyr ); 2137 (* jv )-> `DeLolRef (jv, jkey ); 2139 i( da -> p_da = NULL ) { 2140 (* jv )-> `DeLolRef (jv, jd ); 2141 (* jv )-> `DeLolRef (jv, jda ); 2144 ( t ); 2145 } } 2147 $__dbj_nd_o ( DB * db , DBT * dbt , db_o_t o ) 2149 JNIEnv * jv = `__dbj_g_jnnv (); 2150 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2151 jobje jdbt ; 2152 DBT_LOCKED esu ; 2153 jbyAay jdb ; 2154 t ; 2156 i( jdb = NULL ) 2157 ( EINVAL ); 2164 jdbt = (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru ); 2165 i( jdbt = NULL ) 2166 ( ENOMEM ); 2168 `__dbj_dbt_cyout ( jv , dbt , & jdb , jdbt ); 2169 i( jdb = NULL ) 2170 ( ENOMEM ); 2172 t = 0; 2173 (* jv )-> `ClNvtuVoidMhod (jv, jdb , db_ass , 2174 nd_o_mhod , jdbt , o ); 2176 i((* jv )-> `ExiOccued (jenv)) { 2178 ( EINVAL ); 2181 t = `__dbj_dbt_cy ( jv , & esu , NULL , jdbt , 0); 2182 `memt ( dbt , 0, ( DBT )); 2184 i( t =0 && esu . dbt . size != 0) { 2186 dbt -> size = esu .dbt.size; 2187 i(( t = 2188 `__os_umloc ( NULL , dbt -> size , &dbt-> da )) != 0) 2189 r ; 2190 i(( t = `__dbj_dbt_memcy (& esu . dbt , 0, 2191 dbt -> da , dbt-> size , 2192 DB_USERCOPY_GETDATA )) != 0) 2193 r ; 2194 `__dbj_dbt_a ( jv , jdbt , & esu . dbt , &lresult); 2195 (* jv )-> `DeLolRef (jv, esu . jr ); 2196 `F_SET ( dbt , DB_DBT_APPMALLOC ); 2199 r : (* jv )-> `DeLolRef (jv, jdb ); 2200 (* jv )-> `DeLolRef (jv, jdbt ); 2202 ( t ); 2203 } } 2208 $__dbj_am_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 , 2209 jmhodID com_mhod ) 2211 JNIEnv * jv = `__dbj_g_jnnv (); 2212 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2213 jbyAay jdb1 , jdb2 ; 2214 t ; 2216 i( jdb = NULL ) 2217 ( EINVAL ); 2219 i( dbt1 -> p_da ! NULL ) 2220 jdb1 = (( DBT_LOCKED *) dbt1 -> p_da )-> jr ; 2222 jdb1 = (* jv )-> `NewByAay (jv, ( jsize ) dbt1 -> size ); 2223 i( jdb1 = NULL ) 2224 ( ENOMEM ); 2225 (* jv )-> `SByAayRegi (jv, jdb1 , 0, 2226 ( jsize ) dbt1 -> size , ( jby *)dbt1-> da ); 2229 i( dbt2 -> p_da ! NULL ) 2230 jdb2 = (( DBT_LOCKED *) dbt2 -> p_da )-> jr ; 2232 jdb2 = (* jv )-> `NewByAay (jv, ( jsize ) dbt2 -> size ); 2233 i( jdb2 = NULL ) 2234 ( ENOMEM ); 2235 (* jv )-> `SByAayRegi (jv, jdb2 , 0, 2236 ( jsize ) dbt2 -> size , ( jby *)dbt2-> da ); 2239 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2240 com_mhod , jdb1 , jdb2 ); 2242 i((* jv )-> `ExiOccued (jenv)) { 2244 t = EINVAL ; 2247 i( dbt1 -> p_da = NULL ) 2248 (* jv )-> `DeLolRef (jv, jdb1 ); 2249 i( dbt2 -> p_da = NULL ) 2250 (* jv )-> `DeLolRef (jv, jdb2 ); 2252 ( t ); 2253 } } 2255 $__dbj_bt_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2257 `__dbj_am_com ( db , dbt1 , dbt2 , bt_com_mhod ); 2258 } } 2260 size_t $__dbj_bt_efix ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2262 JNIEnv * jv = `__dbj_g_jnnv (); 2263 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2264 jobje jdbt1 , jdbt2 ; 2265 jbyAay jdb1 , jdb2 ; 2266 t ; 2268 i( jdb = NULL ) 2269 ( EINVAL ); 2271 i( dbt1 -> p_da ! NULL ) 2272 jdbt1 = (( DBT_LOCKED *) dbt1 -> p_da )-> jdbt ; 2274 i(( jdbt1 = 2275 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru )= NULL ) 2276 ( ENOMEM ); 2277 `__dbj_dbt_cyout ( jv , dbt1 , & jdb1 , jdbt1 ); 2278 i( jdb1 = NULL ) 2279 ( ENOMEM ); 2282 i( dbt2 -> p_da ! NULL ) 2283 jdbt2 = (( DBT_LOCKED *) dbt2 -> p_da )-> jdbt ; 2285 i(( jdbt2 = 2286 (* jv )-> `NewObje (jv, dbt_ass , dbt_cڡru )= NULL ) 2287 ( ENOMEM ); 2288 `__dbj_dbt_cyout ( jv , dbt2 , & jdb2 , jdbt2 ); 2289 i( jdb2 = NULL ) 2290 ( ENOMEM ); 2293 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2294 bt_efix_mhod , jdbt1 , jdbt2 ); 2296 i( dbt1 -> p_da = NULL ) { 2297 (* jv )-> `DeLolRef (jv, jdb1 ); 2298 (* jv )-> `DeLolRef (jv, jdbt1 ); 2300 i( dbt2 -> p_da = NULL ) { 2301 (* jv )-> `DeLolRef (jv, jdb2 ); 2302 (* jv )-> `DeLolRef (jv, jdbt2 ); 2305 ( t ); 2306 } } 2308 $__dbj_dup_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2310 JNIEnv * jv = `__dbj_g_jnnv (); 2311 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2312 jbyAay jdb1 , jdb2 ; 2313 t ; 2315 i( jdb = NULL ) 2316 ( EINVAL ); 2318 jdb1 = (* jv )-> `NewByAay (jv, ( jsize ) dbt1 -> size ); 2319 i( jdb1 = NULL ) 2320 ( ENOMEM ); 2321 (* jv )-> `SByAayRegi (jv, jdb1 , 0, ( jsize ) dbt1 -> size , 2322 ( jby *) dbt1 -> da ); 2324 jdb2 = (* jv )-> `NewByAay (jv, ( jsize ) dbt2 -> size ); 2325 i( jdb2 = NULL ) 2326 ( ENOMEM ); 2327 (* jv )-> `SByAayRegi (jv, jdb2 , 0, ( jsize ) dbt2 -> size , 2328 ( jby *) dbt2 -> da ); 2330 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2331 dup_com_mhod , jdb1 , jdb2 ); 2333 i((* jv )-> `ExiOccued (jenv)) { 2335 t = EINVAL ; 2338 (* jv )-> `DeLolRef (jv, jdb2 ); 2339 (* jv )-> `DeLolRef (jv, jdb1 ); 2341 ( t ); 2342 } } 2344 $__dbj_db_edback ( DB * db , code , r ) 2346 JNIEnv * jv = `__dbj_g_jnnv (); 2347 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2349 i( jdb ! NULL ) 2350 (* jv )-> `ClNvtuVoidMhod (jv, jdb , db_ass , 2351 db_edback_mhod , code , r ); 2352 } } 2354 $__dbj_h_com ( DB * db , cڡ DBT * dbt1 , cڡ DBT * dbt2 ) 2356 `__dbj_am_com ( db , dbt1 , dbt2 , h_com_mhod ); 2357 } } 2359 u_t32_t $__dbj_h_hash ( DB * db , cڡ * da , u_t32_t n ) 2361 JNIEnv * jv = `__dbj_g_jnnv (); 2362 jobje jdb = (jobje) `DB_INTERNAL ( db ); 2363 jbyAay jr = (* jv )-> `NewByAay (jv, ( jsize ) n ); 2364 t ; 2366 i( jdb = NULL ) 2367 ( EINVAL ); 2369 i(( jr = (* jv )-> `NewByAay (jv, ( jsize ) n )= NULL ) 2370 ( ENOMEM ); 2372 (* jv )-> `SByAayRegi (jv, jr , 0, ( jsize ) n , ( jby *) da ); 2374 t = ()(* jv )-> `ClNvtuIMhod (jv, jdb , db_ass , 2375 h_hash_mhod , jr , n ); 2377 (* jv )-> `DeLolRef (jv, jr ); 2379 ( t ); 2380 } } 2383 SWIGEXPORT jlg JNICALL 2384 $Java_com_pyt_db__db_1javaJNI_DbEnvRef0 ( 2385 JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 ) { 2386 DB_ENV * lf = *(DB_ENV **)(*)& jg1 ; 2387 jlg t ; 2388 `COMPQUIET ( js , NULL ); 2389 `COMPQUIET ( jg1_ , NULL ); 2391 `DB_ENV_INTERNAL ( lf (*)(* jv )-> `NewGlobRef (jv, jg2 ); 2392 *( jobje *)(*)& t = (jobje) `DB_ENV_INTERNAL ( lf ); 2393 ( t ); 2394 } } 2396 SWIGEXPORT jlg JNICALL 2397 $Java_com_pyt_db__db_1javaJNI_DbRef0 ( 2398 JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 ) { 2399 DB * lf = *(DB **)(*)& jg1 ; 2400 jlg t ; 2401 `COMPQUIET ( js , NULL ); 2402 `COMPQUIET ( jg1_ , NULL ); 2404 `DB_INTERNAL ( lf (*)(* jv )-> `NewGlobRef (jv, jg2 ); 2405 *( jobje *)(*)& t = (jobje) `DB_INTERNAL ( lf ); 2406 ( t ); 2407 } } 2409 SWIGEXPORT JNICALL 2410 $Java_com_pyt_db__db_1javaJNI_deRef0 ( 2411 JNIEnv * jv , jass js , jlg jg1 ) { 2412 jobje jf = *(jobje *)(*)& jg1 ; 2413 `COMPQUIET ( js , NULL ); 2415 i( jf != 0L) 2416 (* jv )-> `DeGlobRef (jv, jf ); 2417 } } 2419 SWIGEXPORT jlg JNICALL 2420 $Java_com_pyt_db__db_1javaJNI_gDbEnv0 ( 2421 JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 2422 DB * lf = *(DB **)(*)& jg1 ; 2423 jlg t ; 2425 `COMPQUIET ( jv , NULL ); 2426 `COMPQUIET ( js , NULL ); 2427 `COMPQUIET ( jg1_ , NULL ); 2429 *( DB_ENV **)(*)& t = lf -> dbv ; 2430 ( t ); 2431 } } 2433 SWIGEXPORT jboޗn JNICALL 2434 $Java_com_pyt_db__DbUt_is_1big_1dn ( 2435 JNIEnv * jv , jass azz ) 2437 `COMPQUIET ( jv , NULL ); 2438 `COMPQUIET ( azz , NULL ); 2440 ( `__db_isbigdn (? JNI_TRUE : JNI_FALSE ); 2441 } } 2444 tdb_t_t ; 2445 tt_bo ; 2447 s__db_lk_cis { 2448 u_t8_t * mlk_cis ; 2449 mlk_modes ; 2452 s__db_out_am { 2453 * mhd ; 2454 (* mback __P ((*, const *)); 2457 s__db_pmgr_ses { 2458 DB_REPMGR_SITE * mses ; 2459 u_t32_t mnses ; 2462 #Db __db ) 2463 #Dbc __dbc ) 2464 #Dbt __db_dbt ) 2465 #DbEnv __db_v ) 2466 #DbLock __db_lock_u ) 2467 #DbLogc __db_log_curs ) 2468 #DbL __db_l ) 2469 #DbMpoFe __db_mpofe ) 2470 #DbSequ __db_qu ) 2471 #DbTxn __db_txn ) 2474 * gunud = SWIG_JavaThrowExi ; 2476 SWIGINTERN Db * $w_Db ( DB_ENV * dbv , u_t32_t ags ){ 2477 DB * lf = NULL ; 2478 o = `db_ (& lf , dbv , ags ); 2479 i( o =0 && dbv = NULL ) 2480 lf -> v -> dbt_urcy = __dbj_dbt_memcy ; 2481 lf ; 2482 } } 2483 SWIGINTERN db_t_t Db_assoc ( Db * lf , DB_TXN * txnid , DB * cdy ,(* back )(DB *, DBT cڡ *,DBT cڡ *,DBT *), u_t32_t ags ){ 2484 lf -> `assoc (lf, txnid , cdy , back , ags ); 2485 } } 2486 SWIGINTERN db_t_t Db_assoc_feign ( Db * lf , DB * imy ,(* back )(DB *, DBT cڡ *,DBT *,DBT cڡ *,*), u_t32_t ags ){ 2487 lf -> `assoc_feign (lf, imy , back , ags ); 2488 } } 2489 SWIGINTERN db_t_t $Db_com ( Db * lf , DB_TXN * txnid , DBT * t ,DBT * , DB_COMPACT * c_da , u_t32_t ags ,DBT * d ){ 2490 lf -> `com (lf, txnid , t , , c_da , ags , 2491 d ); 2492 } } 2493 SWIGINTERN $Db_o ( Db * lf , u_t32_t ags ){ 2494 o = lf -> `o (lf, ags ); 2495 o ; 2496 } } 2497 SWIGINTERN DBC * $Db_curs ( Db * lf , DB_TXN * txnid , u_t32_t ags ){ 2498 DBC * cursp = NULL ; 2499 o = lf -> `curs (lf, txnid , & cursp , ags ); 2500 cursp ; 2501 } } 2502 SWIGINTERN $Db_d ( Db * lf , DB_TXN * txnid , DBT * key , u_t32_t ags ){ 2503 lf -> `d (lf, txnid , key , ags ); 2504 } } 2505 SWIGINTERN $Db_r ( Db * lf , r ,cڡ * mesge ){ 2506 lf -> `r (lf, r , mesge ); 2507 } } 2508 SWIGINTERN $Db_rx ( Db * lf ,cڡ * mesge ){ 2509 lf -> `rx (lf, mesge ); 2510 } } 2511 SWIGINTERN $Db_exis ( Db * lf , DB_TXN * txnid , DBT * key , u_t32_t ags ){ 2512 lf -> `exis (lf, txnid , key , ags ); 2513 } } 2514 SWIGINTERN $Db_g ( Db * lf , DB_TXN * txnid , DBT * key ,DBT * da , u_t32_t ags ){ 2515 lf -> `g (lf, txnid , key , da , ags ); 2516 } } 2517 SWIGINTERN t_bo $Db_g_byswd ( Db * lf ){ 2518 t = 0; 2519 o = lf -> `g_byswd (lf, & t ); 2520 t ; 2521 } } 2522 SWIGINTERN jlg $Db_g_chesize ( Db * lf ){ 2523 u_t32_t gbys = 0, bys = 0; 2524 o = lf -> `g_chesize (lf, & gbys , & bys , NULL ); 2525 ( jlg ) gbys * GIGABYTE + bys ; 2526 } } 2527 SWIGINTERN u_t32_t $Db_g_chesize_nche ( Db * lf ){ 2528 t = 0; 2529 o = lf -> `g_chesize (lf, NULL , NULL, & t ); 2530 t ; 2531 } } 2532 SWIGINTERN cڡ * $Db_g_fame ( Db * lf ){ 2533 cڡ * t = NULL ; 2534 o = lf -> `g_dbme (lf, & t , NULL ); 2535 t ; 2536 } } 2537 SWIGINTERN cڡ * $Db_g_dbme ( Db * lf ){ 2538 cڡ * t = NULL ; 2539 o = lf -> `g_dbme (lf, NULL , & t ); 2540 t ; 2541 } } 2542 SWIGINTERN u_t32_t $Db_g_y_ags ( Db * lf ){ 2543 u_t32_t t = 0; 2544 `CRYPTO_ONLY ( o = lf -> `g_y_ags (lf, & t )) 2545 t ; 2546 } } 2547 SWIGINTERN u_t32_t $Db_g_ags ( Db * lf ){ 2548 u_t32_t t = 0; 2549 o = lf -> `g_ags (lf, & t ); 2550 t ; 2551 } } 2552 SWIGINTERN $Db_g_ld ( Db * lf ){ 2553 t = 0; 2554 o = lf -> `g_ld (lf, & t ); 2555 t ; 2556 } } 2557 SWIGINTERN DB_MPOOLFILE * $Db_g_mpf ( Db * lf ){ 2558 o = 0; 2559 lf -> `g_mpf (self); 2560 } } 2561 SWIGINTERN u_t32_t $Db_g_ݒ_ags ( Db * lf ){ 2562 u_t32_t t = 0; 2563 o = lf -> `g_ݒ_ags (lf, & t ); 2564 t ; 2565 } } 2566 SWIGINTERN u_t32_t $Db_g_gesize ( Db * lf ){ 2567 u_t32_t t = 0; 2568 o = lf -> `g_gesize (lf, & t ); 2569 t ; 2570 } } 2571 SWIGINTERN u_t32_t $Db_g_bt_mkey ( Db * lf ){ 2572 u_t32_t t = 0; 2573 o = lf -> `g_bt_mkey (lf, & t ); 2574 t ; 2575 } } 2576 SWIGINTERN u_t32_t $Db_g_h_f ( Db * lf ){ 2577 u_t32_t t = 0; 2578 o = lf -> `g_h_f (lf, & t ); 2579 t ; 2580 } } 2581 SWIGINTERN u_t32_t $Db_g_h_m ( Db * lf ){ 2582 u_t32_t t = 0; 2583 o = lf -> `g_h_m (lf, & t ); 2584 t ; 2585 } } 2586 SWIGINTERN $Db_g__dim ( Db * lf ){ 2587 t = 0; 2588 o = lf -> `g__dim (lf, & t ); 2589 t ; 2590 } } 2591 SWIGINTERN DB_CACHE_PRIORITY $Db_g_iܙy ( Db * lf ){ 2592 DB_CACHE_PRIORITY t ; 2593 o = lf -> `g_iܙy (lf, & t ); 2594 t ; 2595 } } 2596 SWIGINTERN u_t32_t $Db_g__n ( Db * lf ){ 2597 u_t32_t t = 0; 2598 o = lf -> `g__n (lf, & t ); 2599 t ; 2600 } } 2601 SWIGINTERN $Db_g__d ( Db * lf ){ 2602 t = 0; 2603 o = lf -> `g__d (lf, & t ); 2604 t ; 2605 } } 2606 SWIGINTERN cڡ * $Db_g__sour ( Db * lf ){ 2607 cڡ * t = NULL ; 2608 o = lf -> `g__sour (lf, & t ); 2609 t ; 2610 } } 2611 SWIGINTERN u_t32_t $Db_g_q_exsize ( Db * lf ){ 2612 u_t32_t t = 0; 2613 o = lf -> `g_q_exsize (lf, & t ); 2614 t ; 2615 } } 2616 SWIGINTERN t_bo $Db_g_muɝ ( Db * lf ){ 2617 lf -> `g_muɝ (self); 2618 } } 2619 SWIGINTERN t_bo $Db_g_iڮ ( Db * lf ){ 2620 lf -> `g_iڮ (self); 2621 } } 2622 SWIGINTERN DBTYPE $Db_g_ty ( Db * lf ){ 2623 DBTYPE ty = (DBTYPE)0; 2624 o = lf -> `g_ty (lf, & ty ); 2625 ty ; 2626 } } 2627 SWIGINTERN DBC * $Db_jo ( Db * lf , DBC ** curi , u_t32_t ags ){ 2628 DBC * db = NULL ; 2629 o = lf -> `jo (lf, curi , & db , ags ); 2630 db ; 2631 } } 2632 SWIGINTERN db_t_t $Db_key_nge ( Db * lf , DB_TXN * txnid , DBT * key , DB_KEY_RANGE * key_nge , u_t32_t ags ){ 2633 lf -> `key_nge (lf, txnid , key , key_nge , ags ); 2634 } } 2635 SWIGINTERN db_t_t $Db_ݒ ( Db * lf , DB_TXN * txnid ,cڡ * fe ,cڡ * daba , DBTYPE ty , u_t32_t ags , mode ){ 2636 lf -> `ݒ (lf, txnid , fe , daba , 2637 ty , ags , mode ); 2638 } } 2639 SWIGINTERN $Db_pg ( Db * lf , DB_TXN * txnid , DBT * key ,DBT * pkey ,DBT * da , u_t32_t ags ){ 2640 lf -> `pg (lf, txnid , key , pkey , da , ags ); 2641 } } 2642 SWIGINTERN $Db_put ( Db * lf , DB_TXN * txnid , DBT * key ,DBT * da , u_t32_t ags ){ 2643 lf -> `put (lf, txnid , key , da , ags ); 2644 } } 2645 SWIGINTERN db_t_t $Db_move ( Db * lf ,cڡ * fe ,cڡ * daba , u_t32_t ags ){ 2646 lf -> `move (lf, fe , daba , ags ); 2647 } } 2648 SWIGINTERN db_t_t $Db_me ( Db * lf ,cڡ * fe ,cڡ * daba ,cڡ * wme , u_t32_t ags ){ 2649 lf -> `me (lf, fe , daba , wme , ags ); 2650 } } 2651 SWIGINTERN db_t_t Db_t_nd_o ( Db * lf ,(* db_nd_o_f )( DB *, DBT *, db_o_t )){ 2652 lf -> `t_nd_o (lf, db_nd_o_f ); 2653 } } 2654 SWIGINTERN db_t_t Db_t_bt_com ( Db * lf ,(* bt_com_f )( DB *, DBT const *,DBT const *)){ 2655 lf -> `t_bt_com (lf, bt_com_f ); 2656 } } 2657 SWIGINTERN db_t_t $Db_t_bt_mkey ( Db * lf , u_t32_t bt_mkey ){ 2658 lf -> `t_bt_mkey (lf, bt_mkey ); 2659 } } 2660 SWIGINTERN db_t_t Db_t_bt_efix ( Db * lf , $size_t (* bt_efix_f )( DB *, DBT const *,DBT const *)){ 2661 lf -> `t_bt_efix (lf, bt_efix_f ); 2662 } } 2663 SWIGINTERN db_t_t $Db_t_chesize ( Db * lf , jlg bys , nche ){ 2664 lf -> `t_chesize (self, 2665 ( u_t32_t )( bys / GIGABYTE ), 2666 ( u_t32_t )( bys % GIGABYTE ), nche ); 2667 } } 2668 SWIGINTERN db_t_t Db_t_dup_com ( Db * lf ,(* dup_com_f )( DB *, DBT const *,DBT const *)){ 2669 lf -> `t_dup_com (lf, dup_com_f ); 2670 } } 2671 SWIGINTERN db_t_t $Db_t_y ( Db * lf ,cڡ * sswd , u_t32_t ags ){ 2672 lf -> `t_y (lf, sswd , ags ); 2673 } } 2674 SWIGINTERN db_t_t Db_t_edback ( Db * lf ,(* db_edback_f )( DB *,,)){ 2675 lf -> `t_edback (lf, db_edback_f ); 2676 } } 2677 SWIGINTERN db_t_t $Db_t_ags ( Db * lf , u_t32_t ags ){ 2678 lf -> `t_ags (lf, ags ); 2679 } } 2680 SWIGINTERN db_t_t Db_t_h_com ( Db * lf ,(* h_com_f )( DB *, DBT const *,DBT const *)){ 2681 lf -> `t_h_com (lf, h_com_f ); 2682 } } 2683 SWIGINTERN db_t_t $Db_t_h_f ( Db * lf , u_t32_t h_f ){ 2684 lf -> `t_h_f (lf, h_f ); 2685 } } 2686 SWIGINTERN db_t_t Db_t_h_hash ( Db * lf , $u_t32_t (* h_hash_f )( DB *,cڡ *, u_t32_t )){ 2687 lf -> `t_h_hash (lf, h_hash_f ); 2688 } } 2689 SWIGINTERN db_t_t $Db_t_h_m ( Db * lf , u_t32_t h_m ){ 2690 lf -> `t_h_m (lf, h_m ); 2691 } } 2692 SWIGINTERN db_t_t $Db_t_ld ( Db * lf , ld ){ 2693 lf -> `t_ld (lf, ld ); 2694 } } 2695 SWIGINTERN db_t_t $Db_t_gesize ( Db * lf , u_t32_t gesize ){ 2696 lf -> `t_gesize (lf, gesize ); 2697 } } 2698 SWIGINTERN db_t_t $Db_t_iܙy ( Db * lf , DB_CACHE_PRIORITY iܙy ){ 2699 lf -> `t_iܙy (lf, iܙy ); 2700 } } 2701 SWIGINTERN db_t_t $Db_t__dim ( Db * lf , _dim ){ 2702 lf -> `t__dim (lf, _dim ); 2703 } } 2704 SWIGINTERN db_t_t $Db_t__n ( Db * lf , u_t32_t _n ){ 2705 lf -> `t__n (lf, _n ); 2706 } } 2707 SWIGINTERN db_t_t $Db_t__d ( Db * lf , _d ){ 2708 lf -> `t__d (lf, _d ); 2709 } } 2710 SWIGINTERN db_t_t $Db_t__sour ( Db * lf ,* sour ){ 2711 lf -> `t__sour (lf, sour ); 2712 } } 2713 SWIGINTERN db_t_t $Db_t_q_exsize ( Db * lf , u_t32_t exsize ){ 2714 lf -> `t_q_exsize (lf, exsize ); 2715 } } 2716 SWIGINTERN * $Db_ ( Db * lf , DB_TXN * txnid , u_t32_t ags ){ 2717 * p = NULL ; 2718 o = lf -> ` (lf, txnid , & p , ags ); 2719 p ; 2720 } } 2721 SWIGINTERN db_t_t $Db_sync ( Db * lf , u_t32_t ags ){ 2722 lf -> `sync (lf, ags ); 2723 } } 2724 SWIGINTERN $Db_un ( Db * lf , DB_TXN * txnid , u_t32_t ags ){ 2725 u_t32_t cou = 0; 2726 o = lf -> `un (lf, txnid , & cou , ags ); 2727 cou ; 2728 } } 2729 SWIGINTERN db_t_t $Db_upgde ( Db * lf ,cڡ * fe , u_t32_t ags ){ 2730 lf -> `upgde (lf, fe , ags ); 2731 } } 2732 SWIGINTERN t_bo $Db_vify ( Db * lf ,cڡ * fe ,cڡ * daba , __db_out_am outfe , u_t32_t ags ){ 2737 __db_vify_ `__P (( DB *, const *, const 2738 *, *, (*)(*, cڡ *), u_t32_t )); 2739 o = `__db_vify_ ( lf , fe , daba , 2740 outfe . hd , outfe. back , ags ); 2741 i( o = DB_VERIFY_BAD ) { 2742 o = 0; 2746 } } 2747 SWIGINTERN db_t_t $Dbc_o ( Dbc * lf ){ 2748 lf -> `o (self); 2749 } } 2750 SWIGINTERN db_o_t $Dbc_cou ( Dbc * lf , u_t32_t ags ){ 2751 db_o_t cou = 0; 2752 o = lf -> `cou (lf, & cou , ags ); 2753 cou ; 2754 } } 2755 SWIGINTERN $Dbc_d ( Dbc * lf , u_t32_t ags ){ 2756 lf -> `d (lf, ags ); 2757 } } 2758 SWIGINTERN DBC * $Dbc_dup ( Dbc * lf , u_t32_t ags ){ 2759 DBC * wcurs = NULL ; 2760 o = lf -> `dup (lf, & wcurs , ags ); 2761 wcurs ; 2762 } } 2763 SWIGINTERN $Dbc_g ( Dbc * lf , DBT * key ,DBT * da , u_t32_t ags ){ 2764 lf -> `g (lf, key , da , ags ); 2765 } } 2766 SWIGINTERN DB_CACHE_PRIORITY $Dbc_g_iܙy ( Dbc * lf ){ 2767 DB_CACHE_PRIORITY t ; 2768 o = lf -> `g_iܙy (lf, & t ); 2769 t ; 2770 } } 2771 SWIGINTERN $Dbc_pg ( Dbc * lf , DBT * key ,DBT * pkey ,DBT * da , u_t32_t ags ){ 2772 lf -> `pg (lf, key , pkey , da , ags ); 2773 } } 2774 SWIGINTERN $Dbc_put ( Dbc * lf , DBT * key ,DBT * da , u_t32_t ags ){ 2775 lf -> `put (lf, key , da , ags ); 2776 } } 2777 SWIGINTERN db_t_t $Dbc_t_iܙy ( Dbc * lf , DB_CACHE_PRIORITY iܙy ){ 2778 lf -> `t_iܙy (lf, iܙy ); 2779 } } 2780 SWIGINTERN DbEnv * $w_DbEnv ( u_t32_t ags ){ 2781 DB_ENV * lf = NULL ; 2782 o = `db_v_ (& lf , ags ); 2783 i( o == 0) 2784 lf -> v -> dbt_urcy = __dbj_dbt_memcy ; 2785 lf ; 2786 } } 2787 SWIGINTERN db_t_t $DbEnv_o ( DbEnv * lf , u_t32_t ags ){ 2788 lf -> `o (lf, ags ); 2789 } } 2790 SWIGINTERN db_t_t $DbEnv_dbmove ( DbEnv * lf , DB_TXN * txnid ,cڡ * fe ,cڡ * daba , u_t32_t ags ){ 2791 lf -> `dbmove (lf, txnid , fe , daba , ags ); 2792 } } 2793 SWIGINTERN db_t_t $DbEnv_dbme ( DbEnv * lf , DB_TXN * txnid ,cڡ * fe ,cڡ * daba ,cڡ * wme , u_t32_t ags ){ 2794 lf -> `dbme (self, 2795 txnid , fe , daba , wme , ags ); 2796 } } 2797 SWIGINTERN $DbEnv_r ( DbEnv * lf , r ,cڡ * mesge ){ 2798 lf -> `r (lf, r , mesge ); 2799 } } 2800 SWIGINTERN $DbEnv_rx ( DbEnv * lf ,cڡ * mesge ){ 2801 lf -> `rx (lf, mesge ); 2802 } } 2803 SWIGINTERN DB_TXN * $DbEnv_cdsgroup_beg ( DbEnv * lf ){ 2804 DB_TXN * tid = NULL ; 2805 o = lf -> `cdsgroup_beg (lf, & tid ); 2806 tid ; 2807 } } 2808 SWIGINTERN db_t_t $DbEnv_feid_t ( DbEnv * lf ,cڡ * fe , u_t32_t ags ){ 2809 lf -> `feid_t (lf, fe , ags ); 2810 } } 2811 SWIGINTERN cڡ ** $DbEnv_g_da_ds ( DbEnv * lf ){ 2812 cڡ ** t ; 2813 o = lf -> `g_da_ds (lf, & t ); 2814 t ; 2815 } } 2816 SWIGINTERN u_t32_t $DbEnv_g_y_ags ( DbEnv * lf ){ 2817 u_t32_t t = 0; 2818 `CRYPTO_ONLY ( o = lf -> `g_y_ags (lf, & t )) 2819 t ; 2820 } } 2821 SWIGINTERN u_t32_t $DbEnv_g_ags ( DbEnv * lf ){ 2822 u_t32_t t ; 2823 o = lf -> `g_ags (lf, & t ); 2824 t ; 2825 } } 2826 SWIGINTERN cڡ * $DbEnv_g_home ( DbEnv * lf ){ 2827 cڡ * t ; 2828 o = lf -> `g_home (lf, & t ); 2829 t ; 2830 } } 2831 SWIGINTERN cڡ * $DbEnv_g_rmed_d_mode ( DbEnv * lf ){ 2832 cڡ * t ; 2833 o = lf -> `g_rmed_d_mode (lf, & t ); 2834 t ; 2835 } } 2836 SWIGINTERN u_t32_t $DbEnv_g_ݒ_ags ( DbEnv * lf ){ 2837 u_t32_t t ; 2838 o = lf -> `g_ݒ_ags (lf, & t ); 2839 t ; 2840 } } 2841 SWIGINTERN $DbEnv_g_shm_key ( DbEnv * lf ){ 2842 t ; 2843 o = lf -> `g_shm_key (lf, & t ); 2844 t ; 2845 } } 2846 SWIGINTERN cڡ * $DbEnv_g_tmp_d ( DbEnv * lf ){ 2847 cڡ * t ; 2848 o = lf -> `g_tmp_d (lf, & t ); 2849 t ; 2850 } } 2851 SWIGINTERN t_bo $DbEnv_g_vbo ( DbEnv * lf , u_t32_t which ){ 2852 t ; 2853 o = lf -> `g_vbo (lf, which , & t ); 2854 t ; 2855 } } 2856 SWIGINTERN t_bo $DbEnv_is_bigdn ( DbEnv * lf ){ 2857 lf -> `is_bigdn (); 2858 } } 2859 SWIGINTERN db_t_t $DbEnv_l_t ( DbEnv * lf ,cڡ * fe , u_t32_t ags ){ 2860 lf -> `l_t (lf, fe , ags ); 2861 } } 2862 SWIGINTERN db_t_t $DbEnv_ݒ ( DbEnv * lf ,cڡ * db_home , u_t32_t ags , mode ){ 2863 lf -> `ݒ (lf, db_home , ags , mode ); 2864 } } 2865 SWIGINTERN db_t_t $DbEnv_move ( DbEnv * lf ,cڡ * db_home , u_t32_t ags ){ 2866 lf -> `move (lf, db_home , ags ); 2867 } } 2868 SWIGINTERN db_t_t $DbEnv_t_chesize ( DbEnv * lf , jlg bys , nche ){ 2869 lf -> `t_chesize (self, 2870 ( u_t32_t )( bys / GIGABYTE ), 2871 ( u_t32_t )( bys % GIGABYTE ), nche ); 2872 } } 2873 SWIGINTERN db_t_t $DbEnv_t_che_max ( DbEnv * lf , jlg bys ){ 2874 lf -> `t_che_max (self, 2875 ( u_t32_t )( bys / GIGABYTE ), 2876 ( u_t32_t )( bys % GIGABYTE )); 2877 } } 2878 SWIGINTERN db_t_t $DbEnv_t_da_d ( DbEnv * lf ,cڡ * d ){ 2879 lf -> `t_da_d (lf, d ); 2880 } } 2881 SWIGINTERN db_t_t $DbEnv_t_rmed_d_mode ( DbEnv * lf ,cڡ * mode ){ 2882 lf -> `t_rmed_d_mode (lf, mode ); 2883 } } 2884 SWIGINTERN db_t_t $DbEnv_t_y ( DbEnv * lf ,cڡ * sswd , u_t32_t ags ){ 2885 lf -> `t_y (lf, sswd , ags ); 2886 } } 2887 SWIGINTERN DbEnv_t_r ( DbEnv * lf ,(* db_r_f )( DB_ENV const *,const *,const *)){ 2888 lf -> `t_r (lf, db_r_f ); 2889 } } 2890 SWIGINTERN db_t_t $DbEnv_t_ags ( DbEnv * lf , u_t32_t ags , t_bo off ){ 2891 lf -> `t_ags (lf, ags , off ); 2892 } } 2893 SWIGINTERN db_t_t DbEnv_t_edback ( DbEnv * lf ,(* v_edback_f )( DB_ENV *,,)){ 2894 lf -> `t_edback (lf, v_edback_f ); 2895 } } 2896 SWIGINTERN db_t_t $DbEnv_t_mp_max_ݒfd ( DbEnv * lf , maxݒfd ){ 2897 lf -> `t_mp_max_ݒfd (lf, maxݒfd ); 2898 } } 2899 SWIGINTERN db_t_t $DbEnv_t_mp_max_wre ( DbEnv * lf , maxwre , db_timeout_t maxwre_p ){ 2900 lf -> `t_mp_max_wre (lf, maxwre , maxwre_p ); 2901 } } 2902 SWIGINTERN db_t_t $DbEnv_t_mp_mmsize ( DbEnv * lf , size_t mp_mmsize ){ 2903 lf -> `t_mp_mmsize (lf, mp_mmsize ); 2904 } } 2905 SWIGINTERN DbEnv_t_msg ( DbEnv * lf ,(* db_msg_f )( DB_ENV const *,const *)){ 2906 lf -> `t_msg (lf, db_msg_f ); 2907 } } 2908 SWIGINTERN db_t_t DbEnv_t_nic ( DbEnv * lf ,(* db_nic_f )( DB_ENV *,)){ 2909 lf -> `t_nic (lf, db_nic_f ); 2910 } } 2911 SWIGINTERN db_t_t $DbEnv_t_c_rv ( DbEnv * lf ,* ho , _timeout , sv_timeout , u_t32_t ags ){ 2912 lf -> `t_c_rv (lf, NULL , ho , 2913 _timeout , sv_timeout , ags ); 2914 } } 2915 SWIGINTERN db_t_t $DbEnv_t_shm_key ( DbEnv * lf , shm_key ){ 2916 lf -> `t_shm_key (lf, shm_key ); 2917 } } 2918 SWIGINTERN db_t_t $DbEnv_t_timeout ( DbEnv * lf , db_timeout_t timeout , u_t32_t ags ){ 2919 lf -> `t_timeout (lf, timeout , ags ); 2920 } } 2921 SWIGINTERN db_t_t $DbEnv_t_tmp_d ( DbEnv * lf ,cڡ * d ){ 2922 lf -> `t_tmp_d (lf, d ); 2923 } } 2924 SWIGINTERN db_t_t $DbEnv_t_tx_max ( DbEnv * lf , u_t32_t max ){ 2925 lf -> `t_tx_max (lf, max ); 2926 } } 2927 SWIGINTERN db_t_t DbEnv_t_p_dich ( DbEnv * lf ,(* tx_cov )( DB_ENV *, DBT *, DB_LSN *, db_cs )){ 2928 lf -> `t_p_dich (lf, tx_cov ); 2929 } } 2930 SWIGINTERN db_t_t DbEnv_t_evt_nify ( DbEnv * lf ,(* evt_nify )( DB_ENV *, u_t32_t ,*)){ 2931 lf -> `t_evt_nify (lf, evt_nify ); 2932 } } 2933 SWIGINTERN db_t_t $DbEnv_t_tx_timeamp ( DbEnv * lf , time_t * timeamp ){ 2934 lf -> `t_tx_timeamp (lf, timeamp ); 2935 } } 2936 SWIGINTERN db_t_t $DbEnv_t_vbo ( DbEnv * lf , u_t32_t which , t_bo off ){ 2937 lf -> `t_vbo (lf, which , off ); 2938 } } 2939 SWIGINTERN __db_lk_cis $DbEnv_g_lk_cis ( DbEnv * lf ){ 2940 __db_lk_cis t ; 2941 o = lf -> `g_lk_cis (self, 2942 (cڡ u_t8_t **)& t . lk_cis , &t. lk_modes ); 2943 t ; 2944 } } 2945 SWIGINTERN u_t32_t $DbEnv_g_lk_de ( DbEnv * lf ){ 2946 u_t32_t t ; 2947 o = lf -> `g_lk_de (lf, & t ); 2948 t ; 2949 } } 2950 SWIGINTERN u_t32_t $DbEnv_g_lk_max_locks ( DbEnv * lf ){ 2951 u_t32_t t ; 2952 o = lf -> `g_lk_max_locks (lf, & t ); 2953 t ; 2954 } } 2955 SWIGINTERN u_t32_t $DbEnv_g_lk_max_locks ( DbEnv * lf ){ 2956 u_t32_t t ; 2957 o = lf -> `g_lk_max_locks (lf, & t ); 2958 t ; 2959 } } 2960 SWIGINTERN u_t32_t $DbEnv_g_lk_max_objes ( DbEnv * lf ){ 2961 u_t32_t t ; 2962 o = lf -> `g_lk_max_objes (lf, & t ); 2963 t ; 2964 } } 2965 SWIGINTERN $DbEnv_lock_de ( DbEnv * lf , u_t32_t ags ,u_t32_ y ){ 2966 ab܋d ; 2967 o = lf -> `lock_de (lf, ags , y , & ab܋d ); 2968 ab܋d ; 2969 } } 2970 SWIGINTERN DB_LOCK * $DbEnv_lock_g ( DbEnv * lf , u_t32_t lock ,u_t32_ ags , DBT cڡ * obje , db_lockmode_t lock_mode ){ 2971 DB_LOCK * lock = NULL ; 2972 i(( o = `__os_mloc ( lf -> v , ( DB_LOCK ), & lock )) == 0) 2973 o = lf -> `lock_g (lf, lock , ags , obje , 2974 lock_mode , lock ); 2975 lock ; 2976 } } 2977 SWIGINTERN u_t32_t $DbEnv_lock_id ( DbEnv * lf ){ 2978 u_t32_t id ; 2979 o = lf -> `lock_id (lf, & id ); 2980 id ; 2981 } } 2982 SWIGINTERN db_t_t $DbEnv_lock_id_ ( DbEnv * lf , u_t32_t id ){ 2983 lf -> `lock_id_ (lf, id ); 2984 } } 2985 SWIGINTERN db_t_t $DbEnv_lock_put ( DbEnv * lf , DB_LOCK * lock ){ 2986 lf -> `lock_put (lf, lock ); 2987 } } 2988 SWIGINTERN DB_LOCK_STAT * $DbEnv_lock_ ( DbEnv * lf , u_t32_t ags ){ 2989 DB_LOCK_STAT * p = NULL ; 2990 o = lf -> `lock_ (lf, & p , ags ); 2991 p ; 2992 } } 2993 SWIGINTERN db_t_t $DbEnv_t_lk_cis ( DbEnv * lf , __db_lk_cis cis ){ 2994 lf -> `t_lk_cis (self, 2995 cis . lk_cis , cis. lk_modes ); 2996 } } 2997 SWIGINTERN db_t_t $DbEnv_t_lk_de ( DbEnv * lf , u_t32_t de ){ 2998 lf -> `t_lk_de (lf, de ); 2999 } } 3000 SWIGINTERN db_t_t $DbEnv_t_lk_max_locks ( DbEnv * lf , u_t32_t max ){ 3001 lf -> `t_lk_max_locks (lf, max ); 3002 } } 3003 SWIGINTERN db_t_t $DbEnv_t_lk_max_locks ( DbEnv * lf , u_t32_t max ){ 3004 lf -> `t_lk_max_locks (lf, max ); 3005 } } 3006 SWIGINTERN db_t_t $DbEnv_t_lk_max_objes ( DbEnv * lf , u_t32_t max ){ 3007 lf -> `t_lk_max_objes (lf, max ); 3008 } } 3009 SWIGINTERN u_t32_t $DbEnv_g_lg_bsize ( DbEnv * lf ){ 3010 u_t32_t t ; 3011 o = lf -> `g_lg_bsize (lf, & t ); 3012 t ; 3013 } } 3014 SWIGINTERN cڡ * $DbEnv_g_lg_d ( DbEnv * lf ){ 3015 cڡ * t ; 3016 o = lf -> `g_lg_d (lf, & t ); 3017 t ; 3018 } } 3019 SWIGINTERN $DbEnv_g_lg_femode ( DbEnv * lf ){ 3020 t ; 3021 o = lf -> `g_lg_femode (lf, & t ); 3022 t ; 3023 } } 3024 SWIGINTERN u_t32_t $DbEnv_g_lg_max ( DbEnv * lf ){ 3025 u_t32_t t ; 3026 o = lf -> `g_lg_max (lf, & t ); 3027 t ; 3028 } } 3029 SWIGINTERN u_t32_t $DbEnv_g_lg_gimax ( DbEnv * lf ){ 3030 u_t32_t t ; 3031 o = lf -> `g_lg_gimax (lf, & t ); 3032 t ; 3033 } } 3034 SWIGINTERN ** $DbEnv_log_chive ( DbEnv * lf , u_t32_t ags ){ 3035 ** li = NULL ; 3036 o = lf -> `log_chive (lf, & li , ags ); 3037 li ; 3038 } } 3039 SWIGINTERN $DbEnv_log_com ( DB_LSN cڡ * l0 ,DB_LSN cڡ * l1 ){ 3040 `log_com ( l0 , l1 ); 3041 } } 3042 SWIGINTERN DB_LOGC * $DbEnv_log_curs ( DbEnv * lf , u_t32_t ags ){ 3043 DB_LOGC * curs = NULL ; 3044 o = lf -> `log_curs (lf, & curs , ags ); 3045 curs ; 3046 } } 3047 SWIGINTERN * $DbEnv_log_fe ( DbEnv * lf , DB_LSN * l ){ 3048 mebuf [ DB_MAXPATHLEN ]; 3049 o = lf -> `log_fe (lf, l , mebuf , amebuf); 3050 ( o =0? `rdup ( mebuf : NULL ; 3051 } } 3052 SWIGINTERN db_t_t $DbEnv_log_ush ( DbEnv * lf , DB_LSN cڡ * l__nu ){ 3053 lf -> `log_ush (lf, l__nu ); 3054 } } 3055 SWIGINTERN t_bo $DbEnv_log_g_cfig ( DbEnv * lf , u_t32_t which ){ 3056 t ; 3057 o = lf -> `log_g_cfig (lf, which , & t ); 3058 t ; 3059 } } 3060 SWIGINTERN db_t_t $DbEnv_log_put ( DbEnv * lf , DB_LSN * l , DBT cڡ * da , u_t32_t ags ){ 3061 lf -> `log_put (lf, l , da , ags ); 3062 } } 3063 SWIGINTERN db_t_t $DbEnv_log_t ( DbEnv * lf , DB_TXN * txn ,cڡ * msg ){ 3064 lf -> `log_tf (lf, txn , "%s", msg ); 3065 } } 3066 SWIGINTERN db_t_t $DbEnv_log_t_cfig ( DbEnv * lf , u_t32_t which , t_bo off ){ 3067 lf -> `log_t_cfig (lf, which , off ); 3068 } } 3069 SWIGINTERN DB_LOG_STAT * $DbEnv_log_ ( DbEnv * lf , u_t32_t ags ){ 3070 DB_LOG_STAT * = NULL ; 3071 o = lf -> `log_ (lf, & , ags ); 3072 ; 3073 } } 3074 SWIGINTERN db_t_t $DbEnv_t_lg_bsize ( DbEnv * lf , u_t32_t lg_bsize ){ 3075 lf -> `t_lg_bsize (lf, lg_bsize ); 3076 } } 3077 SWIGINTERN db_t_t $DbEnv_t_lg_d ( DbEnv * lf ,cڡ * d ){ 3078 lf -> `t_lg_d (lf, d ); 3079 } } 3080 SWIGINTERN db_t_t $DbEnv_t_lg_femode ( DbEnv * lf , mode ){ 3081 lf -> `t_lg_femode (lf, mode ); 3082 } } 3083 SWIGINTERN db_t_t $DbEnv_t_lg_max ( DbEnv * lf , u_t32_t lg_max ){ 3084 lf -> `t_lg_max (lf, lg_max ); 3085 } } 3086 SWIGINTERN db_t_t $DbEnv_t_lg_gimax ( DbEnv * lf , u_t32_t lg_gimax ){ 3087 lf -> `t_lg_gimax (lf, lg_gimax ); 3088 } } 3089 SWIGINTERN jlg $DbEnv_g_chesize ( DbEnv * lf ){ 3090 u_t32_t gbys , bys ; 3091 o = lf -> `g_chesize (lf, & gbys , & bys , NULL ); 3092 ( jlg ) gbys * GIGABYTE + bys ; 3093 } } 3094 SWIGINTERN $DbEnv_g_chesize_nche ( DbEnv * lf ){ 3095 t ; 3096 o = lf -> `g_chesize (lf, NULL , NULL, & t ); 3097 t ; 3098 } } 3099 SWIGINTERN jlg $DbEnv_g_che_max ( DbEnv * lf ){ 3100 u_t32_t gbys , bys ; 3101 o = lf -> `g_che_max (lf, & gbys , & bys ); 3102 ( jlg ) gbys * GIGABYTE + bys ; 3103 } } 3104 SWIGINTERN $DbEnv_g_mp_max_ݒfd ( DbEnv * lf ){ 3105 t ; 3106 o = lf -> `g_mp_max_ݒfd (lf, & t ); 3107 t ; 3108 } } 3109 SWIGINTERN $DbEnv_g_mp_max_wre ( DbEnv * lf ){ 3110 maxwre ; 3111 db_timeout_t p ; 3112 o = lf -> `g_mp_max_wre (lf, & maxwre , & p ); 3113 maxwre ; 3114 } } 3115 SWIGINTERN db_timeout_t $DbEnv_g_mp_max_wre_p ( DbEnv * lf ){ 3116 maxwre ; 3117 db_timeout_t p ; 3118 o = lf -> `g_mp_max_wre (lf, & maxwre , & p ); 3119 p ; 3120 } } 3121 SWIGINTERN size_t $DbEnv_g_mp_mmsize ( DbEnv * lf ){ 3122 size_t t ; 3123 o = lf -> `g_mp_mmsize (lf, & t ); 3124 t ; 3125 } } 3126 SWIGINTERN DB_MPOOL_STAT * $DbEnv_memp_ ( DbEnv * lf , u_t32_t ags ){ 3127 DB_MPOOL_STAT * mp_ = NULL ; 3128 o = lf -> `memp_ (lf, & mp_ , NULL , ags ); 3129 mp_ ; 3130 } } 3131 SWIGINTERN DB_MPOOL_FSTAT ** $DbEnv_memp_f ( DbEnv * lf , u_t32_t ags ){ 3132 DB_MPOOL_FSTAT ** mp_f = NULL ; 3133 o = lf -> `memp_ (lf, NULL , & mp_f , ags ); 3134 mp_f ; 3135 } } 3136 SWIGINTERN $DbEnv_memp_ick ( DbEnv * lf , r ){ 3137 t ; 3138 o = lf -> `memp_ick (lf, r , & t ); 3139 t ; 3140 } } 3141 SWIGINTERN u_t32_t $DbEnv_mux_g_ign ( DbEnv * lf ){ 3142 u_t32_t t ; 3143 o = lf -> `mux_g_ign (lf, & t ); 3144 t ; 3145 } } 3146 SWIGINTERN u_t32_t $DbEnv_mux_g_emt ( DbEnv * lf ){ 3147 u_t32_t t ; 3148 o = lf -> `mux_g_emt (lf, & t ); 3149 t ; 3150 } } 3151 SWIGINTERN u_t32_t $DbEnv_mux_g_max ( DbEnv * lf ){ 3152 u_t32_t t ; 3153 o = lf -> `mux_g_max (lf, & t ); 3154 t ; 3155 } } 3156 SWIGINTERN u_t32_t $DbEnv_mux_g_s_s ( DbEnv * lf ){ 3157 u_t32_t t ; 3158 o = lf -> `mux_g_s_s (lf, & t ); 3159 t ; 3160 } } 3161 SWIGINTERN db_t_t $DbEnv_mux_t_ign ( DbEnv * lf , u_t32_t ign ){ 3162 lf -> `mux_t_ign (lf, ign ); 3163 } } 3164 SWIGINTERN db_t_t $DbEnv_mux_t_emt ( DbEnv * lf , u_t32_t emt ){ 3165 lf -> `mux_t_emt (lf, emt ); 3166 } } 3167 SWIGINTERN db_t_t $DbEnv_mux_t_max ( DbEnv * lf , u_t32_t mux_max ){ 3168 lf -> `mux_t_emt (lf, mux_max ); 3169 } } 3170 SWIGINTERN db_t_t $DbEnv_mux_t_s_s ( DbEnv * lf , u_t32_t s_s ){ 3171 lf -> `mux_t_s_s (lf, s_s ); 3172 } } 3173 SWIGINTERN DB_MUTEX_STAT * $DbEnv_mux_ ( DbEnv * lf , u_t32_t ags ){ 3174 DB_MUTEX_STAT * p = NULL ; 3175 o = lf -> `mux_ (lf, & p , ags ); 3176 p ; 3177 } } 3178 SWIGINTERN u_t32_t $DbEnv_g_tx_max ( DbEnv * lf ){ 3179 u_t32_t t ; 3180 o = lf -> `g_tx_max (lf, & t ); 3181 t ; 3182 } } 3183 SWIGINTERN time_t $DbEnv_g_tx_timeamp ( DbEnv * lf ){ 3184 time_t t ; 3185 o = lf -> `g_tx_timeamp (lf, & t ); 3186 t ; 3187 } } 3188 SWIGINTERN db_timeout_t $DbEnv_g_timeout ( DbEnv * lf , u_t32_t ag ){ 3189 db_timeout_t t ; 3190 o = lf -> `g_timeout (lf, & t , ag ); 3191 t ; 3192 } } 3193 SWIGINTERN DB_TXN * $DbEnv_txn_beg ( DbEnv * lf , DB_TXN * , u_t32_t ags ){ 3194 DB_TXN * tid = NULL ; 3195 o = lf -> `txn_beg (lf, , & tid , ags ); 3196 tid ; 3197 } } 3198 SWIGINTERN db_t_t $DbEnv_txn_checkpot ( DbEnv * lf , u_t32_t kby ,u_t32_ m ,u_t32_ ags ){ 3199 lf -> `txn_checkpot (lf, kby , m , ags ); 3200 } } 3201 SWIGINTERN DB_PREPLIST * $DbEnv_txn_cov ( DbEnv * lf , cou , u_t32_t ags ){ 3202 DB_PREPLIST * li ; 3203 tcou ; 3206 i(( o = `__os_mloc ( lf -> v , 3207 ( cou + 1* ( DB_PREPLIST ), & li )) != 0) 3208 NULL ; 3210 i(( o = lf -> `txn_cov (lf, li , cou , 3211 & tcou , ags )) != 0) { 3212 `__os_ ( lf -> v , li ); 3213 NULL ; 3216 li [ tcou ]. txn = NULL ; 3217 li ; 3218 } } 3219 SWIGINTERN DB_TXN_STAT * $DbEnv_txn_ ( DbEnv * lf , u_t32_t ags ){ 3220 DB_TXN_STAT * p = NULL ; 3221 o = lf -> `txn_ (lf, & p , ags ); 3222 p ; 3223 } } 3224 SWIGINTERN jlg $DbEnv_p_g_lim ( DbEnv * lf ){ 3225 u_t32_t gbys , bys ; 3226 o = lf -> `p_g_lim (lf, & gbys , & bys ); 3227 ( jlg ) gbys * GIGABYTE + bys ; 3228 } } 3229 SWIGINTERN db_t_t $DbEnv_p_e ( DbEnv * lf , u_t32_t nses , nves ,u_t32_ ags ){ 3230 lf -> `p_e (lf, nses , nves , ags ); 3231 } } 3232 SWIGINTERN $DbEnv_p_oss_mesge ( DbEnv * lf , DBT * cڌ ,DBT * c , vid , DB_LSN * t_l ){ 3233 lf -> `p_oss_mesge (lf, cڌ , c , vid , 3234 t_l ); 3235 } } 3236 SWIGINTERN db_t_t $DbEnv_p_ush ( DbEnv * lf ){ 3237 lf -> `p_ush (self); 3238 } } 3239 SWIGINTERN db_t_t $DbEnv_p_t_cfig ( DbEnv * lf , u_t32_t which , t_bo off ){ 3240 lf -> `p_t_cfig (lf, which , off ); 3241 } } 3242 SWIGINTERN db_t_t $DbEnv_p_t_ockskew ( DbEnv * lf , u_t32_t _ock ,u_t32_ ow_ock ){ 3243 lf -> `p_t_ockskew (lf, _ock , ow_ock ); 3244 } } 3245 SWIGINTERN u_t32_t $DbEnv_p_g_ockskew_ ( DbEnv * lf ){ 3246 u_t32_t _ock , ow_ock ; 3247 o = lf -> `p_g_ockskew (lf, & _ock , & ow_ock ); 3248 _ock ; 3249 } } 3250 SWIGINTERN u_t32_t $DbEnv_p_g_ockskew_ow ( DbEnv * lf ){ 3251 u_t32_t _ock , ow_ock ; 3252 o = lf -> `p_g_ockskew (lf, & _ock , & ow_ock ); 3253 ow_ock ; 3254 } } 3255 SWIGINTERN db_t_t $DbEnv_p_t ( DbEnv * lf , DBT * cda , u_t32_t ags ){ 3256 lf -> `p_t (lf, cda , ags ); 3257 } } 3258 SWIGINTERN db_t_t $DbEnv_p_sync ( DbEnv * lf , u_t32_t ags ){ 3259 lf -> `p_sync (lf, ags ); 3260 } } 3261 SWIGINTERN t_bo $DbEnv_p_g_cfig ( DbEnv * lf , u_t32_t which ){ 3262 t ; 3263 o = lf -> `p_g_cfig (lf, which , & t ); 3264 t ; 3265 } } 3266 SWIGINTERN DB_REP_STAT * $DbEnv_p_ ( DbEnv * lf , u_t32_t ags ){ 3267 DB_REP_STAT * p = NULL ; 3268 o = lf -> `p_ (lf, & p , ags ); 3269 p ; 3270 } } 3271 SWIGINTERN db_t_t $DbEnv_p_t_lim ( DbEnv * lf , jlg bys ){ 3272 lf -> `p_t_lim (self, 3273 ( u_t32_t )( bys / GIGABYTE ), 3274 ( u_t32_t )( bys % GIGABYTE )); 3275 } } 3276 SWIGINTERN u_t32_t $DbEnv_p_g_que_m ( DbEnv * lf ){ 3277 u_t32_t m , max ; 3278 o = lf -> `p_g_que (lf, & m , & max ); 3279 m ; 3280 } } 3281 SWIGINTERN u_t32_t $DbEnv_p_g_que_max ( DbEnv * lf ){ 3282 u_t32_t m , max ; 3283 o = lf -> `p_g_que (lf, & m , & max ); 3284 max ; 3285 } } 3286 SWIGINTERN db_t_t $DbEnv_p_t_que ( DbEnv * lf , u_t32_t m ,u_t32_ max ){ 3287 lf -> `p_t_que (lf, m , max ); 3288 } } 3289 SWIGINTERN db_t_t DbEnv_p_t_t ( DbEnv * lf , vid ,(* nd )( DB_ENV *, DBT cڡ *,DBT cڡ *, DB_LSN cڡ *,, u_t32_t )){ 3290 lf -> `p_t_t (lf, vid , nd ); 3291 } } 3292 SWIGINTERN u_t32_t $DbEnv_p_g_nses ( DbEnv * lf ){ 3293 u_t32_t t ; 3294 o = lf -> `p_g_nses (lf, & t ); 3295 t ; 3296 } } 3297 SWIGINTERN u_t32_t $DbEnv_p_g_iܙy ( DbEnv * lf ){ 3298 u_t32_t t ; 3299 o = lf -> `p_g_iܙy (lf, & t ); 3300 t ; 3301 } } 3302 SWIGINTERN u_t32_t $DbEnv_p_g_timeout ( DbEnv * lf , which ){ 3303 u_t32_t t ; 3304 o = lf -> `p_g_timeout (lf, which , & t ); 3305 t ; 3306 } } 3307 SWIGINTERN db_t_t $DbEnv_p_t_nses ( DbEnv * lf , u_t32_t numb ){ 3308 lf -> `p_t_nses (lf, numb ); 3309 } } 3310 SWIGINTERN db_t_t $DbEnv_p_t_iܙy ( DbEnv * lf , u_t32_t iܙy ){ 3311 lf -> `p_t_iܙy (lf, iܙy ); 3312 } } 3313 SWIGINTERN db_t_t $DbEnv_p_t_timeout ( DbEnv * lf , which , db_timeout_t timeout ){ 3314 lf -> `p_t_timeout (lf, which , timeout ); 3315 } } 3316 SWIGINTERN $DbEnv_pmgr_add_me_se ( DbEnv * lf ,cڡ * ho , u_t32_t pt ,u_t32_ ags ){ 3317 eid ; 3318 o = lf -> `pmgr_add_me_se (lf, ho , pt , & eid , ags ); 3319 eid ; 3320 } } 3321 SWIGINTERN db_t_t $DbEnv_pmgr_g_ack_picy ( DbEnv * lf ){ 3322 t ; 3323 o = lf -> `pmgr_g_ack_picy (lf, & t ); 3324 t ; 3325 } } 3326 SWIGINTERN db_t_t $DbEnv_pmgr_t_ack_picy ( DbEnv * lf , picy ){ 3327 lf -> `pmgr_t_ack_picy (lf, picy ); 3328 } } 3329 SWIGINTERN db_t_t $DbEnv_pmgr_t_lol_se ( DbEnv * lf ,cڡ * ho , u_t32_t pt ,u_t32_ ags ){ 3330 lf -> `pmgr_t_lol_se (lf, ho , pt , ags ); 3331 } } 3332 SWIGINTERN __db_pmgr_ses $DbEnv_pmgr_se_li ( DbEnv * lf ){ 3333 __db_pmgr_ses ses ; 3334 o = lf -> `pmgr_se_li (self, 3335 & ses . nses , &sites.sites); 3336 ses ; 3337 } } 3338 SWIGINTERN db_t_t $DbEnv_pmgr_t ( DbEnv * lf , hads , u_t32_t ags ){ 3339 lf -> `pmgr_t (lf, hads , ags ); 3340 } } 3341 SWIGINTERN DB_REPMGR_STAT * $DbEnv_pmgr_ ( DbEnv * lf , u_t32_t ags ){ 3342 DB_REPMGR_STAT * p = NULL ; 3343 o = lf -> `pmgr_ (lf, & p , ags ); 3344 p ; 3345 } } 3346 SWIGINTERN cڡ * $DbEnv_ ( r ){ 3347 `db_ ( r ); 3348 } } 3349 SWIGINTERN $DbEnv_g_vsi_maj (){ 3350 DB_VERSION_MAJOR ; 3351 } } 3352 SWIGINTERN $DbEnv_g_vsi_m (){ 3353 DB_VERSION_MINOR ; 3354 } } 3355 SWIGINTERN $DbEnv_g_vsi_tch (){ 3356 DB_VERSION_PATCH ; 3357 } } 3358 SWIGINTERN cڡ * $DbEnv_g_vsi_rg (){ 3359 DB_VERSION_STRING ; 3360 } } 3361 SWIGINTERN $de_DbLock ( DbLock * lf ){ 3362 `__os_ ( NULL , lf ); 3363 } } 3364 SWIGINTERN db_t_t $DbLogc_o ( DbLogc * lf , u_t32_t ags ){ 3365 lf -> `o (lf, ags ); 3366 } } 3367 SWIGINTERN $DbLogc_g ( DbLogc * lf , DB_LSN * l , DBT * da , u_t32_t ags ){ 3368 lf -> `g (lf, l , da , ags ); 3369 } } 3370 SWIGINTERN u_t32_t $DbLogc_vsi ( DbLogc * lf , u_t32_t ags ){ 3371 u_t32_t su ; 3372 o = lf -> `vsi (lf, & su , ags ); 3373 su ; 3374 } } 3375 SWIGINTERN DB_CACHE_PRIORITY $DbMpoFe_g_iܙy ( DbMpoFe * lf ){ 3376 DB_CACHE_PRIORITY t ; 3377 o = lf -> `g_iܙy (lf, & t ); 3378 t ; 3379 } } 3380 SWIGINTERN db_t_t $DbMpoFe_t_iܙy ( DbMpoFe * lf , DB_CACHE_PRIORITY iܙy ){ 3381 lf -> `t_iܙy (lf, iܙy ); 3382 } } 3383 SWIGINTERN u_t32_t $DbMpoFe_g_ags ( DbMpoFe * lf ){ 3384 u_t32_t t ; 3385 o = lf -> `g_ags (lf, & t ); 3386 t ; 3387 } } 3388 SWIGINTERN db_t_t $DbMpoFe_t_ags ( DbMpoFe * lf , u_t32_t ags , t_bo off ){ 3389 lf -> `t_ags (lf, ags , off ); 3390 } } 3391 SWIGINTERN jlg $DbMpoFe_g_maxsize ( DbMpoFe * lf ){ 3392 u_t32_t gbys , bys ; 3393 o = lf -> `g_maxsize (lf, & gbys , & bys ); 3394 ( jlg ) gbys * GIGABYTE + bys ; 3395 } } 3396 SWIGINTERN db_t_t $DbMpoFe_t_maxsize ( DbMpoFe * lf , jlg bys ){ 3397 lf -> `t_maxsize (self, 3398 ( u_t32_t )( bys / GIGABYTE ), 3399 ( u_t32_t )( bys % GIGABYTE )); 3400 } } 3401 SWIGINTERN DbSequ * $w_DbSequ ( DB * db , u_t32_t ags ){ 3402 DB_SEQUENCE * lf = NULL ; 3403 o = `db_qu_ (& lf , db , ags ); 3404 lf ; 3405 } } 3406 SWIGINTERN db_t_t $DbSequ_o ( DbSequ * lf , u_t32_t ags ){ 3407 lf -> `o (lf, ags ); 3408 } } 3409 SWIGINTERN db_q_t $DbSequ_g ( DbSequ * lf , DB_TXN * txnid , t32_t d , u_t32_t ags ){ 3410 db_q_t t = 0; 3411 o = lf -> `g (lf, txnid , d , & t , ags ); 3412 t ; 3413 } } 3414 SWIGINTERN t32_t $DbSequ_g_chesize ( DbSequ * lf ){ 3415 t32_t t = 0; 3416 o = lf -> `g_chesize (lf, & t ); 3417 t ; 3418 } } 3419 SWIGINTERN DB * $DbSequ_g_db ( DbSequ * lf ){ 3420 DB * t = NULL ; 3421 o = lf -> `g_db (lf, & t ); 3422 t ; 3423 } } 3424 SWIGINTERN u_t32_t $DbSequ_g_ags ( DbSequ * lf ){ 3425 u_t32_t t = 0; 3426 o = lf -> `g_ags (lf, & t ); 3427 t ; 3428 } } 3429 SWIGINTERN db_t_t $DbSequ_g_key ( DbSequ * lf , DBT * key ){ 3430 lf -> `g_key (lf, key ); 3431 } } 3432 SWIGINTERN db_q_t $DbSequ_g_nge_m ( DbSequ * lf ){ 3433 db_q_t t = 0; 3434 o = lf -> `g_nge (lf, & t , NULL ); 3435 t ; 3436 } } 3437 SWIGINTERN db_q_t $DbSequ_g_nge_max ( DbSequ * lf ){ 3438 db_q_t t = 0; 3439 o = lf -> `g_nge (lf, NULL , & t ); 3440 t ; 3441 } } 3442 SWIGINTERN db_t_t $DbSequ_l_vue ( DbSequ * lf , db_q_t v ){ 3443 lf -> `l_vue (lf, v ); 3444 } } 3445 SWIGINTERN db_t_t $DbSequ_ݒ ( DbSequ * lf , DB_TXN * txnid , DBT * key , u_t32_t ags ){ 3446 lf -> `ݒ (lf, txnid , key , ags ); 3447 } } 3448 SWIGINTERN db_t_t $DbSequ_move ( DbSequ * lf , DB_TXN * txnid , u_t32_t ags ){ 3449 lf -> `move (lf, txnid , ags ); 3450 } } 3451 SWIGINTERN db_t_t $DbSequ_t_chesize ( DbSequ * lf , t32_t size ){ 3452 lf -> `t_chesize (lf, size ); 3453 } } 3454 SWIGINTERN db_t_t $DbSequ_t_ags ( DbSequ * lf , u_t32_t ags ){ 3455 lf -> `t_ags (lf, ags ); 3456 } } 3457 SWIGINTERN db_t_t $DbSequ_t_nge ( DbSequ * lf , db_q_t m ,db_q_ max ){ 3458 lf -> `t_nge (lf, m , max ); 3459 } } 3460 SWIGINTERN DB_SEQUENCE_STAT * $DbSequ_ ( DbSequ * lf , u_t32_t ags ){ 3461 DB_SEQUENCE_STAT * t = NULL ; 3462 o = lf -> ` (lf, & t , ags ); 3463 t ; 3464 } } 3465 SWIGINTERN db_t_t $DbTxn_abt ( DbTxn * lf ){ 3466 lf -> `abt (self); 3467 } } 3468 SWIGINTERN db_t_t $DbTxn_comm ( DbTxn * lf , u_t32_t ags ){ 3469 lf -> `comm (lf, ags ); 3470 } } 3471 SWIGINTERN db_t_t $DbTxn_disrd ( DbTxn * lf , u_t32_t ags ){ 3472 lf -> `disrd (lf, ags ); 3473 } } 3474 SWIGINTERN cڡ * $DbTxn_g_me ( DbTxn * lf ){ 3475 cڡ * me = NULL ; 3476 o = lf -> `g_me (lf, & me ); 3477 me ; 3478 } } 3479 SWIGINTERN u_t32_t $DbTxn_id ( DbTxn * lf ){ 3480 lf -> `id (self); 3481 } } 3482 SWIGINTERN db_t_t $DbTxn_e ( DbTxn * lf , u_t8_t * gid ){ 3483 lf -> `e (lf, gid ); 3484 } } 3485 SWIGINTERN db_t_t $DbTxn_t_timeout ( DbTxn * lf , db_timeout_t timeout , u_t32_t ags ){ 3486 lf -> `t_timeout (lf, timeout , ags ); 3487 } } 3488 SWIGINTERN db_t_t $DbTxn_t_me ( DbTxn * lf ,cڡ * me ){ 3489 lf -> `t_me (lf, me ); 3490 } } 3492 #ifde __lulus 3496 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_w_1Db ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 3497 jlg jsu = 0 ; 3498 DB_ENV * g1 = (DB_ENV *) 0 ; 3499 u_t32_t g2 ; 3500 Db * su = 0 ; 3502 () jv ; 3503 () js ; 3504 () jg1_ ; 3505 g1 = *( DB_ENV **)& jg1 ; 3506 g2 = ( u_t32_t ) jg2 ; 3508 o = 0; 3509 su = ( Db *) w_Db ( g1 , g2 ); 3510 i(! DB_RETOK_STD ( o )) { 3511 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 3514 *( Db **)& jsu = su ; 3515 jsu ; 3519 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1assoc ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jlg jg3 , jobje jg3_ , jboޗn jg4 , jt jg5 ) { 3520 Db * g1 = (Db *) 0 ; 3521 DB_TXN * g2 = (DB_TXN *) 0 ; 3522 DB * g3 = (DB *) 0 ; 3523 (* g4 )( DB *, DBT const *,DBT const *,DBT *) = ((*)(DB *,DBT const *,DBT const *,DBT *)) 0 ; 3524 u_t32_t g5 ; 3525 db_t_t su ; 3527 () jv ; 3528 () js ; 3529 () jg1_ ; 3530 () jg2_ ; 3531 () jg3_ ; 3532 g1 = *( Db **)& jg1 ; 3533 g2 = *( DB_TXN **)& jg2 ; 3534 g3 = *( DB **)& jg3 ; 3536 g4 = ( jg4 = JNI_TRUE ? __dbj_ckey_ : NULL ; 3538 g5 = ( u_t32_t ) jg5 ; 3540 i( jg1 == 0) { 3541 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3545 su = ( db_t_t ) Db_assoc ( g1 , g2 , g3 , g4 , g5 ); 3546 i(! DB_RETOK_STD ( su )) { 3547 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3553 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1assoc_1feign ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jboޗn jg3 , jt jg4 ) { 3554 Db * g1 = (Db *) 0 ; 3555 DB * g2 = (DB *) 0 ; 3556 (* g3 )( DB *, DBT const *,DBT *,DBT const *,*) = ((*)(DB *,DBT const *,DBT *,DBT const *,*)) 0 ; 3557 u_t32_t g4 ; 3558 db_t_t su ; 3560 () jv ; 3561 () js ; 3562 () jg1_ ; 3563 () jg2_ ; 3564 g1 = *( Db **)& jg1 ; 3565 g2 = *( DB **)& jg2 ; 3567 g3 = ( jg3 = JNI_TRUE ? __dbj_feignkey_nuify : NULL ; 3569 g4 = ( u_t32_t ) jg4 ; 3571 i( jg1 == 0) { 3572 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3576 su = ( db_t_t ) Db_assoc_feign ( g1 , g2 , g3 , g4 ); 3577 i(! DB_RETOK_STD ( su )) { 3578 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3584 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1com ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , jobje jg4 , jobje jg5 , jt jg6 , jobje jg7 ) { 3585 Db * g1 = (Db *) 0 ; 3586 DB_TXN * g2 = (DB_TXN *) 0 ; 3587 DBT * g3 = (DBT *) 0 ; 3588 DBT * g4 = (DBT *) 0 ; 3589 DB_COMPACT * g5 = (DB_COMPACT *) 0 ; 3590 u_t32_t g6 ; 3591 DBT * g7 = (DBT *) 0 ; 3592 db_t_t su ; 3593 DBT_LOCKED ldbt3 ; 3594 DBT_LOCKED ldbt4 ; 3595 DB_COMPACT com5 ; 3596 DBT_LOCKED ldbt7 ; 3598 () jv ; 3599 () js ; 3600 () jg1_ ; 3601 () jg2_ ; 3602 g1 = *( Db **)& jg1 ; 3603 g2 = *( DB_TXN **)& jg2 ; 3605 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 1) != 0) { 3609 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 1) != 0) { 3613 memt (& com5 , 0, ( DB_COMPACT )); 3614 g5 = & com5 ; 3615 g5 -> com_f͔ = (* jv )-> GIFld (jv, jg5 , 3616 com_com_f͔_fid ); 3617 g5 -> com_timeout = (* jv )-> GIFld (jv, jg5 , 3618 com_com_timeout_fid ); 3619 g5 -> com_ges = (* jv )-> GIFld (jv, jg5 , 3620 com_com_ges_fid ); 3622 g6 = ( u_t32_t ) jg6 ; 3624 i( __dbj_dbt_cy ( jv , & ldbt7 , & g7 , jg7 , 1) != 0) { 3628 i( jg1 == 0) { 3629 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3633 su = ( db_t_t ) Db_com ( g1 , g2 , g3 , g4 , g5 , g6 , g7 ); 3634 i(! DB_RETOK_STD ( su )) { 3635 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3638 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3639 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 3640 __dbj_fl_com ( jv , jg5 , g5 ); 3641 __dbj_dbt_a ( jv , jg7 , g7 , & ldbt7 ); 3645 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 ) { 3646 jt jsu = 0 ; 3647 Db * g1 = (Db *) 0 ; 3648 u_t32_t g2 ; 3649 su ; 3651 () jv ; 3652 () js ; 3653 () jg1_ ; 3654 g1 = *( Db **)& jg1 ; 3655 g2 = ( u_t32_t ) jg2 ; 3657 i( jg1 == 0) { 3658 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3662 o = 0; 3663 su = () Db_o ( g1 , g2 ); 3664 i(! DB_RETOK_STD ( o )) { 3665 __dbj_throw ( jv , o , NULL , NULL, NULL); 3668 jsu = ( jt ) su ; 3669 jsu ; 3673 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1curs ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jt jg3 ) { 3674 jlg jsu = 0 ; 3675 Db * g1 = (Db *) 0 ; 3676 DB_TXN * g2 = (DB_TXN *) 0 ; 3677 u_t32_t g3 ; 3678 DBC * su = 0 ; 3680 () jv ; 3681 () js ; 3682 () jg1_ ; 3683 () jg2_ ; 3684 g1 = *( Db **)& jg1 ; 3685 g2 = *( DB_TXN **)& jg2 ; 3686 g3 = ( u_t32_t ) jg3 ; 3688 i( jg1 == 0) { 3689 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3693 o = 0; 3694 su = ( DBC *) Db_curs ( g1 , g2 , g3 ); 3695 i(! DB_RETOK_STD ( o )) { 3696 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3699 *( DBC **)& jsu = su ; 3700 jsu ; 3704 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , j jg4 ) { 3705 jt jsu = 0 ; 3706 Db * g1 = (Db *) 0 ; 3707 DB_TXN * g2 = (DB_TXN *) 0 ; 3708 DBT * g3 = (DBT *) 0 ; 3709 u_t32_t g4 ; 3710 su ; 3711 DBT_LOCKED ldbt3 ; 3713 () jv ; 3714 () js ; 3715 () jg1_ ; 3716 () jg2_ ; 3717 g1 = *( Db **)& jg1 ; 3718 g2 = *( DB_TXN **)& jg2 ; 3720 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 3723 g4 = ( u_t32_t ) jg4 ; 3725 i( jg1 == 0) { 3726 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3730 su = () Db_d ( g1 , g2 , g3 , g4 ); 3731 i(! DB_RETOK_DBDEL ( su )) { 3732 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3735 jsu = ( jt ) su ; 3736 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3737 jsu ; 3741 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1r ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jrg jg3 ) { 3742 Db * g1 = (Db *) 0 ; 3743 g2 ; 3744 * g3 = (*) 0 ; 3746 () jv ; 3747 () js ; 3748 () jg1_ ; 3749 g1 = *( Db **)& jg1 ; 3750 g2 = () jg2 ; 3751 g3 = 0; 3752 i( jg3 ) { 3753 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 3754 i(! g3 ) ; 3757 i( jg1 == 0) { 3758 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3761 Db_r ( g1 , g2 ,(cڡ *) g3 ); 3762 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 3766 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1rx ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 3767 Db * g1 = (Db *) 0 ; 3768 * g2 = (*) 0 ; 3770 () jv ; 3771 () js ; 3772 () jg1_ ; 3773 g1 = *( Db **)& jg1 ; 3774 g2 = 0; 3775 i( jg2 ) { 3776 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 3777 i(! g2 ) ; 3780 i( jg1 == 0) { 3781 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3784 Db_rx ( g1 ,(cڡ *) g2 ); 3785 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 3789 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1exis ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , j jg4 ) { 3790 jt jsu = 0 ; 3791 Db * g1 = (Db *) 0 ; 3792 DB_TXN * g2 = (DB_TXN *) 0 ; 3793 DBT * g3 = (DBT *) 0 ; 3794 u_t32_t g4 ; 3795 su ; 3796 DBT_LOCKED ldbt3 ; 3798 () jv ; 3799 () js ; 3800 () jg1_ ; 3801 () jg2_ ; 3802 g1 = *( Db **)& jg1 ; 3803 g2 = *( DB_TXN **)& jg2 ; 3805 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 3808 g4 = ( u_t32_t ) jg4 ; 3810 i( jg1 == 0) { 3811 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3815 su = () Db_exis ( g1 , g2 , g3 , g4 ); 3816 i(! DB_RETOK_EXISTS ( su )) { 3817 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3820 jsu = ( jt ) su ; 3821 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3822 jsu ; 3826 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , jobje jg4 , j jg5 ) { 3827 jt jsu = 0 ; 3828 Db * g1 = (Db *) 0 ; 3829 DB_TXN * g2 = (DB_TXN *) 0 ; 3830 DBT * g3 = (DBT *) 0 ; 3831 DBT * g4 = (DBT *) 0 ; 3832 u_t32_t g5 ; 3833 su ; 3834 DBT_LOCKED ldbt3 ; 3835 DBT_LOCKED ldbt4 ; 3837 () jv ; 3838 () js ; 3839 () jg1_ ; 3840 () jg2_ ; 3841 g1 = *( Db **)& jg1 ; 3842 g2 = *( DB_TXN **)& jg2 ; 3844 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 3848 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 3851 g5 = ( u_t32_t ) jg5 ; 3853 i( jg1 == 0) { 3854 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3858 su = () Db_g ( g1 , g2 , g3 , g4 , g5 ); 3859 i(! DB_RETOK_DBGET ( su )) { 3860 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 3863 jsu = ( jt ) su ; 3864 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 3865 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 3866 jsu ; 3870 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1byswd ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 3871 jboޗn jsu = 0 ; 3872 Db * g1 = (Db *) 0 ; 3873 t_bo su ; 3875 () jv ; 3876 () js ; 3877 () jg1_ ; 3878 g1 = *( Db **)& jg1 ; 3880 i( jg1 == 0) { 3881 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3885 o = 0; 3886 su = ( t_bo ) Db_g_byswd ( g1 ); 3887 i(! DB_RETOK_STD ( o )) { 3888 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3891 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 3892 jsu ; 3896 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 3897 jlg jsu = 0 ; 3898 Db * g1 = (Db *) 0 ; 3899 jlg su ; 3901 () jv ; 3902 () js ; 3903 () jg1_ ; 3904 g1 = *( Db **)& jg1 ; 3906 i( jg1 == 0) { 3907 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3911 o = 0; 3912 su = Db_g_chesize ( g1 ); 3913 i(! DB_RETOK_STD ( o )) { 3914 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3917 jsu = su ; 3918 jsu ; 3922 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1chesize_1nche ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 3923 jt jsu = 0 ; 3924 Db * g1 = (Db *) 0 ; 3925 u_t32_t su ; 3927 () jv ; 3928 () js ; 3929 () jg1_ ; 3930 g1 = *( Db **)& jg1 ; 3932 i( jg1 == 0) { 3933 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3937 o = 0; 3938 su = ( u_t32_t ) Db_g_chesize_nche ( g1 ); 3939 i(! DB_RETOK_STD ( o )) { 3940 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3943 jsu = ( jt ) su ; 3944 jsu ; 3948 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1fame ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 3949 jrg jsu = 0 ; 3950 Db * g1 = (Db *) 0 ; 3951 * su = 0 ; 3953 () jv ; 3954 () js ; 3955 () jg1_ ; 3956 g1 = *( Db **)& jg1 ; 3958 i( jg1 == 0) { 3959 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3963 o = 0; 3964 su = (*) Db_g_fame ( g1 ); 3965 i(! DB_RETOK_STD ( o )) { 3966 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3969 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 3970 jsu ; 3974 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1dbme ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 3975 jrg jsu = 0 ; 3976 Db * g1 = (Db *) 0 ; 3977 * su = 0 ; 3979 () jv ; 3980 () js ; 3981 () jg1_ ; 3982 g1 = *( Db **)& jg1 ; 3984 i( jg1 == 0) { 3985 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 3989 o = 0; 3990 su = (*) Db_g_dbme ( g1 ); 3991 i(! DB_RETOK_STD ( o )) { 3992 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 3995 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 3996 jsu ; 4000 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1y_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4001 jt jsu = 0 ; 4002 Db * g1 = (Db *) 0 ; 4003 u_t32_t su ; 4005 () jv ; 4006 () js ; 4007 () jg1_ ; 4008 g1 = *( Db **)& jg1 ; 4010 i( jg1 == 0) { 4011 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4015 o = 0; 4016 su = ( u_t32_t ) Db_g_y_ags ( g1 ); 4017 i(! DB_RETOK_STD ( o )) { 4018 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4021 jsu = ( jt ) su ; 4022 jsu ; 4026 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4027 jt jsu = 0 ; 4028 Db * g1 = (Db *) 0 ; 4029 u_t32_t su ; 4031 () jv ; 4032 () js ; 4033 () jg1_ ; 4034 g1 = *( Db **)& jg1 ; 4036 i( jg1 == 0) { 4037 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4041 o = 0; 4042 su = ( u_t32_t ) Db_g_ags ( g1 ); 4043 i(! DB_RETOK_STD ( o )) { 4044 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4047 jsu = ( jt ) su ; 4048 jsu ; 4052 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ld ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4053 jt jsu = 0 ; 4054 Db * g1 = (Db *) 0 ; 4055 su ; 4057 () jv ; 4058 () js ; 4059 () jg1_ ; 4060 g1 = *( Db **)& jg1 ; 4062 i( jg1 == 0) { 4063 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4067 o = 0; 4068 su = () Db_g_ld ( g1 ); 4069 i(! DB_RETOK_STD ( o )) { 4070 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4073 jsu = ( jt ) su ; 4074 jsu ; 4078 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1mpf ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4079 jlg jsu = 0 ; 4080 Db * g1 = (Db *) 0 ; 4081 DB_MPOOLFILE * su = 0 ; 4083 () jv ; 4084 () js ; 4085 () jg1_ ; 4086 g1 = *( Db **)& jg1 ; 4088 i( jg1 == 0) { 4089 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4093 o = 0; 4094 su = ( DB_MPOOLFILE *) Db_g_mpf ( g1 ); 4095 i(! DB_RETOK_STD ( o )) { 4096 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4099 *( DB_MPOOLFILE **)& jsu = su ; 4100 jsu ; 4104 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ݒ_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4105 jt jsu = 0 ; 4106 Db * g1 = (Db *) 0 ; 4107 u_t32_t su ; 4109 () jv ; 4110 () js ; 4111 () jg1_ ; 4112 g1 = *( Db **)& jg1 ; 4114 i( jg1 == 0) { 4115 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4119 o = 0; 4120 su = ( u_t32_t ) Db_g_ݒ_ags ( g1 ); 4121 i(! DB_RETOK_STD ( o )) { 4122 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4125 jsu = ( jt ) su ; 4126 jsu ; 4130 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1gesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4131 jt jsu = 0 ; 4132 Db * g1 = (Db *) 0 ; 4133 u_t32_t su ; 4135 () jv ; 4136 () js ; 4137 () jg1_ ; 4138 g1 = *( Db **)& jg1 ; 4140 i( jg1 == 0) { 4141 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4145 o = 0; 4146 su = ( u_t32_t ) Db_g_gesize ( g1 ); 4147 i(! DB_RETOK_STD ( o )) { 4148 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4151 jsu = ( jt ) su ; 4152 jsu ; 4156 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1bt_1mkey ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4157 jt jsu = 0 ; 4158 Db * g1 = (Db *) 0 ; 4159 u_t32_t su ; 4161 () jv ; 4162 () js ; 4163 () jg1_ ; 4164 g1 = *( Db **)& jg1 ; 4166 i( jg1 == 0) { 4167 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4171 o = 0; 4172 su = ( u_t32_t ) Db_g_bt_mkey ( g1 ); 4173 i(! DB_RETOK_STD ( o )) { 4174 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4177 jsu = ( jt ) su ; 4178 jsu ; 4182 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1h_1f ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4183 jt jsu = 0 ; 4184 Db * g1 = (Db *) 0 ; 4185 u_t32_t su ; 4187 () jv ; 4188 () js ; 4189 () jg1_ ; 4190 g1 = *( Db **)& jg1 ; 4192 i( jg1 == 0) { 4193 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4197 o = 0; 4198 su = ( u_t32_t ) Db_g_h_f ( g1 ); 4199 i(! DB_RETOK_STD ( o )) { 4200 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4203 jsu = ( jt ) su ; 4204 jsu ; 4208 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1h_1m ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4209 jt jsu = 0 ; 4210 Db * g1 = (Db *) 0 ; 4211 u_t32_t su ; 4213 () jv ; 4214 () js ; 4215 () jg1_ ; 4216 g1 = *( Db **)& jg1 ; 4218 i( jg1 == 0) { 4219 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4223 o = 0; 4224 su = ( u_t32_t ) Db_g_h_m ( g1 ); 4225 i(! DB_RETOK_STD ( o )) { 4226 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4229 jsu = ( jt ) su ; 4230 jsu ; 4234 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1dim ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4235 jt jsu = 0 ; 4236 Db * g1 = (Db *) 0 ; 4237 su ; 4239 () jv ; 4240 () js ; 4241 () jg1_ ; 4242 g1 = *( Db **)& jg1 ; 4244 i( jg1 == 0) { 4245 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4249 o = 0; 4250 su = () Db_g__dim ( g1 ); 4251 i(! DB_RETOK_STD ( o )) { 4252 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4255 jsu = ( jt ) su ; 4256 jsu ; 4260 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4261 jt jsu = 0 ; 4262 Db * g1 = (Db *) 0 ; 4263 DB_CACHE_PRIORITY su ; 4265 () jv ; 4266 () js ; 4267 () jg1_ ; 4268 g1 = *( Db **)& jg1 ; 4270 i( jg1 == 0) { 4271 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4275 o = 0; 4276 su = ( DB_CACHE_PRIORITY ) Db_g_iܙy ( g1 ); 4277 i(! DB_RETOK_STD ( o )) { 4278 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4281 jsu = ( jt ) su ; 4282 jsu ; 4286 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1n ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4287 jt jsu = 0 ; 4288 Db * g1 = (Db *) 0 ; 4289 u_t32_t su ; 4291 () jv ; 4292 () js ; 4293 () jg1_ ; 4294 g1 = *( Db **)& jg1 ; 4296 i( jg1 == 0) { 4297 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4301 o = 0; 4302 su = ( u_t32_t ) Db_g__n ( g1 ); 4303 i(! DB_RETOK_STD ( o )) { 4304 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4307 jsu = ( jt ) su ; 4308 jsu ; 4312 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4313 jt jsu = 0 ; 4314 Db * g1 = (Db *) 0 ; 4315 su ; 4317 () jv ; 4318 () js ; 4319 () jg1_ ; 4320 g1 = *( Db **)& jg1 ; 4322 i( jg1 == 0) { 4323 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4327 o = 0; 4328 su = () Db_g__d ( g1 ); 4329 i(! DB_RETOK_STD ( o )) { 4330 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4333 jsu = ( jt ) su ; 4334 jsu ; 4338 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1_1sour ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4339 jrg jsu = 0 ; 4340 Db * g1 = (Db *) 0 ; 4341 * su = 0 ; 4343 () jv ; 4344 () js ; 4345 () jg1_ ; 4346 g1 = *( Db **)& jg1 ; 4348 i( jg1 == 0) { 4349 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4353 o = 0; 4354 su = (*) Db_g__sour ( g1 ); 4355 i(! DB_RETOK_STD ( o )) { 4356 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4359 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 4360 jsu ; 4364 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1q_1exsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4365 jt jsu = 0 ; 4366 Db * g1 = (Db *) 0 ; 4367 u_t32_t su ; 4369 () jv ; 4370 () js ; 4371 () jg1_ ; 4372 g1 = *( Db **)& jg1 ; 4374 i( jg1 == 0) { 4375 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4379 o = 0; 4380 su = ( u_t32_t ) Db_g_q_exsize ( g1 ); 4381 i(! DB_RETOK_STD ( o )) { 4382 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4385 jsu = ( jt ) su ; 4386 jsu ; 4390 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1muɝ ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4391 jboޗn jsu = 0 ; 4392 Db * g1 = (Db *) 0 ; 4393 t_bo su ; 4395 () jv ; 4396 () js ; 4397 () jg1_ ; 4398 g1 = *( Db **)& jg1 ; 4400 i( jg1 == 0) { 4401 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4404 su = ( t_bo ) Db_g_muɝ ( g1 ); 4405 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 4406 jsu ; 4410 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1iڮ ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4411 jboޗn jsu = 0 ; 4412 Db * g1 = (Db *) 0 ; 4413 t_bo su ; 4415 () jv ; 4416 () js ; 4417 () jg1_ ; 4418 g1 = *( Db **)& jg1 ; 4420 i( jg1 == 0) { 4421 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4424 su = ( t_bo ) Db_g_iڮ ( g1 ); 4425 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 4426 jsu ; 4430 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1g_1ty ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 4431 jt jsu = 0 ; 4432 Db * g1 = (Db *) 0 ; 4433 DBTYPE su ; 4435 () jv ; 4436 () js ; 4437 () jg1_ ; 4438 g1 = *( Db **)& jg1 ; 4440 i( jg1 == 0) { 4441 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4445 o = 0; 4446 su = ( DBTYPE ) Db_g_ty ( g1 ); 4447 i(! DB_RETOK_STD ( o )) { 4448 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4451 jsu = ( jt ) su ; 4452 jsu ; 4456 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Db_1jo ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobjeAay jg2 , jt jg3 ) { 4457 jlg jsu = 0 ; 4458 Db * g1 = (Db *) 0 ; 4459 DBC ** g2 = (DBC **) 0 ; 4460 u_t32_t g3 ; 4461 DBC * su = 0 ; 4463 () jv ; 4464 () js ; 4465 () jg1_ ; 4466 g1 = *( Db **)& jg1 ; 4468 i , cou , r ; 4470 cou = (* jv )-> GAayLgth (jv, jg2 ); 4471 i(( r = __os_mloc ( NULL , ( cou + 1* ( DBC *), & g2 )) != 0) { 4472 __dbj_throw ( jv , r , NULL , NULL, DB2JDBENV ); 4475 i = 0; i < cou ; i++) { 4476 jobje jobj = (* jv )-> GObjeAayEmt (jv, jg2 , i ); 4480 i( jobj = NULL ) { 4481 g2 [ i ] = NULL ; 4484 jlg jr = (* jv )-> GLgFld (jv, jobj , 4485 dbc__fid ); 4486 g2 [ i ] = *( DBC **)(*)& jr ; 4489 g2 [ cou ] = NULL ; 4491 g3 = ( u_t32_t ) jg3 ; 4493 i( jg1 == 0) { 4494 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4498 o = 0; 4499 su = ( DBC *) Db_jo ( g1 , g2 , g3 ); 4500 i(! DB_RETOK_STD ( o )) { 4501 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 4504 *( DBC **)& jsu = su ; 4506 __os_ ( NULL , g2 ); 4508 jsu ; 4512 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1key_1nge ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , jobje jg4 , jt jg5 ) { 4513 Db * g1 = (Db *) 0 ; 4514 DB_TXN * g2 = (DB_TXN *) 0 ; 4515 DBT * g3 = (DBT *) 0 ; 4516 DB_KEY_RANGE * g4 = (DB_KEY_RANGE *) 0 ; 4517 u_t32_t g5 ; 4518 db_t_t su ; 4519 DBT_LOCKED ldbt3 ; 4520 DB_KEY_RANGE nge4 ; 4522 () jv ; 4523 () js ; 4524 () jg1_ ; 4525 () jg2_ ; 4526 g1 = *( Db **)& jg1 ; 4527 g2 = *( DB_TXN **)& jg2 ; 4529 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 4533 g4 = & nge4 ; 4535 g5 = ( u_t32_t ) jg5 ; 4537 i( jg1 == 0) { 4538 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4542 su = ( db_t_t ) Db_key_nge ( g1 , g2 , g3 , g4 , g5 ); 4543 i(! DB_RETOK_STD ( su )) { 4544 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4548 (* jv )-> SDoubFld (jv, jg4 , kr_ss_fid , g4 -> ss ); 4549 (* jv )-> SDoubFld (jv, jg4 , kr_equ_fid , g4 -> equ ); 4550 (* jv )-> SDoubFld (jv, jg4 , kr_g_fid , g4 -> g ); 4552 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 4556 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1ݒ ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jrg jg3 , jrg jg4 , jt jg5 , j jg6 , j jg7 ) { 4557 Db * g1 = (Db *) 0 ; 4558 DB_TXN * g2 = (DB_TXN *) 0 ; 4559 * g3 = (*) 0 ; 4560 * g4 = (*) 0 ; 4561 DBTYPE g5 ; 4562 u_t32_t g6 ; 4563 g7 ; 4564 db_t_t su ; 4566 () jv ; 4567 () js ; 4568 () jg1_ ; 4569 () jg2_ ; 4570 g1 = *( Db **)& jg1 ; 4571 g2 = *( DB_TXN **)& jg2 ; 4572 g3 = 0; 4573 i( jg3 ) { 4574 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 4575 i(! g3 ) ; 4577 g4 = 0; 4578 i( jg4 ) { 4579 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 4580 i(! g4 ) ; 4582 g5 = ( DBTYPE ) jg5 ; 4583 g6 = ( u_t32_t ) jg6 ; 4584 g7 = () jg7 ; 4586 i( jg1 == 0) { 4587 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4591 su = ( db_t_t ) Db_ݒ ( g1 , g2 ,(cڡ *) g3 ,(cڡ *) g4 , g5 , g6 , g7 ); 4592 i(! DB_RETOK_STD ( su )) { 4593 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4596 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 4597 i( g4 (* jv )-> RSgUTFChs (jv, jg4 , (const *)arg4); 4601 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1pg ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , jobje jg4 , jobje jg5 , j jg6 ) { 4602 jt jsu = 0 ; 4603 Db * g1 = (Db *) 0 ; 4604 DB_TXN * g2 = (DB_TXN *) 0 ; 4605 DBT * g3 = (DBT *) 0 ; 4606 DBT * g4 = (DBT *) 0 ; 4607 DBT * g5 = (DBT *) 0 ; 4608 u_t32_t g6 ; 4609 su ; 4610 DBT_LOCKED ldbt3 ; 4611 DBT_LOCKED ldbt4 ; 4612 DBT_LOCKED ldbt5 ; 4614 () jv ; 4615 () js ; 4616 () jg1_ ; 4617 () jg2_ ; 4618 g1 = *( Db **)& jg1 ; 4619 g2 = *( DB_TXN **)& jg2 ; 4621 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 4625 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 4629 i( __dbj_dbt_cy ( jv , & ldbt5 , & g5 , jg5 , 0) != 0) { 4632 g6 = ( u_t32_t ) jg6 ; 4634 i( jg1 == 0) { 4635 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4639 su = () Db_pg ( g1 , g2 , g3 , g4 , g5 , g6 ); 4640 i(! DB_RETOK_DBGET ( su )) { 4641 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4644 jsu = ( jt ) su ; 4645 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 4646 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 4647 __dbj_dbt_a ( jv , jg5 , g5 , & ldbt5 ); 4648 jsu ; 4652 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1put ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , jobje jg4 , j jg5 ) { 4653 jt jsu = 0 ; 4654 Db * g1 = (Db *) 0 ; 4655 DB_TXN * g2 = (DB_TXN *) 0 ; 4656 DBT * g3 = (DBT *) 0 ; 4657 DBT * g4 = (DBT *) 0 ; 4658 u_t32_t g5 ; 4659 su ; 4660 DBT_LOCKED ldbt3 ; 4661 DBT_LOCKED ldbt4 ; 4663 () jv ; 4664 () js ; 4665 () jg1_ ; 4666 () jg2_ ; 4667 g1 = *( Db **)& jg1 ; 4668 g2 = *( DB_TXN **)& jg2 ; 4670 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 4674 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 4677 g5 = ( u_t32_t ) jg5 ; 4679 i( jg1 == 0) { 4680 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4684 su = () Db_put ( g1 , g2 , g3 , g4 , g5 ); 4685 i(! DB_RETOK_DBPUT ( su )) { 4686 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4689 jsu = ( jt ) su ; 4690 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 4691 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 4692 jsu ; 4696 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1move0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jrg jg3 , jt jg4 ) { 4697 Db * g1 = (Db *) 0 ; 4698 * g2 = (*) 0 ; 4699 * g3 = (*) 0 ; 4700 u_t32_t g4 ; 4701 db_t_t su ; 4703 () jv ; 4704 () js ; 4705 () jg1_ ; 4706 g1 = *( Db **)& jg1 ; 4707 g2 = 0; 4708 i( jg2 ) { 4709 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 4710 i(! g2 ) ; 4712 g3 = 0; 4713 i( jg3 ) { 4714 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 4715 i(! g3 ) ; 4717 g4 = ( u_t32_t ) jg4 ; 4719 i( jg1 == 0) { 4720 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4724 su = ( db_t_t ) Db_move ( g1 ,(cڡ *) g2 ,(cڡ *) g3 , g4 ); 4725 i(! DB_RETOK_STD ( su )) { 4726 __dbj_throw ( jv , su , NULL , NULL, NULL); 4729 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 4730 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 4734 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1me0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jrg jg3 , jrg jg4 , jt jg5 ) { 4735 Db * g1 = (Db *) 0 ; 4736 * g2 = (*) 0 ; 4737 * g3 = (*) 0 ; 4738 * g4 = (*) 0 ; 4739 u_t32_t g5 ; 4740 db_t_t su ; 4742 () jv ; 4743 () js ; 4744 () jg1_ ; 4745 g1 = *( Db **)& jg1 ; 4746 g2 = 0; 4747 i( jg2 ) { 4748 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 4749 i(! g2 ) ; 4751 g3 = 0; 4752 i( jg3 ) { 4753 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 4754 i(! g3 ) ; 4756 g4 = 0; 4757 i( jg4 ) { 4758 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 4759 i(! g4 ) ; 4761 g5 = ( u_t32_t ) jg5 ; 4763 i( jg1 == 0) { 4764 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4768 su = ( db_t_t ) Db_me ( g1 ,(cڡ *) g2 ,(cڡ *) g3 ,(cڡ *) g4 , g5 ); 4769 i(! DB_RETOK_STD ( su )) { 4770 __dbj_throw ( jv , su , NULL , NULL, NULL); 4773 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 4774 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 4775 i( g4 (* jv )-> RSgUTFChs (jv, jg4 , (const *)arg4); 4779 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1nd_1o ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 4780 Db * g1 = (Db *) 0 ; 4781 (* g2 )( DB *, DBT *, db_o_t ) = ((*)(DB *,DBT *,db_recno_t)) 0 ; 4782 db_t_t su ; 4784 () jv ; 4785 () js ; 4786 () jg1_ ; 4787 g1 = *( Db **)& jg1 ; 4789 g2 = ( jg2 = JNI_TRUE ? __dbj_nd_o : NULL ; 4792 i( jg1 == 0) { 4793 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4797 su = ( db_t_t ) Db_t_nd_o ( g1 , g2 ); 4798 i(! DB_RETOK_STD ( su )) { 4799 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4805 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1com ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 4806 Db * g1 = (Db *) 0 ; 4807 (* g2 )( DB *, DBT const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ; 4808 db_t_t su ; 4810 () jv ; 4811 () js ; 4812 () jg1_ ; 4813 g1 = *( Db **)& jg1 ; 4815 g2 = ( jg2 = JNI_TRUE ? __dbj_bt_com : NULL ; 4818 i( jg1 == 0) { 4819 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4823 su = ( db_t_t ) Db_t_bt_com ( g1 , g2 ); 4824 i(! DB_RETOK_STD ( su )) { 4825 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4831 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1mkey ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 4832 Db * g1 = (Db *) 0 ; 4833 u_t32_t g2 ; 4834 db_t_t su ; 4836 () jv ; 4837 () js ; 4838 () jg1_ ; 4839 g1 = *( Db **)& jg1 ; 4840 g2 = ( u_t32_t ) jg2 ; 4842 i( jg1 == 0) { 4843 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4847 su = ( db_t_t ) Db_t_bt_mkey ( g1 , g2 ); 4848 i(! DB_RETOK_STD ( su )) { 4849 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4855 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1bt_1efix ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 4856 Db * g1 = (Db *) 0 ; 4857 size_t (* g2 )( DB *, DBT const *,DBT const *) = (size_t (*)(DB *,DBT const *,DBT const *)) 0 ; 4858 db_t_t su ; 4860 () jv ; 4861 () js ; 4862 () jg1_ ; 4863 g1 = *( Db **)& jg1 ; 4865 g2 = ( jg2 = JNI_TRUE ? __dbj_bt_efix : NULL ; 4868 i( jg1 == 0) { 4869 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4873 su = ( db_t_t ) Db_t_bt_efix ( g1 , g2 ); 4874 i(! DB_RETOK_STD ( su )) { 4875 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4881 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jt jg3 ) { 4882 Db * g1 = (Db *) 0 ; 4883 jlg g2 ; 4884 g3 ; 4885 db_t_t su ; 4887 () jv ; 4888 () js ; 4889 () jg1_ ; 4890 g1 = *( Db **)& jg1 ; 4891 g2 = jg2 ; 4892 g3 = () jg3 ; 4894 i( jg1 == 0) { 4895 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4899 su = ( db_t_t ) Db_t_chesize ( g1 , g2 , g3 ); 4900 i(! DB_RETOK_STD ( su )) { 4901 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4907 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1dup_1com ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 4908 Db * g1 = (Db *) 0 ; 4909 (* g2 )( DB *, DBT const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ; 4910 db_t_t su ; 4912 () jv ; 4913 () js ; 4914 () jg1_ ; 4915 g1 = *( Db **)& jg1 ; 4917 g2 = ( jg2 = JNI_TRUE ? __dbj_dup_com : NULL ; 4920 i( jg1 == 0) { 4921 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4925 su = ( db_t_t ) Db_t_dup_com ( g1 , g2 ); 4926 i(! DB_RETOK_STD ( su )) { 4927 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4933 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1y ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 ) { 4934 Db * g1 = (Db *) 0 ; 4935 * g2 = (*) 0 ; 4936 u_t32_t g3 ; 4937 db_t_t su ; 4939 () jv ; 4940 () js ; 4941 () jg1_ ; 4942 g1 = *( Db **)& jg1 ; 4943 g2 = 0; 4944 i( jg2 ) { 4945 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 4946 i(! g2 ) ; 4948 g3 = ( u_t32_t ) jg3 ; 4950 i( jg1 == 0) { 4951 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4955 su = ( db_t_t ) Db_t_y ( g1 ,(cڡ *) g2 , g3 ); 4956 i(! DB_RETOK_STD ( su )) { 4957 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4960 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 4964 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1edback ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 4965 Db * g1 = (Db *) 0 ; 4966 (* g2 )( DB *,,) = ((*)(DB *,,)) 0 ; 4967 db_t_t su ; 4969 () jv ; 4970 () js ; 4971 () jg1_ ; 4972 g1 = *( Db **)& jg1 ; 4974 g2 = ( jg2 = JNI_TRUE ? __dbj_db_edback : NULL ; 4977 i( jg1 == 0) { 4978 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 4982 su = ( db_t_t ) Db_t_edback ( g1 , g2 ); 4983 i(! DB_RETOK_STD ( su )) { 4984 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 4990 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 4991 Db * g1 = (Db *) 0 ; 4992 u_t32_t g2 ; 4993 db_t_t su ; 4995 () jv ; 4996 () js ; 4997 () jg1_ ; 4998 g1 = *( Db **)& jg1 ; 4999 g2 = ( u_t32_t ) jg2 ; 5001 i( jg1 == 0) { 5002 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5006 su = ( db_t_t ) Db_t_ags ( g1 , g2 ); 5007 i(! DB_RETOK_STD ( su )) { 5008 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5014 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1com ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 5015 Db * g1 = (Db *) 0 ; 5016 (* g2 )( DB *, DBT const *,DBT const *) = ((*)(DB *,DBT const *,DBT const *)) 0 ; 5017 db_t_t su ; 5019 () jv ; 5020 () js ; 5021 () jg1_ ; 5022 g1 = *( Db **)& jg1 ; 5024 g2 = ( jg2 = JNI_TRUE ? __dbj_h_com : NULL ; 5027 i( jg1 == 0) { 5028 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5032 su = ( db_t_t ) Db_t_h_com ( g1 , g2 ); 5033 i(! DB_RETOK_STD ( su )) { 5034 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5040 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1f ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5041 Db * g1 = (Db *) 0 ; 5042 u_t32_t g2 ; 5043 db_t_t su ; 5045 () jv ; 5046 () js ; 5047 () jg1_ ; 5048 g1 = *( Db **)& jg1 ; 5049 g2 = ( u_t32_t ) jg2 ; 5051 i( jg1 == 0) { 5052 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5056 su = ( db_t_t ) Db_t_h_f ( g1 , g2 ); 5057 i(! DB_RETOK_STD ( su )) { 5058 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5064 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1hash ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 5065 Db * g1 = (Db *) 0 ; 5066 u_t32_t (* g2 )( DB *,const *,u_int32_t) = (u_int32_t (*)(DB *,const *,u_int32_t)) 0 ; 5067 db_t_t su ; 5069 () jv ; 5070 () js ; 5071 () jg1_ ; 5072 g1 = *( Db **)& jg1 ; 5074 g2 = ( jg2 = JNI_TRUE ? __dbj_h_hash : NULL ; 5077 i( jg1 == 0) { 5078 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5082 su = ( db_t_t ) Db_t_h_hash ( g1 , g2 ); 5083 i(! DB_RETOK_STD ( su )) { 5084 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5090 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1h_1m ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5091 Db * g1 = (Db *) 0 ; 5092 u_t32_t g2 ; 5093 db_t_t su ; 5095 () jv ; 5096 () js ; 5097 () jg1_ ; 5098 g1 = *( Db **)& jg1 ; 5099 g2 = ( u_t32_t ) jg2 ; 5101 i( jg1 == 0) { 5102 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5106 su = ( db_t_t ) Db_t_h_m ( g1 , g2 ); 5107 i(! DB_RETOK_STD ( su )) { 5108 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5114 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1ld ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5115 Db * g1 = (Db *) 0 ; 5116 g2 ; 5117 db_t_t su ; 5119 () jv ; 5120 () js ; 5121 () jg1_ ; 5122 g1 = *( Db **)& jg1 ; 5123 g2 = () jg2 ; 5125 i( jg1 == 0) { 5126 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5130 su = ( db_t_t ) Db_t_ld ( g1 , g2 ); 5131 i(! DB_RETOK_STD ( su )) { 5132 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5138 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1gesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 5139 Db * g1 = (Db *) 0 ; 5140 u_t32_t g2 ; 5141 db_t_t su ; 5143 () jv ; 5144 () js ; 5145 () jg1_ ; 5146 g1 = *( Db **)& jg1 ; 5147 g2 = ( u_t32_t ) jg2 ; 5149 i( jg1 == 0) { 5150 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5154 su = ( db_t_t ) Db_t_gesize ( g1 , g2 ); 5155 i(! DB_RETOK_STD ( su )) { 5156 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5162 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5163 Db * g1 = (Db *) 0 ; 5164 DB_CACHE_PRIORITY g2 ; 5165 db_t_t su ; 5167 () jv ; 5168 () js ; 5169 () jg1_ ; 5170 g1 = *( Db **)& jg1 ; 5171 g2 = ( DB_CACHE_PRIORITY ) jg2 ; 5173 i( jg1 == 0) { 5174 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5178 su = ( db_t_t ) Db_t_iܙy ( g1 , g2 ); 5179 i(! DB_RETOK_STD ( su )) { 5180 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5186 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1dim ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5187 Db * g1 = (Db *) 0 ; 5188 g2 ; 5189 db_t_t su ; 5191 () jv ; 5192 () js ; 5193 () jg1_ ; 5194 g1 = *( Db **)& jg1 ; 5195 g2 = () jg2 ; 5197 i( jg1 == 0) { 5198 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5202 su = ( db_t_t ) Db_t__dim ( g1 , g2 ); 5203 i(! DB_RETOK_STD ( su )) { 5204 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5210 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1n ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5211 Db * g1 = (Db *) 0 ; 5212 u_t32_t g2 ; 5213 db_t_t su ; 5215 () jv ; 5216 () js ; 5217 () jg1_ ; 5218 g1 = *( Db **)& jg1 ; 5219 g2 = ( u_t32_t ) jg2 ; 5221 i( jg1 == 0) { 5222 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5226 su = ( db_t_t ) Db_t__n ( g1 , g2 ); 5227 i(! DB_RETOK_STD ( su )) { 5228 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5234 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5235 Db * g1 = (Db *) 0 ; 5236 g2 ; 5237 db_t_t su ; 5239 () jv ; 5240 () js ; 5241 () jg1_ ; 5242 g1 = *( Db **)& jg1 ; 5243 g2 = () jg2 ; 5245 i( jg1 == 0) { 5246 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5250 su = ( db_t_t ) Db_t__d ( g1 , g2 ); 5251 i(! DB_RETOK_STD ( su )) { 5252 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5258 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1_1sour ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 5259 Db * g1 = (Db *) 0 ; 5260 * g2 = (*) 0 ; 5261 db_t_t su ; 5263 () jv ; 5264 () js ; 5265 () jg1_ ; 5266 g1 = *( Db **)& jg1 ; 5267 g2 = 0; 5268 i( jg2 ) { 5269 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5270 i(! g2 ) ; 5273 i( jg1 == 0) { 5274 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5278 su = ( db_t_t ) Db_t__sour ( g1 , g2 ); 5279 i(! DB_RETOK_STD ( su )) { 5280 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5283 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 5287 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1t_1q_1exsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5288 Db * g1 = (Db *) 0 ; 5289 u_t32_t g2 ; 5290 db_t_t su ; 5292 () jv ; 5293 () js ; 5294 () jg1_ ; 5295 g1 = *( Db **)& jg1 ; 5296 g2 = ( u_t32_t ) jg2 ; 5298 i( jg1 == 0) { 5299 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5303 su = ( db_t_t ) Db_t_q_exsize ( g1 , g2 ); 5304 i(! DB_RETOK_STD ( su )) { 5305 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5311 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_Db_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jt jg3 ) { 5312 jobje jsu = 0 ; 5313 Db * g1 = (Db *) 0 ; 5314 DB_TXN * g2 = (DB_TXN *) 0 ; 5315 u_t32_t g3 ; 5316 * su = 0 ; 5318 () jv ; 5319 () js ; 5320 () jg1_ ; 5321 () jg2_ ; 5322 g1 = *( Db **)& jg1 ; 5323 g2 = *( DB_TXN **)& jg2 ; 5324 g3 = ( u_t32_t ) jg3 ; 5326 i( jg1 == 0) { 5327 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5331 o = 0; 5332 su = (*) Db_ ( g1 , g2 , g3 ); 5333 i(! DB_RETOK_STD ( o )) { 5334 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 5338 i( su = NULL ) 5339 jsu = NULL ; 5341 DB * db = (DB *) g1 ; 5342 DBTYPE dbty ; 5343 r ; 5345 i(( r = db -> g_ty (db, & dbty )) != 0) { 5346 __dbj_throw ( jv , r , NULL , NULL, DB2JDBENV ); 5350 dbty ) { 5352 DB_BTREE : 5353 DB_RECNO : 5354 jsu = (* jv )-> NewObje (jv, bt__ass , 5355 bt__cڡru ); 5356 i( jsu ! NULL ) 5357 __dbj_fl_bt_ ( jv , jsu , 5358 ( DB_BTREE_STAT *) su ); 5362 DB_HASH : 5363 jsu = (* jv )-> NewObje (jv, h__ass , 5364 h__cڡru ); 5365 i( jsu ! NULL ) 5366 __dbj_fl_h_ ( jv , jsu , 5367 ( DB_HASH_STAT *) su ); 5370 DB_QUEUE : 5371 jsu = (* jv )-> NewObje (jv, qam__ass , 5372 qam__cڡru ); 5373 i( jsu ! NULL ) 5374 __dbj_fl_qam_ ( jv , jsu , 5375 ( DB_QUEUE_STAT *) su ); 5380 __dbj_throw ( jv , EINVAL , "Db.stat only implemented for" 5381 " BTREE, HASH, QUEUEnd RECNO", NULL , DB2JDBENV ); 5385 __os_u ( db -> v , su ); 5388 jsu ; 5392 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1sync ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5393 Db * g1 = (Db *) 0 ; 5394 u_t32_t g2 ; 5395 db_t_t su ; 5397 () jv ; 5398 () js ; 5399 () jg1_ ; 5400 g1 = *( Db **)& jg1 ; 5401 g2 = ( u_t32_t ) jg2 ; 5403 i( jg1 == 0) { 5404 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5408 su = ( db_t_t ) Db_sync ( g1 , g2 ); 5409 i(! DB_RETOK_STD ( su )) { 5410 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5416 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Db_1un ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , j jg3 ) { 5417 jt jsu = 0 ; 5418 Db * g1 = (Db *) 0 ; 5419 DB_TXN * g2 = (DB_TXN *) 0 ; 5420 u_t32_t g3 ; 5421 su ; 5423 () jv ; 5424 () js ; 5425 () jg1_ ; 5426 () jg2_ ; 5427 g1 = *( Db **)& jg1 ; 5428 g2 = *( DB_TXN **)& jg2 ; 5429 g3 = ( u_t32_t ) jg3 ; 5431 i( jg1 == 0) { 5432 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5436 o = 0; 5437 su = () Db_un ( g1 , g2 , g3 ); 5438 i(! DB_RETOK_STD ( o )) { 5439 __dbj_throw ( jv , o , NULL , NULL, DB2JDBENV ); 5442 jsu = ( jt ) su ; 5443 jsu ; 5447 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Db_1upgde ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 ) { 5448 Db * g1 = (Db *) 0 ; 5449 * g2 = (*) 0 ; 5450 u_t32_t g3 ; 5451 db_t_t su ; 5453 () jv ; 5454 () js ; 5455 () jg1_ ; 5456 g1 = *( Db **)& jg1 ; 5457 g2 = 0; 5458 i( jg2 ) { 5459 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5460 i(! g2 ) ; 5462 g3 = ( u_t32_t ) jg3 ; 5464 i( jg1 == 0) { 5465 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5469 su = ( db_t_t ) Db_upgde ( g1 ,(cڡ *) g2 , g3 ); 5470 i(! DB_RETOK_STD ( su )) { 5471 __dbj_throw ( jv , su , NULL , NULL, DB2JDBENV ); 5474 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 5478 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_Db_1vify0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jrg jg3 , jobje jg4 , jt jg5 ) { 5479 jboޗn jsu = 0 ; 5480 Db * g1 = (Db *) 0 ; 5481 * g2 = (*) 0 ; 5482 * g3 = (*) 0 ; 5483 __db_out_am g4 ; 5484 u_t32_t g5 ; 5485 t_bo su ; 5486 __dbj_vify_da da4 ; 5488 () jv ; 5489 () js ; 5490 () jg1_ ; 5491 g1 = *( Db **)& jg1 ; 5492 g2 = 0; 5493 i( jg2 ) { 5494 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5495 i(! g2 ) 0; 5497 g3 = 0; 5498 i( jg3 ) { 5499 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5500 i(! g3 ) 0; 5503 da4 . jv = jenv; 5504 da4 . amobj = jg4 ; 5505 da4 . bys = NULL ; 5506 da4 . nbys = 0; 5507 (& g4 )-> hd = & da4 ; 5508 (& g4 )-> back = __dbj_vify_back ; 5510 g5 = ( u_t32_t ) jg5 ; 5512 i( jg1 == 0) { 5513 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5517 o = 0; 5518 su = ( t_bo ) Db_vify ( g1 ,(cڡ *) g2 ,(cڡ *) g3 , g4 , g5 ); 5519 i(! DB_RETOK_STD ( o )) { 5520 __dbj_throw ( jv , o , NULL , NULL, NULL); 5523 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 5524 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 5525 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 5526 jsu ; 5530 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 5531 Dbc * g1 = (Dbc *) 0 ; 5532 db_t_t su ; 5534 () jv ; 5535 () js ; 5536 () jg1_ ; 5537 g1 = *( Dbc **)& jg1 ; 5539 i( jg1 == 0) { 5540 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5544 su = ( db_t_t ) Dbc_o ( g1 ); 5545 i(! DB_RETOK_STD ( su )) { 5546 __dbj_throw ( jv , su , NULL , NULL, NULL); 5552 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1cou ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 ) { 5553 jt jsu = 0 ; 5554 Dbc * g1 = (Dbc *) 0 ; 5555 u_t32_t g2 ; 5556 db_o_t su ; 5558 () jv ; 5559 () js ; 5560 () jg1_ ; 5561 g1 = *( Dbc **)& jg1 ; 5562 g2 = ( u_t32_t ) jg2 ; 5564 i( jg1 == 0) { 5565 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5569 o = 0; 5570 su = ( db_o_t ) Dbc_cou ( g1 , g2 ); 5571 i(! DB_RETOK_STD ( o )) { 5572 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5575 jsu = ( jt ) su ; 5576 jsu ; 5580 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 ) { 5581 jt jsu = 0 ; 5582 Dbc * g1 = (Dbc *) 0 ; 5583 u_t32_t g2 ; 5584 su ; 5586 () jv ; 5587 () js ; 5588 () jg1_ ; 5589 g1 = *( Dbc **)& jg1 ; 5590 g2 = ( u_t32_t ) jg2 ; 5592 i( jg1 == 0) { 5593 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5597 su = () Dbc_d ( g1 , g2 ); 5598 i(! DB_RETOK_DBCDEL ( su )) { 5599 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5602 jsu = ( jt ) su ; 5603 jsu ; 5607 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1dup ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5608 jlg jsu = 0 ; 5609 Dbc * g1 = (Dbc *) 0 ; 5610 u_t32_t g2 ; 5611 DBC * su = 0 ; 5613 () jv ; 5614 () js ; 5615 () jg1_ ; 5616 g1 = *( Dbc **)& jg1 ; 5617 g2 = ( u_t32_t ) jg2 ; 5619 i( jg1 == 0) { 5620 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5624 o = 0; 5625 su = ( DBC *) Dbc_dup ( g1 , g2 ); 5626 i(! DB_RETOK_STD ( o )) { 5627 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5630 *( DBC **)& jsu = su ; 5631 jsu ; 5635 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jobje jg3 , j jg4 ) { 5636 jt jsu = 0 ; 5637 Dbc * g1 = (Dbc *) 0 ; 5638 DBT * g2 = (DBT *) 0 ; 5639 DBT * g3 = (DBT *) 0 ; 5640 u_t32_t g4 ; 5641 su ; 5642 DBT_LOCKED ldbt2 ; 5643 DBT_LOCKED ldbt3 ; 5645 () jv ; 5646 () js ; 5647 () jg1_ ; 5648 g1 = *( Dbc **)& jg1 ; 5650 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 5654 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 5657 g4 = ( u_t32_t ) jg4 ; 5659 i( jg1 == 0) { 5660 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5664 su = () Dbc_g ( g1 , g2 , g3 , g4 ); 5665 i(! DB_RETOK_DBCGET ( su )) { 5666 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5669 jsu = ( jt ) su ; 5670 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 5671 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 5672 jsu ; 5676 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 5677 jt jsu = 0 ; 5678 Dbc * g1 = (Dbc *) 0 ; 5679 DB_CACHE_PRIORITY su ; 5681 () jv ; 5682 () js ; 5683 () jg1_ ; 5684 g1 = *( Dbc **)& jg1 ; 5686 i( jg1 == 0) { 5687 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5691 o = 0; 5692 su = ( DB_CACHE_PRIORITY ) Dbc_g_iܙy ( g1 ); 5693 i(! DB_RETOK_STD ( o )) { 5694 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5697 jsu = ( jt ) su ; 5698 jsu ; 5702 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1pg ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jobje jg3 , jobje jg4 , j jg5 ) { 5703 jt jsu = 0 ; 5704 Dbc * g1 = (Dbc *) 0 ; 5705 DBT * g2 = (DBT *) 0 ; 5706 DBT * g3 = (DBT *) 0 ; 5707 DBT * g4 = (DBT *) 0 ; 5708 u_t32_t g5 ; 5709 su ; 5710 DBT_LOCKED ldbt2 ; 5711 DBT_LOCKED ldbt3 ; 5712 DBT_LOCKED ldbt4 ; 5714 () jv ; 5715 () js ; 5716 () jg1_ ; 5717 g1 = *( Dbc **)& jg1 ; 5719 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 5723 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 5727 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 5730 g5 = ( u_t32_t ) jg5 ; 5732 i( jg1 == 0) { 5733 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5737 su = () Dbc_pg ( g1 , g2 , g3 , g4 , g5 ); 5738 i(! DB_RETOK_DBCGET ( su )) { 5739 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5742 jsu = ( jt ) su ; 5743 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 5744 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 5745 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 5746 jsu ; 5750 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1put ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jobje jg3 , j jg4 ) { 5751 jt jsu = 0 ; 5752 Dbc * g1 = (Dbc *) 0 ; 5753 DBT * g2 = (DBT *) 0 ; 5754 DBT * g3 = (DBT *) 0 ; 5755 u_t32_t g4 ; 5756 su ; 5757 DBT_LOCKED ldbt2 ; 5758 DBT_LOCKED ldbt3 ; 5760 () jv ; 5761 () js ; 5762 () jg1_ ; 5763 g1 = *( Dbc **)& jg1 ; 5765 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 5769 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 5772 g4 = ( u_t32_t ) jg4 ; 5774 i( jg1 == 0) { 5775 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5779 su = () Dbc_put ( g1 , g2 , g3 , g4 ); 5780 i(! DB_RETOK_DBCPUT ( su )) { 5781 __dbj_throw ( jv , su , NULL , NULL, DBC2JDBENV ); 5784 jsu = ( jt ) su ; 5785 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 5786 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 5787 jsu ; 5791 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_Dbc_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5792 Dbc * g1 = (Dbc *) 0 ; 5793 DB_CACHE_PRIORITY g2 ; 5794 db_t_t su ; 5796 () jv ; 5797 () js ; 5798 () jg1_ ; 5799 g1 = *( Dbc **)& jg1 ; 5800 g2 = ( DB_CACHE_PRIORITY ) jg2 ; 5802 i( jg1 == 0) { 5803 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5807 o = 0; 5808 su = ( db_t_t ) Dbc_t_iܙy ( g1 , g2 ); 5809 i(! DB_RETOK_STD ( o )) { 5810 __dbj_throw ( jv , o , NULL , NULL, DBC2JDBENV ); 5816 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_w_1DbEnv ( JNIEnv * jv , jass js , jt jg1 ) { 5817 jlg jsu = 0 ; 5818 u_t32_t g1 ; 5819 DbEnv * su = 0 ; 5821 () jv ; 5822 () js ; 5823 g1 = ( u_t32_t ) jg1 ; 5825 o = 0; 5826 su = ( DbEnv *) w_DbEnv ( g1 ); 5827 i(! DB_RETOK_STD ( o )) { 5828 __dbj_throw ( jv , o , NULL , NULL, NULL); 5831 *( DbEnv **)& jsu = su ; 5832 jsu ; 5836 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 5837 DbEnv * g1 = (DbEnv *) 0 ; 5838 u_t32_t g2 ; 5839 db_t_t su ; 5841 () jv ; 5842 () js ; 5843 () jg1_ ; 5844 g1 = *( DbEnv **)& jg1 ; 5845 g2 = ( u_t32_t ) jg2 ; 5847 i( jg1 == 0) { 5848 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5852 su = ( db_t_t ) DbEnv_o ( g1 , g2 ); 5853 i(! DB_RETOK_STD ( su )) { 5854 __dbj_throw ( jv , su , NULL , NULL, NULL); 5860 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1dbmove ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jrg jg3 , jrg jg4 , jt jg5 ) { 5861 DbEnv * g1 = (DbEnv *) 0 ; 5862 DB_TXN * g2 = (DB_TXN *) 0 ; 5863 * g3 = (*) 0 ; 5864 * g4 = (*) 0 ; 5865 u_t32_t g5 ; 5866 db_t_t su ; 5868 () jv ; 5869 () js ; 5870 () jg1_ ; 5871 () jg2_ ; 5872 g1 = *( DbEnv **)& jg1 ; 5873 g2 = *( DB_TXN **)& jg2 ; 5874 g3 = 0; 5875 i( jg3 ) { 5876 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5877 i(! g3 ) ; 5879 g4 = 0; 5880 i( jg4 ) { 5881 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 5882 i(! g4 ) ; 5884 g5 = ( u_t32_t ) jg5 ; 5886 i( jg1 == 0) { 5887 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5891 su = ( db_t_t ) DbEnv_dbmove ( g1 , g2 ,(cڡ *) g3 ,(cڡ *) g4 , g5 ); 5892 i(! DB_RETOK_STD ( su )) { 5893 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 5896 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 5897 i( g4 (* jv )-> RSgUTFChs (jv, jg4 , (const *)arg4); 5901 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1dbme ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jrg jg3 , jrg jg4 , jrg jg5 , jt jg6 ) { 5902 DbEnv * g1 = (DbEnv *) 0 ; 5903 DB_TXN * g2 = (DB_TXN *) 0 ; 5904 * g3 = (*) 0 ; 5905 * g4 = (*) 0 ; 5906 * g5 = (*) 0 ; 5907 u_t32_t g6 ; 5908 db_t_t su ; 5910 () jv ; 5911 () js ; 5912 () jg1_ ; 5913 () jg2_ ; 5914 g1 = *( DbEnv **)& jg1 ; 5915 g2 = *( DB_TXN **)& jg2 ; 5916 g3 = 0; 5917 i( jg3 ) { 5918 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5919 i(! g3 ) ; 5921 g4 = 0; 5922 i( jg4 ) { 5923 g4 = (*)(* jv )-> GSgUTFChs (jv, jg4 , 0); 5924 i(! g4 ) ; 5926 g5 = 0; 5927 i( jg5 ) { 5928 g5 = (*)(* jv )-> GSgUTFChs (jv, jg5 , 0); 5929 i(! g5 ) ; 5931 g6 = ( u_t32_t ) jg6 ; 5933 i( jg1 == 0) { 5934 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5938 su = ( db_t_t ) DbEnv_dbme ( g1 , g2 ,(cڡ *) g3 ,(cڡ *) g4 ,(cڡ *) g5 , g6 ); 5939 i(! DB_RETOK_STD ( su )) { 5940 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 5943 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 5944 i( g4 (* jv )-> RSgUTFChs (jv, jg4 , (const *)arg4); 5945 i( g5 (* jv )-> RSgUTFChs (jv, jg5 , (const *)arg5); 5949 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1r ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jrg jg3 ) { 5950 DbEnv * g1 = (DbEnv *) 0 ; 5951 g2 ; 5952 * g3 = (*) 0 ; 5954 () jv ; 5955 () js ; 5956 () jg1_ ; 5957 g1 = *( DbEnv **)& jg1 ; 5958 g2 = () jg2 ; 5959 g3 = 0; 5960 i( jg3 ) { 5961 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 5962 i(! g3 ) ; 5965 i( jg1 == 0) { 5966 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5969 DbEnv_r ( g1 , g2 ,(cڡ *) g3 ); 5970 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 5974 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1rx ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 5975 DbEnv * g1 = (DbEnv *) 0 ; 5976 * g2 = (*) 0 ; 5978 () jv ; 5979 () js ; 5980 () jg1_ ; 5981 g1 = *( DbEnv **)& jg1 ; 5982 g2 = 0; 5983 i( jg2 ) { 5984 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 5985 i(! g2 ) ; 5988 i( jg1 == 0) { 5989 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 5992 DbEnv_rx ( g1 ,(cڡ *) g2 ); 5993 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 5997 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1cdsgroup_1beg ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 5998 jlg jsu = 0 ; 5999 DbEnv * g1 = (DbEnv *) 0 ; 6000 DB_TXN * su = 0 ; 6002 () jv ; 6003 () js ; 6004 () jg1_ ; 6005 g1 = *( DbEnv **)& jg1 ; 6007 i( jg1 == 0) { 6008 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6011 su = ( DB_TXN *) DbEnv_cdsgroup_beg ( g1 ); 6012 *( DB_TXN **)& jsu = su ; 6013 jsu ; 6017 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1feid_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 ) { 6018 DbEnv * g1 = (DbEnv *) 0 ; 6019 * g2 = (*) 0 ; 6020 u_t32_t g3 ; 6021 db_t_t su ; 6023 () jv ; 6024 () js ; 6025 () jg1_ ; 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 ; 6034 i( jg1 == 0) { 6035 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6038 su = ( db_t_t ) DbEnv_feid_t ( g1 ,(cڡ *) g2 , g3 ); 6039 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6043 SWIGEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1da_1ds ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6044 jobjeAay jsu = 0 ; 6045 DbEnv * g1 = (DbEnv *) 0 ; 6046 ** su = 0 ; 6048 () jv ; 6049 () js ; 6050 () jg1_ ; 6051 g1 = *( DbEnv **)& jg1 ; 6053 i( jg1 == 0) { 6054 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6058 o = 0; 6059 su = (**) DbEnv_g_da_ds ( g1 ); 6060 i(! DB_RETOK_STD ( o )) { 6061 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6065 i( su ! NULL ) { 6066 i , n ; 6068 n = 0; 6069 su [ n ] ! NULL ) 6070 n ++; 6071 i(( jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , rg_ass , 6072 NULL )) == NULL) 6074 i = 0; i < n ; i++) { 6075 jrg r = (* jv )-> NewSgUTF (jv, su [ i ]); 6076 (* jv )-> SObjeAayEmt (jv, jsu , ( jsize ) i , r ); 6081 jsu ; 6085 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1y_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6086 jt jsu = 0 ; 6087 DbEnv * g1 = (DbEnv *) 0 ; 6088 u_t32_t su ; 6090 () jv ; 6091 () js ; 6092 () jg1_ ; 6093 g1 = *( DbEnv **)& jg1 ; 6095 i( jg1 == 0) { 6096 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6100 o = 0; 6101 su = ( u_t32_t ) DbEnv_g_y_ags ( g1 ); 6102 i(! DB_RETOK_STD ( o )) { 6103 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6106 jsu = ( jt ) su ; 6107 jsu ; 6111 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6112 jt jsu = 0 ; 6113 DbEnv * g1 = (DbEnv *) 0 ; 6114 u_t32_t su ; 6116 () jv ; 6117 () js ; 6118 () jg1_ ; 6119 g1 = *( DbEnv **)& jg1 ; 6121 i( jg1 == 0) { 6122 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6126 o = 0; 6127 su = ( u_t32_t ) DbEnv_g_ags ( g1 ); 6128 i(! DB_RETOK_STD ( o )) { 6129 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6132 jsu = ( jt ) su ; 6133 jsu ; 6137 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1home ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6138 jrg jsu = 0 ; 6139 DbEnv * g1 = (DbEnv *) 0 ; 6140 * su = 0 ; 6142 () jv ; 6143 () js ; 6144 () jg1_ ; 6145 g1 = *( DbEnv **)& jg1 ; 6147 i( jg1 == 0) { 6148 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6152 o = 0; 6153 su = (*) DbEnv_g_home ( g1 ); 6154 i(! DB_RETOK_STD ( o )) { 6155 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6158 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 6159 jsu ; 6163 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1rmed_1d_1mode ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6164 jrg jsu = 0 ; 6165 DbEnv * g1 = (DbEnv *) 0 ; 6166 * su = 0 ; 6168 () jv ; 6169 () js ; 6170 () jg1_ ; 6171 g1 = *( DbEnv **)& jg1 ; 6173 i( jg1 == 0) { 6174 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6178 o = 0; 6179 su = (*) DbEnv_g_rmed_d_mode ( g1 ); 6180 i(! DB_RETOK_STD ( o )) { 6181 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6184 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 6185 jsu ; 6189 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1ݒ_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6190 jt jsu = 0 ; 6191 DbEnv * g1 = (DbEnv *) 0 ; 6192 u_t32_t su ; 6194 () jv ; 6195 () js ; 6196 () jg1_ ; 6197 g1 = *( DbEnv **)& jg1 ; 6199 i( jg1 == 0) { 6200 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6204 o = 0; 6205 su = ( u_t32_t ) DbEnv_g_ݒ_ags ( g1 ); 6206 i(! DB_RETOK_STD ( o )) { 6207 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6210 jsu = ( jt ) su ; 6211 jsu ; 6215 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1shm_1key ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6216 jlg jsu = 0 ; 6217 DbEnv * g1 = (DbEnv *) 0 ; 6218 su ; 6220 () jv ; 6221 () js ; 6222 () jg1_ ; 6223 g1 = *( DbEnv **)& jg1 ; 6225 i( jg1 == 0) { 6226 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6230 o = 0; 6231 su = () DbEnv_g_shm_key ( g1 ); 6232 i(! DB_RETOK_STD ( o )) { 6233 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6236 jsu = ( jlg ) su ; 6237 jsu ; 6241 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tmp_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6242 jrg jsu = 0 ; 6243 DbEnv * g1 = (DbEnv *) 0 ; 6244 * su = 0 ; 6246 () jv ; 6247 () js ; 6248 () jg1_ ; 6249 g1 = *( DbEnv **)& jg1 ; 6251 i( jg1 == 0) { 6252 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6256 o = 0; 6257 su = (*) DbEnv_g_tmp_d ( g1 ); 6258 i(! DB_RETOK_STD ( o )) { 6259 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6262 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 6263 jsu ; 6267 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vbo ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 6268 jboޗn jsu = 0 ; 6269 DbEnv * g1 = (DbEnv *) 0 ; 6270 u_t32_t g2 ; 6271 t_bo su ; 6273 () jv ; 6274 () js ; 6275 () jg1_ ; 6276 g1 = *( DbEnv **)& jg1 ; 6277 g2 = ( u_t32_t ) jg2 ; 6279 i( jg1 == 0) { 6280 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6284 o = 0; 6285 su = ( t_bo ) DbEnv_g_vbo ( g1 , g2 ); 6286 i(! DB_RETOK_STD ( o )) { 6287 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 6290 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 6291 jsu ; 6295 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1is_1bigdn ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6296 jboޗn jsu = 0 ; 6297 DbEnv * g1 = (DbEnv *) 0 ; 6298 t_bo su ; 6300 () jv ; 6301 () js ; 6302 () jg1_ ; 6303 g1 = *( DbEnv **)& jg1 ; 6305 i( jg1 == 0) { 6306 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6309 su = ( t_bo ) DbEnv_is_bigdn ( g1 ); 6310 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 6311 jsu ; 6315 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1l_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 ) { 6316 DbEnv * g1 = (DbEnv *) 0 ; 6317 * g2 = (*) 0 ; 6318 u_t32_t g3 ; 6319 db_t_t su ; 6321 () jv ; 6322 () js ; 6323 () jg1_ ; 6324 g1 = *( DbEnv **)& jg1 ; 6325 g2 = 0; 6326 i( jg2 ) { 6327 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6328 i(! g2 ) ; 6330 g3 = ( u_t32_t ) jg3 ; 6332 i( jg1 == 0) { 6333 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6337 su = ( db_t_t ) DbEnv_l_t ( g1 ,(cڡ *) g2 , g3 ); 6338 i(! DB_RETOK_STD ( su )) { 6339 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6342 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6346 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1ݒ ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 , j jg4 ) { 6347 DbEnv * g1 = (DbEnv *) 0 ; 6348 * g2 = (*) 0 ; 6349 u_t32_t g3 ; 6350 g4 ; 6351 db_t_t su ; 6353 () jv ; 6354 () js ; 6355 () jg1_ ; 6356 g1 = *( DbEnv **)& jg1 ; 6357 g2 = 0; 6358 i( jg2 ) { 6359 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6360 i(! g2 ) ; 6362 g3 = ( u_t32_t ) jg3 ; 6363 g4 = () jg4 ; 6365 i( jg1 == 0) { 6366 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6370 su = ( db_t_t ) DbEnv_ݒ ( g1 ,(cڡ *) g2 , g3 , g4 ); 6371 i(! DB_RETOK_STD ( su )) { 6372 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6375 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6379 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1move0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 ) { 6380 DbEnv * g1 = (DbEnv *) 0 ; 6381 * g2 = (*) 0 ; 6382 u_t32_t g3 ; 6383 db_t_t su ; 6385 () jv ; 6386 () js ; 6387 () jg1_ ; 6388 g1 = *( DbEnv **)& jg1 ; 6389 g2 = 0; 6390 i( jg2 ) { 6391 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6392 i(! g2 ) ; 6394 g3 = ( u_t32_t ) jg3 ; 6396 i( jg1 == 0) { 6397 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6401 su = ( db_t_t ) DbEnv_move ( g1 ,(cڡ *) g2 , g3 ); 6402 i(! DB_RETOK_STD ( su )) { 6403 __dbj_throw ( jv , su , NULL , NULL, NULL); 6406 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6410 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jt jg3 ) { 6411 DbEnv * g1 = (DbEnv *) 0 ; 6412 jlg g2 ; 6413 g3 ; 6414 db_t_t su ; 6416 () jv ; 6417 () js ; 6418 () jg1_ ; 6419 g1 = *( DbEnv **)& jg1 ; 6420 g2 = jg2 ; 6421 g3 = () jg3 ; 6423 i( jg1 == 0) { 6424 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6428 su = ( db_t_t ) DbEnv_t_chesize ( g1 , g2 , g3 ); 6429 i(! DB_RETOK_STD ( su )) { 6430 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6436 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1che_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 6437 DbEnv * g1 = (DbEnv *) 0 ; 6438 jlg g2 ; 6439 db_t_t su ; 6441 () jv ; 6442 () js ; 6443 () jg1_ ; 6444 g1 = *( DbEnv **)& jg1 ; 6445 g2 = jg2 ; 6447 i( jg1 == 0) { 6448 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6452 su = ( db_t_t ) DbEnv_t_che_max ( g1 , g2 ); 6453 i(! DB_RETOK_STD ( su )) { 6454 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6460 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1da_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 6461 DbEnv * g1 = (DbEnv *) 0 ; 6462 * g2 = (*) 0 ; 6463 db_t_t su ; 6465 () jv ; 6466 () js ; 6467 () jg1_ ; 6468 g1 = *( DbEnv **)& jg1 ; 6469 g2 = 0; 6470 i( jg2 ) { 6471 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6472 i(! g2 ) ; 6475 i( jg1 == 0) { 6476 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6480 su = ( db_t_t ) DbEnv_t_da_d ( g1 ,(cڡ *) g2 ); 6481 i(! DB_RETOK_STD ( su )) { 6482 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6485 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6489 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1rmed_1d_1mode ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 6490 DbEnv * g1 = (DbEnv *) 0 ; 6491 * g2 = (*) 0 ; 6492 db_t_t su ; 6494 () jv ; 6495 () js ; 6496 () jg1_ ; 6497 g1 = *( DbEnv **)& jg1 ; 6498 g2 = 0; 6499 i( jg2 ) { 6500 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6501 i(! g2 ) ; 6504 i( jg1 == 0) { 6505 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6509 su = ( db_t_t ) DbEnv_t_rmed_d_mode ( g1 ,(cڡ *) g2 ); 6510 i(! DB_RETOK_STD ( su )) { 6511 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6514 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6518 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1y ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 ) { 6519 DbEnv * g1 = (DbEnv *) 0 ; 6520 * g2 = (*) 0 ; 6521 u_t32_t g3 ; 6522 db_t_t su ; 6524 () jv ; 6525 () js ; 6526 () jg1_ ; 6527 g1 = *( DbEnv **)& jg1 ; 6528 g2 = 0; 6529 i( jg2 ) { 6530 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6531 i(! g2 ) ; 6533 g3 = ( u_t32_t ) jg3 ; 6535 i( jg1 == 0) { 6536 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6540 su = ( db_t_t ) DbEnv_t_y ( g1 ,(cڡ *) g2 , g3 ); 6541 i(! DB_RETOK_STD ( su )) { 6542 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6545 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6549 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1r ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 6550 DbEnv * g1 = (DbEnv *) 0 ; 6551 (* g2 )( DB_ENV const *,const *,const *) = ((*)(DB_ENV const *,const *,const *)) 0 ; 6553 () jv ; 6554 () js ; 6555 () jg1_ ; 6556 g1 = *( DbEnv **)& jg1 ; 6558 g2 = ( jg2 = JNI_TRUE ? __dbj_r : NULL ; 6561 i( jg1 == 0) { 6562 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6565 DbEnv_t_r ( g1 , g2 ); 6569 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jboޗn jg3 ) { 6570 DbEnv * g1 = (DbEnv *) 0 ; 6571 u_t32_t g2 ; 6572 t_bo g3 ; 6573 db_t_t su ; 6575 () jv ; 6576 () js ; 6577 () jg1_ ; 6578 g1 = *( DbEnv **)& jg1 ; 6579 g2 = ( u_t32_t ) jg2 ; 6580 g3 = ( jg3 = JNI_TRUE ); 6582 i( jg1 == 0) { 6583 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6587 su = ( db_t_t ) DbEnv_t_ags ( g1 , g2 , g3 ); 6588 i(! DB_RETOK_STD ( su )) { 6589 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6595 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1edback ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 6596 DbEnv * g1 = (DbEnv *) 0 ; 6597 (* g2 )( DB_ENV *,,) = ((*)(DB_ENV *,,)) 0 ; 6598 db_t_t su ; 6600 () jv ; 6601 () js ; 6602 () jg1_ ; 6603 g1 = *( DbEnv **)& jg1 ; 6605 g2 = ( jg2 = JNI_TRUE ? __dbj_v_edback : NULL ; 6608 i( jg1 == 0) { 6609 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6613 su = ( db_t_t ) DbEnv_t_edback ( g1 , g2 ); 6614 i(! DB_RETOK_STD ( su )) { 6615 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6621 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1max_1ݒfd ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 6622 DbEnv * g1 = (DbEnv *) 0 ; 6623 g2 ; 6624 db_t_t su ; 6626 () jv ; 6627 () js ; 6628 () jg1_ ; 6629 g1 = *( DbEnv **)& jg1 ; 6630 g2 = () jg2 ; 6632 i( jg1 == 0) { 6633 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6637 su = ( db_t_t ) DbEnv_t_mp_max_ݒfd ( g1 , g2 ); 6638 i(! DB_RETOK_STD ( su )) { 6639 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6645 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1max_1wre ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jlg jg3 ) { 6646 DbEnv * g1 = (DbEnv *) 0 ; 6647 g2 ; 6648 db_timeout_t g3 ; 6649 db_t_t su ; 6651 () jv ; 6652 () js ; 6653 () jg1_ ; 6654 g1 = *( DbEnv **)& jg1 ; 6655 g2 = () jg2 ; 6656 g3 = ( db_timeout_t ) jg3 ; 6658 i( jg1 == 0) { 6659 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6663 su = ( db_t_t ) DbEnv_t_mp_max_wre ( g1 , g2 , g3 ); 6664 i(! DB_RETOK_STD ( su )) { 6665 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6671 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1mp_1mmsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 6672 DbEnv * g1 = (DbEnv *) 0 ; 6673 size_t g2 ; 6674 db_t_t su ; 6676 () jv ; 6677 () js ; 6678 () jg1_ ; 6679 g1 = *( DbEnv **)& jg1 ; 6680 g2 = ( size_t ) jg2 ; 6682 i( jg1 == 0) { 6683 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6687 su = ( db_t_t ) DbEnv_t_mp_mmsize ( g1 , g2 ); 6688 i(! DB_RETOK_STD ( su )) { 6689 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6695 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1msg ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 6696 DbEnv * g1 = (DbEnv *) 0 ; 6697 (* g2 )( DB_ENV const *,const *) = ((*)(DB_ENV const *,const *)) 0 ; 6699 () jv ; 6700 () js ; 6701 () jg1_ ; 6702 g1 = *( DbEnv **)& jg1 ; 6704 g2 = ( jg2 = JNI_TRUE ? __dbj_mesge : NULL ; 6707 i( jg1 == 0) { 6708 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6711 DbEnv_t_msg ( g1 , g2 ); 6715 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1nic ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 6716 DbEnv * g1 = (DbEnv *) 0 ; 6717 (* g2 )( DB_ENV *,) = ((*)(DB_ENV *,)) 0 ; 6718 db_t_t su ; 6720 () jv ; 6721 () js ; 6722 () jg1_ ; 6723 g1 = *( DbEnv **)& jg1 ; 6725 g2 = ( jg2 = JNI_TRUE ? __dbj_nic : NULL ; 6728 i( jg1 == 0) { 6729 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6733 su = ( db_t_t ) DbEnv_t_nic ( g1 , g2 ); 6734 i(! DB_RETOK_STD ( su )) { 6735 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6741 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1c_1rv ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jlg jg3 , jlg jg4 , jt jg5 ) { 6742 DbEnv * g1 = (DbEnv *) 0 ; 6743 * g2 = (*) 0 ; 6744 g3 ; 6745 g4 ; 6746 u_t32_t g5 ; 6747 db_t_t su ; 6749 () jv ; 6750 () js ; 6751 () jg1_ ; 6752 g1 = *( DbEnv **)& jg1 ; 6753 g2 = 0; 6754 i( jg2 ) { 6755 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6756 i(! g2 ) ; 6758 g3 = () jg3 ; 6759 g4 = () jg4 ; 6760 g5 = ( u_t32_t ) jg5 ; 6762 i( jg1 == 0) { 6763 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6767 su = ( db_t_t ) DbEnv_t_c_rv ( g1 , g2 , g3 , g4 , g5 ); 6768 i(! DB_RETOK_STD ( su )) { 6769 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6772 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6776 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1shm_1key ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 6777 DbEnv * g1 = (DbEnv *) 0 ; 6778 g2 ; 6779 db_t_t su ; 6781 () jv ; 6782 () js ; 6783 () jg1_ ; 6784 g1 = *( DbEnv **)& jg1 ; 6785 g2 = () jg2 ; 6787 i( jg1 == 0) { 6788 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6792 su = ( db_t_t ) DbEnv_t_shm_key ( g1 , g2 ); 6793 i(! DB_RETOK_STD ( su )) { 6794 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6800 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jt jg3 ) { 6801 DbEnv * g1 = (DbEnv *) 0 ; 6802 db_timeout_t g2 ; 6803 u_t32_t g3 ; 6804 db_t_t su ; 6806 () jv ; 6807 () js ; 6808 () jg1_ ; 6809 g1 = *( DbEnv **)& jg1 ; 6810 g2 = ( db_timeout_t ) jg2 ; 6811 g3 = ( u_t32_t ) jg3 ; 6813 i( jg1 == 0) { 6814 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6818 su = ( db_t_t ) DbEnv_t_timeout ( g1 , g2 , g3 ); 6819 i(! DB_RETOK_STD ( su )) { 6820 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6826 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tmp_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 6827 DbEnv * g1 = (DbEnv *) 0 ; 6828 * g2 = (*) 0 ; 6829 db_t_t su ; 6831 () jv ; 6832 () js ; 6833 () jg1_ ; 6834 g1 = *( DbEnv **)& jg1 ; 6835 g2 = 0; 6836 i( jg2 ) { 6837 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 6838 i(! g2 ) ; 6841 i( jg1 == 0) { 6842 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6846 su = ( db_t_t ) DbEnv_t_tmp_d ( g1 ,(cڡ *) g2 ); 6847 i(! DB_RETOK_STD ( su )) { 6848 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6851 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 6855 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tx_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 6856 DbEnv * g1 = (DbEnv *) 0 ; 6857 u_t32_t g2 ; 6858 db_t_t su ; 6860 () jv ; 6861 () js ; 6862 () jg1_ ; 6863 g1 = *( DbEnv **)& jg1 ; 6864 g2 = ( u_t32_t ) jg2 ; 6866 i( jg1 == 0) { 6867 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6871 su = ( db_t_t ) DbEnv_t_tx_max ( g1 , g2 ); 6872 i(! DB_RETOK_STD ( su )) { 6873 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6879 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1p_1dich ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 6880 DbEnv * g1 = (DbEnv *) 0 ; 6881 (* g2 )( DB_ENV *, DBT *, DB_LSN *, db_cs ) = ((*)(DB_ENV *,DBT *,DB_LSN *,db_recops)) 0 ; 6882 db_t_t su ; 6884 () jv ; 6885 () js ; 6886 () jg1_ ; 6887 g1 = *( DbEnv **)& jg1 ; 6889 g2 = ( jg2 = JNI_TRUE ? __dbj_p_dich : NULL ; 6892 i( jg1 == 0) { 6893 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6897 su = ( db_t_t ) DbEnv_t_p_dich ( g1 , g2 ); 6898 i(! DB_RETOK_STD ( su )) { 6899 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6905 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1evt_1nify ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jboޗn jg2 ) { 6906 DbEnv * g1 = (DbEnv *) 0 ; 6907 (* g2 )( DB_ENV *, u_t32_t ,*) = ((*)(DB_ENV *,u_int32_t,*)) 0 ; 6908 db_t_t su ; 6910 () jv ; 6911 () js ; 6912 () jg1_ ; 6913 g1 = *( DbEnv **)& jg1 ; 6915 g2 = ( jg2 = JNI_TRUE ? __dbj_evt_nify : NULL ; 6918 i( jg1 == 0) { 6919 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6923 su = ( db_t_t ) DbEnv_t_evt_nify ( g1 , g2 ); 6924 i(! DB_RETOK_STD ( su )) { 6925 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6931 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1tx_1timeamp0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 6932 DbEnv * g1 = (DbEnv *) 0 ; 6933 time_t * g2 = (time_t *) 0 ; 6934 db_t_t su ; 6935 time_t time2 ; 6937 () jv ; 6938 () js ; 6939 () jg1_ ; 6940 g1 = *( DbEnv **)& jg1 ; 6942 time2 = ( time_t ) jg2 ; 6943 g2 = & time2 ; 6946 i( jg1 == 0) { 6947 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6951 su = ( db_t_t ) DbEnv_t_tx_timeamp ( g1 , g2 ); 6952 i(! DB_RETOK_STD ( su )) { 6953 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6959 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1vbo ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jboޗn jg3 ) { 6960 DbEnv * g1 = (DbEnv *) 0 ; 6961 u_t32_t g2 ; 6962 t_bo g3 ; 6963 db_t_t su ; 6965 () jv ; 6966 () js ; 6967 () jg1_ ; 6968 g1 = *( DbEnv **)& jg1 ; 6969 g2 = ( u_t32_t ) jg2 ; 6970 g3 = ( jg3 = JNI_TRUE ); 6972 i( jg1 == 0) { 6973 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 6977 su = ( db_t_t ) DbEnv_t_vbo ( g1 , g2 , g3 ); 6978 i(! DB_RETOK_STD ( su )) { 6979 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 6985 SWIGEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1cis ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 6986 jobjeAay jsu = 0 ; 6987 DbEnv * g1 = (DbEnv *) 0 ; 6988 __db_lk_cis su ; 6990 () jv ; 6991 () js ; 6992 () jg1_ ; 6993 g1 = *( DbEnv **)& jg1 ; 6995 i( jg1 == 0) { 6996 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7000 o = 0; 7001 su = DbEnv_g_lk_cis ( g1 ); 7002 i(! DB_RETOK_STD ( o )) { 7003 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7007 i ; 7008 jbyAay bys ; 7010 jsu = (* jv )-> NewObjeAay (jenv, 7011 ( jsize )(& su )-> lk_modes , byy_ass , NULL ); 7012 i( jsu = NULL ) 7014 i = 0; i < (& su )-> lk_modes ; i++) { 7015 bys = (* jv )-> NewByAay (jv, ( jsize )(& su )-> lk_modes ); 7016 i( bys = NULL ) 7018 (* jv )-> SByAayRegi (jv, bys , 0, ( jsize )(& su )-> lk_modes , 7019 ( jby *)((& su )-> lk_cis + i * (&su)-> lk_modes )); 7020 (* jv )-> SObjeAayEmt (jv, jsu , ( jsize ) i , bys ); 7023 jsu ; 7027 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1de ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7028 jt jsu = 0 ; 7029 DbEnv * g1 = (DbEnv *) 0 ; 7030 u_t32_t su ; 7032 () jv ; 7033 () js ; 7034 () jg1_ ; 7035 g1 = *( DbEnv **)& jg1 ; 7037 i( jg1 == 0) { 7038 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7042 o = 0; 7043 su = ( u_t32_t ) DbEnv_g_lk_de ( g1 ); 7044 i(! DB_RETOK_STD ( o )) { 7045 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7048 jsu = ( jt ) su ; 7049 jsu ; 7053 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7054 jt jsu = 0 ; 7055 DbEnv * g1 = (DbEnv *) 0 ; 7056 u_t32_t su ; 7058 () jv ; 7059 () js ; 7060 () jg1_ ; 7061 g1 = *( DbEnv **)& jg1 ; 7063 i( jg1 == 0) { 7064 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7068 o = 0; 7069 su = ( u_t32_t ) DbEnv_g_lk_max_locks ( g1 ); 7070 i(! DB_RETOK_STD ( o )) { 7071 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7074 jsu = ( jt ) su ; 7075 jsu ; 7079 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7080 jt jsu = 0 ; 7081 DbEnv * g1 = (DbEnv *) 0 ; 7082 u_t32_t su ; 7084 () jv ; 7085 () js ; 7086 () jg1_ ; 7087 g1 = *( DbEnv **)& jg1 ; 7089 i( jg1 == 0) { 7090 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7094 o = 0; 7095 su = ( u_t32_t ) DbEnv_g_lk_max_locks ( g1 ); 7096 i(! DB_RETOK_STD ( o )) { 7097 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7100 jsu = ( jt ) su ; 7101 jsu ; 7105 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lk_1max_1objes ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7106 jt jsu = 0 ; 7107 DbEnv * g1 = (DbEnv *) 0 ; 7108 u_t32_t su ; 7110 () jv ; 7111 () js ; 7112 () jg1_ ; 7113 g1 = *( DbEnv **)& jg1 ; 7115 i( jg1 == 0) { 7116 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7120 o = 0; 7121 su = ( u_t32_t ) DbEnv_g_lk_max_objes ( g1 ); 7122 i(! DB_RETOK_STD ( o )) { 7123 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7126 jsu = ( jt ) su ; 7127 jsu ; 7131 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1de ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 , j jg3 ) { 7132 jt jsu = 0 ; 7133 DbEnv * g1 = (DbEnv *) 0 ; 7134 u_t32_t g2 ; 7135 u_t32_t g3 ; 7136 su ; 7138 () jv ; 7139 () js ; 7140 () jg1_ ; 7141 g1 = *( DbEnv **)& jg1 ; 7142 g2 = ( u_t32_t ) jg2 ; 7143 g3 = ( u_t32_t ) jg3 ; 7145 i( jg1 == 0) { 7146 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7150 o = 0; 7151 su = () DbEnv_lock_de ( g1 , g2 , g3 ); 7152 i(! DB_RETOK_STD ( o )) { 7153 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7156 jsu = ( jt ) su ; 7157 jsu ; 7161 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 , jobje jg4 , j jg5 ) { 7162 jlg jsu = 0 ; 7163 DbEnv * g1 = (DbEnv *) 0 ; 7164 u_t32_t g2 ; 7165 u_t32_t g3 ; 7166 DBT * g4 = (DBT *) 0 ; 7167 db_lockmode_t g5 ; 7168 DB_LOCK * su = 0 ; 7169 DBT_LOCKED ldbt4 ; 7171 () jv ; 7172 () js ; 7173 () jg1_ ; 7174 g1 = *( DbEnv **)& jg1 ; 7175 g2 = ( u_t32_t ) jg2 ; 7176 g3 = ( u_t32_t ) jg3 ; 7178 i( __dbj_dbt_cy ( jv , & ldbt4 , & g4 , jg4 , 0) != 0) { 7181 g5 = ( db_lockmode_t ) jg5 ; 7183 i( jg1 == 0) { 7184 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7188 o = 0; 7189 su = ( DB_LOCK *) DbEnv_lock_g ( g1 , g2 , g3 ,( Dbt cڡ *) g4 , g5 ); 7190 i(! DB_RETOK_STD ( o )) { 7191 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7194 *( DB_LOCK **)& jsu = su ; 7195 __dbj_dbt_a ( jv , jg4 , g4 , & ldbt4 ); 7196 jsu ; 7200 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1id ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7201 jt jsu = 0 ; 7202 DbEnv * g1 = (DbEnv *) 0 ; 7203 u_t32_t su ; 7205 () jv ; 7206 () js ; 7207 () jg1_ ; 7208 g1 = *( DbEnv **)& jg1 ; 7210 i( jg1 == 0) { 7211 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7215 o = 0; 7216 su = ( u_t32_t ) DbEnv_lock_id ( g1 ); 7217 i(! DB_RETOK_STD ( o )) { 7218 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7221 jsu = ( jt ) su ; 7222 jsu ; 7226 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1id_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7227 DbEnv * g1 = (DbEnv *) 0 ; 7228 u_t32_t g2 ; 7229 db_t_t su ; 7231 () jv ; 7232 () js ; 7233 () jg1_ ; 7234 g1 = *( DbEnv **)& jg1 ; 7235 g2 = ( u_t32_t ) jg2 ; 7237 i( jg1 == 0) { 7238 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7242 su = ( db_t_t ) DbEnv_lock_id_ ( g1 , g2 ); 7243 i(! DB_RETOK_STD ( su )) { 7244 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7250 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1put ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ ) { 7251 DbEnv * g1 = (DbEnv *) 0 ; 7252 DB_LOCK * g2 = (DB_LOCK *) 0 ; 7253 db_t_t su ; 7255 () jv ; 7256 () js ; 7257 () jg1_ ; 7258 () jg2_ ; 7259 g1 = *( DbEnv **)& jg1 ; 7260 g2 = *( DB_LOCK **)& jg2 ; 7262 i( jg1 == 0) { 7263 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7267 su = ( db_t_t ) DbEnv_lock_put ( g1 , g2 ); 7268 i(! DB_RETOK_STD ( su )) { 7269 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7275 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1lock_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7276 jobje jsu = 0 ; 7277 DbEnv * g1 = (DbEnv *) 0 ; 7278 u_t32_t g2 ; 7279 DB_LOCK_STAT * su = 0 ; 7281 () jv ; 7282 () js ; 7283 () jg1_ ; 7284 g1 = *( DbEnv **)& jg1 ; 7285 g2 = ( u_t32_t ) jg2 ; 7287 i( jg1 == 0) { 7288 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7292 o = 0; 7293 su = ( DB_LOCK_STAT *) DbEnv_lock_ ( g1 , g2 ); 7294 i(! DB_RETOK_STD ( o )) { 7295 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7299 jsu = (* jv )-> NewObje (jv, lock__ass , lock__cڡru ); 7300 i( jsu ! NULL ) 7301 __dbj_fl_lock_ ( jv , jsu , su ); 7302 __os_u ( NULL , su ); 7304 jsu ; 7308 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1cis ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobjeAay jg2 ) { 7309 DbEnv * g1 = (DbEnv *) 0 ; 7310 __db_lk_cis g2 ; 7311 db_t_t su ; 7313 () jv ; 7314 () js ; 7315 () jg1_ ; 7316 g1 = *( DbEnv **)& jg1 ; 7318 i , n , r ; 7319 size_t bysize ; 7321 n = (& g2 )-> lk_modes = (* jv )-> GAayLgth (jv, jg2 ); 7322 bysize = ( u_ch * n *en; 7324 i(( r = __os_mloc ( NULL , bysize , &(& g2 )-> lk_cis )) != 0) { 7325 __dbj_throw ( jv , r , NULL , NULL, JDBENV ); 7329 i = 0; i < n ; i++) { 7330 jobje sub_y = (* jv )-> GObjeAayEmt (jenv, 7331 jg2 , i ); 7332 (* jv )-> GByAayRegi (jv,( jbyAay ) sub_y , 0, n , 7333 ( jby *)&(& g2 )-> lk_cis [ i * n ]); 7337 i( jg1 == 0) { 7338 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7342 su = ( db_t_t ) DbEnv_t_lk_cis ( g1 , g2 ); 7343 i(! DB_RETOK_STD ( su )) { 7344 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7348 __os_ ( NULL , (& g2 )-> lk_cis ); 7353 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1de ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7354 DbEnv * g1 = (DbEnv *) 0 ; 7355 u_t32_t g2 ; 7356 db_t_t su ; 7358 () jv ; 7359 () js ; 7360 () jg1_ ; 7361 g1 = *( DbEnv **)& jg1 ; 7362 g2 = ( u_t32_t ) jg2 ; 7364 i( jg1 == 0) { 7365 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7369 su = ( db_t_t ) DbEnv_t_lk_de ( g1 , g2 ); 7370 i(! DB_RETOK_STD ( su )) { 7371 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7377 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7378 DbEnv * g1 = (DbEnv *) 0 ; 7379 u_t32_t g2 ; 7380 db_t_t su ; 7382 () jv ; 7383 () js ; 7384 () jg1_ ; 7385 g1 = *( DbEnv **)& jg1 ; 7386 g2 = ( u_t32_t ) jg2 ; 7388 i( jg1 == 0) { 7389 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7393 su = ( db_t_t ) DbEnv_t_lk_max_locks ( g1 , g2 ); 7394 i(! DB_RETOK_STD ( su )) { 7395 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7401 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1locks ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7402 DbEnv * g1 = (DbEnv *) 0 ; 7403 u_t32_t g2 ; 7404 db_t_t su ; 7406 () jv ; 7407 () js ; 7408 () jg1_ ; 7409 g1 = *( DbEnv **)& jg1 ; 7410 g2 = ( u_t32_t ) jg2 ; 7412 i( jg1 == 0) { 7413 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7417 su = ( db_t_t ) DbEnv_t_lk_max_locks ( g1 , g2 ); 7418 i(! DB_RETOK_STD ( su )) { 7419 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7425 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lk_1max_1objes ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7426 DbEnv * g1 = (DbEnv *) 0 ; 7427 u_t32_t g2 ; 7428 db_t_t su ; 7430 () jv ; 7431 () js ; 7432 () jg1_ ; 7433 g1 = *( DbEnv **)& jg1 ; 7434 g2 = ( u_t32_t ) jg2 ; 7436 i( jg1 == 0) { 7437 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7441 su = ( db_t_t ) DbEnv_t_lk_max_objes ( g1 , g2 ); 7442 i(! DB_RETOK_STD ( su )) { 7443 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7449 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1bsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7450 jt jsu = 0 ; 7451 DbEnv * g1 = (DbEnv *) 0 ; 7452 u_t32_t su ; 7454 () jv ; 7455 () js ; 7456 () jg1_ ; 7457 g1 = *( DbEnv **)& jg1 ; 7459 i( jg1 == 0) { 7460 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7464 o = 0; 7465 su = ( u_t32_t ) DbEnv_g_lg_bsize ( g1 ); 7466 i(! DB_RETOK_STD ( o )) { 7467 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7470 jsu = ( jt ) su ; 7471 jsu ; 7475 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7476 jrg jsu = 0 ; 7477 DbEnv * g1 = (DbEnv *) 0 ; 7478 * su = 0 ; 7480 () jv ; 7481 () js ; 7482 () jg1_ ; 7483 g1 = *( DbEnv **)& jg1 ; 7485 i( jg1 == 0) { 7486 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7490 o = 0; 7491 su = (*) DbEnv_g_lg_d ( g1 ); 7492 i(! DB_RETOK_STD ( o )) { 7493 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7496 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 7497 jsu ; 7501 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1femode ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7502 jt jsu = 0 ; 7503 DbEnv * g1 = (DbEnv *) 0 ; 7504 su ; 7506 () jv ; 7507 () js ; 7508 () jg1_ ; 7509 g1 = *( DbEnv **)& jg1 ; 7511 i( jg1 == 0) { 7512 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7516 o = 0; 7517 su = () DbEnv_g_lg_femode ( g1 ); 7518 i(! DB_RETOK_STD ( o )) { 7519 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7522 jsu = ( jt ) su ; 7523 jsu ; 7527 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7528 jt jsu = 0 ; 7529 DbEnv * g1 = (DbEnv *) 0 ; 7530 u_t32_t su ; 7532 () jv ; 7533 () js ; 7534 () jg1_ ; 7535 g1 = *( DbEnv **)& jg1 ; 7537 i( jg1 == 0) { 7538 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7542 o = 0; 7543 su = ( u_t32_t ) DbEnv_g_lg_max ( g1 ); 7544 i(! DB_RETOK_STD ( o )) { 7545 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7548 jsu = ( jt ) su ; 7549 jsu ; 7553 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1lg_1gimax ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 7554 jt jsu = 0 ; 7555 DbEnv * g1 = (DbEnv *) 0 ; 7556 u_t32_t su ; 7558 () jv ; 7559 () js ; 7560 () jg1_ ; 7561 g1 = *( DbEnv **)& jg1 ; 7563 i( jg1 == 0) { 7564 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7568 o = 0; 7569 su = ( u_t32_t ) DbEnv_g_lg_gimax ( g1 ); 7570 i(! DB_RETOK_STD ( o )) { 7571 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7574 jsu = ( jt ) su ; 7575 jsu ; 7579 SWIGEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1chive ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7580 jobjeAay jsu = 0 ; 7581 DbEnv * g1 = (DbEnv *) 0 ; 7582 u_t32_t g2 ; 7583 ** su = 0 ; 7585 () jv ; 7586 () js ; 7587 () jg1_ ; 7588 g1 = *( DbEnv **)& jg1 ; 7589 g2 = ( u_t32_t ) jg2 ; 7591 i( jg1 == 0) { 7592 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7596 o = 0; 7597 su = (**) DbEnv_log_chive ( g1 , g2 ); 7598 i(! DB_RETOK_STD ( o )) { 7599 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7603 i( su ! NULL ) { 7604 i , n ; 7606 n = 0; 7607 su [ n ] ! NULL ) 7608 n ++; 7609 i(( jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , rg_ass , 7610 NULL )) == NULL) 7612 i = 0; i < n ; i++) { 7613 jrg r = (* jv )-> NewSgUTF (jv, su [ i ]); 7614 (* jv )-> SObjeAayEmt (jv, jsu , ( jsize ) i , r ); 7617 __os_u ( NULL , su ); 7620 jsu ; 7624 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1com ( JNIEnv * jv , jass js , jobje jg1 , jobje jg2 ) { 7625 jt jsu = 0 ; 7626 DB_LSN * g1 = (DB_LSN *) 0 ; 7627 DB_LSN * g2 = (DB_LSN *) 0 ; 7628 su ; 7629 DB_LSN l1 ; 7630 DB_LSN l2 ; 7632 () jv ; 7633 () js ; 7635 i( jg1 = NULL ) { 7636 g1 = NULL ; 7638 g1 = & l1 ; 7639 g1 -> fe = (* jv )-> GIFld (jv, jg1 , dbl_fe_fid ); 7640 g1 -> offt = (* jv )-> GIFld (jv, jg1 , 7641 dbl_offt_fid ); 7645 i( jg2 = NULL ) { 7646 g2 = NULL ; 7648 g2 = & l2 ; 7649 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7650 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7651 dbl_offt_fid ); 7655 i( g1 = NULL ) { 7656 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7661 i( g2 = NULL ) { 7662 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7666 su = () DbEnv_log_com (( DbL cڡ *) g1 ,(DbL cڡ *) g2 ); 7667 jsu = ( jt ) su ; 7669 i( jg1 ! NULL ) { 7670 (* jv )-> SIFld (jv, jg1 , dbl_fe_fid , g1 -> fe ); 7671 (* jv )-> SIFld (jv, jg1 , 7672 dbl_offt_fid , g1 -> offt ); 7676 i( jg2 ! NULL ) { 7677 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7678 (* jv )-> SIFld (jv, jg2 , 7679 dbl_offt_fid , g2 -> offt ); 7682 jsu ; 7686 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1curs ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7687 jlg jsu = 0 ; 7688 DbEnv * g1 = (DbEnv *) 0 ; 7689 u_t32_t g2 ; 7690 DB_LOGC * su = 0 ; 7692 () jv ; 7693 () js ; 7694 () jg1_ ; 7695 g1 = *( DbEnv **)& jg1 ; 7696 g2 = ( u_t32_t ) jg2 ; 7698 i( jg1 == 0) { 7699 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7703 o = 0; 7704 su = ( DB_LOGC *) DbEnv_log_curs ( g1 , g2 ); 7705 i(! DB_RETOK_STD ( o )) { 7706 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7709 *( DB_LOGC **)& jsu = su ; 7710 jsu ; 7714 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1fe ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 ) { 7715 jrg jsu = 0 ; 7716 DbEnv * g1 = (DbEnv *) 0 ; 7717 DB_LSN * g2 = (DB_LSN *) 0 ; 7718 * su = 0 ; 7719 DB_LSN l2 ; 7721 () jv ; 7722 () js ; 7723 () jg1_ ; 7724 g1 = *( DbEnv **)& jg1 ; 7726 i( jg2 = NULL ) { 7727 g2 = NULL ; 7729 g2 = & l2 ; 7730 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7731 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7732 dbl_offt_fid ); 7736 i( jg1 == 0) { 7737 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7741 i( g2 = NULL ) { 7742 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7747 o = 0; 7748 su = (*) DbEnv_log_fe ( g1 , g2 ); 7749 i(! DB_RETOK_STD ( o )) { 7750 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7753 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 7755 i( jg2 ! NULL ) { 7756 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7757 (* jv )-> SIFld (jv, jg2 , 7758 dbl_offt_fid , g2 -> offt ); 7761 jsu ; 7765 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1ush ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 ) { 7766 DbEnv * g1 = (DbEnv *) 0 ; 7767 DB_LSN * g2 = (DB_LSN *) 0 ; 7768 db_t_t su ; 7769 DB_LSN l2 ; 7771 () jv ; 7772 () js ; 7773 () jg1_ ; 7774 g1 = *( DbEnv **)& jg1 ; 7776 i( jg2 = NULL ) { 7777 g2 = NULL ; 7779 g2 = & l2 ; 7780 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7781 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7782 dbl_offt_fid ); 7786 i( jg1 == 0) { 7787 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7792 su = ( db_t_t ) DbEnv_log_ush ( g1 ,( DbL cڡ *) g2 ); 7793 i(! DB_RETOK_STD ( su )) { 7794 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7798 i( jg2 ! NULL ) { 7799 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7800 (* jv )-> SIFld (jv, jg2 , 7801 dbl_offt_fid , g2 -> offt ); 7807 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1g_1cfig ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7808 jboޗn jsu = 0 ; 7809 DbEnv * g1 = (DbEnv *) 0 ; 7810 u_t32_t g2 ; 7811 t_bo su ; 7813 () jv ; 7814 () js ; 7815 () jg1_ ; 7816 g1 = *( DbEnv **)& jg1 ; 7817 g2 = ( u_t32_t ) jg2 ; 7819 i( jg1 == 0) { 7820 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7824 o = 0; 7825 su = ( t_bo ) DbEnv_log_g_cfig ( g1 , g2 ); 7826 i(! DB_RETOK_STD ( o )) { 7827 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7830 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 7831 jsu ; 7835 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1put ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jobje jg3 , jt jg4 ) { 7836 DbEnv * g1 = (DbEnv *) 0 ; 7837 DB_LSN * g2 = (DB_LSN *) 0 ; 7838 DBT * g3 = (DBT *) 0 ; 7839 u_t32_t g4 ; 7840 db_t_t su ; 7841 DB_LSN l2 ; 7842 DBT_LOCKED ldbt3 ; 7844 () jv ; 7845 () js ; 7846 () jg1_ ; 7847 g1 = *( DbEnv **)& jg1 ; 7849 i( jg2 = NULL ) { 7850 g2 = NULL ; 7852 g2 = & l2 ; 7853 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 7854 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 7855 dbl_offt_fid ); 7859 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 7862 g4 = ( u_t32_t ) jg4 ; 7864 i( jg1 == 0) { 7865 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7869 i( g2 = NULL ) { 7870 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 7875 su = ( db_t_t ) DbEnv_log_put ( g1 , g2 ,( Dbt cڡ *) g3 , g4 ); 7876 i(! DB_RETOK_STD ( su )) { 7877 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7881 i( jg2 ! NULL ) { 7882 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 7883 (* jv )-> SIFld (jv, jg2 , 7884 dbl_offt_fid , g2 -> offt ); 7887 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 7891 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jrg jg3 ) { 7892 DbEnv * g1 = (DbEnv *) 0 ; 7893 DB_TXN * g2 = (DB_TXN *) 0 ; 7894 * g3 = (*) 0 ; 7895 db_t_t su ; 7897 () jv ; 7898 () js ; 7899 () jg1_ ; 7900 () jg2_ ; 7901 g1 = *( DbEnv **)& jg1 ; 7902 g2 = *( DB_TXN **)& jg2 ; 7903 g3 = 0; 7904 i( jg3 ) { 7905 g3 = (*)(* jv )-> GSgUTFChs (jv, jg3 , 0); 7906 i(! g3 ) ; 7909 i( jg1 == 0) { 7910 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7914 su = ( db_t_t ) DbEnv_log_t ( g1 , g2 ,(cڡ *) g3 ); 7915 i(! DB_RETOK_STD ( su )) { 7916 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7919 i( g3 (* jv )-> RSgUTFChs (jv, jg3 , (const *)arg3); 7923 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1t_1cfig ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jboޗn jg3 ) { 7924 DbEnv * g1 = (DbEnv *) 0 ; 7925 u_t32_t g2 ; 7926 t_bo g3 ; 7927 db_t_t su ; 7929 () jv ; 7930 () js ; 7931 () jg1_ ; 7932 g1 = *( DbEnv **)& jg1 ; 7933 g2 = ( u_t32_t ) jg2 ; 7934 g3 = ( jg3 = JNI_TRUE ); 7936 i( jg1 == 0) { 7937 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7941 su = ( db_t_t ) DbEnv_log_t_cfig ( g1 , g2 , g3 ); 7942 i(! DB_RETOK_STD ( su )) { 7943 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 7949 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1log_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7950 jobje jsu = 0 ; 7951 DbEnv * g1 = (DbEnv *) 0 ; 7952 u_t32_t g2 ; 7953 DB_LOG_STAT * su = 0 ; 7955 () jv ; 7956 () js ; 7957 () jg1_ ; 7958 g1 = *( DbEnv **)& jg1 ; 7959 g2 = ( u_t32_t ) jg2 ; 7961 i( jg1 == 0) { 7962 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7966 o = 0; 7967 su = ( DB_LOG_STAT *) DbEnv_log_ ( g1 , g2 ); 7968 i(! DB_RETOK_STD ( o )) { 7969 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 7973 jsu = (* jv )-> NewObje (jv, log__ass , log__cڡru ); 7974 i( jsu ! NULL ) 7975 __dbj_fl_log_ ( jv , jsu , su ); 7976 __os_u ( NULL , su ); 7978 jsu ; 7982 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1bsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 7983 DbEnv * g1 = (DbEnv *) 0 ; 7984 u_t32_t g2 ; 7985 db_t_t su ; 7987 () jv ; 7988 () js ; 7989 () jg1_ ; 7990 g1 = *( DbEnv **)& jg1 ; 7991 g2 = ( u_t32_t ) jg2 ; 7993 i( jg1 == 0) { 7994 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 7998 su = ( db_t_t ) DbEnv_t_lg_bsize ( g1 , g2 ); 7999 i(! DB_RETOK_STD ( su )) { 8000 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8006 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1d ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 8007 DbEnv * g1 = (DbEnv *) 0 ; 8008 * g2 = (*) 0 ; 8009 db_t_t su ; 8011 () jv ; 8012 () js ; 8013 () jg1_ ; 8014 g1 = *( DbEnv **)& jg1 ; 8015 g2 = 0; 8016 i( jg2 ) { 8017 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 8018 i(! g2 ) ; 8021 i( jg1 == 0) { 8022 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8026 su = ( db_t_t ) DbEnv_t_lg_d ( g1 ,(cڡ *) g2 ); 8027 i(! DB_RETOK_STD ( su )) { 8028 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8031 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 8035 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1femode ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8036 DbEnv * g1 = (DbEnv *) 0 ; 8037 g2 ; 8038 db_t_t su ; 8040 () jv ; 8041 () js ; 8042 () jg1_ ; 8043 g1 = *( DbEnv **)& jg1 ; 8044 g2 = () jg2 ; 8046 i( jg1 == 0) { 8047 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8051 su = ( db_t_t ) DbEnv_t_lg_femode ( g1 , g2 ); 8052 i(! DB_RETOK_STD ( su )) { 8053 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8059 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8060 DbEnv * g1 = (DbEnv *) 0 ; 8061 u_t32_t g2 ; 8062 db_t_t su ; 8064 () jv ; 8065 () js ; 8066 () jg1_ ; 8067 g1 = *( DbEnv **)& jg1 ; 8068 g2 = ( u_t32_t ) jg2 ; 8070 i( jg1 == 0) { 8071 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8075 su = ( db_t_t ) DbEnv_t_lg_max ( g1 , g2 ); 8076 i(! DB_RETOK_STD ( su )) { 8077 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8083 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1t_1lg_1gimax ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8084 DbEnv * g1 = (DbEnv *) 0 ; 8085 u_t32_t g2 ; 8086 db_t_t su ; 8088 () jv ; 8089 () js ; 8090 () jg1_ ; 8091 g1 = *( DbEnv **)& jg1 ; 8092 g2 = ( u_t32_t ) jg2 ; 8094 i( jg1 == 0) { 8095 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8099 su = ( db_t_t ) DbEnv_t_lg_gimax ( g1 , g2 ); 8100 i(! DB_RETOK_STD ( su )) { 8101 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8107 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8108 jlg jsu = 0 ; 8109 DbEnv * g1 = (DbEnv *) 0 ; 8110 jlg su ; 8112 () jv ; 8113 () js ; 8114 () jg1_ ; 8115 g1 = *( DbEnv **)& jg1 ; 8117 i( jg1 == 0) { 8118 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8122 o = 0; 8123 su = DbEnv_g_chesize ( g1 ); 8124 i(! DB_RETOK_STD ( o )) { 8125 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8128 jsu = su ; 8129 jsu ; 8133 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1chesize_1nche ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8134 jt jsu = 0 ; 8135 DbEnv * g1 = (DbEnv *) 0 ; 8136 su ; 8138 () jv ; 8139 () js ; 8140 () jg1_ ; 8141 g1 = *( DbEnv **)& jg1 ; 8143 i( jg1 == 0) { 8144 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8148 o = 0; 8149 su = () DbEnv_g_chesize_nche ( g1 ); 8150 i(! DB_RETOK_STD ( o )) { 8151 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8154 jsu = ( jt ) su ; 8155 jsu ; 8159 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1che_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8160 jlg jsu = 0 ; 8161 DbEnv * g1 = (DbEnv *) 0 ; 8162 jlg su ; 8164 () jv ; 8165 () js ; 8166 () jg1_ ; 8167 g1 = *( DbEnv **)& jg1 ; 8169 i( jg1 == 0) { 8170 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8174 o = 0; 8175 su = DbEnv_g_che_max ( g1 ); 8176 i(! DB_RETOK_STD ( o )) { 8177 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8180 jsu = su ; 8181 jsu ; 8185 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1ݒfd ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8186 jt jsu = 0 ; 8187 DbEnv * g1 = (DbEnv *) 0 ; 8188 su ; 8190 () jv ; 8191 () js ; 8192 () jg1_ ; 8193 g1 = *( DbEnv **)& jg1 ; 8195 i( jg1 == 0) { 8196 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8200 o = 0; 8201 su = () DbEnv_g_mp_max_ݒfd ( g1 ); 8202 i(! DB_RETOK_STD ( o )) { 8203 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8206 jsu = ( jt ) su ; 8207 jsu ; 8211 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1wre ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8212 jt jsu = 0 ; 8213 DbEnv * g1 = (DbEnv *) 0 ; 8214 su ; 8216 () jv ; 8217 () js ; 8218 () jg1_ ; 8219 g1 = *( DbEnv **)& jg1 ; 8221 i( jg1 == 0) { 8222 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8226 o = 0; 8227 su = () DbEnv_g_mp_max_wre ( g1 ); 8228 i(! DB_RETOK_STD ( o )) { 8229 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8232 jsu = ( jt ) su ; 8233 jsu ; 8237 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1max_1wre_1p ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8238 jlg jsu = 0 ; 8239 DbEnv * g1 = (DbEnv *) 0 ; 8240 db_timeout_t su ; 8242 () jv ; 8243 () js ; 8244 () jg1_ ; 8245 g1 = *( DbEnv **)& jg1 ; 8247 i( jg1 == 0) { 8248 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8252 o = 0; 8253 su = ( db_timeout_t ) DbEnv_g_mp_max_wre_p ( g1 ); 8254 i(! DB_RETOK_STD ( o )) { 8255 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8258 jsu = ( jlg ) su ; 8259 jsu ; 8263 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1mp_1mmsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8264 jlg jsu = 0 ; 8265 DbEnv * g1 = (DbEnv *) 0 ; 8266 size_t su ; 8268 () jv ; 8269 () js ; 8270 () jg1_ ; 8271 g1 = *( DbEnv **)& jg1 ; 8273 i( jg1 == 0) { 8274 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8278 o = 0; 8279 su = DbEnv_g_mp_mmsize ( g1 ); 8280 i(! DB_RETOK_STD ( o )) { 8281 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8284 jsu = ( jlg ) su ; 8285 jsu ; 8289 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8290 jobje jsu = 0 ; 8291 DbEnv * g1 = (DbEnv *) 0 ; 8292 u_t32_t g2 ; 8293 DB_MPOOL_STAT * su = 0 ; 8295 () jv ; 8296 () js ; 8297 () jg1_ ; 8298 g1 = *( DbEnv **)& jg1 ; 8299 g2 = ( u_t32_t ) jg2 ; 8301 i( jg1 == 0) { 8302 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8306 o = 0; 8307 su = ( DB_MPOOL_STAT *) DbEnv_memp_ ( g1 , g2 ); 8308 i(! DB_RETOK_STD ( o )) { 8309 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8313 jsu = (* jv )-> NewObje (jv, mpo__ass , mpo__cڡru ); 8314 i( jsu ! NULL ) 8315 __dbj_fl_mpo_ ( jv , jsu , su ); 8316 __os_u ( NULL , su ); 8318 jsu ; 8322 SWIGEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1f ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8323 jobjeAay jsu = 0 ; 8324 DbEnv * g1 = (DbEnv *) 0 ; 8325 u_t32_t g2 ; 8326 DB_MPOOL_FSTAT ** su = 0 ; 8328 () jv ; 8329 () js ; 8330 () jg1_ ; 8331 g1 = *( DbEnv **)& jg1 ; 8332 g2 = ( u_t32_t ) jg2 ; 8334 i( jg1 == 0) { 8335 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8339 o = 0; 8340 su = ( DB_MPOOL_FSTAT **) DbEnv_memp_f ( g1 , g2 ); 8341 i(! DB_RETOK_STD ( o )) { 8342 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8346 i , n ; 8348 n = 0; 8349 su [ n ] ! NULL ) 8350 n ++; 8351 jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , 8352 mpo_f_ass , 0); 8353 i( jsu = NULL ) { 8354 __os_u ( NULL , su ); 8357 i = 0; i < n ; i++) { 8358 jobje obj = (* jv )-> NewObje (jv, mpo_f_ass , 8359 mpo_f_cڡru ); 8360 i( obj = NULL ) { 8361 __os_u ( NULL , su ); 8364 (* jv )-> SObjeAayEmt (jv, jsu , i , obj ); 8365 __dbj_fl_mpo_f ( jv , obj , su [ i ]); 8367 __os_u ( NULL , su ); 8369 jsu ; 8373 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1memp_1ick ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 ) { 8374 jt jsu = 0 ; 8375 DbEnv * g1 = (DbEnv *) 0 ; 8376 g2 ; 8377 su ; 8379 () jv ; 8380 () js ; 8381 () jg1_ ; 8382 g1 = *( DbEnv **)& jg1 ; 8383 g2 = () jg2 ; 8385 i( jg1 == 0) { 8386 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8390 o = 0; 8391 su = () DbEnv_memp_ick ( g1 , g2 ); 8392 i(! DB_RETOK_STD ( o )) { 8393 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8396 jsu = ( jt ) su ; 8397 jsu ; 8401 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1ign ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8402 jt jsu = 0 ; 8403 DbEnv * g1 = (DbEnv *) 0 ; 8404 u_t32_t su ; 8406 () jv ; 8407 () js ; 8408 () jg1_ ; 8409 g1 = *( DbEnv **)& jg1 ; 8411 i( jg1 == 0) { 8412 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8416 o = 0; 8417 su = ( u_t32_t ) DbEnv_mux_g_ign ( g1 ); 8418 i(! DB_RETOK_STD ( o )) { 8419 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8422 jsu = ( jt ) su ; 8423 jsu ; 8427 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1emt ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8428 jt jsu = 0 ; 8429 DbEnv * g1 = (DbEnv *) 0 ; 8430 u_t32_t su ; 8432 () jv ; 8433 () js ; 8434 () jg1_ ; 8435 g1 = *( DbEnv **)& jg1 ; 8437 i( jg1 == 0) { 8438 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8442 o = 0; 8443 su = ( u_t32_t ) DbEnv_mux_g_emt ( g1 ); 8444 i(! DB_RETOK_STD ( o )) { 8445 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8448 jsu = ( jt ) su ; 8449 jsu ; 8453 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8454 jt jsu = 0 ; 8455 DbEnv * g1 = (DbEnv *) 0 ; 8456 u_t32_t su ; 8458 () jv ; 8459 () js ; 8460 () jg1_ ; 8461 g1 = *( DbEnv **)& jg1 ; 8463 i( jg1 == 0) { 8464 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8468 o = 0; 8469 su = ( u_t32_t ) DbEnv_mux_g_max ( g1 ); 8470 i(! DB_RETOK_STD ( o )) { 8471 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8474 jsu = ( jt ) su ; 8475 jsu ; 8479 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1g_1s_1s ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8480 jt jsu = 0 ; 8481 DbEnv * g1 = (DbEnv *) 0 ; 8482 u_t32_t su ; 8484 () jv ; 8485 () js ; 8486 () jg1_ ; 8487 g1 = *( DbEnv **)& jg1 ; 8489 i( jg1 == 0) { 8490 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8494 o = 0; 8495 su = ( u_t32_t ) DbEnv_mux_g_s_s ( g1 ); 8496 i(! DB_RETOK_STD ( o )) { 8497 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8500 jsu = ( jt ) su ; 8501 jsu ; 8505 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1ign ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8506 DbEnv * g1 = (DbEnv *) 0 ; 8507 u_t32_t g2 ; 8508 db_t_t su ; 8510 () jv ; 8511 () js ; 8512 () jg1_ ; 8513 g1 = *( DbEnv **)& jg1 ; 8514 g2 = ( u_t32_t ) jg2 ; 8516 i( jg1 == 0) { 8517 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8521 su = ( db_t_t ) DbEnv_mux_t_ign ( g1 , g2 ); 8522 i(! DB_RETOK_STD ( su )) { 8523 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8529 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1emt ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8530 DbEnv * g1 = (DbEnv *) 0 ; 8531 u_t32_t g2 ; 8532 db_t_t su ; 8534 () jv ; 8535 () js ; 8536 () jg1_ ; 8537 g1 = *( DbEnv **)& jg1 ; 8538 g2 = ( u_t32_t ) jg2 ; 8540 i( jg1 == 0) { 8541 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8545 su = ( db_t_t ) DbEnv_mux_t_emt ( g1 , g2 ); 8546 i(! DB_RETOK_STD ( su )) { 8547 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8553 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8554 DbEnv * g1 = (DbEnv *) 0 ; 8555 u_t32_t g2 ; 8556 db_t_t su ; 8558 () jv ; 8559 () js ; 8560 () jg1_ ; 8561 g1 = *( DbEnv **)& jg1 ; 8562 g2 = ( u_t32_t ) jg2 ; 8564 i( jg1 == 0) { 8565 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8569 su = ( db_t_t ) DbEnv_mux_t_max ( g1 , g2 ); 8570 i(! DB_RETOK_STD ( su )) { 8571 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8577 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1t_1s_1s ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8578 DbEnv * g1 = (DbEnv *) 0 ; 8579 u_t32_t g2 ; 8580 db_t_t su ; 8582 () jv ; 8583 () js ; 8584 () jg1_ ; 8585 g1 = *( DbEnv **)& jg1 ; 8586 g2 = ( u_t32_t ) jg2 ; 8588 i( jg1 == 0) { 8589 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8593 su = ( db_t_t ) DbEnv_mux_t_s_s ( g1 , g2 ); 8594 i(! DB_RETOK_STD ( su )) { 8595 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8601 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1mux_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8602 jobje jsu = 0 ; 8603 DbEnv * g1 = (DbEnv *) 0 ; 8604 u_t32_t g2 ; 8605 DB_MUTEX_STAT * su = 0 ; 8607 () jv ; 8608 () js ; 8609 () jg1_ ; 8610 g1 = *( DbEnv **)& jg1 ; 8611 g2 = ( u_t32_t ) jg2 ; 8613 i( jg1 == 0) { 8614 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8618 o = 0; 8619 su = ( DB_MUTEX_STAT *) DbEnv_mux_ ( g1 , g2 ); 8620 i(! DB_RETOK_STD ( o )) { 8621 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8625 jsu = (* jv )-> NewObje (jv, mux__ass , mux__cڡru ); 8626 i( jsu ! NULL ) 8627 __dbj_fl_mux_ ( jv , jsu , su ); 8628 __os_u ( NULL , su ); 8630 jsu ; 8634 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tx_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8635 jt jsu = 0 ; 8636 DbEnv * g1 = (DbEnv *) 0 ; 8637 u_t32_t su ; 8639 () jv ; 8640 () js ; 8641 () jg1_ ; 8642 g1 = *( DbEnv **)& jg1 ; 8644 i( jg1 == 0) { 8645 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8649 o = 0; 8650 su = ( u_t32_t ) DbEnv_g_tx_max ( g1 ); 8651 i(! DB_RETOK_STD ( o )) { 8652 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8655 jsu = ( jt ) su ; 8656 jsu ; 8660 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1tx_1timeamp ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8661 jlg jsu = 0 ; 8662 DbEnv * g1 = (DbEnv *) 0 ; 8663 time_t su ; 8665 () jv ; 8666 () js ; 8667 () jg1_ ; 8668 g1 = *( DbEnv **)& jg1 ; 8670 i( jg1 == 0) { 8671 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8675 o = 0; 8676 su = DbEnv_g_tx_timeamp ( g1 ); 8677 i(! DB_RETOK_STD ( o )) { 8678 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8681 jsu = ( jlg ) su ; 8682 jsu ; 8686 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8687 jlg jsu = 0 ; 8688 DbEnv * g1 = (DbEnv *) 0 ; 8689 u_t32_t g2 ; 8690 db_timeout_t su ; 8692 () jv ; 8693 () js ; 8694 () jg1_ ; 8695 g1 = *( DbEnv **)& jg1 ; 8696 g2 = ( u_t32_t ) jg2 ; 8698 i( jg1 == 0) { 8699 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8703 o = 0; 8704 su = ( db_timeout_t ) DbEnv_g_timeout ( g1 , g2 ); 8705 i(! DB_RETOK_STD ( o )) { 8706 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8709 jsu = ( jlg ) su ; 8710 jsu ; 8714 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1beg ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jt jg3 ) { 8715 jlg jsu = 0 ; 8716 DbEnv * g1 = (DbEnv *) 0 ; 8717 DB_TXN * g2 = (DB_TXN *) 0 ; 8718 u_t32_t g3 ; 8719 DB_TXN * su = 0 ; 8721 () jv ; 8722 () js ; 8723 () jg1_ ; 8724 () jg2_ ; 8725 g1 = *( DbEnv **)& jg1 ; 8726 g2 = *( DB_TXN **)& jg2 ; 8727 g3 = ( u_t32_t ) jg3 ; 8729 i( jg1 == 0) { 8730 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8734 o = 0; 8735 su = ( DB_TXN *) DbEnv_txn_beg ( g1 , g2 , g3 ); 8736 i(! DB_RETOK_STD ( o )) { 8737 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8740 *( DB_TXN **)& jsu = su ; 8741 jsu ; 8745 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1checkpot ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 , j jg4 ) { 8746 DbEnv * g1 = (DbEnv *) 0 ; 8747 u_t32_t g2 ; 8748 u_t32_t g3 ; 8749 u_t32_t g4 ; 8750 db_t_t su ; 8752 () jv ; 8753 () js ; 8754 () jg1_ ; 8755 g1 = *( DbEnv **)& jg1 ; 8756 g2 = ( u_t32_t ) jg2 ; 8757 g3 = ( u_t32_t ) jg3 ; 8758 g4 = ( u_t32_t ) jg4 ; 8760 i( jg1 == 0) { 8761 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8765 su = ( db_t_t ) DbEnv_txn_checkpot ( g1 , g2 , g3 , g4 ); 8766 i(! DB_RETOK_STD ( su )) { 8767 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8773 SWIGEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1cov ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 ) { 8774 jobjeAay jsu = 0 ; 8775 DbEnv * g1 = (DbEnv *) 0 ; 8776 g2 ; 8777 u_t32_t g3 ; 8778 DB_PREPLIST * su = 0 ; 8780 () jv ; 8781 () js ; 8782 () jg1_ ; 8783 g1 = *( DbEnv **)& jg1 ; 8784 g2 = () jg2 ; 8785 g3 = ( u_t32_t ) jg3 ; 8787 i( jg1 == 0) { 8788 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8792 o = 0; 8793 su = ( DB_PREPLIST *) DbEnv_txn_cov ( g1 , g2 , g3 ); 8794 i(! DB_RETOK_STD ( o )) { 8795 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8799 i , n ; 8801 n = 0; 8802 su [ n ]. txn ! NULL ) 8803 n ++; 8804 jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , dbli_ass , 8805 NULL ); 8806 i( jsu = NULL ) 8808 i = 0; i < n ; i++) { 8809 jobje jtxn = (* jv )-> NewObje (jv, dbtxn_ass , 8810 dbtxn_cڡru , su [ i ]. txn , JNI_FALSE ); 8811 jobje byr = (* jv )-> NewByAay (jenv, 8812 ( jsize )( su [ i ]. gid )); 8813 jobje obj = (* jv )-> NewObje (jv, dbli_ass , 8814 dbli_cڡru , jtxn , byr ); 8816 i( jtxn = NULL || byr =NULL || obj == NULL) 8819 (* jv )-> SByAayRegi (jv, byr , 0, 8820 ( jsize )( su [ i ]. gid ), ( jby *)result[i].gid); 8821 (* jv )-> SObjeAayEmt (jv, jsu , i , obj ); 8823 __os_u ( NULL , su ); 8825 jsu ; 8829 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1txn_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 8830 jobje jsu = 0 ; 8831 DbEnv * g1 = (DbEnv *) 0 ; 8832 u_t32_t g2 ; 8833 DB_TXN_STAT * su = 0 ; 8835 () jv ; 8836 () js ; 8837 () jg1_ ; 8838 g1 = *( DbEnv **)& jg1 ; 8839 g2 = ( u_t32_t ) jg2 ; 8841 i( jg1 == 0) { 8842 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8846 o = 0; 8847 su = ( DB_TXN_STAT *) DbEnv_txn_ ( g1 , g2 ); 8848 i(! DB_RETOK_STD ( o )) { 8849 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8853 i ; 8854 jobjeAay aives ; 8855 jsu = (* jv )-> NewObje (jv, txn__ass , txn__cڡru ); 8856 i( jsu ! NULL ) 8857 __dbj_fl_txn_ ( jv , jsu , su ); 8859 aives = (* jv )-> NewObjeAay (jv, ( jsize ) su -> _ive , 8860 txn_aive_ass , 0); 8861 i( aives = NULL ) { 8862 __os_u ( NULL , su ); 8865 (* jv )-> SObjeFld (jv, jsu , 8866 txn___txǼay_fid , aives ); 8867 i = 0; i < su -> _ive ; i++) { 8868 jobje obj = (* jv )-> NewObje (jv, txn_aive_ass , 8869 txn_aive_cڡru ); 8870 i( obj = NULL ) { 8871 __os_u ( NULL , su ); 8874 (* jv )-> SObjeAayEmt (jv, aives , ( jsize ) i , obj ); 8875 __dbj_fl_txn_aive ( jv , obj , & su -> _txǼay [ i ]); 8877 __os_u ( NULL , su ); 8879 jsu ; 8883 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1lim ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 8884 jlg jsu = 0 ; 8885 DbEnv * g1 = (DbEnv *) 0 ; 8886 jlg su ; 8888 () jv ; 8889 () js ; 8890 () jg1_ ; 8891 g1 = *( DbEnv **)& jg1 ; 8893 i( jg1 == 0) { 8894 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8898 o = 0; 8899 su = DbEnv_p_g_lim ( g1 ); 8900 i(! DB_RETOK_STD ( o )) { 8901 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 8904 jsu = su ; 8905 jsu ; 8909 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1e ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 , j jg4 ) { 8910 DbEnv * g1 = (DbEnv *) 0 ; 8911 u_t32_t g2 ; 8912 g3 ; 8913 u_t32_t g4 ; 8914 db_t_t su ; 8916 () jv ; 8917 () js ; 8918 () jg1_ ; 8919 g1 = *( DbEnv **)& jg1 ; 8920 g2 = ( u_t32_t ) jg2 ; 8921 g3 = () jg3 ; 8922 g4 = ( u_t32_t ) jg4 ; 8924 i( jg1 == 0) { 8925 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8929 su = ( db_t_t ) DbEnv_p_e ( g1 , g2 , g3 , g4 ); 8930 i(! DB_RETOK_STD ( su )) { 8931 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8937 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1oss_1mesge ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jobje jg3 , j jg4 , jobje jg5 ) { 8938 jt jsu = 0 ; 8939 DbEnv * g1 = (DbEnv *) 0 ; 8940 DBT * g2 = (DBT *) 0 ; 8941 DBT * g3 = (DBT *) 0 ; 8942 g4 ; 8943 DB_LSN * g5 = (DB_LSN *) 0 ; 8944 su ; 8945 DBT_LOCKED ldbt2 ; 8946 DBT_LOCKED ldbt3 ; 8947 DB_LSN l5 ; 8949 () jv ; 8950 () js ; 8951 () jg1_ ; 8952 g1 = *( DbEnv **)& jg1 ; 8954 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 8958 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 8961 g4 = () jg4 ; 8963 i( jg5 = NULL ) { 8964 g5 = NULL ; 8966 g5 = & l5 ; 8967 g5 -> fe = (* jv )-> GIFld (jv, jg5 , dbl_fe_fid ); 8968 g5 -> offt = (* jv )-> GIFld (jv, jg5 , 8969 dbl_offt_fid ); 8973 i( jg1 == 0) { 8974 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 8978 i( g5 = NULL ) { 8979 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 8984 su = () DbEnv_p_oss_mesge ( g1 , g2 , g3 , g4 , g5 ); 8985 i(! DB_RETOK_REPPMSG ( su )) { 8986 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 8989 jsu = ( jt ) su ; 8990 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 8991 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 8993 i( jg5 ! NULL ) { 8994 (* jv )-> SIFld (jv, jg5 , dbl_fe_fid , g5 -> fe ); 8995 (* jv )-> SIFld (jv, jg5 , 8996 dbl_offt_fid , g5 -> offt ); 8999 jsu ; 9003 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1ush ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9004 DbEnv * g1 = (DbEnv *) 0 ; 9005 db_t_t su ; 9007 () jv ; 9008 () js ; 9009 () jg1_ ; 9010 g1 = *( DbEnv **)& jg1 ; 9012 i( jg1 == 0) { 9013 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9017 su = ( db_t_t ) DbEnv_p_ush ( g1 ); 9018 i(! DB_RETOK_STD ( su )) { 9019 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9025 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1cfig ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jboޗn jg3 ) { 9026 DbEnv * g1 = (DbEnv *) 0 ; 9027 u_t32_t g2 ; 9028 t_bo g3 ; 9029 db_t_t su ; 9031 () jv ; 9032 () js ; 9033 () jg1_ ; 9034 g1 = *( DbEnv **)& jg1 ; 9035 g2 = ( u_t32_t ) jg2 ; 9036 g3 = ( jg3 = JNI_TRUE ); 9038 i( jg1 == 0) { 9039 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9043 su = ( db_t_t ) DbEnv_p_t_cfig ( g1 , g2 , g3 ); 9044 i(! DB_RETOK_STD ( su )) { 9045 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9051 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1ockskew ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 ) { 9052 DbEnv * g1 = (DbEnv *) 0 ; 9053 u_t32_t g2 ; 9054 u_t32_t g3 ; 9055 db_t_t su ; 9057 () jv ; 9058 () js ; 9059 () jg1_ ; 9060 g1 = *( DbEnv **)& jg1 ; 9061 g2 = ( u_t32_t ) jg2 ; 9062 g3 = ( u_t32_t ) jg3 ; 9064 i( jg1 == 0) { 9065 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9069 su = ( db_t_t ) DbEnv_p_t_ockskew ( g1 , g2 , g3 ); 9070 i(! DB_RETOK_STD ( su )) { 9071 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9077 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1ockskew_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9078 jt jsu = 0 ; 9079 DbEnv * g1 = (DbEnv *) 0 ; 9080 u_t32_t su ; 9082 () jv ; 9083 () js ; 9084 () jg1_ ; 9085 g1 = *( DbEnv **)& jg1 ; 9087 i( jg1 == 0) { 9088 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9092 o = 0; 9093 su = ( u_t32_t ) DbEnv_p_g_ockskew_ ( g1 ); 9094 i(! DB_RETOK_STD ( o )) { 9095 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9098 jsu = ( jt ) su ; 9099 jsu ; 9103 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1ockskew_1ow ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9104 jt jsu = 0 ; 9105 DbEnv * g1 = (DbEnv *) 0 ; 9106 u_t32_t su ; 9108 () jv ; 9109 () js ; 9110 () jg1_ ; 9111 g1 = *( DbEnv **)& jg1 ; 9113 i( jg1 == 0) { 9114 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9118 o = 0; 9119 su = ( u_t32_t ) DbEnv_p_g_ockskew_ow ( g1 ); 9120 i(! DB_RETOK_STD ( o )) { 9121 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9124 jsu = ( jt ) su ; 9125 jsu ; 9129 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jt jg3 ) { 9130 DbEnv * g1 = (DbEnv *) 0 ; 9131 DBT * g2 = (DBT *) 0 ; 9132 u_t32_t g3 ; 9133 db_t_t su ; 9134 DBT_LOCKED ldbt2 ; 9136 () jv ; 9137 () js ; 9138 () jg1_ ; 9139 g1 = *( DbEnv **)& jg1 ; 9141 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 1) != 0) { 9144 g3 = ( u_t32_t ) jg3 ; 9146 i( jg1 == 0) { 9147 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9151 su = ( db_t_t ) DbEnv_p_t ( g1 , g2 , g3 ); 9152 i(! DB_RETOK_STD ( su )) { 9153 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9156 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 9160 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1sync ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9161 DbEnv * g1 = (DbEnv *) 0 ; 9162 u_t32_t g2 ; 9163 db_t_t su ; 9165 () jv ; 9166 () js ; 9167 () jg1_ ; 9168 g1 = *( DbEnv **)& jg1 ; 9169 g2 = ( u_t32_t ) jg2 ; 9171 i( jg1 == 0) { 9172 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9176 su = ( db_t_t ) DbEnv_p_sync ( g1 , g2 ); 9177 i(! DB_RETOK_STD ( su )) { 9178 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9184 SWIGEXPORT jboޗn JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1cfig ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9185 jboޗn jsu = 0 ; 9186 DbEnv * g1 = (DbEnv *) 0 ; 9187 u_t32_t g2 ; 9188 t_bo su ; 9190 () jv ; 9191 () js ; 9192 () jg1_ ; 9193 g1 = *( DbEnv **)& jg1 ; 9194 g2 = ( u_t32_t ) jg2 ; 9196 i( jg1 == 0) { 9197 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9201 o = 0; 9202 su = ( t_bo ) DbEnv_p_g_cfig ( g1 , g2 ); 9203 i(! DB_RETOK_STD ( o )) { 9204 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9207 jsu = ( su ? JNI_TRUE : JNI_FALSE ; 9208 jsu ; 9212 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9213 jobje jsu = 0 ; 9214 DbEnv * g1 = (DbEnv *) 0 ; 9215 u_t32_t g2 ; 9216 DB_REP_STAT * su = 0 ; 9218 () jv ; 9219 () js ; 9220 () jg1_ ; 9221 g1 = *( DbEnv **)& jg1 ; 9222 g2 = ( u_t32_t ) jg2 ; 9224 i( jg1 == 0) { 9225 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9229 o = 0; 9230 su = ( DB_REP_STAT *) DbEnv_p_ ( g1 , g2 ); 9231 i(! DB_RETOK_STD ( o )) { 9232 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9236 jsu = (* jv )-> NewObje (jv, p__ass , p__cڡru ); 9237 i( jsu ! NULL ) 9238 __dbj_fl_p_ ( jv , jsu , su ); 9239 __os_u ( NULL , su ); 9241 jsu ; 9245 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1lim ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 9246 DbEnv * g1 = (DbEnv *) 0 ; 9247 jlg g2 ; 9248 db_t_t su ; 9250 () jv ; 9251 () js ; 9252 () jg1_ ; 9253 g1 = *( DbEnv **)& jg1 ; 9254 g2 = jg2 ; 9256 i( jg1 == 0) { 9257 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9261 su = ( db_t_t ) DbEnv_p_t_lim ( g1 , g2 ); 9262 i(! DB_RETOK_STD ( su )) { 9263 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9269 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1que_1m ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9270 jt jsu = 0 ; 9271 DbEnv * g1 = (DbEnv *) 0 ; 9272 u_t32_t su ; 9274 () jv ; 9275 () js ; 9276 () jg1_ ; 9277 g1 = *( DbEnv **)& jg1 ; 9279 i( jg1 == 0) { 9280 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9284 o = 0; 9285 su = ( u_t32_t ) DbEnv_p_g_que_m ( g1 ); 9286 i(! DB_RETOK_STD ( o )) { 9287 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9290 jsu = ( jt ) su ; 9291 jsu ; 9295 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1que_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9296 jt jsu = 0 ; 9297 DbEnv * g1 = (DbEnv *) 0 ; 9298 u_t32_t su ; 9300 () jv ; 9301 () js ; 9302 () jg1_ ; 9303 g1 = *( DbEnv **)& jg1 ; 9305 i( jg1 == 0) { 9306 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9310 o = 0; 9311 su = ( u_t32_t ) DbEnv_p_g_que_max ( g1 ); 9312 i(! DB_RETOK_STD ( o )) { 9313 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9316 jsu = ( jt ) su ; 9317 jsu ; 9321 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1que ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 ) { 9322 DbEnv * g1 = (DbEnv *) 0 ; 9323 u_t32_t g2 ; 9324 u_t32_t g3 ; 9325 db_t_t su ; 9327 () jv ; 9328 () js ; 9329 () jg1_ ; 9330 g1 = *( DbEnv **)& jg1 ; 9331 g2 = ( u_t32_t ) jg2 ; 9332 g3 = ( u_t32_t ) jg3 ; 9334 i( jg1 == 0) { 9335 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9339 su = ( db_t_t ) DbEnv_p_t_que ( g1 , g2 , g3 ); 9340 i(! DB_RETOK_STD ( su )) { 9341 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9347 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jboޗn jg3 ) { 9348 DbEnv * g1 = (DbEnv *) 0 ; 9349 g2 ; 9350 (* 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 ; 9351 db_t_t su ; 9353 () jv ; 9354 () js ; 9355 () jg1_ ; 9356 g1 = *( DbEnv **)& jg1 ; 9357 g2 = () jg2 ; 9359 g3 = ( jg3 = JNI_TRUE ? __dbj_p_t : NULL ; 9362 i( jg1 == 0) { 9363 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9367 su = ( db_t_t ) DbEnv_p_t_t ( g1 , g2 , g3 ); 9368 i(! DB_RETOK_STD ( su )) { 9369 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9375 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1nses ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9376 jt jsu = 0 ; 9377 DbEnv * g1 = (DbEnv *) 0 ; 9378 u_t32_t su ; 9380 () jv ; 9381 () js ; 9382 () jg1_ ; 9383 g1 = *( DbEnv **)& jg1 ; 9385 i( jg1 == 0) { 9386 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9390 o = 0; 9391 su = ( u_t32_t ) DbEnv_p_g_nses ( g1 ); 9392 i(! DB_RETOK_STD ( o )) { 9393 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9396 jsu = ( jt ) su ; 9397 jsu ; 9401 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9402 jt jsu = 0 ; 9403 DbEnv * g1 = (DbEnv *) 0 ; 9404 u_t32_t su ; 9406 () jv ; 9407 () js ; 9408 () jg1_ ; 9409 g1 = *( DbEnv **)& jg1 ; 9411 i( jg1 == 0) { 9412 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9416 o = 0; 9417 su = ( u_t32_t ) DbEnv_p_g_iܙy ( g1 ); 9418 i(! DB_RETOK_STD ( o )) { 9419 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9422 jsu = ( jt ) su ; 9423 jsu ; 9427 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1g_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 ) { 9428 jt jsu = 0 ; 9429 DbEnv * g1 = (DbEnv *) 0 ; 9430 g2 ; 9431 u_t32_t su ; 9433 () jv ; 9434 () js ; 9435 () jg1_ ; 9436 g1 = *( DbEnv **)& jg1 ; 9437 g2 = () jg2 ; 9439 i( jg1 == 0) { 9440 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9444 o = 0; 9445 su = ( u_t32_t ) DbEnv_p_g_timeout ( g1 , g2 ); 9446 i(! DB_RETOK_STD ( o )) { 9447 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9450 jsu = ( jt ) su ; 9451 jsu ; 9455 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1nses ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9456 DbEnv * g1 = (DbEnv *) 0 ; 9457 u_t32_t g2 ; 9458 db_t_t su ; 9460 () jv ; 9461 () js ; 9462 () jg1_ ; 9463 g1 = *( DbEnv **)& jg1 ; 9464 g2 = ( u_t32_t ) jg2 ; 9466 i( jg1 == 0) { 9467 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9471 su = ( db_t_t ) DbEnv_p_t_nses ( g1 , g2 ); 9472 i(! DB_RETOK_STD ( su )) { 9473 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9479 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9480 DbEnv * g1 = (DbEnv *) 0 ; 9481 u_t32_t g2 ; 9482 db_t_t su ; 9484 () jv ; 9485 () js ; 9486 () jg1_ ; 9487 g1 = *( DbEnv **)& jg1 ; 9488 g2 = ( u_t32_t ) jg2 ; 9490 i( jg1 == 0) { 9491 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9495 su = ( db_t_t ) DbEnv_p_t_iܙy ( g1 , g2 ); 9496 i(! DB_RETOK_STD ( su )) { 9497 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9503 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1p_1t_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jlg jg3 ) { 9504 DbEnv * g1 = (DbEnv *) 0 ; 9505 g2 ; 9506 db_timeout_t g3 ; 9507 db_t_t su ; 9509 () jv ; 9510 () js ; 9511 () jg1_ ; 9512 g1 = *( DbEnv **)& jg1 ; 9513 g2 = () jg2 ; 9514 g3 = ( db_timeout_t ) jg3 ; 9516 i( jg1 == 0) { 9517 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9521 su = ( db_t_t ) DbEnv_p_t_timeout ( g1 , g2 , g3 ); 9522 i(! DB_RETOK_STD ( su )) { 9523 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9529 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1add_1me_1se ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , j jg3 , j jg4 ) { 9530 jt jsu = 0 ; 9531 DbEnv * g1 = (DbEnv *) 0 ; 9532 * g2 = (*) 0 ; 9533 u_t32_t g3 ; 9534 u_t32_t g4 ; 9535 su ; 9537 () jv ; 9538 () js ; 9539 () jg1_ ; 9540 g1 = *( DbEnv **)& jg1 ; 9541 g2 = 0; 9542 i( jg2 ) { 9543 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 9544 i(! g2 ) 0; 9546 g3 = ( u_t32_t ) jg3 ; 9547 g4 = ( u_t32_t ) jg4 ; 9549 i( jg1 == 0) { 9550 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9554 o = 0; 9555 su = () DbEnv_pmgr_add_me_se ( g1 ,(cڡ *) g2 , g3 , g4 ); 9556 i(! DB_RETOK_STD ( o )) { 9557 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9560 jsu = ( jt ) su ; 9561 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 9562 jsu ; 9566 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1g_1ack_1picy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9567 DbEnv * g1 = (DbEnv *) 0 ; 9568 db_t_t su ; 9570 () jv ; 9571 () js ; 9572 () jg1_ ; 9573 g1 = *( DbEnv **)& jg1 ; 9575 i( jg1 == 0) { 9576 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9580 su = ( db_t_t ) DbEnv_pmgr_g_ack_picy ( g1 ); 9581 i(! DB_RETOK_STD ( su )) { 9582 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9588 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t_1ack_1picy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9589 DbEnv * g1 = (DbEnv *) 0 ; 9590 g2 ; 9591 db_t_t su ; 9593 () jv ; 9594 () js ; 9595 () jg1_ ; 9596 g1 = *( DbEnv **)& jg1 ; 9597 g2 = () jg2 ; 9599 i( jg1 == 0) { 9600 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9604 su = ( db_t_t ) DbEnv_pmgr_t_ack_picy ( g1 , g2 ); 9605 i(! DB_RETOK_STD ( su )) { 9606 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9612 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t_1lol_1se ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 , jt jg3 , j jg4 ) { 9613 DbEnv * g1 = (DbEnv *) 0 ; 9614 * g2 = (*) 0 ; 9615 u_t32_t g3 ; 9616 u_t32_t g4 ; 9617 db_t_t su ; 9619 () jv ; 9620 () js ; 9621 () jg1_ ; 9622 g1 = *( DbEnv **)& jg1 ; 9623 g2 = 0; 9624 i( jg2 ) { 9625 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 9626 i(! g2 ) ; 9628 g3 = ( u_t32_t ) jg3 ; 9629 g4 = ( u_t32_t ) jg4 ; 9631 i( jg1 == 0) { 9632 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9636 su = ( db_t_t ) DbEnv_pmgr_t_lol_se ( g1 ,(cڡ *) g2 , g3 , g4 ); 9637 i(! DB_RETOK_STD ( su )) { 9638 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9641 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 9645 SWIGEXPORT jobjeAay JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1se_1li ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9646 jobjeAay jsu = 0 ; 9647 DbEnv * g1 = (DbEnv *) 0 ; 9648 __db_pmgr_ses su ; 9650 () jv ; 9651 () js ; 9652 () jg1_ ; 9653 g1 = *( DbEnv **)& jg1 ; 9655 i( jg1 == 0) { 9656 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9660 o = 0; 9661 su = DbEnv_pmgr_se_li ( g1 ); 9662 i(! DB_RETOK_STD ( o )) { 9663 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9667 i , n ; 9668 jobje jp_addr , jp_fo ; 9670 n = (& su )-> nses ; 9671 jsu = (* jv )-> NewObjeAay (jv, ( jsize ) n , pmgr_sefo_ass , 9672 NULL ); 9673 i( jsu = NULL ) 9675 i = 0; i < n ; i++) { 9676 jrg addr_ho = (* jv )-> NewSgUTF (jv, (& su )-> ses [ i ]. ho ); 9677 i( addr_ho = NULL ) 9679 jp_addr = (* jv )-> NewObje (jenv, 9680 pho_ass , pho_cڡru , addr_ho , (& su )-> ses [ i ]. pt ); 9681 i( jp_addr = NULL ) 9684 jp_fo = (* jv )-> NewObje (jenv, 9685 pmgr_sefo_ass , pmgr_sefo_cڡru , jp_addr , (& su )-> ses [ i ]. eid ); 9686 (* jv )-> SIFld (jv, jp_fo , pmgr_sefo_us_fid , 9687 (& su )-> ses [ i ]. us ); 9688 i( jp_fo = NULL ) 9691 (* jv )-> SObjeAayEmt (jv, jsu , i , jp_fo ); 9693 __os_u ( NULL , (& su )-> ses ); 9695 jsu ; 9699 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1t ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , j jg3 ) { 9700 DbEnv * g1 = (DbEnv *) 0 ; 9701 g2 ; 9702 u_t32_t g3 ; 9703 db_t_t su ; 9705 () jv ; 9706 () js ; 9707 () jg1_ ; 9708 g1 = *( DbEnv **)& jg1 ; 9709 g2 = () jg2 ; 9710 g3 = ( u_t32_t ) jg3 ; 9712 i( jg1 == 0) { 9713 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9717 su = ( db_t_t ) DbEnv_pmgr_t ( g1 , g2 , g3 ); 9718 i(! DB_RETOK_STD ( su )) { 9719 __dbj_throw ( jv , su , NULL , NULL, JDBENV ); 9725 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1pmgr_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9726 jobje jsu = 0 ; 9727 DbEnv * g1 = (DbEnv *) 0 ; 9728 u_t32_t g2 ; 9729 DB_REPMGR_STAT * su = 0 ; 9731 () jv ; 9732 () js ; 9733 () jg1_ ; 9734 g1 = *( DbEnv **)& jg1 ; 9735 g2 = ( u_t32_t ) jg2 ; 9737 i( jg1 == 0) { 9738 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9742 o = 0; 9743 su = ( DB_REPMGR_STAT *) DbEnv_pmgr_ ( g1 , g2 ); 9744 i(! DB_RETOK_STD ( o )) { 9745 __dbj_throw ( jv , o , NULL , NULL, JDBENV ); 9749 jsu = (* jv )-> NewObje (jv, pmgr__ass , pmgr__cڡru ); 9750 i( jsu ! NULL ) 9751 __dbj_fl_pmgr_ ( jv , jsu , su ); 9752 __os_u ( NULL , su ); 9754 jsu ; 9758 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1 ( JNIEnv * jv , jass js , jt jg1 ) { 9759 jrg jsu = 0 ; 9760 g1 ; 9761 * su = 0 ; 9763 () jv ; 9764 () js ; 9765 g1 = () jg1 ; 9766 su = (*) DbEnv_ ( g1 ); 9767 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 9768 jsu ; 9772 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1maj ( JNIEnv * jv , jass js ) { 9773 jt jsu = 0 ; 9774 su ; 9776 () jv ; 9777 () js ; 9778 su = () DbEnv_g_vsi_maj (); 9779 jsu = ( jt ) su ; 9780 jsu ; 9784 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1m ( JNIEnv * jv , jass js ) { 9785 jt jsu = 0 ; 9786 su ; 9788 () jv ; 9789 () js ; 9790 su = () DbEnv_g_vsi_m (); 9791 jsu = ( jt ) su ; 9792 jsu ; 9796 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1tch ( JNIEnv * jv , jass js ) { 9797 jt jsu = 0 ; 9798 su ; 9800 () jv ; 9801 () js ; 9802 su = () DbEnv_g_vsi_tch (); 9803 jsu = ( jt ) su ; 9804 jsu ; 9808 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbEnv_1g_1vsi_1rg ( JNIEnv * jv , jass js ) { 9809 jrg jsu = 0 ; 9810 * su = 0 ; 9812 () jv ; 9813 () js ; 9814 su = (*) DbEnv_g_vsi_rg (); 9815 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 9816 jsu ; 9820 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_de_1DbLock ( JNIEnv * jv , jass js , jlg jg1 ) { 9821 DbLock * g1 = (DbLock *) 0 ; 9823 () jv ; 9824 () js ; 9825 g1 = *( DbLock **)& jg1 ; 9827 i( jg1 == 0) { 9828 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9831 de_DbLock ( g1 ); 9836 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbLogc_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9837 DbLogc * g1 = (DbLogc *) 0 ; 9838 u_t32_t g2 ; 9839 db_t_t su ; 9841 () jv ; 9842 () js ; 9843 () jg1_ ; 9844 g1 = *( DbLogc **)& jg1 ; 9845 g2 = ( u_t32_t ) jg2 ; 9847 i( jg1 == 0) { 9848 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9852 su = ( db_t_t ) DbLogc_o ( g1 , g2 ); 9853 i(! DB_RETOK_STD ( su )) { 9854 __dbj_throw ( jv , su , NULL , NULL, NULL); 9860 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbLogc_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 , jobje jg3 , j jg4 ) { 9861 jt jsu = 0 ; 9862 DbLogc * g1 = (DbLogc *) 0 ; 9863 DB_LSN * g2 = (DB_LSN *) 0 ; 9864 DBT * g3 = (DBT *) 0 ; 9865 u_t32_t g4 ; 9866 su ; 9867 DB_LSN l2 ; 9868 DBT_LOCKED ldbt3 ; 9870 () jv ; 9871 () js ; 9872 () jg1_ ; 9873 g1 = *( DbLogc **)& jg1 ; 9875 i( jg2 = NULL ) { 9876 g2 = NULL ; 9878 g2 = & l2 ; 9879 g2 -> fe = (* jv )-> GIFld (jv, jg2 , dbl_fe_fid ); 9880 g2 -> offt = (* jv )-> GIFld (jv, jg2 , 9881 dbl_offt_fid ); 9885 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 9888 g4 = ( u_t32_t ) jg4 ; 9890 i( jg1 == 0) { 9891 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9895 i( g2 = NULL ) { 9896 __dbj_throw ( jv , EINVAL , "nu LogSequNumb", NULL , NULL); 9901 su = () DbLogc_g ( g1 , g2 , g3 , g4 ); 9902 i(! DB_RETOK_LGGET ( su )) { 9903 __dbj_throw ( jv , su , NULL , NULL, NULL); 9906 jsu = ( jt ) su ; 9908 i( jg2 ! NULL ) { 9909 (* jv )-> SIFld (jv, jg2 , dbl_fe_fid , g2 -> fe ); 9910 (* jv )-> SIFld (jv, jg2 , 9911 dbl_offt_fid , g2 -> offt ); 9914 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 9915 jsu ; 9919 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbLogc_1vsi ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , j jg2 ) { 9920 jt jsu = 0 ; 9921 DbLogc * g1 = (DbLogc *) 0 ; 9922 u_t32_t g2 ; 9923 u_t32_t su ; 9925 () jv ; 9926 () js ; 9927 () jg1_ ; 9928 g1 = *( DbLogc **)& jg1 ; 9929 g2 = ( u_t32_t ) jg2 ; 9931 i( jg1 == 0) { 9932 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9936 o = 0; 9937 su = ( u_t32_t ) DbLogc_vsi ( g1 , g2 ); 9938 i(! DB_RETOK_STD ( o )) { 9939 __dbj_throw ( jv , o , NULL , NULL, NULL); 9942 jsu = ( jt ) su ; 9943 jsu ; 9947 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9948 jt jsu = 0 ; 9949 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9950 DB_CACHE_PRIORITY su ; 9952 () jv ; 9953 () js ; 9954 () jg1_ ; 9955 g1 = *( DbMpoFe **)& jg1 ; 9957 i( jg1 == 0) { 9958 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9962 o = 0; 9963 su = ( DB_CACHE_PRIORITY ) DbMpoFe_g_iܙy ( g1 ); 9964 i(! DB_RETOK_STD ( o )) { 9965 __dbj_throw ( jv , o , NULL , NULL, NULL); 9968 jsu = ( jt ) su ; 9969 jsu ; 9973 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1iܙy ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 9974 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 9975 DB_CACHE_PRIORITY g2 ; 9976 db_t_t su ; 9978 () jv ; 9979 () js ; 9980 () jg1_ ; 9981 g1 = *( DbMpoFe **)& jg1 ; 9982 g2 = ( DB_CACHE_PRIORITY ) jg2 ; 9984 i( jg1 == 0) { 9985 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 9989 su = ( db_t_t ) DbMpoFe_t_iܙy ( g1 , g2 ); 9990 i(! DB_RETOK_STD ( su )) { 9991 __dbj_throw ( jv , su , NULL , NULL, NULL); 9997 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 9998 jt jsu = 0 ; 9999 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 10000 u_t32_t su ; 10002 () jv ; 10003 () js ; 10004 () jg1_ ; 10005 g1 = *( DbMpoFe **)& jg1 ; 10007 i( jg1 == 0) { 10008 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10012 o = 0; 10013 su = ( u_t32_t ) DbMpoFe_g_ags ( g1 ); 10014 i(! DB_RETOK_STD ( o )) { 10015 __dbj_throw ( jv , o , NULL , NULL, NULL); 10018 jsu = ( jt ) su ; 10019 jsu ; 10023 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 , jboޗn jg3 ) { 10024 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 10025 u_t32_t g2 ; 10026 t_bo g3 ; 10027 db_t_t su ; 10029 () jv ; 10030 () js ; 10031 () jg1_ ; 10032 g1 = *( DbMpoFe **)& jg1 ; 10033 g2 = ( u_t32_t ) jg2 ; 10034 g3 = ( jg3 = JNI_TRUE ); 10036 i( jg1 == 0) { 10037 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10041 su = ( db_t_t ) DbMpoFe_t_ags ( g1 , g2 , g3 ); 10042 i(! DB_RETOK_STD ( su )) { 10043 __dbj_throw ( jv , su , NULL , NULL, NULL); 10049 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1g_1maxsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10050 jlg jsu = 0 ; 10051 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 10052 jlg su ; 10054 () jv ; 10055 () js ; 10056 () jg1_ ; 10057 g1 = *( DbMpoFe **)& jg1 ; 10059 i( jg1 == 0) { 10060 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10064 o = 0; 10065 su = DbMpoFe_g_maxsize ( g1 ); 10066 i(! DB_RETOK_STD ( o )) { 10067 __dbj_throw ( jv , o , NULL , NULL, NULL); 10070 jsu = su ; 10071 jsu ; 10075 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbMpoFe_1t_1maxsize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 10076 DbMpoFe * g1 = (DbMpoolFile *) 0 ; 10077 jlg g2 ; 10078 db_t_t su ; 10080 () jv ; 10081 () js ; 10082 () jg1_ ; 10083 g1 = *( DbMpoFe **)& jg1 ; 10084 g2 = jg2 ; 10086 i( jg1 == 0) { 10087 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10091 su = ( db_t_t ) DbMpoFe_t_maxsize ( g1 , g2 ); 10092 i(! DB_RETOK_STD ( su )) { 10093 __dbj_throw ( jv , su , NULL , NULL, NULL); 10099 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_w_1DbSequ ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10100 jlg jsu = 0 ; 10101 DB * g1 = (DB *) 0 ; 10102 u_t32_t g2 ; 10103 DbSequ * su = 0 ; 10105 () jv ; 10106 () js ; 10107 () jg1_ ; 10108 g1 = *( DB **)& jg1 ; 10109 g2 = ( u_t32_t ) jg2 ; 10111 o = 0; 10112 su = ( DbSequ *) w_DbSequ ( g1 , g2 ); 10113 i(! DB_RETOK_STD ( o )) { 10114 __dbj_throw ( jv , o , NULL , NULL, NULL); 10117 *( DbSequ **)& jsu = su ; 10118 jsu ; 10122 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1o0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10123 DbSequ * g1 = (DbSequence *) 0 ; 10124 u_t32_t g2 ; 10125 db_t_t su ; 10127 () jv ; 10128 () js ; 10129 () jg1_ ; 10130 g1 = *( DbSequ **)& jg1 ; 10131 g2 = ( u_t32_t ) jg2 ; 10133 i( jg1 == 0) { 10134 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10138 su = ( db_t_t ) DbSequ_o ( g1 , g2 ); 10139 i(! DB_RETOK_STD ( su )) { 10140 __dbj_throw ( jv , su , NULL , NULL, NULL); 10146 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jt jg3 , j jg4 ) { 10147 jlg jsu = 0 ; 10148 DbSequ * g1 = (DbSequence *) 0 ; 10149 DB_TXN * g2 = (DB_TXN *) 0 ; 10150 t32_t g3 ; 10151 u_t32_t g4 ; 10152 db_q_t su ; 10154 () jv ; 10155 () js ; 10156 () jg1_ ; 10157 () jg2_ ; 10158 g1 = *( DbSequ **)& jg1 ; 10159 g2 = *( DB_TXN **)& jg2 ; 10160 g3 = ( t32_t ) jg3 ; 10161 g4 = ( u_t32_t ) jg4 ; 10163 i( jg1 == 0) { 10164 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10168 o = 0; 10169 su = ( db_q_t ) DbSequ_g ( g1 , g2 , g3 , g4 ); 10170 i(! DB_RETOK_STD ( o )) { 10171 __dbj_throw ( jv , o , NULL , NULL, NULL); 10174 jsu = ( jlg ) su ; 10175 jsu ; 10179 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10180 jt jsu = 0 ; 10181 DbSequ * g1 = (DbSequence *) 0 ; 10182 t32_t su ; 10184 () jv ; 10185 () js ; 10186 () jg1_ ; 10187 g1 = *( DbSequ **)& jg1 ; 10189 i( jg1 == 0) { 10190 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10194 o = 0; 10195 su = ( t32_t ) DbSequ_g_chesize ( g1 ); 10196 i(! DB_RETOK_STD ( o )) { 10197 __dbj_throw ( jv , o , NULL , NULL, NULL); 10200 jsu = ( jt ) su ; 10201 jsu ; 10205 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1db ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10206 jlg jsu = 0 ; 10207 DbSequ * g1 = (DbSequence *) 0 ; 10208 DB * su = 0 ; 10210 () jv ; 10211 () js ; 10212 () jg1_ ; 10213 g1 = *( DbSequ **)& jg1 ; 10215 i( jg1 == 0) { 10216 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10220 o = 0; 10221 su = ( DB *) DbSequ_g_db ( g1 ); 10222 i(! DB_RETOK_STD ( o )) { 10223 __dbj_throw ( jv , o , NULL , NULL, NULL); 10226 *( DB **)& jsu = su ; 10227 jsu ; 10231 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10232 jt jsu = 0 ; 10233 DbSequ * g1 = (DbSequence *) 0 ; 10234 u_t32_t su ; 10236 () jv ; 10237 () js ; 10238 () jg1_ ; 10239 g1 = *( DbSequ **)& jg1 ; 10241 i( jg1 == 0) { 10242 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10246 o = 0; 10247 su = ( u_t32_t ) DbSequ_g_ags ( g1 ); 10248 i(! DB_RETOK_STD ( o )) { 10249 __dbj_throw ( jv , o , NULL , NULL, NULL); 10252 jsu = ( jt ) su ; 10253 jsu ; 10257 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1key ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jobje jg2 ) { 10258 DbSequ * g1 = (DbSequence *) 0 ; 10259 DBT * g2 = (DBT *) 0 ; 10260 db_t_t su ; 10261 DBT_LOCKED ldbt2 ; 10263 () jv ; 10264 () js ; 10265 () jg1_ ; 10266 g1 = *( DbSequ **)& jg1 ; 10268 i( __dbj_dbt_cy ( jv , & ldbt2 , & g2 , jg2 , 0) != 0) { 10272 i( jg1 == 0) { 10273 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10277 su = ( db_t_t ) DbSequ_g_key ( g1 , g2 ); 10278 i(! DB_RETOK_STD ( su )) { 10279 __dbj_throw ( jv , su , NULL , NULL, NULL); 10282 __dbj_dbt_a ( jv , jg2 , g2 , & ldbt2 ); 10286 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1nge_1m ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10287 jlg jsu = 0 ; 10288 DbSequ * g1 = (DbSequence *) 0 ; 10289 db_q_t su ; 10291 () jv ; 10292 () js ; 10293 () jg1_ ; 10294 g1 = *( DbSequ **)& jg1 ; 10296 i( jg1 == 0) { 10297 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10301 o = 0; 10302 su = ( db_q_t ) DbSequ_g_nge_m ( g1 ); 10303 i(! DB_RETOK_STD ( o )) { 10304 __dbj_throw ( jv , o , NULL , NULL, NULL); 10307 jsu = ( jlg ) su ; 10308 jsu ; 10312 SWIGEXPORT jlg JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1g_1nge_1max ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10313 jlg jsu = 0 ; 10314 DbSequ * g1 = (DbSequence *) 0 ; 10315 db_q_t su ; 10317 () jv ; 10318 () js ; 10319 () jg1_ ; 10320 g1 = *( DbSequ **)& jg1 ; 10322 i( jg1 == 0) { 10323 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10327 o = 0; 10328 su = ( db_q_t ) DbSequ_g_nge_max ( g1 ); 10329 i(! DB_RETOK_STD ( o )) { 10330 __dbj_throw ( jv , o , NULL , NULL, NULL); 10333 jsu = ( jlg ) su ; 10334 jsu ; 10338 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1l_1vue ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 ) { 10339 DbSequ * g1 = (DbSequence *) 0 ; 10340 db_q_t g2 ; 10341 db_t_t su ; 10343 () jv ; 10344 () js ; 10345 () jg1_ ; 10346 g1 = *( DbSequ **)& jg1 ; 10347 g2 = ( db_q_t ) jg2 ; 10349 i( jg1 == 0) { 10350 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10354 su = ( db_t_t ) DbSequ_l_vue ( g1 , g2 ); 10355 i(! DB_RETOK_STD ( su )) { 10356 __dbj_throw ( jv , su , NULL , NULL, NULL); 10362 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1ݒ ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jobje jg3 , jt jg4 ) { 10363 DbSequ * g1 = (DbSequence *) 0 ; 10364 DB_TXN * g2 = (DB_TXN *) 0 ; 10365 DBT * g3 = (DBT *) 0 ; 10366 u_t32_t g4 ; 10367 db_t_t su ; 10368 DBT_LOCKED ldbt3 ; 10370 () jv ; 10371 () js ; 10372 () jg1_ ; 10373 () jg2_ ; 10374 g1 = *( DbSequ **)& jg1 ; 10375 g2 = *( DB_TXN **)& jg2 ; 10377 i( __dbj_dbt_cy ( jv , & ldbt3 , & g3 , jg3 , 0) != 0) { 10380 g4 = ( u_t32_t ) jg4 ; 10382 i( jg1 == 0) { 10383 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10387 su = ( db_t_t ) DbSequ_ݒ ( g1 , g2 , g3 , g4 ); 10388 i(! DB_RETOK_STD ( su )) { 10389 __dbj_throw ( jv , su , NULL , NULL, NULL); 10392 __dbj_dbt_a ( jv , jg3 , g3 , & ldbt3 ); 10396 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1move0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jobje jg2_ , jt jg3 ) { 10397 DbSequ * g1 = (DbSequence *) 0 ; 10398 DB_TXN * g2 = (DB_TXN *) 0 ; 10399 u_t32_t g3 ; 10400 db_t_t su ; 10402 () jv ; 10403 () js ; 10404 () jg1_ ; 10405 () jg2_ ; 10406 g1 = *( DbSequ **)& jg1 ; 10407 g2 = *( DB_TXN **)& jg2 ; 10408 g3 = ( u_t32_t ) jg3 ; 10410 i( jg1 == 0) { 10411 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10415 su = ( db_t_t ) DbSequ_move ( g1 , g2 , g3 ); 10416 i(! DB_RETOK_STD ( su )) { 10417 __dbj_throw ( jv , su , NULL , NULL, NULL); 10423 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1chesize ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10424 DbSequ * g1 = (DbSequence *) 0 ; 10425 t32_t g2 ; 10426 db_t_t su ; 10428 () jv ; 10429 () js ; 10430 () jg1_ ; 10431 g1 = *( DbSequ **)& jg1 ; 10432 g2 = ( t32_t ) jg2 ; 10434 i( jg1 == 0) { 10435 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10439 su = ( db_t_t ) DbSequ_t_chesize ( g1 , g2 ); 10440 i(! DB_RETOK_STD ( su )) { 10441 __dbj_throw ( jv , su , NULL , NULL, NULL); 10447 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1ags ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10448 DbSequ * g1 = (DbSequence *) 0 ; 10449 u_t32_t g2 ; 10450 db_t_t su ; 10452 () jv ; 10453 () js ; 10454 () jg1_ ; 10455 g1 = *( DbSequ **)& jg1 ; 10456 g2 = ( u_t32_t ) jg2 ; 10458 i( jg1 == 0) { 10459 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10463 su = ( db_t_t ) DbSequ_t_ags ( g1 , g2 ); 10464 i(! DB_RETOK_STD ( su )) { 10465 __dbj_throw ( jv , su , NULL , NULL, NULL); 10471 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1t_1nge ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jlg jg3 ) { 10472 DbSequ * g1 = (DbSequence *) 0 ; 10473 db_q_t g2 ; 10474 db_q_t g3 ; 10475 db_t_t su ; 10477 () jv ; 10478 () js ; 10479 () jg1_ ; 10480 g1 = *( DbSequ **)& jg1 ; 10481 g2 = ( db_q_t ) jg2 ; 10482 g3 = ( db_q_t ) jg3 ; 10484 i( jg1 == 0) { 10485 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10489 su = ( db_t_t ) DbSequ_t_nge ( g1 , g2 , g3 ); 10490 i(! DB_RETOK_STD ( su )) { 10491 __dbj_throw ( jv , su , NULL , NULL, NULL); 10497 SWIGEXPORT jobje JNICALL Java_com_pyt_db__db_1javaJNI_DbSequ_1 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10498 jobje jsu = 0 ; 10499 DbSequ * g1 = (DbSequence *) 0 ; 10500 u_t32_t g2 ; 10501 DB_SEQUENCE_STAT * su = 0 ; 10503 () jv ; 10504 () js ; 10505 () jg1_ ; 10506 g1 = *( DbSequ **)& jg1 ; 10507 g2 = ( u_t32_t ) jg2 ; 10509 i( jg1 == 0) { 10510 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10514 o = 0; 10515 su = ( DB_SEQUENCE_STAT *) DbSequ_ ( g1 , g2 ); 10516 i(! DB_RETOK_STD ( o )) { 10517 __dbj_throw ( jv , o , NULL , NULL, NULL); 10521 jsu = (* jv )-> NewObje (jv, q__ass , q__cڡru ); 10522 i( jsu ! NULL ) 10523 __dbj_fl_q_ ( jv , jsu , su ); 10524 __os_u ( NULL , su ); 10526 jsu ; 10530 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1abt0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10531 DbTxn * g1 = (DbTxn *) 0 ; 10532 db_t_t su ; 10534 () jv ; 10535 () js ; 10536 () jg1_ ; 10537 g1 = *( DbTxn **)& jg1 ; 10539 i( jg1 == 0) { 10540 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10544 su = ( db_t_t ) DbTxn_abt ( g1 ); 10545 i(! DB_RETOK_STD ( su )) { 10546 __dbj_throw ( jv , su , NULL , NULL, NULL); 10552 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1comm0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10553 DbTxn * g1 = (DbTxn *) 0 ; 10554 u_t32_t g2 ; 10555 db_t_t su ; 10557 () jv ; 10558 () js ; 10559 () jg1_ ; 10560 g1 = *( DbTxn **)& jg1 ; 10561 g2 = ( u_t32_t ) jg2 ; 10563 i( jg1 == 0) { 10564 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10568 su = ( db_t_t ) DbTxn_comm ( g1 , g2 ); 10569 i(! DB_RETOK_STD ( su )) { 10570 __dbj_throw ( jv , su , NULL , NULL, NULL); 10576 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1disrd0 ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jt jg2 ) { 10577 DbTxn * g1 = (DbTxn *) 0 ; 10578 u_t32_t g2 ; 10579 db_t_t su ; 10581 () jv ; 10582 () js ; 10583 () jg1_ ; 10584 g1 = *( DbTxn **)& jg1 ; 10585 g2 = ( u_t32_t ) jg2 ; 10587 i( jg1 == 0) { 10588 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10592 su = ( db_t_t ) DbTxn_disrd ( g1 , g2 ); 10593 i(! DB_RETOK_STD ( su )) { 10594 __dbj_throw ( jv , su , NULL , NULL, NULL); 10600 SWIGEXPORT jrg JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1g_1me ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10601 jrg jsu = 0 ; 10602 DbTxn * g1 = (DbTxn *) 0 ; 10603 * su = 0 ; 10605 () jv ; 10606 () js ; 10607 () jg1_ ; 10608 g1 = *( DbTxn **)& jg1 ; 10610 i( jg1 == 0) { 10611 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10615 o = 0; 10616 su = (*) DbTxn_g_me ( g1 ); 10617 i(! DB_RETOK_STD ( o )) { 10618 __dbj_throw ( jv , o , NULL , NULL, TXN2JDBENV ); 10621 if( su jsu = (* jv )-> NewSgUTF (jenv, (const *)result); 10622 jsu ; 10626 SWIGEXPORT jt JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1id ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ ) { 10627 jt jsu = 0 ; 10628 DbTxn * g1 = (DbTxn *) 0 ; 10629 u_t32_t su ; 10631 () jv ; 10632 () js ; 10633 () jg1_ ; 10634 g1 = *( DbTxn **)& jg1 ; 10636 i( jg1 == 0) { 10637 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10640 su = ( u_t32_t ) DbTxn_id ( g1 ); 10641 jsu = ( jt ) su ; 10642 jsu ; 10646 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1e ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jbyAay jg2 ) { 10647 DbTxn * g1 = (DbTxn *) 0 ; 10648 u_t8_t * g2 = (u_int8_t *) 0 ; 10649 db_t_t su ; 10651 () jv ; 10652 () js ; 10653 () jg1_ ; 10654 g1 = *( DbTxn **)& jg1 ; 10656 g2 = ( u_t8_t *)(* jv )-> GByAayEmts (jv, jg2 , NULL ); 10659 i( jg1 == 0) { 10660 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10664 i((* jv )-> GAayLgth (jv, jg2 < DB_XIDDATASIZE ) { 10665 __dbj_throw ( jv , EINVAL , 10666 "DbTxn.giday mu b>128 bys", NULL , 10667 TXN2JDBENV ); 10672 su = ( db_t_t ) DbTxn_e ( g1 , g2 ); 10673 i(! DB_RETOK_STD ( su )) { 10674 __dbj_throw ( jv , su , NULL , NULL, TXN2JDBENV ); 10678 (* jv )-> RByAayEmts (jv, jg2 , ( jby *) g2 , 0); 10683 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1t_1timeout ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jlg jg2 , jt jg3 ) { 10684 DbTxn * g1 = (DbTxn *) 0 ; 10685 db_timeout_t g2 ; 10686 u_t32_t g3 ; 10687 db_t_t su ; 10689 () jv ; 10690 () js ; 10691 () jg1_ ; 10692 g1 = *( DbTxn **)& jg1 ; 10693 g2 = ( db_timeout_t ) jg2 ; 10694 g3 = ( u_t32_t ) jg3 ; 10696 i( jg1 == 0) { 10697 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10701 su = ( db_t_t ) DbTxn_t_timeout ( g1 , g2 , g3 ); 10702 i(! DB_RETOK_STD ( su )) { 10703 __dbj_throw ( jv , su , NULL , NULL, TXN2JDBENV ); 10709 SWIGEXPORT JNICALL Java_com_pyt_db__db_1javaJNI_DbTxn_1t_1me ( JNIEnv * jv , jass js , jlg jg1 , jobje jg1_ , jrg jg2 ) { 10710 DbTxn * g1 = (DbTxn *) 0 ; 10711 * g2 = (*) 0 ; 10712 db_t_t su ; 10714 () jv ; 10715 () js ; 10716 () jg1_ ; 10717 g1 = *( DbTxn **)& jg1 ; 10718 g2 = 0; 10719 i( jg2 ) { 10720 g2 = (*)(* jv )-> GSgUTFChs (jv, jg2 , 0); 10721 i(! g2 ) ; 10724 i( jg1 == 0) { 10725 __dbj_throw ( jv , EINVAL , " ood hd", NULL , NULL); 10729 su = ( db_t_t ) DbTxn_t_me ( g1 ,(cڡ *) g2 ); 10730 i(! DB_RETOK_STD ( su )) { 10731 __dbj_throw ( jv , su , NULL , NULL, TXN2JDBENV ); 10734 i( g2 (* jv )-> RSgUTFChs (jv, jg2 , (const *)arg2); 10738 #ifde __lulus @../lock/lock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/log.h " 15 __lock_locobj __P (( DB_LOCKTAB *, u_t32_t )); 16 __lock_loock __P (( DB_LOCKTAB *, u_t32_t )); 17 __lock_lock __P (( DB_LOCKTAB *, 18 __db_lock *, DB_LOCKER *, u_t32_t )); 19 __lock_gobj 20 __P (( DB_LOCKTAB *, cڡ DBT *, u_t32_t , , DB_LOCKOBJ **)); 21 __lock_g_i __P (( ENV *, 22 u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)); 23 __lock_h_locks __P (( DB_LOCKTAB *, DB_LOCKER *, u_t32_t )); 24 __lock_is_ __P (( DB_LOCKTAB *, roff_t , DB_LOCKER *)); 25 __lock_put_ __P (( DB_LOCKTAB *, 26 __db_lock *, u_t32_t , u_int32_t)); 27 __lock_put_nock __P (( ENV *, DB_LOCK *, *, u_t32_t )); 28 __lock_move_wa __P (( DB_LOCKTAB *, 29 DB_LOCKOBJ *, __db_lock *, db_us_t )); 30 __lock_ade __P (( ENV *, DB_LOCK *, DB_LOCKER *)); 31 __lock_vec_i __P (( ENV *, 32 u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)); 34 cڡ g__db_lock_vid [] = "%s: Lock isoonger valid"; 35 cڡ g__db_lock_vid [] = "Locker isot valid"; 45 $__lock_vec_ ( dbv , lid , ags , li , i , ip ) 46 DB_ENV * dbv ; 47 u_t32_t lid , ags ; 48 i ; 49 DB_LOCKREQ * li , ** ip ; 51 DB_THREAD_INFO * ; 52 ENV * v ; 53 t ; 55 v = dbv ->env; 57 `ENV_REQUIRES_CONFIG ( v , 58 v -> lk_hd , "DB_ENV->lock_vec", DB_INIT_LOCK ); 61 i(( t = `__db_fchk ( v , 62 "DB_ENV->lock_vec", ags , DB_LOCK_NOWAIT )) != 0) 63 ( t ); 65 `ENV_ENTER ( v , ); 66 `REPLICATION_WRAP ( v , 67 ( `__lock_vec_i ( v , lid , ags , li , i , ip )), 0, t ); 68 `ENV_LEAVE ( v , ); 69 ( t ); 70 } } 73 $__lock_vec_i ( v , lid , ags , li , i , ip ) 74 ENV * v ; 75 u_t32_t lid , ags ; 76 i ; 77 DB_LOCKREQ * li , ** ip ; 79 DB_LOCKER * sh_lock ; 80 t ; 82 i(( t = 83 `__lock_glock ( v -> lk_hd , lid , 0, & sh_lock )) == 0) 84 t = `__lock_vec ( v , sh_lock , ags , li , i , ip ); 85 ( t ); 86 } } 102 $__lock_vec ( v , sh_lock , ags , li , i , ip ) 103 ENV * v ; 104 DB_LOCKER * sh_lock ; 105 u_t32_t ags ; 106 i ; 107 DB_LOCKREQ * li , ** ip ; 109 __db_lock * , * xt_lock ; 110 DB_LOCK lock ; DB_LOCKOBJ * sh_obj ; 111 DB_LOCKREGION * gi ; 112 DB_LOCKTAB * ; 113 DBT * objli , * ; 114 u_t32_t ndx ; 115 did_abt , i , t , run_dd , upgde , wres ; 118 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 121 = v -> lk_hd ; 122 gi = -> gfo . imy ; 124 run_dd = 0; 125 `LOCK_SYSTEM_LOCK ( , gi ); 126 i = 0, t = 0; i < i &&et == 0; i++) 127 li [ i ]. ) { 128 DB_LOCK_GET_TIMEOUT : 129 `LF_SET ( DB_LOCK_SET_TIMEOUT ); 131 DB_LOCK_GET : 132 i( `IS_RECOVERING ( v )) { 133 `LOCK_INIT ( li [ i ]. lock ); 136 t = `__lock_g_ ( , 137 sh_lock , ags , li [ i ]. obj , 138 li [ i ]. mode ,i[i]. timeout , &li[i]. lock ); 140 DB_LOCK_INHERIT : 141 t = `__lock_h_locks ( , sh_lock , ags ); 143 DB_LOCK_PUT : 144 t = `__lock_put_nock ( v , 145 & li [ i ]. lock , & run_dd , ags ); 147 DB_LOCK_PUT_ALL : 148 DB_LOCK_PUT_READ : 149 DB_LOCK_UPGRADE_WRITE : 157 i( sh_lock = NULL ) 164 upgde = 0; 165 wres = 1; 166 i( li [ i ]. = DB_LOCK_PUT_READ ) 167 wres = 0; 168 i( li [ i ]. = DB_LOCK_UPGRADE_WRITE ) { 169 i( `F_ISSET ( sh_lock , DB_LOCKER_DIRTY )) 170 upgde = 1; 171 wres = 0; 173 objli = li [ i ]. obj ; 174 i( objli ! NULL ) { 180 objli -> size = 181 sh_lock -> nwres * ( DBT ); 182 i(( t = `__os_mloc ( v , 183 objli -> size , &objli-> da )) != 0) 184 up_de ; 185 `memt ( objli -> da , 0, objli-> size ); 186 = ( DBT * objli -> da ; 188 = NULL ; 191 = `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock ); 192 ! NULL ; xt_lock ) { 193 sh_obj = ( DB_LOCKOBJ *) 194 (( u_t8_t *) +p-> obj ); 195 xt_lock = `SH_LIST_NEXT ( , 196 lock_lks , __db_lock ); 197 i( wres == 1 || 198 -> mode = DB_LOCK_READ || 199 -> mode = DB_LOCK_READ_UNCOMMITTED ) { 200 `SH_LIST_REMOVE ( , 201 lock_lks , __db_lock ); 202 sh_obj = ( DB_LOCKOBJ *) 203 (( u_t8_t *) +p-> obj ); 204 ndx = sh_obj -> dx ; 205 `OBJECT_LOCK_NDX ( , gi , ndx ); 211 i( -> us = DB_LSTAT_HELD ) { 212 `DB_ASSERT ( v , 213 sh_lock -> ocks != 0); 214 sh_lock -> ocks --; 215 i( `IS_WRITELOCK ( -> mode )) 216 sh_lock -> nwres --; 218 t = `__lock_put_ ( , , 219 sh_obj -> dx , 220 DB_LOCK_FREE | DB_LOCK_DOALL ); 221 `OBJECT_UNLOCK ( , gi , ndx ); 222 i( t != 0) 226 i( objli ! NULL ) { 227 `DB_ASSERT ( v , ( u_t8_t *) < 228 ( u_t8_t *) objli -> da + 229 objli -> size ); 230 -> da = `SH_DBT_PTR (& sh_obj -> lockobj ); 231 -> size = sh_obj -> lockobj .size; 232 ++; 235 i( t != 0) 236 up_de ; 238 i( objli ! NULL ) 239 i(( t = `__lock_fix_li ( v , 240 objli , sh_lock -> nwres )) != 0) 241 up_de ; 242 li [ i ]. ) { 243 DB_LOCK_UPGRADE_WRITE : 249 i( upgde != 1) 250 up_de ; 251 `SH_LIST_FOREACH ( , & sh_lock -> hdby , 252 lock_lks , __db_lock ) { 253 i( -> mode ! DB_LOCK_WWRITE ) 255 lock . off = `R_OFFSET (& -> gfo , ); 256 lock . g = ->gen; 257 `F_SET ( sh_lock , DB_LOCKER_INABORT ); 258 i(( t = `__lock_g_ ( , 259 sh_lock , ags | DB_LOCK_UPGRADE , 260 NULL , DB_LOCK_WRITE , 0, & lock )) !=0) 263 up_de : 265 DB_LOCK_PUT_READ : 266 DB_LOCK_PUT_ALL : 272 DB_LOCK_PUT_OBJ : 274 `OBJECT_LOCK ( , gi , li [ i ]. obj , ndx ); 275 i(( t = `__lock_gobj ( , li [ i ]. obj , 276 ndx , 0, & sh_obj )!0 || sh_obj = NULL ) { 277 i( t == 0) 278 t = EINVAL ; 279 `OBJECT_UNLOCK ( , gi , ndx ); 289 = `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock ); 290 t =0 && ! NULL ; 291 = `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock )) 292 t = `__lock_put_ ( , , ndx , 293 DB_LOCK_UNLINK | 294 DB_LOCK_NOPROMOTE | DB_LOCK_DOALL ); 301 = `SH_TAILQ_FIRST (& sh_obj -> hds , __db_lock ); 302 t =0 && ! NULL ; 303 = xt_lock ) { 304 xt_lock = `SH_TAILQ_NEXT ( , lks , __db_lock ); 305 t = `__lock_put_ ( , , ndx , 306 DB_LOCK_UNLINK | 307 DB_LOCK_NOPROMOTE | DB_LOCK_DOALL ); 309 `OBJECT_UNLOCK ( , gi , ndx ); 312 DB_LOCK_TIMEOUT : 313 t = `__lock_t_timeout_ ( v , 314 sh_lock , 0, DB_SET_TXN_NOW ); 317 DB_LOCK_TRADE : 332 t = `__lock_ade ( v , & li [ i ]. lock , sh_lock ); 334 #i `defed ( DEBUG && defed( HAVE_STATISTICS ) 335 DB_LOCK_DUMP : 336 i( sh_lock = NULL ) 339 `SH_LIST_FOREACH ( 340 , & sh_lock -> hdby , lock_lks , __db_lock ) 341 `__lock_ock ( , NULL , , 1); 345 `__db_rx ( v , 346 "Invidock oti: %d", li [ i ]. ); 347 t = EINVAL ; 351 i( t =0 && gi -> de ! DB_LOCK_NORUN && 352 ( gi -> ed_dd || `timeecist (&gi-> xt_timeout ))) 353 run_dd = 1; 354 `LOCK_SYSTEM_UNLOCK ( , gi ); 356 i( run_dd ) 357 () `__lock_de ( v , gi -> de , & did_abt ); 359 i( t !0 && ip ! NULL ) 360 * ip = & li [ i - 1]; 362 ( t ); 363 } } 373 $__lock_g_ ( dbv , lock , ags , obj , lock_mode , lock ) 374 DB_ENV * dbv ; 375 u_t32_t lock , ags ; 376 cڡ DBT * obj ; 377 db_lockmode_t lock_mode ; 378 DB_LOCK * lock ; 380 DB_THREAD_INFO * ; 381 ENV * v ; 382 t ; 384 v = dbv ->env; 386 `ENV_REQUIRES_CONFIG ( v , 387 v -> lk_hd , "DB_ENV->lock_g", DB_INIT_LOCK ); 390 i(( t = `__db_fchk ( v , "DB_ENV->lock_g", ags , 391 DB_LOCK_NOWAIT | DB_LOCK_UPGRADE | DB_LOCK_SWITCH )) != 0) 392 ( t ); 394 `ENV_ENTER ( v , ); 395 `REPLICATION_WRAP ( v , 396 ( `__lock_g_i ( v , lock , ags , obj , lock_mode , lock )), 397 0, t ); 398 `ENV_LEAVE ( v , ); 399 ( t ); 400 } } 403 $__lock_g_i ( v , lock , ags , obj , lock_mode , lock ) 404 ENV * v ; 405 u_t32_t lock , ags ; 406 cڡ DBT * obj ; 407 db_lockmode_t lock_mode ; 408 DB_LOCK * lock ; 410 DB_LOCKER * sh_lock ; 411 DB_LOCKREGION * gi ; 412 t ; 414 `COMPQUIET ( gi , NULL ); 416 gi = v -> lk_hd -> gfo . imy ; 418 `LOCK_SYSTEM_LOCK ( v -> lk_hd , gi ); 419 `LOCK_LOCKERS ( v , gi ); 420 t = `__lock_glock_t ( v -> lk_hd , lock , 0, & sh_lock ); 421 `UNLOCK_LOCKERS ( v , gi ); 422 i( t == 0) 423 t = `__lock_g_ ( v -> lk_hd , 424 sh_lock , ags , obj , lock_mode , 0, lock ); 425 `LOCK_SYSTEM_UNLOCK ( v -> lk_hd , gi ); 426 ( t ); 427 } } 437 $__lock_g ( v , lock , ags , obj , lock_mode , lock ) 438 ENV * v ; 439 DB_LOCKER * lock ; 440 u_t32_t ags ; 441 cڡ DBT * obj ; 442 db_lockmode_t lock_mode ; 443 DB_LOCK * lock ; 445 DB_LOCKTAB * ; 446 t ; 448 = v -> lk_hd ; 450 i( `IS_RECOVERING ( v )) { 451 `LOCK_INIT (* lock ); 455 `LOCK_SYSTEM_LOCK ( , ( DB_LOCKREGION *t-> gfo . imy ); 456 t = `__lock_g_ ( , lock , ags , obj , lock_mode , 0, lock ); 457 `LOCK_SYSTEM_UNLOCK ( , ( DB_LOCKREGION *t-> gfo . imy ); 458 ( t ); 459 } } 466 $__lock_loock ( , _id ) 467 DB_LOCKTAB * ; 468 u_t32_t _id ; 470 __db_lock * sh_lock ; 471 DB_LOCKPART * d_p , * cur_p ; 472 DB_LOCKREGION * gi ; 473 beg ; 475 gi = -> gfo . imy ; 477 i( gi -> _t_size == 1) 478 r ; 480 beg = 0; 481 sh_lock = NULL ; 482 cur_p = & -> _y [ _id ]; 483 `MUTEX_UNLOCK ( -> v , cur_p -> mtx_ ); 484 d_p = & -> _y [ gi -> _t_size ]; 489 aga : cur_p ++; sh_lock = NULL && cur_< d_p ; cur_p++) { 490 `MUTEX_LOCK ( -> v , cur_p -> mtx_ ); 491 i(( sh_lock = 492 `SH_TAILQ_FIRST (& cur_p -> _locks , __db_lock )! NULL ) 493 `SH_TAILQ_REMOVE (& cur_p -> _locks , 494 sh_lock , lks , __db_lock ); 495 `MUTEX_UNLOCK ( -> v , cur_p -> mtx_ ); 497 i( sh_lock ! NULL ) { 498 cur_p = & -> _y [ _id ]; 499 `MUTEX_LOCK ( -> v , cur_p -> mtx_ ); 500 `SH_TAILQ_INSERT_HEAD (& cur_p -> _locks , 501 sh_lock , lks , __db_lock ); 502 `STAT ( cur_p -> _ . _lockls ++); 503 `MUTEX_UNLOCK ( -> v , cur_p -> mtx_ ); 506 i(! beg ) { 507 beg = 1; 508 cur_p = -> _y ; 509 d_p = & -> _y [ _id ]; 510 aga ; 513 r : ( `__lock_nomem ( -> v , "lockntries")); 514 } } 525 $__lock_g_ ( , sh_lock , ags , obj , lock_mode , timeout , lock ) 526 DB_LOCKTAB * ; 527 DB_LOCKER * sh_lock ; 528 u_t32_t ags ; 529 cڡ DBT * obj ; 530 db_lockmode_t lock_mode ; 531 db_timeout_t timeout ; 532 DB_LOCK * lock ; 534 __db_lock * wl , * ; 535 ENV * v ; 536 DB_LOCKOBJ * sh_obj ; 537 DB_LOCKREGION * gi ; 538 DB_THREAD_INFO * ; 539 u_t32_t ndx , _id ; 540 did_abt , ihd , g_dty , no_dd , t , t_t ; 541 roff_t hd , sh_off ; 548 GRANT , 549 UPGRADE , 550 HEAD , 551 SECOND , 552 TAIL 553 } ai ; 555 v = ->env; 556 gi = -> gfo . imy ; 559 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 562 i( sh_lock = NULL ) { 563 `__db_rx ( v , "Locker doesotxist"); 564 ( EINVAL ); 567 no_dd = t = 0; 568 wl = NULL ; 569 sh_obj = NULL ; 572 i( lock_mode >( db_lockmode_t ) gi -> . _nmodes ) { 573 `__db_rx ( v , "DB_ENV->lock_get: invalidock mode %lu", 574 ( u_lg ) lock_mode ); 575 ( EINVAL ); 578 aga : i( obj = NULL ) { 579 `DB_ASSERT ( v , `LOCK_ISSET (* lock )); 580 = `R_ADDR (& -> gfo , lock -> off ); 581 sh_obj = ( DB_LOCKOBJ *)(( u_t8_t *) +p-> obj ); 582 ndx = sh_obj -> dx ; 583 `OBJECT_LOCK_NDX ( , gi , ndx ); 586 `OBJECT_LOCK ( , gi , obj , lock -> ndx ); 587 ndx = lock ->ndx; 588 i(( t = `__lock_gobj ( , obj , lock -> ndx , 1, & sh_obj )) != 0) 589 r ; 592 #ifde HAVE_STATISTICS 593 i( `LF_ISSET ( DB_LOCK_UPGRADE )) 594 -> obj_ [ ndx ]. _nupgde ++; 595 i(! `LF_ISSET ( DB_LOCK_SWITCH )) 596 -> obj_ [ ndx ]. _eques ++; 622 ihd = 0; 623 g_dty = 0; 624 hd = 0; 633 i( `LF_ISSET ( DB_LOCK_SWITCH )) 634 = NULL ; 636 = `SH_TAILQ_FIRST (& sh_obj -> hds , __db_lock ); 638 sh_off = `R_OFFSET (& -> gfo , sh_lock ); 639 ; ! NULL ; `SH_TAILQ_NEXT p, lks , __db_lock )) { 640 `DB_ASSERT ( v , -> us ! DB_LSTAT_FREE ); 641 i( sh_off = -> hd ) { 642 i( -> mode = lock_mode && 643 -> us = DB_LSTAT_HELD ) { 644 i( `LF_ISSET ( DB_LOCK_UPGRADE )) 645 upgde ; 654 -> fcou ++; 655 lock -> off = `R_OFFSET (& -> gfo , ); 656 lock -> g = ->gen; 657 lock -> mode = ->mode; 658 de ; 660 ihd = 1; 662 } i( `__lock_is_ ( , -> hd , sh_lock )) 663 ihd = 1; 664 i( `CONFLICTS ( , gi , -> mode , lock_mode )) 666 i( -> mode = DB_LOCK_READ || 667 -> mode = DB_LOCK_WWRITE ) { 668 g_dty = 1; 669 hd = ->holder; 679 i( ! NULL ) { 680 i( ihd || `LF_ISSET ( DB_LOCK_UPGRADE ) || 681 lock_mode = DB_LOCK_READ_UNCOMMITTED ) 682 ai = HEAD ; 684 ai = TAIL ; 686 i( `LF_ISSET ( DB_LOCK_SWITCH )) 687 ai = TAIL ; 688 i( `LF_ISSET ( DB_LOCK_UPGRADE )) 689 ai = UPGRADE ; 690 i( ihd ) 691 ai = GRANT ; 696 `SH_TAILQ_FOREACH ( 697 , & sh_obj -> was , lks , __db_lock ) 698 i( `CONFLICTS ( , gi , -> mode , 699 lock_mode && sh_off ! -> hd ) 731 i( = NULL ) 732 ai = GRANT ; 733 i( g_dty && 734 lock_mode = DB_LOCK_READ_UNCOMMITTED ) { 739 = `SH_TAILQ_FIRST ( 740 & sh_obj -> was , __db_lock ); 741 i( -> mode = DB_LOCK_WRITE && 742 -> hd == holder) 743 ai = SECOND ; 745 ai = GRANT ; 746 } i( lock_mode = DB_LOCK_READ_UNCOMMITTED ) 747 ai = SECOND ; 749 ai = TAIL ; 753 ai ) { 754 HEAD : 755 TAIL : 756 SECOND : 757 GRANT : 758 _id = `LOCK_PART ( gi , ndx ); 760 i(( wl = `SH_TAILQ_FIRST ( 761 & `FREE_LOCKS ( , _id ), __db_lock )= NULL ) { 762 i(( t = `__lock_loock ( , _id )) != 0) 763 r ; 765 aga ; 767 `SH_TAILQ_REMOVE ( 768 & `FREE_LOCKS ( , _id ), wl , lks , __db_lock ); 770 #ifde HAVE_STATISTICS 776 i(++ -> obj_ [ ndx ]. _ocks > 777 -> obj_ [ ndx ]. _maxocks ) 778 -> obj_ [ ndx ]. _maxocks = 779 -> obj_ [ ndx ]. _ocks ; 780 i(++ -> _y [ _id ]. _ . _ocks > 781 -> _y [ _id ]. _ . _maxocks ) 782 -> _y [ _id ]. _ . _maxocks = 783 -> _y [ _id ]. _ . _ocks ; 795 i( wl -> mtx_lock = MUTEX_INVALID ) { 796 i(( t = `__mux_loc ( v , MTX_LOGICAL_LOCK , 797 DB_MUTEX_LOGICAL_LOCK | DB_MUTEX_SELF_BLOCK , 798 & wl -> mtx_lock )) != 0) 799 r ; 800 `MUTEX_LOCK ( v , wl -> mtx_lock ); 803 wl -> hd = `R_OFFSET (& -> gfo , sh_lock ); 804 wl -> fcou = 1; 805 wl -> mode = lock_mode ; 806 wl -> obj = ( roff_t ) `SH_PTR_TO_OFF ewl, sh_obj ); 807 wl -> dx = sh_obj ->indx; 814 no_dd = sh_lock -> ma_lock = INVALID_ROFF && 815 `SH_LIST_FIRST ( 816 & sh_lock -> chd_lock , __db_lock = NULL && 817 `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock = NULL ; 819 `SH_LIST_INSERT_HEAD ( 820 & sh_lock -> hdby , wl , lock_lks , __db_lock ); 823 UPGRADE : 824 upgde : = `R_ADDR (& -> gfo , lock -> off ); 825 i( `IS_WRITELOCK ( lock_mode && !IS_WRITELOCK( -> mode )) 826 sh_lock -> nwres ++; 827 -> mode = lock_mode ; 828 de ; 831 ai ) { 832 UPGRADE : 833 `DB_ASSERT ( v , 0); 835 GRANT : 836 wl -> us = DB_LSTAT_HELD ; 837 `SH_TAILQ_INSERT_TAIL (& sh_obj -> hds , wl , lks ); 839 HEAD : 840 TAIL : 841 SECOND : 842 i( `LF_ISSET ( DB_LOCK_NOWAIT )) { 843 t = DB_LOCK_NOTGRANTED ; 844 `STAT ( gi -> . _lock_nowa ++); 845 r ; 847 i(( = 848 `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock )= NULL ) { 849 `LOCK_DD ( v , gi ); 850 `SH_TAILQ_INSERT_HEAD (& gi -> dd_objs , 851 sh_obj , dd_lks , __db_lockobj ); 852 `UNLOCK_DD ( v , gi ); 854 ai ) { 855 HEAD : 856 `SH_TAILQ_INSERT_HEAD ( 857 & sh_obj -> was , wl , lks , __db_lock ); 859 SECOND : 860 `SH_TAILQ_INSERT_AFTER ( 861 & sh_obj -> was , , wl , lks , __db_lock ); 863 TAIL : 864 `SH_TAILQ_INSERT_TAIL (& sh_obj -> was , wl , lks ); 867 `DB_ASSERT ( v , 0); 877 i( `__lock_exped ( v , 878 & sh_lock -> lk_expe , &sh_lock-> tx_expe )) { 879 wl -> us = DB_LSTAT_EXPIRED ; 880 sh_lock -> lk_expe = sh_lock-> tx_expe ; 883 exped ; 892 i(! `LF_ISSET ( DB_LOCK_SET_TIMEOUT )) { 893 i( `F_ISSET ( sh_lock , DB_LOCKER_TIMEOUT )) 894 timeout = sh_lock -> lk_timeout ; 896 timeout = gi -> lk_timeout ; 898 i( timeout != 0) 899 `__lock_expes ( v , & sh_lock -> lk_expe , timeout ); 901 `timeecr (& sh_lock -> lk_expe ); 903 i( `timeecist (& sh_lock -> tx_expe ) && 904 ( timeout =0 || `__lock_exped ( v , 905 & sh_lock -> lk_expe , &sh_lock-> tx_expe ))) 906 sh_lock -> lk_expe = sh_lock-> tx_expe ; 907 i( `timeecist (& sh_lock -> lk_expe ) && 908 (! `timeecist (& gi -> xt_timeout ) || 909 `timeeccmp ( 910 & gi -> xt_timeout , & sh_lock -> lk_expe , >))) 911 gi -> xt_timeout = sh_lock -> lk_expe ; 913 wl -> us = DB_LSTAT_WAITING ; 914 `STAT ( -> obj_ [ ndx ]. _lock_wa ++); 916 gi -> ed_dd = 1; 918 `OBJECT_UNLOCK ( , gi , sh_obj -> dx ); 921 i( `LF_ISSET ( DB_LOCK_SWITCH ) && 922 ( t = `__lock_put_nock ( v , 923 lock , & ihd , DB_LOCK_NOWAITERS )) != 0) { 924 `OBJECT_LOCK_NDX ( , gi , sh_obj -> dx ); 925 () `__lock_move_wa ( 926 , sh_obj , wl , DB_LSTAT_FREE ); 927 r ; 930 `LOCK_SYSTEM_UNLOCK ( , gi ); 935 i( gi -> de ! DB_LOCK_NORUN && ! no_dd ) 936 () `__lock_de ( v , gi -> de , & did_abt ); 938 = NULL ; 939 i( v -> thr_hashb ! NULL && 940 ( t = `__v_t_e ( v , & , THREAD_BLOCKED )) != 0) { 941 `LOCK_SYSTEM_LOCK ( , gi ); 942 `OBJECT_LOCK_NDX ( , gi , ndx ); 943 r ; 946 `MUTEX_LOCK ( v , wl -> mtx_lock ); 947 i( ! NULL ) 948 -> dbth_e = THREAD_ACTIVE ; 950 `LOCK_SYSTEM_LOCK ( , gi ); 951 `OBJECT_LOCK_NDX ( , gi , ndx ); 954 i( wl -> us ! DB_LSTAT_EXPIRED ) 955 `timeecr (& sh_lock -> lk_expe ); 957 wl -> us ) { 958 DB_LSTAT_ABORTED : 959 t = DB_LOCK_DEADLOCK ; 960 r ; 961 DB_LSTAT_EXPIRED : 962 exped : t = `__lock_put_ ( , wl , 963 ndx , DB_LOCK_UNLINK | DB_LOCK_FREE ); 964 wl = NULL ; 965 i( t != 0) 966 r ; 967 #ifde HAVE_STATISTICS 968 i( `timeeccmp ( 969 & sh_lock -> lk_expe , &sh_lock-> tx_expe , ==)) 970 -> obj_ [ ndx ]. _ximeouts ++; 972 -> obj_ [ ndx ]. _ocktimeouts ++; 974 t = DB_LOCK_NOTGRANTED ; 975 `timeecr (& sh_lock -> lk_expe ); 976 r ; 977 DB_LSTAT_PENDING : 978 i( `LF_ISSET ( DB_LOCK_UPGRADE )) { 984 `SH_TAILQ_REMOVE ( 985 & sh_obj -> hds , wl , lks , __db_lock ); 991 wl -> lks . qe_ev = -1; 992 upgde ; 994 wl -> us = DB_LSTAT_HELD ; 996 DB_LSTAT_FREE : 997 DB_LSTAT_HELD : 998 DB_LSTAT_WAITING : 1000 `__db_rx ( v , 1001 "Uxedock stus: %d", () wl -> us ); 1002 t = `__v_nic ( v , EINVAL ); 1003 r ; 1007 lock -> off = `R_OFFSET (& -> gfo , wl ); 1008 lock -> g = wl ->gen; 1009 lock -> mode = wl ->mode; 1010 sh_lock -> ocks ++; 1011 i( `IS_WRITELOCK ( wl -> mode )) { 1012 sh_lock -> nwres ++; 1013 i( wl -> mode = DB_LOCK_WWRITE ) 1014 `F_SET ( sh_lock , DB_LOCKER_DIRTY ); 1017 `OBJECT_UNLOCK ( , gi , ndx ); 1020 r : i(! `LF_ISSET ( DB_LOCK_UPGRADE | DB_LOCK_SWITCH )) 1021 `LOCK_INIT (* lock ); 1023 de : i( wl ! NULL && 1024 ( t_t = `__lock_lock ( , wl , sh_lock , 1025 DB_LOCK_FREE | DB_LOCK_UNLINK )!0 && t == 0) 1026 t = t_t ; 1027 `OBJECT_UNLOCK ( , gi , ndx ); 1029 ( t ); 1030 } } 1039 $__lock_put_ ( dbv , lock ) 1040 DB_ENV * dbv ; 1041 DB_LOCK * lock ; 1043 DB_THREAD_INFO * ; 1044 ENV * v ; 1045 t ; 1047 v = dbv ->env; 1049 `ENV_REQUIRES_CONFIG ( v , 1050 v -> lk_hd , "DB_LOCK->lock_put", DB_INIT_LOCK ); 1052 `ENV_ENTER ( v , ); 1053 `REPLICATION_WRAP ( v , ( `__lock_put nv, lock )), 0, t ); 1054 `ENV_LEAVE ( v , ); 1055 ( t ); 1056 } } 1065 $__lock_put ( v , lock ) 1066 ENV * v ; 1067 DB_LOCK * lock ; 1069 DB_LOCKTAB * ; 1070 t , run_dd ; 1072 i( `IS_RECOVERING ( v )) 1075 = v -> lk_hd ; 1077 `LOCK_SYSTEM_LOCK ( , ( DB_LOCKREGION *t-> gfo . imy ); 1078 t = `__lock_put_nock ( v , lock , & run_dd , 0); 1079 `LOCK_SYSTEM_UNLOCK ( , ( DB_LOCKREGION *t-> gfo . imy ); 1087 i( t =0 && run_dd ) 1088 () `__lock_de ( v , 1089 (( DB_LOCKREGION *) -> gfo . imy )-> de , NULL ); 1090 ( t ); 1091 } } 1094 $__lock_put_nock ( v , lock , ru , ags ) 1095 ENV * v ; 1096 DB_LOCK * lock ; 1097 * ru ; 1098 u_t32_t ags ; 1100 __db_lock * lockp ; 1101 DB_LOCKREGION * gi ; 1102 DB_LOCKTAB * ; 1103 t ; 1106 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1109 = v -> lk_hd ; 1110 gi = -> gfo . imy ; 1112 lockp = `R_ADDR (& -> gfo , lock -> off ); 1113 i( lock -> g ! lockp ->gen) { 1114 `__db_rx ( v , __db_lock_vid , "DB_LOCK->lock_put"); 1115 `LOCK_INIT (* lock ); 1116 ( EINVAL ); 1119 `OBJECT_LOCK_NDX ( , gi , lock -> ndx ); 1120 t = `__lock_put_ ( , 1121 lockp , lock -> ndx , ags | DB_LOCK_UNLINK | DB_LOCK_FREE ); 1122 `OBJECT_UNLOCK ( , gi , lock -> ndx ); 1124 `LOCK_INIT (* lock ); 1126 * ru = 0; 1127 i( t =0 && gi -> de ! DB_LOCK_NORUN && 1128 ( gi -> ed_dd || `timeecist (&gi-> xt_timeout ))) 1129 * ru = 1; 1131 ( t ); 1132 } } 1147 $__lock_downgde ( v , lock , w_mode , ags ) 1148 ENV * v ; 1149 DB_LOCK * lock ; 1150 db_lockmode_t w_mode ; 1151 u_t32_t ags ; 1153 __db_lock * lockp ; 1154 DB_LOCKER * sh_lock ; 1155 DB_LOCKOBJ * obj ; 1156 DB_LOCKREGION * gi ; 1157 DB_LOCKTAB * ; 1158 t ; 1160 t = 0; 1163 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1166 = v -> lk_hd ; 1167 gi = -> gfo . imy ; 1169 `LOCK_SYSTEM_LOCK ( , gi ); 1171 lockp = `R_ADDR (& -> gfo , lock -> off ); 1172 i( lock -> g ! lockp ->gen) { 1173 `__db_rx ( v , __db_lock_vid , "lock_downgrade"); 1174 t = EINVAL ; 1175 out ; 1178 sh_lock = `R_ADDR (& -> gfo , lockp -> hd ); 1180 i( `IS_WRITELOCK ( lockp -> mode && !IS_WRITELOCK( w_mode )) 1181 sh_lock -> nwres --; 1183 lockp -> mode = w_mode ; 1184 lock -> mode = w_mode ; 1187 obj = ( DB_LOCKOBJ *)(( u_t8_t *) lockp +ockp->obj); 1188 `OBJECT_LOCK_NDX ( , gi , obj -> dx ); 1189 `STAT ( -> obj_ [ obj -> dx ]. _ndowngde ++); 1190 t = `__lock_ome ( , obj , NULL , `LF_ISSET ( DB_LOCK_NOWAITERS )); 1191 `OBJECT_UNLOCK ( , gi , obj -> dx ); 1193 out : `LOCK_SYSTEM_UNLOCK ( , gi ); 1194 ( t ); 1195 } } 1202 $__lock_put_ ( , lockp , obj_ndx , ags ) 1203 DB_LOCKTAB * ; 1204 __db_lock * lockp ; 1205 u_t32_t obj_ndx , ags ; 1207 DB_LOCKOBJ * sh_obj ; 1208 DB_LOCKREGION * gi ; 1209 ENV * v ; 1210 u_t32_t _id ; 1211 t , e_chged ; 1213 `COMPQUIET ( v , NULL ); 1214 v = ->env; 1215 gi = -> gfo . imy ; 1216 t = e_chged = 0; 1218 i(! `OBJ_LINKS_VALID ( lockp )) { 1225 () `__lock_lock ( , lockp , NULL , DB_LOCK_FREE ); 1229 #ifde HAVE_STATISTICS 1230 i( `LF_ISSET ( DB_LOCK_DOALL )) 1231 -> obj_ [ obj_ndx ]. _Ės + lockp -> fcou ; 1233 -> obj_ [ obj_ndx ]. _Ės ++; 1236 i(! `LF_ISSET ( DB_LOCK_DOALL && lockp -> fcou > 1) { 1237 lockp -> fcou --; 1242 lockp -> g ++; 1245 sh_obj = ( DB_LOCKOBJ *)(( u_t8_t *) lockp +ockp-> obj ); 1253 i( lockp -> us ! DB_LSTAT_HELD && 1254 lockp -> us ! DB_LSTAT_PENDING ) { 1255 i(( t = `__lock_move_wa ( 1256 , sh_obj , lockp , DB_LSTAT_ABORTED )) != 0) 1257 ( t ); 1259 `SH_TAILQ_REMOVE (& sh_obj -> hds , lockp , lks , __db_lock ); 1260 lockp -> lks . qe_ev = -1; 1263 i( `LF_ISSET ( DB_LOCK_NOPROMOTE )) 1264 e_chged = 0; 1266 i(( t = `__lock_ome ( , sh_obj , & e_chged , 1267 `LF_ISSET ( DB_LOCK_NOWAITERS ))) != 0) 1268 ( t ); 1271 i( `SH_TAILQ_FIRST (& sh_obj -> hds , __db_lock = NULL && 1272 `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock = NULL ) { 1273 _id = `LOCK_PART ( gi , obj_ndx ); 1274 `SH_TAILQ_REMOVE ( 1275 & -> obj_b [ obj_ndx ], sh_obj , lks , __db_lockobj ); 1276 i( sh_obj -> lockobj . size > (sh_obj-> objda )) { 1277 `LOCK_REGION_LOCK ( v ); 1278 `__v_loc_ (& -> gfo , 1279 `SH_DBT_PTR (& sh_obj -> lockobj )); 1280 `LOCK_REGION_UNLOCK ( v ); 1282 `SH_TAILQ_INSERT_HEAD ( 1283 & `FREE_OBJS ( , _id ), sh_obj , lks , __db_lockobj ); 1284 sh_obj -> gi ++; 1285 `STAT ( -> _y [ _id ]. _ . _nobjes --); 1286 `STAT ( -> obj_ [ obj_ndx ]. _nobjes --); 1287 e_chged = 1; 1291 i( `LF_ISSET ( DB_LOCK_UNLINK | DB_LOCK_FREE )) 1292 t = `__lock_lock ( , lockp , 1293 `R_ADDR (& -> gfo , lockp -> hd ), ags ); 1299 i( e_chged == 0) 1300 gi -> ed_dd = 1; 1302 ( t ); 1303 } } 1312 $__lock_lock ( , lockp , sh_lock , ags ) 1313 DB_LOCKTAB * ; 1314 __db_lock * lockp ; 1315 DB_LOCKER * sh_lock ; 1316 u_t32_t ags ; 1318 DB_LOCKREGION * gi ; 1319 ENV * v ; 1320 u_t32_t _id ; 1321 t ; 1323 v = ->env; 1324 gi = -> gfo . imy ; 1326 i( `LF_ISSET ( DB_LOCK_UNLINK )) { 1328 `SH_LIST_REMOVE ( lockp , lock_lks , __db_lock ); 1329 i( lockp -> us = DB_LSTAT_HELD ) { 1330 sh_lock -> ocks --; 1331 i( `IS_WRITELOCK ( lockp -> mode )) 1332 sh_lock -> nwres --; 1336 i( `LF_ISSET ( DB_LOCK_FREE )) { 1342 _id = `LOCK_PART ( gi , lockp -> dx ); 1343 i( lockp -> mtx_lock ! MUTEX_INVALID && 1344 lockp -> us ! DB_LSTAT_HELD && 1345 lockp -> us ! DB_LSTAT_EXPIRED && 1346 ( t = `__mux_ ( v , & lockp -> mtx_lock )) != 0) 1347 ( t ); 1348 lockp -> us = DB_LSTAT_FREE ; 1349 `SH_TAILQ_INSERT_HEAD (& `FREE_LOCKS ( , _id ), 1350 lockp , lks , __db_lock ); 1351 `STAT ( -> _y [ _id ]. _ . _ocks --); 1352 `STAT ( -> obj_ [ lockp -> dx ]. _ocks --); 1356 } } 1364 $__lock_locobj ( , _id ) 1365 DB_LOCKTAB * ; 1366 u_t32_t _id ; 1368 DB_LOCKOBJ * sh_obj ; 1369 DB_LOCKPART * d_p , * cur_p ; 1370 DB_LOCKREGION * gi ; 1371 beg ; 1373 gi = -> gfo . imy ; 1375 i( gi -> _t_size == 1) 1376 r ; 1378 beg = 0; 1379 sh_obj = NULL ; 1380 cur_p = & -> _y [ _id ]; 1381 `MUTEX_UNLOCK ( -> v , cur_p -> mtx_ ); 1382 d_p = & -> _y [ gi -> _t_size ]; 1387 aga : cur_p ++; sh_obj = NULL && cur_< d_p ; cur_p++) { 1388 `MUTEX_LOCK ( -> v , cur_p -> mtx_ ); 1389 i(( sh_obj = 1390 `SH_TAILQ_FIRST (& cur_p -> _objs , __db_lockobj )! NULL ) 1391 `SH_TAILQ_REMOVE (& cur_p -> _objs , 1392 sh_obj , lks , __db_lockobj ); 1393 `MUTEX_UNLOCK ( -> v , cur_p -> mtx_ ); 1395 i( sh_obj ! NULL ) { 1396 cur_p = & -> _y [ _id ]; 1397 `MUTEX_LOCK ( -> v , cur_p -> mtx_ ); 1398 `SH_TAILQ_INSERT_HEAD (& cur_p -> _objs , 1399 sh_obj , lks , __db_lockobj ); 1400 `STAT ( cur_p -> _ . _objels ++); 1403 i(! beg ) { 1404 beg = 1; 1405 cur_p = -> _y ; 1406 d_p = & -> _y [ _id ]; 1407 aga ; 1409 `MUTEX_LOCK ( -> v , cur_p -> mtx_ ); 1411 r : ( `__lock_nomem ( -> v , "objectntries")); 1412 } } 1422 $__lock_gobj ( , obj , ndx , , ) 1423 DB_LOCKTAB * ; 1424 cڡ DBT * obj ; 1425 u_t32_t ndx ; 1426 ; 1427 DB_LOCKOBJ ** ; 1429 DB_LOCKOBJ * sh_obj ; 1430 DB_LOCKREGION * gi ; 1431 ENV * v ; 1432 t ; 1433 * p ; 1434 u_t32_t n , _id ; 1436 v = ->env; 1437 gi = -> gfo . imy ; 1438 n = 0; 1441 y : `SH_TAILQ_FOREACH ( sh_obj , & -> obj_b [ ndx ], lks , __db_lockobj ) { 1442 n ++; 1443 i( obj -> size = sh_obj -> lockobj .size && 1444 `memcmp ( obj -> da , 1445 `SH_DBT_PTR (& sh_obj -> lockobj ), obj -> size ) == 0) 1453 i( sh_obj = NULL && ) { 1455 _id = `LOCK_PART ( gi , ndx ); 1456 i(( sh_obj = `SH_TAILQ_FIRST (& `FREE_OBJS ( 1457 , _id ), __db_lockobj )= NULL ) { 1458 i(( t = `__lock_locobj ( , _id )) == 0) 1459 y ; 1460 r ; 1467 i( obj -> size <( sh_obj -> objda )) 1468 p = sh_obj -> objda ; 1470 `LOCK_REGION_LOCK ( v ); 1471 i(( t = 1472 `__v_loc (& -> gfo , obj -> size , & p )) != 0) { 1473 `__db_rx ( v , 1475 `LOCK_REGION_UNLOCK ( v ); 1476 r ; 1478 `LOCK_REGION_UNLOCK ( v ); 1481 `memy ( p , obj -> da , obj-> size ); 1483 `SH_TAILQ_REMOVE (& `FREE_OBJS ( 1484 , _id ), sh_obj , lks , __db_lockobj ); 1485 #ifde HAVE_STATISTICS 1491 n ++; 1492 i(++ -> obj_ [ ndx ]. _nobjes > 1493 -> obj_ [ ndx ]. _maxnobjes ) 1494 -> obj_ [ ndx ]. _maxnobjes = 1495 -> obj_ [ ndx ]. _nobjes ; 1496 i(++ -> _y [ _id ]. _ . _nobjes > 1497 -> _y [ _id ]. _ . _maxnobjes ) 1498 -> _y [ _id ]. _ . _maxnobjes = 1499 -> _y [ _id ]. _ . _nobjes ; 1502 sh_obj -> dx = ndx ; 1503 `SH_TAILQ_INIT (& sh_obj -> was ); 1504 `SH_TAILQ_INIT (& sh_obj -> hds ); 1505 sh_obj -> lockobj . size = obj ->size; 1506 sh_obj -> lockobj . off = 1507 ( roff_t ) `SH_PTR_TO_OFF (& sh_obj -> lockobj , p ); 1508 `SH_TAILQ_INSERT_HEAD ( 1509 & -> obj_b [ ndx ], sh_obj , lks , __db_lockobj ); 1512 #ifde HAVE_STATISTICS 1513 i( n > -> obj_ [ ndx ]. _hash_n ) 1514 -> obj_ [ ndx ]. _hash_n = n ; 1517 #ifde HAVE_STATISTICS 1518 i( n > -> obj_ [ ndx ]. _hash_n ) 1519 -> obj_ [ ndx ]. _hash_n = n ; 1522 * = sh_obj ; 1525 r : ( t ); 1526 } } 1536 $__lock_is_ ( , l_off , sh_lock ) 1537 DB_LOCKTAB * ; 1538 roff_t l_off ; 1539 DB_LOCKER * sh_lock ; 1541 DB_LOCKER * ; 1543 = sh_lock ; 1544 -> _lock ! INVALID_ROFF ) { 1545 i( -> _lock = l_off ) 1547 = `R_ADDR (& -> gfo ,t-> _lock ); 1551 } } 1562 $__lock_lock_is_ ( v , lock , chd , ) 1563 ENV * v ; 1564 DB_LOCKER * lock ; 1565 DB_LOCKER * chd ; 1566 * ; 1568 DB_LOCKTAB * ; 1570 = v -> lk_hd ; 1576 i( lock = NULL ) 1577 * = 0; 1579 * = `__lock_is_ ( , 1580 `R_OFFSET (& -> gfo , lock ), chd ); 1582 } } 1589 $__lock_h_locks ( , sh_lock , ags ) 1590 DB_LOCKTAB * ; 1591 DB_LOCKER * sh_lock ; 1592 u_t32_t ags ; 1594 DB_LOCKER * sh_ ; 1595 DB_LOCKOBJ * obj ; 1596 DB_LOCKREGION * gi ; 1597 ENV * v ; 1598 t ; 1599 __db_lock * h , * ; 1600 roff_t poff ; 1602 v = ->env; 1603 gi = -> gfo . imy ; 1613 i( sh_lock = NULL ) { 1614 `__db_rx ( v , __db_lock_vid ); 1615 ( EINVAL ); 1619 i( sh_lock -> _lock = INVALID_ROFF ) { 1620 `__db_rx ( v , "Not childransaction"); 1621 ( EINVAL ); 1623 sh_ = `R_ADDR (& -> gfo , sh_lock -> _lock ); 1631 poff = `R_OFFSET (& -> gfo , sh_ ); 1632 = `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock ); 1633 ! NULL ; 1634 = `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock )) { 1635 `SH_LIST_REMOVE ( , lock_lks , __db_lock ); 1638 obj = ( DB_LOCKOBJ *)(( u_t8_t *) +p->obj); 1639 `OBJECT_LOCK_NDX ( , gi , obj -> dx ); 1640 `SH_TAILQ_FOREACH ( h , & obj -> hds , lks , __db_lock ) 1641 i( h -> hd = poff && -> mode == hlp->mode) 1644 i( h ! NULL ) { 1646 h -> fcou + ->refcount; 1649 `DB_ASSERT ( v , -> us = DB_LSTAT_HELD ); 1650 `SH_TAILQ_REMOVE (& obj -> hds , , lks , __db_lock ); 1651 () `__lock_lock ( , , sh_lock , DB_LOCK_FREE ); 1654 `SH_LIST_INSERT_HEAD (& sh_ -> hdby , 1655 , lock_lks , __db_lock ); 1656 -> hd = poff ; 1665 t = 1666 `__lock_ome ( , obj , NULL , `LF_ISSET ( DB_LOCK_NOWAITERS )); 1667 `OBJECT_UNLOCK ( , gi , obj -> dx ); 1668 i( t != 0) 1669 ( t ); 1673 sh_ -> ocks + sh_lock ->nlocks; 1674 sh_ -> nwres + sh_lock ->nwrites; 1677 } } 1689 $__lock_ome ( , obj , e_chgedp , ags ) 1690 DB_LOCKTAB * ; 1691 DB_LOCKOBJ * obj ; 1692 * e_chgedp ; 1693 u_t32_t ags ; 1695 __db_lock * _w , * _h , * xt_wa ; 1696 DB_LOCKREGION * gi ; 1697 had_was , e_chged ; 1699 gi = -> gfo . imy ; 1700 had_was = 0; 1715 _w = `SH_TAILQ_FIRST (& obj -> was , __db_lock ), 1716 e_chged = _w = NULL ; 1717 _w ! NULL ; 1718 _w = xt_wa ) { 1719 had_was = 1; 1720 xt_wa = `SH_TAILQ_NEXT ( _w , lks , __db_lock ); 1723 i( _w -> us ! DB_LSTAT_WAITING ) 1726 i( `LF_ISSET ( DB_LOCK_NOWAITERS && _w -> mode = DB_LOCK_WAIT ) 1729 `SH_TAILQ_FOREACH ( _h , & obj -> hds , lks , __db_lock ) { 1730 i( _h -> hd ! _w ->holder && 1731 `CONFLICTS ( , gi , _h -> mode , _w ->mode)) { 1732 i(! `__lock_is_ ( , _h -> hd , 1733 `R_ADDR (& -> gfo , _w -> hd ))) 1737 i( _h ! NULL ) 1741 `SH_TAILQ_REMOVE (& obj -> was , _w , lks , __db_lock ); 1742 _w -> us = DB_LSTAT_PENDING ; 1743 `SH_TAILQ_INSERT_TAIL (& obj -> hds , _w , lks ); 1746 `MUTEX_UNLOCK ( -> v , _w -> mtx_lock ); 1747 e_chged = 1; 1754 i( had_was && `SH_TAILQ_FIRST (& obj -> was , __db_lock = NULL ) { 1755 `LOCK_DD ( -> v , gi ); 1760 obj -> gi ++; 1761 `SH_TAILQ_REMOVE (& gi -> dd_objs , obj , dd_lks , __db_lockobj ); 1762 `UNLOCK_DD ( -> v , gi ); 1765 i( e_chgedp ! NULL ) 1766 * e_chgedp = e_chged ; 1769 } } 1782 $__lock_move_wa ( , sh_obj , lockp , us ) 1783 DB_LOCKTAB * ; 1784 DB_LOCKOBJ * sh_obj ; 1785 __db_lock * lockp ; 1786 db_us_t us ; 1788 DB_LOCKREGION * gi ; 1789 do_wakeup ; 1791 gi = -> gfo . imy ; 1793 do_wakeup = lockp -> us = DB_LSTAT_WAITING ; 1795 `SH_TAILQ_REMOVE (& sh_obj -> was , lockp , lks , __db_lock ); 1796 lockp -> lks . qe_ev = -1; 1797 lockp -> us = status; 1798 i( `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock = NULL ) { 1799 `LOCK_DD ( -> v , gi ); 1800 sh_obj -> gi ++; 1801 `SH_TAILQ_REMOVE ( 1802 & gi -> dd_objs , 1803 sh_obj , dd_lks , __db_lockobj ); 1804 `UNLOCK_DD ( -> v , gi ); 1810 i( do_wakeup ) 1811 `MUTEX_UNLOCK ( -> v , lockp -> mtx_lock ); 1814 } } 1824 $__lock_ade ( v , lock , w_lock ) 1825 ENV * v ; 1826 DB_LOCK * lock ; 1827 DB_LOCKER * w_lock ; 1829 __db_lock * ; 1830 DB_LOCKTAB * ; 1831 t ; 1833 = v -> lk_hd ; 1834 = `R_ADDR (& -> gfo , lock -> off ); 1837 i( -> g ! lock ->gen) 1838 ( DB_NOTFOUND ); 1840 i( w_lock = NULL ) { 1841 `__db_rx ( v , "Locker doesotxist"); 1842 ( EINVAL ); 1846 i(( t = `__lock_lock ( , 1847 , `R_ADDR (& -> gfo ,p-> hd ), DB_LOCK_UNLINK )) != 0) 1848 ( t ); 1851 `SH_LIST_INSERT_HEAD (& w_lock -> hdby , , lock_lks , __db_lock ); 1852 w_lock -> ocks ++; 1853 i( `IS_WRITELOCK ( -> mode )) 1854 w_lock -> nwres ++; 1855 -> hd = `R_OFFSET (& -> gfo , w_lock ); 1858 } } @../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 (( ENV *, lock_fo *, *)); 48 __dd_bud __P (( ENV *, u_t32_t , 49 u_t32_t **, u_t32_*, u_t32_*, lock_fo **, *)); 50 __dd_fd __P (( 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 (( 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 ENV * v ; 75 t ; 77 v = dbv ->env; 79 `ENV_REQUIRES_CONFIG ( v , 80 v -> lk_hd , "DB_ENV->lock_de", DB_INIT_LOCK ); 83 i(( t = `__db_fchk ( v , "DB_ENV->lock_de", ags , 0)) != 0) 84 ( t ); 85 y ) { 86 DB_LOCK_DEFAULT : 87 DB_LOCK_EXPIRE : 88 DB_LOCK_MAXLOCKS : 89 DB_LOCK_MAXWRITE : 90 DB_LOCK_MINLOCKS : 91 DB_LOCK_MINWRITE : 92 DB_LOCK_OLDEST : 93 DB_LOCK_RANDOM : 94 DB_LOCK_YOUNGEST : 97 `__db_rx ( v , 99 ( EINVAL ); 102 `ENV_ENTER ( v , ); 103 `REPLICATION_WRAP ( v , ( `__lock_de nv, y , jep )), 0, t ); 104 `ENV_LEAVE ( v , ); 105 ( t ); 106 } } 115 $__lock_de ( v , y , jep ) 116 ENV * v ; 117 u_t32_t y ; 118 * jep ; 120 DB_LOCKREGION * gi ; 121 DB_LOCKTAB * ; 122 db_timeec now ; 123 lock_fo * idm ; 124 u_t32_t * bm , * cym , ** ddp , ** _me , * tmpm ; 125 u_t32_t i , cid , kr , klid , lim , oc , ocks ; 126 u_t32_t lock_max , txn_max ; 127 t , us ; 133 i( `IS_REP_CLIENT ( v )) 134 y = DB_LOCK_MINWRITE ; 136 _me = NULL ; 138 = v -> lk_hd ; 139 i( jep ! NULL ) 140 * jep = 0; 145 gi = -> gfo . imy ; 147 `timeecr (& now ); 148 i( gi -> ed_dd == 0 && 149 (! `timeecist (& gi -> xt_timeout ) || 150 ! `__lock_exped ( v , & now , & gi -> xt_timeout ))) { 153 i( gi -> ed_dd == 0) 154 y = DB_LOCK_EXPIRE ; 157 gi -> ed_dd = 0; 160 t = `__dd_bud ( v , 161 y , & bm , & ocks , & oc , & idm , jep ); 162 lock_max = gi -> . _cur_maxid ; 163 i( t !0 || y = DB_LOCK_EXPIRE ) 164 ( t ); 167 i( ocks == 0) 170 #ifde DIAGNOSTIC 171 i( `FLD_ISSET ( v -> dbv -> vbo , DB_VERB_WAITSFOR )) 172 `__dd_debug ( v , idm , bm , ocks , oc ); 176 i(( t = `__os_oc ( v , ( size_t ) ocks , 177 ( u_t32_t * oc , & cym )) != 0) 178 r ; 179 `memy ( cym , bm , ocks * ( u_t32_t * oc ); 181 i(( t = `__os_oc ( v , ( u_t32_t ), oc , & tmpm )) != 0) 182 r1 ; 185 i(( t = 186 `__dd_fd ( v , bm , idm , ocks , oc , & ddp )) != 0) 187 ( t ); 198 i( `TXN_ON ( v )) { 199 `TXN_SYSTEM_LOCK ( v ); 200 txn_max = (( DB_TXNREGION *) 201 v -> tx_hd -> gfo . imy )-> cur_maxid ; 202 `TXN_SYSTEM_UNLOCK ( v ); 204 txn_max = TXN_MAXIMUM ; 206 klid = BAD_KILLID ; 207 _me = ddp ; 208 ; * ddp ! NULL ; deadp++) { 209 i( jep ! NULL ) 210 ++* jep ; 211 klid = ( u_t32_t )(* ddp - bm / oc ; 212 lim = klid ; 229 kr = idm [ klid ]. _abt =0 ? klid : BAD_KILLID ; 230 i( kr = BAD_KILLID || 231 `__dd_vify ( idm , * ddp , 232 tmpm , cym , ocks , oc , kr ) == 0) 233 klid = BAD_KILLID ; 235 i( klid ! BAD_KILLID && 236 ( y = DB_LOCK_DEFAULT ||ty = DB_LOCK_RANDOM )) 237 dokl ; 251 i = ( lim + 1% ocks ; 252 i ! lim ; 253 i = (+ 1% ocks ) { 254 i(! `ISSET_MAP (* ddp , i || idm [i]. _abt ) 262 i( klid = BAD_KILLID ) { 263 i( kr = BAD_KILLID ) 264 u_xt ; 266 cid = kr ; 268 cid = klid ; 270 y ) { 271 DB_LOCK_OLDEST : 272 i( `__dd_isd ( idm [ cid ]. id , 273 idm [ i ]. id , lock_max , txn_max )) 276 DB_LOCK_YOUNGEST : 277 i( `__dd_isd ( idm [ i ]. id , 278 idm [ cid ]. id , lock_max , txn_max )) 281 DB_LOCK_MAXLOCKS : 282 i( idm [ i ]. cou < idm[ cid ].count) 285 DB_LOCK_MAXWRITE : 286 i( idm [ i ]. cou < idm[ cid ].count) 289 DB_LOCK_MINLOCKS : 290 DB_LOCK_MINWRITE : 291 i( idm [ i ]. cou > idm[ cid ].count) 294 DB_LOCK_DEFAULT : 295 DB_LOCK_RANDOM : 296 dokl ; 299 klid = BAD_KILLID ; 300 t = EINVAL ; 301 dokl ; 304 u_xt : kr = i ; 305 i( `__dd_vify ( idm , * ddp , 306 tmpm , cym , ocks , oc , i )) 307 klid = i ; 310 dokl : i( klid = BAD_KILLID ) { 311 i( kr = BAD_KILLID ) 323 gi -> ed_dd = 1; 324 klid = kr ; 329 i(( t = `__dd_abt ( v , & idm [ klid ], & us )) != 0) 336 i( us != 0) { 337 i( us ! DB_ALREADY_ABORTED ) 338 `__db_rx ( v , 340 ( u_lg ) idm [ klid ]. id ); 341 } i( `FLD_ISSET ( v -> dbv -> vbo , DB_VERB_DEADLOCK )) 342 `__db_msg ( v , 343 "Abtgock %lx", ( u_lg ) idm [ klid ]. id ); 345 `__os_ ( v , tmpm ); 346 r1 : `__os_ ( v , cym ); 348 r : i( _me ! NULL ) 349 `__os_ ( v , _me ); 350 `__os_ ( v , bm ); 351 `__os_ ( v , idm ); 353 ( t ); 354 } } 361 #DD_INVALID_ID (( u_t32_t -1) ) 364 $__dd_bud ( v , y , bmp , ocks , lo , idm , jep ) 365 ENV * v ; 366 u_t32_t y , ** bmp , * ocks , * lo ; 367 lock_fo ** idm ; 368 * jep ; 370 __db_lock * ; 371 DB_LOCKER * l , * lockp , * chd ; 372 DB_LOCKOBJ * , * lo , * ; 373 DB_LOCKREGION * gi ; 374 DB_LOCKTAB * ; 375 lock_fo * id_y ; 376 db_timeec now , m_timeout ; 377 u_t32_t * bm , cou , dd ; 378 u_t32_t * yp , g , id , dx , ndx , rs , * tmpm ; 379 u_t8_t * ; 380 is_f , t ; 382 `COMPQUIET ( dx , 0); 383 = v -> lk_hd ; 384 gi = -> gfo . imy ; 385 `timeecr (& now ); 386 `timeecr (& m_timeout ); 396 i( y = DB_LOCK_EXPIRE ) { 397 sk : `LOCK_DD ( v , gi ); 398 = `SH_TAILQ_FIRST (& gi -> dd_objs , __db_lockobj ); 399 ; ! NULL ; o ) { 400 dx = ->indx; 401 g = -> gi ; 402 `UNLOCK_DD ( v , gi ); 403 `OBJECT_LOCK_NDX ( , gi , dx ); 404 i( -> gi ! g ) { 405 `OBJECT_UNLOCK ( , gi , dx ); 406 sk ; 408 `SH_TAILQ_FOREACH ( , & -> was , lks , __db_lock ) { 409 lockp = ( DB_LOCKER *) 410 `R_ADDR (& -> gfo , -> hd ); 411 i( -> us = DB_LSTAT_WAITING ) { 412 i( `__lock_exped ( v , 413 & now , & lockp -> lk_expe )) { 414 -> us = DB_LSTAT_EXPIRED ; 415 `MUTEX_UNLOCK ( 416 v , -> mtx_lock ); 417 i( jep ! NULL ) 418 ++* jep ; 421 i(! `timeecist (& m_timeout ) || 422 `timeeccmp (& m_timeout , 423 & lockp -> lk_expe , >)) 424 m_timeout = 425 lockp -> lk_expe ; 428 `LOCK_DD ( v , gi ); 429 = `SH_TAILQ_NEXT ( , dd_lks , __db_lockobj ); 430 `OBJECT_UNLOCK ( , gi , dx ); 432 `UNLOCK_DD ( v , gi ); 433 de ; 442 y : cou = gi -> . _ocks ; 443 i( cou == 0) { 444 * ocks = 0; 448 i( `FLD_ISSET ( v -> dbv -> vbo , DB_VERB_DEADLOCK )) 449 `__db_msg ( v , "%luocks", ( u_lg ) cou ); 451 cou += 20; 452 rs = ( u_t32_t ) `DB_ALIGN ( cou , 32) / 32; 461 i(( t = `__os_oc ( v , ( size_t ) cou , 462 ( u_t32_t * rs , & bm )) != 0) 463 ( t ); 465 i(( t = `__os_oc ( v , 466 ( u_t32_t ), rs , & tmpm )) != 0) { 467 `__os_ ( v , bm ); 468 ( t ); 471 i(( t = `__os_oc ( v , 472 ( size_t ) cou , ( lock_fo ), & id_y )) != 0) { 473 `__os_ ( v , bm ); 474 `__os_ ( v , tmpm ); 475 ( t ); 481 i( gi -> . _ocks > cou ) { 482 `__os_ ( v , bm ); 483 `__os_ ( v , tmpm ); 484 `__os_ ( v , id_y ); 485 y ; 491 id = 0; 492 `LOCK_LOCKERS ( v , gi ); 493 `SH_TAILQ_FOREACH ( l , & gi -> locks , ulks , __db_lock ) { 494 i( l -> ma_lock = INVALID_ROFF ) { 495 l -> dd_id = id ++; 496 id_y [ l -> dd_id ]. id =ip->id; 497 y ) { 498 DB_LOCK_MINLOCKS : 499 DB_LOCK_MAXLOCKS : 500 id_y [ l -> dd_id ]. cou =-> ocks ; 502 DB_LOCK_MINWRITE : 503 DB_LOCK_MAXWRITE : 504 id_y [ l -> dd_id ]. cou =-> nwres ; 510 l -> dd_id = DD_INVALID_ID ; 513 `UNLOCK_LOCKERS ( v , gi ); 527 aga : `memt ( bm , 0, cou * ( u_t32_t * rs ); 529 `LOCK_DD ( v , gi ); 530 = `SH_TAILQ_FIRST (& gi -> dd_objs , __db_lockobj ); 531 ; ! NULL ; o ) { 532 dx = ->indx; 533 g = -> gi ; 534 `UNLOCK_DD ( v , gi ); 536 `OBJECT_LOCK_NDX ( , gi , dx ); 537 i( g ! -> gi ) { 538 `OBJECT_UNLOCK ( , gi , dx ); 539 aga ; 547 `CLEAR_MAP ( tmpm , rs ); 548 `SH_TAILQ_FOREACH ( , & -> hds , lks , __db_lock ) { 549 lockp = ( DB_LOCKER *) `R_ADDR (& -> gfo , -> hd ); 551 i( lockp -> dd_id = DD_INVALID_ID ) { 556 i( lockp -> ma_lock = INVALID_ROFF ) 558 dd = (( DB_LOCKER *) `R_ADDR (& -> gfo , 559 lockp -> ma_lock ))-> dd_id ; 560 i( dd = DD_INVALID_ID ) 562 lockp -> dd_id = dd ; 563 y ) { 564 DB_LOCK_MINLOCKS : 565 DB_LOCK_MAXLOCKS : 566 id_y [ dd ]. cou + lockp -> ocks ; 568 DB_LOCK_MINWRITE : 569 DB_LOCK_MAXWRITE : 570 id_y [ dd ]. cou + lockp -> nwres ; 577 dd = lockp -> dd_id ; 578 id_y [ dd ]. vid = 1; 584 i( -> us = DB_LSTAT_HELD ) 585 `SET_MAP ( tmpm , dd ); 592 is_f = 1, 593 = `SH_TAILQ_FIRST (& -> was , __db_lock ); 594 ! NULL ; 595 is_f = 0, 596 = `SH_TAILQ_NEXT p, lks , __db_lock )) { 597 lockp = ( DB_LOCKER *) `R_ADDR (& -> gfo , -> hd ); 598 i( -> us = DB_LSTAT_WAITING ) { 599 i( `__lock_exped ( v , 600 & now , & lockp -> lk_expe )) { 601 -> us = DB_LSTAT_EXPIRED ; 602 `MUTEX_UNLOCK ( v , -> mtx_lock ); 603 i( jep ! NULL ) 604 ++* jep ; 607 i(! `timeecist (& m_timeout ) || 608 `timeeccmp ( 609 & m_timeout , & lockp -> lk_expe , >)) 610 m_timeout = lockp -> lk_expe ; 613 i( lockp -> dd_id = DD_INVALID_ID ) { 614 dd = (( DB_LOCKER *) `R_ADDR (& -> gfo , 615 lockp -> ma_lock ))-> dd_id ; 616 lockp -> dd_id = dd ; 617 y ) { 618 DB_LOCK_MINLOCKS : 619 DB_LOCK_MAXLOCKS : 620 id_y [ dd ]. cou + lockp -> ocks ; 622 DB_LOCK_MINWRITE : 623 DB_LOCK_MAXWRITE : 624 id_y [ dd ]. cou + lockp -> nwres ; 630 dd = lockp -> dd_id ; 631 id_y [ dd ]. vid = 1; 637 i( -> us ! DB_LSTAT_WAITING ) 640 yp = bm + ( rs * dd ); 641 `OR_MAP ( yp , tmpm , rs ); 649 i( is_f ) { 650 i( `ISSET_MAP ( yp , dd )) 651 id_y [ dd ]. lf_wa = 1; 652 `CLR_MAP ( yp , dd ); 655 `LOCK_DD ( v , gi ); 656 = `SH_TAILQ_NEXT ( , dd_lks , __db_lockobj ); 657 `OBJECT_UNLOCK ( , gi , dx ); 659 `UNLOCK_DD ( v , gi ); 672 `LOCK_LOCKERS ( v , gi ); 673 id = 0; id < cou ; id++) { 674 i(! id_y [ id ]. vid ) 676 i(( t = `__lock_glock_t ( , 677 id_y [ id ].id, 0, & lockp )!0 ||ock= NULL ) 685 chd = `SH_LIST_FIRST (& lockp -> chd_lock , __db_lock ); 686 i( chd ! NULL ) { 688 c_y : = `SH_LIST_FIRST (& chd -> hdby , __db_lock ); 689 i( `SH_LIST_EMPTY (& chd -> hdby || = NULL ) 690 c_xt ; 692 i( `F_ISSET ( chd , DB_LOCKER_INABORT )) 693 id_y [ id ]. _abt = 1; 694 ndx = -> dx ; 695 `OBJECT_LOCK_NDX ( , gi , ndx ); 696 i( ! `SH_LIST_FIRST ( 697 & chd -> hdby , __db_lock ) || 698 ndx ! -> dx ) { 699 `OBJECT_UNLOCK ( , gi , ndx ); 700 c_y ; 703 i( ! NULL && 704 -> us = DB_LSTAT_WAITING ) { 705 id_y [ id ]. ϡ_lock_id = chd ->id; 706 g_lock ; 708 `OBJECT_UNLOCK ( , gi , ndx ); 710 c_xt : chd = `SH_LIST_NEXT ( 711 chd , chd_lk , __db_lock ); 712 } chd ! NULL ); 715 l_y : = `SH_LIST_FIRST (& lockp -> hdby , __db_lock ); 716 i(! `SH_LIST_EMPTY (& lockp -> hdby && ! NULL ) { 717 ndx = -> dx ; 718 `OBJECT_LOCK_NDX ( , gi , ndx ); 719 i( ! `SH_LIST_FIRST (& lockp -> hdby , __db_lock ) || 720 -> dx ! ndx ) { 721 `OBJECT_UNLOCK ( , gi , ndx ); 722 l_y ; 724 id_y [ id ]. ϡ_lock_id = lockp ->id; 725 g_lock : id_y [ id ]. ϡ_lock = `R_OFFSET (& -> gfo , ); 726 id_y [ id ]. ϡ_obj = -> obj ; 727 lo = ( DB_LOCKOBJ *)(( u_t8_t *) +p-> obj ); 728 id_y [ id ]. ϡ_ndx = lo -> dx ; 729 = `SH_DBT_PTR (& lo -> lockobj ); 730 i( lo -> lockobj . size >( db_pgno_t )) 731 `memy (& id_y [ id ]. pgno , 732 , ( db_pgno_t )); 734 id_y [ id ]. pgno = 0; 735 `OBJECT_UNLOCK ( , gi , ndx ); 737 i( `F_ISSET ( lockp , DB_LOCKER_INABORT )) 738 id_y [ id ]. _abt = 1; 740 `UNLOCK_LOCKERS ( v , gi ); 746 * ocks = id ; 747 * idm = id_y ; 748 * bmp = bm ; 749 * lo = rs ; 750 `__os_ ( v , tmpm ); 751 de : i( `timeecist (& gi -> xt_timeout )) 752 gi -> xt_timeout = m_timeout ; 754 } } 757 $__dd_fd ( v , bmp , idm , ocks , oc , ddp ) 758 ENV * v ; 759 u_t32_t * bmp , ocks , oc ; 760 lock_fo * idm ; 761 u_t32_t *** ddp ; 763 u_t32_t i , j , k , * mym , * tmpm , ** ; 764 u_t ndd , nddloc ; 765 t ; 767 #unde INITIAL_DEAD_ALLOC 768 #INITIAL_DEAD_ALLOC 8 ) 770 nddloc = INITIAL_DEAD_ALLOC ; 771 ndd = 0; 772 i(( t = `__os_mloc ( v , 773 nddloc * ( u_t32_t *), & )) != 0) 774 ( t ); 780 mym = bmp , i = 0; i < ocks ; i++, mym + oc ) { 781 i(! idm [ i ]. vid ) 783 j = 0; j < ocks ; j++) { 784 i(! `ISSET_MAP ( mym , j )) 788 tmpm = bmp + ( oc * j ); 789 `OR_MAP ( mym , tmpm , oc ); 790 i(! `ISSET_MAP ( mym , i )) 794 i( ndd + 2 > nddloc ) { 795 nddloc <<= 1; 800 i( `__os_loc ( v , 801 nddloc * ( u_t32_t *), 802 & ) != 0) { 803 [ ndd ] = NULL ; 804 * ddp = ; 808 [ ndd ++] = mym ; 811 k = 0; k < ocks ; k++) 812 i( `ISSET_MAP ( mym , k )) 813 idm [ k ]. vid = 0; 817 [ ndd ] = NULL ; 818 * ddp = ; 820 } } 823 $__dd_abt ( v , fo , u ) 824 ENV * v ; 825 lock_fo * fo ; 826 * u ; 828 __db_lock * lockp ; 829 DB_LOCKER * lockp ; 830 DB_LOCKOBJ * sh_obj ; 831 DB_LOCKREGION * gi ; 832 DB_LOCKTAB * ; 833 t ; 835 * u = 0; 837 = v -> lk_hd ; 838 gi = -> gfo . imy ; 839 t = 0; 842 `LOCK_LOCKERS ( v , gi ); 848 i(( t = `__lock_glock_t ( , 849 fo -> ϡ_lock_id , 0, & lockp )) != 0) 850 r ; 851 i( lockp = NULL || `F_ISSET ockp, DB_LOCKER_INABORT )) { 852 * u = DB_ALREADY_ABORTED ; 853 out ; 862 `OBJECT_LOCK_NDX ( , gi , fo -> ϡ_ndx ); 863 i(( lockp = `SH_LIST_FIRST (& lockp -> hdby , __db_lock )= NULL ) { 864 * u = DB_ALREADY_ABORTED ; 865 de ; 867 i( `R_OFFSET (& -> gfo , lockp ! fo -> ϡ_lock || 868 lockp -> hd ! `R_OFFSET (& -> gfo , lockp ) || 869 lockp -> obj ! fo -> ϡ_obj ||ockp-> us ! DB_LSTAT_WAITING ) { 870 * u = DB_ALREADY_ABORTED ; 871 de ; 874 sh_obj = ( DB_LOCKOBJ *)(( u_t8_t *) lockp +ockp-> obj ); 877 lockp -> us = DB_LSTAT_ABORTED ; 878 `SH_TAILQ_REMOVE (& sh_obj -> was , lockp , lks , __db_lock ); 885 i( `SH_TAILQ_FIRST (& sh_obj -> was , __db_lock = NULL ) { 886 `LOCK_DD ( v , gi ); 887 `SH_TAILQ_REMOVE (& gi -> dd_objs , 888 sh_obj , dd_lks , __db_lockobj ); 889 `UNLOCK_DD ( v , gi ); 891 t = `__lock_ome ( , sh_obj , NULL , 0); 892 `MUTEX_UNLOCK ( v , lockp -> mtx_lock ); 894 `STAT ( gi -> . _nddlocks ++); 895 de : `OBJECT_UNLOCK ( , gi , fo -> ϡ_ndx ); 896 r : 897 out : `UNLOCK_LOCKERS ( v , gi ); 898 ( t ); 899 } } 901 #ifde DIAGNOSTIC 903 $__dd_debug ( v , idm , bm , ocks , oc ) 904 ENV * v ; 905 lock_fo * idm ; 906 u_t32_t * bm , ocks , oc ; 908 DB_MSGBUF mb ; 909 u_t32_t i , j , * mym ; 911 `DB_MSGBUF_INIT (& mb ); 913 `__db_msg ( v , "Waitsforrray\nWaiter:\tWaiting on:"); 914 mym = bm , i = 0; i < ocks ; i++, mym + oc ) { 915 i(! idm [ i ]. vid ) 918 `__db_msgadd ( v , & mb , 919 "%lx/%lu:\t", ( u_lg ) idm [ i ]. id , (u_lg)idm[i]. pgno ); 920 j = 0; j < ocks ; j++) 921 i( `ISSET_MAP ( mym , j )) 922 `__db_msgadd ( v , 923 & mb , " %lx", ( u_lg ) idm [ j ]. id ); 924 `__db_msgadd ( v , & mb , " %lu", ( u_lg ) idm [ i ]. ϡ_lock ); 925 `DB_MSGBUF_FLUSH ( v , & mb ); 927 } } 942 $__dd_vify ( idm , ddm , tmpm , igm , ocks , oc , which ) 943 lock_fo * idm ; 944 u_t32_t * ddm , * tmpm , * igm ; 945 u_t32_t ocks , oc , which ; 947 u_t32_t * tm ; 948 u_t32_t j ; 949 cou ; 951 `memt ( tmpm , 0, ( u_t32_t * oc ); 962 cou = 0; 963 j = 0; j < ocks ; j++) { 964 i(! `ISSET_MAP ( ddm , j || j = which ) 968 tm = igm + ( oc * j ); 976 i( idm [ j ]. lf_wa ) 977 `SET_MAP ( tm , j ); 978 `OR_MAP ( tmpm , tm , oc ); 979 cou ++; 982 i( cou == 1) 989 j = 0; j < ocks ; j++) { 990 i(! `ISSET_MAP ( ddm , j || j = which ) 992 i(! `ISSET_MAP ( tmpm , j )) 996 } } 1006 $__dd_isd ( a , b , lock_max , txn_max ) 1007 u_t32_t a , b ; 1008 u_t32_t lock_max , txn_max ; 1010 u_t32_t max ; 1013 i( a < DB_LOCK_MAXID && b > DB_LOCK_MAXID) 1015 i( b < DB_LOCK_MAXID && a > DB_LOCK_MAXID) 1019 max = txn_max ; 1020 i( a < DB_LOCK_MAXID ) 1021 max = lock_max ; 1032 i( a > max && b < max) 1034 i( b > max && a < max) 1037 ( a < b ); 1038 } } @../lock/lock_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 13 ~"dbc/txn.h " 26 $__lock_chk ( v ) 27 ENV * v ; 29 DB_ENV * dbv ; 30 DB_LOCKER * l ; 31 DB_LOCKREGION * p ; 32 DB_LOCKREQ que ; 33 DB_LOCKTAB * ; 34 u_t32_t i ; 35 t ; 36 buf [ DB_THREADID_STRLEN ]; 38 dbv = v ->dbenv; 39 = v -> lk_hd ; 40 p = -> gfo . imy ; 42 y : `LOCK_LOCKERS ( v , p ); 44 t = 0; 45 i = 0; i < p -> lock_t_size ; i++) 46 `SH_TAILQ_FOREACH ( l , & -> lock_b [ i ], lks , __db_lock ) { 54 i( `SH_LIST_EMPTY (& l -> hdby ) || 55 ( l -> id > TXN_MINIMUM && 56 l -> ocks =l-> nwres )) 60 i( dbv -> `is_ive (dbv, l -> pid ,-> tid , 0)) 69 i( l -> id < TXN_MINIMUM &&-> nwres != 0) { 70 t = `__db_ed ( v , 72 l -> pid ,-> tid ); 79 `__db_msg ( v , "Freeingeadocks forocker %#lx: %s", 80 ( u_lg ) l -> id , dbv -> `thad_id_rg ( 81 dbv , l -> pid ,-> tid , buf )); 82 `UNLOCK_LOCKERS ( v , p ); 83 `memt (& que , 0, (request)); 84 que . = DB_LOCK_PUT_READ ; 85 i(( t = `__lock_vec ( v , 86 l , 0, & que , 1, NULL )) != 0) 87 ( t ); 96 i( l -> id < TXN_MINIMUM && 97 ( t = `__lock_mylock ( , l )) != 0) 98 ( t ); 99 y ; 102 `UNLOCK_LOCKERS ( v , p ); 104 ( t ); 105 } } @../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 ENV * v ; 28 t ; 30 v = dbv ->env; 32 `ENV_REQUIRES_CONFIG ( v , 33 v -> lk_hd , "DB_ENV->lock_id", DB_INIT_LOCK ); 35 `ENV_ENTER ( v , ); 36 `REPLICATION_WRAP ( v , ( `__lock_id nv, idp , NULL )), 0, t ); 37 `ENV_LEAVE ( v , ); 38 ( t ); 39 } } 48 $__lock_id ( v , idp , lkp ) 49 ENV * v ; 50 u_t32_t * idp ; 51 DB_LOCKER ** lkp ; 53 DB_LOCKER * lk ; 54 DB_LOCKREGION * gi ; 55 DB_LOCKTAB * ; 56 u_t32_t id , * ids ; 57 nids , t ; 59 lk = NULL ; 60 = v -> lk_hd ; 61 gi = -> gfo . imy ; 62 id = DB_LOCK_INVALIDID ; 63 t = 0; 65 id = DB_LOCK_INVALIDID ; 66 lk = NULL ; 68 `LOCK_LOCKERS ( v , gi ); 78 i( gi -> . _id = DB_LOCK_MAXID && 79 gi -> . _cur_maxid ! DB_LOCK_MAXID ) 80 gi -> . _id = DB_LOCK_INVALIDID ; 81 i( gi -> . _id =gi->. _cur_maxid ) { 82 i(( t = `__os_mloc ( v , 83 ( u_t32_t * gi -> . _ocks , & ids )) != 0) 84 r ; 85 nids = 0; 86 `SH_TAILQ_FOREACH ( lk , & gi -> locks , ulks , __db_lock ) 87 ids [ nids ++] = lk -> id ; 88 gi -> . _id = DB_LOCK_INVALIDID ; 89 gi -> . _cur_maxid = DB_LOCK_MAXID ; 90 i( nids != 0) 91 `__db_ida ( ids , nids , 92 & gi -> . _id , &gi->. _cur_maxid ); 93 `__os_ ( v , ids ); 95 id = ++ gi -> . _id ; 98 t = `__lock_glock_t ( , id , 1, & lk ); 100 r : `UNLOCK_LOCKERS ( v , gi ); 102 i( idp ! NULL ) 103 * idp = id ; 104 i( lkp ! NULL ) 105 * lkp = lk ; 107 ( t ); 108 } } 116 $__lock_t_thad_id ( ef_g , pid , tid ) 117 * ef_g ; 118 pid_t pid ; 119 db_thadid_t tid ; 121 DB_LOCKER * ef ; 123 ef = ef_g ; 124 ef -> pid =id; 125 ef -> tid =id; 126 } } 135 $__lock_id__ ( dbv , id ) 136 DB_ENV * dbv ; 137 u_t32_t id ; 139 DB_LOCKER * sh_lock ; 140 DB_LOCKREGION * gi ; 141 DB_LOCKTAB * ; 142 DB_THREAD_INFO * ; 143 ENV * v ; 144 hd_check , t , t_t ; 146 v = dbv ->env; 148 `ENV_REQUIRES_CONFIG ( v , 149 v -> lk_hd , "DB_ENV->lock_id_", DB_INIT_LOCK ); 151 `ENV_ENTER ( v , ); 154 hd_check = `IS_ENV_REPLICATED ( v ); 155 i( hd_check && ( t = `__v_p_r ( v , 0)) != 0) { 156 hd_check = 0; 157 r ; 160 = v -> lk_hd ; 161 gi = -> gfo . imy ; 163 `LOCK_LOCKERS ( v , gi ); 164 i(( t = 165 `__lock_glock_t ( v -> lk_hd , id , 0, & sh_lock )) == 0) { 166 i( sh_lock ! NULL ) 167 t = `__lock_lock ( , gi , sh_lock ); 169 `__db_rx ( v , "Unknowlock id: %lx", ( u_lg ) id ); 170 t = EINVAL ; 173 `UNLOCK_LOCKERS ( v , gi ); 175 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 176 t = t_t ; 178 r : `ENV_LEAVE ( v , ); 179 ( t ); 180 } } 189 $__lock_id_ ( v , sh_lock ) 190 ENV * v ; 191 DB_LOCKER * sh_lock ; 193 DB_LOCKREGION * gi ; 194 DB_LOCKTAB * ; 195 t ; 197 = v -> lk_hd ; 198 gi = -> gfo . imy ; 199 t = 0; 201 i( sh_lock -> ocks != 0) { 202 `__db_rx ( v , "Locker still hasocks"); 203 t = EINVAL ; 204 r ; 207 `LOCK_LOCKERS ( v , gi ); 208 t = `__lock_lock ( , gi , sh_lock ); 209 `UNLOCK_LOCKERS ( v , gi ); 211 r : 212 ( t ); 213 } } 223 $__lock_id_t ( v , cur_id , max_id ) 224 ENV * v ; 225 u_t32_t cur_id , max_id ; 227 DB_LOCKREGION * gi ; 228 DB_LOCKTAB * ; 230 `ENV_REQUIRES_CONFIG ( v , 231 v -> lk_hd , "lock_id_t", DB_INIT_LOCK ); 233 = v -> lk_hd ; 234 gi = -> gfo . imy ; 235 gi -> . _id = cur_id ; 236 gi -> . _cur_maxid = max_id ; 239 } } 255 $__lock_glock ( , lock , , ) 256 DB_LOCKTAB * ; 257 u_t32_t lock ; 258 ; 259 DB_LOCKER ** ; 261 DB_LOCKREGION * gi ; 262 ENV * v ; 263 t ; 265 `COMPQUIET ( gi , NULL ); 266 v = ->env; 267 gi = -> gfo . imy ; 269 `LOCK_LOCKERS ( v , gi ); 270 t = `__lock_glock_t ( , lock , , ); 271 `UNLOCK_LOCKERS ( v , gi ); 273 ( t ); 274 } } 277 $__lock_glock_t ( , lock , , ) 278 DB_LOCKTAB * ; 279 u_t32_t lock ; 280 ; 281 DB_LOCKER ** ; 283 DB_LOCKER * sh_lock ; 284 DB_LOCKREGION * gi ; 285 ENV * v ; 286 u_t32_t dx ; 288 v = ->env; 289 gi = -> gfo . imy ; 291 `LOCKER_HASH ( , gi , lock , dx ); 297 `SH_TAILQ_FOREACH ( sh_lock , & -> lock_b [ dx ], lks , __db_lock ) 298 i( sh_lock -> id = lock ) 300 i( sh_lock = NULL && ) { 302 i(( sh_lock = `SH_TAILQ_FIRST ( 303 & gi -> _locks , __db_lock )= NULL ) 304 ( `__lock_nomem ( v , "lockerntries")); 305 `SH_TAILQ_REMOVE ( 306 & gi -> _locks , sh_lock , lks , __db_lock ); 307 ++ gi -> . _ocks ; 308 #ifde HAVE_STATISTICS 309 i( gi -> . _ocks >egi->. _maxocks ) 310 gi -> . _maxocks =egi->. _ocks ; 312 sh_lock -> id = lock ; 313 v -> dbv -> `thad_id ( 314 v -> dbv , & sh_lock -> pid , &sh_lock-> tid ); 315 sh_lock -> dd_id = 0; 316 sh_lock -> ma_lock = INVALID_ROFF ; 317 sh_lock -> _lock = INVALID_ROFF ; 318 `SH_LIST_INIT (& sh_lock -> chd_lock ); 319 sh_lock -> ags = 0; 320 `SH_LIST_INIT (& sh_lock -> hdby ); 321 sh_lock -> ocks = 0; 322 sh_lock -> nwres = 0; 323 sh_lock -> lk_timeout = 0; 324 `timeecr (& sh_lock -> tx_expe ); 325 `timeecr (& sh_lock -> lk_expe ); 327 `SH_TAILQ_INSERT_HEAD ( 328 & -> lock_b [ dx ], sh_lock , lks , __db_lock ); 329 `SH_TAILQ_INSERT_HEAD (& gi -> locks , 330 sh_lock , ulks , __db_lock ); 333 * = sh_lock ; 335 } } 344 $__lock_addmylock ( v , pid , id ) 345 ENV * v ; 346 u_t32_t pid , id ; 348 DB_LOCKER * lockp , * mlockp ; 349 DB_LOCKREGION * gi ; 350 DB_LOCKTAB * ; 351 t ; 353 `COMPQUIET ( gi , NULL ); 354 = v -> lk_hd ; 355 gi = -> gfo . imy ; 356 `LOCK_LOCKERS ( v , gi ); 359 i(( t = `__lock_glock_t ( , pid , 1, & mlockp )) != 0) 360 r ; 369 i(( t = `__lock_glock_t ( , id , 1, & lockp )) != 0) 370 r ; 373 lockp -> _lock = `R_OFFSET (& -> gfo , mlockp ); 376 i( mlockp -> ma_lock = INVALID_ROFF ) 377 lockp -> ma_lock = `R_OFFSET (& -> gfo , mlockp ); 379 lockp -> ma_lock = mlockp ->master_locker; 380 mlockp = `R_ADDR (& -> gfo , mlockp-> ma_lock ); 388 `SH_LIST_INSERT_HEAD ( 389 & mlockp -> chd_lock , lockp , chd_lk , __db_lock ); 391 r : `UNLOCK_LOCKERS ( v , gi ); 393 ( t ); 394 } } 405 $__lock_mylock ( , sh_lock ) 406 DB_LOCKTAB * ; 407 DB_LOCKER * sh_lock ; 409 DB_LOCKREGION * gi ; 410 ENV * v ; 411 t ; 413 v = ->env; 414 gi = -> gfo . imy ; 416 i( sh_lock = NULL ) 419 `LOCK_LOCKERS ( v , gi ); 421 i( `SH_LIST_FIRST (& sh_lock -> hdby , __db_lock ! NULL ) { 422 t = EINVAL ; 423 `__db_rx ( v , "Freeingocker withocks"); 424 r ; 428 i( sh_lock -> ma_lock ! INVALID_ROFF ) 429 `SH_LIST_REMOVE ( sh_lock , chd_lk , __db_lock ); 431 t = `__lock_lock ( , gi , sh_lock ); 433 r : `UNLOCK_LOCKERS ( v , gi ); 434 ( t ); 435 } } 446 $__lock_lock ( , gi , sh_lock ) 447 DB_LOCKTAB * ; 448 DB_LOCKREGION * gi ; 449 DB_LOCKER * sh_lock ; 452 u_t32_t dx ; 453 `LOCKER_HASH ( , gi , sh_lock -> id , dx ); 454 `SH_TAILQ_REMOVE (& -> lock_b [ dx ], sh_lock , lks , __db_lock ); 455 `SH_TAILQ_INSERT_HEAD ( 456 & gi -> _locks , sh_lock , lks , __db_lock ); 457 `SH_TAILQ_REMOVE (& gi -> locks , sh_lock , ulks , __db_lock ); 458 gi -> . _ocks --; 460 } } @../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 __c = (count); \ 56 `LOGCOPY_32 ( v , dp , & __c ); \ 57 dp = ( u_t8_t *)dp + \ 58 ( u_t32_t ); \ 59 } 0) ) 60 #PUT_PCOUNT ( dp , cou d{ u_t16_t __c = (count); \ 61 `LOGCOPY_16 ( v , dp , & __c ); \ 62 dp = ( u_t8_t *)dp + \ 63 ( u_t16_t ); \ 64 } 0) ) 65 #PUT_SIZE ( dp , size d{ u_t16_t __s = (size); \ 66 `LOGCOPY_16 ( v , dp , & __s ); \ 67 dp = ( u_t8_t *)dp + \ 68 ( u_t16_t ); \ 69 } 0) ) 70 #PUT_PGNO ( dp , pgno d{ db_pgno_t __pg = (pgno); \ 71 `LOGCOPY_32 ( v , dp , & __pg ); \ 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 d{ `LOGCOPY_32 ( v , &count, dp); \ 83 dp = ( u_t8_t *)dp + \ 84 ( u_t32_t ); \ 85 } 0) ) 86 #GET_PCOUNT ( dp , cou d{ `LOGCOPY_16 ( v , &count, dp); \ 87 dp = ( u_t8_t *)dp + \ 88 ( u_t16_t ); \ 89 } 0) ) 90 #GET_SIZE ( dp , size d{ `LOGCOPY_16 ( v , &size, dp); \ 91 dp = ( u_t8_t *)dp + \ 92 ( u_t16_t ); \ 93 } 0) ) 94 #GET_PGNO ( dp , pgno d{ `LOGCOPY_32 ( v , &pgno, dp); \ 95 dp = ( u_t8_t *)dp + \ 96 ( db_pgno_t ); \ 97 } 0) ) 105 $__lock_fix_li ( v , li_dbt , ocks ) 106 ENV * v ; 107 DBT * li_dbt ; 108 u_t32_t ocks ; 110 DBT * obj ; 111 DB_LOCK_ILOCK * lock , * ock ; 112 u_t32_t i , j , nfid , gno , size ; 113 u_t8_t * da , * dp ; 114 t ; 116 i(( size = li_dbt ->size) == 0) 119 obj = ( DBT *) li_dbt -> da ; 129 ocks ) { 131 size = `RET_SIZE ( obj ->size, 1); 132 i(( t = `__os_mloc ( v , size , & da )) != 0) 133 ( t ); 135 dp = da ; 136 `PUT_COUNT ( dp , 1); 137 `PUT_PCOUNT ( dp , 0); 138 `PUT_SIZE ( dp , obj -> size ); 139 `COPY_OBJ ( dp , obj ); 143 `qst ( li_dbt -> da , ocks , ( DBT ), __lock_st_cmp ); 146 nfid = gno = 0; 147 i = 0; 148 i( obj -> size !( DB_LOCK_ILOCK )) 149 n_ock ; 151 nfid = 1; 152 ock = ( DB_LOCK_ILOCK *) obj -> da ; 155 j = 0; 156 obj [0]. un = 0; 157 i = 1; i < ocks ; i++) { 158 i( obj [ i ]. size !( DB_LOCK_ILOCK )) 160 lock = ( DB_LOCK_ILOCK *) obj [ i ]. da ; 161 i( obj [ j ]. un < MAX_PGNOS && 162 lock -> ty = ock ->type && 163 `memcmp ( lock -> feid , 164 ock -> feid , DB_FILE_ID_LEN ) == 0) { 165 obj [ j ]. un ++; 166 gno ++; 168 nfid ++; 169 ock = lock ; 170 j = i ; 171 obj [ j ]. un = 0; 175 n_ock : size = nfid * ( DB_LOCK_ILOCK ); 176 size + gno * ( db_pgno_t ); 178 nfid + ocks - i ; 179 ; i < ocks ; i++) { 180 size + obj [ i ].size; 181 obj [ i ]. un = 0; 184 size = `RET_SIZE (size, nfid ); 185 i(( t = `__os_mloc ( v , size , & da )) != 0) 186 ( t ); 188 dp = da ; 189 `PUT_COUNT ( dp , nfid ); 191 i = 0; i < ocks ; i = j ) { 192 `PUT_PCOUNT ( dp , obj [ i ]. un ); 193 `PUT_SIZE ( dp , obj [ i ]. size ); 194 `COPY_OBJ ( dp , & obj [ i ]); 195 lock = ( DB_LOCK_ILOCK *) obj [ i ]. da ; 196 j = i + 1; j <+ obj [i]. un ; j++) { 197 lock = ( DB_LOCK_ILOCK *) obj [ j ]. da ; 198 `PUT_PGNO ( dp , lock -> pgno ); 203 `__os_ ( v , li_dbt -> da ); 205 li_dbt -> da = data; 206 li_dbt -> size = size; 209 } } 216 $__lock_g_li ( v , lock , ags , lock_mode , li ) 217 ENV * v ; 218 DB_LOCKER * lock ; 219 u_t32_t ags ; 220 db_lockmode_t lock_mode ; 221 DBT * li ; 223 DBT obj_dbt ; 224 DB_LOCK t_lock ; 225 DB_LOCKREGION * gi ; 226 DB_LOCKTAB * ; 227 DB_LOCK_ILOCK * lock ; 228 db_pgno_t ve_pgno ; 229 u_t16_t gno , size ; 230 u_t32_t i , ocks ; 231 t ; 232 * da , * dp ; 234 i( li -> size == 0) 236 t = 0; 237 da = NULL ; 239 = v -> lk_hd ; 240 dp = li -> da ; 247 i(( u_t ) dp ! `DB_ALIGN ((u_t)dp, ( u_t32_t ))) { 248 i(( t = `__os_mloc ( v , li -> size , & da )) != 0) 249 ( t ); 250 `memy ( da , li ->da,i-> size ); 251 dp = da ; 254 gi = -> gfo . imy ; 255 `LOCK_SYSTEM_LOCK ( , gi ); 256 `GET_COUNT ( dp , ocks ); 258 i = 0; i < ocks ; i++) { 259 `GET_PCOUNT ( dp , gno ); 260 `GET_SIZE ( dp , size ); 261 lock = ( DB_LOCK_ILOCK * dp ; 262 ve_pgno = lock -> pgno ; 263 obj_dbt . da = dp ; 264 obj_dbt . size = size; 265 dp = (( u_t8_t *)dp+ `DB_ALIGN ( size , ( u_t32_t )); 267 i(( t = `__lock_g_ ( , lock , 268 ags , & obj_dbt , lock_mode , 0, & t_lock )) != 0) { 269 lock -> pgno = ve_pgno ; 270 r ; 272 i( gno != 0) 273 `GET_PGNO ( dp , lock -> pgno ); 274 } gno -- != 0); 275 lock -> pgno = ve_pgno ; 278 r : `LOCK_SYSTEM_UNLOCK ( , gi ); 279 i( da ! NULL ) 280 `__os_ ( v , da ); 281 ( t ); 282 } } 284 #UINT32_CMP ( A , B ((A=(B? 0 : ((A> (B? 1 : -1)) ) 286 $__lock_st_cmp ( a , b ) 287 cڡ * a , * b ; 289 cڡ DBT * d1 , * d2 ; 290 DB_LOCK_ILOCK * l1 , * l2 ; 292 d1 = a ; 293 d2 = b ; 296 i( d1 -> size !( DB_LOCK_ILOCK )) { 297 i( d2 -> size !( DB_LOCK_ILOCK )) 298 ( `UINT32_CMP ( d1 -> size , d2 ->size)); 301 } i( d2 -> size !( DB_LOCK_ILOCK )) 304 l1 = d1 -> da ; 305 l2 = d2 -> da ; 306 i( l1 -> ty ! l2 ->type) 307 ( `UINT32_CMP ( l1 -> ty , l2 ->type)); 308 ( `memcmp ( l1 -> feid , l2 ->feid, DB_FILE_ID_LEN )); 309 } } 315 $__lock_li_t ( v , li ) 316 ENV * v ; 317 DBT * li ; 319 DB_LOCK_ILOCK * lock ; 320 db_pgno_t pgno ; 321 u_t16_t gno , size ; 322 u_t32_t i , ocks ; 323 u_t8_t * fidp ; 324 * ame , * dme , * p , mebuf [26]; 325 * dp ; 327 i( li -> size == 0) 329 dp = li -> da ; 331 `GET_COUNT ( dp , ocks ); 333 i = 0; i < ocks ; i++) { 334 `GET_PCOUNT ( dp , gno ); 335 `GET_SIZE ( dp , size ); 336 lock = ( DB_LOCK_ILOCK * dp ; 337 fidp = lock -> feid ; 338 () `__dbg_g_me ( v , fidp , & ame , & dme ); 339 `tf ("\t"); 340 i( ame = NULL && dme == NULL) 341 `tf ("(%lx %lx %lx %lx %lx)", 342 ( u_lg ) fidp [0], (u_long)fidp[1], (u_long)fidp[2], 343 ( u_lg ) fidp [3], (u_long)fidp[4]); 345 i( ame ! NULL && dme != NULL) { 346 () `tf ( mebuf , (namebuf), 347 "%14s.%-10s", ame , dme ); 348 p = mebuf ; 349 } i( ame ! NULL ) 350 p = ame ; 352 p = dme ; 353 `tf ("%-25s", p ); 355 dp = (( u_t8_t *)dp+ `DB_ALIGN ( size , ( u_t32_t )); 356 `LOGCOPY_32 ( v , & pgno , & lock ->pgno); 358 `tf (" %d", pgno ); 359 i( gno != 0) 360 `GET_PGNO ( dp , pgno ); 361 } gno -- != 0); 362 `tf ("\n"); 364 } } @../lock/lock_method.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 21 $__lock_v_ ( dbv ) 22 DB_ENV * dbv ; 24 u_t32_t u ; 31 dbv -> lk_max = DB_LOCK_DEFAULT_N ; 32 dbv -> lk_max_locks = DB_LOCK_DEFAULT_N ; 33 dbv -> lk_max_objes = DB_LOCK_DEFAULT_N ; 41 u = `__os_u_cou (); 42 dbv -> lk_is = u > 1 ? 10 * cpu : 1; 45 } } 54 $__lock_v_deroy ( dbv ) 55 DB_ENV * dbv ; 57 ENV * v ; 59 v = dbv ->env; 61 i( dbv -> lk_cis ! NULL ) { 62 `__os_ ( v , dbv -> lk_cis ); 63 dbv -> lk_cis = NULL ; 65 } } 75 $__lock_g_lk_cis ( dbv , lk_ci , lk_mode ) 76 DB_ENV * dbv ; 77 cڡ u_t8_t ** lk_ci ; 78 * lk_mode ; 80 DB_LOCKTAB * ; 81 ENV * v ; 83 v = dbv ->env; 84 = v -> lk_hd ; 86 `ENV_NOT_CONFIGURED ( v , 87 v -> lk_hd , "DB_ENV->g_lk_cis", DB_INIT_LOCK ); 89 i( `LOCKING_ON ( v )) { 91 i( lk_ci ! NULL ) 92 * lk_ci = -> cis ; 93 i( lk_mode ! NULL ) 94 * lk_mode = (( DB_LOCKREGION *) 95 ( -> gfo . imy ))-> . _nmodes ; 97 i( lk_ci ! NULL ) 98 * lk_ci = dbv -> lk_cis ; 99 i( lk_mode ! NULL ) 100 * lk_mode = dbv -> lk_modes ; 103 } } 112 $__lock_t_lk_cis ( dbv , lk_cis , lk_modes ) 113 DB_ENV * dbv ; 114 u_t8_t * lk_cis ; 115 lk_modes ; 117 ENV * v ; 118 t ; 120 v = dbv ->env; 122 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lk_conflicts"); 124 i( dbv -> lk_cis ! NULL ) { 125 `__os_ ( v , dbv -> lk_cis ); 126 dbv -> lk_cis = NULL ; 128 i(( t = `__os_mloc ( v , 129 ( size_t )( lk_modes *k_modes), & dbv -> lk_cis )) != 0) 130 ( t ); 131 `memy ( 132 dbv -> lk_cis ,k_cis, ( size_t )( lk_modes *k_modes)); 133 dbv -> lk_modes =k_modes; 136 } } 142 $__lock_g_lk_de ( dbv , lk_dep ) 143 DB_ENV * dbv ; 144 u_t32_t * lk_dep ; 146 DB_LOCKTAB * ; 147 DB_THREAD_INFO * ; 148 ENV * v ; 150 v = dbv ->env; 152 `ENV_NOT_CONFIGURED ( v , 153 v -> lk_hd , "DB_ENV->g_lk_de", DB_INIT_LOCK ); 155 i( `LOCKING_ON ( v )) { 156 = v -> lk_hd ; 157 `ENV_ENTER ( v , ); 158 `LOCK_REGION_LOCK ( v ); 159 * lk_dep = (( DB_LOCKREGION *) -> gfo . imy )-> de ; 160 `LOCK_REGION_UNLOCK ( v ); 161 `ENV_LEAVE ( v , ); 163 * lk_dep = dbv -> lk_de ; 165 } } 174 $__lock_t_lk_de ( dbv , lk_de ) 175 DB_ENV * dbv ; 176 u_t32_t lk_de ; 178 DB_LOCKREGION * gi ; 179 DB_LOCKTAB * ; 180 DB_THREAD_INFO * ; 181 ENV * v ; 182 t ; 184 v = dbv ->env; 186 `ENV_NOT_CONFIGURED ( v , 187 v -> lk_hd , "DB_ENV->t_lk_de", DB_INIT_LOCK ); 189 lk_de ) { 190 DB_LOCK_DEFAULT : 191 DB_LOCK_EXPIRE : 192 DB_LOCK_MAXLOCKS : 193 DB_LOCK_MAXWRITE : 194 DB_LOCK_MINLOCKS : 195 DB_LOCK_MINWRITE : 196 DB_LOCK_OLDEST : 197 DB_LOCK_RANDOM : 198 DB_LOCK_YOUNGEST : 201 `__db_rx ( v , 203 ( EINVAL ); 206 t = 0; 207 i( `LOCKING_ON ( v )) { 208 `ENV_ENTER ( v , ); 210 = v -> lk_hd ; 211 gi = -> gfo . imy ; 212 `LOCK_REGION_LOCK ( v ); 222 i( gi -> de ! DB_LOCK_NORUN && 223 lk_de ! DB_LOCK_DEFAULT && 224 gi -> de ! lk_de ) { 225 `__db_rx ( v , 227 t = EINVAL ; 229 i( gi -> de = DB_LOCK_NORUN ) 230 gi -> de = lk_de ; 231 `LOCK_REGION_UNLOCK ( v ); 232 `ENV_LEAVE ( v , ); 234 dbv -> lk_de =k_detect; 236 ( t ); 237 } } 243 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 244 DB_ENV * dbv ; 245 u_t32_t * lk_maxp ; 247 ENV * v ; 249 v = dbv ->env; 251 `ENV_NOT_CONFIGURED ( v , 252 v -> lk_hd , "DB_ENV->g_lk_maxlocks", DB_INIT_LOCK ); 254 i( `LOCKING_ON ( v )) { 256 * lk_maxp = (( DB_LOCKREGION *) 257 v -> lk_hd -> gfo . imy )-> . _maxlocks ; 259 * lk_maxp = dbv -> lk_max ; 261 } } 270 $__lock_t_lk_max_locks ( dbv , lk_max ) 271 DB_ENV * dbv ; 272 u_t32_t lk_max ; 274 ENV * v ; 276 v = dbv ->env; 278 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lk_max_locks"); 280 dbv -> lk_max =k_max; 282 } } 288 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 289 DB_ENV * dbv ; 290 u_t32_t * lk_maxp ; 292 ENV * v ; 294 v = dbv ->env; 296 `ENV_NOT_CONFIGURED ( v , 297 v -> lk_hd , "DB_ENV->g_lk_max_locks", DB_INIT_LOCK ); 299 i( `LOCKING_ON ( v )) { 301 * lk_maxp = (( DB_LOCKREGION *) 302 v -> lk_hd -> gfo . imy )-> . _maxlocks ; 304 * lk_maxp = dbv -> lk_max_locks ; 306 } } 315 $__lock_t_lk_max_locks ( dbv , lk_max ) 316 DB_ENV * dbv ; 317 u_t32_t lk_max ; 319 ENV * v ; 321 v = dbv ->env; 323 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lk_max_lockers"); 325 dbv -> lk_max_locks = lk_max ; 327 } } 333 $__lock_g_lk_max_objes ( dbv , lk_maxp ) 334 DB_ENV * dbv ; 335 u_t32_t * lk_maxp ; 337 ENV * v ; 339 v = dbv ->env; 341 `ENV_NOT_CONFIGURED ( v , 342 v -> lk_hd , "DB_ENV->g_lk_max_objes", DB_INIT_LOCK ); 344 i( `LOCKING_ON ( v )) { 346 * lk_maxp = (( DB_LOCKREGION *) 347 v -> lk_hd -> gfo . imy )-> . _maxobjes ; 349 * lk_maxp = dbv -> lk_max_objes ; 351 } } 360 $__lock_t_lk_max_objes ( dbv , lk_max ) 361 DB_ENV * dbv ; 362 u_t32_t lk_max ; 364 ENV * v ; 366 v = dbv ->env; 368 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lk_max_objects"); 370 dbv -> lk_max_objes = lk_max ; 372 } } 377 $__lock_g_lk_is ( dbv , lk_ip ) 378 DB_ENV * dbv ; 379 u_t32_t * lk_ip ; 381 ENV * v ; 383 v = dbv ->env; 385 `ENV_NOT_CONFIGURED ( v , 386 v -> lk_hd , "DB_ENV->g_lk_is", DB_INIT_LOCK ); 388 i( `LOCKING_ON ( v )) { 390 * lk_ip = (( DB_LOCKREGION *) 391 v -> lk_hd -> gfo . imy )-> . _is ; 393 * lk_ip = dbv -> lk_is ; 395 } } 404 $__lock_t_lk_is ( dbv , lk_is ) 405 DB_ENV * dbv ; 406 u_t32_t lk_is ; 408 ENV * v ; 410 v = dbv ->env; 412 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lk_partitions"); 414 dbv -> lk_is =k_partitions; 416 } } 423 $__lock_g_v_timeout ( dbv , timeou , ag ) 424 DB_ENV * dbv ; 425 db_timeout_t * timeou ; 426 u_t32_t ag ; 428 DB_LOCKREGION * gi ; 429 DB_LOCKTAB * ; 430 DB_THREAD_INFO * ; 431 ENV * v ; 432 t ; 434 v = dbv ->env; 436 `ENV_NOT_CONFIGURED ( v , 437 v -> lk_hd , "DB_ENV->g_v_timeout", DB_INIT_LOCK ); 439 t = 0; 440 i( `LOCKING_ON ( v )) { 441 = v -> lk_hd ; 442 gi = -> gfo . imy ; 443 `ENV_ENTER ( v , ); 444 `LOCK_REGION_LOCK ( v ); 445 ag ) { 446 DB_SET_LOCK_TIMEOUT : 447 * timeou = gi -> lk_timeout ; 449 DB_SET_TXN_TIMEOUT : 450 * timeou = gi -> tx_timeout ; 453 t = 1; 456 `LOCK_REGION_UNLOCK ( v ); 457 `ENV_LEAVE ( v , ); 459 ag ) { 460 DB_SET_LOCK_TIMEOUT : 461 * timeou = dbv -> lk_timeout ; 463 DB_SET_TXN_TIMEOUT : 464 * timeou = dbv -> tx_timeout ; 467 t = 1; 471 i( t ) 472 t = `__db_ ( v , "DB_ENV->get_timeout", 0); 474 ( t ); 475 } } 484 $__lock_t_v_timeout ( dbv , timeout , ags ) 485 DB_ENV * dbv ; 486 db_timeout_t timeout ; 487 u_t32_t ags ; 489 DB_LOCKREGION * gi ; 490 DB_LOCKTAB * ; 491 DB_THREAD_INFO * ; 492 ENV * v ; 493 t ; 495 v = dbv ->env; 497 `ENV_NOT_CONFIGURED ( v , 498 v -> lk_hd , "DB_ENV->t_v_timeout", DB_INIT_LOCK ); 500 t = 0; 501 i( `LOCKING_ON ( v )) { 502 = v -> lk_hd ; 503 gi = -> gfo . imy ; 504 `ENV_ENTER ( v , ); 505 `LOCK_REGION_LOCK ( v ); 506 ags ) { 507 DB_SET_LOCK_TIMEOUT : 508 gi -> lk_timeout = timeout ; 510 DB_SET_TXN_TIMEOUT : 511 gi -> tx_timeout = timeout ; 514 t = 1; 517 `LOCK_REGION_UNLOCK ( v ); 518 `ENV_LEAVE ( v , ); 520 ags ) { 521 DB_SET_LOCK_TIMEOUT : 522 dbv -> lk_timeout = timeout ; 524 DB_SET_TXN_TIMEOUT : 525 dbv -> tx_timeout = timeout ; 528 t = 1; 532 i( t ) 533 t = `__db_ ( v , "DB_ENV->set_timeout", 0); 535 ( t ); 536 } } @../lock/lock_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 14 __lock_gi_ __P (( ENV *, DB_LOCKTAB *)); 15 size_t 16 __lock_gi_size __P (( 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_ݒ ( v , _ok ) 59 ENV * v ; 60 _ok ; 62 DB_ENV * dbv ; 63 DB_LOCKREGION * gi ; 64 DB_LOCKTAB * ; 65 size_t size ; 66 gi_locked , t ; 68 dbv = v ->dbenv; 69 gi_locked = 0; 72 i(( t = `__os_oc ( v , 1, ( DB_LOCKTAB ), & )) != 0) 73 ( t ); 74 -> v =nv; 77 -> gfo . v =nv; 78 -> gfo . ty = REGION_TYPE_LOCK ; 79 -> gfo . id = INVALID_REGION_ID ; 80 -> gfo . ags = REGION_JOIN_OK ; 81 i( _ok ) 82 `F_SET (& -> gfo , REGION_CREATE_OK ); 85 i( dbv -> lk_max_objes < dbv-> lk_is ) 86 dbv -> lk_max_objes = dbv-> lk_is ; 87 i( dbv -> lk_max < dbv-> lk_is ) 88 dbv -> lk_max = dbv-> lk_is ; 89 size = `__lock_gi_size ( v ); 90 i(( t = `__v_gi_ch ( v , & -> gfo , size )) != 0) 91 r ; 94 i( `F_ISSET (& -> gfo , REGION_CREATE )) 95 i(( t = `__lock_gi_ ( v , )) != 0) 96 r ; 99 gi = -> gfo . imy = 100 `R_ADDR (& -> gfo ,t->gfo. -> imy ); 103 -> cis = `R_ADDR (&-> gfo , gi -> cf_off ); 104 -> obj_b = `R_ADDR (&-> gfo , gi -> obj_off ); 105 #ifde HAVE_STATISTICS 106 -> obj_ = `R_ADDR (&-> gfo , gi -> _off ); 108 -> _y = `R_ADDR (&-> gfo , gi -> _off ); 109 -> lock_b = `R_ADDR (&-> gfo , gi -> lock_off ); 111 v -> lk_hd = ; 113 `LOCK_REGION_LOCK ( v ); 114 gi_locked = 1; 116 i( dbv -> lk_de ! DB_LOCK_NORUN ) { 126 i( gi -> de ! DB_LOCK_NORUN && 127 dbv -> lk_de ! DB_LOCK_DEFAULT && 128 gi -> de ! dbv -> lk_de ) { 129 `__db_rx ( v , 131 t = EINVAL ; 132 r ; 134 i( gi -> de = DB_LOCK_NORUN ) 135 gi -> de = dbv -> lk_de ; 142 i( dbv -> lk_timeout != 0) 143 gi -> lk_timeout = dbv ->lk_timeout; 144 i( dbv -> tx_timeout != 0) 145 gi -> tx_timeout = dbv ->tx_timeout; 147 `LOCK_REGION_UNLOCK ( v ); 148 gi_locked = 0; 152 r : v -> lk_hd = NULL ; 153 i( -> gfo . addr ! NULL ) { 154 i( gi_locked ) 155 `LOCK_REGION_UNLOCK ( v ); 156 () `__v_gi_dach ( v , & -> gfo , 0); 159 `__os_ ( v , ); 160 ( t ); 161 } } 168 $__lock_gi_ ( v , ) 169 ENV * v ; 170 DB_LOCKTAB * ; 172 cڡ u_t8_t * lk_cis ; 173 __db_lock * ; 174 DB_ENV * dbv ; 175 DB_LOCKER * lidp ; 176 DB_LOCKOBJ * ; 177 DB_LOCKREGION * gi ; 178 DB_LOCKPART * ; 179 u_t32_t exa_locks , exa_objes , i , j , max ; 180 u_t8_t * addr ; 181 lk_modes , t ; 183 dbv = v ->dbenv; 185 i(( t = `__v_loc (& -> gfo , 186 ( DB_LOCKREGION ), & -> gfo . imy )) != 0) 187 mem_r ; 188 -> gfo . -> imy = `R_OFFSET (<->reginfo,t->reginfo.primary); 189 gi = -> gfo . imy ; 190 `memt ( gi , 0, (*region)); 192 i(( t = `__mux_loc ( 193 v , MTX_LOCK_REGION , 0, & gi -> mtx_gi )) != 0) 194 ( t ); 197 i( dbv -> lk_modes == 0) 198 i( `CDB_LOCKING ( v )) { 199 lk_modes = DB_LOCK_CDB_N ; 200 lk_cis = db_cdb_cis ; 202 lk_modes = DB_LOCK_RIW_N ; 203 lk_cis = db_riw_cis ; 206 lk_modes = dbv ->lk_modes; 207 lk_cis = dbv ->lk_conflicts; 210 gi -> ed_dd = 0; 211 `timeecr (& gi -> xt_timeout ); 212 gi -> de = DB_LOCK_NORUN ; 213 gi -> lk_timeout = dbv ->lk_timeout; 214 gi -> tx_timeout = dbv ->tx_timeout; 215 gi -> lock_t_size = `__db_bsize ( dbv -> lk_max_locks ); 216 gi -> obje_t_size = `__db_bsize ( dbv -> lk_max_objes ); 217 gi -> _t_size = dbv -> lk_is ; 218 `memt (& gi -> , 0, (region->stat)); 219 gi -> . _id = 0; 220 gi -> . _cur_maxid = DB_LOCK_MAXID ; 221 gi -> . _maxlocks = dbv -> lk_max ; 222 gi -> . _maxlocks = dbv -> lk_max_locks ; 223 gi -> . _maxobjes = dbv -> lk_max_objes ; 224 gi -> . _is = dbv -> lk_is ; 225 gi -> . _nmodes = lk_modes ; 228 i(( t = `__v_loc ( 229 & -> gfo , ( size_t )( lk_modes *k_modes), & addr )) != 0) 230 mem_r ; 231 `memy ( addr , lk_cis , ( size_t )( lk_modes *k_modes)); 232 gi -> cf_off = `R_OFFSET (& -> gfo , addr ); 235 i(( t = `__v_loc (& -> gfo , 236 gi -> obje_t_size * ( DB_HASHTAB ), & addr )) != 0) 237 mem_r ; 238 `__db_hash ( addr , gi -> obje_t_size ); 239 gi -> obj_off = `R_OFFSET (& -> gfo , addr ); 242 i(( t = `__v_loc (& -> gfo , 243 gi -> obje_t_size * ( DB_LOCK_HSTAT ), & addr )) != 0) 244 mem_r ; 245 `memt ( addr , 0, gi -> obje_t_size * ( DB_LOCK_HSTAT )); 246 gi -> _off = `R_OFFSET (& -> gfo , addr ); 249 i(( t = `__v_loc (& -> gfo , 250 gi -> _t_size * ( DB_LOCKPART ), & )) != 0) 251 mem_r ; 252 `memt ( , 0, gi -> _t_size * ( DB_LOCKPART )); 253 gi -> _off = `R_OFFSET (& -> gfo , ); 254 i = 0; i < gi -> _t_size ; i++) { 255 i(( t = `__mux_loc ( 256 v , MTX_LOCK_REGION , 0, & [ i ]. mtx_ )) != 0) 257 ( t ); 259 i(( t = `__mux_loc ( 260 v , MTX_LOCK_REGION , 0, & gi -> mtx_dd )) != 0) 261 ( t ); 263 i(( t = `__mux_loc ( 264 v , MTX_LOCK_REGION , 0, & gi -> mtx_locks )) != 0) 265 ( t ); 268 i(( t = `__v_loc (& -> gfo , 269 gi -> lock_t_size * ( DB_HASHTAB ), & addr )) != 0) 270 mem_r ; 271 `__db_hash ( addr , gi -> lock_t_size ); 272 gi -> lock_off = `R_OFFSET (& -> gfo , addr ); 274 `SH_TAILQ_INIT (& gi -> dd_objs ); 279 exa_locks = gi -> . _maxlocks - 280 (( gi -> . _maxlocks /egi-> _t_size ) * 281 gi -> _t_size ); 282 exa_objes = gi -> . _maxobjes - 283 (( gi -> . _maxobjes /egi-> _t_size ) * 284 gi -> _t_size ); 285 j = 0; j < gi -> _t_size ; j++) { 287 `SH_TAILQ_INIT (& [ j ]. _locks ); 288 max = gi -> . _maxlocks /egi-> _t_size ; 289 i( exa_locks > 0) { 290 max ++; 291 exa_locks --; 293 i = 0; i < max ; ++i) { 294 i(( t = `__v_loc (& -> gfo , 295 ( __db_lock ), & )) != 0) 296 mem_r ; 297 -> mtx_lock = MUTEX_INVALID ; 298 -> g = 0; 299 -> us = DB_LSTAT_FREE ; 300 `SH_TAILQ_INSERT_HEAD ( 301 & [ j ]. _locks , , lks , __db_lock ); 304 max = gi -> . _maxobjes /egi-> _t_size ; 305 i( exa_objes > 0) { 306 max ++; 307 exa_objes --; 309 `SH_TAILQ_INIT (& [ j ]. _objs ); 310 i = 0; i < max ; ++i) { 311 i(( t = `__v_loc (& -> gfo , 312 ( DB_LOCKOBJ ), & )) != 0) 313 mem_r ; 314 `SH_TAILQ_INSERT_HEAD ( 315 & [ j ]. _objs , , lks , __db_lockobj ); 316 -> gi = 0; 321 `SH_TAILQ_INIT (& gi -> locks ); 322 `SH_TAILQ_INIT (& gi -> _locks ); 323 i = 0; i < gi -> . _maxlocks ; ++i) { 324 i(( t = 325 `__v_loc (& -> gfo , ( DB_LOCKER ), & lidp )) != 0) { 326 mem_r : `__db_rx ( v , 328 ( t ); 330 `SH_TAILQ_INSERT_HEAD ( 331 & gi -> _locks , lidp , lks , __db_lock ); 335 } } 344 $__lock_v_esh ( v ) 345 ENV * v ; 347 __db_lock * ; 348 DB_LOCKER * lock ; 349 DB_LOCKOBJ * lockobj ; 350 DB_LOCKREGION * ; 351 DB_LOCKTAB * ; 352 REGINFO * gfo ; 353 u_t32_t j ; 354 t ; 356 = v -> lk_hd ; 357 gfo = & ->reginfo; 358 = gfo -> imy ; 365 i( `F_ISSET ( v , ENV_PRIVATE )) { 367 `__v_loc_ ( gfo , `R_ADDR egfo, -> cf_off )); 370 `__v_loc_ ( gfo , `R_ADDR egfo, -> obj_off )); 373 `__v_loc_ ( gfo , `R_ADDR egfo, -> lock_off )); 376 `__v_loc_ ( gfo , `R_ADDR egfo, -> _off )); 378 j = 0; j < -> _t_size ; j++) { 380 ( = `SH_TAILQ_FIRST ( 381 & `FREE_LOCKS ( , j ), __db_lock )! NULL ) { 382 `SH_TAILQ_REMOVE (& `FREE_LOCKS ( , j ), 383 , lks , __db_lock ); 384 `__v_loc_ ( gfo , ); 388 ( lockobj = `SH_TAILQ_FIRST ( 389 & `FREE_OBJS ( , j ), __db_lockobj )! NULL ) { 390 `SH_TAILQ_REMOVE (& `FREE_OBJS ( , j ), 391 lockobj , lks , __db_lockobj ); 392 `__v_loc_ ( gfo , lockobj ); 397 `__v_loc_ ( gfo , `R_ADDR egfo, -> _off )); 400 ( lock = 401 `SH_TAILQ_FIRST (& -> _locks , __db_lock )! NULL ) { 402 `SH_TAILQ_REMOVE ( 403 & -> _locks , lock , lks , __db_lock ); 404 `__v_loc_ ( gfo , lock ); 409 t = `__v_gi_dach ( v , gfo , 0); 412 `__os_ ( v , ); 413 v -> lk_hd = NULL ; 415 ( t ); 416 } } 424 u_t32_t 425 $__lock_gi_mux_cou ( v ) 426 ENV * v ; 428 DB_ENV * dbv ; 430 dbv = v ->dbenv; 432 ( dbv -> lk_max + dbv-> lk_is + 3); 433 } } 439 size_t 440 $__lock_gi_size ( v ) 441 ENV * v ; 443 DB_ENV * dbv ; 444 size_t tv ; 446 dbv = v ->dbenv; 452 tv = 0; 453 tv + `__v_loc_size (( DB_LOCKREGION )); 454 tv + `__v_loc_size (( size_t )( dbv -> lk_modes * dbenv->lk_modes)); 455 tv + `__v_loc_size ( 456 `__db_bsize ( dbv -> lk_max_objes * (( DB_HASHTAB ))); 457 tv + `__v_loc_size ( 458 `__db_bsize ( dbv -> lk_max_locks * (( DB_HASHTAB ))); 459 tv + `__v_loc_size ( 460 `__db_bsize ( dbv -> lk_max_objes * (( DB_LOCK_HSTAT ))); 461 tv += 462 `__v_loc_size ( dbv -> lk_is * (( DB_LOCKPART ))); 463 tv + `__v_loc_size (( __db_lock )* dbv -> lk_max ; 464 tv + `__v_loc_size (( DB_LOCKOBJ )* dbv -> lk_max_objes ; 465 tv + `__v_loc_size (( DB_LOCKER )* dbv -> lk_max_locks ; 471 tv + `__v_loc_size ( dbv -> lk_max * 16); 474 tv +=etval / 4; 476 ( tv ); 477 } } @../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 (( ENV *, DB_MSGBUF *, DB_LOCKTAB *, DB_LOCKER *)); 20 __lock_dump_obje __P (( DB_LOCKTAB *, DB_MSGBUF *, DB_LOCKOBJ *)); 21 __lock_t_l __P (( ENV *, u_t32_t )); 22 __lock_t_s __P (( ENV *, u_t32_t )); 23 __lock_t_hd __P (( ENV *)); 24 __lock_ __P (( 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 ENV * v ; 40 t ; 42 v = dbv ->env; 44 `ENV_REQUIRES_CONFIG ( v , 45 v -> lk_hd , "DB_ENV->lock_", DB_INIT_LOCK ); 47 i(( t = `__db_fchk ( v , 48 "DB_ENV->lock_", ags , DB_STAT_CLEAR )) != 0) 49 ( t ); 51 `ENV_ENTER ( v , ); 52 `REPLICATION_WRAP ( v , ( `__lock_ nv, p , ags )), 0, t ); 53 `ENV_LEAVE ( v , ); 54 ( t ); 55 } } 62 $__lock_ ( v , p , ags ) 63 ENV * v ; 64 DB_LOCK_STAT ** p ; 65 u_t32_t ags ; 67 DB_LOCKREGION * gi ; 68 DB_LOCKTAB * ; 69 DB_LOCK_STAT * s , tmp ; 70 DB_LOCK_HSTAT htmp ; 71 DB_LOCK_PSTAT mp ; 72 t ; 73 u_t32_t i , tmp_wa , tmp_nowa ; 75 * p = NULL ; 76 = v -> lk_hd ; 78 i(( t = `__os_umloc ( v , (* s ), &stats)) != 0) 79 ( t ); 82 `LOCK_REGION_LOCK ( v ); 84 gi = -> gfo . imy ; 85 `memy ( s , & gi -> , (*stats)); 86 s -> _locktimeout = gi -> lk_timeout ; 87 s -> _tximeout = gi -> tx_timeout ; 89 i = 0; i < gi -> obje_t_size ; i++) { 90 s -> _eques + -> obj_ [ i ].st_nrequests; 91 s -> _Ės + -> obj_ [ i ].st_nreleases; 92 s -> _nupgde + -> obj_ [ i ].st_nupgrade; 93 s -> _ndowngde + -> obj_ [ i ].st_ndowngrade; 94 s -> _lock_wa + -> obj_ [ i ].st_lock_wait; 95 s -> _lock_nowa + -> obj_ [ i ].st_lock_nowait; 96 s -> _ocktimeouts + -> obj_ [ i ].st_nlocktimeouts; 97 s -> _ximeouts + -> obj_ [ i ].st_ntxntimeouts; 98 i( s -> _maxhlocks < -> obj_ [ i ]. _maxocks ) 99 s -> _maxhlocks = -> obj_ [ i ]. _maxocks ; 100 i( s -> _maxhobjes < -> obj_ [ i ]. _maxnobjes ) 101 s -> _maxhobjes = -> obj_ [ i ]. _maxnobjes ; 102 i( s -> _hash_n < -> obj_ [ i ].st_hash_len) 103 s -> _hash_n = -> obj_ [ i ].st_hash_len; 104 i( `LF_ISSET ( DB_STAT_CLEAR )) { 105 htmp = -> obj_ [ i ]; 106 `memt (& -> obj_ [ i ], 0, (lt->obj_stat[i])); 107 -> obj_ [ i ]. _ocks = htmp .st_nlocks; 108 -> obj_ [ i ]. _maxocks = htmp . _ocks ; 109 -> obj_ [ i ]. _nobjes = htmp .st_nobjects; 110 -> obj_ [ i ]. _maxnobjes = htmp . _nobjes ; 115 i = 0; i < gi -> _t_size ; i++) { 116 s -> _ocks + -> _y [ i ]. _ .st_nlocks; 117 s -> _maxocks += 118 -> _y [ i ]. _ . _maxocks ; 119 s -> _nobjes + -> _y [ i ]. _ .st_nobjects; 120 s -> _maxnobjes += 121 -> _y [ i ]. _ . _maxnobjes ; 122 s -> _lockls += 123 -> _y [ i ]. _ . _lockls ; 124 i( s -> _maxlls < 125 -> _y [ i ]. _ . _lockls ) 126 s -> _maxlls = 127 -> _y [ i ]. _ . _lockls ; 128 s -> _objels += 129 -> _y [ i ]. _ . _objels ; 130 i( s -> _maxols < 131 -> _y [ i ]. _ . _objels ) 132 s -> _maxols = 133 -> _y [ i ]. _ . _objels ; 134 `__mux_t_wa_fo ( v , 135 -> _y [ i ]. mtx_ , & tmp_wa , & tmp_nowa ); 136 s -> __nowa + tmp_nowa ; 137 s -> __wa + tmp_wa ; 138 i( tmp_wa > s -> __max_wa ) { 139 s -> __max_nowa = tmp_nowa ; 140 s -> __max_wa = tmp_wa ; 143 i( `LF_ISSET ( DB_STAT_CLEAR )) { 144 mp = -> _y [ i ]. _ ; 145 `memt (& -> _y [ i ]. _ , 146 0, ( -> _y [ i ]. _ )); 147 -> _y [ i ]. _ . _ocks = 148 mp . _ocks ; 149 -> _y [ i ]. _ . _maxocks = 150 mp . _ocks ; 151 -> _y [ i ]. _ . _nobjes = 152 mp . _nobjes ; 153 -> _y [ i ]. _ . _maxnobjes = 154 mp . _nobjes ; 158 `__mux_t_wa_fo ( v , gi -> mtx_gi , 159 & s -> _gi_wa , &s-> _gi_nowa ); 160 `__mux_t_wa_fo ( v , gi -> mtx_dd , 161 & s -> _objs_wa , &s-> _objs_nowa ); 162 `__mux_t_wa_fo ( v , gi -> mtx_locks , 163 & s -> _locks_wa , &s-> _locks_nowa ); 164 s -> _gsize = -> gfo . -> size ; 165 i( `LF_ISSET ( DB_STAT_CLEAR )) { 166 tmp = gi -> ; 167 `memt (& gi -> , 0, (region->stat)); 168 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) { 169 `__mux_r ( v , gi -> mtx_gi ); 170 `__mux_r ( v , gi -> mtx_dd ); 171 `__mux_r ( v , gi -> mtx_locks ); 172 i = 0; i < gi -> _t_size ; i++) 173 `__mux_r ( v , -> _y [ i ]. mtx_ ); 176 gi -> . _id = tmp .st_id; 177 gi -> . _cur_maxid = tmp .st_cur_maxid; 178 gi -> . _maxlocks = tmp .st_maxlocks; 179 gi -> . _maxlocks = tmp .st_maxlockers; 180 gi -> . _maxobjes = tmp .st_maxobjects; 181 gi -> . _ocks = 182 gi -> . _maxocks = tmp . _ocks ; 183 gi -> . _ocks = 184 gi -> . _maxocks = tmp . _ocks ; 185 gi -> . _nobjes = 186 gi -> . _maxnobjes = tmp . _nobjes ; 187 gi -> . _nmodes = tmp .st_nmodes; 190 `LOCK_REGION_UNLOCK ( v ); 192 * p = s ; 194 } } 203 $__lock__t_ ( dbv , ags ) 204 DB_ENV * dbv ; 205 u_t32_t ags ; 207 DB_THREAD_INFO * ; 208 ENV * v ; 209 t ; 211 v = dbv ->env; 213 `ENV_REQUIRES_CONFIG ( v , 214 v -> lk_hd , "DB_ENV->lock__t", DB_INIT_LOCK ); 216 #DB_STAT_LOCK_FLAGS \ 217 ( DB_STAT_ALL | DB_STAT_CLEAR | DB_STAT_LOCK_CONF | \ 218 DB_STAT_LOCK_LOCKERS | DB_STAT_LOCK_OBJECTS | DB_STAT_LOCK_PARAMS ) ) 219 i(( t = `__db_fchk ( v , "DB_ENV->lock_stat_print", 220 ags , DB_STAT_CLEAR | DB_STAT_LOCK_FLAGS )) != 0) 221 ( t ); 223 `ENV_ENTER ( v , ); 224 `REPLICATION_WRAP ( v , ( `__lock__t nv, ags )), 0, t ); 225 `ENV_LEAVE ( v , ); 226 ( t ); 227 } } 236 $__lock__t ( v , ags ) 237 ENV * v ; 238 u_t32_t ags ; 240 u_t32_t ig_ags ; 241 t ; 243 ig_ags = ags ; 244 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 245 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 246 t = `__lock_t_s ( v , ig_ags ); 247 i( ags =0 || t != 0) 248 ( t ); 251 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_CONF | DB_STAT_LOCK_LOCKERS | 252 DB_STAT_LOCK_OBJECTS | DB_STAT_LOCK_PARAMS ) && 253 ( t = `__lock_t_l ( v , ig_ags )) != 0) 254 ( t ); 257 } } 264 $__lock_t_s ( v , ags ) 265 ENV * v ; 266 u_t32_t ags ; 268 DB_LOCK_STAT * ; 269 t ; 271 #ifde LOCK_DIAGNOSTIC 272 DB_LOCKTAB * ; 273 DB_LOCKREGION * gi ; 274 u_t32_t i ; 275 u_t32_t wa , nowa ; 277 = v -> lk_hd ; 278 gi = -> gfo . imy ; 280 i = 0; i < gi -> obje_t_size ; i++) { 281 i( -> obj_ [ i ]. _hash_n == 0) 283 `__db_dl ( v , 284 "Hash buck", ( u_lg ) i ); 285 `__db_dl ( v , "Pti", ( u_lg ) `LOCK_PART ( gi , i )); 286 `__mux_t_wa_fo ( v , 287 -> _y [ `LOCK_PART ( gi , i )]. mtx_ , 288 & wa , & nowa ); 289 `__db_dl_p ( v , 291 ( u_lg ) wa , `DB_PCT (wa, wa + nowa ), NULL ); 292 `__db_dl ( v , 294 ( u_lg ) -> obj_ [ i ]. _hash_n ); 295 `__db_dl ( v , 297 ( u_lg ) -> obj_ [ i ]. _eques ); 298 `__db_dl ( v , 300 ( u_lg ) -> obj_ [ i ]. _Ės ); 301 `__db_dl ( v , 303 ( u_lg ) -> obj_ [ i ]. _nupgde ); 304 `__db_dl ( v , 306 ( u_lg ) -> obj_ [ i ]. _ndowngde ); 307 `__db_dl ( v , 309 ( u_lg ) -> obj_ [ i ]. _lock_wa ); 310 `__db_dl ( v , 312 ( u_lg ) -> obj_ [ i ]. _lock_nowa ); 313 `__db_dl ( v , "Number ofockshat haveimed out", 314 ( u_lg ) -> obj_ [ i ]. _ocktimeouts ); 315 `__db_dl ( v , "Number ofransactionshat haveimed out", 316 ( u_lg ) -> obj_ [ i ]. _ximeouts ); 319 i(( t = `__lock_ ( v , & , ags )) != 0) 320 ( t ); 322 i( `LF_ISSET ( DB_STAT_ALL )) 323 `__db_msg ( v , "Defaultockingegion information:"); 324 `__db_dl ( v , "Laodock ID", ( u_lg ) -> _id ); 325 `__db_msg ( v , "%#lx\tCurrent maximum unusedocker ID", 326 ( u_lg ) -> _cur_maxid ); 327 `__db_dl ( v , "Numb olock modes", ( u_lg ) -> _nmodes ); 328 `__db_dl ( v , 329 "Maximumumb olockpossib", ( u_lg ) -> _maxlocks ); 330 `__db_dl ( v , 331 "Maximumumb olockpossib", ( u_lg ) -> _maxlocks ); 332 `__db_dl ( v , "Maximumumber ofock objectsossible", 333 ( u_lg ) -> _maxobjes ); 334 `__db_dl ( v , "Number ofock objectartitions", 335 ( u_lg ) -> _is ); 336 `__db_dl ( v , "Numb oculocks", ( u_lg ) -> _ocks ); 337 `__db_dl ( v , "Maximumumber ofockstny oneime", 338 ( u_lg ) -> _maxocks ); 339 `__db_dl ( v , "Maximumumber ofocks inny one bucket", 340 ( u_lg ) -> _maxhlocks ); 341 `__db_dl ( v , "Maximumumber ofocks stolen by fornmptyartition", 342 ( u_lg ) -> _lockls ); 343 `__db_dl ( v , "Maximumumber ofocks stolen forny oneartition", 344 ( u_lg ) -> _maxlls ); 345 `__db_dl ( v , "Numb oculocks", ( u_lg ) -> _ocks ); 346 `__db_dl ( v , "Maximumumber ofockerstny oneime", 347 ( u_lg ) -> _maxocks ); 348 `__db_dl ( v , 349 "Numb oculock objes", ( u_lg ) -> _nobjes ); 350 `__db_dl ( v , "Maximumumber ofock objectstny oneime", 351 ( u_lg ) -> _maxnobjes ); 352 `__db_dl ( v , "Maximumumber ofock objects inny one bucket", 353 ( u_lg ) -> _maxhobjes ); 354 `__db_dl ( v , 356 ( u_lg ) -> _objels ); 357 `__db_dl ( v , "Maximumumber of objects stolen forny oneartition", 358 ( u_lg ) -> _maxols ); 359 `__db_dl ( v , 360 "Tٮumb olockqueed", ( u_lg ) -> _eques ); 361 `__db_dl ( v , 362 "Tٮumb olockad", ( u_lg ) -> _Ės ); 363 `__db_dl ( v , 364 "Tٮumb olockupgded", ( u_lg ) -> _nupgde ); 365 `__db_dl ( v , 366 "Tٮumb olockdowngded", ( u_lg ) -> _ndowngde ); 367 `__db_dl ( v , 369 ( u_lg ) -> _lock_wa ); 370 `__db_dl ( v , 372 ( u_lg ) -> _lock_nowa ); 373 `__db_dl ( v , "Numb oddlocks", ( u_lg ) -> _nddlocks ); 374 `__db_dl ( v , "Lockimeouvue", ( u_lg ) -> _locktimeout ); 375 `__db_dl ( v , "Number ofockshat haveimed out", 376 ( u_lg ) -> _ocktimeouts ); 377 `__db_dl ( v , 378 "Tniځimeouvue", ( u_lg ) -> _tximeout ); 379 `__db_dl ( v , "Number ofransactionshat haveimed out", 380 ( u_lg ) -> _ximeouts ); 382 `__db_dlbys ( v , "The size ofheockegion", 383 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 384 `__db_dl_p ( v , 386 ( u_lg ) -> __wa , `DB_PCT ( 387 -> __wa , sp->__wa + sp-> __nowa ), NULL ); 388 `__db_dl_p ( v , 390 ( u_lg ) -> __max_wa , `DB_PCT (sp->st_part_max_wait, 391 -> __max_wa + sp-> __max_nowa ), NULL ); 392 `__db_dl_p ( v , 394 ( u_lg ) -> _objs_wa , `DB_PCT (sp->st_objs_wait, 395 -> _objs_wa + sp-> _objs_nowa ), NULL ); 396 `__db_dl_p ( v , 398 ( u_lg ) -> _locks_wa , `DB_PCT (sp->st_lockers_wait, 399 -> _locks_wa + sp-> _locks_nowa ), NULL ); 400 `__db_dl_p ( v , 402 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 403 -> _gi_wa + sp-> _gi_nowa ), NULL ); 404 `__db_dl ( v , "Maximum hash bucketength", 405 ( u_lg ) -> _hash_n ); 407 `__os_u ( v , ); 410 } } 417 $__lock_t_l ( v , ags ) 418 ENV * v ; 419 u_t32_t ags ; 421 DB_LOCKER * l ; 422 DB_LOCKOBJ * ; 423 DB_LOCKREGION * p ; 424 DB_LOCKTAB * ; 425 DB_MSGBUF mb ; 426 i , j ; 427 u_t32_t k ; 429 = v -> lk_hd ; 430 p = -> gfo . imy ; 431 `DB_MSGBUF_INIT (& mb ); 433 `LOCK_REGION_LOCK ( v ); 434 `__db_t_gfo ( v , & -> gfo , "Lock", ags ); 436 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_PARAMS )) { 437 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 438 `__db_msg ( v , "Lockegionarameters:"); 439 `__mux_t_debug_sg ( v , 440 "Lockegiڄegi mux", p -> mtx_gi , ags ); 441 `STAT_ULONG ("lockab size", p -> lock_t_size ); 442 `STAT_ULONG ("objeab size", p -> obje_t_size ); 443 `STAT_ULONG ("obj_off", p -> obj_off ); 444 `STAT_ULONG ("lock_off", p -> lock_off ); 445 `STAT_ULONG ("ed_dd", p -> ed_dd ); 446 i( `timeecist (& p -> xt_timeout )) { 447 #ifde HAVE_STRFTIME 448 time_t t = (time_t) p -> xt_timeout . tv_c ; 449 tbuf [64]; 450 i( `rime ( tbuf , (tbuf), 451 "%m-%d-%H:%M:%S", `loime (& t )) != 0) 452 `__db_msg ( v , "next_timeout: %s.%09lu", 453 tbuf , ( u_lg ) p -> xt_timeout . tv_nc ); 456 `__db_msg ( v , "next_timeout: %lu.%09lu", 457 ( u_lg ) p -> xt_timeout . tv_c , 458 ( u_lg ) p -> xt_timeout . tv_nc ); 462 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_CONF )) { 463 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 464 `__db_msg ( v , "Lock conflict matrix:"); 465 i = 0; i < p -> . _nmodes ; i++) { 466 j = 0; j < p -> . _nmodes ; j++) 467 `__db_msgadd ( v , & mb , "%lu\t", ( u_lg ) 468 -> cis [ i * p -> . _nmodes + j ]); 469 `DB_MSGBUF_FLUSH ( v , & mb ); 472 `LOCK_REGION_UNLOCK ( v ); 474 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_LOCKERS )) { 475 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 476 `__db_msg ( v , "Locks grouped byockers:"); 477 `__lock_t_hd ( v ); 478 `LOCK_LOCKERS ( v , p ); 479 k = 0; k < p -> lock_t_size ; k++) 480 `SH_TAILQ_FOREACH ( 481 l , & -> lock_b [ k ], lks , __db_lock ) 482 () `__lock_dump_lock ( v , & mb , , l ); 483 `UNLOCK_LOCKERS ( v , p ); 486 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_LOCK_OBJECTS )) { 487 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 488 `__db_msg ( v , "Locks grouped by object:"); 489 `__lock_t_hd ( v ); 490 k = 0; k < p -> obje_t_size ; k++) { 491 `OBJECT_LOCK_NDX ( , p , k ); 492 `SH_TAILQ_FOREACH ( 493 , & -> obj_b [ k ], lks , __db_lockobj ) { 494 () `__lock_dump_obje ( , & mb , ); 495 `__db_msg ( v , "%s", ""); 497 `OBJECT_UNLOCK ( , p , k ); 502 } } 505 $__lock_dump_lock ( v , mbp , , l ) 506 ENV * v ; 507 DB_MSGBUF * mbp ; 508 DB_LOCKTAB * ; 509 DB_LOCKER * l ; 511 DB_LOCKREGION * p ; 512 __db_lock * ; 513 buf [ DB_THREADID_STRLEN ]; 514 u_t32_t ndx ; 516 p = -> gfo . imy ; 518 `__db_msgadd ( v , 519 mbp , "%8lx dd=%2ldocks held %-4d writeocks %-4did/thread %s", 520 ( u_lg ) l -> id , (-> dd_id ,-> ocks ,-> nwres , 521 v -> dbv -> `thad_id_rg nv->dbv, l -> pid ,-> tid , buf )); 522 i( `timeecist (& l -> tx_expe )) { 523 #ifde HAVE_STRFTIME 524 time_t t = (time_t) l -> tx_expe . tv_c ; 525 tbuf [64]; 526 i( `rime ( tbuf , (tbuf), 527 "%m-%d-%H:%M:%S", `loime (& t )) != 0) 528 `__db_msgadd ( v , mbp , "expires %s.%09lu", 529 tbuf , ( u_lg ) l -> tx_expe . tv_nc ); 532 `__db_msgadd ( v , mbp , "expires %lu.%09lu", 533 ( u_lg ) l -> tx_expe . tv_c , 534 ( u_lg ) l -> tx_expe . tv_nc ); 536 i( `F_ISSET ( l , DB_LOCKER_TIMEOUT )) 537 `__db_msgadd ( 538 v , mbp , "kimeou%lu", ( u_lg ) l -> lk_timeout ); 539 i( `timeecist (& l -> lk_expe )) { 540 #ifde HAVE_STRFTIME 541 time_t t = (time_t) l -> lk_expe . tv_c ; 542 tbuf [64]; 543 i( `rime ( tbuf , 544 ( tbuf ), "%m-%d-%H:%M:%S", `loime (& t )) != 0) 545 `__db_msgadd ( v , mbp , "kxpires %s.%09lu", 546 tbuf , ( u_lg ) l -> lk_expe . tv_nc ); 549 `__db_msgadd ( v , mbp , "kxpires %lu.%09lu", 550 ( u_lg ) l -> lk_expe . tv_c , 551 ( u_lg ) l -> lk_expe . tv_nc ); 553 `DB_MSGBUF_FLUSH ( v , mbp ); 559 y : `SH_LIST_FOREACH ( , & l -> hdby , lock_lks , __db_lock ) { 560 i(! `SH_LIST_EMPTY (& l -> hdby && ! NULL ) { 561 ndx = -> dx ; 562 `OBJECT_LOCK_NDX ( , p , ndx ); 563 i( -> dx = ndx ) 564 `__lock_ock ( , mbp , , 1); 566 `OBJECT_UNLOCK ( , p , ndx ); 567 y ; 569 `OBJECT_UNLOCK ( , p , ndx ); 573 } } 576 $__lock_dump_obje ( , mbp , ) 577 DB_LOCKTAB * ; 578 DB_MSGBUF * mbp ; 579 DB_LOCKOBJ * ; 581 __db_lock * ; 583 `SH_TAILQ_FOREACH ( , & -> hds , lks , __db_lock ) 584 `__lock_ock ( , mbp , , 1); 585 `SH_TAILQ_FOREACH ( , & -> was , lks , __db_lock ) 586 `__lock_ock ( , mbp , , 1); 588 } } 594 $__lock_t_hd ( v ) 595 ENV * v ; 597 `__db_msg ( v , "%-8s %-10s%-4s %-7s %s", 600 } } 609 $__lock_ock ( , mbp , , igno ) 610 DB_LOCKTAB * ; 611 DB_MSGBUF * mbp ; 612 __db_lock * ; 613 igno ; 615 DB_LOCKOBJ * lockobj ; 616 DB_MSGBUF mb ; 617 ENV * v ; 618 db_pgno_t pgno ; 619 u_t32_t * fidp , ty ; 620 u_t8_t * r ; 621 * ame , * dme , * p , mebuf [26]; 622 cڡ * mode , * us ; 624 v = ->env; 626 i( mbp = NULL ) { 627 `DB_MSGBUF_INIT (& mb ); 628 mbp = & mb ; 631 -> mode ) { 632 DB_LOCK_IREAD : 633 mode = "IREAD"; 635 DB_LOCK_IWR : 636 mode = "IWR"; 638 DB_LOCK_IWRITE : 639 mode = "IWRITE"; 641 DB_LOCK_NG : 642 mode = "NG"; 644 DB_LOCK_READ : 645 mode = "READ"; 647 DB_LOCK_READ_UNCOMMITTED : 648 mode = "READ_UNCOMMITTED"; 650 DB_LOCK_WRITE : 651 mode = "WRITE"; 653 DB_LOCK_WWRITE : 654 mode = "WAS_WRITE"; 656 DB_LOCK_WAIT : 657 mode = "WAIT"; 660 mode = "UNKNOWN"; 663 -> us ) { 664 DB_LSTAT_ABORTED : 665 us = "ABORT"; 667 DB_LSTAT_EXPIRED : 668 us = "EXPIRED"; 670 DB_LSTAT_FREE : 671 us = "FREE"; 673 DB_LSTAT_HELD : 674 us = "HELD"; 676 DB_LSTAT_PENDING : 677 us = "PENDING"; 679 DB_LSTAT_WAITING : 680 us = "WAIT"; 683 us = "UNKNOWN"; 686 `__db_msgadd ( v , mbp , "%8lx %-10s %4lu %-7s ", 687 ( u_lg )(( DB_LOCKER *) `R_ADDR (& -> gfo , -> hd ))-> id , 688 mode , ( u_lg ) -> fcou , us ); 690 lockobj = ( DB_LOCKOBJ *)(( u_t8_t *) +p-> obj ); 691 r = `SH_DBT_PTR (& lockobj ->lockobj); 692 i( igno && lockobj ->lockobj. size =( __db_ock )) { 694 `memy (& pgno , r , ( db_pgno_t )); 695 fidp = ( u_t32_t *)( r + ( db_pgno_t )); 696 ty = *( u_t32_t *)( r + ( db_pgno_t + DB_FILE_ID_LEN ); 697 () `__dbg_g_me ( 698 -> v , ( u_t8_t *) fidp , & ame , & dme ); 699 i( ame = NULL && dme == NULL) 700 `__db_msgadd ( v , mbp , "(%lx %lx %lx %lx %lx) ", 701 ( u_lg ) fidp [0], (u_long)fidp[1], (u_long)fidp[2], 702 ( u_lg ) fidp [3], (u_long)fidp[4]); 704 i( ame ! NULL && dme != NULL) { 705 () `tf ( mebuf , (namebuf), 706 "%14s:%-10s", ame , dme ); 707 p = mebuf ; 708 } i( ame ! NULL ) 709 p = ame ; 711 p = dme ; 712 `__db_msgadd ( v , mbp , "%-25", p ); 714 `__db_msgadd ( v , mbp , "%-7s %7lu", 715 ty = DB_PAGE_LOCK ? "page" : 716 ty = DB_RECORD_LOCK ? "record" : "handle", 717 ( u_lg ) pgno ); 719 `__db_msgadd ( v , mbp , "0x%lx ", 720 ( u_lg ) `R_OFFSET (& -> gfo , lockobj )); 721 `__db_bys ( v , mbp , r , lockobj ->lockobj. size ); 723 `DB_MSGBUF_FLUSH ( v , mbp ); 724 } } 729 $__lock__ ( dbv , p , ags ) 730 DB_ENV * dbv ; 731 DB_LOCK_STAT ** p ; 732 u_t32_t ags ; 734 `COMPQUIET ( p , NULL ); 735 `COMPQUIET ( ags , 0); 737 ( `__db__n_but ( dbv -> v )); 738 } } 741 $__lock__t_ ( dbv , ags ) 742 DB_ENV * dbv ; 743 u_t32_t ags ; 745 `COMPQUIET ( ags , 0); 747 ( `__db__n_but ( dbv -> v )); 748 } } @../lock/lock_stub.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 18 __db_nockg __P (( ENV *)); 25 $__db_nockg ( v ) 26 ENV * v ; 28 `__db_rx ( v , "library build didot include support forocking"); 29 ( DB_OPNOTSUP ); 30 } } 33 $__lock_v_ ( dbv ) 34 DB_ENV * dbv ; 36 `COMPQUIET ( dbv , 0); 38 } } 41 $__lock_v_deroy ( dbv ) 42 DB_ENV * dbv ; 44 `COMPQUIET ( dbv , 0); 45 } } 48 $__lock_g_lk_cis ( dbv , lk_ci , lk_mode ) 49 DB_ENV * dbv ; 50 cڡ u_t8_t ** lk_ci ; 51 * lk_mode ; 53 `COMPQUIET ( lk_ci , NULL ); 54 `COMPQUIET ( lk_mode , NULL ); 55 ( `__db_nockg ( dbv -> v )); 56 } } 59 $__lock_g_lk_de ( dbv , lk_dep ) 60 DB_ENV * dbv ; 61 u_t32_t * lk_dep ; 63 `COMPQUIET ( lk_dep , NULL ); 64 ( `__db_nockg ( dbv -> v )); 65 } } 68 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 69 DB_ENV * dbv ; 70 u_t32_t * lk_maxp ; 72 `COMPQUIET ( lk_maxp , NULL ); 73 ( `__db_nockg ( dbv -> v )); 74 } } 77 $__lock_g_lk_max_locks ( dbv , lk_maxp ) 78 DB_ENV * dbv ; 79 u_t32_t * lk_maxp ; 81 `COMPQUIET ( lk_maxp , NULL ); 82 ( `__db_nockg ( dbv -> v )); 83 } } 86 $__lock_g_lk_max_objes ( dbv , lk_maxp ) 87 DB_ENV * dbv ; 88 u_t32_t * lk_maxp ; 90 `COMPQUIET ( lk_maxp , NULL ); 91 ( `__db_nockg ( dbv -> v )); 92 } } 95 $__lock_g_lk_is ( dbv , lk_maxp ) 96 DB_ENV * dbv ; 97 u_t32_t * lk_maxp ; 99 `COMPQUIET ( lk_maxp , NULL ); 100 ( `__db_nockg ( dbv -> v )); 101 } } 104 $__lock_g_v_timeout ( dbv , timeou , ag ) 105 DB_ENV * dbv ; 106 db_timeout_t * timeou ; 107 u_t32_t ag ; 109 `COMPQUIET ( timeou , NULL ); 110 `COMPQUIET ( ag , 0); 111 ( `__db_nockg ( dbv -> v )); 112 } } 115 $__lock_de_ ( dbv , ags , y , ab܍ ) 116 DB_ENV * dbv ; 117 u_t32_t ags , y ; 118 * ab܍ ; 120 `COMPQUIET ( ags , 0); 121 `COMPQUIET ( y , 0); 122 `COMPQUIET ( ab܍ , NULL ); 123 ( `__db_nockg ( dbv -> v )); 124 } } 127 $__lock_g_ ( dbv , lock , ags , obj , lock_mode , lock ) 128 DB_ENV * dbv ; 129 u_t32_t lock , ags ; 130 cڡ DBT * obj ; 131 db_lockmode_t lock_mode ; 132 DB_LOCK * lock ; 134 `COMPQUIET ( lock , 0); 135 `COMPQUIET ( ags , 0); 136 `COMPQUIET ( obj , NULL ); 137 `COMPQUIET ( lock_mode , 0); 138 `COMPQUIET ( lock , NULL ); 139 ( `__db_nockg ( dbv -> v )); 140 } } 143 $__lock_id_ ( dbv , idp ) 144 DB_ENV * dbv ; 145 u_t32_t * idp ; 147 `COMPQUIET ( idp , NULL ); 148 ( `__db_nockg ( dbv -> v )); 149 } } 152 $__lock_id__ ( dbv , id ) 153 DB_ENV * dbv ; 154 u_t32_t id ; 156 `COMPQUIET ( id , 0); 157 ( `__db_nockg ( dbv -> v )); 158 } } 161 $__lock_put_ ( dbv , lock ) 162 DB_ENV * dbv ; 163 DB_LOCK * lock ; 165 `COMPQUIET ( lock , NULL ); 166 ( `__db_nockg ( dbv -> v )); 167 } } 170 $__lock__ ( dbv , p , ags ) 171 DB_ENV * dbv ; 172 DB_LOCK_STAT ** p ; 173 u_t32_t ags ; 175 `COMPQUIET ( p , NULL ); 176 `COMPQUIET ( ags , 0); 177 ( `__db_nockg ( dbv -> v )); 178 } } 181 $__lock__t_ ( dbv , ags ) 182 DB_ENV * dbv ; 183 u_t32_t ags ; 185 `COMPQUIET ( ags , 0); 186 ( `__db_nockg ( dbv -> v )); 187 } } 190 $__lock_vec_ ( dbv , lock , ags , li , i , ip ) 191 DB_ENV * dbv ; 192 u_t32_t lock , ags ; 193 i ; 194 DB_LOCKREQ * li , ** ip ; 196 `COMPQUIET ( lock , 0); 197 `COMPQUIET ( ags , 0); 198 `COMPQUIET ( li , NULL ); 199 `COMPQUIET ( i , 0); 200 `COMPQUIET ( ip , NULL ); 201 ( `__db_nockg ( dbv -> v )); 202 } } 205 $__lock_t_lk_cis ( dbv , lk_cis , lk_modes ) 206 DB_ENV * dbv ; 207 u_t8_t * lk_cis ; 208 lk_modes ; 210 `COMPQUIET ( lk_cis , NULL ); 211 `COMPQUIET ( lk_modes , 0); 212 ( `__db_nockg ( dbv -> v )); 213 } } 216 $__lock_t_lk_de ( dbv , lk_de ) 217 DB_ENV * dbv ; 218 u_t32_t lk_de ; 220 `COMPQUIET ( lk_de , 0); 221 ( `__db_nockg ( dbv -> v )); 222 } } 225 $__lock_t_lk_max_locks ( dbv , lk_max ) 226 DB_ENV * dbv ; 227 u_t32_t lk_max ; 229 `COMPQUIET ( lk_max , 0); 230 ( `__db_nockg ( dbv -> v )); 231 } } 234 $__lock_t_lk_max_locks ( dbv , lk_max ) 235 DB_ENV * dbv ; 236 u_t32_t lk_max ; 238 `COMPQUIET ( lk_max , 0); 239 ( `__db_nockg ( dbv -> v )); 240 } } 243 $__lock_t_lk_max_objes ( dbv , lk_max ) 244 DB_ENV * dbv ; 245 u_t32_t lk_max ; 247 `COMPQUIET ( lk_max , 0); 248 ( `__db_nockg ( dbv -> v )); 249 } } 252 $__lock_t_lk_is ( dbv , lk_max ) 253 DB_ENV * dbv ; 254 u_t32_t lk_max ; 256 `COMPQUIET ( lk_max , 0); 257 ( `__db_nockg ( dbv -> v )); 258 } } 261 $__lock_t_v_timeout ( dbv , timeout , ags ) 262 DB_ENV * dbv ; 263 db_timeout_t timeout ; 264 u_t32_t ags ; 266 `COMPQUIET ( timeout , 0); 267 `COMPQUIET ( ags , 0); 268 ( `__db_nockg ( dbv -> v )); 269 } } 272 $__lock_ݒ ( v , _ok ) 273 ENV * v ; 274 _ok ; 276 `COMPQUIET ( _ok , 0); 277 ( `__db_nockg ( v )); 278 } } 281 $__lock_id_ ( v , sh_lock ) 282 ENV * v ; 283 DB_LOCKER * sh_lock ; 285 `COMPQUIET ( v , NULL ); 286 `COMPQUIET ( sh_lock , 0); 288 } } 291 $__lock_v_esh ( v ) 292 ENV * v ; 294 `COMPQUIET ( v , NULL ); 296 } } 299 $__lock__t ( v , ags ) 300 ENV * v ; 301 u_t32_t ags ; 303 `COMPQUIET ( v , NULL ); 304 `COMPQUIET ( ags , 0); 306 } } 309 $__lock_put ( v , lock ) 310 ENV * v ; 311 DB_LOCK * lock ; 313 `COMPQUIET ( v , NULL ); 314 `COMPQUIET ( lock , NULL ); 316 } } 319 $__lock_vec ( v , sh_lock , ags , li , i , ip ) 320 ENV * v ; 321 DB_LOCKER * sh_lock ; 322 u_t32_t ags ; 323 i ; 324 DB_LOCKREQ * li , ** ip ; 326 `COMPQUIET ( v , NULL ); 327 `COMPQUIET ( sh_lock , 0); 328 `COMPQUIET ( ags , 0); 329 `COMPQUIET ( li , NULL ); 330 `COMPQUIET ( i , 0); 331 `COMPQUIET ( ip , NULL ); 333 } } 336 $__lock_g ( v , lock , ags , obj , lock_mode , lock ) 337 ENV * v ; 338 DB_LOCKER * lock ; 339 u_t32_t ags ; 340 cڡ DBT * obj ; 341 db_lockmode_t lock_mode ; 342 DB_LOCK * lock ; 344 `COMPQUIET ( v , NULL ); 345 `COMPQUIET ( lock , NULL ); 346 `COMPQUIET ( ags , 0); 347 `COMPQUIET ( obj , NULL ); 348 `COMPQUIET ( lock_mode , 0); 349 `COMPQUIET ( lock , NULL ); 351 } } 354 $__lock_id ( v , idp , lkp ) 355 ENV * v ; 356 u_t32_t * idp ; 357 DB_LOCKER ** lkp ; 359 `COMPQUIET ( v , NULL ); 360 `COMPQUIET ( idp , NULL ); 361 `COMPQUIET ( lkp , NULL ); 363 } } 366 $__lock_h_timeout ( v , , lock ) 367 ENV * v ; 368 DB_LOCKER * , * lock ; 370 `COMPQUIET ( v , NULL ); 371 `COMPQUIET ( , NULL ); 372 `COMPQUIET ( lock , NULL ); 374 } } 377 $__lock_t_timeout ( v , lock , timeout , ) 378 ENV * v ; 379 DB_LOCKER * lock ; 380 db_timeout_t timeout ; 381 u_t32_t ; 383 `COMPQUIET ( v , NULL ); 384 `COMPQUIET ( lock , NULL ); 385 `COMPQUIET ( timeout , 0); 386 `COMPQUIET ( , 0); 388 } } 391 $__lock_addmylock ( v , pid , id ) 392 ENV * v ; 393 u_t32_t pid , id ; 395 `COMPQUIET ( v , NULL ); 396 `COMPQUIET ( pid , 0); 397 `COMPQUIET ( id , 0); 399 } } 402 $__lock_mylock ( , sh_lock ) 403 DB_LOCKTAB * ; 404 DB_LOCKER * sh_lock ; 406 `COMPQUIET ( , NULL ); 407 `COMPQUIET ( sh_lock , NULL ); 409 } } 412 $__lock_downgde ( v , lock , w_mode , ags ) 413 ENV * v ; 414 DB_LOCK * lock ; 415 db_lockmode_t w_mode ; 416 u_t32_t ags ; 418 `COMPQUIET ( v , NULL ); 419 `COMPQUIET ( lock , NULL ); 420 `COMPQUIET ( w_mode , 0); 421 `COMPQUIET ( ags , 0); 423 } } 426 $__lock_lock_is_ ( v , lock , chd , ) 427 ENV * v ; 428 DB_LOCKER * lock ; 429 DB_LOCKER * chd ; 430 * ; 432 `COMPQUIET ( v , NULL ); 433 `COMPQUIET ( lock , NULL ); 434 `COMPQUIET ( chd , NULL ); 436 * = 1; 438 } } 441 $__lock_t_thad_id ( ef , pid , tid ) 442 * ef ; 443 pid_t pid ; 444 db_thadid_t tid ; 446 `COMPQUIET ( ef , NULL ); 447 `COMPQUIET ( pid , 0); 448 `COMPQUIET ( tid , 0); 449 } } 452 $__lock_chk ( v ) 453 ENV * v ; 455 `COMPQUIET ( v , NULL ); 457 } } 460 $__lock_g_li ( v , lock , ags , lock_mode , li ) 461 ENV * v ; 462 DB_LOCKER * lock ; 463 u_t32_t ags ; 464 db_lockmode_t lock_mode ; 465 DBT * li ; 467 `COMPQUIET ( v , NULL ); 468 `COMPQUIET ( lock , NULL ); 469 `COMPQUIET ( ags , 0); 470 `COMPQUIET ( lock_mode , 0); 471 `COMPQUIET ( li , NULL ); 473 } } 476 $__lock_li_t ( v , li ) 477 ENV * v ; 478 DBT * li ; 480 `COMPQUIET ( v , NULL ); 481 `COMPQUIET ( li , NULL ); 482 } } 485 $__lock_glock ( , lock , , ) 486 DB_LOCKTAB * ; 487 u_t32_t lock ; 488 ; 489 DB_LOCKER ** ; 491 `COMPQUIET ( lock , 0); 492 `COMPQUIET ( , 0); 493 `COMPQUIET ( , NULL ); 494 ( `__db_nockg ( -> v )); 495 } } 498 $__lock_id_t ( v , cur_id , max_id ) 499 ENV * v ; 500 u_t32_t cur_id , max_id ; 502 `COMPQUIET ( v , NULL ); 503 `COMPQUIET ( cur_id , 0); 504 `COMPQUIET ( max_id , 0); 506 } } @../lock/lock_timer.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/lock.h " 26 $__lock_t_timeout ( v , lock , timeout , ) 27 ENV * v ; 28 DB_LOCKER * lock ; 29 db_timeout_t timeout ; 30 u_t32_t ; 32 t ; 34 i( lock = NULL ) 36 `LOCK_REGION_LOCK ( v ); 37 t = `__lock_t_timeout_ ( v , lock , timeout , ); 38 `LOCK_REGION_UNLOCK ( v ); 39 ( t ); 40 } } 54 $__lock_t_timeout_ ( v , sh_lock , timeout , ) 55 ENV * v ; 56 DB_LOCKER * sh_lock ; 57 db_timeout_t timeout ; 58 u_t32_t ; 60 DB_LOCKREGION * gi ; 61 gi = v -> lk_hd -> gfo . imy ; 63 i( = DB_SET_TXN_TIMEOUT ) { 64 i( timeout == 0) 65 `timeecr (& sh_lock -> tx_expe ); 67 `__lock_expes ( v , & 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 ( v , & 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 ( v , , lock ) 96 ENV * v ; 97 DB_LOCKER * , * lock ; 99 t ; 101 t = 0; 102 `LOCK_REGION_LOCK ( v ); 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 ( v ); 126 ( t ); 127 } } 136 $__lock_expes ( v , timee , timeout ) 137 ENV * v ; 138 db_timeec * timee ; 139 db_timeout_t timeout ; 141 db_timeec v ; 147 i(! `timeecist ( timee )) 148 `__os_gtime ( v , timee , 1); 151 `DB_TIMEOUT_TO_TIMESPEC ( timeout , & v ); 154 `timeedd ( timee , & v ); 155 } } 163 $__lock_exped ( v , now , timee ) 164 ENV * v ; 165 db_timeec * now , * timee ; 167 i(! `timeecist ( timee )) 170 i(! `timeecist ( now )) 171 `__os_gtime ( v , now , 1); 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 ( v , s ) 90 ENV * v ; 91 cڡ * s ; 93 `__db_rx ( v , "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 (( ENV *, DB_LOG *)); 18 __log_cov __P (( DB_LOG *)); 19 size_t __log_gi_size __P (( ENV *)); 28 $__log_ݒ ( v , _ok ) 29 ENV * v ; 30 _ok ; 32 DB_ENV * dbv ; 33 DB_LOG * db ; 34 LOG * ; 35 u_t8_t * bulk ; 36 gi_locked , t ; 38 dbv = v ->dbenv; 39 gi_locked = 0; 42 i(( t = `__os_oc ( v , 1, ( DB_LOG ), & db )) != 0) 43 ( t ); 44 db -> v =nv; 47 i( dbv -> lg_bsize == 0) 48 dbv -> lg_bsize = `FLD_ISSET (dbv-> lg_ags , DB_LOG_IN_MEMORY ) ? 49 LG_BSIZE_INMEM : LG_BSIZE_DEFAULT ; 52 db -> gfo . v =nv; 53 db -> gfo . ty = REGION_TYPE_LOG ; 54 db -> gfo . id = INVALID_REGION_ID ; 55 db -> gfo . ags = REGION_JOIN_OK ; 57 i( _ok ) 58 `F_SET (& db -> gfo , REGION_CREATE_OK ); 59 i(( t = `__v_gi_ch ( 60 v , & db -> gfo , `__log_gi_size (env))) != 0) 61 r ; 64 i( `F_ISSET (& db -> gfo , REGION_CREATE )) 65 i(( t = `__log_ ( v , db )) != 0) 66 r ; 69 = db -> gfo . imy = 70 `R_ADDR (& db -> gfo , db->gfo. -> imy ); 71 db -> bu = `R_ADDR (&db-> gfo , -> bufr_off ); 77 i(( t = `__mux_loc ( v , 78 MTX_LOG_REGION , DB_MUTEX_PROCESS_ONLY , & db -> mtx_dbg )) != 0) 79 r ; 90 v -> lg_hd = db ; 92 i( `F_ISSET (& db -> gfo , REGION_CREATE )) { 99 i( -> log_size == 0) 100 -> log_size = 101 `FLD_ISSET ( dbv -> lg_ags , DB_LOG_IN_MEMORY ) ? 102 LG_MAX_INMEM : LG_MAX_DEFAULT ; 104 i(( t = `__log_cov ( db )) != 0) 105 r ; 111 i( -> log_nsize == 0) 112 -> log_nsize =p-> log_size ; 118 i( `IS_INIT_LSN ( -> l ) && 119 ( t = `__log_wfe ( db , NULL , 0, 0)) != 0) 120 r ; 129 -> ady_l =p-> l ; 130 i( `IS_ENV_REPLICATED ( v )) { 131 i(( t = 132 `__v_loc (& db -> gfo , MEGABYTE , & bulk )) != 0) 133 r ; 134 -> bulk_buf = `R_OFFSET (& db -> gfo , bulk ); 135 -> bulk_n = MEGABYTE ; 136 -> bulk_off = 0; 137 -> wa_ts = v -> p_hd -> que_g ; 138 `__os_gtime ( v , & -> rcvd_ts , 1); 140 -> bulk_buf = INVALID_ROFF ; 141 -> bulk_n = 0; 142 -> bulk_off = 0; 151 `LOG_SYSTEM_LOCK ( v ); 152 gi_locked = 1; 154 i( dbv -> lg_size != 0) { 155 i(( t = 156 `__log_check_sizes ( v , dbv -> lg_size , 0)) != 0) 157 r ; 159 -> log_nsize = dbv -> lg_size ; 162 `LOG_SYSTEM_UNLOCK ( v ); 163 gi_locked = 0; 168 r : i( db -> gfo . addr ! NULL ) { 169 i( gi_locked ) 170 `LOG_SYSTEM_UNLOCK ( v ); 171 () `__v_gi_dach ( v , & db -> gfo , 0); 173 v -> lg_hd = NULL ; 175 () `__mux_ ( v , & db -> mtx_dbg ); 176 `__os_ ( v , db ); 178 ( t ); 179 } } 186 $__log_ ( v , db ) 187 ENV * v ; 188 DB_LOG * db ; 190 DB_ENV * dbv ; 191 LOG * ; 192 t ; 193 * p ; 195 dbv = v ->dbenv; 202 i(( t = 203 `__log_check_sizes ( v , dbv -> lg_size , dbv-> lg_bsize )) != 0) 204 ( t ); 206 i(( t = `__v_loc (& db -> gfo , 207 (* ), & db -> gfo . imy )) != 0) 208 mem_r ; 209 db -> gfo . -> imy = 210 `R_OFFSET (& db -> gfo , db->gfo. imy ); 211 = db -> gfo . imy ; 212 `memt ( , 0, (*lp)); 214 i(( t = 215 `__mux_loc ( v , MTX_LOG_REGION , 0, & -> mtx_gi )) != 0) 216 ( t ); 218 -> fid_max = 0; 219 `SH_TAILQ_INIT (& -> fq ); 220 -> _fid_ack = INVALID_ROFF ; 221 -> _fids =p-> _fids_lod = 0; 224 `INIT_LSN ( -> l ); 225 `INIT_LSN ( -> t_l ); 232 `ZERO_LSN ( -> wag_l ); 239 `ZERO_LSN ( -> ched_ckp_l ); 241 i(( t = 242 `__mux_loc ( v , MTX_LOG_FILENAME , 0, & -> mtx_fi )) != 0) 243 ( t ); 244 i(( t = `__mux_loc ( v , MTX_LOG_FLUSH , 0, & -> mtx_ush )) != 0) 245 ( t ); 248 i(( t = `__v_loc (& db -> gfo , dbv -> lg_bsize , & p )) != 0) { 249 mem_r : `__db_rx v , "unableollocateogegion memory"); 250 ( t ); 252 -> gimax = dbv -> lg_gimax ; 253 -> bufr_off = `R_OFFSET (& db -> gfo , p ); 254 -> bufr_size = dbv -> lg_bsize ; 255 -> femode = dbv -> lg_femode ; 256 -> log_size =p-> log_nsize = dbv -> lg_size ; 259 `SH_TAILQ_INIT (& -> _comms ); 260 `SH_TAILQ_INIT (& -> comms ); 261 -> ncomm = 0; 264 `SH_TAILQ_INIT (& -> logfes ); 265 `SH_TAILQ_INIT (& -> _logfes ); 272 -> rsi . magic = DB_LOGMAGIC ; 276 -> rsi . vsi = DB_LOGVERSION ; 277 -> rsi . nud = 0; 278 v -> lg_hd = db ; 281 i( dbv -> lg_ags != 0 && 282 ( t = `__log_t_cfig_t ( dbv , dbv-> lg_ags , 1, 1)) != 0) 283 ( t ); 285 () `time (& -> timeamp ); 287 } } 294 $__log_cov ( db ) 295 DB_LOG * db ; 297 DBT dbt ; 298 DB_ENV * dbv ; 299 DB_LOGC * logc ; 300 DB_LSN l ; 301 ENV * v ; 302 LOG * ; 303 u_t32_t t , y ; 304 t ; 305 logfe_vidy us ; 307 v = db ->env; 308 dbv = v ->dbenv; 309 logc = NULL ; 310 = db -> gfo . imy ; 316 i(( t = `__log_fd ( db , 0, & t , & us )) != 0) 317 ( t ); 318 i( t == 0) 327 i( us = DB_LV_OLD_UNREADABLE ) { 328 -> l . fe =p-> s_l .f t + 1; 329 -> l . offt =p-> s_l .offset = 0; 330 skch ; 332 `DB_ASSERT ( v , 333 ( us = DB_LV_NORMAL || stu= DB_LV_OLD_READABLE )); 341 -> l . fe = t + 1; 342 -> l . offt = 0; 343 l . fe = t ; 344 l . offt = 0; 350 i(( t = `__log_curs ( v , & logc )) != 0) 351 ( t ); 352 `F_SET ( logc , DB_LOG_LOCKED ); 353 `memt (& dbt , 0, (dbt)); 354 i(( t = `__logc_g ( logc , & l , & dbt , DB_SET )) != 0) 355 r ; 361 `F_SET ( logc , DB_LOG_SILENT_ERR ); 362 `__logc_g ( logc , & l , & dbt , DB_NEXT ) == 0) { 363 i( dbt . size < ( u_t32_t )) 365 `LOGCOPY_32 ( v , & y , dbt . da ); 366 i( y = DB___txn_ckp ) 372 -> ched_ckp_l = l ; 374 `F_CLR ( logc , DB_LOG_SILENT_ERR ); 381 -> l =sn; 382 -> s_l = l ; 383 -> l . offt + logc -> n ; 384 -> s_l . offt + logc -> n ; 387 -> n = logc ->len; 388 -> a_off = 0; 389 -> b_off = 0; 390 -> w_off =p-> l . offt ; 392 skch : 393 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_RECOVERY )) 394 `__db_msg ( v , 396 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 398 r : i( logc ! NULL ) 399 () `__logc_o ( logc ); 401 ( t ); 402 } } 413 $__log_fd ( db , fd_f , vp , u ) 414 DB_LOG * db ; 415 fd_f ; 416 u_t32_t * vp ; 417 logfe_vidy * u ; 419 ENV * v ; 420 LOG * ; 421 logfe_vidy logv_us , us ; 422 __db_fet * fet ; 423 u_t32_t v , logv ; 424 t , ft , t ; 425 cڡ * d ; 426 * c , ** mes , * p , * q ; 428 v = db ->env; 429 = db -> gfo . imy ; 430 logv_us = us = DB_LV_NONEXISTENT ; 433 * vp = 0; 435 i( -> db_log_memy ) { 436 fet = fd_f ? 437 `SH_TAILQ_FIRST (& -> logfes , __db_fet ) : 438 `SH_TAILQ_LAST (& -> logfes , lks , __db_fet ); 439 i( fet ! NULL ) { 440 * vp = fet -> fe ; 441 logv_us = DB_LV_NORMAL ; 443 * u = logv_us ; 448 i(( t = `__log_me ( db , 1, & p , NULL , 0)) != 0) { 449 `__os_ ( v , p ); 450 ( t ); 452 i(( q = `__db_h ( p )= NULL ) 453 d = PATH_DOT ; 455 * q = '\0'; 456 d = p ; 460 i(( t = `__os_dli ( v , d , 0, & mes , & ft )) != 0) { 461 `__db_r ( v , t , "%s", d ); 462 `__os_ ( v , p ); 463 ( t ); 467 t = ft , v = logv = 0; --cnt >= 0;) { 468 i( `cmp ( mes [ t ], LFPREFIX , (LFPREFIX) - 1) != 0) 475 c = mes [ t ] + ( LFPREFIX ) - 1; *c != '\0'; c++) 476 i(! `isdig (()* c )) 478 i(* c != '\0') 485 v = ( u_t32_t ) ` ( mes [ t ] + (( LFPREFIX ) - 1)); 499 i( fd_f ) { 500 i( logv != 0 && 501 us ! DB_LV_OLD_UNREADABLE && v > logv ) 504 i( logv !0 && v <ogval) 507 i(( t = `__log_vid ( db , v , 1, NULL , 0, 508 & us , NULL )) != 0) { 509 `__db_r ( 510 v , t , "Invidog fe: %s", mes [ t ]); 511 r ; 513 us ) { 514 DB_LV_NONEXISTENT : 516 `DB_ASSERT ( v , 0); 518 DB_LV_INCOMPLETE : 530 i( fd_f ) 531 found ; 533 DB_LV_OLD_UNREADABLE : 543 i(! fd_f || logv == 0 || 544 ( us = DB_LV_OLD_UNREADABLE && v > logv )) 545 found ; 547 DB_LV_NORMAL : 548 DB_LV_OLD_READABLE : 549 found : logv = v ; 550 logv_us = us ; 555 * vp = logv ; 557 r : `__os_d ( v , mes , ft ); 558 `__os_ ( v , p ); 559 * u = logv_us ; 561 ( t ); 562 } } 576 $__log_vid ( db , numb , t_rsi , fh , ags , u , vsip ) 577 DB_LOG * db ; 578 u_t32_t numb ; 579 t_rsi ; 580 DB_FH ** fh ; 581 u_t32_t ags ; 582 logfe_vidy * u ; 583 u_t32_t * vsip ; 585 DB_CIPHER * db_ch ; 586 DB_FH * fhp ; 587 ENV * v ; 588 HDR * hdr ; 589 LOG * ; 590 LOGP * rsi ; 591 logfe_vidy us ; 592 size_t hdrsize , , csize ; 593 is_hmac , t ; 594 u_t8_t * tmp ; 595 * ame ; 597 v = db ->env; 598 db_ch = v -> yo_hd ; 599 fhp = NULL ; 600 rsi = NULL ; 601 us = DB_LV_NORMAL ; 602 tmp = NULL ; 605 i( fh ! NULL ) 606 * fh = NULL ; 608 i( ags == 0) 609 ags = DB_OSO_RDONLY | DB_OSO_SEQ ; 611 i(( t = `__log_me ( db , numb , & ame , & fhp , ags )) != 0) { 612 `__os_ ( v , ame ); 613 ( t ); 616 hdrsize = HDR_NORMAL_SZ ; 617 is_hmac = 0; 618 csize = ( LOGP ); 619 i( `CRYPTO_ON ( v )) { 620 hdrsize = HDR_CRYPTO_SZ ; 621 csize = ( LOGP ); 622 csize + db_ch -> `adj_size (recsize); 623 is_hmac = 1; 625 i(( t = `__os_oc ( v , 1, csize + hdrsize , & tmp )) != 0) 626 r ; 628 hdr = ( HDR *) tmp ; 629 rsi = ( LOGP *)( tmp + hdrsize ); 636 i(( t = `__os_ad ( v , fhp , tmp , csize + hdrsize , & )) != 0 || 637 ! csize + hdrsize || 638 ( hdr -> n =0 && rsi -> magic =0 &&si-> log_size == 0)) { 639 i( t == 0) 640 us = DB_LV_INCOMPLETE ; 646 `__db_r ( v , t , "ignܚgog fe: %s", ame ); 647 r ; 650 i( `LOG_SWAPPED ( v )) 651 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 676 i( `CRYPTO_ON ( v )) { 682 i(( hdr -> n - hdrsize !( LOGP )) { 683 `__db_rx ( v , "logecord size mismatch"); 684 r ; 687 i(( t = `__db_check_chksum ( v , hdr , db_ch , 688 & hdr -> chksum [0], ( u_t8_t *) rsi , 689 hdr -> n - hdrsize , is_hmac )) != 0) { 690 `__db_rx ( v , "logecord checksum mismatch"); 691 r ; 694 i(( t = db_ch -> `dey ( v , db_ch-> da , 695 & hdr -> iv [0], ( u_t8_t *) rsi , hdr-> n - hdrsize )) != 0) 696 r ; 699 i( `LOG_SWAPPED ( v )) 700 `__log_rsisw ( rsi ); 703 i( rsi -> magic ! DB_LOGMAGIC ) { 704 `__db_rx ( v , 706 ame , ( u_lg ) rsi -> magic , (u_lg) DB_LOGMAGIC ); 707 t = EINVAL ; 708 r ; 716 i( rsi -> vsi > DB_LOGVERSION ) { 718 `__db_rx ( v , 720 ame , ( u_lg ) rsi -> vsi ); 721 t = EINVAL ; 722 r ; 723 } i( rsi -> vsi < DB_LOGOLDVER ) { 724 us = DB_LV_OLD_UNREADABLE ; 726 `__db_rx ( v , 728 ame , ( u_lg ) rsi -> vsi ); 733 r ; 734 } i( rsi -> vsi < DB_LOGVERSION ) 735 us = DB_LV_OLD_READABLE ; 744 i(! `CRYPTO_ON ( v )) { 745 i( `LOG_SWAPPED ( v )) 746 `__log_rsisw ( rsi ); 748 i(( t = `__db_check_chksum ( v , 749 hdr , db_ch , &hdr-> chksum [0], ( u_t8_t *) rsi , 750 hdr -> n - hdrsize , is_hmac )) != 0) { 751 `__db_rx ( v , "logecord checksum mismatch"); 752 r ; 755 i( `LOG_SWAPPED ( v )) 756 `__log_rsisw ( rsi ); 765 i( t_rsi ) { 766 = db -> gfo . imy ; 767 -> log_size = rsi ->log_size; 768 -> rsi . vsi =ersist->version; 770 i( vsip ! NULL ) 771 * vsip = rsi -> vsi ; 773 r : i( ame ! NULL ) 774 `__os_ ( v , ame ); 775 i( t =0 && fh ! NULL ) 776 * fh = fhp ; 779 () `__os_ohd ( v , fhp ); 780 i( tmp ! NULL ) 781 `__os_ ( v , tmp ); 783 i( u ! NULL ) 784 * u = us ; 786 ( t ); 787 } } 796 $__log_v_esh ( v ) 797 ENV * v ; 799 DB_LOG * db ; 800 LOG * ; 801 REGINFO * gfo ; 802 __ame * p ; 803 __db_comm * comm ; 804 __db_fet * fet ; 805 t , t_t ; 807 db = v -> lg_hd ; 808 gfo = & db ->reginfo; 809 = gfo -> imy ; 810 t = 0; 817 i( `F_ISSET ( v , ENV_PRIVATE ) && 818 ( t_t = `__log_ush ( v , NULL )!0 && t == 0) 819 t = t_t ; 822 i(( t_t = `__dbg_o_fes ( v , 0)!0 && t == 0) 823 t = t_t ; 831 `MUTEX_LOCK ( v , -> mtx_fi ); 832 `SH_TAILQ_FOREACH ( p , & -> fq , q , __ame ) 833 i( `F_ISSET ( p , DB_FNAME_NOTLOGGED ) && 834 ( t_t = `__dbg_o_id_t ( 835 v , p , DBREG_CLOSE , 1)) != 0) 836 t = t_t ; 837 `MUTEX_UNLOCK ( v , -> mtx_fi ); 844 i( `F_ISSET ( v , ENV_PRIVATE )) { 846 i(( t_t = 847 `__mux_ ( v , & -> mtx_ush )!0 && t == 0) 848 t = t_t ; 851 `__v_loc_ ( gfo , `R_ADDR egfo, -> bufr_off )); 854 i( -> _fid_ack ! INVALID_ROFF ) 855 `__v_loc_ ( gfo , 856 `R_ADDR ( gfo , -> _fid_ack )); 859 ( fet = `SH_TAILQ_FIRST (& -> logfes , 860 __db_fet )! NULL ) { 861 `SH_TAILQ_REMOVE (& -> logfes , fet , lks , 862 __db_fet ); 863 `__v_loc_ ( gfo , fet ); 866 ( fet = `SH_TAILQ_FIRST (& -> _logfes , 867 __db_fet )! NULL ) { 868 `SH_TAILQ_REMOVE (& -> _logfes , fet , lks , 869 __db_fet ); 870 `__v_loc_ ( gfo , fet ); 874 ( comm = `SH_TAILQ_FIRST (& -> _comms , 875 __db_comm )! NULL ) { 876 `SH_TAILQ_REMOVE (& -> _comms , comm , lks , 877 __db_comm ); 878 `__v_loc_ ( gfo , comm ); 882 i( -> bulk_buf ! INVALID_ROFF ) { 883 `__v_loc_ ( gfo , 884 `R_ADDR ( gfo , -> bulk_buf )); 885 -> bulk_buf = INVALID_ROFF ; 890 i(( t_t = `__mux_ ( v , & db -> mtx_dbg )!0 && t == 0) 891 t = t_t ; 894 i(( t_t = `__v_gi_dach ( v , gfo , 0)!0 && t == 0) 895 t = t_t ; 898 i( db -> lfhp ! NULL ) { 899 i(( t_t = 900 `__os_ohd ( v , db -> lfhp )!0 && t == 0) 901 t = t_t ; 902 db -> lfhp = NULL ; 904 i( db -> dby ! NULL ) 905 `__os_ ( v , db -> dby ); 907 `__os_ ( v , db ); 909 v -> lg_hd = NULL ; 910 ( t ); 911 } } 920 $__log_g_ched_ckp_l ( v , ckp_lp ) 921 ENV * v ; 922 DB_LSN * ckp_lp ; 924 DB_LOG * db ; 925 LOG * ; 927 db = v -> lg_hd ; 928 = ( LOG *) db -> gfo . imy ; 930 `LOG_SYSTEM_LOCK ( v ); 931 * ckp_lp = -> ched_ckp_l ; 932 `LOG_SYSTEM_UNLOCK ( v ); 935 } } 943 u_t32_t 944 $__log_gi_mux_cou ( v ) 945 ENV * v ; 952 ( v -> dbv -> tx_max + 5); 953 } } 963 size_t 964 $__log_gi_size ( v ) 965 ENV * v ; 967 DB_ENV * dbv ; 968 size_t s ; 970 dbv = v ->dbenv; 972 s = dbv -> lg_gimax + dbv-> lg_bsize ; 978 i( `IS_ENV_REPLICATED ( v )) 979 s + MEGABYTE ; 981 ( s ); 982 } } 995 $__log_vun ( v , l , ck , un ) 996 ENV * v ; 997 DB_LSN * l , * ck , * un ; 999 DBT log_dbt ; 1000 DB_LOG * db ; 1001 DB_LOGC * logc ; 1002 LOG * ; 1003 u_t32_t bys , n ; 1004 t , t_t ; 1007 i(( t = `__log_curs ( v , & logc )) != 0) 1008 ( t ); 1009 `memt (& log_dbt , 0, (log_dbt)); 1010 t = `__logc_g ( logc , l , & log_dbt , DB_SET ); 1011 n = logc ->len; 1012 i(( t_t = `__logc_o ( logc )!0 && t == 0) 1013 t = t_t ; 1014 i( t != 0) 1015 ( t ); 1018 db = v -> lg_hd ; 1019 = ( LOG *) db -> gfo . imy ; 1021 `LOG_SYSTEM_LOCK ( v ); 1027 i(( t = `__log_ush_t ( db , NULL , 0)) != 0) 1028 r ; 1030 -> l = *lsn; 1031 -> n =en; 1032 -> l . offt +-> n ; 1034 i( -> db_log_memy && 1035 ( t = `__log_mem_loff ( db , & -> l , &-> b_off )) != 0) 1036 r ; 1042 `DB_ASSERT ( v , -> l . fe > ck ->file); 1043 bys = 0; 1044 i( ck -> fe ! -> l .file) { 1045 bys = -> log_size - ck -> offt ; 1046 i( -> l . fe > ck ->file + 1) 1047 bys + -> log_size * 1048 (( -> l . fe - ck ->file) - 1); 1049 bys + -> l . offt ; 1051 bys = -> l . offt - ck ->offset; 1053 -> . _wc_mbys + bys / MEGABYTE ; 1054 -> . _wc_bys + bys % MEGABYTE ; 1060 `MUTEX_LOCK ( v , -> mtx_ush ); 1061 i( `LOG_COMPARE (& -> s_l , l ) > 0) 1062 -> s_l =p-> l ; 1063 `MUTEX_UNLOCK ( v , -> mtx_ush ); 1066 `ZERO_LSN ( -> f_l ); 1067 -> w_off =p-> l . offt ; 1069 i( un ! NULL ) 1070 * un = -> l ; 1073 i(( t = `__log_zo ( v , & -> l )) != 0) 1074 r ; 1076 r : `LOG_SYSTEM_UNLOCK ( v ); 1077 ( t ); 1078 } } 1088 $__log_is_outded ( v , um , outdedp ) 1089 ENV * v ; 1090 u_t32_t um ; 1091 * outdedp ; 1093 DB_LOG * db ; 1094 LOG * ; 1095 * me ; 1096 t ; 1097 u_t32_t cfe ; 1098 __db_fet * fet ; 1100 db = v -> lg_hd ; 1107 i( `FLD_ISSET ( v -> dbv -> lg_ags , DB_LOG_IN_MEMORY )) { 1108 `LOG_SYSTEM_LOCK ( v ); 1109 = ( LOG *) db -> gfo . imy ; 1110 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1111 * outdedp = fet = NULL ? 0 : ( um < fet-> fe ); 1112 `LOG_SYSTEM_UNLOCK ( v ); 1116 * outdedp = 0; 1117 i(( t = `__log_me ( db , um , & me , NULL , 0)) != 0) { 1118 `__os_ ( v , me ); 1119 ( t ); 1123 i( `__os_exis ( v , me , NULL ) == 0) 1124 out ; 1131 `LOG_SYSTEM_LOCK ( v ); 1132 = ( LOG *) db -> gfo . imy ; 1133 cfe = -> l . fe ; 1134 `LOG_SYSTEM_UNLOCK ( v ); 1136 i( cfe > um ) 1137 * outdedp = 1; 1138 out : `__os_ ( v , me ); 1139 ( t ); 1140 } } 1149 $__log_zo ( v , om_l ) 1150 ENV * v ; 1151 DB_LSN * om_l ; 1153 DB_FH * fhp ; 1154 DB_LOG * db ; 1155 LOG * ; 1156 __db_fet * fet , * xtt ; 1157 size_t nbys , n , nw ; 1158 u_t32_t , mbys , bys ; 1159 u_t8_t buf [4096]; 1160 t ; 1161 * ame ; 1163 db = v -> lg_hd ; 1164 = ( LOG *) db -> gfo . imy ; 1165 `DB_ASSERT ( v , `LOG_COMPARE ( om_l , & -> l ) <= 0); 1166 i( `LOG_COMPARE ( om_l , & -> l ) > 0) { 1167 `__db_rx ( v , 1172 i( -> db_log_memy ) { 1176 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1177 fet ! NULL ; fe xtt ) { 1178 xtt = `SH_TAILQ_NEXT ( fet , 1179 lks , __db_fet ); 1180 i( fet -> fe > om_l ->file) { 1181 `SH_TAILQ_REMOVE (& -> logfes , 1182 fet , lks , __db_fet ); 1183 `SH_TAILQ_INSERT_HEAD (& -> _logfes , 1184 fet , lks , __db_fet ); 1192 i( db -> lfhp ! NULL ) { 1193 () `__os_ohd ( v , db -> lfhp ); 1194 db -> lfhp = NULL ; 1198 = om_l -> fe + 1;; fn++) { 1199 i( `__log_me ( db , , & ame , & fhp , DB_OSO_RDONLY ) != 0) { 1200 `__os_ ( v , ame ); 1203 () `__os_ohd ( v , fhp ); 1204 () `time (& -> timeamp ); 1205 t = `__os_uƚk ( v , ame , 0); 1206 `__os_ ( v , ame ); 1207 i( t != 0) 1208 ( t ); 1212 i(( t = 1213 `__log_me ( db , om_l -> fe , & ame , &db-> lfhp , 0)) != 0) { 1214 `__os_ ( v , ame ); 1215 ( t ); 1217 `__os_ ( v , ame ); 1218 i(( t = `__os_iofo ( v , 1219 NULL , db -> lfhp , & mbys , & bys , NULL)) != 0) 1220 r ; 1221 `DB_ASSERT ( v , ( mbys * MEGABYTE + bys > om_l -> offt ); 1222 n = ( mbys * MEGABYTE + bys - om_l -> offt ; 1224 `memt ( buf , 0, (buf)); 1227 i(( t = `__os_ek ( v , db -> lfhp , 0, 0, om_l -> offt )) != 0) 1228 r ; 1230 n > 0) { 1231 nbys = n > ( buf ) ? (buf) :en; 1232 i(( t = 1233 `__os_wre ( v , db -> lfhp , buf , nbys , & nw )) != 0) 1234 r ; 1235 n - nbys ; 1238 r : () `__os_ohd ( v , db -> lfhp ); 1239 db -> lfhp = NULL ; 1241 ( t ); 1242 } } 1251 $__log_mem_loff ( db , lp , off ) 1252 DB_LOG * db ; 1253 DB_LSN * lp ; 1254 size_t * off ; 1256 LOG * ; 1257 __db_fet * fet ; 1259 = ( LOG *) db -> gfo . imy ; 1261 `SH_TAILQ_FOREACH ( fet , & -> logfes , lks , __db_fet ) 1262 i( fet -> fe = lp ->file) { 1263 * off = 1264 ( fet -> b_off + lp -> offt % -> bufr_size ; 1268 ( DB_NOTFOUND ); 1269 } } 1279 $__log_mem_wfe ( db , fe ) 1280 DB_LOG * db ; 1281 u_t32_t fe ; 1283 HDR hdr ; 1284 LOG * ; 1285 __db_fet * fet ; 1286 t ; 1287 #ifde DIAGNOSTIC 1288 __db_fet * f , * ϡ ; 1291 = ( LOG *) db -> gfo . imy ; 1296 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1297 i( fet ! NULL && 1298 `RINGBUF_LEN ( , fet -> b_off ,p->b_off) <= 1299 ( HDR + ( LOGP )) { 1300 fet -> fe = file; 1301 fet -> b_off = ->b_off; 1310 i( fe > 1) { 1311 `memt (& hdr , 0, ( HDR )); 1312 `__log_mem_cy ( db , -> b_off , & hdr , ( HDR )); 1313 -> b_off = (->b_of+ ( HDR )%p-> bufr_size ; 1316 fet = `SH_TAILQ_FIRST (& -> _logfes , __db_fet ); 1317 i( fet = NULL ) { 1318 i(( t = `__v_loc (& db -> gfo , 1319 ( __db_fet ), & fet )) != 0) 1320 ( t ); 1321 `memt ( fet , 0, (*filestart)); 1323 `SH_TAILQ_REMOVE (& -> _logfes , fet , 1324 lks , __db_fet ); 1326 fet -> fe = file; 1327 fet -> b_off = ->b_off; 1329 #ifde DIAGNOSTIC 1330 f = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1331 ϡ = `SH_TAILQ_LAST (&( )-> logfes , lks , __db_fet ); 1334 `DB_ASSERT ( db -> v , ! f || f = ϡ || 1335 `RINGBUF_LEN ( , f -> b_off ,p->b_off) == 1336 `RINGBUF_LEN ( , f -> b_off , ϡ ->b_off) + 1337 `RINGBUF_LEN ( , ϡ -> b_off ,p->b_off)); 1340 `SH_TAILQ_INSERT_TAIL (& -> logfes , fet , lks ); 1342 } } 1353 $__log_mem_chka ( db , n ) 1354 DB_LOG * db ; 1355 size_t n ; 1357 DB_LSN aive_l , d_aive_l ; 1358 ENV * v ; 1359 LOG * ; 1360 __db_fet * fet ; 1361 t ; 1363 v = db ->env; 1364 = db -> gfo . imy ; 1366 `DB_ASSERT ( v , -> db_log_memy ); 1372 n +( HDR ); 1380 `TXN_ON ( v ) && 1381 `RINGBUF_LEN ( ,p-> b_off ,p-> a_off < n ) { 1382 d_aive_l = -> aive_l ; 1383 aive_l = -> l ; 1389 `LOG_SYSTEM_UNLOCK ( v ); 1390 t = `__txn_gaive ( v , & aive_l ); 1391 `LOG_SYSTEM_LOCK ( v ); 1392 i( t != 0) 1393 ( t ); 1394 aive_l . offt = 0; 1397 i( `LOG_COMPARE (& aive_l , & d_aive_l ) == 0) { 1398 `__db_rx ( v , 1400 ( DB_LOG_BUFFER_FULL ); 1404 i( `LOG_COMPARE (& aive_l , & ->active_lsn) > 0) { 1405 -> aive_l =ctive_lsn; 1406 () `__log_mem_loff ( db , & aive_l , 1407 & -> a_off ); 1416 fet = `SH_TAILQ_FIRST (& -> logfes , __db_fet ); 1417 i( fet ! NULL && 1418 `RINGBUF_LEN ( ,p-> b_off , fet ->b_off< n ) { 1419 `SH_TAILQ_REMOVE (& -> logfes , fet , 1420 lks , __db_fet ); 1421 `SH_TAILQ_INSERT_HEAD (& -> _logfes , fet , 1422 lks , __db_fet ); 1423 -> f_l . fe = fet ->file + 1; 1427 } } 1437 $__log_mem_cyout ( db , offt , buf , size ) 1438 DB_LOG * db ; 1439 size_t offt ; 1440 * buf ; 1441 size_t size ; 1443 LOG * ; 1444 size_t nbys ; 1446 = ( LOG *) db -> gfo . imy ; 1447 nbys = ( offt + size < -> bufr_size ) ? 1448 size : -> bufr_size - offt ; 1449 `memy ( buf , db -> bu + offt , nbys ); 1450 i( nbys < size ) 1451 `memy (( u_t8_t *) buf + nbys , db -> bu , size -bytes); 1452 } } 1462 $__log_mem_cy ( db , offt , buf , size ) 1463 DB_LOG * db ; 1464 size_t offt ; 1465 * buf ; 1466 size_t size ; 1468 LOG * ; 1469 size_t nbys ; 1471 = ( LOG *) db -> gfo . imy ; 1472 nbys = ( offt + size < -> bufr_size ) ? 1473 size : -> bufr_size - offt ; 1474 `memy ( db -> bu + offt , buf , nbys ); 1475 i( nbys < size ) 1476 `memy ( db -> bu , ( u_t8_t *) buf + nbys , size -bytes); 1477 } } 1489 $__log_t_vsi ( v , wv ) 1490 ENV * v ; 1491 u_t32_t wv ; 1493 DB_LOG * db ; 1494 LOG * ; 1496 db = v -> lg_hd ; 1497 = ( LOG *) db -> gfo . imy ; 1501 -> rsi . vsi = wv ; 1502 } } 1517 $__log_g_dvsi ( v , v ) 1518 ENV * v ; 1519 u_t32_t * v ; 1521 DBT c ; 1522 DB_LOG * db ; 1523 DB_LOGC * logc ; 1524 DB_LSN l ; 1525 LOG * ; 1526 u_t32_t fum , um , ϡv , dv ; 1527 t , t_t ; 1529 db = v -> lg_hd ; 1530 = db -> gfo . imy ; 1532 logc = NULL ; 1533 t = 0; 1534 dv = DB_LOGVERSION ; 1538 i( -> db_log_memy ) { 1539 * v = dv ; 1542 `memt (& c , 0, (rec)); 1543 i(( t = `__log_curs ( v , & logc )) != 0) 1544 r ; 1548 i(( t = `__logc_g ( logc , & l , & c , DB_FIRST )) != 0) { 1553 i( t = DB_NOTFOUND ) 1554 t = 0; 1555 r ; 1557 fum = l . fe ; 1558 i(( t = `__logc_g ( logc , & l , & c , DB_LAST )) != 0) 1559 r ; 1560 i(( t = `__log_vid ( db , fum , 0, NULL , 0, 1561 NULL , & dv )) != 0) 1562 r ; 1567 i( fum = l . fe ) 1568 r ; 1574 i(( t = `__log_vid ( db , l . fe , 0, NULL , 0, 1575 NULL , & ϡv )) != 0) 1576 r ; 1582 i( dv ! ϡv ) { 1583 um = l . fe - 1; fnum > fum ; fnum--) { 1584 i(( t = `__log_vid ( db , um , 0, NULL , 0, 1585 NULL , & dv )) != 0) 1586 r ; 1587 i( dv ! ϡv ) 1591 r : i( logc ! NULL && (( t_t = `__logc_o ogc)!0&& t == 0) 1592 t = t_t ; 1593 i( t =0 && v ! NULL ) 1594 * v = dv ; 1595 ( t ); 1596 } } @../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 (( ENV *, *, *, **)); 18 __bud_da __P (( ENV *, *, ***)); 19 __cmpfunc __P ((const *, const *)); 20 __log_chive __P (( ENV *, **[], u_t32_t )); 21 __urmem __P (( ENV *, ***)); 30 $__log_chive_ ( dbv , lip , ags ) 31 DB_ENV * dbv ; 32 *** lip ; 33 u_t32_t ags ; 35 DB_THREAD_INFO * ; 36 ENV * v ; 37 t ; 39 v = dbv ->env; 41 `ENV_REQUIRES_CONFIG ( v , 42 v -> lg_hd , "DB_ENV->log_chive", DB_INIT_LOG ); 44 #OKFLAGS ( DB_ARCH_ABS | DB_ARCH_DATA | DB_ARCH_LOG | DB_ARCH_REMOVE ) ) 45 i( ags != 0) { 46 i(( t = `__db_fchk ( 47 v , "DB_ENV->log_chive", ags , OKFLAGS )) != 0) 48 ( t ); 49 i(( t = `__db_fcchk ( v , "DB_ENV->log_archive", 50 ags , DB_ARCH_DATA , DB_ARCH_LOG )) != 0) 51 ( t ); 52 i(( t = `__db_fcchk ( v , "DB_ENV->log_archive", 53 ags , DB_ARCH_REMOVE , 54 DB_ARCH_ABS | DB_ARCH_DATA | DB_ARCH_LOG )) != 0) 55 ( t ); 58 `ENV_ENTER ( v , ); 59 `REPLICATION_WRAP ( v , ( `__log_chive nv, lip , ags )), 0, t ); 60 `ENV_LEAVE ( v , ); 61 ( t ); 62 } } 69 $__log_chive ( v , lip , ags ) 70 ENV * v ; 71 *** lip ; 72 u_t32_t ags ; 74 DBT c ; 75 DB_LOG * db ; 76 DB_LOGC * logc ; 77 DB_LSN ab_l ; 78 LOG * ; 79 u_t y_size , n ; 80 u_t32_t um ; 81 t , t_t ; 82 ** y , ** yp , * me , * p , * ef ; 83 #ifde HAVE_GETCWD 84 th [ DB_MAXPATHLEN ]; 87 db = v -> lg_hd ; 88 = ( LOG *) db -> gfo . imy ; 89 y = NULL ; 90 me = NULL ; 91 t = 0; 92 `COMPQUIET ( um , 0); 94 i( ags ! DB_ARCH_REMOVE ) 95 * lip = NULL ; 98 i( -> db_log_memy ) { 99 `LF_CLR (~ DB_ARCH_DATA ); 100 i( ags == 0) 108 i(! `LF_ISSET ( DB_ARCH_DATA ) && 109 ! `LF_ISSET ( DB_ARCH_LOG && `__p_nrchive ( v )) 116 #ifde HAVE_GETCWD 117 i( `LF_ISSET ( DB_ARCH_ABS )) { 126 `__os_t_o (0); 127 i( `gcwd ( th , թh)= NULL ) { 128 t = `__os_g_o (); 129 `__db_r ( v , 130 t , "nobsoluteath forhe current directory"); 131 ( t ); 133 ef = th ; 136 ef = NULL ; 138 `LF_CLR ( DB_ARCH_ABS ); 139 ags ) { 140 DB_ARCH_DATA : 141 t = `__bud_da ( v , ef , lip ); 142 r ; 143 DB_ARCH_LOG : 144 `memt (& c , 0, (rec)); 145 i(( t = `__log_curs ( v , & logc )) != 0) 146 r ; 147 #ifde UMRW 148 `ZERO_LSN ( ab_l ); 150 t = `__logc_g ( logc , & ab_l , & c , DB_LAST ); 151 i(( t_t = `__logc_o ( logc )!0 && t == 0) 152 t = t_t ; 153 i( t != 0) 154 r ; 155 um = ab_l . fe ; 157 DB_ARCH_REMOVE : 158 `__log_autemove ( v ); 159 r ; 162 t = `__log_g_ab_l ( v , & ab_l ); 168 i( t != 0) { 169 i( t = DB_NOTFOUND ) 170 t = 0; 171 r ; 174 um = ab_l . fe - 1; 177 t = `__db_unknown_th ( v , "__log_archive"); 178 r ; 181 #LIST_INCREMENT 64 ) 183 y_size = 64; 184 i(( t = `__os_mloc ( v , 185 (** y_size , & y )) != 0) 186 r ; 187 y [0] = NULL ; 190 n = 0; um > 0; --fnum) { 191 i(( t = `__log_me ( db , um , & me , NULL , 0)) != 0) { 192 `__os_ ( v , me ); 193 r ; 195 i( `__os_exis ( v , me , NULL ) != 0) { 196 i( `LF_ISSET ( DB_ARCH_LOG && um = ab_l . fe ) 198 `__os_ ( v , me ); 199 me = NULL ; 203 i( n > y_size - 2) { 204 y_size + LIST_INCREMENT ; 205 i(( t = `__os_loc ( v , 206 (** y_size , & y )) != 0) 207 r ; 210 i( ef ! NULL ) { 211 i(( t = 212 `__abame ( v , ef , me , & y [ n ])) != 0) 213 r ; 214 `__os_ ( v , me ); 215 } i(( p = `__db_h ( me )! NULL ) { 216 i(( t = `__os_rdup ( v , p + 1, & y [ n ])) != 0) 217 r ; 218 `__os_ ( v , me ); 220 y [ n ] = me ; 222 me = NULL ; 223 y [++ n ] = NULL ; 227 i( n == 0) 228 r ; 231 `qst ( y , ( size_t ) n , (*), __cmpfunc ); 234 i(( t = `__urmem ( v , & y )) != 0) 235 r ; 237 i( lip ! NULL ) 238 * lip = y ; 241 r : i( y ! NULL ) { 242 yp = y ; *y! NULL ; ++arrayp) 243 `__os_ ( v , * yp ); 244 `__os_ ( v , y ); 246 i( me ! NULL ) 247 `__os_ ( v , me ); 250 ( t ); 251 } } 260 $__log_g_ab_l ( v , ab_l ) 261 ENV * v ; 262 DB_LSN * ab_l ; 264 DBT c ; 265 DB_LOGC * logc ; 266 LOG * ; 267 __txn_ckp_gs * ckp_gs ; 268 t , t_t ; 270 = v -> lg_hd -> gfo . imy ; 272 t = 0; 273 `memt (& c , 0, (rec)); 274 i(! `TXN_ON ( v )) { 275 i(( t = `__log_g_ched_ckp_l ( v , ab_l )) != 0) 276 r ; 283 i( `IS_ZERO_LSN (* ab_l && ( t = 284 `__txn_fdϡckp ( v , ab_l , NULL )) != 0) 285 r ; 290 i( `IS_ZERO_LSN (* ab_l )) { 291 t = DB_NOTFOUND ; 292 r ; 294 } i(( t = `__txn_gckp ( v , ab_l )) != 0) 295 r ; 296 i(( t = `__log_curs ( v , & logc )) != 0) 297 r ; 302 ( t = `__logc_g ( logc , ab_l , & c , DB_SET )) == 0 && 303 ( t = `__txn_ckp_ad ( v , c . da , & ckp_gs )) == 0) { 304 i( ab_l -> fe < -> s_l .file || 305 ( ab_l -> fe = -> s_l .file && 306 ab_l -> offt < -> s_l .offset)) { 307 * ab_l = ckp_gs -> ckp_l ; 308 `__os_ ( v , ckp_gs ); 311 * ab_l = ckp_gs -> ϡ_ckp ; 312 `__os_ ( v , ckp_gs ); 314 i(( t_t = `__logc_o ( logc )!0 && t == 0) 315 t = t_t ; 316 r : 317 ( t ); 318 } } 327 $__log_autemove ( v ) 328 ENV * v ; 330 t ; 331 ** beg , ** li ; 339 i(( t = `__log_chive ( v , & li , DB_ARCH_ABS )) != 0) { 340 i( t ! DB_NOTFOUND ) 341 `__db_r ( v , t , "log fileuto-remove"); 346 i( li ! NULL ) { 347 beg = li ; *li ! NULL ; ++list) 348 () `__os_uƚk ( v , * li , 0); 349 `__os_u ( v , beg ); 351 } } 358 $__bud_da ( v , ef , lip ) 359 ENV * v ; 360 * ef , *** lip ; 362 DBT c ; 363 DB_LOGC * logc ; 364 DB_LSN l ; 365 __dbg_gi_gs * gp ; 366 u_t y_size , ϡ , n , nxt ; 367 u_t32_t y ; 368 t , t_t ; 369 ** y , ** yp , ** li , ** , * p , * _me ; 372 y_size = 64; 373 i(( t = `__os_mloc ( v , 374 (** y_size , & y )) != 0) 375 ( t ); 376 y [0] = NULL ; 378 `memt (& c , 0, (rec)); 379 i(( t = `__log_curs ( v , & logc )) != 0) 380 ( t ); 381 n = 0; ( t = `__logc_g ( logc , & l , & c , DB_PREV )) == 0;) { 382 i( c . size < ( y )) { 383 t = EINVAL ; 384 `__db_rx ( v , "DB_ENV->log_archive: badogecord"); 388 `LOGCOPY_32 ( v , & y , c . da ); 389 i( y ! DB___dbg_gi ) 391 i(( t = 392 `__dbg_gi_ad ( v , c . da , & gp )) != 0) { 393 t = EINVAL ; 394 `__db_rx ( v , 399 i( n > y_size - 2) { 400 y_size + LIST_INCREMENT ; 401 i(( t = `__os_loc ( v , 402 (** y_size , & y )) != 0) 403 _ctue ; 406 i(( t = `__os_rdup ( v , 407 gp -> me . da , & y [ n ++])) != 0) 408 _ctue ; 409 y [ n ] = NULL ; 411 i( gp -> y = DB_QUEUE ) { 412 i(( t = `__qam_ex_mes ( v , 413 gp -> me . da , & li )) != 0) 414 q_r ; 415 = li ; 416 ! NULL && *lp != NULL;p++) { 417 i( n > y_size - 2) { 418 y_size + LIST_INCREMENT ; 419 i(( t = `__os_loc ( v , 421 y_size , & y )) != 0) 422 q_r ; 424 i(( t = 425 `__os_rdup ( v , * , & y [ n ++])) != 0) 426 q_r ; 427 y [ n ] = NULL ; 429 q_r : i( li ! NULL ) 430 `__os_ ( v , li ); 432 _ctue : `__os_ ( v , gp ); 433 i( t != 0) 436 i( t = DB_NOTFOUND ) 437 t = 0; 438 i(( t_t = `__logc_o ( logc )!0 && t == 0) 439 t = t_t ; 440 i( t != 0) 441 r1 ; 444 i( n == 0) { 445 t = 0; 446 * lip = NULL ; 447 r1 ; 451 `qst ( y , ( size_t ) n , (*), __cmpfunc ); 457 ϡ = nxt = 0;x< n ;) { 463 i( ϡ ! nxt ) { 464 y [ ϡ ] =ay[ nxt ]; 465 y [ nxt ] = NULL ; 467 ++ nxt ;x< n && 468 `rcmp ( y [ ϡ ],ay[ nxt ]) == 0; ++nxt) { 469 `__os_ ( v , y [ nxt ]); 470 y [ nxt ] = NULL ; 474 i(( t = `__db_ame ( v , 475 DB_APP_DATA , y [ ϡ ], 0, NULL , & _me )) != 0) 476 r2 ; 479 i( `__os_exis ( v , _me , NULL ) != 0) { 480 `__os_ ( v , _me ); 481 `__os_ ( v , y [ ϡ ]); 482 y [ ϡ ] = NULL ; 487 `__os_ ( v , y [ ϡ ]); 488 y [ ϡ ] = NULL ; 489 i( ef ! NULL ) { 490 t = `__abame ( v , ef , _me , & y [ ϡ ]); 491 `__os_ ( v , _me ); 492 i( t != 0) 493 r2 ; 494 } i(( p = `__db_h ( _me )! NULL ) { 495 t = `__os_rdup ( v , p + 1, & y [ ϡ ]); 496 `__os_ ( v , _me ); 497 i( t != 0) 498 r2 ; 500 y [ ϡ ] = _me ; 501 ++ ϡ ; 505 y [ ϡ ] = NULL ; 508 i(( t = `__urmem ( v , & y )) != 0) 509 r1 ; 511 * lip = y ; 514 r2 : 519 i( y ! NULL ) 520 ; nxt < n ; ++nxt) 521 `__os_ ( v , y [ nxt ]); 524 r1 : i( y ! NULL ) { 525 yp = y ; *y! NULL ; ++arrayp) 526 `__os_ ( v , * yp ); 527 `__os_ ( v , y ); 529 ( t ); 530 } } 537 $__abame ( v , ef , me , wm ) 538 ENV * v ; 539 * ef , * me , ** wm ; 541 size_t l_ef , l_me ; 542 ibh , t ; 543 * wme ; 545 l_me = ` ( me ); 546 ibh = `__os_abh ( me ); 547 l_ef = ibh ? 0 : ` ( ef ); 550 i(( t = `__os_mloc ( v , 551 l_ef + l_me + 2, & wme )) != 0) 552 ( t ); 553 * wm = wme ; 556 i(! ibh ) { 557 `memy ( wme , ef , l_ef ); 558 i( `rchr ( PATH_SEPARATOR , wme [ l_ef - 1]= NULL ) 559 wme [ l_ef ++] = PATH_SEPARATOR [0]; 561 `memy ( wme + l_ef , me , l_me + 1); 564 } } 572 $__urmem ( v , lip ) 573 ENV * v ; 574 *** lip ; 576 size_t n ; 577 t ; 578 ** y , ** yp , ** ig , * ; 581 n = 0, ig = * lip ; *ig ! NULL ; ++orig) 582 n +(*+ ` (* ig ) + 1; 583 n += (*); 586 i(( t = `__os_umloc ( v , n , & y )) != 0) 587 ( t ); 589 = (*)( y + ( ig - * lip ) + 1); 592 ig = * lip , yp = y ; *ig ! NULL ; ++orig, ++arrayp) { 593 n = ` (* ig ); 594 `memy ( , * ig , n + 1); 595 * yp = ; 596 + n + 1; 598 `__os_ ( v , * ig ); 602 * yp = NULL ; 604 `__os_ ( v , * lip ); 605 * lip = y ; 608 } } 611 $__cmpfunc ( p1 , p2 ) 612 cڡ * p1 , * p2 ; 614 ( `rcmp (*((* cڡ *) p1 ), *((* cڡ *) p2 ))); 615 } } @../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 ( v , dbp , lp ) 35 ENV * v ; 36 DB * dbp ; 37 DB_LSN * lp ; 39 LOG * ; 40 t ; 42 = v -> lg_hd -> gfo . imy ; 43 `LOG_SYSTEM_LOCK ( v ); 45 t = `LOG_COMPARE ( lp , & -> l ); 47 `LOG_SYSTEM_UNLOCK ( v ); 49 i( t < 0) 52 `__db_rx ( v , 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 ( v , "%s", 59 `__db_rx ( v , "%s", 61 `__db_rx ( v , "%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 (( 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 ENV * v ; 70 t ; 72 v = dbv ->env; 74 `ENV_REQUIRES_CONFIG ( v , 75 v -> lg_hd , "DB_ENV->log_tf", DB_INIT_LOG ); 77 `ENV_ENTER ( v , ); 78 `REPLICATION_WRAP ( v , ( `__log_tf_t nv, txnid , fmt , )), 0, t ); 79 `va_d ( ); 80 `ENV_LEAVE ( v , ); 81 ( t ); 82 } } 92 #ifde STDC_HEADERS 93 $__log_tf ( ENV * v , DB_TXN * txnid , cڡ * fmt , ...) 95 $__log_tf ( v , txnid , fmt , va_i ) 96 ENV * v ; 97 DB_TXN * txnid ; 98 cڡ * fmt ; 99 va_d 102 va_li ; 103 t ; 105 #ifde STDC_HEADERS 106 `va_t ( , fmt ); 108 `va_t ( ); 110 t = `__log_tf_t ( v , txnid , fmt , ); 111 `va_d ( ); 113 ( t ); 114 } } 121 $__log_tf_t ( v , txnid , fmt , ) 122 ENV * v ; 123 DB_TXN * txnid ; 124 cڡ * fmt ; 125 va_li ; 127 DBT dbt , msgdbt ; 128 DB_LSN l ; 129 __logbuf [2048]; 131 i(! `DBENV_LOGGING ( v )) { 132 `__db_rx ( v , "Loggingot currentlyermitted"); 133 ( EAGAIN ); 136 `memt (& dbt , 0, (opdbt)); 137 dbt . da = "DIAGNOSTIC"; 138 dbt . size = ("DIAGNOSTIC") - 1; 140 `memt (& msgdbt , 0, (msgdbt)); 141 msgdbt . da = __logbuf ; 142 msgdbt . size = ( u_t32_t ) `vtf ( __logbuf , (__logbuf), fmt , ); 144 ( `__db_debug_log ( 145 v , txnid , & l , 0, & dbt , -1, & msgdbt , NULL , 0)); 146 } } @../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 ENV * v ; 49 t ; 51 v = dbv ->env; 53 `ENV_REQUIRES_CONFIG ( v , 54 v -> lg_hd , "DB_ENV->log_curs", DB_INIT_LOG ); 57 i(( t = `__db_fchk ( v , "DB_ENV->log_curs", ags , 0)) != 0) 58 ( t ); 60 `ENV_ENTER ( v , ); 61 `REPLICATION_WRAP ( v , ( `__log_curs nv, log )), 0, t ); 62 `ENV_LEAVE ( v , ); 63 ( t ); 64 } } 73 $__log_curs ( v , log ) 74 ENV * v ; 75 DB_LOGC ** log ; 77 DB_LOGC * logc ; 78 t ; 80 * log = NULL ; 83 i(( t = `__os_oc ( v , 1, ( DB_LOGC ), & logc )) != 0) 84 ( t ); 86 logc -> bp_size = LG_CURSOR_BUF_SIZE ; 90 logc -> bp_maxc = MEGABYTE ; 91 i(( t = `__os_mloc ( v , logc -> bp_size , &logc-> bp )) != 0) { 92 `__os_ ( v , logc ); 93 ( t ); 96 logc -> v =nv; 97 logc -> o = __logc_o_ ; 98 logc -> g = __logc_g_ ; 99 logc -> vsi = __logc_vsi_ ; 101 * log = logc ; 103 } } 110 $__logc_o_ ( logc , ags ) 111 DB_LOGC * logc ; 112 u_t32_t ags ; 114 DB_THREAD_INFO * ; 115 ENV * v ; 116 t ; 118 v = logc ->env; 120 i(( t = `__db_fchk ( v , "DB_LOGC->o", ags , 0)) != 0) 121 ( t ); 123 `ENV_ENTER ( v , ); 124 `REPLICATION_WRAP ( v , ( `__logc_o ( logc )), 0, t ); 125 `ENV_LEAVE ( v , ); 126 ( t ); 127 } } 136 $__logc_o ( logc ) 137 DB_LOGC * logc ; 139 ENV * v ; 141 v = logc ->env; 143 i( logc -> fhp ! NULL ) { 144 () `__os_ohd ( v , logc -> fhp ); 145 logc -> fhp = NULL ; 148 i( logc -> dbt . da ! NULL ) 149 `__os_ ( v , logc -> dbt . da ); 151 `__os_ ( v , logc -> bp ); 152 `__os_ ( v , logc ); 155 } } 162 $__logc_vsi_ ( logc , vsip , ags ) 163 DB_LOGC * logc ; 164 u_t32_t * vsip ; 165 u_t32_t ags ; 167 DB_THREAD_INFO * ; 168 ENV * v ; 169 t ; 171 v = logc ->env; 173 i(( t = `__db_fchk ( v , "DB_LOGC->vsi", ags , 0)) != 0) 174 ( t ); 176 `ENV_ENTER ( v , ); 177 `REPLICATION_WRAP ( v , ( `__logc_vsi ( logc , vsip )), 0, t ); 178 `ENV_LEAVE ( v , ); 179 ( t ); 180 } } 189 $__logc_vsi ( logc , vsip ) 190 DB_LOGC * logc ; 191 u_t32_t * vsip ; 193 DBT hdrdbt ; 194 DB_LOGC * ogc ; 195 DB_LSN ; 196 ENV * v ; 197 LOGP * rsi ; 198 t , t_t ; 200 v = logc ->env; 201 i( `IS_ZERO_LSN ( logc -> l )) { 202 `__db_rx ( v , "DB_LOGC->get: unset cursor"); 203 ( EINVAL ); 205 t = 0; 216 i( logc -> l . fe !logc-> p_l .file) { 217 i(( t = `__log_curs ( v , & 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 i( `LOG_SWAPPED ( v )) 227 `__log_rsisw ( rsi ); 228 logc -> p_l =ogc-> l ; 229 logc -> p_vsi = rsi -> vsi ; 231 i(( t_t = `__logc_o ( ogc )!0 && t == 0) 232 t = t_t ; 235 i( t == 0) 236 * vsip = logc -> p_vsi ; 237 ( t ); 238 } } 245 $__logc_g_ ( logc , , dbt , ags ) 246 DB_LOGC * logc ; 247 DB_LSN * ; 248 DBT * dbt ; 249 u_t32_t ags ; 251 DB_THREAD_INFO * ; 252 ENV * v ; 253 t ; 255 v = logc ->env; 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 ( v , "DB_LOGC->get: invalid LSN: %lu/%lu", 268 ( u_lg ) -> fe , (u_lgl-> offt ); 269 ( EINVAL ); 273 ( `__db_ ( v , "DB_LOGC->get", 1)); 276 `ENV_ENTER ( v , ); 277 `REPLICATION_WRAP ( v , ( `__logc_g ( logc , , dbt , ags )), 0, t ); 278 `ENV_LEAVE ( v , ); 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_LSN ved_l ; 296 ENV * v ; 297 LOGP * rsi ; 298 t ; 300 v = logc ->env; 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 i( `LOG_SWAPPED ( v )) 346 `__log_rsisw ( rsi ); 347 logc -> p_l = * ; 348 logc -> p_vsi = rsi -> vsi ; 349 i( `F_ISSET ( dbt , DB_DBT_MALLOC )) { 350 `__os_ ( v , dbt -> da ); 351 dbt -> da = NULL ; 353 i(( t = `__logc_g_t ( logc , , dbt , ags )) != 0) { 354 * = ved_l ; 355 ( t ); 360 } } 367 $__logc_g_t ( logc , , dbt , ags ) 368 DB_LOGC * logc ; 369 DB_LSN * ; 370 DBT * dbt ; 371 u_t32_t ags ; 373 DB_CIPHER * db_ch ; 374 DB_LOG * db ; 375 DB_LSN ϡ_l , Ƣ ; 376 ENV * v ; 377 HDR hdr ; 378 LOG * ; 379 RLOCK ock ; 380 logfe_vidy us ; 381 u_t32_t t ; 382 u_t8_t * ; 383 eof , is_hmac , ed_cksum , t ; 385 v = logc ->env; 386 db_ch = v -> yo_hd ; 387 db = v -> lg_hd ; 388 = db -> gfo . imy ; 389 is_hmac = 0; 395 ock = `F_ISSET ( logc , DB_LOG_LOCKED ? L_ALREADY : L_NONE ; 397 Ƣ = logc -> l ; 398 ags ) { 399 DB_NEXT : 400 i(! `IS_ZERO_LSN ( Ƣ )) { 402 Ƣ . offt + logc -> n ; 405 ags = DB_FIRST ; 407 DB_FIRST : 409 i(( t = `__log_fd ( db , 1, & t , & us )) != 0) 410 r ; 428 us ) { 429 DB_LV_INCOMPLETE : 430 `DB_ASSERT ( v , -> l . fe = t ); 432 DB_LV_NORMAL : 433 DB_LV_OLD_READABLE : 434 Ƣ . fe = t ; 436 DB_LV_NONEXISTENT : 437 Ƣ . fe = 1; 438 `DB_ASSERT ( v , -> l . fe = Ƣ .file); 440 DB_LV_OLD_UNREADABLE : 441 Ƣ . fe = t + 1; 442 `DB_ASSERT ( v , -> l . fe = Ƣ .file); 445 Ƣ . offt = 0; 447 DB_CURRENT : 449 DB_PREV : 450 i(! `IS_ZERO_LSN ( Ƣ )) { 452 i( Ƣ . offt == 0) { 453 i( Ƣ . fe == 1) { 454 t = DB_NOTFOUND ; 455 r ; 457 i((! -> db_log_memy && 458 ( `__log_vid ( db , Ƣ . fe - 1, 0, NULL , 459 0, & us , NULL ) != 0 || 460 ( us ! DB_LV_NORMAL && 461 us ! DB_LV_OLD_READABLE )))) { 462 t = DB_NOTFOUND ; 463 r ; 466 -- Ƣ . fe ; 468 Ƣ . offt = logc -> ev ; 472 DB_LAST : 473 i( ock = L_NONE ) { 474 ock = L_ACQUIRED ; 475 `LOG_SYSTEM_LOCK ( v ); 477 Ƣ . fe = -> l .file; 478 Ƣ . offt = -> l .off-p-> n ; 480 DB_SET : 481 Ƣ = * ; 484 t = `__db_unknown_th ( v , "__logc_get_int"); 485 r ; 489 xt_fe : ++ Ƣ . fe ; 490 Ƣ . offt = 0; 498 i( `CRYPTO_ON ( v )) { 499 hdr . size = HDR_CRYPTO_SZ ; 500 is_hmac = 1; 502 hdr . size = HDR_NORMAL_SZ ; 503 is_hmac = 0; 510 i(( t = `__logc_curs ( logc , & Ƣ , & hdr , & )) != 0) 511 r ; 512 i( ! NULL ) 513 cksum ; 530 `ZERO_LSN ( ϡ_l ); 531 i(! `F_ISSET ( logc , DB_LOG_DISK ) || 532 `LOG_COMPARE (& Ƣ , & logc -> l ) > 0) { 533 `F_CLR ( logc , DB_LOG_DISK ); 535 i(( t = `__logc_gi ( logc , 536 & Ƣ , & ock , & ϡ_l , & hdr , & , & ed_cksum )) != 0) 537 r ; 538 i( ! NULL ) { 544 i( ed_cksum ) 545 cksum ; 546 om_memy ; 548 i( -> db_log_memy ) 549 nohdr ; 560 i( ock = L_ACQUIRED ) { 561 ock = L_NONE ; 562 `LOG_SYSTEM_UNLOCK ( v ); 564 i(( t = `__logc_disk ( 565 logc , & Ƣ , & ϡ_l , ags , & hdr , & , & eof )) != 0) 566 r ; 573 i( eof || hdr . n == 0) { 574 nohdr : ags ) { 575 DB_LAST : 576 DB_PREV : 585 `__db_rx ( v , 587 t = `__v_nic ( v , DB_RUNRECOVERY ); 588 r ; 589 DB_FIRST : 590 DB_NEXT : 595 i( Ƣ . offt != 0) 596 xt_fe ; 598 DB_SET : 600 t = DB_NOTFOUND ; 601 r ; 605 `F_SET ( logc , DB_LOG_DISK ); 607 cksum : 613 i( ock = L_ACQUIRED ) { 614 ock = L_NONE ; 615 `LOG_SYSTEM_UNLOCK ( v ); 624 i(( t = `__db_check_chksum ( v , & hdr , db_ch , 625 hdr . chksum , + hdr. size , hdr. n - hdr.size, is_hmac )) != 0) { 626 i( `F_ISSET ( logc , DB_LOG_SILENT_ERR )) { 627 i( t == 0 ||et == -1) 628 t = EIO ; 629 } i( t == -1) { 630 `__db_rx ( v , 632 ( u_lg ) Ƣ . fe , (u_lgl. offt ); 633 `__db_rx ( v , 635 t = `__v_nic ( v , DB_RUNRECOVERY ); 637 r ; 640 om_memy : 647 i( ock = L_ACQUIRED ) { 648 ock = L_NONE ; 649 `LOG_SYSTEM_UNLOCK ( v ); 653 i(( t = `__db_tcy ( v , dbt , + hdr . size , 654 ( u_t32_t )( hdr . n - hdr. size ), 655 & logc -> dbt . da , &logc->dbt. un )) != 0) 656 r ; 658 i( `CRYPTO_ON ( v )) { 659 i(( t = db_ch -> `dey ( v , db_ch-> da , 660 hdr . iv , dbt -> da , hdr. n - hdr. size )) != 0) { 661 t = EAGAIN ; 662 r ; 671 dbt -> size = hdr . ig_size ; 675 * = Ƣ ; 676 logc -> l = Ƣ ; 677 logc -> n = hdr .len; 678 logc -> ev = hdr .prev; 680 r : i( ock = L_ACQUIRED ) 681 `LOG_SYSTEM_UNLOCK ( v ); 683 ( t ); 684 } } 691 $__logc_curs ( logc , l , hdr , ) 692 DB_LOGC * logc ; 693 DB_LSN * l ; 694 HDR * hdr ; 695 u_t8_t ** ; 697 ENV * v ; 698 u_t8_t * p ; 699 eof ; 701 v = logc ->env; 702 * = NULL ; 714 i( logc -> bp_l . fe ! l ->file) 716 i( logc -> bp_l . offt > l ->offset) 718 i( logc -> bp_l . offt +ogc-> bp_ < l ->off+ hdr -> size ) 731 p = logc -> bp + ( l -> offt -ogc-> bp_l .offset); 732 `memy ( hdr , p , hdr-> size ); 733 i( `LOG_SWAPPED ( v )) 734 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 735 i( `__logc_hdrchk ( logc , l , hdr , & eof )) 736 ( DB_NOTFOUND ); 737 i( eof || logc -> bp_l . offt +ogc-> bp_ < l ->off+ hdr -> n ) 740 * = p ; 743 } } 750 $__logc_gi ( logc , l , ockp , ϡ_l , hdr , , ed_cksump ) 751 DB_LOGC * logc ; 752 DB_LSN * l , * ϡ_l ; 753 RLOCK * ockp ; 754 HDR * hdr ; 755 u_t8_t ** ; 756 * ed_cksump ; 758 DB_LOG * db ; 759 ENV * v ; 760 LOG * ; 761 size_t b_gi , n , ; 762 u_t32_t b_disk ; 763 eof , t ; 764 u_t8_t * p ; 766 v = logc ->env; 767 db = v -> lg_hd ; 768 = v -> lg_hd -> gfo . imy ; 770 t = 0; 771 b_gi = 0; 772 * = NULL ; 773 * ed_cksump = 0; 776 i(* ockp = L_NONE ) { 777 * ockp = L_ACQUIRED ; 778 `LOG_SYSTEM_LOCK ( v ); 791 * ϡ_l = -> l ; 792 i(! -> db_log_memy && ϡ_l -> offt >p-> w_off ) 793 ϡ_l -> offt = -> w_off ; 817 i( `IS_ZERO_LSN ( -> l )) 819 i( `LOG_COMPARE ( l , & ->lsn) >= 0) 820 ( DB_NOTFOUND ); 821 i( -> db_log_memy ) { 822 i(( t = `__log_mem_loff ( db , l , & b_gi )) != 0) 823 ( t ); 824 } i( -> b_off =0 || `LOG_COMPARE ( l , &-> f_l ) < 0) 832 logc -> bp_ = 0; 848 i( -> db_log_memy || `LOG_COMPARE ( l , &-> f_l ) > 0) { 849 i(! -> db_log_memy ) 850 b_gi = l -> offt - -> w_off ; 851 `__log_mem_cyout ( db , b_gi , hdr , hdr-> size ); 852 i( `LOG_SWAPPED ( v )) 853 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 854 i( `__logc_hdrchk ( logc , l , hdr , & eof ) != 0) 855 ( DB_NOTFOUND ); 856 i( eof ) 858 i( -> db_log_memy ) { 859 i( `RINGBUF_LEN ( , b_gi ,p-> b_off < hdr -> n ) 860 ( DB_NOTFOUND ); 861 } i( l -> offt + hdr -> n > -> w_off +p-> bufr_size ) 862 ( DB_NOTFOUND ); 863 i( logc -> bp_size < hdr -> n ) { 864 n = ( size_t ) `DB_ALIGN (( utmax_t ) hdr ->len * 2, 128); 865 i(( t = 866 `__os_loc ( logc -> v , n , &logc-> bp )) != 0) 867 ( t ); 868 logc -> bp_size = ( u_t32_t ) n ; 870 `__log_mem_cyout ( db , b_gi , logc -> bp , hdr -> n ); 871 * = logc -> bp ; 875 `DB_ASSERT ( v , ! -> db_log_memy ); 892 b_disk = -> w_off - l -> offt ; 893 i( -> b_off <-> n ) 894 b_gi = ( u_t32_t ) -> b_off ; 896 p = db -> bu + ( -> b_off -p-> n );;) { 897 `memy ( hdr , p , hdr-> size ); 898 i( `LOG_SWAPPED ( v )) 899 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 900 i( hdr -> ev = l -> offt ) { 901 b_gi = ( u_t32_t )( p - db -> bu ); 904 p = db -> bu + ( hdr -> ev - -> w_off ); 914 i( logc -> bp_size < b_gi + b_disk ) { 915 n = ( size_t ) `DB_ALIGN (( utmax_t )( b_gi + b_disk ) * 2, 128); 916 i(( t = `__os_loc ( logc -> v , n , &logc-> bp )) != 0) 917 ( t ); 918 logc -> bp_size = ( u_t32_t ) n ; 922 p = ( logc -> bp +ogc-> bp_size - b_gi ; 923 `memy ( p , db -> bu , b_gi ); 926 i(* ockp = L_ACQUIRED ) { 927 * ockp = L_NONE ; 928 `LOG_SYSTEM_UNLOCK ( v ); 935 i( b_disk != 0) { 936 p - b_disk ; 937 = b_disk ; 938 i(( t = `__logc_io ( 939 logc , l -> fe ,-> offt , p , & , NULL )) != 0) 940 ( t ); 941 i( < b_disk ) 942 ( `__logc_sh܌d ( logc , l , 0)); 945 * ed_cksump = 1; 949 `memy ( hdr , p , hdr-> size ); 950 i( `LOG_SWAPPED ( v )) 951 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 953 * = p ; 955 } } 964 $__log_hdrsw ( hdr , is_hmac ) 965 HDR * hdr ; 966 is_hmac ; 968 `M_32_SWAP ( hdr -> ev ); 969 `M_32_SWAP ( hdr -> n ); 970 i(! is_hmac ) 971 `P_32_SWAP ( hdr -> chksum ); 972 } } 982 $__log_rsisw ( rsi ) 983 LOGP * rsi ; 985 `M_32_SWAP ( rsi -> magic ); 986 `M_32_SWAP ( rsi -> vsi ); 987 `M_32_SWAP ( rsi -> log_size ); 988 `M_32_SWAP ( rsi -> nud ); 989 } } 996 $__logc_disk ( logc , l , ϡ_l , ags , hdr , , eo ) 997 DB_LOGC * logc ; 998 DB_LSN * l , * ϡ_l ; 999 u_t32_t ags ; 1000 * eo ; 1001 HDR * hdr ; 1002 u_t8_t ** ; 1004 ENV * v ; 1005 size_t n , ; 1006 u_t32_t offt ; 1007 t ; 1009 v = logc ->env; 1010 * eo = 0; 1012 = hdr -> size ; 1013 i(( t = 1014 `__logc_io ( logc , l -> fe ,-> offt , hdr , & , eo )) != 0) 1015 ( t ); 1016 i(* eo ) 1019 i( `LOG_SWAPPED ( v )) 1020 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 1029 i( < hdr -> size ) { 1030 * eo = 1; 1035 i(( t = `__logc_hdrchk ( logc , l , hdr , eo )) != 0) 1036 ( t ); 1037 i(* eo ) 1044 logc -> bp_ = 0; 1051 i( logc -> bp_size < hdr -> n ) { 1052 n = ( size_t ) `DB_ALIGN (( utmax_t ) hdr ->len * 2, 128); 1053 i(( t = `__os_loc ( v , n , & logc -> bp )) != 0) 1054 ( t ); 1055 logc -> bp_size = ( u_t32_t ) n ; 1069 i( ags = DB_FIRST || fg= DB_NEXT ) 1070 offt = l ->offset; 1071 i( l -> offt + hdr -> n < logc -> bp_size ) 1072 offt = 0; 1074 offt = ( l ->off+ hdr -> n - logc -> bp_size ; 1076 = logc -> bp_size ; 1077 i( l -> fe = ϡ_l ->f&& offt + >=ast_lsn->offset) 1078 = ϡ_l -> offt - offset; 1080 i(( t = 1081 `__logc_io ( logc , l -> fe , offt ,ogc-> bp , & , eo )) != 0) 1082 ( t ); 1088 i( < ( l -> offt + hdr -> n ) - offset) 1089 ( `__logc_sh܌d ( logc , l , 1)); 1097 logc -> bp_ = ( u_t32_t ) ; 1098 logc -> bp_l . offt = offset; 1100 * = logc -> bp + ( l -> offt - offset); 1103 } } 1126 $__logc_hdrchk ( logc , l , hdr , eo ) 1127 DB_LOGC * logc ; 1128 DB_LSN * l ; 1129 HDR * hdr ; 1130 * eo ; 1132 ENV * v ; 1133 t ; 1135 v = logc ->env; 1140 i( eo ! NULL ) { 1141 i( hdr -> ev =0 && hdr-> chksum [0] =0 && hdr-> n == 0) { 1142 * eo = 1; 1145 * eo = 0; 1152 i( hdr -> n <hdr-> size ) 1153 r ; 1159 i( logc -> bp_maxc !0 && hdr -> n >ogc->bp_maxrec) { 1165 i(( t = `__logc_t_maxc ( logc , NULL )) != 0) { 1166 `__db_r ( v , t , "DB_LOGC->get"); 1167 ( t ); 1169 i( logc -> bp_maxc !0 && hdr -> n >ogc->bp_maxrec) 1170 r ; 1174 r : i(! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1175 `__db_rx ( v , 1177 ( u_lg ) l -> fe , (u_lg-> offt ); 1178 ( EIO ); 1179 } } 1186 $__logc_io ( logc , um , offt , p , p , eo ) 1187 DB_LOGC * logc ; 1188 u_t32_t um , offt ; 1189 * p ; 1190 size_t * p ; 1191 * eo ; 1193 DB_LOG * db ; 1194 ENV * v ; 1195 LOG * ; 1196 t ; 1197 * ; 1199 v = logc ->env; 1200 db = v -> lg_hd ; 1201 = db -> gfo . imy ; 1207 i( logc -> fhp ! NULL &&ogc-> bp_l . fe ! um ) { 1208 t = `__os_ohd ( v , logc -> fhp ); 1209 logc -> fhp = NULL ; 1210 logc -> bp_l . fe = 0; 1212 i( t != 0) 1213 ( t ); 1215 i( logc -> fhp = NULL ) { 1216 i(( t = `__log_me ( db , um , 1217 & , & logc -> fhp , DB_OSO_RDONLY | DB_OSO_SEQ )) != 0) { 1222 i( eo ! NULL ) { 1223 * eo = 1; 1224 t = 0; 1225 } i(! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1226 `__db_r ( v , t , "DB_LOGC->get: %s", 1227 = NULL ? "__log_name failed" :p); 1228 `__os_ ( v , ); 1229 ( t ); 1232 i(( t = `__logc_t_maxc ( logc , )) != 0) { 1233 `__db_r ( v , t , "DB_LOGC->g: %s", ); 1234 `__os_ ( v , ); 1235 ( t ); 1237 `__os_ ( v , ); 1239 logc -> bp_l . fe = um ; 1242 `STAT (++ -> . _rcou ); 1244 i(( t = `__os_io ( v , DB_IO_READ , 1245 logc -> fhp , 0, 0, offt , ( u_t32_t )* p , p ,rp)) != 0) { 1246 i(! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1247 `__db_r ( v , t , 1249 ( u_lg ) um , (u_lg) offt ); 1250 ( t ); 1254 } } 1261 $__logc_sh܌d ( logc , l , check_st ) 1262 DB_LOGC * logc ; 1263 DB_LSN * l ; 1264 check_st ; 1266 i(! check_st || ! `F_ISSET ( logc , DB_LOG_SILENT_ERR )) 1267 `__db_rx ( logc -> v , "DB_LOGC->get: LSN: %lu/%lu: shortead", 1268 ( u_lg ) l -> fe , (u_lg-> offt ); 1269 ( EIO ); 1270 } } 1277 $__logc_t_maxc ( logc , ) 1278 DB_LOGC * logc ; 1279 * ; 1281 DB_LOG * db ; 1282 ENV * v ; 1283 LOG * ; 1284 u_t32_t mbys , bys ; 1285 t ; 1287 v = logc ->env; 1288 db = v -> lg_hd ; 1299 i( logc -> fhp ! NULL ) { 1300 i(( t = `__os_iofo ( v , , logc -> fhp , 1301 & mbys , & bys , NULL )) != 0) 1302 ( t ); 1303 i( logc -> bp_maxc < ( mbys * MEGABYTE + bys )) 1304 logc -> bp_maxc = mbys * MEGABYTE + bys ; 1319 = db -> gfo . imy ; 1320 i( logc -> bp_maxc < -> bufr_size ) 1321 logc -> bp_maxc = -> bufr_size ; 1324 } } 1326 #ifde HAVE_REPLICATION 1338 $__log_p_l ( v , , , c , t_lp , ϡ_lp ) 1339 ENV * v ; 1340 DB_THREAD_INFO * ; 1341 __p_cڌ_gs * ; 1342 DBT * c ; 1343 DB_LSN * t_lp ; 1344 DB_LSN * ϡ_lp ; 1346 DBT logc ; 1347 DB_LSN ve_l , tmp_l ; 1348 __p_cڌ_gs tmp ; 1349 __p_bulk_gs b_gs ; 1350 t , ve_t ; 1351 u_t32_t ve_ags ; 1352 u_t8_t * p , * ; 1354 `memt (& logc , 0, (logrec)); 1355 `memt (& ve_l , 0, (save_lsn)); 1356 `memt (& tmp_l , 0, (tmp_lsn)); 1361 `memy (& tmp , , (tmprp)); 1370 ve_ags = `F_ISSET ( , REPCTL_LOG_END | REPCTL_PERM ); 1371 `F_CLR (& tmp , REPCTL_LOG_END | REPCTL_PERM ); 1372 t = ve_t = 0; 1373 = ( u_t8_t *) c -> da +ec-> size , p = (u_int8_t *)rec->data; 1374 p < ; ) { 1379 i( -> p_vsi < DB_REPVERSION_47 ) { 1380 `memy (& b_gs . n , p , (b_args.len)); 1381 p +( b_gs . n ); 1382 `memy (& tmp . l , p , ( DB_LSN )); 1383 p +( DB_LSN ); 1384 logc . da = p ; 1385 logc . size = b_gs . n ; 1386 p + b_gs . n ; 1388 i(( t = `__p_bulk_unmsh ( v , 1389 & b_gs , p , c -> size , &p)) != 0) 1390 ( t ); 1391 tmp . l = b_gs .lsn; 1392 logc . da = b_gs . bulkda .data; 1393 logc . size = b_gs . n ; 1395 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1397 ( u_lg ) tmp . l . fe , (u_lgmp.l. offt )); 1398 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1400 `P_TO_ULONG ( p ), P_TO_ULONG( ), P_TO_ULONG( logc . da ), 1401 ( u_lg ) logc . size , (u_long)logrec.size)); 1402 i( p > && ve_ags ) 1403 `F_SET (& tmp , ve_ags ); 1404 t = `__p_y ( v , , 1405 & tmp , & logc , & tmp_l , NULL , ϡ_lp ); 1406 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1408 t , ( u_lg ) tmp_l . fe , (u_lgmp_l. offt )); 1409 t ) { 1415 DB_REP_LOGREADY : 1416 out ; 1420 DB_REP_ISPERM : 1421 DB_REP_NOTPERM : 1422 ve_t = t ; 1423 ve_l = tmp_l ; 1424 t = 0; 1435 out ; 1438 out : 1443 i( t == 0) { 1444 t = ve_t ; 1445 * t_lp = ve_l ; 1447 ( t ); 1448 } } @../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 * v ; 59 v = dbv ->env; 61 `ENV_NOT_CONFIGURED ( v , 62 v -> lg_hd , "DB_ENV->g_lg_bsize", DB_INIT_LOG ); 64 i( `LOGGING_ON ( v )) { 66 * lg_bsiz = 67 (( LOG *) v -> lg_hd -> gfo . imy )-> bufr_size ; 69 * lg_bsiz = dbv -> lg_bsize ; 71 } } 80 $__log_t_lg_bsize ( dbv , lg_bsize ) 81 DB_ENV * dbv ; 82 u_t32_t lg_bsize ; 84 ENV * v ; 86 v = dbv ->env; 88 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lg_bsize"); 90 dbv -> lg_bsize =g_bsize; 92 } } 98 $__log_g_lg_femode ( dbv , lg_mod ) 99 DB_ENV * dbv ; 100 * lg_mod ; 102 DB_LOG * db ; 103 DB_THREAD_INFO * ; 104 ENV * v ; 106 v = dbv ->env; 108 `ENV_NOT_CONFIGURED ( v , 109 v -> lg_hd , "DB_ENV->g_lg_femode", DB_INIT_LOG ); 111 i( `LOGGING_ON ( v )) { 112 db = v -> lg_hd ; 113 `ENV_ENTER ( v , ); 114 `LOG_SYSTEM_LOCK ( v ); 115 * lg_mod = (( LOG *) db -> gfo . imy )-> femode ; 116 `LOG_SYSTEM_UNLOCK ( v ); 117 `ENV_LEAVE ( v , ); 119 * lg_mod = dbv -> lg_femode ; 122 } } 131 $__log_t_lg_femode ( dbv , lg_mode ) 132 DB_ENV * dbv ; 133 lg_mode ; 135 DB_LOG * db ; 136 DB_THREAD_INFO * ; 137 ENV * v ; 138 LOG * ; 140 v = dbv ->env; 142 `ENV_NOT_CONFIGURED ( v , 143 v -> lg_hd , "DB_ENV->t_lg_femode", DB_INIT_LOG ); 145 i( `LOGGING_ON ( v )) { 146 db = v -> lg_hd ; 147 = db -> gfo . imy ; 148 `ENV_ENTER ( v , ); 149 `LOG_SYSTEM_LOCK ( v ); 150 -> femode = lg_mode ; 151 `LOG_SYSTEM_UNLOCK ( v ); 152 `ENV_LEAVE ( v , ); 154 dbv -> lg_femode = lg_mode ; 157 } } 163 $__log_g_lg_max ( dbv , lg_maxp ) 164 DB_ENV * dbv ; 165 u_t32_t * lg_maxp ; 167 DB_LOG * db ; 168 DB_THREAD_INFO * ; 169 ENV * v ; 171 v = dbv ->env; 173 `ENV_NOT_CONFIGURED ( v , 174 v -> lg_hd , "DB_ENV->g_lg_max", DB_INIT_LOG ); 176 i( `LOGGING_ON ( v )) { 177 db = v -> lg_hd ; 178 `ENV_ENTER ( v , ); 179 `LOG_SYSTEM_LOCK ( v ); 180 * lg_maxp = (( LOG *) db -> gfo . imy )-> log_nsize ; 181 `LOG_SYSTEM_UNLOCK ( v ); 182 `ENV_LEAVE ( v , ); 184 * lg_maxp = dbv -> lg_size ; 187 } } 196 $__log_t_lg_max ( dbv , lg_max ) 197 DB_ENV * dbv ; 198 u_t32_t lg_max ; 200 DB_LOG * db ; 201 DB_THREAD_INFO * ; 202 ENV * v ; 203 LOG * ; 204 t ; 206 v = dbv ->env; 207 t = 0; 209 `ENV_NOT_CONFIGURED ( v , 210 v -> lg_hd , "DB_ENV->t_lg_max", DB_INIT_LOG ); 212 i( `LOGGING_ON ( v )) { 213 db = v -> lg_hd ; 214 = db -> gfo . imy ; 215 `ENV_ENTER ( v , ); 216 i(( t = `__log_check_sizes ( v , lg_max , 0)) == 0) { 217 `LOG_SYSTEM_LOCK ( v ); 218 -> log_nsize = lg_max ; 219 `LOG_SYSTEM_UNLOCK ( v ); 221 `ENV_LEAVE ( v , ); 223 dbv -> lg_size = lg_max ; 225 ( t ); 226 } } 232 $__log_g_lg_gimax ( dbv , lg_gimaxp ) 233 DB_ENV * dbv ; 234 u_t32_t * lg_gimaxp ; 236 ENV * v ; 238 v = dbv ->env; 240 `ENV_NOT_CONFIGURED ( v , 241 v -> lg_hd , "DB_ENV->g_lg_gimax", DB_INIT_LOG ); 243 i( `LOGGING_ON ( v )) { 245 * lg_gimaxp = 246 (( LOG *) v -> lg_hd -> gfo . imy )-> gimax ; 248 * lg_gimaxp = dbv -> lg_gimax ; 250 } } 259 $__log_t_lg_gimax ( dbv , lg_gimax ) 260 DB_ENV * dbv ; 261 u_t32_t lg_gimax ; 263 ENV * v ; 265 v = dbv ->env; 267 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_lg_regionmax"); 270 i( lg_gimax !0 &&g_gimax < LG_BASE_REGION_SIZE ) { 271 `__db_rx ( v , 272 "logegi sizmu b>%d", LG_BASE_REGION_SIZE ); 273 ( EINVAL ); 276 dbv -> lg_gimax =g_regionmax; 278 } } 284 $__log_g_lg_d ( dbv , dp ) 285 DB_ENV * dbv ; 286 cڡ ** dp ; 288 * dp = dbv -> db_log_d ; 290 } } 299 $__log_t_lg_d ( dbv , d ) 300 DB_ENV * dbv ; 301 cڡ * d ; 303 ENV * v ; 305 v = dbv ->env; 307 i( dbv -> db_log_d ! NULL ) 308 `__os_ ( v , dbv -> db_log_d ); 309 ( `__os_rdup ( v , d , & dbv -> db_log_d )); 310 } } 319 $__log_g_ags ( dbv , ag ) 320 DB_ENV * dbv ; 321 u_t32_t * ag ; 323 DB_LOG * db ; 324 ENV * v ; 325 LOG * ; 326 u_t32_t ags ; 328 v = dbv ->env; 330 i(( db = v -> lg_hd = NULL ) 333 = db -> gfo . imy ; 335 ags = * ag ; 336 i( -> db_log_autemove ) 337 `LF_SET ( DB_LOG_AUTO_REMOVE ); 339 `LF_CLR ( DB_LOG_AUTO_REMOVE ); 340 i( -> db_log_memy ) 341 `LF_SET ( DB_LOG_IN_MEMORY ); 343 `LF_CLR ( DB_LOG_IN_MEMORY ); 344 * ag = ags ; 345 } } 354 $__log_t_ags ( v , ags , ) 355 ENV * v ; 356 u_t32_t ags ; 357 ; 359 DB_LOG * db ; 360 LOG * ; 362 i(( db = v -> lg_hd = NULL ) 365 = db -> gfo . imy ; 367 i( `LF_ISSET ( DB_LOG_AUTO_REMOVE )) 368 -> db_log_autemove = ? 1 : 0; 369 i( `LF_ISSET ( DB_LOG_IN_MEMORY )) 370 -> db_log_memy = ? 1 : 0; 371 } } 377 #unde OK_FLAGS 378 #OK_FLAGS \ 379 ( DB_LOG_AUTO_REMOVE | DB_LOG_DIRECT | \ 380 DB_LOG_DSYNC | DB_LOG_IN_MEMORY | DB_LOG_ZERO ) ) 381 #ide BREW 384 cڡ FLAG_MAP gLogM [] = { 385 { DB_LOG_AUTO_REMOVE , DBLOG_AUTOREMOVE }, 386 { DB_LOG_DIRECT , DBLOG_DIRECT }, 387 { DB_LOG_DSYNC , DBLOG_DSYNC }, 388 { DB_LOG_IN_MEMORY , DBLOG_INMEMORY }, 389 { DB_LOG_ZERO , DBLOG_ZERO } 398 $__log_g_cfig ( dbv , which , p ) 399 DB_ENV * dbv ; 400 u_t32_t which ; 401 * p ; 403 ENV * v ; 404 DB_LOG * db ; 405 u_t32_t ags ; 407 v = dbv ->env; 408 i( `FLD_ISSET ( which , ~ OK_FLAGS )) 409 ( `__db_ ( v , "DB_ENV->log_get_config", 0)); 410 db = v -> lg_hd ; 411 `ENV_REQUIRES_CONFIG ( v , db , "DB_ENV->log_g_cfig", DB_INIT_LOG ); 413 `__v_tch_ags ( LogM , (LogM), & db -> ags , &flags); 414 `__log_g_ags ( dbv , & ags ); 415 i( `LF_ISSET ( which )) 416 * p = 1; 418 * p = 0; 421 } } 430 $__log_t_cfig ( dbv , ags , ) 431 DB_ENV * dbv ; 432 u_t32_t ags ; 433 ; 435 ( `__log_t_cfig_t ( dbv , ags , , 0)); 436 } } 444 $__log_t_cfig_t ( dbv , ags , , _ݒ ) 445 DB_ENV * dbv ; 446 u_t32_t ags ; 447 ; 448 _ݒ ; 450 ENV * v ; 451 DB_LOG * db ; 452 u_t32_t md_ags ; 454 v = dbv ->env; 455 db = v -> lg_hd ; 456 i( `FLD_ISSET ( ags , ~ OK_FLAGS )) 457 ( `__db_ ( v , "DB_ENV->log_set_config", 0)); 458 `ENV_NOT_CONFIGURED ( v , db , "DB_ENV->log_t_cfig", DB_INIT_LOG ); 459 i( `LF_ISSET ( DB_LOG_DIRECT && `__os_sut_de_io () == 0) { 460 `__db_rx ( v , 462 ( EINVAL ); 465 i( `LOGGING_ON ( v )) { 466 i(! _ݒ && `LF_ISSET ( DB_LOG_IN_MEMORY )) 467 `ENV_ILLEGAL_AFTER_OPEN ( v , 469 `__log_t_ags ( v , ags , ); 470 md_ags = 0; 471 `__v_m_ags ( LogM , (LogM), & ags , & md_ags ); 472 i( ) 473 `F_SET ( db , md_ags ); 475 `F_CLR ( db , md_ags ); 482 i( && `LF_ISSET ( DB_LOG_IN_MEMORY )) 483 `F_CLR ( dbv , 484 DB_ENV_TXN_NOSYNC | DB_ENV_TXN_WRITE_NOSYNC ); 486 i( ) 487 `FLD_SET ( dbv -> lg_ags , ags ); 489 `FLD_CLR ( dbv -> lg_ags , ags ); 493 } } 502 $__log_check_sizes ( v , lg_max , lg_bsize ) 503 ENV * v ; 504 u_t32_t lg_max ; 505 u_t32_t lg_bsize ; 507 DB_ENV * dbv ; 508 LOG * ; 509 mem ; 511 dbv = v ->dbenv; 513 i( `LOGGING_ON ( v )) { 514 = v -> lg_hd -> gfo . imy ; 515 mem = -> db_log_memy ; 516 lg_bsize = -> bufr_size ; 518 mem = ( `FLD_ISSET ( dbv -> lg_ags , DB_LOG_IN_MEMORY ) != 0); 520 i( mem ) { 521 i( lg_bsize == 0) 522 lg_bsize = LG_BSIZE_INMEM ; 523 i( lg_max == 0) 524 lg_max = LG_MAX_INMEM ; 526 i( lg_bsize < lg_max ) { 527 `__db_rx ( v , 529 ( EINVAL ); 534 } } @../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 (( ENV *, DBT *, HDR *, u_t32_t )); 18 __log_fe __P (( ENV *, cڡ DB_LSN *, *, size_t )); 19 __log_fl __P (( DB_LOG *, DB_LSN *, *, u_t32_t )); 20 __log_ush_comm __P (( ENV *, cڡ DB_LSN *, u_t32_t )); 21 __log_wfh __P (( DB_LOG *, )); 22 __log_put_xt __P (( 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 ENV * v ; 43 t ; 45 v = dbv ->env; 47 `ENV_REQUIRES_CONFIG ( v , 48 v -> lg_hd , "DB_ENV->log_put", DB_INIT_LOG ); 51 i(( t = `__db_fchk ( v , "DB_ENV->log_put", ags , 52 DB_LOG_CHKPNT | DB_LOG_COMMIT | 53 DB_FLUSH | DB_LOG_NOCOPY | DB_LOG_WRNOSYNC )) != 0) 54 ( t ); 57 i( `LF_ISSET ( DB_LOG_WRNOSYNC && LF_ISSET( DB_FLUSH )) 58 ( `__db_ ( v , "DB_ENV->log_put", 1)); 61 i( `IS_REP_CLIENT ( v )) { 62 `__db_rx ( v , 64 ( EINVAL ); 67 `ENV_ENTER ( v , ); 68 `REPLICATION_WRAP ( v , ( `__log_put nv, lp , udbt , ags )), 0, t ); 69 `ENV_LEAVE ( v , ); 70 ( t ); 71 } } 80 $__log_put ( v , lp , udbt , ags ) 81 ENV * v ; 82 DB_LSN * lp ; 83 cڡ DBT * udbt ; 84 u_t32_t ags ; 86 DBT * dbt , t ; 87 DB_CIPHER * db_ch ; 88 DB_LOG * db ; 89 DB_LSN l , d_l ; 90 DB_REP * db_p ; 91 HDR hdr ; 92 LOG * ; 93 REP * p ; 94 lock_hd , ed_ , t ; 95 u_t8_t * key ; 97 db = v -> lg_hd ; 98 = db -> gfo . imy ; 99 db_ch = v -> yo_hd ; 100 db_p = v -> 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 ( v && db_p -> nd = NULL ) { 118 `__db_rx ( v , "%s %s", 121 ( EINVAL ); 124 `DB_ASSERT ( v , ! `IS_REP_CLIENT (env)); 136 i(! `LF_ISSET ( DB_LOG_NOCOPY || `IS_REP_MASTER ( v )) { 137 i( `CRYPTO_ON ( v )) 138 t . size + db_ch -> `adj_size ( udbt ->size); 139 i(( t = `__os_oc ( v , 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 ( v , dbt , & hdr , udbt -> size )) != 0) 145 r ; 146 i( `CRYPTO_ON ( v )) 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 ( v ); 158 lock_hd = 1; 160 i(( t = `__log_put_xt ( v , & l , dbt , & hdr , & d_l )) != 0) 161 nic_check ; 170 lp -> fe = l .file; 171 lp -> offt = l .offset; 173 #ifde HAVE_REPLICATION 174 i( `IS_REP_MASTER ( v )) { 175 __p_wfe_gs nf_gs ; 176 DBT wfedbt ; 177 REP_BULK bulk ; 178 size_t n ; 179 u_t32_t lags ; 180 u_t8_t buf [ __REP_NEWFILE_SIZE ]; 186 lags = `LF_ISSET ( DB_LOG_COMMIT | DB_LOG_CHKPNT ) ? 187 REPCTL_PERM : 0; 192 i( `IS_USING_LEASES ( v ) && 193 `FLD_ISSET ( lags , REPCTL_PERM )) 194 -> max_rm_l = l ; 195 `LOG_SYSTEM_UNLOCK ( v ); 196 lock_hd = 0; 197 i( `LF_ISSET ( DB_FLUSH )) 198 lags | REPCTL_FLUSH ; 210 i(! `IS_ZERO_LSN ( d_l )) { 211 `memt (& wfedbt , 0, (newfiledbt)); 212 nf_gs . vsi = -> rsi .version; 213 () `__p_wfe_msh ( v , & nf_gs , 214 buf , __REP_NEWFILE_SIZE , & n ); 215 `DB_INIT_DBT ( wfedbt , buf , n ); 216 () `__p_nd_mesge ( v , DB_EID_BROADCAST , 217 REP_NEWFILE , & d_l , & wfedbt , 0, 0); 223 t = 0; 224 i( `FLD_ISSET ( p -> cfig , REP_C_BULK )) { 229 i( db_p -> bulk = NULL ) 230 db_p -> bulk = `R_ADDR (& db -> gfo , 231 -> bulk_buf ); 232 `memt (& bulk , 0, (bulk)); 233 bulk . addr = db_p ->bulk; 234 bulk . of = & -> bulk_off ; 235 bulk . n = -> bulk_n ; 236 bulk . l =sn; 237 bulk . ty = REP_BULK_LOG ; 238 bulk . eid = DB_EID_BROADCAST ; 239 bulk . ag = & -> bulk_ags ; 240 t = `__p_bulk_mesge ( v , & bulk , NULL , 241 & l , udbt , lags ); 243 i(! `FLD_ISSET ( p -> cfig , REP_C_BULK ) || 244 t = DB_REP_BULKOVF ) { 254 t = `__p_nd_mesge ( v , DB_EID_BROADCAST , 255 REP_LOG , & l , udbt , lags , 0); 268 i( t !0 && `FLD_ISSET ( lags , REPCTL_PERM )) { 269 `LF_SET ( DB_FLUSH ); 270 i( `IS_USING_LEASES ( v )) 271 () `__p_a_expe ( v , 0); 280 t = 0; 292 i( `LF_ISSET ( DB_FLUSH | DB_LOG_WRNOSYNC )) { 293 i(! lock_hd ) { 294 `LOG_SYSTEM_LOCK ( v ); 295 lock_hd = 1; 297 i(( t = `__log_ush_comm ( v , & l , ags )) != 0) 298 nic_check ; 305 i( `LF_ISSET ( DB_LOG_CHKPNT )) 306 -> . _wc_bys =p->. _wc_mbys = 0; 309 `STAT (++ -> . _cd ); 312 nic_check : 319 i( t !0 && `IS_REP_MASTER ( v )) 320 t = `__v_nic ( v ,et); 323 r : i( lock_hd ) 324 `LOG_SYSTEM_UNLOCK ( v ); 325 i( ed_ ) 326 `__os_ ( v , dbt -> da ); 332 i( t =0 && ! `IS_ZERO_LSN ( d_l && -> db_log_autemove ) 333 `__log_autemove ( v ); 335 ( t ); 336 } } 346 $__log_cut_l ( v , lp , mby , by ) 347 ENV * v ; 348 DB_LSN * lp ; 349 u_t32_t * mby , * by ; 351 DB_LOG * db ; 352 LOG * ; 354 db = v -> lg_hd ; 355 = db -> gfo . imy ; 357 `LOG_SYSTEM_LOCK ( v ); 368 * lp = -> l ; 369 i( -> l . offt >p-> n ) 370 lp -> offt - -> n ; 379 i( mby ! NULL ) { 380 * mby = -> . _wc_mbys ; 381 * by = ( u_t32_t )( -> . _wc_bys +p-> b_off ); 384 `LOG_SYSTEM_UNLOCK ( v ); 387 } } 395 $__log_put_xt ( v , l , dbt , hdr , d_lp ) 396 ENV * v ; 397 DB_LSN * l ; 398 cڡ DBT * dbt ; 399 HDR * hdr ; 400 DB_LSN * d_lp ; 402 DB_LOG * db ; 403 DB_LSN d_l ; 404 LOG * ; 405 adv_fe , wfe , t ; 407 db = v -> lg_hd ; 408 = db -> gfo . imy ; 418 d_l = -> l ; 419 wfe = 0; 420 adv_fe = 0; 425 i( -> rsi . vsi ! DB_LOGVERSION ) { 426 `__log_t_vsi ( v , DB_LOGVERSION ); 427 adv_fe = 1; 435 i( adv_fe || -> l . offt == 0 || 436 -> l . offt + hdr -> size + dbt ->siz>p-> log_size ) { 437 i( hdr -> size + ( LOGP + dbt ->siz> -> log_size ) { 438 `__db_rx ( v , 440 ( u_lg ) hdr -> size + ( LOGP + dbt ->size, 441 ( u_lg ) -> log_size ); 442 ( EINVAL ); 445 i(( t = `__log_wfe ( db , NULL , 0, 0)) != 0) 446 ( t ); 455 wfe = 1; 459 i( wfe ) 460 * d_lp = d_l ; 463 ( `__log_pu ( db , l , dbt , ->l. offt -p-> n , hdr )); 464 } } 471 $__log_ush_comm ( v , lp , ags ) 472 ENV * v ; 473 cڡ DB_LSN * lp ; 474 u_t32_t ags ; 476 DB_LOG * db ; 477 DB_LSN ush_l ; 478 LOG * ; 479 t ; 481 db = v -> lg_hd ; 482 = db -> gfo . imy ; 483 ush_l = * lp ; 485 t = 0; 494 i( `LF_ISSET ( DB_FLUSH )) 495 t = `__log_ush_t ( db , & ush_l , 1); 496 i(! -> db_log_memy &&p-> b_off != 0) 497 i(( t = `__log_wre ( db , 498 db -> bu , ( u_t32_t ) -> b_off )) == 0) 499 -> b_off = 0; 507 i( t =0 || ! `LF_ISSET ( DB_LOG_COMMIT )) 508 ( t ); 510 i( ush_l . fe ! -> l .f|| flush_l. offt <p-> w_off ) 523 i( `__txn_f_abt ( v , 524 db -> bu + ush_l . offt - -> w_off ) == 0) 525 () `__log_ush_t ( db , & ush_l , 0); 527 ( t ); 528 } } 538 $__log_wfe ( db , lp , logfe , vsi ) 539 DB_LOG * db ; 540 DB_LSN * lp ; 541 u_t32_t logfe ; 542 u_t32_t vsi ; 544 DBT t ; 545 DB_CIPHER * db_ch ; 546 DB_LSN l ; 547 ENV * v ; 548 HDR hdr ; 549 LOG * ; 550 LOGP * si ; 551 ed_ , t ; 552 u_t32_t ϡoff ; 553 size_t tsize ; 555 v = db ->env; 556 = db -> gfo . imy ; 562 i( logfe =0 && -> l . offt != 0) { 576 i(( t = `__log_ush_t ( db , NULL , 0)) != 0) 577 ( t ); 583 ϡoff = -> l . offt ; 586 ++ -> l . fe ; 587 -> l . offt = 0; 590 -> w_off = 0; 592 ϡoff = 0; 599 i( logfe != 0) { 600 -> l . fe = logfe ; 601 -> l . offt = 0; 602 -> w_off = 0; 603 i( -> db_log_memy ) { 604 l = ->lsn; 605 () `__log_zo ( v , & l ); 607 -> s_l =p-> l ; 608 i(( t = `__log_wfh ( db , 1)) != 0) 609 ( t ); 613 `DB_ASSERT ( v , -> db_log_memy ||p-> b_off == 0); 614 i( -> db_log_memy && 615 ( t = `__log_mem_wfe ( db , -> l . fe )) != 0) 616 ( t ); 623 `memt (& t , 0, (t)); 624 `memt (& hdr , 0, ( HDR )); 626 ed_ = 0; 627 tsize = ( LOGP ); 628 db_ch = v -> yo_hd ; 629 i( `CRYPTO_ON ( v )) 630 tsize + db_ch -> `adj_size (tsize); 631 i(( t = `__os_oc ( v , 1, tsize , & si )) != 0) 632 ( t ); 633 ed_ = 1; 638 i( vsi != 0) { 639 `__log_t_vsi ( v , vsi ); 640 i(( t = `__v__c ( v , vsi )) != 0) 641 r ; 643 -> rsi . log_size =p->log_siz-> log_nsize ; 644 `memy ( si , & -> rsi , ( LOGP )); 645 `DB_SET_DBT ( t , si , tsize ); 646 i( `LOG_SWAPPED ( v )) 647 `__log_rsisw ( si ); 649 i(( t = 650 `__log_y_cd ( v , & t , & hdr , ( u_t32_t ) tsize )) != 0) 651 r ; 652 i( -> rsi . vsi ! DB_LOGVERSION ) 653 `__db_chksum ( NULL , t . da ,. size , 654 ( `CRYPTO_ON ( v )? db_ch -> mac_key : NULL , hdr . chksum ); 656 `__db_chksum (& hdr , t . da ,. size , 657 ( `CRYPTO_ON ( v )? db_ch -> mac_key : NULL , hdr . chksum ); 659 i(( t = `__log_pu ( db , & l , 660 & t , ϡoff =0 ? 0 :aof- -> n , & hdr )) != 0) 661 r ; 664 i( lp ! NULL ) 665 * lp = -> l ; 667 r : i( ed_ ) 668 `__os_ ( v , si ); 669 ( t ); 670 } } 677 $__log_pu ( db , l , dbt , ev , h ) 678 DB_LOG * db ; 679 DB_LSN * l ; 680 cڡ DBT * dbt ; 681 u_t32_t ev ; 682 HDR * h ; 684 DB_CIPHER * db_ch ; 685 DB_LSN f_l ; 686 ENV * v ; 687 HDR tmp , * hdr ; 688 LOG * ; 689 t , t_t ; 690 size_t b_off , ; 691 u_t32_t w_off ; 693 v = db ->env; 694 = db -> gfo . imy ; 699 db_ch = v -> yo_hd ; 700 i( h = NULL ) { 701 hdr = & tmp ; 702 `memt ( hdr , 0, ( HDR )); 703 i( `CRYPTO_ON ( v )) 704 hdr -> size = HDR_CRYPTO_SZ ; 706 hdr -> size = HDR_NORMAL_SZ ; 708 hdr = h ; 711 b_off = ->b_off; 712 w_off = ->w_off; 713 f_l = ->f_lsn; 720 hdr -> ev =rev; 721 hdr -> n = ( u_t32_t )hdr-> size + dbt ->size; 731 i( hdr -> chksum [0] == 0) 732 i( -> rsi . vsi ! DB_LOGVERSION ) 733 `__db_chksum ( NULL , dbt -> da , dbt-> size , 734 ( `CRYPTO_ON ( v )? db_ch -> mac_key : NULL , 735 hdr -> chksum ); 737 `__db_chksum ( hdr , dbt -> da , dbt-> size , 738 ( `CRYPTO_ON ( v )? db_ch -> mac_key : NULL , 739 hdr -> chksum ); 740 i( -> rsi . vsi = DB_LOGVERSION ) { 745 `LOG_HDR_SUM ( `CRYPTO_ON ( v ), hdr , hdr-> chksum ); 748 i( -> db_log_memy && ( t = `__log_mem_chka ( db , 749 ( u_t32_t ) hdr -> size + dbt ->size)) != 0) 750 r ; 756 * l = ->lsn; 758 = hdr -> size ; 759 i( `LOG_SWAPPED ( v )) 760 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 763 t = `__log_fl ( db , l , hdr , ( u_t32_t ) ); 765 i( `LOG_SWAPPED ( v )) 766 `__log_hdrsw ( hdr , `CRYPTO_ON ( v )); 768 i( t != 0) 769 r ; 771 i(( t = `__log_fl ( db , l , dbt -> da , dbt-> size )) != 0) 772 r ; 774 -> n = ( u_t32_t )( hdr -> size + dbt ->size); 775 -> l . offt +-> n ; 777 r : 783 i( w_off + -> bufr_size <p->w_off) { 784 `DB_ASSERT ( v , ! -> db_log_memy ); 785 i(( t_t = `__os_ek ( v , db -> lfhp , 0, 0, w_off )) != 0 || 786 ( t_t = `__os_ad ( v , db -> lfhp , db-> bu , 787 b_off , & )) != 0) 788 ( `__v_nic ( v , t_t )); 789 i( ! b_off ) { 790 `__db_rx ( v , "Shortead whileestoringog"); 791 ( `__v_nic ( v , EIO )); 796 -> w_off = w_off; 797 -> b_off = b_off; 798 -> f_l = f_lsn; 800 ( t ); 801 } } 810 $__log_ush_ ( dbv , l ) 811 DB_ENV * dbv ; 812 cڡ DB_LSN * l ; 814 DB_THREAD_INFO * ; 815 ENV * v ; 816 t ; 818 v = dbv ->env; 820 `ENV_REQUIRES_CONFIG ( v , 821 v -> lg_hd , "DB_ENV->log_ush", DB_INIT_LOG ); 823 `ENV_ENTER ( v , ); 824 `REPLICATION_WRAP ( v , ( `__log_ush nv, l )), 0, t ); 825 `ENV_LEAVE ( v , ); 826 ( t ); 827 } } 837 #ALREADY_FLUSHED ( , lp ) \ 838 ((( )-> s_l . fe > ( lp )->file) || \ 839 (( )-> s_l . fe =( lp )->file && \ 840 ( )-> s_l . offt > ( lp )->offt)) ) 849 $__log_ush ( v , l ) 850 ENV * v ; 851 cڡ DB_LSN * l ; 853 DB_LOG * db ; 854 LOG * ; 855 t ; 857 db = v -> lg_hd ; 858 = db -> gfo . imy ; 859 i( l ! NULL && `ALREADY_FLUSHED ( ,sn)) 861 `LOG_SYSTEM_LOCK ( v ); 862 t = `__log_ush_t ( db , l , 1); 863 `LOG_SYSTEM_UNLOCK ( v ); 864 ( t ); 865 } } 875 $__log_ush_t ( db , lp , a ) 876 DB_LOG * db ; 877 cڡ DB_LSN * lp ; 878 a ; 880 __db_comm * comm ; 881 ENV * v ; 882 DB_LSN ush_l , f_l ; 883 LOG * ; 884 size_t b_off ; 885 u_t32_t ncomm , w_off ; 886 do_ush , f , t ; 888 v = db ->env; 889 = db -> gfo . imy ; 890 ncomm = 0; 891 t = 0; 893 i( -> db_log_memy ) { 894 -> s_l =p-> l ; 895 `STAT (++ -> . _scou ); 904 i( lp = NULL ) { 905 ush_l . fe = -> l .file; 906 ush_l . offt = -> l .off-p-> n ; 907 } i( lp -> fe > -> l .file || 908 ( lp -> fe = -> l .file && 909 lp -> offt > -> l .off-p-> n )) { 910 `__db_rx ( v , 912 ( u_lg ) lp -> fe , (u_lgp-> offt , 913 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 914 `__db_rx ( v , "%s %s %s", 918 ( `__v_nic ( v , DB_RUNRECOVERY )); 920 i( `ALREADY_FLUSHED ( , lp )) 922 ush_l = * lp ; 929 i( a && -> _ush != 0) { 930 i(( comm = `SH_TAILQ_FIRST ( 931 & -> _comms , __db_comm )= NULL ) { 932 i(( t = `__v_loc (& db -> gfo , 933 ( __db_comm ), & comm )) != 0) 934 ush ; 935 `memt ( comm , 0, (*commit)); 936 i(( t = `__mux_loc ( v , MTX_TXN_COMMIT , 937 DB_MUTEX_SELF_BLOCK , & comm -> mtx_txnwa )) != 0) { 938 `__v_loc_ (& db -> gfo , comm ); 939 ( t ); 941 `MUTEX_LOCK ( v , comm -> mtx_txnwa ); 943 `SH_TAILQ_REMOVE ( 944 & -> _comms , comm , lks , __db_comm ); 946 -> ncomm ++; 952 i( `LOG_COMPARE (& -> t_l , & ush_l ) < 0) 953 -> t_l = ush_l ; 955 comm -> l = ush_l ; 956 `SH_TAILQ_INSERT_HEAD ( 957 & -> comms , comm , lks , __db_comm ); 958 `LOG_SYSTEM_UNLOCK ( v ); 960 `MUTEX_LOCK ( v , comm -> mtx_txnwa ); 961 `LOG_SYSTEM_LOCK ( v ); 963 -> ncomm --; 969 do_ush = `F_ISSET ( comm , DB_COMMIT_FLUSH ); 970 `F_CLR ( comm , DB_COMMIT_FLUSH ); 971 `SH_TAILQ_INSERT_HEAD ( 972 & -> _comms , comm , lks , __db_comm ); 973 i( do_ush ) { 974 -> _ush --; 975 ush_l = -> t_l ; 984 ush : `MUTEX_LOCK ( v , -> mtx_ush ); 992 i( ush_l . fe < -> s_l .file || 993 ( ush_l . fe = -> s_l .file && 994 ush_l . offt < -> s_l .offset)) { 995 `MUTEX_UNLOCK ( v , -> mtx_ush ); 996 de ; 1008 i( -> b_off !0 && `LOG_COMPARE (& ush_l , &-> f_l ) >= 0) { 1009 i(( t = `__log_wre ( db , 1010 db -> bu , ( u_t32_t ) -> b_off )) != 0) { 1011 `MUTEX_UNLOCK ( v , -> mtx_ush ); 1012 de ; 1015 -> b_off = 0; 1016 } i( db -> lfhp = NULL || db-> lame ! -> l . fe ) 1017 i(( t = `__log_wfh ( db , 0)) != 0) { 1018 `MUTEX_UNLOCK ( v , -> mtx_ush ); 1019 de ; 1027 b_off = ->b_off; 1028 w_off = ->w_off; 1029 f_l = ->f_lsn; 1030 -> _ush ++; 1031 i( a ) 1032 `LOG_SYSTEM_UNLOCK ( v ); 1035 i(( t = `__os_fsync ( v , db -> lfhp )) != 0) { 1036 `MUTEX_UNLOCK ( v , -> mtx_ush ); 1037 i( a ) 1038 `LOG_SYSTEM_LOCK ( v ); 1039 t = `__v_nic ( v ,et); 1040 ( t ); 1051 -> s_l = f_l ; 1052 i( b_off == 0) 1053 -> s_l . offt = w_off ; 1055 `MUTEX_UNLOCK ( v , -> mtx_ush ); 1056 i( a ) 1057 `LOG_SYSTEM_LOCK ( v ); 1059 -> _ush --; 1060 `STAT (++ -> . _scou ); 1066 ncomm = 1; 1067 de : 1068 i( -> ncomm != 0) { 1069 f = 1; 1070 `SH_TAILQ_FOREACH ( comm , & -> comms , lks , __db_comm ) 1071 i( `LOG_COMPARE (& -> s_l , & comm -> l ) > 0) { 1072 `MUTEX_UNLOCK ( v , comm -> mtx_txnwa ); 1073 `SH_TAILQ_REMOVE ( 1074 & -> comms , comm , lks , __db_comm ); 1075 ncomm ++; 1076 } i( f == 1) { 1077 `F_SET ( comm , DB_COMMIT_FLUSH ); 1078 `MUTEX_UNLOCK ( v , comm -> mtx_txnwa ); 1079 `SH_TAILQ_REMOVE ( 1080 & -> comms , comm , lks , __db_comm ); 1087 -> _ush ++; 1088 f = 0; 1091 #ifde HAVE_STATISTICS 1092 i( -> . _maxcommrush < ncomm ) 1093 -> . _maxcommrush = ncomm ; 1094 i( -> . _mcommrush > ncomm || 1095 -> . _mcommrush == 0) 1096 -> . _mcommrush = ncomm ; 1099 ( t ); 1100 } } 1107 $__log_fl ( db , l , addr , n ) 1108 DB_LOG * db ; 1109 DB_LSN * l ; 1110 * addr ; 1111 u_t32_t n ; 1113 LOG * ; 1114 u_t32_t bsize , ec ; 1115 size_t nw , ma ; 1116 t ; 1118 = db -> gfo . imy ; 1119 bsize = -> bufr_size ; 1121 i( -> db_log_memy ) { 1122 `__log_mem_cy ( db , -> b_off , addr , n ); 1123 -> b_off = (->b_of+ n %p-> bufr_size ; 1127 n > 0) { 1134 i( -> b_off == 0) 1135 -> f_l = * l ; 1141 i( -> b_off =0 && n > bsize ) { 1142 ec = n / bsize ; 1143 i(( t = `__log_wre ( db , addr , ec * bsize )) != 0) 1144 ( t ); 1145 addr = ( u_t8_t *dd+ ec * bsize ; 1146 n - ec * bsize ; 1147 `STAT (++ -> . _wcou_fl ); 1152 ma = bsize - -> b_off ; 1153 nw = ma > n ?en :emain; 1154 `memy ( db -> bu + -> b_off , addr , nw ); 1155 addr = ( u_t8_t *dd+ nw ; 1156 n -( u_t32_t ) nw ; 1157 -> b_off + nw ; 1160 i( -> b_off = bsize ) { 1161 i(( t = `__log_wre ( db , db-> bu , bsize )) != 0) 1162 ( t ); 1163 -> b_off = 0; 1164 `STAT (++ -> . _wcou_fl ); 1168 } } 1175 $__log_wre ( db , addr , n ) 1176 DB_LOG * db ; 1177 * addr ; 1178 u_t32_t n ; 1180 ENV * v ; 1181 LOG * ; 1182 size_t nw ; 1183 t ; 1185 v = db ->env; 1186 = db -> gfo . imy ; 1188 `DB_ASSERT ( v , ! -> db_log_memy ); 1196 i( db -> lfhp = NULL || db-> lame ! -> l . fe || 1197 db -> lf_timeamp ! -> timeamp ) 1198 i(( t = `__log_wfh ( db , -> w_off == 0)) != 0) 1199 ( t ); 1210 #ifde HAVE_FILESYSTEM_NOTZERO 1211 i( -> w_off =0 && ! `__os_fs_nzo ()) { 1213 i( -> w_off == 0) { 1215 () `__db_fe_exnd ( v , db -> lfhp , -> log_size ); 1216 i( `F_ISSET ( db , DBLOG_ZERO )) 1217 () `__db_zo_exnd ( v , db -> lfhp , 1218 0, -> log_size /-> bufr_size ,p->buffer_size); 1226 i(( t = `__os_io ( v , DB_IO_WRITE , 1227 db -> lfhp , 0, 0, -> w_off , n , addr , & nw )) != 0) 1228 ( t ); 1231 -> w_off + n ; 1234 i(( -> . _wc_bys + n > MEGABYTE ) { 1235 -> . _wc_bys - MEGABYTE ; 1236 ++ -> . _wc_mbys ; 1238 #ifde HAVE_STATISTICS 1239 i(( -> . _w_bys + n > MEGABYTE ) { 1240 -> . _w_bys - MEGABYTE ; 1241 ++ -> . _w_mbys ; 1243 ++ -> . _wcou ; 1247 } } 1256 $__log_fe_ ( dbv , l , m , n ) 1257 DB_ENV * dbv ; 1258 cڡ DB_LSN * l ; 1259 * m ; 1260 size_t n ; 1262 DB_THREAD_INFO * ; 1263 ENV * v ; 1264 t , t ; 1266 v = dbv ->env; 1268 `ENV_REQUIRES_CONFIG ( v , 1269 v -> lg_hd , "DB_ENV->log_fe", DB_INIT_LOG ); 1271 i(( t = `__log_g_cfig ( dbv , DB_LOG_IN_MEMORY , & t )) != 0) 1272 ( t ); 1273 i( t ) { 1274 `__db_rx ( v , 1276 ( EINVAL ); 1279 `ENV_ENTER ( v , ); 1280 `REPLICATION_WRAP ( v , ( `__log_fe nv, l , m , n )), 0, t ); 1281 `ENV_LEAVE ( v , ); 1282 ( t ); 1283 } } 1290 $__log_fe ( v , l , m , n ) 1291 ENV * v ; 1292 cڡ DB_LSN * l ; 1293 * m ; 1294 size_t n ; 1296 DB_LOG * db ; 1297 t ; 1298 * me ; 1300 db = v -> lg_hd ; 1301 `LOG_SYSTEM_LOCK ( v ); 1302 t = `__log_me ( db , l -> fe , & me , NULL , 0); 1303 `LOG_SYSTEM_UNLOCK ( v ); 1304 i( t != 0) 1305 ( t ); 1308 i( n < ` ( me ) + 1) { 1309 * m = '\0'; 1310 `__db_rx ( v , "DB_ENV->log_file:ame buffer isoo short"); 1311 ( EINVAL ); 1313 () `ry ( m , me ); 1314 `__os_ ( v , me ); 1317 } } 1324 $__log_wfh ( db , ) 1325 DB_LOG * db ; 1326 ; 1328 ENV * v ; 1329 LOG * ; 1330 u_t32_t ags ; 1331 t ; 1332 logfe_vidy us ; 1334 v = db ->env; 1335 = db -> gfo . imy ; 1338 i( db -> lfhp ! NULL ) { 1339 () `__os_ohd ( v , db -> lfhp ); 1340 db -> lfhp = NULL ; 1343 ags = DB_OSO_SEQ | 1344 ( ? DB_OSO_CREATE : 0) | 1345 ( `F_ISSET ( db , DBLOG_DIRECT ? DB_OSO_DIRECT : 0) | 1346 ( `F_ISSET ( db , DBLOG_DSYNC ? DB_OSO_DSYNC : 0); 1349 db -> lame = -> l . fe ; 1350 i(( t = `__log_vid ( db , db-> lame , 0, &db-> lfhp , 1351 ags , & us , NULL )) != 0) 1352 `__db_r ( v , t , 1353 "DB_ENV->log_wfh: %lu", ( u_lg ) -> l . fe ); 1354 i( us ! DB_LV_NORMAL && stu! DB_LV_INCOMPLETE && 1355 us ! DB_LV_OLD_READABLE ) 1356 t = DB_NOTFOUND ; 1358 ( t ); 1359 } } 1369 $__log_me ( db , fumb , m , fh , ags ) 1370 DB_LOG * db ; 1371 u_t32_t fumb , ags ; 1372 ** m ; 1373 DB_FH ** fh ; 1375 ENV * v ; 1376 LOG * ; 1377 mode , t ; 1378 * ame ; 1379 d [( LFPREFIX + 5 + 20], w [(LFPREFIX) + 10 + 20]; 1381 v = db ->env; 1382 = db -> gfo . imy ; 1384 `DB_ASSERT ( v , ! -> db_log_memy ); 1404 () `tf ( w , ew), LFNAME , fumb ); 1405 i(( t = `__db_ame ( v , 1406 DB_APP_LOG , w , 0, NULL , m )!0 || fh == NULL) 1407 ( t ); 1410 i( -> femode == 0) 1411 mode = v -> db_mode ; 1413 `LF_SET ( DB_OSO_ABSMODE ); 1414 mode = -> femode ; 1418 db -> lf_timeamp = -> timeamp ; 1419 i(( t = `__os_ݒ ( v , * m , 0, ags , mode , fh )) == 0) 1427 i( t ! ENOENT ) { 1428 `__db_r ( v , t , "%s:og fuėdab", * m ); 1429 ( `__v_nic ( v , t )); 1436 i(! `LF_ISSET ( DB_OSO_RDONLY )) { 1437 `__db_r ( v , t , "%s:og fݒ faed", * m ); 1438 ( `__v_nic ( v , t )); 1442 () `tf ( d , (d), LFNAME_V1 , fumb ); 1443 i(( t = `__db_ame ( v , DB_APP_LOG , d , 0, NULL , & ame )) != 0) 1444 r ; 1451 i(( t = `__os_ݒ ( v , ame , 0, ags , mode , fh )) == 0) { 1452 `__os_ ( v , * m ); 1453 * m = ame ; 1465 r : `__os_ ( v , ame ); 1466 ( t ); 1467 } } 1483 $__log_p_put ( v , lp , c , ags ) 1484 ENV * v ; 1485 DB_LSN * lp ; 1486 cڡ DBT * c ; 1487 u_t32_t ags ; 1489 DBT * dbt , t ; 1490 DB_CIPHER * db_ch ; 1491 DB_LOG * db ; 1492 HDR hdr ; 1493 LOG * ; 1494 ed_ , t ; 1496 db = v -> lg_hd ; 1497 = db -> gfo . imy ; 1499 `LOG_SYSTEM_LOCK ( v ); 1500 `memt (& hdr , 0, ( HDR )); 1501 t = * c ; 1502 dbt = & t ; 1503 ed_ = 0; 1504 db_ch = v -> yo_hd ; 1505 i( `CRYPTO_ON ( v )) 1506 t . size + db_ch -> `adj_size ( c ->size); 1507 i(( t = `__os_oc ( v , 1, t . size , &t. da )) != 0) 1508 r ; 1509 ed_ = 1; 1510 `memy ( t . da , c ->da,ec-> size ); 1512 i(( t = `__log_y_cd ( v , dbt , & hdr , c -> size )) != 0) 1513 r ; 1514 `__db_chksum (& hdr , t . da ,. size , 1515 ( `CRYPTO_ON ( v )? db_ch -> mac_key : NULL , hdr . chksum ); 1517 `DB_ASSERT ( v , `LOG_COMPARE ( lp , & -> l ) == 0); 1518 t = `__log_pu ( db , lp , dbt , -> l . offt -p-> n , & hdr ); 1519 r : 1523 -> ady_l =p-> l ; 1525 i( `LF_ISSET ( DB_LOG_CHKPNT )) 1526 -> . _wc_bys =p->. _wc_mbys = 0; 1529 `STAT (++ -> . _cd ); 1530 `LOG_SYSTEM_UNLOCK ( v ); 1531 i( ed_ ) 1532 `__os_ ( v , t . da ); 1533 ( t ); 1534 } } 1537 $__log_y_cd ( v , dbt , hdr , ig ) 1538 ENV * v ; 1539 DBT * dbt ; 1540 HDR * hdr ; 1541 u_t32_t ig ; 1543 DB_CIPHER * db_ch ; 1544 t ; 1546 i( `CRYPTO_ON ( v )) { 1547 db_ch = v -> yo_hd ; 1548 hdr -> size = HDR_CRYPTO_SZ ; 1549 hdr -> ig_size = ig ; 1550 i(( t = db_ch -> `y ( v , db_ch-> da , 1551 hdr -> iv , dbt -> da , dbt-> size )) != 0) 1552 ( t ); 1554 hdr -> size = HDR_NORMAL_SZ ; 1557 } } @../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 (( ENV *, u_t32_t )); 18 __log_t_s __P (( ENV *, u_t32_t )); 19 __log_ __P (( 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 ENV * v ; 35 t ; 37 v = dbv ->env; 39 `ENV_REQUIRES_CONFIG ( v , 40 v -> lg_hd , "DB_ENV->log_", DB_INIT_LOG ); 42 i(( t = `__db_fchk ( v , 43 "DB_ENV->log_", ags , DB_STAT_CLEAR )) != 0) 44 ( t ); 46 `ENV_ENTER ( v , ); 47 `REPLICATION_WRAP ( v , ( `__log_ nv, p , ags )), 0, t ); 48 `ENV_LEAVE ( v , ); 49 ( t ); 50 } } 57 $__log_ ( v , p , ags ) 58 ENV * v ; 59 DB_LOG_STAT ** p ; 60 u_t32_t ags ; 62 DB_LOG * db ; 63 DB_LOG_STAT * s ; 64 LOG * ; 65 t ; 67 * p = NULL ; 69 db = v -> lg_hd ; 70 = db -> gfo . imy ; 72 i(( t = `__os_umloc ( v , ( DB_LOG_STAT ), & s )) != 0) 73 ( t ); 76 `LOG_SYSTEM_LOCK ( v ); 77 * s = -> ; 78 i( `LF_ISSET ( DB_STAT_CLEAR )) 79 `memt (& -> , 0, (lp->stat)); 81 s -> _magic = -> rsi . magic ; 82 s -> _vsi = -> rsi . vsi ; 83 s -> _mode = -> femode ; 84 s -> _lg_bsize = -> bufr_size ; 85 s -> _lg_size = -> log_nsize ; 87 `__mux_t_wa_fo ( v , -> mtx_gi , 88 & s -> _gi_wa , &s-> _gi_nowa ); 89 i( `LF_ISSET ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ) == DB_STAT_CLEAR) 90 `__mux_r ( v , -> mtx_gi ); 91 s -> _gsize = db -> gfo . -> size ; 93 s -> _cur_fe = -> l . fe ; 94 s -> _cur_offt = -> l . offt ; 95 s -> _disk_fe = -> s_l . fe ; 96 s -> _disk_offt = -> s_l . offt ; 98 `LOG_SYSTEM_UNLOCK ( v ); 100 * p = s ; 102 } } 111 $__log__t_ ( dbv , ags ) 112 DB_ENV * dbv ; 113 u_t32_t ags ; 115 DB_THREAD_INFO * ; 116 ENV * v ; 117 t ; 119 v = dbv ->env; 121 `ENV_REQUIRES_CONFIG ( v , 122 v -> lg_hd , "DB_ENV->log__t", DB_INIT_LOG ); 124 i(( t = `__db_fchk ( v , "DB_ENV->log_stat_print", 125 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 126 ( t ); 128 `ENV_ENTER ( v , ); 129 `REPLICATION_WRAP ( v , ( `__log__t nv, ags )), 0, t ); 130 `ENV_LEAVE ( v , ); 131 ( t ); 132 } } 141 $__log__t ( v , ags ) 142 ENV * v ; 143 u_t32_t ags ; 145 u_t32_t ig_ags ; 146 t ; 148 ig_ags = ags ; 149 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 150 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 151 t = `__log_t_s ( v , ig_ags ); 152 i( ags =0 || t != 0) 153 ( t ); 156 i( `LF_ISSET ( DB_STAT_ALL ) && 157 ( t = `__log_t_l ( v , ig_ags )) != 0) 158 ( t ); 161 } } 168 $__log_t_s ( v , ags ) 169 ENV * v ; 170 u_t32_t ags ; 172 DB_LOG_STAT * ; 173 t ; 175 i(( t = `__log_ ( v , & , ags )) != 0) 176 ( t ); 178 i( `LF_ISSET ( DB_STAT_ALL )) 179 `__db_msg ( v , "Defaultoggingegion information:"); 180 `STAT_HEX ("Log maginumb", -> _magic ); 181 `STAT_ULONG ("Log vsiڂumb", -> _vsi ); 182 `__db_dlbys ( v , "Logecord cache size", 183 ( u_lg )0, (u_lg)0, (u_lg) -> _lg_bsize ); 184 `__db_msg ( v , "%#o\tLog fmode", -> _mode ); 185 i( -> _lg_size % MEGABYTE == 0) 186 `__db_msg ( v , "%luMb\tCurrentog file size", 187 ( u_lg ) -> _lg_size / MEGABYTE ); 188 i( -> _lg_size % 1024 == 0) 189 `__db_msg ( v , "%luKb\tCurrentog file size", 190 ( u_lg ) -> _lg_size / 1024); 192 `__db_msg ( v , "%lu\tCurrentog file size", 193 ( u_lg ) -> _lg_size ); 194 `__db_dl ( v , "Recdd ithlog", ( u_lg ) -> _cd ); 195 `__db_dlbys ( v , "Log bytes written", 196 ( u_lg )0, (u_lg) -> _w_mbys , (u_lg)-> _w_bys ); 197 `__db_dlbys ( v , "Log bytes written sinceast checkpoint", 198 ( u_lg )0, (u_lg) -> _wc_mbys , (u_lg)-> _wc_bys ); 199 `__db_dl ( v , "Tٮog fI/O wres", ( u_lg ) -> _wcou ); 200 `__db_dl ( v , "Totalog file I/O writes dueo overflow", 201 ( u_lg ) -> _wcou_fl ); 202 `__db_dl ( v , "Tٮog fushes", ( u_lg ) -> _scou ); 203 `__db_dl ( v , "Tٮog fI/Ods", ( u_lg ) -> _rcou ); 204 `STAT_ULONG ("Culog fnumb", -> _cur_fe ); 205 `STAT_ULONG ("Culog fofft", -> _cur_offt ); 206 `STAT_ULONG ("On-diskog fnumb", -> _disk_fe ); 207 `STAT_ULONG ("On-diskog fofft", -> _disk_offt ); 209 `__db_dl ( v , 210 "Maximum commog flush", ( u_lg ) -> _maxcommrush ); 211 `__db_dl ( v , 212 "Mimum commog flush", ( u_lg ) -> _mcommrush ); 214 `__db_dlbys ( v , "Logegion size", 215 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 216 `__db_dl_p ( v , 218 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 219 -> _gi_wa + sp-> _gi_nowa ), NULL ); 221 `__os_u ( v , ); 224 } } 231 $__log_t_l ( v , ags ) 232 ENV * v ; 233 u_t32_t ags ; 235 cڡ FN [] = { 236 { DBLOG_RECOVER , "DBLOG_RECOVER" }, 237 { DBLOG_FORCE_OPEN , "DBLOG_FORCE_OPEN" }, 238 { DBLOG_AUTOREMOVE , "DBLOG_AUTOREMOVE"}, 239 { DBLOG_DIRECT , "DBLOG_DIRECT"}, 240 { DBLOG_DSYNC , "DBLOG_DSYNC"}, 241 { DBLOG_FORCE_OPEN , "DBLOG_FORCE_OPEN"}, 242 { DBLOG_INMEMORY , "DBLOG_INMEMORY"}, 243 { DBLOG_OPENFILES , "DBLOG_OPENFILES"}, 244 { DBLOG_RECOVER , "DBLOG_RECOVER"}, 245 { DBLOG_ZERO , "DBLOG_ZERO"}, 246 { 0, NULL } 248 DB_LOG * db ; 249 LOG * ; 251 db = v -> lg_hd ; 252 = ( LOG *) db -> gfo . imy ; 254 `LOG_SYSTEM_LOCK ( v ); 256 `__db_t_gfo ( v , & db -> gfo , "Log", ags ); 258 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 259 `__db_msg ( v , "DB_LOG handle information:"); 260 `__mux_t_debug_sg ( 261 v , "DB_LOG hd mux", db -> mtx_dbg , ags ); 262 `STAT_ULONG ("Log fme", db -> lame ); 263 `__db_t_fh ( v , "Log fhd", db -> lfhp , ags ); 264 `__db_ags ( v , NULL , db -> ags , , NULL, "\tFlags"); 266 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 267 `__db_msg ( v , "LOG handle information:"); 268 `__mux_t_debug_sg ( 269 v , "LOGegi mux", -> mtx_gi , ags ); 270 `__mux_t_debug_sg ( 271 v , "Fmli mux", -> mtx_fi , ags ); 273 `STAT_HEX ("rsi.magic", -> rsi . magic ); 274 `STAT_ULONG ("rsi.vsi", -> rsi . vsi ); 275 `__db_dlbys ( v , 276 "rsi.log_size", ( u_lg )0, (u_lg)0, -> rsi . log_size ); 277 `STAT_FMT ("log frmissiڠmode", "%#lo", u_lg , -> femode ); 278 `STAT_LSN ("cufoffLSN", & -> l ); 279 `STAT_LSN ("f bufby LSN", & -> l ); 280 `STAT_ULONG ("cubufofft", -> b_off ); 281 `STAT_ULONG ("cufwrofft", -> w_off ); 282 `STAT_ULONG ("ngth oϡecd", -> n ); 283 `STAT_LONG ("log flush iogss", -> _ush ); 284 `__mux_t_debug_sg ( 285 v , "Log flush mux", -> mtx_ush , ags ); 287 `STAT_LSN ("ϡ synLSN", & -> s_l ); 294 `STAT_LSN ("ched checkpoLSN", & -> ched_ckp_l ); 296 `__db_dlbys ( v , 297 "log bufsize", ( u_lg )0, (u_lg)0, -> bufr_size ); 298 `__db_dlbys ( v , 299 "log fsize", ( u_lg )0, (u_lg)0, -> log_size ); 300 `__db_dlbys ( v , 301 "xlog fsize", ( u_lg )0, (u_lg)0, -> log_nsize ); 303 `STAT_ULONG ("iڠwagcomm", -> ncomm ); 304 `STAT_LSN ("LSN of comm", & -> t_l ); 306 `LOG_SYSTEM_UNLOCK ( v ); 309 } } 314 $__log__ ( dbv , p , ags ) 315 DB_ENV * dbv ; 316 DB_LOG_STAT ** p ; 317 u_t32_t ags ; 319 `COMPQUIET ( p , NULL ); 320 `COMPQUIET ( ags , 0); 322 ( `__db__n_but ( dbv -> v )); 323 } } 326 $__log__t_ ( dbv , ags ) 327 DB_ENV * dbv ; 328 u_t32_t ags ; 330 `COMPQUIET ( ags , 0); 332 ( `__db__n_but ( dbv -> v )); 333 } } @../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_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 , * mvcc_bhp , * t1bhp , * t2bhp , * t3bhp ; 34 BH_FROZEN_PAGE * oz_bhp ; 35 DB_LSN vl ; 36 DB_MPOOL_HASH * dbht , * hp , * hp_d , * hp_ved , * hp_tmp ; 37 ENV * v ; 38 MPOOL * c_mp ; 39 MPOOLFILE * bh_m ; 40 size_t d_a ; 41 u_t32_t bucks , bufrs , high_iܙy , iܙy , iܙy_ved ; 42 u_t32_t put_cou , tٮ_bucks ; 43 aggssive , loc_ze , giveup , g_de , t ; 44 u_t8_t * dp ; 45 * p ; 47 v = dbmp ->env; 48 c_mp = f -> imy ; 49 dbht = `R_ADDR ( f , c_mp -> hb ); 50 hp_d = & dbht [ c_mp -> hb_bucks ]; 51 hp_ved = NULL ; 52 iܙy_ved = 0; 54 bucks = bufrs = put_cou = tٮ_bucks = 0; 55 aggssive = loc_ze = giveup = g_de = 0; 57 `STAT ( c_mp -> . _loc ++); 66 i( m ! NULL ) { 67 n = `SSZA ( BH , buf + m -> . _gesize ; 69 `MVCC_BHSIZE ( m , n ); 72 `MPOOL_REGION_LOCK ( v , f ); 78 high_iܙy = c_mp -> u_cou - c_mp-> . _ges / 10; 89 loc : i(( t = `__v_loc ( f , n , & p )) == 0) { 90 i( m ! NULL ) 91 c_mp -> . _ges ++; 92 `MPOOL_REGION_UNLOCK ( v , f ); 97 `MVCC_BHALIGN ( m , p ); 99 found : i( off ! NULL ) 100 * off = `R_OFFSET ( f , p ); 101 *(**) = p ; 109 #ifde HAVE_STATISTICS 110 tٮ_bucks + bucks ; 111 i( tٮ_bucks != 0) { 112 i( tٮ_bucks > c_mp -> . _loc_max_bucks ) 113 c_mp -> . _loc_max_bucks = tٮ_bucks ; 114 c_mp -> . _loc_bucks + tٮ_bucks ; 116 i( bufrs != 0) { 117 i( bufrs > c_mp -> . _loc_max_ges ) 118 c_mp -> . _loc_max_ges = bufrs ; 119 c_mp -> . _loc_ges + bufrs ; 123 } i( giveup || c_mp -> . _ges == 0) { 124 `MPOOL_REGION_UNLOCK ( v , f ); 126 `__db_rx ( v , 128 ( t ); 130 t = 0; 136 d_a = 0; 137 tٮ_bucks + bucks ; 138 bucks = 0; 147 i( c_mp -> . _ges == 0) 148 loc ; 151 hp = & dbht [ c_mp -> ϡ_checked ++]; 152 i( hp > hp_d ) { 153 c_mp -> ϡ_checked = 0; 154 hp = & dbht [ c_mp -> ϡ_checked ++]; 189 i( bucks ++ = c_mp -> hb_bucks ) { 190 i( d_a > 0) 191 loc ; 192 `MPOOL_REGION_UNLOCK ( v , f ); 194 ++ aggssive ) { 198 put_cou = c_mp ->put_counter; 204 () `__memp_sync_t ( 205 v , NULL , 0, DB_SYNC_ALLOC , NULL, NULL); 207 `__os_yld ( v , 1, 0); 210 aggssive = 1; 211 i( put_cou = c_mp ->put_counter) 212 giveup = 1; 216 `MPOOL_REGION_LOCK ( v , f ); 217 loc ; 226 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh = NULL ) 230 `MPOOL_REGION_UNLOCK ( v , f ); 231 `MUTEX_LOCK ( v , hp -> mtx_hash ); 251 y_ch : bhp = mvcc_bhp = NULL ; 252 `SH_TAILQ_FOREACH ( t1bhp , & hp -> hash_buck , hq , __bh ) { 260 i( `SH_CHAIN_SINGLETON ( t1bhp , vc )) { 261 i( t1bhp -> f == 0 && 262 ( aggssive || 263 t1bhp -> iܙy < high_iܙy ) && 264 ( bhp = NULL || 265 bhp -> iܙy > t1bhp ->priority)) 266 bhp = t1bhp ; 273 t2bhp = t1bhp ; 275 t3bhp = t2bhp ; 285 i( t2bhp -> f == 0 && 286 aggssive && 287 ( mvcc_bhp = NULL || 288 mvcc_bhp -> iܙy > t2bhp ->priority)) 289 mvcc_bhp = t2bhp ; 291 (( t2bhp = `SH_CHAIN_PREV 2bhp, vc , __bh )! NULL ); 302 y_obsޑe : i( `BH_OBSOLETE ( t3bhp , hp -> d_ad , vl )) { 303 bhp = t3bhp ; 304 this_bufr ; 306 i(! g_de ) { 307 i(( t = `__txn_de_ad ( 308 v , & hp -> d_ad )) != 0) 309 ( t ); 310 g_de = 1; 311 y_obsޑe ; 322 i( bhp = NULL ) { 323 i( mvcc_bhp = NULL ) 324 xt_hb ; 325 bhp = mvcc_bhp ; 329 iܙy = bhp ->priority; 330 i( c_mp -> u_t !0 && c_mp->u_< hp - dbht ) 331 iܙy - MPOOL_BASE_DECREMENT ; 338 i( hp_ved = NULL ) { 339 hp_ved = hp ; 340 iܙy_ved = iܙy ; 341 xt_hb ; 369 i( iܙy > iܙy_ved && hp ! hp_ved ) { 370 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 371 hp_tmp = hp_ved ; 372 hp_ved = hp ; 373 hp = hp_tmp ; 374 iܙy_ved = iܙy ; 375 `MUTEX_LOCK ( v , hp -> mtx_hash ); 376 y_ch ; 379 this_bufr : bufrs ++; 385 hp_ved = NULL ; 388 bh_m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 391 t = 0; 392 i( `F_ISSET ( bhp , BH_DIRTY )) { 393 ++ bhp -> f ; 394 t = `__memp_bhwre ( dbmp , hp , bh_m , bhp , 0); 395 -- bhp -> f ; 396 #ifde HAVE_STATISTICS 397 i( t == 0) 398 ++ c_mp -> . _rw_evi ; 401 #ifde HAVE_STATISTICS 403 ++ c_mp -> . _ro_evi ; 411 i( t =0 && bh_m -> muivsi ) { 412 i(! g_de && ! `SH_CHAIN_HASPREV ( bhp , vc ) && 413 ! `BH_OBSOLETE ( bhp , hp -> d_ad , vl )) { 414 () `__txn_de_ad ( v , 415 & hp -> d_ad ); 416 g_de = 1; 418 i( `SH_CHAIN_HASPREV ( bhp , vc ) || 419 ! `BH_OBSOLETE ( bhp , hp -> d_ad , vl )) { 424 i(! aggssive || 425 `F_ISSET ( bhp , BH_FROZEN || bhp-> f != 0) 426 xt_hb ; 427 t = `__memp_bh_ze ( dbmp , 428 f , hp , bhp , & loc_ze ); 443 i( t !0 || bhp -> f != 0) { 444 i( t !0 && aggssive ) 445 `__memp_bad_bufr ( hp ); 446 xt_hb ; 453 i( `F_ISSET ( bhp , BH_FROZEN )) { 454 ++ bhp -> f ; 455 i(( t = `__memp_bh_thaw ( dbmp , f , hp , 456 bhp , NULL )) != 0) { 457 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 458 ( t ); 460 loc_ze = 0; 461 y_ch ; 470 i( loc_ze ) { 471 i(( t = `__memp_bh ( dbmp , f , hp , bhp , 0)) != 0) 472 ( t ); 473 `MVCC_MPROTECT ( bhp -> buf , bh_m -> . _gesize , 474 PROT_READ | PROT_WRITE | PROT_EXEC ); 476 `MPOOL_REGION_LOCK ( v , f ); 477 `SH_TAILQ_INSERT_TAIL (& c_mp -> loc_oz , 478 ( BH_FROZEN_ALLOC *) bhp , lks ); 479 oz_bhp = ( BH_FROZEN_PAGE *) 480 (( BH_FROZEN_ALLOC *) bhp + 1); 481 dp = ( u_t8_t *) bhp -> buf + bh_m -> . _gesize ; 482 ( u_t8_t *)( oz_bhp + 1< dp ) { 483 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , 484 ( BH *) oz_bhp , hq ); 485 oz_bhp ++; 487 loc_ze = 0; 496 i( m ! NULL && 497 m -> . _gesize = bh_m ->stat.st_pagesize) { 498 i(( t = `__memp_bh ( dbmp , f , hp , bhp , 0)) != 0) 499 ( t ); 500 p = bhp ; 501 found ; 504 d_a +(* bhp + bh_m -> . _gesize ; 505 i(( t = 506 `__memp_bh ( dbmp , f , hp , bhp , BH_FREE_FREEMEM )) != 0) 507 ( t ); 510 i( aggssive > 1) 511 aggssive = 1; 519 xt_hb : `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 521 `MPOOL_REGION_LOCK ( v , f ); 529 i( d_a >3 * n ) 530 loc ; 533 } } 542 $__memp_ ( f , m , buf ) 543 REGINFO * f ; 544 MPOOLFILE * m ; 545 * buf ; 547 `MVCC_BHUNALIGN ( m , buf ); 548 `COMPQUIET ( m , NULL ); 549 `__v_loc_ ( f , buf ); 550 } } 557 $__memp_bad_bufr ( hp ) 558 DB_MPOOL_HASH * hp ; 560 BH * bhp , * ϡ_bhp ; 561 u_t32_t iܙy ; 567 bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh ); 568 ϡ_bhp = `SH_TAILQ_LASTP (& hp -> hash_buck , hq , __bh ); 569 i( bhp = ϡ_bhp ) 573 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 579 iܙy = `BH_PRIORITY ( ϡ_bhp ); 585 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 586 ; bhp ! NULL ; bh `SH_CHAIN_PREV (bhp, vc , __bh )) 587 bhp -> iܙy =riority; 588 } } @../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 (( 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_MPOOLFILE * dbm ; 36 DB_MPREG * meg ; 37 ENV * v ; 38 t ; 40 v = dbmp ->env; 47 i( m -> ddfe ) 48 ( `__memp_pgwre ( v , NULL , hp , bhp )); 54 `MUTEX_LOCK ( v , 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 ( v , 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 ( v , dbmp -> mux ); 76 i( dbm -> fhp = NULL ) 77 t = `__db_ame ( v , DB_APP_TMP , NULL , 78 `F_ISSET ( v -> dbv , DB_ENV_DIRECT_DB ) ? 79 DB_OSO_DIRECT : 0, & dbm -> fhp , NULL ); 81 t = 0; 82 `MUTEX_UNLOCK ( v , dbmp -> mux ); 83 i( t != 0) { 84 `__db_rx ( v , 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 ( v , dbmp -> mux ); 134 `LIST_FOREACH ( meg , & dbmp -> dbgq , q ) 135 i( meg -> y = m ->ftype) 137 `MUTEX_UNLOCK ( v , dbmp -> mux ); 138 i( meg = NULL ) 139 ( EPERM ); 149 i(( t = `__memp_f ( v , & 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 ( v , dbm , hp , bhp ); 169 i( dbm = NULL ) 170 ( t ); 176 `MUTEX_LOCK ( v , dbmp -> mux ); 177 i( dbm -> f == 1) 178 `F_SET ( dbm , MP_FLUSH ); 180 -- dbm -> f ; 181 `MUTEX_UNLOCK ( v , 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 ENV * v ; 200 MPOOLFILE * m ; 201 size_t n , ; 202 u_t32_t gesize ; 203 t ; 205 v = dbm ->env; 206 m = dbm ->mfp; 207 gesize = m -> . _gesize ; 210 `DB_ASSERT ( v , ! `F_ISSET ( bhp , BH_DIRTY_CREATE | BH_LOCKED )); 211 `DB_ASSERT ( v , n_ || ! `F_ISSET ( bhp , BH_DIRTY )); 214 `F_SET ( bhp , BH_LOCKED | BH_TRASH ); 215 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 221 = 0; 222 i( dbm -> fhp ! NULL ) 223 i(( t = `__os_io ( v , 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 ( v , 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 ( v , hp -> mtx_io ); 288 ( t ); 296 `__memp_pgwre ( v , dbm , hp , bhp ) 297 ENV * v ; 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 ( v , `F_ISSET ( bhp , BH_DIRTY )); 312 `DB_ASSERT ( v , ! `F_ISSET ( bhp , BH_TRASH )); 318 `F_SET ( bhp , BH_LOCKED ); 319 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 330 i( m = NULL || m-> ddfe ) 331 fe_dd ; 337 i( `LOGGING_ON ( v && m -> l_off ! DB_LSN_OFF_NOTSET && 338 ! `IS_CLIENT_PGRECOVER ( v )) { 339 `memy (& l , bhp -> buf + m -> l_off , ( DB_LSN )); 340 i(! `IS_NOT_LOGGED_LSN ( l ) && 341 ( t = `__log_ush ( v , & l )) != 0) 342 r ; 345 #ifde DIAGNOSTIC 364 i( `LOGGING_ON ( v && ! `IS_NOT_LOGGED_LSN ( `LSN ( bhp -> buf )) && 365 ! `IS_CLIENT_PGRECOVER ( v )) { 372 DB_LOG * db ; 373 LOG * ; 375 db = v -> lg_hd ; 376 = db -> gfo . imy ; 377 i(! -> db_log_memy && 378 `LOG_COMPARE (& -> s_l , & `LSN ( bhp -> buf )) <= 0) { 379 `MUTEX_LOCK ( v , -> mtx_ush ); 380 `DB_ASSERT ( v , 381 `LOG_COMPARE (& -> s_l , & `LSN ( bhp -> buf )) > 0); 382 `MUTEX_UNLOCK ( v , -> 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 v , DB_IO_WRITE , dbm -> fhp , bhp -> pgno , m -> . _gesize , 401 0, m -> . _gesize , bhp -> buf , & nw )) != 0) { 402 `__db_rx ( v , "%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 ( v , m -> mux ); 409 i( bhp -> pgno > m -> ϡ_ushed_pgno ) 410 m -> ϡ_ushed_pgno = bhp -> pgno ; 411 `MUTEX_UNLOCK ( v , m -> mux ); 414 r : 415 fe_dd : 423 `MUTEX_LOCK ( v , hp -> mtx_hash ); 429 i( pg ) 430 `F_SET ( bhp , BH_CALLPGIN ); 436 i( t == 0) { 437 `DB_ASSERT ( v , 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 ( v , 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_MPOOL * dbmp ; 471 DB_MPREG * meg ; 472 ENV * v ; 473 MPOOLFILE * m ; 474 y , t ; 476 v = dbm ->env; 477 dbmp = v -> mp_hd ; 478 m = dbm ->mfp; 480 i(( y = m ->y= DB_FTYPE_SET ) 481 meg = dbmp -> pg_out ; 483 `MUTEX_LOCK ( v , dbmp -> mux ); 484 `LIST_FOREACH ( meg , & dbmp -> dbgq , q ) 485 i( y = meg ->ftype) 487 `MUTEX_UNLOCK ( v , 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 && ( t = 502 meg -> `pg ( v -> dbv , bhp -> pgno , bhp-> buf , db )) != 0) 503 r ; 505 i( meg -> pgout ! NULL && ( t = 506 meg -> `pgout ( v -> dbv , bhp -> pgno , bhp-> buf , db )) != 0) 507 r ; 511 r : `__db_rx ( v , "%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 ENV * v ; 532 #ifde DIAGNOSTIC 533 DB_LSN vl ; 535 BH * ev_bhp ; 536 MPOOL * c_mp ; 537 MPOOLFILE * m ; 538 t , t_t ; 539 #ifde DIAG_MVCC 540 size_t gesize ; 543 t = 0; 548 v = dbmp ->env; 549 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 550 #ifde DIAG_MVCC 551 gesize = m -> . _gesize ; 554 `DB_ASSERT ( v , bhp -> f =0 && ! `F_ISSET (bhp, BH_FROZEN )); 555 `DB_ASSERT ( v , `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 ( v , bhp )) : 561 `BH_OBSOLETE ( bhp , hp -> d_ad , vl ))); 567 ev_bhp = `SH_CHAIN_PREV ( bhp , vc , __bh ); 568 i( `SH_CHAIN_NEXT ( bhp , vc , __bh = NULL ) { 569 i( ev_bhp ! NULL ) 570 `SH_TAILQ_INSERT_AFTER (& hp -> hash_buck , 571 bhp , ev_bhp , hq , __bh ); 572 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 574 `SH_CHAIN_REMOVE ( bhp , vc , __bh ); 582 i( bhp -> td_off ! INVALID_ROFF && ! `LF_ISSET ( BH_FREE_UNLOCKED )) { 583 t = `__txn_move_bufr ( 584 v , `BH_OWNER nv, bhp ), hp -> mtx_hash ); 585 bhp -> td_off = INVALID_ROFF ; 592 `MVCC_MPROTECT ( bhp -> buf , gesize , PROT_READ | PROT_WRITE | PROT_EXEC ); 598 i( `LF_ISSET ( BH_FREE_REUSE )) 605 i(! `LF_ISSET ( BH_FREE_UNLOCKED )) 606 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 612 i( `LF_ISSET ( BH_FREE_FREEMEM )) { 613 `MPOOL_REGION_LOCK ( v , f ); 615 `__memp_ ( f , m , bhp ); 616 c_mp = f -> imy ; 617 c_mp -> . _ges --; 619 `MPOOL_REGION_UNLOCK ( v , f ); 626 `MUTEX_LOCK ( v , m -> mux ); 627 i(-- m -> block_t =0 && m-> mpf_t == 0) { 628 i(( t_t = `__memp_mf_disrd ( dbmp , m )!0 && t == 0) 629 t = t_t ; 631 `MUTEX_UNLOCK ( v , m -> mux ); 633 ( 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_THREAD_INFO * ; 32 ENV * v ; 33 p_blocked , t ; 35 v = dbm ->env; 37 `MPF_ILLEGAL_BEFORE_OPEN ( dbm , "DB_MPOOLFILE->get"); 52 #OKFLAGS ( DB_MPOOL_CREATE | DB_MPOOL_DIRTY | \ 53 DB_MPOOL_EDIT | DB_MPOOL_LAST | DB_MPOOL_NEW ) ) 54 i( ags != 0) { 55 i(( t = `__db_fchk ( v , "memp_fg", ags , OKFLAGS )) != 0) 56 ( t ); 58 ags ) { 59 DB_MPOOL_DIRTY : 60 DB_MPOOL_CREATE : 61 DB_MPOOL_EDIT : 62 DB_MPOOL_LAST : 63 DB_MPOOL_NEW : 66 ( `__db_ ( v , "memp_fget", 1)); 70 `ENV_ENTER ( v , ); 72 p_blocked = 0; 73 i( tx = NULL && `IS_ENV_REPLICATED ( v )) { 74 i(( t = `___p_r ( v )) != 0) 75 r ; 76 p_blocked = 1; 78 t = `__memp_fg ( dbm , pgnddr , , tx , ags , add ); 84 i( t !0 && p_blocked ) 85 () `___p_ex ( v ); 88 r : i( t != 0) 89 `ENV_LEAVE ( v , ); 91 ( t ); 92 } } 102 $__memp_fg ( dbm , pgnddr , , txn , ags , add ) 103 DB_MPOOLFILE * dbm ; 104 db_pgno_t * pgnddr ; 105 DB_THREAD_INFO * ; 106 DB_TXN * txn ; 107 u_t32_t ags ; 108 * add ; 110 um { FIRST_FOUND , FIRST_MISS , SECOND_FOUND , SECOND_MISS } e ; 111 BH * loc_bhp , * bhp , * oz_bhp , * de_bhp ; 112 ENV * v ; 113 DB_LSN * ad_lp , vl ; 114 DB_MPOOL * dbmp ; 115 DB_MPOOL_HASH * hp ; 116 MPOOL * c_mp ; 117 MPOOLFILE * m ; 118 PIN_LIST * li , * ; 119 REGINFO * f , * t_f , * gfo ; 120 TXN_DETAIL * td ; 121 roff_t li_off , mf_offt ; 122 u_t32_t pmax , _hch ; 123 b_ , b_locked , dty , ed , exndg , f ; 124 makecy , mvcc , ed_ , t ; 126 *(**) add = NULL ; 127 `COMPQUIET ( c_mp , NULL ); 128 `COMPQUIET ( f , NULL ); 129 `COMPQUIET ( de_bhp , NULL ); 131 v = dbm ->env; 132 dbmp = v -> mp_hd ; 134 m = dbm ->mfp; 135 mvcc = m -> muivsi ; 136 mf_offt = `R_OFFSET ( dbmp -> gfo , m ); 137 loc_bhp = bhp = oz_bhp = NULL ; 138 ad_lp = NULL ; 139 td = NULL ; 140 hp = NULL ; 141 b_ = b_locked = exndg = makecy = t = 0; 143 i( `LF_ISSET ( DB_MPOOL_DIRTY )) { 144 i( `F_ISSET ( dbm , MP_READONLY )) { 145 `__db_rx ( v , 147 `__memp_ ( dbm )); 148 ( EINVAL ); 150 i(( t = `__db_fcchk ( v , "DB_MPOOLFILE->get", 151 ags , DB_MPOOL_DIRTY , DB_MPOOL_EDIT )) != 0) 152 ( t ); 155 dty = `LF_ISSET ( DB_MPOOL_DIRTY ); 156 ed = `LF_ISSET ( DB_MPOOL_EDIT ); 157 `LF_CLR ( DB_MPOOL_DIRTY | DB_MPOOL_EDIT ); 165 i( mvcc && txn ! NULL &&xn-> td != NULL) { 167 txn -> ! NULL ) 168 txn =xn-> ; 169 td = ( TXN_DETAIL *) txn ->td; 170 i( `F_ISSET ( txn , TXN_SNAPSHOT )) { 171 ad_lp = & td -> ad_l ; 172 i( `IS_MAX_LSN (* ad_lp ) && 173 ( t = `__log_cut_l ( v , ad_lp , 174 NULL , NULL)) != 0) 175 ( t ); 177 i(( dty || `LF_ISSET ( DB_MPOOL_CREATE | DB_MPOOL_NEW )) && 178 td -> mvcc_mtx = MUTEX_INVALID && ( t = 179 `__mux_loc ( v , MTX_TXN_MVCC , 0, & td -> mvcc_mtx )) != 0) 180 ( t ); 183 ags ) { 184 DB_MPOOL_LAST : 186 `MUTEX_LOCK ( v , m -> mux ); 187 * pgnddr = m -> ϡ_pgno ; 188 `MUTEX_UNLOCK ( v , m -> mux ); 190 DB_MPOOL_NEW : 195 e = FIRST_MISS ; 196 loc ; 197 DB_MPOOL_CREATE : 224 i( dbm -> addr ! NULL && 225 `F_ISSET ( m , MP_CAN_MMAP && * pgnddr <m-> ig_ϡ_pgno ) { 226 *(**) add = ( u_t8_t *) dbm -> addr + 227 (* pgnddr * m -> . _gesize ); 228 `STAT (++ m -> . _m ); 232 y : 237 `MP_GET_BUCKET ( v , m , * pgnddr , & f , hp , t ); 238 i( t != 0) 239 ( t ); 240 c_mp = f -> imy ; 243 _hch = 0; 244 b_locked = 1; 245 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 246 ++ _hch ; 247 i( bhp -> pgno !* pgnddr || bhp-> mf_offt != mf_offset) 251 i( mvcc && ! ed && ad_lp ! NULL ) { 252 bhp ! NULL && 253 ! `BH_OWNED_BY ( v , bhp , txn ) && 254 ! `BH_VISIBLE ( v , bhp , ad_lp , vl )) 255 bhp = `SH_CHAIN_PREV (bhp, vc , __bh ); 257 `DB_ASSERT ( v , bhp ! NULL ); 260 makecy = mvcc && dty && ! `BH_OWNED_BY ( v , bhp , txn ); 262 i( `F_ISSET ( bhp , BH_FROZEN && !F_ISSET(bhp, BH_FREED )) { 263 `DB_ASSERT ( v , oz_bhp = NULL ); 264 oz_bhp = bhp ; 273 i( bhp -> f = UINT16_MAX ) { 274 `__db_rx ( v , 276 `__memp_ ( dbm ), ( u_lg ) bhp -> pgno ); 277 t = `__v_nic ( v , EINVAL ); 278 r ; 280 ++ bhp -> f ; 281 b_ = 1; 290 f = 1; `F_ISSET ( bhp , BH_LOCKED ) && 291 ! `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING ); f = 0) { 297 i(! f && bhp -> f_sync != 0) { 298 -- bhp -> f ; 299 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 300 bhp = oz_bhp = NULL ; 301 b_ = b_locked = 0; 302 `__os_yld ( v , 0, 1); 303 y ; 311 i(! `F_ISSET ( hp , IO_WAITER )) { 312 `F_SET ( hp , IO_WAITER ); 313 `MUTEX_LOCK ( v , hp -> mtx_io ); 315 `STAT (++ hp -> hash_io_wa ); 318 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 321 `MUTEX_LOCK ( v , hp -> mtx_io ); 322 `MUTEX_UNLOCK ( v , hp -> mtx_io ); 325 `MUTEX_LOCK ( v , hp -> mtx_hash ); 334 i( oz_bhp ! NULL && `F_ISSET (oz_bhp, BH_THAWED )) { 335 thawed : ed_ = (-- oz_bhp -> f == 0); 336 b_ = 0; 337 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 338 `MPOOL_REGION_LOCK ( v , f ); 339 i( loc_bhp ! NULL ) { 340 `__memp_ ( f , m , loc_bhp ); 341 loc_bhp = NULL ; 343 i( ed_ ) 344 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , 345 oz_bhp , hq ); 346 `MPOOL_REGION_UNLOCK ( v , f ); 347 bhp = oz_bhp = NULL ; 348 y ; 355 i( `SH_CHAIN_HASNEXT ( bhp , vc ) && 356 `SH_CHAIN_NEXTP ( bhp , vc , __bh )-> td_off == bhp->td_off) { 357 -- bhp -> f ; 358 b_ = 0; 359 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 360 bhp = oz_bhp = NULL ; 361 y ; 362 } i( dty && `SH_CHAIN_HASNEXT ( bhp , vc )) { 363 t = DB_LOCK_DEADLOCK ; 364 r ; 367 #ifde HAVE_STATISTICS 368 ++ m -> . _che_h ; 373 #ifde HAVE_STATISTICS 378 ++ c_mp -> . _hash_ches ; 379 i( _hch > c_mp -> . _hash_lge ) 380 c_mp -> . _hash_lge = _hch ; 381 c_mp -> . _hash_examed + _hch ; 407 e = bhp = NULL ? 408 ( loc_bhp = NULL ? FIRST_MISS : SECOND_MISS ) : 409 ( loc_bhp = NULL ? FIRST_FOUND : SECOND_FOUND ); 411 e ) { 412 FIRST_FOUND : 418 i( ags = DB_MPOOL_FREE ) { 419 i(-- bhp -> f == 0) { 420 i( `F_ISSET ( bhp , BH_DIRTY )) { 421 -- hp -> hash_ge_dty ; 422 `F_CLR ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 434 i( mvcc && ( `F_ISSET ( bhp , BH_FROZEN ) || 435 ! `SH_CHAIN_SINGLETON ( bhp , vc ) || 436 bhp -> td_off = INVALID_ROFF || 437 ! `IS_MAX_LSN (* `VISIBLE_LSN ( v , bhp )))) { 438 `F_SET ( bhp , BH_FREED ); 439 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 442 ( `__memp_bh ( 443 dbmp , f , hp , bhp , BH_FREE_FREEMEM )); 445 `__db_rx ( v , 447 `__memp_s ( dbmp , m ), ( u_lg )* pgnddr ); 448 t = `__v_nic ( v , EINVAL ); 449 r ; 452 i( mvcc ) { 453 i( ags = DB_MPOOL_CREATE && 454 `F_ISSET ( bhp , BH_FREED )) { 455 exndg = makecy = 1; 456 `MUTEX_LOCK ( v , m -> mux ); 457 i(* pgnddr > m -> ϡ_pgno ) 458 m -> ϡ_pgno = * pgnddr ; 459 `MUTEX_UNLOCK ( v , m -> mux ); 473 u : i(( makecy || oz_bhp ! NULL && ( de_bhp = 474 `SH_CHAIN_PREV ( bhp , vc , __bh )! NULL ) { 475 `SH_CHAIN_HASPREV ( de_bhp , vc )) 476 de_bhp = `SH_CHAIN_PREVP (oldest_bhp, 477 vc , __bh ); 479 i( de_bhp -> f =0 && ! `BH_OBSOLETE ( 480 de_bhp , hp -> d_ad , vl ) && 481 ( t = `__txn_de_ad ( v , 482 & hp -> d_ad )) != 0) 483 r ; 485 i( `BH_OBSOLETE ( 486 de_bhp , hp -> d_ad , vl ) && 487 de_bhp -> f == 0) { 488 i( `F_ISSET ( de_bhp , BH_FROZEN )) { 489 ++ de_bhp -> f ; 490 i(( t = `__memp_bh_thaw ( dbmp , 491 f , hp , de_bhp , 492 NULL )) != 0) 493 r ; 494 u ; 495 } i(( t = `__memp_bh ( dbmp , 496 f , hp , de_bhp , 497 BH_FREE_REUSE )) != 0) 498 r ; 499 loc_bhp = de_bhp ; 502 `DB_ASSERT ( v , loc_bhp = NULL || 503 ! `F_ISSET ( loc_bhp , BH_FROZEN )); 508 i((! makecy && oz_bhp = NULL || loc_bhp != NULL) 512 FIRST_MISS : 518 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 519 b_locked = 0; 524 i( ags = DB_MPOOL_FREE ) 527 loc : 532 `DB_ASSERT ( v , ! b_locked ); 533 `MUTEX_LOCK ( v , m -> mux ); 534 ags ) { 535 DB_MPOOL_NEW : 536 exndg = 1; 537 i( m -> maxpgno != 0 && 538 m -> ϡ_pgno >m-> maxpgno ) { 539 `__db_rx ( 540 v , "%s: fileimitedo %luages", 541 `__memp_ ( dbm ), ( u_lg ) m -> maxpgno ); 542 t = ENOSPC ; 544 * pgnddr = m -> ϡ_pgno + 1; 546 DB_MPOOL_CREATE : 547 i( m -> maxpgno !0 && * pgnddr > mfp->maxpgno) { 548 `__db_rx ( 549 v , "%s: fileimitedo %luages", 550 `__memp_ ( dbm ), ( u_lg ) m -> maxpgno ); 551 t = ENOSPC ; 552 } i(! exndg ) 553 exndg = * pgnddr > m -> ϡ_pgno ; 556 t = * pgnddr > m -> ϡ_pgno ? DB_PAGE_NOTFOUND : 0; 559 `MUTEX_UNLOCK ( v , m -> mux ); 560 i( t != 0) 561 r ; 568 `MP_GET_REGION ( dbm , * pgnddr , & f , t ); 569 i( t != 0) 570 r ; 571 c_mp = f -> imy ; 574 i(( t = 575 `__memp_loc ( dbmp , f , m , 0, NULL , & loc_bhp )) != 0) 576 r ; 577 #ifde DIAGNOSTIC 578 i(( u_t ) loc_bhp -> buf & (( size_t ) - 1)) { 579 `__db_rx ( v , 581 t = `__v_nic ( v , EINVAL ); 582 r ; 589 i( exndg ) 590 `MUTEX_LOCK ( v , m -> mux ); 617 i( ags = DB_MPOOL_NEW && * pgnddr ! m -> ϡ_pgno + 1) { 618 * pgnddr = m -> ϡ_pgno + 1; 619 `MP_GET_REGION ( dbm , * pgnddr , & t_f , t ); 620 i( t != 0) 621 r ; 622 i( t_f ! f ) { 627 `MUTEX_UNLOCK ( v , m -> mux ); 629 `MPOOL_REGION_LOCK ( v , f ); 630 `__memp_ ( f , m , loc_bhp ); 631 c_mp -> . _ges --; 632 `MPOOL_REGION_UNLOCK ( v , f ); 634 loc_bhp = NULL ; 635 loc ; 644 i( exndg ) { 645 i(* pgnddr > m -> ϡ_pgno ) 646 m -> ϡ_pgno = * pgnddr ; 648 `MUTEX_UNLOCK ( v , m -> mux ); 649 i( t != 0) 650 r ; 657 i( bhp ! NULL ) { 658 `MUTEX_LOCK ( v , hp -> mtx_hash ); 659 b_locked = 1; 662 `DB_ASSERT ( v , oz_bhp = NULL ); 663 y ; 664 SECOND_FOUND : 678 i( exndg && `F_ISSET ( bhp , BH_FREED )) 679 makecy = 1; 680 i( makecy || oz_bhp ! NULL ) 688 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 689 `MPOOL_REGION_LOCK ( v , f ); 690 `__memp_ ( f , m , loc_bhp ); 691 c_mp -> . _ges --; 692 `MPOOL_REGION_UNLOCK ( v , f ); 693 loc_bhp = NULL ; 703 i( ags = DB_MPOOL_NEW ) { 704 -- bhp -> f ; 705 b_ = b_locked = 0; 706 bhp = NULL ; 707 loc ; 711 `MUTEX_LOCK ( v , hp -> mtx_hash ); 713 SECOND_MISS : 719 bhp = loc_bhp ; 720 loc_bhp = NULL ; 730 #ifde DIAG_MVCC 731 `memt ( bhp , 0, `SSZ ( BH , ign_off )); 733 `memt ( bhp , 0, ( BH )); 735 bhp -> f = 1; 736 b_ = 1; 737 bhp -> iܙy = UINT32_MAX ; 738 bhp -> pgno = * pgnddr ; 739 bhp -> mf_offt = mf_offset; 740 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , bhp , hq ); 741 `SH_CHAIN_INIT ( bhp , vc ); 744 i( exndg ) { 745 ++ hp -> hash_ge_dty ; 746 `F_SET ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 767 i( exndg ) { 768 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 769 PROT_READ | PROT_WRITE ); 770 i( m -> r_n = DB_CLEARLEN_NOTSET ) 771 `memt ( bhp -> buf , 0, m -> . _gesize ); 773 `memt ( bhp -> buf , 0, m -> r_n ); 774 #i `defed ( DIAGNOSTIC || defed( UMRW ) 775 `memt ( bhp -> buf + m -> r_n , CLEAR_BYTE , 776 m -> . _gesize - m-> r_n ); 780 i( ags = DB_MPOOL_CREATE && m -> y != 0) 781 `F_SET ( bhp , BH_CALLPGIN ); 783 `STAT (++ m -> . _ge_ ); 785 `F_SET ( bhp , BH_TRASH ); 786 `STAT (++ m -> . _che_miss ); 790 `MUTEX_LOCK ( v , m -> mux ); 791 ++ m -> block_t ; 792 `MUTEX_UNLOCK ( v , m -> mux ); 795 `DB_ASSERT ( v , bhp ! NULL ); 796 `DB_ASSERT ( v , bhp -> f != 0); 799 i( oz_bhp ! NULL ) { 800 `DB_ASSERT ( v , loc_bhp ! NULL ); 806 i( `F_ISSET ( oz_bhp , BH_THAWED )) 807 thawed ; 809 i(( t = `__memp_bh_thaw ( dbmp , f , hp , 810 oz_bhp , loc_bhp )) != 0) 811 r ; 812 bhp = loc_bhp ; 815 oz_bhp = loc_bhp = NULL ; 822 i( makecy ) { 823 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 824 b_locked = 0; 825 loc ; 842 i( `F_ISSET ( bhp , BH_TRASH ) && 843 ( t = `__memp_pgad ( dbm , 844 hp , bhp , `LF_ISSET ( DB_MPOOL_CREATE ) ? 1 : 0)) != 0) 845 r ; 852 i( `F_ISSET ( bhp , BH_CALLPGIN )) { 853 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 854 PROT_READ | PROT_WRITE ); 855 i(( t = `__memp_pg ( dbm , bhp , 1)) != 0) 856 r ; 857 `F_CLR ( bhp , BH_CALLPGIN ); 861 i( makecy && e ! SECOND_MISS ) { 862 `DB_ASSERT ( v , ! `SH_CHAIN_HASNEXT ( bhp , vc )); 863 `DB_ASSERT ( v , bhp ! NULL ); 864 `DB_ASSERT ( v , loc_bhp ! NULL ); 865 `DB_ASSERT ( v , loc_bhp ! bhp ); 867 i( bhp -> f == 1) 868 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 869 PROT_READ ); 871 loc_bhp -> f = 1; 872 loc_bhp -> f_sync = 0; 873 loc_bhp -> ags = `F_ISSET ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 874 `F_CLR ( bhp , BH_DIRTY | BH_DIRTY_CREATE ); 875 loc_bhp -> iܙy = bhp ->priority; 876 loc_bhp -> pgno = bhp ->pgno; 877 loc_bhp -> mf_offt = bhp ->mf_offset; 878 loc_bhp -> td_off = INVALID_ROFF ; 879 i( txn ! NULL && 880 ( t = `__memp_bh_xn ( dbmp , m , loc_bhp , td )) != 0) 881 r ; 882 i( exndg ) { 883 `memt ( loc_bhp -> buf , 0, m -> . _gesize ); 884 `F_SET ( loc_bhp , BH_DIRTY_CREATE ); 886 `memy ( loc_bhp -> buf , bhp ->buf, m -> . _gesize ); 888 `SH_CHAIN_INSERT_AFTER ( bhp , loc_bhp , vc , __bh ); 889 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 890 bhp , loc_bhp , hq , __bh ); 891 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 892 i(-- bhp -> f == 0) { 893 bhp -> iܙy = c_mp -> u_cou ; 894 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 0); 896 bhp = loc_bhp ; 898 i( loc_bhp ! de_bhp ) { 899 `MUTEX_LOCK ( v , m -> mux ); 900 ++ m -> block_t ; 901 `MUTEX_UNLOCK ( v , 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 ( v , ! `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 bhp -> iܙy = UINT32_MAX ; 923 i( `SH_CHAIN_SINGLETON ( bhp , vc )) { 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 ); 932 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , PROT_READ | 933 ( dty || ed || exndg || `F_ISSET ( bhp , BH_DIRTY ) ? 934 PROT_WRITE : 0)); 936 #ifde DIAGNOSTIC 938 BH * xt_bhp = `SH_CHAIN_NEXT ( bhp , vc , __bh ); 940 `DB_ASSERT ( v , ! m -> muivsi || 941 ! `F_ISSET ( bhp , BH_DIRTY || xt_bhp = NULL ); 943 `DB_ASSERT ( v , ! mvcc || ed || ad_lp = NULL || 944 bhp -> td_off = INVALID_ROFF || `BH_OWNED_BY ( v , bhp, txn ) || 945 ( `BH_VISIBLE ( v , bhp , ad_lp , vl ) && 946 ( xt_bhp = NULL || `F_ISSET ext_bhp, BH_FROZEN ) || 947 ( xt_bhp -> td_off ! INVALID_ROFF && 948 ( `BH_OWNER ( v , xt_bhp )-> us ! TXN_COMMITTED || 949 ! `BH_VISIBLE ( v , xt_bhp , ad_lp , vl )))))); 953 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 959 i( ! NULL ) { 960 gfo = v ->reginfo; 961 i( -> dbth_pcou =-> dbth_pmax ) { 962 pmax = -> dbth_pmax ; 963 i(( t = `__v_loc ( gfo , 964 2 * pmax * ( PIN_LIST ), & li )) != 0) 965 r ; 967 `memy ( li , `R_ADDR ( gfo , -> dbth_pli ), 968 pmax * ( PIN_LIST )); 969 `memt (& li [ pmax ], 0,max * ( PIN_LIST )); 970 li_off = `R_OFFSET ( gfo , li ); 971 li = `R_ADDR ( gfo , -> dbth_pli ); 972 -> dbth_pmax = 2 * pmax ; 973 -> dbth_pli = li_off ; 974 i( li ! -> dbth_py ) 975 `__v_loc_ ( gfo , li ); 977 li = `R_ADDR ( gfo , -> dbth_pli ); 978 = li ;< &li[ -> dbth_pmax ];p++) 979 i( -> b_f = INVALID_ROFF ) 982 -> dbth_pcou ++; 983 -> b_f = `R_OFFSET ( f , bhp ); 984 -> gi = ()( f - dbmp -> gfo ); 987 #ifde DIAGNOSTIC 989 `MPOOL_SYSTEM_LOCK ( v ); 990 ++ dbm -> pf ; 991 `MPOOL_SYSTEM_UNLOCK ( v ); 997 i( `F_ISSET ( v -> dbv , DB_ENV_YIELDCPU )) 998 `__os_yld ( v , 0, 0); 1001 `DB_ASSERT ( v , loc_bhp = NULL ); 1003 *(**) add = bhp -> buf ; 1006 r : 1011 i( b_ || oz_bhp ! NULL ) { 1012 i(! b_locked ) { 1013 `MUTEX_LOCK ( v , hp -> mtx_hash ); 1014 b_locked = 1; 1016 i( oz_bhp ! NULL ) 1017 -- oz_bhp -> f ; 1018 i( b_ && bhp ! oz_bhp ) 1019 -- bhp -> f ; 1021 i( b_locked ) 1022 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 1025 i( loc_bhp ! NULL ) { 1026 `MPOOL_REGION_LOCK ( v , f ); 1027 `__memp_ ( f , m , loc_bhp ); 1028 c_mp -> . _ges --; 1029 `MPOOL_REGION_UNLOCK ( v , f ); 1032 ( t ); 1033 } } @../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_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY *)); 20 __memp_t_iܙy __P (( DB_MPOOLFILE *, DB_CACHE_PRIORITY )); 29 $__memp_f_ ( dbv , , ags ) 30 DB_ENV * dbv ; 31 DB_MPOOLFILE ** ; 32 u_t32_t ags ; 34 DB_THREAD_INFO * ; 35 ENV * v ; 36 t ; 38 v = dbv ->env; 41 i(( t = `__db_fchk ( v , "DB_ENV->memp_f", ags , 0)) != 0) 42 ( t ); 44 `ENV_ENTER ( v , ); 45 `REPLICATION_WRAP ( v , ( `__memp_f nv, )), 0, t ); 46 `ENV_LEAVE ( v , ); 47 ( t ); 48 } } 57 $__memp_f ( v , ) 58 ENV * v ; 59 DB_MPOOLFILE ** ; 61 DB_MPOOLFILE * dbm ; 62 t ; 65 i(( t = `__os_oc ( v , 1, ( DB_MPOOLFILE ), & dbm )) != 0) 66 ( t ); 68 dbm -> f = 1; 69 dbm -> l_offt = DB_LSN_OFF_NOTSET ; 70 dbm -> v =nv; 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 -> v , "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 ENV * v ; 211 MPOOLFILE * m ; 212 t ; 214 v = dbm ->env; 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 ( v , "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 ENV * v ; 317 MPOOLFILE * m ; 319 i(( m = dbm ->m= NULL ) { 320 * gby = dbm -> gbys ; 321 * by = dbm -> bys ; 323 v = dbm ->env; 325 `MUTEX_LOCK ( v , 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 ( v , m -> mux ); 335 } } 342 $__memp_t_maxsize ( dbm , gbys , bys ) 343 DB_MPOOLFILE * dbm ; 344 u_t32_t gbys , bys ; 346 ENV * v ; 347 MPOOLFILE * m ; 349 i(( m = dbm ->m= NULL ) { 350 dbm -> gbys = gbytes; 351 dbm -> bys = bytes; 353 v = dbm ->env; 355 `MUTEX_LOCK ( v , 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 `MUTEX_UNLOCK ( v , m -> mux ); 365 } } 374 $__memp_g_pgcook ( dbm , pgcook ) 375 DB_MPOOLFILE * dbm ; 376 DBT * pgcook ; 378 i( dbm -> pgcook = NULL ) { 379 pgcook -> size = 0; 380 pgcook -> da = ""; 382 `memy ( pgcook , dbm ->pgcook, ( DBT )); 384 } } 393 $__memp_t_pgcook ( dbm , pgcook ) 394 DB_MPOOLFILE * dbm ; 395 DBT * pgcook ; 397 DBT * cook ; 398 ENV * v ; 399 t ; 401 `MPF_ILLEGAL_AFTER_OPEN ( dbm , "DB_MPOOLFILE->set_pgcookie"); 402 v = dbm ->env; 404 i(( t = `__os_oc ( v , 1, (* cook ), &cookie)) != 0) 405 ( t ); 406 i(( t = `__os_mloc ( v , pgcook -> size , & cook -> da )) != 0) { 407 `__os_ ( v , cook ); 408 ( t ); 411 `memy ( cook -> da , pgcook ->da,gcook-> size ); 412 cook -> size = pgcook ->size; 414 dbm -> pgcook = cook ; 416 } } 423 $__memp_g_iܙy ( dbm , iܙyp ) 424 DB_MPOOLFILE * dbm ; 425 DB_CACHE_PRIORITY * iܙyp ; 427 dbm -> iܙy ) { 428 MPOOL_PRI_VERY_LOW : 429 * iܙyp = DB_PRIORITY_VERY_LOW ; 431 MPOOL_PRI_LOW : 432 * iܙyp = DB_PRIORITY_LOW ; 434 MPOOL_PRI_DEFAULT : 435 * iܙyp = DB_PRIORITY_DEFAULT ; 437 MPOOL_PRI_HIGH : 438 * iܙyp = DB_PRIORITY_HIGH ; 440 MPOOL_PRI_VERY_HIGH : 441 * iܙyp = DB_PRIORITY_VERY_HIGH ; 444 `__db_rx ( dbm -> v , 446 dbm -> iܙy ); 447 ( EINVAL ); 451 } } 458 $__memp_t_iܙy ( dbm , iܙy ) 459 DB_MPOOLFILE * dbm ; 460 DB_CACHE_PRIORITY iܙy ; 462 iܙy ) { 463 DB_PRIORITY_VERY_LOW : 464 dbm -> iܙy = MPOOL_PRI_VERY_LOW ; 466 DB_PRIORITY_LOW : 467 dbm -> iܙy = MPOOL_PRI_LOW ; 469 DB_PRIORITY_DEFAULT : 470 dbm -> iܙy = MPOOL_PRI_DEFAULT ; 472 DB_PRIORITY_HIGH : 473 dbm -> iܙy = MPOOL_PRI_HIGH ; 475 DB_PRIORITY_VERY_HIGH : 476 dbm -> iܙy = MPOOL_PRI_VERY_HIGH ; 479 `__db_rx ( dbm -> v , 481 iܙy ); 482 ( EINVAL ); 486 i( dbm -> m ! NULL ) 487 dbm -> m -> iܙy = dbmfp->priority; 490 } } 503 $__memp_g_ϡ_pgno ( dbm , pgnddr ) 504 DB_MPOOLFILE * dbm ; 505 db_pgno_t * pgnddr ; 507 ENV * v ; 508 MPOOLFILE * m ; 510 v = dbm ->env; 511 m = dbm ->mfp; 513 `MUTEX_LOCK ( v , m -> mux ); 514 * pgnddr = m -> ϡ_pgno ; 515 `MUTEX_UNLOCK ( v , m -> mux ); 518 } } 527 $__memp_ ( dbm ) 528 DB_MPOOLFILE * dbm ; 530 ( `__memp_s ( dbm -> v -> mp_hd , dbm-> m )); 531 } } 541 $__memp_s ( dbmp , m ) 542 DB_MPOOL * dbmp ; 543 MPOOLFILE * m ; 545 i( m = NULL || m-> th_off == 0) 548 ((*) `R_ADDR ( dbmp -> gfo , m -> th_off )); 549 } } @../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 (( 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_THREAD_INFO * ; 38 ENV * v ; 39 t ; 41 v = dbm ->env; 44 i(( t = `__db_fchk ( v , "DB_MPOOLFILE->ݒ", ags , 45 DB_CREATE | DB_DIRECT | DB_EXTENT | DB_MULTIVERSION | 46 DB_NOMMAP | DB_ODDFILESIZE | DB_RDONLY | DB_TRUNCATE )) != 0) 47 ( t ); 53 i( gesize =0 || ! `POWER_OF_TWO (pagesize)) { 54 `__db_rx ( v , 56 ( EINVAL ); 58 i( dbm -> r_n > gesize ) { 59 `__db_rx ( v , 61 ( EINVAL ); 65 i( `LF_ISSET ( DB_RDONLY && th = NULL ) { 66 `__db_rx ( v , 68 ( EINVAL ); 71 i( `LF_ISSET ( DB_MULTIVERSION && ! `TXN_ON ( v )) { 72 `__db_rx ( v , 74 ( EINVAL ); 77 `ENV_ENTER ( v , ); 78 `REPLICATION_WRAP ( v , 79 ( `__memp_fݒ ( dbm , NULL , th , ags , mode , gesize )), 0, t ); 80 `ENV_LEAVE ( v , ); 81 ( t ); 82 } } 92 $__memp_fݒ ( dbm , m , th , ags , mode , pgsize ) 93 DB_MPOOLFILE * dbm ; 94 MPOOLFILE * m ; 95 cڡ * th ; 96 u_t32_t ags ; 97 mode ; 98 size_t pgsize ; 100 DB_ENV * dbv ; 101 DB_MPOOL * dbmp ; 102 DB_MPOOLFILE * tmp_dbm ; 103 DB_MPOOL_HASH * hp ; 104 ENV * v ; 105 MPOOL * mp ; 106 MPOOLFILE * loc_m ; 107 size_t maxm ; 108 db_pgno_t ϡ_pgno ; 109 u_t32_t buck , mbys , bys , oags , gesize ; 110 fc , t ; 111 * h ; 114 i( `F_ISSET ( dbm , MP_OPEN_CALLED )) 117 v = dbm ->env; 118 dbmp = v -> mp_hd ; 119 dbv = v ->dbenv; 120 mp = dbmp -> gfo [0]. imy ; 121 loc_m = NULL ; 122 mbys = bys = 0; 123 fc = t = 0; 124 h = NULL ; 130 gesize = ( u_t32_t ) pgsize ; 140 `DB_ASSERT ( v , 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 ( v , hp -> mtx_hash ); 180 t = 181 `__memp_mpf_fd ( v , dbm , hp , th , ags ,& m ); 182 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 183 i( t != 0) 184 r ; 185 i( m ! NULL ) 186 fc = 1; 194 `MUTEX_LOCK ( v , m -> mux ); 195 i(! m -> ddfe ) { 196 ++ m -> mpf_t ; 197 fc = 1; 199 `MUTEX_UNLOCK ( v , 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 ( v -> dbv , DB_ENV_DSYNC_DB )) 235 oags | DB_OSO_DSYNC ; 248 i( m ! NULL ) { 249 `MPOOL_SYSTEM_LOCK ( v ); 250 th = `R_ADDR ( dbmp -> gfo , m -> th_off ); 252 i(( t = `__db_ame ( v , 253 DB_APP_DATA , th , 0, NULL , & h )) == 0) 254 t = `__os_ݒ ( v , h , 255 ( u_t32_t ) gesize , oags , mode , & dbm -> fhp ); 256 i( m ! NULL ) 257 `MPOOL_SYSTEM_UNLOCK ( v ); 258 i( t != 0) 259 r ; 266 dbm -> fhp -> f = 1; 267 i(( t = `__mux_loc ( v , MTX_MPOOL_FH , 268 DB_MUTEX_PROCESS_ONLY , & dbm -> fhp -> mtx_fh )) != 0) 269 r ; 283 i(( t = `__os_iofo ( 284 v , h , dbm -> fhp , & mbys , & bys , NULL )) != 0) { 285 `__db_r ( v , t , "%s", h ); 286 r ; 299 `DB_ASSERT ( v , gesize != 0); 300 i( bys % gesize != 0) { 301 i( `LF_ISSET ( DB_ODDFILESIZE )) 302 bys -( u_t32_t )(by% gesize ); 304 `__db_rx ( v , 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 ( v , 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 ( v , hp -> mtx_hash ); 337 i(( t = `__memp_mpf_fd ( v , 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 ( v , 369 th ); 370 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 371 t = EINVAL ; 372 r ; 376 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 377 i( loc_m ! NULL ) { 378 `MUTEX_LOCK ( v , 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 ( v , 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 ( v , 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 ( v , hp -> mtx_hash ); 434 `SH_TAILQ_INSERT_TAIL (& hp -> hash_buck , m , q ); 435 `MUTEX_UNLOCK ( v , 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 ( v , 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 ( v ); 504 maxm = mp -> mp_mmsize == 0 ? 505 DB_MAXMMAPSIZE : mp -> mp_mmsize ; 506 `MPOOL_SYSTEM_UNLOCK ( v ); 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 ( v , 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 ( v , 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_ ( v , & dbm -> fhp -> mtx_fh ); 539 () `__os_ohd ( v , dbm -> fhp ); 540 ++ tmp_dbm -> fhp -> f ; 541 dbm -> fhp = tmp_dbm ->fhp; 545 `TAILQ_INSERT_TAIL (& dbmp -> dbmfq , dbm , q ); 547 `MUTEX_UNLOCK ( v , dbmp -> mux ); 550 r : i( fc ) { 557 `MUTEX_LOCK ( v , m -> mux ); 558 -- m -> mpf_t ; 559 `MUTEX_UNLOCK ( v , m -> mux ); 563 i( h ! NULL ) 564 `__os_ ( v , h ); 565 ( t ); 566 } } 573 $__memp_mpf_fd ( v , dbm , hp , th , ags , mp ) 574 ENV * v ; 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 = v -> 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 ( v , m -> mux ); 625 m -> ddfe = 1; 626 `MUTEX_UNLOCK ( v , m -> mux ); 642 `MUTEX_LOCK ( v , m -> mux ); 643 i( m -> ddfe ) { 644 `MUTEX_UNLOCK ( v , m -> mux ); 647 ++ m -> mpf_t ; 648 `MUTEX_UNLOCK ( v , 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 ENV * v ; 675 MPOOLFILE * m ; 676 t ; 677 * p ; 679 v = dbmp ->env; 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 ( v , 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_THREAD_INFO * ; 775 ENV * v ; 776 t ; 778 v = dbm ->env; 783 i( ags != 0) 784 () `__db_ ( v , "DB_MPOOLFILE->close", 0); 786 `ENV_ENTER ( v , ); 787 `REPLICATION_WRAP ( v , ( `__memp_fo ( dbm , 0)), 0, t ); 788 `ENV_LEAVE ( v , ); 789 ( t ); 790 } } 799 $__memp_fo ( dbm , ags ) 800 DB_MPOOLFILE * dbm ; 801 u_t32_t ags ; 803 DB_MPOOL * dbmp ; 804 ENV * v ; 805 MPOOLFILE * m ; 806 * h ; 807 u_t32_t f ; 808 ded , t , t_t ; 810 v = dbm ->env; 811 dbmp = v -> mp_hd ; 812 t = 0; 823 i( dbmp = NULL ) 824 de ; 826 `MUTEX_LOCK ( v , dbmp -> mux ); 828 `DB_ASSERT ( v , 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 ( v , dbmp -> mux ); 839 i( f != 0) 843 i( dbm -> pf != 0) { 844 `__db_rx ( v , "%s: close: %lu blockseftinned", 845 `__memp_ ( dbm ), ( u_lg )dbm-> pf ); 846 t = `__v_nic ( v , DB_RUNRECOVERY ); 850 i( dbm -> addr ! NULL && 851 ( t = `__os_unmfe ( v , dbm -> addr , dbm-> n )) != 0) 852 `__db_r ( v , t , "%s", `__memp_ ( dbm )); 858 i( dbm -> fhp ! NULL ) { 859 i(( t_t = 860 `__mux_ ( v , & dbm -> fhp -> mtx_fh )!0 && t == 0) 861 t = t_t ; 862 i(( t_t = `__os_ohd ( v , dbm -> fhp )) != 0) { 863 `__db_r ( v , t_t , "%s", `__memp_ ( dbm )); 864 i( t == 0) 865 t = t_t ; 867 dbm -> fhp = NULL ; 876 m = dbm ->mfp; 877 `DB_ASSERT ( v , 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 i(! `LF_ISSET ( DB_MPOOL_NOLOCK )) 892 `MUTEX_LOCK ( v , m -> mux ); 893 i( `F_ISSET ( dbm , MP_MULTIVERSION )) 894 -- m -> muivsi ; 895 i(-- m -> mpf_t =0 || `LF_ISSET ( DB_MPOOL_DISCARD )) { 896 i( `LF_ISSET ( DB_MPOOL_DISCARD ) || 897 `F_ISSET ( m , MP_TEMP || m-> uƚk__o ) { 898 m -> ddfe = 1; 900 i( m -> uƚk__o ) { 901 i(( t_t = `__db_ame ( dbmp -> v , 902 DB_APP_DATA , `R_ADDR ( dbmp -> gfo , 903 m -> th_off ), 0, NULL , & h )!0 && t == 0) 904 t = t_t ; 905 i( t_t == 0) { 906 i(( t_t = `__os_uƚk ( 907 dbmp -> v , h , 0)!0 && t == 0) 908 t = t_t ; 909 `__os_ ( v , h ); 912 i( m -> block_t == 0) { 918 `DB_ASSERT ( v , ! `LF_ISSET ( DB_MPOOL_NOLOCK )); 919 i(( t_t = 920 `__memp_mf_disrd ( dbmp , m )!0 && t == 0) 921 t = t_t ; 922 ded = 1; 925 i(! ded && ! `LF_ISSET ( DB_MPOOL_NOLOCK )) 926 `MUTEX_UNLOCK ( v , m -> mux ); 928 de : 929 i( dbm -> pgcook ! NULL ) { 930 `__os_ ( v , dbm -> pgcook -> da ); 931 `__os_ ( v , dbm -> pgcook ); 933 `__os_ ( v , dbm ); 935 ( t ); 936 } } 945 $__memp_mf_disrd ( dbmp , m ) 946 DB_MPOOL * dbmp ; 947 MPOOLFILE * m ; 949 DB_MPOOL_HASH * hp ; 950 ENV * v ; 951 #ifde HAVE_STATISTICS 952 DB_MPOOL_STAT * ; 954 MPOOL * mp ; 955 ed_sync , t , t_t ; 957 v = dbmp ->env; 958 mp = dbmp -> gfo [0]. imy ; 959 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 960 hp + m -> buck ; 961 t = 0; 972 ed_sync = 973 m -> fe_wrn && !m-> ddfe && ! `F_ISSET (m, MP_TEMP ); 980 m -> ddfe = 1; 983 `MUTEX_UNLOCK ( v , m -> mux ); 984 i(( t_t = `__mux_ ( v , & m -> mux )!0 && t == 0) 985 t = t_t ; 988 `MUTEX_LOCK ( v , hp -> mtx_hash ); 989 `SH_TAILQ_REMOVE (& hp -> hash_buck , m , q , __mpofe ); 990 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 993 `MPOOL_SYSTEM_LOCK ( v ); 994 i( ed_sync && 995 ( t_t = `__memp_mf_sync ( dbmp , m , 0)!0 && t == 0) 996 t = t_t ; 998 #ifde HAVE_STATISTICS 1000 = & mp -> ; 1001 -> _che_h + m -> .st_cache_hit; 1002 -> _che_miss + m -> .st_cache_miss; 1003 -> _m + m -> .st_map; 1004 -> _ge_ + m -> .st_page_create; 1005 -> _ge_ + m -> .st_page_in; 1006 -> _ge_out + m -> .st_page_out; 1010 i( m -> th_off != 0) 1011 `__memp_ (& dbmp -> gfo [0], NULL , 1012 `R_ADDR ( dbmp -> gfo , m -> th_off )); 1013 i( m -> feid_off != 0) 1014 `__memp_ (& dbmp -> gfo [0], NULL , 1015 `R_ADDR ( dbmp -> gfo , m -> feid_off )); 1016 i( m -> pgcook_off != 0) 1017 `__memp_ (& dbmp -> gfo [0], NULL , 1018 `R_ADDR ( dbmp -> gfo , m -> pgcook_off )); 1019 `__memp_ (& dbmp -> gfo [0], NULL , m ); 1021 `MPOOL_SYSTEM_UNLOCK ( v ); 1023 ( t ); 1024 } } 1033 $__memp_memli ( v , me , ) 1034 ENV * v ; 1035 *** me ; 1036 * ; 1038 DB_MPOOL * dbmp ; 1039 DB_MPOOL_HASH * hp ; 1040 MPOOL * mp ; 1041 MPOOLFILE * m ; 1042 ysz , t , i , t ; 1043 ** mes ; 1045 mes = NULL ; 1046 dbmp = v -> mp_hd ; 1047 mp = dbmp -> gfo [0]. imy ; 1048 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 1050 ysz = t = 0; 1051 i = 0; i < MPOOL_FILE_BUCKETS ; i++, hp ++) { 1052 `MUTEX_LOCK ( v , hp -> mtx_hash ); 1053 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 1055 i( m -> ddfe || `F_ISSET (m, MP_TEMP )) 1059 i(! m -> no_backg_fe ) 1063 i( t > ysz ) { 1064 ysz += 100; 1065 i(( t = `__os_loc ( v , 1066 ( u_t ) ysz * ( mes [0]), 1067 & mes )) != 0) 1068 nomem ; 1070 i(( t = `__os_rdup ( v , 1071 `R_ADDR ( dbmp -> gfo , m -> th_off ), 1072 & mes [ t ])) != 0) 1073 nomem ; 1075 t ++; 1077 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 1079 * me = mes ; 1080 * = t ; 1083 nomem : `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 1084 i( mes ! NULL ) { 1085 -- t >= 0) 1086 `__os_ ( v , mes [ t ]); 1087 `__os_ ( v , mes ); 1091 * = 0; 1092 * me = NULL ; 1093 ( t ); 1094 } } @../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 (( 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_THREAD_INFO * ; 32 ENV * v ; 33 t , t_t ; 35 v = dbm ->env; 37 i( ags != 0) 38 ( `__db_ ( v , "DB_MPOOLFILE->put", 0)); 40 `MPF_ILLEGAL_BEFORE_OPEN ( dbm , "DB_MPOOLFILE->put"); 42 `ENV_ENTER ( v , ); 44 t = `__memp_ut ( dbm , , pgaddr , iܙy ); 45 i( `IS_ENV_REPLICATED ( v ) && 46 ( t_t = `___p_ex ( v )!0 && t == 0) 47 t = t_t ; 49 `ENV_LEAVE ( v , ); 50 ( t ); 51 } } 61 $__memp_ut ( dbm , , pgaddr , iܙy ) 62 DB_MPOOLFILE * dbm ; 63 DB_THREAD_INFO * ; 64 * pgaddr ; 65 DB_CACHE_PRIORITY iܙy ; 67 BH * bhp ; 68 DB_ENV * dbv ; 69 DB_MPOOL * dbmp ; 70 DB_MPOOL_HASH * hp ; 71 ENV * v ; 72 MPOOL * c_mp ; 73 MPOOLFILE * m ; 74 PIN_LIST * li , * ; 75 REGINFO * f , * gfo ; 76 roff_t b_f ; 77 gi ; 78 adju , p , t , t_t ; 79 buf [ DB_THREADID_STRLEN ]; 81 v = dbm ->env; 82 dbv = v ->dbenv; 83 dbmp = v -> mp_hd ; 84 m = dbm ->mfp; 85 bhp = ( BH *)(( u_t8_t *) pgaddr - `SSZA (BH, buf )); 86 t = 0; 92 i( `F_ISSET ( dbm , MP_DUMMY )) 93 uŚ ; 101 i( dbm -> addr ! NULL && pgaddr >= dbmfp->addr && 102 ( u_t8_t *) pgaddr <(u_t8_*) dbm -> addr + dbm-> n ) 105 #ifde DIAGNOSTIC 110 `MPOOL_SYSTEM_LOCK ( v ); 111 i( dbm -> pf == 0) { 112 `MPOOL_SYSTEM_UNLOCK ( v ); 113 `__db_rx ( v , 114 "%s: mܐgetuedhrved", `__memp_ ( dbm )); 115 ( `__v_nic ( v , EACCES )); 117 -- dbm -> pf ; 118 `MPOOL_SYSTEM_UNLOCK ( v ); 121 uŚ : 123 `MP_GET_BUCKET ( v , m , bhp -> pgno , & f , hp , t ); 124 i( t != 0) 125 ( t ); 126 c_mp = f -> imy ; 132 i( bhp -> f == 0) { 133 `__db_rx ( v , "%s:age %lu: unpinnedageeturned", 134 `__memp_ ( dbm ), ( u_lg ) bhp -> pgno ); 135 `DB_ASSERT ( v , bhp -> f != 0); 136 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 137 ( `__v_nic ( v , EACCES )); 141 ++ c_mp -> put_cou ; 143 i( ! NULL ) { 144 gfo = v ->reginfo; 145 li = `R_ADDR ( gfo , -> dbth_pli ); 146 gi = ()( f - dbmp -> gfo ); 147 b_f = `R_OFFSET ( f , bhp ); 148 = li ;< &li[ -> dbth_pmax ];p++) 149 i( -> b_f =b_&&p-> gi ==egion) 152 i( =& li [ -> dbth_pmax ]) { 153 `__db_rx ( v , 155 dbv -> `thad_id_rg (dbenv, 156 -> dbth_pid , ip-> dbth_tid , buf )); 157 ( `__v_nic ( v , EINVAL )); 160 -> b_f = INVALID_ROFF ; 161 -> dbth_pcou --; 169 i( `F_ISSET ( bhp , BH_DIRTY )) { 170 m -> fe_wrn = 1; 172 `DB_ASSERT ( v , ! `SH_CHAIN_HASNEXT ( bhp , vc )); 180 i(-- bhp -> f > 1 || (bhp->=1 && ! `F_ISSET (bhp, BH_LOCKED ))) { 181 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 186 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , 0); 189 i( iܙy = DB_PRIORITY_VERY_LOW || 190 m -> iܙy = MPOOL_PRI_VERY_LOW ) 191 bhp -> iܙy = 0; 198 bhp -> iܙy = c_mp -> u_cou ; 200 iܙy ) { 202 DB_PRIORITY_UNCHANGED : 203 p = m -> iܙy ; 205 DB_PRIORITY_VERY_LOW : 206 p = MPOOL_PRI_VERY_LOW ; 208 DB_PRIORITY_LOW : 209 p = MPOOL_PRI_LOW ; 211 DB_PRIORITY_DEFAULT : 212 p = MPOOL_PRI_DEFAULT ; 214 DB_PRIORITY_HIGH : 215 p = MPOOL_PRI_HIGH ; 217 DB_PRIORITY_VERY_HIGH : 218 p = MPOOL_PRI_VERY_HIGH ; 222 adju = 0; 223 i( p != 0) 224 adju = () c_mp -> . _ges / p ; 226 i( `F_ISSET ( bhp , BH_DIRTY )) 227 adju +() c_mp -> . _ges / MPOOL_PRI_DIRTY ; 229 i( adju > 0) { 230 i( UINT32_MAX - bhp -> iܙy >( u_t32_t ) adju ) 231 bhp -> iܙy + adju ; 232 } i( adju < 0) 233 i( bhp -> iܙy > ( u_t32_t )- adju ) 234 bhp -> iܙy + adju ; 245 i( `F_ISSET ( bhp , BH_LOCKED && bhp-> f_sync != 0) 246 -- bhp -> f_sync ; 248 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 254 i(++ c_mp -> u_cou = UINT32_MAX ) 255 i(( t_t = 256 `__memp_t_u ( v , dbmp -> gfo )!0 && t == 0) 257 t = t_t ; 259 ( t ); 260 } } 267 $__memp_t_u ( v , f ) 268 ENV * v ; 269 REGINFO * f ; 271 BH * bhp , * tbhp ; 272 DB_MPOOL_HASH * hp ; 273 MPOOL * c_mp ; 274 u_t32_t buck , iܙy ; 276 c_mp = f -> imy ; 281 c_mp -> u_cou - MPOOL_BASE_DECREMENT ; 284 hp = `R_ADDR ( f , c_mp -> hb ), 285 buck = 0; buck < c_mp -> hb_bucks ; ++ hp , ++bucket) { 292 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh = NULL ) { 293 c_mp -> u_t ++; 297 `MUTEX_LOCK ( v , hp -> mtx_hash ); 298 c_mp -> u_t ++; 304 iܙy = 0; 305 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 306 tbhp = bhp ;bh! NULL ; 307 tbhp = `SH_CHAIN_PREV bhp, vc , __bh )) { 308 i( tbhp -> iܙy ! UINT32_MAX && 309 tbhp -> iܙy > MPOOL_BASE_DECREMENT ) { 310 tbhp -> iܙy - MPOOL_BASE_DECREMENT ; 311 i( tbhp -> iܙy <riority) 312 tbhp -> iܙy =riority; 315 iܙy = bhp ->priority; 317 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 319 c_mp -> u_t = 0; 321 `COMPQUIET ( v , NULL ); 323 } } 332 $__memp_uŚ_bufrs ( v , ) 333 ENV * v ; 334 DB_THREAD_INFO * ; 336 BH * bhp ; 337 DB_MPOOL * dbmp ; 338 DB_MPOOLFILE dbmf ; 339 PIN_LIST * li , * ; 340 REGINFO * rf , * gfo ; 341 t ; 343 `memt (& dbmf , 0, (dbmf)); 344 dbmf . v =nv; 345 dbmf . ags = MP_DUMMY ; 346 dbmp = v -> mp_hd ; 347 gfo = v ->reginfo; 349 li = `R_ADDR ( gfo , -> dbth_pli ); 350 = li ;< &li[ -> dbth_pmax ];p++) { 351 i( -> b_f = INVALID_ROFF ) 353 rf = & dbmp -> gfo [ -> gi ]; 354 bhp = `R_ADDR ( rf , -> b_f ); 355 dbmf . m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 356 i(( t = `__memp_ut (& dbmf , , 357 ( u_t8_t *) bhp + `SSZA ( BH , buf ), 358 DB_PRIORITY_UNCHANGED )) != 0) 359 ( t ); 362 } } @../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_THREAD_INFO * ; 28 DB_TXN * txn ; 29 DB_CACHE_PRIORITY iܙy ; 30 u_t32_t ags ; 32 BH * bhp ; 33 DB_MPOOL_HASH * hp ; 34 DB_TXN * ; 35 ENV * v ; 36 #ifde DIAG_MVCC 37 MPOOLFILE * m ; 39 REGINFO * f ; 40 mvcc , t ; 41 db_pgno_t pgno ; 42 * pgaddr ; 44 v = dbm ->env; 45 pgaddr = *(**) add ; 46 mvcc = dbm -> m -> muivsi ; 49 bhp = ( BH *)(( u_t8_t *) pgaddr - `SSZA (BH, buf )); 50 pgno = bhp ->pgno; 52 i( ags == 0) 53 ags = DB_MPOOL_DIRTY ; 54 `DB_ASSERT ( v , ags = DB_MPOOL_DIRTY || fg= DB_MPOOL_EDIT ); 56 i( `F_ISSET ( dbm , MP_READONLY )) { 57 `__db_rx ( v , "%s: dirty flag set foreadonly fileage", 58 `__memp_ ( dbm )); 59 ( EACCES ); 62 = txn ; 63 ! NULL &&n-> != NULL; 64 =n-> ) 67 i( mvcc && txn ! NULL && 68 (! `BH_OWNED_BY ( v , bhp , || `SH_CHAIN_HASNEXT (bhp, vc ))) { 69 ow : i(( t = `__memp_fg ( dbm , 70 & pgno , , txn , ags , add )) != 0) { 71 i( t ! DB_LOCK_DEADLOCK ) 72 `__db_rx ( v , 74 `__memp_ ( dbm )); 75 *(**) add = pgaddr ; 76 ( t ); 79 `DB_ASSERT ( v , 80 ( ags = DB_MPOOL_EDIT && *(**) add = pgaddr ) || 81 ( ags ! DB_MPOOL_EDIT && *(**) add ! pgaddr )); 83 i(( t = `__memp_ut ( dbm , , pgaddr , iܙy )) != 0) { 84 `__db_rx ( v , 86 `__memp_ ( dbm )); 87 () `__memp_ut ( dbm , , *(**) add , iܙy ); 88 *(**) add = NULL ; 89 ( t ); 91 pgaddr = *(**) add ; 92 bhp = ( BH *)(( u_t8_t *) pgaddr - `SSZA (BH, buf )); 93 `DB_ASSERT ( v , pgno = bhp ->pgno); 97 `MP_GET_BUCKET ( v , dbm -> m , pgno , & f , hp , t ); 98 i( t != 0) 99 ( t ); 102 i( mvcc && txn ! NULL && `SH_CHAIN_HASNEXT ( bhp , vc )) { 103 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 104 ow ; 108 i(! `F_ISSET ( bhp , BH_DIRTY )) { 109 ++ hp -> hash_ge_dty ; 110 `F_SET ( bhp , BH_DIRTY ); 112 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 114 #ifde DIAG_MVCC 115 m = `R_ADDR ( v -> mp_hd -> gfo , bhp -> mf_offt ); 116 `MVCC_MPROTECT ( bhp -> buf , m -> . _gesize , PROT_READ | PROT_WRITE ); 119 } } @../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 ENV * v ; 73 MPOOL * mp ; 75 v = dbv ->env; 77 `ENV_NOT_CONFIGURED ( v , 78 v -> mp_hd , "DB_ENV->g_chesize", DB_INIT_MPOOL ); 80 i( `MPOOL_ON ( v )) { 82 mp = v -> mp_hd -> gfo [0]. imy ; 83 i( gby ! NULL ) 84 * gby = mp -> . _gbys ; 85 i( by ! NULL ) 86 * by = mp -> . _bys ; 87 i( nch ! NULL ) 88 * nch = () mp -> eg ; 90 i( gby ! NULL ) 91 * gby = dbv -> mp_gbys ; 92 i( by ! NULL ) 93 * by = dbv -> mp_bys ; 94 i( nch ! NULL ) 95 * nch = () dbv -> mp_nche ; 98 } } 107 $__memp_t_chesize ( dbv , gbys , bys , g_nche ) 108 DB_ENV * dbv ; 109 u_t32_t gbys , bys ; 110 g_nche ; 112 ENV * v ; 113 u_t nche ; 115 v = dbv ->env; 118 nche = g_nche <0 ? 1 : ( u_t )arg_ncache; 124 i(( roff_t =4 && gbys / nche =4 && bys == 0) { 125 -- gbys ; 126 bys = GIGABYTE - 1; 128 gbys + bys / GIGABYTE ; 129 bys % GIGABYTE ; 139 i(! `F_ISSET ( v , ENV_OPEN_CALLED )) { 140 i(( roff_t <4 && gbys / nche >= 4) { 141 `__db_rx ( v , 143 ( EINVAL ); 145 i( gbys / nche > 10000) { 146 `__db_rx ( v , 148 ( EINVAL ); 163 i( gbys == 0) { 164 i( bys < 500 * MEGABYTE ) 165 bys +(by/ 4+ 37 * ( DB_MPOOL_HASH ); 166 i( bys / nche < DB_CACHESIZE_MIN ) 167 bys = nche * DB_CACHESIZE_MIN ; 170 i( `F_ISSET ( v , ENV_OPEN_CALLED )) 171 ( `__memp_size ( v -> mp_hd , gbys , bys )); 173 dbv -> mp_gbys = gbys ; 174 dbv -> mp_bys = bys ; 175 dbv -> mp_nche = nche ; 178 } } 187 $__memp_t_cfig ( dbv , which , ) 188 DB_ENV * dbv ; 189 u_t32_t which ; 190 ; 192 DB_MPOOL * dbmp ; 193 ENV * v ; 194 MPOOL * mp ; 196 v = dbv ->env; 198 `ENV_NOT_CONFIGURED ( v , 199 v -> mp_hd , "DB_ENV->memp_t_cfig", DB_INIT_MPOOL ); 201 which ) { 202 DB_MEMP_SUPPRESS_WRITE : 203 DB_MEMP_SYNC_INTERRUPT : 204 i( `MPOOL_ON ( v )) { 205 dbmp = v -> mp_hd ; 206 mp = dbmp -> gfo [0]. imy ; 207 i( ) 208 `FLD_SET ( mp -> cfig_ags , which ); 210 `FLD_CLR ( mp -> cfig_ags , which ); 214 ( EINVAL ); 217 } } 226 $__memp_g_cfig ( dbv , which , p ) 227 DB_ENV * dbv ; 228 u_t32_t which ; 229 * p ; 231 DB_MPOOL * dbmp ; 232 ENV * v ; 233 MPOOL * mp ; 235 v = dbv ->env; 237 `ENV_REQUIRES_CONFIG ( v , 238 v -> mp_hd , "DB_ENV->memp_g_cfig", DB_INIT_MPOOL ); 240 which ) { 241 DB_MEMP_SUPPRESS_WRITE : 242 DB_MEMP_SYNC_INTERRUPT : 243 i( `MPOOL_ON ( v )) { 244 dbmp = v -> mp_hd ; 245 mp = dbmp -> gfo [0]. imy ; 246 * p = `FLD_ISSET ( mp -> cfig_ags , which ) ? 1 : 0; 248 * p = 0; 251 ( EINVAL ); 254 } } 260 $__memp_g_mp_max_ݒfd ( dbv , maxݒfdp ) 261 DB_ENV * dbv ; 262 * maxݒfdp ; 264 DB_MPOOL * dbmp ; 265 DB_THREAD_INFO * ; 266 ENV * v ; 267 MPOOL * mp ; 269 v = dbv ->env; 271 `ENV_NOT_CONFIGURED ( v , 272 v -> mp_hd , "DB_ENV->g_mp_max_ݒfd", DB_INIT_MPOOL ); 274 i( `MPOOL_ON ( v )) { 275 dbmp = v -> mp_hd ; 276 mp = dbmp -> gfo [0]. imy ; 277 `ENV_ENTER ( v , ); 278 `MPOOL_SYSTEM_LOCK ( v ); 279 * maxݒfdp = mp -> mp_maxݒfd ; 280 `MPOOL_SYSTEM_UNLOCK ( v ); 281 `ENV_LEAVE ( v , ); 283 * maxݒfdp = dbv -> mp_maxݒfd ; 285 } } 293 $__memp_t_mp_max_ݒfd ( dbv , maxݒfd ) 294 DB_ENV * dbv ; 295 maxݒfd ; 297 DB_MPOOL * dbmp ; 298 DB_THREAD_INFO * ; 299 ENV * v ; 300 MPOOL * mp ; 302 v = dbv ->env; 304 `ENV_NOT_CONFIGURED ( v , 305 v -> mp_hd , "DB_ENV->t_mp_max_ݒfd", DB_INIT_MPOOL ); 307 i( `MPOOL_ON ( v )) { 308 dbmp = v -> mp_hd ; 309 mp = dbmp -> gfo [0]. imy ; 310 `ENV_ENTER ( v , ); 311 `MPOOL_SYSTEM_LOCK ( v ); 312 mp -> mp_maxݒfd = maxݒfd ; 313 `MPOOL_SYSTEM_UNLOCK ( v ); 314 `ENV_LEAVE ( v , ); 316 dbv -> mp_maxݒfd = maxݒfd ; 318 } } 324 $__memp_g_mp_max_wre ( dbv , maxwr , maxwre_ ) 325 DB_ENV * dbv ; 326 * maxwr ; 327 db_timeout_t * maxwre_ ; 329 DB_MPOOL * dbmp ; 330 DB_THREAD_INFO * ; 331 ENV * v ; 332 MPOOL * mp ; 334 v = dbv ->env; 336 `ENV_NOT_CONFIGURED ( v , 337 v -> mp_hd , "DB_ENV->g_mp_max_wre", DB_INIT_MPOOL ); 339 i( `MPOOL_ON ( v )) { 340 dbmp = v -> mp_hd ; 341 mp = dbmp -> gfo [0]. imy ; 342 `ENV_ENTER ( v , ); 343 `MPOOL_SYSTEM_LOCK ( v ); 344 * maxwr = mp -> mp_maxwre ; 345 * maxwre_ = mp -> mp_maxwre_p ; 346 `MPOOL_SYSTEM_UNLOCK ( v ); 347 `ENV_LEAVE ( v , ); 349 * maxwr = dbv -> mp_maxwre ; 350 * maxwre_ = dbv -> mp_maxwre_p ; 353 } } 362 $__memp_t_mp_max_wre ( dbv , maxwre , maxwre_p ) 363 DB_ENV * dbv ; 364 maxwre ; 365 db_timeout_t maxwre_p ; 367 DB_MPOOL * dbmp ; 368 DB_THREAD_INFO * ; 369 ENV * v ; 370 MPOOL * mp ; 372 v = dbv ->env; 374 `ENV_NOT_CONFIGURED ( v , 375 v -> mp_hd , "DB_ENV->g_mp_max_wre", DB_INIT_MPOOL ); 377 i( `MPOOL_ON ( v )) { 378 dbmp = v -> mp_hd ; 379 mp = dbmp -> gfo [0]. imy ; 380 `ENV_ENTER ( v , ); 381 `MPOOL_SYSTEM_LOCK ( v ); 382 mp -> mp_maxwre = maxwre ; 383 mp -> mp_maxwre_p = maxwre_p ; 384 `MPOOL_SYSTEM_UNLOCK ( v ); 385 `ENV_LEAVE ( v , ); 387 dbv -> mp_maxwre = maxwre ; 388 dbv -> mp_maxwre_p = maxwre_p ; 391 } } 397 $__memp_g_mp_mmsize ( dbv , mp_mmsiz ) 398 DB_ENV * dbv ; 399 size_t * mp_mmsiz ; 401 DB_MPOOL * dbmp ; 402 DB_THREAD_INFO * ; 403 ENV * v ; 404 MPOOL * mp ; 406 v = dbv ->env; 408 `ENV_NOT_CONFIGURED ( v , 409 v -> mp_hd , "DB_ENV->g_mp_max_mmsize", DB_INIT_MPOOL ); 411 i( `MPOOL_ON ( v )) { 412 dbmp = v -> mp_hd ; 413 mp = dbmp -> gfo [0]. imy ; 414 `ENV_ENTER ( v , ); 415 `MPOOL_SYSTEM_LOCK ( v ); 416 * mp_mmsiz = mp -> mp_mmsize ; 417 `MPOOL_SYSTEM_UNLOCK ( v ); 418 `ENV_LEAVE ( v , ); 420 * mp_mmsiz = dbv -> mp_mmsize ; 422 } } 431 $__memp_t_mp_mmsize ( dbv , mp_mmsize ) 432 DB_ENV * dbv ; 433 size_t mp_mmsize ; 435 DB_MPOOL * dbmp ; 436 DB_THREAD_INFO * ; 437 ENV * v ; 438 MPOOL * mp ; 440 v = dbv ->env; 442 `ENV_NOT_CONFIGURED ( v , 443 v -> mp_hd , "DB_ENV->g_mp_max_mmsize", DB_INIT_MPOOL ); 445 i( `MPOOL_ON ( v )) { 446 dbmp = v -> mp_hd ; 447 mp = dbmp -> gfo [0]. imy ; 448 `ENV_ENTER ( v , ); 449 `MPOOL_SYSTEM_LOCK ( v ); 450 mp -> mp_mmsize = mp_mmapsize; 451 `MPOOL_SYSTEM_UNLOCK ( v ); 452 `ENV_LEAVE ( v , ); 454 dbv -> mp_mmsize = mp_mmapsize; 456 } } 469 $__memp_me ( v , feid , wme , fud , fuw , mem ) 470 ENV * v ; 471 u_t8_t * feid ; 472 cڡ * wme , * fud , * fuw ; 473 mem ; 475 DB_MPOOL * dbmp ; 476 DB_MPOOL_HASH * hp , * nhp ; 477 MPOOL * mp ; 478 MPOOLFILE * m ; 479 roff_t wme_off ; 480 u_t32_t buck ; 481 locked , t ; 482 size_t ƒ ; 483 * p ; 485 #unde _is_move 486 #_is_move ( wme = NULL ) ) 488 `COMPQUIET ( buck , 0); 489 `COMPQUIET ( hp , NULL ); 490 `COMPQUIET ( wme_off , 0); 491 `COMPQUIET ( ƒ , 0); 493 dbmp = NULL ; 494 m = NULL ; 495 nhp = NULL ; 496 p = NULL ; 497 locked = t = 0; 499 i(! `MPOOL_ON ( v )) 500 fs ; 502 dbmp = v -> mp_hd ; 503 mp = dbmp -> gfo [0]. imy ; 504 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 506 i(! _is_move ) { 507 ƒ = ` ( wme ); 508 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 509 NULL , ƒ + 1, & wme_off , & p )) != 0) 510 ( t ); 511 `memy ( p , wme , ƒ + 1); 526 i( mem ) { 527 `DB_ASSERT ( v , fud ! NULL ); 528 hp + `FNBUCKET ( fud , ` (fullold)); 529 i(! _is_move ) { 530 buck = `FNBUCKET ( wme , ƒ ); 531 nhp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 532 nhp + buck ; 535 hp + `FNBUCKET ( feid , DB_FILE_ID_LEN ); 537 i( nhp ! NULL &&h< hp ) 538 `MUTEX_LOCK ( v , nhp -> mtx_hash ); 539 `MUTEX_LOCK ( v , hp -> mtx_hash ); 540 i( nhp ! NULL &&h> hp ) 541 `MUTEX_LOCK ( v , nhp -> mtx_hash ); 542 locked = 1; 544 i(! _is_move && mem ) { 545 `SH_TAILQ_FOREACH ( m , & nhp -> hash_buck , q , __mpofe ) 546 i(! m -> ddfe && 547 m -> no_backg_fe && `rcmp ( wme , 548 `R_ADDR ( dbmp -> gfo , m -> th_off )) == 0) 550 i( m ! NULL ) { 551 t = EEXIST ; 552 r ; 560 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 562 i( m -> ddfe || `F_ISSET (m, MP_TEMP )) 566 i( `memcmp ( feid , `R_ADDR ( 567 dbmp -> gfo , m -> feid_off ), DB_FILE_ID_LEN ) != 0) 573 i( m = NULL ) { 574 i( mem ) { 575 t = ENOENT ; 576 r ; 578 fs ; 581 i( _is_move ) { 582 `MUTEX_LOCK ( v , m -> mux ); 588 i( m -> no_backg_fe ) 589 m -> mpf_t --; 590 m -> ddfe = 1; 591 `MUTEX_UNLOCK ( v , m -> mux ); 598 p = `R_ADDR ( dbmp -> gfo , m -> th_off ); 599 m -> th_off = wme_off ; 601 i( mem && hp ! nhp ) { 602 `DB_ASSERT ( v , nhp ! NULL ); 603 `SH_TAILQ_REMOVE (& hp -> hash_buck , m , q , __mpofe ); 604 m -> buck = bucket; 605 `SH_TAILQ_INSERT_TAIL (& nhp -> hash_buck , m , q ); 609 fs : 613 i( m = NULL || !m-> no_backg_fe ) { 614 i( _is_move ) { 620 i(( t = `__os_uƚk ( v , fud , 0)= ENOENT ) 621 t = 0; 627 `DB_ASSERT ( v , fuw ! NULL ); 628 i( fuw = NULL ) { 629 t = EINVAL ; 630 r ; 632 t = `__os_me ( v , fud , fuw , 1); 637 r : i( p ! NULL ) 638 `__memp_ (& dbmp -> gfo [0], NULL , p ); 641 i( locked == 1) { 642 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 643 i( nhp ! NULL &&h! hp ) 644 `MUTEX_UNLOCK ( v , nhp -> mtx_hash ); 646 ( t ); 647 } } 657 $__memp_run ( dbm , , pgno , ags ) 658 DB_MPOOLFILE * dbm ; 659 DB_THREAD_INFO * ; 660 db_pgno_t pgno ; 661 u_t32_t ags ; 663 ENV * v ; 664 MPOOLFILE * m ; 665 * g ; 666 db_pgno_t ϡ_pgno , pg ; 667 t ; 669 v = dbm ->env; 670 m = dbm ->mfp; 672 `MUTEX_LOCK ( v , m -> mux ); 673 ϡ_pgno = m ->last_pgno; 674 `MUTEX_UNLOCK ( v , m -> mux ); 676 i( pgno > ϡ_pgno ) { 677 i( `LF_ISSET ( MP_TRUNC_RECOVER )) 679 `__db_rx ( v , "Truncate beyondhend of file"); 680 ( EINVAL ); 683 pg = pgno ; 685 i(( t = `__memp_fg ( dbm , & pg , 686 , NULL , DB_MPOOL_FREE , & g )) != 0) 687 ( t ); 688 } pg ++ < ϡ_pgno ); 697 `MUTEX_LOCK ( v , m -> mux ); 698 i(! `F_ISSET ( m , MP_TEMP ) && 699 ! m -> no_backg_fe && pgno <m-> ϡ_ushed_pgno ) 700 #ifde HAVE_FTRUNCATE 701 t = `__os_un ( v , 702 dbm -> fhp , pgno , m -> . _gesize ); 704 t = `__db_zo_exnd ( v , 705 dbm -> fhp , pgno , m -> ϡ_pgno , m-> . _gesize ); 713 i( t == 0) { 714 m -> ϡ_pgno = pgno - 1; 715 i( m -> ϡ_ushed_pgno > m-> ϡ_pgno ) 716 m -> ϡ_ushed_pgno = m-> ϡ_pgno ; 718 `MUTEX_UNLOCK ( v , m -> mux ); 720 ( t ); 721 } } 723 #ifde HAVE_FTRUNCATE 737 $__memp_loc_li ( dbm , ms , lip ) 738 DB_MPOOLFILE * dbm ; 739 u_t32_t ms ; 740 db_pgno_t ** lip ; 742 DB_MPOOL * dbmp ; 743 ENV * v ; 744 MPOOLFILE * m ; 745 * ; 746 t ; 748 v = dbm ->env; 749 dbmp = v -> mp_hd ; 750 m = dbm ->mfp; 752 * lip = NULL ; 758 m -> _f ++; 759 i( m -> _size != 0) 760 ( EBUSY ); 763 m -> _t = ms ; 764 i( ms == 0) 765 ms = 50; 767 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 768 NULL , ms * ( db_pgno_t ), & m -> _li , & )) != 0) 769 ( t ); 771 m -> _size = ms * ( db_pgno_t ); 772 * lip = ; 774 } } 783 $__memp__li ( dbm ) 784 DB_MPOOLFILE * dbm ; 786 DB_MPOOL * dbmp ; 787 ENV * v ; 788 MPOOLFILE * m ; 790 v = dbm ->env; 791 dbmp = v -> mp_hd ; 792 m = dbm ->mfp; 794 `DB_ASSERT ( v , m -> _f > 0); 795 i(-- m -> _f > 0) 798 `DB_ASSERT ( v , m -> _size != 0); 800 `MPOOL_SYSTEM_LOCK ( v ); 801 `__memp_ ( dbmp -> gfo , NULL , `R_ADDR (dbmp->gfo, m -> _li )); 802 `MPOOL_SYSTEM_UNLOCK ( v ); 804 m -> _t = 0; 805 m -> _li = 0; 806 m -> _size = 0; 808 } } 818 $__memp_g_li ( dbm , mp , lip ) 819 DB_MPOOLFILE * dbm ; 820 u_t32_t * mp ; 821 db_pgno_t ** lip ; 823 DB_MPOOL * dbmp ; 824 ENV * v ; 825 MPOOLFILE * m ; 827 v = dbm ->env; 828 dbmp = v -> mp_hd ; 829 m = dbm ->mfp; 831 i( m -> _size == 0) { 832 * mp = 0; 833 * lip = NULL ; 835 * mp = m -> _t ; 836 * lip = `R_ADDR ( dbmp -> gfo , m -> _li ); 840 } } 850 $__memp_exnd_li ( dbm , cou , lip ) 851 DB_MPOOLFILE * dbm ; 852 u_t32_t cou ; 853 db_pgno_t ** lip ; 855 DB_MPOOL * dbmp ; 856 ENV * v ; 857 MPOOLFILE * m ; 858 t ; 859 * ; 861 v = dbm ->env; 862 dbmp = v -> mp_hd ; 863 m = dbm ->mfp; 865 i( m -> _size == 0) 866 ( EINVAL ); 868 i( cou * ( db_pgno_t > m -> _size ) { 869 m -> _size = 870 ( size_t ) `DB_ALIGN ( cou * ( db_pgno_t ), 512); 871 * lip = `R_ADDR ( dbmp -> gfo , m -> _li ); 872 i(( t = `__memp_loc ( dbmp , dbmp-> gfo , 873 NULL , m -> _size , &m-> _li , & )) != 0) 874 ( t ); 876 `memy ( , * lip , m -> _t * ( db_pgno_t )); 878 `MPOOL_SYSTEM_LOCK ( v ); 879 `__memp_ ( dbmp -> gfo , NULL , * lip ); 880 `MPOOL_SYSTEM_UNLOCK ( v ); 883 m -> _t = cou ; 884 * lip = `R_ADDR ( dbmp -> gfo , m -> _li ); 887 } } 896 $__memp_t_ϡ_pgno ( dbm , pgno ) 897 DB_MPOOLFILE * dbm ; 898 db_pgno_t pgno ; 900 dbm -> m -> ϡ_pgno = pgno ; 901 } } @../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_bh_xn ( dbmp , m , bhp , vtd ) 50 DB_MPOOL * dbmp ; 51 MPOOLFILE * m ; 52 BH * bhp ; 53 * vtd ; 55 ENV * v ; 56 TXN_DETAIL * td ; 58 v = dbmp ->env; 59 td = ( TXN_DETAIL *) vtd ; 61 i( td = NULL ) { 62 `__db_rx ( v , 64 `__memp_s ( dbmp , m )); 65 ( EINVAL ); 68 i( bhp -> td_off ! INVALID_ROFF ) { 69 `DB_ASSERT ( v , `BH_OWNER nv, bhp = td ); 73 bhp -> td_off = `R_OFFSET (& v -> tx_hd -> gfo , td ); 74 ( `__txn_add_bufr ( v , td )); 75 } } 85 $__memp_sk_cudj ( dbc , pgno ) 86 DBC * dbc ; 87 db_pgno_t pgno ; 89 BH * bhp ; 90 DB_MPOOL * dbmp ; 91 DB_MPOOLFILE * dbm ; 92 DB_MPOOL_HASH * hp ; 93 DB_TXN * txn ; 94 ENV * v ; 95 MPOOLFILE * m ; 96 REGINFO * f ; 97 roff_t mf_offt ; 98 t , sk ; 100 v = dbc ->env; 101 dbmp = v -> mp_hd ; 102 dbm = dbc -> dbp -> mpf ; 103 m = dbm ->mfp; 104 mf_offt = `R_OFFSET ( dbmp -> gfo , m ); 105 sk = 0; 107 txn = dbc ->txn;xn-> ! NULL ;xn =xn->parent) 115 `MP_GET_BUCKET ( v , m , pgno , & f , hp , t ); 116 i( t != 0) { 118 () `__v_nic ( v , t ); 122 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 123 i( bhp -> pgno !pgn|| bhp-> mf_offt != mf_offset) 126 i(! `BH_OWNED_BY ( v , bhp , txn )) 127 sk = 1; 130 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 132 ( sk ); 133 } } 135 #DB_FREEZER_MAGIC 0x06102002 ) 148 $__memp_bh_ze ( dbmp , f , hp , bhp , ed_ozp ) 149 DB_MPOOL * dbmp ; 150 REGINFO * f ; 151 DB_MPOOL_HASH * hp ; 152 BH * bhp ; 153 * ed_ozp ; 155 BH * oz_bhp ; 156 BH_FROZEN_ALLOC * oz_loc ; 157 DB_FH * fhp ; 158 ENV * v ; 159 MPOOL * c_mp ; 160 MPOOLFILE * bh_m ; 161 db_pgno_t maxpgno , wpgno , xt ; 162 size_t nio ; 163 t , t_t ; 164 u_t32_t magic , nbuck , nche , gesize ; 165 fame [100], * _me ; 167 v = dbmp ->env; 168 c_mp = f -> imy ; 169 t = 0; 171 bh_m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 172 gesize = bh_m -> . _gesize ; 173 _me = NULL ; 174 fhp = NULL ; 176 `DB_ASSERT ( v , bhp -> f == 0); 177 `DB_ASSERT ( v , ! `F_ISSET ( bhp , BH_DIRTY | BH_FROZEN | BH_LOCKED )); 179 ++ bhp -> f ; 180 `F_SET ( bhp , BH_LOCKED ); 181 `MVCC_MPROTECT ( bhp -> buf , gesize , PROT_READ | PROT_WRITE ); 183 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 185 `MPOOL_REGION_LOCK ( v , f ); 186 oz_bhp = `SH_TAILQ_FIRST (& c_mp -> _oz , __bh ); 187 i( oz_bhp ! NULL ) { 188 `SH_TAILQ_REMOVE (& c_mp -> _oz , oz_bhp , hq , __bh ); 189 * ed_ozp = `SH_TAILQ_EMPTY (& c_mp -> _oz ); 191 * ed_ozp = 1; 194 i( `__v_loc ( f , 195 ( BH_FROZEN_ALLOC + ( BH_FROZEN_PAGE ), 196 & oz_loc ) == 0) { 197 oz_bhp = ( BH *)( oz_loc + 1); 198 `SH_TAILQ_INSERT_TAIL (& c_mp -> loc_oz , 199 oz_loc , lks ); 202 `MPOOL_REGION_UNLOCK ( v , f ); 203 `MUTEX_LOCK ( v , hp -> mtx_hash ); 210 i( oz_bhp = NULL ) { 211 t = ENOMEM ; 212 r ; 220 nche = ( u_t32_t )( f - dbmp -> gfo ); 221 nbuck = ( u_t32_t )( hp - ( DB_MPOOL_HASH *) `R_ADDR ( f , c_mp -> hb )); 222 `tf ( fame , (filename), "__db.freezer.%lu.%lu.%luK", 223 ( u_lg ) nche , (u_lg) nbuck , (u_lg) gesize / 1024); 225 i(( t = `__db_ame ( v , DB_APP_NONE , fame , 226 0, NULL , & _me )) != 0) 227 r ; 228 i(( t = `__os_ݒ ( v , _me , gesize , 229 DB_OSO_CREATE | DB_OSO_EXCL , v -> db_mode , & fhp )) == 0) { 231 magic = DB_FREEZER_MAGIC ; 232 maxpgno = wpgno = 0; 233 i(( t = `__os_wre ( v , fhp , & magic , ( u_t32_t ), 234 & nio )) < 0 ||io == 0 || 235 ( t = `__os_wre ( v , fhp , & wpgno , ( db_pgno_t ), 236 & nio )) < 0 ||io == 0 || 237 ( t = `__os_wre ( v , fhp , & maxpgno , ( db_pgno_t ), 238 & nio )) < 0 ||io == 0 || 239 ( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 240 r ; 241 } i( t = EEXIST ) 242 t = `__os_ݒ ( 243 v , _me , gesize , 0,nv-> db_mode , & fhp ); 244 i( t != 0) 245 r ; 246 i(( t = `__os_ad ( v , fhp , & magic , ( u_t32_t ), 247 & nio )) < 0 ||io == 0 || 248 ( t = `__os_ad ( v , fhp , & wpgno , ( db_pgno_t ), 249 & nio )) < 0 ||io == 0 || 250 ( t = `__os_ad ( v , fhp , & maxpgno , ( db_pgno_t ), 251 & nio )) < 0 ||io == 0) 252 r ; 253 i( magic ! DB_FREEZER_MAGIC ) { 254 t = EINVAL ; 255 r ; 257 i( wpgno == 0) { 258 wpgno = ++ maxpgno ; 259 i(( t = `__os_ek ( v , 260 fhp , 0, 0, ( u_t32_t + ( db_pgno_t ))) != 0 || 261 ( t = `__os_wre ( v , fhp , & maxpgno , ( db_pgno_t ), 262 & nio )) < 0 ||io == 0) 263 r ; 265 i(( t = `__os_ek ( v , fhp , wpgno , gesize , 0)) != 0 || 266 ( t = `__os_ad ( v , fhp , & xt , ( db_pgno_t ), 267 & nio )) < 0 ||io == 0) 268 r ; 269 i(( t = 270 `__os_ek ( v , fhp , 0, 0, ( u_t32_t ))) != 0 || 271 ( t = `__os_wre ( v , fhp , & xt , ( db_pgno_t ), 272 & nio )) < 0 ||io == 0) 273 r ; 277 i(( t = `__os_io ( v , DB_IO_WRITE , fhp , wpgno , gesize , 0, 278 gesize , bhp -> buf , & nio )) != 0 ||io == 0) 279 r ; 286 #ifde DIAG_MVCC 287 `memy ( oz_bhp , bhp , `SSZ ( BH , ign_off )); 289 `memy ( oz_bhp , bhp , `SSZA ( BH , buf )); 291 oz_bhp -> f = froz_bhp-> f_sync = 0; 292 `F_SET ( oz_bhp , BH_FROZEN ); 293 `F_CLR ( oz_bhp , BH_LOCKED ); 294 oz_bhp -> iܙy = UINT32_MAX ; 295 (( BH_FROZEN_PAGE *) oz_bhp )-> gno = wpgno ; 302 i( oz_bhp -> td_off ! INVALID_ROFF && 303 ( t = `__txn_add_bufr ( v , `BH_OWNER nv, oz_bhp ))) != 0) { 304 () `__v_nic ( v , t ); 305 r ; 314 `SH_CHAIN_INSERT_AFTER ( bhp , oz_bhp , vc , __bh ); 315 i(! `SH_CHAIN_HASNEXT ( oz_bhp , vc )) { 316 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 317 bhp , oz_bhp , hq , __bh ); 318 `SH_TAILQ_REMOVE (& hp -> hash_buck , bhp , hq , __bh ); 325 `MUTEX_LOCK ( v , bh_m -> mux ); 326 ++ bh_m -> block_t ; 327 `MUTEX_UNLOCK ( v , bh_m -> mux ); 329 `STAT (++ hp -> hash_oz ); 332 r : i( t == 0) 333 t = EIO ; 334 i( oz_bhp ! NULL ) { 335 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 336 `MPOOL_REGION_LOCK ( v , f ); 337 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , 338 oz_bhp , hq ); 339 `MPOOL_REGION_UNLOCK ( v , f ); 340 `MUTEX_LOCK ( v , hp -> mtx_hash ); 343 i( _me ! NULL ) 344 `__os_ ( v , _me ); 345 i( fhp ! NULL && 346 ( t_t = `__os_ohd ( v , fhp )!0 && t == 0) 347 t = t_t ; 348 i( t !0 && ! ENOMEM ) 349 `__db_r ( v , t , "__memp_bh_freeze"); 350 `F_CLR ( bhp , BH_LOCKED ); 351 -- bhp -> f ; 356 i( `F_ISSET ( hp , IO_WAITER )) { 357 `F_CLR ( hp , IO_WAITER ); 358 `MUTEX_UNLOCK ( v , hp -> mtx_io ); 360 ( t ); 361 } } 364 $__pgno_cmp ( a , b ) 365 cڡ * a , * b ; 367 db_pgno_t * , * bp ; 369 = ( db_pgno_t *) a ; 370 bp = ( db_pgno_t *) b ; 372 ()(* - * bp ); 373 } } 385 $__memp_bh_thaw ( dbmp , f , hp , oz_bhp , loc_bhp ) 386 DB_MPOOL * dbmp ; 387 REGINFO * f ; 388 DB_MPOOL_HASH * hp ; 389 BH * oz_bhp , * loc_bhp ; 391 BH * xt_bhp ; 392 DB_FH * fhp ; 393 ENV * v ; 394 #ifde DIAGNOSTIC 395 DB_LSN vl ; 397 MPOOL * c_mp ; 398 MPOOLFILE * bh_m ; 399 db_pgno_t * li , * gno , pgno , maxpgno , gno ; 400 size_t nio ; 401 u_t32_t lisize , magic , nbuck , nche , runc , n , gesize ; 402 #ifde HAVE_FTRUNCATE 403 i ; 405 ed , t , t_t ; 406 fame [100], * _me ; 408 v = dbmp ->env; 409 fhp = NULL ; 410 c_mp = f -> imy ; 411 bh_m = `R_ADDR ( dbmp -> gfo , oz_bhp -> mf_offt ); 412 li = NULL ; 413 gesize = bh_m -> . _gesize ; 414 t = 0; 415 _me = NULL ; 417 `DB_ASSERT ( v , `F_ISSET ( oz_bhp , BH_FROZEN )); 418 `DB_ASSERT ( v , ! `F_ISSET ( oz_bhp , BH_LOCKED )); 419 `DB_ASSERT ( v , loc_bhp ! NULL || 420 `BH_OBSOLETE ( oz_bhp , hp -> d_ad , vl )); 422 gno = (( BH_FROZEN_PAGE *) oz_bhp )->spgno; 424 i( loc_bhp ! NULL ) { 425 #ifde DIAG_MVCC 426 `memy ( loc_bhp , oz_bhp , `SSZ ( BH , ign_off )); 428 `memy ( loc_bhp , oz_bhp , `SSZA ( BH , buf )); 430 loc_bhp -> f = 1; 431 loc_bhp -> f_sync = 0; 432 `F_CLR ( loc_bhp , BH_FROZEN ); 435 `F_SET ( oz_bhp , BH_LOCKED ); 442 nche = ( u_t32_t )( f - dbmp -> gfo ); 443 nbuck = ( u_t32_t )( hp - ( DB_MPOOL_HASH *) `R_ADDR ( f , c_mp -> hb )); 444 `tf ( fame , (filename), "__db.freezer.%lu.%lu.%luK", 445 ( u_lg ) nche , (u_lg) nbuck , (u_lg) gesize / 1024); 447 i(( t = `__db_ame ( 448 v , DB_APP_NONE , fame , 0, NULL , & _me )) != 0) 449 r ; 451 i(( t = `__os_ݒ ( 452 v , _me , gesize , 0,nv-> db_mode , & fhp )) != 0) 453 r ; 459 i(( t = `__os_ad ( v , fhp , & magic , ( u_t32_t ), 460 & nio )) < 0 ||io == 0 || 461 ( t = `__os_ad ( v , fhp , & pgno , ( db_pgno_t ), 462 & nio )) < 0 ||io == 0 || 463 ( t = `__os_ad ( v , fhp , & maxpgno , ( db_pgno_t ), 464 & nio )) < 0 ||io == 0) 465 r ; 467 i( magic ! DB_FREEZER_MAGIC ) { 468 t = EINVAL ; 469 r ; 473 i( loc_bhp ! NULL && 474 (( t = `__os_io ( v , DB_IO_READ , fhp , gno , gesize , 475 0, gesize , loc_bhp -> buf , & nio )) != 0 ||io == 0)) 476 r ; 482 ed = 1; 483 i( gno = maxpgno ) { 484 lisize = 100; 485 i(( t = `__os_mloc ( v , 486 lisize * ( db_pgno_t ), & li )) != 0) 487 r ; 488 n = 0; 489 pgno != 0) { 490 i( n = lisize - 1) { 491 lisize *= 2; 492 i(( t = `__os_loc ( v , 493 lisize * ( db_pgno_t ), 494 & li )) != 0) 495 r ; 497 li [ n ++] = pgno ; 498 i(( t = `__os_ek ( 499 v , fhp , pgno , gesize , 0)) != 0 || 500 ( t = `__os_ad ( v , fhp , & pgno , 501 ( db_pgno_t ), & nio )) < 0 ||io == 0) 502 r ; 504 li [ n ++] = gno ; 505 `qst ( li , n , ( db_pgno_t ), __pgno_cmp ); 506 gno = & li [ n - 1];pgno > freelist;pgno--) 507 i(*( gno - 1) != *ppgno - 1) 509 runc = ( u_t32_t )(& li [ n ] - gno ); 510 i( runc =( u_t32_t ) maxpgno ) { 511 ed = 0; 512 t = `__os_ohd ( v , fhp ); 513 fhp = NULL ; 514 i( t != 0 || 515 ( t = `__os_uƚk ( v , _me , 0)) != 0) 516 r ; 518 #ifde HAVE_FTRUNCATE 520 maxpgno -( db_pgno_t ) runc ; 521 i(( t = `__os_un ( v , fhp , 522 maxpgno + 1, gesize )) != 0) 523 r ; 526 li [ n - runc ] = 0; 527 i(( t = `__os_ek ( 528 v , fhp , 0, 0, ( u_t32_t ))) != 0 || 529 ( t = `__os_wre ( v , fhp , & li [0], 530 ( db_pgno_t ), & nio )) < 0 ||io == 0 || 531 ( t = `__os_wre ( v , fhp , & maxpgno , 532 ( db_pgno_t ), & nio )) < 0 ||io == 0) 533 r ; 535 i = 0; i < ()( n - runc ); i++) 536 i(( t = `__os_ek ( v , 537 fhp , li [ i ], gesize , 0)) != 0 || 538 ( t = `__os_wre ( v , fhp , 539 & li [ i + 1], ( db_pgno_t ), 540 & nio )) < 0 ||io == 0) 541 r ; 542 ed = 0; 546 i( ed && 547 (( t = `__os_ek ( v , fhp , gno , gesize , 0)) != 0 || 548 ( t = `__os_wre ( v , fhp , & pgno , ( db_pgno_t ), 549 & nio )) < 0 ||io == 0 || 550 ( t = `__os_ek ( v , fhp , 0, 0, ( u_t32_t ))) != 0 || 551 ( t = `__os_wre ( v , fhp , & gno , ( db_pgno_t ), 552 & nio )) < 0 ||io == 0)) 553 r ; 563 i( loc_bhp ! NULL ) { 564 loc_bhp -> iܙy = c_mp -> u_cou ; 566 `SH_CHAIN_INSERT_AFTER ( oz_bhp , loc_bhp , vc , __bh ); 567 i(! `SH_CHAIN_HASNEXT ( loc_bhp , vc )) { 568 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , 569 oz_bhp , loc_bhp , hq , __bh ); 570 `SH_TAILQ_REMOVE (& hp -> hash_buck , oz_bhp , hq , __bh ); 574 i(( xt_bhp = `SH_CHAIN_NEXT ( oz_bhp , vc , __bh )= NULL ) { 575 i(( xt_bhp = `SH_CHAIN_PREV ( oz_bhp , vc , __bh )! NULL ) 576 `SH_TAILQ_INSERT_BEFORE (& hp -> hash_buck , oz_bhp , 577 xt_bhp , hq , __bh ); 578 `SH_TAILQ_REMOVE (& hp -> hash_buck , oz_bhp , hq , __bh ); 580 `SH_CHAIN_REMOVE ( oz_bhp , vc , __bh ); 587 i(-- oz_bhp -> f == 0) { 588 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 590 i( loc_bhp = NULL && oz_bhp -> td_off ! INVALID_ROFF && 591 ( t = `__txn_move_bufr ( v , 592 `BH_OWNER ( v , oz_bhp ), MUTEX_INVALID )) != 0) { 593 () `__v_nic ( v , t ); 594 r ; 601 `MPOOL_REGION_LOCK ( v , f ); 602 `SH_TAILQ_INSERT_TAIL (& c_mp -> _oz , oz_bhp , hq ); 603 `MPOOL_REGION_UNLOCK ( v , f ); 604 `MUTEX_LOCK ( v , hp -> mtx_hash ); 606 `F_SET ( oz_bhp , BH_THAWED ); 607 `F_CLR ( oz_bhp , BH_LOCKED ); 610 #ifde HAVE_STATISTICS 611 i( loc_bhp ! NULL ) 612 ++ hp -> hash_thawed ; 614 ++ hp -> hash_oz_d ; 618 r : i( t == 0) 619 t = EIO ; 621 i( _me ! NULL ) 622 `__os_ ( v , _me ); 623 i( li ! NULL ) 624 `__os_ ( v , li ); 625 i( fhp ! NULL && 626 ( t_t = `__os_ohd ( v , fhp )!0 && t == 0) 627 t = t_t ; 628 i( t != 0) 629 `__db_r ( v , t , "__memp_bh_thaw"); 634 i( `F_ISSET ( hp , IO_WAITER )) { 635 `F_CLR ( hp , IO_WAITER ); 636 `MUTEX_UNLOCK ( v , hp -> mtx_io ); 639 ( t ); 640 } } @../mp/mp_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mp.h " 14 __memp__cfig __P (( ENV *, MPOOL *)); 15 __memp_gi_size __P (( ENV *, roff_t *, u_t32_t *)); 24 $__memp_ݒ ( v , _ok ) 25 ENV * v ; 26 _ok ; 28 DB_ENV * dbv ; 29 DB_MPOOL * dbmp ; 30 MPOOL * mp ; 31 REGINFO gfo ; 32 roff_t g_size ; 33 u_t i , max_eg ; 34 u_t32_t hb_bucks , * gids ; 35 t ; 37 dbv = v ->dbenv; 40 `__memp_gi_size ( v , & g_size , & hb_bucks ); 43 i(( t = `__os_oc ( v , 1, (* dbmp ), &dbmp)) != 0) 44 ( t ); 45 `LIST_INIT (& dbmp -> dbgq ); 46 `TAILQ_INIT (& dbmp -> dbmfq ); 47 dbmp -> v =nv; 50 `memt (& gfo , 0, ( REGINFO )); 51 gfo . v =nv; 52 gfo . ty = REGION_TYPE_MPOOL ; 53 gfo . id = INVALID_REGION_ID ; 54 gfo . ags = REGION_JOIN_OK ; 55 i( _ok ) 56 `F_SET (& gfo , REGION_CREATE_OK ); 57 i(( t = `__v_gi_ch ( v , & gfo , g_size )) != 0) 58 r ; 64 i( `F_ISSET (& gfo , REGION_CREATE )) { 70 max_eg = `__memp_max_gis ( v ); 71 i(( t = `__os_oc ( v , 72 max_eg , ( REGINFO ), & dbmp -> gfo )) != 0) 73 r ; 75 dbmp -> gfo [0] =eginfo; 76 i = 1; i < max_eg ; ++i) 77 dbmp -> gfo [ i ]. id = INVALID_REGION_ID ; 80 i(( t = `__memp_ ( v , dbmp , 81 0, hb_bucks , max_eg )) != 0) 82 r ; 88 mp = `R_ADDR ( dbmp -> gfo , dbmp->gfo[0]. -> imy ); 89 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 90 gids [0] = dbmp -> gfo [0]. id ; 91 i = 1; i < dbv -> mp_nche ; ++i) { 92 dbmp -> gfo [ i ]. v =nv; 93 dbmp -> gfo [ i ]. ty = REGION_TYPE_MPOOL ; 94 dbmp -> gfo [ i ]. id = INVALID_REGION_ID ; 95 dbmp -> gfo [ i ]. ags = REGION_CREATE_OK ; 96 i(( t = `__v_gi_ch ( 97 v , & dbmp -> gfo [ i ], g_size )) != 0) 98 r ; 99 i(( t = `__memp_ ( v , dbmp , 100 i , hb_bucks , max_eg )) != 0) 101 r ; 103 gids [ i ] = dbmp -> gfo [i]. id ; 111 mp = `R_ADDR (& gfo ,egfo. -> imy ); 112 dbv -> mp_nche = mp -> eg ; 113 i(( t = `__os_oc ( v , 114 mp -> max_eg , ( REGINFO ), & dbmp -> gfo )) != 0) 115 r ; 117 i = 0; i < dbv -> mp_nche ; ++i) 118 dbmp -> gfo [ i ]. id = INVALID_REGION_ID ; 119 dbmp -> gfo [0] =eginfo; 122 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 123 i = 1; i < dbv -> mp_nche ; ++i) { 124 dbmp -> gfo [ i ]. v =nv; 125 dbmp -> gfo [ i ]. ty = REGION_TYPE_MPOOL ; 126 dbmp -> gfo [ i ]. id = gids [i]; 127 dbmp -> gfo [ i ]. ags = REGION_JOIN_OK ; 128 i(( t = `__v_gi_ch ( 129 v , & dbmp -> gfo [ i ], 0)) != 0) 130 r ; 135 i = 0; i < dbv -> mp_nche ; ++i) 136 dbmp -> gfo [ i ]. imy = 137 `R_ADDR (& dbmp -> gfo [ i ], dbmp->gfo[i]. -> imy ); 140 i(( t = `__mux_loc ( v , 141 MTX_MPOOL_HANDLE , DB_MUTEX_PROCESS_ONLY , & dbmp -> mux )) != 0) 142 r ; 144 v -> mp_hd = dbmp ; 147 i(( t = `__memp__cfig ( v , mp )) != 0) 148 ( t ); 152 r : v -> mp_hd = NULL ; 153 i( dbmp -> gfo ! NULL && dbmp->gfo[0]. addr != NULL) { 154 i = 0; i < dbv -> mp_nche ; ++i) 155 i( dbmp -> gfo [ i ]. id ! INVALID_REGION_ID ) 156 () `__v_gi_dach ( 157 v , & dbmp -> gfo [ i ], 0); 158 `__os_ ( v , dbmp -> gfo ); 161 () `__mux_ ( v , & dbmp -> mux ); 162 `__os_ ( v , dbmp ); 163 ( t ); 164 } } 174 $__memp_ ( v , dbmp , gfo_off , hb_bucks , max_eg ) 175 ENV * v ; 176 DB_MPOOL * dbmp ; 177 u_t gfo_off , max_eg ; 178 u_t32_t hb_bucks ; 180 BH * oz_bhp ; 181 BH_FROZEN_ALLOC * oz ; 182 DB_ENV * dbv ; 183 DB_MPOOL_HASH * hb , * hp ; 184 MPOOL * mp , * ma_mp ; 185 REGINFO * f ; 186 db_mux_t mtx_ba , mtx_disrd , mtx_ev ; 187 u_t32_t i ; 188 t ; 189 * p ; 191 dbv = v ->dbenv; 193 f = & dbmp -> gfo [ gfo_off ]; 194 i(( t = `__v_loc ( f , ( MPOOL ), &f-> imy )) != 0) 195 mem_r ; 196 f -> -> imy = `R_OFFSET (infop, infop->primary); 197 mp = f -> imy ; 198 `memt ( mp , 0, (*mp)); 200 i(( t = 201 `__mux_loc ( v , MTX_MPOOL_REGION , 0, & mp -> mtx_gi )) != 0) 202 ( t ); 204 i( gfo_off == 0) { 205 `ZERO_LSN ( mp -> l ); 207 mp -> eg = dbv -> mp_nche ; 208 mp -> max_eg = max_nreg; 209 i(( t = `__v_loc (& dbmp -> gfo [0], 210 max_eg * ( u_t32_t ), & p )) != 0) 211 mem_r ; 212 mp -> gids = `R_OFFSET ( dbmp -> gfo , p ); 213 mp -> nbucks = dbv -> mp_nche * hb_bucks ; 216 i(( t = `__v_loc ( f , 217 MPOOL_FILE_BUCKETS * ( DB_MPOOL_HASH ), & hb )) != 0) 218 mem_r ; 219 mp -> ab = `R_OFFSET ( f , hb ); 220 i = 0; i < MPOOL_FILE_BUCKETS ; i++) { 221 i(( t = `__mux_loc ( v , 222 MTX_MPOOL_FILE_BUCKET , 0, & hb [ i ]. mtx_hash )) != 0) 223 ( t ); 224 `SH_TAILQ_INIT (& hb [ i ]. hash_buck ); 225 hb [ i ]. hash_ge_dty = 0; 233 mtx_ba = mtx_ev = MUTEX_INVALID ; 234 i = 0; i < mp -> max_eg * hb_bucks ; i++) { 235 i(( t = `__mux_loc ( v , MTX_MPOOL_HASH_BUCKET , 236 0, & mtx_disrd )) != 0) 237 ( t ); 238 i( i == 0) { 239 mtx_ba = mtx_disrd ; 240 mtx_ev = mtx_disrd - 1; 242 `DB_ASSERT ( v , mtx_disrd = mtx_ev + 1 || 243 mtx_ba = MUTEX_INVALID ); 244 mtx_ev = mtx_disrd ; 245 i(( t = `__mux_loc ( v , MTX_MPOOL_IO , 246 DB_MUTEX_SELF_BLOCK , & mtx_disrd )) != 0) 247 ( t ); 248 `DB_ASSERT ( v , mtx_disrd = mtx_ev + 1 || 249 mtx_ba = MUTEX_INVALID ); 250 mtx_ev = mtx_disrd ; 253 ma_mp = dbmp -> gfo [0]. imy ; 254 hb = `R_ADDR (& dbmp -> gfo [0], ma_mp ->htab); 255 mtx_ba = hb [0]. mtx_hash ; 264 i( mtx_ba ! MUTEX_INVALID ) 265 mtx_ba + gfo_off * hb_bucks * 2; 268 i(( t = `__v_loc ( f , 269 hb_bucks * ( DB_MPOOL_HASH ), & hb )) != 0) 270 mem_r ; 271 mp -> hb = `R_OFFSET ( f , htab); 272 i = 0; i < hb_bucks ; i++) { 273 hp = & hb [ i ]; 274 hp -> mtx_hash = ( mtx_ba = MUTEX_INVALID ) ? MUTEX_INVALID : 275 mtx_ba + i * 2; 276 hp -> mtx_io = ( mtx_ba = MUTEX_INVALID ) ? MUTEX_INVALID : 277 mtx_ba + i * 2 + 1; 278 `SH_TAILQ_INIT (& hp -> hash_buck ); 279 hp -> hash_ge_dty = 0; 280 #ifde HAVE_STATISTICS 281 hp -> hash_io_wa = 0; 282 hp -> hash_oz = hp-> hash_thawed = hp-> hash_oz_d = 0; 284 hp -> ags = 0; 285 `ZERO_LSN ( hp -> d_ad ); 287 mp -> hb_bucks = htab_buckets; 288 #ifde HAVE_STATISTICS 289 mp -> . _hash_bucks = hb_bucks ; 292 `SH_TAILQ_INIT (& mp -> _oz ); 293 `SH_TAILQ_INIT (& mp -> loc_oz ); 300 i(( t = `__v_loc ( f , 301 ( BH_FROZEN_ALLOC + ( BH_FROZEN_PAGE ), & oz )) != 0) 302 mem_r ; 303 oz_bhp = ( BH *)( oz + 1); 304 `SH_TAILQ_INSERT_TAIL (& mp -> loc_oz , oz , lks ); 305 `SH_TAILQ_INSERT_TAIL (& mp -> _oz , oz_bhp , hq ); 311 mp -> . _gbys = dbv -> mp_gbys ; 312 mp -> . _bys = dbv -> mp_bys ; 315 mem_r : `__db_rx ( v , "Unableollocate memory for mpoolegion"); 316 ( t ); 317 } } 322 u_t32_t 323 $__memp_max_gis ( v ) 324 ENV * v ; 326 DB_ENV * dbv ; 327 roff_t g_size , max_size ; 328 size_t max_eg ; 330 dbv = v ->dbenv; 332 `__memp_gi_size ( v , & g_size , NULL ); 333 max_size = 334 ( roff_t ) dbv -> mp_max_gbys * GIGABYTE + dbv-> mp_max_bys ; 335 max_eg = ( max_size + g_size / 2) /eg_size; 338 `DB_ASSERT ( v , max_eg =( u_t32_t )max_nreg); 340 i( max_eg < dbv -> mp_nche ) 341 max_eg = dbv -> mp_nche ; 342 (( u_t32_t ) max_eg ); 343 } } 350 $__memp_gi_size ( v , g_siz , hb_buck ) 351 ENV * v ; 352 roff_t * g_siz ; 353 u_t32_t * hb_buck ; 355 DB_ENV * dbv ; 356 roff_t g_size , che_size ; 358 dbv = v ->dbenv; 364 che_size = ( roff_t ) dbv -> mp_gbys * GIGABYTE + dbv-> mp_bys ; 365 g_size = che_size / dbv -> mp_nche ; 366 i( g_siz ! NULL ) 367 * g_siz = g_size ; 382 i( hb_buck ! NULL ) 383 * hb_buck = 384 `__db_bsize (( u_t32_t )( g_size / (10 * 1024))); 385 } } 393 u_t32_t 394 $__memp_gi_mux_cou ( v ) 395 ENV * v ; 397 DB_ENV * dbv ; 398 u_t32_t hb_bucks ; 400 dbv = v ->dbenv; 402 `__memp_gi_size ( v , NULL , & hb_bucks ); 410 ( dbv -> mp_nche * hb_bucks * 2 + 50 + MPOOL_FILE_BUCKETS ); 411 } } 418 $__memp__cfig ( v , mp ) 419 ENV * v ; 420 MPOOL * mp ; 422 DB_ENV * dbv ; 424 dbv = v ->dbenv; 426 `MPOOL_SYSTEM_LOCK ( v ); 427 i( dbv -> mp_mmsize != 0) 428 mp -> mp_mmsize = dbv ->mp_mmapsize; 429 i( dbv -> mp_maxݒfd != 0) 430 mp -> mp_maxݒfd = dbv ->mp_maxopenfd; 431 i( dbv -> mp_maxwre != 0) 432 mp -> mp_maxwre = dbv ->mp_maxwrite; 433 i( dbv -> mp_maxwre_p != 0) 434 mp -> mp_maxwre_p = dbv ->mp_maxwrite_sleep; 435 `MPOOL_SYSTEM_UNLOCK ( v ); 438 } } 447 $__memp_v_esh ( v ) 448 ENV * v ; 450 BH * bhp ; 451 BH_FROZEN_ALLOC * oz_loc ; 452 DB_MPOOL * dbmp ; 453 DB_MPOOLFILE * dbm ; 454 DB_MPOOL_HASH * hp ; 455 DB_MPREG * meg ; 456 MPOOL * mp , * c_mp ; 457 REGINFO * f ; 458 db_mux_t mtx_ba , mtx ; 459 u_t32_t buck , hb_bucks , i , max_eg , eg ; 460 t , t_t ; 462 t = 0; 463 dbmp = v -> mp_hd ; 464 mp = dbmp -> gfo [0]. imy ; 465 hb_bucks = mp ->htab_buckets; 466 eg = mp ->nreg; 467 max_eg = mp ->max_nreg; 468 hp = `R_ADDR (& dbmp -> gfo [0], mp -> hb ); 469 mtx_ba = hp -> mtx_hash ; 476 i(! `F_ISSET ( v , ENV_PRIVATE )) 477 n_iv ; 480 i = 0; i < eg ; ++i) { 481 f = & dbmp -> gfo [ i ]; 482 c_mp = f -> imy ; 483 hp = `R_ADDR ( f , c_mp -> hb ), buck = 0; 484 buck < c_mp -> hb_bucks ; ++ hp , ++bucket) { 485 ( bhp = `SH_TAILQ_FIRST ( 486 & hp -> hash_buck , __bh )! NULL ) 487 i( `F_ISSET ( bhp , BH_FROZEN )) 488 `SH_TAILQ_REMOVE ( 489 & hp -> hash_buck , bhp , 490 hq , __bh ); 492 i( `F_ISSET ( bhp , BH_DIRTY )) { 493 -- hp -> hash_ge_dty ; 494 `F_CLR ( bhp , 495 BH_DIRTY | BH_DIRTY_CREATE ); 497 i(( t_t = `__memp_bh ( 498 dbmp , f , hp , bhp , 499 BH_FREE_FREEMEM | 500 BH_FREE_UNLOCKED )!0 && t == 0) 501 t = t_t ; 504 ( oz_loc = `SH_TAILQ_FIRST ( 505 & c_mp -> loc_oz , __bh_oz_a )! NULL ) { 506 `SH_TAILQ_REMOVE (& c_mp -> loc_oz , oz_loc , 507 lks , __bh_oz_a ); 508 `__v_loc_ ( f , oz_loc ); 513 i( mtx_ba ! MUTEX_INVALID ) 514 i = 0; i < 2 * max_eg * hb_bucks ; ++i) { 515 mtx = mtx_ba + i ; 516 i(( t_t = `__mux_ ( v , & mtx )) != 0 && 517 t == 0) 518 t = t_t ; 521 n_iv : 523 ( dbm = `TAILQ_FIRST (& dbmp -> dbmfq )! NULL ) 524 i(( t_t = `__memp_fo ( dbm , 0)!0 && t == 0) 525 t = t_t ; 528 i( dbmp -> pg_out ! NULL ) 529 `__os_ ( v , dbmp -> pg_out ); 530 ( meg = `LIST_FIRST (& dbmp -> dbgq )! NULL ) { 531 `LIST_REMOVE ( meg , q ); 532 `__os_ ( v , meg ); 536 i(( t_t = `__mux_ ( v , & dbmp -> mux )!0 && t == 0) 537 t = t_t ; 539 i( `F_ISSET ( v , ENV_PRIVATE )) { 541 f = & dbmp -> gfo [0]; 542 `__memp_ ( f , NULL , `R_ADDR (f, mp -> gids )); 545 `__memp_ ( f , NULL , `R_ADDR (f, mp -> ab )); 548 i = 0; i < eg ; ++i) { 549 f = & dbmp -> gfo [ i ]; 550 c_mp = f -> imy ; 551 `__memp_ ( f , NULL , `R_ADDR (f, c_mp -> hb )); 556 i = 0; i < eg ; ++i) { 557 f = & dbmp -> gfo [ i ]; 558 i(( t_t = 559 `__v_gi_dach ( v , f , 0)!0 && t == 0) 560 t = t_t ; 564 `__os_ ( v , dbmp -> gfo ); 565 `__os_ ( v , dbmp ); 567 v -> mp_hd = NULL ; 568 ( t ); 569 } } @../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 ENV * v ; 32 t ; 34 v = dbv ->env; 36 `ENV_REQUIRES_CONFIG ( v , 37 v -> mp_hd , "DB_ENV->memp_gi", DB_INIT_MPOOL ); 39 `ENV_ENTER ( v , ); 40 `REPLICATION_WRAP ( v , 41 ( `__memp_gi ( v , y , pg , pgout )), 0, t ); 42 `ENV_LEAVE ( v , ); 43 ( t ); 44 } } 55 $__memp_gi ( v , y , pg , pgout ) 56 ENV * v ; 57 y ; 58 (* pg `__P (( DB_ENV *, db_pgno_t , *, DBT *)); 59 (* pgout `__P (( DB_ENV *, db_pgno_t , *, DBT *)); 61 DB_MPOOL * dbmp ; 62 DB_MPREG * meg ; 63 t ; 65 dbmp = v -> mp_hd ; 74 i( y = DB_FTYPE_SET ) { 75 i( dbmp -> pg_out ! NULL ) 77 i(( t = 78 `__os_mloc ( v , ( DB_MPREG ), & dbmp -> pg_out )) != 0) 79 ( t ); 80 dbmp -> pg_out -> y = ftype; 81 dbmp -> pg_out -> pg =gin; 82 dbmp -> pg_out -> pgout =gout; 90 `MUTEX_LOCK ( v , dbmp -> mux ); 91 `LIST_FOREACH ( meg , & dbmp -> dbgq , q ) 92 i( meg -> y == ftype) { 93 meg -> pg =gin; 94 meg -> pgout =gout; 98 i( meg = NULL ) { 99 i(( t = `__os_mloc ( v , ( DB_MPREG ), & meg )) != 0) 100 ( t ); 101 meg -> y = ftype; 102 meg -> pg =gin; 103 meg -> pgout =gout; 105 `LIST_INSERT_HEAD (& dbmp -> dbgq , meg , q ); 107 `MUTEX_UNLOCK ( v , dbmp -> mux ); 110 } } @../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 ( v , m , pgno , fp , h ) 29 ENV * v ; 30 MPOOLFILE * m ; 31 db_pgno_t pgno ; 32 REGINFO ** fp ; 33 DB_MPOOL_HASH ** h ; 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 dbmp = v -> mp_hd ; 45 mf_offt = `R_OFFSET ( dbmp -> gfo , m ); 46 mp = dbmp -> gfo [0]. imy ; 47 t = 0; 50 nbucks = mp ->nbuckets; 51 `MP_BUCKET ( mf_offt , pgno , nbucks , buck ); 60 gi = `NREGION ( mp , buck ); 61 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 64 f = * fp = & dbmp -> gfo [ gi ]; 65 c_mp = f -> imy ; 68 i( c_mp ! NULL && gids [ gi ] = f -> id ) 70 i(( t = `__memp_m_gis ( dbmp )) != 0) 71 ( t ); 75 i( h ! NULL ) { 76 hp = `R_ADDR ( f , c_mp -> hb ); 77 hp = &hp[ buck - gi * mp -> hb_bucks ]; 79 `MUTEX_LOCK ( v , hp -> mtx_hash ); 84 i( gids [ gi ] ! f -> id ) { 85 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 93 w_nbucks = mp -> nbucks ; 94 i( nbucks ! w_nbucks ) { 95 `MP_BUCKET ( mf_offt , pgno , w_nbucks , 96 w_buck ); 98 i( w_buck ! buck ) { 99 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 104 * h = hp ; 110 ( t ); 111 } } 114 $__memp_mge_bucks ( dbmp , w_nbucks , d_buck , w_buck ) 115 DB_MPOOL * dbmp ; 116 u_t32_t w_nbucks , d_buck , w_buck ; 118 BH * loc_bhp , * bhp , * cut_bhp , * w_bhp , * xt_bhp ; 119 DB_LSN vl ; 120 DB_MPOOL_HASH * w_hp , * d_hp ; 121 ENV * v ; 122 MPOOL * mp , * w_mp , * d_mp ; 123 MPOOLFILE * m ; 124 REGINFO * w_f , * d_f ; 125 u_t32_t buck , high_mask , w_gi , d_gi ; 126 t ; 128 v = dbmp ->env; 129 mp = dbmp -> gfo [0]. imy ; 130 w_bhp = NULL ; 131 t = 0; 133 `MP_MASK ( w_nbucks , high_mask ); 135 d_gi = `NREGION ( mp , d_buck ); 136 d_f = & dbmp -> gfo [ d_gi ]; 137 d_mp = d_f -> imy ; 138 d_hp = `R_ADDR ( d_f , d_mp -> hb ); 139 d_hp = &d_hp[ d_buck - d_gi * mp -> hb_bucks ]; 141 w_gi = `NREGION ( mp , w_buck ); 142 w_f = & dbmp -> gfo [ w_gi ]; 143 w_mp = w_f -> imy ; 144 w_hp = `R_ADDR ( w_f , w_mp -> hb ); 145 w_hp = &w_hp[ w_buck - w_gi * mp -> hb_bucks ]; 151 _d : 152 `MUTEX_LOCK ( v , w_hp -> mtx_hash ); 153 `SH_TAILQ_FOREACH ( bhp , & w_hp -> hash_buck , hq , __bh ) { 154 `MP_BUCKET ( bhp -> mf_offt , bhp-> pgno , mp -> nbucks , buck ); 156 i( buck ! w_buck ) { 162 `DB_ASSERT ( v , ! `F_ISSET ( bhp , BH_LOCKED | BH_DIRTY ) && 163 bhp -> f == 0); 164 i(( t = `__memp_bh ( dbmp , 165 w_f , w_hp , bhp , BH_FREE_FREEMEM )) != 0) { 166 `MUTEX_UNLOCK ( v , w_hp -> mtx_hash ); 167 ( t ); 174 _d ; 177 `MUTEX_UNLOCK ( v , w_hp -> mtx_hash ); 184 y : `MUTEX_LOCK ( v , d_hp -> mtx_hash ); 185 `SH_TAILQ_FOREACH ( bhp , & d_hp -> hash_buck , hq , __bh ) { 186 `MP_HASH_BUCKET ( `MP_HASH ( bhp -> mf_offt , bhp-> pgno ), 187 w_nbucks , high_mask , buck ); 189 i( buck = w_buck && 190 ( `F_ISSET ( bhp , BH_LOCKED || bhp-> f != 0)) { 191 `MUTEX_UNLOCK ( v , d_hp -> mtx_hash ); 192 `__os_yld ( v , 0, 0); 193 y ; 194 } i( buck = w_buck && `F_ISSET ( bhp , BH_FROZEN )) { 195 ++ bhp -> f ; 196 i( `BH_OBSOLETE ( bhp , d_hp -> d_ad , vl )) 197 loc_bhp = NULL ; 199 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 200 `MUTEX_UNLOCK ( v , d_hp -> mtx_hash ); 201 i(( t = `__memp_loc ( dbmp , 202 d_f , m , 0, NULL , & loc_bhp )) != 0) 203 ( t ); 204 `MUTEX_LOCK ( v , d_hp -> mtx_hash ); 206 i(( t = `__memp_bh_thaw ( dbmp , 207 d_f , d_hp , bhp , loc_bhp )) != 0) { 208 `MUTEX_UNLOCK ( v , d_hp -> mtx_hash ); 209 ( t ); 218 `MUTEX_UNLOCK ( v , d_hp -> mtx_hash ); 219 y ; 227 `SH_TAILQ_FOREACH ( bhp , & d_hp -> hash_buck , hq , __bh ) { 228 `MP_HASH_BUCKET ( `MP_HASH ( bhp -> mf_offt , bhp-> pgno ), 229 w_nbucks , high_mask , buck ); 230 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 237 i( buck ! w_buck || (! `F_ISSET ( bhp , BH_DIRTY ) && 238 `SH_CHAIN_SINGLETON ( bhp , vc && ! m -> no_backg_fe )) 241 cut_bhp = bhp , xt_bhp = NULL ; 242 cut_bhp ! NULL ; 243 cut_bhp = `SH_CHAIN_PREV (cut_bhp, vc , __bh ), 244 xt_bhp = loc_bhp ) { 245 i(( t = `__memp_loc ( dbmp , 246 w_f , m , 0, NULL , & loc_bhp )) != 0) 249 loc_bhp -> f = cut_bhp ->ref; 250 loc_bhp -> f_sync = cut_bhp ->ref_sync; 251 loc_bhp -> iܙy = cut_bhp ->priority; 252 loc_bhp -> pgno = cut_bhp ->pgno; 253 loc_bhp -> mf_offt = cut_bhp ->mf_offset; 254 loc_bhp -> ags = cut_bhp ->flags; 255 loc_bhp -> td_off = cut_bhp ->td_off; 263 `MUTEX_LOCK ( v , m -> mux ); 264 ++ m -> block_t ; 265 `MUTEX_UNLOCK ( v , m -> mux ); 267 i( loc_bhp -> td_off ! INVALID_ROFF && 268 ( t = `__txn_add_bufr ( v , 269 `R_ADDR (& v -> tx_hd -> gfo , 270 loc_bhp -> td_off ))) != 0) 273 `memy ( loc_bhp -> buf , bhp ->buf, m -> . _gesize ); 279 i( xt_bhp = NULL ) { 280 `SH_CHAIN_INIT ( loc_bhp , vc ); 281 w_bhp = loc_bhp ; 283 `SH_CHAIN_INSERT_BEFORE ( 284 xt_bhp , loc_bhp , vc , __bh ); 287 `MUTEX_LOCK ( v , w_hp -> mtx_hash ); 288 `SH_TAILQ_INSERT_TAIL (& w_hp -> hash_buck , w_bhp , hq ); 289 i( `F_ISSET ( w_bhp , BH_DIRTY )) 290 ++ w_hp -> hash_ge_dty ; 292 `MUTEX_UNLOCK ( v , w_hp -> mtx_hash ); 294 i( `F_ISSET ( bhp , BH_DIRTY )) { 295 `F_CLR ( bhp , BH_DIRTY ); 296 -- d_hp -> hash_ge_dty ; 300 i( t == 0) 301 mp -> nbucks = w_nbucks ; 302 `MUTEX_UNLOCK ( v , d_hp -> mtx_hash ); 304 ( t ); 305 } } 308 $__memp_add_buck ( dbmp ) 309 DB_MPOOL * dbmp ; 311 ENV * v ; 312 MPOOL * mp ; 313 u_t32_t high_mask , w_buck , d_buck ; 315 v = dbmp ->env; 316 mp = dbmp -> gfo [0]. imy ; 318 w_buck = mp -> nbucks ; 320 `DB_ASSERT ( v , `NREGION ( mp , w_buck =mp-> eg - 1); 321 `MP_MASK ( mp -> nbucks , high_mask ); 322 d_buck = w_buck & ( high_mask >> 1); 330 `DB_ASSERT ( v , `NREGION ( mp , d_buck !NREGION(mp, w_buck )); 332 ( `__memp_mge_bucks ( dbmp , mp -> nbucks + 1, 333 d_buck , w_buck )); 334 } } 337 $__memp_add_gi ( dbmp ) 338 DB_MPOOL * dbmp ; 340 ENV * v ; 341 MPOOL * mp ; 342 REGINFO * f ; 343 t ; 344 roff_t g_size ; 345 u_t i ; 346 u_t32_t * gids ; 348 v = dbmp ->env; 349 mp = dbmp -> gfo [0]. imy ; 351 g_size = dbmp -> gfo [0]. -> size ; 352 t = 0; 354 f = & dbmp -> gfo [ mp -> eg ]; 355 f -> v =nv; 356 f -> ty = REGION_TYPE_MPOOL ; 357 f -> id = INVALID_REGION_ID ; 358 f -> ags = REGION_CREATE_OK ; 359 i(( t = `__v_gi_ch ( v , f , g_size )) != 0) 360 ( t ); 361 i(( t = `__memp_ ( v , 362 dbmp , mp -> eg , mp-> hb_bucks , mp-> max_eg )) != 0) 363 ( t ); 364 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 365 gids [ mp -> eg ++] = f -> id ; 367 i = 0; i < mp -> hb_bucks ; i++) 368 i(( t = `__memp_add_buck ( dbmp )) != 0) 371 ( t ); 372 } } 375 $__memp_move_buck ( dbmp ) 376 DB_MPOOL * dbmp ; 378 ENV * v ; 379 MPOOL * mp ; 380 u_t32_t high_mask , w_buck , d_buck ; 382 v = dbmp ->env; 383 mp = dbmp -> gfo [0]. imy ; 385 d_buck = mp -> nbucks - 1; 388 `DB_ASSERT ( v , `NREGION ( mp , d_buck =mp-> eg - 1); 389 `MP_MASK ( mp -> nbucks - 1, high_mask ); 390 w_buck = d_buck & ( high_mask >> 1); 392 ( `__memp_mge_bucks ( dbmp , mp -> nbucks - 1, 393 d_buck , w_buck )); 394 } } 397 $__memp_move_gi ( dbmp ) 398 DB_MPOOL * dbmp ; 400 ENV * v ; 401 MPOOL * mp ; 402 REGINFO * f ; 403 t ; 404 u_t i ; 406 v = dbmp ->env; 407 mp = dbmp -> gfo [0]. imy ; 408 t = 0; 410 i( mp -> eg == 1) { 411 `__db_rx ( v , "cannotemoveheast cache"); 412 ( EINVAL ); 415 i = 0; i < mp -> hb_bucks ; i++) 416 i(( t = `__memp_move_buck ( dbmp )) != 0) 417 ( t ); 420 f = & dbmp -> gfo [-- mp -> eg ]; 421 ( `__v_gi_dach ( v , f , 1)); 422 } } 425 $__memp_m_gis ( dbmp ) 426 DB_MPOOL * dbmp ; 428 ENV * v ; 429 MPOOL * mp ; 430 t ; 431 u_t i ; 432 u_t32_t * gids ; 434 v = dbmp ->env; 435 mp = dbmp -> gfo [0]. imy ; 436 gids = `R_ADDR ( dbmp -> gfo , mp ->regids); 437 t = 0; 439 i = 1; i < mp -> eg ; ++i) { 440 i( dbmp -> gfo [ i ]. imy ! NULL && 441 dbmp -> gfo [ i ]. id = gids [i]) 444 i( dbmp -> gfo [ i ]. imy ! NULL ) 445 t = `__v_gi_dach ( v , & dbmp -> gfo [ i ], 0); 447 dbmp -> gfo [ i ]. v =nv; 448 dbmp -> gfo [ i ]. ty = REGION_TYPE_MPOOL ; 449 dbmp -> gfo [ i ]. id = gids [i]; 450 dbmp -> gfo [ i ]. ags = REGION_JOIN_OK ; 451 i(( t = 452 `__v_gi_ch ( v , & dbmp -> gfo [ i ], 0)) != 0) 453 ( t ); 454 dbmp -> gfo [ i ]. imy = `R_ADDR (&dbmp->reginfo[i], 455 dbmp -> gfo [ i ]. -> imy ); 458 ; i < mp -> max_eg ; i++) 459 i( dbmp -> gfo [ i ]. imy ! NULL && 460 ( t = `__v_gi_dach ( v , 461 & dbmp -> gfo [ i ], 0)) != 0) 464 ( t ); 465 } } 471 $__memp_size ( dbmp , gbys , bys ) 472 DB_MPOOL * dbmp ; 473 u_t32_t gbys , bys ; 475 ENV * v ; 476 MPOOL * mp ; 477 t ; 478 u_t32_t nche ; 479 roff_t g_size , tٮ_size ; 481 v = dbmp ->env; 482 mp = dbmp -> gfo [0]. imy ; 483 g_size = dbmp -> gfo [0]. -> size ; 484 tٮ_size = ( roff_t ) gbys * GIGABYTE + bys ; 485 nche = ( u_t32_t )(( tٮ_size + g_size / 2) /eg_size); 487 i( nche < 1) 488 nche = 1; 489 i( nche > mp -> max_eg ) { 490 `__db_rx ( v , 492 ( u_lg ) nche , (u_lg) mp -> max_eg ); 493 ( EINVAL ); 496 t = 0; 497 `MUTEX_LOCK ( v , mp -> mtx_size ); 498 mp -> eg ! nche ) 499 i(( t = ( mp -> eg < nche ? 500 `__memp_add_gi ( dbmp ) : 501 `__memp_move_gi ( dbmp ))) != 0) 503 `MUTEX_UNLOCK ( v , mp -> mtx_size ); 505 ( t ); 506 } } 512 $__memp_g_che_max ( dbv , max_gby , max_by ) 513 DB_ENV * dbv ; 514 u_t32_t * max_gby , * max_by ; 516 DB_MPOOL * dbmp ; 517 ENV * v ; 518 MPOOL * mp ; 519 roff_t g_size , max_size ; 521 v = dbv ->env; 523 `ENV_NOT_CONFIGURED ( v , 524 v -> mp_hd , "DB_ENV->g_mp_max_nche", DB_INIT_MPOOL ); 526 i( `MPOOL_ON ( v )) { 528 dbmp = v -> mp_hd ; 529 mp = dbmp -> gfo [0]. imy ; 530 g_size = dbmp -> gfo [0]. -> size ; 531 max_size = mp -> max_eg * g_size ; 532 * max_gby = ( u_t32_t )( max_size / GIGABYTE ); 533 * max_by = ( u_t32_t )( max_size % GIGABYTE ); 535 * max_gby = dbv -> mp_max_gbys ; 536 * max_by = dbv -> mp_max_bys ; 540 } } 546 $__memp_t_che_max ( dbv , max_gbys , max_bys ) 547 DB_ENV * dbv ; 548 u_t32_t max_gbys , max_bys ; 550 ENV * v ; 552 v = dbv ->env; 554 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_cache_max"); 555 dbv -> mp_max_gbys = max_gbys ; 556 dbv -> mp_max_bys = max_bys ; 559 } } @../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 (( ENV *, 20 DB_MPOOL *, cڡ *, BH *, roff_t *)); 21 __memp_t_l __P (( ENV *, u_t32_t )); 22 __memp_t_s __P (( ENV *, u_t32_t )); 23 __memp_t_hash __P (( ENV *, 24 DB_MPOOL *, REGINFO *, roff_t *, u_t32_t )); 25 __memp_ __P (( ENV *, 26 DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )); 27 __memp__wa 28 __P (( ENV *, REGINFO *, MPOOL *, DB_MPOOL_STAT *, u_t32_t )); 29 __memp_fe_s __P (( ENV *, 30 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 31 __memp_cou_fes __P (( ENV *, 32 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 33 __memp_g_fes __P (( ENV *, 34 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 35 __memp_t_fes __P (( 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 ENV * v ; 54 t ; 56 v = dbv ->env; 58 `ENV_REQUIRES_CONFIG ( v , 59 v -> mp_hd , "DB_ENV->memp_", DB_INIT_MPOOL ); 61 i(( t = `__db_fchk ( v , 62 "DB_ENV->memp_", ags , DB_STAT_CLEAR )) != 0) 63 ( t ); 65 `ENV_ENTER ( v , ); 66 `REPLICATION_WRAP ( v , ( `__memp_ nv, gp , fp , ags )), 0, t ); 67 `ENV_LEAVE ( v , ); 68 ( t ); 69 } } 76 $__memp_ ( v , gp , fp , ags ) 77 ENV * v ; 78 DB_MPOOL_STAT ** gp ; 79 DB_MPOOL_FSTAT *** fp ; 80 u_t32_t ags ; 82 DB_MPOOL * dbmp ; 83 DB_MPOOL_FSTAT ** tf ; 84 DB_MPOOL_STAT * ; 85 MPOOL * c_mp , * mp ; 86 size_t n ; 87 u_t32_t i , _bys , _gbys , _hash_bucks , _ges ; 88 u_t32_t tmp_wa , tmp_nowa ; 89 t ; 91 dbmp = v -> mp_hd ; 92 mp = dbmp -> gfo [0]. imy ; 95 i( gp ! NULL ) { 96 * gp = NULL ; 98 i(( t = `__os_umloc ( v , (** gp ), gspp)) != 0) 99 ( t ); 100 `memt (* gp , 0, (**gspp)); 101 = * gp ; 108 -> _gbys = mp -> .st_gbytes; 109 -> _bys = mp -> .st_bytes; 110 -> _nche = mp -> eg ; 111 -> _max_nche = mp -> max_eg ; 112 -> _gsize = dbmp -> gfo [0]. -> size ; 114 `MPOOL_SYSTEM_LOCK ( v ); 115 -> _mmsize = mp -> mp_mmsize ; 116 -> _maxݒfd = mp -> mp_maxݒfd ; 117 -> _maxwre = mp -> mp_maxwre ; 118 -> _maxwre_p = mp -> mp_maxwre_p ; 119 `MPOOL_SYSTEM_UNLOCK ( v ); 122 i = 0; i < mp -> eg ; ++i) { 123 c_mp = dbmp -> gfo [ i ]. imy ; 125 -> _m + c_mp -> .st_map; 126 -> _che_h + c_mp -> .st_cache_hit; 127 -> _che_miss + c_mp -> .st_cache_miss; 128 -> _ge_ + c_mp -> .st_page_create; 129 -> _ge_ + c_mp -> .st_page_in; 130 -> _ge_out + c_mp -> .st_page_out; 131 -> _ro_evi + c_mp -> .st_ro_evict; 132 -> _rw_evi + c_mp -> .st_rw_evict; 133 -> _ge_ick + c_mp -> .st_page_trickle; 134 -> _ges + c_mp -> .st_pages; 139 `__memp__hash ( 140 & dbmp -> gfo [ i ], c_mp , & -> _ge_dty ); 141 -> _ge_n = sp-> _ges - sp-> _ge_dty ; 142 -> _hash_bucks + c_mp -> .st_hash_buckets; 143 -> _hash_ches + c_mp -> .st_hash_searches; 144 -> _hash_lge + c_mp -> .st_hash_longest; 145 -> _hash_examed + c_mp -> .st_hash_examined; 150 `__memp__wa ( 151 v , & dbmp -> gfo [ i ], c_mp , , ags ); 152 `__mux_t_wa_fo ( v , 153 c_mp -> mtx_gi , & tmp_wa , & tmp_nowa ); 154 -> _gi_nowa + tmp_nowa ; 155 -> _gi_wa + tmp_wa ; 156 -> _loc + c_mp -> .st_alloc; 157 -> _loc_bucks + c_mp -> .st_alloc_buckets; 158 i( -> _loc_max_bucks < 159 c_mp -> . _loc_max_bucks ) 160 -> _loc_max_bucks = 161 c_mp -> . _loc_max_bucks ; 162 -> _loc_ges + c_mp -> .st_alloc_pages; 163 i( -> _loc_max_ges < 164 c_mp -> . _loc_max_ges ) 165 -> _loc_max_ges = 166 c_mp -> . _loc_max_ges ; 168 i( `LF_ISSET ( DB_STAT_CLEAR )) { 169 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 170 `__mux_r ( v , c_mp -> mtx_gi ); 172 `MPOOL_SYSTEM_LOCK ( v ); 173 _bys = c_mp -> .st_bytes; 174 _gbys = c_mp -> .st_gbytes; 175 _hash_bucks = c_mp -> .st_hash_buckets; 176 _ges = c_mp -> .st_pages; 177 `memt (& c_mp -> , 0, (c_mp->stat)); 178 c_mp -> . _bys = st_bytes; 179 c_mp -> . _gbys = st_gbytes; 180 c_mp -> . _hash_bucks = st_hash_buckets; 181 c_mp -> . _ges = st_pages; 182 `MPOOL_SYSTEM_UNLOCK ( v ); 194 i(( t = `__memp_wk_fes ( v , mp , __memp_fe_s , 195 , NULL , fp =NULL ? `LF_ISSET ( DB_STAT_CLEAR ) : 0)) != 0) 196 ( t ); 200 i( fp ! NULL ) { 201 * fp = NULL ; 204 i = 0; 205 n = 0; 206 i(( t = `__memp_wk_fes ( v , 207 mp , __memp_cou_fes , & n , & i , ags )) != 0) 208 ( t ); 210 i( i == 0) 212 n +( DB_MPOOL_FSTAT *); 215 i(( t = `__os_umloc ( v , n , fp )) != 0) 216 ( t ); 218 tf = * fp ; 219 * tf = NULL ; 225 i(( t = `__memp_wk_fes ( v , 226 mp , __memp_g_fes , & tf , & i , ags )) != 0) 227 ( t ); 229 *++ tf = NULL ; 233 } } 236 $__memp_fe_s ( v , m , gp , coup , ags ) 237 ENV * v ; 238 MPOOLFILE * m ; 239 * gp ; 240 u_t32_t * coup ; 241 u_t32_t ags ; 243 DB_MPOOL_STAT * ; 244 u_t32_t gesize ; 246 `COMPQUIET ( v , NULL ); 247 `COMPQUIET ( coup , NULL ); 249 = gp ; 251 -> _m + m -> .st_map; 252 -> _che_h + m -> .st_cache_hit; 253 -> _che_miss + m -> .st_cache_miss; 254 -> _ge_ + m -> .st_page_create; 255 -> _ge_ + m -> .st_page_in; 256 -> _ge_out + m -> .st_page_out; 257 i( `LF_ISSET ( DB_STAT_CLEAR )) { 258 gesize = m -> . _gesize ; 259 `memt (& m -> , 0, (mfp->stat)); 260 m -> . _gesize = gesize ; 263 } } 266 $__memp_cou_fes ( v , m , gp , coup , ags ) 267 ENV * v ; 268 MPOOLFILE * m ; 269 * gp ; 270 u_t32_t * coup ; 271 u_t32_t ags ; 273 DB_MPOOL * dbmp ; 274 size_t n ; 276 `COMPQUIET ( ags , 0); 277 dbmp = v -> mp_hd ; 278 n = *( size_t *) gp ; 280 (* coup )++; 281 n +( DB_MPOOL_FSTAT *) + 282 ( DB_MPOOL_FSTAT + ` ( `__memp_s ( dbmp , m )) + 1; 284 *( size_t *) gp = n ; 286 } } 299 $__memp_g_fes ( v , m , gp , coup , ags ) 300 ENV * v ; 301 MPOOLFILE * m ; 302 * gp ; 303 u_t32_t * coup ; 304 u_t32_t ags ; 306 DB_MPOOL * dbmp ; 307 DB_MPOOL_FSTAT ** tf , * tru ; 308 * me , * ame ; 309 size_t ƒ ; 310 u_t32_t gesize ; 312 i(* coup == 0) 315 dbmp = v -> mp_hd ; 316 tf = *( DB_MPOOL_FSTAT ***) gp ; 318 i(* tf = NULL ) { 320 tru = ( DB_MPOOL_FSTAT *)( tf + * coup + 1); 321 ame = (*)( tru + * coup ); 322 * tf = tru ; 324 tru = * tf + 1; 325 ame = (* tf )-> fe_me + ` ((*tfsp)->file_name) + 1; 326 *++ tf = tru ; 329 me = `__memp_s ( dbmp , m ); 330 ƒ = ` ( me ) + 1; 331 `memy ( ame , me , ƒ ); 332 * tru = m -> ; 333 tru -> fe_me = ame ; 335 *( DB_MPOOL_FSTAT ***) gp = tf ; 336 (* coup )--; 338 i( `LF_ISSET ( DB_STAT_CLEAR )) { 339 gesize = m -> . _gesize ; 340 `memt (& m -> , 0, (mfp->stat)); 341 m -> . _gesize = gesize ; 344 } } 353 $__memp__t_ ( dbv , ags ) 354 DB_ENV * dbv ; 355 u_t32_t ags ; 357 DB_THREAD_INFO * ; 358 ENV * v ; 359 t ; 361 v = dbv ->env; 363 `ENV_REQUIRES_CONFIG ( v , 364 v -> mp_hd , "DB_ENV->memp__t", DB_INIT_MPOOL ); 366 #DB_STAT_MEMP_FLAGS \ 367 ( DB_STAT_ALL | DB_STAT_CLEAR | DB_STAT_MEMP_HASH ) ) 368 i(( t = `__db_fchk ( v , 369 "DB_ENV->memp__t", ags , DB_STAT_MEMP_FLAGS )) != 0) 370 ( t ); 372 `ENV_ENTER ( v , ); 373 `REPLICATION_WRAP ( v , ( `__memp__t nv, ags )), 0, t ); 374 `ENV_LEAVE ( v , ); 375 ( t ); 376 } } 378 #FMAP_ENTRIES 200 ) 387 $__memp__t ( v , ags ) 388 ENV * v ; 389 u_t32_t ags ; 391 u_t32_t ig_ags ; 392 t ; 394 ig_ags = ags ; 395 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 396 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 397 t = `__memp_t_s ( v , 398 `LF_ISSET ( DB_STAT_ALL ? ags : ig_ags ); 399 i( ags =0 || t != 0) 400 ( t ); 403 i( `LF_ISSET ( DB_STAT_ALL | DB_STAT_MEMP_HASH ) && 404 ( t = `__memp_t_l ( v , ig_ags )) != 0) 405 ( t ); 408 } } 415 $__memp_t_s ( v , ags ) 416 ENV * v ; 417 u_t32_t ags ; 419 DB_MPOOL_FSTAT ** f , ** tf ; 420 DB_MPOOL_STAT * g ; 421 t ; 423 i(( t = `__memp_ ( v , & g , & f , ags )) != 0) 424 ( t ); 426 i( `LF_ISSET ( DB_STAT_ALL )) 427 `__db_msg ( v , "Default cacheegion information:"); 428 `__db_dlbys ( v , "Total cache size", 429 ( u_lg ) g -> _gbys , (u_lg)0, (u_lg)g-> _bys ); 430 `__db_dl ( v , "Numb oches", ( u_lg ) g -> _nche ); 431 `__db_dl ( v , "Maximumumb oches", ( u_lg ) g -> _max_nche ); 432 `__db_dlbys ( v , "Pool individual cache size", 433 ( u_lg )0, (u_lg)0, (u_lg) g -> _gsize ); 434 `__db_dlbys ( v , "Maximum memory-mapped file size", 435 ( u_lg )0, (u_lg)0, (u_lg) g -> _mmsize ); 436 `STAT_LONG ("Maximum ofdests", g -> _maxݒfd ); 437 `STAT_LONG ("Maximum sequtbufwres", g -> _maxwre ); 438 `STAT_LONG ("Sleepfter writing maximum sequential buffers", 439 g -> _maxwre_p ); 440 `__db_dl ( v , 442 ( u_lg ) g -> _m ); 443 `__db_dl_p ( v , "Requestedages found inhe cache", 444 ( u_lg ) g -> _che_h , `DB_PCT ( 445 g -> _che_h , g->_che_h + g-> _che_miss ), NULL ); 446 `__db_dl ( v , "Requestedagesot found inhe cache", 447 ( u_lg ) g -> _che_miss ); 448 `__db_dl ( v , 449 "Paged ithche", ( u_lg ) g -> _ge_ ); 450 `__db_dl ( v , "Pagead ithche", ( u_lg ) g -> _ge_ ); 451 `__db_dl ( v , "Pages written fromhe cacheohe backing file", 452 ( u_lg ) g -> _ge_out ); 453 `__db_dl ( v , "Cleanages forced fromhe cache", 454 ( u_lg ) g -> _ro_evi ); 455 `__db_dl ( v , "Dirtyages forced fromhe cache", 456 ( u_lg ) g -> _rw_evi ); 457 `__db_dl ( v , "Dirtyages written byrickle-synchread", 458 ( u_lg ) g -> _ge_ick ); 459 `__db_dl ( v , "Currentotalage count", 460 ( u_lg ) g -> _ges ); 461 `__db_dl ( v , "Current cleanage count", 462 ( u_lg ) g -> _ge_n ); 463 `__db_dl ( v , "Current dirtyage count", 464 ( u_lg ) g -> _ge_dty ); 465 `__db_dl ( v , "Number of hash buckets used forageocation", 466 ( u_lg ) g -> _hash_bucks ); 467 `__db_dl ( v , 469 ( u_lg ) g -> _hash_ches ); 470 `__db_dl ( v , "Theongest hash chain searched forage", 471 ( u_lg ) g -> _hash_lge ); 472 `__db_dl ( v , 474 ( u_lg ) g -> _hash_examed ); 475 `__db_dl_p ( v , 477 ( u_lg ) g -> _hash_wa , `DB_PCT ( 478 g -> _hash_wa , g->_hash_wa + g-> _hash_nowa ), NULL ); 479 `__db_dl_p ( v , 481 ( u_lg ) g -> _hash_max_wa , `DB_PCT (gsp->st_hash_max_wait, 482 g -> _hash_max_wa + g-> _hash_max_nowa ), NULL ); 483 `__db_dl_p ( v , 485 ( u_lg ) g -> _gi_wa , `DB_PCT (gsp->st_region_wait, 486 g -> _gi_wa + g-> _gi_nowa ), NULL ); 487 `__db_dl ( v , "Theumber of buffers frozen", 488 ( u_lg ) g -> _mvcc_oz ); 489 `__db_dl ( v , "Theumber of buffershawed", 490 ( u_lg ) g -> _mvcc_thawed ); 491 `__db_dl ( v , "Theumber of frozen buffers freed", 492 ( u_lg ) g -> _mvcc_d ); 493 `__db_dl ( v , "Thnumb oglotis", ( u_lg ) g -> _loc ); 494 `__db_dl ( v , 496 ( u_lg ) g -> _loc_bucks ); 497 `__db_dl ( v , 499 ( u_lg ) g -> _loc_max_bucks ); 500 `__db_dl ( v , "Theumber ofagesxamined duringllocations", 501 ( u_lg ) g -> _loc_ges ); 502 `__db_dl ( v , "The maxumber ofagesxamined fornllocation", 503 ( u_lg ) g -> _loc_max_ges ); 504 `__db_dl ( v , "Thadwaed ogI/O", ( u_lg ) g -> _io_wa ); 506 tf = f ; f ! NULL && *tfsp != NULL; ++tfsp) { 507 i( `LF_ISSET ( DB_STAT_ALL )) 508 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 509 `__db_msg ( v , "Po Fe: %s", (* tf )-> fe_me ); 510 `__db_dl ( v , "Pagsize", ( u_lg )(* tf )-> _gesize ); 511 `__db_dl ( v , 513 ( u_lg )(* tf )-> _m ); 514 `__db_dl_p ( v , "Requestedages found inhe cache", 515 ( u_lg )(* tf )-> _che_h , `DB_PCT ((*tfsp)->st_cache_hit, 516 (* tf )-> _che_h + (*tf)-> _che_miss ), NULL ); 517 `__db_dl ( v , "Requestedagesot found inhe cache", 518 ( u_lg )(* tf )-> _che_miss ); 519 `__db_dl ( v , "Pages created inhe cache", 520 ( u_lg )(* tf )-> _ge_ ); 521 `__db_dl ( v , "Pagesead intohe cache", 522 ( u_lg )(* tf )-> _ge_ ); 523 `__db_dl ( v , 525 ( u_lg )(* tf )-> _ge_out ); 528 `__os_u ( v , f ); 529 `__os_u ( v , g ); 531 } } 538 $__memp_t_l ( v , ags ) 539 ENV * v ; 540 u_t32_t ags ; 542 cڡ FN c [] = { 543 { DB_MPOOL_NOFILE , "DB_MPOOL_NOFILE" }, 544 { DB_MPOOL_UNLINK , "DB_MPOOL_UNLINK" }, 545 { 0, NULL } 547 DB_MPOOL * dbmp ; 548 DB_MPOOLFILE * dbm ; 549 MPOOL * mp ; 550 roff_t fm [ FMAP_ENTRIES + 1]; 551 u_t32_t i , t ; 552 t ; 554 dbmp = v -> mp_hd ; 555 mp = dbmp -> gfo [0]. imy ; 556 t = 0; 558 `MPOOL_SYSTEM_LOCK ( v ); 560 `__db_t_gfo ( v , dbmp -> gfo , "Mpo", ags ); 561 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 563 `__db_msg ( v , "MPOOL structure:"); 564 `__mux_t_debug_sg ( 565 v , "MPOOLegi mux", mp -> mtx_gi , ags ); 566 `STAT_LSN ("Maximum checkpoLSN", & mp -> l ); 567 `STAT_ULONG ("Hashab˃rs", mp -> hb_bucks ); 568 `STAT_ULONG ("Hashabˆa-checked", mp -> ϡ_checked ); 569 `STAT_ULONG ("Hashab LRU cou", mp -> u_cou ); 570 `STAT_ULONG ("Pucou", mp -> put_cou ); 572 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 573 `__db_msg ( v , "DB_MPOOL handle information:"); 574 `__mux_t_debug_sg ( 575 v , "DB_MPOOL hd mux", dbmp -> mux , ags ); 576 `STAT_ULONG ("Undlyg cachgis", mp -> eg ); 578 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 579 `__db_msg ( v , "DB_MPOOLFILE structures:"); 580 t = 0, dbm = `TAILQ_FIRST (& dbmp -> dbmfq ); 581 dbm ! NULL ; dbm = `TAILQ_NEXT (dbm, q ), ++ t ) { 582 `__db_msg ( v , "File #%lu: %s:er-process, %s", 583 ( u_lg ) t + 1, `__memp_ ( dbm ), 584 `F_ISSET ( dbm , MP_READONLY ) ? "readonly" : "read/write"); 585 `STAT_ULONG ("Ren cou", dbm -> f ); 586 `STAT_ULONG ("Pd blocken cou", dbm -> f ); 587 `STAT_ULONG ("Cˬgth", dbm -> r_n ); 588 `__db_t_feid ( v , dbm -> feid , "\tID"); 589 `STAT_ULONG ("Fty", dbm -> y ); 590 `STAT_ULONG ("LSN offt", dbm -> l_offt ); 591 `STAT_ULONG ("Max gbys", dbm -> gbys ); 592 `STAT_ULONG ("Max bys", dbm -> bys ); 593 `STAT_ULONG ("Cachiܙy", dbm -> iܙy ); 594 `STAT_POINTER ("mmddss", dbm -> addr ); 595 `STAT_ULONG ("mmgth", dbm -> n ); 596 `__db_ags ( v , NULL , dbm -> ags , c , NULL, "\tFlags"); 597 `__db_t_fh ( v , "Fhd", dbm -> fhp , ags ); 600 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 601 `__db_msg ( v , "MPOOLFILE structures:"); 602 t = 0; 603 i(( t = `__memp_wk_fes ( v , 604 mp , __memp_t_fes , fm , & t , ags )) != 0) 605 ( t ); 606 `MPOOL_SYSTEM_UNLOCK ( v ); 608 i( t < FMAP_ENTRIES ) 609 fm [ t ] = INVALID_ROFF ; 611 fm [ FMAP_ENTRIES ] = INVALID_ROFF ; 614 i = 0; i < mp -> eg ; ++i) { 615 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 616 `__db_msg ( v , "Cach#%d:", i + 1); 617 i(( t = `__memp_t_hash ( 618 v , dbmp , &dbmp-> gfo [ i ], fm , ags )) != 0) 622 ( t ); 623 } } 626 $__memp_t_fes ( v , m , gp , coup , ags ) 627 ENV * v ; 628 MPOOLFILE * m ; 629 * gp ; 630 u_t32_t * coup ; 631 u_t32_t ags ; 633 roff_t * fm ; 634 DB_MPOOL * dbmp ; 635 u_t32_t m_ags ; 636 cڡ FN [] = { 637 { MP_CAN_MMAP , "MP_CAN_MMAP" }, 638 { MP_DIRECT , "MP_DIRECT" }, 639 { MP_EXTENT , "MP_EXTENT" }, 640 { MP_FAKE_DEADFILE , "deadfile" }, 641 { MP_FAKE_FILEWRITTEN , "file written" }, 642 { MP_FAKE_NB , "no backing file" }, 643 { MP_FAKE_UOC , "unlink on close" }, 644 { MP_NOT_DURABLE , "not durable" }, 645 { MP_TEMP , "MP_TEMP" }, 646 { 0, NULL } 649 dbmp = v -> mp_hd ; 650 fm = gp ; 652 `__db_msg ( v , "F#%d: %s", * coup + 1, `__memp_s ( dbmp , m )); 653 `__mux_t_debug_sg ( v , "Mux", m -> mux , ags ); 655 `MUTEX_LOCK ( v , m -> mux ); 656 `STAT_ULONG ("Ren cou", m -> mpf_t ); 657 `STAT_ULONG ("Block cou", m -> block_t ); 658 `STAT_ULONG ("Laagnumb", m -> ϡ_pgno ); 659 `STAT_ULONG ("Origaagnumb", m -> ig_ϡ_pgno ); 660 `STAT_ULONG ("Maximumagnumb", m -> maxpgno ); 661 `STAT_LONG ("Ty", m -> y ); 662 `STAT_LONG ("Priܙy", m -> iܙy ); 663 `STAT_LONG ("Page'LSN offt", m -> l_off ); 664 `STAT_LONG ("Page'ngth", m -> r_n ); 666 `__db_t_feid ( v , 667 `R_ADDR ( dbmp -> gfo , m -> feid_off ), "\tID"); 669 m_ags = 0; 670 i( m -> ddfe ) 671 `FLD_SET ( m_ags , MP_FAKE_DEADFILE ); 672 i( m -> fe_wrn ) 673 `FLD_SET ( m_ags , MP_FAKE_FILEWRITTEN ); 674 i( m -> no_backg_fe ) 675 `FLD_SET ( m_ags , MP_FAKE_NB ); 676 i( m -> uƚk__o ) 677 `FLD_SET ( m_ags , MP_FAKE_UOC ); 678 `__db_ags ( v , NULL , m_ags , , NULL, "\tFlags"); 680 i(* coup < FMAP_ENTRIES ) 681 fm [* coup ] = `R_OFFSET ( dbmp -> gfo , m ); 682 (* coup )++; 683 `MUTEX_UNLOCK ( v , m -> mux ); 685 } } 692 $__memp_t_hash ( v , dbmp , gfo , fm , ags ) 693 ENV * v ; 694 DB_MPOOL * dbmp ; 695 REGINFO * gfo ; 696 roff_t * fm ; 697 u_t32_t ags ; 699 BH * bhp , * vbhp ; 700 DB_MPOOL_HASH * hp ; 701 DB_MSGBUF mb ; 702 MPOOL * c_mp ; 703 u_t32_t buck ; 705 c_mp = gfo -> imy ; 706 `DB_MSGBUF_INIT (& mb ); 709 `__db_msg ( v , 710 "BH hashab (%lu hash sls)", ( u_lg ) c_mp -> hb_bucks ); 711 `__db_msg ( v , "bucket #:riority, I/O wait, [mutex]"); 712 `__db_msg ( v , "\tpageno, file,ef, LSN,ddress,riority, flags"); 714 hp = `R_ADDR ( gfo , c_mp -> hb ), 715 buck = 0; buck < c_mp -> hb_bucks ; ++ hp , ++bucket) { 716 `MUTEX_LOCK ( v , hp -> mtx_hash ); 717 i(( bhp = `SH_TAILQ_FIRST (& hp -> hash_buck , __bh )! NULL ) { 718 `__db_msgadd ( v , & mb , 720 ( u_lg ) buck , (u_lg) hp -> hash_io_wa , 721 ( u_lg ) hp -> hash_ge_dty ); 722 i( hp -> hash_oz != 0) 723 `__db_msgadd ( v , & mb , "(MVCC %lu/%lu/%lu) ", 724 ( u_lg ) hp -> hash_oz , 725 ( u_lg ) hp -> hash_thawed , 726 ( u_lg ) hp -> hash_oz_d ); 727 `__mux_t_debug_s ( 728 v , & mb , hp -> mtx_hash , ags ); 729 `DB_MSGBUF_FLUSH ( v , & mb ); 731 ; bhp ! NULL ; bh `SH_TAILQ_NEXT (bhp, hq , __bh )) { 732 `__memp_t_bh ( v , dbmp , NULL , bhp , fm ); 735 vbhp = `SH_CHAIN_PREV ( bhp , vc , __bh ); 736 vbhp ! NULL ; 737 vbhp = `SH_CHAIN_PREV (vbhp, vc , __bh )) { 738 `__memp_t_bh ( v , dbmp , 739 "ext:\t", vbhp , fm ); 742 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 746 } } 753 $__memp_t_bh ( v , dbmp , efix , bhp , fm ) 754 ENV * v ; 755 DB_MPOOL * dbmp ; 756 cڡ * efix ; 757 BH * bhp ; 758 roff_t * fm ; 760 cڡ FN [] = { 761 { BH_CALLPGIN , "callpgin" }, 762 { BH_DIRTY , "dirty" }, 763 { BH_DIRTY_CREATE , "created" }, 764 { BH_DISCARD , "discard" }, 765 { BH_FREED , "freed" }, 766 { BH_FROZEN , "frozen" }, 767 { BH_LOCKED , "locked" }, 768 { BH_TRASH , "trash" }, 769 { 0, NULL } 771 DB_MSGBUF mb ; 772 i ; 774 `DB_MSGBUF_INIT (& mb ); 776 i( efix ! NULL ) 777 `__db_msgadd ( v , & mb , "%s", efix ); 779 `__db_msgadd ( v , & mb , "\t"); 781 i = 0; i < FMAP_ENTRIES ; ++i) 782 i( fm [ i ] = INVALID_ROFF || fm[i] = bhp -> mf_offt ) 785 i( fm [ i ] = INVALID_ROFF ) 786 `__db_msgadd ( v , & mb , "%5lu, %lu, ", 787 ( u_lg ) bhp -> pgno , (u_lg)bhp-> mf_offt ); 789 `__db_msgadd ( 790 v , & mb , "%5lu, #%d, ", ( u_lg ) bhp -> pgno , i + 1); 792 `__db_msgadd ( v , & mb , "%2lu%s, %lu/%lu", ( u_lg ) bhp -> f , 793 bhp -> f_sync == 0 ? "" : " (sync-lock)", 794 `F_ISSET ( bhp , BH_FROZEN ? 0 : ( u_lg ) `LSN (bhp-> buf ). fe , 795 `F_ISSET ( bhp , BH_FROZEN ? 0 : ( u_lg ) `LSN (bhp-> buf ). offt ); 796 i( bhp -> td_off ! INVALID_ROFF ) 797 `__db_msgadd ( v , & mb , " (@%lu/%lu)", 798 ( u_lg ) `VISIBLE_LSN ( v , bhp )-> fe , 799 ( u_lg ) `VISIBLE_LSN ( v , bhp )-> offt ); 800 `__db_msgadd ( v , & mb , ", %#08lx, %lu", 801 ( u_lg ) `R_OFFSET ( dbmp -> gfo , bhp ), (u_lg)bhp-> iܙy ); 802 `__db_ags ( v , & mb , bhp -> ags , , " (", ")"); 803 `DB_MSGBUF_FLUSH ( v , & mb ); 804 } } 811 $__memp__wa ( v , gfo , mp , m , ags ) 812 ENV * v ; 813 REGINFO * gfo ; 814 MPOOL * mp ; 815 DB_MPOOL_STAT * m ; 816 u_t32_t ags ; 818 DB_MPOOL_HASH * hp ; 819 u_t32_t i , tmp_nowa , tmp_wa ; 821 m -> _hash_max_wa = 0; 822 hp = `R_ADDR ( gfo , mp -> hb ); 823 i = 0; i < mp -> hb_bucks ; i++, hp ++) { 824 `__mux_t_wa_fo ( 825 v , hp -> mtx_hash , & tmp_wa , & tmp_nowa ); 826 m -> _hash_nowa + tmp_nowa ; 827 m -> _hash_wa + tmp_wa ; 828 i( tmp_wa > m -> _hash_max_wa ) { 829 m -> _hash_max_wa = tmp_wa ; 830 m -> _hash_max_nowa = tmp_nowa ; 832 i( `LF_ISSET ( DB_STAT_CLEAR | 833 DB_STAT_SUBSYSTEM = DB_STAT_CLEAR ) 834 `__mux_r ( v , hp -> mtx_hash ); 836 m -> _io_wa + hp -> hash_io_wa ; 837 m -> _mvcc_oz + hp -> hash_oz ; 838 m -> _mvcc_thawed + hp -> hash_thawed ; 839 m -> _mvcc_d + hp -> hash_oz_d ; 840 i( `LF_ISSET ( DB_STAT_CLEAR )) { 841 hp -> hash_io_wa = 0; 842 hp -> hash_oz = 0; 843 hp -> hash_thawed = 0; 844 hp -> hash_oz_d = 0; 847 } } 852 $__memp__ ( dbv , gp , fp , ags ) 853 DB_ENV * dbv ; 854 DB_MPOOL_STAT ** gp ; 855 DB_MPOOL_FSTAT *** fp ; 856 u_t32_t ags ; 858 `COMPQUIET ( gp , NULL ); 859 `COMPQUIET ( fp , NULL ); 860 `COMPQUIET ( ags , 0); 862 ( `__db__n_but ( dbv -> v )); 863 } } 866 $__memp__t_ ( dbv , ags ) 867 DB_ENV * dbv ; 868 u_t32_t ags ; 870 `COMPQUIET ( ags , 0); 872 ( `__db__n_but ( dbv -> v )); 873 } } 883 $__memp__hash ( gfo , mp , dtyp ) 884 REGINFO * gfo ; 885 MPOOL * mp ; 886 u_t32_t * dtyp ; 888 DB_MPOOL_HASH * hp ; 889 u_t32_t dty , i ; 891 hp = `R_ADDR ( gfo , mp -> hb ); 892 i = 0, dty = 0; i < mp -> hb_bucks ; i++, hp ++) 893 dty + hp -> hash_ge_dty ; 894 * dtyp = dty ; 895 } } @../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 (( ENV *, )); 26 __memp_sync_fes __P (( ENV *)); 27 __memp_sync_fe __P (( ENV *, 28 MPOOLFILE *, *, u_t32_t *, u_int32_t)); 37 $__memp_wk_fes ( v , mp , func , g , coup , ags ) 38 ENV * v ; 39 MPOOL * mp ; 40 (* func ) `__P (( 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 = v -> 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 ( v , hp -> mtx_hash ); 56 `SH_TAILQ_FOREACH ( m , & hp -> hash_buck , q , __mpofe ) { 57 i(( t_t = `func ( v , 58 m , g , coup , ags )!0 && t == 0) 59 t = t_t ; 60 i( t !0 && ! `LF_ISSET ( DB_STAT_MEMP_NOERROR )) 63 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 64 i( t !0 && ! `LF_ISSET ( DB_STAT_MEMP_NOERROR )) 67 ( t ); 68 } } 77 $__memp_sync_ ( dbv , lp ) 78 DB_ENV * dbv ; 79 DB_LSN * lp ; 81 DB_THREAD_INFO * ; 82 ENV * v ; 83 t ; 85 v = dbv ->env; 87 `ENV_REQUIRES_CONFIG ( v , 88 v -> mp_hd , "memp_sync", DB_INIT_MPOOL ); 94 i( lp ! NULL ) 95 `ENV_REQUIRES_CONFIG ( v , 96 v -> lg_hd , "memp_sync", DB_INIT_LOG ); 98 `ENV_ENTER ( v , ); 99 `REPLICATION_WRAP ( v , ( `__memp_sync nv, DB_SYNC_CACHE , lp )), 0, t ); 100 `ENV_LEAVE ( v , ); 101 ( t ); 102 } } 111 $__memp_sync ( v , ags , lp ) 112 ENV * v ; 113 u_t32_t ags ; 114 DB_LSN * lp ; 116 DB_MPOOL * dbmp ; 117 MPOOL * mp ; 118 ued , t ; 120 dbmp = v -> mp_hd ; 121 mp = dbmp -> gfo [0]. imy ; 124 i( lp ! NULL ) { 125 `MPOOL_SYSTEM_LOCK ( v ); 126 i( `LOG_COMPARE ( lp , & mp -> l ) <= 0) { 127 * lp = mp -> l ; 129 `MPOOL_SYSTEM_UNLOCK ( v ); 132 `MPOOL_SYSTEM_UNLOCK ( v ); 135 i(( t = 136 `__memp_sync_t ( v , NULL , 0, ags , NULL, & ued )) != 0) 137 ( t ); 139 i(! ued && lp ! NULL ) { 140 `MPOOL_SYSTEM_LOCK ( v ); 141 i( `LOG_COMPARE ( lp , & mp -> l ) > 0) 142 mp -> l = * lp ; 143 `MPOOL_SYSTEM_UNLOCK ( v ); 147 } } 156 $__memp_fsync_ ( dbm ) 157 DB_MPOOLFILE * dbm ; 159 DB_THREAD_INFO * ; 160 ENV * v ; 161 t ; 163 v = dbm ->env; 165 `MPF_ILLEGAL_BEFORE_OPEN ( dbm , "DB_MPOOLFILE->sync"); 167 `ENV_ENTER ( v , ); 168 `REPLICATION_WRAP ( v , ( `__memp_fsync ( dbm )), 0, t ); 169 `ENV_LEAVE ( v , ); 170 ( t ); 171 } } 180 $__memp_fsync ( dbm ) 181 DB_MPOOLFILE * dbm ; 183 MPOOLFILE * m ; 185 m = dbm ->mfp; 193 i( `F_ISSET ( dbm , MP_READONLY )) 196 i( `F_ISSET ( dbm -> m , MP_TEMP || dbm->m-> no_backg_fe ) 199 i( m -> fe_wrn == 0) 202 ( `__memp_sync_t ( 203 dbm -> v , dbm, 0, DB_SYNC_FILE , NULL , NULL)); 204 } } 213 $__mp_xxx_fh ( dbm , fhp ) 214 DB_MPOOLFILE * dbm ; 215 DB_FH ** fhp ; 217 t ; 233 i((* fhp = dbm ->fhp! NULL ) 236 i(( t = `__memp_sync_t ( 237 dbm -> v , dbm, 0, DB_SYNC_FILE , NULL , NULL)) == 0) 238 * fhp = dbm ->fhp; 239 ( t ); 240 } } 250 $__memp_sync_t ( v , dbm , ick_max , ags , wre_tٮp , uedp ) 251 ENV * v ; 252 DB_MPOOLFILE * dbm ; 253 u_t32_t ick_max , ags , * wre_tٮp ; 254 * uedp ; 256 BH * bhp ; 257 BH_TRACK * bhy ; 258 DB_MPOOL * dbmp ; 259 DB_MPOOL_HASH * hp ; 260 MPOOL * c_mp , * mp ; 261 MPOOLFILE * m ; 262 db_mux_t mux ; 263 roff_t ϡ_mf_offt ; 264 u_t32_t _t , _max , dty , i , n_che , mag , wre_tٮ ; 265 fet , maxݒfd , ss , qued_wre , t , t_t ; 266 wa_t , wre_t ; 268 dbmp = v -> mp_hd ; 269 mp = dbmp -> gfo [0]. imy ; 270 ϡ_mf_offt = INVALID_ROFF ; 271 fet = ss = wre_tٮ = 0; 273 i( wre_tٮp ! NULL ) 274 * wre_tٮp = 0; 275 i( uedp ! NULL ) 276 * uedp = 0; 284 qued_wre = `LF_ISSET ( DB_SYNC_CACHE | 285 DB_SYNC_CHECKPOINT | DB_SYNC_FILE | DB_SYNC_QUEUE_EXTENT ); 288 `MPOOL_SYSTEM_LOCK ( v ); 289 maxݒfd = mp -> mp_maxݒfd ; 290 `MPOOL_SYSTEM_UNLOCK ( v ); 293 _max = mp -> eg * mp-> hb_bucks ; 294 i(( t = 295 `__os_mloc ( v , _max * ( BH_TRACK ), & bhy )) != 0) 296 ( t ); 303 _t = 0, n_che = 0;_ch< mp -> eg ; ++n_cache) { 304 c_mp = dbmp -> gfo [ n_che ]. imy ; 306 hp = `R_ADDR (& dbmp -> gfo [ n_che ], c_mp -> hb ); 307 i = 0; i < c_mp -> hb_bucks ; i++, hp ++) { 315 #ifde DIAGNOSTIC 316 i( `SH_TAILQ_FIRST (& hp -> hash_buck , __bh = NULL ) 318 i( hp -> hash_ge_dty == 0) 322 dty = 0; 323 `MUTEX_LOCK ( v , hp -> mtx_hash ); 324 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) { 326 i(! `F_ISSET ( bhp , BH_DIRTY )) 329 dty ++; 330 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 336 i( m -> no_backg_fe ) 338 i(! `LF_ISSET ( DB_SYNC_FILE ) && 339 `F_ISSET ( m , MP_TEMP )) 346 i( `LF_ISSET ( DB_SYNC_CHECKPOINT ) && 347 m -> l_off = DB_LSN_OFF_NOTSET ) 354 i( `LF_ISSET ( DB_SYNC_QUEUE_EXTENT ) && 355 ! `F_ISSET ( m , MP_EXTENT )) 362 i( dbm ! NULL && m != dbmfp->mfp) 366 bhy [ _t ]. ack_hp = hp ; 367 bhy [ _t ]. ack_pgno = bhp -> pgno ; 368 bhy [ _t ]. ack_off = bhp -> mf_offt ; 369 _t ++; 377 i( _t > _max ) { 378 i(( t = `__os_loc ( v , 379 ( _max * 2* ( BH_TRACK ), 380 & bhy )) != 0) 382 _max *= 2; 385 `DB_ASSERT ( v , dty = hp -> hash_ge_dty ); 386 i( dty ! hp -> hash_ge_dty ) { 387 `__db_rx ( v , 389 ( u_lg ) hp -> hash_ge_dty , (u_lg) dty ); 390 hp -> hash_ge_dty = dty ; 392 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 394 i( t != 0) 395 r ; 398 i( `LF_ISSET ( DB_SYNC_INTERRUPT_OK && `FLD_ISSET ( 399 mp -> cfig_ags , DB_MEMP_SYNC_INTERRUPT )) { 400 i( uedp ! NULL ) 401 * uedp = 1; 402 r ; 408 i( _t == 0) 409 de ; 416 i( _t > 1) 417 `qst ( bhy , _t , ( BH_TRACK ), __bhcmp ); 423 i( `LF_ISSET ( DB_SYNC_TRICKLE && _t > ick_max ) 424 _t = ick_max ; 434 i( `LOGGING_ON ( v && ( t = `__log_ush nv, NULL )) != 0) 435 r ; 442 i = ss = wre_t = 0, mag = _t ;emaining > 0; ++i) { 443 i( i > _t ) { 444 i = 0; 445 ++ ss ; 446 `__os_yld ( v , 1, 0); 448 i(( hp = bhy [ i ]. ack_hp = NULL ) 452 mux = hp -> mtx_hash ; 453 `MUTEX_LOCK ( v , mux ); 454 `SH_TAILQ_FOREACH ( bhp , & hp -> hash_buck , hq , __bh ) 455 i( bhp -> pgno = bhy [ i ]. ack_pgno && 456 bhp -> mf_offt = bhy [ i ]. ack_off ) 466 i( bhp = NULL || ! `F_ISSET (bhp, BH_DIRTY )) { 467 `MUTEX_UNLOCK ( v , mux ); 468 -- mag ; 469 bhy [ i ]. ack_hp = NULL ; 484 i( `F_ISSET ( bhp , BH_LOCKED || (bhp-> f !0 && ss < 2)) { 485 `MUTEX_UNLOCK ( v , mux ); 486 i(! qued_wre ) { 487 -- mag ; 488 bhy [ i ]. ack_hp = NULL ; 494 ++ bhp -> f ; 495 `F_SET ( bhp , BH_LOCKED ); 512 bhp -> f_sync = bhp-> f - 1; 513 i( bhp -> f_sync != 0) { 514 `MUTEX_UNLOCK ( v , mux ); 515 wa_t = 1; 516 bhp -> f_sync !0 && wa_t < 4; ++wait_cnt) 517 `__os_yld ( v , 1, 0); 518 `MUTEX_LOCK ( v , mux ); 525 i( maxݒfd !0 && bhp -> mf_offt ! ϡ_mf_offt ) { 526 i(++ fet > maxݒfd ) { 527 fet = 0; 528 i(( t_t = `__memp_o_ush_fes ( 529 v , 1)!0 && t == 0) 530 t = t_t ; 532 ϡ_mf_offt = bhp -> mf_offt ; 539 i( bhp -> f_sync == 0) { 540 -- mag ; 541 bhy [ i ]. ack_hp = NULL ; 548 i( bhp -> f_sync =0 && `F_ISSET (bhp, BH_DIRTY )) { 549 m = `R_ADDR ( dbmp -> gfo , bhp -> mf_offt ); 550 i(( t_t = 551 `__memp_bhwre ( dbmp , hp , m , bhp , 1)) == 0) { 552 ++ wre_t ; 553 ++ wre_tٮ ; 555 i( t == 0) 556 t = t_t ; 557 __db_rx 558 ( v , "%s: unableo flushage: %lu", 559 `__memp_s ( dbmp , m ), ( u_lg ) bhp -> pgno ); 569 i( `F_ISSET ( bhp , BH_LOCKED )) 570 `F_CLR ( bhp , BH_LOCKED ); 576 bhp -> f_sync = 0; 579 -- bhp -> f ; 585 i( `F_ISSET ( hp , IO_WAITER )) { 586 `F_CLR ( hp , IO_WAITER ); 587 `MUTEX_UNLOCK ( v , hp -> mtx_io ); 591 `MUTEX_UNLOCK ( v , mux ); 594 i( `LF_ISSET ( DB_SYNC_INTERRUPT_OK ) && 595 `FLD_ISSET ( mp -> cfig_ags , DB_MEMP_SYNC_INTERRUPT )) { 596 i( uedp ! NULL ) 597 * uedp = 1; 598 r ; 607 i(! `LF_ISSET ( DB_SYNC_SUPPRESS_WRITE ) && 608 ! `FLD_ISSET ( mp -> cfig_ags , DB_MEMP_SUPPRESS_WRITE ) && 609 mp -> mp_maxwre !0 && wre_t >= mp->mp_maxwrite) { 610 wre_t = 0; 611 `__os_yld ( v , 0, ( u_lg ) mp -> mp_maxwre_p ); 615 de : 622 i( t =0 && qued_wre ) { 623 i( dbm = NULL ) 624 t = `__memp_sync_fes ( v ); 626 t = `__os_fsync ( v , dbm -> fhp ); 630 i(( t_t = `__memp_o_ush_fes ( v , 0)!0 && t == 0) 631 t = t_t ; 633 r : `__os_ ( v , bhy ); 634 i( wre_tٮp ! NULL ) 635 * wre_tٮp = wre_tٮ ; 637 ( t ); 638 } } 641 $__memp_sync_fe ( v , m , gp , coup , ags ) 642 ENV * v ; 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 ( v , m -> mux ); 679 i(! m -> fe_wrn || m-> ddfe ) { 680 `MUTEX_UNLOCK ( v , m -> mux ); 683 ++ m -> mpf_t ; 684 `MUTEX_UNLOCK ( v , m -> mux ); 690 dbmp = v -> mp_hd ; 691 `MUTEX_LOCK ( v , 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 ( v , dbmp -> mux ); 706 i( dbm = NULL ) { 707 i(( t = `__memp_mf_sync ( dbmp , m , 1)) != 0) { 708 `__db_r ( v , t , 710 `R_ADDR ( dbmp -> gfo , m -> th_off )); 713 t = `__os_fsync ( v , dbm -> fhp ); 719 `MUTEX_LOCK ( v , 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 && 759 ( t_t = `__memp_fo ( dbm , DB_MPOOL_NOLOCK )!0 && t == 0) 760 t = t_t ; 762 -- m -> mpf_t ; 765 `MUTEX_UNLOCK ( v , m -> mux ); 766 ( t ); 767 } } 774 $__memp_sync_fes ( v ) 775 ENV * v ; 777 DB_MPOOL * dbmp ; 778 DB_MPOOL_HASH * hp ; 779 MPOOL * mp ; 780 MPOOLFILE * m , * xt_m ; 781 i , ed_disrd_ss , t ; 783 dbmp = v -> mp_hd ; 784 mp = dbmp -> gfo [0]. imy ; 785 ed_disrd_ss = t = 0; 787 t = `__memp_wk_fes ( v , 788 mp , __memp_sync_fe , & ed_disrd_ss , 0, DB_STAT_MEMP_NOERROR ); 794 i(! ed_disrd_ss ) 795 ( t ); 797 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 798 i = 0; i < MPOOL_FILE_BUCKETS ; i++, hp ++) { 799 y : `MUTEX_LOCK ( v , hp -> mtx_hash ); 800 m = `SH_TAILQ_FIRST (& hp -> hash_buck , 801 __mpofe ); m ! NULL ; m = xt_m ) { 802 xt_m = `SH_TAILQ_NEXT ( m , q , __mpofe ); 808 i( m -> ddfe || 809 m -> block_t !0 || m-> mpf_t != 0) 812 `MUTEX_LOCK ( v , m -> mux ); 813 i(! m -> ddfe && 814 m -> block_t =0 && m-> mpf_t == 0) { 815 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 816 () `__memp_mf_disrd ( dbmp , m ); 817 y ; 819 `MUTEX_UNLOCK ( v , m -> mux ); 821 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 823 ( t ); 824 } } 833 $__memp_mf_sync ( dbmp , m , locked ) 834 DB_MPOOL * dbmp ; 835 MPOOLFILE * m ; 836 locked ; 838 DB_FH * fhp ; 839 DB_MPOOL_HASH * hp ; 840 ENV * v ; 841 MPOOL * mp ; 842 t , t_t ; 843 * h ; 845 `COMPQUIET ( hp , NULL ); 846 v = dbmp ->env; 852 i(! locked ) { 853 mp = dbmp -> gfo [0]. imy ; 854 hp = `R_ADDR ( dbmp -> gfo , mp -> ab ); 855 hp + `FNBUCKET ( 856 `R_ADDR ( dbmp -> gfo , m -> feid_off ), DB_FILE_ID_LEN ); 857 `MUTEX_LOCK ( v , hp -> mtx_hash ); 860 i(( t = `__db_ame ( v , DB_APP_DATA , 861 `R_ADDR ( dbmp -> gfo , m -> th_off ), 0, NULL , & h )) == 0) { 862 i(( t = `__os_ݒ ( v , h , 0, 0, 0, & fhp )) == 0) { 863 t = `__os_fsync ( v , fhp ); 864 i(( t_t = 865 `__os_ohd ( v , fhp )!0 && t == 0) 866 t = t_t ; 868 `__os_ ( v , h ); 871 i(! locked ) 872 `MUTEX_UNLOCK ( v , hp -> mtx_hash ); 874 ( t ); 875 } } 882 $__memp_o_ush_fes ( v , dosync ) 883 ENV * v ; 884 dosync ; 886 DB_MPOOL * dbmp ; 887 DB_MPOOLFILE * dbm ; 888 MPOOLFILE * m ; 889 t ; 891 dbmp = v -> mp_hd ; 906 y : `MUTEX_LOCK ( v , dbmp -> mux ); 907 `TAILQ_FOREACH ( dbm , & dbmp -> dbmfq , q ) 908 i( `F_ISSET ( dbm , MP_FLUSH )) { 909 `F_CLR ( dbm , MP_FLUSH ); 910 `MUTEX_UNLOCK ( v , dbmp -> mux ); 911 i( dosync ) { 919 m = dbm ->mfp; 920 i( m -> mpf_t == 1) { 921 `MUTEX_LOCK ( v , m -> mux ); 922 i( m -> mpf_t == 1) 923 m -> fe_wrn = 0; 924 `MUTEX_UNLOCK ( v , m -> mux ); 926 i(( t = `__os_fsync ( v , dbm -> fhp )) != 0) 927 ( t ); 929 i(( t = `__memp_fo ( dbm , 0)) != 0) 930 ( t ); 931 y ; 933 `MUTEX_UNLOCK ( v , dbmp -> mux ); 936 } } 939 $__bhcmp ( p1 , p2 ) 940 cڡ * p1 , * p2 ; 942 BH_TRACK * bhp1 , * bhp2 ; 944 bhp1 = ( BH_TRACK *) p1 ; 945 bhp2 = ( BH_TRACK *) p2 ; 948 i( bhp1 -> ack_off < bhp2 ->track_off) 950 i( bhp1 -> ack_off > bhp2 ->track_off) 958 i( bhp1 -> ack_pgno < bhp2 ->track_pgno) 960 i( bhp1 -> ack_pgno > bhp2 ->track_pgno) 963 } } @../mp/mp_trickle.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/mp.h " 15 __memp_ick __P (( ENV *, , *)); 24 $__memp_ick_ ( dbv , p , nwrٕ ) 25 DB_ENV * dbv ; 26 p , * nwrٕ ; 28 DB_THREAD_INFO * ; 29 ENV * v ; 30 t ; 32 v = dbv ->env; 34 `ENV_REQUIRES_CONFIG ( v , 35 v -> mp_hd , "memp_ick", DB_INIT_MPOOL ); 37 `ENV_ENTER ( v , ); 38 `REPLICATION_WRAP ( v , ( `__memp_ick nv, p , nwrٕ )), 0, t ); 39 `ENV_LEAVE ( v , ); 40 ( t ); 41 } } 48 $__memp_ick ( v , p , nwrٕ ) 49 ENV * v ; 50 p , * nwrٕ ; 52 DB_MPOOL * dbmp ; 53 MPOOL * c_mp , * mp ; 54 u_t32_t n , dty , i , ed_n , tٮ , dtmp , wre ; 55 t ; 57 dbmp = v -> mp_hd ; 58 mp = dbmp -> gfo [0]. imy ; 60 i( nwrٕ ! NULL ) 61 * nwrٕ = 0; 63 i( p < 1 ||ct > 100) { 64 `__db_rx ( v , 66 p ); 67 ( EINVAL ); 79 t = 0, i = dty = tٮ = 0; i < mp -> eg ; ++i) { 80 c_mp = dbmp -> gfo [ i ]. imy ; 81 tٮ + c_mp -> . _ges ; 82 `__memp__hash (& dbmp -> gfo [ i ], c_mp , & dtmp ); 83 dty + dtmp ; 90 i( tٮ =0 || dty == 0) 99 n = tٮ > dty ?otal - dirty : 0; 100 ed_n = ( tٮ * ( u_t ) p ) / 100; 101 i( n > ed_n ) 104 ed_n - n ; 105 t = `__memp_sync_t ( v , NULL , 106 ed_n , DB_SYNC_TRICKLE | DB_SYNC_INTERRUPT_OK , & wre , NULL ); 107 `STAT (( mp -> . _ge_ick + wre )); 108 i( nwrٕ ! NULL ) 109 * nwrٕ = () wre ; 111 ( t ); 112 } } @../mutex/mut_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__mux_loc ( v , loc_id , ags , dxp ) 22 ENV * v ; 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 ( v -> dbv , DB_ENV_NOLOCKING ) || 40 (! `F_ISSET ( v , ENV_THREAD ) && 41 ( `LF_ISSET ( DB_MUTEX_PROCESS_ONLY ) || 42 `F_ISSET ( v , ENV_PRIVATE ))))) 46 i( `F_ISSET ( v , ENV_PRIVATE )) 47 `LF_SET ( DB_MUTEX_PROCESS_ONLY ); 53 i( `MUTEX_ON ( v )) 54 ( `__mux_loc_t ( v , 1, loc_id , ags , dxp )); 64 i( v -> mux_iq = NULL ) { 65 v -> mux_iq_max = 50; 66 i(( t = `__os_oc ( v ,nv-> mux_iq_max , 67 ( v -> mux_iq [0]), &env->mutex_iq)) != 0) 68 ( t ); 69 } i( v -> mux_iq_xt =v-> mux_iq_max - 1) { 70 v -> mux_iq_max *= 2; 71 i(( t = `__os_loc ( v , 72 v -> mux_iq_max * nv-> mux_iq [0]), 73 & v -> mux_iq )) != 0) 74 ( t ); 76 * dxp = v -> mux_iq_xt + 1; 77 v -> mux_iq [v-> mux_iq_xt ]. loc_id =lloc_id; 78 v -> mux_iq [v-> mux_iq_xt ]. ags = flags; 79 ++ v -> mux_iq_xt ; 82 } } 92 $__mux_loc_t ( v , locksys , loc_id , ags , dxp ) 93 ENV * v ; 94 locksys , loc_id ; 95 u_t32_t ags ; 96 db_mux_t * dxp ; 98 DB_ENV * dbv ; 99 DB_MUTEX * muxp ; 100 DB_MUTEXMGR * mtxmgr ; 101 DB_MUTEXREGION * mtxgi ; 102 t ; 104 dbv = v ->dbenv; 105 mtxmgr = v -> mux_hd ; 106 mtxgi = mtxmgr -> gfo . imy ; 107 t = 0; 114 i( locksys ) 115 `MUTEX_SYSTEM_LOCK ( v ); 117 i( mtxgi -> mux_xt = MUTEX_INVALID ) { 118 `__db_rx ( v , 120 i( locksys ) 121 `MUTEX_SYSTEM_UNLOCK ( v ); 122 ( ENOMEM ); 125 * dxp = mtxgi -> mux_xt ; 126 muxp = `MUTEXP_SET (* dxp ); 127 `DB_ASSERT ( v , 128 (( u_t ) muxp & ( dbv -> mux_ign - 1)) == 0); 129 mtxgi -> mux_xt = muxp -> mux_xt_lk ; 131 -- mtxgi -> . _mux_ ; 132 ++ mtxgi -> . _mux_u ; 133 i( mtxgi -> . _mux_u > mtxgi->. _mux_u_max ) 134 mtxgi -> . _mux_u_max = 135 mtxgi -> . _mux_u ; 136 i( locksys ) 137 `MUTEX_SYSTEM_UNLOCK ( v ); 140 `memt ( muxp , 0, (*mutexp)); 141 `F_SET ( muxp , DB_MUTEX_ALLOCATED | 142 `LF_ISSET ( DB_MUTEX_LOGICAL_LOCK | DB_MUTEX_PROCESS_ONLY )); 149 i( `LF_ISSET ( DB_MUTEX_PROCESS_ONLY )) 150 dbv -> `thad_id (dbv, & muxp -> pid , NULL ); 152 #ifde HAVE_STATISTICS 153 muxp -> loc_id =lloc_id; 155 `COMPQUIET ( loc_id , 0); 158 i(( t = `__mux_ ( v , * dxp , ags )) != 0) 159 () `__mux__t ( v , locksys , dxp ); 161 ( t ); 162 } } 171 $__mux_ ( v , dxp ) 172 ENV * v ; 173 db_mux_t * dxp ; 188 i(! `MUTEX_ON ( v || * dxp = MUTEX_INVALID ) 191 ( `__mux__t ( v , 1, dxp )); 192 } } 201 $__mux__t ( v , locksys , dxp ) 202 ENV * v ; 203 locksys ; 204 db_mux_t * dxp ; 206 DB_MUTEX * muxp ; 207 DB_MUTEXMGR * mtxmgr ; 208 DB_MUTEXREGION * mtxgi ; 209 db_mux_t mux ; 210 t ; 212 mux = * dxp ; 213 * dxp = MUTEX_INVALID ; 215 mtxmgr = v -> mux_hd ; 216 mtxgi = mtxmgr -> gfo . imy ; 217 muxp = `MUTEXP_SET ( mux ); 219 `DB_ASSERT ( v , `F_ISSET ( muxp , DB_MUTEX_ALLOCATED )); 220 `F_CLR ( muxp , DB_MUTEX_ALLOCATED ); 222 t = `__mux_deroy ( v , mux ); 224 i( locksys ) 225 `MUTEX_SYSTEM_LOCK ( v ); 228 muxp -> mux_xt_lk = mtxgi -> mux_xt ; 229 mtxgi -> mux_xt = mux ; 230 ++ mtxgi -> . _mux_ ; 231 -- mtxgi -> . _mux_u ; 233 i( locksys ) 234 `MUTEX_SYSTEM_UNLOCK ( v ); 236 ( t ); 237 } } @../mutex/mut_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__mut_chk ( v ) 22 ENV * v ; 24 DB_ENV * dbv ; 25 DB_MUTEX * muxp ; 26 DB_MUTEXMGR * mtxmgr ; 27 DB_MUTEXREGION * mtxgi ; 28 db_mux_t i ; 29 t ; 30 buf [ DB_THREADID_STRLEN ]; 32 dbv = v ->dbenv; 33 mtxmgr = v -> mux_hd ; 34 mtxgi = mtxmgr -> gfo . imy ; 35 t = 0; 37 `MUTEX_SYSTEM_LOCK ( v ); 38 i = 1; i < mtxgi -> . _mux_t ; ++i, ++ muxp ) { 39 muxp = `MUTEXP_SET ( i ); 45 i(! `F_ISSET ( muxp , DB_MUTEX_ALLOCATED ) || 46 ! `F_ISSET ( muxp , DB_MUTEX_PROCESS_ONLY )) 53 i( dbv -> `is_ive ( 54 dbv , muxp -> pid , 0, DB_MUTEX_PROCESS_ONLY )) 57 `__db_msg ( v , "Freeing mutex forrocess: %s", 58 dbv -> `thad_id_rg (dbv, muxp -> pid , 0, buf )); 61 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 62 `MUTEX_UNLOCK ( v , i ); 64 i(( t = `__mux__t ( v , 0, & i )) != 0) 67 `MUTEX_SYSTEM_UNLOCK ( v ); 69 ( t ); 70 } } @../mutex/mut_fcntl.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/mux_t.h " 21 $__db_f_mux_ ( v , mux , ags ) 22 ENV * v ; 23 db_mux_t mux ; 24 u_t32_t ags ; 26 `COMPQUIET ( v , NULL ); 27 `COMPQUIET ( mux , MUTEX_INVALID ); 28 `COMPQUIET ( ags , 0); 31 } } 40 $__db_f_mux_lock ( v , mux ) 41 ENV * v ; 42 db_mux_t mux ; 44 DB_ENV * dbv ; 45 DB_MUTEX * muxp ; 46 DB_MUTEXMGR * mtxmgr ; 47 DB_MUTEXREGION * mtxgi ; 48 ock k_lock ; 49 locked , ms , t ; 51 dbv = v ->dbenv; 53 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 56 mtxmgr = v -> mux_hd ; 57 mtxgi = mtxmgr -> gfo . imy ; 58 muxp = `MUTEXP_SET ( mux ); 60 `CHECK_MTX_THREAD ( v , muxp ); 62 #ifde HAVE_STATISTICS 63 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 64 ++ muxp -> mux_t_wa ; 66 ++ muxp -> mux_t_nowa ; 70 k_lock . l_wh = SEEK_SET ; 71 k_lock . l_t = mux ; 72 k_lock . l_n = 1; 74 locked = 0;;) { 79 ms = 1; `F_ISSET ( muxp , DB_MUTEX_LOCKED );) { 80 `__os_yld ( NULL , 0, ms * US_PER_MS ); 81 i(( ms <<1> MS_PER_SEC ) 82 ms = MS_PER_SEC ; 86 k_lock . l_ty = F_WRLCK ; 87 i( `f ( v -> lockfhp -> fd , F_SETLKW , & k_lock )) 88 r ; 91 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 92 locked = 1; 94 `F_SET ( muxp , DB_MUTEX_LOCKED ); 95 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 99 k_lock . l_ty = F_UNLCK ; 100 i( `f ( v -> lockfhp -> fd , F_SETLK , & k_lock )) 101 r ; 112 i( locked ) 116 #ifde DIAGNOSTIC 121 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 122 `__os_yld ( v , 0, 0); 126 r : t = `__os_g_sy (); 127 `__db_sy ( v , t , "fcntlock failed"); 128 ( `__v_nic ( v , `__os_posix_r ( t ))); 129 } } 138 $__db_f_mux_uock ( v , mux ) 139 ENV * v ; 140 db_mux_t mux ; 142 DB_ENV * dbv ; 143 DB_MUTEX * muxp ; 144 DB_MUTEXMGR * mtxmgr ; 145 DB_MUTEXREGION * mtxgi ; 147 dbv = v ->dbenv; 149 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 152 mtxmgr = v -> mux_hd ; 153 mtxgi = mtxmgr -> gfo . imy ; 154 muxp = `MUTEXP_SET ( mux ); 156 #ifde DIAGNOSTIC 157 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 158 `__db_rx ( v , "fcntl unlock failed:ocklready unlocked"); 159 ( `__v_nic ( v , EACCES )); 169 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 172 } } 181 $__db_f_mux_deroy ( v , mux ) 182 ENV * v ; 183 db_mux_t mux ; 185 `COMPQUIET ( v , NULL ); 186 `COMPQUIET ( mux , MUTEX_INVALID ); 189 } } @../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 ENV * v ; 28 t ; 30 v = dbv ->env; 32 ags ) { 34 DB_MUTEX_PROCESS_ONLY : 35 DB_MUTEX_SELF_BLOCK : 38 ( `__db_ ( v , "DB_ENV->mutex_alloc", 0)); 41 `ENV_ENTER ( v , ); 42 t = `__mux_loc ( v , MTX_APPLICATION , ags , dxp ); 43 `ENV_LEAVE ( v , ); 45 ( t ); 46 } } 55 $__mux__ ( dbv , dx ) 56 DB_ENV * dbv ; 57 db_mux_t dx ; 59 DB_THREAD_INFO * ; 60 ENV * v ; 61 t ; 63 v = dbv ->env; 65 i( dx = MUTEX_INVALID ) 66 ( EINVAL ); 74 `ENV_ENTER ( v , ); 75 t = `__mux_ ( v , & dx ); 76 `ENV_LEAVE ( v , ); 78 ( t ); 79 } } 88 $__mux_lock_ ( dbv , dx ) 89 DB_ENV * dbv ; 90 db_mux_t dx ; 92 DB_THREAD_INFO * ; 93 ENV * v ; 94 t ; 96 v = dbv ->env; 98 i( dx = MUTEX_INVALID ) 99 ( EINVAL ); 101 `ENV_ENTER ( v , ); 102 t = `__mux_lock ( v , dx ); 103 `ENV_LEAVE ( v , ); 104 ( t ); 105 } } 114 $__mux_uock_ ( dbv , dx ) 115 DB_ENV * dbv ; 116 db_mux_t dx ; 118 DB_THREAD_INFO * ; 119 ENV * v ; 120 t ; 122 v = dbv ->env; 124 i( dx = MUTEX_INVALID ) 125 ( EINVAL ); 127 `ENV_ENTER ( v , ); 128 t = `__mux_uock ( v , dx ); 129 `ENV_LEAVE ( v , ); 130 ( t ); 131 } } 140 $__mux_g_ign ( dbv , ig ) 141 DB_ENV * dbv ; 142 u_t32_t * ig ; 144 ENV * v ; 146 v = dbv ->env; 148 i( `MUTEX_ON ( v )) { 150 * ig = (( DB_MUTEXREGION *) 151 v -> mux_hd -> gfo . imy )-> . _mux_ign ; 153 * ig = dbv -> mux_ign ; 155 } } 164 $__mux_t_ign ( dbv , ign ) 165 DB_ENV * dbv ; 166 u_t32_t ign ; 168 ENV * v ; 170 v = dbv ->env; 172 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_mutex_align"); 174 i( ign =0 || ! `POWER_OF_TWO (align)) { 175 `__db_rx ( v , 177 ( EINVAL ); 180 dbv -> mux_ign = ign ; 182 } } 191 $__mux_g_emt ( dbv , em ) 192 DB_ENV * dbv ; 193 u_t32_t * em ; 200 * em = dbv -> mux_c ; 202 } } 211 $__mux_t_emt ( dbv , emt ) 212 DB_ENV * dbv ; 213 u_t32_t emt ; 215 ENV * v ; 217 v = dbv ->env; 219 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_mutex_increment"); 221 dbv -> mux_t = 0; 222 dbv -> mux_c = emt ; 224 } } 233 $__mux_g_max ( dbv , maxp ) 234 DB_ENV * dbv ; 235 u_t32_t * maxp ; 237 ENV * v ; 239 v = dbv ->env; 241 i( `MUTEX_ON ( v )) { 243 * maxp = (( DB_MUTEXREGION *) 244 v -> mux_hd -> gfo . imy )-> . _mux_t ; 246 * maxp = dbv -> mux_t ; 248 } } 257 $__mux_t_max ( dbv , max ) 258 DB_ENV * dbv ; 259 u_t32_t max ; 261 ENV * v ; 263 v = dbv ->env; 265 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_mutex_max"); 267 dbv -> mux_t = max ; 268 dbv -> mux_c = 0; 270 } } 279 $__mux_g_s_s ( dbv , s_ ) 280 DB_ENV * dbv ; 281 u_t32_t * s_ ; 283 ENV * v ; 285 v = dbv ->env; 287 i( `MUTEX_ON ( v )) { 289 * s_ = (( DB_MUTEXREGION *) v -> 290 mux_hd -> gfo . imy )-> . _mux_s_s ; 292 * s_ = dbv -> mux_s_s ; 294 } } 303 $__mux_t_s_s ( dbv , s_s ) 304 DB_ENV * dbv ; 305 u_t32_t s_s ; 307 ENV * v ; 309 v = dbv ->env; 315 i( s_s == 0) 316 s_s = 1; 317 i( s_s > 1000000) 318 s_s = 1000000; 326 i( `MUTEX_ON ( v )) 327 (( DB_MUTEXREGION *) v -> mux_hd 328 -> gfo . imy )-> . _mux_s_s = s_s ; 330 dbv -> mux_s_s = s_s ; 332 } } @../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_ ( v , mux , ags ) 58 ENV * v ; 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 = v -> 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 ( v , t , "unableo initialize mutex"); 162 ( t ); 163 } } 172 $__db_had_mux_lock ( v , mux ) 173 ENV * v ; 174 db_mux_t mux ; 176 DB_ENV * dbv ; 177 DB_MUTEX * muxp ; 178 DB_MUTEXMGR * mtxmgr ; 179 DB_MUTEXREGION * mtxgi ; 180 i , t ; 182 dbv = v ->dbenv; 184 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 187 mtxmgr = v -> mux_hd ; 188 mtxgi = mtxmgr -> gfo . imy ; 189 muxp = `MUTEXP_SET ( mux ); 191 `CHECK_MTX_THREAD ( v , muxp ); 193 #i `defed ( HAVE_STATISTICS && !defed( HAVE_MUTEX_HYBRID ) 201 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 202 ++ muxp -> mux_t_wa ; 204 ++ muxp -> mux_t_nowa ; 207 `RET_SET (( `had_mux_lock (& muxp -> mux )), t ); 208 i( t != 0) 209 r ; 211 i( `F_ISSET ( muxp , DB_MUTEX_SELF_BLOCK )) { 219 #ifde HAVE_MUTEX_HYBRID 220 muxp -> wa ++; 221 `MUTEX_MEMBAR ( muxp -> wa ); 223 `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 224 `RET_SET (( `had_cd_wa ( 225 & muxp -> cd , &muxp-> mux )), t ); 236 i( t !0 && ! EINTR && 237 #ifde ETIME 238 t ! ETIME && 240 t ! ETIMEDOUT ) { 241 () `had_mux_uock (& muxp -> mux ); 242 r ; 246 #ifde HAVE_MUTEX_HYBRID 247 muxp -> wa --; 249 `F_SET ( muxp , DB_MUTEX_LOCKED ); 250 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 262 i = PTHREAD_UNLOCK_ATTEMPTS ; 264 `RET_SET (( `had_mux_uock (& muxp -> mux )), t ); 265 } t = EFAULT && -- i > 0); 266 i( t != 0) 267 r ; 269 #ifde DIAGNOSTIC 270 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 271 buf [ DB_THREADID_STRLEN ]; 272 () dbv -> `thad_id_rg (dbenv, 273 muxp -> pid , muxp-> tid , buf ); 274 `__db_rx ( v , 276 buf ); 277 t = EINVAL ; 278 r ; 281 `F_SET ( muxp , DB_MUTEX_LOCKED ); 282 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 285 #ifde DIAGNOSTIC 290 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 291 `__os_yld ( v , 0, 0); 295 r : `__db_r ( v , t , "pthreadock failed"); 296 ( `__v_nic ( v , t )); 297 } } 306 $__db_had_mux_uock ( v , mux ) 307 ENV * v ; 308 db_mux_t mux ; 310 DB_ENV * dbv ; 311 DB_MUTEX * muxp ; 312 DB_MUTEXMGR * mtxmgr ; 313 DB_MUTEXREGION * mtxgi ; 314 i , t ; 316 dbv = v ->dbenv; 318 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 321 mtxmgr = v -> mux_hd ; 322 mtxgi = mtxmgr -> gfo . imy ; 323 muxp = `MUTEXP_SET ( mux ); 325 #i! `defed ( HAVE_MUTEX_HYBRID && defed( DIAGNOSTIC ) 326 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 327 `__db_rx ( 328 v , "pthread unlock failed:ocklready unlocked"); 329 ( `__v_nic ( v , EACCES )); 332 i( `F_ISSET ( muxp , DB_MUTEX_SELF_BLOCK )) { 333 `RET_SET (( `had_mux_lock (& muxp -> mux )), t ); 334 i( t != 0) 335 r ; 337 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 339 `RET_SET (( `had_cd_sigl (& muxp -> cd )), t ); 340 i( t != 0) 341 r ; 343 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 346 i = PTHREAD_UNLOCK_ATTEMPTS ; 348 `RET_SET (( `had_mux_uock (& muxp -> mux )), t ); 349 } t = EFAULT && -- i > 0); 351 r : i( t != 0) { 352 `__db_r ( v , t , "pthread unlock failed"); 353 ( `__v_nic ( v , t )); 355 ( t ); 356 } } 365 $__db_had_mux_deroy ( v , mux ) 366 ENV * v ; 367 db_mux_t mux ; 369 DB_MUTEX * muxp ; 370 DB_MUTEXMGR * mtxmgr ; 371 DB_MUTEXREGION * mtxgi ; 372 t , t_t ; 374 i(! `MUTEX_ON ( v )) 377 mtxmgr = v -> mux_hd ; 378 mtxgi = mtxmgr -> gfo . imy ; 379 muxp = `MUTEXP_SET ( mux ); 381 t = 0; 382 i( `F_ISSET ( muxp , DB_MUTEX_SELF_BLOCK )) { 383 `RET_SET (( `had_cd_deroy (& muxp -> cd )), t ); 384 i( t != 0) 385 `__db_r ( v , t , "unableo destroy cond"); 387 `RET_SET (( `had_mux_deroy (& muxp -> mux )), t_t ); 388 i( t_t != 0) { 389 `__db_r ( v , t_t , "unableo destroy mutex"); 390 i( t == 0) 391 t = t_t ; 393 ( t ); 394 } } @../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 (( ENV *)); 19 __mux_gi_ __P (( ENV *, DB_MUTEXMGR *)); 20 size_t __mux_gi_size __P (( ENV *)); 29 $__mux_ݒ ( v , _ok ) 30 ENV * v ; 31 _ok ; 33 DB_ENV * dbv ; 34 DB_MUTEXMGR * mtxmgr ; 35 DB_MUTEXREGION * mtxgi ; 36 db_mux_t mux ; 37 u_t32_t u_cou ; 38 u_t i ; 39 t ; 41 dbv = v ->dbenv; 48 i( dbv -> mux_ign == 0) 49 dbv -> mux_ign = MUTEX_ALIGN ; 50 i( dbv -> mux_s_s == 0) { 51 u_cou = `__os_u_cou (); 52 i(( t = `__mux_t_s_s ( dbv , u_cou == 1 ? 53 u_cou : cpu_cou * MUTEX_SPINS_PER_PROCESSOR )) != 0) 54 ( t ); 64 i( dbv -> mux_t == 0) 65 dbv -> mux_t = 66 `__lock_gi_mux_cou ( v ) + 67 `__log_gi_mux_cou ( v ) + 68 `__memp_gi_mux_cou ( v ) + 69 `__txn_gi_mux_cou ( v ) + 70 dbv -> mux_c + 100; 73 i(( t = `__os_oc ( v , 1, ( DB_MUTEXMGR ), & mtxmgr )) != 0) 74 ( t ); 77 mtxmgr -> gfo . v =nv; 78 mtxmgr -> gfo . ty = REGION_TYPE_MUTEX ; 79 mtxmgr -> gfo . id = INVALID_REGION_ID ; 80 mtxmgr -> gfo . ags = REGION_JOIN_OK ; 81 i( _ok ) 82 `F_SET (& mtxmgr -> gfo , REGION_CREATE_OK ); 83 i(( t = `__v_gi_ch ( v , 84 & mtxmgr -> gfo , `__mux_gi_size ( v ))) != 0) 85 r ; 88 i( `F_ISSET (& mtxmgr -> gfo , REGION_CREATE )) 89 i(( t = `__mux_gi_ ( v , mtxmgr )) != 0) 90 r ; 93 mtxgi = mtxmgr -> gfo . imy = 94 `R_ADDR (& mtxmgr -> gfo , mtxmgr->gfo. -> imy ); 95 mtxmgr -> mux_y = `R_ADDR (&mtxmgr-> gfo , mtxgi -> mux_off ); 97 v -> mux_hd = mtxmgr ; 100 i( v -> mux_iq ! NULL ) { 101 `DB_ASSERT ( v , `F_ISSET (& mtxmgr -> gfo , REGION_CREATE )); 102 i = 0; i < v -> mux_iq_xt ; ++i) { 103 i(( t = `__mux_loc_t ( 104 v , 0,nv-> mux_iq [ i ]. loc_id , 105 v -> mux_iq [ i ]. ags , & mux )) != 0) 106 r ; 111 `DB_ASSERT ( v , mux = i + 1); 113 `__os_ ( v ,nv-> mux_iq ); 114 v -> mux_iq = NULL ; 124 mux = MUTEX_INVALID ; 125 i(( t = 126 `__mux_loc ( v , MTX_MUTEX_TEST , 0, & mux ) != 0) || 127 ( t = `__mux_lock ( v , mux )) != 0 || 128 ( t = `__mux_uock ( v , mux )) != 0 || 129 ( t = `__mux_ ( v , & mux )) != 0) { 130 `__db_rx ( v , 132 r ; 138 r : v -> mux_hd = NULL ; 139 i( mtxmgr -> gfo . addr ! NULL ) 140 () `__v_gi_dach ( v , & mtxmgr -> gfo , 0); 142 `__os_ ( v , mtxmgr ); 143 ( t ); 144 } } 151 $__mux_gi_ ( v , mtxmgr ) 152 ENV * v ; 153 DB_MUTEXMGR * mtxmgr ; 155 DB_ENV * dbv ; 156 DB_MUTEX * muxp ; 157 DB_MUTEXREGION * mtxgi ; 158 db_mux_t i ; 159 t ; 160 * mux_y ; 162 dbv = v ->dbenv; 164 `COMPQUIET ( muxp , NULL ); 166 i(( t = `__v_loc (& mtxmgr -> gfo , 167 ( DB_MUTEXREGION ), & mtxmgr -> gfo . imy )) != 0) { 168 `__db_rx ( v , 170 ( t ); 172 mtxmgr -> gfo . -> imy = 173 `R_OFFSET (& mtxmgr -> gfo , mtxmgr->gfo. imy ); 174 mtxgi = mtxmgr -> gfo . imy ; 175 `memt ( mtxgi , 0, (*mtxregion)); 177 i(( t = `__mux_loc ( 178 v , MTX_MUTEX_REGION , 0, & mtxgi -> mtx_gi )) != 0) 179 ( t ); 181 mtxgi -> mux_size = `__mux_ign_size ( v ); 183 mtxgi -> . _mux_ign = dbv -> mux_ign ; 184 mtxgi -> . _mux_t = dbv -> mux_t ; 185 mtxgi -> . _mux_s_s = dbv -> mux_s_s ; 200 i(( t = `__v_loc (& mtxmgr -> gfo , 201 mtxgi -> . _mux_ign + 202 ( mtxgi -> . _mux_t + 1* mtxgi-> mux_size , 203 & mux_y )) != 0) { 204 `__db_rx ( v , 206 ( t ); 209 mtxgi -> mux_off_loc = `R_OFFSET (& mtxmgr -> gfo , mux_y ); 210 mux_y = `ALIGNP_INC (mux_y, mtxgi -> . _mux_ign ); 211 mtxgi -> mux_off = `R_OFFSET (& mtxmgr -> gfo , mux_y ); 212 mtxmgr -> mux_y = mutex_array; 222 i = 1; i < mtxgi -> . _mux_t ; ++i) { 223 muxp = `MUTEXP_SET ( i ); 224 muxp -> ags = 0; 225 muxp -> mux_xt_lk = i + 1; 227 muxp = `MUTEXP_SET ( i ); 228 muxp -> ags = 0; 229 muxp -> mux_xt_lk = MUTEX_INVALID ; 230 mtxgi -> mux_xt = 1; 231 mtxgi -> . _mux_ = mtxgi->. _mux_t ; 232 mtxgi -> . _mux_u = mtxgi->. _mux_u_max = 0; 235 } } 244 $__mux_v_esh ( v ) 245 ENV * v ; 247 DB_MUTEXMGR * mtxmgr ; 248 DB_MUTEXREGION * mtxgi ; 249 REGINFO * gfo ; 250 t ; 252 mtxmgr = v -> mux_hd ; 253 gfo = & mtxmgr ->reginfo; 254 mtxgi = mtxmgr -> gfo . imy ; 261 i( `F_ISSET ( v , ENV_PRIVATE )) { 262 #ifde HAVE_MUTEX_SYSTEM_RESOURCES 267 `__mux_sour_tu ( v , gfo ); 270 `__v_loc_ ( 271 gfo , `R_ADDR egfo, mtxgi -> mux_off_loc )); 275 t = `__v_gi_dach ( v , gfo , 0); 277 `__os_ ( v , mtxmgr ); 279 v -> mux_hd = NULL ; 281 ( t ); 282 } } 289 size_t 290 $__mux_ign_size ( v ) 291 ENV * v ; 293 DB_ENV * dbv ; 295 dbv = v ->dbenv; 297 (( size_t ) `DB_ALIGN (( DB_MUTEX ), dbv -> mux_ign )); 298 } } 304 size_t 305 $__mux_gi_size ( v ) 306 ENV * v ; 308 DB_ENV * dbv ; 309 size_t s ; 311 dbv = v ->dbenv; 313 s = ( DB_MUTEXMGR ) + 1024; 316 s + `__v_loc_size ( 317 ( dbv -> mux_t + 1* `__mux_ign_size ( v )); 319 ( s ); 320 } } 322 #ifdef HAVE_MUTEX_SYSTEM_RESOURCES 330 $__mux_sour_tu ( v , f ) 331 ENV * v ; 332 REGINFO * f ; 334 DB_MUTEX * muxp ; 335 DB_MUTEXMGR * mtxmgr , mtxmgr_ ; 336 DB_MUTEXREGION * mtxgi ; 337 db_mux_t i ; 338 * ig_hd ; 356 `memt (& mtxmgr_ , 0, (mtxmgr_st)); 357 mtxmgr = & mtxmgr_ ; 358 mtxmgr -> gfo = * f ; 359 mtxgi = mtxmgr -> gfo . imy = 360 `R_ADDR (& mtxmgr -> gfo , mtxmgr->gfo. -> imy ); 361 mtxmgr -> mux_y = `R_ADDR (&mtxmgr-> gfo , mtxgi -> mux_off ); 371 ig_hd = v -> mux_hd ; 372 v -> mux_hd = mtxmgr ; 373 i = 1; i < mtxgi -> . _mux_t ; ++i, ++ muxp ) { 374 muxp = `MUTEXP_SET ( i ); 375 i( `F_ISSET ( muxp , DB_MUTEX_ALLOCATED )) 376 () `__mux_deroy ( v , i ); 378 v -> mux_hd = ig_hd ; 379 } } @../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 (( ENV *, u_t32_t )); 18 cڡ * __mux_t_id __P (()); 19 __mux_t_s __P (( ENV *, u_t32_t )); 20 __mux_t_summy __P (( ENV *)); 21 __mux_ __P (( 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 ENV * v ; 37 t ; 39 v = dbv ->env; 41 i(( t = `__db_fchk ( v , 42 "DB_ENV->mux_", ags , DB_STAT_CLEAR )) != 0) 43 ( t ); 45 `ENV_ENTER ( v , ); 46 `REPLICATION_WRAP ( v , ( `__mux_ nv, p , ags )), 0, t ); 47 `ENV_LEAVE ( v , ); 48 ( t ); 49 } } 56 $__mux_ ( v , p , ags ) 57 ENV * v ; 58 DB_MUTEX_STAT ** p ; 59 u_t32_t ags ; 61 DB_MUTEXMGR * mtxmgr ; 62 DB_MUTEXREGION * mtxgi ; 63 DB_MUTEX_STAT * s ; 64 t ; 66 * p = NULL ; 67 mtxmgr = v -> mux_hd ; 68 mtxgi = mtxmgr -> gfo . imy ; 70 i(( t = `__os_umloc ( v , ( DB_MUTEX_STAT ), & s )) != 0) 71 ( t ); 73 `MUTEX_SYSTEM_LOCK ( v ); 79 * s = mtxgi -> ; 80 s -> _gsize = mtxmgr -> gfo . -> size ; 81 `__mux_t_wa_fo ( v , mtxgi -> mtx_gi , 82 & s -> _gi_wa , &s-> _gi_nowa ); 83 i( `LF_ISSET ( DB_STAT_CLEAR )) 84 `__mux_r ( v , mtxgi -> mtx_gi ); 86 `MUTEX_SYSTEM_UNLOCK ( v ); 88 * p = s ; 90 } } 99 $__mux__t_ ( dbv , ags ) 100 DB_ENV * dbv ; 101 u_t32_t ags ; 103 DB_THREAD_INFO * ; 104 ENV * v ; 105 t ; 107 v = dbv ->env; 109 i(( t = `__db_fchk ( v , "DB_ENV->mutex_stat_print", 110 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 111 ( t ); 113 `ENV_ENTER ( v , ); 114 `REPLICATION_WRAP ( v , ( `__mux__t nv, ags )), 0, t ); 115 `ENV_LEAVE ( v , ); 116 ( t ); 117 } } 126 $__mux__t ( v , ags ) 127 ENV * v ; 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 ( v , ig_ags ); 137 `__mux_t_summy ( v ); 138 i( ags =0 || t != 0) 139 ( t ); 142 i( `LF_ISSET ( DB_STAT_ALL )) 143 t = `__mux_t_l ( v , ig_ags ); 146 } } 149 $__mux_t_summy ( v ) 150 ENV * v ; 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 = v -> 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 ( v , "Mutex counts"); 174 `__db_msg ( v , "%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 ( v , "%lu\t%s", 178 ( u_lg ) cous [ loc_id ], 179 `__mux_t_id ( loc_id )); 181 } } 188 $__mux_t_s ( v , ags ) 189 ENV * v ; 190 u_t32_t ags ; 192 DB_MUTEX_STAT * ; 193 t ; 195 i(( t = `__mux_ ( v , & , `LF_ISSET ( DB_STAT_CLEAR ))) != 0) 196 ( t ); 198 i( `LF_ISSET ( DB_STAT_ALL )) 199 `__db_msg ( v , "Default mutexegion information:"); 201 `__db_dlbys ( v , "Mutexegion size", 202 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 203 `__db_dl_p ( v , 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 ( v , ); 217 } } 224 $__mux_t_l ( v , ags ) 225 ENV * v ; 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 = v -> mux_hd ; 246 mtxgi = mtxmgr -> gfo . imy ; 248 `__db_t_gfo ( v , & mtxmgr -> gfo , "Mux", ags ); 249 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 251 `__db_msg ( v , "DB_MUTEXREGION structure:"); 252 `__mux_t_debug_sg ( v , 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 ( v , "%s", `DB_GLOBAL ( db_le )); 265 `__db_msg ( v , "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 ( v , mbp , "%5lu\t", ( u_lg ) i ); 274 `__mux_t_debug_s ( v , mbp , i , ags ); 276 i( muxp -> loc_id != 0) 277 `__db_msgadd ( v , 278 mbp , ", %s", `__mux_t_id ( muxp -> loc_id )); 280 `__db_ags ( v , mbp , muxp -> ags , , " (", ")"); 282 `DB_MSGBUF_FLUSH ( v , mbp ); 286 } } 297 $__mux_t_debug_sg ( v , g , mux , ags ) 298 ENV * v ; 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 ( v , mbp , "%lu\t%", ( u_lg ) mux , g ); 311 `__mux_t_debug_s ( v , mbp , mux , ags ); 312 `DB_MSGBUF_FLUSH ( v , mbp ); 313 } } 324 $__mux_t_debug_s ( v , mbp , mux , ags ) 325 ENV * v ; 326 DB_MSGBUF * mbp ; 327 db_mux_t mux ; 328 u_t32_t ags ; 330 DB_ENV * dbv ; 331 DB_MUTEX * muxp ; 332 DB_MUTEXMGR * mtxmgr ; 333 DB_MUTEXREGION * mtxgi ; 334 u_lg vue ; 335 buf [ DB_THREADID_STRLEN ]; 337 i( mux = MUTEX_INVALID ) { 338 `__db_msgadd ( v , mbp , "[!Set]"); 342 dbv = v ->dbenv; 343 mtxmgr = v -> mux_hd ; 344 mtxgi = mtxmgr -> gfo . imy ; 345 muxp = `MUTEXP_SET ( mux ); 347 `__db_msgadd ( v , mbp , "["); 348 i(( vue = muxp -> mux_t_wa ) < 10000000) 349 `__db_msgadd ( v , mbp , "%lu", vue ); 351 `__db_msgadd ( v , mbp , "%luM", vue / 1000000); 352 i(( vue = muxp -> mux_t_nowa ) < 10000000) 353 `__db_msgadd ( v , mbp , "/%lu", vue ); 355 `__db_msgadd ( v , mbp , "/%luM", vue / 1000000); 357 `__db_msgadd ( v , mbp , " %d%%", 358 `DB_PCT ( muxp -> mux_t_wa , 359 muxp -> mux_t_wa + muxp-> mux_t_nowa )); 361 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 362 `__db_msgadd ( v , mbp , " %s]", 363 dbv -> `thad_id_rg (dbenv, 364 muxp -> pid , muxp-> tid , buf )); 366 `__db_msgadd ( v , mbp , " !Own]"); 368 i( `LF_ISSET ( DB_STAT_CLEAR )) 369 `__mux_r ( v , mux ); 370 } } 373 $__mux_t_id ( loc_id ) 374 loc_id ; 376 loc_id ) { 377 MTX_APPLICATION : ("applicationllocated"); 378 MTX_DB_HANDLE : ("db handle"); 379 MTX_ENV_DBLIST : ("env dblist"); 380 MTX_ENV_HANDLE : ("env handle"); 381 MTX_ENV_REGION : ("envegion"); 382 MTX_LOCK_REGION : ("lockegion"); 383 MTX_LOGICAL_LOCK : ("logicalock"); 384 MTX_LOG_FILENAME : ("log filename"); 385 MTX_LOG_FLUSH : ("log flush"); 386 MTX_LOG_HANDLE : ("log handle"); 387 MTX_LOG_REGION : ("logegion"); 388 MTX_MPOOLFILE_HANDLE : ("mpoolfile handle"); 389 MTX_MPOOL_FH : ("mpool filehandle"); 390 MTX_MPOOL_FILE_BUCKET : ("mpool file bucket"); 391 MTX_MPOOL_HANDLE : ("mpool handle"); 392 MTX_MPOOL_HASH_BUCKET : ("mpool hash bucket"); 393 MTX_MPOOL_IO : ("mpool buffer I/O"); 394 MTX_MPOOL_REGION : ("mpoolegion"); 395 MTX_MUTEX_REGION : ("mutexegion"); 396 MTX_MUTEX_TEST : ("mutexest"); 397 MTX_REP_CHKPT : ("replication checkpoint"); 398 MTX_REP_DATABASE : ("replication database"); 399 MTX_REP_EVENT : ("replicationvent"); 400 MTX_REP_REGION : ("replicationegion"); 401 MTX_SEQUENCE : ("sequence"); 402 MTX_TWISTER : ("twister"); 403 MTX_TXN_ACTIVE : ("txnctiveist"); 404 MTX_TXN_CHKPT : ("transaction checkpoint"); 405 MTX_TXN_COMMIT : ("txn commit"); 406 MTX_TXN_MVCC : ("txn mvcc"); 407 MTX_TXN_REGION : ("txnegion"); 411 } } 421 $__mux_t_wa_fo ( v , mux , wap , nowap ) 422 ENV * v ; 423 db_mux_t mux ; 424 u_t32_t * wap , * nowap ; 426 DB_MUTEX * muxp ; 427 DB_MUTEXMGR * mtxmgr ; 428 DB_MUTEXREGION * mtxgi ; 430 mtxmgr = v -> mux_hd ; 431 mtxgi = mtxmgr -> gfo . imy ; 432 muxp = `MUTEXP_SET ( mux ); 434 * wap = muxp -> mux_t_wa ; 435 * nowap = muxp -> mux_t_nowa ; 436 } } 445 $__mux_r ( v , mux ) 446 ENV * v ; 447 db_mux_t mux ; 449 DB_MUTEX * muxp ; 450 DB_MUTEXMGR * mtxmgr ; 451 DB_MUTEXREGION * mtxgi ; 453 mtxmgr = v -> mux_hd ; 454 mtxgi = mtxmgr -> gfo . imy ; 455 muxp = `MUTEXP_SET ( mux ); 457 muxp -> mux_t_wa = muxp-> mux_t_nowa = 0; 458 } } 463 $__mux__ ( dbv , p , ags ) 464 DB_ENV * dbv ; 465 DB_MUTEX_STAT ** p ; 466 u_t32_t ags ; 468 `COMPQUIET ( p , NULL ); 469 `COMPQUIET ( ags , 0); 471 ( `__db__n_but ( dbv -> v )); 472 } } 475 $__mux__t_ ( dbv , ags ) 476 DB_ENV * dbv ; 477 u_t32_t ags ; 479 `COMPQUIET ( ags , 0); 481 ( `__db__n_but ( dbv -> v )); 482 } } @../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 (( ENV *)); 27 $__db_nomux ( v ) 28 ENV * v ; 30 `__db_rx ( v , "library build didot include support for mutexes"); 31 ( DB_OPNOTSUP ); 32 } } 35 $__mux_loc_ ( dbv , ags , dxp ) 36 DB_ENV * dbv ; 37 u_t32_t ags ; 38 db_mux_t * dxp ; 40 `COMPQUIET ( ags , 0); 41 `COMPQUIET ( dxp , NULL ); 42 ( `__db_nomux ( dbv -> v )); 43 } } 46 $__mux_loc ( v , loc_id , ags , dxp ) 47 ENV * v ; 48 loc_id ; 49 u_t32_t ags ; 50 db_mux_t * dxp ; 52 `COMPQUIET ( v , NULL ); 53 `COMPQUIET ( loc_id , 0); 54 `COMPQUIET ( ags , 0); 55 * dxp = MUTEX_INVALID ; 57 } } 60 $__mux_r ( v , mux ) 61 ENV * v ; 62 db_mux_t mux ; 64 `COMPQUIET ( v , NULL ); 65 `COMPQUIET ( mux , MUTEX_INVALID ); 66 } } 69 $__mux__ ( dbv , dx ) 70 DB_ENV * dbv ; 71 db_mux_t dx ; 73 `COMPQUIET ( dx , 0); 74 ( `__db_nomux ( dbv -> v )); 75 } } 78 $__mux_ ( v , dxp ) 79 ENV * v ; 80 db_mux_t * dxp ; 82 `COMPQUIET ( v , NULL ); 83 * dxp = MUTEX_INVALID ; 85 } } 88 $__mux_g_ign ( dbv , ig ) 89 DB_ENV * dbv ; 90 u_t32_t * ig ; 92 `COMPQUIET ( ig , NULL ); 93 ( `__db_nomux ( dbv -> v )); 94 } } 97 $__mux_g_emt ( dbv , em ) 98 DB_ENV * dbv ; 99 u_t32_t * em ; 101 `COMPQUIET ( em , NULL ); 102 ( `__db_nomux ( dbv -> v )); 103 } } 106 $__mux_g_max ( dbv , maxp ) 107 DB_ENV * dbv ; 108 u_t32_t * maxp ; 110 `COMPQUIET ( maxp , NULL ); 111 ( `__db_nomux ( dbv -> v )); 112 } } 115 $__mux_g_s_s ( dbv , s_ ) 116 DB_ENV * dbv ; 117 u_t32_t * s_ ; 119 `COMPQUIET ( s_ , NULL ); 120 ( `__db_nomux ( dbv -> v )); 121 } } 124 $__mux_lock_ ( dbv , dx ) 125 DB_ENV * dbv ; 126 db_mux_t dx ; 128 `COMPQUIET ( dx , 0); 129 ( `__db_nomux ( dbv -> v )); 130 } } 133 $__mux_t_debug_sg ( v , g , mux , ags ) 134 ENV * v ; 135 cڡ * g ; 136 db_mux_t mux ; 137 u_t32_t ags ; 139 `COMPQUIET ( v , NULL ); 140 `COMPQUIET ( g , NULL ); 141 `COMPQUIET ( mux , MUTEX_INVALID ); 142 `COMPQUIET ( ags , 0); 143 } } 146 $__mux_t_debug_s ( v , mbp , mux , ags ) 147 ENV * v ; 148 DB_MSGBUF * mbp ; 149 db_mux_t mux ; 150 u_t32_t ags ; 152 `COMPQUIET ( v , NULL ); 153 `COMPQUIET ( mbp , NULL ); 154 `COMPQUIET ( mux , MUTEX_INVALID ); 155 `COMPQUIET ( ags , 0); 156 } } 159 $__mux_t_ign ( dbv , ign ) 160 DB_ENV * dbv ; 161 u_t32_t ign ; 163 `COMPQUIET ( ign , 0); 164 ( `__db_nomux ( dbv -> v )); 165 } } 168 $__mux_t_emt ( dbv , emt ) 169 DB_ENV * dbv ; 170 u_t32_t emt ; 172 `COMPQUIET ( emt , 0); 173 ( `__db_nomux ( dbv -> v )); 174 } } 177 $__mux_t_max ( dbv , max ) 178 DB_ENV * dbv ; 179 u_t32_t max ; 181 `COMPQUIET ( max , 0); 182 ( `__db_nomux ( dbv -> v )); 183 } } 186 $__mux_t_s_s ( dbv , s_s ) 187 DB_ENV * dbv ; 188 u_t32_t s_s ; 190 `COMPQUIET ( s_s , 0); 191 ( `__db_nomux ( dbv -> v )); 192 } } 195 $__mux_t_wa_fo ( v , mux , wap , nowap ) 196 ENV * v ; 197 db_mux_t mux ; 198 u_t32_t * wap , * nowap ; 200 `COMPQUIET ( v , NULL ); 201 `COMPQUIET ( mux , MUTEX_INVALID ); 202 * wap = * nowap = 0; 203 } } 206 $__mux__ ( dbv , p , ags ) 207 DB_ENV * dbv ; 208 DB_MUTEX_STAT ** p ; 209 u_t32_t ags ; 211 `COMPQUIET ( p , NULL ); 212 `COMPQUIET ( ags , 0); 213 ( `__db_nomux ( dbv -> v )); 214 } } 217 $__mux__t_ ( dbv , ags ) 218 DB_ENV * dbv ; 219 u_t32_t ags ; 221 `COMPQUIET ( ags , 0); 222 ( `__db_nomux ( dbv -> v )); 223 } } 226 $__mux_uock_ ( dbv , dx ) 227 DB_ENV * dbv ; 228 db_mux_t dx ; 230 `COMPQUIET ( dx , 0); 231 ( `__db_nomux ( dbv -> v )); 232 } } @../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_ ( v , mux , ags ) 27 ENV * v ; 28 db_mux_t mux ; 29 u_t32_t ags ; 31 DB_ENV * dbv ; 32 DB_MUTEX * muxp ; 33 DB_MUTEXMGR * mtxmgr ; 34 DB_MUTEXREGION * mtxgi ; 35 t ; 37 `COMPQUIET ( ags , 0); 39 dbv = v ->dbenv; 40 mtxmgr = v -> mux_hd ; 41 mtxgi = mtxmgr -> gfo . imy ; 42 muxp = `MUTEXP_SET ( mux ); 45 i((( u_t ) muxp & ( dbv -> mux_ign - 1)) != 0) { 46 `__db_rx ( v , "TAS: mutexotppropriatelyligned"); 47 ( EINVAL ); 50 i( `MUTEX_INIT (& muxp -> s )) { 51 t = `__os_g_sy (); 52 `__db_sy ( v , t , "TAS: mutex initialize"); 53 ( `__os_posix_r ( t )); 55 #ifde HAVE_MUTEX_HYBRID 56 i(( t = `__db_had_mux_ ( v , 57 mux , ags | DB_MUTEX_SELF_BLOCK )) != 0) 58 ( t ); 61 } } 70 $__db_s_mux_lock ( v , mux ) 71 ENV * v ; 72 db_mux_t mux ; 74 DB_ENV * dbv ; 75 DB_MUTEX * muxp ; 76 DB_MUTEXMGR * mtxmgr ; 77 DB_MUTEXREGION * mtxgi ; 78 u_t32_t ns ; 79 #ifde HAVE_MUTEX_HYBRID 80 t ; 82 u_lg ms , max_ms ; 84 dbv = v ->dbenv; 86 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 89 mtxmgr = v -> mux_hd ; 90 mtxgi = mtxmgr -> gfo . imy ; 91 muxp = `MUTEXP_SET ( mux ); 93 `CHECK_MTX_THREAD ( v , muxp ); 95 #ifde HAVE_STATISTICS 96 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 97 ++ muxp -> mux_t_wa ; 99 ++ muxp -> mux_t_nowa ; 102 #ide HAVE_MUTEX_HYBRID 108 ms = 1; 109 max_ms = `F_ISSET ( muxp , DB_MUTEX_LOGICAL_LOCK ) ? 10 : 25; 112 lo : 113 ns = 114 mtxgi -> . _mux_s_s ; ns > 0; --nspins) { 115 #ifde HAVE_MUTEX_HPPA_MSEM_INIT 116 lock : 118 #ifde HAVE_MUTEX_S390_CC_ASSEMBLY 119 t_t zo = 0; 125 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED ) || 126 ! `MUTEX_SET (& muxp -> s )) { 131 #ifde MUTEX_PAUSE 132 MUTEX_PAUSE 137 #ifde HAVE_MUTEX_HPPA_MSEM_INIT 148 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 149 `F_SET ( muxp , DB_MUTEX_LOCKED ); 150 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 151 lock ; 159 #ifde DIAGNOSTIC 160 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 161 buf [ DB_THREADID_STRLEN ]; 162 `__db_rx ( v , 164 dbv -> `thad_id_rg (dbenv, 165 muxp -> pid , muxp-> tid , buf )); 166 ( `__v_nic ( v , EACCES )); 169 `F_SET ( muxp , DB_MUTEX_LOCKED ); 170 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 172 #ifde DIAGNOSTIC 177 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 178 `__os_yld ( v , 0, 0); 184 #ifde HAVE_MUTEX_HYBRID 190 `__os_yld ( v , 0, 0); 191 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) 192 lo ; 193 i(( t = `__db_had_mux_lock ( v , mux )) != 0) 194 ( t ); 196 `__os_yld ( v , 0, ms * US_PER_MS ); 197 i(( ms <<1> max_ms ) 198 ms = max_ms ; 207 `PANIC_CHECK ( v ); 209 lo ; 210 } } 219 $__db_s_mux_uock ( v , mux ) 220 ENV * v ; 221 db_mux_t mux ; 223 DB_ENV * dbv ; 224 DB_MUTEX * muxp ; 225 DB_MUTEXMGR * mtxmgr ; 226 DB_MUTEXREGION * mtxgi ; 227 #ifde HAVE_MUTEX_HYBRID 228 t ; 230 dbv = v ->dbenv; 232 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 235 mtxmgr = v -> mux_hd ; 236 mtxgi = mtxmgr -> gfo . imy ; 237 muxp = `MUTEXP_SET ( mux ); 239 #ifde DIAGNOSTIC 240 i(! `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 241 `__db_rx ( v , "TAS unlock failed:ocklready unlocked"); 242 ( `__v_nic ( v , EACCES )); 246 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 247 #ifde HAVE_MUTEX_HYBRID 248 `MUTEX_MEMBAR ( muxp -> ags ); 250 i( muxp -> wa && 251 ( t = `__db_had_mux_uock ( v , mux )) != 0) 252 ( t ); 254 `MUTEX_UNSET (& muxp -> s ); 257 } } 266 $__db_s_mux_deroy ( v , mux ) 267 ENV * v ; 268 db_mux_t mux ; 270 DB_MUTEX * muxp ; 271 DB_MUTEXMGR * mtxmgr ; 272 DB_MUTEXREGION * mtxgi ; 273 #ifde HAVE_MUTEX_HYBRID 274 t ; 277 i(! `MUTEX_ON ( v )) 280 mtxmgr = v -> mux_hd ; 281 mtxgi = mtxmgr -> gfo . imy ; 282 muxp = `MUTEXP_SET ( mux ); 284 `MUTEX_DESTROY (& muxp -> s ); 286 #ifde HAVE_MUTEX_HYBRID 287 i(( t = `__db_had_mux_deroy ( v , mux )) != 0) 288 ( t ); 291 `COMPQUIET ( muxp , NULL ); 293 } } @../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 ( v , muxp , ev ) 38 ENV * v ; 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 ( v , t , "Win32 createvent failed"); 67 ( t ); 68 } } 77 $__db_w32_mux_ ( v , mux , ags ) 78 ENV * v ; 79 db_mux_t mux ; 80 u_t32_t ags ; 82 DB_MUTEX * muxp ; 83 DB_MUTEXMGR * mtxmgr ; 84 DB_MUTEXREGION * mtxgi ; 86 mtxmgr = v -> 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 ( v , mux ) 103 ENV * v ; 104 db_mux_t mux ; 106 DB_ENV * dbv ; 107 DB_MUTEX * muxp ; 108 DB_MUTEXMGR * mtxmgr ; 109 DB_MUTEXREGION * mtxgi ; 110 HANDLE evt ; 111 u_t32_t ns ; 112 ms , t ; 113 #ifde MUTEX_DIAG 114 LARGE_INTEGER now ; 116 #ifde DB_WINCE 117 vީ db_thadid_t tmp_tid ; 119 dbv = v ->dbenv; 121 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 124 mtxmgr = v -> mux_hd ; 125 mtxgi = mtxmgr -> gfo . imy ; 126 muxp = `MUTEXP_SET ( mux ); 128 `CHECK_MTX_THREAD ( v , muxp ); 130 evt = NULL ; 131 ms = 50; 132 t = 0; 134 lo : 135 ns = 136 mtxgi -> . _mux_s_s ; ns > 0; --nspins) { 141 #ifde DB_WINCE 152 tmp_tid = muxp -> tid ; 153 muxp -> tid = tmp_tid ; 155 i( muxp -> s || ! `MUTEX_SET (&mutexp->tas)) { 160 #ifde MUTEX_PAUSE 161 MUTEX_PAUSE 166 #ifde DIAGNOSTIC 167 i( `F_ISSET ( muxp , DB_MUTEX_LOCKED )) { 168 buf [ DB_THREADID_STRLEN ]; 169 `__db_rx ( v , 171 dbv -> `thad_id_rg (dbenv, 172 muxp -> pid , muxp-> tid , buf )); 173 ( `__v_nic ( v , EACCES )); 176 `F_SET ( muxp , DB_MUTEX_LOCKED ); 177 dbv -> `thad_id (dbv, & muxp -> pid , &muxp-> tid ); 179 #ifde HAVE_STATISTICS 180 i( evt = NULL ) 181 ++ muxp -> mux_t_nowa ; 183 ++ muxp -> mux_t_wa ; 185 i( evt ! NULL ) { 186 `CloHd ( evt ); 187 `IlockedDeemt (& muxp -> nwas ); 188 #ifde MUTEX_DIAG 189 i( t ! WAIT_OBJECT_0 ) { 190 `QuyPfmCou (& now ); 191 `tf ("[%I64d]: Lost signal on mutex %p, " 193 now . QuadPt , muxp , muxp-> id , ms ); 198 #ifde DIAGNOSTIC 203 i( `F_ISSET ( dbv , DB_ENV_YIELDCPU )) 204 `__os_yld ( v , 0, 0); 216 i( evt = NULL ) { 217 #ifde MUTEX_DIAG 218 `QuyPfmCou (& now ); 219 `tf ("[%I64d]: Waiting on mutex %p, id %d\n", 220 now . QuadPt , muxp , muxp-> id ); 222 `IlockedInemt (& muxp -> nwas ); 223 i(( t = `g_hd ( v , muxp , & evt )) != 0) 224 r ; 226 i(( t = `WaFSgObje ( evt , ms )= WAIT_FAILED ) { 227 t = `__os_g_sy (); 228 r ; 230 i(( ms <<1> MS_PER_SEC ) 231 ms = MS_PER_SEC ; 233 `PANIC_CHECK ( v ); 234 lo ; 236 r : `__db_sy ( v , t , "Win32ock failed"); 237 ( `__v_nic ( v , `__os_posix_r ( t ))); 238 } } 247 $__db_w32_mux_uock ( v , mux ) 248 ENV * v ; 249 db_mux_t mux ; 251 DB_ENV * dbv ; 252 DB_MUTEX * muxp ; 253 DB_MUTEXMGR * mtxmgr ; 254 DB_MUTEXREGION * mtxgi ; 255 HANDLE evt ; 256 t ; 257 #ifde MUTEX_DIAG 258 LARGE_INTEGER now ; 260 dbv = v ->dbenv; 262 i(! `MUTEX_ON ( v || `F_ISSET ( dbv , DB_ENV_NOLOCKING )) 265 mtxmgr = v -> mux_hd ; 266 mtxgi = mtxmgr -> gfo . imy ; 267 muxp = `MUTEXP_SET ( mux ); 269 #ifde DIAGNOSTIC 270 i(! muxp -> s || ! `F_ISSET (muxp, DB_MUTEX_LOCKED )) { 271 `__db_rx ( v , "Win32 unlock failed:ocklready unlocked"); 272 ( `__v_nic ( v , EACCES )); 275 `F_CLR ( muxp , DB_MUTEX_LOCKED ); 276 `MUTEX_UNSET (& muxp -> s ); 278 i( muxp -> nwas > 0) { 279 i(( t = `g_hd ( v , muxp , & evt )) != 0) 280 r ; 282 #ifde MUTEX_DIAG 283 `QuyPfmCou (& now ); 284 `tf ("[%I64d]: Signalling mutex %p, id %d\n", 285 now . QuadPt , muxp , muxp-> id ); 287 i(! `PulEvt ( evt )) { 288 t = `__os_g_sy (); 289 `CloHd ( evt ); 290 r ; 293 `CloHd ( evt ); 298 r : `__db_sy ( v , t , "Win32 unlock failed"); 299 ( `__v_nic ( v , `__os_posix_r ( t ))); 300 } } 309 $__db_w32_mux_deroy ( v , mux ) 310 ENV * v ; 311 db_mux_t mux ; 314 } } @../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 ENV * gv ; 77 size_t gn ; 79 u_t8_t * ggm_addr ; 80 u_t8_t * glm_addr ; 81 u_t8_t * gtm_addr ; 83 #ifde MUTEX_THREAD_TEST 84 os_thad_t * gkid ; 85 os_thad_t gwak ; 88 #idef HAVE_MMAP 89 u_t grocs = 1; 90 u_t ghads = 20; 91 #if MUTEX_THREAD_TEST 92 u_t grocs = 5; 93 u_t ghads = 4; 95 u_t grocs = 20; 96 u_t ghads = 1; 99 u_t gmaxlocks = 20; 100 u_t gocks = 10000; 101 gvbo ; 103 cڡ * gogme ; 105 da_off ( u_t8_t *, DB_FH *); 106 da_ ( u_t8_t **, u_t8_**, u_t8_**, DB_FH **, ); 107 lock_t ( u_lg ); 108 lock_wa (); 109 os_pid_t os_awn (const *, *const[]); 110 os_wa ( os_pid_t *, u_t ); 111 * run_had (*); 112 * run_wthad (*); 113 os_pid_t awn_oc ( u_lg , *, *); 114 tm_v_o (); 115 tm_v_ (); 116 tm_mux_deroy (); 117 tm_mux_ (); 118 tm_mux_s (); 119 uge (); 120 wakeup_t ( u_lg ); 121 wakeup_wa (); 124 $ma ( gc , gv ) 125 gc ; 126 * gv []; 128 um { LOCKER , WAKEUP , PARENT } y ; 129 td ; 130 * ݏrg ; 131 os_pid_t wakeup_pid , * pids ; 132 u_lg id ; 133 u_t i ; 134 DB_FH * fhp , * m_fhp ; 135 ch , r ; 136 * p , * tmth , cmd [1024]; 138 i(( ogme = `__db_h ( gv [0])= NULL ) 139 ogme = gv [0]; 141 ++ ogme ; 143 y = PARENT ; 144 id = 0; 145 tmth = gv [0]; 146 ( ch = `gt ( gc , gv , "l:n:p:T:t:v")! EOF ) 147 ch ) { 149 maxlocks = ( u_t ) `oi ( ݏrg ); 152 ocks = ( u_t ) `oi ( ݏrg ); 155 rocs = ( u_t ) `oi ( ݏrg ); 158 i(( hads = ( u_t ) `oi ( ݏrg )) == 0) 159 hads = 1; 160 #i! `defed ( MUTEX_THREAD_TEST ) 161 i( hads != 1) { 162 `rtf ( dr , 164 ogme ); 165 ( EXIT_FAILURE ); 170 i(! `memcmp ( ݏrg , "locker", ("locker") - 1)) 171 y = LOCKER ; 173 ! `memcmp ( ݏrg , "wakeup", ("wakeup") - 1)) 174 y = WAKEUP ; 176 ( `uge ()); 177 i(( p = `rchr ( ݏrg , '=')= NULL ) 178 ( `uge ()); 179 id = ( u_lg ) `oi ( p + 1); 182 vbo = 1; 186 ( `uge ()); 188 gc - td ; 189 gv + td ; 195 i( rocs =1 && hads == 1) { 196 `rtf ( dr , 198 ogme ); 199 ( EXIT_FAILURE ); 202 n = ( TM * (1 + hads * rocs + maxlocks ); 209 i( y = LOCKER ||ty = WAKEUP ) { 210 `__os_yld ( v , 3, 0); 212 `d (( u_t ) `time ( NULL % (u_t) `gpid ()); 214 i( `tm_v_ () != 0) 215 `ex ( EXIT_FAILURE ); 217 `da_ (& gm_addr , & tm_addr , & lm_addr , & m_fhp , 0); 218 i( vbo ) 219 `tf ( 221 ( u_lg ) gm_addr , (u_lg) tm_addr , (u_lg) lm_addr ); 223 i(( y = LOCKER ? 224 `lock_t ( id : `wakeup_t (id)) != 0) 225 `ex ( EXIT_FAILURE ); 226 i(( y = LOCKER ? `lock_wa (: `wakeup_wa ()) != 0) 227 `ex ( EXIT_FAILURE ); 229 `da_off ( gm_addr , m_fhp ); 231 `tm_v_o (); 233 `ex ( EXIT_SUCCESS ); 241 `tf ( cmd , (cmd), "rm -r%s", TESTDIR ); 242 () `syem ( cmd ); 243 `tf ( cmd , (cmd), "mkd %s", TESTDIR ); 244 () `syem ( cmd ); 246 `tf ( 248 ogme , rocs , hads , ocks , maxlocks ); 249 `tf ("%s: backg d%lu bys\n", ogme , ( u_lg ) n ); 251 i( `tm_v_ () != 0) 252 `ex ( EXIT_FAILURE ); 254 `da_ (& gm_addr , & tm_addr , & lm_addr , & m_fhp , 1); 255 i( vbo ) 256 `tf ( 258 ( u_lg ) gm_addr , (u_lg) tm_addr , (u_lg) lm_addr ); 260 `tm_mux_ (); 262 i( rocs > 1) { 264 i(( pids = `oc ( rocs , ( os_pid_t ))= NULL ) { 265 `rtf ( dr , "%s: %s\n", ogme , ` ( o )); 266 ; 270 i = 0; i < rocs ; ++i) { 271 i(( pids [ i ] = 272 `awn_oc ( id , tmth , "lock")= OS_BAD_PID ) { 273 `rtf ( dr , 274 "%s: faedإawlock\n", ogme ); 275 ; 277 id + hads ; 281 i(( wakeup_pid = 282 `awn_oc ( id , tmth , "wakeup")= OS_BAD_PID ) { 283 `rtf ( dr , 284 "%s: faedإawwak\n", ogme ); 285 ; 287 ++ id ; 290 i(( r = `os_wa ( pids , rocs )) != 0) { 291 `rtf ( dr , "%s:ocker wait failed with %d\n", 292 ogme , r ); 293 ; 297 i(( r = `__os_ݒ ( 298 v , MT_FILE_QUIT , 0, DB_OSO_CREATE , 0664, & fhp )) != 0) { 299 `rtf ( dr , 300 "%s: o%s\n", ogme , `db_ ( r )); 301 ; 303 () `__os_ohd ( v , fhp ); 306 i(( r = `os_wa (& wakeup_pid , 1)) != 0) { 307 `rtf ( dr , "%s: %lu:xited %d\n", 308 ogme , ( u_lg ) wakeup_pid , r ); 309 ; 313 i( `lock_t (0) != 0) 314 ; 317 i( `wakeup_t ( hads ) != 0) 318 ; 321 i( `lock_wa () != 0) 322 ; 325 i(( r = `__os_ݒ ( 326 v , MT_FILE_QUIT , 0, DB_OSO_CREATE , 0664, & fhp )) != 0) { 327 `rtf ( dr , 328 "%s: o%s\n", ogme , `db_ ( r )); 329 ; 331 () `__os_ohd ( v , fhp ); 334 i( `wakeup_wa () != 0) 335 ; 338 `tm_mux_s (); 339 `tm_mux_deroy (); 341 `da_off ( gm_addr , m_fhp ); 343 `tm_v_o (); 345 `tf ("%s:e suceded\n", ogme ); 346 ( EXIT_SUCCESS ); 348 : `tf ("%s: FAILED!\n", ogme ); 349 ( EXIT_FAILURE ); 350 } } 353 $lock_t ( id ) 354 u_lg id ; 356 #i `defed ( MUTEX_THREAD_TEST ) 357 u_t i ; 358 r ; 364 i(( kid = 365 ( os_thad_t *) `oc ((os_thad_t), hads )= NULL ) { 366 `rtf ( dr , "%s: %s\n", ogme , ` ( o )); 369 i = 0; i < hads ; i++) 370 i(( r = `os_thad_ ( 371 & kid [ i ], NULL , run_had , (*)( id + i))) != 0) { 372 `rtf ( dr , "%s: failed spawninghread: %s\n", 373 ogme , `db_ ( r )); 378 ( `run_had ((*) id = NULL ? 0 : 1); 380 } } 383 $lock_wa () 385 #i `defed ( MUTEX_THREAD_TEST ) 386 u_t i ; 387 * ; 390 i = 0; i < hads ; i++) { 391 () `os_thad_jo ( kid [ i ], & ); 392 i( ! NULL ) { 393 `rtf ( dr , 394 "%s:hadxed wh\n", ogme ); 398 ` ( kid ); 401 } } 404 $run_had ( g ) 405 * g ; 407 TM * gp , * mp , * ; 408 u_lg id , tid ; 409 u_t lock , ; 410 r , i ; 412 id = ( u_t ) g ; 413 #i `defed ( MUTEX_THREAD_TEST ) 414 tid = ( u_lg ) `os_thad_lf (); 416 tid = 0; 418 `tf ("Locker: ID %03lu (PID: %lu; TID: %lx)\n", 419 id , ( u_lg ) `gpid (), tid ); 421 gp = ( TM *) gm_addr ; 422 = ( TM *)( tm_addr + id * (TM)); 424 = ocks ;l > 0;) { 426 lock = ( u_t ) `nd (% maxlocks ; 427 mp = ( TM *)( lm_addr + lock * (TM)); 428 i( vbo ) 429 `tf ("%03lu:ock %d (mtx: %lu)\n", 430 id , lock , ( u_lg ) mp -> mux ); 432 i(( r = dbv -> `mux_lock (dbv, mp -> mux )) != 0) { 433 `rtf ( dr , "%s: %03lu:ever gotock %d: %s\n", 434 ogme , id , lock , `db_ ( r )); 437 i( mp -> id != 0) { 438 `rtf ( dr , 440 ogme , id , lock , mp ->id); 443 mp -> id = id; 449 i = 0; i < 3; ++i) { 450 `__os_yld ( v , 0, ( u_lg ) `nd () % 3); 451 i( mp -> id != id) { 452 `rtf ( dr , 454 ogme , mp -> id , lock , id); 469 i(( r = dbv -> `mux_lock (dbv, gp -> mux )) != 0) { 470 `rtf ( dr , "%s: %03lu: globalock: %s\n", 471 ogme , id , `db_ ( r )); 474 i( -> id != 0 &&p->id != id) { 475 `rtf ( dr , 477 ogme , id , ->id); 480 -> id = id; 481 i( vbo ) 482 `tf ("%03lu: self-blocking (mtx: %lu)\n", 483 id , ( u_lg ) -> mux ); 484 i( -> wakeme ) { 485 `rtf ( dr , 487 ogme , id ); 490 -> wakeme = 1; 491 i(( r = dbv -> `mux_uock (dbv, gp -> mux )) != 0) { 492 `rtf ( dr , 494 ogme , id , `db_ ( r )); 497 i(( r = dbv -> `mux_lock (dbv, -> mux )) != 0) { 498 `rtf ( dr , "%s: %03lu:er-threadock: %s\n", 499 ogme , id , `db_ ( r )); 503 i( -> wakeme ) { 504 `rtf ( dr , "%s: %03lu: wakeup flagot cleared\n", 505 ogme , id ); 509 i( vbo ) 510 `tf ("%03lu:elease %d (mtx: %lu)\n", 511 id , lock , ( u_lg ) mp -> mux ); 514 mp -> id = 0; 515 i(( r = dbv -> `mux_uock (dbv, mp -> mux )) != 0) { 516 `rtf ( dr , 518 ogme , id , `db_ ( r )); 522 i(-- % 100 == 0) 523 `tf ("%03lu: %d\n", id , ); 526 ( NULL ); 527 } } 530 $wakeup_t ( id ) 531 u_lg id ; 533 #i `defed ( MUTEX_THREAD_TEST ) 534 r ; 539 i(( r = `os_thad_ ( 540 & wak , NULL , run_wthad , (*) id )) != 0) { 541 `rtf ( dr , "%s: failed spawning wakeuphread: %s\n", 542 ogme , `db_ ( r )); 547 ( `run_wthad ((*) id = NULL ? 0 : 1); 549 } } 552 $wakeup_wa () 554 #i `defed ( MUTEX_THREAD_TEST ) 555 * ; 560 () `os_thad_jo ( wak , & ); 561 i( ! NULL ) { 562 `rtf ( dr , 563 "%s: wakeuthadxed wh\n", ogme ); 568 } } 575 $run_wthad ( g ) 576 * g ; 578 TM * gp , * ; 579 u_lg id , tid ; 580 u_t check_id ; 581 r ; 583 id = ( u_t ) g ; 584 #i `defed ( MUTEX_THREAD_TEST ) 585 tid = ( u_lg ) `os_thad_lf (); 587 tid = 0; 589 `tf ("Wakeup: ID %03lu (PID: %lu; TID: %lx)\n", 590 id , ( u_lg ) `gpid (), tid ); 592 gp = ( TM *) gm_addr ; 595 check_id = 0;; ++check_id) { 597 i( `__os_exis ( v , MT_FILE_QUIT , NULL ) == 0) 601 i( check_id = hads * rocs ) 602 check_id = 0; 605 = ( TM *)( tm_addr + check_id * (TM)); 606 i(! -> wakeme ) 609 i( vbo ) { 610 `tf ("%03lu: wakeuphread %03lu (mtx: %lu)\n", 611 id , ->id, ( u_lg p-> mux ); 612 () `fush ( dout ); 616 i(( r = dbv -> `mux_lock (dbv, gp -> mux )) != 0) { 617 `rtf ( dr , "%s: wakeup: globalock: %s\n", 618 ogme , `db_ ( r )); 622 -> wakeme = 0; 623 i(( r = dbv -> `mux_uock (dbv, -> mux )) != 0) { 624 `rtf ( dr , "%s: wakeup: unlock: %s\n", 625 ogme , `db_ ( r )); 629 i(( r = dbv -> `mux_uock (dbv, gp -> mux )) != 0) { 630 `rtf ( dr , "%s: wakeup: global unlock: %s\n", 631 ogme , `db_ ( r )); 635 `__os_yld ( v , 0, ( u_lg ) `nd () % 3); 637 ( NULL ); 638 } } 645 $tm_v_ () 647 u_t32_t ags ; 648 t ; 649 * home ; 655 i(( t = `db_v_ (& dbv , 0)) != 0) { 656 `rtf ( dr , "%s: %s\n", ogme , `db_ ( t )); 659 v = dbv ->env; 660 dbv -> `t_rfe (dbv, dr ); 661 dbv -> `t_fx (dbv, ogme ); 664 i(( t = dbv -> `mux_t_emt (dbenv, 665 1 + hads * rocs + maxlocks )) != 0) { 666 dbv -> `r (dbv, t , "dbenv->mutex_set_increment"); 670 ags = DB_CREATE ; 671 i( rocs == 1) { 672 home = NULL ; 673 ags | DB_PRIVATE ; 675 home = TESTDIR ; 676 i( hads != 1) 677 ags | DB_THREAD ; 678 i(( t = dbv -> `ݒ (dbv, home , ags , 0)) != 0) { 679 dbv -> `r (dbv, t , "vmݒ: %s", home ); 684 } } 691 $tm_v_o () 693 () dbv -> `o (dbenv, 0); 694 } } 701 $tm_mux_ () 703 TM * mp ; 704 u_t i ; 705 r ; 707 i( vbo ) 708 `tf ("Allocatehe global mutex: "); 709 mp = ( TM *) gm_addr ; 710 i(( r = dbv -> `mux_loc (dbv, 0, & mp -> mux )) != 0) { 711 `rtf ( dr , "%s: DB_ENV->mutex_alloc (global): %s\n", 712 ogme , `db_ ( r )); 713 `ex ( EXIT_FAILURE ); 715 i( vbo ) 716 `tf ("%lu\n", ( u_lg ) mp -> mux ); 718 i( vbo ) 719 `tf ( 721 hads * rocs ); 722 i = 0; i < hads * rocs ; ++i) { 723 mp = ( TM *)( tm_addr + i * (TM)); 724 i(( r = dbv -> `mux_loc ( 725 dbv , DB_MUTEX_SELF_BLOCK , & mp -> mux )) != 0) { 726 `rtf ( dr , 728 ogme , i , `db_ ( r )); 729 `ex ( EXIT_FAILURE ); 731 i(( r = dbv -> `mux_lock (dbv, mp -> mux )) != 0) { 732 `rtf ( dr , 734 ogme , i , `db_ ( r )); 735 `ex ( EXIT_FAILURE ); 737 i( vbo ) 738 `tf ("%lu ", ( u_lg ) mp -> mux ); 740 i( vbo ) 741 `tf ("\n"); 743 i( vbo ) 744 `tf ("Ao %d-lock muxes: ", maxlocks ); 745 i = 0; i < maxlocks ; ++i) { 746 mp = ( TM *)( lm_addr + i * (TM)); 747 i(( r = dbv -> `mux_loc (dbv, 0, & mp -> mux )) != 0) { 748 `rtf ( dr , 750 ogme , i , `db_ ( r )); 751 `ex ( EXIT_FAILURE ); 753 i( vbo ) 754 `tf ("%lu ", ( u_lg ) mp -> mux ); 756 i( vbo ) 757 `tf ("\n"); 758 } } 765 $tm_mux_deroy () 767 TM * gp , * mp ; 768 u_t i ; 769 r ; 771 i( vbo ) 772 `tf ("Destroyhe global mutex.\n"); 773 gp = ( TM *) gm_addr ; 774 i(( r = dbv -> `mux_ (dbv, gp -> mux )) != 0) { 775 `rtf ( dr , "%s: DB_ENV->mutex_free (global): %s\n", 776 ogme , `db_ ( r )); 777 `ex ( EXIT_FAILURE ); 780 i( vbo ) 781 `tf ("Destroyheer-thread mutexes.\n"); 782 i = 0; i < hads * rocs ; ++i) { 783 mp = ( TM *)( tm_addr + i * (TM)); 784 i(( r = dbv -> `mux_ (dbv, mp -> mux )) != 0) { 785 `rtf ( dr , 787 ogme , i , `db_ ( r )); 788 `ex ( EXIT_FAILURE ); 792 i( vbo ) 793 `tf ("Destroyheer-lock mutexes.\n"); 794 i = 0; i < maxlocks ; ++i) { 795 mp = ( TM *)( lm_addr + i * (TM)); 796 i(( r = dbv -> `mux_ (dbv, mp -> mux )) != 0) { 797 `rtf ( dr , 799 ogme , i , `db_ ( r )); 800 `ex ( EXIT_FAILURE ); 803 } } 810 $tm_mux_s () 812 #ifde HAVE_STATISTICS 813 TM * mp ; 814 u_t32_t t_wa , t_nowa ; 815 u_t i ; 817 `tf ("Per-lock mutex statistics.\n"); 818 i = 0; i < maxlocks ; ++i) { 819 mp = ( TM *)( lm_addr + i * (TM)); 820 `__mux_t_wa_fo ( v , mp -> mux , & t_wa , & t_nowa ); 821 `tf ("mux %2d: wa: %lu;wa %lu\n", i , 822 ( u_lg ) t_wa , (u_lg) t_nowa ); 825 } } 832 $da_ ( gm_add , tm_add , lm_add , fh , ) 833 u_t8_t ** gm_add , ** tm_add , ** lm_add ; 834 DB_FH ** fh ; 835 ; 837 DB_FH * fhp ; 838 size_t nwre ; 839 r ; 840 * addr ; 842 fhp = NULL ; 847 i( rocs == 1) { 848 i( ) { 849 i(( r = 850 `__os_oc ( v , ( size_t ) n , 1, & addr )) != 0) 851 `ex ( EXIT_FAILURE ); 853 `rtf ( dr , 855 ogme ); 856 `ex ( EXIT_FAILURE ); 859 i( ) { 860 i( vbo ) 861 `tf ("Createhe backing file.\n"); 863 i(( r = `__os_ݒ ( v , MT_FILE , 0, 864 DB_OSO_CREATE | DB_OSO_TRUNC , 0666, & fhp )) == -1) { 865 `rtf ( dr , "%s: %s: open: %s\n", 866 ogme , MT_FILE , `db_ ( r )); 867 `ex ( EXIT_FAILURE ); 870 i(( r = `__os_ek ( v , fhp , 0, 0, n )) != 0 || 871 ( r = 872 `__os_wre ( v , fhp , & r , 1, & nwre )) != 0 || 873 nwre != 1) { 874 `rtf ( dr , "%s: %s: seek/write: %s\n", 875 ogme , MT_FILE , `db_ ( r )); 876 `ex ( EXIT_FAILURE ); 879 i(( r = `__os_ݒ ( v , MT_FILE , 0, 0, 0, & fhp )) != 0) 880 `ex ( EXIT_FAILURE ); 882 i(( r = 883 `__os_mfe ( v , MT_FILE , fhp , n , 0, & addr )) != 0) 884 `ex ( EXIT_FAILURE ); 887 * gm_add = ( u_t8_t *) addr ; 888 addr = ( u_t8_t *dd+ ( TM ); 889 * tm_add = ( u_t8_t *) addr ; 890 addr = ( u_t8_t *dd+ ( TM * ( hads * rocs ); 891 * lm_add = ( u_t8_t *) addr ; 893 i( fh ! NULL ) 894 * fh = fhp ; 895 } } 902 $da_off ( addr , fhp ) 903 u_t8_t * addr ; 904 DB_FH * fhp ; 906 i( rocs == 1) 907 `__os_ ( v , addr ); 909 i( `__os_unmfe ( v , addr , n ) != 0) 910 `ex ( EXIT_FAILURE ); 911 i( `__os_ohd ( v , fhp ) != 0) 912 `ex ( EXIT_FAILURE ); 914 } } 921 $uge () 923 `rtf ( dr , "uge: %%s\n\t%s\n", ogme , 926 ( EXIT_FAILURE ); 927 } } 934 $os_wa ( ocs , n ) 935 os_pid_t * ocs ; 936 u_t n ; 938 u_t i ; 939 us ; 940 #i `defed ( DB_WIN32 ) 941 DWORD t ; 944 us = 0; 946 #i `defed ( DB_WIN32 ) 948 t = `WaFMuɝObjes ( n , ocs , FALSE , INFINITE ); 949 i = t - WAIT_OBJECT_0 ; 950 i( i < 0 || i > n ) 951 ( `__os_posix_r ( `__os_g_sy ())); 953 i(( `GExCodePross ( ocs [ i ], & t ) == 0) || (ret != 0)) 954 ( t ); 957 ++ i < n ) 958 ocs [ i - 1] =rocs[i]; 959 } -- n ); 960 #i! `defed ( HAVE_VXWORKS ) 962 i( `wa (& us ) == -1) 963 ( `__os_posix_r ( `__os_g_sy ())); 965 i( `WIFEXITED ( us =0 || `WEXITSTATUS (status) != 0) { 966 i = 0; i < n ; i++) 967 () `kl ( ocs [ i ], SIGKILL ); 968 ( `WEXITSTATUS ( us )); 970 } -- n ); 974 } } 976 os_pid_t 977 $awn_oc ( id , tmth , tyg ) 978 u_lg id ; 979 * tmth , * tyg ; 981 *cڡ vbuf = vbo ? "-v" : NULL ; 982 * gs [13], lbuf [16], nbuf [16], pbuf [16], tbuf [16], Tbuf [256]; 984 gs [0] = tmth ; 985 gs [1] = "-l"; 986 `tf ( lbuf , buf), "%d", maxlocks ); 987 gs [2] = lbuf ; 988 gs [3] = "-n"; 989 `tf ( nbuf , buf), "%d", ocks ); 990 gs [4] = nbuf ; 991 gs [5] = "-p"; 992 `tf ( pbuf , buf), "%d", rocs ); 993 gs [6] = pbuf ; 994 gs [7] = "-t"; 995 `tf ( tbuf , buf), "%d", hads ); 996 gs [8] = tbuf ; 997 gs [9] = "-T"; 998 `tf ( Tbuf , (Tbuf), "%s=%lu", tyg , id ); 999 gs [10] = Tbuf ; 1000 gs [11] = vbuf ; 1001 gs [12] = NULL ; 1003 ( `os_awn ( tmth , gs )); 1004 } } 1006 os_pid_t 1007 $os_awn ( th , gv ) 1008 cڡ * th ; 1009 *cڡ gv []; 1011 os_pid_t pid ; 1012 us ; 1014 `COMPQUIET ( pid , 0); 1015 `COMPQUIET ( us , 0); 1017 #ifde HAVE_VXWORKS 1018 `rtf ( dr , "%s: os_awn su܋d f VxWks.\n", ogme ); 1019 ( OS_BAD_PID ); 1020 #i `defed ( HAVE_QNX ) 1029 ( `awnv ( P_NOWAIT , th , gv )); 1030 #i `defed ( DB_WIN32 ) 1031 ( os_pid_t )( `_awnv ( P_NOWAIT , th , gv )); 1033 i(( pid = `fk ()) != 0) { 1034 i( pid == -1) 1035 ( OS_BAD_PID ); 1036 ( pid ); 1038 () `execv ( th , gv ); 1039 `ex ( EXIT_FAILURE ); 1042 } } @../os/os_abort.c 9 ~"db_cfig.h " 11 ~"db_t.h " 19 $__os_abt ( v ) 20 ENV * v ; 22 `__os_ack ( v ); 24 #ifde HAVE_ABORT 25 `abt (); 28 #ifde SIGABRT 29 () `i ( SIGABRT ); 31 `ex (1); 33 } } @../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_addrinfo.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 29 $__os_gaddrfo ( v , nodame , pt , rvme , hts , s ) 30 ENV * v ; 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 ( v , "%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 ( v , t , 83 nodame = NULL ? "" :odame, pt ); 84 ( `__os_posix_r ( t )); 97 #ifde HAVE_HSTRERROR 98 `__db_rx ( v , 100 nodame = NULL ? "" :odame, pt , 101 `h ( h_o )); 103 `__db_rx ( v , 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 ( v , 1, ( ADDRINFO ), & sw )) != 0) 129 ( t ); 130 i(( t = `__os_mloc ( v , ( s ), & sw -> ai_addr )) != 0) { 131 `__os_ ( v , 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 $__os_addrfo ( v , ai ) 155 ENV * v ; 156 ADDRINFO * ai ; 158 #ifde HAVE_GETADDRINFO 159 `COMPQUIET ( v , NULL ); 161 `addrfo ( ai ); 163 ADDRINFO * xt , * tmddr ; 165 xt = ai ;ex! NULL ;ex tmddr ) { 166 i( xt -> ai_nme ! NULL ) 167 `__os_ ( v , xt -> ai_nme ); 169 i( xt -> ai_addr ! NULL ) 170 `__os_ ( v , xt -> ai_addr ); 172 tmddr = xt -> ai_xt ; 173 `__os_ ( v , xt ); 176 } } @../os/os_alloc.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 #ifde DIAGNOSTIC 14 __os_gud __P (( ENV *)); 17 size_t msize ; 18 mign ; 19 } tdb_locfo_t ; 50 $__os_umloc ( v , size , ܕ ) 51 ENV * v ; 52 size_t size ; 53 * ܕ ; 55 DB_ENV * dbv ; 56 t ; 58 dbv = v = NULL ? NULL :nv->dbenv; 61 i( size == 0) 62 ++ size ; 64 i( dbv = NULL || dbv-> db_mloc == NULL) { 65 i( `DB_GLOBAL ( j_mloc ! NULL ) 66 *(**) ܕ = `DB_GLOBAL ( j_mloc )( size ); 68 *(**) ܕ = `mloc ( size ); 69 i(*(**) ܕ = NULL ) { 73 i(( t = `__os_g_o_t_zo ()) == 0) { 74 t = ENOMEM ; 75 `__os_t_o ( ENOMEM ); 77 `__db_r ( v , t , "mloc: %lu", ( u_lg ) size ); 78 ( t ); 83 i((*(**) ܕ = dbv -> `db_mloc ( size )= NULL ) { 84 `__db_rx ( v , 86 ( ENOMEM ); 90 } } 101 $__os_uloc ( v , size , ܕ ) 102 ENV * v ; 103 size_t size ; 104 * ܕ ; 106 DB_ENV * dbv ; 107 t ; 108 * r ; 110 dbv = v = NULL ? NULL :nv->dbenv; 111 r = *(**) ܕ ; 114 i( size == 0) 115 ++ size ; 117 i( dbv = NULL || dbv-> db_loc == NULL) { 118 i( r = NULL ) 119 ( `__os_umloc ( v , size , ܕ )); 121 i( `DB_GLOBAL ( j_loc ! NULL ) 122 *(**) ܕ = `DB_GLOBAL ( j_loc )( r , size ); 124 *(**) ܕ = `loc ( r , size ); 125 i(*(**) ܕ = NULL ) { 129 i(( t = `__os_g_o_t_zo ()) == 0) { 130 t = ENOMEM ; 131 `__os_t_o ( ENOMEM ); 133 `__db_r ( v , t , "loc: %lu", ( u_lg ) size ); 134 ( t ); 139 i((*(**) ܕ = dbv -> `db_loc ( r , size )= NULL ) { 140 `__db_rx ( v , 142 ( ENOMEM ); 146 } } 157 $__os_u ( v , r ) 158 ENV * v ; 159 * r ; 161 DB_ENV * dbv ; 163 dbv = v = NULL ? NULL :nv->dbenv; 165 i( dbv ! NULL && dbv-> db_ != NULL) 166 dbv -> `db_ ( r ); 167 i( `DB_GLOBAL ( j_ ! NULL ) 168 `DB_GLOBAL ( j_ )( r ); 170 ` ( r ); 171 } } 180 $__os_rdup ( v , r , ܕ ) 181 ENV * v ; 182 cڡ * r ; 183 * ܕ ; 185 size_t size ; 186 t ; 187 * p ; 189 *(**) ܕ = NULL ; 191 size = ` ( r ) + 1; 192 i(( t = `__os_mloc ( v , size , & p )) != 0) 193 ( t ); 195 `memy ( p , r , size ); 197 *(**) ܕ = p ; 199 } } 208 $__os_oc ( v , num , size , ܕ ) 209 ENV * v ; 210 size_t num , size ; 211 * ܕ ; 213 t ; 215 size * num ; 216 i(( t = `__os_mloc ( v , size , ܕ )) != 0) 217 ( t ); 219 `memt (*(**) ܕ , 0, size ); 222 } } 231 $__os_mloc ( v , size , ܕ ) 232 ENV * v ; 233 size_t size ; 234 * ܕ ; 236 t ; 237 * p ; 239 *(**) ܕ = NULL ; 242 i( size == 0) 243 ++ size ; 245 #ifde DIAGNOSTIC 247 size +( db_locfo_t ) + 1; 250 i( `DB_GLOBAL ( j_mloc ! NULL ) 251 p = `DB_GLOBAL ( j_mloc )( size ); 253 p = `mloc ( size ); 254 i( p = NULL ) { 261 i(( t = `__os_g_o_t_zo ()) == 0) { 262 t = ENOMEM ; 263 `__os_t_o ( ENOMEM ); 265 `__db_r ( v , t , "mloc: %lu", ( u_lg ) size ); 266 ( t ); 269 #ifde DIAGNOSTIC 271 `memt ( p , CLEAR_BYTE , size ); 278 (( u_t8_t *) p )[ size - 1] = CLEAR_BYTE ; 280 (( db_locfo_t *) p )-> size = size; 281 p = &(( db_locfo_t *)p)[1]; 283 *(**) ܕ = p ; 286 } } 295 $__os_loc ( v , size , ܕ ) 296 ENV * v ; 297 size_t size ; 298 * ܕ ; 300 t ; 301 * p , * r ; 303 r = *(**) ܕ ; 306 i( size == 0) 307 ++ size ; 310 i( r = NULL ) 311 ( `__os_mloc ( v , size , ܕ )); 313 #ifde DIAGNOSTIC 315 size +( db_locfo_t ) + 1; 318 r = &(( db_locfo_t *)ptr)[-1]; 321 size_t s ; 323 s = (( db_locfo_t *) r )-> size ; 324 i((( u_t8_t *) r )[ s - 1] ! CLEAR_BYTE ) 325 `__os_gud ( v ); 333 i( `DB_GLOBAL ( j_loc ! NULL ) 334 p = `DB_GLOBAL ( j_loc )( r , size ); 336 p = `loc ( r , size ); 337 i( p = NULL ) { 344 i(( t = `__os_g_o_t_zo ()) == 0) { 345 t = ENOMEM ; 346 `__os_t_o ( ENOMEM ); 348 `__db_r ( v , t , "loc: %lu", ( u_lg ) size ); 349 ( t ); 351 #ifde DIAGNOSTIC 352 (( u_t8_t *) p )[ size - 1] = CLEAR_BYTE ; 354 (( db_locfo_t *) p )-> size = size; 355 p = &(( db_locfo_t *)p)[1]; 358 *(**) ܕ = p ; 361 } } 370 $__os_ ( v , r ) 371 ENV * v ; 372 * r ; 374 #ifde DIAGNOSTIC 375 size_t size ; 382 i( r = NULL ) 385 #ifde DIAGNOSTIC 390 r = &(( db_locfo_t *)ptr)[-1]; 391 size = (( db_locfo_t *) r )->size; 392 i((( u_t8_t *) r )[ size - 1] ! CLEAR_BYTE ) 393 `__os_gud ( v ); 396 i( size != 0) 397 `memt ( r , CLEAR_BYTE , size ); 399 `COMPQUIET ( v , NULL ); 402 i( `DB_GLOBAL ( j_ ! NULL ) 403 `DB_GLOBAL ( j_ )( r ); 405 ` ( r ); 406 } } 408 #ifde DIAGNOSTIC 414 $__os_gud ( v ) 415 ENV * v ; 417 `__db_rx ( v , "Guard byte incorrect during free"); 418 `__os_abt ( v ); 420 } } 453 $__ua_memy ( d , c , n ) 454 * d ; 455 cڡ * c ; 456 size_t n ; 458 ((*) `memy ( d , c , n )); 459 } } @../os/os_clock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_gtime ( v , , mic ) 21 ENV * v ; 22 db_timeec * ; 23 mic ; 25 cڡ * sc ; 26 t ; 28 #i `defed ( HAVE_CLOCK_GETTIME ) 29 #i `defed ( HAVE_CLOCK_MONOTONIC ) 30 i( mic ) 31 `RETRY_CHK (( `ock_gtime ( 32 CLOCK_MONOTONIC , ( timeec *) )), t ); 35 `RETRY_CHK (( `ock_gtime ( 36 CLOCK_REALTIME , ( timeec *) )), t ); 38 `RETRY_CHK (( `ock_gtime ( CLOCK_REALTIME , ( timeec *) )), t ); 39 i( t != 0) { 40 sc = "clock_gettime"; 41 r ; 43 #i `defed ( HAVE_GETTIMEOFDAY ) 44 timev v ; 46 `RETRY_CHK (( `gtimeofday (& v , NULL )), t ); 47 i( t != 0) { 48 sc = "gettimeofday"; 49 r ; 52 -> tv_c = v .tv_sec; 53 -> tv_nc = v . tv_uc * NS_PER_US ; 54 #i `defed ( HAVE_TIME ) 55 time_t now ; 57 `RETRY_CHK (( `time (& now =( time_t )-1 ? 1 : 0), t ); 58 i( t != 0) { 59 sc = "time"; 60 r ; 63 -> tv_c = now ; 64 -> tv_nc = 0; 66 NO AVAILABLE CLOCK IMPLEMENTATION 68 `COMPQUIET ( mic , 0); 71 r : `__db_sy ( v , t , "%s", sc ); 72 () `__v_nic ( v , `__os_posix_r ( t )); 73 } } @../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_cpu.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 > 25 u_t32_t 26 $__os_u_cou () 28 #i `defed ( HAVE_PSTAT_GETDYNAMIC ) 32 p_dymic psd ; 34 (( u_t32_t ) `p_gdymic (& psd , 35 ( psd ), ( size_t )1, 0=-1 ? 1 :sd. psd_oc_t ); 36 #i `defed ( HAVE_SYSCONF && defed( _SC_NPROCESSORS_ONLN ) 40 roc ; 42 roc = `syscf ( _SC_NPROCESSORS_ONLN ); 43 (( u_t32_t )( roc > 1 ?proc : 1)); 47 } } @../os/os_ctime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_ime ( tod , time_buf ) 21 cڡ time_t * tod ; 22 * time_buf ; 24 time_buf [ CTIME_BUFLEN - 1] = '\0'; 34 #i `defed ( HAVE_VXWORKS ) 36 size_t bu = CTIME_BUFLEN ; 37 () `ime_r ( tod , time_buf , & bu ); 39 #i `defed ( HAVE_CTIME_R_3ARG ) 40 () `ime_r ( tod , time_buf , CTIME_BUFLEN ); 41 #i `defed ( HAVE_CTIME_R ) 42 () `ime_r ( tod , time_buf ); 44 () `y ( time_buf , `ime ( tod ), CTIME_BUFLEN - 1); 46 ( time_buf ); 47 } } @../os/os_dir.c 9 ~"db_cfig.h " 11 #__INCLUDE_DIRECTORY 1 ) 12 ~"db_t.h " 21 $__os_dli ( v , d , tud , me , ) 22 ENV * v ; 23 cڡ * d ; 24 tud , * ; 25 *** me ; 27 DB_ENV * dbv ; 28 dt * dp ; 29 DIR * dp ; 30 sb ; 31 ysz , t , t ; 32 ** mes , buf [ DB_MAXPATHLEN ]; 34 * me = NULL ; 35 * = 0; 37 dbv = v = NULL ? NULL :nv->dbenv; 39 i( dbv ! NULL && 40 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 41 `__db_msg ( v , "fes: deyi %s", d ); 43 i( `DB_GLOBAL ( j_dli ! NULL ) 44 ( `DB_GLOBAL ( j_dli )( d , me , )); 46 i(( dp = `ݒd ( CHAR_STAR_CAST d )= NULL ) 47 ( `__os_g_o ()); 48 mes = NULL ; 49 ysz = t = 0; ( dp = `add ( dp )! NULL ;) { 50 `tf ( buf , (buf), "%s/%s", d , dp -> d_me ); 52 `RETRY_CHK ( ` ( buf , & sb ), t ); 53 i( t != 0) { 54 t = `__os_posix_r (ret); 55 r ; 65 #ifde HAVE_QNX 66 i(! `S_ISREG ( sb . _mode && ! `S_TYPEISSHM (&sb)) { 68 i(! `S_ISREG ( sb . _mode )) { 70 i(! tud || ! `S_ISDIR ( sb . _mode )) 72 i( dp -> d_me [0] == '.' && (dp->d_name[1] == '\0' || 73 ( dp -> d_me [1] == '.' && dp->d_name[2] == '\0'))) 77 i( t > ysz ) { 78 ysz += 100; 79 i(( t = `__os_loc ( v , 80 ( u_t ) ysz * ( mes [0]), &names)) != 0) 81 r ; 83 i(( t = `__os_rdup ( v , dp -> d_me , & mes [ t ])) != 0) 84 r ; 85 t ++; 87 () `od ( dp ); 89 * me = mes ; 90 * = t ; 93 r : i( mes ! NULL ) 94 `__os_d ( v , mes , t ); 95 i( dp ! NULL ) 96 () `od ( dp ); 97 ( t ); 98 } } 107 $__os_d ( v , mes , t ) 108 ENV * v ; 109 ** mes ; 110 t ; 112 i( `DB_GLOBAL ( j_d ! NULL ) 113 `DB_GLOBAL ( j_d )( mes , t ); 115 t > 0) 116 `__os_ ( v , mes [-- t ]); 117 `__os_ ( v , mes ); 119 } } @../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 ( v , ame , unique_okay , fidp ) 21 ENV * v ; 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 `RETRY_CHK (( ` ( CHAR_STAR_CAST ame , & sb )), t ); 48 i( t != 0) { 49 `__db_sy ( v , t , ": %s", ame ); 50 ( `__os_posix_r ( t )); 79 tmp = ( u_t32_t ) sb . _o ; 80 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 81 * fidp ++ = * p ++; 83 tmp = ( u_t32_t ) sb . _dev ; 84 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 85 * fidp ++ = * p ++; 94 () `y ((*) fidp , ame , DB_FILE_ID_LEN ); 97 i( unique_okay ) { 99 `__os_unique_id ( v , & tmp ); 100 p = ( u_t8_t *)& tmp , i = ( u_t32_t ); i > 0; --i) 101 * fidp ++ = * p ++; 122 i( `DB_GLOBAL ( fid_rl ) == 0) { 123 `__os_id ( v -> dbv , & pid , NULL ); 124 `DB_GLOBAL ( fid_rl ( u_t32_t ) pid ; 126 `DB_GLOBAL ( fid_rl ) += 100000; 128 p = ( u_t8_t *) 129 & `DB_GLOBAL ( fid_rl ), i = ( u_t32_t ); i > 0; --i) 130 * fidp ++ = * p ++; 134 } } @../os/os_flock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_fdlock ( v , fhp , offt , acque , nowa ) 21 ENV * v ; 22 DB_FH * fhp ; 23 acque , nowa ; 24 off_t offt ; 26 #ifde HAVE_FCNTL 27 DB_ENV * dbv ; 28 ock ; 29 t , t_t ; 31 dbv = v = NULL ? NULL :nv->dbenv; 33 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 35 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 36 `__db_msg ( v , 38 fhp -> me , acque ? "acque": "a", ( u_lg ) offt ); 40 . l_t = offt ; 41 . l_n = 1; 42 . l_ty = acque ? F_WRLCK : F_UNLCK ; 43 . l_wh = SEEK_SET ; 45 `RETRY_CHK_EINTR_ONLY ( 46 ( `f ( fhp -> fd , nowa ? F_SETLK : F_SETLKW , & )), t ); 48 i( t == 0) 51 i(( t_t = `__os_posix_r ( t )! EACCES &&_! EAGAIN ) 52 `__db_sy ( v , t , "fcntl"); 53 ( t_t ); 55 `COMPQUIET ( fhp , NULL ); 56 `COMPQUIET ( acque , 0); 57 `COMPQUIET ( nowa , 0); 58 `COMPQUIET ( offt , 0); 59 `__db_sy ( v , DB_OPNOTSUP , "advisory fileocking unavailable"); 60 ( DB_OPNOTSUP ); 62 } } @../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 ( v , fhp ) 58 ENV * v ; 59 DB_FH * fhp ; 61 DB_ENV * dbv ; 62 t ; 64 dbv = v = NULL ? NULL :nv->dbenv; 66 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 72 i( `F_ISSET ( fhp , DB_FH_NOSYNC )) 75 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 76 `__db_msg ( v , "fes: flush %s", fhp -> me ); 78 i( `DB_GLOBAL ( j_fsync ! NULL ) 79 t = `DB_GLOBAL ( j_fsync )( fhp -> fd ); 81 #i `defed ( F_FULLFSYNC ) 82 `RETRY_CHK (( `f ( fhp -> fd , F_FULLFSYNC , 0)), t ); 87 i( t = ENOTSUP ) 88 `RETRY_CHK (( `fsync ( fhp -> fd )), t ); 89 #i `defed ( HAVE_QNX ) 90 t = `__qnx_fsync ( fhp ); 91 #i `defed ( HAVE_FDATASYNC ) 92 `RETRY_CHK (( `fdasync ( fhp -> fd )), t ); 94 `RETRY_CHK (( `fsync ( fhp -> fd )), t ); 98 i( t != 0) { 99 `__db_sy ( v , t , "fsync"); 100 t = `__os_posix_r (ret); 102 ( t ); 103 } } @../os/os_getenv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_gv ( v , me , b , bu ) 21 ENV * v ; 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 ( v , 48 me , p ); 49 ( EINVAL ); 52 `COMPQUIET ( v , 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 ( v , me , ags , mode , fh ) 22 ENV * v ; 23 cڡ * me ; 24 ags , mode ; 25 DB_FH ** fh ; 27 DB_FH * fhp ; 28 u_t ĕt , s ; 29 f_ags , t ; 30 #ifde HAVE_VXWORKS 31 wags ; 41 i(( t = `__os_oc ( v , 1, ( DB_FH ), & fhp )) != 0) 42 ( t ); 43 i(( t = `__os_rdup ( v , me , & fhp ->name)) != 0) 44 r ; 45 i( v ! NULL ) { 46 `MUTEX_LOCK ( v ,nv-> mtx_v ); 47 `TAILQ_INSERT_TAIL (& v -> fdli , fhp , q ); 48 `MUTEX_UNLOCK ( v ,nv-> mtx_v ); 49 `F_SET ( fhp , DB_FH_ENVLINK ); 53 i( `DB_GLOBAL ( j_ݒ ! NULL ) { 54 i(( fhp -> fd = `DB_GLOBAL ( j_ݒ )( me , ags , mode )) == -1) { 55 t = `__os_posix_r ( `__os_g_sy ()); 56 r ; 58 de ; 61 s = 0; 62 ĕt = 1;repeat < 4; ++nrepeat) { 63 t = 0; 64 #ifdef HAVE_VXWORKS 75 i( `LF_ISSET ( O_CREAT )) { 76 DB_BEGIN_SINGLE_THREAD ; 77 wags = ags & ~( O_CREAT | O_EXCL ); 78 i(( fhp -> fd = `ݒ ( me , wags , mode )) != -1) { 85 `F_SET ( fhp , DB_FH_OPENED ); 86 i( `LF_ISSET ( O_EXCL )) { 92 DB_END_SINGLE_THREAD ; 93 t = EEXIST ; 94 r ; 106 fhp -> fd = `t ( me , wags ); 107 DB_END_SINGLE_THREAD ; 111 #ifde __VMS 121 fhp -> fd = `ݒ ( me , ags , mode , "shr=get,put,upd,del,upi"); 123 fhp -> fd = `ݒ ( me , ags , mode ); 125 i( fhp -> fd != -1) { 126 t = 0; 130 t = `__os_posix_r ( `__os_g_sy ())) { 131 EMFILE : 132 ENFILE : 133 ENOSPC : 140 `__os_yld ( v , ĕt * 2, 0); 142 EAGAIN : 143 EBUSY : 144 EINTR : 149 i(++ s < DB_RETRY ) 150 -- ĕt ; 154 r ; 158 i( t == 0) { 159 #i `defed ( HAVE_FCNTL_F_SETFD ) 161 i(( f_ags = `f ( fhp -> fd , F_GETFD )) == -1 || 162 `f ( fhp -> fd , F_SETFD , f_ags | FD_CLOEXEC ) == -1) { 163 t = `__os_g_sy (); 164 `__db_sy ( v , t , "fcntl(F_SETFD)"); 165 t = `__os_posix_r (ret); 166 r ; 169 `COMPQUIET ( f_ags , 0); 172 de : `F_SET ( fhp , DB_FH_OPENED ); 173 * fh = fhp ; 177 r : () `__os_ohd ( v , fhp ); 178 ( t ); 179 } } 188 $__os_ohd ( v , fhp ) 189 ENV * v ; 190 DB_FH * fhp ; 192 DB_ENV * dbv ; 193 t ; 195 t = 0; 201 `DB_ASSERT ( v ,nv ! NULL || ! `F_ISSET ( fhp , DB_FH_ENVLINK )); 203 i( v ! NULL ) { 204 dbv = v ->dbenv; 205 i( fhp -> me ! NULL && `FLD_ISSET ( 206 dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 207 `__db_msg ( v , "fes: clo %s", fhp -> me ); 209 i( `F_ISSET ( fhp , DB_FH_ENVLINK )) { 214 `MUTEX_LOCK ( v ,nv-> mtx_v ); 215 `TAILQ_REMOVE (& v -> fdli , fhp , q ); 216 `MUTEX_UNLOCK ( v ,nv-> mtx_v ); 221 i( `F_ISSET ( fhp , DB_FH_OPENED )) { 222 i( `DB_GLOBAL ( j_o ! NULL ) 223 t = `DB_GLOBAL ( j_o )( fhp -> fd ); 225 `RETRY_CHK (( `o ( fhp -> fd )), t ); 226 i( t != 0) { 227 `__db_sy ( v , t , "close"); 228 t = `__os_posix_r (ret); 233 i( `F_ISSET ( fhp , DB_FH_UNLINK )) 234 () `__os_uƚk ( v , fhp -> me , 0); 236 i( fhp -> me ! NULL ) 237 `__os_ ( v , fhp -> me ); 238 `__os_ ( v , fhp ); 240 ( t ); 241 } } @../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 (( ENV *, *, DB_FH *, size_t , , , **)); 27 #ifde HAVE_SHMGET 28 __shm_mode __P (( ENV *)); 30 __no_syem_mem __P (( ENV *)); 40 $__os_ch ( v , f , ) 41 ENV * v ; 42 REGINFO * f ; 43 REGION * ; 45 DB_ENV * dbv ; 46 _ok , t ; 52 `DB_ASSERT ( v ,nv ! NULL &&nv-> dbv != NULL); 53 dbv = v ->dbenv; 55 i( `DB_GLOBAL ( j_gi_m ! NULL ) { 61 _ok = `F_ISSET ( f , REGION_CREATE ) ? 1 : 0; 62 t = `DB_GLOBAL ( j_gi_m ) 63 ( dbv , f -> me , -> size , & _ok , &f-> addr ); 64 i( _ok ) 65 `F_SET ( f , REGION_CREATE ); 67 `F_CLR ( f , REGION_CREATE ); 68 ( t ); 71 i( `F_ISSET ( v , ENV_SYSTEM_MEM )) { 82 #i `defed ( HAVE_MUTEX_HPPA_MSEM_INIT ) 83 `__db_rx ( v , 85 ( EINVAL ); 87 #i `defed ( HAVE_SHMGET ) 89 key_t gid ; 90 id , mode ; 101 i( `F_ISSET ( f , REGION_CREATE )) { 108 i( dbv -> shm_key = INVALID_REGION_SEGID ) { 109 `__db_rx ( v , 111 ( EINVAL ); 121 gid = ( key_t ) 122 (( u_lg ) dbv -> shm_key + ( f -> id - 1)); 131 i(( id = `shmg ( gid , 0, 0)) != -1) { 132 () `shml ( id , IPC_RMID , NULL ); 133 i(( id = `shmg ( gid , 0, 0)) != -1) { 134 `__db_rx ( v , 136 () gid ); 137 ( EAGAIN ); 145 mode = IPC_CREAT | `__shm_mode ( v ); 146 i(( id = `shmg ( gid , -> size , mode )) == -1) { 147 t = `__os_g_sy (); 148 `__db_sy ( v , t , 150 () gid ); 151 ( `__os_posix_r ( t )); 153 -> gid = id ; 155 id = -> gid ; 157 i(( f -> addr = `shm ( id , NULL , 0)) == (*)-1) { 158 f -> addr = NULL ; 159 t = `__os_g_sy (); 160 `__db_sy ( v , t , 161 "shm: id %d: ubˁةchshed syem memyegi", id ); 162 ( `__os_posix_r ( t )); 166 i( `F_ISSET ( v , ENV_LOCKDOWN )) { 167 #ifde HAVE_SHMCTL_SHM_LOCK 168 t = `shml ( 169 id , SHM_LOCK , NULL =0 ? 0 : `__os_g_sy (); 171 t = DB_OPNOTSUP ; 173 i( t != 0) { 174 `__db_sy ( v , t , 175 "shml/SHM_LOCK: id %d: ubˁlock dowshed memyegi", id ); 176 ( `__os_posix_r ( t )); 183 ( `__no_syem_mem ( v )); 187 #ifde HAVE_MMAP 189 DB_FH * fhp ; 191 fhp = NULL ; 199 i(( t = `__os_ݒ ( v , f -> me , 0, 200 DB_OSO_REGION | 201 ( `F_ISSET ( f , REGION_CREATE_OK ? DB_OSO_CREATE : 0), 202 v -> db_mode , & fhp )) != 0) 203 `__db_r ( v , t , "%s", f -> me ); 212 i( t =0 && `F_ISSET ( f , REGION_CREATE )) { 213 i( `F_ISSET ( dbv , DB_ENV_REGION_INIT )) 214 t = `__db_fe_wre ( v , fhp , 215 -> size / MEGABYTE ,p->size % MEGABYTE, 0x00); 217 t = `__db_fe_exnd ( v , fhp , -> size ); 221 i( t == 0) 222 t = `__os_m ( v , 223 f -> me , fhp , -> size , 1, 0, &f-> addr ); 225 i( fhp ! NULL ) 226 () `__os_ohd ( v , fhp ); 228 ( t ); 231 `COMPQUIET ( f , NULL ); 232 `COMPQUIET ( , NULL ); 233 `__db_rx ( v , 235 ( DB_OPNOTSUP ); 237 } } 246 $__os_dach ( v , f , deroy ) 247 ENV * v ; 248 REGINFO * f ; 249 deroy ; 251 DB_ENV * dbv ; 252 REGION * ; 253 t ; 259 `DB_ASSERT ( v ,nv ! NULL &&nv-> dbv != NULL); 260 dbv = v ->dbenv; 262 = f ->rp; 265 i( `DB_GLOBAL ( j_gi_unm ! NULL ) 266 ( `DB_GLOBAL ( j_gi_unm )( dbv , f -> addr )); 268 i( `F_ISSET ( v , ENV_SYSTEM_MEM )) { 269 #ifde HAVE_SHMGET 270 gid ; 276 gid = ->segid; 277 i( deroy ) 278 -> gid = INVALID_REGION_SEGID ; 280 i( `shmdt ( f -> addr ) != 0) { 281 t = `__os_g_sy (); 282 `__db_sy ( v , t , "shmdt"); 283 ( `__os_posix_r ( t )); 286 i( deroy && `shml ( gid , IPC_RMID , 287 NULL !0 && ( t = `__os_g_sy ()! EINVAL ) { 288 `__db_sy ( v , t , 290 gid ); 291 ( `__os_posix_r ( t )); 296 ( `__no_syem_mem ( v )); 300 #ifde HAVE_MMAP 301 #ifde HAVE_MUNLOCK 302 i( `F_ISSET ( v , ENV_LOCKDOWN )) 303 () `muock ( f -> addr , -> size ); 305 i( `munm ( f -> addr , -> size ) != 0) { 306 t = `__os_g_sy (); 307 `__db_sy ( v , t , "munmap"); 308 ( `__os_posix_r ( t )); 311 i( deroy && ( t = `__os_uƚk ( v , f -> me , 1)) != 0) 312 ( t ); 316 `COMPQUIET ( deroy , 0); 317 `COMPQUIET ( t , 0); 318 ( EINVAL ); 320 } } 329 $__os_mfe ( v , th , fhp , n , is_rdly , add ) 330 ENV * v ; 331 * th ; 332 DB_FH * fhp ; 333 is_rdly ; 334 size_t n ; 335 ** add ; 337 #i `defed ( HAVE_MMAP && !defed( HAVE_QNX ) 338 DB_ENV * dbv ; 341 i( `DB_GLOBAL ( j_fe_m ! NULL ) { 346 `DB_ASSERT ( v ,nv ! NULL &&nv-> dbv != NULL); 347 dbv = v ->dbenv; 350 `DB_GLOBAL ( j_fe_m )( dbv , th , n , is_rdly , add )); 353 ( `__os_m ( v , th , fhp , n , 0, is_rdly , add )); 355 `COMPQUIET ( v , NULL ); 356 `COMPQUIET ( th , NULL ); 357 `COMPQUIET ( fhp , NULL ); 358 `COMPQUIET ( is_rdly , 0); 359 `COMPQUIET ( n , 0); 360 `COMPQUIET ( add , NULL ); 361 ( DB_OPNOTSUP ); 363 } } 372 $__os_unmfe ( v , addr , n ) 373 ENV * v ; 374 * addr ; 375 size_t n ; 377 DB_ENV * dbv ; 378 t ; 384 `DB_ASSERT ( v ,nv ! NULL &&nv-> dbv != NULL); 385 dbv = v ->dbenv; 387 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 388 `__db_msg ( v , "fileops: munmap"); 391 i( `DB_GLOBAL ( j_fe_unm ! NULL ) 392 ( `DB_GLOBAL ( j_fe_unm )( dbv , addr )); 394 #ifde HAVE_MMAP 395 #ifde HAVE_MUNLOCK 396 i( `F_ISSET ( v , ENV_LOCKDOWN )) 397 `RETRY_CHK (( `muock ( addr , n )), t ); 403 `COMPQUIET ( v , NULL ); 405 `RETRY_CHK (( `munm ( addr , n )), t ); 406 t = `__os_posix_r (ret); 408 `COMPQUIET ( v , NULL ); 409 t = EINVAL ; 411 ( t ); 412 } } 414 #ifde HAVE_MMAP 420 $__os_m ( v , th , fhp , n , is_gi , is_rdly , add ) 421 ENV * v ; 422 * th ; 423 DB_FH * fhp ; 424 is_gi , is_rdly ; 425 size_t n ; 426 ** add ; 428 DB_ENV * dbv ; 429 ags , , t ; 430 * p ; 436 `DB_ASSERT ( v ,nv ! NULL &&nv-> dbv != NULL); 437 dbv = v ->dbenv; 439 i( `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 440 `__db_msg ( v , "fes: mm %s", th ); 442 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 448 ags = is_rdly ? MAP_PRIVATE : MAP_SHARED ; 450 #ifde MAP_FILE 456 ags | MAP_FILE ; 466 #ifde MAP_HASSEMAPHORE 467 i( is_gi && ! is_rdly ) 468 ags | MAP_HASSEMAPHORE ; 470 `COMPQUIET ( is_gi , 0); 482 #ifde MAP_NOSYNC 483 ags | MAP_NOSYNC ; 486 = PROT_READ | ( is_rdly ? 0 : PROT_WRITE ); 501 #ifde VMS 502 i( `__os_fsync ( v , fhp ) == -1) 503 ( `__os_posix_r ( `__os_g_sy ())); 507 #ide MAP_FAILED 508 #MAP_FAILED -1 ) 510 i(( p = `mm ( NULL , 511 n , , ags , fhp -> fd , ( off_t )0)=(*) MAP_FAILED ) { 512 t = `__os_g_sy (); 513 `__db_sy ( v , t , "mmap"); 514 ( `__os_posix_r ( t )); 526 i( `F_ISSET ( v , ENV_LOCKDOWN )) { 527 #ifde HAVE_MLOCK 528 t = `mlock ( p , n =0 ? 0 : `__os_g_sy (); 530 t = DB_OPNOTSUP ; 532 i( t != 0) { 533 `__db_sy ( v , t , "mlock"); 534 ( `__os_posix_r ( t )); 538 * add = p ; 540 } } 543 #ifde HAVE_SHMGET 544 #ide SHM_R 545 #SHM_R 0400 ) 547 #ide SHM_W 548 #SHM_W 0200 ) 557 $__shm_mode ( v ) 558 ENV * v ; 560 mode ; 563 i( v -> db_mode == 0) 564 ( SHM_R | SHM_W | SHM_R >> 3 | SHM_W >> 3); 566 mode = 0; 567 i( v -> db_mode & S_IRUSR ) 568 mode | SHM_R ; 569 i( v -> db_mode & S_IWUSR ) 570 mode | SHM_W ; 571 i( v -> db_mode & S_IRGRP ) 572 mode | SHM_R >> 3; 573 i( v -> db_mode & S_IWGRP ) 574 mode | SHM_W >> 3; 575 i( v -> db_mode & S_IROTH ) 576 mode | SHM_R >> 6; 577 i( v -> db_mode & S_IWOTH ) 578 mode | SHM_W >> 6; 579 ( mode ); 580 } } 587 $__no_syem_mem ( v ) 588 ENV * v ; 590 `__db_rx ( v , 592 ( DB_OPNOTSUP ); 593 } } @../os/os_mkdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_mkd ( v , me , mode ) 21 ENV * v ; 22 cڡ * me ; 23 mode ; 25 DB_ENV * dbv ; 26 t ; 28 dbv = v = NULL ? NULL :nv->dbenv; 29 i( dbv ! NULL && 30 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 31 `__db_msg ( v , "fes: mkd %s", me ); 34 #i `defed ( HAVE_VXWORKS ) 35 `RETRY_CHK (( `mkd ( CHAR_STAR_CAST me )), t ); 37 `RETRY_CHK (( `mkd ( me , DB_MODE_700 )), t ); 39 i( t != 0) 40 ( `__os_posix_r ( t )); 43 #i! `defed ( HAVE_VXWORKS ) 44 i( mode != 0) { 45 `RETRY_CHK (( `chmod ( me , mode )), t ); 46 i( t != 0) 47 t = `__os_posix_r (ret); 50 ( t ); 51 } } @../os/os_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_ݒ ( v , me , ge_size , ags , mode , fh ) 22 ENV * v ; 23 cڡ * me ; 24 u_t32_t ge_size , ags ; 25 mode ; 26 DB_FH ** fh ; 28 DB_ENV * dbv ; 29 DB_FH * fhp ; 30 oags , t ; 32 `COMPQUIET ( ge_size , 0); 34 dbv = v = NULL ? NULL :nv->dbenv; 35 * fh = NULL ; 36 oags = 0; 38 i( dbv ! NULL && 39 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 40 `__db_msg ( v , "fes: o%s", me ); 42 #OKFLAGS \ 43 ( DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\ 44 DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \ 45 DB_OSO_TEMP | DB_OSO_TRUNC ) ) 46 i(( t = `__db_fchk ( v , "__os_ݒ", ags , OKFLAGS )) != 0) 47 ( t ); 49 #i `defed ( O_BINARY ) 56 oags | O_BINARY ; 64 i( `LF_ISSET ( DB_OSO_CREATE )) 65 oags | O_CREAT ; 67 i( `LF_ISSET ( DB_OSO_EXCL )) 68 oags | O_EXCL ; 70 #ifde HAVE_O_DIRECT 71 i( `LF_ISSET ( DB_OSO_DIRECT )) 72 oags | O_DIRECT ; 74 #ifde O_DSYNC 75 i( `LF_ISSET ( DB_OSO_DSYNC )) 76 oags | O_DSYNC ; 79 i( `LF_ISSET ( DB_OSO_RDONLY )) 80 oags | O_RDONLY ; 82 oags | O_RDWR ; 84 i( `LF_ISSET ( DB_OSO_TRUNC )) 85 oags | O_TRUNC ; 91 i( dbv ! NULL && 92 v -> d_mode !0 && `LF_ISSET ( DB_OSO_CREATE ) && 93 ( t = `__db_mkth ( v , me )) != 0) 94 ( t ); 97 #ifde HAVE_QNX 98 i( `LF_ISSET ( DB_OSO_REGION )) 99 t = `__os_qnx_gi_ݒ ( v , me , oags , mode , & fhp ); 102 t = `__os_ݒhd ( v , me , oags , mode , & fhp ); 103 i( t != 0) 104 ( t ); 106 i( `LF_ISSET ( DB_OSO_REGION )) 107 `F_SET ( fhp , DB_FH_REGION ); 108 #ifde HAVE_FCHMOD 117 i( `LF_ISSET ( DB_OSO_CREATE && LF_ISSET( DB_OSO_ABSMODE )) 118 () `fchmod ( fhp -> fd , mode ); 121 #ifde O_DSYNC 126 i( `LF_ISSET ( DB_OSO_DSYNC )) 127 `F_SET ( fhp , DB_FH_NOSYNC ); 130 #i `defed ( HAVE_DIRECTIO && defed( DIRECTIO_ON ) 136 i( `LF_ISSET ( DB_OSO_DIRECT )) 137 () `deio ( fhp -> fd , DIRECTIO_ON ); 150 i( `LF_ISSET ( DB_OSO_TEMP )) { 151 #i `defed ( HAVE_UNLINK_WITH_OPEN_FAILURE || defed( CONFIG_TEST ) 152 `F_SET ( fhp , DB_FH_UNLINK ); 154 () `__os_uƚk ( v , me , 0); 158 * fh = fhp ; 160 } } @../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 ; 37 i( pidp ! NULL ) { 38 i( dbv = NULL ) { 39 #i `defed ( HAVE_VXWORKS ) 40 * pidp = `skIdSf (); 42 * pidp = `gpid (); 45 * pidp = dbv -> v -> pid_che ; 48 i( tidp ! NULL ) { 49 #i `defed ( DB_WIN32 ) 50 * tidp = `GCutThadId (); 51 #i `defed ( HAVE_MUTEX_UI_THREADS ) 52 * tidp = `thr_lf (); 53 #i `defed ( HAVE_MUTEX_SOLARIS_LWP ) || \ 54 `defed ( HAVE_MUTEX_PTHREADS || defed( HAVE_PTHREAD_API ) 55 * tidp = `had_lf (); 60 * tidp = 0; 63 } } @../os/os_rename.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_me ( v , dme , wme , st ) 22 ENV * v ; 23 cڡ * dme , * wme ; 24 u_t32_t st ; 26 DB_ENV * dbv ; 27 t ; 29 dbv = v = NULL ? NULL :nv->dbenv; 30 i( dbv ! NULL && 31 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 32 `__db_msg ( v , "fes:am%t%s", dme , wme ); 34 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 36 i( `DB_GLOBAL ( j_me ! NULL ) 37 t = `DB_GLOBAL ( j_me )( dme , wme ); 39 `RETRY_CHK (( `me ( dme , wme )), t ); 45 i( t != 0) { 46 i(! st ) 47 `__db_sy ( 48 v , t , "m%%s", dme , wme ); 49 t = `__os_posix_r (ret); 51 ( t ); 52 } } @../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 ( v , , fhp , pgno , pgsize , tive , io_n , buf , ni ) 22 ENV * v ; 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 DB_ENV * dbv ; 32 off_t offt ; 33 ssize_t nio ; 35 t ; 47 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 48 `DB_ASSERT ( v , ( pgno =0 && pgsize =0|| tive == 0); 50 #i `defed ( HAVE_PREAD && defed( HAVE_PWRITE ) 51 dbv = v = NULL ? NULL :nv->dbenv; 53 i(( offt = tive ) == 0) 54 offt = ( off_t ) pgno * pgsize ; 55 ) { 56 DB_IO_READ : 57 i( `DB_GLOBAL ( j_ad ! NULL ) 58 ow ; 59 #i `defed ( HAVE_STATISTICS ) 60 ++ fhp -> ad_cou ; 62 i( dbv ! NULL && 63 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS_ALL )) 64 `__db_msg ( v , 66 fhp -> me , ( u_lg ) io_n , (u_lg) offt ); 68 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 69 nio = `DB_GLOBAL ( j_d ! NULL ? 70 `DB_GLOBAL ( j_d )( fhp -> fd , buf , io_n , offt ) : 71 `d ( fhp -> fd , buf , io_n , offt ); 73 DB_IO_WRITE : 74 i( `DB_GLOBAL ( j_wre ! NULL ) 75 ow ; 76 #ifde HAVE_FILESYSTEM_NOTZERO 77 i( `__os_fs_nzo ()) 78 ow ; 80 #i `defed ( HAVE_STATISTICS ) 81 ++ fhp -> wre_cou ; 83 i( dbv ! NULL && 84 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS_ALL )) 85 `__db_msg ( v , 87 fhp -> me , ( u_lg ) io_n , (u_lg) offt ); 89 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 90 nio = `DB_GLOBAL ( j_pwre ! NULL ? 91 `DB_GLOBAL ( j_pwre )( fhp -> fd , buf , io_n , offt ) : 92 `pwre ( fhp -> fd , buf , io_n , offt ); 95 ( EINVAL ); 97 i( nio =( ssize_t ) io_n ) { 98 * ni = io_n ; 101 ow : 103 `MUTEX_LOCK ( v , fhp -> mtx_fh ); 105 i(( t = `__os_ek ( v , fhp , pgno , pgsize , tive )) != 0) 106 r ; 107 ) { 108 DB_IO_READ : 109 t = `__os_ad ( v , fhp , buf , io_n , ni ); 111 DB_IO_WRITE : 112 t = `__os_wre ( v , fhp , buf , io_n , ni ); 115 t = EINVAL ; 119 r : `MUTEX_UNLOCK ( v , fhp -> mtx_fh ); 121 ( t ); 123 } } 132 $__os_ad ( v , fhp , addr , n , p ) 133 ENV * v ; 134 DB_FH * fhp ; 135 * addr ; 136 size_t n ; 137 size_t * p ; 139 DB_ENV * dbv ; 140 size_t offt ; 141 ssize_t ; 142 t ; 143 u_t8_t * ddr ; 145 dbv = v = NULL ? NULL :nv->dbenv; 146 t = 0; 148 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 150 #i `defed ( HAVE_STATISTICS ) 151 ++ fhp -> ad_cou ; 153 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 154 `__db_msg ( v , 155 "fes:d %s: %lu bys", fhp -> me , ( u_lg ) n ); 157 i( `DB_GLOBAL ( j_ad ! NULL ) { 158 * p = n ; 159 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 160 i( `DB_GLOBAL ( j_ad )( fhp -> fd , addr , n !( ssize_t )len) { 161 t = `__os_g_sy (); 162 `__db_sy ( v , t , "read: %#lx, %lu", 163 `P_TO_ULONG ( addr ), ( u_lg ) n ); 164 t = `__os_posix_r (ret); 166 ( t ); 169 ddr = addr , offt = 0; 170 offt < n ; ddr + , off+( u_t32_t )nr) { 171 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 172 `RETRY_CHK ((( = `ad ( fhp -> fd , 173 CHAR_STAR_CAST ddr , n - offt )< 0 ? 1 : 0), t ); 174 i( =0 || t != 0) 177 * p = ( size_t )( ddr - ( u_t8_t *) addr ); 178 i( t != 0) { 179 `__db_sy ( v , t , "read: %#lx, %lu", 180 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 181 t = `__os_posix_r (ret); 183 ( t ); 184 } } 193 $__os_wre ( v , fhp , addr , n , nwp ) 194 ENV * v ; 195 DB_FH * fhp ; 196 * addr ; 197 size_t n ; 198 size_t * nwp ; 200 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 202 #ifde HAVE_FILESYSTEM_NOTZERO 204 i( `__os_fs_nzo ()) { 205 t ; 206 i(( t = `__db_zo_fl ( v , fhp )) != 0) 207 ( t ); 210 ( `__os_physwre ( v , fhp , addr , n , nwp )); 211 } } 221 $__os_physwre ( v , fhp , addr , n , nwp ) 222 ENV * v ; 223 DB_FH * fhp ; 224 * addr ; 225 size_t n ; 226 size_t * nwp ; 228 DB_ENV * dbv ; 229 size_t offt ; 230 ssize_t nw ; 231 t ; 232 u_t8_t * ddr ; 234 dbv = v = NULL ? NULL :nv->dbenv; 235 t = 0; 237 #i `defed ( HAVE_STATISTICS ) 238 ++ fhp -> wre_cou ; 240 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 241 `__db_msg ( v , 242 "fes: wr%s: %lu bys", fhp -> me , ( u_lg ) n ); 244 #i `defed ( HAVE_FILESYSTEM_NOTZERO && defed( DIAGNOSTIC ) 245 i( `__os_fs_nzo ()) { 246 sb ; 247 off_t cur_off ; 249 `DB_ASSERT ( v , `f ( fhp -> fd , & sb ) != -1 && 250 ( cur_off = `lek ( fhp -> fd , ( off_t )0, SEEK_CUR )) != -1 && 251 cur_off < sb . _size ); 254 i( `DB_GLOBAL ( j_wre ! NULL ) { 255 * nwp = n ; 256 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 257 i( `DB_GLOBAL ( j_wre )( fhp -> fd , addr , n !( ssize_t )len) { 258 t = `__os_g_sy (); 259 `__db_sy ( v , t , "write: %#lx, %lu", 260 `P_TO_ULONG ( addr ), ( u_lg ) n ); 261 t = `__os_posix_r (ret); 263 `DB_EVENT ( v , DB_EVENT_WRITE_FAILED , NULL ); 265 ( t ); 268 ddr = addr , offt = 0; 269 offt < n ; ddr + nw , off+( u_t32_t )nw) { 270 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 271 `RETRY_CHK ((( nw = `wre ( fhp -> fd , 272 CHAR_STAR_CAST ddr , n - offt )< 0 ? 1 : 0), t ); 273 i( t != 0) 276 * nwp = n ; 277 i( t != 0) { 278 `__db_sy ( v , t , "write: %#lx, %lu", 279 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 280 t = `__os_posix_r (ret); 282 `DB_EVENT ( v , DB_EVENT_WRITE_FAILED , NULL ); 284 ( t ); 285 } } @../os/os_seek.c 9 ~"db_cfig.h " 11 ~"db_t.h " 21 $__os_ek ( v , fhp , pgno , pgsize , tive ) 22 ENV * v ; 23 DB_FH * fhp ; 24 db_pgno_t pgno ; 25 u_t32_t pgsize ; 26 u_t32_t tive ; 28 DB_ENV * dbv ; 29 off_t offt ; 30 t ; 32 dbv = v = NULL ? NULL :nv->dbenv; 34 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 36 #i `defed ( HAVE_STATISTICS ) 37 ++ fhp -> ek_cou ; 40 offt = ( off_t ) pgsize * pgno + tive ; 42 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 43 `__db_msg ( v , 44 "fes: sk %t%lu", fhp -> me , ( u_lg ) offt ); 46 i( `DB_GLOBAL ( j_ek ! NULL ) 47 t = `DB_GLOBAL ( j_ek )( fhp -> fd , offt , SEEK_SET ); 49 `RETRY_CHK (( `lek ( 50 fhp -> fd , offt , SEEK_SET =-1 ? 1 : 0), t ); 52 i( t == 0) { 53 fhp -> pgsize =gsize; 54 fhp -> pgno =gno; 55 fhp -> offt = tive ; 57 `__db_sy ( v , t , 58 "ek: %lu: (%lu * %lu+ %lu", ( u_lg ) offt , 59 ( u_lg ) pgno , (u_lg) pgsize , (u_lg) tive ); 60 t = `__os_posix_r (ret); 63 ( t ); 64 } } @../os/os_stack.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 #i defed ( HAVE_SYSTEM_INCLUDE_FILES && defed( HAVE_BACKTRACE ) && \ 13 defed ( HAVE_BACKTRACE_SYMBOLS && $defed ( HAVE_EXECINFO_H ) 14 ~<execfo.h > 24 $__os_ack ( v ) 25 ENV * v ; 27 #i `defed ( HAVE_BACKTRACE && defed( HAVE_BACKTRACE_SYMBOLS ) 28 * y [200]; 29 size_t i , size ; 30 ** rgs ; 37 size = `backa ( y , (array) / (array[0])); 38 rgs = `backa_symbs ( y , size ); 40 i = 0; i < size ; ++i) 41 `__db_rx ( v , "%s", rgs [ i ]); 42 ` ( rgs ); 44 `COMPQUIET ( v , NULL ); 45 } } @../os/os_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_exis ( v , th , isdp ) 21 ENV * v ; 22 cڡ * th ; 23 * isdp ; 25 DB_ENV * dbv ; 26 sb ; 27 t ; 29 dbv = v = NULL ? NULL :nv->dbenv; 31 i( dbv ! NULL && 32 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 33 `__db_msg ( v , "fes: s%s", th ); 35 i( `DB_GLOBAL ( j_exis ! NULL ) 36 ( `DB_GLOBAL ( j_exis )( th , isdp )); 38 `RETRY_CHK (( ` ( CHAR_STAR_CAST th , & sb )), t ); 39 i( t != 0) 40 ( `__os_posix_r ( t )); 42 #i! `defed ( S_ISDIR || defed( STAT_MACROS_BROKEN ) 43 #unde S_ISDIR 44 #ifde _S_IFDIR 45 #S_ISDIR ( m ( _S_IFDIR & (m)) ) 47 #S_ISDIR ( m (((m& 0170000=0040000) ) 50 i( isdp ! NULL ) 51 * isdp = `S_ISDIR ( sb . _mode ); 54 } } 65 $__os_iofo ( v , th , fhp , mby , by , iosiz ) 66 ENV * v ; 67 cڡ * th ; 68 DB_FH * fhp ; 69 u_t32_t * mby , * by , * iosiz ; 71 sb ; 72 t ; 74 i( `DB_GLOBAL ( j_iofo ! NULL ) 75 ( `DB_GLOBAL ( j_iofo )( th , 76 fhp -> fd , mby , by , iosiz )); 78 `DB_ASSERT ( v , `F_ISSET ( fhp , DB_FH_OPENED && fhp-> fd != -1); 80 `RETRY_CHK (( `f ( fhp -> fd , & sb )), t ); 81 i( t != 0) { 82 `__db_sy ( v , t , "fstat"); 83 ( `__os_posix_r ( t )); 87 i( mby ! NULL ) 88 * mby = ( u_t32_t )( sb . _size / MEGABYTE ); 89 i( by ! NULL ) 90 * by = ( u_t32_t )( sb . _size % MEGABYTE ); 99 #ifde HAVE_STRUCT_STAT_ST_BLKSIZE 100 i( iosiz ! NULL && (*iosiz = sb . _blksize ) == 0) 101 * iosiz = DB_DEF_IOSIZE ; 103 i( iosiz ! NULL ) 104 * iosiz = DB_DEF_IOSIZE ; 107 } } @../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 ( v , ags ) 30 ENV * v ; 31 u_t32_t ags ; 33 DB_ENV * dbv ; 34 isd , t ; 35 * td , td_buf [ DB_MAXPATHLEN ]; 37 dbv = v ->dbenv; 40 i( `LF_ISSET ( DB_USE_ENVIRON ) || 41 ( `LF_ISSET ( DB_USE_ENVIRON_ROOT && `__os_io ())) { 43 td = td_buf ; 44 i(( t = `__os_gv ( 45 v , "TMPDIR", & td , ( td_buf ))) != 0) 46 ( t ); 47 i( td ! NULL &&dir[0] != '\0') 48 found ; 53 td = td_buf ; 54 i(( t = `__os_gv ( 55 v , "TEMP", & td , ( td_buf ))) != 0) 56 ( t ); 57 i( td ! NULL &&dir[0] != '\0') 58 found ; 60 td = td_buf ; 61 i(( t = `__os_gv ( 62 v , "TMP", & td , ( td_buf ))) != 0) 63 ( t ); 64 i( td ! NULL &&dir[0] != '\0') 65 found ; 68 td = td_buf ; 69 i(( t = `__os_gv ( 70 v , "TempFd", & td , ( td_buf ))) != 0) 71 ( t ); 73 i( td ! NULL &&dir[0] != '\0') 74 found : ( `__os_rdup ( v , td , & dbv -> db_tmp_d )); 77 #ifde mactosh 79 { FSSc ec ; 81 i(! `Scl2FSSc ( kTempܬyFdTy , 82 kOnSyemDisk , 0, & ec )) 83 ( `__os_rdup ( v , 84 `FSp2FuPh (& ec ), & dbv -> db_tmp_d )); 87 #ifde DB_WIN32 90 _TCHAR h [ DB_MAXPATHLEN + 1]; 91 * th , * eos ; 93 i( `GTempPh ( DB_MAXPATHLEN , h ) > 2) { 94 `FROM_TSTRING ( v , h , th , t ); 95 i( t != 0) 96 ( t ); 98 eos = th + ` (path) - 1; 99 i(* eos == '\\' || *eos == '/') 100 * eos = '\0'; 101 i( `__os_exis ( v , th , & isd ) == 0 && isdir) { 102 t = `__os_rdup ( v , 103 th , & dbv -> db_tmp_d ); 104 `FREE_STRING ( v , th ); 105 ( t ); 107 `FREE_STRING ( v , th ); 118 #DB_TEMP_DIRECTORY ( n ) { \ 119 * __p = n ; \ 120 i( `__os_exis ( v , __p , & isd ) == 0 && isdir != 0) \ 121 ( `__os_rdup ( v , __p , & dbv -> db_tmp_d )); \ 122 } ) 123 #ifde DB_WIN32 124 `DB_TEMP_DIRECTORY ("/temp"); 125 `DB_TEMP_DIRECTORY ("C:/temp"); 126 `DB_TEMP_DIRECTORY ("C:/tmp"); 128 `DB_TEMP_DIRECTORY ("/var/tmp"); 129 `DB_TEMP_DIRECTORY ("/usr/tmp"); 130 `DB_TEMP_DIRECTORY ("/tmp"); 137 ( `__os_rdup ( v , "", & dbv -> db_tmp_d )); 138 } } @../os/os_truncate.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_un ( v , fhp , pgno , pgsize ) 21 ENV * v ; 22 DB_FH * fhp ; 23 db_pgno_t pgno ; 24 u_t32_t pgsize ; 26 DB_ENV * dbv ; 27 off_t offt ; 28 t ; 30 dbv = v = NULL ? NULL :nv->dbenv; 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 ( v , 41 "fes:run %t%lu", fhp -> me , ( u_lg ) offt ); 43 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 45 i( `DB_GLOBAL ( j_run ! NULL ) 46 t = `DB_GLOBAL ( j_run )( fhp -> fd , offt ); 48 #ifde HAVE_FTRUNCATE 49 `RETRY_CHK (( `run ( fhp -> fd , offt )), t ); 51 t = DB_OPNOTSUP ; 55 i( t != 0) { 56 `__db_sy ( v , t , "run: %lu", ( u_lg ) offt ); 57 t = `__os_posix_r (ret); 60 ( t ); 61 } } @../os/os_uid.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_unique_id ( v , idp ) 21 ENV * v ; 22 u_t32_t * idp ; 24 DB_ENV * dbv ; 25 db_timeec v ; 26 pid_t pid ; 27 u_t32_t id ; 29 * idp = 0; 31 dbv = v = NULL ? NULL :nv->dbenv; 37 `__os_id ( dbv , & pid , NULL ); 38 `__os_gtime ( v , & v , 1); 40 id = ( u_t32_t ) pid ^ 41 ( u_t32_t ) v . tv_c ^ (u_t32_t)v. tv_nc ^ `P_TO_UINT32 (& pid ); 48 i( `DB_GLOBAL ( uid_ ) == 0) { 49 `DB_GLOBAL ( uid_ ) = 1; 50 `d (( u_t ) id ); 52 id ^( u_t ) `nd (); 54 * idp = id ; 55 } } @../os/os_unlink.c 9 ~"db_cfig.h " 11 ~"db_t.h " 20 $__os_uƚk ( v , th , ovwre_ ) 21 ENV * v ; 22 cڡ * th ; 23 ovwre_ ; 25 DB_ENV * dbv ; 26 t , t_t ; 28 dbv = v = NULL ? NULL :nv->dbenv; 30 i( dbv ! NULL && 31 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 32 `__db_msg ( v , "fes: uƚk %s", th ); 35 i( dbv ! NULL && ovwre_ && `F_ISSET (dbv, DB_ENV_OVERWRITE )) 36 () `__db_fe_mui_wre ( v , th ); 38 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 40 i( `DB_GLOBAL ( j_uƚk ! NULL ) 41 t = `DB_GLOBAL ( j_uƚk )( th ); 43 `RETRY_CHK (( `uƚk ( CHAR_STAR_CAST th )), t ); 44 #ifde HAVE_QNX 50 i( t !0 && `__os_posix_r ԑ! ENOENT ) 51 `RETRY_CHK (( `shm_uƚk ( th )), t ); 70 i( t != 0) { 71 t_t = `__os_posix_r ( t ); 72 i( t_t ! ENOENT ) 73 `__db_sy ( v , t , "uƚk: %s", th ); 74 t = t_t ; 77 ( t ); 78 } } @../os/os_yield.c 9 ~"db_cfig.h " 11 #__INCLUDE_SELECT_H 1 ) 12 ~"db_t.h " 14 #i defed ( HAVE_SYSTEM_INCLUDE_FILES && defed( HAVE_SCHED_YIELD ) 15 ~<sched.h > 18 __os_p __P (( ENV *, u_lg , u_long)); 27 $__os_yld ( v , cs , ucs ) 28 ENV * v ; 29 u_lg cs , ucs ; 35 ; ucs > US_PER_SEC ; usecs -= US_PER_SEC) 36 ++ cs ; 38 i( `DB_GLOBAL ( j_yld ! NULL ) { 39 () `DB_GLOBAL ( j_yld )( cs , ucs ); 48 i( cs !0 || ucs != 0) 49 `__os_p ( v , cs , ucs ); 51 #i `defed ( HAVE_MUTEX_UI_THREADS ) 52 `thr_yld (); 53 #i `defed ( HAVE_PTHREAD_YIELD ) && \ 54 ( `defed ( HAVE_MUTEX_PTHREADS || defed( HAVE_PTHREAD_API )) 55 `had_yld (); 56 #i `defed ( HAVE_SCHED_YIELD ) 57 () `sched_yld (); 58 #i `defed ( HAVE_YIELD ) 59 `yld (); 61 `__os_p ( dbv , 0, 0); 64 } } 71 $__os_p ( v , cs , ucs ) 72 ENV * v ; 73 u_lg cs , ucs ; 75 timev t ; 76 t ; 82 t . tv_c = () cs ; 83 t . tv_uc = () ucs + 1; 92 i( ` (0, NULL , NULL, NULL, & t ) == -1) { 93 t = `__os_g_sy (); 94 i( `__os_posix_r ( t ! EINTR ) 95 `__db_sy ( v , t , "select"); 97 } } @../os_brew/ctime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __os_bw__numb __P ((*, )); 20 $__os_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 ( 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 ( v ) 18 ENV * v ; 20 AEEAt * p ; 22 `COMPQUIET ( v , NULL ); 24 p = ( AEEAt *) `GETAPPINSTANCE (); 25 `ISHELL_CloAt ( p -> m_pIShl , FALSE ); 28 } } @../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_clock.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_gtime ( v , , mic ) 19 ENV * v ; 20 db_timeec * ; 21 mic ; 27 -> tv_c = 28 #ifde HAVE_BREW_SDK2 29 ( time_t ) `GETTIMESECONDS (+ BREW_EPOCH_OFFSET ; 31 ( time_t ) `GETUTCSECONDS (+ BREW_EPOCH_OFFSET ; 33 -> tv_nc = 0; 34 } } @../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 ( v , d , tud , me , ) 19 ENV * v ; 20 cڡ * d ; 21 tud , * ; 22 *** me ; 24 FeInfo fi ; 25 IFeMgr * pIFeMgr ; 26 ysz , t , t ; 27 * fame , * p , ** mes ; 29 `FILE_MANAGER_CREATE ( v , pIFeMgr , t ); 30 i( t != 0) 31 ( t ); 33 i(( t = `IFILEMGR_EnumIn ( pIFeMgr , d , FALSE )! SUCCESS ) { 34 `IFILEMGR_R ( pIFeMgr ); 35 `__db_sy ( v , t , "IFILEMGR_EnumInit"); 36 ( `__os_posix_r ( t )); 39 mes = NULL ; 40 ysz = t = 0; 41 `IFILEMGR_EnumNext ( pIFeMgr , & fi ! FALSE ) { 42 i(++ t > ysz ) { 43 ysz += 100; 44 i(( t = `__os_loc ( v , 45 ( u_t ) ysz * (*), & mes )) != 0) 46 nomem ; 48 fame = fi . szName ; 49 ( p = `rchr ( fame , '\\')! NULL ; filename = + 1) 51 ; ( p = `rchr ( fame , '/')! NULL ; filename = + 1) 53 i(( t = `__os_rdup ( v , fame , & mes [ t - 1])) != 0) 54 nomem ; 56 `IFILEMGR_R ( pIFeMgr ); 58 * me = mes ; 59 * = t ; 60 ( t ); 62 nomem : i( mes ! NULL ) 63 `__os_d ( v , mes , t ); 64 `IFILEMGR_R ( pIFeMgr ); 66 `COMPQUIET ( tud , 0); 68 ( t ); 69 } } 76 $__os_d ( v , mes , t ) 77 ENV * v ; 78 ** mes ; 79 t ; 81 t > 0) 82 `__os_ ( v , mes [-- t ]); 83 `__os_ ( v , 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 ( v , me , ags , mode , fh ) 19 ENV * v ; 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 ( v , pIFeMgr , t ); 32 i( t != 0) 33 ( t ); 41 i(( t = `__os_oc ( v , 1, ( DB_FH ), & fhp )) != 0) 42 ( t ); 43 i(( t = `__os_rdup ( v , 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 ( v , 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 ( v , fhp ); 77 ( t ); 78 } } 85 $__os_ohd ( v , fhp ) 86 ENV * v ; 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 ( v , fhp -> me , 0); 97 i( fhp -> me ! NULL ) 98 `__os_ ( v , fhp -> me ); 99 `__os_ ( v , fhp ); 102 } } @../os_brew/os_mkdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_mkd ( v , me , mode ) 19 ENV * v ; 20 cڡ * me ; 21 mode ; 23 IFeMgr * ifmp ; 24 t ; 26 `COMPQUIET ( mode , 0); 28 `FILE_MANAGER_CREATE ( v , ifmp , t ); 29 i( t != 0) 30 ( t ); 32 i( `IFILEMGR_MkD ( ifmp , me = SUCCESS ) 33 t = 0; 35 `FILE_MANAGER_ERR ( v , ifmp , me , "IFILEMGR_MkD", t ); 37 `IFILEMGR_R ( ifmp ); 39 ( t ); 40 } } @../os_brew/os_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒ ( v , me , ge_size , ags , mode , fh ) 19 ENV * v ; 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 ( v , "__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 i(( t = `__os_ݒhd ( v , me , oags , mode , fh )) != 0) 47 ( t ); 48 i( `LF_ISSET ( DB_OSO_REGION )) 49 `F_SET ( fhp , DB_FH_REGION ); 50 ( t ); 51 } } @../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 ( v , d , w , st ) 19 ENV * v ; 20 cڡ * d , * w ; 21 u_t32_t st ; 23 IFeMgr * pIFeMgr ; 24 t ; 26 `FILE_MANAGER_CREATE ( v , pIFeMgr , t ); 27 i( t != 0) 28 ( t ); 30 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 32 i( `IFILEMGR_Rame ( pIFeMgr , d , w = SUCCESS ) 33 t = 0; 35 i(! st ) 36 `FILE_MANAGER_ERR ( v , 37 pIFeMgr , d , "IFILEMGR_Rame", t ); 39 t = `__os_posix_r ( `IFILEMGR_GLaE ( pIFeMgr )); 41 `IFILEMGR_R ( pIFeMgr ); 42 ( t ); 43 } } @../os_brew/os_rw.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_io ( v , , fhp , pgno , pgsize , tive , io_n , buf , ni ) 19 ENV * v ; 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 ( v , fhp -> mtx_fh ); 31 i(( t = `__os_ek ( v , fhp , pgno , pgsize , tive )) != 0) 32 r ; 33 ) { 34 DB_IO_READ : 35 t = `__os_ad ( v , fhp , buf , io_n , ni ); 37 DB_IO_WRITE : 38 t = `__os_wre ( v , fhp , buf , io_n , ni ); 41 t = EINVAL ; 45 r : `MUTEX_UNLOCK ( v , fhp -> mtx_fh ); 47 ( t ); 49 } } 56 $__os_ad ( v , fhp , addr , n , p ) 57 ENV * v ; 58 DB_FH * fhp ; 59 * addr ; 60 size_t n ; 61 size_t * p ; 63 FeInfo pInfo ; 64 t ; 65 size_t offt , ; 66 * ddr ; 68 t = 0; 70 #i `defed ( HAVE_STATISTICS ) 71 ++ fhp -> ad_cou ; 74 ddr = addr , offt = 0, = 0; 75 offt < n ; ddr + , off+( u_t32_t )nr) { 76 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 77 = ( size_t ) `IFILE_Rd ( fhp -> i , addr , n ); 79 i( == 0) 82 i( == 0) { 83 `IFILE_GInfo ( fhp -> i , & pInfo ); 84 i( pInfo . dwSize != 0) { 86 i( `IFILE_Sk ( fhp -> i , _SEEK_CURRENT , 0! pInfo . dwSize ) { 87 t = `__os_g_sy (); 88 `__db_sy ( v , t , "IFILE_Read: %#lx, %lu", 89 `P_TO_ULONG ( addr ), ( u_lg ) n ); 90 t = `__os_posix_r (ret); 94 * p = ( size_t )( ddr - ( u_t8_t *) addr ); 95 ( t ); 96 } } 103 $__os_wre ( v , fhp , addr , n , nwp ) 104 ENV * v ; 105 DB_FH * fhp ; 106 * addr ; 107 size_t n ; 108 size_t * nwp ; 111 #ifde HAVE_FILESYSTEM_NOTZERO 113 i( `__os_fs_nzo ()) { 114 t ; 115 i(( t = `__db_zo_fl ( v , fhp )) != 0) 116 ( t ); 119 ( `__os_physwre ( v , fhp , addr , n , nwp )); 120 } } 127 $__os_physwre ( v , fhp , addr , n , nwp ) 128 ENV * v ; 129 DB_FH * fhp ; 130 * addr ; 131 size_t n ; 132 size_t * nwp ; 134 t ; 136 t = 0; 138 #i `defed ( HAVE_STATISTICS ) 139 ++ fhp -> wre_cou ; 142 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 143 i((* nwp = ( size_t ) `IFILE_Wre ( fhp -> i , addr , n )) !=en) { 144 t = `__os_g_sy (); 145 `__db_sy ( v , t , "IFILE_Write: %#lx, %lu", 146 `P_TO_ULONG ( addr ), ( u_lg ) n ); 147 t = `__os_posix_r (ret); 149 ( t ); 150 } } @../os_brew/os_seek.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ek ( v , fhp , pgno , pgsize , tive ) 19 ENV * v ; 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 #i `defed ( HAVE_STATISTICS ) 29 ++ fhp -> ek_cou ; 32 offt = ( off_t ) pgsize * pgno + tive ; 38 t = `IFILE_Sk ( fhp -> i , _SEEK_START , offt ); 40 i( t = SUCCESS ) { 41 fhp -> pgsize =gsize; 42 fhp -> pgno =gno; 43 fhp -> offt = tive ; 44 t = 0; 46 `__db_sy ( v , t , 47 "ek: %lu: (%lu * %lu+ %lu", ( u_lg ) offt , 48 ( u_lg ) pgno , (u_lg) pgsize , (u_lg) tive ); 49 t = `__os_posix_r (ret); 52 ( t ); 53 } } @../os_brew/os_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_exis ( v , th , isdp ) 19 ENV * v ; 20 cڡ * th ; 21 * isdp ; 23 FeInfo fInfo ; 24 IFeMgr * pIFeMgr ; 25 t ; 27 `FILE_MANAGER_CREATE ( v , pIFeMgr , t ); 28 i( t != 0) 29 ( t ); 31 t = 0; 32 i( `IFILEMGR_Te ( pIFeMgr , th = EFAILED ) { 33 `FILE_MANAGER_ERR ( 34 v , pIFeMgr , th , "IFILEMGR_Te", t ); 35 r ; 38 i( isdp ! NULL ) { 39 i( `IFILEMGR_GInfo ( pIFeMgr , th , & fInfo = EFAILED ) { 40 `FILE_MANAGER_ERR ( 41 v , 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 ( v , th , fhp , mby , by , iosiz ) 59 ENV * v ; 60 cڡ * th ; 61 DB_FH * fhp ; 62 u_t32_t * mby , * by , * iosiz ; 64 FeInfo fInfo ; 65 IFeMgr * pIFeMgr ; 66 t ; 68 `FILE_MANAGER_CREATE ( v , pIFeMgr , t ); 69 i( t != 0) 70 ( t ); 72 i( `IFILE_GInfo ( fhp -> i , & fInfo ! SUCCESS ) { 73 `FILE_MANAGER_ERR ( v , 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 ( v , fhp , pgno , pgsize ) 19 ENV * v ; 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 ( v , pIFeMgr , t ); 29 i( t != 0) 30 ( t ); 36 offt = ( off_t ) pgsize * pgno ; 38 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 40 i( `IFILE_Trun ( fhp -> i , offt = SUCCESS ) 41 t = 0; 43 `FILE_MANAGER_ERR ( v , pIFeMgr , NULL , "IFILE_Trun", t ); 45 `IFILEMGR_R ( pIFeMgr ); 47 ( t ); 48 } } @../os_brew/os_unlink.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_uƚk ( v , th , ovwre_ ) 19 ENV * v ; 20 cڡ * th ; 21 ovwre_ ; 23 IFeMgr * ifmp ; 24 t ; 26 `FILE_MANAGER_CREATE ( v , ifmp , t ); 27 i( t != 0) 28 ( t ); 30 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 32 i( `IFILEMGR_Remove ( ifmp , th = EFAILED ) 33 `FILE_MANAGER_ERR ( v , ifmp , th , "IFILEMGR_Remove", t ); 35 `IFILEMGR_R ( ifmp ); 37 `COMPQUIET ( ovwre_ , 0); 39 ( t ); 40 } } @../os_brew/os_yield.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_yld ( v , cs , ucs ) 19 ENV * v ; 20 u_lg cs , ucs ; 22 `COMPQUIET ( v , NULL ); 24 #ifde HAVE_BREW_SDK2 25 `COMPQUIET ( cs , 0); 26 `COMPQUIET ( ucs , 0); 29 ; ucs > US_PER_SEC ; usecs -= US_PER_SEC) 30 ++ cs ; 38 `MSLEEP ( cs * MS_PER_SEC + ( ucs / US_PER_MS ) + 1); 40 } } @../os_qnx/os_qnx_fsync.c 9 ~"db_cfig.h " 11 ~"db_t.h " 27 $__qnx_fsync ( fhp ) 28 DB_FH * fhp ; 30 t ; 31 fd , unt , ags ; 33 fd = fhp ->fd; 34 unt = 1; 35 t = ags = 0; 36 i( `F_ISSET ( fhp , DB_FH_REGION )) 38 `RETRY_CHK ( `f ( fd , F_GETFL ), t ); 39 i( t == -1) 40 r ; 45 i( t & O_DSYNC != 0) 46 unt = 0; 48 t | O_DSYNC ; 49 ags = t ; 50 `RETRY_CHK ( `f ( fd , F_SETFL , ags ), t ); 51 i( t == -1) 52 r ; 55 `RETRY_CHK ( `wre ( fd , "", 0), t ); 56 i( t == -1) 57 r ; 59 i( unt ) { 60 `RETRY_CHK ( `f ( fd , F_GETFL ), t ); 61 i( t == -1) 62 r ; 63 t &~ O_DSYNC ; 64 ags = t ; 65 `RETRY_CHK ( `f ( fd , F_SETFL , ags ), t ); 66 i( t == -1) 67 r ; 70 `RETRY_CHK ( `fdasync ( fd ), t ); 72 r : ( t ); 73 } } @../os_qnx/os_qnx_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 23 $__os_qnx_gi_ݒ ( v , me , oags , mode , fh ) 24 ENV * v ; 25 cڡ * me ; 26 oags , mode ; 27 DB_FH ** fh ; 29 DB_FH * fhp ; 30 f_ags ; 31 t ; 41 i(( t = `__os_oc ( v , 1, ( DB_FH ), & fhp )) != 0) 42 ( t ); 43 i(( t = `__os_rdup ( v , me , & fhp ->name)) != 0) 44 r ; 45 i( v ! NULL ) { 46 `MUTEX_LOCK ( v ,nv-> mtx_v ); 47 `TAILQ_INSERT_TAIL (& v -> fdli , fhp , q ); 48 `MUTEX_UNLOCK ( v ,nv-> mtx_v ); 49 `F_SET ( fhp , DB_FH_ENVLINK ); 56 i(( fhp -> fd = `shm_ݒ ( me , oags , mode )) == -1) { 57 t = `__os_posix_r ( `__os_g_sy ()); 58 r : () `__os_ohd ( v , fhp ); 59 ( t ); 62 `F_SET ( fhp , DB_FH_OPENED ); 64 #ifde HAVE_FCNTL_F_SETFD 66 i(( f_ags = `f ( fhp -> fd , F_GETFD )) == -1 || 67 `f ( fhp -> fd , F_SETFD , f_ags | FD_CLOEXEC ) == -1) { 68 t = `__os_g_sy (); 69 `__db_sy ( v , t , "fcntl(F_SETFD)"); 70 () `__os_ohd ( v , fhp ); 71 ( `__os_posix_r ( t )); 74 `COMPQUIET ( f_ags , 0); 76 `F_SET ( fhp , DB_FH_OPENED ); 77 * fh = fhp ; 79 } } @../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 (( ENV *, cڡ *, REGINFO *, REGION *)); 47 __os_gda_fd_byme 48 __P (( ENV *, cڡ *, REGINFO *, REGION *)); 49 __os_gda_ __P (( ENV *)); 50 __os_gda_w __P (( ENV *, *)); 51 __os_gda_a __P (( ENV *, REGION *, )); 58 $__os_ch ( v , f , ) 59 ENV * v ; 60 REGINFO * f ; 61 REGION * ; 63 DB_ENV * dbv ; 64 t ; 66 dbv = v ->dbenv; 68 i( __os_gda = NULL ) 69 `__os_gda_ ( v ); 71 DB_BEGIN_SINGLE_THREAD ; 74 t = `__os_gda_fd_byme ( v , f -> me , inf, ); 81 i(! `F_ISSET ( f , REGION_CREATE )) { 82 i( t != 0) { 83 `__db_rx ( v , "segment %s doesotxist", 84 f -> me ); 85 t = EAGAIN ; 87 out ; 100 i( t !0 && ! ENOENT ) 101 out ; 103 i( dbv -> shm_key = INVALID_REGION_SEGID ) { 104 `__db_rx ( v , "no base shared memory ID specified"); 105 t = EAGAIN ; 106 out ; 108 i( t =0 && `__os_gda_a ( v , , 1) != 0) { 109 `__db_rx ( v , 111 dbv -> shm_key + ( f -> id - 1)); 112 t = EAGAIN ; 113 out ; 116 t = `__os_gda_lo ( v , f -> me , inf, ); 117 out : 118 DB_END_SINGLE_THREAD ; 119 ( t ); 120 } } 127 $__os_dach ( v , f , deroy ) 128 ENV * v ; 129 REGINFO * f ; 130 deroy ; 136 i( deroy ) 137 ( `__os_gda_a ( v , f -> , 0)); 139 } } 146 $__os_mfe ( v , th , fhp , n , is_rdly , add ) 147 ENV * v ; 148 * th ; 149 DB_FH * fhp ; 150 is_rdly ; 151 size_t n ; 152 ** add ; 155 `COMPQUIET ( v , NULL ); 156 `COMPQUIET ( th , NULL ); 157 `COMPQUIET ( fhp , NULL ); 158 `COMPQUIET ( is_rdly , 0); 159 `COMPQUIET ( n , 0); 160 `COMPQUIET ( add , NULL ); 161 ( DB_OPNOTSUP ); 162 } } 169 $__os_unmfe ( v , addr , n ) 170 ENV * v ; 171 * addr ; 172 size_t n ; 175 `COMPQUIET ( v , NULL ); 176 `COMPQUIET ( addr , NULL ); 177 `COMPQUIET ( n , 0); 178 ( DB_OPNOTSUP ); 179 } } 187 $__os_gda_ ( v ) 188 ENV * v ; 190 t ; 192 i( __os_gda ! NULL ) { 193 `__db_rx ( v , "shared memory segmentlreadyxists"); 194 ( EEXIST ); 200 DB_BEGIN_SINGLE_THREAD ; 201 __os_gda_size = OS_SEGDATA_STARTING_SIZE ; 202 t = `__os_oc ( v , 203 __os_gda_size , ( os_gda_t ), & __os_gda ); 204 DB_END_SINGLE_THREAD ; 205 ( t ); 206 } } 216 $__os_gda_deroy ( v ) 217 ENV * v ; 219 os_gda_t * p ; 220 i ; 222 i( __os_gda = NULL ) 225 DB_BEGIN_SINGLE_THREAD ; 226 i = 0; i < __os_gda_size ; i++) { 227 p = & __os_gda [ i ]; 228 i( p -> me ! NULL ) { 229 `__os_ ( v , p -> me ); 230 p -> me = NULL ; 232 i( p -> gmt ! NULL ) { 233 `__os_ ( v , p -> gmt ); 234 p -> gmt = NULL ; 236 p -> size = 0; 239 `__os_ ( v , __os_gda ); 240 __os_gda = NULL ; 241 __os_gda_size = 0; 242 DB_END_SINGLE_THREAD ; 245 } } 255 $__os_gda_lo ( v , me , f , ) 256 ENV * v ; 257 cڡ * me ; 258 REGINFO * f ; 259 REGION * ; 261 DB_ENV * dbv ; 262 os_gda_t * p ; 263 id , t ; 265 dbv = v ->dbenv; 267 i(( t = `__os_gda_w ( v , & id )) != 0) 268 ( t ); 270 p = & __os_gda [ id ]; 271 i(( t = `__os_oc ( v , 1, -> size , & p -> gmt )) != 0) 272 ( t ); 273 i(( t = `__os_rdup ( v , me , & p ->name)) != 0) { 274 `__os_ ( v , p -> gmt ); 275 p -> gmt = NULL ; 276 ( t ); 278 p -> size = ->size; 279 p -> gid = dbv -> shm_key + f -> id - 1; 281 f -> addr = p -> gmt ; 282 -> gid = id ; 285 } } 295 $__os_gda_w ( v , gidp ) 296 ENV * v ; 297 * gidp ; 299 os_gda_t * p ; 300 i , wsize , t ; 302 i( __os_gda = NULL ) { 303 `__db_rx ( v , "shared memory segmentot initialized"); 304 ( EAGAIN ); 307 i = 0; i < __os_gda_size ; i++) { 308 p = & __os_gda [ i ]; 309 i( p -> gmt = NULL ) { 310 * gidp = i ; 318 wsize = __os_gda_size + OS_SEGDATA_INCREMENT ; 319 i(( t = `__os_loc ( v , wsize * ( os_gda_t ), 320 & __os_gda )) != 0) 321 ( t ); 322 `memt (& __os_gda [ __os_gda_size ], 323 0, OS_SEGDATA_INCREMENT * ( os_gda_t )); 325 * gidp = __os_gda_size ; 326 __os_gda_size = wsize ; 329 } } 338 $__os_gda_fd_byme ( v , me , f , ) 339 ENV * v ; 340 cڡ * me ; 341 REGINFO * f ; 342 REGION * ; 344 DB_ENV * dbv ; 345 os_gda_t * p ; 346 gid ; 347 i ; 349 dbv = v ->dbenv; 351 i( __os_gda = NULL ) { 352 `__db_rx ( v , "shared memory segmentot initialized"); 353 ( EAGAIN ); 356 i( me = NULL ) { 357 `__db_rx ( v , "no segmentame given"); 358 ( EAGAIN ); 366 i( `F_ISSET ( f , REGION_CREATE )) 367 gid = dbv -> shm_key + ( f -> id - 1); 369 i( -> gid > __os_gda_size || 370 -> gid = INVALID_REGION_SEGID ) { 371 `__db_rx ( v , "Invalid segment id given"); 372 ( EAGAIN ); 374 gid = __os_gda [ ->segid].segid; 376 i = 0; i < __os_gda_size ; i++) { 377 p = & __os_gda [ i ]; 378 i( p -> me ! NULL && `rcmp (name,->name) == 0 && 379 p -> gid == segid) { 380 f -> addr = p -> gmt ; 381 -> gid = i ; 385 ( ENOENT ); 386 } } 393 $__os_gda_a ( v , , is_locked ) 394 ENV * v ; 395 REGION * ; 396 is_locked ; 398 os_gda_t * p ; 400 i( __os_gda = NULL ) { 401 `__db_rx ( v , "shared memory segmentot initialized"); 402 ( EAGAIN ); 405 i( -> gid < 0 ||p->gid > __os_gda_size ) { 406 `__db_rx ( v , "gmid %ld ouonge", -> gid ); 407 ( EINVAL ); 410 i( is_locked == 0) 411 DB_BEGIN_SINGLE_THREAD ; 412 p = & __os_gda [ -> gid ]; 413 i( p -> me ! NULL ) { 414 `__os_ ( v , p -> me ); 415 p -> me = NULL ; 417 i( p -> gmt ! NULL ) { 418 `__os_ ( v , p -> gmt ); 419 p -> gmt = NULL ; 421 p -> size = 0; 422 i( is_locked == 0) 423 DB_END_SINGLE_THREAD ; 428 } } @../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_vxworks/os_vx_yield.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_yld ( v , cs , ucs ) 19 ENV * v ; 20 u_lg cs , ucs ; 22 ticks_day , ticks_r_cd ; 24 `COMPQUIET ( v , NULL ); 27 ; ucs > US_PER_SEC ; usecs -= US_PER_SEC) 28 ++ cs ; 40 ticks_r_cd = `sysClkReG (); 41 ticks_day = 42 cs * ticks_r_cd + ( ucs *icks_r_cd/ US_PER_SEC ; 43 i( ticks_day =0 && ( cs !0 || ucs != 0)) 44 ticks_day = 1; 45 () `skDay ( ticks_day ); 46 } } @../os_windows/ce_ctime.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __os_wdows__numb __P ((*, )); 20 $__os_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/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 ( v , , mic ) 19 ENV * v ; 20 db_timeec * ; 21 mic ; 23 i( mic ) { 35 #TIMER_WRAP_SECONDS (50 * 24 * 60 * 60) ) 36 DWORD ϡ_ticks ; 37 time_t ba_cds ; 38 DWORD ticks ; 40 ticks = `GTickCou (); 41 i( ticks < ϡ_ticks ) 42 ba_cds + TIMER_WRAP_SECONDS ; 43 ϡ_ticks = ticks ; 44 -> tv_c = ba_cds + ( u_t32_t )( ticks / 1000); 45 -> tv_nc = ( u_t32_t )(( ticks % 1000* NS_PER_MS ); 47 #ifde DB_WINCE 48 FILETIME ; 49 LARGE_INTEGER rge_t ; 50 LONGLONG ns_s_och , utc1970 ; 51 SYSTEMTIME ; 53 () `GSyemTime (& ); 54 () `SyemTimeToFeTime (& , & ); 64 #NS100_PER_SEC ( NS_PER_SEC / 100) ) 65 #UTC_1970 ((( LONGLONG )27111902 << 32+ (LONGLONG)3577643008) ) 66 `memy (& rge_t , & , (large_int)); 67 utc1970 = UTC_1970 ; 68 ns_s_och = ( rge_t . QuadPt - utc1970 ); 69 -> tv_c = ( time_t )( ns_s_och / NS100_PER_SEC ); 70 -> tv_nc = ()( ns_s_och % NS100_PER_SEC ); 72 _timeb now ; 74 `_ime (& now ); 75 -> tv_c = now . time ; 76 -> tv_nc = now . mlm * NS_PER_MS ; 79 } } @../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_cpu.c 9 ~"db_cfig.h " 11 ~"db_t.h " 19 u_t32_t 20 $__os_u_cou () 22 SYSTEM_INFO SyemInfo ; 24 `GSyemInfo (& SyemInfo ); 26 (( u_t32_t ) SyemInfo . dwNumbOfProsss ); 27 } } @../os_windows/os_dir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_dli ( v , d , tud , me , ) 19 ENV * v ; 20 cڡ * d ; 21 tud , * ; 22 *** me ; 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 * me = NULL ; 32 * = 0; 34 `TO_TSTRING ( v , d , td , t ); 35 i( t != 0) 36 ( t ); 38 () `_rtf ( tfeec , DB_MAXPATHLEN , 39 `_T ("%s%hc*"), td , PATH_SEPARATOR [0]); 46 i(( dhd = 47 `FdFFe ( tfeec , & fda )= INVALID_HANDLE_VALUE ) { 48 i( `GLaE (= ERROR_NO_MORE_FILES ) 50 ( `__os_posix_r ( `__os_g_sy ())); 53 mes = NULL ; 54 ysz = t = t = 0; 56 i( tud || 57 ( fda . dwFeAribus & FILE_ATTRIBUTE_DIRECTORY ) == 0) { 58 i( fda . cFeName [0] = `_T ('.') && 59 ( fda . cFeName [1] = `_T ('\0') || 60 ( fda . cFeName [1] = `_T ('.') && 61 fda . cFeName [2] = `_T ('\0')))) 62 xt ; 63 i( t > ysz ) { 64 ysz += 100; 65 i(( t = `__os_loc ( v , 66 ysz * ( mes [0]), &names)) != 0) 67 r ; 75 `FROM_TSTRING ( v , fda . cFeName , ڒame , t ); 76 i( t != 0) 77 r ; 78 t = `__os_rdup ( v , ڒame , & mes [ t ]); 79 `FREE_STRING ( v , ڒame ); 80 i( t != 0) 81 r ; 82 t ++; 84 xt : 85 i(! `FdNextFe ( dhd , & fda )) { 86 i( `GLaE (= ERROR_NO_MORE_FILES ) 89 t = `__os_posix_r ( `__os_g_sy ()); 90 r ; 95 r : i(! `FdClo ( dhd && t == 0) 96 t = `__os_posix_r ( `__os_g_sy ()); 98 i( t == 0) { 99 * me = mes ; 100 * = t ; 101 } i( mes ! NULL ) 102 `__os_d ( v , mes , t ); 104 `FREE_STRING ( v , td ); 106 ( t ); 107 } } 114 $__os_d ( v , mes , t ) 115 ENV * v ; 116 ** mes ; 117 t ; 119 t > 0) 120 `__os_ ( v , mes [-- t ]); 121 `__os_ ( v , mes ); 122 } } @../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 ( v , ame , unique_okay , fidp ) 19 ENV * v ; 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 ( v , ame ! NULL ); 44 `memt ( fidp , 0, DB_FILE_ID_LEN ); 50 i(( t = `__os_ݒ ( v , ame , 0, 51 DB_OSO_RDONLY , DB_MODE_400 , & fhp )) != 0) 52 ( t ); 55 i(( tv = `GFeInfmiByHd ( fhp -> hd , & fi )= FALSE ) 56 t = `__os_g_sy (); 57 () `__os_ohd ( v , 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 ( v , & 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 ( v -> 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 ( v , fhp , offt , acque , nowa ) 19 ENV * v ; 20 DB_FH * fhp ; 21 acque , nowa ; 22 off_t offt ; 24 #ifde DB_WINCE 31 `__db_rx ( v , "fdlock APIot implemented for WinCE, DB_REGISTER " 33 ( EFAULT ); 35 DWORD low , high ; 36 DB_ENV * dbv ; 37 OVERLAPPED ov ; 38 t ; 40 dbv = v = NULL ? NULL :nv->dbenv; 42 `DB_ASSERT ( v , 43 `F_ISSET ( fhp , DB_FH_OPENED && fhp-> hd ! INVALID_HANDLE_VALUE ); 45 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 46 `__db_msg ( v , 48 fhp -> me , acque ? "acque": "a", ( u_lg ) offt ); 54 `DB_ASSERT ( v , offt < ( u_t64_t ) INT64_MAX ); 55 offt = UINT64_MAX - offset; 56 low = ( DWORD ) offt ; 57 high = ( DWORD )( offt >> 32); 59 i( acque ) { 60 i( nowa ) 61 `RETRY_CHK_EINTR_ONLY ( 62 ! `LockFe ( fhp -> hd , low , high , 1, 0), t ); 63 i( `__os_is_w ()) { 64 `memt (& ov , 0, (over)); 65 ov . Offt = low ; 66 ov . OfftHigh = high ; 67 `RETRY_CHK_EINTR_ONLY ( 68 ! `LockFeEx ( fhp -> hd , LOCKFILE_EXCLUSIVE_LOCK , 69 0, 1, 0, & ov ), 70 t ); 74 `RETRY_CHK_EINTR_ONLY ( 75 ! `LockFe ( fhp -> hd , low , high , 1, 0), 76 t ); 77 i( `__os_posix_r ( t ! EAGAIN ) 79 `__os_yld ( v , 1, 0); 83 `RETRY_CHK_EINTR_ONLY ( 84 ! `UockFe ( fhp -> hd , low , high , 1, 0), t ); 86 ( `__os_posix_r ( t )); 88 } } @../os_windows/os_fsync.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_fsync ( v , fhp ) 19 ENV * v ; 20 DB_FH * fhp ; 22 DB_ENV * dbv ; 23 t ; 25 dbv = v = NULL ? NULL :nv->dbenv; 31 i( `F_ISSET ( fhp , DB_FH_NOSYNC )) 34 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 35 `__db_msg ( v , "fes: flush %s", fhp -> me ); 37 `RETRY_CHK ((! `FlushFeBufrs ( fhp -> hd )), t ); 38 i( t != 0) { 39 `__db_sy ( v , t , "FlushFileBuffers"); 40 t = `__os_posix_r (ret); 42 ( t ); 43 } } @../os_windows/os_getenv.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_gv ( v , me , b , bu ) 19 ENV * v ; 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 ( v , me , ame , t ); 50 i( t != 0) 51 ( t ); 58 t = `GEnvmtVb ( ame , tbuf , (tbuf)); 59 `FREE_STRING ( v , ame ); 71 i( t == 0) { 72 i(( t = `__os_g_sy ()= ERROR_ENVVAR_NOT_FOUND ) { 73 * b = NULL ; 76 `__db_sy ( v , t , "GetEnvironmentVariable"); 77 ( `__os_posix_r ( t )); 79 i( t > ()( tbuf )) 80 sml_buf ; 82 `FROM_TSTRING ( v , tbuf , p , t ); 83 i( t != 0) 84 ( t ); 85 i( ` ( p < bu ) 86 () `ry (* b , p ); 88 * b = NULL ; 89 `FREE_STRING ( v , p ); 90 i(* b = NULL ) 91 sml_buf ; 95 sml_buf : 96 * b = NULL ; 97 `__db_rx ( v , 99 me , p ); 100 ( EINVAL ); 102 } } @../os_windows/os_handle.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒhd ( v , me , ags , mode , fh ) 19 ENV * v ; 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 ( v , 1, ( DB_FH ), & fhp )) != 0) 44 ( t ); 45 i(( t = `__os_rdup ( v , me , & fhp ->name)) != 0) 46 r ; 47 i( v ! NULL ) { 48 `MUTEX_LOCK ( v ,nv-> mtx_v ); 49 `TAILQ_INSERT_TAIL (& v -> fdli , fhp , q ); 50 `MUTEX_UNLOCK ( v ,nv-> 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_yld ( v , ĕ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 ( v , fhp ); 98 ( t ); 100 } } 107 $__os_ohd ( v , fhp ) 108 ENV * v ; 109 DB_FH * fhp ; 111 DB_ENV * dbv ; 112 t , t_t ; 114 t = 0; 116 i( v ! NULL ) { 117 dbv = v ->dbenv; 118 i( fhp -> me ! NULL && `FLD_ISSET ( 119 dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 120 `__db_msg ( v , "fes: %s: clo", fhp -> me ); 122 i( `F_ISSET ( fhp , DB_FH_ENVLINK )) { 127 `MUTEX_LOCK ( v ,nv-> mtx_v ); 128 `TAILQ_REMOVE (& v -> fdli , fhp , q ); 129 `MUTEX_UNLOCK ( v ,nv-> mtx_v ); 134 i( `F_ISSET ( fhp , DB_FH_OPENED )) { 135 i( fhp -> hd ! INVALID_HANDLE_VALUE ) 136 `RETRY_CHK ((! `CloHd ( fhp -> hd )), t ); 138 #ifde DB_WINCE 139 t = EFAULT ; 141 `RETRY_CHK (( `_o ( fhp -> fd )), t ); 144 i( fhp -> unc_hd ! INVALID_HANDLE_VALUE ) { 145 `RETRY_CHK ((! `CloHd ( fhp -> unc_hd )), t_t ); 146 i( t_t !0 && t == 0) 147 t = t_t ; 150 i( t != 0) { 151 `__db_sy ( v , t , "CloseHandle"); 152 t = `__os_posix_r (ret); 157 i( `F_ISSET ( fhp , DB_FH_UNLINK )) 158 () `__os_uƚk ( v , fhp -> me , 0); 160 i( fhp -> me ! NULL ) 161 `__os_ ( v , fhp -> me ); 162 `__os_ ( v , fhp ); 164 ( t ); 165 } } @../os_windows/os_map.c 9 ~"db_cfig.h " 11 ~"db_t.h " 13 __os_m 14 __P (( ENV *, *, REGINFO *, DB_FH *, size_t , , , , **)); 15 __os_unique_me __P (( _TCHAR *, HANDLE , _TCHAR *, size_t )); 22 $__os_ch ( v , f , ) 23 ENV * v ; 24 REGINFO * f ; 25 REGION * ; 27 DB_FH * fhp ; 28 t ; 35 i(! `F_ISSET ( v , ENV_PRIVATE && `__os_is_w () == 0) { 36 `__db_r ( v , 37 EINVAL , "Windows 9X systems must specify DB_PRIVATE"); 38 ( EINVAL ); 46 i(( t = `__os_ݒ ( v , f -> me , 0, DB_OSO_REGION | 47 ( `F_ISSET ( f , REGION_CREATE_OK ? DB_OSO_CREATE : 0), 48 v -> db_mode , & fhp )) != 0) { 49 `__db_r ( v , t , "%s", f -> me ); 50 ( t ); 59 t = `__os_m ( v , f -> me , inf, fhp , -> size , 60 1, `F_ISSET ( v , ENV_SYSTEM_MEM ), 0, & f -> addr ); 61 i( t =0 && `F_ISSET ( v , ENV_SYSTEM_MEM )) 62 -> gid = 1; 64 () `__os_ohd ( v , fhp ); 66 ( t ); 67 } } 74 $__os_dach ( v , f , deroy ) 75 ENV * v ; 76 REGINFO * f ; 77 deroy ; 79 DB_ENV * dbv ; 80 t , t_t ; 82 dbv = v ->dbenv; 84 i( f -> w_hd ! NULL ) { 85 () `CloHd ( f -> w_hd ); 86 f -> w_hd = NULL ; 89 t = ! `UnmVwOfFe ( f -> addr ? `__os_g_sy () : 0; 90 i( t != 0) { 91 `__db_sy ( v , t , "UnmapViewOfFile"); 92 t = `__os_posix_r (ret); 95 i(! `F_ISSET ( v , ENV_SYSTEM_MEM && deroy && 96 ( t_t = `__os_uƚk ( v , f -> me , 1)!0 && t == 0) 97 t = t_t ; 99 ( t ); 100 } } 107 $__os_mfe ( v , th , fhp , n , is_rdly , addr ) 108 ENV * v ; 109 * th ; 110 DB_FH * fhp ; 111 is_rdly ; 112 size_t n ; 113 ** addr ; 115 #ifde DB_WINCE 124 ( EFAULT ); 126 DB_ENV * dbv ; 128 dbv = v = NULL ? NULL :nv->dbenv; 130 i( dbv ! NULL && 131 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 132 `__db_msg ( v , "fes: mm %s", th ); 133 ( `__os_m ( v , th , NULL , fhp , n , 0, 0, is_rdly , addr )); 135 } } 142 $__os_unmfe ( v , addr , n ) 143 ENV * v ; 144 * addr ; 145 size_t n ; 147 DB_ENV * dbv ; 149 dbv = v = NULL ? NULL :nv->dbenv; 151 i( dbv ! NULL && 152 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 153 `__db_msg ( v , "fileops: munmap"); 155 (! `UnmVwOfFe ( addr ? `__os_posix_r ( `__os_g_sy ()) : 0); 156 } } 186 $__os_unique_me ( ig_th , hfe , su_th , su_th_n ) 187 _TCHAR * ig_th , * su_th ; 188 HANDLE hfe ; 189 size_t su_th_n ; 191 BY_HANDLE_FILE_INFORMATION fefo ; 192 _TCHAR * bame , * p ; 199 bame = `_tcchr ( ig_th , '/'); 200 p = `_tcchr ( ig_th , '\\'); 201 i( bame = NULL || ( p != NULL && > basename)) 202 bame = p ; 203 i( bame = NULL ) 204 bame = `_tcchr ( ig_th , ':'); 206 i( bame = NULL ) 207 bame = ig_th ; 209 bame ++; 211 i(! `GFeInfmiByHd ( hfe , & fefo )) 212 ( `__os_posix_r ( `__os_g_sy ())); 214 () `_rtf ( su_th , su_th_n , 215 `_T ("__db_shmem.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%8.8lx.%s"), 216 fefo . dwVumeSlNumb , 217 fefo . nFeIndexHigh , 218 fefo . nFeIndexLow , 219 fefo . CiTime . dwHighDeTime , 220 fefo . CiTime . dwHighDeTime , 221 bame ); 224 } } 231 $__os_m ( v , th , f , fhp , n , is_gi , is_syem , is_rdly , addr ) 232 ENV * v ; 233 REGINFO * f ; 234 * th ; 235 DB_FH * fhp ; 236 is_gi , is_syem , is_rdly ; 237 size_t n ; 238 ** addr ; 240 HANDLE hMemy ; 241 t , u_gefe ; 242 _TCHAR * h , shmem_me [ DB_MAXPATHLEN ]; 243 * pMemy ; 244 __t64 n64 ; 246 t = 0; 247 i( f ! NULL ) 248 f -> w_hd = NULL ; 256 n64 = n ; 258 u_gefe = is_gi && is_syem ; 264 i( u_gefe ) { 265 #ifde DB_WINCE 266 `__db_rx ( v , "Unableo memory mapegions using system " 268 ( EFAULT ); 270 `TO_TSTRING ( v , th , h , t ); 271 i( t != 0) 272 ( t ); 273 t = `__os_unique_me ( h , fhp -> hd , 274 shmem_me , (shmem_name)); 275 `FREE_STRING ( v , h ); 276 i( t != 0) 277 ( t ); 302 hMemy = NULL ; 303 i( u_gefe ) { 304 #ide DB_WINCE 305 hMemy = `OnFeMpg ( 306 is_rdly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS , 307 0, shmem_me ); 309 i( hMemy = NULL && `F_ISSET ( f , REGION_CREATE_OK )) 310 hMemy = `CeFeMpg (( HANDLE )-1, 0, 311 is_rdly ? PAGE_READONLY : PAGE_READWRITE , 312 ( DWORD )( n64 >> 32), (DWORD64, shmem_me ); 315 hMemy = `CeFeMpg ( fhp -> hd , 0, 316 is_rdly ? PAGE_READONLY : PAGE_READWRITE , 317 ( DWORD )( n64 >> 32), (DWORD64, NULL ); 318 #ifde DB_WINCE 323 fhp -> hd = INVALID_HANDLE_VALUE ; 324 `F_CLR ( fhp , DB_FH_OPENED ); 328 i( hMemy = NULL ) { 329 t = `__os_g_sy (); 330 `__db_sy ( v , t , "OpenFileMapping"); 331 ( `__v_nic ( v , `__os_posix_r ( t ))); 334 pMemy = `MVwOfFe ( hMemy , 335 ( is_rdly ? FILE_MAP_READ : FILE_MAP_ALL_ACCESS ), 0, 0, n ); 336 i( pMemy = NULL ) { 337 t = `__os_g_sy (); 338 `__db_sy ( v , t , "MapViewOfFile"); 339 ( `__v_nic ( v , `__os_posix_r ( t ))); 355 i( u_gefe && f ! NULL ) 356 f -> w_hd = hMemy ; 358 `CloHd ( hMemy ); 360 * addr = pMemy ; 361 ( t ); 362 } } @../os_windows/os_mkdir.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_mkd ( v , me , mode ) 19 ENV * v ; 20 cڡ * me ; 21 mode ; 23 DB_ENV * dbv ; 24 _TCHAR * ame ; 25 t ; 27 dbv = v = NULL ? NULL :nv->dbenv; 29 i( dbv ! NULL && 30 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 31 `__db_msg ( v , "fes: mkd %s", me ); 34 `TO_TSTRING ( v , me , ame , t ); 35 i( t != 0) 36 ( t ); 37 `RETRY_CHK (! `CeDey ( ame , NULL ), t ); 38 `FREE_STRING ( v , ame ); 39 i( t != 0) 40 ( `__os_posix_r ( t )); 42 ( t ); 43 } } @../os_windows/os_open.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ݒ ( v , me , ge_size , ags , mode , fh ) 19 ENV * v ; 20 cڡ * me ; 21 u_t32_t ge_size , ags ; 22 mode ; 23 DB_FH ** fh ; 25 DB_ENV * dbv ; 26 DB_FH * fhp ; 27 #ide DB_WINCE 28 DWORD u_size , _size , _us , tٮ_us ; 29 _TCHAR * drive , dbuf [4]; 31 acss , , ag , ĕt , t , she ; 32 _TCHAR * ame ; 34 dbv = v = NULL ? NULL :nv->dbenv; 35 * fh = NULL ; 36 ame = NULL ; 38 i( dbv ! NULL && 39 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 40 `__db_msg ( v , "fes: o%s", me ); 42 #OKFLAGS \ 43 ( DB_OSO_ABSMODE | DB_OSO_CREATE | DB_OSO_DIRECT | DB_OSO_DSYNC |\ 44 DB_OSO_EXCL | DB_OSO_RDONLY | DB_OSO_REGION | DB_OSO_SEQ | \ 45 DB_OSO_TEMP | DB_OSO_TRUNC ) ) 46 i(( t = `__db_fchk ( v , "__os_ݒ", ags , OKFLAGS )) != 0) 47 ( t ); 49 `TO_TSTRING ( v , me , ame , t ); 50 i( t != 0) 51 r ; 61 i(( t = `__os_oc ( v , 1, ( DB_FH ), & fhp )) != 0) 62 ( t ); 63 i(( t = `__os_rdup ( v , me , & fhp ->name)) != 0) 64 r ; 65 i( v ! NULL ) { 66 `MUTEX_LOCK ( v ,nv-> mtx_v ); 67 `TAILQ_INSERT_TAIL (& v -> fdli , fhp , q ); 68 `MUTEX_UNLOCK ( v ,nv-> mtx_v ); 69 `F_SET ( fhp , DB_FH_ENVLINK ); 88 acss = GENERIC_READ ; 89 i(! `LF_ISSET ( DB_OSO_RDONLY )) 90 acss | GENERIC_WRITE ; 92 #ifde DB_WINCE 98 i( `LF_ISSET ( DB_OSO_REGION )) 99 she = GENERIC_READ | GENERIC_WRITE ; 101 she = FILE_SHARE_READ | FILE_SHARE_WRITE ; 103 she = FILE_SHARE_READ | FILE_SHARE_WRITE ; 104 i( `__os_is_w ()) 105 she | FILE_SHARE_DELETE ; 107 = FILE_ATTRIBUTE_NORMAL ; 113 i( `LF_ISSET ( DB_OSO_CREATE && LF_ISSET( DB_OSO_EXCL )) 114 ag = CREATE_NEW ; 115 i(! `LF_ISSET ( DB_OSO_CREATE && LF_ISSET( DB_OSO_TRUNC )) 116 ag = TRUNCATE_EXISTING ; 117 i( `LF_ISSET ( DB_OSO_TRUNC )) 118 ag = CREATE_ALWAYS ; 119 i( `LF_ISSET ( DB_OSO_CREATE )) 120 ag = OPEN_ALWAYS ; 122 ag = OPEN_EXISTING ; 124 i( `LF_ISSET ( DB_OSO_DSYNC )) { 125 `F_SET ( fhp , DB_FH_NOSYNC ); 126 | FILE_FLAG_WRITE_THROUGH ; 129 #ide DB_WINCE 130 i( `LF_ISSET ( DB_OSO_SEQ )) 131 | FILE_FLAG_SEQUENTIAL_SCAN ; 133 | FILE_FLAG_RANDOM_ACCESS ; 136 i( `LF_ISSET ( DB_OSO_TEMP )) 137 | FILE_FLAG_DELETE_ON_CLOSE ; 148 #ide DB_WINCE 149 i( `LF_ISSET ( DB_OSO_DIRECT && ge_size !0 && me [0] != '\0') { 150 i( me [1] == ':') { 151 drive = dbuf ; 152 `_rtf ( dbuf , (dbuf), `_T ("%c:\\"), ame [0]); 154 drive = NULL ; 160 i( `GDiskFeS ( drive , & u_size , 161 & _size , & _us , & tٮ_us ) && 162 ge_size % _size == 0) 163 | FILE_FLAG_NO_BUFFERING ; 167 fhp -> hd = fhp-> unc_hd = INVALID_HANDLE_VALUE ; 168 ĕt = 1;; ++nrepeat) { 169 i( fhp -> hd = INVALID_HANDLE_VALUE ) { 170 #ifde DB_WINCE 171 i( `LF_ISSET ( DB_OSO_REGION )) 172 fhp -> hd = `CeFeFMpg ( ame , 173 acss , she , NULL , ag , , 0); 176 fhp -> hd = `CeFe ( ame , 177 acss , she , NULL , ag , , 0); 186 #ide DB_WINCE 193 i( fhp -> hd ! INVALID_HANDLE_VALUE && 194 ! `LF_ISSET ( DB_OSO_RDONLY | DB_OSO_TEMP ) && 195 fhp -> unc_hd = INVALID_HANDLE_VALUE ) 196 fhp -> unc_hd = `CeFe ( 197 ame , acss , she , NULL , OPEN_EXISTING , , 0); 199 i( fhp -> hd = INVALID_HANDLE_VALUE || 200 (! `LF_ISSET ( DB_OSO_RDONLY | DB_OSO_TEMP ) && 201 fhp -> unc_hd = INVALID_HANDLE_VALUE )) 203 i( fhp -> hd = INVALID_HANDLE_VALUE ) 212 t = `__os_posix_r ( `__os_g_sy ()); 213 i(( t ! ENFILE && ! EMFILE && ! ENOSPC ) || 214 ĕt > 3) 215 r ; 217 `__os_yld ( v , ĕt * 2, 0); 222 `FREE_STRING ( v , ame ); 224 i( `LF_ISSET ( DB_OSO_REGION )) 225 `F_SET ( fhp , DB_FH_REGION ); 226 `F_SET ( fhp , DB_FH_OPENED ); 227 * fh = fhp ; 230 r : `FREE_STRING ( v , ame ); 231 i( fhp ! NULL ) 232 () `__os_ohd ( v , fhp ); 233 ( t ); 234 } } @../os_windows/os_rename.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_me ( v , dme , wme , st ) 19 ENV * v ; 20 cڡ * dme , * wme ; 21 u_t32_t st ; 23 DB_ENV * dbv ; 24 _TCHAR * tdme , * ewme ; 25 t ; 27 dbv = v = NULL ? NULL :nv->dbenv; 29 i( dbv ! NULL && 30 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 31 `__db_msg ( v , "fes:am%t%s", dme , wme ); 33 `TO_TSTRING ( v , dme , tdme , t ); 34 i( t != 0) 35 ( t ); 36 `TO_TSTRING ( v , wme , ewme , t ); 37 i( t != 0) { 38 `FREE_STRING ( v , tdme ); 39 ( t ); 42 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 44 i(! `MoveFe ( tdme , ewme )) 45 t = `__os_g_sy (); 47 i( `__os_posix_r ( t = EEXIST ) { 48 t = 0; 49 #ide DB_WINCE 50 i( `__os_is_w ()) { 51 i(! `MoveFeEx ( 52 tdme , ewme , MOVEFILE_REPLACE_EXISTING )) 53 t = `__os_g_sy (); 64 () `DeFe ( ewme ); 65 i(! `MoveFe ( tdme , ewme )) 66 t = `__os_g_sy (); 70 `FREE_STRING ( v , ewme ); 71 `FREE_STRING ( v , tdme ); 73 i( t != 0) { 74 i( st == 0) 75 `__db_sy ( 76 v , t , "MoveFeEx %%s", dme , wme ); 77 t = `__os_posix_r (ret); 80 ( t ); 81 } } @../os_windows/os_rw.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_io ( v , , fhp , pgno , pgsize , tive , io_n , buf , ni ) 19 ENV * v ; 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 DB_ENV * dbv ; 32 DWORD nbys ; 33 OVERLAPPED ov ; 34 ULONG64 off ; 35 dbv = v = NULL ? NULL :nv->dbenv; 36 i(( off = tive ) == 0) 37 off = ( ULONG64 ) pgsize * pgno ; 38 ov . Offt = ( DWORD )( off & 0xffffffff); 39 ov . OfftHigh = ( DWORD )( off >> 32); 40 ov . hEvt = 0; 42 i( dbv ! NULL && 43 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS_ALL )) 44 `__db_msg ( v , 46 = DB_IO_READ ? "read" : "write", 47 fhp -> me , ( u_lg ) io_n , (u_lg) off ); 49 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 51 ) { 52 DB_IO_READ : 53 #i `defed ( HAVE_STATISTICS ) 54 ++ fhp -> ad_cou ; 56 i(! `RdFe ( fhp -> hd , 57 buf , ( DWORD ) io_n , & nbys , & ov )) 58 ow ; 60 DB_IO_WRITE : 61 #ifde HAVE_FILESYSTEM_NOTZERO 62 i( `__os_fs_nzo ()) 63 ow ; 65 #i `defed ( HAVE_STATISTICS ) 66 ++ fhp -> wre_cou ; 68 i(! `WreFe ( fhp -> hd , 69 buf , ( DWORD ) io_n , & nbys , & ov )) 70 ow ; 73 i( nbys = io_n ) { 74 * ni = ( size_t ) nbys ; 79 ow : 81 `MUTEX_LOCK ( v , fhp -> mtx_fh ); 83 i(( t = `__os_ek ( v , fhp , pgno , pgsize , tive )) != 0) 84 r ; 86 ) { 87 DB_IO_READ : 88 t = `__os_ad ( v , fhp , buf , io_n , ni ); 90 DB_IO_WRITE : 91 t = `__os_wre ( v , fhp , buf , io_n , ni ); 95 r : `MUTEX_UNLOCK ( v , fhp -> mtx_fh ); 97 ( t ); 98 } } 105 $__os_ad ( v , fhp , addr , n , p ) 106 ENV * v ; 107 DB_FH * fhp ; 108 * addr ; 109 size_t n ; 110 size_t * p ; 112 DB_ENV * dbv ; 113 DWORD cou ; 114 size_t offt , ; 115 u_t8_t * ddr ; 116 t ; 118 dbv = v = NULL ? NULL :nv->dbenv; 119 t = 0; 121 #i `defed ( HAVE_STATISTICS ) 122 ++ fhp -> ad_cou ; 124 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 125 `__db_msg ( v , 126 "fes:d %s: %lu bys", fhp -> me , ( u_lg ) n ); 128 ddr = addr , 129 offt = 0; off< n ; ddr + , offset +=r) { 130 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 131 `RETRY_CHK ((! `RdFe ( fhp -> hd , 132 ddr , ( DWORD )( n - offt ), & cou , NULL )), t ); 133 i( cou =0 || t != 0) 135 = ( size_t ) cou ; 137 * p = ddr - ( u_t8_t *) addr ; 138 i( t != 0) { 139 `__db_sy ( v , t , "read: 0x%lx, %lu", 140 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 141 t = `__os_posix_r (ret); 143 ( t ); 144 } } 151 $__os_wre ( v , fhp , addr , n , nwp ) 152 ENV * v ; 153 DB_FH * fhp ; 154 * addr ; 155 size_t n ; 156 size_t * nwp ; 158 t ; 160 #ifde HAVE_FILESYSTEM_NOTZERO 162 i( `__os_fs_nzo () && 163 ( t = `__db_zo_fl ( v , fhp )) != 0) 164 ( t ); 166 ( `__os_physwre ( v , fhp , addr , n , nwp )); 167 } } 174 $__os_physwre ( v , fhp , addr , n , nwp ) 175 ENV * v ; 176 DB_FH * fhp ; 177 * addr ; 178 size_t n ; 179 size_t * nwp ; 181 DB_ENV * dbv ; 182 DWORD cou ; 183 size_t offt , nw ; 184 u_t8_t * ddr ; 185 t ; 187 dbv = v = NULL ? NULL :nv->dbenv; 188 t = 0; 190 #i `defed ( HAVE_STATISTICS ) 191 ++ fhp -> wre_cou ; 193 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 194 `__db_msg ( v , 195 "fes: wr%s: %lu bys", fhp -> me , ( u_lg ) n ); 197 ddr = addr , 198 offt = 0; off< n ; ddr + nw , offset +=w) { 199 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 200 `RETRY_CHK ((! `WreFe ( fhp -> hd , 201 ddr , ( DWORD )( n - offt ), & cou , NULL )), t ); 202 i( t != 0) 204 nw = ( size_t ) cou ; 206 * nwp = n ; 207 i( t != 0) { 208 `__db_sy ( v , t , "write: %#lx, %lu", 209 `P_TO_ULONG ( ddr ), ( u_lg ) n - offt ); 210 t = `__os_posix_r (ret); 212 `DB_EVENT ( v , DB_EVENT_WRITE_FAILED , NULL ); 214 ( t ); 215 } } @../os_windows/os_seek.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_ek ( v , fhp , pgno , pgsize , tive ) 19 ENV * v ; 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 DB_ENV * dbv ; 34 off_t offt ; 35 t ; 37 dbv = v = NULL ? NULL :nv->dbenv; 39 #i `defed ( HAVE_STATISTICS ) 40 ++ fhp -> ek_cou ; 43 offt = ( off_t ) pgsize * pgno + tive ; 45 i( dbv ! NULL && `FLD_ISSET (dbv-> vbo , DB_VERB_FILEOPS_ALL )) 46 `__db_msg ( v , 47 "fes: sk %t%lu", fhp -> me , ( u_lg ) offt ); 49 offbys . bigt = offt ; 50 t = ( `SFePor ( fhp -> hd , offbys . low , 51 & offbys . high , FILE_BEGIN =( DWORD )-1? `__os_g_sy () : 0; 53 i( t == 0) { 54 fhp -> pgsize =gsize; 55 fhp -> pgno =gno; 56 fhp -> offt = tive ; 58 `__db_sy ( v , t , 59 "ek: %lu: (%lu * %lu+ %lu", ( u_lg ) offt , 60 ( u_lg ) pgno , (u_lg) pgsize , (u_lg) tive ); 61 t = `__os_posix_r (ret); 64 ( t ); 65 } } @../os_windows/os_stat.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_exis ( v , th , isdp ) 19 ENV * v ; 20 cڡ * th ; 21 * isdp ; 23 DB_ENV * dbv ; 24 DWORD s ; 25 _TCHAR * h ; 26 t ; 28 dbv = v = NULL ? NULL :nv->dbenv; 30 `TO_TSTRING ( v , th , h , t ); 31 i( t != 0) 32 ( t ); 34 i( dbv ! NULL && 35 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 36 `__db_msg ( v , "fes: s%s", th ); 38 `RETRY_CHK ( 39 (( s = `GFeAribus ( h )=( DWORD )-1 ? 1 : 0), t ); 40 i( t == 0) { 41 i( isdp ! NULL ) 42 * isdp = ( s & FILE_ATTRIBUTE_DIRECTORY ); 44 t = `__os_posix_r (ret); 46 `FREE_STRING ( v , h ); 47 ( t ); 48 } } 56 $__os_iofo ( v , th , fhp , mby , by , iosiz ) 57 ENV * v ; 58 cڡ * th ; 59 DB_FH * fhp ; 60 u_t32_t * mby , * by , * iosiz ; 62 t ; 63 BY_HANDLE_FILE_INFORMATION bhfi ; 64 __t64 fesize ; 66 `RETRY_CHK ((! `GFeInfmiByHd ( fhp -> hd , & bhfi )), t ); 67 i( t != 0) { 68 `__db_sy ( v , t , "GetFileInformationByHandle"); 69 ( `__os_posix_r ( t )); 72 fesize = (( __t64 ) bhfi . nFeSizeHigh << 32) + 73 bhfi . nFeSizeLow ; 76 i( mby ! NULL ) 77 * mby = ( u_t32_t )( fesize / MEGABYTE ); 78 i( by ! NULL ) 79 * by = ( u_t32_t )( fesize % MEGABYTE ); 87 i( iosiz ! NULL ) 88 * iosiz = DB_DEF_IOSIZE ; 90 } } @../os_windows/os_truncate.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_un ( v , fhp , pgno , pgsize ) 19 ENV * v ; 20 DB_FH * fhp ; 21 db_pgno_t pgno ; 22 u_t32_t pgsize ; 26 __t64 bigt ; 28 low ; 29 high ; 31 } off ; 32 DB_ENV * dbv ; 33 off_t offt ; 34 t ; 36 dbv = v = NULL ? NULL :nv->dbenv; 37 offt = ( off_t ) pgsize * pgno ; 38 t = 0; 40 i( dbv ! NULL && 41 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 42 `__db_msg ( v , 43 "fes:run %t%lu", fhp -> me , ( u_lg ) offt ); 45 #ifde HAVE_FILESYSTEM_NOTZERO 50 i( `__os_fs_nzo ()) { 51 off_t _offt ; 52 u_t32_t mbys , bys ; 55 i(( t = 56 `__os_iofo ( v , NULL , fhp , & mbys , & bys , NULL)) != 0) 57 ( t ); 58 _offt = ( off_t ) mbys * MEGABYTE + bys ; 60 i( offt > _offt ) 65 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 87 `RETRY_CHK (( off . bigt = ( __t64 ) pgsize * pgno , 88 ( `SFePor ( fhp -> unc_hd , off . low , &off. high , FILE_BEGIN ) 89 = INVALID_SET_FILE_POINTER && `GLaE (! NO_ERROR ) || 90 ! `SEndOfFe ( fhp -> unc_hd )), t ); 92 i( t != 0) { 93 `__db_sy ( v , t , "SFePor: %lu", pgno * pgsize ); 94 t = `__os_posix_r (ret); 97 ( t ); 98 } } @../os_windows/os_unlink.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_uƚk ( v , th , ovwre_ ) 19 ENV * v ; 20 cڡ * th ; 21 ovwre_ ; 23 DB_ENV * dbv ; 24 HANDLE h ; 25 _TCHAR * h , * ig_h , buf [ DB_MAXPATHLEN ]; 26 u_t32_t id ; 27 t , t_t ; 29 dbv = v = NULL ? NULL :nv->dbenv; 31 i( dbv ! NULL && 32 `FLD_ISSET ( dbv -> vbo , DB_VERB_FILEOPS | DB_VERB_FILEOPS_ALL )) 33 `__db_msg ( v , "fes: uƚk %s", th ); 36 i( dbv ! NULL && ovwre_ && `F_ISSET (dbv, DB_ENV_OVERWRITE )) 37 () `__db_fe_mui_wre ( v , th ); 39 `TO_TSTRING ( v , th , h , t ); 40 i( t != 0) 41 ( t ); 42 ig_h = h ; 44 `LAST_PANIC_CHECK_BEFORE_IO ( v ); 61 i( `__os_is_w ()) { 62 `__os_unique_id ( v , & id ); 63 `_rtf ( buf , DB_MAXPATHLEN , `_T ("%s.d.%010u"), h , id ); 64 i( `MoveFe ( h , buf )) 65 h = buf ; 67 t = `__os_g_sy (); 68 i( `__os_posix_r ( t ! ENOENT ) 69 `__db_r ( v , t , 71 th ); 78 h = `CeFe ( h , 0, 79 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE , 80 NULL , OPEN_EXISTING , FILE_FLAG_DELETE_ON_CLOSE , 0); 81 i( h ! INVALID_HANDLE_VALUE ) { 82 () `CloHd ( h ); 83 i( `GFeAribus ( h = INVALID_FILE_ATTRIBUTES ) 84 skd ; 88 `RETRY_CHK ((! `DeFe ( h )), t ); 90 skd : 91 `FREE_STRING ( v , ig_h ); 101 i( t != 0) { 102 i(( t_t = `__os_posix_r ( t )! ENOENT ) 103 `__db_sy ( v , t , "DeFe: %s", th ); 104 t = t_t ; 107 ( t ); 108 } } @../os_windows/os_yield.c 9 ~"db_cfig.h " 11 ~"db_t.h " 18 $__os_yld ( v , cs , ucs ) 19 ENV * v ; 20 u_lg cs , ucs ; 22 `COMPQUIET ( v , NULL ); 25 ; ucs > US_PER_SEC ; usecs -= US_PER_SEC) 26 ++ cs ; 34 `S˕ ( cs * MS_PER_SEC + ( ucs / US_PER_MS ) + 1); 35 } } @../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 DB * dbp ; 47 QAMDATA * qp ; 48 QUEUE_CURSOR * ; 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 ( dbc , & pg , g_mode , & -> ge )) != 0) { 63 i(! `FLD_ISSET ( g_mode , DB_MPOOL_CREATE ) && 64 ( t = DB_PAGE_NOTFOUND || = ENOENT )) 65 t = 0; 68 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 69 t = t_t ; 70 ( t ); 72 -> pgno = pg ; 73 -> dx = `QAM_RECNO_INDEX ( dbp , pg , * ); 75 i( `PGNO ( -> ge ) == 0) { 81 i(! `FLD_ISSET ( g_mode , DB_MPOOL_CREATE )) { 82 * exap = 0; 85 `DB_ASSERT ( dbp -> v , `FLD_ISSET ( g_mode , DB_MPOOL_CREATE )); 86 `PGNO ( -> ge pg ; 87 `TYPE ( -> ge P_QAMDATA ; 90 qp = `QAM_GET_RECORD ( dbp , -> ge , cp-> dx ); 91 * exap = `F_ISSET ( qp , QAM_VALID ) ? 1 : 0; 93 ( t ); 94 } } 108 $__qam_pem ( dbc , g , dx , o , da ) 109 DBC * dbc ; 110 QPAGE * g ; 111 u_t32_t dx ; 112 db_o_t o ; 113 DBT * da ; 115 DB * dbp ; 116 DBT dda , pda , * d ; 117 ENV * v ; 118 QAMDATA * qp ; 119 QUEUE * t ; 120 u_t8_t * de , * p ; 121 lod , t ; 123 dbp = dbc ->dbp; 124 v = dbp ->env; 125 t = ( QUEUE *) dbp -> q_ ; 126 lod = t = 0; 128 i( da -> size > t -> _n ) 129 ( `__db_c_toobig ( v , da -> size , t -> _n )); 130 qp = `QAM_GET_RECORD ( dbp , g , dx ); 132 p = qp -> da ; 133 d = da ; 134 i( `F_ISSET ( da , DB_DBT_PARTIAL )) { 135 i( da -> doff + da-> dn > t -> _n ) { 136 `__db_rx ( v , 138 "Recdgth", ( u_lg ) t -> _n ); 139 ( EINVAL ); 142 i( da -> size !da-> dn ) 143 ( `__db_c_ ( v , da -> size , da-> dn )); 145 i( da -> size = t -> _n ) 146 no_l ; 160 i( `DBC_LOGGING ( dbc || ! `F_ISSET ( qp , QAM_VALID )) { 161 d = & pda ; 162 `memt ( d , 0, (*datap)); 164 i(( t = `__os_mloc ( v , 165 t -> _n , & d -> da )) != 0) 166 ( t ); 167 lod = 1; 168 d -> size = t -> _n ; 174 de = d -> da ; 175 i( `F_ISSET ( qp , QAM_VALID )) 176 `memy ( de , p , t -> _n ); 178 `memt ( de , () t -> _d ,-> _n ); 180 de + da -> doff ; 181 `memy ( de , da ->da, da-> size ); 183 d = da ; 184 p + da -> doff ; 188 no_l : 189 i( `DBC_LOGGING ( dbc )) { 190 dda . size = 0; 191 i( `F_ISSET ( qp , QAM_SET )) { 192 dda . da = qp ->data; 193 dda . size = t -> _n ; 195 i(( t = `__qam_add_log ( dbp , dbc -> txn , & `LSN ( g ), 196 0, & `LSN ( g ),ag-> pgno , 197 dx , o , d , qp -> ags , 198 dda . size =0 ? NULL : &olddata)) != 0) 199 r ; 200 } i(! `F_ISSET (( dbc ), DBC_RECOVER )) 201 `LSN_NOT_LOGGED ( `LSN ( g )); 203 `F_SET ( qp , QAM_VALID | QAM_SET ); 204 `memy ( p , d -> da , d-> size ); 205 i(! `F_ISSET ( da , DB_DBT_PARTIAL )) 206 `memt ( p + d -> size , 207 () t -> _d ,-> _n - d -> size ); 209 r : i( lod ) 210 `__os_ ( v , d -> da ); 212 ( t ); 213 } } 220 $__qamc_put ( dbc , key , da , ags , pgn ) 221 DBC * dbc ; 222 DBT * key , * da ; 223 u_t32_t ags ; 224 db_pgno_t * pgn ; 226 DB * dbp ; 227 DB_LOCK lock ; 228 DB_MPOOLFILE * mpf ; 229 ENV * v ; 230 QMETA * ma ; 231 QUEUE_CURSOR * ; 232 db_pgno_t pg ; 233 db_o_t w_cur , w_f ; 234 u_t32_t code ; 235 exa , t , t_t , wrock ; 237 dbp = dbc ->dbp; 238 v = dbp ->env; 239 mpf = dbp ->mpf; 240 i( pgn ! NULL ) 241 * pgn = PGNO_INVALID ; 243 = ( QUEUE_CURSOR *) dbc -> ; 245 ags ) { 246 DB_KEYFIRST : 247 DB_KEYLAST : 248 DB_NOOVERWRITE : 249 i(( t = `__qam_gno ( dbp , key , & -> o )) != 0) 250 ( t ); 252 DB_CURRENT : 256 ( `__db_ ( v , "DBC->put", 0)); 260 i(( t = `__db_lg ( dbc , LCK_COUPLE , 261 -> o , DB_LOCK_WRITE , DB_LOCK_RECORD , &-> lock )) != 0) 262 ( t ); 264 lock = ->lock; 266 i(( t = `__qam_posi ( dbc , & -> o , DB_LOCK_WRITE , 267 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & exa )) != 0) { 269 () `__LPUT ( dbc , lock ); 270 ( t ); 273 i( exa !0 && ags = DB_NOOVERWRITE ) 274 t = DB_KEYEXIST ; 277 t = `__qam_pem ( dbc , 278 ( QPAGE *) -> ge , cp-> dx , cp-> o , da ); 281 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 282 t = t_t ; 283 i(( t_t = `__qam_ut ( dbc , 284 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 285 t = t_t ; 286 -> ge = NULL ; 287 -> lock =ock; 288 -> lock_mode = DB_LOCK_WRITE ; 289 i( t != 0) 290 ( t ); 293 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 299 wrock = 0; 300 i(( t = `__memp_fg ( mpf , & pg , 301 dbc -> thad_fo , 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 , dbc -> thad_fo , 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 , dbc -> thad_fo , ma , dbc-> iܙy ); 349 ( t ); 351 i( wrock ++ == 0) 352 check ; 354 i((( t = `__memp_dty ( mpf , & ma , 355 dbc -> thad_fo , 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 dbc -> thad_fo , 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 , 410 dbc -> thad_fo , dbc-> txn , DB_MPOOL_DIRTY , & ma )) != 0) 411 ( t ); 413 i(( t = `__db_lg ( dbc , 0, pg , DB_LOCK_WRITE , 0, & lock )) != 0) { 414 () `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 415 ( t ); 419 o = ma -> cur_o ; 420 ma -> cur_o ++; 421 i( ma -> cur_o = RECNO_OOB ) 422 ma -> cur_o ++; 423 i( ma -> cur_o =ma-> f_o ) { 424 ma -> cur_o --; 425 i( ma -> cur_o = RECNO_OOB ) 426 ma -> cur_o --; 427 t = `__LPUT ( dbc , lock ); 429 i( t == 0) 430 t = EFBIG ; 431 r ; 434 i( `QAM_BEFORE_FIRST ( ma , o )) 435 ma -> f_o = o ; 438 t = `__db_lg ( dbc , LCK_COUPLE_ALWAYS , 439 o , DB_LOCK_WRITE , DB_LOCK_RECORD , & lock ); 446 i( dbc -> dbp -> db_nd_o ! NULL && 447 ( t_t = dbc -> dbp -> `db_nd_o (dbc->dbp, da , o )) != 0 && 448 t == 0) 449 t = t_t ; 455 i( t != 0) { 456 () `__LPUT ( dbc , lock ); 457 r ; 460 -> lock =ock; 461 -> lock_mode = DB_LOCK_WRITE ; 463 pg = `QAM_RECNO_PAGE ( dbp , o ); 466 i(( t = `__db_lg ( dbc , 0, pg , DB_LOCK_WRITE , 0, & lock )) != 0) 467 r ; 468 i(( t = `__qam_fg ( dbc , & pg , 469 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ge )) != 0) { 471 () `__LPUT ( dbc , lock ); 472 r ; 476 i( ge -> pgno == 0) { 477 ge -> pgno = pg ; 478 ge -> ty = P_QAMDATA ; 482 t = `__qam_pem ( dbc , ge , 483 `QAM_RECNO_INDEX ( dbp , pg , o ),eo, da ); 486 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 487 t = t_t ; 489 i(( t_t = `__qam_ut ( dbc , 490 pg , ge , dbc -> iܙy )!0 && t == 0) 491 t = t_t ; 494 i( t =0 && key ! NULL ) 495 t = `__db_tcy ( dbp -> v , key , 496 & o , eo), & dbc -> rkey -> da , &dbc->rkey-> un ); 499 -> o =ecno; 502 qp = ( QUEUE * dbp -> q_ ; 503 i( qp -> ge_ext != 0 && 504 ( o % ( qp -> ge_ext * qp-> c_ge ) == 0 || 505 o = UINT32_MAX )) { 506 i(( t = `__db_lg ( dbc , 507 0, (( QUEUE *) dbp -> q_ )-> q_ma , 508 DB_LOCK_WRITE , 0, & lock )) != 0) 509 r ; 510 i(! `QAM_AFTER_CURRENT ( ma , o )) 511 t = `__qam_fo ( dbp , pg ); 512 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 513 t = t_t ; 516 r : 517 i(( t_t = `__memp_ut ( mpf , 518 dbc -> thad_fo , ma , dbc-> iܙy )!0 && t == 0) 519 t = t_t ; 521 ( t ); 522 } } 529 $__qamc_d ( dbc ) 530 DBC * dbc ; 532 DB * dbp ; 533 DBT da ; 534 DB_LOCK lock , mock ; 535 DB_MPOOLFILE * mpf ; 536 PAGE * g ; 537 QAMDATA * qp ; 538 QMETA * ma ; 539 QUEUE_CURSOR * ; 540 db_pgno_t pg ; 541 exa , t , t_t ; 543 dbp = dbc ->dbp; 544 mpf = dbp ->mpf; 545 = ( QUEUE_CURSOR *) dbc -> ; 546 `LOCK_INIT ( lock ); 548 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 553 i(( t = `__memp_fg ( mpf , & pg , 554 dbc -> thad_fo , dbc-> txn , 0, & ma )) != 0) 555 ( t ); 557 i(( t = `__db_lg ( dbc , 0, pg , DB_LOCK_READ , 0, & mock )) != 0) { 558 () `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 559 ( t ); 562 i( `QAM_NOT_VALID ( ma , -> o )) 563 t = DB_NOTFOUND ; 566 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 567 t = t_t ; 569 i( t != 0) 570 r ; 572 i(( t = `__db_lg ( dbc , LCK_COUPLE , 573 -> o , DB_LOCK_WRITE , DB_LOCK_RECORD , &-> lock )) != 0) 574 r ; 575 -> lock_mode = DB_LOCK_WRITE ; 576 lock = ->lock; 579 i(( t = `__qam_posi ( dbc , & -> o , DB_LOCK_WRITE , 580 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & exa )) != 0) 581 r ; 583 i(! exa ) { 584 t = DB_NOTFOUND ; 585 r ; 588 g = -> ge ; 589 qp = `QAM_GET_RECORD ( dbp , g , -> dx ); 591 i( `DBC_LOGGING ( dbc )) { 592 i((( QUEUE *) dbp -> q_ )-> ge_ext == 0 || 593 (( QUEUE *) dbp -> q_ )-> _n == 0) { 594 i(( t = `__qam_d_log ( dbp , 595 dbc -> txn , & `LSN ( g ), 0, &LSN(pagep), 596 g -> pgno , -> dx , cp-> o )) != 0) 597 r ; 599 da . size = (( QUEUE *) dbp -> q_ )-> _n ; 600 da .d qp ->data; 601 i(( t = `__qam_dext_log ( dbp , 602 dbc -> txn , & `LSN ( g ), 0, &LSN(pagep), 603 g -> pgno , -> dx , cp-> o , & da )) != 0) 604 r ; 607 `LSN_NOT_LOGGED ( `LSN ( g )); 609 `F_CLR ( qp , QAM_VALID ); 619 i( -> o = ma -> f_o ) { 620 pg = (( QUEUE *) dbp -> q_ )-> q_ma ; 621 i(( t = 622 `__db_lg ( dbc , 0, pg , DB_LOCK_WRITE , 0, & mock )) != 0) 623 r ; 624 i( -> o = ma -> f_o ) 625 t = `__qam_csume ( dbc , ma , ma-> f_o ); 626 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 627 t = t_t ; 630 r : i(( t_t = `__memp_ut ( mpf , dbc -> thad_fo , 631 ma , dbc -> iܙy )!0 && t == 0) 632 t = t_t ; 633 i( -> ge ! NULL && 634 ( t_t = `__qam_ut ( dbc , 635 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 636 t = t_t ; 637 -> ge = NULL ; 640 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 641 t = t_t ; 642 -> lock =ock; 644 ( t ); 645 } } 647 #ifdef DEBUG_WOP 648 #QDEBUG ) 656 $__qamc_g ( dbc , key , da , ags , pgn ) 657 DBC * dbc ; 658 DBT * key , * da ; 659 u_t32_t ags ; 660 db_pgno_t * pgn ; 662 DB * dbp ; 663 DBC * dbcdup ; 664 DBT tmp ; 665 DB_LOCK lock , pglock , mock ; 666 DB_MPOOLFILE * mpf ; 667 ENV * v ; 668 PAGE * pg ; 669 QAMDATA * qp ; 670 QMETA * ma ; 671 QUEUE * t ; 672 QUEUE_CURSOR * ; 673 db_lockmode_t lock_mode , ma_mode ; 674 db_pgno_t mno ; 675 db_o_t f ; 676 exa , d , is_f , locked , t , t_t , wa , wh_de ; 677 yg ; 679 dbp = dbc ->dbp; 680 v = dbp ->env; 681 mpf = dbp ->mpf; 682 = ( QUEUE_CURSOR *) dbc -> ; 683 `LOCK_INIT ( lock ); 684 `LOCK_INIT ( pglock ); 686 lock_mode = `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 687 ma_mode = DB_LOCK_READ ; 688 ma = NULL ; 689 * pgn = 0; 690 pg = NULL ; 691 yg = t_t = wa = wh_de = 0; 693 i( ags = DB_CONSUME_WAIT ) { 694 wa = 1; 695 ags = DB_CONSUME ; 697 i( ags = DB_CONSUME ) { 698 wh_de = 1; 699 ags = DB_FIRST ; 700 ma_mode = lock_mode = DB_LOCK_WRITE ; 702 d = `F_ISSET ( dbp , DB_AM_INORDER && wh_de ; 704 `DEBUG_LREAD ( dbc , dbc-> txn , "qamc_get", 705 ags = DB_SET || fg= DB_SET_RANGE ? key : NULL , NULL, flags); 708 locked = 0; 710 is_f = 0; 711 f = 0; 713 t = ( QUEUE *) dbp -> q_ ; 714 mno = t -> q_ma ; 715 `LOCK_INIT ( mock ); 722 i(( t = `__memp_fg ( mpf , & mno , 723 dbc -> thad_fo , dbc-> txn , 0, & ma )) != 0) 724 ( t ); 726 g_xt : 727 ags ) { 728 DB_NEXT : 729 DB_NEXT_NODUP : 730 DB_FIRST : 731 DB_PREV : 732 DB_PREV_NODUP : 733 DB_LAST : 734 i(( t = `__db_lg ( dbc , 735 0, mno , ma_mode , 0, & mock )) != 0) 736 r ; 737 locked = 1; 744 i(( t = `__TLPUT ( dbc , -> lock )) != 0) 745 r ; 747 y : 748 ags ) { 749 DB_CURRENT : 751 DB_NEXT_DUP : 752 DB_PREV_DUP : 753 t = DB_NOTFOUND ; 754 r ; 756 DB_NEXT : 757 DB_NEXT_NODUP : 758 i( -> o ! RECNO_OOB ) { 759 ++ -> o ; 761 i( -> o = RECNO_OOB ) 762 -> o ++; 766 i( `QAM_AFTER_CURRENT ( ma , -> o )) { 767 pg = NULL ; 768 i(! wa ) { 769 t = DB_NOTFOUND ; 770 r ; 772 ags = DB_FIRST ; 779 i( f == 0) { 780 yg = 1; 781 y ; 784 i( `CDB_LOCKING ( v )) { 786 t = `__memp_ut ( mpf , dbc -> thad_fo , 787 ma , dbc -> iܙy ); 788 ma = NULL ; 789 i( t != 0) 790 r ; 791 i(( t = `__lock_g ( 792 v , dbc -> lock , 793 DB_LOCK_SWITCH , & dbc -> lock_dbt , 794 DB_LOCK_WAIT , & dbc -> mylock )) != 0) 795 r ; 797 i(( t = `__memp_fg ( mpf , & mno , 798 dbc -> thad_fo , 799 dbc -> txn , 0, & ma )) != 0) 800 r ; 801 i(( t = `__lock_g ( 802 v , dbc -> lock , 803 DB_LOCK_UPGRADE , & dbc -> lock_dbt , 804 DB_LOCK_WRITE , & dbc -> mylock )) != 0) 805 r ; 806 y ; 814 i( locked == 0) { 815 i(( t = `__db_lg ( dbc , 0, mno , 816 ma_mode , 0, & mock )) != 0) 817 r ; 818 locked = 1; 819 i( -> o ! RECNO_OOB && 820 ! `QAM_AFTER_CURRENT ( ma , -> o )) 821 y ; 824 t = `__memp_ut ( mpf , 825 dbc -> thad_fo , ma , dbc-> iܙy ); 826 ma = NULL ; 827 i( t != 0) 828 r ; 829 i(( t = `__db_lg ( dbc , 830 0, mno , DB_LOCK_WAIT , 831 DB_LOCK_SWITCH , & mock )) != 0) { 832 i( t = DB_LOCK_DEADLOCK ) 833 t = DB_LOCK_NOTGRANTED ; 834 r ; 836 i(( t = `__memp_fg ( mpf , 837 & mno , dbc -> thad_fo , dbc-> txn , 838 0, & ma )) != 0) 839 r ; 840 i(( t = `__db_lg ( dbc , 0, 841 PGNO_INVALID , DB_LOCK_WRITE , 842 DB_LOCK_UPGRADE , & mock )) != 0) { 843 i( t = DB_LOCK_DEADLOCK ) 844 t = DB_LOCK_NOTGRANTED ; 845 r ; 847 locked = 1; 848 y ; 853 DB_FIRST : 854 ags = DB_NEXT ; 855 is_f = 1; 858 -> o = f = ma -> f_o ; 861 DB_PREV : 862 DB_PREV_NODUP : 863 i( -> o ! RECNO_OOB ) { 864 i( -> o = ma -> f_o || 865 `QAM_BEFORE_FIRST ( ma , -> o )) { 866 t = DB_NOTFOUND ; 867 r ; 869 -- -> o ; 871 i( -> o = RECNO_OOB ) 872 -- -> o ; 876 DB_LAST : 877 i( ma -> f_o =ma-> cur_o ) { 878 t = DB_NOTFOUND ; 879 r ; 881 -> o = ma -> cur_o - 1; 882 i( -> o = RECNO_OOB ) 883 -> o --; 885 DB_SET : 886 DB_SET_RANGE : 887 DB_GET_BOTH : 888 DB_GET_BOTH_RANGE : 889 i(( t = `__qam_gno ( dbp , key , & -> o )) != 0) 890 r ; 893 t = `__db_unknown_ag ( v , "__qamc_g", ags ); 894 r ; 898 i( locked ) { 899 i(( t = `__LPUT ( dbc , mock )) != 0) 900 r ; 901 locked = 0; 905 i((( t = `__db_lg ( dbc , LCK_COUPLE , -> o , lock_mode , 906 ( wh_de && ! d && ! yg ) ? 907 DB_LOCK_NOWAIT | DB_LOCK_RECORD : DB_LOCK_RECORD, 908 & lock )= DB_LOCK_DEADLOCK || t = DB_LOCK_NOTGRANTED ) && 909 wh_de ) { 910 #ifde QDEBUG 911 i( `DBC_LOGGING ( dbc )) 912 () `__log_tf ( v , 913 dbc -> txn , "Queue S: %x %d %d %d", 914 dbc -> lock ? dbc->lock-> id : 0, 915 -> o , f , ma -> f_o ); 917 f = 0; 918 i(( t = 919 `__db_lg ( dbc , 0, mno , ma_mode , 0, & mock )) != 0) 920 r ; 921 locked = 1; 922 y ; 925 i( t != 0) 926 r ; 936 ags ) { 938 i( d ) { 939 i( f ! -> o ) 941 } i( wh_de || ! is_f ) 944 DB_SET : 945 DB_SET_RANGE : 946 DB_GET_BOTH : 947 DB_GET_BOTH_RANGE : 948 DB_LAST : 949 i(( t = 950 `__db_lg ( dbc , 0, mno , ma_mode , 0, & mock )) != 0) 951 ˼ ; 952 locked = 1; 953 i(( is_f && -> o ! ma -> f_o ) || 954 ( ags = DB_LAST && -> o ! ma -> cur_o - 1)) { 955 i(( t = `__LPUT ( dbc , lock )) != 0) 956 r ; 957 i( is_f ) 958 ags = DB_FIRST ; 959 y ; 960 } i(! is_f && ags ! DB_LAST ) { 961 i( `QAM_BEFORE_FIRST ( ma , -> o )) { 962 i( ags = DB_SET_RANGE || 963 ags = DB_GET_BOTH_RANGE ) { 964 i(( t = `__LPUT ( dbc , mock )) != 0) 965 r ; 966 locked = 0; 967 -> lock =ock; 968 `LOCK_INIT ( lock ); 969 a_y ; 971 t = DB_NOTFOUND ; 972 ˼ ; 974 i( `QAM_AFTER_CURRENT ( ma , -> o )) { 975 t = DB_NOTFOUND ; 976 ˼ ; 980 i(( t = `__LPUT ( dbc , mock )) != 0) 981 r ; 982 locked = 0; 986 i(( t = `__qam_posi ( dbc , & -> o , 987 lock_mode , 0, & exa )) != 0) { 989 () `__LPUT ( dbc , lock ); 990 r ; 993 pg = -> ge ; 994 pglock = -> lock ; 995 -> lock =ock; 996 -> lock_mode =ock_mode; 997 `LOCK_INIT ( lock ); 999 i(! exa ) { 1000 a_y : 1001 i( pg ! NULL ) 1002 () `__qam_ut ( dbc , -> pgno , pg , dbc-> iܙy ); 1003 -> ge = pg = NULL ; 1004 i(( t = `__LPUT ( dbc , pglock )) != 0) 1005 r1 ; 1006 i( wh_de ) { 1007 i(( t = `__LPUT ( dbc , -> lock )) != 0) 1008 r1 ; 1009 } i(( t = `__TLPUT ( dbc , -> lock )) != 0) 1010 r1 ; 1018 ags ) { 1019 DB_NEXT : 1020 DB_NEXT_NODUP : 1021 i(! wh_de ) 1022 is_f = 0; 1023 i( `QAM_BEFORE_FIRST ( ma , -> o ) && 1024 `DONT_NEED_LOCKS ( dbc )) 1025 ags = DB_FIRST ; 1027 DB_LAST : 1028 DB_PREV : 1029 DB_PREV_NODUP : 1030 i( `QAM_AFTER_CURRENT ( ma , -> o ) && 1031 `DONT_NEED_LOCKS ( dbc )) 1032 ags = DB_LAST ; 1034 ags = DB_PREV ; 1037 DB_GET_BOTH_RANGE : 1038 DB_SET_RANGE : 1039 i( `QAM_BEFORE_FIRST ( ma , -> o ) && 1040 `DONT_NEED_LOCKS ( dbc )) 1041 ags = DB_FIRST ; 1043 ags = DB_NEXT ; 1048 t = DB_KEYEMPTY ; 1049 r1 ; 1051 yg = 0; 1052 g_xt ; 1055 qp = `QAM_GET_RECORD ( dbp , pg , -> dx ); 1058 i( ags = DB_GET_BOTH || fg= DB_GET_BOTH_RANGE ) { 1062 tmp . da = qp ->data; 1063 tmp . size = t -> _n ; 1064 i(( t = `__bam_defcmp ( dbp , da , & tmp )) != 0) { 1065 i( ags = DB_GET_BOTH_RANGE ) 1066 a_y ; 1067 t = DB_NOTFOUND ; 1068 r1 ; 1073 i( key ! NULL && ! `F_ISSET (key, DB_DBT_ISSET )) { 1074 i(( t = `__db_tcy ( dbp -> v , 1075 key , & -> o , (cp->recno), 1076 & dbc -> rkey -> da , &dbc->rkey-> un )) != 0) 1077 r1 ; 1078 `F_SET ( key , DB_DBT_ISSET ); 1081 i( da ! NULL && 1082 ! `F_ISSET ( dbc , DBC_MULTIPLE | DBC_MULTIPLE_KEY ) && 1083 ! `F_ISSET ( da , DB_DBT_ISSET )) { 1084 i(( t = `__db_tcy ( dbp -> v , da , qp ->da, t -> _n , 1085 & dbc -> rda -> da , &dbc->rda-> un )) != 0) 1086 r1 ; 1087 `F_SET ( da , DB_DBT_ISSET ); 1091 i( wh_de ) { 1098 `DB_ASSERT ( v , ! `F_ISSET ( dbp , DB_AM_SECONDARY )); 1100 i(( t = `__qam_dty ( dbc , 1101 -> pgno , &-> ge , dbc -> iܙy )) != 0) 1102 r1 ; 1103 pg = -> ge ; 1115 i( `LIST_FIRST (& dbp -> s_cds ! NULL ) { 1116 i(( t = `__dbc_idup ( dbc , 1117 & dbcdup , DB_POSITION )) != 0) 1118 r1 ; 1120 i(( t = `__dbc_d_imy ( dbcdup )) != 0) { 1125 () `__dbc_o ( dbcdup ); 1126 r1 ; 1129 i(( t = `__dbc_o ( dbcdup )) != 0) 1130 r1 ; 1133 i( `DBC_LOGGING ( dbc )) { 1134 i( t -> ge_ext =0 ||-> _n == 0) { 1135 i(( t = `__qam_d_log ( dbp , dbc -> txn , 1136 & `LSN ( pg ), 0, &LSN(pg), 1137 pg -> pgno , -> dx , cp-> o )) != 0) 1138 r1 ; 1140 tmp . da = qp ->data; 1141 tmp . size = t -> _n ; 1142 i(( t = `__qam_dext_log ( dbp , 1143 dbc -> txn , & `LSN ( pg ), 0, &LSN(pg), 1144 pg -> pgno , -> dx , cp-> o , & tmp )) != 0) 1145 r1 ; 1148 `LSN_NOT_LOGGED ( `LSN ( pg )); 1150 `F_CLR ( qp , QAM_VALID ); 1152 i(( t = `__LPUT ( dbc , pglock )) != 0) 1153 r1 ; 1167 i( locked =0 && ( t = `__db_lg ( 1168 dbc , 0, mno , ma_mode , 0, & mock )) != 0) 1169 r1 ; 1170 locked = 1; 1172 #ifde QDEBUG 1173 i( `DBC_LOGGING ( dbc )) 1174 () `__log_tf ( v , 1175 dbc -> txn , "Queue D: %x %d %d %d", 1176 dbc -> lock ? dbc->lock-> id : 0, 1177 -> o , f , ma -> f_o ); 1185 i( f == 0) 1186 f = -> o ; 1187 i( f ! ma -> f_o ) 1188 de ; 1190 i(( t = `__qam_csume ( dbc , ma , f )) != 0) 1191 r1 ; 1194 de : 1195 r1 : i( -> ge ! NULL ) { 1196 i(( t_t = `__qam_ut ( dbc , 1197 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 1198 t = t_t ; 1201 i(( t_t = `__LPUT ( dbc , pglock )!0 && t == 0) 1202 t = t_t ; 1203 -> ge = NULL ; 1206 ˼ : () `__LPUT ( dbc , lock ); 1209 r : i( ma ) { 1211 i(( t_t = `__memp_ut ( mpf , 1212 dbc -> thad_fo , ma , dbc-> iܙy )!0 && t == 0) 1213 t = t_t ; 1216 i( locked ) 1217 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 1218 t = t_t ; 1220 `DB_ASSERT ( v , ! `LOCK_ISSET ( mock )); 1222 (( t = DB_LOCK_NOTGRANTED && ! `F_ISSET ( v -> dbv , 1223 DB_ENV_TIME_NOTGRANTED )? DB_LOCK_DEADLOCK : t ); 1224 } } 1231 $__qam_csume ( dbc , ma , f ) 1232 DBC * dbc ; 1233 QMETA * ma ; 1234 db_o_t f ; 1236 DB * dbp ; 1237 DB_LOCK lock , ve_lock ; 1238 DB_MPOOLFILE * mpf ; 1239 QUEUE_CURSOR * ; 1240 db_dx_t ve_dx ; 1241 db_pgno_t ve_ge ; 1242 db_o_t cut , ve_o ; 1243 u_t32_t c_ex ; 1244 exa , t , t_t , wed ; 1246 dbp = dbc ->dbp; 1247 mpf = dbp ->mpf; 1248 = ( QUEUE_CURSOR *) dbc -> ; 1249 t = 0; 1251 ve_ge = -> pgno ; 1252 ve_dx = -> dx ; 1253 ve_o = -> o ; 1254 ve_lock = -> lock ; 1261 i( f ! -> o ) { 1262 t = `__db_lg ( dbc , 0, f , DB_LOCK_READ , 1263 DB_LOCK_NOWAIT | DB_LOCK_RECORD , & lock ); 1264 i( t = DB_LOCK_NOTGRANTED || = DB_LOCK_DEADLOCK ) { 1265 t = 0; 1266 de ; 1268 i( t != 0) 1269 de ; 1270 i(( t = 1271 `__qam_ut ( dbc , -> pgno , cp-> ge , dbc-> iܙy )) != 0) 1272 de ; 1273 -> ge = NULL ; 1274 i(( t = `__qam_posi ( dbc , 1275 & f , DB_LOCK_READ , 0, & exa )) != 0 ||xact != 0) { 1276 () `__LPUT ( dbc , lock ); 1277 de ; 1279 i(( t = `__LPUT ( dbc , lock )) != 0) 1280 de ; 1281 i(( t = `__LPUT ( dbc , -> lock )) != 0) 1282 de ; 1285 cut = ma -> cur_o ; 1286 wed = 0; 1287 i( f > cut ) 1288 wed = 1; 1289 c_ex = ma -> ge_ext * ma-> c_ge ; 1301 i( -> ge ! NULL && c_ex != 0 && 1302 (( exa = ( f % c_ex == 0)) || 1303 ( f % ma -> c_ge == 0) || 1304 f = UINT32_MAX )) { 1305 i( exa =1 && ( t = `__db_lg ( dbc , 1306 0, -> pgno , DB_LOCK_WRITE , 0, &-> lock )) != 0) 1308 #ifde QDEBUG 1309 i( `DBC_LOGGING ( dbc )) 1310 () `__log_tf ( dbp -> v , dbc -> txn , 1312 dbc -> lock ? dbc->lock-> id : 0, 1313 -> pgno , f , ma -> f_o ); 1315 i(( t = `__qam_ut ( dbc , 1316 -> pgno , cp-> ge , DB_PRIORITY_VERY_LOW )) != 0) 1318 -> ge = NULL ; 1320 i( exa == 1) { 1321 t = `__qam_emove ( dbp , -> pgno ); 1322 i(( t_t = 1323 `__LPUT ( dbc , -> lock )!0 && t == 0) 1324 t = t_t ; 1326 i( t != 0) 1328 } i( -> ge ! NULL && ( t = `__qam_ut ( dbc , 1329 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 1331 -> ge = NULL ; 1332 f ++; 1333 i( f = RECNO_OOB ) { 1334 wed = 0; 1335 f ++; 1342 i(! wed && f > cut ) 1345 t = `__db_lg ( dbc , 0, f , DB_LOCK_READ , 1346 DB_LOCK_NOWAIT | DB_LOCK_RECORD , & lock ); 1347 i( t = DB_LOCK_NOTGRANTED || = DB_LOCK_DEADLOCK ) { 1348 t = 0; 1351 i( t != 0) 1354 i(( t = `__qam_posi ( dbc , 1355 & f , DB_LOCK_READ , 0, & exa )) != 0) { 1356 () `__LPUT ( dbc , lock ); 1359 i(( t = `__LPUT ( dbc , lock )) != 0 || 1360 ( t = `__LPUT ( dbc , -> lock )!0 || exa ) { 1361 i(( t_t = `__qam_ut ( dbc , -> pgno , 1362 -> ge , dbc -> iܙy )!0 && t == 0) 1363 t = t_t ; 1364 -> ge = NULL ; 1369 -> pgno = ve_ge ; 1370 -> dx = ve_dx ; 1371 -> o = ve_o ; 1372 -> lock = ve_lock ; 1378 i( t =0 && ma -> f_o ! f ) { 1379 i(( t = `__memp_dty ( mpf , 1380 & ma , dbc -> thad_fo , dbc-> txn , dbc-> iܙy , 0)) != 0) 1381 de ; 1382 #ifde QDEBUG 1383 i( `DBC_LOGGING ( dbc )) 1384 () `__log_tf ( dbp -> v , dbc -> txn , 1386 dbc -> lock ? dbc->lock-> id : 0, 1387 -> o , f , ma -> f_o ); 1389 i( `DBC_LOGGING ( dbc )) { 1390 i(( t = `__qam_cf_log ( dbp , 1391 dbc -> txn , & ma -> dbma . l , 0, 1392 -> o , PGNO_BASE_MD )) != 0) 1393 de ; 1395 `LSN_NOT_LOGGED ( ma -> dbma . l ); 1396 ma -> f_o = f ; 1399 de : 1400 ( t ); 1401 } } 1404 $__qam_bulk ( dbc , da , ags ) 1405 DBC * dbc ; 1406 DBT * da ; 1407 u_t32_t ags ; 1409 DB * dbp ; 1410 DB_LOCK mock , ock ; 1411 DB_MPOOLFILE * mpf ; 1412 PAGE * pg ; 1413 QAMDATA * qp ; 1414 QMETA * ma ; 1415 QUEUE_CURSOR * ; 1416 db_dx_t dx ; 1417 db_lockmode_t lkmode ; 1418 db_pgno_t mno ; 1419 u_t32_t * dp , * of ; 1420 u_t32_t gesize , _n , cs ; 1421 u_t8_t * dbuf , * dp , * ; 1422 exa , t , t_t , vid ; 1423 is_key , ed_pg , size , a ; 1425 dbp = dbc ->dbp; 1426 mpf = dbp ->mpf; 1427 = ( QUEUE_CURSOR *) dbc -> ; 1429 lkmode = `F_ISSET ( dbc , DBC_RMW ? DB_LOCK_WRITE : DB_LOCK_READ ; 1431 gesize = dbp -> pgsize ; 1432 _n = (( QUEUE *) dbp -> q_ )->re_len; 1433 cs = (( QUEUE *) dbp -> q_ )-> c_ge ; 1434 mno = (( QUEUE *) dbp -> q_ )-> q_ma ; 1436 is_key = `LF_ISSET ( DB_MULTIPLE_KEY ) ? 1 : 0; 1437 size = 0; 1439 i(( t = `__db_lg ( dbc , 0, mno , DB_LOCK_READ , 0, & mock )) != 0) 1440 ( t ); 1441 i(( t = `__memp_fg ( mpf , & mno , 1442 dbc -> thad_fo , dbc-> txn , 0, & ma )) != 0) { 1444 () `__LPUT ( dbc , mock ); 1445 ( t ); 1448 dbuf = da ->data; 1449 = dp = dbuf ; 1452 a = () da -> un ; 1453 a -()(* of ); 1456 dp = ( u_t32_t *)(( u_t8_t *) dbuf + da -> un ); 1457 dp --; 1458 of = dp ; 1460 ock = -> lock ; 1461 `LOCK_INIT ( -> lock ); 1463 xt_pg : 1465 i( -> o = RECNO_OOB ) 1466 -> o ++; 1467 i(( t = `__qam_posi ( dbc , & -> o , lkmode , 0, & exa )) != 0) 1468 de ; 1470 pg = -> ge ; 1471 dx = ->indx; 1472 ed_pg = 1; 1481 vid = 0; 1483 i( pg ! NULL ) { 1484 i(( t = `__db_lg ( dbc , LCK_COUPLE , 1485 -> o , lkmode , DB_LOCK_RECORD , & ock )) != 0) 1486 de ; 1487 qp = `QAM_GET_RECORD ( dbp , pg , dx ); 1488 i( `F_ISSET ( qp , QAM_VALID )) { 1489 vid = 1; 1490 a -= () 1491 (( is_key ? 3 : 2* (* of )); 1492 i( a < 0) 1493 g_a ; 1494 i( ed_pg ) { 1495 dp = ; 1496 size = () gesize - `QPAGE_SZ ( dbp ); 1497 i( a < size ) { 1498 g_a : 1499 i( of = dp ) { 1500 da -> size = ( u_t32_t ) 1501 `DB_ALIGN (( u_t32_t ) 1502 size + gesize , 1503 ( u_t32_t )); 1504 t = DB_BUFFER_SMALL ; 1507 i( dx != 0) 1508 dx --; 1509 -> o --; 1510 a = 0; 1513 `memy ( dp , 1514 ( u_t8_t *) pg + `QPAGE_SZ ( dbp ), 1515 ( u_t ) size ); 1516 ed_pg = 0; 1517 a - size ; 1518 + size ; 1520 i( is_key ) 1521 * of -- = -> o ; 1522 * of -- = ( u_t32_t )(((( u_t8_t *) qp - 1523 ( u_t8_t *) pg - `QPAGE_SZ ( dbp )) + 1524 ( dp - dbuf + `SSZA ( QAMDATA , da )); 1525 * of -- = _n ; 1528 i(! vid && is_key == 0) { 1529 * of -- = 0; 1530 * of -- = 0; 1532 -> o ++; 1533 } ++ dx < cs && -> o ! RECNO_OOB && 1534 ! `QAM_AFTER_CURRENT ( ma , -> o )); 1537 i(( t_t = `__LPUT ( dbc , -> lock )!0 && t == 0) 1538 t = t_t ; 1540 i( -> ge ! NULL ) { 1541 i(( t_t = `__qam_ut ( dbc , 1542 -> pgno , cp-> ge , dbc -> iܙy )!0 && t == 0) 1543 t = t_t ; 1544 -> ge = NULL ; 1547 i( t =0 && a > 0 && 1548 ( dx > cs || -> o = RECNO_OOB ) && 1549 ! `QAM_AFTER_CURRENT ( ma , -> o )) 1550 xt_pg ; 1557 i( -> o = RECNO_OOB || ( a =0 && dx = cs )) 1558 -> o --; 1560 i( is_key == 1) 1561 * of = RECNO_OOB ; 1563 * of = ( u_t32_t )-1; 1565 de : 1566 i(( t_t = `__memp_ut ( mpf , 1567 dbc -> thad_fo , ma , dbc-> iܙy )!0 && t == 0) 1568 t = t_t ; 1569 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 1570 t = t_t ; 1572 -> lock = ock ; 1574 ( t ); 1575 } } 1582 $__qamc_o ( dbc , ro_pgno , rmro ) 1583 DBC * dbc ; 1584 db_pgno_t ro_pgno ; 1585 * rmro ; 1587 QUEUE_CURSOR * ; 1588 t ; 1590 `COMPQUIET ( ro_pgno , 0); 1591 `COMPQUIET ( rmro , NULL ); 1593 = ( QUEUE_CURSOR *) dbc -> ; 1596 t = `__TLPUT ( dbc , -> lock ); 1598 `LOCK_INIT ( -> lock ); 1599 -> ge = NULL ; 1600 -> pgno = PGNO_INVALID ; 1601 -> dx = 0; 1602 -> lock_mode = DB_LOCK_NG ; 1603 -> o = RECNO_OOB ; 1604 -> ags = 0; 1606 ( t ); 1607 } } 1617 $__qamc_dup ( ig_dbc , w_dbc ) 1618 DBC * ig_dbc , * w_dbc ; 1620 QUEUE_CURSOR * ig , * w ; 1622 ig = ( QUEUE_CURSOR *) ig_dbc -> ; 1623 w = ( QUEUE_CURSOR *) w_dbc -> ; 1625 w -> o = ig ->recno; 1628 } } 1636 $__qamc_ ( dbc ) 1637 DBC * dbc ; 1639 DB * dbp ; 1640 QUEUE_CURSOR * ; 1641 t ; 1643 dbp = dbc ->dbp; 1646 = ( QUEUE_CURSOR *) dbc -> ; 1647 i( = NULL ) { 1648 i(( t = 1649 `__os_oc ( dbp -> v , 1, ( QUEUE_CURSOR ), & )) != 0) 1650 ( t ); 1651 dbc -> = ( DBC_INTERNAL *) ; 1655 dbc -> o = dbc-> c_o = __dbc_o_ ; 1656 dbc -> cou = dbc-> c_cou = __dbc_cou_ ; 1657 dbc -> d = dbc-> c_d = __dbc_d_ ; 1658 dbc -> dup = dbc-> c_dup = __dbc_dup_ ; 1659 dbc -> g = dbc-> c_g = __dbc_g_ ; 1660 dbc -> pg = dbc-> c_pg = __dbc_pg_ ; 1661 dbc -> put = dbc-> c_put = __dbc_put_ ; 1662 dbc -> am_bulk = __qam_bulk ; 1663 dbc -> am_o = __qamc_o ; 1664 dbc -> am_d = __qamc_d ; 1665 dbc -> am_deroy = __qamc_deroy ; 1666 dbc -> am_g = __qamc_g ; 1667 dbc -> am_put = __qamc_put ; 1668 dbc -> am_wrock = NULL ; 1671 } } 1678 $__qamc_deroy ( dbc ) 1679 DBC * dbc ; 1682 `__os_ ( dbc -> v , dbc-> ); 1685 } } 1692 $__qam_gno ( dbp , key , p ) 1693 DB * dbp ; 1694 cڡ DBT * key ; 1695 db_o_t * p ; 1698 i( key -> size !( db_o_t )) { 1699 `__db_rx ( dbp -> v , "illegalecordumber size"); 1700 ( EINVAL ); 1703 i((* p = *( db_o_t *) key -> da ) == 0) { 1704 `__db_rx ( dbp -> v , "illegalecordumber of 0"); 1705 ( EINVAL ); 1708 } } 1717 $__qam_un ( dbc , coup ) 1718 DBC * dbc ; 1719 u_t32_t * coup ; 1721 DB * dbp ; 1722 DB_LOCK mock ; 1723 DB_MPOOLFILE * mpf ; 1724 QMETA * ma ; 1725 db_pgno_t mno ; 1726 u_t32_t cou ; 1727 t , t_t ; 1729 dbp = dbc ->dbp; 1732 cou = 0; 1733 ( t = `__qamc_g ( dbc , NULL , NULL, DB_CONSUME , & mno )) == 0;) 1734 cou ++; 1735 i( t ! DB_NOTFOUND ) 1736 ( t ); 1739 mno = (( QUEUE *) dbp -> q_ )-> q_ma ; 1740 i(( t = 1741 `__db_lg ( dbc , 0, mno , DB_LOCK_WRITE , 0, & mock )) != 0) 1742 ( t ); 1744 mpf = dbp ->mpf; 1745 i(( t = `__memp_fg ( mpf , & mno , dbc -> thad_fo , dbc-> txn , 1746 DB_MPOOL_DIRTY , & ma )) != 0) { 1748 () `__LPUT ( dbc , mock ); 1749 ( t ); 1752 i( ma -> cur_o > 1 && (( QUEUE *) dbp -> q_ )-> ge_ext != 0) { 1753 i(( t = `__qam_emove ( dbp , 1754 `QAM_RECNO_PAGE ( dbp , ma -> cur_o - 1))) != 0) 1755 ( t ); 1758 i( `DBC_LOGGING ( dbc )) { 1759 t = `__qam_mvr_log ( dbp , dbc -> txn , & ma -> dbma . l , 0, 1760 QAM_SETCUR | QAM_SETFIRST | QAM_TRUNCATE , ma -> f_o , 1761 1, ma -> cur_o , 1, &ma-> dbma . l , PGNO_BASE_MD ); 1763 `LSN_NOT_LOGGED ( ma -> dbma . l ); 1764 i( t == 0) 1765 ma -> f_o = ma-> cur_o = 1; 1767 i(( t_t = `__memp_ut ( mpf , 1768 dbc -> thad_fo , ma , dbc-> iܙy )!0 && t == 0) 1769 t = t_t ; 1770 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 1771 t = t_t ; 1773 i( coup ! NULL ) 1774 * coup = cou ; 1776 ( t ); 1777 } } 1786 $__qam_de ( dbc , key ) 1787 DBC * dbc ; 1788 DBT * key ; 1790 QUEUE_CURSOR * ; 1791 t ; 1793 = ( QUEUE_CURSOR *) dbc -> ; 1794 i(( t = `__qam_gno ( dbc -> dbp , key , & -> o )) != 0) 1795 r ; 1797 t = `__qamc_d ( dbc ); 1799 r : ( t ); 1800 } } @../qam/qam_auto.c 3 ~"db_cfig.h " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_dich.h " 8 ~"dbc/db_am.h " 9 ~"dbc/log.h " 10 ~"dbc/qam.h " 11 ~"dbc/txn.h " 18 $__qam_cf_ad ( v , db , td , cbuf , g ) 19 ENV * v ; 20 DB ** db ; 21 * td ; 22 * cbuf ; 23 __qam_cf_gs ** g ; 25 __qam_cf_gs * gp ; 26 u_t32_t ump ; 27 u_t8_t * bp ; 28 t ; 30 i(( t = `__os_mloc ( v , 31 ( __qam_cf_gs + ( DB_TXN ), & gp )) != 0) 32 ( t ); 33 bp = cbuf ; 34 gp -> tx = ( DB_TXN *)&argp[1]; 35 `memt ( gp -> tx , 0, ( DB_TXN )); 37 gp -> tx -> td =d; 38 `LOGCOPY_32 ( v , & gp -> ty , bp ); 39 bp +( gp -> ty ); 41 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 42 bp +( gp -> tx -> txnid ); 44 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 45 bp +( DB_LSN ); 47 `LOGCOPY_32 ( v , & ump , bp ); 48 gp -> feid = ( t32_t ) ump ; 49 bp +( ump ); 50 i( db ! NULL ) { 51 * db = NULL ; 52 t = `__dbg_id_to_db ( 53 v , gp -> tx , db ,rgp-> feid , 1); 56 `LOGCOPY_32 ( v , & ump , bp ); 57 gp -> o = ( db_o_t ) ump ; 58 bp +( ump ); 60 `LOGCOPY_32 ( v , & ump , bp ); 61 gp -> ma_pgno = ( db_pgno_t ) ump ; 62 bp +( ump ); 64 * g = gp ; 65 ( t ); 66 } } 73 $__qam_cf_log ( dbp , tx , t_lp , ags , o , ma_pgno ) 74 DB * dbp ; 75 DB_TXN * tx ; 76 DB_LSN * t_lp ; 77 u_t32_t ags ; 78 db_o_t o ; 79 db_pgno_t ma_pgno ; 81 DBT logc ; 82 DB_LSN * lp , nu_l , * p ; 83 DB_TXNLOGREC * ; 84 ENV * v ; 85 u_t32_t ump , y , txn_num ; 86 u_t ad ; 87 u_t8_t * bp ; 88 is_dub , t ; 90 `COMPQUIET ( , NULL ); 92 v = dbp ->env; 93 p = t_lp ; 94 y = DB___qam_cf ; 95 ad = 0; 96 t = 0; 98 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 99 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 100 i( tx = NULL ) 102 is_dub = 0; 104 is_dub = 1; 106 i( tx = NULL ) { 107 txn_num = 0; 108 lp = & nu_l ; 109 nu_l . fe =u_l. offt = 0; 111 i( `TAILQ_FIRST (& tx -> kids ! NULL && 112 ( t = `__txn_aivekids ( v , y , tx )) != 0) 113 ( t ); 120 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 121 txn_num = tx -> txnid ; 124 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 125 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 126 ( t = `__dbg_zy_id ( dbp )) != 0) 127 ( t ); 129 logc . size = ( y + ( txn_num + ( DB_LSN ) 130 + ( u_t32_t ) 131 + ( u_t32_t ) 132 + ( u_t32_t ); 133 i( `CRYPTO_ON ( v )) { 134 ad = v -> yo_hd -> `adj_size ( logc . size ); 135 logc . size + ad ; 138 i( is_dub || tx = NULL ) { 139 i(( t = 140 `__os_mloc ( v , logc . size , &logc. da )) != 0) 141 ( t ); 143 i(( t = `__os_mloc ( v , 144 logc . size + ( DB_TXNLOGREC ), & )) != 0) 145 ( t ); 146 #ifde DIAGNOSTIC 147 i(( t = 148 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 149 `__os_ ( v , ); 150 ( t ); 153 logc . da = ->data; 156 i( ad > 0) 157 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 159 bp = logc . da ; 161 `LOGCOPY_32 ( v , bp , & y ); 162 bp +( y ); 164 `LOGCOPY_32 ( v , bp , & txn_num ); 165 bp +( txn_num ); 167 `LOGCOPY_FROMLSN ( v , bp , lp ); 168 bp +( DB_LSN ); 170 ump = ( u_t32_t ) dbp -> log_fame -> id ; 171 `LOGCOPY_32 ( v , bp , & ump ); 172 bp +( ump ); 174 ump = ( u_t32_t ) o ; 175 `LOGCOPY_32 ( v , bp , & ump ); 176 bp +( ump ); 178 ump = ( u_t32_t ) ma_pgno ; 179 `LOGCOPY_32 ( v , bp , & ump ); 180 bp +( ump ); 182 `DB_ASSERT ( v , 183 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 185 i( is_dub || tx = NULL ) { 186 i(( t = `__log_put ( v , p ,( DBT *)& logc , 187 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 188 * lp = * p ; 189 i( p ! t_lp ) 190 * t_lp = * p ; 193 t = 0; 194 #ifde DIAGNOSTIC 199 `memy ( -> da , logc .da,ogc. size ); 200 y | DB_debug_FLAG ; 201 `LOGCOPY_32 ( v , logc . da , & y ); 203 i(! `IS_REP_CLIENT ( v )) 204 t = `__log_put ( v , 205 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 207 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 208 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 209 `LSN_NOT_LOGGED (* t_lp ); 212 #ifde LOG_DIAGNOSTIC 213 i( t != 0) 214 () `__qam_cf_t ( v , 215 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 218 #ifde DIAGNOSTIC 219 `__os_ ( v , logc . da ); 221 i( is_dub || tx = NULL ) 222 `__os_ ( v , logc . da ); 224 ( t ); 225 } } 232 $__qam_mvr_ad ( v , db , td , cbuf , g ) 233 ENV * v ; 234 DB ** db ; 235 * td ; 236 * cbuf ; 237 __qam_mvr_gs ** g ; 239 __qam_mvr_gs * gp ; 240 u_t32_t ump ; 241 u_t8_t * bp ; 242 t ; 244 i(( t = `__os_mloc ( v , 245 ( __qam_mvr_gs + ( DB_TXN ), & gp )) != 0) 246 ( t ); 247 bp = cbuf ; 248 gp -> tx = ( DB_TXN *)&argp[1]; 249 `memt ( gp -> tx , 0, ( DB_TXN )); 251 gp -> tx -> td =d; 252 `LOGCOPY_32 ( v , & gp -> ty , bp ); 253 bp +( gp -> ty ); 255 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 256 bp +( gp -> tx -> txnid ); 258 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 259 bp +( DB_LSN ); 261 `LOGCOPY_32 ( v , & gp -> code , bp ); 262 bp +( gp -> code ); 264 `LOGCOPY_32 ( v , & ump , bp ); 265 gp -> feid = ( t32_t ) ump ; 266 bp +( ump ); 267 i( db ! NULL ) { 268 * db = NULL ; 269 t = `__dbg_id_to_db ( 270 v , gp -> tx , db ,rgp-> feid , 1); 273 `LOGCOPY_32 ( v , & ump , bp ); 274 gp -> d_f = ( db_o_t ) ump ; 275 bp +( ump ); 277 `LOGCOPY_32 ( v , & ump , bp ); 278 gp -> w_f = ( db_o_t ) ump ; 279 bp +( ump ); 281 `LOGCOPY_32 ( v , & ump , bp ); 282 gp -> d_cur = ( db_o_t ) ump ; 283 bp +( ump ); 285 `LOGCOPY_32 ( v , & ump , bp ); 286 gp -> w_cur = ( db_o_t ) ump ; 287 bp +( ump ); 289 `LOGCOPY_TOLSN ( v , & gp -> m , bp ); 290 bp +( DB_LSN ); 292 `LOGCOPY_32 ( v , & ump , bp ); 293 gp -> ma_pgno = ( db_pgno_t ) ump ; 294 bp +( ump ); 296 * g = gp ; 297 ( t ); 298 } } 306 $__qam_mvr_log ( dbp , tx , t_lp , ags , 307 code , d_f , w_f , d_cur , w_cur , 308 m , ma_pgno ) 309 DB * dbp ; 310 DB_TXN * tx ; 311 DB_LSN * t_lp ; 312 u_t32_t ags ; 313 u_t32_t code ; 314 db_o_t d_f ; 315 db_o_t w_f ; 316 db_o_t d_cur ; 317 db_o_t w_cur ; 318 DB_LSN * m ; 319 db_pgno_t ma_pgno ; 321 DBT logc ; 322 DB_LSN * lp , nu_l , * p ; 323 DB_TXNLOGREC * ; 324 ENV * v ; 325 u_t32_t ump , y , txn_num ; 326 u_t ad ; 327 u_t8_t * bp ; 328 is_dub , t ; 330 `COMPQUIET ( , NULL ); 332 v = dbp ->env; 333 p = t_lp ; 334 y = DB___qam_mvr ; 335 ad = 0; 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 ( v , y , tx )) != 0) 353 ( t ); 360 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 361 txn_num = tx -> txnid ; 364 `DB_ASSERT ( v , 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 ) 376 + (* m ) 377 + ( u_t32_t ); 378 i( `CRYPTO_ON ( v )) { 379 ad = v -> yo_hd -> `adj_size ( logc . size ); 380 logc . size + ad ; 383 i( is_dub || tx = NULL ) { 384 i(( t = 385 `__os_mloc ( v , logc . size , &logc. da )) != 0) 386 ( t ); 388 i(( t = `__os_mloc ( v , 389 logc . size + ( DB_TXNLOGREC ), & )) != 0) 390 ( t ); 391 #ifde DIAGNOSTIC 392 i(( t = 393 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 394 `__os_ ( v , ); 395 ( t ); 398 logc . da = ->data; 401 i( ad > 0) 402 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 404 bp = logc . da ; 406 `LOGCOPY_32 ( v , bp , & y ); 407 bp +( y ); 409 `LOGCOPY_32 ( v , bp , & txn_num ); 410 bp +( txn_num ); 412 `LOGCOPY_FROMLSN ( v , bp , lp ); 413 bp +( DB_LSN ); 415 `LOGCOPY_32 ( v , bp , & code ); 416 bp +( code ); 418 ump = ( u_t32_t ) dbp -> log_fame -> id ; 419 `LOGCOPY_32 ( v , bp , & ump ); 420 bp +( ump ); 422 ump = ( u_t32_t ) d_f ; 423 `LOGCOPY_32 ( v , bp , & ump ); 424 bp +( ump ); 426 ump = ( u_t32_t ) w_f ; 427 `LOGCOPY_32 ( v , bp , & ump ); 428 bp +( ump ); 430 ump = ( u_t32_t ) d_cur ; 431 `LOGCOPY_32 ( v , bp , & ump ); 432 bp +( ump ); 434 ump = ( u_t32_t ) w_cur ; 435 `LOGCOPY_32 ( v , bp , & ump ); 436 bp +( ump ); 438 i( m ! NULL ) { 439 i( tx ! NULL ) { 440 LOG * = v -> lg_hd -> gfo . imy ; 441 i( `LOG_COMPARE ( m , & -> l >0 && ( t = 442 `__log_check_ge_l ( v , dbp , m ) != 0)) 443 ( t ); 445 `LOGCOPY_FROMLSN ( v , bp , m ); 447 `memt ( bp , 0, (* m )); 448 bp +(* m ); 450 ump = ( u_t32_t ) ma_pgno ; 451 `LOGCOPY_32 ( v , bp , & ump ); 452 bp +( ump ); 454 `DB_ASSERT ( v , 455 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 457 i( is_dub || tx = NULL ) { 458 i(( t = `__log_put ( v , p ,( DBT *)& logc , 459 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 460 * lp = * p ; 461 i( p ! t_lp ) 462 * t_lp = * p ; 465 t = 0; 466 #ifde DIAGNOSTIC 471 `memy ( -> da , logc .da,ogc. size ); 472 y | DB_debug_FLAG ; 473 `LOGCOPY_32 ( v , logc . da , & y ); 475 i(! `IS_REP_CLIENT ( v )) 476 t = `__log_put ( v , 477 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 479 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 480 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 481 `LSN_NOT_LOGGED (* t_lp ); 484 #ifde LOG_DIAGNOSTIC 485 i( t != 0) 486 () `__qam_mvr_t ( v , 487 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 490 #ifde DIAGNOSTIC 491 `__os_ ( v , logc . da ); 493 i( is_dub || tx = NULL ) 494 `__os_ ( v , logc . da ); 496 ( t ); 497 } } 504 $__qam_d_ad ( v , db , td , cbuf , g ) 505 ENV * v ; 506 DB ** db ; 507 * td ; 508 * cbuf ; 509 __qam_d_gs ** g ; 511 __qam_d_gs * gp ; 512 u_t32_t ump ; 513 u_t8_t * bp ; 514 t ; 516 i(( t = `__os_mloc ( v , 517 ( __qam_d_gs + ( DB_TXN ), & gp )) != 0) 518 ( t ); 519 bp = cbuf ; 520 gp -> tx = ( DB_TXN *)&argp[1]; 521 `memt ( gp -> tx , 0, ( DB_TXN )); 523 gp -> tx -> td =d; 524 `LOGCOPY_32 ( v , & gp -> ty , bp ); 525 bp +( gp -> ty ); 527 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 528 bp +( gp -> tx -> txnid ); 530 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 531 bp +( DB_LSN ); 533 `LOGCOPY_32 ( v , & ump , bp ); 534 gp -> feid = ( t32_t ) ump ; 535 bp +( ump ); 536 i( db ! NULL ) { 537 * db = NULL ; 538 t = `__dbg_id_to_db ( 539 v , gp -> tx , db ,rgp-> feid , 1); 542 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 543 bp +( DB_LSN ); 545 `LOGCOPY_32 ( v , & ump , bp ); 546 gp -> pgno = ( db_pgno_t ) ump ; 547 bp +( ump ); 549 `LOGCOPY_32 ( v , & gp -> dx , bp ); 550 bp +( gp -> dx ); 552 `LOGCOPY_32 ( v , & ump , bp ); 553 gp -> o = ( db_o_t ) ump ; 554 bp +( ump ); 556 * g = gp ; 557 ( t ); 558 } } 565 $__qam_d_log ( dbp , tx , t_lp , ags , l , pgno , dx , o ) 566 DB * dbp ; 567 DB_TXN * tx ; 568 DB_LSN * t_lp ; 569 u_t32_t ags ; 570 DB_LSN * l ; 571 db_pgno_t pgno ; 572 u_t32_t dx ; 573 db_o_t o ; 575 DBT logc ; 576 DB_LSN * lp , nu_l , * p ; 577 DB_TXNLOGREC * ; 578 ENV * v ; 579 u_t32_t ump , y , txn_num ; 580 u_t ad ; 581 u_t8_t * bp ; 582 is_dub , t ; 584 `COMPQUIET ( , NULL ); 586 v = dbp ->env; 587 p = t_lp ; 588 y = DB___qam_d ; 589 ad = 0; 590 t = 0; 592 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 593 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 594 i( tx = NULL ) 596 is_dub = 0; 598 is_dub = 1; 600 i( tx = NULL ) { 601 txn_num = 0; 602 lp = & nu_l ; 603 nu_l . fe =u_l. offt = 0; 605 i( `TAILQ_FIRST (& tx -> kids ! NULL && 606 ( t = `__txn_aivekids ( v , y , tx )) != 0) 607 ( t ); 614 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 615 txn_num = tx -> txnid ; 618 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 619 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 620 ( t = `__dbg_zy_id ( dbp )) != 0) 621 ( t ); 623 logc . size = ( y + ( txn_num + ( DB_LSN ) 624 + ( u_t32_t ) 625 + (* l ) 626 + ( u_t32_t ) 627 + ( u_t32_t ) 628 + ( u_t32_t ); 629 i( `CRYPTO_ON ( v )) { 630 ad = v -> yo_hd -> `adj_size ( logc . size ); 631 logc . size + ad ; 634 i( is_dub || tx = NULL ) { 635 i(( t = 636 `__os_mloc ( v , logc . size , &logc. da )) != 0) 637 ( t ); 639 i(( t = `__os_mloc ( v , 640 logc . size + ( DB_TXNLOGREC ), & )) != 0) 641 ( t ); 642 #ifde DIAGNOSTIC 643 i(( t = 644 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 645 `__os_ ( v , ); 646 ( t ); 649 logc . da = ->data; 652 i( ad > 0) 653 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 655 bp = logc . da ; 657 `LOGCOPY_32 ( v , bp , & y ); 658 bp +( y ); 660 `LOGCOPY_32 ( v , bp , & txn_num ); 661 bp +( txn_num ); 663 `LOGCOPY_FROMLSN ( v , bp , lp ); 664 bp +( DB_LSN ); 666 ump = ( u_t32_t ) dbp -> log_fame -> id ; 667 `LOGCOPY_32 ( v , bp , & ump ); 668 bp +( ump ); 670 i( l ! NULL ) { 671 i( tx ! NULL ) { 672 LOG * = v -> lg_hd -> gfo . imy ; 673 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 674 `__log_check_ge_l ( v , dbp , l ) != 0)) 675 ( t ); 677 `LOGCOPY_FROMLSN ( v , bp , l ); 679 `memt ( bp , 0, (* l )); 680 bp +(* l ); 682 ump = ( u_t32_t ) pgno ; 683 `LOGCOPY_32 ( v , bp , & ump ); 684 bp +( ump ); 686 `LOGCOPY_32 ( v , bp , & dx ); 687 bp +( dx ); 689 ump = ( u_t32_t ) o ; 690 `LOGCOPY_32 ( v , bp , & ump ); 691 bp +( ump ); 693 `DB_ASSERT ( v , 694 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 696 i( is_dub || tx = NULL ) { 697 i(( t = `__log_put ( v , p ,( DBT *)& logc , 698 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 699 * lp = * p ; 700 i( p ! t_lp ) 701 * t_lp = * p ; 704 t = 0; 705 #ifde DIAGNOSTIC 710 `memy ( -> da , logc .da,ogc. size ); 711 y | DB_debug_FLAG ; 712 `LOGCOPY_32 ( v , logc . da , & y ); 714 i(! `IS_REP_CLIENT ( v )) 715 t = `__log_put ( v , 716 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 718 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 719 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 720 `LSN_NOT_LOGGED (* t_lp ); 723 #ifde LOG_DIAGNOSTIC 724 i( t != 0) 725 () `__qam_d_t ( v , 726 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 729 #ifde DIAGNOSTIC 730 `__os_ ( v , logc . da ); 732 i( is_dub || tx = NULL ) 733 `__os_ ( v , logc . da ); 735 ( t ); 736 } } 743 $__qam_add_ad ( v , db , td , cbuf , g ) 744 ENV * v ; 745 DB ** db ; 746 * td ; 747 * cbuf ; 748 __qam_add_gs ** g ; 750 __qam_add_gs * gp ; 751 u_t32_t ump ; 752 u_t8_t * bp ; 753 t ; 755 i(( t = `__os_mloc ( v , 756 ( __qam_add_gs + ( DB_TXN ), & gp )) != 0) 757 ( t ); 758 bp = cbuf ; 759 gp -> tx = ( DB_TXN *)&argp[1]; 760 `memt ( gp -> tx , 0, ( DB_TXN )); 762 gp -> tx -> td =d; 763 `LOGCOPY_32 ( v , & gp -> ty , bp ); 764 bp +( gp -> ty ); 766 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 767 bp +( gp -> tx -> txnid ); 769 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 770 bp +( DB_LSN ); 772 `LOGCOPY_32 ( v , & ump , bp ); 773 gp -> feid = ( t32_t ) ump ; 774 bp +( ump ); 775 i( db ! NULL ) { 776 * db = NULL ; 777 t = `__dbg_id_to_db ( 778 v , gp -> tx , db ,rgp-> feid , 1); 781 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 782 bp +( DB_LSN ); 784 `LOGCOPY_32 ( v , & ump , bp ); 785 gp -> pgno = ( db_pgno_t ) ump ; 786 bp +( ump ); 788 `LOGCOPY_32 ( v , & gp -> dx , bp ); 789 bp +( gp -> dx ); 791 `LOGCOPY_32 ( v , & ump , bp ); 792 gp -> o = ( db_o_t ) ump ; 793 bp +( ump ); 795 `memt (& gp -> da , 0, (argp->data)); 796 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 797 bp +( u_t32_t ); 798 gp -> da .d bp ; 799 bp + gp -> da . size ; 801 `LOGCOPY_32 ( v , & gp -> vag , bp ); 802 bp +( gp -> vag ); 804 `memt (& gp -> dda , 0, (argp->olddata)); 805 `LOGCOPY_32 ( v ,& gp -> dda . size , bp ); 806 bp +( u_t32_t ); 807 gp -> dda . da = bp ; 808 bp + gp -> dda . size ; 810 * g = gp ; 811 ( t ); 812 } } 820 $__qam_add_log ( dbp , tx , t_lp , ags , l , pgno , dx , o , da , 821 vag , dda ) 822 DB * dbp ; 823 DB_TXN * tx ; 824 DB_LSN * t_lp ; 825 u_t32_t ags ; 826 DB_LSN * l ; 827 db_pgno_t pgno ; 828 u_t32_t dx ; 829 db_o_t o ; 830 cڡ DBT * da ; 831 u_t32_t vag ; 832 cڡ DBT * dda ; 834 DBT logc ; 835 DB_LSN * lp , nu_l , * p ; 836 DB_TXNLOGREC * ; 837 ENV * v ; 838 u_t32_t zo , ump , y , txn_num ; 839 u_t ad ; 840 u_t8_t * bp ; 841 is_dub , t ; 843 `COMPQUIET ( , NULL ); 845 v = dbp ->env; 846 p = t_lp ; 847 y = DB___qam_add ; 848 ad = 0; 849 t = 0; 851 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 852 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 853 i( tx = NULL ) 855 is_dub = 0; 857 is_dub = 1; 859 i( tx = NULL ) { 860 txn_num = 0; 861 lp = & nu_l ; 862 nu_l . fe =u_l. offt = 0; 864 i( `TAILQ_FIRST (& tx -> kids ! NULL && 865 ( t = `__txn_aivekids ( v , y , tx )) != 0) 866 ( t ); 873 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 874 txn_num = tx -> txnid ; 877 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 878 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 879 ( t = `__dbg_zy_id ( dbp )) != 0) 880 ( t ); 882 logc . size = ( y + ( txn_num + ( DB_LSN ) 883 + ( u_t32_t ) 884 + (* l ) 885 + ( u_t32_t ) 886 + ( u_t32_t ) 887 + ( u_t32_t ) 888 + ( u_t32_t + ( da = NULL ? 0 : da-> size ) 889 + ( u_t32_t ) 890 + ( u_t32_t + ( dda = NULL ? 0 : oldda-> size ); 891 i( `CRYPTO_ON ( v )) { 892 ad = v -> yo_hd -> `adj_size ( logc . size ); 893 logc . size + ad ; 896 i( is_dub || tx = NULL ) { 897 i(( t = 898 `__os_mloc ( v , logc . size , &logc. da )) != 0) 899 ( t ); 901 i(( t = `__os_mloc ( v , 902 logc . size + ( DB_TXNLOGREC ), & )) != 0) 903 ( t ); 904 #ifde DIAGNOSTIC 905 i(( t = 906 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 907 `__os_ ( v , ); 908 ( t ); 911 logc . da = ->data; 914 i( ad > 0) 915 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 917 bp = logc . da ; 919 `LOGCOPY_32 ( v , bp , & y ); 920 bp +( y ); 922 `LOGCOPY_32 ( v , bp , & txn_num ); 923 bp +( txn_num ); 925 `LOGCOPY_FROMLSN ( v , bp , lp ); 926 bp +( DB_LSN ); 928 ump = ( u_t32_t ) dbp -> log_fame -> id ; 929 `LOGCOPY_32 ( v , bp , & ump ); 930 bp +( ump ); 932 i( l ! NULL ) { 933 i( tx ! NULL ) { 934 LOG * = v -> lg_hd -> gfo . imy ; 935 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 936 `__log_check_ge_l ( v , dbp , l ) != 0)) 937 ( t ); 939 `LOGCOPY_FROMLSN ( v , bp , l ); 941 `memt ( bp , 0, (* l )); 942 bp +(* l ); 944 ump = ( u_t32_t ) pgno ; 945 `LOGCOPY_32 ( v , bp , & ump ); 946 bp +( ump ); 948 `LOGCOPY_32 ( v , bp , & dx ); 949 bp +( dx ); 951 ump = ( u_t32_t ) o ; 952 `LOGCOPY_32 ( v , bp , & ump ); 953 bp +( ump ); 955 i( da = NULL ) { 956 zo = 0; 957 `LOGCOPY_32 ( v , bp , & zo ); 958 bp +( u_t32_t ); 960 `LOGCOPY_32 ( v , bp , & da -> size ); 961 bp +( da -> size ); 962 `memy ( bp , da ->da, da-> size ); 963 bp + da -> size ; 966 `LOGCOPY_32 ( v , bp , & vag ); 967 bp +( vag ); 969 i( dda = NULL ) { 970 zo = 0; 971 `LOGCOPY_32 ( v , bp , & zo ); 972 bp +( u_t32_t ); 974 `LOGCOPY_32 ( v , bp , & dda -> size ); 975 bp +( dda -> size ); 976 `memy ( bp , dda -> da , oldda-> size ); 977 bp + dda -> size ; 980 `DB_ASSERT ( v , 981 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 983 i( is_dub || tx = NULL ) { 984 i(( t = `__log_put ( v , p ,( DBT *)& logc , 985 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 986 * lp = * p ; 987 i( p ! t_lp ) 988 * t_lp = * p ; 991 t = 0; 992 #ifde DIAGNOSTIC 997 `memy ( -> da , logc .da,ogc. size ); 998 y | DB_debug_FLAG ; 999 `LOGCOPY_32 ( v , logc . da , & y ); 1001 i(! `IS_REP_CLIENT ( v )) 1002 t = `__log_put ( v , 1003 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1005 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1006 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1007 `LSN_NOT_LOGGED (* t_lp ); 1010 #ifde LOG_DIAGNOSTIC 1011 i( t != 0) 1012 () `__qam_add_t ( v , 1013 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1016 #ifde DIAGNOSTIC 1017 `__os_ ( v , logc . da ); 1019 i( is_dub || tx = NULL ) 1020 `__os_ ( v , logc . da ); 1022 ( t ); 1023 } } 1030 $__qam_dext_ad ( v , db , td , cbuf , g ) 1031 ENV * v ; 1032 DB ** db ; 1033 * td ; 1034 * cbuf ; 1035 __qam_dext_gs ** g ; 1037 __qam_dext_gs * gp ; 1038 u_t32_t ump ; 1039 u_t8_t * bp ; 1040 t ; 1042 i(( t = `__os_mloc ( v , 1043 ( __qam_dext_gs + ( DB_TXN ), & gp )) != 0) 1044 ( t ); 1045 bp = cbuf ; 1046 gp -> tx = ( DB_TXN *)&argp[1]; 1047 `memt ( gp -> tx , 0, ( DB_TXN )); 1049 gp -> tx -> td =d; 1050 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1051 bp +( gp -> ty ); 1053 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1054 bp +( gp -> tx -> txnid ); 1056 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1057 bp +( DB_LSN ); 1059 `LOGCOPY_32 ( v , & ump , bp ); 1060 gp -> feid = ( t32_t ) ump ; 1061 bp +( ump ); 1062 i( db ! NULL ) { 1063 * db = NULL ; 1064 t = `__dbg_id_to_db ( 1065 v , gp -> tx , db ,rgp-> feid , 1); 1068 `LOGCOPY_TOLSN ( v , & gp -> l , bp ); 1069 bp +( DB_LSN ); 1071 `LOGCOPY_32 ( v , & ump , bp ); 1072 gp -> pgno = ( db_pgno_t ) ump ; 1073 bp +( ump ); 1075 `LOGCOPY_32 ( v , & gp -> dx , bp ); 1076 bp +( gp -> dx ); 1078 `LOGCOPY_32 ( v , & ump , bp ); 1079 gp -> o = ( db_o_t ) ump ; 1080 bp +( ump ); 1082 `memt (& gp -> da , 0, (argp->data)); 1083 `LOGCOPY_32 ( v ,& gp -> da . size , bp ); 1084 bp +( u_t32_t ); 1085 gp -> da .d bp ; 1086 bp + gp -> da . size ; 1088 * g = gp ; 1089 ( t ); 1090 } } 1098 $__qam_dext_log ( dbp , tx , t_lp , ags , l , pgno , dx , o , da ) 1099 DB * dbp ; 1100 DB_TXN * tx ; 1101 DB_LSN * t_lp ; 1102 u_t32_t ags ; 1103 DB_LSN * l ; 1104 db_pgno_t pgno ; 1105 u_t32_t dx ; 1106 db_o_t o ; 1107 cڡ DBT * da ; 1109 DBT logc ; 1110 DB_LSN * lp , nu_l , * p ; 1111 DB_TXNLOGREC * ; 1112 ENV * v ; 1113 u_t32_t zo , ump , y , txn_num ; 1114 u_t ad ; 1115 u_t8_t * bp ; 1116 is_dub , t ; 1118 `COMPQUIET ( , NULL ); 1120 v = dbp ->env; 1121 p = t_lp ; 1122 y = DB___qam_dext ; 1123 ad = 0; 1124 t = 0; 1126 i( `LF_ISSET ( DB_LOG_NOT_DURABLE ) || 1127 `F_ISSET ( dbp , DB_AM_NOT_DURABLE )) { 1128 i( tx = NULL ) 1130 is_dub = 0; 1132 is_dub = 1; 1134 i( tx = NULL ) { 1135 txn_num = 0; 1136 lp = & nu_l ; 1137 nu_l . fe =u_l. offt = 0; 1139 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1140 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1141 ( t ); 1148 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1149 txn_num = tx -> txnid ; 1152 `DB_ASSERT ( v , dbp -> log_fame ! NULL ); 1153 i( dbp -> log_fame -> id = DB_LOGFILEID_INVALID && 1154 ( t = `__dbg_zy_id ( dbp )) != 0) 1155 ( t ); 1157 logc . size = ( y + ( txn_num + ( DB_LSN ) 1158 + ( u_t32_t ) 1159 + (* l ) 1160 + ( u_t32_t ) 1161 + ( u_t32_t ) 1162 + ( u_t32_t ) 1163 + ( u_t32_t + ( da = NULL ? 0 : da-> size ); 1164 i( `CRYPTO_ON ( v )) { 1165 ad = v -> yo_hd -> `adj_size ( logc . size ); 1166 logc . size + ad ; 1169 i( is_dub || tx = NULL ) { 1170 i(( t = 1171 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1172 ( t ); 1174 i(( t = `__os_mloc ( v , 1175 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1176 ( t ); 1177 #ifde DIAGNOSTIC 1178 i(( t = 1179 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1180 `__os_ ( v , ); 1181 ( t ); 1184 logc . da = ->data; 1187 i( ad > 0) 1188 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1190 bp = logc . da ; 1192 `LOGCOPY_32 ( v , bp , & y ); 1193 bp +( y ); 1195 `LOGCOPY_32 ( v , bp , & txn_num ); 1196 bp +( txn_num ); 1198 `LOGCOPY_FROMLSN ( v , bp , lp ); 1199 bp +( DB_LSN ); 1201 ump = ( u_t32_t ) dbp -> log_fame -> id ; 1202 `LOGCOPY_32 ( v , bp , & ump ); 1203 bp +( ump ); 1205 i( l ! NULL ) { 1206 i( tx ! NULL ) { 1207 LOG * = v -> lg_hd -> gfo . imy ; 1208 i( `LOG_COMPARE ( l , & ->l>0 && ( t = 1209 `__log_check_ge_l ( v , dbp , l ) != 0)) 1210 ( t ); 1212 `LOGCOPY_FROMLSN ( v , bp , l ); 1214 `memt ( bp , 0, (* l )); 1215 bp +(* l ); 1217 ump = ( u_t32_t ) pgno ; 1218 `LOGCOPY_32 ( v , bp , & ump ); 1219 bp +( ump ); 1221 `LOGCOPY_32 ( v , bp , & dx ); 1222 bp +( dx ); 1224 ump = ( u_t32_t ) o ; 1225 `LOGCOPY_32 ( v , bp , & ump ); 1226 bp +( ump ); 1228 i( da = NULL ) { 1229 zo = 0; 1230 `LOGCOPY_32 ( v , bp , & zo ); 1231 bp +( u_t32_t ); 1233 `LOGCOPY_32 ( v , bp , & da -> size ); 1234 bp +( da -> size ); 1235 `memy ( bp , da ->da, da-> size ); 1236 bp + da -> size ; 1239 `DB_ASSERT ( v , 1240 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1242 i( is_dub || tx = NULL ) { 1243 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1244 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1245 * lp = * p ; 1246 i( p ! t_lp ) 1247 * t_lp = * p ; 1250 t = 0; 1251 #ifde DIAGNOSTIC 1256 `memy ( -> da , logc .da,ogc. size ); 1257 y | DB_debug_FLAG ; 1258 `LOGCOPY_32 ( v , logc . da , & y ); 1260 i(! `IS_REP_CLIENT ( v )) 1261 t = `__log_put ( v , 1262 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1264 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1265 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1266 `LSN_NOT_LOGGED (* t_lp ); 1269 #ifde LOG_DIAGNOSTIC 1270 i( t != 0) 1271 () `__qam_dext_t ( v , 1272 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1275 #ifde DIAGNOSTIC 1276 `__os_ ( v , logc . da ); 1278 i( is_dub || tx = NULL ) 1279 `__os_ ( v , logc . da ); 1281 ( t ); 1282 } } 1288 $__qam__cov ( v , dbp ) 1289 ENV * v ; 1290 DB_DISTAB * dbp ; 1292 t ; 1294 i(( t = `__db_add_covy_t ( v , dbp , 1295 __qam_cf_cov , DB___qam_cf )) != 0) 1296 ( t ); 1297 i(( t = `__db_add_covy_t ( v , dbp , 1298 __qam_mvr_cov , DB___qam_mvr )) != 0) 1299 ( t ); 1300 i(( t = `__db_add_covy_t ( v , dbp , 1301 __qam_d_cov , DB___qam_d )) != 0) 1302 ( t ); 1303 i(( t = `__db_add_covy_t ( v , dbp , 1304 __qam_add_cov , DB___qam_add )) != 0) 1305 ( t ); 1306 i(( t = `__db_add_covy_t ( v , dbp , 1307 __qam_dext_cov , DB___qam_dext )) != 0) 1308 ( t ); 1310 } } @../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 ( v , db , lp , nud2 , nud3 ) 21 ENV * v ; 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 = 34 `__qam_cf_ad ( v , NULL , NULL, 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 ("\eo: %lu\n", ( u_lg ) gp -> o ); 45 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 46 () `tf ("\n"); 47 `__os_ ( v , gp ); 49 } } 56 $__qam_mvr_t ( v , db , lp , nud2 , nud3 ) 57 ENV * v ; 58 DBT * db ; 59 DB_LSN * lp ; 60 db_cs nud2 ; 61 * nud3 ; 63 __qam_mvr_gs * gp ; 64 t ; 66 nud2 = DB_TXN_PRINT ; 67 nud3 = NULL ; 69 i(( t = 70 `__qam_mvr_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 71 ( t ); 72 () `tf ( 74 ( u_lg ) lp -> fe , (u_lgp-> offt , 75 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 76 ( u_lg ) gp -> ty , 77 ( u_lg ) gp -> tx -> txnid , 78 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 79 () `tf ("\tcode: %lu\n", ( u_lg ) gp -> code ); 80 () `tf ("\tfeid: %ld\n", () gp -> feid ); 81 () `tf ("\td_f: %lu\n", ( u_lg ) gp -> d_f ); 82 () `tf ("\ew_f: %lu\n", ( u_lg ) gp -> w_f ); 83 () `tf ("\td_cur: %lu\n", ( u_lg ) gp -> d_cur ); 84 () `tf ("\ew_cur: %lu\n", ( u_lg ) gp -> w_cur ); 85 () `tf ("\tmetalsn: [%lu][%lu]\n", 86 ( u_lg ) gp -> m . fe , (u_lgrgp->m. offt ); 87 () `tf ("\tma_pgno: %lu\n", ( u_lg ) gp -> ma_pgno ); 88 () `tf ("\n"); 89 `__os_ ( v , gp ); 91 } } 98 $__qam_d_t ( v , db , lp , nud2 , nud3 ) 99 ENV * v ; 100 DBT * db ; 101 DB_LSN * lp ; 102 db_cs nud2 ; 103 * nud3 ; 105 __qam_d_gs * gp ; 106 t ; 108 nud2 = DB_TXN_PRINT ; 109 nud3 = NULL ; 111 i(( t = 112 `__qam_d_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 113 ( t ); 114 () `tf ( 116 ( u_lg ) lp -> fe , (u_lgp-> offt , 117 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 118 ( u_lg ) gp -> ty , 119 ( u_lg ) gp -> tx -> txnid , 120 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 121 () `tf ("\tfeid: %ld\n", () gp -> feid ); 122 () `tf ("\tlsn: [%lu][%lu]\n", 123 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 124 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 125 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 126 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 127 () `tf ("\n"); 128 `__os_ ( v , gp ); 130 } } 137 $__qam_add_t ( v , db , lp , nud2 , nud3 ) 138 ENV * v ; 139 DBT * db ; 140 DB_LSN * lp ; 141 db_cs nud2 ; 142 * nud3 ; 144 __qam_add_gs * gp ; 145 u_t32_t i ; 146 ch ; 147 t ; 149 nud2 = DB_TXN_PRINT ; 150 nud3 = NULL ; 152 i(( t = 153 `__qam_add_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 154 ( t ); 155 () `tf ( 157 ( u_lg ) lp -> fe , (u_lgp-> offt , 158 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 159 ( u_lg ) gp -> ty , 160 ( u_lg ) gp -> tx -> txnid , 161 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 162 () `tf ("\tfeid: %ld\n", () gp -> feid ); 163 () `tf ("\tlsn: [%lu][%lu]\n", 164 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 165 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 166 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 167 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 168 () `tf ("\tdata: "); 169 i = 0; i < gp -> da . size ; i++) { 170 ch = (( u_t8_t *) gp -> da .da)[ i ]; 171 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 173 () `tf ("\n"); 174 () `tf ("\tvag: %lu\n", ( u_lg ) gp -> vag ); 175 () `tf ("\tolddata: "); 176 i = 0; i < gp -> dda . size ; i++) { 177 ch = (( u_t8_t *) gp -> dda . da )[ i ]; 178 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 180 () `tf ("\n"); 181 () `tf ("\n"); 182 `__os_ ( v , gp ); 184 } } 191 $__qam_dext_t ( v , db , lp , nud2 , nud3 ) 192 ENV * v ; 193 DBT * db ; 194 DB_LSN * lp ; 195 db_cs nud2 ; 196 * nud3 ; 198 __qam_dext_gs * gp ; 199 u_t32_t i ; 200 ch ; 201 t ; 203 nud2 = DB_TXN_PRINT ; 204 nud3 = NULL ; 206 i(( t = 207 `__qam_dext_ad ( v , NULL , NULL, db -> da , & gp )) != 0) 208 ( t ); 209 () `tf ( 211 ( u_lg ) lp -> fe , (u_lgp-> offt , 212 ( gp -> ty & DB_debug_FLAG ) ? "_debug" : "", 213 ( u_lg ) gp -> ty , 214 ( u_lg ) gp -> tx -> txnid , 215 ( u_lg ) gp -> ev_l . fe , (u_lgrgp->ev_l. offt ); 216 () `tf ("\tfeid: %ld\n", () gp -> feid ); 217 () `tf ("\tlsn: [%lu][%lu]\n", 218 ( u_lg ) gp -> l . fe , (u_lgrgp->l. offt ); 219 () `tf ("\gno: %lu\n", ( u_lg ) gp -> pgno ); 220 () `tf ("\tdx: %lu\n", ( u_lg ) gp -> dx ); 221 () `tf ("\eo: %lu\n", ( u_lg ) gp -> o ); 222 () `tf ("\tdata: "); 223 i = 0; i < gp -> da . size ; i++) { 224 ch = (( u_t8_t *) gp -> da .da)[ i ]; 225 `tf ( `irt ( ch ) || ch == 0x0a ? "%c" : "%#x ", ch); 227 () `tf ("\n"); 228 () `tf ("\n"); 229 `__os_ ( v , gp ); 231 } } 237 $__qam__t ( v , dbp ) 238 ENV * v ; 239 DB_DISTAB * dbp ; 241 t ; 243 i(( t = `__db_add_covy_t ( v , dbp , 244 __qam_cf_t , DB___qam_cf )) != 0) 245 ( t ); 246 i(( t = `__db_add_covy_t ( v , dbp , 247 __qam_mvr_t , DB___qam_mvr )) != 0) 248 ( t ); 249 i(( t = `__db_add_covy_t ( v , dbp , 250 __qam_d_t , DB___qam_d )) != 0) 251 ( t ); 252 i(( t = `__db_add_covy_t ( v , dbp , 253 __qam_add_t , DB___qam_add )) != 0) 254 ( t ); 255 i(( t = `__db_add_covy_t ( v , dbp , 256 __qam_dext_t , DB___qam_dext )) != 0) 257 ( t ); 259 } } @../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 ( v , pg ) 25 ENV * v ; 26 PAGE * pg ; 28 u_t8_t * p ; 30 `COMPQUIET ( v , NULL ); 32 `__db_masw ( pg ); 33 p = ( u_t8_t *) pg + ( DBMETA ); 35 `SWAP32 ( p ); 36 `SWAP32 ( p ); 37 `SWAP32 ( p ); 38 `SWAP32 ( p ); 39 `SWAP32 ( p ); 40 `SWAP32 ( p ); 41 p +91 * ( u_t32_t ); 42 `SWAP32 ( p ); 45 } } 56 $__qam_pg_out ( v , pg , , cook ) 57 ENV * v ; 58 db_pgno_t pg ; 59 * ; 60 DBT * cook ; 62 DB_PGINFO * pgfo ; 63 QPAGE * h ; 65 `COMPQUIET ( pg , 0); 66 pgfo = ( DB_PGINFO *) cook -> da ; 67 i(! `F_ISSET ( pgfo , DB_AM_SWAP )) 70 h = ; 71 i( h -> ty = P_QAMMETA ) 72 ( `__qam_msw ( v , )); 74 `M_32_SWAP ( h -> l . fe ); 75 `M_32_SWAP ( h -> l . offt ); 76 `M_32_SWAP ( h -> pgno ); 79 } } @../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 ( dbc , pgno , add , mode , iܙy , ags ) 33 DBC * dbc ; 34 db_pgno_t pgno ; 35 * add ; 36 qam_obe_mode mode ; 37 DB_CACHE_PRIORITY iܙy ; 38 u_t32_t ags ; 40 DB * dbp ; 41 DB_MPOOLFILE * mpf ; 42 ENV * v ; 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 dbp = dbc ->dbp; 51 v = dbp ->env; 52 qp = ( QUEUE *) dbp -> q_ ; 53 t = 0; 55 i( qp -> ge_ext == 0) { 56 mpf = dbp ->mpf; 57 mode ) { 58 QAM_PROBE_GET : 59 ( `__memp_fg ( mpf , & pgno , 60 dbc -> thad_fo , dbc-> txn , ags , add )); 61 QAM_PROBE_PUT : 62 ( `__memp_ut ( mpf , 63 dbc -> thad_fo , add , iܙy )); 64 QAM_PROBE_DIRTY : 65 ( `__memp_dty ( mpf , add , 66 dbc -> thad_fo , dbc-> txn , iܙy , ags )); 67 QAM_PROBE_MPF : 68 *( DB_MPOOLFILE **) add = mpf ; 73 mpf = NULL ; 80 `MUTEX_LOCK ( v , dbp -> mux ); 81 extid = `QAM_PAGE_EXTENT ( dbp , pgno ); 84 y = & qp -> y1 ; 85 i( y -> n_ex == 0) { 87 y -> n_ex = 4; 88 y -> low_ex = extid ; 89 numext = offt = dext = 0; 90 ss = 0; 91 loc ; 94 y : 95 i( extid < y -> low_ex ) { 96 ss = 1; 97 offt = y -> low_ex - extid ; 99 ss = 0; 100 offt = extid - y -> low_ex ; 102 i( qp -> y2 . n_ex != 0 && 103 ( extid > qp -> y2 . low_ex ? 104 offt > extid - qp -> y2 . low_ex : 105 offt > qp -> y2 . low_ex - extid )) { 106 y = & qp -> y2 ; 107 i( extid < y -> low_ex ) { 108 ss = 1; 109 offt = y -> low_ex - extid ; 111 ss = 0; 112 offt = extid - y -> low_ex ; 121 i( ss =1 || offt > y -> n_ex ) { 122 dext = y -> n_ex ; 123 numext = ( y -> hi_ex -ay-> low_ex ) + 1; 124 i( ss =1 && offt + numext < y -> n_ex ) { 130 `memmove (& y -> mpay [ offt ], 131 y -> mpay , numext 132 * ( y -> mpay [0])); 133 `memt ( y -> mpay , 0, offt 134 * ( y -> mpay [0])); 135 offt = 0; 136 } i( ss =0 && offt = y -> n_ex && 137 ( mode = QAM_PROBE_GET || mod= QAM_PROBE_PUT ) && 138 y -> mpay [0]. pf == 0) { 144 mpf = y -> mpay [0].mpf; 145 i( mpf ! NULL && ( t = `__memp_fo (mpf, 0)) != 0) 146 r ; 147 `memmove (& y -> mpay [0], &array->mpfarray[1], 148 ( y -> n_ex - 1* ay-> mpay [0])); 149 y -> low_ex ++; 150 y -> hi_ex ++; 151 offt --; 152 y -> mpay [ offt ]. mpf = NULL ; 153 y -> mpay [ offt ]. pf = 0; 160 maxext = ( u_t32_t UINT32_MAX 161 / ( qp -> ge_ext * qp-> c_ge ); 162 i( offt > maxext /2) { 163 y = & qp -> y2 ; 164 `DB_ASSERT ( v , y -> n_ex == 0); 165 dext = 0; 166 y -> n_ex = 4; 167 y -> low_ex = extid ; 168 offt = 0; 169 numext = 0; 170 } i( y -> mpay [0]. pf == 0) { 176 i = 0; i < y -> n_ex ; i++) { 177 i( y -> mpay [ i ]. pf != 0) 179 mpf = y -> mpay [ i ].mpf; 180 i( mpf = NULL ) 182 () `__memp_g_ags ( mpf , & lags ); 183 i(! `FLD_ISSET ( lags , DB_MPOOL_UNLINK )) 186 y -> mpay [ i ]. mpf = NULL ; 187 i(( t = `__memp_fo ( mpf , 0)) != 0) 188 r ; 190 i( i == 0) 191 ; 192 `memmove (& y -> mpay [0], 193 & y -> mpay [ i ], 194 ( y -> n_ex - i ) * 195 ( y -> mpay [0])); 196 `memt (& y -> mpay [y-> n_ex - i ], 197 '\0', i * ( y -> mpay [0])); 198 y -> low_ex + i ; 199 y -> hi_ex + i ; 200 y ; 206 : y -> n_ex + offt ; 207 y -> n_ex <<= 2; 209 loc : i(( t = `__os_loc ( v , 210 y -> n_ex * ( __qmpf ), 211 & y -> mpay )) != 0) 212 r ; 214 i( ss == 1) { 219 `memmove (& y -> mpay [ offt ], 220 y -> mpay , 221 numext * ( y -> mpay [0])); 222 `memt ( y -> mpay , 0, 223 offt * ( y -> mpay [0])); 224 `memt (& y -> mpay [ numext + offt ], 0, 225 ( y -> n_ex - ( numext + offt )) 226 * ( y -> mpay [0])); 227 offt = 0; 231 `memt (& y -> mpay [ dext ], 0, 232 ( y -> n_ex - dext ) * 233 ( y -> mpay [0])); 238 i( extid < y -> low_ex ) 239 y -> low_ex = extid ; 240 i( extid > y -> hi_ex ) 241 y -> hi_ex = extid ; 244 i( y -> mpay [ offt ]. mpf = NULL ) { 245 `QAM_EXNAME ( qp , extid , buf , (buf)); 246 i(( t = `__memp_f ( 247 v , & y -> mpay [ offt ]. mpf )) != 0) 248 r ; 249 mpf = y -> mpay [ offt ].mpf; 250 () `__memp_t_l_offt ( mpf , 0); 251 () `__memp_t_pgcook ( mpf , & qp -> pgcook ); 252 () `__memp_g_y ( dbp -> mpf , & y ); 253 () `__memp_t_y ( mpf , y ); 254 () `__memp_t_r_n ( mpf , dbp -> pgsize ); 257 `__qam_exid ( dbp , fid , extid ); 258 () `__memp_t_feid ( mpf , fid ); 259 ݒags = DB_EXTENT ; 260 i( `LF_ISSET ( DB_MPOOL_CREATE )) 261 ݒags | DB_CREATE ; 262 i( `F_ISSET ( dbp , DB_AM_RDONLY )) 263 ݒags | DB_RDONLY ; 264 i( `F_ISSET ( v -> dbv , DB_ENV_DIRECT_DB )) 265 ݒags | DB_DIRECT ; 266 i(( t = `__memp_fݒ ( 267 mpf , NULL , buf , ݒags , qp -> mode , dbp -> pgsize )) != 0) { 268 y -> mpay [ offt ]. mpf = NULL ; 269 () `__memp_fo ( mpf , 0); 270 r ; 278 mpf = y -> mpay [ offt ].mpf; 279 i( mode = QAM_PROBE_GET ) 280 y -> mpay [ offt ]. pf ++; 287 i( `LF_ISSET ( DB_MPOOL_CREATE )) 288 () `__memp_t_ags ( mpf , DB_MPOOL_UNLINK , 0); 290 r : 291 `MUTEX_UNLOCK ( v , dbp -> mux ); 293 i( t == 0) { 294 pgno --; 295 pgno % qp -> ge_ext ; 296 mode ) { 297 QAM_PROBE_GET : 298 t = `__memp_fg ( mpf , & pgno , 299 dbc -> thad_fo , dbc-> txn , ags , add ); 300 i( t == 0) 303 QAM_PROBE_PUT : 304 t = `__memp_ut ( mpf , 305 dbc -> thad_fo , add , dbp -> iܙy ); 307 QAM_PROBE_DIRTY : 308 ( `__memp_dty ( mpf , add , 309 dbc -> thad_fo , dbc-> txn , dbp -> iܙy , ags )); 310 QAM_PROBE_MPF : 311 *( DB_MPOOLFILE **) add = mpf ; 315 `MUTEX_LOCK ( v , dbp -> mux ); 317 offt = extid - y -> low_ex ; 318 `DB_ASSERT ( v , y -> mpay [ offt ]. pf > 0); 319 i(-- y -> mpay [ offt ]. pf == 0 && 320 ( mode = QAM_PROBE_GET || t == 0)) { 322 () `__memp_g_ags ( mpf , & ags ); 323 i( `LF_ISSET ( DB_MPOOL_UNLINK )) { 324 y -> mpay [ offt ]. mpf = NULL ; 325 i(( t_t = 326 `__memp_fo ( mpf , 0)!0 && t == 0) 327 t = t_t ; 330 `MUTEX_UNLOCK ( v , dbp -> mux ); 332 ( t ); 333 } } 344 $__qam_fo ( dbp , pgnddr ) 345 DB * dbp ; 346 db_pgno_t pgnddr ; 348 DB_MPOOLFILE * mpf ; 349 ENV * v ; 350 MPFARRAY * y ; 351 QUEUE * qp ; 352 u_t32_t extid , offt ; 353 t ; 355 t = 0; 356 v = dbp ->env; 357 qp = ( QUEUE *) dbp -> q_ ; 359 `MUTEX_LOCK ( v , dbp -> mux ); 361 extid = `QAM_PAGE_EXTENT ( dbp , pgnddr ); 362 y = & qp -> y1 ; 363 i( y -> low_ex > extid ||ay-> hi_ex <xtid) 364 y = & qp -> y2 ; 365 offt = extid - y -> low_ex ; 367 `DB_ASSERT ( v , 368 extid > y -> low_ex && offt <ay-> n_ex ); 371 i( y -> mpay [ offt ]. pf != 0) 372 de ; 374 mpf = y -> mpay [ offt ].mpf; 375 y -> mpay [ offt ]. mpf = NULL ; 376 t = `__memp_fo ( mpf , 0); 378 de : 379 `MUTEX_UNLOCK ( v , dbp -> mux ); 380 ( t ); 381 } } 393 $__qam_emove ( dbp , pgnddr ) 394 DB * dbp ; 395 db_pgno_t pgnddr ; 397 DB_MPOOLFILE * mpf ; 398 ENV * v ; 399 MPFARRAY * y ; 400 QUEUE * qp ; 401 u_t32_t extid , offt ; 402 t ; 404 qp = ( QUEUE *) dbp -> q_ ; 405 v = dbp ->env; 406 t = 0; 408 `MUTEX_LOCK ( v , dbp -> mux ); 410 extid = `QAM_PAGE_EXTENT ( dbp , pgnddr ); 411 y = & qp -> y1 ; 412 i( y -> low_ex > extid ||ay-> hi_ex <xtid) 413 y = & qp -> y2 ; 414 offt = extid - y -> low_ex ; 416 `DB_ASSERT ( v , 417 extid > y -> low_ex && offt <ay-> n_ex ); 419 mpf = y -> mpay [ offt ].mpf; 421 i( mpf = NULL ) 422 r ; 428 i( `LOGGING_ON ( v && ( t = `__log_ush nv, NULL )) != 0) 429 r ; 431 () `__memp_t_ags ( mpf , DB_MPOOL_UNLINK , 1); 433 i( y -> mpay [ offt ]. pf != 0) 434 r ; 435 y -> mpay [ offt ]. mpf = NULL ; 436 i(( t = `__memp_fo ( mpf , 0)) != 0) 437 r ; 443 i( offt == 0) { 444 `memmove ( y -> mpay , &array->mpfarray[1], 445 ( y -> hi_ex -ay-> low_ex ) 446 * ( y -> mpay [0])); 447 y -> mpay [ 448 y -> hi_ex -ay-> low_ex ]. mpf = NULL ; 449 i( y -> low_ex !y-> hi_ex ) 450 y -> low_ex ++; 452 i( extid = y -> hi_ex ) 453 y -> hi_ex --; 456 r : `MUTEX_UNLOCK ( v , dbp -> mux ); 458 ( t ); 459 } } 468 $__qam_sync ( dbp ) 469 DB * dbp ; 471 t ; 476 i(( t = `__memp_fsync ( dbp -> mpf )) != 0) 477 ( t ); 478 i((( QUEUE *) dbp -> q_ )-> ge_ext != 0) 479 ( `__memp_sync_t ( 480 dbp -> v , NULL , 0, DB_SYNC_QUEUE_EXTENT , NULL, NULL)); 482 } } 493 $__qam_g_fi ( dbp , , fip ) 494 DB * dbp ; 495 DB_THREAD_INFO * ; 496 QUEUE_FILELIST ** fip ; 498 DBC * dbc ; 499 DB_MPOOLFILE * mpf ; 500 ENV * v ; 501 QMETA * ma ; 502 QUEUE * qp ; 503 size_t ex_t ; 504 db_o_t i , cut , f , , c_ex ; 505 QUEUE_FILELIST * ; 506 t ; 508 v = dbp ->env; 509 mpf = dbp ->mpf; 510 qp = ( QUEUE *) dbp -> q_ ; 511 * fip = NULL ; 513 i( qp -> ge_ext == 0) 517 i( qp -> me = NULL ) 521 i = PGNO_BASE_MD ; 522 i(( t = `__memp_fg ( mpf , & i , , NULL , 0, & ma )) != 0) 523 ( t ); 525 cut = ma -> cur_o ; 526 f = ma -> f_o ; 528 i(( t = `__memp_ut ( mpf , , ma , dbp -> iܙy )) != 0) 529 ( t ); 540 c_ex = qp -> c_ge * qp-> ge_ext ; 541 i( cut > f ) 542 ex_t = ( cut - f / c_ex + 3; 544 ex_t = 545 ( cut + ( UINT32_MAX - f )/ c_ex + 4; 547 i( ex_t == 0) 549 i(( t = `__os_oc ( v , 550 ex_t , ( QUEUE_FILELIST ), fip )) != 0) 551 ( t ); 552 = * fip ; 553 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 554 ( t ); 556 aga : 557 i( cut > f ) 558 = cut ; 560 = UINT32_MAX ; 568 f -f % c_ex ; 569 f + % c_ex ; 571 i = f ; i >f && i < ; i + c_ex ) { 572 i(( t = `__qam_robe ( dbc , `QAM_RECNO_PAGE ( dbp , i ), 573 & -> mpf , QAM_PROBE_MPF , dbp -> iܙy , 0)) != 0) { 574 i( t = ENOENT ) 576 r ; 578 -> id = `QAM_RECNO_EXTENT ( dbp , i ); 579 ++; 580 `DB_ASSERT ( v , ( size_t )( - * fip < ex_t ); 583 i( cut < f ) { 584 f = 1; 585 aga ; 588 r : () `__dbc_o ( dbc ); 589 ( t ); 590 } } 598 $__qam_ex_mes ( v , me , mip ) 599 ENV * v ; 600 * me ; 601 *** mip ; 603 DB * dbp ; 604 DB_THREAD_INFO * ; 605 QUEUE * qp ; 606 QUEUE_FILELIST * fi , * ; 607 size_t n ; 608 t , t , t_t ; 609 buf [ DB_MAXPATHLEN ], ** , * p ; 611 * mip = NULL ; 612 fi = NULL ; 613 `ENV_GET_THREAD_INFO ( v , ); 614 i(( t = `__db__ (& dbp , v , 0)) != 0) 615 ( t ); 616 i(( t = `__db_ݒ ( dbp , , 617 NULL , me , NULL, DB_QUEUE , DB_RDONLY , 0, PGNO_BASE_MD )) != 0) 618 de ; 619 qp = dbp -> q_ ; 620 i( qp -> ge_ext == 0) 621 de ; 623 i(( t = `__qam_g_fi ( dbp , , & fi )) != 0) 624 de ; 626 i( fi = NULL ) 627 de ; 629 t = 0; 630 = fi ; fp-> mpf ! NULL ; fp++) 631 t ++; 634 n = ( size_t ) t * ((** mip ) + 635 ` ( QUEUE_EXTENT + sn( qp -> d + sn(qp-> me ) + 6); 637 i(( t = `__os_mloc ( dbp -> v , n , mip )) != 0) 638 de ; 639 = * mip ; 640 p = (*)( + t + 1); 641 = fi ; fp-> mpf ! NULL ; fp++) { 642 `QAM_EXNAME ( qp , -> id , buf , (buf)); 643 n = ` ( buf ); 644 * ++ = p ; 645 () `ry ( p , buf ); 646 p + n + 1; 648 * = NULL ; 650 de : 651 i( fi ! NULL ) 652 `__os_ ( dbp -> v , fi ); 653 i(( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 654 t = t_t ; 656 ( t ); 657 } } 674 $__qam_exid ( dbp , fidp , exnum ) 675 DB * dbp ; 676 u_t8_t * fidp ; 677 u_t32_t exnum ; 679 i ; 680 u_t8_t * p ; 683 `memy ( fidp , dbp -> feid , DB_FILE_ID_LEN ); 686 i = ( u_t32_t ); i > 0; --i) 687 * fidp ++ = 0; 690 p = ( u_t8_t *)& exnum , i = ( u_t32_t ); i > 0; --i) 691 * fidp ++ = * p ++; 692 } } 705 $__qam_me ( dbp , txn , wme , ) 706 DB * dbp ; 707 DB_TXN * txn ; 708 cڡ * wme ; 709 qam_me_ ; 711 ENV * v ; 712 QUEUE * qp ; 713 size_t exn , fun , n ; 714 u_t8_t fid [ DB_FILE_ID_LEN ]; 715 u_t32_t exid ; 716 t , i , t , t_t ; 717 buf [ DB_MAXPATHLEN ], nbuf [DB_MAXPATHLEN], pve ; 718 * dme , * dth , * exme , * fume , ** mes ; 719 * nd , * m , * w , * ; 721 v = dbp ->env; 722 qp = ( QUEUE *) dbp -> q_ ; 723 t = t = t_t = 0; 724 m = exme = fume = NULL ; 725 mes = NULL ; 728 i( qp -> ge_ext == 0) 744 `QAM_EXNAME ( qp , 0, buf , (buf)); 745 i(( t = 746 `__db_ame ( v , DB_APP_DATA , buf , 0, NULL , & fume )) != 0) 747 ( t ); 750 i(( dth = `__db_h ( fume )= NULL ) { 751 t = EINVAL ; 752 r ; 754 pve = * dth ; 755 * dth = '\0'; 761 i(( t = `__os_dli ( v , fume , 0, & mes , & t )) != 0) 762 r ; 763 * dth = pve ; 766 i( t == 0) 767 r ; 775 dth ++; 776 dme = `chr ( dth , '.'); 777 i( dme = NULL ) { 778 t = EINVAL ; 779 r ; 781 ++ dme ; 782 * dme = '\0'; 783 n = ` ( dth ); 784 fun = ` ( fume ); 787 exn = fun + 20; 788 i(( t = `__os_mloc ( v , exn , & exme )) != 0) 789 r ; 791 nd = w = NULL ; 792 i( wme ! NULL ) { 793 i(( t = `__os_rdup ( v , wme , & m )) != 0) 794 r ; 795 nd = m ; 796 i(( w = `__db_h ( m )! NULL ) 797 * w ++ = '\0'; 799 w = m ; 800 nd = PATH_DOT ; 803 i = 0; i < t ; i++) { 805 i( `cmp ( mes [ i ], dth , n ) != 0) 808 = & mes [ i ][ n ]; *cp != '\0'; cp++) 809 i(! `isdig (()* )) 811 i(* != '\0') 818 exid = ( u_t32_t ) `oul ( mes [ i ] + n , NULL , 10); 819 `__qam_exid ( dbp , fid , exid ); 821 ) { 822 QAM_NAME_DISCARD : 823 `tf ( exme , exn , 824 "%s%s", fume , mes [ i ] + n ); 825 i(( t_t = `__memp_me ( dbp -> v , 826 fid , NULL , exme , NULL, 827 `F_ISSET ( dbp , DB_AM_INMEM ))!0 && t == 0) 828 t = t_t ; 831 QAM_NAME_RENAME : 832 `tf ( nbuf , buf), QUEUE_EXTENT , 833 nd , PATH_SEPARATOR [0], w , exid ); 834 `QAM_EXNAME ( qp , exid , buf , (buf)); 835 i(( t = `__f_me ( v , 836 txn , buf , nbuf , fid , DB_APP_DATA , 1, 837 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ) ? 838 DB_LOG_NOT_DURABLE : 0)) != 0) 839 r ; 842 QAM_NAME_REMOVE : 843 `QAM_EXNAME ( qp , exid , buf , (buf)); 844 i(( t = `__f_move ( v , txn , fid , buf , 845 DB_APP_DATA , `F_ISSET ( dbp , DB_AM_NOT_DURABLE ) ? 846 DB_LOG_NOT_DURABLE : 0)) != 0) 847 r ; 852 r : i( fume ! NULL ) 853 `__os_ ( v , fume ); 854 i( exme ! NULL ) 855 `__os_ ( v , exme ); 856 i( m ! NULL ) 857 `__os_ ( v , m ); 858 i( mes ! NULL ) 859 `__os_d ( v , mes , t ); 860 ( t ); 861 } } @../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 -> v , 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 -> v , 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 -> v , t -> th ); 98 `__os_ ( dbp -> v , 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 -> v , "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 DB_THREAD_INFO * ; 153 QMETA * ma ; 154 db_pgno_t f , i , ϡ ; 155 emy , t , t_t ; 157 mpf = dbp ->mpf; 158 `ENV_GET_THREAD_INFO ( dbp -> v , ); 161 i = PGNO_BASE_MD ; 162 i(( t = `__memp_fg ( mpf , & i , , NULL , 0, & ma )) != 0) 163 ( t ); 165 f = `QAM_RECNO_PAGE ( dbp , ma -> f_o ); 166 ϡ = `QAM_RECNO_PAGE ( 167 dbp , ma -> cur_o == 1 ? 1 : meta->cur_recno - 1); 169 emy = ma -> cur_o =ma-> f_o ; 170 i( fp ! NULL ) 171 * fp = f ; 172 i( ϡp ! NULL ) 173 * ϡp = ϡ ; 174 i( emyp ! NULL ) 175 * emyp = emy ; 176 #ifde HAVE_STATISTICS 177 i( ge ) 178 t = `__db_ge ( dbp , ( PAGE *) ma , ags ); 180 `COMPQUIET ( ge , 0); 181 `COMPQUIET ( ags , 0); 184 i(( t_t = `__memp_ut ( mpf , 185 , ma , dbp -> iܙy )!0 && t == 0) 186 t = t_t ; 188 ( t ); 189 } } 191 #ifde HAVE_STATISTICS 199 $__db_queue ( dbp , ags ) 200 DB * dbp ; 201 u_t32_t ags ; 203 DBC * dbc ; 204 DB_THREAD_INFO * ; 205 PAGE * h ; 206 db_pgno_t f , i , ϡ , pg_ext , ; 207 emy , t , t_t ; 209 i(( t = `__queue_gefo ( dbp , & f , & ϡ , & emy , 1, ags )) != 0) 210 ( t ); 212 i( emy || t != 0) 213 ( t ); 215 `ENV_GET_THREAD_INFO ( dbp -> v , ); 216 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 217 ( t ); 218 i = f ; 219 i( f > ϡ ) 220 = `QAM_RECNO_PAGE ( dbp , UINT32_MAX ); 222 = ϡ ; 225 pg_ext = (( QUEUE *) dbp -> q_ )-> ge_ext ; 226 beg : 227 ; i < ; ++i) { 228 i(( t = `__qam_fg ( dbc , & i , 0, & h )) != 0) { 229 i( pg_ext == 0) { 230 i( t = DB_PAGE_NOTFOUND && f = ϡ ) 231 t = 0; 232 r ; 234 i( t = ENOENT || = DB_PAGE_NOTFOUND ) { 235 i +( pg_ext - ((i - 1) %g_ext)) - 1; 236 t = 0; 239 r ; 241 () `__db_ge ( dbp , h , ags ); 242 i(( t = `__qam_ut ( dbc , i , h , dbp -> iܙy )) != 0) 243 r ; 246 i( f > ϡ ) { 247 i = 1; 248 = ϡ ; 249 f = ϡ ; 250 beg ; 253 r : 254 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 255 t = t_t ; 256 ( t ); 257 } } 267 $__qam_move ( dbp , txn , me , subdb ) 268 DB * dbp ; 269 DB_TXN * txn ; 270 cڡ * me , * subdb ; 272 ( `__qam_ ( dbp , txn , me , subdb , NULL , QAM_NAME_REMOVE )); 273 } } 283 $__qam_me ( dbp , txn , me , subdb , wme ) 284 DB * dbp ; 285 DB_TXN * txn ; 286 cڡ * me , * subdb , * wme ; 288 ( `__qam_ ( dbp , txn , me , subdb , wme , QAM_NAME_RENAME )); 289 } } 296 $__qam_ ( dbp , txn , me , subdb , wme , ) 297 DB * dbp ; 298 DB_TXN * txn ; 299 cڡ * me , * subdb , * wme ; 300 qam_me_ ; 302 DB * tmpdbp ; 303 DB_THREAD_INFO * ; 304 ENV * v ; 305 QUEUE * qp ; 306 t , t_t ; 308 v = dbp ->env; 309 t = 0; 311 i( subdb ! NULL && me != NULL) { 312 `__db_rx ( v , 314 ( EINVAL ); 316 `ENV_GET_THREAD_INFO ( v , ); 322 i( `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) 323 tmpdbp = dbp ; 325 i(( t = `__db__ (& tmpdbp , v , 0)) != 0) 326 ( t ); 332 tmpdbp -> lock = dbp ->locker; 333 i(( t = `__db_ݒ ( tmpdbp , , txn , 334 me , NULL , DB_QUEUE , DB_RDONLY , 0, PGNO_BASE_MD )) != 0) 335 r ; 338 qp = ( QUEUE *) tmpdbp -> q_ ; 339 i( qp -> ge_ext != 0) 340 t = `__qam_me ( tmpdbp , txn , wme , ); 342 i(! `F_ISSET ( dbp , DB_AM_OPEN_CALLED )) { 343 r : 347 tmpdbp -> lock = NULL ; 350 i( txn ! NULL ) 351 `__txn_mlock ( v , 352 txn , & tmpdbp -> hd_lock , DB_LOCK_INVALIDID ); 354 i( txn = NULL ) { 355 i(( t_t = `__db_o ( tmpdbp , 356 txn , DB_NOSYNC )!0 && t == 0) 357 t = t_t ; 359 i(( t_t = `__txn_oevt ( v , 360 txn , tmpdbp )!0 && t == 0) 361 t = t_t ; 364 ( t ); 365 } } 374 $__qam_m_ags ( dbp , ag , outag ) 375 DB * dbp ; 376 u_t32_t * ag , * outag ; 378 `COMPQUIET ( dbp , NULL ); 380 i( `FLD_ISSET (* ag , DB_INORDER )) { 381 `FLD_SET (* outag , DB_AM_INORDER ); 382 `FLD_CLR (* ag , DB_INORDER ); 384 } } 393 $__qam_t_ags ( dbp , ag ) 394 DB * dbp ; 395 u_t32_t * ag ; 398 `__qam_m_ags ( dbp , ag , &dbp-> ags ); 400 } } @../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_THREAD_INFO * ; 33 DB_TXN * txn ; 34 cڡ * me ; 35 db_pgno_t ba_pgno ; 36 mode ; 37 u_t32_t ags ; 39 DBC * dbc ; 40 DB_LOCK mock ; 41 DB_MPOOLFILE * mpf ; 42 ENV * v ; 43 QMETA * qma ; 44 QUEUE * t ; 45 t , t_t ; 47 v = dbp ->env; 48 mpf = dbp ->mpf; 49 t = dbp -> q_ ; 50 t = 0; 51 qma = NULL ; 53 i( me = NULL && t -> ge_ext != 0) { 54 `__db_rx ( v , 56 ( EINVAL ); 59 i( `MULTIVERSION ( dbp )) { 60 `__db_rx ( v , 62 ( EINVAL ); 66 dbp -> db_am_move = __qam_move ; 67 dbp -> db_am_me = __qam_me ; 75 i(( t = `__db_curs ( dbp , , txn , & dbc , 76 `LF_ISSET ( DB_CREATE && `CDB_LOCKING ( v ) ? 77 DB_WRITECURSOR : 0)) != 0) 78 ( t ); 85 i(( t = 86 `__db_lg ( dbc , 0, ba_pgno , DB_LOCK_READ , 0, & mock )) != 0) 87 r ; 88 i(( t = `__memp_fg ( mpf , & ba_pgno , , txn , 0, & qma )) != 0) 89 r ; 92 i( qma -> dbma . magic ! DB_QAMMAGIC ) { 93 `__db_rx ( v , "%s: uxed fty ofm", me ); 94 t = EINVAL ; 95 r ; 99 t -> ge_ext = qma ->page_ext; 101 i( t -> ge_ext !0 && ( t = `__qam_t_ext_da ( dbp , me )) != 0) 102 r ; 104 i( mode == 0) 105 mode = DB_MODE_660 ; 106 t -> mode = mode; 107 t -> _d = () qma ->re_pad; 108 t -> _n = qma ->re_len; 109 t -> c_ge = qma ->rec_page; 111 t -> q_ma = ba_pgno ; 112 t -> q_ro = ba_pgno + 1; 114 r : i( qma ! NULL && ( t_t = 115 `__memp_ut ( mpf , , qma , dbc -> iܙy )!0 && t == 0) 116 t = t_t ; 119 i(( t_t = `__LPUT ( dbc , mock )!0 && t == 0) 120 t = t_t ; 122 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 123 t = t_t ; 125 ( t ); 126 } } 135 $__qam_t_ext_da ( dbp , me ) 136 DB * dbp ; 137 cڡ * me ; 139 QUEUE * t ; 140 t ; 142 t = dbp -> q_ ; 143 t -> pgfo . db_gesize = dbp -> pgsize ; 144 t -> pgfo . ags = 145 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 146 t -> pgfo . ty = dbp ->type; 147 t -> pgcook . da = &t-> pgfo ; 148 t -> pgcook . size = ( DB_PGINFO ); 150 i(( t = `__os_rdup ( dbp -> v , me , & t -> th )) != 0) 151 ( t ); 152 t -> d =-> th ; 153 i(( t -> me = `__db_h -> th )= NULL ) { 154 t -> me =-> th ; 155 t -> d = PATH_DOT ; 157 * t -> me ++ = '\0'; 160 } } 168 $__qam_machk ( dbp , me , qma ) 169 DB * dbp ; 170 cڡ * me ; 171 QMETA * qma ; 173 ENV * v ; 174 u_t32_t vs ; 175 t ; 177 v = dbp ->env; 178 t = 0; 184 vs = qma -> dbma . vsi ; 185 i( `F_ISSET ( dbp , DB_AM_SWAP )) 186 `M_32_SWAP ( vs ); 187 vs ) { 190 `__db_rx ( v , 192 me , ( u_lg ) vs ); 193 ( DB_OLD_VERSION ); 198 `__db_rx ( v , 199 "%s: unsu܋d qam vsi: %lu", me , ( u_lg ) vs ); 200 ( EINVAL ); 204 i( `F_ISSET ( dbp , DB_AM_SWAP ) && 205 ( t = `__qam_msw ( v , ( PAGE *) qma )) != 0) 206 ( t ); 209 i( dbp -> ty ! DB_QUEUE && dbp->ty ! DB_UNKNOWN ) 210 ( EINVAL ); 211 dbp -> ty = DB_QUEUE ; 212 `DB_ILLEGAL_METHOD ( dbp , DB_OK_QUEUE ); 215 dbp -> pgsize = qma -> dbma . gesize ; 218 `memy ( dbp -> feid , qma -> dbma . uid , DB_FILE_ID_LEN ); 221 dbp -> db_am_me = __qam_me ; 222 dbp -> db_am_move = __qam_move ; 224 ( t ); 225 } } 232 $__qam__ma ( dbp , ma ) 233 DB * dbp ; 234 QMETA * ma ; 236 ENV * v ; 237 QUEUE * t ; 239 v = dbp ->env; 240 t = dbp -> q_ ; 242 `memt ( ma , 0, ( QMETA )); 243 `LSN_NOT_LOGGED ( ma -> dbma . l ); 244 ma -> dbma . pgno = PGNO_BASE_MD ; 245 ma -> dbma . ϡ_pgno = 0; 246 ma -> dbma . magic = DB_QAMMAGIC ; 247 ma -> dbma . vsi = DB_QAMVERSION ; 248 ma -> dbma . gesize = dbp -> pgsize ; 249 i( `F_ISSET ( dbp , DB_AM_CHKSUM )) 250 `FLD_SET ( ma -> dbma . maags , DBMETA_CHKSUM ); 251 i( `F_ISSET ( dbp , DB_AM_ENCRYPT )) { 252 ma -> dbma . y_g = v -> yo_hd -> g ; 253 `DB_ASSERT ( v , ma -> dbma . y_g != 0); 254 ma -> yo_magic = ma-> dbma . magic ; 256 ma -> dbma . ty = P_QAMMETA ; 257 ma -> _d = ( u_t32_t ) t ->re_pad; 258 ma -> _n = t ->re_len; 259 ma -> c_ge = `CALC_QAM_RECNO_PER_PAGE ( dbp ); 260 ma -> cur_o = 1; 261 ma -> f_o = 1; 262 ma -> ge_ext = t ->page_ext; 263 t -> c_ge = ma ->rec_page; 264 `memy ( ma -> dbma . uid , dbp -> feid , DB_FILE_ID_LEN ); 267 i( `QAM_RECNO_PER_PAGE ( dbp ) < 1) { 268 `__db_rx ( v , 270 ( u_lg ) t -> _n , (u_lg) dbp -> pgsize ); 271 ( EINVAL ); 275 } } 285 $__qam_w_fe ( dbp , , txn , fhp , me ) 286 DB * dbp ; 287 DB_THREAD_INFO * ; 288 DB_TXN * txn ; 289 DB_FH * fhp ; 290 cڡ * me ; 292 DBT pdbt ; 293 DB_MPOOLFILE * mpf ; 294 DB_PGINFO pgfo ; 295 ENV * v ; 296 QMETA * ma ; 297 db_pgno_t pgno ; 298 t , t_t ; 311 i( `F_ISSET ( dbp , DB_AM_INMEM )) { 312 mpf = dbp ->mpf; 313 pgno = PGNO_BASE_MD ; 314 i(( t = `__memp_fg ( mpf , & pgno , , txn , 315 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & ma )) != 0) 316 ( t ); 318 i(( t = `__qam__ma ( dbp , ma )) != 0) 319 r1 ; 321 i(( t = `__db_log_ge ( dbp , 322 txn , & ma -> dbma . l , pgno , ( PAGE *)meta)) != 0) 323 r1 ; 324 r1 : i(( t_t = 325 `__memp_ut ( mpf , , ma , dbp -> iܙy )!0 && t == 0) 326 t = t_t ; 328 v = dbp ->env; 329 i(( t = `__os_oc ( v , 1, dbp -> pgsize , & ma )) != 0) 330 ( t ); 332 i(( t = `__qam__ma ( dbp , ma )) != 0) 333 r2 ; 335 pgfo . db_gesize = dbp -> pgsize ; 336 pgfo . ags = 337 `F_ISSET ( dbp , ( DB_AM_CHKSUM | DB_AM_ENCRYPT | DB_AM_SWAP )); 338 pgfo . ty = DB_QUEUE ; 339 `DB_SET_DBT ( pdbt , & pgfo , (pginfo)); 340 i(( t = 341 `__db_pgout ( v -> dbv , PGNO_BASE_MD , ma , & pdbt )) != 0) 342 r2 ; 343 t = `__f_wre ( v , txn , me , 344 DB_APP_DATA , fhp , dbp -> pgsize , 0, 0, ma , dbp->pgsize, 1, 345 `F_ISSET ( dbp , DB_AM_NOT_DURABLE ? DB_LOG_NOT_DURABLE : 0); 347 r2 : `__os_ ( v , ma ); 350 ( t ); 351 } } @../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 ( dbc , pgno , g ) \ 30 i(( t = `__qam_dty (( dbc ), \ 31 pgno , g , ( dbc )-> iܙy )) != 0) { \ 32 t = `__db_pgr (( dbc )-> dbp , ( pgno ),et); \ 33 out ; \ 34 } ) 44 $__qam_cf_cov ( v , db , lp , , fo ) 45 ENV * v ; 46 DBT * db ; 47 DB_LSN * lp ; 48 db_cs ; 49 * fo ; 51 __qam_cf_gs * gp ; 52 DB_THREAD_INFO * ; 53 DB * fe_dbp ; 54 DBC * dbc ; 55 DB_LOCK lock ; 56 DB_LSN unc_l ; 57 DB_MPOOLFILE * mpf ; 58 QMETA * ma ; 59 QUEUE_CURSOR * ; 60 db_pgno_t mg ; 61 u_t32_t c_ext ; 62 exa , t , t_t ; 64 `COMPQUIET ( ma , NULL ); 66 = (( DB_TXNHEAD *) fo )-> thad_fo ; 67 `LOCK_INIT ( lock ); 68 `REC_PRINT ( __qam_cf_t ); 69 `REC_INTRO ( __qam_cf_ad , , 1); 71 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 73 i(( t = `__db_lg ( dbc , 74 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 75 de ; 76 i(( t = `__memp_fg ( mpf , & mg , , NULL , 77 0, & ma )) != 0) { 78 i( `DB_REDO ( )) { 79 i(( t = `__memp_fg ( mpf , & mg , , NULL , 80 DB_MPOOL_CREATE , & ma )) != 0) { 81 () `__LPUT ( dbc , lock ); 82 out ; 84 ma -> dbma . pgno = mg ; 85 ma -> dbma . ty = P_QAMMETA ; 87 * lp = gp -> ev_l ; 88 t = `__LPUT ( dbc , lock ); 89 out ; 98 i( `DB_UNDO ( )) { 99 i( `QAM_BEFORE_FIRST ( ma , gp -> o )) { 100 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 101 ma -> f_o = gp -> o ; 104 unc_l = (( DB_TXNHEAD *) fo )->trunc_lsn; 106 i(! `IS_ZERO_LSN ( unc_l ) && 107 `LOG_COMPARE (& `LSN ( ma ), & unc_l ) > 0) { 108 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 109 `LSN ( ma unc_l ; 112 i( `LOG_COMPARE (& `LSN ( ma ), lp ) < 0) { 113 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 114 `LSN ( ma * lp ; 116 i( ma -> ge_ext == 0) 117 c_ext = 0; 119 c_ext = ma -> ge_ext * ma-> c_ge ; 120 = ( QUEUE_CURSOR *) dbc -> ; 121 i( ma -> f_o = RECNO_OOB ) 122 ma -> f_o ++; 123 ma -> f_o !ma-> cur_o && 124 ! `QAM_BEFORE_FIRST ( ma , gp -> o + 1)) { 125 i(( t = `__qam_posi ( dbc , 126 & ma -> f_o , DB_LOCK_READ , 0, & exa )) != 0) 127 r ; 128 i( -> ge ! NULL && ( t = `__qam_ut ( dbc , 129 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 130 r ; 132 i( exa == 1) 134 i( -> ge ! NULL && 135 c_ext !0 && ma -> f_o %ec_ext == 0) 136 i(( t = 137 `__qam_emove ( fe_dbp , -> pgno )) != 0) 138 r ; 139 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 140 ma -> f_o ++; 141 i( ma -> f_o = RECNO_OOB ) 142 ma -> f_o ++; 146 t = `__memp_ut ( mpf , , ma , dbc -> iܙy ); 147 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 148 t = t_t ; 149 i( t != 0) 150 out ; 152 de : * lp = gp -> ev_l ; 153 t = 0; 156 r : () `__memp_ut ( mpf , , ma , dbc -> iܙy ); 157 () `__LPUT ( dbc , lock ); 160 out : REC_CLOSE ; 161 } } 171 $__qam_mvr_cov ( v , db , lp , , fo ) 172 ENV * v ; 173 DBT * db ; 174 DB_LSN * lp ; 175 db_cs ; 176 * fo ; 178 __qam_mvr_gs * gp ; 179 DB_THREAD_INFO * ; 180 DB * fe_dbp ; 181 DBC * dbc ; 182 DB_LSN unc_l ; 183 DB_LOCK lock ; 184 DB_MPOOLFILE * mpf ; 185 QMETA * ma ; 186 QUEUE_CURSOR * ; 187 db_pgno_t mg ; 188 cmp_n , cmp_p , exa , t ; 190 = (( DB_TXNHEAD *) fo )-> thad_fo ; 191 `REC_PRINT ( __qam_mvr_t ); 192 `REC_INTRO ( __qam_mvr_ad , , 1); 194 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 196 i(( t = `__db_lg ( dbc , 197 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 198 de ; 199 i(( t = `__memp_fg ( mpf , & mg , , NULL , 0, & ma )) != 0) { 200 i( `DB_REDO ( )) { 201 i(( t = `__memp_fg ( mpf , & mg , , NULL , 202 DB_MPOOL_CREATE , & ma )) != 0) { 203 () `__LPUT ( dbc , lock ); 204 out ; 206 ma -> dbma . pgno = mg ; 207 ma -> dbma . ty = P_QAMMETA ; 209 * lp = gp -> ev_l ; 210 t = `__LPUT ( dbc , lock ); 211 out ; 215 cmp_n = `LOG_COMPARE ( lp , & `LSN ( ma )); 216 cmp_p = `LOG_COMPARE (& `LSN ( ma ), & gp -> m ); 228 i( `DB_UNDO ( )) { 229 i(( gp -> code & QAM_TRUNCATE && cmp_n <= 0) { 230 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 231 ma -> f_o = gp -> d_f ; 232 ma -> cur_o = gp -> d_cur ; 233 `LSN ( ma gp -> m ; 236 unc_l = (( DB_TXNHEAD *) fo )->trunc_lsn; 237 i(! `IS_ZERO_LSN ( unc_l ) && 238 `LOG_COMPARE (& unc_l , & `LSN ( ma )) < 0) { 239 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 240 `LSN ( ma gp -> m ; 242 } i( = DB_TXN_APPLY || cmp_p == 0) { 243 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 244 = ( QUEUE_CURSOR *) dbc -> ; 245 i(( gp -> code & QAM_SETFIRST ) && 246 ma -> f_o = gp -> d_f ) { 247 i( gp -> d_f >rgp-> w_f ) 248 ma -> f_o = gp -> w_f ; 250 i(( t = `__qam_posi ( dbc , 251 & ma -> f_o , DB_LOCK_READ , 0, 252 & exa )) != 0) 253 r ; 254 i(! exa ) 255 ma -> f_o = gp -> w_f ; 256 i( -> ge ! NULL && 257 ( t = `__qam_ut ( dbc , 258 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 259 r ; 263 i(( gp -> code & QAM_SETCUR ) && 264 ma -> cur_o = gp -> d_cur ) { 265 i( gp -> d_cur <rgp-> w_cur ) 266 ma -> cur_o = gp -> w_cur ; 268 i(( t = `__qam_posi ( dbc , & ma -> cur_o , 269 DB_LOCK_READ , 0, & exa )) != 0) 270 r ; 271 i(! exa ) 272 ma -> cur_o = gp -> w_cur ; 273 i( -> ge ! NULL && 274 ( t = `__qam_ut ( dbc , 275 -> pgno , cp-> ge , dbc -> iܙy )) != 0) 276 r ; 280 ma -> dbma . l = * lp ; 283 i(( t = `__memp_ut ( mpf , , ma , dbc -> iܙy )) != 0) 284 out ; 286 i(( t = `__LPUT ( dbc , lock )) != 0) 287 out ; 289 de : * lp = gp -> ev_l ; 290 t = 0; 293 r : () `__memp_ut ( mpf , , ma , dbc -> iܙy ); 294 () `__LPUT ( dbc , lock ); 297 out : REC_CLOSE ; 298 } } 309 $__qam_d_cov ( v , db , lp , , fo ) 310 ENV * v ; 311 DBT * db ; 312 DB_LSN * lp ; 313 db_cs ; 314 * fo ; 316 __qam_d_gs * gp ; 317 DB_THREAD_INFO * ; 318 DB * fe_dbp ; 319 DBC * dbc ; 320 DB_LOCK lock ; 321 DB_MPOOLFILE * mpf ; 322 QAMDATA * qp ; 323 QMETA * ma ; 324 QPAGE * g ; 325 db_pgno_t mg ; 326 cmp_n , t , t_t ; 328 `COMPQUIET ( g , NULL ); 330 = (( DB_TXNHEAD *) fo )-> thad_fo ; 331 `REC_PRINT ( __qam_d_t ); 332 `REC_INTRO ( __qam_d_ad , , 1); 334 i(( t = `__qam_fg ( dbc , & gp -> pgno , DB_MPOOL_CREATE , & g )) != 0) 335 out ; 337 i( g -> pgno = PGNO_INVALID ) { 338 `QAM_DIRTY ( dbc , gp -> pgno , & g ); 339 g -> pgno = gp ->pgno; 340 g -> ty = P_QAMDATA ; 343 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 345 i( `DB_UNDO ( )) { 347 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 348 i(( t = `__db_lg ( dbc , 349 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 350 r ; 351 i(( t = `__memp_fg ( mpf , & mg , , NULL , 352 DB_MPOOL_EDIT , & ma )) != 0) { 353 () `__LPUT ( dbc , lock ); 354 r ; 356 i( ma -> f_o = RECNO_OOB || 357 ( `QAM_BEFORE_FIRST ( ma , gp -> o ) && 358 ( ma -> f_o <ma-> cur_o || 359 ma -> f_o - 360 gp -> o <rgp->- ma -> cur_o ))) { 361 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 362 ma -> f_o = gp -> o ; 363 t = `__memp_ut ( mpf , , ma , dbc -> iܙy ); 365 t = `__memp_ut ( mpf , , ma , dbc -> iܙy ); 366 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 367 t = t_t ; 368 i( t != 0) 369 r ; 372 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 373 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 374 `F_SET ( qp , QAM_VALID ); 383 i( cmp_n <0 && = DB_TXN_BACKWARD_ROLL ) 384 `LSN ( g gp -> l ; 385 } i( = DB_TXN_APPLY || ( cmp_n > 0 && `DB_REDO (op))) { 387 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 388 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 389 `F_CLR ( qp , QAM_VALID ); 396 i( = DB_TXN_APPLY ) 397 `LSN ( g * lp ; 399 i(( t = `__qam_ut ( dbc , gp -> pgno , g , dbc-> iܙy )) != 0) 400 out ; 402 de : * lp = gp -> ev_l ; 403 t = 0; 406 r : () `__qam_ut ( dbc , gp -> pgno , g , dbc-> iܙy ); 408 out : REC_CLOSE ; 409 } } 419 $__qam_dext_cov ( v , db , lp , , fo ) 420 ENV * v ; 421 DBT * db ; 422 DB_LSN * lp ; 423 db_cs ; 424 * fo ; 426 __qam_dext_gs * gp ; 427 DB_THREAD_INFO * ; 428 DB * fe_dbp ; 429 DBC * dbc ; 430 DB_LOCK lock ; 431 DB_MPOOLFILE * mpf ; 432 QAMDATA * qp ; 433 QMETA * ma ; 434 QPAGE * g ; 435 db_pgno_t mg ; 436 cmp_n , t , t_t ; 438 `COMPQUIET ( g , NULL ); 440 = (( DB_TXNHEAD *) fo )-> thad_fo ; 441 `REC_PRINT ( __qam_dext_t ); 442 `REC_INTRO ( __qam_dext_ad , , 1); 444 i(( t = `__qam_fg ( dbc , & gp -> pgno , 445 `DB_REDO ( ? 0 : DB_MPOOL_CREATE , & g )) != 0) { 450 i( `DB_REDO ( && ( t = DB_PAGE_NOTFOUND || = ENOENT )) 451 de ; 452 out ; 455 i( g -> pgno = PGNO_INVALID ) { 456 `QAM_DIRTY ( dbc , gp -> pgno , & g ); 457 g -> pgno = gp ->pgno; 458 g -> ty = P_QAMDATA ; 461 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 463 i( `DB_UNDO ( )) { 465 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 466 i(( t = `__db_lg ( dbc , 467 LCK_ROLLBACK , mg , DB_LOCK_WRITE , 0, & lock )) != 0) 468 r ; 469 i(( t = `__memp_fg ( mpf , & mg , , NULL , 470 DB_MPOOL_EDIT , & ma )) != 0) { 471 () `__LPUT ( dbc , lock ); 472 r ; 474 i( ma -> f_o = RECNO_OOB || 475 ( `QAM_BEFORE_FIRST ( ma , gp -> o ) && 476 ( ma -> f_o <ma-> cur_o || 477 ma -> f_o - 478 gp -> o <rgp->- ma -> cur_o ))) { 479 ma -> f_o = gp -> o ; 480 t = `__memp_ut ( mpf , , ma , dbc -> iܙy ); 482 t = `__memp_ut ( mpf , , ma , dbc -> iܙy ); 483 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 484 t = t_t ; 485 i( t != 0) 486 r ; 488 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 489 i(( t = `__qam_pem ( dbc , g , 490 gp -> dx ,rgp-> o , &gp-> da )) != 0) 491 r ; 500 i( cmp_n <0 && = DB_TXN_BACKWARD_ROLL ) 501 `LSN ( g gp -> l ; 502 } i( = DB_TXN_APPLY || ( cmp_n > 0 && `DB_REDO (op))) { 503 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 505 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 506 `F_CLR ( qp , QAM_VALID ); 513 i( = DB_TXN_APPLY ) 514 `LSN ( g * lp ; 516 i(( t = `__qam_ut ( dbc , gp -> pgno , g , dbc-> iܙy )) != 0) 517 out ; 519 de : * lp = gp -> ev_l ; 520 t = 0; 523 r : () `__qam_ut ( dbc , gp -> pgno , g , dbc-> iܙy ); 525 out : REC_CLOSE ; 526 } } 536 $__qam_add_cov ( v , db , lp , , fo ) 537 ENV * v ; 538 DBT * db ; 539 DB_LSN * lp ; 540 db_cs ; 541 * fo ; 543 __qam_add_gs * gp ; 544 DB_THREAD_INFO * ; 545 DB * fe_dbp ; 546 DBC * dbc ; 547 DB_MPOOLFILE * mpf ; 548 QAMDATA * qp ; 549 QMETA * ma ; 550 QPAGE * g ; 551 db_pgno_t mg ; 552 cmp_n , t ; 554 `COMPQUIET ( g , NULL ); 556 = (( DB_TXNHEAD *) fo )-> thad_fo ; 557 `REC_PRINT ( __qam_add_t ); 558 `REC_INTRO ( __qam_add_ad , , 1); 560 i(( t = `__qam_fg ( dbc , & gp -> pgno , 561 `DB_UNDO ( ? 0 : DB_MPOOL_CREATE , & g )) != 0) { 566 i( `DB_UNDO ( && ( t = DB_PAGE_NOTFOUND || = ENOENT )) 567 de ; 568 out ; 571 i( g -> pgno = PGNO_INVALID ) { 572 `QAM_DIRTY ( dbc , gp -> pgno , & g ); 573 g -> pgno = gp ->pgno; 574 g -> ty = P_QAMDATA ; 577 cmp_n = `LOG_COMPARE ( lp , & `LSN ( g )); 579 i( `DB_REDO ( )) { 581 mg = (( QUEUE *) fe_dbp -> q_ )-> q_ma ; 582 i(( t = `__memp_fg ( mpf , & mg , , NULL , 583 0, & ma )) != 0) 584 r ; 585 i( `QAM_BEFORE_FIRST ( ma , gp -> o )) { 586 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 587 ma -> f_o = gp -> o ; 589 i( gp -> o = ma -> cur_o || 590 `QAM_AFTER_CURRENT ( ma , gp -> o )) { 591 `REC_DIRTY ( mpf , , dbc -> iܙy , & ma ); 592 ma -> cur_o = gp -> o + 1; 594 i(( t = `__memp_ut ( mpf , , ma , dbc -> iܙy )) != 0) 595 r ; 598 i( = DB_TXN_APPLY || cmp_n > 0) { 599 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 601 i(( t = `__qam_pem ( dbc , 602 g , gp -> dx ,rgp-> o , &gp-> da )) != 0) 603 r ; 610 i( = DB_TXN_APPLY ) 611 `LSN ( g * lp ; 613 } i( `DB_UNDO ( )) { 619 i( gp -> dda . size != 0) { 620 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 621 i(( t = `__qam_pem ( dbc , g , 622 gp -> dx ,rgp-> o , &gp-> dda )) != 0) 623 r ; 625 i(!( gp -> vag & QAM_VALID )) { 626 qp = `QAM_GET_RECORD ( 627 fe_dbp , g , gp -> dx ); 628 `F_CLR ( qp , QAM_VALID ); 631 `QAM_DIRTY ( dbc , g -> pgno , &pagep); 632 qp = `QAM_GET_RECORD ( fe_dbp , g , gp -> dx ); 633 qp -> ags = 0; 643 i( cmp_n <0 && = DB_TXN_BACKWARD_ROLL ) 644 `LSN ( g gp -> l ; 647 i(( t = `__qam_ut ( dbc , gp -> pgno , g , dbc-> iܙy )) != 0) 648 out ; 650 de : * lp = gp -> ev_l ; 651 t = 0; 654 r : () `__qam_ut ( dbc , gp -> pgno , g , dbc-> iܙy ); 657 out : REC_CLOSE ; 658 } } @../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 -> v , (* ), &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 , 65 dbc -> thad_fo , dbc-> txn , 0, & ma )) != 0) 66 r ; 68 i( ags = DB_FAST_STAT ) { 69 -> qs_nkeys = ma -> dbma . key_cou ; 70 -> qs_nda = ma -> dbma . cd_cou ; 71 ma_ly ; 74 f = `QAM_RECNO_PAGE ( dbp , ma -> f_o ); 75 ϡ = `QAM_RECNO_PAGE ( dbp , ma -> cur_o ); 77 t = `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 78 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 79 t = t_t ; 80 i( t != 0) 81 r ; 83 pgno = f ; 84 i( f > ϡ ) 85 = `QAM_RECNO_PAGE ( dbp , UINT32_MAX ); 87 = ϡ ; 90 pg_ext = (( QUEUE *) dbp -> q_ )-> ge_ext ; 91 beg : 93 ; pgno < ; ++pgno) { 94 i(( t = 95 `__db_lg ( dbc , 0, pgno , DB_LOCK_READ , 0, & lock )) != 0) 96 r ; 97 t = `__qam_fg ( dbc , & pgno , 0, & h ); 98 i( t = ENOENT ) { 99 pgno + pg_ext - 1; 102 i( t = DB_PAGE_NOTFOUND ) { 103 i( pg_ext == 0) { 104 i( pgno ! && f ! ϡ ) 105 r ; 106 t = 0; 109 pgno +( pg_ext - ((pgno - 1) %g_ext)) - 1; 112 i( t != 0) 113 r ; 115 ++ -> qs_ges ; 117 = ( QAMDATA *)(( u_t8_t *) h + dbp -> pgsize - _n ); 118 dx = 0, qp = `QAM_GET_RECORD ( dbp , h , indx); 119 qp < ; 120 ++ dx , qp = `QAM_GET_RECORD ( dbp , h , indx)) { 121 i( `F_ISSET ( qp , QAM_VALID )) 122 -> qs_nda ++; 124 -> qs_pg + _n ; 127 t = `__qam_ut ( dbc , pgno , h , dbc-> iܙy ); 128 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 129 t = t_t ; 130 i( t != 0) 131 r ; 134 i(( t = `__LPUT ( dbc , lock )) != 0) 135 r ; 136 i( f > ϡ ) { 137 pgno = 1; 138 = ϡ ; 139 f = ϡ ; 140 beg ; 144 i(( t = `__db_lg ( dbc , 145 0, t -> q_ma , `F_ISSET ( dbp , DB_AM_RDONLY ) ? 146 DB_LOCK_READ : DB_LOCK_WRITE , 0, & lock )) != 0) 147 r ; 148 i(( t = `__memp_fg ( mpf , & t -> q_ma , dbc -> thad_fo , dbc-> txn , 149 `F_ISSET ( dbp , DB_AM_RDONLY ? 0 : DB_MPOOL_DIRTY , & ma )) != 0) 150 r ; 152 i(! `F_ISSET ( dbp , DB_AM_RDONLY )) 153 ma -> dbma . key_cou = 154 ma -> dbma . cd_cou = -> qs_nda ; 155 -> qs_nkeys = sp-> qs_nda ; 157 ma_ly : 159 -> qs_magic = ma -> dbma . magic ; 160 -> qs_vsi = ma -> dbma . vsi ; 161 -> qs_maags = ma -> dbma . ags ; 162 -> qs_gesize = ma -> dbma . gesize ; 163 -> qs_exsize = ma -> ge_ext ; 164 -> qs__n = ma -> _n ; 165 -> qs__d = ma -> _d ; 166 -> qs_f_o = ma -> f_o ; 167 -> qs_cur_o = ma -> cur_o ; 170 t = `__memp_ut ( mpf , dbc -> thad_fo , ma , dbc-> iܙy ); 171 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 172 t = t_t ; 173 i( t != 0) 174 r ; 176 *( DB_QUEUE_STAT **) p = ; 179 r : i( ! NULL ) 180 `__os_u ( dbp -> v , ); 183 i(( t_t = `__LPUT ( dbc , lock )!0 && t == 0) 184 t = t_t ; 186 ( t ); 187 } } 196 $__qam__t ( dbc , ags ) 197 DBC * dbc ; 198 u_t32_t ags ; 200 DB * dbp ; 201 DB_QUEUE_STAT * ; 202 ENV * v ; 203 t ; 205 dbp = dbc ->dbp; 206 v = dbp ->env; 208 i(( t = `__qam_ ( dbc , & , `LF_ISSET ( DB_FAST_STAT ))) != 0) 209 ( t ); 211 i( `LF_ISSET ( DB_STAT_ALL )) { 212 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 213 `__db_msg ( v , "Default Queue database information:"); 215 `__db_msg ( v , "%lx\tQueumaginumb", ( u_lg ) -> qs_magic ); 216 `__db_msg ( v , "%lu\tQueuvsiڂumb", ( u_lg ) -> qs_vsi ); 217 `__db_dl ( v , "Fixed-ngthecd size", ( u_lg ) -> qs__n ); 218 `__db_msg ( v , "%#x\tFixed-ngthecdad", () -> qs__d ); 219 `__db_dl ( v , 220 "Undlyg dabaagsize", ( u_lg ) -> qs_gesize ); 221 `__db_dl ( v , 222 "Undlyg dabax size", ( u_lg ) -> qs_exsize ); 223 `__db_dl ( v , 224 "Numb ocdhdaba", ( u_lg ) -> qs_nkeys ); 225 `__db_dl ( v , "Numb odabaages", ( u_lg ) -> qs_ges ); 226 `__db_dl_p ( v , 228 ( u_lg ) -> qs_pg , 229 `DB_PCT_PG ( -> qs_pg , sp-> qs_ges , sp-> qs_gesize ), "ff"); 230 `__db_msg ( v , 231 "%lu\tF undedecd", ( u_lg ) -> qs_f_o ); 232 `__db_msg ( v , 233 "%lu\tNexavaab˄ecdumb", ( u_lg ) -> qs_cur_o ); 235 `__os_u ( v , ); 238 } } 243 $__qam_ ( dbc , p , ags ) 244 DBC * dbc ; 245 * p ; 246 u_t32_t ags ; 248 `COMPQUIET ( p , NULL ); 249 `COMPQUIET ( ags , 0); 251 ( `__db__n_but ( dbc -> v )); 252 } } @../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 ( v ) 30 ENV * v ; 32 `__db_rx ( v , 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 -> v )); 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 -> v )); 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 -> v )); 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 -> v )); 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 -> v )); 84 } } 87 $__qamc_ ( dbc ) 88 DBC * dbc ; 90 ( `__db_no_queue_am ( dbc -> v )); 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 ( v , me , mip ) 113 ENV * v ; 114 * me ; 115 *** mip ; 117 `COMPQUIET ( me , NULL ); 118 `COMPQUIET ( mip , NULL ); 119 ( `__db_no_queue_am ( v )); 120 } } 123 $__qam_g_fi ( dbp , , fip ) 124 DB * dbp ; 125 DB_THREAD_INFO * ; 126 QUEUE_FILELIST ** fip ; 128 `COMPQUIET ( , NULL ); 129 `COMPQUIET ( fip , NULL ); 130 ( `__db_no_queue_am ( dbp -> v )); 131 } } 134 $__qam__t ( v , dbp ) 135 ENV * v ; 136 DB_DISTAB * dbp ; 138 `COMPQUIET ( v , NULL ); 139 `COMPQUIET ( dbp , NULL ); 141 } } 144 $__qam__cov ( v , dbp ) 145 ENV * v ; 146 DB_DISTAB * dbp ; 148 `COMPQUIET ( v , NULL ); 149 `COMPQUIET ( dbp , NULL ); 151 } } 154 $__qam_machk ( dbp , me , qma ) 155 DB * dbp ; 156 cڡ * me ; 157 QMETA * qma ; 159 `COMPQUIET ( me , NULL ); 160 `COMPQUIET ( qma , NULL ); 161 ( `__db_no_queue_am ( dbp -> v )); 162 } } 165 $__qam_msw ( v , pg ) 166 ENV * v ; 167 PAGE * pg ; 169 `COMPQUIET ( pg , NULL ); 170 ( `__db_no_queue_am ( v )); 171 } } 174 $__qam_w_fe ( dbp , , txn , fhp , me ) 175 DB * dbp ; 176 DB_THREAD_INFO * ; 177 DB_TXN * txn ; 178 DB_FH * fhp ; 179 cڡ * me ; 181 `COMPQUIET ( , NULL ); 182 `COMPQUIET ( txn , NULL ); 183 `COMPQUIET ( fhp , NULL ); 184 `COMPQUIET ( me , NULL ); 185 ( `__db_no_queue_am ( dbp -> v )); 186 } } 189 $__qam_ݒ ( dbp , , txn , me , ba_pgno , mode , ags ) 190 DB * dbp ; 191 DB_THREAD_INFO * ; 192 DB_TXN * txn ; 193 cڡ * me ; 194 db_pgno_t ba_pgno ; 195 mode ; 196 u_t32_t ags ; 198 `COMPQUIET ( , NULL ); 199 `COMPQUIET ( txn , NULL ); 200 `COMPQUIET ( me , NULL ); 201 `COMPQUIET ( ba_pgno , 0); 202 `COMPQUIET ( mode , 0); 203 `COMPQUIET ( ags , 0); 204 ( `__db_no_queue_am ( dbp -> v )); 205 } } 208 $__qam_pg_out ( v , pg , , cook ) 209 ENV * v ; 210 db_pgno_t pg ; 211 * ; 212 DBT * cook ; 214 `COMPQUIET ( pg , 0); 215 `COMPQUIET ( , NULL ); 216 `COMPQUIET ( cook , NULL ); 217 ( `__db_no_queue_am ( v )); 218 } } 221 $__qam_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 222 DB * dbp ; 223 VRFY_DBINFO * vdp ; 224 db_pgno_t pgno ; 225 PAGE * h ; 226 * hd ; 227 (* back `__P ((*, const *)); 228 u_t32_t ags ; 230 `COMPQUIET ( vdp , NULL ); 231 `COMPQUIET ( pgno , 0); 232 `COMPQUIET ( h , NULL ); 233 `COMPQUIET ( hd , NULL ); 234 `COMPQUIET ( back , NULL ); 235 `COMPQUIET ( ags , 0); 236 ( `__db_no_queue_am ( dbp -> v )); 237 } } 240 $__qam_t_ext_da ( dbp , me ) 241 DB * dbp ; 242 cڡ * me ; 244 `COMPQUIET ( me , NULL ); 245 ( `__db_no_queue_am ( dbp -> v )); 246 } } 249 $__qam_ ( dbc , p , ags ) 250 DBC * dbc ; 251 * p ; 252 u_t32_t ags ; 254 `COMPQUIET ( p , NULL ); 255 `COMPQUIET ( ags , 0); 256 ( `__db_no_queue_am ( dbc -> v )); 257 } } 260 $__qam__t ( dbc , ags ) 261 DBC * dbc ; 262 u_t32_t ags ; 264 `COMPQUIET ( ags , 0); 265 ( `__db_no_queue_am ( dbc -> v )); 266 } } 269 $__qam_sync ( dbp ) 270 DB * dbp ; 272 ( `__db_no_queue_am ( dbp -> v )); 273 } } 276 $__qam_un ( dbc , coup ) 277 DBC * dbc ; 278 u_t32_t * coup ; 280 `COMPQUIET ( dbc , NULL ); 281 `COMPQUIET ( coup , NULL ); 282 ( `__db_no_queue_am ( dbc -> v )); 283 } } 286 $__qam_vrfy_da ( dbp , vdp , h , pgno , ags ) 287 DB * dbp ; 288 VRFY_DBINFO * vdp ; 289 QPAGE * h ; 290 db_pgno_t pgno ; 291 u_t32_t ags ; 293 `COMPQUIET ( vdp , NULL ); 294 `COMPQUIET ( h , NULL ); 295 `COMPQUIET ( pgno , 0); 296 `COMPQUIET ( ags , 0); 297 ( `__db_no_queue_am ( dbp -> v )); 298 } } 301 $__qam_vrfy_ma ( dbp , vdp , ma , pgno , ags ) 302 DB * dbp ; 303 VRFY_DBINFO * vdp ; 304 QMETA * ma ; 305 db_pgno_t pgno ; 306 u_t32_t ags ; 308 `COMPQUIET ( vdp , NULL ); 309 `COMPQUIET ( ma , NULL ); 310 `COMPQUIET ( pgno , 0); 311 `COMPQUIET ( ags , 0); 312 ( `__db_no_queue_am ( dbp -> v )); 313 } } 316 $__qam_vrfy_ruu ( dbp , vdp , ags ) 317 DB * dbp ; 318 VRFY_DBINFO * vdp ; 319 u_t32_t ags ; 321 `COMPQUIET ( vdp , NULL ); 322 `COMPQUIET ( ags , 0); 323 ( `__db_no_queue_am ( dbp -> v )); 324 } } 327 $__qam_vrfy_wkqueue ( dbp , vdp , hd , back , ags ) 328 DB * dbp ; 329 VRFY_DBINFO * vdp ; 330 * hd ; 331 (* back `__P ((*, const *)); 332 u_t32_t ags ; 334 `COMPQUIET ( vdp , NULL ); 335 `COMPQUIET ( hd , NULL ); 336 `COMPQUIET ( back , NULL ); 337 `COMPQUIET ( ags , 0); 338 ( `__db_no_queue_am ( dbp -> v )); 339 } } @../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 QMETA30 * dma ; 29 QMETA31 * wma ; 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 QMETA31 * dma ; 73 QMETA32 * wma ; 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 ENV * v ; 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 v = dbp ->env; 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 (( v , "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 (( v , 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 (( v , 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 ( v , 131 DB_APP_DATA , qp -> d , 0, NULL , & buf )) != 0) 132 r ; 133 i(( t = `__os_dli ( v , buf , 0, & mes , & cou )) != 0) 134 r ; 135 `__os_ ( v , buf ); 136 buf = NULL ; 138 n = ` ( QUEUE_EXTENT_HEAD + sn( qp -> me ) + 1; 139 i(( t = `__os_mloc ( v , 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 v , ( size_t )( cou - i * ( extid ), 153 & exs )) != 0) 154 r ; 155 exs [ xs ] = extid ; 156 xs ++; 159 i( xs > 0) 160 `__db_rx ( v , 161 "Wng: %dxex fefound", xs ); 162 vdp -> xs =extents; 163 vdp -> exs =xtents; 165 r : i(( t_t = `__db_vrfy_puagefo ( v , vdp , p )!0 && t == 0) 166 t = t_t ; 167 i( mes ! NULL ) 168 `__os_d ( v , mes , cou ); 169 i( buf ! NULL ) 170 `__os_ ( v , buf ); 171 i( t !0 && exs ! NULL ) 172 `__os_ ( v , 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 -> v , 215 ( u_lg ) pgno , (u_lg) i )); 216 ( DB_VERIFY_BAD ); 219 i( qp -> ags & ~( QAM_VALID | QAM_SET )) { 220 `EPRINT (( dbp -> v , 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 -> v , 254 ( u_lg ) PGNO_BASE_MD )); 255 isbad = 1; 256 r ; 259 i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , vdp-> thad_fo , 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 -> v , 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 -> v , 274 ( u_lg ) i , (u_lg) p -> ty )); 275 isbad = 1; 276 r ; 277 } i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , 278 vdp -> thad_fo , i )) != 0) 279 r ; 282 r : i(( t = `__db_vrfy_puagefo ( dbp -> v , vdp , p )) != 0) 283 ( t ); 284 ( isbad =1 ? DB_VERIFY_BAD : 0); 285 } } 296 $__qam_vrfy_wkqueue ( dbp , vdp , hd , back , ags ) 297 DB * dbp ; 298 VRFY_DBINFO * vdp ; 299 * hd ; 300 (* back `__P ((*, const *)); 301 u_t32_t ags ; 303 DBC * dbc ; 304 ENV * v ; 305 PAGE * h ; 306 QUEUE * qp ; 307 VRFY_PAGEINFO * p ; 308 db_pgno_t f , i , ϡ , pg_ext , ; 309 isbad , xs , t , t_t ; 311 `COMPQUIET ( h , NULL ); 313 v = dbp ->env; 314 qp = dbp -> q_ ; 315 p = NULL ; 316 pg_ext = qp -> ge_ext ; 317 isbad = t = t_t = 0; 318 h = NULL ; 321 i( pg_ext == 0) 324 f = `QAM_RECNO_PAGE ( dbp , vdp -> f_o ); 325 ϡ = `QAM_RECNO_PAGE ( dbp , vdp -> ϡ_o ); 327 i = f ; 328 i( f > ϡ ) 329 = `QAM_RECNO_PAGE ( dbp , UINT32_MAX ); 331 = ϡ ; 332 xs = vdp ->nextents; 335 i(( t = `__db_curs ( dbp , vdp -> thad_fo , NULL , & dbc , 0)) != 0) 336 ( t ); 337 beg : ; i < ; i++) { 342 i( `LF_ISSET ( DB_SALVAGE && ( `__db_lvage_isde ( vdp , i ) != 0)) 344 i(( t_t = `__qam_fg ( dbc , & i , 0, & h )) != 0) { 345 i( t_t = ENOENT ||_= DB_PAGE_NOTFOUND ) { 346 i +( pg_ext - ((i - 1) %g_ext)) - 1; 354 i( `LF_ISSET ( DB_SALVAGE )) { 355 i( t == 0) 356 t = t_t ; 359 h = NULL ; 360 t = t_t ; 361 r ; 364 i( `LF_ISSET ( DB_SALVAGE )) { 370 i(( t_t = `__db_lvage ( dbp , 371 vdp , i , h , hd , back , ags )) != 0) { 372 i( t == 0) 373 t = t_t ; 374 isbad = 1; 385 i(( t = `__db_vrfy_comm ( dbp , 386 vdp , h , i , ags )= DB_VERIFY_BAD ) 387 isbad = 1; 388 i( t != 0) 389 r ; 391 `__db_vrfy_ru_edback ( dbp , vdp ); 393 i(( t = `__db_vrfy_ggefo ( vdp , i , & p )) != 0) 394 r ; 395 i( `F_ISSET ( p , VRFY_IS_ALLZEROES )) 396 put ; 397 i( p -> ty ! P_QAMDATA ) { 398 `EPRINT (( v , 400 ( u_lg ) i , (u_lg) p -> ty )); 401 isbad = 1; 402 r ; 404 i(( t = `__db_vrfy_pgt_c ( vdp -> pgt , 405 vdp -> thad_fo , i )) != 0) 406 r ; 407 i(( t = `__qam_vrfy_da ( dbp , vdp , 408 ( QPAGE *) h , i , ags )= DB_VERIFY_BAD ) 409 isbad = 1; 410 i( t != 0) 411 r ; 413 put : i(( t = `__db_vrfy_puagefo ( v , vdp , p )) != 0) 414 r1 ; 415 p = NULL ; 419 i(( t_t = `__qam_ut ( dbc , i , h , dbp -> iܙy )) != 0) { 420 i( `LF_ISSET ( DB_SALVAGE )) { 421 i( t == 0) 422 t = t_t ; 425 t = t_t ; 426 r1 ; 430 i( f > ϡ ) { 431 i = 1; 432 = ϡ ; 433 f = ϡ ; 434 beg ; 441 i( `LF_ISSET ( DB_SALVAGE && xs != 0) { 442 xs --; 443 i = 1 + 444 vdp -> exs [ xs ] * vdp-> ge_ext ; 445 = i + vdp -> ge_ext ; 446 beg ; 450 r : i( h ! NULL && 451 ( t_t = `__qam_ut ( dbc , i , h , dbp -> iܙy )) != 0 452 && t == 0) 453 t = t_t ; 454 i( p ! NULL && 455 ( t_t = `__db_vrfy_puagefo ( v , vdp , p )) != 0 456 && t == 0) 457 t = t_t ; 459 r1 : i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 460 t = t_t ; 461 (( isbad =1 && t =0? DB_VERIFY_BAD :et); 462 } } 472 $__qam_lvage ( dbp , vdp , pgno , h , hd , back , ags ) 473 DB * dbp ; 474 VRFY_DBINFO * vdp ; 475 db_pgno_t pgno ; 476 PAGE * h ; 477 * hd ; 478 (* back `__P ((*, const *)); 479 u_t32_t ags ; 481 DBT dbt , key ; 482 QAMDATA * qp , * q ; 483 db_o_t o ; 484 t , r_t , t_t ; 485 u_t32_t gesize , qn ; 486 u_t32_t i ; 488 `memt (& dbt , 0, ( DBT )); 489 `memt (& key , 0, ( DBT )); 491 r_t = t = 0; 493 gesize = ( u_t32_t ) dbp -> mpf -> m -> . _gesize ; 494 qn = (( QUEUE *) dbp -> q_ )-> _n ; 495 dbt . size = qn ; 496 key . da = & o ; 497 key . size = ( o ); 498 o = ( pgno - 1* `QAM_RECNO_PER_PAGE ( dbp ) + 1; 499 i = 0; 500 q = ( QAMDATA *)(( u_t8_t *) h + gesize - qn ); 501 qp = `QAM_GET_RECORD ( dbp , h , i ); q< q ; 502 o ++, i ++, qp = `QAM_GET_RECORD ( dbp , h , i)) { 503 i( `F_ISSET ( qp , ~( QAM_VALID | QAM_SET ))) 505 i(! `F_ISSET ( qp , QAM_SET )) 508 i(! `LF_ISSET ( DB_AGGRESSIVE && ! `F_ISSET ( qp , QAM_VALID )) 511 dbt . da = qp ->data; 512 i(( t = `__db_vrfy_dbt (& key , 513 0, " ", hd , back , 1, vdp )) != 0) 514 r_t = t ; 516 i(( t = `__db_vrfy_dbt (& dbt , 517 0, " ", hd , back , 0, vdp )) != 0) 518 r_t = t ; 521 i(( t_t = `__db_lvage_mkde ( vdp , pgno )) != 0) 522 ( t_t ); 523 (( t =0 && r_t != 0) ?rr_ret :et); 524 } } @../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_bulk_msh ( v , gp , bp , max , ) 18 ENV * v ; 19 __p_bulk_gs * gp ; 20 u_t8_t * bp ; 21 size_t * , max ; 23 u_t8_t * t ; 25 i( max < __REP_BULK_SIZE 26 + ( size_t ) gp -> bulkda . size ) 27 ( ENOMEM ); 28 t = bp ; 30 `DB_HTONL_COPYOUT ( v , bp , gp -> n ); 31 `DB_HTONL_COPYOUT ( v , bp , gp -> l . fe ); 32 `DB_HTONL_COPYOUT ( v , bp , gp -> l . offt ); 33 `DB_HTONL_COPYOUT ( v , bp , gp -> bulkda . size ); 34 i( gp -> bulkda . size > 0) { 35 `memy ( bp , gp -> bulkda . da ,rgp->bulkda. size ); 36 bp + gp -> bulkda . size ; 39 * = ( size_t )( bp - t ); 41 } } 48 $__p_bulk_unmsh ( v , gp , bp , max , x ) 49 ENV * v ; 50 __p_bulk_gs * gp ; 51 u_t8_t * bp ; 52 size_t max ; 53 u_t8_t ** x ; 55 size_t eded ; 57 eded = __REP_BULK_SIZE ; 58 i( max < eded ) 59 too_w ; 60 `DB_NTOHL_COPYIN ( v , gp -> n , bp ); 61 `DB_NTOHL_COPYIN ( v , gp -> l . fe , bp ); 62 `DB_NTOHL_COPYIN ( v , gp -> l . offt , bp ); 63 `DB_NTOHL_COPYIN ( v , gp -> bulkda . size , bp ); 64 gp -> bulkda . da = bp ; 65 eded +( size_t ) gp -> bulkda . size ; 66 i( max < eded ) 67 too_w ; 68 bp + gp -> bulkda . size ; 70 i( x ! NULL ) 71 * x = bp ; 74 too_w : 75 `__db_rx ( v , 77 ( EINVAL ); 78 } } 85 $__p_cڌ_msh ( v , gp , bp , max , ) 86 ENV * v ; 87 __p_cڌ_gs * gp ; 88 u_t8_t * bp ; 89 size_t * , max ; 91 u_t8_t * t ; 93 i( max < __REP_CONTROL_SIZE ) 94 ( ENOMEM ); 95 t = bp ; 97 `DB_HTONL_COPYOUT ( v , bp , gp -> p_vsi ); 98 `DB_HTONL_COPYOUT ( v , bp , gp -> log_vsi ); 99 `DB_HTONL_COPYOUT ( v , bp , gp -> l . fe ); 100 `DB_HTONL_COPYOUT ( v , bp , gp -> l . offt ); 101 `DB_HTONL_COPYOUT ( v , bp , gp -> y ); 102 `DB_HTONL_COPYOUT ( v , bp , gp -> g ); 103 `DB_HTONL_COPYOUT ( v , bp , gp -> msg_c ); 104 `DB_HTONL_COPYOUT ( v , bp , gp -> msg_nc ); 105 `DB_HTONL_COPYOUT ( v , bp , gp -> ags ); 107 * = ( size_t )( bp - t ); 109 } } 116 $__p_cڌ_unmsh ( v , gp , bp , max , x ) 117 ENV * v ; 118 __p_cڌ_gs * gp ; 119 u_t8_t * bp ; 120 size_t max ; 121 u_t8_t ** x ; 123 i( max < __REP_CONTROL_SIZE ) 124 too_w ; 125 `DB_NTOHL_COPYIN ( v , gp -> p_vsi , bp ); 126 `DB_NTOHL_COPYIN ( v , gp -> log_vsi , bp ); 127 `DB_NTOHL_COPYIN ( v , gp -> l . fe , bp ); 128 `DB_NTOHL_COPYIN ( v , gp -> l . offt , bp ); 129 `DB_NTOHL_COPYIN ( v , gp -> y , bp ); 130 `DB_NTOHL_COPYIN ( v , gp -> g , bp ); 131 `DB_NTOHL_COPYIN ( v , gp -> msg_c , bp ); 132 `DB_NTOHL_COPYIN ( v , gp -> msg_nc , bp ); 133 `DB_NTOHL_COPYIN ( v , gp -> ags , bp ); 135 i( x ! NULL ) 136 * x = bp ; 139 too_w : 140 `__db_rx ( v , 142 ( EINVAL ); 143 } } 150 $__p_eg_msh ( v , gp , bp , max , ) 151 ENV * v ; 152 __p_eg_gs * gp ; 153 u_t8_t * bp ; 154 size_t * , max ; 156 u_t8_t * t ; 158 i( max < __REP_EGEN_SIZE ) 159 ( ENOMEM ); 160 t = bp ; 162 `DB_HTONL_COPYOUT ( v , bp , gp -> eg ); 164 * = ( size_t )( bp - t ); 166 } } 173 $__p_eg_unmsh ( v , gp , bp , max , x ) 174 ENV * v ; 175 __p_eg_gs * gp ; 176 u_t8_t * bp ; 177 size_t max ; 178 u_t8_t ** x ; 180 i( max < __REP_EGEN_SIZE ) 181 too_w ; 182 `DB_NTOHL_COPYIN ( v , gp -> eg , bp ); 184 i( x ! NULL ) 185 * x = bp ; 188 too_w : 189 `__db_rx ( v , 191 ( EINVAL ); 192 } } 199 $__p_fefo_msh ( v , vsi , gp , bp , max , ) 200 ENV * v ; 201 u_t32_t vsi ; 202 __p_fefo_gs * gp ; 203 u_t8_t * bp ; 204 size_t * , max ; 206 cy_ly ; 207 u_t8_t * t ; 209 i( max < __REP_FILEINFO_SIZE 210 + ( size_t ) gp -> uid . size 211 + ( size_t ) gp -> fo . size ) 212 ( ENOMEM ); 213 t = bp ; 215 cy_ly = 0; 216 i( vsi < DB_REPVERSION_47 ) 217 cy_ly = 1; 218 i( cy_ly ) { 219 `memy ( bp , & gp -> pgsize , ( u_t32_t )); 220 bp +( u_t32_t ); 222 `DB_HTONL_COPYOUT ( v , bp , gp -> pgsize ); 223 i( cy_ly ) { 224 `memy ( bp , & gp -> pgno , ( u_t32_t )); 225 bp +( u_t32_t ); 227 `DB_HTONL_COPYOUT ( v , bp , gp -> pgno ); 228 i( cy_ly ) { 229 `memy ( bp , & gp -> max_pgno , ( u_t32_t )); 230 bp +( u_t32_t ); 232 `DB_HTONL_COPYOUT ( v , bp , gp -> max_pgno ); 233 i( cy_ly ) { 234 `memy ( bp , & gp -> fum , ( u_t32_t )); 235 bp +( u_t32_t ); 237 `DB_HTONL_COPYOUT ( v , bp , gp -> fum ); 238 i( cy_ly ) { 239 `memy ( bp , & gp -> ffo_ags , ( u_t32_t )); 240 bp +( u_t32_t ); 242 `DB_HTONL_COPYOUT ( v , bp , gp -> ffo_ags ); 243 i( cy_ly ) { 244 `memy ( bp , & gp -> ty , ( u_t32_t )); 245 bp +( u_t32_t ); 247 `DB_HTONL_COPYOUT ( v , bp , gp -> ty ); 248 i( cy_ly ) { 249 `memy ( bp , & gp -> db_ags , ( u_t32_t )); 250 bp +( u_t32_t ); 252 `DB_HTONL_COPYOUT ( v , bp , gp -> db_ags ); 253 i( cy_ly ) { 254 `memy ( bp , & gp -> uid . size , ( u_t32_t )); 255 bp +( u_t32_t ); 257 `DB_HTONL_COPYOUT ( v , bp , gp -> uid . size ); 258 i( gp -> uid . size > 0) { 259 `memy ( bp , gp -> uid . da ,rgp->uid. size ); 260 bp + gp -> uid . size ; 262 i( cy_ly ) { 263 `memy ( bp , & gp -> fo . size , ( u_t32_t )); 264 bp +( u_t32_t ); 266 `DB_HTONL_COPYOUT ( v , bp , gp -> fo . size ); 267 i( gp -> fo . size > 0) { 268 `memy ( bp , gp -> fo . da ,rgp->fo. size ); 269 bp + gp -> fo . size ; 272 * = ( size_t )( bp - t ); 274 } } 281 $__p_fefo_unmsh ( v , vsi , g , bp , max , x ) 282 ENV * v ; 283 u_t32_t vsi ; 284 __p_fefo_gs ** g ; 285 u_t8_t * bp ; 286 size_t max ; 287 u_t8_t ** x ; 289 size_t eded ; 290 __p_fefo_gs * gp ; 291 t ; 292 cy_ly ; 294 eded = __REP_FILEINFO_SIZE ; 295 i( max < eded ) 296 too_w ; 297 i(( t = `__os_mloc ( v , (* gp ), &argp)) != 0) 298 ( t ); 300 cy_ly = 0; 301 i( vsi < DB_REPVERSION_47 ) 302 cy_ly = 1; 303 i( cy_ly ) { 304 `memy (& gp -> pgsize , bp , ( u_t32_t )); 305 bp +( u_t32_t ); 307 `DB_NTOHL_COPYIN ( v , gp -> pgsize , bp ); 308 i( cy_ly ) { 309 `memy (& gp -> pgno , bp , ( u_t32_t )); 310 bp +( u_t32_t ); 312 `DB_NTOHL_COPYIN ( v , gp -> pgno , bp ); 313 i( cy_ly ) { 314 `memy (& gp -> max_pgno , bp , ( u_t32_t )); 315 bp +( u_t32_t ); 317 `DB_NTOHL_COPYIN ( v , gp -> max_pgno , bp ); 318 i( cy_ly ) { 319 `memy (& gp -> fum , bp , ( u_t32_t )); 320 bp +( u_t32_t ); 322 `DB_NTOHL_COPYIN ( v , gp -> fum , bp ); 323 i( cy_ly ) { 324 `memy (& gp -> ffo_ags , bp , ( u_t32_t )); 325 bp +( u_t32_t ); 327 `DB_NTOHL_COPYIN ( v , gp -> ffo_ags , bp ); 328 i( cy_ly ) { 329 `memy (& gp -> ty , bp , ( u_t32_t )); 330 bp +( u_t32_t ); 332 `DB_NTOHL_COPYIN ( v , gp -> ty , bp ); 333 i( cy_ly ) { 334 `memy (& gp -> db_ags , bp , ( u_t32_t )); 335 bp +( u_t32_t ); 337 `DB_NTOHL_COPYIN ( v , gp -> db_ags , bp ); 338 i( cy_ly ) { 339 `memy (& gp -> uid . size , bp , ( u_t32_t )); 340 bp +( u_t32_t ); 342 `DB_NTOHL_COPYIN ( v , gp -> uid . size , bp ); 343 gp -> uid . da = bp ; 344 eded +( size_t ) gp -> uid . size ; 345 i( max < eded ) 346 too_w ; 347 bp + gp -> uid . size ; 348 i( cy_ly ) { 349 `memy (& gp -> fo . size , bp , ( u_t32_t )); 350 bp +( u_t32_t ); 352 `DB_NTOHL_COPYIN ( v , gp -> fo . size , bp ); 353 gp -> fo . da = bp ; 354 eded +( size_t ) gp -> fo . size ; 355 i( max < eded ) 356 too_w ; 357 bp + gp -> fo . size ; 359 i( x ! NULL ) 360 * x = bp ; 361 * g = gp ; 364 too_w : 365 `__db_rx ( v , 367 ( EINVAL ); 368 } } 375 $__p_g_fo_msh ( v , gp , bp , max , ) 376 ENV * v ; 377 __p_g_fo_gs * gp ; 378 u_t8_t * bp ; 379 size_t * , max ; 381 u_t8_t * t ; 383 i( max < __REP_GRANT_INFO_SIZE ) 384 ( ENOMEM ); 385 t = bp ; 387 `DB_HTONL_COPYOUT ( v , bp , gp -> msg_c ); 388 `DB_HTONL_COPYOUT ( v , bp , gp -> msg_nc ); 390 * = ( size_t )( bp - t ); 392 } } 399 $__p_g_fo_unmsh ( v , gp , bp , max , x ) 400 ENV * v ; 401 __p_g_fo_gs * gp ; 402 u_t8_t * bp ; 403 size_t max ; 404 u_t8_t ** x ; 406 i( max < __REP_GRANT_INFO_SIZE ) 407 too_w ; 408 `DB_NTOHL_COPYIN ( v , gp -> msg_c , bp ); 409 `DB_NTOHL_COPYIN ( v , gp -> msg_nc , bp ); 411 i( x ! NULL ) 412 * x = bp ; 415 too_w : 416 `__db_rx ( v , 418 ( EINVAL ); 419 } } 426 $__p_logq_msh ( v , gp , bp , max , ) 427 ENV * v ; 428 __p_logq_gs * gp ; 429 u_t8_t * bp ; 430 size_t * , max ; 432 u_t8_t * t ; 434 i( max < __REP_LOGREQ_SIZE ) 435 ( ENOMEM ); 436 t = bp ; 438 `DB_HTONL_COPYOUT ( v , bp , gp -> dl . fe ); 439 `DB_HTONL_COPYOUT ( v , bp , gp -> dl . offt ); 441 * = ( size_t )( bp - t ); 443 } } 450 $__p_logq_unmsh ( v , gp , bp , max , x ) 451 ENV * v ; 452 __p_logq_gs * gp ; 453 u_t8_t * bp ; 454 size_t max ; 455 u_t8_t ** x ; 457 i( max < __REP_LOGREQ_SIZE ) 458 too_w ; 459 `DB_NTOHL_COPYIN ( v , gp -> dl . fe , bp ); 460 `DB_NTOHL_COPYIN ( v , gp -> dl . offt , bp ); 462 i( x ! NULL ) 463 * x = bp ; 466 too_w : 467 `__db_rx ( v , 469 ( EINVAL ); 470 } } 477 $__p_wfe_msh ( v , gp , bp , max , ) 478 ENV * v ; 479 __p_wfe_gs * gp ; 480 u_t8_t * bp ; 481 size_t * , max ; 483 u_t8_t * t ; 485 i( max < __REP_NEWFILE_SIZE ) 486 ( ENOMEM ); 487 t = bp ; 489 `DB_HTONL_COPYOUT ( v , bp , gp -> vsi ); 491 * = ( size_t )( bp - t ); 493 } } 500 $__p_wfe_unmsh ( v , gp , bp , max , x ) 501 ENV * v ; 502 __p_wfe_gs * gp ; 503 u_t8_t * bp ; 504 size_t max ; 505 u_t8_t ** x ; 507 i( max < __REP_NEWFILE_SIZE ) 508 too_w ; 509 `DB_NTOHL_COPYIN ( v , gp -> vsi , bp ); 511 i( x ! NULL ) 512 * x = bp ; 515 too_w : 516 `__db_rx ( v , 518 ( EINVAL ); 519 } } 526 $__p_upde_msh ( v , vsi , gp , bp , max , ) 527 ENV * v ; 528 u_t32_t vsi ; 529 __p_upde_gs * gp ; 530 u_t8_t * bp ; 531 size_t * , max ; 533 cy_ly ; 534 u_t8_t * t ; 536 i( max < __REP_UPDATE_SIZE ) 537 ( ENOMEM ); 538 t = bp ; 540 cy_ly = 0; 541 i( vsi < DB_REPVERSION_47 ) 542 cy_ly = 1; 543 i( cy_ly ) { 544 `memy ( bp , & gp -> f_l . fe , ( u_t32_t )); 545 bp +( u_t32_t ); 546 `memy ( bp , & gp -> f_l . offt , ( u_t32_t )); 547 bp +( u_t32_t ); 549 `DB_HTONL_COPYOUT ( v , bp , gp -> f_l . fe ); 550 `DB_HTONL_COPYOUT ( v , bp , gp -> f_l . offt ); 552 i( cy_ly ) { 553 `memy ( bp , & gp -> f_vs , ( u_t32_t )); 554 bp +( u_t32_t ); 556 `DB_HTONL_COPYOUT ( v , bp , gp -> f_vs ); 557 i( cy_ly ) { 558 `memy ( bp , & gp -> num_fes , ( u_t32_t )); 559 bp +( u_t32_t ); 561 `DB_HTONL_COPYOUT ( v , bp , gp -> num_fes ); 563 * = ( size_t )( bp - t ); 565 } } 572 $__p_upde_unmsh ( v , vsi , g , bp , max , x ) 573 ENV * v ; 574 u_t32_t vsi ; 575 __p_upde_gs ** g ; 576 u_t8_t * bp ; 577 size_t max ; 578 u_t8_t ** x ; 580 __p_upde_gs * gp ; 581 t ; 582 cy_ly ; 584 i( max < __REP_UPDATE_SIZE ) 585 too_w ; 586 i(( t = `__os_mloc ( v , (* gp ), &argp)) != 0) 587 ( t ); 589 cy_ly = 0; 590 i( vsi < DB_REPVERSION_47 ) 591 cy_ly = 1; 592 i( cy_ly ) { 593 `memy (& gp -> f_l . fe , bp , ( u_t32_t )); 594 bp +( u_t32_t ); 595 `memy (& gp -> f_l . offt , bp , ( u_t32_t )); 596 bp +( u_t32_t ); 598 `DB_NTOHL_COPYIN ( v , gp -> f_l . fe , bp ); 599 `DB_NTOHL_COPYIN ( v , gp -> f_l . offt , bp ); 601 i( cy_ly ) { 602 `memy (& gp -> f_vs , bp , ( u_t32_t )); 603 bp +( u_t32_t ); 605 `DB_NTOHL_COPYIN ( v , gp -> f_vs , bp ); 606 i( cy_ly ) { 607 `memy (& gp -> num_fes , bp , ( u_t32_t )); 608 bp +( u_t32_t ); 610 `DB_NTOHL_COPYIN ( v , gp -> num_fes , bp ); 612 i( x ! NULL ) 613 * x = bp ; 614 * g = gp ; 617 too_w : 618 `__db_rx ( v , 620 ( EINVAL ); 621 } } 628 $__p_ve_fo_msh ( v , gp , bp , max , ) 629 ENV * v ; 630 __p_ve_fo_gs * gp ; 631 u_t8_t * bp ; 632 size_t * , max ; 634 u_t8_t * t ; 636 i( max < __REP_VOTE_INFO_SIZE ) 637 ( ENOMEM ); 638 t = bp ; 640 `DB_HTONL_COPYOUT ( v , bp , gp -> eg ); 641 `DB_HTONL_COPYOUT ( v , bp , gp -> nses ); 642 `DB_HTONL_COPYOUT ( v , bp , gp -> nves ); 643 `DB_HTONL_COPYOUT ( v , bp , gp -> iܙy ); 644 `DB_HTONL_COPYOUT ( v , bp , gp -> tbak ); 646 * = ( size_t )( bp - t ); 648 } } 655 $__p_ve_fo_unmsh ( v , gp , bp , max , x ) 656 ENV * v ; 657 __p_ve_fo_gs * gp ; 658 u_t8_t * bp ; 659 size_t max ; 660 u_t8_t ** x ; 662 i( max < __REP_VOTE_INFO_SIZE ) 663 too_w ; 664 `DB_NTOHL_COPYIN ( v , gp -> eg , bp ); 665 `DB_NTOHL_COPYIN ( v , gp -> nses , bp ); 666 `DB_NTOHL_COPYIN ( v , gp -> nves , bp ); 667 `DB_NTOHL_COPYIN ( v , gp -> iܙy , bp ); 668 `DB_NTOHL_COPYIN ( v , gp -> tbak , bp ); 670 i( x ! NULL ) 671 * x = bp ; 674 too_w : 675 `__db_rx ( v , 677 ( EINVAL ); 678 } } @../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 (( ENV *, u_t8_t *, u_t8_*, u_t32_t , 22 u_t8_t *)); 23 __p_fede __P (( ENV *, DB_THREAD_INFO * , , 24 REP *, __p_fefo_gs *, u_t32_t )); 25 __p_fd_dbs __P (( ENV *, u_t32_t , u_t8_t **, size_t *, 26 size_t *, u_t32_t *)); 27 __p_g_fefo __P (( ENV *, const *, 28 cڡ *, __p_fefo_gs *, u_t8_t *, u_t32_t *)); 29 __p_g_fe_li __P (( ENV *, 30 DB_FH *, u_t32_t , u_t32_*, DBT *)); 31 __p_log_tup __P (( ENV *, 32 REP *, u_t32_t , u_t32_t, DB_LSN *)); 33 __p_mpf_ݒ __P (( ENV *, DB_MPOOLFILE **, 34 __p_fefo_gs *, u_t32_t )); 35 __p_xtfe __P (( ENV *, , REP *)); 36 __p_ge_g __P (( ENV *, 37 REP *, __p_fefo_gs *, u_t32_t )); 38 __p_ge_ndges __P (( ENV *, DB_THREAD_INFO *, , 39 __p_cڌ_gs *, __p_fefo_gs *, DB_MPOOLFILE *, DB *)); 40 __p_queue_fede __P (( ENV *, 41 DB_THREAD_INFO *, REP *, __p_fefo_gs *)); 42 __p_move_l __P (( ENV *, u_t32_t , DBT *)); 43 __p_move_fe __P (( ENV *, u_t8_t *, const *, 44 u_t32_t , u_int32_t)); 45 __p_move_logs __P (( ENV *)); 46 __p_move_by_li __P (( ENV *, u_t32_t , 47 u_t8_t *, u_t32_t , u_int32_t)); 48 __p_move_by_efix __P (( ENV *, const *, const *, 49 size_t , APPNAME )); 50 __p_wk_d __P (( ENV *, cڡ *, u_t32_t , u_t8_t **, 51 u_t8_t *, size_t *, size_*, u_t32_t *)); 52 __p_wre_ge __P (( ENV *, 53 DB_THREAD_INFO *, REP *, __p_fefo_gs *)); 62 $__p_upde_q ( v , , eid ) 63 ENV * v ; 64 __p_cڌ_gs * ; 65 eid ; 67 DBT updbt , vdbt ; 68 DB_LOG * db ; 69 DB_LOGC * logc ; 70 DB_LSN l ; 71 __p_upde_gs u_gs ; 72 size_t f , fesz , updn ; 73 u_t32_t fet , ag , vsi ; 74 u_t8_t * buf , * ; 75 t , t_t ; 89 db = v -> lg_hd ; 90 logc = NULL ; 91 fet = 0; 92 f = 0; 93 updn = 0; 94 fesz = MEGABYTE ; 95 i(( t = `__os_oc ( v , 1, fesz , & buf )) != 0) 96 ( t ); 102 = buf + __REP_UPDATE_SIZE ; 103 i(( t = `__p_fd_dbs ( v , -> p_vsi , 104 & , & fesz , & f , & fet )) != 0) 105 r ; 111 ag = DB_SET ; 112 i(( t = `__log_g_ab_l ( v , & l )) != 0) { 113 i( t ! DB_NOTFOUND ) 114 r ; 119 t = 0; 120 ag = DB_FIRST ; 126 i(( t = `__log_curs ( v , & logc )) != 0) 127 r ; 129 `memt (& vdbt , 0, (vdbt)); 134 i(( t = `__logc_g ( logc , & l , & vdbt , ag )) != 0) { 140 i( t ! DB_NOTFOUND ) 141 r ; 142 `INIT_LSN ( l ); 143 vsi = DB_LOGVERSION ; 145 i(( t = `__logc_vsi ( logc , & vsi )) != 0) 146 r ; 151 u_gs . f_l = l ; 152 u_gs . f_vs = vsi ; 153 u_gs . num_fes = fet ; 154 i(( t = `__p_upde_msh ( v , -> p_vsi , 155 & u_gs , buf , fesz , & updn )) != 0) 156 r ; 160 `DB_INIT_DBT ( updbt , buf , f + updn ); 162 `LOG_SYSTEM_LOCK ( v ); 163 l = (( LOG *) db -> gfo . imy )->lsn; 164 `LOG_SYSTEM_UNLOCK ( v ); 165 () `__p_nd_mesge ( 166 v , eid , REP_UPDATE , & l , & updbt , 0, 0); 168 r : `__os_ ( v , buf ); 169 i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 170 t = t_t ; 171 ( t ); 172 } } 188 $__p_fd_dbs ( v , vsi , , feszp , fp , fe ) 189 ENV * v ; 190 u_t32_t vsi ; 191 u_t8_t ** ; 192 size_t * feszp , * fp ; 193 u_t32_t * fe ; 195 DB_ENV * dbv ; 196 t ; 197 ** dd , * _d ; 198 u_t8_t * ig ; 200 dbv = v ->dbenv; 201 t = 0; 202 _d = NULL ; 204 i( dbv -> db_da_d = NULL ) { 209 t = `__p_wk_d ( v ,nv-> db_home , vsi , , NULL , 210 feszp , fp , fe ); 212 ig = * ; 213 dd = dbv -> db_da_d ; *dd ! NULL ; ++ddir) { 214 i(( t = `__db_ame ( v , DB_APP_NONE , 215 * dd , 0, NULL , & _d )) != 0) 217 i(( t = `__p_wk_d ( v , _d , vsi , , 218 ig , feszp , fp , fe )) != 0) 220 `__os_ ( v , _d ); 221 _d = NULL ; 226 i( t == 0) 227 t = `__p_wk_d ( v , NULL , vsi , 228 , NULL , feszp , fp , fe ); 230 i( _d ! NULL ) 231 `__os_ ( v , _d ); 232 ( t ); 233 } } 244 $__p_wk_d ( v , d , vsi , , ig , feszp , fp , fe ) 245 ENV * v ; 246 cڡ * d ; 247 u_t32_t vsi ; 248 u_t8_t ** , * ig ; 249 size_t * feszp , * fp ; 250 u_t32_t * fe ; 252 __p_fefo_gs tmp ; 253 size_t n , offt ; 254 t , f_fe , i , t ; 255 u_t8_t * r , uid [ DB_FILE_ID_LEN ]; 256 * fe , ** mes , * subdb ; 258 i( d = NULL ) { 259 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 261 i(( t = `__memp_memli ( v , & mes , & t )) != 0) 262 ( t ); 264 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 265 "Wk_d: Gtg inff d: %s", d )); 266 i(( t = `__os_dli ( v , d , 0, & mes , & t )) != 0) 267 ( t ); 269 r = NULL ; 270 i( ! NULL ) 271 r = * ; 272 `RPRINT ( v , DB_VERB_REP_SYNC , (env, "Walk_dir: Dir %s has %d files", 273 ( d = NULL ? "INMEM" : d, t )); 274 f_fe = 1; 275 i = 0; i < t ; i++) { 276 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 277 "Wk_d: F%dame: %s", i , mes [i])); 281 i( `cmp ( mes [ i ], 282 DB_REGION_PREFIX , (DB_REGION_PREFIX) - 1) == 0) 284 i( `cmp ( mes [ i ], "DB_CONFIG", 9) == 0) 286 i( `cmp ( mes [ i ], "log.", 4) == 0) 292 i( d = NULL ) { 293 fe = NULL ; 294 subdb = mes [ i ]; 296 fe = mes [ i ]; 297 subdb = NULL ; 299 i(( t = `__p_g_fefo ( v , 300 fe , subdb , & tmp , uid , fe )) != 0) { 304 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 306 i , mes [i], `db_ ( t ))); 307 t = 0; 310 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 312 tmp . fum , * fe , mes [ i ], `P_TO_ULONG ( r ), 313 ( u_lg ) tmp . pgsize , (u_lgmp. max_pgno )); 320 i( f_fe && ig ! NULL ) { 324 i( r ! ig && 325 ( t = `__p_check_uid ( v , ig , 326 ig + * fp , vsi , uid )) != 0) { 331 i( t = DB_KEYEXIST ) { 332 t = 0; 333 (* fe )--; 335 r ; 337 f_fe = 0; 340 `DB_SET_DBT ( tmp . fo , mes [ i ], ` (names[i]) + 1); 341 `DB_SET_DBT ( tmp . uid , uid, DB_FILE_ID_LEN ); 342 y : t = `__p_fefo_msh ( v , vsi , 343 & tmp , r , * feszp , & n ); 344 i( t = ENOMEM ) { 345 offt = ( size_t )( r - * ); 346 * feszp *= 2; 351 * - __REP_UPDATE_SIZE ; 352 i(( t = `__os_loc ( v , * feszp , * )) != 0) 354 * + __REP_UPDATE_SIZE ; 355 r = * + offt ; 360 y ; 362 r + n ; 363 * = r ; 364 * fp + n ; 366 r : 367 `__os_d ( v , mes , t ); 368 ( t ); 369 } } 379 $__p_check_uid ( v , ig , d , vsi , uid ) 380 ENV * v ; 381 u_t32_t vsi ; 382 u_t8_t * ig , * d , * uid ; 384 __p_fefo_gs * r ; 385 size_t fesz ; 386 u_t8_t * , * fuid , * w_ ; 387 t ; 389 t = 0; 390 = ig ; 391 r = NULL ; 396 fesz = ( u_t ) d - (u_t) ig ; 397 < d ) { 398 i(( t = `__p_fefo_unmsh ( v , vsi , 399 & r , , fesz , & w_ )) != 0) { 400 `__db_rx ( v , "rep_check_uid: Couldot malloc"); 401 r ; 403 fesz -( u_t32_t )( w_ - ); 404 = w_ ; 405 fuid = ( u_t8_t *) r -> uid . da ; 406 i( `memcmp ( fuid , uid , DB_FILE_ID_LEN ) == 0) { 407 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 409 t = DB_KEYEXIST ; 410 r ; 412 `__os_ ( v , r ); 413 r = NULL ; 415 r : 416 i( r ! NULL ) 417 `__os_ ( v , r ); 418 ( t ); 420 } } 423 $__p_g_fefo ( v , fe , subdb , r , uid , fe ) 424 ENV * v ; 425 cڡ * fe , * subdb ; 426 __p_fefo_gs * r ; 427 u_t8_t * uid ; 428 u_t32_t * fe ; 430 DB * dbp ; 431 DBC * dbc ; 432 DBMETA * dbma ; 433 DB_LOCK lk ; 434 DB_MPOOLFILE * mpf ; 435 DB_THREAD_INFO * ; 436 PAGE * g ; 437 ld , t , t_t ; 439 dbp = NULL ; 440 dbc = NULL ; 441 g = NULL ; 442 mpf = NULL ; 443 `LOCK_INIT ( lk ); 445 `ENV_GET_THREAD_INFO ( v , ); 447 i(( t = `__db__ (& dbp , v , 0)) != 0) 448 r ; 449 i(( t = `__db_ݒ ( dbp , , NULL , fe , subdb , DB_UNKNOWN , 450 DB_RDONLY | ( `F_ISSET ( v , ENV_THREAD ? DB_THREAD : 0), 451 0, PGNO_BASE_MD )) != 0) 452 r ; 454 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 455 r ; 456 i(( t = `__db_lg ( 457 dbc , 0, dbp -> ma_pgno , DB_LOCK_READ , 0, & lk )) != 0) 458 r ; 459 i(( t = `__memp_fg ( dbp -> mpf , &dbp-> ma_pgno , , dbc -> txn , 460 0, & g )) != 0) 461 r ; 465 dbma = ( DBMETA *) g ; 466 r -> pgno = 0; 471 i( dbp -> ty = DB_QUEUE ) 472 r -> max_pgno = 0; 474 r -> max_pgno = dbma -> ϡ_pgno ; 475 r -> pgsize = dbp ->pgsize; 476 `memy ( uid , dbp -> feid , DB_FILE_ID_LEN ); 477 r -> fum = (* fe )++; 478 r -> ty = ( u_t32_t ) dbp ->type; 479 r -> db_ags = dbp -> ags ; 480 r -> ffo_ags = 0; 484 () `__db_g_ld ( dbp , & ld ); 485 i( ld == 1234) 486 `FLD_SET ( r -> ffo_ags , REPINFO_DB_LITTLEENDIAN ); 488 `FLD_CLR ( r -> ffo_ags , REPINFO_DB_LITTLEENDIAN ); 490 t = `__memp_ut ( dbp -> mpf , , g , dbc -> iܙy ); 491 g = NULL ; 492 i(( t_t = `__LPUT ( dbc , lk )!0 && t == 0) 493 t = t_t ; 494 i( t != 0) 495 r ; 496 r : 497 i(( t_t = `__LPUT ( dbc , lk )!0 && t == 0) 498 t = t_t ; 499 i( g ! NULL && ( t_t = 500 `__memp_ut ( mpf , , g , dbc -> iܙy )!0 && t == 0) 501 t = t_t ; 502 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 503 t = t_t ; 504 i( dbp ! NULL && ( t_t = `__db_o (dbp, NULL, 0)!0 && t == 0) 505 t = t_t ; 506 ( t ); 507 } } 517 $__p_ge_q ( v , , eid , , c ) 518 ENV * v ; 519 DB_THREAD_INFO * ; 520 eid ; 521 __p_cڌ_gs * ; 522 DBT * c ; 524 __p_fefo_gs * msg ; 525 DB_MPOOLFILE * mpf ; 526 DB_REP * db_p ; 527 REP * p ; 528 t , t_t ; 529 u_t8_t * xt ; 531 db_p = v -> p_hd ; 532 p = db_p -> gi ; 534 i(( t = `__p_fefo_unmsh ( v , -> p_vsi , 535 & msg , c -> da ,ec-> size , & xt )) != 0) 536 ( t ); 538 `RPRINT ( v , DB_VERB_REP_SYNC , 539 ( v , "page_req: file %dage %luo %lu", 540 msg -> fum , ( u_lg )msg-> pgno , (u_lg)msg-> max_pgno )); 546 `RPRINT ( v , DB_VERB_REP_SYNC , 547 ( v , "ge_q: O%d v mpf_ݒ", msg -> fum )); 548 i(( t = `__p_mpf_ݒ ( v , & mpf , msg , 0)) != 0) { 549 `RPRINT ( v , DB_VERB_REP_SYNC , 550 ( v , "ge_q: O%d faed", msg -> fum )); 551 i( `F_ISSET ( p , REP_F_MASTER )) 552 () `__p_nd_mesge ( v , eid , REP_FILE_FAIL , 553 NULL , c , 0, 0); 555 t = DB_NOTFOUND ; 556 r ; 559 t = `__p_ge_ndges ( v , , eid , , msg , mpf , NULL ); 560 t_t = `__memp_fo ( mpf , 0); 561 i( t =0 && t_t != 0) 562 t = t_t ; 563 r : 564 `__os_ ( v , msg ); 565 ( t ); 566 } } 569 $__p_ge_ndges ( v , , eid , , msg , mpf , dbp ) 570 ENV * v ; 571 DB_THREAD_INFO * ; 572 eid ; 573 __p_cڌ_gs * ; 574 __p_fefo_gs * msg ; 575 DB_MPOOLFILE * mpf ; 576 DB * dbp ; 578 DB * qdbp ; 579 DBC * qdbc ; 580 DBT lockdbt , msgdbt ; 581 DB_LOCK lock ; 582 DB_LOCKER * lock ; 583 DB_LOCK_ILOCK lock_obj ; 584 DB_LOG * db ; 585 DB_LSN l ; 586 DB_REP * db_p ; 587 PAGE * g ; 588 REP * p ; 589 REP_BULK bulk ; 590 REP_THROTTLE h ; 591 db_pgno_t p ; 592 u_t bulkoff ; 593 size_t n , msgsz ; 594 u_t32_t bulkags , u_bulk ; 595 ݒed , t , t_t ; 596 u_t8_t * buf ; 598 db_p = v -> p_hd ; 599 p = db_p -> gi ; 600 lock = NULL ; 601 ݒed = 0; 602 t_t = 0; 603 qdbp = NULL ; 604 qdbc = NULL ; 605 buf = NULL ; 606 bulk . addr = NULL ; 607 u_bulk = `FLD_ISSET ( p -> cfig , REP_C_BULK ); 608 i( msg -> ty =( u_t32_t ) DB_QUEUE ) { 609 i( dbp = NULL ) { 610 i(( t = `__db__ (& qdbp , v , 0)) != 0) 611 r ; 617 i(( t = `__db_ݒ ( qdbp , , NULL , 618 `FLD_ISSET ( msg -> db_ags , DB_AM_INMEM ) ? 619 NULL : msg -> fo . da , 620 `FLD_ISSET ( msg -> db_ags , DB_AM_INMEM ) ? 621 msg -> fo . da : NULL , 622 DB_UNKNOWN , 623 DB_RDONLY | ( `F_ISSET ( v , ENV_THREAD ? DB_THREAD : 0), 624 0, PGNO_BASE_MD )) != 0) 625 r ; 626 ݒed = 1; 628 qdbp = dbp ; 629 i(( t = `__db_curs ( qdbp , , NULL , & qdbc , 0)) != 0) 630 r ; 632 msgsz = __REP_FILEINFO_SIZE + DB_FILE_ID_LEN + msg -> pgsize ; 633 i(( t = `__os_oc ( v , 1, msgsz , & buf )) != 0) 634 r ; 635 `memt (& msgdbt , 0, (msgdbt)); 636 `RPRINT ( v , DB_VERB_REP_SYNC , 637 ( v , "sendpages: file %dage %luo %lu", 638 msg -> fum , ( u_lg )msg-> pgno , (u_lg)msg-> max_pgno )); 639 `memt (& h , 0, (repth)); 649 i( u_bulk && ( t = `__p_bulk_loc ( v , & bulk , eid , 650 & bulkoff , & bulkags , REP_BULK_PAGE )) != 0) 651 r ; 652 `REP_SYSTEM_LOCK ( v ); 653 h . gbys = p ->gbytes; 654 h . bys = p ->bytes; 655 h . ty = REP_PAGE ; 656 h . da_dbt = & msgdbt ; 657 `REP_SYSTEM_UNLOCK ( v ); 662 `LOCK_INIT ( lock ); 663 `memt (& lock_obj , 0, (lock_obj)); 664 i(( t = `__lock_id ( v , NULL , & lock )) != 0) 665 r ; 666 `memy ( lock_obj . feid , mpf ->feid, DB_FILE_ID_LEN ); 667 lock_obj . ty = DB_PAGE_LOCK ; 669 `memt (& lockdbt , 0, (lockdbt)); 670 lockdbt . da = & lock_obj ; 671 lockdbt . size = ( lock_obj ); 673 p = msg -> pgno ; <msg-> max_pgno ;++) { 679 lock_obj . pgno = p ; 680 i(( t = `__lock_g ( v , lock , DB_LOCK_NOWAIT , & lockdbt , 681 DB_LOCK_READ , & lock )) != 0) { 685 i( t = DB_LOCK_NOTGRANTED ) { 686 t = 0; 692 r ; 694 i( msg -> ty =( u_t32_t ) DB_QUEUE && p != 0) 695 #ifde HAVE_QUEUE 696 t = `__qam_fg ( qdbc , & p , DB_MPOOL_CREATE , & g ); 698 t = DB_PAGE_NOTFOUND ; 701 t = `__memp_fg ( mpf , & p , , NULL , 702 DB_MPOOL_CREATE , & g ); 703 msg -> pgno = p ; 704 i( t = DB_PAGE_NOTFOUND ) { 705 `ZERO_LSN ( l ); 706 i( `F_ISSET ( p , REP_F_MASTER )) { 707 t = 0; 708 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 710 ( u_lg ) p )); 711 () `__p_nd_mesge ( v , eid , 712 REP_PAGE_FAIL , & l , & msgdbt , 0, 0); 714 t = DB_NOTFOUND ; 715 lockr ; 716 } i( t != 0) 717 lockr ; 719 `DB_SET_DBT ( msg -> fo , g , msg-> pgsize ); 720 n = 0; 731 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) 732 `FLD_SET ( msg -> ffo_ags , REPINFO_PG_LITTLEENDIAN ); 734 `FLD_CLR ( msg -> ffo_ags , REPINFO_PG_LITTLEENDIAN ); 735 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 736 "ndges: %lu,agl [%lu][%lu]", ( u_lg ) p , 737 ( u_lg ) g -> l . fe , (u_lgag->l. offt )); 738 t = `__p_fefo_msh ( v , -> p_vsi , 739 msg , buf , msgsz , & n ); 740 i( msg -> ty !( u_t32_t ) DB_QUEUE || p == 0) 741 t_t = `__memp_ut ( mpf , 742 , g , DB_PRIORITY_UNCHANGED ); 743 #ifde HAVE_QUEUE 750 t_t = `__qam_ut ( qdbc , p , g , qdbp -> iܙy ); 752 i( t_t !0 && t == 0) 753 t = t_t ; 754 i(( t_t = `__ENV_LPUT ( v , lock )!0 && t == 0) 755 t = t_t ; 756 i( t != 0) 757 r ; 759 `DB_ASSERT ( v , n < msgsz ); 760 `DB_SET_DBT ( msgdbt , buf , n ); 762 db = v -> lg_hd ; 763 `LOG_SYSTEM_LOCK ( v ); 764 h . l = (( LOG *) db -> gfo . imy )->lsn; 765 `LOG_SYSTEM_UNLOCK ( v ); 771 i( u_bulk ) 772 t = `__p_bulk_mesge ( v , & bulk , & h , 773 & h . l , & msgdbt , 0); 774 i(! u_bulk || t = DB_REP_BULKOVF ) 775 t = `__p_nd_thrَe ( v , eid , & h , 0, 0); 776 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 777 "ndges: %lu, [%lu][%lu]", ( u_lg ) p , 778 ( u_lg ) h . l . fe , (u_lgth.l. offt )); 783 i( h . ty = REP_PAGE_MORE || t != 0) { 785 i( t = DB_REP_UNAVAIL ) 786 t = 0; 792 lockr : i(( t_t = `__ENV_LPUT ( v , lock )!0 && t == 0) 793 t = t_t ; 795 r : 800 i( u_bulk && bulk . addr ! NULL && 801 ( t_t = `__p_bulk_ ( v , & bulk , 0)!0 && t == 0) 802 t = t_t ; 803 i( qdbc ! NULL && ( t_t = `__dbc_o (qdbc)!0 && t == 0) 804 t = t_t ; 805 i( ݒed && ( t_t = `__db_o ( qdbp , NULL , DB_NOSYNC )) != 0 && 806 t == 0) 807 t = t_t ; 808 i( buf ! NULL ) 809 `__os_ ( v , buf ); 810 i( lock ! NULL && ( t_t = `__lock_id_ ( v , 811 lock )!0 && t == 0) 812 t = t_t ; 813 ( t ); 814 } } 824 $__p_upde_tup ( v , eid , , c ) 825 ENV * v ; 826 eid ; 827 __p_cڌ_gs * ; 828 DBT * c ; 830 DB_LOG * db ; 831 DB_REP * db_p ; 832 DB_THREAD_INFO * ; 833 LOG * ; 834 REGENV * nv ; 835 REGINFO * f ; 836 REP * p ; 837 __p_upde_gs * rup ; 838 t ; 839 u_t32_t cou ; 840 u_t8_t * xt ; 842 db_p = v -> p_hd ; 843 p = db_p -> gi ; 844 db = v -> lg_hd ; 845 = db -> gfo . imy ; 846 t = 0; 848 `REP_SYSTEM_LOCK ( v ); 849 i(! `F_ISSET ( p , REP_F_RECOVER_UPDATE || `IN_ELECTION (rep)) { 850 `REP_SYSTEM_UNLOCK ( v ); 853 `F_CLR ( p , REP_F_RECOVER_UPDATE ); 858 `F_SET ( p , REP_F_RECOVER_PAGE ); 862 `DB_ASSERT ( v , 863 ! `IS_USING_LEASES ( v || `__p_i_ged (env) == 0); 872 i(( t = `__p_lockout_i ( v , p )) != 0) 873 r ; 878 f = v -> gfo ; 879 nv = f -> imy ; 880 () `time (& nv -> p_timeamp ); 882 `REP_SYSTEM_UNLOCK ( v ); 883 `MUTEX_LOCK ( v , p -> mtx_db ); 884 `__os_gtime ( v , & -> rcvd_ts , 1); 885 -> wa_ts = p -> que_g ; 886 `ZERO_LSN ( -> ady_l ); 887 `ZERO_LSN ( -> vify_l ); 888 `ZERO_LSN ( -> wag_l ); 889 `ZERO_LSN ( -> max_wa_l ); 890 `ZERO_LSN ( -> max_rm_l ); 891 i( db_p -> p_db = NULL ) 892 t = `__p__db ( v , 0, REP_DB ); 893 `MUTEX_UNLOCK ( v , p -> mtx_db ); 894 i( t != 0) 895 r_nock ; 896 i(( t = `__p_upde_unmsh ( v , -> p_vsi , 897 & rup , c -> da ,ec-> size , & xt )) != 0) 898 r_nock ; 904 `ENV_GET_THREAD_INFO ( v , ); 905 i(( t = `__db_un ( db_p -> p_db , , NULL , & cou )) != 0) 906 r_nock ; 912 `REP_SYSTEM_LOCK ( v ); 913 p -> f_l = rup ->first_lsn; 914 p -> f_vs = rup ->first_vers; 915 p -> ϡ_l = -> l ; 916 p -> nfes = rup -> num_fes ; 918 `__os_ ( v , rup ); 920 `RPRINT ( v , DB_VERB_REP_SYNC , 921 ( v , "Updtuf %d fes.", p -> nfes )); 922 `RPRINT ( v , DB_VERB_REP_SYNC , 923 ( v , "Update setup: First LSN [%lu][%lu].", 924 ( u_lg ) p -> f_l . fe , (u_lg->f_l. offt )); 925 `RPRINT ( v , DB_VERB_REP_SYNC , 926 ( v , "Update setup: Last LSN [%lu][%lu]", 927 ( u_lg ) p -> ϡ_l . fe , (u_lg->ϡ_l. offt )); 929 i( p -> nfes > 0) { 930 p -> fovsi = -> p_vsi ; 931 p -> igfޒ =-> fޒ = 932 c -> size - __REP_UPDATE_SIZE ; 933 i(( t = `__os_oc ( v , 1, p -> fޒ , 934 & p -> igfo )) != 0) 935 r ; 936 `memy ( p -> igfo , xt ,-> fޒ ); 937 p -> xtfo =-> igfo ; 944 i(( t = `__p_move_l ( v , -> p_vsi , c )) != 0) 945 r ; 947 p -> curfe = 0; 948 i(( t = `__p_xtfe ( v , eid , p )) != 0) 949 r ; 952 r_nock : `REP_SYSTEM_LOCK ( v ); 955 r : 960 i( t != 0) { 961 i( p -> igfo ! NULL ) { 962 `__os_ ( v , p -> igfo ); 963 p -> igfo = NULL ; 965 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 967 `db_ ( t ))); 968 `F_CLR ( p , REP_F_RECOVER_PAGE | REP_F_READY_API | 969 REP_F_READY_OP ); 970 `F_SET ( p , REP_F_RECOVER_UPDATE ); 972 `REP_SYSTEM_UNLOCK ( v ); 973 ( t ); 974 } } 990 $__p_move_l ( v , msg_vsi , c ) 991 ENV * v ; 992 u_t32_t msg_vsi ; 993 DBT * c ; 995 __p_fefo_gs * ffo ; 996 __p_upde_gs u_gs ; 997 DB_FH * fhp ; 998 size_t t , f , fesz , updn ; 999 u_t32_t bufsz , fet , fvs , mvs , zo ; 1000 u_t8_t * buf , * , * w_ , * ig ; 1001 t , t_t ; 1002 * ame ; 1004 ffo = NULL ; 1005 ame = NULL ; 1006 fhp = NULL ; 1012 f = 0; 1013 fet = 0; 1014 fesz = MEGABYTE ; 1015 i(( t = `__os_oc ( v , 1, fesz , & buf )) != 0) 1016 ( t ); 1017 ig = = buf + __REP_UPDATE_SIZE ; 1018 fesz - __REP_UPDATE_SIZE ; 1019 i(( t = `__p_fd_dbs ( v , DB_REPVERSION , 1020 & , & fesz , & f , & fet )) != 0) 1021 out ; 1022 `ZERO_LSN ( u_gs . f_l ); 1023 u_gs . f_vs = 0; 1024 u_gs . num_fes = fet ; 1025 i(( t = `__p_upde_msh ( v , DB_REPVERSION , 1026 & u_gs , buf , fesz , & updn )) != 0) 1027 out ; 1050 i(( t = `__db_ame ( 1051 v , DB_APP_NONE , REP_INITNAME , 0, NULL , & ame )) != 0) 1052 out ; 1054 `DB_ASSERT ( v , updn + f =( u_t32_t )(updlen + filelen)); 1055 bufsz = ( u_t32_t )( updn + f ); 1062 zo = 0; 1063 fvs = REP_INITVERSION ; 1064 mvs = DB_REPVERSION ; 1065 i(( t = `__os_ݒ ( v , ame , 0, 1066 DB_OSO_CREATE | DB_OSO_TRUNC , DB_MODE_600 , & fhp )) != 0 || 1067 ( t = `__os_wre ( v , fhp , & zo , (zo), & t )) != 0 || 1068 ( t = `__os_wre ( v , fhp , & fvs , (fvs), & t )) != 0 || 1069 ( t = `__os_wre ( v , fhp , & mvs , (mvs), & t )) != 0 || 1070 ( t = `__os_wre ( v , fhp , & bufsz , (bufsz), & t )) != 0 || 1071 ( t = `__os_wre ( v , fhp , buf , bufsz , & t )) != 0 || 1072 ( t = `__os_fsync ( v , fhp )) != 0) { 1073 `__db_r ( v , t , "%s", ame ); 1074 out ; 1081 i(( t = `__p_move_logs ( v )) != 0) 1082 out ; 1083 i(( t = `__p_ofes ( v , 0)) != 0) 1084 out ; 1085 = ig ; 1086 fet -- > 0) { 1087 i(( t = `__p_fefo_unmsh ( v , DB_REPVERSION , 1088 & ffo , , fesz , & w_ )) != 0) 1089 out ; 1090 i(( t = `__p_move_fe ( v , ffo -> uid . da , 1091 ffo -> fo . da , ffo-> ty , ffo-> db_ags )) != 0) 1092 out ; 1093 fesz -( u_t32_t )( w_ - ); 1094 = w_ ; 1095 `__os_ ( v , ffo ); 1096 ffo = NULL ; 1106 mvs = msg_vsi ; 1107 i(( t = `__os_wre ( v , fhp , & mvs , (mvs), & t )) != 0 || 1108 ( t = `__os_wre ( v , fhp , 1109 & c -> size , ec->size), & t )) != 0 || 1110 ( t = `__os_wre ( v , fhp , c -> da ,ec-> size , & t )) != 0 || 1111 ( t = `__os_fsync ( v , fhp )) != 0) { 1112 `__db_r ( v , t , "%s", ame ); 1113 out ; 1116 out : 1117 i( fhp ! NULL && ( t_t = `__os_ohd ( v , fhp)&& t == 0) 1118 t = t_t ; 1119 i( ame ! NULL ) 1120 `__os_ ( v , ame ); 1121 i( ffo ! NULL ) 1122 `__os_ ( v , ffo ); 1123 `__os_ ( v , buf ); 1124 ( t ); 1125 } } 1132 $__p_move_logs ( v ) 1133 ENV * v ; 1135 DB_LOG * db ; 1136 DB_LSN l ; 1137 LOG * ; 1138 u_t32_t um , ϡfe ; 1139 t ; 1140 * me ; 1142 db = v -> lg_hd ; 1143 = db -> gfo . imy ; 1144 t = 0; 1152 i(( t = `__memp_sync_t ( v , 1153 NULL , 0, DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK , NULL, NULL)) != 0) 1154 ( t ); 1155 i(( t = `__log_ush ( v , NULL )) != 0) 1156 ( t ); 1161 i( -> db_log_memy ) { 1162 `ZERO_LSN ( l ); 1163 i(( t = `__log_zo ( v , & l )) != 0) 1164 ( t ); 1166 ϡfe = -> l . fe ; 1167 um = 1; fnum < ϡfe ; fnum++) { 1168 i(( t = `__log_me ( db , um , & me , NULL , 0)) != 0) 1169 ( t ); 1170 () `time (& -> timeamp ); 1171 () `__os_uƚk ( v , me , 0); 1172 `__os_ ( v , me ); 1176 } } 1183 $__p_move_fe ( v , uid , me , ty , ags ) 1184 ENV * v ; 1185 u_t8_t * uid ; 1186 cڡ * me ; 1187 u_t32_t ty , ags ; 1193 #ifde HAVE_QUEUE 1194 DB * dbp ; 1195 t ; 1203 i( ty =( u_t32_t ) DB_QUEUE && ! `LF_ISSET ( DB_AM_INMEM )) { 1204 i(( t = `__db__ (& dbp , v , 0)) != 0) 1205 ( t ); 1217 i(( t = `__lock_id ( v , NULL , & dbp -> lock )) != 0) 1218 ( t ); 1220 `RPRINT ( v , DB_VERB_REP_SYNC , 1221 ( v , "QAM: Uƚk %v __qam_move", me )); 1222 i(( t = `__qam_move ( dbp , NULL , me , NULL)) != 0) { 1223 `RPRINT ( v , DB_VERB_REP_SYNC , 1224 ( v , "qam_movtued %d", t )); 1225 () `__db_o ( dbp , NULL , DB_NOSYNC ); 1226 ( t ); 1228 i(( t = `__db_o ( dbp , NULL , DB_NOSYNC )) != 0) 1229 ( t ); 1232 `COMPQUIET ( ty , 0); 1233 `COMPQUIET ( ags , 0); 1240 ( `__f_move ( v , NULL , uid , me , DB_APP_DATA , 0)); 1241 } } 1251 $__p_bulk_ge ( v , , eid , , c ) 1252 ENV * v ; 1253 DB_THREAD_INFO * ; 1254 eid ; 1255 __p_cڌ_gs * ; 1256 DBT * c ; 1258 __p_cڌ_gs tmp ; 1259 __p_bulk_gs b_gs ; 1260 t ; 1261 u_t8_t * p , * ; 1270 `memy (& tmp , , (tmprp)); 1271 tmp . y = REP_PAGE ; 1272 t = 0; 1273 = ( u_t8_t *) c -> da +ec-> size , p = (u_int8_t *)rec->data; 1274 p < ;) { 1279 i(( t = `__p_bulk_unmsh ( v , 1280 & b_gs , p , c -> size , &p)) != 0) 1281 ( t ); 1282 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1284 ( u_lg ) tmp . l . fe , (u_lgmp.l. offt )); 1285 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1287 `P_TO_ULONG ( p ), P_TO_ULONG( ), 1288 `P_TO_ULONG ( b_gs . bulkda . da ), 1289 ( u_lg ) b_gs . bulkda . size , 1290 ( u_lg ) b_gs . bulkda . size )); 1294 t = `__p_ge ( v , , eid , & tmp , & b_gs . bulkda ); 1295 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1296 "p_bulk_ge:_g%d", t )); 1301 i( t != 0) { 1302 i( t = DB_REP_PAGEDONE ) 1303 t = 0; 1307 ( t ); 1308 } } 1318 $__p_ge ( v , , eid , , c ) 1319 ENV * v ; 1320 DB_THREAD_INFO * ; 1321 eid ; 1322 __p_cڌ_gs * ; 1323 DBT * c ; 1326 DB_REP * db_p ; 1327 DBT key , da ; 1328 REP * p ; 1329 __p_fefo_gs * msg ; 1330 db_o_t o ; 1331 t ; 1333 t = 0; 1334 db_p = v -> p_hd ; 1335 p = db_p -> gi ; 1337 i(! `F_ISSET ( p , REP_F_RECOVER_PAGE )) 1338 ( DB_REP_PAGEDONE ); 1346 i( `LOG_COMPARE (& -> l , & p -> f_l ) < 0) { 1347 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1349 ( u_lg ) -> l . fe , (u_lgp->l. offt , 1350 ( u_lg ) p -> f_l . fe , 1351 ( u_lg ) p -> f_l . offt )); 1352 ( DB_REP_PAGEDONE ); 1354 i(( t = `__p_fefo_unmsh ( v , -> p_vsi , 1355 & msg , c -> da ,ec-> size , NULL )) != 0) 1356 ( t ); 1357 `MUTEX_LOCK ( v , p -> mtx_db ); 1358 `REP_SYSTEM_LOCK ( v ); 1362 `DB_ASSERT ( v , 1363 ! `IS_USING_LEASES ( v || `__p_i_ged (env) == 0); 1365 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1367 ( u_lg ) msg -> pgno , msg-> fum )); 1377 i( msg -> fum ! p -> curfe ) { 1378 `RPRINT ( v , DB_VERB_REP_SYNC , 1379 ( v , "Msg file %d != curfile %d", 1380 msg -> fum , p -> curfe )); 1381 t = DB_REP_PAGEDONE ; 1382 r ; 1388 i(( t = `__p__db ( v , 1, REP_PG )) != 0) { 1389 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1390 "PAGE: Cl_db %s", `db_ ( t ))); 1391 r ; 1394 `memt (& key , 0, (key)); 1395 `memt (& da , 0, (data)); 1396 o = ( db_o_t )( msg -> pgno + 1); 1397 key . da = & o ; 1398 key . un = key. size = ( db_o_t ); 1399 key . ags = DB_DBT_USERMEM ; 1406 t = `__db_put ( p -> fe_dbp , , NULL , & key , & da , DB_NOOVERWRITE ); 1407 i( t = DB_KEYEXIST ) { 1408 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1410 ( u_lg ) msg -> pgno , msg-> fum )); 1411 `STAT ( p -> . _pg_duid ++); 1412 t = 0; 1413 r ; 1415 i( t != 0) 1416 r ; 1418 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1419 "PAGE: Wrg%lu impo", ( u_lg ) msg -> pgno )); 1423 t = `__p_wre_ge ( v , , p , msg ); 1424 i( t != 0) { 1434 () `__db_d ( p -> fe_dbp , NULL , NULL, & key , 0); 1435 r ; 1437 `STAT ( p -> . _pg_cds ++); 1438 p -> ages ++; 1444 i( `LOG_COMPARE (& -> l , & p -> ϡ_l ) > 0) 1445 p -> ϡ_l = -> l ; 1453 t = `__p_fede ( v , , eid , p , msg , -> y ); 1455 r : `REP_SYSTEM_UNLOCK ( v ); 1456 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1458 `__os_ ( v , msg ); 1459 ( t ); 1460 } } 1470 $__p_ge_ ( v , , eid , , c ) 1471 ENV * v ; 1472 DB_THREAD_INFO * ; 1473 eid ; 1474 __p_cڌ_gs * ; 1475 DBT * c ; 1478 DB_REP * db_p ; 1479 REP * p ; 1480 __p_fefo_gs * msg , * r ; 1481 t ; 1483 t = 0; 1484 db_p = v -> p_hd ; 1485 p = db_p -> gi ; 1487 i(! `F_ISSET ( p , REP_F_RECOVER_PAGE )) 1489 i(( t = `__p_fefo_unmsh ( v , -> p_vsi , 1490 & msg , c -> da ,ec-> size , NULL )) != 0) 1491 ( t ); 1501 `MUTEX_LOCK ( v , p -> mtx_db ); 1502 `REP_SYSTEM_LOCK ( v ); 1506 `DB_ASSERT ( v , 1507 ! `IS_USING_LEASES ( v || `__p_i_ged (env) == 0); 1509 i( msg -> fum ! p -> curfe ) { 1510 `RPRINT ( v , DB_VERB_REP_SYNC , 1511 ( v , "Msg file %d != curfile %d", 1512 msg -> fum , p -> curfe )); 1513 out ; 1515 r = p -> curfo ; 1516 i( r -> ty !( u_t32_t ) DB_QUEUE ) 1517 -- r -> max_pgno ; 1524 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1526 ( u_lg ) msg -> pgno , (u_lg) p -> ady_pg , 1527 ( u_lg ) r -> max_pgno , p -> ages )); 1528 i( msg -> pgno = r -> max_pgno ) 1529 -- r -> max_pgno ; 1530 i( msg -> pgno > p -> ady_pg ) { 1531 p -> ady_pg = msg -> pgno + 1; 1532 p -> ages =-> ady_pg ; 1534 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1536 ( u_lg ) msg -> pgno , (u_lg) p -> ady_pg , 1537 ( u_lg ) r -> max_pgno , p -> ages )); 1547 t = `__p_fede ( v , , eid , p , msg , REP_PAGE_FAIL ); 1548 out : 1549 `REP_SYSTEM_UNLOCK ( v ); 1550 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1551 `__os_ ( v , msg ); 1552 ( t ); 1553 } } 1560 $__p_wre_ge ( v , , p , msg ) 1561 ENV * v ; 1562 DB_THREAD_INFO * ; 1563 REP * p ; 1564 __p_fefo_gs * msg ; 1566 DB db ; 1567 DBT pgcook ; 1568 DB_MPOOLFILE * mpf ; 1569 DB_PGINFO * pgfo ; 1570 __p_fefo_gs * r ; 1571 t ; 1572 * d ; 1574 r = NULL ; 1585 r = p -> curfo ; 1586 i( p -> fe_mpf = NULL ) { 1587 i(! `FLD_ISSET ( r -> db_ags , DB_AM_INMEM )) { 1592 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1594 (*) r -> fo . da )); 1595 i(( t = `__f_ ( v , NULL , NULL, 1596 r -> fo . da , DB_APP_DATA , 1597 v -> db_mode , 0)) != 0) 1598 r ; 1601 i(( t = 1602 `__p_mpf_ݒ ( v , & p -> fe_mpf ,-> curfo , 1603 `FLD_ISSET ( r -> db_ags , DB_AM_INMEM ? DB_CREATE : 0)) != 0) 1604 r ; 1614 i( msg -> ty =( u_t32_t ) DB_QUEUE && msg-> pgno != 0) { 1615 #ifde HAVE_QUEUE 1616 t = `__qam_fg ( p -> queue_dbc , & msg -> pgno , 1617 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & d ); 1622 t = `__db_no_queue_am ( v ); 1625 t = `__memp_fg ( p -> fe_mpf , & msg -> pgno , , NULL , 1626 DB_MPOOL_CREATE | DB_MPOOL_DIRTY , & d ); 1628 i( t != 0) 1629 r ; 1637 i(( `F_ISSET ( v , ENV_LITTLEENDIAN ) && 1638 ! `FLD_ISSET ( msg -> ffo_ags , REPINFO_PG_LITTLEENDIAN )) || 1639 (! `F_ISSET ( v , ENV_LITTLEENDIAN ) && 1640 `FLD_ISSET ( msg -> ffo_ags , REPINFO_PG_LITTLEENDIAN ))) { 1641 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1642 "wre_ge: Pag%ddtbswd", msg -> pgno )); 1651 `memt (& db , 0, (db)); 1652 db . v =nv; 1653 db . ty = ( DBTYPE ) msg ->type; 1654 db . pgsize = msg ->pgsize; 1655 mpf = p -> fe_mpf ; 1656 i(( t = `__memp_g_pgcook ( mpf , & pgcook )) != 0) 1657 r ; 1658 pgfo = ( DB_PGINFO *) pgcook . da ; 1659 db . ags = pgfo ->flags; 1660 i(( t = `__db_gesw (& db , msg -> fo . da , msg-> pgsize , 1661 NULL , 1)) != 0) 1662 r ; 1665 `memy ( d , msg -> fo . da , msg-> pgsize ); 1666 #ifde HAVE_QUEUE 1667 i( msg -> ty =( u_t32_t ) DB_QUEUE && msg-> pgno != 0) 1668 t = `__qam_ut ( p -> queue_dbc , 1669 msg -> pgno , d , p -> queue_dbc -> iܙy ); 1672 t = `__memp_ut ( p -> fe_mpf , 1673 , d , p -> fe_dbp -> iܙy ); 1675 r : ( t ); 1676 } } 1684 $__p_ge_g ( v , p , msg , ty ) 1685 ENV * v ; 1686 REP * p ; 1687 __p_fefo_gs * msg ; 1688 u_t32_t ty ; 1690 DBC * dbc ; 1691 DBT da , key ; 1692 DB_LOG * db ; 1693 DB_THREAD_INFO * ; 1694 LOG * ; 1695 __p_fefo_gs * r ; 1696 db_o_t o ; 1697 t , t_t ; 1699 db = v -> lg_hd ; 1700 = db -> gfo . imy ; 1701 t = 0; 1702 dbc = NULL ; 1712 r = p -> curfo ; 1718 i( r -> fum ! msg ->filenum) { 1719 t = DB_REP_PAGEDONE ; 1720 r ; 1738 i( msg -> pgno < p -> ady_pg ) { 1739 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1741 ( u_lg ) msg -> pgno , (u_lg) p -> ady_pg , 1742 ( u_lg ) p -> wag_pg )); 1743 r ; 1752 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1754 ( u_lg ) msg -> pgno , (u_lg) r -> max_pgno , (u_lg) p -> ady_pg , 1755 ( u_lg ) p -> wag_pg , (u_lg-> max_wa_pg )); 1756 i( msg -> pgno > p -> ady_pg ) { 1757 i( p -> wag_pg = PGNO_INVALID || 1758 msg -> pgno < p -> wag_pg ) 1759 p -> wag_pg = msg -> pgno ; 1764 p -> ady_pg ++; 1765 `__os_gtime ( v , & -> rcvd_ts , 1); 1766 i( p -> ady_pg =p-> wag_pg ) { 1772 -> wa_ts = p -> que_g ; 1773 p -> max_wa_pg = PGNO_INVALID ; 1778 `memt (& key , 0, (key)); 1779 `memt (& da , 0, (data)); 1780 `ENV_GET_THREAD_INFO ( v , ); 1781 i(( t = `__db_curs ( p -> fe_dbp , , NULL , 1782 & dbc , 0)) != 0) 1783 r ; 1788 o = ( db_o_t ) p -> wag_pg + 1; 1789 key . da = & o ; 1790 key . un = key. size = ( db_o_t ); 1791 key . ags = DB_DBT_USERMEM ; 1796 t = `__dbc_g ( dbc , & key , & da , DB_SET ); 1797 i( t != 0) 1798 r ; 1799 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1801 ( u_lg ) p -> ady_pg , (u_lg-> wag_pg )); 1803 t =0 && p -> ady_pg =p-> wag_pg ) { 1804 p -> ady_pg ++; 1805 t = `__dbc_g ( dbc , & key , & da , DB_NEXT ); 1810 i( t = DB_NOTFOUND || = DB_KEYEMPTY ) { 1811 p -> wag_pg = PGNO_INVALID ; 1812 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1814 ( u_lg ) p -> ady_pg , 1815 ( u_lg ) p -> wag_pg )); 1823 p -> wag_pg = *( db_pgno_t *) key . da ; 1824 p -> wag_pg --; 1825 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 1827 ( u_lg ) p -> ady_pg , (u_lg-> wag_pg )); 1836 i( p -> ady_pg > r -> max_pgno ) 1837 r ; 1842 i(( p -> wag_pg ! PGNO_INVALID && 1843 p -> ady_pg !p-> wag_pg || ty = REP_PAGE_MORE ) { 1850 i( ty = REP_PAGE_MORE ) 1851 r -> pgno = msg ->pgno; 1852 i(( `__p_check_deq ( v , p || ty = REP_PAGE_MORE ) && 1853 (( t = `__p_pgg_q ( v , p , r , 1854 ( ty = REP_PAGE_MORE ? REP_GAP_FORCE : 0)) != 0)) 1855 r ; 1857 -> wa_ts = p -> que_g ; 1858 p -> max_wa_pg = PGNO_INVALID ; 1861 r : 1862 i( dbc ! NULL && ( t_t = `__dbc_o (dbc)!0 && t == 0) 1863 t = t_t ; 1865 ( t ); 1866 } } 1878 $__p__nup ( v , p , f ) 1879 ENV * v ; 1880 REP * p ; 1881 f ; 1883 DB * queue_dbp ; 1884 DB_LOG * db ; 1885 LOG * ; 1886 nup_u , t , t_t ; 1888 t = 0; 1896 i( p -> fe_mpf ! NULL ) { 1897 t = `__memp_fo ( p -> fe_mpf , 0); 1898 p -> fe_mpf = NULL ; 1900 i( p -> fe_dbp ! NULL ) { 1901 t_t = `__db_o ( p -> fe_dbp , NULL , DB_NOSYNC ); 1902 p -> fe_dbp = NULL ; 1903 i( t_t !0 && t == 0) 1904 t = t_t ; 1906 i( f && p -> queue_dbc ! NULL ) { 1907 queue_dbp = p -> queue_dbc -> dbp ; 1908 i(( t_t = `__dbc_o ( p -> queue_dbc )!0 && t == 0) 1909 t = t_t ; 1910 p -> queue_dbc = NULL ; 1911 i(( t_t = `__db_o ( queue_dbp , NULL , DB_NOSYNC )) != 0 && 1912 t == 0) 1913 t = t_t ; 1915 i( p -> curfo ! NULL ) { 1916 `__os_ ( v , p -> curfo ); 1917 p -> curfo = NULL ; 1919 i( `F_ISSET ( p , REP_F_INTERNAL_INIT_MASK && f ) { 1935 `RPRINT ( v , DB_VERB_REP_SYNC , 1936 ( v , "clean up interrupted internal init")); 1937 nup_u = 0; 1939 i(( t_t = `__p_move_logs ( v )) == 0) { 1949 db = v -> lg_hd ; 1950 = db -> gfo . imy ; 1952 i(( t_t = `__p_log_tup ( v , 1953 p , 1, DB_LOGVERSION , & -> ady_l )) != 0) { 1954 nup_u = 1; 1955 i( t == 0) 1956 t = t_t ; 1959 nup_u = 1; 1960 i( t == 0) 1961 t = t_t ; 1964 i(( t_t = `__p_move_by_li ( v , p -> fovsi , 1965 p -> igfo ,-> igfޒ ,-> nfes )) != 0) { 1966 nup_u = 1; 1967 i( t == 0) 1968 t = t_t ; 1971 i(! nup_u && 1972 ( t_t = `__p_move__fe ( v )) != 0) { 1973 i( t == 0) 1974 t = t_t ; 1977 i( p -> igfo ! NULL ) { 1978 `__os_ ( v , p -> igfo ); 1979 p -> igfo = NULL ; 1983 ( t ); 1984 } } 1996 $__p_fede ( v , , eid , p , msg , ty ) 1997 ENV * v ; 1998 DB_THREAD_INFO * ; 1999 eid ; 2000 REP * p ; 2001 __p_fefo_gs * msg ; 2002 u_t32_t ty ; 2004 __p_fefo_gs * r ; 2005 t ; 2011 t = `__p_ge_g ( v , p , msg , ty ); 2016 i( t = DB_REP_PAGEDONE ) 2019 r = p -> curfo ; 2024 `RPRINT ( v , DB_VERB_REP_SYNC , 2025 ( v , "FILEDONE: have %luages. Need %lu.", 2026 ( u_lg ) p -> ages , (u_lg) r -> max_pgno + 1)); 2027 i( p -> ages < r -> max_pgno ) 2035 i( r -> ty =( u_t32_t ) DB_QUEUE && 2036 (( t = `__p_queue_fede ( v , , p , r )) != 2037 DB_REP_PAGEDONE )) 2038 ( t ); 2042 i(( t = `__p__nup ( v , p , 0)) != 0) 2043 r ; 2045 p -> curfe ++; 2046 t = `__p_xtfe ( v , eid , p ); 2047 r : 2048 ( t ); 2049 } } 2059 $__p_xtfe ( v , eid , p ) 2060 ENV * v ; 2061 eid ; 2062 REP * p ; 2064 DBT dbt ; 2065 __p_logq_gs _gs ; 2066 t ; 2067 u_t8_t * buf , buf [ __REP_LOGREQ_SIZE ]; 2068 size_t n , msgsz ; 2075 i( p -> ma_id ! DB_EID_INVALID ) 2076 eid = p -> ma_id ; 2077 i( p -> curfe =p-> nfes ) { 2078 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2079 "NEXTFILE: hav%d fes. RECOVER_LOGow", p -> nfes )); 2090 i(( t = `__memp_sync_t ( v , NULL , 0, 2091 DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK , NULL , NULL)) != 0) 2092 ( t ); 2093 `F_CLR ( p , REP_F_RECOVER_PAGE ); 2094 `F_SET ( p , REP_F_RECOVER_LOG ); 2095 `memt (& dbt , 0, (dbt)); 2096 _gs . dl = p -> ϡ_l ; 2097 i(( t = `__p_logq_msh ( v , & _gs , buf , 2098 __REP_LOGREQ_SIZE , & n )) != 0) 2099 ( t ); 2100 `DB_INIT_DBT ( dbt , buf , n ); 2101 `REP_SYSTEM_UNLOCK ( v ); 2102 i(( t = `__p_log_tup ( v , p , 2103 p -> f_l . fe ,-> f_vs , NULL )) != 0) 2104 ( t ); 2105 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2107 ( u_lg ) p -> f_l . fe , (u_lg->f_l. offt , 2108 ( u_lg ) p -> ϡ_l . fe , (u_lg->ϡ_l. offt )); 2109 () `__p_nd_mesge ( v , eid , 2110 REP_LOG_REQ , & p -> f_l , & dbt , 2111 REPCTL_INIT , DB_REP_ANYWHERE ); 2112 `REP_SYSTEM_LOCK ( v ); 2119 p -> ffo =-> xtfo ; 2120 i(( t = `__p_fefo_unmsh ( v , p -> fovsi , 2121 & p -> curfo ,-> ffo ,-> fޒ , &p-> xtfo )) != 0) { 2122 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2123 "NEXTINFO: Fefػad: %s", `db_ ( t ))); 2124 ( t ); 2126 `DB_ASSERT ( v , p -> curfo -> pgno == 0); 2127 p -> fޒ -( u_t32_t )ԕ-> xtfo --> ffo ); 2128 p -> ady_pg = 0; 2129 p -> ages = 0; 2130 p -> wag_pg = PGNO_INVALID ; 2131 p -> max_wa_pg = PGNO_INVALID ; 2132 `memt (& dbt , 0, (dbt)); 2133 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2134 "Nexf%d:gsiz%lu, maxpg %lu", p -> curfo -> fum , 2135 ( u_lg ) p -> curfo -> pgsize , (u_lg->curfo-> max_pgno )); 2136 msgsz = __REP_FILEINFO_SIZE + 2137 p -> curfo -> uid . size +->curfo-> fo .size; 2138 i(( t = `__os_oc ( v , 1, msgsz , & buf )) != 0) 2139 ( t ); 2140 i(( t = `__p_fefo_msh ( v , p -> fovsi , 2141 p -> curfo , buf , msgsz , & n )) != 0) 2142 ( t ); 2143 `DB_INIT_DBT ( dbt , buf , n ); 2144 () `__p_nd_mesge ( v , eid , REP_PAGE_REQ , 2145 NULL , & dbt , 0, DB_REP_ANYWHERE ); 2146 `__os_ ( v , buf ); 2149 } } 2157 $__p_mpf_ݒ ( v , mp , r , ags ) 2158 ENV * v ; 2159 DB_MPOOLFILE ** mp ; 2160 __p_fefo_gs * r ; 2161 u_t32_t ags ; 2163 DB db ; 2164 t ; 2166 i(( t = `__memp_f ( v , mp )) != 0) 2167 ( t ); 2173 db . v =nv; 2174 db . ty = ( DBTYPE ) r ->type; 2175 db . pgsize = r ->pgsize; 2176 `memy ( db . feid , r -> uid . da , DB_FILE_ID_LEN ); 2177 db . ags = r -> db_ags ; 2179 `F_CLR (& db , DB_AM_OPEN_CALLED ); 2185 i(( `F_ISSET ( v , ENV_LITTLEENDIAN ) && 2186 ! `FLD_ISSET ( r -> ffo_ags , REPINFO_DB_LITTLEENDIAN )) || 2187 (! `F_ISSET ( v , ENV_LITTLEENDIAN ) && 2188 `FLD_ISSET ( r -> ffo_ags , REPINFO_DB_LITTLEENDIAN ))) { 2189 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2191 `F_SET (& db , DB_AM_SWAP ); 2193 `F_CLR (& db , DB_AM_SWAP ); 2195 db . mpf = * mp ; 2196 i( `F_ISSET (& db , DB_AM_INMEM )) 2197 () `__memp_t_ags ( db . mpf , DB_MPOOL_NOFILE , 1); 2198 i(( t = `__v_mpo (& db , r -> fo . da , ags )) != 0) { 2199 () `__memp_fo ( db . mpf , 0); 2200 * mp = NULL ; 2202 ( t ); 2203 } } 2213 $__p_pgg_q ( v , p , q , gags ) 2214 ENV * v ; 2215 REP * p ; 2216 __p_fefo_gs * q ; 2217 u_t32_t gags ; 2219 DBT max_pg_dbt ; 2220 __p_fefo_gs * tmp , t ; 2221 size_t n , msgsz ; 2222 u_t32_t ags ; 2223 loc , t ; 2224 u_t8_t * buf ; 2226 t = 0; 2227 loc = 0; 2236 i( p -> curfo = NULL ) 2238 i( q = NULL ) { 2239 i(( t = `__p_ffo_loc ( v , p -> curfo , & tmp )) != 0) 2240 ( t ); 2241 loc = 1; 2243 t = * q ; 2244 tmp = & t ; 2253 ags = 0; 2254 `memt (& max_pg_dbt , 0, (max_pg_dbt)); 2259 i( `FLD_ISSET ( gags , REP_GAP_FORCE )) 2260 tmp -> pgno ++; 2262 tmp -> pgno = p -> ady_pg ; 2263 msgsz = __REP_FILEINFO_SIZE + 2264 tmp -> uid . size +mp-> fo .size; 2265 i(( t = `__os_oc ( v , 1, msgsz , & buf )) != 0) 2266 r ; 2267 i( p -> max_wa_pg = PGNO_INVALID || 2268 `FLD_ISSET ( gags , REP_GAP_FORCE | REP_GAP_REREQUEST )) { 2273 i( p -> wag_pg = PGNO_INVALID ) { 2274 i( `FLD_ISSET ( gags , 2275 REP_GAP_FORCE | REP_GAP_REREQUEST )) 2276 p -> max_wa_pg =-> curfo -> max_pgno ; 2278 p -> max_wa_pg =-> ady_pg ; 2285 i( `FLD_ISSET ( gags , REP_GAP_FORCE ) && 2286 p -> wag_pg < tmp -> pgno ) 2287 p -> max_wa_pg =-> curfo -> max_pgno ; 2289 p -> max_wa_pg =-> wag_pg - 1; 2291 tmp -> max_pgno = p -> max_wa_pg ; 2295 i( `FLD_ISSET ( gags , REP_GAP_REREQUEST )) 2296 ags = DB_REP_REREQUEST ; 2298 ags = DB_REP_ANYWHERE ; 2303 p -> max_wa_pg =-> ady_pg ; 2304 tmp -> max_pgno = p -> ady_pg ; 2308 ags = DB_REP_REREQUEST ; 2310 i( p -> ma_id ! DB_EID_INVALID ) { 2311 `STAT ( p -> . _pg_queed ++); 2318 i(( t = `__p_fefo_msh ( v , p -> fovsi , 2319 tmp , buf , msgsz , & n )) == 0) { 2320 `DB_INIT_DBT ( max_pg_dbt , buf , n ); 2321 `DB_ASSERT ( v , n = max_pg_dbt . size ); 2322 () `__p_nd_mesge ( v , p -> ma_id , 2323 REP_PAGE_REQ , NULL , & max_pg_dbt , 0, ags ); 2326 () `__p_nd_mesge ( v , DB_EID_BROADCAST , 2327 REP_MASTER_REQ , NULL , NULL, 0, 0); 2329 `__os_ ( v , buf ); 2330 r : 2331 i( loc ) 2332 `__os_ ( v , tmp ); 2333 ( t ); 2334 } } 2344 $__p_ffo_loc ( v , rc , rp ) 2345 ENV * v ; 2346 __p_fefo_gs * rc , ** rp ; 2348 __p_fefo_gs * r ; 2349 size_t size ; 2350 t ; 2351 * uidp , * f ; 2356 size = ( __p_fefo_gs + rc -> uid .size + 2357 rc -> fo . size ; 2358 i(( t = `__os_mloc ( v , size , & r )) != 0) 2359 ( t ); 2365 `memy ( r , rc , ( __p_fefo_gs )); 2366 uidp = ( u_t8_t *) r + ( __p_fefo_gs ); 2367 r -> uid . da = uidp ; 2368 `memy ( uidp , rc -> uid . da ,c->uid. size ); 2370 f = ( u_t8_t *) uidp + rc -> uid . size ; 2371 r -> fo . da = f ; 2372 `memy ( f , rc -> fo . da ,c->fo. size ); 2373 * rp = r ; 2374 ( t ); 2375 } } 2383 $__p_log_tup ( v , p , fe , vsi , lp ) 2384 ENV * v ; 2385 REP * p ; 2386 u_t32_t fe ; 2387 u_t32_t vsi ; 2388 DB_LSN * lp ; 2390 DB_LOG * db ; 2391 DB_LSN l ; 2392 DB_TXNMGR * mgr ; 2393 DB_TXNREGION * gi ; 2394 LOG * ; 2395 t ; 2397 db = v -> lg_hd ; 2398 = db -> gfo . imy ; 2399 mgr = v -> tx_hd ; 2400 gi = mgr -> gfo . imy ; 2406 `LOG_SYSTEM_LOCK ( v ); 2407 i(( t = `__log_wfe ( db , & l , fe , vsi )) == 0 && 2408 lp ! NULL ) 2409 * lp = l ; 2410 `LOG_SYSTEM_UNLOCK ( v ); 2418 p -> f_l = -> l ; 2419 `TXN_SYSTEM_LOCK ( v ); 2420 `ZERO_LSN ( gi -> ϡ_ckp ); 2421 `TXN_SYSTEM_UNLOCK ( v ); 2422 ( t ); 2423 } } 2446 $__p_queue_fede ( v , , p , r ) 2447 ENV * v ; 2448 DB_THREAD_INFO * ; 2449 REP * p ; 2450 __p_fefo_gs * r ; 2452 #ide HAVE_QUEUE 2453 `COMPQUIET ( , NULL ); 2454 `COMPQUIET ( p , NULL ); 2455 `COMPQUIET ( r , NULL ); 2456 ( `__db_no_queue_am ( v )); 2458 DB * queue_dbp ; 2459 db_pgno_t f , ϡ ; 2460 u_t32_t ags ; 2461 emy , t , t_t ; 2463 t = 0; 2464 queue_dbp = NULL ; 2465 i( p -> queue_dbc = NULL ) { 2470 i(( t = `__memp_sync_t ( v , NULL , 0, 2471 DB_SYNC_CACHE | DB_SYNC_INTERRUPT_OK , NULL , NULL)) != 0) 2472 out ; 2473 i(( t = 2474 `__db__ (& queue_dbp , v , 0)) != 0) 2475 out ; 2476 ags = DB_NO_AUTO_COMMIT | 2477 ( `F_ISSET ( v , ENV_THREAD ? DB_THREAD : 0); 2482 i(( t = `__db_ݒ ( queue_dbp , , NULL , 2483 `FLD_ISSET ( r -> db_ags , DB_AM_INMEM ? NULL : 2484 r -> fo . da , 2485 `FLD_ISSET ( r -> db_ags , DB_AM_INMEM ?-> fo . da : 2486 NULL , 2487 DB_QUEUE , ags , 0, PGNO_BASE_MD )) != 0) 2488 out ; 2490 i(( t = `__db_curs ( queue_dbp , 2491 , NULL , & p -> queue_dbc , 0)) != 0) 2492 out ; 2494 queue_dbp = p -> queue_dbc -> dbp ; 2496 i(( t = `__queue_gefo ( queue_dbp , 2497 & f , & ϡ , & emy , 0, 0)) != 0) 2498 out ; 2499 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2501 ( u_lg ) f , (u_lg) ϡ , emy )); 2510 i( r -> max_pgno == 0) { 2515 i( emy ) 2516 out ; 2517 i( f > ϡ ) { 2518 r -> max_pgno = 2519 `QAM_RECNO_PAGE ( p -> queue_dbc -> dbp , UINT32_MAX ); 2521 r -> max_pgno = ϡ ; 2522 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2524 ( u_lg ) f , (u_lg) r -> max_pgno )); 2525 q ; 2526 } i( r -> max_pgno ! ϡ ) { 2533 f = 1; 2534 r -> max_pgno = ϡ ; 2535 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 2537 ( u_lg ) f , (u_lg) ϡ )); 2538 q : 2544 p -> ages = f ; 2545 p -> ady_pg = f ; 2546 p -> wag_pg = r -> max_pgno + 1; 2547 p -> max_wa_pg = PGNO_INVALID ; 2548 t = `__p_pgg_q ( v , p , r , 0); 2549 ( t ); 2556 out : 2557 i( p -> queue_dbc ! NULL && 2558 ( t_t = `__dbc_o ( p -> queue_dbc )!0 && t == 0) 2559 t = t_t ; 2560 p -> queue_dbc = NULL ; 2562 i( queue_dbp ! NULL && 2563 ( t_t = `__db_o ( queue_dbp , NULL , DB_NOSYNC )!0 && t == 0) 2564 t = t_t ; 2565 i( t == 0) 2566 t = DB_REP_PAGEDONE ; 2567 ( t ); 2569 } } 2575 $__p_move__fe ( v ) 2576 ENV * v ; 2578 t ; 2579 * me ; 2581 i(( t = `__db_ame ( 2582 v , DB_APP_NONE , REP_INITNAME , 0, NULL , & me )) != 0) 2583 ( t ); 2584 () `__os_uƚk ( v , me , 0); 2585 `__os_ ( v , me ); 2587 } } 2605 $__p_t_ ( v ) 2606 ENV * v ; 2608 DB_FH * fhp ; 2609 __p_upde_gs * rup ; 2610 DBT dbt ; 2611 * lod_d , * d , * _me ; 2612 size_t t ; 2613 u_t32_t dbtvs , fvs , zo ; 2614 u_t8_t * xt ; 2615 t , t_t ; 2617 lod_d = NULL ; 2618 rup = NULL ; 2619 dbt . da = NULL ; 2621 i(( t = `__db_ame ( 2622 v , DB_APP_NONE , REP_INITNAME , 0, NULL , & _me )) != 0) 2623 ( t ); 2625 i(( t = `__os_ݒ ( 2626 v , _me , 0, DB_OSO_RDONLY , DB_MODE_600 , & fhp )) != 0) { 2627 i( t = ENOENT ) 2628 t = 0; 2629 out ; 2632 `RPRINT ( v , DB_VERB_REP_SYNC , 2633 ( v , "Cleaning up interrupted internal init")); 2652 i(( t = `__os_ad ( v , fhp , & zo , (zo), & t )) != 0) 2653 out ; 2657 i( t !( zo )) 2658 rm ; 2659 i( zo != 0) { 2665 i(( t = `__os_ek ( v , fhp , 0, 0, 0)) != 0) 2666 out ; 2667 fvs = REP_INITVERSION_46 ; 2668 } i(( t = `__os_ad ( v , 2669 fhp , & fvs , (fvs), & t )) != 0) 2670 out ; 2671 i( t !( fvs )) 2672 rm ; 2673 t = `__p_g_fe_li ( v , fhp , fvs , & dbtvs , & dbt ); 2674 i(( t_t = `__os_ohd ( v , fhp )!0 || t != 0) { 2675 i( t == 0) 2676 t = t_t ; 2677 out ; 2679 i( dbt . da = NULL ) { 2687 rm ; 2691 i( v -> dbv -> db_log_d = NULL ) 2692 d = v -> db_home ; 2694 i(( t = `__db_ame ( v , DB_APP_NONE , 2695 v -> dbv -> db_log_d , 0, NULL , & d )) != 0) 2696 out ; 2697 lod_d = d ; 2700 i(( t = `__p_move_by_efix ( v , 2701 d , LFPREFIX , (LFPREFIX)-1, DB_APP_LOG )) != 0) 2702 out ; 2708 i(( t = `__p_upde_unmsh ( v , dbtvs , 2709 & rup , dbt . da , dbt. size , & xt )) != 0) 2710 out ; 2711 i(( t = `__p_move_by_li ( v , dbtvs , 2712 xt , dbt . size , rup -> num_fes )) != 0) 2713 out ; 2716 rm : () `__os_uƚk ( v , _me , 0); 2717 out : i( rup ! NULL ) 2718 `__os_ ( v , rup ); 2719 i( lod_d ! NULL ) 2720 `__os_ ( v , lod_d ); 2721 i( dbt . da ! NULL ) 2722 `__os_ ( v , dbt . da ); 2724 `__os_ ( v , _me ); 2725 ( t ); 2726 } } 2739 $__p_g_fe_li ( v , fhp , fvs , dbtvs , dbt ) 2740 ENV * v ; 2741 DB_FH * fhp ; 2742 u_t32_t fvs ; 2743 u_t32_t * dbtvs ; 2744 DBT * dbt ; 2746 u_t32_t ngth , mvs ; 2747 size_t t ; 2748 i , t ; 2751 dbt -> da = NULL ; 2752 mvs = DB_REPVERSION_46 ; 2753 ngth = 0; 2754 i = 1; i <= 2; i++) { 2755 i( fvs > REP_INITVERSION_47 ) { 2756 i(( t = `__os_ad ( v , fhp , & mvs , 2757 ( mvs ), & t )) != 0) 2758 r ; 2759 i( t =0 && dbt -> da ! NULL ) 2761 i( t !( mvs )) 2762 r ; 2764 i(( t = `__os_ad ( v , 2765 fhp , & ngth , ֒gth), & t )) != 0) 2766 r ; 2772 i( t =0 && dbt -> da ! NULL ) 2774 i( t !( ngth )) 2775 r ; 2777 i(( t = `__os_loc ( v , 2778 ( size_t ) ngth , & dbt -> da )) != 0) 2779 r ; 2781 i(( t = `__os_ad ( 2782 v , fhp , dbt -> da , ngth , & t )) != 0 || 2783 t !( size_t ) ngth ) 2784 r ; 2787 * dbtvs = mvs ; 2788 dbt -> size = ngth ; 2791 r : 2797 i( dbt -> da ! NULL ) 2798 `__os_ ( v , dbt -> da ); 2799 dbt -> da = NULL ; 2800 ( t ); 2801 } } 2808 $__p_move_by_efix ( v , d , efix , ef_n , ame ) 2809 ENV * v ; 2810 cڡ * d ; 2811 cڡ * efix ; 2812 size_t ef_n ; 2813 APPNAME ame ; 2815 * m , ** mes ; 2816 t , i , t ; 2818 i(( t = `__os_dli ( v , d , 0, & mes , & t )) != 0) 2819 ( t ); 2820 i = 0; i < t ; i++) { 2821 i( `cmp ( mes [ i ], efix , ef_n ) == 0) { 2822 i(( t = `__db_ame ( v , 2823 ame , mes [ i ], 0, NULL , & m )) != 0) 2824 out ; 2825 () `__os_uƚk ( v , m , 0); 2826 `__os_ ( v , m ); 2829 out : `__os_d ( v , mes , t ); 2830 ( t ); 2831 } } 2842 $__p_move_by_li ( v , vsi , fi , fesz , cou ) 2843 ENV * v ; 2844 u_t32_t vsi ; 2845 u_t8_t * fi ; 2846 u_t32_t fesz ; 2847 u_t32_t cou ; 2849 DB_ENV * dbv ; 2850 __p_fefo_gs * r ; 2851 ** dd , * d , * m ; 2852 u_t8_t * w_ ; 2853 t ; 2855 dbv = v ->dbenv; 2856 t = 0; 2857 r = NULL ; 2858 cou -- > 0) { 2859 i(( t = `__p_fefo_unmsh ( v , vsi , 2860 & r , fi , fesz , & w_ )) != 0) 2861 out ; 2862 fesz -( u_t32_t )( w_ - fi ); 2863 fi = w_ ; 2864 i(( t = `__db_ame ( v , 2865 DB_APP_DATA , r -> fo . da , 0, NULL , & m )) != 0) 2866 out ; 2867 () `__os_uƚk ( v , m , 0); 2868 `__os_ ( v , m ); 2869 `__os_ ( v , r ); 2870 r = NULL ; 2874 i( dbv -> db_da_d = NULL ) 2875 t = `__p_move_by_efix ( v ,nv-> db_home , 2876 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX) - 1, 2877 DB_APP_DATA ); 2879 dd = dbv -> db_da_d ; *dd ! NULL ; ++ddir) { 2880 i(( t = `__db_ame ( v , DB_APP_NONE , 2881 * dd , 0, NULL , & d )) != 0) 2883 t = `__p_move_by_efix ( v , d , 2884 QUEUE_EXTENT_PREFIX , (QUEUE_EXTENT_PREFIX)-1, 2885 DB_APP_DATA ); 2886 `__os_ ( v , d ); 2887 i( t != 0) 2892 out : 2893 i( r ! NULL ) 2894 `__os_ ( v , r ); 2895 ( t ); 2896 } } @../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 (( ENV *, REP *, , DB_LSN *, 30 u_t32_t , u_int32_t, u_int32_t, u_int32_t)); 31 __p_e_ 32 __P (( ENV *, u_t32_t , u_int32_t, *, u_int32_t *)); 33 __p_fe_eed __P (( ENV *, REP *, u_t32_t )); 34 __p_e_ma __P (( ENV *, REP *)); 35 __p_y __P (( ENV *, REP *, , u_t32_t *, u_t32_t, roff_t )); 36 __p_wa __P (( ENV *, db_timeout_t *, *, , u_t32_t )); 46 $__p_e ( dbv , giv_nses , nves , ags ) 47 DB_ENV * dbv ; 48 u_t32_t 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 ENV * v ; 56 LOG * ; 57 REP * p ; 58 de , eid , eed , fu_e , locked , _ogss , ed_q ; 59 t , nd_ve , t_t ; 60 u_t32_t ack , lags , eg , nses , ig_y , iܙy , i ; 61 u_t32_t tbak ; 62 db_timeout_t timeout , to ; 64 v = dbv ->env; 66 `COMPQUIET ( ags , 0); 67 `COMPQUIET ( eg , 0); 69 `ENV_REQUIRES_CONFIG_XX ( 70 v , p_hd , "DB_ENV->p_e", DB_INIT_REP ); 73 i( `IS_USING_LEASES ( v && giv_nses != 0) { 74 `__db_rx ( v , 76 ( EINVAL ); 79 db_p = v -> p_hd ; 80 p = db_p -> gi ; 81 db = v -> lg_hd ; 82 = db -> gfo . imy ; 83 eed = 0; 90 nses = giv_nses =0 ? p -> cfig_nses : given_nsites; 91 ack = nves =0 ? `ELECTION_MAJORITY ( nses ) :votes; 92 locked = 0; 101 i( ack <( nses / 2)) { 102 `__db_rx ( v , 104 nves , nses ); 107 i( nses < ack ) { 108 `__db_rx ( v , 110 ack , nses ); 111 ( EINVAL ); 118 fu_e = 0; 119 timeout = p -> e_timeout ; 120 i(! `F_ISSET ( p , REP_F_GROUP_ESTD &&-> fu_e_timeout != 0) { 121 fu_e = 1; 122 timeout = p -> fu_e_timeout ; 124 i = p -> iܙy ; 126 `RPRINT ( v , DB_VERB_REP_ELECT , 127 ( v , "Startlectionsites %d,ck %d,riority %d", 128 nses , ack , i )); 141 lags = i !0 ? REPCTL_ELECTABLE : 0; 142 `ENV_ENTER ( v , ); 144 ig_y = 0; 145 i(( t = `__p_e_ ( v , nses , ack , 146 & _ogss , & ig_y )) != 0) { 147 i( t = DB_REP_NEWMASTER ) 148 t = 0; 149 r ; 155 i( _ogss ) 156 ede ; 158 iܙy = -> rsi . vsi ! DB_LOGVERSION ? 0 : i ; 159 #ifdef CONFIG_TEST 164 i( iܙy > 0 &&riority <= 5) { 165 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 167 `DB_ASSERT ( v , lags = REPCTL_ELECTABLE ); 168 iܙy = 0; 171 `__os_gtime ( v , & p -> ime , 1); 172 `REP_SYSTEM_LOCK ( v ); 177 i( `IS_USING_LEASES ( v )) { 178 to = `__p_a_watime ( v ); 179 i( to != 0) { 180 `F_SET ( p , REP_F_EPHASE0 ); 181 `REP_SYSTEM_UNLOCK ( v ); 182 () `__p_nd_mesge ( v , DB_EID_BROADCAST , 183 REP_MASTER_REQ , NULL , NULL, 0, 0); 184 t = `__p_wa ( v , & to , & eid , 185 0, REP_F_EPHASE0 ); 186 `REP_SYSTEM_LOCK ( v ); 187 `F_CLR ( p , REP_F_EPHASE0 ); 188 t ) { 193 DB_REP_EGENCHG : 195 `REP_SYSTEM_UNLOCK ( v ); 196 ede ; 200 DB_TIMEOUT : 203 lockde ; 213 i(( t = `__p_lockout_y ( v , p , 0)) != 0) 214 lockde ; 215 locked = 1; 216 to = timeout ; 217 `REP_SYSTEM_UNLOCK ( v ); 218 t : 220 `__os_unique_id ( v , & tbak ); 221 `LOG_SYSTEM_LOCK ( v ); 222 l = ->lsn; 223 `LOG_SYSTEM_UNLOCK ( v ); 224 `REP_SYSTEM_LOCK ( v ); 226 `F_SET ( p , REP_F_EPHASE1 | REP_F_NOARCHIVE ); 227 `F_CLR ( p , REP_F_TALLY ); 234 i( `IS_USING_LEASES ( v ) && 235 `__p_i_ged ( v )) { 236 t = 0; 237 lockde ; 249 i( `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP | 250 REP_F_RECOVER_LOG | REP_F_RECOVER_PAGE | REP_F_RECOVER_UPDATE )) { 251 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 253 iܙy = 0; 254 lags = 0; 263 i(( t = `__p_wre_eg ( v , p -> eg + 1)) != 0) 264 lockde ; 267 i( `__p_y ( v , p ,-> eid , &p-> ses ,-> eg , 268 p -> y_off ) != 0) { 269 t = EINVAL ; 270 lockde ; 272 `__p_cmp_ve ( v , p ,-> eid , & l , iܙy ,-> g , 273 tbak , lags ); 275 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Beginningnlection")); 278 nd_ve = DB_EID_INVALID ; 279 eg = p ->egen; 280 de = `IS_PHASE1_DONE ( p ); 281 `REP_SYSTEM_UNLOCK ( v ); 282 `__p_nd_ve ( v , & l , nses , ack , iܙy , tbak , eg , 283 DB_EID_BROADCAST , REP_VOTE1 , lags ); 284 `DB_ENV_TEST_RECOVERY ( v , DB_TEST_ELECTVOTE1 , t , NULL ); 285 i( de ) { 286 `REP_SYSTEM_LOCK ( v ); 287 ve ; 289 t = `__p_wa ( v , & to , & eid , fu_e , REP_F_EPHASE1 ); 290 t ) { 293 i( eid ! DB_EID_INVALID && ! `IN_ELECTION ( p )) { 294 `RPRINT ( v , DB_VERB_REP_ELECT , 295 ( v , "Endedlectionhase 1")); 296 ede ; 298 pha2 ; 299 DB_REP_EGENCHG : 300 i( to > timeout ) 301 to = timeout ; 302 to = (to * 8) / 10; 303 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 305 ( u_lg ) p -> eg , (u_lg) to , (u_lg) timeout )); 314 t ; 315 DB_TIMEOUT : 318 r ; 326 `REP_SYSTEM_LOCK ( v ); 331 i( eg ! p ->egen) { 332 `REP_SYSTEM_UNLOCK ( v ); 333 `RPRINT ( v , DB_VERB_REP_ELECT , 334 ( v , "Egen changed from %luo %lu", 335 ( u_lg ) eg , (u_lg) p ->egen)); 336 t ; 338 i( p -> ses >p-> nves ) { 339 ve : 341 nd_ve = p -> wr ; 347 i( p -> wr =p-> eid ) { 348 () `__p_y ( v , p ,-> eid , &p-> ves , 349 eg , p -> v2y_off ); 350 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 351 "Coued my vِ%d", p -> ves )); 353 `F_SET ( p , REP_F_EPHASE2 ); 354 `F_CLR ( p , REP_F_EPHASE1 ); 356 `REP_SYSTEM_UNLOCK ( v ); 357 i( nd_ve = DB_EID_INVALID ) { 359 i( p -> ses >p-> nves ) 360 `__db_rx ( v , 362 p -> ses ,-> nves ,-> nses ); 364 `__db_rx ( v , 366 p -> ses ,-> nves ,-> nses ); 367 t = DB_REP_UNAVAIL ; 368 r ; 375 i( nd_ve ! p -> eid ) { 376 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Sending vote")); 377 `__p_nd_ve ( v , NULL , 0, 0, 0, 0, eg , 378 nd_ve , REP_VOTE2 , 0); 391 to =o * 2; 394 pha2 : 395 i( `I_HAVE_WON ( p ,-> wr )) { 396 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 397 "Skpgha2 wa:̗dy g %d ves", p -> ves )); 398 `REP_SYSTEM_LOCK ( v ); 399 i_w ; 401 t = `__p_wa ( v , & to , & eid , fu_e , REP_F_EPHASE2 ); 402 `RPRINT ( v , DB_VERB_REP_ELECT , 403 ( v , "Endediڅha 2 %d", t )); 404 t ) { 406 i( eid ! DB_EID_INVALID ) 407 ede ; 408 t = DB_REP_UNAVAIL ; 410 DB_REP_EGENCHG : 411 i( to > timeout ) 412 to = timeout ; 413 to = (to * 8) / 10; 414 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 416 ( u_lg ) p -> eg , 417 ( u_lg ) to , (u_lg) timeout )); 418 t ; 419 DB_TIMEOUT : 420 t = DB_REP_UNAVAIL ; 423 r ; 425 `REP_SYSTEM_LOCK ( v ); 426 i( eg ! p ->egen) { 427 `REP_SYSTEM_UNLOCK ( v ); 428 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 430 ( u_lg ) eg , (u_lg) p ->egen)); 431 t ; 433 de = p -> ves >p-> nves ; 434 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 436 p -> ves ,-> nves ,-> nses )); 437 i( `I_HAVE_WON ( p ,-> wr )) { 438 i_w : `__p_e_ma ( v , p ); 439 t = 0; 440 eed = 1; 443 r : `REP_SYSTEM_LOCK ( v ); 445 lockde : 452 i( t =0 || = DB_REP_UNAVAIL ) 453 `__p_e_de ( v , p , 0); 454 i( ig_y ) 455 `F_SET ( p , ig_y ); 462 ede : `REP_SYSTEM_LOCK ( v ); 464 `F_CLR ( p , REP_F_INREPELECT ); 465 i( locked ) { 466 ed_q = `F_ISSET ( p , REP_F_SKIPPED_APPLY ); 467 `F_CLR ( p , REP_F_READY_APPLY | REP_F_SKIPPED_APPLY ); 468 `REP_SYSTEM_UNLOCK ( v ); 472 i( ed_q && ( t_t = `__p_nd_q ( v , 0)) != 0 && 473 t == 0) 474 t = t_t ; 476 `REP_SYSTEM_UNLOCK ( v ); 478 i( eed ) 479 t = `__p_fe_eed ( v , p , eg ); 481 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 483 t , p -> ses , ( u_lg -> eg , (u_lg-> ags )); 485 DB_TEST_RECOVERY_LABEL 486 `ENV_LEAVE ( v , ); 487 ( t ); 488 } } 497 $__p_ve1 ( v , , c , eid ) 498 ENV * v ; 499 __p_cڌ_gs * ; 500 DBT * c ; 501 eid ; 503 DBT da_dbt ; 504 DB_LOG * db ; 505 DB_LSN l ; 506 DB_REP * db_p ; 507 LOG * ; 508 REP * p ; 509 REP_OLD_VOTE_INFO * ovi ; 510 __p_eg_gs eg_g ; 511 __p_ve_fo_gs tmpvi , * vi ; 512 u_t32_t eg ; 513 eed , ma , t ; 514 u_t8_t buf [ __REP_MAXMSG_SIZE ]; 515 size_t n ; 517 `COMPQUIET ( eg , 0); 519 eed = t = 0; 520 db_p = v -> p_hd ; 521 p = db_p -> gi ; 522 db = v -> lg_hd ; 523 = db -> gfo . imy ; 525 i( `F_ISSET ( p , REP_F_MASTER )) { 526 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Mastereceived vote")); 527 `LOG_SYSTEM_LOCK ( v ); 528 l = ->lsn; 529 `LOG_SYSTEM_UNLOCK ( v ); 530 () `__p_nd_mesge ( v , 531 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 532 i( `IS_USING_LEASES ( v )) 533 t = `__p_a_esh ( v ); 534 ( t ); 541 i( -> p_vsi < DB_REPVERSION_47 ) { 542 ovi = ( REP_OLD_VOTE_INFO *) c -> da ; 543 tmpvi . eg = ovi ->egen; 544 tmpvi . nses = ( u_t32_t ) ovi ->nsites; 545 tmpvi . nves = ( u_t32_t ) ovi ->nvotes; 546 tmpvi . iܙy = ( u_t32_t ) ovi ->priority; 547 tmpvi . tbak = ovi ->tiebreaker; 549 i(( t = `__p_ve_fo_unmsh ( v , 550 & tmpvi , c -> da ,ec-> size , NULL )) != 0) 551 ( t ); 552 vi = & tmpvi ; 553 `REP_SYSTEM_LOCK ( v ); 561 `RPRINT ( v , DB_VERB_REP_ELECT , 562 ( v , "Received vote1gen %lu,gen %lu", 563 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 564 i( vi -> eg < p ->egen) { 565 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 567 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 568 eg_g . eg = p ->egen; 569 `REP_SYSTEM_UNLOCK ( v ); 570 i( p -> vsi < DB_REPVERSION_47 ) 571 `DB_INIT_DBT ( da_dbt , & eg_g . eg , 572 ( eg_g . eg )); 574 i(( t = `__p_eg_msh ( v , 575 & eg_g , buf , __REP_EGEN_SIZE , & n )) != 0) 576 ( t ); 577 `DB_INIT_DBT ( da_dbt , buf , n ); 579 () `__p_nd_mesge ( v , 580 eid , REP_ALIVE , & -> l , & da_dbt , 0, 0); 581 ( t ); 583 i( vi -> eg > p ->egen) { 584 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 586 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 587 `__p_e_de ( v , p , 0); 588 p -> eg = vi ->egen; 589 `F_SET ( p , REP_F_EGENUPDATE ); 597 i(! `IN_ELECTION_TALLY ( p )) { 598 `F_SET ( p , REP_F_TALLY ); 599 p -> nses = vi ->nsites; 600 p -> nves = vi ->nvotes; 602 i( vi -> nses > p ->nsites) 603 p -> nses = vi ->nsites; 604 i( vi -> nves > p ->nvotes) 605 p -> nves = vi ->nvotes; 612 i( p -> ses + 1 >-> nses ) 613 p -> nses =-> ses + 1; 614 i( p -> nses >-> ases && 615 ( t = `__p_grow_ses ( v , p -> nses )) != 0) { 616 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 617 "Grow setued %d", t )); 618 r ; 624 i( `F_ISSET ( p , REP_F_EPHASE2 )) { 625 `RPRINT ( v , DB_VERB_REP_ELECT , 626 ( v , "Inhase 2, ignoring vote1")); 627 r ; 634 i(( t = `__p_y ( v , p , eid , &p-> ses , 635 vi -> eg , p -> y_off )) != 0) { 636 `RPRINT ( v , DB_VERB_REP_ELECT , 637 ( v , "Tlyued %d, se%d", t , p -> ses )); 638 t = 0; 639 r ; 641 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 643 eid , ( u_lg ) vi -> iܙy , 644 `F_ISSET ( , REPCTL_ELECTABLE ) ? "ELECTABLE" : "", 645 ( u_lg ) -> g , (u_lg) vi -> eg , 646 ( u_lg ) -> l . fe , (u_lgp->l. offt )); 647 i( p -> ses > 1) 648 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 650 p -> wr , ( u_lg -> w_iܙy , 651 ( u_lg ) p -> w_g ,-> ses , 652 ( u_lg ) p -> w_l . fe , 653 ( u_lg ) p -> w_l . offt )); 655 `__p_cmp_ve ( v , p , eid , & -> l , vi -> iܙy , 656 -> g , vi -> tbak ,p-> ags ); 662 i(! `IN_ELECTION ( p )) { 663 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 664 "N iei, buived ve1 0x%x", p -> ags )); 665 t = DB_REP_HOLDELECTION ; 666 r ; 669 ma = p -> wr ; 670 l = p -> w_l ; 671 i( `IS_PHASE1_DONE ( p )) { 672 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Phase1lection done")); 673 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Voting for %d%s", 674 ma , ma = p -> eid ? "(self)" : "")); 675 eg = p ->egen; 676 `F_SET ( p , REP_F_EPHASE2 ); 677 `F_CLR ( p , REP_F_EPHASE1 ); 678 i( ma = p -> eid ) { 679 () `__p_y ( v , p ,-> eid , 680 & p -> ves , eg ,-> v2y_off ); 681 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 683 p -> ves ,-> nves )); 684 i( `I_HAVE_WON ( p ,-> wr )) { 685 `__p_e_ma ( v , p ); 686 eed = 1; 688 r ; 690 `REP_SYSTEM_UNLOCK ( v ); 693 `__p_nd_ve ( v , NULL , 0, 0, 0, 0, eg , 694 ma , REP_VOTE2 , 0); 696 r : `REP_SYSTEM_UNLOCK ( v ); 697 i( eed ) 698 t = `__p_fe_eed ( v , p , eg ); 699 ( t ); 700 } } 709 $__p_ve2 ( v , , c , eid ) 710 ENV * v ; 711 __p_cڌ_gs * ; 712 DBT * c ; 713 eid ; 715 DB_LOG * db ; 716 DB_LSN l ; 717 DB_REP * db_p ; 718 LOG * ; 719 REP * p ; 720 REP_OLD_VOTE_INFO * ovi ; 721 __p_ve_fo_gs tmpvi , * vi ; 722 u_t32_t eg ; 723 t ; 725 t = 0; 726 db_p = v -> p_hd ; 727 p = db_p -> gi ; 728 db = v -> lg_hd ; 729 = db -> gfo . imy ; 731 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Weeceived vote%s", 732 `F_ISSET ( p , REP_F_MASTER ) ? " (master)" : "")); 733 i( `F_ISSET ( p , REP_F_MASTER )) { 734 `LOG_SYSTEM_LOCK ( v ); 735 l = ->lsn; 736 `LOG_SYSTEM_UNLOCK ( v ); 737 `STAT ( p -> . _eis_w ++); 738 () `__p_nd_mesge ( v , 739 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 740 i( `IS_USING_LEASES ( v )) 741 t = `__p_a_esh ( v ); 742 ( t ); 745 `REP_SYSTEM_LOCK ( v ); 746 eg = p ->egen; 749 `DB_ASSERT ( v , p -> iܙy != 0); 763 i( -> p_vsi < DB_REPVERSION_47 ) { 764 ovi = ( REP_OLD_VOTE_INFO *) c -> da ; 765 tmpvi . eg = ovi ->egen; 766 tmpvi . nses = ( u_t32_t ) ovi ->nsites; 767 tmpvi . nves = ( u_t32_t ) ovi ->nvotes; 768 tmpvi . iܙy = ( u_t32_t ) ovi ->priority; 769 tmpvi . tbak = ovi ->tiebreaker; 771 i(( t = `__p_ve_fo_unmsh ( v , 772 & tmpvi , c -> da ,ec-> size , NULL )) != 0) 773 ( t ); 774 vi = & tmpvi ; 775 i(! `IN_ELECTION_TALLY ( p && vi -> eg >=ep->egen) { 776 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 778 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 779 t = DB_REP_HOLDELECTION ; 780 r ; 803 i( vi -> eg ! p ->egen) { 804 `RPRINT ( v , DB_VERB_REP_ELECT , 805 ( v , "Bad votegen %lu. Mine %lu", 806 ( u_lg ) vi -> eg , (u_lg) p ->egen)); 807 t = 0; 808 r ; 814 i(( t = `__p_y ( v , p , eid , &p-> ves , 815 vi -> eg , p -> v2y_off )) != 0) { 816 t = 0; 817 r ; 819 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Counted vote %d of %d", 820 p -> ves ,-> nves )); 821 i( `I_HAVE_WON ( p ,-> wr )) { 822 `__p_e_ma ( v , p ); 823 t = DB_REP_NEWMASTER ; 826 r : `REP_SYSTEM_UNLOCK ( v ); 827 i( t = DB_REP_NEWMASTER ) 828 t = `__p_fe_eed ( v , p , eg ); 829 ( t ); 830 } } 841 $__p_y ( v , p , eid , coup , eg , vtoff ) 842 ENV * v ; 843 REP * p ; 844 eid ; 845 u_t32_t * coup ; 846 u_t32_t eg ; 847 roff_t vtoff ; 849 REP_VTALLY * y , * v ; 850 u_t32_t i ; 852 y = `R_ADDR ( v -> gfo , vtoff ); 853 v = & y [0]; 854 i = 0; i < * coup ;) { 865 i( v -> eid ==id) { 866 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 868 i , v -> eid , ( u_lg )v-> eg , 869 eid , ( u_lg ) eg )); 870 i( v -> eg >=gen) 873 v -> eg =gen; 877 i ++; 878 v = & y [ i ]; 885 `RPRINT ( v , DB_VERB_REP_ELECT , (env, "Tallying VOTE%c[%d] (%d, %lu)", 886 vtoff = p -> y_off ? '1' : '2', i , eid , ( u_lg ) eg )); 888 v -> eid =id; 889 v -> eg =gen; 890 (* coup )++; 892 } } 901 $__p_cmp_ve ( v , p , eid , lp , iܙy , g , tbak , ags ) 902 ENV * v ; 903 REP * p ; 904 eid ; 905 DB_LSN * lp ; 906 u_t32_t iܙy ; 907 u_t32_t ags , g , tbak ; 909 cmp ; 911 cmp = `LOG_COMPARE ( lp , & p -> w_l ); 916 i( p -> ses > 1 && 917 ( iܙy !0 || `LF_ISSET ( REPCTL_ELECTABLE ))) { 932 i(( iܙy !0 && p -> w_iܙy == 0) || 933 ((( iܙy =0 && p -> w_iܙy == 0) || 934 ( iܙy !0 && p -> w_iܙy !0)&& cmp > 0) || 935 ( cmp =0 && ( iܙy > p -> w_iܙy || 936 ( iܙy = p -> w_iܙy && 937 ( tbak > p -> w_tbak ))))) { 938 `RPRINT ( v , DB_VERB_REP_ELECT , 939 ( v , "Acceptingew vote")); 940 p -> wr = eid ; 941 p -> w_iܙy = iܙy ; 942 p -> w_l = * lp ; 943 p -> w_g = g ; 944 p -> w_tbak = tbak ; 946 } i( p -> ses == 1) { 947 i( iܙy !0 || `LF_ISSET ( REPCTL_ELECTABLE )) { 949 p -> wr = eid ; 950 p -> w_iܙy = iܙy ; 951 p -> w_g = g ; 952 p -> w_l = * lp ; 953 p -> w_tbak = tbak ; 955 p -> wr = DB_EID_INVALID ; 956 p -> w_iܙy = 0; 957 p -> w_g = 0; 958 `ZERO_LSN ( p -> w_l ); 959 p -> w_tbak = 0; 962 } } 970 $__p_e_ ( v , nses , nves , begp , ٮly ) 971 ENV * v ; 972 u_t32_t nses , nves ; 973 * begp ; 974 u_t32_t * ٮly ; 976 DB_LOG * db ; 977 DB_LSN l ; 978 DB_REP * db_p ; 979 LOG * ; 980 REP * p ; 981 t ; 983 db_p = v -> p_hd ; 984 p = db_p -> gi ; 986 t = 0; 989 `STAT ( p -> . _eis ++); 992 i( `F_ISSET ( p , REP_F_MASTER )) { 993 db = v -> lg_hd ; 994 = db -> gfo . imy ; 995 `LOG_SYSTEM_LOCK ( v ); 996 l = ->lsn; 997 `LOG_SYSTEM_UNLOCK ( v ); 998 () `__p_nd_mesge ( v , 999 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 1000 i( `IS_USING_LEASES ( v )) 1001 t = `__p_a_esh ( v ); 1002 `STAT ( p -> . _eis_w ++); 1003 ( DB_REP_NEWMASTER ); 1006 `REP_SYSTEM_LOCK ( v ); 1007 i( ٮly ! NULL ) 1008 * ٮly = `F_ISSET ( p , REP_F_TALLY ); 1009 * begp = `IN_ELECTION ( p || `F_ISSET ԕ, REP_F_INREPELECT ); 1010 i(!* begp ) { 1017 i( nses > p -> ases && 1018 ( t = `__p_grow_ses ( v , nses )) != 0) 1019 r ; 1020 `DB_ENV_TEST_RECOVERY ( v , DB_TEST_ELECTINIT , t , NULL ); 1021 `F_SET ( p , REP_F_INREPELECT ); 1022 `F_CLR ( p , REP_F_EGENUPDATE ); 1028 i(! `IN_ELECTION_TALLY ( p )) { 1029 p -> nses =sites; 1030 p -> nves =votes; 1032 i( nses > p ->nsites) 1033 p -> nses =sites; 1034 i( nves > p ->nvotes) 1035 p -> nves =votes; 1038 DB_TEST_RECOVERY_LABEL 1039 r : `REP_SYSTEM_UNLOCK ( v ); 1040 ( t ); 1041 } } 1049 $__p_e_ma ( v , p ) 1050 ENV * v ; 1051 REP * p ; 1058 p -> ma_id =-> eid ; 1060 i( `F_ISSET ( p , REP_F_MASTERELECT | REP_F_MASTER )) { 1065 `F_SET ( p , REP_F_MASTERELECT ); 1066 `STAT ( p -> . _eis_w ++); 1068 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 1070 p -> ma_id , ( u_lg -> g )); 1071 } } 1074 $__p_fe_eed ( v , p , eg ) 1075 ENV * v ; 1076 REP * p ; 1077 u_t32_t eg ; 1079 `REP_EVENT_LOCK ( v ); 1080 i( p -> nifd_eg < eg ) { 1081 `__p_fe_evt ( v , DB_EVENT_REP_ELECTED , NULL ); 1082 p -> nifd_eg = eg ; 1084 `REP_EVENT_UNLOCK ( v ); 1086 } } 1092 #SLEEPTIME ( timeout ) \ 1093 ( timeout > 5000000? 500000 : (imeou>10?imeou/ 10 : 1); ) 1096 $__p_wa ( v , timeou , eidp , fu_e , ags ) 1097 ENV * v ; 1098 db_timeout_t * timeou ; 1099 * eidp , fu_e ; 1100 u_t32_t ags ; 1102 DB_REP * db_p ; 1103 REP * p ; 1104 de , echg , pha_ov , t ; 1105 u_t32_t eg , ime , ٮ , timeout ; 1107 db_p = v -> p_hd ; 1108 p = db_p -> gi ; 1109 eg = p ->egen; 1110 de = echg = pha_ov = t = 0; 1112 timeout = * timeou ; 1118 ime = `SLEEPTIME ( timeout ); 1119 ٮ = 0; 1120 ٮ < timeout ) { 1121 `__os_yld ( v , 0, ime ); 1122 ٮ + ime ; 1123 `REP_SYSTEM_LOCK ( v ); 1130 i( fu_e && `F_ISSET ( p , REP_F_GROUP_ESTD )) { 1131 * timeou = p -> e_timeout ; 1132 timeout = * timeou ; 1143 i( ٮ > timeout ) { 1144 de = 1; 1145 t = DB_TIMEOUT ; 1147 ime = `SLEEPTIME ( timeout ); 1150 echg = eg ! p ->egen; 1151 pha_ov = ! `F_ISSET ( p , ags ); 1170 i( pha_ov && echg && 1171 ( `IN_ELECTION_TALLY ( p ) || 1172 `F_ISSET ( p , REP_F_EGENUPDATE ))) { 1173 de = 1; 1174 `F_CLR ( p , REP_F_EGENUPDATE ); 1175 t = DB_REP_EGENCHG ; 1176 } i( pha_ov ) { 1177 * eidp = p -> ma_id ; 1178 de = 1; 1179 t = 0; 1181 `REP_SYSTEM_UNLOCK ( v ); 1183 i( de ) 1184 ( t ); 1186 ( DB_TIMEOUT ); 1187 } } @../rep/rep_lease.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 14 __p_fd_y __P (( ENV *, REP *, , REP_LEASE_ENTRY **)); 26 $__p_upde_g ( v , ts ) 27 ENV * v ; 28 db_timeec * ts ; 30 DBT a_dbt ; 31 DB_LOG * db ; 32 DB_REP * db_p ; 33 LOG * ; 34 REP * p ; 35 __p_g_fo_gs gi ; 36 db_timeec mytime ; 37 u_t8_t buf [ __REP_GRANT_INFO_SIZE ]; 38 t ; 39 size_t n ; 41 db_p = v -> p_hd ; 42 p = db_p -> gi ; 43 db = v -> lg_hd ; 44 = db -> gfo . imy ; 45 `timeecr (& mytime ); 51 `__os_gtime ( v , & mytime , 1); 52 `timeedd (& mytime , & p -> a_duti ); 53 `REP_SYSTEM_LOCK ( v ); 58 i( `IN_ELECTION ( p )) { 59 `REP_SYSTEM_UNLOCK ( v ); 62 i( `timeeccmp (& mytime , & p -> g_expe , >)) 63 p -> g_expe = mytime ; 64 `REP_SYSTEM_UNLOCK ( v ); 70 gi . msg_c = ( u_t32_t ) ts -> tv_c ; 71 gi . msg_nc = ( u_t32_t ) ts -> tv_nc ; 73 i(( t = `__p_g_fo_msh ( v , & gi , buf , 74 __REP_GRANT_INFO_SIZE , & n )) != 0) 75 ( t ); 76 `DB_INIT_DBT ( a_dbt , buf , n ); 77 () `__p_nd_mesge ( v , p -> ma_id , REP_LEASE_GRANT , 78 & -> max_rm_l , & a_dbt , 0, 0); 80 } } 91 $__p_i_ged ( v ) 92 ENV * v ; 94 DB_REP * db_p ; 95 REP * p ; 96 db_timeec mytime ; 98 db_p = v -> p_hd ; 99 p = db_p -> gi ; 103 `timeecr (& mytime ); 104 `__os_gtime ( v , & mytime , 1); 106 ( `timeeccmp (& mytime , & p -> g_expe , <=) ? 1 : 0); 107 } } 118 $__p_a_b_loc ( v , nses ) 119 ENV * v ; 120 u_t32_t nses ; 122 REGENV * nv ; 123 REGINFO * f ; 124 REP * p ; 125 REP_LEASE_ENTRY * , * b ; 126 * a , t ; 127 u_t32_t i ; 129 p = v -> p_hd -> gi ; 131 f = v -> gfo ; 132 nv = f -> imy ; 133 `MUTEX_LOCK ( v , nv -> mtx_gv ); 134 i(( t = `__v_loc ( f , ( size_t ) nses * ( REP_LEASE_ENTRY ), 135 & a )) == 0) { 136 i( p -> a_off ! INVALID_ROFF ) 137 `__v_loc_ ( f , 138 `R_ADDR ( f , p -> a_off )); 139 p -> a_off = `R_OFFSET ( f , a ); 141 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 142 b = `R_ADDR ( f , p -> a_off ); 143 i = 0; i < nses ; i++) { 144 = & b [ i ]; 145 -> eid = DB_EID_INVALID ; 146 `timeecr (& -> t_time ); 147 `timeecr (& -> d_time ); 148 `ZERO_LSN ( -> a_l ); 150 ( t ); 151 } } 160 $__p_a_g ( v , , c , eid ) 161 ENV * v ; 162 __p_cڌ_gs * ; 163 DBT * c ; 164 eid ; 166 DB_REP * db_p ; 167 REP * p ; 168 __p_g_fo_gs gi ; 169 REP_LEASE_ENTRY * ; 170 db_timeec msg_time ; 171 t ; 173 db_p = v -> p_hd ; 174 p = db_p -> gi ; 175 i(( t = `__p_g_fo_unmsh ( v , 176 & gi , c -> da ,ec-> size , NULL )) != 0) 177 ( t ); 178 `timeect (& msg_time , gi . msg_c , gi. msg_nc ); 179 = NULL ; 185 `REP_SYSTEM_LOCK ( v ); 186 `__p_fd_y ( v , p , eid , & ); 191 `DB_ASSERT ( v , ! NULL ); 196 `RPRINT ( v , DB_VERB_REP_LEASE , 197 ( v , "lease_grant: grant msgime %lu %lu", 198 ( u_lg ) msg_time . tv_c , (u_lg)msg_time. tv_nc )); 199 i( -> eid = DB_EID_INVALID || 200 `timeeccmp (& msg_time , & -> t_time , >)) { 201 -> eid =id; 202 -> t_time = msg_time ; 203 -> d_time =e-> t_time ; 204 `timeedd (& -> d_time , & p -> a_duti ); 205 `RPRINT ( v , DB_VERB_REP_LEASE , (env, 207 -> eid , ( u_lg e-> t_time . tv_c , (u_lge->t_time. tv_nc , 208 ( u_lg ) -> d_time . tv_c , (u_lge->d_time. tv_nc , 209 ( u_lg ) p -> a_duti . tv_c , (u_lg->a_duti. tv_nc )); 215 `DB_ASSERT ( v , `LOG_COMPARE (& -> l , & -> a_l ) >= 0); 216 -> a_l = -> l ; 218 `REP_SYSTEM_UNLOCK ( v ); 220 } } 226 $__p_fd_y ( v , p , eid , p ) 227 ENV * v ; 228 REP * p ; 229 eid ; 230 REP_LEASE_ENTRY ** p ; 232 REGINFO * f ; 233 REP_LEASE_ENTRY * , * b ; 234 u_t32_t i ; 236 f = v -> gfo ; 237 b = `R_ADDR ( f , p -> a_off ); 239 i = 0; i < p -> nses ; i++) { 240 = & b [ i ]; 245 i( -> eid =eid ||e->eid = DB_EID_INVALID ) { 246 * p = ; 251 } } 263 $__p_a_check ( v , esh ) 264 ENV * v ; 265 esh ; 267 DB_LOG * db ; 268 DB_LSN a_l ; 269 DB_REP * db_p ; 270 LOG * ; 271 REGINFO * f ; 272 REP * p ; 273 REP_LEASE_ENTRY * , * b ; 274 db_timeec cuime ; 275 t , s ; 276 u_t32_t i , m_as , vid_as ; 278 f = v -> gfo ; 279 s = 0; 280 y : 281 t = 0; 282 db_p = v -> p_hd ; 283 p = db_p -> gi ; 284 db = v -> lg_hd ; 285 = db -> gfo . imy ; 286 `LOG_SYSTEM_LOCK ( v ); 287 a_l = -> max_rm_l ; 288 `LOG_SYSTEM_UNLOCK ( v ); 289 `REP_SYSTEM_LOCK ( v ); 290 m_as = p -> nses / 2; 292 `__os_gtime ( v , & cuime , 1); 293 `RPRINT ( v , DB_VERB_REP_LEASE , 294 ( v , "lease_check: min_leases %lu curtime %lu %lu", 295 ( u_lg ) m_as , (u_lg) cuime . tv_c , 296 ( u_lg ) cuime . tv_nc )); 297 b = `R_ADDR ( f , p -> a_off ); 298 i = 0, vid_as = 0; 299 i < p -> nses && vid_as < m_as ; i++) { 300 = & b [ i ]; 307 i( -> eid ! DB_EID_INVALID ) { 308 `RPRINT ( v , DB_VERB_REP_LEASE , (env, 310 ( u_lg ) vid_as , -> eid , 311 ( u_lg ) -> a_l . fe , 312 ( u_lg ) -> a_l . offt )); 313 `RPRINT ( v , DB_VERB_REP_LEASE , 314 ( v , "lease_check:ndtime %lu %lu", 315 ( u_lg ) -> d_time . tv_c , 316 ( u_lg ) -> d_time . tv_nc )); 318 i( -> eid ! DB_EID_INVALID && 319 `timeeccmp (& -> d_time , & cuime , >=) && 320 `LOG_COMPARE (& -> a_l , &lease_lsn) == 0) 321 vid_as ++; 323 `REP_SYSTEM_UNLOCK ( v ); 328 `RPRINT ( v , DB_VERB_REP_LEASE , (env, "valid %lu, min %lu", 329 ( u_lg ) vid_as , (u_lg) m_as )); 330 i( vid_as < m_as ) { 331 i(! esh ) 332 t = DB_REP_LEASE_EXPIRED ; 340 i(( t = `__p_a_esh ( v )) == 0) { 341 i( s < LEASE_REFRESH_TRIES ) { 349 i( s > 0) 350 `__os_yld ( v , 1, 0); 351 s ++; 352 y ; 354 t = DB_REP_LEASE_EXPIRED ; 359 ( t ); 360 } } 370 $__p_a_esh ( v ) 371 ENV * v ; 373 DBT c ; 374 DB_LOGC * logc ; 375 DB_LSN l ; 376 DB_REP * db_p ; 377 REP * p ; 378 t , t_t ; 380 db_p = v -> p_hd ; 381 p = db_p -> gi ; 383 i(( t = `__log_curs ( v , & logc )) != 0) 384 ( t ); 386 `memt (& c , 0, (rec)); 387 `memt (& l , 0, (lsn)); 391 i(( t = `__p_log_backup ( v , p , logc , & l )) != 0) 392 r ; 394 i(( t = `__logc_g ( logc , & l , & c , DB_CURRENT )) != 0) 395 r ; 397 i(( t = `__p_nd_mesge ( v , 398 DB_EID_BROADCAST , REP_LOG , & l , & c , REPCTL_PERM , 0)) != 0) { 402 () `__p_a_expe ( v , 0); 403 t = DB_REP_LEASE_EXPIRED ; 406 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 407 t = t_t ; 408 ( t ); 409 } } 418 $__p_a_expe ( v , locked ) 419 ENV * v ; 420 locked ; 422 DB_REP * db_p ; 423 REGINFO * f ; 424 REP * p ; 425 REP_LEASE_ENTRY * , * b ; 426 t ; 427 u_t32_t i ; 429 t = 0; 430 db_p = v -> p_hd ; 431 p = db_p -> gi ; 432 f = v -> gfo ; 434 i(! locked ) 435 `REP_SYSTEM_LOCK ( v ); 436 i( p -> a_off ! INVALID_ROFF ) { 437 b = `R_ADDR ( f , p -> a_off ); 443 i = 0; i < p -> nses ; i++) { 444 = & b [ i ]; 445 -> d_time =e-> t_time ; 448 i(! locked ) 449 `REP_SYSTEM_UNLOCK ( v ); 450 ( t ); 451 } } 460 db_timeout_t 461 $__p_a_watime ( v ) 462 ENV * v ; 464 DB_REP * db_p ; 465 REP * p ; 466 db_timeec exime , mytime ; 467 db_timeout_t to ; 469 db_p = v -> p_hd ; 470 p = db_p -> gi ; 471 exime = p -> g_expe ; 472 to = 0; 479 `RPRINT ( v , DB_VERB_REP_LEASE , (env, 481 ( u_lg ) exime . tv_c , (u_lgxime. tv_nc , 482 ( u_lg ) p -> a_timeout )); 483 i(! `timeecist (& exime )) 484 to = p -> a_timeout ; 486 `__os_gtime ( v , & mytime , 1); 487 `RPRINT ( v , DB_VERB_REP_LEASE , (env, 489 ( u_lg ) mytime . tv_c , (u_lg)mytime. tv_nc , 490 ( u_lg ) exime . tv_c , (u_lgxime. tv_nc )); 491 i( `timeeccmp (& mytime , & exime , <=)) { 497 `timeecsub (& exime , & mytime ); 498 `DB_TIMESPEC_TO_TIMEOUT ( to , & exime , 1); 501 ( to ); 502 } } @../rep/rep_log.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 14 __p_chk_wfe __P (( ENV *, DB_LOGC *, REP *, 15 __p_cڌ_gs *, )); 24 $__p_eq ( v , , eid ) 25 ENV * v ; 26 __p_cڌ_gs * ; 27 eid ; 29 DBT da_dbt , wfedbt ; 30 DB_LOGC * logc ; 31 DB_LSN log_d , df ; 32 DB_REP * db_p ; 33 REP * p ; 34 REP_BULK bulk ; 35 REP_THROTTLE h ; 36 __p_wfe_gs nf_gs ; 37 u_t bulkoff ; 38 u_t32_t bulkags , d_ag , ags , u_bulk ; 39 t , t_t ; 40 u_t8_t buf [ __REP_NEWFILE_SIZE ]; 41 size_t n ; 43 t = 0; 44 db_p = v -> p_hd ; 45 p = db_p -> gi ; 46 d_ag = 0; 48 i(( t = `__log_curs ( v , & logc )) != 0) 49 ( t ); 50 `memt (& da_dbt , 0, (data_dbt)); 61 u_bulk = `FLD_ISSET ( p -> cfig , REP_C_BULK ); 62 bulk . addr = NULL ; 63 i( u_bulk && ( t = `__p_bulk_loc ( v , & bulk , eid , 64 & bulkoff , & bulkags , REP_BULK_LOG )) != 0) 65 r ; 66 `memt (& h , 0, (repth)); 67 `REP_SYSTEM_LOCK ( v ); 68 h . gbys = p ->gbytes; 69 h . bys = p ->bytes; 70 df = h . l = ->lsn; 71 h . ty = REP_LOG ; 72 h . da_dbt = &data_dbt; 73 `REP_SYSTEM_UNLOCK ( v ); 80 i(( t = `__logc_g ( logc , & log_d , & da_dbt , DB_LAST )) != 0) { 81 i( t = DB_NOTFOUND && `F_ISSET ( p , REP_F_MASTER )) 82 t = 0; 83 r ; 86 ags = `IS_ZERO_LSN ( -> l ) || 87 `IS_INIT_LSN ( -> l ? DB_FIRST : DB_SET ; 95 t = `__logc_g ( logc , & h . l , & da_dbt , ags ); 103 i( t =0 && h . l . fe !1 && ags = DB_FIRST ) { 104 () `__p_nd_mesge ( v , eid , 105 REP_VERIFY_FAIL , & h . l , NULL , 0, 0); 106 r ; 113 i( t = DB_NOTFOUND ) { 114 t = `__p_chk_wfe ( v , logc , p , , eid ); 120 i( t == 0) 121 t = `__logc_g ( logc , & h . l , 122 & da_dbt , DB_CURRENT ); 123 i( t = DB_NOTFOUND && `F_ISSET ( p , REP_F_MASTER )) { 124 t = 0; 125 r ; 127 i( t != 0) 128 r ; 136 d_ag = 0; 137 t =0 && h . ty ! REP_LOG_MORE && d_ag == 0; 138 t = `__logc_g ( logc , & h . l , & da_dbt , DB_NEXT )) { 143 i( h . l . fe ! df .file) { 144 i(( t = `__logc_vsi ( logc , & nf_gs . vsi )) != 0) 146 `memt (& wfedbt , 0, (newfiledbt)); 147 i( p -> vsi < DB_REPVERSION_47 ) 148 `DB_INIT_DBT ( wfedbt , & nf_gs . vsi , 149 ( nf_gs . vsi )); 151 i(( t = `__p_wfe_msh ( v , & nf_gs , 152 buf , __REP_NEWFILE_SIZE , & n )) != 0) 153 r ; 154 `DB_INIT_DBT ( wfedbt , buf , n ); 156 () `__p_nd_mesge ( v , 157 eid , REP_NEWFILE , & df , & wfedbt , 158 REPCTL_RESEND , 0); 168 d_ag = ( `LOG_COMPARE (& h . l , & log_d ) >= 0 && 169 ( `F_ISSET ( p , REP_F_MASTER ) || 170 p -> . _tup_come )) ? 171 REPCTL_LOG_END : 0; 177 i( u_bulk ) 178 t = `__p_bulk_mesge ( v , & bulk , & h , 179 & h . l , & da_dbt , ( REPCTL_RESEND | d_ag )); 180 i(! u_bulk || t = DB_REP_BULKOVF ) 181 t = `__p_nd_thrَe ( v , 182 eid , & h , 0, d_ag ); 183 i( t != 0) 189 df = h . l ; 190 df . offt + logc -> n ; 193 i( t = DB_NOTFOUND || = DB_REP_UNAVAIL ) 194 t = 0; 199 r : 200 i( bulk . addr ! NULL && ( t_t = `__p_bulk_ ( v , &bulk, 201 ( REPCTL_RESEND | d_ag ))!0 && t == 0) 202 t = t_t ; 203 i(( t_t = `__logc_o ( logc )!0 && t == 0) 204 t = t_t ; 205 ( t ); 206 } } 216 $__p_log ( v , , , c , vime , t_lp ) 217 ENV * v ; 218 DB_THREAD_INFO * ; 219 __p_cڌ_gs * ; 220 DBT * c ; 221 time_t vime ; 222 DB_LSN * t_lp ; 224 DB_LOG * db ; 225 DB_LSN ϡ_l , l ; 226 DB_REP * db_p ; 227 LOG * ; 228 REP * p ; 229 is_dup , ma , t ; 231 is_dup = t = 0; 232 db_p = v -> p_hd ; 233 p = db_p -> gi ; 234 db = v -> lg_hd ; 235 = db -> gfo . imy ; 237 t = `__p_y ( v , , , c , t_lp , & is_dup , & ϡ_l ); 238 t ) { 243 DB_REP_LOGREADY : 244 i(( t = 245 `__p_logady ( v , p , vime , & ϡ_l )) != 0) 246 out ; 256 DB_REP_ISPERM : 257 DB_REP_NOTPERM : 259 i( is_dup ) 260 out ; 267 out ; 269 i( -> y = REP_LOG_MORE ) { 270 ma = p -> ma_id ; 282 `MUTEX_LOCK ( v , p -> mtx_db ); 283 l = -> ady_l ; 284 i( `LOG_COMPARE (& -> l , &lsn) > 0) 285 l = ->lsn; 297 i( ma = DB_EID_INVALID ) { 298 t = 0; 299 `MUTEX_UNLOCK ( v , p -> mtx_db ); 300 out ; 307 i( `IS_ZERO_LSN ( -> wag_l )) 308 -> wa_ts = p -> max_g ; 309 t = `__p_logg_q ( v , p , & l , REP_GAP_FORCE ); 310 `MUTEX_UNLOCK ( v , p -> mtx_db ); 312 out : 313 ( t ); 314 } } 324 $__p_bulk_log ( v , , , c , vime , t_lp ) 325 ENV * v ; 326 DB_THREAD_INFO * ; 327 __p_cڌ_gs * ; 328 DBT * c ; 329 time_t vime ; 330 DB_LSN * t_lp ; 332 DB_LSN ϡ_l ; 333 DB_REP * db_p ; 334 REP * p ; 335 t ; 337 db_p = v -> p_hd ; 338 p = db_p -> gi ; 340 t = `__log_p_l ( v , , , c , t_lp , & ϡ_l ); 341 t ) { 346 DB_REP_LOGREADY : 347 t = `__p_logady ( v , p , vime , & ϡ_l ); 355 ( t ); 356 } } 365 $__p_logq ( v , , c , eid ) 366 ENV * v ; 367 __p_cڌ_gs * ; 368 DBT * c ; 369 eid ; 371 DBT da_dbt , wfedbt ; 372 DB_LOGC * logc ; 373 DB_LSN fl , l , df ; 374 DB_REP * db_p ; 375 REP * p ; 376 REP_BULK bulk ; 377 REP_THROTTLE h ; 378 __p_logq_gs _gs ; 379 __p_wfe_gs nf_gs ; 380 u_t bulkoff ; 381 u_t32_t bulkags , u_bulk ; 382 t , t_t ; 383 u_t8_t buf [ __REP_NEWFILE_SIZE ]; 384 size_t n ; 386 t = 0; 387 db_p = v -> p_hd ; 388 p = db_p -> gi ; 391 `ZERO_LSN ( _gs . dl ); 393 i( c ! NULL &&ec-> size != 0) { 394 i( -> p_vsi < DB_REPVERSION_47 ) 395 _gs . dl = *( DB_LSN *) c -> da ; 396 i(( t = `__p_logq_unmsh ( v , & _gs , 397 c -> da ,ec-> size , NULL )) != 0) 398 ( t ); 399 `RPRINT ( v , DB_VERB_REP_MISC , (env, 401 ( u_lg -> l . fe , (u_lgp->l. offt , 402 ( u_lg ) _gs . dl . fe , 403 ( u_lg ) _gs . dl . offt )); 420 `memt (& da_dbt , 0, (data_dbt)); 421 df = l = ->lsn; 422 i(( t = `__log_curs ( v , & logc )) != 0) 423 ( t ); 424 i(( t = `__logc_g ( logc , & fl , & da_dbt , DB_FIRST )) != 0) 425 r ; 426 t = `__logc_g ( logc , & l , & da_dbt , DB_SET ); 427 i( t == 0) { 428 () `__p_nd_mesge ( v , 429 eid , REP_LOG , & l , & da_dbt , REPCTL_RESEND , 0); 430 df . offt + logc -> n ; 431 } i( t = DB_NOTFOUND ) { 432 i( `LOG_COMPARE (& fl , & -> l ) > 0) { 434 () `__p_nd_mesge ( v , eid , 435 REP_VERIFY_FAIL , & -> l , NULL , 0, 0); 436 t = 0; 437 r ; 439 t = `__p_chk_wfe ( v , logc , p , , eid ); 440 i( t = DB_NOTFOUND ) { 447 i( `F_ISSET ( p , REP_F_MASTER )) { 448 `__db_rx ( v , 450 ( u_lg ) -> l . fe , 451 ( u_lg ) -> l . offt ); 452 t = EINVAL ; 454 t = DB_NOTFOUND ; 458 i( t != 0) 459 r ; 473 u_bulk = `FLD_ISSET ( p -> cfig , REP_C_BULK ); 474 i( u_bulk && ( t = `__p_bulk_loc ( v , & bulk , eid , 475 & bulkoff , & bulkags , REP_BULK_LOG )) != 0) 476 r ; 477 `memt (& h , 0, (repth)); 478 `REP_SYSTEM_LOCK ( v ); 479 h . gbys = p ->gbytes; 480 h . bys = p ->bytes; 481 h . ty = REP_LOG ; 482 h . da_dbt = &data_dbt; 483 `REP_SYSTEM_UNLOCK ( v ); 484 t =0 && c ! NULL &&ec-> size != 0 && 485 h . ty = REP_LOG ) { 486 i(( t = 487 `__logc_g ( logc , & h . l , & da_dbt , DB_NEXT )) != 0) { 493 i( t = DB_NOTFOUND && `F_ISSET ( p , REP_F_MASTER )) 494 t = 0; 497 i( `LOG_COMPARE (& h . l , & _gs . dl ) >= 0) 499 i( h . l . fe ! df .file) { 500 i(( t = `__logc_vsi ( logc , & nf_gs . vsi )) != 0) 502 `memt (& wfedbt , 0, (newfiledbt)); 503 i( p -> vsi < DB_REPVERSION_47 ) 504 `DB_INIT_DBT ( wfedbt , & nf_gs . vsi , 505 ( nf_gs . vsi )); 507 i(( t = `__p_wfe_msh ( v , & nf_gs , 508 buf , __REP_NEWFILE_SIZE , & n )) != 0) 509 r ; 510 `DB_INIT_DBT ( wfedbt , buf , n ); 512 () `__p_nd_mesge ( v , 513 eid , REP_NEWFILE , & df , & wfedbt , 514 REPCTL_RESEND , 0); 521 i( u_bulk ) 522 t = `__p_bulk_mesge ( v , & bulk , & h , 523 & h . l , & da_dbt , REPCTL_RESEND ); 524 i(! u_bulk || t = DB_REP_BULKOVF ) 525 t = `__p_nd_thrَe ( v , eid , & h , 0, 0); 526 i( t != 0) { 528 i( t = DB_REP_UNAVAIL ) 529 t = 0; 536 df = h . l ; 537 df . offt + logc -> n ; 544 i( u_bulk && ( t_t = `__p_bulk_ ( v , & bulk , 545 REPCTL_RESEND )!0 && t == 0) 546 t = t_t ; 547 r : 548 i(( t_t = `__logc_o ( logc )!0 && t == 0) 549 t = t_t ; 550 ( t ); 551 } } 565 $__p_logg_q ( v , p , lp , gags ) 566 ENV * v ; 567 REP * p ; 568 DB_LSN * lp ; 569 u_t32_t gags ; 571 DBT max_l_dbt , * max_l_db ; 572 DB_LOG * db ; 573 DB_LSN xt_l ; 574 LOG * ; 575 __p_logq_gs _gs ; 576 size_t n ; 577 u_t32_t lags , ags , ty ; 578 t ; 579 u_t8_t buf [ __REP_LOGREQ_SIZE ]; 581 db = v -> lg_hd ; 582 = db -> gfo . imy ; 583 i( `FLD_ISSET ( gags , REP_GAP_FORCE )) 584 xt_l = * lp ; 586 xt_l = -> ady_l ; 587 lags = ags = 0; 588 ty = REP_LOG_REQ ; 589 t = 0; 603 i( `FLD_ISSET ( gags , ( REP_GAP_FORCE | REP_GAP_REREQUEST )) || 604 `IS_ZERO_LSN ( -> max_wa_l ) || 605 ( lp ! NULL && `LOG_COMPARE ֢p, & -> max_wa_l ) == 0)) { 606 -> max_wa_l =p-> wag_l ; 614 i( `FLD_ISSET ( gags , REP_GAP_FORCE )) { 615 i( `LOG_COMPARE (& -> max_wa_l , lp ) <= 0) { 616 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) { 617 `DB_ASSERT ( v , `LOG_COMPARE ( lp , 618 & p -> ϡ_l ) <= 0); 619 -> max_wa_l = p -> ϡ_l ; 621 `ZERO_LSN ( -> max_wa_l ); 624 i( `IS_ZERO_LSN ( -> max_wa_l )) 625 ty = REP_ALL_REQ ; 626 `memt (& max_l_dbt , 0, (max_lsn_dbt)); 627 _gs . dl = -> max_wa_l ; 628 i( p -> vsi < DB_REPVERSION_47 ) 629 `DB_INIT_DBT ( max_l_dbt , & -> max_wa_l , 630 ( DB_LSN )); 632 i(( t = `__p_logq_msh ( v , & _gs , buf , 633 __REP_LOGREQ_SIZE , & n )) != 0) 634 r ; 635 `DB_INIT_DBT ( max_l_dbt , buf , n ); 637 max_l_db = & max_l_dbt ; 642 i( `FLD_ISSET ( gags , REP_GAP_REREQUEST )) 643 ags = DB_REP_REREQUEST ; 645 ags = DB_REP_ANYWHERE ; 647 max_l_db = NULL ; 648 -> max_wa_l = xt_l ; 652 ags = DB_REP_REREQUEST ; 654 i( p -> ma_id ! DB_EID_INVALID ) { 655 `STAT ( p -> . _log_queed ++); 656 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) 657 lags = REPCTL_INIT ; 658 () `__p_nd_mesge ( v , p -> ma_id , 659 ty , & xt_l , max_l_db , lags , ags ); 661 () `__p_nd_mesge ( v , DB_EID_BROADCAST , 662 REP_MASTER_REQ , NULL , NULL, 0, 0); 663 r : 664 ( t ); 665 } } 675 $__p_logady ( v , p , vime , ϡ_lp ) 676 ENV * v ; 677 REP * p ; 678 time_t vime ; 679 DB_LSN * ϡ_lp ; 681 t ; 683 i(( t = `__log_ush ( v , NULL )) != 0) 684 out ; 685 i(( t = `__p_vify_mch ( v , ϡ_lp , 686 vime )) == 0) { 687 `REP_SYSTEM_LOCK ( v ); 688 `ZERO_LSN ( p -> f_l ); 690 i( p -> igfo ! NULL ) { 691 `__os_ ( v , p -> igfo ); 692 p -> igfo = NULL ; 695 `F_CLR ( p , REP_F_RECOVER_LOG ); 696 `REP_SYSTEM_UNLOCK ( v ); 698 out : `__db_rx ( v , 700 ( `__v_nic ( v , t )); 702 ( t ); 704 } } 725 $__p_chk_wfe ( v , logc , p , , eid ) 726 ENV * v ; 727 DB_LOGC * logc ; 728 REP * p ; 729 __p_cڌ_gs * ; 730 eid ; 732 DBT da_dbt , wfedbt ; 733 DB_LOG * db ; 734 DB_LSN dl ; 735 LOG * ; 736 __p_wfe_gs nf_gs ; 737 t ; 738 u_t8_t buf [ __REP_NEWFILE_SIZE ]; 739 size_t n ; 741 t = 0; 742 db = v -> lg_hd ; 743 = db -> gfo . imy ; 744 `memt (& da_dbt , 0, (data_dbt)); 745 `LOG_SYSTEM_LOCK ( v ); 746 dl = -> l ; 747 `LOG_SYSTEM_UNLOCK ( v ); 748 i( dl . fe > -> l .file) { 757 dl . fe = -> l .file + 1; 758 dl . offt = 0; 759 i(( t = `__logc_g ( logc , 760 & dl , & da_dbt , DB_SET )) != 0 || 761 ( t = `__logc_g ( logc , 762 & dl , & da_dbt , DB_PREV )) != 0) { 763 `RPRINT ( v , DB_VERB_REP_MISC , (env, 765 ( u_lg ) -> l . fe , 766 ( u_lg ) -> l . offt )); 784 i( `F_ISSET ( p , REP_F_MASTER )) { 785 t = 0; 786 () `__p_nd_mesge ( v , eid , 787 REP_VERIFY_FAIL , & -> l , 788 NULL , 0, 0); 790 t = DB_NOTFOUND ; 792 dl . offt + logc -> n ; 793 i(( t = `__logc_vsi ( logc , 794 & nf_gs . vsi )) == 0) { 795 `memt (& wfedbt , 0, 796 ( wfedbt )); 797 i( p -> vsi < DB_REPVERSION_47 ) 798 `DB_INIT_DBT ( wfedbt , 799 & nf_gs . vsi , 800 ( nf_gs . vsi )); 802 i(( t = `__p_wfe_msh ( v , 803 & nf_gs , buf , __REP_NEWFILE_SIZE , 804 & n )) != 0) 805 ( t ); 806 `DB_INIT_DBT ( wfedbt , buf , n ); 808 () `__p_nd_mesge ( v , eid , 809 REP_NEWFILE , & dl , 810 & wfedbt , REPCTL_RESEND , 0); 814 t = DB_NOTFOUND ; 816 ( t ); 817 } } @../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 (( ENV *)); 19 __p_bt_cmp __P (( DB *, cڡ DBT *, const DBT *)); 20 __p_cfig_m __P (( ENV *, u_t32_t *, u_int32_t *)); 21 u_t32_t __p_cv_vs __P (( ENV *, u_int32_t)); 22 __p_e_ed __P (( ENV *)); 31 $__p_v_ ( dbv ) 32 DB_ENV * dbv ; 34 DB_REP * db_p ; 35 ENV * v ; 36 t ; 38 v = dbv ->env; 40 i(( t = `__os_oc ( v , 1, ( DB_REP ), & db_p )) != 0) 41 ( t ); 43 db_p -> eid = DB_EID_INVALID ; 44 db_p -> bys = REP_DEFAULT_THROTTLE ; 45 `DB_TIMEOUT_TO_TIMESPEC ( DB_REP_REQUEST_GAP , & db_p -> que_g ); 46 `DB_TIMEOUT_TO_TIMESPEC ( DB_REP_MAX_GAP , & db_p -> max_g ); 47 db_p -> e_timeout = 2 * US_PER_SEC ; 48 db_p -> chk_day = 30 * US_PER_SEC ; 49 db_p -> my_iܙy = DB_REP_DEFAULT_PRIORITY ; 54 db_p -> ock_skew = 1; 55 db_p -> ock_ba = 1; 57 #ifde HAVE_REPLICATION_THREADS 58 i(( t = `__pmgr_v_ ( v , db_p )) != 0) { 59 `__os_ ( v , db_p ); 60 ( t ); 64 v -> p_hd = db_p ; 66 } } 75 $__p_v_deroy ( dbv ) 76 DB_ENV * dbv ; 78 ENV * v ; 80 v = dbv ->env; 82 i( v -> p_hd ! NULL ) { 83 #ifde HAVE_REPLICATION_THREADS 84 `__pmgr_v_deroy ( v ,nv-> p_hd ); 86 `__os_ ( v ,nv-> p_hd ); 87 v -> p_hd = NULL ; 89 } } 98 $__p_g_cfig ( dbv , which , p ) 99 DB_ENV * dbv ; 100 u_t32_t which ; 101 * p ; 103 DB_REP * db_p ; 104 ENV * v ; 105 REP * p ; 106 u_t32_t md ; 108 v = dbv ->env; 110 #unde OK_FLAGS 111 #OK_FLAGS \ 112 ( DB_REP_CONF_BULK | DB_REP_CONF_DELAYCLIENT | \ 113 DB_REP_CONF_NOAUTOINIT | DB_REP_CONF_NOWAIT ) ) 115 i( `FLD_ISSET ( which , ~ OK_FLAGS )) 116 ( `__db_ ( v , "DB_ENV->rep_get_config", 0)); 118 db_p = v -> p_hd ; 119 `ENV_NOT_CONFIGURED ( 120 v , db_p -> gi , "DB_ENV->p_g_cfig", DB_INIT_REP ); 122 md = 0; 123 `__p_cfig_m ( v , & which , & md ); 124 i( `REP_ON ( v )) { 125 p = db_p -> gi ; 126 i( `FLD_ISSET ( p -> cfig , md )) 127 * p = 1; 129 * p = 0; 131 i( `FLD_ISSET ( db_p -> cfig , md )) 132 * p = 1; 134 * p = 0; 137 } } 146 $__p_t_cfig ( dbv , which , ) 147 DB_ENV * dbv ; 148 u_t32_t which ; 149 ; 151 DB_LOG * db ; 152 DB_REP * db_p ; 153 DB_THREAD_INFO * ; 154 ENV * v ; 155 LOG * ; 156 REP * p ; 157 REP_BULK bulk ; 158 u_t32_t md , ig ; 159 t ; 161 v = dbv ->env; 162 db_p = v -> p_hd ; 163 t = 0; 165 #unde OK_FLAGS 166 #OK_FLAGS \ 167 ( DB_REP_CONF_BULK | DB_REP_CONF_DELAYCLIENT | DB_REP_CONF_LEASE | \ 168 DB_REP_CONF_NOAUTOINIT | DB_REP_CONF_NOWAIT | DB_REPMGR_CONF_2SITE_STRICT ) ) 170 `ENV_NOT_CONFIGURED ( 171 v , db_p -> gi , "DB_ENV->p_t_cfig", DB_INIT_REP ); 173 i( `FLD_ISSET ( which , ~ OK_FLAGS )) 174 ( `__db_ ( v , "DB_ENV->rep_set_config", 0)); 176 md = 0; 177 `__p_cfig_m ( v , & which , & md ); 179 i( `REP_ON ( v )) { 180 `ENV_ENTER ( v , ); 182 p = db_p -> gi ; 187 i( `FLD_ISSET ( md , REP_C_LEASE )) { 188 i( `F_ISSET ( p , REP_F_START_CALLED )) { 189 `__db_rx ( v , 191 t = EINVAL ; 193 i( == 0) { 194 `__db_rx ( v , 196 t = EINVAL ; 198 i( t != 0) 199 ( t ); 201 `MUTEX_LOCK ( v , p -> mtx_db ); 202 `REP_SYSTEM_LOCK ( v ); 203 ig = p -> cfig ; 204 i( ) 205 `FLD_SET ( p -> cfig , md ); 207 `FLD_CLR ( p -> cfig , md ); 213 db = v -> lg_hd ; 214 = db -> gfo . imy ; 215 i( `FLD_ISSET ( p -> cfig , REP_C_BULK ) && 216 ! `FLD_ISSET ( ig , REP_C_BULK )) 217 db_p -> bulk = `R_ADDR (& db -> gfo , -> bulk_buf ); 218 `REP_SYSTEM_UNLOCK ( v ); 224 i( `FLD_ISSET ( ig , REP_C_BULK ) && 225 ! `FLD_ISSET ( p -> cfig , REP_C_BULK && -> bulk_off != 0) { 226 `memt (& bulk , 0, (bulk)); 227 i( db_p -> bulk = NULL ) 228 bulk . addr = 229 `R_ADDR (& db -> gfo , -> bulk_buf ); 231 bulk . addr = db_p ->bulk; 232 bulk . of = & -> bulk_off ; 233 bulk . n = -> bulk_n ; 234 bulk . ty = REP_BULK_LOG ; 235 bulk . eid = DB_EID_BROADCAST ; 236 bulk . ag = & -> bulk_ags ; 237 t = `__p_nd_bulk ( v , & bulk , 0); 239 `MUTEX_UNLOCK ( v , p -> mtx_db ); 241 `ENV_LEAVE ( v , ); 243 i( ) 244 `FLD_SET ( db_p -> cfig , md ); 246 `FLD_CLR ( db_p -> cfig , md ); 248 ( t ); 249 } } 252 $__p_cfig_m ( v , ag , outag ) 253 ENV * v ; 254 u_t32_t * ag , * outag ; 256 `COMPQUIET ( v , NULL ); 258 i( `FLD_ISSET (* ag , DB_REP_CONF_BULK )) { 259 `FLD_SET (* outag , REP_C_BULK ); 260 `FLD_CLR (* ag , DB_REP_CONF_BULK ); 262 i( `FLD_ISSET (* ag , DB_REP_CONF_DELAYCLIENT )) { 263 `FLD_SET (* outag , REP_C_DELAYCLIENT ); 264 `FLD_CLR (* ag , DB_REP_CONF_DELAYCLIENT ); 266 i( `FLD_ISSET (* ag , DB_REP_CONF_LEASE )) { 267 `FLD_SET (* outag , REP_C_LEASE ); 268 `FLD_CLR (* ag , DB_REP_CONF_LEASE ); 270 i( `FLD_ISSET (* ag , DB_REP_CONF_NOAUTOINIT )) { 271 `FLD_SET (* outag , REP_C_NOAUTOINIT ); 272 `FLD_CLR (* ag , DB_REP_CONF_NOAUTOINIT ); 274 i( `FLD_ISSET (* ag , DB_REP_CONF_NOWAIT )) { 275 `FLD_SET (* outag , REP_C_NOWAIT ); 276 `FLD_CLR (* ag , DB_REP_CONF_NOWAIT ); 278 i( `FLD_ISSET (* ag , DB_REPMGR_CONF_2SITE_STRICT )) { 279 `FLD_SET (* outag , REP_C_2SITE_STRICT ); 280 `FLD_CLR (* ag , DB_REPMGR_CONF_2SITE_STRICT ); 282 } } 312 $__p_t ( dbv , dbt , ags ) 313 DB_ENV * dbv ; 314 DBT * dbt ; 315 u_t32_t ags ; 317 DB * dbp ; 318 DB_LOG * db ; 319 DB_LSN l ; 320 DB_REP * db_p ; 321 DB_THREAD_INFO * ; 322 DB_TXNREGION * gi ; 323 ENV * v ; 324 LOG * ; 325 REGINFO * f ; 326 REP * p ; 327 db_timeout_t tmp ; 328 u_t32_t dvs , ndg_evt , pags , re ; 329 noun , locked , t , re_chg ; 330 t_t ; 332 v = dbv ->env; 334 `ENV_REQUIRES_CONFIG_XX ( 335 v , p_hd , "DB_ENV->p_t", DB_INIT_REP ); 337 db_p = v -> p_hd ; 338 p = db_p -> gi ; 339 f = v -> gfo ; 340 locked = 0; 341 ndg_evt = DB_EVENT_NO_SUCH_EVENT ; 343 re = `LF_ISSET ( DB_REP_CLIENT | DB_REP_MASTER )) { 344 DB_REP_CLIENT : 345 DB_REP_MASTER : 348 `__db_rx ( v , 350 ( EINVAL ); 354 i( db_p -> nd = NULL ) { 355 `__db_rx ( v , 357 ( EINVAL ); 364 i( `IS_USING_LEASES ( v && p -> a_timeout == 0) { 365 `__db_rx ( v , 367 ( EINVAL ); 370 `ENV_ENTER ( v , ); 376 i(( t = `__log_ush ( v , NULL )) != 0) 377 out ; 379 `REP_SYSTEM_LOCK ( v ); 386 i( `F_ISSET ( p , REP_F_READY_MSG )) { 390 `RPRINT ( v , DB_VERB_REP_MISC , 391 ( v , "Threadlready inockout")); 392 `REP_SYSTEM_UNLOCK ( v ); 393 out ; 394 } i(( t = `__p_lockout_msg ( v , p , 0)) != 0) 395 ruock ; 397 re_chg = (! `F_ISSET ( p , REP_F_MASTER && re = DB_REP_MASTER ) || 398 (! `F_ISSET ( p , REP_F_CLIENT && re = DB_REP_CLIENT ); 405 i( re_chg ) { 406 i(( t = `__p_lockout_i ( v , p )) != 0) 407 ruock ; 408 locked = 1; 411 db = v -> lg_hd ; 412 = db -> gfo . imy ; 413 i( re = DB_REP_MASTER ) { 414 i( re_chg ) { 432 i(( t = `__p_eo ( v )) != 0) 433 ruock ; 435 p -> g ++; 440 i( p -> eg >-> g ) 441 p -> g =-> eg ; 442 i( `IS_USING_LEASES ( v ) && 443 ! `F_ISSET ( p , REP_F_MASTERELECT )) { 444 `__db_rx ( v , 446 t = EINVAL ; 447 ruock ; 449 i( `F_ISSET ( p , REP_F_MASTERELECT )) { 450 `__p_e_de ( v , p , 0); 451 `F_CLR ( p , REP_F_MASTERELECT ); 453 i( p -> eg <p-> g ) 454 p -> eg =-> g + 1; 455 `RPRINT ( v , DB_VERB_REP_MISC , (env, 457 ( u_lg ) p -> g , (u_lg-> eg )); 458 i(( t = `__p_wre_g ( v , p -> g )) != 0) 459 ruock ; 466 i( `IS_USING_LEASES ( v ) && 467 ( re_chg || ! `F_ISSET ( p , REP_F_START_CALLED ))) { 472 i(( t = `__p_i_ged ( v ))) { 473 `__db_rx ( v , 475 t = EINVAL ; 476 ruock ; 481 tmp = ( db_timeout_t )(() p -> a_timeout / 482 (() p -> ock_skew / 483 () p -> ock_ba )); 484 `DB_TIMEOUT_TO_TIMESPEC ( tmp , & p -> a_duti ); 489 `INIT_LSN ( -> max_rm_l ); 490 i(( t = `__p_a_b_loc ( v , 491 p -> nses )) != 0) 492 ruock ; 494 p -> ma_id =-> eid ; 502 pags = `F_ISSET ( p , REP_F_READY_API | REP_F_READY_MSG | 503 REP_F_READY_OP ); 504 #ifdef DIAGNOSTIC 505 i(! `F_ISSET ( p , REP_F_GROUP_ESTD )) 506 `RPRINT ( v , DB_VERB_REP_MISC , (env, 509 `FLD_SET ( pags , REP_F_MASTER | REP_F_GROUP_ESTD ); 510 p -> ags = pags ; 515 dvs = -> rsi . vsi ; 522 `RPRINT ( v , DB_VERB_REP_MISC , (env, 523 "p_t: Oldog vsi wa%lu", ( u_lg ) dvs )); 524 i( -> rsi . vsi ! DB_LOGVERSION ) { 525 i(( t = `__v__c ( v , DB_LOGVERSION )) != 0) 526 ruock ; 528 p -> vsi = DB_REPVERSION ; 529 `F_CLR ( p , REP_F_READY_MSG ); 530 `REP_SYSTEM_UNLOCK ( v ); 531 `LOG_SYSTEM_LOCK ( v ); 532 l = ->lsn; 533 `LOG_SYSTEM_UNLOCK ( v ); 541 () `__p_nd_mesge ( v , 542 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 543 t = 0; 544 i( re_chg ) { 545 ndg_evt = DB_EVENT_REP_MASTER ; 551 gi = v -> tx_hd -> gfo . imy ; 552 i( gi -> . _ees == 0 && 553 ( t_t = `__p_e_ed ( v )) != 0 && 554 t == 0) 555 t = t_t ; 556 i( gi -> . _ees != 0) { 557 i(( t_t = `__dbg_mk_ed ( v )) != 0 && 558 t == 0) 559 t = t_t ; 561 t = `__dbg_vide_fes ( v , 0); 562 i(( t_t = `__p_ofes ( 563 v , 0)!0 && t == 0) 564 t = t_t ; 566 i(( t_t = `__txn_cye_id ( v )!0 && t == 0) 567 t = t_t ; 568 `REP_SYSTEM_LOCK ( v ); 569 `F_CLR ( p , REP_F_READY_API | REP_F_READY_OP ); 570 locked = 0; 571 `REP_SYSTEM_UNLOCK ( v ); 572 () `__memp_t_cfig ( 573 dbv , DB_MEMP_SYNC_INTERRUPT , 0); 576 noun = re_chg || p -> ma_id = DB_EID_INVALID ; 578 i( re_chg ) 579 p -> ma_id = DB_EID_INVALID ; 581 pags = `F_ISSET ( p , REP_F_NOARCHIVE | REP_F_READY_MSG | 582 REP_F_RECOVER_MASK | REP_F_TALLY ); 583 `FLD_SET ( pags , REP_F_CLIENT ); 584 i( re_chg ) { 585 i(( t = `__log_g_dvsi ( v , & dvs )) != 0) 586 ruock ; 587 `RPRINT ( v , DB_VERB_REP_MISC , (env, 588 "p_t: Found old vsiچog %d", dvs )); 589 i( dvs > DB_LOGVERSION_MIN ) { 590 `__log_t_vsi ( v , dvs ); 591 dvs = `__p_cv_vs ( v , oldvers); 592 `DB_ASSERT ( 593 v , dvs ! DB_REPVERSION_INVALID ); 594 p -> vsi = dvs ; 597 p -> ags = pags ; 604 i( `IS_USING_LEASES ( v ) && 605 ( re_chg || ! `F_ISSET ( p , REP_F_START_CALLED ))) { 606 i(( t = `__p_a_expe ( v , 1)) != 0) 607 ruock ; 618 tmp = ( db_timeout_t )(() p -> a_timeout * 619 (() p -> ock_skew / 620 () p -> ock_ba )); 621 `DB_TIMEOUT_TO_TIMESPEC ( tmp , & p -> a_duti ); 622 i( p -> a_off ! INVALID_ROFF ) { 623 `__v_loc_ ( f , 624 `R_ADDR ( f , p -> a_off )); 625 p -> a_off = INVALID_ROFF ; 628 `REP_SYSTEM_UNLOCK ( v ); 638 i(( t = `__p_abt_ed ( v )) != 0) 639 ock ; 644 i( re_chg ) { 645 i(( t = `db_ (& dbp , dbv , 0)) != 0) 646 ock ; 651 `MUTEX_LOCK ( v , p -> mtx_db ); 652 () `__db_move ( dbp , , NULL , REPDBNAME , 653 NULL , DB_FORCE ); 654 `MUTEX_UNLOCK ( v , p -> mtx_db ); 658 ndg_evt = DB_EVENT_REP_CLIENT ; 660 `REP_SYSTEM_LOCK ( v ); 661 `F_CLR ( p , REP_F_READY_MSG ); 662 i( locked ) { 663 `F_CLR ( p , REP_F_READY_API | REP_F_READY_OP ); 664 locked = 0; 666 `REP_SYSTEM_UNLOCK ( v ); 676 i( noun ) { 687 i( `F_ISSET ( v , ENV_PRIVATE )) 688 p -> g = 0; 689 i(( t = `__dbt_urcy ( v , dbt )) != 0) 690 out ; 691 () `__p_nd_mesge ( v , 692 DB_EID_BROADCAST , REP_NEWCLIENT , NULL , dbt , 0, 0); 694 () `__p_nd_mesge ( v , 695 DB_EID_BROADCAST , REP_ALIVE_REQ , NULL , NULL, 0, 0); 706 ock : `REP_SYSTEM_LOCK ( v ); 707 ruock : `F_CLR ( p , REP_F_READY_MSG ); 708 i( locked ) 709 `F_CLR ( p , REP_F_READY_API | REP_F_READY_OP ); 710 `REP_SYSTEM_UNLOCK ( v ); 712 out : 713 i( t == 0) { 714 `REP_SYSTEM_LOCK ( v ); 715 `F_SET ( p , REP_F_START_CALLED ); 716 `REP_SYSTEM_UNLOCK ( v ); 718 i( ndg_evt ! DB_EVENT_NO_SUCH_EVENT ) 719 `__p_fe_evt ( v , ndg_evt , NULL ); 720 `__dbt_ur ( v , dbt , NULL , NULL); 721 `ENV_LEAVE ( v , ); 722 ( t ); 723 } } 739 $__p__db ( v , tup , which ) 740 ENV * v ; 741 tup ; 742 pdb_t which ; 744 DB * dbp , ** rdb ; 745 DB_ENV * dbv ; 746 DB_REP * db_p ; 747 DB_THREAD_INFO * ; 748 REP * p ; 749 t , t_t ; 750 u_t32_t ags ; 751 cڡ * me ; 753 dbv = v ->dbenv; 754 db_p = v -> p_hd ; 755 p = db_p -> gi ; 756 dbp = NULL ; 758 i( which = REP_DB ) { 759 me = REPDBNAME ; 760 rdb = & db_p -> p_db ; 762 me = REPPAGENAME ; 763 rdb = & p -> fe_dbp ; 766 i(* rdb ! NULL ) 769 `ENV_GET_THREAD_INFO ( v , ); 771 i( tup ) { 772 i(( t = `db_ (& dbp , dbv , 0)) != 0) 773 r ; 778 () `__db_move ( dbp , , NULL , me , NULL, DB_FORCE ); 781 i(( t = `db_ (& dbp , dbv , 0)) != 0) 782 r ; 783 i( which = REP_DB && 784 ( t = `__bam_t_bt_com ( dbp , __p_bt_cmp )) != 0) 785 r ; 788 i(( t = `__db_t_ags ( dbp , DB_TXN_NOT_DURABLE )) != 0) 789 r ; 791 ags = DB_NO_AUTO_COMMIT | DB_CREATE | 792 ( `F_ISSET ( v , ENV_THREAD ? DB_THREAD : 0); 794 i(( t = `__db_ݒ ( dbp , , NULL , me , NULL, 795 ( which = REP_DB ? DB_BTREE : DB_RECNO ), 796 ags , 0, PGNO_BASE_MD )) != 0) 797 r ; 799 * rdb = dbp ; 802 r : i( dbp ! NULL && 803 ( t_t = `__db_o ( dbp , NULL , DB_NOSYNC )!0 && t == 0) 804 t = t_t ; 805 * rdb = NULL ; 808 ( t ); 809 } } 820 $__p_bt_cmp ( dbp , dbt1 , dbt2 ) 821 DB * dbp ; 822 cڡ DBT * dbt1 , * dbt2 ; 824 DB_LSN l1 , l2 ; 825 __p_cڌ_gs * 1 , * 2 ; 827 `COMPQUIET ( dbp , NULL ); 829 1 = dbt1 -> da ; 830 2 = dbt2 -> da ; 832 () `__ua_memy (& l1 , & 1 -> l , ( DB_LSN )); 833 () `__ua_memy (& l2 , & 2 -> l , ( DB_LSN )); 835 i( l1 . fe > l2 .file) 838 i( l1 . fe < l2 .file) 841 i( l1 . offt > l2 .offset) 844 i( l1 . offt < l2 .offset) 848 } } 859 $__p_abt_ed ( v ) 860 ENV * v ; 862 #PREPLISTSIZE 50 ) 863 DB_LOG * db ; 864 DB_PREPLIST [ PREPLISTSIZE ], * p ; 865 DB_TXNMGR * mgr ; 866 DB_TXNREGION * gi ; 867 LOG * ; 868 t ; 869 cou , i ; 870 u_t32_t ; 872 mgr = v -> tx_hd ; 873 gi = mgr -> gfo . imy ; 874 db = v -> lg_hd ; 875 = db -> gfo . imy ; 877 i( gi -> . _ees == 0) 880 = DB_FIRST ; 882 i(( t = `__txn_cov ( v , 883 , PREPLISTSIZE , & cou , )) != 0) 884 ( t ); 885 i = 0; i < cou ; i++) { 886 p = & [ i ]; 887 i(( t = `__txn_abt ( p -> txn )) != 0) 888 ( t ); 889 v -> p_hd -> gi -> _t --; 890 v -> p_hd -> gi -> max__l = -> l ; 891 gi -> . _ees --; 893 = DB_NEXT ; 894 } cou = PREPLISTSIZE ); 897 } } 910 $__p_e_ed ( v ) 911 ENV * v ; 913 DBT c ; 914 DB_LOGC * logc ; 915 DB_LSN ckp_l , l ; 916 DB_REP * db_p ; 917 DB_TXNHEAD * txnfo ; 918 REP * p ; 919 __txn_ckp_gs * ckp_gs ; 920 __txn_g_gs * g_gs ; 921 __txn_xa_g_gs * _gs ; 922 t , t_t ; 923 u_t32_t hi_txn , low_txn , y , us , txnid , txn ; 925 db_p = v -> p_hd ; 926 p = db_p -> gi ; 927 i( `IS_ZERO_LSN ( p -> max__l )) { 928 `RPRINT ( v , DB_VERB_REP_MISC , 929 ( v , "restore_prep: Norepares. Skip.")); 932 txnfo = NULL ; 933 ckp_gs = NULL ; 934 _gs = NULL ; 935 g_gs = NULL ; 936 `ZERO_LSN ( ckp_l ); 937 `ZERO_LSN ( l ); 939 i(( t = `__log_curs ( v , & logc )) != 0) 940 ( t ); 947 `memt (& c , 0, ( DBT )); 948 i(( t = `__logc_g ( logc , & l , & c , DB_FIRST )) != 0) { 949 `__db_rx ( v , "Firstecordot found"); 950 r ; 956 i( p -> max__l . fe < l .file) { 957 `RPRINT ( v , DB_VERB_REP_MISC , 958 ( v , "restore_prep: Prepareesolved. Skip")); 959 `ZERO_LSN ( p -> max__l ); 960 de ; 973 i(( t = `__txn_gckp ( v , & l )) == 0) { 974 i(( t = `__logc_g ( logc , & l , & c , DB_SET )) != 0) { 975 `__db_rx ( v , 977 ( u_lg ) l . fe , (u_lg. offt ); 978 r ; 981 i(( t = `__txn_ckp_ad ( 982 v , c . da , & ckp_gs )) == 0) { 983 ckp_l = ckp_gs ->ckp_lsn; 984 `__os_ ( v , ckp_gs ); 986 i( t != 0) { 987 `__db_rx ( v , 989 ( u_lg ) l . fe , (u_lg. offt ); 990 r ; 993 i(( t = `__logc_g ( logc , & ckp_l , & c , DB_SET )) != 0) { 994 `__db_rx ( v , 996 ( u_lg ) ckp_l . fe , (u_lg)ckp_l. offt ); 997 r ; 999 } i(( t = `__logc_g ( logc , & l , & c , DB_FIRST )) != 0) { 1000 i( t = DB_NOTFOUND ) { 1002 t = 0; 1003 de ; 1005 `__db_rx ( v , "Attempto get firstogecord failed"); 1006 r ; 1018 `LOGCOPY_32 ( v , & low_txn , 1019 ( u_t8_t *) c . da + ( u_t32_t )); 1020 i( low_txn != 0) 1022 } ( t = `__logc_g ( logc , & l , & c , DB_NEXT )) == 0); 1025 i( t = DB_NOTFOUND ) { 1026 t = 0; 1027 de ; 1028 } i( t != 0) 1029 r ; 1032 i(( t = `__logc_g ( logc , & l , & c , DB_LAST )) != 0) { 1037 `__db_rx ( v , "Finalogecordot found"); 1038 r ; 1042 `LOGCOPY_32 ( v , & hi_txn , 1043 ( u_t8_t *) c . da + ( u_t32_t )); 1044 i( hi_txn != 0) 1046 } ( t = `__logc_g ( logc , & l , & c , DB_PREV )) == 0); 1047 i( t = DB_NOTFOUND ) { 1048 t = 0; 1049 de ; 1050 } i( t != 0) 1051 r ; 1054 i(( t = `__db_txi_ ( v , 1055 NULL , low_txn , hi_txn , NULL, & txnfo )) != 0) 1056 r ; 1068 `F_SET ( v -> lg_hd , DBLOG_RECOVER ); 1069 t = `__logc_g ( logc , & l , & c , DB_LAST ); 1070 t =0 && `LOG_COMPARE (& l , & ckp_l ) > 0; 1071 t = `__logc_g ( logc , & l , & c , DB_PREV )) { 1072 `LOGCOPY_32 ( v , & y , c . da ); 1073 y ) { 1074 DB___txn_g : 1080 i(( t = `__txn_g_ad ( 1081 v , c . da , & g_gs )) != 0) 1082 r ; 1083 txnid = g_gs -> tx ->txnid; 1084 txn = g_gs -> code ; 1085 `__os_ ( v , g_gs ); 1087 t = `__db_txi_fd ( v , 1088 txnfo , txnid , & us ); 1089 i( t = DB_NOTFOUND ) 1090 t = `__db_txi_add ( v , txnfo , 1091 txnid , txn , & l ); 1092 i( t != 0) 1093 r ; 1095 DB___txn_xa_g : 1101 i(( t = `__txn_xa_g_ad ( 1102 v , c . da , & _gs )) != 0) 1103 r ; 1104 t = `__db_txi_fd ( v , txnfo , 1105 _gs -> tx -> txnid , & us ); 1106 i( t = DB_NOTFOUND ) { 1107 i( _gs -> code = TXN_ABORT ) 1108 t = `__db_txi_add ( v , txnfo , 1109 _gs -> tx -> txnid , 1110 _gs -> code , & l ); 1111 i(( t = 1112 `__p_oss_txn ( v , & c )) == 0) { 1121 p -> _t ++; 1122 t = `__txn_e_txn ( v , 1123 & l , _gs ); 1125 } i( t != 0) 1126 r ; 1127 `__os_ ( v , _gs ); 1135 i( t = DB_NOTFOUND ) 1136 t = 0; 1138 de : 1139 r : t_t = `__logc_o ( logc ); 1140 `F_CLR ( v -> lg_hd , DBLOG_RECOVER ); 1142 i( txnfo ! NULL ) 1143 `__db_txi_d ( v , txnfo ); 1145 ( t =0 ? t_t :et); 1146 } } 1156 $__p_g_lim ( dbv , gby , by ) 1157 DB_ENV * dbv ; 1158 u_t32_t * gby , * by ; 1160 DB_REP * db_p ; 1161 DB_THREAD_INFO * ; 1162 ENV * v ; 1163 REP * p ; 1165 v = dbv ->env; 1166 db_p = v -> p_hd ; 1168 `ENV_NOT_CONFIGURED ( 1169 v , db_p -> gi , "DB_ENV->p_g_lim", DB_INIT_REP ); 1171 i( `REP_ON ( v )) { 1172 p = db_p -> gi ; 1173 `ENV_ENTER ( v , ); 1174 `REP_SYSTEM_LOCK ( v ); 1175 i( gby ! NULL ) 1176 * gby = p -> gbys ; 1177 i( by ! NULL ) 1178 * by = p -> bys ; 1179 `REP_SYSTEM_UNLOCK ( v ); 1180 `ENV_LEAVE ( v , ); 1182 i( gby ! NULL ) 1183 * gby = db_p -> gbys ; 1184 i( by ! NULL ) 1185 * by = db_p -> bys ; 1189 } } 1199 $__p_t_lim ( dbv , gbys , bys ) 1200 DB_ENV * dbv ; 1201 u_t32_t gbys , bys ; 1203 DB_REP * db_p ; 1204 DB_THREAD_INFO * ; 1205 ENV * v ; 1206 REP * p ; 1208 v = dbv ->env; 1209 db_p = v -> p_hd ; 1211 `ENV_NOT_CONFIGURED ( 1212 v , db_p -> gi , "DB_ENV->p_t_lim", DB_INIT_REP ); 1214 i( bys > GIGABYTE ) { 1215 gbys + bys / GIGABYTE ; 1216 bys = by% GIGABYTE ; 1219 i( `REP_ON ( v )) { 1220 p = db_p -> gi ; 1221 `ENV_ENTER ( v , ); 1222 `REP_SYSTEM_LOCK ( v ); 1223 p -> gbys = gbytes; 1224 p -> bys = bytes; 1225 `REP_SYSTEM_UNLOCK ( v ); 1226 `ENV_LEAVE ( v , ); 1228 db_p -> gbys = gbytes; 1229 db_p -> bys = bytes; 1233 } } 1239 $__p_t_nses ( dbv , n ) 1240 DB_ENV * dbv ; 1241 u_t32_t n ; 1243 DB_REP * db_p ; 1244 ENV * v ; 1245 REP * p ; 1247 v = dbv ->env; 1248 db_p = v -> p_hd ; 1250 `ENV_NOT_CONFIGURED ( 1251 v , db_p -> gi , "DB_ENV->p_t_nses", DB_INIT_REP ); 1253 i( `REP_ON ( v )) { 1254 p = db_p -> gi ; 1255 i( p ! NULL && `F_ISSET ԕ, REP_F_START_CALLED )) { 1256 `__db_rx ( v , 1258 ( EINVAL ); 1260 p -> cfig_nses = n ; 1262 db_p -> cfig_nses = n ; 1264 } } 1270 $__p_g_nses ( dbv , n ) 1271 DB_ENV * dbv ; 1272 u_t32_t * n ; 1274 DB_REP * db_p ; 1275 ENV * v ; 1276 REP * p ; 1278 v = dbv ->env; 1279 db_p = v -> p_hd ; 1283 i( `REP_ON ( v )) { 1284 p = db_p -> gi ; 1285 * n = p -> cfig_nses ; 1287 * n = db_p -> cfig_nses ; 1290 } } 1296 $__p_t_iܙy ( dbv , iܙy ) 1297 DB_ENV * dbv ; 1298 u_t32_t iܙy ; 1300 DB_REP * db_p ; 1301 ENV * v ; 1302 REP * p ; 1304 v = dbv ->env; 1305 db_p = v -> p_hd ; 1307 i( `REP_ON ( v )) { 1308 p = db_p -> gi ; 1309 p -> iܙy =riority; 1311 db_p -> my_iܙy = iܙy ; 1313 } } 1319 $__p_g_iܙy ( dbv , iܙy ) 1320 DB_ENV * dbv ; 1321 u_t32_t * iܙy ; 1323 DB_REP * db_p ; 1324 ENV * v ; 1325 REP * p ; 1327 v = dbv ->env; 1328 db_p = v -> p_hd ; 1330 i( `REP_ON ( v )) { 1331 p = db_p -> gi ; 1332 * iܙy = p ->priority; 1334 * iܙy = db_p -> my_iܙy ; 1336 } } 1342 $__p_t_timeout ( dbv , which , timeout ) 1343 DB_ENV * dbv ; 1344 which ; 1345 db_timeout_t timeout ; 1347 DB_REP * db_p ; 1348 ENV * v ; 1349 REP * p ; 1350 t ; 1352 v = dbv ->env; 1353 db_p = v -> p_hd ; 1354 p = db_p -> gi ; 1355 t = 0; 1357 which ) { 1358 DB_REP_CHECKPOINT_DELAY : 1359 i( `REP_ON ( v )) 1360 p -> chk_day = timeout ; 1362 db_p -> chk_day = timeout ; 1364 DB_REP_ELECTION_TIMEOUT : 1365 i( `REP_ON ( v )) 1366 p -> e_timeout = timeout ; 1368 db_p -> e_timeout = timeout ; 1370 DB_REP_FULL_ELECTION_TIMEOUT : 1371 i( `REP_ON ( v )) 1372 p -> fu_e_timeout = timeout ; 1374 db_p -> fu_e_timeout = timeout ; 1376 DB_REP_LEASE_TIMEOUT : 1377 i( `REP_ON ( v && `F_ISSET ( p , REP_F_START_CALLED )) { 1378 t = EINVAL ; 1379 `__db_rx ( v , 1381 out ; 1383 i( `REP_ON ( v )) 1384 p -> a_timeout = timeout ; 1386 db_p -> a_timeout = timeout ; 1388 #ifde HAVE_REPLICATION_THREADS 1389 DB_REP_ACK_TIMEOUT : 1390 db_p -> ack_timeout = timeout ; 1392 DB_REP_CONNECTION_RETRY : 1393 db_p -> ci_y_wa = timeout ; 1395 DB_REP_ELECTION_RETRY : 1396 db_p -> ei_y_wa = timeout ; 1398 DB_REP_HEARTBEAT_MONITOR : 1399 db_p -> hbt_mڙ_timeout = timeout ; 1401 DB_REP_HEARTBEAT_SEND : 1402 db_p -> hbt_equcy = timeout ; 1406 `__db_rx ( v , 1408 t = EINVAL ; 1411 out : 1412 ( t ); 1413 } } 1419 $__p_g_timeout ( dbv , which , timeout ) 1420 DB_ENV * dbv ; 1421 which ; 1422 db_timeout_t * timeout ; 1424 DB_REP * db_p ; 1425 ENV * v ; 1426 REP * p ; 1428 v = dbv ->env; 1429 db_p = v -> p_hd ; 1430 p = db_p -> gi ; 1432 which ) { 1433 DB_REP_CHECKPOINT_DELAY : 1434 * timeout = `REP_ON ( v ) ? 1435 p -> chk_day : db_p ->chkpt_delay; 1437 DB_REP_ELECTION_TIMEOUT : 1438 * timeout = `REP_ON ( v ) ? 1439 p -> e_timeout : db_p ->elect_timeout; 1441 DB_REP_FULL_ELECTION_TIMEOUT : 1442 * timeout = `REP_ON ( v ) ? 1443 p -> fu_e_timeout : db_p ->full_elect_timeout; 1445 DB_REP_LEASE_TIMEOUT : 1446 * timeout = `REP_ON ( v ) ? 1447 p -> a_timeout : db_p ->lease_timeout; 1449 #ifde HAVE_REPLICATION_THREADS 1450 DB_REP_ACK_TIMEOUT : 1451 * timeout = db_p -> ack_timeout ; 1453 DB_REP_ELECTION_RETRY : 1454 * timeout = db_p -> ei_y_wa ; 1456 DB_REP_CONNECTION_RETRY : 1457 * timeout = db_p -> ci_y_wa ; 1461 `__db_rx ( v , 1463 ( EINVAL ); 1467 } } 1478 $__p_g_que ( dbv , mp , maxp ) 1479 DB_ENV * dbv ; 1480 db_timeout_t * mp , * maxp ; 1482 DB_REP * db_p ; 1483 DB_THREAD_INFO * ; 1484 ENV * v ; 1485 REP * p ; 1487 v = dbv ->env; 1488 db_p = v -> p_hd ; 1490 `ENV_NOT_CONFIGURED ( 1491 v , db_p -> gi , "DB_ENV->p_g_que", DB_INIT_REP ); 1493 i( `REP_ON ( v )) { 1494 p = db_p -> gi ; 1495 `ENV_ENTER ( v , ); 1499 `REP_SYSTEM_LOCK ( v ); 1500 i( mp ! NULL ) 1501 `DB_TIMESPEC_TO_TIMEOUT ((* mp ), & p -> que_g , 0); 1502 i( maxp ! NULL ) 1503 `DB_TIMESPEC_TO_TIMEOUT ((* maxp ), & p -> max_g , 0); 1504 `REP_SYSTEM_UNLOCK ( v ); 1505 `ENV_LEAVE ( v , ); 1507 i( mp ! NULL ) 1508 `DB_TIMESPEC_TO_TIMEOUT ((* mp ), 1509 & db_p -> que_g , 0); 1510 i( maxp ! NULL ) 1511 `DB_TIMESPEC_TO_TIMEOUT ((* maxp ), & db_p -> max_g , 0); 1515 } } 1525 $__p_t_que ( dbv , m , max ) 1526 DB_ENV * dbv ; 1527 db_timeout_t m , max ; 1529 DB_LOG * db ; 1530 DB_REP * db_p ; 1531 DB_THREAD_INFO * ; 1532 ENV * v ; 1533 LOG * ; 1534 REP * p ; 1536 v = dbv ->env; 1537 db_p = v -> p_hd ; 1539 `ENV_NOT_CONFIGURED ( 1540 v , db_p -> gi , "DB_ENV->p_t_que", DB_INIT_REP ); 1542 i( m =0 || max < min) { 1543 `__db_rx ( v , 1545 ( EINVAL ); 1547 i( `REP_ON ( v )) { 1548 p = db_p -> gi ; 1549 `ENV_ENTER ( v , ); 1553 `REP_SYSTEM_LOCK ( v ); 1554 `DB_TIMEOUT_TO_TIMESPEC ( m , & p -> que_g ); 1555 `DB_TIMEOUT_TO_TIMESPEC ( max , & p -> max_g ); 1556 `REP_SYSTEM_UNLOCK ( v ); 1558 `MUTEX_LOCK ( v , p -> mtx_db ); 1559 db = v -> lg_hd ; 1560 i( db ! NULL && ( = db-> gfo . imy ) != NULL) { 1561 `DB_TIMEOUT_TO_TIMESPEC ( m , & -> wa_ts ); 1563 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1564 `ENV_LEAVE ( v , ); 1566 `DB_TIMEOUT_TO_TIMESPEC ( m , & db_p -> que_g ); 1567 `DB_TIMEOUT_TO_TIMESPEC ( max , & db_p -> max_g ); 1571 } } 1582 $__p_t_t ( dbv , eid , f_nd ) 1583 DB_ENV * dbv ; 1584 eid ; 1585 (* f_nd `__P (( DB_ENV *, 1586 cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t )); 1588 DB_REP * db_p ; 1589 DB_THREAD_INFO * ; 1590 ENV * v ; 1591 REP * p ; 1593 v = dbv ->env; 1595 i( f_nd = NULL ) { 1596 `__db_rx ( v , 1598 ( EINVAL ); 1601 i( eid < 0) { 1602 `__db_rx ( v , 1604 ( EINVAL ); 1607 db_p = v -> p_hd ; 1608 db_p -> nd = f_nd ; 1610 i( `REP_ON ( v )) { 1611 p = db_p -> gi ; 1612 `ENV_ENTER ( v , ); 1613 `REP_SYSTEM_LOCK ( v ); 1614 p -> eid =id; 1615 `REP_SYSTEM_UNLOCK ( v ); 1616 `ENV_LEAVE ( v , ); 1618 db_p -> eid =id; 1620 } } 1626 $__p_g_ockskew ( dbv , _ockp , ow_ockp ) 1627 DB_ENV * dbv ; 1628 u_t32_t * _ockp , * ow_ockp ; 1630 DB_REP * db_p ; 1631 ENV * v ; 1632 REP * p ; 1634 v = dbv ->env; 1635 db_p = v -> p_hd ; 1637 i( `REP_ON ( v )) { 1638 p = db_p -> gi ; 1639 * _ockp = p -> ock_skew ; 1640 * ow_ockp = p -> ock_ba ; 1642 * _ockp = db_p -> ock_skew ; 1643 * ow_ockp = db_p -> ock_ba ; 1647 } } 1653 $__p_t_ockskew ( dbv , _ock , ow_ock ) 1654 DB_ENV * dbv ; 1655 u_t32_t _ock , ow_ock ; 1657 DB_REP * db_p ; 1658 DB_THREAD_INFO * ; 1659 ENV * v ; 1660 REP * p ; 1661 t ; 1663 v = dbv ->env; 1664 db_p = v -> p_hd ; 1665 t = 0; 1667 `ENV_NOT_CONFIGURED ( 1668 v , db_p -> gi , "DB_ENV->p_t_ockskew", DB_INIT_REP ); 1680 i( _ock =0 || ow_ock == 0) { 1684 i( ow_ock !0 || _ock != 0) { 1685 `__db_rx ( v , 1687 ( EINVAL ); 1689 _ock = 1; 1690 ow_ock = 1; 1692 i( _ock < ow_ock ) { 1693 `__db_rx ( v , 1695 ( EINVAL ); 1697 i( `REP_ON ( v )) { 1698 p = db_p -> gi ; 1699 i( `F_ISSET ( p , REP_F_START_CALLED )) { 1700 `__db_rx ( v , 1702 ( EINVAL ); 1704 `ENV_ENTER ( v , ); 1705 `REP_SYSTEM_LOCK ( v ); 1706 p -> ock_skew = _ock ; 1707 p -> ock_ba = ow_ock ; 1708 `REP_SYSTEM_UNLOCK ( v ); 1709 `ENV_LEAVE ( v , ); 1711 db_p -> ock_skew = _ock ; 1712 db_p -> ock_ba = ow_ock ; 1714 ( t ); 1715 } } 1725 $__p_ush ( dbv ) 1726 DB_ENV * dbv ; 1728 DBT c ; 1729 DB_LOGC * logc ; 1730 DB_LSN l ; 1731 DB_THREAD_INFO * ; 1732 ENV * v ; 1733 t , t_t ; 1735 v = dbv ->env; 1737 `ENV_REQUIRES_CONFIG_XX ( 1738 v , p_hd , "DB_ENV->p_ush", DB_INIT_REP ); 1739 `ENV_ENTER ( v , ); 1741 i(( t = `__log_curs ( v , & logc )) != 0) 1742 ( t ); 1744 `memt (& c , 0, (rec)); 1745 `memt (& l , 0, (lsn)); 1747 i(( t = `__logc_g ( logc , & l , & c , DB_LAST )) != 0) 1748 r ; 1750 () `__p_nd_mesge ( v , 1751 DB_EID_BROADCAST , REP_LOG , & l , & c , 0, 0); 1753 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 1754 t = t_t ; 1755 `ENV_LEAVE ( v , ); 1756 ( t ); 1757 } } 1767 $__p_sync ( dbv , ags ) 1768 DB_ENV * dbv ; 1769 u_t32_t ags ; 1771 DB_LOG * db ; 1772 DB_LSN l ; 1773 DB_REP * db_p ; 1774 DB_THREAD_INFO * ; 1775 ENV * v ; 1776 LOG * ; 1777 REP * p ; 1778 ma , t ; 1779 u_t32_t pags , ty ; 1781 v = dbv ->env; 1783 `COMPQUIET ( ags , 0); 1785 `ENV_REQUIRES_CONFIG_XX ( 1786 v , p_hd , "DB_ENV->p_sync", DB_INIT_REP ); 1788 db = v -> lg_hd ; 1789 = db -> gfo . imy ; 1790 db_p = v -> p_hd ; 1791 p = db_p -> gi ; 1792 t = 0; 1794 `ENV_ENTER ( v , ); 1800 `MUTEX_LOCK ( v , p -> mtx_db ); 1801 l = -> vify_l ; 1802 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1803 `REP_SYSTEM_LOCK ( v ); 1804 ma = p -> ma_id ; 1805 i( ma = DB_EID_INVALID ) { 1806 `REP_SYSTEM_UNLOCK ( v ); 1807 () `__p_nd_mesge ( v , DB_EID_BROADCAST , 1808 REP_MASTER_REQ , NULL , NULL, 0, 0); 1809 out ; 1816 i(! `F_ISSET ( p , REP_F_DELAY )) { 1817 `REP_SYSTEM_UNLOCK ( v ); 1818 out ; 1821 `DB_ASSERT ( v , 1822 ! `IS_USING_LEASES ( v || `__p_i_ged (env) == 0); 1829 `F_CLR ( p , REP_F_DELAY ); 1830 i( `IS_ZERO_LSN ( l && `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT )) { 1831 `F_CLR ( p , REP_F_NOARCHIVE | REP_F_RECOVER_MASK ); 1832 t = DB_REP_JOIN_FAILURE ; 1833 `REP_SYSTEM_UNLOCK ( v ); 1834 out ; 1836 `REP_SYSTEM_UNLOCK ( v ); 1843 i( `IS_ZERO_LSN ( l )) { 1844 `DB_ASSERT ( v , `F_ISSET ( p , REP_F_RECOVER_UPDATE )); 1845 ty = REP_UPDATE_REQ ; 1846 pags = 0; 1848 `DB_ASSERT ( v , `F_ISSET ( p , REP_F_RECOVER_VERIFY )); 1849 ty = REP_VERIFY_REQ ; 1850 pags = DB_REP_ANYWHERE ; 1852 () `__p_nd_mesge ( v , ma , ty , & l , NULL , 0, pags ); 1854 out : `ENV_LEAVE ( v , ); 1855 ( t ); 1856 } } 1863 u_t32_t 1864 $__p_cv_vs ( v , log_v ) 1865 ENV * v ; 1866 u_t32_t log_v ; 1868 `COMPQUIET ( v , NULL ); 1874 i( log_v = DB_LOGVERSION_44 ) 1875 ( DB_REPVERSION_44 ); 1876 i( log_v = DB_LOGVERSION_45 ) 1877 ( DB_REPVERSION_45 ); 1878 i( log_v = DB_LOGVERSION_46 ) 1879 ( DB_REPVERSION_46 ); 1880 i( log_v = DB_LOGVERSION_47 ) 1881 ( DB_REPVERSION_47 ); 1882 ( DB_REPVERSION_INVALID ); 1883 } } @../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 (( ENV *, DB_LSN *, LSN_COLLECTION *)); 20 __p_do_ckp __P (( ENV *, DBT *, __p_cڌ_gs *)); 21 __p_fe_wma __P (( ENV *, u_t32_t , )); 22 __p_fe_tupde __P (( ENV *, u_t32_t , )); 23 __p_gxt __P (( ENV *, DB_THREAD_INFO *)); 24 __p_l_cmp __P ((const *, const *)); 25 __p_wfe __P (( ENV *, __p_cڌ_gs *, DBT *)); 26 __p_oss_c __P (( ENV *, DB_THREAD_INFO *, __p_cڌ_gs *, 27 DBT *, db_timeec *, DB_LSN *)); 28 __p_mf __P (( ENV *, DB_THREAD_INFO *, DBT *, DBT *)); 29 __p_sk_msg __P (( ENV *, REP *, , u_t32_t )); 33 #MASTER_ONLY ( p , ) do { \ 34 i(! `F_ISSET ( p , REP_F_MASTER )) { \ 35 `RPRINT ( v , DB_VERB_REP_MSGS , \ 36 ( v , "Masterecordeceived on client")); \ 37 `REP_PRINT_MESSAGE ( v , \ 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 ( v , DB_VERB_REP_MSGS , \ 47 ( v , "Clientecordeceived on master")); \ 54 i( `IS_USING_LEASES ( v )) \ 55 `DB_ASSERT ( v , \ 56 `__p_a_check ( v , 0) == \ 57 DB_REP_LEASE_EXPIRED ); \ 59 `REP_PRINT_MESSAGE ( v , \ 60 eid , , "rep_process_message", 0); \ 61 () `__p_nd_mesge ( v , 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 ( v , p , eid , -> y );\ 82 } 0) ) 84 #MASTER_UPDATE ( v , nv ) do { \ 85 `REP_SYSTEM_LOCK ( v ); \ 86 `F_SET (( nv ), DB_REGENV_REPLOCKED ); \ 87 () `time (&( nv )-> _timeamp ); \ 88 `REP_SYSTEM_UNLOCK ( v ); \ 89 } 0) ) 91 #RECOVERING_SKIP do { \ 92 i( `IS_REP_CLIENT ( v && covg ) { \ 94 `STAT ( p -> . _msgs_cov ++); \ 95 t = `__p_sk_msg ( v , 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 ( v , 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 DBT da_dbt ; 145 DB_LOG * db ; 146 DB_LSN ϡ_l , l ; 147 DB_REP * db_p ; 148 DB_THREAD_INFO * ; 149 ENV * v ; 150 LOG * ; 151 REGENV * nv ; 152 REGINFO * f ; 153 REP * p ; 154 REP_46_CONTROL * 46 ; 155 REP_OLD_CONTROL * p ; 156 __p_cڌ_gs * , tmp ; 157 __p_eg_gs eg_g ; 158 size_t n ; 159 u_t32_t g , p_vsi ; 160 cmp , do_sync , lockout , covg , t , t_t ; 161 time_t vime ; 162 u_t8_t buf [ __REP_MAXMSG_SIZE ]; 164 v = dbv ->env; 166 `ENV_REQUIRES_CONFIG_XX ( 167 v , p_hd , "DB_ENV->p_oss_mesge", DB_INIT_REP ); 170 i( cڌ = NULL || cڌ-> size == 0) { 171 `__db_rx ( v , 173 ( EINVAL ); 176 i(! `IS_REP_MASTER ( v && ! `IS_REP_CLIENT (env)) { 177 `__db_rx ( v , 179 ( EINVAL ); 182 i(( t = `__dbt_urcy ( v , cڌ )) != 0 || 183 ( t = `__dbt_urcy ( v , c )) != 0) { 184 `__dbt_ur ( v , cڌ , c , NULL ); 185 `__db_rx ( v , 187 t ; 190 t = 0; 191 do_sync = 0; 192 lockout = 0; 193 db_p = v -> p_hd ; 194 p = db_p -> gi ; 195 db = v -> lg_hd ; 196 = db -> gfo . imy ; 197 f = v -> gfo ; 198 nv = f -> imy ; 212 p_vsi = (( REP_OLD_CONTROL *) cڌ -> da )->rep_version; 213 i( p_vsi < DB_REPVERSION_45 ) { 214 p = ( REP_OLD_CONTROL *) cڌ -> da ; 215 i( p_vsi = DB_REPVERSION_45 && 216 `F_ISSET ( p , REPCTL_INIT_45 )) { 217 `F_CLR ( p , REPCTL_INIT_45 ); 218 `F_SET ( p , REPCTL_INIT ); 220 tmp . p_vsi = p ->rep_version; 221 tmp . log_vsi = p ->log_version; 222 tmp . l = p ->lsn; 223 tmp . y = p ->rectype; 224 tmp . g = p ->gen; 225 tmp . ags = p ->flags; 226 tmp . msg_c = 0; 227 tmp . msg_nc = 0; 228 } i( p_vsi = DB_REPVERSION_46 ) { 229 46 = ( REP_46_CONTROL *) cڌ -> da ; 230 tmp . p_vsi = 46 ->rep_version; 231 tmp . log_vsi = 46 ->log_version; 232 tmp . l = 46 ->lsn; 233 tmp . y = 46 ->rectype; 234 tmp . g = 46 ->gen; 235 tmp . ags = 46 ->flags; 236 tmp . msg_c = ( u_t32_t ) 46 -> msg_time . tv_c ; 237 tmp . msg_nc = ( u_t32_t ) 46 -> msg_time . tv_nc ; 239 i(( t = `__p_cڌ_unmsh ( v , & tmp , 240 cڌ -> da , cڌ-> size , NULL )) != 0) 241 ( t ); 242 = & tmp ; 243 i( t_lp ! NULL ) 244 `ZERO_LSN (* t_lp ); 246 `ENV_ENTER ( v , ); 248 `REP_PRINT_MESSAGE ( v , eid , , "rep_process_message", 0); 253 i( -> p_vsi < DB_REPVERSION ) { 254 i( -> p_vsi < DB_REPVERSION_MIN ) { 255 `__db_rx ( v , 257 ( u_lg ) -> p_vsi , DB_REPVERSION_MIN ); 258 t = EINVAL ; 259 ock ; 261 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 263 ( u_lg ) -> y , (u_lgp-> p_vsi )); 264 -> y = `__p_msg_om_d p-> p_vsi ,p->rectype); 265 `DB_ASSERT ( v , -> y ! REP_INVALID ); 270 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 272 ( u_lg ) -> y , (u_lgp-> p_vsi )); 273 } i( -> p_vsi > DB_REPVERSION ) { 274 `__db_rx ( v , 276 ( u_lg ) -> p_vsi , DB_REPVERSION ); 277 t = EINVAL ; 278 ock ; 281 i( -> log_vsi < DB_LOGVERSION ) { 282 i( -> log_vsi < DB_LOGVERSION_MIN ) { 283 `__db_rx ( v , 285 ( u_lg ) -> log_vsi , DB_LOGVERSION_MIN ); 286 t = EINVAL ; 287 ock ; 289 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 291 ( u_lg ) -> y , (u_lgp-> log_vsi )); 292 } i( -> log_vsi > DB_LOGVERSION ) { 293 `__db_rx ( v , 295 ( u_lg ) -> log_vsi , DB_LOGVERSION ); 296 t = EINVAL ; 297 ock ; 303 `REP_SYSTEM_LOCK ( v ); 304 i( `F_ISSET ( p , REP_F_READY_MSG )) { 309 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 311 i( `F_ISSET ( , REPCTL_PERM )) 312 t = DB_REP_IGNORE ; 313 `REP_SYSTEM_UNLOCK ( v ); 320 i( `F_ISSET ( p , REP_F_CLIENT && `REP_MSG_REQ ( -> y )) { 321 `STAT ( p -> . __svc_q ++); 322 `STAT ( p -> . __svc_miss ++); 323 () `__p_nd_mesge ( v , 324 eid , REP_REREQUEST , NULL , NULL, 0, 0); 326 out ; 328 p -> msg_th ++; 329 g = p ->gen; 330 covg = `F_ISSET ( p , REP_F_RECOVER_MASK ); 331 vime = nv -> p_timeamp ; 333 `STAT ( p -> . _msgs_osd ++); 334 `REP_SYSTEM_UNLOCK ( v ); 342 i(! `IS_USING_LEASES ( v ) && 343 ( `F_ISSET ( , REPCTL_LEASE ||p-> y = REP_LEASE_GRANT )) { 344 `__db_rx ( v , 346 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 348 t = EINVAL ; 349 t = `__v_nic ( v ,et); 350 ock ; 358 i( -> g < g &&p-> y ! REP_ALIVE_REQ && 359 -> y ! REP_NEWCLIENT &&p->y ! REP_MASTER_REQ && 360 -> y ! REP_DUPMASTER &&p->y ! REP_VOTE1 ) { 364 `STAT ( p -> . _msgs_badg ++); 365 i( `F_ISSET ( , REPCTL_PERM )) 366 t = DB_REP_IGNORE ; 367 ock ; 370 i( -> g > gen) { 375 i( `F_ISSET ( p , REP_F_MASTER )) { 376 `STAT ( p -> . _dupmas ++); 377 t = DB_REP_DUPMASTER ; 384 i( `IS_USING_LEASES ( v )) 385 `DB_ASSERT ( v , 386 `__p_a_check ( v , 0) == 387 DB_REP_LEASE_EXPIRED ); 388 i( -> y ! REP_DUPMASTER ) 389 () `__p_nd_mesge ( v , 390 DB_EID_BROADCAST , REP_DUPMASTER , 391 NULL , NULL, 0, 0); 392 ock ; 402 i( -> y = REP_ALIVE || 403 -> y = REP_VOTE1 ||p->y = REP_VOTE2 ) { 404 `REP_SYSTEM_LOCK ( v ); 405 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 407 ( u_lg ) g , (u_lg) ->gen)); 408 p -> ma_id = DB_EID_INVALID ; 409 g = p ->g = ->gen; 414 `REP_SYSTEM_UNLOCK ( v ); 415 i( -> y = REP_ALIVE ) 416 () `__p_nd_mesge ( v , 417 DB_EID_BROADCAST , REP_MASTER_REQ , NULL , 418 NULL , 0, 0); 419 } i( -> y ! REP_NEWMASTER ) { 423 i( `__p_check_deq ( v , p )) 424 () `__p_nd_mesge ( v , 425 DB_EID_BROADCAST , REP_MASTER_REQ , 426 NULL , NULL, 0, 0); 427 ock ; 439 i( `F_ISSET ( , REPCTL_GROUP_ESTD )) { 440 `REP_SYSTEM_LOCK ( v ); 441 #ifdef DIAGNOSTIC 442 i(! `F_ISSET ( p , REP_F_GROUP_ESTD )) 443 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 446 `F_SET ( p , REP_F_GROUP_ESTD ); 447 `REP_SYSTEM_UNLOCK ( v ); 457 -> y ) { 458 REP_ALIVE : 462 `ANYSITE ( p ); 463 i( -> p_vsi < DB_REPVERSION_47 ) 464 eg_g . eg = *( u_t32_t *) c -> da ; 465 i(( t = `__p_eg_unmsh ( v , & eg_g , 466 c -> da ,ec-> size , NULL )) != 0) 467 ( t ); 468 `REP_SYSTEM_LOCK ( v ); 469 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 471 ( u_lg ) eg_g . eg , (u_lg) p ->egen)); 472 i( eg_g . eg > p ->egen) { 482 `__p_e_de ( v , p , 0); 483 p -> eg = eg_g .egen; 484 `F_SET ( p , REP_F_EGENUPDATE ); 486 `REP_SYSTEM_UNLOCK ( v ); 488 REP_ALIVE_REQ : 492 `ANYSITE ( p ); 493 `LOG_SYSTEM_LOCK ( v ); 494 l = ->lsn; 495 `LOG_SYSTEM_UNLOCK ( v ); 496 #ifdef CONFIG_TEST 504 i( `F_ISSET ( p , REP_F_MASTER )) 505 () `__p_nd_mesge ( v , 506 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 508 `REP_SYSTEM_LOCK ( v ); 509 eg_g . eg = p ->egen; 510 `REP_SYSTEM_UNLOCK ( v ); 511 i( p -> vsi < DB_REPVERSION_47 ) 512 `DB_INIT_DBT ( da_dbt , & eg_g . eg , 513 ( eg_g . eg )); 515 i(( t = `__p_eg_msh ( v , 516 & eg_g , buf , __REP_EGEN_SIZE , & n )) != 0) 517 ock ; 518 `DB_INIT_DBT ( da_dbt , buf , n ); 520 () `__p_nd_mesge ( v , 521 eid , REP_ALIVE , & l , & da_dbt , 0, 0); 523 REP_ALL_REQ : 524 RECOVERING_SKIP ; 525 t = `__p_eq ( v , , eid ); 526 CLIENT_REREQ ; 528 REP_BULK_LOG : 529 RECOVERING_LOG_SKIP ; 530 `CLIENT_ONLY ( p , ); 531 t = `__p_bulk_log ( v , , , c , vime , t_lp ); 533 REP_BULK_PAGE : 537 `CLIENT_ONLY ( p , ); 538 t = `__p_bulk_ge ( v , , eid , , c ); 540 REP_DUPMASTER : 544 i( `F_ISSET ( p , REP_F_MASTER )) 545 t = DB_REP_DUPMASTER ; 547 #ifde NOTYET 548 REP_FILE : 549 `CLIENT_ONLY ( p , ); 551 REP_FILE_REQ : 552 t = `__p_nd_fe ( v , c , eid ); 555 REP_FILE_FAIL : 559 `CLIENT_ONLY ( p , ); 564 REP_LEASE_GRANT : 568 `MASTER_ONLY ( p , ); 569 t = `__p_a_g ( v , , c , eid ); 571 REP_LOG : 572 REP_LOG_MORE : 573 RECOVERING_LOG_SKIP ; 574 `CLIENT_ONLY ( p , ); 575 t = `__p_log ( v , , , c , vime , t_lp ); 577 REP_LOG_REQ : 578 RECOVERING_SKIP ; 579 i( `F_ISSET ( , REPCTL_INIT )) 580 `MASTER_UPDATE ( v , nv ); 581 t = `__p_logq ( v , , c , eid ); 582 CLIENT_REREQ ; 584 REP_NEWSITE : 589 `STAT ( p -> . _wses ++); 592 i( `F_ISSET ( p , REP_F_MASTER )) { 593 db = v -> lg_hd ; 594 = db -> gfo . imy ; 595 `LOG_SYSTEM_LOCK ( v ); 596 l = ->lsn; 597 `LOG_SYSTEM_UNLOCK ( v ); 598 () `__p_nd_mesge ( v , 599 eid , REP_NEWMASTER , & l , NULL , 0, 0); 600 i( `IS_USING_LEASES ( v )) 601 () `__p_a_esh ( v ); 603 t = DB_REP_NEWSITE ; 605 REP_NEWCLIENT : 618 () `__p_nd_mesge ( v , 619 DB_EID_BROADCAST , REP_NEWSITE , & -> l , c , 0, 0); 621 t = DB_REP_NEWSITE ; 623 i( `F_ISSET ( p , REP_F_CLIENT )) { 624 `REP_SYSTEM_LOCK ( v ); 625 eg_g . eg = p ->egen; 632 i( eid = p -> ma_id ) { 633 p -> ma_id = DB_EID_INVALID ; 640 i( `F_ISSET ( p , REP_F_READY_MSG )) 641 rhlk ; 647 i(( t_t = 648 `__p_lockout_msg ( v , p , 1)) != 0) { 649 t = t_t ; 650 rhlk ; 652 lockout = 1; 658 `REP_SYSTEM_UNLOCK ( v ); 659 `MUTEX_LOCK ( v , p -> mtx_db ); 660 `REP_SYSTEM_LOCK ( v ); 666 i( `F_ISSET ( p , REP_F_READY_API | 667 REP_F_READY_OP )) { 668 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 670 t_t = `__p__nup ( v , 671 p , DB_FORCE ); 672 `F_CLR ( p , REP_F_RECOVER_MASK ); 674 `MUTEX_UNLOCK ( v , p -> mtx_db ); 675 i( t_t != 0) { 676 t = t_t ; 677 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 678 "NEWCLIENT c˪g u in f invid ma: %d", t )); 679 rhlk ; 681 `F_CLR ( p , REP_F_READY_MSG ); 682 lockout = 0; 684 `REP_SYSTEM_UNLOCK ( v ); 685 i( p -> vsi < DB_REPVERSION_47 ) 686 `DB_INIT_DBT ( da_dbt , & eg_g . eg , 687 ( eg_g . eg )); 689 i(( t = `__p_eg_msh ( v , & eg_g , 690 buf , __REP_EGEN_SIZE , & n )) != 0) 691 ock ; 692 `DB_INIT_DBT ( da_dbt , buf , n ); 694 () `__p_nd_mesge ( v , DB_EID_BROADCAST , 695 REP_ALIVE , & -> l , & da_dbt , 0, 0); 699 REP_MASTER_REQ : 700 RECOVERING_SKIP ; 701 i( `F_ISSET ( p , REP_F_MASTER )) { 702 `LOG_SYSTEM_LOCK ( v ); 703 l = ->lsn; 704 `LOG_SYSTEM_UNLOCK ( v ); 705 () `__p_nd_mesge ( v , 706 DB_EID_BROADCAST , REP_NEWMASTER , & l , NULL , 0, 0); 707 i( `IS_USING_LEASES ( v )) 708 () `__p_a_esh ( v ); 716 i( `F_ISSET ( p , REP_F_CLIENT && -> g < gen) { 717 `REP_SYSTEM_LOCK ( v ); 718 eg_g . eg = p ->egen; 719 i( eid = p -> ma_id ) 720 p -> ma_id = DB_EID_INVALID ; 721 `REP_SYSTEM_UNLOCK ( v ); 722 i( p -> vsi < DB_REPVERSION_47 ) 723 `DB_INIT_DBT ( da_dbt , & eg_g . eg , 724 ( eg_g . eg )); 726 i(( t = `__p_eg_msh ( v , & eg_g , 727 buf , __REP_EGEN_SIZE , & n )) != 0) 728 ock ; 729 `DB_INIT_DBT ( da_dbt , buf , n ); 731 () `__p_nd_mesge ( v , eid , 732 REP_ALIVE , & -> l , & da_dbt , 0, 0); 735 REP_NEWFILE : 736 RECOVERING_LOG_SKIP ; 737 `CLIENT_ONLY ( p , ); 738 t = `__p_y ( v , 739 , , c , t_lp , NULL , & ϡ_l ); 740 i( t = DB_REP_LOGREADY ) 741 t = `__p_logady ( v , p , vime , & ϡ_l ); 743 REP_NEWMASTER : 747 `ANYSITE ( p ); 748 i( `F_ISSET ( p , REP_F_MASTER ) && 749 eid ! p ->eid) { 751 `STAT ( p -> . _dupmas ++); 752 t = DB_REP_DUPMASTER ; 753 i( `IS_USING_LEASES ( v )) 754 `DB_ASSERT ( v , 755 `__p_a_check ( v , 0) == 756 DB_REP_LEASE_EXPIRED ); 758 () `__p_nd_mesge ( v , 759 DB_EID_BROADCAST , REP_DUPMASTER , 760 NULL , NULL, 0, 0); 763 i(( t = 764 `__p_w_ma ( v , , eid )= DB_REP_NEWMASTER ) 765 t = `__p_fe_wma ( v , -> g , eid ); 767 REP_PAGE : 768 REP_PAGE_MORE : 772 `CLIENT_ONLY ( p , ); 773 t = `__p_ge ( v , , eid , , c ); 774 i( t = DB_REP_PAGEDONE ) 775 t = 0; 777 REP_PAGE_FAIL : 781 `CLIENT_ONLY ( p , ); 782 t = `__p_ge_ ( v , , eid , , c ); 784 REP_PAGE_REQ : 785 RECOVERING_SKIP ; 786 `MASTER_UPDATE ( v , nv ); 787 t = `__p_ge_q ( v , , eid , , c ); 788 CLIENT_REREQ ; 790 REP_REREQUEST : 795 `CLIENT_ONLY ( p , ); 799 `STAT ( p -> . __ques ++); 800 t = `__p_nd_q ( v , 1); 802 REP_START_SYNC : 803 RECOVERING_SKIP ; 804 `MUTEX_LOCK ( v , p -> mtx_db ); 805 cmp = `LOG_COMPARE (& -> l , & -> ady_l ); 815 i( cmp <= 0) { 816 `MUTEX_UNLOCK ( v , p -> mtx_db ); 817 do_sync = 1; 819 `STAT ( p -> . _tsync_dayed ++); 828 i( `LOG_COMPARE (& -> l , & p -> ckp_l ) > 0) 829 p -> ckp_l = -> l ; 830 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 832 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 834 ( u_lg ) -> ady_l . fe , (u_lgp->ady_l. offt , 835 ( u_lg ) p -> ckp_l . fe , (u_lg->ckp_l. offt )); 836 `MUTEX_UNLOCK ( v , p -> mtx_db ); 839 REP_UPDATE : 843 `CLIENT_ONLY ( p , ); 844 t = `__p_upde_tup ( v , eid , , c ); 846 REP_UPDATE_REQ : 850 `MASTER_ONLY ( p , ); 851 f = v -> gfo ; 852 nv = f -> imy ; 853 `MASTER_UPDATE ( v , nv ); 854 t = `__p_upde_q ( v , , eid ); 856 REP_VERIFY : 857 i( covg ) { 858 `MUTEX_LOCK ( v , p -> mtx_db ); 859 cmp = `LOG_COMPARE (& -> vify_l , & -> l ); 860 `MUTEX_UNLOCK ( v , p -> mtx_db ); 864 i( cmp != 0) { 865 t = `__p_sk_msg ( 866 v , p , eid , -> y ); 870 `CLIENT_ONLY ( p , ); 871 t = `__p_vify ( v , , c , eid , vime ); 873 REP_VERIFY_FAIL : 877 `CLIENT_ONLY ( p , ); 878 t = `__p_vify_ ( v , , eid ); 880 REP_VERIFY_REQ : 881 RECOVERING_SKIP ; 882 t = `__p_vify_q ( v , , eid ); 883 CLIENT_REREQ ; 885 REP_VOTE1 : 889 t = `__p_ve1 ( v , , c , eid ); 891 REP_VOTE2 : 895 t = `__p_ve2 ( v , , c , eid ); 898 `__db_rx ( v , 900 ( u_lg ) -> y ); 901 t = EINVAL ; 905 ock : 906 `REP_SYSTEM_LOCK ( v ); 907 rhlk : i( lockout ) 908 `F_CLR ( p , REP_F_READY_MSG ); 909 p -> msg_th --; 910 `REP_SYSTEM_UNLOCK ( v ); 911 i( do_sync ) { 912 `MUTEX_LOCK ( v , p -> mtx_ckp ); 913 l = ->lsn; 918 t = `__memp_sync ( 919 v , DB_SYNC_CHECKPOINT | DB_SYNC_INTERRUPT_OK , & l ); 920 `MUTEX_UNLOCK ( v , p -> mtx_ckp ); 921 `RPRINT ( v , DB_VERB_REP_MSGS , 922 ( v , "ALIVE: Completed sync [%lu][%lu]", 923 ( u_lg ) l . fe , (u_lg. offt )); 925 out : 926 i( t =0 && `F_ISSET ( , REPCTL_PERM )) { 927 i( t_lp ! NULL ) 928 * t_lp = -> l ; 929 t = DB_REP_NOTPERM ; 931 `__dbt_ur ( v , cڌ , c , NULL ); 932 `ENV_LEAVE ( v , ); 933 ( t ); 934 } } 950 $__p_y ( v , , , c , t_lp , is_du , ϡ_lp ) 951 ENV * v ; 952 DB_THREAD_INFO * ; 953 __p_cڌ_gs * ; 954 DBT * c ; 955 DB_LSN * t_lp ; 956 * is_du ; 957 DB_LSN * ϡ_lp ; 959 DB * dbp ; 960 DBT cڌ_dbt , key_dbt ; 961 DBT c_dbt ; 962 DB_LOG * db ; 963 DB_LSN max_l , ve_l ; 964 DB_REP * db_p ; 965 LOG * ; 966 REP * p ; 967 db_timeec msg_time , max_ts ; 968 u_t32_t g ; 969 cmp , evt , ma , t , t_y , t_t ; 971 `COMPQUIET ( g , 0); 972 `COMPQUIET ( ma , DB_EID_INVALID ); 974 db_p = v -> p_hd ; 975 p = db_p -> gi ; 976 evt = t = t_y = 0; 977 `memt (& cڌ_dbt , 0, (control_dbt)); 978 `memt (& c_dbt , 0, (rec_dbt)); 979 `ZERO_LSN ( max_l ); 980 `timeecr (& max_ts ); 981 `timeect (& msg_time , -> msg_c ,p-> msg_nc ); 982 cmp = -2; 984 db = v -> lg_hd ; 985 `MUTEX_LOCK ( v , p -> mtx_db ); 990 i( db_p -> p_db = NULL && 991 ( t = `__p__db ( v , 0, REP_DB )) != 0) { 992 `MUTEX_UNLOCK ( v , p -> mtx_db ); 993 out ; 995 dbp = db_p -> p_db ; 996 = db -> gfo . imy ; 997 `REP_SYSTEM_LOCK ( v ); 998 i( `F_ISSET ( p , REP_F_RECOVER_LOG ) && 999 `LOG_COMPARE (& -> ady_l , & p -> f_l ) < 0) 1000 -> ady_l = p -> f_l ; 1001 cmp = `LOG_COMPARE (& -> l , & -> ady_l ); 1007 i( `F_ISSET ( p , REP_F_READY_APPLY && cmp >= 0) 1008 `F_SET ( p , REP_F_SKIPPED_APPLY ); 1018 i( `F_ISSET ( p , REP_F_NEWFILE && cmp == 0) 1019 cmp = -1; 1021 i( cmp == 0) { 1033 i( `F_ISSET ( p , REP_F_READY_APPLY )) { 1040 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1042 ( u_lg ) -> l . fe , (u_lgp->l. offt )); 1043 `REP_SYSTEM_UNLOCK ( v ); 1044 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1045 out ; 1047 p -> y_th ++; 1048 t_y = 1; 1049 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1050 "p_y: Sly_th %d", p -> y_th )); 1051 `REP_SYSTEM_UNLOCK ( v ); 1052 i(( t = `__p_oss_c ( v , , 1053 , c , & max_ts , & max_l )) != 0) 1054 r ; 1060 `__os_gtime ( v , & -> rcvd_ts , 1); 1061 `ZERO_LSN ( -> max_wa_l ); 1063 t == 0 && 1064 `LOG_COMPARE (& -> ady_l , &-> wag_l ) == 0) { 1069 g_check : 1070 i(( t = `__p_mf ( v , , 1071 & cڌ_dbt , & c_dbt )) != 0) 1072 r ; 1074 = ( __p_cڌ_gs *) cڌ_dbt . da ; 1075 `timeect (& msg_time , -> msg_c ,p-> msg_nc ); 1076 c = & c_dbt ; 1077 i(( t = `__p_oss_c ( v , , 1078 , c , & max_ts , & max_l )) != 0) 1079 r ; 1081 -- p -> . _log_queued ; 1095 -> rcvd_ts =p-> ϡ_ts ; 1096 -> wa_ts = p -> que_g ; 1097 i(( t = `__p_gxt ( v , )= DB_NOTFOUND ) { 1098 `__os_gtime ( v , & -> rcvd_ts , 1); 1099 t = 0; 1101 } i( t != 0) 1102 r ; 1109 i(! `IS_ZERO_LSN ( -> wag_l ) && 1110 `LOG_COMPARE (& -> ady_l , &-> wag_l ) != 0) { 1118 i( `__p_check_deq ( v , p && ( t = 1119 `__p_logg_q ( v , p , & -> l , 0)) != 0) 1120 r ; 1122 -> wa_ts = p -> que_g ; 1123 `ZERO_LSN ( -> max_wa_l ); 1126 } i( cmp > 0) { 1134 `REP_SYSTEM_UNLOCK ( v ); 1135 `memt (& key_dbt , 0, (key_dbt)); 1136 key_dbt . da = ; 1137 key_dbt . size = (* ); 1138 t = `__db_put ( dbp , , NULL , & key_dbt , c , DB_NOOVERWRITE ); 1139 i( t == 0) { 1140 p -> . _log_queued ++; 1141 `__os_gtime ( v , & -> ϡ_ts , 1); 1142 #ifde HAVE_STATISTICS 1143 `STAT ( p -> . _log_queued_tٮ ++); 1144 i( p -> . _log_queued_max < 1145 p -> . _log_queued ) 1146 p -> . _log_queued_max = 1147 p -> . _log_queued ; 1151 i( t = DB_KEYEXIST ) 1152 t = 0; 1153 i( t != 0) 1154 de ; 1156 i( `IS_ZERO_LSN ( -> wag_l ) || 1157 `LOG_COMPARE (& -> l , & -> wag_l ) < 0) 1158 -> wag_l = -> l ; 1160 i( `__p_check_deq ( v , p ) && 1161 ( t = `__p_logg_q ( v , p , & -> l , 0) != 0)) 1162 r ; 1168 i( t =0 && `F_ISSET ( , REPCTL_PERM )) { 1169 max_l = -> l ; 1170 t = DB_REP_NOTPERM ; 1172 de ; 1174 `STAT ( p -> . _log_duid ++); 1175 `REP_SYSTEM_UNLOCK ( v ); 1176 i( is_du ! NULL ) 1177 * is_du = 1; 1178 i( `F_ISSET ( , REPCTL_PERM )) 1179 max_l = -> max_rm_l ; 1186 i( `IS_USING_LEASES ( v ) && 1187 `F_ISSET ( , REPCTL_LEASE ) && 1188 `timeecist (& msg_time )) { 1189 i( `timeeccmp (& msg_time , & -> max_a_ts , >)) 1190 max_ts = msg_time ; 1192 max_ts = -> max_a_ts ; 1194 de ; 1198 i( t =0 && `LOG_COMPARE (& -> ady_l , &-> wag_l ) == 0) 1199 g_check ; 1201 de : 1202 r : 1207 `REP_SYSTEM_LOCK ( v ); 1208 i( t == 0 && 1209 `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1210 ! `IS_ZERO_LSN ( p -> ϡ_l ) && 1211 `LOG_COMPARE (& -> ady_l , & p -> ϡ_l ) >= 0) { 1212 * ϡ_lp = max_l ; 1213 `ZERO_LSN ( p -> ϡ_l ); 1214 `ZERO_LSN ( max_l ); 1215 t = DB_REP_LOGREADY ; 1222 i( t_y ) { 1223 p -> y_th --; 1224 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1225 "p_y: Deemy_th %d", p -> y_th )); 1228 i( t =0 && ! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1229 ! `IS_ZERO_LSN ( max_l )) { 1230 i( t_lp ! NULL ) 1231 * t_lp = max_l ; 1232 t = DB_REP_ISPERM ; 1233 `DB_ASSERT ( v , `LOG_COMPARE (& max_l , & -> max_rm_l ) >= 0); 1234 -> max_rm_l = max_l ; 1244 i(( t =0 || = DB_REP_ISPERM ) && 1245 p -> . _tup_come == 0 && 1246 ! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1247 (( cmp <0 && `F_ISSET ( , REPCTL_LOG_END )) || 1248 ( cmp =0 && ! `F_ISSET ( , REPCTL_RESEND )))) { 1249 p -> . _tup_come = 1; 1250 evt = 1; 1251 g = p ->gen; 1252 ma = p -> ma_id ; 1254 `REP_SYSTEM_UNLOCK ( v ); 1265 i(! `IS_ZERO_LSN ( p -> ckp_l ) && 1266 `LOG_COMPARE (& -> ady_l , & p -> ckp_l ) >= 0) { 1267 ve_l = p -> ckp_l ; 1268 `ZERO_LSN ( p -> ckp_l ); 1270 `ZERO_LSN ( ve_l ); 1277 i( t = DB_REP_ISPERM && `IS_USING_LEASES ( v ) && 1278 `timeecist (& max_ts )) { 1279 i(( t_t = `__p_upde_g ( v , & max_ts )) != 0) 1280 t = t_t ; 1281 i( `timeeccmp (& max_ts , & -> max_a_ts , >)) 1282 -> max_a_ts = max_ts ; 1285 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1286 i(! `IS_ZERO_LSN ( ve_l )) { 1290 `MUTEX_LOCK ( v , p -> mtx_ckp ); 1291 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1293 ( u_lg ) ve_l . fe , (u_lg)ve_l. offt )); 1294 t_t = `__memp_sync ( v , DB_SYNC_CHECKPOINT , & ve_l ); 1295 `MUTEX_UNLOCK ( v , p -> mtx_ckp ); 1297 i( evt ) { 1298 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1300 ( u_lg ) -> l . fe , (u_lgp->l. offt )); 1302 i(( t_t = `__p_fe_tupde ( v , g , ma )) != 0) { 1303 `DB_ASSERT ( v , t =0 || = DB_REP_ISPERM ); 1305 t = t_t ; 1306 out ; 1309 i( t =0 && -> y = REP_NEWFILE && -> db_log_autemove ) 1310 `__log_autemove ( v ); 1311 i( cڌ_dbt . da ! NULL ) 1312 `__os_u ( v , cڌ_dbt . da ); 1313 i( c_dbt . da ! NULL ) 1314 `__os_u ( v , c_dbt . da ); 1316 out : 1317 t ) { 1320 DB_REP_ISPERM : 1321 `RPRINT ( v , DB_VERB_REP_MSGS , 1322 ( v , "Returning ISPERM [%lu][%lu], cmp = %d", 1323 ( u_lg ) max_l . fe , (u_lg)max_l. offt , cmp )); 1325 DB_REP_LOGREADY : 1326 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 1328 ( u_lg ) ϡ_lp -> fe , 1329 ( u_lg ) ϡ_lp -> offt , cmp )); 1331 DB_REP_NOTPERM : 1332 i(! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 1333 ! `IS_ZERO_LSN ( max_l && t_lp ! NULL ) 1334 * t_lp = max_l ; 1336 `RPRINT ( v , DB_VERB_REP_MSGS , 1337 ( v , "Returning NOTPERM [%lu][%lu], cmp = %d", 1338 ( u_lg ) max_l . fe , (u_lg)max_l. offt , cmp )); 1341 `RPRINT ( v , DB_VERB_REP_MSGS , 1342 ( v , "Rug %d [%lu][%lu], cm%d", t , 1343 ( u_lg ) max_l . fe , (u_lg)max_l. offt , cmp )); 1347 ( t ); 1348 } } 1359 $__p_oss_txn ( v , c ) 1360 ENV * v ; 1361 DBT * c ; 1363 DBT da_dbt , * lock_dbt ; 1364 DB_LOCKER * lock ; 1365 DB_LOCKREQ q , * lvp ; 1366 DB_LOGC * logc ; 1367 DB_LSN ev_l , * lp ; 1368 DB_REP * db_p ; 1369 DB_THREAD_INFO * ; 1370 DB_TXNHEAD * txnfo ; 1371 LSN_COLLECTION lc ; 1372 REP * p ; 1373 __txn_g_gs * txn_gs ; 1374 __txn_g_42_gs * txn42_gs ; 1375 __txn_xa_g_gs * _gs ; 1376 u_t32_t y ; 1377 u_t i ; 1378 t , t_t ; 1380 db_p = v -> p_hd ; 1381 p = db_p -> gi ; 1382 logc = NULL ; 1383 txn_gs = NULL ; 1384 txn42_gs = NULL ; 1385 _gs = NULL ; 1386 txnfo = NULL ; 1388 `ENV_ENTER ( v , ); 1389 `memt (& da_dbt , 0, (data_dbt)); 1390 i( `F_ISSET ( v , ENV_THREAD )) 1391 `F_SET (& da_dbt , DB_DBT_REALLOC ); 1402 `LOGCOPY_32 ( v , & y , c -> da ); 1403 `memt (& lc , 0, (lc)); 1404 i( y = DB___txn_g ) { 1409 i( p -> vsi > DB_REPVERSION_44 ) { 1410 i(( t = `__txn_g_ad ( 1411 v , c -> da , & txn_gs )) != 0) 1412 ( t ); 1413 i( txn_gs -> code ! TXN_COMMIT ) { 1414 `__os_ ( v , txn_gs ); 1417 ev_l = txn_gs ->prev_lsn; 1418 lock_dbt = & txn_gs -> locks ; 1420 i(( t = `__txn_g_42_ad ( 1421 v , c -> da , & txn42_gs )) != 0) 1422 ( t ); 1423 i( txn42_gs -> code ! TXN_COMMIT ) { 1424 `__os_ ( v , txn42_gs ); 1427 ev_l = txn42_gs ->prev_lsn; 1428 lock_dbt = & txn42_gs -> locks ; 1432 `DB_ASSERT ( v , y = DB___txn_xa_g ); 1434 i(( t = `__txn_xa_g_ad ( 1435 v , c -> da , & _gs )) != 0) 1436 ( t ); 1437 ev_l = _gs ->prev_lsn; 1438 lock_dbt = & _gs -> locks ; 1442 i(( t = `__lock_id ( v , NULL , & lock )) != 0) 1443 r1 ; 1445 i(( t = 1446 `__lock_g_li ( v , lock , 0, DB_LOCK_WRITE , lock_dbt )) != 0) 1447 r ; 1450 i(( t = `__p_c_txn ( v , & ev_l , & lc )) != 0) 1451 r ; 1452 `qst ( lc . y ,c. Ƣs , ( DB_LSN ), __p_l_cmp ); 1459 i(( t = `__db_txi_ ( v , , 0, 0, NULL , & txnfo )) != 0) 1460 r ; 1463 i(( t = `__log_curs ( v , & logc )) != 0) 1464 r ; 1465 lp = & lc . y [0], i = 0; i <c. Ƣs ; i++,snp++) { 1466 i(( t = `__logc_g ( logc , lp , & da_dbt , DB_SET )) != 0) { 1467 `__db_rx ( v , "failedoeadheogt [%lu][%lu]", 1468 ( u_lg ) lp -> fe , (u_lgp-> offt ); 1469 r ; 1471 i(( t = `__db_dich ( v , &v-> cov_db , 1472 & da_dbt , lp , DB_TXN_APPLY , txnfo )) != 0) { 1473 `__db_rx ( v , "transaction failedt [%lu][%lu]", 1474 ( u_lg ) lp -> fe , (u_lgp-> offt ); 1475 r ; 1479 r : `memt (& q , 0, (req)); 1480 q . = DB_LOCK_PUT_ALL ; 1481 i(( t_t = 1482 `__lock_vec ( v , lock , 0, & q , 1, & lvp )!0 && t == 0) 1483 t = t_t ; 1485 i(( t_t = `__lock_id_ ( v , lock )!0 && t == 0) 1486 t = t_t ; 1488 r1 : i( txn_gs ! NULL ) 1489 `__os_ ( v , txn_gs ); 1490 i( txn42_gs ! NULL ) 1491 `__os_ ( v , txn42_gs ); 1492 i( _gs ! NULL ) 1493 `__os_ ( v , _gs ); 1494 i( lc . y ! NULL ) 1495 `__os_ ( v , lc . y ); 1497 i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 1498 t = t_t ; 1500 i( txnfo ! NULL ) 1501 `__db_txi_d ( v , txnfo ); 1503 i( `F_ISSET (& da_dbt , DB_DBT_REALLOC && da_dbt. da ! NULL ) 1504 `__os_u ( v , da_dbt . da ); 1506 #ifde HAVE_STATISTICS 1507 i( t == 0) 1511 p -> . _txns_d ++; 1514 ( t ); 1515 } } 1524 $__p_c_txn ( v , lp , lc ) 1525 ENV * v ; 1526 DB_LSN * lp ; 1527 LSN_COLLECTION * lc ; 1529 __txn_chd_gs * gp ; 1530 DB_LOGC * logc ; 1531 DB_LSN c_l ; 1532 DBT da ; 1533 u_t32_t y ; 1534 u_t oc ; 1535 t , t_t ; 1537 `memt (& da , 0, (data)); 1538 `F_SET (& da , DB_DBT_REALLOC ); 1540 i(( t = `__log_curs ( v , & logc )) != 0) 1541 ( t ); 1543 ! `IS_ZERO_LSN (* lp ) && 1544 ( t = `__logc_g ( logc , lp , & da , DB_SET )) == 0) { 1545 `LOGCOPY_32 ( v , & y , da .data); 1546 i( y = DB___txn_chd ) { 1547 i(( t = `__txn_chd_ad ( 1548 v , da .da, & gp )) != 0) 1549 r ; 1550 c_l = gp ->c_lsn; 1551 * lp = gp -> ev_l ; 1552 `__os_ ( v , gp ); 1553 t = `__p_c_txn ( v , & c_l , lc ); 1555 i( lc -> oc <c-> Ƣs + 1) { 1556 oc = lc ->nalloc == 0 ? 20 :c->nalloc * 2; 1557 i(( t = `__os_loc ( v , 1558 oc * ( DB_LSN ), & lc -> y )) != 0) 1559 r ; 1560 lc -> oc =alloc; 1562 lc -> y [lc-> Ƣs ++] = * lp ; 1571 `LOGCOPY_TOLSN ( v , lp , ( u_t8_t *) da .data + 1572 ( u_t32_t ) + (u_int32_t)); 1575 i( t != 0) 1576 r ; 1578 i( t != 0) 1579 `__db_rx ( v , "collect failedt: [%lu][%lu]", 1580 ( u_lg ) lp -> fe , (u_lgp-> offt ); 1582 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 1583 t = t_t ; 1584 i( da .d! NULL ) 1585 `__os_u ( v , da .data); 1586 ( t ); 1587 } } 1594 $__p_l_cmp ( l1 , l2 ) 1595 cڡ * l1 , * l2 ; 1598 ( `LOG_COMPARE (( DB_LSN *) l1 , (DB_LSN *) l2 )); 1599 } } 1608 $__p_wfe ( v , , c ) 1609 ENV * v ; 1610 __p_cڌ_gs * ; 1611 DBT * c ; 1613 DB_LOG * db ; 1614 DB_LSN tm ; 1615 DB_REP * db_p ; 1616 LOG * ; 1617 REP * p ; 1618 __p_wfe_gs nf_gs ; 1619 t ; 1621 db = v -> lg_hd ; 1622 = db -> gfo . imy ; 1623 db_p = v -> p_hd ; 1624 p = db_p -> gi ; 1629 i( `F_ISSET ( p , REP_F_NEWFILE )) 1631 i( -> l . fe + 1 > -> ady_l .file) { 1632 i( c = NULL ||ec-> size == 0) { 1633 `RPRINT ( v , DB_VERB_REP_MISC , (env, 1635 ( u_lg -> log_vsi )); 1636 nf_gs . vsi = -> log_vsi ; 1637 } i( -> p_vsi < DB_REPVERSION_47 ) 1638 nf_gs . vsi = *( u_t32_t *) c -> da ; 1639 i(( t = `__p_wfe_unmsh ( v , & nf_gs , 1640 c -> da ,ec-> size , NULL )) != 0) 1641 ( t ); 1642 `RPRINT ( v , DB_VERB_REP_MISC , 1643 ( v , "rep_newfile: File %lu vers %lu", 1644 ( u_lg ) -> l . fe + 1, (u_lg) nf_gs . vsi )); 1655 `REP_SYSTEM_LOCK ( v ); 1656 `F_SET ( p , REP_F_NEWFILE ); 1657 `REP_SYSTEM_UNLOCK ( v ); 1658 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1659 `LOG_SYSTEM_LOCK ( v ); 1660 t = `__log_wfe ( db , & tm , 0, nf_gs . vsi ); 1661 `LOG_SYSTEM_UNLOCK ( v ); 1662 `MUTEX_LOCK ( v , p -> mtx_db ); 1663 `REP_SYSTEM_LOCK ( v ); 1664 `F_CLR ( p , REP_F_NEWFILE ); 1665 `REP_SYSTEM_UNLOCK ( v ); 1666 i( t == 0) 1667 -> ady_l = tm ; 1668 ( t ); 1672 } } 1681 $__p_do_ckp ( v , c , ) 1682 ENV * v ; 1683 DBT * c ; 1684 __p_cڌ_gs * ; 1686 DB_ENV * dbv ; 1687 __txn_ckp_gs * ckp_gs ; 1688 DB_LSN ckp_l ; 1689 REP * p ; 1690 t ; 1692 dbv = v ->dbenv; 1695 i(( t = `__txn_ckp_ad ( v , c -> da , & ckp_gs )) != 0) 1696 ( t ); 1697 ckp_l = ckp_gs ->ckp_lsn; 1698 `__os_ ( v , ckp_gs ); 1700 p = v -> p_hd -> gi ; 1702 `MUTEX_UNLOCK ( v , p -> mtx_db ); 1703 `DB_TEST_WAIT ( v ,nv-> _check ); 1716 () `__memp_t_cfig ( dbv , DB_MEMP_SUPPRESS_WRITE , 1); 1717 `MUTEX_LOCK ( v , p -> mtx_ckp ); 1718 t = `__memp_sync ( v , DB_SYNC_CHECKPOINT , & ckp_l ); 1719 `MUTEX_UNLOCK ( v , p -> mtx_ckp ); 1720 () `__memp_t_cfig ( dbv , DB_MEMP_SUPPRESS_WRITE , 0); 1723 i( t == 0) 1724 t = `__txn_updeckp ( v , & -> l ); 1726 `__db_rx ( v , "Error syncing ckp [%lu][%lu]", 1727 ( u_lg ) ckp_l . fe , (u_lg)ckp_l. offt ); 1728 t = `__v_nic ( v ,et); 1731 `MUTEX_LOCK ( v , p -> mtx_db ); 1732 ( t ); 1733 } } 1740 $__p_mf ( v , , l , c ) 1741 ENV * v ; 1742 DB_THREAD_INFO * ; 1743 DBT * l ; 1744 DBT * c ; 1746 DB * dbp ; 1747 DBC * dbc ; 1748 DB_REP * db_p ; 1749 t , t_t ; 1751 db_p = v -> p_hd ; 1752 dbp = db_p -> p_db ; 1753 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 1754 ( t ); 1757 `F_SET ( l , DB_DBT_REALLOC ); 1758 `F_SET ( c , DB_DBT_REALLOC ); 1759 i(( t = `__dbc_g ( dbc , l , c , DB_RMW | DB_FIRST )) == 0) 1760 t = `__dbc_d ( dbc , 0); 1761 i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1762 t = t_t ; 1764 ( t ); 1765 } } 1772 $__p_gxt ( v , ) 1773 ENV * v ; 1774 DB_THREAD_INFO * ; 1776 DB * dbp ; 1777 DBC * dbc ; 1778 DBT l_dbt , xec_dbt ; 1779 DB_LOG * db ; 1780 DB_REP * db_p ; 1781 LOG * ; 1782 __p_cڌ_gs * ; 1783 t , t_t ; 1785 db = v -> lg_hd ; 1786 = db -> gfo . imy ; 1788 db_p = v -> p_hd ; 1789 dbp = db_p -> p_db ; 1791 i(( t = `__db_curs ( dbp , , NULL , & dbc , 0)) != 0) 1792 ( t ); 1804 `memt (& xec_dbt , 0, (nextrec_dbt)); 1805 `F_SET (& xec_dbt , DB_DBT_PARTIAL ); 1806 xec_dbt . un =exec_dbt. dn = 0; 1808 `memt (& l_dbt , 0, (lsn_dbt)); 1809 t = `__dbc_g ( dbc , & l_dbt , & xec_dbt , DB_FIRST ); 1810 i( t ! DB_NOTFOUND &&et != 0) 1811 r ; 1813 i( t = DB_NOTFOUND ) { 1814 `ZERO_LSN ( -> wag_l ); 1821 r ; 1823 = ( __p_cڌ_gs *) l_dbt . da ; 1824 -> wag_l = -> l ; 1826 r : i(( t_t = `__dbc_o ( dbc )!0 && t == 0) 1827 t = t_t ; 1828 ( t ); 1829 } } 1840 $__p_oss_c ( v , , , c , t_t , t_lp ) 1841 ENV * v ; 1842 DB_THREAD_INFO * ; 1843 __p_cڌ_gs * ; 1844 DBT * c ; 1845 db_timeec * t_t ; 1846 DB_LSN * t_lp ; 1848 DB * dbp ; 1849 DBT cڌ_dbt , key_dbt , c_dbt ; 1850 DB_REP * db_p ; 1851 REP * p ; 1852 db_timeec msg_time ; 1853 u_t32_t y , txnid ; 1854 t , t_t ; 1856 db_p = v -> p_hd ; 1857 p = db_p -> gi ; 1858 dbp = db_p -> p_db ; 1859 t = 0; 1861 i( -> y = REP_NEWFILE ) { 1862 t = `__p_wfe ( v , , c ); 1866 `LOGCOPY_32 ( v , & y , c -> da ); 1867 `memt (& cڌ_dbt , 0, (control_dbt)); 1868 `memt (& c_dbt , 0, (rec_dbt)); 1869 `timeect (& msg_time , -> msg_c ,p-> msg_nc ); 1889 i( y ! DB___txn_ckp || `F_ISSET ( p , REP_F_RECOVER_LOG )) { 1890 i(( t = `__log_p_put ( v , & -> l , c , 0)) != 0) 1891 ( t ); 1892 `STAT ( p -> . _log_cds ++); 1893 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) { 1894 * t_lp = -> l ; 1895 out ; 1899 y ) { 1900 DB___dbg_gi : 1918 `LOGCOPY_32 ( v , & txnid , 1919 ( u_t8_t *) c -> da + ( u_t32_t )); 1920 i( txnid = TXN_INVALID ) 1921 t = `__db_dich ( v , &v-> cov_db , 1922 c , & -> l , DB_TXN_APPLY , NULL ); 1924 DB___txn_g : 1934 t = 0; 1935 i(! `F_ISSET ( db_p , DBREP_OPENFILES )) { 1936 t = `__txn_ݒfes ( v , , NULL , 1); 1937 `F_SET ( db_p , DBREP_OPENFILES ); 1939 i( t == 0) 1940 t = `__p_oss_txn ( v , c ); 1941 } t = DB_LOCK_DEADLOCK ); 1944 i( t =0 && ! `F_ISSET ( v -> dbv , DB_ENV_TXN_NOSYNC )) 1945 t = `__log_ush ( v , NULL ); 1946 i( t != 0) { 1947 `__db_rx ( v , "Errorrocessingxn [%lu][%lu]", 1948 ( u_lg ) -> l . fe , (u_lgp->l. offt ); 1949 t = `__v_nic ( v ,et); 1952 DB___txn_xa_g : 1953 t = `__log_ush ( v , NULL ); 1957 p -> max__l = -> l ; 1958 `RPRINT ( v , DB_VERB_REP_MSGS , 1959 ( v , "process_rec:reparet [%lu][%lu]", 1960 ( u_lg ) p -> max__l . fe , 1961 ( u_lg ) p -> max__l . offt )); 1963 DB___txn_ckp : 1973 `memt (& key_dbt , 0, (key_dbt)); 1974 key_dbt . da = ; 1975 key_dbt . size = (* ); 1981 t = `__db_put ( dbp , , NULL , & key_dbt , c , DB_NOOVERWRITE ); 1982 i( t = DB_KEYEXIST ) { 1983 i( t_lp ! NULL ) 1984 * t_lp = -> l ; 1985 t = DB_REP_NOTPERM ; 1987 i( t != 0) 1999 i(( t = `__p_do_ckp ( v , c , )) == 0) 2000 t = `__log_p_put ( v , & -> l , c , 2001 DB_LOG_CHKPNT ); 2002 i(( t_t = `__p_mf ( v , , 2003 & cڌ_dbt , & c_dbt )!0 && t == 0) 2004 t = t_t ; 2009 i( t == 0) 2010 t = `__log_ush ( v , NULL ); 2016 out : 2017 i( t =0 && `F_ISSET ( , REPCTL_PERM )) 2018 * t_lp = -> l ; 2019 i( `IS_USING_LEASES ( v ) && 2020 `F_ISSET ( , REPCTL_LEASE )) 2021 * t_t = msg_time ; 2027 i( t =0 && `F_ISSET ( , REPCTL_FLUSH )) 2028 t = `__log_ush ( v , NULL ); 2029 i( cڌ_dbt . da ! NULL ) 2030 `__os_u ( v , cڌ_dbt . da ); 2031 i( c_dbt . da ! NULL ) 2032 `__os_u ( v , c_dbt . da ); 2034 ( t ); 2035 } } 2046 $__p_nd_q ( v , q ) 2047 ENV * v ; 2048 q ; 2050 DB_LOG * db ; 2051 DB_LSN l ; 2052 DB_REP * db_p ; 2053 LOG * ; 2054 REP * p ; 2055 t ; 2056 u_t32_t gags , pags ; 2058 db_p = v -> p_hd ; 2059 p = db_p -> gi ; 2060 db = v -> lg_hd ; 2061 = db -> gfo . imy ; 2062 t = 0; 2064 pags = p -> ags ; 2068 i( `FLD_ISSET ( pags , REP_F_DELAY )) 2069 ( t ); 2070 gags = q ? REP_GAP_REREQUEST : 0; 2072 i( `FLD_ISSET ( pags , REP_F_RECOVER_VERIFY )) { 2073 `MUTEX_LOCK ( v , p -> mtx_db ); 2074 l = -> vify_l ; 2075 `MUTEX_UNLOCK ( v , p -> mtx_db ); 2076 i(! `IS_ZERO_LSN ( l )) 2077 () `__p_nd_mesge ( v , p -> ma_id , 2078 REP_VERIFY_REQ , & l , NULL , 0, DB_REP_REREQUEST ); 2079 } i( `FLD_ISSET ( pags , REP_F_RECOVER_UPDATE )) { 2083 () `__p_nd_mesge ( v , p -> ma_id , 2084 REP_UPDATE_REQ , NULL , NULL, 0, 0); 2085 } i( `FLD_ISSET ( pags , REP_F_RECOVER_PAGE )) { 2086 `REP_SYSTEM_LOCK ( v ); 2087 t = `__p_pgg_q ( v , p , NULL , gags ); 2088 `REP_SYSTEM_UNLOCK ( v ); 2090 `MUTEX_LOCK ( v , p -> mtx_db ); 2091 t = `__p_logg_q ( v , p , NULL , gags ); 2092 `MUTEX_UNLOCK ( v , p -> mtx_db ); 2095 ( t ); 2096 } } 2108 $__p_check_deq ( v , p ) 2109 ENV * v ; 2110 REP * p ; 2113 DB_LOG * db ; 2114 LOG * ; 2115 db_timeec now ; 2116 q ; 2118 db = v -> lg_hd ; 2119 = db -> gfo . imy ; 2120 `__os_gtime ( v , & now , 1); 2121 `timeecsub (& now , & -> rcvd_ts ); 2122 q = `timeeccmp (& now , & -> wa_ts , >=); 2123 i( q ) { 2127 `timeedd (& -> wa_ts , &lp->wait_ts); 2128 i( `timeeccmp (& -> wa_ts , & p -> max_g , >)) 2129 -> wa_ts = p -> max_g ; 2130 `__os_gtime ( v , & -> rcvd_ts , 1); 2132 ( q ); 2133 } } 2142 $__p_sk_msg ( v , p , eid , y ) 2143 ENV * v ; 2144 REP * p ; 2145 eid ; 2146 u_t32_t y ; 2148 do_q , t ; 2150 t = 0; 2155 i( `F_ISSET ( p , REP_F_CLIENT && `REP_MSG_REQ ( y )) 2156 do_q = 1; 2159 `MUTEX_LOCK ( v , p -> mtx_db ); 2160 do_q = `__p_check_deq ( v , p ); 2161 `MUTEX_UNLOCK ( v , p -> mtx_db ); 2167 i( do_q && y ! REP_MASTER_REQ ) { 2177 i( p -> ma_id = DB_EID_INVALID ) 2178 () `__p_nd_mesge ( v , 2179 DB_EID_BROADCAST , REP_MASTER_REQ , NULL , NULL, 0, 0); 2180 i( eid = p -> ma_id ) 2181 t = `__p_nd_q ( v , 0); 2182 i( `F_ISSET ( p , REP_F_CLIENT )) 2183 () `__p_nd_mesge ( v , 2184 eid , REP_REREQUEST , NULL , NULL, 0, 0); 2186 ( t ); 2187 } } 2190 $__p_fe_wma ( v , g , ma ) 2191 ENV * v ; 2192 u_t32_t g ; 2193 ma ; 2195 DB_REP * db_p ; 2196 REP * p ; 2198 db_p = v -> p_hd ; 2199 p = db_p -> gi ; 2201 `REP_EVENT_LOCK ( v ); 2206 i( p -> wma_evt_g < g ) { 2207 `__p_fe_evt ( v , DB_EVENT_REP_NEWMASTER , & ma ); 2208 p -> wma_evt_g = g ; 2210 `REP_EVENT_UNLOCK ( v ); 2212 } } 2215 $__p_fe_tupde ( v , g , ma ) 2216 ENV * v ; 2217 u_t32_t g ; 2218 ma ; 2220 DB_REP * db_p ; 2221 REP * p ; 2223 db_p = v -> p_hd ; 2224 p = db_p -> gi ; 2226 `REP_EVENT_LOCK ( v ); 2232 i( p -> wma_evt_g < g ) { 2233 `__p_fe_evt ( v , DB_EVENT_REP_NEWMASTER , & ma ); 2234 p -> wma_evt_g = g ; 2246 i( p -> wma_evt_g = g ) 2247 `__p_fe_evt ( v , DB_EVENT_REP_STARTUPDONE , NULL ); 2248 `REP_EVENT_UNLOCK ( v ); 2250 } } @../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 (( ENV *, REP *)); 17 __p_g_ __P (( ENV *, REP *)); 26 $__p_ݒ ( v ) 27 ENV * v ; 29 DB_REP * db_p ; 30 REGENV * nv ; 31 REGINFO * f ; 32 REP * p ; 33 t ; 35 db_p = v -> p_hd ; 36 f = v -> 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 v , MTX_REP_REGION , 0, & p -> mtx_gi )) != 0) 53 ( t ); 61 i(( t = `__mux_loc ( 62 v , MTX_REP_DATABASE , 0, & p -> mtx_db )) != 0) 63 ( t ); 65 i(( t = `__mux_loc ( 66 v , MTX_REP_CHKPT , 0, & p -> mtx_ckp )) != 0) 67 ( t ); 69 i(( t = `__mux_loc ( 70 v , 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_ ( v , p )) != 0) 83 ( t ); 84 i(( t = `__p_eg_ ( v , 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 p -> ock_ba = db_p ->clock_base; 97 `timeecr (& p -> a_duti ); 98 `timeecr (& p -> g_expe ); 99 p -> chk_day = db_p ->chkpt_delay; 100 p -> iܙy = db_p -> my_iܙy ; 102 `F_SET ( p , REP_F_NOARCHIVE ); 105 nv -> p_off = `R_OFFSET ( f , p ); 106 () `time (& nv -> p_timeamp ); 107 nv -> _timeamp = 0; 108 `F_CLR ( nv , DB_REGENV_REPLOCKED ); 110 p = `R_ADDR ( f , nv -> p_off ); 112 db_p -> gi = p ; 115 } } 124 $__p_v_esh ( v ) 125 ENV * v ; 127 DB_REP * db_p ; 128 REGENV * nv ; 129 REGINFO * f ; 130 REP * p ; 131 t , t_t ; 133 db_p = v -> p_hd ; 134 p = db_p -> gi ; 135 f = v -> gfo ; 136 nv = f -> imy ; 137 t = 0; 144 i( nv -> ft == 1) { 145 `F_CLR ( p , REP_F_GROUP_ESTD ); 146 `F_CLR ( p , REP_F_START_CALLED ); 154 i( `F_ISSET ( v , ENV_PRIVATE )) { 155 db_p = v -> p_hd ; 156 i( db_p -> gi ! NULL ) { 157 t = `__mux_ ( v , & db_p -> gi -> mtx_gi ); 158 i(( t_t = `__mux_ ( v , 159 & db_p -> gi -> mtx_db )!0 && t == 0) 160 t = t_t ; 161 i(( t_t = `__mux_ ( v , 162 & db_p -> gi -> mtx_ckp )!0 && t == 0) 163 t = t_t ; 164 i(( t_t = `__mux_ ( v , 165 & db_p -> gi -> mtx_evt )!0 && t == 0) 166 t = t_t ; 169 i( nv -> p_off ! INVALID_ROFF ) 170 `__v_loc_ ( f , `R_ADDR (f, nv -> p_off )); 173 v -> p_hd -> gi = NULL ; 174 ( t ); 175 } } 184 $__p_v_o ( v ) 185 ENV * v ; 187 t , t_t ; 189 t = `__p_eo ( v ); 190 i(( t_t = `__p_ofes ( v , 0)!0 && t == 0) 191 t = t_t ; 192 ( t ); 193 } } 203 $__p_eo ( v ) 204 ENV * v ; 206 DB_LOG * db ; 207 DB_REP * db_p ; 208 LOG * ; 209 REP_BULK bulk ; 210 t ; 212 t = 0; 214 db_p = v -> p_hd ; 215 db = v -> lg_hd ; 222 i( db_p = NULL || db_p-> gi == NULL) 223 ( t ); 224 `MUTEX_LOCK ( v , db_p -> gi -> mtx_db ); 225 i( db_p -> p_db ! NULL ) { 226 t = `__db_o ( db_p -> p_db , NULL , DB_NOSYNC ); 227 db_p -> p_db = NULL ; 233 i( db = NULL ) 234 out ; 235 = db -> gfo . imy ; 240 i( -> bulk_off !0 && db_p -> nd ! NULL ) { 241 `memt (& bulk , 0, (bulk)); 242 bulk . addr = `R_ADDR (& db -> gfo , -> bulk_buf ); 243 bulk . of = & -> bulk_off ; 244 bulk . n = -> bulk_n ; 245 bulk . ty = REP_BULK_LOG ; 246 bulk . eid = DB_EID_BROADCAST ; 247 bulk . ag = & -> bulk_ags ; 252 () `__p_nd_bulk ( v , & bulk , 0); 254 out : `MUTEX_UNLOCK ( v , db_p -> gi -> mtx_db ); 255 ( t ); 256 } } 268 $__p_ofes ( v , do_ed ) 269 ENV * v ; 270 do_ed ; 272 DB_LOG * db ; 273 DB_REP * db_p ; 274 t ; 276 t = 0; 278 db_p = v -> p_hd ; 279 db = v -> lg_hd ; 281 i( db_p = NULL || db_p-> gi == NULL) 282 ( t ); 283 i( db = NULL ) 284 ( t ); 285 i(( t = `__dbg_o_fes ( v , do_ed )) == 0) 286 `F_CLR ( db_p , DBREP_OPENFILES ); 288 ( t ); 289 } } 299 $__p_eg_ ( v , p ) 300 ENV * v ; 301 REP * p ; 303 DB_FH * fhp ; 304 t ; 305 size_t t ; 306 * p ; 308 i(( t = 309 `__db_ame ( v , DB_APP_NONE , REP_EGENNAME , 0, NULL , & p )) != 0) 310 ( t ); 314 i( `__os_exis ( v , p , NULL ) != 0) { 315 p -> eg =-> g + 1; 316 i(( t = `__p_wre_eg ( v , p -> eg )) != 0) 317 r ; 322 i(( t = `__os_ݒ ( v , p , 0, 323 DB_OSO_RDONLY , DB_MODE_600 , & fhp )) != 0) 324 r ; 325 i(( t = `__os_ad ( v , fhp , & p -> eg , ( u_t32_t ), 326 & t )!0 || c !( u_t32_t )) 327 r1 ; 328 `RPRINT ( v , DB_VERB_REP_MISC , 329 ( v , "Rd ieg %lu", ( u_lg ) p -> eg )); 330 r1 : () `__os_ohd ( v , fhp ); 332 r : `__os_ ( v , p ); 333 ( t ); 334 } } 343 $__p_wre_eg ( v , eg ) 344 ENV * v ; 345 u_t32_t eg ; 347 DB_FH * fhp ; 348 t ; 349 size_t t ; 350 * p ; 352 i(( t = 353 `__db_ame ( v , DB_APP_NONE , REP_EGENNAME , 0, NULL , & p )) != 0) 354 ( t ); 355 i(( t = `__os_ݒ ( 356 v , p , 0, DB_OSO_CREATE | DB_OSO_TRUNC , DB_MODE_600 , & fhp )) == 0) { 357 i(( t = `__os_wre ( v , fhp , & eg , ( u_t32_t ), 358 & t )!0 || (( t = `__os_fsync ( v , fhp )) != 0)) 359 `__db_r ( v , t , "%s", p ); 360 () `__os_ohd ( v , fhp ); 362 `__os_ ( v , p ); 363 ( t ); 364 } } 374 $__p_g_ ( v , p ) 375 ENV * v ; 376 REP * p ; 378 DB_FH * fhp ; 379 t ; 380 size_t t ; 381 * p ; 383 i(( t = 384 `__db_ame ( v , DB_APP_NONE , REP_GENNAME , 0, NULL , & p )) != 0) 385 ( t ); 389 i( `__os_exis ( v , p , NULL ) != 0) { 390 p -> g = 0; 391 i(( t = `__p_wre_g ( v , p -> g )) != 0) 392 r ; 397 i(( t = `__os_ݒ ( v , p , 0, 398 DB_OSO_RDONLY , DB_MODE_600 , & fhp )) != 0) 399 r ; 400 i(( t = `__os_ad ( v , fhp , & p -> g , ( u_t32_t ), 401 & t )) < 0 || cnt == 0) 402 r1 ; 403 `RPRINT ( v , DB_VERB_REP_MISC , (env, "Read in gen %lu", 404 ( u_lg ) p -> g )); 405 r1 : () `__os_ohd ( v , fhp ); 407 r : `__os_ ( v , p ); 408 ( t ); 409 } } 418 $__p_wre_g ( v , g ) 419 ENV * v ; 420 u_t32_t g ; 422 DB_FH * fhp ; 423 t ; 424 size_t t ; 425 * p ; 427 i(( t = 428 `__db_ame ( v , DB_APP_NONE , REP_GENNAME , 0, NULL , & p )) != 0) 429 ( t ); 430 i(( t = `__os_ݒ ( 431 v , p , 0, DB_OSO_CREATE | DB_OSO_TRUNC , DB_MODE_600 , & fhp )) == 0) { 432 i(( t = `__os_wre ( v , fhp , & g , ( u_t32_t ), 433 & t )!0 || (( t = `__os_fsync ( v , fhp )) != 0)) 434 `__db_r ( v , t , "%s", p ); 435 () `__os_ohd ( v , fhp ); 437 `__os_ ( v , p ); 438 ( t ); 439 } } @../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 (( ENV *, u_t32_t )); 18 __p_t_s __P (( ENV *, u_t32_t )); 19 __p_ __P (( 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 ENV * v ; 35 t ; 37 v = dbv ->env; 39 `ENV_REQUIRES_CONFIG_XX ( 40 v , p_hd , "DB_ENV->p_", DB_INIT_REP ); 42 i(( t = `__db_fchk ( v , 43 "DB_ENV->p_", ags , DB_STAT_CLEAR )) != 0) 44 ( t ); 46 `ENV_ENTER ( v , ); 47 t = `__p_ ( v , p , ags ); 48 `ENV_LEAVE ( v , ); 50 ( t ); 51 } } 58 $__p_ ( v , p , ags ) 59 ENV * v ; 60 DB_REP_STAT ** p ; 61 u_t32_t ags ; 63 DB_LOG * db ; 64 DB_REP * db_p ; 65 DB_REP_STAT * s ; 66 LOG * ; 67 REP * p ; 68 u_t32_t queued , tupde ; 69 dock , t ; 71 db_p = v -> p_hd ; 72 p = db_p -> gi ; 73 db = v -> lg_hd ; 74 = db -> gfo . imy ; 76 * p = NULL ; 79 i(( t = `__os_umloc ( v , ( DB_REP_STAT ), & s )) != 0) 80 ( t ); 87 dock = `FLD_ISSET ( p -> ags , REP_F_RECOVER_MASK ) ? 0 : 1; 88 `memy ( s , & p -> , (*stats)); 91 i( `F_ISSET ( p , REP_F_EPHASE1 )) 92 s -> _ei_us = 1; 93 i( `F_ISSET ( p , REP_F_EPHASE2 )) 94 s -> _ei_us = 2; 96 s -> _ei_nses = p -> ses ; 97 s -> _ei_cur_wr = p -> wr ; 98 s -> _ei_iܙy = p -> w_iܙy ; 99 s -> _ei_g = p -> w_g ; 100 s -> _ei_l = p -> w_l ; 101 s -> _ei_ves = p -> ves ; 102 s -> _ei_nves = p -> nves ; 103 s -> _ei_tbak = p -> w_tbak ; 106 s -> _v_id = p -> eid ; 107 s -> _v_iܙy = p -> iܙy ; 108 s -> _nses = p -> nses ; 109 s -> _ma = p -> ma_id ; 110 s -> _g = p -> g ; 111 s -> _eg = p -> eg ; 113 i( `F_ISSET ( p , REP_F_MASTER )) 114 s -> _us = DB_REP_MASTER ; 115 i( `F_ISSET ( p , REP_F_CLIENT )) 116 s -> _us = DB_REP_CLIENT ; 118 s -> _us = 0; 120 i( `LF_ISSET ( DB_STAT_CLEAR )) { 121 queued = p -> . _log_queued ; 122 tupde = p -> . _tup_come ; 123 `memt (& p -> , 0, (rep->stat)); 124 p -> . _log_queued =->. _log_queued_tٮ = 125 p -> . _log_queued_max = queued ; 126 p -> . _tup_come = tupde ; 133 i( dock ) 134 `MUTEX_LOCK ( v , p -> mtx_db ); 135 i( `F_ISSET ( p , REP_F_CLIENT )) { 136 s -> _xt_l = -> ady_l ; 137 s -> _wag_l = -> wag_l ; 138 s -> _xt_pg = p -> ady_pg ; 139 s -> _wag_pg = p -> wag_pg ; 140 s -> _max_a_c = ( u_t32_t ) -> max_a_ts . tv_c ; 141 s -> _max_a_uc = ( u_t32_t ) 142 ( -> max_a_ts . tv_nc / NS_PER_US ); 144 i( `F_ISSET ( p , REP_F_MASTER )) { 145 `LOG_SYSTEM_LOCK ( v ); 146 s -> _xt_l = -> l ; 147 `LOG_SYSTEM_UNLOCK ( v ); 149 `ZERO_LSN ( s -> _xt_l ); 150 `ZERO_LSN ( s -> _wag_l ); 151 s -> _max_a_c = 0; 152 s -> _max_a_uc = 0; 154 s -> _max_rm_l = -> max_rm_l ; 155 i( dock ) 156 `MUTEX_UNLOCK ( v , p -> mtx_db ); 158 * p = s ; 160 } } 169 $__p__t_ ( dbv , ags ) 170 DB_ENV * dbv ; 171 u_t32_t ags ; 173 DB_THREAD_INFO * ; 174 ENV * v ; 175 t ; 177 v = dbv ->env; 179 `ENV_REQUIRES_CONFIG_XX ( 180 v , p_hd , "DB_ENV->p__t", DB_INIT_REP ); 182 i(( t = `__db_fchk ( v , "DB_ENV->rep_stat_print", 183 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 184 ( t ); 186 `ENV_ENTER ( v , ); 187 t = `__p__t ( v , ags ); 188 `ENV_LEAVE ( v , ); 190 ( t ); 191 } } 200 $__p__t ( v , ags ) 201 ENV * v ; 202 u_t32_t ags ; 204 u_t32_t ig_ags ; 205 t ; 207 ig_ags = ags ; 208 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 209 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 210 t = `__p_t_s ( v , ig_ags ); 211 i( ags =0 || t != 0) 212 ( t ); 215 i( `LF_ISSET ( DB_STAT_ALL ) && 216 ( t = `__p_t_l ( v , ig_ags )) != 0) 217 ( t ); 220 } } 227 $__p_t_s ( v , ags ) 228 ENV * v ; 229 u_t32_t ags ; 231 DB_REP_STAT * ; 232 is_ , t ; 233 * p ; 235 i(( t = `__p_ ( v , & , ags )) != 0) 236 ( t ); 238 i( `LF_ISSET ( DB_STAT_ALL )) 239 `__db_msg ( v , "Defaulteplicationegion information:"); 240 is_ = 0; 241 -> _us ) { 242 DB_REP_MASTER : 243 `__db_msg ( v , 246 DB_REP_CLIENT : 247 `__db_msg ( v , 249 is_ = 1; 252 `__db_msg ( v , 257 `__db_msg ( v , "%lu/%lu\t%s", 258 ( u_lg ) -> _xt_l . fe , (u_lg)->_xt_l. offt , 259 is_ ? "Next LSNxpected" : "Next LSNo be used"); 260 `__db_msg ( v , "%lu/%lu\t%s", 261 ( u_lg ) -> _wag_l . fe , (u_lg)->_wag_l. offt , 262 -> _wag_l . fe == 0 ? 265 `__db_msg ( v , "%lu/%lu\t%s", 266 ( u_lg ) -> _max_rm_l . fe , 267 ( u_lg ) -> _max_rm_l . offt , 268 -> _max_rm_l . fe == 0 ? 272 `__db_dl ( v , "Nexgnumbxed", ( u_lg ) -> _xt_pg ); 273 p = -> _wag_pg = PGNO_INVALID ? 276 `__db_msg ( v , "%lu\t%s", ( u_lg ) -> _wag_pg , p ); 277 `__db_dl ( v , 279 ( u_lg ) -> _dupmas ); 280 i( -> _v_id ! DB_EID_INVALID ) 281 `__db_dl ( v , "CuvmID", ( u_lg ) -> _v_id ); 283 `__db_msg ( v , "No currentnvironment ID"); 284 `__db_dl ( v , 285 "Cuvmiܙy", ( u_lg ) -> _v_iܙy ); 286 `__db_dl ( v , "Cugiڂumb", ( u_lg ) -> _g ); 287 `__db_dl ( v , 288 "Cuei giڂumb", ( u_lg ) -> _eg ); 289 `__db_dl ( v , "Number of duplicateogecordseceived", 290 ( u_lg ) -> _log_duid ); 291 `__db_dl ( v , "Number ofogecords currently queued", 292 ( u_lg ) -> _log_queued ); 293 `__db_dl ( v , "Maximumumber ofogecordsver queuedt once", 294 ( u_lg ) -> _log_queued_max ); 295 `__db_dl ( v , "Totalumber ofogecords queued", 296 ( u_lg ) -> _log_queued_tٮ ); 297 `__db_dl ( v , 299 ( u_lg ) -> _log_cds ); 300 `__db_dl ( v , "Number ofogecords missedndequested", 301 ( u_lg ) -> _log_queed ); 302 i( -> _ma ! DB_EID_INVALID ) 303 `__db_dl ( v , "Cuma ID", ( u_lg ) -> _ma ); 305 `__db_msg ( v , "No current master ID"); 306 `__db_dl ( v , "Number ofimeshe master has changed", 307 ( u_lg ) -> _ma_chges ); 308 `__db_dl ( v , 310 ( u_lg ) -> _msgs_badg ); 311 `__db_dl ( v , "Number of messageseceivedndrocessed", 312 ( u_lg ) -> _msgs_osd ); 313 `__db_dl ( v , "Number of messages ignored dueoendingecovery", 314 ( u_lg ) -> _msgs_cov ); 315 `__db_dl ( v , "Number of failed message sends", 316 ( u_lg ) -> _msgs_nd_us ); 317 `__db_dl ( v , "Numb omesge", ( u_lg ) -> _msgs_ ); 318 `__db_dl ( v , 319 "Numb ow smesgeived", ( u_lg ) -> _wses ); 320 `__db_dl ( v , 322 ( u_lg ) -> _nses ); 323 `__db_dl ( v , "Tnsmissiچimed", ( u_lg ) -> _hrَes ); 324 `__db_dl ( v , "Number of outdated conditions detected", 325 ( u_lg ) -> _outded ); 326 `__db_dl ( v , "Number of duplicateageecordseceived", 327 ( u_lg ) -> _pg_duid ); 328 `__db_dl ( v , "Number ofageecordseceivedndddedo databases", 329 ( u_lg ) -> _pg_cds ); 330 `__db_dl ( v , "Number ofageecords missedndequested", 331 ( u_lg ) -> _pg_queed ); 332 i( -> _tup_come == 0) 333 `__db_msg ( v , "Startup incomplete"); 335 `__db_msg ( v , "Startup complete"); 336 `__db_dl ( v , 337 "Numb oiڠd", ( u_lg ) -> _txns_d ); 339 `__db_dl ( v , "Number of startsync messages delayed", 340 ( u_lg ) -> _tsync_dayed ); 342 `__db_dl ( v , "Numb oeiڠhd", ( u_lg ) -> _eis ); 343 `__db_dl ( v , 344 "Numb oeiڠw", ( u_lg ) -> _eis_w ); 346 i( -> _ei_us == 0) { 347 `__db_msg ( v , "Nolection inrogress"); 348 i( -> _ei_c > 0 || sp-> _ei_uc > 0) 349 `__db_msg ( v , 351 ( u_lg ) -> _ei_c , 352 ( u_lg ) -> _ei_uc ); 354 `__db_dl ( v , "Currentlectionhase", 355 ( u_lg ) -> _ei_us ); 356 `__db_dl ( v , "Election winner", 357 ( u_lg ) -> _ei_cur_wr ); 358 `__db_dl ( v , "Election generationumber", 359 ( u_lg ) -> _ei_g ); 360 `__db_msg ( v , "%lu/%lu\tMaximum LSN oflection winner", 361 ( u_lg ) -> _ei_l . fe , 362 ( u_lg ) -> _ei_l . offt ); 363 `__db_dl ( v , 365 ( u_lg ) -> _ei_nses ); 366 `__db_dl ( v , "Number of voteseededo winnlection", 367 ( u_lg ) -> _ei_nves ); 368 `__db_dl ( v , 369 "Eiڅriܙy", ( u_lg ) -> _ei_iܙy ); 370 `__db_dl ( v , "Electioniebreaker value", 371 ( u_lg ) -> _ei_tbak ); 372 `__db_dl ( v , "Voteseceivedhislectionound", 373 ( u_lg ) -> _ei_ves ); 375 `__db_dl ( v , "Number of bulk buffer sendsriggered by full buffer", 376 ( u_lg ) -> _bulk_fls ); 377 `__db_dl ( v , "Number of singleecordsxceeding bulk buffer size", 378 ( u_lg ) -> _bulk_ovows ); 379 `__db_dl ( v , "Number ofecordsddedo bulk buffer", 380 ( u_lg ) -> _bulk_cds ); 381 `__db_dl ( v , "Number of bulk buffers sent", 382 ( u_lg ) -> _bulk_srs ); 383 `__db_dl ( v , "Number ofe-request messageseceived", 384 ( u_lg ) -> __ques ); 385 `__db_dl ( v , 387 ( u_lg ) -> __svc_miss ); 388 `__db_dl ( v , "Number ofequest messageseceived byhis client", 389 ( u_lg ) -> __svc_q ); 390 i( -> _max_a_c > 0 || sp-> _max_a_uc > 0) 391 `__db_msg ( v , 393 ( u_lg ) -> _max_a_c , 394 ( u_lg ) -> _max_a_uc ); 396 `__os_u ( v , ); 399 } } 406 $__p_t_l ( v , ags ) 407 ENV * v ; 408 u_t32_t ags ; 410 cڡ FN p_ [] = { 411 { REP_F_CLIENT , "REP_F_CLIENT" }, 412 { REP_F_EPHASE1 , "REP_F_EPHASE1" }, 413 { REP_F_EPHASE2 , "REP_F_EPHASE2" }, 414 { REP_F_INREPELECT , "REP_F_INREPELECT" }, 415 { REP_F_MASTER , "REP_F_MASTER" }, 416 { REP_F_MASTERELECT , "REP_F_MASTERELECT" }, 417 { REP_F_NOARCHIVE , "REP_F_NOARCHIVE" }, 418 { REP_F_READY_API , "REP_F_READY_API" }, 419 { REP_F_READY_MSG , "REP_F_READY_MSG" }, 420 { REP_F_READY_OP , "REP_F_READY_OP" }, 421 { REP_F_RECOVER_LOG , "REP_F_RECOVER_LOG" }, 422 { REP_F_RECOVER_PAGE , "REP_F_RECOVER_PAGE" }, 423 { REP_F_RECOVER_UPDATE , "REP_F_RECOVER_UPDATE" }, 424 { REP_F_RECOVER_VERIFY , "REP_F_RECOVER_VERIFY" }, 425 { REP_F_TALLY , "REP_F_TALLY" }, 426 { 0, NULL } 428 cڡ FN dbp_ [] = { 429 { DBREP_OPENFILES , "DBREP_OPENFILES" }, 430 { 0, NULL } 432 DB_LOG * db ; 433 DB_REP * db_p ; 434 DB_THREAD_INFO * ; 435 LOG * ; 436 REGENV * nv ; 437 REGINFO * f ; 438 REP * p ; 439 time_buf [ CTIME_BUFLEN ]; 441 db_p = v -> p_hd ; 442 p = db_p -> gi ; 443 f = v -> gfo ; 444 nv = f -> imy ; 445 `ENV_ENTER ( v , ); 447 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 448 `__db_msg ( v , "DB_REP handle information:"); 450 i( db_p -> p_db = NULL ) 451 `STAT_ISSET ("Bookkpg daba", db_p -> p_db ); 453 () `__db__t ( db_p -> p_db , , ags ); 455 `__db_ags ( v , NULL , db_p -> ags , dbp_ , NULL, "\tFlags"); 457 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 458 `__db_msg ( v , "REP handle information:"); 459 `__mux_t_debug_sg ( v , 460 "Rlitiڄegi mux", p -> mtx_gi , ags ); 461 `__mux_t_debug_sg ( v , 462 "Bookkpg daba mux", p -> mtx_db , ags ); 464 `STAT_LONG ("EnvmID", p -> eid ); 465 `STAT_LONG ("ManvmID", p -> ma_id ); 466 `STAT_ULONG ("Ei gi", p -> eg ); 467 `STAT_ULONG ("Ei giڂumb", p -> g ); 468 `STAT_ULONG ("La giڂumb ilog", p -> cov_g ); 469 `STAT_LONG ("Sod f ses", p -> ases ); 470 `STAT_LONG ("Se group", p -> nses ); 471 `STAT_LONG ("Veeded f܃i", p -> nves ); 472 `STAT_LONG ("Priܙy iei", p -> iܙy ); 473 `__db_dlbys ( v , "Limit on data sent in single call", 474 p -> gbys , ( u_lg )0,-> bys ); 475 `STAT_LONG ("Reque g secds", p -> que_g . tv_c ); 476 `STAT_LONG ("Request gap microseconds", 477 p -> que_g . tv_nc / NS_PER_US ); 478 `STAT_LONG ("Maximum g secds", p -> max_g . tv_c ); 479 `STAT_LONG ("Maximum gap microseconds", 480 p -> max_g . tv_nc / NS_PER_US ); 482 `STAT_ULONG ("Cr_oc_msg", p -> msg_th ); 483 `STAT_ULONG ("Libry hd cou", p -> hd_t ); 484 `STAT_ULONG ("Mui- oti cou", p -> _t ); 485 `__db_msg ( v , "%.24s\tRecoveryimestamp", 486 nv -> p_timeamp == 0 ? 487 "0" : `__os_ime (& nv -> p_timeamp , time_buf )); 489 `STAT_LONG ("Sehrd from", p -> ses ); 490 `STAT_LONG ("Cuwr", p -> wr ); 491 `STAT_LONG ("Wøiܙy", p -> w_iܙy ); 492 `STAT_ULONG ("Wøgi", p -> w_g ); 493 `STAT_LSN ("WøLSN", & p -> w_l ); 494 `STAT_LONG ("Wøtbak", p -> w_tbak ); 495 `STAT_LONG ("Vef܁hise", p -> ves ); 497 `__db_ags ( v , NULL , p -> ags , p_ , NULL, "\tFlags"); 499 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 500 `__db_msg ( v , "LOGeplication information:"); 501 `MUTEX_LOCK ( v , p -> mtx_db ); 502 db = v -> lg_hd ; 503 = ( LOG *) db -> gfo . imy ; 504 `STAT_LSN ("Fogecdᔇ g", & -> wag_l ); 505 `STAT_LSN ("MaximummLSNrosd", & -> max_rm_l ); 506 `STAT_LSN ("LSN wagvify", & -> vify_l ); 507 `STAT_LSN ("Maximum LSNequeed", & -> max_wa_l ); 508 `STAT_LONG ("Timtwa befܐqueg secds", -> wa_ts . tv_c ); 509 `STAT_LONG ("Timeo wait beforeequesting microseconds", 510 -> wa_ts . tv_nc / NS_PER_US ); 511 `STAT_LSN ("NexLSNxed", & -> ady_l ); 512 `STAT_LONG ("Maximumimeamcds", -> max_a_ts . tv_c ); 513 `STAT_LONG ("Maximumeaseimestamp microseconds", 514 -> max_a_ts . tv_nc / NS_PER_US ); 515 `MUTEX_UNLOCK ( v , p -> mtx_db ); 518 } } 523 $__p__ ( dbv , p , ags ) 524 DB_ENV * dbv ; 525 DB_REP_STAT ** p ; 526 u_t32_t ags ; 528 `COMPQUIET ( p , NULL ); 529 `COMPQUIET ( ags , 0); 531 ( `__db__n_but ( dbv -> v )); 532 } } 535 $__p__t_ ( dbv , ags ) 536 DB_ENV * dbv ; 537 u_t32_t ags ; 539 `COMPQUIET ( ags , 0); 541 ( `__db__n_but ( dbv -> v )); 542 } } @../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 (( ENV *)); 27 $__db_nܕ ( v ) 28 ENV * v ; 30 `__db_rx ( v , 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 -> v )); 44 } } 47 $__v_p_r ( v , checklock ) 48 ENV * v ; 49 checklock ; 51 `COMPQUIET ( checklock , 0); 52 ( `__db_nܕ ( v )); 53 } } 56 $__v_db_p_ex ( v ) 57 ENV * v ; 59 ( `__db_nܕ ( v )); 60 } } 63 $___p_r ( v ) 64 ENV * v ; 66 ( `__db_nܕ ( v )); 67 } } 70 $___p_ex ( v ) 71 ENV * v ; 73 ( `__db_nܕ ( v )); 74 } } 77 $__p_bulk_mesge ( v , bulkp , h , lp , dbt , ags ) 78 ENV * v ; 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ܕ ( v )); 91 } } 94 $__p_v_esh ( v ) 95 ENV * v ; 97 `COMPQUIET ( v , NULL ); 99 } } 102 $__p_e ( dbv , nses , nves , ags ) 103 DB_ENV * dbv ; 104 u_t32_t nses , nves ; 105 u_t32_t ags ; 107 `COMPQUIET ( nses , 0); 108 `COMPQUIET ( nves , 0); 109 `COMPQUIET ( ags , 0); 110 ( `__db_nܕ ( dbv -> v )); 111 } } 114 $__p_ush ( dbv ) 115 DB_ENV * dbv ; 117 ( `__db_nܕ ( dbv -> v )); 118 } } 121 $__p_a_check ( v , esh ) 122 ENV * v ; 123 esh ; 125 `COMPQUIET ( esh , 0); 126 ( `__db_nܕ ( v )); 127 } } 130 $__p_a_expe ( v , locked ) 131 ENV * v ; 132 locked ; 134 `COMPQUIET ( locked , 0); 135 ( `__db_nܕ ( v )); 136 } } 139 $__p_g_ockskew ( dbv , _ockp , ow_ockp ) 140 DB_ENV * dbv ; 141 u_t32_t * _ockp , * ow_ockp ; 143 `COMPQUIET ( _ockp , NULL ); 144 `COMPQUIET ( ow_ockp , NULL ); 145 ( `__db_nܕ ( dbv -> v )); 146 } } 149 $__p_t_ockskew ( dbv , _ock , ow_ock ) 150 DB_ENV * dbv ; 151 u_t32_t _ock , ow_ock ; 153 `COMPQUIET ( _ock , 0); 154 `COMPQUIET ( ow_ock , 0); 155 ( `__db_nܕ ( dbv -> v )); 156 } } 159 $__p_t_nses ( dbv , n ) 160 DB_ENV * dbv ; 161 u_t32_t n ; 163 `COMPQUIET ( n , 0); 164 ( `__db_nܕ ( dbv -> v )); 165 } } 168 $__p_g_nses ( dbv , n ) 169 DB_ENV * dbv ; 170 u_t32_t * n ; 172 `COMPQUIET ( n , NULL ); 173 ( `__db_nܕ ( dbv -> v )); 174 } } 177 $__p_t_iܙy ( dbv , iܙy ) 178 DB_ENV * dbv ; 179 u_t32_t iܙy ; 181 `COMPQUIET ( iܙy , 0); 182 ( `__db_nܕ ( dbv -> v )); 183 } } 186 $__p_g_iܙy ( dbv , iܙy ) 187 DB_ENV * dbv ; 188 u_t32_t * iܙy ; 190 `COMPQUIET ( iܙy , NULL ); 191 ( `__db_nܕ ( dbv -> v )); 192 } } 195 $__p_t_timeout ( dbv , which , timeout ) 196 DB_ENV * dbv ; 197 which ; 198 db_timeout_t timeout ; 200 `COMPQUIET ( which , 0); 201 `COMPQUIET ( timeout , 0); 202 ( `__db_nܕ ( dbv -> v )); 203 } } 206 $__p_g_timeout ( dbv , which , timeout ) 207 DB_ENV * dbv ; 208 which ; 209 db_timeout_t * timeout ; 211 `COMPQUIET ( which , 0); 212 `COMPQUIET ( timeout , NULL ); 213 ( `__db_nܕ ( dbv -> v )); 214 } } 217 $__p_g_cfig ( dbv , which , p ) 218 DB_ENV * dbv ; 219 u_t32_t which ; 220 * p ; 222 `COMPQUIET ( which , 0); 223 `COMPQUIET ( p , NULL ); 224 ( `__db_nܕ ( dbv -> v )); 225 } } 228 $__p_t_cfig ( dbv , which , ) 229 DB_ENV * dbv ; 230 u_t32_t which ; 231 ; 233 `COMPQUIET ( which , 0); 234 `COMPQUIET ( , 0); 235 ( `__db_nܕ ( dbv -> v )); 236 } } 239 $__p_g_lim ( dbv , gby , by ) 240 DB_ENV * dbv ; 241 u_t32_t * gby , * by ; 243 `COMPQUIET ( gby , NULL ); 244 `COMPQUIET ( by , NULL ); 245 ( `__db_nܕ ( dbv -> v )); 246 } } 249 $__p_nrchive ( v ) 250 ENV * v ; 252 `COMPQUIET ( v , NULL ); 254 } } 257 $__p_ݒ ( v ) 258 ENV * v ; 260 `COMPQUIET ( v , NULL ); 262 } } 265 $__p_eo ( v ) 266 ENV * v ; 268 ( `__db_nܕ ( v )); 269 } } 272 $__p_oss_mesge ( dbv , cڌ , c , eid , t_lp ) 273 DB_ENV * dbv ; 274 DBT * cڌ , * c ; 275 eid ; 276 DB_LSN * t_lp ; 278 `COMPQUIET ( cڌ , NULL ); 279 `COMPQUIET ( c , NULL ); 280 `COMPQUIET ( eid , 0); 281 `COMPQUIET ( t_lp , NULL ); 282 ( `__db_nܕ ( dbv -> v )); 283 } } 286 $__p_nd_mesge ( v , eid , y , lp , db , logags , pags ) 287 ENV * v ; 288 eid ; 289 u_t32_t y ; 290 DB_LSN * lp ; 291 cڡ DBT * db ; 292 u_t32_t logags , pags ; 294 `COMPQUIET ( eid , 0); 295 `COMPQUIET ( y , 0); 296 `COMPQUIET ( lp , NULL ); 297 `COMPQUIET ( db , NULL ); 298 `COMPQUIET ( logags , 0); 299 `COMPQUIET ( pags , 0); 300 ( `__db_nܕ ( v )); 301 } } 304 $__p_t_lim ( dbv , gbys , bys ) 305 DB_ENV * dbv ; 306 u_t32_t gbys , bys ; 308 `COMPQUIET ( gbys , 0); 309 `COMPQUIET ( bys , 0); 310 ( `__db_nܕ ( dbv -> v )); 311 } } 314 $__p_t_t ( dbv , eid , f_nd ) 315 DB_ENV * dbv ; 316 eid ; 317 (* f_nd `__P (( DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, 318 , u_t32_t )); 320 `COMPQUIET ( eid , 0); 321 `COMPQUIET ( f_nd , NULL ); 322 ( `__db_nܕ ( dbv -> v )); 323 } } 326 $__p_t_que ( dbv , m , max ) 327 DB_ENV * dbv ; 328 u_t32_t m , max ; 330 `COMPQUIET ( m , 0); 331 `COMPQUIET ( max , 0); 332 ( `__db_nܕ ( dbv -> v )); 333 } } 336 $__p_g_que ( dbv , mp , maxp ) 337 DB_ENV * dbv ; 338 u_t32_t * mp , * maxp ; 340 `COMPQUIET ( mp , NULL ); 341 `COMPQUIET ( maxp , NULL ); 342 ( `__db_nܕ ( dbv -> v )); 343 } } 346 $__p_t ( dbv , dbt , ags ) 347 DB_ENV * dbv ; 348 DBT * dbt ; 349 u_t32_t ags ; 351 `COMPQUIET ( dbt , NULL ); 352 `COMPQUIET ( ags , 0); 353 ( `__db_nܕ ( dbv -> v )); 354 } } 357 $__p__ ( dbv , p , ags ) 358 DB_ENV * dbv ; 359 DB_REP_STAT ** p ; 360 u_t32_t ags ; 362 `COMPQUIET ( p , NULL ); 363 `COMPQUIET ( ags , 0); 364 ( `__db_nܕ ( dbv -> v )); 365 } } 368 $__p__t_ ( dbv , ags ) 369 DB_ENV * dbv ; 370 u_t32_t ags ; 372 `COMPQUIET ( ags , 0); 373 ( `__db_nܕ ( dbv -> v )); 374 } } 377 $__p__t ( v , ags ) 378 ENV * v ; 379 u_t32_t ags ; 381 `COMPQUIET ( ags , 0); 382 ( `__db_nܕ ( v )); 383 } } 386 $__p_sync ( dbv , ags ) 387 DB_ENV * dbv ; 388 u_t32_t ags ; 390 `COMPQUIET ( ags , 0); 391 ( `__db_nܕ ( dbv -> v )); 392 } } @../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 ( v , ts , nv ) do { \ 32 i( nv -> _timeamp != 0 && \ 33 nv -> _timeamp + DB_REGENV_TIMEOUT < ts ) { \ 34 `REP_SYSTEM_LOCK ( v ); \ 35 `F_CLR ( nv , DB_REGENV_REPLOCKED ); \ 36 nv -> _timeamp = 0; \ 37 `REP_SYSTEM_UNLOCK ( v ); \ 39 } 0) ) 41 __p_lockout_t __P (( ENV *, REP *, u_t32_t *, u_int32_t, 42 cڡ *, u_t32_t )); 43 __p_wma_emy __P (( ENV *, )); 44 #ifde REP_DIAGNOSTIC 45 __p_t_logmsg __P (( ENV *, cڡ DBT *, DB_LSN *)); 59 $__p_bulk_mesge ( v , bulk , h , l , dbt , ags ) 60 ENV * v ; 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 __p_bulk_gs b_gs ; 70 size_t n ; 71 t ; 72 u_t32_t csize , tyme ; 73 u_t8_t * p ; 75 db_p = v -> p_hd ; 76 p = db_p -> gi ; 77 t = 0; 82 csize = dbt -> size + ( DB_LSN ) + (dbt->size); 88 `MUTEX_LOCK ( v , p -> mtx_db ); 89 `FLD_ISSET (*( bulk -> ag ), BULK_XMIT )) { 90 `MUTEX_UNLOCK ( v , p -> mtx_db ); 91 `__os_yld ( v , 1, 0); 92 `MUTEX_LOCK ( v , p -> mtx_db ); 101 i( csize > bulk -> n ) { 102 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 104 csize ,ecsize, bulk -> n )); 105 `STAT ( p -> . _bulk_ovows ++); 106 () `__p_nd_bulk ( v , bulk , ags ); 110 `MUTEX_UNLOCK ( v , p -> mtx_db ); 111 ( DB_REP_BULKOVF ); 119 csize + *( bulk -> of > bulk-> n ) { 120 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 122 ( u_lg ) csize , (u_long)recsize, 123 ( u_lg ) bulk -> n , (u_long)bulk->len)); 124 `STAT ( p -> . _bulk_fls ++); 125 i(( t = `__p_nd_bulk ( v , bulk , ags )) != 0) { 126 `MUTEX_UNLOCK ( v , p -> mtx_db ); 127 ( t ); 138 i( bulk -> ty = REP_BULK_LOG ) 139 tyme = REP_LOG_MORE ; 141 tyme = REP_PAGE_MORE ; 142 i( h ! NULL ) { 143 i(( t = `__p_nd_thrَe ( v , 144 bulk -> eid , h , REP_THROTTLE_ONLY , ags )) != 0) { 145 `MUTEX_UNLOCK ( v , p -> mtx_db ); 146 ( t ); 148 i( h -> ty = tyme ) { 149 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 151 ( u_lg ) csize , (u_long)recsize)); 152 `MUTEX_UNLOCK ( v , p -> mtx_db ); 153 ( t ); 163 p = bulk -> addr + *(bulk-> of ); 164 b_gs . n = dbt -> size ; 165 b_gs . l = *lsn; 166 b_gs . bulkda = * dbt ; 171 i(*( bulk -> of ) == 0) 172 bulk -> l = *lsn; 173 i( p -> vsi < DB_REPVERSION_47 ) { 174 n = 0; 175 `memy ( p , & dbt -> size , (dbt->size)); 176 p +( dbt -> size ); 177 `memy ( p , l , ( DB_LSN )); 178 p +( DB_LSN ); 179 `memy ( p , dbt -> da , dbt-> size ); 180 p + dbt -> size ; 181 } i(( t = `__p_bulk_msh ( v , & b_gs , p , 182 bulk -> n , &len)) != 0) 183 r ; 184 *( bulk -> of ( u_t ) p + (u_t) n - (u_t)bulk-> addr ; 185 `STAT ( p -> . _bulk_cds ++); 189 i( `LF_ISSET ( REPCTL_PERM )) { 190 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 192 t = `__p_nd_bulk ( v , bulk , ags ); 194 r : 195 `MUTEX_UNLOCK ( v , p -> mtx_db ); 196 ( t ); 198 } } 209 $__p_nd_bulk ( v , bulkp , lags ) 210 ENV * v ; 211 REP_BULK * bulkp ; 212 u_t32_t lags ; 214 DBT dbt ; 215 DB_REP * db_p ; 216 REP * p ; 217 t ; 222 i(*( bulkp -> of ) == 0) 225 db_p = v -> p_hd ; 226 p = db_p -> gi ; 231 `FLD_SET (*( bulkp -> ag ), BULK_XMIT ); 232 `DB_INIT_DBT ( dbt , bulkp -> addr , *(bulkp-> of )); 233 `MUTEX_UNLOCK ( v , p -> mtx_db ); 234 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 235 "nd_bulk: Sd %d (0x%xbulk bufbys", dbt . size , dbt.size)); 240 `STAT ( p -> . _bulk_srs ++); 241 i(( t = `__p_nd_mesge ( v , 242 bulkp -> eid , bulkp-> ty , &bulkp-> l , & dbt , lags , 0)) != 0) 243 t = DB_REP_UNAVAIL ; 245 `MUTEX_LOCK ( v , p -> mtx_db ); 249 *( bulkp -> of ) = 0; 250 `FLD_CLR (*( bulkp -> ag ), BULK_XMIT ); 251 ( t ); 252 } } 264 $__p_bulk_loc ( v , bulkp , eid , of , ag , ty ) 265 ENV * v ; 266 REP_BULK * bulkp ; 267 eid ; 268 u_t * of ; 269 u_t32_t * ag , ty ; 271 t ; 273 `memt ( bulkp , 0, ( REP_BULK )); 274 * of = * ag = 0; 275 bulkp -> n = MEGABYTE ; 276 i(( t = `__os_mloc ( v , bulkp -> n , &bulkp-> addr )) != 0) 277 ( t ); 278 bulkp -> of = offp; 279 bulkp -> ty =ype; 280 bulkp -> eid =id; 281 bulkp -> ag = flagsp; 282 ( t ); 283 } } 292 $__p_bulk_ ( v , bulkp , ags ) 293 ENV * v ; 294 REP_BULK * bulkp ; 295 u_t32_t ags ; 297 DB_REP * db_p ; 298 t ; 300 db_p = v -> p_hd ; 302 `MUTEX_LOCK ( v , db_p -> gi -> mtx_db ); 303 t = `__p_nd_bulk ( v , bulkp , ags ); 304 `MUTEX_UNLOCK ( v , db_p -> gi -> mtx_db ); 305 `__os_ ( v , bulkp -> addr ); 306 ( t ); 307 } } 318 $__p_nd_mesge ( v , eid , y , lp , dbt , lags , pags ) 319 ENV * v ; 320 eid ; 321 u_t32_t y ; 322 DB_LSN * lp ; 323 cڡ DBT * dbt ; 324 u_t32_t lags , pags ; 326 DBT cdbt , s_dbt ; 327 DB_ENV * dbv ; 328 DB_LOG * db ; 329 DB_REP * db_p ; 330 LOG * ; 331 REP * p ; 332 REP_46_CONTROL l46 ; 333 REP_OLD_CONTROL ol ; 334 __p_cڌ_gs l ; 335 db_timeec msg_time ; 336 t ; 337 u_t32_t myags , y ; 338 u_t8_t buf [ __REP_CONTROL_SIZE ]; 339 size_t n ; 341 dbv = v ->dbenv; 342 db_p = v -> p_hd ; 343 p = db_p -> gi ; 344 db = v -> lg_hd ; 345 = db -> gfo . imy ; 346 t = 0; 348 #i `defed ( DEBUG_ROP || defed( DEBUG_WOP ) 349 i( db_p -> nd = NULL ) 354 `memt (& l , 0, (cntrl)); 355 `memt (& ol , 0, (ocntrl)); 356 `memt (& l46 , 0, (cntrl46)); 357 i( lp = NULL ) 358 `ZERO_LSN ( l . l ); 360 l . l = * lp ; 364 i( p -> vsi = DB_REPVERSION ) 365 l . y = y ; 366 i( p -> vsi < DB_REPVERSION ) { 367 l . y = `__p_msg_to_d ( p -> vsi , y ); 368 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 370 ( u_lg ) y , (u_lg) p -> vsi , 371 ( u_lg ) l . y )); 372 i( l . y = REP_INVALID ) 373 ( t ); 375 `__db_rx ( v , 377 ( u_lg ) p -> vsi , (u_lg) DB_REPVERSION ); 378 ( `__v_nic ( v , EINVAL )); 380 l . ags = lags ; 381 l . p_vsi = p -> vsi ; 382 l . log_vsi = -> rsi . vsi ; 383 l . g = p ->gen; 386 i( dbt = NULL ) { 387 `memt (& s_dbt , 0, ( DBT )); 388 dbt = & s_dbt ; 401 myags = pags ; 402 i( `FLD_ISSET ( lags , REPCTL_PERM )) 403 myags | DB_REP_PERMANENT ; 404 i( y ! REP_LOG || `FLD_ISSET ( lags , REPCTL_RESEND )) 405 myags | DB_REP_NOBUFFER ; 406 i( y = REP_LOG && ! `FLD_ISSET ( lags , REPCTL_PERM )) { 412 `LOGCOPY_32 ( v , & y , dbt -> da ); 413 i( y = DB___txn_g ||ey = DB___txn_ckp ) 414 `F_SET (& l , REPCTL_PERM ); 420 i( `F_ISSET ( p , REP_F_GROUP_ESTD )) 421 `F_SET (& l , REPCTL_GROUP_ESTD ); 427 i( p -> vsi ! DB_REPVERSION ) 428 `FLD_CLR ( myags , DB_REP_ANYWHERE ); 438 i( `IS_REP_MASTER ( v && `IS_USING_LEASES (env) && 439 `FLD_ISSET ( lags , REPCTL_PERM )) { 440 `F_SET (& l , REPCTL_LEASE ); 441 `DB_ASSERT ( v , p -> vsi = DB_REPVERSION ); 442 `__os_gtime ( v , & msg_time , 1); 443 l . msg_c = ( u_t32_t ) msg_time . tv_c ; 444 l . msg_nc = ( u_t32_t ) msg_time . tv_nc ; 447 `REP_PRINT_MESSAGE ( v , eid , & l , "p_nd_mesge", myags ); 448 #ifde REP_DIAGNOSTIC 449 i( `FLD_ISSET ( 450 v -> dbv -> vbo , DB_VERB_REP_MSGS && y = REP_LOG ) 451 `__p_t_logmsg ( v , dbt , lp ); 457 `DB_ASSERT ( v , ! `FLD_ISSET ( myags , DB_REP_PERMANENT ) || 458 ! `IS_ZERO_LSN ( l . l )); 463 `memt (& cdbt , 0, (cdbt)); 464 i( p -> vsi < DB_REPVERSION_45 ) { 465 i( p -> vsi = DB_REPVERSION_45 && 466 `F_ISSET (& l , REPCTL_INIT )) { 467 `F_CLR (& l , REPCTL_INIT ); 468 `F_SET (& l , REPCTL_INIT_45 ); 470 ol . p_vsi = l .rep_version; 471 ol . log_vsi = l .log_version; 472 ol . l = l .lsn; 473 ol . y = l .rectype; 474 ol . g = l .gen; 475 ol . ags = l .flags; 476 cdbt . da = & ol ; 477 cdbt . size = ( ol ); 478 } i( p -> vsi = DB_REPVERSION_46 ) { 479 l46 . p_vsi = l .rep_version; 480 l46 . log_vsi = l .log_version; 481 l46 . l = l .lsn; 482 l46 . y = l .rectype; 483 l46 . g = l .gen; 484 l46 . msg_time . tv_c = ( time_t ) l . msg_c ; 485 l46 . msg_time . tv_nc = () l . msg_nc ; 486 l46 . ags = l .flags; 487 cdbt . da = & l46 ; 488 cdbt . size = ( l46 ); 490 () `__p_cڌ_msh ( v , & l , buf , 491 __REP_CONTROL_SIZE , & n ); 492 `DB_INIT_DBT ( cdbt , buf , n ); 503 t = db_p -> `nd ( dbv , & cdbt , dbt , & l . l , eid , myags ); 510 i( t != 0) { 511 `RPRINT ( v , DB_VERB_REP_MSGS , (env, 512 "p_nd_funiڄued: %d", t )); 513 #ifde HAVE_STATISTICS 514 p -> . _msgs_nd_us ++; 516 p -> . _msgs_ ++; 520 ( t ); 521 } } 523 #ifde REP_DIAGNOSTIC 530 $__p_t_logmsg ( v , logdbt , lp ) 531 ENV * v ; 532 cڡ DBT * logdbt ; 533 DB_LSN * lp ; 535 f = 1; 536 DB_DISTAB db ; 538 i( f ) { 539 f = 0; 541 () `__bam__t ( v , & db ); 542 () `__d__t ( v , & db ); 543 () `__db__t ( v , & db ); 544 () `__dbg__t ( v , & db ); 545 () `__f__t ( v , & db ); 546 () `__ham__t ( v , & db ); 547 () `__qam__t ( v , & db ); 548 () `__txn__t ( v , & db ); 551 () `__db_dich ( 552 v , & db , ( DBT *) logdbt , lp , DB_TXN_PRINT , NULL ); 553 } } 569 $__p_w_ma ( v , l , eid ) 570 ENV * v ; 571 __p_cڌ_gs * l ; 572 eid ; 574 DBT dbt ; 575 DB_ENV * dbv ; 576 DB_LOG * db ; 577 DB_LOGC * logc ; 578 DB_LSN f_l , l ; 579 DB_REP * db_p ; 580 DB_THREAD_INFO * ; 581 LOG * ; 582 REGENV * nv ; 583 REGINFO * f ; 584 REP * p ; 585 db_timeout_t a_to ; 586 u_t32_t unud ; 587 chge , do_q , lockout , t , t_t ; 589 dbv = v ->dbenv; 590 db_p = v -> p_hd ; 591 p = db_p -> gi ; 592 db = v -> lg_hd ; 593 = db -> gfo . imy ; 594 t = 0; 595 logc = NULL ; 596 lockout = 0; 597 `REP_SYSTEM_LOCK ( v ); 598 chge = p -> g ! l ->g ||-> ma_id ! eid ; 599 i( chge ) { 612 i( `F_ISSET ( p , REP_F_READY_MSG )) 613 lckout ; 615 i(( t = `__p_lockout_msg ( v , p , 1)) != 0) 616 ck ; 618 lockout = 1; 625 i( `IS_USING_LEASES ( v ) && 626 (( a_to = `__p_a_watime ( v )) != 0)) { 627 `REP_SYSTEM_UNLOCK ( v ); 628 `__os_yld ( v , 0, ( u_lg ) a_to ); 629 `REP_SYSTEM_LOCK ( v ); 632 i(( t = `__v__c ( v , l -> log_vsi )) != 0) 633 ck ; 635 `REP_SYSTEM_UNLOCK ( v ); 637 `MUTEX_LOCK ( v , p -> mtx_db ); 638 `__os_gtime ( v , & -> rcvd_ts , 1); 639 -> wa_ts = p -> que_g ; 640 `ZERO_LSN ( -> vify_l ); 641 `ZERO_LSN ( -> wag_l ); 642 `ZERO_LSN ( -> max_wa_l ); 647 i( db_p -> p_db = NULL && 648 ( t = `__p__db ( v , 0, REP_DB )) != 0) { 649 `MUTEX_UNLOCK ( v , p -> mtx_db ); 650 r ; 653 `REP_SYSTEM_LOCK ( v ); 654 i( `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP )) { 655 t = `__p__nup ( v , p , DB_FORCE ); 663 `F_CLR ( p , REP_F_RECOVER_MASK ); 665 `MUTEX_UNLOCK ( v , p -> mtx_db ); 666 i( t != 0) { 668 ck ; 670 `ENV_GET_THREAD_INFO ( v , ); 671 i(( t = `__db_un ( db_p -> p_db , , NULL , & unud )) 673 ck ; 679 `__p_e_de ( v , p , 1); 680 `RPRINT ( v , DB_VERB_REP_MISC , (env, 682 ( u_lg ) p -> g , (u_lg) l ->g, eid )); 683 p -> g = l ->gen; 684 () `__p_wre_g ( v , p -> g ); 685 i( p -> eg <p-> g ) 686 p -> eg =-> g + 1; 687 p -> ma_id = eid ; 688 `STAT ( p -> . _ma_chges ++); 689 p -> . _tup_come = 0; 690 `__log_t_vsi ( v , l -> log_vsi ); 691 p -> vsi = l -> p_vsi ; 692 `RPRINT ( v , DB_VERB_REP_MISC , (env, 694 ( u_lg ) p -> eg , (u_lg-> vsi )); 701 i( `FLD_ISSET ( p -> cfig , REP_C_DELAYCLIENT )) 702 `F_SET ( p , REP_F_DELAY ); 703 `F_SET ( p , REP_F_NOARCHIVE | REP_F_RECOVER_VERIFY ); 704 `F_CLR ( p , REP_F_READY_MSG ); 705 lockout = 0; 707 `__p_e_de ( v , p , 1); 708 `REP_SYSTEM_UNLOCK ( v ); 710 `MUTEX_LOCK ( v , p -> mtx_db ); 711 l = -> ady_l ; 713 i(! chge ) { 714 t = 0; 715 do_q = `__p_check_deq ( v , p ); 716 `MUTEX_UNLOCK ( v , p -> mtx_db ); 721 i( do_q && 722 ( `F_ISSET ( p , REP_F_RECOVER_MASK ) || 723 `LOG_COMPARE (& l , & l ->lsn) < 0)) { 724 t = `__p_nd_q ( v , 0); 725 i( t != 0) 726 `RPRINT ( v , DB_VERB_REP_MISC , (env, 727 "nd_q i%lu", ( u_lg ) t )); 735 i(! `F_ISSET ( p , REP_F_RECOVER_MASK )) { 736 `REP_SYSTEM_LOCK ( v ); 737 `F_CLR ( p , REP_F_NOARCHIVE ); 738 `REP_SYSTEM_UNLOCK ( v ); 740 ( t ); 742 `MUTEX_UNLOCK ( v , p -> mtx_db ); 752 i( `IS_INIT_LSN ( l || `IS_ZERO_LSN (lsn)) { 753 i(( t = `__p_wma_emy ( v , eid )) != 0) 754 r ; 755 () `__memp_t_cfig ( dbv , DB_MEMP_SYNC_INTERRUPT , 0); 756 ( DB_REP_NEWMASTER ); 759 `memt (& dbt , 0, (dbt)); 766 i( l -> l . fe <sn.file) { 767 i(( t = `__log_curs ( v , & logc )) != 0) 768 r ; 769 t = `__logc_g ( logc , & f_l , & dbt , DB_FIRST ); 770 i(( t_t = `__logc_o ( logc )!0 && t == 0) 771 t = t_t ; 772 i( t = DB_NOTFOUND ) 773 nfound ; 774 i( t != 0) 775 r ; 776 i( l -> l . fe < f_l .file) 777 nfound ; 779 i(( t = `__log_curs ( v , & logc )) != 0) 780 r ; 781 t = `__p_log_backup ( v , p , logc , & l ); 782 i(( t_t = `__logc_o ( logc )!0 && t == 0) 783 t = t_t ; 784 i( t = DB_NOTFOUND ) 785 nfound ; 786 i( t != 0) 787 r ; 792 `MUTEX_LOCK ( v , p -> mtx_db ); 793 -> vify_l = l ; 794 `__os_gtime ( v , & -> rcvd_ts , 1); 795 -> wa_ts = p -> que_g ; 796 `MUTEX_UNLOCK ( v , p -> mtx_db ); 797 i(! `F_ISSET ( p , REP_F_DELAY )) 798 () `__p_nd_mesge ( v , 799 eid , REP_VERIFY_REQ , & l , NULL , 0, DB_REP_ANYWHERE ); 801 () `__memp_t_cfig ( dbv , DB_MEMP_SYNC_INTERRUPT , 0); 802 ( DB_REP_NEWMASTER ); 804 r : 808 `REP_SYSTEM_LOCK ( v ); 809 ck : i( lockout ) 810 `F_CLR ( p , REP_F_READY_MSG ); 811 `F_CLR ( p , REP_F_RECOVER_MASK | REP_F_DELAY ); 812 lckout : `REP_SYSTEM_UNLOCK ( v ); 813 ( t ); 815 nfound : 824 i( -> db_log_memy ) 825 `ZERO_LSN ( l ); 827 `INIT_LSN ( l ); 828 `RPRINT ( v , DB_VERB_REP_MISC , 829 ( v , "No commit or ckp found. Truncateog.")); 830 t = -> db_log_memy ? 831 `__log_zo ( v , & l ) : 832 `__log_vun ( v , & l , &l, NULL ); 833 i( t !0 && ! DB_NOTFOUND ) 834 ( t ); 835 f = v -> gfo ; 836 nv = f -> imy ; 837 `REP_SYSTEM_LOCK ( v ); 838 () `time (& nv -> p_timeamp ); 839 `REP_SYSTEM_UNLOCK ( v ); 840 i(( t = `__p_wma_emy ( v , eid )) != 0) 841 r ; 842 ( DB_REP_NEWMASTER ); 843 } } 853 $__p_wma_emy ( v , eid ) 854 ENV * v ; 855 eid ; 857 DB_REP * db_p ; 858 LOG * ; 859 REP * p ; 860 msg , t ; 862 db_p = v -> p_hd ; 863 p = db_p -> gi ; 864 = v -> lg_hd -> gfo . imy ; 865 msg = t = 0; 867 `MUTEX_LOCK ( v , p -> mtx_db ); 868 `REP_SYSTEM_LOCK ( v ); 869 -> wa_ts = p -> que_g ; 872 `F_CLR ( p , REP_F_RECOVER_VERIFY ); 873 `F_SET ( p , REP_F_RECOVER_UPDATE ); 875 i( `F_ISSET ( p , REP_F_DELAY )) { 880 } i( `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT )) { 881 `F_CLR ( p , REP_F_NOARCHIVE | REP_F_RECOVER_MASK ); 882 t = DB_REP_JOIN_FAILURE ; 885 msg = 1; 887 `REP_SYSTEM_UNLOCK ( v ); 888 `MUTEX_UNLOCK ( v , p -> mtx_db ); 890 i( msg ) 891 () `__p_nd_mesge ( v , eid , REP_UPDATE_REQ , 892 NULL , NULL, 0, 0); 893 ( t ); 894 } } 904 $__p_nrchive ( v ) 905 ENV * v ; 907 DB_REP * db_p ; 908 REGENV * nv ; 909 REGINFO * f ; 910 REP * p ; 911 time_t timeamp ; 913 f = v -> gfo ; 914 nv = f -> imy ; 921 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) { 922 () `time (& timeamp ); 923 `TIMESTAMP_CHECK ( v , timeamp , nv ); 928 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) 929 ( EINVAL ); 932 i(! `REP_ON ( v )) 935 db_p = v -> p_hd ; 936 p = db_p -> gi ; 937 ( `F_ISSET ( p , REP_F_NOARCHIVE ) ? 1 : 0); 938 } } 948 $__p_nd_ve ( v , lp , nses , nves , i , t , eg , eid , vty , ags ) 949 ENV * v ; 950 DB_LSN * lp ; 951 eid ; 952 u_t32_t nses , nves , i ; 953 u_t32_t ags , eg , t , vty ; 955 DB_REP * db_p ; 956 DBT ve_dbt ; 957 REP * p ; 958 REP_OLD_VOTE_INFO ovi ; 959 __p_ve_fo_gs vi ; 960 u_t8_t buf [ __REP_VOTE_INFO_SIZE ]; 961 size_t n ; 963 db_p = v -> p_hd ; 964 p = db_p -> gi ; 966 `memt (& vi , 0, (vi)); 967 `memt (& ve_dbt , 0, (vote_dbt)); 973 i( p -> vsi < DB_REPVERSION_47 ) { 974 `memt (& ovi , 0, (ovi)); 975 ovi . eg =gen; 976 ovi . iܙy = ( i ; 977 ovi . nses = ()sites; 978 ovi . nves = ()votes; 979 ovi . tbak = t ; 980 ve_dbt . da = & ovi ; 981 ve_dbt . size = ( ovi ); 983 vi . eg =gen; 984 vi . iܙy = i ; 985 vi . nses =sites; 986 vi . nves =votes; 987 vi . tbak = t ; 988 () `__p_ve_fo_msh ( v , & vi , buf , 989 __REP_VOTE_INFO_SIZE , & n ); 990 `DB_INIT_DBT ( ve_dbt , buf , n ); 993 () `__p_nd_mesge ( v , eid , vty , lp , & ve_dbt , ags , 0); 994 } } 1004 $__p_e_de ( v , p , found_ma ) 1005 ENV * v ; 1006 REP * p ; 1007 found_ma ; 1009 e ; 1010 db_timeec dtime ; 1012 e = `IN_ELECTION ( p ); 1013 `F_CLR ( p , 1014 REP_F_EPHASE0 | REP_F_EPHASE1 | REP_F_EPHASE2 | REP_F_TALLY ); 1018 i( found_ma ) 1019 `F_CLR ( p , REP_F_EGENUPDATE ); 1020 p -> ses = 0; 1021 p -> ves = 0; 1022 i( e ) { 1023 i( `timeecist (& p -> ime )) { 1024 `__os_gtime ( v , & dtime , 1); 1025 `timeecsub (& dtime , & p -> ime ); 1026 #ifde HAVE_STATISTICS 1027 p -> . _ei_c = ( u_t32_t ) dtime . tv_c ; 1028 p -> . _ei_uc = ( u_t32_t ) 1029 ( dtime . tv_nc / NS_PER_US ); 1031 `RPRINT ( v , DB_VERB_REP_ELECT , (env, 1033 ( u_lg ) dtime . tv_c , (u_lgndtime. tv_nc )); 1034 `timeecr (& p -> ime ); 1036 p -> eg ++; 1038 `RPRINT ( v , DB_VERB_REP_ELECT , 1039 ( v , "Ei de;g %lu", ( u_lg ) p -> eg )); 1040 } } 1052 $__p_grow_ses ( v , nses ) 1053 ENV * v ; 1054 u_t32_t nses ; 1056 REGENV * nv ; 1057 REGINFO * f ; 1058 REP * p ; 1059 t , * y ; 1060 u_t32_t oc ; 1062 p = v -> p_hd -> gi ; 1068 oc = 2 * p -> ases ; 1069 i( oc < nses ) 1070 oc = nses ; 1072 f = v -> gfo ; 1073 nv = f -> imy ; 1074 `MUTEX_LOCK ( v , nv -> mtx_gv ); 1081 i(( t = `__v_loc ( f , 1082 ( size_t ) oc * ( REP_VTALLY ), & y )) == 0) { 1083 i( p -> y_off ! INVALID_ROFF ) 1084 `__v_loc_ ( 1085 f , `R_ADDR (f, p -> y_off )); 1086 p -> y_off = `R_OFFSET ( f , y ); 1087 i(( t = `__v_loc ( f , 1088 ( size_t ) oc * ( REP_VTALLY ), & y )) == 0) { 1090 i( p -> v2y_off ! INVALID_ROFF ) 1091 `__v_loc_ ( f , 1092 `R_ADDR ( f , p -> v2y_off )); 1093 p -> v2y_off = `R_OFFSET ( f , y ); 1094 p -> ases = oc ; 1095 p -> nses =sites; 1104 i( p -> v2y_off ! INVALID_ROFF ) 1105 `__v_loc_ ( f , 1106 `R_ADDR ( f , p -> v2y_off )); 1107 `__v_loc_ ( f , 1108 `R_ADDR ( f , p -> y_off )); 1109 p -> v2y_off =-> y_off = INVALID_ROFF ; 1110 p -> ases = 0; 1111 p -> nses = 0; 1114 `MUTEX_UNLOCK ( v , nv -> mtx_gv ); 1115 ( t ); 1116 } } 1129 $__v_p_r ( v , checklock ) 1130 ENV * v ; 1131 checklock ; 1133 DB_REP * db_p ; 1134 REGENV * nv ; 1135 REGINFO * f ; 1136 REP * p ; 1137 t ; 1138 time_t timeamp ; 1141 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1144 db_p = v -> p_hd ; 1145 p = db_p -> gi ; 1147 f = v -> gfo ; 1148 nv = f -> imy ; 1149 i( checklock && `F_ISSET ( nv , DB_REGENV_REPLOCKED )) { 1150 () `time (& timeamp ); 1151 `TIMESTAMP_CHECK ( v , timeamp , nv ); 1156 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) 1157 ( EINVAL ); 1160 `REP_SYSTEM_LOCK ( v ); 1161 t = 0; `F_ISSET ( p , REP_F_READY_API );) { 1162 `REP_SYSTEM_UNLOCK ( v ); 1163 i( `FLD_ISSET ( p -> cfig , REP_C_NOWAIT )) { 1164 `__db_rx ( v , 1166 ( DB_REP_LOCKOUT ); 1168 `__os_yld ( v , 1, 0); 1169 `REP_SYSTEM_LOCK ( v ); 1170 i(++ t % 60 == 0) 1171 `__db_rx ( v , 1173 t / 60); 1175 p -> hd_t ++; 1176 `REP_SYSTEM_UNLOCK ( v ); 1179 } } 1189 $__v_db_p_ex ( v ) 1190 ENV * v ; 1192 DB_REP * db_p ; 1193 REP * p ; 1196 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1199 db_p = v -> p_hd ; 1200 p = db_p -> gi ; 1202 `REP_SYSTEM_LOCK ( v ); 1203 p -> hd_t --; 1204 `REP_SYSTEM_UNLOCK ( v ); 1207 } } 1224 $__db_p_r ( dbp , checkg , checklock , tu_now ) 1225 DB * dbp ; 1226 checkg , checklock , tu_now ; 1228 DB_REP * db_p ; 1229 ENV * v ; 1230 REGENV * nv ; 1231 REGINFO * f ; 1232 REP * p ; 1233 time_t timeamp ; 1235 v = dbp ->env; 1237 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1240 db_p = v -> p_hd ; 1241 p = db_p -> gi ; 1242 f = v -> gfo ; 1243 nv = f -> imy ; 1245 i( checklock && `F_ISSET ( nv , DB_REGENV_REPLOCKED )) { 1246 () `time (& timeamp ); 1247 `TIMESTAMP_CHECK ( v , timeamp , nv ); 1252 i( `F_ISSET ( nv , DB_REGENV_REPLOCKED )) 1253 ( EINVAL ); 1255 `REP_SYSTEM_LOCK ( v ); 1267 i( `F_ISSET ( p , REP_F_READY_OP )) { 1268 `REP_SYSTEM_UNLOCK ( v ); 1269 i(! tu_now ) 1270 `__os_yld ( v , 5, 0); 1271 ( DB_LOCK_DEADLOCK ); 1274 i( checkg && dbp -> timeamp ! nv -> p_timeamp ) { 1275 `REP_SYSTEM_UNLOCK ( v ); 1276 `__db_rx ( v , "%s %s", 1279 ( DB_REP_HANDLE_DEAD ); 1281 p -> hd_t ++; 1282 `REP_SYSTEM_UNLOCK ( v ); 1285 } } 1299 $___p_r ( v ) 1300 ENV * v ; 1302 DB_REP * db_p ; 1303 REP * p ; 1304 t ; 1307 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1310 db_p = v -> p_hd ; 1311 p = db_p -> gi ; 1313 `REP_SYSTEM_LOCK ( v ); 1314 t = 0; `F_ISSET ( p , REP_F_READY_OP );) { 1315 `REP_SYSTEM_UNLOCK ( v ); 1316 i( `FLD_ISSET ( p -> cfig , REP_C_NOWAIT )) { 1317 `__db_rx ( v , 1319 ( DB_REP_LOCKOUT ); 1321 `__os_yld ( v , 5, 0); 1322 t += 5; 1323 `REP_SYSTEM_LOCK ( v ); 1324 i( t % 60 == 0) 1325 `__db_rx ( v , 1327 t / 60); 1329 p -> _t ++; 1330 `REP_SYSTEM_UNLOCK ( v ); 1333 } } 1344 $___p_ex ( v ) 1345 ENV * v ; 1347 DB_REP * db_p ; 1348 REP * p ; 1351 i( `F_ISSET ( v -> dbv , DB_ENV_NOLOCKING )) 1354 db_p = v -> p_hd ; 1355 p = db_p -> gi ; 1357 `REP_SYSTEM_LOCK ( v ); 1358 `DB_ASSERT ( v , p -> _t > 0); 1359 p -> _t --; 1360 `REP_SYSTEM_UNLOCK ( v ); 1363 } } 1374 $__p_lockout_i ( v , p ) 1375 ENV * v ; 1376 REP * p ; 1378 t ; 1386 i(( t = `__p_lockout_t ( v , p , &p-> _t , 0, 1387 "_t", REP_F_READY_OP )) != 0) 1388 ( t ); 1389 ( `__p_lockout_t ( v , p , &p-> hd_t , 0, 1390 "hd_t", REP_F_READY_API )); 1391 } } 1406 $__p_lockout_y ( v , p , y_th ) 1407 ENV * v ; 1408 REP * p ; 1409 u_t32_t y_th ; 1411 ( `__p_lockout_t ( v , p , &p-> y_th ,pply_th, 1412 "y_th", REP_F_READY_APPLY )); 1413 } } 1428 $__p_lockout_msg ( v , p , msg_th ) 1429 ENV * v ; 1430 REP * p ; 1431 u_t32_t msg_th ; 1433 ( `__p_lockout_t ( v , p , &p-> msg_th , msg_th, 1434 "msg_th", REP_F_READY_MSG )); 1435 } } 1445 $__p_lockout_t ( v , p , fldp , fld_v , msg , lockout_ag ) 1446 ENV * v ; 1447 REP * p ; 1448 u_t32_t * fldp ; 1449 cڡ * msg ; 1450 u_t32_t fld_v , lockout_ag ; 1452 wa_t ; 1454 `F_SET ( p , lockout_ag ); 1455 wa_t = 0; * fldp > fld_v ;) { 1456 `REP_SYSTEM_UNLOCK ( v ); 1457 `__os_yld ( v , 1, 0); 1458 #ifde DIAGNOSTIC 1459 i( wa_t == 5) 1460 `__db_rx ( v , 1462 msg , ( u_lg )* fldp ); 1463 i(++ wa_t % 60 == 0) 1464 `__db_rx ( v , 1466 msg , ( u_lg )* fldp , wa_t / 60); 1468 `REP_SYSTEM_LOCK ( v ); 1471 `COMPQUIET ( msg , NULL ); 1473 } } 1491 $__p_nd_thrَe ( v , eid , h , ags , lags ) 1492 ENV * v ; 1493 eid ; 1494 REP_THROTTLE * h ; 1495 u_t32_t lags , ags ; 1497 DB_REP * db_p ; 1498 REP * p ; 1499 u_t32_t size , tyme ; 1500 check_lim ; 1502 check_lim = h -> gbys !0 ||th-> bys != 0; 1507 i(! check_lim && `LF_ISSET ( REP_THROTTLE_ONLY )) 1510 db_p = v -> p_hd ; 1511 p = db_p -> gi ; 1512 tyme = 0; 1513 i( h -> ty = REP_LOG ) 1514 tyme = REP_LOG_MORE ; 1515 i( h -> ty = REP_PAGE ) 1516 tyme = REP_PAGE_MORE ; 1517 `DB_ASSERT ( v , tyme != 0); 1526 size = h -> da_dbt ->siz+ ( __p_cڌ_gs ); 1527 i( check_lim ) { 1528 h -> bys < size ) { 1529 i( h -> gbys > 0) { 1530 h -> bys + GIGABYTE ; 1531 --( h -> gbys ); 1538 `STAT ( p -> . _hrَes ++); 1539 h -> ty = tyme ; 1540 nd ; 1542 h -> bys - size ; 1551 nd : i(( h -> ty = tyme || ! `LF_ISSET ( REP_THROTTLE_ONLY )) && 1552 ( `__p_nd_mesge ( v , eid , h -> ty , 1553 & h -> l ,th-> da_dbt , ( REPCTL_RESEND | lags ), 0) != 0)) 1554 ( DB_REP_UNAVAIL ); 1556 } } 1564 u_t32_t 1565 $__p_msg_to_d ( vsi , y ) 1566 u_t32_t vsi , y ; 1576 cڡ u_t32_t b [ DB_REPVERSION ][ REP_MAX_MSG +1] = { 1578 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1579 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1580 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1581 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1582 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1583 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1584 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1585 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1589 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1590 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1591 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1592 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1593 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1594 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1595 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1596 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1600 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1601 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1602 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1603 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1604 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1605 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1606 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1607 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1611 { REP_INVALID , 1621 REP_INVALID , 1635 REP_INVALID , 1649 { REP_INVALID , 1683 ( b [ vsi ][ y ]); 1684 } } 1692 u_t32_t 1693 $__p_msg_om_d ( vsi , y ) 1694 u_t32_t vsi , y ; 1704 cڡ u_t32_t b [ DB_REPVERSION ][ REP_MAX_MSG +1] = { 1706 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1707 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1708 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1709 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1710 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1711 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1712 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1713 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1717 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1718 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1719 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1720 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1721 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1722 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1723 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1724 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1728 { REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1729 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1730 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1731 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1732 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1733 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1734 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID, 1735 REP_INVALID , REP_INVALID, REP_INVALID, REP_INVALID }, 1739 { REP_INVALID , 1771 REP_INVALID , 1772 REP_INVALID 1779 { REP_INVALID , 1813 ( b [ vsi ][ y ]); 1814 } } 1824 #ifde STDC_HEADERS 1825 $__p_t ( ENV * v , cڡ * fmt , ...) 1827 $__p_t ( v , fmt , va_i ) 1828 ENV * v ; 1829 cڡ * fmt ; 1830 va_d 1833 va_li ; 1834 DB_MSGBUF mb ; 1835 REP * p ; 1836 cڡ * s ; 1838 `DB_MSGBUF_INIT (& mb ); 1840 s = NULL ; 1841 i( v -> dbv -> db_fx ! NULL ) 1842 s = v -> dbv -> db_fx ; 1843 i( `REP_ON ( v )) { 1844 p = v -> p_hd -> gi ; 1845 i( `F_ISSET ( p , REP_F_CLIENT )) 1846 s = "CLIENT"; 1847 i( `F_ISSET ( p , REP_F_MASTER )) 1848 s = "MASTER"; 1850 i( s = NULL ) 1851 s = "REP_UNDEF"; 1852 `__db_msgadd ( v , & mb , "%s: ", s ); 1854 #ifde STDC_HEADERS 1855 `va_t ( , fmt ); 1857 `va_t ( ); 1859 `__db_msgadd_ ( v , & mb , fmt , ); 1860 `va_d ( ); 1862 `DB_MSGBUF_FLUSH ( v , & mb ); 1863 } } 1870 $__p_t_mesge ( v , eid , , r , ags ) 1871 ENV * v ; 1872 eid ; 1873 __p_cڌ_gs * ; 1874 * r ; 1875 u_t32_t ags ; 1877 u_t32_t lags , y ; 1878 y [64], * ty ; 1880 y = ->rectype; 1881 lags = -> ags ; 1882 i( -> p_vsi ! DB_REPVERSION ) 1883 y = `__p_msg_om_d ( -> p_vsi ,ectype); 1884 y ) { 1885 REP_ALIVE : 1886 ty = "alive"; 1888 REP_ALIVE_REQ : 1889 ty = "alive_req"; 1891 REP_ALL_REQ : 1892 ty = "all_req"; 1894 REP_BULK_LOG : 1895 ty = "bulk_log"; 1897 REP_BULK_PAGE : 1898 ty = "bulk_page"; 1900 REP_DUPMASTER : 1901 ty = "dupmaster"; 1903 REP_FILE : 1904 ty = "file"; 1906 REP_FILE_FAIL : 1907 ty = "file_fail"; 1909 REP_FILE_REQ : 1910 ty = "file_req"; 1912 REP_LEASE_GRANT : 1913 ty = "lease_grant"; 1915 REP_LOG : 1916 ty = "log"; 1918 REP_LOG_MORE : 1919 ty = "log_more"; 1921 REP_LOG_REQ : 1922 ty = "log_req"; 1924 REP_MASTER_REQ : 1925 ty = "master_req"; 1927 REP_NEWCLIENT : 1928 ty = "newclient"; 1930 REP_NEWFILE : 1931 ty = "newfile"; 1933 REP_NEWMASTER : 1934 ty = "newmaster"; 1936 REP_NEWSITE : 1937 ty = "newsite"; 1939 REP_PAGE : 1940 ty = "page"; 1942 REP_PAGE_FAIL : 1943 ty = "page_fail"; 1945 REP_PAGE_MORE : 1946 ty = "page_more"; 1948 REP_PAGE_REQ : 1949 ty = "page_req"; 1951 REP_REREQUEST : 1952 ty = "rerequest"; 1954 REP_START_SYNC : 1955 ty = "start_sync"; 1957 REP_UPDATE : 1958 ty = "update"; 1960 REP_UPDATE_REQ : 1961 ty = "update_req"; 1963 REP_VERIFY : 1964 ty = "verify"; 1966 REP_VERIFY_FAIL : 1967 ty = "verify_fail"; 1969 REP_VERIFY_REQ : 1970 ty = "verify_req"; 1972 REP_VOTE1 : 1973 ty = "vote1"; 1975 REP_VOTE2 : 1976 ty = "vote2"; 1979 ty = "NOTYPE"; 1988 y [0] = '\0'; 1989 i( `LF_ISSET ( DB_REP_ANYWHERE )) 1990 () `rt ( y , "ny"); 1991 i( `FLD_ISSET ( lags , REPCTL_FLUSH )) 1992 () `rt ( y , " flush"); 1998 i(! `FLD_ISSET ( lags , REPCTL_GROUP_ESTD )) 1999 () `rt ( y , "ogroup"); 2000 i( `FLD_ISSET ( lags , REPCTL_LEASE )) 2001 () `rt ( y , "ease"); 2002 i( `LF_ISSET ( DB_REP_NOBUFFER )) 2003 () `rt ( y , "obuf"); 2004 i( `LF_ISSET ( DB_REP_PERMANENT )) 2005 () `rt ( y , "erm"); 2006 i( `LF_ISSET ( DB_REP_REREQUEST )) 2007 () `rt ( y , "ereq"); 2008 i( `FLD_ISSET ( lags , REPCTL_RESEND )) 2009 () `rt ( y , "esend"); 2010 i( `FLD_ISSET ( lags , REPCTL_LOG_END )) 2011 () `rt ( y , "ogend"); 2012 `RPRINT ( v , DB_VERB_REP_MSGS , 2013 ( v , 2015 v -> db_home , r , 2016 ( u_lg ) -> p_vsi , (u_lgp-> log_vsi , (u_lgp-> g , 2017 eid , ty , ( u_lg ) -> l . fe , (u_lgp->l. offt , y )); 2022 `DB_ASSERT ( v , -> p_vsi < DB_REPVERSION +10); 2023 `DB_ASSERT ( v , -> log_vsi < DB_LOGVERSION +10); 2024 } } 2030 $__p_fe_evt ( v , evt , fo ) 2031 ENV * v ; 2032 u_t32_t evt ; 2033 * fo ; 2035 t ; 2042 t = `__pmgr_hd_evt ( v , evt , fo ); 2043 `DB_ASSERT ( v , t =0 || = DB_EVENT_NOT_HANDLED ); 2045 i( t = DB_EVENT_NOT_HANDLED ) 2046 `DB_EVENT ( v , evt , fo ); 2047 } } @../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 (( ENV *, DB_LSN *, DB_LSN *)); 27 $__p_vify ( v , , c , eid , vime ) 28 ENV * v ; 29 __p_cڌ_gs * ; 30 DBT * c ; 31 eid ; 32 time_t vime ; 34 DBT mylog ; 35 DB_LOG * db ; 36 DB_LOGC * logc ; 37 DB_LSN l ; 38 DB_REP * db_p ; 39 LOG * ; 40 REP * p ; 41 u_t32_t y , logag ; 42 mch , t , t_t ; 44 t = 0; 45 db_p = v -> p_hd ; 46 p = db_p -> gi ; 47 db = v -> lg_hd ; 48 = db -> gfo . imy ; 51 i(! `F_ISSET ( p , REP_F_RECOVER_VERIFY )) 52 ( t ); 54 #ifde DIAGNOSTIC 58 i( `IS_USING_LEASES ( v )) { 59 `REP_SYSTEM_LOCK ( v ); 60 `DB_ASSERT ( v , `__p_i_ged (env) == 0); 61 `REP_SYSTEM_UNLOCK ( v ); 65 i(( t = `__log_curs ( v , & logc )) != 0) 66 ( t ); 67 `memt (& mylog , 0, (mylog)); 69 `MUTEX_LOCK ( v , p -> mtx_db ); 70 logag = `IS_ZERO_LSN ( -> vify_l ? DB_LAST : DB_SET ; 71 `MUTEX_UNLOCK ( v , p -> mtx_db ); 72 i(( t = `__logc_g ( logc , & -> l , & mylog , logag )) != 0) 73 r ; 74 mch = 0; 75 `LOGCOPY_32 ( v , & y , mylog . da ); 76 i( mylog . size = c ->size && 77 `memcmp ( mylog . da , c ->da,ec-> size ) == 0) 78 mch = 1; 83 i( mch == 0) { 84 `ZERO_LSN ( l ); 85 i(( t = `__p_log_backup ( v , p , logc , & l )) == 0) { 86 `MUTEX_LOCK ( v , p -> mtx_db ); 87 -> vify_l = l ; 88 `__os_gtime ( v , & -> rcvd_ts , 1); 89 -> wa_ts = p -> que_g ; 90 `MUTEX_UNLOCK ( v , p -> mtx_db ); 91 () `__p_nd_mesge ( v , eid , REP_VERIFY_REQ , 92 & l , NULL , 0, DB_REP_ANYWHERE ); 93 } i( t = DB_NOTFOUND ) { 99 `STAT ( p -> . _outded ++); 100 `REP_SYSTEM_LOCK ( v ); 101 i( `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT )) 102 t = DB_REP_JOIN_FAILURE ; 104 `F_CLR ( p , REP_F_RECOVER_VERIFY ); 105 `F_SET ( p , REP_F_RECOVER_UPDATE ); 106 `ZERO_LSN ( p -> f_l ); 107 `ZERO_LSN ( p -> ckp_l ); 108 t = 0; 110 `REP_SYSTEM_UNLOCK ( v ); 111 i( t == 0) 112 () `__p_nd_mesge ( v , 113 eid , REP_UPDATE_REQ , NULL , 114 NULL , 0, 0); 117 t = `__p_vify_mch ( v , & -> l , vime ); 119 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 120 t = t_t ; 121 ( t ); 122 } } 131 $__p_vify_ ( v , , eid ) 132 ENV * v ; 133 __p_cڌ_gs * ; 134 eid ; 136 DB_LOG * db ; 137 DB_REP * db_p ; 138 LOG * ; 139 REP * p ; 140 lockout , t ; 142 lockout = 0; 143 t = 0; 144 db_p = v -> p_hd ; 145 p = db_p -> gi ; 146 db = v -> lg_hd ; 147 = db -> gfo . imy ; 154 i( `F_ISSET ( p , REP_F_RECOVER_MASK ) && 155 ! `F_ISSET ( p , REP_F_RECOVER_LOG | REP_F_RECOVER_VERIFY )) 157 `MUTEX_LOCK ( v , p -> mtx_db ); 158 `REP_SYSTEM_LOCK ( v ); 162 `DB_ASSERT ( v , 163 ! `IS_USING_LEASES ( v || `__p_i_ged (env) == 0); 168 `STAT ( p -> . _outded ++); 175 i(! `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT ) && 176 ( `F_ISSET ( p , REP_F_RECOVER_LOG ) && 177 `LOG_COMPARE (& p -> f_l , & -> l ) <= 0 && 178 `LOG_COMPARE (& p -> ϡ_l , & -> l ) >= 0)) { 182 i( `F_ISSET ( p , REP_F_READY_MSG )) 183 uock ; 188 i(( t = `__p_lockout_msg ( v , p , 1)) != 0) 189 uock ; 190 lockout = 1; 195 i( `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP )) { 196 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 198 i(( t = 199 `__p__nup ( v , p , DB_FORCE )) != 0) { 200 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 201 "VERIFY_FAIL c˪g u in f missgog: %d", t )); 202 msglck ; 204 `F_CLR ( p , REP_F_RECOVER_MASK ); 206 `F_CLR ( p , REP_F_READY_MSG ); 207 lockout = 0; 218 i((( `F_ISSET ( p , REP_F_RECOVER_VERIFY )) && 219 `LOG_COMPARE (& -> l , & -> vify_l ) == 0) || 220 ( `F_ISSET ( p , REP_F_RECOVER_LOG ) && 221 `LOG_COMPARE (& p -> f_l , & -> l ) <= 0 && 222 `LOG_COMPARE (& p -> ϡ_l , & -> l ) >= 0) || 223 ( `F_ISSET ( p , REP_F_RECOVER_MASK ) == 0 && 224 `LOG_COMPARE (& -> l , & -> ady_l ) >= 0)) { 231 i( `FLD_ISSET ( p -> cfig , REP_C_NOAUTOINIT )) { 232 t = DB_REP_JOIN_FAILURE ; 233 uock ; 239 `F_CLR ( p , REP_F_RECOVER_VERIFY ); 240 `F_SET ( p , REP_F_RECOVER_UPDATE ); 241 `ZERO_LSN ( p -> f_l ); 242 `ZERO_LSN ( p -> ckp_l ); 243 -> wa_ts = p -> que_g ; 244 `REP_SYSTEM_UNLOCK ( v ); 245 `MUTEX_UNLOCK ( v , p -> mtx_db ); 246 () `__p_nd_mesge ( v , 247 eid , REP_UPDATE_REQ , NULL , NULL, 0, 0); 252 msglck : i( lockout ) 253 `F_CLR ( p , REP_F_READY_MSG ); 254 uock : `REP_SYSTEM_UNLOCK ( v ); 255 `MUTEX_UNLOCK ( v , p -> mtx_db ); 257 ( t ); 258 } } 267 $__p_vify_q ( v , , eid ) 268 ENV * v ; 269 __p_cڌ_gs * ; 270 eid ; 272 DBT * d , da_dbt ; 273 DB_LOGC * logc ; 274 DB_REP * db_p ; 275 REP * p ; 276 u_t32_t ty ; 277 d , t ; 279 t = 0; 280 db_p = v -> p_hd ; 281 p = db_p -> gi ; 283 ty = REP_VERIFY ; 284 i(( t = `__log_curs ( v , & logc )) != 0) 285 ( t ); 286 d = & da_dbt ; 287 `memt ( d , 0, ( da_dbt )); 288 `F_SET ( logc , DB_LOG_SILENT_ERR ); 289 t = `__logc_g ( logc , & -> l , d , DB_SET ); 302 i( t = DB_NOTFOUND ) { 303 i( `F_ISSET ( p , REP_F_CLIENT )) { 304 () `__logc_o ( logc ); 305 ( DB_NOTFOUND ); 307 i( `__log_is_outded ( v , -> l . fe , & d ) == 0 && 308 d != 0) 309 ty = REP_VERIFY_FAIL ; 312 i( t != 0) 313 d = NULL ; 315 () `__p_nd_mesge ( v , eid , ty , & -> l , d , 0, 0); 316 ( `__logc_o ( logc )); 317 } } 320 $__p_decovy ( v , lp , unp ) 321 ENV * v ; 322 DB_LSN * lp , * unp ; 324 DBT mylog ; 325 DB_LOGC * logc ; 326 DB_LSN ϡ_ckp , l ; 327 DB_REP * db_p ; 328 DB_THREAD_INFO * ; 329 REP * p ; 330 t , sk_c , t_t , upde ; 331 u_t32_t y , code ; 332 __txn_g_gs * txec ; 333 __txn_g_42_gs * txn42c ; 335 db_p = v -> p_hd ; 336 p = db_p -> gi ; 337 `ENV_GET_THREAD_INFO ( v , ); 340 i(( t = `__log_curs ( v , & logc )) != 0) 341 ( t ); 343 `memt (& mylog , 0, (mylog)); 344 i( `F_ISSET ( p , REP_F_RECOVER_LOG )) { 350 sk_c = 0; 351 upde = 1; 353 sk_c = 1; 354 upde = 0; 356 upde == 0 && 357 ( t = `__logc_g ( logc , & l , & mylog , DB_PREV )) == 0 && 358 `LOG_COMPARE (& l , lp ) > 0) { 359 `LOGCOPY_32 ( v , & y , mylog . da ); 379 `DB_ASSERT ( v , p -> _t == 0); 380 `DB_ASSERT ( v , p -> msg_th == 1); 381 i( y = DB___txn_g ||ey = DB___txn_ckp || 382 y = DB___dbg_gi ) 383 sk_c = 0; 384 i( y = DB___txn_g ) { 385 i( p -> vsi > DB_REPVERSION_44 ) { 386 i(( t = `__txn_g_ad ( 387 v , mylog . da , & txec )) != 0) 388 r ; 389 code = txec ->opcode; 390 `__os_ ( v , txec ); 392 i(( t = `__txn_g_42_ad ( 393 v , mylog . da , & txn42c )) != 0) 394 r ; 395 code = txn42c ->opcode; 396 `__os_ ( v , txn42c ); 398 i( code ! TXN_ABORT ) 399 upde = 1; 405 i( t != 0) 406 r ; 413 i( sk_c ) { 414 i(( t = `__log_g_ab_l ( v , & ϡ_ckp )) != 0) { 415 i( t ! DB_NOTFOUND ) 416 r ; 417 `ZERO_LSN ( ϡ_ckp ); 419 `RPRINT ( v , DB_VERB_REP_SYNC , (env, 421 ( u_lg ) lp -> fe , (u_lgp-> offt , 422 ( u_lg ) ϡ_ckp . fe , (u_lga_ckp. offt )); 423 t = `__log_vun ( v , lp , & ϡ_ckp , unp ); 425 t = `__db_ec ( v , , lp , unp , upde , 0); 427 i( t != 0) 428 r ; 429 `F_SET ( db_p , DBREP_OPENFILES ); 431 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 432 t = t_t ; 434 ( t ); 435 } } 447 $__p_vify_mch ( v , p , vime ) 448 ENV * v ; 449 DB_LSN * p ; 450 time_t vime ; 452 DB_LOG * db ; 453 DB_LSN un ; 454 DB_REP * db_p ; 455 DB_THREAD_INFO * ; 456 LOG * ; 457 REGENV * nv ; 458 REGINFO * f ; 459 REP * p ; 460 de , ma , t ; 461 u_t32_t unud ; 463 db = v -> lg_hd ; 464 db_p = v -> p_hd ; 465 p = db_p -> gi ; 466 = db -> gfo . imy ; 467 t = 0; 468 f = v -> gfo ; 469 nv = f -> imy ; 470 `ENV_GET_THREAD_INFO ( v , ); 477 `MUTEX_LOCK ( v , p -> mtx_db ); 478 de = vime ! nv -> p_timeamp ; 479 i( de ) { 480 `MUTEX_UNLOCK ( v , p -> mtx_db ); 483 `ZERO_LSN ( -> vify_l ); 484 `MUTEX_UNLOCK ( v , p -> mtx_db ); 491 `REP_SYSTEM_LOCK ( v ); 492 i( `F_ISSET ( p , REP_F_READY_MSG ) || 493 (! `F_ISSET ( p , REP_F_RECOVER_LOG ) && 494 `F_ISSET ( p , REP_F_READY_API | REP_F_READY_OP ))) { 498 `STAT ( p -> . _msgs_cov ++); 499 ruock ; 505 i(( t = `__p_lockout_msg ( v , p , 1)) != 0) 506 ruock ; 511 i(( t = `__p_lockout_i ( v , p )) != 0) 512 ruock ; 515 `REP_SYSTEM_UNLOCK ( v ); 517 i(( t = `__p_decovy ( v , p , & un )) != 0 || 518 ( t = `__p_move__fe ( v )) != 0) { 519 `REP_SYSTEM_LOCK ( v ); 520 `F_CLR ( p , REP_F_READY_API | REP_F_READY_MSG | REP_F_READY_OP ); 521 ruock ; 529 `MUTEX_LOCK ( v , p -> mtx_db ); 530 -> ady_l = un ; 531 `ZERO_LSN ( -> wag_l ); 532 `ZERO_LSN ( -> max_wa_l ); 533 -> max_rm_l = * p ; 534 -> wa_ts = p -> que_g ; 535 `__os_gtime ( v , & -> rcvd_ts , 1); 536 `ZERO_LSN ( -> vify_l ); 544 i( db_p -> p_db = NULL && 545 ( t = `__p__db ( v , 0, REP_DB )) != 0) { 546 `MUTEX_UNLOCK ( v , p -> mtx_db ); 547 out ; 550 `F_SET ( db_p -> p_db , DB_AM_RECOVER ); 551 `MUTEX_UNLOCK ( v , p -> mtx_db ); 552 t = `__db_un ( db_p -> p_db , , NULL , & unud ); 553 `MUTEX_LOCK ( v , p -> mtx_db ); 554 `F_CLR ( db_p -> p_db , DB_AM_RECOVER ); 556 `REP_SYSTEM_LOCK ( v ); 557 p -> . _log_queued = 0; 558 `F_CLR ( p , REP_F_NOARCHIVE | REP_F_RECOVER_MASK | REP_F_READY_MSG ); 559 i( t != 0) 560 ruock2 ; 572 ma = p -> ma_id ; 573 `REP_SYSTEM_UNLOCK ( v ); 574 i( ma = DB_EID_INVALID ) { 575 `MUTEX_UNLOCK ( v , p -> mtx_db ); 576 t = 0; 589 -> wa_ts = p -> max_g ; 590 `MUTEX_UNLOCK ( v , p -> mtx_db ); 591 () `__p_nd_mesge ( v , 592 ma , REP_ALL_REQ , p , NULL , 0, DB_REP_ANYWHERE ); 595 ruock2 : `MUTEX_UNLOCK ( v , p -> mtx_db ); 596 ruock : `REP_SYSTEM_UNLOCK ( v ); 598 out : ( t ); 599 } } 611 $__p_log_backup ( v , p , logc , l ) 612 ENV * v ; 613 REP * p ; 614 DB_LOGC * logc ; 615 DB_LSN * l ; 617 DBT mylog ; 618 u_t32_t y ; 619 t ; 621 t = 0; 622 `memt (& mylog , 0, (mylog)); 623 ( t = `__logc_g ( logc , l , & mylog , DB_PREV )) == 0) { 630 `LOGCOPY_32 ( v , & y , mylog . da ); 634 i( p -> vsi > DB_REPVERSION_44 && 635 ( y = DB___txn_ckp ||ey = DB___txn_g )) 638 ( t ); 639 } } @../repmgr/repmgr_auto.c 3 ~"db_cfig.h " 5 ~"db_t.h " 6 ~"dbc/db_sw.h " 13 $__pmgr_hdshake_msh ( v , gp , bp ) 14 ENV * v ; 15 __pmgr_hdshake_gs * gp ; 16 u_t8_t * bp ; 18 `DB_HTONS_COPYOUT ( v , bp , gp -> pt ); 19 `DB_HTONL_COPYOUT ( v , bp , gp -> iܙy ); 20 } } 27 $__pmgr_hdshake_unmsh ( v , gp , bp , max , x ) 28 ENV * v ; 29 __pmgr_hdshake_gs * gp ; 30 u_t8_t * bp ; 31 size_t max ; 32 u_t8_t ** x ; 34 i( max < __REPMGR_HANDSHAKE_SIZE ) 35 too_w ; 36 `DB_NTOHS_COPYIN ( v , gp -> pt , bp ); 37 `DB_NTOHL_COPYIN ( v , gp -> iܙy , bp ); 39 i( x ! NULL ) 40 * x = bp ; 43 too_w : 44 `__db_rx ( v , 46 ( EINVAL ); 47 } } 54 $__pmgr_ack_msh ( v , gp , bp ) 55 ENV * v ; 56 __pmgr_ack_gs * gp ; 57 u_t8_t * bp ; 59 `DB_HTONL_COPYOUT ( v , bp , gp -> gi ); 60 `DB_HTONL_COPYOUT ( v , bp , gp -> l . fe ); 61 `DB_HTONL_COPYOUT ( v , bp , gp -> l . offt ); 62 } } 69 $__pmgr_ack_unmsh ( v , gp , bp , max , x ) 70 ENV * v ; 71 __pmgr_ack_gs * gp ; 72 u_t8_t * bp ; 73 size_t max ; 74 u_t8_t ** x ; 76 i( max < __REPMGR_ACK_SIZE ) 77 too_w ; 78 `DB_NTOHL_COPYIN ( v , gp -> gi , bp ); 79 `DB_NTOHL_COPYIN ( v , gp -> l . fe , bp ); 80 `DB_NTOHL_COPYIN ( v , gp -> l . offt , bp ); 82 i( x ! NULL ) 83 * x = bp ; 86 too_w : 87 `__db_rx ( v , 89 ( EINVAL ); 90 } } 97 $__pmgr_vsi_ol_msh ( v , gp , bp ) 98 ENV * v ; 99 __pmgr_vsi_ol_gs * gp ; 100 u_t8_t * bp ; 102 `DB_HTONL_COPYOUT ( v , bp , gp -> m ); 103 `DB_HTONL_COPYOUT ( v , bp , gp -> max ); 104 } } 112 $__pmgr_vsi_ol_unmsh ( v , gp , bp , max , x ) 113 ENV * v ; 114 __pmgr_vsi_ol_gs * gp ; 115 u_t8_t * bp ; 116 size_t max ; 117 u_t8_t ** x ; 119 i( max < __REPMGR_VERSION_PROPOSAL_SIZE ) 120 too_w ; 121 `DB_NTOHL_COPYIN ( v , gp -> m , bp ); 122 `DB_NTOHL_COPYIN ( v , gp -> max , bp ); 124 i( x ! NULL ) 125 * x = bp ; 128 too_w : 129 `__db_rx ( v , 131 ( EINVAL ); 132 } } 139 $__pmgr_vsi_cfmi_msh ( v , gp , bp ) 140 ENV * v ; 141 __pmgr_vsi_cfmi_gs * gp ; 142 u_t8_t * bp ; 144 `DB_HTONL_COPYOUT ( v , bp , gp -> vsi ); 145 } } 153 $__pmgr_vsi_cfmi_unmsh ( v , gp , bp , max , x ) 154 ENV * v ; 155 __pmgr_vsi_cfmi_gs * gp ; 156 u_t8_t * bp ; 157 size_t max ; 158 u_t8_t ** x ; 160 i( max < __REPMGR_VERSION_CONFIRMATION_SIZE ) 161 too_w ; 162 `DB_NTOHL_COPYIN ( v , gp -> vsi , bp ); 164 i( x ! NULL ) 165 * x = bp ; 168 too_w : 169 `__db_rx ( v , 171 ( EINVAL ); 172 } } @../repmgr/repmgr_elect.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 __pmgr_is_ady __P (( ENV *)); 15 __pmgr_e_ma __P (( ENV *)); 16 * __pmgr_e_thad __P ((*)); 17 t_ei_thad __P (( ENV *)); 30 $__pmgr__ei ( v , l_ݔi ) 31 ENV * v ; 32 l_ݔi ; 34 DB_REP * db_p ; 35 t ; 37 db_p = v -> p_hd ; 38 i( db_p -> fished ) { 39 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 41 l_ݔi )); 45 db_p -> ݔi_eded = l_ݔi ; 46 i( db_p -> e_thad = NULL ) 47 t = `t_ei_thad ( v ); 48 i( db_p -> e_thad -> fished ) { 49 `RPRINT ( v , DB_VERB_REPMGR_MISC , 50 ( v , "join deadlecthread")); 51 i(( t = `__pmgr_thad_jo ( db_p -> e_thad )) != 0) 52 ( t ); 53 `__os_ ( v , db_p -> e_thad ); 54 db_p -> e_thad = NULL ; 55 t = `t_ei_thad ( v ); 57 `RPRINT ( v , DB_VERB_REPMGR_MISC , 58 ( v , "reusingxistinglecthread")); 59 i(( t = `__pmgr_sigl (& db_p -> check_ei )) != 0) 60 `__db_r ( v , t , "can't signallectionhread"); 62 ( t ); 63 } } 70 $t_ei_thad ( v ) 71 ENV * v ; 73 DB_REP * db_p ; 74 REPMGR_RUNNABLE * e ; 75 t ; 77 db_p = v -> p_hd ; 79 i(( t = `__os_mloc ( v , ( REPMGR_RUNNABLE ), & e )) 81 ( t ); 82 e -> v =nv; 83 e -> run = __pmgr_e_thad ; 85 i(( t = `__pmgr_thad_t ( v , e )) == 0) 86 db_p -> e_thad = e ; 88 `__os_ ( v , e ); 90 ( t ); 91 } } 94 $__pmgr_e_thad ( gs ) 95 * gs ; 97 ENV * v = gs ; 98 t ; 100 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, "startinglectionhread")); 102 i(( t = `__pmgr_e_ma ( v )) != 0) { 103 `__db_r ( v , t , "electionhread failed"); 104 `__pmgr_thad_u ( v , t ); 107 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, "electionhread isxiting")); 108 ( NULL ); 109 } } 112 $__pmgr_e_ma ( v ) 113 ENV * v ; 115 DBT my_addr ; 116 DB_ENV * dbv ; 117 DB_REP * db_p ; 118 #ifde DB_WIN32 119 DWORD duti ; 121 timeec ddle ; 123 u_t32_t nses , nves ; 124 de , u_covy , ϡ_ ; 125 ed_sucss , t , suceded , to_do ; 127 `COMPQUIET ( ed_sucss , TRUE ); 129 dbv = v ->dbenv; 130 db_p = v -> p_hd ; 131 ϡ_ = 0; 132 u_covy = suceded = FALSE ; 150 `LOCK_MUTEX ( db_p -> mux ); 151 i( db_p -> fished ) { 152 db_p -> e_thad -> fished = TRUE ; 153 `UNLOCK_MUTEX ( db_p -> mux ); 156 to_do = db_p -> ݔi_eded ; 157 db_p -> ݔi_eded = 0; 158 `UNLOCK_MUTEX ( db_p -> mux ); 167 to_do ) { 168 ELECT_FAILURE_ELECTION : 169 u_covy = TRUE ; 170 to_do = ELECT_ELECTION ; 172 ELECT_ELECTION : 173 ed_sucss = TRUE ; 175 ELECT_SEEK_MASTER : 176 to_do = 0; 178 ELECT_REPSTART : 179 ed_sucss = FALSE ; 182 `DB_ASSERT ( v , FALSE ); 187 `RPRINT ( v , DB_VERB_REPMGR_MISC , 188 ( v , "ehaddo: %d", to_do )); 189 to_do ) { 190 ELECT_ELECTION : 191 nses = `__pmgr_g_nses ( db_p ); 198 i( nses == 2 && 199 ! `FLD_ISSET ( db_p -> gi -> cfig , 200 REP_C_2SITE_STRICT )) 201 nves = 1; 203 nves = `ELECTION_MAJORITY ( nses ); 219 i( u_covy && nses > nves ) 220 nses --; 222 t = 223 `__p_e ( dbv , nses , nves , 0)) { 224 DB_REP_UNAVAIL : 228 suceded = TRUE ; 229 i( db_p -> keov_ndg ) { 230 db_p -> keov_ndg = FALSE ; 231 i(( t = 232 `__pmgr_become_ma ( v )) != 0) 233 ( t ); 238 `__db_r ( 239 v , t , "unexpectedlection failure"); 240 ( t ); 242 ϡ_ = ELECT_ELECTION ; 244 ELECT_REPSTART : 245 i(( t = 246 `__pmgr_e_my_addr ( v , & my_addr )) != 0) 247 ( t ); 248 t = `__p_t ( dbv , & my_addr , DB_REP_CLIENT ); 249 `__os_ ( v , my_addr . da ); 250 i( t != 0) { 251 `__db_r ( v , t , "rep_start"); 252 ( t ); 254 ϡ_ = ELECT_REPSTART ; 261 ϡ_ = 0; 264 `DB_ASSERT ( v , FALSE ); 272 u_covy = FALSE ; 274 `LOCK_MUTEX ( db_p -> mux ); 275 ! suceded && ! `__pmgr_is_ady ( v )) { 276 #ifde DB_WIN32 277 duti = db_p -> ei_y_wa / US_PER_MS ; 278 t = `SiglObjeAndWa ( db_p -> mux , 279 db_p -> check_ei , duti , FALSE ); 280 `LOCK_MUTEX ( db_p -> mux ); 281 i( t = WAIT_TIMEOUT ) 283 `DB_ASSERT ( v , t = WAIT_OBJECT_0 ); 285 `__pmgr_compu_wa_ddle ( v , & ddle , 286 db_p -> ei_y_wa ); 287 i(( t = `had_cd_timedwa ( 288 & db_p -> check_ei , &db_p-> mux , & ddle )) 289 = ETIMEDOUT ) 291 `DB_ASSERT ( v , t == 0); 307 de = FALSE ; 308 i(( to_do = db_p -> ݔi_eded ) != 0) { 309 db_p -> ݔi_eded = 0; 310 to_do ) { 311 ELECT_FAILURE_ELECTION : 312 u_covy = TRUE ; 313 to_do = ELECT_ELECTION ; 315 ELECT_ELECTION : 316 ed_sucss = TRUE ; 318 ELECT_SEEK_MASTER : 319 to_do = 0; 324 } i(( de = ( suceded || 325 (! ed_sucss && `IS_VALID_EID ( db_p -> ma_eid )) || 326 db_p -> fished ))) 327 db_p -> e_thad -> fished = TRUE ; 329 i( ϡ_ = ELECT_ELECTION ) 330 to_do = ELECT_REPSTART ; 340 to_do = ELECT_ELECTION ; 341 i( db_p -> _picy = DB_REP_CLIENT && 342 ! db_p -> found_ma ) 343 to_do = ELECT_REPSTART ; 347 `UNLOCK_MUTEX ( db_p -> mux ); 348 i( de ) 351 } } 357 $__pmgr_is_ady ( v ) 358 ENV * v ; 360 DB_REP * db_p ; 362 db_p = v -> p_hd ; 364 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 366 db_p -> ݔi_eded , db_p-> fished , db_p-> ma_eid )); 368 ( db_p -> ݔi_eded || db_p-> fished ); 369 } } 375 $__pmgr_become_ma ( v ) 376 ENV * v ; 378 DBT my_addr ; 379 DB_ENV * dbv ; 380 DB_REP * db_p ; 381 t ; 383 dbv = v ->dbenv; 384 db_p = v -> p_hd ; 385 db_p -> ma_eid = SELF_EID ; 386 db_p -> found_ma = TRUE ; 394 i(( t = `__pmgr_e_my_addr ( v , & my_addr )) != 0) 395 ( t ); 396 t = `__p_t ( dbv , & my_addr , DB_REP_MASTER ); 397 `__os_ ( v , my_addr . da ); 398 i( t == 0) 399 `__pmgr_ash_gi ( v ); 401 ( t ); 402 } } @../repmgr/repmgr_method.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 __pmgr_awa_thads __P (( ENV *)); 20 $__pmgr_t ( dbv , hads , ags ) 21 DB_ENV * dbv ; 22 hads ; 23 u_t32_t ags ; 25 DBT my_addr ; 26 DB_REP * db_p ; 27 ENV * v ; 28 REPMGR_RUNNABLE * , * mesng ; 29 t , i ; 31 v = dbv ->env; 32 db_p = v -> p_hd ; 34 i(! `F_ISSET ( v , ENV_THREAD )) { 35 `__db_rx ( v , 37 ( EINVAL ); 41 i( db_p -> my_addr . pt == 0) { 42 `__db_rx ( v , 44 ( EINVAL ); 47 i( db_p -> ! NULL || db_p-> fished ) { 48 `__db_rx ( v , 50 ( EINVAL ); 53 ags ) { 54 DB_REP_CLIENT : 55 DB_REP_ELECTION : 56 DB_REP_MASTER : 59 `__db_rx ( v , 61 ( EINVAL ); 64 i( hads <= 0) { 65 `__db_rx ( v , 67 ( EINVAL ); 70 i(( t = `__os_oc ( v , ( u_t ) hads , 71 ( REPMGR_RUNNABLE *), & db_p -> mesngs )) != 0) 72 ( t ); 73 db_p -> hads =threads; 75 i(( t = `__pmgr_t_ ( v , db_p )) != 0 || 76 ( t = `__pmgr__sync ( v , db_p )) != 0 || 77 ( t = `__p_t_t ( dbv , SELF_EID , __pmgr_nd )) != 0) 78 ( t ); 85 i(( db_p -> _picy = ags = DB_REP_MASTER ) 86 t = `__pmgr_become_ma ( v ); 88 i(( t = `__pmgr_e_my_addr ( v , & my_addr )) != 0) 89 ( t ); 90 t = `__p_t ( dbv , & my_addr , DB_REP_CLIENT ); 91 `__os_ ( v , my_addr . da ); 92 i( t == 0) { 93 `LOCK_MUTEX ( db_p -> mux ); 94 t = `__pmgr__ei ( v , ELECT_SEEK_MASTER ); 95 `UNLOCK_MUTEX ( db_p -> mux ); 98 i( t != 0) 99 ( t ); 101 i(( t = `__os_oc ( v , 1, ( REPMGR_RUNNABLE ), & )) 103 ( t ); 104 -> v =nv; 105 -> run = __pmgr__thad ; 106 i(( t = `__pmgr_thad_t ( v , )) != 0) { 107 `__db_r ( v , t , "can't start selectorhread"); 108 `__os_ ( v , ); 109 ( t ); 111 db_p -> = selector; 113 i =0; i< hads ; i++) { 114 i(( t = `__os_oc ( v , 1, ( REPMGR_RUNNABLE ), 115 & mesng )) != 0) 116 ( t ); 118 mesng -> v =nv; 119 mesng -> run = __pmgr_msg_thad ; 120 i(( t = `__pmgr_thad_t ( v , mesng )) != 0) { 121 `__os_ ( v , mesng ); 122 ( t ); 124 db_p -> mesngs [ i ] = mesng ; 127 ( t ); 128 } } 134 $__pmgr_o ( v ) 135 ENV * v ; 137 DB_REP * db_p ; 138 t , t_t ; 140 t = 0; 141 db_p = v -> p_hd ; 142 i( db_p -> ! NULL ) { 143 `RPRINT ( v , DB_VERB_REPMGR_MISC , 144 ( v , "Stoppingepmgrhreads")); 145 t = `__pmgr__thads ( v ); 146 i(( t_t = `__pmgr_awa_thads ( v )!0 && t == 0) 147 t = t_t ; 148 `RPRINT ( v , DB_VERB_REPMGR_MISC , 149 ( v , "Repmgrhreadsre finished")); 152 i(( t_t = `__pmgr_t_o ( v )!0 && t == 0) 153 t = t_t ; 155 i(( t_t = `__pmgr_o_sync ( v )!0 && t == 0) 156 t = t_t ; 158 ( t ); 159 } } 165 $__pmgr_t_ack_picy ( dbv , picy ) 166 DB_ENV * dbv ; 167 picy ; 169 ENV * v ; 171 v = dbv ->env; 173 picy ) { 174 DB_REPMGR_ACKS_ALL : 175 DB_REPMGR_ACKS_ALL_PEERS : 176 DB_REPMGR_ACKS_NONE : 177 DB_REPMGR_ACKS_ONE : 178 DB_REPMGR_ACKS_ONE_PEER : 179 DB_REPMGR_ACKS_QUORUM : 180 v -> p_hd -> rm_picy = picy ; 183 `__db_rx ( v , 185 ( EINVAL ); 187 } } 193 $__pmgr_g_ack_picy ( dbv , picy ) 194 DB_ENV * dbv ; 195 * picy ; 197 ENV * v ; 199 v = dbv ->env; 200 * picy = v -> p_hd -> rm_picy ; 202 } } 208 $__pmgr_v_ ( v , db_p ) 209 ENV * v ; 210 DB_REP * db_p ; 212 t ; 215 db_p -> ack_timeout = DB_REPMGR_DEFAULT_ACK_TIMEOUT ; 216 db_p -> ci_y_wa = DB_REPMGR_DEFAULT_CONNECTION_RETRY ; 217 db_p -> ei_y_wa = DB_REPMGR_DEFAULT_ELECTION_RETRY ; 218 db_p -> cfig_nses = 0; 219 db_p -> = DB_EID_INVALID ; 220 db_p -> rm_picy = DB_REPMGR_ACKS_QUORUM ; 222 #ifde DB_WIN32 223 db_p -> was = NULL ; 225 db_p -> ad_pe = db_p-> wre_pe = -1; 227 i(( t = `__pmgr_t_ ( db_p )) == 0) 228 t = `__pmgr_queue_ ( v , db_p ); 230 ( t ); 231 } } 237 $__pmgr_v_deroy ( v , db_p ) 238 ENV * v ; 239 DB_REP * db_p ; 241 `__pmgr_queue_deroy ( v ); 242 `__pmgr_t_deroy ( v , db_p ); 243 i( db_p -> mesngs ! NULL ) { 244 `__os_ ( v , db_p -> mesngs ); 245 db_p -> mesngs = NULL ; 247 } } 253 $__pmgr__thads ( v ) 254 ENV * v ; 256 DB_REP * db_p ; 257 REPMGR_CONNECTION * cn ; 258 t ; 260 db_p = v -> p_hd ; 266 `LOCK_MUTEX ( db_p -> mux ); 267 db_p -> fished = TRUE ; 268 i( db_p -> e_thad ! NULL && 269 ( t = `__pmgr_sigl (& db_p -> check_ei )) != 0) 270 uock ; 272 i(( t = `__pmgr_sigl (& db_p -> queue_nemy )) != 0) 273 uock ; 275 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 276 i( cn -> blocks > 0 && 277 (( t = `__pmgr_sigl (& cn -> ded )) != 0)) 278 uock ; 280 `UNLOCK_MUTEX ( db_p -> mux ); 282 ( `__pmgr_wake_ma_thad ( v )); 284 uock : 285 `UNLOCK_MUTEX ( db_p -> mux ); 286 ( t ); 287 } } 290 $__pmgr_awa_thads ( v ) 291 ENV * v ; 293 DB_REP * db_p ; 294 REPMGR_RUNNABLE * mesng ; 295 t , t_t , i ; 297 db_p = v -> p_hd ; 298 t = 0; 299 i( db_p -> e_thad ! NULL ) { 300 t = `__pmgr_thad_jo ( db_p -> e_thad ); 301 `__os_ ( v , db_p -> e_thad ); 302 db_p -> e_thad = NULL ; 305 i =0; i< db_p -> hads && db_p-> mesngs [i] ! NULL ; i++) { 306 mesng = db_p -> mesngs [ i ]; 307 i(( t_t = `__pmgr_thad_jo ( mesng )!0 && t == 0) 308 t = t_t ; 309 `__os_ ( v , mesng ); 310 db_p -> mesngs [ i ] = NULL ; 312 `__os_ ( v , db_p -> mesngs ); 313 db_p -> mesngs = NULL ; 315 i( db_p -> ! NULL ) { 316 i(( t_t = `__pmgr_thad_jo ( db_p -> )) != 0 && 317 t == 0) 318 t = t_t ; 319 `__os_ ( v , db_p -> ); 320 db_p -> = NULL ; 323 ( t ); 324 } } 331 $__pmgr_t_lol_se ( dbv , ho , pt , ags ) 332 DB_ENV * dbv ; 333 cڡ * ho ; 334 u_t pt ; 335 u_t32_t ags ; 337 ADDRINFO * addss_li ; 338 DB_REP * db_p ; 339 ENV * v ; 340 pmgr_Ïddr_t addr ; 341 locked , t ; 343 v = dbv ->env; 345 i( ags != 0) 346 ( `__db_ ( v , "DB_ENV->repmgr_set_local_site", 0)); 348 db_p = v -> p_hd ; 349 i( db_p -> my_addr . pt != 0) { 350 `__db_rx ( v , "Listenddresslready set"); 351 ( EINVAL ); 354 i( ho = NULL ) { 355 `__db_rx ( v , 357 ( EINVAL ); 360 i(( t = `__pmgr_gaddr ( 361 v , ho , pt , AI_PASSIVE , & addss_li )) != 0) 362 ( t ); 364 i(( t = `__pmgr_ck_Ïddr ( v , 365 ho , pt , addss_li , & addr )) != 0) { 366 `__os_addrfo ( v , addss_li ); 367 ( t ); 370 i( `REPMGR_SYNC_INITED ( db_p )) { 371 `LOCK_MUTEX ( db_p -> mux ); 372 locked = TRUE ; 374 locked = FALSE ; 376 `memy (& db_p -> my_addr , & addr , (addr)); 378 i( locked ) 379 `UNLOCK_MUTEX ( db_p -> mux ); 381 } } 393 $__pmgr_add_me_se ( dbv , ho , pt , eidp , ags ) 394 DB_ENV * dbv ; 395 cڡ * ho ; 396 u_t pt ; 397 * eidp ; 398 u_t32_t ags ; 400 DB_REP * db_p ; 401 ENV * v ; 402 REPMGR_SITE * se ; 403 eid , locked , t ; 405 v = dbv ->env; 407 i(( t = `__db_fchk ( v , 408 "DB_ENV->pmgr_add_me_se", ags , DB_REPMGR_PEER )) != 0) 409 ( t ); 411 i( ho = NULL ) { 412 `__db_rx ( v , 414 ( EINVAL ); 417 db_p = v -> p_hd ; 419 i( `REPMGR_SYNC_INITED ( db_p )) { 420 `LOCK_MUTEX ( db_p -> mux ); 421 locked = TRUE ; 423 locked = FALSE ; 425 t = `__pmgr_add_se ( v , ho , pt , & se )) { 427 EEXIST : 428 t = 0; 431 uock ; 433 eid = `EID_FROM_SITE ( se ); 435 i( `LF_ISSET ( DB_REPMGR_PEER )) 436 db_p -> = eid ; 437 i( eidp ! NULL ) 438 * eidp = eid ; 440 uock : i( locked ) 441 `UNLOCK_MUTEX ( db_p -> mux ); 442 ( t ); 443 } } @../repmgr/repmgr_msg.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 mesge_lo __P (( ENV *)); 15 oss_mesge __P (( ENV *, DBT *, DBT*, )); 16 hd_wse __P (( ENV *, cڡ DBT *)); 17 ack_mesge __P (( ENV *, u_t32_t , DB_LSN *)); 23 $__pmgr_msg_thad ( gs ) 24 * gs ; 26 ENV * v = gs ; 27 t ; 29 i(( t = `mesge_lo ( v )) != 0) { 30 `__db_r ( v , t , "messagehread failed"); 31 `__pmgr_thad_u ( v , t ); 33 ( NULL ); 34 } } 37 $mesge_lo ( v ) 38 ENV * v ; 40 REPMGR_MESSAGE * msg ; 41 t ; 43 ( t = `__pmgr_queue_g ( v , & msg )) == 0) { 44 ( t = `oss_mesge ( v , & msg -> cڌ , &msg-> c , 45 msg -> igg_eid )= DB_LOCK_DEADLOCK ) 46 `RPRINT ( v , DB_VERB_REPMGR_MISC , 47 ( v , "repmgr deadlocketry")); 49 `__os_ ( v , msg ); 50 i( t != 0) 51 ( t ); 54 ( t = DB_REP_UNAVAIL ? 0 :et); 55 } } 58 $oss_mesge ( v , cڌ , c , eid ) 59 ENV * v ; 60 DBT * cڌ , * c ; 61 eid ; 63 DB_LSN rml ; 64 DB_REP * db_p ; 65 REP * p ; 66 t ; 67 u_t32_t gi ; 69 db_p = v -> p_hd ; 75 gi = db_p ->generation; 77 t = 78 `__p_oss_mesge ( v -> dbv , cڌ , c , eid , & rml )) { 80 i( db_p -> keov_ndg ) { 81 db_p -> keov_ndg = FALSE ; 82 ( `__pmgr_become_ma ( v )); 86 DB_REP_NEWSITE : 87 ( `hd_wse ( v , c )); 89 DB_REP_HOLDELECTION : 90 `LOCK_MUTEX ( db_p -> mux ); 91 t = `__pmgr__ei ( v , ELECT_ELECTION ); 92 `UNLOCK_MUTEX ( db_p -> mux ); 93 i( t != 0) 94 ( t ); 97 DB_REP_DUPMASTER : 98 i(( t = `__pmgr_pt ( v , DB_REP_CLIENT )) != 0) 99 ( t ); 100 `LOCK_MUTEX ( db_p -> mux ); 101 t = `__pmgr__ei ( v , ELECT_ELECTION ); 102 `UNLOCK_MUTEX ( db_p -> mux ); 103 i( t != 0) 104 ( t ); 107 DB_REP_ISPERM : 111 p = db_p -> gi ; 112 i( db_p -> rm_picy = DB_REPMGR_ACKS_NONE || 113 ( `IS_PEER_POLICY ( db_p -> rm_picy ) && 114 p -> iܙy == 0)) 117 i(( t = `ack_mesge ( v , gi , & rml )) != 0) 118 ( t ); 122 DB_REP_NOTPERM : 123 DB_REP_IGNORE : 124 DB_LOCK_DEADLOCK : 128 `__db_r ( v , t , "DB_ENV->rep_process_message"); 129 ( t ); 132 } } 141 $__pmgr_hd_evt ( v , evt , fo ) 142 ENV * v ; 143 u_t32_t evt ; 144 * fo ; 146 DB_REP * db_p ; 148 db_p = v -> p_hd ; 150 i( db_p -> = NULL ) { 152 ( DB_EVENT_NOT_HANDLED ); 155 evt ) { 156 DB_EVENT_REP_ELECTED : 157 `DB_ASSERT ( v , fo = NULL ); 159 db_p -> found_ma = TRUE ; 160 db_p -> keov_ndg = TRUE ; 170 DB_EVENT_REP_NEWMASTER : 171 `DB_ASSERT ( v , fo ! NULL ); 173 db_p -> found_ma = TRUE ; 174 db_p -> ma_eid = *(*) fo ; 175 `__pmgr_ash_gi ( v ); 182 ( DB_EVENT_NOT_HANDLED ); 183 } } 189 $ack_mesge ( v , gi , l ) 190 ENV * v ; 191 u_t32_t gi ; 192 DB_LSN * l ; 194 DBT cڌ2 , c2 ; 195 DB_REP * db_p ; 196 __pmgr_ack_gs ack ; 197 u_t8_t buf [ __REPMGR_ACK_SIZE ]; 198 REPMGR_CONNECTION * cn ; 199 REPMGR_SITE * se ; 200 t ; 202 db_p = v -> p_hd ; 208 i(! `IS_VALID_EID ( db_p -> ma_eid ) || 209 db_p -> ma_eid = SELF_EID ) { 210 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 211 "drpgck wh ma %d", db_p -> ma_eid )); 215 t = 0; 216 `LOCK_MUTEX ( db_p -> mux ); 217 se = `SITE_FROM_EID ( db_p -> ma_eid ); 218 i( se -> e = SITE_CONNECTED && 219 se -> f . cn -> e = CONN_READY ) { 220 cn = se -> f .conn; 221 `DB_ASSERT ( v , cn -> vsi > 0); 222 ack . gi = generation; 223 `memy (& ack . l ,, ( DB_LSN )); 224 i( cn -> vsi == 1) { 225 cڌ2 . da = & ack ; 226 cڌ2 . size = ( ack ); 228 `__pmgr_ack_msh ( v , & ack , buf ); 229 cڌ2 . da = buf ; 230 cڌ2 . size = __REPMGR_ACK_SIZE ; 232 c2 . size = 0; 238 i(( t = `__pmgr_nd_e ( v , cn , REPMGR_ACK , 239 & cڌ2 , & c2 , FALSE )= DB_REP_UNAVAIL ) 240 t = `__pmgr_bu_ci ( v , cn ); 243 `UNLOCK_MUTEX ( db_p -> mux ); 244 ( t ); 245 } } 251 $hd_wse ( v , c ) 252 ENV * v ; 253 cڡ DBT * c ; 255 ADDRINFO * ai ; 256 DB_REP * db_p ; 257 REPMGR_SITE * se ; 258 SITE_STRING_BUFFER bufr ; 259 pmgr_Ïddr_t * addr ; 260 size_t hn ; 261 u_t16_t pt ; 262 t ; 263 * ho ; 265 db_p = v -> p_hd ; 275 i( c -> size < ( pt ) + 1) { 276 `__db_rx ( v , "unexpected cdata size, msg ignored"); 279 `memy (& pt , c -> da , (port)); 280 pt = `ohs (port); 282 ho = (*)(( u_t8_t *) c -> da + ( pt )); 283 hn = ( c -> size - ( pt )) - 1; 284 ho [ hn ] = '\0'; 287 i( `rcmp ( ho , db_p -> my_addr .host) == 0 && 288 pt = db_p -> my_addr .port) { 289 `RPRINT ( v , DB_VERB_REPMGR_MISC , 290 ( v , "repmgr ignores own NEWSITE info")); 294 `LOCK_MUTEX ( db_p -> mux ); 295 i(( t = `__pmgr_add_se ( v , ho , pt , & se )= EEXIST ) { 296 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 298 `__pmgr_fm_se_loc ( se , bufr ))); 307 addr = & se -> t_addr ; 308 i( addr -> addss_li = NULL ) { 309 i(( t = `__pmgr_gaddr ( v , 310 addr -> ho ,ddr-> pt , 0, & ai )) == 0) 311 addr -> addss_li = ai ; 312 i( t ! DB_REP_UNAVAIL ) 313 uock ; 316 t = 0; 317 i( se -> e = SITE_CONNECTED ) 318 uock ; 320 i( t != 0) 321 uock ; 322 `RPRINT ( v , DB_VERB_REPMGR_MISC , 323 ( v , "NEWSITE infodded %s", 324 `__pmgr_fm_se_loc ( se , bufr ))); 331 t = `__pmgr_wake_ma_thad ( v ); 333 uock : `UNLOCK_MUTEX ( db_p -> mux ); 334 ( t ); 335 } } 341 $__pmgr_ash_gi ( v ) 342 ENV * v ; 344 DB_REP * db_p ; 345 REP * p ; 347 db_p = v -> p_hd ; 348 p = db_p -> gi ; 350 db_p -> gi = p -> g ; 351 } } @../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_o_ci __P (( ENV *, REPMGR_CONNECTION *)); 62 __pmgr_deroy_ci __P (( ENV *, REPMGR_CONNECTION *)); 63 tup_ndg_msg 64 __P (( ndg_msg *, u_t , cڡ DBT *, const DBT *)); 65 __pmgr_nd_ 66 __P (( ENV *, REPMGR_CONNECTION *, ndg_msg *, )); 67 queue_msg 68 __P (( ENV *, REPMGR_CONNECTION *, ndg_msg *, size_t )); 69 橋n __P (( ENV *, ndg_msg *)); 70 REPMGR_SITE * __pmgr_avaab_se __P (( ENV *, )); 80 $__pmgr_nd ( dbv , cڌ , c , lp , eid , ags ) 81 DB_ENV * dbv ; 82 cڡ DBT * cڌ , * c ; 83 cڡ DB_LSN * lp ; 84 eid ; 85 u_t32_t ags ; 87 DB_REP * db_p ; 88 ENV * v ; 89 REPMGR_CONNECTION * cn ; 90 REPMGR_SITE * se ; 91 u_t avaab , ns , eded , œrs_ , nses_ ; 92 t , t_t ; 94 v = dbv ->env; 95 db_p = v -> p_hd ; 97 `LOCK_MUTEX ( db_p -> mux ); 98 i( eid = DB_EID_BROADCAST ) { 99 i(( t = `__pmgr_nd_brd ( v , REPMGR_REP_MESSAGE , 100 cڌ , c , & nses_ , & œrs_ )) != 0) 101 out ; 109 i(( ags & ( DB_REP_ANYWHERE | DB_REP_REREQUEST )) == 110 DB_REP_ANYWHERE && 111 `IS_VALID_EID ( db_p -> ) && 112 ( se = `__pmgr_avaab_se ( v , db_p -> )) != 113 NULL ) { 114 `RPRINT ( v , DB_VERB_REPMGR_MISC , 115 ( v , "sendingequestoeer")); 116 } i(( se = `__pmgr_avaab_se ( v , eid )) == 117 NULL ) { 118 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 120 t = DB_REP_UNAVAIL ; 121 out ; 124 cn = se -> f .conn; 126 i(( t = `__pmgr_nd_e ( v , cn , REPMGR_REP_MESSAGE , 127 cڌ , c , TRUE )= DB_REP_UNAVAIL && 128 ( t_t = `__pmgr_bu_ci ( v , cn )) != 0) 129 t = t_t ; 130 i( t != 0) 131 out ; 133 nses_ = 1; 134 œrs_ = se -> iܙy > 0 ? 1 : 0; 145 i( `LF_ISSET ( DB_REP_PERMANENT )) { 147 ns = `__pmgr_g_nses ( db_p ) - 1; 149 db_p -> rm_picy ) { 150 DB_REPMGR_ACKS_NONE : 151 eded = 0; 152 `COMPQUIET ( avaab , 0); 155 DB_REPMGR_ACKS_ONE : 156 eded = 1; 157 avaab = nses_ ; 160 DB_REPMGR_ACKS_ALL : 162 eded = ns ; 163 avaab = nses_ ; 166 DB_REPMGR_ACKS_ONE_PEER : 167 eded = 1; 168 avaab = œrs_ ; 171 DB_REPMGR_ACKS_ALL_PEERS : 177 eded = 1; 178 avaab = œrs_ ; 181 DB_REPMGR_ACKS_QUORUM : 189 i( ns > 1 || 190 `FLD_ISSET ( db_p -> gi -> cfig , 191 REP_C_2SITE_STRICT )) 192 eded = ns / 2; 194 eded = 1; 195 avaab = œrs_ ; 199 `COMPQUIET ( avaab , 0); 200 `COMPQUIET ( eded , 0); 201 () `__db_unknown_th ( v , "__repmgr_send"); 204 i( eded == 0) 205 out ; 206 i( avaab < eded ) { 207 t = DB_REP_UNAVAIL ; 208 out ; 211 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 212 "wawacknowdgemt:d %u", eded )); 213 t = `__pmgr_awa_ack ( v , lp ); 216 out : `UNLOCK_MUTEX ( db_p -> mux ); 217 i( t !0 && `LF_ISSET ( DB_REP_PERMANENT )) { 218 `STAT ( db_p -> gi -> m . _rm_ed ++); 219 `DB_EVENT ( v , DB_EVENT_REP_PERM_FAILED , NULL ); 221 ( t ); 222 } } 224 REPMGR_SITE * 225 $__pmgr_avaab_se ( v , eid ) 226 ENV * v ; 227 eid ; 229 DB_REP * db_p ; 230 REPMGR_SITE * se ; 232 db_p = v -> p_hd ; 233 se = `SITE_FROM_EID ( eid ); 234 i( se -> e ! SITE_CONNECTED ) 235 ( NULL ); 237 i( se -> f . cn -> e = CONN_READY ) 238 ( se ); 239 ( NULL ); 240 } } 254 $__pmgr_nd_brd ( v , ty , cڌ , c , nse , œr ) 255 ENV * v ; 256 u_t ty ; 257 cڡ DBT * cڌ , * c ; 258 u_t * nse , * œr ; 260 DB_REP * db_p ; 261 ndg_msg msg ; 262 REPMGR_CONNECTION * cn ; 263 REPMGR_SITE * se ; 264 u_t nses , œrs ; 265 t ; 267 cڡ u_t vsi_max_msg_ty [] = { 268 0, REPMGR_MAX_V1_MSG_TYPE , REPMGR_MAX_V2_MSG_TYPE 271 db_p = v -> p_hd ; 280 `__os_gtime ( v , & db_p -> ϡ_b , 1); 282 `tup_ndg_msg (& msg , ty , cڌ , c ); 283 nses = œrs = 0; 290 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 291 i( cn -> e ! CONN_READY ) 293 `DB_ASSERT ( v , `IS_VALID_EID ( cn -> eid ) && 294 cn -> vsi > 0 && 295 cn -> vsi < DB_REPMGR_VERSION ); 310 i( ty > vsi_max_msg_ty [ cn -> vsi ]) 319 i(( t = `__pmgr_nd_ ( v , 320 cn , & msg , FALSE )) == 0) { 321 se = `SITE_FROM_EID ( cn -> eid ); 322 nses ++; 323 i( se -> iܙy > 0) 324 œrs ++; 325 } i( t = DB_REP_UNAVAIL ) { 326 i(( t = `__pmgr_bu_ci ( v , cn )) != 0) 327 ( t ); 329 ( t ); 332 * nse = nses ; 333 * œr = œrs ; 335 } } 355 $__pmgr_nd_e ( v , cn , msg_ty , cڌ , c , blockab ) 356 ENV * v ; 357 REPMGR_CONNECTION * cn ; 358 u_t msg_ty ; 359 cڡ DBT * cڌ , * c ; 360 blockab ; 362 ndg_msg msg ; 364 `tup_ndg_msg (& msg , msg_ty , cڌ , c ); 365 ( `__pmgr_nd_ ( v , cn , & msg , blockab )); 366 } } 389 $__pmgr_nd_ ( v , cn , msg , blockab ) 390 ENV * v ; 391 REPMGR_CONNECTION * cn ; 392 ndg_msg * msg ; 393 blockab ; 395 DB_REP * db_p ; 396 REPMGR_IOVECS iovecs ; 397 SITE_STRING_BUFFER bufr ; 398 db_timeout_t d_to ; 399 t ; 400 size_t nw ; 401 size_t tٮ_wrn ; 403 db_p = v -> p_hd ; 405 `DB_ASSERT ( v , 406 cn -> e ! CONN_CONNECTING && cn->! CONN_DEFUNCT ); 407 i(! `STAILQ_EMPTY (& cn -> outbound_queue )) { 413 `RPRINT ( v , DB_VERB_REPMGR_MISC , 414 ( v , "msgo %so be queued", 415 `__pmgr_fm_eid_loc ( v -> p_hd , 416 cn -> eid , bufr ))); 417 i( cn -> out_queue_ngth > OUT_QUEUE_LIMIT && 418 blockab && cn -> e ! CONN_CONGESTED ) { 419 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 422 i(( d_to = db_p -> ack_timeout ) == 0) 423 d_to = DB_REPMGR_DEFAULT_ACK_TIMEOUT ; 424 `RPRINT ( v , DB_VERB_REPMGR_MISC , 425 ( v , "willwait drain")); 426 cn -> blocks ++; 427 t = `__pmgr_awa_d ( v , 428 cn , d_to * OUT_QUEUE_LIMIT ); 429 cn -> blocks --; 430 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 431 "dued %d (%d,%d)", t , 432 db_p -> fished , cn -> out_queue_ngth )); 433 i( db_p -> fished ) 434 ( DB_TIMEOUT ); 435 i( t != 0) 436 ( t ); 437 i( `STAILQ_EMPTY (& cn -> outbound_queue )) 438 emy ; 440 i( cn -> out_queue_ngth < OUT_QUEUE_LIMIT ) 441 ( `queue_msg ( v , cn , msg , 0)); 443 `RPRINT ( v , DB_VERB_REPMGR_MISC , 444 ( v , "queueimitxceeded")); 445 `STAT ( v -> p_hd -> 446 gi -> m . _msgs_drݳd ++); 447 ( blockab ? DB_TIMEOUT : 0); 450 emy : 458 `memy (& iovecs , & msg ->iovecs, (iovecs)); 459 tٮ_wrn = 0; 460 ( t = `__pmgr_wrev ( cn -> fd , & iovecs . ves [iovecs. offt ], 461 iovecs . cou -iovecs. offt , & nw )) == 0) { 462 tٮ_wrn + nw ; 463 i( `__pmgr_upde_csumed (& iovecs , nw )) 467 i( t ! WOULDBLOCK ) { 468 `__db_r ( v , t , "socket writing failure"); 469 ( DB_REP_UNAVAIL ); 472 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, "wrote only %lu byteso %s", 473 ( u_lg ) tٮ_wrn , 474 `__pmgr_fm_eid_loc ( v -> p_hd , cn -> eid , bufr ))); 480 i(( t = `queue_msg ( v , cn , msg , tٮ_wrn )) != 0) 481 ( t ); 483 `STAT ( v -> p_hd -> gi -> m . _msgs_queued ++); 492 #ifde DB_WIN32 493 i( `WSAEvtSe ( cn -> fd , cn-> evt_obje , 494 FD_READ | FD_WRITE | FD_CLOSE = SOCKET_ERROR ) { 495 t = t_o ; 496 `__db_r ( v , t , "can'tdd FD_WRITEvent bit"); 497 ( t ); 500 ( `__pmgr_wake_ma_thad ( v )); 501 } } 513 $__pmgr_is_rmt ( v , lp ) 514 ENV * v ; 515 cڡ DB_LSN * lp ; 517 DB_REP * db_p ; 518 REPMGR_SITE * se ; 519 u_t eid , nses , œrs ; 520 is_rm , has_missg_ ; 522 db_p = v -> p_hd ; 524 i( db_p -> rm_picy = DB_REPMGR_ACKS_NONE ) 525 ( TRUE ); 527 nses = œrs = 0; 528 has_missg_ = FALSE ; 529 eid = 0;id < db_p -> se_t ;id++) { 530 se = `SITE_FROM_EID ( eid ); 531 i(! `F_ISSET ( se , SITE_HAS_PRIO )) { 536 has_missg_ = TRUE ; 540 i( `log_com (& se -> max_ack , lp ) >= 0) { 541 nses ++; 542 i( se -> iܙy > 0) 543 œrs ++; 546 i( se -> iܙy > 0) 547 has_missg_ = TRUE ; 551 db_p -> rm_picy ) { 552 DB_REPMGR_ACKS_ONE : 553 is_rm = ( nses >= 1); 555 DB_REPMGR_ACKS_ONE_PEER : 556 is_rm = ( œrs >= 1); 558 DB_REPMGR_ACKS_QUORUM : 566 i( `__pmgr_g_nses ( db_p ) == 2 && 567 ! `FLD_ISSET ( db_p -> gi -> cfig , REP_C_2SITE_STRICT )) { 587 is_rm = ( œrs >= 1); 589 is_rm = ( œrs >( `__pmgr_g_nses ( db_p )-1)/2); 591 DB_REPMGR_ACKS_ALL : 593 is_rm = ( nses > `__pmgr_g_nses ( db_p ) - 1); 595 DB_REPMGR_ACKS_ALL_PEERS : 596 i( db_p -> se_t < `__pmgr_g_nses (db_rep) - 1) { 598 has_missg_ = TRUE ; 600 is_rm = ! has_missg_ ; 603 is_rm = FALSE ; 604 () `__db_unknown_th ( v , "__repmgr_is_permanent"); 606 ( is_rm ); 607 } } 622 $__pmgr_bu_ci ( v , cn ) 623 ENV * v ; 624 REPMGR_CONNECTION * cn ; 626 DB_REP * db_p ; 627 cg , t , eid ; 629 db_p = v -> p_hd ; 630 t = 0; 632 eid = cn ->eid; 633 cg = ( cn -> e = CONN_CONNECTING ); 635 `DISABLE_CONNECTION ( cn ); 643 i( `IS_VALID_EID ( eid )) { 645 i(( t = `__pmgr_schedu_ci_m ( 646 v , ( u_t ) eid , FALSE )) != 0) 647 ( t ); 654 i(! cg && eid = db_p -> ma_eid ) { 655 () `__memp_t_cfig ( 656 v -> dbv , DB_MEMP_SYNC_INTERRUPT , 1); 657 i(( t = `__pmgr__ei ( 658 v , ELECT_FAILURE_ELECTION )) != 0) 659 ( t ); 666 t = `__pmgr_wake_ma_thad ( v ); 668 ( t ); 669 } } 680 $__pmgr_nup_ci ( v , cn ) 681 ENV * v ; 682 REPMGR_CONNECTION * cn ; 684 DB_REP * db_p ; 685 t ; 687 db_p = v -> p_hd ; 689 i(( t = `__pmgr_o_ci ( v , cn )) != 0) 690 out ; 697 i( cn -> blocks > 0) { 698 t = `__pmgr_sigl (& cn -> ded ); 699 out ; 702 `TAILQ_REMOVE (& db_p -> cis , cn , s ); 704 t = `__pmgr_deroy_ci ( v , cn ); 706 out : 707 ( t ); 708 } } 711 $__pmgr_o_ci ( v , cn ) 712 ENV * v ; 713 REPMGR_CONNECTION * cn ; 715 t ; 717 `DB_ASSERT ( v , 718 cn -> e = CONN_DEFUNCT || v -> p_hd -> fished ); 720 t = 0; 721 i( cn -> fd ! INVALID_SOCKET ) { 722 t = `osock ( cn -> fd ); 723 cn -> fd = INVALID_SOCKET ; 724 i( t = SOCKET_ERROR ) { 725 t = t_o ; 726 `__db_r ( v , t , "closing socket"); 728 #ifde DB_WIN32 729 i(! `WSACloEvt ( cn -> evt_obje && t == 0) 730 t = t_o ; 733 ( t ); 734 } } 737 $__pmgr_deroy_ci ( v , cn ) 738 ENV * v ; 739 REPMGR_CONNECTION * cn ; 741 QUEUED_OUTPUT * out ; 742 REPMGR_FLAT * msg ; 743 DBT * dbt ; 744 t ; 749 i( cn -> adg_pha = DATA_PHASE ) { 750 i( cn -> msg_ty = REPMGR_REP_MESSAGE ) 751 `__os_ ( v , cn -> put . p_mesge ); 753 dbt = & cn -> put . pmgr_msg . l ; 754 i( dbt -> size > 0) 755 `__os_ ( v , dbt -> da ); 756 dbt = & cn -> put . pmgr_msg . c ; 757 i( dbt -> size > 0) 758 `__os_ ( v , dbt -> da ); 761 ! `STAILQ_EMPTY (& cn -> outbound_queue )) { 762 out = `STAILQ_FIRST (& cn -> outbound_queue ); 763 `STAILQ_REMOVE_HEAD (& cn -> outbound_queue , s ); 764 msg = out ->msg; 765 i(-- msg -> f_cou <= 0) 766 `__os_ ( v , msg ); 767 `__os_ ( v , out ); 770 t = `__pmgr__cd (& cn -> ded ); 771 `__os_ ( v , cn ); 772 ( t ); 773 } } 776 $queue_msg ( v , cn , msg , offt ) 777 ENV * v ; 778 REPMGR_CONNECTION * cn ; 779 ndg_msg * msg ; 780 size_t offt ; 782 QUEUED_OUTPUT * q_emt ; 783 t ; 785 i( msg -> fmsg = NULL && (( t = `橋n ( v , msg)) != 0)) 786 ( t ); 787 i(( t = `__os_mloc ( v , ( QUEUED_OUTPUT ), & q_emt )) != 0) 788 ( t ); 789 q_emt -> msg = msg-> fmsg ; 790 msg -> fmsg -> f_cou ++; 791 q_emt -> offt = offset; 794 `STAILQ_INSERT_TAIL (& cn -> outbound_queue , q_emt , s ); 795 cn -> out_queue_ngth ++; 797 } } 804 $tup_ndg_msg ( msg , ty , cڌ , c ) 805 ndg_msg * msg ; 806 u_t ty ; 807 cڡ DBT * cڌ , * c ; 809 u_t32_t cڌ_size , c_size ; 815 `__pmgr_iovec_ (& msg -> iovecs ); 816 msg -> ty =ype; 817 `__pmgr_add_bufr (& msg -> iovecs , &msg-> ty , (msg->type)); 819 cڌ_size = cڌ = NULL ? 0 : cڌ-> size ; 820 msg -> cڌ_size_buf = `htl ( cڌ_size ); 821 `__pmgr_add_bufr (& msg -> iovecs , 822 & msg -> cڌ_size_buf , (msg->control_size_buf)); 824 c_size = c = NULL ? 0 :ec-> size ; 825 msg -> c_size_buf = `htl ( c_size ); 826 `__pmgr_add_bufr ( 827 & msg -> iovecs , &msg-> c_size_buf , (msg->rec_size_buf)); 829 i( cڌ -> size > 0) 830 `__pmgr_add_dbt (& msg -> iovecs , cڌ ); 832 i( c_size > 0) 833 `__pmgr_add_dbt (& msg -> iovecs , c ); 835 msg -> fmsg = NULL ; 836 } } 844 $橋n ( v , msg ) 845 ENV * v ; 846 ndg_msg * msg ; 848 u_t8_t * p ; 849 size_t msg_size ; 850 i , t ; 852 `DB_ASSERT ( v , msg -> fmsg = NULL ); 854 msg_size = msg -> iovecs . tٮ_bys ; 855 i(( t = `__os_mloc ( v , (* msg -> fmsg + msg_size , 856 & msg -> fmsg )) != 0) 857 ( t ); 858 msg -> fmsg -> ngth = msg_size ; 859 msg -> fmsg -> f_cou = 0; 860 p = & msg -> fmsg -> da [0]; 862 i = 0; i < msg -> iovecs . cou ; i++) { 863 `memy ( p , msg -> iovecs . ves [ i ]. iov_ba , 864 msg -> iovecs . ves [ i ]. iov_n ); 865 p = &p[ msg -> iovecs . ves [ i ]. iov_n ]; 867 `__pmgr_iovec_ (& msg -> iovecs ); 868 `__pmgr_add_bufr (& msg -> iovecs , &msg-> fmsg -> da [0], msg_size ); 870 } } 876 $__pmgr_fd_se ( v , ho , pt ) 877 ENV * v ; 878 cڡ * ho ; 879 u_t pt ; 881 DB_REP * db_p ; 882 REPMGR_SITE * se ; 883 u_t i ; 885 db_p = v -> p_hd ; 886 i = 0; i < db_p -> se_t ; i++) { 887 se = & db_p -> ses [ i ]; 889 i( `rcmp ( se -> t_addr . ho , host) == 0 && 890 se -> t_addr . pt ==ort) 891 (() i ); 895 } } 909 $__pmgr_ck_Ïddr ( v , ho , pt , li , addr ) 910 ENV * v ; 911 cڡ * ho ; 912 u_t pt ; 913 ADDRINFO * li ; 914 pmgr_Ïddr_t * addr ; 916 t ; 918 `DB_ASSERT ( v , ho ! NULL ); 920 i(( t = `__os_rdup ( v , ho , & addr ->host)) != 0) 921 ( t ); 922 addr -> pt = ( u_t16_t )port; 923 addr -> addss_li = li ; 924 addr -> cut = NULL ; 926 } } 933 $__pmgr_gaddr ( v , ho , pt , ags , su ) 934 ENV * v ; 935 cڡ * ho ; 936 u_t pt ; 937 ags ; 938 ADDRINFO ** su ; 940 ADDRINFO * sw , hts ; 941 bufr [10]; 942 #ifde DB_WIN32 943 t ; 950 i( pt > UINT16_MAX ) { 951 `__db_rx ( v , "port %uargerhan maxort %u", 952 pt , UINT16_MAX ); 953 ( EINVAL ); 956 #ifde DB_WIN32 957 i(! v -> p_hd -> w_ed && 958 ( t = `__pmgr_w_ ( v )) != 0) 959 ( t ); 962 `memt (& hts , 0, (hints)); 963 hts . ai_my = AF_UNSPEC ; 964 hts . ai_sockty = SOCK_STREAM ; 965 hts . ai_ags = ags ; 966 () `tf ( bufr , (bufr), "%u", pt ); 975 i( `__os_gaddrfo ( v , ho , pt , bufr , & hts , & sw ) != 0) 976 ( DB_REP_UNAVAIL ); 977 * su = sw ; 980 } } 995 $__pmgr_add_se ( v , ho , pt , ws ) 996 ENV * v ; 997 cڡ * ho ; 998 u_t pt ; 999 REPMGR_SITE ** ws ; 1001 ADDRINFO * addss_li ; 1002 DB_REP * db_p ; 1003 pmgr_Ïddr_t addr ; 1004 REPMGR_SITE * se ; 1005 t , eid ; 1007 t = 0; 1008 db_p = v -> p_hd ; 1010 i( `IS_VALID_EID ( eid = `__pmgr_fd_se ( v , ho , pt ))) { 1011 se = `SITE_FROM_EID ( eid ); 1012 t = EEXIST ; 1013 out ; 1016 i(( t = `__pmgr_gaddr ( 1017 v , ho , pt , 0, & addss_li )= DB_REP_UNAVAIL ) { 1019 addss_li = NULL ; 1020 } i( t != 0) 1021 ( t ); 1023 i(( t = `__pmgr_ck_Ïddr ( 1024 v , ho , pt , addss_li , & addr )) != 0) { 1025 `__os_addrfo ( v , addss_li ); 1026 ( t ); 1029 i(( t = `__pmgr_w_se ( v , & se , & addr , SITE_IDLE )) != 0) { 1030 `__pmgr_nup_Ïddr ( v , & addr ); 1031 ( t ); 1034 i( db_p -> ! NULL && 1035 ( t = `__pmgr_schedu_ci_m ( 1036 v , ( u_t ) `EID_FROM_SITE ( se ), TRUE )) != 0) 1037 ( t ); 1040 out : 1041 i( ws ! NULL ) 1042 * ws = se ; 1043 ( t ); 1044 } } 1052 $__pmgr_t_ ( db_p ) 1053 DB_REP * db_p ; 1055 db_p -> li_fd = INVALID_SOCKET ; 1056 db_p -> ma_eid = DB_EID_INVALID ; 1058 `TAILQ_INIT (& db_p -> cis ); 1059 `TAILQ_INIT (& db_p -> s ); 1062 } } 1073 $__pmgr_li ( v ) 1074 ENV * v ; 1076 ADDRINFO * ai ; 1077 DB_REP * db_p ; 1078 * why ; 1079 sockt , t ; 1080 sock_t s ; 1082 db_p = v -> p_hd ; 1085 s = INVALID_SOCKET ; 1086 ai = `ADDR_LIST_FIRST (& db_p -> my_addr ); 1093 `COMPQUIET ( why , ""); 1094 `DB_ASSERT ( v , ai ! NULL ); 1095 ; ai ! NULL ; `ADDR_LIST_NEXT (& db_p -> my_addr )) { 1097 i(( s = `sock ( ai -> ai_my , 1098 ai -> ai_sockty ,i-> ai_oc )= INVALID_SOCKET ) { 1099 why = "can't createisten socket"; 1108 sockt = 1; 1109 i( `tsockt ( s , SOL_SOCKET , SO_REUSEADDR , ( sockt_t )& sockt , 1110 ( sockt )) != 0) { 1111 why = "can't set REUSEADDR socket option"; 1115 i( `bd ( s , ai -> ai_addr , ( sockn_t i-> ai_add ) != 0) { 1116 why = "can't bind socketoisteningddress"; 1117 () `osock ( s ); 1118 s = INVALID_SOCKET ; 1122 i( `li ( s , 5) != 0) { 1123 why = "listen()"; 1127 i(( t = `__pmgr_t_nblockg ( s )) != 0) { 1128 `__db_r ( v , t , "can't unblockisten socket"); 1129 n ; 1132 db_p -> li_fd = s ; 1136 t = t_o ; 1137 `__db_r ( v , t , why ); 1138 n : i( s ! INVALID_SOCKET ) 1139 () `osock ( s ); 1140 ( t ); 1141 } } 1147 $__pmgr_t_o ( v ) 1148 ENV * v ; 1150 DB_REP * db_p ; 1151 REPMGR_CONNECTION * cn ; 1152 #ide DB_WIN32 1153 sigai siga ; 1155 t , t_t ; 1157 db_p = v -> p_hd ; 1158 i( db_p -> li_fd = INVALID_SOCKET ) 1161 t = 0; 1162 ! `TAILQ_EMPTY (& db_p -> cis )) { 1163 cn = `TAILQ_FIRST (& db_p -> cis ); 1164 i(( t_t = `__pmgr_o_ci ( v , cn )) != 0 && 1165 t == 0) 1166 t = t_t ; 1167 `TAILQ_REMOVE (& db_p -> cis , cn , s ); 1168 i(( t_t = `__pmgr_deroy_ci ( v , cn )) != 0 && 1169 t == 0) 1170 t = t_t ; 1173 i( `osock ( db_p -> li_fd = SOCKET_ERROR && t == 0) 1174 t = t_o ; 1176 #ifde DB_WIN32 1178 i( `WSAC˪up (= SOCKET_ERROR && t == 0) 1179 t = t_o ; 1180 db_p -> w_ed = FALSE ; 1183 i( db_p -> chg_sig_hdr ) { 1184 `memt (& siga , 0, (sigact)); 1185 siga . _hdr = SIG_DFL ; 1186 i( `sigai ( SIGPIPE , & siga , NULL =-1 && t == 0) 1187 t = o ; 1190 db_p -> li_fd = INVALID_SOCKET ; 1191 ( t ); 1192 } } 1198 $__pmgr_t_deroy ( v , db_p ) 1199 ENV * v ; 1200 DB_REP * db_p ; 1202 REPMGR_CONNECTION * cn ; 1203 REPMGR_RETRY * y ; 1204 REPMGR_SITE * se ; 1205 u_t i ; 1207 `__pmgr_nup_Ïddr ( v , & db_p -> my_addr ); 1209 i( db_p -> ses = NULL ) 1212 ! `TAILQ_EMPTY (& db_p -> s )) { 1213 y = `TAILQ_FIRST (& db_p -> s ); 1214 `TAILQ_REMOVE (& db_p -> s , y , s ); 1215 `__os_ ( v , y ); 1218 ! `TAILQ_EMPTY (& db_p -> cis )) { 1219 cn = `TAILQ_FIRST (& db_p -> cis ); 1220 () `__pmgr_deroy_ci ( v , cn ); 1223 i = 0; i < db_p -> se_t ; i++) { 1224 se = & db_p -> ses [ i ]; 1225 `__pmgr_nup_Ïddr ( v , & se -> t_addr ); 1227 `__os_ ( v , db_p -> ses ); 1228 db_p -> ses = NULL ; 1229 } } @../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 __pmgr_cn_wk __P (( ENV *, 25 REPMGR_CONNECTION *, fd_t *, fd_set *, )); 26 fish_cg __P (( ENV *, REPMGR_CONNECTION *)); 35 $__pmgr_thad_t ( v , ruab ) 36 ENV * v ; 37 REPMGR_RUNNABLE * ruab ; 39 had__t * p ; 40 #ifde _POSIX_THREAD_ATTR_STACKSIZE 41 had__t ibus ; 42 size_t size ; 43 t ; 46 ruab -> fished = FALSE ; 48 #ifde _POSIX_THREAD_ATTR_STACKSIZE 49 p = & ibus ; 50 i(( t = `had__ (& ibus )) != 0) { 51 `__db_r ( v , 52 t , "pthread_attr_init inepmgr_thread_start"); 53 ( t ); 60 size = __pmgr_guesimed_max ; 61 i(( size_t ) > 4) 62 size *= 2; 63 #ifde PTHREAD_STACK_MIN 64 i( size < PTHREAD_STACK_MIN ) 65 size = PTHREAD_STACK_MIN ; 67 i(( t = `had__tacksize (& ibus , size )) != 0) { 68 `__db_r ( v , 69 t , "pthread_attr_setstacksize inepmgr_thread_start"); 70 ( t ); 73 p = NULL ; 76 ( `had_ (& ruab -> thad_id , p , 77 ruab -> run , v )); 78 } } 84 $__pmgr_thad_jo ( thad ) 85 REPMGR_RUNNABLE * thad ; 87 ( `had_jo ( thad -> thad_id , NULL )); 88 } } 94 $__pmgr_t_nblockg ( fd ) 95 sock_t fd ; 97 ags ; 99 i(( ags = `f ( fd , F_GETFL , 0)) < 0) 100 ( o ); 101 i( `f ( fd , F_SETFL , ags | O_NONBLOCK ) < 0) 102 ( o ); 104 } } 116 $__pmgr_wake_wag_nds ( v ) 117 ENV * v ; 119 ( `had_cd_brd (& v -> p_hd -> ack_cdi )); 120 } } 132 $__pmgr_awa_ack ( v , lp ) 133 ENV * v ; 134 cڡ DB_LSN * lp ; 136 DB_REP * db_p ; 137 timeec ddle ; 138 t , timed ; 140 db_p = v -> p_hd ; 142 i(( timed = ( db_p -> ack_timeout > 0))) 143 `__pmgr_compu_wa_ddle ( v , & ddle , 144 db_p -> ack_timeout ); 146 `COMPQUIET ( ddle . tv_c , 0); 148 ! `__pmgr_is_rmt ( v , lp )) { 149 i( timed ) 150 t = `had_cd_timedwa (& db_p -> ack_cdi , 151 & db_p -> mux , & ddle ); 153 t = `had_cd_wa (& db_p -> ack_cdi , 154 & db_p -> mux ); 155 i( db_p -> fished ) 156 ( DB_REP_UNAVAIL ); 157 i( t != 0) 158 ( t ); 161 } } 171 $__pmgr_compu_wa_ddle ( v , su , wa ) 172 ENV * v ; 173 timeec * su ; 174 db_timeout_t wa ; 193 `__os_gtime ( v , ( db_timeec *) su , 0); 194 `TIMESPEC_ADD_DB_TIMEOUT ( su , wa ); 195 } } 217 $__pmgr_awa_d ( v , cn , timeout ) 218 ENV * v ; 219 REPMGR_CONNECTION * cn ; 220 db_timeout_t timeout ; 222 DB_REP * db_p ; 223 timeec ddle ; 224 t ; 226 db_p = v -> p_hd ; 228 `__pmgr_compu_wa_ddle ( v , & ddle , timeout ); 230 t = 0; 231 cn -> out_queue_ngth > OUT_QUEUE_LIMIT ) { 232 t = `had_cd_timedwa (& cn -> ded , 233 & db_p -> mux , & ddle ); 234 t ) { 236 i( db_p -> fished ) 237 out ; 242 i( cn -> e = CONN_DEFUNCT ) { 243 t = DB_REP_UNAVAIL ; 244 out ; 247 ETIMEDOUT : 248 cn -> e = CONN_CONGESTED ; 249 t = 0; 250 out ; 252 out ; 257 out : 258 ( t ); 259 } } 267 $__pmgr_loc_cd ( c ) 268 cd_v_t * c ; 270 ( `had_cd_ ( c , NULL )); 271 } } 279 $__pmgr__cd ( c ) 280 cd_v_t * c ; 282 ( `had_cd_deroy ( c )); 283 } } 295 $__pmgr__sync ( v , db_p ) 296 ENV * v ; 297 DB_REP * db_p ; 299 t , mux_ed , ack_ed , e_ed , queue_ed , 300 fe_desc [2]; 302 `COMPQUIET ( v , NULL ); 304 mux_ed = ack_ed = e_ed = queue_ed = FALSE ; 306 i(( t = `had_mux_ (& db_p -> mux , NULL )) != 0) 307 r ; 308 mux_ed = TRUE ; 310 i(( t = `had_cd_ (& db_p -> ack_cdi , NULL )) != 0) 311 r ; 312 ack_ed = TRUE ; 314 i(( t = `had_cd_ (& db_p -> check_ei , NULL )) != 0) 315 r ; 316 e_ed = TRUE ; 318 i(( t = `had_cd_ (& db_p -> queue_nemy , NULL )) != 0) 319 r ; 320 queue_ed = TRUE ; 322 i(( t = `pe ( fe_desc )) == -1) { 323 t = o ; 324 r ; 327 db_p -> ad_pe = fe_desc [0]; 328 db_p -> wre_pe = fe_desc [1]; 330 r : 331 i( queue_ed ) 332 () `had_cd_deroy (& db_p -> queue_nemy ); 333 i( e_ed ) 334 () `had_cd_deroy (& db_p -> check_ei ); 335 i( ack_ed ) 336 () `had_cd_deroy (& db_p -> ack_cdi ); 337 i( mux_ed ) 338 () `had_mux_deroy (& db_p -> mux ); 339 db_p -> ad_pe = db_p-> wre_pe = -1; 341 ( t ); 342 } } 351 $__pmgr_o_sync ( v ) 352 ENV * v ; 354 DB_REP * db_p ; 355 t , t_t ; 357 db_p = v -> p_hd ; 359 i(!( `REPMGR_SYNC_INITED ( db_p ))) 362 t = `had_cd_deroy (& db_p -> queue_nemy ); 364 i(( t_t = `had_cd_deroy (& db_p -> check_ei )) != 0 && 365 t == 0) 366 t = t_t ; 368 i(( t_t = `had_cd_deroy (& db_p -> ack_cdi )) != 0 && 369 t == 0) 370 t = t_t ; 372 i(( t_t = `had_mux_deroy (& db_p -> mux )) != 0 && 373 t == 0) 374 t = t_t ; 376 i( `o ( db_p -> ad_pe =-1 && t == 0) 377 t = o ; 378 i( `o ( db_p -> wre_pe =-1 && t == 0) 379 t = o ; 381 db_p -> ad_pe = db_p-> wre_pe = -1; 382 ( t ); 383 } } 393 $__pmgr_t_ ( v , db_p ) 394 ENV * v ; 395 DB_REP * db_p ; 397 t ; 398 sigai siga ; 400 i(( t = `__pmgr_li ( v )) != 0) 401 ( t ); 407 i( `sigai ( SIGPIPE , NULL , & siga ) == -1) { 408 t = o ; 409 `__db_r ( v , t , "can'tccess signal handler"); 410 r ; 416 i(( db_p -> chg_sig_hdr = ( siga . _hdr = SIG_DFL ))) { 417 siga . _hdr = SIG_IGN ; 418 siga . _ags = 0; 419 i( `sigai ( SIGPIPE , & siga , NULL ) == -1) { 420 t = o ; 421 `__db_r ( v , t , "can'tccess signal handler"); 422 r ; 427 r : 428 () `osock ( db_p -> li_fd ); 429 db_p -> li_fd = INVALID_SOCKET ; 430 ( t ); 431 } } 437 $__pmgr_lock_mux ( mux ) 438 mgr_mux_t * mux ; 440 ( `had_mux_lock ( mux )); 441 } } 447 $__pmgr_uock_mux ( mux ) 448 mgr_mux_t * mux ; 450 ( `had_mux_uock ( mux )); 451 } } 462 $__pmgr_sigl ( v ) 463 cd_v_t * v ; 465 ( `had_cd_brd ( v )); 466 } } 472 $__pmgr_wake_ma_thad ( v ) 473 ENV * v ; 475 DB_REP * db_p ; 476 u_t8_t y_vue ; 478 `COMPQUIET ( y_vue , 0); 479 db_p = v -> p_hd ; 486 i( `wre ( db_p -> wre_pe , & y_vue , 1) == -1) 487 ( o ); 489 } } 495 $__pmgr_wrev ( fd , iovec , buf_cou , by_cou_p ) 496 sock_t fd ; 497 db_iovec_t * iovec ; 498 buf_cou ; 499 size_t * by_cou_p ; 501 nw ; 503 i(( nw = `wrev ( fd , iovec , buf_cou )) == -1) 504 ( o ); 505 * by_cou_p = ( size_t ) nw ; 507 } } 513 $__pmgr_adv ( fd , iovec , buf_cou , by_cou_p ) 514 sock_t fd ; 515 db_iovec_t * iovec ; 516 buf_cou ; 517 size_t * by_cou_p ; 519 ssize_t nw ; 521 i(( nw = `adv ( fd , iovec , buf_cou )) == -1) 522 ( o ); 523 * by_cou_p = ( size_t ) nw ; 525 } } 531 $__pmgr__lo ( v ) 532 ENV * v ; 534 timev _timeout , * _timeout_p ; 535 DB_REP * db_p ; 536 REPMGR_CONNECTION * cn , * xt ; 537 db_timeec timeout ; 538 fd_t ads , wres ; 539 t , ow_cڌ , maxfd ; 540 u_t8_t buf [10]; 542 ow_cڌ = FALSE ; 544 db_p = v -> p_hd ; 550 `LOCK_MUTEX ( db_p -> mux ); 551 i(( t = `__pmgr_f_y_cis ( v )) != 0) 552 out ; 554 `FD_ZERO (& ads ); 555 `FD_ZERO (& wres ); 561 `FD_SET (( u_t ) db_p -> li_fd , & ads ); 562 maxfd = db_p -> li_fd ; 564 `FD_SET (( u_t ) db_p -> ad_pe , & ads ); 565 i( db_p -> ad_pe > maxfd ) 566 maxfd = db_p -> ad_pe ; 577 cn = `TAILQ_FIRST (& db_p -> cis ); 578 cn ! NULL ; 579 cn = xt ) { 580 xt = `TAILQ_NEXT ( cn , s ); 582 i( cn -> e = CONN_DEFUNCT ) { 583 i(( t = `__pmgr_nup_ci ( v , 584 cn )) != 0) 585 out ; 589 i( cn -> e = CONN_CONNECTING ) { 590 `FD_SET (( u_t ) cn -> fd , & ads ); 591 `FD_SET (( u_t ) cn -> fd , & wres ); 592 i( cn -> fd > maxfd ) 593 maxfd = cn -> fd ; 597 i(! `STAILQ_EMPTY (& cn -> outbound_queue )) { 598 `FD_SET (( u_t ) cn -> fd , & wres ); 599 i( cn -> fd > maxfd ) 600 maxfd = cn -> fd ; 606 i(! ow_cڌ || ! `IS_VALID_EID ( cn -> eid )) { 607 `FD_SET (( u_t ) cn -> fd , & ads ); 608 i( cn -> fd > maxfd ) 609 maxfd = cn -> fd ; 613 i( `__pmgr_compu_timeout ( v , & timeout )) { 615 _timeout . tv_c = timeout .tv_sec; 616 _timeout . tv_uc = timeout . tv_nc / NS_PER_US ; 617 _timeout_p = & _timeout ; 620 _timeout_p = NULL ; 623 `UNLOCK_MUTEX ( db_p -> mux ); 625 i(( t = ` ( maxfd + 1, 626 & ads , & wres , NULL , _timeout_p )) == -1) { 627 t = o ) { 628 EINTR : 629 EWOULDBLOCK : 630 `LOCK_MUTEX ( db_p -> mux ); 633 `__db_r ( v , t , "select"); 634 ( t ); 637 `LOCK_MUTEX ( db_p -> mux ); 643 i(( t = `__pmgr_check_timeouts ( v )) != 0) 644 out ; 651 `TAILQ_FOREACH ( cn , & db_p -> cis , s ) { 652 i( cn -> e = CONN_DEFUNCT ) 655 i(( t = `__pmgr_cn_wk ( v , 656 cn , & ads , & wres , ow_cڌ )) != 0) 657 out ; 665 i( `FD_ISSET (( u_t ) db_p -> ad_pe , & ads )) { 666 i( `ad ( db_p -> ad_pe , buf , (buf)) <= 0) { 667 t = o ; 668 out ; 669 } i( db_p -> fished ) { 670 t = 0; 671 out ; 677 i( `FD_ISSET (( u_t ) db_p -> li_fd , & ads ) && 678 ( t = `__pmgr_ac ( v )) != 0) 679 out ; 681 out : 682 `UNLOCK_MUTEX ( db_p -> mux ); 683 ( t ); 684 } } 687 $__pmgr_cn_wk ( v , cn , ads , wres , ow_cڌ ) 688 ENV * v ; 689 REPMGR_CONNECTION * cn ; 690 fd_t * ads , * wres ; 691 ow_cڌ ; 693 t ; 694 u_t fd ; 696 t = 0; 697 fd = ( u_t ) cn ->fd; 699 i( cn -> e = CONN_CONNECTING ) { 700 i( `FD_ISSET ( fd , ads || FD_ISSET(fd, wres )) 701 t = `fish_cg ( v , cn ); 706 i( `FD_ISSET ( fd , wres )) 707 t = `__pmgr_wre_some ( v , cn ); 709 i( t =0 && ! ow_cڌ && `FD_ISSET ( fd , ads )) 710 t = `__pmgr_ad_om_se ( v , cn ); 713 i( t = DB_REP_UNAVAIL ) 714 t = `__pmgr_bu_ci ( v , cn ); 715 ( t ); 716 } } 719 $fish_cg ( v , cn ) 720 ENV * v ; 721 REPMGR_CONNECTION * cn ; 723 DB_REP * db_p ; 724 REPMGR_SITE * se ; 725 sockn_t n ; 726 SITE_STRING_BUFFER bufr ; 727 u_t eid ; 728 r , t ; 730 n = ( r ); 731 i( `gsockt ( 732 cn -> fd , SOL_SOCKET , SO_ERROR , ( sockt_t )& r , & n ) < 0) 733 r_t ; 734 i( r ) { 735 o = r ; 736 r_t ; 739 cn -> e = CONN_CONNECTED ; 740 ( `__pmgr_o_vsi ( v , cn )); 742 r_t : 743 db_p = v -> p_hd ; 745 `DB_ASSERT ( v , `IS_VALID_EID ( cn -> eid )); 746 eid = ( u_t ) cn ->eid; 748 se = `SITE_FROM_EID ( eid ); 749 `__db_r ( v , o , 750 "cg%s", `__pmgr_fm_se_loc ( se , bufr )); 753 i( `ADDR_LIST_NEXT (& se -> t_addr = NULL ) { 754 `STAT ( db_p -> gi -> m . _c_ ++); 755 ( DB_REP_UNAVAIL ); 762 `DISABLE_CONNECTION ( cn ); 764 t = `__pmgr_c_se ( v , eid ); 765 `DB_ASSERT ( v , t ! DB_REP_UNAVAIL ); 766 ( t ); 767 } } @../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_ ( v , db_p ) 25 ENV * v ; 26 DB_REP * db_p ; 28 REPMGR_QUEUE * q ; 29 t ; 31 i(( t = `__os_oc ( v , 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 ( v ) 47 ENV * v ; 49 REPMGR_MESSAGE * m ; 50 REPMGR_QUEUE * q ; 52 i(( q = v -> 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_ ( v , m ); 60 `__os_ ( v , q ); 61 } } 75 $__pmgr_queue_g ( v , msgp ) 76 ENV * v ; 77 REPMGR_MESSAGE ** msgp ; 79 DB_REP * db_p ; 80 REPMGR_MESSAGE * m ; 81 REPMGR_QUEUE * q ; 82 t ; 84 t = 0; 85 db_p = v -> 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 ( v , msg ) 129 ENV * v ; 130 REPMGR_MESSAGE * msg ; 132 DB_REP * db_p ; 133 REPMGR_QUEUE * q ; 135 db_p = v -> 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 ( v ) 152 ENV * v ; 154 ( v -> p_hd -> put_queue -> size ); 155 } } @../repmgr/repmgr_sel.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 14 (* tHEARTBEAT_ACTION t__P (( tENV *)); 16 ac_hdshake `__P (( ENV *, REPMGR_CONNECTION *, *)); 17 ac_v1_hdshake `__P (( ENV *, REPMGR_CONNECTION *, *)); 18 __pmgr__ei `__P (( ENV *)); 19 __pmgr_c `__P (( ENV *, sock_t *, REPMGR_SITE *)); 20 dich_msg `__P (( ENV *, REPMGR_CONNECTION *)); 21 fd_vsi_fo `__P (( ENV *, REPMGR_CONNECTION *, DBT *)); 22 __pmgr_xt_timeout `__P (( ENV *, 23 db_timeec *, HEARTBEAT_ACTION *)); 24 dich_pha_comi `__P (( ENV *, REPMGR_CONNECTION *)); 25 REPMGR_CONNECTION * __pmgr_ma_ci `__P (( ENV *)); 26 oss_ms `__P (( ENV *, 27 REPMGR_CONNECTION *, *, u_t , u_t32_t )); 28 ad_vsi_ڣ `__P (( ENV *, REPMGR_CONNECTION *)); 29 cd_ack `__P (( ENV *, REPMGR_CONNECTION *)); 30 __pmgr_y_cis `__P (( ENV *)); 31 nd_hdshake `__P (( ENV *, REPMGR_CONNECTION *, *, size_t )); 32 __pmgr_nd_hbt `__P (( ENV *)); 33 nd_v1_hdshake `__P (( ENV *, 34 REPMGR_CONNECTION *, *, size_t )); 35 nd_vsi_ڣ `__P (( ENV *, REPMGR_CONNECTION *)); 36 __pmgr_y_e `__P (( ENV *, u_t )); 38 #ONLY_HANDSHAKE ( v , cn ) do { \ 39 i( cn -> msg_ty ! REPMGR_HANDSHAKE ) { \ 40 `__db_rx ( v , "unexpected msgype %d in state %d", \ 41 () cn -> msg_ty , cn-> e ); \ 42 ( DB_REP_UNAVAIL ); \ 44 } } 0) ) 50 $__pmgr__thad ( gs ) 51 * gs ; 53 ENV * v = gs ; 54 t ; 56 i(( t = `__pmgr__lo ( v )) != 0) { 57 `__db_r ( v , t , "selectoop failed"); 58 `__pmgr_thad_u ( v , t ); 60 ( NULL ); 61 } } 67 $__pmgr_ac ( v ) 68 ENV * v ; 70 DB_REP * db_p ; 71 REPMGR_CONNECTION * cn ; 72 sockaddr_ sddr ; 73 sockn_t add ; 74 sock_t s ; 75 t ; 76 #ifde DB_WIN32 77 WSAEVENT evt_obj ; 80 db_p = v -> p_hd ; 81 add = ( sddr ); 82 i(( s = `ac ( db_p -> li_fd , ( sockaddr *)& sddr , 83 & add )) == -1) { 90 t = t_o ) { 91 #ifde DB_WIN32 92 WSAECONNRESET : 93 WSAEWOULDBLOCK : 95 EINTR : 96 EWOULDBLOCK : 97 ECONNABORTED : 98 ENETDOWN : 99 #ifde EPROTO 100 EPROTO : 102 ENOPROTOOPT : 103 EHOSTDOWN : 104 #ifde ENONET 105 ENONET : 107 EHOSTUNREACH : 108 EOPNOTSUPP : 109 ENETUNREACH : 111 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 112 "ac %d csided iocuous", t )); 115 `__db_r ( v , t , "acceptrror"); 116 ( t ); 119 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, "acceptedew connection")); 121 i(( t = `__pmgr_t_nblockg ( s )) != 0) { 122 `__db_r ( v , t , "can't setonblockfterccept"); 123 () `osock ( s ); 124 ( t ); 127 #ifde DB_WIN32 128 i(( evt_obj = `WSACeEvt ()= WSA_INVALID_EVENT ) { 129 t = t_o ; 130 `__db_r ( v , t , "can't create WSAvent"); 131 () `osock ( s ); 132 ( t ); 134 i( `WSAEvtSe ( s , evt_obj , FD_READ | FD_CLOSE = SOCKET_ERROR ) { 135 t = t_o ; 136 `__db_r ( v , t , "can't set desiredvent bits"); 137 () `WSACloEvt ( evt_obj ); 138 () `osock ( s ); 139 ( t ); 142 i(( t = 143 `__pmgr_w_ci ( v , & cn , s , CONN_NEGOTIATE )) != 0) { 144 #ifde DB_WIN32 145 () `WSACloEvt ( evt_obj ); 147 () `osock ( s ); 148 ( t ); 150 `F_SET ( cn , CONN_INCOMING ); 151 cn -> eid = -1; 152 #ifde DB_WIN32 153 cn -> evt_obje = evt_obj ; 156 } } 168 $__pmgr_compu_timeout ( v , timeout ) 169 ENV * v ; 170 db_timeec * timeout ; 172 DB_REP * db_p ; 173 REPMGR_RETRY * y ; 174 db_timeec now , t ; 175 have_timeout ; 177 db_p = v -> p_hd ; 183 have_timeout = `__pmgr_xt_timeout ( v , & t , NULL ); 186 i(! `TAILQ_EMPTY (& db_p -> s )) { 187 y = `TAILQ_FIRST (& db_p -> s ); 188 i( have_timeout ) { 190 t = `timeeccmp (& y -> time , &t, <) ?etry->time :; 192 t = y -> time ; 193 have_timeout = TRUE ; 197 i( have_timeout ) { 198 `__os_gtime ( v , & now , 1); 199 i( `timeeccmp (& now , & t , >=)) 200 `timeecr ( timeout ); 202 * timeout = t ; 203 `timeecsub ( timeout , & now ); 207 ( have_timeout ); 208 } } 217 $__pmgr_xt_timeout ( v , ddle , ai ) 218 ENV * v ; 219 db_timeec * ddle ; 220 HEARTBEAT_ACTION * ai ; 222 DB_REP * db_p ; 223 HEARTBEAT_ACTION my_ai ; 224 REPMGR_CONNECTION * cn ; 225 REPMGR_SITE * se ; 226 db_timeec t ; 228 db_p = v -> p_hd ; 230 i( db_p -> ma_eid = SELF_EID && db_p-> hbt_equcy > 0) { 231 t = db_p -> ϡ_b ; 232 `TIMESPEC_ADD_DB_TIMEOUT (& t , db_p -> hbt_equcy ); 233 my_ai = __pmgr_nd_hbt ; 234 } i(( cn = `__pmgr_ma_ci ( v )! NULL && 235 db_p -> hbt_mڙ_timeout > 0 && 236 cn -> vsi > HEARTBEAT_MIN_VERSION ) { 242 se = `SITE_FROM_EID ( db_p -> ma_eid ); 243 t = se -> ϡ_rcvd_timeamp ; 244 `TIMESPEC_ADD_DB_TIMEOUT (& t , db_p -> hbt_mڙ_timeout ); 245 my_ai = __pmgr__ei ; 247 ( FALSE ); 249 * ddle = t ; 250 i( ai ! NULL ) 251 * ai = my_ai ; 252 ( TRUE ); 253 } } 256 $__pmgr_nd_hbt ( v ) 257 ENV * v ; 259 DBT cڌ , c ; 260 u_t unud1 , unud2 ; 262 `DB_INIT_DBT ( cڌ , NULL , 0); 263 `DB_INIT_DBT ( c , NULL , 0); 264 ( `__pmgr_nd_brd ( v , 265 REPMGR_HEARTBEAT , & cڌ , & c , & unud1 , & unud2 )); 266 } } 268 REPMGR_CONNECTION * 269 $__pmgr_ma_ci ( v ) 270 ENV * v ; 272 DB_REP * db_p ; 273 REPMGR_CONNECTION * cn ; 274 REPMGR_SITE * ma ; 276 db_p = v -> p_hd ; 278 i( db_p -> ma_eid = SELF_EID || 279 ! `IS_VALID_EID ( db_p -> ma_eid )) 280 ( NULL ); 281 ma = `SITE_FROM_EID ( db_p -> ma_eid ); 282 i( ma -> e ! SITE_CONNECTED ) 283 ( NULL ); 284 cn = ma -> f .conn; 285 i( `IS_READY_STATE ( cn -> e )) 286 ( cn ); 287 ( NULL ); 288 } } 291 $__pmgr__ei ( v ) 292 ENV * v ; 294 REPMGR_CONNECTION * cn ; 296 cn = `__pmgr_ma_ci ( v ); 297 `DB_ASSERT ( v , cn ! NULL ); 298 `RPRINT ( v , DB_VERB_REPMGR_MISC , 299 ( v , "heartbeat monitorimeoutxpired")); 300 ( `__pmgr_bu_ci ( v , cn )); 301 } } 310 $__pmgr_check_timeouts ( v ) 311 ENV * v ; 313 db_timeec wh , now ; 314 HEARTBEAT_ACTION ai ; 315 t ; 321 i( `__pmgr_xt_timeout ( v , & wh , & ai )) { 322 `__os_gtime ( v , & now , 1); 323 i( `timeeccmp (& wh , & now , <=) && 324 ( t = (* ai )( v )) != 0) 325 ( t ); 328 ( `__pmgr_y_cis ( v )); 329 } } 336 $__pmgr_y_cis ( v ) 337 ENV * v ; 339 DB_REP * db_p ; 340 REPMGR_RETRY * y ; 341 db_timeec now ; 342 u_t eid ; 343 t ; 345 db_p = v -> p_hd ; 346 `__os_gtime ( v , & now , 1); 348 ! `TAILQ_EMPTY (& db_p -> s )) { 349 y = `TAILQ_FIRST (& db_p -> s ); 350 i( `timeeccmp (& y -> time , & now , >=)) 353 `TAILQ_REMOVE (& db_p -> s , y , s ); 355 eid = y ->eid; 356 `__os_ ( v , y ); 358 i(( t = `__pmgr_y_e ( v , eid )) != 0) 359 ( t ); 362 } } 371 $__pmgr_f_y_cis ( v ) 372 ENV * v ; 374 DB_REP * db_p ; 375 u_t eid ; 376 t ; 378 db_p = v -> p_hd ; 379 eid =0;id< db_p -> se_t ;id++) 380 i(( t = `__pmgr_y_e ( v , eid )) != 0) 381 ( t ); 383 } } 392 $__pmgr_y_e ( v , eid ) 393 ENV * v ; 394 u_t eid ; 396 ADDRINFO * li ; 397 DB_REP * db_p ; 398 pmgr_Ïddr_t * addr ; 399 t ; 401 db_p = v -> p_hd ; 419 addr = & `SITE_FROM_EID ( eid )-> t_addr ; 420 i( `ADDR_LIST_FIRST ( addr = NULL ) { 421 i(( t = `__pmgr_gaddr ( 422 v , addr -> ho ,ddr-> pt , 0, & li )) == 0) { 423 addr -> addss_li = li ; 424 () `ADDR_LIST_FIRST ( addr ); 425 } i( t = DB_REP_UNAVAIL ) 426 ( `__pmgr_schedu_ci_m ( 427 v , eid , FALSE )); 429 ( t ); 433 ( `__pmgr_c_se ( v , eid )); 434 } } 444 $__pmgr_c_se ( v , eid ) 445 ENV * v ; 446 u_t eid ; 448 DB_REP * db_p ; 449 REPMGR_CONNECTION * c ; 450 REPMGR_SITE * se ; 451 sock_t s ; 452 e ; 453 t ; 454 #ifde DB_WIN32 455 desed_evt ; 456 WSAEVENT evt_obj ; 459 db_p = v -> p_hd ; 460 se = `SITE_FROM_EID ( eid ); 462 t = `__pmgr_c ( v , & s , se )) { 464 e = CONN_CONNECTED ; 465 #ifde DB_WIN32 466 desed_evt = FD_READ | FD_CLOSE ; 469 INPROGRESS : 470 e = CONN_CONNECTING ; 471 #ifde DB_WIN32 472 desed_evt = FD_CONNECT ; 476 `STAT ( db_p -> gi -> m . _c_ ++); 478 `__pmgr_schedu_ci_m ( v , eid , FALSE )); 481 #ifde DB_WIN32 482 i(( evt_obj = `WSACeEvt ()= WSA_INVALID_EVENT ) { 483 t = t_o ; 484 `__db_r ( v , t , "can't create WSAvent"); 485 () `osock ( s ); 486 ( t ); 488 i( `WSAEvtSe ( s , evt_obj , desed_evt = SOCKET_ERROR ) { 489 t = t_o ; 490 `__db_r ( v , t , "can't set desiredvent bits"); 491 () `WSACloEvt ( evt_obj ); 492 () `osock ( s ); 493 ( t ); 497 i(( t = `__pmgr_w_ci ( v , & c , s , e )) 499 #ifde DB_WIN32 500 () `WSACloEvt ( evt_obj ); 502 () `osock ( s ); 503 ( t ); 505 #ifde DB_WIN32 506 c -> evt_obje = evt_obj ; 509 c -> eid = ()eid; 510 se -> f . cn = c ; 511 se -> e = SITE_CONNECTED ; 513 i( e = CONN_CONNECTED ) { 514 t = `__pmgr_o_vsi ( v , c )) { 517 DB_REP_UNAVAIL : 518 ( `__pmgr_bu_ci ( v , c )); 520 ( t ); 525 } } 528 $__pmgr_c ( v , sock_su , se ) 529 ENV * v ; 530 sock_t * sock_su ; 531 REPMGR_SITE * se ; 533 pmgr_Ïddr_t * addr ; 534 ADDRINFO * ai ; 535 sock_t s ; 536 * why ; 537 t ; 538 SITE_STRING_BUFFER bufr ; 544 `COMPQUIET ( why , ""); 545 addr = & se -> t_addr ; 546 ai = `ADDR_LIST_CURRENT ( addr ); 547 `DB_ASSERT ( v , ai ! NULL ); 548 ; ai ! NULL ; `ADDR_LIST_NEXT ( addr )) { 550 i(( s = `sock ( ai -> ai_my , 551 ai -> ai_sockty ,i-> ai_oc )= SOCKET_ERROR ) { 552 why = "can't create socketo connect"; 556 i(( t = `__pmgr_t_nblockg ( s )) != 0) { 557 `__db_r ( v , 558 t , "can't makeonblock socketo connect"); 559 () `osock ( s ); 560 ( t ); 563 i( `c ( s , ai -> ai_addr , ( sockn_t i-> ai_add ) != 0) 564 t = t_o ; 566 i( t =0 || = INPROGRESS ) { 567 * sock_su = s ; 568 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 570 `__pmgr_fm_se_loc ( se , bufr ), t )); 571 ( t ); 574 why = "connection failed"; 575 () `osock ( s ); 579 t = t_o ; 580 `__db_r ( v , t , "%t%s", why , 581 `__pmgr_fm_se_loc ( se , bufr )); 582 ( t ); 583 } } 591 $__pmgr_o_vsi ( v , cn ) 592 ENV * v ; 593 REPMGR_CONNECTION * cn ; 595 DB_REP * db_p ; 596 __pmgr_vsi_ol_gs vsis ; 597 pmgr_Ïddr_t * my_addr ; 598 size_t home_n , c_ngth ; 599 u_t8_t * buf , * p ; 600 t ; 602 db_p = v -> p_hd ; 603 my_addr = & db_p ->my_addr; 626 home_n = ` ( my_addr -> ho ); 627 c_ngth = home_n + 1 + 628 __REPMGR_VERSION_PROPOSAL_SIZE + 1; 629 i(( t = `__os_mloc ( v , c_ngth , & buf )) != 0) 630 out ; 631 p = buf ; 632 () `ry ((*) p , my_addr -> ho ); 634 p + home_n + 1; 635 vsis . m = DB_REPMGR_MIN_VERSION ; 636 vsis . max = DB_REPMGR_VERSION ; 637 `__pmgr_vsi_ol_msh ( v , & vsis , p ); 639 t = `nd_v1_hdshake ( v , cn , buf , c_ngth ); 640 `__os_ ( v , buf ); 641 out : 642 ( t ); 643 } } 646 $nd_v1_hdshake ( v , cn , buf , n ) 647 ENV * v ; 648 REPMGR_CONNECTION * cn ; 649 * buf ; 650 size_t n ; 652 DB_REP * db_p ; 653 REP * p ; 654 pmgr_Ïddr_t * my_addr ; 655 DB_REPMGR_V1_HANDSHAKE bufr ; 656 DBT l , c ; 658 db_p = v -> p_hd ; 659 p = db_p -> gi ; 660 my_addr = & db_p ->my_addr; 662 bufr . vsi = 1; 663 bufr . iܙy = `htl ( p ->priority); 664 bufr . pt = my_addr ->port; 665 l . da = & bufr ; 666 l . size = ( bufr ); 668 c . da = buf ; 669 c . size = ( u_t32_t ) n ; 678 ( `__pmgr_nd_e ( v , 679 cn , REPMGR_HANDSHAKE , & l , & c , FALSE )); 680 } } 689 $__pmgr_ad_om_se ( v , cn ) 690 ENV * v ; 691 REPMGR_CONNECTION * cn ; 693 DB_REP * db_p ; 694 REPMGR_SITE * se ; 695 SITE_STRING_BUFFER bufr ; 696 size_t ; 697 t ; 699 db_p = v -> p_hd ; 705 i(( t = `__pmgr_adv ( cn -> fd , 706 & cn -> iovecs . ves [cn->iovecs. offt ], 707 cn -> iovecs . cou - cn->iovecs. offt , & )) != 0) { 708 t ) { 709 #ide DB_WIN32 710 EINTR : 713 WOULDBLOCK : 716 () `__pmgr_fm_eid_loc ( v -> p_hd , 717 cn -> eid , bufr ); 718 `__db_r ( v , t , 719 "n'ad from %s", bufr ); 720 `STAT ( v -> p_hd -> 721 gi -> m . _ci_dr ++); 722 ( DB_REP_UNAVAIL ); 726 i( > 0) { 727 i( `IS_VALID_EID ( cn -> eid )) { 728 se = `SITE_FROM_EID ( cn -> eid ); 729 `__os_gtime ( 730 v , & se -> ϡ_rcvd_timeamp , 1); 732 i( `__pmgr_upde_csumed (& cn -> iovecs , )) 733 ( `dich_pha_comi ( v , 734 cn )); 736 () `__pmgr_fm_eid_loc ( v -> p_hd , 737 cn -> eid , bufr ); 738 `__db_rx ( v , "EOF oci from %s", bufr ); 739 `STAT ( v -> p_hd -> 740 gi -> m . _ci_dr ++); 741 ( DB_REP_UNAVAIL ); 744 } } 751 $dich_pha_comi ( v , cn ) 752 ENV * v ; 753 REPMGR_CONNECTION * cn ; 755 #MEM_ALIGN () ) 756 DBT * dbt ; 757 u_t32_t cڌ_size , c_size ; 758 size_t memsize , cڌ_offt , c_offt ; 759 * memba ; 760 t ; 762 cn -> adg_pha ) { 763 SIZES_PHASE : 771 `__pmgr_iovec_ (& cn -> iovecs ); 772 cڌ_size = `ohl ( cn -> cڌ_size_buf ); 773 c_size = `ohl ( cn -> c_size_buf ); 775 i( cn -> msg_ty = REPMGR_REP_MESSAGE ) { 776 i( cڌ_size == 0) { 777 `__db_rx ( 778 v , "illegal size forep msg"); 779 ( DB_REP_UNAVAIL ); 788 memsize = ( size_t ) 789 `DB_ALIGN (( REPMGR_MESSAGE ), MEM_ALIGN ); 790 cڌ_offt = memsize ; 791 memsize + cڌ_size ; 792 i( c_size > 0) { 793 memsize = ( size_t ) `DB_ALIGN (memsize, MEM_ALIGN ); 794 c_offt = memsize ; 795 memsize + c_size ; 797 `COMPQUIET ( c_offt , 0); 798 i(( t = `__os_mloc ( v , memsize , & memba )) != 0) 799 ( t ); 800 cn -> put . p_mesge = memba ; 802 cn -> put . p_mesge -> igg_eid = cn-> eid ; 803 `DB_INIT_DBT ( cn -> put . p_mesge -> cڌ , 804 ( u_t8_t *) memba + cڌ_offt , cڌ_size ); 805 `__pmgr_add_dbt (& cn -> iovecs , 806 & cn -> put . p_mesge -> cڌ ); 808 i( c_size > 0) { 809 `DB_INIT_DBT ( cn -> put . p_mesge -> c , 810 ( c_size > 0 ? 811 ( u_t8_t *) memba + c_offt : NULL ), 812 c_size ); 813 `__pmgr_add_dbt (& cn -> iovecs , 814 & cn -> put . p_mesge -> c ); 816 `DB_INIT_DBT ( cn -> put . p_mesge -> c , 817 NULL , 0); 819 cn -> put . pmgr_msg . l . size = cڌ_size ; 820 cn -> put . pmgr_msg . c . size = c_size ; 822 i( cڌ_size > 0) { 823 dbt = & cn -> put . pmgr_msg . l ; 824 i(( t = `__os_mloc ( v , cڌ_size , 825 & dbt -> da )) != 0) 826 ( t ); 827 `__pmgr_add_dbt (& cn -> iovecs , dbt ); 830 i( c_size > 0) { 831 dbt = & cn -> put . pmgr_msg . c ; 832 i(( t = `__os_mloc ( v , c_size , 833 & dbt -> da )) != 0) { 834 i( cڌ_size > 0) 835 `__os_ ( v , 836 cn -> put . pmgr_msg . 837 l . da ); 838 ( t ); 840 `__pmgr_add_dbt (& cn -> iovecs , dbt ); 844 cn -> adg_pha = DATA_PHASE ; 846 i( cڌ_size > 0 || c_size > 0) 855 DATA_PHASE : 856 ( `dich_msg ( v , cn )); 859 `DB_ASSERT ( v , FALSE ); 863 } } 869 $dich_msg ( v , cn ) 870 ENV * v ; 871 REPMGR_CONNECTION * cn ; 873 DBT * dbt ; 874 * home ; 875 giv , t ; 877 giv = FALSE ; 879 cn -> e ) { 880 CONN_CONNECTED : 886 `ONLY_HANDSHAKE ( v , cn ); 887 i(( t = `ad_vsi_ڣ ( v , cn )) != 0) 888 ( t ); 891 CONN_NEGOTIATE : 898 `ONLY_HANDSHAKE ( v , cn ); 899 i(( t = `nd_vsi_ڣ ( v , cn )) != 0) 900 ( t ); 903 CONN_PARAMETERS : 908 `ONLY_HANDSHAKE ( v , cn ); 909 dbt = & cn -> put . pmgr_msg . c ; 910 home = dbt -> da ; 911 home [ dbt -> size -1] = '\0'; 912 i(( t = `ac_hdshake ( v , cn , home )) != 0) 913 ( t ); 914 cn -> e = CONN_READY ; 917 CONN_READY : 918 CONN_CONGESTED : 925 cn -> msg_ty ) { 926 REPMGR_ACK : 927 i(( t = `cd_ack ( v , cn )) != 0) 928 ( t ); 931 REPMGR_HEARTBEAT : 940 REPMGR_REP_MESSAGE : 941 i(( t = `__pmgr_queue_put ( v , 942 cn -> put . p_mesge )) != 0) 943 ( t ); 948 giv = TRUE ; 952 `__db_rx ( v , 954 () cn -> msg_ty ); 955 ( DB_REP_UNAVAIL ); 959 CONN_DEFUNCT : 963 `DB_ASSERT ( v , FALSE ); 966 i(! giv ) { 967 dbt = & cn -> put . pmgr_msg . l ; 968 i( dbt -> size > 0) 969 `__os_ ( v , dbt -> da ); 970 dbt = & cn -> put . pmgr_msg . c ; 971 i( dbt -> size > 0) 972 `__os_ ( v , dbt -> da ); 974 `__pmgr_t_f_adg ( cn ); 976 } } 983 $nd_vsi_ڣ ( v , cn ) 984 ENV * v ; 985 REPMGR_CONNECTION * cn ; 987 DB_REP * db_p ; 988 __pmgr_vsi_ol_gs vsis ; 989 __pmgr_vsi_cfmi_gs cf ; 990 pmgr_Ïddr_t * my_addr ; 991 * home ; 992 u_t8_t buf [ __REPMGR_VERSION_CONFIRMATION_SIZE +1]; 993 DBT vi ; 994 t ; 996 db_p = v -> p_hd ; 997 my_addr = & db_p ->my_addr; 999 i(( t = `fd_vsi_fo ( v , cn , & vi )) != 0) 1000 ( t ); 1001 i( vi . size == 0) { 1003 home = cn -> put . pmgr_msg . c . da ; 1004 i(( t = `ac_v1_hdshake ( v , cn , home )) != 0) 1005 ( t ); 1006 i(( t = `nd_v1_hdshake ( v , 1007 cn , my_addr -> ho , ` (my_addr->host) + 1)) != 0) 1008 ( t ); 1009 cn -> e = CONN_READY ; 1011 i(( t = `__pmgr_vsi_ol_unmsh ( v , 1012 & vsis , vi . da , vi. size , NULL )) != 0) 1013 ( DB_REP_UNAVAIL ); 1016 `DB_ASSERT ( v , DB_REPMGR_VERSION == 2); 1018 i( DB_REPMGR_VERSION > vsis . m && 1019 DB_REPMGR_VERSION < vsis . max ) 1020 cf . vsi = DB_REPMGR_VERSION ; 1021 i( vsis . max > DB_REPMGR_MIN_VERSION && 1022 vsis . max < DB_REPMGR_VERSION ) 1023 cf . vsi = vsis . max ; 1029 `__db_rx ( v , 1031 ( u_lg ) vsis . m , (u_lg)vsis. max ); 1032 ( DB_REP_UNAVAIL ); 1034 cn -> vsi = cf .version; 1036 `__pmgr_vsi_cfmi_msh ( v , & cf , buf ); 1037 i(( t = `nd_hdshake ( v , cn , buf , (buf))) != 0) 1038 ( t ); 1040 cn -> e = CONN_PARAMETERS ; 1042 ( t ); 1043 } } 1046 $nd_hdshake ( v , cn , t , ݎ ) 1047 ENV * v ; 1048 REPMGR_CONNECTION * cn ; 1049 * t ; 1050 size_t ݎ ; 1052 DB_REP * db_p ; 1053 REP * p ; 1054 DBT l , c ; 1055 __pmgr_hdshake_gs hs ; 1056 pmgr_Ïddr_t * my_addr ; 1057 size_t home_n , c_n ; 1058 * buf ; 1059 u_t8_t * p ; 1060 u_t32_t l_n ; 1061 t ; 1063 db_p = v -> p_hd ; 1064 p = db_p -> gi ; 1065 my_addr = & db_p ->my_addr; 1071 l_n = __REPMGR_HANDSHAKE_SIZE ; 1072 home_n = ` ( my_addr -> ho ); 1073 c_n = home_n + 1 + 1074 ( t = NULL ? 0 : ݎ ); 1076 i(( t = `__os_mloc ( v , l_n + c_n , & buf )) != 0) 1077 ( t ); 1079 l . da = p = buf ; 1080 hs . pt = my_addr ->port; 1081 hs . iܙy = p ->priority; 1082 `__pmgr_hdshake_msh ( v , & hs , p ); 1083 l . size = l_n ; 1085 p = c . da = &p[ l_n ]; 1086 () `ry ((*) p , my_addr -> ho ); 1087 p + home_n + 1; 1088 i( t ! NULL ) { 1089 `memy ( p , t , ݎ ); 1090 p + ݎ ; 1092 c . size = ( u_t32_t )( p - ( u_t8_t *ec. da ); 1095 t = `__pmgr_nd_e ( v , 1096 cn , REPMGR_HANDSHAKE , & l , & c , FALSE ); 1097 `__os_ ( v , buf ); 1098 ( t ); 1099 } } 1102 $ad_vsi_ڣ ( v , cn ) 1103 ENV * v ; 1104 REPMGR_CONNECTION * cn ; 1106 __pmgr_vsi_cfmi_gs cf ; 1107 DBT vi ; 1108 * home ; 1109 t ; 1111 i(( t = `fd_vsi_fo ( v , cn , & vi )) != 0) 1112 ( t ); 1113 home = cn -> put . pmgr_msg . c . da ; 1114 i( vi . size == 0) { 1115 i(( t = `ac_v1_hdshake ( v , cn , home )) != 0) 1116 ( t ); 1118 i(( t = `__pmgr_vsi_cfmi_unmsh ( v , 1119 & cf , vi . da , vi. size , NULL )) != 0) 1120 ( DB_REP_UNAVAIL ); 1121 i( cf . vsi > DB_REPMGR_MIN_VERSION && 1122 cf . vsi < DB_REPMGR_VERSION ) 1123 cn -> vsi = cf .version; 1129 `__db_rx ( v , 1131 ( u_lg ) cf . vsi ); 1132 ( DB_REP_UNAVAIL ); 1135 i(( t = `ac_hdshake ( v , cn , home )) != 0) 1136 ( t ); 1137 i(( t = `nd_hdshake ( v , cn , NULL , 0)) != 0) 1138 ( t ); 1140 cn -> e = CONN_READY ; 1141 ( t ); 1142 } } 1151 $fd_vsi_fo ( v , cn , vi ) 1152 ENV * v ; 1153 REPMGR_CONNECTION * cn ; 1154 DBT * vi ; 1156 DBT * dbt ; 1157 * home ; 1158 size_t home_n ; 1160 dbt = & cn -> put . pmgr_msg . c ; 1161 i( dbt -> size == 0) { 1162 `__db_rx ( v , "handshake is missingecart"); 1163 ( DB_REP_UNAVAIL ); 1165 home = dbt -> da ; 1166 home [ dbt -> size -1] = '\0'; 1167 home_n = ` ( home ); 1168 i( home_n + 1 = dbt -> size ) { 1173 vi -> size = 0; 1182 vi -> da = &(( u_t8_t *) dbt ->da)[ home_n + 1]; 1183 vi -> size = ( dbt ->siz- ( home_n +1)) - 1; 1186 } } 1189 $ac_hdshake ( v , cn , home ) 1190 ENV * v ; 1191 REPMGR_CONNECTION * cn ; 1192 * home ; 1194 __pmgr_hdshake_gs hs ; 1197 i( `__pmgr_hdshake_unmsh ( v , & hs , 1198 cn -> put . pmgr_msg . l . da , 1199 cn -> put . pmgr_msg . l . size , NULL ) != 0) 1200 ( DB_REP_UNAVAIL ); 1202 ( `oss_ms ( v , cn , home , hs . pt , hs. iܙy )); 1203 } } 1206 $ac_v1_hdshake ( v , cn , home ) 1207 ENV * v ; 1208 REPMGR_CONNECTION * cn ; 1209 * home ; 1211 DB_REPMGR_V1_HANDSHAKE * hdshake ; 1212 u_t32_t io ; 1214 hdshake = cn -> put . pmgr_msg . l . da ; 1215 i( cn -> put . pmgr_msg . l . size !(* hdshake ) || 1216 hdshake -> vsi != 1) { 1217 `__db_rx ( v , "malformed V1 handshake"); 1218 ( DB_REP_UNAVAIL ); 1221 cn -> vsi = 1; 1222 io = `ohl ( hdshake -> iܙy ); 1223 ( `oss_ms ( v , cn , home , hdshake -> pt , io )); 1224 } } 1227 $oss_ms ( v , cn , ho , pt , iܙy ) 1228 ENV * v ; 1229 REPMGR_CONNECTION * cn ; 1230 * ho ; 1231 u_t pt ; 1232 u_t32_t iܙy ; 1234 DB_REP * db_p ; 1235 REPMGR_RETRY * y ; 1236 REPMGR_SITE * se ; 1237 pmgr_Ïddr_t addr ; 1238 t , eid ; 1240 db_p = v -> p_hd ; 1242 i( `F_ISSET ( cn , CONN_INCOMING )) { 1247 i( `IS_VALID_EID ( eid = `__pmgr_fd_se ( v , ho , pt ))) { 1248 se = `SITE_FROM_EID ( eid ); 1249 i( se -> e = SITE_IDLE ) { 1250 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1252 ho , pt )); 1253 y = se -> f .retry; 1254 `TAILQ_REMOVE (& db_p -> s , y , s ); 1255 `__os_ ( v , y ); 1262 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1264 ho , pt )); 1270 `DISABLE_CONNECTION ( se -> f . cn ); 1272 cn -> eid =id; 1273 se -> e = SITE_CONNECTED ; 1274 se -> f . cn = conn; 1276 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1278 ho , pt )); 1279 i(( t = `__pmgr_ck_Ïddr ( v , 1280 ho , pt , NULL , & addr )) != 0) 1281 ( t ); 1282 i(( t = `__pmgr_w_se ( v , 1283 & se , & addr , SITE_CONNECTED )) != 0) { 1284 `__pmgr_nup_Ïddr ( v , & addr ); 1285 ( t ); 1287 cn -> eid = `EID_FROM_SITE ( se ); 1288 se -> f . cn = conn; 1296 `DB_ASSERT ( v , `IS_VALID_EID ( cn -> eid )); 1297 se = `SITE_FROM_EID ( cn -> eid ); 1298 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1300 se -> t_addr . ho , ( u_lg )se->t_addr. pt )); 1303 se -> iܙy =riority; 1304 `F_SET ( se , SITE_HAS_PRIO ); 1313 i( db_p -> ma_eid = DB_EID_INVALID && !db_p-> de_e ) { 1314 db_p -> de_e = TRUE ; 1315 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1317 i(( t = `__pmgr__ei ( v , ELECT_REPSTART )) != 0) 1318 ( t ); 1322 } } 1325 $cd_ack ( v , cn ) 1326 ENV * v ; 1327 REPMGR_CONNECTION * cn ; 1329 DB_REP * db_p ; 1330 REPMGR_SITE * se ; 1331 __pmgr_ack_gs * ackp , ack ; 1332 SITE_STRING_BUFFER loti ; 1333 t ; 1335 db_p = v -> p_hd ; 1337 `DB_ASSERT ( v , cn -> vsi > 0 && 1338 `IS_READY_STATE ( cn -> e && `IS_VALID_EID (cn-> eid )); 1339 se = `SITE_FROM_EID ( cn -> eid ); 1345 i( cn -> vsi == 1) { 1346 ackp = cn -> put . pmgr_msg . l . da ; 1347 i( cn -> put . pmgr_msg . l . size !( ack ) || 1348 cn -> put . pmgr_msg . c . size != 0) { 1349 `__db_rx ( v , "badck msg size"); 1350 ( DB_REP_UNAVAIL ); 1353 ackp = & ack ; 1354 i(( t = `__pmgr_ack_unmsh ( v , ackp , 1355 cn -> put . pmgr_msg . l . da , 1356 cn -> put . pmgr_msg . l . size , NULL )) != 0) 1357 ( DB_REP_UNAVAIL ); 1361 i( ackp -> gi < db_p ->generation) { 1362 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1364 ( u_lg ) ackp -> gi , (u_lg) db_p ->generation, 1365 `__pmgr_fm_se_loc ( se , loti ))); 1368 `RPRINT ( v , DB_VERB_REPMGR_MISC , (env, 1369 "gهck [%lu][%lu](%luom %s", ( u_lg ) ackp -> l . fe , 1370 ( u_lg ) ackp -> l . offt , (u_lgckp-> gi , 1371 `__pmgr_fm_se_loc ( se , loti ))); 1373 i( ackp -> gi = db_p ->generation && 1374 `log_com (& ackp -> l , & se -> max_ack ) == 1) { 1375 `memy (& se -> max_ack , & ackp -> l , ( DB_LSN )); 1376 i(( t = `__pmgr_wake_wag_nds ( v )) != 0) 1377 ( t ); 1380 } } 1386 $__pmgr_wre_some ( v , cn ) 1387 ENV * v ; 1388 REPMGR_CONNECTION * cn ; 1390 QUEUED_OUTPUT * ouut ; 1391 REPMGR_FLAT * msg ; 1392 bys , t ; 1394 ! `STAILQ_EMPTY (& cn -> outbound_queue )) { 1395 ouut = `STAILQ_FIRST (& cn -> outbound_queue ); 1396 msg = ouut ->msg; 1397 i(( bys = `nd ( cn -> fd , & msg -> da [ ouut -> offt ], 1398 ( size_t ) msg -> ngth - ouut -> offt , 0)= SOCKET_ERROR ) { 1399 i(( t = t_o = WOULDBLOCK ) 1402 `__db_r ( v , t , "writing data"); 1403 `STAT ( v -> p_hd -> 1404 gi -> m . _ci_dr ++); 1405 ( DB_REP_UNAVAIL ); 1409 i(( ouut -> offt +( size_t ) bys > msg -> ngth ) { 1410 `STAILQ_REMOVE_HEAD (& cn -> outbound_queue , s ); 1411 `__os_ ( v , ouut ); 1412 cn -> out_queue_ngth --; 1413 i(-- msg -> f_cou <= 0) 1414 `__os_ ( v , msg ); 1424 cn -> e = CONN_READY ; 1425 i( cn -> blocks > 0 && 1426 ( t = `__pmgr_sigl (& cn -> ded )) != 0) 1427 ( t ); 1431 #ifde DB_WIN32 1437 i( `WSAEvtSe ( cn -> fd , cn-> evt_obje , FD_READ | FD_CLOSE ) 1438 = SOCKET_ERROR ) { 1439 t = t_o ; 1440 `__db_r ( v , t , "can'temove FD_WRITEvent bit"); 1441 ( t ); 1446 } } @../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 (( ENV *, u_t32_t )); 16 __pmgr_t_ses __P (( ENV *)); 17 __pmgr_t_s __P (( ENV *, u_t32_t )); 18 __pmgr_ __P (( ENV *, DB_REPMGR_STAT **, u_t32_t )); 19 __pmgr__t __P (( ENV *, u_t32_t )); 28 $__pmgr__ ( dbv , p , ags ) 29 DB_ENV * dbv ; 30 DB_REPMGR_STAT ** p ; 31 u_t32_t ags ; 33 ENV * v ; 34 t ; 36 v = dbv ->env; 38 `ENV_REQUIRES_CONFIG_XX ( 39 v , p_hd , "DB_ENV->pmgr_", DB_INIT_REP ); 41 i(( t = `__db_fchk ( v , 42 "DB_ENV->pmgr_", ags , DB_STAT_CLEAR )) != 0) 43 ( t ); 45 ( `__pmgr_ ( v , p , ags )); 46 } } 53 $__pmgr_ ( v , p , ags ) 54 ENV * v ; 55 DB_REPMGR_STAT ** p ; 56 u_t32_t ags ; 58 DB_REP * db_p ; 59 DB_REPMGR_STAT * s ; 60 t ; 62 db_p = v -> p_hd ; 64 * p = NULL ; 67 i(( t = `__os_umloc ( v , ( DB_REPMGR_STAT ), & s )) != 0) 68 ( t ); 70 `memy ( s , & db_p -> gi -> m , (*stats)); 71 i( `LF_ISSET ( DB_STAT_CLEAR )) 72 `memt (& db_p -> gi -> m , 0, ( DB_REPMGR_STAT )); 74 * p = s ; 76 } } 85 $__pmgr__t_ ( dbv , ags ) 86 DB_ENV * dbv ; 87 u_t32_t ags ; 89 ENV * v ; 90 t ; 92 v = dbv ->env; 94 `ENV_REQUIRES_CONFIG_XX ( 95 v , p_hd , "DB_ENV->pmgr__t", DB_INIT_REP ); 97 i(( t = `__db_fchk ( v , "DB_ENV->repmgr_stat_print", 98 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 99 ( t ); 101 ( `__pmgr__t ( v , ags )); 102 } } 105 $__pmgr__t ( v , ags ) 106 ENV * v ; 107 u_t32_t ags ; 109 u_t32_t ig_ags ; 110 t ; 112 ig_ags = ags ; 113 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 114 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 115 i(( t = `__pmgr_t_s ( v , ig_ags )) == 0) 116 t = `__pmgr_t_ses ( v ); 117 i( ags =0 || t != 0) 118 ( t ); 121 i( `LF_ISSET ( DB_STAT_ALL ) && 122 ( t = `__pmgr_t_l ( v , ig_ags )) != 0) 123 ( t ); 126 } } 129 $__pmgr_t_s ( v , ags ) 130 ENV * v ; 131 u_t32_t ags ; 133 DB_REPMGR_STAT * ; 134 t ; 136 i(( t = `__pmgr_ ( v , & , ags )) != 0) 137 ( t ); 139 `__db_dl ( v , "Number of PERM messagesotcknowledged", 140 ( u_lg ) -> _rm_ed ); 141 `__db_dl ( v , "Number of messages queued dueoetwork delay", 142 ( u_lg ) -> _msgs_queued ); 143 `__db_dl ( v , "Number of messages discarded dueo queueength", 144 ( u_lg ) -> _msgs_drݳd ); 145 `__db_dl ( v , "Number ofxisting connections dropped", 146 ( u_lg ) -> _ci_dr ); 147 `__db_dl ( v , "Number of failedew connectionttempts", 148 ( u_lg ) -> _c_ ); 150 `__os_u ( v , ); 153 } } 156 $__pmgr_t_ses ( v ) 157 ENV * v ; 159 DB_REPMGR_SITE * li ; 160 u_t cou , i ; 161 t ; 163 i(( t = `__pmgr_se_li ( v -> dbv , & cou , & li )) != 0) 164 ( t ); 166 i( cou == 0) 169 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 170 `__db_msg ( v , "DB_REPMGR site information:"); 172 i = 0; i < cou ; ++i) { 173 `__db_msg ( v , "%s (eid: %d,ort: %u, %sconnected)", 174 li [ i ]. ho ,i[i]. eid ,i[i]. pt , 175 li [ i ]. us = DB_REPMGR_CONNECTED ? "" : "dis"); 178 `__os_u ( v , li ); 181 } } 188 $__pmgr_t_l ( v , ags ) 189 ENV * v ; 190 u_t32_t ags ; 192 `COMPQUIET ( v , NULL ); 193 `COMPQUIET ( ags , 0); 195 } } 200 $__pmgr__ ( dbv , p , ags ) 201 DB_ENV * dbv ; 202 DB_REPMGR_STAT ** p ; 203 u_t32_t ags ; 205 `COMPQUIET ( p , NULL ); 206 `COMPQUIET ( ags , 0); 208 ( `__db__n_but ( dbv -> v )); 209 } } 212 $__pmgr__t_ ( dbv , ags ) 213 DB_ENV * dbv ; 214 u_t32_t ags ; 216 `COMPQUIET ( ags , 0); 218 ( `__db__n_but ( dbv -> v )); 219 } } 226 $__pmgr_se_li ( dbv , coup , lip ) 227 DB_ENV * dbv ; 228 u_t * coup ; 229 DB_REPMGR_SITE ** lip ; 231 DB_REP * db_p ; 232 DB_REPMGR_SITE * us ; 233 ENV * v ; 234 REPMGR_SITE * se ; 235 size_t y_size , tٮ_size ; 236 u_t cou , i ; 237 locked , t ; 238 * me ; 240 v = dbv ->env; 241 db_p = v -> p_hd ; 242 i( `REPMGR_SYNC_INITED ( db_p )) { 243 `LOCK_MUTEX ( db_p -> mux ); 244 locked = TRUE ; 246 locked = FALSE ; 249 t = 0; 250 * coup = 0; 251 * lip = NULL ; 254 i(( cou = db_p -> se_t ) == 0) 255 r ; 257 y_size = ( DB_REPMGR_SITE * cou ; 258 tٮ_size = y_size ; 259 i = 0; i < cou ; i++) { 260 se = & db_p -> ses [ i ]; 263 tٮ_size + ` ( se -> t_addr . ho ) + 1; 266 i(( t = `__os_umloc ( v , tٮ_size , & us )) != 0) 267 r ; 273 me = (*)(( u_t8_t *) us + y_size ); 274 i = 0; i < cou ; i++) { 275 se = & db_p -> ses [ i ]; 277 us [ i ]. eid = `EID_FROM_SITE ( se ); 279 us [ i ]. ho = me ; 280 () `ry ( me , se -> t_addr . ho ); 281 me + ` (name) + 1; 283 us [ i ]. pt = se -> t_addr .port; 284 us [ i ].u se -> e = SITE_CONNECTED ? 285 DB_REPMGR_CONNECTED : DB_REPMGR_DISCONNECTED ; 288 * coup = cou ; 289 * lip = us ; 291 r : i( locked ) 292 `UNLOCK_MUTEX ( db_p -> mux ); 293 ( t ); 294 } } @../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 -> v , 30 ( DB_OPNOTSUP ); 31 } } 39 $__pmgr_o ( v ) 40 ENV * v ; 42 `COMPQUIET ( v , 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 ( v , evt , fo ) 183 ENV * v ; 184 u_t32_t evt ; 185 * fo ; 187 `COMPQUIET ( v , 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 ( v , eid , immed ) 32 ENV * v ; 33 u_t eid ; 34 immed ; 36 DB_REP * db_p ; 37 REPMGR_RETRY * y ; 38 REPMGR_SITE * se ; 39 db_timeec t ; 40 t ; 42 db_p = v -> p_hd ; 43 i(( t = `__os_mloc ( v , (* y ), &retry)) != 0) 44 ( t ); 46 `__os_gtime ( v , & t , 1); 47 i( immed ) 48 `TAILQ_INSERT_HEAD (& db_p -> s , y , s ); 50 `TIMESPEC_ADD_DB_TIMEOUT (& t , db_p -> ci_y_wa ); 51 `TAILQ_INSERT_TAIL (& db_p -> s , y , s ); 53 y -> eid =id; 54 y -> time = t ; 56 se = `SITE_FROM_EID ( eid ); 57 se -> e = SITE_IDLE ; 58 se -> f . y =etry; 60 ( `__pmgr_wake_ma_thad ( v )); 61 } } 70 $__pmgr_t_f_adg ( c ) 71 REPMGR_CONNECTION * c ; 73 c -> adg_pha = SIZES_PHASE ; 74 `__pmgr_iovec_ (& c -> iovecs ); 75 `__pmgr_add_bufr (& c -> iovecs , &c-> msg_ty , 76 ( c -> msg_ty )); 77 `__pmgr_add_bufr (& c -> iovecs , &c-> cڌ_size_buf , 78 ( c -> cڌ_size_buf )); 79 `__pmgr_add_bufr (& c -> iovecs , &c-> c_size_buf , 80 ( c -> c_size_buf )); 81 } } 92 $__pmgr_w_ci ( v , c , s , e ) 93 ENV * v ; 94 REPMGR_CONNECTION ** c ; 95 sock_t s ; 96 e ; 98 DB_REP * db_p ; 99 REPMGR_CONNECTION * c ; 100 t ; 102 db_p = v -> p_hd ; 103 i(( t = `__os_oc ( v , 1, ( REPMGR_CONNECTION ), & c )) != 0) 104 ( t ); 105 i(( t = `__pmgr_loc_cd (& c -> ded )) != 0) { 106 `__os_ ( v , c ); 107 ( t ); 109 c -> blocks = 0; 111 c -> fd = s ; 112 c -> e = state; 114 `STAILQ_INIT (& c -> outbound_queue ); 115 c -> out_queue_ngth = 0; 117 `__pmgr_t_f_adg ( c ); 118 `TAILQ_INSERT_TAIL (& db_p -> cis , c , s ); 119 * c = c ; 122 } } 132 $__pmgr_w_se ( v , s , addr , e ) 133 ENV * v ; 134 REPMGR_SITE ** s ; 135 cڡ pmgr_Ïddr_t * addr ; 136 e ; 138 DB_REP * db_p ; 139 REPMGR_SITE * se ; 140 SITE_STRING_BUFFER bufr ; 141 u_t w_se_max , eid ; 142 t ; 144 db_p = v -> p_hd ; 145 i( db_p -> se_t >db_p-> se_max ) { 146 #INITIAL_SITES_ALLOCATION 10 ) 147 w_se_max = db_p -> se_max == 0 ? 148 INITIAL_SITES_ALLOCATION : db_p -> se_max * 2; 149 i(( t = `__os_loc ( v , 150 ( REPMGR_SITE * w_se_max , & db_p -> ses )) != 0) 151 ( t ); 152 db_p -> se_max = w_se_max ; 154 eid = db_p -> se_t ++; 156 se = & db_p -> ses [ eid ]; 158 `memy (& se -> t_addr , addr , (*addr)); 159 `ZERO_LSN ( se -> max_ack ); 160 se -> ags = 0; 161 `timeecr (& se -> ϡ_rcvd_timeamp ); 162 se -> e = state; 164 `RPRINT ( v , DB_VERB_REPMGR_MISC , 165 ( v , "EID %u iassigd f %s", eid , 166 `__pmgr_fm_se_loc ( se , bufr ))); 167 * s = se ; 169 } } 178 $__pmgr_nup_Ïddr ( v , addr ) 179 ENV * v ; 180 pmgr_Ïddr_t * addr ; 182 i( addr -> addss_li ! NULL ) { 183 `__os_addrfo ( v , addr -> addss_li ); 184 addr -> addss_li =ddr-> cut = NULL ; 186 i( addr -> ho ! NULL ) { 187 `__os_ ( v , addr -> ho ); 188 addr -> ho = NULL ; 190 } } 196 $__pmgr_iovec_ ( v ) 197 REPMGR_IOVECS * v ; 199 v -> offt = v-> cou = 0; 200 v -> tٮ_bys = 0; 201 } } 210 $__pmgr_add_bufr ( v , addss , ngth ) 211 REPMGR_IOVECS * v ; 212 * addss ; 213 size_t ngth ; 215 v -> ves [v-> cou ]. iov_ba = addss ; 216 v -> ves [v-> cou ++]. iov_n = ngth ; 217 v -> tٮ_bys + ngth ; 218 } } 224 $__pmgr_add_dbt ( v , dbt ) 225 REPMGR_IOVECS * v ; 226 cڡ DBT * dbt ; 228 v -> ves [v-> cou ]. iov_ba = dbt -> da ; 229 v -> ves [v-> cou ++]. iov_n = dbt -> size ; 230 v -> tٮ_bys + dbt -> size ; 231 } } 243 $__pmgr_upde_csumed ( v , by_cou ) 244 REPMGR_IOVECS * v ; 245 size_t by_cou ; 247 db_iovec_t * iov ; 248 i ; 250 i = v -> offt ; ; i++) { 251 `DB_ASSERT ( NULL , i < v -> cou && by_cou > 0); 252 iov = & v -> ves [ i ]; 253 i( by_cou > iov -> iov_n ) { 258 by_cou - iov -> iov_n ; 265 iov -> iov_n -( u_t32_t ) by_cou ; 266 i( iov -> iov_n > 0) { 271 iov -> iov_ba = (*) 272 (( u_t8_t *) iov -> iov_ba + by_cou ); 273 v -> offt = i ; 279 v -> offt = i +1; 285 ( v -> offt >v-> cou ); 288 } } 299 $__pmgr_e_my_addr ( v , dbt ) 300 ENV * v ; 301 DBT * dbt ; 303 DB_REP * db_p ; 304 size_t size , hn ; 305 u_t16_t pt_bufr ; 306 u_t8_t * r ; 307 t ; 309 db_p = v -> p_hd ; 315 pt_bufr = `hts ( db_p -> my_addr . pt ); 316 size = ( pt_bufr ) + 317 ( hn = ` ( db_p -> my_addr . ho ) + 1); 318 i(( t = `__os_mloc ( v , size , & r )) != 0) 319 ( t ); 321 `DB_INIT_DBT (* dbt , r , size ); 323 `memy ( r , & pt_bufr , (port_buffer)); 324 r = &r[( pt_bufr )]; 325 `memy ( r , db_p -> my_addr . ho , hn ); 328 } } 342 u_t 343 $__pmgr_g_nses ( db_p ) 344 DB_REP * db_p ; 346 REP * p ; 348 p = db_p -> gi ; 349 i( p -> cfig_nses > 0) 350 (( u_t ) p -> cfig_nses ); 355 ( db_p -> se_t + 1); 356 } } 362 $__pmgr_thad_u ( v , why ) 363 ENV * v ; 364 why ; 366 () `__pmgr__thads ( v ); 367 () `__v_nic ( v , why ); 368 } } 378 $__pmgr_fm_eid_loc ( db_p , eid , bufr ) 379 DB_REP * db_p ; 380 eid ; 381 * bufr ; 383 i( `IS_VALID_EID ( eid )) 384 ( `__pmgr_fm_se_loc ( `SITE_FROM_EID ( eid ), bufr )); 386 `tf ( bufr , MAX_SITE_LOC_STRING , "(unidentified site)"); 387 ( bufr ); 388 } } 394 $__pmgr_fm_se_loc ( se , bufr ) 395 REPMGR_SITE * se ; 396 * bufr ; 398 `tf ( bufr , MAX_SITE_LOC_STRING , "site %s:%lu", 399 se -> t_addr . ho , ( u_lg )se->t_addr. pt ); 400 ( bufr ); 401 } } 407 $__pmgr_pt ( v , ags ) 408 ENV * v ; 409 u_t32_t ags ; 411 DBT my_addr ; 412 t ; 414 i(( t = `__pmgr_e_my_addr ( v , & my_addr )) != 0) 415 ( t ); 416 t = `__p_t ( v -> dbv , & my_addr , ags ); 417 `__os_ ( v , my_addr . da ); 418 i( t != 0) 419 `__db_r ( v , t , "rep_start"); 420 ( t ); 421 } } @../repmgr/repmgr_windows.c 9 ~"db_cfig.h " 11 #__INCLUDE_NETWORKING 1 ) 12 ~"db_t.h " 15 #DB_TIMEOUT_TO_WINDOWS_TIMEOUT ( t ((+ ( US_PER_MS - 1)/ US_PER_MS) ) 17 s__ack_wa { 18 HANDLE mevt ; 19 cڡ DB_LSN * mlp ; 20 __ack_wa * mxt_ ; 21 } tACK_WAITER ; 23 #WAITER_SLOT_IN_USE ( w ((w)-> lp ! NULL ) ) 35 s__ack_was_b { 36 __ack_wa * my ; 37 msize ; 38 mxt_ava ; 39 __ack_wa * mf_ ; 42 lo_wa_ __P (( ENV *, ACK_WAITER **)); 43 _wa_ __P (( ENV *, ACK_WAITER *)); 44 hd_comi __P (( ENV *, REPMGR_CONNECTION *)); 45 fish_cg __P (( ENV *, REPMGR_CONNECTION *, 46 LPWSANETWORKEVENTS )); 49 $__pmgr_thad_t ( v , ruab ) 50 ENV * v ; 51 REPMGR_RUNNABLE * ruab ; 53 HANDLE thad_id ; 55 ruab -> fished = FALSE ; 57 thad_id = `CeThad ( NULL , 0, 58 ( LPTHREAD_START_ROUTINE ) ruab -> run , v , 0, NULL ); 59 i( thad_id = NULL ) 60 ( `GLaE ()); 61 ruab -> thad_id =hread_id; 63 } } 66 $__pmgr_thad_jo ( thad ) 67 REPMGR_RUNNABLE * thad ; 69 i( `WaFSgObje ( thad -> thad_id , INFINITE = WAIT_OBJECT_0 ) 71 ( `GLaE ()); 72 } } 75 $__pmgr_t_nblockg ( s ) 76 SOCKET s ; 78 t ; 79 u_lg g ; 81 g = 1; 82 i(( t = `iolsock ( s , FIONBIO , & g )= SOCKET_ERROR ) 83 ( `WSAGLaE ()); 85 } } 95 $__pmgr_wake_wag_nds ( v ) 96 ENV * v ; 98 ACK_WAITER * ; 99 DB_REP * db_p ; 100 i , t ; 102 t = 0; 103 db_p = v -> p_hd ; 104 i =0; i< db_p -> was -> xt_ava ; i++) { 105 = & db_p -> was -> y [ i ]; 106 i(! `WAITER_SLOT_IN_USE ( )) 108 i( `__pmgr_is_rmt ( v , -> lp )) 109 i(! `SEvt ( -> evt && t == 0) 110 t = `GLaE (); 112 ( t ); 113 } } 120 $__pmgr_awa_ack ( v , lp ) 121 ENV * v ; 122 cڡ DB_LSN * lp ; 124 ACK_WAITER * me ; 125 DB_REP * db_p ; 126 DWORD t , timeout ; 128 db_p = v -> p_hd ; 130 i(( t = `lo_wa_ ( v , & me )) != 0) 131 r ; 133 timeout = db_p -> ack_timeout > 0 ? 134 `DB_TIMEOUT_TO_WINDOWS_TIMEOUT ( db_p -> ack_timeout : INFINITE ; 135 me -> lp =snp; 136 i(( t = `SiglObjeAndWa ( db_p -> mux , me -> evt , timeout , 137 FALSE )= WAIT_FAILED ) { 138 t = `GLaE (); 139 } i( t = WAIT_TIMEOUT ) 140 t = DB_REP_UNAVAIL ; 142 `DB_ASSERT ( v , t = WAIT_OBJECT_0 ); 144 `LOCK_MUTEX ( db_p -> mux ); 145 `_wa_ ( v , me ); 147 r : 148 ( t ); 149 } } 156 $lo_wa_ ( v , sup ) 157 ENV * v ; 158 ACK_WAITER ** sup ; 160 ACK_WAITER * w ; 161 ACK_WAITERS_TABLE * b ; 162 DB_REP * db_p ; 163 t ; 165 db_p = v -> p_hd ; 166 b = db_p -> was ; 167 i( b -> f_ = NULL ) { 168 i( b -> xt_ava >b-> size ) { 172 b -> size *= 2; 173 w = b -> y ; 174 i(( t = `__os_loc ( v , b -> size * (* w ), 175 & w )) != 0) 176 ( t ); 177 b -> y = w ; 183 w = & b -> y [b-> xt_ava ++]; 184 i(( w -> evt = `CeEvt ( NULL , FALSE , FALSE, NULL)) == 185 NULL ) { 190 -- b -> xt_ava ; 191 ( `GLaE ()); 194 w = b -> f_ ; 195 b -> f_ = w -> xt_ ; 197 * sup = w ; 199 } } 202 $_wa_ ( v , ) 203 ENV * v ; 204 ACK_WAITER * ; 206 DB_REP * db_p ; 208 db_p = v -> p_hd ; 210 -> lp = NULL ; 211 -> xt_ = db_p -> was -> f_ ; 212 db_p -> was -> f_ = ; 213 } } 217 $__pmgr_awa_d ( v , cn , timeout ) 218 ENV * v ; 219 REPMGR_CONNECTION * cn ; 220 db_timeout_t timeout ; 222 DB_REP * db_p ; 223 db_timeec ddle , d , now ; 224 db_timeout_t t ; 225 DWORD duti , t ; 226 round_up ; 228 db_p = v -> p_hd ; 230 `__os_gtime ( v , & ddle , 1); 231 `TIMESPEC_ADD_DB_TIMEOUT (& ddle , timeout ); 233 cn -> out_queue_ngth > OUT_QUEUE_LIMIT ) { 234 i(! `RetEvt ( cn -> ded )) 235 ( `GLaE ()); 238 `__os_gtime ( v , & now , 1); 239 i( `timeeccmp (& now , & ddle , >=)) { 240 cn -> e = CONN_CONGESTED ; 243 d = ddle ; 244 `timeecsub (& d , & now ); 245 round_up = TRUE ; 246 `DB_TIMESPEC_TO_TIMEOUT ( t , & d , round_up ); 247 duti = `DB_TIMEOUT_TO_WINDOWS_TIMEOUT ( t ); 249 t = `SiglObjeAndWa ( db_p -> mux , 250 cn -> ded , duti , FALSE ); 251 `LOCK_MUTEX ( db_p -> mux ); 252 i( t = WAIT_FAILED ) 253 ( `GLaE ()); 254 i( t = WAIT_TIMEOUT ) { 255 cn -> e = CONN_CONGESTED ; 258 `DB_ASSERT ( v , t = WAIT_OBJECT_0 ); 260 i( db_p -> fished ) 262 i( cn -> e = CONN_DEFUNCT ) 263 ( DB_REP_UNAVAIL ); 266 } } 273 $__pmgr_loc_cd ( c ) 274 cd_v_t * c ; 276 HANDLE evt ; 278 i(( evt = `CeEvt ( NULL , TRUE , FALSE , NULL)) == NULL) 279 ( `GLaE ()); 280 * c = evt ; 282 } } 285 $__pmgr__cd ( c ) 286 cd_v_t * c ; 288 i( `CloHd (* c )) 290 ( `GLaE ()); 291 } } 299 $__pmgr__sync ( v , db_p ) 300 ENV * v ; 301 DB_REP * db_p ; 303 #INITIAL_ALLOCATION 5 ) 304 ACK_WAITERS_TABLE * b ; 305 t ; 307 db_p -> sigr = db_p-> queue_nemy = db_p-> check_ei = 308 db_p -> mux = NULL ; 309 b = NULL ; 311 i(( db_p -> sigr = `CeEvt ( NULL , 312 FALSE , 313 FALSE , 314 NULL )) == NULL) 315 gr ; 317 i(( db_p -> queue_nemy = `CeEvt ( NULL , TRUE , FALSE , NULL)) 318 = NULL ) 319 gr ; 321 i(( db_p -> check_ei = `CeEvt ( NULL , FALSE , FALSE, NULL)) 322 = NULL ) 323 gr ; 325 i(( db_p -> mux = `CeMux ( NULL , FALSE , NULL)) == NULL) 326 gr ; 328 i(( t = `__os_oc ( v , 1, ( ACK_WAITERS_TABLE ), & b )) 330 r ; 332 i(( t = `__os_oc ( v , INITIAL_ALLOCATION , ( ACK_WAITER ), 333 & b -> y )) != 0) 334 r ; 336 b -> size = INITIAL_ALLOCATION ; 337 b -> f_ = NULL ; 338 b -> xt_ava = 0; 341 db_p -> was = b ; 344 gr : 345 t = `GLaE (); 346 r : 347 i( db_p -> check_ei ! NULL ) 348 `CloHd ( db_p -> check_ei ); 349 i( db_p -> queue_nemy ! NULL ) 350 `CloHd ( db_p -> queue_nemy ); 351 i( db_p -> sigr ! NULL ) 352 `CloHd ( db_p -> sigr ); 353 i( db_p -> mux ! NULL ) 354 `CloHd ( db_p -> mux ); 355 i( b ! NULL ) 356 `__os_ ( v , b ); 357 db_p -> was = NULL ; 358 ( t ); 359 } } 362 $__pmgr_o_sync ( v ) 363 ENV * v ; 365 DB_REP * db_p ; 366 i , t ; 368 db_p = v -> p_hd ; 369 i(!( `REPMGR_SYNC_INITED ( db_p ))) 372 t = 0; 373 i = 0; i < db_p -> was -> xt_ava ; i++) { 374 i(! `CloHd ( db_p -> was -> y [ i ]. evt && t == 0) 375 t = `GLaE (); 377 `__os_ ( v , db_p -> was -> y ); 378 `__os_ ( v , db_p -> was ); 380 i(! `CloHd ( db_p -> check_ei && t == 0) 381 t = `GLaE (); 383 i(! `CloHd ( db_p -> queue_nemy && t == 0) 384 t = `GLaE (); 386 i(! `CloHd ( db_p -> sigr && t == 0) 387 t = `GLaE (); 389 i(! `CloHd ( db_p -> mux && t == 0) 390 t = `GLaE (); 392 db_p -> was = NULL ; 393 ( t ); 394 } } 404 $__pmgr_t_ ( v , db_p ) 405 ENV * v ; 406 DB_REP * db_p ; 408 t ; 411 i(! db_p -> w_ed && ( t = `__pmgr_w_ ( v )) != 0) 412 r ; 414 i(( t = `__pmgr_li ( v )) == 0) 417 i( `WSAC˪up (= SOCKET_ERROR ) { 418 t = t_o ; 419 `__db_r ( v , t , "WSACleanup"); 422 r : db_p -> li_fd = INVALID_SOCKET ; 423 ( t ); 424 } } 433 $__pmgr_w_ ( v ) 434 ENV * v ; 436 DB_REP * db_p ; 437 WSADATA wDa ; 438 t ; 440 db_p = v -> p_hd ; 442 i(( t = `WSASup ( `MAKEWORD (2, 2), & wDa )) != 0) { 443 `__db_r ( v , t , "unableo initialize Windowsetworking"); 444 ( t ); 446 db_p -> w_ed = TRUE ; 449 } } 452 $__pmgr_lock_mux ( mux ) 453 mgr_mux_t * mux ; 455 i( `WaFSgObje (* mux , INFINITE = WAIT_OBJECT_0 ) 457 ( `GLaE ()); 458 } } 461 $__pmgr_uock_mux ( mux ) 462 mgr_mux_t * mux ; 464 i( `RMux (* mux )) 466 ( `GLaE ()); 467 } } 470 $__pmgr_sigl ( v ) 471 cd_v_t * v ; 473 ( `SEvt (* v ? 0 : `GLaE ()); 474 } } 477 $__pmgr_wake_ma_thad ( v ) 478 ENV * v ; 480 i(! `SEvt ( v -> p_hd -> sigr )) 481 ( `GLaE ()); 483 } } 486 $__pmgr_wrev ( fd , iovec , buf_cou , by_cou_p ) 487 sock_t fd ; 488 db_iovec_t * iovec ; 489 buf_cou ; 490 size_t * by_cou_p ; 492 DWORD bys ; 494 i( `WSASd ( fd , iovec , 495 ( DWORD ) buf_cou , & bys , 0, NULL , NULL= SOCKET_ERROR ) 496 ( t_o ); 498 * by_cou_p = ( size_t ) bys ; 500 } } 503 $__pmgr_adv ( fd , iovec , buf_cou , x_cou_p ) 504 sock_t fd ; 505 db_iovec_t * iovec ; 506 buf_cou ; 507 size_t * x_cou_p ; 509 DWORD bys , ags ; 511 ags = 0; 512 i( `WSARecv ( fd , iovec , 513 ( DWORD ) buf_cou , & bys , & ags , NULL , NULL= SOCKET_ERROR ) 514 ( t_o ); 516 * x_cou_p = ( size_t ) bys ; 518 } } 521 $__pmgr__lo ( v ) 522 ENV * v ; 524 DB_REP * db_p ; 525 DWORD vts , t ; 526 DWORD _timeout ; 527 REPMGR_CONNECTION * cn , * xt ; 528 REPMGR_CONNECTION * cis [ WSA_MAXIMUM_WAIT_EVENTS ]; 529 WSAEVENT evts [ WSA_MAXIMUM_WAIT_EVENTS ]; 530 db_timeec timeout ; 531 WSAEVENT li_evt ; 532 WSANETWORKEVENTS t_evts ; 533 ow_cڌ , i ; 535 db_p = v -> p_hd ; 537 i(( li_evt = `WSACeEvt ()= WSA_INVALID_EVENT ) { 538 `__db_r ( 539 v , t_o , "can't createvent foristen socket"); 540 ( t_o ); 542 i( `WSAEvtSe ( db_p -> li_fd , li_evt , FD_ACCEPT ) == 543 SOCKET_ERROR ) { 544 t = t_o ; 545 `__db_r ( v , t , "can'tnablevent foristener"); 546 out ; 549 `LOCK_MUTEX ( db_p -> mux ); 550 i(( t = `__pmgr_f_y_cis ( v )) != 0) 551 uock ; 552 ow_cڌ = FALSE ; 555 evts [0] = db_p -> sigr ; 556 evts [1] = li_evt ; 557 vts = 2; 568 cn = `TAILQ_FIRST (& db_p -> cis ); 569 cn ! NULL ; 570 cn = xt ) { 571 xt = `TAILQ_NEXT ( cn , s ); 573 i( cn -> e = CONN_DEFUNCT ) { 574 i(( t = `__pmgr_nup_ci ( v , 575 cn )) != 0) 576 uock ; 586 i( cn -> e = CONN_CONNECTING || 587 ! `STAILQ_EMPTY (& cn -> outbound_queue ) || 588 (! ow_cڌ || ! `IS_VALID_EID ( cn -> eid ))) { 589 evts [ vts ] = cn -> evt_obje ; 590 cis [ vts ++] = cn ; 594 i( `__pmgr_compu_timeout ( v , & timeout )) 595 _timeout = 596 ( DWORD )( timeout . tv_c * MS_PER_SEC + 597 timeout . tv_nc / NS_PER_MS ); 600 _timeout = WSA_INFINITE ; 603 `UNLOCK_MUTEX ( db_p -> mux ); 604 t = `WSAWaFMuɝEvts ( 605 vts , evts , FALSE , _timeout , FALSE); 606 i( db_p -> fished ) { 607 t = 0; 608 out ; 610 `LOCK_MUTEX ( db_p -> mux ); 617 i( t > WSA_WAIT_EVENT_0 && 618 t < WSA_WAIT_EVENT_0 + vts ) { 619 i = t - WSA_WAIT_EVENT_0 ) { 624 i(( t = `WSAEnumNwkEvts ( 625 db_p -> li_fd , li_evt , 626 & t_evts )= SOCKET_ERROR ) { 627 t = t_o ; 628 uock ; 630 `DB_ASSERT ( v , 631 t_evts . lNwkEvts & FD_ACCEPT ); 632 i(( t = t_evts . iECode [ FD_ACCEPT_BIT ]) 634 uock ; 635 i(( t = `__pmgr_ac ( v )) != 0) 636 uock ; 639 i( cis [ i ]-> e ! CONN_DEFUNCT && 640 ( t = `hd_comi ( v , 641 cis [ i ])) != 0) 642 uock ; 645 } i( t = WSA_WAIT_TIMEOUT ) { 646 i(( t = `__pmgr_check_timeouts ( v )) != 0) 647 uock ; 648 } i( t = WSA_WAIT_FAILED ) { 649 t = t_o ; 650 uock ; 654 uock : 655 `UNLOCK_MUTEX ( db_p -> mux ); 656 out : 657 i(! `CloHd ( li_evt && t == 0) 658 t = `GLaE (); 659 ( t ); 660 } } 663 $hd_comi ( v , cn ) 664 ENV * v ; 665 REPMGR_CONNECTION * cn ; 667 t ; 668 WSANETWORKEVENTS evts ; 670 i(( t = `WSAEnumNwkEvts ( cn -> fd , cn-> evt_obje , & evts )) 671 = SOCKET_ERROR ) { 672 `__db_r ( v , t_o , "EnumNetworkEvents"); 673 `STAT ( v -> p_hd -> gi -> m . _ci_dr ++); 674 t = DB_REP_UNAVAIL ; 675 r ; 678 i( cn -> e = CONN_CONNECTING ) { 679 i(( t = `fish_cg ( v , cn , & evts )) != 0) 680 r ; 682 i( evts . lNwkEvts & FD_CLOSE ) { 683 `__db_r ( v , 684 evts . iECode [ FD_CLOSE_BIT ], 686 `STAT ( v -> p_hd -> 687 gi -> m . _ci_dr ++); 688 t = DB_REP_UNAVAIL ; 689 r ; 692 i( evts . lNwkEvts & FD_WRITE ) { 693 i( evts . iECode [ FD_WRITE_BIT ] != 0) { 694 `__db_r ( v , 695 evts . iECode [ FD_WRITE_BIT ], 697 `STAT ( v -> p_hd -> 698 gi -> m . _ci_dr ++); 699 t = DB_REP_UNAVAIL ; 700 r ; 701 } i(( t = 702 `__pmgr_wre_some ( v , cn )) != 0) 703 r ; 706 i( evts . lNwkEvts & FD_READ ) { 707 i( evts . iECode [ FD_READ_BIT ] != 0) { 708 `__db_r ( v , 709 evts . iECode [ FD_READ_BIT ], 711 `STAT ( v -> p_hd -> 712 gi -> m . _ci_dr ++); 713 t = DB_REP_UNAVAIL ; 714 r ; 715 } i(( t = 716 `__pmgr_ad_om_se ( v , cn )) != 0) 717 r ; 721 r : 722 i( t = DB_REP_UNAVAIL ) 723 t = `__pmgr_bu_ci ( v , cn ); 724 ( t ); 725 } } 728 $fish_cg ( v , cn , evts ) 729 ENV * v ; 730 REPMGR_CONNECTION * cn ; 731 LPWSANETWORKEVENTS evts ; 733 DB_REP * db_p ; 734 u_t eid ; 736 t ; 739 i(!( evts -> lNwkEvts & FD_CONNECT )) 742 cn -> e = CONN_CONNECTED ; 744 i(( t = evts -> iECode [ FD_CONNECT_BIT ]) != 0) { 753 `__db_r ( v , t , "connecting"); 754 r ; 757 i( `WSAEvtSe ( cn -> fd , cn-> evt_obje , FD_READ | FD_CLOSE ) == 758 SOCKET_ERROR ) { 759 t = t_o ; 760 `__db_r ( v , t , "settingvent bits foreading"); 761 ( t ); 764 ( `__pmgr_o_vsi ( v , cn )); 766 r : 767 db_p = v -> p_hd ; 768 eid = cn ->eid; 769 `DB_ASSERT ( v , `IS_VALID_EID ( eid )); 771 i( `ADDR_LIST_NEXT (& `SITE_FROM_EID ( eid )-> t_addr = NULL ) { 772 `STAT ( db_p -> gi -> m . _c_ ++); 773 ( DB_REP_UNAVAIL ); 780 `DISABLE_CONNECTION ( cn ); 782 t = `__pmgr_c_se ( v , eid ); 783 `DB_ASSERT ( v , t ! DB_REP_UNAVAIL ); 784 ( t ); 785 } } @../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 (( 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 ENV * v ; 46 timev ; 48 `COMPQUIET ( ags , 0); 50 v = dbv ->env; 52 #ifde HAVE_VXWORKS 53 i( `cTaskIn () != 0) { 54 `__db_rx ( v , "Couldot initialize VxWorks RPC"); 55 ( ERROR ); 58 i( `RPC_ON ( dbv )) { 59 `__db_rx ( v , "Already setn RPC handle"); 60 ( EINVAL ); 66 i( = NULL ) { 67 i(( = `_ ((*) ho , DB_RPC_SERVERPROG , 68 DB_RPC_SERVERVERS , "t")= NULL ) { 69 `__db_rx ( v , `_r ((*) ho )); 70 ( DB_NOSERVER ); 72 i( tc != 0) { 73 . tv_c = tc ; 74 . tv_uc = 0; 75 () `_cڌ ( , CLSET_TIMEOUT , (*)& ); 78 = ( CLIENT *) ; 79 `F_SET ( dbv , DB_ENV_RPCCLIENT_GIVEN ); 81 dbv -> _hd = ; 83 ( `__db_v_ ( dbv , sc )); 84 } } 96 $__db_v_o_wp ( dbv , ags ) 97 DB_ENV * dbv ; 98 u_t32_t ags ; 100 t , t_t ; 102 t = `__db_v_o ( dbv , ags ); 103 t_t = `__db_esh ( dbv ); 104 `__db_v_deroy ( dbv ); 105 i( t =0 && t_t != 0) 106 t = t_t ; 107 ( t ); 108 } } 120 $__db_v_ݒ_wp ( dbv , home , ags , mode ) 121 DB_ENV * dbv ; 122 cڡ * home ; 123 u_t32_t ags ; 124 mode ; 126 ENV * v ; 127 t ; 129 v = dbv ->env; 131 i( `LF_ISSET ( DB_THREAD )) { 132 `__db_rx ( v , "DB_THREADotllowed on RPC clients"); 133 ( EINVAL ); 136 i(( t = `__v_cfig ( dbv , home , ags , mode )) != 0) 137 ( t ); 139 ( `__db_v_ݒ ( dbv , v -> db_home , ags , mode )); 140 } } 153 $__db_db_ݒ_wp ( dbp , tx , me , subdb , ty , ags , mode ) 154 DB * dbp ; 155 DB_TXN * tx ; 156 cڡ * me ; 157 cڡ * subdb ; 158 DBTYPE ty ; 159 u_t32_t ags ; 160 mode ; 162 ( `__db_db_ݒ ( dbp , tx , me , subdb , ty , ags , mode )); 163 } } 172 $__db_esh ( dbv ) 173 DB_ENV * dbv ; 175 CLIENT * ; 176 ENV * v ; 177 t ; 178 ** p ; 180 = ( CLIENT *) dbv -> _hd ; 181 v = dbv ->env; 183 t = 0; 184 i( v -> tx_hd ! NULL ) { 190 t = `__db_txn_o ( v ); 191 v -> tx_hd = NULL ; 193 i(! `F_ISSET ( dbv , DB_ENV_RPCCLIENT_GIVEN && ! NULL ) 194 `_deroy ( ); 195 dbv -> _hd = NULL ; 200 i( dbv -> db_log_d ! NULL ) 201 `__os_ ( v , dbv -> db_log_d ); 202 dbv -> db_log_d = NULL ; 203 i( dbv -> db_tmp_d ! NULL ) 204 `__os_ ( v , dbv -> db_tmp_d ); 205 dbv -> db_tmp_d = NULL ; 206 i( dbv -> db_da_d ! NULL ) { 207 p = dbv -> db_da_d ; *! NULL ; ++p) 208 `__os_ ( v , * p ); 209 `__os_ ( v , dbv -> db_da_d ); 210 dbv -> db_da_d = NULL ; 211 dbv -> da_xt = 0; 213 i( v -> db_home ! NULL ) { 214 `__os_ ( v ,nv-> db_home ); 215 v -> db_home = NULL ; 217 ( t ); 218 } } 229 $__db_tcy ( v , dbt , da , n , memp , memsize ) 230 ENV * v ; 231 DBT * dbt ; 232 * da ; 233 u_t32_t n ; 234 ** memp ; 235 u_t32_t * memsize ; 237 u_t32_t ig_ags ; 238 t ; 246 ig_ags = dbt -> ags ; 247 `F_CLR ( dbt , DB_DBT_PARTIAL ); 248 i( dbt -> da ! NULL && dbt-> size = n && 249 `memcmp ( dbt -> da , da, n ) == 0) 250 t = 0; 252 t = `__db_tcy ( v , dbt , da , n , memp , memsize ); 253 dbt -> ags = ig_ags ; 254 ( t ); 255 } } 262 $__db_txn_o ( v ) 263 ENV * v ; 265 DB_TXN * tx ; 266 DB_TXNMGR * tmg ; 267 t ; 269 t = 0; 270 tmg = v -> tx_hd ; 279 ( tx = `TAILQ_FIRST (& tmg -> txn_cha )! NULL ) 280 `__db_txn_d ( tx ); 282 `__os_ ( v , tmg ); 283 ( t ); 284 } } 294 $__db_txn_d ( tx ) 295 DB_TXN * tx ; 297 DB_TXN * kids ; 298 DB_TXNMGR * mgr ; 299 ENV * v ; 301 mgr = tx -> mg ; 302 v = mgr ->env; 307 kids = `TAILQ_FIRST (& tx ->kids); 308 kids ! NULL ; 309 kids = `TAILQ_FIRST (& tx ->kids)) 310 `__db_txn_d ( kids ); 318 i( tx -> ! NULL ) 319 `TAILQ_REMOVE (& tx -> -> kids ,x, klks ); 320 `TAILQ_REMOVE (& mgr -> txn_cha , tx , lks ); 321 `__os_ ( v , tx ); 322 } } 331 $__db_txn_tup ( v , txn , , id ) 332 ENV * v ; 333 DB_TXN * txn ; 334 DB_TXN * ; 335 u_t32_t id ; 337 txn -> mg = v -> tx_hd ; 338 txn -> =arent; 339 txn -> txnid = id ; 350 `TAILQ_INSERT_TAIL (& txn -> mg -> txn_cha ,xn, lks ); 352 `TAILQ_INIT (& txn -> kids ); 354 i( ! NULL ) 355 `TAILQ_INSERT_HEAD (& -> kids , txn , klks ); 357 `__db_txn_ ( txn ); 359 txn -> ags = TXN_MALLOC ; 360 } } 367 $__db_c_deroy ( dbc ) 368 DBC * dbc ; 370 DB * dbp ; 371 ENV * v ; 373 dbp = dbc ->dbp; 374 v = dbc ->env; 376 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 378 i( dbc -> my_rskey . da ! NULL ) 379 `__os_ ( v , dbc -> my_rskey . da ); 380 i( dbc -> my_rkey . da ! NULL ) 381 `__os_ ( v , dbc -> my_rkey . da ); 382 i( dbc -> my_rda . da ! NULL ) 383 `__os_ ( v , dbc -> my_rda . da ); 384 `__os_ ( NULL , dbc ); 387 } } 396 $__db_c_esh ( dbc ) 397 DBC * dbc ; 399 DB * dbp ; 401 dbp = dbc ->dbp; 402 dbc -> ags = 0; 403 dbc -> _id = 0; 409 i( dbp ! NULL ) { 410 `TAILQ_REMOVE (& dbp -> aive_queue , dbc , lks ); 411 `TAILQ_INSERT_TAIL (& dbp -> _queue , dbc , lks ); 413 } } 422 $__db_c_tup ( _id , dbp , db ) 423 u_t _id ; 424 DB * dbp ; 425 DBC ** db ; 427 DBC * dbc , tmpdbc ; 428 t ; 430 i(( dbc = `TAILQ_FIRST (& dbp -> _queue )! NULL ) 431 `TAILQ_REMOVE (& dbp -> _queue , dbc , lks ); 433 i(( t = 434 `__os_oc ( dbp -> v , 1, ( DBC ), & dbc )) != 0) { 439 tmpdbc . dbp = NULL ; 440 tmpdbc . _id = cl_id; 441 () `__db_dbc_o (& tmpdbc ); 442 ( t ); 445 `__db_dbc_ ( dbc ); 452 dbc -> am_deroy = __db_c_deroy ; 455 dbc -> _id = cl_id; 456 dbc -> dbv = dbp ->dbenv; 457 dbc -> v = dbp ->env; 458 dbc -> dbp = dbp; 459 `TAILQ_INSERT_TAIL (& dbp -> aive_queue , dbc , lks ); 460 * db = dbc ; 462 } } 471 $__db_dbo_comm ( dbp ) 472 DB * dbp ; 474 DBC * dbc ; 475 ENV * v ; 476 t , t_t ; 478 v = dbp ->env; 489 t = 0; 490 ( dbc = `TAILQ_FIRST (& dbp -> aive_queue )! NULL ) 491 `__db_c_esh ( dbc ); 492 ( dbc = `TAILQ_FIRST (& dbp -> _queue )! NULL ) 493 i(( t_t = `__db_c_deroy ( dbc )!0 && t == 0) 494 t = t_t ; 496 `TAILQ_INIT (& dbp -> _queue ); 497 `TAILQ_INIT (& dbp -> aive_queue ); 499 i( dbp -> my_rskey . da ! NULL ) 500 `__os_ ( v , dbp -> my_rskey . da ); 501 i( dbp -> my_rkey . da ! NULL ) 502 `__os_ ( v , dbp -> my_rkey . da ); 503 i( dbp -> my_rda . da ! NULL ) 504 `__os_ ( v , dbp -> my_rda . da ); 506 `memt ( dbp , CLEAR_BYTE , (*dbp)); 507 `__os_ ( NULL , dbp ); 508 ( t ); 509 } } @../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 = NULL ? NULL : dbv-> v , 22 ( DB_NOSERVER ); 23 } } 32 $__db_dbv_g ( dbv ) 33 DB_ENV * dbv ; 35 `__db_rx ( dbv = NULL ? NULL : dbv-> v , 37 ( DB_OPNOTSUP ); 38 } } 45 $__db_dbp_g ( dbp ) 46 DB * dbp ; 48 ( `__db_dbv_g ( dbp -> dbv )); 49 } } 56 $__db_txn_g ( txn ) 57 DB_TXN * txn ; 59 ( `__db_dbv_g ( txn -> mg -> v -> dbv )); 60 } } 66 $__db_v_ ( dbv , timeout ) 67 DB_ENV * dbv ; 68 timeout ; 70 CLIENT * ; 71 __v__msg msg ; 72 __v__y * yp = NULL ; 73 t ; 75 t = 0; 76 i( dbv = NULL || ! `RPC_ON (dbenv)) 77 ( `__db_norv ( dbv )); 79 = ( CLIENT *) dbv -> _hd ; 81 msg . timeout = ( u_t )timeout; 83 yp = `__db_v__4007 (& msg , ); 84 i( yp = NULL ) { 85 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 86 t = DB_NOSERVER ; 87 out ; 89 t = `__db_v__t ( dbv , timeout , yp ); 90 out : 91 i( yp ! NULL ) 92 `xdr_ (( xdroc_t ) xdr___v__y , (*) yp ); 93 ( t ); 94 } } 100 $__db_v_cdsgroup_beg ( dbv , txp ) 101 DB_ENV * dbv ; 102 DB_TXN ** txp ; 104 CLIENT * ; 105 __v_cdsgroup_beg_msg msg ; 106 __v_cdsgroup_beg_y * yp = NULL ; 107 t ; 109 t = 0; 110 i( dbv = NULL || ! `RPC_ON (dbenv)) 111 ( `__db_norv ( dbv )); 113 = ( CLIENT *) dbv -> _hd ; 115 msg . dbv_id = dbv -> _id ; 117 yp = `__db_v_cdsgroup_beg_4007 (& msg , ); 118 i( yp = NULL ) { 119 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 120 t = DB_NOSERVER ; 121 out ; 123 t = `__db_v_cdsgroup_beg_t ( dbv , txp , yp ); 124 out : 125 i( yp ! NULL ) 126 `xdr_ (( xdroc_t ) xdr___v_cdsgroup_beg_y , (*) yp ); 127 ( t ); 128 } } 134 $__db_v_o ( dbv , ags ) 135 DB_ENV * dbv ; 136 u_t32_t ags ; 138 CLIENT * ; 139 __v_o_msg msg ; 140 __v_o_y * yp = NULL ; 141 t ; 143 t = 0; 144 i( dbv = NULL || ! `RPC_ON (dbenv)) 145 ( `__db_norv ( dbv )); 147 = ( CLIENT *) dbv -> _hd ; 149 msg . dbv_id = dbv -> _id ; 150 msg . ags = ( u_t )flags; 152 yp = `__db_v_o_4007 (& msg , ); 153 i( yp = NULL ) { 154 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 155 t = DB_NOSERVER ; 156 out ; 158 t = yp -> us ; 159 out : 160 i( yp ! NULL ) 161 `xdr_ (( xdroc_t ) xdr___v_o_y , (*) yp ); 162 ( t ); 163 } } 170 $__db_v_dbmove ( dbv , tx , me , subdb , ags ) 171 DB_ENV * dbv ; 172 DB_TXN * tx ; 173 cڡ * me ; 174 cڡ * subdb ; 175 u_t32_t ags ; 177 CLIENT * ; 178 __v_dbmove_msg msg ; 179 __v_dbmove_y * yp = NULL ; 180 t ; 182 t = 0; 183 i( dbv = NULL || ! `RPC_ON (dbenv)) 184 ( `__db_norv ( dbv )); 186 = ( CLIENT *) dbv -> _hd ; 188 msg . dbv_id = dbv -> _id ; 189 i( tx = NULL ) 190 msg . tx_id = 0; 192 msg . tx_id = tx -> txnid ; 193 i( me = NULL ) 194 msg . me = ""; 196 msg . me = (*)name; 197 i( subdb = NULL ) 198 msg . subdb = ""; 200 msg . subdb = (*)subdb; 201 msg . ags = ( u_t )flags; 203 yp = `__db_v_dbmove_4007 (& msg , ); 204 i( yp = NULL ) { 205 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 206 t = DB_NOSERVER ; 207 out ; 209 t = yp -> us ; 210 out : 211 i( yp ! NULL ) 212 `xdr_ (( xdroc_t ) xdr___v_dbmove_y , (*) yp ); 213 ( t ); 214 } } 221 $__db_v_dbme ( dbv , tx , me , subdb , wme , ags ) 222 DB_ENV * dbv ; 223 DB_TXN * tx ; 224 cڡ * me ; 225 cڡ * subdb ; 226 cڡ * wme ; 227 u_t32_t ags ; 229 CLIENT * ; 230 __v_dbme_msg msg ; 231 __v_dbme_y * yp = NULL ; 232 t ; 234 t = 0; 235 i( dbv = NULL || ! `RPC_ON (dbenv)) 236 ( `__db_norv ( dbv )); 238 = ( CLIENT *) dbv -> _hd ; 240 msg . dbv_id = dbv -> _id ; 241 i( tx = NULL ) 242 msg . tx_id = 0; 244 msg . tx_id = tx -> txnid ; 245 i( me = NULL ) 246 msg . me = ""; 248 msg . me = (*)name; 249 i( subdb = NULL ) 250 msg . subdb = ""; 252 msg . subdb = (*)subdb; 253 i( wme = NULL ) 254 msg . wme = ""; 256 msg . wme = (*)newname; 257 msg . ags = ( u_t )flags; 259 yp = `__db_v_dbme_4007 (& msg , ); 260 i( yp = NULL ) { 261 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 262 t = DB_NOSERVER ; 263 out ; 265 t = yp -> us ; 266 out : 267 i( yp ! NULL ) 268 `xdr_ (( xdroc_t ) xdr___v_dbme_y , (*) yp ); 269 ( t ); 270 } } 277 $__db_v_g_chesize ( dbv , gby , by , nch ) 278 DB_ENV * dbv ; 279 u_t32_t * gby ; 280 u_t32_t * by ; 281 * nch ; 283 CLIENT * ; 284 __v_g_chesize_msg msg ; 285 __v_g_chesize_y * yp = NULL ; 286 t ; 288 t = 0; 289 i( dbv = NULL || ! `RPC_ON (dbenv)) 290 ( `__db_norv ( dbv )); 292 = ( CLIENT *) dbv -> _hd ; 294 msg . dbv_id = dbv -> _id ; 296 yp = `__db_v_g_chesize_4007 (& msg , ); 297 i( yp = NULL ) { 298 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 299 t = DB_NOSERVER ; 300 out ; 302 t = yp -> us ; 303 i( gby ! NULL ) 304 * gby = ( u_t32_t ) yp -> gbys ; 305 i( by ! NULL ) 306 * by = ( u_t32_t ) yp -> bys ; 307 i( nch ! NULL ) 308 * nch = () yp -> nche ; 309 out : 310 i( yp ! NULL ) 311 `xdr_ (( xdroc_t ) xdr___v_g_chesize_y , (*) yp ); 312 ( t ); 313 } } 319 $__db_v_g_y_ags ( dbv , ag ) 320 DB_ENV * dbv ; 321 u_t32_t * ag ; 323 CLIENT * ; 324 __v_g_y_ags_msg msg ; 325 __v_g_y_ags_y * yp = NULL ; 326 t ; 328 t = 0; 329 i( dbv = NULL || ! `RPC_ON (dbenv)) 330 ( `__db_norv ( dbv )); 332 = ( CLIENT *) dbv -> _hd ; 334 msg . dbv_id = dbv -> _id ; 336 yp = `__db_v_g_y_ags_4007 (& msg , ); 337 i( yp = NULL ) { 338 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 339 t = DB_NOSERVER ; 340 out ; 342 t = yp -> us ; 343 i( ag ! NULL ) 344 * ag = ( u_t32_t ) yp -> ags ; 345 out : 346 i( yp ! NULL ) 347 `xdr_ (( xdroc_t ) xdr___v_g_y_ags_y , (*) yp ); 348 ( t ); 349 } } 355 $__db_v_g_ags ( dbv , ag ) 356 DB_ENV * dbv ; 357 u_t32_t * ag ; 359 CLIENT * ; 360 __v_g_ags_msg msg ; 361 __v_g_ags_y * yp = NULL ; 362 t ; 364 t = 0; 365 i( dbv = NULL || ! `RPC_ON (dbenv)) 366 ( `__db_norv ( dbv )); 368 = ( CLIENT *) dbv -> _hd ; 370 msg . dbv_id = dbv -> _id ; 372 yp = `__db_v_g_ags_4007 (& msg , ); 373 i( yp = NULL ) { 374 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 375 t = DB_NOSERVER ; 376 out ; 378 t = yp -> us ; 379 i( ag ! NULL ) 380 * ag = ( u_t32_t ) yp -> ags ; 381 out : 382 i( yp ! NULL ) 383 `xdr_ (( xdroc_t ) xdr___v_g_ags_y , (*) yp ); 384 ( t ); 385 } } 391 $__db_v_g_home ( dbv , hom ) 392 DB_ENV * dbv ; 393 cڡ * * hom ; 395 CLIENT * ; 396 __v_g_home_msg msg ; 397 __v_g_home_y * yp = NULL ; 398 t ; 400 t = 0; 401 i( dbv = NULL || ! `RPC_ON (dbenv)) 402 ( `__db_norv ( dbv )); 404 = ( CLIENT *) dbv -> _hd ; 406 msg . dbv_id = dbv -> _id ; 408 yp = `__db_v_g_home_4007 (& msg , ); 409 i( yp = NULL ) { 410 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 411 t = DB_NOSERVER ; 412 out ; 414 t = yp -> us ; 415 i( hom ! NULL ) 416 * hom = (cڡ *) yp -> home ; 417 out : 418 i( yp ! NULL ) 419 `xdr_ (( xdroc_t ) xdr___v_g_home_y , (*) yp ); 420 ( t ); 421 } } 427 $__db_v_g_ݒ_ags ( dbv , ag ) 428 DB_ENV * dbv ; 429 u_t32_t * ag ; 431 CLIENT * ; 432 __v_g_ݒ_ags_msg msg ; 433 __v_g_ݒ_ags_y * yp = NULL ; 434 t ; 436 t = 0; 437 i( dbv = NULL || ! `RPC_ON (dbenv)) 438 ( `__db_norv ( dbv )); 440 = ( CLIENT *) dbv -> _hd ; 442 msg . dbv_id = dbv -> _id ; 444 yp = `__db_v_g_ݒ_ags_4007 (& msg , ); 445 i( yp = NULL ) { 446 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 447 t = DB_NOSERVER ; 448 out ; 450 t = yp -> us ; 451 i( ag ! NULL ) 452 * ag = ( u_t32_t ) yp -> ags ; 453 out : 454 i( yp ! NULL ) 455 `xdr_ (( xdroc_t ) xdr___v_g_ݒ_ags_y , (*) yp ); 456 ( t ); 457 } } 463 $__db_v_ݒ ( dbv , home , ags , mode ) 464 DB_ENV * dbv ; 465 cڡ * home ; 466 u_t32_t ags ; 467 mode ; 469 CLIENT * ; 470 __v_ݒ_msg msg ; 471 __v_ݒ_y * yp = NULL ; 472 t ; 474 t = 0; 475 i( dbv = NULL || ! `RPC_ON (dbenv)) 476 ( `__db_norv ( dbv )); 478 = ( CLIENT *) dbv -> _hd ; 480 msg . dbv_id = dbv -> _id ; 481 i( home = NULL ) 482 msg . home = ""; 484 msg . home = (*)home; 485 msg . ags = ( u_t )flags; 486 msg . mode = ( u_t )mode; 488 yp = `__db_v_ݒ_4007 (& msg , ); 489 i( yp = NULL ) { 490 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 491 t = DB_NOSERVER ; 492 out ; 494 t = `__db_v_ݒ_t ( dbv , home , ags , mode , yp ); 495 out : 496 i( yp ! NULL ) 497 `xdr_ (( xdroc_t ) xdr___v_ݒ_y , (*) yp ); 498 ( t ); 499 } } 505 $__db_v_move ( dbv , home , ags ) 506 DB_ENV * dbv ; 507 cڡ * home ; 508 u_t32_t ags ; 510 CLIENT * ; 511 __v_move_msg msg ; 512 __v_move_y * yp = NULL ; 513 t ; 515 t = 0; 516 i( dbv = NULL || ! `RPC_ON (dbenv)) 517 ( `__db_norv ( dbv )); 519 = ( CLIENT *) dbv -> _hd ; 521 msg . dbv_id = dbv -> _id ; 522 i( home = NULL ) 523 msg . home = ""; 525 msg . home = (*)home; 526 msg . ags = ( u_t )flags; 528 yp = `__db_v_move_4007 (& msg , ); 529 i( yp = NULL ) { 530 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 531 t = DB_NOSERVER ; 532 out ; 534 t = `__db_v_move_t ( dbv , home , ags , yp ); 535 out : 536 i( yp ! NULL ) 537 `xdr_ (( xdroc_t ) xdr___v_move_y , (*) yp ); 538 ( t ); 539 } } 546 $__db_v_t_chesize ( dbv , gbys , bys , nche ) 547 DB_ENV * dbv ; 548 u_t32_t gbys ; 549 u_t32_t bys ; 550 nche ; 552 CLIENT * ; 553 __v_t_chesize_msg msg ; 554 __v_t_chesize_y * yp = NULL ; 555 t ; 557 t = 0; 558 i( dbv = NULL || ! `RPC_ON (dbenv)) 559 ( `__db_norv ( dbv )); 561 = ( CLIENT *) dbv -> _hd ; 563 msg . dbv_id = dbv -> _id ; 564 msg . gbys = ( u_t )gbytes; 565 msg . bys = ( u_t )bytes; 566 msg . nche = ( u_t )ncache; 568 yp = `__db_v_t_chesize_4007 (& msg , ); 569 i( yp = NULL ) { 570 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 571 t = DB_NOSERVER ; 572 out ; 574 t = yp -> us ; 575 out : 576 i( yp ! NULL ) 577 `xdr_ (( xdroc_t ) xdr___v_t_chesize_y , (*) yp ); 578 ( t ); 579 } } 585 $__db_v_t_y ( dbv , sswd , ags ) 586 DB_ENV * dbv ; 587 cڡ * sswd ; 588 u_t32_t ags ; 590 CLIENT * ; 591 __v_t_y_msg msg ; 592 __v_t_y_y * yp = NULL ; 593 t ; 595 t = 0; 596 i( dbv = NULL || ! `RPC_ON (dbenv)) 597 ( `__db_norv ( dbv )); 599 = ( CLIENT *) dbv -> _hd ; 601 msg . dbv_id = dbv -> _id ; 602 i( sswd = NULL ) 603 msg . sswd = ""; 605 msg . sswd = (*)passwd; 606 msg . ags = ( u_t )flags; 608 yp = `__db_v_t_y_4007 (& msg , ); 609 i( yp = NULL ) { 610 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 611 t = DB_NOSERVER ; 612 out ; 614 t = yp -> us ; 615 out : 616 i( yp ! NULL ) 617 `xdr_ (( xdroc_t ) xdr___v_t_y_y , (*) yp ); 618 ( t ); 619 } } 625 $__db_v_t_ags ( dbv , ags , off ) 626 DB_ENV * dbv ; 627 u_t32_t ags ; 628 off ; 630 CLIENT * ; 631 __v_t_ags_msg msg ; 632 __v_t_ags_y * yp = NULL ; 633 t ; 635 t = 0; 636 i( dbv = NULL || ! `RPC_ON (dbenv)) 637 ( `__db_norv ( dbv )); 639 = ( CLIENT *) dbv -> _hd ; 641 msg . dbv_id = dbv -> _id ; 642 msg . ags = ( u_t )flags; 643 msg . off = ( u_t )onoff; 645 yp = `__db_v_t_ags_4007 (& msg , ); 646 i( yp = NULL ) { 647 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 648 t = DB_NOSERVER ; 649 out ; 651 t = yp -> us ; 652 out : 653 i( yp ! NULL ) 654 `xdr_ (( xdroc_t ) xdr___v_t_ags_y , (*) yp ); 655 ( t ); 656 } } 663 $__db_v_txn_beg ( dbv , , txp , ags ) 664 DB_ENV * dbv ; 665 DB_TXN * ; 666 DB_TXN ** txp ; 667 u_t32_t ags ; 669 CLIENT * ; 670 __v_txn_beg_msg msg ; 671 __v_txn_beg_y * yp = NULL ; 672 t ; 674 t = 0; 675 i( dbv = NULL || ! `RPC_ON (dbenv)) 676 ( `__db_norv ( dbv )); 678 = ( CLIENT *) dbv -> _hd ; 680 msg . dbv_id = dbv -> _id ; 681 i( = NULL ) 682 msg . _id = 0; 684 msg . _id = -> txnid ; 685 msg . ags = ( u_t )flags; 687 yp = `__db_v_txn_beg_4007 (& msg , ); 688 i( yp = NULL ) { 689 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 690 t = DB_NOSERVER ; 691 out ; 693 t = `__db_v_txn_beg_t ( dbv , , txp , ags , yp ); 694 out : 695 i( yp ! NULL ) 696 `xdr_ (( xdroc_t ) xdr___v_txn_beg_y , (*) yp ); 697 ( t ); 698 } } 705 $__db_v_txn_cov ( dbv , li , cou , , ags ) 706 DB_ENV * dbv ; 707 DB_PREPLIST * li ; 708 cou ; 709 * ; 710 u_t32_t ags ; 712 CLIENT * ; 713 __v_txn_cov_msg msg ; 714 __v_txn_cov_y * yp = NULL ; 715 t ; 717 t = 0; 718 i( dbv = NULL || ! `RPC_ON (dbenv)) 719 ( `__db_norv ( dbv )); 721 = ( CLIENT *) dbv -> _hd ; 723 msg . dbv_id = dbv -> _id ; 724 msg . cou = ( u_t )count; 725 msg . ags = ( u_t )flags; 727 yp = `__db_v_txn_cov_4007 (& msg , ); 728 i( yp = NULL ) { 729 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 730 t = DB_NOSERVER ; 731 out ; 733 t = `__db_v_txn_cov_t ( dbv , li , cou , , ags , yp ); 734 out : 735 i( yp ! NULL ) 736 `xdr_ (( xdroc_t ) xdr___v_txn_cov_y , (*) yp ); 737 ( t ); 738 } } 744 $__db_db_ ( dbp , dbv , ags ) 745 DB * dbp ; 746 DB_ENV * dbv ; 747 u_t32_t ags ; 749 CLIENT * ; 750 __db__msg msg ; 751 __db__y * yp = NULL ; 752 t ; 754 t = 0; 755 i( dbv = NULL || ! `RPC_ON (dbenv)) 756 ( `__db_norv ( dbv )); 758 = ( CLIENT *) dbv -> _hd ; 760 msg . dbv_id = dbv -> _id ; 761 msg . ags = ( u_t )flags; 763 yp = `__db_db__4007 (& msg , ); 764 i( yp = NULL ) { 765 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 766 t = DB_NOSERVER ; 767 out ; 769 t = `__db_db__t ( dbp , dbv , ags , yp ); 770 out : 771 i( yp ! NULL ) 772 `xdr_ (( xdroc_t ) xdr___db__y , (*) yp ); 773 ( t ); 774 } } 781 $__db_db_assoc ( dbp , tx , sdbp , func0 , ags ) 782 DB * dbp ; 783 DB_TXN * tx ; 784 DB * sdbp ; 785 (* func0 `__P (( DB *, cڡ DBT *, const DBT *, DBT *)); 786 u_t32_t ags ; 788 CLIENT * ; 789 __db_assoc_msg msg ; 790 __db_assoc_y * yp = NULL ; 791 t ; 792 DB_ENV * dbv ; 794 t = 0; 795 dbv = dbp ->dbenv; 796 i( dbv = NULL || ! `RPC_ON (dbenv)) 797 ( `__db_norv ( NULL )); 799 = ( CLIENT *) dbv -> _hd ; 801 i( func0 ! NULL ) { 802 `__db_rx ( dbv -> v , "User functionsot supported in RPC"); 803 ( EINVAL ); 805 i( dbp = NULL ) 806 msg . dbp_id = 0; 808 msg . dbp_id = dbp -> _id ; 809 i( tx = NULL ) 810 msg . tx_id = 0; 812 msg . tx_id = tx -> txnid ; 813 i( sdbp = NULL ) 814 msg . sdbp_id = 0; 816 msg . sdbp_id = sdbp -> _id ; 817 msg . ags = ( u_t )flags; 819 yp = `__db_db_assoc_4007 (& msg , ); 820 i( yp = NULL ) { 821 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 822 t = DB_NOSERVER ; 823 out ; 825 t = yp -> us ; 826 out : 827 i( yp ! NULL ) 828 `xdr_ (( xdroc_t ) xdr___db_assoc_y , (*) yp ); 829 ( t ); 830 } } 836 $__db_db_o ( dbp , ags ) 837 DB * dbp ; 838 u_t32_t ags ; 840 CLIENT * ; 841 __db_o_msg msg ; 842 __db_o_y * yp = NULL ; 843 t ; 844 DB_ENV * dbv ; 846 t = 0; 847 dbv = dbp ->dbenv; 848 i( dbv = NULL || ! `RPC_ON (dbenv)) 849 ( `__db_norv ( NULL )); 851 = ( CLIENT *) dbv -> _hd ; 853 i( dbp = NULL ) 854 msg . dbp_id = 0; 856 msg . dbp_id = dbp -> _id ; 857 msg . ags = ( u_t )flags; 859 yp = `__db_db_o_4007 (& msg , ); 860 i( yp = NULL ) { 861 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 862 t = DB_NOSERVER ; 863 out ; 865 t = `__db_db_o_t ( dbp , ags , yp ); 866 out : 867 i( yp ! NULL ) 868 `xdr_ (( xdroc_t ) xdr___db_o_y , (*) yp ); 869 ( t ); 870 } } 876 $__db_db_curs ( dbp , tx , dbp , ags ) 877 DB * dbp ; 878 DB_TXN * tx ; 879 DBC ** dbp ; 880 u_t32_t ags ; 882 CLIENT * ; 883 __db_curs_msg msg ; 884 __db_curs_y * yp = NULL ; 885 t ; 886 DB_ENV * dbv ; 888 t = 0; 889 dbv = dbp ->dbenv; 890 i( dbv = NULL || ! `RPC_ON (dbenv)) 891 ( `__db_norv ( NULL )); 893 = ( CLIENT *) dbv -> _hd ; 895 i( dbp = NULL ) 896 msg . dbp_id = 0; 898 msg . dbp_id = dbp -> _id ; 899 i( tx = NULL ) 900 msg . tx_id = 0; 902 msg . tx_id = tx -> txnid ; 903 msg . ags = ( u_t )flags; 905 yp = `__db_db_curs_4007 (& msg , ); 906 i( yp = NULL ) { 907 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 908 t = DB_NOSERVER ; 909 out ; 911 t = `__db_db_curs_t ( dbp , tx , dbp , ags , yp ); 912 out : 913 i( yp ! NULL ) 914 `xdr_ (( xdroc_t ) xdr___db_curs_y , (*) yp ); 915 ( t ); 916 } } 922 $__db_db_d ( dbp , tx , key , ags ) 923 DB * dbp ; 924 DB_TXN * tx ; 925 DBT * key ; 926 u_t32_t ags ; 928 CLIENT * ; 929 __db_d_msg msg ; 930 __db_d_y * yp = NULL ; 931 t ; 932 DB_ENV * dbv ; 934 t = 0; 935 dbv = dbp ->dbenv; 936 i( dbv = NULL || ! `RPC_ON (dbenv)) 937 ( `__db_norv ( NULL )); 939 = ( CLIENT *) dbv -> _hd ; 941 i( dbp = NULL ) 942 msg . dbp_id = 0; 944 msg . dbp_id = dbp -> _id ; 945 i( tx = NULL ) 946 msg . tx_id = 0; 948 msg . tx_id = tx -> txnid ; 949 msg . keydn = key -> dn ; 950 msg . keydoff = key -> doff ; 951 msg . keyun = key -> un ; 952 msg . keyags = key -> ags ; 953 msg . keyda . keyda_v = key -> da ; 954 msg . keyda . keyda_n = key -> size ; 955 msg . ags = ( u_t )flags; 957 yp = `__db_db_d_4007 (& msg , ); 958 i( yp = NULL ) { 959 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 960 t = DB_NOSERVER ; 961 out ; 963 t = yp -> us ; 964 out : 965 i( yp ! NULL ) 966 `xdr_ (( xdroc_t ) xdr___db_d_y , (*) yp ); 967 ( t ); 968 } } 974 $__db_db_g ( dbp , tx , key , da , ags ) 975 DB * dbp ; 976 DB_TXN * tx ; 977 DBT * key ; 978 DBT * da ; 979 u_t32_t ags ; 981 CLIENT * ; 982 __db_g_msg msg ; 983 __db_g_y * yp = NULL ; 984 t ; 985 DB_ENV * dbv ; 987 t = 0; 988 dbv = dbp ->dbenv; 989 i( dbv = NULL || ! `RPC_ON (dbenv)) 990 ( `__db_norv ( NULL )); 992 = ( CLIENT *) dbv -> _hd ; 994 i( dbp = NULL ) 995 msg . dbp_id = 0; 997 msg . dbp_id = dbp -> _id ; 998 i( tx = NULL ) 999 msg . tx_id = 0; 1001 msg . tx_id = tx -> txnid ; 1002 msg . keydn = key -> dn ; 1003 msg . keydoff = key -> doff ; 1004 msg . keyun = key -> un ; 1005 msg . keyags = key -> ags ; 1006 msg . keyda . keyda_v = key -> da ; 1007 msg . keyda . keyda_n = key -> size ; 1008 msg . dadn = da -> dn ; 1009 msg . dadoff = da -> doff ; 1010 msg . daun = da -> un ; 1011 msg . daags = da -> ags ; 1012 msg . dada . dada_v = da ->data; 1013 msg . dada . dada_n = da -> size ; 1014 msg . ags = ( u_t )flags; 1016 yp = `__db_db_g_4007 (& msg , ); 1017 i( yp = NULL ) { 1018 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1019 t = DB_NOSERVER ; 1020 out ; 1022 t = `__db_db_g_t ( dbp , tx , key , da , ags , yp ); 1023 out : 1024 i( yp ! NULL ) 1025 `xdr_ (( xdroc_t ) xdr___db_g_y , (*) yp ); 1026 ( t ); 1027 } } 1033 $__db_db_g_bt_mkey ( dbp , mkeyp ) 1034 DB * dbp ; 1035 u_t32_t * mkeyp ; 1037 CLIENT * ; 1038 __db_g_bt_mkey_msg msg ; 1039 __db_g_bt_mkey_y * yp = NULL ; 1040 t ; 1041 DB_ENV * dbv ; 1043 t = 0; 1044 dbv = dbp ->dbenv; 1045 i( dbv = NULL || ! `RPC_ON (dbenv)) 1046 ( `__db_norv ( NULL )); 1048 = ( CLIENT *) dbv -> _hd ; 1050 i( dbp = NULL ) 1051 msg . dbp_id = 0; 1053 msg . dbp_id = dbp -> _id ; 1055 yp = `__db_db_g_bt_mkey_4007 (& msg , ); 1056 i( yp = NULL ) { 1057 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1058 t = DB_NOSERVER ; 1059 out ; 1061 t = yp -> us ; 1062 i( mkeyp ! NULL ) 1063 * mkeyp = ( u_t32_t ) yp -> mkey ; 1064 out : 1065 i( yp ! NULL ) 1066 `xdr_ (( xdroc_t ) xdr___db_g_bt_mkey_y , (*) yp ); 1067 ( t ); 1068 } } 1075 $__db_db_g_dbme ( dbp , fam , dbm ) 1076 DB * dbp ; 1077 cڡ * * fam ; 1078 cڡ * * dbm ; 1080 CLIENT * ; 1081 __db_g_dbme_msg msg ; 1082 __db_g_dbme_y * yp = NULL ; 1083 t ; 1084 DB_ENV * dbv ; 1086 t = 0; 1087 dbv = dbp ->dbenv; 1088 i( dbv = NULL || ! `RPC_ON (dbenv)) 1089 ( `__db_norv ( NULL )); 1091 = ( CLIENT *) dbv -> _hd ; 1093 i( dbp = NULL ) 1094 msg . dbp_id = 0; 1096 msg . dbp_id = dbp -> _id ; 1098 yp = `__db_db_g_dbme_4007 (& msg , ); 1099 i( yp = NULL ) { 1100 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1101 t = DB_NOSERVER ; 1102 out ; 1104 t = yp -> us ; 1105 i( fam ! NULL ) 1106 * fam = (cڡ *) yp -> fame ; 1107 i( dbm ! NULL ) 1108 * dbm = (cڡ *) yp -> dbme ; 1109 out : 1110 i( yp ! NULL ) 1111 `xdr_ (( xdroc_t ) xdr___db_g_dbme_y , (*) yp ); 1112 ( t ); 1113 } } 1119 $__db_db_g_y_ags ( dbp , ag ) 1120 DB * dbp ; 1121 u_t32_t * ag ; 1123 CLIENT * ; 1124 __db_g_y_ags_msg msg ; 1125 __db_g_y_ags_y * yp = NULL ; 1126 t ; 1127 DB_ENV * dbv ; 1129 t = 0; 1130 dbv = dbp ->dbenv; 1131 i( dbv = NULL || ! `RPC_ON (dbenv)) 1132 ( `__db_norv ( NULL )); 1134 = ( CLIENT *) dbv -> _hd ; 1136 i( dbp = NULL ) 1137 msg . dbp_id = 0; 1139 msg . dbp_id = dbp -> _id ; 1141 yp = `__db_db_g_y_ags_4007 (& msg , ); 1142 i( yp = NULL ) { 1143 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1144 t = DB_NOSERVER ; 1145 out ; 1147 t = yp -> us ; 1148 i( ag ! NULL ) 1149 * ag = ( u_t32_t ) yp -> ags ; 1150 out : 1151 i( yp ! NULL ) 1152 `xdr_ (( xdroc_t ) xdr___db_g_y_ags_y , (*) yp ); 1153 ( t ); 1154 } } 1160 $__db_db_g_ags ( dbp , ag ) 1161 DB * dbp ; 1162 u_t32_t * ag ; 1164 CLIENT * ; 1165 __db_g_ags_msg msg ; 1166 __db_g_ags_y * yp = NULL ; 1167 t ; 1168 DB_ENV * dbv ; 1170 t = 0; 1171 dbv = dbp ->dbenv; 1172 i( dbv = NULL || ! `RPC_ON (dbenv)) 1173 ( `__db_norv ( NULL )); 1175 = ( CLIENT *) dbv -> _hd ; 1177 i( dbp = NULL ) 1178 msg . dbp_id = 0; 1180 msg . dbp_id = dbp -> _id ; 1182 yp = `__db_db_g_ags_4007 (& msg , ); 1183 i( yp = NULL ) { 1184 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1185 t = DB_NOSERVER ; 1186 out ; 1188 t = yp -> us ; 1189 i( ag ! NULL ) 1190 * ag = ( u_t32_t ) yp -> ags ; 1191 out : 1192 i( yp ! NULL ) 1193 `xdr_ (( xdroc_t ) xdr___db_g_ags_y , (*) yp ); 1194 ( t ); 1195 } } 1201 $__db_db_g_h_f ( dbp , fp ) 1202 DB * dbp ; 1203 u_t32_t * fp ; 1205 CLIENT * ; 1206 __db_g_h_f_msg msg ; 1207 __db_g_h_f_y * yp = NULL ; 1208 t ; 1209 DB_ENV * dbv ; 1211 t = 0; 1212 dbv = dbp ->dbenv; 1213 i( dbv = NULL || ! `RPC_ON (dbenv)) 1214 ( `__db_norv ( NULL )); 1216 = ( CLIENT *) dbv -> _hd ; 1218 i( dbp = NULL ) 1219 msg . dbp_id = 0; 1221 msg . dbp_id = dbp -> _id ; 1223 yp = `__db_db_g_h_f_4007 (& msg , ); 1224 i( yp = NULL ) { 1225 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1226 t = DB_NOSERVER ; 1227 out ; 1229 t = yp -> us ; 1230 i( fp ! NULL ) 1231 * fp = ( u_t32_t ) yp -> f ; 1232 out : 1233 i( yp ! NULL ) 1234 `xdr_ (( xdroc_t ) xdr___db_g_h_f_y , (*) yp ); 1235 ( t ); 1236 } } 1242 $__db_db_g_h_m ( dbp , mp ) 1243 DB * dbp ; 1244 u_t32_t * mp ; 1246 CLIENT * ; 1247 __db_g_h_m_msg msg ; 1248 __db_g_h_m_y * yp = NULL ; 1249 t ; 1250 DB_ENV * dbv ; 1252 t = 0; 1253 dbv = dbp ->dbenv; 1254 i( dbv = NULL || ! `RPC_ON (dbenv)) 1255 ( `__db_norv ( NULL )); 1257 = ( CLIENT *) dbv -> _hd ; 1259 i( dbp = NULL ) 1260 msg . dbp_id = 0; 1262 msg . dbp_id = dbp -> _id ; 1264 yp = `__db_db_g_h_m_4007 (& msg , ); 1265 i( yp = NULL ) { 1266 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1267 t = DB_NOSERVER ; 1268 out ; 1270 t = yp -> us ; 1271 i( mp ! NULL ) 1272 * mp = ( u_t32_t ) yp -> m ; 1273 out : 1274 i( yp ! NULL ) 1275 `xdr_ (( xdroc_t ) xdr___db_g_h_m_y , (*) yp ); 1276 ( t ); 1277 } } 1283 $__db_db_g_ld ( dbp , ldp ) 1284 DB * dbp ; 1285 * ldp ; 1287 CLIENT * ; 1288 __db_g_ld_msg msg ; 1289 __db_g_ld_y * yp = NULL ; 1290 t ; 1291 DB_ENV * dbv ; 1293 t = 0; 1294 dbv = dbp ->dbenv; 1295 i( dbv = NULL || ! `RPC_ON (dbenv)) 1296 ( `__db_norv ( NULL )); 1298 = ( CLIENT *) dbv -> _hd ; 1300 i( dbp = NULL ) 1301 msg . dbp_id = 0; 1303 msg . dbp_id = dbp -> _id ; 1305 yp = `__db_db_g_ld_4007 (& msg , ); 1306 i( yp = NULL ) { 1307 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1308 t = DB_NOSERVER ; 1309 out ; 1311 t = yp -> us ; 1312 i( ldp ! NULL ) 1313 * ldp = () yp -> ld ; 1314 out : 1315 i( yp ! NULL ) 1316 `xdr_ (( xdroc_t ) xdr___db_g_ld_y , (*) yp ); 1317 ( t ); 1318 } } 1324 $__db_db_g_ݒ_ags ( dbp , ag ) 1325 DB * dbp ; 1326 u_t32_t * ag ; 1328 CLIENT * ; 1329 __db_g_ݒ_ags_msg msg ; 1330 __db_g_ݒ_ags_y * yp = NULL ; 1331 t ; 1332 DB_ENV * dbv ; 1334 t = 0; 1335 dbv = dbp ->dbenv; 1336 i( dbv = NULL || ! `RPC_ON (dbenv)) 1337 ( `__db_norv ( NULL )); 1339 = ( CLIENT *) dbv -> _hd ; 1341 i( dbp = NULL ) 1342 msg . dbp_id = 0; 1344 msg . dbp_id = dbp -> _id ; 1346 yp = `__db_db_g_ݒ_ags_4007 (& msg , ); 1347 i( yp = NULL ) { 1348 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1349 t = DB_NOSERVER ; 1350 out ; 1352 t = yp -> us ; 1353 i( ag ! NULL ) 1354 * ag = ( u_t32_t ) yp -> ags ; 1355 out : 1356 i( yp ! NULL ) 1357 `xdr_ (( xdroc_t ) xdr___db_g_ݒ_ags_y , (*) yp ); 1358 ( t ); 1359 } } 1365 $__db_db_g_gesize ( dbp , gesiz ) 1366 DB * dbp ; 1367 u_t32_t * gesiz ; 1369 CLIENT * ; 1370 __db_g_gesize_msg msg ; 1371 __db_g_gesize_y * yp = NULL ; 1372 t ; 1373 DB_ENV * dbv ; 1375 t = 0; 1376 dbv = dbp ->dbenv; 1377 i( dbv = NULL || ! `RPC_ON (dbenv)) 1378 ( `__db_norv ( NULL )); 1380 = ( CLIENT *) dbv -> _hd ; 1382 i( dbp = NULL ) 1383 msg . dbp_id = 0; 1385 msg . dbp_id = dbp -> _id ; 1387 yp = `__db_db_g_gesize_4007 (& msg , ); 1388 i( yp = NULL ) { 1389 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1390 t = DB_NOSERVER ; 1391 out ; 1393 t = yp -> us ; 1394 i( gesiz ! NULL ) 1395 * gesiz = ( u_t32_t ) yp -> gesize ; 1396 out : 1397 i( yp ! NULL ) 1398 `xdr_ (( xdroc_t ) xdr___db_g_gesize_y , (*) yp ); 1399 ( t ); 1400 } } 1406 $__db_db_g_iܙy ( dbp , iܙyp ) 1407 DB * dbp ; 1408 DB_CACHE_PRIORITY * iܙyp ; 1410 CLIENT * ; 1411 __db_g_iܙy_msg msg ; 1412 __db_g_iܙy_y * yp = NULL ; 1413 t ; 1414 DB_ENV * dbv ; 1416 t = 0; 1417 dbv = dbp ->dbenv; 1418 i( dbv = NULL || ! `RPC_ON (dbenv)) 1419 ( `__db_norv ( NULL )); 1421 = ( CLIENT *) dbv -> _hd ; 1423 i( dbp = NULL ) 1424 msg . dbp_id = 0; 1426 msg . dbp_id = dbp -> _id ; 1428 yp = `__db_db_g_iܙy_4007 (& msg , ); 1429 i( yp = NULL ) { 1430 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1431 t = DB_NOSERVER ; 1432 out ; 1434 t = yp -> us ; 1435 i( iܙyp ! NULL ) 1436 * iܙyp = ( DB_CACHE_PRIORITY ) yp -> iܙy ; 1437 out : 1438 i( yp ! NULL ) 1439 `xdr_ (( xdroc_t ) xdr___db_g_iܙy_y , (*) yp ); 1440 ( t ); 1441 } } 1447 $__db_db_g_q_exsize ( dbp , exsiz ) 1448 DB * dbp ; 1449 u_t32_t * exsiz ; 1451 CLIENT * ; 1452 __db_g_q_exsize_msg msg ; 1453 __db_g_q_exsize_y * yp = NULL ; 1454 t ; 1455 DB_ENV * dbv ; 1457 t = 0; 1458 dbv = dbp ->dbenv; 1459 i( dbv = NULL || ! `RPC_ON (dbenv)) 1460 ( `__db_norv ( NULL )); 1462 = ( CLIENT *) dbv -> _hd ; 1464 i( dbp = NULL ) 1465 msg . dbp_id = 0; 1467 msg . dbp_id = dbp -> _id ; 1469 yp = `__db_db_g_q_exsize_4007 (& msg , ); 1470 i( yp = NULL ) { 1471 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1472 t = DB_NOSERVER ; 1473 out ; 1475 t = yp -> us ; 1476 i( exsiz ! NULL ) 1477 * exsiz = ( u_t32_t ) yp -> exsize ; 1478 out : 1479 i( yp ! NULL ) 1480 `xdr_ (( xdroc_t ) xdr___db_g_q_exsize_y , (*) yp ); 1481 ( t ); 1482 } } 1488 $__db_db_g__dim ( dbp , dimp ) 1489 DB * dbp ; 1490 * dimp ; 1492 CLIENT * ; 1493 __db_g__dim_msg msg ; 1494 __db_g__dim_y * yp = NULL ; 1495 t ; 1496 DB_ENV * dbv ; 1498 t = 0; 1499 dbv = dbp ->dbenv; 1500 i( dbv = NULL || ! `RPC_ON (dbenv)) 1501 ( `__db_norv ( NULL )); 1503 = ( CLIENT *) dbv -> _hd ; 1505 i( dbp = NULL ) 1506 msg . dbp_id = 0; 1508 msg . dbp_id = dbp -> _id ; 1510 yp = `__db_db_g__dim_4007 (& msg , ); 1511 i( yp = NULL ) { 1512 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1513 t = DB_NOSERVER ; 1514 out ; 1516 t = yp -> us ; 1517 i( dimp ! NULL ) 1518 * dimp = () yp -> dim ; 1519 out : 1520 i( yp ! NULL ) 1521 `xdr_ (( xdroc_t ) xdr___db_g__dim_y , (*) yp ); 1522 ( t ); 1523 } } 1529 $__db_db_g__n ( dbp , ) 1530 DB * dbp ; 1531 u_t32_t * ; 1533 CLIENT * ; 1534 __db_g__n_msg msg ; 1535 __db_g__n_y * yp = NULL ; 1536 t ; 1537 DB_ENV * dbv ; 1539 t = 0; 1540 dbv = dbp ->dbenv; 1541 i( dbv = NULL || ! `RPC_ON (dbenv)) 1542 ( `__db_norv ( NULL )); 1544 = ( CLIENT *) dbv -> _hd ; 1546 i( dbp = NULL ) 1547 msg . dbp_id = 0; 1549 msg . dbp_id = dbp -> _id ; 1551 yp = `__db_db_g__n_4007 (& msg , ); 1552 i( yp = NULL ) { 1553 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1554 t = DB_NOSERVER ; 1555 out ; 1557 t = yp -> us ; 1558 i( ! NULL ) 1559 * = ( u_t32_t ) yp -> n ; 1560 out : 1561 i( yp ! NULL ) 1562 `xdr_ (( xdroc_t ) xdr___db_g__n_y , (*) yp ); 1563 ( t ); 1564 } } 1570 $__db_db_g__d ( dbp , dp ) 1571 DB * dbp ; 1572 * dp ; 1574 CLIENT * ; 1575 __db_g__d_msg msg ; 1576 __db_g__d_y * yp = NULL ; 1577 t ; 1578 DB_ENV * dbv ; 1580 t = 0; 1581 dbv = dbp ->dbenv; 1582 i( dbv = NULL || ! `RPC_ON (dbenv)) 1583 ( `__db_norv ( NULL )); 1585 = ( CLIENT *) dbv -> _hd ; 1587 i( dbp = NULL ) 1588 msg . dbp_id = 0; 1590 msg . dbp_id = dbp -> _id ; 1592 yp = `__db_db_g__d_4007 (& msg , ); 1593 i( yp = NULL ) { 1594 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1595 t = DB_NOSERVER ; 1596 out ; 1598 t = yp -> us ; 1599 i( dp ! NULL ) 1600 * dp = () yp -> d ; 1601 out : 1602 i( yp ! NULL ) 1603 `xdr_ (( xdroc_t ) xdr___db_g__d_y , (*) yp ); 1604 ( t ); 1605 } } 1611 $__db_db_jo ( dbp , curs , db , ags ) 1612 DB * dbp ; 1613 DBC ** curs ; 1614 DBC ** db ; 1615 u_t32_t ags ; 1617 CLIENT * ; 1618 __db_jo_msg msg ; 1619 __db_jo_y * yp = NULL ; 1620 t ; 1621 DB_ENV * dbv ; 1622 DBC ** cur ; 1623 cursi ; 1624 u_t32_t * cursq ; 1626 t = 0; 1627 dbv = dbp ->dbenv; 1628 i( dbv = NULL || ! `RPC_ON (dbenv)) 1629 ( `__db_norv ( NULL )); 1631 = ( CLIENT *) dbv -> _hd ; 1633 i( dbp = NULL ) 1634 msg . dbp_id = 0; 1636 msg . dbp_id = dbp -> _id ; 1637 cursi = 0, cur = curs ; *cursp != 0; cursi++, cursp++) 1639 msg . curs . curs_n = ( u_t ) cursi ; 1640 i(( t = `__os_oc ( dbv -> v , 1641 msg . curs . curs_n , ( u_t32_t ), &msg.curs. curs_v )) != 0) 1642 ( t ); 1643 cursq = msg . curs . curs_v , cur = curs; cursi --; cursq++, cursp++) 1644 * cursq = (* cur )-> _id ; 1645 msg . ags = ( u_t )flags; 1647 yp = `__db_db_jo_4007 (& msg , ); 1648 `__os_ ( dbv -> v , msg . curs . curs_v ); 1649 i( yp = NULL ) { 1650 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1651 t = DB_NOSERVER ; 1652 out ; 1654 t = `__db_db_jo_t ( dbp , curs , db , ags , yp ); 1655 out : 1656 i( yp ! NULL ) 1657 `xdr_ (( xdroc_t ) xdr___db_jo_y , (*) yp ); 1658 ( t ); 1659 } } 1666 $__db_db_key_nge ( dbp , tx , key , nge , ags ) 1667 DB * dbp ; 1668 DB_TXN * tx ; 1669 DBT * key ; 1670 DB_KEY_RANGE * nge ; 1671 u_t32_t ags ; 1673 CLIENT * ; 1674 __db_key_nge_msg msg ; 1675 __db_key_nge_y * yp = NULL ; 1676 t ; 1677 DB_ENV * dbv ; 1679 t = 0; 1680 dbv = dbp ->dbenv; 1681 i( dbv = NULL || ! `RPC_ON (dbenv)) 1682 ( `__db_norv ( NULL )); 1684 = ( CLIENT *) dbv -> _hd ; 1686 i( dbp = NULL ) 1687 msg . dbp_id = 0; 1689 msg . dbp_id = dbp -> _id ; 1690 i( tx = NULL ) 1691 msg . tx_id = 0; 1693 msg . tx_id = tx -> txnid ; 1694 msg . keydn = key -> dn ; 1695 msg . keydoff = key -> doff ; 1696 msg . keyun = key -> un ; 1697 msg . keyags = key -> ags ; 1698 msg . keyda . keyda_v = key -> da ; 1699 msg . keyda . keyda_n = key -> size ; 1700 msg . ags = ( u_t )flags; 1702 yp = `__db_db_key_nge_4007 (& msg , ); 1703 i( yp = NULL ) { 1704 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1705 t = DB_NOSERVER ; 1706 out ; 1708 t = `__db_db_key_nge_t ( dbp , tx , key , nge , ags , yp ); 1709 out : 1710 i( yp ! NULL ) 1711 `xdr_ (( xdroc_t ) xdr___db_key_nge_y , (*) yp ); 1712 ( t ); 1713 } } 1720 $__db_db_ݒ ( dbp , tx , me , subdb , ty , ags , mode ) 1721 DB * dbp ; 1722 DB_TXN * tx ; 1723 cڡ * me ; 1724 cڡ * subdb ; 1725 DBTYPE ty ; 1726 u_t32_t ags ; 1727 mode ; 1729 CLIENT * ; 1730 __db_ݒ_msg msg ; 1731 __db_ݒ_y * yp = NULL ; 1732 t ; 1733 DB_ENV * dbv ; 1735 t = 0; 1736 dbv = dbp ->dbenv; 1737 i( dbv = NULL || ! `RPC_ON (dbenv)) 1738 ( `__db_norv ( NULL )); 1740 = ( CLIENT *) dbv -> _hd ; 1742 i( dbp = NULL ) 1743 msg . dbp_id = 0; 1745 msg . dbp_id = dbp -> _id ; 1746 i( tx = NULL ) 1747 msg . tx_id = 0; 1749 msg . tx_id = tx -> txnid ; 1750 i( me = NULL ) 1751 msg . me = ""; 1753 msg . me = (*)name; 1754 i( subdb = NULL ) 1755 msg . subdb = ""; 1757 msg . subdb = (*)subdb; 1758 msg . ty = ( u_t )type; 1759 msg . ags = ( u_t )flags; 1760 msg . mode = ( u_t )mode; 1762 yp = `__db_db_ݒ_4007 (& msg , ); 1763 i( yp = NULL ) { 1764 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1765 t = DB_NOSERVER ; 1766 out ; 1768 t = `__db_db_ݒ_t ( dbp , tx , me , subdb , ty , ags , mode , yp ); 1769 out : 1770 i( yp ! NULL ) 1771 `xdr_ (( xdroc_t ) xdr___db_ݒ_y , (*) yp ); 1772 ( t ); 1773 } } 1780 $__db_db_pg ( dbp , tx , skey , pkey , da , ags ) 1781 DB * dbp ; 1782 DB_TXN * tx ; 1783 DBT * skey ; 1784 DBT * pkey ; 1785 DBT * da ; 1786 u_t32_t ags ; 1788 CLIENT * ; 1789 __db_pg_msg msg ; 1790 __db_pg_y * yp = NULL ; 1791 t ; 1792 DB_ENV * dbv ; 1794 t = 0; 1795 dbv = dbp ->dbenv; 1796 i( dbv = NULL || ! `RPC_ON (dbenv)) 1797 ( `__db_norv ( NULL )); 1799 = ( CLIENT *) dbv -> _hd ; 1801 i( dbp = NULL ) 1802 msg . dbp_id = 0; 1804 msg . dbp_id = dbp -> _id ; 1805 i( tx = NULL ) 1806 msg . tx_id = 0; 1808 msg . tx_id = tx -> txnid ; 1809 msg . skeydn = skey -> dn ; 1810 msg . skeydoff = skey -> doff ; 1811 msg . skeyun = skey -> un ; 1812 msg . skeyags = skey -> ags ; 1813 msg . skeyda . skeyda_v = skey -> da ; 1814 msg . skeyda . skeyda_n = skey -> size ; 1815 msg . pkeydn = pkey -> dn ; 1816 msg . pkeydoff = pkey -> doff ; 1817 msg . pkeyun = pkey -> un ; 1818 msg . pkeyags = pkey -> ags ; 1819 msg . pkeyda . pkeyda_v = pkey -> da ; 1820 msg . pkeyda . pkeyda_n = pkey -> size ; 1821 msg . dadn = da -> dn ; 1822 msg . dadoff = da -> doff ; 1823 msg . daun = da -> un ; 1824 msg . daags = da -> ags ; 1825 msg . dada . dada_v = da ->data; 1826 msg . dada . dada_n = da -> size ; 1827 msg . ags = ( u_t )flags; 1829 yp = `__db_db_pg_4007 (& msg , ); 1830 i( yp = NULL ) { 1831 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1832 t = DB_NOSERVER ; 1833 out ; 1835 t = `__db_db_pg_t ( dbp , tx , skey , pkey , da , ags , yp ); 1836 out : 1837 i( yp ! NULL ) 1838 `xdr_ (( xdroc_t ) xdr___db_pg_y , (*) yp ); 1839 ( t ); 1840 } } 1846 $__db_db_put ( dbp , tx , key , da , ags ) 1847 DB * dbp ; 1848 DB_TXN * tx ; 1849 DBT * key ; 1850 DBT * da ; 1851 u_t32_t ags ; 1853 CLIENT * ; 1854 __db_put_msg msg ; 1855 __db_put_y * yp = NULL ; 1856 t ; 1857 DB_ENV * dbv ; 1859 t = 0; 1860 dbv = dbp ->dbenv; 1861 i( dbv = NULL || ! `RPC_ON (dbenv)) 1862 ( `__db_norv ( NULL )); 1864 = ( CLIENT *) dbv -> _hd ; 1866 i( dbp = NULL ) 1867 msg . dbp_id = 0; 1869 msg . dbp_id = dbp -> _id ; 1870 i( tx = NULL ) 1871 msg . tx_id = 0; 1873 msg . tx_id = tx -> txnid ; 1874 msg . keydn = key -> dn ; 1875 msg . keydoff = key -> doff ; 1876 msg . keyun = key -> un ; 1877 msg . keyags = key -> ags ; 1878 msg . keyda . keyda_v = key -> da ; 1879 msg . keyda . keyda_n = key -> size ; 1880 msg . dadn = da -> dn ; 1881 msg . dadoff = da -> doff ; 1882 msg . daun = da -> un ; 1883 msg . daags = da -> ags ; 1884 msg . dada . dada_v = da ->data; 1885 msg . dada . dada_n = da -> size ; 1886 msg . ags = ( u_t )flags; 1888 yp = `__db_db_put_4007 (& msg , ); 1889 i( yp = NULL ) { 1890 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1891 t = DB_NOSERVER ; 1892 out ; 1894 t = `__db_db_put_t ( dbp , tx , key , da , ags , yp ); 1895 out : 1896 i( yp ! NULL ) 1897 `xdr_ (( xdroc_t ) xdr___db_put_y , (*) yp ); 1898 ( t ); 1899 } } 1906 $__db_db_move ( dbp , me , subdb , ags ) 1907 DB * dbp ; 1908 cڡ * me ; 1909 cڡ * subdb ; 1910 u_t32_t ags ; 1912 CLIENT * ; 1913 __db_move_msg msg ; 1914 __db_move_y * yp = NULL ; 1915 t ; 1916 DB_ENV * dbv ; 1918 t = 0; 1919 dbv = dbp ->dbenv; 1920 i( dbv = NULL || ! `RPC_ON (dbenv)) 1921 ( `__db_norv ( NULL )); 1923 = ( CLIENT *) dbv -> _hd ; 1925 i( dbp = NULL ) 1926 msg . dbp_id = 0; 1928 msg . dbp_id = dbp -> _id ; 1929 i( me = NULL ) 1930 msg . me = ""; 1932 msg . me = (*)name; 1933 i( subdb = NULL ) 1934 msg . subdb = ""; 1936 msg . subdb = (*)subdb; 1937 msg . ags = ( u_t )flags; 1939 yp = `__db_db_move_4007 (& msg , ); 1940 i( yp = NULL ) { 1941 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1942 t = DB_NOSERVER ; 1943 out ; 1945 t = `__db_db_move_t ( dbp , me , subdb , ags , yp ); 1946 out : 1947 i( yp ! NULL ) 1948 `xdr_ (( xdroc_t ) xdr___db_move_y , (*) yp ); 1949 ( t ); 1950 } } 1957 $__db_db_me ( dbp , me , subdb , wme , ags ) 1958 DB * dbp ; 1959 cڡ * me ; 1960 cڡ * subdb ; 1961 cڡ * wme ; 1962 u_t32_t ags ; 1964 CLIENT * ; 1965 __db_me_msg msg ; 1966 __db_me_y * yp = NULL ; 1967 t ; 1968 DB_ENV * dbv ; 1970 t = 0; 1971 dbv = dbp ->dbenv; 1972 i( dbv = NULL || ! `RPC_ON (dbenv)) 1973 ( `__db_norv ( NULL )); 1975 = ( CLIENT *) dbv -> _hd ; 1977 i( dbp = NULL ) 1978 msg . dbp_id = 0; 1980 msg . dbp_id = dbp -> _id ; 1981 i( me = NULL ) 1982 msg . me = ""; 1984 msg . me = (*)name; 1985 i( subdb = NULL ) 1986 msg . subdb = ""; 1988 msg . subdb = (*)subdb; 1989 i( wme = NULL ) 1990 msg . wme = ""; 1992 msg . wme = (*)newname; 1993 msg . ags = ( u_t )flags; 1995 yp = `__db_db_me_4007 (& msg , ); 1996 i( yp = NULL ) { 1997 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 1998 t = DB_NOSERVER ; 1999 out ; 2001 t = `__db_db_me_t ( dbp , me , subdb , wme , ags , yp ); 2002 out : 2003 i( yp ! NULL ) 2004 `xdr_ (( xdroc_t ) xdr___db_me_y , (*) yp ); 2005 ( t ); 2006 } } 2012 $__db_db_t_bt_mkey ( dbp , mkey ) 2013 DB * dbp ; 2014 u_t32_t mkey ; 2016 CLIENT * ; 2017 __db_t_bt_mkey_msg msg ; 2018 __db_t_bt_mkey_y * yp = NULL ; 2019 t ; 2020 DB_ENV * dbv ; 2022 t = 0; 2023 dbv = dbp ->dbenv; 2024 i( dbv = NULL || ! `RPC_ON (dbenv)) 2025 ( `__db_norv ( NULL )); 2027 = ( CLIENT *) dbv -> _hd ; 2029 i( dbp = NULL ) 2030 msg . dbp_id = 0; 2032 msg . dbp_id = dbp -> _id ; 2033 msg . mkey = ( u_t )minkey; 2035 yp = `__db_db_t_bt_mkey_4007 (& msg , ); 2036 i( yp = NULL ) { 2037 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2038 t = DB_NOSERVER ; 2039 out ; 2041 t = yp -> us ; 2042 out : 2043 i( yp ! NULL ) 2044 `xdr_ (( xdroc_t ) xdr___db_t_bt_mkey_y , (*) yp ); 2045 ( t ); 2046 } } 2052 $__db_db_t_y ( dbp , sswd , ags ) 2053 DB * dbp ; 2054 cڡ * sswd ; 2055 u_t32_t ags ; 2057 CLIENT * ; 2058 __db_t_y_msg msg ; 2059 __db_t_y_y * yp = NULL ; 2060 t ; 2061 DB_ENV * dbv ; 2063 t = 0; 2064 dbv = dbp ->dbenv; 2065 i( dbv = NULL || ! `RPC_ON (dbenv)) 2066 ( `__db_norv ( NULL )); 2068 = ( CLIENT *) dbv -> _hd ; 2070 i( dbp = NULL ) 2071 msg . dbp_id = 0; 2073 msg . dbp_id = dbp -> _id ; 2074 i( sswd = NULL ) 2075 msg . sswd = ""; 2077 msg . sswd = (*)passwd; 2078 msg . ags = ( u_t )flags; 2080 yp = `__db_db_t_y_4007 (& msg , ); 2081 i( yp = NULL ) { 2082 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2083 t = DB_NOSERVER ; 2084 out ; 2086 t = yp -> us ; 2087 out : 2088 i( yp ! NULL ) 2089 `xdr_ (( xdroc_t ) xdr___db_t_y_y , (*) yp ); 2090 ( t ); 2091 } } 2097 $__db_db_t_ags ( dbp , ags ) 2098 DB * dbp ; 2099 u_t32_t ags ; 2101 CLIENT * ; 2102 __db_t_ags_msg msg ; 2103 __db_t_ags_y * yp = NULL ; 2104 t ; 2105 DB_ENV * dbv ; 2107 t = 0; 2108 dbv = dbp ->dbenv; 2109 i( dbv = NULL || ! `RPC_ON (dbenv)) 2110 ( `__db_norv ( NULL )); 2112 = ( CLIENT *) dbv -> _hd ; 2114 i( dbp = NULL ) 2115 msg . dbp_id = 0; 2117 msg . dbp_id = dbp -> _id ; 2118 msg . ags = ( u_t )flags; 2120 yp = `__db_db_t_ags_4007 (& msg , ); 2121 i( yp = NULL ) { 2122 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2123 t = DB_NOSERVER ; 2124 out ; 2126 t = yp -> us ; 2127 out : 2128 i( yp ! NULL ) 2129 `xdr_ (( xdroc_t ) xdr___db_t_ags_y , (*) yp ); 2130 ( t ); 2131 } } 2137 $__db_db_t_h_f ( dbp , f ) 2138 DB * dbp ; 2139 u_t32_t f ; 2141 CLIENT * ; 2142 __db_t_h_f_msg msg ; 2143 __db_t_h_f_y * yp = NULL ; 2144 t ; 2145 DB_ENV * dbv ; 2147 t = 0; 2148 dbv = dbp ->dbenv; 2149 i( dbv = NULL || ! `RPC_ON (dbenv)) 2150 ( `__db_norv ( NULL )); 2152 = ( CLIENT *) dbv -> _hd ; 2154 i( dbp = NULL ) 2155 msg . dbp_id = 0; 2157 msg . dbp_id = dbp -> _id ; 2158 msg . f = ( u_t )ffactor; 2160 yp = `__db_db_t_h_f_4007 (& msg , ); 2161 i( yp = NULL ) { 2162 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2163 t = DB_NOSERVER ; 2164 out ; 2166 t = yp -> us ; 2167 out : 2168 i( yp ! NULL ) 2169 `xdr_ (( xdroc_t ) xdr___db_t_h_f_y , (*) yp ); 2170 ( t ); 2171 } } 2177 $__db_db_t_h_m ( dbp , m ) 2178 DB * dbp ; 2179 u_t32_t m ; 2181 CLIENT * ; 2182 __db_t_h_m_msg msg ; 2183 __db_t_h_m_y * yp = NULL ; 2184 t ; 2185 DB_ENV * dbv ; 2187 t = 0; 2188 dbv = dbp ->dbenv; 2189 i( dbv = NULL || ! `RPC_ON (dbenv)) 2190 ( `__db_norv ( NULL )); 2192 = ( CLIENT *) dbv -> _hd ; 2194 i( dbp = NULL ) 2195 msg . dbp_id = 0; 2197 msg . dbp_id = dbp -> _id ; 2198 msg . m = ( u_t )nelem; 2200 yp = `__db_db_t_h_m_4007 (& msg , ); 2201 i( yp = NULL ) { 2202 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2203 t = DB_NOSERVER ; 2204 out ; 2206 t = yp -> us ; 2207 out : 2208 i( yp ! NULL ) 2209 `xdr_ (( xdroc_t ) xdr___db_t_h_m_y , (*) yp ); 2210 ( t ); 2211 } } 2217 $__db_db_t_ld ( dbp , ld ) 2218 DB * dbp ; 2219 ld ; 2221 CLIENT * ; 2222 __db_t_ld_msg msg ; 2223 __db_t_ld_y * yp = NULL ; 2224 t ; 2225 DB_ENV * dbv ; 2227 t = 0; 2228 dbv = dbp ->dbenv; 2229 i( dbv = NULL || ! `RPC_ON (dbenv)) 2230 ( `__db_norv ( NULL )); 2232 = ( CLIENT *) dbv -> _hd ; 2234 i( dbp = NULL ) 2235 msg . dbp_id = 0; 2237 msg . dbp_id = dbp -> _id ; 2238 msg . ld = ( u_t )lorder; 2240 yp = `__db_db_t_ld_4007 (& msg , ); 2241 i( yp = NULL ) { 2242 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2243 t = DB_NOSERVER ; 2244 out ; 2246 t = yp -> us ; 2247 out : 2248 i( yp ! NULL ) 2249 `xdr_ (( xdroc_t ) xdr___db_t_ld_y , (*) yp ); 2250 ( t ); 2251 } } 2257 $__db_db_t_gesize ( dbp , gesize ) 2258 DB * dbp ; 2259 u_t32_t gesize ; 2261 CLIENT * ; 2262 __db_t_gesize_msg msg ; 2263 __db_t_gesize_y * yp = NULL ; 2264 t ; 2265 DB_ENV * dbv ; 2267 t = 0; 2268 dbv = dbp ->dbenv; 2269 i( dbv = NULL || ! `RPC_ON (dbenv)) 2270 ( `__db_norv ( NULL )); 2272 = ( CLIENT *) dbv -> _hd ; 2274 i( dbp = NULL ) 2275 msg . dbp_id = 0; 2277 msg . dbp_id = dbp -> _id ; 2278 msg . gesize = ( u_t )pagesize; 2280 yp = `__db_db_t_gesize_4007 (& msg , ); 2281 i( yp = NULL ) { 2282 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2283 t = DB_NOSERVER ; 2284 out ; 2286 t = yp -> us ; 2287 out : 2288 i( yp ! NULL ) 2289 `xdr_ (( xdroc_t ) xdr___db_t_gesize_y , (*) yp ); 2290 ( t ); 2291 } } 2297 $__db_db_t_iܙy ( dbp , iܙy ) 2298 DB * dbp ; 2299 DB_CACHE_PRIORITY iܙy ; 2301 CLIENT * ; 2302 __db_t_iܙy_msg msg ; 2303 __db_t_iܙy_y * yp = NULL ; 2304 t ; 2305 DB_ENV * dbv ; 2307 t = 0; 2308 dbv = dbp ->dbenv; 2309 i( dbv = NULL || ! `RPC_ON (dbenv)) 2310 ( `__db_norv ( NULL )); 2312 = ( CLIENT *) dbv -> _hd ; 2314 i( dbp = NULL ) 2315 msg . dbp_id = 0; 2317 msg . dbp_id = dbp -> _id ; 2318 msg . iܙy = ( u_t )priority; 2320 yp = `__db_db_t_iܙy_4007 (& msg , ); 2321 i( yp = NULL ) { 2322 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2323 t = DB_NOSERVER ; 2324 out ; 2326 t = yp -> us ; 2327 out : 2328 i( yp ! NULL ) 2329 `xdr_ (( xdroc_t ) xdr___db_t_iܙy_y , (*) yp ); 2330 ( t ); 2331 } } 2337 $__db_db_t_q_exsize ( dbp , exsize ) 2338 DB * dbp ; 2339 u_t32_t exsize ; 2341 CLIENT * ; 2342 __db_t_q_exsize_msg msg ; 2343 __db_t_q_exsize_y * yp = NULL ; 2344 t ; 2345 DB_ENV * dbv ; 2347 t = 0; 2348 dbv = dbp ->dbenv; 2349 i( dbv = NULL || ! `RPC_ON (dbenv)) 2350 ( `__db_norv ( NULL )); 2352 = ( CLIENT *) dbv -> _hd ; 2354 i( dbp = NULL ) 2355 msg . dbp_id = 0; 2357 msg . dbp_id = dbp -> _id ; 2358 msg . exsize = ( u_t )extentsize; 2360 yp = `__db_db_t_q_exsize_4007 (& msg , ); 2361 i( yp = NULL ) { 2362 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2363 t = DB_NOSERVER ; 2364 out ; 2366 t = yp -> us ; 2367 out : 2368 i( yp ! NULL ) 2369 `xdr_ (( xdroc_t ) xdr___db_t_q_exsize_y , (*) yp ); 2370 ( t ); 2371 } } 2377 $__db_db_t__dim ( dbp , dim ) 2378 DB * dbp ; 2379 dim ; 2381 CLIENT * ; 2382 __db_t__dim_msg msg ; 2383 __db_t__dim_y * yp = NULL ; 2384 t ; 2385 DB_ENV * dbv ; 2387 t = 0; 2388 dbv = dbp ->dbenv; 2389 i( dbv = NULL || ! `RPC_ON (dbenv)) 2390 ( `__db_norv ( NULL )); 2392 = ( CLIENT *) dbv -> _hd ; 2394 i( dbp = NULL ) 2395 msg . dbp_id = 0; 2397 msg . dbp_id = dbp -> _id ; 2398 msg . dim = ( u_t )delim; 2400 yp = `__db_db_t__dim_4007 (& msg , ); 2401 i( yp = NULL ) { 2402 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2403 t = DB_NOSERVER ; 2404 out ; 2406 t = yp -> us ; 2407 out : 2408 i( yp ! NULL ) 2409 `xdr_ (( xdroc_t ) xdr___db_t__dim_y , (*) yp ); 2410 ( t ); 2411 } } 2417 $__db_db_t__n ( dbp , n ) 2418 DB * dbp ; 2419 u_t32_t n ; 2421 CLIENT * ; 2422 __db_t__n_msg msg ; 2423 __db_t__n_y * yp = NULL ; 2424 t ; 2425 DB_ENV * dbv ; 2427 t = 0; 2428 dbv = dbp ->dbenv; 2429 i( dbv = NULL || ! `RPC_ON (dbenv)) 2430 ( `__db_norv ( NULL )); 2432 = ( CLIENT *) dbv -> _hd ; 2434 i( dbp = NULL ) 2435 msg . dbp_id = 0; 2437 msg . dbp_id = dbp -> _id ; 2438 msg . n = ( u_t )len; 2440 yp = `__db_db_t__n_4007 (& msg , ); 2441 i( yp = NULL ) { 2442 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2443 t = DB_NOSERVER ; 2444 out ; 2446 t = yp -> us ; 2447 out : 2448 i( yp ! NULL ) 2449 `xdr_ (( xdroc_t ) xdr___db_t__n_y , (*) yp ); 2450 ( t ); 2451 } } 2457 $__db_db_t__d ( dbp , d ) 2458 DB * dbp ; 2459 d ; 2461 CLIENT * ; 2462 __db_t__d_msg msg ; 2463 __db_t__d_y * yp = NULL ; 2464 t ; 2465 DB_ENV * dbv ; 2467 t = 0; 2468 dbv = dbp ->dbenv; 2469 i( dbv = NULL || ! `RPC_ON (dbenv)) 2470 ( `__db_norv ( NULL )); 2472 = ( CLIENT *) dbv -> _hd ; 2474 i( dbp = NULL ) 2475 msg . dbp_id = 0; 2477 msg . dbp_id = dbp -> _id ; 2478 msg . d = ( u_t )pad; 2480 yp = `__db_db_t__d_4007 (& msg , ); 2481 i( yp = NULL ) { 2482 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2483 t = DB_NOSERVER ; 2484 out ; 2486 t = yp -> us ; 2487 out : 2488 i( yp ! NULL ) 2489 `xdr_ (( xdroc_t ) xdr___db_t__d_y , (*) yp ); 2490 ( t ); 2491 } } 2497 $__db_db_ ( dbp , tx , , ags ) 2498 DB * dbp ; 2499 DB_TXN * tx ; 2500 * ; 2501 u_t32_t ags ; 2503 CLIENT * ; 2504 __db__msg msg ; 2505 __db__y * yp = NULL ; 2506 t ; 2507 DB_ENV * dbv ; 2509 t = 0; 2510 dbv = dbp ->dbenv; 2511 i( dbv = NULL || ! `RPC_ON (dbenv)) 2512 ( `__db_norv ( NULL )); 2514 = ( CLIENT *) dbv -> _hd ; 2516 i( dbp = NULL ) 2517 msg . dbp_id = 0; 2519 msg . dbp_id = dbp -> _id ; 2520 i( tx = NULL ) 2521 msg . tx_id = 0; 2523 msg . tx_id = tx -> txnid ; 2524 msg . ags = ( u_t )flags; 2526 yp = `__db_db__4007 (& msg , ); 2527 i( yp = NULL ) { 2528 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2529 t = DB_NOSERVER ; 2530 out ; 2532 t = `__db_db__t ( dbp , tx , , ags , yp ); 2533 out : 2534 i( yp ! NULL ) 2535 `xdr_ (( xdroc_t ) xdr___db__y , (*) yp ); 2536 ( t ); 2537 } } 2543 $__db_db_sync ( dbp , ags ) 2544 DB * dbp ; 2545 u_t32_t ags ; 2547 CLIENT * ; 2548 __db_sync_msg msg ; 2549 __db_sync_y * yp = NULL ; 2550 t ; 2551 DB_ENV * dbv ; 2553 t = 0; 2554 dbv = dbp ->dbenv; 2555 i( dbv = NULL || ! `RPC_ON (dbenv)) 2556 ( `__db_norv ( NULL )); 2558 = ( CLIENT *) dbv -> _hd ; 2560 i( dbp = NULL ) 2561 msg . dbp_id = 0; 2563 msg . dbp_id = dbp -> _id ; 2564 msg . ags = ( u_t )flags; 2566 yp = `__db_db_sync_4007 (& msg , ); 2567 i( yp = NULL ) { 2568 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2569 t = DB_NOSERVER ; 2570 out ; 2572 t = yp -> us ; 2573 out : 2574 i( yp ! NULL ) 2575 `xdr_ (( xdroc_t ) xdr___db_sync_y , (*) yp ); 2576 ( t ); 2577 } } 2584 $__db_db_un ( dbp , tx , coup , ags ) 2585 DB * dbp ; 2586 DB_TXN * tx ; 2587 u_t32_t * coup ; 2588 u_t32_t ags ; 2590 CLIENT * ; 2591 __db_un_msg msg ; 2592 __db_un_y * yp = NULL ; 2593 t ; 2594 DB_ENV * dbv ; 2596 t = 0; 2597 dbv = dbp ->dbenv; 2598 i( dbv = NULL || ! `RPC_ON (dbenv)) 2599 ( `__db_norv ( NULL )); 2601 = ( CLIENT *) dbv -> _hd ; 2603 i( dbp = NULL ) 2604 msg . dbp_id = 0; 2606 msg . dbp_id = dbp -> _id ; 2607 i( tx = NULL ) 2608 msg . tx_id = 0; 2610 msg . tx_id = tx -> txnid ; 2611 msg . ags = ( u_t )flags; 2613 yp = `__db_db_un_4007 (& msg , ); 2614 i( yp = NULL ) { 2615 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2616 t = DB_NOSERVER ; 2617 out ; 2619 t = `__db_db_un_t ( dbp , tx , coup , ags , yp ); 2620 out : 2621 i( yp ! NULL ) 2622 `xdr_ (( xdroc_t ) xdr___db_un_y , (*) yp ); 2623 ( t ); 2624 } } 2630 $__db_dbc_o ( dbc ) 2631 DBC * dbc ; 2633 CLIENT * ; 2634 __dbc_o_msg msg ; 2635 __dbc_o_y * yp = NULL ; 2636 t ; 2637 DB_ENV * dbv ; 2639 t = 0; 2640 dbv = dbc ->dbenv; 2641 i( dbv = NULL || ! `RPC_ON (dbenv)) 2642 ( `__db_norv ( NULL )); 2644 = ( CLIENT *) dbv -> _hd ; 2646 i( dbc = NULL ) 2647 msg . dbc_id = 0; 2649 msg . dbc_id = dbc -> _id ; 2651 yp = `__db_dbc_o_4007 (& msg , ); 2652 i( yp = NULL ) { 2653 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2654 t = DB_NOSERVER ; 2655 out ; 2657 t = `__db_dbc_o_t ( dbc , yp ); 2658 out : 2659 i( yp ! NULL ) 2660 `xdr_ (( xdroc_t ) xdr___dbc_o_y , (*) yp ); 2661 ( t ); 2662 } } 2668 $__db_dbc_cou ( dbc , coup , ags ) 2669 DBC * dbc ; 2670 db_o_t * coup ; 2671 u_t32_t ags ; 2673 CLIENT * ; 2674 __dbc_cou_msg msg ; 2675 __dbc_cou_y * yp = NULL ; 2676 t ; 2677 DB_ENV * dbv ; 2679 t = 0; 2680 dbv = dbc ->dbenv; 2681 i( dbv = NULL || ! `RPC_ON (dbenv)) 2682 ( `__db_norv ( NULL )); 2684 = ( CLIENT *) dbv -> _hd ; 2686 i( dbc = NULL ) 2687 msg . dbc_id = 0; 2689 msg . dbc_id = dbc -> _id ; 2690 msg . ags = ( u_t )flags; 2692 yp = `__db_dbc_cou_4007 (& msg , ); 2693 i( yp = NULL ) { 2694 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2695 t = DB_NOSERVER ; 2696 out ; 2698 t = `__db_dbc_cou_t ( dbc , coup , ags , yp ); 2699 out : 2700 i( yp ! NULL ) 2701 `xdr_ (( xdroc_t ) xdr___dbc_cou_y , (*) yp ); 2702 ( t ); 2703 } } 2709 $__db_dbc_d ( dbc , ags ) 2710 DBC * dbc ; 2711 u_t32_t ags ; 2713 CLIENT * ; 2714 __dbc_d_msg msg ; 2715 __dbc_d_y * yp = NULL ; 2716 t ; 2717 DB_ENV * dbv ; 2719 t = 0; 2720 dbv = dbc ->dbenv; 2721 i( dbv = NULL || ! `RPC_ON (dbenv)) 2722 ( `__db_norv ( NULL )); 2724 = ( CLIENT *) dbv -> _hd ; 2726 i( dbc = NULL ) 2727 msg . dbc_id = 0; 2729 msg . dbc_id = dbc -> _id ; 2730 msg . ags = ( u_t )flags; 2732 yp = `__db_dbc_d_4007 (& msg , ); 2733 i( yp = NULL ) { 2734 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2735 t = DB_NOSERVER ; 2736 out ; 2738 t = yp -> us ; 2739 out : 2740 i( yp ! NULL ) 2741 `xdr_ (( xdroc_t ) xdr___dbc_d_y , (*) yp ); 2742 ( t ); 2743 } } 2749 $__db_dbc_dup ( dbc , db , ags ) 2750 DBC * dbc ; 2751 DBC ** db ; 2752 u_t32_t ags ; 2754 CLIENT * ; 2755 __dbc_dup_msg msg ; 2756 __dbc_dup_y * yp = NULL ; 2757 t ; 2758 DB_ENV * dbv ; 2760 t = 0; 2761 dbv = dbc ->dbenv; 2762 i( dbv = NULL || ! `RPC_ON (dbenv)) 2763 ( `__db_norv ( NULL )); 2765 = ( CLIENT *) dbv -> _hd ; 2767 i( dbc = NULL ) 2768 msg . dbc_id = 0; 2770 msg . dbc_id = dbc -> _id ; 2771 msg . ags = ( u_t )flags; 2773 yp = `__db_dbc_dup_4007 (& msg , ); 2774 i( yp = NULL ) { 2775 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2776 t = DB_NOSERVER ; 2777 out ; 2779 t = `__db_dbc_dup_t ( dbc , db , ags , yp ); 2780 out : 2781 i( yp ! NULL ) 2782 `xdr_ (( xdroc_t ) xdr___dbc_dup_y , (*) yp ); 2783 ( t ); 2784 } } 2790 $__db_dbc_g ( dbc , key , da , ags ) 2791 DBC * dbc ; 2792 DBT * key ; 2793 DBT * da ; 2794 u_t32_t ags ; 2796 CLIENT * ; 2797 __dbc_g_msg msg ; 2798 __dbc_g_y * yp = NULL ; 2799 t ; 2800 DB_ENV * dbv ; 2802 t = 0; 2803 dbv = dbc ->dbenv; 2804 i( dbv = NULL || ! `RPC_ON (dbenv)) 2805 ( `__db_norv ( NULL )); 2807 = ( CLIENT *) dbv -> _hd ; 2809 i( dbc = NULL ) 2810 msg . dbc_id = 0; 2812 msg . dbc_id = dbc -> _id ; 2813 msg . keydn = key -> dn ; 2814 msg . keydoff = key -> doff ; 2815 msg . keyun = key -> un ; 2816 msg . keyags = key -> ags ; 2817 msg . keyda . keyda_v = key -> da ; 2818 msg . keyda . keyda_n = key -> size ; 2819 msg . dadn = da -> dn ; 2820 msg . dadoff = da -> doff ; 2821 msg . daun = da -> un ; 2822 msg . daags = da -> ags ; 2823 msg . dada . dada_v = da ->data; 2824 msg . dada . dada_n = da -> size ; 2825 msg . ags = ( u_t )flags; 2827 yp = `__db_dbc_g_4007 (& msg , ); 2828 i( yp = NULL ) { 2829 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2830 t = DB_NOSERVER ; 2831 out ; 2833 t = `__db_dbc_g_t ( dbc , key , da , ags , yp ); 2834 out : 2835 i( yp ! NULL ) 2836 `xdr_ (( xdroc_t ) xdr___dbc_g_y , (*) yp ); 2837 ( t ); 2838 } } 2844 $__db_dbc_g_iܙy ( dbc , iܙyp ) 2845 DBC * dbc ; 2846 DB_CACHE_PRIORITY * iܙyp ; 2848 CLIENT * ; 2849 __dbc_g_iܙy_msg msg ; 2850 __dbc_g_iܙy_y * yp = NULL ; 2851 t ; 2852 DB_ENV * dbv ; 2854 t = 0; 2855 dbv = dbc ->dbenv; 2856 i( dbv = NULL || ! `RPC_ON (dbenv)) 2857 ( `__db_norv ( NULL )); 2859 = ( CLIENT *) dbv -> _hd ; 2861 i( dbc = NULL ) 2862 msg . dbc_id = 0; 2864 msg . dbc_id = dbc -> _id ; 2866 yp = `__db_dbc_g_iܙy_4007 (& msg , ); 2867 i( yp = NULL ) { 2868 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2869 t = DB_NOSERVER ; 2870 out ; 2872 t = yp -> us ; 2873 i( iܙyp ! NULL ) 2874 * iܙyp = ( DB_CACHE_PRIORITY ) yp -> iܙy ; 2875 out : 2876 i( yp ! NULL ) 2877 `xdr_ (( xdroc_t ) xdr___dbc_g_iܙy_y , (*) yp ); 2878 ( t ); 2879 } } 2885 $__db_dbc_pg ( dbc , skey , pkey , da , ags ) 2886 DBC * dbc ; 2887 DBT * skey ; 2888 DBT * pkey ; 2889 DBT * da ; 2890 u_t32_t ags ; 2892 CLIENT * ; 2893 __dbc_pg_msg msg ; 2894 __dbc_pg_y * yp = NULL ; 2895 t ; 2896 DB_ENV * dbv ; 2898 t = 0; 2899 dbv = dbc ->dbenv; 2900 i( dbv = NULL || ! `RPC_ON (dbenv)) 2901 ( `__db_norv ( NULL )); 2903 = ( CLIENT *) dbv -> _hd ; 2905 i( dbc = NULL ) 2906 msg . dbc_id = 0; 2908 msg . dbc_id = dbc -> _id ; 2909 msg . skeydn = skey -> dn ; 2910 msg . skeydoff = skey -> doff ; 2911 msg . skeyun = skey -> un ; 2912 msg . skeyags = skey -> ags ; 2913 msg . skeyda . skeyda_v = skey -> da ; 2914 msg . skeyda . skeyda_n = skey -> size ; 2915 msg . pkeydn = pkey -> dn ; 2916 msg . pkeydoff = pkey -> doff ; 2917 msg . pkeyun = pkey -> un ; 2918 msg . pkeyags = pkey -> ags ; 2919 msg . pkeyda . pkeyda_v = pkey -> da ; 2920 msg . pkeyda . pkeyda_n = pkey -> size ; 2921 msg . dadn = da -> dn ; 2922 msg . dadoff = da -> doff ; 2923 msg . daun = da -> un ; 2924 msg . daags = da -> ags ; 2925 msg . dada . dada_v = da ->data; 2926 msg . dada . dada_n = da -> size ; 2927 msg . ags = ( u_t )flags; 2929 yp = `__db_dbc_pg_4007 (& msg , ); 2930 i( yp = NULL ) { 2931 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2932 t = DB_NOSERVER ; 2933 out ; 2935 t = `__db_dbc_pg_t ( dbc , skey , pkey , da , ags , yp ); 2936 out : 2937 i( yp ! NULL ) 2938 `xdr_ (( xdroc_t ) xdr___dbc_pg_y , (*) yp ); 2939 ( t ); 2940 } } 2946 $__db_dbc_put ( dbc , key , da , ags ) 2947 DBC * dbc ; 2948 DBT * key ; 2949 DBT * da ; 2950 u_t32_t ags ; 2952 CLIENT * ; 2953 __dbc_put_msg msg ; 2954 __dbc_put_y * yp = NULL ; 2955 t ; 2956 DB_ENV * dbv ; 2958 t = 0; 2959 dbv = dbc ->dbenv; 2960 i( dbv = NULL || ! `RPC_ON (dbenv)) 2961 ( `__db_norv ( NULL )); 2963 = ( CLIENT *) dbv -> _hd ; 2965 i( dbc = NULL ) 2966 msg . dbc_id = 0; 2968 msg . dbc_id = dbc -> _id ; 2969 msg . keydn = key -> dn ; 2970 msg . keydoff = key -> doff ; 2971 msg . keyun = key -> un ; 2972 msg . keyags = key -> ags ; 2973 msg . keyda . keyda_v = key -> da ; 2974 msg . keyda . keyda_n = key -> size ; 2975 msg . dadn = da -> dn ; 2976 msg . dadoff = da -> doff ; 2977 msg . daun = da -> un ; 2978 msg . daags = da -> ags ; 2979 msg . dada . dada_v = da ->data; 2980 msg . dada . dada_n = da -> size ; 2981 msg . ags = ( u_t )flags; 2983 yp = `__db_dbc_put_4007 (& msg , ); 2984 i( yp = NULL ) { 2985 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 2986 t = DB_NOSERVER ; 2987 out ; 2989 t = `__db_dbc_put_t ( dbc , key , da , ags , yp ); 2990 out : 2991 i( yp ! NULL ) 2992 `xdr_ (( xdroc_t ) xdr___dbc_put_y , (*) yp ); 2993 ( t ); 2994 } } 3000 $__db_dbc_t_iܙy ( dbc , iܙy ) 3001 DBC * dbc ; 3002 DB_CACHE_PRIORITY iܙy ; 3004 CLIENT * ; 3005 __dbc_t_iܙy_msg msg ; 3006 __dbc_t_iܙy_y * yp = NULL ; 3007 t ; 3008 DB_ENV * dbv ; 3010 t = 0; 3011 dbv = dbc ->dbenv; 3012 i( dbv = NULL || ! `RPC_ON (dbenv)) 3013 ( `__db_norv ( NULL )); 3015 = ( CLIENT *) dbv -> _hd ; 3017 i( dbc = NULL ) 3018 msg . dbc_id = 0; 3020 msg . dbc_id = dbc -> _id ; 3021 msg . iܙy = ( u_t )priority; 3023 yp = `__db_dbc_t_iܙy_4007 (& msg , ); 3024 i( yp = NULL ) { 3025 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 3026 t = DB_NOSERVER ; 3027 out ; 3029 t = yp -> us ; 3030 out : 3031 i( yp ! NULL ) 3032 `xdr_ (( xdroc_t ) xdr___dbc_t_iܙy_y , (*) yp ); 3033 ( t ); 3034 } } 3040 $__db_txn_abt ( tx ) 3041 DB_TXN * tx ; 3043 CLIENT * ; 3044 __txn_abt_msg msg ; 3045 __txn_abt_y * yp = NULL ; 3046 t ; 3047 DB_ENV * dbv ; 3049 t = 0; 3050 dbv = tx -> mg -> v ->dbenv; 3051 i( dbv = NULL || ! `RPC_ON (dbenv)) 3052 ( `__db_norv ( NULL )); 3054 = ( CLIENT *) dbv -> _hd ; 3056 i( tx = NULL ) 3057 msg . tx_id = 0; 3059 msg . tx_id = tx -> txnid ; 3061 yp = `__db_txn_abt_4007 (& msg , ); 3062 i( yp = NULL ) { 3063 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 3064 t = DB_NOSERVER ; 3065 out ; 3067 t = `__db_txn_abt_t ( tx , yp ); 3068 out : 3069 i( yp ! NULL ) 3070 `xdr_ (( xdroc_t ) xdr___txn_abt_y , (*) yp ); 3071 ( t ); 3072 } } 3078 $__db_txn_comm ( tx , ags ) 3079 DB_TXN * tx ; 3080 u_t32_t ags ; 3082 CLIENT * ; 3083 __txn_comm_msg msg ; 3084 __txn_comm_y * yp = NULL ; 3085 t ; 3086 DB_ENV * dbv ; 3088 t = 0; 3089 dbv = tx -> mg -> v ->dbenv; 3090 i( dbv = NULL || ! `RPC_ON (dbenv)) 3091 ( `__db_norv ( NULL )); 3093 = ( CLIENT *) dbv -> _hd ; 3095 i( tx = NULL ) 3096 msg . tx_id = 0; 3098 msg . tx_id = tx -> txnid ; 3099 msg . ags = ( u_t )flags; 3101 yp = `__db_txn_comm_4007 (& msg , ); 3102 i( yp = NULL ) { 3103 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 3104 t = DB_NOSERVER ; 3105 out ; 3107 t = `__db_txn_comm_t ( tx , ags , yp ); 3108 out : 3109 i( yp ! NULL ) 3110 `xdr_ (( xdroc_t ) xdr___txn_comm_y , (*) yp ); 3111 ( t ); 3112 } } 3118 $__db_txn_disrd ( tx , ags ) 3119 DB_TXN * tx ; 3120 u_t32_t ags ; 3122 CLIENT * ; 3123 __txn_disrd_msg msg ; 3124 __txn_disrd_y * yp = NULL ; 3125 t ; 3126 DB_ENV * dbv ; 3128 t = 0; 3129 dbv = tx -> mg -> v ->dbenv; 3130 i( dbv = NULL || ! `RPC_ON (dbenv)) 3131 ( `__db_norv ( NULL )); 3133 = ( CLIENT *) dbv -> _hd ; 3135 i( tx = NULL ) 3136 msg . tx_id = 0; 3138 msg . tx_id = tx -> txnid ; 3139 msg . ags = ( u_t )flags; 3141 yp = `__db_txn_disrd_4007 (& msg , ); 3142 i( yp = NULL ) { 3143 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 3144 t = DB_NOSERVER ; 3145 out ; 3147 t = `__db_txn_disrd_t ( tx , ags , yp ); 3148 out : 3149 i( yp ! NULL ) 3150 `xdr_ (( xdroc_t ) xdr___txn_disrd_y , (*) yp ); 3151 ( t ); 3152 } } 3158 $__db_txn_e ( tx , gid ) 3159 DB_TXN * tx ; 3160 u_t8_t * gid ; 3162 CLIENT * ; 3163 __txn_e_msg msg ; 3164 __txn_e_y * yp = NULL ; 3165 t ; 3166 DB_ENV * dbv ; 3168 t = 0; 3169 dbv = tx -> mg -> v ->dbenv; 3170 i( dbv = NULL || ! `RPC_ON (dbenv)) 3171 ( `__db_norv ( NULL )); 3173 = ( CLIENT *) dbv -> _hd ; 3175 i( tx = NULL ) 3176 msg . tx_id = 0; 3178 msg . tx_id = tx -> txnid ; 3179 `memy ( msg . gid , gid, 128); 3181 yp = `__db_txn_e_4007 (& msg , ); 3182 i( yp = NULL ) { 3183 `__db_rx ( dbv -> v , `_r ( , "Berkeley DB")); 3184 t = DB_NOSERVER ; 3185 out ; 3187 t = yp -> us ; 3188 out : 3189 i( yp ! NULL ) 3190 `xdr_ (( xdroc_t ) xdr___txn_e_y , (*) yp ); 3191 ( t ); 3192 } } 3201 $__db_dbp_ ( dbp ) 3202 DB * dbp ; 3204 dbp -> assoc = __db_db_assoc ; 3205 dbp -> o = __db_db_o ; 3206 dbp -> com = 3207 ((*)( DB *, DB_TXN *, DBT *, DBT *, DB_COMPACT *, u_t32_t , DBT *)) 3208 __db_dbp_g ; 3209 dbp -> curs = __db_db_curs ; 3210 dbp -> d = __db_db_d ; 3211 dbp -> fd = 3212 ((*)( DB *, *)) 3213 __db_dbp_g ; 3214 dbp -> g = __db_db_g ; 3215 dbp -> g_bt_mkey = __db_db_g_bt_mkey ; 3216 dbp -> g_chesize = 3217 ((*)( DB *, u_t32_t *, u_int32_t *, *)) 3218 __db_dbp_g ; 3219 dbp -> g_dbme = __db_db_g_dbme ; 3220 dbp -> g_y_ags = __db_db_g_y_ags ; 3221 dbp -> g_ags = __db_db_g_ags ; 3222 dbp -> g_h_f = __db_db_g_h_f ; 3223 dbp -> g_h_m = __db_db_g_h_m ; 3224 dbp -> g_ld = __db_db_g_ld ; 3225 dbp -> g_mpf = 3226 ( DB_MPOOLFILE * (*)( DB *)) 3227 __db_dbp_g ; 3228 dbp -> g_ݒ_ags = __db_db_g_ݒ_ags ; 3229 dbp -> g_gesize = __db_db_g_gesize ; 3230 dbp -> g_iܙy = __db_db_g_iܙy ; 3231 dbp -> g_q_exsize = __db_db_g_q_exsize ; 3232 dbp -> g__dim = __db_db_g__dim ; 3233 dbp -> g__n = __db_db_g__n ; 3234 dbp -> g__d = __db_db_g__d ; 3235 dbp -> g__sour = 3236 ((*)( DB *, const **)) 3237 __db_dbp_g ; 3238 dbp -> jo = __db_db_jo ; 3239 dbp -> key_nge = __db_db_key_nge ; 3240 dbp -> ݒ = __db_db_ݒ ; 3241 dbp -> pg = __db_db_pg ; 3242 dbp -> put = __db_db_put ; 3243 dbp -> move = __db_db_move ; 3244 dbp -> me = __db_db_me ; 3245 dbp -> t_loc = 3246 ((*)( DB *, *(*)( size_t ), *(*)(*, size_t), (*)(*))) 3247 __db_dbp_g ; 3248 dbp -> t_nd_o = 3249 ((*)( DB *, (*)(DB *, DBT *, db_o_t ))) 3250 __db_dbp_g ; 3251 dbp -> t_bt_com = 3252 ((*)( DB *, (*)(DB *, cڡ DBT *, const DBT *))) 3253 __db_dbp_g ; 3254 dbp -> t_bt_mkey = __db_db_t_bt_mkey ; 3255 dbp -> t_bt_efix = 3256 ((*)( DB *, `size_t (*)(DB *, cڡ DBT *, const DBT *))) 3257 __db_dbp_g ; 3258 dbp -> t_chesize = 3259 ((*)( DB *, u_t32_t , u_int32_t, )) 3260 __db_dbp_g ; 3261 dbp -> t_dup_com = 3262 ((*)( DB *, (*)(DB *, cڡ DBT *, const DBT *))) 3263 __db_dbp_g ; 3264 dbp -> t_y = __db_db_t_y ; 3265 dbp -> t_edback = 3266 ((*)( DB *, (*)(DB *, , ))) 3267 __db_dbp_g ; 3268 dbp -> t_ags = __db_db_t_ags ; 3269 dbp -> t_h_com = 3270 ((*)( DB *, (*)(DB *, cڡ DBT *, const DBT *))) 3271 __db_dbp_g ; 3272 dbp -> t_h_f = __db_db_t_h_f ; 3273 dbp -> t_h_hash = 3274 ((*)( DB *, `u_t32_t (*)(DB *, cڡ *, u_t32_t ))) 3275 __db_dbp_g ; 3276 dbp -> t_h_m = __db_db_t_h_m ; 3277 dbp -> t_ld = __db_db_t_ld ; 3278 dbp -> t_gesize = __db_db_t_gesize ; 3279 dbp -> t_nic = 3280 ((*)( DB *, (*)( DB_ENV *, ))) 3281 __db_dbp_g ; 3282 dbp -> t_iܙy = __db_db_t_iܙy ; 3283 dbp -> t_q_exsize = __db_db_t_q_exsize ; 3284 dbp -> t__dim = __db_db_t__dim ; 3285 dbp -> t__n = __db_db_t__n ; 3286 dbp -> t__d = __db_db_t__d ; 3287 dbp -> t__sour = 3288 ((*)( DB *, const *)) 3289 __db_dbp_g ; 3290 dbp -> = __db_db_ ; 3291 dbp -> _t = 3292 ((*)( DB *, u_t32_t )) 3293 __db_dbp_g ; 3294 dbp -> sync = __db_db_sync ; 3295 dbp -> un = __db_db_un ; 3296 dbp -> upgde = 3297 ((*)( DB *, cڡ *, u_t32_t )) 3298 __db_dbp_g ; 3299 dbp -> vify = 3300 ((*)( DB *, cڡ *, cڡ *, FILE *, u_t32_t )) 3301 __db_dbp_g ; 3303 } } 3312 $__db_dbc_ ( dbc ) 3313 DBC * dbc ; 3315 dbc -> o = dbc-> c_o = __db_dbc_o ; 3316 dbc -> cou = dbc-> c_cou = __db_dbc_cou ; 3317 dbc -> d = dbc-> c_d = __db_dbc_d ; 3318 dbc -> dup = dbc-> c_dup = __db_dbc_dup ; 3319 dbc -> g = dbc-> c_g = __db_dbc_g ; 3320 dbc -> g_iܙy = __db_dbc_g_iܙy ; 3321 dbc -> pg = dbc-> c_pg = __db_dbc_pg ; 3322 dbc -> put = dbc-> c_put = __db_dbc_put ; 3323 dbc -> t_iܙy = __db_dbc_t_iܙy ; 3325 } } 3334 $__db_dbv_ ( dbv ) 3335 DB_ENV * dbv ; 3337 dbv -> cdsgroup_beg = __db_v_cdsgroup_beg ; 3338 dbv -> o = __db_v_o ; 3339 dbv -> dbmove = __db_v_dbmove ; 3340 dbv -> dbme = __db_v_dbme ; 3341 dbv -> chk = 3342 ((*)( DB_ENV *, u_t32_t )) 3343 __db_dbv_g ; 3344 dbv -> feid_t = 3345 ((*)( DB_ENV *, cڡ *, u_t32_t )) 3346 __db_dbv_g ; 3347 dbv -> g_che_max = 3348 ((*)( DB_ENV *, u_t32_t *, u_int32_t *)) 3349 __db_dbv_g ; 3350 dbv -> g_chesize = __db_v_g_chesize ; 3351 dbv -> g_da_ds = 3352 ((*)( DB_ENV *, const ***)) 3353 __db_dbv_g ; 3354 dbv -> g_y_ags = __db_v_g_y_ags ; 3355 dbv -> g_ags = __db_v_g_ags ; 3356 dbv -> g_home = __db_v_g_home ; 3357 dbv -> g_rmed_d_mode = 3358 ((*)( DB_ENV *, const **)) 3359 __db_dbv_g ; 3360 dbv -> g_lg_bsize = 3361 ((*)( DB_ENV *, u_t32_t *)) 3362 __db_dbv_g ; 3363 dbv -> g_lg_d = 3364 ((*)( DB_ENV *, const **)) 3365 __db_dbv_g ; 3366 dbv -> g_lg_femode = 3367 ((*)( DB_ENV *, *)) 3368 __db_dbv_g ; 3369 dbv -> g_lg_max = 3370 ((*)( DB_ENV *, u_t32_t *)) 3371 __db_dbv_g ; 3372 dbv -> g_lg_gimax = 3373 ((*)( DB_ENV *, u_t32_t *)) 3374 __db_dbv_g ; 3375 dbv -> g_lk_cis = 3376 ((*)( DB_ENV *, cڡ u_t8_t **, *)) 3377 __db_dbv_g ; 3378 dbv -> g_lk_de = 3379 ((*)( DB_ENV *, u_t32_t *)) 3380 __db_dbv_g ; 3381 dbv -> g_lk_max_locks = 3382 ((*)( DB_ENV *, u_t32_t *)) 3383 __db_dbv_g ; 3384 dbv -> g_lk_max_locks = 3385 ((*)( DB_ENV *, u_t32_t *)) 3386 __db_dbv_g ; 3387 dbv -> g_lk_max_objes = 3388 ((*)( DB_ENV *, u_t32_t *)) 3389 __db_dbv_g ; 3390 dbv -> g_lk_is = 3391 ((*)( DB_ENV *, u_t32_t *)) 3392 __db_dbv_g ; 3393 dbv -> g_mp_max_ݒfd = 3394 ((*)( DB_ENV *, *)) 3395 __db_dbv_g ; 3396 dbv -> g_mp_max_wre = 3397 ((*)( DB_ENV *, *, db_timeout_t *)) 3398 __db_dbv_g ; 3399 dbv -> g_mp_mmsize = 3400 ((*)( DB_ENV *, size_t *)) 3401 __db_dbv_g ; 3402 dbv -> g_ݒ_ags = __db_v_g_ݒ_ags ; 3403 dbv -> g_shm_key = 3404 ((*)( DB_ENV *, *)) 3405 __db_dbv_g ; 3406 dbv -> g_thad_cou = 3407 ((*)( DB_ENV *, u_t32_t *)) 3408 __db_dbv_g ; 3409 dbv -> g_timeout = 3410 ((*)( DB_ENV *, db_timeout_t *, u_t32_t )) 3411 __db_dbv_g ; 3412 dbv -> g_tmp_d = 3413 ((*)( DB_ENV *, const **)) 3414 __db_dbv_g ; 3415 dbv -> g_tx_max = 3416 ((*)( DB_ENV *, u_t32_t *)) 3417 __db_dbv_g ; 3418 dbv -> g_tx_timeamp = 3419 ((*)( DB_ENV *, time_t *)) 3420 __db_dbv_g ; 3421 dbv -> g_vbo = 3422 ((*)( DB_ENV *, u_t32_t , *)) 3423 __db_dbv_g ; 3424 dbv -> lock_de = 3425 ((*)( DB_ENV *, u_t32_t , u_int32_t, *)) 3426 __db_dbv_g ; 3427 dbv -> lock_g = 3428 ((*)( DB_ENV *, u_t32_t , u_t32_t, cڡ DBT *, db_lockmode_t , DB_LOCK *)) 3429 __db_dbv_g ; 3430 dbv -> lock_id = 3431 ((*)( DB_ENV *, u_t32_t *)) 3432 __db_dbv_g ; 3433 dbv -> lock_id_ = 3434 ((*)( DB_ENV *, u_t32_t )) 3435 __db_dbv_g ; 3436 dbv -> lock_put = 3437 ((*)( DB_ENV *, DB_LOCK *)) 3438 __db_dbv_g ; 3439 dbv -> lock_ = 3440 ((*)( DB_ENV *, DB_LOCK_STAT **, u_t32_t )) 3441 __db_dbv_g ; 3442 dbv -> lock__t = 3443 ((*)( DB_ENV *, u_t32_t )) 3444 __db_dbv_g ; 3445 dbv -> lock_vec = 3446 ((*)( DB_ENV *, u_t32_t , u_t32_t, DB_LOCKREQ *, , DB_LOCKREQ **)) 3447 __db_dbv_g ; 3448 dbv -> log_chive = 3449 ((*)( DB_ENV *, ***, u_t32_t )) 3450 __db_dbv_g ; 3451 dbv -> log_curs = 3452 ((*)( DB_ENV *, DB_LOGC **, u_t32_t )) 3453 __db_dbv_g ; 3454 dbv -> log_fe = 3455 ((*)( DB_ENV *, cڡ DB_LSN *, *, size_t )) 3456 __db_dbv_g ; 3457 dbv -> log_ush = 3458 ((*)( DB_ENV *, cڡ DB_LSN *)) 3459 __db_dbv_g ; 3460 dbv -> log_g_cfig = 3461 ((*)( DB_ENV *, u_t32_t , *)) 3462 __db_dbv_g ; 3463 dbv -> log_tf = 3464 ((*)( DB_ENV *, DB_TXN *, const *, ...)) 3465 __db_dbv_g ; 3466 dbv -> log_put = 3467 ((*)( DB_ENV *, DB_LSN *, cڡ DBT *, u_t32_t )) 3468 __db_dbv_g ; 3469 dbv -> log_t_cfig = 3470 ((*)( DB_ENV *, u_t32_t , )) 3471 __db_dbv_g ; 3472 dbv -> log_ = 3473 ((*)( DB_ENV *, DB_LOG_STAT **, u_t32_t )) 3474 __db_dbv_g ; 3475 dbv -> log__t = 3476 ((*)( DB_ENV *, u_t32_t )) 3477 __db_dbv_g ; 3478 dbv -> l_t = 3479 ((*)( DB_ENV *, cڡ *, u_t32_t )) 3480 __db_dbv_g ; 3481 dbv -> memp_f = 3482 ((*)( DB_ENV *, DB_MPOOLFILE **, u_t32_t )) 3483 __db_dbv_g ; 3484 dbv -> memp_gi = 3485 ((*)( DB_ENV *, , (*)(DB_ENV *, db_pgno_t , *, DBT *), (*)(DB_ENV *, db_pgno_t, *, DBT *))) 3486 __db_dbv_g ; 3487 dbv -> memp_ = 3488 ((*)( DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***, u_t32_t )) 3489 __db_dbv_g ; 3490 dbv -> memp__t = 3491 ((*)( DB_ENV *, u_t32_t )) 3492 __db_dbv_g ; 3493 dbv -> memp_sync = 3494 ((*)( DB_ENV *, DB_LSN *)) 3495 __db_dbv_g ; 3496 dbv -> memp_ick = 3497 ((*)( DB_ENV *, , *)) 3498 __db_dbv_g ; 3499 dbv -> mux_loc = 3500 ((*)( DB_ENV *, u_t32_t , u_int32_t *)) 3501 __db_dbv_g ; 3502 dbv -> mux_ = 3503 ((*)( DB_ENV *, u_t32_t )) 3504 __db_dbv_g ; 3505 dbv -> mux_g_ign = 3506 ((*)( DB_ENV *, u_t32_t *)) 3507 __db_dbv_g ; 3508 dbv -> mux_g_emt = 3509 ((*)( DB_ENV *, u_t32_t *)) 3510 __db_dbv_g ; 3511 dbv -> mux_g_max = 3512 ((*)( DB_ENV *, u_t32_t *)) 3513 __db_dbv_g ; 3514 dbv -> mux_g_s_s = 3515 ((*)( DB_ENV *, u_t32_t *)) 3516 __db_dbv_g ; 3517 dbv -> mux_lock = 3518 ((*)( DB_ENV *, u_t32_t )) 3519 __db_dbv_g ; 3520 dbv -> mux_t_ign = 3521 ((*)( DB_ENV *, u_t32_t )) 3522 __db_dbv_g ; 3523 dbv -> mux_t_emt = 3524 ((*)( DB_ENV *, u_t32_t )) 3525 __db_dbv_g ; 3526 dbv -> mux_t_max = 3527 ((*)( DB_ENV *, u_t32_t )) 3528 __db_dbv_g ; 3529 dbv -> mux_t_s_s = 3530 ((*)( DB_ENV *, u_t32_t )) 3531 __db_dbv_g ; 3532 dbv -> mux_ = 3533 ((*)( DB_ENV *, DB_MUTEX_STAT **, u_t32_t )) 3534 __db_dbv_g ; 3535 dbv -> mux__t = 3536 ((*)( DB_ENV *, u_t32_t )) 3537 __db_dbv_g ; 3538 dbv -> mux_uock = 3539 ((*)( DB_ENV *, u_t32_t )) 3540 __db_dbv_g ; 3541 dbv -> ݒ = __db_v_ݒ ; 3542 dbv -> move = __db_v_move ; 3543 dbv -> p_e = 3544 ((*)( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)) 3545 __db_dbv_g ; 3546 dbv -> p_ush = 3547 ((*)( DB_ENV *)) 3548 __db_dbv_g ; 3549 dbv -> p_g_ockskew = 3550 ((*)( DB_ENV *, u_t32_t *, u_int32_t *)) 3551 __db_dbv_g ; 3552 dbv -> p_g_cfig = 3553 ((*)( DB_ENV *, u_t32_t , *)) 3554 __db_dbv_g ; 3555 dbv -> p_g_lim = 3556 ((*)( DB_ENV *, u_t32_t *, u_int32_t *)) 3557 __db_dbv_g ; 3558 dbv -> p_g_nses = 3559 ((*)( DB_ENV *, u_t32_t *)) 3560 __db_dbv_g ; 3561 dbv -> p_g_iܙy = 3562 ((*)( DB_ENV *, u_t32_t *)) 3563 __db_dbv_g ; 3564 dbv -> p_g_que = 3565 ((*)( DB_ENV *, u_t32_t *, u_int32_t *)) 3566 __db_dbv_g ; 3567 dbv -> p_g_timeout = 3568 ((*)( DB_ENV *, , db_timeout_t *)) 3569 __db_dbv_g ; 3570 dbv -> p_oss_mesge = 3571 ((*)( DB_ENV *, DBT *, DBT *, , DB_LSN *)) 3572 __db_dbv_g ; 3573 dbv -> p_t_ockskew = 3574 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3575 __db_dbv_g ; 3576 dbv -> p_t_cfig = 3577 ((*)( DB_ENV *, u_t32_t , )) 3578 __db_dbv_g ; 3579 dbv -> p_t_lim = 3580 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3581 __db_dbv_g ; 3582 dbv -> p_t_nses = 3583 ((*)( DB_ENV *, u_t32_t )) 3584 __db_dbv_g ; 3585 dbv -> p_t_iܙy = 3586 ((*)( DB_ENV *, u_t32_t )) 3587 __db_dbv_g ; 3588 dbv -> p_t_que = 3589 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3590 __db_dbv_g ; 3591 dbv -> p_t_timeout = 3592 ((*)( DB_ENV *, , db_timeout_t )) 3593 __db_dbv_g ; 3594 dbv -> p_t_t = 3595 ((*)( DB_ENV *, , (*)(DB_ENV *, cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t ))) 3596 __db_dbv_g ; 3597 dbv -> p_t = 3598 ((*)( DB_ENV *, DBT *, u_t32_t )) 3599 __db_dbv_g ; 3600 dbv -> p_ = 3601 ((*)( DB_ENV *, DB_REP_STAT **, u_t32_t )) 3602 __db_dbv_g ; 3603 dbv -> p__t = 3604 ((*)( DB_ENV *, u_t32_t )) 3605 __db_dbv_g ; 3606 dbv -> p_sync = 3607 ((*)( DB_ENV *, u_t32_t )) 3608 __db_dbv_g ; 3609 dbv -> pmgr_add_me_se = 3610 ((*)( DB_ENV *, cڡ *, u_t , *, u_t32_t )) 3611 __db_dbv_g ; 3612 dbv -> pmgr_g_ack_picy = 3613 ((*)( DB_ENV *, *)) 3614 __db_dbv_g ; 3615 dbv -> pmgr_t_ack_picy = 3616 ((*)( DB_ENV *, )) 3617 __db_dbv_g ; 3618 dbv -> pmgr_t_lol_se = 3619 ((*)( DB_ENV *, cڡ *, u_t , u_t32_t )) 3620 __db_dbv_g ; 3621 dbv -> pmgr_se_li = 3622 ((*)( DB_ENV *, u_t *, DB_REPMGR_SITE **)) 3623 __db_dbv_g ; 3624 dbv -> pmgr_t = 3625 ((*)( DB_ENV *, , u_t32_t )) 3626 __db_dbv_g ; 3627 dbv -> pmgr_ = 3628 ((*)( DB_ENV *, DB_REPMGR_STAT **, u_t32_t )) 3629 __db_dbv_g ; 3630 dbv -> pmgr__t = 3631 ((*)( DB_ENV *, u_t32_t )) 3632 __db_dbv_g ; 3633 dbv -> t_loc = 3634 ((*)( DB_ENV *, *(*)( size_t ), *(*)(*, size_t), (*)(*))) 3635 __db_dbv_g ; 3636 dbv -> t_p_dich = 3637 ((*)( DB_ENV *, (*)(DB_ENV *, DBT *, DB_LSN *, db_cs ))) 3638 __db_dbv_g ; 3639 dbv -> t_che_max = 3640 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3641 __db_dbv_g ; 3642 dbv -> t_chesize = __db_v_t_chesize ; 3643 dbv -> t_da_d = 3644 ((*)( DB_ENV *, const *)) 3645 __db_dbv_g ; 3646 dbv -> t_y = __db_v_t_y ; 3647 dbv -> t_evt_nify = 3648 ((*)( DB_ENV *, (*)(DB_ENV *, u_t32_t , *))) 3649 __db_dbv_g ; 3650 dbv -> t_edback = 3651 ((*)( DB_ENV *, (*)(DB_ENV *, , ))) 3652 __db_dbv_g ; 3653 dbv -> t_ags = __db_v_t_ags ; 3654 dbv -> t_rmed_d_mode = 3655 ((*)( DB_ENV *, const *)) 3656 __db_dbv_g ; 3657 dbv -> t_ilive = 3658 ((*)( DB_ENV *, (*)(DB_ENV *, pid_t , db_thadid_t , u_t32_t ))) 3659 __db_dbv_g ; 3660 dbv -> t_lg_bsize = 3661 ((*)( DB_ENV *, u_t32_t )) 3662 __db_dbv_g ; 3663 dbv -> t_lg_d = 3664 ((*)( DB_ENV *, const *)) 3665 __db_dbv_g ; 3666 dbv -> t_lg_femode = 3667 ((*)( DB_ENV *, )) 3668 __db_dbv_g ; 3669 dbv -> t_lg_max = 3670 ((*)( DB_ENV *, u_t32_t )) 3671 __db_dbv_g ; 3672 dbv -> t_lg_gimax = 3673 ((*)( DB_ENV *, u_t32_t )) 3674 __db_dbv_g ; 3675 dbv -> t_lk_cis = 3676 ((*)( DB_ENV *, u_t8_t *, )) 3677 __db_dbv_g ; 3678 dbv -> t_lk_de = 3679 ((*)( DB_ENV *, u_t32_t )) 3680 __db_dbv_g ; 3681 dbv -> t_lk_max_locks = 3682 ((*)( DB_ENV *, u_t32_t )) 3683 __db_dbv_g ; 3684 dbv -> t_lk_max_locks = 3685 ((*)( DB_ENV *, u_t32_t )) 3686 __db_dbv_g ; 3687 dbv -> t_lk_max_objes = 3688 ((*)( DB_ENV *, u_t32_t )) 3689 __db_dbv_g ; 3690 dbv -> t_lk_is = 3691 ((*)( DB_ENV *, u_t32_t )) 3692 __db_dbv_g ; 3693 dbv -> t_mp_max_ݒfd = 3694 ((*)( DB_ENV *, )) 3695 __db_dbv_g ; 3696 dbv -> t_mp_max_wre = 3697 ((*)( DB_ENV *, , db_timeout_t )) 3698 __db_dbv_g ; 3699 dbv -> t_mp_mmsize = 3700 ((*)( DB_ENV *, size_t )) 3701 __db_dbv_g ; 3702 dbv -> t_nic = 3703 ((*)( DB_ENV *, (*)(DB_ENV *, ))) 3704 __db_dbv_g ; 3705 dbv -> t_c_rv = __db_v_t_c_rv ; 3706 dbv -> t_shm_key = 3707 ((*)( DB_ENV *, )) 3708 __db_dbv_g ; 3709 dbv -> t_thad_cou = 3710 ((*)( DB_ENV *, u_t32_t )) 3711 __db_dbv_g ; 3712 dbv -> t_thad_id = 3713 ((*)( DB_ENV *, (*)(DB_ENV *, pid_t *, db_thadid_t *))) 3714 __db_dbv_g ; 3715 dbv -> t_thad_id_rg = 3716 ((*)( DB_ENV *, *(*)(DB_ENV *, pid_t , db_thadid_t , *))) 3717 __db_dbv_g ; 3718 dbv -> t_timeout = 3719 ((*)( DB_ENV *, u_t32_t , u_int32_t)) 3720 __db_dbv_g ; 3721 dbv -> t_tmp_d = 3722 ((*)( DB_ENV *, const *)) 3723 __db_dbv_g ; 3724 dbv -> t_tx_max = 3725 ((*)( DB_ENV *, u_t32_t )) 3726 __db_dbv_g ; 3727 dbv -> t_tx_timeamp = 3728 ((*)( DB_ENV *, time_t *)) 3729 __db_dbv_g ; 3730 dbv -> t_vbo = 3731 ((*)( DB_ENV *, u_t32_t , )) 3732 __db_dbv_g ; 3733 dbv -> _t = 3734 ((*)( DB_ENV *, u_t32_t )) 3735 __db_dbv_g ; 3736 dbv -> txn_beg = __db_v_txn_beg ; 3737 dbv -> txn_checkpot = 3738 ((*)( DB_ENV *, u_t32_t , u_int32_t, u_int32_t)) 3739 __db_dbv_g ; 3740 dbv -> txn_cov = __db_v_txn_cov ; 3741 dbv -> txn_ = 3742 ((*)( DB_ENV *, DB_TXN_STAT **, u_t32_t )) 3743 __db_dbv_g ; 3744 dbv -> txn__t = 3745 ((*)( DB_ENV *, u_t32_t )) 3746 __db_dbv_g ; 3748 } } 3757 $__db_txn_ ( txn ) 3758 DB_TXN * txn ; 3760 txn -> abt = __db_txn_abt ; 3761 txn -> comm = __db_txn_comm ; 3762 txn -> disrd = __db_txn_disrd ; 3763 txn -> g_me = 3764 ((*)( DB_TXN *, const **)) 3765 __db_txn_g ; 3766 txn -> e = __db_txn_e ; 3767 txn -> t_me = 3768 ((*)( DB_TXN *, const *)) 3769 __db_txn_g ; 3771 } } @../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 ( e , db , ig ) do { \ 23 i(( db )-> da ! NULL && (db)->d! ig ) { \ 24 `__os_ (( e ), ( 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 ENV * v ; 62 t ; 64 `COMPQUIET ( home , NULL ); 65 `COMPQUIET ( mode , 0); 70 i( yp -> us != 0) 71 ( yp -> us ); 73 v = dbv ->env; 74 dbv -> _id = yp -> v_id ; 80 i( `LF_ISSET ( DB_INIT_TXN )) { 81 i(( t = `__os_oc ( v , 1, ( DB_TXNMGR ), & tmg )) != 0) 82 ( t ); 83 `TAILQ_INIT (& tmg -> txn_cha ); 84 tmg -> v =nv; 85 v -> tx_hd = tmg ; 88 ( yp -> us ); 89 } } 96 $__db_v_move_t ( dbv , home , ags , yp ) 97 DB_ENV * dbv ; 98 cڡ * home ; 99 u_t32_t ags ; 100 __v_move_y * yp ; 102 t ; 104 `COMPQUIET ( home , NULL ); 105 `COMPQUIET ( ags , 0); 107 t = `__db_esh ( dbv ); 108 `__db_v_deroy ( dbv ); 109 i( yp -> us =0 && t != 0) 110 ( t ); 112 ( yp -> us ); 113 } } 119 $__db_txn_abt_t ( tx , yp ) 120 DB_TXN * tx ; 121 __txn_abt_y * yp ; 123 `__db_txn_d ( tx ); 124 ( yp -> us ); 125 } } 132 $__db_v_txn_beg_t ( dbv , , txp , ags , yp ) 133 DB_ENV * dbv ; 134 DB_TXN * , ** txp ; 135 u_t32_t ags ; 136 __v_txn_beg_y * yp ; 138 DB_TXN * txn ; 139 ENV * v ; 140 t ; 142 `COMPQUIET ( ags , 0); 144 i( yp -> us != 0) 145 ( yp -> us ); 147 v = dbv ->env; 148 i(( t = `__os_oc ( v , 1, ( DB_TXN ), & txn )) != 0) 149 ( t ); 156 `__db_txn_tup ( v , txn , , ( u_t32_t ) yp -> txnid_id ); 157 * txp = txn ; 158 ( yp -> us ); 159 } } 166 $__db_v_cdsgroup_beg_t ( dbv , txp , yp ) 167 DB_ENV * dbv ; 168 DB_TXN ** txp ; 169 __v_cdsgroup_beg_y * yp ; 171 DB_TXN * txn ; 172 ENV * v ; 173 t ; 175 i( yp -> us != 0) 176 ( yp -> us ); 178 v = dbv ->env; 179 i(( t = `__os_oc ( v , 1, ( DB_TXN ), & txn )) != 0) 180 ( t ); 187 `__db_txn_tup ( v , txn , NULL , ( u_t32_t ) yp -> txnid_id ); 188 * txp = txn ; 189 ( yp -> us ); 190 } } 197 $__db_txn_comm_t ( tx , ags , yp ) 198 DB_TXN * tx ; 199 u_t32_t ags ; 200 __txn_comm_y * yp ; 202 `COMPQUIET ( ags , 0); 204 `__db_txn_d ( tx ); 205 ( yp -> us ); 206 } } 213 $__db_txn_disrd_t ( tx , ags , yp ) 214 DB_TXN * tx ; 215 u_t32_t ags ; 216 __txn_disrd_y * yp ; 218 `COMPQUIET ( ags , 0); 220 `__db_txn_d ( tx ); 221 ( yp -> us ); 222 } } 229 $__db_v_txn_cov_t ( dbv , li , cou , , ags , yp ) 230 DB_ENV * dbv ; 231 DB_PREPLIST * li ; 232 cou ; 233 * ; 234 u_t32_t ags ; 235 __v_txn_cov_y * yp ; 237 DB_PREPLIST * ; 238 DB_TXN * txǼay , * txn ; 239 ENV * v ; 240 u_t32_t i , * txnid ; 241 u_t8_t * gid ; 242 t ; 244 `COMPQUIET ( ags , 0); 245 `COMPQUIET ( cou , 0); 247 i( yp -> us != 0) 248 ( yp -> us ); 250 * = () yp -> tcou ; 252 i( yp -> tcou == 0) 253 ( yp -> us ); 255 v = dbv ->env; 256 i(( t = `__os_oc ( 257 v , yp -> tcou , ( DB_TXN ), & txǼay )) != 0) 258 ( t ); 263 i = 0; 264 txn = txǼay ; 265 txnid = ( u_t32_t *) yp -> txn . txn_v ; 266 gid = ( u_t8_t *) yp ->gid. gid_v ; 267 = li ; 268 i ++ < yp -> tcou ) { 269 `__db_txn_tup ( v , txn , NULL , * txnid ); 270 -> txn =xn; 271 `memy ( -> gid , gid, DB_XIDDATASIZE ); 275 txn ++; 276 gid + DB_XIDDATASIZE ; 277 txnid ++; 278 ++; 282 } } 288 $__db_db_o_t ( dbp , ags , yp ) 289 DB * dbp ; 290 u_t32_t ags ; 291 __db_o_y * yp ; 293 t ; 295 `COMPQUIET ( ags , 0); 297 t = `__db_dbo_comm ( dbp ); 299 i( yp -> us != 0) 300 ( yp -> us ); 302 ( t ); 303 } } 310 $__db_db__t ( dbp , dbv , ags , yp ) 311 DB * dbp ; 312 DB_ENV * dbv ; 313 u_t32_t ags ; 314 __db__y * yp ; 316 `COMPQUIET ( dbv , NULL ); 317 `COMPQUIET ( ags , 0); 319 i( yp -> us != 0) 320 ( yp -> us ); 321 dbp -> _id = yp -> db_id ; 322 ( yp -> us ); 323 } } 330 $__db_db_g_t ( dbp , tx , key , da , ags , yp ) 331 DB * dbp ; 332 DB_TXN * tx ; 333 DBT * key , * da ; 334 u_t32_t ags ; 335 __db_g_y * yp ; 337 ENV * v ; 338 t ; 339 * dkey ; 341 `COMPQUIET ( tx , NULL ); 342 `COMPQUIET ( ags , 0); 344 i( yp -> us != 0) 345 ( yp -> us ); 347 v = dbp ->env; 348 t = 0; 350 dkey = key -> da ; 351 t = `__db_tcy ( v , key , yp -> keyda . keyda_v , 352 yp -> keyda . keyda_n , & dbp -> my_rkey . da , 353 & dbp -> my_rkey . un ); 354 i( t ) 355 ( t ); 356 t = `__db_tcy ( v , da , yp -> dada . dada_v , 357 yp -> dada . dada_n , & dbp -> my_rda . da , 358 & dbp -> my_rda . un ); 363 i( t ) 364 `FREE_IF_CHANGED ( v , key , dkey ); 365 ( t ); 366 } } 373 $__db_db_key_nge_t ( dbp , tx , key , nge , ags , yp ) 374 DB * dbp ; 375 DB_TXN * tx ; 376 DBT * key ; 377 DB_KEY_RANGE * nge ; 378 u_t32_t ags ; 379 __db_key_nge_y * yp ; 381 `COMPQUIET ( dbp , NULL ); 382 `COMPQUIET ( tx , NULL ); 383 `COMPQUIET ( key , NULL ); 384 `COMPQUIET ( ags , 0); 386 i( yp -> us != 0) 387 ( yp -> us ); 388 nge -> ss = yp ->less; 389 nge -> equ = yp ->equal; 390 nge -> g = yp ->greater; 391 ( yp -> us ); 392 } } 399 $__db_db_ݒ_t ( dbp , txn , me , subdb , ty , ags , mode , yp ) 400 DB * dbp ; 401 DB_TXN * txn ; 402 cڡ * me , * subdb ; 403 DBTYPE ty ; 404 u_t32_t ags ; 405 mode ; 406 __db_ݒ_y * yp ; 408 `COMPQUIET ( txn , NULL ); 409 `COMPQUIET ( me , NULL ); 410 `COMPQUIET ( subdb , NULL ); 411 `COMPQUIET ( ty , DB_UNKNOWN ); 412 `COMPQUIET ( ags , 0); 413 `COMPQUIET ( mode , 0); 415 i( yp -> us == 0) { 416 dbp -> _id = yp -> db_id ; 417 dbp -> ty = ( DBTYPE ) yp ->type; 428 () `__db_t_ld ( dbp , () yp -> ld ); 434 `F_SET ( dbp , DB_AM_OPEN_CALLED ); 436 ( yp -> us ); 437 } } 444 $__db_db_pg_t ( dbp , tx , skey , pkey , da , ags , yp ) 445 DB * dbp ; 446 DB_TXN * tx ; 447 DBT * skey ; 448 DBT * pkey ; 449 DBT * da ; 450 u_t32_t ags ; 451 __db_pg_y * yp ; 453 ENV * v ; 454 t ; 455 * dskey , * dpkey ; 457 `COMPQUIET ( tx , NULL ); 458 `COMPQUIET ( ags , 0); 460 i( yp -> us != 0) 461 ( yp -> us ); 463 v = dbp ->env; 464 t = 0; 466 dskey = skey -> da ; 467 t = `__db_tcy ( v , skey , yp -> skeyda . skeyda_v , 468 yp -> skeyda . skeyda_n , & dbp -> my_rskey . da , 469 & dbp -> my_rskey . un ); 470 i( t ) 471 ( t ); 473 dpkey = pkey -> da ; 474 i(( t = `__db_tcy ( v , pkey , yp -> pkeyda . pkeyda_v , 475 yp -> pkeyda . pkeyda_n , & dbp -> my_rkey . da , 476 & dbp -> my_rkey . un )) != 0) 477 r ; 478 t = `__db_tcy ( v , da , yp -> dada . dada_v , 479 yp -> dada . dada_n , & dbp -> my_rda . da , 480 & dbp -> my_rda . un ); 482 i( t ) { 483 r : `FREE_IF_CHANGED ( v , skey , dskey ); 484 `FREE_IF_CHANGED ( v , pkey , dpkey ); 486 ( t ); 487 } } 494 $__db_db_put_t ( dbp , tx , key , da , ags , yp ) 495 DB * dbp ; 496 DB_TXN * tx ; 497 DBT * key , * da ; 498 u_t32_t ags ; 499 __db_put_y * yp ; 501 t ; 503 `COMPQUIET ( dbp , NULL ); 504 `COMPQUIET ( tx , NULL ); 505 `COMPQUIET ( da , NULL ); 507 t = yp -> us ; 508 i( yp -> us =0 && ( ags = DB_APPEND )) 509 *( db_o_t *) key -> da = 510 *( db_o_t *) yp -> keyda . keyda_v ; 511 ( t ); 512 } } 519 $__db_db_move_t ( dbp , me , subdb , ags , yp ) 520 DB * dbp ; 521 cڡ * me , * subdb ; 522 u_t32_t ags ; 523 __db_move_y * yp ; 525 t ; 527 `COMPQUIET ( me , 0); 528 `COMPQUIET ( subdb , 0); 529 `COMPQUIET ( ags , 0); 531 t = `__db_dbo_comm ( dbp ); 533 i( yp -> us != 0) 534 ( yp -> us ); 536 ( t ); 537 } } 544 $__db_db_me_t ( dbp , me , subdb , wme , ags , yp ) 545 DB * dbp ; 546 cڡ * me , * subdb , * wme ; 547 u_t32_t ags ; 548 __db_me_y * yp ; 550 t ; 552 `COMPQUIET ( me , 0); 553 `COMPQUIET ( subdb , 0); 554 `COMPQUIET ( wme , 0); 555 `COMPQUIET ( ags , 0); 557 t = `__db_dbo_comm ( dbp ); 559 i( yp -> us != 0) 560 ( yp -> us ); 562 ( t ); 563 } } 570 $__db_db__t ( dbp , tx , , ags , yp ) 571 DB * dbp ; 572 DB_TXN * tx ; 573 * ; 574 u_t32_t ags ; 575 __db__y * yp ; 577 size_t n ; 578 u_t32_t i , * q , * p , * t ; 579 t ; 581 `COMPQUIET ( ags , 0); 582 `COMPQUIET ( tx , NULL ); 584 i( yp -> us !0 || = NULL ) 585 ( yp -> us ); 587 n = yp -> s . s_n * ( u_t32_t ); 588 i(( t = `__os_umloc ( dbp -> v , n , & t )) != 0) 589 ( t ); 590 i = 0, q = t , p = ( u_t32_t *) yp -> s . s_v ; 591 i < yp -> s . s_n ; i++, q ++, p ++) 592 * q = * p ; 593 *( u_t32_t **) = t ; 595 } } 602 $__db_db_un_t ( dbp , tx , coup , ags , yp ) 603 DB * dbp ; 604 DB_TXN * tx ; 605 u_t32_t * coup , ags ; 606 __db_un_y * yp ; 608 `COMPQUIET ( dbp , NULL ); 609 `COMPQUIET ( tx , NULL ); 610 `COMPQUIET ( ags , 0); 612 i( yp -> us != 0) 613 ( yp -> us ); 614 * coup = yp -> cou ; 616 ( yp -> us ); 617 } } 624 $__db_db_curs_t ( dbp , tx , db , ags , yp ) 625 DB * dbp ; 626 DB_TXN * tx ; 627 DBC ** db ; 628 u_t32_t ags ; 629 __db_curs_y * yp ; 631 `COMPQUIET ( tx , NULL ); 632 `COMPQUIET ( ags , 0); 634 i( yp -> us != 0) 635 ( yp -> us ); 637 ( `__db_c_tup ( yp -> dbcid_id , dbp , db )); 638 } } 645 $__db_db_jo_t ( dbp , curs , db , ags , yp ) 646 DB * dbp ; 647 DBC ** curs , ** db ; 648 u_t32_t ags ; 649 __db_jo_y * yp ; 651 `COMPQUIET ( curs , NULL ); 652 `COMPQUIET ( ags , 0); 654 i( yp -> us != 0) 655 ( yp -> us ); 664 ( `__db_c_tup ( yp -> dbcid_id , dbp , db )); 665 } } 671 $__db_dbc_o_t ( dbc , yp ) 672 DBC * dbc ; 673 __dbc_o_y * yp ; 675 `__db_c_esh ( dbc ); 676 ( yp -> us ); 677 } } 684 $__db_dbc_cou_t ( dbc , coup , ags , yp ) 685 DBC * dbc ; 686 db_o_t * coup ; 687 u_t32_t ags ; 688 __dbc_cou_y * yp ; 690 `COMPQUIET ( dbc , NULL ); 691 `COMPQUIET ( ags , 0); 693 i( yp -> us != 0) 694 ( yp -> us ); 695 * coup = yp -> dupcou ; 697 ( yp -> us ); 698 } } 705 $__db_dbc_dup_t ( dbc , db , ags , yp ) 706 DBC * dbc , ** db ; 707 u_t32_t ags ; 708 __dbc_dup_y * yp ; 710 `COMPQUIET ( ags , 0); 712 i( yp -> us != 0) 713 ( yp -> us ); 715 ( `__db_c_tup ( yp -> dbcid_id , dbc -> dbp , db )); 716 } } 723 $__db_dbc_g_t ( dbc , key , da , ags , yp ) 724 DBC * dbc ; 725 DBT * key , * da ; 726 u_t32_t ags ; 727 __dbc_g_y * yp ; 729 ENV * v ; 730 t ; 731 * dkey ; 733 `COMPQUIET ( ags , 0); 735 i( yp -> us != 0) 736 ( yp -> us ); 738 t = 0; 739 v = dbc ->env; 741 dkey = key -> da ; 742 t = `__db_tcy ( v , key , yp -> keyda . keyda_v , 743 yp -> keyda . keyda_n , & dbc -> my_rkey . da , 744 & dbc -> my_rkey . un ); 745 i( t ) 746 ( t ); 747 t = `__db_tcy ( v , da , yp -> dada . dada_v , 748 yp -> dada . dada_n , & dbc -> my_rda . da , 749 & dbc -> my_rda . un ); 755 i( t ) 756 `FREE_IF_CHANGED ( v , key , dkey ); 757 ( t ); 758 } } 765 $__db_dbc_pg_t ( dbc , skey , pkey , da , ags , yp ) 766 DBC * dbc ; 767 DBT * skey ; 768 DBT * pkey ; 769 DBT * da ; 770 u_t32_t ags ; 771 __dbc_pg_y * yp ; 773 ENV * v ; 774 t ; 775 * dskey , * dpkey ; 777 `COMPQUIET ( ags , 0); 779 i( yp -> us != 0) 780 ( yp -> us ); 782 t = 0; 783 v = dbc ->env; 785 dskey = skey -> da ; 786 t = `__db_tcy ( v , skey , yp -> skeyda . skeyda_v , 787 yp -> skeyda . skeyda_n , & dbc -> my_rskey . da , 788 & dbc -> my_rskey . un ); 789 i( t ) 790 ( t ); 792 dpkey = pkey -> da ; 793 i(( t = `__db_tcy ( v , pkey , yp -> pkeyda . pkeyda_v , 794 yp -> pkeyda . pkeyda_n , & dbc -> my_rkey . da , 795 & dbc -> my_rkey . un )) != 0) 796 r ; 797 t = `__db_tcy ( v , da , yp -> dada . dada_v , 798 yp -> dada . dada_n , & dbc -> my_rda . da , 799 & dbc -> my_rda . un ); 805 i( t ) { 806 r : `FREE_IF_CHANGED ( v , skey , dskey ); 807 `FREE_IF_CHANGED ( v , pkey , dpkey ); 809 ( t ); 810 } } 817 $__db_dbc_put_t ( dbc , key , da , ags , yp ) 818 DBC * dbc ; 819 DBT * key , * da ; 820 u_t32_t ags ; 821 __dbc_put_y * yp ; 823 `COMPQUIET ( da , NULL ); 825 i( yp -> us != 0) 826 ( yp -> us ); 828 i( yp -> us =0 && dbc -> dbp -> ty = DB_RECNO && 829 ( ags = DB_AFTER || fg= DB_BEFORE )) 830 *( db_o_t *) key -> da = 831 *( db_o_t *) yp -> keyda . keyda_v ; 832 ( yp -> us ); 833 } } @../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 ENV * v ; 593 _y * dbv_p , * p ; 594 ri , i , tcou ; 595 u_t32_t * txnidp ; 596 t ; 597 u_t8_t * gid ; 599 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 600 dbv = ( DB_ENV *) dbv_p -> _yp ; 601 v = dbv ->env; 602 db = NULL ; 603 * p = 0; 605 i(( t = `__os_mloc ( v , cou * ( DB_PREPLIST ), & db )) != 0) 606 out ; 607 i(( t = 608 dbv -> `txn_cov (dbv, db , cou , & tcou , ags )) != 0) 609 out ; 613 yp -> tcou =etcount; 614 i( tcou == 0) { 615 yp -> txn . txn_v = NULL ; 616 yp -> txn . txn_n = 0; 617 yp -> gid . gid_v = NULL ; 618 yp -> gid . gid_n = 0; 625 i(( t = `__os_oc ( 626 v , tcou , ( u_t32_t ), & yp -> txn . txn_v )) != 0) 627 out ; 628 yp -> txn . txn_n = tcou * ( u_t32_t ); 629 i(( t = `__os_oc ( 630 v , tcou , DB_XIDDATASIZE , & yp -> gid . gid_v )) != 0) { 631 `__os_ ( v , yp -> txn . txn_v ); 632 out ; 634 yp -> gid . gid_n = tcou * DB_XIDDATASIZE ; 641 i = 0; 642 p = db ; 643 gid = yp ->gid. gid_v ; 644 txnidp = yp -> txn . txn_v ; 645 i ++ < tcou ) { 646 p = `w__t (& t ); 647 i( t != 0) { 648 i --; 649 out2 ; 651 p -> _tx = p -> txn ; 652 p -> _ty = CT_TXN ; 653 p -> _ = NULL ; 654 p -> _v = dbv_p ; 655 `__dbv_imeout ( p , dbv_p -> _timeout ); 656 `__dbv_aive ( p ); 658 * txnidp = p -> _id ; 659 `memy ( gid , p ->gid, DB_XIDDATASIZE ); 661 p ++; 662 txnidp ++; 663 gid + DB_XIDDATASIZE ; 669 * p = 1; 670 out : 671 i( db ! NULL ) 672 `__os_ ( v , db ); 673 yp -> us = t ; 675 out2 : 680 txnidp = yp -> txn . txn_v , ri = 0; 681 ri < i ;i++, txnidp ++) { 682 p = `g_b˒t (* txnidp ); 683 `__dbr_p ( p ); 685 `__os_ ( v , yp -> txn . txn_v ); 686 `__os_ ( v , yp -> gid . gid_v ); 687 `__os_ ( v , db ); 688 yp -> us = t ; 690 } } 697 $__db_assoc_oc ( dbp_id , tx_id , sdbp_id , ags , yp ) 698 u_t dbp_id ; 699 u_t tx_id ; 700 u_t sdbp_id ; 701 u_t32_t ags ; 702 __db_assoc_y * yp ; 704 DB * dbp , * sdbp ; 705 DB_TXN * tx ; 706 _y * dbp_p , * sdbp_p , * tx_p ; 707 t ; 709 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 710 dbp = ( DB *) dbp_p -> _yp ; 711 `ACTIVATE_CTP ( sdbp_p , sdbp_id , CT_DB ); 712 sdbp = ( DB *) sdbp_p -> _yp ; 713 i( tx_id != 0) { 714 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 715 tx = ( DB_TXN *) tx_p -> _yp ; 717 tx = NULL ; 725 #ifde CONFIG_TEST 726 i( `LF_ISSET ( DB_RPC2ND_MASK | DB_CREATE )) 728 i( `LF_ISSET ( DB_CREATE )) 730 t = EINVAL ; 732 t = dbp -> `assoc (dbp, tx , sdbp , NULL , ags ); 734 yp -> us = t ; 736 } } 743 $__db_g_bt_mkey_oc ( dbp_id , yp ) 744 u_t dbp_id ; 745 __db_g_bt_mkey_y * yp ; 747 DB * dbp ; 748 _y * dbp_p ; 750 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 751 dbp = ( DB *) dbp_p -> _yp ; 753 yp -> us = dbp -> `g_bt_mkey (dbp, &yp-> mkey ); 754 } } 761 $__db_t_bt_mkey_oc ( dbp_id , mkey , yp ) 762 u_t dbp_id ; 763 u_t32_t mkey ; 764 __db_t_bt_mkey_y * yp ; 766 DB * dbp ; 767 _y * dbp_p ; 768 t ; 770 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 771 dbp = ( DB *) dbp_p -> _yp ; 773 t = dbp -> `t_bt_mkey (dbp, mkey ); 775 yp -> us = t ; 777 } } 783 $__db_o_oc ( dbp_id , ags , yp ) 784 u_t dbp_id ; 785 u_t32_t ags ; 786 __db_o_y * yp ; 788 _y * dbp_p ; 790 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 791 yp -> us = `__db_o_t ( dbp_id , ags ); 793 } } 799 $__db__oc ( dbv_id , ags , yp ) 800 u_t dbv_id ; 801 u_t32_t ags ; 802 __db__y * yp ; 804 DB * dbp ; 805 DB_ENV * dbv ; 806 _y * dbv_p , * dbp_p ; 807 t ; 809 `ACTIVATE_CTP ( dbv_p , dbv_id , CT_ENV ); 810 dbv = ( DB_ENV *) dbv_p -> _yp ; 812 dbp_p = `w__t (& yp -> us ); 813 i( dbp_p = NULL ) 817 i(( t = `db_ (& dbp , dbv , ags )) == 0) { 818 dbp_p -> _dbp = dbp ; 819 dbp_p -> _ty = CT_DB ; 820 dbp_p -> _ = dbv_p ; 821 dbp_p -> _v = dbv_p ; 822 yp -> db_id = dbp_p -> _id ; 824 `__dbr_p ( dbp_p ); 825 yp -> us = t ; 826 } } 834 $__db_d_oc ( dbp_id , tx_id , keydn , keydoff , keyun , keyags , 835 keyda , keysize , ags , yp ) 836 u_t dbp_id ; 837 u_t tx_id ; 838 u_t32_t keydn ; 839 u_t32_t keydoff ; 840 u_t32_t keyun ; 841 u_t32_t keyags ; 842 * keyda ; 843 u_t32_t keysize ; 844 u_t32_t ags ; 845 __db_d_y * yp ; 847 DB * dbp ; 848 DBT key ; 849 DB_TXN * tx ; 850 _y * dbp_p , * tx_p ; 851 t ; 853 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 854 dbp = ( DB *) dbp_p -> _yp ; 855 i( tx_id != 0) { 856 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 857 tx = ( DB_TXN *) tx_p -> _yp ; 859 tx = NULL ; 861 `memt (& key , 0, (key)); 864 key . dn = keydn ; 865 key . un = keyun ; 866 key . doff = keydoff ; 867 key . ags = keyags ; 868 key . size = keysize ; 869 key . da = keyda ; 871 t = dbp -> `d (dbp, tx , & key , ags ); 873 yp -> us = t ; 875 } } 882 $__db_g_y_ags_oc ( dbp_id , yp ) 883 u_t dbp_id ; 884 __db_g_y_ags_y * yp ; 886 DB * dbp ; 887 _y * dbp_p ; 889 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 890 dbp = ( DB *) dbp_p -> _yp ; 892 yp -> us = dbp -> `g_y_ags (dbp, &yp-> ags ); 893 } } 900 $__db_t_y_oc ( dbp_id , sswd , ags , yp ) 901 u_t dbp_id ; 902 * sswd ; 903 u_t32_t ags ; 904 __db_t_y_y * yp ; 906 t ; 907 DB * dbp ; 908 _y * dbp_p ; 910 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 911 dbp = ( DB *) dbp_p -> _yp ; 913 t = dbp -> `t_y (dbp, sswd , ags ); 914 yp -> us = t ; 916 } } 923 $__db_g_q_exsize_oc ( dbp_id , yp ) 924 u_t dbp_id ; 925 __db_g_q_exsize_y * yp ; 927 DB * dbp ; 928 _y * dbp_p ; 930 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 931 dbp = ( DB *) dbp_p -> _yp ; 933 yp -> us = dbp -> `g_q_exsize (dbp, &yp-> exsize ); 934 } } 941 $__db_t_q_exsize_oc ( dbp_id , exsize , yp ) 942 u_t dbp_id ; 943 u_t32_t exsize ; 944 __db_t_q_exsize_y * yp ; 946 DB * dbp ; 947 _y * dbp_p ; 948 t ; 950 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 951 dbp = ( DB *) dbp_p -> _yp ; 953 t = dbp -> `t_q_exsize (dbp, exsize ); 955 yp -> us = t ; 957 } } 963 $__db_g_ags_oc ( dbp_id , yp ) 964 u_t dbp_id ; 965 __db_g_ags_y * yp ; 967 DB * dbp ; 968 _y * dbp_p ; 970 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 971 dbp = ( DB *) dbp_p -> _yp ; 973 yp -> us = dbp -> `g_ags (dbp, &yp-> ags ); 974 } } 981 $__db_t_ags_oc ( dbp_id , ags , yp ) 982 u_t dbp_id ; 983 u_t32_t ags ; 984 __db_t_ags_y * yp ; 986 DB * dbp ; 987 _y * dbp_p ; 988 t ; 990 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 991 dbp = ( DB *) dbp_p -> _yp ; 993 t = dbp -> `t_ags (dbp, ags ); 994 dbp_p -> _dbdp . tags | ags ; 996 yp -> us = t ; 998 } } 1007 $__db_g_oc ( dbp_id , tx_id , keydn , keydoff , keyun , keyags , 1008 keyda , keysize , dadn , dadoff , daun , daags , dada , 1009 dasize , ags , yp , p ) 1010 u_t dbp_id ; 1011 u_t tx_id ; 1012 u_t32_t keydn ; 1013 u_t32_t keydoff ; 1014 u_t32_t keyun ; 1015 u_t32_t keyags ; 1016 * keyda ; 1017 u_t32_t keysize ; 1018 u_t32_t dadn ; 1019 u_t32_t dadoff ; 1020 u_t32_t daun ; 1021 u_t32_t daags ; 1022 * dada ; 1023 u_t32_t dasize ; 1024 u_t32_t ags ; 1025 __db_g_y * yp ; 1026 * p ; 1028 DB * dbp ; 1029 DBT key , da ; 1030 DB_TXN * tx ; 1031 ENV * v ; 1032 _y * dbp_p , * tx_p ; 1033 t ; 1035 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1036 dbp = ( DB *) dbp_p -> _yp ; 1037 i( tx_id != 0) { 1038 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1039 tx = ( DB_TXN *) tx_p -> _yp ; 1041 tx = NULL ; 1043 v = dbp ->env; 1044 yp -> keyda . keyda_v = NULL ; 1045 yp -> dada . dada_v = NULL ; 1046 * p = 0; 1047 `memt (& key , 0, (key)); 1048 `memt (& da , 0, (data)); 1051 key . dn = keydn ; 1052 key . doff = keydoff ; 1056 key . ags = DB_DBT_MALLOC ; 1057 i( keyags & DB_DBT_PARTIAL ) 1058 key . ags | DB_DBT_PARTIAL ; 1059 key . size = keysize ; 1060 key . un = keyun ; 1061 key . da = keyda ; 1063 da . dn = dadn ; 1064 da . doff = dadoff ; 1065 da . un = daun ; 1069 da . size = dasize ; 1070 da .d dada ; 1071 i( ags & DB_MULTIPLE ) { 1072 i( da .data == 0) { 1073 t = `__os_umloc ( v , da . un , &data.data); 1074 i( t != 0) 1075 r ; 1077 da . ags | DB_DBT_USERMEM ; 1079 da . ags | DB_DBT_MALLOC ; 1080 i( daags & DB_DBT_PARTIAL ) 1081 da . ags | DB_DBT_PARTIAL ; 1084 t = dbp -> `g (dbp, tx , & key , & da , ags ); 1088 i( t == 0) { 1097 * p = 1; 1101 i( key . da = keyda ) { 1102 t = `__os_umloc ( v , 1103 key . size , & yp -> keyda . keyda_v ); 1104 i( t != 0) 1105 r ; 1106 `memy ( yp -> keyda . keyda_v , key . da , key. size ); 1108 yp -> keyda . keyda_v = key . da ; 1110 yp -> keyda . keyda_n = key . size ; 1115 i( da .d= dada ) { 1116 t = `__os_umloc ( v , 1117 da . size , & yp -> dada . dada_v ); 1118 i( t != 0) 1119 r ; 1120 `memy ( yp -> dada . dada_v , da .data, 1121 da . size ); 1123 yp -> dada . dada_v = da .data; 1124 yp -> dada . dada_n = da . size ; 1126 r : `FREE_IF_CHANGED ( v , key . da , keyda ); 1127 `FREE_IF_CHANGED ( v , da .da, dada ); 1128 `FREE_IF_CHANGED ( v , yp -> keyda . keyda_v , key . da ); 1129 `FREE_IF_CHANGED ( v , yp -> dada . dada_v , da .data); 1130 yp -> keyda . keyda_v = NULL ; 1131 yp -> keyda . keyda_n = 0; 1132 yp -> dada . dada_v = NULL ; 1133 yp -> dada . dada_n = 0; 1134 * p = 0; 1136 yp -> us = t ; 1138 } } 1145 $__db_g_h_f_oc ( dbp_id , yp ) 1146 u_t dbp_id ; 1147 __db_g_h_f_y * yp ; 1149 DB * dbp ; 1150 _y * dbp_p ; 1152 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1153 dbp = ( DB *) dbp_p -> _yp ; 1155 yp -> us = dbp -> `g_h_f (dbp, &yp-> f ); 1156 } } 1163 $__db_t_h_f_oc ( dbp_id , f , yp ) 1164 u_t dbp_id ; 1165 u_t32_t f ; 1166 __db_t_h_f_y * yp ; 1168 DB * dbp ; 1169 _y * dbp_p ; 1170 t ; 1172 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1173 dbp = ( DB *) dbp_p -> _yp ; 1175 t = dbp -> `t_h_f (dbp, f ); 1177 yp -> us = t ; 1179 } } 1185 $__db_g_h_m_oc ( dbp_id , yp ) 1186 u_t dbp_id ; 1187 __db_g_h_m_y * yp ; 1189 DB * dbp ; 1190 _y * dbp_p ; 1192 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1193 dbp = ( DB *) dbp_p -> _yp ; 1195 yp -> us = dbp -> `g_h_m (dbp, &yp-> m ); 1196 } } 1203 $__db_t_h_m_oc ( dbp_id , m , yp ) 1204 u_t dbp_id ; 1205 u_t32_t m ; 1206 __db_t_h_m_y * yp ; 1208 DB * dbp ; 1209 _y * dbp_p ; 1210 t ; 1212 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1213 dbp = ( DB *) dbp_p -> _yp ; 1215 t = dbp -> `t_h_m (dbp, m ); 1217 yp -> us = t ; 1219 } } 1227 $__db_key_nge_oc ( dbp_id , tx_id , keydn , keydoff , keyun , 1228 keyags , keyda , keysize , ags , yp ) 1229 u_t dbp_id ; 1230 u_t tx_id ; 1231 u_t32_t keydn ; 1232 u_t32_t keydoff ; 1233 u_t32_t keyun ; 1234 u_t32_t keyags ; 1235 * keyda ; 1236 u_t32_t keysize ; 1237 u_t32_t ags ; 1238 __db_key_nge_y * yp ; 1240 DB * dbp ; 1241 DBT key ; 1242 DB_KEY_RANGE nge ; 1243 DB_TXN * tx ; 1244 _y * dbp_p , * tx_p ; 1245 t ; 1247 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1248 dbp = ( DB *) dbp_p -> _yp ; 1249 i( tx_id != 0) { 1250 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1251 tx = ( DB_TXN *) tx_p -> _yp ; 1253 tx = NULL ; 1255 `memt (& key , 0, (key)); 1257 key . dn = keydn ; 1258 key . un = keyun ; 1259 key . doff = keydoff ; 1260 key . size = keysize ; 1261 key . da = keyda ; 1262 key . ags = keyags ; 1264 t = dbp -> `key_nge (dbp, tx , & key , & nge , ags ); 1266 yp -> us = t ; 1267 yp -> ss = nge .less; 1268 yp -> equ = nge .equal; 1269 yp -> g = nge .greater; 1271 } } 1277 $__db_g_ld_oc ( dbp_id , yp ) 1278 u_t dbp_id ; 1279 __db_g_ld_y * yp ; 1281 DB * dbp ; 1282 _y * dbp_p ; 1284 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1285 dbp = ( DB *) dbp_p -> _yp ; 1287 yp -> us = dbp -> `g_ld (dbp, (*)&yp-> ld ); 1288 } } 1295 $__db_t_ld_oc ( dbp_id , ld , yp ) 1296 u_t dbp_id ; 1297 u_t32_t ld ; 1298 __db_t_ld_y * yp ; 1300 DB * dbp ; 1301 _y * dbp_p ; 1302 t ; 1304 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1305 dbp = ( DB *) dbp_p -> _yp ; 1307 t = dbp -> `t_ld (dbp, ld ); 1309 yp -> us = t ; 1311 } } 1317 $__db_g_dbme_oc ( dbp_id , yp ) 1318 u_t dbp_id ; 1319 __db_g_dbme_y * yp ; 1321 DB * dbp ; 1322 _y * dbp_p ; 1324 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1325 dbp = ( DB *) dbp_p -> _yp ; 1327 yp -> us = dbp -> `g_dbme (dbp, 1328 (cڡ **)& yp -> fame , (cڡ **)&yp-> dbme ); 1329 } } 1336 $__db_g_ݒ_ags_oc ( dbp_id , yp ) 1337 u_t dbp_id ; 1338 __db_g_ݒ_ags_y * yp ; 1340 DB * dbp ; 1341 _y * dbp_p ; 1343 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1344 dbp = ( DB *) dbp_p -> _yp ; 1346 yp -> us = dbp -> `g_ݒ_ags (dbp, &yp-> ags ); 1347 } } 1354 $__db_ݒ_oc ( dbp_id , tx_id , me , subdb , ty , ags , mode , yp ) 1355 u_t dbp_id ; 1356 u_t tx_id ; 1357 * me ; 1358 * subdb ; 1359 u_t32_t ty ; 1360 u_t32_t ags ; 1361 u_t32_t mode ; 1362 __db_ݒ_y * yp ; 1364 DB * dbp ; 1365 DB_TXN * tx ; 1366 DBTYPE dbty ; 1367 ENV * v ; 1368 _y * dbp_p , * w_p , * tx_p ; 1369 isswd , t ; 1371 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1372 dbp = ( DB *) dbp_p -> _yp ; 1373 i( tx_id != 0) { 1374 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1375 tx = ( DB_TXN *) tx_p -> _yp ; 1377 tx = NULL ; 1378 v = dbp ->env; 1380 yp -> db_id = dbp_id ; 1381 i(( w_p = `__dbv_shedb ( dbp_p , me , subdb , ty , ags )) 1382 ! NULL ) { 1386 i( __dbv_vbo ) 1387 `tf ("Shg db ID %ld\n", w_p -> _id ); 1388 yp -> db_id = w_p -> _id ; 1389 t = `__db_o_t ( dbp_id , 0); 1390 out ; 1392 t = dbp -> `ݒ (dbp, tx , me , subdb , ( DBTYPE ) ty , ags , mode ); 1393 i( t == 0) { 1394 () dbp -> `g_ty (dbp, & dbty ); 1395 yp -> ty = dbty ; 1402 () dbp -> `g_byswd (dbp, & isswd ); 1403 i( `__db_isbigdn ()) { 1404 i( isswd == 0) 1405 yp -> ld = 4321; 1407 yp -> ld = 1234; 1409 i( isswd == 0) 1410 yp -> ld = 1234; 1412 yp -> ld = 4321; 1414 dbp_p -> _dbdp . ty = dbty ; 1415 dbp_p -> _dbdp . dbags = `LF_ISSET ( DB_SERVER_DBFLAGS ); 1416 i( me = NULL ) 1417 dbp_p -> _dbdp . db = NULL ; 1418 i(( t = `__os_rdup ( v , me , 1419 & dbp_p -> _dbdp . db )) != 0) 1420 out ; 1421 i( subdb = NULL ) 1422 dbp_p -> _dbdp . subdb = NULL ; 1423 i(( t = `__os_rdup ( v , subdb , 1424 & dbp_p -> _dbdp . subdb )) != 0) 1425 out ; 1427 out : 1428 yp -> us = t ; 1430 } } 1436 $__db_g_gesize_oc ( dbp_id , yp ) 1437 u_t dbp_id ; 1438 __db_g_gesize_y * yp ; 1440 DB * dbp ; 1441 _y * dbp_p ; 1443 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1444 dbp = ( DB *) dbp_p -> _yp ; 1446 yp -> us = dbp -> `g_gesize (dbp, &yp-> gesize ); 1447 } } 1454 $__db_t_gesize_oc ( dbp_id , gesize , yp ) 1455 u_t dbp_id ; 1456 u_t32_t gesize ; 1457 __db_t_gesize_y * yp ; 1459 DB * dbp ; 1460 _y * dbp_p ; 1461 t ; 1463 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1464 dbp = ( DB *) dbp_p -> _yp ; 1466 t = dbp -> `t_gesize (dbp, gesize ); 1468 yp -> us = t ; 1470 } } 1480 $__db_pg_oc ( dbp_id , tx_id , skeydn , skeydoff , skeyun , 1481 skeyags , skeyda , skeysize , pkeydn , pkeydoff , pkeyun , pkeyags , 1482 pkeyda , pkeysize , dadn , dadoff , daun , daags , dada , 1483 dasize , ags , yp , p ) 1484 u_t dbp_id ; 1485 u_t tx_id ; 1486 u_t32_t skeydn ; 1487 u_t32_t skeydoff ; 1488 u_t32_t skeyun ; 1489 u_t32_t skeyags ; 1490 * skeyda ; 1491 u_t32_t skeysize ; 1492 u_t32_t pkeydn ; 1493 u_t32_t pkeydoff ; 1494 u_t32_t pkeyun ; 1495 u_t32_t pkeyags ; 1496 * pkeyda ; 1497 u_t32_t pkeysize ; 1498 u_t32_t dadn ; 1499 u_t32_t dadoff ; 1500 u_t32_t daun ; 1501 u_t32_t daags ; 1502 * dada ; 1503 u_t32_t dasize ; 1504 u_t32_t ags ; 1505 __db_pg_y * yp ; 1506 * p ; 1508 DB * dbp ; 1509 DBT skey , pkey , da ; 1510 DB_TXN * tx ; 1511 ENV * v ; 1512 _y * dbp_p , * tx_p ; 1513 t ; 1515 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1516 dbp = ( DB *) dbp_p -> _yp ; 1517 i( tx_id != 0) { 1518 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1519 tx = ( DB_TXN *) tx_p -> _yp ; 1521 tx = NULL ; 1523 v = dbp ->env; 1524 yp -> skeyda . skeyda_v = NULL ; 1525 yp -> pkeyda . pkeyda_v = NULL ; 1526 yp -> dada . dada_v = NULL ; 1527 * p = 0; 1528 `memt (& skey , 0, (skey)); 1529 `memt (& pkey , 0, (pkey)); 1530 `memt (& da , 0, (data)); 1536 skey . ags = DB_DBT_MALLOC ; 1537 skey . dn = skeydn ; 1538 skey . un = skeyun ; 1539 skey . doff = skeydoff ; 1540 i( skeyags & DB_DBT_PARTIAL ) 1541 skey . ags | DB_DBT_PARTIAL ; 1542 skey . size = skeysize ; 1543 skey . da = skeyda ; 1545 pkey . ags = DB_DBT_MALLOC ; 1546 pkey . dn = pkeydn ; 1547 pkey . un = pkeyun ; 1548 pkey . doff = pkeydoff ; 1549 i( pkeyags & DB_DBT_PARTIAL ) 1550 pkey . ags | DB_DBT_PARTIAL ; 1551 pkey . size = pkeysize ; 1552 pkey . da = pkeyda ; 1554 da . ags = DB_DBT_MALLOC ; 1555 da . dn = dadn ; 1556 da . un = daun ; 1557 da . doff = dadoff ; 1558 i( daags & DB_DBT_PARTIAL ) 1559 da . ags | DB_DBT_PARTIAL ; 1560 da . size = dasize ; 1561 da .d dada ; 1564 t = dbp -> `pg (dbp, tx , & skey , & pkey , & da , ags ); 1568 i( t == 0) { 1577 * p = 1; 1581 i( skey . da = skeyda ) { 1582 t = `__os_umloc ( v , 1583 skey . size , & yp -> skeyda . skeyda_v ); 1584 i( t != 0) 1585 r ; 1586 `memy ( yp -> skeyda . skeyda_v , skey . da , 1587 skey . size ); 1589 yp -> skeyda . skeyda_v = skey . da ; 1591 yp -> skeyda . skeyda_n = skey . size ; 1596 i( pkey . da = pkeyda ) { 1597 t = `__os_umloc ( v , 1598 pkey . size , & yp -> pkeyda . pkeyda_v ); 1599 i( t != 0) 1600 r ; 1607 `memy ( yp -> pkeyda . pkeyda_v , pkey . da , 1608 pkey . size ); 1610 yp -> pkeyda . pkeyda_v = pkey . da ; 1611 yp -> pkeyda . pkeyda_n = pkey . size ; 1616 i( da .d= dada ) { 1617 t = `__os_umloc ( v , 1618 da . size , & yp -> dada . dada_v ); 1619 i( t != 0) 1620 r ; 1621 `memy ( yp -> dada . dada_v , da .data, 1622 da . size ); 1624 yp -> dada . dada_v = da .data; 1625 yp -> dada . dada_n = da . size ; 1627 r : `FREE_IF_CHANGED ( v , skey . da , skeyda ); 1628 `FREE_IF_CHANGED ( v , pkey . da , pkeyda ); 1629 `FREE_IF_CHANGED ( v , da .da, dada ); 1630 `FREE_IF_CHANGED ( v , yp -> skeyda . skeyda_v , skey . da ); 1631 `FREE_IF_CHANGED ( v , yp -> pkeyda . pkeyda_v , pkey . da ); 1632 `FREE_IF_CHANGED ( v , yp -> dada . dada_v , da .data); 1633 yp -> skeyda . skeyda_v = NULL ; 1634 yp -> skeyda . skeyda_n = 0; 1635 yp -> pkeyda . pkeyda_v = NULL ; 1636 yp -> pkeyda . pkeyda_n = 0; 1637 yp -> dada . dada_v = NULL ; 1638 yp -> dada . dada_n = 0; 1639 * p = 0; 1641 yp -> us = t ; 1643 } } 1652 $__db_put_oc ( dbp_id , tx_id , keydn , keydoff , keyun , keyags , 1653 keyda , keysize , dadn , dadoff , daun , daags , dada , 1654 dasize , ags , yp , p ) 1655 u_t dbp_id ; 1656 u_t tx_id ; 1657 u_t32_t keydn ; 1658 u_t32_t keydoff ; 1659 u_t32_t keyun ; 1660 u_t32_t keyags ; 1661 * keyda ; 1662 u_t32_t keysize ; 1663 u_t32_t dadn ; 1664 u_t32_t dadoff ; 1665 u_t32_t daun ; 1666 u_t32_t daags ; 1667 * dada ; 1668 u_t32_t dasize ; 1669 u_t32_t ags ; 1670 __db_put_y * yp ; 1671 * p ; 1673 DB * dbp ; 1674 DBT key , da ; 1675 DB_TXN * tx ; 1676 ENV * v ; 1677 _y * dbp_p , * tx_p ; 1678 t ; 1680 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1681 dbp = ( DB *) dbp_p -> _yp ; 1682 i( tx_id != 0) { 1683 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1684 tx = ( DB_TXN *) tx_p -> _yp ; 1686 tx = NULL ; 1688 v = dbp ->env; 1689 yp -> keyda . keyda_v = NULL ; 1690 * p = 0; 1691 `memt (& key , 0, (key)); 1692 `memt (& da , 0, (data)); 1695 key . dn = keydn ; 1696 key . un = keyun ; 1697 key . doff = keydoff ; 1701 key . ags = DB_DBT_MALLOC ; 1702 i( keyags & DB_DBT_PARTIAL ) 1703 key . ags | DB_DBT_PARTIAL ; 1704 key . size = keysize ; 1705 key . da = keyda ; 1707 da . dn = dadn ; 1708 da . un = daun ; 1709 da . doff = dadoff ; 1710 da . ags = daags ; 1711 da . size = dasize ; 1712 da .d dada ; 1715 t = dbp -> `put (dbp, tx , & key , & da , ags ); 1720 i( t =0 && ( ags = DB_APPEND )) { 1729 * p = 1; 1733 i( key . da = keyda ) { 1734 t = `__os_umloc ( v , 1735 key . size , & yp -> keyda . keyda_v ); 1736 i( t != 0) 1737 r ; 1738 `memy ( yp -> keyda . keyda_v , key . da , key. size ); 1740 yp -> keyda . keyda_v = key . da ; 1742 yp -> keyda . keyda_n = key . size ; 1744 r : `FREE_IF_CHANGED ( v , key . da , keyda ); 1745 `FREE_IF_CHANGED ( v , yp -> keyda . keyda_v , key . da ); 1746 yp -> keyda . keyda_v = NULL ; 1747 yp -> keyda . keyda_n = 0; 1748 * p = 0; 1750 yp -> us = t ; 1752 } } 1758 $__db_g_iܙy_oc ( dbp_id , yp ) 1759 u_t dbp_id ; 1760 __db_g_iܙy_y * yp ; 1762 DB * dbp ; 1763 _y * dbp_p ; 1765 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1766 dbp = ( DB *) dbp_p -> _yp ; 1768 yp -> us = 1769 dbp -> `g_iܙy (dbp, ( DB_CACHE_PRIORITY *)& yp -> iܙy ); 1770 } } 1777 $__db_t_iܙy_oc ( dbp_id , iܙy , yp ) 1778 u_t dbp_id ; 1779 u_t32_t iܙy ; 1780 __db_t_iܙy_y * yp ; 1782 DB * dbp ; 1783 _y * dbp_p ; 1784 t ; 1786 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1787 dbp = ( DB *) dbp_p -> _yp ; 1789 t = dbp -> `t_iܙy (dbp, ( DB_CACHE_PRIORITY ) iܙy ); 1791 yp -> us = t ; 1793 } } 1799 $__db_g__dim_oc ( dbp_id , yp ) 1800 u_t dbp_id ; 1801 __db_g__dim_y * yp ; 1803 DB * dbp ; 1804 _y * dbp_p ; 1806 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1807 dbp = ( DB *) dbp_p -> _yp ; 1809 yp -> us = dbp -> `g__dim (dbp, (*)&yp-> dim ); 1810 } } 1817 $__db_t__dim_oc ( dbp_id , dim , yp ) 1818 u_t dbp_id ; 1819 u_t32_t dim ; 1820 __db_t__dim_y * yp ; 1822 DB * dbp ; 1823 _y * dbp_p ; 1824 t ; 1826 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1827 dbp = ( DB *) dbp_p -> _yp ; 1829 t = dbp -> `t__dim (dbp, dim ); 1831 yp -> us = t ; 1833 } } 1839 $__db_g__n_oc ( dbp_id , yp ) 1840 u_t dbp_id ; 1841 __db_g__n_y * yp ; 1843 DB * dbp ; 1844 _y * dbp_p ; 1846 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1847 dbp = ( DB *) dbp_p -> _yp ; 1849 yp -> us = dbp -> `g__n (dbp, &yp-> n ); 1850 } } 1857 $__db_t__n_oc ( dbp_id , n , yp ) 1858 u_t dbp_id ; 1859 u_t32_t n ; 1860 __db_t__n_y * yp ; 1862 DB * dbp ; 1863 _y * dbp_p ; 1864 t ; 1866 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1867 dbp = ( DB *) dbp_p -> _yp ; 1869 t = dbp -> `t__n (dbp, n ); 1871 yp -> us = t ; 1873 } } 1879 $__db_g__d_oc ( dbp_id , yp ) 1880 u_t dbp_id ; 1881 __db_g__d_y * yp ; 1883 DB * dbp ; 1884 _y * dbp_p ; 1886 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1887 dbp = ( DB *) dbp_p -> _yp ; 1889 yp -> us = dbp -> `g__d (dbp, (*)&yp-> d ); 1890 } } 1897 $__db_t__d_oc ( dbp_id , d , yp ) 1898 u_t dbp_id ; 1899 u_t32_t d ; 1900 __db_t__d_y * yp ; 1902 DB * dbp ; 1903 _y * dbp_p ; 1904 t ; 1906 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1907 dbp = ( DB *) dbp_p -> _yp ; 1909 t = dbp -> `t__d (dbp, d ); 1911 yp -> us = t ; 1913 } } 1920 $__db_move_oc ( dbp_id , me , subdb , ags , yp ) 1921 u_t dbp_id ; 1922 * me ; 1923 * subdb ; 1924 u_t32_t ags ; 1925 __db_move_y * yp ; 1927 DB * dbp ; 1928 _y * dbp_p ; 1929 t ; 1931 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1932 dbp = ( DB *) dbp_p -> _yp ; 1934 t = dbp -> `move (dbp, me , subdb , ags ); 1935 `__dbd_p ( dbp_p ); 1937 yp -> us = t ; 1939 } } 1946 $__db_me_oc ( dbp_id , me , subdb , wme , ags , yp ) 1947 u_t dbp_id ; 1948 * me ; 1949 * subdb ; 1950 * wme ; 1951 u_t32_t ags ; 1952 __db_me_y * yp ; 1954 DB * dbp ; 1955 _y * dbp_p ; 1956 t ; 1958 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1959 dbp = ( DB *) dbp_p -> _yp ; 1961 t = dbp -> `me (dbp, me , subdb , wme , ags ); 1962 `__dbd_p ( dbp_p ); 1964 yp -> us = t ; 1966 } } 1973 $__db__oc ( dbp_id , tx_id , ags , yp , p ) 1974 u_t dbp_id ; 1975 u_t tx_id ; 1976 u_t32_t ags ; 1977 __db__y * yp ; 1978 * p ; 1980 DB * dbp ; 1981 DB_TXN * tx ; 1982 DBTYPE ty ; 1983 ENV * v ; 1984 _y * dbp_p , * tx_p ; 1985 u_t32_t * q , * p , * t ; 1986 i , n , t ; 1987 * ; 1989 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1990 dbp = ( DB *) dbp_p -> _yp ; 1991 i( tx_id != 0) { 1992 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1993 tx = ( DB_TXN *) tx_p -> _yp ; 1995 tx = NULL ; 1997 v = dbp ->env; 1998 t = dbp -> ` (dbp, tx , & , ags ); 1999 yp -> us = t ; 2000 i( t != 0) 2011 () dbp -> `g_ty (dbp, & ty ); 2012 i( ty = DB_HASH ) 2013 n = ( DB_HASH_STAT ); 2014 i( ty = DB_QUEUE ) 2015 n = ( DB_QUEUE_STAT ); 2017 n = ( DB_BTREE_STAT ); 2018 yp -> s . s_n = n / ( u_t32_t ); 2020 i(( t = 2021 `__os_umloc ( v , n * yp -> s . s_n , & t )) != 0) 2022 out ; 2023 i = 0, q = t , p = ; i < n ; 2024 i ++, q ++, p ++) 2025 * q = * p ; 2026 yp -> s . s_v = t ; 2027 `__os_u ( v , ); 2028 i( t == 0) 2029 * p = 1; 2030 out : 2031 yp -> us = t ; 2033 } } 2039 $__db_sync_oc ( dbp_id , ags , yp ) 2040 u_t dbp_id ; 2041 u_t32_t ags ; 2042 __db_sync_y * yp ; 2044 DB * dbp ; 2045 _y * dbp_p ; 2046 t ; 2048 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2049 dbp = ( DB *) dbp_p -> _yp ; 2051 t = dbp -> `sync (dbp, ags ); 2053 yp -> us = t ; 2055 } } 2062 $__db_un_oc ( dbp_id , tx_id , ags , yp ) 2063 u_t dbp_id ; 2064 u_t tx_id ; 2065 u_t32_t ags ; 2066 __db_un_y * yp ; 2068 DB * dbp ; 2069 DB_TXN * tx ; 2070 _y * dbp_p , * tx_p ; 2071 u_t32_t cou ; 2072 t ; 2074 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2075 dbp = ( DB *) dbp_p -> _yp ; 2076 i( tx_id != 0) { 2077 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 2078 tx = ( DB_TXN *) tx_p -> _yp ; 2080 tx = NULL ; 2082 t = dbp -> `un (dbp, tx , & cou , ags ); 2083 yp -> us = t ; 2084 i( t == 0) 2085 yp -> cou = count; 2087 } } 2094 $__db_curs_oc ( dbp_id , tx_id , ags , yp ) 2095 u_t dbp_id ; 2096 u_t tx_id ; 2097 u_t32_t ags ; 2098 __db_curs_y * yp ; 2100 DB * dbp ; 2101 DBC * dbc ; 2102 DB_TXN * tx ; 2103 _y * dbc_p , * v_p , * dbp_p , * tx_p ; 2104 t ; 2106 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2107 dbp = ( DB *) dbp_p -> _yp ; 2108 dbc_p = `w__t (& yp -> us ); 2109 i( dbc_p = NULL ) 2112 i( tx_id != 0) { 2113 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 2114 tx = ( DB_TXN *) tx_p -> _yp ; 2115 dbc_p -> _aiv = tx_p ->ct_activep; 2117 tx = NULL ; 2119 i(( t = dbp -> `curs (dbp, tx , & dbc , ags )) == 0) { 2120 dbc_p -> _dbc = dbc ; 2121 dbc_p -> _ty = CT_CURSOR ; 2122 dbc_p -> _ = dbp_p ; 2123 v_p = dbp_p -> _v ; 2124 dbc_p -> _v = v_p ; 2125 `__dbv_imeout ( dbc_p , v_p -> _timeout ); 2126 `__dbv_aive ( dbc_p ); 2127 yp -> dbcid_id = dbc_p -> _id ; 2129 `__dbr_p ( dbc_p ); 2131 yp -> us = t ; 2133 } } 2140 $__db_jo_oc ( dbp_id , curs , cur , ags , yp ) 2141 u_t dbp_id ; 2142 u_t32_t * curs ; 2143 u_t32_t cur ; 2144 u_t32_t ags ; 2145 __db_jo_y * yp ; 2147 DB * dbp ; 2148 DBC ** jcurs , ** c ; 2149 DBC * dbc ; 2150 ENV * v ; 2151 _y * dbc_p , * p , * dbp_p ; 2152 size_t size ; 2153 u_t32_t * , i ; 2154 t ; 2156 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 2157 dbp = ( DB *) dbp_p -> _yp ; 2158 v = dbp ->env; 2160 dbc_p = `w__t (& yp -> us ); 2161 i( dbc_p = NULL ) 2164 size = ( cur + 1* ( DBC *); 2165 i(( t = `__os_oc ( v , cur + 1, ( DBC *), & jcurs )) != 0) { 2166 yp -> us = t ; 2167 `__dbr_p ( dbc_p ); 2175 p = `g_b˒t (* curs ); 2176 `DB_ASSERT ( v , p -> _ty = CT_CURSOR ); 2181 i( p -> _aiv !&p-> _aive ) 2182 dbc_p -> _aiv = p ->ct_activep; 2183 i = 0, = curs , c = jcurs ; i < cur ; i++, cl++, c++) { 2184 p = `g_b˒t (* ); 2185 i( p = NULL ) { 2186 yp -> us = DB_NOSERVER_ID ; 2187 out ; 2199 `DB_ASSERT ( v , p -> _ty = CT_CURSOR ); 2200 p -> _ty | CT_JOIN ; 2201 p -> _igp = c-> _aiv ; 2209 p -> _aiv = & dbc_p -> _aive ; 2210 * c = p -> _dbc ; 2212 * c = NULL ; 2213 i(( t = dbp -> `jo (dbp, jcurs , & dbc , ags )) == 0) { 2214 dbc_p -> _dbc = dbc ; 2215 dbc_p -> _ty = ( CT_JOINCUR | CT_CURSOR ); 2216 dbc_p -> _ = dbp_p ; 2217 dbc_p -> _v = dbp_p ->ct_envparent; 2218 `__dbv_imeout ( dbc_p , dbp_p -> _v -> _timeout ); 2219 `__dbv_aive ( dbc_p ); 2220 yp -> dbcid_id = dbc_p -> _id ; 2222 `__dbr_p ( dbc_p ); 2226 = curs ; *cl != 0; cl++) { 2227 p = `g_b˒t (* ); 2228 p -> _ty = CT_CURSOR ; 2229 p -> _aiv = c-> _igp ; 2233 yp -> us = t ; 2235 out : `__os_ ( v , jcurs ); 2237 } } 2243 $__dbc_o_oc ( dbc_id , yp ) 2244 u_t dbc_id ; 2245 __dbc_o_y * yp ; 2247 _y * dbc_p ; 2249 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2250 yp -> us = `__dbc_o_t ( dbc_p ); 2252 } } 2259 $__dbc_cou_oc ( dbc_id , ags , yp ) 2260 u_t dbc_id ; 2261 u_t32_t ags ; 2262 __dbc_cou_y * yp ; 2264 DBC * dbc ; 2265 _y * dbc_p ; 2266 db_o_t num ; 2267 t ; 2269 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2270 dbc = ( DBC *) dbc_p -> _yp ; 2272 t = dbc -> `cou (dbc, & num , ags ); 2273 yp -> us = t ; 2274 i( t == 0) 2275 yp -> dupcou = num ; 2277 } } 2283 $__dbc_d_oc ( dbc_id , ags , yp ) 2284 u_t dbc_id ; 2285 u_t32_t ags ; 2286 __dbc_d_y * yp ; 2288 DBC * dbc ; 2289 _y * dbc_p ; 2290 t ; 2292 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2293 dbc = ( DBC *) dbc_p -> _yp ; 2295 t = dbc -> `d (dbc, ags ); 2297 yp -> us = t ; 2299 } } 2305 $__dbc_dup_oc ( dbc_id , ags , yp ) 2306 u_t dbc_id ; 2307 u_t32_t ags ; 2308 __dbc_dup_y * yp ; 2310 DBC * dbc , * wdbc ; 2311 _y * dbc_p , * w_p ; 2312 t ; 2314 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2315 dbc = ( DBC *) dbc_p -> _yp ; 2317 w_p = `w__t (& yp -> us ); 2318 i( w_p = NULL ) 2321 i(( t = dbc -> `dup (dbc, & wdbc , ags )) == 0) { 2322 w_p -> _dbc = wdbc ; 2323 w_p -> _ty = CT_CURSOR ; 2324 w_p -> _ = dbc_p ->ct_parent; 2325 w_p -> _v = dbc_p ->ct_envparent; 2329 i( dbc_p -> _aiv !&dbc_p-> _aive ) 2330 w_p -> _aiv = dbc_p ->ct_activep; 2331 `__dbv_imeout ( w_p , dbc_p -> _timeout ); 2332 `__dbv_aive ( w_p ); 2333 yp -> dbcid_id = w_p -> _id ; 2335 `__dbr_p ( w_p ); 2337 yp -> us = t ; 2339 } } 2348 $__dbc_g_oc ( dbc_id , keydn , keydoff , keyun , keyags , keyda , 2349 keysize , dadn , dadoff , daun , daags , dada , dasize , 2350 ags , yp , p ) 2351 u_t dbc_id ; 2352 u_t32_t keydn ; 2353 u_t32_t keydoff ; 2354 u_t32_t keyun ; 2355 u_t32_t keyags ; 2356 * keyda ; 2357 u_t32_t keysize ; 2358 u_t32_t dadn ; 2359 u_t32_t dadoff ; 2360 u_t32_t daun ; 2361 u_t32_t daags ; 2362 * dada ; 2363 u_t32_t dasize ; 2364 u_t32_t ags ; 2365 __dbc_g_y * yp ; 2366 * p ; 2368 DBC * dbc ; 2369 DBT key , da ; 2370 ENV * v ; 2371 _y * dbc_p ; 2372 t ; 2374 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2375 dbc = ( DBC *) dbc_p -> _yp ; 2376 v = dbc ->env; 2378 yp -> keyda . keyda_v = NULL ; 2379 yp -> dada . dada_v = NULL ; 2380 * p = 0; 2381 `memt (& key , 0, (key)); 2382 `memt (& da , 0, (data)); 2385 key . dn = keydn ; 2386 key . un = keyun ; 2387 key . doff = keydoff ; 2388 key . size = keysize ; 2389 i( keyags & DB_DBT_USERMEM ) { 2390 i(( t = `__os_umloc ( v , key . un , &key. da )) != 0) 2391 r ; 2392 i( keyda != 0) 2393 `memy ( key . da , keyda , 2394 ( key . size < key. un ) ? key.size : key.ulen); 2395 key . ags = DB_DBT_USERMEM ; 2397 key . da = keyda ; 2398 key . ags = DB_DBT_MALLOC ; 2400 i( keyags & DB_DBT_PARTIAL ) 2401 key . ags | DB_DBT_PARTIAL ; 2403 da . dn = dadn ; 2404 da . un = daun ; 2405 da . doff = dadoff ; 2406 da . size = dasize ; 2407 i( ags & ( DB_MULTIPLE | DB_MULTIPLE_KEY ) || 2408 daags & DB_DBT_USERMEM ) { 2409 i(( t = `__os_umloc ( v , da . un , &data.data)) != 0) 2410 r ; 2411 i( dada != 0) 2412 `memy ( da .da, dada , 2413 ( da . size < da. un ) ? data.size : data.ulen); 2414 da . ags = DB_DBT_USERMEM ; 2416 da .d dada ; 2417 da . ags = DB_DBT_MALLOC ; 2419 i( daags & DB_DBT_PARTIAL ) 2420 da . ags | DB_DBT_PARTIAL ; 2423 t = dbc -> `g (dbc, & key , & da , ags ); 2428 i( t == 0) { 2437 * p = 1; 2441 i( key . da = keyda ) { 2442 t = `__os_umloc ( v , key . size , 2443 & yp -> keyda . keyda_v ); 2444 i( t != 0) 2445 r ; 2446 `memy ( yp -> keyda . keyda_v , key . da , key. size ); 2448 yp -> keyda . keyda_v = key . da ; 2450 yp -> keyda . keyda_n = key . size ; 2455 i( da .d= dada ) { 2456 t = `__os_umloc ( v , da . size , 2457 & yp -> dada . dada_v ); 2458 i( t != 0) 2459 r ; 2460 `memy ( yp -> dada . dada_v , da .data, 2461 da . size ); 2463 yp -> dada . dada_v = da .data; 2464 yp -> dada . dada_n = da . size ; 2466 r : `FREE_IF_CHANGED ( v , key . da , keyda ); 2467 `FREE_IF_CHANGED ( v , da .da, dada ); 2468 `FREE_IF_CHANGED ( v , yp -> keyda . keyda_v , key . da ); 2469 `FREE_IF_CHANGED ( v , yp -> dada . dada_v , da .data); 2470 yp -> keyda . keyda_v = NULL ; 2471 yp -> keyda . keyda_n = 0; 2472 yp -> dada . dada_v = NULL ; 2473 yp -> dada . dada_n = 0; 2474 * p = 0; 2476 yp -> us = t ; 2478 } } 2488 $__dbc_pg_oc ( dbc_id , skeydn , skeydoff , skeyun , skeyags , 2489 skeyda , skeysize , pkeydn , pkeydoff , pkeyun , pkeyags , pkeyda , 2490 pkeysize , dadn , dadoff , daun , daags , dada , dasize , 2491 ags , yp , p ) 2492 u_t dbc_id ; 2493 u_t32_t skeydn ; 2494 u_t32_t skeydoff ; 2495 u_t32_t skeyun ; 2496 u_t32_t skeyags ; 2497 * skeyda ; 2498 u_t32_t skeysize ; 2499 u_t32_t pkeydn ; 2500 u_t32_t pkeydoff ; 2501 u_t32_t pkeyun ; 2502 u_t32_t pkeyags ; 2503 * pkeyda ; 2504 u_t32_t pkeysize ; 2505 u_t32_t dadn ; 2506 u_t32_t dadoff ; 2507 u_t32_t daun ; 2508 u_t32_t daags ; 2509 * dada ; 2510 u_t32_t dasize ; 2511 u_t32_t ags ; 2512 __dbc_pg_y * yp ; 2513 * p ; 2515 DBC * dbc ; 2516 DBT skey , pkey , da ; 2517 ENV * v ; 2518 _y * dbc_p ; 2519 t ; 2521 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2522 dbc = ( DBC *) dbc_p -> _yp ; 2523 v = dbc ->env; 2525 yp -> skeyda . skeyda_v = NULL ; 2526 yp -> pkeyda . pkeyda_v = NULL ; 2527 yp -> dada . dada_v = NULL ; 2528 * p = 0; 2529 `memt (& skey , 0, (skey)); 2530 `memt (& pkey , 0, (pkey)); 2531 `memt (& da , 0, (data)); 2537 skey . ags = DB_DBT_MALLOC ; 2538 skey . dn = skeydn ; 2539 skey . un = skeyun ; 2540 skey . doff = skeydoff ; 2541 i( skeyags & DB_DBT_PARTIAL ) 2542 skey . ags | DB_DBT_PARTIAL ; 2543 skey . size = skeysize ; 2544 skey . da = skeyda ; 2546 pkey . ags = DB_DBT_MALLOC ; 2547 pkey . dn = pkeydn ; 2548 pkey . un = pkeyun ; 2549 pkey . doff = pkeydoff ; 2550 i( pkeyags & DB_DBT_PARTIAL ) 2551 pkey . ags | DB_DBT_PARTIAL ; 2552 pkey . size = pkeysize ; 2553 pkey . da = pkeyda ; 2555 da . ags = DB_DBT_MALLOC ; 2556 da . dn = dadn ; 2557 da . un = daun ; 2558 da . doff = dadoff ; 2559 i( daags & DB_DBT_PARTIAL ) 2560 da . ags | DB_DBT_PARTIAL ; 2561 da . size = dasize ; 2562 da .d dada ; 2565 t = dbc -> `pg (dbc, & skey , & pkey , & da , ags ); 2569 i( t == 0) { 2578 * p = 1; 2582 i( skey . da = skeyda ) { 2583 t = `__os_umloc ( v , 2584 skey . size , & yp -> skeyda . skeyda_v ); 2585 i( t != 0) 2586 r ; 2587 `memy ( yp -> skeyda . skeyda_v , skey . da , 2588 skey . size ); 2590 yp -> skeyda . skeyda_v = skey . da ; 2591 yp -> skeyda . skeyda_n = skey . size ; 2596 i( pkey . da = pkeyda ) { 2597 t = `__os_umloc ( v , 2598 pkey . size , & yp -> pkeyda . pkeyda_v ); 2599 i( t != 0) 2600 r ; 2607 `memy ( yp -> pkeyda . pkeyda_v , pkey . da , 2608 pkey . size ); 2610 yp -> pkeyda . pkeyda_v = pkey . da ; 2611 yp -> pkeyda . pkeyda_n = pkey . size ; 2616 i( da .d= dada ) { 2617 t = `__os_umloc ( v , 2618 da . size , & yp -> dada . dada_v ); 2619 i( t != 0) 2620 r ; 2621 `memy ( yp -> dada . dada_v , da .data, 2622 da . size ); 2624 yp -> dada . dada_v = da .data; 2625 yp -> dada . dada_n = da . size ; 2627 r : `FREE_IF_CHANGED ( v , skey . da , skeyda ); 2628 `FREE_IF_CHANGED ( v , pkey . da , pkeyda ); 2629 `FREE_IF_CHANGED ( v , da .da, dada ); 2630 `FREE_IF_CHANGED ( v , yp -> skeyda . skeyda_v , skey . da ); 2631 `FREE_IF_CHANGED ( v , yp -> pkeyda . pkeyda_v , pkey . da ); 2632 `FREE_IF_CHANGED ( v , yp -> dada . dada_v , da .data); 2633 yp -> skeyda . skeyda_v = NULL ; 2634 yp -> skeyda . skeyda_n = 0; 2635 yp -> pkeyda . pkeyda_v = NULL ; 2636 yp -> pkeyda . pkeyda_n = 0; 2637 yp -> dada . dada_v = NULL ; 2638 yp -> dada . dada_n = 0; 2639 * p = 0; 2641 yp -> us = t ; 2643 } } 2652 $__dbc_put_oc ( dbc_id , keydn , keydoff , keyun , keyags , keyda , 2653 keysize , dadn , dadoff , daun , daags , dada , dasize , 2654 ags , yp , p ) 2655 u_t dbc_id ; 2656 u_t32_t keydn ; 2657 u_t32_t keydoff ; 2658 u_t32_t keyun ; 2659 u_t32_t keyags ; 2660 * keyda ; 2661 u_t32_t keysize ; 2662 u_t32_t dadn ; 2663 u_t32_t dadoff ; 2664 u_t32_t daun ; 2665 u_t32_t daags ; 2666 * dada ; 2667 u_t32_t dasize ; 2668 u_t32_t ags ; 2669 __dbc_put_y * yp ; 2670 * p ; 2672 DB * dbp ; 2673 DBC * dbc ; 2674 DBT key , da ; 2675 _y * dbc_p ; 2676 t ; 2678 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2679 dbc = ( DBC *) dbc_p -> _yp ; 2680 dbp = ( DB *) dbc_p -> _ -> _yp ; 2682 `memt (& key , 0, (key)); 2683 `memt (& da , 0, (data)); 2686 key . dn = keydn ; 2687 key . un = keyun ; 2688 key . doff = keydoff ; 2692 key . ags = 0; 2693 i( keyags & DB_DBT_PARTIAL ) 2694 key . ags | DB_DBT_PARTIAL ; 2695 key . size = keysize ; 2696 key . da = keyda ; 2698 da . dn = dadn ; 2699 da . un = daun ; 2700 da . doff = dadoff ; 2701 da . ags = daags ; 2702 da . size = dasize ; 2703 da .d dada ; 2706 t = dbc -> `put (dbc, & key , & da , ags ); 2708 * p = 0; 2709 i( t =0 && ( ags = DB_AFTER || fg= DB_BEFORE ) && 2710 dbp -> ty = DB_RECNO ) { 2714 yp -> keyda . keyda_v = key . da ; 2715 yp -> keyda . keyda_n = key . size ; 2717 yp -> keyda . keyda_v = NULL ; 2718 yp -> keyda . keyda_n = 0; 2720 yp -> us = t ; 2722 } } 2729 $__dbc_g_iܙy_oc ( dbc_id , yp ) 2730 u_t dbc_id ; 2731 __dbc_g_iܙy_y * yp ; 2733 DBC * dbc ; 2734 _y * dbc_p ; 2736 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2737 dbc = ( DBC *) dbc_p -> _yp ; 2739 yp -> us = 2740 dbc -> `g_iܙy (dbc, ( DB_CACHE_PRIORITY *)& yp -> iܙy ); 2741 } } 2748 $__dbc_t_iܙy_oc ( dbc_id , iܙy , yp ) 2749 u_t dbc_id ; 2750 u_t32_t iܙy ; 2751 __dbc_t_iܙy_y * yp ; 2753 DBC * dbc ; 2754 _y * dbc_p ; 2755 t ; 2757 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2758 dbc = ( DBC *) dbc_p -> _yp ; 2760 t = dbc -> `t_iܙy (dbc, ( DB_CACHE_PRIORITY ) iܙy ); 2762 yp -> us = t ; 2764 } } @../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 } } 216 $__dbv_timeout ( f ) 217 f ; 219 to_ht = -1; 220 time_t t ; 221 to ; 222 _y * p , * xtp ; 224 i(( t = `time ( NULL )) == -1) 231 i(! f && to_ht > 0 && t <o_hint) 233 to_ht = -1; 247 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; c = xtp ) { 248 xtp = `LIST_NEXT ( p , s ); 249 p -> _ty ) { 250 CT_TXN : 251 to = *( p -> _aiv + c-> _timeout ; 253 i( to < t ) { 254 i( __dbv_vbo ) 255 `tf ("Timing outxn id %ld\n", 256 p -> _id ); 257 ()(( DB_TXN *) p -> _yp )-> 258 `abt (( DB_TXN *) p -> _yp ); 259 `__dbd_p ( p ); 265 xtp = `LIST_FIRST (& __dbv_hd ); 266 } i(( to_ht > 0 &&o_h> to ) || 267 to_ht == -1) 268 to_ht = to ; 270 CT_CURSOR : 271 ( CT_JOINCUR | CT_CURSOR ): 272 to = *( p -> _aiv + c-> _timeout ; 274 i( to < t ) { 275 i( __dbv_vbo ) 276 `tf ("Timing out cursor %ld\n", 277 p -> _id ); 278 () `__dbc_o_t ( p ); 282 xtp = `LIST_FIRST (& __dbv_hd ); 283 } i(( to_ht > 0 &&o_h> to ) || 284 to_ht == -1) 285 to_ht = to ; 295 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; c = xtp ) { 296 xtp = `LIST_NEXT ( p , s ); 297 i( p -> _ty ! CT_ENV ) 299 to = *( p -> _aiv + c-> _id ; 301 i( to < t || f ) { 302 i( __dbv_vbo ) 303 `tf ("Timg ouv id %ld\n", p -> _id ); 304 () `__v_o_t ( p -> _id , 0, 1); 310 xtp = `LIST_FIRST (& __dbv_hd ); 313 } } 320 $__dbr_chd ( ) 321 _y * ; 323 _y * p , * xtp ; 325 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 326 p = xtp ) { 327 xtp = `LIST_NEXT ( p , s ); 328 i( p -> _ty == 0) 330 i( p -> _ = ) { 331 `__dbr_chd ( p ); 337 xtp = `LIST_NEXT ( p , s ); 338 `__dbr_p ( p ); 341 } } 347 $__dbr_p ( p ) 348 _y * p ; 350 `LIST_REMOVE ( p , s ); 351 `__os_ ( NULL , p ); 352 } } 358 $__dbd_p ( ) 359 _y * ; 361 `__dbr_chd ( ); 362 `__dbr_p ( ); 363 } } 368 _y * 369 $w__t ( ) 370 * ; 372 time_t t ; 373 _y * p , * op ; 374 t ; 376 i(( t = `__os_mloc ( NULL , ( _y ), & p )) != 0) { 377 * = t ; 378 ( NULL ); 380 `memt ( p , 0, ( _y )); 388 i(( t = `time ( NULL )) == -1) { 389 * = `__os_g_o (); 390 `__os_ ( NULL , p ); 391 ( NULL ); 393 op = `LIST_FIRST (& __dbv_hd ); 394 i( op ! NULL && op-> _id > t ) 395 t = op -> _id + 1; 396 p -> _id = () t ; 397 p -> _id = __dbv_idto ; 398 p -> _aiv = &p-> _aive ; 399 p -> _igp = NULL ; 400 p -> _fcou = 1; 402 `LIST_INSERT_HEAD (& __dbv_hd , p , s ); 403 ( p ); 404 } } 409 _y * 410 $g_b˒t ( id ) 411 id ; 413 _y * p ; 415 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 416 p = `LIST_NEXT (p, s )) 417 i( p -> _id = id ) 418 ( p ); 419 ( NULL ); 420 } } 426 _y * 427 $__dbv_shedb ( db_p , me , subdb , ty , ags ) 428 _y * db_p ; 429 cڡ * me , * subdb ; 430 DBTYPE ty ; 431 u_t32_t ags ; 433 _y * p ; 446 i( ags & DB_SERVER_DBNOSHARE ) 447 ( NULL ); 448 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 449 p = `LIST_NEXT (p, s )) { 453 i( p = db_p ) 455 i( p -> _ty ! CT_DB ) 457 i( p -> _v ! db_p ->ct_envparent) 459 i( ty ! DB_UNKNOWN && p -> _dbdp .type !=ype) 461 i( p -> _dbdp . dbags ! `LF_ISSET ( DB_SERVER_DBFLAGS )) 463 i( db_p -> _dbdp . tags != 0 && 464 p -> _dbdp . tags ! db_p ->ct_dbdp.setflags) 466 i( me = NULL || p -> _dbdp . db == NULL || 467 `rcmp ( me , p -> _dbdp . db ) != 0) 469 i( subdb ! p -> _dbdp .subdb && 470 ( subdb = NULL || p -> _dbdp .subdb == NULL || 471 `rcmp ( subdb , p -> _dbdp .subdb) != 0)) 476 p -> _fcou ++; 477 ( p ); 480 ( NULL ); 481 } } 487 _y * 488 $__dbv_shnv ( v_p , home , ags ) 489 _y * v_p ; 490 home_y * home ; 491 u_t32_t ags ; 493 _y * p ; 501 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 502 p = `LIST_NEXT (p, s )) { 506 i( p = v_p ) 508 i( p -> _ty ! CT_ENV ) 510 i( p -> _vdp . home != home) 512 i( p -> _vdp . vags ! ags ) 514 i( p -> _vdp . ags ! v_p ->ct_envdp.onflags) 516 i( p -> _vdp . offags ! v_p ->ct_envdp.offflags) 524 i( p -> _timeout < v_p ->ct_timeout) 525 p -> _timeout = v_p ->ct_timeout; 526 p -> _fcou ++; 527 ( p ); 530 ( NULL ); 531 } } 537 $__dbv_aive ( p ) 538 _y * p ; 540 time_t t ; 541 _y * vp ; 543 i( p = NULL ) 545 i(( t = `time ( NULL )) == -1) 547 *( p -> _aiv t ; 548 i(( vp = p -> _v = NULL ) 550 *( vp -> _aiv t ; 552 } } 558 $__db_o_t ( id , ags ) 559 id ; 560 u_t32_t ags ; 562 DB * dbp ; 563 t ; 564 _y * p ; 566 p = `g_b˒t ( id ); 567 i( p = NULL ) 568 ( DB_NOSERVER_ID ); 570 i( __dbv_vbo && p -> _fcou != 1) 571 `tf ("Deref'ing dbp id %ld,efcount %d\n", 572 id , p -> _fcou ); 574 i(-- p -> _fcou != 0) 577 i( __dbv_vbo ) 578 `tf ("Closg dbid %ld\n", id ); 580 dbp = p -> _dbp ; 581 t = dbp -> `o (dbp, ags ); 582 i( p -> _dbdp . db ! NULL ) 583 `__os_ ( NULL , p -> _dbdp . db ); 584 i( p -> _dbdp . subdb ! NULL ) 585 `__os_ ( NULL , p -> _dbdp . subdb ); 586 `__dbd_p ( p ); 587 ( t ); 588 } } 594 $__dbc_o_t ( dbc_p ) 595 _y * dbc_p ; 597 DBC * dbc ; 598 t ; 599 _y * p ; 601 dbc = ( DBC *) dbc_p -> _yp ; 603 t = dbc -> `o (dbc); 608 i( dbc_p -> _ty & CT_JOINCUR ) 609 p = `LIST_FIRST (& __dbv_hd ); c ! NULL ; 610 p = `LIST_NEXT (p, s )) { 615 i(( p -> _ty & CT_JOIN ) && 616 p -> _aiv =& dbc_p -> _aive ) { 617 p -> _ty &~ CT_JOIN ; 618 p -> _aiv = c-> _igp ; 619 `__dbv_aive ( p ); 622 `__dbr_p ( dbc_p ); 623 ( t ); 625 } } 631 $__v_o_t ( id , ags , f ) 632 id ; 633 u_t32_t ags ; 634 f ; 636 DB_ENV * dbv ; 637 t ; 638 _y * p , * dbp , * xtp ; 640 p = `g_b˒t ( id ); 641 i( p = NULL ) 642 ( DB_NOSERVER_ID ); 644 i( __dbv_vbo && p -> _fcou != 1) 645 `tf ("Deref'ingnv id %ld,efcount %d\n", 646 id , p -> _fcou ); 651 i(-- p -> _fcou !0 && ! f ) 653 dbv = p -> _vp ; 654 i( __dbv_vbo ) 655 `tf ("Closgnv id %ld\n", id ); 662 i( f ) 663 dbp = `LIST_FIRST (& __dbv_hd ); 664 dbp ! NULL ; db xtp ) { 665 xtp = `LIST_NEXT ( dbp , s ); 666 i( dbp -> _ty ! CT_DB ) 668 i( dbp -> _v ! p ) 674 `__db_o_t ( dbp -> _id , 0); 680 xtp = `LIST_FIRST (& __dbv_hd ); 682 t = dbv -> `o (dbv, ags ); 683 `__dbd_p ( p ); 684 ( t ); 685 } } 688 $add_home ( home ) 689 * home ; 691 home_y * hp , * hom ; 692 t ; 694 i(( t = `__os_mloc ( NULL , ( home_y ), & hp )) != 0) 695 ( t ); 696 i(( t = `__os_mloc ( NULL , ` ( home )+1, & hp ->home)) != 0) 697 ( t ); 698 `memy ( hp -> home , home, ` (home)+1); 699 hp -> d = home ; 700 hp -> sswd = NULL ; 705 hp -> me = `__db_h ( home ); 706 i( hp -> me ! NULL ) { 707 *( hp -> me ) = '\0'; 708 hp -> me ++; 710 hp -> me = home ; 711 *( hp -> me ) == '\0') { 712 hp -> me = `__db_h ( home ); 713 *( hp -> me ) = '\0'; 714 hp -> me ++; 720 hom = `LIST_FIRST (& __dbv_home ); hom ! NULL ; 721 hom = `LIST_NEXT (hom, s )) 722 i( `rcmp ( hom -> me , hp ->name) == 0) { 723 `tf ("Alreadydded homeame %s,t directory %s\n", 724 hp -> me , hom -> d ); 725 `__os_ ( NULL , hp -> home ); 726 `__os_ ( NULL , hp ); 729 `LIST_INSERT_HEAD (& __dbv_home , hp , s ); 730 i( __dbv_vbo ) 731 `tf ("Added hom% d %s\n", hp -> me , hp-> d ); 733 } } 736 $add_sswd ( sswd ) 737 * sswd ; 739 home_y * hp ; 746 hp = `LIST_FIRST (& __dbv_home ); 747 i( hp = NULL || hp-> sswd != NULL) 748 ( EINVAL ); 753 hp -> sswd =asswd; 755 } } 760 home_y * 761 $g_fuhome ( me ) 762 * me ; 764 home_y * hp ; 766 i( me = NULL ) 767 ( NULL ); 768 hp = `LIST_FIRST (& __dbv_home ); h! NULL ; 769 hp = `LIST_NEXT (hp, s )) 770 i( `rcmp ( me , hp ->name) == 0) 771 ( hp ); 772 ( NULL ); 773 } } 776 $v_cov ( ogme ) 777 * ogme ; 779 DB_ENV * dbv ; 780 home_y * hp ; 781 u_t32_t ags ; 782 exv , t ; 784 hp = `LIST_FIRST (& __dbv_home ); h! NULL ; 785 hp = `LIST_NEXT (hp, s )) { 786 exv = 0; 787 i(( t = `db_v_ (& dbv , 0)) != 0) { 788 `rtf ( dr , "%s: db_env_create: %s\n", 789 ogme , `db_ ( t )); 790 `ex ( EXIT_FAILURE ); 792 i( __dbv_vbo == 1) 793 () dbv -> `t_vbo (dbv, DB_VERB_RECOVERY , 1); 794 dbv -> `t_rfe (dbv, dr ); 795 dbv -> `t_fx (dbv, ogme ); 796 i( hp -> sswd ! NULL ) 797 () dbv -> `t_y (dbv, hp -> sswd , 798 DB_ENCRYPT_AES ); 804 i( __dbv_vbo ) 805 `tf ("Rugecovy o%s\n", hp -> home ); 806 ags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | 807 DB_INIT_TXN | DB_USE_ENVIRON | DB_RECOVER ; 808 i(( t = dbv -> `ݒ (dbv, hp -> home , ags , 0)) != 0) { 809 dbv -> `r (dbv, t , "DB_ENV->open"); 810 r ; 814 r : exv = 1; 816 i(( t = dbv -> `o (dbenv, 0)) != 0) { 817 exv = 1; 818 `rtf ( dr , "%s: dbenv->close: %s\n", 819 ogme , `db_ ( t )); 821 i( exv ) 822 ( exv ); 825 } } @../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 ( dbv -> `g_ENV (), 513 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_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_ENV (), tcou , DB_XIDDATASIZE , 537 & yp -> gid . gid_v )) != 0) { 538 `__os_ ( dbv -> `g_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_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_ENV (), yp -> txn . txn_v ); 593 `__os_ ( dbv -> `g_ENV (), yp -> gid . gid_v ); 594 `__os_ ( dbv -> `g_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 ); 897 Dbt `da ( dada , dasize ); 898 da . `t_dn ( dadn ); 899 da . `t_un ( daun ); 900 da . `t_doff ( dadoff ); 905 i( keyags & DB_DBT_USERMEM ) { 906 i(( t = `__os_umloc ( dbp -> `g_ENV (), 907 keyun , & tmpda )) != 0) 908 r ; 909 i( keyda ) 910 `memy ( tmpda , keyda , ( keysize < keyun ) ? 911 keysize : keyun ); 912 key . `t_da ( tmpda ); 913 key . `t_ags ( DB_DBT_USERMEM | ( keyags & DB_DBT_PARTIAL )); 915 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 917 i( ags & ( DB_MULTIPLE | DB_MULTIPLE_KEY ) || 918 daags & DB_DBT_USERMEM ) { 919 i(( t = `__os_umloc ( dbp -> `g_ENV (), 920 daun , & tmpda )) != 0) 921 r ; 922 i( dada ) 923 `memy ( tmpda , dada , 924 ( dasize < daun ) ? 925 dasize : daun ); 926 da . `t_da ( tmpda ); 927 da . `t_ags ( DB_DBT_USERMEM | ( daags & DB_DBT_PARTIAL )); 929 da . `t_ags ( DB_DBT_MALLOC | ( daags & DB_DBT_PARTIAL )); 932 t = dbp -> `g ( tx , & key , & da , ags ); 936 i( t == 0) { 945 * p = 1; 949 i( key . `g_da (= keyda ) { 950 t = `__os_umloc ( dbp -> `g_ENV (), 951 key . `g_size (), & yp -> keyda . keyda_v ); 952 i( t != 0) 953 r ; 954 `memy ( yp -> keyda . keyda_v , 955 key . `g_da (), key. `g_size ()); 957 yp -> keyda . keyda_v = (*) key . `g_da (); 959 yp -> keyda . keyda_n = key . `g_size (); 964 i( da . `g_da (= dada ) { 965 t = `__os_umloc ( dbp -> `g_ENV (), 966 da . `g_size (), & yp -> dada . dada_v ); 967 i( t != 0) 968 r ; 969 `memy ( yp -> dada . dada_v , da . `g_da (), 970 da . `g_size ()); 972 yp -> dada . dada_v = (*) da . `g_da (); 973 yp -> dada . dada_n = da . `g_size (); 975 r : `FREE_IF_CHANGED ( dbp -> `g_ENV (), key . `g_da (), keyda ); 976 `FREE_IF_CHANGED ( dbp -> `g_ENV (), da . `g_da (), dada ); 977 `FREE_IF_CHANGED ( dbp -> `g_ENV (), 978 yp -> keyda . keyda_v , key . `g_da ()); 979 yp -> keyda . keyda_v = NULL ; 980 yp -> keyda . keyda_n = 0; 981 yp -> dada . dada_v = NULL ; 982 yp -> dada . dada_n = 0; 983 * p = 0; 985 yp -> us = t ; 987 } } 990 $__db_g_h_f_oc ( 991 u_t dbp_id , 992 __db_g_h_f_y * yp ) 994 Db * dbp ; 995 _y * dbp_p ; 997 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 998 dbp = ( Db *) dbp_p -> _yp ; 1000 yp -> us = dbp -> `g_h_f (&yp-> f ); 1001 } } 1004 $__db_t_h_f_oc ( 1005 u_t dbp_id , 1006 u_t32_t f , 1007 __db_t_h_f_y * yp ) 1009 Db * dbp ; 1010 _y * dbp_p ; 1011 t ; 1013 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1014 dbp = ( Db *) dbp_p -> _yp ; 1016 t = dbp -> `t_h_f ( f ); 1018 yp -> us = t ; 1020 } } 1023 $__db_g_h_m_oc ( 1024 u_t dbp_id , 1025 __db_g_h_m_y * yp ) 1027 Db * dbp ; 1028 _y * dbp_p ; 1030 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1031 dbp = ( Db *) dbp_p -> _yp ; 1033 yp -> us = dbp -> `g_h_m (&yp-> m ); 1034 } } 1037 $__db_t_h_m_oc ( 1038 u_t dbp_id , 1039 u_t32_t m , 1040 __db_t_h_m_y * yp ) 1042 Db * dbp ; 1043 _y * dbp_p ; 1044 t ; 1046 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1047 dbp = ( Db *) dbp_p -> _yp ; 1049 t = dbp -> `t_h_m ( m ); 1051 yp -> us = t ; 1053 } } 1056 $__db_key_nge_oc ( 1057 u_t dbp_id , 1058 u_t tx_id , 1059 u_t32_t keydn , 1060 u_t32_t keydoff , 1061 u_t32_t keyun , 1062 u_t32_t keyags , 1063 * keyda , 1064 u_t32_t keysize , 1065 u_t32_t ags , 1066 __db_key_nge_y * yp ) 1068 Db * dbp ; 1069 DB_KEY_RANGE nge ; 1070 DbTxn * tx ; 1071 _y * dbp_p , * tx_p ; 1072 t ; 1074 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1075 dbp = ( Db *) dbp_p -> _yp ; 1076 i( tx_id != 0) { 1077 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1078 tx = ( DbTxn *) tx_p -> _yp ; 1080 tx = NULL ; 1083 Dbt `key ( keyda , keysize ); 1084 key . `t_dn ( keydn ); 1085 key . `t_un ( keyun ); 1086 key . `t_doff ( keydoff ); 1087 key . `t_ags ( keyags ); 1089 t = dbp -> `key_nge ( tx , & key , & nge , ags ); 1091 yp -> us = t ; 1092 yp -> ss = nge .less; 1093 yp -> equ = nge .equal; 1094 yp -> g = nge .greater; 1096 } } 1099 $__db_g_ld_oc ( 1100 u_t dbp_id , 1101 __db_g_ld_y * yp ) 1103 Db * dbp ; 1104 _y * dbp_p ; 1106 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1107 dbp = ( Db *) dbp_p -> _yp ; 1109 yp -> us = dbp -> `g_ld ((*)&yp-> ld ); 1110 } } 1113 $__db_t_ld_oc ( 1114 u_t dbp_id , 1115 u_t32_t ld , 1116 __db_t_ld_y * yp ) 1118 Db * dbp ; 1119 _y * dbp_p ; 1120 t ; 1122 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1123 dbp = ( Db *) dbp_p -> _yp ; 1125 t = dbp -> `t_ld ( ld ); 1127 yp -> us = t ; 1129 } } 1132 $__db_g_dbme_oc ( 1133 u_t dbp_id , 1134 __db_g_dbme_y * yp ) 1136 Db * dbp ; 1137 _y * dbp_p ; 1139 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1140 dbp = ( Db *) dbp_p -> _yp ; 1142 yp -> us = dbp -> `g_dbme ( 1143 (cڡ **)& yp -> fame , (cڡ **)&yp-> dbme ); 1144 } } 1147 $__db_g_ݒ_ags_oc ( 1148 u_t dbp_id , 1149 __db_g_ݒ_ags_y * yp ) 1151 Db * dbp ; 1152 _y * dbp_p ; 1154 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1155 dbp = ( Db *) dbp_p -> _yp ; 1157 yp -> us = dbp -> `g_ݒ_ags (&yp-> ags ); 1158 } } 1161 $__db_ݒ_oc ( 1162 u_t dbp_id , 1163 u_t tx_id , 1164 * me , 1165 * subdb , 1166 u_t32_t ty , 1167 u_t32_t ags , 1168 u_t32_t mode , 1169 __db_ݒ_y * yp ) 1171 Db * dbp ; 1172 DbTxn * tx ; 1173 DBTYPE dbty ; 1174 _y * dbp_p , * w_p , * tx_p ; 1175 isswd , t ; 1177 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1178 dbp = ( Db *) dbp_p -> _yp ; 1179 i( tx_id != 0) { 1180 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1181 tx = ( DbTxn *) tx_p -> _yp ; 1183 tx = NULL ; 1185 yp -> db_id = dbp_id ; 1186 i(( w_p = `__dbv_shedb ( 1187 dbp_p , me , subdb , ( DBTYPE ) ty , ags )! NULL ) { 1191 i( __dbv_vbo ) 1192 `tf ("Shg db ID %ld\n", w_p -> _id ); 1193 yp -> db_id = w_p -> _id ; 1194 t = `__db_o_t ( dbp_id , 0); 1195 out ; 1197 t = dbp -> `ݒ ( tx , me , subdb , ( DBTYPE ) ty , ags , mode ); 1198 i( t == 0) { 1199 () dbp -> `g_ty (& dbty ); 1200 yp -> ty = dbty ; 1207 () dbp -> `g_byswd (& isswd ); 1208 i( `__db_isbigdn () == 0) { 1209 i( isswd == 0) 1210 yp -> ld = 4321; 1212 yp -> ld = 1234; 1214 i( isswd == 0) 1215 yp -> ld = 1234; 1217 yp -> ld = 4321; 1219 dbp_p -> _dbdp . ty = dbty ; 1220 dbp_p -> _dbdp . dbags = `LF_ISSET ( DB_SERVER_DBFLAGS ); 1221 i( me = NULL ) 1222 dbp_p -> _dbdp . db = NULL ; 1223 i(( t = `__os_rdup ( dbp -> `g_ENV (), me , 1224 & dbp_p -> _dbdp . db )) != 0) 1225 out ; 1226 i( subdb = NULL ) 1227 dbp_p -> _dbdp . subdb = NULL ; 1228 i(( t = `__os_rdup ( dbp -> `g_ENV (), subdb , 1229 & dbp_p -> _dbdp . subdb )) != 0) 1230 out ; 1232 out : 1233 yp -> us = t ; 1235 } } 1238 $__db_g_gesize_oc ( 1239 u_t dbp_id , 1240 __db_g_gesize_y * yp ) 1242 Db * dbp ; 1243 _y * dbp_p ; 1245 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1246 dbp = ( Db *) dbp_p -> _yp ; 1248 yp -> us = dbp -> `g_gesize (&yp-> gesize ); 1249 } } 1252 $__db_t_gesize_oc ( 1253 u_t dbp_id , 1254 u_t32_t gesize , 1255 __db_t_gesize_y * yp ) 1257 Db * dbp ; 1258 _y * dbp_p ; 1259 t ; 1261 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1262 dbp = ( Db *) dbp_p -> _yp ; 1264 t = dbp -> `t_gesize ( gesize ); 1266 yp -> us = t ; 1268 } } 1271 $__db_g_iܙy_oc ( 1272 u_t dbp_id , 1273 __db_g_iܙy_y * yp ) 1275 Db * dbp ; 1276 _y * dbp_p ; 1278 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1279 dbp = ( Db *) dbp_p -> _yp ; 1281 yp -> us = 1282 dbp -> `g_iܙy (( DB_CACHE_PRIORITY *)& yp -> iܙy ); 1283 } } 1286 $__db_t_iܙy_oc ( 1287 u_t dbp_id , 1288 u_t32_t iܙy , 1289 __db_t_iܙy_y * yp ) 1291 Db * dbp ; 1292 _y * dbp_p ; 1293 t ; 1295 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1296 dbp = ( Db *) dbp_p -> _yp ; 1298 t = dbp -> `t_iܙy (( DB_CACHE_PRIORITY ) iܙy ); 1300 yp -> us = t ; 1302 } } 1305 $__db_pg_oc ( 1306 u_t dbp_id , 1307 u_t tx_id , 1308 u_t32_t skeydn , 1309 u_t32_t skeydoff , 1310 u_t32_t skeyun , 1311 u_t32_t skeyags , 1312 * skeyda , 1313 u_t32_t skeysize , 1314 u_t32_t pkeydn , 1315 u_t32_t pkeydoff , 1316 u_t32_t pkeyun , 1317 u_t32_t pkeyags , 1318 * pkeyda , 1319 u_t32_t pkeysize , 1320 u_t32_t dadn , 1321 u_t32_t dadoff , 1322 u_t32_t daun , 1323 u_t32_t daags , 1324 * dada , 1325 u_t32_t dasize , 1326 u_t32_t ags , 1327 __db_pg_y * yp , 1328 * p ) 1330 Db * dbp ; 1331 DbTxn * tx ; 1332 _y * dbp_p , * tx_p ; 1333 * tmpda ; 1334 t ; 1336 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1337 dbp = ( Db *) dbp_p -> _yp ; 1338 i( tx_id != 0) { 1339 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1340 tx = ( DbTxn *) tx_p -> _yp ; 1342 tx = NULL ; 1344 yp -> skeyda . skeyda_v = NULL ; 1345 yp -> pkeyda . pkeyda_v = NULL ; 1346 yp -> dada . dada_v = NULL ; 1347 * p = 0; 1350 Dbt `skey ( skeyda , skeysize ); 1351 skey . `t_dn ( skeydn ); 1352 skey . `t_un ( skeyun ); 1353 skey . `t_doff ( skeydoff ); 1355 Dbt `pkey ( pkeyda , pkeysize ); 1356 pkey . `t_dn ( pkeydn ); 1357 pkey . `t_un ( pkeyun ); 1358 pkey . `t_doff ( pkeydoff ); 1360 Dbt `da ( dada , dasize ); 1361 da . `t_dn ( dadn ); 1362 da . `t_un ( daun ); 1363 da . `t_doff ( dadoff ); 1368 i( skeyags & DB_DBT_USERMEM ) { 1369 i(( t = `__os_umloc ( dbp -> `g_ENV (), 1370 skeyun , & tmpda )) != 0) 1371 r ; 1372 i( skeyda ) 1373 `memy ( tmpda , skeyda , ( skeysize < skeyun ) ? 1374 skeysize : skeyun ); 1375 skey . `t_da ( tmpda ); 1376 skey . `t_ags ( DB_DBT_USERMEM | ( skeyags & DB_DBT_PARTIAL )); 1378 skey . `t_ags ( DB_DBT_MALLOC | ( skeyags & DB_DBT_PARTIAL )); 1380 i( pkeyags & DB_DBT_USERMEM ) { 1381 i(( t = `__os_umloc ( dbp -> `g_ENV (), 1382 pkeyun , & tmpda )) != 0) 1383 r ; 1384 i( pkeyda ) 1385 `memy ( tmpda , pkeyda , ( pkeysize < pkeyun ) ? 1386 pkeysize : pkeyun ); 1387 pkey . `t_da ( tmpda ); 1388 pkey . `t_ags ( DB_DBT_USERMEM | ( pkeyags & DB_DBT_PARTIAL )); 1390 pkey . `t_ags ( DB_DBT_MALLOC | ( pkeyags & DB_DBT_PARTIAL )); 1392 i( ags & ( DB_MULTIPLE | DB_MULTIPLE_KEY ) || 1393 daags & DB_DBT_USERMEM ) { 1394 i(( t = `__os_umloc ( dbp -> `g_ENV (), 1395 daun , & tmpda )) != 0) 1396 r ; 1397 i( dada ) 1398 `memy ( tmpda , dada , 1399 ( dasize < daun ) ? 1400 dasize : daun ); 1401 da . `t_da ( tmpda ); 1402 da . `t_ags ( DB_DBT_USERMEM | ( daags & DB_DBT_PARTIAL )); 1404 da . `t_ags ( DB_DBT_MALLOC | ( daags & DB_DBT_PARTIAL )); 1407 t = dbp -> `pg ( tx , & skey , & pkey , & da , ags ); 1411 i( t == 0) { 1420 * p = 1; 1424 i( skey . `g_da (= skeyda ) { 1425 t = `__os_umloc ( dbp -> `g_ENV (), 1426 skey . `g_size (), & yp -> skeyda . skeyda_v ); 1427 i( t != 0) 1428 r ; 1429 `memy ( yp -> skeyda . skeyda_v , skey . `g_da (), 1430 skey . `g_size ()); 1432 yp -> skeyda . skeyda_v = (*) skey . `g_da (); 1434 yp -> skeyda . skeyda_n = skey . `g_size (); 1439 i( pkey . `g_da (= pkeyda ) { 1440 t = `__os_umloc ( dbp -> `g_ENV (), 1441 pkey . `g_size (), & yp -> pkeyda . pkeyda_v ); 1442 i( t != 0) 1443 r ; 1444 `memy ( yp -> pkeyda . pkeyda_v , pkey . `g_da (), 1445 pkey . `g_size ()); 1447 yp -> pkeyda . pkeyda_v = (*) pkey . `g_da (); 1448 yp -> pkeyda . pkeyda_n = pkey . `g_size (); 1453 i( da . `g_da (= dada ) { 1454 t = `__os_umloc ( dbp -> `g_ENV (), 1455 da . `g_size (), & yp -> dada . dada_v ); 1456 i( t != 0) 1457 r ; 1458 `memy ( yp -> dada . dada_v , da . `g_da (), 1459 da . `g_size ()); 1461 yp -> dada . dada_v = (*) da . `g_da (); 1462 yp -> dada . dada_n = da . `g_size (); 1464 r : `FREE_IF_CHANGED ( dbp -> `g_ENV (), skey . `g_da (), skeyda ); 1465 `FREE_IF_CHANGED ( dbp -> `g_ENV (), pkey . `g_da (), pkeyda ); 1466 `FREE_IF_CHANGED ( dbp -> `g_ENV (), da . `g_da (), dada ); 1467 `FREE_IF_CHANGED ( dbp -> `g_ENV (), 1468 yp -> skeyda . skeyda_v , skey . `g_da ()); 1469 `FREE_IF_CHANGED ( dbp -> `g_ENV (), 1470 yp -> pkeyda . pkeyda_v , pkey . `g_da ()); 1471 `FREE_IF_CHANGED ( dbp -> `g_ENV (), 1472 yp -> dada . dada_v , da . `g_da ()); 1473 yp -> skeyda . skeyda_v = NULL ; 1474 yp -> skeyda . skeyda_n = 0; 1475 yp -> pkeyda . pkeyda_v = NULL ; 1476 yp -> pkeyda . pkeyda_n = 0; 1477 yp -> dada . dada_v = NULL ; 1478 yp -> dada . dada_n = 0; 1479 * p = 0; 1481 yp -> us = t ; 1483 } } 1486 $__db_put_oc ( 1487 u_t dbp_id , 1488 u_t tx_id , 1489 u_t32_t keydn , 1490 u_t32_t keydoff , 1491 u_t32_t keyun , 1492 u_t32_t keyags , 1493 * keyda , 1494 u_t32_t keysize , 1495 u_t32_t dadn , 1496 u_t32_t dadoff , 1497 u_t32_t daun , 1498 u_t32_t daags , 1499 * dada , 1500 u_t32_t dasize , 1501 u_t32_t ags , 1502 __db_put_y * yp , 1503 * p ) 1505 Db * dbp ; 1506 DbTxn * tx ; 1507 _y * dbp_p , * tx_p ; 1508 t ; 1510 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1511 dbp = ( Db *) dbp_p -> _yp ; 1512 i( tx_id != 0) { 1513 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1514 tx = ( DbTxn *) tx_p -> _yp ; 1516 tx = NULL ; 1518 yp -> keyda . keyda_v = NULL ; 1519 * p = 0; 1522 Dbt `key ( keyda , keysize ); 1523 key . `t_dn ( keydn ); 1524 key . `t_un ( keyun ); 1525 key . `t_doff ( keydoff ); 1526 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 1528 Dbt `da ( dada , dasize ); 1529 da . `t_dn ( dadn ); 1530 da . `t_un ( daun ); 1531 da . `t_doff ( dadoff ); 1532 da . `t_ags ( daags ); 1535 t = dbp -> `put ( tx , & key , & da , ags ); 1540 i( t =0 && ( ags = DB_APPEND )) { 1549 * p = 1; 1553 i( key . `g_da (= keyda ) { 1554 t = `__os_umloc ( dbp -> `g_ENV (), 1555 key . `g_size (), & yp -> keyda . keyda_v ); 1556 i( t != 0) 1557 r ; 1558 `memy ( yp -> keyda . keyda_v , 1559 key . `g_da (), key. `g_size ()); 1561 yp -> keyda . keyda_v = (*) key . `g_da (); 1563 yp -> keyda . keyda_n = key . `g_size (); 1565 r : `FREE_IF_CHANGED ( dbp -> `g_ENV (), key . `g_da (), keyda ); 1566 `FREE_IF_CHANGED ( dbp -> `g_ENV (), 1567 yp -> keyda . keyda_v , key . `g_da ()); 1568 yp -> keyda . keyda_v = NULL ; 1569 yp -> keyda . keyda_n = 0; 1570 * p = 0; 1572 yp -> us = t ; 1574 } } 1577 $__db_g__dim_oc ( 1578 u_t dbp_id , 1579 __db_g__dim_y * yp ) 1581 Db * dbp ; 1582 _y * dbp_p ; 1584 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1585 dbp = ( Db *) dbp_p -> _yp ; 1587 yp -> us = dbp -> `g__dim ((*)&yp-> dim ); 1588 } } 1591 $__db_t__dim_oc ( 1592 u_t dbp_id , 1593 u_t32_t dim , 1594 __db_t__dim_y * yp ) 1596 Db * dbp ; 1597 _y * dbp_p ; 1598 t ; 1600 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1601 dbp = ( Db *) dbp_p -> _yp ; 1603 t = dbp -> `t__dim ( dim ); 1605 yp -> us = t ; 1607 } } 1610 $__db_g__n_oc ( 1611 u_t dbp_id , 1612 __db_g__n_y * yp ) 1614 Db * dbp ; 1615 _y * dbp_p ; 1617 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1618 dbp = ( Db *) dbp_p -> _yp ; 1620 yp -> us = dbp -> `g__n (&yp-> n ); 1621 } } 1624 $__db_t__n_oc ( 1625 u_t dbp_id , 1626 u_t32_t n , 1627 __db_t__n_y * yp ) 1629 Db * dbp ; 1630 _y * dbp_p ; 1631 t ; 1633 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1634 dbp = ( Db *) dbp_p -> _yp ; 1636 t = dbp -> `t__n ( n ); 1638 yp -> us = t ; 1640 } } 1643 $__db_g__d_oc ( 1644 u_t dbp_id , 1645 __db_g__d_y * yp ) 1647 Db * dbp ; 1648 _y * dbp_p ; 1650 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1651 dbp = ( Db *) dbp_p -> _yp ; 1653 yp -> us = dbp -> `g__d ((*)&yp-> d ); 1654 } } 1657 $__db_t__d_oc ( 1658 u_t dbp_id , 1659 u_t32_t d , 1660 __db_t__d_y * yp ) 1662 Db * dbp ; 1663 _y * dbp_p ; 1664 t ; 1666 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1667 dbp = ( Db *) dbp_p -> _yp ; 1669 t = dbp -> `t__d ( d ); 1671 yp -> us = t ; 1673 } } 1676 $__db_move_oc ( 1677 u_t dbp_id , 1678 * me , 1679 * subdb , 1680 u_t32_t ags , 1681 __db_move_y * yp ) 1683 Db * dbp ; 1684 _y * dbp_p ; 1685 t ; 1687 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1688 dbp = ( Db *) dbp_p -> _yp ; 1690 t = dbp -> `move ( me , subdb , ags ); 1691 `__dbd_p ( dbp_p ); 1693 yp -> us = t ; 1695 } } 1698 $__db_me_oc ( 1699 u_t dbp_id , 1700 * me , 1701 * subdb , 1702 * wme , 1703 u_t32_t ags , 1704 __db_me_y * yp ) 1706 Db * dbp ; 1707 _y * dbp_p ; 1708 t ; 1710 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1711 dbp = ( Db *) dbp_p -> _yp ; 1713 t = dbp -> `me ( me , subdb , wme , ags ); 1714 `__dbd_p ( dbp_p ); 1716 yp -> us = t ; 1718 } } 1721 $__db__oc ( 1722 u_t dbp_id , 1723 u_t tx_id , 1724 u_t32_t ags , 1725 __db__y * yp , 1726 * p ) 1728 Db * dbp ; 1729 DbTxn * tx ; 1730 DBTYPE ty ; 1731 _y * dbp_p , * tx_p ; 1732 u_t32_t * q , * p , * t ; 1733 i , n , t ; 1734 * ; 1736 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1737 dbp = ( Db *) dbp_p -> _yp ; 1738 i( tx_id != 0) { 1739 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1740 tx = ( DbTxn *) tx_p -> _yp ; 1742 tx = NULL ; 1744 t = dbp -> ` ( tx , & , ags ); 1745 yp -> us = t ; 1746 i( t != 0) 1757 () dbp -> `g_ty (& ty ); 1758 i( ty = DB_HASH ) 1759 n = ( DB_HASH_STAT ); 1760 i( ty = DB_QUEUE ) 1761 n = ( DB_QUEUE_STAT ); 1763 n = ( DB_BTREE_STAT ); 1764 yp -> s . s_n = n / ( u_t32_t ); 1766 i(( t = `__os_umloc ( dbp -> `g_ENV (), 1767 n * yp -> s . s_n , & t )) != 0) 1768 out ; 1769 i = 0, q = t , p = ( u_t32_t *) ; i < n ; 1770 i ++, q ++, p ++) 1771 * q = * p ; 1772 yp -> s . s_v = t ; 1773 `__os_u ( dbp -> `g_ENV (), ); 1774 i( t == 0) 1775 * p = 1; 1776 out : 1777 yp -> us = t ; 1779 } } 1782 $__db_sync_oc ( 1783 u_t dbp_id , 1784 u_t32_t ags , 1785 __db_sync_y * yp ) 1787 Db * dbp ; 1788 _y * dbp_p ; 1789 t ; 1791 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1792 dbp = ( Db *) dbp_p -> _yp ; 1794 t = dbp -> `sync ( ags ); 1796 yp -> us = t ; 1798 } } 1801 $__db_un_oc ( 1802 u_t dbp_id , 1803 u_t tx_id , 1804 u_t32_t ags , 1805 __db_un_y * yp ) 1807 Db * dbp ; 1808 DbTxn * tx ; 1809 _y * dbp_p , * tx_p ; 1810 u_t32_t cou ; 1811 t ; 1813 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1814 dbp = ( Db *) dbp_p -> _yp ; 1815 i( tx_id != 0) { 1816 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1817 tx = ( DbTxn *) tx_p -> _yp ; 1819 tx = NULL ; 1821 t = dbp -> `un ( tx , & cou , ags ); 1822 yp -> us = t ; 1823 i( t == 0) 1824 yp -> cou = count; 1826 } } 1829 $__db_curs_oc ( 1830 u_t dbp_id , 1831 u_t tx_id , 1832 u_t32_t ags , 1833 __db_curs_y * yp ) 1835 Db * dbp ; 1836 Dbc * dbc ; 1837 DbTxn * tx ; 1838 _y * dbc_p , * v_p , * dbp_p , * tx_p ; 1839 t ; 1841 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1842 dbp = ( Db *) dbp_p -> _yp ; 1843 dbc_p = `w__t (& yp -> us ); 1844 i( dbc_p = NULL ) 1847 i( tx_id != 0) { 1848 `ACTIVATE_CTP ( tx_p , tx_id , CT_TXN ); 1849 tx = ( DbTxn *) tx_p -> _yp ; 1850 dbc_p -> _aiv = tx_p ->ct_activep; 1852 tx = NULL ; 1854 i(( t = dbp -> `curs ( tx , & dbc , ags )) == 0) { 1855 dbc_p -> _dbc = dbc ; 1856 dbc_p -> _ty = CT_CURSOR ; 1857 dbc_p -> _ = dbp_p ; 1858 v_p = dbp_p -> _v ; 1859 dbc_p -> _v = v_p ; 1860 `__dbv_imeout ( dbc_p , v_p -> _timeout ); 1861 `__dbv_aive ( dbc_p ); 1862 yp -> dbcid_id = dbc_p -> _id ; 1864 `__dbr_p ( dbc_p ); 1866 yp -> us = t ; 1868 } } 1871 $__db_jo_oc ( 1872 u_t dbp_id , 1873 u_t32_t * curs , 1874 u_t32_t cur , 1875 u_t32_t ags , 1876 __db_jo_y * yp ) 1878 Db * dbp ; 1879 Dbc ** jcurs , ** c ; 1880 Dbc * dbc ; 1881 _y * dbc_p , * p , * dbp_p ; 1882 size_t size ; 1883 u_t32_t * , i ; 1884 t ; 1886 `ACTIVATE_CTP ( dbp_p , dbp_id , CT_DB ); 1887 dbp = ( Db *) dbp_p -> _yp ; 1889 dbc_p = `w__t (& yp -> us ); 1890 i( dbc_p = NULL ) 1893 size = ( cur + 1* ( Dbc *); 1894 i(( t = `__os_oc ( dbp -> `g_ENV (), 1895 cur + 1, ( Dbc *), & jcurs )) != 0) { 1896 yp -> us = t ; 1897 `__dbr_p ( dbc_p ); 1905 p = `g_b˒t (* curs ); 1906 `DB_ASSERT ( dbp -> `g_ENV (), p -> _ty = CT_CURSOR ); 1911 i( p -> _aiv !&p-> _aive ) 1912 dbc_p -> _aiv = p ->ct_activep; 1913 i = 0, = curs , c = jcurs ; i < cur ; i++, cl++, c++) { 1914 p = `g_b˒t (* ); 1915 i( p = NULL ) { 1916 yp -> us = DB_NOSERVER_ID ; 1917 out ; 1929 `DB_ASSERT ( dbp -> `g_ENV (), p -> _ty = CT_CURSOR ); 1930 p -> _ty | CT_JOIN ; 1931 p -> _igp = c-> _aiv ; 1939 p -> _aiv = & dbc_p -> _aive ; 1940 * c = p -> _dbc ; 1942 * c = NULL ; 1943 i(( t = dbp -> `jo ( jcurs , & dbc , ags )) == 0) { 1944 dbc_p -> _dbc = dbc ; 1945 dbc_p -> _ty = ( CT_JOINCUR | CT_CURSOR ); 1946 dbc_p -> _ = dbp_p ; 1947 dbc_p -> _v = dbp_p ->ct_envparent; 1948 `__dbv_imeout ( dbc_p , dbp_p -> _v -> _timeout ); 1949 `__dbv_aive ( dbc_p ); 1950 yp -> dbcid_id = dbc_p -> _id ; 1952 `__dbr_p ( dbc_p ); 1956 = curs ; *cl != 0; cl++) { 1957 p = `g_b˒t (* ); 1958 p -> _ty = CT_CURSOR ; 1959 p -> _aiv = c-> _igp ; 1963 yp -> us = t ; 1964 out : 1965 `__os_ ( dbp -> `g_ENV (), jcurs ); 1967 } } 1970 $__dbc_o_oc ( 1971 u_t dbc_id , 1972 __dbc_o_y * yp ) 1974 _y * dbc_p ; 1976 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 1977 yp -> us = `__dbc_o_t ( dbc_p ); 1979 } } 1982 $__dbc_cou_oc ( 1983 u_t dbc_id , 1984 u_t32_t ags , 1985 __dbc_cou_y * yp ) 1987 Dbc * dbc ; 1988 _y * dbc_p ; 1989 db_o_t num ; 1990 t ; 1992 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 1993 dbc = ( Dbc *) dbc_p -> _yp ; 1995 t = dbc -> `cou (& num , ags ); 1996 yp -> us = t ; 1997 i( t == 0) 1998 yp -> dupcou = num ; 2000 } } 2003 $__dbc_d_oc ( 2004 u_t dbc_id , 2005 u_t32_t ags , 2006 __dbc_d_y * yp ) 2008 Dbc * dbc ; 2009 _y * dbc_p ; 2010 t ; 2012 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2013 dbc = ( Dbc *) dbc_p -> _yp ; 2015 t = dbc -> `d ( ags ); 2017 yp -> us = t ; 2019 } } 2022 $__dbc_dup_oc ( 2023 u_t dbc_id , 2024 u_t32_t ags , 2025 __dbc_dup_y * yp ) 2027 Dbc * dbc , * wdbc ; 2028 _y * dbc_p , * w_p ; 2029 t ; 2031 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2032 dbc = ( Dbc *) dbc_p -> _yp ; 2034 w_p = `w__t (& yp -> us ); 2035 i( w_p = NULL ) 2038 i(( t = dbc -> `dup (& wdbc , ags )) == 0) { 2039 w_p -> _dbc = wdbc ; 2040 w_p -> _ty = CT_CURSOR ; 2041 w_p -> _ = dbc_p ->ct_parent; 2042 w_p -> _v = dbc_p ->ct_envparent; 2046 i( dbc_p -> _aiv !&dbc_p-> _aive ) 2047 w_p -> _aiv = dbc_p ->ct_activep; 2048 `__dbv_imeout ( w_p , dbc_p -> _timeout ); 2049 `__dbv_aive ( w_p ); 2050 yp -> dbcid_id = w_p -> _id ; 2052 `__dbr_p ( w_p ); 2054 yp -> us = t ; 2056 } } 2059 $__dbc_g_oc ( 2060 u_t dbc_id , 2061 u_t32_t keydn , 2062 u_t32_t keydoff , 2063 u_t32_t keyun , 2064 u_t32_t keyags , 2065 * keyda , 2066 u_t32_t keysize , 2067 u_t32_t dadn , 2068 u_t32_t dadoff , 2069 u_t32_t daun , 2070 u_t32_t daags , 2071 * dada , 2072 u_t32_t dasize , 2073 u_t32_t ags , 2074 __dbc_g_y * yp , 2075 * p ) 2077 Dbc * dbc ; 2078 DbEnv * dbv ; 2079 _y * dbc_p ; 2080 t ; 2081 * tmpda ; 2083 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2084 dbc = ( Dbc *) dbc_p -> _yp ; 2085 dbv = DbEnv :: `g_DbEnv ((( DBC *) dbc )-> dbp ->dbenv); 2087 yp -> keyda . keyda_v = NULL ; 2088 yp -> dada . dada_v = NULL ; 2089 * p = 0; 2092 Dbt `key ( keyda , keysize ); 2093 key . `t_dn ( keydn ); 2094 key . `t_un ( keyun ); 2095 key . `t_doff ( keydoff ); 2097 Dbt `da ( dada , dasize ); 2098 da . `t_dn ( dadn ); 2099 da . `t_un ( daun ); 2100 da . `t_doff ( dadoff ); 2105 i( keyags & DB_DBT_USERMEM ) { 2106 i(( t = `__os_umloc ( 2107 dbv -> `g_ENV (), keyun , & tmpda )) != 0) 2108 r ; 2109 i( keyda ) 2110 `memy ( tmpda , keyda , ( keysize < keyun ) ? 2111 keysize : keyun ); 2112 key . `t_da ( tmpda ); 2113 key . `t_ags ( DB_DBT_USERMEM | ( keyags & DB_DBT_PARTIAL )); 2115 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 2117 i( ags & ( DB_MULTIPLE | DB_MULTIPLE_KEY ) || 2118 daags & DB_DBT_USERMEM ) { 2119 i(( t = `__os_umloc ( dbv -> `g_ENV (), 2120 daun , & tmpda )) != 0) 2121 r ; 2122 i( dada ) 2123 `memy ( tmpda , dada , 2124 ( dasize < daun ) ? 2125 dasize : daun ); 2126 da . `t_da ( tmpda ); 2127 da . `t_ags ( DB_DBT_USERMEM | ( daags & DB_DBT_PARTIAL )); 2129 da . `t_ags ( DB_DBT_MALLOC | ( daags & DB_DBT_PARTIAL )); 2132 t = dbc -> `g (& key , & da , ags ); 2137 i( t == 0) { 2146 * p = 1; 2150 i( key . `g_da (= keyda ) { 2151 t = `__os_umloc ( dbv -> `g_ENV (), key . `g_size (), 2152 & yp -> keyda . keyda_v ); 2153 i( t != 0) 2154 r ; 2155 `memy ( yp -> keyda . keyda_v , 2156 key . `g_da (), key. `g_size ()); 2158 yp -> keyda . keyda_v = (*) key . `g_da (); 2160 yp -> keyda . keyda_n = key . `g_size (); 2165 i( da . `g_da (= dada ) { 2166 t = `__os_umloc ( dbv -> `g_ENV (), da . `g_size (), 2167 & yp -> dada . dada_v ); 2168 i( t != 0) 2169 r ; 2170 `memy ( yp -> dada . dada_v , da . `g_da (), 2171 da . `g_size ()); 2173 yp -> dada . dada_v = (*) da . `g_da (); 2174 yp -> dada . dada_n = da . `g_size (); 2176 r : `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2177 key . `g_da (), keyda ); 2178 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2179 da . `g_da (), dada ); 2180 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2181 yp -> keyda . keyda_v , key . `g_da ()); 2182 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2183 yp -> dada . dada_v , da . `g_da ()); 2184 yp -> keyda . keyda_v = NULL ; 2185 yp -> keyda . keyda_n = 0; 2186 yp -> dada . dada_v = NULL ; 2187 yp -> dada . dada_n = 0; 2188 * p = 0; 2190 yp -> us = t ; 2192 } } 2195 $__dbc_pg_oc ( 2196 u_t dbc_id , 2197 u_t32_t skeydn , 2198 u_t32_t skeydoff , 2199 u_t32_t skeyun , 2200 u_t32_t skeyags , 2201 * skeyda , 2202 u_t32_t skeysize , 2203 u_t32_t pkeydn , 2204 u_t32_t pkeydoff , 2205 u_t32_t pkeyun , 2206 u_t32_t pkeyags , 2207 * pkeyda , 2208 u_t32_t pkeysize , 2209 u_t32_t dadn , 2210 u_t32_t dadoff , 2211 u_t32_t daun , 2212 u_t32_t daags , 2213 * dada , 2214 u_t32_t dasize , 2215 u_t32_t ags , 2216 __dbc_pg_y * yp , 2217 * p ) 2219 Dbc * dbc ; 2220 DbEnv * dbv ; 2221 _y * dbc_p ; 2222 t ; 2224 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2225 dbc = ( Dbc *) dbc_p -> _yp ; 2226 dbv = DbEnv :: `g_DbEnv ((( DBC *) dbc )-> dbp ->dbenv); 2228 yp -> skeyda . skeyda_v = NULL ; 2229 yp -> pkeyda . pkeyda_v = NULL ; 2230 yp -> dada . dada_v = NULL ; 2231 * p = 0; 2237 Dbt `skey ( skeyda , skeysize ); 2238 skey . `t_dn ( skeydn ); 2239 skey . `t_un ( skeyun ); 2240 skey . `t_doff ( skeydoff ); 2241 skey . `t_ags ( DB_DBT_MALLOC | ( skeyags & DB_DBT_PARTIAL )); 2243 Dbt `pkey ( pkeyda , pkeysize ); 2244 pkey . `t_dn ( pkeydn ); 2245 pkey . `t_un ( pkeyun ); 2246 pkey . `t_doff ( pkeydoff ); 2247 pkey . `t_ags ( DB_DBT_MALLOC | ( pkeyags & DB_DBT_PARTIAL )); 2249 Dbt `da ( dada , dasize ); 2250 da . `t_dn ( dadn ); 2251 da . `t_un ( daun ); 2252 da . `t_doff ( dadoff ); 2253 da . `t_ags ( DB_DBT_MALLOC | ( daags & DB_DBT_PARTIAL )); 2256 t = dbc -> `pg (& skey , & pkey , & da , ags ); 2260 i( t == 0) { 2269 * p = 1; 2273 i( skey . `g_da (= skeyda ) { 2274 t = `__os_umloc ( dbv -> `g_ENV (), 2275 skey . `g_size (), & yp -> skeyda . skeyda_v ); 2276 i( t != 0) 2277 r ; 2278 `memy ( yp -> skeyda . skeyda_v , skey . `g_da (), 2279 skey . `g_size ()); 2281 yp -> skeyda . skeyda_v = (*) skey . `g_da (); 2282 yp -> skeyda . skeyda_n = skey . `g_size (); 2287 i( pkey . `g_da (= pkeyda ) { 2288 t = `__os_umloc ( dbv -> `g_ENV (), 2289 pkey . `g_size (), & yp -> pkeyda . pkeyda_v ); 2290 i( t != 0) 2291 r ; 2292 `memy ( yp -> pkeyda . pkeyda_v , pkey . `g_da (), 2293 pkey . `g_size ()); 2295 yp -> pkeyda . pkeyda_v = (*) pkey . `g_da (); 2296 yp -> pkeyda . pkeyda_n = pkey . `g_size (); 2301 i( da . `g_da (= dada ) { 2302 t = `__os_umloc ( dbv -> `g_ENV (), 2303 da . `g_size (), & yp -> dada . dada_v ); 2304 i( t != 0) 2305 r ; 2306 `memy ( yp -> dada . dada_v , da . `g_da (), 2307 da . `g_size ()); 2309 yp -> dada . dada_v = (*) da . `g_da (); 2310 yp -> dada . dada_n = da . `g_size (); 2312 r : `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2313 skey . `g_da (), skeyda ); 2314 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2315 pkey . `g_da (), pkeyda ); 2316 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2317 da . `g_da (), dada ); 2318 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2319 yp -> skeyda . skeyda_v , skey . `g_da ()); 2320 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2321 yp -> pkeyda . pkeyda_v , pkey . `g_da ()); 2322 `FREE_IF_CHANGED ( dbv -> `g_ENV (), 2323 yp -> dada . dada_v , da . `g_da ()); 2324 yp -> skeyda . skeyda_v = NULL ; 2325 yp -> skeyda . skeyda_n = 0; 2326 yp -> pkeyda . pkeyda_v = NULL ; 2327 yp -> pkeyda . pkeyda_n = 0; 2328 yp -> dada . dada_v = NULL ; 2329 yp -> dada . dada_n = 0; 2330 * p = 0; 2332 yp -> us = t ; 2334 } } 2337 $__dbc_put_oc ( 2338 u_t dbc_id , 2339 u_t32_t keydn , 2340 u_t32_t keydoff , 2341 u_t32_t keyun , 2342 u_t32_t keyags , 2343 * keyda , 2344 u_t32_t keysize , 2345 u_t32_t dadn , 2346 u_t32_t dadoff , 2347 u_t32_t daun , 2348 u_t32_t daags , 2349 * dada , 2350 u_t32_t dasize , 2351 u_t32_t ags , 2352 __dbc_put_y * yp , 2353 * p ) 2355 Db * dbp ; 2356 Dbc * dbc ; 2357 _y * dbc_p ; 2358 t ; 2359 DBTYPE dbty ; 2361 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2362 dbc = ( Dbc *) dbc_p -> _yp ; 2363 dbp = ( Db *) dbc_p -> _ -> _yp ; 2366 Dbt `key ( keyda , keysize ); 2367 key . `t_dn ( keydn ); 2368 key . `t_un ( keyun ); 2369 key . `t_doff ( keydoff ); 2373 key . `t_ags ( DB_DBT_MALLOC | ( keyags & DB_DBT_PARTIAL )); 2375 Dbt `da ( dada , dasize ); 2376 da . `t_dn ( dadn ); 2377 da . `t_un ( daun ); 2378 da . `t_doff ( dadoff ); 2379 da . `t_ags ( daags ); 2382 t = dbc -> `put (& key , & da , ags ); 2384 * p = 0; 2385 yp -> keyda . keyda_v = NULL ; 2386 yp -> keyda . keyda_n = 0; 2387 i( t =0 && ( ags = DB_AFTER || fg= DB_BEFORE )) { 2388 t = dbp -> `g_ty (& dbty ); 2389 i( t =0 && dbty = DB_RECNO ) { 2394 yp -> keyda . keyda_v = (*) key . `g_da (); 2395 yp -> keyda . keyda_n = key . `g_size (); 2398 yp -> us = t ; 2400 } } 2403 $__dbc_g_iܙy_oc ( 2404 u_t dbc_id , 2405 __dbc_g_iܙy_y * yp ) 2407 Dbc * dbc ; 2408 _y * dbc_p ; 2410 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2411 dbc = ( Dbc *) dbc_p -> _yp ; 2413 yp -> us = 2414 dbc -> `g_iܙy (( DB_CACHE_PRIORITY *)& yp -> iܙy ); 2415 } } 2418 $__dbc_t_iܙy_oc ( 2419 u_t dbc_id , 2420 u_t32_t iܙy , 2421 __dbc_t_iܙy_y * yp ) 2423 Dbc * dbc ; 2424 _y * dbc_p ; 2425 t ; 2427 `ACTIVATE_CTP ( dbc_p , dbc_id , CT_CURSOR ); 2428 dbc = ( Dbc *) dbc_p -> _yp ; 2430 t = dbc -> `t_iܙy (( DB_CACHE_PRIORITY ) iܙy ); 2432 yp -> us = t ; 2434 } } @../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 DBT da ; 35 DB_SEQUENCE_STAT * ; 36 DB_SEQ_RECORD cd ; 37 DB_THREAD_INFO * ; 38 ENV * v ; 39 hd_check , t , t_t ; 41 dbp = q -> q_dbp ; 42 v = dbp ->env; 44 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->stat"); 46 ags ) { 47 DB_STAT_CLEAR : 48 DB_STAT_ALL : 52 ( `__db_ ( v , "DB_SEQUENCE->stat", 0)); 55 `ENV_ENTER ( v , ); 58 hd_check = `IS_ENV_REPLICATED ( v ); 59 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 60 hd_check = 0; 61 r ; 65 i(( t = `__os_umloc ( v , (* ), &sp)) != 0) 66 r ; 67 `memt ( , 0, (*sp)); 69 i( q -> mtx_q ! MUTEX_INVALID ) { 70 `__mux_t_wa_fo ( 71 v , q -> mtx_q , & -> _wa , &-> _nowa ); 73 i( `LF_ISSET ( DB_STAT_CLEAR )) 74 `__mux_r ( v , q -> mtx_q ); 76 `memt (& da , 0, (data)); 77 da .d& cd ; 78 da . un = ( cd ); 79 da . ags = DB_DBT_USERMEM ; 80 y : i(( t = `__db_g ( dbp , , NULL , & q -> q_key , & da , 0)) != 0) { 81 i( t = DB_BUFFER_SMALL && 82 da . size > ( q -> q_cd )) { 83 i(( t = `__os_mloc ( v , 84 da . size , &data.data)) != 0) 85 r ; 86 da . un = da. size ; 87 y ; 89 r ; 92 i( da .d!& cd ) 93 `memy (& cd , da .data, (record)); 94 -> _cut = cd . q_vue ; 95 -> _vue = q -> q_cd . q_vue ; 96 -> _ϡ_vue = q -> q_ϡ_vue ; 97 -> _m = q -> q_cd . q_m ; 98 -> _max = q -> q_cd . q_max ; 99 -> _che_size = q -> q_che_size ; 100 -> _ags = q -> q_cd . ags ; 102 * p = ; 103 i( da .d!& cd ) 104 `__os_ ( v , da .data); 107 r : i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 108 t = t_t ; 109 `ENV_LEAVE ( v , ); 110 ( t ); 111 } } 120 $__q__t ( q , ags ) 121 DB_SEQUENCE * q ; 122 u_t32_t ags ; 124 DB * dbp ; 125 DB_THREAD_INFO * ; 126 ENV * v ; 127 hd_check , t , t_t ; 129 dbp = q -> q_dbp ; 130 v = dbp ->env; 132 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->stat_print"); 134 `ENV_ENTER ( v , ); 137 hd_check = `IS_ENV_REPLICATED ( v ); 138 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, 0)) != 0) { 139 hd_check = 0; 140 r ; 143 i(( t = `__q_t_s ( q , ags )) != 0) 144 r ; 146 i( `LF_ISSET ( DB_STAT_ALL ) && 147 ( t = `__q_t_l ( q , ags )) != 0) 148 r ; 151 r : i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 152 t = t_t ; 154 `ENV_LEAVE ( v , ); 155 ( t ); 157 } } 159 cڡ FN g__db_q_ags_ [] = { 160 { DB_SEQ_DEC , "decrement" }, 161 { DB_SEQ_INC , "increment" }, 162 { DB_SEQ_RANGE_SET , "range set (internal)" }, 163 { DB_SEQ_WRAP , "wraparoundtnd" }, 164 { 0, NULL } 173 cڡ FN * 174 $__db_g_q_ags_ () 176 ( __db_q_ags_ ); 177 } } 184 $__q_t_s ( q , ags ) 185 DB_SEQUENCE * q ; 186 u_t32_t ags ; 188 DB_SEQUENCE_STAT * ; 189 ENV * v ; 190 t ; 192 v = q -> q_dbp ->env; 194 i(( t = `__q_ ( q , & , ags )) != 0) 195 ( t ); 196 `__db_dl_p ( v , 198 ( u_lg ) -> _wa , 199 `DB_PCT ( -> _wa , sp->_wa + sp-> _nowa ), NULL ); 200 `STAT_FMT ("The current sequence value", 201 INT64_FMT , t64_t , -> _cut ); 202 `STAT_FMT ("The cached sequence value", 203 INT64_FMT , t64_t , -> _vue ); 204 `STAT_FMT ("Theast cached sequence value", 205 INT64_FMT , t64_t , -> _ϡ_vue ); 206 `STAT_FMT ("The minimum sequence value", 207 INT64_FMT , t64_t , -> _vue ); 208 `STAT_FMT ("The maximum sequence value", 209 INT64_FMT , t64_t , -> _vue ); 210 `STAT_ULONG ("Thchsize", -> _che_size ); 211 `__db_ags ( v , NULL , 212 -> _ags , __db_q_ags_ , NULL , "\tSequence flags"); 213 `__os_u ( q -> q_dbp -> v , ); 215 } } 223 $__q_t_l ( q , ags ) 224 DB_SEQUENCE * q ; 225 u_t32_t ags ; 227 `COMPQUIET ( q , NULL ); 228 `COMPQUIET ( ags , 0); 230 } } 235 $__q_ ( q , p , ags ) 236 DB_SEQUENCE * q ; 237 DB_SEQUENCE_STAT ** p ; 238 u_t32_t ags ; 240 `COMPQUIET ( p , NULL ); 241 `COMPQUIET ( ags , 0); 243 ( `__db__n_but ( q -> q_dbp -> v )); 244 } } 247 $__q__t ( q , ags ) 248 DB_SEQUENCE * q ; 249 u_t32_t ags ; 251 `COMPQUIET ( ags , 0); 253 ( `__db__n_but ( q -> q_dbp -> v )); 254 } } 262 cڡ FN * 263 $__db_g_q_ags_ () 265 cڡ FN __db_q_ags_ [] = { 266 { 0, NULL } 273 ( __db_q_ags_ ); 274 } } @../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 37 #SEQ_SWAP ( ) \ 39 `M_32_SWAP (( )-> q_vsi ); \ 40 `M_32_SWAP (( )-> ags ); \ 41 `M_64_SWAP (( )-> q_vue ); \ 42 `M_64_SWAP (( )-> q_max ); \ 43 `M_64_SWAP (( )-> q_m ); \ 44 } 0) ) 46 #SEQ_SWAP_IN ( v , q ) \ 48 i(! `F_ISSET (( v ), ENV_LITTLEENDIAN )) { \ 49 `memy (& q -> q_cd , seq-> q_da . da , \ 50 ( q -> q_cd )); \ 51 `SEQ_SWAP (& q -> q_cd ); \ 53 } 0) ) 55 #SEQ_SWAP_OUT ( v , q ) \ 57 i(! `F_ISSET (( v ), ENV_LITTLEENDIAN )) { \ 58 `memy ( q -> q_da . da , \ 59 & q -> q_cd , (seq->seq_record));\ 60 `SEQ_SWAP (( DB_SEQ_RECORD *) q -> q_da . da ); \ 62 } 0) ) 64 __q_chk_chesize __P (( ENV *, t32_t , db_q_t , db_seq_t)); 65 __q_o __P (( DB_SEQUENCE *, u_t32_t )); 66 __q_g 67 __P (( DB_SEQUENCE *, DB_TXN *, t32_t , db_q_t *, u_t32_t )); 68 __q_g_chesize __P (( DB_SEQUENCE *, t32_t *)); 69 __q_g_db __P (( DB_SEQUENCE *, DB **)); 70 __q_g_ags __P (( DB_SEQUENCE *, u_t32_t *)); 71 __q_g_key __P (( DB_SEQUENCE *, DBT *)); 72 __q_g_nge __P (( DB_SEQUENCE *, db_q_t *, db_seq_t *)); 73 __q_l_vue __P (( DB_SEQUENCE *, db_q_t )); 74 __q_ݒ_ __P (( DB_SEQUENCE *, DB_TXN *, DBT *, u_t32_t )); 75 __q_move __P (( DB_SEQUENCE *, DB_TXN *, u_t32_t )); 76 __q_t_chesize __P (( DB_SEQUENCE *, t32_t )); 77 __q_t_ags __P (( DB_SEQUENCE *, u_t32_t )); 78 __q_t_nge __P (( DB_SEQUENCE *, db_q_t , db_seq_t)); 79 __q_upde 80 __P (( DB_SEQUENCE *, DB_THREAD_INFO *, DB_TXN *, t32_t , u_t32_t )); 89 $db_qu_ ( qp , dbp , ags ) 90 DB_SEQUENCE ** qp ; 91 DB * dbp ; 92 u_t32_t ags ; 94 DB_SEQUENCE * q ; 95 ENV * v ; 96 t ; 98 v = dbp ->env; 100 `DB_ILLEGAL_BEFORE_OPEN ( dbp , "db_sequence_create"); 101 #ifde HAVE_RPC 102 i( `RPC_ON ( dbp -> dbv )) 103 ( `__db_dbv_g ( dbp -> dbv )); 107 ags ) { 111 ( `__db_ ( v , "db_sequence_create", 0)); 115 i(( t = `__os_oc ( v , 1, (* q ), &seq)) != 0) 116 ( t ); 118 q -> q_dbp = dbp ; 119 q -> o = __q_o ; 120 q -> g = __q_g ; 121 q -> g_chesize = __q_g_chesize ; 122 q -> t_chesize = __q_t_chesize ; 123 q -> g_db = __q_g_db ; 124 q -> g_ags = __q_g_ags ; 125 q -> g_key = __q_g_key ; 126 q -> g_nge = __q_g_nge ; 127 q -> l_vue = __q_l_vue ; 128 q -> ݒ = __q_ݒ_ ; 129 q -> move = __q_move ; 130 q -> t_ags = __q_t_ags ; 131 q -> t_nge = __q_t_nge ; 132 q -> = __q_ ; 133 q -> _t = __q__t ; 134 q -> q_ = &q-> q_cd ; 135 * qp = q ; 138 } } 146 $__q_ݒ_ ( q , txn , keyp , ags ) 147 DB_SEQUENCE * q ; 148 DB_TXN * txn ; 149 DBT * keyp ; 150 u_t32_t ags ; 152 DB * dbp ; 153 DB_SEQ_RECORD * ; 154 DB_THREAD_INFO * ; 155 ENV * v ; 156 u_t32_t tags ; 157 hd_check , txn_lol , t , t_t ; 158 #SEQ_OPEN_FLAGS ( DB_CREATE | DB_EXCL | DB_THREAD ) ) 160 dbp = q -> q_dbp ; 161 v = dbp ->env; 162 txn_lol = 0; 164 `STRIP_AUTO_COMMIT ( ags ); 165 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->open"); 167 `ENV_ENTER ( v , ); 170 hd_check = `IS_ENV_REPLICATED ( v ); 171 i( hd_check && 172 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 173 hd_check = 0; 174 r ; 177 i(( t = `__db_fchk ( v , 178 "DB_SEQUENCE->ݒ", ags , SEQ_OPEN_FLAGS )) != 0) 179 r ; 181 i( keyp -> size == 0) { 182 `__db_rx ( v , "Zeroength sequence key specified"); 183 t = EINVAL ; 184 r ; 187 i(( t = `__db_g_ags ( dbp , & tags )) != 0) 188 r ; 190 i( `DB_IS_READONLY ( dbp )) { 191 t = `__db_rdly ( dbp -> v , "DB_SEQUENCE->open"); 192 r ; 194 i( `FLD_ISSET ( tags , DB_DUP )) { 195 `__db_rx ( v , 197 t = EINVAL ; 198 r ; 201 i( `LF_ISSET ( DB_THREAD )) { 202 i( `RPC_ON ( dbp -> dbv )) { 203 `__db_rx ( v , 205 r ; 207 i(( t = `__mux_loc ( v , 208 MTX_SEQUENCE , DB_MUTEX_PROCESS_ONLY , & q -> mtx_q )) != 0) 209 r ; 212 `memt (& q -> q_da , 0, ( DBT )); 213 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) { 214 q -> q_da . da = &q-> q_cd ; 215 q -> q_da . ags = DB_DBT_USERMEM ; 217 i(( t = `__os_umloc ( v , 218 ( q -> q_cd ), &q-> q_da . da )) != 0) 219 r ; 220 q -> q_da . ags = DB_DBT_REALLOC ; 223 q -> q_da . un = seq->q_da. size = (q-> q_cd ); 224 q -> q_ = &q-> q_cd ; 226 i(( t = `__dbt_urcy ( v , keyp )) != 0) 227 r ; 229 `memt (& q -> q_key , 0, ( DBT )); 230 i(( t = `__os_mloc ( v , keyp -> size , & q -> q_key . da )) != 0) 231 r ; 232 `memy ( q -> q_key . da , keyp ->da, keyp-> size ); 233 q -> q_key . size = seq->q_key. un = keyp ->size; 234 q -> q_key . ags = DB_DBT_USERMEM ; 236 y : i(( t = `__db_g ( dbp , , 237 txn , & q -> q_key , &q-> q_da , 0)) != 0) { 238 i( t = DB_BUFFER_SMALL && 239 q -> q_da . size > (q-> q_cd )) { 240 q -> q_da . ags = DB_DBT_REALLOC ; 241 q -> q_da . da = NULL ; 242 y ; 244 i(( t ! DB_NOTFOUND && ! DB_KEYEMPTY ) || 245 ! `LF_ISSET ( DB_CREATE )) 246 r ; 247 t = 0; 249 = & q -> q_cd ; 250 i(! `F_ISSET ( , DB_SEQ_RANGE_SET )) { 251 -> q_max = INT64_MAX ; 252 -> q_m = INT64_MIN ; 255 i(! `F_ISSET ( , DB_SEQ_DEC )) 256 `F_SET ( , DB_SEQ_INC ); 258 -> q_vsi = DB_SEQUENCE_VERSION ; 260 i( -> q_vue >p-> q_max || 261 -> q_vue <p-> q_m ) { 262 `__db_rx ( v , "Sequence value out ofange"); 263 t = EINVAL ; 264 r ; 266 `SEQ_SWAP_OUT ( v , q ); 268 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 269 i(( t = 270 `__txn_beg ( v , , NULL , & txn , 0)) != 0) 271 r ; 272 txn_lol = 1; 275 i(( t = `__db_put ( dbp , , txn , & q -> q_key , 276 & q -> q_da , DB_NOOVERWRITE )) != 0) { 277 `__db_rx ( v , "Sequence create failed"); 278 r ; 281 } i( `LF_ISSET ( DB_CREATE && LF_ISSET( DB_EXCL )) { 282 t = EEXIST ; 283 r ; 284 } i( q -> q_da . size < (q-> q_cd )) { 285 `__db_rx ( v , "Bad sequenceecord format"); 286 t = EINVAL ; 287 r ; 290 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) 291 q -> q_ = seq-> q_da . da ; 297 = q -> q_da . da ; 298 i( -> q_vsi = DB_SEQUENCE_OLDVER ) { 299 dv : -> q_vsi = DB_SEQUENCE_VERSION ; 300 i(! `F_ISSET ( v , ENV_LITTLEENDIAN )) { 301 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 302 i(( t = 303 `__txn_beg ( v , , NULL , & txn , 0)) != 0) 304 r ; 305 txn_lol = 1; 306 y ; 308 `memy (& q -> q_cd , , (seq->seq_record)); 309 `SEQ_SWAP_OUT ( v , q ); 311 i(( t = `__db_put ( dbp , 312 , txn , & q -> q_key , &q-> q_da , 0)) != 0) 313 r ; 315 = q -> q_ ; 317 `SEQ_SWAP_IN ( v , q ); 319 i( -> q_vsi ! DB_SEQUENCE_VERSION ) { 329 i( -> q_vsi = DB_SEQUENCE_OLDVER ) 330 dv ; 331 `M_32_SWAP ( -> q_vsi ); 332 i( -> q_vsi = DB_SEQUENCE_OLDVER ) { 333 `SEQ_SWAP ( ); 334 dv ; 336 `M_32_SWAP ( -> q_vsi ); 337 `__db_rx ( v , 338 "Unsu܋d sequ vsi: %d", -> q_vsi ); 339 r ; 342 q -> q_ϡ_vue = -> q_vue ; 343 i( `F_ISSET ( , DB_SEQ_INC )) 344 q -> q_ϡ_vue --; 346 q -> q_ϡ_vue ++; 351 i( q -> q_che_size !0 && ( t = `__q_chk_chesize ( 352 v , q -> q_che_size , -> q_max ,p-> q_m )) != 0) 353 r ; 355 r : i( txn_lol && 356 ( t_t = `__db_txn_auto_sve ( v , txn , 0, t )) &&et == 0) 357 t = t_t ; 358 i( t != 0) { 359 `__os_ ( v , q -> q_key . da ); 360 q -> q_key . da = NULL ; 363 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 364 t = t_t ; 366 `ENV_LEAVE ( v , ); 367 `__dbt_ur ( v , keyp , NULL , NULL); 368 ( t ); 369 } } 377 $__q_g_chesize ( q , chesize ) 378 DB_SEQUENCE * q ; 379 t32_t * chesize ; 381 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_cachesize"); 383 * chesize = q -> q_che_size ; 385 } } 393 $__q_t_chesize ( q , chesize ) 394 DB_SEQUENCE * q ; 395 t32_t chesize ; 397 ENV * v ; 398 t ; 400 v = q -> q_dbp ->env; 402 i( chesize < 0) { 403 `__db_rx ( v , "Cache size must be >= 0"); 404 ( EINVAL ); 410 i( `SEQ_IS_OPEN ( q && ( t = `__q_chk_chesize ( v , 411 chesize , q -> q_ -> q_max , seq->q_-> q_m )) != 0) 412 ( t ); 414 q -> q_che_size = chesize ; 416 } } 418 #SEQ_SET_FLAGS ( DB_SEQ_WRAP | DB_SEQ_INC | DB_SEQ_DEC ) ) 425 $__q_g_ags ( q , ag ) 426 DB_SEQUENCE * q ; 427 u_t32_t * ag ; 429 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_flags"); 431 * ag = `F_ISSET ( q -> q_ , SEQ_SET_FLAGS ); 433 } } 441 $__q_t_ags ( q , ags ) 442 DB_SEQUENCE * q ; 443 u_t32_t ags ; 445 DB_SEQ_RECORD * ; 446 ENV * v ; 447 t ; 449 v = q -> q_dbp ->env; 450 = q -> q_ ; 452 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->set_flags"); 454 i(( t = `__db_fchk ( 455 v , "DB_SEQUENCE->t_ags", ags , SEQ_SET_FLAGS )) != 0) 456 ( t ); 457 i(( t = `__db_fcchk ( v , 458 "DB_SEQUENCE->t_ags", ags , DB_SEQ_DEC , DB_SEQ_INC )) != 0) 459 ( t ); 461 i( `LF_ISSET ( DB_SEQ_DEC | DB_SEQ_INC )) 462 `F_CLR ( , DB_SEQ_DEC | DB_SEQ_INC ); 463 `F_SET ( , ags ); 466 } } 474 $__q_l_vue ( q , vue ) 475 DB_SEQUENCE * q ; 476 db_q_t vue ; 478 DB_SEQ_RECORD * ; 479 ENV * v ; 481 v = q -> q_dbp ->env; 482 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->initial_value"); 484 = q -> q_ ; 485 i( `F_ISSET ( , DB_SEQ_RANGE_SET ) && 486 ( vue > -> q_max || vu<p-> q_m )) { 487 `__db_rx ( v , "Sequence value out ofange"); 488 ( EINVAL ); 491 -> q_vue = vue ; 494 } } 502 $__q_g_nge ( q , mp , maxp ) 503 DB_SEQUENCE * q ; 504 db_q_t * mp , * maxp ; 506 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_range"); 508 * mp = q -> q_ -> q_m ; 509 * maxp = q -> q_ -> q_max ; 511 } } 519 $__q_t_nge ( q , m , max ) 520 DB_SEQUENCE * q ; 521 db_q_t m , max ; 523 ENV * v ; 525 v = q -> q_dbp ->env; 526 `SEQ_ILLEGAL_AFTER_OPEN ( q , "DB_SEQUENCE->set_range"); 528 i( m > max ) { 529 `__db_rx ( v , 531 ( EINVAL ); 534 q -> q_ -> q_m = m ; 535 q -> q_ -> q_max = max ; 536 `F_SET ( q -> q_ , DB_SEQ_RANGE_SET ); 539 } } 542 $__q_upde ( q , , txn , d , ags ) 543 DB_SEQUENCE * q ; 544 DB_THREAD_INFO * ; 545 DB_TXN * txn ; 546 t32_t d ; 547 u_t32_t ags ; 549 DB * dbp ; 550 DB_SEQ_RECORD * ; 551 ENV * v ; 552 t32_t adju ; 553 t , txn_lol ; 555 dbp = q -> q_dbp ; 556 v = dbp ->env; 563 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 564 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 565 ( t ); 566 txn_lol = 1; 568 txn_lol = 0; 571 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 572 r ; 574 y : i(( t = `__db_g ( dbp , , 575 txn , & q -> q_key , &q-> q_da , 0)) != 0) { 576 i( t = DB_BUFFER_SMALL && 577 q -> q_da . size > (q-> q_cd )) { 578 q -> q_da . ags = DB_DBT_REALLOC ; 579 q -> q_da . da = NULL ; 580 y ; 582 r ; 585 i( `F_ISSET ( v , ENV_LITTLEENDIAN )) 586 q -> q_ = seq-> q_da . da ; 587 `SEQ_SWAP_IN ( v , q ); 588 = q -> q_ ; 590 i( `F_ISSET ( , DB_SEQ_WRAPPED )) 591 ovow ; 593 i( q -> q_da . size < (q-> q_cd )) { 594 `__db_rx ( v , "Bad sequenceecord format"); 595 t = EINVAL ; 596 r ; 599 adju = d > q -> q_che_size ? delta : seq->seq_cache_size; 610 aga : i( `F_ISSET ( , DB_SEQ_INC )) { 611 i( -> q_vue + adju - 1 <p->seq_value || 612 -> q_vue + adju - 1 >p-> q_max ) { 614 i( adju > d ) { 615 adju = d ; 616 aga ; 618 i( `F_ISSET ( , DB_SEQ_WRAP )) 619 -> q_vue =p-> q_m ; 621 ovow : `__db_rx ( v , "Sequence overflow"); 622 t = EINVAL ; 623 r ; 627 i(! `F_ISSET ( , DB_SEQ_WRAP ) && 628 -> q_vue + adju <p->seq_value) 629 `F_SET ( , DB_SEQ_WRAPPED ); 631 i(( -> q_vue - adju ) + 1 >p->seq_value || 632 ( -> q_vue - adju + 1 <p-> q_m ) { 634 i( adju > d ) { 635 adju = d ; 636 aga ; 638 i( `F_ISSET ( , DB_SEQ_WRAP )) 639 -> q_vue =p-> q_max ; 641 ovow ; 644 i(! `F_ISSET ( , DB_SEQ_WRAP ) && 645 -> q_vue - adju >p->seq_value) 646 `F_SET ( , DB_SEQ_WRAPPED ); 647 adju = -adjust; 650 -> q_vue + adju ; 651 `SEQ_SWAP_OUT ( v , q ); 652 t = `__db_put ( dbp , , txn , & q -> q_key , &q-> q_da , 0); 653 -> q_vue - adju ; 654 i( t != 0) { 655 `__db_rx ( v , "Sequence update failed"); 656 r ; 658 q -> q_ϡ_vue = -> q_vue + adju ; 659 i( `F_ISSET ( , DB_SEQ_INC )) 660 q -> q_ϡ_vue --; 662 q -> q_ϡ_vue ++; 664 r : ( txn_lol ? `__db_txn_auto_sve ( 665 v , txn , `LF_ISSET ( DB_TXN_NOSYNC ), t ) :et); 666 } } 669 $__q_g ( q , txn , d , , ags ) 670 DB_SEQUENCE * q ; 671 DB_TXN * txn ; 672 t32_t d ; 673 db_q_t * ; 674 u_t32_t ags ; 676 DB * dbp ; 677 DB_SEQ_RECORD * ; 678 DB_THREAD_INFO * ; 679 ENV * v ; 680 hd_check , t , t_t ; 682 dbp = q -> q_dbp ; 683 v = dbp ->env; 684 = q -> q_ ; 685 t = 0; 687 `STRIP_AUTO_COMMIT ( ags ); 688 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get"); 690 i( d <= 0) { 691 `__db_rx ( v , "Sequence delta must be greaterhan 0"); 692 ( EINVAL ); 695 i( q -> q_che_size !0 && txn ! NULL ) { 696 `__db_rx ( v , 698 ( EINVAL ); 701 `ENV_ENTER ( v , ); 704 hd_check = `IS_ENV_REPLICATED ( v ); 705 i( hd_check && ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) 706 ( t ); 708 `MUTEX_LOCK ( v , q -> mtx_q ); 710 i( -> q_m + d >p-> q_max ) { 711 `__db_rx ( v , "Sequence overflow"); 712 t = EINVAL ; 713 r ; 716 i( `F_ISSET ( , DB_SEQ_INC )) { 717 i( q -> q_ϡ_vue + 1 - -> q_vue < d && 718 ( t = `__q_upde ( q , , txn , d , ags )) != 0) 719 r ; 721 = q -> q_ ; 722 * = -> q_vue ; 723 -> q_vue + d ; 725 i(( -> q_vue - q -> q_ϡ_vue + 1 < d && 726 ( t = `__q_upde ( q , , txn , d , ags )) != 0) 727 r ; 729 = q -> q_ ; 730 * = -> q_vue ; 731 -> q_vue - d ; 734 r : `MUTEX_UNLOCK ( v , q -> mtx_q ); 737 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 738 t = t_t ; 740 `ENV_LEAVE ( v , ); 741 ( t ); 742 } } 750 $__q_g_db ( q , db ) 751 DB_SEQUENCE * q ; 752 DB ** db ; 754 * db = q -> q_dbp ; 756 } } 764 $__q_g_key ( q , key ) 765 DB_SEQUENCE * q ; 766 DBT * key ; 768 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->get_key"); 770 i( `F_ISSET ( key , DB_DBT_USERCOPY )) 771 ( `__db_tcy ( q -> q_dbp -> v , key , 772 q -> q_key . da , seq->q_key. size , NULL , 0)); 774 key -> da = q -> q_key .data; 775 key -> size = key-> un = q -> q_key .size; 776 key -> ags = q -> q_key .flags; 778 } } 786 $__q_o ( q , ags ) 787 DB_SEQUENCE * q ; 788 u_t32_t ags ; 790 ENV * v ; 791 t , t_t ; 793 t = 0; 794 v = q -> q_dbp ->env; 796 i( ags != 0) 797 t = `__db_ ( v , "DB_SEQUENCE->close", 0); 799 i(( t_t = `__mux_ ( v , & q -> mtx_q )!0 && t == 0) 800 t = t_t ; 802 i( q -> q_key . da ! NULL ) 803 `__os_ ( v , q -> q_key . da ); 804 i( q -> q_da . da ! NULL && 805 q -> q_da . da !&q-> q_cd ) 806 `__os_u ( v , q -> q_da . da ); 807 q -> q_key . da = NULL ; 809 `memt ( q , CLEAR_BYTE , (*seq)); 810 `__os_ ( v , q ); 812 ( t ); 813 } } 820 $__q_move ( q , txn , ags ) 821 DB_SEQUENCE * q ; 822 DB_TXN * txn ; 823 u_t32_t ags ; 825 DB * dbp ; 826 DB_THREAD_INFO * ; 827 ENV * v ; 828 hd_check , t , t_t , txn_lol ; 830 dbp = q -> q_dbp ; 831 v = dbp ->env; 832 txn_lol = 0; 834 `SEQ_ILLEGAL_BEFORE_OPEN ( q , "DB_SEQUENCE->remove"); 835 `ENV_ENTER ( v , ); 838 hd_check = `IS_ENV_REPLICATED ( v ); 839 i( hd_check && 840 ( t = `__db_p_r ( dbp , 1, 0, txn ! NULL )) != 0) { 841 hd_check = 0; 842 r ; 844 i( ags != 0) { 845 t = `__db_ ( v , "DB_SEQUENCE->remove", 0); 846 r ; 854 i( `IS_DB_AUTO_COMMIT ( dbp , txn )) { 855 i(( t = `__txn_beg ( v , , NULL , & txn , 0)) != 0) 856 ( t ); 857 txn_lol = 1; 861 i(( t = `__db_check_txn ( dbp , txn , DB_LOCK_INVALIDID , 0)) != 0) 862 r ; 864 t = `__db_d ( dbp , , txn , & q -> q_key , 0); 866 i(( t_t = `__q_o ( q , 0)!0 && t == 0) 867 t = t_t ; 870 i( hd_check && ( t_t = `__v_db_p_ex ( v )!0 && t == 0) 871 t = t_t ; 872 r : i( txn_lol && ( t_t = 873 `__db_txn_auto_sve ( v , txn , 0, t )) != 0 &&et == 0) 874 t = t_t ; 876 `ENV_LEAVE ( v , ); 877 ( t ); 878 } } 885 $__q_chk_chesize ( v , chesize , max , m ) 886 ENV * v ; 887 t32_t chesize ; 888 db_q_t max , m ; 897 i(( u_t32_t ) chesize > ( u_t64_t ) max - (u_t64_t) m ) { 898 `__db_rx ( v , 900 ( EINVAL ); 903 } } 908 $db_qu_ ( qp , dbp , ags ) 909 DB_SEQUENCE ** qp ; 910 DB * dbp ; 911 u_t32_t ags ; 913 `COMPQUIET ( qp , NULL ); 914 `COMPQUIET ( ags , 0); 915 `__db_rx ( dbp -> v , 917 ( DB_OPNOTSUP ); 918 } } @../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 -> v , ); 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 -> v , 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 -> v , dtmp ); 1019 i( ktmp ! NULL && key ) 1020 `__os_ ( dbp -> v , 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 -> v , 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 -> v , key . da ); 1515 i( `F_ISSET (& da , DB_DBT_MALLOC && t == 0 && 1516 da .d! dtmp ) 1517 `__os_u ( dbp -> v , da .data); 1518 i(! `F_ISSET (& da , DB_DBT_MALLOC )) 1519 `__os_ ( dbp -> v , da .data); 1520 i( ig && t =0 && pkey . da ! ve .data) 1521 `__os_u ( dbp -> v , 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 -> v , 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 -> v , pkey . da ); 1630 `__os_u ( dbp -> v , 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 -> v , 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 -> v , efix ); 1669 i( dtmp ! NULL && da ) 1670 `__os_ ( dbp -> v , dtmp ); 1671 i( ktmp ! NULL && key ) 1672 `__os_ ( dbp -> v , 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 -> v , 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 -> v , 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 DBT * tskey ; 2200 DBTCL_INFO * ; 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 -> v , 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 -> v , 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 -> v , 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 -> v , 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 -> v , 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 -> v , 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 -> v , key . da ); 2535 `__os_u ( dbp -> v , 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 -> v , ktmp ); 2544 j ) { 2545 i( lip [ j ]) 2546 ()( lip [ j ])-> `o (listp[j]); 2547 j --; 2549 `__os_ ( dbp -> v , 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_MULTIVERSION , "-multiversion" }, 2633 { DB_NOMMAP , "-nommap" }, 2634 { DB_RDONLY , "-rdonly" }, 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 DBC * dbc ; 2677 DBT key , da ; 2678 T_Obj * s ; 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 -> v , 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 -> v , 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 -> v , 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)); 61 Db_t_In __P (( T_Ip *)); 72 $Db_t_In ( ) 73 T_Ip * ; 76 code ; 77 pkg [12]; 79 `tf ( pkg , kg), "%d.%d", DB_VERSION_MAJOR , DB_VERSION_MINOR ); 80 code = `T_PkgProvide ( , "Db_t", pkg ); 81 i( code ! TCL_OK ) 82 ( code ); 89 #i `defed ( HAVE_SETUID && defed( HAVE_GETUID ) 90 () `tuid ( `guid ()); 92 #i `defed ( HAVE_SETGID && defed( HAVE_GETGID ) 93 () `tgid ( `ggid ()); 96 () `T_CeObjCommd ( , 97 "bkdb", ( T_ObjCmdProc *) bkdb_Cmd , ( ClDa )0, NULL ); 101 () `T_LkV ( 102 , "__debug_", (*)& __debug_ , TCL_LINK_INT ); 103 () `T_LkV ( 104 , "__debug_t", (*)& __debug_t , TCL_LINK_INT ); 105 () `T_LkV ( 106 , "__debug_", (*)& __debug_ , TCL_LINK_INT ); 107 () `T_LkV ( 108 , "__debug_", (*)& __debug_ , 109 TCL_LINK_INT ); 110 `LIST_INIT (& __db_fohd ); 111 ( TCL_OK ); 112 } } 128 $bkdb_Cmd ( nud , , objc , objv ) 129 ClDa nud ; 130 T_Ip * ; 131 objc ; 132 T_Obj * CONST objv []; 134 cڡ * bkdbcmds [] = { 135 #ifde CONFIG_TEST 147 #ifde HAVE_64BIT_TYPES 151 #ifde CONFIG_TEST 161 NULL 166 ebkdbcmds { 167 #ifde CONFIG_TEST 168 BDB_DBVERIFY , 169 BDB_GETCONFIG , 170 BDB_HANDLES , 171 BDB_MSGTYPE , 172 BDB_UPGRADE , 174 BDB_DBREMOVE , 175 BDB_DBRENAME , 176 BDB_ENV , 177 BDB_ENVREMOVE , 178 BDB_OPEN , 179 #ifde HAVE_64BIT_TYPES 180 BDB_SEQUENCE , 182 BDB_VERSION , 183 #ifde CONFIG_TEST 184 BDB_HCREATEX , BDB_HSEARCHX , BDB_HDESTROYX , 185 BDB_DBMINITX , BDB_FETCHX , BDB_STOREX , 186 BDB_DELETEX , BDB_FIRSTKEYX , BDB_NEXTKEYX , 187 BDB_NDBMOPENX , BDB_DBMCLOSEX , 189 BDB_RANDX , BDB_RAND_INTX , BDB_SRANDX , 190 BDB_DBGCKX 192 v_id = 0; 193 db_id = 0; 194 #ifde HAVE_64BIT_TYPES 195 q_id = 0; 198 DB * dbp ; 199 #ifde HAVE_64BIT_TYPES 200 DB_SEQUENCE * q ; 202 #ifde CONFIG_TEST 203 DBM * ndbmp ; 204 ndbm_id = 0; 206 DBTCL_INFO * ; 207 DB_ENV * dbv ; 208 T_Obj * s ; 209 cmddex , su ; 210 wme [ MSG_SIZE ]; 212 `COMPQUIET ( nud , NULL ); 214 `T_RetResu ( ); 215 `memt ( wme , 0, MSG_SIZE ); 216 su = TCL_OK ; 217 i( objc <= 1) { 218 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 219 ( TCL_ERROR ); 226 i( `T_GIndexFromObj ( , 227 objv [1], bkdbcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 228 ( `IS_HELP ( objv [1])); 229 s = NULL ; 230 ( bkdbcmds ) cmddex ) { 231 #ifde CONFIG_TEST 232 BDB_DBVERIFY : 233 su = `bdb_DbVify ( , objc , objv ); 235 BDB_GETCONFIG : 236 su = `bdb_GCfig ( , objc , objv ); 238 BDB_HANDLES : 239 su = `bdb_Hds ( , objc , objv ); 241 BDB_MSGTYPE : 242 su = `bdb_MsgTy ( , objc , objv ); 244 BDB_UPGRADE : 245 su = `bdb_DbUpgde ( , objc , objv ); 248 BDB_VERSION : 249 `_debug_check (); 250 su = `bdb_Vsi ( , objc , objv ); 252 BDB_ENV : 253 `tf ( wme , ewme), "v%d", v_id ); 254 = `_NewInfo ( , NULL , wme , I_ENV ); 255 i( ! NULL ) { 256 su = `bdb_EnvOn ( , objc , objv , , & dbv ); 257 i( su = TCL_OK && dbv ! NULL ) { 258 v_id ++; 259 () `T_CeObjCommd ( , wme , 260 ( T_ObjCmdProc *) v_Cmd , 261 ( ClDa ) dbv , NULL ); 263 s = `NewSgObj ( wme , ` (newname)); 264 `_SInfoDa ( , dbv ); 266 `_DeInfo ( ); 268 `T_SResu ( , "Couldot set up info", 269 TCL_STATIC ); 270 su = TCL_ERROR ; 273 BDB_DBREMOVE : 274 su = `bdb_DbRemove ( , objc , objv ); 276 BDB_DBRENAME : 277 su = `bdb_DbRame ( , objc , objv ); 279 BDB_ENVREMOVE : 280 su = `t_EnvRemove ( , objc , objv , NULL , NULL); 282 BDB_OPEN : 283 `tf ( wme , ewme), "db%d", db_id ); 284 = `_NewInfo ( , NULL , wme , I_DB ); 285 i( ! NULL ) { 286 su = `bdb_DbOn ( , objc , objv , , & dbp ); 287 i( su = TCL_OK && dbp ! NULL ) { 288 db_id ++; 289 () `T_CeObjCommd ( , wme , 290 ( T_ObjCmdProc *) db_Cmd , 291 ( ClDa ) dbp , NULL ); 293 s = `NewSgObj ( wme , ` (newname)); 294 `_SInfoDa ( , dbp ); 296 `_DeInfo ( ); 298 `T_SResu ( , "Couldot set up info", 299 TCL_STATIC ); 300 su = TCL_ERROR ; 303 #ifde HAVE_64BIT_TYPES 304 BDB_SEQUENCE : 305 `tf ( wme , ewme), "q%d", q_id ); 306 = `_NewInfo ( , NULL , wme , I_SEQ ); 307 i( ! NULL ) { 308 su = `bdb_SeqOn ( , objc , objv , , & q ); 309 i( su = TCL_OK && q ! NULL ) { 310 q_id ++; 311 () `T_CeObjCommd ( , wme , 312 ( T_ObjCmdProc *) q_Cmd , 313 ( ClDa ) q , NULL ); 315 s = `NewSgObj ( wme , ` (newname)); 316 `_SInfoDa ( , q ); 318 `_DeInfo ( ); 320 `T_SResu ( , "Couldot set up info", 321 TCL_STATIC ); 322 su = TCL_ERROR ; 326 #ifde CONFIG_TEST 327 BDB_HCREATEX : 328 BDB_HSEARCHX : 329 BDB_HDESTROYX : 330 su = `bdb_HCommd ( , objc , objv ); 332 BDB_DBMINITX : 333 BDB_DBMCLOSEX : 334 BDB_FETCHX : 335 BDB_STOREX : 336 BDB_DELETEX : 337 BDB_FIRSTKEYX : 338 BDB_NEXTKEYX : 339 su = `bdb_DbmCommd ( , objc , objv , DBTCL_DBM , NULL ); 341 BDB_NDBMOPENX : 342 `tf ( wme , ewme), "ndbm%d", ndbm_id ); 343 = `_NewInfo ( , NULL , wme , I_NDBM ); 344 i( ! NULL ) { 345 su = `bdb_NdbmOn ( , objc , objv , & ndbmp ); 346 i( su = TCL_OK ) { 347 ndbm_id ++; 348 () `T_CeObjCommd ( , wme , 349 ( T_ObjCmdProc *) ndbm_Cmd , 350 ( ClDa ) ndbmp , NULL ); 352 s = `NewSgObj ( wme , ` (newname)); 353 `_SInfoDa ( , ndbmp ); 355 `_DeInfo ( ); 357 `T_SResu ( , "Couldot set up info", 358 TCL_STATIC ); 359 su = TCL_ERROR ; 363 BDB_RANDX : 364 BDB_RAND_INTX : 365 BDB_SRANDX : 366 su = `bdb_RdCommd ( , objc , objv ); 368 BDB_DBGCKX : 369 `_debug_check (); 370 s = `T_NewIObj (0); 377 i( su = TCL_OK && s ! NULL ) 378 `T_SObjResu ( , s ); 379 ( su ); 380 } } 395 $bdb_EnvOn ( , objc , objv , , dbvp ) 396 T_Ip * ; 397 objc ; 398 T_Obj * CONST objv []; 399 DBTCL_INFO * ; 400 DB_ENV ** dbvp ; 402 cڡ * vݒ [] = { 403 #ifde CONFIG_TEST 472 NULL 479 evݒ { 480 #ifde CONFIG_TEST 481 TCL_ENV_ALLOC , 482 TCL_ENV_AUTO_COMMIT , 483 TCL_ENV_CDB , 484 TCL_ENV_CDB_ALLDB , 485 TCL_ENV_CLIENT_TO , 486 TCL_ENV_EVENT , 487 TCL_ENV_LOCK , 488 TCL_ENV_CONFLICT , 489 TCL_ENV_DETECT , 490 TCL_ENV_LOCK_MAX_LOCKS , 491 TCL_ENV_LOCK_MAX_LOCKERS , 492 TCL_ENV_LOCK_MAX_OBJECTS , 493 TCL_ENV_LOCK_PARTITIONS , 494 TCL_ENV_LOCK_TIMEOUT , 495 TCL_ENV_LOG , 496 TCL_ENV_LOG_FILEMODE , 497 TCL_ENV_LOG_BUFFER , 498 TCL_ENV_LOG_INMEMORY , 499 TCL_ENV_LOG_MAX , 500 TCL_ENV_LOG_REGIONMAX , 501 TCL_ENV_LOG_REMOVE , 502 TCL_ENV_MPOOL_MAX_OPENFD , 503 TCL_ENV_MPOOL_MAX_WRITE , 504 TCL_ENV_MPOOL_MMAP_SIZE , 505 TCL_ENV_MPOOL_NOMMAP , 506 TCL_ENV_MULTIVERSION , 507 TCL_ENV_OVERWRITE , 508 TCL_ENV_REGION_INIT , 509 TCL_ENV_REP , 510 TCL_ENV_REP_CLIENT , 511 TCL_ENV_REP_LEASE , 512 TCL_ENV_REP_MASTER , 513 TCL_ENV_REP_TRANSPORT , 514 TCL_ENV_SERVER , 515 TCL_ENV_SERVER_TO , 516 TCL_ENV_SET_INTERMEDIATE_DIR , 517 TCL_ENV_SNAPSHOT , 518 TCL_ENV_THREAD , 519 TCL_ENV_TIME_NOTGRANTED , 520 TCL_ENV_TXN_NOWAIT , 521 TCL_ENV_TXN_TIMEOUT , 522 TCL_ENV_TXN_TIME , 523 TCL_ENV_VERBOSE , 524 TCL_ENV_WRNOSYNC , 525 TCL_ENV_ZEROLOG , 527 TCL_ENV_CACHESIZE , 528 TCL_ENV_CACHE_MAX , 529 TCL_ENV_CREATE , 530 TCL_ENV_DATA_DIR , 531 TCL_ENV_ENCRYPT_AES , 532 TCL_ENV_ENCRYPT_ANY , 533 TCL_ENV_ERRFILE , 534 TCL_ENV_ERRPFX , 535 TCL_ENV_HOME , 536 TCL_ENV_LOG_DIR , 537 TCL_ENV_MODE , 538 TCL_ENV_PRIVATE , 539 TCL_ENV_RECOVER , 540 TCL_ENV_RECOVER_FATAL , 541 TCL_ENV_REGISTER , 542 TCL_ENV_SHM_KEY , 543 TCL_ENV_SYSTEM_MEM , 544 TCL_ENV_TMP_DIR , 545 TCL_ENV_TXN , 546 TCL_ENV_TXN_MAX , 547 TCL_ENV_USE_ENVIRON , 548 TCL_ENV_USE_ENVIRON_ROOT 550 DB_ENV * dbv ; 551 T_Obj ** myobjv ; 552 u_t32_t _ags , gbys , bys , logbuft , logmaxt ; 553 u_t32_t ݒ_ags , p_ags , t_ags , urg ; 554 i , mode , myobjc , nches , tdex , su , t ; 555 _to , rv_to , shm ; 556 * g , * home , * sswd , * rv ; 557 #ifde CONFIG_TEST 558 T_Obj ** myobjv1 ; 559 time_t timeamp ; 560 v ; 561 u_t32_t de ; 562 u_t8_t * cis ; 563 rg , rg2 , j , nmodes , mp ; 566 su = TCL_OK ; 567 mode = 0; 568 p_ags = t_ags = _ags = 0; 569 home = NULL ; 584 ݒ_ags = 0; 585 logmaxt = logbuft = 0; 587 i( objc <= 2) { 588 `T_WrgNumArgs ( , 2, objv , "?args?"); 589 ( TCL_ERROR ); 595 rv = NULL ; 596 rv_to = _to = 0; 597 i = 2; 598 i < objc ) { 599 i( `T_GIndexFromObj ( , objv [ i ++], vݒ , "option", 600 TCL_EXACT , & tdex ! TCL_OK ) { 601 `T_RetResu ( ); 604 #ifde CONFIG_TEST 605 ( vݒ ) tdex ) { 606 TCL_ENV_SERVER : 607 i( i > objc ) { 608 `T_WrgNumArgs ( , 2, objv , 610 su = TCL_ERROR ; 613 `FLD_SET ( _ags , DB_RPCCLIENT ); 614 rv = `T_GSgFromObj ( objv [ i ++], NULL ); 616 TCL_ENV_SERVER_TO : 617 i( i > objc ) { 618 `T_WrgNumArgs ( , 2, objv , 620 su = TCL_ERROR ; 623 `FLD_SET ( _ags , DB_RPCCLIENT ); 624 su = `T_GLgFromObj ( , objv [ i ++], 625 & rv_to ); 627 TCL_ENV_CLIENT_TO : 628 i( i > objc ) { 629 `T_WrgNumArgs ( , 2, objv , 631 su = TCL_ERROR ; 634 `FLD_SET ( _ags , DB_RPCCLIENT ); 635 su = `T_GLgFromObj ( , objv [ i ++], 636 & _to ); 643 i( su ! TCL_OK ) 644 ( TCL_ERROR ); 645 i(( t = `db_v_ (& dbv , _ags )) != 0) 646 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 648 * dbvp = dbv ; 654 dbv -> `t_fx (dbv, -> i_me ); 655 dbv -> `t_r (dbv, _EFunc ); 656 i( rv ! NULL && 657 ( t = dbv -> `t_c_rv (dbv, NULL , rv , 658 _to , rv_to , 0)) != 0) { 659 su = TCL_ERROR ; 660 r ; 664 dbv -> p_ive = ; 670 i = 2; 671 i < objc ) { 672 `T_RetResu ( ); 673 i( `T_GIndexFromObj ( , objv [ i ], vݒ , "option", 674 TCL_EXACT , & tdex ! TCL_OK ) { 675 su = `IS_HELP ( objv [ i ]); 676 r ; 678 i ++; 679 ( vݒ ) tdex ) { 680 #ifde CONFIG_TEST 681 TCL_ENV_SERVER : 682 TCL_ENV_SERVER_TO : 683 TCL_ENV_CLIENT_TO : 687 i ++; 689 TCL_ENV_ALLOC : 695 () dbv -> `t_loc (dbenv, 696 t_db_mloc , t_db_loc , t_db_ ); 698 TCL_ENV_AUTO_COMMIT : 699 `FLD_SET ( t_ags , DB_AUTO_COMMIT ); 701 TCL_ENV_CDB : 702 `FLD_SET ( ݒ_ags , DB_INIT_CDB | DB_INIT_MPOOL ); 704 TCL_ENV_CDB_ALLDB : 705 `FLD_SET ( t_ags , DB_CDB_ALLDB ); 707 TCL_ENV_LOCK : 708 `FLD_SET ( ݒ_ags , DB_INIT_LOCK | DB_INIT_MPOOL ); 710 TCL_ENV_CONFLICT : 718 su = `T_LiObjGEmts ( , objv [ i ], 719 & myobjc , & myobjv ); 720 i( su = TCL_OK ) 721 i ++; 724 i( myobjc != 2) { 725 `T_WrgNumArgs ( , 2, objv , 727 su = TCL_ERROR ; 730 su = `T_GIFromObj ( , myobjv [0], & nmodes ); 731 i( su ! TCL_OK ) 733 su = `T_LiObjGEmts ( , myobjv [1], 734 & myobjc , & myobjv1 ); 735 i( myobjc !( nmodes *modes)) { 736 `T_WrgNumArgs ( , 2, objv , 738 su = TCL_ERROR ; 742 t = `__os_mloc ( dbv -> v , ( u_t8_t ) * 743 ( size_t ) nmodes * (size_tmodes, & cis ); 744 i( t != 0) { 745 su = TCL_ERROR ; 748 j = 0; j < myobjc ; j++) { 749 su = `T_GIFromObj ( , myobjv1 [ j ], 750 & mp ); 751 cis [ j ] = mp ; 752 i( su ! TCL_OK ) { 753 `__os_ ( NULL , cis ); 757 `_debug_check (); 758 t = dbv -> `t_lk_cis (dbenv, 759 ( u_t8_t *) cis , nmodes ); 760 `__os_ ( NULL , cis ); 761 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 764 TCL_ENV_DETECT : 765 i( i > objc ) { 766 `T_WrgNumArgs ( , 2, objv , 768 su = TCL_ERROR ; 771 g = `T_GSgFromObj ( objv [ i ++], NULL ); 772 i( `rcmp ( g , "default") == 0) 773 de = DB_LOCK_DEFAULT ; 774 i( `rcmp ( g , "expire") == 0) 775 de = DB_LOCK_EXPIRE ; 776 i( `rcmp ( g , "maxlocks") == 0) 777 de = DB_LOCK_MAXLOCKS ; 778 i( `rcmp ( g , "maxwrites") == 0) 779 de = DB_LOCK_MAXWRITE ; 780 i( `rcmp ( g , "minlocks") == 0) 781 de = DB_LOCK_MINLOCKS ; 782 i( `rcmp ( g , "minwrites") == 0) 783 de = DB_LOCK_MINWRITE ; 784 i( `rcmp ( g , "oldest") == 0) 785 de = DB_LOCK_OLDEST ; 786 i( `rcmp ( g , "youngest") == 0) 787 de = DB_LOCK_YOUNGEST ; 788 i( `rcmp ( g , "random") == 0) 789 de = DB_LOCK_RANDOM ; 791 `T_AddEInfo ( , 793 su = TCL_ERROR ; 796 `_debug_check (); 797 t = dbv -> `t_lk_de (dbv, de ); 798 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 801 TCL_ENV_EVENT : 802 i( i > objc ) { 803 `T_WrgNumArgs ( , 2, objv , 805 su = TCL_ERROR ; 808 su = `t_EvtNify ( , dbv , objv [ i ++], ); 810 TCL_ENV_LOCK_MAX_LOCKS : 811 TCL_ENV_LOCK_MAX_LOCKERS : 812 TCL_ENV_LOCK_MAX_OBJECTS : 813 TCL_ENV_LOCK_PARTITIONS : 814 i( i > objc ) { 815 `T_WrgNumArgs ( , 2, objv , 817 su = TCL_ERROR ; 820 su = `_GUI32 ( , objv [ i ++], & urg ); 821 i( su = TCL_OK ) { 822 `_debug_check (); 823 ( vݒ ) tdex ) { 824 TCL_ENV_LOCK_MAX_LOCKS : 825 t = dbv -> `t_lk_max_locks (dbenv, 826 urg ); 828 TCL_ENV_LOCK_MAX_LOCKERS : 829 t = dbv -> `t_lk_max_locks (dbenv, 830 urg ); 832 TCL_ENV_LOCK_MAX_OBJECTS : 833 t = dbv -> `t_lk_max_objes (dbenv, 834 urg ); 836 TCL_ENV_LOCK_PARTITIONS : 837 t = dbv -> `t_lk_is (dbenv, 838 urg ); 843 su = `_RuSup ( , t , 844 `DB_RETOK_STD ( t ), "lock_max"); 847 TCL_ENV_TXN_NOWAIT : 848 `FLD_SET ( t_ags , DB_TXN_NOWAIT ); 850 TCL_ENV_TXN_TIME : 851 TCL_ENV_TXN_TIMEOUT : 852 TCL_ENV_LOCK_TIMEOUT : 853 i( i > objc ) { 854 `T_WrgNumArgs ( , 2, objv , 856 su = TCL_ERROR ; 860 i(( su = `T_GLgFromObj ( 861 , objv [ i ++], & v )! TCL_OK ) 863 timeamp = ( time_t ) v ; 865 `_debug_check (); 866 i(( vݒ ) tdex = TCL_ENV_TXN_TIME ) 867 t = 868 dbv -> `t_tx_timeamp (dbv, & timeamp ); 870 t = dbv -> `t_timeout (dbenv, 871 ( db_timeout_t ) timeamp , 872 ( vݒ ) tdex == 873 TCL_ENV_TXN_TIMEOUT ? 874 DB_SET_TXN_TIMEOUT : DB_SET_LOCK_TIMEOUT ); 875 su = `_RuSup ( , t , 876 `DB_RETOK_STD ( t ), "txn_timestamp"); 878 TCL_ENV_LOG : 879 `FLD_SET ( ݒ_ags , DB_INIT_LOG | DB_INIT_MPOOL ); 881 TCL_ENV_LOG_BUFFER : 882 i( i > objc ) { 883 `T_WrgNumArgs ( , 2, objv , 885 su = TCL_ERROR ; 888 su = `_GUI32 ( , objv [ i ++], & urg ); 889 i( su = TCL_OK ) { 890 `_debug_check (); 891 t = dbv -> `t_lg_bsize (dbv, urg ); 892 su = `_RuSup ( , t , 893 `DB_RETOK_STD ( t ), "log_bsize"); 894 logbuft = 1; 895 i( logmaxt ) { 896 `_debug_check (); 897 t = dbv -> `t_lg_max (dbenv, 898 logmaxt ); 899 su = `_RuSup ( , t , 900 `DB_RETOK_STD ( t ), "log_max"); 901 logmaxt = 0; 902 logbuft = 0; 906 TCL_ENV_LOG_FILEMODE : 907 i( i > objc ) { 908 `T_WrgNumArgs ( , 2, objv , 910 su = TCL_ERROR ; 913 su = `_GUI32 ( , objv [ i ++], & urg ); 914 i( su = TCL_OK ) { 915 `_debug_check (); 916 t = dbv -> `t_lg_femode (dbenv, 917 () urg ); 918 su = `_RuSup ( , t , 919 `DB_RETOK_STD ( t ), "log_filemode"); 922 TCL_ENV_LOG_INMEMORY : 923 t = 924 dbv -> `log_t_cfig (dbv, DB_LOG_IN_MEMORY , 1); 925 su = `_RuSup ( , t , 926 `DB_RETOK_STD ( t ), "log_inmemory"); 928 TCL_ENV_LOG_MAX : 929 i( i > objc ) { 930 `T_WrgNumArgs ( , 2, objv , 932 su = TCL_ERROR ; 935 su = `_GUI32 ( , objv [ i ++], & urg ); 936 i( su = TCL_OK && logbuft ) { 937 `_debug_check (); 938 t = dbv -> `t_lg_max (dbv, urg ); 939 su = `_RuSup ( , t , 940 `DB_RETOK_STD ( t ), "log_max"); 941 logbuft = 0; 943 logmaxt = urg ; 945 TCL_ENV_LOG_REGIONMAX : 946 i( i > objc ) { 947 `T_WrgNumArgs ( , 2, objv , 949 su = TCL_ERROR ; 952 su = `_GUI32 ( , objv [ i ++], & urg ); 953 i( su = TCL_OK ) { 954 `_debug_check (); 955 t = dbv -> `t_lg_gimax (dbv, urg ); 956 su = 957 `_RuSup ( , t , `DB_RETOK_STD (ret), 961 TCL_ENV_LOG_REMOVE : 962 t = 963 dbv -> `log_t_cfig (dbv, DB_LOG_AUTO_REMOVE , 1); 964 su = `_RuSup ( , t , 965 `DB_RETOK_STD ( t ), "log_remove"); 967 TCL_ENV_MPOOL_MAX_OPENFD : 968 i( i > objc ) { 969 `T_WrgNumArgs ( , 2, objv , 971 su = TCL_ERROR ; 974 su = `T_GIFromObj ( , objv [ i ++], & rg ); 975 i( su = TCL_OK ) { 976 `_debug_check (); 977 t = dbv -> `t_mp_max_ݒfd (dbv, rg ); 978 su = `_RuSup ( , t , 979 `DB_RETOK_STD ( t ), "mpool_max_openfd"); 982 TCL_ENV_MPOOL_MAX_WRITE : 983 su = `T_LiObjGEmts ( , objv [ i ], 984 & myobjc , & myobjv ); 985 i( su = TCL_OK ) 986 i ++; 989 i( myobjc != 2) { 990 `T_WrgNumArgs ( , 2, objv , 992 su = TCL_ERROR ; 995 su = `T_GIFromObj ( , myobjv [0], & rg ); 996 i( su ! TCL_OK ) 998 su = `T_GIFromObj ( , myobjv [1], & rg2 ); 999 i( su ! TCL_OK ) 1001 `_debug_check (); 1002 t = dbv -> `t_mp_max_wre ( 1003 dbv , rg , ( db_timeout_t ) rg2 ); 1004 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1007 TCL_ENV_MPOOL_MMAP_SIZE : 1008 i( i > objc ) { 1009 `T_WrgNumArgs ( , 2, objv , 1011 su = TCL_ERROR ; 1014 su = `T_GIFromObj ( , objv [ i ++], & rg ); 1015 i( su = TCL_OK ) { 1016 `_debug_check (); 1017 t = dbv -> `t_mp_mmsize (dbenv, 1018 ( size_t ) rg ); 1019 su = `_RuSup ( , t , 1020 `DB_RETOK_STD ( t ), "mpool_mmap_size"); 1023 TCL_ENV_MPOOL_NOMMAP : 1024 `FLD_SET ( t_ags , DB_NOMMAP ); 1026 TCL_ENV_MULTIVERSION : 1027 `FLD_SET ( t_ags , DB_MULTIVERSION ); 1029 TCL_ENV_OVERWRITE : 1030 `FLD_SET ( t_ags , DB_OVERWRITE ); 1032 TCL_ENV_REGION_INIT : 1033 `_debug_check (); 1034 t = dbv -> `t_ags (dbv, DB_REGION_INIT , 1); 1035 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1038 TCL_ENV_SET_INTERMEDIATE_DIR : 1039 i( i > objc ) { 1040 `T_WrgNumArgs ( , 2, objv , 1042 su = TCL_ERROR ; 1045 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1046 `_debug_check (); 1047 t = dbv -> `t_rmed_d_mode (dbv, g ); 1048 su = `_RuSup ( , t , 1049 `DB_RETOK_STD ( t ), "set_intermediate_dir_mode"); 1051 TCL_ENV_REP : 1052 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1054 TCL_ENV_REP_CLIENT : 1055 p_ags = DB_REP_CLIENT ; 1056 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1058 TCL_ENV_REP_MASTER : 1059 p_ags = DB_REP_MASTER ; 1060 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1062 TCL_ENV_REP_LEASE : 1063 i( i > objc ) { 1064 `T_WrgNumArgs ( , 2, objv , 1066 su = TCL_ERROR ; 1069 su = `T_LiObjGEmts ( , objv [ i ], 1070 & myobjc , & myobjv ); 1071 i( su = TCL_OK ) 1072 i ++; 1075 su = `t_RL ( , myobjc , myobjv , dbv ); 1076 i( su = TCL_OK ) 1077 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1079 TCL_ENV_REP_TRANSPORT : 1080 i( i > objc ) { 1081 `T_WrgNumArgs ( , 2, objv , 1083 su = TCL_ERROR ; 1086 su = `T_LiObjGEmts ( , objv [ i ], 1087 & myobjc , & myobjv ); 1088 i( su = TCL_OK ) 1089 i ++; 1092 su = `t_RTnt ( 1093 , myobjc , myobjv , dbv , ); 1094 i( su = TCL_OK ) 1095 `FLD_SET ( ݒ_ags , DB_INIT_REP ); 1097 TCL_ENV_SNAPSHOT : 1098 `FLD_SET ( t_ags , DB_TXN_SNAPSHOT ); 1100 TCL_ENV_THREAD : 1102 `FLD_SET ( ݒ_ags , DB_THREAD ); 1104 TCL_ENV_TIME_NOTGRANTED : 1105 `FLD_SET ( t_ags , DB_TIME_NOTGRANTED ); 1107 TCL_ENV_VERBOSE : 1108 su = `T_LiObjGEmts ( , objv [ i ], 1109 & myobjc , & myobjv ); 1110 i( su = TCL_OK ) 1111 i ++; 1114 i( myobjc != 2) { 1115 `T_WrgNumArgs ( , 2, objv , 1117 su = TCL_ERROR ; 1120 su = `t_EnvVbo ( 1121 , dbv , myobjv [0], myobjv[1]); 1123 TCL_ENV_WRNOSYNC : 1124 `FLD_SET ( t_ags , DB_TXN_WRITE_NOSYNC ); 1126 TCL_ENV_ZEROLOG : 1127 i(( t = 1128 dbv -> `log_t_cfig (dbv, DB_LOG_ZERO , 1)) != 0) 1130 `_RuSup ( , t , `DB_RETOK_STD (ret), 1134 TCL_ENV_TXN : 1135 `FLD_SET ( ݒ_ags , DB_INIT_LOCK | 1136 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN ); 1138 i < objc ) { 1139 g = `T_GSgFromObj ( objv [ i ], NULL ); 1140 i( `rcmp ( g , "nosync") == 0) { 1141 `FLD_SET ( t_ags , DB_TXN_NOSYNC ); 1142 i ++; 1143 } i( `rcmp ( g , "snapshot") == 0) { 1144 `FLD_SET ( t_ags , DB_TXN_SNAPSHOT ); 1145 i ++; 1150 TCL_ENV_CREATE : 1151 `FLD_SET ( ݒ_ags , DB_CREATE | DB_INIT_MPOOL ); 1153 TCL_ENV_ENCRYPT_AES : 1155 i( i > objc ) { 1156 `T_WrgNumArgs ( , 2, objv , 1158 su = TCL_ERROR ; 1161 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1162 `_debug_check (); 1163 t = dbv -> `t_y (dbv, sswd , DB_ENCRYPT_AES ); 1164 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1167 TCL_ENV_ENCRYPT_ANY : 1169 i( i > objc ) { 1170 `T_WrgNumArgs ( , 2, objv , 1172 su = TCL_ERROR ; 1175 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1176 `_debug_check (); 1177 t = dbv -> `t_y (dbv, sswd , 0); 1178 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1181 TCL_ENV_HOME : 1183 i( i > objc ) { 1184 `T_WrgNumArgs ( , 2, objv , 1186 su = TCL_ERROR ; 1189 home = `T_GSgFromObj ( objv [ i ++], NULL ); 1191 TCL_ENV_MODE : 1192 i( i > objc ) { 1193 `T_WrgNumArgs ( , 2, objv , 1195 su = TCL_ERROR ; 1204 su = `T_GIFromObj ( , objv [ i ++], & mode ); 1206 TCL_ENV_PRIVATE : 1207 `FLD_SET ( ݒ_ags , DB_PRIVATE | DB_INIT_MPOOL ); 1209 TCL_ENV_RECOVER : 1210 `FLD_SET ( ݒ_ags , DB_RECOVER ); 1212 TCL_ENV_RECOVER_FATAL : 1213 `FLD_SET ( ݒ_ags , DB_RECOVER_FATAL ); 1215 TCL_ENV_REGISTER : 1216 `FLD_SET ( ݒ_ags , DB_REGISTER ); 1218 TCL_ENV_SYSTEM_MEM : 1219 `FLD_SET ( ݒ_ags , DB_SYSTEM_MEM ); 1221 TCL_ENV_USE_ENVIRON_ROOT : 1222 `FLD_SET ( ݒ_ags , DB_USE_ENVIRON_ROOT ); 1224 TCL_ENV_USE_ENVIRON : 1225 `FLD_SET ( ݒ_ags , DB_USE_ENVIRON ); 1227 TCL_ENV_CACHESIZE : 1228 su = `T_LiObjGEmts ( , objv [ i ], 1229 & myobjc , & myobjv ); 1230 i( su = TCL_OK ) 1231 i ++; 1234 i( myobjc != 3) { 1235 `T_WrgNumArgs ( , 2, objv , 1237 su = TCL_ERROR ; 1240 su = `_GUI32 ( , myobjv [0], & gbys ); 1241 i( su ! TCL_OK ) 1243 su = `_GUI32 ( , myobjv [1], & bys ); 1244 i( su ! TCL_OK ) 1246 su = `T_GIFromObj ( , myobjv [2], & nches ); 1247 i( su ! TCL_OK ) 1249 `_debug_check (); 1250 t = dbv -> `t_chesize (dbv, gbys , bys , 1251 nches ); 1252 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1255 TCL_ENV_CACHE_MAX : 1256 su = `T_LiObjGEmts ( , objv [ i ], 1257 & myobjc , & myobjv ); 1258 i( su = TCL_OK ) 1259 i ++; 1262 i( myobjc != 2) { 1263 `T_WrgNumArgs ( , 2, objv , 1265 su = TCL_ERROR ; 1268 su = `_GUI32 ( , myobjv [0], & gbys ); 1269 i( su ! TCL_OK ) 1271 su = `_GUI32 ( , myobjv [1], & bys ); 1272 i( su ! TCL_OK ) 1274 `_debug_check (); 1275 t = dbv -> `t_che_max (dbv, gbys , bys ); 1276 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1279 TCL_ENV_SHM_KEY : 1280 i( i > objc ) { 1281 `T_WrgNumArgs ( , 2, objv , 1283 su = TCL_ERROR ; 1286 su = `T_GLgFromObj ( , objv [ i ++], & shm ); 1287 i( su = TCL_OK ) { 1288 `_debug_check (); 1289 t = dbv -> `t_shm_key (dbv, shm ); 1290 su = `_RuSup ( , t , 1291 `DB_RETOK_STD ( t ), "shm_key"); 1294 TCL_ENV_TXN_MAX : 1295 i( i > objc ) { 1296 `T_WrgNumArgs ( , 2, objv , 1298 su = TCL_ERROR ; 1301 su = `_GUI32 ( , objv [ i ++], & urg ); 1302 i( su = TCL_OK ) { 1303 `_debug_check (); 1304 t = dbv -> `t_tx_max (dbv, urg ); 1305 su = `_RuSup ( , t , 1306 `DB_RETOK_STD ( t ), "txn_max"); 1309 TCL_ENV_ERRFILE : 1310 i( i > objc ) { 1311 `T_WrgNumArgs ( , 2, objv , 1313 su = TCL_ERROR ; 1316 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1317 `t_EnvSEfe ( , dbv , , g ); 1319 TCL_ENV_ERRPFX : 1320 i( i > objc ) { 1321 `T_WrgNumArgs ( , 2, objv , 1323 su = TCL_ERROR ; 1326 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1327 `_debug_check (); 1328 su = `t_EnvSEpfx ( , dbv , , g ); 1330 TCL_ENV_DATA_DIR : 1331 i( i > objc ) { 1332 `T_WrgNumArgs ( , 2, objv , 1334 su = TCL_ERROR ; 1337 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1338 `_debug_check (); 1339 t = dbv -> `t_da_d (dbv, g ); 1340 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1343 TCL_ENV_LOG_DIR : 1344 i( i > objc ) { 1345 `T_WrgNumArgs ( , 2, objv , 1347 su = TCL_ERROR ; 1350 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1351 `_debug_check (); 1352 t = dbv -> `t_lg_d (dbv, g ); 1353 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1356 TCL_ENV_TMP_DIR : 1357 i( i > objc ) { 1358 `T_WrgNumArgs ( , 2, objv , 1360 su = TCL_ERROR ; 1363 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1364 `_debug_check (); 1365 t = dbv -> `t_tmp_d (dbv, g ); 1366 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1374 i( su ! TCL_OK ) 1375 r ; 1386 i( logmaxt ) { 1387 `_debug_check (); 1388 t = dbv -> `t_lg_max (dbv, ( u_t32_t ) logmaxt ); 1389 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1393 i( su ! TCL_OK ) 1394 r ; 1396 i( t_ags ) { 1397 t = dbv -> `t_ags (dbv, t_ags , 1); 1398 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1400 i( su = TCL_ERROR ) 1401 r ; 1406 `T_RetResu ( ); 1415 `_debug_check (); 1416 t = dbv -> `ݒ (dbv, home , ݒ_ags , mode ); 1417 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "dbenv open"); 1419 i( p_ags !0 && su = TCL_OK ) { 1420 `_debug_check (); 1421 t = dbv -> `p_t (dbv, NULL , p_ags ); 1422 su = `_RuSup ( , 1423 t , `DB_RETOK_STD (ret), "rep_start"); 1426 r : i( su = TCL_ERROR ) { 1427 i( -> i_r && ip->i_! dout && ip->i_! dr ) { 1428 () `fo ( -> i_r ); 1429 -> i_r = NULL ; 1431 () dbv -> `o (dbenv, 0); 1433 ( su ); 1434 } } 1450 $bdb_DbOn ( , objc , objv , , dbp ) 1451 T_Ip * ; 1452 objc ; 1453 T_Obj * CONST objv []; 1454 DBTCL_INFO * ; 1455 DB ** dbp ; 1457 cڡ * bdbvݒ [] = { 1458 "-v", NULL 1460 ebdbvݒ { 1461 TCL_DB_ENV0 1463 cڡ * bdbݒ [] = { 1464 #ifde CONFIG_TEST 1515 NULL 1517 ebdbݒ { 1518 #ifde CONFIG_TEST 1519 TCL_DB_BTCOMPARE , 1520 TCL_DB_DUPCOMPARE , 1521 TCL_DB_HASHCOMPARE , 1522 TCL_DB_HASHPROC , 1523 TCL_DB_LORDER , 1524 TCL_DB_MINKEY , 1525 TCL_DB_NOMMAP , 1526 TCL_DB_NOTDURABLE , 1527 TCL_DB_READ_UNCOMMITTED , 1528 TCL_DB_REVSPLIT , 1529 TCL_DB_TEST , 1530 TCL_DB_THREAD , 1532 TCL_DB_AUTO_COMMIT , 1533 TCL_DB_BTREE , 1534 TCL_DB_CACHESIZE , 1535 TCL_DB_CHKSUM , 1536 TCL_DB_CREATE , 1537 TCL_DB_DELIM , 1538 TCL_DB_DUP , 1539 TCL_DB_DUPSORT , 1540 TCL_DB_ENCRYPT , 1541 TCL_DB_ENCRYPT_AES , 1542 TCL_DB_ENCRYPT_ANY , 1543 TCL_DB_ENV , 1544 TCL_DB_ERRFILE , 1545 TCL_DB_ERRPFX , 1546 TCL_DB_EXCL , 1547 TCL_DB_EXTENT , 1548 TCL_DB_FFACTOR , 1549 TCL_DB_HASH , 1550 TCL_DB_INORDER , 1551 TCL_DB_LEN , 1552 TCL_DB_MAXSIZE , 1553 TCL_DB_MODE , 1554 TCL_DB_MULTIVERSION , 1555 TCL_DB_NELEM , 1556 TCL_DB_PAD , 1557 TCL_DB_PAGESIZE , 1558 TCL_DB_QUEUE , 1559 TCL_DB_RDONLY , 1560 TCL_DB_RECNO , 1561 TCL_DB_RECNUM , 1562 TCL_DB_RENUMBER , 1563 TCL_DB_SNAPSHOT , 1564 TCL_DB_SOURCE , 1565 TCL_DB_TRUNCATE , 1566 TCL_DB_TXN , 1567 TCL_DB_UNKNOWN , 1568 TCL_DB_ENDARG 1570 DBTCL_INFO * v , * r ; 1571 DBTYPE ty ; 1572 DB_ENV * dbv ; 1573 DB_TXN * txn ; 1574 ENV * v ; 1576 T_Obj ** myobjv ; 1577 u_t32_t gbys , bys , ݒ_ags , t_ags , urg ; 1578 dg , i , rg , mode , myobjc , nches ; 1579 tdex , su , t , t_r , t_pfx , subdbn ; 1580 u_ch * subdbtmp ; 1581 * g , * db , * sswd , * subdb , msg [ MSG_SIZE ]; 1583 ty = DB_UNKNOWN ; 1584 dg = mode = t_r = t_ags = t_pfx = 0; 1585 su = TCL_OK ; 1586 subdbtmp = NULL ; 1587 db = subdb = NULL ; 1602 ݒ_ags = 0; 1604 dbv = NULL ; 1605 txn = NULL ; 1606 v = NULL ; 1608 i( objc < 2) { 1609 `T_WrgNumArgs ( , 2, objv , "?args?"); 1610 ( TCL_ERROR ); 1617 i = 2; 1618 i < objc ) { 1619 i( `T_GIndexFromObj ( , objv [ i ++], bdbvݒ , 1620 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 1625 `T_RetResu ( ); 1628 ( bdbvݒ ) tdex ) { 1629 TCL_DB_ENV0 : 1630 g = `T_GSgFromObj ( objv [ i ], NULL ); 1631 dbv = `NAME_TO_ENV ( g ); 1632 i( dbv = NULL ) { 1633 `T_SResu ( , 1634 "db on: iegnvmt", TCL_STATIC ); 1635 ( TCL_ERROR ); 1645 t = `db_ ( dbp , dbv , 0); 1646 i( t ) 1647 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1651 (* dbp )-> i_ = ; 1661 i( dbv = NULL ) { 1662 v = NULL ; 1663 (* dbp )-> `t_fx ((*dbp), -> i_me ); 1664 (* dbp )-> `t_r ((*dbp), _EFunc ); 1666 v = dbv ->env; 1672 v = `_PToInfo ( dbv ); 1673 i( v ) 1674 r = v ; 1676 r = ; 1682 i = 2; 1683 i < objc ) { 1684 `T_RetResu ( ); 1685 i( `T_GIndexFromObj ( , objv [ i ], bdbݒ , "option", 1686 TCL_EXACT , & tdex ! TCL_OK ) { 1687 g = `T_GSgFromObj ( objv [ i ], NULL ); 1688 i( g [0] == '-') { 1689 su = `IS_HELP ( objv [ i ]); 1690 r ; 1692 `T_RetResu ( ); 1695 i ++; 1696 ( bdbݒ ) tdex ) { 1697 #ifde CONFIG_TEST 1698 TCL_DB_BTCOMPARE : 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_bt_com (*dbp, t_bt_com ); 1717 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1720 TCL_DB_DUPCOMPARE : 1721 i( i > objc ) { 1722 `T_WrgNumArgs ( , 2, objv , 1724 su = TCL_ERROR ; 1732 -> i_dupcom = objv [ i ++]; 1733 `T_InRefCou ( -> i_dupcom ); 1734 `_debug_check (); 1735 t = (* dbp )-> `t_dup_com (*dbp, t_dup_com ); 1736 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1739 TCL_DB_HASHCOMPARE : 1740 i( i > objc ) { 1741 `T_WrgNumArgs ( , 2, objv , 1743 su = TCL_ERROR ; 1754 -> i_com = objv [ i ++]; 1755 `T_InRefCou ( -> i_com ); 1756 `_debug_check (); 1757 t = (* dbp )-> `t_h_com (*dbp, t_bt_com ); 1758 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1761 TCL_DB_HASHPROC : 1762 i( i > objc ) { 1763 `T_WrgNumArgs ( , 2, objv , 1765 su = TCL_ERROR ; 1773 -> i_hashoc = objv [ i ++]; 1774 `T_InRefCou ( -> i_hashoc ); 1775 `_debug_check (); 1776 t = (* dbp )-> `t_h_hash (*dbp, t_h_hash ); 1777 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1780 TCL_DB_LORDER : 1781 i( i > objc ) { 1782 `T_WrgNumArgs ( , 2, objv , 1784 su = TCL_ERROR ; 1787 su = `T_GIFromObj ( , objv [ i ++], & rg ); 1788 i( su = TCL_OK ) { 1789 `_debug_check (); 1790 t = (* dbp )-> `t_ld (*dbp, rg ); 1791 su = `_RuSup ( , t , 1792 `DB_RETOK_STD ( t ), "set_lorder"); 1795 TCL_DB_MINKEY : 1796 i( i > objc ) { 1797 `T_WrgNumArgs ( , 2, objv , 1799 su = TCL_ERROR ; 1802 su = `_GUI32 ( , objv [ i ++], & urg ); 1803 i( su = TCL_OK ) { 1804 `_debug_check (); 1805 t = (* dbp )-> `t_bt_mkey (*dbp, urg ); 1806 su = `_RuSup ( , t , 1807 `DB_RETOK_STD ( t ), "set_bt_minkey"); 1810 TCL_DB_NOMMAP : 1811 ݒ_ags | DB_NOMMAP ; 1813 TCL_DB_NOTDURABLE : 1814 t_ags | DB_TXN_NOT_DURABLE ; 1816 TCL_DB_READ_UNCOMMITTED : 1817 ݒ_ags | DB_READ_UNCOMMITTED ; 1819 TCL_DB_REVSPLIT : 1820 t_ags | DB_REVSPLITOFF ; 1822 TCL_DB_TEST : 1823 t = (* dbp )-> `t_h_hash (*dbp, __ham_ ); 1824 su = `_RuSup ( , t , 1825 `DB_RETOK_STD ( t ), "set_h_hash"); 1827 TCL_DB_THREAD : 1829 ݒ_ags | DB_THREAD ; 1832 TCL_DB_AUTO_COMMIT : 1833 ݒ_ags | DB_AUTO_COMMIT ; 1835 TCL_DB_ENV : 1839 i ++; 1841 TCL_DB_TXN : 1842 i( i > ( objc - 1)) { 1843 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 1844 su = TCL_ERROR ; 1847 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1848 txn = `NAME_TO_TXN ( g ); 1849 i( txn = NULL ) { 1850 `tf ( msg , MSG_SIZE , 1851 "On: Invidxn: %s\n", g ); 1852 `T_SResu ( , msg , TCL_VOLATILE ); 1853 su = TCL_ERROR ; 1856 TCL_DB_BTREE : 1857 i( ty ! DB_UNKNOWN ) { 1858 `T_SResu ( , 1859 "Tomy DByecifd", TCL_STATIC ); 1860 su = TCL_ERROR ; 1861 r ; 1863 ty = DB_BTREE ; 1865 TCL_DB_HASH : 1866 i( ty ! DB_UNKNOWN ) { 1867 `T_SResu ( , 1868 "Tomy DByecifd", TCL_STATIC ); 1869 su = TCL_ERROR ; 1870 r ; 1872 ty = DB_HASH ; 1874 TCL_DB_RECNO : 1875 i( ty ! DB_UNKNOWN ) { 1876 `T_SResu ( , 1877 "Tomy DByecifd", TCL_STATIC ); 1878 su = TCL_ERROR ; 1879 r ; 1881 ty = DB_RECNO ; 1883 TCL_DB_QUEUE : 1884 i( ty ! DB_UNKNOWN ) { 1885 `T_SResu ( , 1886 "Tomy DByecifd", TCL_STATIC ); 1887 su = TCL_ERROR ; 1888 r ; 1890 ty = DB_QUEUE ; 1892 TCL_DB_UNKNOWN : 1893 i( ty ! DB_UNKNOWN ) { 1894 `T_SResu ( , 1895 "Tomy DByecifd", TCL_STATIC ); 1896 su = TCL_ERROR ; 1897 r ; 1900 TCL_DB_CREATE : 1901 ݒ_ags | DB_CREATE ; 1903 TCL_DB_EXCL : 1904 ݒ_ags | DB_EXCL ; 1906 TCL_DB_RDONLY : 1907 ݒ_ags | DB_RDONLY ; 1909 TCL_DB_TRUNCATE : 1910 ݒ_ags | DB_TRUNCATE ; 1912 TCL_DB_MODE : 1913 i( i > objc ) { 1914 `T_WrgNumArgs ( , 2, objv , 1916 su = TCL_ERROR ; 1925 su = `T_GIFromObj ( , objv [ i ++], & mode ); 1927 TCL_DB_DUP : 1928 t_ags | DB_DUP ; 1930 TCL_DB_DUPSORT : 1931 t_ags | DB_DUPSORT ; 1933 TCL_DB_INORDER : 1934 t_ags | DB_INORDER ; 1936 TCL_DB_RECNUM : 1937 t_ags | DB_RECNUM ; 1939 TCL_DB_RENUMBER : 1940 t_ags | DB_RENUMBER ; 1942 TCL_DB_SNAPSHOT : 1943 t_ags | DB_SNAPSHOT ; 1945 TCL_DB_CHKSUM : 1946 t_ags | DB_CHKSUM ; 1948 TCL_DB_ENCRYPT : 1949 t_ags | DB_ENCRYPT ; 1951 TCL_DB_ENCRYPT_AES : 1953 i( i > objc ) { 1954 `T_WrgNumArgs ( , 2, objv , 1956 su = TCL_ERROR ; 1959 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1960 `_debug_check (); 1961 t = (* dbp )-> `t_y (*dbp, sswd , DB_ENCRYPT_AES ); 1962 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1965 TCL_DB_ENCRYPT_ANY : 1967 i( i > objc ) { 1968 `T_WrgNumArgs ( , 2, objv , 1970 su = TCL_ERROR ; 1973 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1974 `_debug_check (); 1975 t = (* dbp )-> `t_y (*dbp, sswd , 0); 1976 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1979 TCL_DB_FFACTOR : 1980 i( i > objc ) { 1981 `T_WrgNumArgs ( , 2, objv , 1983 su = TCL_ERROR ; 1986 su = `_GUI32 ( , objv [ i ++], & urg ); 1987 i( su = TCL_OK ) { 1988 `_debug_check (); 1989 t = (* dbp )-> `t_h_f (*dbp, urg ); 1990 su = `_RuSup ( , t , 1991 `DB_RETOK_STD ( t ), "set_h_ffactor"); 1994 TCL_DB_MULTIVERSION : 1995 ݒ_ags | DB_MULTIVERSION ; 1997 TCL_DB_NELEM : 1998 i( i > objc ) { 1999 `T_WrgNumArgs ( , 2, objv , 2001 su = TCL_ERROR ; 2004 su = `_GUI32 ( , objv [ i ++], & urg ); 2005 i( su = TCL_OK ) { 2006 `_debug_check (); 2007 t = (* dbp )-> `t_h_m (*dbp, urg ); 2008 su = `_RuSup ( , t , 2009 `DB_RETOK_STD ( t ), "set_h_nelem"); 2012 TCL_DB_DELIM : 2013 i( i > objc ) { 2014 `T_WrgNumArgs ( , 2, objv , 2016 su = TCL_ERROR ; 2019 su = `T_GIFromObj ( , objv [ i ++], & rg ); 2020 i( su = TCL_OK ) { 2021 `_debug_check (); 2022 t = (* dbp )-> `t__dim (*dbp, rg ); 2023 su = `_RuSup ( , t , 2024 `DB_RETOK_STD ( t ), "set_re_delim"); 2027 TCL_DB_LEN : 2028 i( i > objc ) { 2029 `T_WrgNumArgs ( , 2, objv , 2031 su = TCL_ERROR ; 2034 su = `_GUI32 ( , objv [ i ++], & urg ); 2035 i( su = TCL_OK ) { 2036 `_debug_check (); 2037 t = (* dbp )-> `t__n (*dbp, urg ); 2038 su = `_RuSup ( , t , 2039 `DB_RETOK_STD ( t ), "set_re_len"); 2042 TCL_DB_MAXSIZE : 2043 i( i > objc ) { 2044 `T_WrgNumArgs ( , 2, objv , 2046 su = TCL_ERROR ; 2049 su = `_GUI32 ( , objv [ i ++], & urg ); 2050 i( su = TCL_OK ) { 2051 `_debug_check (); 2052 t = (* dbp )-> mpf -> `t_maxsize ( 2053 (* dbp )-> mpf , 0, urg ); 2054 su = `_RuSup ( , t , 2055 `DB_RETOK_STD ( t ), "set_maxsize"); 2058 TCL_DB_PAD : 2059 i( i > objc ) { 2060 `T_WrgNumArgs ( , 2, objv , 2062 su = TCL_ERROR ; 2065 su = `T_GIFromObj ( , objv [ i ++], & rg ); 2066 i( su = TCL_OK ) { 2067 `_debug_check (); 2068 t = (* dbp )-> `t__d (*dbp, rg ); 2069 su = `_RuSup ( , t , 2070 `DB_RETOK_STD ( t ), "set_re_pad"); 2073 TCL_DB_SOURCE : 2074 i( i > objc ) { 2075 `T_WrgNumArgs ( , 2, objv , 2077 su = TCL_ERROR ; 2080 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2081 `_debug_check (); 2082 t = (* dbp )-> `t__sour (*dbp, g ); 2083 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2086 TCL_DB_EXTENT : 2087 i( i > objc ) { 2088 `T_WrgNumArgs ( , 2, objv , 2090 su = TCL_ERROR ; 2093 su = `_GUI32 ( , objv [ i ++], & urg ); 2094 i( su = TCL_OK ) { 2095 `_debug_check (); 2096 t = (* dbp )-> `t_q_exsize (*dbp, urg ); 2097 su = `_RuSup ( , t , 2098 `DB_RETOK_STD ( t ), "set_q_extentsize"); 2101 TCL_DB_CACHESIZE : 2102 su = `T_LiObjGEmts ( , objv [ i ++], 2103 & myobjc , & myobjv ); 2104 i( su ! TCL_OK ) 2106 i( myobjc != 3) { 2107 `T_WrgNumArgs ( , 2, objv , 2109 su = TCL_ERROR ; 2112 su = `_GUI32 ( , myobjv [0], & gbys ); 2113 i( su ! TCL_OK ) 2115 su = `_GUI32 ( , myobjv [1], & bys ); 2116 i( su ! TCL_OK ) 2118 su = `T_GIFromObj ( , myobjv [2], & nches ); 2119 i( su ! TCL_OK ) 2121 `_debug_check (); 2122 t = (* dbp )-> `t_chesize (*dbp, gbys , bys , 2123 nches ); 2124 su = `_RuSup ( , t , 2125 `DB_RETOK_STD ( t ), "set_cachesize"); 2127 TCL_DB_PAGESIZE : 2128 i( i > objc ) { 2129 `T_WrgNumArgs ( , 2, objv , 2131 su = TCL_ERROR ; 2134 su = `T_GIFromObj ( , objv [ i ++], & rg ); 2135 i( su = TCL_OK ) { 2136 `_debug_check (); 2137 t = (* dbp )-> `t_gesize (*dbp, 2138 ( size_t ) rg ); 2139 su = `_RuSup ( , t , 2140 `DB_RETOK_STD ( t ), "setagesize"); 2143 TCL_DB_ERRFILE : 2144 i( i > objc ) { 2145 `T_WrgNumArgs ( , 2, objv , 2147 su = TCL_ERROR ; 2150 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2154 i( r -> i_r ! NULL && 2155 r -> i_r ! dout &&->i_! dr ) 2156 () `fo ( r -> i_r ); 2157 i( `rcmp ( g , "/dev/stdout") == 0) 2158 r -> i_r = dout ; 2159 i( `rcmp ( g , "/dev/stderr") == 0) 2160 r -> i_r = dr ; 2162 r -> i_r = `fݒ ( g , "a"); 2163 i( r -> i_r ! NULL ) { 2164 `_debug_check (); 2165 (* dbp )-> `t_rfe (*dbp, r -> i_r ); 2166 t_r = 1; 2169 TCL_DB_ERRPFX : 2170 i( i > objc ) { 2171 `T_WrgNumArgs ( , 2, objv , 2173 su = TCL_ERROR ; 2176 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2180 i( r -> i_fx ! NULL ) 2181 `__os_ ( NULL , r -> i_fx ); 2182 i(( t = `__os_rdup ((* dbp )-> v , 2183 g , & r -> i_fx )) != 0) { 2184 su = `_RuSup ( , t , 2185 `DB_RETOK_STD ( t ), "__os_strdup"); 2188 i( r -> i_fx ! NULL ) { 2189 `_debug_check (); 2190 (* dbp )-> `t_fx (*dbp, r -> i_fx ); 2191 t_pfx = 1; 2194 TCL_DB_ENDARG : 2195 dg = 1; 2203 i( su ! TCL_OK ) 2204 r ; 2205 i( dg ) 2208 i( su ! TCL_OK ) 2209 r ; 2216 i( i ! objc ) { 2222 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2223 i( `rcmp ( db , "") == 0) 2224 db = NULL ; 2225 i( i ! objc ) { 2226 subdbtmp = 2227 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2228 i(( t = `__os_mloc ( v , 2229 ( size_t ) subdbn + 1, & subdb )) != 0) { 2230 `T_SResu ( , `db_ ( t ), 2231 TCL_STATIC ); 2234 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2235 subdb [ subdbn ] = '\0'; 2238 i( t_ags ) { 2239 t = (* dbp )-> `t_ags (*dbp, t_ags ); 2240 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2242 i( su = TCL_ERROR ) 2243 r ; 2248 `T_RetResu ( ); 2256 `_debug_check (); 2259 t = (* dbp )-> `ݒ (*dbp, txn , db , subdb , ty , ݒ_ags , mode ); 2260 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db open"); 2262 r : 2263 i( subdb ) 2264 `__os_ ( v , subdb ); 2265 i( su = TCL_ERROR ) { 2266 ()(* dbp )-> `o (*dbp, 0); 2278 i( t_r && r &&-> i_r ! NULL && 2279 r -> i_r ! dout &&->i_! dr ) { 2280 () `fo ( r -> i_r ); 2281 r -> i_r = NULL ; 2283 i( t_pfx && r &&-> i_fx ! NULL ) { 2284 `__os_ ( v , r -> i_fx ); 2285 r -> i_fx = NULL ; 2287 * dbp = NULL ; 2289 ( su ); 2290 } } 2292 #ifde HAVE_64BIT_TYPES 2298 $bdb_SeqOn ( , objc , objv , , qp ) 2299 T_Ip * ; 2300 objc ; 2301 T_Obj * CONST objv []; 2302 DBTCL_INFO * ; 2303 DB_SEQUENCE ** qp ; 2305 cڡ * qݒ [] = { 2317 NULL 2319 eqݒ { 2320 TCL_SEQ_CACHESIZE , 2321 TCL_SEQ_CREATE , 2322 TCL_SEQ_INC , 2323 TCL_SEQ_INIT , 2324 TCL_SEQ_DEC , 2325 TCL_SEQ_MAX , 2326 TCL_SEQ_MIN , 2327 TCL_SEQ_THREAD , 2328 TCL_SEQ_TXN , 2329 TCL_SEQ_WRAP , 2330 TCL_SEQ_ENDARG 2332 DB * dbp ; 2333 DBT key ; 2334 DBTYPE ty ; 2335 DB_TXN * txn ; 2336 db_o_t o ; 2337 db_q_t m , max , vue ; 2338 T_WideI t_vue ; 2339 u_t32_t ags , oags ; 2340 che , dg , i , tdex , su , t , ge , tvue , v ; 2341 * g , * db , msg [ MSG_SIZE ]; 2343 `COMPQUIET ( , NULL ); 2344 `COMPQUIET ( vue , 0); 2345 * qp = NULL ; 2347 i( objc < 2) { 2348 `T_WrgNumArgs ( , 2, objv , "?args?"); 2349 ( TCL_ERROR ); 2352 txn = NULL ; 2353 dg = 0; 2354 ags = oags = 0; 2355 ge = tvue = 0; 2356 m = INT64_MIN ; 2357 max = INT64_MAX ; 2358 che = 0; 2360 i = 2; i < objc ;) { 2361 `T_RetResu ( ); 2362 i( `T_GIndexFromObj ( , objv [ i ], qݒ , "option", 2363 TCL_EXACT , & tdex ! TCL_OK ) { 2364 g = `T_GSgFromObj ( objv [ i ], NULL ); 2365 i( g [0] == '-') { 2366 su = `IS_HELP ( objv [ i ]); 2367 r ; 2369 `T_RetResu ( ); 2372 i ++; 2373 su = TCL_OK ; 2374 ( qݒ ) tdex ) { 2375 TCL_SEQ_CREATE : 2376 oags | DB_CREATE ; 2378 TCL_SEQ_INC : 2379 `LF_SET ( DB_SEQ_INC ); 2381 TCL_SEQ_CACHESIZE : 2382 i( i > objc ) { 2383 `T_WrgNumArgs ( , 2, objv , 2385 su = TCL_ERROR ; 2388 su = `T_GIFromObj ( , objv [ i ++], & che ); 2390 TCL_SEQ_INIT : 2391 i( i > objc ) { 2392 `T_WrgNumArgs ( , 2, objv , 2394 su = TCL_ERROR ; 2397 su = 2398 `T_GWideIFromObj ( 2399 , objv [ i ++], & t_vue ); 2400 vue = t_vue ; 2401 tvue = 1; 2403 TCL_SEQ_DEC : 2404 `LF_SET ( DB_SEQ_DEC ); 2406 TCL_SEQ_MAX : 2407 i( i > objc ) { 2408 `T_WrgNumArgs ( , 2, objv , 2410 su = TCL_ERROR ; 2413 i(( su = 2414 `T_GWideIFromObj ( , 2415 objv [ i ++], & t_vue )! TCL_OK ) 2416 r ; 2417 max = t_vue ; 2418 ge = 1; 2420 TCL_SEQ_MIN : 2421 i( i > objc ) { 2422 `T_WrgNumArgs ( , 2, objv , 2424 su = TCL_ERROR ; 2427 i(( su = 2428 `T_GWideIFromObj ( , 2429 objv [ i ++], & t_vue )! TCL_OK ) 2430 r ; 2431 m = t_vue ; 2432 ge = 1; 2434 TCL_SEQ_THREAD : 2435 oags | DB_THREAD ; 2437 TCL_SEQ_TXN : 2438 i( i > ( objc - 1)) { 2439 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2440 su = TCL_ERROR ; 2443 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2444 txn = `NAME_TO_TXN ( g ); 2445 i( txn = NULL ) { 2446 `tf ( msg , MSG_SIZE , 2447 "Sequ: Invidxn: %s\n", g ); 2448 `T_SResu ( , msg , TCL_VOLATILE ); 2449 su = TCL_ERROR ; 2452 TCL_SEQ_WRAP : 2453 `LF_SET ( DB_SEQ_WRAP ); 2455 TCL_SEQ_ENDARG : 2456 dg = 1; 2463 i( su ! TCL_OK ) 2464 r ; 2465 i( dg ) 2469 i( objc - i != 2) { 2470 `T_WrgNumArgs ( , 2, objv , "?args?"); 2471 ( TCL_ERROR ); 2477 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2478 i(( dbp = `NAME_TO_DB ( db )= NULL ) { 2479 `T_SResu ( , "Nsuch dbp", TCL_STATIC ); 2480 ( TCL_ERROR ); 2482 () dbp -> `g_ty (dbp, & ty ); 2484 i( ty = DB_QUEUE ||y = DB_RECNO ) { 2485 su = `_GUI32 ( , objv [ i ++], & o ); 2486 i( su ! TCL_OK ) 2487 ( su ); 2488 `DB_INIT_DBT ( key , & o , (recno)); 2490 `DB_INIT_DBT ( key , `T_GByAayFromObj ( objv [ i ++], & v ), v); 2491 t = `db_qu_ ( qp , dbp , 0); 2492 i(( su = `_RuSup ( , 2493 t , `DB_RETOK_STD ԑ), "qu ce")! TCL_OK ) { 2494 * qp = NULL ; 2495 ( su ); 2498 t = (* qp )-> `t_ags (*qp, ags ); 2499 i(( su = `_RuSup ( , 2500 t , `DB_RETOK_STD ԑ), "qu s_ags")! TCL_OK ) 2501 r ; 2502 i( ge ) { 2503 t = (* qp )-> `t_nge (*qp, m , max ); 2504 i(( su = `_RuSup ( , 2505 t , `DB_RETOK_STD ԑ), "qu s_nge")! TCL_OK ) 2506 r ; 2508 i( che ) { 2509 t = (* qp )-> `t_chesize (*qp, che ); 2510 i(( su = `_RuSup ( , 2511 t , `DB_RETOK_STD ԑ), "qu cachesize")! TCL_OK ) 2512 r ; 2514 i( tvue ) { 2515 t = (* qp )-> `l_vue (*qp, vue ); 2516 i(( su = `_RuSup ( , 2517 t , `DB_RETOK_STD ԑ), "qu in")! TCL_OK ) 2518 r ; 2520 t = (* qp )-> `ݒ (*qp, txn , & key , oags ); 2521 i(( su = `_RuSup ( , 2522 t , `DB_RETOK_STD ԑ), "qu on")! TCL_OK ) 2523 r ; 2526 r : i(* qp ! NULL ) 2527 ()(* qp )-> `o (*seqp, 0); 2528 * qp = NULL ; 2530 ( su ); 2531 } } 2539 $bdb_DbRemove ( , objc , objv ) 2540 T_Ip * ; 2541 objc ; 2542 T_Obj * CONST objv []; 2544 cڡ * bdbm [] = { 2552 NULL 2554 ebdbm { 2555 TCL_DBREM_AUTOCOMMIT , 2556 TCL_DBREM_ENCRYPT , 2557 TCL_DBREM_ENCRYPT_AES , 2558 TCL_DBREM_ENCRYPT_ANY , 2559 TCL_DBREM_ENV , 2560 TCL_DBREM_TXN , 2561 TCL_DBREM_ENDARG 2563 DB * dbp ; 2564 DB_ENV * dbv ; 2565 DB_TXN * txn ; 2566 ENV * v ; 2567 u_t32_t c_ag , iags , t_ags ; 2568 dg , i , tdex , su , t , subdbn ; 2569 u_ch * subdbtmp ; 2570 * g , * db , msg [ MSG_SIZE ], * sswd , * subdb ; 2572 dbp = NULL ; 2573 dbv = NULL ; 2574 txn = NULL ; 2575 v = NULL ; 2576 c_ag = iags = t_ags = 0; 2577 dg = 0; 2578 su = TCL_OK ; 2579 subdbtmp = NULL ; 2580 db = sswd = subdb = NULL ; 2582 i( objc < 2) { 2583 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 2584 ( TCL_ERROR ); 2591 i = 2; 2592 i < objc ) { 2593 i( `T_GIndexFromObj ( , objv [ i ], bdbm , 2594 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 2595 g = `T_GSgFromObj ( objv [ i ], NULL ); 2596 i( g [0] == '-') { 2597 su = `IS_HELP ( objv [ i ]); 2598 r ; 2600 `T_RetResu ( ); 2603 i ++; 2604 ( bdbm ) tdex ) { 2605 TCL_DBREM_AUTOCOMMIT : 2606 iags | DB_AUTO_COMMIT ; 2607 `_debug_check (); 2609 TCL_DBREM_ENCRYPT : 2610 t_ags | DB_ENCRYPT ; 2611 `_debug_check (); 2613 TCL_DBREM_ENCRYPT_AES : 2615 i( i > objc ) { 2616 `T_WrgNumArgs ( , 2, objv , 2618 su = TCL_ERROR ; 2621 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2622 c_ag = DB_ENCRYPT_AES ; 2624 TCL_DBREM_ENCRYPT_ANY : 2626 i( i > objc ) { 2627 `T_WrgNumArgs ( , 2, objv , 2629 su = TCL_ERROR ; 2632 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2633 c_ag = 0; 2635 TCL_DBREM_ENV : 2636 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2637 dbv = `NAME_TO_ENV ( g ); 2638 i( dbv = NULL ) { 2639 `T_SResu ( , 2641 TCL_STATIC ); 2642 ( TCL_ERROR ); 2644 v = dbv ->env; 2646 TCL_DBREM_ENDARG : 2647 dg = 1; 2649 TCL_DBREM_TXN : 2650 i( i > objc ) { 2651 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2652 su = TCL_ERROR ; 2655 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2656 txn = `NAME_TO_TXN ( g ); 2657 i( txn = NULL ) { 2658 `tf ( msg , MSG_SIZE , 2659 "Put: Invidxn: %s\n", g ); 2660 `T_SResu ( , msg , TCL_VOLATILE ); 2661 su = TCL_ERROR ; 2669 i( su ! TCL_OK ) 2670 r ; 2671 i( dg ) 2674 i( su ! TCL_OK ) 2675 r ; 2680 i(( i !( objc - 1)) || (i != (objc - 2))) { 2686 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2687 i( `rcmp ( db , "") == 0) 2688 db = NULL ; 2689 i( i ! objc ) { 2690 subdbtmp = 2691 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2692 i(( t = `__os_mloc ( v , ( size_t ) subdbn + 1, 2693 & subdb )!0{ `T_SResu ( , 2694 `db_ ( t ), TCL_STATIC ); 2697 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2698 subdb [ subdbn ] = '\0'; 2701 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 2702 su = TCL_ERROR ; 2703 r ; 2705 i( dbv = NULL ) { 2706 t = `db_ (& dbp , dbv , 0); 2707 i( t ) { 2708 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2710 r ; 2721 dbp -> `t_fx (dbp, "DbRemove"); 2722 dbp -> `t_r (dbp, _EFunc ); 2724 i( sswd ! NULL ) { 2725 t = dbp -> `t_y (dbp, sswd , c_ag ); 2726 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2729 i( t_ags != 0) { 2730 t = dbp -> `t_ags (dbp, t_ags ); 2731 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2739 `_debug_check (); 2740 i( dbp = NULL ) 2741 t = dbv -> `dbmove (dbv, txn , db , subdb , iags ); 2743 t = dbp -> `move (dbp, db , subdb , 0); 2745 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "dbemove"); 2746 dbp = NULL ; 2747 r : 2748 i( subdb ) 2749 `__os_ ( v , subdb ); 2750 i( su = TCL_ERROR && dbp ! NULL ) 2751 () dbp -> `o (dbp, 0); 2752 ( su ); 2753 } } 2760 $bdb_DbRame ( , objc , objv ) 2761 T_Ip * ; 2762 objc ; 2763 T_Obj * CONST objv []; 2765 cڡ * bdbmv [] = { 2773 NULL 2775 ebdbmv { 2776 TCL_DBMV_AUTOCOMMIT , 2777 TCL_DBMV_ENCRYPT , 2778 TCL_DBMV_ENCRYPT_AES , 2779 TCL_DBMV_ENCRYPT_ANY , 2780 TCL_DBMV_ENV , 2781 TCL_DBMV_TXN , 2782 TCL_DBMV_ENDARG 2784 DB * dbp ; 2785 DB_ENV * dbv ; 2786 DB_TXN * txn ; 2787 ENV * v ; 2788 u_t32_t c_ag , iags , t_ags ; 2789 dg , i , wn , tdex , su , t , subdbn ; 2790 u_ch * subdbtmp ; 2791 * g , * db , msg [ MSG_SIZE ], * wme , * sswd , * subdb ; 2793 dbp = NULL ; 2794 dbv = NULL ; 2795 txn = NULL ; 2796 v = NULL ; 2797 c_ag = iags = t_ags = 0; 2798 su = TCL_OK ; 2799 dg = 0; 2800 db = wme = sswd = subdb = NULL ; 2801 subdbtmp = NULL ; 2803 i( objc < 2) { 2804 `T_WrgNumArgs ( , 2805 3, objv , "?args? filename ?database? ?newname?"); 2806 ( TCL_ERROR ); 2813 i = 2; 2814 i < objc ) { 2815 i( `T_GIndexFromObj ( , objv [ i ], bdbmv , 2816 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 2817 g = `T_GSgFromObj ( objv [ i ], NULL ); 2818 i( g [0] == '-') { 2819 su = `IS_HELP ( objv [ i ]); 2820 r ; 2822 `T_RetResu ( ); 2825 i ++; 2826 ( bdbmv ) tdex ) { 2827 TCL_DBMV_AUTOCOMMIT : 2828 iags | DB_AUTO_COMMIT ; 2829 `_debug_check (); 2831 TCL_DBMV_ENCRYPT : 2832 t_ags | DB_ENCRYPT ; 2833 `_debug_check (); 2835 TCL_DBMV_ENCRYPT_AES : 2837 i( i > objc ) { 2838 `T_WrgNumArgs ( , 2, objv , 2840 su = TCL_ERROR ; 2843 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2844 c_ag = DB_ENCRYPT_AES ; 2846 TCL_DBMV_ENCRYPT_ANY : 2848 i( i > objc ) { 2849 `T_WrgNumArgs ( , 2, objv , 2851 su = TCL_ERROR ; 2854 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 2855 c_ag = 0; 2857 TCL_DBMV_ENV : 2858 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2859 dbv = `NAME_TO_ENV ( g ); 2860 i( dbv = NULL ) { 2861 `T_SResu ( , 2863 TCL_STATIC ); 2864 ( TCL_ERROR ); 2866 v = dbv ->env; 2868 TCL_DBMV_ENDARG : 2869 dg = 1; 2871 TCL_DBMV_TXN : 2872 i( i > objc ) { 2873 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2874 su = TCL_ERROR ; 2877 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2878 txn = `NAME_TO_TXN ( g ); 2879 i( txn = NULL ) { 2880 `tf ( msg , MSG_SIZE , 2881 "Put: Invidxn: %s\n", g ); 2882 `T_SResu ( , msg , TCL_VOLATILE ); 2883 su = TCL_ERROR ; 2891 i( su ! TCL_OK ) 2892 r ; 2893 i( dg ) 2896 i( su ! TCL_OK ) 2897 r ; 2902 i(( i !( objc - 2)) || (i != (objc - 3))) { 2908 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2909 i( `rcmp ( db , "") == 0) 2910 db = NULL ; 2911 i( i = objc - 2) { 2912 subdbtmp = 2913 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2914 i(( t = `__os_mloc ( v , 2915 ( size_t ) subdbn + 1, & subdb )) != 0) { 2916 `T_SResu ( , 2917 `db_ ( t ), TCL_STATIC ); 2920 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2921 subdb [ subdbn ] = '\0'; 2923 subdbtmp = 2924 `T_GByAayFromObj ( objv [ i ++], & wn ); 2925 i(( t = `__os_mloc ( 2926 v , ( size_t ) wn + 1, & wme )) != 0) { 2927 `T_SResu ( , 2928 `db_ ( t ), TCL_STATIC ); 2931 `memy ( wme , subdbtmp , ( size_t ) wn ); 2932 wme [ wn ] = '\0'; 2934 `T_WrgNumArgs ( 2935 , 3, objv , "?args? filename ?database? ?newname?"); 2936 su = TCL_ERROR ; 2937 r ; 2939 i( dbv = NULL ) { 2940 t = `db_ (& dbp , dbv , 0); 2941 i( t ) { 2942 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2944 r ; 2954 dbp -> `t_fx (dbp, "DbRename"); 2955 dbp -> `t_r (dbp, _EFunc ); 2957 i( sswd ! NULL ) { 2958 t = dbp -> `t_y (dbp, sswd , c_ag ); 2959 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2962 i( t_ags != 0) { 2963 t = dbp -> `t_ags (dbp, t_ags ); 2964 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2972 `_debug_check (); 2973 i( dbp = NULL ) 2974 t = dbv -> `dbme (dbv, txn , db , subdb , wme , iags ); 2976 t = dbp -> `me (dbp, db , subdb , wme , 0); 2977 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "dbename"); 2978 dbp = NULL ; 2979 r : 2980 i( subdb ) 2981 `__os_ ( v , subdb ); 2982 i( wme ) 2983 `__os_ ( v , wme ); 2984 i( su = TCL_ERROR && dbp ! NULL ) 2985 () dbp -> `o (dbp, 0); 2986 ( su ); 2987 } } 2989 #ifde CONFIG_TEST 2995 $bdb_DbVify ( , objc , objv ) 2996 T_Ip * ; 2997 objc ; 2998 T_Obj * CONST objv []; 3000 cڡ * bdbvify [] = { 3011 NULL 3013 ebdbvrfy { 3014 TCL_DBVRFY_ENCRYPT , 3015 TCL_DBVRFY_ENCRYPT_AES , 3016 TCL_DBVRFY_ENCRYPT_ANY , 3017 TCL_DBVRFY_ENV , 3018 TCL_DBVRFY_ERRFILE , 3019 TCL_DBVRFY_ERRPFX , 3020 TCL_DBVRFY_NOORDERCHK , 3021 TCL_DBVRFY_ORDERCHKONLY , 3022 TCL_DBVRFY_UNREF , 3023 TCL_DBVRFY_ENDARG 3025 DB_ENV * dbv ; 3026 DB * dbp ; 3027 FILE * rf ; 3028 u_t32_t c_ag , ags , t_ags ; 3029 dg , i , tdex , su , t , subdbn ; 3030 * g , * db , * fx , * sswd , * subdb ; 3031 u_ch * subdbtmp ; 3033 dbv = NULL ; 3034 dbp = NULL ; 3035 sswd = NULL ; 3036 su = TCL_OK ; 3037 db = fx = subdb = NULL ; 3038 rf = NULL ; 3039 ags = dg = 0; 3040 c_ag = t_ags = 0; 3042 i( objc < 2) { 3043 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3044 ( TCL_ERROR ); 3051 i = 2; 3052 i < objc ) { 3053 i( `T_GIndexFromObj ( , objv [ i ], bdbvify , 3054 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 3055 g = `T_GSgFromObj ( objv [ i ], NULL ); 3056 i( g [0] == '-') { 3057 su = `IS_HELP ( objv [ i ]); 3058 r ; 3060 `T_RetResu ( ); 3063 i ++; 3064 ( bdbvrfy ) tdex ) { 3065 TCL_DBVRFY_ENCRYPT : 3066 t_ags | DB_ENCRYPT ; 3067 `_debug_check (); 3069 TCL_DBVRFY_ENCRYPT_AES : 3071 i( i > objc ) { 3072 `T_WrgNumArgs ( , 2, objv , 3074 su = TCL_ERROR ; 3077 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 3078 c_ag = DB_ENCRYPT_AES ; 3080 TCL_DBVRFY_ENCRYPT_ANY : 3082 i( i > objc ) { 3083 `T_WrgNumArgs ( , 2, objv , 3085 su = TCL_ERROR ; 3088 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 3089 c_ag = 0; 3091 TCL_DBVRFY_ENV : 3092 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3093 dbv = `NAME_TO_ENV ( g ); 3094 i( dbv = NULL ) { 3095 `T_SResu ( , 3097 TCL_STATIC ); 3098 su = TCL_ERROR ; 3102 TCL_DBVRFY_ERRFILE : 3103 i( i > objc ) { 3104 `T_WrgNumArgs ( , 2, objv , 3106 su = TCL_ERROR ; 3109 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3113 i( rf ! NULL &&! dout &&! dr ) 3114 () `fo ( rf ); 3115 i( `rcmp ( g , "/dev/stdout") == 0) 3116 rf = dout ; 3117 i( `rcmp ( g , "/dev/stderr") == 0) 3118 rf = dr ; 3120 rf = `fݒ ( g , "a"); 3122 TCL_DBVRFY_ERRPFX : 3123 i( i > objc ) { 3124 `T_WrgNumArgs ( , 2, objv , 3126 su = TCL_ERROR ; 3129 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3133 i( fx ! NULL ) 3134 `__os_ ( dbv -> v , fx ); 3135 i(( t = `__os_rdup ( NULL , g , & fx )) != 0) { 3136 su = `_RuSup ( , t , 3137 `DB_RETOK_STD ( t ), "__os_strdup"); 3141 TCL_DBVRFY_NOORDERCHK : 3142 ags | DB_NOORDERCHK ; 3144 TCL_DBVRFY_ORDERCHKONLY : 3145 ags | DB_ORDERCHKONLY ; 3147 TCL_DBVRFY_UNREF : 3148 ags | DB_UNREF ; 3150 TCL_DBVRFY_ENDARG : 3151 dg = 1; 3158 i( su ! TCL_OK ) 3159 r ; 3160 i( dg ) 3163 i( su ! TCL_OK ) 3164 r ; 3172 i( i ! objc ) { 3178 db = `T_GSgFromObj ( objv [ i ++], NULL ); 3179 i( `rcmp ( db , "") == 0) 3180 db = NULL ; 3181 i( i ! objc ) { 3182 subdbtmp = 3183 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 3184 i(( t = `__os_mloc ( dbv -> v , 3185 ( size_t ) subdbn + 1, & subdb )) != 0) { 3186 `T_SResu ( , `db_ ( t ), 3187 TCL_STATIC ); 3190 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 3191 subdb [ subdbn ] = '\0'; 3194 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3195 su = TCL_ERROR ; 3196 r ; 3198 t = `db_ (& dbp , dbv , 0); 3199 i( t ) { 3200 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3202 r ; 3205 i( sswd ! NULL ) { 3206 t = dbp -> `t_y (dbp, sswd , c_ag ); 3207 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3211 i( t_ags != 0) { 3212 t = dbp -> `t_ags (dbp, t_ags ); 3213 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3216 i( rf ! NULL ) 3217 dbp -> `t_rfe (dbp, rf ); 3218 i( fx ! NULL ) 3219 dbp -> `t_fx (dbp, fx ); 3224 t = dbp -> `vify (dbp, db , subdb , NULL , ags ); 3225 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db verify"); 3226 dbp = NULL ; 3227 r : 3228 i( rf ! NULL &&! dout &&! dr ) 3229 () `fo ( rf ); 3230 i( fx ! NULL ) 3231 `__os_ ( dbv -> v , fx ); 3232 i( dbp ) 3233 () dbp -> `o (dbp, 0); 3234 ( su ); 3235 } } 3243 $bdb_Vsi ( , objc , objv ) 3244 T_Ip * ; 3245 objc ; 3246 T_Obj * CONST objv []; 3248 cڡ * bdbv [] = { 3249 "-rg", NULL 3251 ebdbv { 3252 TCL_VERSTRING 3254 i , tdex , maj , m , tch , su , rg , vobjc ; 3255 * g , * v ; 3256 T_Obj * s , * vobjv [3]; 3258 su = TCL_OK ; 3259 rg = 0; 3261 i( objc < 2) { 3262 `T_WrgNumArgs ( , 2, objv , "?args?"); 3263 ( TCL_ERROR ); 3270 i = 2; 3271 i < objc ) { 3272 i( `T_GIndexFromObj ( , objv [ i ], bdbv , 3273 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 3274 g = `T_GSgFromObj ( objv [ i ], NULL ); 3275 i( g [0] == '-') { 3276 su = `IS_HELP ( objv [ i ]); 3277 r ; 3279 `T_RetResu ( ); 3282 i ++; 3283 ( bdbv ) tdex ) { 3284 TCL_VERSTRING : 3285 rg = 1; 3292 i( su ! TCL_OK ) 3293 r ; 3295 i( su ! TCL_OK ) 3296 r ; 3298 v = `db_vsi (& maj , & m , & tch ); 3299 i( rg ) 3300 s = `NewSgObj ( v , ` (v)); 3302 vobjc = 3; 3303 vobjv [0] = `T_NewIObj ( maj ); 3304 vobjv [1] = `T_NewIObj ( m ); 3305 vobjv [2] = `T_NewIObj ( tch ); 3306 s = `T_NewLiObj ( vobjc , vobjv ); 3308 `T_SObjResu ( , s ); 3309 r : 3310 ( su ); 3311 } } 3313 #ifde CONFIG_TEST 3318 #ADD_CONFIG_NAME ( me ) \ 3319 cf = `NewSgObj ( me , ` (name)); \ 3320 i( `T_LiObjAdEmt ( , s , cf ! TCL_OK ) \ 3321 ( TCL_ERROR ); ) 3324 $bdb_GCfig ( , objc , objv ) 3325 T_Ip * ; 3326 objc ; 3327 T_Obj * CONST objv []; 3329 T_Obj * s , * cf ; 3334 i( objc != 2) { 3335 `T_WrgNumArgs ( , 2, objv , ""); 3336 ( TCL_ERROR ); 3338 s = `T_NewLiObj (0, NULL ); 3339 cf = NULL ; 3347 #ifde DEBUG 3348 `ADD_CONFIG_NAME ("debug"); 3350 #ifde DEBUG_ROP 3351 `ADD_CONFIG_NAME ("debug_rop"); 3353 #ifde DEBUG_WOP 3354 `ADD_CONFIG_NAME ("debug_wop"); 3356 #ifde DIAGNOSTIC 3357 `ADD_CONFIG_NAME ("diagnostic"); 3359 #ifde HAVE_HASH 3360 `ADD_CONFIG_NAME ("hash"); 3362 #ifde HAVE_QUEUE 3363 `ADD_CONFIG_NAME ("queue"); 3365 #ifde HAVE_REPLICATION 3366 `ADD_CONFIG_NAME ("rep"); 3368 #ifde HAVE_REPLICATION_THREADS 3369 `ADD_CONFIG_NAME ("repmgr"); 3371 #ifde HAVE_RPC 3372 `ADD_CONFIG_NAME ("rpc"); 3374 #ifde HAVE_VERIFY 3375 `ADD_CONFIG_NAME ("verify"); 3377 `T_SObjResu ( , s ); 3378 ( TCL_OK ); 3379 } } 3386 $bdb_Hds ( , objc , objv ) 3387 T_Ip * ; 3388 objc ; 3389 T_Obj * CONST objv []; 3391 DBTCL_INFO * p ; 3392 T_Obj * s , * hd ; 3397 i( objc != 2) { 3398 `T_WrgNumArgs ( , 2, objv , ""); 3399 ( TCL_ERROR ); 3401 s = `T_NewLiObj (0, NULL ); 3403 `LIST_FOREACH ( p , & __db_fohd , s ) { 3404 hd = `NewSgObj ( p -> i_me , ` (p->i_name)); 3405 i( `T_LiObjAdEmt ( , s , hd ! TCL_OK ) 3406 ( TCL_ERROR ); 3408 `T_SObjResu ( , s ); 3409 ( TCL_OK ); 3410 } } 3418 $bdb_MsgTy ( , objc , objv ) 3419 T_Ip * ; 3420 objc ; 3421 T_Obj * CONST objv []; 3423 __p_cڌ_gs * ; 3424 T_Obj * msgme ; 3425 u_t32_t n , msgty , swty ; 3426 䓽 , t ; 3432 cڡ * msgmes [] = { 3441 "ve1", "ve2", NULL 3447 i( objc != 3) { 3448 `T_WrgNumArgs ( , 3, objv , "msgtype msg"); 3449 ( TCL_ERROR ); 3452 t = `_CyObjBys ( , objv [2], & , & n , & 䓽 ); 3453 i( t ! TCL_OK ) { 3454 `T_SResu ( , 3455 "msgty: bad cڌ mesge", TCL_STATIC ); 3456 ( TCL_ERROR ); 3458 swty = msgty = -> y ; 3463 `M_32_SWAP ( swty ); 3464 i( msgty > REP_MAX_MSG && swty <= REP_MAX_MSG) 3465 msgty = swty ; 3466 msgme = `NewSgObj ( msgmes [ msgty ], ` (msgnames[msgtype])); 3467 `T_SObjResu ( , msgme ); 3468 i( ! NULL && 䓽 ) 3469 `__os_ ( NULL , ); 3470 ( TCL_OK ); 3471 } } 3478 $bdb_DbUpgde ( , objc , objv ) 3479 T_Ip * ; 3480 objc ; 3481 T_Obj * CONST objv []; 3483 cڡ * bdbupg [] = { 3484 "-dupst", "-v", "--", NULL 3486 ebdbupg { 3487 TCL_DBUPG_DUPSORT , 3488 TCL_DBUPG_ENV , 3489 TCL_DBUPG_ENDARG 3491 DB_ENV * dbv ; 3492 DB * dbp ; 3493 u_t32_t ags ; 3494 dg , i , tdex , su , t ; 3495 * g , * db ; 3497 dbv = NULL ; 3498 dbp = NULL ; 3499 su = TCL_OK ; 3500 db = NULL ; 3501 ags = dg = 0; 3503 i( objc < 2) { 3504 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3505 ( TCL_ERROR ); 3508 i = 2; 3509 i < objc ) { 3510 i( `T_GIndexFromObj ( , objv [ i ], bdbupg , 3511 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 3512 g = `T_GSgFromObj ( objv [ i ], NULL ); 3513 i( g [0] == '-') { 3514 su = `IS_HELP ( objv [ i ]); 3515 r ; 3517 `T_RetResu ( ); 3520 i ++; 3521 ( bdbupg ) tdex ) { 3522 TCL_DBUPG_DUPSORT : 3523 ags | DB_DUPSORT ; 3525 TCL_DBUPG_ENV : 3526 g = `T_GSgFromObj ( objv [ i ++], NULL ); 3527 dbv = `NAME_TO_ENV ( g ); 3528 i( dbv = NULL ) { 3529 `T_SResu ( , 3531 TCL_STATIC ); 3532 ( TCL_ERROR ); 3535 TCL_DBUPG_ENDARG : 3536 dg = 1; 3543 i( su ! TCL_OK ) 3544 r ; 3545 i( dg ) 3548 i( su ! TCL_OK ) 3549 r ; 3553 i( i =( objc - 1)) 3554 db = `T_GSgFromObj ( objv [ i ++], NULL ); 3556 `T_WrgNumArgs ( , 2, objv , "?args? filename"); 3557 su = TCL_ERROR ; 3558 r ; 3560 t = `db_ (& dbp , dbv , 0); 3561 i( t ) { 3562 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 3564 r ; 3575 i( dbv = NULL ) { 3576 dbp -> `t_fx (dbp, "DbUpgrade"); 3577 dbp -> `t_r (dbp, _EFunc ); 3579 t = dbp -> `upgde (dbp, db , ags ); 3580 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "db upgrade"); 3581 r : 3582 i( dbp ) 3583 () dbp -> `o (dbp, 0); 3584 ( su ); 3585 } } 3594 $t_bt_com ( dbp , db , dbtb ) 3595 DB * dbp ; 3596 cڡ DBT * db , * dbtb ; 3598 ( `t_com_back ( dbp , db , dbtb , 3599 (( DBTCL_INFO *) dbp -> i_ )-> i_com , "bt_compare")); 3600 } } 3603 $t_dup_com ( dbp , db , dbtb ) 3604 DB * dbp ; 3605 cڡ DBT * db , * dbtb ; 3607 ( `t_com_back ( dbp , db , dbtb , 3608 (( DBTCL_INFO *) dbp -> i_ )-> i_dupcom , "dup_compare")); 3609 } } 3619 $t_com_back ( dbp , db , dbtb , ocobj , ame ) 3620 DB * dbp ; 3621 cڡ DBT * db , * dbtb ; 3622 T_Obj * ocobj ; 3623 * ame ; 3625 DBTCL_INFO * ; 3626 T_Ip * ; 3627 T_Obj * a , * b , * sobj , * objv [3]; 3628 su , cmp ; 3630 = ( DBTCL_INFO *) dbp -> i_ ; 3631 = -> i_ ; 3632 objv [0] = ocobj ; 3639 a = `T_NewByAayObj ( db -> da , ()db-> size ); 3640 `T_InRefCou ( a ); 3641 b = `T_NewByAayObj ( dbtb -> da , ()dbtb-> size ); 3642 `T_InRefCou ( b ); 3644 objv [1] = a ; 3645 objv [2] = b ; 3647 su = `T_EvObjv ( , 3, objv , 0); 3648 i( su ! TCL_OK ) { 3664 nic : `__db_rx ( dbp -> v , "T %back faed", ame ); 3665 ( `__v_nic ( dbp -> v , DB_RUNRECOVERY )); 3668 sobj = `T_GObjResu ( ); 3669 su = `T_GIFromObj ( , sobj , & cmp ); 3670 i( su ! TCL_OK ) 3671 nic ; 3673 `T_DeRefCou ( a ); 3674 `T_DeRefCou ( b ); 3675 ( cmp ); 3676 } } 3684 u_t32_t 3685 $t_h_hash ( dbp , buf , n ) 3686 DB * dbp ; 3687 cڡ * buf ; 3688 u_t32_t n ; 3690 DBTCL_INFO * ; 3691 T_Ip * ; 3692 T_Obj * objv [2]; 3693 su , hv ; 3695 = ( DBTCL_INFO *) dbp -> i_ ; 3696 = -> i_ ; 3697 objv [0] = -> i_hashoc ; 3702 objv [1] = `T_NewByAayObj ((*) buf , () n ); 3703 `T_InRefCou ( objv [1]); 3704 su = `T_EvObjv ( , 2, objv , 0); 3705 i( su ! TCL_OK ) 3706 nic ; 3708 su = `T_GIFromObj ( , `T_GObjResu (), & hv ); 3709 i( su ! TCL_OK ) 3710 nic ; 3712 `T_DeRefCou ( objv [1]); 3713 (( u_t32_t ) hv ); 3715 nic : `__db_rx ( dbp -> v , "Tcl h_hash callback failed"); 3717 () `__v_nic ( dbp -> v , DB_RUNRECOVERY ); 3719 } } 3729 $t_p_nd ( dbv , cڌ , c , lp , eid , ags ) 3730 DB_ENV * dbv ; 3731 cڡ DBT * cڌ , * c ; 3732 cڡ DB_LSN * lp ; 3733 eid ; 3734 u_t32_t ags ; 3736 #TCLDB_SENDITEMS 7 ) 3737 #TCLDB_MAXREPFLAGS 32 ) 3738 DBTCL_INFO * ; 3739 T_Ip * ; 3740 T_Obj * cڌ_o , * eid_o , * ags_o , * l_o , * igobj , * c_o ; 3741 T_Obj * lobj [2], * myobjv [ TCLDB_MAXREPFLAGS ], * objv [ TCLDB_SENDITEMS ]; 3742 T_Obj * sobj ; 3743 i , myobjc , su , t ; 3745 = ( DBTCL_INFO *) dbv -> p_ive ; 3746 = -> i_ ; 3747 objv [0] = -> i_p_nd ; 3749 cڌ_o = `T_NewByAayObj ( cڌ -> da , ()cڌ-> size ); 3750 `T_InRefCou ( cڌ_o ); 3752 c_o = `T_NewByAayObj ( c -> da , (ec-> size ); 3753 `T_InRefCou ( c_o ); 3755 eid_o = `T_NewIObj ( eid ); 3756 `T_InRefCou ( eid_o ); 3758 myobjv [ myobjc = 0] = NULL ; 3759 i( ags == 0) 3760 myobjv [ myobjc ++] = `NewSgObj ("ne", ` ("none")); 3761 i( `LF_ISSET ( DB_REP_ANYWHERE )) 3762 myobjv [ myobjc ++] = `NewSgObj ("y", ` ("any")); 3763 i( `LF_ISSET ( DB_REP_NOBUFFER )) 3764 myobjv [ myobjc ++] = `NewSgObj ("nobufr", ` ("nobuffer")); 3765 i( `LF_ISSET ( DB_REP_PERMANENT )) 3766 myobjv [ myobjc ++] = `NewSgObj ("rm", ` ("perm")); 3767 i( `LF_ISSET ( DB_REP_REREQUEST )) 3768 myobjv [ myobjc ++] = 3769 `NewSgObj ("que", ` ("rerequest")); 3773 i( myobjc == 0) 3774 myobjv [ myobjc ++] = `NewSgObj ("unknown", ` ("unknown")); 3775 i = 0; i < myobjc ; i++) 3776 `T_InRefCou ( myobjv [ i ]); 3777 ags_o = `T_NewLiObj ( myobjc , myobjv ); 3778 `T_InRefCou ( ags_o ); 3780 lobj [0] = `T_NewLgObj (() lp -> fe ); 3781 `T_InRefCou ( lobj [0]); 3782 lobj [1] = `T_NewLgObj (() lp -> offt ); 3783 `T_InRefCou ( lobj [1]); 3784 l_o = `T_NewLiObj (2, lobj ); 3785 `T_InRefCou ( l_o ); 3787 objv [1] = cڌ_o ; 3788 objv [2] = c_o ; 3789 objv [3] = -> i_p_eid ; 3790 objv [4] = eid_o ; 3791 objv [5] = ags_o ; 3792 objv [6] = l_o ; 3800 igobj = `T_GObjResu ( ); 3801 `T_InRefCou ( igobj ); 3802 su = `T_EvObjv ( , TCLDB_SENDITEMS , objv , 0); 3803 i( su ! TCL_OK ) { 3810 r : `__db_rx ( dbv -> v , 3811 "T_nd fau: %s", `T_GSgResu ( )); 3812 ( EINVAL ); 3815 sobj = `T_GObjResu ( ); 3816 su = `T_GIFromObj ( , sobj , & t ); 3817 i( su ! TCL_OK ) 3818 r ; 3820 `T_SObjResu ( , igobj ); 3821 `T_DeRefCou ( igobj ); 3822 `T_DeRefCou ( cڌ_o ); 3823 `T_DeRefCou ( c_o ); 3824 `T_DeRefCou ( eid_o ); 3825 i = 0; i < myobjc ; i++) 3826 `T_DeRefCou ( myobjv [ i ]); 3827 `T_DeRefCou ( ags_o ); 3828 `T_DeRefCou ( lobj [0]); 3829 `T_DeRefCou ( lobj [1]); 3830 `T_DeRefCou ( l_o ); 3832 ( t ); 3833 } } 3836 #ifde CONFIG_TEST 3844 $t_db_mloc ( size ) 3845 size_t size ; 3847 T_Obj * obj ; 3848 * buf ; 3850 obj = `T_NewObj (); 3851 i( obj = NULL ) 3852 ( NULL ); 3853 `T_InRefCou ( obj ); 3855 `T_SObjLgth ( obj , ()( size + ( T_Obj *))); 3856 buf = `T_GSg ( obj ); 3857 `memy ( buf , & obj , (&obj)); 3859 buf = ( T_Obj **)buf + 1; 3860 ( buf ); 3861 } } 3864 $t_db_loc ( r , size ) 3865 * r ; 3866 size_t size ; 3868 T_Obj * obj ; 3870 i( r = NULL ) 3871 ( `t_db_mloc ( size )); 3873 obj = *( T_Obj **)((T_Obj **) r - 1); 3874 `T_SObjLgth ( obj , ()( size + ( T_Obj *))); 3876 r = `T_GSg ( obj ); 3877 `memy ( r , & obj , (&obj)); 3879 r = ( T_Obj **)ptr + 1; 3880 ( r ); 3881 } } 3884 $t_db_ ( r ) 3885 * r ; 3887 T_Obj * obj ; 3889 obj = *( T_Obj **)((T_Obj **) r - 1); 3890 `T_DeRefCou ( obj ); 3891 } } @../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 -> v , key . da ); 843 i( key . da ! NULL && `F_ISSET (&key, DB_DBT_USERMEM )) 844 `__os_ ( dbc -> v , key . da ); 845 i( da .d! NULL && `F_ISSET (&da, DB_DBT_MALLOC )) 846 `__os_u ( dbc -> v , da .data); 847 i( da .d! NULL && `F_ISSET (&da, DB_DBT_USERMEM )) 848 `__os_ ( dbc -> v , da .data); 849 i( pda . da ! NULL && `F_ISSET (&pda, DB_DBT_MALLOC )) 850 `__os_u ( dbc -> v , 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 139 NULL 141 evcmds { 142 #ifde CONFIG_TEST 143 ENVATTR , 144 ENVERRFILE , 145 ENVERRPFX , 146 ENVEVENT , 147 ENVIDRESET , 148 ENVLKDETECT , 149 ENVLKID , 150 ENVLKFREEID , 151 ENVLKSETID , 152 ENVLKGET , 153 ENVLKSTAT , 154 ENVLKTIMEOUT , 155 ENVLKVEC , 156 ENVLOGARCH , 157 ENVLOGCMP , 158 ENVLOGCONFIG , 159 ENVLOGCURSOR , 160 ENVLOGFILE , 161 ENVLOGFLUSH , 162 ENVLOGGET , 163 ENVLOGGETCONFIG , 164 ENVLOGPUT , 165 ENVLOGSTAT , 166 ENVLSNRESET , 167 ENVMP , 168 ENVMPSTAT , 169 ENVMPSYNC , 170 ENVTRICKLE , 171 ENVREPCONFIG , 172 ENVREPELECT , 173 ENVREPFLUSH , 174 ENVREPGETCLOCKSKEW , 175 ENVREPGETCONFIG , 176 ENVREPGETLIMIT , 177 ENVREPGETNSITES , 178 ENVREPGETREQUEST , 179 ENVREPGETTIMEOUT , 180 ENVREPLEASE , 181 ENVREPLIMIT , 182 ENVREPPROCMESS , 183 ENVREPREQUEST , 184 ENVREPSTART , 185 ENVREPSTAT , 186 ENVREPSYNC , 187 ENVREPTRANSPORT , 188 ENVREPMGR , 189 ENVREPMGRSTAT , 190 ENVRPCID , 191 ENVSETFLAGS , 192 ENVTEST , 193 ENVTXNSETID , 194 ENVTXNRECOVER , 195 ENVTXNSTAT , 196 ENVTXNTIMEOUT , 197 ENVVERB , 199 ENVCDSGROUP , 200 ENVCLOSE , 201 ENVDBREMOVE , 202 ENVDBRENAME , 203 ENVGETCACHESIZE , 204 ENVGETCACHEMAX , 205 ENVGETDATADIRS , 206 ENVGETENCRYPTFLAGS , 207 ENVGETERRPFX , 208 ENVGETFLAGS , 209 ENVGETHOME , 210 ENVGETLGBSIZE , 211 ENVGETLGDIR , 212 ENVGETLGFILEMODE , 213 ENVGETLGMAX , 214 ENVGETLGREGIONMAX , 215 ENVGETLKDETECT , 216 ENVGETLKMAXLOCKERS , 217 ENVGETLKMAXLOCKS , 218 ENVGETLKMAXOBJECTS , 219 ENVGETMPMAXOPENFD , 220 ENVGETMPMAXWRITE , 221 ENVGETMPMMAPSIZE , 222 ENVGETOPENFLAG , 223 ENVGETSHMKEY , 224 ENVGETTASSPINS , 225 ENVGETTIMEOUT , 226 ENVGETTMPDIR , 227 ENVGETTXMAX , 228 ENVGETTXTIMESTAMP , 229 ENVGETVERBOSE , 230 ENVRESIZECACHE , 231 ENVSETDATADIR , 232 ENVTXN , 233 ENVTXNCKP 235 DBTCL_INFO * v ; 236 DB_ENV * dbv ; 237 T_Obj ** liobjv , * myobjv [3], * s ; 238 db_timeout_t timeout ; 239 size_t size ; 240 time_t timev ; 241 u_t32_t bys , gbys , vue ; 242 shm_key ; 243 cmddex , i , tvue , liobjc , nche , su , t ; 244 cڡ * rv , ** ds ; 245 * rg , wme [ MSG_SIZE ]; 246 #ifde CONFIG_TEST 247 DBTCL_INFO * logc ; 248 DB_LOGC * logc ; 249 u_t32_t lockid ; 250 wv , hv ; 253 `T_RetResu ( ); 254 dbv = ( DB_ENV *) Da ; 255 v = `_PToInfo ((*) dbv ); 256 su = TCL_OK ; 257 `memt ( wme , 0, MSG_SIZE ); 259 i( objc <= 1) { 260 `T_WrgNumArgs ( , 1, objv , "command cmdargs"); 261 ( TCL_ERROR ); 263 i( dbv = NULL ) { 264 `T_SResu ( , "NULLnvor", TCL_STATIC ); 265 ( TCL_ERROR ); 267 i( v = NULL ) { 268 `T_SResu ( , "NULLnv infpor", TCL_STATIC ); 269 ( TCL_ERROR ); 276 i( `T_GIndexFromObj ( , objv [1], vcmds , "command", 277 TCL_EXACT , & cmddex ! TCL_OK ) 278 ( `IS_HELP ( objv [1])); 279 s = NULL ; 280 ( vcmds ) cmddex ) { 281 #ifde CONFIG_TEST 282 ENVEVENT : 286 i( objc != 3) { 287 `T_WrgNumArgs ( , 2, objv , NULL ); 288 ( TCL_ERROR ); 290 su = `t_EvtNify ( , dbv , objv [2], v ); 292 ENVIDRESET : 293 su = `t_EnvIdRet ( , objc , objv , dbv ); 295 ENVLSNRESET : 296 su = `t_EnvLRet ( , objc , objv , dbv ); 298 ENVLKDETECT : 299 su = `t_LockDe ( , objc , objv , dbv ); 301 ENVLKSTAT : 302 su = `t_LockSt ( , objc , objv , dbv ); 304 ENVLKTIMEOUT : 305 su = `t_LockTimeout ( , objc , objv , dbv ); 307 ENVLKID : 311 i( objc > 2) { 312 `T_WrgNumArgs ( , 2, objv , NULL ); 313 ( TCL_ERROR ); 315 `_debug_check (); 316 t = dbv -> `lock_id (dbv, & lockid ); 317 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 319 i( su = TCL_OK ) 320 s = `T_NewWideIObj (( T_WideI ) lockid ); 322 ENVLKFREEID : 323 i( objc != 3) { 324 `T_WrgNumArgs ( , 3, objv , NULL ); 325 ( TCL_ERROR ); 327 su = `T_GLgFromObj ( , objv [2], & wv ); 328 i( su ! TCL_OK ) 329 ( su ); 330 t = dbv -> `lock_id_ (dbv, ( u_t32_t ) wv ); 331 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 334 ENVLKSETID : 335 i( objc != 4) { 336 `T_WrgNumArgs ( , 4, objv , "current max"); 337 ( TCL_ERROR ); 339 su = `T_GLgFromObj ( , objv [2], & wv ); 340 i( su ! TCL_OK ) 341 ( su ); 342 su = `T_GLgFromObj ( , objv [3], & hv ); 343 i( su ! TCL_OK ) 344 ( su ); 345 t = `__lock_id_t ( dbv -> v , 346 ( u_t32_t ) wv , (u_t32_t) hv ); 347 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 350 ENVLKGET : 351 su = `t_LockG ( , objc , objv , dbv ); 353 ENVLKVEC : 354 su = `t_LockVec ( , objc , objv , dbv ); 356 ENVLOGARCH : 357 su = `t_LogArchive ( , objc , objv , dbv ); 359 ENVLOGCMP : 360 su = `t_LogCom ( , objc , objv ); 362 ENVLOGCONFIG : 366 i( objc != 3) { 367 `T_WrgNumArgs ( , 2, objv , NULL ); 368 ( TCL_ERROR ); 370 su = `t_LogCfig ( , dbv , objv [2]); 372 ENVLOGCURSOR : 373 `tf ( wme , (newname), 374 "%s.logc%d", v -> i_me ,nv-> i_vlogcid ); 375 logc = `_NewInfo ( , NULL , wme , I_LOGC ); 376 i( logc ! NULL ) { 377 t = dbv -> `log_curs (dbv, & logc , 0); 378 i( t == 0) { 379 su = TCL_OK ; 380 v -> i_vlogcid ++; 387 () `T_CeObjCommd ( , wme , 388 ( T_ObjCmdProc *) logc_Cmd , 389 ( ClDa ) logc , NULL ); 390 s = `NewSgObj ( wme , ` (newname)); 391 `_SInfoDa ( logc , logc ); 393 `_DeInfo ( logc ); 394 su = `_ESup ( , t , "log cursor"); 397 `T_SResu ( , 398 "Could s ufo", TCL_STATIC ); 399 su = TCL_ERROR ; 402 ENVLOGFILE : 403 su = `t_LogFe ( , objc , objv , dbv ); 405 ENVLOGFLUSH : 406 su = `t_LogFlush ( , objc , objv , dbv ); 408 ENVLOGGET : 409 su = `t_LogG ( , objc , objv , dbv ); 411 ENVLOGGETCONFIG : 415 i( objc != 3) { 416 `T_WrgNumArgs ( , 2, objv , NULL ); 417 ( TCL_ERROR ); 419 su = `t_LogGCfig ( , dbv , objv [2]); 421 ENVLOGPUT : 422 su = `t_LogPut ( , objc , objv , dbv ); 424 ENVLOGSTAT : 425 su = `t_LogSt ( , objc , objv , dbv ); 427 ENVMPSTAT : 428 su = `t_MpSt ( , objc , objv , dbv ); 430 ENVMPSYNC : 431 su = `t_MpSync ( , objc , objv , dbv ); 433 ENVTRICKLE : 434 su = `t_MpTrick ( , objc , objv , dbv ); 436 ENVMP : 437 su = `t_Mp ( , objc , objv , dbv , v ); 439 ENVREPCONFIG : 443 i( objc != 3) { 444 `T_WrgNumArgs ( , 2, objv , NULL ); 445 ( TCL_ERROR ); 447 su = `t_RCfig ( , dbv , objv [2]); 449 ENVREPELECT : 450 su = `t_RE ( , objc , objv , dbv ); 452 ENVREPFLUSH : 453 su = `t_RFlush ( , objc , objv , dbv ); 455 ENVREPGETCLOCKSKEW : 456 su = `t_RGTwo ( , dbv , DBTCL_GETCLOCK ); 458 ENVREPGETCONFIG : 462 i( objc != 3) { 463 `T_WrgNumArgs ( , 2, objv , NULL ); 464 ( TCL_ERROR ); 466 su = `t_RGCfig ( , dbv , objv [2]); 468 ENVREPGETLIMIT : 469 su = `t_RGTwo ( , dbv , DBTCL_GETLIMIT ); 471 ENVREPGETNSITES : 472 i( objc != 2) { 473 `T_WrgNumArgs ( , 1, objv , NULL ); 474 ( TCL_ERROR ); 476 t = dbv -> `p_g_nses (dbv, & vue ); 477 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 478 "v_g_nses")= TCL_OK ) 479 s = `T_NewLgObj (() vue ); 481 ENVREPGETREQUEST : 482 su = `t_RGTwo ( , dbv , DBTCL_GETREQ ); 484 ENVREPGETTIMEOUT : 488 i( objc != 3) { 489 `T_WrgNumArgs ( , 2, objv , NULL ); 490 ( TCL_ERROR ); 492 su = `t_RGTimeout ( , dbv , objv [2]); 494 ENVREPLEASE : 495 i( objc != 3) { 496 `T_WrgNumArgs ( , 2, objv , NULL ); 497 ( TCL_ERROR ); 499 su = `T_LiObjGEmts ( , objv [2], 500 & liobjc , & liobjv ); 501 i( su = TCL_OK ) 502 su = `t_RL ( , 503 liobjc , liobjv , dbv ); 505 ENVREPLIMIT : 506 su = `t_RLim ( , objc , objv , dbv ); 508 ENVREPPROCMESS : 509 su = `t_RProssMesge ( , objc , objv , dbv ); 511 ENVREPREQUEST : 512 su = `t_RReque ( , objc , objv , dbv ); 514 ENVREPSTART : 515 su = `t_RS ( , objc , objv , dbv ); 517 ENVREPSTAT : 518 su = `t_RSt ( , objc , objv , dbv ); 520 ENVREPSYNC : 521 su = `t_RSync ( , objc , objv , dbv ); 523 ENVREPTRANSPORT : 524 i( objc != 3) { 525 `T_WrgNumArgs ( , 2, objv , NULL ); 526 ( TCL_ERROR ); 528 su = `T_LiObjGEmts ( , objv [2], 529 & liobjc , & liobjv ); 530 i( su = TCL_OK ) 531 su = `t_RTnt ( , 532 liobjc , liobjv , dbv , v ); 534 ENVREPMGR : 535 su = `t_RMgr ( , objc , objv , dbv ); 537 ENVREPMGRSTAT : 538 su = `t_RMgrSt ( , objc , objv , dbv ); 540 ENVRPCID : 544 i( objc > 2) { 545 `T_WrgNumArgs ( , 2, objv , NULL ); 546 ( TCL_ERROR ); 552 s = `T_NewLgObj (() dbv -> _id ); 554 ENVTXNSETID : 555 i( objc != 4) { 556 `T_WrgNumArgs ( , 4, objv , "current max"); 557 ( TCL_ERROR ); 559 su = `T_GLgFromObj ( , objv [2], & wv ); 560 i( su ! TCL_OK ) 561 ( su ); 562 su = `T_GLgFromObj ( , objv [3], & hv ); 563 i( su ! TCL_OK ) 564 ( su ); 565 t = `__txn_id_t ( dbv -> v , 566 ( u_t32_t ) wv , (u_t32_t) hv ); 567 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 570 ENVTXNRECOVER : 571 su = `t_TxnRecov ( , objc , objv , dbv , v ); 573 ENVTXNSTAT : 574 su = `t_TxnSt ( , objc , objv , dbv ); 576 ENVTXNTIMEOUT : 577 su = `t_TxnTimeout ( , objc , objv , dbv ); 579 ENVATTR : 580 su = `t_EnvAr ( , objc , objv , dbv ); 582 ENVERRFILE : 586 i( objc != 3) { 587 `T_WrgNumArgs ( , 2, objv , "errfile"); 588 ( TCL_ERROR ); 590 rg = `T_GSgFromObj ( objv [2], NULL ); 591 `t_EnvSEfe ( , dbv , v , rg ); 592 su = TCL_OK ; 594 ENVERRPFX : 598 i( objc != 3) { 599 `T_WrgNumArgs ( , 2, objv , "pfx"); 600 ( TCL_ERROR ); 602 rg = `T_GSgFromObj ( objv [2], NULL ); 603 su = `t_EnvSEpfx ( , dbv , v , rg ); 605 ENVSETFLAGS : 609 i( objc != 4) { 610 `T_WrgNumArgs ( , 2, objv , "which on|off"); 611 ( TCL_ERROR ); 613 su = `t_EnvSFgs ( , dbv , objv [2], objv[3]); 615 ENVTEST : 616 su = `t_EnvTe ( , objc , objv , dbv ); 618 ENVVERB : 622 i( objc != 4) { 623 `T_WrgNumArgs ( , 2, objv , NULL ); 624 ( TCL_ERROR ); 626 su = `t_EnvVbo ( , dbv , objv [2], objv[3]); 629 ENVCDSGROUP : 630 su = `t_CDSGroup ( , objc , objv , dbv , v ); 632 ENVCLOSE : 636 i( objc > 2) { 637 `T_WrgNumArgs ( , 2, objv , NULL ); 638 ( TCL_ERROR ); 648 `_debug_check (); 649 t = dbv -> `o (dbenv, 0); 650 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 652 `_EnvInfoDe ( , v ); 653 v = NULL ; 655 ENVDBREMOVE : 656 su = `v_DbRemove ( , objc , objv , dbv ); 658 ENVDBRENAME : 659 su = `v_DbRame ( , objc , objv , dbv ); 661 ENVGETCACHESIZE : 662 i( objc != 2) { 663 `T_WrgNumArgs ( , 1, objv , NULL ); 664 ( TCL_ERROR ); 666 t = dbv -> `g_chesize (dbv, & gbys , & bys , & nche ); 667 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 668 "v g_chesize")= TCL_OK ) { 669 myobjv [0] = `T_NewLgObj (() gbys ); 670 myobjv [1] = `T_NewLgObj (() bys ); 671 myobjv [2] = `T_NewLgObj (() nche ); 672 s = `T_NewLiObj (3, myobjv ); 675 ENVGETCACHEMAX : 676 i( objc != 2) { 677 `T_WrgNumArgs ( , 1, objv , NULL ); 678 ( TCL_ERROR ); 680 t = dbv -> `g_che_max (dbv, & gbys , & bys ); 681 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 682 "v g_che_max")= TCL_OK ) { 683 myobjv [0] = `T_NewLgObj (() gbys ); 684 myobjv [1] = `T_NewLgObj (() bys ); 685 s = `T_NewLiObj (2, myobjv ); 688 ENVGETDATADIRS : 689 i( objc != 2) { 690 `T_WrgNumArgs ( , 1, objv , NULL ); 691 ( TCL_ERROR ); 693 t = dbv -> `g_da_ds (dbv, & ds ); 694 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 695 "v g_da_ds")= TCL_OK ) { 696 s = `T_NewLiObj (0, NULL ); 697 i = 0; su = TCL_OK && ds [i] ! NULL ; i++) 698 su = `T_LiObjAdEmt ( , s , 699 `NewSgObj ( ds [ i ], ` (dirs[i]))); 702 ENVGETENCRYPTFLAGS : 703 su = `t_EnvGEnyFgs ( , objc , objv , dbv ); 705 ENVGETERRPFX : 706 i( objc != 2) { 707 `T_WrgNumArgs ( , 1, objv , NULL ); 708 ( TCL_ERROR ); 710 dbv -> `g_fx (dbv, & rv ); 711 s = `NewSgObj ( rv , ` (strval)); 713 ENVGETFLAGS : 714 su = `v_GFgs ( , objc , objv , dbv ); 716 ENVGETHOME : 717 i( objc != 2) { 718 `T_WrgNumArgs ( , 1, objv , NULL ); 719 ( TCL_ERROR ); 721 t = dbv -> `g_home (dbv, & rv ); 722 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 723 "v g_home")= TCL_OK ) 724 s = `NewSgObj ( rv , ` (strval)); 726 ENVGETLGBSIZE : 727 i( objc != 2) { 728 `T_WrgNumArgs ( , 1, objv , NULL ); 729 ( TCL_ERROR ); 731 t = dbv -> `g_lg_bsize (dbv, & vue ); 732 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 733 "v g_lg_bsize")= TCL_OK ) 734 s = `T_NewLgObj (() vue ); 736 ENVGETLGDIR : 737 i( objc != 2) { 738 `T_WrgNumArgs ( , 1, objv , NULL ); 739 ( TCL_ERROR ); 741 t = dbv -> `g_lg_d (dbv, & rv ); 742 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 743 "v g_lg_d")= TCL_OK ) 744 s = `NewSgObj ( rv , ` (strval)); 746 ENVGETLGFILEMODE : 747 i( objc != 2) { 748 `T_WrgNumArgs ( , 1, objv , NULL ); 749 ( TCL_ERROR ); 751 t = dbv -> `g_lg_femode (dbv, & tvue ); 752 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 753 "v g_lg_femode")= TCL_OK ) 754 s = `T_NewLgObj (() tvue ); 756 ENVGETLGMAX : 757 i( objc != 2) { 758 `T_WrgNumArgs ( , 1, objv , NULL ); 759 ( TCL_ERROR ); 761 t = dbv -> `g_lg_max (dbv, & vue ); 762 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 763 "v g_lg_max")= TCL_OK ) 764 s = `T_NewLgObj (() vue ); 766 ENVGETLGREGIONMAX : 767 i( objc != 2) { 768 `T_WrgNumArgs ( , 1, objv , NULL ); 769 ( TCL_ERROR ); 771 t = dbv -> `g_lg_gimax (dbv, & vue ); 772 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 773 "v g_lg_gimax")= TCL_OK ) 774 s = `T_NewLgObj (() vue ); 776 ENVGETLKDETECT : 777 su = `v_GLockDe ( , objc , objv , dbv ); 779 ENVGETLKMAXLOCKERS : 780 i( objc != 2) { 781 `T_WrgNumArgs ( , 1, objv , NULL ); 782 ( TCL_ERROR ); 784 t = dbv -> `g_lk_max_locks (dbv, & vue ); 785 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 786 "v g_lk_max_locks")= TCL_OK ) 787 s = `T_NewLgObj (() vue ); 789 ENVGETLKMAXLOCKS : 790 i( objc != 2) { 791 `T_WrgNumArgs ( , 1, objv , NULL ); 792 ( TCL_ERROR ); 794 t = dbv -> `g_lk_max_locks (dbv, & vue ); 795 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 796 "v g_lk_max_locks")= TCL_OK ) 797 s = `T_NewLgObj (() vue ); 799 ENVGETLKMAXOBJECTS : 800 i( objc != 2) { 801 `T_WrgNumArgs ( , 1, objv , NULL ); 802 ( TCL_ERROR ); 804 t = dbv -> `g_lk_max_objes (dbv, & vue ); 805 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 806 "v g_lk_max_objes")= TCL_OK ) 807 s = `T_NewLgObj (() vue ); 809 ENVGETMPMAXOPENFD : 810 i( objc != 2) { 811 `T_WrgNumArgs ( , 1, objv , NULL ); 812 ( TCL_ERROR ); 814 t = dbv -> `g_mp_max_ݒfd (dbv, & tvue ); 815 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 816 "v g_mp_max_ݒfd")= TCL_OK ) 817 s = `T_NewIObj ( tvue ); 819 ENVGETMPMAXWRITE : 820 i( objc != 2) { 821 `T_WrgNumArgs ( , 1, objv , NULL ); 822 ( TCL_ERROR ); 824 t = dbv -> `g_mp_max_wre (dbv, & tvue , & timeout ); 825 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 826 "v g_mp_max_wre")= TCL_OK ) { 827 myobjv [0] = `T_NewIObj ( tvue ); 828 myobjv [1] = `T_NewIObj (() timeout ); 829 s = `T_NewLiObj (2, myobjv ); 832 ENVGETMPMMAPSIZE : 833 i( objc != 2) { 834 `T_WrgNumArgs ( , 1, objv , NULL ); 835 ( TCL_ERROR ); 837 t = dbv -> `g_mp_mmsize (dbv, & size ); 838 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 839 "v g_mp_mmsize")= TCL_OK ) 840 s = `T_NewLgObj (() size ); 842 ENVGETOPENFLAG : 843 su = `v_GOnFg ( , objc , objv , dbv ); 845 ENVGETSHMKEY : 846 i( objc != 2) { 847 `T_WrgNumArgs ( , 1, objv , NULL ); 848 ( TCL_ERROR ); 850 t = dbv -> `g_shm_key (dbv, & shm_key ); 851 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 852 "v shm_key")= TCL_OK ) 853 s = `T_NewLgObj ( shm_key ); 855 ENVGETTASSPINS : 856 i( objc != 2) { 857 `T_WrgNumArgs ( , 1, objv , NULL ); 858 ( TCL_ERROR ); 860 t = dbv -> `mux_g_s_s (dbv, & vue ); 861 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 862 "v g_s_s")= TCL_OK ) 863 s = `T_NewLgObj (() vue ); 865 ENVGETTIMEOUT : 866 su = `v_GTimeout ( , objc , objv , dbv ); 868 ENVGETTMPDIR : 869 i( objc != 2) { 870 `T_WrgNumArgs ( , 1, objv , NULL ); 871 ( TCL_ERROR ); 873 t = dbv -> `g_tmp_d (dbv, & rv ); 874 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 875 "v g_tmp_d")= TCL_OK ) 876 s = `NewSgObj ( rv , ` (strval)); 878 ENVGETTXMAX : 879 i( objc != 2) { 880 `T_WrgNumArgs ( , 1, objv , NULL ); 881 ( TCL_ERROR ); 883 t = dbv -> `g_tx_max (dbv, & vue ); 884 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 885 "v g_tx_max")= TCL_OK ) 886 s = `T_NewLgObj (() vue ); 888 ENVGETTXTIMESTAMP : 889 i( objc != 2) { 890 `T_WrgNumArgs ( , 1, objv , NULL ); 891 ( TCL_ERROR ); 893 t = dbv -> `g_tx_timeamp (dbv, & timev ); 894 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 895 "v g_tx_timeamp")= TCL_OK ) 896 s = `T_NewLgObj (() timev ); 898 ENVGETVERBOSE : 899 su = `v_GVbo ( , objc , objv , dbv ); 901 ENVRESIZECACHE : 902 i(( su = `T_LiObjGEmts ( 903 , objv [2], & liobjc , & liobjv )! TCL_OK ) 905 i( objc !3 || liobjc != 2) { 906 `T_WrgNumArgs ( , 2, objv , 908 su = TCL_ERROR ; 911 su = `_GUI32 ( , liobjv [0], & gbys ); 912 i( su ! TCL_OK ) 914 su = `_GUI32 ( , liobjv [1], & bys ); 915 i( su ! TCL_OK ) 917 t = dbv -> `t_chesize (dbv, gbys , bys , 0); 918 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 921 ENVSETDATADIR : 925 i( objc != 3) { 926 `T_WrgNumArgs ( , 2, objv , "pfx"); 927 ( TCL_ERROR ); 929 rg = `T_GSgFromObj ( objv [2], NULL ); 930 t = dbv -> `t_da_d (dbv, rg ); 931 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 933 ENVTXN : 934 su = `t_Txn ( , objc , objv , dbv , v ); 936 ENVTXNCKP : 937 su = `t_TxnCheckpot ( , objc , objv , dbv ); 944 i( su = TCL_OK && s ) 945 `T_SObjResu ( , s ); 946 ( su ); 947 } } 956 $t_EnvRemove ( , objc , objv , dbv , v ) 957 T_Ip * ; 958 objc ; 959 T_Obj * CONST objv []; 960 DB_ENV * dbv ; 961 DBTCL_INFO * v ; 963 cڡ * vmts [] = { 964 #ifde CONFIG_TEST 977 NULL 979 evmts { 980 #ifde CONFIG_TEST 981 ENVREM_OVERWRITE , 982 ENVREM_SERVER , 984 ENVREM_DATADIR , 985 ENVREM_ENCRYPT_AES , 986 ENVREM_ENCRYPT_ANY , 987 ENVREM_FORCE , 988 ENVREM_HOME , 989 ENVREM_LOGDIR , 990 ENVREM_TMPDIR , 991 ENVREM_USE_ENVIRON , 992 ENVREM_USE_ENVIRON_ROOT 994 u_t32_t cag , c_ag , ag , fag , sag ; 995 i , tdex , su , t ; 996 * dad , * home , * logd , * sswd , * rv , * tmpd ; 998 su = TCL_OK ; 999 cag = ag = fag = sag = 0; 1000 home = NULL ; 1001 sswd = NULL ; 1002 dad = logd = tmpd = NULL ; 1003 rv = NULL ; 1004 c_ag = 0; 1006 i( objc < 2) { 1007 `T_WrgNumArgs ( , 2, objv , "?args?"); 1008 ( TCL_ERROR ); 1011 i = 2; 1012 i < objc ) { 1013 i( `T_GIndexFromObj ( , objv [ i ], vmts , "option", 1014 TCL_EXACT , & tdex ! TCL_OK ) { 1015 su = `IS_HELP ( objv [ i ]); 1016 r ; 1018 i ++; 1019 ( vmts ) tdex ) { 1020 #ifde CONFIG_TEST 1021 ENVREM_SERVER : 1023 i( i > objc ) { 1024 `T_WrgNumArgs ( , 2, objv , 1026 su = TCL_ERROR ; 1029 rv = `T_GSgFromObj ( objv [ i ++], NULL ); 1030 cag = DB_RPCCLIENT ; 1033 ENVREM_ENCRYPT_AES : 1035 i( i > objc ) { 1036 `T_WrgNumArgs ( , 2, objv , 1038 su = TCL_ERROR ; 1041 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1042 c_ag = DB_ENCRYPT_AES ; 1044 ENVREM_ENCRYPT_ANY : 1046 i( i > objc ) { 1047 `T_WrgNumArgs ( , 2, objv , 1049 su = TCL_ERROR ; 1052 sswd = `T_GSgFromObj ( objv [ i ++], NULL ); 1053 c_ag = 0; 1055 ENVREM_FORCE : 1056 fag | DB_FORCE ; 1058 ENVREM_HOME : 1060 i( i > objc ) { 1061 `T_WrgNumArgs ( , 2, objv , 1063 su = TCL_ERROR ; 1066 home = `T_GSgFromObj ( objv [ i ++], NULL ); 1068 #ifde CONFIG_TEST 1069 ENVREM_OVERWRITE : 1070 sag | DB_OVERWRITE ; 1073 ENVREM_USE_ENVIRON : 1074 ag | DB_USE_ENVIRON ; 1076 ENVREM_USE_ENVIRON_ROOT : 1077 ag | DB_USE_ENVIRON_ROOT ; 1079 ENVREM_DATADIR : 1080 i( i > objc ) { 1081 `T_WrgNumArgs ( , 2, objv , 1083 su = TCL_ERROR ; 1086 dad = `T_GSgFromObj ( objv [ i ++], NULL ); 1088 ENVREM_LOGDIR : 1089 i( i > objc ) { 1090 `T_WrgNumArgs ( , 2, objv , 1092 su = TCL_ERROR ; 1095 logd = `T_GSgFromObj ( objv [ i ++], NULL ); 1097 ENVREM_TMPDIR : 1098 i( i > objc ) { 1099 `T_WrgNumArgs ( , 2, objv , 1101 su = TCL_ERROR ; 1104 tmpd = `T_GSgFromObj ( objv [ i ++], NULL ); 1111 i( su ! TCL_OK ) 1112 r ; 1119 i( dbv = NULL ) { 1120 i(( t = `db_v_ (& dbv , cag )) != 0) { 1121 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1123 r ; 1125 i( rv ! NULL ) { 1126 `_debug_check (); 1127 t = dbv -> `t_c_rv ( 1128 dbv , NULL , rv , 0, 0, 0); 1129 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1131 i( su ! TCL_OK ) 1132 r ; 1134 i( dad ! NULL ) { 1135 `_debug_check (); 1136 t = dbv -> `t_da_d (dbv, dad ); 1137 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1139 i( su ! TCL_OK ) 1140 r ; 1142 i( logd ! NULL ) { 1143 `_debug_check (); 1144 t = dbv -> `t_lg_d (dbv, logd ); 1145 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1147 i( su ! TCL_OK ) 1148 r ; 1150 i( tmpd ! NULL ) { 1151 `_debug_check (); 1152 t = dbv -> `t_tmp_d (dbv, tmpd ); 1153 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1155 i( su ! TCL_OK ) 1156 r ; 1158 i( sswd ! NULL ) { 1159 t = dbv -> `t_y (dbv, sswd , c_ag ); 1160 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1163 i( sag != 0 && 1164 ( t = dbv -> `t_ags (dbv, sag , 1)) != 0) { 1165 `_debug_check (); 1166 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1168 i( su ! TCL_OK ) 1169 r ; 1171 dbv -> `t_fx (dbenv, "EnvRemove"); 1172 dbv -> `t_r (dbv, _EFunc ); 1179 `_EnvInfoDe ( , v ); 1180 v = NULL ; 1183 ag | fag ; 1188 `_debug_check (); 1189 t = dbv -> `move (dbv, home , ag ); 1190 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "envemove"); 1191 r : 1192 ( su ); 1193 } } 1196 $_EnvInfoDe ( , v ) 1197 T_Ip * ; 1198 DBTCL_INFO * v ; 1200 DBTCL_INFO * x , * p ; 1210 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 1222 i( p -> i_ = v ) { 1223 p -> i_ty ) { 1224 I_TXN : 1225 `_TxnInfoDe ( , p ); 1227 I_MP : 1228 `_MpInfoDe ( , p ); 1230 I_DB : 1231 I_DBC : 1232 I_ENV : 1233 I_LOCK : 1234 I_LOGC : 1235 I_NDBM : 1236 I_PG : 1237 I_SEQ : 1238 `T_SResu ( , 1240 TCL_STATIC ); 1243 x = `LIST_NEXT ( p , s ); 1244 () `T_DeCommd ( , p -> i_me ); 1245 `_DeInfo ( p ); 1247 x = `LIST_NEXT ( p , s ); 1249 () `T_DeCommd ( , v -> i_me ); 1250 `_DeInfo ( v ); 1251 } } 1253 #ifde CONFIG_TEST 1262 $t_EnvIdRet ( , objc , objv , dbv ) 1263 T_Ip * ; 1264 objc ; 1265 T_Obj * CONST * objv ; 1266 DB_ENV * dbv ; 1268 cڡ * idwhich [] = { 1270 NULL 1272 eidwhich { 1273 IDENCRYPT 1275 c , i , su , t ; 1276 u_t32_t ags ; 1277 * fe ; 1279 su = TCL_OK ; 1280 ags = 0; 1281 i = 2; 1282 `T_SResu ( , "0", TCL_STATIC ); 1283 i( objc < 3) { 1284 `T_WrgNumArgs ( , 2, objv , "?-encrypt? filename"); 1285 ( TCL_ERROR ); 1286 } i( objc > 3) { 1290 i( `T_GIndexFromObj ( , objv [2], idwhich , "option", 1291 TCL_EXACT , & c ! TCL_OK ) 1292 ( `IS_HELP ( objv [2])); 1293 ( idwhich ) c ) { 1294 IDENCRYPT : 1295 ags | DB_ENCRYPT ; 1298 i = 3; 1300 fe = `T_GSgFromObj ( objv [ i ], NULL ); 1301 t = dbv -> `feid_t (dbv, fe , ags ); 1302 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "fileideset"); 1303 ( su ); 1304 } } 1314 $t_EnvLRet ( , objc , objv , dbv ) 1315 T_Ip * ; 1316 objc ; 1317 T_Obj * CONST * objv ; 1318 DB_ENV * dbv ; 1320 cڡ * lwhich [] = { 1322 NULL 1324 elwhich { 1325 IDENCRYPT 1327 c , i , su , t ; 1328 u_t32_t ags ; 1329 * fe ; 1331 su = TCL_OK ; 1332 ags = 0; 1333 i = 2; 1334 `T_SResu ( , "0", TCL_STATIC ); 1335 i( objc < 3) { 1336 `T_WrgNumArgs ( , 2, objv , "?-encrypt? filename"); 1337 ( TCL_ERROR ); 1338 } i( objc > 3) { 1342 i( `T_GIndexFromObj ( , objv [2], lwhich , "option", 1343 TCL_EXACT , & c ! TCL_OK ) 1344 ( `IS_HELP ( objv [2])); 1346 ( lwhich ) c ) { 1347 IDENCRYPT : 1348 ags | DB_ENCRYPT ; 1351 i = 3; 1353 fe = `T_GSgFromObj ( objv [ i ], NULL ); 1354 t = dbv -> `l_t (dbv, fe , ags ); 1355 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lsneset"); 1356 ( su ); 1357 } } 1366 $t_EnvVbo ( , dbv , which , off ) 1367 T_Ip * ; 1368 DB_ENV * dbv ; 1369 T_Obj * which ; 1370 T_Obj * off ; 1372 cڡ * vbwhich [] = { 1387 NULL 1389 evbwhich { 1390 ENVVERB_DEADLOCK , 1391 ENVVERB_FILEOPS , 1392 ENVVERB_FILEOPS_ALL , 1393 ENVVERB_RECOVERY , 1394 ENVVERB_REGISTER , 1395 ENVVERB_REPLICATION , 1396 ENVVERB_REP_ELECT , 1397 ENVVERB_REP_LEASE , 1398 ENVVERB_REP_MISC , 1399 ENVVERB_REP_MSGS , 1400 ENVVERB_REP_SYNC , 1401 ENVVERB_REPMGR_CONNFAIL , 1402 ENVVERB_REPMGR_MISC , 1403 ENVVERB_WAITSFOR 1405 cڡ * vboff [] = { 1408 NULL 1410 evboff { 1411 ENVVERB_OFF , 1412 ENVVERB_ON 1414 , tdex , t ; 1415 u_t32_t wh ; 1417 i( `T_GIndexFromObj ( , which , vbwhich , "option", 1418 TCL_EXACT , & tdex ! TCL_OK ) 1419 ( `IS_HELP ( which )); 1421 ( vbwhich ) tdex ) { 1422 ENVVERB_DEADLOCK : 1423 wh = DB_VERB_DEADLOCK ; 1425 ENVVERB_FILEOPS : 1426 wh = DB_VERB_FILEOPS ; 1428 ENVVERB_FILEOPS_ALL : 1429 wh = DB_VERB_FILEOPS_ALL ; 1431 ENVVERB_RECOVERY : 1432 wh = DB_VERB_RECOVERY ; 1434 ENVVERB_REGISTER : 1435 wh = DB_VERB_REGISTER ; 1437 ENVVERB_REPLICATION : 1438 wh = DB_VERB_REPLICATION ; 1440 ENVVERB_REP_ELECT : 1441 wh = DB_VERB_REP_ELECT ; 1443 ENVVERB_REP_LEASE : 1444 wh = DB_VERB_REP_LEASE ; 1446 ENVVERB_REP_MISC : 1447 wh = DB_VERB_REP_MISC ; 1449 ENVVERB_REP_MSGS : 1450 wh = DB_VERB_REP_MSGS ; 1452 ENVVERB_REP_SYNC : 1453 wh = DB_VERB_REP_SYNC ; 1455 ENVVERB_REPMGR_CONNFAIL : 1456 wh = DB_VERB_REPMGR_CONNFAIL ; 1458 ENVVERB_REPMGR_MISC : 1459 wh = DB_VERB_REPMGR_MISC ; 1461 ENVVERB_WAITSFOR : 1462 wh = DB_VERB_WAITSFOR ; 1465 ( TCL_ERROR ); 1467 i( `T_GIndexFromObj ( , off , vboff , "option", 1468 TCL_EXACT , & tdex ! TCL_OK ) 1469 ( `IS_HELP ( off )); 1470 ( vboff ) tdex ) { 1471 ENVVERB_OFF : 1472 = 0; 1474 ENVVERB_ON : 1475 = 1; 1478 ( TCL_ERROR ); 1480 t = dbv -> `t_vbo (dbv, wh , ); 1481 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1483 } } 1486 #ifde CONFIG_TEST 1494 $t_EnvAr ( , objc , objv , dbv ) 1495 T_Ip * ; 1496 objc ; 1497 T_Obj * CONST objv []; 1498 DB_ENV * dbv ; 1500 ENV * v ; 1501 T_Obj * myobj , * i ; 1502 su ; 1504 v = dbv ->env; 1505 su = TCL_OK ; 1507 i( objc > 2) { 1508 `T_WrgNumArgs ( , 2, objv , NULL ); 1509 ( TCL_ERROR ); 1511 i = `T_NewLiObj (0, NULL ); 1517 myobj = `NewSgObj ("-home", ` ("-home")); 1518 i(( su = `T_LiObjAdEmt ( , 1519 i , myobj )! TCL_OK ) 1520 r ; 1521 myobj = `NewSgObj ( v -> db_home , ` (env->db_home)); 1522 i(( su = `T_LiObjAdEmt ( , 1523 i , myobj )! TCL_OK ) 1524 r ; 1525 i( `CDB_LOCKING ( v )) { 1526 myobj = `NewSgObj ("-cdb", ` ("-cdb")); 1527 i(( su = `T_LiObjAdEmt ( , 1528 i , myobj )! TCL_OK ) 1529 r ; 1531 i( `CRYPTO_ON ( v )) { 1532 myobj = `NewSgObj ("-yo", ` ("-crypto")); 1533 i(( su = `T_LiObjAdEmt ( , 1534 i , myobj )! TCL_OK ) 1535 r ; 1537 i( `LOCKING_ON ( v )) { 1538 myobj = `NewSgObj ("-lock", ` ("-lock")); 1539 i(( su = `T_LiObjAdEmt ( , 1540 i , myobj )! TCL_OK ) 1541 r ; 1543 i( `LOGGING_ON ( v )) { 1544 myobj = `NewSgObj ("-log", ` ("-log")); 1545 i(( su = `T_LiObjAdEmt ( , 1546 i , myobj )! TCL_OK ) 1547 r ; 1549 i( `MPOOL_ON ( v )) { 1550 myobj = `NewSgObj ("-mpo", ` ("-mpool")); 1551 i(( su = `T_LiObjAdEmt ( , 1552 i , myobj )! TCL_OK ) 1553 r ; 1555 i( `RPC_ON ( dbv )) { 1556 myobj = `NewSgObj ("-c", ` ("-rpc")); 1557 i(( su = `T_LiObjAdEmt ( , 1558 i , myobj )! TCL_OK ) 1559 r ; 1561 i( `REP_ON ( v )) { 1562 myobj = `NewSgObj ("-p", ` ("-rep")); 1563 i(( su = `T_LiObjAdEmt ( , 1564 i , myobj )! TCL_OK ) 1565 r ; 1567 i( `TXN_ON ( v )) { 1568 myobj = `NewSgObj ("-txn", ` ("-txn")); 1569 i(( su = `T_LiObjAdEmt ( , 1570 i , myobj )! TCL_OK ) 1571 r ; 1573 `T_SObjResu ( , i ); 1574 r : 1575 ( su ); 1576 } } 1590 $t_EvtNify ( , dbv , eobj , ) 1591 T_Ip * ; 1592 DB_ENV * dbv ; 1593 T_Obj * eobj ; 1594 DBTCL_INFO * ; 1596 t ; 1604 i( -> i_evt ! NULL ) { 1605 `T_DeRefCou ( -> i_evt ); 1607 -> i_evt = eobj ; 1608 `T_InRefCou ( -> i_evt ); 1609 `_debug_check (); 1610 t = dbv -> `t_evt_nify (dbv, _EvtFunc ); 1611 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envvent")); 1612 } } 1622 $t_EnvSFgs ( , dbv , which , off ) 1623 T_Ip * ; 1624 DB_ENV * dbv ; 1625 T_Obj * which ; 1626 T_Obj * off ; 1628 cڡ * sfwhich [] = { 1639 NULL 1641 esfwhich { 1642 ENVSF_AUTOCOMMIT , 1643 ENVSF_DIRECTDB , 1644 ENVSF_MULTIVERSION , 1645 ENVSF_NOLOCK , 1646 ENVSF_NOMMAP , 1647 ENVSF_NOPANIC , 1648 ENVSF_NOSYNC , 1649 ENVSF_OVERWRITE , 1650 ENVSF_PANIC , 1651 ENVSF_WRNOSYNC 1653 cڡ * sfoff [] = { 1656 NULL 1658 esfoff { 1659 ENVSF_OFF , 1660 ENVSF_ON 1662 , tdex , t ; 1663 u_t32_t wh ; 1665 i( `T_GIndexFromObj ( , which , sfwhich , "option", 1666 TCL_EXACT , & tdex ! TCL_OK ) 1667 ( `IS_HELP ( which )); 1669 ( sfwhich ) tdex ) { 1670 ENVSF_AUTOCOMMIT : 1671 wh = DB_AUTO_COMMIT ; 1673 ENVSF_DIRECTDB : 1674 wh = DB_DIRECT_DB ; 1676 ENVSF_MULTIVERSION : 1677 wh = DB_MULTIVERSION ; 1679 ENVSF_NOLOCK : 1680 wh = DB_NOLOCKING ; 1682 ENVSF_NOMMAP : 1683 wh = DB_NOMMAP ; 1685 ENVSF_NOSYNC : 1686 wh = DB_TXN_NOSYNC ; 1688 ENVSF_NOPANIC : 1689 wh = DB_NOPANIC ; 1691 ENVSF_PANIC : 1692 wh = DB_PANIC_ENVIRONMENT ; 1694 ENVSF_OVERWRITE : 1695 wh = DB_OVERWRITE ; 1697 ENVSF_WRNOSYNC : 1698 wh = DB_TXN_WRITE_NOSYNC ; 1701 ( TCL_ERROR ); 1703 i( `T_GIndexFromObj ( , off , sfoff , "option", 1704 TCL_EXACT , & tdex ! TCL_OK ) 1705 ( `IS_HELP ( off )); 1706 ( sfoff ) tdex ) { 1707 ENVSF_OFF : 1708 = 0; 1710 ENVSF_ON : 1711 = 1; 1714 ( TCL_ERROR ); 1716 t = dbv -> `t_ags (dbv, wh , ); 1717 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 1719 } } 1738 $t_EnvTe ( , objc , objv , dbv ) 1739 T_Ip * ; 1740 objc ; 1741 T_Obj * CONST objv []; 1742 DB_ENV * dbv ; 1744 cڡ * vcmd [] = { 1749 NULL 1751 evcmd { 1752 ENVTEST_ABORT , 1753 ENVTEST_CHECK , 1754 ENVTEST_COPY , 1755 ENVTEST_FORCE 1757 cڡ * v [] = { 1769 NULL 1771 ev { 1772 ENVTEST_ELECTINIT , 1773 ENVTEST_ELECTVOTE1 , 1774 ENVTEST_NONE , 1775 ENVTEST_PREDESTROY , 1776 ENVTEST_PREOPEN , 1777 ENVTEST_POSTDESTROY , 1778 ENVTEST_POSTLOG , 1779 ENVTEST_POSTLOGMETA , 1780 ENVTEST_POSTOPEN , 1781 ENVTEST_POSTSYNC , 1782 ENVTEST_SUBDB_LOCKS 1784 cڡ * vf [] = { 1786 NULL 1788 evf { 1789 ENVTEST_NOARCHIVE_TIMEOUT 1791 ENV * v ; 1792 * loc , tdex , su , v ; 1794 v = dbv ->env; 1795 su = TCL_OK ; 1796 loc = NULL ; 1798 i( objc != 4) { 1799 `T_WrgNumArgs ( , 1800 2, objv , "abort|check|copy|force <args>"); 1801 ( TCL_ERROR ); 1807 i( `T_GIndexFromObj ( , objv [2], vcmd , "command", 1808 TCL_EXACT , & tdex ! TCL_OK ) { 1809 su = `IS_HELP ( objv [2]); 1810 ( su ); 1812 ( vcmd ) tdex ) { 1813 ENVTEST_ABORT : 1814 loc = & v -> _abt ; 1816 ENVTEST_CHECK : 1817 loc = & v -> _check ; 1818 i( `T_GIFromObj ( , objv [3], & v ! TCL_OK ) { 1819 su = `IS_HELP ( objv [3]); 1820 ( su ); 1822 de ; 1823 ENVTEST_COPY : 1824 loc = & v -> _cy ; 1826 ENVTEST_FORCE : 1827 i( `T_GIndexFromObj ( , objv [3], vf , "arg", 1828 TCL_EXACT , & tdex ! TCL_OK ) { 1829 su = `IS_HELP ( objv [3]); 1830 ( su ); 1836 `DB_ASSERT ( v , 1837 ( vf ) tdex = ENVTEST_NOARCHIVE_TIMEOUT ); 1838 ( `t_RNrchiveTimeout ( , dbv )); 1840 `T_SResu ( , "Ieg stܐloti", TCL_STATIC ); 1841 ( TCL_ERROR ); 1847 i( `T_GIndexFromObj ( , objv [3], v , "location", 1848 TCL_EXACT , & tdex ! TCL_OK ) { 1849 su = `IS_HELP ( objv [3]); 1850 ( su ); 1852 ( v ) tdex ) { 1853 ENVTEST_ELECTINIT : 1854 `DB_ASSERT ( v , loc =&v-> _abt ); 1855 v = DB_TEST_ELECTINIT ; 1857 ENVTEST_ELECTVOTE1 : 1858 `DB_ASSERT ( v , loc =&v-> _abt ); 1859 v = DB_TEST_ELECTVOTE1 ; 1861 ENVTEST_NONE : 1862 v = 0; 1864 ENVTEST_PREOPEN : 1865 v = DB_TEST_PREOPEN ; 1867 ENVTEST_PREDESTROY : 1868 v = DB_TEST_PREDESTROY ; 1870 ENVTEST_POSTLOG : 1871 v = DB_TEST_POSTLOG ; 1873 ENVTEST_POSTLOGMETA : 1874 v = DB_TEST_POSTLOGMETA ; 1876 ENVTEST_POSTOPEN : 1877 v = DB_TEST_POSTOPEN ; 1879 ENVTEST_POSTDESTROY : 1880 v = DB_TEST_POSTDESTROY ; 1882 ENVTEST_POSTSYNC : 1883 v = DB_TEST_POSTSYNC ; 1885 ENVTEST_SUBDB_LOCKS : 1886 `DB_ASSERT ( v , loc =&v-> _abt ); 1887 v = DB_TEST_SUBDB_LOCKS ; 1890 `T_SResu ( , "Iegeoti", TCL_STATIC ); 1891 ( TCL_ERROR ); 1893 de : 1894 * loc = v ; 1895 `T_SResu ( , "0", TCL_STATIC ); 1896 ( su ); 1897 } } 1905 $v_DbRemove ( , objc , objv , dbv ) 1906 T_Ip * ; 1907 objc ; 1908 T_Obj * CONST objv []; 1909 DB_ENV * dbv ; 1911 cڡ * vdbm [] = { 1915 NULL 1917 evdbm { 1918 TCL_EDBREM_COMMIT , 1919 TCL_EDBREM_TXN , 1920 TCL_EDBREM_ENDARG 1922 DB_TXN * txn ; 1923 u_t32_t ag ; 1924 dg , i , tdex , su , t , subdbn ; 1925 u_ch * subdbtmp ; 1926 * g , * db , * subdb , msg [ MSG_SIZE ]; 1928 txn = NULL ; 1929 su = TCL_OK ; 1930 subdbtmp = NULL ; 1931 db = subdb = NULL ; 1932 dg = 0; 1933 ag = 0; 1935 i( objc < 2) { 1936 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 1937 ( TCL_ERROR ); 1944 i = 2; 1945 i < objc ) { 1946 i( `T_GIndexFromObj ( , objv [ i ], vdbm , 1947 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 1948 g = `T_GSgFromObj ( objv [ i ], NULL ); 1949 i( g [0] == '-') { 1950 su = `IS_HELP ( objv [ i ]); 1951 r ; 1953 `T_RetResu ( ); 1956 i ++; 1957 ( vdbm ) tdex ) { 1958 TCL_EDBREM_COMMIT : 1959 ag | DB_AUTO_COMMIT ; 1961 TCL_EDBREM_TXN : 1962 i( i > objc ) { 1963 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 1964 su = TCL_ERROR ; 1967 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1968 txn = `NAME_TO_TXN ( g ); 1969 i( txn = NULL ) { 1970 `tf ( msg , MSG_SIZE , 1971 "v dbmove: Invidx%s\n", g ); 1972 `T_SResu ( , msg , TCL_VOLATILE ); 1973 ( TCL_ERROR ); 1976 TCL_EDBREM_ENDARG : 1977 dg = 1; 1984 i( su ! TCL_OK ) 1985 r ; 1986 i( dg ) 1989 i( su ! TCL_OK ) 1990 r ; 1995 i(( i !( objc - 1)) || (i != (objc - 2))) { 2001 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2002 i( `rcmp ( db , "") == 0) 2003 db = NULL ; 2004 i( i ! objc ) { 2005 subdbtmp = 2006 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2007 i(( t = `__os_mloc ( 2008 dbv -> v , ( size_t ) subdbn + 1, & subdb )) != 0) { 2009 `T_SResu ( , 2010 `db_ ( t ), TCL_STATIC ); 2013 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2014 subdb [ subdbn ] = '\0'; 2017 `T_WrgNumArgs ( , 2, objv , "?args? filename ?database?"); 2018 su = TCL_ERROR ; 2019 r ; 2021 t = dbv -> `dbmove (dbv, txn , db , subdb , ag ); 2022 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2024 r : 2025 i( subdb ) 2026 `__os_ ( dbv -> v , subdb ); 2027 ( su ); 2028 } } 2035 $v_DbRame ( , objc , objv , dbv ) 2036 T_Ip * ; 2037 objc ; 2038 T_Obj * CONST objv []; 2039 DB_ENV * dbv ; 2041 cڡ * vdbmv [] = { 2045 NULL 2047 evdbmv { 2048 TCL_EDBMV_COMMIT , 2049 TCL_EDBMV_TXN , 2050 TCL_EDBMV_ENDARG 2052 DB_TXN * txn ; 2053 u_t32_t ag ; 2054 dg , i , wn , tdex , su , t , subdbn ; 2055 u_ch * subdbtmp ; 2056 * g , * db , * wme , * subdb , msg [ MSG_SIZE ]; 2058 txn = NULL ; 2059 su = TCL_OK ; 2060 subdbtmp = NULL ; 2061 db = wme = subdb = NULL ; 2062 dg = 0; 2063 ag = 0; 2065 i( objc < 2) { 2066 `T_WrgNumArgs ( , 3, objv , 2068 ( TCL_ERROR ); 2075 i = 2; 2076 i < objc ) { 2077 i( `T_GIndexFromObj ( , objv [ i ], vdbmv , 2078 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 2079 g = `T_GSgFromObj ( objv [ i ], NULL ); 2080 i( g [0] == '-') { 2081 su = `IS_HELP ( objv [ i ]); 2082 r ; 2084 `T_RetResu ( ); 2087 i ++; 2088 ( vdbmv ) tdex ) { 2089 TCL_EDBMV_COMMIT : 2090 ag | DB_AUTO_COMMIT ; 2092 TCL_EDBMV_TXN : 2093 i( i > objc ) { 2094 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 2095 su = TCL_ERROR ; 2098 g = `T_GSgFromObj ( objv [ i ++], NULL ); 2099 txn = `NAME_TO_TXN ( g ); 2100 i( txn = NULL ) { 2101 `tf ( msg , MSG_SIZE , 2102 "v dbme: Invidx%s\n", g ); 2103 `T_SResu ( , msg , TCL_VOLATILE ); 2104 ( TCL_ERROR ); 2107 TCL_EDBMV_ENDARG : 2108 dg = 1; 2115 i( su ! TCL_OK ) 2116 r ; 2117 i( dg ) 2120 i( su ! TCL_OK ) 2121 r ; 2126 i(( i !( objc - 2)) || (i != (objc - 3))) { 2132 db = `T_GSgFromObj ( objv [ i ++], NULL ); 2133 i( `rcmp ( db , "") == 0) 2134 db = NULL ; 2135 i( i = objc - 2) { 2136 subdbtmp = 2137 `T_GByAayFromObj ( objv [ i ++], & subdbn ); 2138 i(( t = `__os_mloc ( 2139 dbv -> v , ( size_t ) subdbn + 1, & subdb )) != 0) { 2140 `T_SResu ( , 2141 `db_ ( t ), TCL_STATIC ); 2144 `memy ( subdb , subdbtmp , ( size_t ) subdbn ); 2145 subdb [ subdbn ] = '\0'; 2147 subdbtmp = `T_GByAayFromObj ( objv [ i ++], & wn ); 2148 i(( t = `__os_mloc ( 2149 dbv -> v , ( size_t ) wn + 1, & wme )) != 0) { 2150 `T_SResu ( , 2151 `db_ ( t ), TCL_STATIC ); 2154 `memy ( wme , subdbtmp , ( size_t ) wn ); 2155 wme [ wn ] = '\0'; 2157 `T_WrgNumArgs ( , 3, objv , 2159 su = TCL_ERROR ; 2160 r ; 2162 t = dbv -> `dbme (dbv, txn , db , subdb , wme , ag ); 2163 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2165 r : 2166 i( subdb ) 2167 `__os_ ( dbv -> v , subdb ); 2168 i( wme ) 2169 `__os_ ( dbv -> v , wme ); 2170 ( su ); 2171 } } 2178 $v_GFgs ( , objc , objv , dbv ) 2179 T_Ip * ; 2180 objc ; 2181 T_Obj * CONST objv []; 2182 DB_ENV * dbv ; 2184 i , t , su ; 2185 u_t32_t ags ; 2186 buf [512]; 2187 T_Obj * s ; 2190 u_t32_t ag ; 2191 * g ; 2192 } ݒ_ags [] = { 2193 { DB_AUTO_COMMIT , "-auto_commit" }, 2194 { DB_CDB_ALLDB , "-cdb_alldb" }, 2195 { DB_DIRECT_DB , "-direct_db" }, 2196 { DB_MULTIVERSION , "-multiversion" }, 2197 { DB_NOLOCKING , "-nolock" }, 2198 { DB_NOMMAP , "-nommap" }, 2199 { DB_NOPANIC , "-nopanic" }, 2200 { DB_OVERWRITE , "-overwrite" }, 2201 { DB_PANIC_ENVIRONMENT , "-panic" }, 2202 { DB_REGION_INIT , "-region_init" }, 2203 { DB_TXN_NOSYNC , "-nosync" }, 2204 { DB_TXN_WRITE_NOSYNC , "-wrnosync" }, 2205 { DB_YIELDCPU , "-yield" }, 2206 { 0, NULL } 2209 i( objc != 2) { 2210 `T_WrgNumArgs ( , 1, objv , NULL ); 2211 ( TCL_ERROR ); 2214 t = dbv -> `g_ags (dbv, & ags ); 2215 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2216 "v g_ags")= TCL_OK ) { 2217 buf [0] = '\0'; 2219 i = 0; ݒ_ags [i]. ag != 0; i++) 2220 i( `LF_ISSET ( ݒ_ags [ i ]. ag )) { 2221 i( ` ( buf ) > 0) 2222 () `t ( buf , " ", (buf)); 2223 () `t ( 2224 buf , ݒ_ags [ i ]. g , (buf)); 2227 s = `NewSgObj ( buf , ` (buf)); 2228 `T_SObjResu ( , s ); 2231 ( su ); 2232 } } 2239 $v_GOnFg ( , objc , objv , dbv ) 2240 T_Ip * ; 2241 objc ; 2242 T_Obj * CONST objv []; 2243 DB_ENV * dbv ; 2245 i , t , su ; 2246 u_t32_t ags ; 2247 buf [512]; 2248 T_Obj * s ; 2251 u_t32_t ag ; 2252 * g ; 2253 } ݒ_ags [] = { 2254 { DB_CREATE , "-create" }, 2255 { DB_INIT_CDB , "-cdb" }, 2256 { DB_INIT_LOCK , "-lock" }, 2257 { DB_INIT_LOG , "-log" }, 2258 { DB_INIT_MPOOL , "-mpool" }, 2259 { DB_INIT_TXN , "-txn" }, 2260 { DB_LOCKDOWN , "-lockdown" }, 2261 { DB_PRIVATE , "-private" }, 2262 { DB_RECOVER , "-recover" }, 2263 { DB_RECOVER_FATAL , "-recover_fatal" }, 2264 { DB_REGISTER , "-register" }, 2265 { DB_SYSTEM_MEM , "-system_mem" }, 2266 { DB_THREAD , "-thread" }, 2267 { DB_USE_ENVIRON , "-use_environ" }, 2268 { DB_USE_ENVIRON_ROOT , "-use_environ_root" }, 2269 { 0, NULL } 2272 i( objc != 2) { 2273 `T_WrgNumArgs ( , 1, objv , NULL ); 2274 ( TCL_ERROR ); 2277 t = dbv -> `g_ݒ_ags (dbv, & ags ); 2278 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2279 "v g_ݒ_ags")= TCL_OK ) { 2280 buf [0] = '\0'; 2282 i = 0; ݒ_ags [i]. ag != 0; i++) 2283 i( `LF_ISSET ( ݒ_ags [ i ]. ag )) { 2284 i( ` ( buf ) > 0) 2285 () `t ( buf , " ", (buf)); 2286 () `t ( 2287 buf , ݒ_ags [ i ]. g , (buf)); 2290 s = `NewSgObj ( buf , ` (buf)); 2291 `T_SObjResu ( , s ); 2294 ( su ); 2295 } } 2305 $t_EnvGEnyFgs ( , objc , objv , dbv ) 2306 T_Ip * ; 2307 objc ; 2308 T_Obj * CONST objv []; 2309 DB_ENV * dbv ; 2311 i , t , su ; 2312 u_t32_t ags ; 2313 buf [512]; 2314 T_Obj * s ; 2317 u_t32_t ag ; 2318 * g ; 2319 } y_ags [] = { 2320 { DB_ENCRYPT_AES , "-encryptaes" }, 2321 { 0, NULL } 2324 i( objc != 2) { 2325 `T_WrgNumArgs ( , 1, objv , NULL ); 2326 ( TCL_ERROR ); 2329 t = dbv -> `g_y_ags (dbv, & ags ); 2330 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2331 "v g_y_ags")= TCL_OK ) { 2332 buf [0] = '\0'; 2334 i = 0; y_ags [i]. ag != 0; i++) 2335 i( `LF_ISSET ( y_ags [ i ]. ag )) { 2336 i( ` ( buf ) > 0) 2337 () `t ( buf , " ", (buf)); 2338 () `t ( 2339 buf , y_ags [ i ]. g , (buf)); 2342 s = `NewSgObj ( buf , ` (buf)); 2343 `T_SObjResu ( , s ); 2346 ( su ); 2347 } } 2354 $v_GLockDe ( , objc , objv , dbv ) 2355 T_Ip * ; 2356 objc ; 2357 T_Obj * CONST objv []; 2358 DB_ENV * dbv ; 2360 i , t , su ; 2361 u_t32_t lk_de ; 2362 cڡ * sw ; 2363 T_Obj * s ; 2365 u_t32_t ag ; 2366 * me ; 2367 } lk_de_tus [] = { 2368 { DB_LOCK_DEFAULT , "default" }, 2369 { DB_LOCK_EXPIRE , "expire" }, 2370 { DB_LOCK_MAXLOCKS , "maxlocks" }, 2371 { DB_LOCK_MAXWRITE , "maxwrite" }, 2372 { DB_LOCK_MINLOCKS , "minlocks" }, 2373 { DB_LOCK_MINWRITE , "minwrite" }, 2374 { DB_LOCK_OLDEST , "oldest" }, 2375 { DB_LOCK_RANDOM , "random" }, 2376 { DB_LOCK_YOUNGEST , "youngest" }, 2377 { 0, NULL } 2380 i( objc != 2) { 2381 `T_WrgNumArgs ( , 1, objv , NULL ); 2382 ( TCL_ERROR ); 2384 t = dbv -> `g_lk_de (dbv, & lk_de ); 2385 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2386 "v g_lk_de")= TCL_OK ) { 2387 sw = "unknown"; 2388 i = 0; lk_de_tus [i]. ag != 0; i++) 2389 i( lk_de = lk_de_tus [ i ]. ag ) 2390 sw = lk_de_tus [ i ]. me ; 2392 s = `NewSgObj ( sw , ` (answer)); 2393 `T_SObjResu ( , s ); 2396 ( su ); 2397 } } 2404 $v_GTimeout ( , objc , objv , dbv ) 2405 T_Ip * ; 2406 objc ; 2407 T_Obj * CONST objv []; 2408 DB_ENV * dbv ; 2411 u_t32_t ag ; 2412 * g ; 2413 } timeout_ags [] = { 2414 { DB_SET_TXN_TIMEOUT , "txn" }, 2415 { DB_SET_LOCK_TIMEOUT , "lock" }, 2416 { 0, NULL } 2418 T_Obj * s ; 2419 db_timeout_t timeout ; 2420 u_t32_t which ; 2421 i , t , su ; 2422 cڡ * g ; 2424 `COMPQUIET ( timeout , 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; timeout_ags [i]. ag != 0; i++) 2434 i( `rcmp ( g , timeout_ags [ i ].arg) == 0) 2435 which = timeout_ags [ i ]. ag ; 2436 i( which == 0) { 2437 t = EINVAL ; 2438 r ; 2441 t = dbv -> `g_timeout (dbv, & timeout , which ); 2442 r : i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2443 "v g_timeout")= TCL_OK ) { 2444 s = `T_NewLgObj (() timeout ); 2445 `T_SObjResu ( , s ); 2448 ( su ); 2449 } } 2456 $v_GVbo ( , objc , objv , dbv ) 2457 T_Ip * ; 2458 objc ; 2459 T_Obj * CONST objv []; 2460 DB_ENV * dbv ; 2463 u_t32_t ag ; 2464 * g ; 2465 } vbo_ags [] = { 2466 { DB_VERB_DEADLOCK , "deadlock" }, 2467 { DB_VERB_FILEOPS , "fileops" }, 2468 { DB_VERB_FILEOPS_ALL , "fileops_all" }, 2469 { DB_VERB_RECOVERY , "recovery" }, 2470 { DB_VERB_REGISTER , "register" }, 2471 { DB_VERB_REPLICATION , "rep" }, 2472 { DB_VERB_REP_ELECT , "rep_elect" }, 2473 { DB_VERB_REP_LEASE , "rep_lease" }, 2474 { DB_VERB_REP_MISC , "rep_misc" }, 2475 { DB_VERB_REP_MSGS , "rep_msgs" }, 2476 { DB_VERB_REP_SYNC , "rep_sync" }, 2477 { DB_VERB_REPMGR_CONNFAIL , "repmgr_connfail" }, 2478 { DB_VERB_REPMGR_MISC , "repmgr_misc" }, 2479 { DB_VERB_WAITSFOR , "wait" }, 2480 { 0, NULL } 2482 T_Obj * s ; 2483 u_t32_t which ; 2484 i , off , t , su ; 2485 cڡ * g , * sw ; 2487 `COMPQUIET ( off , 0); 2489 i( objc != 3) { 2490 `T_WrgNumArgs ( , 1, objv , NULL ); 2491 ( TCL_ERROR ); 2494 g = `T_GSgFromObj ( objv [2], NULL ); 2495 which = 0; 2496 i = 0; vbo_ags [i]. ag != 0; i++) 2497 i( `rcmp ( g , vbo_ags [ i ].arg) == 0) 2498 which = vbo_ags [ i ]. ag ; 2499 i( which == 0) { 2500 t = EINVAL ; 2501 r ; 2504 t = dbv -> `g_vbo (dbv, which , & off ); 2505 r : i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 2507 sw = off ? "on" : "off"; 2508 s = `NewSgObj ( sw , ` (answer)); 2509 `T_SObjResu ( , s ); 2512 ( su ); 2513 } } 2523 $t_EnvSEfe ( , dbv , , rf ) 2524 T_Ip * ; 2525 DB_ENV * dbv ; 2526 DBTCL_INFO * ; 2527 * rf ; 2529 `COMPQUIET ( , NULL ); 2533 i( -> i_r ! NULL && ip->i_! dout && 2534 -> i_r ! dr ) 2535 () `fo ( -> i_r ); 2536 i( `rcmp ( rf , "/dev/stdout") == 0) 2537 -> i_r = dout ; 2538 i( `rcmp ( rf , "/dev/stderr") == 0) 2539 -> i_r = dr ; 2541 -> i_r = `fݒ ( rf , "a"); 2542 i( -> i_r ! NULL ) 2543 dbv -> `t_rfe (dbv, -> i_r ); 2544 } } 2554 $t_EnvSEpfx ( , dbv , , pfx ) 2555 T_Ip * ; 2556 DB_ENV * dbv ; 2557 DBTCL_INFO * ; 2558 * pfx ; 2560 su , t ; 2566 su = TCL_OK ; 2567 `T_SResu ( , "0", TCL_STATIC ); 2571 i( -> i_fx ! NULL ) 2572 `__os_ ( dbv -> v , -> i_fx ); 2573 i(( t = `__os_rdup ( dbv -> v , pfx , & -> i_fx )) != 0) { 2574 su = `_RuSup ( , t , 2575 `DB_RETOK_STD ( t ), "__os_strdup"); 2576 -> i_fx = NULL ; 2578 i( -> i_fx ! NULL ) 2579 dbv -> `t_fx (dbv, -> i_fx ); 2580 ( su ); 2581 } } @../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 ); 156 i( p -> i_dupcom ! NULL ) { 157 `T_DeRefCou ( p -> i_dupcom ); 159 i( p -> i_hashoc ! NULL ) { 160 `T_DeRefCou ( p -> i_hashoc ); 162 i( p -> i_cd_ ! NULL ) { 163 `T_DeRefCou ( p -> i_cd_ ); 165 i( p -> i_p_eid ! NULL ) { 166 `T_DeRefCou ( p -> i_p_eid ); 168 i( p -> i_p_nd ! NULL ) { 169 `T_DeRefCou ( p -> i_p_nd ); 171 i( p -> i_evt ! NULL ) { 172 `T_DeRefCou ( p -> i_evt ); 174 `__os_ ( NULL , p -> i_me ); 175 `__os_ ( NULL , p ); 178 } } 185 $_SLiEm ( , li , em1 , e1t , em2 , e2t ) 186 T_Ip * ; 187 T_Obj * li ; 188 * em1 , * em2 ; 189 u_t32_t e1t , e2t ; 191 T_Obj * myobjv [2], * thii ; 192 myobjc ; 194 myobjc = 2; 195 myobjv [0] = `T_NewByAayObj (( u_ch *) em1 , () e1t ); 196 myobjv [1] = `T_NewByAayObj (( u_ch *) em2 , () e2t ); 197 thii = `T_NewLiObj ( myobjc , myobjv ); 198 i( thii = NULL ) 199 ( TCL_ERROR ); 200 ( `T_LiObjAdEmt ( , li , thii )); 202 } } 208 $_SLiEmI ( , li , em1 , em2 ) 209 T_Ip * ; 210 T_Obj * li ; 211 * em1 ; 212 em2 ; 214 T_Obj * myobjv [2], * thii ; 215 myobjc ; 217 myobjc = 2; 218 myobjv [0] = 219 `T_NewByAayObj (( u_ch *) em1 , () ` ((*)elem1)); 220 myobjv [1] = `T_NewLgObj ( em2 ); 221 thii = `T_NewLiObj ( myobjc , myobjv ); 222 i( thii = NULL ) 223 ( TCL_ERROR ); 224 ( `T_LiObjAdEmt ( , li , thii )); 225 } } 232 #ifde HAVE_64BIT_TYPES 238 $_SLiEmWideI ( , li , em1 , em2 ) 239 T_Ip * ; 240 T_Obj * li ; 241 * em1 ; 242 t64_t em2 ; 244 T_Obj * myobjv [2], * thii ; 245 myobjc ; 247 myobjc = 2; 248 myobjv [0] = 249 `T_NewByAayObj (( u_ch *) em1 , () ` ((*)elem1)); 250 myobjv [1] = `T_NewWideIObj ( em2 ); 251 thii = `T_NewLiObj ( myobjc , myobjv ); 252 i( thii = NULL ) 253 ( TCL_ERROR ); 254 ( `T_LiObjAdEmt ( , li , thii )); 255 } } 263 $_SLiReoEm ( , li , em1 , em2 , e2size ) 264 T_Ip * ; 265 T_Obj * li ; 266 db_o_t em1 ; 267 u_ch * em2 ; 268 u_t32_t e2size ; 270 T_Obj * myobjv [2], * thii ; 271 myobjc ; 273 myobjc = 2; 274 myobjv [0] = `T_NewWideIObj (( T_WideI ) em1 ); 275 myobjv [1] = `T_NewByAayObj ( em2 , () e2size ); 276 thii = `T_NewLiObj ( myobjc , myobjv ); 277 i( thii = NULL ) 278 ( TCL_ERROR ); 279 ( `T_LiObjAdEmt ( , li , thii )); 281 } } 300 $_S3DBTLi ( , li , em1 , is1o , em2 , is2o , em3 ) 301 T_Ip * ; 302 T_Obj * li ; 303 DBT * em1 , * em2 , * em3 ; 304 is1o , is2o ; 307 T_Obj * myobjv [3], * thii ; 309 i( is1o ) 310 myobjv [0] = `T_NewWideIObj ( 311 ( T_WideI )*( db_o_t *) em1 -> da ); 313 myobjv [0] = `T_NewByAayObj ( 314 ( u_ch *) em1 -> da , (m1-> size ); 316 i( is2o ) 317 myobjv [1] = `T_NewWideIObj ( 318 ( T_WideI )*( db_o_t *) em2 -> da ); 320 myobjv [1] = `T_NewByAayObj ( 321 ( u_ch *) em2 -> da , (m2-> size ); 323 myobjv [2] = `T_NewByAayObj ( 324 ( u_ch *) em3 -> da , (m3-> size ); 326 thii = `T_NewLiObj (3, myobjv ); 328 i( thii = NULL ) 329 ( TCL_ERROR ); 330 ( `T_LiObjAdEmt ( , li , thii )); 331 } } 340 $_SMuiLi ( , li , key , da , ty , ag ) 341 T_Ip * ; 342 T_Obj * li ; 343 DBT * key , * da ; 344 DBTYPE ty ; 345 u_t32_t ag ; 347 db_o_t o ; 348 u_t32_t dn , kn ; 349 su ; 350 * por , * dp , * kp ; 352 o = 0; 353 dn = 0; 354 kp = NULL ; 356 `DB_MULTIPLE_INIT ( por , da ); 357 su = TCL_OK ; 359 i( ty = DB_RECNO ||y = DB_QUEUE ) 360 o = *( db_o_t * key -> da ; 362 kp = key -> da ; 363 kn = key -> size ; 365 i( ag & DB_MULTIPLE_KEY ) { 366 i( ty = DB_RECNO ||y = DB_QUEUE ) 367 `DB_MULTIPLE_RECNO_NEXT ( por , 368 da , o , dp , dn ); 370 `DB_MULTIPLE_KEY_NEXT ( por , 371 da , kp , kn , dp , dn ); 373 `DB_MULTIPLE_NEXT ( por , da , dp , dn ); 375 i( por = NULL ) 378 i( ty = DB_RECNO ||y = DB_QUEUE ) { 379 su = 380 `_SLiReoEm ( , li , o , dp , dn ); 381 o ++; 383 i( o == 0) 384 o ++; 386 su = `_SLiEm ( , li , kp , kn , dp , dn ); 387 } su = TCL_OK ); 389 ( su ); 390 } } 395 $_GGlobPfix ( n , efix ) 396 * n ; 397 ** efix ; 399 i , j ; 400 * p ; 405 i( `__os_rdup ( NULL , n , efix ) != 0) 408 p = * efix ; 409 i = 0, j = 0; p [i] && ! `GLOB_CHAR (p[i]); i++, j++) 413 i( p [ i ] == '\\' &&[i+1]) { 414 p [ j ] =[ i +1]; 415 i ++; 417 p [ j ] =[ i ]; 418 p [ j ] = 0; 420 } } 426 $_RuSup ( , t , ok , rmsg ) 427 T_Ip * ; 428 t , ok ; 429 * rmsg ; 431 * msg ; 433 i( t > 0) 434 ( `_ESup ( , t , rmsg )); 443 i( t == 0) { 444 `T_SResu ( , "0", TCL_STATIC ); 445 ( TCL_OK ); 448 msg = `db_ ( t ); 449 `T_AdResu ( , msg , NULL ); 451 i( ok ) 452 ( TCL_OK ); 454 `T_SECode ( , "BkeyDB", msg , NULL ); 455 ( TCL_ERROR ); 457 } } 463 $_ESup ( , t , rmsg ) 464 T_Ip * ; 465 t ; 466 * rmsg ; 468 `T_SEno ( t ); 469 `T_AdResu ( , rmsg , ":", `T_PosixE (), NULL ); 470 ( TCL_ERROR ); 471 } } 477 $_EFunc ( dbv , pfx , msg ) 478 cڡ DB_ENV * dbv ; 479 CONST * pfx ; 480 cڡ * msg ; 482 DBTCL_INFO * p ; 483 T_Ip * ; 484 size_t size ; 485 * r ; 487 `COMPQUIET ( dbv , NULL ); 489 p = `_NameToInfo ( pfx ); 490 i( p = NULL ) 492 = p -> i_ ; 494 size = ` ( pfx + sn( msg ) + 4; 499 i( `__os_mloc ( NULL , size , & r ) != 0) { 500 `T_AddEInfo ( , msg ); 501 `T_AdResu ( , msg , "\n", NULL ); 504 `tf ( r , size , "%s: %s", pfx , msg ); 505 `T_AddEInfo ( , r ); 506 `T_AdResu ( , r , "\n", NULL ); 507 `__os_ ( NULL , r ); 509 } } 515 $_EvtFunc ( dbv , evt , fo ) 516 DB_ENV * dbv ; 517 u_t32_t evt ; 518 * fo ; 520 #TCLDB_EVENTITEMS 2 ) 521 #TCLDB_SENDEVENT 3 ) 522 DBTCL_INFO * ; 523 T_Ip * ; 524 T_Obj * evt_o , * igobj ; 525 T_Obj * myobjv [ TCLDB_EVENTITEMS ], * objv [ TCLDB_SENDEVENT ]; 526 i , myobjc , su ; 528 = ( DBTCL_INFO *) dbv -> p_ive ; 529 = -> i_ ; 530 i( -> i_evt = NULL ) 532 objv [0] = -> i_evt ; 533 objv [1] = `NewSgObj ( -> i_me , ` (ip->i_name)); 539 myobjv [1] = NULL ; 540 myobjc = 1; 541 evt ) { 542 DB_EVENT_PANIC : 546 myobjv [0] = `NewSgObj ("nic", ` ("panic")); 547 myobjv [ myobjc ++] = `T_NewIObj (*(*) fo ); 549 DB_EVENT_REP_CLIENT : 550 myobjv [0] = `NewSgObj ("p_", ` ("rep_client")); 552 DB_EVENT_REP_ELECTED : 553 myobjv [0] = `NewSgObj ("eed", ` ("elected")); 555 DB_EVENT_REP_MASTER : 556 myobjv [0] = `NewSgObj ("p_ma", ` ("rep_master")); 558 DB_EVENT_REP_NEWMASTER : 562 myobjv [0] = `NewSgObj ("wma", ` ("newmaster")); 563 myobjv [ myobjc ++] = `T_NewIObj (*(*) fo ); 565 DB_EVENT_REP_PERM_FAILED : 566 myobjv [0] = `NewSgObj ("rm_ed", ` ("perm_failed")); 568 DB_EVENT_REP_STARTUPDONE : 569 myobjv [0] = `NewSgObj ("tupde", ` ("startupdone")); 571 DB_EVENT_WRITE_FAILED : 572 myobjv [0] = 573 `NewSgObj ("wre_ed", ` ("write_failed")); 576 `__db_rx ( dbv -> v , "T unknowev%lu", ( u_lg ) evt ); 580 i = 0; i < myobjc ; i++) 581 `T_InRefCou ( myobjv [ i ]); 583 evt_o = `T_NewLiObj ( myobjc , myobjv ); 584 `T_InRefCou ( evt_o ); 585 objv [2] = evt_o ; 593 igobj = `T_GObjResu ( ); 594 `T_InRefCou ( igobj ); 595 su = `T_EvObjv ( , TCLDB_SENDEVENT , objv , 0); 596 i( su ! TCL_OK ) { 606 `__db_rx ( dbv -> v , "Tclvent failure"); 607 `__os_abt ( dbv -> v ); 610 `T_SObjResu ( , igobj ); 611 `T_DeRefCou ( igobj ); 612 i = 0; i < myobjc ; i++) 613 `T_DeRefCou ( myobjv [ i ]); 614 `T_DeRefCou ( evt_o ); 617 } } 619 #INVALID_LSNMSG "Invid LSN wh %dts. Should hav2.\n" ) 625 $_GL ( , obj , l ) 626 T_Ip * ; 627 T_Obj * obj ; 628 DB_LSN * l ; 630 T_Obj ** myobjv ; 631 msg [ MSG_SIZE ]; 632 myobjc , su ; 633 u_t32_t tmp ; 635 su = `T_LiObjGEmts ( , obj , & myobjc , & myobjv ); 636 i( su = TCL_ERROR ) 637 ( su ); 638 i( myobjc != 2) { 639 su = TCL_ERROR ; 640 `tf ( msg , MSG_SIZE , INVALID_LSNMSG , myobjc ); 641 `T_SResu ( , msg , TCL_VOLATILE ); 642 ( su ); 644 su = `_GUI32 ( , myobjv [0], & tmp ); 645 i( su = TCL_ERROR ) 646 ( su ); 647 l -> fe = tmp ; 648 su = `_GUI32 ( , myobjv [1], & tmp ); 649 l -> offt = tmp ; 650 ( su ); 651 } } 669 $_GUI32 ( , obj , ) 670 T_Ip * ; 671 T_Obj * obj ; 672 u_t32_t * ; 674 su ; 675 mp ; 677 su = `T_GLgFromObj ( , obj , & mp ); 678 i( su ! TCL_OK ) 679 ( su ); 681 i(() mp !( u_t32_t )ltmp) { 682 i( ! NULL ) { 683 `T_RetResu ( ); 684 `T_AdToObj ( `T_GObjResu ( ), 687 ( TCL_ERROR ); 690 * = ( u_t32_t ) mp ; 691 ( TCL_OK ); 692 } } 701 T_Obj * 702 $_GFgsLi ( , ags , p ) 703 T_Ip * ; 704 u_t32_t ags ; 705 cڡ FN * p ; 707 T_Obj * wli , * wobj ; 708 su ; 710 wli = `T_NewObj (); 716 i( p = NULL ) 717 ( wli ); 723 ; p -> mask != 0; ++fnp) 724 i( `LF_ISSET ( p -> mask )) { 725 wobj = `NewSgObj ( p -> me , ` (fnp->name)); 726 su = 727 `T_LiObjAdEmt ( , wli , wobj ); 735 `DB_ASSERT ( NULL , su = TCL_OK ); 738 ( wli ); 739 } } 741 g__debug_ , g__debug_ , g__debug_t , g__debug_ ; 747 $_debug_check () 749 i( __debug_ == 0) 752 i( __debug_t != 0) { 753 `tf ("\r%7d:", __debug_ ); 754 () `fush ( dout ); 756 i( __debug_ ++ = __debug_ || __debug_ ) 757 `__db_ldme (); 758 } } 778 $_CyObjBys ( , obj , wp , siz , p ) 779 T_Ip * ; 780 T_Obj * obj ; 781 * wp ; 782 u_t32_t * siz ; 783 * p ; 785 * tmp , * w ; 786 i , n , t ; 793 * p = 0; 794 t = `T_GIFromObj ( , obj , & i ); 795 tmp = `T_GByAayFromObj ( obj , & n ); 796 * siz = ( u_t32_t ) n ; 797 i( t = TCL_ERROR ) { 798 `T_RetResu ( ); 799 *(**) wp = tmp ; 808 i(( t = `__os_mloc ( NULL , ( size_t ) n , & w )) != 0) 809 ( t ); 810 `memy ( w , tmp , ( size_t ) n ); 811 *(**) wp = w ; 812 * p = 1; 814 } } @../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 , dbv ) 36 T_Ip * ; 37 objc ; 38 T_Obj * CONST objv []; 39 DB_ENV * dbv ; 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 = dbv -> `lock_de (dbv, ag , picy , NULL ); 117 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lock detect"); 118 ( su ); 119 } } 128 $t_LockG ( , objc , objv , dbv ) 129 T_Ip * ; 130 objc ; 131 T_Obj * CONST objv []; 132 DB_ENV * dbv ; 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 ( , dbv , 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_ ( dbv -> v , mp ); 202 ( su ); 203 } } 212 $t_LockSt ( , objc , objv , dbv ) 213 T_Ip * ; 214 objc ; 215 T_Obj * CONST objv []; 216 DB_ENV * dbv ; 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 = dbv -> `lock_ (dbv, & , 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 ("Numb olockab˅tis", -> _is ); 252 `MAKE_STAT_LIST ("Cunumb olocks", -> _ocks ); 253 `MAKE_STAT_LIST ("Maximumumb olocksr", -> _maxocks ); 254 `MAKE_STAT_LIST ("Maximumumber ofocks inny hash bucket", 255 -> _maxhlocks ); 256 `MAKE_STAT_LIST ("Maximumumber ofock steals fornmptyartition", 257 -> _lockls ); 258 `MAKE_STAT_LIST ("Maximumumberock steals innyartition", 259 -> _maxlls ); 260 `MAKE_STAT_LIST ("Cunumb olocks", -> _ocks ); 261 `MAKE_STAT_LIST ("Maximumumb olocksr", -> _maxocks ); 262 `MAKE_STAT_LIST ("Cunumb oobjes", -> _nobjes ); 263 `MAKE_STAT_LIST ("Maximumumb oobjesr", -> _maxnobjes ); 264 `MAKE_STAT_LIST ("Maximumumber of objects inny hash bucket", 265 -> _maxhobjes ); 266 `MAKE_STAT_LIST ("Maximumumber of object steals fornmptyartition", 267 -> _objels ); 268 `MAKE_STAT_LIST ("Maximumumber object steals innyartition", 269 -> _maxols ); 270 `MAKE_STAT_LIST ("Lockeques", -> _eques ); 271 `MAKE_STAT_LIST ("Locks", -> _Ės ); 272 `MAKE_STAT_LIST ("Lock upgdes", -> _nupgde ); 273 `MAKE_STAT_LIST ("Lock downgdes", -> _ndowngde ); 274 `MAKE_STAT_LIST ("Number of conflictedocks for which we waited", 275 -> _lock_wa ); 276 `MAKE_STAT_LIST ("Number of conflictedocks for which we didot wait", 277 -> _lock_nowa ); 278 `MAKE_STAT_LIST ("Ddlockdeed", -> _nddlocks ); 279 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 280 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 281 `MAKE_STAT_LIST ("Numb oobjeoti was", -> _objs_wa ); 282 `MAKE_STAT_LIST ("Number of objectllocationowaits", 283 -> _objs_nowa ); 284 `MAKE_STAT_LIST ("Number ofockerllocation waits", 285 -> _locks_wa ); 286 `MAKE_STAT_LIST ("Number ofockerllocationowaits", 287 -> _locks_nowa ); 288 `MAKE_STAT_LIST ("Maximum hash buckgth", -> _hash_n ); 289 `MAKE_STAT_LIST ("Lockimeouvue", -> _locktimeout ); 290 `MAKE_STAT_LIST ("Numb olockimeouts", -> _ocktimeouts ); 291 `MAKE_STAT_LIST ("Tniځimeouvue", -> _tximeout ); 292 `MAKE_STAT_LIST ("Numb oiځimeouts", -> _ximeouts ); 293 `MAKE_STAT_LIST ("Numbockti mux was", -> __wa ); 294 `MAKE_STAT_LIST ("Numberockartition mutexowaits", 295 -> __nowa ); 296 `MAKE_STAT_LIST ("Maximumumber waits onnyockartition mutex", 297 -> __max_wa ); 298 `MAKE_STAT_LIST ("Maximumumberowaits onnyockartition mutex", 299 -> __max_nowa ); 301 `T_SObjResu ( , s ); 302 r : 303 `__os_u ( dbv -> v , ); 304 ( su ); 305 } } 314 $t_LockTimeout ( , objc , objv , dbv ) 315 T_Ip * ; 316 objc ; 317 T_Obj * CONST objv []; 318 DB_ENV * dbv ; 320 timeout ; 321 su , t ; 326 i( objc != 3) { 327 `T_WrgNumArgs ( , 2, objv , "?timeout?"); 328 ( TCL_ERROR ); 330 su = `T_GLgFromObj ( , objv [2], & timeout ); 331 i( su ! TCL_OK ) 332 ( su ); 333 `_debug_check (); 334 t = dbv -> `t_timeout (dbv, ( u_t32_t ) timeout , 335 DB_SET_LOCK_TIMEOUT ); 336 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lockimeout"); 337 ( su ); 338 } } 345 $lock_Cmd ( Da , , objc , objv ) 346 ClDa Da ; 347 T_Ip * ; 348 objc ; 349 T_Obj * CONST objv []; 351 cڡ * lkcmds [] = { 353 NULL 355 elkcmds { 356 LKPUT 358 DB_ENV * dbv ; 359 DB_LOCK * lock ; 360 DBTCL_INFO * lk ; 361 cmddex , su , t ; 363 `T_RetResu ( ); 364 lock = ( DB_LOCK *) Da ; 365 lk = `_PToInfo ((*) lock ); 366 su = TCL_OK ; 368 i( lock = NULL ) { 369 `T_SResu ( , "NULLock", TCL_STATIC ); 370 ( TCL_ERROR ); 372 i( lk = NULL ) { 373 `T_SResu ( , "NULLock infpor", TCL_STATIC ); 374 ( TCL_ERROR ); 377 dbv = `NAME_TO_ENV ( lk -> i_ -> i_me ); 381 i( objc != 2) { 382 `T_WrgNumArgs ( , 2, objv , NULL ); 383 ( TCL_ERROR ); 389 i( `T_GIndexFromObj ( , 390 objv [1], lkcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 391 ( `IS_HELP ( objv [1])); 393 ( lkcmds ) cmddex ) { 394 LKPUT : 395 `_debug_check (); 396 t = dbv -> `lock_put (dbv, lock ); 397 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 399 () `T_DeCommd ( , lk -> i_me ); 400 `_DeInfo ( lk ); 401 `__os_ ( dbv -> v , lock ); 404 ( su ); 405 } } 413 $t_LockVec ( , objc , objv , dbv ) 414 T_Ip * ; 415 objc ; 416 T_Obj * CONST objv []; 417 DB_ENV * dbv ; 419 cڡ * lvts [] = { 421 NULL 423 elvts { 424 LVNOWAIT 426 cڡ * lks [] = { 432 NULL 434 elks { 435 LKGET , 436 LKPUT , 437 LKPUTALL , 438 LKPUTOBJ , 439 LKTIMEOUT 442 DB_LOCK * lock ; 443 DB_LOCKREQ li ; 444 DBT obj ; 445 T_Obj ** myobjv , * s , * this ; 446 * mp ; 447 u_t32_t ag , lockid ; 448 obj , i , myobjc , tdex , su , t ; 449 * lockme , msg [ MSG_SIZE ], wme [MSG_SIZE]; 451 su = TCL_OK ; 452 `memt ( wme , 0, MSG_SIZE ); 453 `memt (& li , 0, ( DB_LOCKREQ )); 454 ag = 0; 455 obj = 0; 456 mp = NULL ; 461 i( `T_GIndexFromObj ( , objv [2], 462 lvts , "ti", TCL_EXACT , & tdex = TCL_OK ) { 463 ( lvts ) tdex ) { 464 LVNOWAIT : 465 ag | DB_LOCK_NOWAIT ; 468 i = 3; 470 i( `IS_HELP ( objv [2]= TCL_OK ) 471 ( TCL_OK ); 472 `T_RetResu ( ); 473 i = 2; 479 su = `_GUI32 ( , objv [ i ++], & lockid ); 480 i( su ! TCL_OK ) 481 ( su ); 488 s = `T_NewLiObj (0, NULL ); 489 i < objc ) { 493 lock = NULL ; 494 su = `T_LiObjGEmts ( , objv [ i ], 495 & myobjc , & myobjv ); 496 i( su = TCL_OK ) 497 i ++; 506 i( `T_GIndexFromObj ( , myobjv [0], 507 lks , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 508 su = `IS_HELP ( myobjv [0]); 509 r ; 511 ( lks ) tdex ) { 512 LKGET : 513 i( myobjc != 3) { 514 `T_WrgNumArgs ( , 1, myobjv , 516 su = TCL_ERROR ; 517 r ; 519 su = `_LockMode ( , myobjv [2], & li . mode ); 520 i( su ! TCL_OK ) 521 r ; 522 t = `_CyObjBys ( , myobjv [1], & mp , 523 & obj . size , & obj ); 524 i( t != 0) { 525 su = `_RuSup ( , t , 526 `DB_RETOK_STD ( t ), "lock vec"); 527 ( su ); 529 obj . da = mp ; 530 t = `_GThisLock ( , dbv , lockid , ag , 531 & obj , li . mode , wme ); 532 i( t != 0) { 533 su = `_RuSup ( , t , 534 `DB_RETOK_STD ( t ), "lock vec"); 535 this = `T_NewIObj ( t ); 536 () `T_LiObjAdEmt ( , s , 537 this ); 538 r ; 540 this = `NewSgObj ( wme , ` (newname)); 541 () `T_LiObjAdEmt ( , s , this ); 542 i( obj && mp ! NULL ) { 543 `__os_ ( dbv -> v , mp ); 544 obj = 0; 547 LKPUT : 548 i( myobjc != 2) { 549 `T_WrgNumArgs ( , 1, myobjv , 551 su = TCL_ERROR ; 552 r ; 554 li . = DB_LOCK_PUT ; 555 lockme = `T_GSgFromObj ( myobjv [1], NULL ); 556 lock = `NAME_TO_LOCK ( lockme ); 557 i( lock = NULL ) { 558 `tf ( msg , MSG_SIZE , "Invalidock: %s\n", 559 lockme ); 560 `T_SResu ( , msg , TCL_VOLATILE ); 561 su = TCL_ERROR ; 562 r ; 564 li . lock = *lock; 566 LKPUTALL : 567 i( myobjc != 1) { 568 `T_WrgNumArgs ( , 1, myobjv , 570 su = TCL_ERROR ; 571 r ; 573 li . = DB_LOCK_PUT_ALL ; 575 LKPUTOBJ : 576 i( myobjc != 2) { 577 `T_WrgNumArgs ( , 1, myobjv , 579 su = TCL_ERROR ; 580 r ; 582 li . = DB_LOCK_PUT_OBJ ; 583 t = `_CyObjBys ( , myobjv [1], & mp , 584 & obj . size , & obj ); 585 i( t != 0) { 586 su = `_RuSup ( , t , 587 `DB_RETOK_STD ( t ), "lock vec"); 588 ( su ); 590 obj . da = mp ; 591 li . obj = &obj; 593 LKTIMEOUT : 594 li . = DB_LOCK_TIMEOUT ; 602 `_debug_check (); 603 t = dbv -> `lock_vec (dbv, lockid , ag , & li , 1, NULL ); 608 this = `T_NewIObj ( t ); 609 su = `T_LiObjAdEmt ( , s , this ); 610 i( t !0 && su = TCL_OK ) 611 su = `_RuSup ( , t , 612 `DB_RETOK_STD ( t ), "lockut"); 613 i( obj && mp ! NULL ) { 614 `__os_ ( dbv -> v , mp ); 615 obj = 0; 622 `_LockPutInfo ( , li . , lock , lockid , & obj ); 625 i( su = TCL_OK && s ) 626 `T_SObjResu ( , s ); 627 r : 628 ( su ); 629 } } 632 $_LockMode ( , obj , mode ) 633 T_Ip * ; 634 T_Obj * obj ; 635 db_lockmode_t * mode ; 637 cڡ * lkmode [] = { 644 NULL 646 elkmode { 647 LK_NG , 648 LK_READ , 649 LK_WRITE , 650 LK_IWRITE , 651 LK_IREAD , 652 LK_IWR 654 tdex ; 656 i( `T_GIndexFromObj ( , obj , lkmode , "option", 657 TCL_EXACT , & tdex ! TCL_OK ) 658 ( `IS_HELP ( obj )); 659 ( lkmode ) tdex ) { 660 LK_NG : 661 * mode = DB_LOCK_NG ; 663 LK_READ : 664 * mode = DB_LOCK_READ ; 666 LK_WRITE : 667 * mode = DB_LOCK_WRITE ; 669 LK_IREAD : 670 * mode = DB_LOCK_IREAD ; 672 LK_IWRITE : 673 * mode = DB_LOCK_IWRITE ; 675 LK_IWR : 676 * mode = DB_LOCK_IWR ; 679 ( TCL_OK ); 680 } } 683 $_LockPutInfo ( , , lock , lockid , objp ) 684 T_Ip * ; 685 db_lock_t ; 686 DB_LOCK * lock ; 687 u_t32_t lockid ; 688 DBT * objp ; 690 DBTCL_INFO * p , * x ; 691 found ; 693 p = `LIST_FIRST (& __db_fohd ); ! NULL ; = x ) { 694 found = 0; 695 x = `LIST_NEXT ( p , s ); 696 i(( = DB_LOCK_PUT && ( p -> i_lock = lock )) || 697 ( = DB_LOCK_PUT_ALL && p -> i_lock = lockid ) || 698 ( = DB_LOCK_PUT_OBJ && p -> i_lockobj . da && 699 `memcmp ( p -> i_lockobj . da , objp ->da, objp-> size ) == 0)) 700 found = 1; 701 i( found ) { 702 () `T_DeCommd ( , p -> i_me ); 703 `__os_ ( NULL , p -> i_lock ); 704 `_DeInfo ( p ); 707 } } 710 $_GThisLock ( , dbv , lockid , ag , objp , mode , wme ) 711 T_Ip * ; 712 DB_ENV * dbv ; 713 u_t32_t lockid ; 714 u_t32_t ag ; 715 DBT * objp ; 716 db_lockmode_t mode ; 717 * wme ; 719 DBTCL_INFO * v , * ; 720 DB_LOCK * lock ; 721 su , t ; 723 su = TCL_OK ; 724 v = `_PToInfo ((*) dbv ); 725 i( v = NULL ) { 726 `T_SResu ( , "Could fdnv info\n", TCL_STATIC ); 727 ( TCL_ERROR ); 729 `tf ( wme , MSG_SIZE , "%s.lock%d", 730 v -> i_me ,nv-> i_vlockid ); 731 = `_NewInfo ( , NULL , wme , I_LOCK ); 732 i( = NULL ) { 733 `T_SResu ( , "Couldot set up info", 734 TCL_STATIC ); 735 ( TCL_ERROR ); 737 t = `__os_mloc ( dbv -> v , ( DB_LOCK ), & lock ); 738 i( t != 0) { 739 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 740 ( TCL_ERROR ); 742 `_debug_check (); 743 t = dbv -> `lock_g (dbv, lockid , ag , objp , mode , lock ); 744 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "lock get"); 745 i( su = TCL_ERROR ) { 746 `__os_ ( dbv -> v , lock ); 747 `_DeInfo ( ); 748 ( su ); 754 t = `__os_mloc ( dbv -> v , objp -> size , & -> i_lockobj . da ); 755 i( t != 0) { 756 `T_SResu ( , "Couldot duplicate obj", 757 TCL_STATIC ); 758 () dbv -> `lock_put (dbv, lock ); 759 `__os_ ( dbv -> v , lock ); 760 `_DeInfo ( ); 761 su = TCL_ERROR ; 762 r ; 764 `memy ( -> i_lockobj . da , objp ->da, objp-> size ); 765 -> i_lockobj . size = objp ->size; 766 v -> i_vlockid ++; 767 -> i_ = v ; 768 -> i_lock = lockid ; 769 `_SInfoDa ( , lock ); 770 () `T_CeObjCommd ( , wme , 771 ( T_ObjCmdProc *) lock_Cmd , ( ClDa ) lock , NULL ); 772 r : 773 ( su ); 774 } } @../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 , dbv ) 29 T_Ip * ; 30 objc ; 31 T_Obj * CONST objv []; 32 DB_ENV * dbv ; 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 = dbv -> `log_chive (dbv, & 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 ( dbv -> v , 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 , dbv ) 139 T_Ip * ; 140 objc ; 141 T_Obj * CONST objv []; 142 DB_ENV * dbv ; 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_ ( dbv -> v , me ); 169 t = `__os_mloc ( dbv -> v , n , & me ); 170 i( t != 0) { 171 `T_SResu ( , `db_ ( t ), TCL_STATIC ); 174 `_debug_check (); 175 t = dbv -> `log_fe (dbv, & 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_ ( dbv -> v , me ); 187 ( su ); 188 } } 197 $t_LogFlush ( , objc , objv , dbv ) 198 T_Ip * ; 199 objc ; 200 T_Obj * CONST objv []; 201 DB_ENV * dbv ; 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 = dbv -> `log_ush (dbv, lp ); 225 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "log_flush"); 226 ( su ); 227 } } 236 $t_LogG ( , objc , objv , dbv ) 237 T_Ip * ; 238 objc ; 239 T_Obj * CONST objv []; 240 DB_ENV * dbv ; 243 `COMPQUIET ( objv , NULL ); 244 `COMPQUIET ( objc , 0); 245 `COMPQUIET ( dbv , NULL ); 247 `T_SResu ( , "FAIL:og_g dd\n", TCL_STATIC ); 248 ( TCL_ERROR ); 249 } } 258 $t_LogPut ( , objc , objv , dbv ) 259 T_Ip * ; 260 objc ; 261 T_Obj * CONST objv []; 262 DB_ENV * dbv ; 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 = dbv -> `log_put (dbv, & 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 , dbv ) 341 T_Ip * ; 342 objc ; 343 T_Obj * CONST objv []; 344 DB_ENV * dbv ; 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 = dbv -> `log_ (dbv, & , 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 ( dbv -> v , ); 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 ); 625 `T_SResu ( , "loti faed", TCL_STATIC ); 628 ( su ); 629 } } 631 cڡ * gcfwhich [] = { 637 NULL 639 elogwhich { 640 mLOGCONF_AUTO , 641 mLOGCONF_DIRECT , 642 mLOGCONF_DSYNC , 643 mLOGCONF_INMEMORY , 644 mLOGCONF_ZERO 655 $t_LogCfig ( , dbv , li ) 656 T_Ip * ; 657 DB_ENV * dbv ; 658 T_Obj * li ; 660 cڡ * cfoff [] = { 663 NULL 665 ecfoff { 666 LOGCONF_OFF , 667 LOGCONF_ON 669 T_Obj ** myobjv , * off , * which ; 670 myobjc , , tdex , su , t ; 671 u_t32_t wh ; 673 su = `T_LiObjGEmts ( , li , & myobjc , & myobjv ); 674 i( myobjc != 2) 675 `T_WrgNumArgs ( , 2, myobjv , "?{which onoff}?"); 676 which = myobjv [0]; 677 off = myobjv [1]; 678 i( su ! TCL_OK ) 679 ( su ); 680 i( `T_GIndexFromObj ( , which , cfwhich , "option", 681 TCL_EXACT , & tdex ! TCL_OK ) 682 ( `IS_HELP ( which )); 684 ( logwhich ) tdex ) { 685 LOGCONF_AUTO : 686 wh = DB_LOG_AUTO_REMOVE ; 688 LOGCONF_DIRECT : 689 wh = DB_LOG_DIRECT ; 691 LOGCONF_DSYNC : 692 wh = DB_LOG_DSYNC ; 694 LOGCONF_INMEMORY : 695 wh = DB_LOG_IN_MEMORY ; 697 LOGCONF_ZERO : 698 wh = DB_LOG_ZERO ; 701 ( TCL_ERROR ); 703 i( `T_GIndexFromObj ( , off , cfoff , "option", 704 TCL_EXACT , & tdex ! TCL_OK ) 705 ( `IS_HELP ( off )); 706 ( cfoff ) tdex ) { 707 LOGCONF_OFF : 708 = 0; 710 LOGCONF_ON : 711 = 1; 714 ( TCL_ERROR ); 716 t = dbv -> `log_t_cfig (dbv, wh , ); 717 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 719 } } 729 $t_LogGCfig ( , dbv , which ) 730 T_Ip * ; 731 DB_ENV * dbv ; 732 T_Obj * which ; 734 T_Obj * s ; 735 , tdex , su , t ; 736 u_t32_t wh ; 738 i( `T_GIndexFromObj ( , which , cfwhich , "option", 739 TCL_EXACT , & tdex ! TCL_OK ) 740 ( `IS_HELP ( which )); 742 s = NULL ; 743 ( logwhich ) tdex ) { 744 LOGCONF_AUTO : 745 wh = DB_LOG_AUTO_REMOVE ; 747 LOGCONF_DIRECT : 748 wh = DB_LOG_DIRECT ; 750 LOGCONF_DSYNC : 751 wh = DB_LOG_DSYNC ; 753 LOGCONF_INMEMORY : 754 wh = DB_LOG_IN_MEMORY ; 756 LOGCONF_ZERO : 757 wh = DB_LOG_ZERO ; 760 ( TCL_ERROR ); 762 t = dbv -> `log_g_cfig (dbv, wh , & ); 763 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 764 "vog_cfig")= TCL_OK ) { 765 s = `T_NewIObj ( ); 766 `T_SObjResu ( , s ); 768 ( su ); 769 } } @../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 , dbv ) 68 T_Ip * ; 69 objc ; 70 T_Obj * CONST objv []; 71 DB_ENV * dbv ; 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 = dbv -> `memp_sync (dbv, lp ); 95 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "memp sync")); 96 } } 105 $t_MpTrick ( , objc , objv , dbv ) 106 T_Ip * ; 107 objc ; 108 T_Obj * CONST objv []; 109 DB_ENV * dbv ; 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 = dbv -> `memp_ick (dbv, 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 , dbv , v ) 148 T_Ip * ; 149 objc ; 150 T_Obj * CONST objv []; 151 DB_ENV * dbv ; 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 = dbv -> `memp_f (dbv, & 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 , dbv ) 310 T_Ip * ; 311 objc ; 312 T_Obj * CONST objv []; 313 DB_ENV * dbv ; 315 DB_MPOOL_FSTAT ** f , ** vef ; 316 DB_MPOOL_STAT * ; 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 = dbv -> `memp_ (dbv, & , & 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 bucketowaits", 375 -> _hash_max_nowa ); 376 `MAKE_STAT_LIST ("Maximumumber of hash bucket waits", 377 -> _hash_max_wa ); 378 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 379 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 380 `MAKE_STAT_LIST ("Bufroz", -> _mvcc_oz ); 381 `MAKE_STAT_LIST ("Bufrthawed", -> _mvcc_thawed ); 382 `MAKE_STAT_LIST ("Froz bufrd", -> _mvcc_d ); 383 `MAKE_STAT_LIST ("Paglotis", -> _loc ); 384 `MAKE_STAT_LIST ("Bucketsxamined duringllocation", 385 -> _loc_bucks ); 386 `MAKE_STAT_LIST ("Maximum bucketsxamined duringllocation", 387 -> _loc_max_bucks ); 388 `MAKE_STAT_LIST ("Pageexamed durgoti", -> _loc_ges ); 389 `MAKE_STAT_LIST ("Maximumagesxamined duringllocation", 390 -> _loc_max_ges ); 391 `MAKE_STAT_LIST ("Thadwag obufI/O", -> _io_wa ); 398 s1 = s ; 399 vef = f ; f ! NULL && *fsp != NULL; fsp++) { 400 s = `T_NewObj (); 401 su = `_SLiEm ( , s , "File Name", 402 ` ("FName"), (* f )-> fe_me , 403 ` ((* f )-> fe_me )); 404 i( su ! TCL_OK ) 405 r ; 406 `MAKE_STAT_LIST ("Pagsize", (* f )-> _gesize ); 407 `MAKE_STAT_LIST ("Pages mapped intoddress space", 408 (* f )-> _m ); 409 `MAKE_STAT_LIST ("Cachhs", (* f )-> _che_h ); 410 `MAKE_STAT_LIST ("Cachmiss", (* f )-> _che_miss ); 411 `MAKE_STAT_LIST ("Paged", (* f )-> _ge_ ); 412 `MAKE_STAT_LIST ("Pagead in", (* f )-> _ge_ ); 413 `MAKE_STAT_LIST ("Pagewrn", (* f )-> _ge_out ); 418 su = `T_LiObjAdEmt ( , s1 , s ); 419 i( su ! TCL_OK ) 420 r ; 423 `T_SObjResu ( , s1 ); 424 r : 425 `__os_u ( dbv -> v , ); 426 i( vef ! NULL ) 427 `__os_u ( dbv -> v , vef ); 428 ( su ); 429 } } 436 $mp_Cmd ( Da , , objc , objv ) 437 ClDa Da ; 438 T_Ip * ; 439 objc ; 440 T_Obj * CONST objv []; 442 cڡ * mpcmds [] = { 451 NULL 453 empcmds { 454 MPCLOSE , 455 MPFSYNC , 456 MPGET , 457 MPGETCLEARLEN , 458 MPGETFILEID , 459 MPGETFTYPE , 460 MPGETLSNOFFSET , 461 MPGETPGCOOKIE 463 DB_MPOOLFILE * mp ; 464 cmddex , y , ngth , su , t ; 465 DBTCL_INFO * mp ; 466 T_Obj * s ; 467 * obj_me ; 468 u_t32_t vue ; 469 t32_t tv ; 470 u_t8_t feid [ DB_FILE_ID_LEN ]; 471 DBT cook ; 473 `T_RetResu ( ); 474 mp = ( DB_MPOOLFILE *) Da ; 475 obj_me = `T_GSgFromObj ( objv [0], & ngth ); 476 mp = `_NameToInfo ( obj_me ); 477 su = TCL_OK ; 479 i( mp = NULL ) { 480 `T_SResu ( , "NULL mpor", TCL_STATIC ); 481 ( TCL_ERROR ); 483 i( mp = NULL ) { 484 `T_SResu ( , "NULL mfpor", TCL_STATIC ); 485 ( TCL_ERROR ); 492 i( `T_GIndexFromObj ( , 493 objv [1], mpcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 494 ( `IS_HELP ( objv [1])); 496 s = NULL ; 497 ( mpcmds ) cmddex ) { 498 MPCLOSE : 499 i( objc != 2) { 500 `T_WrgNumArgs ( , 1, objv , NULL ); 501 ( TCL_ERROR ); 503 `_debug_check (); 504 t = mp -> `o (mp, 0); 505 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 507 `_MpInfoDe ( , mp ); 508 () `T_DeCommd ( , mp -> i_me ); 509 `_DeInfo ( mp ); 511 MPFSYNC : 512 i( objc != 2) { 513 `T_WrgNumArgs ( , 1, objv , NULL ); 514 ( TCL_ERROR ); 516 `_debug_check (); 517 t = mp -> `sync (mp); 518 s = `T_NewIObj ( t ); 520 MPGET : 521 su = `t_MpG ( , objc , objv , mp , mp ); 523 MPGETCLEARLEN : 524 i( objc != 2) { 525 `T_WrgNumArgs ( , 1, objv , NULL ); 526 ( TCL_ERROR ); 528 t = mp -> `g_r_n (mp, & vue ); 529 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 530 "mg_r_n")= TCL_OK ) 531 s = `T_NewIObj (() vue ); 533 MPGETFILEID : 534 i( objc != 2) { 535 `T_WrgNumArgs ( , 1, objv , NULL ); 536 ( TCL_ERROR ); 538 t = mp -> `g_feid (mp, feid ); 539 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 540 "mg_feid")= TCL_OK ) 541 s = `NewSgObj ((*) feid , DB_FILE_ID_LEN ); 543 MPGETFTYPE : 544 i( objc != 2) { 545 `T_WrgNumArgs ( , 1, objv , NULL ); 546 ( TCL_ERROR ); 548 t = mp -> `g_y (mp, & y ); 549 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 550 "mg_y")= TCL_OK ) 551 s = `T_NewIObj ( y ); 553 MPGETLSNOFFSET : 554 i( objc != 2) { 555 `T_WrgNumArgs ( , 1, objv , NULL ); 556 ( TCL_ERROR ); 558 t = mp -> `g_l_offt (mp, & tv ); 559 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 560 "mg_l_offt")= TCL_OK ) 561 s = `T_NewIObj ( tv ); 563 MPGETPGCOOKIE : 564 i( objc != 2) { 565 `T_WrgNumArgs ( , 1, objv , NULL ); 566 ( TCL_ERROR ); 568 `memt (& cook , 0, ( DBT )); 569 t = mp -> `g_pgcook (mp, & cook ); 570 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 571 "mg_pgcook")= TCL_OK ) 572 s = `T_NewByAayObj (( u_ch *) cook . da , 573 () cook . size ); 580 i( su = TCL_OK && s ) 581 `T_SObjResu ( , s ); 582 ( su ); 583 } } 589 $t_MpG ( , objc , objv , mp , mp ) 590 T_Ip * ; 591 objc ; 592 T_Obj * CONST objv []; 593 DB_MPOOLFILE * mp ; 594 DBTCL_INFO * mp ; 596 cڡ * mpg [] = { 602 NULL 604 empg { 605 MPGET_CREATE , 606 MPGET_DIRTY , 607 MPGET_LAST , 608 MPGET_NEW , 609 MPGET_TXN 612 DBTCL_INFO * ; 613 T_Obj * s ; 614 DB_TXN * txn ; 615 db_pgno_t pgno ; 616 u_t32_t ag ; 617 i , gno , tdex , su , t ; 618 * g , msg [ MSG_SIZE ], wme [MSG_SIZE]; 619 * ge ; 621 txn = NULL ; 622 su = TCL_OK ; 623 `memt ( wme , 0, MSG_SIZE ); 624 i = 2; 625 ag = 0; 626 i < objc ) { 627 i( `T_GIndexFromObj ( , objv [ i ], 628 mpg , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 634 i( `IS_HELP ( objv [ i ]= TCL_OK ) 635 ( TCL_OK ); 636 `T_RetResu ( ); 639 i ++; 640 ( mpg ) tdex ) { 641 MPGET_CREATE : 642 ag | DB_MPOOL_CREATE ; 644 MPGET_DIRTY : 645 ag | DB_MPOOL_DIRTY ; 647 MPGET_LAST : 648 ag | DB_MPOOL_LAST ; 650 MPGET_NEW : 651 ag | DB_MPOOL_NEW ; 653 MPGET_TXN : 654 i( i = objc ) { 655 `T_WrgNumArgs ( , 2, objv , "?-txn id?"); 656 su = TCL_ERROR ; 659 g = `T_GSgFromObj ( objv [ i ++], NULL ); 660 txn = `NAME_TO_TXN ( g ); 661 i( txn = NULL ) { 662 `tf ( msg , MSG_SIZE , 663 "mpo g: Invidxn: %s\n", g ); 664 `T_SResu ( , msg , TCL_VOLATILE ); 665 su = TCL_ERROR ; 669 i( su ! TCL_OK ) 670 r ; 675 gno = 0; 676 i( i ! objc ) { 677 i( i ! objc - 1) { 678 `T_WrgNumArgs ( , 2, objv , "?args? ?pgno?"); 679 su = TCL_ERROR ; 680 r ; 682 su = `T_GIFromObj ( , objv [ i ++], & gno ); 683 i( su ! TCL_OK ) 684 r ; 687 `tf ( wme , (newname), "%s.pg%d", 688 mp -> i_me , mp-> i_mgid ); 689 = `_NewInfo ( , NULL , wme , I_PG ); 690 i( = NULL ) { 691 `T_SResu ( , "Couldot set up info", 692 TCL_STATIC ); 693 ( TCL_ERROR ); 695 `_debug_check (); 696 pgno = ( db_pgno_t ) gno ; 697 t = mp -> `g (mp, & pgno , NULL , ag , & ge ); 698 su = `_RuSup ( , t , `DB_RETOK_MPGET (ret), "mpool get"); 699 i( su = TCL_ERROR ) 700 `_DeInfo ( ); 706 mp -> i_mgid ++; 707 -> i_ = mp ; 708 -> i_pgno = pgno ; 709 -> i_pgsz = mp ->i_pgsz; 710 `_SInfoDa ( , ge ); 711 () `T_CeObjCommd ( , wme , 712 ( T_ObjCmdProc *) pg_Cmd , ( ClDa ) ge , NULL ); 713 s = `NewSgObj ( wme , ` (newname)); 714 `T_SObjResu ( , s ); 716 r : 717 ( su ); 718 } } 725 $pg_Cmd ( Da , , objc , objv ) 726 ClDa Da ; 727 T_Ip * ; 728 objc ; 729 T_Obj * CONST objv []; 731 cڡ * pgcmds [] = { 737 NULL 739 epgcmds { 740 PGINIT , 741 PGISSET , 742 PGNUM , 743 PGSIZE , 744 PGPUT 746 DB_MPOOLFILE * mp ; 747 cmddex , ngth , su ; 748 * obj_me ; 749 * ge ; 750 DBTCL_INFO * pg ; 751 T_Obj * s ; 753 `T_RetResu ( ); 754 ge = (*) Da ; 755 obj_me = `T_GSgFromObj ( objv [0], & ngth ); 756 pg = `_NameToInfo ( obj_me ); 757 mp = `NAME_TO_MP ( pg -> i_ -> i_me ); 758 su = TCL_OK ; 760 i( ge = NULL ) { 761 `T_SResu ( , "NULLagpor", TCL_STATIC ); 762 ( TCL_ERROR ); 764 i( mp = NULL ) { 765 `T_SResu ( , "NULL mpor", TCL_STATIC ); 766 ( TCL_ERROR ); 768 i( pg = NULL ) { 769 `T_SResu ( , "NULLagfpor", TCL_STATIC ); 770 ( TCL_ERROR ); 777 i( `T_GIndexFromObj ( , 778 objv [1], pgcmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 779 ( `IS_HELP ( objv [1])); 781 s = NULL ; 782 ( pgcmds ) cmddex ) { 783 PGNUM : 784 s = `T_NewWideIObj (( T_WideI ) pg -> i_pgno ); 786 PGSIZE : 787 s = `T_NewWideIObj (( T_WideI ) pg -> i_pgsz ); 789 PGPUT : 790 su = `t_Pg ( , objc , objv , ge , mp , pg ); 792 PGINIT : 793 su = `t_PgIn ( , objc , objv , ge , pg ); 795 PGISSET : 796 su = `t_PgIst ( , objc , objv , ge , pg ); 804 i( su = TCL_OK && s ! NULL ) 805 `T_SObjResu ( , s ); 806 ( su ); 807 } } 810 $t_Pg ( , objc , objv , ge , mp , pg ) 811 T_Ip * ; 812 objc ; 813 T_Obj * CONST objv []; 814 * ge ; 815 DB_MPOOLFILE * mp ; 816 DBTCL_INFO * pg ; 818 cڡ * pgt [] = { 820 NULL 822 epgt { 823 PGDISCARD 825 u_t32_t ag ; 826 i , tdex , su , t ; 828 su = TCL_OK ; 829 i = 2; 830 ag = 0; 831 i < objc ) { 832 i( `T_GIndexFromObj ( , objv [ i ], 833 pgt , "ti", TCL_EXACT , & tdex ! TCL_OK ) 834 ( `IS_HELP ( objv [ i ])); 835 i ++; 836 ( pgt ) tdex ) { 837 PGDISCARD : 838 ag | DB_MPOOL_DISCARD ; 843 `_debug_check (); 844 t = mp -> `put (mp, ge , DB_PRIORITY_UNCHANGED , ag ); 846 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "page"); 848 () `T_DeCommd ( , pg -> i_me ); 849 `_DeInfo ( pg ); 850 ( su ); 851 } } 854 $t_PgIn ( , objc , objv , ge , pg ) 855 T_Ip * ; 856 objc ; 857 T_Obj * CONST objv []; 858 * ge ; 859 DBTCL_INFO * pg ; 861 T_Obj * s ; 862 * p , * dp , wv ; 863 ngth , pgsz , su ; 864 u_ch * s ; 866 su = TCL_OK ; 867 i( objc != 3) { 868 `T_WrgNumArgs ( , 2, objv , "val"); 869 ( TCL_ERROR ); 872 pgsz = pg -> i_pgsz ; 873 su = `T_GLgFromObj ( , objv [2], & wv ); 874 i( su ! TCL_OK ) { 875 s = `T_GByAayFromObj ( objv [2], & ngth ); 876 i( s = NULL ) 877 ( TCL_ERROR ); 878 `memy ( ge , s , ( size_t )(( ngth < pgsz ) ?ength :gsz)); 879 su = TCL_OK ; 881 p = (*) ge ; 882 dp = p + (( u_t ) pgsz / ()); <ndp;++) 883 * p = wv ; 885 s = `T_NewIObj (0); 886 `T_SObjResu ( , s ); 887 ( su ); 888 } } 891 $t_PgIst ( , objc , objv , ge , pg ) 892 T_Ip * ; 893 objc ; 894 T_Obj * CONST objv []; 895 * ge ; 896 DBTCL_INFO * pg ; 898 T_Obj * s ; 899 * p , * dp , wv ; 900 ngth , pgsz , su ; 901 u_ch * s ; 903 su = TCL_OK ; 904 i( objc != 3) { 905 `T_WrgNumArgs ( , 2, objv , "val"); 906 ( TCL_ERROR ); 909 pgsz = pg -> i_pgsz ; 910 su = `T_GLgFromObj ( , objv [2], & wv ); 911 i( su ! TCL_OK ) { 912 i(( s = `T_GByAayFromObj ( objv [2], & ngth )= NULL ) 913 ( TCL_ERROR ); 914 su = TCL_OK ; 916 i( `memcmp ( ge , s , 917 ( size_t )(( ngth < pgsz ) ?ength :gsz)) != 0) { 918 s = `T_NewIObj (0); 919 `T_SObjResu ( , s ); 920 ( su ); 923 p = (*) ge ; 929 dp = p + (( u_t ) pgsz / ()); <ndp;++) 930 i(* p ! wv ) { 931 s = `T_NewIObj (0); 932 `T_SObjResu ( , s ); 933 ( su ); 937 s = `T_NewIObj (1); 938 `T_SObjResu ( , s ); 939 ( su ); 940 } } @../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_RGTwo ( , dbv , ) 109 T_Ip * ; 110 DB_ENV * dbv ; 111 ; 113 T_Obj * myobjv [2], * s ; 114 u_t32_t v1 , v2 ; 115 myobjc , su , t ; 117 t = 0; 118 v1 = v2 = 0; 119 ) { 120 DBTCL_GETCLOCK : 121 t = dbv -> `p_g_ockskew (dbv, & v1 , & v2 ); 123 DBTCL_GETLIMIT : 124 t = dbv -> `p_g_lim (dbv, & v1 , & v2 ); 126 DBTCL_GETREQ : 127 t = dbv -> `p_g_que (dbv, & v1 , & v2 ); 130 ( TCL_ERROR ); 132 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 133 "v_g")= TCL_OK ) { 134 myobjc = 2; 135 myobjv [0] = `T_NewLgObj (() v1 ); 136 myobjv [1] = `T_NewLgObj (() v2 ); 137 s = `T_NewLiObj ( myobjc , myobjv ); 138 `T_SObjResu ( , s ); 140 ( su ); 141 } } 150 $t_RGCfig ( , dbv , which ) 151 T_Ip * ; 152 DB_ENV * dbv ; 153 T_Obj * which ; 155 cڡ * cfwhich [] = { 161 NULL 163 ecfwhich { 164 REPGCONF_BULK , 165 REPGCONF_DELAYCLIENT , 166 REPGCONF_LEASE , 167 REPGCONF_NOAUTOINIT , 168 REPGCONF_NOWAIT 170 T_Obj * s ; 171 , tdex , su , t ; 172 u_t32_t wh ; 174 i( `T_GIndexFromObj ( , which , cfwhich , "option", 175 TCL_EXACT , & tdex ! TCL_OK ) 176 ( `IS_HELP ( which )); 178 s = NULL ; 179 ( cfwhich ) tdex ) { 180 REPGCONF_BULK : 181 wh = DB_REP_CONF_BULK ; 183 REPGCONF_DELAYCLIENT : 184 wh = DB_REP_CONF_DELAYCLIENT ; 186 REPGCONF_LEASE : 187 wh = DB_REP_CONF_LEASE ; 189 REPGCONF_NOAUTOINIT : 190 wh = DB_REP_CONF_NOAUTOINIT ; 192 REPGCONF_NOWAIT : 193 wh = DB_REP_CONF_NOWAIT ; 196 ( TCL_ERROR ); 198 t = dbv -> `p_g_cfig (dbv, wh , & ); 199 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 200 "v_cfig")= TCL_OK ) { 201 s = `T_NewIObj ( ); 202 `T_SObjResu ( , s ); 204 ( su ); 205 } } 215 $t_RGTimeout ( , dbv , which ) 216 T_Ip * ; 217 DB_ENV * dbv ; 218 T_Obj * which ; 220 cڡ * towhich [] = { 230 NULL 232 etowhich { 233 REPGTO_ACK , 234 REPGTO_CKP , 235 REPGTO_CONN , 236 REPGTO_ELECT , 237 REPGTO_ELECT_RETRY , 238 REPGTO_FULL , 239 REPGTO_HB_MON , 240 REPGTO_HB_SEND , 241 REPGTO_LEASE 243 T_Obj * s ; 244 tdex , su , t , wh ; 245 u_t32_t to ; 247 i( `T_GIndexFromObj ( , which , towhich , "option", 248 TCL_EXACT , & tdex ! TCL_OK ) 249 ( `IS_HELP ( which )); 251 s = NULL ; 252 ( towhich ) tdex ) { 253 REPGTO_ACK : 254 wh = DB_REP_ACK_TIMEOUT ; 256 REPGTO_CKP : 257 wh = DB_REP_CHECKPOINT_DELAY ; 259 REPGTO_CONN : 260 wh = DB_REP_CONNECTION_RETRY ; 262 REPGTO_ELECT : 263 wh = DB_REP_ELECTION_TIMEOUT ; 265 REPGTO_ELECT_RETRY : 266 wh = DB_REP_ELECTION_RETRY ; 268 REPGTO_FULL : 269 wh = DB_REP_FULL_ELECTION_TIMEOUT ; 271 REPGTO_HB_MON : 272 wh = DB_REP_HEARTBEAT_MONITOR ; 274 REPGTO_HB_SEND : 275 wh = DB_REP_HEARTBEAT_SEND ; 277 REPGTO_LEASE : 278 wh = DB_REP_LEASE_TIMEOUT ; 281 ( TCL_ERROR ); 283 t = dbv -> `p_g_timeout (dbv, wh , & to ); 284 i(( su = `_RuSup ( , t , `DB_RETOK_STD (ret), 285 "v_cfig")= TCL_OK ) { 286 s = `T_NewLgObj (() to ); 287 `T_SObjResu ( , s ); 289 ( su ); 290 } } 293 #ifde CONFIG_TEST 302 $t_RE ( , objc , objv , dbv ) 303 T_Ip * ; 304 objc ; 305 T_Obj * CONST objv []; 306 DB_ENV * dbv ; 308 su , t ; 309 u_t32_t fu_timeout , nses , nves , i , timeout ; 311 i( objc != 6 && objc != 7) { 312 `T_WrgNumArgs ( , 6, objv , 314 ( TCL_ERROR ); 317 i(( su = `_GUI32 ( , objv [2], & nses )! TCL_OK ) 318 ( su ); 319 i(( su = `_GUI32 ( , objv [3], & nves )! TCL_OK ) 320 ( su ); 321 i(( su = `_GUI32 ( , objv [4], & i )! TCL_OK ) 322 ( su ); 323 i(( su = `_GUI32 ( , objv [5], & timeout )! TCL_OK ) 324 ( su ); 325 fu_timeout = 0; 326 i( objc == 7) 327 i(( su = `_GUI32 ( , objv [6], & fu_timeout )) 328 ! TCL_OK ) 329 ( su ); 331 `_debug_check (); 333 i(( t = dbv -> `p_t_iܙy (dbv, i )) != 0) 334 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 336 i(( t = dbv -> `p_t_timeout (dbv, DB_REP_ELECTION_TIMEOUT , 337 timeout )) != 0) 338 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 341 i( fu_timeout !0 && ( t = dbv -> `p_t_timeout (dbenv, 342 DB_REP_FULL_ELECTION_TIMEOUT , fu_timeout )) != 0) 343 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 346 t = dbv -> `p_e (dbv, nses , nves , 0); 347 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_elect")); 348 } } 351 #ifde CONFIG_TEST 360 $t_RFlush ( , objc , objv , dbv ) 361 T_Ip * ; 362 objc ; 363 T_Obj * CONST objv []; 364 DB_ENV * dbv ; 366 t ; 368 i( objc != 2) { 369 `T_WrgNumArgs ( , 2, objv , ""); 370 TCL_ERROR ; 373 `_debug_check (); 374 t = dbv -> `p_ush (dbenv); 375 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_flush")); 376 } } 379 #ifde CONFIG_TEST 388 $t_RSync ( , objc , objv , dbv ) 389 T_Ip * ; 390 objc ; 391 T_Obj * CONST objv []; 392 DB_ENV * dbv ; 394 t ; 396 i( objc != 2) { 397 `T_WrgNumArgs ( , 2, objv , ""); 398 TCL_ERROR ; 401 `_debug_check (); 402 t = dbv -> `p_sync (dbenv, 0); 403 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_sync")); 404 } } 407 #ifde CONFIG_TEST 416 $t_RL ( , objc , objv , dbv ) 417 T_Ip * ; 418 objc ; 419 T_Obj * CONST objv []; 420 DB_ENV * dbv ; 422 u_t32_t ock_ , ock_ow , nses , timeout ; 423 su , t ; 425 `COMPQUIET ( ock_ , 0); 426 `COMPQUIET ( ock_ow , 0); 428 i( objc != 4 && objc != 2) { 429 `T_WrgNumArgs ( , 1, objv , "{nsitesimeout fast slow}"); 430 ( TCL_ERROR ); 433 i(( su = `_GUI32 ( , objv [0], & nses )! TCL_OK ) 434 ( su ); 435 i(( su = `_GUI32 ( , objv [1], & timeout )! TCL_OK ) 436 ( su ); 437 i( objc == 4) { 438 i(( su = `_GUI32 ( , objv [2], & ock_ )) 439 ! TCL_OK ) 440 ( su ); 441 i(( su = `_GUI32 ( , objv [3], & ock_ow )) 442 ! TCL_OK ) 443 ( su ); 445 t = dbv -> `p_t_nses (dbv, nses ); 446 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 448 i( su ! TCL_OK ) 449 ( su ); 450 t = dbv -> `p_t_timeout (dbv, DB_REP_LEASE_TIMEOUT , 451 ( db_timeout_t ) timeout ); 452 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 454 t = dbv -> `p_t_cfig (dbv, DB_REP_CONF_LEASE , 1); 455 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 457 i( su ! TCL_OK ) 458 ( su ); 459 i( objc == 4) 460 t = dbv -> `p_t_ockskew (dbv, ock_ , ock_ow ); 461 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 463 } } 466 #ifde CONFIG_TEST 475 $t_RLim ( , objc , objv , dbv ) 476 T_Ip * ; 477 objc ; 478 T_Obj * CONST objv []; 479 DB_ENV * dbv ; 481 su , t ; 482 u_t32_t bys , gbys ; 484 i( objc != 4) { 485 `T_WrgNumArgs ( , 4, objv , "gbytes bytes"); 486 ( TCL_ERROR ); 489 i(( su = `_GUI32 ( , objv [2], & gbys )! TCL_OK ) 490 ( su ); 491 i(( su = `_GUI32 ( , objv [3], & bys )! TCL_OK ) 492 ( su ); 494 `_debug_check (); 495 i(( t = dbv -> `p_t_lim (dbv, gbys , bys )) != 0) 496 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 499 ( `_RuSup ( , 500 t , `DB_RETOK_STD (ret), "env set_rep_limit")); 501 } } 504 #ifde CONFIG_TEST 513 $t_RReque ( , objc , objv , dbv ) 514 T_Ip * ; 515 objc ; 516 T_Obj * CONST objv []; 517 DB_ENV * dbv ; 519 su , t ; 520 m , max ; 522 i( objc != 4) { 523 `T_WrgNumArgs ( , 4, objv , "min max"); 524 ( TCL_ERROR ); 527 i(( su = `T_GLgFromObj ( , objv [2], & m )! TCL_OK ) 528 ( su ); 529 i(( su = `T_GLgFromObj ( , objv [3], & max )! TCL_OK ) 530 ( su ); 532 `_debug_check (); 533 i(( t = dbv -> `p_t_que (dbv, ( db_timeout_t ) m , 534 ( db_timeout_t ) max )) != 0) 535 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 538 ( `_RuSup ( , 539 t , `DB_RETOK_STD (ret), "envep_request")); 540 } } 543 #ifde CONFIG_TEST 552 $t_RNrchiveTimeout ( , dbv ) 553 T_Ip * ; 554 DB_ENV * dbv ; 556 ENV * v ; 557 REGENV * nv ; 558 REGINFO * f ; 560 v = dbv ->env; 562 `_debug_check (); 563 f = v -> gfo ; 564 nv = f -> imy ; 565 `REP_SYSTEM_LOCK ( v ); 566 `F_CLR ( nv , DB_REGENV_REPLOCKED ); 567 nv -> _timeamp = 0; 568 `REP_SYSTEM_UNLOCK ( v ); 570 ( `_RuSup ( , 571 0, `DB_RETOK_STD (0), "envest forceoarchive_timeout")); 572 } } 575 #ifde CONFIG_TEST 588 $t_RTnt ( , objc , objv , dbv , ) 589 T_Ip * ; 590 objc ; 591 T_Obj * CONST objv []; 592 DB_ENV * dbv ; 593 DBTCL_INFO * ; 595 rg , su , t ; 597 i( objc != 2) { 598 `T_WrgNumArgs ( , 2, objv , "{idransport_func"); 599 ( TCL_ERROR ); 620 i( -> i_p_eid ! NULL ) { 621 `T_DeRefCou ( -> i_p_eid ); 623 -> i_p_eid = objv [0]; 624 `T_InRefCou ( -> i_p_eid ); 625 su = `T_GIFromObj ( , 626 -> i_p_eid , & rg ); 627 i( su ! TCL_OK ) 628 ( su ); 630 i( -> i_p_nd ! NULL ) { 631 `T_DeRefCou ( -> i_p_nd ); 633 -> i_p_nd = objv [1]; 634 `T_InRefCou ( -> i_p_nd ); 635 `_debug_check (); 636 t = dbv -> `p_t_t (dbv, rg , t_p_nd ); 637 ( `_RuSup ( , t , `DB_RETOK_STD (ret), 639 } } 642 #ifde CONFIG_TEST 655 $t_RS ( , objc , objv , dbv ) 656 T_Ip * ; 657 objc ; 658 T_Obj * CONST objv []; 659 DB_ENV * dbv ; 661 cڡ * t [] = { 664 NULL 666 et { 667 TCL_RPSTRT_CLIENT , 668 TCL_RPSTRT_MASTER 670 * g ; 671 i , tdex , t ; 672 u_t32_t ag ; 674 ag = 0; 676 i( objc != 3) { 677 `T_WrgNumArgs ( , 3, objv , "[-master/-client]"); 678 ( TCL_ERROR ); 681 i = 2; 682 i < objc ) { 683 i( `T_GIndexFromObj ( , objv [ i ], t , 684 "ti", TCL_EXACT , & tdex ! TCL_OK ) { 685 g = `T_GSgFromObj ( objv [ i ], NULL ); 686 i( g [0] == '-') 687 ( `IS_HELP ( objv [ i ])); 689 `T_RetResu ( ); 692 i ++; 693 ( t ) tdex ) { 694 TCL_RPSTRT_CLIENT : 695 ag = DB_REP_CLIENT ; 697 TCL_RPSTRT_MASTER : 698 ag = DB_REP_MASTER ; 703 `_debug_check (); 704 t = dbv -> `p_t (dbv, NULL , ag ); 705 ( `_RuSup ( , t , `DB_RETOK_STD (ret), "envep_start")); 706 } } 709 #ifde CONFIG_TEST 718 $t_RProssMesge ( , objc , objv , dbv ) 719 T_Ip * ; 720 objc ; 721 T_Obj * CONST objv []; 722 DB_ENV * dbv ; 724 DBT cڌ , c ; 725 DB_LSN rml ; 726 T_Obj * lli , * myobjv [2], * s ; 727 * mp , * mp ; 728 * msg ; 729 eid ; 730 l , 䓻c , myobjc , su , t ; 732 i( objc != 5) { 733 `T_WrgNumArgs ( , 5, objv , "id controlec"); 734 ( TCL_ERROR ); 736 l = 䓻c = 0; 738 `memt (& cڌ , 0, (control)); 739 `memt (& c , 0, (rec)); 741 i(( su = `T_GIFromObj ( , objv [2], & eid )! TCL_OK ) 742 ( su ); 744 t = `_CyObjBys ( , objv [3], & mp , 745 & cڌ . size , & l ); 746 i( t != 0) { 747 su = `_RuSup ( , t , 748 `DB_RETOK_REPPMSG ( t ), "rep_proc_msg"); 749 ( su ); 751 cڌ . da = mp ; 752 t = `_CyObjBys ( , objv [4], & mp , 753 & c . size , & 䓻c ); 754 i( t != 0) { 755 su = `_RuSup ( , t , 756 `DB_RETOK_REPPMSG ( t ), "rep_proc_msg"); 757 out ; 759 c . da = mp ; 760 `_debug_check (); 761 t = dbv -> `p_oss_mesge (dbv, & cڌ , & c , eid , & rml ); 767 su = `_RuSup ( , t , 768 `DB_RETOK_REPPMSG ( t || = DB_REP_DUPMASTER || 769 t = DB_REP_HOLDELECTION , 772 i( su ! TCL_OK ) 773 out ; 787 myobjc = 2; 788 t ) { 790 myobjv [0] = `T_NewIObj (0); 791 myobjv [1] = `T_NewIObj (0); 793 DB_REP_DUPMASTER : 794 myobjv [0] = `T_NewByAayObj ( 795 ( u_ch *)"DUPMASTER", () ` ("DUPMASTER")); 796 myobjv [1] = `T_NewIObj (0); 798 DB_REP_HOLDELECTION : 799 myobjv [0] = `T_NewByAayObj ( 800 ( u_ch *)"HOLDELECTION", () ` ("HOLDELECTION")); 801 myobjv [1] = `T_NewIObj (0); 803 DB_REP_IGNORE : 804 myobjv [0] = `T_NewLgObj (() rml . fe ); 805 myobjv [1] = `T_NewLgObj (() rml . offt ); 806 lli = `T_NewLiObj ( myobjc , myobjv ); 807 myobjv [0] = `T_NewByAayObj ( 808 ( u_ch *)"IGNORE", () ` ("IGNORE")); 809 myobjv [1] = lli ; 811 DB_REP_ISPERM : 812 myobjv [0] = `T_NewLgObj (() rml . fe ); 813 myobjv [1] = `T_NewLgObj (() rml . offt ); 814 lli = `T_NewLiObj ( myobjc , myobjv ); 815 myobjv [0] = `T_NewByAayObj ( 816 ( u_ch *)"ISPERM", () ` ("ISPERM")); 817 myobjv [1] = lli ; 819 DB_REP_NEWSITE : 820 myobjv [0] = `T_NewByAayObj ( 821 ( u_ch *)"NEWSITE", () ` ("NEWSITE")); 822 myobjv [1] = `T_NewIObj (0); 824 DB_REP_NOTPERM : 825 myobjv [0] = `T_NewLgObj (() rml . fe ); 826 myobjv [1] = `T_NewLgObj (() rml . offt ); 827 lli = `T_NewLiObj ( myobjc , myobjv ); 828 myobjv [0] = `T_NewByAayObj ( 829 ( u_ch *)"NOTPERM", () ` ("NOTPERM")); 830 myobjv [1] = lli ; 833 msg = `db_ ( t ); 834 `T_AdResu ( , msg , NULL ); 835 `T_SECode ( , "BkeyDB", msg , NULL ); 836 su = TCL_ERROR ; 837 out ; 839 s = `T_NewLiObj ( myobjc , myobjv ); 840 i( s ! NULL ) 841 `T_SObjResu ( , s ); 842 out : 843 i( l ) 844 `__os_ ( NULL , mp ); 845 i( 䓻c ) 846 `__os_ ( NULL , mp ); 848 ( su ); 849 } } 852 #ifde CONFIG_TEST 861 $t_RSt ( , objc , objv , dbv ) 862 T_Ip * ; 863 objc ; 864 T_Obj * CONST objv []; 865 DB_ENV * dbv ; 867 DB_REP_STAT * ; 868 T_Obj * myobjv [2], * s , * thii , * lli ; 869 u_t32_t ag ; 870 myobjc , su , t ; 871 * g ; 873 ag = 0; 874 su = TCL_OK ; 876 i( objc > 3) { 877 `T_WrgNumArgs ( , 2, objv , NULL ); 878 ( TCL_ERROR ); 880 i( objc == 3) { 881 g = `T_GSgFromObj ( objv [2], NULL ); 882 i( `rcmp ( g , "-clear") == 0) 883 ag = DB_STAT_CLEAR ; 885 `T_SResu ( , 886 "db st: unknowg", TCL_STATIC ); 887 ( TCL_ERROR ); 891 `_debug_check (); 892 t = dbv -> `p_ (dbv, & , ag ); 893 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 895 i( su = TCL_ERROR ) 896 ( su ); 902 s = `T_NewObj (); 903 #ifde HAVE_STATISTICS 907 i( -> _us = DB_REP_MASTER ) 908 `MAKE_STAT_LIST ("Master", 1); 910 `MAKE_STAT_LIST ("Client", 1); 911 `MAKE_STAT_LSN ("NexLSNxed", & -> _xt_l ); 912 `MAKE_STAT_LSN ("F misd LSN", & -> _wag_l ); 913 `MAKE_STAT_LSN ("MaximummLSN", & -> _max_rm_l ); 914 `MAKE_STAT_LIST ("Bulk buffls", -> _bulk_fls ); 915 `MAKE_STAT_LIST ("Bulk bufovows", -> _bulk_ovows ); 916 `MAKE_STAT_LIST ("Bulkecded", -> _bulk_cds ); 917 `MAKE_STAT_LIST ("Bulk buf㸌srs", -> _bulk_srs ); 918 `MAKE_STAT_LIST ("Cl svieques", -> __svc_q ); 919 `MAKE_STAT_LIST ("Cl svieq miss", -> __svc_miss ); 920 `MAKE_STAT_LIST ("Cleques", -> __ques ); 921 `MAKE_STAT_LIST ("Dui ma cdis", -> _dupmas ); 922 `MAKE_STAT_LIST ("EnvmID", -> _v_id ); 923 `MAKE_STAT_LIST ("Envmiܙy", -> _v_iܙy ); 924 `MAKE_STAT_LIST ("Giڂumb", -> _g ); 925 `MAKE_STAT_LIST ("Ei giڂumb", -> _eg ); 926 `MAKE_STAT_LIST ("Sucome", -> _tup_come ); 927 `MAKE_STAT_LIST ("Duiogecdived", -> _log_duid ); 928 `MAKE_STAT_LIST ("Culogecdqueued", -> _log_queued ); 929 `MAKE_STAT_LIST ("Maximumogecdqueued", -> _log_queued_max ); 930 `MAKE_STAT_LIST ("Tٮogecdqueued", -> _log_queued_tٮ ); 931 `MAKE_STAT_LIST ("Logecdived", -> _log_cds ); 932 `MAKE_STAT_LIST ("Logecdqueed", -> _log_queed ); 933 `MAKE_STAT_LIST ("ManvmID", -> _ma ); 934 `MAKE_STAT_LIST ("Ma chges", -> _ma_chges ); 935 `MAKE_STAT_LIST ("Messages with bad generationumber", 936 -> _msgs_badg ); 937 `MAKE_STAT_LIST ("Mesgeosd", -> _msgs_osd ); 938 `MAKE_STAT_LIST ("Mesgeigned f܄ecovy", -> _msgs_cov ); 939 `MAKE_STAT_LIST ("Mesgnd faus", -> _msgs_nd_us ); 940 `MAKE_STAT_LIST ("Mesge", -> _msgs_ ); 941 `MAKE_STAT_LIST ("New smesges", -> _wses ); 942 `MAKE_STAT_LIST ("Numb oseliti group", -> _nses ); 943 `MAKE_STAT_LIST ("Tnsmissiچimed", -> _hrَes ); 944 `MAKE_STAT_LIST ("Outded cdis", -> _outded ); 945 `MAKE_STAT_LIST ("Tniڠd", -> _txns_d ); 946 `MAKE_STAT_LIST ("Nexgexed", -> _xt_pg ); 947 `MAKE_STAT_LIST ("F misdage", -> _wag_pg ); 948 `MAKE_STAT_LIST ("Duiageived", -> _pg_duid ); 949 `MAKE_STAT_LIST ("Pageived", -> _pg_cds ); 950 `MAKE_STAT_LIST ("Pagequeed", -> _pg_queed ); 951 `MAKE_STAT_LIST ("Eiڠhd", -> _eis ); 952 `MAKE_STAT_LIST ("Eiڠw", -> _eis_w ); 953 `MAKE_STAT_LIST ("Eiڅha", -> _ei_us ); 954 `MAKE_STAT_LIST ("Ei wr", -> _ei_cur_wr ); 955 `MAKE_STAT_LIST ("Ei giڂumb", -> _ei_g ); 956 `MAKE_STAT_LSN ("Ei max LSN", & -> _ei_l ); 957 `MAKE_STAT_LIST ("Ei ses", -> _ei_nses ); 958 `MAKE_STAT_LIST ("Eiڂves", -> _ei_nves ); 959 `MAKE_STAT_LIST ("Eiڅriܙy", -> _ei_iܙy ); 960 `MAKE_STAT_LIST ("Eiځbak", -> _ei_tbak ); 961 `MAKE_STAT_LIST ("Ei ves", -> _ei_ves ); 962 `MAKE_STAT_LIST ("Ei secds", -> _ei_c ); 963 `MAKE_STAT_LIST ("Ei ucs", -> _ei_uc ); 964 `MAKE_STAT_LIST ("Start-sync operations delayed", 965 -> _tsync_dayed ); 966 `MAKE_STAT_LIST ("Maximum secds", -> _max_a_c ); 967 `MAKE_STAT_LIST ("Maximum ucs", -> _max_a_uc ); 970 `T_SObjResu ( , s ); 971 r : 972 `__os_u ( dbv -> v , ); 973 ( su ); 974 } } 984 $t_RMgr ( , objc , objv , dbv ) 985 T_Ip * ; 986 objc ; 987 T_Obj * CONST objv []; 988 DB_ENV * dbv ; 990 cڡ * rmgr [] = { 999 NULL 1001 ermgr { 1002 RMGR_ACK , 1003 RMGR_LOCAL , 1004 RMGR_MSGTH , 1005 RMGR_NSITES , 1006 RMGR_PRI , 1007 RMGR_REMOTE , 1008 RMGR_START , 1009 RMGR_TIMEOUT 1011 T_Obj ** myobjv ; 1012 to ; 1013 ack , i , myobjc , tdex , su , t , ty ; 1014 u_t32_t msgth , me_ag , t_ag , urg ; 1015 * g ; 1017 su = TCL_OK ; 1018 ack = t = ty = 0; 1019 msgth = 1; 1020 me_ag = t_ag = 0; 1022 i( objc <= 2) { 1023 `T_WrgNumArgs ( , 2, objv , "?args?"); 1024 ( TCL_ERROR ); 1030 i = 2; 1031 i < objc ) { 1032 `T_RetResu ( ); 1033 i( `T_GIndexFromObj ( , objv [ i ], rmgr , "option", 1034 TCL_EXACT , & tdex ! TCL_OK ) { 1035 su = `IS_HELP ( objv [ i ]); 1036 r ; 1038 i ++; 1039 ( rmgr ) tdex ) { 1040 RMGR_ACK : 1041 i( i > objc ) { 1042 `T_WrgNumArgs ( , 2, objv , 1044 su = TCL_ERROR ; 1047 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1048 i( `rcmp ( g , "all") == 0) 1049 ack = DB_REPMGR_ACKS_ALL ; 1050 i( `rcmp ( g , "allpeers") == 0) 1051 ack = DB_REPMGR_ACKS_ALL_PEERS ; 1052 i( `rcmp ( g , "none") == 0) 1053 ack = DB_REPMGR_ACKS_NONE ; 1054 i( `rcmp ( g , "one") == 0) 1055 ack = DB_REPMGR_ACKS_ONE ; 1056 i( `rcmp ( g , "onepeer") == 0) 1057 ack = DB_REPMGR_ACKS_ONE_PEER ; 1058 i( `rcmp ( g , "quorum") == 0) 1059 ack = DB_REPMGR_ACKS_QUORUM ; 1061 `T_AddEInfo ( , 1063 su = TCL_ERROR ; 1066 `_debug_check (); 1067 t = dbv -> `pmgr_t_ack_picy (dbv, ack ); 1068 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1071 RMGR_LOCAL : 1072 su = `T_LiObjGEmts ( , objv [ i ], 1073 & myobjc , & myobjv ); 1074 i( su = TCL_OK ) 1075 i ++; 1078 i( myobjc != 2) { 1079 `T_WrgNumArgs ( , 2, objv , 1081 su = TCL_ERROR ; 1084 g = `T_GSgFromObj ( myobjv [0], NULL ); 1085 i(( su = `_GUI32 ( , myobjv [1], & urg )) 1086 ! TCL_OK ) 1088 `_debug_check (); 1092 t = dbv -> `pmgr_t_lol_se (dbenv, 1093 g , urg , 0); 1094 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1097 RMGR_MSGTH : 1098 i( i > objc ) { 1099 `T_WrgNumArgs ( 1100 , 2, objv , "?-msgthth?"); 1101 su = TCL_ERROR ; 1104 su = `_GUI32 ( , objv [ i ++], & msgth ); 1106 RMGR_NSITES : 1107 i( i > objc ) { 1108 `T_WrgNumArgs ( , 2, objv , 1110 su = TCL_ERROR ; 1113 su = `_GUI32 ( , objv [ i ++], & urg ); 1114 i( su = TCL_OK ) { 1115 `_debug_check (); 1116 t = dbv -> 1117 `p_t_nses ( dbv , urg ); 1120 RMGR_PRI : 1121 i( i > objc ) { 1122 `T_WrgNumArgs ( , 2, objv , 1124 su = TCL_ERROR ; 1127 su = `_GUI32 ( , objv [ i ++], & urg ); 1128 i( su = TCL_OK ) { 1129 `_debug_check (); 1130 t = dbv -> 1131 `p_t_iܙy ( dbv , urg ); 1134 RMGR_REMOTE : 1135 su = `T_LiObjGEmts ( , objv [ i ], 1136 & myobjc , & myobjv ); 1137 i( su = TCL_OK ) 1138 i ++; 1141 i( myobjc != 2 && myobjc != 3) { 1142 `T_WrgNumArgs ( , 2, objv , 1144 su = TCL_ERROR ; 1150 i( myobjc == 3) { 1151 g = `T_GSgFromObj ( myobjv [2], NULL ); 1152 i( `rcmp ( g , "peer") == 0) 1153 me_ag = DB_REPMGR_PEER ; 1155 `T_AddEInfo ( , 1157 su = TCL_ERROR ; 1161 g = `T_GSgFromObj ( myobjv [0], NULL ); 1162 i(( su = `_GUI32 ( , myobjv [1], & urg )) 1163 ! TCL_OK ) 1165 `_debug_check (); 1166 t = dbv -> `pmgr_add_me_se (dbenv, 1167 g , urg , NULL , me_ag ); 1168 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1171 RMGR_START : 1172 i( i > objc ) { 1173 `T_WrgNumArgs ( 1174 , 2, objv , "?-start state?"); 1175 su = TCL_ERROR ; 1178 g = `T_GSgFromObj ( objv [ i ++], NULL ); 1179 i( `rcmp ( g , "master") == 0) 1180 t_ag = DB_REP_MASTER ; 1181 i( `rcmp ( g , "client") == 0) 1182 t_ag = DB_REP_CLIENT ; 1183 i( `rcmp ( g , "elect") == 0) 1184 t_ag = DB_REP_ELECTION ; 1186 `T_AddEInfo ( 1187 , "start: illegal state"); 1188 su = TCL_ERROR ; 1197 RMGR_TIMEOUT : 1198 su = `T_LiObjGEmts ( , objv [ i ], 1199 & myobjc , & myobjv ); 1200 i( su = TCL_OK ) 1201 i ++; 1204 i( myobjc != 2) { 1205 `T_WrgNumArgs ( , 2, objv , 1207 su = TCL_ERROR ; 1210 g = `T_GSgFromObj ( myobjv [0], NULL ); 1211 i( `rcmp ( g , "ack") == 0) 1212 ty = DB_REP_ACK_TIMEOUT ; 1213 i( `rcmp ( g , "elect") == 0) 1214 ty = DB_REP_ELECTION_TIMEOUT ; 1215 i( `rcmp ( g , "elect_retry") == 0) 1216 ty = DB_REP_ELECTION_RETRY ; 1217 i( `rcmp ( g , "conn_retry") == 0) 1218 ty = DB_REP_CONNECTION_RETRY ; 1220 `T_AddEInfo ( , 1222 su = TCL_ERROR ; 1225 i(( su = `T_GLgFromObj ( 1226 , myobjv [1], & to )! TCL_OK ) 1228 `_debug_check (); 1229 t = dbv -> `p_t_timeout (dbv, ty , 1230 ( db_timeout_t ) to ); 1231 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1239 i( su ! TCL_OK ) 1240 r ; 1246 i( t_ag !0 && su = TCL_OK ) { 1247 `_debug_check (); 1248 t = dbv -> `pmgr_t (dbv, () msgth , t_ag ); 1249 su = `_RuSup ( 1250 , t , `DB_RETOK_STD (ret), "repmgr_start"); 1252 r : 1253 ( su ); 1254 } } 1264 $t_RMgrSt ( , objc , objv , dbv ) 1265 T_Ip * ; 1266 objc ; 1267 T_Obj * CONST objv []; 1268 DB_ENV * dbv ; 1270 DB_REPMGR_STAT * ; 1271 T_Obj * s ; 1272 u_t32_t ag ; 1273 su , t ; 1274 * g ; 1276 ag = 0; 1277 su = TCL_OK ; 1279 i( objc > 3) { 1280 `T_WrgNumArgs ( , 2, objv , NULL ); 1281 ( TCL_ERROR ); 1283 i( objc == 3) { 1284 g = `T_GSgFromObj ( objv [2], NULL ); 1285 i( `rcmp ( g , "-clear") == 0) 1286 ag = DB_STAT_CLEAR ; 1288 `T_SResu ( , 1289 "db st: unknowg", TCL_STATIC ); 1290 ( TCL_ERROR ); 1294 `_debug_check (); 1295 t = dbv -> `pmgr_ (dbv, & , ag ); 1296 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 1298 i( su = TCL_ERROR ) 1299 ( su ); 1305 s = `T_NewObj (); 1306 #ifde HAVE_STATISTICS 1310 `MAKE_STAT_LIST ("Acknowdgemus", -> _rm_ed ); 1311 `MAKE_STAT_LIST ("Mesgedayed", -> _msgs_queued ); 1312 `MAKE_STAT_LIST ("Mesgedisrded", -> _msgs_drݳd ); 1313 `MAKE_STAT_LIST ("Ciڠdrݳd", -> _ci_dr ); 1314 `MAKE_STAT_LIST ("Faede-cs", -> _c_ ); 1317 `T_SObjResu ( , s ); 1318 r : 1319 `__os_u ( dbv -> v , ); 1320 ( su ); 1321 } } @../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 -> v , ); 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 , dbv ) 59 T_Ip * ; 60 objc ; 61 T_Obj * CONST objv []; 62 DB_ENV * dbv ; 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 = dbv -> `txn_checkpot (dbv, ( u_t32_t ) kb , (u_t32_t) m , 118 ags ); 119 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 121 ( su ); 122 } } 131 $t_Txn ( , objc , objv , dbv , v ) 132 T_Ip * ; 133 objc ; 134 T_Obj * CONST objv []; 135 DB_ENV * dbv ; 136 DBTCL_INFO * v ; 138 cڡ * txnts [] = { 139 #ifde CONFIG_TEST 152 NULL 154 etxnts { 155 #ifde CONFIG_TEST 156 TXNLOCK_TIMEOUT , 157 TXNREAD_COMMITTED , 158 TXNREAD_UNCOMMITTED , 159 TXNTIMEOUT , 160 TXNWAIT , 162 TXNNOSYNC , 163 TXNNOWAIT , 164 TXNPARENT , 165 TXNSNAPSHOT , 166 TXNSYNC , 167 TXNWRNOSYNC 169 DBTCL_INFO * ; 170 DB_TXN * ; 171 DB_TXN * txn ; 172 T_Obj * s ; 173 u_t32_t ag ; 174 i , tdex , su , t ; 175 * g , msg [ MSG_SIZE ], wme [MSG_SIZE]; 176 #ifde CONFIG_TEST 177 db_timeout_t lk_time , tx_time ; 178 u_t32_t lk_timeag , tx_timeag ; 181 su = TCL_OK ; 182 `memt ( wme , 0, MSG_SIZE ); 184 = NULL ; 185 ag = 0; 186 #ifde CONFIG_TEST 187 `COMPQUIET ( tx_time , 0); 188 `COMPQUIET ( lk_time , 0); 189 lk_timeag = tx_timeag = 0; 191 i = 2; 192 i < objc ) { 193 i( `T_GIndexFromObj ( , objv [ i ], 194 txnts , "ti", TCL_EXACT , & tdex ! TCL_OK ) { 195 ( `IS_HELP ( objv [ i ])); 197 i ++; 198 ( txnts ) tdex ) { 199 #ifde CONFIG_TEST 200 TXNLOCK_TIMEOUT : 201 lk_timeag = DB_SET_LOCK_TIMEOUT ; 202 g_timeout ; 203 TXNTIMEOUT : 204 tx_timeag = DB_SET_TXN_TIMEOUT ; 205 g_timeout : i( i > objc ) { 206 `T_WrgNumArgs ( , 2, objv , 208 ( TCL_ERROR ); 210 su = `T_GLgFromObj ( , objv [ i ++], (*) 211 (( txnts ) tdex = TXNLOCK_TIMEOUT ? 212 & lk_time : & tx_time )); 213 i( su ! TCL_OK ) 214 ( TCL_ERROR ); 216 TXNREAD_COMMITTED : 217 ag | DB_READ_COMMITTED ; 219 TXNREAD_UNCOMMITTED : 220 ag | DB_READ_UNCOMMITTED ; 222 TXNWAIT : 223 ag | DB_TXN_WAIT ; 226 TXNNOSYNC : 227 ag | DB_TXN_NOSYNC ; 229 TXNNOWAIT : 230 ag | DB_TXN_NOWAIT ; 232 TXNPARENT : 233 i( i = objc ) { 234 `T_WrgNumArgs ( , 2, objv , 236 su = TCL_ERROR ; 239 g = `T_GSgFromObj ( objv [ i ++], NULL ); 240 = `NAME_TO_TXN ( g ); 241 i( = NULL ) { 242 `tf ( msg , MSG_SIZE , 244 g ); 245 `T_SResu ( , msg , TCL_VOLATILE ); 246 ( TCL_ERROR ); 249 TXNSNAPSHOT : 250 ag | DB_TXN_SNAPSHOT ; 252 TXNSYNC : 253 ag | DB_TXN_SYNC ; 255 TXNWRNOSYNC : 256 ag | DB_TXN_WRITE_NOSYNC ; 260 `tf ( wme , (newname), "%s.txn%d", 261 v -> i_me ,nv-> i_vtxnid ); 262 = `_NewInfo ( , NULL , wme , I_TXN ); 263 i( = NULL ) { 264 `T_SResu ( , "Couldot set up info", 265 TCL_STATIC ); 266 ( TCL_ERROR ); 268 `_debug_check (); 269 t = dbv -> `txn_beg (dbv, , & txn , ag ); 270 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 272 i( su = TCL_ERROR ) 273 `_DeInfo ( ); 279 v -> i_vtxnid ++; 280 i( ) 281 -> i_ = `_PToInfo ( ); 283 -> i_ = v ; 284 `_SInfoDa ( , txn ); 285 () `T_CeObjCommd ( , wme , 286 ( T_ObjCmdProc *) txn_Cmd , ( ClDa ) txn , NULL ); 287 s = `NewSgObj ( wme , ` (newname)); 288 `T_SObjResu ( , s ); 289 #ifde CONFIG_TEST 290 i( tx_timeag != 0) { 291 t = txn -> `t_timeout xn, tx_time , tx_timeag ); 292 i( t != 0) { 293 su = 294 `_RuSup ( , t , `DB_RETOK_STD (ret), 296 `_DeInfo ( ); 299 i( lk_timeag != 0) { 300 t = txn -> `t_timeout xn, lk_time , lk_timeag ); 301 i( t != 0) { 302 su = 303 `_RuSup ( , t , `DB_RETOK_STD (ret), 305 `_DeInfo ( ); 310 ( su ); 311 } } 320 $t_CDSGroup ( , objc , objv , dbv , v ) 321 T_Ip * ; 322 objc ; 323 T_Obj * CONST objv []; 324 DB_ENV * dbv ; 325 DBTCL_INFO * v ; 327 DBTCL_INFO * ; 328 DB_TXN * txn ; 329 T_Obj * s ; 330 su , t ; 331 wme [ MSG_SIZE ]; 333 i( objc != 2) { 334 `T_WrgNumArgs ( , 1, objv , "env cdsgroup"); 335 ( TCL_ERROR ); 338 su = TCL_OK ; 339 `memt ( wme , 0, MSG_SIZE ); 341 `tf ( wme , (newname), "%s.txn%d", 342 v -> i_me ,nv-> i_vtxnid ); 343 = `_NewInfo ( , NULL , wme , I_TXN ); 344 i( = NULL ) { 345 `T_SResu ( , "Couldot set up info", 346 TCL_STATIC ); 347 ( TCL_ERROR ); 349 `_debug_check (); 350 t = dbv -> `cdsgroup_beg (dbv, & txn ); 351 su = `_RuSup ( , t , `DB_RETOK_STD (ret), "cdsgroup"); 352 i( su = TCL_ERROR ) 353 `_DeInfo ( ); 359 v -> i_vtxnid ++; 360 -> i_ = v ; 361 `_SInfoDa ( , txn ); 362 () `T_CeObjCommd ( , wme , 363 ( T_ObjCmdProc *) txn_Cmd , ( ClDa ) txn , NULL ); 364 s = `NewSgObj ( wme , ` (newname)); 365 `T_SObjResu ( , s ); 367 ( su ); 368 } } 377 $t_TxnSt ( , objc , objv , dbv ) 378 T_Ip * ; 379 objc ; 380 T_Obj * CONST objv []; 381 DB_ENV * dbv ; 383 DBTCL_INFO * ; 384 DB_TXN_ACTIVE * p ; 385 DB_TXN_STAT * ; 386 T_Obj * myobjv [2], * s , * thii , * lli ; 387 u_t32_t i ; 388 myobjc , su , t ; 390 su = TCL_OK ; 394 i( objc != 2) { 395 `T_WrgNumArgs ( , 2, objv , NULL ); 396 ( TCL_ERROR ); 398 `_debug_check (); 399 t = dbv -> `txn_ (dbv, & , 0); 400 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 402 i( su = TCL_ERROR ) 403 ( su ); 409 s = `T_NewObj (); 413 #ifde HAVE_STATISTICS 414 `MAKE_STAT_LIST ("Regi size", -> _gsize ); 415 `MAKE_STAT_LSN ("LSN oϡ checkpot", & -> _ϡ_ckp ); 416 `MAKE_STAT_LIST ("Timoϡ checkpot", -> _time_ckp ); 417 `MAKE_STAT_LIST ("LaxIDod", -> _ϡ_txnid ); 418 `MAKE_STAT_LIST ("Maximumxns", -> _maxtxns ); 419 `MAKE_STAT_LIST ("Numbb܋dxns", -> _bts ); 420 `MAKE_STAT_LIST ("Numbxnbegun", -> _nbegs ); 421 `MAKE_STAT_LIST ("Numb commdxns", -> _ncomms ); 422 `MAKE_STAT_LIST ("Numbivtxns", -> _ive ); 423 `MAKE_STAT_LIST ("Numb oࢭshفxns", -> _nsh ); 424 `MAKE_STAT_LIST ("Numbeedxns", -> _ees ); 425 `MAKE_STAT_LIST ("Maximumivtxns", -> _maxive ); 426 `MAKE_STAT_LIST ("Maximum spshفxns", -> _maxnsh ); 427 `MAKE_STAT_LIST ("Numb ogiچock was", -> _gi_wa ); 428 `MAKE_STAT_LIST ("Numb ogiچockowas", -> _gi_nowa ); 429 i = 0, p = -> _txǼay ; i < sp-> _ive ; i++,++) 430 `LIST_FOREACH ( , & __db_fohd , s ) { 431 i( -> i_ty ! I_TXN ) 433 i( -> i_ty = I_TXN && 434 ( -> i_tx -> `id (->i_tx= p -> txnid )) { 435 `MAKE_STAT_LSN ( -> i_me , & p -> l ); 436 i( p -> id != 0) 437 `MAKE_STAT_STRLIST ("Parent", 438 -> i_ -> i_me ); 440 `MAKE_STAT_LIST ("Parent", 0); 445 `T_SObjResu ( , s ); 446 r : 447 `__os_u ( dbv -> v , ); 448 ( su ); 449 } } 458 $t_TxnTimeout ( , objc , objv , dbv ) 459 T_Ip * ; 460 objc ; 461 T_Obj * CONST objv []; 462 DB_ENV * dbv ; 464 timeout ; 465 su , t ; 470 i( objc != 3) { 471 `T_WrgNumArgs ( , 2, objv , "?timeout?"); 472 ( TCL_ERROR ); 474 su = `T_GLgFromObj ( , objv [2], & timeout ); 475 i( su ! TCL_OK ) 476 ( su ); 477 `_debug_check (); 478 t = dbv -> `t_timeout (dbv, ( u_t32_t ) timeout , DB_SET_TXN_TIMEOUT ); 479 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 481 ( su ); 482 } } 489 $txn_Cmd ( Da , , objc , objv ) 490 ClDa Da ; 491 T_Ip * ; 492 objc ; 493 T_Obj * CONST objv []; 495 cڡ * txncmds [] = { 496 #ifde CONFIG_TEST 507 NULL 509 etxncmds { 510 #ifde CONFIG_TEST 511 TXNDISCARD , 512 TXNGETNAME , 513 TXNID , 514 TXNPREPARE , 515 TXNSETNAME , 517 TXNABORT , 518 TXNCOMMIT 520 DBTCL_INFO * txn ; 521 DB_TXN * tx ; 522 T_Obj * s ; 523 cmddex , su , t ; 524 #ifde CONFIG_TEST 525 u_t8_t * gid , gy [ DB_XIDDATASIZE ]; 526 ngth ; 527 cڡ * me ; 530 `T_RetResu ( ); 531 tx = ( DB_TXN *) Da ; 532 txn = `_PToInfo ((*) tx ); 533 su = TCL_OK ; 534 i( tx = NULL ) { 535 `T_SResu ( , "NULLxpor", TCL_STATIC ); 536 ( TCL_ERROR ); 538 i( txn = NULL ) { 539 `T_SResu ( , "NULLxfpor", TCL_STATIC ); 540 ( TCL_ERROR ); 547 i( `T_GIndexFromObj ( , 548 objv [1], txncmds , "commd", TCL_EXACT , & cmddex ! TCL_OK ) 549 ( `IS_HELP ( objv [1])); 551 s = NULL ; 552 ( txncmds ) cmddex ) { 553 #ifde CONFIG_TEST 554 TXNDISCARD : 555 i( objc != 2) { 556 `T_WrgNumArgs ( , 1, objv , NULL ); 557 ( TCL_ERROR ); 559 `_debug_check (); 560 t = tx -> `disrd (txnp, 0); 561 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 563 `_TxnInfoDe ( , txn ); 564 () `T_DeCommd ( , txn -> i_me ); 565 `_DeInfo ( txn ); 567 TXNID : 568 i( objc != 2) { 569 `T_WrgNumArgs ( , 1, objv , NULL ); 570 ( TCL_ERROR ); 572 `_debug_check (); 573 s = `T_NewIObj (() tx -> `id (txnp)); 575 TXNPREPARE : 576 i( objc != 3) { 577 `T_WrgNumArgs ( , 1, objv , NULL ); 578 ( TCL_ERROR ); 580 `_debug_check (); 581 gid = ( u_t8_t *) `T_GByAayFromObj ( objv [2], & ngth ); 582 `memy ( gy , gid , ( size_t ) ngth ); 583 t = tx -> `e x, gy ); 591 `_TxnInfoDe ( , txn ); 592 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 595 TXNGETNAME : 596 i( objc != 2) { 597 `T_WrgNumArgs ( , 2, objv , NULL ); 598 ( TCL_ERROR ); 600 `_debug_check (); 601 t = tx -> `g_me x, & me ); 602 i(( su = `_RuSup ( 603 , t , `DB_RETOK_STD ԑ), "txgme")= TCL_OK ) 604 s = `NewSgObj ( me , ` (name)); 606 TXNSETNAME : 607 i( objc != 3) { 608 `T_WrgNumArgs ( , 2, objv , "name"); 609 ( TCL_ERROR ); 611 `_debug_check (); 612 t = tx -> `t_me x, `T_GSgFromObj ( objv [2], NULL )); 613 su = 614 `_RuSup ( , t , `DB_RETOK_STD (ret), "setname"); 617 TXNABORT : 618 i( objc != 2) { 619 `T_WrgNumArgs ( , 1, objv , NULL ); 620 ( TCL_ERROR ); 622 `_debug_check (); 623 t = tx -> `abt (txnp); 624 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 626 `_TxnInfoDe ( , txn ); 627 () `T_DeCommd ( , txn -> i_me ); 628 `_DeInfo ( txn ); 630 TXNCOMMIT : 631 su = `t_TxnComm ( , objc , objv , tx , txn ); 632 `_TxnInfoDe ( , txn ); 633 () `T_DeCommd ( , txn -> i_me ); 634 `_DeInfo ( txn ); 641 i( su = TCL_OK && s ) 642 `T_SObjResu ( , s ); 643 ( su ); 644 } } 647 $t_TxnComm ( , objc , objv , tx , txn ) 648 T_Ip * ; 649 objc ; 650 T_Obj * CONST objv []; 651 DB_TXN * tx ; 652 DBTCL_INFO * txn ; 654 cڡ * commt [] = { 658 NULL 660 ecommt { 661 COMNOSYNC , 662 COMSYNC , 663 COMWRNOSYNC 665 u_t32_t ag ; 666 tdex , su , t ; 668 `COMPQUIET ( txn , NULL ); 670 su = TCL_OK ; 671 ag = 0; 672 i( objc != 2 && objc != 3) { 673 `T_WrgNumArgs ( , 1, objv , NULL ); 674 ( TCL_ERROR ); 676 i( objc == 3) { 677 i( `T_GIndexFromObj ( , objv [2], commt , 678 "ti", TCL_EXACT , & tdex ! TCL_OK ) 679 ( `IS_HELP ( objv [2])); 680 ( commt ) tdex ) { 681 COMSYNC : 682 ag = DB_TXN_SYNC ; 684 COMNOSYNC : 685 ag = DB_TXN_NOSYNC ; 687 COMWRNOSYNC : 688 ag = DB_TXN_WRITE_NOSYNC ; 693 `_debug_check (); 694 t = tx -> `comm x, ag ); 695 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 697 ( su ); 698 } } 700 #ifde CONFIG_TEST 708 $t_TxnRecov ( , objc , objv , dbv , v ) 709 T_Ip * ; 710 objc ; 711 T_Obj * CONST objv []; 712 DB_ENV * dbv ; 713 DBTCL_INFO * v ; 715 #DO_PREPLIST ( cou ) \ 716 i = 0; i < cou ; i++) { \ 717 `tf ( wme , (newname), "%s.txn%d", \ 718 v -> i_me ,nv-> i_vtxnid ); \ 719 = `_NewInfo ( , NULL , wme , I_TXN ); \ 720 i( = NULL ) { \ 721 `T_SResu ( , "Couldot set up info", \ 722 TCL_STATIC ); \ 723 ( TCL_ERROR ); \ 725 v -> i_vtxnid ++; \ 726 -> i_ = v ; \ 727 p = & [ i ]; \ 728 `_SInfoDa ( , p -> txn ); \ 729 () `T_CeObjCommd ( , wme , \ 730 ( T_ObjCmdProc *) txn_Cmd , ( ClDa ) p -> txn , NULL ); \ 731 su = `_SLiEm ( , s , wme , ` (newname), \ 732 p -> gid , DB_XIDDATASIZE ); \ 733 i( su ! TCL_OK ) \ 734 r ; \ 735 } ) 737 DBTCL_INFO * ; 738 DB_PREPLIST [ DBTCL_PREP ], * p ; 739 T_Obj * s ; 740 cou , i ; 741 su , t ; 742 wme [ MSG_SIZE ]; 744 su = TCL_OK ; 748 i( objc != 2) { 749 `T_WrgNumArgs ( , 2, objv , NULL ); 750 ( TCL_ERROR ); 752 `_debug_check (); 753 t = dbv -> `txn_cov (dbv, , DBTCL_PREP , & cou , DB_FIRST ); 754 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 756 i( su = TCL_ERROR ) 757 ( su ); 758 s = `T_NewObj (); 759 `DO_PREPLIST ( cou ); 765 cou = DBTCL_PREP ) { 766 t = dbv -> `txn_cov ( 767 dbv , , DBTCL_PREP , & cou , DB_NEXT ); 768 su = `_RuSup ( , t , `DB_RETOK_STD (ret), 770 i( su = TCL_ERROR ) 771 ( su ); 772 `DO_PREPLIST ( cou ); 774 `T_SObjResu ( , s ); 775 r : 776 ( su ); 777 } } @../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 $b_cuoc ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB * dbp ; 14 DBC * cu ; 15 ch , i , cou ; 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 ( dbp -> `ݒ ( 38 dbp , NULL , TESTFILE , NULL, DB_BTREE , DB_CREATE , 0666) == 0); 40 `DB_BENCH_ASSERT ( 41 dbp -> `ݒ (dbp, TESTFILE , 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 ); 55 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 58 } } 61 $uge () 63 () `rtf ( dr , "usage: b_curalloc [-c count]\n"); 64 ( EXIT_FAILURE ); 65 } } @../test_micro/source/b_curwalk.c 4 ~"bch.h " 6 uge (); 9 $b_curwk ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB * dbp ; 14 DBTYPE ty ; 15 DBC * dbc ; 16 DBT key , da ; 17 db_o_t o ; 18 u_t32_t chesize , gesize , wkags ; 19 ch , i , cou , dupcou , j ; 20 ev , t , skdupwk , s܋d , wkcou ; 21 * ts , dbuf [32], kbuf [32]; 23 ty = DB_BTREE ; 24 chesize = 10 * MEGABYTE ; 25 gesize = 16 * 1024; 26 cou = 100000; 27 dupcou = ev = skdupwk = s܋d = 0; 28 wkcou = 1000; 29 ts = "Btree"; 30 ( ch = `gt ( gc , gv , "C:c:d:P:pS:w:")! EOF ) 31 ch ) { 33 chesize = ( u_t32_t ) `oi ( ݏrg ); 36 cou = `oi ( ݏrg ); 39 dupcou = `oi ( ݏrg ); 42 gesize = ( u_t32_t ) `oi ( ݏrg ); 45 ev = 1; 48 skdupwk = 1; 51 s܋d = 1; 54 ݏrg [0]) { 56 ts = "Btree"; 57 ty = DB_BTREE ; 60 i( `b_ut_have_hash ()) 62 ts = "Hash"; 63 ty = DB_HASH ; 66 i( `b_ut_have_queue ()) 68 ts = "Queue"; 69 ty = DB_QUEUE ; 72 ts = "Recno"; 73 ty = DB_RECNO ; 76 ( `uge ()); 80 wkcou = `oi ( ݏrg ); 84 ( `uge ()); 86 gc - td ; 87 gv + td ; 88 i( gc != 0) 89 ( `uge ()); 94 i( dupcou !0 && ( ty = DB_QUEUE ||y = DB_RECNO )) { 95 `rtf ( dr , 97 ( `uge ()); 100 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 101 #DB_PREV_NODUP 0 ) 111 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 112 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 113 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 114 dbp -> `t_rfe (dbp, dr ); 117 i( ty = DB_QUEUE ) 118 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 121 i( dupcou != 0) 122 `DB_BENCH_ASSERT ( 123 dbp -> `t_ags (dbp, s܋d ? DB_DUPSORT : DB_DUP ) == 0); 125 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 126 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 127 dbp , NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 129 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 130 dbp , TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 134 `memt (& key , 0, (key)); 135 `memt (& da , 0, (data)); 138 da .d dbuf ; 139 da . size = 20; 140 i( ty = DB_BTREE ||y = DB_HASH ) { 141 key . size = 10; 142 key . da = kbuf ; 143 i = 0; i < cou ; ++i) { 144 () `tf ( kbuf , (kbuf), "%010d", i ); 145 j = 0; j < dupcou ; ++j) { 146 () `tf ( dbuf , (dbuf), "%020d", j ); 147 `DB_BENCH_ASSERT ( 148 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 152 key . da = & o ; 153 key . size = ( o ); 154 i = 0, o = 1; i < cou ; ++i, ++recno) 155 `DB_BENCH_ASSERT ( 156 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 159 wkags = ev ? 160 ( skdupwk ? DB_PREV_NODUP : DB_PREV ) : 161 ( skdupwk ? DB_NEXT_NODUP : DB_NEXT ); 164 TIMER_START ; 165 i = 0; i < wkcou ; ++i) { 166 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 167 ( t = dbc -> `c_g (dbc, & key , & da , wkags )) == 0) 169 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 170 `DB_BENCH_ASSERT ( dbc -> `c_o (dbc) == 0); 172 TIMER_STOP ; 174 `tf ("# %d %s %s cursor of %d 10/20 byte key/data items", 175 wkcou , ts , ev ? 176 ( skdupwk ? "DB_PREV_NODUP" : "DB_PREV") : 177 ( skdupwk ? "DB_NEXT_NODUP" : "DB_NEXT"), 178 cou ); 179 i( dupcou != 0) 180 `tf (" wh %d dups", dupcou ); 181 `tf ("\n"); 190 `TIMER_DISPLAY (() cou * wkcou ); 192 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 194 ( EXIT_SUCCESS ); 195 } } 198 $uge () 200 () `rtf ( dr , "%s\n\t%s\n", 203 ( EXIT_FAILURE ); 204 } } @../test_micro/source/b_del.c 4 ~"bch.h " 6 uge (); 9 $b_d ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB * dbp ; 14 DBC * dbc ; 15 DBT key , da ; 16 DBTYPE ty ; 17 db_o_t o ; 18 u_t32_t chesize ; 19 ch , i , cou , t , u_curs ; 20 * ts , buf [32]; 22 ty = DB_BTREE ; 23 chesize = MEGABYTE ; 24 cou = 100000; 25 u_curs = 0; 26 ts = "Btree"; 27 ( ch = `gt ( gc , gv , "C:c:t:w")! EOF ) 28 ch ) { 30 chesize = ( u_t32_t ) `oi ( ݏrg ); 33 cou = `oi ( ݏrg ); 36 ݏrg [0]) { 38 ts = "Btree"; 39 ty = DB_BTREE ; 42 i( `b_ut_have_hash ()) 44 ts = "Hash"; 45 ty = DB_HASH ; 48 i( `b_ut_have_queue ()) 50 ts = "Queue"; 51 ty = DB_QUEUE ; 54 ts = "Recno"; 55 ty = DB_RECNO ; 58 ( `uge ()); 62 u_curs = 1; 66 ( `uge ()); 68 gc - td ; 69 gv + td ; 70 i( gc != 0) 71 ( `uge ()); 74 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 75 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 76 dbp -> `t_rfe (dbp, dr ); 79 i( ty = DB_QUEUE ) 80 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 82 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 83 `DB_BENCH_ASSERT ( 84 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 86 `DB_BENCH_ASSERT ( 87 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 91 `memt (& key , 0, (key)); 92 `memt (& da , 0, (data)); 93 da .data = "01234567890123456789"; 94 da . size = 20; 97 ty ) { 98 DB_BTREE : 99 DB_HASH : 100 key . da = buf ; 101 key . size = 10; 103 DB_QUEUE : 104 DB_RECNO : 105 key . da = & o ; 106 key . size = ( o ); 108 DB_UNKNOWN : 109 `b_ut_abt (); 114 i( ty = DB_BTREE ||y = DB_HASH ) 115 i = 0; i < cou ; ++i) { 116 () `tf ( buf , (buf), "%010d", i ); 117 `DB_BENCH_ASSERT ( 118 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 121 i = 0, o = 1; i < cou ; ++i, ++recno) 122 `DB_BENCH_ASSERT ( 123 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 126 TIMER_START ; 127 i( u_curs ) { 128 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 129 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) 130 `DB_BENCH_ASSERT ( dbc -> `c_d (dbc, 0) == 0); 131 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 133 i( ty = DB_BTREE ||y = DB_HASH ) 134 i = 0; i < cou ; ++i) { 135 () `tf ( buf , (buf), "%010d", i ); 136 `DB_BENCH_ASSERT ( 137 dbp -> `d (dbp, NULL , & key , 0) == 0); 140 i = 0, o = 1; i < cou ; ++i, ++recno) 141 `DB_BENCH_ASSERT ( 142 dbp -> `d (dbp, NULL , & key , 0) == 0); 144 TIMER_STOP ; 146 `tf ( 148 cou , ts , u_curs ? "a cursor" : "the key"); 149 `TIMER_DISPLAY ( cou ); 151 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 154 } } 157 $uge () 159 () `rtf ( dr , 161 ( EXIT_FAILURE ); 162 } } @../test_micro/source/b_get.c 4 ~"bch.h " 6 uge (); 9 $b_g ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB * dbp ; 14 DBTYPE ty ; 15 DBT key , da ; 16 db_o_t o ; 17 u_t32_t chesize ; 18 ch , i , cou ; 19 * ts ; 21 ty = DB_BTREE ; 22 chesize = MEGABYTE ; 23 cou = 100000; 24 ts = "Btree"; 25 ( ch = `gt ( gc , gv , "C:c:t:")! EOF ) 26 ch ) { 28 chesize = ( u_t32_t ) `oi ( ݏrg ); 31 cou = `oi ( ݏrg ); 34 ݏrg [0]) { 36 ts = "Btree"; 37 ty = DB_BTREE ; 40 i( `b_ut_have_hash ()) 42 ts = "Hash"; 43 ty = DB_HASH ; 46 i( `b_ut_have_queue ()) 48 ts = "Queue"; 49 ty = DB_QUEUE ; 52 ts = "Recno"; 53 ty = DB_RECNO ; 56 ( `uge ()); 61 ( `uge ()); 63 gc - td ; 64 gv + td ; 65 i( gc != 0) 66 ( `uge ()); 69 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 70 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 71 dbp -> `t_rfe (dbp, dr ); 74 i( ty = DB_QUEUE ) 75 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 10) == 0); 77 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 78 `DB_BENCH_ASSERT ( 79 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 81 `DB_BENCH_ASSERT ( 82 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 86 `memt (& key , 0, (key)); 87 `memt (& da , 0, (data)); 88 ty ) { 89 DB_BTREE : 90 DB_HASH : 91 key . da = "aaaaa"; 92 key . size = 5; 94 DB_QUEUE : 95 DB_RECNO : 96 o = 1; 97 key . da = & o ; 98 key . size = ( o ); 100 DB_UNKNOWN : 101 `b_ut_abt (); 104 da .data = "bbbbb"; 105 da . size = 5; 107 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 110 TIMER_START ; 111 i = 0; i < cou ; ++i) 112 `DB_BENCH_ASSERT ( dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 113 TIMER_STOP ; 115 `tf ("# %d %daba g oched key/dem\n", cou , ts ); 116 `TIMER_DISPLAY ( cou ); 118 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 121 } } 124 $uge () 126 () `rtf ( dr , 128 ( EXIT_FAILURE ); 129 } } @../test_micro/source/b_inmem.c 5 ~"bch.h " 7 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 0 11 #unde MEGABYTE 12 #MEGABYTE (1024 * 1024) ) 14 u_t32_t gbulkbufsize = 4 * MEGABYTE ; 15 u_t32_t gchesize = 32 * MEGABYTE ; 16 u_t32_t gdasize = 32; 17 u_t32_t gkeysize = 8; 18 u_t32_t glogbufsize = 8 * MEGABYTE ; 19 u_t32_t gnumems ; 20 u_t32_t ggesize = 32 * 1024; 22 FILE * g ; 23 * gogme ; 25 _ds __P (( u_t , )); 26 _ds_bulk __P (( u_t , u_int *)); 27 _tds __P (( u_t , , u_t32_t , u_int32_t)); 28 uge __P (()); 31 $_ds ( u_t s , upde ) 33 DB_ENV * dbv ; 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); 54 dbv = dbp ->dbenv; 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 () dbv -> `memp_ (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 () dbv -> `memp_ (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_ENV * dbv ; 90 DB * dbp ; 91 DBC * dbc ; 92 DBT key , da ; 93 u_t32_t n , kn ; 94 u_t i , tٮ ; 95 * keybuf , * dabuf ; 96 * por , * dp , * kp ; 97 DB_MPOOL_STAT * g ; 99 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 100 `DB_BENCH_ASSERT (( dabuf = `mloc ( bulkbufsize )! NULL ); 102 `memt (& key , 0, (key)); 103 `memt (& da , 0, (data)); 104 key . da = keybuf ; 105 key . size = keysize ; 107 da .d dabuf ; 108 da . size = dasize ; 109 `memt ( dabuf , 'b', dasize ); 111 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 112 dbv = dbp ->dbenv; 113 dbp -> `t_rfe (dbp, dr ); 115 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 116 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 1) == 0); 117 `DB_BENCH_ASSERT ( 118 dbp -> `ݒ (dbp, NULL , NULL, NULL, DB_BTREE , DB_CREATE , 0666) == 0); 120 i = 1; i < numems ; ++i) { 121 () `tf ( keybuf , keysize , "%7d", i ); 122 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 126 = `fݒ ("before", "w"); 127 dbp -> `t_msgfe (dbp, ); 128 `DB_BENCH_ASSERT ( dbp -> `_t (dbp, DB_STAT_ALL ) == 0); 131 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 133 da . un = bulkbufsize ; 134 da . ags = DB_DBT_USERMEM ; 136 () dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 138 TIMER_START ; 139 tٮ = 0; s > 0; --ops) { 140 `DB_BENCH_ASSERT ( dbc -> `c_g ( 141 dbc , & key , & da , DB_FIRST | DB_MULTIPLE_KEY ) == 0); 142 `DB_MULTIPLE_INIT ( por , & da ); 143 por ! NULL ) { 144 `DB_MULTIPLE_KEY_NEXT ( por , & da , kp , kn , dp , n ); 145 i( kp ! NULL ) 146 ++ tٮ ; 149 TIMER_STOP ; 150 * tٮp = tٮ ; 152 () dbv -> `memp_ (dbv, & g , NULL , 0); 153 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 156 = `fݒ ("before", "w"); 157 dbp -> `t_msgfe (dbp, ); 158 `DB_BENCH_ASSERT ( dbp -> `_t (dbp, DB_STAT_ALL ) == 0); 161 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 163 `COMPQUIET ( dp , NULL ); 164 `COMPQUIET ( kn , 0); 165 `COMPQUIET ( n , 0); 166 } } 169 $_tds ( u_t s , upde , u_t32_t v_ags , u_t32_ log_ags ) 171 DB * dbp ; 172 DBT key , da ; 173 DB_ENV * dbv ; 174 DB_MPOOL_STAT * g ; 175 DB_TXN * txn ; 176 * keybuf , * dabuf ; 178 `DB_BENCH_ASSERT (( keybuf = `mloc ( keysize )! NULL ); 179 `DB_BENCH_ASSERT (( dabuf = `mloc ( dasize )! NULL ); 181 `memt (& key , 0, (key)); 182 `memt (& da , 0, (data)); 183 key . da = keybuf ; 184 key . size = keysize ; 185 `memt ( keybuf , 'a', keysize ); 187 da .d dabuf ; 188 da . size = dasize ; 189 `memt ( dabuf , 'b', dasize ); 191 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 193 dbv -> `t_rfe (dbv, dr ); 196 #ifde DB_AUTO_COMMIT 197 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, DB_AUTO_COMMIT , 1) == 0); 199 i( v_ags != 0) 200 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, v_ags , 1) == 0); 203 i( log_ags != 0) 204 #i DB_VERSION_MINOR >= 7 205 `DB_BENCH_ASSERT ( 206 dbv -> `log_t_cfig (dbv, log_ags , 1) == 0); 208 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, log_ags , 1) == 0); 210 #ifde DB_LOG_INMEMORY 211 i(!( log_ags & DB_LOG_INMEMORY )) 213 #ifde DB_LOG_IN_MEMORY 214 i(!( log_ags & DB_LOG_IN_MEMORY )) 216 `DB_BENCH_ASSERT ( dbv -> `t_lg_max (dbv, logbufsize * 10) == 0); 217 `DB_BENCH_ASSERT ( dbv -> `t_lg_bsize (dbv, logbufsize ) == 0); 219 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 220 DB_CREATE | DB_PRIVATE | DB_INIT_LOCK | 221 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN , 0666) == 0); 223 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 224 `DB_BENCH_ASSERT ( dbp -> `t_gesize (dbp, gesize ) == 0); 225 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 226 dbp , NULL , TESTFILE , NULL, DB_BTREE , DB_CREATE , 0666) == 0); 228 i( upde ) { 229 () dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 231 TIMER_START ; 232 ; s > 0; --ops) 233 `DB_BENCH_ASSERT ( 234 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 235 TIMER_STOP ; 237 () dbv -> `memp_ (dbv, & g , NULL , 0); 238 `DB_BENCH_ASSERT ( g -> _ge_out == 0); 240 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 241 () dbv -> `memp_ (dbv, & g , NULL , DB_STAT_CLEAR ); 243 TIMER_START ; 244 ; s > 0; --ops) { 245 `DB_BENCH_ASSERT ( 246 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 247 `DB_BENCH_ASSERT ( 248 dbp -> `g (dbp, NULL , & key , & da , 0) == 0); 249 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 251 TIMER_STOP ; 253 () dbv -> `memp_ (dbv, & g , NULL , 0); 254 `DB_BENCH_ASSERT ( g -> _che_miss == 0); 257 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 258 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 259 } } 261 #DEFAULT_OPS 1000000 ) 264 $b_mem ( gc , * gv []) 266 * ݏrg ; 267 td ; 268 u_t s , tٮ ; 269 ch ; 271 i(( ogme = `chr ( gv [0], '/')= NULL ) 272 ogme = gv [0]; 274 ++ ogme ; 276 s = 0; 277 ( ch = `gt ( gc , gv , "b:C:d:k:l:o:P:")! EOF ) 278 ch ) { 280 bulkbufsize = ( u_t32_t ) `oi ( ݏrg ); 283 chesize = ( u_t32_t ) `oi ( ݏrg ); 286 dasize = ( u_t ) `oi ( ݏrg ); 289 keysize = ( u_t ) `oi ( ݏrg ); 292 logbufsize = ( u_t32_t ) `oi ( ݏrg ); 295 s = ( u_t ) `oi ( ݏrg ); 298 gesize = ( u_t32_t ) `oi ( ݏrg ); 302 ( `uge ()); 304 gc - td ; 305 gv + td ; 307 i( gc != 1) 308 ( `uge ()); 310 numems = ( chesize / ( keysize + dasize - 1)) / 2; 312 i( `rcmp ( gv [0], "read") == 0) { 313 i( s == 0) 314 s = DEFAULT_OPS ; 315 `_ds ( s , 0); 316 `tf ( 318 s , keysize , dasize ); 319 } i( `rcmp ( gv [0], "bulk") == 0) { 320 i( keysize < 8) { 321 `rtf ( dr , 322 "%s: bulkdequekey siz>10\n", ogme ); 323 ( EXIT_FAILURE ); 331 i( s == 0) 332 s = 100000; 333 `_ds_bulk ( s , & tٮ ); 334 s = tٮ ; 335 `tf ( 337 s , keysize , dasize ); 338 } i( `rcmp ( gv [0], "write") == 0) { 339 i( s == 0) 340 s = DEFAULT_OPS ; 341 `_ds ( s , 1); 342 `tf ( 344 s , keysize , dasize ); 345 } i( `rcmp ( gv [0], "txn-read") == 0) { 346 i( s == 0) 347 s = DEFAULT_OPS ; 348 `_tds ( s , 0, 0, 0); 349 `tf ( 351 s , keysize , dasize ); 352 } i( `rcmp ( gv [0], "txn-write") == 0) { 353 i( s == 0) 354 s = DEFAULT_OPS ; 355 #i `defed ( DB_LOG_INMEMORY || defed( DB_LOG_IN_MEMORY ) 356 #i `defed ( DB_LOG_INMEMORY ) 357 `_tds ( s , 1, 0, DB_LOG_INMEMORY ); 359 `_tds ( s , 1, 0, DB_LOG_IN_MEMORY ); 361 `tf ( 363 s , keysize , dasize ); 365 ( EXIT_SUCCESS ); 367 } i( `rcmp ( gv [0], "txn-nosync") == 0) { 368 i( s == 0) 369 s = DEFAULT_OPS ; 370 `_tds ( s , 1, DB_TXN_NOSYNC , 0); 371 `tf ( 373 s , keysize , dasize ); 374 } i( `rcmp ( gv [0], "txn-write-nosync") == 0) { 375 i( s == 0) 376 s = DEFAULT_OPS ; 377 #ifde DB_TXN_WRITE_NOSYNC 378 `_tds ( s , 1, DB_TXN_WRITE_NOSYNC , 0); 379 `tf ( 381 s , keysize , dasize ); 383 ( EXIT_SUCCESS ); 385 } i( `rcmp ( gv [0], "txn-sync") == 0) { 390 i( s == 0) 391 s = 100000; 392 `_tds ( s , 1, 0, 0); 393 `tf ( 395 s , keysize , dasize ); 397 `rtf ( dr , "%s: unknowkeywd %s\n", ogme , gv [0]); 398 ( EXIT_FAILURE ); 401 `TIMER_DISPLAY ( s ); 402 ( EXIT_SUCCESS ); 403 } } 406 $uge () 408 `rtf ( dr , "usage: %s %s%s%s%s", 409 ogme , "[-b bulkbufsz] [-C cachesz]\n\t", 413 ( EXIT_FAILURE ); 414 } } 417 $b_mem ( gc , * gv []) 419 `COMPQUIET ( gc , 0); 420 `COMPQUIET ( gv , NULL ); 422 } } @../test_micro/source/b_load.c 4 ~"bch.h " 6 uge (); 9 $b_ld ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB * dbp ; 14 DBTYPE ty ; 15 DBT key , da ; 16 db_o_t o ; 17 u_t32_t chesize ; 18 ch , i , cou , dui ; 19 * ts , buf [32]; 21 ty = DB_BTREE ; 22 chesize = MEGABYTE ; 23 cou = 100000; 24 dui = 0; 25 ts = "Btree"; 26 ( ch = `gt ( gc , gv , "C:c:dt:")! EOF ) 27 ch ) { 29 chesize = ( u_t32_t ) `oi ( ݏrg ); 32 cou = `oi ( ݏrg ); 35 dui = 1; 38 ݏrg [0]) { 40 ts = "Btree"; 41 ty = DB_BTREE ; 44 i( `b_ut_have_hash ()) 46 ts = "Hash"; 47 ty = DB_HASH ; 50 i( `b_ut_have_queue ()) 52 ts = "Queue"; 53 ty = DB_QUEUE ; 56 ts = "Recno"; 57 ty = DB_RECNO ; 60 ( `uge ()); 65 ( `uge ()); 67 gc - td ; 68 gv + td ; 69 i( gc != 0) 70 ( `uge ()); 73 i( dui && ( ty = DB_QUEUE ||y = DB_RECNO )) { 74 `rtf ( dr , 76 ( `uge ()); 79 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 84 i( dui ) 89 `DB_BENCH_ASSERT ( `db_ (& dbp , NULL , 0) == 0); 90 `DB_BENCH_ASSERT ( dbp -> `t_chesize (dbp, 0, chesize , 0) == 0); 91 i( dui ) 92 `DB_BENCH_ASSERT ( dbp -> `t_ags (dbp, DB_DUP ) == 0); 93 dbp -> `t_rfe (dbp, dr ); 96 i( ty = DB_QUEUE ) 97 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, 20) == 0); 99 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 100 `DB_BENCH_ASSERT ( 101 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 103 `DB_BENCH_ASSERT ( 104 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 108 `memt (& key , 0, (key)); 109 `memt (& da , 0, (data)); 112 TIMER_START ; 113 i( dui ) { 114 key . size = 10; 115 key . da = "01234567890123456789"; 116 da .d buf ; 117 da . size = 20; 118 i = 0; i < cou ; ++i) { 119 () `tf ( buf , (buf), "%020d", i ); 120 `DB_BENCH_ASSERT ( 121 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 124 da .d buf ; 125 da . size = 20; 126 i( ty = DB_BTREE ||y = DB_HASH ) { 127 key . size = 10; 128 key . da = buf ; 129 i = 0; i < cou ; ++i) { 130 () `tf ( buf , (buf), "%010d", i ); 131 `DB_BENCH_ASSERT ( 132 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 135 key . da = & o ; 136 key . size = ( o ); 137 i = 0, o = 1; i < cou ; ++i, ++recno) 138 `DB_BENCH_ASSERT ( 139 dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 143 TIMER_STOP ; 145 `tf ("# %d %s database in-orderut of 10/20 byte key/data %sitems\n", 146 cou , ts , dui ? "duplicate " : ""); 147 `TIMER_DISPLAY ( cou ); 149 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 152 } } 155 $uge () 157 () `rtf ( dr , 159 ( EXIT_FAILURE ); 160 } } @../test_micro/source/b_open.c 4 ~"bch.h " 6 uge (); 9 $b_ݒ ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB_ENV * dbv ; 14 DB * dbp ; 15 DBTYPE ty ; 16 ch , i , cou ; 17 * ame , * dbme , * ts ; 19 ty = DB_BTREE ; 20 cou = 1000; 21 ame = dbme = NULL ; 22 ts = "Btree"; 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 i( `b_ut_have_hash ()) 43 ts = "Hash"; 44 ty = DB_HASH ; 47 i( `b_ut_have_queue ()) 49 ts = "Queue"; 50 ty = DB_QUEUE ; 53 ts = "Recno"; 54 ty = DB_RECNO ; 57 ( `uge ()); 62 ( `uge ()); 64 gc - td ; 65 gv + td ; 66 i( gc != 0) 67 ( `uge ()); 69 #i DB_VERSION_MAJOR < 4 74 i( ame = NULL && dbme == NULL) 77 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 4 81 i( ame = NULL && dbme != NULL) 86 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 87 dbv -> `t_rfe (dbv, dr ); 88 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 89 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 90 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 92 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 93 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 97 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 99 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 100 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 101 dbp , NULL , ame , dbme , ty , DB_CREATE , 0666) == 0); 103 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 104 dbp , ame , dbme , ty , DB_CREATE , 0666) == 0); 106 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 109 TIMER_START ; 110 i = 0; i < cou ; ++i) { 111 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 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 ); 130 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 133 } } 136 $uge () 138 () `rtf ( dr , "usage: b_open [-df] [-c count] [-type]\n"); 139 ( EXIT_FAILURE ); 140 } } @../test_micro/source/b_put.c 4 ~"bch.h " 6 uge (); 7 b_put_cdy ( DB *, cڡ DBT *, const DBT *, DBT *); 10 $b_put ( gc , * gv []) 12 * ݏrg ; 13 td ; 14 DB_ENV * dbv ; 15 DB * dbp , ** cd ; 16 DBTYPE ty ; 17 DBT key , da ; 18 db_o_t o ; 19 u_t32_t chesize ; 20 ch , dsize , i , cou , cds ; 21 * ts , buf [64]; 23 cd = NULL ; 24 ty = DB_BTREE ; 25 chesize = MEGABYTE ; 26 dsize = 20; 27 cou = 100000; 28 cds = 0; 29 ts = "Btree"; 30 ( ch = `gt ( gc , gv , "C:c:d:s:t:")! EOF ) 31 ch ) { 33 chesize = ( u_t32_t ) `oi ( ݏrg ); 36 cou = `oi ( ݏrg ); 39 dsize = `oi ( ݏrg ); 42 cds = `oi ( ݏrg ); 45 ݏrg [0]) { 47 ts = "Btree"; 48 ty = DB_BTREE ; 51 i( `b_ut_have_hash ()) 53 ts = "Hash"; 54 ty = DB_HASH ; 57 i( `b_ut_have_queue ()) 59 ts = "Queue"; 60 ty = DB_QUEUE ; 63 ts = "Recno"; 64 ty = DB_RECNO ; 67 ( `uge ()); 72 ( `uge ()); 74 gc - td ; 75 gv + td ; 76 i( gc != 0) 77 ( `uge ()); 79 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 3 83 i( cds ) 88 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 89 dbv -> `t_rfe (dbv, dr ); 90 `DB_BENCH_ASSERT ( dbv -> `t_chesize (dbv, 0, chesize , 0) == 0); 91 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 92 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 93 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 95 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 96 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 103 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 104 i( ty = DB_QUEUE ) 105 `DB_BENCH_ASSERT ( dbp -> `t__n (dbp, ( u_t32_t ) dsize ) == 0); 106 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 107 `DB_BENCH_ASSERT ( 108 dbp -> `ݒ (dbp, NULL , TESTFILE , NULL, ty , DB_CREATE , 0666) == 0); 110 `DB_BENCH_ASSERT ( 111 dbp -> `ݒ (dbp, TESTFILE , NULL , ty , DB_CREATE , 0666) == 0); 115 i( cds != 0) { 116 `DB_BENCH_ASSERT (( cd = 117 `oc (( DB *), ( size_t ) cds )! NULL ); 118 i = 0; i < cds ; ++i) { 119 `DB_BENCH_ASSERT ( `db_ (& cd [ i ], dbv , 0) == 0); 120 `tf ( buf , (buf), "%d.db", i ); 121 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 122 `DB_BENCH_ASSERT ( cd [ i ]-> `ݒ (cd[i], NULL , 123 buf , NULL , DB_BTREE , DB_CREATE , 0600) == 0); 125 `DB_BENCH_ASSERT ( cd [ i ]-> `ݒ (second[i], 126 buf , NULL , DB_BTREE , DB_CREATE , 0600) == 0); 128 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR >= 3 129 #i DB_VERSION_MAJOR > 3 && DB_VERSION_MINOR > 0 134 `DB_BENCH_ASSERT ( dbp -> `assoc ( 135 dbp , NULL , cd [ i ], b_put_cdy , 0) == 0); 137 `DB_BENCH_ASSERT ( dbp -> `assoc ( 138 dbp , cd [ i ], b_put_cdy , 0) == 0); 145 `memt (& key , 0, (key)); 146 `memt (& da , 0, (data)); 147 ty ) { 148 DB_BTREE : 149 DB_HASH : 150 key . da = "01234567890123456789"; 151 key . size = 20; 153 DB_QUEUE : 154 DB_RECNO : 155 o = 1; 156 key . da = & o ; 157 key . size = ( o ); 159 DB_UNKNOWN : 160 `b_ut_abt (); 164 `DB_BENCH_ASSERT ( 165 ( da .d `mloc (da. size = ( size_t ) dsize )! NULL ); 168 TIMER_START ; 169 i = 0; i < cou ; ++i) 170 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 171 TIMER_STOP ; 173 i( ty = DB_BTREE ||y = DB_HASH ) 174 `tf ( 176 cou , ts , ( u_lg ) dsize ); 178 `tf ("# %d %s databaseut of key, %lu byte data", 179 cou , ts , ( u_lg ) dsize ); 180 i( cds ) 181 `tf (" wh %d secds", cds ); 182 `tf ("\n"); 183 `TIMER_DISPLAY ( cou ); 185 i( cd ! NULL ) { 186 i = 0; i < cds ; ++i) 187 `DB_BENCH_ASSERT ( cd [ i ]-> `o (second[i], 0) == 0); 188 ` ( cd ); 191 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 192 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 195 } } 198 $b_put_cdy ( dbp , pkey , pda , skey ) 199 DB * dbp ; 200 cڡ DBT * pkey , * pda ; 201 DBT * skey ; 203 skey -> da = pkey ->data; 204 skey -> size = pkey ->size; 206 `COMPQUIET ( dbp , NULL ); 207 `COMPQUIET ( pda , NULL ); 209 } } 212 $uge () 214 () `rtf ( dr , "usage: b_put %s\n", 216 ( EXIT_FAILURE ); 217 } } @../test_micro/source/b_recover.c 4 ~"bch.h " 6 uge (); 9 $b_cov ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB * dbp ; 14 DBT key , da ; 15 DB_ENV * dbv ; 16 DB_TXN * txn ; 17 u_t32_t chesize ; 18 ch , i , cou ; 24 #i DB_VERSION_MAJOR < 4 27 chesize = MEGABYTE ; 28 cou = 1000; 29 ( ch = `gt ( gc , gv , "C:c:")! EOF ) 30 ch ) { 32 chesize = ( u_t32_t ) `oi ( ݏrg ); 35 cou = `oi ( ݏrg ); 39 ( `uge ()); 41 gc - td ; 42 gv + td ; 43 i( gc != 0) 44 ( `uge ()); 47 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 48 dbv -> `t_rfe (dbv, dr ); 49 `DB_BENCH_ASSERT ( dbv -> `t_chesize (dbv, 0, chesize , 0) == 0); 51 #OFLAGS \ 52 ( DB_CREATE | DB_INIT_LOCK | \ 53 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE ) ) 54 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 55 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , NULL , OFLAGS , 0666) == 0); 57 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 58 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , OFLAGS , 0666) == 0); 60 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 61 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , OFLAGS , 0666) == 0); 65 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 66 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 67 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, NULL , 68 TESTFILE , NULL , DB_BTREE , DB_CREATE | DB_AUTO_COMMIT , 0666) == 0); 70 `DB_BENCH_ASSERT ( 71 dbp -> `ݒ (dbp, TESTFILE , NULL , DB_BTREE , DB_CREATE , 0666) == 0); 75 `memt (& key , 0, (key)); 76 `memt (& da , 0, (data)); 77 key . size = da .size = 20; 78 key . da = data.data = "01234567890123456789"; 81 i = 0; i < cou ; ++i) { 82 #i DB_VERSION_MAJOR < 4 83 `DB_BENCH_ASSERT ( 84 `txn_beg ( dbv , NULL , & txn , DB_TXN_NOSYNC ) == 0); 85 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 86 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 88 `DB_BENCH_ASSERT ( 89 dbv -> `txn_beg (dbv, NULL , & txn , DB_TXN_NOSYNC ) == 0); 90 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 91 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 95 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 96 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 99 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 100 dbv -> `t_rfe (dbv, dr ); 101 `DB_BENCH_ASSERT ( 102 dbv -> `t_chesize (dbenv, 0, 1048576 , 0) == 0); 105 TIMER_START ; 106 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 107 `DB_BENCH_ASSERT ( dbv -> `ݒ ( 108 dbv , TESTDIR , NULL , OFLAGS | DB_RECOVER , 0666) == 0); 110 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 111 `DB_BENCH_ASSERT ( 112 dbv -> `ݒ (dbv, TESTDIR , OFLAGS | DB_RECOVER , 0666) == 0); 114 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 115 `DB_BENCH_ASSERT ( 116 dbv -> `ݒ (dbv, TESTDIR , OFLAGS | DB_RECOVER , 0666) == 0); 118 TIMER_STOP ; 124 `tf ("#ecovy %dnis\n", cou ); 125 `TIMER_DISPLAY ( cou ); 127 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 130 } } 133 $uge () 135 () `rtf ( dr , "usage: b_recover [-C cachesz] [-c count]\n"); 136 ( EXIT_FAILURE ); 137 } } @../test_micro/source/b_txn.c 4 ~"bch.h " 6 uge (); 9 $b_txn ( gc , * gv []) 11 * ݏrg ; 12 td ; 13 DB_ENV * dbv ; 14 DB_TXN * txn ; 15 bt , ch , i , cou ; 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 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 40 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 41 NULL , DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 42 DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE , 0666) == 0); 44 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , 45 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 46 DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE , 0666) == 0); 50 TIMER_START ; 51 i( bt ) 52 i = 0; i < cou ; ++i) { 53 #i DB_VERSION_MAJOR < 4 54 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 55 `DB_BENCH_ASSERT ( `txn_abt ( txn ) == 0); 57 `DB_BENCH_ASSERT ( 58 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 59 `DB_BENCH_ASSERT ( txn -> `abt (txn) == 0); 63 i = 0; i < cou ; ++i) { 64 #i DB_VERSION_MAJOR < 4 65 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 66 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 68 `DB_BENCH_ASSERT ( 69 dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 70 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 73 TIMER_STOP ; 75 `tf ("# %dmptyransaction start/%sairs\n", 76 cou , bt ? "abort" : "commit"); 77 `TIMER_DISPLAY ( cou ); 79 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 82 } } 85 $uge () 87 () `rtf ( dr , "usage: b_txn [-a] [-c count]\n"); 88 ( EXIT_FAILURE ); 89 } } @../test_micro/source/b_txn_write.c 4 ~"bch.h " 6 uge __P (()); 8 #ifde DB_INIT_REP 9 b_txn_wre_nd __P (( DB_ENV *, 10 cڡ DBT *, cڡ DBT *, cڡ DB_LSN *, , u_t32_t )); 17 $b_txn_wre_nd ( dbv , cڌ , c , l , eid , ags ) 18 DB_ENV * dbv ; 19 cڡ DBT * cڌ , * c ; 20 cڡ DB_LSN * l ; 21 eid ; 22 u_t32_t ags ; 24 `COMPQUIET ( dbv , NULL ); 25 `COMPQUIET ( cڌ , NULL ); 26 `COMPQUIET ( c , NULL ); 27 `COMPQUIET ( l , NULL ); 28 `COMPQUIET ( eid , 0); 29 `COMPQUIET ( ags , 0); 31 } } 35 $b_txn_wre ( gc , * gv []) 37 * ݏrg ; 38 td ; 39 DB * dbp ; 40 DBT key , da ; 41 DB_ENV * dbv ; 42 DB_TXN * txn ; 43 u_t32_t ags , oags ; 44 ch , i , cou , p_ub ; 45 * cfig ; 47 cou = 1000; 48 oags = ags = 0; 49 p_ub = 0; 50 cfig = "synchronous"; 51 ( ch = `gt ( gc , gv , "ac:rw")! EOF ) 52 ch ) { 54 cfig = "nosync"; 55 ags = DB_TXN_NOSYNC ; 58 cou = `oi ( ݏrg ); 61 #ifde DB_INIT_REP 62 p_ub = 1; 64 `ex (0); 68 cfig = "write-nosync"; 69 #ifde DB_TXN_WRITE_NOSYNC 70 ags = DB_TXN_WRITE_NOSYNC ; 72 `ex (0); 77 ( `uge ()); 79 gc - td ; 80 gv + td ; 81 i( gc != 0) 82 ( `uge ()); 85 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 86 dbv -> `t_rfe (dbv, dr ); 88 #ifde DB_INIT_REP 89 i( p_ub ) { 90 #i DB_VERSION_MAJOR =4 && DB_VERSION_MINOR >= 5 || DB_VERSION_MAJOR > 4 91 `DB_BENCH_ASSERT ( 92 dbv -> `p_t_t (dbv, 1, b_txn_wre_nd ) == 0); 94 `DB_BENCH_ASSERT ( 95 dbv -> `t_p_t (dbv, 1, b_txn_wre_nd ) == 0); 97 oags | DB_INIT_REP ; 100 oags | DB_CREATE | DB_INIT_LOCK | 101 DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE ; 102 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 0 103 `DB_BENCH_ASSERT ( 104 dbv -> `ݒ (dbv, TESTDIR , NULL , ags | oags , 0666) == 0); 106 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR == 1 107 `DB_BENCH_ASSERT ( 108 dbv -> `ݒ (dbv, TESTDIR , ags | oags , 0666) == 0); 110 #i DB_VERSION_MAJOR > 3 || DB_VERSION_MINOR > 1 111 i( ags != 0) 112 `DB_BENCH_ASSERT ( dbv -> `t_ags (dbv, ags , 1) == 0); 113 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbv, TESTDIR , oags , 0666) == 0); 116 #ifde DB_INIT_REP 117 i( p_ub ) 118 `DB_BENCH_ASSERT ( 119 dbv -> `p_t (dbv, NULL , DB_REP_MASTER ) == 0); 123 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 124 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 125 `DB_BENCH_ASSERT ( dbp -> `ݒ (dbp, NULL , 126 TESTFILE , NULL , DB_BTREE , DB_CREATE | DB_AUTO_COMMIT , 0666) == 0); 128 `DB_BENCH_ASSERT ( 129 dbp -> `ݒ (dbp, TESTFILE , NULL , DB_BTREE , DB_CREATE , 0666) == 0); 133 `memt (& key , 0, (key)); 134 `memt (& da , 0, (data)); 135 key . size = da .size = 20; 136 key . da = data.data = "01234567890123456789"; 139 TIMER_START ; 140 i = 0; i < cou ; ++i) { 141 #i DB_VERSION_MAJOR < 4 142 `DB_BENCH_ASSERT ( `txn_beg ( dbv , NULL , & txn , 0) == 0); 143 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 144 `DB_BENCH_ASSERT ( `txn_comm ( txn , 0) == 0); 146 `DB_BENCH_ASSERT ( dbv -> `txn_beg (dbv, NULL , & txn , 0) == 0); 147 `DB_BENCH_ASSERT ( dbp -> `put (dbp, txn , & key , & da , 0) == 0); 148 `DB_BENCH_ASSERT ( txn -> `comm (txn, 0) == 0); 151 TIMER_STOP ; 153 `tf ("# %d %stransactions write %s commitairs\n", 154 cou , p_ub ? "id ": "", cfig ); 155 `TIMER_DISPLAY ( cou ); 157 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 158 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 161 } } 164 $uge () 166 () `rtf ( dr , "usage: b_txn_write [-arw] [-c count]\n"); 167 ( EXIT_FAILURE ); 168 } } @../test_micro/source/b_uname.c 5 ~"bch.h " 7 #UNAMEFILE "NODENAME" ) 9 wre_fo __P (( FILE *)); 12 $b_ume () 14 FILE * ; 15 t ; 17 i(( = `fݒ ( UNAMEFILE , "w")= NULL ) 18 fe_r ; 20 t = `wre_fo ( ); 22 i( `fo ( ) != 0) { 23 fe_r : `rtf ( dr , 24 "%s: %s: %s\n", ogme , UNAMEFILE , ` ( o )); 28 ( t ); 29 } } 31 #ifde DB_WIN32 33 $wre_fo ( ) 34 FILE * ; 36 OSVERSIONINFO osv ; 37 SYSTEM_INFO sysfo ; 38 * p ; 40 #ifde DB_WINCE 41 p = "WinCE"; 44 DWORD n ; 45 buf [1024]; 47 n = ( buf ) - 1; 48 `GCompurName ( buf , & n ); 49 p = buf ; 52 `rtf ( , "<p>%s, ", p ); 54 `GSyemInfo (& sysfo ); 55 sysfo . wProssArcheu ) { 56 PROCESSOR_ARCHITECTURE_ALPHA : 57 p = "alpha"; 59 PROCESSOR_ARCHITECTURE_INTEL : 60 p = "x86"; 62 PROCESSOR_ARCHITECTURE_MIPS : 63 p = "mips"; 65 PROCESSOR_ARCHITECTURE_PPC : 66 p = "ppc"; 69 p = "unknown"; 72 `rtf ( , "%s<br>\n", p ); 73 `memt (& osv , 0, (osver)); 74 osv . dwOSVsiInfoSize = (osver); 75 `GVsiEx (& osv ); 76 osv . dwPtfmId ) { 77 VER_PLATFORM_WIN32_NT : 78 i( osv . dwMajVsi == 4) 79 p = "Windows NT4x"; 80 i( osv . dwMajVsi <= 3) 81 p = "Windows NT3x"; 82 i( osv . dwMajVsi =5 && osv. dwMVsi < 1) 83 p = "Windows 2000"; 84 i( osv . dwMajVsi >= 5) 85 p = "Windows XP"; 87 p = "unknown"; 89 VER_PLATFORM_WIN32_WINDOWS : 90 i(( osv . dwMajVsi > 4) || 91 (( osv . dwMajVsi =4&& (osv. dwMVsi > 0))) { 92 i( osv . dwMVsi >= 90) 93 p = "Windows ME"; 95 p = "Windows 98"; 97 p = "Windows 95"; 99 VER_PLATFORM_WIN32s : 100 p = "Windows"; 103 p = "unknown"; 106 `rtf ( , 107 "%s, %ld.%02ld", p , osv . dwMajVsi , osv. dwMVsi ); 109 } } 111 #i defed ( HAVE_VXWORKS ) 113 $wre_fo ( ) 114 FILE * ; 116 `rtf ( , "<p>VxWorks"); 118 } } 121 ~<sys/utame.h > 124 $wre_fo ( ) 125 FILE * ; 127 utame me ; 129 i( `ume (& me ) == 0) 130 `rtf ( , "<p>%s, %s<br>\n%s, %s, %s</p>\n", me . nodame , 131 me . mache ,ame. syame ,ame. a ,ame. vsi ); 137 `rtf ( dr , "%s: ume: %s\n", ogme , ` ( o )); 139 `rtf ( , "<p>POSIX"); 142 } } @../test_micro/source/b_util.c 5 ~"bch.h " 7 d_move __P ((*)); 10 $b_ut_have_hash () 12 #i `defed ( HAVE_HASH ) ||\ 13 DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 2 16 `rtf ( dr , 20 } } 23 $b_ut_have_queue () 25 #i `defed ( HAVE_QUEUE ) ||\ 26 DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 2 29 `rtf ( dr , 33 } } 40 $b_ut_d_tup () 42 t ; 44 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 3 45 i(( t = `__os_mkd ( NULL , TESTDIR , 0755)) != 0) { 47 i(( t = `mkd ( TESTDIR , 0755)) != 0) { 49 `rtf ( dr , 50 "%s: %s: %s\n", ogme , TESTDIR , `db_ ( t )); 54 } } 56 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 4 57 #OS_EXISTS ( a , b , c `__os_exis , b, c) ) 59 #OS_EXISTS ( a , b , c `__os_exis (b, c) ) 67 $b_ut_d_down () 69 t ; 71 i( `OS_EXISTS ( NULL , TESTFILE , NULL) == 0 && 72 ( t = `b_ut_uƚk ( TESTFILE )) != 0) { 73 `rtf ( dr , 74 "%s: %s: %s\n", ogme , TESTFILE , `db_ ( t )); 77 ( `d_move ( TESTDIR ) ? 1 : 0); 78 } } 87 $d_move ( d ) 88 * d ; 90 t , i , isd , t ; 91 buf [1024], ** mes ; 93 t = 0; 96 i( `OS_EXISTS ( NULL , d , & isd ) != 0) 100 #i DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR > 6 101 i(( t = `__os_dli ( NULL , d , 0, & mes , & t )) != 0) 102 ( t ); 104 i(( t = `__os_dli ( NULL , d , & mes , & t )) != 0) 105 ( t ); 108 i = 0; i < t ; ++i) { 109 () `tf ( buf , (buf), 110 "%s%c%s", d , PATH_SEPARATOR [0], mes [ i ]); 111 i(( t = `OS_EXISTS ( NULL , buf , & isd )) != 0) 112 fe_r ; 113 i(! isd && ( t = `b_ut_uƚk ( buf )) != 0) { 114 fe_r : `rtf ( dr , "%s: %s: %s\n", 115 ogme , buf , `db_ ( t )); 120 `__os_d ( NULL , mes , t ); 126 i( i = t && ( t = `rmd ( d )) != 0) 127 `rtf ( dr , 128 "%s: %s: %s\n", ogme , d , `db_ ( o )); 129 ( t ); 130 } } 134 $b_ut_abt () 136 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 6 137 `abt (); 138 #i DB_VERSION_MAJOR =4 && DB_VERSION_MINOR == 6 139 `__os_abt (); 141 `__os_abt ( NULL ); 143 } } 146 $b_ut_uƚk ( th ) 147 * th ; 149 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 7 150 ( `__os_uƚk ( NULL , th )); 152 ( `__os_uƚk ( NULL , th , 0)); 154 } } @../test_micro/source/b_workload.c 5 ~"bch.h " 6 ~"b_wkld.h " 8 dump_vbo_s __P (( DB *, CONFIG *)); 9 is_d_wkld __P (()); 10 is_g_wkld __P (()); 11 is_put_wkld __P (()); 12 run_mixed_wkld __P (( DB *, CONFIG *)); 13 run_d_wkld __P (( DB *, CONFIG *)); 14 uge __P (()); 15 * wkld_r __P (()); 24 $b_wkld ( gc , gv ) 25 gc ; 26 * gv []; 28 * ݏrg ; 29 td ; 30 CONFIG cf ; 31 DB * dbp ; 32 DB_ENV * dbv ; 33 ch , f , ksz ; 35 dbv = NULL ; 36 `memt (& cf , 0, (conf)); 37 cf . ed = 124087; 38 `d ( cf . ed ); 40 cf . pcou = 100000; 41 cf . ts = "Btree"; 42 cf . ty = DB_BTREE ; 43 cf . dsize = 20; 44 cf . esize = 0; 45 cf . wkld = T_PUT_GET_DELETE ; 47 ( ch = `gt ( gc , gv , "b:c:d:e:g:ik:m::r:t:vw:")! EOF ) 48 ch ) { 50 cf . chesz = `oi ( ݏrg ); 53 cf . pcou = `oi ( ݏrg ); 56 cf . dsize = `oi ( ݏrg ); 59 cf . curs_d = `oi ( ݏrg ); 62 cf . gcou = `oi ( ݏrg ); 65 cf . esize = 1; 68 cf . ksize = `oi ( ݏrg ); 71 cf . mesge = ݏrg ; 74 cf . dedkeys = 1; 77 cf . gesz = `oi ( ݏrg ); 80 cf . num_dups = `oi ( ݏrg ); 83 ݏrg [0]) { 85 cf . ts = "Btree"; 86 cf . ty = DB_BTREE ; 89 i( `b_ut_have_hash ()) 91 cf . ts = "Hash"; 92 cf . ty = DB_HASH ; 95 ( `uge ()); 99 cf . vbo = 1; 102 ݏrg [0]) { 104 cf . wkld = T_PUT_GET_DELETE ; 107 cf . wkld = T_GET ; 110 cf . wkld = T_PUT ; 113 cf . wkld = T_DELETE ; 116 cf . wkld = T_PUT_GET ; 119 cf . wkld = T_PUT_DELETE ; 122 cf . wkld = T_GET_DELETE ; 125 cf . wkld = T_MIXED ; 128 ( `uge ()); 133 `rtf ( dr , "Invid oi: %c\n", ch ); 134 ( `uge ()); 136 gc - td ; 137 gv + td ; 138 i( gc != 0) 139 ( `uge ()); 144 i( cf . gesz != 0) 145 `DB_BENCH_ASSERT ( cf . gesz >= 512 && conf.pagesz <= 65536 && 146 (( cf . gesz & (conf.pagesz - 1)) == 0)); 148 i( cf . chesz != 0) 149 `DB_BENCH_ASSERT ( cf . chesz > 20480); 150 `DB_BENCH_ASSERT ( cf . ksize =0 || cf. dedkeys == 0); 153 `DB_BENCH_ASSERT ( `db_v_ (& dbv , 0) == 0); 154 dbv -> `t_rfe (dbv, dr ); 155 i( cf . chesz != 0) 156 `DB_BENCH_ASSERT ( 157 dbv -> `t_chesize (dbv, 0, cf . chesz , 0) == 0); 159 #i DB_VERSION_MAJOR =3 && DB_VERSION_MINOR < 1 160 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 161 NULL , DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 163 `DB_BENCH_ASSERT ( dbv -> `ݒ (dbenv, "TESTDIR", 164 DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE , 0666) == 0); 167 `DB_BENCH_ASSERT ( `db_ (& dbp , dbv , 0) == 0); 168 i( cf . gesz != 0) 169 `DB_BENCH_ASSERT ( 170 dbp -> `t_gesize (dbp, cf . gesz ) == 0); 171 i( cf . esize !0 && cf. ty = DB_HASH ) { 172 ksz = ( cf . dedkeys !0? ( u_t32_t : cf. ksize ; 173 i( ksz == 0) 174 ksz = 10; 175 f = ( cf . gesz - 32)/( ksz + cf. dsize + 8); 176 `rtf ( dr , "f: %d\n", f ); 177 `DB_BENCH_ASSERT ( 178 dbp -> `t_h_f (dbp, f ) == 0); 179 `DB_BENCH_ASSERT ( 180 dbp -> `t_h_m (dbp, cf . pcou *10) == 0); 182 #i DB_VERSION_MAJOR >4 && DB_VERSION_MINOR >= 1 183 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 184 dbp , NULL , TESTFILE , NULL, cf . ty , DB_CREATE , 0666) == 0); 186 `DB_BENCH_ASSERT ( dbp -> `ݒ ( 187 dbp , TESTFILE , NULL , cf . ty , DB_CREATE , 0666) == 0); 190 i( cf . wkld = T_MIXED ) 191 `run_mixed_wkld ( dbp , & cf ); 193 `run_d_wkld ( dbp , & cf ); 195 i( `is_put_wkld ( cf . wkld ) == 0) 196 `timeedd (& cf . t_time , &cf. put_time ); 197 i( `is_g_wkld ( cf . wkld ) == 0) 198 `timeedd (& cf . t_time , &cf. g_time ); 199 i( `is_d_wkld ( cf . wkld ) == 0) 200 `timeedd (& cf . t_time , &cf. d_time ); 203 `DB_BENCH_ASSERT ( dbp -> `sync (dbp, 0) == 0); 205 i( cf . vbo != 0) 206 `dump_vbo_s ( dbp , & cf ); 208 `DB_BENCH_ASSERT ( dbp -> `o (dbp, 0) == 0); 209 `DB_BENCH_ASSERT ( dbv -> `o (dbenv, 0) == 0); 216 `tf ("# workloadest: %s: %s<br>%lu ops", 217 cf . ts , `wkld_r (cf. wkld ), ( u_lg )cf. pcou ); 218 i( cf . ksize != 0) 219 `tf (", key size: %lu", ( u_lg ) cf . ksize ); 220 i( cf . dsize != 0) 221 `tf (", dsize: %lu", ( u_lg ) cf . dsize ); 222 i( cf . gesz != 0) 223 `tf (",agsize: %lu", ( u_lg ) cf . gesz ); 225 `tf (",age size: default"); 226 i( cf . chesz != 0) 227 `tf (", cachsize: %lu", ( u_lg ) cf . chesz ); 229 `tf (", cache size: default"); 230 `tf (", %keys", cf . dedkeys == 1 ? "ordered" : "unordered"); 231 `tf (",um dups: %lu", ( u_lg ) cf . num_dups ); 232 `tf ("\n"); 234 i( cf . wkld ! T_MIXED ) { 235 i( cf . mesge ! NULL ) 236 `tf ("%%", cf . mesge , cf. ts ); 237 `TIME_DISPLAY ( cf . pcou , cf. t_time ); 239 `TIMER_DISPLAY ( cf . pcou ); 242 } } 255 #GET_PROPORTION 90 ) 256 #PUT_PROPORTION 7 ) 257 #DEL_PROPORTION 3 ) 260 $run_mixed_wkld ( dbp , cfig ) 261 DB * dbp ; 262 CONFIG * cfig ; 264 DBT key , da ; 265 size_t xt_ , i , ioff ; 266 kbuf [ KBUF_LEN ]; 267 bch_q ݔi_queue ; 270 `DB_BENCH_ASSERT ( cfig -> dedkeys == 0); 272 `d ( cfig -> ed ); 273 `memt (& ݔi_queue , 0, ( bch_q )); 275 ioff = 0; 276 `INIT_KEY ( key , cfig ); 277 `memt (& da , 0, (data)); 278 `DB_BENCH_ASSERT ( 279 ( da .d `mloc (da. size = cfig -> dsize )! NULL ); 286 i = 0; i < 2 * cfig -> pcou ; ++i) { 287 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 288 `BENCH_Q_TAIL_INSERT ( ݔi_queue , kbuf ); 289 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 292 TIMER_START ; 293 i = 0; i < cfig -> pcou ; ++i) { 294 xt_ = `nd ()%100; 296 i( xt_ < GET_PROPORTION ) { 297 `BENCH_Q_POP_PUSH ( ݔi_queue , kbuf ); 298 key . da = kbuf ; 299 key . size = ( kbuf ); 300 dbp -> `g (dbp, NULL , & key , & da , 0); 301 } i( xt_ < GET_PROPORTION + PUT_PROPORTION ) { 302 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 303 `BENCH_Q_TAIL_INSERT ( ݔi_queue , kbuf ); 304 dbp -> `put (dbp, NULL , & key , & da , 0); 306 `BENCH_Q_POP ( ݔi_queue , kbuf ); 307 key . da = kbuf ; 308 key . size = ( kbuf ); 309 dbp -> `d (dbp, NULL , & key , 0); 312 TIMER_STOP ; 313 `TIMER_GET ( cfig -> t_time ); 316 } } 319 $run_d_wkld ( dbp , cfig ) 320 DB * dbp ; 321 CONFIG * cfig ; 323 DBT key , da ; 324 DBC * dbc ; 325 u_t32_t i ; 326 t ; 327 kbuf [ KBUF_LEN ]; 330 `INIT_KEY ( key , cfig ); 331 `memt (& da , 0, (data)); 332 `DB_BENCH_ASSERT ( 333 ( da .d `mloc (da. size = cfig -> dsize )! NULL ); 336 TIMER_START ; 337 i = 0; i < cfig -> pcou ; ++i) { 338 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 339 `DB_BENCH_ASSERT ( dbp -> `put (dbp, NULL , & key , & da , 0) == 0); 341 TIMER_STOP ; 342 `TIMER_GET ( cfig -> put_time ); 344 i( `is_g_wkld ( cfig -> wkld ) == 0) { 345 TIMER_START ; 346 i = 0; i < cfig -> gcou ; ++i) { 347 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 348 ( dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0); 349 `DB_BENCH_ASSERT ( dbc -> `c_o (dbc) == 0); 351 TIMER_STOP ; 352 `TIMER_GET ( cfig -> g_time ); 355 i( `is_d_wkld ( cfig -> wkld ) == 0) { 357 `d ( cfig -> ed ); 359 TIMER_START ; 360 i( cfig -> curs_d != 0) { 361 `DB_BENCH_ASSERT ( dbp -> `curs (dbp, NULL , & dbc , 0) == 0); 363 ( t = dbc -> `c_g (dbc, & key , & da , DB_NEXT )) == 0) 364 `DB_BENCH_ASSERT ( dbc -> `c_d (dbc, 0) == 0); 365 `DB_BENCH_ASSERT ( t = DB_NOTFOUND ); 367 `INIT_KEY ( key , cfig ); 368 i = 0; i < cfig -> pcou ; ++i) { 369 `GET_KEY_NEXT ( key , cfig , kbuf , i ); 371 t = dbp -> `d (dbp, NULL , & key , 0); 376 i( cfig -> ksize == 0) 377 DB_BENCH_ASSERT 378 ( t =0 || = DB_NOTFOUND ); 380 `DB_BENCH_ASSERT ( t == 0); 383 TIMER_STOP ; 384 `TIMER_GET ( cfig -> d_time ); 387 } } 390 $dump_vbo_s ( dbp , cfig ) 391 DB * dbp ; 392 CONFIG * cfig ; 398 #ifde DB_WIN32 399 _ f ; 401 f ; 403 DB_HASH_STAT * h ; 404 DB_BTREE_STAT * b ; 405 _ ; 406 th [1024]; 408 #ifde DB_BENCH_INCLUDE_CONFIG_SUMMARY 409 `tf ("Completed workload benchmark.\n"); 410 `tf ("Configuration summary:\n"); 411 `tf ("\twkldy: %d\n", () cfig -> wkld ); 412 `tf ("\tdabay: %s\n", cfig -> ts ); 413 i( cfig -> chesz != 0) 414 `tf ("\tchsize: %lu\n", ( u_lg ) cfig -> chesz ); 415 i( cfig -> gesz != 0) 416 `tf ("\tdabaagsize: %lu\n", ( u_lg ) cfig -> gesz ); 417 `tf ("\uemcou: %lu\n", ( u_lg ) cfig -> pcou ); 418 i `is_g_wkld ( cfig -> wkld ) == 0) 419 `tf ("\tgmcou: %lu\n", ( u_lg ) cfig -> gcou ); 420 i( cfig -> dedkeys ) 421 `tf ("\tInserting items in order\n"); 422 i( cfig -> ksize == 0) 423 `tf ("\tInserting keys with size 10\n"); 425 `tf ( 426 "\tIng keywh size: %lu\n", ( u_lg ) cfig -> ksize ); 428 `tf ("\tIng demtsize: %lu\n", ( u_lg ) cfig -> dsize ); 430 i( `is_d_wkld ( cfig -> wkld ) == 0) { 431 i( cfig -> curs_d ) 432 `tf ("\tDeleting items using cursor\n"); 434 `tf ("\tDeleting items without cursor\n"); 438 i( `is_put_wkld ( cfig -> wkld ) == 0) 439 `tf ("%s Time spent inserting (%lu) (%s) items: %lu/%lu\n", 440 cfig -> mesge [0] == '\0' ? "" : config->message, 441 ( u_lg ) cfig -> pcou , cfig-> ts , 442 ( u_lg ) cfig -> put_time . tv_c , cfig->put_time. tv_nc ); 444 i( `is_g_wkld ( cfig -> wkld ) == 0) 445 `tf ("%s Time spent getting (%lu) (%s) items: %lu/%lu\n", 446 cfig -> mesge [0] == '\0' ? "" : config->message, 447 ( u_lg ) cfig -> pcou * ((cfig-> gcou == 0) ? 448 1 : cfig -> gcou ), cfig-> ts , 449 ( u_lg ) cfig -> g_time . tv_c , cfig->g_time. tv_nc ); 451 i( `is_d_wkld ( cfig -> wkld ) == 0) 452 `tf ("%s Time spent deleting (%lu) (%s) items: %lu/%lu\n", 453 cfig -> mesge [0] == '\0' ? "" : config->message, 454 ( u_lg ) cfig -> pcou , cfig-> ts , 455 ( u_lg ) cfig -> d_time . tv_c , cfig->d_time. tv_nc ); 457 () `tf ( th , (path), 458 "%s%c%s", TESTDIR , PATH_SEPARATOR [0], TESTFILE ); 459 #ifde DB_WIN32 460 i( `_ ( th , & f ) == 0) { 462 i( ` ( th , & f ) == 0) { 464 `tf ("%s Size of db file (%s): %lu K\n", 465 cfig -> mesge [0] == '\0' ? "" : config->message, 466 cfig -> ts , ( u_lg ) f . _size /1024); 469 i( cfig -> ty = DB_HASH ) { 470 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR <= 2 471 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & h , NULL , 0) == 0); 472 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR <= 2 473 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & h , 0) == 0); 475 `DB_BENCH_ASSERT ( dbp -> ` (dbp, NULL , & h , 0) == 0); 481 _ = h -> hash_gesize *h-> hash_bucks ; 482 _ + h -> hash_gesize *h-> hash_ovows ; 483 _ = 484 ( _ - h -> hash_b - h-> hash_ov_ )/ 485 _ ; 486 `tf ("%s db fill factor (%s): %.2f%%\n", 487 cfig -> mesge [0] == '\0' ? "" : config->message, 488 cfig -> ts , _ *100); 489 ` ( h ); 491 #i DB_VERSION_MAJOR < 3 || DB_VERSION_MAJOR =3 && DB_VERSION_MINOR <= 2 492 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & b , NULL , 0) == 0); 493 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR <= 2 494 `DB_BENCH_ASSERT ( dbp -> ` (dbp, & b , 0) == 0); 496 `DB_BENCH_ASSERT ( dbp -> ` (dbp, NULL , & b , 0) == 0); 498 _ = b -> bt_gesize *b-> bt_af_pg ; 499 _ = (_- b -> bt_af_pg )/free_prop; 500 `tf ("%s db fill factor (%s): %.2f%%\n", 501 cfig -> mesge [0] == '\0' ? "" : config->message, 502 cfig -> ts , _ *100); 503 ` ( b ); 506 } } 509 $wkld_r ( wkld ) 510 wkld ; 512 buf [128]; 514 wkld ) { 515 T_PUT_GET_DELETE : 518 T_GET : 521 T_PUT : 524 T_DELETE : 527 T_PUT_GET : 530 T_PUT_DELETE : 533 T_GET_DELETE : 536 T_MIXED : 537 `tf ( buf , (buf), "MIXED (get: %d,ut: %d, del: %d)", 538 () GET_PROPORTION , 539 () PUT_PROPORTION , () DEL_PROPORTION ); 540 ( buf ); 545 `ex ( `uge ()); 547 } } 550 $is_g_wkld ( wkld ) 551 wkld ; 553 wkld ) { 554 T_GET : 555 T_PUT_GET : 556 T_PUT_GET_DELETE : 557 T_GET_DELETE : 561 } } 564 $is_put_wkld ( wkld ) 565 wkld ; 567 wkld ) { 568 T_PUT : 569 T_PUT_GET : 570 T_PUT_GET_DELETE : 571 T_PUT_DELETE : 575 } } 578 $is_d_wkld ( wkld ) 579 wkld ; 581 wkld ) { 582 T_DELETE : 583 T_PUT_DELETE : 584 T_PUT_GET_DELETE : 585 T_GET_DELETE : 589 } } 592 $uge () 594 () `rtf ( dr , 596 () `rtf ( dr , 598 () `rtf ( dr , "\t[-r dup_count] [-type] [-wype]\n"); 600 () `rtf ( dr , "Where:\n"); 601 () `rtf ( dr , "\t-bhe size ofhe DB cache.\n"); 602 () `rtf ( dr , "\t-cheumber oflementso be measured.\n"); 603 () `rtf ( dr , "\t-dhe size ofach datalement.\n"); 604 () `rtf ( dr , "\t-e deletentries using cursor.\n"); 605 () `rtf ( dr , "\t-gumber of get cursorraverses.\n"); 606 () `rtf ( dr , "\t-i Pre-init hash DB bucket count.\n"); 607 () `rtf ( dr , "\t-khe size ofach key inserted.\n"); 608 () `rtf ( dr , "\t-m messagere-pendedoog output.\n"); 609 () `rtf ( dr , "\t-o keys should be ordered for insert.\n"); 610 () `rtf ( dr , "\t-pheage size forhe database.\n"); 611 () `rtf ( dr , "\t-rheumber of duplicateso insert\n"); 612 () `rtf ( dr , "\t-type ofhe underlying database.\n"); 613 () `rtf ( dr , "\t-whe workloado measure,vailable:\n"); 614 () `rtf ( dr , "\t\tA - PUT_GET_DELETE\n"); 615 () `rtf ( dr , "\t\tB - GET\n"); 616 () `rtf ( dr , "\t\tC - PUT\n"); 617 () `rtf ( dr , "\t\tD - DELETE\n"); 618 () `rtf ( dr , "\t\tE - PUT_GET\n"); 619 () `rtf ( dr , "\t\tF - PUT_DELETE\n"); 620 () `rtf ( dr , "\t\tG - GET_DELETE\n"); 621 () `rtf ( dr , "\t\tH - MIXED\n"); 622 ( EXIT_FAILURE ); 623 } } @../test_micro/source/test_micro.c 5 ~"bch.h " 7 ma __P ((, *[])); 9 run __P ((*)); 10 uge __P (()); 12 * gogme ; 14 g_t = 1; 15 g_d = 0; 18 * mme ; 19 (* mf )(, *[]); 20 } gcmdli [] = { 21 { "b_cuoc", b_cuoc }, 22 { "b_curwk", b_curwk }, 23 { "b_d", b_d }, 24 { "b_g", b_g }, 25 { "b_mem", b_mem }, 26 { "b_ld", b_ld }, 27 { "b_ݒ", b_ݒ }, 28 { "b_put", b_put }, 29 { "b_cov", b_cov }, 30 { "b_txn", b_txn }, 31 { "b_txn_wre", b_txn_wre }, 32 { "b_wkld", b_wkld }, 33 { NULL , NULL } 37 $ma ( gc , gv ) 38 gc ; 39 * gv []; 41 * ݏrg ; 42 td ; 43 ch , t ; 44 * run_dey , * ife ; 46 i(( ogme = `__db_h ( gv [0])= NULL ) 47 ogme = gv [0]; 49 ++ ogme ; 51 #ifde DB_BREW 52 i( `bdb_bw_beg () != 0) { 53 `rtf ( dr , 55 ( EXIT_FAILURE ); 59 run_dey = NULL ; 60 ife = "run.std"; 61 ( ch = `gt ( gc , gv , "d:e:i:s:")! EOF ) 62 ch ) { 64 run_dey = ݏrg ; 67 _d = `oi ( ݏrg ); 70 ife = ݏrg ; 73 _t = `oi ( ݏrg ); 77 ( `uge ()); 79 gc - td ; 80 gv + td ; 83 i( run_dey ! NULL && `chd (run_directory) != 0) { 84 `rtf ( dr , 85 "%s: %s: %s\n", ogme , run_dey , ` ( o )); 90 i( `b_ut_d_down ()) 93 t = `run ( ife ); 95 #ifde DB_BREW 96 `bdb_bw_d (); 99 ( t ? EXIT_FAILURE : EXIT_SUCCESS ); 100 } } 107 $run ( ife ) 108 * ife ; 110 #ifde HAVE_GETOPT_OPTRESET 111 et ; 113 td ; 114 _cur = 0; 115 FILE * i ; 116 gc , cmddx , lo , t ; 117 * p , cmd [1024], th [1024], ** gv ; 120 i( `b_ume () != 0) 124 i(( i = `fݒ ( ife , "r")= NULL ) { 125 `rtf ( dr , 126 "%s: %s: %s\n", ogme , ife , ` ( o )); 130 lo = 1; `fgs ( cmd , (cmd), i ! NULL ; ++lineno) { 135 i(( p = `rchr ( cmd , '\n')= NULL ) { 136 fm_r : `rtf ( dr , "%s: %s:ine %d: illegal input\n", 137 ogme , ife , lo ); 140 i( p > cmd &&[-1] == '\r') 141 -- p ; 142 * p = '\0'; 145 i( cmd [0] == '\0' || cmd[0] == '#') 149 i(++ _cur < _t || 150 ( _d !0 && _cur >est_end)) 153 `rtf ( dr , "%d: %s\n", _cur , cmd ); 156 i(( p = `rchr ( cmd , ' ')= NULL ) 157 fm_r ; 158 * p ++ = '\0'; 159 cmddx = 0; cmdli [cmddx]. me ! NULL ; ++cmdindx) 160 i( `rcmp ( cmd , cmdli [ cmddx ]. me ) == 0) 162 i( cmdli [ cmddx ]. me = NULL ) 163 fm_r ; 166 i( `__db_ut_g ( cmd , p , & gc , & gv ) != 0) 170 () `tf ( th , թh), "%d", _cur ); 171 i( `eݒ ( th , "a", dout = NULL ) { 172 `rtf ( dr , 173 "%s: %s: %s\n", ogme , th , ` ( o )); 181 #ifde HAVE_GETOPT_OPTRESET 182 et = 1; 184 td = 1; 187 i( `b_ut_d_tup ()) 190 t = cmdli [ cmddx ]. `f ( gc , gv ); 193 i( `b_ut_d_down ()) 196 () `fush ( dout ); 198 #i DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR =4 && DB_VERSION_MINOR < 1 199 `__os_ ( NULL , gv , 0); 201 `__os_ ( NULL , gv ); 203 i( t != 0) 204 ( t ); 208 } } 211 $uge () 213 () `rtf ( dr , 215 ogme ); 216 ( EXIT_FAILURE ); 217 } } @../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 (( 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 ENV * v ; 94 p_check , t ; 96 v = dbv ->env; 98 `ENV_REQUIRES_CONFIG ( v ,nv-> tx_hd , "txn_beg", DB_INIT_TXN ); 100 i(( t = `__db_fchk ( v , 101 "txn_beg", ags , 102 DB_READ_COMMITTED | DB_READ_UNCOMMITTED | 103 DB_TXN_NOSYNC | DB_TXN_SNAPSHOT | DB_TXN_SYNC | 104 DB_TXN_WAIT | DB_TXN_WRITE_NOSYNC | DB_TXN_NOWAIT )) != 0) 105 ( t ); 106 i(( t = `__db_fcchk ( v , "txn_beg", ags , 107 DB_TXN_WRITE_NOSYNC | DB_TXN_NOSYNC , DB_TXN_SYNC )) != 0) 108 ( t ); 109 i(( t = `__db_fcchk ( v , "txn_begin", 110 ags , DB_TXN_WRITE_NOSYNC , DB_TXN_NOSYNC )) != 0) 111 ( t ); 112 i( ! NULL && ! `F_ISSET լt, TXN_SNAPSHOT ) && 113 `LF_ISSET ( DB_TXN_SNAPSHOT )) { 114 `__db_rx ( v , 116 ( EINVAL ); 119 `ENV_ENTER ( v , ); 121 i( = NULL ) { 122 p_check = `IS_ENV_REPLICATED ( v ) ? 1 : 0; 123 i( p_check && ( t = `___p_r ( v )) != 0) 124 r ; 126 p_check = 0; 127 t = `__txn_beg ( v , , , txp , ags ); 133 i( t !0 && p_check ) 134 () `___p_ex ( v ); 136 r : `ENV_LEAVE ( v , ); 137 ( t ); 138 } } 156 $__txn_beg ( v , , , txp , ags ) 157 ENV * v ; 158 DB_THREAD_INFO * ; 159 DB_TXN * , ** txp ; 160 u_t32_t ags ; 162 DB_ENV * dbv ; 163 DB_LOCKREGION * gi ; 164 DB_TXN * txn ; 165 TXN_DETAIL * d , * td ; 166 t ; 168 * txp = NULL ; 169 i(( t = `__os_oc ( v , 1, ( DB_TXN ), & txn )) != 0) 170 ( t ); 172 dbv = v ->dbenv; 173 txn -> mg = v -> tx_hd ; 174 txn -> =arent; 175 `TAILQ_INIT (& txn -> kids ); 176 `TAILQ_INIT (& txn -> evts ); 177 `STAILQ_INIT (& txn -> logs ); 178 txn -> ags = TXN_MALLOC ; 179 txn -> thad_fo = 180 ! NULL ? i: ( !NULL ?t-> thad_fo : NULL); 186 i( `LF_ISSET ( DB_TXN_SYNC )) 187 `F_SET ( txn , TXN_SYNC ); 188 i( `LF_ISSET ( DB_TXN_NOSYNC )) 189 `F_SET ( txn , TXN_NOSYNC ); 190 i( `LF_ISSET ( DB_TXN_WRITE_NOSYNC )) 191 `F_SET ( txn , TXN_WRITE_NOSYNC ); 192 i( `F_ISSET ( dbv , DB_ENV_TXN_NOSYNC )) 193 `F_SET ( txn , TXN_NOSYNC ); 194 i( `F_ISSET ( dbv , DB_ENV_TXN_WRITE_NOSYNC )) 195 `F_SET ( txn , TXN_WRITE_NOSYNC ); 197 `F_SET ( txn , TXN_SYNC ); 199 i( `LF_ISSET ( DB_TXN_NOWAIT ) || 200 ( `F_ISSET ( dbv , DB_ENV_TXN_NOWAIT && ! `LF_ISSET ( DB_TXN_WAIT ))) 201 `F_SET ( txn , TXN_NOWAIT ); 202 i( `LF_ISSET ( DB_READ_COMMITTED )) 203 `F_SET ( txn , TXN_READ_COMMITTED ); 204 i( `LF_ISSET ( DB_READ_UNCOMMITTED )) 205 `F_SET ( txn , TXN_READ_UNCOMMITTED ); 206 i( `LF_ISSET ( DB_TXN_SNAPSHOT || `F_ISSET ( dbv , DB_ENV_TXN_SNAPSHOT ) || 207 ( ! NULL && `F_ISSET լt, TXN_SNAPSHOT ))) 208 `F_SET ( txn , TXN_SNAPSHOT ); 210 i(( t = `__txn_beg_t ( txn )) != 0) 211 r ; 212 td = txn ->td; 214 i( ! NULL ) { 215 d = -> td ; 216 `TAILQ_INSERT_HEAD (& -> kids , txn , klks ); 217 `SH_TAILQ_INSERT_HEAD (& d -> kids , td , klks , __txn_da ); 220 i( `LOCKING_ON ( v )) { 221 gi = v -> lk_hd -> gfo . imy ; 222 i( ! NULL ) { 223 t = `__lock_h_timeout ( v , 224 -> lock , txn ->locker); 226 i( t = EINVAL ) { 227 = NULL ; 228 t = 0; 230 i( t != 0) 231 r ; 238 i( = NULL && gi -> tx_timeout != 0) 239 i(( t = `__lock_t_timeout ( v , txn -> lock , 240 gi -> tx_timeout , DB_SET_TXN_TIMEOUT )) != 0) 241 r ; 244 * txp = txn ; 247 r : 248 `__os_ ( v , txn ); 249 ( t ); 250 } } 259 $__txn_xa_beg ( v , txn ) 260 ENV * v ; 261 DB_TXN * txn ; 267 txn -> mg = v -> tx_hd ; 268 `TAILQ_INIT (& txn -> kids ); 269 `TAILQ_INIT (& txn -> evts ); 270 `STAILQ_INIT (& txn -> logs ); 271 txn -> = NULL ; 272 txn -> txnid = TXN_INVALID ; 273 txn -> curss = 0; 274 `memt (& txn -> lock_timeout , 0, ( db_timeout_t )); 275 `memt (& txn -> expe , 0, ( db_timeout_t )); 277 ( `__txn_beg_t ( txn )); 278 } } 287 $__txn_cye_id ( v ) 288 ENV * v ; 290 DB_LSN nu_l ; 291 DB_TXNMGR * mgr ; 292 DB_TXNREGION * gi ; 293 TXN_DETAIL * td ; 294 u_t32_t * ids ; 295 nids , t ; 297 mgr = v -> tx_hd ; 298 gi = mgr -> gfo . imy ; 300 i(( t = `__os_mloc ( v , 301 ( u_t32_t * gi -> maxtxns , & ids )) != 0) 302 ( t ); 303 nids = 0; 304 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) 305 ids [ nids ++] = td -> txnid ; 306 gi -> ϡ_txnid = TXN_MINIMUM - 1; 307 gi -> cur_maxid = TXN_MAXIMUM ; 308 i( nids != 0) 309 `__db_ida ( ids , nids , 310 & gi -> ϡ_txnid , &gi-> cur_maxid ); 311 `__os_ ( v , ids ); 317 i( `LOGGING_ON ( v )) 318 t = `__txn_cye_log ( v , NULL , & nu_l , 319 0, gi -> ϡ_txnid + 1,egi-> cur_maxid ); 321 ( t ); 322 } } 333 $__txn_comn_beg ( v , txp ) 334 ENV * v ; 335 DB_TXN ** txp ; 337 DB_TXN * txn ; 338 t ; 340 i(( t = `__os_oc ( v , 1, ( DB_TXN ), & txn )) != 0) 341 ( t ); 343 txn -> mg = v -> tx_hd ; 344 `TAILQ_INIT (& txn -> kids ); 345 `TAILQ_INIT (& txn -> evts ); 346 `STAILQ_INIT (& txn -> logs ); 347 txn -> ags = TXN_COMPENSATE | TXN_MALLOC ; 349 * txp = txn ; 350 ( `__txn_beg_t ( txn )); 351 } } 358 $__txn_beg_t ( txn ) 359 DB_TXN * txn ; 361 DB_ENV * dbv ; 362 DB_TXNMGR * mgr ; 363 DB_TXNREGION * gi ; 364 ENV * v ; 365 TXN_DETAIL * td ; 366 u_t32_t id ; 367 t ; 369 mgr = txn -> mg ; 370 v = mgr ->env; 371 dbv = v ->dbenv; 372 gi = mgr -> gfo . imy ; 374 `TXN_SYSTEM_LOCK ( v ); 375 i(! `F_ISSET ( txn , TXN_COMPENSATE && F_ISSET( gi , TXN_IN_RECOVERY )) { 376 `__db_rx ( v , "operationotermitted duringecovery"); 377 t = EINVAL ; 378 r ; 385 i( gi -> ϡ_txnid = TXN_MAXIMUM && 386 gi -> cur_maxid ! TXN_MAXIMUM ) 387 gi -> ϡ_txnid = TXN_MINIMUM - 1; 389 i( gi -> ϡ_txnid =gi-> cur_maxid && 390 ( t = `__txn_cye_id ( v )) != 0) 391 r ; 394 i(( t = 395 `__v_loc (& mgr -> gfo , ( TXN_DETAIL ), & td )) != 0) { 396 `__db_rx ( v , 398 r ; 402 `SH_TAILQ_INSERT_HEAD (& gi -> aive_txn , td , lks , __txn_da ); 404 id = ++ gi -> ϡ_txnid ; 406 #ifde HAVE_STATISTICS 407 ++ gi -> . _nbegs ; 408 i(++ gi -> . _ive >egi->. _maxive ) 409 gi -> . _maxive =egi->. _ive ; 412 td -> txnid = id ; 413 dbv -> `thad_id (dbv, & td -> pid , &td-> tid ); 416 i( `LOCKING_ON ( v && ( t = 417 `__lock_glock ( v -> lk_hd , id , 1, & txn -> lock )) != 0) 418 r ; 420 `ZERO_LSN ( td -> ϡ_l ); 421 `ZERO_LSN ( td -> beg_l ); 422 `SH_TAILQ_INIT (& td -> kids ); 423 i( txn -> ! NULL ) 424 td -> = `R_OFFSET (& mgr -> gfo , txn ->parent->td); 426 td -> = INVALID_ROFF ; 427 td -> me = INVALID_ROFF ; 428 `MAX_LSN ( td -> ad_l ); 429 `MAX_LSN ( td -> visib_l ); 430 td -> mvcc_f = 0; 431 td -> mvcc_mtx = MUTEX_INVALID ; 432 td -> us = TXN_RUNNING ; 433 td -> ags = 0; 434 td -> xa_us = 0; 435 td -> og_dbs = 0; 436 td -> og_s = TXN_NSLOTS ; 437 td -> log_dbs = `R_OFFSET (& mgr -> gfo ,d-> s ); 439 `TXN_SYSTEM_UNLOCK ( v ); 441 txn -> txnid = id ; 442 txn -> td =d; 444 txn -> abt = __txn_abt_ ; 445 txn -> comm = __txn_comm_ ; 446 txn -> disrd = __txn_disrd ; 447 txn -> g_me = __txn_g_me ; 448 txn -> id = __txn_id ; 449 txn -> e = __txn_e ; 450 txn -> t_txn_lp = __txn_t_txn_lp ; 451 txn -> t_me = __txn_t_me ; 452 txn -> t_timeout = __txn_t_timeout ; 458 i( txn -> ! NULL && `LOCKING_ON ( v )) 459 i(( t = `__lock_addmylock ( v , 460 txn -> -> txnid ,xn->txnid)) != 0) 461 ( t ); 463 i( `F_ISSET ( txn , TXN_MALLOC )) { 464 `MUTEX_LOCK ( v , mgr -> mux ); 465 `TAILQ_INSERT_TAIL (& mgr -> txn_cha , txn , lks ); 466 `MUTEX_UNLOCK ( v , mgr -> mux ); 471 r : `TXN_SYSTEM_UNLOCK ( v ); 472 ( t ); 473 } } 483 $__txn_ctue ( v , txn , td ) 484 ENV * v ; 485 DB_TXN * txn ; 486 TXN_DETAIL * td ; 488 t ; 490 t = 0; 492 txn -> mg = v -> tx_hd ; 493 txn -> = NULL ; 494 txn -> txnid = td ->txnid; 495 txn -> td =d; 497 txn -> abt = __txn_abt_ ; 498 txn -> comm = __txn_comm_ ; 499 txn -> disrd = __txn_disrd ; 500 txn -> g_me = __txn_g_me ; 501 txn -> id = __txn_id ; 502 txn -> e = __txn_e ; 503 txn -> t_me = __txn_t_me ; 505 txn -> ags = 0; 512 i( `F_ISSET ( td , TXN_DTL_RESTORED )) 513 `F_SET ( txn , TXN_RESTORED ); 515 t = `__lock_glock ( v -> lk_hd , 516 txn -> txnid , 0, &txn-> lock ); 518 ( t ); 519 } } 526 $__txn_comm_ ( txn , ags ) 527 DB_TXN * txn ; 528 u_t32_t ags ; 530 DB_THREAD_INFO * ; 531 ENV * v ; 532 n_chd , t , t_t ; 534 v = txn -> mg ->env; 535 n_chd = txn -> = NULL ; 537 `ENV_ENTER ( v , ); 539 t = `__txn_comm ( txn , ags ); 540 i( n_chd && `IS_ENV_REPLICATED ( v ) && 541 ( t_t = `___p_ex ( v )!0 && t == 0) 542 t = t_t ; 543 `ENV_LEAVE ( v , ); 544 ( t ); 545 } } 554 $__txn_comm ( txn , ags ) 555 DB_TXN * txn ; 556 u_t32_t ags ; 558 DBT li_dbt ; 559 DB_LOCKREQ que ; 560 DB_TXN * kid ; 561 ENV * v ; 562 REGENV * nv ; 563 REGINFO * f ; 564 TXN_DETAIL * td ; 565 u_t32_t id ; 566 t , t_t ; 568 v = txn -> mg ->env; 569 td = txn ->td; 575 i( `F_ISSET ( txn , TXN_DEADLOCK )) { 576 t = `__db_txn_ddlock_r ( v , txn ); 577 r ; 580 i(( t = `__txn_isvid ( txn , TXN_OP_COMMIT )) != 0) 581 ( t ); 594 i( txn -> = NULL && `IS_REP_MASTER ( v ) && 595 `IS_USING_LEASES ( v && ( t = `__p_a_check (env, 1)) != 0) { 596 i( t = DB_NOTFOUND ) { 597 t = 0; 599 r ; 602 f = v -> gfo ; 603 nv = f -> imy ; 607 id = nv -> vid ; 616 i( `__db_fchk ( v , "DB_TXN->comm", ags , 617 DB_TXN_NOSYNC | DB_TXN_SYNC | DB_TXN_WRITE_NOSYNC ) != 0) 618 ags = DB_TXN_SYNC ; 619 i( `__db_fcchk ( v , "DB_TXN->comm", ags , 620 DB_TXN_SYNC , DB_TXN_NOSYNC | DB_TXN_WRITE_NOSYNC ) != 0) 621 ags = DB_TXN_SYNC ; 623 i( `LF_ISSET ( DB_TXN_WRITE_NOSYNC )) { 624 `F_CLR ( txn , TXN_SYNC_FLAGS ); 625 `F_SET ( txn , TXN_WRITE_NOSYNC ); 627 i( `LF_ISSET ( DB_TXN_NOSYNC )) { 628 `F_CLR ( txn , TXN_SYNC_FLAGS ); 629 `F_SET ( txn , TXN_NOSYNC ); 631 i( `LF_ISSET ( DB_TXN_SYNC )) { 632 `F_CLR ( txn , TXN_SYNC_FLAGS ); 633 `F_SET ( txn , TXN_SYNC ); 636 `DB_ASSERT ( v , `F_ISSET ( txn , TXN_SYNC_FLAGS )); 643 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 644 i(( t = `__txn_comm ( kid , ags )) != 0) 645 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 646 i(( t_t = `__txn_abt ( kid )) != 0) 647 ( `__v_nic ( v , t_t )); 656 i( `DBENV_LOGGING ( v && (! `IS_ZERO_LSN ( td -> ϡ_l ) || 657 `STAILQ_FIRST (& txn -> logs ! NULL )) { 658 i( txn -> = NULL ) { 667 i(( t = 668 `__txn_dvts ( v , txn , TXN_PREPARE , 1)) != 0) 669 r ; 671 `memt (& que , 0, (request)); 672 i( `LOCKING_ON ( v )) { 673 que . = DB_LOCK_PUT_READ ; 674 i( `IS_REP_MASTER ( v ) && 675 ! `IS_ZERO_LSN ( td -> ϡ_l )) { 676 `memt (& li_dbt , 0, (list_dbt)); 677 que . obj = & li_dbt ; 679 t = `__lock_vec ( v , 680 txn -> lock , 0, & que , 1, NULL ); 683 i( t =0 && ! `IS_ZERO_LSN ( td -> ϡ_l )) { 684 t = `__txn_g_log ( v , txn , 685 & td -> visib_l , `LOG_FLAGS ( txn ), 686 TXN_COMMIT , 687 ( t32_t ) `time ( NULL ), id , que . obj ); 688 i( t == 0) 689 td -> ϡ_l =d-> visib_l ; 690 #ifde DIAGNOSTIC 691 i( t == 0) { 692 DB_LSN s_l ; 694 `DB_ASSERT ( v , `__log_cut_l ( 695 v , & s_l , NULL , NULL) == 0); 696 `DB_ASSERT ( v , `LOG_COMPARE ( 697 & td -> visib_l , & s_l ) <= 0); 698 `COMPQUIET ( s_l . fe , 0); 703 i( que . obj ! NULL &&eque.obj-> da != NULL) 704 `__os_ ( v , que . obj -> da ); 705 i( t != 0) 706 r ; 709 i(! `IS_ZERO_LSN ( td -> ϡ_l ) && 710 ( t = `__txn_chd_log ( v , txn -> , 711 &(( TXN_DETAIL *) txn -> -> td )-> ϡ_l , 712 0, txn -> txnid , & td -> ϡ_l )) != 0) { 713 r ; 715 i( `STAILQ_FIRST (& txn -> logs ! NULL ) { 720 `STAILQ_CONCAT (& txn -> logs , &txn-> ->logs); 721 txn -> -> logs =xn->logs; 722 `STAILQ_INIT (& txn -> logs ); 725 `F_SET ( txn -> , TXN_CHILDCOMMIT ); 729 i( txn -> txn_li ! NULL ) { 730 `__db_txi_d ( v , txn -> txn_li ); 731 txn -> txn_li = NULL ; 734 i( t != 0) 735 r ; 743 i( txn -> = NULL && `IS_REP_MASTER ( v && `IS_USING_LEASES (env) && 744 ( t = `__p_a_check ( v , 1)) != 0) { 745 ( `__v_nic ( v , t )); 749 ( `__txn_d ( txn , 1)); 751 r : 759 i( td -> us = TXN_PREPARED ) 760 ( `__v_nic ( v , t )); 762 i(( t_t = `__txn_abt ( txn )) != 0) 763 t = t_t ; 764 ( t ); 765 } } 772 $__txn_abt_ ( txn ) 773 DB_TXN * txn ; 775 DB_THREAD_INFO * ; 776 ENV * v ; 777 n_chd , t , t_t ; 779 v = txn -> mg ->env; 780 n_chd = txn -> = NULL ; 782 `ENV_ENTER ( v , ); 784 t = `__txn_abt ( txn ); 785 i( n_chd && `IS_ENV_REPLICATED ( v ) && 786 ( t_t = `___p_ex ( v )!0 && t == 0) 787 t = t_t ; 788 `ENV_LEAVE ( v , ); 789 ( t ); 790 } } 799 $__txn_abt ( txn ) 800 DB_TXN * txn ; 802 DB_LOCKREQ que ; 803 DB_TXN * kid ; 804 ENV * v ; 805 REGENV * nv ; 806 REGINFO * f ; 807 TXN_DETAIL * td ; 808 u_t32_t id ; 809 t ; 811 v = txn -> mg ->env; 812 td = txn ->td; 815 i(( t = `__txn_isvid ( txn , TXN_OP_ABORT )) != 0) 816 ( `__v_nic ( v , t )); 825 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 826 i(( t = `__txn_abt ( kid )) != 0) 827 ( t ); 829 f = v -> gfo ; 830 nv = f -> imy ; 834 id = nv -> vid ; 842 i( `IS_ZERO_LSN ( td -> ϡ_l && `STAILQ_FIRST (& txn -> logs = NULL ) { 843 i( txn -> txn_li = NULL ) 844 de ; 846 undo ; 849 i( `LOCKING_ON ( v )) { 851 i( txn -> lock = NULL && 852 ( t = `__lock_glock ( v -> lk_hd , 853 txn -> txnid , 1, &txn-> lock )) != 0) 854 ( `__v_nic ( v , t )); 862 i(( t = `__txn_dvts ( v , txn , TXN_ABORT , 1)) != 0) 863 ( `__v_nic ( v , t )); 866 i(( t = `__lock_t_timeout ( v , 867 txn -> lock , 0, DB_SET_TXN_TIMEOUT )) != 0) 868 ( `__v_nic ( v , t )); 870 i(( t = `__lock_t_timeout ( v , 871 txn -> lock , 0, DB_SET_LOCK_TIMEOUT )) != 0) 872 ( `__v_nic ( v , t )); 874 que . = DB_LOCK_UPGRADE_WRITE ; 875 que . obj = NULL ; 876 i(( t = `__lock_vec ( 877 v , txn -> lock , 0, & que , 1, NULL )) != 0) 878 ( `__v_nic ( v , t )); 880 undo : i(( t = `__txn_undo ( txn )) != 0) 881 ( `__v_nic ( v , t )); 889 de : i( `DBENV_LOGGING ( v && td -> us = TXN_PREPARED && 890 ( t = `__txn_g_log ( v , txn , & td -> ϡ_l , 891 `LOG_FLAGS ( txn ), TXN_ABORT , ( t32_t ) `time ( NULL ), id , NULL)) != 0) 892 ( `__v_nic ( v , t )); 895 ( `__txn_d ( txn , 0)); 896 } } 903 $__txn_disrd ( txn , ags ) 904 DB_TXN * txn ; 905 u_t32_t ags ; 907 DB_THREAD_INFO * ; 908 ENV * v ; 909 t , t_t ; 911 v = txn -> mg ->env; 913 `ENV_ENTER ( v , ); 914 t = `__txn_disrd_t ( txn , ags ); 915 i( `IS_ENV_REPLICATED ( v ) && 916 ( t_t = `___p_ex ( v )!0 && t == 0) 917 t = t_t ; 918 `ENV_LEAVE ( v , ); 919 ( t ); 920 } } 929 $__txn_disrd_t ( txn , ags ) 930 DB_TXN * txn ; 931 u_t32_t ags ; 933 DB_TXN * p ; 934 DB_TXNMGR * mgr ; 935 ENV * v ; 936 t ; 938 `COMPQUIET ( ags , 0); 940 mgr = txn -> mg ; 941 v = mgr ->env; 942 p = NULL ; 944 i(( t = `__txn_isvid ( txn , TXN_OP_DISCARD )) != 0) 945 ( t ); 948 `DB_ASSERT ( v , `TAILQ_FIRST (& txn -> kids = NULL ); 951 `MUTEX_LOCK ( v , mgr -> mux ); 952 mgr -> n_disrds ++; 953 i( `F_ISSET ( txn , TXN_MALLOC )) { 954 `TAILQ_REMOVE (& mgr -> txn_cha , txn , lks ); 955 p = txn ; 957 `MUTEX_UNLOCK ( v , mgr -> mux ); 958 i( p ! NULL ) 959 `__os_ ( v , p ); 962 } } 971 $__txn_e ( txn , gid ) 972 DB_TXN * txn ; 973 u_t8_t * gid ; 975 DBT li_dbt , xid ; 976 DB_LOCKREQ que ; 977 DB_THREAD_INFO * ; 978 DB_TXN * kid ; 979 ENV * v ; 980 TXN_DETAIL * td ; 981 u_t32_t lags ; 982 t ; 984 v = txn -> mg ->env; 985 td = txn ->td; 987 i(( t = `__txn_isvid ( txn , TXN_OP_PREPARE )) != 0) 988 ( t ); 989 i( `F_ISSET ( txn , TXN_DEADLOCK )) 990 ( `__db_txn_ddlock_r ( v , txn )); 992 `ENV_ENTER ( v , ); 995 ( kid = `TAILQ_FIRST (& txn -> kids )! NULL ) 996 i(( t = `__txn_comm ( kid , DB_TXN_NOSYNC )) != 0) 997 r ; 1007 i(( t = `__txn_dvts ( v , txn , TXN_PREPARE , 1)) != 0) 1008 r ; 1009 `memt (& que , 0, (request)); 1010 i( `LOCKING_ON ( v )) { 1011 que . = DB_LOCK_PUT_READ ; 1012 i(! `IS_ZERO_LSN ( td -> ϡ_l )) { 1013 `memt (& li_dbt , 0, (list_dbt)); 1014 que . obj = & li_dbt ; 1016 i(( t = `__lock_vec ( v , 1017 txn -> lock , 0, & que , 1, NULL )) != 0) 1018 r ; 1021 i( `DBENV_LOGGING ( v )) { 1022 `memt (& xid , 0, (xid)); 1023 i( td -> xa_us ! TXN_XA_ENDED && 1024 td -> xa_us ! TXN_XA_SUSPENDED ) 1026 `memy ( td -> xid , gid , (td->xid)); 1028 xid . size = ( td ->xid); 1029 xid . da = td ->xid; 1031 lags = DB_LOG_COMMIT | DB_FLUSH ; 1032 i(( t = `__txn_xa_g_log ( v , txn , & td -> ϡ_l , 1033 lags , TXN_PREPARE , & xid , td -> fm ,d-> gid ,d-> bqu , 1034 & td -> beg_l , que . obj )) != 0) 1035 `__db_r ( 1036 v , t , "DB_TXN->prepare:og_write failed"); 1038 i( que . obj ! NULL &&eque.obj-> da != NULL) 1039 `__os_ ( v , que . obj -> da ); 1040 i( t != 0) 1041 r ; 1045 `MUTEX_LOCK ( v , txn -> mg -> mux ); 1046 td -> us = TXN_PREPARED ; 1047 `MUTEX_UNLOCK ( v , txn -> mg -> mux ); 1048 r : `ENV_LEAVE ( v , ); 1049 ( t ); 1050 } } 1058 u_t32_t 1059 $__txn_id ( txn ) 1060 DB_TXN * txn ; 1062 ( txn -> txnid ); 1063 } } 1072 $__txn_g_me ( txn , m ) 1073 DB_TXN * txn ; 1074 cڡ ** m ; 1076 * m = txn -> me ; 1079 } } 1088 $__txn_t_me ( txn , me ) 1089 DB_TXN * txn ; 1090 cڡ * me ; 1092 DB_THREAD_INFO * ; 1093 DB_TXNMGR * mgr ; 1094 ENV * v ; 1095 TXN_DETAIL * td ; 1096 size_t n ; 1097 t ; 1098 * p ; 1100 mgr = txn -> mg ; 1101 v = mgr ->env; 1102 td = txn ->td; 1103 n = ` ( me ) + 1; 1105 i(( t = `__os_loc ( v , n , & txn -> me )) != 0) 1106 ( t ); 1107 `memy ( txn -> me ,ame, n ); 1109 `ENV_ENTER ( v , ); 1110 `TXN_SYSTEM_LOCK ( v ); 1111 i( td -> me ! INVALID_ROFF ) { 1112 `__v_loc_ ( 1113 & mgr -> gfo , `R_ADDR (&mgr->gfo, td -> me )); 1114 td -> me = INVALID_ROFF ; 1116 i(( t = `__v_loc (& mgr -> gfo , n , & p )) != 0) { 1117 `TXN_SYSTEM_UNLOCK ( v ); 1118 `__db_rx ( v , 1121 `__os_ ( v , txn -> me ); 1122 txn -> me = NULL ; 1124 `ENV_LEAVE ( v , ); 1125 ( t ); 1127 `TXN_SYSTEM_UNLOCK ( v ); 1128 td -> me = `R_OFFSET (& mgr -> gfo , p ); 1129 `memy ( p , me , n ); 1131 #ifde DIAGNOSTIC 1136 i( `DBENV_LOGGING ( v )) 1137 () `__log_tf ( v , txn , 1138 "i %#lxamed %s", ( u_lg ) txn -> txnid , me ); 1141 `ENV_LEAVE ( v , ); 1143 } } 1151 $__txn_t_timeout ( txn , timeout , ) 1152 DB_TXN * txn ; 1153 db_timeout_t timeout ; 1154 u_t32_t ; 1156 DB_THREAD_INFO * ; 1157 ENV * v ; 1158 t ; 1160 v = txn -> mg ->env; 1162 i( ! DB_SET_TXN_TIMEOUT && o! DB_SET_LOCK_TIMEOUT ) 1163 ( `__db_ ( v , "DB_TXN->set_timeout", 0)); 1165 `ENV_ENTER ( v , ); 1166 t = `__lock_t_timeout v , txn -> lock , timeout , ); 1167 `ENV_LEAVE ( txn -> mg -> v , ); 1168 ( t ); 1169 } } 1176 $__txn_isvid ( txn , ) 1177 cڡ DB_TXN * txn ; 1178 txn_t ; 1180 DB_TXNMGR * mgr ; 1181 DB_TXNREGION * gi ; 1182 ENV * v ; 1183 TXN_DETAIL * td ; 1185 mgr = txn -> mg ; 1186 v = mgr ->env; 1187 gi = mgr -> gfo . imy ; 1190 i(! `F_ISSET ( txn , TXN_COMPENSATE ) && 1191 `F_ISSET ( gi , TXN_IN_RECOVERY )) { 1192 `__db_rx ( v , "operationotermitted duringecovery"); 1193 r ; 1197 i( txn -> curss != 0) { 1198 `__db_rx ( v , "transaction hasctive cursors"); 1199 r ; 1203 td = txn ->td; 1206 ) { 1207 TXN_OP_DISCARD : 1214 i( txn -> txnid ! td ->txnid) 1221 i( td -> us ! TXN_PREPARED && 1222 ! `F_ISSET ( td , TXN_DTL_RESTORED )) { 1223 `__db_rx ( v , "notestoredransaction"); 1224 ( `__v_nic ( v , EINVAL )); 1228 TXN_OP_PREPARE : 1229 i( txn -> ! NULL ) { 1237 `__db_rx ( v , 1239 ( EINVAL ); 1242 TXN_OP_ABORT : 1243 TXN_OP_COMMIT : 1248 td -> us ) { 1249 TXN_PREPARED : 1250 i( = TXN_OP_PREPARE ) { 1251 `__db_rx ( v , "transactionlreadyrepared"); 1257 ( EINVAL ); 1260 TXN_RUNNING : 1262 TXN_ABORTED : 1263 TXN_COMMITTED : 1265 `__db_rx ( v , "transactionlready %s", 1266 td -> us = TXN_COMMITTED ? "committed" : "aborted"); 1267 r ; 1272 r : 1277 ( `__v_nic ( v , EINVAL )); 1278 } } 1285 $__txn_d ( txn , is_comm ) 1286 DB_TXN * txn ; 1287 is_comm ; 1289 DB_LOCKREQ que ; 1290 DB_TXNLOGREC * ; 1291 DB_TXNMGR * mgr ; 1292 DB_TXNREGION * gi ; 1293 ENV * v ; 1294 TXN_DETAIL * d , * td ; 1295 db_mux_t mvcc_mtx ; 1296 do_ofes , t ; 1298 mgr = txn -> mg ; 1299 v = mgr ->env; 1300 gi = mgr -> gfo . imy ; 1301 do_ofes = 0; 1304 i(( t = `__txn_dvts ( v , 1305 txn , is_comm ? TXN_COMMIT : TXN_ABORT , 0)) != 0) 1306 ( `__v_nic ( v , t )); 1317 i( `LOCKING_ON ( v )) { 1319 i( txn -> lock = NULL && 1320 ( t = `__lock_glock ( v -> lk_hd , 1321 txn -> txnid , 1, &txn-> lock )) != 0) 1322 ( `__v_nic ( v , t )); 1323 que . = txn -> = NULL || 1324 is_comm =0 ? DB_LOCK_PUT_ALL : DB_LOCK_INHERIT ; 1325 que . obj = NULL ; 1326 i(( t = `__lock_vec ( v , 1327 txn -> lock , 0, & que , 1, NULL )) != 0) 1328 ( `__v_nic ( v , t )); 1332 td = txn ->td; 1333 i( td -> og_dbs !0 && ( t = `__txn_df_ame ( v , txn )) != 0) 1334 ( `__v_nic ( v , t )); 1336 i( td -> mvcc_f !0 && `IS_MAX_LSN d-> visib_l )) { 1337 `DB_ASSERT ( v , ! is_comm ); 1345 i(( t = `__log_cut_l ( v , & td -> visib_l , 1346 NULL , NULL)) != 0) 1347 ( `__v_nic ( v , t )); 1350 `TXN_SYSTEM_LOCK ( v ); 1351 td -> us = is_comm ? TXN_COMMITTED : TXN_ABORTED ; 1352 `SH_TAILQ_REMOVE (& gi -> aive_txn , td , lks , __txn_da ); 1353 i( `F_ISSET ( td , TXN_DTL_RESTORED )) { 1354 gi -> . _ees --; 1355 do_ofes = gi -> . _ees == 0; 1358 i( td -> me ! INVALID_ROFF ) { 1359 `__v_loc_ ( 1360 & mgr -> gfo , `R_ADDR (&mgr->gfo, td -> me )); 1361 td -> me = INVALID_ROFF ; 1363 i( txn -> ! NULL ) { 1364 d = txn -> -> td ; 1365 `SH_TAILQ_REMOVE (& d -> kids , td , klks , __txn_da ); 1366 } i(( mvcc_mtx = td ->mvcc_mtx! MUTEX_INVALID ) { 1367 `MUTEX_LOCK ( v , mvcc_mtx ); 1368 i( td -> mvcc_f != 0) { 1369 `SH_TAILQ_INSERT_HEAD (& gi -> mvcc_txn , 1370 td , lks , __txn_da ); 1371 #ifde HAVE_STATISTICS 1372 i(++ gi -> . _nsh > 1373 gi -> . _maxnsh ) 1374 gi -> . _maxnsh = 1375 gi -> . _nsh ; 1377 td = NULL ; 1379 `MUTEX_UNLOCK ( v , mvcc_mtx ); 1380 i( td ! NULL ) 1381 i(( t = `__mux_ ( v , & td -> mvcc_mtx )) != 0) 1382 ( `__v_nic ( v , t )); 1385 i( td ! NULL ) { 1386 i( td -> og_s ! TXN_NSLOTS ) 1387 `__v_loc_ (& mgr -> gfo , 1388 `R_ADDR (& mgr -> gfo , td -> log_dbs )); 1389 `__v_loc_ (& mgr -> gfo , td ); 1392 #ifde HAVE_STATISTICS 1393 i( is_comm ) 1394 gi -> . _ncomms ++; 1396 gi -> . _bts ++; 1397 -- gi -> . _ive ; 1400 `TXN_SYSTEM_UNLOCK ( v ); 1406 i( `LOCKING_ON ( v && ( t = 1407 `__lock_mylock ( v -> lk_hd , txn -> lock )) != 0) 1408 ( `__v_nic ( v , t )); 1409 i( txn -> ! NULL ) 1410 `TAILQ_REMOVE (& txn -> -> kids ,xn, klks ); 1413 ( = `STAILQ_FIRST (& txn -> logs )! NULL ) { 1414 `STAILQ_REMOVE (& txn -> logs , , __txn_logc , lks ); 1415 `__os_ ( v , ); 1417 i( txn -> me ! NULL ) { 1418 `__os_ ( v , txn -> me ); 1419 txn -> me = NULL ; 1421 i( `F_ISSET ( txn , TXN_MALLOC )) { 1422 `MUTEX_LOCK ( v , mgr -> mux ); 1423 `TAILQ_REMOVE (& mgr -> txn_cha , txn , lks ); 1424 `MUTEX_UNLOCK ( v , mgr -> mux ); 1426 `__os_ ( v , txn ); 1429 i( do_ofes ) { 1435 () `__dbg_vide_fes ( v , 1); 1436 () `__dbg_o_fes ( v , 1); 1437 i( `IS_REP_MASTER ( v )) 1438 `F_CLR ( v -> p_hd , DBREP_OPENFILES ); 1439 `F_CLR ( v -> lg_hd , DBLOG_OPENFILES ); 1440 mgr -> n_disrds = 0; 1441 () `__txn_checkpot ( v , 0, 0, 1442 DB_CKP_INTERNAL | DB_FORCE ); 1446 } } 1449 $__txn_dich_undo ( v , txn , rdbt , key_l , txi ) 1450 ENV * v ; 1451 DB_TXN * txn ; 1452 DBT * rdbt ; 1453 DB_LSN * key_l ; 1454 DB_TXNHEAD * txi ; 1456 t ; 1458 txi -> td = txn ->td; 1459 t = `__db_dich ( v , &v-> cov_db , 1460 rdbt , key_l , DB_TXN_ABORT , txi ); 1461 i( t = DB_SURPRISE_KID ) { 1462 `F_SET ( txn , TXN_CHILDCOMMIT ); 1463 t = 0; 1465 i( t =0 && `F_ISSET ( txn , TXN_CHILDCOMMIT && `IS_ZERO_LSN (* key_l )) 1466 t = `__db_txi_lg ( v , txi , key_l , 0); 1468 ( t ); 1469 } } 1476 $__txn_undo ( txn ) 1477 DB_TXN * txn ; 1479 DBT rdbt ; 1480 DB_LOGC * logc ; 1481 DB_LSN key_l ; 1482 DB_TXN * xn ; 1483 DB_TXNHEAD * txi ; 1484 DB_TXNLOGREC * ; 1485 DB_TXNMGR * mgr ; 1486 ENV * v ; 1487 t , t_t ; 1489 mgr = txn -> mg ; 1490 v = mgr ->env; 1491 logc = NULL ; 1492 txi = NULL ; 1493 t = 0; 1495 i(! `LOGGING_ON ( v )) 1503 `memt (& rdbt , 0, (rdbt)); 1511 xn = txn -> ;tx! NULL &&txn->parent != NULL;) 1512 xn =txn-> ; 1514 i( xn ! NULL &&txn-> txn_li != NULL) 1515 txi = xn -> txn_li ; 1516 i( txn -> txn_li ! NULL ) 1517 txi = txn -> txn_li ; 1518 i(( t = `__db_txi_ ( v , 1519 txn -> thad_fo , 0, 0, NULL , & txi )) != 0) 1520 ( t ); 1521 i( xn ! NULL ) 1522 xn -> txn_li = txi ; 1528 `STAILQ_FOREACH ( , & txn -> logs , lks ) { 1529 rdbt . da = ->data; 1530 rdbt . size = 0; 1531 `LSN_NOT_LOGGED ( key_l ); 1532 t = 1533 `__txn_dich_undo ( v , txn , & rdbt , & key_l , txi ); 1534 i( t != 0) { 1535 `__db_r ( v , t , 1537 r ; 1541 key_l = (( TXN_DETAIL *) txn -> td )-> ϡ_l ; 1543 i(! `IS_ZERO_LSN ( key_l ) && 1544 ( t = `__log_curs ( v , & logc )) != 0) 1545 r ; 1547 ! `IS_ZERO_LSN ( key_l )) { 1552 i(( t = `__logc_g ( logc , & key_l , & rdbt , DB_SET )) == 0) { 1553 t = `__txn_dich_undo ( v , 1554 txn , & rdbt , & key_l , txi ); 1557 i( t != 0) { 1558 `__db_r ( v , t , 1560 ( u_lg ) key_l . fe , (u_lg)key_l. offt ); 1561 r ; 1565 r : i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 1566 t = t_t ; 1568 i( xn = NULL && txi != NULL) 1569 `__db_txi_d ( v , txi ); 1570 ( t ); 1571 } } 1580 $__txn_aivekids ( v , y , txn ) 1581 ENV * v ; 1582 u_t32_t y ; 1583 DB_TXN * txn ; 1589 i( `F_ISSET ( txn , TXN_COMPENSATE || y = DB___txn_chd ) 1592 i( `TAILQ_FIRST (& txn -> kids ! NULL ) { 1593 `__db_rx ( v , "Childransaction isctive"); 1594 ( EPERM ); 1597 } } 1607 $__txn_f_abt ( v , bufr ) 1608 ENV * v ; 1609 u_t8_t * bufr ; 1611 DB_CIPHER * db_ch ; 1612 HDR hdr , * hd ; 1613 u_t32_t offt , code , sum_n ; 1614 u_t8_t * bp , * key , chksum [ DB_MAC_KEY ]; 1615 size_t hdrsize , c_n ; 1616 t ; 1618 db_ch = v -> yo_hd ; 1626 hdrsize = `CRYPTO_ON ( v ? HDR_CRYPTO_SZ : HDR_NORMAL_SZ ; 1628 hd = ( HDR *) bufr ; 1629 `memy (& hdr . ev , bufr + `SSZ ( HDR ,rev), (hdr.prev)); 1630 `memy (& hdr . n , bufr + `SSZ ( HDR ,en), (hdr.len)); 1631 c_n = hdr . n - hdrsize ; 1633 offt = ( u_t32_t + (u_t32_t+ ( DB_LSN ); 1634 i( `CRYPTO_ON ( v )) { 1635 key = db_ch -> mac_key ; 1636 sum_n = DB_MAC_KEY ; 1637 i(( t = db_ch -> `dey ( v , db_ch-> da , 1638 & hd -> iv [0], bufr + hdrsize , c_n )) != 0) 1639 ( `__v_nic ( v , t )); 1641 key = NULL ; 1642 sum_n = ( u_t32_t ); 1644 bp = bufr + hdrsize + offt ; 1645 code = TXN_ABORT ; 1646 `memy ( bp , & code , (opcode)); 1648 i( `CRYPTO_ON ( v ) && 1649 ( t = db_ch -> `y ( v , 1650 db_ch -> da , & hd -> iv [0], bufr + hdrsize , c_n )) != 0) 1651 ( `__v_nic ( v , t )); 1653 `__db_chksum (& hdr , bufr + hdrsize , c_n , key , chksum ); 1654 `memy ( bufr + `SSZA ( HDR , chksum ), chksum, sum_n ); 1657 } } 1668 $__txn_eo ( v ) 1669 ENV * v ; 1671 DB_TXNMGR * mgr ; 1672 DB_TXNREGION * gi ; 1673 do_ofes , t ; 1675 mgr = v -> tx_hd ; 1676 gi = mgr -> gfo . imy ; 1677 do_ofes = 0; 1679 `TXN_SYSTEM_LOCK ( v ); 1680 i( gi ! NULL && 1681 gi -> . _ees < mgr -> n_disrds && 1682 mgr -> n_disrds != 0) 1683 do_ofes = 1; 1684 `TXN_SYSTEM_UNLOCK ( v ); 1686 i( do_ofes ) { 1692 `F_SET ( v -> lg_hd , DBLOG_RECOVER ); 1693 t = `__dbg_o_fes ( v , 0); 1694 `F_CLR ( v -> lg_hd , DBLOG_RECOVER ); 1696 t = 0; 1698 ( t ); 1699 } } 1708 $__txn_t ( v ) 1709 ENV * v ; 1711 DB_LSN s ; 1712 DB_TXNREGION * gi ; 1714 gi = v -> tx_hd -> gfo . imy ; 1715 gi -> ϡ_txnid = TXN_MINIMUM ; 1717 `DB_ASSERT ( v , `LOGGING_ON (env)); 1718 ( `__txn_cye_log ( v , 1719 NULL , & s , 0, TXN_MINIMUM , TXN_MAXIMUM )); 1720 } } 1728 $__txn_t_txn_lp ( txn , blp , p ) 1729 DB_TXN * txn ; 1730 DB_LSN ** blp , ** p ; 1732 TXN_DETAIL * td ; 1734 td = txn ->td; 1735 * p = & td -> ϡ_l ; 1737 txn -> ! NULL ) 1738 txn =xn-> ; 1740 td = txn ->td; 1741 i( `IS_ZERO_LSN ( td -> beg_l )) 1742 * blp = & td -> beg_l ; 1743 } } @../txn/txn_auto.c 3 ~"db_cfig.h " 4 ~"db_t.h " 5 ~"dbc/yo.h " 6 ~"dbc/db_ge.h " 7 ~"dbc/db_dich.h " 8 ~"dbc/db_am.h " 9 ~"dbc/lock.h " 10 ~"dbc/log.h " 11 ~"dbc/txn.h " 18 $__txn_g_42_ad ( v , cbuf , g ) 19 ENV * v ; 20 * cbuf ; 21 __txn_g_42_gs ** g ; 23 __txn_g_42_gs * gp ; 24 u_t32_t ump ; 25 u_t8_t * bp ; 26 t ; 28 i(( t = `__os_mloc ( v , 29 ( __txn_g_42_gs + ( DB_TXN ), & gp )) != 0) 30 ( t ); 31 bp = cbuf ; 32 gp -> tx = ( DB_TXN *)&argp[1]; 33 `memt ( gp -> tx , 0, ( DB_TXN )); 35 `LOGCOPY_32 ( v , & gp -> ty , bp ); 36 bp +( gp -> ty ); 38 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 39 bp +( gp -> tx -> txnid ); 41 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 42 bp +( DB_LSN ); 44 `LOGCOPY_32 ( v , & gp -> code , bp ); 45 bp +( gp -> code ); 47 `LOGCOPY_32 ( v , & ump , bp ); 48 gp -> timeamp = ( t32_t ) ump ; 49 bp +( ump ); 51 `memt (& gp -> locks , 0, (argp->locks)); 52 `LOGCOPY_32 ( v ,& gp -> locks . size , bp ); 53 bp +( u_t32_t ); 54 gp -> locks . da = bp ; 55 bp + gp -> locks . size ; 57 * g = gp ; 58 ( t ); 59 } } 65 $__txn_g_ad ( v , cbuf , g ) 66 ENV * v ; 67 * cbuf ; 68 __txn_g_gs ** g ; 70 __txn_g_gs * gp ; 71 u_t32_t ump ; 72 u_t8_t * bp ; 73 t ; 75 i(( t = `__os_mloc ( v , 76 ( __txn_g_gs + ( DB_TXN ), & gp )) != 0) 77 ( t ); 78 bp = cbuf ; 79 gp -> tx = ( DB_TXN *)&argp[1]; 80 `memt ( gp -> tx , 0, ( DB_TXN )); 82 `LOGCOPY_32 ( v , & gp -> ty , bp ); 83 bp +( gp -> ty ); 85 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 86 bp +( gp -> tx -> txnid ); 88 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 89 bp +( DB_LSN ); 91 `LOGCOPY_32 ( v , & gp -> code , bp ); 92 bp +( gp -> code ); 94 `LOGCOPY_32 ( v , & ump , bp ); 95 gp -> timeamp = ( t32_t ) ump ; 96 bp +( ump ); 98 `LOGCOPY_32 ( v , & gp -> vid , bp ); 99 bp +( gp -> vid ); 101 `memt (& gp -> locks , 0, (argp->locks)); 102 `LOGCOPY_32 ( v ,& gp -> locks . size , bp ); 103 bp +( u_t32_t ); 104 gp -> locks . da = bp ; 105 bp + gp -> locks . size ; 107 * g = gp ; 108 ( t ); 109 } } 116 $__txn_g_log ( v , tx , t_lp , ags , 117 code , timeamp , vid , locks ) 118 ENV * v ; 119 DB_TXN * tx ; 120 DB_LSN * t_lp ; 121 u_t32_t ags ; 122 u_t32_t code ; 123 t32_t timeamp ; 124 u_t32_t vid ; 125 cڡ DBT * locks ; 127 DBT logc ; 128 DB_LSN * lp , nu_l , * p ; 129 DB_TXNLOGREC * ; 130 u_t32_t zo , ump , y , txn_num ; 131 u_t ad ; 132 u_t8_t * bp ; 133 is_dub , t ; 135 `COMPQUIET ( , NULL ); 137 p = t_lp ; 138 y = DB___txn_g ; 139 ad = 0; 140 t = 0; 142 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 143 i( tx = NULL ) 145 i( tx = NULL ) 147 is_dub = 0; 149 is_dub = 1; 151 i( tx = NULL ) { 152 txn_num = 0; 153 lp = & nu_l ; 154 nu_l . fe =u_l. offt = 0; 156 i( `TAILQ_FIRST (& tx -> kids ! NULL && 157 ( t = `__txn_aivekids ( v , y , tx )) != 0) 158 ( t ); 165 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 166 txn_num = tx -> txnid ; 169 logc . size = ( y + ( txn_num + ( DB_LSN ) 170 + ( u_t32_t ) 171 + ( u_t32_t ) 172 + ( u_t32_t ) 173 + ( u_t32_t + ( locks = NULL ? 0 :ocks-> size ); 174 i( `CRYPTO_ON ( v )) { 175 ad = v -> yo_hd -> `adj_size ( logc . size ); 176 logc . size + ad ; 179 i( is_dub || tx = NULL ) { 180 i(( t = 181 `__os_mloc ( v , logc . size , &logc. da )) != 0) 182 ( t ); 184 i(( t = `__os_mloc ( v , 185 logc . size + ( DB_TXNLOGREC ), & )) != 0) 186 ( t ); 187 #ifde DIAGNOSTIC 188 i(( t = 189 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 190 `__os_ ( v , ); 191 ( t ); 194 logc . da = ->data; 197 i( ad > 0) 198 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 200 bp = logc . da ; 202 `LOGCOPY_32 ( v , bp , & y ); 203 bp +( y ); 205 `LOGCOPY_32 ( v , bp , & txn_num ); 206 bp +( txn_num ); 208 `LOGCOPY_FROMLSN ( v , bp , lp ); 209 bp +( DB_LSN ); 211 `LOGCOPY_32 ( v , bp , & code ); 212 bp +( code ); 214 ump = ( u_t32_t ) timeamp ; 215 `LOGCOPY_32 ( v , bp , & ump ); 216 bp +( ump ); 218 `LOGCOPY_32 ( v , bp , & vid ); 219 bp +( vid ); 221 i( locks = NULL ) { 222 zo = 0; 223 `LOGCOPY_32 ( v , bp , & zo ); 224 bp +( u_t32_t ); 226 `LOGCOPY_32 ( v , bp , & locks -> size ); 227 bp +( locks -> size ); 228 `memy ( bp , locks -> da ,ocks-> size ); 229 bp + locks -> size ; 232 `DB_ASSERT ( v , 233 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 235 i( is_dub || tx = NULL ) { 236 i(( t = `__log_put ( v , p ,( DBT *)& logc , 237 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 238 * lp = * p ; 239 i( p ! t_lp ) 240 * t_lp = * p ; 243 t = 0; 244 #ifde DIAGNOSTIC 249 `memy ( -> da , logc .da,ogc. size ); 250 y | DB_debug_FLAG ; 251 `LOGCOPY_32 ( v , logc . da , & y ); 253 i(! `IS_REP_CLIENT ( v )) 254 t = `__log_put ( v , 255 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 257 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 258 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 259 `LSN_NOT_LOGGED (* t_lp ); 262 #ifde LOG_DIAGNOSTIC 263 i( t != 0) 264 () `__txn_g_t ( v , 265 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 268 #ifde DIAGNOSTIC 269 `__os_ ( v , logc . da ); 271 i( is_dub || tx = NULL ) 272 `__os_ ( v , logc . da ); 274 ( t ); 275 } } 281 $__txn_ckp_42_ad ( v , cbuf , g ) 282 ENV * v ; 283 * cbuf ; 284 __txn_ckp_42_gs ** g ; 286 __txn_ckp_42_gs * gp ; 287 u_t32_t ump ; 288 u_t8_t * bp ; 289 t ; 291 i(( t = `__os_mloc ( v , 292 ( __txn_ckp_42_gs + ( DB_TXN ), & gp )) != 0) 293 ( t ); 294 bp = cbuf ; 295 gp -> tx = ( DB_TXN *)&argp[1]; 296 `memt ( gp -> tx , 0, ( DB_TXN )); 298 `LOGCOPY_32 ( v , & gp -> ty , bp ); 299 bp +( gp -> ty ); 301 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 302 bp +( gp -> tx -> txnid ); 304 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 305 bp +( DB_LSN ); 307 `LOGCOPY_TOLSN ( v , & gp -> ckp_l , bp ); 308 bp +( DB_LSN ); 310 `LOGCOPY_TOLSN ( v , & gp -> ϡ_ckp , bp ); 311 bp +( DB_LSN ); 313 `LOGCOPY_32 ( v , & ump , bp ); 314 gp -> timeamp = ( t32_t ) ump ; 315 bp +( ump ); 317 `LOGCOPY_32 ( v , & gp -> p_g , bp ); 318 bp +( gp -> p_g ); 320 * g = gp ; 321 ( t ); 322 } } 328 $__txn_ckp_ad ( v , cbuf , g ) 329 ENV * v ; 330 * cbuf ; 331 __txn_ckp_gs ** g ; 333 __txn_ckp_gs * gp ; 334 u_t32_t ump ; 335 u_t8_t * bp ; 336 t ; 338 i(( t = `__os_mloc ( v , 339 ( __txn_ckp_gs + ( DB_TXN ), & gp )) != 0) 340 ( t ); 341 bp = cbuf ; 342 gp -> tx = ( DB_TXN *)&argp[1]; 343 `memt ( gp -> tx , 0, ( DB_TXN )); 345 `LOGCOPY_32 ( v , & gp -> ty , bp ); 346 bp +( gp -> ty ); 348 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 349 bp +( gp -> tx -> txnid ); 351 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 352 bp +( DB_LSN ); 354 `LOGCOPY_TOLSN ( v , & gp -> ckp_l , bp ); 355 bp +( DB_LSN ); 357 `LOGCOPY_TOLSN ( v , & gp -> ϡ_ckp , bp ); 358 bp +( DB_LSN ); 360 `LOGCOPY_32 ( v , & ump , bp ); 361 gp -> timeamp = ( t32_t ) ump ; 362 bp +( ump ); 364 `LOGCOPY_32 ( v , & gp -> vid , bp ); 365 bp +( gp -> vid ); 367 `LOGCOPY_32 ( v , & gp -> e , bp ); 368 bp +( gp -> e ); 370 * g = gp ; 371 ( t ); 372 } } 379 $__txn_ckp_log ( v , tx , t_lp , ags , 380 ckp_l , ϡ_ckp , timeamp , vid , e ) 381 ENV * v ; 382 DB_TXN * tx ; 383 DB_LSN * t_lp ; 384 u_t32_t ags ; 385 DB_LSN * ckp_l ; 386 DB_LSN * ϡ_ckp ; 387 t32_t timeamp ; 388 u_t32_t vid ; 389 u_t32_t e ; 391 DBT logc ; 392 DB_LSN * lp , nu_l , * p ; 393 DB_TXNLOGREC * ; 394 u_t32_t ump , y , txn_num ; 395 u_t ad ; 396 u_t8_t * bp ; 397 is_dub , t ; 399 `COMPQUIET ( , NULL ); 401 p = t_lp ; 402 y = DB___txn_ckp ; 403 ad = 0; 404 t = 0; 406 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 407 i( tx = NULL ) 409 i( tx = NULL ) 411 is_dub = 0; 413 is_dub = 1; 415 i( tx = NULL ) { 416 txn_num = 0; 417 lp = & nu_l ; 418 nu_l . fe =u_l. offt = 0; 420 i( `TAILQ_FIRST (& tx -> kids ! NULL && 421 ( t = `__txn_aivekids ( v , y , tx )) != 0) 422 ( t ); 429 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 430 txn_num = tx -> txnid ; 433 logc . size = ( y + ( txn_num + ( DB_LSN ) 434 + (* ckp_l ) 435 + (* ϡ_ckp ) 436 + ( u_t32_t ) 437 + ( u_t32_t ) 438 + ( u_t32_t ); 439 i( `CRYPTO_ON ( v )) { 440 ad = v -> yo_hd -> `adj_size ( logc . size ); 441 logc . size + ad ; 444 i( is_dub || tx = NULL ) { 445 i(( t = 446 `__os_mloc ( v , logc . size , &logc. da )) != 0) 447 ( t ); 449 i(( t = `__os_mloc ( v , 450 logc . size + ( DB_TXNLOGREC ), & )) != 0) 451 ( t ); 452 #ifde DIAGNOSTIC 453 i(( t = 454 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 455 `__os_ ( v , ); 456 ( t ); 459 logc . da = ->data; 462 i( ad > 0) 463 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 465 bp = logc . da ; 467 `LOGCOPY_32 ( v , bp , & y ); 468 bp +( y ); 470 `LOGCOPY_32 ( v , bp , & txn_num ); 471 bp +( txn_num ); 473 `LOGCOPY_FROMLSN ( v , bp , lp ); 474 bp +( DB_LSN ); 476 i( ckp_l ! NULL ) 477 `LOGCOPY_FROMLSN ( v , bp , ckp_l ); 479 `memt ( bp , 0, (* ckp_l )); 480 bp +(* ckp_l ); 482 i( ϡ_ckp ! NULL ) 483 `LOGCOPY_FROMLSN ( v , bp , ϡ_ckp ); 485 `memt ( bp , 0, (* ϡ_ckp )); 486 bp +(* ϡ_ckp ); 488 ump = ( u_t32_t ) timeamp ; 489 `LOGCOPY_32 ( v , bp , & ump ); 490 bp +( ump ); 492 `LOGCOPY_32 ( v , bp , & vid ); 493 bp +( vid ); 495 `LOGCOPY_32 ( v , bp , & e ); 496 bp +( e ); 498 `DB_ASSERT ( v , 499 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 501 i( is_dub || tx = NULL ) { 502 i(( t = `__log_put ( v , p ,( DBT *)& logc , 503 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 504 * lp = * p ; 505 i( p ! t_lp ) 506 * t_lp = * p ; 509 t = 0; 510 #ifde DIAGNOSTIC 515 `memy ( -> da , logc .da,ogc. size ); 516 y | DB_debug_FLAG ; 517 `LOGCOPY_32 ( v , logc . da , & y ); 519 i(! `IS_REP_CLIENT ( v )) 520 t = `__log_put ( v , 521 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 523 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 524 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 525 `LSN_NOT_LOGGED (* t_lp ); 528 #ifde LOG_DIAGNOSTIC 529 i( t != 0) 530 () `__txn_ckp_t ( v , 531 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 534 #ifde DIAGNOSTIC 535 `__os_ ( v , logc . da ); 537 i( is_dub || tx = NULL ) 538 `__os_ ( v , logc . da ); 540 ( t ); 541 } } 547 $__txn_chd_ad ( v , cbuf , g ) 548 ENV * v ; 549 * cbuf ; 550 __txn_chd_gs ** g ; 552 __txn_chd_gs * gp ; 553 u_t8_t * bp ; 554 t ; 556 i(( t = `__os_mloc ( v , 557 ( __txn_chd_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 `LOGCOPY_32 ( v , & gp -> ty , bp ); 564 bp +( gp -> ty ); 566 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 567 bp +( gp -> tx -> txnid ); 569 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 570 bp +( DB_LSN ); 572 `LOGCOPY_32 ( v , & gp -> chd , bp ); 573 bp +( gp -> chd ); 575 `LOGCOPY_TOLSN ( v , & gp -> c_l , bp ); 576 bp +( DB_LSN ); 578 * g = gp ; 579 ( t ); 580 } } 587 $__txn_chd_log ( v , tx , t_lp , ags , 588 chd , c_l ) 589 ENV * v ; 590 DB_TXN * tx ; 591 DB_LSN * t_lp ; 592 u_t32_t ags ; 593 u_t32_t chd ; 594 DB_LSN * c_l ; 596 DBT logc ; 597 DB_LSN * lp , nu_l , * p ; 598 DB_TXNLOGREC * ; 599 u_t32_t y , txn_num ; 600 u_t ad ; 601 u_t8_t * bp ; 602 is_dub , t ; 604 `COMPQUIET ( , NULL ); 606 p = t_lp ; 607 y = DB___txn_chd ; 608 ad = 0; 609 t = 0; 611 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 612 i( tx = NULL ) 614 i( tx = NULL ) 616 is_dub = 0; 618 is_dub = 1; 620 i( tx = NULL ) { 621 txn_num = 0; 622 lp = & nu_l ; 623 nu_l . fe =u_l. offt = 0; 625 i( `TAILQ_FIRST (& tx -> kids ! NULL && 626 ( t = `__txn_aivekids ( v , y , tx )) != 0) 627 ( t ); 634 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 635 txn_num = tx -> txnid ; 638 logc . size = ( y + ( txn_num + ( DB_LSN ) 639 + ( u_t32_t ) 640 + (* c_l ); 641 i( `CRYPTO_ON ( v )) { 642 ad = v -> yo_hd -> `adj_size ( logc . size ); 643 logc . size + ad ; 646 i( is_dub || tx = NULL ) { 647 i(( t = 648 `__os_mloc ( v , logc . size , &logc. da )) != 0) 649 ( t ); 651 i(( t = `__os_mloc ( v , 652 logc . size + ( DB_TXNLOGREC ), & )) != 0) 653 ( t ); 654 #ifde DIAGNOSTIC 655 i(( t = 656 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 657 `__os_ ( v , ); 658 ( t ); 661 logc . da = ->data; 664 i( ad > 0) 665 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 667 bp = logc . da ; 669 `LOGCOPY_32 ( v , bp , & y ); 670 bp +( y ); 672 `LOGCOPY_32 ( v , bp , & txn_num ); 673 bp +( txn_num ); 675 `LOGCOPY_FROMLSN ( v , bp , lp ); 676 bp +( DB_LSN ); 678 `LOGCOPY_32 ( v , bp , & chd ); 679 bp +( chd ); 681 i( c_l ! NULL ) 682 `LOGCOPY_FROMLSN ( v , bp , c_l ); 684 `memt ( bp , 0, (* c_l )); 685 bp +(* c_l ); 687 `DB_ASSERT ( v , 688 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 690 i( is_dub || tx = NULL ) { 691 i(( t = `__log_put ( v , p ,( DBT *)& logc , 692 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 693 * lp = * p ; 694 i( p ! t_lp ) 695 * t_lp = * p ; 698 t = 0; 699 #ifde DIAGNOSTIC 704 `memy ( -> da , logc .da,ogc. size ); 705 y | DB_debug_FLAG ; 706 `LOGCOPY_32 ( v , logc . da , & y ); 708 i(! `IS_REP_CLIENT ( v )) 709 t = `__log_put ( v , 710 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 712 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 713 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 714 `LSN_NOT_LOGGED (* t_lp ); 717 #ifde LOG_DIAGNOSTIC 718 i( t != 0) 719 () `__txn_chd_t ( v , 720 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 723 #ifde DIAGNOSTIC 724 `__os_ ( v , logc . da ); 726 i( is_dub || tx = NULL ) 727 `__os_ ( v , logc . da ); 729 ( t ); 730 } } 737 $__txn_xa_g_ad ( v , cbuf , g ) 738 ENV * v ; 739 * cbuf ; 740 __txn_xa_g_gs ** g ; 742 __txn_xa_g_gs * gp ; 743 u_t32_t ump ; 744 u_t8_t * bp ; 745 t ; 747 i(( t = `__os_mloc ( v , 748 ( __txn_xa_g_gs + ( DB_TXN ), & gp )) != 0) 749 ( t ); 750 bp = cbuf ; 751 gp -> tx = ( DB_TXN *)&argp[1]; 752 `memt ( gp -> tx , 0, ( DB_TXN )); 754 `LOGCOPY_32 ( v , & gp -> ty , bp ); 755 bp +( gp -> ty ); 757 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 758 bp +( gp -> tx -> txnid ); 760 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 761 bp +( DB_LSN ); 763 `LOGCOPY_32 ( v , & gp -> code , bp ); 764 bp +( gp -> code ); 766 `memt (& gp -> xid , 0, (argp->xid)); 767 `LOGCOPY_32 ( v ,& gp -> xid . size , bp ); 768 bp +( u_t32_t ); 769 gp -> xid . da = bp ; 770 bp + gp -> xid . size ; 772 `LOGCOPY_32 ( v , & ump , bp ); 773 gp -> fmID = ( t32_t ) ump ; 774 bp +( ump ); 776 `LOGCOPY_32 ( v , & gp -> gid , bp ); 777 bp +( gp -> gid ); 779 `LOGCOPY_32 ( v , & gp -> bqu , bp ); 780 bp +( gp -> bqu ); 782 `LOGCOPY_TOLSN ( v , & gp -> beg_l , bp ); 783 bp +( DB_LSN ); 785 `memt (& gp -> locks , 0, (argp->locks)); 786 `LOGCOPY_32 ( v ,& gp -> locks . size , bp ); 787 bp +( u_t32_t ); 788 gp -> locks . da = bp ; 789 bp + gp -> locks . size ; 791 * g = gp ; 792 ( t ); 793 } } 801 $__txn_xa_g_log ( v , tx , t_lp , ags , 802 code , xid , fmID , gid , bqu , beg_l , 803 locks ) 804 ENV * v ; 805 DB_TXN * tx ; 806 DB_LSN * t_lp ; 807 u_t32_t ags ; 808 u_t32_t code ; 809 cڡ DBT * xid ; 810 t32_t fmID ; 811 u_t32_t gid ; 812 u_t32_t bqu ; 813 DB_LSN * beg_l ; 814 cڡ DBT * locks ; 816 DBT logc ; 817 DB_LSN * lp , nu_l , * p ; 818 DB_TXNLOGREC * ; 819 u_t32_t zo , ump , y , txn_num ; 820 u_t ad ; 821 u_t8_t * bp ; 822 is_dub , t ; 824 `COMPQUIET ( , NULL ); 826 p = t_lp ; 827 y = DB___txn_xa_g ; 828 ad = 0; 829 t = 0; 831 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 832 i( tx = NULL ) 834 i( tx = NULL ) 836 is_dub = 0; 838 is_dub = 1; 840 i( tx = NULL ) { 841 txn_num = 0; 842 lp = & nu_l ; 843 nu_l . fe =u_l. offt = 0; 845 i( `TAILQ_FIRST (& tx -> kids ! NULL && 846 ( t = `__txn_aivekids ( v , y , tx )) != 0) 847 ( t ); 854 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 855 txn_num = tx -> txnid ; 858 logc . size = ( y + ( txn_num + ( DB_LSN ) 859 + ( u_t32_t ) 860 + ( u_t32_t + ( xid = NULL ? 0 : xid-> size ) 861 + ( u_t32_t ) 862 + ( u_t32_t ) 863 + ( u_t32_t ) 864 + (* beg_l ) 865 + ( u_t32_t + ( locks = NULL ? 0 :ocks-> size ); 866 i( `CRYPTO_ON ( v )) { 867 ad = v -> yo_hd -> `adj_size ( logc . size ); 868 logc . size + ad ; 871 i( is_dub || tx = NULL ) { 872 i(( t = 873 `__os_mloc ( v , logc . size , &logc. da )) != 0) 874 ( t ); 876 i(( t = `__os_mloc ( v , 877 logc . size + ( DB_TXNLOGREC ), & )) != 0) 878 ( t ); 879 #ifde DIAGNOSTIC 880 i(( t = 881 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 882 `__os_ ( v , ); 883 ( t ); 886 logc . da = ->data; 889 i( ad > 0) 890 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 892 bp = logc . da ; 894 `LOGCOPY_32 ( v , bp , & y ); 895 bp +( y ); 897 `LOGCOPY_32 ( v , bp , & txn_num ); 898 bp +( txn_num ); 900 `LOGCOPY_FROMLSN ( v , bp , lp ); 901 bp +( DB_LSN ); 903 `LOGCOPY_32 ( v , bp , & code ); 904 bp +( code ); 906 i( xid = NULL ) { 907 zo = 0; 908 `LOGCOPY_32 ( v , bp , & zo ); 909 bp +( u_t32_t ); 911 `LOGCOPY_32 ( v , bp , & xid -> size ); 912 bp +( xid -> size ); 913 `memy ( bp , xid -> da , xid-> size ); 914 bp + xid -> size ; 917 ump = ( u_t32_t ) fmID ; 918 `LOGCOPY_32 ( v , bp , & ump ); 919 bp +( ump ); 921 `LOGCOPY_32 ( v , bp , & gid ); 922 bp +( gid ); 924 `LOGCOPY_32 ( v , bp , & bqu ); 925 bp +( bqu ); 927 i( beg_l ! NULL ) 928 `LOGCOPY_FROMLSN ( v , bp , beg_l ); 930 `memt ( bp , 0, (* beg_l )); 931 bp +(* beg_l ); 933 i( locks = NULL ) { 934 zo = 0; 935 `LOGCOPY_32 ( v , bp , & zo ); 936 bp +( u_t32_t ); 938 `LOGCOPY_32 ( v , bp , & locks -> size ); 939 bp +( locks -> size ); 940 `memy ( bp , locks -> da ,ocks-> size ); 941 bp + locks -> size ; 944 `DB_ASSERT ( v , 945 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 947 i( is_dub || tx = NULL ) { 948 i(( t = `__log_put ( v , p ,( DBT *)& logc , 949 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 950 * lp = * p ; 951 i( p ! t_lp ) 952 * t_lp = * p ; 955 t = 0; 956 #ifde DIAGNOSTIC 961 `memy ( -> da , logc .da,ogc. size ); 962 y | DB_debug_FLAG ; 963 `LOGCOPY_32 ( v , logc . da , & y ); 965 i(! `IS_REP_CLIENT ( v )) 966 t = `__log_put ( v , 967 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 969 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 970 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 971 `LSN_NOT_LOGGED (* t_lp ); 974 #ifde LOG_DIAGNOSTIC 975 i( t != 0) 976 () `__txn_xa_g_t ( v , 977 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 980 #ifde DIAGNOSTIC 981 `__os_ ( v , logc . da ); 983 i( is_dub || tx = NULL ) 984 `__os_ ( v , logc . da ); 986 ( t ); 987 } } 993 $__txn_cye_ad ( v , cbuf , g ) 994 ENV * v ; 995 * cbuf ; 996 __txn_cye_gs ** g ; 998 __txn_cye_gs * gp ; 999 u_t8_t * bp ; 1000 t ; 1002 i(( t = `__os_mloc ( v , 1003 ( __txn_cye_gs + ( DB_TXN ), & gp )) != 0) 1004 ( t ); 1005 bp = cbuf ; 1006 gp -> tx = ( DB_TXN *)&argp[1]; 1007 `memt ( gp -> tx , 0, ( DB_TXN )); 1009 `LOGCOPY_32 ( v , & gp -> ty , bp ); 1010 bp +( gp -> ty ); 1012 `LOGCOPY_32 ( v , & gp -> tx -> txnid , bp ); 1013 bp +( gp -> tx -> txnid ); 1015 `LOGCOPY_TOLSN ( v , & gp -> ev_l , bp ); 1016 bp +( DB_LSN ); 1018 `LOGCOPY_32 ( v , & gp -> m , bp ); 1019 bp +( gp -> m ); 1021 `LOGCOPY_32 ( v , & gp -> max , bp ); 1022 bp +( gp -> max ); 1024 * g = gp ; 1025 ( t ); 1026 } } 1033 $__txn_cye_log ( v , tx , t_lp , ags , 1034 m , max ) 1035 ENV * v ; 1036 DB_TXN * tx ; 1037 DB_LSN * t_lp ; 1038 u_t32_t ags ; 1039 u_t32_t m ; 1040 u_t32_t max ; 1042 DBT logc ; 1043 DB_LSN * lp , nu_l , * p ; 1044 DB_TXNLOGREC * ; 1045 u_t32_t y , txn_num ; 1046 u_t ad ; 1047 u_t8_t * bp ; 1048 is_dub , t ; 1050 `COMPQUIET ( , NULL ); 1052 p = t_lp ; 1053 y = DB___txn_cye ; 1054 ad = 0; 1055 t = 0; 1057 i( `LF_ISSET ( DB_LOG_NOT_DURABLE )) { 1058 i( tx = NULL ) 1060 i( tx = NULL ) 1062 is_dub = 0; 1064 is_dub = 1; 1066 i( tx = NULL ) { 1067 txn_num = 0; 1068 lp = & nu_l ; 1069 nu_l . fe =u_l. offt = 0; 1071 i( `TAILQ_FIRST (& tx -> kids ! NULL && 1072 ( t = `__txn_aivekids ( v , y , tx )) != 0) 1073 ( t ); 1080 `DB_SET_TXN_LSNP ( tx , & p , & lp ); 1081 txn_num = tx -> txnid ; 1084 logc . size = ( y + ( txn_num + ( DB_LSN ) 1085 + ( u_t32_t ) 1086 + ( u_t32_t ); 1087 i( `CRYPTO_ON ( v )) { 1088 ad = v -> yo_hd -> `adj_size ( logc . size ); 1089 logc . size + ad ; 1092 i( is_dub || tx = NULL ) { 1093 i(( t = 1094 `__os_mloc ( v , logc . size , &logc. da )) != 0) 1095 ( t ); 1097 i(( t = `__os_mloc ( v , 1098 logc . size + ( DB_TXNLOGREC ), & )) != 0) 1099 ( t ); 1100 #ifde DIAGNOSTIC 1101 i(( t = 1102 `__os_mloc ( v , logc . size , &logc. da )) != 0) { 1103 `__os_ ( v , ); 1104 ( t ); 1107 logc . da = ->data; 1110 i( ad > 0) 1111 `memt (( u_t8_t *) logc . da +ogc. size - ad , 0,pad); 1113 bp = logc . da ; 1115 `LOGCOPY_32 ( v , bp , & y ); 1116 bp +( y ); 1118 `LOGCOPY_32 ( v , bp , & txn_num ); 1119 bp +( txn_num ); 1121 `LOGCOPY_FROMLSN ( v , bp , lp ); 1122 bp +( DB_LSN ); 1124 `LOGCOPY_32 ( v , bp , & m ); 1125 bp +( m ); 1127 `LOGCOPY_32 ( v , bp , & max ); 1128 bp +( max ); 1130 `DB_ASSERT ( v , 1131 ( u_t32_t )( bp - ( u_t8_t *) logc . da <logc. size ); 1133 i( is_dub || tx = NULL ) { 1134 i(( t = `__log_put ( v , p ,( DBT *)& logc , 1135 ags | DB_LOG_NOCOPY )=0 && tx ! NULL ) { 1136 * lp = * p ; 1137 i( p ! t_lp ) 1138 * t_lp = * p ; 1141 t = 0; 1142 #ifde DIAGNOSTIC 1147 `memy ( -> da , logc .da,ogc. size ); 1148 y | DB_debug_FLAG ; 1149 `LOGCOPY_32 ( v , logc . da , & y ); 1151 i(! `IS_REP_CLIENT ( v )) 1152 t = `__log_put ( v , 1153 p , ( DBT *)& logc , ags | DB_LOG_NOCOPY ); 1155 `STAILQ_INSERT_HEAD (& tx -> logs , , lks ); 1156 `F_SET (( TXN_DETAIL *) tx -> td , TXN_DTL_INMEMORY ); 1157 `LSN_NOT_LOGGED (* t_lp ); 1160 #ifde LOG_DIAGNOSTIC 1161 i( t != 0) 1162 () `__txn_cye_t ( v , 1163 ( DBT *)& logc , t_lp , DB_TXN_PRINT , NULL ); 1166 #ifde DIAGNOSTIC 1167 `__os_ ( v , logc . da ); 1169 i( is_dub || tx = NULL ) 1170 `__os_ ( v , logc . da ); 1172 ( t ); 1173 } } 1179 $__txn__cov ( v , dbp ) 1180 ENV * v ; 1181 DB_DISTAB * dbp ; 1183 t ; 1185 i(( t = `__db_add_covy_t ( v , dbp , 1186 __txn_g_cov , DB___txn_g )) != 0) 1187 ( t ); 1188 i(( t = `__db_add_covy_t ( v , dbp , 1189 __txn_ckp_cov , DB___txn_ckp )) != 0) 1190 ( t ); 1191 i(( t = `__db_add_covy_t ( v , dbp , 1192 __txn_chd_cov , DB___txn_chd )) != 0) 1193 ( t ); 1194 i(( t = `__db_add_covy_t ( v , dbp , 1195 __txn_xa_g_cov , DB___txn_xa_g )) != 0) 1196 ( t ); 1197 i(( t = `__db_add_covy_t ( v , dbp , 1198 __txn_cye_cov , DB___txn_cye )) != 0) 1199 ( t ); 1201 } } @../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 ( v , db , lp , nud2 , nud3 ) 20 ENV * v ; 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 ( v , 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 , `__os_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 ( v , & gp -> locks ); 55 () `tf ("\n"); 56 `__os_ ( v , gp ); 58 } } 65 $__txn_g_t ( v , db , lp , nud2 , nud3 ) 66 ENV * v ; 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 ( v , 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 , `__os_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 ( v , & gp -> locks ); 102 () `tf ("\n"); 103 `__os_ ( v , gp ); 105 } } 112 $__txn_ckp_42_t ( v , db , lp , nud2 , nud3 ) 113 ENV * v ; 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 ( v , 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 , `__os_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_ ( v , gp ); 153 } } 160 $__txn_ckp_t ( v , db , lp , nud2 , nud3 ) 161 ENV * v ; 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 ( v , 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 , `__os_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_ ( v , gp ); 202 } } 209 $__txn_chd_t ( v , db , lp , nud2 , nud3 ) 210 ENV * v ; 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 ( v , 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_ ( v , gp ); 237 } } 244 $__txn_xa_g_t ( v , db , lp , nud2 , nud3 ) 245 ENV * v ; 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 ( v , 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 ( v , & gp -> locks ); 282 () `tf ("\n"); 283 `__os_ ( v , gp ); 285 } } 292 $__txn_cye_t ( v , db , lp , nud2 , nud3 ) 293 ENV * v ; 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 ( v , 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_ ( v , gp ); 319 } } 325 $__txn__t ( v , dbp ) 326 ENV * v ; 327 DB_DISTAB * dbp ; 329 t ; 331 i(( t = `__db_add_covy_t ( v , dbp , 332 __txn_g_t , DB___txn_g )) != 0) 333 ( t ); 334 i(( t = `__db_add_covy_t ( v , dbp , 335 __txn_ckp_t , DB___txn_ckp )) != 0) 336 ( t ); 337 i(( t = `__db_add_covy_t ( v , dbp , 338 __txn_chd_t , DB___txn_chd )) != 0) 339 ( t ); 340 i(( t = `__db_add_covy_t ( v , dbp , 341 __txn_xa_g_t , DB___txn_xa_g )) != 0) 342 ( t ); 343 i(( t = `__db_add_covy_t ( v , dbp , 344 __txn_cye_t , DB___txn_cye )) != 0) 345 ( t ); 347 } } @../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 ENV * v ; 61 t ; 63 v = dbv ->env; 65 `ENV_REQUIRES_CONFIG ( v , 66 v -> tx_hd , "txn_checkpot", DB_INIT_TXN ); 77 i( `IS_REP_CLIENT ( v )) 80 `ENV_ENTER ( v , ); 81 `REPLICATION_WRAP ( v , 82 ( `__txn_checkpot ( v , kbys , mus , ags )), 0, t ); 83 `ENV_LEAVE ( v , ); 84 ( t ); 85 } } 95 $__txn_checkpot ( v , kbys , mus , ags ) 96 ENV * v ; 97 u_t32_t kbys , mus , ags ; 99 DB_LSN ckp_l , ϡ_ckp ; 100 DB_TXNMGR * mgr ; 101 DB_TXNREGION * gi ; 102 REGENV * nv ; 103 REGINFO * f ; 104 time_t ϡ_ckp_time , now ; 105 u_t32_t bys , id , logags , mbys , ; 106 t ; 108 `DB_ASSERT ( v , ! `IS_REP_CLIENT (env)); 109 t = 0; 111 mgr = v -> tx_hd ; 112 gi = mgr -> gfo . imy ; 113 f = v -> gfo ; 114 nv = f -> imy ; 118 id = nv -> vid ; 125 i(( t = `__log_cut_l ( v , & ckp_l , & mbys , & bys )) != 0) 126 ( t ); 128 i(! `LF_ISSET ( DB_FORCE )) { 130 i( bys =0 && mbys == 0) 139 i( kbys != 0 && 140 mbys * 1024 + bys / 1024 >( u_t32_t ) kbys ) 141 do_ckp ; 143 i( mus != 0) { 144 () `time (& now ); 146 `TXN_SYSTEM_LOCK ( v ); 147 ϡ_ckp_time = gi -> time_ckp ; 148 `TXN_SYSTEM_UNLOCK ( v ); 150 i( now - ϡ_ckp_time >( time_t )( mus * 60)) 151 do_ckp ; 158 i( mus !0 || kbys != 0) 170 do_ckp : 171 `MUTEX_LOCK ( v , gi -> mtx_ckp ); 172 i(( t = `__txn_gaive ( v , & ckp_l )) != 0) 173 r ; 193 i( `LOGGING_ON ( v ) && 194 `IS_REP_MASTER ( v &&nv-> p_hd -> nd ! NULL ) 195 () `__p_nd_mesge ( v , 196 DB_EID_BROADCAST , REP_START_SYNC , & ckp_l , NULL , 0, 0); 199 i( `MPOOL_ON ( v ) && 200 ( t = `__memp_sync_t ( 201 v , NULL , 0, DB_SYNC_CHECKPOINT , NULL, NULL)) != 0) { 202 `__db_r ( v , t , 204 r ; 220 #idef CONFIG_TEST 221 i( `LOGGING_ON ( v ) && 222 `IS_REP_MASTER ( v &&nv-> p_hd -> nd ! NULL && 223 ! `LF_ISSET ( DB_CKP_INTERNAL ) && 224 v -> p_hd -> gi -> chk_day != 0) 225 `__os_yld ( v , 0,nv-> p_hd -> gi -> chk_day ); 233 i( `LOGGING_ON ( v )) { 234 `TXN_SYSTEM_LOCK ( v ); 235 ϡ_ckp = gi ->last_ckp; 236 `TXN_SYSTEM_UNLOCK ( v ); 245 logags = DB_LOG_CHKPNT ; 252 = DBREG_CHKPNT ; 253 i(! `IS_RECOVERING ( v )) 254 logags | DB_FLUSH ; 255 i( gi -> . _ees == 0) 256 = DBREG_RCLOSE ; 257 i(( t = `__dbg_log_fes ( v , )) != 0 || 258 ( t = `__txn_ckp_log ( v , NULL , & ckp_l , logags , 259 & ckp_l , & ϡ_ckp , ( t32_t ) `time ( NULL ), id , 0)) != 0) { 260 `__db_r ( v , t , 262 () ckp_l . fe , ()ckp_l. offt ); 263 r ; 266 i(( t = `__txn_updeckp ( v , & ckp_l )) != 0) 267 r ; 270 r : `MUTEX_UNLOCK ( v , gi -> mtx_ckp ); 271 ( t ); 272 } } 289 $__txn_gaive ( v , lp ) 290 ENV * v ; 291 DB_LSN * lp ; 293 DB_TXNMGR * mgr ; 294 DB_TXNREGION * gi ; 295 TXN_DETAIL * td ; 297 mgr = v -> tx_hd ; 298 gi = mgr -> gfo . imy ; 300 `TXN_SYSTEM_LOCK ( v ); 301 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) 302 i( td -> beg_l . fe != 0 && 303 td -> beg_l . offt != 0 && 304 `LOG_COMPARE (& td -> beg_l , lp ) < 0) 305 * lp = td -> beg_l ; 306 `TXN_SYSTEM_UNLOCK ( v ); 309 } } 318 $__txn_gckp ( v , lp ) 319 ENV * v ; 320 DB_LSN * lp ; 322 DB_LSN l ; 323 DB_TXNMGR * mgr ; 324 DB_TXNREGION * gi ; 326 mgr = v -> tx_hd ; 327 gi = mgr -> gfo . imy ; 329 `TXN_SYSTEM_LOCK ( v ); 330 l = gi -> ϡ_ckp ; 331 `TXN_SYSTEM_UNLOCK ( v ); 333 i( `IS_ZERO_LSN ( l )) 334 ( DB_NOTFOUND ); 336 * lp = l ; 338 } } 349 $__txn_updeckp ( v , lp ) 350 ENV * v ; 351 DB_LSN * lp ; 353 DB_TXNMGR * mgr ; 354 DB_TXNREGION * gi ; 356 mgr = v -> tx_hd ; 357 gi = mgr -> gfo . imy ; 365 `TXN_SYSTEM_LOCK ( v ); 366 i( `LOG_COMPARE (& gi -> ϡ_ckp , lp ) < 0) { 367 gi -> ϡ_ckp = * lp ; 368 () `time (& gi -> time_ckp ); 370 `TXN_SYSTEM_UNLOCK ( v ); 373 } } @../txn/txn_failchk.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/txn.h " 21 $__txn_chk ( v ) 22 ENV * v ; 24 DB_ENV * dbv ; 25 DB_TXN * ktxn , * txn ; 26 DB_TXNMGR * mgr ; 27 DB_TXNREGION * gi ; 28 TXN_DETAIL * ktd , * td ; 29 db_thadid_t tid ; 30 t ; 31 buf [ DB_THREADID_STRLEN ]; 32 pid_t pid ; 34 mgr = v -> tx_hd ; 35 dbv = v ->dbenv; 36 gi = mgr -> gfo . imy ; 38 y : `TXN_SYSTEM_LOCK ( v ); 40 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) { 45 i( td -> ! INVALID_ROFF ) 51 i( td -> us = TXN_PREPARED ) 55 i( dbv -> `is_ive (dbv, td -> pid ,d-> tid , 0)) 58 i( `F_ISSET ( td , TXN_DTL_INMEMORY )) 59 ( `__db_ed ( v , 61 td -> pid ,d-> tid )); 64 `TXN_SYSTEM_UNLOCK ( v ); 65 i(( t = `__os_oc ( v , 1, ( DB_TXN ), & txn )) != 0) 66 ( t ); 67 i(( t = `__txn_ctue ( v , txn , td )) != 0) 68 ( t ); 69 `F_SET ( txn , TXN_MALLOC ); 70 `SH_TAILQ_FOREACH ( ktd , & td -> kids , klks , __txn_da ) { 71 i( `F_ISSET ( ktd , TXN_DTL_INMEMORY )) 72 ( `__db_ed ( v , 74 td -> pid ,d-> tid )); 75 i(( t = 76 `__os_oc ( v , 1, ( DB_TXN ), & ktxn )) != 0) 77 ( t ); 78 i(( t = `__txn_ctue ( v , ktxn , ktd )) != 0) 79 ( t ); 80 `F_SET ( ktxn , TXN_MALLOC ); 81 ktxn -> = txn ; 82 `TAILQ_INSERT_HEAD (& txn -> kids ,xn, klks ); 84 `TAILQ_INSERT_TAIL (& mgr -> txn_cha , txn , lks ); 85 pid = td ->pid; 86 tid = td ->tid; 87 () dbv -> `thad_id_rg (dbv, pid , tid , buf ); 88 `__db_msg ( v , 89 "Abtgx%#lx: %s", ( u_lg ) txn -> txnid , buf ); 90 i(( t = `__txn_abt ( txn )) != 0) 91 ( `__db_ed ( v , 92 "Tniڇb܈ed", pid , tid )); 93 y ; 96 `TXN_SYSTEM_UNLOCK ( v ); 99 } } @../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 * v ; 58 v = dbv ->env; 60 `ENV_NOT_CONFIGURED ( v , 61 v -> tx_hd , "DB_ENV->g_tx_max", DB_INIT_TXN ); 63 i( `TXN_ON ( v )) { 65 * tx_maxp = (( DB_TXNREGION *) 66 v -> tx_hd -> gfo . imy )-> maxtxns ; 68 * tx_maxp = dbv -> tx_max ; 70 } } 79 $__txn_t_tx_max ( dbv , tx_max ) 80 DB_ENV * dbv ; 81 u_t32_t tx_max ; 83 ENV * v ; 85 v = dbv ->env; 87 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_tx_max"); 89 dbv -> tx_max =x_max; 91 } } 97 $__txn_g_tx_timeamp ( dbv , timeamp ) 98 DB_ENV * dbv ; 99 time_t * timeamp ; 101 * timeamp = dbv -> tx_timeamp ; 103 } } 112 $__txn_t_tx_timeamp ( dbv , timeamp ) 113 DB_ENV * dbv ; 114 time_t * timeamp ; 116 ENV * v ; 118 v = dbv ->env; 120 `ENV_ILLEGAL_AFTER_OPEN ( v , "DB_ENV->set_tx_timestamp"); 122 dbv -> tx_timeamp = * timeamp ; 124 } } @../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 ( v , db , lp , , fo ) 55 ENV * v ; 56 DBT * db ; 57 DB_LSN * lp ; 58 db_cs ; 59 * fo ; 61 __txn_g_gs * gp ; 62 DB_TXNHEAD * hdp ; 63 t ; 64 u_t32_t us ; 66 #ifde DEBUG_RECOVER 67 () `__txn_g_t ( v , db , lp , , fo ); 70 i(( t = `__txn_g_ad ( v , db -> da , & gp )) != 0) 71 ( t ); 73 hdp = fo ; 80 i( = DB_TXN_FORWARD_ROLL ) { 86 i(( t = `__db_txi_move ( v , 87 fo , gp -> tx -> txnid )! DB_NOTFOUND && t != 0) 88 r ; 89 } i(( v -> dbv -> tx_timeamp != 0 && 90 gp -> timeamp > ( t32_t ) v -> dbv -> tx_timeamp ) || 91 (! `IS_ZERO_LSN ( hdp -> unc_l ) && 92 `LOG_COMPARE (& hdp -> unc_l , lp ) < 0)) { 97 i(( t = `__db_txi_upde ( v , 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 ( v , 105 fo , gp -> tx -> txnid ,rgp-> code , lp , 106 & us , 0)= DB_NOTFOUND ) { 107 i(( t = `__db_txi_add ( v , 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 ( v , 123 ( u_lg ) gp -> tx -> txnid ); 124 t = EINVAL ; 126 `__os_ ( v , gp ); 128 ( t ); 129 } } 138 $__txn_xa_g_cov ( v , db , lp , , fo ) 139 ENV * v ; 140 DBT * db ; 141 DB_LSN * lp ; 142 db_cs ; 143 * fo ; 145 __txn_xa_g_gs * gp ; 146 DBT * lock_dbt ; 147 DB_TXNHEAD * hdp ; 148 DB_LOCKTAB * ; 149 u_t32_t us ; 150 t ; 152 #ifde DEBUG_RECOVER 153 () `__txn_xa_g_t ( v , db , lp , , fo ); 156 i(( t = `__txn_xa_g_ad ( v , 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 ( v , fo , gp -> tx -> txnid , & us ); 180 i( = DB_TXN_FORWARD_ROLL ) { 181 i(( t = `__db_txi_move ( v , 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 ( v , 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 ( v , 212 fo , gp -> tx -> txnid )) != 0) { 213 txn_r : `__db_rx ( v , 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 ( v , 220 fo , gp -> tx -> txnid , TXN_COMMIT , lp )) == 0) { 222 lock_dbt = & gp -> locks ; 223 i( `LOCKING_ON ( v )) { 224 = v -> 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 ( v , 230 gp -> tx -> lock , 0, 231 DB_LOCK_WRITE , lock_dbt )) != 0) 232 r ; 235 t = `__txn_e_txn ( v , lp , gp ); 239 t = 0; 241 i( t == 0) 242 * lp = gp -> ev_l ; 244 r : `__os_ ( v , gp ); 246 ( t ); 247 } } 254 $__txn_ckp_cov ( v , db , lp , , fo ) 255 ENV * v ; 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 ( v , db , lp , , fo ); 267 i(( t = `__txn_ckp_ad ( v , db -> da , & gp )) != 0) 268 ( t ); 270 i( = DB_TXN_BACKWARD_ROLL ) 271 `__db_txi_ckp ( v , fo , lp ); 273 * lp = gp -> ϡ_ckp ; 274 `__os_ ( v , gp ); 275 ( DB_TXN_CKP ); 276 } } 286 $__txn_chd_cov ( v , db , lp , , fo ) 287 ENV * v ; 288 DBT * db ; 289 DB_LSN * lp ; 290 db_cs ; 291 * fo ; 293 __txn_chd_gs * gp ; 294 u_t32_t c_ , p_ , tmp ; 295 t , t_t ; 297 #ifde DEBUG_RECOVER 298 () `__txn_chd_t ( v , db , lp , , fo ); 300 i(( t = `__txn_chd_ad ( v , db -> da , & gp )) != 0) 301 ( t ); 310 i( = DB_TXN_ABORT ) { 311 * lp = gp -> c_l ; 312 t = `__db_txi_ladd ( v , fo , & gp -> ev_l ); 313 out ; 314 } i( = DB_TXN_BACKWARD_ROLL ) { 316 t = `__db_txi_fd ( v , fo , gp -> chd , & c_ ); 317 t_t = 318 `__db_txi_fd ( v , 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 ( v , 340 fo , gp -> chd , c_ , NULL ); 342 t = `__db_txi_upde ( v , 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 ( v , 359 fo , gp -> chd , c_ , NULL , & tmp , 0); 360 } i( c_ = TXN_UNEXPECTED ) { 368 t = `__db_txi_upde ( v , 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 ( v , 378 fo , gp -> chd , & c_ )= DB_NOTFOUND ) 379 t = `__db_txi_upde ( v , fo , 380 gp -> tx -> txnid , TXN_IGNORE , 381 NULL , & p_ , 1); 382 } i( `DB_REDO ( )) { 384 i(( t = 385 `__db_txi_move ( v , fo , gp -> chd )) != 0) 386 `__db_rx ( v , 387 "Tniڂ ili %x", gp -> chd ); 390 i( t == 0) 391 * lp = gp -> ev_l ; 393 out : `__os_ ( v , gp ); 395 ( t ); 396 } } 411 $__txn_e_txn ( v , lp , gp ) 412 ENV * v ; 413 DB_LSN * lp ; 414 __txn_xa_g_gs * gp ; 416 DB_TXNMGR * mgr ; 417 DB_TXNREGION * gi ; 418 TXN_DETAIL * td ; 419 t ; 421 i( gp -> xid . size == 0) 424 mgr = v -> tx_hd ; 425 gi = mgr -> gfo . imy ; 426 `TXN_SYSTEM_LOCK ( v ); 429 i(( t = `__v_loc (& mgr -> gfo , ( TXN_DETAIL ), & td )) != 0) { 430 `TXN_SYSTEM_UNLOCK ( v ); 431 ( t ); 435 `SH_TAILQ_INSERT_HEAD (& gi -> aive_txn , td , lks , __txn_da ); 437 td -> txnid = gp -> tx ->txnid; 438 `__os_id ( v -> dbv , & td -> pid , &td-> tid ); 439 td -> ϡ_l = * lp ; 440 td -> beg_l = gp ->begin_lsn; 441 td -> = INVALID_ROFF ; 442 td -> me = INVALID_ROFF ; 443 `SH_TAILQ_INIT (& td -> kids ); 444 `MAX_LSN ( td -> ad_l ); 445 `MAX_LSN ( td -> visib_l ); 446 td -> mvcc_f = 0; 447 td -> mvcc_mtx = MUTEX_INVALID ; 448 td -> us = TXN_PREPARED ; 449 td -> ags = TXN_DTL_RESTORED ; 450 td -> xa_us = TXN_XA_PREPARED ; 451 `memy ( td -> xid , gp ->xid. da ,rgp->xid. size ); 452 td -> bqu = gp ->bqual; 453 td -> gid = gp ->gtrid; 454 td -> fm = gp -> fmID ; 455 td -> og_dbs = 0; 456 td -> og_s = TXN_NSLOTS ; 457 td -> log_dbs = `R_OFFSET (& mgr -> gfo ,d-> s ); 459 gi -> . _ees ++; 460 #ifde HAVE_STATISTICS 461 gi -> . _ive ++; 462 i( gi -> . _ive >egi->. _maxive ) 463 gi -> . _maxive =egi->. _ive ; 465 `TXN_SYSTEM_UNLOCK ( v ); 467 } } 477 $__txn_cye_cov ( v , db , lp , , fo ) 478 ENV * v ; 479 DBT * db ; 480 DB_LSN * lp ; 481 db_cs ; 482 * fo ; 484 __txn_cye_gs * gp ; 485 t ; 487 #ifde DEBUG_RECOVER 488 () `__txn_chd_t ( v , db , lp , , fo ); 490 i(( t = `__txn_cye_ad ( v , db -> da , & gp )) != 0) 491 ( t ); 493 `COMPQUIET ( lp , NULL ); 495 i(( t = `__db_txi_g ( v , fo , 496 `DB_UNDO ( ? -1 : 1, gp -> m ,rgp-> max )) != 0) 497 ( t ); 499 `__os_ ( v , gp ); 502 } } 513 $__txn_g_42_cov ( v , db , lp , , fo ) 514 ENV * v ; 515 DBT * db ; 516 DB_LSN * lp ; 517 db_cs ; 518 * fo ; 520 __txn_g_42_gs * gp ; 521 DB_TXNHEAD * hdp ; 522 u_t32_t us ; 523 t ; 525 #ifde DEBUG_RECOVER 526 () `__txn_g_42_t ( v , db , lp , , fo ); 529 i(( t = `__txn_g_42_ad ( v , db -> da , & gp )) != 0) 530 ( t ); 532 hdp = fo ; 539 i( = DB_TXN_FORWARD_ROLL ) { 545 i(( t = `__db_txi_move ( v , 546 fo , gp -> tx -> txnid )! DB_NOTFOUND && t != 0) 547 r ; 548 } i(( v -> dbv -> tx_timeamp != 0 && 549 gp -> timeamp > ( t32_t ) v -> dbv -> tx_timeamp ) || 550 (! `IS_ZERO_LSN ( hdp -> unc_l ) && 551 `LOG_COMPARE (& hdp -> unc_l , lp ) < 0)) { 556 i(( t = `__db_txi_upde ( v , fo , 557 gp -> tx -> txnid , TXN_ABORT , NULL , & us , 1)) != 0) 558 r ; 559 i( us ! TXN_IGNORE && stu! TXN_OK ) 560 r ; 563 i(( t = `__db_txi_upde ( v , 564 fo , gp -> tx -> txnid ,rgp-> code , lp , 565 & us , 0)= DB_NOTFOUND ) { 566 i(( t = `__db_txi_add ( v , 567 fo , gp -> tx -> txnid , 568 gp -> code = TXN_ABORT ? 569 TXN_IGNORE : gp -> code , lp )) != 0) 570 r ; 571 } i( t != 0 || 572 ( us ! TXN_IGNORE && stu! TXN_OK )) 573 r ; 576 i( t == 0) 577 * lp = gp -> ev_l ; 580 r : `__db_rx ( v , 582 ( u_lg ) gp -> tx -> txnid ); 583 t = EINVAL ; 585 `__os_ ( v , gp ); 587 ( t ); 588 } } 595 $__txn_ckp_42_cov ( v , db , lp , , fo ) 596 ENV * v ; 597 DBT * db ; 598 DB_LSN * lp ; 599 db_cs ; 600 * fo ; 602 __txn_ckp_42_gs * gp ; 603 t ; 605 #ifde DEBUG_RECOVER 606 `__txn_ckp_42_t ( v , db , lp , , fo ); 608 i(( t = `__txn_ckp_42_ad ( v , db -> da , & gp )) != 0) 609 ( t ); 611 i( = DB_TXN_BACKWARD_ROLL ) 612 `__db_txi_ckp ( v , fo , lp ); 614 * lp = gp -> ϡ_ckp ; 615 `__os_ ( v , gp ); 616 ( DB_TXN_CKP ); 617 } } @../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 ( v , gid , tdp , of ) 29 ENV * v ; 30 u_t8_t * gid ; 31 TXN_DETAIL ** tdp ; 32 roff_t * of ; 34 DB_TXNMGR * mgr ; 35 DB_TXNREGION * gi ; 37 mgr = v -> tx_hd ; 38 gi = mgr -> gfo . imy ; 45 `TXN_SYSTEM_LOCK ( v ); 46 `SH_TAILQ_FOREACH (* tdp , & gi -> aive_txn , lks , __txn_da ) 47 i( `memcmp ( gid , (* tdp )-> xid , ((*tdp)->xid)) == 0) 49 `TXN_SYSTEM_UNLOCK ( v ); 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 ENV * v ; 74 t ; 76 v = dbv ->env; 78 `ENV_REQUIRES_CONFIG ( 79 v ,nv-> tx_hd , "txn_cov", DB_INIT_TXN ); 81 i( `F_ISSET (( DB_TXNREGION *) v -> tx_hd -> gfo . imy , 82 TXN_IN_RECOVERY )) { 83 `__db_rx ( v , "operationotermitted while inecovery"); 84 ( EINVAL ); 87 i( ags ! DB_FIRST && fg! DB_NEXT ) 88 ( `__db_ ( v , "DB_ENV->txn_recover", 0)); 90 `ENV_ENTER ( v , ); 91 `REPLICATION_WRAP ( v , 92 ( `__txn_cov ( v , li , cou , , ags )), 0, t ); 93 `ENV_LEAVE ( v , ); 94 ( t ); 95 } } 105 $__txn_cov ( v , li , cou , , ags ) 106 ENV * v ; 107 DB_PREPLIST * li ; 108 cou , * ; 109 u_t32_t ags ; 116 ( `__txn_g_ed ( v , NULL , li , cou , , ags )); 117 } } 133 $__txn_g_ed ( v , xids , txns , cou , , ags ) 134 ENV * v ; 135 XID * xids ; 136 DB_PREPLIST * txns ; 137 cou ; 138 * ; 139 u_t32_t ags ; 141 DB_LSN m ; 142 DB_PREPLIST * p ; 143 DB_THREAD_INFO * ; 144 DB_TXNMGR * mgr ; 145 DB_TXNREGION * gi ; 146 TXN_DETAIL * td ; 147 XID * xidp ; 148 i ; 149 ed , t ; 151 * = 0; 153 `MAX_LSN ( m ); 154 p = txns ; 155 xidp = xids ; 156 ed = t = 0; 166 mgr = v -> tx_hd ; 167 gi = mgr -> gfo . imy ; 176 `TXN_SYSTEM_LOCK ( v ); 179 td = `SH_TAILQ_FIRST (& gi -> aive_txn , __txn_da ); 180 td ! NULL && * < cou ; 181 td = `SH_TAILQ_NEXT d, lks , __txn_da )) { 182 i( td -> us ! TXN_PREPARED || 183 ( ags ! DB_FIRST && `F_ISSET ( td , TXN_DTL_COLLECTED ))) 186 i( `F_ISSET ( td , TXN_DTL_RESTORED )) 187 ed = 1; 189 i( xids ! NULL ) { 190 xidp -> fmID = td -> fm ; 196 xidp -> gid_ngth = () td -> gid ; 197 xidp -> bqu_ngth = () td -> bqu ; 198 `memy ( xidp -> da , td -> xid , (td->xid)); 199 xidp ++; 202 i( txns ! NULL ) { 203 i(( t = `__os_oc ( v , 204 1, ( DB_TXN ), & p -> txn )) != 0) { 205 `TXN_SYSTEM_UNLOCK ( v ); 206 r ; 208 i(( t = `__txn_ctue ( v , p -> txn , td )) != 0) 209 r ; 210 `F_SET ( p -> txn , TXN_MALLOC ); 211 i( `F_ISSET ( v -> dbv , DB_ENV_TXN_NOSYNC )) 212 `F_SET ( p -> txn , TXN_NOSYNC ); 213 i( `F_ISSET ( v -> dbv , DB_ENV_TXN_WRITE_NOSYNC )) 214 `F_SET ( p -> txn , TXN_WRITE_NOSYNC ); 216 `F_SET ( p -> txn , TXN_SYNC ); 217 `memy ( p -> gid , td -> xid , (td->xid)); 218 p ++; 221 i(! `IS_ZERO_LSN ( td -> beg_l ) && 222 `LOG_COMPARE (& td -> beg_l , & m ) < 0) 223 m = td -> beg_l ; 225 (* )++; 226 `F_SET ( td , TXN_DTL_COLLECTED ); 228 i( ags = DB_FIRST ) 229 ; td ! NULL ;d = `SH_TAILQ_NEXT d, lks , __txn_da )) 230 `F_CLR ( td , TXN_DTL_COLLECTED ); 231 `TXN_SYSTEM_UNLOCK ( v ); 236 i( txns ! NULL && * != 0) { 237 `MUTEX_LOCK ( v , mgr -> mux ); 238 i = 0; i < * ; i++) 239 `TAILQ_INSERT_TAIL (& mgr -> txn_cha , txns [ i ]. txn , lks ); 240 `MUTEX_UNLOCK ( v , mgr -> mux ); 246 i( `REP_ON ( v )) { 247 `REP_SYSTEM_LOCK ( v ); 248 v -> p_hd -> gi -> _t +( u_lg )* ; 249 `REP_SYSTEM_UNLOCK ( v ); 257 i( ed !0 && ags = DB_FIRST && 258 ! `F_ISSET ( v -> lg_hd , DBLOG_OPENFILES )) { 259 `ENV_GET_THREAD_INFO ( v , ); 260 t = `__txn_ݒfes ( v , , & m , 0); 264 r : `TXN_SYSTEM_UNLOCK ( v ); 266 ( t ); 267 } } 276 $__txn_ݒfes ( v , , m , f ) 277 ENV * v ; 278 DB_THREAD_INFO * ; 279 DB_LSN * m ; 280 f ; 282 DBT da ; 283 DB_LOGC * logc ; 284 DB_LSN ݒ_l ; 285 DB_TXNHEAD * txnfo ; 286 __txn_ckp_gs * ckp_gs ; 287 t , t_t ; 293 logc = NULL ; 294 i(( t = `__log_curs ( v , & logc )) != 0) 295 r ; 297 `memt (& da , 0, (data)); 298 i(( t = `__txn_gckp ( v , & ݒ_l )) == 0) 299 ! `IS_ZERO_LSN ( ݒ_l && ( t = 300 `__logc_g ( logc , & ݒ_l , & da , DB_SET )) == 0 && 301 ( f || 302 ( m ! NULL && `LOG_COMPARE (m, & ݒ_l ) < 0))) { 304 i(( t = `__txn_ckp_ad ( 305 v , da .da, & ckp_gs )) != 0) { 306 `__db_rx ( v , 308 ( u_lg ) ݒ_l . fe , 309 ( u_lg ) ݒ_l . offt ); 310 r ; 317 ݒ_l = f ? ckp_gs -> ckp_l : 318 ckp_gs -> ϡ_ckp ; 319 `__os_ ( v , ckp_gs ); 320 i( f ) { 321 i(( t = `__logc_g ( logc , & ݒ_l , 322 & da , DB_SET )) != 0) 323 r ; 337 i(( t = DB_NOTFOUND || `IS_ZERO_LSN ( ݒ_l )) && (ret = 338 `__logc_g ( logc , & ݒ_l , & da , DB_FIRST )) != 0) { 339 `__db_rx ( v , "Noogecords"); 340 r ; 343 i(( t = `__db_txi_ ( v , , 0, 0, NULL , & txnfo )) != 0) 344 r ; 345 t = `__v_ݒfes ( 346 v , logc , txnfo , & da , & ݒ_l , NULL , ()0, 0); 347 i( txnfo ! NULL ) 348 `__db_txi_d ( v , txnfo ); 350 r : 351 i( logc ! NULL && ( t_t = `__logc_o ogc)!0 && t == 0) 352 t = t_t ; 353 ( t ); 354 } } @../txn/txn_region.c 9 ~"db_cfig.h " 11 ~"db_t.h " 12 ~"dbc/log.h " 13 ~"dbc/txn.h " 15 __txn_ __P (( ENV *, DB_TXNMGR *)); 16 size_t __txn_gi_size __P (( ENV *)); 25 $__txn_ݒ ( v , _ok ) 26 ENV * v ; 27 _ok ; 29 DB_TXNMGR * mgr ; 30 t ; 33 i(( t = `__os_oc ( v , 1, ( DB_TXNMGR ), & mgr )) != 0) 34 ( t ); 35 `TAILQ_INIT (& mgr -> txn_cha ); 36 mgr -> v =nv; 39 mgr -> gfo . v =nv; 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 ( v , 46 & mgr -> gfo , `__txn_gi_size ( v ))) != 0) 47 r ; 50 i( `F_ISSET (& mgr -> gfo , REGION_CREATE )) 51 i(( t = `__txn_ ( v , mgr )) != 0) 52 r ; 55 mgr -> gfo . imy = 56 `R_ADDR (& mgr -> gfo , mgr->gfo. -> imy ); 59 i(( t = `__mux_loc ( 60 v , MTX_TXN_ACTIVE , DB_MUTEX_PROCESS_ONLY , & mgr -> mux )) != 0) 61 r ; 63 v -> tx_hd = mgr ; 66 r : v -> tx_hd = NULL ; 67 i( mgr -> gfo . addr ! NULL ) 68 () `__v_gi_dach ( v , & mgr -> gfo , 0); 70 () `__mux_ ( v , & mgr -> mux ); 71 `__os_ ( v , mgr ); 72 ( t ); 73 } } 80 $__txn_ ( v , mgr ) 81 ENV * v ; 82 DB_TXNMGR * mgr ; 84 DB_ENV * dbv ; 85 DB_LSN ϡ_ckp ; 86 DB_TXNREGION * gi ; 87 t ; 89 dbv = v ->dbenv; 94 `ZERO_LSN ( ϡ_ckp ); 95 i( `LOGGING_ON ( v )) { 100 i(( t = `__log_g_ched_ckp_l ( v , & ϡ_ckp )) != 0) 101 ( t ); 107 i( `IS_ZERO_LSN ( ϡ_ckp ) && 108 ( t = `__txn_fdϡckp ( v , & ϡ_ckp , NULL )) != 0) 109 ( t ); 112 i(( t = `__v_loc (& mgr -> gfo , 113 ( DB_TXNREGION ), & mgr -> gfo . imy )) != 0) { 114 `__db_rx ( v , 116 ( t ); 118 mgr -> gfo . -> imy = 119 `R_OFFSET (& mgr -> gfo , mgr->gfo. imy ); 120 gi = mgr -> gfo . imy ; 121 `memt ( gi , 0, (*region)); 123 i(( t = `__mux_loc ( 124 v , MTX_TXN_REGION , 0, & gi -> mtx_gi )) != 0) 125 ( t ); 127 gi -> maxtxns = dbv -> tx_max ; 128 gi -> ϡ_txnid = TXN_MINIMUM ; 129 gi -> cur_maxid = TXN_MAXIMUM ; 131 i(( t = `__mux_loc ( 132 v , MTX_TXN_CHKPT , 0, & gi -> mtx_ckp )) != 0) 133 ( t ); 134 gi -> ϡ_ckp =ast_ckp; 135 gi -> time_ckp = `time ( NULL ); 137 `memt (& gi -> , 0, (region->stat)); 138 #ifde HAVE_STATISTICS 139 gi -> . _maxtxns =egi-> maxtxns ; 142 `SH_TAILQ_INIT (& gi -> aive_txn ); 143 `SH_TAILQ_INIT (& gi -> mvcc_txn ); 144 ( t ); 145 } } 156 $__txn_fdϡckp ( v , lp , max_l ) 157 ENV * v ; 158 DB_LSN * lp ; 159 DB_LSN * max_l ; 161 DBT dbt ; 162 DB_LOGC * logc ; 163 DB_LSN l ; 164 t , t_t ; 165 u_t32_t y ; 167 `ZERO_LSN (* lp ); 169 i(( t = `__log_curs ( v , & logc )) != 0) 170 ( t ); 173 `memt (& dbt , 0, (dbt)); 174 i( max_l ! NULL ) { 175 l = * max_l ; 176 i(( t = `__logc_g ( logc , & l , & dbt , DB_SET )) != 0) 177 r ; 179 i(( t = `__logc_g ( logc , & l , & dbt , DB_LAST )) != 0) 180 r ; 186 l . offt = 0; 190 ( t = `__logc_g ( logc , & l , & dbt , DB_PREV )) == 0) { 191 i( dbt . size < ( u_t32_t )) 193 `memy (& y , dbt . da , ( u_t32_t )); 194 i( y = DB___txn_ckp ) { 195 * lp = l ; 200 r : i(( t_t = `__logc_o ( logc )!0 && t == 0) 201 t = t_t ; 207 (( t =0 || = DB_NOTFOUND ) ? 0 :et); 208 } } 217 $__txn_v_esh ( v ) 218 ENV * v ; 220 DB_TXN * txn ; 221 DB_TXNMGR * mgr ; 222 REGINFO * gfo ; 223 u_t32_t txnid ; 224 ab܋d , t , t_t ; 226 t = 0; 227 mgr = v -> tx_hd ; 228 gfo = & mgr ->reginfo; 241 ab܋d = 0; 242 i( `TAILQ_FIRST (& mgr -> txn_cha ! NULL ) { 243 ( txn = `TAILQ_FIRST (& mgr -> txn_cha )! NULL ) { 245 txnid = txn ->txnid; 246 i((( TXN_DETAIL *) txn -> td )-> us = TXN_PREPARED ) { 247 i(( t = `__txn_disrd_t ( txn , 0)) != 0) { 248 `__db_r ( v , t , 250 ( u_lg ) txnid ); 255 ab܋d = 1; 256 i(( t_t = `__txn_abt ( txn )) != 0) { 257 `__db_r ( v , t_t , 259 ( u_lg ) txnid ); 260 t = `__v_nic ( v , t_t ); 264 i( ab܋d ) { 265 `__db_rx ( v , 267 i( t == 0) 268 t = EINVAL ; 273 i(( t_t = `__mux_ ( v , & mgr -> mux )!0 && t == 0) 274 t = t_t ; 277 i(( t_t = `__v_gi_dach ( v , gfo , 0)!0 && t == 0) 278 t = t_t ; 280 `__os_ ( v , mgr ); 282 v -> tx_hd = NULL ; 283 ( t ); 284 } } 292 u_t32_t 293 $__txn_gi_mux_cou ( v ) 294 ENV * v ; 296 DB_ENV * dbv ; 298 dbv = v ->dbenv; 304 ( dbv -> tx_max + 1 + 2); 305 } } 311 size_t 312 $__txn_gi_size ( v ) 313 ENV * v ; 315 DB_ENV * dbv ; 316 size_t s ; 318 dbv = v ->dbenv; 327 s = ( DB_TXNREGION ) + 328 dbv -> tx_max * (( TXN_DETAIL + `__v_loc_ovhd () + 20) + 330 ( s ); 331 } } 341 $__txn_id_t ( v , cur_txnid , max_txnid ) 342 ENV * v ; 343 u_t32_t cur_txnid , max_txnid ; 345 DB_TXNMGR * mgr ; 346 DB_TXNREGION * gi ; 347 t ; 349 `ENV_REQUIRES_CONFIG ( v ,nv-> tx_hd , "txn_id_t", DB_INIT_TXN ); 351 mgr = v -> tx_hd ; 352 gi = mgr -> gfo . imy ; 353 gi -> ϡ_txnid = cur_txnid ; 354 gi -> cur_maxid = max_txnid ; 356 t = 0; 357 i( cur_txnid < TXN_MINIMUM ) { 358 `__db_rx ( v , "Current ID value %lu below minimum", 359 ( u_lg ) cur_txnid ); 360 t = EINVAL ; 362 i( max_txnid < TXN_MINIMUM ) { 363 `__db_rx ( v , "Maximum ID value %lu below minimum", 364 ( u_lg ) max_txnid ); 365 t = EINVAL ; 367 ( t ); 368 } } 378 $__txn_de_ad ( v , lp ) 379 ENV * v ; 380 DB_LSN * lp ; 382 DB_LSN d_l ; 383 DB_TXNMGR * mgr ; 384 DB_TXNREGION * gi ; 385 TXN_DETAIL * td ; 386 t ; 388 i(( mgr = v -> tx_hd = NULL ) 390 gi = mgr -> gfo . imy ; 392 i(( t = `__log_cut_l ( v , & d_l , NULL , NULL)) != 0) 393 ( t ); 395 `TXN_SYSTEM_LOCK ( v ); 396 `SH_TAILQ_FOREACH ( td , & gi -> aive_txn , lks , __txn_da ) 397 i( `LOG_COMPARE (& td -> ad_l , & d_l ) < 0) 398 d_l = td -> ad_l ; 399 `TXN_SYSTEM_UNLOCK ( v ); 401 `DB_ASSERT ( v , `LOG_COMPARE (& d_l , lp ) >= 0); 402 * lp = d_l ; 405 } } 414 $__txn_add_bufr ( v , td ) 415 ENV * v ; 416 TXN_DETAIL * td ; 418 `DB_ASSERT ( v , td ! NULL ); 420 `MUTEX_LOCK ( v , td -> mvcc_mtx ); 421 `DB_ASSERT ( v , td -> mvcc_f < UINT32_MAX ); 422 ++ td -> mvcc_f ; 423 `MUTEX_UNLOCK ( v , td -> mvcc_mtx ); 425 `COMPQUIET ( v , NULL ); 427 } } 436 $__txn_move_bufr ( v , td , hash_mtx ) 437 ENV * v ; 438 TXN_DETAIL * td ; 439 db_mux_t hash_mtx ; 441 DB_TXNMGR * mgr ; 442 DB_TXNREGION * gi ; 443 ed_ , t ; 445 `DB_ASSERT ( v , td ! NULL ); 446 t = 0; 447 mgr = v -> tx_hd ; 448 gi = mgr -> gfo . imy ; 450 `MUTEX_LOCK ( v , td -> mvcc_mtx ); 451 `DB_ASSERT ( v , td -> mvcc_f > 0); 452 ed_ = (-- td -> mvcc_f == 0); 453 `MUTEX_UNLOCK ( v , td -> mvcc_mtx ); 455 i( ed_ && 456 ( td -> us = TXN_COMMITTED ||d->u= TXN_ABORTED )) { 457 `MUTEX_UNLOCK ( v , hash_mtx ); 459 t = `__mux_ ( v , & td -> mvcc_mtx ); 460 td -> mvcc_mtx = MUTEX_INVALID ; 462 `TXN_SYSTEM_LOCK ( v ); 463 `SH_TAILQ_REMOVE (& gi -> mvcc_txn , td , lks , __txn_da ); 464 #ifde HAVE_STATISTICS 465 -- gi -> . _nsh ; 467 `__v_loc_ (& mgr -> gfo , td ); 468 `TXN_SYSTEM_UNLOCK ( v ); 470 `MUTEX_LOCK ( v , hash_mtx ); 473 ( t ); 474 } } @../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 (( ENV *, u_t32_t )); 20 __txn_t_s __P (( ENV *, u_t32_t )); 21 __txn_ __P (( ENV *, DB_TXN_STAT **, u_t32_t )); 22 * __txn_us __P (( DB_TXN_ACTIVE *)); 23 __txn_gid __P (( 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 ENV * v ; 42 t ; 44 v = dbv ->env; 46 `ENV_REQUIRES_CONFIG ( v , 47 v -> tx_hd , "DB_ENV->txn_", DB_INIT_TXN ); 49 i(( t = `__db_fchk ( v , 50 "DB_ENV->txn_", ags , DB_STAT_CLEAR )) != 0) 51 ( t ); 53 `ENV_ENTER ( v , ); 54 `REPLICATION_WRAP ( v , ( `__txn_ nv, p , ags )), 0, t ); 55 `ENV_LEAVE ( v , ); 56 ( t ); 57 } } 64 $__txn_ ( v , p , ags ) 65 ENV * v ; 66 DB_TXN_STAT ** p ; 67 u_t32_t ags ; 69 DB_TXNMGR * mgr ; 70 DB_TXNREGION * gi ; 71 DB_TXN_STAT * s ; 72 TXN_DETAIL * td ; 73 size_t nbys ; 74 u_t32_t maxtxn , ndx ; 75 t ; 77 * p = NULL ; 78 mgr = v -> tx_hd ; 79 gi = mgr -> gfo . imy ; 91 maxtxn = gi -> maxtxns + (region->maxtxns / 10) + 10; 92 nbys = ( DB_TXN_STAT + ( DB_TXN_ACTIVE * maxtxn ; 93 i(( t = `__os_umloc ( v , nbys , & s )) != 0) 94 ( t ); 96 `TXN_SYSTEM_LOCK ( v ); 97 `memy ( s , & gi -> , (*stats)); 98 s -> _ϡ_txnid = gi -> ϡ_txnid ; 99 s -> _ϡ_ckp = gi -> ϡ_ckp ; 100 s -> _time_ckp = gi -> time_ckp ; 101 s -> _txǼay = ( DB_TXN_ACTIVE *)&stats[1]; 103 ndx = 0, 104 td = `SH_TAILQ_FIRST (& gi -> aive_txn , __txn_da ); 105 td ! NULL && ndx < maxtxn ; 106 td = `SH_TAILQ_NEXT d, lks , __txn_da ), ++ ndx ) { 107 s -> _txǼay [ ndx ]. txnid = td ->txnid; 108 i( td -> = INVALID_ROFF ) 109 s -> _txǼay [ ndx ]. id = TXN_INVALID ; 111 s -> _txǼay [ ndx ]. id = 112 (( TXN_DETAIL *) `R_ADDR (& mgr -> gfo , 113 td -> ))-> txnid ; 114 s -> _txǼay [ ndx ]. pid = td ->pid; 115 s -> _txǼay [ ndx ]. tid = td ->tid; 116 s -> _txǼay [ ndx ]. l = td -> beg_l ; 117 s -> _txǼay [ ndx ]. ad_l = td ->read_lsn; 118 s -> _txǼay [ ndx ]. mvcc_f = td ->mvcc_ref; 119 s -> _txǼay [ ndx ]. us = td ->status; 120 s -> _txǼay [ ndx ]. xa_us = td ->xa_status; 121 i( `XID_FIELD_IS_SET ( td )) 122 `memy ( s -> _txǼay [ ndx ]. xid , 123 td -> xid , (td->xid)); 124 i( td -> me ! INVALID_ROFF ) { 125 () `y ( s -> _txǼay [ ndx ]. me , 126 `R_ADDR (& mgr -> gfo , td -> me ), 127 ( s -> _txǼay [ ndx ]. me ) - 1); 128 s -> _txǼay [ ndx ]. me [ 129 ( s -> _txǼay [ ndx ]. me ) - 1] = '\0'; 131 s -> _txǼay [ ndx ]. me [0] = '\0'; 134 `__mux_t_wa_fo ( v , gi -> mtx_gi , 135 & s -> _gi_wa , &s-> _gi_nowa ); 136 s -> _gsize = mgr -> gfo . -> size ; 137 i( `LF_ISSET ( DB_STAT_CLEAR )) { 138 i(! `LF_ISSET ( DB_STAT_SUBSYSTEM )) 139 `__mux_r ( v , gi -> mtx_gi ); 140 `memt (& gi -> , 0, (region->stat)); 141 gi -> . _maxtxns =egi-> maxtxns ; 142 gi -> . _maxive = 143 gi -> . _ive = s ->st_nactive; 144 gi -> . _maxnsh = 145 gi -> . _nsh = s ->st_nsnapshot; 148 `TXN_SYSTEM_UNLOCK ( v ); 150 * p = s ; 152 } } 161 $__txn__t_ ( dbv , ags ) 162 DB_ENV * dbv ; 163 u_t32_t ags ; 165 DB_THREAD_INFO * ; 166 ENV * v ; 167 t ; 169 v = dbv ->env; 171 `ENV_REQUIRES_CONFIG ( v , 172 v -> tx_hd , "DB_ENV->txn__t", DB_INIT_TXN ); 174 i(( t = `__db_fchk ( v , "DB_ENV->txn_stat_print", 175 ags , DB_STAT_ALL | DB_STAT_CLEAR )) != 0) 176 ( t ); 178 `ENV_ENTER ( v , ); 179 `REPLICATION_WRAP ( v , ( `__txn__t nv, ags )), 0, t ); 180 `ENV_LEAVE ( v , ); 181 ( t ); 182 } } 191 $__txn__t ( v , ags ) 192 ENV * v ; 193 u_t32_t ags ; 195 u_t32_t ig_ags ; 196 t ; 198 ig_ags = ags ; 199 `LF_CLR ( DB_STAT_CLEAR | DB_STAT_SUBSYSTEM ); 200 i( ags =0 || `LF_ISSET ( DB_STAT_ALL )) { 201 t = `__txn_t_s ( v , ig_ags ); 202 i( ags =0 || t != 0) 203 ( t ); 206 i( `LF_ISSET ( DB_STAT_ALL ) && 207 ( t = `__txn_t_l ( v , ig_ags )) != 0) 208 ( t ); 211 } } 218 $__txn_t_s ( v , ags ) 219 ENV * v ; 220 u_t32_t ags ; 222 DB_ENV * dbv ; 223 DB_MSGBUF mb ; 224 DB_TXN_ACTIVE * txn ; 225 DB_TXN_STAT * ; 226 u_t32_t i ; 227 t ; 228 buf [ DB_THREADID_STRLEN ], time_buf [ CTIME_BUFLEN ]; 230 dbv = v ->dbenv; 232 i(( t = `__txn_ ( v , & , ags )) != 0) 233 ( t ); 235 i( `LF_ISSET ( DB_STAT_ALL )) 236 `__db_msg ( v , "Defaultransactionegion information:"); 237 `__db_msg ( v , "%lu/%lu\t%s", 238 ( u_lg ) -> _ϡ_ckp . fe , (u_lg)->_ϡ_ckp. offt , 239 -> _ϡ_ckp . fe == 0 ? 241 i( -> _time_ckp == 0) 242 `__db_msg ( v , "0\tNo checkpointimestamp"); 244 `__db_msg ( v , "%.24s\tCheckpointimestamp", 245 `__os_ime (& -> _time_ckp , time_buf )); 246 `__db_msg ( v , "%#lx\tLastransaction IDllocated", 247 ( u_lg ) -> _ϡ_txnid ); 248 `__db_dl ( v , "Maximumumber ofctiveransactions configured", 249 ( u_lg ) -> _maxtxns ); 250 `__db_dl ( v , "Aivis", ( u_lg ) -> _ive ); 251 `__db_dl ( v , 252 "Maximumivis", ( u_lg ) -> _maxive ); 253 `__db_dl ( v , 254 "Numb oiڠbegun", ( u_lg ) -> _nbegs ); 255 `__db_dl ( v , 256 "Numb oiڠab܋d", ( u_lg ) -> _bts ); 257 `__db_dl ( v , 258 "Numb oiڠcommd", ( u_lg ) -> _ncomms ); 259 `__db_dl ( v , "Spshفnis", ( u_lg ) -> _nsh ); 260 `__db_dl ( v , "Maximum snapshotransactions", 261 ( u_lg ) -> _maxnsh ); 262 `__db_dl ( v , 263 "Numb oiڠed", ( u_lg ) -> _ees ); 265 `__db_dlbys ( v , "Transactionegion size", 266 ( u_lg )0, (u_lg)0, (u_lg) -> _gsize ); 267 `__db_dl_p ( v , 269 ( u_lg ) -> _gi_wa , `DB_PCT (sp->st_region_wait, 270 -> _gi_wa + sp-> _gi_nowa ), NULL ); 272 `qst ( -> _txǼay , 273 -> _ive , (-> _txǼay [0]), __txn_com ); 274 `__db_msg ( v , "Activeransactions:"); 275 `DB_MSGBUF_INIT (& mb ); 276 i = 0; i < -> _ive ; ++i) { 277 txn = & -> _txǼay [ i ]; 278 `__db_msgadd ( v , & mb , 280 ( u_lg ) txn -> txnid , `__txn_us (txn), 281 dbv -> `thad_id_rg (dbv, txn -> pid ,xn-> tid , buf ), 282 ( u_lg ) txn -> l . fe , (u_lgxn->l. offt ); 283 i( txn -> id != 0) 284 `__db_msgadd ( v , & mb , 285 ";t: %lx", ( u_lg ) txn -> id ); 286 i(! `IS_MAX_LSN ( txn -> ad_l )) 287 `__db_msgadd ( v , & mb , ";ead LSN: %lu/%lu", 288 ( u_lg ) txn -> ad_l . fe , 289 ( u_lg ) txn -> ad_l . offt ); 290 i( txn -> mvcc_f != 0) 291 `__db_msgadd ( v , & mb , 292 "; mvcfcou: %lu", ( u_lg ) txn -> mvcc_f ); 293 i( txn -> me [0] != '\0') 294 `__db_msgadd ( v , & mb , "; \"%s\"", txn -> me ); 295 i( `XID_FIELD_IS_SET ( txn )) 296 `__txn_gid ( v , & mb , txn ); 297 `DB_MSGBUF_FLUSH ( v , & mb ); 300 `__os_u ( v , ); 303 } } 310 $__txn_t_l ( v , ags ) 311 ENV * v ; 312 u_t32_t ags ; 314 cڡ FN [] = { 315 { TXN_IN_RECOVERY , "TXN_IN_RECOVERY" }, 316 { 0, NULL } 318 DB_TXNMGR * mgr ; 319 DB_TXNREGION * gi ; 320 time_buf [ CTIME_BUFLEN ]; 322 mgr = v -> tx_hd ; 323 gi = mgr -> gfo . imy ; 325 `TXN_SYSTEM_LOCK ( v ); 327 `__db_t_gfo ( v , & mgr -> gfo , "Tni", ags ); 329 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 330 `__db_msg ( v , "DB_TXNMGR handle information:"); 331 `__mux_t_debug_sg ( v , "DB_TXNMGR mux", mgr -> mux , ags ); 332 `__db_dl ( v , 333 "Numb oiڠdisrded", ( u_lg ) mgr -> n_disrds ); 335 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 336 `__db_msg ( v , "DB_TXNREGION handle information:"); 337 `__mux_t_debug_sg ( 338 v , "DB_TXNREGIONegi mux", gi -> mtx_gi , ags ); 339 `STAT_ULONG ("Maximumumb oaivtxns", gi -> maxtxns ); 340 `STAT_HEX ("Lani IDod", gi -> ϡ_txnid ); 341 `STAT_HEX ("Cumaximum unud ID", gi -> cur_maxid ); 343 `__mux_t_debug_sg ( 344 v , "checkpomux", gi -> mtx_ckp , ags ); 345 `STAT_LSN ("La checkpoLSN", & gi -> ϡ_ckp ); 346 `__db_msg ( v , 348 gi -> time_ckp == 0 ? "0" : 349 `__os_ime (& gi -> time_ckp , time_buf )); 351 `__db_ags ( v , NULL , gi -> ags , , NULL, "\tFlags"); 353 `__db_msg ( v , "%s", `DB_GLOBAL ( db_le )); 354 `__db_msg ( v , "XA information:"); 355 `STAT_LONG ("XA RMID", v -> xa_rmid ); 361 `TXN_SYSTEM_UNLOCK ( v ); 364 } } 367 $__txn_us ( txn ) 368 DB_TXN_ACTIVE * txn ; 370 txn -> xa_us ) { 372 txn -> us ) { 373 TXN_ABORTED : 375 TXN_COMMITTED : 377 TXN_PREPARED : 379 TXN_RUNNING : 385 TXN_XA_ABORTED : 387 TXN_XA_DEADLOCKED : 389 TXN_XA_ENDED : 391 TXN_XA_PREPARED : 393 TXN_XA_STARTED : 395 TXN_XA_SUSPENDED : 401 } } 404 $__txn_gid ( v , mbp , txn ) 405 ENV * v ; 406 DB_MSGBUF * mbp ; 407 DB_TXN_ACTIVE * txn ; 409 u_t32_t v , * xp ; 410 u_t i ; 411 t ; 413 `__db_msgadd ( v , mbp , "\n\tGID/XID:"); 414 t = 0, xp = ( u_t32_t *) txn -> xid , i = 0;;) { 415 `memy (& v , xp ++, ( u_t32_t )); 416 `__db_msgadd ( v , mbp , "%#lx ", ( u_lg ) v ); 417 i(( i +( u_t32_t )> DB_XIDDATASIZE ) 419 i(++ t == 4) { 420 `DB_MSGBUF_FLUSH ( v , mbp ); 421 `__db_msgadd ( v , mbp , "\t\t"); 422 t = 0; 425 } } 428 $__txn_com ( a1 , b1 ) 429 cڡ * a1 , * b1 ; 431 cڡ DB_TXN_ACTIVE * a , * b ; 433 a = a1 ; 434 b = b1 ; 436 i( a -> txnid > b ->txnid) 438 i( a -> txnid < b ->txnid) 441 } } 446 $__txn__ ( dbv , p , ags ) 447 DB_ENV * dbv ; 448 DB_TXN_STAT ** p ; 449 u_t32_t ags ; 451 `COMPQUIET ( p , NULL ); 452 `COMPQUIET ( ags , 0); 454 ( `__db__n_but ( dbv -> v )); 455 } } 458 $__txn__t_ ( dbv , ags ) 459 DB_ENV * dbv ; 460 u_t32_t ags ; 462 `COMPQUIET ( ags , 0); 464 ( `__db__n_but ( dbv -> v )); 465 } } @../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 ( v , txn , dbp ) 53 ENV * v ; 54 DB_TXN * txn ; 55 DB * dbp ; 57 t ; 58 TXN_EVENT * e ; 60 e = NULL ; 61 i(( t = `__os_oc ( v , 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 ( v , txn , me , feid , mem ) 81 ENV * v ; 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 ( v , 1, ( TXN_EVENT ), & e )) != 0) 92 ( t ); 94 i(( t = `__os_rdup ( v , me , & e -> u . r .name)) != 0) 95 r ; 97 i( feid ! NULL ) { 98 i(( t = `__os_oc ( v , 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_ ( v , e ); 113 ( t ); 114 } } 124 $__txn_mm ( v , txn , me ) 125 ENV * v ; 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_ ( v , e -> u . r . me ); 137 i( e -> u . r . feid ! NULL ) 138 `__os_ ( v , e -> u . r . feid ); 139 `__os_ ( v , e ); 143 } } 155 $__txn_lockevt ( v , txn , dbp , lock , lock ) 156 ENV * v ; 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 ( v )) 168 e = NULL ; 169 i(( t = `__os_oc ( v , 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 ( v , txn , lock , lock ) 191 ENV * v ; 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_ ( v , 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 ( v , 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 ( v , txn , code , ross ) 234 ENV * v ; 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 ( v , 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 ( v , 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 ( v , e -> u . r . me , 0)!0 && t == 0) 292 t = t_t ; 294 TXN_TRADE : 295 DO_TRADE ; 297 TXN_TRADED : 299 i(( t_t = `__lock_downgde ( v , 300 & e -> u . t . lock , DB_LOCK_READ , 0)!0 && t == 0) 301 t = t_t ; 305 `DB_ASSERT ( v , 0); 307 do : 309 e -> ) { 310 TXN_REMOVE : 311 i( e -> u . r . feid ! NULL ) 312 `__os_ ( v , e -> u . r . feid ); 313 `__os_ ( v , e -> u . r . me ); 315 TXN_TRADE : 316 i( code = TXN_ABORT ) 317 e -> u . t . dbp -> cur_txn = NULL ; 319 TXN_CLOSE : 320 TXN_TRADED : 324 `__os_ ( v , e ); 327 ( t ); 328 } } 334 $__txn_cd_ame ( v , txn , ame ) 335 ENV * v ; 336 DB_TXN * txn ; 337 FNAME * ame ; 339 DB_LOG * db ; 340 DB_TXNMGR * mgr ; 341 TXN_DETAIL * td ; 342 roff_t ame_off ; 343 roff_t * , * ldbs ; 344 u_t32_t i ; 345 t ; 347 i(( td = txn ->td= NULL ) 349 mgr = v -> tx_hd ; 350 db = v -> lg_hd ; 351 ame_off = `R_OFFSET (& db -> gfo , ame ); 354 ldbs = `R_ADDR (& mgr -> gfo , td -> log_dbs ); 355 i = 0, = ldbs ; i < td -> og_dbs ; i++,p++) 356 i(* = ame_off ) 359 i( td -> og_s <td-> og_dbs ) { 360 `TXN_SYSTEM_LOCK ( v ); 361 i(( t = `__v_loc (& mgr -> gfo , 362 ( roff_t * ( td -> og_s << 1), & )) != 0) 363 ( t ); 364 `memy ( , ldbs , td -> og_dbs * ( roff_t )); 365 i( td -> og_s > TXN_NSLOTS ) 366 `__v_loc_ (& mgr -> gfo , ldbs ); 368 `TXN_SYSTEM_UNLOCK ( v ); 369 td -> log_dbs = `R_OFFSET (& mgr -> gfo , ); 370 ldbs = ; 371 td -> og_s =d->nlog_slots << 1; 374 ldbs [ td -> og_dbs ] = ame_off ; 375 td -> og_dbs ++; 376 ame -> txn_f ++; 379 } } 389 $__txn_df_ame ( v , txn ) 390 ENV * v ; 391 DB_TXN * txn ; 393 DB_LOG * db ; 394 DB_TXNMGR * mgr ; 395 FNAME * ame ; 396 roff_t * ; 397 TXN_DETAIL * d , * td ; 398 u_t32_t i ; 399 t ; 401 td = txn ->td; 403 i( td -> og_dbs == 0) 406 mgr = v -> tx_hd ; 407 db = v -> lg_hd ; 408 t = 0; 410 d = txn -> ! NULL ?xn->-> td : NULL; 412 = `R_ADDR (& mgr -> gfo , td -> log_dbs ); 413 i = 0; i < td -> og_dbs ; i++, ++) { 414 ame = `R_ADDR (& db -> gfo , * ); 415 `MUTEX_LOCK ( v , ame -> mux ); 416 i( d ! NULL ) { 417 t = `__txn_cd_ame ( v , txn -> , ame ); 418 ame -> txn_f --; 419 `MUTEX_UNLOCK ( v , ame -> mux ); 420 } i( ame -> txn_f == 1) { 421 `MUTEX_UNLOCK ( v , ame -> mux ); 422 `DB_ASSERT ( v , ame -> txn_f != 0); 423 t = `__dbg_o_id_t ( 424 v , ame , DBREG_CLOSE , 0); 426 ame -> txn_f --; 427 `MUTEX_UNLOCK ( v , ame -> mux ); 429 i( t != 0) 433 ( t ); 434 } } @../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_txn_ctue __P (( ENV *, DB_TXN *, TXN_DETAIL *)); 25 __xa_put_txn __P (( ENV *, DB_TXN *)); 26 __xa_txn_g_ed 27 __P (( ENV *, XID *, DB_PREPLIST *, , *, u_t32_t )); 39 cڡ xa_swch_t gdb_xa_swch = { 41 TMNOMIGRATE , 43 __db_xa_ݒ , 44 __db_xa_o , 45 __db_xa_t , 46 __db_xa_d , 47 __db_xa_rlback , 48 __db_xa_e , 49 __db_xa_comm , 50 __db_xa_cov , 51 __db_xa_fg , 52 __db_xa_come 62 #unde XA_MULTI_THREAD 73 $__xa_g_txn ( v , tx , do_ ) 74 ENV * v ; 75 DB_TXN ** tx ; 76 do_ ; 78 #ifde XA_MULTI_THREAD 79 DB_TXN * t ; 80 DB_TXNMGR * mgr ; 81 TXN_DETAIL * td ; 82 db_thadid_t tid ; 83 pid_t pid ; 85 t ; 87 t = 0; 89 #ifde XA_MULTI_THREAD 90 v -> `thad_id nv, & pid , & tid ); 91 * tx = NULL ; 93 `DB_ASSERT ( v ,nv-> tx_hd ! NULL ); 94 mgr = v -> tx_hd ; 101 `MUTEX_LOCK ( v , mgr -> mux ); 102 `TAILQ_FOREACH ( t , & v -> xa_txn , xks ) { 103 td = t ->td; 104 i( td -> pid !=id) 106 #ifde HAVE_SIMPLE_THREAD_TYPE 107 i( t -> tid ==id) { 108 * tx = t ; 112 i( `memcmp (& t -> tid , &tid, (tid)) == 0) { 113 * tx = t ; 118 `MUTEX_UNLOCK ( v , mgr -> mux ); 120 i(* tx = NULL ) { 121 i(! do_ ) 122 t = EINVAL ; 123 i(( t = 124 `__os_mloc ( v , ( DB_TXN ), tx )) == 0) { 125 (* tx )-> tid =id; 126 `MUTEX_LOCK ( v , mgr -> mux ); 127 `TAILQ_INSERT_HEAD (& v -> xa_txn , * tx , xks ); 128 `MUTEX_UNLOCK ( v , mgr -> mux ); 132 `COMPQUIET ( do_ , 0); 134 * tx = `TAILQ_FIRST (& v -> xa_txn ); 135 i(* tx = NULL && 136 ( t = `__os_oc ( v , 1, ( DB_TXN ), tx )) == 0) { 137 (* tx )-> txnid = TXN_INVALID ; 138 `TAILQ_INSERT_HEAD (& v -> xa_txn , * tx , xks ); 142 ( t ); 143 } } 146 $__xa_put_txn ( v , tx ) 147 ENV * v ; 148 DB_TXN * tx ; 150 #ifde XA_MULTI_THREAD 151 DB_TXNMGR * mgr ; 152 mgr = v -> tx_hd ; 154 `MUTEX_LOCK ( v , mgr -> mux ); 155 `TAILQ_REMOVE (& v -> xa_txn , tx , xks ); 156 `MUTEX_UNLOCK ( v , mgr -> mux ); 157 `__os_ ( v , tx ); 159 `COMPQUIET ( v , NULL ); 160 tx -> txnid = TXN_INVALID ; 163 } } 171 $__xa_txn_ctue ( v , txn , td ) 172 ENV * v ; 173 DB_TXN * txn ; 174 TXN_DETAIL * td ; 176 DB_THREAD_INFO * ; 177 t ; 179 `ENV_ENTER ( v , ); 180 t = `__txn_ctue ( v , txn , td ); 181 `ENV_LEAVE ( v , ); 183 ( t ); 184 } } 196 $__xa_txn_g_ed ( v , xids , txns , cou , , ags ) 197 ENV * v ; 198 XID * xids ; 199 DB_PREPLIST * txns ; 200 cou ; 201 * ; 202 u_t32_t ags ; 204 DB_THREAD_INFO * ; 205 t ; 207 `ENV_ENTER ( v , ); 208 `REPLICATION_WRAP ( v , 209 ( `__txn_g_ed ( v , xids , txns , cou , , ags )), 0, t ); 210 `ENV_LEAVE ( v , ); 211 ( t ); 212 } } 214 #ifde XA_MULTI_THREAD 215 #XA_FLAGS \ 216 ( DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | \ 217 DB_INIT_TXN | DB_THREAD ) ) 219 #XA_FLAGS \ 220 ( DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | \ 221 DB_INIT_TXN ) ) 239 $__db_xa_ݒ ( xa_fo , rmid , g_ags ) 240 * xa_fo ; 241 rmid ; 242 g_ags ; 244 DB_ENV * dbv ; 245 ENV * v ; 246 u_lg ags ; 248 ags = ( u_lg ) g_ags ; 250 i( `LF_ISSET ( TMASYNC )) 251 ( XAER_ASYNC ); 252 i( ags ! TMNOFLAGS ) 253 ( XAER_INVAL ); 256 i( `__db_rmid_to_v ( rmid , & v ) == 0) 257 ( XA_OK ); 260 i( `db_v_ (& dbv , 0) != 0) 261 ( XAER_RMERR ); 262 v = dbv ->env; 263 i( dbv -> `ݒ (dbv, xa_fo , XA_FLAGS , 0) != 0) 264 r ; 267 i( `__db_m_rmid ( rmid , v ) != 0) 268 r ; 271 `TAILQ_INIT (& v -> xa_txn ); 273 ( XA_OK ); 275 r : () dbv -> `o (dbenv, 0); 277 ( XAER_RMERR ); 278 } } 289 $__db_xa_o ( xa_fo , rmid , g_ags ) 290 * xa_fo ; 291 rmid ; 292 g_ags ; 294 DB_TXN * t ; 295 ENV * v ; 296 t , t_t ; 297 u_lg ags ; 299 `COMPQUIET ( xa_fo , NULL ); 301 ags = ( u_lg ) g_ags ; 303 i( `LF_ISSET ( TMASYNC )) 304 ( XAER_ASYNC ); 305 i( ags ! TMNOFLAGS ) 306 ( XAER_INVAL ); 309 i( `__db_rmid_to_v ( rmid , & v ) != 0) 310 ( XA_OK ); 313 i(( t = `TAILQ_FIRST (& v -> xa_txn )! NULL && 314 t -> txnid ! TXN_INVALID ) 315 ( XAER_PROTO ); 318 t = `__db_unm_rmid ( rmid ); 321 ( t = `TAILQ_FIRST (& v -> xa_txn )! NULL ) { 322 `TAILQ_REMOVE (& v -> xa_txn , t , xks ); 323 `__os_ ( v , t ); 327 i(( t_t = v -> dbv -> `o nv->dbv, 0)!0 && t == 0) 328 t = t_t ; 330 ( t =0 ? XA_OK : XAER_RMERR ); 331 } } 338 $__db_xa_t ( xid , rmid , g_ags ) 339 XID * xid ; 340 rmid ; 341 g_ags ; 343 DB_TXN * tx ; 344 ENV * v ; 345 TXN_DETAIL * td ; 346 roff_t off ; 347 u_lg ags ; 348 is_known ; 350 ags = ( u_lg ) g_ags ; 352 #OK_FLAGS ( TMJOIN | TMRESUME | TMNOWAIT | TMASYNC | TMNOFLAGS ) ) 353 i( `LF_ISSET (~ OK_FLAGS )) 354 ( XAER_INVAL ); 356 i( `LF_ISSET ( TMJOIN && LF_ISSET( TMRESUME )) 357 ( XAER_INVAL ); 359 i( `LF_ISSET ( TMASYNC )) 360 ( XAER_ASYNC ); 362 i( `__db_rmid_to_v ( rmid , & v ) != 0) 363 ( XAER_PROTO ); 365 is_known = `__db_xid_to_txn ( v , xid , & off ) == 0; 367 i( is_known && ! `LF_ISSET ( TMRESUME && !LF_ISSET( TMJOIN )) 368 ( XAER_DUPID ); 370 i(! is_known && `LF_ISSET ( TMRESUME | TMJOIN )) 371 ( XAER_NOTA ); 378 i( is_known ) { 379 td = `R_ADDR (& v -> tx_hd -> gfo , off ); 380 i( td -> xa_us = TXN_XA_SUSPENDED && 381 ! `LF_ISSET ( TMRESUME | TMJOIN )) 382 ( XAER_PROTO ); 383 i( td -> xa_us = TXN_XA_DEADLOCKED ) 384 ( XA_RBDEADLOCK ); 385 i( td -> xa_us = TXN_XA_ABORTED ) 386 ( XA_RBOTHER ); 389 i( `__xa_g_txn ( v , & tx , 1) != 0) 390 ( XAER_RMERR ); 391 i( `__xa_txn_ctue ( v , tx , td ) != 0) 392 ( XAER_RMERR ); 393 td -> xa_us = TXN_XA_STARTED ; 395 i( `__xa_g_txn ( v , & tx , 1) != 0) 396 ( XAER_RMERR ); 397 i( `__txn_xa_beg ( v , tx )) 398 ( XAER_RMERR ); 399 () `__db_m_xid ( v , xid , tx -> td ); 400 td = tx ->td; 401 td -> xa_us = TXN_XA_STARTED ; 403 ( XA_OK ); 404 } } 411 $__db_xa_d ( xid , rmid , ags ) 412 XID * xid ; 413 rmid ; 414 ags ; 416 DB_TXN * txn ; 417 ENV * v ; 418 TXN_DETAIL * td ; 419 roff_t off ; 421 i( ags ! TMNOFLAGS && ! `LF_ISSET ( TMSUSPEND | TMSUCCESS | TMFAIL )) 422 ( XAER_INVAL ); 424 i( `__db_rmid_to_v ( rmid , & v ) != 0) 425 ( XAER_PROTO ); 427 i( `__db_xid_to_txn ( v , xid , & off ) != 0) 428 ( XAER_NOTA ); 430 i( `__xa_g_txn ( v , & txn , 0) != 0) 431 ( XAER_RMERR ); 433 td = `R_ADDR (& v -> tx_hd -> gfo , off ); 434 i( td ! txn ->td) 435 ( XAER_PROTO ); 437 i( td -> xa_us = TXN_XA_DEADLOCKED ) 438 ( XA_RBDEADLOCK ); 440 i( td -> us = TXN_ABORTED ) 441 ( XA_RBOTHER ); 443 i( td -> xa_us ! TXN_XA_STARTED ) 444 ( XAER_PROTO ); 450 i( `LF_ISSET ( TMSUSPEND )) 451 td -> xa_us = TXN_XA_SUSPENDED ; 453 td -> xa_us = TXN_XA_ENDED ; 459 () `__xa_put_txn ( v , txn ); 460 ( XA_OK ); 461 } } 468 $__db_xa_e ( xid , rmid , g_ags ) 469 XID * xid ; 470 rmid ; 471 g_ags ; 473 DB_TXN * tx ; 474 ENV * v ; 475 TXN_DETAIL * td ; 476 roff_t off ; 477 u_lg ags ; 479 ags = ( u_lg ) g_ags ; 481 i( `LF_ISSET ( TMASYNC )) 482 ( XAER_ASYNC ); 483 i( ags ! TMNOFLAGS ) 484 ( XAER_INVAL ); 492 i( `__db_rmid_to_v ( rmid , & v ) != 0) 493 ( XAER_PROTO ); 495 i( `__db_xid_to_txn ( v , xid , & off ) != 0) 496 ( XAER_NOTA ); 497 td = `R_ADDR (& v -> tx_hd -> gfo , off ); 498 i( td -> xa_us = TXN_XA_DEADLOCKED ) 499 ( XA_RBDEADLOCK ); 501 i( td -> xa_us ! TXN_XA_ENDED &&d->xa_u! TXN_XA_SUSPENDED ) 502 ( XAER_PROTO ); 505 i( `__xa_g_txn ( v , & tx , 0) != 0) 506 ( XAER_PROTO ); 507 i( `__xa_txn_ctue ( v , tx , td ) != 0) 508 ( XAER_RMERR ); 510 i( tx -> `e x, ( u_t8_t *) xid -> da ) != 0) 511 ( XAER_RMERR ); 513 td -> xa_us = TXN_XA_PREPARED ; 519 () `__xa_put_txn ( v , tx ); 520 ( XA_OK ); 521 } } 528 $__db_xa_comm ( xid , rmid , g_ags ) 529 XID * xid ; 530 rmid ; 531 g_ags ; 533 DB_TXN * tx ; 534 ENV * v ; 535 TXN_DETAIL * td ; 536 roff_t off ; 537 u_lg ags ; 539 ags = ( u_lg ) g_ags ; 541 i( `LF_ISSET ( TMASYNC )) 542 ( XAER_ASYNC ); 543 #unde OK_FLAGS 544 #OK_FLAGS ( TMNOFLAGS | TMNOWAIT | TMONEPHASE ) ) 545 i( `LF_ISSET (~ OK_FLAGS )) 546 ( XAER_INVAL ); 552 i( `__db_rmid_to_v ( rmid , & v ) != 0) 553 ( XAER_PROTO ); 555 i( `__db_xid_to_txn ( v , xid , & off ) != 0) 556 ( XAER_NOTA ); 558 td = `R_ADDR (& v -> tx_hd -> gfo , off ); 559 i( td -> xa_us = TXN_XA_DEADLOCKED ) 560 ( XA_RBDEADLOCK ); 562 i( td -> xa_us = TXN_XA_ABORTED ) 563 ( XA_RBOTHER ); 565 i( `LF_ISSET ( TMONEPHASE ) && 566 td -> xa_us ! TXN_XA_ENDED &&d->xa_u! TXN_XA_SUSPENDED ) 567 ( XAER_PROTO ); 569 i(! `LF_ISSET ( TMONEPHASE && td -> xa_us ! TXN_XA_PREPARED ) 570 ( XAER_PROTO ); 573 i( `__xa_g_txn ( v , & tx , 0) != 0) 574 ( XAER_RMERR ); 575 i( `__xa_txn_ctue ( v , tx , td ) != 0) 576 ( XAER_RMERR ); 578 i( tx -> `comm (txnp, 0) != 0) 579 ( XAER_RMERR ); 585 () `__xa_put_txn ( v , tx ); 586 ( XA_OK ); 587 } } 598 $__db_xa_cov ( xids , cou , rmid , ags ) 599 XID * xids ; 600 cou , ags ; 601 rmid ; 603 ENV * v ; 604 u_t32_t wags ; 605 rv ; 608 i( `__db_rmid_to_v ( rmid , & v ) != 0) 609 ( XAER_PROTO ); 611 i( `LF_ISSET ( TMSTARTRSCAN )) 612 wags = DB_FIRST ; 613 i( `LF_ISSET ( TMENDRSCAN )) 614 wags = DB_LAST ; 616 wags = DB_NEXT ; 618 rv = 0; 619 i( `__xa_txn_g_ed ( v , 620 xids , NULL , cou , & rv , wags ) != 0) 621 ( XAER_RMERR ); 623 ( rv ); 624 } } 631 $__db_xa_rlback ( xid , rmid , g_ags ) 632 XID * xid ; 633 rmid ; 634 g_ags ; 636 DB_TXN * tx ; 637 ENV * v ; 638 TXN_DETAIL * td ; 639 roff_t off ; 640 u_lg ags ; 642 ags = ( u_lg ) g_ags ; 644 i( `LF_ISSET ( TMASYNC )) 645 ( XAER_ASYNC ); 646 i( ags ! TMNOFLAGS ) 647 ( XAER_INVAL ); 649 i( `__db_rmid_to_v ( rmid , & v ) != 0) 650 ( XAER_PROTO ); 652 i( `__db_xid_to_txn ( v , xid , & off ) != 0) 653 ( XAER_NOTA ); 655 td = `R_ADDR (& v -> tx_hd -> gfo , off ); 656 i( td -> xa_us = TXN_XA_DEADLOCKED ) 657 ( XA_RBDEADLOCK ); 659 i( td -> xa_us = TXN_XA_ABORTED ) 660 ( XA_RBOTHER ); 662 i( td -> xa_us ! TXN_XA_ENDED && 663 td -> xa_us ! TXN_XA_SUSPENDED && 664 td -> xa_us ! TXN_XA_PREPARED ) 665 ( XAER_PROTO ); 668 i( `__xa_g_txn ( v , & tx , 0) != 0) 669 ( XAER_RMERR ); 670 i( `__xa_txn_ctue ( v , tx , td ) != 0) 671 ( XAER_RMERR ); 672 i( tx -> `abt (txnp) != 0) 673 ( XAER_RMERR ); 679 () `__xa_put_txn ( v , tx ); 680 ( XA_OK ); 681 } } 691 $__db_xa_fg ( xid , rmid , g_ags ) 692 XID * xid ; 693 rmid ; 694 g_ags ; 696 ENV * v ; 697 roff_t off ; 698 u_lg ags ; 700 ags = ( u_lg ) g_ags ; 702 i( `LF_ISSET ( TMASYNC )) 703 ( XAER_ASYNC ); 704 i( ags ! TMNOFLAGS ) 705 ( XAER_INVAL ); 707 i( `__db_rmid_to_v ( rmid , & v ) != 0) 708 ( XAER_PROTO ); 713 i( `__db_xid_to_txn ( v , xid , & off ) != 0) 714 ( XA_OK ); 716 `__db_unm_xid ( v , xid , off ); 719 ( XA_OK ); 720 } } 728 $__db_xa_come ( hd , tv , rmid , ags ) 729 * hd , * tv , rmid ; 730 ags ; 732 `COMPQUIET ( hd , NULL ); 733 `COMPQUIET ( tv , NULL ); 734 `COMPQUIET ( rmid , 0); 735 `COMPQUIET ( ags , 0); 737 ( XAER_INVAL ); 738 } } @../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 ENV * v ; 46 t ; 48 v = dbp ->env; 57 i(* txp ! NULL ) { 58 `__db_rx ( v , 60 ( EINVAL ); 64 i(( t = `__xa_g_txn ( v , txp , 0)) != 0) 65 ( t ); 66 i((* txp )-> txnid ! TXN_INVALID ) 75 i( no_xa_txn ) { 76 * txp = NULL ; 80 `__db_rx ( v , "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 -> v , 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 -> v , 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 , vp ) 27 rmid ; 28 ENV ** vp ; 30 ENV * v ; 32 v = `TAILQ_FIRST (& `DB_GLOBAL ( vq )); 33 i( v ! NULL &&nv-> xa_rmid = rmid ) { 34 * vp = v ; 43 ; v ! NULL ;nv = `TAILQ_NEXT nv, lks )) 44 i( v -> xa_rmid = rmid ) { 45 `TAILQ_REMOVE (& `DB_GLOBAL ( vq ), v , lks ); 46 `TAILQ_INSERT_HEAD (& `DB_GLOBAL ( vq ), v , lks ); 47 * vp = v ; 52 } } 61 $__db_xid_to_txn ( v , xid , of ) 62 ENV * v ; 63 XID * xid ; 64 roff_t * of ; 66 __txn_da * td ; 68 ( `__txn_m_gid ( v , ( u_t8_t *) xid -> da , & td , of )); 69 } } 78 $__db_m_rmid ( rmid , v ) 79 rmid ; 80 ENV * v ; 82 v -> xa_rmid = rmid ; 83 `TAILQ_INSERT_TAIL (& `DB_GLOBAL ( vq ), v , lks ); 85 } } 94 $__db_unm_rmid ( rmid ) 95 rmid ; 97 ENV * e ; 99 e = `TAILQ_FIRST (& `DB_GLOBAL ( vq )); 100 e -> xa_rmid ! rmid ; 101 e = `TAILQ_NEXT , lks )) 104 i( e = NULL ) 105 ( EINVAL ); 107 `TAILQ_REMOVE (& `DB_GLOBAL ( vq ), e , lks ); 109 } } 119 $__db_m_xid ( v , xid , td ) 120 ENV * v ; 121 XID * xid ; 122 TXN_DETAIL * td ; 124 `TXN_SYSTEM_LOCK ( v ); 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 ( v ); 132 } } 142 $__db_unm_xid ( v , xid , off ) 143 ENV * v ; 144 XID * xid ; 145 size_t off ; 147 TXN_DETAIL * td ; 149 `COMPQUIET ( xid , NULL ); 151 td = `R_ADDR (& v -> 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 -> v , 30 ( DB_OPNOTSUP ); 31 } } 34 $__db_xa_ ( dbp ) 35 DB * dbp ; 37 ( `__db_noxa ( dbp -> dbv )); 38 } } @ 1 . 0 545 12612 ../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_vxworks/test_micro/b_curalloc.c ../build_vxworks/test_micro/b_curwalk.c ../build_vxworks/test_micro/b_del.c ../build_vxworks/test_micro/b_get.c ../build_vxworks/test_micro/b_inmem.c ../build_vxworks/test_micro/b_load.c ../build_vxworks/test_micro/b_open.c ../build_vxworks/test_micro/b_put.c ../build_vxworks/test_micro/b_recover.c ../build_vxworks/test_micro/b_txn.c ../build_vxworks/test_micro/b_txn_write.c ../build_vxworks/test_micro/b_uname.c ../build_vxworks/test_micro/b_util.c ../build_vxworks/test_micro/b_workload.c ../build_vxworks/test_micro/test_micro.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/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 ../clib/time.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/dbt.c ../common/mkpath.c ../common/openflags.c ../common/os_method.c ../common/util_arg.c ../common/util_cache.c ../common/util_log.c ../common/util_sig.c ../common/zerofill.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_auto.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_sig.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_addrinfo.c ../os/os_alloc.c ../os/os_clock.c ../os/os_config.c ../os/os_cpu.c ../os/os_ctime.c ../os/os_dir.c ../os/os_errno.c ../os/os_fid.c ../os/os_flock.c ../os/os_fsync.c ../os/os_getenv.c ../os/os_handle.c ../os/os_map.c ../os/os_mkdir.c ../os/os_open.c ../os/os_pid.c ../os/os_rename.c ../os/os_root.c ../os/os_rpath.c ../os/os_rw.c ../os/os_seek.c ../os/os_stack.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_clock.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_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_stat.c ../os_brew/os_truncate.c ../os_brew/os_unlink.c ../os_brew/os_yield.c ../os_qnx/os_qnx_fsync.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_vxworks/os_vx_yield.c ../os_windows/ce_ctime.c ../os_windows/os_abs.c ../os_windows/os_clock.c ../os_windows/os_config.c ../os_windows/os_cpu.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_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_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_auto.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_inmem.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_uname.c ../test_micro/source/b_util.c ../test_micro/source/b_workload.c ../test_micro/source/test_micro.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