cscope.out   [plain text]


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 "rušg%.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 
	g݌et
;

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 "rušg%.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
("Rušg: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
(&lt->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̗dyušg.\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
("Rušgecovy 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̗dyušg.\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
("Rušgecovy 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